/* 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, } from '@/services/PatrolFeedback/api'; import { GetCM_Event_LoadEventTable, CM_Event_LoadDepartmentAndRoles, } from '@/services/standingBook/api'; import RMSComponents from '@/components/RolePmSite/index'; 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 AddModal = props => { const { callBackSubmit = () => {}, visible, type, formObj, keepTableData, onClose } = 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 [form] = Form.useForm(); const [formAdd] = Form.useForm(); const { Item } = Form; const { TreeNode } = TreeSelect; useEffect(() => { getEventData(); // 获取所有关联事件数据 getGisPatrolObject(); if (visible) { if (type === 'edit') { CM_Feedback_QueryPatrolFeedback({ id: formObj.id }).then(res => { form.setFieldsValue({ ...res.data }); console.log(res.data); if (!res.data.businessGroup) { form.setFieldsValue({ businessGroup: '区域巡检', gisLayer: res.data.gisServerName ? `${res.data.gisServerName}&${res.data.gisLayer}` : res.data.gisLayer, }); } else { form.setFieldsValue({ businessGroup: res.data.businessGroup.split(','), gisLayer: res.data.gisServerName ? `${res.data.gisServerName}&${res.data.gisLayer}` : res.data.gisLayer, }); } 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 { formAdd.resetFields(); form.resetFields(); setKeepTree([]); setKeepData(''); keep.current = []; setKeepAll([]); } }, [visible]); // 获取字段名数据 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 = () => { GetGisPatrolObject().then(res => { if (res.code === '0') { setMenuWebList(res.data); } 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 = () => { CM_Feedback_LoadFeedbackTables().then(res => { if (res.code === 0) { setFeedbackTable(res.data); } }); 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 = () => { formAdd.validateFields().then(validate1 => { if (validate1) { form.validateFields().then(validate => { if (validate) { let obj = lodash.cloneDeep(form.getFieldsValue()); 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(); let list = []; let groupNameSever = ''; if (obj.gisLayer && obj.gisLayer.indexOf('&') !== -1) { list = obj.gisLayer.split('&'); obj.gisLayer = list[1]; groupNameSever = list[0]; } if (type == 'add') { CM_Feedback_OperatePatrolFeedback({ ...obj, gisServerName: groupNameSever, 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, gisServerName: groupNameSever, 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 pickFiled = fileds => { if (form.getFieldsValue().tableName) { let pp = formateArrDataA(nu, 'groupName'); if (form.getFieldValue(fileds)) { let ab = form.getFieldValue(fileds).split(','); let arr = Object.keys(pp); let b = []; let a = []; arr.map((item, index) => { pp[item].map((i, j) => { b.push(i); }); }); ab.map((item, index) => { if (b.includes(item) == false) { if (item == '') { a = []; } else { a.push(item); } } }); if (a.length > 0) { pp.外部字段 = a; arr.push('外部字段'); } setFiled(pp); setCheckedList1(form.getFieldValue(fileds).split(',')); setPickItem(fileds); setIsVisibleFields(true); } else { setFiled(pp); setCheckedList1([]); setPickItem(fileds); setIsVisibleFields(true); } } else { notification.warning({ message: '提示', duration: 3, description: '请先选择反馈表', }); } }; const pickFiled1 = fileds => { if (form.getFieldValue(fileds)) { setCheckedList1(form.getFieldValue(fileds).split(',')); setPickItem(fileds); setIsVisibleRoles(true); } else { setCheckedList1([]); setPickItem(fileds); setIsVisibleRoles(true); } }; 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); } // let data = keepAll; // data.map(k => { // console.log(k); // k.children.map((j, h) => { // console.log(j); // if (to.indexOf(j.name) != -1) { // console.log(j); // k.children.splice(h, 1); // } // }); // }); // console.log(data); // setKeepTree(data); }; const treeSelectOnchange = e => { setTreeSelectValue(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 mode="multiple" allowClear> <Option key="区域巡检" value="区域巡检"> 区域巡检 </Option> <Option key="DMA巡检" value="DMA巡检"> DMA巡检 </Option> </Select> </Item> </Col> <Col span={23}> <Item label="分组" name="groupType" labelCol={{ span: 4 }}> <Input placeholder="请输入分组名称" /> </Item> </Col> <Col span={23}> <Item label="GIS图层" name="gisLayer" labelCol={{ span: 4 }} rules={[ { required: true, message: '请选择GIS图层', }, ]} > <TreeSelect showSearch value={treeSelectValue} dropdownStyle={{ maxHeight: 400, overflow: 'auto' }} placeholder="请选择GIS图层" allowClear treeDefaultExpandAll showCheckedStrategy onChange={treeSelectOnchange} > {menuWebList ? ( menuWebList.map(i => mapTree(i)) ) : ( <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} /> )} </TreeSelect> </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 ? feedbackTable.map((item, index) => ( <Option key={index} value={item.text}> {item.text} </Option> )) : ''} </Select> </Item> </Col> <Col span={23}> <Item label="字段集" name="fields" labelCol={{ span: 4 }}> <div style={{ display: 'flex' }}> <Item name="fields" style={{ marginBottom: 0, width: '100%' }}> <Input placeholder="请选择字段集" allowClear /> </Item> <Button type="dashed" onClick={() => pickFiled('fields')} icon={<PlusOutlined style={{ marginTop: '5px' }} />} style={{ marginLeft: '10px', width: '70px' }} /> </div> </Item> </Col> {/* <Col span={23}> <Item label="异常值" name="exceptionValue" labelCol={{ span: 4 }}> <Input placeholder="请输入异常值" /> </Item> </Col> */} {/* <Col span={23}> <Item label="触发事件" name="eventName" labelCol={{ span: 4 }}> <Select placeholder="选择触发事件" showSearch> {feedbackEvent ? feedbackEvent.map((item, index) => ( <Option key={index} value={item.Name}> {item.Name} </Option> )) : ''} </Select> </Item> </Col> */} <Col span={23}> <Item label="权限" name="roles" labelCol={{ span: 4 }} rules={[ { required: true, message: '请选择权限', }, ]} > <div style={{ display: 'flex' }}> <Item name="roles" style={{ marginBottom: 0, width: '100%' }}> <Input placeholder="请选择字段集" allowClear /> </Item> <Button type="dashed" onClick={() => pickFiled1('roles')} icon={<PlusOutlined style={{ marginTop: '5px' }} />} style={{ marginLeft: '10px', width: '70px' }} /> </div> </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> {form.getFieldsValue().feedbackRule !== '' ? ( <Col span={23}> <Item label="关联事件" name="relationEvent" labelCol={{ span: 4 }} rules={[{ required: true, message: '请选择关联事件类型' }]} > <Select placeholder="选择关联事件类型" onChange={e => onChangeEvent(e)} showSearch allowClear > {eventData ? eventData.map((item, index) => ( <Option key={index} value={item}> {item} </Option> )) : ''} </Select> </Item> </Col> ) : ( <Col span={23}> <Item label="关联事件" name="relationEvent" labelCol={{ span: 4 }}> <Select placeholder="选择关联事件类型" onChange={e => onChangeEvent(e)} showSearch allowClear > {eventData ? 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(); }, }, ]} > {/* <Select placeholder="选择字段名" // onSelect={changTable} // optionLabelProp="key" showSearch style={{ width: '159px' }} > {keepData ? keepData.map((item, index) => ( <Option key={item.key} value={item.key}> {item.key} </Option> )) : ''} </Select> */} <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> {/* <Col span={23}> <Item label="分组" name="groupType" labelCol={{ span: 4 }}> <Input placeholder="请输入分组" /> </Item> </Col> */} </Row> </Form> <ChangeFields visible={isVisibleFields} callBackSubmit={onOK1} onCancel={() => setIsVisibleFields(false)} newCheckedList={checkedList1} filed={filed} pickItem={pickItem} formObj={formObj} /> {/* <ChangeRoles visible={isVisibleRoles} onCancel={() => setIsVisibleRoles(false)} callBackSubmit={onOK} newCheckedList={checkedList1} filed11={filed1} pickItem={pickItem} /> */} <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 AddModal;