import React, { useMemo } from 'react'; import { Button, Menu, Dropdown, Modal } from 'antd'; import { UnorderedListOutlined } from '@ant-design/icons'; import router from 'umi/router'; import { setLastVersion } from '@/services/boom'; function DropdownMenu(props) { const { compareList, isMerge, version, onClick, flowDetail, classifyList, currentUser, isAuditor, flow, sheetRef3, sheetRef2, setVersion, } = props; const active_audit = flow.active_audit; const isLastVersion = useMemo(() => { return version.last_version == 1; }, [version]); const canEdit = () => { if (flow.list.FlowNodes.length - 1 == flow.current && active_audit == 3) return false; return active_audit != 1; }; const onSave = () => { const sheet1 = compareList[0]; Modal.confirm({ title: '提示', content: `是否确认保存【${sheet1.version_name || sheet1.name}】`, okText: '确定', cancelText: '取消', onOk() { let sheetData = sheetRef3.current.getSheetJson().data; sheetData.forEach(sheet => { delete sheet.data; }); let params = { ...sheet1, data: JSON.stringify(sheetData), }; dispatch({ type: 'detail/commitSheet', payload: params, callback: () => { onCompare(false); }, }); }, }); }; const onMerge = () => { const [sheet1, sheet2] = compareList; Modal.confirm({ title: '提示', content: `是否确认将【${sheet2.version_name}】改动的内容同步至【${sheet1.version_name || sheet1.name}】`, okText: '确定', cancelText: '取消', onOk() { sheetRef3.current.mergeExcl(sheetRef2.current.updateCell); }, }); }; const handleMenuClick = e => { switch (e.key) { case 'back': // 返回 router.push(`/bom`); break; case 'lastVersion': Modal.confirm({ title: '提示', content: `设置成功后将无法编辑,是否设置为最终版本?`, okText: '确定', cancelText: '取消', onOk: async () => { await setLastVersion(version.id); version.last_version = 1 setVersion(version) localStorage.excelItem = JSON.stringify(version); }, }); break; default: onClick(e); break; } }; // 判断是否为比对模式 if (compareList.length == 2) { // 判断是否为同步最新清单的比对 if (isMerge) { return ( <> ); } else { return ; } } const menuList = [ 返回, 详情, 导出, 比对, ]; // version.audit_status:4 为副本。不可操作 if (version.audit_status != 4) { //判断权限配置,如果配置了,就指定权限的人可提交,没配置就全部人都可提交 //判断分类,这个清单所属分类的操作人可以提交 const getIsSubmit = () => { let bool = true; const nodeId = version.template_node_id; if (!flowDetail?.nodes || !nodeId) return; const node = flowDetail.nodes.find(item => item.Id == nodeId); if (!node || node.name == 'custom-circle') return; if (node?.role_list) { bool = node.role_list .split(',') .some(id => currentUser.roleList?.find(role => role.ID == id)); } // 非全部分类判断是否含有权限 if(version.classify_id != 1) { // 判断在特定分类下是否有权限 const uidsStr = classifyList.find(item => item.classify_id == version.classify_id)?.uid; if (uidsStr && uidsStr.split(',')?.findIndex(item => item == currentUser.ID) < 0) { bool = false; // 判断在全部分类下是否有权限 const allUidsStr = classifyList.find(item => item.classify_id == 1)?.uid if (allUidsStr && allUidsStr.split(',')?.findIndex(item => item == currentUser.ID) != -1) { bool = true; } } } return bool; }; if (getIsSubmit() && version.audit_status == 0) menuList.push(提交流转); if (!isAuditor && canEdit() && !version.flow_id) { menuList.push(同步); } } if (!isLastVersion) menuList.push(设为最终版本); return ( <> {menuList}}> ); } export default DropdownMenu;