Commit 6e1da2b1 authored by 田翔's avatar 田翔

fix: GIS数据回填增加配置,维保方案增加工单巡检

parent ad36ad47
Pipeline #91506 passed with stages
......@@ -129,7 +129,7 @@
"jszip": "^3.10.1",
"lodash": "4.17.11",
"minimist": "1.2.0",
"panda-xform": "6.8.7",
"panda-xform": "6.8.8",
"parseForm": "^2.3.8",
"prop-types": "15.7.2",
"qrcode.react": "^3.1.0",
......
/* eslint-disable prefer-destructuring */
/* eslint-disable no-else-return */
/* eslint-disable prefer-promise-reject-errors */
/* eslint-disable guard-for-in */
/* eslint-disable no-restricted-syntax */
/* eslint-disable indent */
/* eslint-disable camelcase */
/* eslint-disable no-unused-expressions */
import React, { useState, useEffect, useRef } from 'react';
import {
Drawer,
Form,
Input,
notification,
Row,
Col,
Select,
Button,
Space,
TreeSelect,
Empty,
message,
} from 'antd';
import { PlusOutlined, SwapOutlined, MinusCircleOutlined } from '@ant-design/icons';
import styles from './patrolFeedback.less';
import {
CM_Feedback_LoadFeedbackTables,
CM_Feedback_LoadFeedbackEvent,
CM_Feedback_OperatePatrolFeedback,
CM_Feedback_LoadFields,
CM_Feedback_QueryPatrolFeedback,
GetTaskSyncField,
GetGisPatrolObject,
GetGisFeedbackTableFields,
GetDictionaryInfoAll,
LoadLedgers,
} from '@/services/PatrolFeedback/api';
import {
GetCM_Event_LoadEventTable,
CM_Event_LoadDepartmentAndRoles,
GetLayersShareField,
} from '@/services/standingBook/api';
import RMSComponents from '@/components/RolePmSite/index';
import { GetDataDictionaryList } from '@/services/dataCenter/api';
import ChangeRoles from './ChangeRoles';
import ChangeFields from './ChangeFields';
import logo from '@/assets/images/icons/值映射.png';
import lodash from 'lodash';
import { reloadTableFields } from '@/services/tablemanager/tablemanager';
import RuleConfig from '@/components/RuleConfig';
const { Option } = Select;
const AddModalCase = props => {
const {
callBackSubmit = () => { },
visible,
type,
formObj,
keepTableData,
onClose,
pipeArr,
} = props;
const [filed, setFiled] = useState({}); // 传给子组件列表数据
const [filed1, setFiled1] = useState({}); // 传给子组件列表数据
const [pickItem, setPickItem] = useState(''); // 复选框数据填入项
const [checkedList1, setCheckedList1] = useState([]); // 最新选择数据
const [feedbackTable, setFeedbackTable] = useState([]);
const [feedbackEvent, setFeedbackEvent] = useState([]);
const [isVisibleFields, setIsVisibleFields] = useState(false);
const [isVisibleRoles, setIsVisibleRoles] = useState(false);
const [nu, setNu] = useState([]);
const [nu1, setNu1] = useState([]);
const [groupName, setGroupName] = useState('角色');
const [chooseGroupName, setChooseGroupName] = useState(['角色', '部门', '站点']);
const [keepFiled, setKeepFiled] = useState([]);
const [eventData, setEventData] = useState([]);
const [keepData, setKeepData] = useState('');
const keep = useRef([]); // 保存初始完整任务同步事件字段
const [keepAllData, setKeepAllData] = useState([]); // 保存所有关联事件类型数据
const [keepTree, setKeepTree] = useState([]);
const [keepAll, setKeepAll] = useState([]); // 保存所选关联事件下完整的字段值
const [treeSelectValue, setTreeSelectValue] = useState([]);
const [menuWebList, setMenuWebList] = useState([]);
const [showRule, setShowRule] = useState(false);
const [fieldList, setFieldList] = useState([]);
const [layerList, setLayerList] = useState([]);
const [newPipeArr, setNewPipeArr] = useState([]);
const [dataList, setDataList] = useState([]);
const [form] = Form.useForm();
const [formAdd] = Form.useForm();
const { Item } = Form;
const { TreeNode } = TreeSelect;
useEffect(() => {
getEventData(); // 获取所有关联事件数据
getDataList();
if (visible) {
setNewPipeArr(pipeArr);
if (type === 'edit') {
CM_Feedback_QueryPatrolFeedback({ id: formObj.id }).then(res => {
form.setFieldsValue({ ...res.data, gisLayer: res.data?.gisLayer ? res.data?.gisLayer.split(',') : [] });
// if (!res.data.businessGroup) {
// form.setFieldsValue({ businessGroup: '工单巡检', });
// } else {
// form.setFieldsValue({ businessGroup: res.data.businessGroup.split(','), });
// }
if (res.data.inspectionType) {
let arr = res.data.inspectionType.split(',');
let newArr = arr.filter(i => {
return i !== '';
});
form.setFieldsValue({
inspectionType: newArr,
});
} else {
form.setFieldsValue({
inspectionType: [],
});
}
getGisPatrolObject(res.data.gisServerName);
onChangeEvent(res.data.relationEvent, aa); // 改变关联事件类型
getFeedbackTable();
getRoles();
getFields(res.data.tableName);
let aa = JSON.parse(res.data.mappingFields);
onChangeTableName(formObj.tableName, aa);
});
} else {
form.setFieldsValue({ businessGroup: '工单巡检', feedbackRule: '' });
getGetTaskSyncField();
getFeedbackTable();
getRoles();
}
} else {
setLayerList([]);
setNewPipeArr([]);
formAdd.resetFields();
form.resetFields();
setKeepTree([]);
setKeepData('');
keep.current = [];
setKeepAll([]);
}
}, [visible]);
const getDataList = () => {
GetDictionaryInfoAll({ level: '管网巡检任务性质' }).then(res => {
if (res.code === 0) {
setDataList(res.data);
} else {
setDataList([]);
}
});
};
// 获取字段名数据
const getGetTaskSyncField = (e, newKeep) => {
if (e) {
// 编辑时
let datalist = [...e];
let str = newKeep && newKeep[0].TableName;
let arr = [];
datalist.forEach(i => {
if (i.fromTable) {
arr.push({ fromField: `${i.fromField}%${i.fromTable}`, toField: i.toField });
} else {
arr.push({
fromField: `${i.fromField}%${str ? str : ''}`,
toField: i.toField,
});
}
});
setTimeout(() => {
formAdd.setFieldsValue({ parmars: arr }); // 处理数据让下拉框回显title值
}, 0);
} else {
setKeepData([]);
}
};
const getGisPatrolObject = val => {
GetGisPatrolObject({ serverName: val }).then(res => {
if (res.code === '0') {
setLayerList(res.data[0]?.items);
} else {
notification.error({
message: '提示',
duration: 3,
description: res.msg,
});
}
console.log(res);
});
};
const getReloadTableField = (e, i) => {
reloadTableFields({
tableName: e,
}).then(res => {
if (res.msg === 'Ok') {
console.log(res.data.root);
console.log(i);
setKeepAll(res.data.root);
// 编辑时过滤下l拉框初始数据
if (i) {
let aa = i;
let to = [];
aa.map(j => {
if (j && j.toField) {
to.push(j.toField);
}
});
let lastTo = [];
res.data.root.map(b => {
if (to.indexOf(b.name) == -1) {
lastTo.push(b);
}
});
setKeepTree(lastTo);
} else {
setKeepTree(res.data.root);
}
let arrlist = [];
let data = {};
let listArr = [];
res.data.root.map(i => {
arrlist.push(i.name);
});
data.TableFieldNames = arrlist;
data.TableName = e;
listArr.push(data);
let arr = formateArrDataA2(res.data.root, 'group');
let newArr = [];
Object.keys(arr).map((item, index) => {
newArr.push({ type: item, key: index, id: index });
});
let aa = [];
let bb = [];
Object.keys(arr).forEach((item, index) => {
aa.push({ name: item, key: index, ID: index, children: arr[item] });
bb.push(item);
});
console.log(aa, 'aaaaaaaaaaaaa');
// setKeepTree(aa);
// setKeepAll(aa);
// all.current = aa;
}
});
};
const formateArrDataA2 = (initialArr, name) => {
// 判定传参是否符合规则
if (!(initialArr instanceof Array)) {
return '请传入正确格式的数组';
}
if (!name) {
return '请传入对象属性';
}
// 先获取一下这个数组中有多少个"name"
let nameArr = [];
// eslint-disable-next-line no-restricted-syntax
for (let i in initialArr) {
if (nameArr.indexOf(initialArr[i][`${name}`]) === -1) {
nameArr.push(initialArr[i][`${name}`]);
}
}
// 新建一个包含多个list的结果对象
let tempObj = {};
// 根据不同的"name"生成多个数组
for (let k in nameArr) {
for (let j in initialArr) {
if (initialArr[j][`${name}`] == nameArr[k]) {
// 每次外循环时新建一个对应"name"的数组, 内循环时当前数组不变
tempObj[nameArr[k]] = tempObj[nameArr[k]] || [];
tempObj[nameArr[k]].push(initialArr[j]);
}
}
}
for (let keys in tempObj) {
let arr = [];
tempObj[keys].map((item, index) => {
tempObj[keys] = arr;
item.key = index;
arr.push(item);
});
}
return tempObj;
};
// 获取关联事件数据
const getEventData = () => {
GetCM_Event_LoadEventTable().then(res => {
if (res.code === 0) {
let aa = [];
let bb = [];
res.data.map(i => {
i.root.map(j => {
aa.push(j.name);
bb.push(j);
});
});
setKeepAllData(bb);
setEventData(aa);
}
});
};
const getFeedbackTable = () => {
LoadLedgers({ accountType: 'GIS反馈' }).then(res => {
if (res.code === 0) {
console.log('res.data', res.data)
setFeedbackTable(res.data.root);
}
});
CM_Feedback_LoadFeedbackEvent().then(res => {
if (res.code === 0) {
setFeedbackEvent(res.data);
if (type == 'add') {
form.setFieldsValue({ eventName: res.data[0].Name });
}
}
});
};
const getFields = e => {
CM_Feedback_LoadFields(e).then(res => {
if (res.code === 0) {
setNu(res.data);
let data = [];
res.data.forEach(i => {
data.push(i.fieldName);
});
let list = [{ TableName: e, TableFieldNames: data }];
setFieldList(list);
setFiled(formateArrDataA(res.data, 'groupName'));
}
});
};
const getRoles = () => {
CM_Event_LoadDepartmentAndRoles().then(res => {
if (res.code === 0) {
setNu1(res.data);
// setFiled1(formateArrDataA1(res.data, 'groupType'));
setKeepFiled(groupArr(res.data, 'groupType'));
}
});
};
const groupArr = (initialArr, name) => {
let list = {};
initialArr.data.map(i => {
let ar = [];
i.root.map(j => {
let ss = {};
ss.label = j.Name;
ss.value = j.ID.toString();
ar.push(ss);
});
list[i.groupType] = ar;
});
return list;
};
const onSubmit = async () => {
let obj = lodash.cloneDeep(form.getFieldsValue());
const res = await GetLayersShareField({ mapServer: obj.gisServerName, layerNames: obj.gisLayer?.toString() })
if (!res?.data?.length) {
return message.error('多图层没有公共字段')
}
formAdd.validateFields().then(validate1 => {
if (validate1) {
form.validateFields().then(validate => {
if (validate) {
let mappingFields = lodash.cloneDeep(formAdd.getFieldValue('parmars'));
mappingFields &&
mappingFields.forEach(i => {
let data = i.fromField.split('%');
i.fromField = data[0];
i.fromTable = data[1];
});
obj.businessGroup = obj.businessGroup?.toString();
obj.inspectionType = obj.inspectionType?.toString();
obj.gisLayer = obj.gisLayer?.toString();
if (type == 'add') {
CM_Feedback_OperatePatrolFeedback({
...obj,
mappingFields: mappingFields && JSON.stringify(mappingFields),
}).then(res => {
if (res.code === 0) {
onClose();
callBackSubmit();
notification.success({
message: '提示',
duration: 3,
description: type == 'add' ? '添加成功' : '编辑成功',
});
} else {
notification.error({
message: '提示',
duration: 3,
description: res.msg,
});
}
});
} else {
CM_Feedback_OperatePatrolFeedback({
...obj,
id: formObj.id,
mappingFields: mappingFields && JSON.stringify(mappingFields),
}).then(res => {
if (res.code === 0) {
onClose();
callBackSubmit();
notification.success({
message: '提示',
duration: 3,
description: type == 'add' ? '添加成功' : '编辑成功',
});
} else {
notification.error({
message: '提示',
duration: 3,
description: res.msg,
});
}
});
}
}
});
}
});
};
const onChangeTableName = (e, flag) => {
getFields(e);
GetGisFeedbackTableFields({ feedbackTableName: e }).then(res => {
if (res.code === 0) {
let newData = [res.data.DeviceData];
res.data.FeedbackData.length > 0 &&
res.data.FeedbackData.forEach(i => {
newData.push(i);
});
setKeepData(newData);
keep.current = newData;
if (flag) {
getGetTaskSyncField(flag, newData); // 获取字段名数据
}
}
});
};
const formateArrDataA = (initialArr, name) => {
// 判定传参是否符合规则
if (!(initialArr instanceof Array)) {
return '请传入正确格式的数组';
}
if (!name) {
return '请传入对象属性';
}
// 先获取一下这个数组中有多少个"name"
let nameArr = [];
for (let i in initialArr) {
if (nameArr.indexOf(initialArr[i][`${name}`]) === -1) {
nameArr.push(initialArr[i][`${name}`]);
}
}
// 新建一个包含多个list的结果对象
let tempObj = {};
// 根据不同的"name"生成多个数组
for (let k in nameArr) {
for (let j in initialArr) {
if (initialArr[j][`${name}`] == nameArr[k]) {
// 每次外循环时新建一个对应"name"的数组, 内循环时当前数组不变
tempObj[nameArr[k]] = tempObj[nameArr[k]] || [];
tempObj[nameArr[k]].push(initialArr[j]);
}
}
}
for (let keys in tempObj) {
let arr = [];
tempObj[keys].map((item, index) => {
tempObj[keys] = arr;
item.key = index;
arr.push(item);
});
}
Object.keys(tempObj).map((i, j) => {
tempObj[i].map((k, y) => {
tempObj[i][y] = k.fieldName;
});
});
return tempObj;
};
const onOK = prop => {
setIsVisibleRoles(false);
let inputText = {};
inputText[prop.pickItem] = prop.str;
setCheckedList1(prop.stt);
form.setFieldsValue(inputText);
};
const onOK1 = prop => {
setIsVisibleFields(false);
let inputText = {};
inputText[prop.pickItem] = prop.str;
setCheckedList1(prop.stt);
form.setFieldsValue(inputText);
};
// 改变关联事件类型
const onChangeEvent = (e, i) => {
if (!i || !e) {
setKeepData(keep.current);
formAdd.resetFields();
}
let aa = keepAllData.find(i => i.name === e);
if (aa) {
getReloadTableField(aa.tableName, i); // 找到关联事件对应事件表获取对应表的所有字段
}
};
const mapTree = (org, server) => {
const haveChildren = Array.isArray(org.items) && org.items.length > 0;
return haveChildren ? (
<TreeNode value={org.serverName} title={org.serverName} disabled>
{org.items.map(item => mapTree(item, org.serverName))}
</TreeNode>
) : (
<TreeNode value={`${server}&${org.name}`} title={org.name} />
);
};
const changeValue = () => {
let aa = formAdd.getFieldsValue().parmars;
if (aa) {
let from = [];
let to = [];
aa.map(i => {
if (i && i.fromField) {
from.push(i.fromField);
}
if (i && i.toField) {
to.push(i.toField);
}
});
let lastFrom = [];
let lastTo = [];
keep.current.map(j => {
if (from.indexOf(j.key) == -1) {
lastFrom.push(j);
}
});
setKeepData(lastFrom);
keepAll.map(j => {
if (to.indexOf(j.name) == -1) {
lastTo.push(j);
}
});
setKeepTree(lastTo);
}
};
const treeSelectOnchange = e => {
form.setFieldsValue({ gisLayer: [] });
getGisPatrolObject(e);
};
const saveRule = e => {
form.setFieldsValue({ feedbackRule: e });
setShowRule(false);
};
const editRule = () => {
setShowRule(true);
};
const mapTreeFiled = (org, parent) => {
if (org.TableFields) {
return (
<TreeNode value={org.TableName} title={org.TableName} disabled>
{org.TableFields.map(item => mapTreeFiled(item, org.TableName))}
</TreeNode>
);
}
return (
<TreeNode value={`${org.FieldValue}%${parent}`} title={org.FieldName} key={org.FieldName} />
);
};
return (
<Drawer
title="反馈配置"
visible={visible}
destroyOnClose
width="550px"
{...props}
footer={
<Space>
<Button onClick={onSubmit} type="primary">
确定
</Button>
</Space>
}
>
<Form form={form} labelCol={{ span: 7 }} style={{ overflowY: 'scroll' }}>
<Row>
<Col span={23}>
<Item
label="巡检对象"
name="layerName"
labelCol={{ span: 4 }}
rules={[
{
required: true,
message: '请输入巡检对象名称',
},
{
validator: (rule, value) => {
let aa = form.getFieldValue().layerName;
if (type === 'add' && keepTableData.indexOf(aa) != -1) {
return Promise.reject('巡检对象已存在');
} else if (
type === 'edit' &&
keepTableData.indexOf(aa) != -1 &&
aa != formObj.layerName
) {
return Promise.reject('巡检对象已存在');
}
return Promise.resolve();
},
},
]}
>
<Input placeholder="巡检对象名称不可重复" />
</Item>
</Col>
<Col span={23}>
<Item
label="业务划分"
name="businessGroup"
labelCol={{ span: 4 }}
rules={[
{
required: true,
message: '请选择业务划分',
},
]}
>
<Select placeholder="请选择业务划分" showSearch disabled allowClear>
{
['区域巡检', 'DMA巡检', '工单巡检'].map(v => <Option key={v} value={v}>{v}</Option>)
}
</Select>
</Item>
</Col>
<Col span={23}>
<Item
label="GIS服务"
name="gisServerName"
labelCol={{ span: 4 }}
rules={[
{
required: true,
message: '请选择GIS服务',
},
]}
>
<Select placeholder="选择GIS服务" onChange={treeSelectOnchange} showSearch>
{
newPipeArr?.map((item, index) => (
<Option key={index} value={item}>
{item}
</Option>
))
}
</Select>
</Item>
</Col>
<Col span={23}>
<Item
label="GIS图层"
name="gisLayer"
labelCol={{ span: 4 }}
rules={[
{
required: true,
message: '请选择GIS图层',
},
]}
>
<Select placeholder="选择GIS图层" mode="multiple" showSearch >
{
layerList.map((item, index) => (
<Option key={item.id} value={item.name}>
{item.name}
</Option>
))
}
</Select>
</Item>
</Col>
<Col span={23}>
<Item label="GIS条件" name="gisFilterValue" labelCol={{ span: 4 }}>
<Input placeholder="示例:设备级别 = '小区阀门' (设备级别来自图层表字段)" />
</Item>
</Col>
<Col span={23}>
<Item label="反馈表" name="tableName" labelCol={{ span: 4 }}>
<Select placeholder="选择反馈表" onChange={onChangeTableName} showSearch>
{
feedbackTable.map((item, index) => (
<Option key={index} value={item.tableName}>
{item.tableName}
</Option>
))
}
</Select>
</Item>
</Col>
<Col span={23}>
<Item label="反馈联动" name="feedbackRule" labelCol={{ span: 4 }}>
<div
style={{
border: '2px solid #6A98FA',
minHeight: '34px',
lineHeight: '34px',
textAlign: 'center',
}}
onClick={() => {
let obj = form.getFieldsValue().tableName;
if (!obj) {
message.warning('请先选择反馈表!');
} else {
editRule();
}
}}
>
<span>{form.getFieldsValue().feedbackRule}</span>
</div>
</Item>
</Col>
<Col span={23}>
<Item label="关联事件" name="relationEvent" labelCol={{ span: 4 }}>
<Select
placeholder="选择关联事件类型"
onChange={e => onChangeEvent(e)}
showSearch
allowClear
>
{
eventData?.map((item, index) => (
<Option key={index} value={item}>
{item}
</Option>
))
}
</Select>
</Item>
</Col>
<Col span={23}>
<span style={{ fontSize: '12px', color: '#bfbcbc', marginLeft: '80px' }}>
当配置了关联事件后,可配置字段映射规则
</span>
<br />
<span style={{ fontSize: '12px', color: '#bfbcbc', marginLeft: '80px' }}>
配置后,管网巡检发起的工单,可以传递该巡检任务信息
</span>
</Col>
<Col span={4} />
<Col span={19}>
<Item style={{ marginTop: '20px' }}>
<Form name="form" form={formAdd} onFieldsChange={changeValue}>
<Form.List name="parmars">
{(fields, { add, remove }) => (
<>
{fields.map(({ key, name, fieldKey, ...restField }) => (
<Space
key={key}
style={{
display: 'flex',
marginBottom: '5px',
justifyContent: 'center',
}}
align="baseline"
>
<Form.Item
{...restField}
style={{ marginBottom: '5px' }}
name={[name, 'fromField']}
fieldKey={[fieldKey, 'key']}
validateTrigger={['onChange', 'onBlur']}
rules={[
{ required: true, message: '请填写字段名' },
{
validator: (rule, value) => {
if (value) {
let filterValue = formAdd.getFieldsValue().parmars;
let num = filterValue.findIndex(i => i.fromField === value);
let index = rule.field.split('.')[1];
if (num !== undefined && num !== Number(index)) {
return Promise.reject('字段重复');
}
}
return Promise.resolve();
},
},
]}
>
<TreeSelect
showSearch
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
placeholder="请选择字段名"
treeDefaultExpandAll
style={{ width: '159px' }}
showCheckedStrategy
onFocus={() => {
let obj = form.getFieldsValue().tableName;
if (!obj) {
message.warning('请先选择反馈表!');
}
}}
>
{keepData.length > 0 && keepData.map(i => mapTreeFiled(i))}
</TreeSelect>
</Form.Item>
<img src={logo} style={{ height: '24px' }} alt="" />
<Form.Item
{...restField}
style={{ marginBottom: '5px' }}
name={[name, 'toField']}
fieldKey={[fieldKey, 'key']}
rules={[{ required: true, message: '请填写映射字段名' }]}
>
<Select
placeholder="选择映射字段名"
showSearch
style={{ width: '159px' }}
>
{keepTree.length > 0
? keepTree.map((item, index) => (
<>
<Option key={item.name} value={item.name}>
{item.name}
</Option>
</>
))
: ''}
</Select>
</Form.Item>
<MinusCircleOutlined
onClick={() => remove(name)}
style={{ marginLeft: '10px', fontSize: '20px' }}
/>
</Space>
))}
<Form.Item>
<Button
type="dashed"
onClick={() => add()}
block
icon={<PlusOutlined />}
style={{ marginLeft: '-2px' }}
>
添加映射
</Button>
</Form.Item>
</>
)}
</Form.List>
</Form>
</Item>
</Col>
</Row>
</Form>
<ChangeFields
visible={isVisibleFields}
callBackSubmit={onOK1}
onCancel={() => setIsVisibleFields(false)}
newCheckedList={checkedList1}
filed={filed}
pickItem={pickItem}
formObj={formObj}
/>
<RMSComponents
visible={isVisibleRoles}
onCancel={() => setIsVisibleRoles(false)}
callBackSubmit={onOK}
newCheckedList={checkedList1} // 单选框中的值
pickItem={pickItem}
groupName={groupName} // 打开组件展示的分组名,用来首次获取数据
chooseGroupName={chooseGroupName} // 可选分组名
keepFiled={keepFiled}
dataType="name"
/>
<RuleConfig
RuleContent={form.getFieldsValue().feedbackRule || ''}
tableName={form.getFieldsValue().feedbackName}
fieldList={fieldList}
visible={showRule}
handleCancel={() => setShowRule(false)}
onSubumit={e => saveRule(e)}
flag={2}
/>
</Drawer>
);
};
export default AddModalCase;
......@@ -30,13 +30,14 @@ import {
import classnames from 'classnames';
import styles from './patrolFeedback.less';
import AddModal from './AddModal';
import AddModalCase from './AddModalCase';
import SortModal from './SortModal';
import DragTable from '@/components/DragTable/DragTable';
const { Search } = Input;
const patrolFeedback = () => {
const [addVisible, setAddVisible] = useState(false);
const [addVisibleCase, setAddVisibleCase] = useState(false)
const [type, setType] = useState('');
const [formObj, setFormObj] = useState('');
const [treeLoading, setTreeLoading] = useState(false);
......@@ -264,6 +265,7 @@ const patrolFeedback = () => {
let newGroupNum = {
区域巡检: res.data.AreaInspectionCount,
DMA巡检: res.data.DMAInspectionCont,
工单巡检: res.data.CaseInspectionCount,
未分组: res.data.ElseInspectionCont,
};
groupNum.current = newGroupNum;
......@@ -272,29 +274,30 @@ const patrolFeedback = () => {
if (res.data.list.length > 0) {
let area = [];
let dma = [];
let cased = [];
let other = [];
res.data.list.map(i => {
if (i.businessGroup === '区域巡检') {
area.push(i);
} else if (i.businessGroup === 'DMA巡检') {
dma.push(i);
} else if (
i.businessGroup === '区域巡检,DMA巡检' ||
i.businessGroup === 'DMA巡检,区域巡检'
) {
} else if (['区域巡检,DMA巡检', 'DMA巡检,区域巡检'].includes(i.businessGroup)) {
area.push(i);
dma.push(i);
} else if (i.businessGroup === '工单巡检') {
cased.push(i)
} else {
other.push(i);
}
});
data.区域巡检 = area;
data.DMA巡检 = dma;
data.工单巡检 = cased
if (other.length > 0) {
data.未分组 = other;
setGroupName(['区域巡检', 'DMA巡检', '未分组']);
setGroupName(['区域巡检', 'DMA巡检', '工单巡检', '未分组']);
} else {
setGroupName(['区域巡检', 'DMA巡检']);
setGroupName(['区域巡检', 'DMA巡检', '工单巡检']);
}
}
if (searchValue.current) {
......@@ -307,6 +310,7 @@ const patrolFeedback = () => {
}
}
setTableData(data);
console.log('data', data)
let list = [];
res.data.list.map(i => {
list.push(i.layerName);
......@@ -325,11 +329,20 @@ const patrolFeedback = () => {
};
const add = () => {
setAddVisible(true);
console.log('pickItem', pickItem)
if (pickItem === '工单巡检') {
setAddVisibleCase(true);
} else {
setAddVisible(true);
}
setType('add');
};
const editEventType = record => {
setAddVisible(true);
if (record.businessGroup === '工单巡检') {
setAddVisibleCase(true);
} else {
setAddVisible(true);
}
setType('edit');
setFormObj(record);
};
......@@ -600,6 +613,16 @@ const patrolFeedback = () => {
pipeArr={pipeArr}
placement="right"
/>
<AddModalCase
visible={addVisibleCase}
type={type}
onClose={() => setAddVisibleCase(false)}
callBackSubmit={onOK}
formObj={formObj}
keepTableData={keepTableData}
pipeArr={pipeArr}
placement="right"
/>
<SortModal
title="调整顺序"
visible={sortVisible}
......
......@@ -380,7 +380,7 @@ const FlowChart = props => {
}
});
},
onCancel() {},
onCancel() { },
});
};
// 删除提醒
......@@ -395,7 +395,7 @@ const FlowChart = props => {
onOk() {
delNode(delNodeIds, delNodes, delLinks);
},
onCancel() {},
onCancel() { },
});
};
// 删除节点
......@@ -801,9 +801,8 @@ const FlowChart = props => {
{ margin: 4 },
new go.Binding('text', 'nodeDetail', v => {
const obj = JSON.parse(v);
return `节点名称:${obj.NodeName}\n${
obj.roleList.length > 0 ? '承办:' : ''
}${obj.roleList.map(item => item.roleName).join(',')}`;
return `节点名称:${obj.NodeName}\n${obj.roleList.length > 0 ? '承办:' : ''
}${obj.roleList.map(item => item.roleName).join(',')}`;
}),
),
),
......@@ -1146,7 +1145,7 @@ const FlowChart = props => {
toData: arr,
},
];
} else {
} else if (item.tableType === 'relationFormMapping') {
obj.relationFormMapping = [
{
fromData: {
......@@ -1157,6 +1156,17 @@ const FlowChart = props => {
toData: arr,
},
];
} else {
obj.areaTaskFormMapping = [
{
fromData: {
tableName: item.TableName,
filed: item.Fields,
filedShape: item.tableShape,
},
toData: arr,
},
];
}
let json = JSON.stringify(obj);
let newObj = { Config: json, BackfillType: 'GIS', RuleName: item.RuleName };
......
......@@ -193,11 +193,7 @@ const AddModal = props => {
title={
<>
<span style={{ marginRight: '10px' }}>{org.TableName}</span>
{org.type === '关联表单' ? (
<Tag color="green">{org.type}</Tag>
) : (
<Tag color="blue">{org.type}</Tag>
)}
<Tag color={org.type === '关联表单' ? 'blue' : (org.type === '事件工单表' ? 'green' : 'geekblue')}>{org.type}</Tag>
</>
}
disabled
......
......@@ -104,7 +104,7 @@ const ConfigGIS = (props, ref) => {
});
obj.users = users;
}
} else {
} else if (newConfig.relationFormMapping) {
let users = [];
newConfig.relationFormMapping[0].toData.map((x, y) => {
obj[y] = { nodeName: x.tableName, nodeValue: x.filed };
......@@ -127,6 +127,29 @@ const ConfigGIS = (props, ref) => {
});
obj.users = users;
}
} else {
let users = [];
newConfig.areaTaskFormMapping[0].toData.map((x, y) => {
obj[y] = { nodeName: x.tableName, nodeValue: x.filed };
});
obj.Fields = newConfig.areaTaskFormMapping[0].fromData.filed;
obj.ID = index;
obj.RuleName = item.RuleName;
obj.TableName = newConfig.areaTaskFormMapping[0].fromData.tableName;
obj.tableShape = newConfig.areaTaskFormMapping[0].fromData.filedShape;
obj.key = index;
obj.nodeName1 = newConfig.areaTaskFormMapping[0].toData[0].tableName;
obj.nodeValue1 = newConfig.areaTaskFormMapping[0].toData[0].filed;
obj.schemeName = newConfig.areaTaskFormMapping[0].toData[0].mapServer;
obj.tableType = 'areaTaskFormMapping';
if (newConfig.areaTaskFormMapping[0].toData.length > 1) {
newConfig.areaTaskFormMapping[0].toData.map((i, j) => {
if (j !== 0) {
users.push({ nodeName: i.tableName, nodeValue: i.filed });
}
});
obj.users = users;
}
}
return {
...obj,
......@@ -166,7 +189,14 @@ const ConfigGIS = (props, ref) => {
j.type = 'relationFormMapping';
});
});
let arr = [...res.data.FromData, ...res.data.RelationFormData];
res.data.AreaTaskFormData.map(i => {
i.type = '区域任务';
i.TableFields.map(j => {
j.table = i.TableName;
j.type = 'areaTaskFormMapping';
});
});
let arr = [...res.data.FromData, ...res.data.RelationFormData, ...res.data.AreaTaskFormData];
setTableField(arr);
}
});
......
......@@ -55,5 +55,7 @@ export const GetGisFeedbackTableFields = query =>
get(`${PUBLISH_SERVICE}/WorkOrderCenter/GetGisFeedbackTableFields`, query);
// 获取GIS反馈表字段
export const GetDictionaryInfoAll = query =>
get(`/PandaCore/GCK/Common/GetDictionaryInfoAll`, query);
export const LoadLedgers = query => get(`${PUBLISH_SERVICE}/WorkOrderCenter/GetCM_Ledger_LoadLedgers`, query);
// 获取GIS反馈表字段
export const GetDictionaryInfoAll = query => get(`/PandaCore/GCK/Common/GetDictionaryInfoAll`, query);
......@@ -6,7 +6,7 @@
* @LastEditTime: 2023-02-08 17:02:25
* @LastEditors: dengchao 754083046@qq.com
*/
import { CITY_SERVICE, get, PUBLISH_SERVICE, post, postForm } from '../index';
import { CITY_SERVICE, get, PUBLISH_SERVICE, PANDA_GIS, post, postForm } from '../index';
// 加载台账
export const GetCM_Ledger_LoadLedgers = query =>
......@@ -146,3 +146,6 @@ export const Ledger_SaveLedger = data =>
// 获取副台账配置信息
export const Ledger_ParentLedgers = query =>
get(`${PUBLISH_SERVICE}/WorkOrderCenter/Ledger_ParentLedgers`, query);
//获取多图层公共字段
export const GetLayersShareField = query => get(`${PANDA_GIS}/MetaData/GetLayersShareField`, query);
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