import React, { useState, useRef, useEffect } from "react"; import { connect } from "react-redux"; import { Modal, Form, Tag, } from "@douyinfe/semi-ui"; import { IconAlertCircle } from '@douyinfe/semi-icons'; function adminModal (props) { const { close, cancel, visible, dispatch, actions, systemEdit,//是否是编辑 peplist,//项企项目列表 anxincloudList,//安心云项目列表 appList,//应用列表 pepProjectId,//已选择项企id pepname,//修改时自定义项目名称 anxincloudArr,//修改时已经选择的安心云列表 anxinDelete,//修改时安心云项目有删除,显示提示信息 appArr,//修改时添加应用 bindId, mapping, //修改时的映射类型 maintenancePeriod, //维保时间段 editData, traitLabel } = props; const { install } = actions; const form = useRef();//表单 const [custom, setCustom] = useState(false); //是否是自定义项目 const [myprojectType, setMyprojectType] = useState('pep'); //是否是自定义项目 const [structureSensor, setStructureSensor] = useState([]) const [sendorders, setSendorders] = useState([]) const [strucId, setStrucId] = useState([]) //初始化 useEffect(async () => { if (pepname) { setCustom(true) setMyprojectType('axy') } if (editData?.id) { await getData({ projectId: anxincloudArr?.join(',') + ',-1' }) setSendorders(editData?.sendorders) if (editData?.sendorders?.includes('emphasis')) { form.current.setValue('strucId', editData?.strucId) editData?.strucId?.forEach(d => { form.current.setValue('strucSensor' + d, editData?.strucSensor[d]) }) setStrucId(editData?.strucId || []) } if (editData?.sendorders?.includes('percentage')) { form.current.setValue('percentage', editData?.percentage) } } }, []); const getData = async (data = {}) => { await dispatch(install.getStructureStation({ ...data, traitLabel })).then((res) => { if (res.success) { setStructureSensor(res.payload.data || []) } }) } function handleOk () { //点击弹框确定 右边按钮 form.current .validate() .then((values) => { let appArr = [] for (let i = 0; i < values.appId.length; i++) { appArr.push(JSON.parse(values.appId[i]).id) } console.log(22, values); let strucSensor = {} if (values.sendorders?.includes("emphasis")) { values.strucId?.forEach(d => { strucSensor[d] = values['strucSensor' + d] || [] }); } let data = { name: values.name, pepProjectId: values.pepProjectId, anxinProjectId: values.anxinProjectId, appId: appArr, mappingClass: values.mappingClass, maintenancePeriod: values.maintenancePeriod, isanchor: values.isanchor, sendorders: values.sendorders, percentage: values.percentage, strucId: values.strucId, strucSensor: strucSensor } if (systemEdit) { dispatch(install.postProjectBind({ ...data, bindId: bindId, msg: '修改映射关系', })).then((res) => {//获取项企(PEP)全部部门及其下用户 if (res.success) { close(); } }) } else { dispatch(install.postProjectBind({ ...data, msg: '添加映射关系' })).then((res) => {//获取项企(PEP)全部部门及其下用户 if (res.success) { close(); } }) } }) } function handleCancel () { cancel(); //点击弹框取消 左边按钮 } const renderMultipleWithCustomTag = (optionNode, { onClose }) => { const content = ( {JSON.parse(optionNode.value).name} ); return { isRenderInTag: false, content }; } return ( <> 映射关系由项企立项项目与安心云项目关联产生,若项目未在项企中有记载,可选自定义项目,待项企立项项后再进行修改! { for (var key in field) { if (key == 'projectType') { if (field.projectType == 'pep') { setCustom(false) } else { setCustom(true) } } } }} getFormApi={(formApi) => (form.current = formApi)} > 项企项目 自定义项目(未在项企中立项的项目可选) {custom ? ( ) : ( { peplist.reduce((arr, item) => { if (!item.binded) { arr.push( {item.project_name} ) } return arr }, []) } )} { if (v.length) { getData({ projectId: v.join(',') + ',-1' }) } else { setStructureSensor([]) } form.current.setValue('strucId', []) setStrucId([]) }} > { anxincloudList.map((item, index) => { return ( {item.name} ) }) } { anxinDelete.length > 0 ? ( 确认关联后“{anxinDelete.join('、')}”将被系统移除映射关系,原因是项目已在【安心云】中被删除! ) : ('') } { appList.map((item, index) => { return ( {item.name} URL:{item.url} }> ) }) } { [ { name: '智慧类', value: 'wisdom' }, { name: '监测类', value: 'monitor' }, { name: '其他', value: 'other' } ].map(item => { return {item.name} }) } 续签 不续签 { setSendorders(v) if (!v.includes('emphasis')) { setStrucId([]) } }} > 项目在线百分比 运维关键点位 { sendorders?.includes('percentage') && } { sendorders?.includes('emphasis') && <> { setStrucId(v) }} > { structureSensor.map(item => { return {item.strucName} }) } {strucId?.length ? structureSensor?.filter(v => strucId?.includes(v.strucId))?.map((u, index) => { return { u.sensor?.map((v, index) => {v.senterName}({v.factorName})) } }) : "" } > } > ); } function mapStateToProps (state) { const { auth, global, members } = state; return { // loading: members.isRequesting, user: auth.user, actions: global.actions, traitLabel: global.traitLabel, }; } export default connect(mapStateToProps)(adminModal);