import { queryAuditList, addAudit, addAuditNode, addFlow, queryBoomFlowDetail, updateNode, queryFlowList, queryDingTemplateList, saveAuditFlowInfo, queryDepV2, queryProcessFlows, queryDefaultBindClassify, } from '@/services/boom'; import { queryApproval, } from '@/services/approval'; import { queryRole } from '@/services/SysAdmin'; import { queryProject } from '@/services/PurchaseList'; import { message } from 'antd'; function getDepUserTree(data) { data.title = `${data.Name}`; data.id = data.ID; data.value = data.ID; // data.selectable = false; if (!data.children) data.children = new Array(); if (data.children) { data.children.forEach(item => { getDepUserTree(item); }); } if (data.Users && data.Users.length !== 0) { data.Users.forEach(item => { item.title = item.CName; item.id = item.ID + '||' + data.ID; item.value = item.ID + '||' + data.ID; // item.selectable = true; item.DepId = data.ID; data.children.push(item); }); } return data; } const getFlowDetail = data => { const groups = { top: { position: { name: 'top' }, attrs: { circle: { r: 4, magnet: true, stroke: '#31d0c6', strokeWidth: 2, fill: '#fff', style: { visibility: 'hidden' }, }, }, zIndex: 10, }, right: { position: { name: 'right' }, attrs: { circle: { r: 4, magnet: true, stroke: '#31d0c6', strokeWidth: 2, fill: '#fff', style: { visibility: 'hidden' }, }, }, zIndex: 10, }, bottom: { position: { name: 'bottom' }, attrs: { circle: { r: 4, magnet: true, stroke: '#31d0c6', strokeWidth: 2, fill: '#fff', style: { visibility: 'hidden' }, }, }, zIndex: 10, }, left: { position: { name: 'left' }, attrs: { circle: { r: 4, magnet: true, stroke: '#31d0c6', strokeWidth: 2, fill: '#fff', style: { visibility: 'hidden' }, }, }, zIndex: 10, }, }; const attrs = { line: { stroke: '#A2B1C3', targetMarker: { name: 'block', width: 12, height: 8 }, strokeDasharray: '5 5', strokeWidth: 1, }, }; let nodes = data.nodes.map(item => { let node = { ...item }; node.ports.groups = groups; node.parentKey = '1'; return node; }); let edges = data.edges.map(item => { let edge = { ...item }; try { edge.attrs = item.attr ? JSON.parse(item.attr) : attrs; } catch (error) { edge.attrs = attrs; } return edge; }); return { ...data, nodes, edges, }; }; export default { namespace: 'flow', state: { flowDetail: { nodes: [], edges: [] }, formData: {}, auditList: [], flowList: [], projectList: [], current: {}, roleList: [], templateList: [], depUserTree: [], simpleFlowDteail: '', }, effects: { *addFlow({ payload, callback }, { call, put }) { const res = yield call(addFlow, payload); if (res) { message.success('添加成功'); callback && callback(); yield put({ type: 'queryFlowList', }); } }, *getRoleList({ payload }, { call, put }) { const response = yield call(queryRole, payload); if (response) { yield put({ type: 'save', payload: { roleList: response.data.list }, }); } }, *queryBoomFlowDetail({ payload }, { call, put }) { const data = yield call(queryBoomFlowDetail, payload); console.log(data); yield put({ type: 'save', payload: { flowDetail: data }, }); }, *queryProject({ callback }, { call, put }) { const response = yield call(queryApproval,{pageSize: 99999}); if (response) { yield put({ type: 'save', payload: { projectList: response.data.list, }, }); } }, *queryFlowList({ payload }, { call, put }) { const res = yield call(queryFlowList, payload); yield put({ type: 'save', payload: { flowList: res.data }, }); }, *updateNode({ payload, callback }, { call, put }) { const data = yield call(updateNode, payload); console.log(data); message.success('修改成功'); callback && callback(); }, *queryAuditList({ payload }, { call, put }) { const response = yield call(queryAuditList, payload); if (response) { yield put({ type: 'save', payload: { auditList: response.data }, }); } }, *addAudit({ payload, callback }, { call, put }) { const response = yield call(addAudit, payload); if (response) { message.success('新增成功'); callback && callback(); yield put({ type: 'queryAuditList', payload: {}, }); } }, *addAuditNode({ payload, callback }, { call, put }) { const response = yield call(addAuditNode, payload); if (response) { message.success('操作成功'); callback && callback(); } }, *queryDingTemplateList({ payload }, { call, put }) { const response = yield call(queryDingTemplateList, payload); if (response) { yield put({ type: 'save', payload: { templateList: response.data.result }, }); } }, *saveAuditFlowInfo({ payload, callback }, { call, put }) { const response = yield call(saveAuditFlowInfo, payload); if (response) { message.success('保存成功'); callback && callback(); } }, *fetchDepV2({ payload, callback }, { call, put }) { const response = yield call(queryDepV2, { pageSize: 999999 }); if (response) { // const depUserTree = response.data?.list; const depUserTree = response.data.list.map(item => { return getDepUserTree(item); }); yield put({ type: 'save', payload: { depUserTree }, }); } }, *queryProcessFlows({ payload }, { call, put }) { const data = yield call(queryProcessFlows, payload); if (data && data.length > 0) { yield put({ type: 'save', payload: { flowDetail: data[0].process_json ? getFlowDetail(JSON.parse(data[0].process_json)) : { nodes: [], edges: [] }, formData: data[0].form_json ? JSON.parse(data[0].form_json) : [], simpleFlowDteail: data[0].process_simple_json, }, }); } }, *queryDefaultBindClassify({ payload }, { call, put }) { const data = yield call(queryDefaultBindClassify, payload); if (data) { } }, }, reducers: { save(state, action) { return { ...state, ...action.payload, }; }, }, };