123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- 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 (
- <>
- <Button type="primary" onClick={onSave}>
- 保存
- </Button>
- <Button onClick={onMerge}>同步新增内容</Button>
- <Button onClick={() => onClick({ key: 'compare', data: false })}>取消同步</Button>
- </>
- );
- } else {
- return <Button onClick={() => onClick({ key: 'compare', data: true })}>取消比对</Button>;
- }
- }
- const menuList = [
- <Menu.Item key="back">返回</Menu.Item>,
- <Menu.Item key="bomDetail">详情</Menu.Item>,
- <Menu.Item key="export">导出</Menu.Item>,
- <Menu.Item key="compare">比对</Menu.Item>,
- ];
- // 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(<Menu.Item key="commitAudit">提交流转</Menu.Item>);
- if (!isAuditor && canEdit() && !version.flow_id) {
- menuList.push(<Menu.Item key="merge">同步</Menu.Item>);
-
- }
- }
- if (!isLastVersion) menuList.push(<Menu.Item key="lastVersion">设为最终版本</Menu.Item>);
- return (
- <>
- <Dropdown overlay={<Menu onClick={handleMenuClick}>{menuList}</Menu>}>
- <UnorderedListOutlined style={{ fontSize: 30, cursor: 'pointer' }} />
- </Dropdown>
- </>
- );
- }
- export default DropdownMenu;
|