Commit d0f77ef8 authored by 皮倩雯's avatar 皮倩雯

fix: '修改样式'

parent b810613d
Pipeline #42517 skipped with stages
...@@ -948,34 +948,34 @@ const WebDic = () => { ...@@ -948,34 +948,34 @@ const WebDic = () => {
fieldKey={[fieldKey, 'frist']} fieldKey={[fieldKey, 'frist']}
rules={[ rules={[
{ required: true, message: '不能为空' }, { required: true, message: '不能为空' },
// { {
// validator: (rule, value, callback) => { validator: (rule, value, callback) => {
// const nodeName = addForm.getFieldsValue().nodeName1; // 第一项的nodeName const nodeName = addForm.getFieldsValue().nodeName1; // 第一项的nodeName
// const nodeName1 = addForm.getFieldsValue(); const nodeName1 = addForm.getFieldsValue();
// console.log(nodeName); console.log(nodeName);
// let result = nodeName1.users; let result = nodeName1.users;
// let arr = []; let arr = [];
// // eslint-disable-next-line array-callback-return // eslint-disable-next-line array-callback-return
// result.map(item => { result.map(item => {
// if (item) { if (item) {
// let a = item.nodeName; let a = item.nodeName;
// if (a !== '') { if (a !== '') {
// arr.push(a); arr.push(a);
// } }
// } }
// }); });
// if (nodeName !== undefined) { if (nodeName !== undefined) {
// arr.unshift(nodeName); arr.unshift(nodeName);
// } }
// console.log(arr); console.log(arr);
// if (new Set(arr).size !== arr.length) { if (new Set(arr).size !== arr.length) {
// arr = [...new Set(arr)]; arr = [...new Set(arr)];
// console.log(arr); console.log(arr);
// callback('用户名重复'); callback('用户名重复');
// } }
// }, },
// }, },
]} ]}
> >
<Input placeholder="请输入名称" /> <Input placeholder="请输入名称" />
......
This diff is collapsed.
.dictionaryContainer{ .dictionaryContainer {
.font { .ant-card-body {
font-weight: bold; padding: 0px 24px 24px 17px;
}
.containerBox {
width: 100vm;
height: calc(100vh - 70px) ;
background: #ffffff;
.ant-table.ant-table-small .ant-table-tbody .ant-table-wrapper:only-child .ant-table{
margin-left: 0;
}
.ant-table.ant-table-bordered > .ant-table-container{
border: none;
}
.clickRowStyle{
background: #cfe7fd;
}
.ant-table-thead tr th{
font-weight: 600;
color:rgba(0,0,0,0.85);
}
}
.config{
display: flex;
padding: 1rem 0 0.5rem 0.5rem;
justify-content: space-between;
width: calc(100% - 10px);
.title{
font-size: 18px;
color: rgba(0, 114, 255, 1);
font-weight: bold;
}
.btn{
display: flex;
justify-content: flex-end;
width: 20rem;
}
.ant-btn{
display: flex;
align-items: center;
margin-left: 20px;
}
}
} }
}
/*
* @Description:
* @Author: leizhe
* @Date: 2021-07-13 16:32:28
* @LastEditTime: 2021-10-26 16:38:27
* @LastEditors: leizhe
*/
import React from 'react';
import { Tabs, Card } from 'antd';
import PageContainer from '@/components/BasePageContainer';
import WebDic from './WebDic';
import AppDic from './AppDic';
import styles from './index.less';
// import VersionPublish from './VersionPublish';
const dictionary1 = () => {
const { TabPane } = Tabs;
return (
<PageContainer className={styles.dictionary1Container}>
<Card>
<Tabs defaultActiveKey="1">
<TabPane tab="通用数据字典" key="1">
<WebDic />
</TabPane>
<TabPane tab="App数据字典" key="2">
<AppDic />
</TabPane>
</Tabs>
</Card>
</PageContainer>
);
};
export default dictionary1;
.dictionary1Container{
.ant-card-body {
padding: 0px 24px 24px 17px;
}
}
\ No newline at end of file
...@@ -21,11 +21,7 @@ import { ...@@ -21,11 +21,7 @@ import {
CM_XWBPlan_DataList, CM_XWBPlan_DataList,
} from '@/services/maintenance/api'; } from '@/services/maintenance/api';
import { CM_Event_LoadDepartmentAndRoles } from '@/services/standingBook/api'; import { CM_Event_LoadDepartmentAndRoles } from '@/services/standingBook/api';
import { import { PlusOutlined, DownOutlined, StepForwardFilled } from '@ant-design/icons';
PlusOutlined,
DownOutlined,
StepForwardFilled,
} from '@ant-design/icons';
import ChangeAdd from './ChangeAdd'; import ChangeAdd from './ChangeAdd';
const { Option } = Select; const { Option } = Select;
...@@ -45,9 +41,9 @@ const AddModal = props => { ...@@ -45,9 +41,9 @@ const AddModal = props => {
const [filed, setFiled] = useState({}); // 传给子组件列表数据 const [filed, setFiled] = useState({}); // 传给子组件列表数据
const [filed1, setFiled1] = useState({}); // 传给子组件列表数据 const [filed1, setFiled1] = useState({}); // 传给子组件列表数据
const [types, setTypes] = useState(''); // 弹窗类型 const [types, setTypes] = useState(''); // 弹窗类型
const [pickItem, setPickItem] = useState(''); //复选框数据填入项 const [pickItem, setPickItem] = useState(''); // 复选框数据填入项
const [checkedList1, setCheckedList1] = useState([]); //最新选择数据 const [checkedList1, setCheckedList1] = useState([]); // 最新选择数据
const [characterValue, setCharacterValue] = useState(''); //打开弹框之前数据 const [characterValue, setCharacterValue] = useState(''); // 打开弹框之前数据
const [ff, setFf] = useState([]); const [ff, setFf] = useState([]);
const [form] = Form.useForm(); const [form] = Form.useForm();
...@@ -368,10 +364,7 @@ const AddModal = props => { ...@@ -368,10 +364,7 @@ const AddModal = props => {
</Menu> </Menu>
} }
> >
<div <div className={styles.linkDrowp} onClick={e => e.preventDefault()}>
className={styles.linkDrowp}
onClick={e => e.preventDefault()}
>
<DownOutlined <DownOutlined
style={{ style={{
fontSize: '12px', fontSize: '12px',
...@@ -396,11 +389,7 @@ const AddModal = props => { ...@@ -396,11 +389,7 @@ const AddModal = props => {
}, },
]} ]}
> >
<Select <Select placeholder="选择计划执行周期" onChange={changTable} value={selectValue}>
placeholder="选择计划执行周期"
onChange={changTable}
value={selectValue}
>
<Option value="一周一次">一周一次</Option> <Option value="一周一次">一周一次</Option>
<Option value="半月一次">半月一次</Option> <Option value="半月一次">半月一次</Option>
<Option value="一月一次">一月一次</Option> <Option value="一月一次">一月一次</Option>
...@@ -468,10 +457,7 @@ const AddModal = props => { ...@@ -468,10 +457,7 @@ const AddModal = props => {
</Menu> </Menu>
} }
> >
<div <div className={styles.linkDrowp} onClick={e => e.preventDefault()}>
className={styles.linkDrowp}
onClick={e => e.preventDefault()}
>
<DownOutlined <DownOutlined
style={{ style={{
fontSize: '12px', fontSize: '12px',
...@@ -613,22 +599,14 @@ const AddModal = props => { ...@@ -613,22 +599,14 @@ const AddModal = props => {
}, },
]} ]}
> >
<Select <Select placeholder="是否送审" onChange={changTable1} value={selectValue1}>
placeholder="是否送审"
onChange={changTable1}
value={selectValue1}
>
<Option value="否"></Option> <Option value="否"></Option>
<Option value="是"></Option> <Option value="是"></Option>
</Select> </Select>
</Item> </Item>
</Col> </Col>
<Col span={23}> <Col span={23}>
<Item <Item label="台账过滤条件" name="filterCondition" labelCol={{ span: 4 }}>
label="台账过滤条件"
name="filterCondition"
labelCol={{ span: 4 }}
>
<TextArea placeholder="设备对应的Scada台账名称,可多选" /> <TextArea placeholder="设备对应的Scada台账名称,可多选" />
</Item> </Item>
</Col> </Col>
...@@ -641,6 +619,7 @@ const AddModal = props => { ...@@ -641,6 +619,7 @@ const AddModal = props => {
newCheckedList={checkedList1} newCheckedList={checkedList1}
isType={types} isType={types}
filed={filed} filed={filed}
type={type}
filed1={filed1} filed1={filed1}
ff={ff} ff={ff}
pickItem={pickItem} pickItem={pickItem}
......
/* eslint-disable no-lonely-if */
/* eslint-disable eqeqeq */
import React, { useState, useEffect, PureComponent } from 'react'; import React, { useState, useEffect, PureComponent } from 'react';
import { Modal, Divider, Checkbox, Space, Button } from 'antd'; import { Modal, Divider, Checkbox, Space, Button } from 'antd';
import styles from './maintenance.less'; import styles from './maintenance.less';
...@@ -14,6 +16,7 @@ const ChangeAdd = props => { ...@@ -14,6 +16,7 @@ const ChangeAdd = props => {
pickItem, pickItem,
characterValue, characterValue,
ff, ff,
type,
} = props; } = props;
const [checkedList, setCheckedList] = useState([]); // 选中的复选框内容 const [checkedList, setCheckedList] = useState([]); // 选中的复选框内容
const [indeterminate, setIndeterminate] = useState(true); // 全选样式控制 const [indeterminate, setIndeterminate] = useState(true); // 全选样式控制
...@@ -47,9 +50,7 @@ const ChangeAdd = props => { ...@@ -47,9 +50,7 @@ const ChangeAdd = props => {
const onSubmit = () => { const onSubmit = () => {
isType === 'rule' isType === 'rule'
? callBackSubmit( ? callBackSubmit(
`${ `${value === '无' || value === '' ? '' : `${value},`}${checkValue.join(',')}`,
value === '无' || value === '' ? '' : `${value},`
}${checkValue.join(',')}`,
) )
: callBackSubmit({ : callBackSubmit({
checkedList, checkedList,
...@@ -85,6 +86,7 @@ const ChangeAdd = props => { ...@@ -85,6 +86,7 @@ const ChangeAdd = props => {
useEffect(() => { useEffect(() => {
console.log(indeterminate); console.log(indeterminate);
if (type == 'edit') {
if (isType != '' && isType === 'add') { if (isType != '' && isType === 'add') {
let checkArr = []; let checkArr = [];
console.log(newCheckedList); console.log(newCheckedList);
...@@ -94,9 +96,7 @@ const ChangeAdd = props => { ...@@ -94,9 +96,7 @@ const ChangeAdd = props => {
} }
}); });
setCheckedList(checkArr); setCheckedList(checkArr);
setIndeterminate( setIndeterminate(!!newCheckedList.length && newCheckedList.length < filed.length);
!!newCheckedList.length && newCheckedList.length < filed.length,
);
setCheckAll(newCheckedList.length === filed.length); setCheckAll(newCheckedList.length === filed.length);
let newArr = characterValue.length ? characterValue.split(',') : []; let newArr = characterValue.length ? characterValue.split(',') : [];
setSelectData(newArr); setSelectData(newArr);
...@@ -109,13 +109,40 @@ const ChangeAdd = props => { ...@@ -109,13 +109,40 @@ const ChangeAdd = props => {
} }
}); });
setCheckedList(checkArr); setCheckedList(checkArr);
setIndeterminate( setIndeterminate(!!newCheckedList.length && newCheckedList.length < ff.length);
!!newCheckedList.length && newCheckedList.length < ff.length,
);
setCheckAll(newCheckedList.length === ff.length); setCheckAll(newCheckedList.length === ff.length);
let newArr = characterValue.length ? characterValue.split(',') : []; let newArr = characterValue.length ? characterValue.split(',') : [];
setSelectData(newArr); setSelectData(newArr);
} }
} else {
if (isType != '' && isType === 'add') {
let checkArr = [];
console.log(newCheckedList);
newCheckedList.map(checkItem => {
if (filed.includes(checkItem)) {
checkArr.push(checkItem);
}
});
setCheckedList(checkArr);
setIndeterminate(false);
setCheckAll(false);
let newArr = characterValue.length ? characterValue.split(',') : [];
setSelectData(newArr);
} else if (isType === 'app') {
let checkArr = [];
console.log(newCheckedList);
newCheckedList.map(checkItem => {
if (ff.includes(checkItem)) {
checkArr.push(checkItem);
}
});
setCheckedList(checkArr);
setIndeterminate(false);
setCheckAll(false);
let newArr = characterValue.length ? characterValue.split(',') : [];
setSelectData(newArr);
}
}
}, [visible]); }, [visible]);
if (isType != 'app') { if (isType != 'app') {
......
...@@ -2,10 +2,7 @@ ...@@ -2,10 +2,7 @@
/* eslint-disable camelcase */ /* eslint-disable camelcase */
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Space, Table, Popconfirm, Tooltip, Button, notification } from 'antd'; import { Space, Table, Popconfirm, Tooltip, Button, notification } from 'antd';
import { import { CM_XWBPlan_DataList, CM_XWBPlan_RemovePlan } from '@/services/maintenance/api';
CM_XWBPlan_DataList,
CM_XWBPlan_RemovePlan,
} from '@/services/maintenance/api';
import { EditTwoTone, DeleteOutlined, PlusOutlined } from '@ant-design/icons'; import { EditTwoTone, DeleteOutlined, PlusOutlined } from '@ant-design/icons';
import styles from './maintenance.less'; import styles from './maintenance.less';
import AddModal from './AddModal'; import AddModal from './AddModal';
...@@ -24,82 +21,231 @@ const maintenance = () => { ...@@ -24,82 +21,231 @@ const maintenance = () => {
dataIndex: 'businessName', dataIndex: 'businessName',
key: 'businessName', key: 'businessName',
width: 100, width: 100,
onCell: () => ({
style: {
maxWidth: 100,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
align: 'center', align: 'center',
render: record => (
<Tooltip placement="topLeft" title={record}>
{record}
</Tooltip>
),
}, },
{ {
title: '业务类型', title: '业务类型',
dataIndex: 'businessType', dataIndex: 'businessType',
key: 'businessType', key: 'businessType',
width: 100, width: 100,
ellipsis: true, onCell: () => ({
style: {
maxWidth: 100,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
align: 'center', align: 'center',
render: record => (
<Tooltip placement="topLeft" title={record}>
{record}
</Tooltip>
),
}, },
{ {
title: '执行周期', title: '执行周期',
dataIndex: 'docycle', dataIndex: 'docycle',
key: 'docycle', key: 'docycle',
width: 100, width: 100,
onCell: () => ({
style: {
maxWidth: 100,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
align: 'center', align: 'center',
render: record => (
<Tooltip placement="topLeft" title={record}>
{record}
</Tooltip>
),
}, },
{ {
title: '台账名称', title: '台账名称',
dataIndex: 'accountName', dataIndex: 'accountName',
key: 'accountName', key: 'accountName',
width: 200, width: 100,
ellipsis: true, onCell: () => ({
style: {
maxWidth: 100,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
align: 'center', align: 'center',
render: record => (
<Tooltip placement="topLeft" title={record}>
{record}
</Tooltip>
),
}, },
{ {
title: '反馈名称', title: '反馈名称',
dataIndex: 'feedbackName', dataIndex: 'feedbackName',
key: 'feedbackName', key: 'feedbackName',
width: 200, width: 100,
onCell: () => ({
style: {
maxWidth: 100,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
align: 'center', align: 'center',
render: record => (
<Tooltip placement="topLeft" title={record}>
{record}
</Tooltip>
),
}, },
{ {
title: '台账过滤条件', title: '台账过滤条件',
dataIndex: 'filterCondition', dataIndex: 'filterCondition',
key: 'filterCondition', key: 'filterCondition',
width: 200, width: 200,
ellipsis: true, onCell: () => ({
style: {
maxWidth: 200,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
align: 'center', align: 'center',
render: record => (
<Tooltip placement="topLeft" title={record}>
{record}
</Tooltip>
),
}, },
{ {
title: '是否送审', title: '是否送审',
dataIndex: 'isSubmit', dataIndex: 'isSubmit',
key: 'isSubmit', key: 'isSubmit',
width: 100, width: 100,
onCell: () => ({
style: {
maxWidth: 100,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
align: 'center', align: 'center',
render: record => (
<Tooltip placement="topLeft" title={record}>
{record}
</Tooltip>
),
}, },
{ {
title: '执行角色', title: '执行角色',
dataIndex: 'doRole', dataIndex: 'doRole',
key: 'doRole', key: 'doRole',
width: 200, width: 300,
ellipsis: true, onCell: () => ({
style: {
maxWidth: 300,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
align: 'center', align: 'center',
render: record => (
<Tooltip placement="topLeft" title={record}>
{record}
</Tooltip>
),
}, },
{ {
title: '预生成天数', title: '预生成天数',
dataIndex: 'produceDays', dataIndex: 'produceDays',
key: 'produceDays', key: 'produceDays',
width: 100, width: 100,
onCell: () => ({
style: {
maxWidth: 100,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
align: 'center', align: 'center',
render: record => (
<Tooltip placement="topLeft" title={record}>
{record}
</Tooltip>
),
}, },
{ {
title: '在线任务量', title: '在线任务量',
dataIndex: 'onLines', dataIndex: 'onLines',
key: 'onLines', key: 'onLines',
width: 100, width: 100,
ellipsis: true, onCell: () => ({
style: {
maxWidth: 100,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
align: 'center', align: 'center',
render: record => (
<Tooltip placement="topLeft" title={record}>
{record}
</Tooltip>
),
}, },
{ {
title: '启停', title: '启停',
dataIndex: 'doNot', dataIndex: 'doNot',
key: 'doNot', key: 'doNot',
width: 100, width: 100,
onCell: () => ({
style: {
maxWidth: 100,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
align: 'center', align: 'center',
render: record => (
<Tooltip placement="topLeft" title={record}>
{record}
</Tooltip>
),
}, },
{ {
title: '操作', title: '操作',
...@@ -109,10 +255,7 @@ const maintenance = () => { ...@@ -109,10 +255,7 @@ const maintenance = () => {
render: (text, record) => ( render: (text, record) => (
<Space> <Space>
<Tooltip title="修改"> <Tooltip title="修改">
<EditTwoTone <EditTwoTone onClick={() => editEventType(record)} style={{ fontSize: '16px' }} />
onClick={() => editEventType(record)}
style={{ fontSize: '16px' }}
/>
</Tooltip> </Tooltip>
<Tooltip title="删除"> <Tooltip title="删除">
<Popconfirm <Popconfirm
...@@ -206,8 +349,7 @@ const maintenance = () => { ...@@ -206,8 +349,7 @@ const maintenance = () => {
dataSource={tableData} dataSource={tableData}
scroll={{ y: 'calc(100vh - 215px)', x: 'max-content' }} scroll={{ y: 'calc(100vh - 215px)', x: 'max-content' }}
pagination={{ pagination={{
showTotal: (total, range) => showTotal: (total, range) => `第${range[0]}-${range[1]} 条/共 ${total} 条`,
`第${range[0]}-${range[1]} 条/共 ${total} 条`,
pageSizeOptions: [10, 20, 50, 100], pageSizeOptions: [10, 20, 50, 100],
defaultPageSize: 20, defaultPageSize: 20,
showQuickJumper: true, showQuickJumper: true,
......
.maintenanceContainer{ .maintenanceContainer {
.ant-card-body { .ant-card-body {
padding: 12px 24px 24px 24px; padding: 12px 24px 24px 24px;
} }
.pickItem{ .pickItem {
background-color: #F5F6F9; background-color: #f5f6f9;
} }
} }
.formData{ .formData {
height: 38rem; height: 38rem;
overflow-y: scroll; overflow-y: scroll;
.ant-form-item-label > label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before{ .ant-form-item-label
> label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before {
display: none; display: none;
} }
.formData_label{ .formData_label {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.filed_listItem{ .filed_listItem {
display: flex; display: flex;
height: 3.6rem; height: 3.6rem;
.ant-btn-icon-only { .ant-btn-icon-only {
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
} }
} }
} }
.linkDrowp{ .linkDrowp {
position: absolute; position: absolute;
top: 0px; top: 0px;
left: 93.5%; left: 93.5%;
...@@ -42,36 +42,35 @@ ...@@ -42,36 +42,35 @@
display: flex; display: flex;
align-items: center; align-items: center;
} }
.listItem{ .listItem {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400;
color: #414E65; color: #414e65;
cursor: pointer; cursor: pointer;
line-height: 28px; line-height: 28px;
align-items: center; align-items: center;
padding: 8px 14px; padding: 8px 14px;
} }
.ant-select-arrow .anticon { .ant-select-arrow .anticon {
vertical-align: middle; vertical-align: middle;
} }
.listCard{ .listCard {
display: flex; display: flex;
.cardItem{ .cardItem {
padding: 0.5rem; padding: 0.5rem;
} }
.cardContent{ .cardContent {
height: 30rem; height: 30rem;
overflow-y: scroll; overflow-y: scroll;
width: 100%; width: 100%;
} }
.cardItemData{ .cardItemData {
display:inline-block; display: inline-block;
padding: 0.5rem; padding: 0.5rem;
border: 1px solid #b5b8c8; border: 1px solid #b5b8c8;
width:100%; width: 100%;
// height: 30rem; // height: 30rem;
overflow-y: scroll; overflow-y: scroll;
} }
......
import { Space, Table, Button, Popconfirm, notification, Spin } from 'antd'; import { Space, Table, Button, Popconfirm, notification, Spin } from 'antd';
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import styles from '../dimensionsConfig.less' import styles from '../dimensionsConfig.less';
import { import { GetVectorDataList, DeleteVectorData, RefreshVectorData } from '@/services/webConfig/api';
GetVectorDataList,DeleteVectorData,RefreshVectorData import AddModal from './AddModal';
} from '@/services/webConfig/api';
import AddModal from './AddModal'
// import PreviewModal from './VectorPreviewModal' // import PreviewModal from './VectorPreviewModal'
const VectorData = props => { const VectorData = props => {
const [treeLoading, setTreeLoading] = useState(false);// 弹窗显示 const [treeLoading, setTreeLoading] = useState(false); // 弹窗显示
const [tileData, setTileData] = useState([]); // table表格数据 const [tileData, setTileData] = useState([]); // table表格数据
const [visible, setVisible] = useState(false); // 弹窗 const [visible, setVisible] = useState(false); // 弹窗
const [flag, setFlag] = useState(0); // 更新list const [flag, setFlag] = useState(0); // 更新list
...@@ -19,45 +17,49 @@ const VectorData = props => { ...@@ -19,45 +17,49 @@ const VectorData = props => {
title: '项目名', title: '项目名',
dataIndex: 'projectName', dataIndex: 'projectName',
key: 'projectName', key: 'projectName',
align: 'center' align: 'center',
}, },
{ {
title: 'IP', title: 'IP',
dataIndex: 'ip', dataIndex: 'ip',
key: 'ip', key: 'ip',
align: 'center' align: 'center',
}, },
{ {
title: '端口', title: '端口',
dataIndex: 'port', dataIndex: 'port',
key: 'port', key: 'port',
align: 'center' align: 'center',
}, },
{ {
title: '数据源名', title: '数据源名',
dataIndex: 'name', dataIndex: 'name',
key: 'name', key: 'name',
align: 'center' align: 'center',
}, },
{ {
title: '类型', title: '类型',
dataIndex: 'type', dataIndex: 'type',
key: 'type', key: 'type',
align: 'center' align: 'center',
}, },
{ {
title: '发布时间', title: '发布时间',
dataIndex: 'publishDatetime', dataIndex: 'publishDatetime',
key: 'publishDatetime', key: 'publishDatetime',
align: 'center' align: 'center',
}, },
{ {
title: '编辑', title: '编辑',
align: 'center', align: 'center',
render: (text, record, index) => ( render: (text, record, index) => (
<Space> <Space>
<Button
<Button type="primary" size="small" loading={loading[index]} onClick={() => enterLoading(record, index)}> type="primary"
size="small"
loading={loading[index]}
onClick={() => enterLoading(record, index)}
>
更新 更新
</Button> </Button>
<div onClick={e => e.stopPropagation()}> <div onClick={e => e.stopPropagation()}>
...@@ -77,23 +79,23 @@ const VectorData = props => { ...@@ -77,23 +79,23 @@ const VectorData = props => {
</Space> </Space>
), ),
}, },
]; ];
//更新 // 更新
const enterLoading = (record, index) => { const enterLoading = (record, index) => {
const newLoadings = [...loading]; const newLoadings = [...loading];
newLoadings[index] = true newLoadings[index] = true;
setLoading(newLoadings) setLoading(newLoadings);
let query = { let query = {
id: record.id, id: record.id,
} };
RefreshVectorData(query).then(res => { RefreshVectorData(query)
.then(res => {
const newLoadings = [...loading]; const newLoadings = [...loading];
newLoadings[index] = false newLoadings[index] = false;
setLoading(newLoadings) setLoading(newLoadings);
if (res.msg==='') { if (res.msg === '') {
setFlag(flag + 1) setFlag(flag + 1);
notification.success({ notification.success({
message: '提示', message: '提示',
duration: 3, duration: 3,
...@@ -105,30 +107,28 @@ const VectorData = props => { ...@@ -105,30 +107,28 @@ const VectorData = props => {
duration: 3, duration: 3,
description: res.msg, description: res.msg,
}); });
}; }
}).catch(err => { })
.catch(err => {
const newLoadings = [...loading]; const newLoadings = [...loading];
newLoadings[index] = false newLoadings[index] = false;
setLoading(newLoadings) setLoading(newLoadings);
notification.error({ notification.error({
message: '提示', message: '提示',
duration: 3, duration: 3,
description: '服务无法访问', description: '服务无法访问',
}); });
}) });
};
}
const onSubmit = prop => { const onSubmit = prop => {
setVisible(false); setVisible(false);
setFlag(flag + 1) setFlag(flag + 1);
}; };
const delConfirm = (record) => { const delConfirm = record => {
DeleteVectorData(record.id).then(res => { DeleteVectorData(record.id).then(res => {
if (res.msg==='') { if (res.msg === '') {
setFlag(flag + 1) setFlag(flag + 1);
notification.success({ notification.success({
message: '提示', message: '提示',
duration: 3, duration: 3,
...@@ -140,27 +140,26 @@ const VectorData = props => { ...@@ -140,27 +140,26 @@ const VectorData = props => {
duration: 3, duration: 3,
description: '删除元数据失败', description: '删除元数据失败',
}); });
};
})
} }
});
};
const handleAdd = () => { const handleAdd = () => {
setType('add'); setType('add');
setVisible(true); setVisible(true);
} };
useEffect(() => { useEffect(() => {
renderTile(); renderTile();
}, [flag]); }, [flag]);
// 获取瓦片数据配置数据 // 获取瓦片数据配置数据
const renderTile = () => { const renderTile = () => {
setTreeLoading(true); setTreeLoading(true);
GetVectorDataList().then( GetVectorDataList().then(res => {
res => {
if (res.msg === 'Ok') { if (res.msg === 'Ok') {
let arr = [] let arr = [];
res.data.map(item => { res.data.map(item => {
arr.push(false) arr.push(false);
}) });
setLoading(arr) setLoading(arr);
setTreeLoading(false); setTreeLoading(false);
setTileData(res.data); setTileData(res.data);
} else { } else {
...@@ -170,19 +169,19 @@ const VectorData = props => { ...@@ -170,19 +169,19 @@ const VectorData = props => {
description: res.message, description: res.message,
}); });
} }
} });
)
}; };
return ( return (
<> <>
<Spin tip="loading..." spinning={treeLoading}> <Spin tip="loading..." spinning={treeLoading}>
<div className={styles.tileBtn}> <div className={styles.tileBtn}>
<Button type="primary" onClick={() => { <Button
type="primary"
onClick={() => {
handleAdd(); handleAdd();
}} > }}
>
新增 新增
</Button> </Button>
</div> </div>
...@@ -190,15 +189,12 @@ const VectorData = props => { ...@@ -190,15 +189,12 @@ const VectorData = props => {
columns={columns} columns={columns}
dataSource={tileData} dataSource={tileData}
bordered bordered
rowKey='id' rowKey="id"
scroll={{ y: 400 }} scroll={{ y: 400 }}
pagination={{ pagination={{
showTotal: (total, range) => showTotal: (total, range) => `第${range[0]}-${range[1]} 条/共 ${total} 条`,
`第${range[0]}-${range[1]} 条/共 ${total} 条`
}} }}
> />
</Table>
<AddModal <AddModal
visible={visible} visible={visible}
onCancel={() => setVisible(false)} onCancel={() => setVisible(false)}
...@@ -206,9 +202,8 @@ const VectorData = props => { ...@@ -206,9 +202,8 @@ const VectorData = props => {
type={type} type={type}
formObj={formObj} formObj={formObj}
/> />
</Spin> </Spin>
</> </>
) );
} };
export default VectorData export default VectorData;
\ No newline at end of file
import { Tabs, Button } from 'antd'; import { Tabs, Button } from 'antd';
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import PageContainer from '@/components/BasePageContainer'; import PageContainer from '@/components/BasePageContainer';
import styles from './dimensionsConfig.less' import styles from './dimensionsConfig.less';
import TileConfig from './TileConfig/TileConfig'; import TileConfig from './TileConfig/TileConfig';
import VectorData from './VectorData/VectorData'; import VectorData from './VectorData/VectorData';
import ProjectMessage from './projectMessage/projectMessage'; import ProjectMessage from './projectMessage/projectMessage';
...@@ -10,32 +10,30 @@ import SolutionConfig from './solutionConfig/solutionConfig'; ...@@ -10,32 +10,30 @@ import SolutionConfig from './solutionConfig/solutionConfig';
const { TabPane } = Tabs; const { TabPane } = Tabs;
const SchemeConfig = () => { const SchemeConfig = () => {
const [activekey,setActiveKey] =useState('1') const [activekey, setActiveKey] = useState('1');
const callback = (index) => { const callback = index => {
setActiveKey(index) setActiveKey(index);
} };
return ( return (
<PageContainer> <PageContainer>
<div className={styles.container3d} activekey={activekey}> <div className={styles.container3d} activekey={activekey}>
<Tabs onChange={callback} type="card"> <Tabs onChange={callback} type="card">
<TabPane tab="瓦片数据配置" key="1"> <TabPane tab="瓦片数据配置" key="1">
{activekey==='1'?<TileConfig />:''} {activekey === '1' ? <TileConfig /> : ''}
</TabPane> </TabPane>
<TabPane tab="数据源配置" key="2"> <TabPane tab="数据源配置" key="2">
{activekey==='2'?<VectorData />:''} {activekey === '2' ? <VectorData /> : ''}
</TabPane> </TabPane>
<TabPane tab="方案管理" key="3"> <TabPane tab="方案管理" key="3">
{activekey==='3'?<ProjectMessage />:''} {activekey === '3' ? <ProjectMessage /> : ''}
</TabPane> </TabPane>
<TabPane tab="方案配置" key="4"> <TabPane tab="方案配置" key="4">
{activekey==='4'?<SolutionConfig />:''} {activekey === '4' ? <SolutionConfig /> : ''}
</TabPane> </TabPane>
</Tabs> </Tabs>
</div> </div>
</PageContainer> </PageContainer>
) );
};
}
export default SchemeConfig; export default SchemeConfig;
.container3d{ .container3d {
width: 100%; width: 100%;
background-color: #ffffff; background-color: #ffffff;
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
color: rgba(0, 0, 0, 0.85); color: rgba(0, 0, 0, 0.85);
} }
overflow-y: scroll; overflow-y: scroll;
.ant-input-number-input{ .ant-input-number-input {
background-color: #ffffff; background-color: #ffffff;
color: #000000; color: #000000;
} }
...@@ -20,37 +20,37 @@ ...@@ -20,37 +20,37 @@
padding: 12px 24px 24px 25px; padding: 12px 24px 24px 25px;
} }
} }
.imgList{ .imgList {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
} }
.imgItem{ .imgItem {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
margin:0 1rem 1rem 0; margin: 0 1rem 1rem 0;
} }
.tileBtn{ .tileBtn {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
width: 100%; width: 100%;
padding: 0 0 2rem padding: 0 0 2rem;
} }
.schemeName{ .schemeName {
margin-right: 0.8rem; margin-right: 0.8rem;
font-weight: bold; font-weight: bold;
} }
.schemeItem,.schemeBtn{ .schemeItem,
.schemeBtn {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.schemeBtn{ .schemeBtn {
width: 12rem; width: 12rem;
justify-content: center; justify-content: center;
} }
.mapItem{ .mapItem {
display: flex; display: flex;
border: 1px solid #ccc; border: 1px solid #ccc;
border-radius: 4px; border-radius: 4px;
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
margin: 0.5rem 0; margin: 0.5rem 0;
width: 14.5rem; width: 14.5rem;
} }
.defaultTile{ .defaultTile {
background: #ccc; background: #ccc;
color: white; color: white;
cursor: pointer; cursor: pointer;
...@@ -68,20 +68,19 @@ ...@@ -68,20 +68,19 @@
align-items: center; align-items: center;
width: 3rem; width: 3rem;
justify-content: center; justify-content: center;
} }
.mapText{ .mapText {
width: 10rem; width: 10rem;
text-align: center; text-align: center;
} }
.mapIcon{ .mapIcon {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
cursor: pointer; cursor: pointer;
} }
.activeTile{ .activeTile {
background-color: #4699f4 background-color: #4699f4;
} }
.dropList { .dropList {
position: absolute; position: absolute;
...@@ -90,31 +89,31 @@ ...@@ -90,31 +89,31 @@
color: rgba(0, 0, 0, 0.25); color: rgba(0, 0, 0, 0.25);
z-index: 99; z-index: 99;
} }
.divider{ .divider {
display: flex; display: flex;
align-items: center; align-items: center;
line-height: 100%; line-height: 100%;
padding: 0.5rem; padding: 0.5rem;
.dividerIcon{ .dividerIcon {
margin-left: 0.8rem; margin-left: 0.8rem;
color: #4699f4; color: #4699f4;
cursor: pointer; cursor: pointer;
} }
} }
.cardsList{ .cardsList {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
} }
.cardItem{ .cardItem {
width: 18rem; width: 18rem;
height: 26rem; height: 26rem;
margin: 0 2rem; margin: 0 2rem;
} }
.containerFileds{ .containerFileds {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
width: 98%; width: 98%;
border:1px solid #f0f0f0; border: 1px solid #f0f0f0;
margin-top: 1rem; margin-top: 0.5rem;
} }
...@@ -69,7 +69,6 @@ const BaseConfig = () => { ...@@ -69,7 +69,6 @@ const BaseConfig = () => {
</div> </div>
)} )}
<br /> <br />
<Button style={{ marginLeft: '116px', marginTop: '10px' }}>生成编号</Button>
<div style={{ marginTop: '50px', display: 'flex', alignItems: 'center' }}> <div style={{ marginTop: '50px', display: 'flex', alignItems: 'center' }}>
<img src={servie} style={{ height: '16px' }} alt="" /> <img src={servie} style={{ height: '16px' }} alt="" />
<span style={{ marginLeft: '10px', fontWeight: 'bold' }}>服务器链接</span> <span style={{ marginLeft: '10px', fontWeight: 'bold' }}>服务器链接</span>
......
...@@ -17,11 +17,7 @@ import { ...@@ -17,11 +17,7 @@ import {
notification, notification,
Spin, Spin,
} from 'antd'; } from 'antd';
import { import { PlusCircleOutlined, EditTwoTone, DeleteOutlined } from '@ant-design/icons';
PlusCircleOutlined,
EditTwoTone,
DeleteOutlined,
} from '@ant-design/icons';
const { Search } = Input; const { Search } = Input;
const { Option } = Select; const { Option } = Select;
...@@ -148,6 +144,21 @@ const TemplateManage = () => { ...@@ -148,6 +144,21 @@ const TemplateManage = () => {
dataIndex: 'third_id', dataIndex: 'third_id',
key: 'third_id', key: 'third_id',
align: 'center', align: 'center',
width: 150,
onCell: () => ({
style: {
maxWidth: 150,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
render: record => (
<Tooltip placement="topLeft" title={record}>
{record}
</Tooltip>
),
}, },
{ {
title: '模板参数1.0', title: '模板参数1.0',
...@@ -172,6 +183,21 @@ const TemplateManage = () => { ...@@ -172,6 +183,21 @@ const TemplateManage = () => {
dataIndex: 'analysis_params', dataIndex: 'analysis_params',
key: 'analysis_params', key: 'analysis_params',
align: 'center', align: 'center',
width: 150,
onCell: () => ({
style: {
maxWidth: 150,
overflow: 'hidden',
whiteSpace: 'nowrap',
textOverflow: 'ellipsis',
cursor: 'pointer',
},
}),
render: record => (
<Tooltip placement="topLeft" title={record}>
{record}
</Tooltip>
),
}, },
{ {
title: '操作', title: '操作',
...@@ -203,9 +229,7 @@ const TemplateManage = () => { ...@@ -203,9 +229,7 @@ const TemplateManage = () => {
delTemplate(record); delTemplate(record);
}} }}
> >
<DeleteOutlined <DeleteOutlined style={{ fontSize: '16px', color: '#e86060' }} />
style={{ fontSize: '16px', color: '#e86060' }}
/>
</Popconfirm> </Popconfirm>
</div> </div>
</Tooltip> </Tooltip>
...@@ -218,10 +242,7 @@ const TemplateManage = () => { ...@@ -218,10 +242,7 @@ const TemplateManage = () => {
const searchStyle = val => { const searchStyle = val => {
let n; let n;
if (showSearchStyle) { if (showSearchStyle) {
n = val.replace( n = val.replace(new RegExp(value, 'g'), `<span style='color:red'>${value}</span>`);
new RegExp(value, 'g'),
`<span style='color:red'>${value}</span>`,
);
} else { } else {
n = val; n = val;
} }
......
import React, { useState, useEffect } from 'react' import React, { useState, useEffect } from 'react';
import SiteModal from '@/components/Modal/SiteModa'; import SiteModal from '@/components/Modal/SiteModa';
import { Form, Input, notification, Select, Row, Col } from 'antd' import { Form, Input, notification, Select, Row, Col } from 'antd';
const { Item } = Form; const { Item } = Form;
const { TextArea } = Input; const { TextArea } = Input;
const AddModal = props => { const AddModal = props => {
const { option } = props; const { option } = props;
...@@ -13,21 +12,21 @@ const AddModal = props => { ...@@ -13,21 +12,21 @@ const AddModal = props => {
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [templateName, setTemplateName] = useState([]); const [templateName, setTemplateName] = useState([]);
const onSubmit = () => { const onSubmit = () => {
form.submit() form.submit();
} };
const onSubmitSuccess = () => { const onSubmitSuccess = () => {
const result = form.getFieldValue() const result = form.getFieldValue();
props.onSubmit & props.onSubmit({ Id: props.template.Id, ...result }) props.onSubmit & props.onSubmit({ Id: props.template.Id, ...result });
form.resetFields() form.resetFields();
} };
useEffect(() => { useEffect(() => {
if (option) { if (option) {
setTemplateName(option.filter(item => item.Type === '公众号')) setTemplateName(option.filter(item => item.Type === '公众号'));
form.setFieldsValue({ form.setFieldsValue({
type: '公众号' type: '公众号',
}) });
} }
}, [props]) }, [props]);
const layout = { const layout = {
layout: 'horizontal', layout: 'horizontal',
labelCol: { labelCol: {
...@@ -42,21 +41,20 @@ const AddModal = props => { ...@@ -42,21 +41,20 @@ const AddModal = props => {
// },[props.template]) // },[props.template])
const onChange = (value, option) => { const onChange = (value, option) => {
form.setFieldsValue({ form.setFieldsValue({
third_id: option.code third_id: option.code,
}) });
// setTemplateName(option.filter(item => item.Type === value)) // setTemplateName(option.filter(item => item.Type === value))
}; };
const onChangeType = (value) => { const onChangeType = value => {
setTemplateName(option.filter(item => item.Type === value)) setTemplateName(option.filter(item => item.Type === value));
console.log(option.filter(item => item.Type === value)) console.log(option.filter(item => item.Type === value));
} };
const onChangeType1 = (value) => { const onChangeType1 = value => {
form.setFieldsValue({ form.setFieldsValue({
third_id: value third_id: value,
}) });
} };
return ( return (
<SiteModal <SiteModal
...@@ -71,7 +69,7 @@ const AddModal = props => { ...@@ -71,7 +69,7 @@ const AddModal = props => {
onOk={() => onSubmit()} onOk={() => onSubmit()}
confirmLoading={loading} confirmLoading={loading}
> >
<div style={{ width: "750px", height: "500px", overflowY: "scroll", overflowX: "hidden" }}> <div style={{ width: '750px', height: '500px', overflowY: 'scroll', overflowX: 'hidden' }}>
<Form form={form} {...layout} onFinish={onSubmitSuccess}> <Form form={form} {...layout} onFinish={onSubmitSuccess}>
<Item <Item
label="模板名称" label="模板名称"
...@@ -102,7 +100,7 @@ const AddModal = props => { ...@@ -102,7 +100,7 @@ const AddModal = props => {
}, },
]} ]}
> >
<Select style={{ width: '10rem' }} onChange={(value) => onChangeType(value)} > <Select style={{ width: '10rem' }} onChange={value => onChangeType(value)}>
<Select.Option value="公众号">公众号</Select.Option> <Select.Option value="公众号">公众号</Select.Option>
<Select.Option value="短信">短信</Select.Option> <Select.Option value="短信">短信</Select.Option>
<Select.Option value="企业微信">企业微信</Select.Option> <Select.Option value="企业微信">企业微信</Select.Option>
...@@ -111,9 +109,7 @@ const AddModal = props => { ...@@ -111,9 +109,7 @@ const AddModal = props => {
</div> </div>
</Item> </Item>
{form.getFieldsValue().type !== '企业微信' ? (
{form.getFieldsValue().type !== '企业微信' ?
<> <>
<Item <Item
label="请选择第三方模板名称" label="请选择第三方模板名称"
...@@ -161,7 +157,8 @@ const AddModal = props => { ...@@ -161,7 +157,8 @@ const AddModal = props => {
</Item> </Item>
</div> </div>
</Item> </Item>
</> : </>
) : (
<> <>
<Item <Item
label="请选择第三方模板名称" label="请选择第三方模板名称"
...@@ -180,7 +177,11 @@ const AddModal = props => { ...@@ -180,7 +177,11 @@ const AddModal = props => {
}, },
]} ]}
> >
<Select style={{width:'12rem'}} onChange={(value) => onChangeType1(value)} placeholder="请选择模板名称" > <Select
style={{ width: '12rem' }}
onChange={value => onChangeType1(value)}
placeholder="请选择模板名称"
>
<Select.Option value="普通文本">普通文本</Select.Option> <Select.Option value="普通文本">普通文本</Select.Option>
<Select.Option value="文字卡片">文字卡片</Select.Option> <Select.Option value="文字卡片">文字卡片</Select.Option>
<Select.Option value="图片消息">图片消息</Select.Option> <Select.Option value="图片消息">图片消息</Select.Option>
...@@ -203,43 +204,27 @@ const AddModal = props => { ...@@ -203,43 +204,27 @@ const AddModal = props => {
</div> </div>
</Item> </Item>
</> </>
} )}
<Item label="模板参数1.0" labelCol={{ span: 6 }} name="params">
<Item
label="模板参数1.0"
labelCol={{ span: 6 }}
name="params"
>
<TextArea rows={2} style={{ width: '96%' }} placeholder="first|Second|Third|Four" /> <TextArea rows={2} style={{ width: '96%' }} placeholder="first|Second|Third|Four" />
</Item> </Item>
<Item <Item label="模板参数2.0" labelCol={{ span: 6 }} name="param1">
label="模板参数2.0"
labelCol={{ span: 6 }}
name="param1"
>
<TextArea rows={2} style={{ width: '96%' }} placeholder="first|Second|Third|Four" /> <TextArea rows={2} style={{ width: '96%' }} placeholder="first|Second|Third|Four" />
</Item> </Item>
<Item <Item label="参数说明" name="desc" labelCol={{ span: 6 }}>
label="参数说明" <TextArea
name="desc" style={{ width: '96%' }}
labelCol={{ span: 6 }} rows={4}
> placeholder="first: 标题信息|Second: 展示内容|Third: 时间|Four: 备注信息"
<TextArea style={{ width: '96%' }} rows={4} placeholder="first: 标题信息|Second: 展示内容|Third: 时间|Four: 备注信息" /> />
</Item> </Item>
<Item <Item label="解析规则" name="analysis_params" labelCol={{ span: 6 }}>
label="解析规则"
name="analysis_params"
labelCol={{ span: 6 }}
>
<TextArea rows={2} style={{ width: '96%' }} placeholder="param1|param2|param3|param4" /> <TextArea rows={2} style={{ width: '96%' }} placeholder="param1|param2|param3|param4" />
</Item> </Item>
</Form> </Form>
</div> </div>
</SiteModal> </SiteModal>
) );
} };
export default AddModal; export default AddModal;
import { Tabs, Button } from 'antd'; import { Tabs, Button } from 'antd';
import React from 'react'; import React from 'react';
import PageContainer from '@/components/BasePageContainer'; import PageContainer from '@/components/BasePageContainer';
import styles from './SchemeConfig.less' import styles from './SchemeConfig.less';
import TileConfig from './TileConfig/TileConfig'; import TileConfig from './TileConfig/TileConfig';
import VectorData from './VectorData/VectorData'; import VectorData from './VectorData/VectorData';
import ProjectMessage from './projectMessage/projectMessage'; import ProjectMessage from './projectMessage/projectMessage';
...@@ -10,10 +10,7 @@ import SolutionConfig from './solutionConfig/solutionConfig'; ...@@ -10,10 +10,7 @@ import SolutionConfig from './solutionConfig/solutionConfig';
const { TabPane } = Tabs; const { TabPane } = Tabs;
const SchemeConfig = () => { const SchemeConfig = () => {
const callback = () => {};
const callback = () => {
}
return ( return (
<PageContainer> <PageContainer>
...@@ -29,13 +26,11 @@ const SchemeConfig = () => { ...@@ -29,13 +26,11 @@ const SchemeConfig = () => {
<ProjectMessage /> <ProjectMessage />
</TabPane> </TabPane>
<TabPane tab="方案配置" key="4"> <TabPane tab="方案配置" key="4">
<SolutionConfig/> <SolutionConfig />
</TabPane> </TabPane>
</Tabs> </Tabs>
</div> </div>
</PageContainer> </PageContainer>
) );
};
}
export default SchemeConfig; export default SchemeConfig;
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Form, Modal, Input, Select, AutoComplete, Button, notification } from 'antd'; import { Form, Modal, Input, Select, AutoComplete, Button, notification } from 'antd';
import styles from '../SchemeConfig.less' import styles from '../SchemeConfig.less';
import {
GetGISServerMapList,
publisService
} from '@/services/webConfig/api';
import { GetGISServerMapList, publisService } from '@/services/webConfig/api';
const { Option } = Select; const { Option } = Select;
const AddModal = props => { const AddModal = props => {
const { callBackSubmit = () => { }, type, formObj, visible,solutionNames } = props; const { callBackSubmit = () => {}, type, formObj, visible, solutionNames } = props;
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [workSpace, setWorkSpace] = useState(''); const [workSpace, setWorkSpace] = useState('');
const [serviceName, setServicename] = useState([{ const [serviceName, setServicename] = useState([
{
value: 'geoserver', value: 'geoserver',
item: 'geoserver' item: 'geoserver',
}]); },
]);
const [workList, setWorkList] = useState([]); const [workList, setWorkList] = useState([]);
const [gsIp, setGsIp] = useState([]); const [gsIp, setGsIp] = useState([]);
const [form] = Form.useForm(); const [form] = Form.useForm();
...@@ -38,8 +36,8 @@ const AddModal = props => { ...@@ -38,8 +36,8 @@ const AddModal = props => {
gsPwd: obj.password, gsPwd: obj.password,
serviceName: obj.name, serviceName: obj.name,
solution: solutionNames, solution: solutionNames,
} };
publisService(query,{timeout:120000}) publisService(query, { timeout: 120000 })
.then(res => { .then(res => {
setLoading(false); setLoading(false);
if (res.success) { if (res.success) {
...@@ -50,8 +48,8 @@ const AddModal = props => { ...@@ -50,8 +48,8 @@ const AddModal = props => {
duration: 3, duration: 3,
description: '新增成功', description: '新增成功',
}); });
setWorkList([]) setWorkList([]);
handlelocalStorage('add',obj.serviceadress, obj.servicename) handlelocalStorage('add', obj.serviceadress, obj.servicename);
} else { } else {
notification.error({ notification.error({
message: '提示', message: '提示',
...@@ -73,9 +71,7 @@ const AddModal = props => { ...@@ -73,9 +71,7 @@ const AddModal = props => {
}); });
}; };
const onFinish = value => {};
const onFinish = value => { };
useEffect(() => { useEffect(() => {
switch (type) { switch (type) {
case 'add': case 'add':
...@@ -84,12 +80,12 @@ const AddModal = props => { ...@@ -84,12 +80,12 @@ const AddModal = props => {
if (localStorageData) { if (localStorageData) {
gsIp = localStorageData.map(item => ({ gsIp = localStorageData.map(item => ({
value: item.gsIp, value: item.gsIp,
item: item.gsIp item: item.gsIp,
})); }));
} }
setGsIp(gsIp) setGsIp(gsIp);
let localIps = ['192.168.12.7', '192.168.19.100'] let localIps = ['192.168.12.7', '192.168.19.100'];
let port = localIps.includes(gsIp) ? 8080 : 8088 let port = localIps.includes(gsIp) ? 8080 : 8088;
form.setFieldsValue({ servicename: serviceName[0].value, port, ...formObj }); form.setFieldsValue({ servicename: serviceName[0].value, port, ...formObj });
break; break;
case 'edit': case 'edit':
...@@ -103,7 +99,7 @@ const AddModal = props => { ...@@ -103,7 +99,7 @@ const AddModal = props => {
//存储到localstorage //存储到localstorage
const handlelocalStorage = (type, gsIp, gisAppName) => { const handlelocalStorage = (type, gsIp, gisAppName) => {
if (!localStorage) return null; if (!localStorage) return null;
let result = JSON.parse(localStorage.getItem('metaData')) let result = JSON.parse(localStorage.getItem('metaData'));
if (type == 'get') { if (type == 'get') {
return result; return result;
} }
...@@ -111,22 +107,24 @@ const AddModal = props => { ...@@ -111,22 +107,24 @@ const AddModal = props => {
if (!result) result = []; if (!result) result = [];
result.push({ result.push({
gsIp, gsIp,
gisAppName: [{ gisAppName: [
{
value: gisAppName, value: gisAppName,
item: gisAppName item: gisAppName,
}] },
}) ],
localStorage.setItem('metaData', JSON.stringify(result)) });
return localStorage.setItem('metaData', JSON.stringify(result));
return;
} }
let data = result.find(item => item.gsIp == gsIp) let data = result.find(item => item.gsIp == gsIp);
let isHasGisAppName = data.gisAppName.find(item => item.value == gisAppName); let isHasGisAppName = data.gisAppName.find(item => item.value == gisAppName);
if (isHasGisAppName) return; if (isHasGisAppName) return;
data.gisAppName.push({ data.gisAppName.push({
value: gisAppName, value: gisAppName,
item: gisAppName item: gisAppName,
}) });
localStorage.setItem('metaData', JSON.stringify(result)) localStorage.setItem('metaData', JSON.stringify(result));
}; };
const layout = { const layout = {
...@@ -139,11 +137,12 @@ const AddModal = props => { ...@@ -139,11 +137,12 @@ const AddModal = props => {
}, },
}; };
//选择工作空间 //选择工作空间
const selectWorkspace = () => { const selectWorkspace = () => {
let obj = form.getFieldsValue(); let obj = form.getFieldsValue();
form.validateFields(['serviceadress', 'port', 'servicename', 'user', 'password']).then(validate => { form
.validateFields(['serviceadress', 'port', 'servicename', 'user', 'password'])
.then(validate => {
if (validate) { if (validate) {
let query = { let query = {
GISServerIP: obj.serviceadress, GISServerIP: obj.serviceadress,
...@@ -153,41 +152,37 @@ const AddModal = props => { ...@@ -153,41 +152,37 @@ const AddModal = props => {
gsPwd: obj.password, gsPwd: obj.password,
isGeoServer: true, isGeoServer: true,
_version: 9999, _version: 9999,
} };
GetGISServerMapList(query).then(res => { GetGISServerMapList(query).then(res => {
if (Array.isArray(res.data)) { if (Array.isArray(res.data)) {
const defaultValue= res.data[0]||'' const defaultValue = res.data[0] || '';
form.setFieldsValue({ name:defaultValue,workname:defaultValue}); form.setFieldsValue({ name: defaultValue, workname: defaultValue });
setWorkList(res.data) setWorkList(res.data);
setWorkSpace(defaultValue) setWorkSpace(defaultValue);
} } else {
else {
notification.error({ notification.error({
message: '提示', message: '提示',
duration: 3, duration: 3,
description: '获取工作空间失败', description: '获取工作空间失败',
}); });
} }
}) });
} }
}) });
}; };
//选择工作空间 //选择工作空间
const handleWorkspace = (value) => { const handleWorkspace = value => {
form.setFieldsValue({ form.setFieldsValue({
workname: value, workname: value,
name:value name: value,
}) });
setWorkSpace(value) setWorkSpace(value);
} };
const selectIp = (value)=>{ const selectIp = value => {
let localIps = ['192.168.12.7', '192.168.19.100'] let localIps = ['192.168.12.7', '192.168.19.100'];
let port = localIps.includes(value) ? 8080 : 8088 let port = localIps.includes(value) ? 8080 : 8088;
form.setFieldsValue({ port,serviceadress:value }); form.setFieldsValue({ port, serviceadress: value });
};
}
return ( return (
<Modal <Modal
title={`${type === 'add' ? '元数据发布' : '编辑'}`} title={`${type === 'add' ? '元数据发布' : '编辑'}`}
...@@ -211,11 +206,7 @@ const AddModal = props => { ...@@ -211,11 +206,7 @@ const AddModal = props => {
name="serviceadress" name="serviceadress"
rules={[{ required: true, message: '请选择服务名' }]} rules={[{ required: true, message: '请选择服务名' }]}
> >
<AutoComplete <AutoComplete placeholder="请输入GIS服务器地址" options={gsIp} onSelect={selectIp} />
placeholder="请输入GIS服务器地址"
options={gsIp}
onSelect={selectIp}
/>
</Item> </Item>
<Item <Item
label="GIS服务器端口" label="GIS服务器端口"
...@@ -230,10 +221,7 @@ const AddModal = props => { ...@@ -230,10 +221,7 @@ const AddModal = props => {
name="servicename" name="servicename"
rules={[{ required: true, message: '请输入GIS服务器名' }]} rules={[{ required: true, message: '请输入GIS服务器名' }]}
> >
<AutoComplete <AutoComplete placeholder="Email" options={serviceName} />
placeholder="Email"
options={serviceName}
/>
</Item> </Item>
<Item <Item
label="用户名称" label="用户名称"
...@@ -255,10 +243,25 @@ const AddModal = props => { ...@@ -255,10 +243,25 @@ const AddModal = props => {
rules={[{ required: true, message: '请选择工作空间名称' }]} rules={[{ required: true, message: '请选择工作空间名称' }]}
> >
<div className={styles.imgList}> <div className={styles.imgList}>
<Select onChange={handleWorkspace} value ={workSpace}> <Select onChange={handleWorkspace} value={workSpace} style={{ width: '310px' }}>
{workList.length ? workList.map((item, index) => { return <Option key={index} value={item}>{item}</Option> }) : ''} {workList.length
? workList.map((item, index) => {
return (
<Option key={index} value={item}>
{item}
</Option>
);
})
: ''}
</Select> </Select>
<Button style={{ marginLeft: '0.5rem' }} onClick={() => { selectWorkspace() }}>选择工作空间</Button> <Button
style={{ marginLeft: '0.5rem' }}
onClick={() => {
selectWorkspace();
}}
>
选择工作空间
</Button>
</div> </div>
</Item> </Item>
<Item <Item
......
import { Space, Table, Button, Popconfirm, notification, Spin } from 'antd'; import { Space, Table, Button, Popconfirm, notification, Spin } from 'antd';
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import styles from '../SchemeConfig.less' import styles from '../SchemeConfig.less';
import { import {
GetVectorService, deleteVectorService, getSolutionList, updatePublishedMetaData GetVectorService,
deleteVectorService,
getSolutionList,
updatePublishedMetaData,
} from '@/services/webConfig/api'; } from '@/services/webConfig/api';
import AddModal from './AddModal' import AddModal from './AddModal';
import PreviewModal from './VectorPreviewModal' import PreviewModal from './VectorPreviewModal';
const VectorData = props => { const VectorData = props => {
const [treeLoading, setTreeLoading] = useState(false);// 弹窗显示 const [treeLoading, setTreeLoading] = useState(false); // 弹窗显示
const [tileData, setTileData] = useState([]); // table表格数据 const [tileData, setTileData] = useState([]); // table表格数据
const [visible, setVisible] = useState(false); // 弹窗 const [visible, setVisible] = useState(false); // 弹窗
const [previewVisible, setPreviewVisible] = useState(false); // 预览弹窗 const [previewVisible, setPreviewVisible] = useState(false); // 预览弹窗
...@@ -16,37 +19,37 @@ const VectorData = props => { ...@@ -16,37 +19,37 @@ const VectorData = props => {
const [type, setType] = useState(''); // 弹窗类型 const [type, setType] = useState(''); // 弹窗类型
const [solutionNames, setSolutionNames] = useState(''); const [solutionNames, setSolutionNames] = useState('');
const [formObj, setFormObj] = useState({ user: 'admin', password: 'geoserver' }); const [formObj, setFormObj] = useState({ user: 'admin', password: 'geoserver' });
const [currentMetaData, setCurrentMetaData] = useState(null) const [currentMetaData, setCurrentMetaData] = useState(null);
const columns = [ const columns = [
{ {
title: '服务名', title: '服务名',
dataIndex: 'ServiceName', dataIndex: 'ServiceName',
key: 'ServiceName', key: 'ServiceName',
align: 'center' align: 'center',
}, },
{ {
title: 'IP', title: 'IP',
dataIndex: 'GISServerIP', dataIndex: 'GISServerIP',
key: 'GISServerIP', key: 'GISServerIP',
align: 'center' align: 'center',
}, },
{ {
title: '端口', title: '端口',
dataIndex: 'GISServerPort', dataIndex: 'GISServerPort',
key: 'GISServerPort', key: 'GISServerPort',
align: 'center' align: 'center',
}, },
{ {
title: '工程名', title: '工程名',
dataIndex: 'GISServerProjectName', dataIndex: 'GISServerProjectName',
key: 'GISServerProjectName', key: 'GISServerProjectName',
align: 'center' align: 'center',
}, },
{ {
title: '发布时间', title: '发布时间',
dataIndex: 'publishTime', dataIndex: 'publishTime',
key: 'publishTime', key: 'publishTime',
align: 'center' align: 'center',
}, },
{ {
title: '编辑', title: '编辑',
...@@ -56,7 +59,12 @@ const VectorData = props => { ...@@ -56,7 +59,12 @@ const VectorData = props => {
<Button type="primary" size="small" onClick={() => previewMetaData(record, index)}> <Button type="primary" size="small" onClick={() => previewMetaData(record, index)}>
预览 预览
</Button> </Button>
<Button type="primary" size="small" loading={loading[index]} onClick={() => enterLoading(record, index)}> <Button
type="primary"
size="small"
loading={loading[index]}
onClick={() => enterLoading(record, index)}
>
更新 更新
</Button> </Button>
<div onClick={e => e.stopPropagation()}> <div onClick={e => e.stopPropagation()}>
...@@ -76,25 +84,25 @@ const VectorData = props => { ...@@ -76,25 +84,25 @@ const VectorData = props => {
</Space> </Space>
), ),
}, },
]; ];
//更新 //更新
const enterLoading = (record, index) => { const enterLoading = (record, index) => {
const newLoadings = [...loading]; const newLoadings = [...loading];
newLoadings[index] = true newLoadings[index] = true;
setLoading(newLoadings) setLoading(newLoadings);
let query = { let query = {
serviceName: record.ServiceName, serviceName: record.ServiceName,
_version: 9999, _version: 9999,
solution: solutionNames solution: solutionNames,
} };
updatePublishedMetaData(query).then(res => { updatePublishedMetaData(query)
.then(res => {
const newLoadings = [...loading]; const newLoadings = [...loading];
newLoadings[index] = false newLoadings[index] = false;
setLoading(newLoadings) setLoading(newLoadings);
if (res.success) { if (res.success) {
setFlag(flag + 1) setFlag(flag + 1);
notification.success({ notification.success({
message: '提示', message: '提示',
duration: 3, duration: 3,
...@@ -106,45 +114,45 @@ const VectorData = props => { ...@@ -106,45 +114,45 @@ const VectorData = props => {
duration: 3, duration: 3,
description: '更新元数据失败', description: '更新元数据失败',
}); });
}; }
}).catch(err => { })
.catch(err => {
const newLoadings = [...loading]; const newLoadings = [...loading];
newLoadings[index] = false newLoadings[index] = false;
setLoading(newLoadings) setLoading(newLoadings);
notification.error({ notification.error({
message: '提示', message: '提示',
duration: 3, duration: 3,
description: '服务无法访问', description: '服务无法访问',
}); });
}) });
};
} const previewMetaData = record => {
const previewMetaData = (record) => { setCurrentMetaData(record);
setCurrentMetaData(record) setPreviewVisible(true);
setPreviewVisible(true) };
}
const solutionName = () => { const solutionName = () => {
getSolutionList({ getSolutionList({
_version: 9999 _version: 9999,
}).then(res => { }).then(res => {
setSolutionNames(res.currentSolution) setSolutionNames(res.currentSolution);
}) });
} };
const onSubmit = prop => { const onSubmit = prop => {
setVisible(false); setVisible(false);
setFlag(flag + 1) setFlag(flag + 1);
}; };
const delConfirm = (record) => { const delConfirm = record => {
console.log(' record.ServiceName', record.ServiceName.split(".")); console.log(' record.ServiceName', record.ServiceName.split('.'));
let query = { let query = {
serviceName: record.ServiceName.split(".")[0], serviceName: record.ServiceName.split('.')[0],
_version: 9999, _version: 9999,
solution: solutionNames solution: solutionNames,
} };
deleteVectorService(query).then(res => { deleteVectorService(query).then(res => {
if (res.success) { if (res.success) {
setFlag(flag + 1) setFlag(flag + 1);
notification.success({ notification.success({
message: '提示', message: '提示',
duration: 3, duration: 3,
...@@ -156,13 +164,13 @@ const VectorData = props => { ...@@ -156,13 +164,13 @@ const VectorData = props => {
duration: 3, duration: 3,
description: '删除元数据失败', description: '删除元数据失败',
}); });
};
})
} }
});
};
const handleAdd = () => { const handleAdd = () => {
setType('add'); setType('add');
setVisible(true); setVisible(true);
} };
useEffect(() => { useEffect(() => {
renderTile(); renderTile();
}, [flag]); }, [flag]);
...@@ -170,14 +178,13 @@ const VectorData = props => { ...@@ -170,14 +178,13 @@ const VectorData = props => {
const renderTile = () => { const renderTile = () => {
setTreeLoading(true); setTreeLoading(true);
solutionName(); solutionName();
GetVectorService().then( GetVectorService().then(res => {
res => { if (res.msg === 'Ok') {
if (res.msg==='Ok') { let arr = [];
let arr = []
res.data.VectorList.map(item => { res.data.VectorList.map(item => {
arr.push(false) arr.push(false);
}) });
setLoading(arr) setLoading(arr);
setTreeLoading(false); setTreeLoading(false);
setTileData(res.data.VectorList); setTileData(res.data.VectorList);
} else { } else {
...@@ -187,19 +194,19 @@ const VectorData = props => { ...@@ -187,19 +194,19 @@ const VectorData = props => {
description: res.message, description: res.message,
}); });
} }
} });
)
}; };
return ( return (
<> <>
<Spin tip="loading..." spinning={treeLoading}> <Spin tip="loading..." spinning={treeLoading}>
<div className={styles.tileBtn}> <div className={styles.tileBtn}>
<Button type="primary" onClick={() => { <Button
type="primary"
onClick={() => {
handleAdd(); handleAdd();
}} > }}
>
新增 新增
</Button> </Button>
</div> </div>
...@@ -210,12 +217,9 @@ const VectorData = props => { ...@@ -210,12 +217,9 @@ const VectorData = props => {
rowKey="CreateTime" rowKey="CreateTime"
scroll={{ y: 400 }} scroll={{ y: 400 }}
pagination={{ pagination={{
showTotal: (total, range) => showTotal: (total, range) => `第${range[0]}-${range[1]} 条/共 ${total} 条`,
`第${range[0]}-${range[1]} 条/共 ${total} 条`
}} }}
> />
</Table>
<AddModal <AddModal
visible={visible} visible={visible}
onCancel={() => setVisible(false)} onCancel={() => setVisible(false)}
...@@ -231,6 +235,6 @@ const VectorData = props => { ...@@ -231,6 +235,6 @@ const VectorData = props => {
/> />
</Spin> </Spin>
</> </>
) );
} };
export default VectorData export default VectorData;
\ No newline at end of file
...@@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react'; ...@@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react';
import { Form, Modal, Row, Col, Input, Select, notification } from 'antd'; import { Form, Modal, Row, Col, Input, Select, notification } from 'antd';
const VideoModal = props => { const VideoModal = props => {
const { callBackSubmit = () => { }, visible, onCancel, obj } = props; const { callBackSubmit = () => {}, visible, onCancel, obj } = props;
return ( return (
<Modal <Modal
...@@ -15,9 +15,17 @@ const VideoModal = props => { ...@@ -15,9 +15,17 @@ const VideoModal = props => {
footer={[]} footer={[]}
> >
<div className="pp"> <div className="pp">
< iframe style={{ border: 0, width: "100%", height: 630, }} src={window.location.origin + `/web4/video/indexAll.html?ID=${obj.EquipmentCode}&skipCheck=true&name=${obj.Name}&disk=${obj.RecorderName}&site=null`} /> <iframe
style={{ border: 0, width: '100%', height: 630 }}
src={
window.location.origin +
`/web4/video/indexAll.html?ID=${obj.EquipmentCode}&skipCheck=true&name=${
obj.Name
}&disk=${obj.RecorderName}&site=null`
}
/>
</div> </div>
</Modal> </Modal>
) );
} };
export default VideoModal export default VideoModal;
\ No newline at end of file
...@@ -25,7 +25,6 @@ import RoleManage from '@/pages/userCenter/roleManage/RoleManage'; ...@@ -25,7 +25,6 @@ import RoleManage from '@/pages/userCenter/roleManage/RoleManage';
import SiteManage from '../pages/userCenter/siteManage/SiteManage'; import SiteManage from '../pages/userCenter/siteManage/SiteManage';
import Dictionary from '../pages/dataCenter/dictionary'; import Dictionary from '../pages/dataCenter/dictionary';
import Dictionary1 from '../pages/dataCenter/dictionary1';
// import Search from '../pages/dataCenter/search'; // import Search from '../pages/dataCenter/search';
import ServiceLog from '../pages/log/serviceLog'; import ServiceLog from '../pages/log/serviceLog';
import LoginLog from '../pages/log/loginLog'; import LoginLog from '../pages/log/loginLog';
...@@ -381,14 +380,8 @@ export default { ...@@ -381,14 +380,8 @@ export default {
routes: [ routes: [
{ {
path: '/dataCenter/dictionary', path: '/dataCenter/dictionary',
name: '数据字典1',
hideMenu: true,
component: Dictionary,
},
{
path: '/dataCenter/dictionary1',
name: '数据字典', name: '数据字典',
component: Dictionary1, component: Dictionary,
}, },
// { // {
// path: '/dataCenter/search', // path: '/dataCenter/search',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment