From 51ffeb06e91518affba9c8d5c3ea5f9dc3f159cc Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Wed, 18 Oct 2023 09:04:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A1=E6=89=B9=E8=8A=82=E7=82=B9=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + src/App.vue | 1 + src/api/displayboardapi/indexapi.ts | 16 ++ src/api/workflowapi/index.ts | 18 +- src/assets/images/checkbox.png | Bin 0 -> 3283 bytes src/assets/images/checkbox_true.png | Bin 0 -> 3547 bytes src/components/workflow/addNode.vue | 77 ++++++- src/components/workflow/dialog/common.ts | 31 ++- .../workflow/dialog/employeesDialog.vue | 10 +- .../workflow/dialog/employeesRoleDialog.vue | 190 ++++++++++++++++++ src/components/workflow/dialog/roleDialog.vue | 103 ++++++++++ .../workflow/drwer/approverDrawer.vue | 155 +++++++++++--- .../workflow/drwer/conditionDrawer.vue | 2 +- .../workflow/drwer/copyerDrawer.vue | 104 +++++++++- src/components/workflow/nodeWrap.vue | 12 +- src/components/workflow/selectBox.vue | 56 ++++-- src/components/workflow/selectBoxs.vue | 121 +++++++++++ src/components/workflow/selectResult.vue | 5 +- src/utils/workflow/const.ts | 5 +- src/utils/workflow/index.ts | 10 +- .../sysworkflow/flow/flowDrawingBoard.vue | 14 ++ src/views/sysworkflow/flow/index.vue | 21 +- 22 files changed, 877 insertions(+), 75 deletions(-) create mode 100644 src/assets/images/checkbox.png create mode 100644 src/assets/images/checkbox_true.png create mode 100644 src/components/workflow/dialog/employeesRoleDialog.vue create mode 100644 src/components/workflow/dialog/roleDialog.vue create mode 100644 src/components/workflow/selectBoxs.vue create mode 100644 src/views/sysworkflow/flow/flowDrawingBoard.vue diff --git a/package.json b/package.json index bc416ca49..98e623811 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "screenfull": "^6.0.0", "tinymce": "^6.7.0", "ts-md5": "^1.3.1", + "uuid": "^9.0.1", "vue": "^3.3.1", "vue-i18n": "9.2.2", "vue-router": "^4.2.0", diff --git a/src/App.vue b/src/App.vue index 9fb00e087..fd64a559d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -9,3 +9,4 @@ const appStore = useAppStore(); + diff --git a/src/api/displayboardapi/indexapi.ts b/src/api/displayboardapi/indexapi.ts index 11edfeba1..8f1e10268 100644 --- a/src/api/displayboardapi/indexapi.ts +++ b/src/api/displayboardapi/indexapi.ts @@ -70,3 +70,19 @@ export const getOrgEveryonePeople = (data?: publicId): AxiosPromise { + return request({ + url: '/kpiapi/powerpc/search_people', + method: 'post', + data: data + }) +} +//搜索角色(新版) +export const getRoles = (data?: any) => { + return request({ + url: '/kpiapi/powerpc/system_role_list_flow', + method: 'post', + data: data + }) +} diff --git a/src/api/workflowapi/index.ts b/src/api/workflowapi/index.ts index ec48204b3..bd2cf580d 100644 --- a/src/api/workflowapi/index.ts +++ b/src/api/workflowapi/index.ts @@ -21,7 +21,7 @@ export function setWorkFlowData(data: any):any { data: data }); } -//保存工作流 +//保存工作流 export function getConditions(data: any):any { return request({ url: '/systemapi/task_flow/init_workflow', @@ -29,3 +29,19 @@ export function getConditions(data: any):any { data: data }); } +//审批线已经存在得节点 +export function getAllParentNode(data: any) { + return request({ + url: '/kpiapi/workflowapi/get_all_parent_node', + method: 'post', + data: data + }); +} +//判断是否显示(指定审批节点自选)选项及可选节点 +export function judgeOptionalNode(data: any) { + return request({ + url: '/kpiapi/workflowapi/judge_optional_node', + method: 'post', + data: data + }); +} diff --git a/src/assets/images/checkbox.png b/src/assets/images/checkbox.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8e771389e2546908fcb9f4bca74bdc4f57c85c GIT binary patch literal 3283 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 M*Lu(5Z$fwd3&48EAOHXW literal 0 HcmV?d00001 diff --git a/src/components/workflow/addNode.vue b/src/components/workflow/addNode.vue index c0f69d335..b51875303 100644 --- a/src/components/workflow/addNode.vue +++ b/src/components/workflow/addNode.vue @@ -4,7 +4,12 @@ @ 备注: 添加节点弹窗 --> diff --git a/src/components/workflow/dialog/common.ts b/src/components/workflow/dialog/common.ts index 80ec63157..e0dea4391 100644 --- a/src/components/workflow/dialog/common.ts +++ b/src/components/workflow/dialog/common.ts @@ -1,11 +1,11 @@ import $func from '@/utils/workflow/index' import { outputOrgAndUser } from '@/api/displayboardapi/types' -import { getBasisOrgChiled } from '@/api/displayboardapi/indexapi' +import { getBasisOrgChiled,getEmployees,getRoles } from '@/api/displayboardapi/indexapi' export let searchVal = ref('') -export let departments = ref() +export let departments = ref() export let roles = ref({}) //获取行政组织及人员 @@ -17,3 +17,30 @@ export let getDepartmentList = async (parentId:any = 0) => { console.log("data---->",data) departments.value = data; } +//搜索成员 +export let getDebounceData = (event:any, type = 1) => { + $func.debounce(async () => { + if (event.target.value) { + let data = { + name: event.target.value, + page: 1, + pagesize: 30 + } + if (type == 1) { + departments.value.childDepartments = []; + let res = await getEmployees(data) + departments.value.employees = res.data.list + } else { + let res = await getRoles(data) + roles.value = res.data.list + } + } else { + type == 1 ? await getDepartmentList() : await getRoleList(); + } + })() +} +//角色列表 +export let getRoleList = async () => { + let { data: { list } } = await getRoles() + roles.value = list; +} diff --git a/src/components/workflow/dialog/employeesDialog.vue b/src/components/workflow/dialog/employeesDialog.vue index 6b1094ea1..905802cff 100644 --- a/src/components/workflow/dialog/employeesDialog.vue +++ b/src/components/workflow/dialog/employeesDialog.vue @@ -4,12 +4,12 @@ @ 备注: 人员选择 --> + + diff --git a/src/components/workflow/dialog/roleDialog.vue b/src/components/workflow/dialog/roleDialog.vue new file mode 100644 index 000000000..83fa98fe2 --- /dev/null +++ b/src/components/workflow/dialog/roleDialog.vue @@ -0,0 +1,103 @@ + + + + diff --git a/src/components/workflow/drwer/approverDrawer.vue b/src/components/workflow/drwer/approverDrawer.vue index 4f238a907..646bb47a7 100644 --- a/src/components/workflow/drwer/approverDrawer.vue +++ b/src/components/workflow/drwer/approverDrawer.vue @@ -7,13 +7,21 @@ import $func from '@/utils/workflow/index' import { setTypes, selectModes, selectRanges } from '@/utils/workflow/const' import { useStore } from '@/store/workflow/index' +import { getAllParentNode,judgeOptionalNode } from '@/api/workflowapi/index' let props = defineProps({ + nodeConfig:{ + type: Object, + default: () => ({}), + }, directormaxlevel: { type: Number, - default: 0 + default: 4 } }); +const nodeTitle = ref("审批人设置") +const nodeOptional = ref() //审批线已经存在得节点 +const nodeAllVerify = ref() let approverConfig = ref({}) let approverVisible = ref(false) let approverRoleVisible = ref(false) @@ -31,8 +39,33 @@ let visible = computed({ closeDrawer() } }) + watch(approverConfig1, (val:any)=>{ + // console.log("directormaxlevel",props.directormaxlevel) approverConfig.value = val.value + if(val.type == 3){ + nodeTitle.value = "执行人设置" + }else{ + nodeTitle.value = "审批人设置" + } + + judgeOptionalNode(props.nodeConfig) + .then((data)=>{ + if(data.code == 0){ + let sendData = { + id:val.value.fromNode, + allcont:data.data.allcont + } + getAllParentNode(sendData) + .then((data)=>{ + if(data.code == 0){ + nodeOptional.value = data.data.allcont + } + }) + } + }) + + }) let changeRange = ()=> { approverConfig.value.nodeUserList = []; @@ -80,34 +113,35 @@ const closeDrawer = ()=> { } - -
+ +
+

该审批节点设置“发起人自己”后,审批人默认为发起人

+
+ +

审批终点

发起人的:

+ +
+

可选节点列表

+ + 发起人 + {{ item.nodeName }}(编号:{{ item.nodeNumber }}) + + +
+ +

多人审批时采用的审批方式

依次审批 -
会签(须所有审批人同意) + 非会签(有一位审批人同意即可)
-
+

审批人为空时

自动审批通过/不允许发起 @@ -153,20 +200,64 @@ const closeDrawer = ()=> { 转交给审核管理员
+ +
+

退回设置

+ + 发起人 + {{ item.nodeName }}(编号:{{ item.nodeNumber }}) + +
+ + + +
+ + + + + + +
diff --git a/src/components/workflow/drwer/conditionDrawer.vue b/src/components/workflow/drwer/conditionDrawer.vue index 92e3852d3..2465215d1 100644 --- a/src/components/workflow/drwer/conditionDrawer.vue +++ b/src/components/workflow/drwer/conditionDrawer.vue @@ -33,7 +33,7 @@ let visible = computed({ } }) watch(conditionsConfig1, (val:any) => { - console.log("val.priorityLevel",val.priorityLevel) + // console.log("val.priorityLevel",val.priorityLevel) conditionsConfig.value = val.value; PriorityLevel.value = val.priorityLevel conditionConfig.value = val.priorityLevel diff --git a/src/components/workflow/drwer/copyerDrawer.vue b/src/components/workflow/drwer/copyerDrawer.vue index 7f8629100..52a519448 100644 --- a/src/components/workflow/drwer/copyerDrawer.vue +++ b/src/components/workflow/drwer/copyerDrawer.vue @@ -4,6 +4,7 @@ @ 备注: 抄送配置 --> + + diff --git a/src/components/workflow/selectResult.vue b/src/components/workflow/selectResult.vue index dddd4af78..2ab29afac 100644 --- a/src/components/workflow/selectResult.vue +++ b/src/components/workflow/selectResult.vue @@ -4,7 +4,7 @@ @ 备注: 已选择得内容 -->