adtec-hnyzfc-core-package 1.6.4 → 1.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,11 @@
1
1
  import type { IWfProcessDefVo } from '../../interface/workflow/IWfProcessDefVo';
2
- import type { IWfProcessInstVo, IWfTaskVo } from '../../interface/workflow/IWfTaskVo';
2
+ import type { IWfTaskVo } from '../../interface/workflow/IWfTaskVo';
3
3
  import type { IWfTaskAskVo } from '../../interface/workflow/IWfTaskAskVo';
4
4
  import type { IWfTaskUsersVo } from '../../interface/workflow/IWfTaskUsersVo';
5
5
  import type { IWfReturnNodeVo } from '../../interface/workflow/IWfReturnNodeVo';
6
6
  import type { IWfNodeLastApprovalBatchVo } from '../../interface/workflow/IWfNodeLastApprovalVo';
7
+ /** 手动失效:撤回/审批完成、需要拿最新流程详情时调用 */
8
+ export declare const invalidateProcessTaskList: (processInstId?: string) => void;
7
9
  declare const _default: {
8
10
  addProcessInst(WfProcessDefVo: IWfProcessDefVo): Promise<IWfProcessDefVo>;
9
11
  /**
@@ -15,6 +17,17 @@ declare const _default: {
15
17
  processWithdrawalPreview(task: Partial<IWfTaskVo>): Promise<Record<string, string>>;
16
18
  /** 执行撤回:流程退回该节点,原来的办结恢复为待办 */
17
19
  processWithdrawal(task: Partial<IWfTaskVo>): Promise<Record<string, string>>;
20
+ /**
21
+ * 审核当时快照(通用):按业务单号 + 工作流任务取该节点保存的快照内容。
22
+ * 业务单号全局唯一,bizType 可省略;用于历史查看时判定数据来源、还原当时那一版。
23
+ *
24
+ * wfTaskId 取该任务那一条;取不到(如流程启动时保存的“提交”快照没有任务ID)时按 taskDefKey
25
+ * 取该节点最后一次保存的快照——驳回后重新提交会产生多轮同节点快照,必须取最后一轮。
26
+ */
27
+ snapshot(bizId: string, params?: string | {
28
+ wfTaskId?: string;
29
+ taskDefKey?: string;
30
+ }): Promise<Record<string, any>>;
18
31
  taskComplete(task: IWfTaskAskVo): Promise<IWfTaskVo>;
19
32
  taskTransfer(task: IWfTaskAskVo): Promise<IWfTaskVo>;
20
33
  taskReject(task: IWfTaskAskVo): Promise<IWfTaskVo>;
@@ -27,7 +40,7 @@ declare const _default: {
27
40
  addOrMinusAssignee(data: IWfTaskUsersVo): Promise<string>;
28
41
  getTaskInst(taskId: string): Promise<IWfTaskVo>;
29
42
  getWfTaskByBusinessId(businessId: string): Promise<IWfTaskVo>;
30
- getProcessTaskList(processInstId: string): Promise<IWfProcessInstVo>;
43
+ getProcessTaskList(processInstId: string): Promise<any>;
31
44
  getWfProcessInstByBusinessId(businessId: string): Promise<IWfTaskVo>;
32
45
  getReviewDetail(taskId: string): Promise<IWfTaskVo>;
33
46
  /** 获取指定节点最后一轮审批人及审批意见(支持多节点,不限制流程是否结束) */
@@ -1 +1 @@
1
- import s from"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";import"../../utils/uuid.js";import"uuid";import"../../utils/encrypt.js";import"jsencrypt";import"../../utils/behaviorTrack.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../../utils/behaviorContext.js";import"../../utils/dateTime.js";import"element-plus";import"../../utils/frontendBus.js";import"../../utils/globalLoading.js";import"vue";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";const r="/api/workflow/task",o="/api/workflow/workbench/",L={addProcessInst(t){return s.post("/api/workflow/procinstance/start",t)},processWithdrawalVerification(t){return s.post(o+"processWithdrawalVerification",t)},processWithdrawalPreview(t){return s.post(o+"processWithdrawalPreview",t)},processWithdrawal(t){return s.post(o+"processWithdrawal",t)},taskComplete(t){return s.post(r+"/taskComplete",t)},taskTransfer(t){return s.post(r+"/taskTransfer",t)},taskReject(t){return s.post(r+"/taskReject",t)},findReturnTaskList(t,e=!1){return s.post(r+"/findReturnTaskList",{taskId:t,ignoreBackNodes:e})},taskReturn(t){return s.post(r+"/taskReturn",t)},getTaskCandidate(t){return s.post(r+"/getTaskCandidate",{taskId:t})},getTaskCandidateList(t){return s.post(r+"/getTaskCandidateList",{taskId:t})},setAssignee(t){return s.post(r+"/setAssignee",t)},setAssigneeList(t){return s.post(r+"/setAssigneeList",t)},addOrMinusAssignee(t){return s.post(r+"/addOrMinusAssignee",t)},getTaskInst(t){return s.post(r+"/getTaskInst",{taskId:t})},getWfTaskByBusinessId(t){return s.post(r+"/getWfTaskByBusinessId",{businessId:t})},getProcessTaskList(t){return s.get("/api/workflow/workbench/process/"+t)},getWfProcessInstByBusinessId(t){return s.get(r+"/getUserTaskInfo",{businessId:t})},getReviewDetail(t){return s.get(r+"/reviewDetail",{taskId:t})},getLastNodeApprovalByBusinessId(t,e){const i={businessId:t,nodeCodes:Array.isArray(e)?e:[e]};return s.post(r+"/lastNodeApproval",i)}};export{L as default};
1
+ import e from"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";import"../../utils/uuid.js";import"uuid";import"../../utils/encrypt.js";import"jsencrypt";import"../../utils/behaviorTrack.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../../utils/behaviorContext.js";import"../../utils/dateTime.js";import"element-plus";import"../../utils/frontendBus.js";import"../../utils/globalLoading.js";import"vue";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";const s="/api/workflow/task",i="/api/workflow/workbench/",p=5e3,a=new Map,C=t=>{t?a.delete(t):a.clear()},P={addProcessInst(t){return e.post("/api/workflow/procinstance/start",t)},processWithdrawalVerification(t){return e.post(i+"processWithdrawalVerification",t)},processWithdrawalPreview(t){return e.post(i+"processWithdrawalPreview",t)},processWithdrawal(t){return e.post(i+"processWithdrawal",t)},snapshot(t,r){const o=typeof r=="string"?{wfTaskId:r}:r||{};return e.get("/api/business/workflow/compensation/snapshot",{bizId:t,wfTaskId:o.wfTaskId,taskDefKey:o.taskDefKey})},taskComplete(t){return e.post(s+"/taskComplete",t)},taskTransfer(t){return e.post(s+"/taskTransfer",t)},taskReject(t){return e.post(s+"/taskReject",t)},findReturnTaskList(t,r=!1){return e.post(s+"/findReturnTaskList",{taskId:t,ignoreBackNodes:r})},taskReturn(t){return e.post(s+"/taskReturn",t)},getTaskCandidate(t){return e.post(s+"/getTaskCandidate",{taskId:t})},getTaskCandidateList(t){return e.post(s+"/getTaskCandidateList",{taskId:t})},setAssignee(t){return e.post(s+"/setAssignee",t)},setAssigneeList(t){return e.post(s+"/setAssigneeList",t)},addOrMinusAssignee(t){return e.post(s+"/addOrMinusAssignee",t)},getTaskInst(t){return e.post(s+"/getTaskInst",{taskId:t})},getWfTaskByBusinessId(t){return e.post(s+"/getWfTaskByBusinessId",{businessId:t})},getProcessTaskList(t){const r=a.get(t);if(r&&Date.now()-r.time<p)return r.promise;const o=e.get("/api/workflow/workbench/process/"+t).catch(n=>{throw a.delete(t),n});return a.set(t,{time:Date.now(),promise:o}),o},getWfProcessInstByBusinessId(t){return e.get(s+"/getUserTaskInfo",{businessId:t})},getReviewDetail(t){return e.get(s+"/reviewDetail",{taskId:t})},getLastNodeApprovalByBusinessId(t,r){const o={businessId:t,nodeCodes:Array.isArray(r)?r:[r]};return e.post(s+"/lastNodeApproval",o)}};export{P as default,C as invalidateProcessTaskList};
@@ -37,7 +37,7 @@ declare const __VLS_component: import("vue").DefineComponent<globalThis.ExtractP
37
37
  };
38
38
  /**
39
39
  * 流程信息回调:由业务侧注入(如通过总线打开工作流子应用的流程详情抽屉);
40
- * 不注入时按钮不展示。
40
+ * 不注入时走核心包统一入口 showProcessView(组件型节点由目标子应用只读渲染业务组件 + 当时快照)。
41
41
  */
42
42
  onProcessDetail: {
43
43
  type: FunctionConstructor;
@@ -89,7 +89,7 @@ declare const __VLS_component: import("vue").DefineComponent<globalThis.ExtractP
89
89
  };
90
90
  /**
91
91
  * 流程信息回调:由业务侧注入(如通过总线打开工作流子应用的流程详情抽屉);
92
- * 不注入时按钮不展示。
92
+ * 不注入时走核心包统一入口 showProcessView(组件型节点由目标子应用只读渲染业务组件 + 当时快照)。
93
93
  */
94
94
  onProcessDetail: {
95
95
  type: FunctionConstructor;
@@ -1 +1 @@
1
- import{defineComponent as Y,ref as v,useModel as Z,computed as _,onMounted as ee,watch as te,resolveComponent as h,openBlock as l,createElementBlock as P,createVNode as ae,withCtx as u,renderSlot as W,createBlock as f,createTextVNode as m,toDisplayString as k,createCommentVNode as d,unref as oe,Fragment as re,mergeModels as q}from"vue";import D from"../../api/workflow/workflowInstApi.js";import ne from"./components/SelectAssigneeDialog.vue.js";import{_ as ie}from"../../../chunks/AddOrMinusMultiDialog.vue_vue_type_script_setup_true_lang-BWVDdb4B.js";import se from"./components/CheckDialog.vue.js";import{runWorkflowComplete as le}from"../../hooks/workflowCompleteRunner.js";import V from"../../utils/FrameworkUtils.js";import{userInfoStore as T}from"../../stores/userInfoStore.js";import{frontendBus as L}from"../../utils/frontendBus.js";import{showTodoDialog as ue}from"../../hooks/workflowTodo.js";import{_ as de}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";import"../../utils/uuid.js";import"uuid";import"../../utils/encrypt.js";import"jsencrypt";import"../../utils/behaviorTrack.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../../utils/behaviorContext.js";import"../../utils/dateTime.js";import"element-plus";import"../../utils/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"../business/comp.userForm.vue.js";import"@vueuse/core";import"../../api/DeptInfoApi.js";import"../../api/EmployeeInfoApi.js";import"../../hooks/useResetRefHooks.js";import"../../config/vxeSelectColumn.js";import"../../../chunks/ElTagDisplay.vue_vue_type_script_setup_true_lang-DQXuYsW_.js";/* empty css */import"xlsx-js-style";import"../../api/SysUserApi.js";import"../bpmntree/components/UserSelector/UserTag.vue.js";import"../upload/CustomElUpload.vue.js";import"@element-plus/icons-vue";import"../../hooks/useFileView.js";import"../../api/DocumentApi.js";import"../../hooks/useDeleteConfirmHooks.js";import"../../hooks/useBehaviorAction.js";import"../../utils/uploadAccept.js";import"../../utils/buildUploadHeaders.js";import"pinia";import"../../utils/userSessionStorage.js";import"../../hooks/usePermissionHooks.js";import"vue-router";import"../../stores/permissionStore.js";import"../../utils/operationAuth.js";import"../../utils/routeMetaParams.js";import"../../hooks/useOpenNewMenu.js";import"../../utils/commonUtils.js";import"../../utils/tree.js";const fe=Y({__name:"TaskOperation",props:q({taskId:{type:String,required:!1},showProcessBtn:{type:Boolean,required:!1,default:!1},params:{type:Object,required:!1},taskInfo:{type:Object,required:!1},showOperationsBtn:{type:Boolean,required:!1,default:!0},showCurWorkBth:{type:Boolean,required:!1,default:!0},onProcessDetail:{type:Function,required:!1},renderDialog:{type:Function,required:!1}},{butLoading:{type:Boolean,default:!1},butLoadingModifiers:{}}),emits:q(["success"],["update:butLoading"]),setup(o,{expose:E,emit:A}){const N=T(),b=v(null),n=o,i=Z(o,"butLoading"),R=A,e=v({taskId:"",comment:""}),O=n.renderDialog,g=(t,a,r,x,c,X)=>{if(!O){console.warn("[TaskOperation] 未注入 renderDialog,无法打开操作弹窗(请通过 props 传入 useDialogHooks 的 render)");return}O(t,a,r,x,c,X)},U=()=>{typeof n.onProcessDetail=="function"&&n.onProcessDetail(e.value)},w=_(()=>e.value?.operations==="assignee"),S=v(""),y=v(),K=v([{source:"edit"}]),j=async()=>{await ue(v(e.value),K)},p=async t=>{if(t&&(S.value=t),!e.value)return;y.value={...e.value};let a=!1;if(t==="complete"&&n.params?.beforeCompleteFunction)try{const r=await n.params?.beforeCompleteFunction({taskId:e.value.taskId,userId:T().getUserInfo.userCode,comment:"同意。",procInsId:e.value.procInsId,procDefKey:e.value.procDefKey});if(r===!1)return;r?.readonly&&(a=!0),e.value={...e.value,...r}}catch{return}if(t==="addMulti"||t==="minusMulti")g(ie,{taskId:e.value.taskId,dialogType:t,renderDialog:g,onSuccess:I,onWorkflowSuccess:C},{title:t==="addMulti"?"加签":"减签",size:"400px"},"dialog");else if(t==="assignee")M(e.value.taskId);else{if(e.value.variables,t==="complete"&&e.value.firstSubmitNode&&n.params?.ignoreConfirm){await H();return}g(se,{taskVo:e.value,dialogType:t,taskOperate:n?.params,commentReadonly:a,renderDialog:g,onOpenAssignee:M,onSuccess:I,onWorkflowSuccess:C},{title:z(t),size:"480px",closeOnClickModal:!1},"dialog")}},z=t=>{switch(t){case"complete":return"流程审批";case"refuse":return"终止审批";case"back":return"驳回审批";case"transfer":return"转办审批";default:return"流程审批"}},H=async()=>{if(!e.value||!T().getUserInfo.userCode)return;y.value={...e.value};const t={taskId:e.value.taskId,userId:T().getUserInfo.userCode,comment:e.value.comment??"",procInsId:e.value.procInsId,procDefKey:e.value.procDefKey,variables:e.value.variables};try{if(i.value=!0,n.params?.completeFunction){const a=await n.params?.completeFunction(t);a&&a?.taskId?e.value=a:e.value=await D.getTaskInst(e.value.taskId)}else e.value=await D.taskComplete(t)}catch(a){V.messageError(a);return}finally{i.value=!1}try{await F({actionType:"complete",taskVo:e.value,askVo:t})}catch{}},M=t=>{y.value={...e.value},g(ne,{taskId:t,onSuccess:I,onWorkflowSuccess:C},{title:"指定执行人",size:"450px"},"dialog")},I=t=>{t&&(e.value=t),L.emit("todoRefresh"),L.emit("homePageRefresh"),R("success")},F=async(t,a)=>{const r={...t,actionType:t.actionType||S.value,originTask:t.originTask??y.value,taskVo:t.taskVo??e.value};await le(n.params,r),a?.refresh!==!1&&I(t.taskVo)},C=t=>F({...t,originTask:t.originTask??y.value},{refresh:!1}),$=(t,a)=>t?t.classList?.contains(a)?t:$(t.parentElement,a):null,G=()=>{const t=$(b.value,"todo-dialog-class");return t?console.log("找到满足条件的元素:",t):console.log("未找到满足条件的元素"),t};ee(()=>{G(),B()});const s=v(!1),J=async()=>{s.value=!0},Q=()=>{s.value=!1},B=async()=>{if(n.taskInfo)e.value=n.taskInfo,e.value.finishTime&&console.log("该待办已完成!");else if(n.taskId)try{J(),e.value=await D.getTaskInst(n.taskId),e.value.finishTime&&console.log("该待办已完成!")}catch(t){V.messageError(t)}finally{Q()}};return E({reload:()=>{B()}}),te(()=>n.taskId,B),(t,a)=>{const r=h("el-button"),x=h("el-flex");return l(),P("div",{ref_key:"taskFlexRef",ref:b,class:"task-operation"},[ae(x,{align:"center",justify:"flex-end"},{default:u(()=>[W(t.$slots,"left",{},void 0,!0),o.params?.cancelBtnText!==""?(l(),f(r,{key:0,loading:i.value||s.value,onClick:o.params?.cancelFunction},{default:u(()=>[m(k(o.params?.cancelBtnText??"取消"),1)]),_:1},8,["loading","onClick"])):d("v-if",!0),o.showProcessBtn&&e.value?.procInsId?(l(),f(r,{key:1,type:"info",loading:i.value||s.value,onClick:U},{default:u(()=>[...a[7]||(a[7]=[m(" 流程信息 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!w.value&&e.value?.taskId&&o.showCurWorkBth&&!o.showOperationsBtn?(l(),f(r,{key:2,loading:i.value||s.value,type:"warning",disabled:e.value?.taskId&&(!e.value?.operations||oe(N).getUserInfo.userCode!==e.value?.assigneeId),onClick:j},{default:u(()=>[m(k(e.value.taskName),1)]),_:1},8,["loading","disabled"])):d("v-if",!0),w.value?(l(),f(r,{key:3,type:"primary",loading:i.value||s.value,onClick:a[0]||(a[0]=c=>p("assignee"))},{default:u(()=>[...a[8]||(a[8]=[m("指定执行人 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!w.value&&e.value?.taskId&&e.value?.operations&&o.showOperationsBtn?(l(),P(re,{key:4},[o.params?.saveBtnText?(l(),f(r,{key:0,loading:i.value||s.value,type:"primary",onClick:o.params?.saveFunction},{default:u(()=>[m(k(o.params?.saveBtnText),1)]),_:1},8,["loading","onClick"])):d("v-if",!0),e.value?.operations.indexOf("addMulti")>-1?(l(),f(r,{key:1,type:"warning",loading:i.value||s.value,onClick:a[1]||(a[1]=c=>p("addMulti"))},{default:u(()=>[...a[9]||(a[9]=[m("加签 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("minusMulti")>-1?(l(),f(r,{key:2,type:"danger",loading:i.value||s.value,onClick:a[2]||(a[2]=c=>p("minusMulti"))},{default:u(()=>[...a[10]||(a[10]=[m("减签 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("refuse")>-1&&o.params?.refuseBtnText!==""?(l(),f(r,{key:3,loading:i.value||s.value,type:"danger",onClick:a[3]||(a[3]=c=>p("refuse"))},{default:u(()=>[m(k(o.params?.refuseBtnText??"终止"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("transfer")>-1&&o.params?.transferBtnText!==""?(l(),f(r,{key:4,loading:i.value||s.value,type:"warning",onClick:a[4]||(a[4]=c=>p("transfer"))},{default:u(()=>[m(k(o.params?.transferBtnText??"转办"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("back")>-1&&o.params?.backBtnText!==""?(l(),f(r,{key:5,loading:i.value||s.value,type:"danger",onClick:a[5]||(a[5]=c=>p("back"))},{default:u(()=>[m(k(o.params?.backBtnText??"驳回"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("complete")>-1&&o.params?.completeBtnText!==""?(l(),f(r,{key:6,loading:i.value||s.value,type:"primary",onClick:a[6]||(a[6]=c=>p("complete"))},{default:u(()=>[m(k(o.params?.completeBtnText??"同意"),1)]),_:1},8,["loading"])):d("v-if",!0)],64)):d("v-if",!0),W(t.$slots,"right",{},void 0,!0)]),_:3})],512)}}}),vt=de(fe,[["__scopeId","data-v-50169462"]]);export{vt as default};
1
+ import{defineComponent as Y,ref as v,useModel as Z,computed as _,onMounted as ee,watch as te,resolveComponent as $,openBlock as l,createElementBlock as P,createVNode as ae,withCtx as u,renderSlot as V,createBlock as f,createTextVNode as m,toDisplayString as k,createCommentVNode as d,unref as oe,Fragment as re,mergeModels as W}from"vue";import D from"../../api/workflow/workflowInstApi.js";import ne from"./components/SelectAssigneeDialog.vue.js";import{_ as ie}from"../../../chunks/AddOrMinusMultiDialog.vue_vue_type_script_setup_true_lang-BWVDdb4B.js";import se from"./components/CheckDialog.vue.js";import{runWorkflowComplete as le}from"../../hooks/workflowCompleteRunner.js";import q from"../../utils/FrameworkUtils.js";import{userInfoStore as w}from"../../stores/userInfoStore.js";import{frontendBus as L}from"../../utils/frontendBus.js";import{showProcessView as ue,showTodoDialog as de}from"../../hooks/workflowTodo.js";import{_ as fe}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";import"../../utils/uuid.js";import"uuid";import"../../utils/encrypt.js";import"jsencrypt";import"../../utils/behaviorTrack.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../../utils/behaviorContext.js";import"../../utils/dateTime.js";import"element-plus";import"../../utils/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"../business/comp.userForm.vue.js";import"@vueuse/core";import"../../api/DeptInfoApi.js";import"../../api/EmployeeInfoApi.js";import"../../hooks/useResetRefHooks.js";import"../../config/vxeSelectColumn.js";import"../../../chunks/ElTagDisplay.vue_vue_type_script_setup_true_lang-DQXuYsW_.js";/* empty css */import"xlsx-js-style";import"../../api/SysUserApi.js";import"../bpmntree/components/UserSelector/UserTag.vue.js";import"../upload/CustomElUpload.vue.js";import"@element-plus/icons-vue";import"../../hooks/useFileView.js";import"../../api/DocumentApi.js";import"../../hooks/useDeleteConfirmHooks.js";import"../../hooks/useBehaviorAction.js";import"../../utils/uploadAccept.js";import"../../utils/buildUploadHeaders.js";import"pinia";import"../../utils/userSessionStorage.js";import"../../hooks/usePermissionHooks.js";import"vue-router";import"../../stores/permissionStore.js";import"../../utils/operationAuth.js";import"../../utils/routeMetaParams.js";import"../../hooks/useOpenNewMenu.js";import"../../utils/commonUtils.js";import"../../utils/tree.js";const me=Y({__name:"TaskOperation",props:W({taskId:{type:String,required:!1},showProcessBtn:{type:Boolean,required:!1,default:!1},params:{type:Object,required:!1},taskInfo:{type:Object,required:!1},showOperationsBtn:{type:Boolean,required:!1,default:!0},showCurWorkBth:{type:Boolean,required:!1,default:!0},onProcessDetail:{type:Function,required:!1},renderDialog:{type:Function,required:!1}},{butLoading:{type:Boolean,default:!1},butLoadingModifiers:{}}),emits:W(["success"],["update:butLoading"]),setup(o,{expose:E,emit:A}){const N=w(),b=v(null),n=o,i=Z(o,"butLoading"),R=A,e=v({taskId:"",comment:""}),O=n.renderDialog,g=(t,a,r,x,c,X)=>{if(!O){console.warn("[TaskOperation] 未注入 renderDialog,无法打开操作弹窗(请通过 props 传入 useDialogHooks 的 render)");return}O(t,a,r,x,c,X)},U=async()=>{if(typeof n.onProcessDetail=="function"){n.onProcessDetail(e.value);return}await ue(e.value)},T=_(()=>e.value?.operations==="assignee"),S=v(""),y=v(),K=v([{source:"edit"}]),j=async()=>{await de(v(e.value),K)},p=async t=>{if(t&&(S.value=t),!e.value)return;y.value={...e.value};let a=!1;if(t==="complete"&&n.params?.beforeCompleteFunction)try{const r=await n.params?.beforeCompleteFunction({taskId:e.value.taskId,userId:w().getUserInfo.userCode,comment:"同意。",procInsId:e.value.procInsId,procDefKey:e.value.procDefKey});if(r===!1)return;r?.readonly&&(a=!0),e.value={...e.value,...r}}catch{return}if(t==="addMulti"||t==="minusMulti")g(ie,{taskId:e.value.taskId,dialogType:t,renderDialog:g,onSuccess:I,onWorkflowSuccess:C},{title:t==="addMulti"?"加签":"减签",size:"400px"},"dialog");else if(t==="assignee")M(e.value.taskId);else{if(e.value.variables,t==="complete"&&e.value.firstSubmitNode&&n.params?.ignoreConfirm){await H();return}g(se,{taskVo:e.value,dialogType:t,taskOperate:n?.params,commentReadonly:a,renderDialog:g,onOpenAssignee:M,onSuccess:I,onWorkflowSuccess:C},{title:z(t),size:"480px",closeOnClickModal:!1},"dialog")}},z=t=>{switch(t){case"complete":return"流程审批";case"refuse":return"终止审批";case"back":return"驳回审批";case"transfer":return"转办审批";default:return"流程审批"}},H=async()=>{if(!e.value||!w().getUserInfo.userCode)return;y.value={...e.value};const t={taskId:e.value.taskId,userId:w().getUserInfo.userCode,comment:e.value.comment??"",procInsId:e.value.procInsId,procDefKey:e.value.procDefKey,variables:e.value.variables};try{if(i.value=!0,n.params?.completeFunction){const a=await n.params?.completeFunction(t);a&&a?.taskId?e.value=a:e.value=await D.getTaskInst(e.value.taskId)}else e.value=await D.taskComplete(t)}catch(a){q.messageError(a);return}finally{i.value=!1}try{await h({actionType:"complete",taskVo:e.value,askVo:t})}catch{}},M=t=>{y.value={...e.value},g(ne,{taskId:t,onSuccess:I,onWorkflowSuccess:C},{title:"指定执行人",size:"450px"},"dialog")},I=t=>{t&&(e.value=t),L.emit("todoRefresh"),L.emit("homePageRefresh"),R("success")},h=async(t,a)=>{const r={...t,actionType:t.actionType||S.value,originTask:t.originTask??y.value,taskVo:t.taskVo??e.value};await le(n.params,r),a?.refresh!==!1&&I(t.taskVo)},C=t=>h({...t,originTask:t.originTask??y.value},{refresh:!1}),F=(t,a)=>t?t.classList?.contains(a)?t:F(t.parentElement,a):null,G=()=>{const t=F(b.value,"todo-dialog-class");return t?console.log("找到满足条件的元素:",t):console.log("未找到满足条件的元素"),t};ee(()=>{G(),B()});const s=v(!1),J=async()=>{s.value=!0},Q=()=>{s.value=!1},B=async()=>{if(n.taskInfo)e.value=n.taskInfo,e.value.finishTime&&console.log("该待办已完成!");else if(n.taskId)try{J(),e.value=await D.getTaskInst(n.taskId),e.value.finishTime&&console.log("该待办已完成!")}catch(t){q.messageError(t)}finally{Q()}};return E({reload:()=>{B()}}),te(()=>n.taskId,B),(t,a)=>{const r=$("el-button"),x=$("el-flex");return l(),P("div",{ref_key:"taskFlexRef",ref:b,class:"task-operation"},[ae(x,{align:"center",justify:"flex-end"},{default:u(()=>[V(t.$slots,"left",{},void 0,!0),o.params?.cancelBtnText!==""?(l(),f(r,{key:0,loading:i.value||s.value,onClick:o.params?.cancelFunction},{default:u(()=>[m(k(o.params?.cancelBtnText??"取消"),1)]),_:1},8,["loading","onClick"])):d("v-if",!0),o.showProcessBtn&&e.value?.procInsId?(l(),f(r,{key:1,type:"info",loading:i.value||s.value,onClick:U},{default:u(()=>[...a[7]||(a[7]=[m(" 流程信息 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!T.value&&e.value?.taskId&&o.showCurWorkBth&&!o.showOperationsBtn?(l(),f(r,{key:2,loading:i.value||s.value,type:"warning",disabled:e.value?.taskId&&(!e.value?.operations||oe(N).getUserInfo.userCode!==e.value?.assigneeId),onClick:j},{default:u(()=>[m(k(e.value.taskName),1)]),_:1},8,["loading","disabled"])):d("v-if",!0),T.value?(l(),f(r,{key:3,type:"primary",loading:i.value||s.value,onClick:a[0]||(a[0]=c=>p("assignee"))},{default:u(()=>[...a[8]||(a[8]=[m("指定执行人 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!T.value&&e.value?.taskId&&e.value?.operations&&o.showOperationsBtn?(l(),P(re,{key:4},[o.params?.saveBtnText?(l(),f(r,{key:0,loading:i.value||s.value,type:"primary",onClick:o.params?.saveFunction},{default:u(()=>[m(k(o.params?.saveBtnText),1)]),_:1},8,["loading","onClick"])):d("v-if",!0),e.value?.operations.indexOf("addMulti")>-1?(l(),f(r,{key:1,type:"warning",loading:i.value||s.value,onClick:a[1]||(a[1]=c=>p("addMulti"))},{default:u(()=>[...a[9]||(a[9]=[m("加签 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("minusMulti")>-1?(l(),f(r,{key:2,type:"danger",loading:i.value||s.value,onClick:a[2]||(a[2]=c=>p("minusMulti"))},{default:u(()=>[...a[10]||(a[10]=[m("减签 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("refuse")>-1&&o.params?.refuseBtnText!==""?(l(),f(r,{key:3,loading:i.value||s.value,type:"danger",onClick:a[3]||(a[3]=c=>p("refuse"))},{default:u(()=>[m(k(o.params?.refuseBtnText??"终止"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("transfer")>-1&&o.params?.transferBtnText!==""?(l(),f(r,{key:4,loading:i.value||s.value,type:"warning",onClick:a[4]||(a[4]=c=>p("transfer"))},{default:u(()=>[m(k(o.params?.transferBtnText??"转办"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("back")>-1&&o.params?.backBtnText!==""?(l(),f(r,{key:5,loading:i.value||s.value,type:"danger",onClick:a[5]||(a[5]=c=>p("back"))},{default:u(()=>[m(k(o.params?.backBtnText??"驳回"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("complete")>-1&&o.params?.completeBtnText!==""?(l(),f(r,{key:6,loading:i.value||s.value,type:"primary",onClick:a[6]||(a[6]=c=>p("complete"))},{default:u(()=>[m(k(o.params?.completeBtnText??"同意"),1)]),_:1},8,["loading"])):d("v-if",!0)],64)):d("v-if",!0),V(t.$slots,"right",{},void 0,!0)]),_:3})],512)}}}),kt=fe(me,[["__scopeId","data-v-a84c5805"]]);export{kt as default};
@@ -14,12 +14,13 @@ type __VLS_Props = {
14
14
  type __VLS_PublicProps = __VLS_Props & {
15
15
  'loading'?: boolean;
16
16
  };
17
- declare var __VLS_13: {
17
+ declare var __VLS_17: {
18
18
  task: IWfTaskVo | undefined;
19
19
  process: IWfProcessInstVo | undefined;
20
+ snapshot: Record<string, any> | null;
20
21
  };
21
22
  type __VLS_Slots = {} & {
22
- content?: (props: typeof __VLS_13) => any;
23
+ content?: (props: typeof __VLS_17) => any;
23
24
  };
24
25
  declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps, {
25
26
  resetQuery: () => Promise<void>;
@@ -1,15 +1,22 @@
1
- import{defineComponent as qe,useModel as Je,ref as $,computed as v,resolveComponent as T,resolveDirective as Xe,openBlock as n,createElementBlock as r,createCommentVNode as l,withDirectives as Ze,normalizeStyle as ye,normalizeClass as M,createElementVNode as c,Fragment as m,toDisplayString as p,renderList as D,unref as J,createVNode as E,createTextVNode as b,createBlock as B,renderSlot as et,resolveDynamicComponent as tt,mergeProps as st,withCtx as S,mergeModels as _e,nextTick as ot}from"vue";import{ElMessageBox as nt,ElMessage as at}from"element-plus";import A from"../../api/workflow/workflowInstApi.js";import rt from"../../api/DocumentApi.js";import lt from"../../hooks/useFileView.js";import it from"../../hooks/useDictHooks.js";import he from"../../utils/FrameworkUtils.js";import{parseDateTime as X,formatDateTime as Z}from"../../utils/dateTime.js";import{formatStayDuration as ee,resolveTimeoutMeta as ct}from"../../utils/flowTimeout.js";import{userInfoStore as O}from"../../stores/userInfoStore.js";import dt from"./TaskOperation.vue.js";import{_ as ut}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";import"../../utils/uuid.js";import"uuid";import"../../utils/encrypt.js";import"jsencrypt";import"../../utils/behaviorTrack.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../../utils/behaviorContext.js";import"../../utils/frontendBus.js";import"../../utils/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"../../api/SysDictCacheApi.js";import"../../stores/dictStore.js";import"pinia";import"../../utils/userSessionStorage.js";import"xlsx-js-style";import"./components/SelectAssigneeDialog.vue.js";import"../../../chunks/AddOrMinusMultiDialog.vue_vue_type_script_setup_true_lang-BWVDdb4B.js";import"../business/comp.userForm.vue.js";import"@vueuse/core";import"../../api/DeptInfoApi.js";import"../../api/EmployeeInfoApi.js";import"../../hooks/useResetRefHooks.js";import"../../config/vxeSelectColumn.js";import"../../../chunks/ElTagDisplay.vue_vue_type_script_setup_true_lang-DQXuYsW_.js";/* empty css */import"../../api/SysUserApi.js";import"./components/CheckDialog.vue.js";import"../bpmntree/components/UserSelector/UserTag.vue.js";import"../upload/CustomElUpload.vue.js";import"@element-plus/icons-vue";import"../../hooks/useDeleteConfirmHooks.js";import"../../hooks/useBehaviorAction.js";import"../../utils/uploadAccept.js";import"../../utils/buildUploadHeaders.js";import"../../hooks/workflowCompleteRunner.js";import"../../hooks/workflowTodo.js";import"../../hooks/usePermissionHooks.js";import"vue-router";import"../../stores/permissionStore.js";import"../../utils/operationAuth.js";import"../../utils/routeMetaParams.js";import"../../hooks/useOpenNewMenu.js";import"../../utils/commonUtils.js";import"../../utils/tree.js";const pt={class:"workflow-todo-shell"},ft={class:"workflow-todo-shell__body dialog-content-fill"},mt={class:"wf-wait__icon"},kt={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},vt={class:"wf-wait__main"},wt={class:"wf-wait__title"},yt={class:"wf-wait__sub"},_t={key:0,class:"wf-wait__opinion"},ht={key:1,class:"wf-wait__files"},gt=["onClick"],It={key:0},Tt={key:1,class:"wf-progress-scroll"},bt={class:"wf-progress-steps"},Ct={class:"wf-progress-step__icon-wrap"},xt={class:"wf-progress-step__icon"},Nt={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"},Dt={key:4},Et={class:"wf-progress-step__name"},Bt={class:"wf-progress-step__name-text"},Lt={class:"wf-progress-step__name-label"},St={key:0,class:"wf-progress-step__occurrence"},Kt={key:0,class:"workflow-todo-shell__record-occurrence"},$t={key:1,class:"workflow-todo-shell__record-type"},Mt={key:0,class:"workflow-todo-shell__record-user"},At={class:"workflow-todo-shell__record-person__name"},Ot={key:0,class:"workflow-todo-shell__comment"},Ft={key:0,class:"workflow-todo-shell__record-files"},Vt=["onClick"],jt={class:"workflow-todo-shell__record-person__name"},Ut={key:0,class:"workflow-todo-shell__comment"},Pt={key:1,class:"workflow-todo-shell__record-files"},Wt=["onClick"],Rt={class:"workflow-todo-shell__record-person__name"},zt={key:0,class:"workflow-todo-shell__footer"},ge="__end__",Ht=qe({__name:"WorkflowTodoShell",props:_e({taskId:{},taskInfo:{default:void 0},readonly:{type:Boolean,default:!1},contentComponent:{default:void 0},contentProps:{default:()=>({})},renderDialog:{type:Function,default:void 0},showFooter:{type:Boolean,default:!0},withdrawEnabled:{type:Boolean,default:!1}},{loading:{type:Boolean,default:!1},loadingModifiers:{}}),emits:_e(["cancel","success"],["update:loading"]),setup(C,{expose:Ie,emit:Te}){const f=C,F=Te,L=Je(C,"loading"),w=$(),_=$(),j=$(),U=$(!1),{getDictTypeData:be}=it(["SysFlowTimeout"]),Ce=e=>[...e].sort((t,s)=>(t.createTime||"").localeCompare(s.createTime||"")),P=v(()=>Ce([..._.value?.hisTasks||[],..._.value?.activeTasks||[]])),W=$({}),R=lt().fileView,z=e=>{const t=(e.split(".").pop()||"").toLowerCase();return".jpg,.jpeg,.png,.gif,.bmp".includes(t)?"adtec-image":t==="pdf"?"adtec-pdf":t==="doc"||t==="docx"?"adtec-word":t==="xls"||t==="xlsx"?"adtec-excel":t==="ppt"||t==="pptx"?"adtec-ppt":"adtec-text"},x=e=>e?W.value[e]||[]:[],xe=async()=>{var t;const e=Array.from(new Set(P.value.map(s=>s.taskId).filter(s=>!!s)));if(e.length)try{const s=await rt.getUpLoadFilesByBussinessIds(e),o={};for(const i of s)i.businessId&&(o[t=i.businessId]||(o[t]=[])).push(i);W.value=o}catch{W.value={}}},H=v(()=>{const e=new Map;for(const t of P.value){const s=ve(t),o=e.get(s);o?o.tasks.push(t):e.set(s,{taskName:t.taskName,taskDefKey:t.taskDefKey,parentExecutionId:t.parentExecutionId,tasks:[t],approvalType:t.approvalType})}return Array.from(e.values())}),V=v(()=>w.value?.procEndTime?!0:!!(_.value&&!(_.value.activeTasks||[]).length&&(_.value.hisTasks||[]).length)),Ne=e=>/^#[0-9a-fA-F]{6}$/.test(e)?`${e}1f`:"var(--el-color-primary-light-9)",te={ok:"var(--el-color-success)",warning:"var(--el-color-warning)",danger:"var(--el-color-danger)"},se={ok:"var(--el-color-success-light-9)",warning:"var(--el-color-warning-light-9)",danger:"var(--el-color-danger-light-9)"},De=e=>e==="danger"?"danger":e==="warning"?"warning":"ok",oe=e=>e==="danger"?"close":e==="warning"?"back":"check",Ee=e=>!e||e.startsWith("已")?e:`已${e}`,Q=v(()=>String(w.value?.finishedResult||"")==="terminate"||String(w.value?.processStatus||"")==="terminated"),G=v(()=>P.value.find(e=>!!f.taskId&&e.taskId===f.taskId)),ne=e=>!!e?.assigneeId&&e.assigneeId===O().getUserInfo.userCode,Be=v(()=>{const e=O().getUserInfo.userCode;if(!e)return!1;const t=G.value;return t?.taskLocalVars?.firstTask?ne(t):!t&&f.taskInfo?.startUserId===e}),Le=e=>{const t=(e?.commentList||[]).find(s=>String(s.type)!=="8");return String(t?.fullMessage||"").trim()},Se=e=>{if(!e?.finishTime)return;const t=!!e.taskLocalVars?.firstTask,s=t?{label:"已提交",type:"success"}:ue[String((e.commentList||[]).find(K=>String(K.type)!=="8")?.type||"")]||{label:"已办",type:"success"},o=De(s.type),i=!!e.assigneeId&&e.assigneeId===O().getUserInfo.userCode,h=X(e.createTime||"")?.getTime()??0,k=X(e.finishTime||"")?.getTime()??0,g=h&&k?Math.max(k-h,0):0,y=Ee(s.label);return{level:o,icon:oe(o),color:te[o],weakColor:se[o],title:`${i?"我的处理":e.assigneeName||"审批"}:${y}`,sub:[Z(e.finishTime),g?`耗时 ${ee(g)}`:""].filter(Boolean).join(" · "),opinion:t?"":Le(e),filesTaskId:t?"":e.taskId||"",ctText:e.taskName||"",ctLabel:"",ctKind:"node"}},ae=()=>{const e=w.value,t=Q.value?"danger":"ok",s=Q.value?"流程已终止":"流程已办结",o=Z(e?.procEndTime);return{level:t,icon:oe(t),color:te[t],weakColor:se[t],title:s,sub:o?`${o} ${Q.value?"已终止":"完成归档"}`:s,opinion:"",filesTaskId:"",ctText:"",ctLabel:"",ctKind:""}},re=()=>{const e=_.value?.activeTasks||[],t=e.map(y=>X(y.createTime||"")).filter(y=>!!y).sort((y,K)=>y.getTime()-K.getTime())[0];if(!t)return;const s=e[0],o=Array.from(new Set(e.map(y=>y.assigneeName).filter(y=>!!y))),i=s?.approvalType||"",h=i==="joint"||i==="all"?" · ":" / ",k=Math.max(Date.now()-t.getTime(),0),g=ct(be("SysFlowTimeout"),k);return{title:`当前等待:${s?.taskName||w.value?.taskName||"当前节点"} · ${o.length?o.join(h):"待分配"}`,sub:`已停留 ${ee(k)}`,opinion:"",filesTaskId:"",ctText:ee(k),ctLabel:g.level==="danger"?"超时风险":"等待中",ctKind:"stay",color:g.color||"var(--el-color-primary)",level:g.level,weakColor:Ne(g.color),icon:"clock"}},d=v(()=>{const e=G.value;return Be.value?V.value?ae():re():e?.finishTime&&!e.taskLocalVars?.firstTask&&ne(e)?Se(e):V.value?ae():re()}),Ke=v(()=>{const e=[...H.value],t=new Set(e.map(o=>le(o)));for(const o of _.value?.futureTasks||[]){const i=`${o.taskDefKey||o.taskName}-`;t.has(i)||e.push({taskName:o.taskName,taskDefKey:o.taskDefKey,tasks:[],assigneeNames:o.assigneeNames,approvalType:o.approvalType})}e.push({taskName:"结束",taskDefKey:ge,tasks:[],isEnd:!0});const s=new Map;for(const o of e){const i=o.taskDefKey||o.taskName||"";i&&(o.occurrence=(s.get(i)||0)+1,s.set(i,o.occurrence))}return e}),le=e=>`${e.taskDefKey||e.taskName}-${e.parentExecutionId||""}`,$e={single:"或签",joint:"会签",all:"会签"},ie=e=>$e[e.approvalType||e.tasks[0]?.approvalType||""]||"",Me=e=>(e.approvalType||e.tasks[0]?.approvalType||"")==="single",Ae=v(()=>{const e=G.value;if(!e?.finishTime)return;const t=O().getUserInfo.userCode;if(!(!t||e.assigneeId!==t))return e}),ce=e=>{const t=O().getUserInfo.userCode;if(!t)return"";const s=e.tasks.filter(i=>!!i.finishTime&&i.assigneeId===t);if(!s.length)return"";const o=Ae.value?.taskId;return o&&s.some(i=>i.taskId===o)?"entry":"other"},de=e=>{const t=(e.assigneeNames||"").split(",").map(s=>s.trim()).filter(Boolean);return t.length?t:["待处理"]},ue={1:{label:"同意",type:"success"},2:{label:"退回",type:"warning"},3:{label:"驳回",type:"warning"},4:{label:"委派",type:"warning"},5:{label:"转办",type:"warning"},6:{label:"终止",type:"danger"},7:{label:"撤回",type:"info"},8:{label:"催办",type:"info"}},Oe=e=>Z(e.finishTime||e.createTime),Fe={success:"var(--el-color-success)",warning:"var(--el-color-warning)",danger:"var(--el-color-danger)",primary:"var(--el-color-primary)"},Ve=e=>Fe[e]||"",N=e=>{if(e.isEnd)return V.value?{label:"已结束",type:"success",hollow:!0}:{label:"等待",type:"info",hollow:!0};if(!e.tasks.length)return{label:"等待",type:"info",hollow:!0};const t=e.tasks;if(t.some(i=>!i.finishTime))return{label:"进行中",type:"primary",hollow:!0};let s="已办",o="success";if(t.some(i=>i.taskLocalVars?.firstTask))s="提交";else{const i=[...t].sort((k,g)=>(g.finishTime||"").localeCompare(k.finishTime||""))[0]?.commentList?.[0],h=ue[i?.type||""];s=h?.label||"已办",o=h?.type||"success"}return{label:s,type:o,hollow:!0}},pe=e=>{const t=e.assigneeName||e.startUserName||"待处理";return e.finishTime?`${t} · ${Oe(e)}`:t},je=e=>e.tasks.length?e.tasks.map(pe).join(" / "):de(e).join(" / "),Y=e=>e.tasks.map(t=>t.comment).filter(Boolean).join(" / "),fe=v(()=>{const e=new Map,t=[];for(const s of H.value){const o=s.taskDefKey||s.taskName||"";if(!o)continue;const i=s.tasks.some(k=>!k.finishTime)?"process":N(s).type,h=e.get(o);if(h!==void 0){const k=t[h];k.occurrence=(k.occurrence||1)+1,k.parentExecutionId=s.parentExecutionId,k.status=i;continue}e.set(o,t.length),t.push({taskName:s.taskName,taskDefKey:s.taskDefKey,parentExecutionId:s.parentExecutionId,status:i,occurrence:1})}for(const s of _.value?.futureTasks||[]){const o=s.taskDefKey||s.taskName||"";if(!o)continue;const i=e.get(o);if(i!==void 0){t[i].status="wait";continue}e.set(o,t.length),t.push({taskName:s.taskName,taskDefKey:s.taskDefKey,status:"wait"})}return t.push({taskName:"结束",taskDefKey:ge,status:V.value?"success":"wait"}),t}),me=e=>{const t=O().getUserInfo.userCode;return!t||!e?!1:!!(e.assigneeId===t||e.candidate&&e.candidate.split(",").map(o=>o.trim()).filter(Boolean).includes(t))},Ue=v(()=>me(w.value)?!0:(_.value?.activeTasks||[]).some(e=>me(e))),ke=v(()=>f.readonly||!!w.value?.finishTime||!!w.value?.procEndTime||U.value&&!(_.value?.activeTasks||[]).length||!Ue.value),q=$(!1),Pe=v(()=>ke.value&&!!f.taskId&&(f.withdrawEnabled===!0||f.taskInfo?.withdrawEnabled===!0)),We=async()=>{const e=f.taskInfo||w.value;if(!e?.taskId)return;const t={taskId:e.taskId,taskDefKey:e.taskDefKey,taskName:e.taskName,taskTitle:e.taskTitle,procInsId:e.procInsId,procDefId:e.procDefId,procDefKey:e.procDefKey,businessId:e.businessId};q.value=!0;try{await A.processWithdrawalVerification(t);let s="";try{const o=await A.processWithdrawalPreview(t);s=String(o?.targetTaskName||"")}catch(o){console.warn("撤回预览失败",o)}await nt.confirm(`确认撤回「${e.taskTitle||e.taskName||"该申请单"}」?`+(s?`撤回后流程将回到「${s}」,需要重新提交。`:"撤回后需要重新提交。"),"撤回确认",{type:"warning",confirmButtonText:"确认撤回",cancelButtonText:"取消"}),await A.processWithdrawal(t),at.success("撤回成功"),F("success",e),F("cancel")}catch(s){if(s==="cancel"||s==="close")return;he.messageError(s)}finally{q.value=!1}},Re=v(()=>j.value?.taskOption),ze=v(()=>{const e=Re.value;return{...e||{},cancelFunction:(...t)=>{e?.cancelFunction?.(...t),F("cancel")},workflowComplete:async(...t)=>{await e?.workflowComplete?.(...t)}}}),ve=e=>`${e.taskDefKey||e.taskName}-${e.parentExecutionId||""}`,we=async(e,t=!1)=>{const s=f.taskInfo&&f.taskInfo.procInsId==null&&f.taskInfo.processInstanceId!=null?{...f.taskInfo,procInsId:f.taskInfo.processInstanceId}:f.taskInfo;if(!(!f.taskId&&!s?.procInsId))try{L.value=!0,U.value=!1,w.value=e?{...w.value,...e}:t&&f.taskId?await A.getTaskInst(f.taskId):s||await A.getTaskInst(f.taskId),w.value?.procInsId&&(_.value=await A.getProcessTaskList(w.value.procInsId)),U.value=!0,await xe(),await ot(),await j.value?.resetQuery?.()}catch(o){he.messageError(o)}finally{L.value=!1}},He=async e=>{F("success",e),await we(e,!0)};return Ie({resetQuery:async()=>{await we()}}),(e,t)=>{const s=T("el-icons"),o=T("el-title"),i=T("el-empty"),h=T("el-tag-display"),k=T("el-flex"),g=T("el-timeline-item"),y=T("el-timeline"),K=T("el-button"),Qe=T("operation-auth"),Ge=Xe("loading");return n(),r("div",pt,[l(`
1
+ import{defineComponent as tt,useModel as st,ref as S,computed as w,onMounted as ot,onBeforeUnmount as nt,resolveComponent as T,resolveDirective as at,openBlock as n,createElementBlock as r,createCommentVNode as l,createBlock as b,Teleport as rt,unref as C,toDisplayString as d,withDirectives as lt,normalizeStyle as Ie,normalizeClass as O,createElementVNode as c,Fragment as k,renderList as B,createVNode as K,createTextVNode as x,renderSlot as it,resolveDynamicComponent as ct,mergeProps as dt,withCtx as $,mergeModels as Te,nextTick as ut}from"vue";import{ElMessageBox as pt,ElMessage as ft}from"element-plus";import j from"../../api/workflow/workflowInstApi.js";import kt from"../../api/DocumentApi.js";import mt from"../../hooks/useFileView.js";import vt from"../../hooks/useDictHooks.js";import be from"../../utils/FrameworkUtils.js";import wt from"../../hooks/useWorkflowSnapshot.js";import{parseDateTime as ee,formatDateTime as te}from"../../utils/dateTime.js";import{formatStayDuration as se,resolveTimeoutMeta as yt}from"../../utils/flowTimeout.js";import{userInfoStore as F}from"../../stores/userInfoStore.js";import _t from"./TaskOperation.vue.js";import{_ as ht}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../utils/request.js";import"../../utils/AxiosConfig.js";import"axios";import"../../utils/uuid.js";import"uuid";import"../../utils/encrypt.js";import"jsencrypt";import"../../utils/behaviorTrack.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../../utils/behaviorContext.js";import"../../utils/frontendBus.js";import"../../utils/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"../../api/SysDictCacheApi.js";import"../../stores/dictStore.js";import"pinia";import"../../utils/userSessionStorage.js";import"xlsx-js-style";import"./components/SelectAssigneeDialog.vue.js";import"../../../chunks/AddOrMinusMultiDialog.vue_vue_type_script_setup_true_lang-BWVDdb4B.js";import"../business/comp.userForm.vue.js";import"@vueuse/core";import"../../api/DeptInfoApi.js";import"../../api/EmployeeInfoApi.js";import"../../hooks/useResetRefHooks.js";import"../../config/vxeSelectColumn.js";import"../../../chunks/ElTagDisplay.vue_vue_type_script_setup_true_lang-DQXuYsW_.js";/* empty css */import"../../api/SysUserApi.js";import"./components/CheckDialog.vue.js";import"../bpmntree/components/UserSelector/UserTag.vue.js";import"../upload/CustomElUpload.vue.js";import"@element-plus/icons-vue";import"../../hooks/useDeleteConfirmHooks.js";import"../../hooks/useBehaviorAction.js";import"../../utils/uploadAccept.js";import"../../utils/buildUploadHeaders.js";import"../../hooks/workflowCompleteRunner.js";import"../../hooks/workflowTodo.js";import"../../hooks/usePermissionHooks.js";import"vue-router";import"../../stores/permissionStore.js";import"../../utils/operationAuth.js";import"../../utils/routeMetaParams.js";import"../../hooks/useOpenNewMenu.js";import"../../utils/commonUtils.js";import"../../utils/tree.js";const gt={key:0,class:"workflow-todo-shell__source-label"},It={class:"workflow-todo-shell__body dialog-content-fill"},Tt={key:0,class:"workflow-todo-shell__source-fallback"},bt={class:"wf-wait__icon"},Ct={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},xt={class:"wf-wait__main"},Et={class:"wf-wait__title"},Nt={class:"wf-wait__sub"},Dt={key:0,class:"wf-wait__opinion"},St={key:1,class:"wf-wait__files"},Bt=["onClick"],Kt={key:0},Lt={key:1,class:"wf-progress-scroll"},Mt={class:"wf-progress-steps"},$t={class:"wf-progress-step__icon-wrap"},At={class:"wf-progress-step__icon"},Ot={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"},jt={key:4},Ft={class:"wf-progress-step__name"},Vt={class:"wf-progress-step__name-text"},Ut={class:"wf-progress-step__name-label"},Pt={key:0,class:"wf-progress-step__occurrence"},Wt={key:0,class:"workflow-todo-shell__record-occurrence"},Rt={key:1,class:"workflow-todo-shell__record-type"},zt={key:0,class:"workflow-todo-shell__record-user"},Ht={class:"workflow-todo-shell__record-person__name"},Qt={key:0,class:"workflow-todo-shell__comment"},qt={key:0,class:"workflow-todo-shell__record-files"},Gt=["onClick"],Yt={class:"workflow-todo-shell__record-person__name"},Jt={key:0,class:"workflow-todo-shell__comment"},Xt={key:1,class:"workflow-todo-shell__record-files"},Zt=["onClick"],es={class:"workflow-todo-shell__record-person__name"},ts={key:1,class:"workflow-todo-shell__footer"},Ce="__end__",ss=tt({__name:"WorkflowTodoShell",props:Te({taskId:{},taskInfo:{default:void 0},readonly:{type:Boolean,default:!1},contentComponent:{default:void 0},contentProps:{default:()=>({})},renderDialog:{type:Function,default:void 0},showFooter:{type:Boolean,default:!0},withdrawEnabled:{type:Boolean,default:!1}},{loading:{type:Boolean,default:!1},loadingModifiers:{}}),emits:Te(["cancel","success"],["update:loading"]),setup(E,{expose:xe,emit:Ee}){const u=E,V=Ee,L=st(E,"loading"),v=S(),_=S(),W=S(),R=S(!1),{getDictTypeData:Ne}=vt(["SysFlowTimeout"]),De=e=>[...e].sort((t,s)=>(t.createTime||"").localeCompare(s.createTime||"")),z=w(()=>De([..._.value?.hisTasks||[],..._.value?.activeTasks||[]])),H=S({}),Q=mt().fileView,q=e=>{const t=(e.split(".").pop()||"").toLowerCase();return".jpg,.jpeg,.png,.gif,.bmp".includes(t)?"adtec-image":t==="pdf"?"adtec-pdf":t==="doc"||t==="docx"?"adtec-word":t==="xls"||t==="xlsx"?"adtec-excel":t==="ppt"||t==="pptx"?"adtec-ppt":"adtec-text"},N=e=>e?H.value[e]||[]:[],Se=async()=>{var t;const e=Array.from(new Set(z.value.map(s=>s.taskId).filter(s=>!!s)));if(e.length)try{const s=await kt.getUpLoadFilesByBussinessIds(e),o={};for(const i of s)i.businessId&&(o[t=i.businessId]||(o[t]=[])).push(i);H.value=o}catch{H.value={}}},G=w(()=>{const e=new Map;for(const t of z.value){const s=he(t),o=e.get(s);o?o.tasks.push(t):e.set(s,{taskName:t.taskName,taskDefKey:t.taskDefKey,parentExecutionId:t.parentExecutionId,tasks:[t],approvalType:t.approvalType})}return Array.from(e.values())}),U=w(()=>v.value?.procEndTime?!0:!!(_.value&&!(_.value.activeTasks||[]).length&&(_.value.hisTasks||[]).length)),Be=e=>/^#[0-9a-fA-F]{6}$/.test(e)?`${e}1f`:"var(--el-color-primary-light-9)",oe={ok:"var(--el-color-success)",warning:"var(--el-color-warning)",danger:"var(--el-color-danger)"},ne={ok:"var(--el-color-success-light-9)",warning:"var(--el-color-warning-light-9)",danger:"var(--el-color-danger-light-9)"},Ke=e=>e==="danger"?"danger":e==="warning"?"warning":"ok",ae=e=>e==="danger"?"close":e==="warning"?"back":"check",Le=e=>!e||e.startsWith("已")?e:`已${e}`,Y=w(()=>String(v.value?.finishedResult||"")==="terminate"||String(v.value?.processStatus||"")==="terminated"),J=w(()=>z.value.find(e=>!!u.taskId&&e.taskId===u.taskId)),re=e=>!!e?.assigneeId&&e.assigneeId===F().getUserInfo.userCode,Me=w(()=>{const e=F().getUserInfo.userCode;if(!e)return!1;const t=J.value;return t?.taskLocalVars?.firstTask?re(t):!t&&u.taskInfo?.startUserId===e}),$e=e=>{const t=(e?.commentList||[]).find(s=>String(s.type)!=="8");return String(t?.fullMessage||"").trim()},Ae=e=>{if(!e?.finishTime)return;const t=!!e.taskLocalVars?.firstTask,s=t?{label:"已提交",type:"success"}:fe[String((e.commentList||[]).find(A=>String(A.type)!=="8")?.type||"")]||{label:"已办",type:"success"},o=Ke(s.type),i=!!e.assigneeId&&e.assigneeId===F().getUserInfo.userCode,h=ee(e.createTime||"")?.getTime()??0,m=ee(e.finishTime||"")?.getTime()??0,g=h&&m?Math.max(m-h,0):0,y=Le(s.label);return{level:o,icon:ae(o),color:oe[o],weakColor:ne[o],title:`${i?"我的处理":e.assigneeName||"审批"}:${y}`,sub:[te(e.finishTime),g?`耗时 ${se(g)}`:""].filter(Boolean).join(" · "),opinion:t?"":$e(e),filesTaskId:t?"":e.taskId||"",ctText:e.taskName||"",ctLabel:"",ctKind:"node"}},le=()=>{const e=v.value,t=Y.value?"danger":"ok",s=Y.value?"流程已终止":"流程已办结",o=te(e?.procEndTime);return{level:t,icon:ae(t),color:oe[t],weakColor:ne[t],title:s,sub:o?`${o} ${Y.value?"已终止":"完成归档"}`:s,opinion:"",filesTaskId:"",ctText:"",ctLabel:"",ctKind:""}},ie=()=>{const e=_.value?.activeTasks||[],t=e.map(y=>ee(y.createTime||"")).filter(y=>!!y).sort((y,A)=>y.getTime()-A.getTime())[0];if(!t)return;const s=e[0],o=Array.from(new Set(e.map(y=>y.assigneeName).filter(y=>!!y))),i=s?.approvalType||"",h=i==="joint"||i==="all"?" · ":" / ",m=Math.max(Date.now()-t.getTime(),0),g=yt(Ne("SysFlowTimeout"),m);return{title:`当前等待:${s?.taskName||v.value?.taskName||"当前节点"} · ${o.length?o.join(h):"待分配"}`,sub:`已停留 ${se(m)}`,opinion:"",filesTaskId:"",ctText:se(m),ctLabel:g.level==="danger"?"超时风险":"等待中",ctKind:"stay",color:g.color||"var(--el-color-primary)",level:g.level,weakColor:Be(g.color),icon:"clock"}},p=w(()=>{const e=J.value;return Me.value?U.value?le():ie():e?.finishTime&&!e.taskLocalVars?.firstTask&&re(e)?Ae(e):U.value?le():ie()}),Oe=w(()=>{const e=[...G.value],t=new Set(e.map(o=>ce(o)));for(const o of _.value?.futureTasks||[]){const i=`${o.taskDefKey||o.taskName}-`;t.has(i)||e.push({taskName:o.taskName,taskDefKey:o.taskDefKey,tasks:[],assigneeNames:o.assigneeNames,approvalType:o.approvalType})}e.push({taskName:"结束",taskDefKey:Ce,tasks:[],isEnd:!0});const s=new Map;for(const o of e){const i=o.taskDefKey||o.taskName||"";i&&(o.occurrence=(s.get(i)||0)+1,s.set(i,o.occurrence))}return e}),ce=e=>`${e.taskDefKey||e.taskName}-${e.parentExecutionId||""}`,je={single:"或签",joint:"会签",all:"会签"},de=e=>je[e.approvalType||e.tasks[0]?.approvalType||""]||"",Fe=e=>(e.approvalType||e.tasks[0]?.approvalType||"")==="single",Ve=w(()=>{const e=J.value;if(!e?.finishTime)return;const t=F().getUserInfo.userCode;if(!(!t||e.assigneeId!==t))return e}),ue=e=>{const t=F().getUserInfo.userCode;if(!t)return"";const s=e.tasks.filter(i=>!!i.finishTime&&i.assigneeId===t);if(!s.length)return"";const o=Ve.value?.taskId;return o&&s.some(i=>i.taskId===o)?"entry":"other"},pe=e=>{const t=(e.assigneeNames||"").split(",").map(s=>s.trim()).filter(Boolean);return t.length?t:["待处理"]},fe={1:{label:"同意",type:"success"},2:{label:"退回",type:"warning"},3:{label:"驳回",type:"warning"},4:{label:"委派",type:"warning"},5:{label:"转办",type:"warning"},6:{label:"终止",type:"danger"},7:{label:"撤回",type:"info"},8:{label:"催办",type:"info"}},Ue=e=>te(e.finishTime||e.createTime),Pe={success:"var(--el-color-success)",warning:"var(--el-color-warning)",danger:"var(--el-color-danger)",primary:"var(--el-color-primary)"},We=e=>Pe[e]||"",D=e=>{if(e.isEnd)return U.value?{label:"已结束",type:"success",hollow:!0}:{label:"等待",type:"info",hollow:!0};if(!e.tasks.length)return{label:"等待",type:"info",hollow:!0};const t=e.tasks;if(t.some(i=>!i.finishTime))return{label:"进行中",type:"primary",hollow:!0};let s="已办",o="success";if(t.some(i=>i.taskLocalVars?.firstTask))s="提交";else{const i=[...t].sort((m,g)=>(g.finishTime||"").localeCompare(m.finishTime||""))[0]?.commentList?.[0],h=fe[i?.type||""];s=h?.label||"已办",o=h?.type||"success"}return{label:s,type:o,hollow:!0}},ke=e=>{const t=e.assigneeName||e.startUserName||"待处理";return e.finishTime?`${t} · ${Ue(e)}`:t},Re=e=>e.tasks.length?e.tasks.map(ke).join(" / "):pe(e).join(" / "),X=e=>e.tasks.map(t=>t.comment).filter(Boolean).join(" / "),me=w(()=>{const e=new Map,t=[];for(const s of G.value){const o=s.taskDefKey||s.taskName||"";if(!o)continue;const i=s.tasks.some(m=>!m.finishTime)?"process":D(s).type,h=e.get(o);if(h!==void 0){const m=t[h];m.occurrence=(m.occurrence||1)+1,m.parentExecutionId=s.parentExecutionId,m.status=i;continue}e.set(o,t.length),t.push({taskName:s.taskName,taskDefKey:s.taskDefKey,parentExecutionId:s.parentExecutionId,status:i,occurrence:1})}for(const s of _.value?.futureTasks||[]){const o=s.taskDefKey||s.taskName||"";if(!o)continue;const i=e.get(o);if(i!==void 0){t[i].status="wait";continue}e.set(o,t.length),t.push({taskName:s.taskName,taskDefKey:s.taskDefKey,status:"wait"})}return t.push({taskName:"结束",taskDefKey:Ce,status:U.value?"success":"wait"}),t}),ve=e=>{const t=F().getUserInfo.userCode;return!t||!e?!1:!!(e.assigneeId===t||e.candidate&&e.candidate.split(",").map(o=>o.trim()).filter(Boolean).includes(t))},ze=w(()=>ve(v.value)?!0:(_.value?.activeTasks||[]).some(e=>ve(e))),we=w(()=>u.readonly||!!v.value?.finishTime||!!v.value?.procEndTime||R.value&&!(_.value?.activeTasks||[]).length||!ze.value),Z=S(!1),ye=S(null),M=S(null);ot(()=>{const t=ye.value?.closest(".el-drawer, .el-dialog")?.querySelector(".dialog-hooks-header")??null;if(!t){M.value=null;return}const s=t.querySelector(".dialog-hooks-header-title"),o=document.createElement("span");o.style.display="contents",s?s.insertAdjacentElement("afterend",o):t.appendChild(o),M.value=o}),nt(()=>{const e=M.value;M.value=null,e?.remove()});const{snapshot:_e,dataSourceMeta:P,refresh:He}=wt(()=>String(u.taskInfo?.businessId||v.value?.businessId||""),{wfTaskId:()=>u.taskId,taskDefKey:()=>String(u.taskInfo?.taskDefKey||v.value?.taskDefKey||"")}),Qe=w(()=>we.value&&!!u.taskId&&(u.withdrawEnabled===!0||u.taskInfo?.withdrawEnabled===!0)),qe=async()=>{const e=u.taskInfo||v.value;if(!e?.taskId)return;const t={taskId:e.taskId,taskDefKey:e.taskDefKey,taskName:e.taskName,taskTitle:e.taskTitle,procInsId:e.procInsId,procDefId:e.procDefId,procDefKey:e.procDefKey,businessId:e.businessId};Z.value=!0;try{await j.processWithdrawalVerification(t);let s="";try{const o=await j.processWithdrawalPreview(t);s=String(o?.targetTaskName||"")}catch(o){console.warn("撤回预览失败",o)}await pt.confirm(`确认撤回「${e.taskTitle||e.taskName||"该申请单"}」?`+(s?`撤回后流程将回到「${s}」,需要重新提交。`:"撤回后需要重新提交。"),"撤回确认",{type:"warning",confirmButtonText:"确认撤回",cancelButtonText:"取消"}),await j.processWithdrawal(t),ft.success("撤回成功"),V("success",e),V("cancel")}catch(s){if(s==="cancel"||s==="close")return;be.messageError(s)}finally{Z.value=!1}},Ge=w(()=>W.value?.taskOption),Ye=w(()=>{const e=Ge.value;return{...e||{},cancelFunction:(...t)=>{e?.cancelFunction?.(...t),V("cancel")},workflowComplete:async(...t)=>{await e?.workflowComplete?.(...t)}}}),he=e=>`${e.taskDefKey||e.taskName}-${e.parentExecutionId||""}`,ge=async(e,t=!1)=>{const s=u.taskInfo&&u.taskInfo.procInsId==null&&u.taskInfo.processInstanceId!=null?{...u.taskInfo,procInsId:u.taskInfo.processInstanceId}:u.taskInfo;if(!(!u.taskId&&!s?.procInsId))try{L.value=!0,R.value=!1,v.value=e?{...v.value,...e}:t&&u.taskId?await j.getTaskInst(u.taskId):s||await j.getTaskInst(u.taskId),v.value?.procInsId&&(_.value=await j.getProcessTaskList(v.value.procInsId)),R.value=!0,await He(),await Se(),await ut(),await W.value?.resetQuery?.()}catch(o){be.messageError(o)}finally{L.value=!1}},Je=async e=>{V("success",e),await ge(e,!0)};return xe({resetQuery:async()=>{await ge()}}),(e,t)=>{const s=T("el-icons"),o=T("el-title"),i=T("el-empty"),h=T("el-tag-display"),m=T("el-flex"),g=T("el-timeline-item"),y=T("el-timeline"),A=T("el-button"),Xe=T("operation-auth"),Ze=at("loading");return n(),r("div",{ref_key:"shellEl",ref:ye,class:"workflow-todo-shell"},[l(`
2
2
  内容区撑满剩余空间统一使用 dialog-content-fill(flex/height 由核心工具类提供),
3
3
  滚动仅保留在本内容区,底部操作栏固定不随内容滚动。
4
- `),Ze((n(),r("div",ft,[l(`
4
+ `),l(`
5
+ 快照标记:Teleport 进「本抽屉」的标题栏(标题文字右侧),不修改 createDialogHooks;
6
+ headerEl 由壳子在挂载时从自身所在抽屉里解析,多弹窗并存也不会串。
7
+ `),M.value?(n(),b(rt,{key:0,to:M.value},[C(P)?(n(),r("span",gt,d(C(P).label),1)):l("v-if",!0)],8,["to"])):l("v-if",!0),lt((n(),r("div",It,[l(" 兜底:没有标题栏(非自定义 header 的弹窗)时,在内容区顶部显示 "),!M.value&&C(P)?(n(),r("div",Tt,d(C(P).label),1)):l("v-if",!0),l(`
8
+ 数据来源标记(通用层统一判定,业务内容组件无需实现):
9
+ 命中快照时展示「快照 · 时间」;没有快照(展示业务当前数据)时不展示,避免噪音,
10
+ 放在内容区首行右对齐,紧贴标题栏,不随内容滚动位置变化而离开视线。
11
+ `),l(`
5
12
  当前等待:参考 flowpilot 设计的时长梯度状态条。
6
13
  颜色与浅色底纹按 SysFlowTimeout 字典命中区间(正常 / 预警 / 超时)渲染,
7
14
  流程已结束(含终止)时不展示。
8
- `),d.value?(n(),r("div",{key:0,class:M(["wf-wait",d.value.level?`is-${d.value.level}`:""]),style:ye({"--wf-wait-color":d.value.color,"--wf-wait-weak":d.value.weakColor})},[c("span",mt,[l(" 进行中:时钟 "),d.value.icon==="clock"?(n(),r("svg",kt,[...t[3]||(t[3]=[c("circle",{cx:"12",cy:"12",r:"9"},null,-1),c("path",{d:"M12 8v4l3 3"},null,-1)])])):d.value.icon==="check"?(n(),r(m,{key:1},[l(" 已办结:对勾 "),t[4]||(t[4]=c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.4","stroke-linecap":"round","stroke-linejoin":"round"},[c("path",{d:"M20 6L9 17l-5-5"})],-1))],2112)):d.value.icon==="back"?(n(),r(m,{key:2},[l(" 驳回:回退箭头 "),t[5]||(t[5]=c("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[c("path",{d:"M10 9V5l-7 7 7 7v-4.1c5 0 8.5 1.6 11 5.1-1-5-4-10-11-11z"})],-1))],2112)):(n(),r(m,{key:3},[l(" 已终止:叉 "),t[6]||(t[6]=c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.6","stroke-linecap":"round","stroke-linejoin":"round"},[c("path",{d:"M18 6L6 18"}),c("path",{d:"M6 6l12 12"})],-1))],2112))]),c("div",vt,[c("div",wt,p(d.value.title),1),c("div",yt,p(d.value.sub),1),l(" 结束态:把该次审批的意见一并带出来,避免去审批记录里翻 "),d.value.opinion?(n(),r("div",_t," 审核意见:"+p(d.value.opinion),1)):l("v-if",!0),l(" 该次审批的附件:与审批记录里的附件同样支持点击预览 "),d.value.filesTaskId&&x(d.value.filesTaskId).length?(n(),r("div",ht,[(n(!0),r(m,null,D(x(d.value.filesTaskId),a=>(n(),r("span",{key:a.id,class:"wf-wait__file",onClick:u=>J(R)(a.id)},[E(s,{"model-value":z(a.name)},null,8,["model-value"]),b(p(a.name),1)],8,gt))),128))])):l("v-if",!0)]),d.value.ctText?(n(),r("div",{key:0,class:M(["wf-wait__ct",`is-${d.value.ctKind}`])},[c("b",null,p(d.value.ctText),1),d.value.ctLabel?(n(),r("span",It,p(d.value.ctLabel),1)):l("v-if",!0)],2)):l("v-if",!0)],6)):l("v-if",!0),E(o,{level:"1",title:"流程进度",style:{"border-bottom":"var(--border)"}}),c("div",null,[fe.value.length?(n(),r("div",Tt,[c("div",bt,[(n(!0),r(m,null,D(fe.value,(a,u)=>(n(),r("div",{key:ve(a),class:M(["wf-progress-step",{done:a.status==="success",current:a.status==="process",rejected:a.status==="warning",stopped:a.status==="error"||a.status==="danger"}])},[c("div",Ct,[c("div",xt,[l(" 同意/提交:对勾 "),a.status==="success"?(n(),r("svg",Nt,[...t[7]||(t[7]=[c("path",{d:"M20 6L9 17l-5-5"},null,-1)])])):a.status==="warning"?(n(),r(m,{key:1},[l(" 驳回:回退箭头 "),t[8]||(t[8]=c("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[c("path",{d:"M10 9V5l-7 7 7 7v-4.1c5 0 8.5 1.6 11 5.1-1-5-4-10-11-11z"})],-1))],2112)):a.status==="danger"||a.status==="error"?(n(),r(m,{key:2},[l(" 终止:叉 "),t[9]||(t[9]=c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"},[c("path",{d:"M18 6L6 18"}),c("path",{d:"M6 6l12 12"})],-1))],2112)):a.status==="info"?(n(),r(m,{key:3},[l(" 撤回:撤销箭头 "),t[10]||(t[10]=c("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[c("path",{d:"M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"})],-1))],2112)):(n(),r("span",Dt,p(u+1),1))])]),c("div",Et,[c("span",Bt,[c("span",Lt,p(a.taskName||"未命名节点"),1),a.occurrence&&a.occurrence>1?(n(),r("sup",St,p(a.occurrence),1)):l("v-if",!0)])])],2))),128))])])):(n(),B(i,{key:0,description:"暂无流程进度","image-size":48}))]),l(`
15
+ `),p.value?(n(),r("div",{key:1,class:O(["wf-wait",p.value.level?`is-${p.value.level}`:""]),style:Ie({"--wf-wait-color":p.value.color,"--wf-wait-weak":p.value.weakColor})},[c("span",bt,[l(" 进行中:时钟 "),p.value.icon==="clock"?(n(),r("svg",Ct,[...t[3]||(t[3]=[c("circle",{cx:"12",cy:"12",r:"9"},null,-1),c("path",{d:"M12 8v4l3 3"},null,-1)])])):p.value.icon==="check"?(n(),r(k,{key:1},[l(" 已办结:对勾 "),t[4]||(t[4]=c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.4","stroke-linecap":"round","stroke-linejoin":"round"},[c("path",{d:"M20 6L9 17l-5-5"})],-1))],2112)):p.value.icon==="back"?(n(),r(k,{key:2},[l(" 驳回:回退箭头 "),t[5]||(t[5]=c("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[c("path",{d:"M10 9V5l-7 7 7 7v-4.1c5 0 8.5 1.6 11 5.1-1-5-4-10-11-11z"})],-1))],2112)):(n(),r(k,{key:3},[l(" 已终止:叉 "),t[6]||(t[6]=c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.6","stroke-linecap":"round","stroke-linejoin":"round"},[c("path",{d:"M18 6L6 18"}),c("path",{d:"M6 6l12 12"})],-1))],2112))]),c("div",xt,[c("div",Et,d(p.value.title),1),c("div",Nt,d(p.value.sub),1),l(" 结束态:把该次审批的意见一并带出来,避免去审批记录里翻 "),p.value.opinion?(n(),r("div",Dt," 审核意见:"+d(p.value.opinion),1)):l("v-if",!0),l(" 该次审批的附件:与审批记录里的附件同样支持点击预览 "),p.value.filesTaskId&&N(p.value.filesTaskId).length?(n(),r("div",St,[(n(!0),r(k,null,B(N(p.value.filesTaskId),a=>(n(),r("span",{key:a.id,class:"wf-wait__file",onClick:f=>C(Q)(a.id)},[K(s,{"model-value":q(a.name)},null,8,["model-value"]),x(d(a.name),1)],8,Bt))),128))])):l("v-if",!0)]),p.value.ctText?(n(),r("div",{key:0,class:O(["wf-wait__ct",`is-${p.value.ctKind}`])},[c("b",null,d(p.value.ctText),1),p.value.ctLabel?(n(),r("span",Kt,d(p.value.ctLabel),1)):l("v-if",!0)],2)):l("v-if",!0)],6)):l("v-if",!0),K(o,{level:"1",title:"流程进度",style:{"border-bottom":"var(--border)"}}),c("div",null,[me.value.length?(n(),r("div",Lt,[c("div",Mt,[(n(!0),r(k,null,B(me.value,(a,f)=>(n(),r("div",{key:he(a),class:O(["wf-progress-step",{done:a.status==="success",current:a.status==="process",rejected:a.status==="warning",stopped:a.status==="error"||a.status==="danger"}])},[c("div",$t,[c("div",At,[l(" 同意/提交:对勾 "),a.status==="success"?(n(),r("svg",Ot,[...t[7]||(t[7]=[c("path",{d:"M20 6L9 17l-5-5"},null,-1)])])):a.status==="warning"?(n(),r(k,{key:1},[l(" 驳回:回退箭头 "),t[8]||(t[8]=c("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[c("path",{d:"M10 9V5l-7 7 7 7v-4.1c5 0 8.5 1.6 11 5.1-1-5-4-10-11-11z"})],-1))],2112)):a.status==="danger"||a.status==="error"?(n(),r(k,{key:2},[l(" 终止:叉 "),t[9]||(t[9]=c("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"},[c("path",{d:"M18 6L6 18"}),c("path",{d:"M6 6l12 12"})],-1))],2112)):a.status==="info"?(n(),r(k,{key:3},[l(" 撤回:撤销箭头 "),t[10]||(t[10]=c("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[c("path",{d:"M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"})],-1))],2112)):(n(),r("span",jt,d(f+1),1))])]),c("div",Ft,[c("span",Vt,[c("span",Ut,d(a.taskName||"未命名节点"),1),a.occurrence&&a.occurrence>1?(n(),r("sup",Pt,d(a.occurrence),1)):l("v-if",!0)])])],2))),128))])])):(n(),b(i,{key:0,description:"暂无流程进度","image-size":48}))]),l(`
9
16
  业务审核内容:完全由业务内容组件/插槽决定(含它自己的标题、分区、网格),
10
17
  通用抽屉不再注入任何标题,业务页面给什么就展示什么。
11
- `),et(e.$slots,"content",{task:w.value,process:_.value},()=>[C.contentComponent?(n(),B(tt(C.contentComponent),st({key:0,ref_key:"contentRef",ref:j},C.contentProps,{loading:L.value,"onUpdate:loading":t[0]||(t[0]=a=>L.value=a)}),null,16,["loading"])):l("v-if",!0)],!0),E(o,{level:"1",title:"审批记录",style:{"border-bottom":"var(--border)"}}),c("div",null,[H.value.length?(n(),B(y,{key:1,class:"workflow-todo-shell__timeline"},{default:S(()=>[(n(!0),r(m,null,D(Ke.value,a=>(n(),B(g,{key:le(a),type:N(a).type,hollow:N(a).hollow,class:M({"is-active":N(a).type==="primary"}),style:ye({"--el-timeline-node-color":Ve(N(a).type)})},{default:S(()=>[E(k,{align:"center",justify:"space-between",class:M(["workflow-todo-shell__record-title",`is-${N(a).type}`])},{default:S(()=>[c("span",null,[b(p(a.taskName||"未命名节点")+" ",1),(a.occurrence||0)>1?(n(),r("span",Kt,p(a.occurrence),1)):l("v-if",!0),ie(a)?(n(),r("span",$t,p(ie(a)),1)):l("v-if",!0),l(" 我办理过的节点:标注「我的操作」,颜色跟随该节点的审批结论 "),ce(a)?(n(),r("span",{key:2,class:M(["workflow-todo-shell__record-mine",`is-${ce(a)}`])}," 我的操作 ",2)):l("v-if",!0)]),E(h,{type:N(a).type,size:"small"},{default:S(()=>[b(p(N(a).label),1)]),_:2},1032,["type"])]),_:2},1032,["class"]),Me(a)?(n(),r("div",Mt,[c("span",At,p(je(a)),1),Y(a)||a.tasks.some(u=>x(u.taskId).length)?(n(),r("div",Ot,[Y(a)?(n(),r(m,{key:0},[b(p(Y(a)),1)],64)):l("v-if",!0),(n(!0),r(m,null,D(a.tasks,u=>(n(),r(m,{key:u.taskId},[x(u.taskId).length?(n(),r("div",Ft,[(n(!0),r(m,null,D(x(u.taskId),I=>(n(),r("span",{key:I.id,class:"workflow-todo-shell__record-file",onClick:Ye=>J(R)(I.id)},[E(s,{"model-value":z(I.name)},null,8,["model-value"]),b(p(I.name),1)],8,Vt))),128))])):l("v-if",!0)],64))),128))])):l("v-if",!0)])):a.tasks.length?(n(!0),r(m,{key:1},D(a.tasks,u=>(n(),r("div",{key:u.taskId,class:"workflow-todo-shell__record-user"},[c("span",jt,p(pe(u)),1),u.comment||x(u.taskId).length?(n(),r("div",Ut,[u.comment?(n(),r(m,{key:0},[b(p(u.comment),1)],64)):l("v-if",!0),x(u.taskId).length?(n(),r("div",Pt,[(n(!0),r(m,null,D(x(u.taskId),I=>(n(),r("span",{key:I.id,class:"workflow-todo-shell__record-file",onClick:Ye=>J(R)(I.id)},[E(s,{"model-value":z(I.name)},null,8,["model-value"]),b(p(I.name),1)],8,Wt))),128))])):l("v-if",!0)])):l("v-if",!0)]))),128)):a.isEnd?l("v-if",!0):(n(),r(m,{key:2},[l(" 结束节点只有节点名与状态,不展示审签人 "),(n(!0),r(m,null,D(de(a),u=>(n(),r("div",{key:u,class:"workflow-todo-shell__record-user"},[c("span",Rt,p(u),1)]))),128))],64))]),_:2},1032,["type","hollow","class","style"]))),128))]),_:1})):(n(),B(i,{key:0,description:"暂无审批记录","image-size":48}))])])),[[Ge,L.value]]),C.showFooter?(n(),r("div",zt,[l(`
18
+ `),it(e.$slots,"content",{task:v.value,process:_.value,snapshot:C(_e)},()=>[E.contentComponent?(n(),b(ct(E.contentComponent),dt({key:0,ref_key:"contentRef",ref:W},E.contentProps,{snapshot:C(_e),loading:L.value,"onUpdate:loading":t[0]||(t[0]=a=>L.value=a)}),null,16,["snapshot","loading"])):l("v-if",!0)],!0),K(o,{level:"1",title:"审批记录",style:{"border-bottom":"var(--border)"}}),c("div",null,[G.value.length?(n(),b(y,{key:1,class:"workflow-todo-shell__timeline"},{default:$(()=>[(n(!0),r(k,null,B(Oe.value,a=>(n(),b(g,{key:ce(a),type:D(a).type,hollow:D(a).hollow,class:O({"is-active":D(a).type==="primary"}),style:Ie({"--el-timeline-node-color":We(D(a).type)})},{default:$(()=>[K(m,{align:"center",justify:"space-between",class:O(["workflow-todo-shell__record-title",`is-${D(a).type}`])},{default:$(()=>[c("span",null,[x(d(a.taskName||"未命名节点")+" ",1),(a.occurrence||0)>1?(n(),r("span",Wt,d(a.occurrence),1)):l("v-if",!0),de(a)?(n(),r("span",Rt,d(de(a)),1)):l("v-if",!0),l(" 我办理过的节点:标注「我的操作」,颜色跟随该节点的审批结论 "),ue(a)?(n(),r("span",{key:2,class:O(["workflow-todo-shell__record-mine",`is-${ue(a)}`])}," 我的操作 ",2)):l("v-if",!0)]),K(h,{type:D(a).type,size:"small"},{default:$(()=>[x(d(D(a).label),1)]),_:2},1032,["type"])]),_:2},1032,["class"]),Fe(a)?(n(),r("div",zt,[c("span",Ht,d(Re(a)),1),X(a)||a.tasks.some(f=>N(f.taskId).length)?(n(),r("div",Qt,[X(a)?(n(),r(k,{key:0},[x(d(X(a)),1)],64)):l("v-if",!0),(n(!0),r(k,null,B(a.tasks,f=>(n(),r(k,{key:f.taskId},[N(f.taskId).length?(n(),r("div",qt,[(n(!0),r(k,null,B(N(f.taskId),I=>(n(),r("span",{key:I.id,class:"workflow-todo-shell__record-file",onClick:et=>C(Q)(I.id)},[K(s,{"model-value":q(I.name)},null,8,["model-value"]),x(d(I.name),1)],8,Gt))),128))])):l("v-if",!0)],64))),128))])):l("v-if",!0)])):a.tasks.length?(n(!0),r(k,{key:1},B(a.tasks,f=>(n(),r("div",{key:f.taskId,class:"workflow-todo-shell__record-user"},[c("span",Yt,d(ke(f)),1),f.comment||N(f.taskId).length?(n(),r("div",Jt,[f.comment?(n(),r(k,{key:0},[x(d(f.comment),1)],64)):l("v-if",!0),N(f.taskId).length?(n(),r("div",Xt,[(n(!0),r(k,null,B(N(f.taskId),I=>(n(),r("span",{key:I.id,class:"workflow-todo-shell__record-file",onClick:et=>C(Q)(I.id)},[K(s,{"model-value":q(I.name)},null,8,["model-value"]),x(d(I.name),1)],8,Zt))),128))])):l("v-if",!0)])):l("v-if",!0)]))),128)):a.isEnd?l("v-if",!0):(n(),r(k,{key:2},[l(" 结束节点只有节点名与状态,不展示审签人 "),(n(!0),r(k,null,B(pe(a),f=>(n(),r("div",{key:f,class:"workflow-todo-shell__record-user"},[c("span",es,d(f),1)]))),128))],64))]),_:2},1032,["type","hollow","class","style"]))),128))]),_:1})):(n(),b(i,{key:0,description:"暂无审批记录","image-size":48}))])])),[[Ze,L.value]]),E.showFooter?(n(),r("div",ts,[l(`
12
19
  已办节点的只读查看:节点开了撤回(后端按节点下发 withdrawEnabled)时,
13
20
  在「取消」旁边给出撤回入口——校验、预览、二次确认、执行都在组件内完成,
14
21
  成功后通知调用方刷新列表并关闭查看。
15
- `),Pe.value?(n(),B(Qe,{key:0,"oper-code":"system:workflow:processWithdrawal"},{default:S(()=>[E(K,{type:"warning",loading:q.value,onClick:We},{default:S(()=>[...t[11]||(t[11]=[b("撤回",-1)])]),_:1},8,["loading"])]),_:1})):l("v-if",!0),ke.value?(n(),B(K,{key:1,onClick:t[1]||(t[1]=a=>F("cancel"))},{default:S(()=>[...t[12]||(t[12]=[b("取消",-1)])]),_:1})):(n(),B(dt,{key:2,"task-id":C.taskId,params:ze.value,"render-dialog":C.renderDialog,"show-process-btn":!1,"but-loading":L.value,"onUpdate:butLoading":t[2]||(t[2]=a=>L.value=a),onSuccess:He},null,8,["task-id","params","render-dialog","but-loading"]))])):l("v-if",!0)])}}}),to=ut(Ht,[["__scopeId","data-v-f5170305"]]);export{to as default};
22
+ `),Qe.value?(n(),b(Xe,{key:0,"oper-code":"system:workflow:processWithdrawal"},{default:$(()=>[K(A,{type:"warning",loading:Z.value,onClick:qe},{default:$(()=>[...t[11]||(t[11]=[x("撤回",-1)])]),_:1},8,["loading"])]),_:1})):l("v-if",!0),we.value?(n(),b(A,{key:1,onClick:t[1]||(t[1]=a=>V("cancel"))},{default:$(()=>[...t[12]||(t[12]=[x("取消",-1)])]),_:1})):(n(),b(_t,{key:2,"task-id":E.taskId,params:Ye.value,"render-dialog":E.renderDialog,"show-process-btn":!1,"but-loading":L.value,"onUpdate:butLoading":t[2]||(t[2]=a=>L.value=a),onSuccess:Je},null,8,["task-id","params","render-dialog","but-loading"]))])):l("v-if",!0)],512)}}}),ko=ht(ss,[["__scopeId","data-v-23cc8ab2"]]);export{ko as default};
@@ -221,6 +221,8 @@ import{computed as P,ref as x,unref as w,createApp as so,nextTick as no,h as d}f
221
221
  }
222
222
  .dialog-hooks-header-close {
223
223
  margin-left: auto;
224
+ }
225
+ .dialog-hooks-header-close {
224
226
  border: none;
225
227
  background: #f1f3f9;
226
228
  width: 28px;
@@ -0,0 +1,33 @@
1
+ import { type Ref } from 'vue';
2
+ /**
3
+ * 审核当时快照(业务展示用):
4
+ *
5
+ * <p>通用层只负责“取哪一版数据”:先取引擎任务局部变量 {@code bizSnapshot}(业务提交时随任务存的当时快照),
6
+ * 取不到再按 {@code bizId + wfTaskId} 查通用业务快照表兜底;两处都没有就返回 null,
7
+ * 由业务页面决定怎么展示(此时页面通常直接展示业务当前数据)。
8
+ *
9
+ * <p>展示(字段、布局、字典翻译)完全由业务页面负责——本 hook 不渲染任何内容。
10
+ */
11
+ export interface UseWorkflowSnapshotOptions {
12
+ /** 工作流任务ID(支持传 getter,便于调用方在数据加载后取到):命中该节点保存的那一版快照 */
13
+ wfTaskId?: string | (() => string | undefined);
14
+ /** 节点标识:任务ID取不到时按节点匹配兜底 */
15
+ taskDefKey?: string | (() => string | undefined);
16
+ /** 是否历史查看(只读):保留给后续按来源做差异化展示用;当前标记只在命中快照时展示 */
17
+ readonly?: () => boolean;
18
+ }
19
+ export interface WorkflowSnapshotSource {
20
+ type: 'info' | 'warning';
21
+ label: string;
22
+ /** 说明文字(可选):当前不展示,保留字段供后续按需使用 */
23
+ hint?: string;
24
+ }
25
+ /** 快照内容可能是对象(引擎任务局部变量)或 JSON 文本(业务接口返回),统一解析为对象 */
26
+ export declare const parseWorkflowSnapshot: (value: any) => Record<string, any> | null;
27
+ export default function useWorkflowSnapshot(bizId: string | Ref<string> | (() => string), options?: UseWorkflowSnapshotOptions): {
28
+ snapshot: Ref<Record<string, any> | null, Record<string, any> | null>;
29
+ isSnapshot: Ref<boolean, boolean>;
30
+ dataSourceMeta: Ref<WorkflowSnapshotSource | null, WorkflowSnapshotSource | null>;
31
+ loading: Ref<boolean, boolean>;
32
+ refresh: () => Promise<void>;
33
+ };
@@ -0,0 +1 @@
1
+ import{ref as i}from"vue";import m from"../api/workflow/workflowInstApi.js";import"../utils/request.js";import"../utils/AxiosConfig.js";import"axios";import"../utils/uuid.js";import"uuid";import"../utils/encrypt.js";import"jsencrypt";import"../utils/behaviorTrack.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../utils/behaviorContext.js";import"../utils/dateTime.js";import"element-plus";import"../utils/frontendBus.js";import"../utils/globalLoading.js";import"../utils/workflowTaskContext.js";import"../config/GlobalLoadingConfig.js";const y=t=>{if(!t)return null;if(typeof t=="string")try{return JSON.parse(t)}catch{return null}return typeof t=="object"?t:null};function $(t,p={}){const o=i(null),a=i(!1),f=i(null),l=i(!1),h=()=>typeof t=="function"?t():typeof t=="string"?t:t.value,c=r=>String((typeof r=="function"?r():r)||"");return{snapshot:o,isSnapshot:a,dataSourceMeta:f,loading:l,refresh:async()=>{const r=String(h()||""),e=c(p.wfTaskId),k=c(p.taskDefKey);l.value=!0;try{if(o.value=null,a.value=!1,r||e)try{const n=await m.snapshot(r,{wfTaskId:e,taskDefKey:k}),s=y(n?.snapshot);s&&(o.value=s)}catch(n){console.warn("查询审核当时快照失败",n)}if(!o.value&&e)try{const n=await m.getTaskInst(e),s=y(n?.taskLocalVars?.bizSnapshot);s&&(o.value=s)}catch{}a.value=!!o.value;const u=String(o.value?.snapshotTime||"");f.value=a.value?{type:"info",label:u?`快照 · ${u}`:"快照"}:null}finally{l.value=!1}}}}export{$ as default,y as parseWorkflowSnapshot};
@@ -10,3 +10,11 @@ import { type IWfTaskVo } from '../interface/workflow/IWfTaskVo';
10
10
  * 刷新浏览器后由目标子应用 App 恢复;组件弹窗写 workflow_todo_pending 兜底。
11
11
  */
12
12
  export declare function showTodoDialog(taskVo: Ref<IWfTaskVo>, params?: any, comptShow?: Ref<boolean>): Promise<void>;
13
+ /**
14
+ * 流程查看(只读):与「待办处理 / 审批查看」共用同一套抽屉入口。
15
+ *
16
+ * 节点配了业务办理界面(nodeTag 形如 `YZFC:/src/views/xx.vue`)时,由目标子应用按 nodeTag
17
+ * 只读渲染同一个业务内容组件(同时带该节点“当时那一版”快照);菜单型节点打开对应菜单页面。
18
+ * 业务页面只需把流程信息({@link IWfTaskVo})交给它,不必自己拼参数、也不必关心跨应用事件。
19
+ */
20
+ export declare function showProcessView(taskVo: Ref<IWfTaskVo> | IWfTaskVo): Promise<void>;
@@ -1 +1 @@
1
- import{nextTick as y}from"vue";import{frontendBus as d}from"../utils/frontendBus.js";import{ElMessage as f}from"element-plus";import{userInfoStore as g}from"../stores/userInfoStore.js";import I from"./usePermissionHooks.js";import T from"./useOpenNewMenu.js";import{handleTree as x}from"../utils/tree.js";import U from"../utils/request.js";import O from"../utils/commonUtils.js";import{setWorkflowTaskContext as c}from"../utils/workflowTaskContext.js";import"pinia";import"../utils/userSessionStorage.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"vue-router";import"../stores/permissionStore.js";import"../utils/behaviorTrack.js";import"axios";import"../utils/uuid.js";import"uuid";import"../utils/behaviorContext.js";import"../utils/encrypt.js";import"jsencrypt";import"../utils/dateTime.js";import"../utils/operationAuth.js";import"../utils/routeMetaParams.js";import"../utils/FrameworkUtils.js";import"xlsx-js-style";import"../utils/AxiosConfig.js";import"../utils/globalLoading.js";import"../config/GlobalLoadingConfig.js";import"./useDeleteConfirmHooks.js";import"./useBehaviorAction.js";async function ie(o,t,s){const{openMenu:v}=I();if(!o.value||!o.value.nodeTag){f.error("未设置待办处理界面!");return}const n=o.value.nodeTag,m=n.indexOf(":")>-1?n.split(":")[1]||"":n,l=n.indexOf(":")>-1?n.split(":")[0]:"",w=l==="system"||n.indexOf(":")===-1,r=Object.entries(o.value).map(([e,p])=>({code:e,value:p}));if(t?.value&&Array.isArray(t.value)&&t.value.length>0){for(const e of t.value)if(e&&typeof e=="object")for(const p in e)r.push({code:p,value:e[p]||""})}if(c(r),n.indexOf("/")>-1){w?t&&s?(s.value=!1,t.value.params=null,await y(async()=>{s.value=!0,t.value.params=t})):f.error("未设置待办处理界面!"):(sessionStorage.setItem("workflow_todo_pending",JSON.stringify({time:Date.now(),params:r})),d.emit(l.toUpperCase()+"WorkflowTodoHandleBus",r));return}let i=g().getUserInfo.menuList.find(e=>e.code===m);if(i||(await S(),i=g().getUserInfo.menuList.find(e=>e.code===m)),!i){f.error("未找到该菜单");return}if(w){sessionStorage.setItem("workflow_todo_"+m,JSON.stringify(r)),c(r,[i.id,i.code].filter(Boolean).map(String)),await v(i,r),d.emit(m+"_message",r);return}const a=String(o.value.businessId||o.value.applyId||o.value.procInsId||o.value.taskId||""),u=m+O.jsonToUrlQuery({businessId:a});sessionStorage.setItem("workflow_todo_"+u,JSON.stringify(r)),r.push({code:"menuCode",value:u}),c(r,[i.id,i.code,u,i.code+a].filter(Boolean).map(String));try{const{handleView:e}=T(m,void 0);await e(a,o.value.taskName,{businessId:a})}catch(e){console.error("[workflowTodo] 打开待办处理页面失败",e),f.error("打开待办处理页面失败:"+(e?.message||e));return}setTimeout(()=>{d.emit(l.toUpperCase()+"WorkflowTodoHandleBus",r)},1e3)}async function S(){try{const o=g(),t=await U.get("/api/system/login/getUserPermission/web"),s=o.getUserInfo;o.setUserInfo({...t,menuTreeList:x(t.menuList,"id","parentId"),userBaseInfo:s.userBaseInfo,passwordExpired:s.passwordExpired,isComplete:s.isComplete})}catch(o){console.warn("刷新用户权限失败",o)}}export{ie as showTodoDialog};
1
+ import{isRef as I,ref as y,nextTick as T}from"vue";import{frontendBus as c}from"../utils/frontendBus.js";import{ElMessage as a}from"element-plus";import{userInfoStore as g}from"../stores/userInfoStore.js";import O from"./usePermissionHooks.js";import x from"./useOpenNewMenu.js";import{handleTree as U}from"../utils/tree.js";import b from"../utils/request.js";import h from"../utils/commonUtils.js";import{setWorkflowTaskContext as w}from"../utils/workflowTaskContext.js";import"pinia";import"../utils/userSessionStorage.js";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"vue-router";import"../stores/permissionStore.js";import"../utils/behaviorTrack.js";import"axios";import"../utils/uuid.js";import"uuid";import"../utils/behaviorContext.js";import"../utils/encrypt.js";import"jsencrypt";import"../utils/dateTime.js";import"../utils/operationAuth.js";import"../utils/routeMetaParams.js";import"../utils/FrameworkUtils.js";import"xlsx-js-style";import"../utils/AxiosConfig.js";import"../utils/globalLoading.js";import"../config/GlobalLoadingConfig.js";import"./useDeleteConfirmHooks.js";import"./useBehaviorAction.js";async function S(e,r,i){const{openMenu:f}=O();if(!e.value||!e.value.nodeTag){a.error("未设置待办处理界面!");return}const n=e.value.nodeTag,m=n.indexOf(":")>-1?n.split(":")[1]||"":n,l=n.indexOf(":")>-1?n.split(":")[0]:"",v=l==="system"||n.indexOf(":")===-1,t=Object.entries(e.value).map(([o,p])=>({code:o,value:p}));if(r?.value&&Array.isArray(r.value)&&r.value.length>0){for(const o of r.value)if(o&&typeof o=="object")for(const p in o)t.push({code:p,value:o[p]||""})}if(w(t),n.indexOf("/")>-1){v?r&&i?(i.value=!1,r.value.params=null,await T(async()=>{i.value=!0,r.value.params=r})):a.error("未设置待办处理界面!"):(sessionStorage.setItem("workflow_todo_pending",JSON.stringify({time:Date.now(),params:t})),c.emit(l.toUpperCase()+"WorkflowTodoHandleBus",t));return}let s=g().getUserInfo.menuList.find(o=>o.code===m);if(s||(await B(),s=g().getUserInfo.menuList.find(o=>o.code===m)),!s){a.error("未找到该菜单");return}if(v){sessionStorage.setItem("workflow_todo_"+m,JSON.stringify(t)),w(t,[s.id,s.code].filter(Boolean).map(String)),await f(s,t),c.emit(m+"_message",t);return}const u=String(e.value.businessId||e.value.applyId||e.value.procInsId||e.value.taskId||""),d=m+h.jsonToUrlQuery({businessId:u});sessionStorage.setItem("workflow_todo_"+d,JSON.stringify(t)),t.push({code:"menuCode",value:d}),w(t,[s.id,s.code,d,s.code+u].filter(Boolean).map(String));try{const{handleView:o}=x(m,void 0);await o(u,e.value.taskName,{businessId:u})}catch(o){console.error("[workflowTodo] 打开待办处理页面失败",o),a.error("打开待办处理页面失败:"+(o?.message||o));return}setTimeout(()=>{c.emit(l.toUpperCase()+"WorkflowTodoHandleBus",t)},1e3)}async function me(e){const r=(I(e)?e.value:e)||{},i=Object.fromEntries(Object.entries(r).filter(([,f])=>f!=null));if(!i.nodeTag){a.error("未设置流程查看界面!");return}await S(y(i),y([{code:"source",value:"view"}]))}async function B(){try{const e=g(),r=await b.get("/api/system/login/getUserPermission/web"),i=e.getUserInfo;e.setUserInfo({...r,menuTreeList:U(r.menuList,"id","parentId"),userBaseInfo:i.userBaseInfo,passwordExpired:i.passwordExpired,isComplete:i.isComplete})}catch(e){console.warn("刷新用户权限失败",e)}}export{me as showProcessView,S as showTodoDialog};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["src/components/AsideCardList/AsideCardList.vue.js","src/utils/FrameworkUtils.js","chunks/_plugin-vue_export-helper-DlAUqK2U.js","src/components/ElCardList.vue.js","src/components/ElCardSection/ElCardSection.vue.js","src/components/ElCellLink/ElCellLink.vue.js","chunks/ElCellLink.vue_vue_type_script_setup_true_lang-DXGj9pCT.js","src/components/ElCircleBadge/ElCircleBadge.vue.js","src/components/ElContentPanel/ElContentPanel.vue.js","src/components/ElDescForm/ElDescForm.vue.js","chunks/ElDescForm.vue_vue_type_style_index_0_lang-DRKuI9Xa.js","src/utils/dateTime.js","src/components/ElDialogBody/ElDialogBody.vue.js","src/components/ElFlex/ElFlex.vue.js","chunks/ElFlex.vue_vue_type_script_setup_true_lang-DYk3SQcE.js","src/interface/enum/FlexEnum.js","src/components/icon/ElIcons.vue.js","src/components/ElGrid/ElGrid.vue.js","src/components/ElGrid/ElGridColumnSetting.vue.js","chunks/DragHandleIcon.vue_vue_type_script_setup_true_lang-DnMWn5jY.js","src/utils/columnSettingStorage.js","src/utils/userSessionStorage.js","chunks/ElTotalTools.vue_vue_type_script_setup_true_lang-BqRnIFkw.js","chunks/ElPagePagination.vue_vue_type_style_index_0_lang-CGjSyYgn.js","src/components/ElIndicatorInput/ElIndicatorInput.vue.js","src/components/RichTextEditor/RichTextEditor.vue.js","chunks/preload-helper-BlTxHScW.js","src/utils/uuid.js","src/components/RichTextEditor/richTextHtmlUtils.js","src/components/RichTextEditor/installUmoEditorApp.js","src/components/RichTextEditor/richTextImageUpload.js","src/api/DocumentApi.js","src/utils/request.js","src/utils/AxiosConfig.js","src/utils/encrypt.js","src/utils/behaviorTrack.js","src/utils/behaviorContext.js","src/utils/frontendBus.js","src/utils/globalLoading.js","src/utils/workflowTaskContext.js","src/config/GlobalLoadingConfig.js","src/utils/buildUploadHeaders.js","src/components/ElIndicatorInput/interface.js","src/components/ElNumericInput/ElNumericInput.vue.js","chunks/ElNumericInput.vue_vue_type_script_setup_true_lang-C6KlCE6f.js","src/components/ElSplitPanel/ElSplitPanel.vue.js","src/components/ElTabsPanel/ElTabsPanel.vue.js","src/components/ElTotalTools.vue.js","src/components/OperationAuth/operationAuth.vue.js","chunks/operationAuth.vue_vue_type_script_lang-BgqMGXbQ.js","src/hooks/useBehaviorAction.js","src/hooks/useOperationAuth.js","src/stores/permissionStore.js","src/utils/operationAuth.js","src/stores/userInfoStore.js","src/components/Pagination/ElPagePagination.vue.js","src/components/Scrollbars/ElScrollbars.vue.js","chunks/ElScrollbars.vue_vue_type_script_setup_true_lang-0Vhrxdyr.js","src/components/Search/ElIconSearch.vue.js","src/components/Search/ElSearch.vue.js","src/components/Search/ElSearchInput.vue.js","src/components/SelectInDicators/SelectInDicators.vue.js","src/hooks/useDictHooks.js","src/api/SysDictCacheApi.js","src/stores/dictStore.js","src/components/SelectInDicators/api/DataIndicatorsApi.js","src/config/vxeSelectColumn.js","src/components/Tag/ElTagDisplay.vue.js","chunks/ElTagDisplay.vue_vue_type_script_setup_true_lang-DQXuYsW_.js","src/components/Title/ElTitle.vue.js","src/components/VxeExportDialog/VxeExportDialog.vue.js","src/components/baseEcharts/index.vue.js","src/hooks/useEcharts.js","src/plugins/echartsConfig.js","src/components/bpmntree/components/UserSelector/UserTag.vue.js","src/components/business/comp.selectUser.vue.js","chunks/comp.selectUser.vue_vue_type_script_setup_true_lang-CctW6HRv.js","src/api/EmployeeInfoApi.js","src/components/business/comp.userForm.vue.js","src/api/DeptInfoApi.js","src/hooks/useResetRefHooks.js","src/components/business/userSelect.vue.js","chunks/userSelect.vue_vue_type_script_setup_true_lang-DlEso2ua.js","src/components/business/userSelectContent.vue.js","src/api/BasicApi.js","src/api/SysUserApi.js","src/components/dict/DictDisplay.vue.js","chunks/DictDisplay.vue_vue_type_script_setup_true_lang-DiFlFWi1.js","src/components/drag/DragHandleIcon.vue.js","src/components/icon/ElIconBtn.vue.js","src/components/kFrame/KFrame.vue.js","src/components/kFrame/IframeOptions.js","src/components/tooltip/ElCopyTooltip.vue.js","chunks/ElCopyTooltip.vue_vue_type_script_setup_true_lang-MdgIHwF2.js","src/components/upload/AttachmentPreview.vue.js","src/hooks/usePreviewFullscreen.js","src/components/upload/OfficePreview.vue.js","src/utils/fileDownload.js","src/utils/officePreviewUtil.js","src/components/upload/OfficePreviewHeaderBar.vue.js","src/components/upload/CustomElUpload.vue.js","src/hooks/useFileView.js","src/hooks/useDeleteConfirmHooks.js","src/utils/uploadAccept.js","src/components/upload/FileView.vue.js","src/components/upload/FileViewComponents.vue.js","src/components/vxeGrid/index.vue.js","src/config/VxeTableConfig.js","src/utils/patchWujiePopperCoordinates.js","src/components/vxeReplace/index.js","src/components/tooltip/index.js","src/components/tooltip/src/tooltip.js","chunks/VxeButton.vue_vue_type_script_setup_true_lang-s_mYx9TA.js","chunks/VxeInput.vue_vue_type_script_setup_true_lang-v9AqGSoL.js","chunks/VxeSelect.vue_vue_type_script_setup_true_lang-DcVggycZ.js","chunks/VxeCheckbox.vue_vue_type_script_setup_true_lang-Ccr5YD1x.js","chunks/VxeModal.vue_vue_type_script_setup_true_lang-B4gh7jFR.js","chunks/VxeLoading.vue_vue_type_script_setup_true_lang-B253kD5t.js","chunks/VxePager.vue_vue_type_script_setup_true_lang-DpOa3T96.js","chunks/VxeForm.vue_vue_type_script_setup_true_lang-DXNZ8Qzg.js","src/components/vxeReplace/VxeButton.vue.js","src/components/vxeReplace/VxeCheckbox.vue.js","src/components/vxeReplace/VxeForm.vue.js","src/components/vxeReplace/VxeInput.vue.js","src/components/vxeReplace/VxeLoading.vue.js","src/components/vxeReplace/VxeModal.vue.js","src/components/vxeReplace/VxePager.vue.js","src/components/vxeReplace/VxeSelect.vue.js","src/components/workflow/TaskOperation.vue.js","src/api/workflow/workflowInstApi.js","src/components/workflow/components/SelectAssigneeDialog.vue.js","chunks/AddOrMinusMultiDialog.vue_vue_type_script_setup_true_lang-BWVDdb4B.js","src/components/workflow/components/CheckDialog.vue.js","src/hooks/workflowCompleteRunner.js","src/hooks/workflowTodo.js","src/hooks/usePermissionHooks.js","src/utils/routeMetaParams.js","src/hooks/useOpenNewMenu.js","src/utils/commonUtils.js","src/utils/tree.js","src/components/workflow/WorkflowTodoShell.vue.js","src/utils/flowTimeout.js","src/components/workflow/components/AddOrMinusMultiDialog.vue.js"])))=>i.map(i=>d[i]);
2
- import{_ as o}from"../../chunks/preload-helper-BlTxHScW.js";const _=Object.assign({"/src/components/AsideCardList/AsideCardList.vue":()=>o(()=>import("../components/AsideCardList/AsideCardList.vue.js"),__vite__mapDeps([0,1,2])),"/src/components/ElCardList.vue":()=>o(()=>import("../components/ElCardList.vue.js"),__vite__mapDeps([3,2])),"/src/components/ElCardSection/ElCardSection.vue":()=>o(()=>import("../components/ElCardSection/ElCardSection.vue.js"),__vite__mapDeps([4,2])),"/src/components/ElCellLink/ElCellLink.vue":()=>o(()=>import("../components/ElCellLink/ElCellLink.vue.js"),__vite__mapDeps([5,6])),"/src/components/ElCircleBadge/ElCircleBadge.vue":()=>o(()=>import("../components/ElCircleBadge/ElCircleBadge.vue.js"),__vite__mapDeps([7,2])),"/src/components/ElContentPanel/ElContentPanel.vue":()=>o(()=>import("../components/ElContentPanel/ElContentPanel.vue.js"),__vite__mapDeps([8,2])),"/src/components/ElDescForm/ElDescForm.vue":()=>o(()=>import("../components/ElDescForm/ElDescForm.vue.js"),__vite__mapDeps([9,10,11])),"/src/components/ElDialogBody/ElDialogBody.vue":()=>o(()=>import("../components/ElDialogBody/ElDialogBody.vue.js"),__vite__mapDeps([12,2])),"/src/components/ElFlex/ElFlex.vue":()=>o(()=>import("../components/ElFlex/ElFlex.vue.js"),__vite__mapDeps([13,14,15,16,2])),"/src/components/ElGrid/ElGrid.vue":()=>o(()=>import("../components/ElGrid/ElGrid.vue.js"),__vite__mapDeps([17,18,19,20,21,2,22,1,23])),"/src/components/ElGrid/ElGridColumnSetting.vue":()=>o(()=>import("../components/ElGrid/ElGridColumnSetting.vue.js"),__vite__mapDeps([18,19,20,21,2])),"/src/components/ElIndicatorInput/ElIndicatorInput.vue":()=>o(()=>import("../components/ElIndicatorInput/ElIndicatorInput.vue.js"),__vite__mapDeps([24,25,26,27,28,29,30,31,32,33,34,35,36,11,37,38,39,40,41,2,42])),"/src/components/ElNumericInput/ElNumericInput.vue":()=>o(()=>import("../components/ElNumericInput/ElNumericInput.vue.js"),__vite__mapDeps([43,44])),"/src/components/ElSplitPanel/ElSplitPanel.vue":()=>o(()=>import("../components/ElSplitPanel/ElSplitPanel.vue.js"),__vite__mapDeps([45,2])),"/src/components/ElTabsPanel/ElTabsPanel.vue":()=>o(()=>import("../components/ElTabsPanel/ElTabsPanel.vue.js"),__vite__mapDeps([46,2])),"/src/components/ElTotalTools.vue":()=>o(()=>import("../components/ElTotalTools.vue.js"),__vite__mapDeps([47,22,1])),"/src/components/OperationAuth/operationAuth.vue":()=>o(()=>import("../components/OperationAuth/operationAuth.vue.js"),__vite__mapDeps([48,49,50,35,27,36,34,11,51,52,37,53,54,21])),"/src/components/Pagination/ElPagePagination.vue":()=>o(()=>import("../components/Pagination/ElPagePagination.vue.js"),__vite__mapDeps([55,23,1])),"/src/components/RichTextEditor/RichTextEditor.vue":()=>o(()=>import("../components/RichTextEditor/RichTextEditor.vue.js"),__vite__mapDeps([25,26,27,28,29,30,31,32,33,34,35,36,11,37,38,39,40,41,2])),"/src/components/Scrollbars/ElScrollbars.vue":()=>o(()=>import("../components/Scrollbars/ElScrollbars.vue.js"),__vite__mapDeps([56,57])),"/src/components/Search/ElIconSearch.vue":()=>o(()=>import("../components/Search/ElIconSearch.vue.js"),__vite__mapDeps([58,2])),"/src/components/Search/ElSearch.vue":()=>o(()=>import("../components/Search/ElSearch.vue.js"),__vite__mapDeps([59,14,15,16,2,37])),"/src/components/Search/ElSearchInput.vue":()=>o(()=>import("../components/Search/ElSearchInput.vue.js"),__vite__mapDeps([60,16,2])),"/src/components/SelectInDicators/SelectInDicators.vue":()=>o(()=>import("../components/SelectInDicators/SelectInDicators.vue.js"),__vite__mapDeps([61,62,63,32,33,27,34,35,36,11,37,38,39,40,64,54,21,1,65,66,2])),"/src/components/Tag/ElTagDisplay.vue":()=>o(()=>import("../components/Tag/ElTagDisplay.vue.js"),__vite__mapDeps([67,68])),"/src/components/Title/ElTitle.vue":()=>o(()=>import("../components/Title/ElTitle.vue.js"),__vite__mapDeps([69,16,2,14,15])),"/src/components/VxeExportDialog/VxeExportDialog.vue":()=>o(()=>import("../components/VxeExportDialog/VxeExportDialog.vue.js"),__vite__mapDeps([70,1,68,2])),"/src/components/baseEcharts/index.vue":()=>o(()=>import("../components/baseEcharts/index.vue.js"),__vite__mapDeps([71,72,73])),"/src/components/bpmntree/components/UserSelector/UserTag.vue":()=>o(()=>import("../components/bpmntree/components/UserSelector/UserTag.vue.js"),__vite__mapDeps([74,2])),"/src/components/business/comp.selectUser.vue":()=>o(()=>import("../components/business/comp.selectUser.vue.js"),__vite__mapDeps([75,76,77,32,33,27,34,35,36,11,37,38,39,40,78,79,80,1,66,68,2])),"/src/components/business/comp.userForm.vue":()=>o(()=>import("../components/business/comp.userForm.vue.js"),__vite__mapDeps([78,79,32,33,27,34,35,36,11,37,38,39,40,77,80,1,66,68,2])),"/src/components/business/userSelect.vue":()=>o(()=>import("../components/business/userSelect.vue.js"),__vite__mapDeps([81,82,83,84,32,33,27,34,35,36,11,37,38,39,40,85,1,2])),"/src/components/business/userSelectContent.vue":()=>o(()=>import("../components/business/userSelectContent.vue.js"),__vite__mapDeps([83,84,32,33,27,34,35,36,11,37,38,39,40,85,1,2])),"/src/components/dict/DictDisplay.vue":()=>o(()=>import("../components/dict/DictDisplay.vue.js"),__vite__mapDeps([86,87,62,63,32,33,27,34,35,36,11,37,38,39,40,64,54,21,1,68])),"/src/components/drag/DragHandleIcon.vue":()=>o(()=>import("../components/drag/DragHandleIcon.vue.js"),__vite__mapDeps([88,19])),"/src/components/icon/ElIconBtn.vue":()=>o(()=>import("../components/icon/ElIconBtn.vue.js"),__vite__mapDeps([89,2])),"/src/components/icon/ElIcons.vue":()=>o(()=>import("../components/icon/ElIcons.vue.js"),__vite__mapDeps([16,2])),"/src/components/kFrame/KFrame.vue":()=>o(()=>import("../components/kFrame/KFrame.vue.js"),__vite__mapDeps([90,91,27,2])),"/src/components/tooltip/ElCopyTooltip.vue":()=>o(()=>import("../components/tooltip/ElCopyTooltip.vue.js"),__vite__mapDeps([92,93])),"/src/components/upload/AttachmentPreview.vue":()=>o(()=>import("../components/upload/AttachmentPreview.vue.js"),__vite__mapDeps([94,1,95,96,31,32,33,27,34,35,36,11,37,38,39,40,97,98,99,2])),"/src/components/upload/CustomElUpload.vue":()=>o(()=>import("../components/upload/CustomElUpload.vue.js"),__vite__mapDeps([100,101,37,31,32,33,27,34,35,36,11,38,39,40,1,102,50,54,21,103,41,2])),"/src/components/upload/FileView.vue":()=>o(()=>import("../components/upload/FileView.vue.js"),__vite__mapDeps([104,95,96,31,32,33,27,34,35,36,11,37,38,39,40,1,97,98,99,2])),"/src/components/upload/FileViewComponents.vue":()=>o(()=>import("../components/upload/FileViewComponents.vue.js"),__vite__mapDeps([105,31,32,33,27,34,35,36,11,37,38,39,40,1,97,104,95,96,98,99,2,103])),"/src/components/upload/OfficePreview.vue":()=>o(()=>import("../components/upload/OfficePreview.vue.js"),__vite__mapDeps([96,31,32,33,27,34,35,36,11,37,38,39,40,1,97,98,99,2])),"/src/components/upload/OfficePreviewHeaderBar.vue":()=>o(()=>import("../components/upload/OfficePreviewHeaderBar.vue.js"),__vite__mapDeps([99,98,2])),"/src/components/vxeGrid/index.vue":()=>o(()=>import("../components/vxeGrid/index.vue.js"),__vite__mapDeps([106,107,108,109,110,111,112,113,114,115,116,117,118,119])),"/src/components/vxeReplace/VxeButton.vue":()=>o(()=>import("../components/vxeReplace/VxeButton.vue.js"),__vite__mapDeps([120,112])),"/src/components/vxeReplace/VxeCheckbox.vue":()=>o(()=>import("../components/vxeReplace/VxeCheckbox.vue.js"),__vite__mapDeps([121,115])),"/src/components/vxeReplace/VxeForm.vue":()=>o(()=>import("../components/vxeReplace/VxeForm.vue.js"),__vite__mapDeps([122,119])),"/src/components/vxeReplace/VxeInput.vue":()=>o(()=>import("../components/vxeReplace/VxeInput.vue.js"),__vite__mapDeps([123,113])),"/src/components/vxeReplace/VxeLoading.vue":()=>o(()=>import("../components/vxeReplace/VxeLoading.vue.js"),__vite__mapDeps([124,117])),"/src/components/vxeReplace/VxeModal.vue":()=>o(()=>import("../components/vxeReplace/VxeModal.vue.js"),__vite__mapDeps([125,116])),"/src/components/vxeReplace/VxePager.vue":()=>o(()=>import("../components/vxeReplace/VxePager.vue.js"),__vite__mapDeps([126,118])),"/src/components/vxeReplace/VxeSelect.vue":()=>o(()=>import("../components/vxeReplace/VxeSelect.vue.js"),__vite__mapDeps([127,114])),"/src/components/workflow/TaskOperation.vue":()=>o(()=>import("../components/workflow/TaskOperation.vue.js"),__vite__mapDeps([128,129,32,33,27,34,35,36,11,37,38,39,40,130,1,2,131,54,21,78,79,77,80,66,68,85,132,74,100,101,31,102,50,103,41,133,134,135,52,53,136,137,138,139])),"/src/components/workflow/WorkflowTodoShell.vue":()=>o(()=>import("../components/workflow/WorkflowTodoShell.vue.js"),__vite__mapDeps([140,129,32,33,27,34,35,36,11,37,38,39,40,31,101,62,63,64,54,21,1,141,128,130,2,131,78,79,77,80,66,68,85,132,74,100,102,50,103,41,133,134,135,52,53,136,137,138,139])),"/src/components/workflow/components/AddOrMinusMultiDialog.vue":()=>o(()=>import("../components/workflow/components/AddOrMinusMultiDialog.vue.js"),__vite__mapDeps([142,131,129,32,33,27,34,35,36,11,37,38,39,40,54,21,78,79,77,80,1,66,68,2,85])),"/src/components/workflow/components/CheckDialog.vue":()=>o(()=>import("../components/workflow/components/CheckDialog.vue.js"),__vite__mapDeps([132,74,2,129,32,33,27,34,35,36,11,37,38,39,40,78,79,77,80,1,66,68,100,101,31,102,50,54,21,103,41,85])),"/src/components/workflow/components/SelectAssigneeDialog.vue":()=>o(()=>import("../components/workflow/components/SelectAssigneeDialog.vue.js"),__vite__mapDeps([130,129,32,33,27,34,35,36,11,37,38,39,40,1,2]))});export{_ as default};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["src/components/AsideCardList/AsideCardList.vue.js","src/utils/FrameworkUtils.js","chunks/_plugin-vue_export-helper-DlAUqK2U.js","src/components/ElCardList.vue.js","src/components/ElCardSection/ElCardSection.vue.js","src/components/ElCellLink/ElCellLink.vue.js","chunks/ElCellLink.vue_vue_type_script_setup_true_lang-DXGj9pCT.js","src/components/ElCircleBadge/ElCircleBadge.vue.js","src/components/ElContentPanel/ElContentPanel.vue.js","src/components/ElDescForm/ElDescForm.vue.js","chunks/ElDescForm.vue_vue_type_style_index_0_lang-DRKuI9Xa.js","src/utils/dateTime.js","src/components/ElDialogBody/ElDialogBody.vue.js","src/components/ElFlex/ElFlex.vue.js","chunks/ElFlex.vue_vue_type_script_setup_true_lang-DYk3SQcE.js","src/interface/enum/FlexEnum.js","src/components/icon/ElIcons.vue.js","src/components/ElGrid/ElGrid.vue.js","src/components/ElGrid/ElGridColumnSetting.vue.js","chunks/DragHandleIcon.vue_vue_type_script_setup_true_lang-DnMWn5jY.js","src/utils/columnSettingStorage.js","src/utils/userSessionStorage.js","chunks/ElTotalTools.vue_vue_type_script_setup_true_lang-BqRnIFkw.js","chunks/ElPagePagination.vue_vue_type_style_index_0_lang-CGjSyYgn.js","src/components/ElIndicatorInput/ElIndicatorInput.vue.js","src/components/RichTextEditor/RichTextEditor.vue.js","chunks/preload-helper-BlTxHScW.js","src/utils/uuid.js","src/components/RichTextEditor/richTextHtmlUtils.js","src/components/RichTextEditor/installUmoEditorApp.js","src/components/RichTextEditor/richTextImageUpload.js","src/api/DocumentApi.js","src/utils/request.js","src/utils/AxiosConfig.js","src/utils/encrypt.js","src/utils/behaviorTrack.js","src/utils/behaviorContext.js","src/utils/frontendBus.js","src/utils/globalLoading.js","src/utils/workflowTaskContext.js","src/config/GlobalLoadingConfig.js","src/utils/buildUploadHeaders.js","src/components/ElIndicatorInput/interface.js","src/components/ElNumericInput/ElNumericInput.vue.js","chunks/ElNumericInput.vue_vue_type_script_setup_true_lang-C6KlCE6f.js","src/components/ElSplitPanel/ElSplitPanel.vue.js","src/components/ElTabsPanel/ElTabsPanel.vue.js","src/components/ElTotalTools.vue.js","src/components/OperationAuth/operationAuth.vue.js","chunks/operationAuth.vue_vue_type_script_lang-BgqMGXbQ.js","src/hooks/useBehaviorAction.js","src/hooks/useOperationAuth.js","src/stores/permissionStore.js","src/utils/operationAuth.js","src/stores/userInfoStore.js","src/components/Pagination/ElPagePagination.vue.js","src/components/Scrollbars/ElScrollbars.vue.js","chunks/ElScrollbars.vue_vue_type_script_setup_true_lang-0Vhrxdyr.js","src/components/Search/ElIconSearch.vue.js","src/components/Search/ElSearch.vue.js","src/components/Search/ElSearchInput.vue.js","src/components/SelectInDicators/SelectInDicators.vue.js","src/hooks/useDictHooks.js","src/api/SysDictCacheApi.js","src/stores/dictStore.js","src/components/SelectInDicators/api/DataIndicatorsApi.js","src/config/vxeSelectColumn.js","src/components/Tag/ElTagDisplay.vue.js","chunks/ElTagDisplay.vue_vue_type_script_setup_true_lang-DQXuYsW_.js","src/components/Title/ElTitle.vue.js","src/components/VxeExportDialog/VxeExportDialog.vue.js","src/components/baseEcharts/index.vue.js","src/hooks/useEcharts.js","src/plugins/echartsConfig.js","src/components/bpmntree/components/UserSelector/UserTag.vue.js","src/components/business/comp.selectUser.vue.js","chunks/comp.selectUser.vue_vue_type_script_setup_true_lang-CctW6HRv.js","src/api/EmployeeInfoApi.js","src/components/business/comp.userForm.vue.js","src/api/DeptInfoApi.js","src/hooks/useResetRefHooks.js","src/components/business/userSelect.vue.js","chunks/userSelect.vue_vue_type_script_setup_true_lang-DlEso2ua.js","src/components/business/userSelectContent.vue.js","src/api/BasicApi.js","src/api/SysUserApi.js","src/components/dict/DictDisplay.vue.js","chunks/DictDisplay.vue_vue_type_script_setup_true_lang-DiFlFWi1.js","src/components/drag/DragHandleIcon.vue.js","src/components/icon/ElIconBtn.vue.js","src/components/kFrame/KFrame.vue.js","src/components/kFrame/IframeOptions.js","src/components/tooltip/ElCopyTooltip.vue.js","chunks/ElCopyTooltip.vue_vue_type_script_setup_true_lang-MdgIHwF2.js","src/components/upload/AttachmentPreview.vue.js","src/hooks/usePreviewFullscreen.js","src/components/upload/OfficePreview.vue.js","src/utils/fileDownload.js","src/utils/officePreviewUtil.js","src/components/upload/OfficePreviewHeaderBar.vue.js","src/components/upload/CustomElUpload.vue.js","src/hooks/useFileView.js","src/hooks/useDeleteConfirmHooks.js","src/utils/uploadAccept.js","src/components/upload/FileView.vue.js","src/components/upload/FileViewComponents.vue.js","src/components/vxeGrid/index.vue.js","src/config/VxeTableConfig.js","src/utils/patchWujiePopperCoordinates.js","src/components/vxeReplace/index.js","src/components/tooltip/index.js","src/components/tooltip/src/tooltip.js","chunks/VxeButton.vue_vue_type_script_setup_true_lang-s_mYx9TA.js","chunks/VxeInput.vue_vue_type_script_setup_true_lang-v9AqGSoL.js","chunks/VxeSelect.vue_vue_type_script_setup_true_lang-DcVggycZ.js","chunks/VxeCheckbox.vue_vue_type_script_setup_true_lang-Ccr5YD1x.js","chunks/VxeModal.vue_vue_type_script_setup_true_lang-B4gh7jFR.js","chunks/VxeLoading.vue_vue_type_script_setup_true_lang-B253kD5t.js","chunks/VxePager.vue_vue_type_script_setup_true_lang-DpOa3T96.js","chunks/VxeForm.vue_vue_type_script_setup_true_lang-DXNZ8Qzg.js","src/components/vxeReplace/VxeButton.vue.js","src/components/vxeReplace/VxeCheckbox.vue.js","src/components/vxeReplace/VxeForm.vue.js","src/components/vxeReplace/VxeInput.vue.js","src/components/vxeReplace/VxeLoading.vue.js","src/components/vxeReplace/VxeModal.vue.js","src/components/vxeReplace/VxePager.vue.js","src/components/vxeReplace/VxeSelect.vue.js","src/components/workflow/TaskOperation.vue.js","src/api/workflow/workflowInstApi.js","src/components/workflow/components/SelectAssigneeDialog.vue.js","chunks/AddOrMinusMultiDialog.vue_vue_type_script_setup_true_lang-BWVDdb4B.js","src/components/workflow/components/CheckDialog.vue.js","src/hooks/workflowCompleteRunner.js","src/hooks/workflowTodo.js","src/hooks/usePermissionHooks.js","src/utils/routeMetaParams.js","src/hooks/useOpenNewMenu.js","src/utils/commonUtils.js","src/utils/tree.js","src/components/workflow/WorkflowTodoShell.vue.js","src/hooks/useWorkflowSnapshot.js","src/utils/flowTimeout.js","src/components/workflow/components/AddOrMinusMultiDialog.vue.js"])))=>i.map(i=>d[i]);
2
+ import{_ as o}from"../../chunks/preload-helper-BlTxHScW.js";const _=Object.assign({"/src/components/AsideCardList/AsideCardList.vue":()=>o(()=>import("../components/AsideCardList/AsideCardList.vue.js"),__vite__mapDeps([0,1,2])),"/src/components/ElCardList.vue":()=>o(()=>import("../components/ElCardList.vue.js"),__vite__mapDeps([3,2])),"/src/components/ElCardSection/ElCardSection.vue":()=>o(()=>import("../components/ElCardSection/ElCardSection.vue.js"),__vite__mapDeps([4,2])),"/src/components/ElCellLink/ElCellLink.vue":()=>o(()=>import("../components/ElCellLink/ElCellLink.vue.js"),__vite__mapDeps([5,6])),"/src/components/ElCircleBadge/ElCircleBadge.vue":()=>o(()=>import("../components/ElCircleBadge/ElCircleBadge.vue.js"),__vite__mapDeps([7,2])),"/src/components/ElContentPanel/ElContentPanel.vue":()=>o(()=>import("../components/ElContentPanel/ElContentPanel.vue.js"),__vite__mapDeps([8,2])),"/src/components/ElDescForm/ElDescForm.vue":()=>o(()=>import("../components/ElDescForm/ElDescForm.vue.js"),__vite__mapDeps([9,10,11])),"/src/components/ElDialogBody/ElDialogBody.vue":()=>o(()=>import("../components/ElDialogBody/ElDialogBody.vue.js"),__vite__mapDeps([12,2])),"/src/components/ElFlex/ElFlex.vue":()=>o(()=>import("../components/ElFlex/ElFlex.vue.js"),__vite__mapDeps([13,14,15,16,2])),"/src/components/ElGrid/ElGrid.vue":()=>o(()=>import("../components/ElGrid/ElGrid.vue.js"),__vite__mapDeps([17,18,19,20,21,2,22,1,23])),"/src/components/ElGrid/ElGridColumnSetting.vue":()=>o(()=>import("../components/ElGrid/ElGridColumnSetting.vue.js"),__vite__mapDeps([18,19,20,21,2])),"/src/components/ElIndicatorInput/ElIndicatorInput.vue":()=>o(()=>import("../components/ElIndicatorInput/ElIndicatorInput.vue.js"),__vite__mapDeps([24,25,26,27,28,29,30,31,32,33,34,35,36,11,37,38,39,40,41,2,42])),"/src/components/ElNumericInput/ElNumericInput.vue":()=>o(()=>import("../components/ElNumericInput/ElNumericInput.vue.js"),__vite__mapDeps([43,44])),"/src/components/ElSplitPanel/ElSplitPanel.vue":()=>o(()=>import("../components/ElSplitPanel/ElSplitPanel.vue.js"),__vite__mapDeps([45,2])),"/src/components/ElTabsPanel/ElTabsPanel.vue":()=>o(()=>import("../components/ElTabsPanel/ElTabsPanel.vue.js"),__vite__mapDeps([46,2])),"/src/components/ElTotalTools.vue":()=>o(()=>import("../components/ElTotalTools.vue.js"),__vite__mapDeps([47,22,1])),"/src/components/OperationAuth/operationAuth.vue":()=>o(()=>import("../components/OperationAuth/operationAuth.vue.js"),__vite__mapDeps([48,49,50,35,27,36,34,11,51,52,37,53,54,21])),"/src/components/Pagination/ElPagePagination.vue":()=>o(()=>import("../components/Pagination/ElPagePagination.vue.js"),__vite__mapDeps([55,23,1])),"/src/components/RichTextEditor/RichTextEditor.vue":()=>o(()=>import("../components/RichTextEditor/RichTextEditor.vue.js"),__vite__mapDeps([25,26,27,28,29,30,31,32,33,34,35,36,11,37,38,39,40,41,2])),"/src/components/Scrollbars/ElScrollbars.vue":()=>o(()=>import("../components/Scrollbars/ElScrollbars.vue.js"),__vite__mapDeps([56,57])),"/src/components/Search/ElIconSearch.vue":()=>o(()=>import("../components/Search/ElIconSearch.vue.js"),__vite__mapDeps([58,2])),"/src/components/Search/ElSearch.vue":()=>o(()=>import("../components/Search/ElSearch.vue.js"),__vite__mapDeps([59,14,15,16,2,37])),"/src/components/Search/ElSearchInput.vue":()=>o(()=>import("../components/Search/ElSearchInput.vue.js"),__vite__mapDeps([60,16,2])),"/src/components/SelectInDicators/SelectInDicators.vue":()=>o(()=>import("../components/SelectInDicators/SelectInDicators.vue.js"),__vite__mapDeps([61,62,63,32,33,27,34,35,36,11,37,38,39,40,64,54,21,1,65,66,2])),"/src/components/Tag/ElTagDisplay.vue":()=>o(()=>import("../components/Tag/ElTagDisplay.vue.js"),__vite__mapDeps([67,68])),"/src/components/Title/ElTitle.vue":()=>o(()=>import("../components/Title/ElTitle.vue.js"),__vite__mapDeps([69,16,2,14,15])),"/src/components/VxeExportDialog/VxeExportDialog.vue":()=>o(()=>import("../components/VxeExportDialog/VxeExportDialog.vue.js"),__vite__mapDeps([70,1,68,2])),"/src/components/baseEcharts/index.vue":()=>o(()=>import("../components/baseEcharts/index.vue.js"),__vite__mapDeps([71,72,73])),"/src/components/bpmntree/components/UserSelector/UserTag.vue":()=>o(()=>import("../components/bpmntree/components/UserSelector/UserTag.vue.js"),__vite__mapDeps([74,2])),"/src/components/business/comp.selectUser.vue":()=>o(()=>import("../components/business/comp.selectUser.vue.js"),__vite__mapDeps([75,76,77,32,33,27,34,35,36,11,37,38,39,40,78,79,80,1,66,68,2])),"/src/components/business/comp.userForm.vue":()=>o(()=>import("../components/business/comp.userForm.vue.js"),__vite__mapDeps([78,79,32,33,27,34,35,36,11,37,38,39,40,77,80,1,66,68,2])),"/src/components/business/userSelect.vue":()=>o(()=>import("../components/business/userSelect.vue.js"),__vite__mapDeps([81,82,83,84,32,33,27,34,35,36,11,37,38,39,40,85,1,2])),"/src/components/business/userSelectContent.vue":()=>o(()=>import("../components/business/userSelectContent.vue.js"),__vite__mapDeps([83,84,32,33,27,34,35,36,11,37,38,39,40,85,1,2])),"/src/components/dict/DictDisplay.vue":()=>o(()=>import("../components/dict/DictDisplay.vue.js"),__vite__mapDeps([86,87,62,63,32,33,27,34,35,36,11,37,38,39,40,64,54,21,1,68])),"/src/components/drag/DragHandleIcon.vue":()=>o(()=>import("../components/drag/DragHandleIcon.vue.js"),__vite__mapDeps([88,19])),"/src/components/icon/ElIconBtn.vue":()=>o(()=>import("../components/icon/ElIconBtn.vue.js"),__vite__mapDeps([89,2])),"/src/components/icon/ElIcons.vue":()=>o(()=>import("../components/icon/ElIcons.vue.js"),__vite__mapDeps([16,2])),"/src/components/kFrame/KFrame.vue":()=>o(()=>import("../components/kFrame/KFrame.vue.js"),__vite__mapDeps([90,91,27,2])),"/src/components/tooltip/ElCopyTooltip.vue":()=>o(()=>import("../components/tooltip/ElCopyTooltip.vue.js"),__vite__mapDeps([92,93])),"/src/components/upload/AttachmentPreview.vue":()=>o(()=>import("../components/upload/AttachmentPreview.vue.js"),__vite__mapDeps([94,1,95,96,31,32,33,27,34,35,36,11,37,38,39,40,97,98,99,2])),"/src/components/upload/CustomElUpload.vue":()=>o(()=>import("../components/upload/CustomElUpload.vue.js"),__vite__mapDeps([100,101,37,31,32,33,27,34,35,36,11,38,39,40,1,102,50,54,21,103,41,2])),"/src/components/upload/FileView.vue":()=>o(()=>import("../components/upload/FileView.vue.js"),__vite__mapDeps([104,95,96,31,32,33,27,34,35,36,11,37,38,39,40,1,97,98,99,2])),"/src/components/upload/FileViewComponents.vue":()=>o(()=>import("../components/upload/FileViewComponents.vue.js"),__vite__mapDeps([105,31,32,33,27,34,35,36,11,37,38,39,40,1,97,104,95,96,98,99,2,103])),"/src/components/upload/OfficePreview.vue":()=>o(()=>import("../components/upload/OfficePreview.vue.js"),__vite__mapDeps([96,31,32,33,27,34,35,36,11,37,38,39,40,1,97,98,99,2])),"/src/components/upload/OfficePreviewHeaderBar.vue":()=>o(()=>import("../components/upload/OfficePreviewHeaderBar.vue.js"),__vite__mapDeps([99,98,2])),"/src/components/vxeGrid/index.vue":()=>o(()=>import("../components/vxeGrid/index.vue.js"),__vite__mapDeps([106,107,108,109,110,111,112,113,114,115,116,117,118,119])),"/src/components/vxeReplace/VxeButton.vue":()=>o(()=>import("../components/vxeReplace/VxeButton.vue.js"),__vite__mapDeps([120,112])),"/src/components/vxeReplace/VxeCheckbox.vue":()=>o(()=>import("../components/vxeReplace/VxeCheckbox.vue.js"),__vite__mapDeps([121,115])),"/src/components/vxeReplace/VxeForm.vue":()=>o(()=>import("../components/vxeReplace/VxeForm.vue.js"),__vite__mapDeps([122,119])),"/src/components/vxeReplace/VxeInput.vue":()=>o(()=>import("../components/vxeReplace/VxeInput.vue.js"),__vite__mapDeps([123,113])),"/src/components/vxeReplace/VxeLoading.vue":()=>o(()=>import("../components/vxeReplace/VxeLoading.vue.js"),__vite__mapDeps([124,117])),"/src/components/vxeReplace/VxeModal.vue":()=>o(()=>import("../components/vxeReplace/VxeModal.vue.js"),__vite__mapDeps([125,116])),"/src/components/vxeReplace/VxePager.vue":()=>o(()=>import("../components/vxeReplace/VxePager.vue.js"),__vite__mapDeps([126,118])),"/src/components/vxeReplace/VxeSelect.vue":()=>o(()=>import("../components/vxeReplace/VxeSelect.vue.js"),__vite__mapDeps([127,114])),"/src/components/workflow/TaskOperation.vue":()=>o(()=>import("../components/workflow/TaskOperation.vue.js"),__vite__mapDeps([128,129,32,33,27,34,35,36,11,37,38,39,40,130,1,2,131,54,21,78,79,77,80,66,68,85,132,74,100,101,31,102,50,103,41,133,134,135,52,53,136,137,138,139])),"/src/components/workflow/WorkflowTodoShell.vue":()=>o(()=>import("../components/workflow/WorkflowTodoShell.vue.js"),__vite__mapDeps([140,129,32,33,27,34,35,36,11,37,38,39,40,31,101,62,63,64,54,21,1,141,142,128,130,2,131,78,79,77,80,66,68,85,132,74,100,102,50,103,41,133,134,135,52,53,136,137,138,139])),"/src/components/workflow/components/AddOrMinusMultiDialog.vue":()=>o(()=>import("../components/workflow/components/AddOrMinusMultiDialog.vue.js"),__vite__mapDeps([143,131,129,32,33,27,34,35,36,11,37,38,39,40,54,21,78,79,77,80,1,66,68,2,85])),"/src/components/workflow/components/CheckDialog.vue":()=>o(()=>import("../components/workflow/components/CheckDialog.vue.js"),__vite__mapDeps([132,74,2,129,32,33,27,34,35,36,11,37,38,39,40,78,79,77,80,1,66,68,100,101,31,102,50,54,21,103,41,85])),"/src/components/workflow/components/SelectAssigneeDialog.vue":()=>o(()=>import("../components/workflow/components/SelectAssigneeDialog.vue.js"),__vite__mapDeps([130,129,32,33,27,34,35,36,11,37,38,39,40,1,2]))});export{_ as default};