From c7840bfd0acab988cd1987ac19919e2c9d770116 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Tue, 24 Oct 2023 08:33:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/displayboardapi/indexapi.ts | 8 + src/api/workflowapi/index.ts | 12 +- src/api/workflowapi/types.ts | 21 +- src/components/workflow/dialog/common.ts | 15 +- src/components/workflow/dialog/formWord.vue | 135 ++++++ .../workflow/drwer/approverDrawer.vue | 38 +- .../workflow/drwer/conditionDrawer.vue | 387 ++++++++++++------ src/components/workflow/selectBoxs.vue | 11 + src/components/workflow/selectResult.vue | 7 + src/utils/workflow/const.ts | 5 + src/utils/workflow/index.ts | 18 +- src/views/sysworkflow/codepage/index.vue | 4 +- .../sysworkflow/flow/flowDrawingBoard.vue | 56 ++- 13 files changed, 569 insertions(+), 148 deletions(-) create mode 100644 src/components/workflow/dialog/formWord.vue diff --git a/src/api/displayboardapi/indexapi.ts b/src/api/displayboardapi/indexapi.ts index 4379803de..03e567a33 100644 --- a/src/api/displayboardapi/indexapi.ts +++ b/src/api/displayboardapi/indexapi.ts @@ -103,3 +103,11 @@ export const GetPositionUnify = (data?: any) => { data: data }) } +//获取审批节点或条件节点 +export const gainNodeFactor = (data?: any) => { + return request({ + url: '/systemapi/task_flow/gain_node_factor', + method: 'post', + data: data + }) +} diff --git a/src/api/workflowapi/index.ts b/src/api/workflowapi/index.ts index bd2cf580d..d74739faa 100644 --- a/src/api/workflowapi/index.ts +++ b/src/api/workflowapi/index.ts @@ -2,7 +2,9 @@ import request from '@/utils/request'; import { AxiosPromise } from 'axios'; import { - formTableName + formTableName, + flowversion, + publicid } from '@/api/workflowapi/types' //初始化工作流 @@ -45,3 +47,11 @@ export function judgeOptionalNode(data: any) { data: data }); } +//获取工作流版本列表 +export function gainFlowVersionList(data: publicid): AxiosPromise { + return request({ + url: '/systemapi/task_flow/gain_flow_version_list', + method: 'post', + data: data + }); +} diff --git a/src/api/workflowapi/types.ts b/src/api/workflowapi/types.ts index 859dfd0a0..8e5df9839 100644 --- a/src/api/workflowapi/types.ts +++ b/src/api/workflowapi/types.ts @@ -1,9 +1,26 @@ +export interface publicid{ + id?: string; +} //表单名称 export interface formTableName{ name?: string; } //错误提示 -export interface tipListStrucr{ - +export interface flowversion{ + id:string; + version:string; + state:number; + key:string; +} + +//工作流判断条件 +export interface flowFactorCont{ + id:number; + factorid:string; + options:optionsInfo[] +} +export interface optionsInfo{ + label:string; + value:string; } diff --git a/src/components/workflow/dialog/common.ts b/src/components/workflow/dialog/common.ts index 9f87d68dc..0c0e620eb 100644 --- a/src/components/workflow/dialog/common.ts +++ b/src/components/workflow/dialog/common.ts @@ -1,13 +1,14 @@ import $func from '@/utils/workflow/index' import { outputOrgAndUser } from '@/api/displayboardapi/types' -import { getBasisOrgChiled,getEmployees,getRoles,SearchPositionUnify,GetPositionUnify } from '@/api/displayboardapi/indexapi' +import { getBasisOrgChiled,getEmployees,getRoles,SearchPositionUnify,GetPositionUnify,gainNodeFactor } from '@/api/displayboardapi/indexapi' export let searchVal = ref('') export let departments = ref() export let roles = ref({}) export let positionList = ref() +export let formWordList = ref() //获取行政组织及人员 export let getDepartmentList = async (parentId:any = 0) => { @@ -62,3 +63,15 @@ export let getPostList = async () => { console.log("getPostList",data); positionList.value = data; } + +//获取表单字段 +export let gainFormTableWorde = async (id:string,types:number) => { + let sendData ={ + id:id, + types:types + } + console.log("gainFormTableWorde--->",sendData); + let { data } = await gainNodeFactor(sendData) + console.log("gainFormTableWorde",data); + formWordList.value = data; +} diff --git a/src/components/workflow/dialog/formWord.vue b/src/components/workflow/dialog/formWord.vue new file mode 100644 index 000000000..080e9e9d3 --- /dev/null +++ b/src/components/workflow/dialog/formWord.vue @@ -0,0 +1,135 @@ + + + + diff --git a/src/components/workflow/drwer/approverDrawer.vue b/src/components/workflow/drwer/approverDrawer.vue index 16da6fab2..05b251bc5 100644 --- a/src/components/workflow/drwer/approverDrawer.vue +++ b/src/components/workflow/drwer/approverDrawer.vue @@ -10,6 +10,7 @@ import { useStore } from '@/store/workflow/index' import { getAllParentNode,judgeOptionalNode } from '@/api/workflowapi/index' import PositionDialog from '@/components/workflow/dialog/positionDialog.vue' +import FormWord from '@/components/workflow/dialog/formWord.vue' let props = defineProps({ nodeConfig:{ @@ -37,8 +38,10 @@ let approverConfig = ref({}) let approverVisible = ref(false) let approverRoleVisible = ref(false) let appPosistonVisible = ref(false) -let checkedRoleList = ref([]) -let checkedPostList = ref([]) +let appFormTableVisible = ref(false) +let checkedRoleList = ref([]) //角色列表 +let checkedPostList = ref([]) //岗位列表 +let checkedFormList = ref([]) //字段列表 let checkedList = ref([]) let store = useStore() let { setApproverConfig, setApprover } = store @@ -157,8 +160,19 @@ const isShowRatify = (id:number)=>{ return true } } + +//字段 +const formTableField = ()=> { + appFormTableVisible.value = true; + checkedFormList.value = approverConfig.value.nodeUserList +} +const sureFormTableApprover = (data:any)=> { + approverConfig.value.nodeUserList = data; + appFormTableVisible.value = false; +} diff --git a/src/components/workflow/selectResult.vue b/src/components/workflow/selectResult.vue index f709536f9..3d5613bb1 100644 --- a/src/components/workflow/selectResult.vue +++ b/src/components/workflow/selectResult.vue @@ -56,6 +56,13 @@ let emits = defineEmits(['del']) + diff --git a/src/utils/workflow/const.ts b/src/utils/workflow/const.ts index b3e4b4f0e..de720b7c3 100644 --- a/src/utils/workflow/const.ts +++ b/src/utils/workflow/const.ts @@ -39,3 +39,8 @@ export let opt1s = [ {value: '<', label: '<'}, {value: '≤', label: '≤'}, ] +//工作流判断条件(类型:1、申请人;2、自定义字段;3、单选;4、多选;5、开关) +export let flowFactor = [ + {id:1,name:"申请人",keyid:"applicant",type:1,isok:false,isCheckbox:true,options:[]}, + {id:2,name:"自定义字段",keyid:"customFields",type:2,isok:false,isCheckbox:false,options:[]} +] diff --git a/src/utils/workflow/index.ts b/src/utils/workflow/index.ts index f1302ef7c..f9c0f58fa 100644 --- a/src/utils/workflow/index.ts +++ b/src/utils/workflow/index.ts @@ -72,7 +72,7 @@ All.prototype = { return nodeConfig.nodeUserList.length + "人非会签" } }else{ - return "指定成员" + // return "指定成员" } } else if (nodeConfig.settype == 2) { let level = nodeConfig.directorLevel == 1 ? '直接主管' : '第' + nodeConfig.directorLevel + '级主管' @@ -80,7 +80,9 @@ All.prototype = { return level } else if (nodeConfig.examineMode == 2) { return level + "会签" - } + }else if (nodeConfig.examineMode == 3) { + return level + + "非会签" + } } else if (nodeConfig.settype == 3) { console.log("nodeConfig==会签==>",nodeConfig) if (nodeConfig.nodeUserList.length == 1) { @@ -109,6 +111,18 @@ All.prototype = { return '从直接主管到通讯录中级别最高的第' + nodeConfig.examineEndDirectorLevel + '个层级主管' }else if (nodeConfig.settype == 7){ return "指定前置审批为本节点设置审批人" + }else if (nodeConfig.settype == 8){ + console.log("checkedFormList--1111->",nodeConfig) + if(nodeConfig.nodeUserList.length > 0){ + if (nodeConfig.examineMode == 1) { + return nodeConfig.nodeUserList[0].name + "依次审批" + } else if (nodeConfig.examineMode == 2) { + return nodeConfig.nodeUserList[0].name + "会签" + }else if (nodeConfig.examineMode == 3) { + return nodeConfig.nodeUserList[0].name + "非会签" + } + } + } }, dealStr(str:any, obj:any) { diff --git a/src/views/sysworkflow/codepage/index.vue b/src/views/sysworkflow/codepage/index.vue index 070016bce..54d448e24 100644 --- a/src/views/sysworkflow/codepage/index.vue +++ b/src/views/sysworkflow/codepage/index.vue @@ -151,6 +151,7 @@ const drawerWidht = ref() const isFormFlow = ref(false) const customerFormKey = ref() const customerFormName = ref() +const flowKey = ref() const setupWorkFlow = (cont:customerFormCont) => { drawerWidht.value = contbody.value?.clientWidth // console.log("clientHeight--->",drawerWidht.value) @@ -158,6 +159,7 @@ const setupWorkFlow = (cont:customerFormCont) => { isFormFlow.value = true; customerFormName.value = cont.name customerFormKey.value = cont.id.toString() + flowKey.value = cont.flowkey.toString() } @@ -286,7 +288,7 @@ const setupWorkFlow = (cont:customerFormCont) => { - +