From e354db74a7e57be88215ddba2ea11d3cbc944321 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期四, 06 六月 2024 11:00:23 +0800 Subject: [PATCH] !121 ♥️发布 2.2.0-BETA 公测版本 Merge pull request !121 from 疯狂的狮子Li/dev --- src/components/Process/submitVerify.vue | 187 ++++++++++++---------- src/views/index.vue | 1 src/api/workflow/leave/types.ts | 4 src/api/workflow/processInstance/index.ts | 36 ++-- src/bpmn/panel/property/TaskListener.vue | 4 src/types/global.d.ts | 2 src/api/workflow/workflowCommon/index.ts | 48 +++--- src/bpmn/panel/property/ExecutionListener.vue | 4 vite.config.ts | 1 src/views/workflow/processInstance/index.vue | 13 + src/views/workflow/leave/leaveEdit.vue | 26 -- src/components/Process/approvalRecord.vue | 6 src/bpmn/panel/GatewayPanel.vue | 4 src/router/index.ts | 6 src/bpmn/hooks/usePanel.ts | 2 src/bpmn/index.vue | 2 src/bpmn/panel/ParticipantPanel.vue | 4 src/views/workflow/leave/index.vue | 36 +-- src/views/workflow/task/myDocument.vue | 26 +-- src/bpmn/panel/index.vue | 2 src/bpmn/hooks/useParseElement.ts | 2 src/views/system/oss/index.vue | 2 src/bpmn/panel/TaskPanel.vue | 4 src/bpmn/panel/property/ListenerParam.vue | 2 src/api/workflow/leave/index.ts | 10 src/components/BpmnView/index.vue | 7 /dev/null | 3 src/bpmn/panel/ProcessPanel.vue | 4 src/bpmn/panel/SequenceFlowPanel.vue | 4 src/store/modules/modeler.ts | 2 package.json | 12 - .env.production | 2 src/bpmn/panel/SubProcessPanel.vue | 4 src/bpmn/panel/StartEndPanel.vue | 4 34 files changed, 224 insertions(+), 252 deletions(-) diff --git a/.env.production b/.env.production index 2700ee0..9188c63 100644 --- a/.env.production +++ b/.env.production @@ -11,7 +11,7 @@ VITE_APP_MONITRO_ADMIN = '/admin/applications' # SnailJob 鎺у埗鍙板湴鍧� -VITE_APP_SNAILJOB_ADMIN = 'http://localhost:8800/snail-job' +VITE_APP_SNAILJOB_ADMIN = '/snail-job' # 鐢熶骇鐜 VITE_APP_BASE_API = '/prod-api' diff --git a/package.json b/package.json index 5154ed0..3557360 100644 --- a/package.json +++ b/package.json @@ -20,15 +20,12 @@ "dependencies": { "@element-plus/icons-vue": "2.3.1", "@highlightjs/vue-plugin": "2.1.0", - "@lezer/common": "1.2.1", "@vueup/vue-quill": "1.2.0", "@vueuse/core": "10.9.0", "animate.css": "4.1.1", "await-to-js": "3.0.0", "axios": "1.6.8", "bpmn-js": "16.4.0", - "camunda-bpmn-js-behaviors": "1.2.2", - "camunda-bpmn-moddle": "7.0.1", "crypto-js": "4.2.0", "diagram-js": "12.3.0", "didi": "9.0.2", @@ -40,21 +37,15 @@ "image-conversion": "^2.1.1", "js-cookie": "3.0.5", "jsencrypt": "3.3.2", - "moddle": "6.2.3", "nprogress": "0.2.0", - "path-browserify": "1.0.1", - "path-to-regexp": "6.2.1", "pinia": "2.1.7", - "preact": "10.19.7", "screenfull": "6.0.2", - "vform3-builds": "3.0.10", "vue": "3.4.25", "vue-cropper": "1.1.1", "vue-i18n": "9.10.2", "vue-router": "4.3.2", "vue-types": "5.1.1", - "vxe-table": "4.5.22", - "zeebe-bpmn-moddle": "1.0.0" + "vxe-table": "4.5.22" }, "devDependencies": { "@iconify/json": "2.2.201", @@ -64,7 +55,6 @@ "@types/js-cookie": "3.0.6", "@types/node": "18.18.2", "@types/nprogress": "0.2.3", - "@types/path-browserify": "1.0.2", "@typescript-eslint/eslint-plugin": "7.3.1", "@typescript-eslint/parser": "7.3.1", "@unocss/preset-attributify": "0.58.6", diff --git a/src/api/workflow/leave/index.ts b/src/api/workflow/leave/index.ts index 36c6fdf..4e6f363 100644 --- a/src/api/workflow/leave/index.ts +++ b/src/api/workflow/leave/index.ts @@ -10,7 +10,7 @@ export const listLeave = (query?: LeaveQuery): AxiosPromise<LeaveVO[]> => { return request({ - url: '/demo/leave/list', + url: '/workflow/leave/list', method: 'get', params: query }); @@ -22,7 +22,7 @@ */ export const getLeave = (id: string | number): AxiosPromise<LeaveVO> => { return request({ - url: '/demo/leave/' + id, + url: '/workflow/leave/' + id, method: 'get' }); }; @@ -33,7 +33,7 @@ */ export const addLeave = (data: LeaveForm): AxiosPromise<LeaveVO> => { return request({ - url: '/demo/leave', + url: '/workflow/leave', method: 'post', data: data }); @@ -45,7 +45,7 @@ */ export const updateLeave = (data: LeaveForm): AxiosPromise<LeaveVO> => { return request({ - url: '/demo/leave', + url: '/workflow/leave', method: 'put', data: data }); @@ -57,7 +57,7 @@ */ export const delLeave = (id: string | number | Array<string | number>) => { return request({ - url: '/demo/leave/' + id, + url: '/workflow/leave/' + id, method: 'delete' }); }; diff --git a/src/api/workflow/leave/types.ts b/src/api/workflow/leave/types.ts index b093546..a44d35d 100644 --- a/src/api/workflow/leave/types.ts +++ b/src/api/workflow/leave/types.ts @@ -5,7 +5,7 @@ endDate: string; leaveDays: number; remark: string; - processInstanceVo: any; + status?: string; } export interface LeaveForm extends BaseEntity { @@ -15,7 +15,7 @@ endDate?: string; leaveDays?: number; remark?: string; - processInstanceVo?: any; + status?: string; } export interface LeaveQuery extends PageQuery { diff --git a/src/api/workflow/processInstance/index.ts b/src/api/workflow/processInstance/index.ts index 80f122f..b949b51 100644 --- a/src/api/workflow/processInstance/index.ts +++ b/src/api/workflow/processInstance/index.ts @@ -29,33 +29,33 @@ }; /** - * 閫氳繃娴佺▼瀹炰緥id鑾峰彇鍘嗗彶娴佺▼鍥� + * 閫氳繃涓氬姟id鑾峰彇鍘嗗彶娴佺▼鍥� */ -export const getHistoryImage = (processInstanceId: string) => { +export const getHistoryImage = (businessKey: string) => { return request({ - url: `/workflow/processInstance/getHistoryImage/${processInstanceId}` + '?t' + Math.random(), + url: `/workflow/processInstance/getHistoryImage/${businessKey}` + '?t' + Math.random(), method: 'get' }); }; /** - * 閫氳繃娴佺▼瀹炰緥id鑾峰彇鍘嗗彶娴佺▼鍥捐繍琛屼腑锛屽巻鍙茬瓑鑺傜偣 + * 閫氳繃涓氬姟id鑾峰彇鍘嗗彶娴佺▼鍥捐繍琛屼腑锛屽巻鍙茬瓑鑺傜偣 */ -export const getHistoryList = (instanceId: string): AxiosPromise<Record<string, any>> => { +export const getHistoryList = (businessKey: string): AxiosPromise<Record<string, any>> => { return request({ - url: `/workflow/processInstance/getHistoryList/${instanceId}` + '?t' + Math.random(), + url: `/workflow/processInstance/getHistoryList/${businessKey}` + '?t' + Math.random(), method: 'get' }); }; /** * 鑾峰彇瀹℃壒璁板綍 - * @param processInstanceId 娴佺▼瀹炰緥id + * @param businessKey 涓氬姟id * @returns */ -export const getHistoryRecord = (processInstanceId: string) => { +export const getHistoryRecord = (businessKey: string) => { return request({ - url: `/workflow/processInstance/getHistoryRecord/${processInstanceId}`, + url: `/workflow/processInstance/getHistoryRecord/${businessKey}`, method: 'get' }); }; @@ -75,24 +75,24 @@ /** * 杩愯涓殑瀹炰緥 鍒犻櫎绋嬪疄渚嬶紝鍒犻櫎鍘嗗彶璁板綍锛屽垹闄や笟鍔′笌娴佺▼鍏宠仈淇℃伅 - * @param processInstanceId 娴佺▼瀹炰緥id + * @param businessKey 涓氬姟id * @returns */ -export const deleteRunAndHisInstance = (processInstanceId: string | string[]) => { +export const deleteRunAndHisInstance = (businessKey: string | string[]) => { return request({ - url: `/workflow/processInstance/deleteRunAndHisInstance/${processInstanceId}`, + url: `/workflow/processInstance/deleteRunAndHisInstance/${businessKey}`, method: 'delete' }); }; /** * 宸插畬鎴愮殑瀹炰緥 鍒犻櫎绋嬪疄渚嬶紝鍒犻櫎鍘嗗彶璁板綍锛屽垹闄や笟鍔′笌娴佺▼鍏宠仈淇℃伅 - * @param processInstanceId 娴佺▼瀹炰緥id + * @param businessKey 涓氬姟id * @returns */ -export const deleteFinishAndHisInstance = (processInstanceId: string | string[]) => { +export const deleteFinishAndHisInstance = (businessKey: string | string[]) => { return request({ - url: `/workflow/processInstance/deleteFinishAndHisInstance/${processInstanceId}`, + url: `/workflow/processInstance/deleteFinishAndHisInstance/${businessKey}`, method: 'delete' }); }; @@ -112,12 +112,12 @@ /** * 鎾ら攢娴佺▼ - * @param processInstanceId 娴佺▼瀹炰緥id + * @param businessKey 涓氬姟id * @returns */ -export const cancelProcessApply = (processInstanceId: string) => { +export const cancelProcessApply = (businessKey: string) => { return request({ - url: `/workflow/processInstance/cancelProcessApply/${processInstanceId}`, + url: `/workflow/processInstance/cancelProcessApply/${businessKey}`, method: 'post' }); }; diff --git a/src/api/workflow/workflowCommon/index.ts b/src/api/workflow/workflowCommon/index.ts index a90216a..63ce318 100644 --- a/src/api/workflow/workflowCommon/index.ts +++ b/src/api/workflow/workflowCommon/index.ts @@ -1,29 +1,29 @@ import { RouterJumpVo } from '@/api/workflow/workflowCommon/types'; export default { - routerJump(routerJumpVo: RouterJumpVo,proxy){ - if (routerJumpVo.wfNodeConfigVo && routerJumpVo.wfNodeConfigVo.formType === 'static' && routerJumpVo.wfNodeConfigVo.wfFormManageVo) { - proxy.$tab.closePage(proxy.$route); - proxy.$router.push({ - path: `${routerJumpVo.wfNodeConfigVo.wfFormManageVo.router}`, - query: { - id: routerJumpVo.businessKey, - type: routerJumpVo.type, - taskId: routerJumpVo.taskId - } - }); - } else if (routerJumpVo.wfNodeConfigVo && routerJumpVo.wfNodeConfigVo.formType === 'dynamic' && routerJumpVo.wfNodeConfigVo.wfFormManageVo) { - proxy.$tab.closePage(proxy.$route); - proxy.$router.push({ - path: `${routerJumpVo.wfNodeConfigVo.wfFormManageVo.router}`, - query: { - id: routerJumpVo.businessKey, - type: routerJumpVo.type, - taskId: routerJumpVo.taskId - } - }); - }else { - proxy?.$modal.msgError('璇峰埌妯″瀷閰嶇疆鑿滃崟锛�'); + routerJump(routerJumpVo: RouterJumpVo, proxy) { + if (routerJumpVo.wfNodeConfigVo && routerJumpVo.wfNodeConfigVo.formType === 'static' && routerJumpVo.wfNodeConfigVo.wfFormManageVo) { + proxy.$tab.closePage(proxy.$route); + proxy.$router.push({ + path: `${routerJumpVo.wfNodeConfigVo.wfFormManageVo.router}`, + query: { + id: routerJumpVo.businessKey, + type: routerJumpVo.type, + taskId: routerJumpVo.taskId } + }); + } else if (routerJumpVo.wfNodeConfigVo && routerJumpVo.wfNodeConfigVo.formType === 'dynamic' && routerJumpVo.wfNodeConfigVo.wfFormManageVo) { + proxy.$tab.closePage(proxy.$route); + proxy.$router.push({ + path: `${routerJumpVo.wfNodeConfigVo.wfFormManageVo.router}`, + query: { + id: routerJumpVo.businessKey, + type: routerJumpVo.type, + taskId: routerJumpVo.taskId + } + }); + } else { + proxy?.$modal.msgError('璇峰埌妯″瀷閰嶇疆鑿滃崟锛�'); } -} \ No newline at end of file + } +}; diff --git a/src/bpmn/hooks/usePanel.ts b/src/bpmn/hooks/usePanel.ts index d92b7d7..ace579b 100644 --- a/src/bpmn/hooks/usePanel.ts +++ b/src/bpmn/hooks/usePanel.ts @@ -1,5 +1,5 @@ import showConfig from '../assets/showConfig'; -import { ModdleElement } from 'bpmn'; +import type { ModdleElement } from 'bpmn'; import useModelerStore from '@/store/modules/modeler'; import { MultiInstanceTypeEnum } from '@/enums/bpmn/IndexEnums'; interface Options { diff --git a/src/bpmn/hooks/useParseElement.ts b/src/bpmn/hooks/useParseElement.ts index a5a255d..e1a6054 100644 --- a/src/bpmn/hooks/useParseElement.ts +++ b/src/bpmn/hooks/useParseElement.ts @@ -1,4 +1,4 @@ -import { ModdleElement } from 'bpmn'; +import type { ModdleElement } from 'bpmn'; interface Options { element: ModdleElement; diff --git a/src/bpmn/index.vue b/src/bpmn/index.vue index 924a838..15437c8 100644 --- a/src/bpmn/index.vue +++ b/src/bpmn/index.vue @@ -90,7 +90,7 @@ import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css'; import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css'; import './assets/style/index.scss'; -import { Canvas, Modeler } from 'bpmn'; +import type { Canvas, Modeler } from 'bpmn'; import PropertyPanel from './panel/index.vue'; import BpmnModeler from 'bpmn-js/lib/Modeler.js'; import defaultXML from './assets/defaultXML'; diff --git a/src/bpmn/panel/GatewayPanel.vue b/src/bpmn/panel/GatewayPanel.vue index 5931539..20cc134 100644 --- a/src/bpmn/panel/GatewayPanel.vue +++ b/src/bpmn/panel/GatewayPanel.vue @@ -41,8 +41,8 @@ <script setup lang="ts"> import useParseElement from '../hooks/useParseElement'; import usePanel from '../hooks/usePanel'; -import { Modeler, ModdleElement } from 'bpmn'; -import { GatewayPanel } from 'bpmnDesign'; +import type { Modeler, ModdleElement } from 'bpmn'; +import type { GatewayPanel } from 'bpmnDesign'; import ExecutionListener from './property/ExecutionListener.vue'; interface PropType { diff --git a/src/bpmn/panel/ParticipantPanel.vue b/src/bpmn/panel/ParticipantPanel.vue index cca28bd..b1d42e6 100644 --- a/src/bpmn/panel/ParticipantPanel.vue +++ b/src/bpmn/panel/ParticipantPanel.vue @@ -42,8 +42,8 @@ import useParseElement from '../hooks/useParseElement'; import usePanel from '../hooks/usePanel'; import ExecutionListener from './property/ExecutionListener.vue'; -import { ModdleElement } from 'bpmn'; -import { ParticipantPanel } from 'bpmnDesign'; +import type { ModdleElement } from 'bpmn'; +import type { ParticipantPanel } from 'bpmnDesign'; interface PropType { element: ModdleElement; diff --git a/src/bpmn/panel/ProcessPanel.vue b/src/bpmn/panel/ProcessPanel.vue index 7d9a359..9e118e2 100644 --- a/src/bpmn/panel/ProcessPanel.vue +++ b/src/bpmn/panel/ProcessPanel.vue @@ -43,8 +43,8 @@ import ExecutionListener from './property/ExecutionListener.vue'; import useParseElement from '../hooks/useParseElement'; import usePanel from '../hooks/usePanel'; -import { Modeler, ModdleElement } from 'bpmn'; -import { ProcessPanel } from 'bpmnDesign'; +import type { Modeler, ModdleElement } from 'bpmn'; +import type { ProcessPanel } from 'bpmnDesign'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; diff --git a/src/bpmn/panel/SequenceFlowPanel.vue b/src/bpmn/panel/SequenceFlowPanel.vue index fd8ad3c..eac8227 100644 --- a/src/bpmn/panel/SequenceFlowPanel.vue +++ b/src/bpmn/panel/SequenceFlowPanel.vue @@ -49,8 +49,8 @@ import useModelerStore from '@/store/modules/modeler'; import usePanel from '../hooks/usePanel'; import ExecutionListener from './property/ExecutionListener.vue'; -import { Modeler, ModdleElement } from 'bpmn'; -import { SequenceFlowPanel } from 'bpmnDesign'; +import type { Modeler, ModdleElement } from 'bpmn'; +import type { SequenceFlowPanel } from 'bpmnDesign'; interface PropType { element: ModdleElement; diff --git a/src/bpmn/panel/StartEndPanel.vue b/src/bpmn/panel/StartEndPanel.vue index d43ed80..bde1212 100644 --- a/src/bpmn/panel/StartEndPanel.vue +++ b/src/bpmn/panel/StartEndPanel.vue @@ -42,8 +42,8 @@ import ExecutionListener from './property/ExecutionListener.vue'; import useParseElement from '../hooks/useParseElement'; import usePanel from '../hooks/usePanel'; -import { Modeler, ModdleElement } from 'bpmn'; -import { StartEndPanel } from 'bpmnDesign'; +import type { Modeler, ModdleElement } from 'bpmn'; +import type { StartEndPanel } from 'bpmnDesign'; interface PropType { element: ModdleElement; diff --git a/src/bpmn/panel/SubProcessPanel.vue b/src/bpmn/panel/SubProcessPanel.vue index e0cedcb..3490fff 100644 --- a/src/bpmn/panel/SubProcessPanel.vue +++ b/src/bpmn/panel/SubProcessPanel.vue @@ -111,8 +111,8 @@ import ExecutionListener from './property/ExecutionListener.vue'; import useParseElement from '../hooks/useParseElement'; import usePanel from '../hooks/usePanel'; -import { ModdleElement } from 'bpmn'; -import { SubProcessPanel } from 'bpmnDesign'; +import type { ModdleElement } from 'bpmn'; +import type { SubProcessPanel } from 'bpmnDesign'; import { MultiInstanceTypeEnum } from '@/enums/bpmn/IndexEnums'; interface PropType { diff --git a/src/bpmn/panel/TaskPanel.vue b/src/bpmn/panel/TaskPanel.vue index bc037ee..358fba9 100644 --- a/src/bpmn/panel/TaskPanel.vue +++ b/src/bpmn/panel/TaskPanel.vue @@ -243,8 +243,8 @@ import ExecutionListener from './property/ExecutionListener.vue'; import TaskListener from './property/TaskListener.vue'; import DueDate from './property/DueDate.vue'; -import { ModdleElement } from 'bpmn'; -import { TaskPanel } from 'bpmnDesign'; +import type { ModdleElement } from 'bpmn'; +import type { TaskPanel } from 'bpmnDesign'; import { AllocationTypeEnum, MultiInstanceTypeEnum, SpecifyDescEnum } from '@/enums/bpmn/IndexEnums'; import { UserVO } from '@/api/system/user/types'; import { RoleVO } from '@/api/system/role/types'; diff --git a/src/bpmn/panel/index.vue b/src/bpmn/panel/index.vue index eecb0cb..445571a 100644 --- a/src/bpmn/panel/index.vue +++ b/src/bpmn/panel/index.vue @@ -13,7 +13,7 @@ import SequenceFlowPanel from './SequenceFlowPanel.vue'; import ParticipantPanel from './ParticipantPanel.vue'; import SubProcessPanel from './SubProcessPanel.vue'; -import { Modeler, ModdleElement } from 'bpmn'; +import type { Modeler, ModdleElement } from 'bpmn'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; interface propsType { modeler: Modeler; diff --git a/src/bpmn/panel/property/ExecutionListener.vue b/src/bpmn/panel/property/ExecutionListener.vue index 7620cf3..3c584cb 100644 --- a/src/bpmn/panel/property/ExecutionListener.vue +++ b/src/bpmn/panel/property/ExecutionListener.vue @@ -90,8 +90,8 @@ <script setup lang="ts"> import ListenerParam from './ListenerParam.vue'; import { VxeTableEvents, VxeTableInstance, VxeTablePropTypes } from 'vxe-table'; -import { ExecutionListenerVO } from 'bpmnDesign'; -import { Moddle, Modeler, ModdleElement } from 'bpmn'; +import type { ExecutionListenerVO } from 'bpmnDesign'; +import type { Moddle, Modeler, ModdleElement } from 'bpmn'; import usePanel from '../../hooks/usePanel'; import useDialog from '@/hooks/useDialog'; diff --git a/src/bpmn/panel/property/ListenerParam.vue b/src/bpmn/panel/property/ListenerParam.vue index 334249b..21c6de1 100644 --- a/src/bpmn/panel/property/ListenerParam.vue +++ b/src/bpmn/panel/property/ListenerParam.vue @@ -47,7 +47,7 @@ <script setup lang="ts"> import { VXETable, VxeTableInstance, VxeTablePropTypes } from 'vxe-table'; -import { ParamVO } from 'bpmnDesign'; +import type { ParamVO } from 'bpmnDesign'; import useDialog from '@/hooks/useDialog'; interface PropType { diff --git a/src/bpmn/panel/property/TaskListener.vue b/src/bpmn/panel/property/TaskListener.vue index db774e4..9a32c47 100644 --- a/src/bpmn/panel/property/TaskListener.vue +++ b/src/bpmn/panel/property/TaskListener.vue @@ -91,8 +91,8 @@ <script setup lang="ts"> import ListenerParam from './ListenerParam.vue'; import { VxeTableEvents, VxeTableInstance, VxeTablePropTypes } from 'vxe-table'; -import { TaskListenerVO } from 'bpmnDesign'; -import { ModdleElement } from 'bpmn'; +import type { TaskListenerVO } from 'bpmnDesign'; +import type { ModdleElement } from 'bpmn'; import usePanel from '../../hooks/usePanel'; import useDialog from '@/hooks/useDialog'; diff --git a/src/components/BpmnView/index.vue b/src/components/BpmnView/index.vue index a79f084..c5e0c7b 100644 --- a/src/components/BpmnView/index.vue +++ b/src/components/BpmnView/index.vue @@ -37,7 +37,7 @@ import MoveCanvasModule from 'diagram-js/lib/navigation/movecanvas'; import ZoomScrollModule from 'diagram-js/lib/navigation/zoomscroll'; import { ModuleDeclaration } from 'didi'; -import { Canvas, ModdleElement } from 'bpmn'; +import type { Canvas, ModdleElement } from 'bpmn'; import EventBus from 'diagram-js/lib/core/EventBus'; import Overlays from 'diagram-js/lib/features/overlays/Overlays'; import processApi from '@/api/workflow/processInstance/index'; @@ -51,7 +51,7 @@ const bpmnVisible = ref(true); const historyList = ref([]); -const init = (instanceId) => { +const init = (businessKey) => { loading.value = true; bpmnVisible.value = true; nextTick(async () => { @@ -67,7 +67,7 @@ MoveCanvasModule ] as ModuleDeclaration[] }); - const resp = await processApi.getHistoryList(instanceId); + const resp = await processApi.getHistoryList(businessKey); xml.value = resp.data.xml; taskList.value = resp.data.taskList; historyList.value = resp.data.historyList; @@ -133,6 +133,7 @@ <p>寮�濮嬫椂闂达細${data.startTime || ''}</p> <p>缁撴潫鏃堕棿锛�${data.endTime || ''}</p> <p>瀹℃壒鑰楁椂锛�${data.runDuration || ''}</p> + <p>娴佺▼鐗堟湰锛歷${data.version || ''}</p> </div>` }); }; diff --git a/src/components/Process/approvalRecord.vue b/src/components/Process/approvalRecord.vue index cbce87a..37667ca 100644 --- a/src/components/Process/approvalRecord.vue +++ b/src/components/Process/approvalRecord.vue @@ -67,17 +67,17 @@ const bpmnViewRef = ref<BpmnView>(); //鍒濆鍖栨煡璇㈠鎵硅褰� -const init = async (instanceId: string) => { +const init = async (businessKey: string) => { visible.value = true; loading.value = true; tabActiveName.value = 'bpmn'; historyList.value = []; - processApi.getHistoryRecord(instanceId).then((resp) => { + processApi.getHistoryRecord(businessKey).then((resp) => { historyList.value = resp.data; loading.value = false; }); await nextTick(() => { - bpmnViewRef.value.init(instanceId); + bpmnViewRef.value.init(businessKey); }); }; diff --git a/src/components/Process/submitVerify.vue b/src/components/Process/submitVerify.vue index d71b855..bcbc657 100644 --- a/src/components/Process/submitVerify.vue +++ b/src/components/Process/submitVerify.vue @@ -8,29 +8,43 @@ <el-checkbox label="3" name="type">鐭俊</el-checkbox> </el-checkbox-group> </el-form-item> - <el-form-item label="闄勪欢" v-if="task.businessStatus === 'waiting'"> - <fileUpload v-model="form.fileId" :fileType="['doc', 'xls', 'ppt', 'txt', 'pdf', 'xlsx', 'docx', 'zip']" :fileSize="'20'"/> + <el-form-item v-if="task.businessStatus === 'waiting'" label="闄勪欢"> + <fileUpload v-model="form.fileId" :file-type="['doc', 'xls', 'ppt', 'txt', 'pdf', 'xlsx', 'docx', 'zip']" :file-size="'20'" /> </el-form-item> <el-form-item label="鎶勯��"> - <el-button type="primary" @click="openUserSelectCopy" icon="Plus" circle /> - <el-tag v-for="user in selectCopyUserList" :key="user.userId" closable style="margin: 2px" @close="handleCopyCloseTag(user)"> - {{ user.userName }} - </el-tag> + <el-button type="primary" icon="Plus" circle @click="openUserSelectCopy" /> + <el-tag v-for="user in selectCopyUserList" :key="user.userId" closable style="margin: 2px" @close="handleCopyCloseTag(user)"> + {{ user.userName }} + </el-tag> </el-form-item> - <el-form-item label="瀹℃壒鎰忚" v-if="task.businessStatus === 'waiting'"> + <el-form-item v-if="task.businessStatus === 'waiting'" label="瀹℃壒鎰忚"> <el-input v-model="form.message" type="textarea" resize="none" /> </el-form-item> </el-form> <template #footer> <span class="dialog-footer"> - <el-button v-loading="buttonLoading" type="primary" @click="handleCompleteTask"> 鎻愪氦 </el-button> - <el-button v-if="task.businessStatus === 'waiting'" v-loading="buttonLoading" type="primary" @click="openDelegateTask"> 濮旀墭 </el-button> - <el-button v-if="task.businessStatus === 'waiting'" v-loading="buttonLoading" type="primary" @click="openTransferTask"> 杞姙 </el-button> - <el-button v-if="task.businessStatus === 'waiting' && task.multiInstance" v-loading="buttonLoading" type="primary" @click="addMultiInstanceUser"> 鍔犵 </el-button> - <el-button v-if="task.businessStatus === 'waiting' && task.multiInstance" v-loading="buttonLoading" type="primary" @click="deleteMultiInstanceUser"> 鍑忕 </el-button> - <el-button v-if="task.businessStatus === 'waiting'" v-loading="buttonLoading" type="danger" @click="handleTerminationTask"> 缁堟 </el-button> - <el-button v-if="task.businessStatus === 'waiting'" v-loading="buttonLoading" type="danger" @click="handleBackProcessOpen"> 閫�鍥� </el-button> - <el-button v-loading="buttonLoading" @click="cancel">鍙栨秷</el-button> + <el-button :disabled="buttonDisabled" type="primary" @click="handleCompleteTask"> 鎻愪氦 </el-button> + <el-button v-if="task.businessStatus === 'waiting'" :disabled="buttonDisabled" type="primary" @click="openDelegateTask"> 濮旀墭 </el-button> + <el-button v-if="task.businessStatus === 'waiting'" :disabled="buttonDisabled" type="primary" @click="openTransferTask"> 杞姙 </el-button> + <el-button + v-if="task.businessStatus === 'waiting' && task.multiInstance" + :disabled="buttonDisabled" + type="primary" + @click="addMultiInstanceUser" + > + 鍔犵 + </el-button> + <el-button + v-if="task.businessStatus === 'waiting' && task.multiInstance" + :disabled="buttonDisabled" + type="primary" + @click="deleteMultiInstanceUser" + > + 鍑忕 + </el-button> + <el-button v-if="task.businessStatus === 'waiting'" :disabled="buttonDisabled" type="danger" @click="handleTerminationTask"> 缁堟 </el-button> + <el-button v-if="task.businessStatus === 'waiting'" :disabled="buttonDisabled" type="danger" @click="handleBackProcessOpen"> 閫�鍥� </el-button> + <el-button :disabled="buttonDisabled" @click="cancel">鍙栨秷</el-button> </span> </template> <!-- 鎶勯�� --> @@ -40,19 +54,14 @@ <!-- 濮旀墭 --> <UserSelect ref="delegateTaskRef" :multiple="false" @confirm-call-back="handleDelegateTask"></UserSelect> <!-- 鍔犵缁勪欢 --> - <multiInstanceUser ref="multiInstanceUserRef" :title="title" @submit-callback='closeDialog' /> + <multiInstanceUser ref="multiInstanceUserRef" :title="title" @submit-callback="closeDialog" /> <!-- 椹冲洖寮�濮� --> <el-dialog v-model="backVisible" draggable title="椹冲洖" width="40%" :close-on-click-modal="false"> - <el-form v-loading="backLoading" :model="backForm" label-width="120px" v-if="task.businessStatus === 'waiting'"> + <el-form v-if="task.businessStatus === 'waiting'" v-loading="backLoading" :model="backForm" label-width="120px"> <el-form-item label="椹冲洖鑺傜偣"> - <el-select clearable placeholder="璇烽�夋嫨" v-model="backForm.targetActivityId" style="width: 300px"> - <el-option - v-for="item in taskNodeList" - :key="item.nodeId" - :label="item.nodeName" - :value="item.nodeId" - /> + <el-select v-model="backForm.targetActivityId" clearable placeholder="璇烽�夋嫨" style="width: 300px"> + <el-option v-for="item in taskNodeList" :key="item.nodeId" :label="item.nodeName" :value="item.nodeId" /> </el-select> </el-form-item> <el-form-item label="娑堟伅鎻愰啋"> @@ -67,9 +76,9 @@ </el-form-item> </el-form> <template #footer> - <div class="dialog-footer" style="float: right;padding-bottom: 20px;"> - <el-button type="primary" v-loading="backLoading" @click="handleBackProcess">纭</el-button> - <el-button v-loading="backLoading" @click="backVisible = false">鍙栨秷</el-button> + <div class="dialog-footer" style="float: right; padding-bottom: 20px"> + <el-button :disabled="backButtonDisabled" type="primary" @click="handleBackProcess">纭</el-button> + <el-button :disabled="backButtonDisabled" @click="backVisible = false">鍙栨秷</el-button> </div> </template> </el-dialog> @@ -81,7 +90,7 @@ import { ref } from 'vue'; import { ComponentInternalInstance } from 'vue'; import { ElForm } from 'element-plus'; -import { completeTask, backProcess, getTaskById,transferTask,terminationTask,getTaskNodeList,delegateTask } from '@/api/workflow/task'; +import { completeTask, backProcess, getTaskById, transferTask, terminationTask, getTaskNodeList, delegateTask } from '@/api/workflow/task'; import UserSelect from '@/components/UserSelect'; import MultiInstanceUser from '@/components/Process/multiInstanceUser.vue'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; @@ -91,7 +100,7 @@ const transferTaskRef = ref<InstanceType<typeof UserSelect>>(); const delegateTaskRef = ref<InstanceType<typeof UserSelect>>(); - //鍔犵缁勪欢 +//鍔犵缁勪欢 const multiInstanceUserRef = ref<InstanceType<typeof MultiInstanceUser>>(); const props = defineProps({ @@ -103,7 +112,7 @@ //閬僵灞� const loading = ref(true); //鎸夐挳 -const buttonLoading = ref(true); +const buttonDisabled = ref(true); //浠诲姟id const taskId = ref<string>(''); //鎶勯�佷汉 @@ -113,6 +122,7 @@ // 椹冲洖鏄惁鏄剧ず const backVisible = ref(false); const backLoading = ref(true); +const backButtonDisabled = ref(true); // 鍙┏鍥炲緱浠诲姟鑺傜偣 const taskNodeList = ref([]); //浠诲姟 @@ -166,23 +176,23 @@ messageType: ['1'] }); const closeDialog = () => { - dialog.visible = false -} + dialog.visible = false; +}; //鎵撳紑寮圭獥 const openDialog = (id?: string) => { - selectCopyUserIds.value = undefined - selectCopyUserList.value = [] - form.value.fileId = undefined + selectCopyUserIds.value = undefined; + selectCopyUserList.value = []; + form.value.fileId = undefined; taskId.value = id; form.value.message = undefined; dialog.visible = true; loading.value = true; - buttonLoading.value = true; + buttonDisabled.value = true; nextTick(() => { getTaskById(taskId.value).then((response) => { task.value = response.data; loading.value = false; - buttonLoading.value = false; + buttonDisabled.value = false; }); }); }; @@ -194,58 +204,62 @@ const handleCompleteTask = async () => { form.value.taskId = taskId.value; form.value.taskVariables = props.taskVariables; - if(selectCopyUserList && selectCopyUserList.value.length > 0){ - let wfCopyList = [] - selectCopyUserList.value.forEach( e=> { + if (selectCopyUserList.value && selectCopyUserList.value.length > 0) { + let wfCopyList = []; + selectCopyUserList.value.forEach((e) => { let copyUser = { userId: e.userId, userName: e.nickName - } - wfCopyList.push(copyUser) - }) - form.value.wfCopyList = wfCopyList + }; + wfCopyList.push(copyUser); + }); + form.value.wfCopyList = wfCopyList; } await proxy?.$modal.confirm('鏄惁纭鎻愪氦锛�'); loading.value = true; - buttonLoading.value = true; + buttonDisabled.value = true; try { await completeTask(form.value); dialog.visible = false; emits('submitCallback'); proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); } finally { - loading.value = false - buttonLoading.value = false + loading.value = false; + buttonDisabled.value = false; } }; /** 椹冲洖寮圭獥鎵撳紑 */ const handleBackProcessOpen = async () => { - backForm.value = {} - backForm.value.messageType = ['1'] - backVisible.value = true - backLoading.value = true - let data = await getTaskNodeList(task.value.processInstanceId) - taskNodeList.value = data.data - backLoading.value = false - backForm.value.targetActivityId = taskNodeList.value[0].nodeId -} + backForm.value = {}; + backForm.value.messageType = ['1']; + backVisible.value = true; + backLoading.value = true; + backButtonDisabled.value = true; + let data = await getTaskNodeList(task.value.processInstanceId); + taskNodeList.value = data.data; + backLoading.value = false; + backButtonDisabled.value = false; + backForm.value.targetActivityId = taskNodeList.value[0].nodeId; +}; /** 椹冲洖娴佺▼ */ const handleBackProcess = async () => { backForm.value.taskId = taskId.value; await proxy?.$modal.confirm('鏄惁纭椹冲洖鍒扮敵璇蜂汉锛�'); loading.value = true; backLoading.value = true; + backButtonDisabled.value = true; await backProcess(backForm.value).finally(() => (loading.value = false)); dialog.visible = false; - backLoading.value = false + backLoading.value = false; + backButtonDisabled.value = false; emits('submitCallback'); proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); }; //鍙栨秷 const cancel = async () => { dialog.visible = false; - buttonLoading.value = false; + buttonDisabled.value = false; emits('cancelCallback'); }; //鎵撳紑鎶勯�佷汉鍛� @@ -254,11 +268,11 @@ }; //纭鎶勯�佷汉鍛� const userSelectCopyCallBack = (data: UserVO[]) => { - if(data && data.length > 0){ - selectCopyUserList.value = data + if (data && data.length > 0) { + selectCopyUserList.value = data; selectCopyUserIds.value = selectCopyUserList.value.map((item) => item.userId).join(','); } -} +}; //鍒犻櫎鎶勯�佷汉鍛� const handleCopyCloseTag = (user: UserVO) => { const userId = user.userId; @@ -286,63 +300,62 @@ transferTaskRef.value.open(); }; //杞姙 -const handleTransferTask = async (data) => { - if(data && data.length > 0){ +const handleTransferTask = async (data) => { + if (data && data.length > 0) { let params = { taskId: taskId.value, userId: data[0].userId, comment: form.value.message - } + }; await proxy?.$modal.confirm('鏄惁纭鎻愪氦锛�'); loading.value = true; - buttonLoading.value = true; + buttonDisabled.value = true; await transferTask(params).finally(() => (loading.value = false)); dialog.visible = false; emits('submitCallback'); proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); - }else{ + } else { proxy?.$modal.msgWarning('璇烽�夋嫨鐢ㄦ埛锛�'); } -} +}; //鎵撳紑濮旀墭 const openDelegateTask = () => { delegateTaskRef.value.open(); }; //濮旀墭 -const handleDelegateTask = async (data) => { - if(data && data.length > 0){ +const handleDelegateTask = async (data) => { + if (data && data.length > 0) { let params = { taskId: taskId.value, userId: data[0].userId, nickName: data[0].nickName - } + }; await proxy?.$modal.confirm('鏄惁纭鎻愪氦锛�'); loading.value = true; - buttonLoading.value = true; + buttonDisabled.value = true; await delegateTask(params).finally(() => (loading.value = false)); dialog.visible = false; emits('submitCallback'); proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); - }else{ + } else { proxy?.$modal.msgWarning('璇烽�夋嫨鐢ㄦ埛锛�'); } -} +}; //缁堟浠诲姟 -const handleTerminationTask = async (data) => { - let params = { - taskId: taskId.value, - comment: form.value.message - } - await proxy?.$modal.confirm('鏄惁纭缁堟锛�'); - loading.value = true; - buttonLoading.value = true; - await terminationTask(params).finally(() => (loading.value = false)); - dialog.visible = false; - emits('submitCallback'); - proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); - -} +const handleTerminationTask = async (data) => { + let params = { + taskId: taskId.value, + comment: form.value.message + }; + await proxy?.$modal.confirm('鏄惁纭缁堟锛�'); + loading.value = true; + buttonDisabled.value = true; + await terminationTask(params).finally(() => (loading.value = false)); + dialog.visible = false; + emits('submitCallback'); + proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); +}; /** * 瀵瑰鏆撮湶瀛愮粍浠舵柟娉� diff --git a/src/router/index.ts b/src/router/index.ts index 2343685..438708f 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -164,16 +164,16 @@ ] }, { - path: '/demo/leaveEdit', + path: '/workflow/leaveEdit', component: Layout, hidden: true, - permissions: ['demo:leave:edit'], + permissions: ['workflow:leave:edit'], children: [ { path: 'index', component: () => import('@/views/workflow/leave/leaveEdit.vue'), name: 'leaveEdit', - meta: { title: '璇峰亣鐢宠', activeMenu: '/demo/leave', noCache: true } + meta: { title: '璇峰亣鐢宠', activeMenu: '/workflow/leave', noCache: true } } ] } diff --git a/src/store/modules/modeler.ts b/src/store/modules/modeler.ts index 7b19c1a..204f450 100644 --- a/src/store/modules/modeler.ts +++ b/src/store/modules/modeler.ts @@ -1,4 +1,4 @@ -import { Modeler, Modeling, Canvas, ElementRegistry, Moddle, BpmnFactory } from 'bpmn'; +import type { Modeler, Modeling, Canvas, ElementRegistry, Moddle, BpmnFactory } from 'bpmn'; type ModelerStore = { modeler: Modeler | undefined; diff --git a/src/types/global.d.ts b/src/types/global.d.ts index 17476a3..229e181 100644 --- a/src/types/global.d.ts +++ b/src/types/global.d.ts @@ -4,8 +4,6 @@ declare global { /** vue Instance */ declare type ComponentInternalInstance = ComponentInstance; - /**vue */ - declare type PropType<T> = VuePropType<T>; /** * 鐣岄潰瀛楁闅愯棌灞炴�� diff --git a/src/views/index.vue b/src/views/index.vue index 249a41b..e02c9fe 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -68,7 +68,6 @@ * RPC杩滅▼璋冪敤 Apache Dubbo 鍘熺敓鎬佷娇鐢ㄤ綋楠屻�侀珮鎬ц兘<br /> * 鍒嗗竷寮忛檺娴佺啍鏂� Alibaba Sentinel 鏃犱镜鍏ャ�侀珮鎵╁睍<br /> * 鍒嗗竷寮忎簨鍔� Alibaba Seata 鏃犱镜鍏ャ�侀珮鎵╁睍 鏀寔 鍥涚妯″紡<br /> - * 鍒嗗竷寮忔秷鎭槦鍒� Spring Cloud Stream 闂ㄩ潰妗嗘灦鍏煎鍚勭MQ闆嗘垚<br /> * 鍒嗗竷寮忔秷鎭槦鍒� Apache Kafka 楂樻�ц兘楂橀�熷害<br /> * 鍒嗗竷寮忔秷鎭槦鍒� Apache RocketMQ 楂樺彲鐢ㄥ姛鑳藉鏍�<br /> * 鍒嗗竷寮忔秷鎭槦鍒� RabbitMQ 鏀寔鍚勭鎵╁睍鎻掍欢鍔熻兘澶氭牱鎬�<br /> diff --git a/src/views/system/oss/index.vue b/src/views/system/oss/index.vue index a2f1f1b..2e50582 100644 --- a/src/views/system/oss/index.vue +++ b/src/views/system/oss/index.vue @@ -304,7 +304,7 @@ const handleDownload = (row: OssVO) => { proxy?.$download.oss(row.ossId); }; -/** 鐢ㄦ埛鐘舵�佷慨鏀� */ +/** 棰勮寮�鍏虫寜閽� */ const handlePreviewListResource = async (preview: boolean) => { let text = preview ? '鍚敤' : '鍋滅敤'; try { diff --git a/src/views/tool/build/index.vue b/src/views/tool/build/index.vue deleted file mode 100644 index ef0c079..0000000 --- a/src/views/tool/build/index.vue +++ /dev/null @@ -1,3 +0,0 @@ -<template> - <div>琛ㄥ崟鏋勫缓(鐢变簬姝ゅ姛鑳界殑寮�婧愮粍浠朵笉鏀寔 VUE3+TS 鏁呮殏鏃舵棤娉曚娇鐢�) <svg-icon icon-class="build" /></div> -</template> diff --git a/src/views/workflow/leave/index.vue b/src/views/workflow/leave/index.vue index 23d5442..d9c50c4 100644 --- a/src/views/workflow/leave/index.vue +++ b/src/views/workflow/leave/index.vue @@ -22,10 +22,10 @@ <template #header> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> - <el-button v-hasPermi="['demo:leave:add']" type="primary" plain icon="Plus" @click="handleAdd">鏂板</el-button> + <el-button v-hasPermi="['workflow:leave:add']" type="primary" plain icon="Plus" @click="handleAdd">鏂板</el-button> </el-col> <el-col :span="1.5"> - <el-button v-hasPermi="['demo:leave:export']" type="warning" plain icon="Download" @click="handleExport">瀵煎嚭</el-button> + <el-button v-hasPermi="['workflow:leave:export']" type="warning" plain icon="Download" @click="handleExport">瀵煎嚭</el-button> </el-col> <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> </el-row> @@ -53,18 +53,14 @@ <el-table-column label="璇峰亣鍘熷洜" align="center" prop="remark" /> <el-table-column align="center" label="娴佺▼鐘舵��" min-width="70"> <template #default="scope"> - <dict-tag :options="wf_business_status" :value="scope.row.processInstanceVo.businessStatus"></dict-tag> + <dict-tag :options="wf_business_status" :value="scope.row.status"></dict-tag> </template> </el-table-column> <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-button - v-if=" - scope.row.processInstanceVo.businessStatus === 'draft' || - scope.row.processInstanceVo.businessStatus === 'cancel' || - scope.row.processInstanceVo.businessStatus === 'back' - " - v-hasPermi="['demo:leave:edit']" + v-if="scope.row.status === 'draft' || scope.row.status === 'cancel' || scope.row.status === 'back'" + v-hasPermi="['workflow:leave:edit']" size="small" link type="primary" @@ -73,12 +69,8 @@ >淇敼</el-button > <el-button - v-if=" - scope.row.processInstanceVo.businessStatus === 'draft' || - scope.row.processInstanceVo.businessStatus === 'cancel' || - scope.row.processInstanceVo.businessStatus === 'back' - " - v-hasPermi="['demo:leave:remove']" + v-if="scope.row.status === 'draft' || scope.row.status === 'cancel' || scope.row.status === 'back'" + v-hasPermi="['workflow:leave:remove']" size="small" link type="primary" @@ -88,12 +80,12 @@ > <el-button link type="primary" size="small" icon="View" @click="handleView(scope.row)">鏌ョ湅</el-button> <el-button - v-if="scope.row.processInstanceVo.businessStatus === 'waiting'" + v-if="scope.row.status === 'waiting'" link size="small" type="primary" icon="Notification" - @click="handleCancelProcessApply(scope.row.processInstanceVo.id)" + @click="handleCancelProcessApply(scope.row.id)" >鎾ら攢</el-button > </template> @@ -184,9 +176,9 @@ /** 鏂板鎸夐挳鎿嶄綔 */ const handleAdd = () => { proxy.$tab.closePage(proxy.$route); - proxy.$router.push(`/demo/leaveEdit/index/add/add`); + proxy.$router.push(`/workflow/leaveEdit/index/add/add`); proxy.$router.push({ - path: `/demo/leaveEdit/index`, + path: `/workflow/leaveEdit/index`, query: { type: 'add' } @@ -197,7 +189,7 @@ const handleUpdate = (row?: LeaveVO) => { proxy.$tab.closePage(proxy.$route); proxy.$router.push({ - path: `/demo/leaveEdit/index`, + path: `/workflow/leaveEdit/index`, query: { id: row.id, type: 'update' @@ -209,7 +201,7 @@ const handleView = (row?: LeaveVO) => { proxy.$tab.closePage(proxy.$route); proxy.$router.push({ - path: `/demo/leaveEdit/index`, + path: `/workflow/leaveEdit/index`, query: { id: row.id, type: 'view' @@ -229,7 +221,7 @@ /** 瀵煎嚭鎸夐挳鎿嶄綔 */ const handleExport = () => { proxy?.download( - 'demo/leave/export', + 'workflow/leave/export', { ...queryParams.value }, diff --git a/src/views/workflow/leave/leaveEdit.vue b/src/views/workflow/leave/leaveEdit.vue index e978ad8..d6210f0 100644 --- a/src/views/workflow/leave/leaveEdit.vue +++ b/src/views/workflow/leave/leaveEdit.vue @@ -6,12 +6,7 @@ <el-button v-if=" routeParams.type === 'add' || - (routeParams.type === 'update' && - form.processInstanceVo && - form.processInstanceVo.businessStatus && - (form.processInstanceVo.businessStatus === 'draft' || - form.processInstanceVo.businessStatus === 'cancel' || - form.processInstanceVo.businessStatus === 'back')) + (routeParams.type === 'update' && form.status && (form.status === 'draft' || form.status === 'cancel' || form.status === 'back')) " :loading="buttonLoading" type="info" @@ -21,11 +16,7 @@ <el-button v-if=" routeParams.type === 'add' || - (routeParams.type === 'update' && - form.processInstanceVo && - (form.processInstanceVo.businessStatus === 'draft' || - form.processInstanceVo.businessStatus === 'cancel' || - form.processInstanceVo.businessStatus === 'back')) + (routeParams.type === 'update' && form.status && (form.status === 'draft' || form.status === 'cancel' || form.status === 'back')) " :loading="buttonLoading" type="primary" @@ -33,13 +24,13 @@ >鎻� 浜�</el-button > <el-button - v-if="routeParams.type === 'approval' && form.processInstanceVo && form.processInstanceVo.businessStatus === 'waiting'" + v-if="routeParams.type === 'approval' && form.status && form.status === 'waiting'" :loading="buttonLoading" type="primary" @click="approvalVerifyOpen" >瀹℃壒</el-button > - <el-button v-if="processInstanceId" type="primary" @click="handleApprovalRecord">娴佺▼杩涘害</el-button> + <el-button v-if="form.status !== 'draft'" type="primary" @click="handleApprovalRecord">娴佺▼杩涘害</el-button> </div> <div> <el-button style="float: right" @click="goBack()">杩斿洖</el-button> @@ -91,8 +82,6 @@ const buttonLoading = ref(false); const loading = ref(true); const leaveTime = ref<Array<string>>([]); -//娴佺▼瀹炰緥id -const processInstanceId = ref(''); //璺敱鍙傛暟 const routeParams = ref<Record<string, any>>({}); const options = [ @@ -134,7 +123,7 @@ endDate: undefined, leaveDays: undefined, remark: undefined, - processInstanceVo: {} + status: undefined }; const data = reactive<PageData<LeaveForm, LeaveQuery>>({ form: { ...initFormData }, @@ -177,9 +166,6 @@ leaveTime.value = []; leaveTime.value.push(form.value.startDate); leaveTime.value.push(form.value.endDate); - if (form.value.processInstanceVo) { - processInstanceId.value = form.value.processInstanceVo.id; - } loading.value = false; buttonLoading.value = false; }); @@ -243,7 +229,7 @@ }; //瀹℃壒璁板綍 const handleApprovalRecord = () => { - approvalRecordRef.value.init(processInstanceId.value); + approvalRecordRef.value.init(form.value.id); }; //鎻愪氦鍥炶皟 const submitCallback = async () => { diff --git a/src/views/workflow/processInstance/index.vue b/src/views/workflow/processInstance/index.vue index 4f994af..7c60880 100644 --- a/src/views/workflow/processInstance/index.vue +++ b/src/views/workflow/processInstance/index.vue @@ -167,6 +167,8 @@ const loading = ref(true); // 閫変腑鏁扮粍 const ids = ref<Array<any>>([]); +// 閫変腑涓氬姟id鏁扮粍 +const businessKeys = ref<Array<any>>([]); // 闈炲崟涓鐢� const single = ref(true); // 闈炲涓鐢� @@ -257,6 +259,7 @@ // 澶氶�夋閫変腑鏁版嵁 const handleSelectionChange = (selection: ProcessInstanceVO[]) => { ids.value = selection.map((item: any) => item.id); + businessKeys.value = selection.map((item: any) => item.businessKey); single.value = selection.length !== 1; multiple.value = !selection.length; }; @@ -281,14 +284,14 @@ /** 鍒犻櫎鎸夐挳鎿嶄綔 */ const handleDelete = async (row: any) => { - const id = row.id || ids.value; - await proxy?.$modal.confirm('鏄惁纭鍒犻櫎id涓恒��' + id + '銆戠殑鏁版嵁椤癸紵'); + const businessKey = row.businessKey || businessKeys.value; + await proxy?.$modal.confirm('鏄惁纭鍒犻櫎涓氬姟id涓恒��' + businessKey + '銆戠殑鏁版嵁椤癸紵'); loading.value = true; if ('running' === tab.value) { - await deleteRunAndHisInstance(id).finally(() => (loading.value = false)); + await deleteRunAndHisInstance(businessKey).finally(() => (loading.value = false)); getProcessInstanceRunningList(); } else { - await deleteFinishAndHisInstance(id).finally(() => (loading.value = false)); + await deleteFinishAndHisInstance(businessKey).finally(() => (loading.value = false)); getProcessInstanceFinishList(); } proxy?.$modal.msgSuccess('鍒犻櫎鎴愬姛'); @@ -308,7 +311,7 @@ loading.value = true; if ('running' === tab.value) { let param = { - processInstanceId: row.id, + businessKey: row.businessKey, deleteReason: deleteReason.value }; await deleteRunInstance(param).finally(() => (loading.value = false)); diff --git a/src/views/workflow/task/myDocument.vue b/src/views/workflow/task/myDocument.vue index e8592f8..1bf5bbf 100644 --- a/src/views/workflow/task/myDocument.vue +++ b/src/views/workflow/task/myDocument.vue @@ -75,20 +75,20 @@ content="淇敼" placement="top" > - <el-button v-hasPermi="['demo:leave:edit']" link type="primary" icon="Edit" @click="handleOpen(scope.row, 'update')"></el-button> + <el-button link type="primary" icon="Edit" @click="handleOpen(scope.row, 'update')"></el-button> </el-tooltip> <el-tooltip v-if="scope.row.businessStatus === 'draft' || scope.row.businessStatus === 'cancel' || scope.row.businessStatus === 'back'" content="鍒犻櫎" placement="top" > - <el-button v-hasPermi="['demo:leave:remove']" link type="primary" icon="Delete" @click="handleDelete(scope.row)"></el-button> + <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"></el-button> </el-tooltip> <el-tooltip placement="top" content="鏌ョ湅"> <el-button link type="primary" icon="View" @click="handleOpen(scope.row, 'view')"></el-button> </el-tooltip> <el-tooltip v-if="scope.row.businessStatus === 'waiting'" content="鎾ら攢" placement="top"> - <el-button link type="primary" icon="Notification" @click="handleCancelProcessApply(scope.row.id)"></el-button> + <el-button link type="primary" icon="Notification" @click="handleCancelProcessApply(scope.row.businessKey)"></el-button> </el-tooltip> </template> </el-table-column> @@ -123,7 +123,7 @@ // 閬僵灞� const loading = ref(true); // 閫変腑鏁扮粍 -const ids = ref<Array<any>>([]); +const businessKeys = ref<Array<any>>([]); // 闈炲崟涓鐢� const single = ref(true); // 闈炲涓鐢� @@ -190,12 +190,6 @@ categoryOptions.value.push(data); }; -//瀹℃壒璁板綍 -const handleApprovalRecord = (processInstanceId: string) => { - if (approvalRecordRef.value) { - approvalRecordRef.value.init(processInstanceId); - } -}; /** 鎼滅储鎸夐挳鎿嶄綔 */ const handleQuery = () => { getList(); @@ -210,7 +204,7 @@ }; // 澶氶�夋閫変腑鏁版嵁 const handleSelectionChange = (selection: ProcessInstanceVO[]) => { - ids.value = selection.map((item: any) => item.id); + businessKeys.value = selection.map((item: any) => item.businessKey); single.value = selection.length !== 1; multiple.value = !selection.length; }; @@ -226,22 +220,22 @@ /** 鍒犻櫎鎸夐挳鎿嶄綔 */ const handleDelete = async (row: ProcessInstanceVO) => { - const id = row.id || ids.value; - await proxy?.$modal.confirm('鏄惁纭鍒犻櫎id涓恒��' + id + '銆戠殑鏁版嵁椤癸紵'); + const businessKey = row.businessKey || businessKeys.value; + await proxy?.$modal.confirm('鏄惁纭鍒犻櫎涓氬姟id涓恒��' + businessKey + '銆戠殑鏁版嵁椤癸紵'); loading.value = true; if ('running' === tab.value) { - await deleteRunAndHisInstance(id).finally(() => (loading.value = false)); + await deleteRunAndHisInstance(businessKey).finally(() => (loading.value = false)); getList(); } proxy?.$modal.msgSuccess('鍒犻櫎鎴愬姛'); }; /** 鎾ら攢鎸夐挳鎿嶄綔 */ -const handleCancelProcessApply = async (processInstanceId: string) => { +const handleCancelProcessApply = async (businessKey: string) => { await proxy?.$modal.confirm('鏄惁纭鎾ら攢褰撳墠鍗曟嵁锛�'); loading.value = true; if ('running' === tab.value) { - await cancelProcessApply(processInstanceId).finally(() => (loading.value = false)); + await cancelProcessApply(businessKey).finally(() => (loading.value = false)); getList(); } proxy?.$modal.msgSuccess('鎾ら攢鎴愬姛'); diff --git a/vite.config.ts b/vite.config.ts index eea111e..f8b1200 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -61,7 +61,6 @@ 'pinia', 'axios', '@vueuse/core', - 'path-to-regexp', 'echarts', 'vue-i18n', '@vueup/vue-quill', -- Gitblit v1.9.3