import React, { useState, useRef, useEffect } from "react"; import { connect } from "react-redux"; import { Modal, Form, ArrayField, Tag } from "@douyinfe/semi-ui"; import { IconAlertCircle, IconAlertTriangle } from '@douyinfe/semi-icons'; function adminModal (props) { const { close, cancel, visible, dispatch, actions, systemEdit,//是否是编辑 peplist,//项企项目列表 anxincloudList,//安心云项目列表 appList,//应用列表 pepProjectId,//已选择项企id pepname,//修改时自定义项目名称 anxincloudArr,//修改时已经选择的安心云列表 anxinDelete,//修改时安心云项目有删除,显示提示信息 appArr,//修改时添加应用 bindId } = props; const { install } = actions; const form = useRef();//表单 const [custom, setCustom] = useState(false); //是否是自定义项目 const [myprojectType, setMyprojectType] = useState('pep'); //是否是自定义项目 //初始化 useEffect(() => { if (pepname) { setCustom(true) setMyprojectType('axy') } }, []); function handleOk () { //点击弹框确定 右边按钮 form.current .validate() .then((values) => { if (systemEdit) { let appArr = [] for (let i = 0; i < values.appId.length; i++) { appArr.push(JSON.parse(values.appId[i]).id) } let bindObj = JSON.parse(JSON.stringify(values)) bindObj.appId = appArr dispatch(install.postProjectBind({ ...bindObj, bindId: bindId, msg: '修改映射关系' })).then((res) => {//获取项企(PEP)全部部门及其下用户 if (res.success) { close(); } }) } else { let appArr = [] for (let i = 0; i < values.appId.length; i++) { appArr.push(JSON.parse(values.appId[i]).id) } let bindObj = JSON.parse(JSON.stringify(values)) bindObj.appId = appArr dispatch(install.postProjectBind({ ...bindObj, 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 }, []) } )} { anxincloudList.map((item, index) => { return ( {item.name} ) }) } { anxinDelete.length > 0 ? ( 确认关联后“{anxinDelete.join('、')}”将被系统移除映射关系,原因是项目已在【安心云】中被删除! ) : ('') } { appList.map((item, index) => { return ( {item.name} URL:{item.url} }> ) }) } > ); } function mapStateToProps (state) { const { auth, global, members } = state; return { // loading: members.isRequesting, user: auth.user, actions: global.actions, // members: members.data, }; } export default connect(mapStateToProps)(adminModal);