adtec-hnyzfc-core-package 1.5.7 → 1.5.9

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 +1 @@
1
- import{defineComponent as Q,ref as g,useModel as X,computed as Y,onMounted as Z,watch as _,resolveComponent as F,openBlock as s,createElementBlock as $,createVNode as ee,withCtx as u,renderSlot as P,createBlock as m,createTextVNode as f,toDisplayString as v,createCommentVNode as d,unref as te,Fragment as ae,mergeModels as q}from"vue";import w from"../../api/workflow/workflowInstApi.js";import oe from"./components/SelectAssigneeDialog.vue.js";import{_ as re}from"../../../chunks/AddOrMinusMultiDialog.vue_vue_type_script_setup_true_lang-SYw6MXOl.js";import ne from"./components/CheckDialog.vue.js";import L from"../../utils/FrameworkUtils.js";import{userInfoStore as y}from"../../stores/userInfoStore.js";import{frontendBus as h}from"../../utils/frontendBus.js";import{showTodoDialog as ie}from"../../hooks/workflowTodo.js";import{_ as le}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 se=Q({__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:A,emit:E}){const N=y(),B=g(null),n=o,i=X(o,"butLoading"),T=E,e=g({taskId:"",comment:""}),b=n.renderDialog,k=(t,a,r,x,p,J)=>{if(!b){console.warn("[TaskOperation] 未注入 renderDialog,无法打开操作弹窗(请通过 props 传入 useDialogHooks 的 render)");return}b(t,a,r,x,p,J)},R=()=>{typeof n.onProcessDetail=="function"&&n.onProcessDetail(e.value)},I=Y(()=>e.value?.operations==="assignee"),D=g(""),U=g([{source:"edit"}]),K=async()=>{await ie(g(e.value),U)},c=async t=>{if(t&&(D.value=t),!e.value)return;let a=!1;if(t==="complete"&&n.params?.beforeCompleteFunction)try{const r=await n.params?.beforeCompleteFunction({taskId:e.value.taskId,userId:y().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")k(re,{taskId:e.value.taskId,dialogType:t,renderDialog:k,onSuccess:M},{title:t==="addMulti"?"加签":"减签",size:"400px"},"dialog");else if(t==="assignee")O(e.value.taskId);else{if(e.value.variables,t==="complete"&&e.value.firstSubmitNode&&n.params?.ignoreConfirm){await j();return}k(ne,{taskVo:e.value,dialogType:t,taskOperate:n?.params,commentReadonly:a,renderDialog:k,onOpenAssignee:O,onSuccess:M},{title:V(t),size:"480px",closeOnClickModal:!1},"dialog")}},V=t=>{switch(t){case"complete":return"流程审批";case"refuse":return"终止审批";case"back":return"驳回审批";case"transfer":return"转办审批";default:return"流程审批"}},j=async()=>{if(!(!e.value||!y().getUserInfo.userCode))try{i.value=!0;const t={taskId:e.value.taskId,userId:y().getUserInfo.userCode,comment:e.value.comment??"",procInsId:e.value.procInsId,procDefKey:e.value.procDefKey,variables:e.value.variables};if(n.params?.completeFunction){const a=await n.params?.completeFunction(t);a&&a?.taskId?e.value=a:e.value=await w.getTaskInst(e.value.taskId)}else e.value=await w.taskComplete(t)}catch(t){L.messageError(t)}finally{i.value=!1}},z=()=>{n.params?.workflowComplete(),T("success")},O=t=>{k(oe,{taskId:t,onSuccess:z},{title:"指定执行人",size:"450px"},"dialog")},M=t=>{t&&(e.value=t),n.params?.workflowComplete(e.value,D.value),h.emit("todoRefresh"),h.emit("homePageRefresh"),T("success")},S=(t,a)=>t?t.classList?.contains(a)?t:S(t.parentElement,a):null,W=()=>{const t=S(B.value,"todo-dialog-class");return t?console.log("找到满足条件的元素:",t):console.log("未找到满足条件的元素"),t};Z(()=>{W(),C()});const l=g(!1),H=async()=>{l.value=!0},G=()=>{l.value=!1},C=async()=>{if(n.taskInfo)e.value=n.taskInfo,e.value.finishTime&&console.log("该待办已完成!");else if(n.taskId)try{H(),e.value=await w.getTaskInst(n.taskId),e.value.finishTime&&console.log("该待办已完成!")}catch(t){L.messageError(t)}finally{G()}};return A({reload:()=>{C()}}),_(()=>n.taskId,C),(t,a)=>{const r=F("el-button"),x=F("el-flex");return s(),$("div",{ref_key:"taskFlexRef",ref:B,class:"task-operation"},[ee(x,{align:"center",justify:"flex-end"},{default:u(()=>[P(t.$slots,"left",{},void 0,!0),o.params?.cancelBtnText!==""?(s(),m(r,{key:0,loading:i.value||l.value,onClick:o.params?.cancelFunction},{default:u(()=>[f(v(o.params?.cancelBtnText??"取消"),1)]),_:1},8,["loading","onClick"])):d("v-if",!0),o.showProcessBtn&&e.value?.procInsId?(s(),m(r,{key:1,type:"info",loading:i.value||l.value,onClick:R},{default:u(()=>[...a[7]||(a[7]=[f(" 流程信息 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!I.value&&e.value?.taskId&&o.showCurWorkBth&&!o.showOperationsBtn?(s(),m(r,{key:2,loading:i.value||l.value,type:"warning",disabled:e.value?.taskId&&(!e.value?.operations||te(N).getUserInfo.userCode!==e.value?.assigneeId),onClick:K},{default:u(()=>[f(v(e.value.taskName),1)]),_:1},8,["loading","disabled"])):d("v-if",!0),I.value?(s(),m(r,{key:3,type:"primary",loading:i.value||l.value,onClick:a[0]||(a[0]=p=>c("assignee"))},{default:u(()=>[...a[8]||(a[8]=[f("指定执行人 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!I.value&&e.value?.taskId&&e.value?.operations&&o.showOperationsBtn?(s(),$(ae,{key:4},[o.params?.saveBtnText?(s(),m(r,{key:0,loading:i.value||l.value,type:"primary",onClick:o.params?.saveFunction},{default:u(()=>[f(v(o.params?.saveBtnText),1)]),_:1},8,["loading","onClick"])):d("v-if",!0),e.value?.operations.indexOf("addMulti")>-1?(s(),m(r,{key:1,type:"warning",loading:i.value||l.value,onClick:a[1]||(a[1]=p=>c("addMulti"))},{default:u(()=>[...a[9]||(a[9]=[f("加签 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("minusMulti")>-1?(s(),m(r,{key:2,type:"danger",loading:i.value||l.value,onClick:a[2]||(a[2]=p=>c("minusMulti"))},{default:u(()=>[...a[10]||(a[10]=[f("减签 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("refuse")>-1&&o.params?.refuseBtnText!==""?(s(),m(r,{key:3,loading:i.value||l.value,type:"danger",onClick:a[3]||(a[3]=p=>c("refuse"))},{default:u(()=>[f(v(o.params?.refuseBtnText??"终止"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("transfer")>-1&&o.params?.transferBtnText!==""?(s(),m(r,{key:4,loading:i.value||l.value,type:"warning",onClick:a[4]||(a[4]=p=>c("transfer"))},{default:u(()=>[f(v(o.params?.transferBtnText??"转办"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("back")>-1&&o.params?.backBtnText!==""?(s(),m(r,{key:5,loading:i.value||l.value,type:"danger",onClick:a[5]||(a[5]=p=>c("back"))},{default:u(()=>[f(v(o.params?.backBtnText??"驳回"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("complete")>-1&&o.params?.completeBtnText!==""?(s(),m(r,{key:6,loading:i.value||l.value,type:"primary",onClick:a[6]||(a[6]=p=>c("complete"))},{default:u(()=>[f(v(o.params?.completeBtnText??"同意"),1)]),_:1},8,["loading"])):d("v-if",!0)],64)):d("v-if",!0),P(t.$slots,"right",{},void 0,!0)]),_:3})],512)}}}),mt=le(se,[["__scopeId","data-v-0894ba02"]]);export{mt as default};
1
+ import{defineComponent as Q,ref as g,useModel as X,computed as Y,onMounted as Z,watch as _,resolveComponent as F,openBlock as s,createElementBlock as $,createVNode as ee,withCtx as u,renderSlot as P,createBlock as m,createTextVNode as f,toDisplayString as v,createCommentVNode as d,unref as te,Fragment as ae,mergeModels as q}from"vue";import B from"../../api/workflow/workflowInstApi.js";import oe from"./components/SelectAssigneeDialog.vue.js";import{_ as re}from"../../../chunks/AddOrMinusMultiDialog.vue_vue_type_script_setup_true_lang-SYw6MXOl.js";import ne from"./components/CheckDialog.vue.js";import L from"../../utils/FrameworkUtils.js";import{userInfoStore as y}from"../../stores/userInfoStore.js";import{frontendBus as h}from"../../utils/frontendBus.js";import{showTodoDialog as ie}from"../../hooks/workflowTodo.js";import{_ as le}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 se=Q({__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:A,emit:E}){const N=y(),T=g(null),n=o,i=X(o,"butLoading"),b=E,e=g({taskId:"",comment:""}),D=n.renderDialog,k=(t,a,r,w,p,J)=>{if(!D){console.warn("[TaskOperation] 未注入 renderDialog,无法打开操作弹窗(请通过 props 传入 useDialogHooks 的 render)");return}D(t,a,r,w,p,J)},R=()=>{typeof n.onProcessDetail=="function"&&n.onProcessDetail(e.value)},I=Y(()=>e.value?.operations==="assignee"),O=g(""),U=g([{source:"edit"}]),K=async()=>{await ie(g(e.value),U)},c=async t=>{if(t&&(O.value=t),!e.value)return;let a=!1;if(t==="complete"&&n.params?.beforeCompleteFunction)try{const r=await n.params?.beforeCompleteFunction({taskId:e.value.taskId,userId:y().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")k(re,{taskId:e.value.taskId,dialogType:t,renderDialog:k,onSuccess: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 j();return}k(ne,{taskVo:e.value,dialogType:t,taskOperate:n?.params,commentReadonly:a,renderDialog:k,onOpenAssignee:M,onSuccess:C},{title:V(t),size:"480px",closeOnClickModal:!1},"dialog")}},V=t=>{switch(t){case"complete":return"流程审批";case"refuse":return"终止审批";case"back":return"驳回审批";case"transfer":return"转办审批";default:return"流程审批"}},j=async()=>{if(!(!e.value||!y().getUserInfo.userCode))try{i.value=!0;const t={taskId:e.value.taskId,userId:y().getUserInfo.userCode,comment:e.value.comment??"",procInsId:e.value.procInsId,procDefKey:e.value.procDefKey,variables:e.value.variables};if(n.params?.completeFunction){const a=await n.params?.completeFunction(t);a&&a?.taskId?e.value=a:e.value=await B.getTaskInst(e.value.taskId)}else e.value=await B.taskComplete(t);C(e.value)}catch(t){L.messageError(t)}finally{i.value=!1}},z=()=>{n.params?.workflowComplete(),b("success")},M=t=>{k(oe,{taskId:t,onSuccess:z},{title:"指定执行人",size:"450px"},"dialog")},C=t=>{t&&(e.value=t),n.params?.workflowComplete(e.value,O.value),h.emit("todoRefresh"),h.emit("homePageRefresh"),b("success")},S=(t,a)=>t?t.classList?.contains(a)?t:S(t.parentElement,a):null,W=()=>{const t=S(T.value,"todo-dialog-class");return t?console.log("找到满足条件的元素:",t):console.log("未找到满足条件的元素"),t};Z(()=>{W(),x()});const l=g(!1),H=async()=>{l.value=!0},G=()=>{l.value=!1},x=async()=>{if(n.taskInfo)e.value=n.taskInfo,e.value.finishTime&&console.log("该待办已完成!");else if(n.taskId)try{H(),e.value=await B.getTaskInst(n.taskId),e.value.finishTime&&console.log("该待办已完成!")}catch(t){L.messageError(t)}finally{G()}};return A({reload:()=>{x()}}),_(()=>n.taskId,x),(t,a)=>{const r=F("el-button"),w=F("el-flex");return s(),$("div",{ref_key:"taskFlexRef",ref:T,class:"task-operation"},[ee(w,{align:"center",justify:"flex-end"},{default:u(()=>[P(t.$slots,"left",{},void 0,!0),o.params?.cancelBtnText!==""?(s(),m(r,{key:0,loading:i.value||l.value,onClick:o.params?.cancelFunction},{default:u(()=>[f(v(o.params?.cancelBtnText??"取消"),1)]),_:1},8,["loading","onClick"])):d("v-if",!0),o.showProcessBtn&&e.value?.procInsId?(s(),m(r,{key:1,type:"info",loading:i.value||l.value,onClick:R},{default:u(()=>[...a[7]||(a[7]=[f(" 流程信息 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!I.value&&e.value?.taskId&&o.showCurWorkBth&&!o.showOperationsBtn?(s(),m(r,{key:2,loading:i.value||l.value,type:"warning",disabled:e.value?.taskId&&(!e.value?.operations||te(N).getUserInfo.userCode!==e.value?.assigneeId),onClick:K},{default:u(()=>[f(v(e.value.taskName),1)]),_:1},8,["loading","disabled"])):d("v-if",!0),I.value?(s(),m(r,{key:3,type:"primary",loading:i.value||l.value,onClick:a[0]||(a[0]=p=>c("assignee"))},{default:u(()=>[...a[8]||(a[8]=[f("指定执行人 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),!I.value&&e.value?.taskId&&e.value?.operations&&o.showOperationsBtn?(s(),$(ae,{key:4},[o.params?.saveBtnText?(s(),m(r,{key:0,loading:i.value||l.value,type:"primary",onClick:o.params?.saveFunction},{default:u(()=>[f(v(o.params?.saveBtnText),1)]),_:1},8,["loading","onClick"])):d("v-if",!0),e.value?.operations.indexOf("addMulti")>-1?(s(),m(r,{key:1,type:"warning",loading:i.value||l.value,onClick:a[1]||(a[1]=p=>c("addMulti"))},{default:u(()=>[...a[9]||(a[9]=[f("加签 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("minusMulti")>-1?(s(),m(r,{key:2,type:"danger",loading:i.value||l.value,onClick:a[2]||(a[2]=p=>c("minusMulti"))},{default:u(()=>[...a[10]||(a[10]=[f("减签 ",-1)])]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("refuse")>-1&&o.params?.refuseBtnText!==""?(s(),m(r,{key:3,loading:i.value||l.value,type:"danger",onClick:a[3]||(a[3]=p=>c("refuse"))},{default:u(()=>[f(v(o.params?.refuseBtnText??"终止"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("transfer")>-1&&o.params?.transferBtnText!==""?(s(),m(r,{key:4,loading:i.value||l.value,type:"warning",onClick:a[4]||(a[4]=p=>c("transfer"))},{default:u(()=>[f(v(o.params?.transferBtnText??"转办"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("back")>-1&&o.params?.backBtnText!==""?(s(),m(r,{key:5,loading:i.value||l.value,type:"danger",onClick:a[5]||(a[5]=p=>c("back"))},{default:u(()=>[f(v(o.params?.backBtnText??"驳回"),1)]),_:1},8,["loading"])):d("v-if",!0),e.value?.operations.indexOf("complete")>-1&&o.params?.completeBtnText!==""?(s(),m(r,{key:6,loading:i.value||l.value,type:"primary",onClick:a[6]||(a[6]=p=>c("complete"))},{default:u(()=>[f(v(o.params?.completeBtnText??"同意"),1)]),_:1},8,["loading"])):d("v-if",!0)],64)):d("v-if",!0),P(t.$slots,"right",{},void 0,!0)]),_:3})],512)}}}),mt=le(se,[["__scopeId","data-v-dac4939f"]]);export{mt as default};
@@ -1,7 +1,7 @@
1
- import{defineComponent as Ie,useModel as Te,ref as E,computed as y,resolveComponent as h,resolveDirective as xe,openBlock as n,createElementBlock as r,createCommentVNode as d,withDirectives as be,createVNode as D,createElementVNode as i,createBlock as x,Fragment as p,renderList as b,normalizeClass as J,toDisplayString as u,renderSlot as Ce,resolveDynamicComponent as Ne,mergeProps as De,withCtx as K,normalizeStyle as Ee,createTextVNode as C,unref as X,mergeModels as Z,nextTick as Ke}from"vue";import V from"../../api/workflow/workflowInstApi.js";import Ae from"../../api/DocumentApi.js";import Be from"../../hooks/useFileView.js";import Le from"../../utils/FrameworkUtils.js";import{formatDateTime as Me}from"../../utils/dateTime.js";import{userInfoStore as Se}from"../../stores/userInfoStore.js";import Pe from"./TaskOperation.vue.js";import{_ as $e}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"element-plus";import"../../utils/frontendBus.js";import"../../utils/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"xlsx-js-style";import"pinia";import"../../utils/userSessionStorage.js";import"./components/SelectAssigneeDialog.vue.js";import"../../../chunks/AddOrMinusMultiDialog.vue_vue_type_script_setup_true_lang-SYw6MXOl.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/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 Ve={class:"workflow-todo-shell"},je={class:"workflow-todo-shell__body dialog-content-fill"},Fe={key:1,class:"wf-progress-scroll"},Oe={class:"wf-progress-steps"},Ue={class:"wf-progress-step__icon-wrap"},ze={class:"wf-progress-step__icon"},Re={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"},Qe={key:4},Ge={class:"wf-progress-step__name"},We={class:"wf-progress-step__name-text"},Ye={class:"wf-progress-step__name-label"},qe={key:0,class:"wf-progress-step__occurrence"},He={key:0,class:"workflow-todo-shell__record-occurrence"},Je={key:1,class:"workflow-todo-shell__record-type"},Xe={key:0,class:"workflow-todo-shell__record-user"},Ze={class:"workflow-todo-shell__record-person__name"},et={key:0,class:"workflow-todo-shell__comment"},tt={key:0,class:"workflow-todo-shell__record-files"},st=["onClick"],ot={class:"workflow-todo-shell__record-person__name"},nt={key:0,class:"workflow-todo-shell__comment"},at={key:1,class:"workflow-todo-shell__record-files"},rt=["onClick"],lt={class:"workflow-todo-shell__record-person__name"},it={key:0,class:"workflow-todo-shell__footer"},ee="__end__",ct=Ie({__name:"WorkflowTodoShell",props:Z({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}},{loading:{type:Boolean,default:!1},loadingModifiers:{}}),emits:Z(["cancel","success"],["update:loading"]),setup(w,{expose:te,emit:se}){const f=w,A=se,g=Te(w,"loading"),v=E(),m=E(),B=E(),L=E(!1),oe=e=>[...e].sort((t,o)=>(t.createTime||"").localeCompare(o.createTime||"")),j=y(()=>oe([...m.value?.hisTasks||[],...m.value?.activeTasks||[]])),M=E({}),F=Be().fileView,O=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?M.value[e]||[]:[],ne=async()=>{var t;const e=Array.from(new Set(j.value.map(o=>o.taskId).filter(o=>!!o)));if(e.length)try{const o=await Ae.getUpLoadFilesByBussinessIds(e),a={};for(const l of o)l.businessId&&(a[t=l.businessId]||(a[t]=[])).push(l);M.value=a}catch{M.value={}}},S=y(()=>{const e=new Map;for(const t of j.value){const o=q(t),a=e.get(o);a?a.tasks.push(t):e.set(o,{taskName:t.taskName,taskDefKey:t.taskDefKey,parentExecutionId:t.parentExecutionId,tasks:[t],approvalType:t.approvalType})}return Array.from(e.values())}),U=y(()=>v.value?.procEndTime?!0:!!(m.value&&!(m.value.activeTasks||[]).length&&(m.value.hisTasks||[]).length)),ae=y(()=>{const e=[...S.value],t=new Set(e.map(a=>z(a)));for(const a of m.value?.futureTasks||[]){const l=`${a.taskDefKey||a.taskName}-`;t.has(l)||e.push({taskName:a.taskName,taskDefKey:a.taskDefKey,tasks:[],assigneeNames:a.assigneeNames,approvalType:a.approvalType})}e.push({taskName:"结束",taskDefKey:ee,tasks:[],isEnd:!0});const o=new Map;for(const a of e){const l=a.taskDefKey||a.taskName||"";l&&(a.occurrence=(o.get(l)||0)+1,o.set(l,a.occurrence))}return e}),z=e=>`${e.taskDefKey||e.taskName}-${e.parentExecutionId||""}`,re={single:"或签",joint:"会签",all:"会签"},R=e=>re[e.approvalType||e.tasks[0]?.approvalType||""]||"",le=e=>(e.approvalType||e.tasks[0]?.approvalType||"")==="single",Q=e=>{const t=(e.assigneeNames||"").split(",").map(o=>o.trim()).filter(Boolean);return t.length?t:["待处理"]},ie={1:{label:"同意",type:"success"},2:{label:"驳回",type:"warning"},3:{label:"终止",type:"danger"},4:{label:"委派",type:"warning"},5:{label:"转办",type:"warning"},6:{label:"终止",type:"danger"},7:{label:"撤回",type:"info"}},ce=e=>Me(e.finishTime||e.createTime),de={success:"var(--el-color-success)",warning:"var(--el-color-warning)",danger:"var(--el-color-danger)",primary:"var(--el-color-primary)"},pe=e=>de[e]||"",I=e=>{if(e.isEnd)return U.value?{label:"已结束",type:"success",hollow:!1}:{label:"等待",type:"info",hollow:!1};if(!e.tasks.length)return{label:"等待",type:"info",hollow:!1};const t=e.tasks;if(t.some(l=>!l.finishTime))return{label:"进行中",type:"primary",hollow:!1};let o="已办",a="success";if(t.some(l=>l.taskLocalVars?.firstTask))o="提交";else{const l=[...t].sort((k,$)=>($.finishTime||"").localeCompare(k.finishTime||""))[0]?.commentList?.[0],T=ie[l?.type||""];o=T?.label||"已办",a=T?.type||"success"}return{label:o,type:a,hollow:!1}},G=e=>{const t=e.assigneeName||e.startUserName||"待处理";return e.finishTime?`${t} · ${ce(e)}`:t},ue=e=>e.tasks.length?e.tasks.map(G).join(" / "):Q(e).join(" / "),P=e=>e.tasks.map(t=>t.comment).filter(Boolean).join(" / "),W=y(()=>{const e=new Map,t=[];for(const o of S.value){const a=o.taskDefKey||o.taskName||"";if(!a)continue;const l=o.tasks.some(k=>!k.finishTime)?"process":I(o).type,T=e.get(a);if(T!==void 0){const k=t[T];k.occurrence=(k.occurrence||1)+1,k.parentExecutionId=o.parentExecutionId,k.status=l;continue}e.set(a,t.length),t.push({taskName:o.taskName,taskDefKey:o.taskDefKey,parentExecutionId:o.parentExecutionId,status:l,occurrence:1})}for(const o of m.value?.futureTasks||[]){const a=o.taskDefKey||o.taskName||"";if(!a)continue;const l=e.get(a);if(l!==void 0){t[l].status="wait";continue}e.set(a,t.length),t.push({taskName:o.taskName,taskDefKey:o.taskDefKey,status:"wait"})}return t.push({taskName:"结束",taskDefKey:ee,status:U.value?"success":"wait"}),t}),Y=e=>{const t=Se().getUserInfo.userCode;return!t||!e?!1:!!(e.assigneeId===t||e.candidate&&e.candidate.split(",").map(a=>a.trim()).filter(Boolean).includes(t))},fe=y(()=>Y(v.value)?!0:(m.value?.activeTasks||[]).some(e=>Y(e))),me=y(()=>f.readonly||!!v.value?.finishTime||!!v.value?.procEndTime||L.value&&!(m.value?.activeTasks||[]).length||!fe.value),ke=y(()=>B.value?.taskOption),ve=y(()=>{const e=ke.value;return{...e||{},cancelFunction:(...t)=>{e?.cancelFunction?.(...t),A("cancel")},workflowComplete:(...t)=>{e?.workflowComplete?.(...t)}}}),q=e=>`${e.taskDefKey||e.taskName}-${e.parentExecutionId||""}`,H=async(e,t=!1)=>{const o=f.taskInfo&&f.taskInfo.procInsId==null&&f.taskInfo.processInstanceId!=null?{...f.taskInfo,procInsId:f.taskInfo.processInstanceId}:f.taskInfo;if(!(!f.taskId&&!o?.procInsId))try{g.value=!0,L.value=!1,v.value=e?{...v.value,...e}:t&&f.taskId?await V.getTaskInst(f.taskId):o||await V.getTaskInst(f.taskId),v.value?.procInsId&&(m.value=await V.getProcessTaskList(v.value.procInsId)),L.value=!0,await ne(),await Ke(),await B.value?.resetQuery?.()}catch(a){Le.messageError(a)}finally{g.value=!1}},_e=async e=>{A("success",e),await H(e,!0)};return te({resetQuery:async()=>{await H()}}),(e,t)=>{const o=h("el-title"),a=h("el-empty"),l=h("el-tag-display"),T=h("el-flex"),k=h("el-icons"),$=h("el-timeline-item"),ye=h("el-timeline"),we=h("el-button"),he=xe("loading");return n(),r("div",Ve,[d(`
1
+ import{defineComponent as Ie,useModel as Te,ref as E,computed as y,resolveComponent as h,resolveDirective as xe,openBlock as n,createElementBlock as r,createCommentVNode as d,withDirectives as Ce,createVNode as D,createElementVNode as i,createBlock as x,Fragment as p,renderList as C,normalizeClass as J,toDisplayString as u,renderSlot as be,resolveDynamicComponent as Ne,mergeProps as De,withCtx as K,normalizeStyle as Ee,createTextVNode as b,unref as X,mergeModels as Z,nextTick as Ke}from"vue";import V from"../../api/workflow/workflowInstApi.js";import Ae from"../../api/DocumentApi.js";import Be from"../../hooks/useFileView.js";import Le from"../../utils/FrameworkUtils.js";import{formatDateTime as Me}from"../../utils/dateTime.js";import{userInfoStore as Se}from"../../stores/userInfoStore.js";import Pe from"./TaskOperation.vue.js";import{_ as $e}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"element-plus";import"../../utils/frontendBus.js";import"../../utils/globalLoading.js";import"../../utils/workflowTaskContext.js";import"../../config/GlobalLoadingConfig.js";import"xlsx-js-style";import"pinia";import"../../utils/userSessionStorage.js";import"./components/SelectAssigneeDialog.vue.js";import"../../../chunks/AddOrMinusMultiDialog.vue_vue_type_script_setup_true_lang-SYw6MXOl.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/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 Ve={class:"workflow-todo-shell"},je={class:"workflow-todo-shell__body dialog-content-fill"},Fe={key:1,class:"wf-progress-scroll"},Oe={class:"wf-progress-steps"},Ue={class:"wf-progress-step__icon-wrap"},ze={class:"wf-progress-step__icon"},Re={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"},Qe={key:4},Ge={class:"wf-progress-step__name"},We={class:"wf-progress-step__name-text"},Ye={class:"wf-progress-step__name-label"},qe={key:0,class:"wf-progress-step__occurrence"},He={key:0,class:"workflow-todo-shell__record-occurrence"},Je={key:1,class:"workflow-todo-shell__record-type"},Xe={key:0,class:"workflow-todo-shell__record-user"},Ze={class:"workflow-todo-shell__record-person__name"},et={key:0,class:"workflow-todo-shell__comment"},tt={key:0,class:"workflow-todo-shell__record-files"},st=["onClick"],ot={class:"workflow-todo-shell__record-person__name"},nt={key:0,class:"workflow-todo-shell__comment"},at={key:1,class:"workflow-todo-shell__record-files"},rt=["onClick"],lt={class:"workflow-todo-shell__record-person__name"},it={key:0,class:"workflow-todo-shell__footer"},ee="__end__",ct=Ie({__name:"WorkflowTodoShell",props:Z({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}},{loading:{type:Boolean,default:!1},loadingModifiers:{}}),emits:Z(["cancel","success"],["update:loading"]),setup(w,{expose:te,emit:se}){const f=w,A=se,g=Te(w,"loading"),v=E(),m=E(),B=E(),L=E(!1),oe=e=>[...e].sort((t,o)=>(t.createTime||"").localeCompare(o.createTime||"")),j=y(()=>oe([...m.value?.hisTasks||[],...m.value?.activeTasks||[]])),M=E({}),F=Be().fileView,O=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?M.value[e]||[]:[],ne=async()=>{var t;const e=Array.from(new Set(j.value.map(o=>o.taskId).filter(o=>!!o)));if(e.length)try{const o=await Ae.getUpLoadFilesByBussinessIds(e),a={};for(const l of o)l.businessId&&(a[t=l.businessId]||(a[t]=[])).push(l);M.value=a}catch{M.value={}}},S=y(()=>{const e=new Map;for(const t of j.value){const o=q(t),a=e.get(o);a?a.tasks.push(t):e.set(o,{taskName:t.taskName,taskDefKey:t.taskDefKey,parentExecutionId:t.parentExecutionId,tasks:[t],approvalType:t.approvalType})}return Array.from(e.values())}),U=y(()=>v.value?.procEndTime?!0:!!(m.value&&!(m.value.activeTasks||[]).length&&(m.value.hisTasks||[]).length)),ae=y(()=>{const e=[...S.value],t=new Set(e.map(a=>z(a)));for(const a of m.value?.futureTasks||[]){const l=`${a.taskDefKey||a.taskName}-`;t.has(l)||e.push({taskName:a.taskName,taskDefKey:a.taskDefKey,tasks:[],assigneeNames:a.assigneeNames,approvalType:a.approvalType})}e.push({taskName:"结束",taskDefKey:ee,tasks:[],isEnd:!0});const o=new Map;for(const a of e){const l=a.taskDefKey||a.taskName||"";l&&(a.occurrence=(o.get(l)||0)+1,o.set(l,a.occurrence))}return e}),z=e=>`${e.taskDefKey||e.taskName}-${e.parentExecutionId||""}`,re={single:"或签",joint:"会签",all:"会签"},R=e=>re[e.approvalType||e.tasks[0]?.approvalType||""]||"",le=e=>(e.approvalType||e.tasks[0]?.approvalType||"")==="single",Q=e=>{const t=(e.assigneeNames||"").split(",").map(o=>o.trim()).filter(Boolean);return t.length?t:["待处理"]},ie={1:{label:"同意",type:"success"},2:{label:"驳回",type:"warning"},3:{label:"终止",type:"danger"},4:{label:"委派",type:"warning"},5:{label:"转办",type:"warning"},6:{label:"终止",type:"danger"},7:{label:"撤回",type:"info"}},ce=e=>Me(e.finishTime||e.createTime),de={success:"var(--el-color-success)",warning:"var(--el-color-warning)",danger:"var(--el-color-danger)",primary:"var(--el-color-primary)"},pe=e=>de[e]||"",I=e=>{if(e.isEnd)return U.value?{label:"已结束",type:"success",hollow:!1}:{label:"等待",type:"info",hollow:!1};if(!e.tasks.length)return{label:"等待",type:"info",hollow:!1};const t=e.tasks;if(t.some(l=>!l.finishTime))return{label:"进行中",type:"primary",hollow:!1};let o="已办",a="success";if(t.some(l=>l.taskLocalVars?.firstTask))o="提交";else{const l=[...t].sort((k,$)=>($.finishTime||"").localeCompare(k.finishTime||""))[0]?.commentList?.[0],T=ie[l?.type||""];o=T?.label||"已办",a=T?.type||"success"}return{label:o,type:a,hollow:!1}},G=e=>{const t=e.assigneeName||e.startUserName||"待处理";return e.finishTime?`${t} · ${ce(e)}`:t},ue=e=>e.tasks.length?e.tasks.map(G).join(" / "):Q(e).join(" / "),P=e=>e.tasks.map(t=>t.comment).filter(Boolean).join(" / "),W=y(()=>{const e=new Map,t=[];for(const o of S.value){const a=o.taskDefKey||o.taskName||"";if(!a)continue;const l=o.tasks.some(k=>!k.finishTime)?"process":I(o).type,T=e.get(a);if(T!==void 0){const k=t[T];k.occurrence=(k.occurrence||1)+1,k.parentExecutionId=o.parentExecutionId,k.status=l;continue}e.set(a,t.length),t.push({taskName:o.taskName,taskDefKey:o.taskDefKey,parentExecutionId:o.parentExecutionId,status:l,occurrence:1})}for(const o of m.value?.futureTasks||[]){const a=o.taskDefKey||o.taskName||"";if(!a)continue;const l=e.get(a);if(l!==void 0){t[l].status="wait";continue}e.set(a,t.length),t.push({taskName:o.taskName,taskDefKey:o.taskDefKey,status:"wait"})}return t.push({taskName:"结束",taskDefKey:ee,status:U.value?"success":"wait"}),t}),Y=e=>{const t=Se().getUserInfo.userCode;return!t||!e?!1:!!(e.assigneeId===t||e.candidate&&e.candidate.split(",").map(a=>a.trim()).filter(Boolean).includes(t))},fe=y(()=>Y(v.value)?!0:(m.value?.activeTasks||[]).some(e=>Y(e))),me=y(()=>f.readonly||!!v.value?.finishTime||!!v.value?.procEndTime||L.value&&!(m.value?.activeTasks||[]).length||!fe.value),ke=y(()=>B.value?.taskOption),ve=y(()=>{const e=ke.value;return{...e||{},cancelFunction:(...t)=>{e?.cancelFunction?.(...t),A("cancel")},workflowComplete:(...t)=>{e?.workflowComplete?.(...t)}}}),q=e=>`${e.taskDefKey||e.taskName}-${e.parentExecutionId||""}`,H=async(e,t=!1)=>{const o=f.taskInfo&&f.taskInfo.procInsId==null&&f.taskInfo.processInstanceId!=null?{...f.taskInfo,procInsId:f.taskInfo.processInstanceId}:f.taskInfo;if(!(!f.taskId&&!o?.procInsId))try{g.value=!0,L.value=!1,v.value=e?{...v.value,...e}:t&&f.taskId?await V.getTaskInst(f.taskId):o||await V.getTaskInst(f.taskId),v.value?.procInsId&&(m.value=await V.getProcessTaskList(v.value.procInsId)),L.value=!0,await ne(),await Ke(),await B.value?.resetQuery?.()}catch(a){Le.messageError(a)}finally{g.value=!1}},_e=async e=>{A("success",e),await H(e,!0)};return te({resetQuery:async()=>{await H()}}),(e,t)=>{const o=h("el-title"),a=h("el-empty"),l=h("el-tag-display"),T=h("el-flex"),k=h("el-icons"),$=h("el-timeline-item"),ye=h("el-timeline"),we=h("el-button"),he=xe("loading");return n(),r("div",Ve,[d(`
2
2
  内容区撑满剩余空间统一使用 dialog-content-fill(flex/height 由核心工具类提供),
3
3
  滚动仅保留在本内容区,底部操作栏固定不随内容滚动。
4
- `),be((n(),r("div",je,[D(o,{level:"1",title:"流程进度",style:{"border-bottom":"var(--border)"}}),i("div",null,[W.value.length?(n(),r("div",Fe,[i("div",Oe,[(n(!0),r(p,null,b(W.value,(s,c)=>(n(),r("div",{key:q(s),class:J(["wf-progress-step",{done:s.status==="success",current:s.status==="process",rejected:s.status==="warning",stopped:s.status==="error"||s.status==="danger"}])},[i("div",Ue,[i("div",ze,[d(" 同意/提交:对勾 "),s.status==="success"?(n(),r("svg",Re,[...t[3]||(t[3]=[i("path",{d:"M20 6L9 17l-5-5"},null,-1)])])):s.status==="warning"?(n(),r(p,{key:1},[d(" 驳回:回退箭头 "),t[4]||(t[4]=i("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[i("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)):s.status==="danger"||s.status==="error"?(n(),r(p,{key:2},[d(" 终止:叉 "),t[5]||(t[5]=i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"},[i("path",{d:"M18 6L6 18"}),i("path",{d:"M6 6l12 12"})],-1))],2112)):s.status==="info"?(n(),r(p,{key:3},[d(" 撤回:撤销箭头 "),t[6]||(t[6]=i("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[i("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",Qe,u(c+1),1))])]),i("div",Ge,[i("span",We,[i("span",Ye,u(s.taskName||"未命名节点"),1),s.occurrence&&s.occurrence>1?(n(),r("sup",qe,u(s.occurrence),1)):d("v-if",!0)])])],2))),128))])])):(n(),x(a,{key:0,description:"暂无流程进度","image-size":48}))]),d(`
4
+ `),Ce((n(),r("div",je,[D(o,{level:"1",title:"流程进度",style:{"border-bottom":"var(--border)"}}),i("div",null,[W.value.length?(n(),r("div",Fe,[i("div",Oe,[(n(!0),r(p,null,C(W.value,(s,c)=>(n(),r("div",{key:q(s),class:J(["wf-progress-step",{done:s.status==="success",current:s.status==="process",rejected:s.status==="warning",stopped:s.status==="error"||s.status==="danger"}])},[i("div",Ue,[i("div",ze,[d(" 同意/提交:对勾 "),s.status==="success"?(n(),r("svg",Re,[...t[3]||(t[3]=[i("path",{d:"M20 6L9 17l-5-5"},null,-1)])])):s.status==="warning"?(n(),r(p,{key:1},[d(" 驳回:回退箭头 "),t[4]||(t[4]=i("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[i("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)):s.status==="danger"||s.status==="error"?(n(),r(p,{key:2},[d(" 终止:叉 "),t[5]||(t[5]=i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"},[i("path",{d:"M18 6L6 18"}),i("path",{d:"M6 6l12 12"})],-1))],2112)):s.status==="info"?(n(),r(p,{key:3},[d(" 撤回:撤销箭头 "),t[6]||(t[6]=i("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[i("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",Qe,u(c+1),1))])]),i("div",Ge,[i("span",We,[i("span",Ye,u(s.taskName||"未命名节点"),1),s.occurrence&&s.occurrence>1?(n(),r("sup",qe,u(s.occurrence),1)):d("v-if",!0)])])],2))),128))])])):(n(),x(a,{key:0,description:"暂无流程进度","image-size":48}))]),d(`
5
5
  业务审核内容:完全由业务内容组件/插槽决定(含它自己的标题、分区、网格),
6
6
  通用抽屉不再注入任何标题,业务页面给什么就展示什么。
7
- `),Ce(e.$slots,"content",{task:v.value,process:m.value},()=>[w.contentComponent?(n(),x(Ne(w.contentComponent),De({key:0,ref_key:"contentRef",ref:B},w.contentProps,{loading:g.value,"onUpdate:loading":t[0]||(t[0]=s=>g.value=s)}),null,16,["loading"])):d("v-if",!0)],!0),D(o,{level:"1",title:"审批记录",style:{"border-bottom":"var(--border)"}}),i("div",null,[S.value.length?(n(),x(ye,{key:1,class:"workflow-todo-shell__timeline"},{default:K(()=>[(n(!0),r(p,null,b(ae.value,s=>(n(),x($,{key:z(s),type:I(s).type,hollow:I(s).hollow,style:Ee({"--el-timeline-node-color":pe(I(s).type)})},{default:K(()=>[D(T,{align:"center",justify:"space-between",class:J(["workflow-todo-shell__record-title",`is-${I(s).type}`])},{default:K(()=>[i("span",null,[C(u(s.taskName||"未命名节点")+" ",1),(s.occurrence||0)>1?(n(),r("span",He,u(s.occurrence),1)):d("v-if",!0),R(s)?(n(),r("span",Je,u(R(s)),1)):d("v-if",!0)]),D(l,{type:I(s).type,size:"small"},{default:K(()=>[C(u(I(s).label),1)]),_:2},1032,["type"])]),_:2},1032,["class"]),le(s)?(n(),r("div",Xe,[i("span",Ze,u(ue(s)),1),P(s)||s.tasks.some(c=>N(c.taskId).length)?(n(),r("div",et,[P(s)?(n(),r(p,{key:0},[C(u(P(s)),1)],64)):d("v-if",!0),(n(!0),r(p,null,b(s.tasks,c=>(n(),r(p,{key:c.taskId},[N(c.taskId).length?(n(),r("div",tt,[(n(!0),r(p,null,b(N(c.taskId),_=>(n(),r("span",{key:_.id,class:"workflow-todo-shell__record-file",onClick:ge=>X(F)(_.id)},[D(k,{"model-value":O(_.name)},null,8,["model-value"]),C(u(_.name),1)],8,st))),128))])):d("v-if",!0)],64))),128))])):d("v-if",!0)])):s.tasks.length?(n(!0),r(p,{key:1},b(s.tasks,c=>(n(),r("div",{key:c.taskId,class:"workflow-todo-shell__record-user"},[i("span",ot,u(G(c)),1),c.comment||N(c.taskId).length?(n(),r("div",nt,[c.comment?(n(),r(p,{key:0},[C(u(c.comment),1)],64)):d("v-if",!0),N(c.taskId).length?(n(),r("div",at,[(n(!0),r(p,null,b(N(c.taskId),_=>(n(),r("span",{key:_.id,class:"workflow-todo-shell__record-file",onClick:ge=>X(F)(_.id)},[D(k,{"model-value":O(_.name)},null,8,["model-value"]),C(u(_.name),1)],8,rt))),128))])):d("v-if",!0)])):d("v-if",!0)]))),128)):s.isEnd?d("v-if",!0):(n(),r(p,{key:2},[d(" 结束节点只有节点名与状态,不展示审签人 "),(n(!0),r(p,null,b(Q(s),c=>(n(),r("div",{key:c,class:"workflow-todo-shell__record-user"},[i("span",lt,u(c),1)]))),128))],64))]),_:2},1032,["type","hollow","style"]))),128))]),_:1})):(n(),x(a,{key:0,description:"暂无审批记录","image-size":48}))])])),[[he,g.value]]),w.showFooter?(n(),r("div",it,[me.value?(n(),x(we,{key:0,onClick:t[1]||(t[1]=s=>A("cancel"))},{default:K(()=>[...t[7]||(t[7]=[C("取消",-1)])]),_:1})):(n(),x(Pe,{key:1,"task-id":w.taskId,params:ve.value,"render-dialog":w.renderDialog,"show-process-btn":!1,"but-loading":g.value,"onUpdate:butLoading":t[2]||(t[2]=s=>g.value=s),onSuccess:_e},null,8,["task-id","params","render-dialog","but-loading"]))])):d("v-if",!0)])}}}),fs=$e(ct,[["__scopeId","data-v-5d6add4b"]]);export{fs as default};
7
+ `),be(e.$slots,"content",{task:v.value,process:m.value},()=>[w.contentComponent?(n(),x(Ne(w.contentComponent),De({key:0,ref_key:"contentRef",ref:B},w.contentProps,{loading:g.value,"onUpdate:loading":t[0]||(t[0]=s=>g.value=s)}),null,16,["loading"])):d("v-if",!0)],!0),D(o,{level:"1",title:"审批记录",style:{"border-bottom":"var(--border)"}}),i("div",null,[S.value.length?(n(),x(ye,{key:1,class:"workflow-todo-shell__timeline"},{default:K(()=>[(n(!0),r(p,null,C(ae.value,s=>(n(),x($,{key:z(s),type:I(s).type,hollow:I(s).hollow,style:Ee({"--el-timeline-node-color":pe(I(s).type)})},{default:K(()=>[D(T,{align:"center",justify:"space-between",class:J(["workflow-todo-shell__record-title",`is-${I(s).type}`])},{default:K(()=>[i("span",null,[b(u(s.taskName||"未命名节点")+" ",1),(s.occurrence||0)>1?(n(),r("span",He,u(s.occurrence),1)):d("v-if",!0),R(s)?(n(),r("span",Je,u(R(s)),1)):d("v-if",!0)]),D(l,{type:I(s).type,size:"small"},{default:K(()=>[b(u(I(s).label),1)]),_:2},1032,["type"])]),_:2},1032,["class"]),le(s)?(n(),r("div",Xe,[i("span",Ze,u(ue(s)),1),P(s)||s.tasks.some(c=>N(c.taskId).length)?(n(),r("div",et,[P(s)?(n(),r(p,{key:0},[b(u(P(s)),1)],64)):d("v-if",!0),(n(!0),r(p,null,C(s.tasks,c=>(n(),r(p,{key:c.taskId},[N(c.taskId).length?(n(),r("div",tt,[(n(!0),r(p,null,C(N(c.taskId),_=>(n(),r("span",{key:_.id,class:"workflow-todo-shell__record-file",onClick:ge=>X(F)(_.id)},[D(k,{"model-value":O(_.name)},null,8,["model-value"]),b(u(_.name),1)],8,st))),128))])):d("v-if",!0)],64))),128))])):d("v-if",!0)])):s.tasks.length?(n(!0),r(p,{key:1},C(s.tasks,c=>(n(),r("div",{key:c.taskId,class:"workflow-todo-shell__record-user"},[i("span",ot,u(G(c)),1),c.comment||N(c.taskId).length?(n(),r("div",nt,[c.comment?(n(),r(p,{key:0},[b(u(c.comment),1)],64)):d("v-if",!0),N(c.taskId).length?(n(),r("div",at,[(n(!0),r(p,null,C(N(c.taskId),_=>(n(),r("span",{key:_.id,class:"workflow-todo-shell__record-file",onClick:ge=>X(F)(_.id)},[D(k,{"model-value":O(_.name)},null,8,["model-value"]),b(u(_.name),1)],8,rt))),128))])):d("v-if",!0)])):d("v-if",!0)]))),128)):s.isEnd?d("v-if",!0):(n(),r(p,{key:2},[d(" 结束节点只有节点名与状态,不展示审签人 "),(n(!0),r(p,null,C(Q(s),c=>(n(),r("div",{key:c,class:"workflow-todo-shell__record-user"},[i("span",lt,u(c),1)]))),128))],64))]),_:2},1032,["type","hollow","style"]))),128))]),_:1})):(n(),x(a,{key:0,description:"暂无审批记录","image-size":48}))])])),[[he,g.value]]),w.showFooter?(n(),r("div",it,[me.value?(n(),x(we,{key:0,onClick:t[1]||(t[1]=s=>A("cancel"))},{default:K(()=>[...t[7]||(t[7]=[b("取消",-1)])]),_:1})):(n(),x(Pe,{key:1,"task-id":w.taskId,params:ve.value,"render-dialog":w.renderDialog,"show-process-btn":!1,"but-loading":g.value,"onUpdate:butLoading":t[2]||(t[2]=s=>g.value=s),onSuccess:_e},null,8,["task-id","params","render-dialog","but-loading"]))])):d("v-if",!0)])}}}),fs=$e(ct,[["__scopeId","data-v-2dd4e6d0"]]);export{fs as default};
@@ -1,5 +1,5 @@
1
- import{computed as B,ref as v,unref as w,createApp as lo,nextTick as io,h as n}from"vue";import ao,{ElDrawer as ro,ElDialog as so,ElButton as T}from"element-plus";import V from"../stores/storeConfig.js";/* empty css */import*as $ from"@element-plus/icons-vue";import"../config/ElementPlusConfig.js";import{installVxeGrid as no}from"../config/VxeTableConfig.js";import co from"element-plus/es/locale/lang/zh-cn";import go from"./useListenerHooks.js";import{permissionStore as ho}from"../stores/permissionStore.js";import po from"../components/icon/ElIcons.vue.js";import uo from"../components/ElDialogBody/ElDialogBody.vue.js";import mo from"crypto-js/enc-base64";import fo from"crypto-js/enc-utf8";import{frontendBus as D}from"../utils/frontendBus.js";import{GLOBAL_LOADING_EVENT as R,notifyDialogLoadingScope as bo}from"../utils/globalLoading.js";import yo from"./useBehaviorAction.js";import"pinia";import"pinia-plugin-store";import"../utils/patchWujiePopperCoordinates.js";import"vxe-table";import"@vxe-ui/core";import"@vxe-ui/plugin-export-xlsx";import"exceljs";import"vxe-table/es/style.css";import"vxe-table/es/locale/lang/zh-CN";import"../components/vxeReplace/index.js";import"../components/tooltip/index.js";import"../components/tooltip/src/tooltip.js";import"../../chunks/VxeButton.vue_vue_type_script_setup_true_lang-s_mYx9TA.js";import"../../chunks/VxeInput.vue_vue_type_script_setup_true_lang-v9AqGSoL.js";import"../../chunks/VxeSelect.vue_vue_type_script_setup_true_lang-DcVggycZ.js";import"../../chunks/VxeCheckbox.vue_vue_type_script_setup_true_lang-Ccr5YD1x.js";import"../../chunks/VxeModal.vue_vue_type_script_setup_true_lang-B4gh7jFR.js";import"../../chunks/VxeLoading.vue_vue_type_script_setup_true_lang-B253kD5t.js";import"../../chunks/VxePager.vue_vue_type_script_setup_true_lang-DpOa3T96.js";import"../../chunks/VxeForm.vue_vue_type_script_setup_true_lang-DXNZ8Qzg.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"../stores/userInfoStore.js";import"../utils/userSessionStorage.js";import"@vueuse/core";import"../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";const _o={},ko="subAppModalOverlay",x="adtec-subapp-modal-open";let H=0;const m=[],_=new Map;let I=!1;const q=new WeakSet,vo=()=>{for(let o=m.length-1;o>=0;o--)if(m[o].open.value)return m[o]},U=o=>{if(!o?.id)return;if(o.phase==="start"){const i=vo();if(!i)return;_.set(o.id,i),i.requestLoadingIds.add(o.id),i.requestLoading.value=!0;return}const e=_.get(o.id);e&&(_.delete(o.id),e.requestLoadingIds.delete(o.id),e.requestLoading.value=e.requestLoadingIds.size>0)},wo=o=>{m.push(o),!I&&(D.on(R,U),I=!0)},xo=o=>{const e=m.indexOf(o);e>-1&&m.splice(e,1),o.requestLoadingIds.forEach(i=>_.delete(i)),o.requestLoadingIds.clear(),o.requestLoading.value=!1,!(m.length>0||!I)&&(D.off(R,U),I=!1,_.clear())},Io=o=>{const e=_o||{};return o.applicationModule||e.VITE_APPLICATION_MODULE||e.VITE_APP_MODULE||String(o.router.currentRoute.value.meta.applicationModule||"")},P=(o,e,i)=>{if(typeof window>"u"||!window.__POWERED_BY_WUJIE__)return;const l=Io(o);if(!l||(i&&!e.overlayId&&(e.overlayId=`${l}-${Date.now()}-${++H}`),!e.overlayId))return;const d={applicationModule:l,overlayId:e.overlayId,open:i};D.emit(ko,d),i||(e.overlayId=void 0)},N=(o,e)=>{e&&!o.overlayId&&(o.overlayId=`dialog-${Date.now()}-${++H}`),o.overlayId&&bo({id:o.overlayId,open:e})};function Lo(){const e="dialog-hooks-styles",i=document.getElementById(e);if(i&&(i.textContent||"").includes("/* dialog-hooks v17 */"))return;i?.remove();const l=document.createElement("style");l.id=e,l.type="text/css",l.innerHTML=`
2
- /* dialog-hooks v17 */
1
+ import{computed as $,ref as x,unref as w,createApp as so,nextTick as no,h as d}from"vue";import co,{ElDrawer as ho,ElDialog as go,ElButton as q}from"element-plus";import V from"../stores/storeConfig.js";/* empty css */import*as P from"@element-plus/icons-vue";import"../config/ElementPlusConfig.js";import{installVxeGrid as uo}from"../config/VxeTableConfig.js";import po from"element-plus/es/locale/lang/zh-cn";import bo from"./useListenerHooks.js";import{permissionStore as mo}from"../stores/permissionStore.js";import fo from"../components/icon/ElIcons.vue.js";import _o from"../components/ElDialogBody/ElDialogBody.vue.js";import ko from"crypto-js/enc-base64";import yo from"crypto-js/enc-utf8";import{frontendBus as A}from"../utils/frontendBus.js";import{GLOBAL_LOADING_EVENT as W,notifyDialogLoadingScope as vo}from"../utils/globalLoading.js";import xo from"./useBehaviorAction.js";import"pinia";import"pinia-plugin-store";import"../utils/patchWujiePopperCoordinates.js";import"vxe-table";import"@vxe-ui/core";import"@vxe-ui/plugin-export-xlsx";import"exceljs";import"vxe-table/es/style.css";import"vxe-table/es/locale/lang/zh-CN";import"../components/vxeReplace/index.js";import"../components/tooltip/index.js";import"../components/tooltip/src/tooltip.js";import"../../chunks/VxeButton.vue_vue_type_script_setup_true_lang-s_mYx9TA.js";import"../../chunks/VxeInput.vue_vue_type_script_setup_true_lang-v9AqGSoL.js";import"../../chunks/VxeSelect.vue_vue_type_script_setup_true_lang-DcVggycZ.js";import"../../chunks/VxeCheckbox.vue_vue_type_script_setup_true_lang-Ccr5YD1x.js";import"../../chunks/VxeModal.vue_vue_type_script_setup_true_lang-B4gh7jFR.js";import"../../chunks/VxeLoading.vue_vue_type_script_setup_true_lang-B253kD5t.js";import"../../chunks/VxePager.vue_vue_type_script_setup_true_lang-DpOa3T96.js";import"../../chunks/VxeForm.vue_vue_type_script_setup_true_lang-DXNZ8Qzg.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"../stores/userInfoStore.js";import"../utils/userSessionStorage.js";import"@vueuse/core";import"../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";const wo={},Eo="subAppModalOverlay",E="adtec-subapp-modal-open";let U=0;const b=[],y=new Map;let S=!1;const C=new WeakMap,So=()=>{for(let o=b.length-1;o>=0;o--)if(b[o].open.value)return b[o]},j=o=>{if(!o?.id)return;if(o.phase==="start"){const t=So();if(!t)return;y.set(o.id,t),t.requestLoadingIds.add(o.id),t.requestLoading.value=!0;return}const e=y.get(o.id);e&&(y.delete(o.id),e.requestLoadingIds.delete(o.id),e.requestLoading.value=e.requestLoadingIds.size>0)},Lo=o=>{b.push(o),!S&&(A.on(W,j),S=!0)},Io=o=>{const e=b.indexOf(o);e>-1&&b.splice(e,1),o.requestLoadingIds.forEach(t=>y.delete(t)),o.requestLoadingIds.clear(),o.requestLoading.value=!1,!(b.length>0||!S)&&(A.off(W,j),S=!1,y.clear())},Oo=o=>{const e=wo||{};return o.applicationModule||e.VITE_APPLICATION_MODULE||e.VITE_APP_MODULE||String(o.router.currentRoute.value.meta.applicationModule||"")},z=(o,e,t)=>{if(typeof window>"u"||!window.__POWERED_BY_WUJIE__)return;const r=Oo(o);if(!r||(t&&!e.overlayId&&(e.overlayId=`${r}-${Date.now()}-${++U}`),!e.overlayId))return;const s={applicationModule:r,overlayId:e.overlayId,open:t};A.emit(Eo,s),t||(e.overlayId=void 0)},N=(o,e)=>{e&&!o.overlayId&&(o.overlayId=`dialog-${Date.now()}-${++U}`),o.overlayId&&vo({id:o.overlayId,open:e})};function Co(){const e="dialog-hooks-styles",t=document.getElementById(e);if(t&&(t.textContent||"").includes("/* dialog-hooks v24 */"))return;t?.remove();const r=document.createElement("style");r.id=e,r.type="text/css",r.innerHTML=`
2
+ /* dialog-hooks v24 */
3
3
  /* 抽屉组件 - 无滚动条样式 */
4
4
  .dialog-hooks-no-scroll.el-drawer .el-drawer__body {
5
5
  overflow: hidden !important;
@@ -74,46 +74,89 @@ import{computed as B,ref as v,unref as w,createApp as lo,nextTick as io,h as n}f
74
74
  .dialog-hooks-host.el-drawer .el-drawer__body .el-title {
75
75
  padding-right: 0;
76
76
  }
77
- /* 弹窗/抽屉内容滚动条自动隐藏:平时透明,滚动或悬停时显示。
78
- scrollbar-width/scrollbar-color 负责浏览器原生滚动条的显隐(各浏览器原生表现最好,
79
- 不要为了改宽度去掉它们);::-webkit-scrollbar 是忽略上述属性的浏览器的细滚动条兜底。
80
- 两种方式的实际占位宽度不同(6 / 11 / 15px…),所以右侧补偿一律走实测值,
81
- 见下面 --dialog-hooks-scrollbar 的说明。 */
82
- .dialog-hooks-host .el-drawer__body,
83
- .dialog-hooks-host .el-dialog__body,
84
- .dialog-hooks-host .el-dialog-body__content {
85
- scrollbar-width: thin;
86
- scrollbar-color: transparent transparent;
77
+ /* 弹窗/抽屉内容滚动条:滚动条槽位占满弹窗/抽屉右侧 8px 内边距(贴边),
78
+ 但滑块用 2px 透明边框 + background-clip 收成 4px,两侧各留 2px 空隙——
79
+ 否则滑块会紧贴内容块右 border,看起来和内容连在一起。平时透明、滚动或悬停时显示。
80
+ 业务内容里自带 overflow: auto 的节点(el-flex 的默认值——创建任务书抽屉的根节点、
81
+ 审批抽屉里嵌套的表单根节点、workflow-todo-shell__body 等)滚动条长在它们自己身上,
82
+ 所以内容层里的所有滚动容器一并覆盖(排除 vxe 网格、umo 编辑器和 textarea,它们有自己的滚动条样式),
83
+ 否则这些内嵌滚动条会退回全局 8px 常显样式。
84
+ 注意:Chromium 只要看到 scrollbar-width/scrollbar-color 非 auto,就会丢弃
85
+ ::-webkit-scrollbar 定制,退回系统原生 thin(约 11px)或 macOS 覆盖式滚动条——
86
+ 于是滚动条变粗,且覆盖式滚动条实测占位是 0,下面 --dialog-hooks-scrollbar 的右侧补偿
87
+ 失效,滚动条会压在内容右侧、看起来左右边距不等(“人员详情”细、“创建任务书”粗的根因)。
88
+ 所以 scrollbar-width/scrollbar-color 只留给不支持 ::-webkit-scrollbar 的浏览器(Firefox),
89
+ Chromium 走下面 6px 的经典滚动条:占位宽度稳定为 6px,配合实测补偿把滚动条
90
+ 落进弹窗/抽屉右侧 8px 内边距里,左右边距一致。 */
91
+ @supports not selector(::-webkit-scrollbar) {
92
+ .dialog-hooks-host .el-drawer__body,
93
+ .dialog-hooks-host .el-dialog__body,
94
+ .dialog-hooks-host .el-dialog-body__content,
95
+ .dialog-hooks-host
96
+ .el-dialog-body__content
97
+ *:not([class*='vxe']):not([class*='umo']):not(.el-textarea__inner) {
98
+ scrollbar-width: thin;
99
+ scrollbar-color: transparent transparent;
100
+ }
87
101
  }
88
102
  .dialog-hooks-host .el-drawer__body::-webkit-scrollbar,
89
103
  .dialog-hooks-host .el-dialog__body::-webkit-scrollbar,
90
- .dialog-hooks-host .el-dialog-body__content::-webkit-scrollbar {
91
- width: 6px;
92
- height: 6px;
104
+ .dialog-hooks-host .el-dialog-body__content::-webkit-scrollbar,
105
+ .dialog-hooks-host
106
+ .el-dialog-body__content
107
+ *:not([class*='vxe']):not([class*='umo']):not(.el-textarea__inner)::-webkit-scrollbar {
108
+ /* 与全局 *::-webkit-scrollbar 一致:-webkit-appearance: none 才切换为经典滚动条,
109
+ 否则 macOS 的覆盖式细滚动条会忽略 width,占位宽度变成 0 */
110
+ -webkit-appearance: none;
111
+ appearance: none;
112
+ width: var(--adtec-scrollbar-size, 8px);
113
+ height: var(--adtec-scrollbar-size, 8px);
114
+ background: transparent;
93
115
  }
94
116
  .dialog-hooks-host .el-drawer__body::-webkit-scrollbar-thumb,
95
117
  .dialog-hooks-host .el-dialog__body::-webkit-scrollbar-thumb,
96
- .dialog-hooks-host .el-dialog-body__content::-webkit-scrollbar-thumb {
97
- background: transparent;
98
- border-radius: 3px;
118
+ .dialog-hooks-host .el-dialog-body__content::-webkit-scrollbar-thumb,
119
+ .dialog-hooks-host
120
+ .el-dialog-body__content
121
+ *:not([class*='vxe']):not([class*='umo']):not(.el-textarea__inner)::-webkit-scrollbar-thumb {
122
+ /* 2px 透明边框 + padding-box 裁剪:8px 槽位里只画出 4px 滑块,与内容 border 留出空隙 */
123
+ background-color: transparent;
124
+ border: 2px solid transparent;
125
+ background-clip: padding-box;
126
+ border-radius: 4px;
99
127
  }
100
128
  /* Chrome 不会因为滚动容器自身的 :hover 重绘滚动条,
101
129
  必须由父级弹窗/抽屉(.dialog-hooks-host)的 :hover 触发(与 vxe 表格同一写法) */
102
130
  .dialog-hooks-host:hover .el-drawer__body::-webkit-scrollbar-thumb,
103
131
  .dialog-hooks-host:hover .el-dialog__body::-webkit-scrollbar-thumb,
104
132
  .dialog-hooks-host:hover .el-dialog-body__content::-webkit-scrollbar-thumb,
133
+ .dialog-hooks-host:hover
134
+ .el-dialog-body__content
135
+ *:not([class*='vxe']):not([class*='umo']):not(.el-textarea__inner)::-webkit-scrollbar-thumb,
105
136
  .dialog-hooks-host .el-drawer__body.is-scrolling::-webkit-scrollbar-thumb,
106
137
  .dialog-hooks-host .el-dialog__body.is-scrolling::-webkit-scrollbar-thumb,
107
- .dialog-hooks-host .el-dialog-body__content.is-scrolling::-webkit-scrollbar-thumb {
108
- background: rgba(144, 147, 153, 0.4);
109
- }
110
- .dialog-hooks-host:hover .el-drawer__body,
111
- .dialog-hooks-host:hover .el-dialog__body,
112
- .dialog-hooks-host:hover .el-dialog-body__content,
113
- .dialog-hooks-host .el-drawer__body.is-scrolling,
114
- .dialog-hooks-host .el-dialog__body.is-scrolling,
115
- .dialog-hooks-host .el-dialog-body__content.is-scrolling {
116
- scrollbar-color: rgba(144, 147, 153, 0.4) transparent;
138
+ .dialog-hooks-host .el-dialog-body__content.is-scrolling::-webkit-scrollbar-thumb,
139
+ .dialog-hooks-host
140
+ .el-dialog-body__content
141
+ *:not([class*='vxe']):not([class*='umo']):not(.el-textarea__inner).is-scrolling::-webkit-scrollbar-thumb {
142
+ background-color: rgba(144, 147, 153, 0.4);
143
+ }
144
+ /* 同上:只有 Firefox 这类没有 ::-webkit-scrollbar 的浏览器才需要 scrollbar-color 兜底 */
145
+ @supports not selector(::-webkit-scrollbar) {
146
+ .dialog-hooks-host:hover .el-drawer__body,
147
+ .dialog-hooks-host:hover .el-dialog__body,
148
+ .dialog-hooks-host:hover .el-dialog-body__content,
149
+ .dialog-hooks-host:hover
150
+ .el-dialog-body__content
151
+ *:not([class*='vxe']):not([class*='umo']):not(.el-textarea__inner),
152
+ .dialog-hooks-host .el-drawer__body.is-scrolling,
153
+ .dialog-hooks-host .el-dialog__body.is-scrolling,
154
+ .dialog-hooks-host .el-dialog-body__content.is-scrolling,
155
+ .dialog-hooks-host
156
+ .el-dialog-body__content
157
+ *:not([class*='vxe']):not([class*='umo']):not(.el-textarea__inner).is-scrolling {
158
+ scrollbar-color: rgba(144, 147, 153, 0.4) transparent;
159
+ }
117
160
  }
118
161
  /* 滚动条当右侧内边距用:内容区的滚动条落在弹窗/抽屉右侧 8px 内边距里,左右边距一致。
119
162
  滚动条占位宽度由 syncDialogScrollbarOffset 实测后写入 --dialog-hooks-scrollbar
@@ -231,14 +274,14 @@ import{computed as B,ref as v,unref as w,createApp as lo,nextTick as io,h as n}f
231
274
 
232
275
  /* 非当前子应用被宿主提升以显示弹窗时,仅隐藏其页面壳;是否添加该状态类
233
276
  由宿主根据当前路由判断,当前子应用自己的页面始终保留在遮罩下方。 */
234
- html.${x} #app > .subapp-main {
277
+ html.${E} #app > .subapp-main {
235
278
  visibility: hidden !important;
236
279
  pointer-events: none !important;
237
280
  }
238
- html.${x},
239
- html.${x} body,
240
- html.${x} #app {
281
+ html.${E},
282
+ html.${E} body,
283
+ html.${E} #app {
241
284
  background: transparent !important;
242
285
  background-color: transparent !important;
243
286
  }
244
- `,document.head.appendChild(l)}function Eo(o){const e=!!o.querySelector(".dialog-hooks-body-contained");o.querySelectorAll(e?".el-dialog-body__content":".el-drawer__body, .el-dialog__body").forEach(l=>{let d;const u=()=>{l.classList.add("is-scrolling"),d&&window.clearTimeout(d),d=window.setTimeout(()=>l.classList.remove("is-scrolling"),600)};l.addEventListener("scroll",u,{passive:!0}),l.addEventListener("mouseenter",u),l.addEventListener("mouseleave",()=>{d&&window.clearTimeout(d),l.classList.remove("is-scrolling")})})}function z(o){const e=!!o.querySelector(".dialog-hooks-body-contained");o.querySelectorAll(e?".el-dialog-body__content":".el-drawer__body, .el-dialog__body").forEach(l=>{let d;const u=()=>{if(!l.isConnected){d?.disconnect();return}const L=Math.max(0,l.offsetWidth-l.clientWidth);l.style.setProperty("--dialog-hooks-scrollbar",`${L}px`)};typeof ResizeObserver<"u"&&!q.has(l)&&(q.add(l),d=new ResizeObserver(u),d.observe(l)),u()})}function So(o,e,i){return o===!1?{enabled:!1,scroll:i,class:void 0,contentClass:void 0}:o===!0||o===void 0?{enabled:o===!0?!0:e,scroll:i,class:void 0,contentClass:void 0}:{enabled:o.enabled??e,scroll:o.scroll??i,class:o.class,contentClass:o.contentClass}}function Co(o,e){if(e)return e;try{const i=o.router.currentRoute.value.meta?.sysMenuData?.icon;if(i)return i}catch{}try{const i=sessionStorage.getItem("permissionStore");if(i){const l=JSON.parse(mo.parse(i).toString(fo));if(l?.activeMenuInfo?.icon)return l.activeMenuInfo.icon}}catch{}try{return ho(V).getActiveMenuInfo?.icon||""}catch{return""}}function Le(o){return function(i){const l=[],d=()=>l[l.length-1],u=r=>{const a=w(r?.data),y=w(r?.row),k=w(r?.formData),p=r?.id??r?.taskId??r?.selectedId??a?.id??y?.id??k?.id;return p==null||p===""?"":String(p)},L=(r,a,y,k="drawer",p,K=!0)=>{Lo();const{icon:F,hideConfirm:E,hideFooter:J,dialogBody:Q,...c}=y||{},b=So(Q,o.defaultDialogBody??!0,K),X=`${k}|${typeof r=="string"?r:r?.__name||r?.name||""}|${c.title||""}|${u(a)}`,O=v(!1),A=v(!1),t={open:v(!0),loading:B(()=>O.value||A.value),manualLoading:O,requestLoading:A,requestLoadingIds:new Set,childInstance:v(),app:null,div:null,closing:!1,renderKey:X,actionName:c.title||"确认"},Z=Object.fromEntries(Object.entries(a||{}).map(([s,h])=>[s,w(h)])),oo={...c,class:["dialog-hooks-host",...b.enabled?["dialog-hooks-body-contained"]:[],...b.scroll?[]:["dialog-hooks-no-scroll"],"dialog-hooks-scroll-auto",...Array.isArray(c.class)?c.class:c.class?[c.class]:[]]},eo=c.onClosed,S=typeof c.title=="string"&&c.title,M=S?Co(o,F):"",to=()=>n("div",{class:"dialog-hooks-header"},[M?n("div",{class:"dialog-hooks-header-icon"},[n(po,{modelValue:M})]):null,n("div",{class:"dialog-hooks-header-title"},[c.title]),t.loading.value&&!E?null:n("button",{type:"button",class:"dialog-hooks-header-close",onClick:()=>f(t)},[n($.Close)])]),g=lo(()=>n(k==="drawer"?ro:so,{...oo,modelValue:t.open.value,showClose:S?!1:c.showClose??!0,onClosed(){N(t,!1),P(o,t,!1),xo(t),eo?.();const s=l.indexOf(t);s>-1&&l.splice(s,1),t.app?.unmount(),t.div?.parentNode&&t.div.parentNode.removeChild(t.div),t.app=null,t.div=null},onClose(){f(t)}},{...S?{header:to}:{},default:()=>{const s=n(r,{...Z,loading:t.loading.value,"onUpdate:loading":h=>{t.manualLoading.value=h},ref:t.childInstance});return b.enabled?n(uo,{scroll:b.scroll,class:b.class,contentClass:b.contentClass},{default:()=>s}):s},...J?{}:{footer:()=>{if(p&&p.length){const s=p.map(h=>typeof h=="function"?h():h);return n("div",{className:"dialog-footer"},s)}return n("div",{className:"dialog-footer"},[n(T,{onClick:()=>f(t),loading:!E&&t.loading.value},"取 消"),E?null:n(T,{type:"primary",onClick:()=>j(t),loading:t.loading.value},"确 认")])}}}));o.plugins?.forEach(s=>g.use(s)),g.use(ao,{locale:co}),g.use(V),g.use(o.router);for(const[s,h]of Object.entries($))g.component(s,h);no(g),o.setupApp?.(g);const C=document.createElement("div");return document.body.appendChild(C),t.app=g,t.div=C,l.push(t),wo(t),N(t,!0),P(o,t,!0),g.mount(C),io(()=>{Eo(t.div),z(t.div),t.childInstance.value?.resetQuery?.(),setTimeout(()=>{t.div&&z(t.div),window.dispatchEvent(new Event("resize"))},350)}),go(),{cancel:()=>f(t)}},j=async r=>{const a=r||d();if(!a)return;const{runBehaviorAction:y}=yo();await y({code:`dialog:${a.renderKey}:confirm`,name:a.actionName||"确认",actionType:"SUBMIT"},async()=>{try{a.manualLoading.value=!0,await a.childInstance.value?.confirm?.(),i&&f(a)}finally{a.manualLoading.value=!1}})},f=r=>{const a=r||d();!a||!a.open.value||(a.closing=!0,a.open.value=!1)},W=r=>{const a=d();a&&(a.manualLoading.value=r)},Y=()=>d()?.loading.value??!1,G=B(()=>d()?.childInstance.value);return{render:L,cancel:f,setLoading:W,getLoading:Y,instance:G}}}export{Le as createDialogHooks,Le as default};
287
+ `,document.head.appendChild(r)}const Do=8;function F(o){const e=[];return o.querySelectorAll(".el-dialog-body__content").forEach(t=>e.push(t)),o.querySelectorAll(".el-drawer__body, .el-dialog__body").forEach(t=>{t.querySelector(".el-dialog-body__content")||e.push(t)}),e}function G(o){const e=[o];return o.querySelectorAll("*").forEach(t=>{(t.scrollHeight>t.clientHeight+1||t.scrollWidth>t.clientWidth+1)&&e.push(t)}),e}const R=new WeakSet;function Ao(o){F(o).forEach(e=>{G(e).forEach(t=>{R.has(t)||(R.add(t),Mo(t))})})}function Mo(o){let e;const t=()=>{o.classList.add("is-scrolling"),e&&window.clearTimeout(e),e=window.setTimeout(()=>o.classList.remove("is-scrolling"),600)};o.addEventListener("scroll",t,{passive:!0}),o.addEventListener("mouseenter",t),o.addEventListener("mouseleave",()=>{e&&window.clearTimeout(e),o.classList.remove("is-scrolling")})}function D(o){F(o).forEach(e=>{const t=C.get(e);if(!e.isConnected){t?.observer.disconnect(),C.delete(e);return}const r=G(e);if(H(e,r),typeof ResizeObserver>"u")return;let s=t;if(!s){const h={observer:new ResizeObserver(()=>H(e,h.targets)),targets:new Set};s=h,C.set(e,h)}const _=new Set(r);s.targets.forEach(h=>{_.has(h)||s.observer.unobserve(h)}),_.forEach(h=>{s.targets.has(h)||s.observer.observe(h)}),s.targets=_})}function H(o,e){let t=0;e.forEach(r=>{t=Math.max(t,r.offsetWidth-r.clientWidth)}),o.style.setProperty("--dialog-hooks-scrollbar",`${Math.min(Do,Math.max(0,t))}px`)}function To(o,e,t){return o===!1?{enabled:!1,scroll:t,class:void 0,contentClass:void 0}:o===!0||o===void 0?{enabled:o===!0?!0:e,scroll:t,class:void 0,contentClass:void 0}:{enabled:o.enabled??e,scroll:o.scroll??t,class:o.class,contentClass:o.contentClass}}function Bo(o,e){if(e)return e;try{const t=o.router.currentRoute.value.meta?.sysMenuData?.icon;if(t)return t}catch{}try{const t=sessionStorage.getItem("permissionStore");if(t){const r=JSON.parse(ko.parse(t).toString(yo));if(r?.activeMenuInfo?.icon)return r.activeMenuInfo.icon}}catch{}try{return mo(V).getActiveMenuInfo?.icon||""}catch{return""}}function Ae(o){return function(t){const r=[],s=()=>r[r.length-1],_=i=>{const a=w(i?.data),k=w(i?.row),v=w(i?.formData),p=i?.id??i?.taskId??i?.selectedId??a?.id??k?.id??v?.id;return p==null||p===""?"":String(p)},h=(i,a,k,v="drawer",p,X=!0)=>{Co();const{icon:Z,hideConfirm:L,hideFooter:oo,dialogBody:eo,...c}=k||{},f=To(eo,o.defaultDialogBody??!0,X),to=`${v}|${typeof i=="string"?i:i?.__name||i?.name||""}|${c.title||""}|${_(a)}`,M=x(!1),T=x(!1),l={open:x(!0),loading:$(()=>M.value||T.value),manualLoading:M,requestLoading:T,requestLoadingIds:new Set,childInstance:x(),app:null,div:null,closing:!1,renderKey:to,actionName:c.title||"确认"},lo=Object.fromEntries(Object.entries(a||{}).map(([n,u])=>[n,w(u)])),ro={...c,class:["dialog-hooks-host",...f.enabled?["dialog-hooks-body-contained"]:[],...f.scroll?[]:["dialog-hooks-no-scroll"],"dialog-hooks-scroll-auto",...Array.isArray(c.class)?c.class:c.class?[c.class]:[]]},ao=c.onClosed,I=typeof c.title=="string"&&c.title,B=I?Bo(o,Z):"",io=()=>d("div",{class:"dialog-hooks-header"},[B?d("div",{class:"dialog-hooks-header-icon"},[d(fo,{modelValue:B})]):null,d("div",{class:"dialog-hooks-header-title"},[c.title]),l.loading.value&&!L?null:d("button",{type:"button",class:"dialog-hooks-header-close",onClick:()=>m(l)},[d(P.Close)])]),g=so(()=>d(v==="drawer"?ho:go,{...ro,modelValue:l.open.value,showClose:I?!1:c.showClose??!0,onClosed(){N(l,!1),z(o,l,!1),Io(l),ao?.();const n=r.indexOf(l);n>-1&&r.splice(n,1),l.app?.unmount(),l.div?.parentNode&&l.div.parentNode.removeChild(l.div),l.app=null,l.div=null},onClose(){m(l)}},{...I?{header:io}:{},default:()=>{const n=d(i,{...lo,loading:l.loading.value,"onUpdate:loading":u=>{l.manualLoading.value=u},ref:l.childInstance});return f.enabled?d(_o,{scroll:f.scroll,class:f.class,contentClass:f.contentClass},{default:()=>n}):n},...oo?{}:{footer:()=>{if(p&&p.length){const n=p.map(u=>typeof u=="function"?u():u);return d("div",{className:"dialog-footer"},n)}return d("div",{className:"dialog-footer"},[d(q,{onClick:()=>m(l),loading:!L&&l.loading.value},"取 消"),L?null:d(q,{type:"primary",onClick:()=>Y(l),loading:l.loading.value},"确 认")])}}}));o.plugins?.forEach(n=>g.use(n)),g.use(co,{locale:po}),g.use(V),g.use(o.router);for(const[n,u]of Object.entries(P))g.component(n,u);uo(g),o.setupApp?.(g);const O=document.createElement("div");return document.body.appendChild(O),l.app=g,l.div=O,r.push(l),Lo(l),N(l,!0),z(o,l,!0),g.mount(O),no(()=>{Ao(document.body),D(document.body),l.childInstance.value?.resetQuery?.(),setTimeout(()=>{D(document.body),window.dispatchEvent(new Event("resize"))},350),setTimeout(()=>D(document.body),1200)}),bo(),{cancel:()=>m(l)}},Y=async i=>{const a=i||s();if(!a)return;const{runBehaviorAction:k}=xo();await k({code:`dialog:${a.renderKey}:confirm`,name:a.actionName||"确认",actionType:"SUBMIT"},async()=>{try{a.manualLoading.value=!0,await a.childInstance.value?.confirm?.(),t&&m(a)}finally{a.manualLoading.value=!1}})},m=i=>{const a=i||s();!a||!a.open.value||(a.closing=!0,a.open.value=!1)},K=i=>{const a=s();a&&(a.manualLoading.value=i)},J=()=>s()?.loading.value??!1,Q=$(()=>s()?.childInstance.value);return{render:h,cancel:m,setLoading:K,getLoading:J,instance:Q}}}export{Ae as createDialogHooks,Ae as default};