From 449251dcce803deab8df112a4e8a4c07f9701099 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Thu, 26 Oct 2023 08:26:33 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E8=AE=BE=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/workflowapi/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/workflowapi/index.ts b/src/api/workflowapi/index.ts index d74739faa..d5b3895fe 100644 --- a/src/api/workflowapi/index.ts +++ b/src/api/workflowapi/index.ts @@ -48,7 +48,7 @@ export function judgeOptionalNode(data: any) { }); } //获取工作流版本列表 -export function gainFlowVersionList(data: publicid): AxiosPromise { +export function gainFlowVersionList(data: publicid): AxiosPromise { return request({ url: '/systemapi/task_flow/gain_flow_version_list', method: 'post', From 6acd47d90e9758f1e9b06275ea277eda3d8c6003 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Thu, 26 Oct 2023 09:09:28 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/DesignForm/type.ts | 1 + src/components/workflow/addNode.vue | 12 +- src/components/workflow/nodeWrap.vue | 30 ++--- src/components/workflow/selectBox.vue | 109 ------------------ src/components/workflow/selectBoxs.vue | 2 +- .../sysworkflow/flow/flowDrawingBoard.vue | 2 +- src/views/sysworkflow/flow/flowcanvas.vue | 2 +- 7 files changed, 17 insertions(+), 141 deletions(-) delete mode 100644 src/components/workflow/selectBox.vue diff --git a/src/api/DesignForm/type.ts b/src/api/DesignForm/type.ts index 0a3b008ca..ca7500ce4 100644 --- a/src/api/DesignForm/type.ts +++ b/src/api/DesignForm/type.ts @@ -12,6 +12,7 @@ export interface customerFormCont{ classify:number; creatername:string; creatertime:string; + flowkey:any; } export type CustomerFormPageResult = PageResult; diff --git a/src/components/workflow/addNode.vue b/src/components/workflow/addNode.vue index 84d4e026e..208939263 100644 --- a/src/components/workflow/addNode.vue +++ b/src/components/workflow/addNode.vue @@ -51,10 +51,10 @@ const addType = (type:any)=> { var data; if (type == 1) { data = { - "nodeNumber":onlyNumber, - "nodeName": "审核人", - "error": true, - "type": 1, + "nodeNumber":onlyNumber, //节点标识 + "nodeName": "审核人", //节点名称 + "error": true, //当前审批是否通过校验 + "type": 1, // 0 发起人 1审批 2抄送 3执行人 4条件 5路由 "settype": 1, "selectMode": 0, "selectRange": 0, @@ -123,7 +123,7 @@ const addType = (type:any)=> { "nodeNumber":snowflake1, "nodeName": "条件1", "error": true, - "type": 3, + "type": 4, "priorityLevel": 1, "conditionList": [], "nodeUserList": [], @@ -133,7 +133,7 @@ const addType = (type:any)=> { }, { "nodeNumber":snowflake2, "nodeName": "条件2", - "type": 3, + "type": 4, "priorityLevel": 2, "conditionList": [], "nodeUserList": [], diff --git a/src/components/workflow/nodeWrap.vue b/src/components/workflow/nodeWrap.vue index 081f41bf1..9dfc2fb12 100644 --- a/src/components/workflow/nodeWrap.vue +++ b/src/components/workflow/nodeWrap.vue @@ -62,7 +62,7 @@ const resetConditionNodesErr = () => { } }; -const clickEvent = (index: any) => { +const clickEvent = (index?: any) => { if (index || index === 0) { isInputList.value[index] = true; } else { @@ -172,12 +172,13 @@ const arrTransfer = (index: any, type = 1) => { //向左-1,向右1 // eslint-disable-next-line vue/no-mutating-props props.nodeConfig.conditionNodes[index] = + // eslint-disable-next-line vue/no-mutating-props props.nodeConfig.conditionNodes.splice( index + type, 1, props.nodeConfig.conditionNodes[index] )[0]; - props.nodeConfig.conditionNodes.map((item, index) => { + props.nodeConfig.conditionNodes.map((item:any, index:any) => { item.priorityLevel = index + 1; }); resetConditionNodesErr(); @@ -246,15 +247,7 @@ onMounted(() => { > - + {{ nodeConfig.nodeName @@ -278,10 +271,7 @@ onMounted(() => { - +
@@ -361,18 +351,12 @@ onMounted(() => {
- + - + diff --git a/src/components/workflow/selectBoxs.vue b/src/components/workflow/selectBoxs.vue index 4a963bba7..a8000ba08 100644 --- a/src/components/workflow/selectBoxs.vue +++ b/src/components/workflow/selectBoxs.vue @@ -7,7 +7,7 @@ defineProps({ list: { type: Array, - default: () => [] + default: () => [{ type: 'role', data:any, cancel:()=>{} }] } }) diff --git a/src/views/sysworkflow/flow/flowDrawingBoard.vue b/src/views/sysworkflow/flow/flowDrawingBoard.vue index 258d10400..0aa85d544 100644 --- a/src/views/sysworkflow/flow/flowDrawingBoard.vue +++ b/src/views/sysworkflow/flow/flowDrawingBoard.vue @@ -7,7 +7,7 @@ import '@/styles/workflowcss/workflow.scss' import { useStore } from '@/store/workflow/index' -import { tipListStrucr,flowversion } from '@/api/workflowapi/types' +import { flowversion } from '@/api/workflowapi/types' import { initializeWorkFlow,setWorkFlowData,gainFlowVersionList } from '@/api/workflowapi/index' //引入页面 diff --git a/src/views/sysworkflow/flow/flowcanvas.vue b/src/views/sysworkflow/flow/flowcanvas.vue index d45cd7b97..af5f7b41c 100644 --- a/src/views/sysworkflow/flow/flowcanvas.vue +++ b/src/views/sysworkflow/flow/flowcanvas.vue @@ -7,7 +7,7 @@ import '@/styles/workflowcss/workflow.scss' import { useStore } from '@/store/workflow/index' -import { tipListStrucr } from '@/api/workflowapi/types' + import { initializeWorkFlow,setWorkFlowData } from '@/api/workflowapi/index' let { setTableId, setIsTried } = useStore() From d57a248130656344a4ad5d58891cc932d7913b85 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Sat, 28 Oct 2023 08:43:19 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E7=95=8C=E9=9D=A2CURD?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/workflowapi/index.ts | 40 ++++ .../DesignForm/public/headTools.vue | 2 +- src/components/workflow/addNode.vue | 8 +- src/components/workflow/dialog/common.ts | 2 +- .../workflow/dialog/positionDialog.vue | 4 +- .../workflow/drwer/approverDrawer.vue | 4 +- src/components/workflow/nodeWrap.vue | 5 +- src/utils/request.ts | 2 +- src/utils/workflow/index.ts | 8 +- src/views/sysworkflow/codepage/index.vue | 2 +- .../sysworkflow/flow/flowDrawingBoard.vue | 221 ++++++++++++++++-- src/views/sysworkflow/flow/index.vue | 41 +++- 12 files changed, 297 insertions(+), 42 deletions(-) diff --git a/src/api/workflowapi/index.ts b/src/api/workflowapi/index.ts index d5b3895fe..f4a65e55d 100644 --- a/src/api/workflowapi/index.ts +++ b/src/api/workflowapi/index.ts @@ -55,3 +55,43 @@ export function gainFlowVersionList(data: publicid): AxiosPromise data: data }); } +//保存工作流版本 +export function saveFlowCont(data: any) { + return request({ + url: '/systemapi/task_flow/save_flow_cont', + method: 'post', + data: data + }); +} +//获取工作流信息 +export function gainFlowInfo(data: publicid) { + return request({ + url: '/systemapi/task_flow/gain_flow_info', + method: 'post', + data: data + }); +} +//编辑工作流版本 +export function editFlowCont(data: any) { + return request({ + url: '/systemapi/task_flow/edit_flow_cont', + method: 'post', + data: data + }); +} +//编辑工作流版本 +export function saveNewFlow(data: any) { + return request({ + url: '/systemapi/task_flow/save_new_flow', + method: 'post', + data: data + }); +} +//启用&禁用工作流版本 +export function switchFlowVersion(data: any) { + return request({ + url: '/systemapi/task_flow/switch_flow_version', + method: 'post', + data: data + }); +} diff --git a/src/components/DesignForm/public/headTools.vue b/src/components/DesignForm/public/headTools.vue index 0af0f403b..4fca4e9ae 100644 --- a/src/components/DesignForm/public/headTools.vue +++ b/src/components/DesignForm/public/headTools.vue @@ -53,7 +53,7 @@ const btnList = computed(() => { }) watch(()=>props.customerformid,(val: any)=>{ - console.log("选定版本----表单--->",val) + // console.log("选定版本----表单--->",val) }) diff --git a/src/utils/request.ts b/src/utils/request.ts index 365b07a87..0bac909be 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -33,7 +33,7 @@ service.interceptors.request.use( service.interceptors.response.use( (response: AxiosResponse) => { const { code, msg } = response.data; - if (code === 0) { + if (code === 0 || code === 10001) { return response.data; } if (code === 7 || code === 300 || code === 301 || code === 302){ diff --git a/src/utils/workflow/index.ts b/src/utils/workflow/index.ts index 5d6ed695a..13978473c 100644 --- a/src/utils/workflow/index.ts +++ b/src/utils/workflow/index.ts @@ -75,6 +75,7 @@ All.prototype = { // return "指定成员" } } else if (nodeConfig.settype == 2) { + let level = nodeConfig.directorLevel == 1 ? '直接主管' : '第' + nodeConfig.directorLevel + '级主管' if (nodeConfig.examineMode == 1) { return level @@ -84,14 +85,14 @@ All.prototype = { return level + + "非会签" } } else if (nodeConfig.settype == 3) { - console.log("nodeConfig==会签==>",nodeConfig) + // console.log("nodeConfig==会签==>",nodeConfig) if (nodeConfig.nodeUserList.length == 1) { return nodeConfig.nodeUserList[0].name }else{ return "指定行政岗位" } } else if (nodeConfig.settype == 4) { - console.log("nodeConfig.selectRange",nodeConfig.selectRange,nodeConfig.nodeUserList); + // console.log("nodeConfig.selectRange",nodeConfig.selectRange,nodeConfig.nodeUserList); if (nodeConfig.selectRange == 1) { return "发起人自选" } else { @@ -108,11 +109,12 @@ All.prototype = { } else if (nodeConfig.settype == 5) { return "发起人自己" } else if (nodeConfig.settype == 6) { + // console.log("nodeConfig==直接主管==>",nodeConfig) return '从直接主管到通讯录中级别最高的第' + nodeConfig.examineEndDirectorLevel + '个层级主管' }else if (nodeConfig.settype == 7){ return "指定前置审批为本节点设置审批人" }else if (nodeConfig.settype == 8){ - console.log("checkedFormList--1111->",nodeConfig) + // console.log("checkedFormList--1111->",nodeConfig) if(nodeConfig.nodeUserList.length > 0){ if (nodeConfig.examineMode == 1) { return nodeConfig.nodeUserList[0].name + "依次审批" diff --git a/src/views/sysworkflow/codepage/index.vue b/src/views/sysworkflow/codepage/index.vue index 54d448e24..009adb853 100644 --- a/src/views/sysworkflow/codepage/index.vue +++ b/src/views/sysworkflow/codepage/index.vue @@ -154,7 +154,7 @@ const customerFormName = ref() const flowKey = ref() const setupWorkFlow = (cont:customerFormCont) => { drawerWidht.value = contbody.value?.clientWidth - // console.log("clientHeight--->",drawerWidht.value) + // console.log("clientHeight--->",cont) drawer.value = true isFormFlow.value = true; customerFormName.value = cont.name diff --git a/src/views/sysworkflow/flow/flowDrawingBoard.vue b/src/views/sysworkflow/flow/flowDrawingBoard.vue index 0aa85d544..2d7f4a4ad 100644 --- a/src/views/sysworkflow/flow/flowDrawingBoard.vue +++ b/src/views/sysworkflow/flow/flowDrawingBoard.vue @@ -8,7 +8,7 @@ import '@/styles/workflowcss/workflow.scss' import { useStore } from '@/store/workflow/index' import { flowversion } from '@/api/workflowapi/types' -import { initializeWorkFlow,setWorkFlowData,gainFlowVersionList } from '@/api/workflowapi/index' +import { initializeWorkFlow,setWorkFlowData,gainFlowVersionList,saveFlowCont,gainFlowInfo,editFlowCont,saveNewFlow,switchFlowVersion } from '@/api/workflowapi/index' //引入页面 import errorDialog from "@/components/workflow/dialog/errorDialog.vue"; @@ -65,20 +65,40 @@ const shenPiTitle = ref("") const activeTabs = ref(""); //当前版本 const versionList = ref(); //工作流版本列表 +const enableFlow = ref(); +const isRead = ref(false) +const enableVersion = ref(); //获取工作流版本列表 const getFlowVerList = ()=>{ - gainFlowVersionList({id:props.flowKey.toString()}) + gainFlowVersionList({id:props.customerFormKey.toString()}) .then(({data})=>{ if(data){ if(data.length>0){ versionList.value = data; data.forEach(item=>{ if(item.state == 1){ - activeTabs.value = item.version + activeTabs.value = item.id + enableFlow.value = item + enableVersion.value = item.id } }) + isRead.value = true + }else{ + isRead.value = false } } + console.log("获取工作流版本列表---1-->",activeTabs.value); + console.log("获取工作流版本列表---2-->",enableFlow.value); + console.log("获取工作流版本列表---3-->",enableVersion.value); + }) + .finally(()=>{ + if(isRead.value == true){ + gainFlowCont(); + }else{ + clearCanvas(1); + } + clickOpenOrClose(); + }) } @@ -98,17 +118,18 @@ const initWorkFlowData = async() => { workFlowDef:workName, tableId, } = data; + processConfig.value.workFlowDef.formKey = props.customerFormKey nodeConfig.value = nodes; - flowPermission = flowPermission; - directorMaxLeveling = directorMaxLevel; + flowPermission.value = flowPermission; + directorMaxLeveling.value = directorMaxLevel; workFlowDef.value = workName; setTableId(tableId); // console.log("max--1->",data) // console.log("max--6->",tableId) // console.log("max--2->",flowPermission) - // console.log("max--3->",flowPermission) + // console.log("max--3->",nodeConfig) // console.log("max--4->",directorMaxLevel) - console.log("max--5->",workName) + // console.log("max--5->",processConfig) } //错误提示 const reErr = ({ childNode }:any) => { @@ -152,7 +173,18 @@ const saveSet = async () => { console.log("processConfig",processConfig.value); console.log("flowPermission",flowPermission.value); console.log("nodeConfig",nodeConfig.value); - + saveFlowCont(processConfig.value) + .then((data:any) => { + if(data.code == 0){ + ElMessage.success("设置成功"); + emits("update:openDrawer", false); + clearCanvas(1); + } + }) + .finally(()=>{ + + + }) // let res = await setWorkFlowData(processConfig.value); // if (res.code == 200) { // ElMessage.success("设置成功") @@ -177,35 +209,169 @@ const zoomSize = (type:number) => { } }; //清空画布 -const clearCanvas = () =>{ - ElMessageBox.confirm('确定要清空画布?') - .then(() => { +const clearCanvas = (isOk?:number) =>{ + if(isOk==1){ initWorkFlowData() setIsTried(false); tipList.value = [] - }) + }else{ + ElMessageBox.confirm('确定要清空画布?') + .then(() => { + initWorkFlowData() + setIsTried(false); + tipList.value = [] + }) + } + + enableFlow.value = "" } watch(()=>props.openDrawer,(val)=>{ + // console.log("1111",props.customerFormKey,val) if(val){ - if(props.flowKey != ""){ + if(props.customerFormKey != ""){ getFlowVerList() }else{ - + initWorkFlowData() } - initWorkFlowData() + shenPiTitle.value = props.customerFormName }else{ setIsTried(false); tipList.value = [] + enableFlow.value = "" + isRead.value=false } }) //选择工作流版本 const clickFormTable = (val:any) =>{ - // console.log("切换表单",val,formTableIndex.value) + console.log("切换表单",val,activeTabs.value) + enableVersion.value = val + gainFlowCont(); + clickOpenOrClose(); // getTableFieldList(versionIndex.value,val) } +//编辑 +const saveEdit =()=>{ + setIsTried(true); + tipList.value = []; + + reErr(nodeConfig.value); + if (tipList.value.length != 0) { + tipVisible.value = true; + return; + } + processConfig.value.flowPermission = flowPermission.value; + // eslint-disable-next-line no-console + console.log("processConfig",flowPermission); + // console.log("flowPermission",flowPermission.value); + console.log("activeTabs",enableFlow.value); + let sendCont = { + id:enableVersion.value.toString(), + flowinfo:processConfig.value + } + editFlowCont(sendCont) + .then((data:any) => { + if(data.code == 0){ + ElMessage.success("设置成功"); + emits("update:openDrawer", false); + clearCanvas(1); + } + }) + .finally(()=>{ + + + }) +} +//另存为新版 +const saveNew = () => { + setIsTried(true); + tipList.value = []; + + reErr(nodeConfig.value); + if (tipList.value.length != 0) { + tipVisible.value = true; + return; + } + processConfig.value.flowPermission = flowPermission.value; + // eslint-disable-next-line no-console + // console.log("processConfig",flowPermission); + // console.log("flowPermission",flowPermission.value); + // console.log("activeTabs",enableFlow.value); + let sendCont = { + id:enableVersion.value.toString(), + flowinfo:processConfig.value + } + saveNewFlow(sendCont) + .then((data:any) => { + if(data.code == 0){ + ElMessage.success("设置成功"); + emits("update:openDrawer", false); + clearCanvas(1); + } + }) +} +//获取流程内容 +const gainFlowCont = () =>{ + gainFlowInfo({id:enableVersion.value.toString()}) + .then((data:any)=>{ + // console.log("获取工作流版本列表-1->",data,enableFlow.value) + if(data.code == 0){ + processConfig.value = data.data; + processConfig.value.workFlowDef.formKey = props.customerFormKey + nodeConfig.value = data.data.nodeConfig; + flowPermission.value = data.data.flowPermission; + directorMaxLeveling = data.data.directorMaxLevel; + workFlowDef.value = data.data.workFlowDef; + setTableId(data.data.tableId); + // console.log("max--1->",data) + // console.log("max--6->",data.data.tableId) + // console.log("max--2->",data.data.flowPermission) + // console.log("max--3->",nodeConfig) + // console.log("max--4->",data.data.directorMaxLevel) + // console.log("max--5->",processConfig.value) + }else{ + clearCanvas(1); + } + // initWorkFlowData(); + }) +} +//启用禁用 +const setupState = (val:number) =>{ + let sendCont = { + id:enableVersion.value.toString(), + status:val + } + switchFlowVersion(sendCont) + .then((data)=>{ + ElMessage.success(data.msg); + // activeTabs.value = enableVersion.value + // enableFlow.value.id = enableVersion.value + if(versionList.value.length > 0){ + versionList.value.forEach(item=>{ + if(item.id == enableVersion.value){ + enableFlow.value = item + } + }) + } + + }) + .finally(()=>{ + clickOpenOrClose(); + }) + console.log("enableFlow.version==activeTabs",enableFlow.version,activeTabs) +} +const openOfClise = ref(false) +const clickOpenOrClose = () => { + if(enableFlow.value.id==activeTabs.value){ + openOfClise.value = true + }else{ + openOfClise.value = false + } + console.log("openOfClise",openOfClise.value) + console.log("enableFlow.version=1=activeTabs",enableFlow.value,activeTabs.value) +}
- - + + - + - - 启用 + + 禁用 + 启用
diff --git a/src/views/sysworkflow/flow/index.vue b/src/views/sysworkflow/flow/index.vue index c3e84216b..5cdab2be1 100644 --- a/src/views/sysworkflow/flow/index.vue +++ b/src/views/sysworkflow/flow/index.vue @@ -16,6 +16,18 @@ const openfloaw = ()=>{ } const isFormFlow = ref(false) const customerFormKey = ref() + +const scrollContainer = ref(null) +const fixedElement = ref(null) +const scrollToFixed = () =>{ + console.log("scrollToFixed",scrollContainer.value?.offsetTop) + console.log("scrollToFixed",fixedElement.value?.offsetTop) + scrollContainer.value.scrollIntoView({ + behavior: "smooth" + }) + scrollContainer.value.scrollTop = fixedElement.value?.offsetTop - scrollContainer.value?.offsetTop +} +