adtec-hnyzfc-core-package 1.7.7 → 1.8.0
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.
- package/dist/assets/package-DzZffoYf.json +235 -0
- package/dist/src/components/OperationAuth/operationAuth.vue.js +1 -1
- package/dist/src/components/shell/SubAppShell.vue.d.ts +45 -0
- package/dist/src/components/shell/SubAppShell.vue.js +1 -0
- package/dist/src/components/workflow/TaskOperation.vue.js +1 -1
- package/dist/src/components/workflow/WorkflowTodoShell.vue.d.ts +6 -2
- package/dist/src/components/workflow/WorkflowTodoShell.vue.js +5 -5
- package/dist/src/hooks/useMenuNavigate.d.ts +27 -0
- package/dist/src/hooks/useMenuNavigate.js +1 -0
- package/dist/src/hooks/useMenuParams.d.ts +32 -0
- package/dist/src/hooks/useMenuParams.js +1 -0
- package/dist/src/hooks/useOpenNewMenu.d.ts +8 -4
- package/dist/src/hooks/useOpenNewMenu.js +1 -1
- package/dist/src/hooks/usePermissionHooks.js +1 -1
- package/dist/src/hooks/useWorkflowTaskView.d.ts +43 -0
- package/dist/src/hooks/useWorkflowTaskView.js +1 -0
- package/dist/src/hooks/workflowTodo.d.ts +14 -7
- package/dist/src/hooks/workflowTodo.js +1 -1
- package/dist/src/interface/workflow/IWfTaskVo.d.ts +11 -0
- package/dist/src/utils/frontendBus.d.ts +11 -3
- package/dist/src/utils/frontendBus.js +1 -1
- package/dist/src/utils/modules.js +2 -2
- package/dist/src/utils/routeMetaParams.d.ts +16 -0
- package/dist/src/utils/routeMetaParams.js +1 -1
- package/dist/styles/element-ui.css +1 -1
- package/dist/vite/sharedRuntime.d.ts +3 -0
- package/dist/vite/sharedRuntime.js +4 -0
- package/package.json +8 -2
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "adtec-hnyzfc-core-package",
|
|
3
|
+
"version": "1.8.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": ">=20.19.0"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/src/packages/index.js",
|
|
10
|
+
"module": "./dist/src/packages/index.js",
|
|
11
|
+
"types": "./dist/src/packages/index.d.ts",
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"README.md",
|
|
15
|
+
"README.en.md"
|
|
16
|
+
],
|
|
17
|
+
"sideEffects": [
|
|
18
|
+
"**/*.css",
|
|
19
|
+
"./dist/src/config/ElementPlusConfig.js"
|
|
20
|
+
],
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"types": "./dist/src/packages/index.d.ts",
|
|
24
|
+
"import": "./dist/src/packages/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./vite/umoIntegration": {
|
|
27
|
+
"types": "./dist/vite/umoIntegration.d.ts",
|
|
28
|
+
"import": "./dist/vite/umoIntegration.js"
|
|
29
|
+
},
|
|
30
|
+
"./prebuilt/*": "./dist/prebuilt/*",
|
|
31
|
+
"./src/components/vxeReplace": null,
|
|
32
|
+
"./src/components/vxeReplace/*": null,
|
|
33
|
+
"./src/components/VxeExportDialog": null,
|
|
34
|
+
"./src/components/VxeExportDialog/*": null,
|
|
35
|
+
"./src/components/vxeGrid": null,
|
|
36
|
+
"./src/components/vxeGrid/*": null,
|
|
37
|
+
"./src/components/ElGridExportDialog": {
|
|
38
|
+
"types": "./dist/src/components/ElGridExportDialog/index.d.ts",
|
|
39
|
+
"import": "./dist/src/components/ElGridExportDialog/index.js"
|
|
40
|
+
},
|
|
41
|
+
"./src/config/VxeTableConfig": null,
|
|
42
|
+
"./src/config/VxeTableConfig.ts": null,
|
|
43
|
+
"./src/config/vxeSelectColumn": null,
|
|
44
|
+
"./src/config/vxeSelectColumn.ts": null,
|
|
45
|
+
"./src/config/vxeDragRule": null,
|
|
46
|
+
"./src/config/vxeDragRule.ts": null,
|
|
47
|
+
"./src/interface/IVxeTable": null,
|
|
48
|
+
"./src/interface/IVxeTable.ts": null,
|
|
49
|
+
"./style.css": "./dist/styles/element-ui.css",
|
|
50
|
+
"./src/css/elementUI/index.scss": "./dist/styles/element-ui.css",
|
|
51
|
+
"./src/assets/style/index.less": "./dist/styles/core.css",
|
|
52
|
+
"./src/*.vue": {
|
|
53
|
+
"types": "./dist/src/*.vue.d.ts",
|
|
54
|
+
"import": "./dist/src/*.vue.js"
|
|
55
|
+
},
|
|
56
|
+
"./src/*.ts": {
|
|
57
|
+
"types": "./dist/src/*.d.ts",
|
|
58
|
+
"import": "./dist/src/*.js"
|
|
59
|
+
},
|
|
60
|
+
"./src/*": {
|
|
61
|
+
"types": "./dist/src/*.d.ts",
|
|
62
|
+
"import": "./dist/src/*.js"
|
|
63
|
+
},
|
|
64
|
+
"./prebuilt/umo-editor": {
|
|
65
|
+
"types": "./dist/prebuilt/umo-editor/umo-editor.d.ts",
|
|
66
|
+
"import": "./dist/prebuilt/umo-editor/umo-editor.js"
|
|
67
|
+
},
|
|
68
|
+
"./vite/sharedRuntime": {
|
|
69
|
+
"types": "./dist/vite/sharedRuntime.d.ts",
|
|
70
|
+
"import": "./dist/vite/sharedRuntime.js",
|
|
71
|
+
"default": "./dist/vite/sharedRuntime.js"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"scripts": {
|
|
75
|
+
"build:vite-integration": "node scripts/build-vite-integration.mjs",
|
|
76
|
+
"prepack": "npm run build && npm run verify:package",
|
|
77
|
+
"build": "node scripts/build-package.mjs",
|
|
78
|
+
"dev:watch": "CORE_PACKAGE_WATCH=1 node scripts/build-package.mjs",
|
|
79
|
+
"build-only": "npm run build",
|
|
80
|
+
"type-check": "vue-tsc --build",
|
|
81
|
+
"verify:package": "node scripts/verify-package.mjs",
|
|
82
|
+
"lint": "eslint . --fix",
|
|
83
|
+
"format": "prettier --write src/",
|
|
84
|
+
"build:shared": "node scripts/build-shared.mjs"
|
|
85
|
+
},
|
|
86
|
+
"dependencies": {
|
|
87
|
+
"@element-plus/icons-vue": "^2.3.1",
|
|
88
|
+
"@eslint/object-schema": "3.0.2",
|
|
89
|
+
"@floating-ui/dom": "1.7.5",
|
|
90
|
+
"@tool-belt/type-predicates": "1.4.1",
|
|
91
|
+
"@types/echarts": "^5.0.0",
|
|
92
|
+
"@vueuse/components": "^13.0.0",
|
|
93
|
+
"@vueuse/core": "^13.0.0",
|
|
94
|
+
"@vxe-ui/core": "^4.4.19",
|
|
95
|
+
"@vxe-ui/plugin-export-xlsx": "4.5.4",
|
|
96
|
+
"axios": "^1.7.7",
|
|
97
|
+
"crypto-js": "^4.2.0",
|
|
98
|
+
"cropperjs": "^2.1.1",
|
|
99
|
+
"dom-to-image-more": "3.7.2",
|
|
100
|
+
"echarts": "^5.6.0",
|
|
101
|
+
"es-drager": "1.2.11",
|
|
102
|
+
"exceljs": "4.4.0",
|
|
103
|
+
"fast-glob": "3.3.3",
|
|
104
|
+
"fflate": "^0.3.8",
|
|
105
|
+
"file-saver": "2.0.5",
|
|
106
|
+
"hotkeys-js": "4.0.2",
|
|
107
|
+
"jsbarcode": "3.12.3",
|
|
108
|
+
"jsencrypt": "^3.3.2",
|
|
109
|
+
"linq-to-ts": "^1.3.0",
|
|
110
|
+
"lowlight": "3.3.0",
|
|
111
|
+
"nzh": "1.0.14",
|
|
112
|
+
"pinia": "^2.3.0",
|
|
113
|
+
"pinia-plugin-store": "^2.2.9",
|
|
114
|
+
"pretty-bytes": "7.1.0",
|
|
115
|
+
"pure-svg-code": "1.0.6",
|
|
116
|
+
"scss": "^0.2.4",
|
|
117
|
+
"scss-loader": "^0.0.1",
|
|
118
|
+
"smooth-signature": "1.0.15",
|
|
119
|
+
"socket.io-client": "^2.3.1",
|
|
120
|
+
"ts-md5": "^1.3.1",
|
|
121
|
+
"uuid": "^11.0.3",
|
|
122
|
+
"vue-demi": "^0.14.10",
|
|
123
|
+
"vue-focus-lock": "^3.0.0",
|
|
124
|
+
"vue-router": "^4.5.0",
|
|
125
|
+
"vxe-table": "4.20.11",
|
|
126
|
+
"wujie-vue3": "^1.0.24",
|
|
127
|
+
"xlsx-js-style": "^1.2.0",
|
|
128
|
+
"tdesign-vue-next": "1.18.2",
|
|
129
|
+
"yjs": "13.6.29",
|
|
130
|
+
"y-protocols": "1.0.6",
|
|
131
|
+
"y-prosemirror": "1.0.6",
|
|
132
|
+
"vue-i18n": "11.2.8",
|
|
133
|
+
"@tiptap/core": "3.20.0",
|
|
134
|
+
"@tiptap/extension-bold": "3.20.0",
|
|
135
|
+
"@tiptap/extension-code-block": "3.20.0",
|
|
136
|
+
"@tiptap/extension-code-block-lowlight": "3.20.0",
|
|
137
|
+
"@tiptap/extension-collaboration": "3.20.0",
|
|
138
|
+
"@tiptap/extension-details": "3.20.0",
|
|
139
|
+
"@tiptap/extension-document": "3.20.0",
|
|
140
|
+
"@tiptap/extension-drag-handle": "3.20.0",
|
|
141
|
+
"@tiptap/extension-drag-handle-vue-3": "3.20.0",
|
|
142
|
+
"@tiptap/extension-horizontal-rule": "3.20.0",
|
|
143
|
+
"@tiptap/extension-image": "3.20.0",
|
|
144
|
+
"@tiptap/extension-invisible-characters": "3.20.0",
|
|
145
|
+
"@tiptap/extension-link": "3.20.0",
|
|
146
|
+
"@tiptap/extension-list": "3.20.0",
|
|
147
|
+
"@tiptap/extension-mathematics": "3.20.0",
|
|
148
|
+
"@tiptap/extension-mention": "3.20.0",
|
|
149
|
+
"@tiptap/extension-node-range": "3.20.0",
|
|
150
|
+
"@tiptap/extension-subscript": "3.20.0",
|
|
151
|
+
"@tiptap/extension-superscript": "3.20.0",
|
|
152
|
+
"@tiptap/extension-table": "3.20.0",
|
|
153
|
+
"@tiptap/extension-table-of-contents": "3.20.0",
|
|
154
|
+
"@tiptap/extension-text-align": "3.20.0",
|
|
155
|
+
"@tiptap/extension-text-style": "3.20.0",
|
|
156
|
+
"@tiptap/extension-typography": "3.20.0",
|
|
157
|
+
"@tiptap/extension-unique-id": "3.20.0",
|
|
158
|
+
"@tiptap/extensions": "3.20.0",
|
|
159
|
+
"@tiptap/pm": "3.20.0",
|
|
160
|
+
"@tiptap/starter-kit": "3.20.0",
|
|
161
|
+
"@tiptap/suggestion": "3.20.0",
|
|
162
|
+
"@tiptap/vue-3": "3.20.0",
|
|
163
|
+
"@tiptap/y-tiptap": "3.0.9"
|
|
164
|
+
},
|
|
165
|
+
"peerDependencies": {
|
|
166
|
+
"@tiptap/extension-collaboration": "3.20.0",
|
|
167
|
+
"@tiptap/y-tiptap": "3.0.2",
|
|
168
|
+
"element-plus": "^2.14.4",
|
|
169
|
+
"vue": "^3.5.41",
|
|
170
|
+
"y-prosemirror": "1.2.15",
|
|
171
|
+
"y-protocols": "1.0.6",
|
|
172
|
+
"yjs": "13.6.29"
|
|
173
|
+
},
|
|
174
|
+
"devDependencies": {
|
|
175
|
+
"@types/crypto-js": "^4.2.2",
|
|
176
|
+
"@types/node": "^22.10.2",
|
|
177
|
+
"@vitejs/plugin-vue": "^5.2.1",
|
|
178
|
+
"@vitejs/plugin-vue-jsx": "^4.1.1",
|
|
179
|
+
"@vue-macros/reactivity-transform": "3.1.2",
|
|
180
|
+
"@vue/eslint-config-prettier": "^10.1.0",
|
|
181
|
+
"@vue/eslint-config-typescript": "^14.1.3",
|
|
182
|
+
"@vue/tsconfig": "^0.7.0",
|
|
183
|
+
"element-plus": "2.14.4",
|
|
184
|
+
"esbuild": "^0.25.12",
|
|
185
|
+
"eslint": "^9.14.0",
|
|
186
|
+
"eslint-plugin-vue": "^9.30.0",
|
|
187
|
+
"less": "^4.2.0",
|
|
188
|
+
"npm-run-all2": "^7.0.2",
|
|
189
|
+
"prettier": "^3.3.3",
|
|
190
|
+
"sass-embedded": "^1.83.1",
|
|
191
|
+
"typescript": "~5.6.3",
|
|
192
|
+
"unplugin-auto-import": "^21.0.0",
|
|
193
|
+
"unplugin-vue-components": "^32.1.0",
|
|
194
|
+
"vite": "^6.0.5",
|
|
195
|
+
"vue": "^3.5.41",
|
|
196
|
+
"vue-tsc": "^2.1.10"
|
|
197
|
+
},
|
|
198
|
+
"description": "湖南烟支辅材项目 Vue 3 前端核心依赖包。",
|
|
199
|
+
"author": "",
|
|
200
|
+
"license": "ISC",
|
|
201
|
+
"pnpm": {
|
|
202
|
+
"overrides": {
|
|
203
|
+
"@tiptap/core": "3.20.0",
|
|
204
|
+
"@tiptap/extension-bold": "3.20.0",
|
|
205
|
+
"@tiptap/extension-code-block": "3.20.0",
|
|
206
|
+
"@tiptap/extension-code-block-lowlight": "3.20.0",
|
|
207
|
+
"@tiptap/extension-collaboration": "3.20.0",
|
|
208
|
+
"@tiptap/extension-details": "3.20.0",
|
|
209
|
+
"@tiptap/extension-document": "3.20.0",
|
|
210
|
+
"@tiptap/extension-drag-handle": "3.20.0",
|
|
211
|
+
"@tiptap/extension-drag-handle-vue-3": "3.20.0",
|
|
212
|
+
"@tiptap/extension-horizontal-rule": "3.20.0",
|
|
213
|
+
"@tiptap/extension-image": "3.20.0",
|
|
214
|
+
"@tiptap/extension-invisible-characters": "3.20.0",
|
|
215
|
+
"@tiptap/extension-link": "3.20.0",
|
|
216
|
+
"@tiptap/extension-list": "3.20.0",
|
|
217
|
+
"@tiptap/extension-mathematics": "3.20.0",
|
|
218
|
+
"@tiptap/extension-mention": "3.20.0",
|
|
219
|
+
"@tiptap/extension-node-range": "3.20.0",
|
|
220
|
+
"@tiptap/extension-subscript": "3.20.0",
|
|
221
|
+
"@tiptap/extension-superscript": "3.20.0",
|
|
222
|
+
"@tiptap/extension-table": "3.20.0",
|
|
223
|
+
"@tiptap/extension-table-of-contents": "3.20.0",
|
|
224
|
+
"@tiptap/extension-text-align": "3.20.0",
|
|
225
|
+
"@tiptap/extension-text-style": "3.20.0",
|
|
226
|
+
"@tiptap/extension-typography": "3.20.0",
|
|
227
|
+
"@tiptap/extension-unique-id": "3.20.0",
|
|
228
|
+
"@tiptap/extensions": "3.20.0",
|
|
229
|
+
"@tiptap/pm": "3.20.0",
|
|
230
|
+
"@tiptap/starter-kit": "3.20.0",
|
|
231
|
+
"@tiptap/suggestion": "3.20.0",
|
|
232
|
+
"@tiptap/vue-3": "3.20.0"
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineComponent as H,computed as a,isVNode as p,h as n,resolveComponent as c,resolveDynamicComponent as
|
|
1
|
+
import{defineComponent as H,computed as a,isVNode as p,h as n,resolveComponent as c,resolveDynamicComponent as A,cloneVNode as J}from"vue";import K from"../../hooks/useBehaviorAction.js";import Y from"../../hooks/useOperationAuth.js";import{_ as $}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../utils/behaviorTrack.js";import"axios";import"crypto-js/enc-base64";import"crypto-js/enc-utf8";import"../../utils/uuid.js";import"uuid";import"../../utils/behaviorContext.js";import"../../utils/encrypt.js";import"jsencrypt";import"../../utils/dateTime.js";import"vue-router";import"../../stores/permissionStore.js";import"pinia";import"../../utils/frontendBus.js";import"../../utils/operationAuth.js";import"../../stores/userInfoStore.js";import"../../utils/userSessionStorage.js";const N={primary:"var(--el-color-primary)",success:"var(--el-color-success)",info:"var(--el-color-info)",warning:"var(--el-color-warning)",danger:"var(--el-color-danger)",error:"var(--el-color-danger)"},j=H({name:"OperationAuth",props:{operCode:{type:[String,Array],required:!0},menuCode:String,noConfig:Boolean,loadType:String,icon:String,remark:String,alias:String,color:String,displayMode:{type:String,default:"button"}},setup(l,{slots:i}){const{getOperation:B}=Y(),{runBehaviorAction:L}=K(),T=a(()=>Array.isArray(l.operCode)?l.operCode:[l.operCode]),m=a(()=>B(T.value,l.menuCode)),V=a(()=>!!m.value),z=a(()=>{const e=l.remark??m.value?.remark;if(!e)return{alias:"",color:""};try{const t=JSON.parse(e);return{alias:t?.aliases?.alias1||t?.aliases?.alias||"",color:t?.color||t?.icon?.color||t?.text?.color||""}}catch{return{alias:"",color:""}}}),s=a(()=>(l.icon??m.value?.icon??"").trim()),C=a(()=>l.alias||z.value.alias||m.value?.name||""),S=a(()=>m.value?.code||T.value[0]||""),f=a(()=>C.value||S.value||"未命名操作"),y=a(()=>({"data-behavior-operation-code":S.value,"data-behavior-operation-name":f.value,"data-behavior-scope":"manual","data-track-code":S.value,"data-track-name":f.value})),b=a(()=>l.color||z.value.color||""),v=a(()=>b.value.trim().toLowerCase()),u=a(()=>v.value!==""&&v.value in N),h=a(()=>{if(u.value)return v.value==="error"?"danger":v.value}),g=a(()=>{if(u.value)return;const e=b.value.trim();if(e)return{color:N[v.value]||e}}),x=a(()=>l.loadType??m.value?.loadType??""),k=a(()=>String(x.value??"")),I=a(()=>{const e=i.default?.()[0];if(!e||!p(e))return!1;const t=e.type||{},r=String(t?.name||t?.__name||"").replace(/[^a-zA-Z]/g,"");return/^elicon/i.test(r)?!0:/^elbutton$/i.test(r)&&!!e.props?.icon}),P=a(()=>{const e=i.default?.()[0];if(!e||!p(e))return!1;const t=e.type||{};return String(t?.name||t?.__name||"").replace(/[^a-zA-Z]/g,"").toLowerCase()==="elbutton"&&k.value==="20"}),_=a(()=>l.displayMode==="menuItem"?"menuItem":l.noConfig?"slot":P.value||I.value?"icon":k.value==="10"?"text":k.value==="20"?"icon":k.value==="30"?"iconText":"slot"),M=()=>i.default?.()[0]?.props?.onClick,w=()=>{const e=i.default?.()[0];return p(e)&&e.props?.["data-behavior-scope"]==="manual"},O=e=>{const t=M();return Array.isArray(t)?t.reduce((o,r)=>typeof r=="function"?r(...e):o,void 0):typeof t=="function"?t(...e):void 0},d=(...e)=>w()?O(e):L({code:S.value,name:f.value,actionType:"CLICK"},()=>O(e)),Z=e=>{if(e.type==="button")return!0;const t=e.type,o=String(t?.name||t?.__name||"").replace(/[^a-zA-Z]/g,"").toLowerCase();return o==="elbutton"||o==="eliconbtn"||o==="eliconsearch"},E=e=>{const t=e.type;return String(t?.name||t?.__name||"").replace(/[^a-zA-Z]/g,"").toLowerCase()==="eliconbtn"},W=e=>u.value||!E(e)?{}:{neutral:!0},R=()=>(i.default?.()||[]).map(t=>{if(!p(t)||!Z(t))return t;const o=w(),r=J(t,{...y.value,...o?{}:{onClick:d},type:u.value?h.value:void 0,...W(t),style:b.value.trim()?g.value:void 0});return!o&&r.props&&(r.props.onClick=d),r});return()=>{if(!V.value)return null;if(_.value==="icon"){const e=i.default?.()[0],t=p(e)?e.props||{}:{};if(P.value){const o={...t};delete o.modelValue,delete o.tip,delete o.elementType,delete o.neutral,delete o.icon;const r=s.value||"adtec-tips",q=n(c("el-icon"),{},()=>r.startsWith("adtec-")?n("svg",{class:"icon","aria-hidden":"true"},[n("use",{href:"#"+r})]):n(A(r))),D=n(c("el-button"),{...o,...y.value,type:u.value?h.value:void 0,title:f.value,"aria-label":f.value,style:[o.style,g.value],onClick:d},{icon:()=>q});return n(c("el-tooltip"),{content:f.value,placement:"top"},{default:()=>D})}return n(c("el-icon-btn"),{...t,...y.value,modelValue:s.value||t.modelValue||"adtec-tips",tip:C.value||t.tip,type:u.value?h.value:void 0,neutral:!u.value,style:g.value,onClick:d})}if(_.value==="text"){const e=i.default?.()[0],o={...p(e)?e.props||{}:{}};return delete o.modelValue,delete o.tip,delete o.icon,n(c("el-button"),{...o,...y.value,type:u.value?h.value:void 0,size:I.value?"small":o.size,style:[o.style,g.value],onClick:d},()=>C.value)}if(_.value==="iconText"){const e=i.default?.()[0],t=p(e)?e.props||{}:{},o=s.value?n(c("el-icon"),{},()=>s.value.startsWith("adtec-")?n("svg",{class:"icon","aria-hidden":"true"},[n("use",{href:"#"+s.value})]):n(A(s.value))):void 0;return n(c("el-button"),{...t,...y.value,type:h.value,style:[t.style,g.value],onClick:d},[o,n("span",{},C.value)])}if(_.value==="menuItem"){const e=s.value,t=v.value?{color:N[v.value]||b.value.trim()}:void 0;return n("span",{...y.value,class:"operation-auth-menu-item",style:t,onClick:d},[e?n(c("el-icon"),{},()=>e.startsWith("adtec-")?n("svg",{class:"icon","aria-hidden":"true"},[n("use",{href:"#"+e})]):n(A(e))):void 0,n("span",{},C.value)])}return R()}}}),ye=$(j,[["__scopeId","data-v-652290b3"]]);export{ye as default};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ISysMenuInfoVo } from '../../interface/ISysMenuInfoVo';
|
|
2
|
+
/** 子应用额外的业务总线监听(待办、流程详情、组件消息等),由各子应用提供 */
|
|
3
|
+
export interface ISubAppBusListener {
|
|
4
|
+
event: string;
|
|
5
|
+
handler: (...args: any[]) => void;
|
|
6
|
+
}
|
|
7
|
+
type __VLS_Props = {
|
|
8
|
+
/** 应用模块码:WORKFLOW / BASIC / YZFC */
|
|
9
|
+
applicationModule: string;
|
|
10
|
+
/** 菜单组件映射(各子应用的 import.meta.glob 结果,按 /src/... 路径索引) */
|
|
11
|
+
modules: Record<string, () => Promise<any>>;
|
|
12
|
+
/** 默认页路由名(工作流子应用是 default,业务/基础数据是 defaultIndex) */
|
|
13
|
+
defaultRouteName?: string;
|
|
14
|
+
/** 业务总线监听(会被统一注册/解绑) */
|
|
15
|
+
busListeners?: ISubAppBusListener[];
|
|
16
|
+
/** 外壳挂载后(注册完总线)的额外初始化,如恢复待办抽屉 */
|
|
17
|
+
onShellMounted?: () => void;
|
|
18
|
+
/** 外壳卸载时的额外清理 */
|
|
19
|
+
onShellUnmounted?: () => void;
|
|
20
|
+
/** wujie 环境下预热默认页(各子应用动态 import 自己的默认页) */
|
|
21
|
+
preloadDefaultView?: () => void;
|
|
22
|
+
};
|
|
23
|
+
declare var __VLS_1: {};
|
|
24
|
+
type __VLS_Slots = {} & {
|
|
25
|
+
popup?: (props: typeof __VLS_1) => any;
|
|
26
|
+
};
|
|
27
|
+
declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {
|
|
28
|
+
openMenu: (menuData: ISysMenuInfoVo & {
|
|
29
|
+
path?: string;
|
|
30
|
+
}, params?: unknown) => Promise<void>;
|
|
31
|
+
notifyPageReady: (menuCode?: string | symbol | null) => void;
|
|
32
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
33
|
+
defaultRouteName: string;
|
|
34
|
+
busListeners: ISubAppBusListener[];
|
|
35
|
+
onShellMounted: () => void;
|
|
36
|
+
onShellUnmounted: () => void;
|
|
37
|
+
preloadDefaultView: () => void;
|
|
38
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
39
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
40
|
+
export default _default;
|
|
41
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
42
|
+
new (): {
|
|
43
|
+
$slots: S;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{defineComponent as Q,ref as M,computed as S,onMounted as z,onUnmounted as J,resolveComponent as K,resolveDirective as Y,withDirectives as $,openBlock as y,createElementBlock as X,renderSlot as Z,createElementVNode as D,createVNode as j,withCtx as F,Transition as ee,createBlock as I,KeepAlive as oe,resolveDynamicComponent as te,unref as R,createCommentVNode as ne,h as b,nextTick as N}from"vue";import{useRoute as ae,useRouter as ie}from"vue-router";import{frontendBus as p}from"../../utils/frontendBus.js";import{wujieLifecycleBus as r}from"../../utils/wujieLifecycleBus.js";import{useGlobalLoading as ue}from"../../utils/globalLoading.js";import re from"../../hooks/useListenerHooks.js";import{menuParamsToRouteQuery as se}from"../../utils/routeMetaParams.js";import{patchWujiePopperCoordinates as le}from"../../utils/patchWujiePopperCoordinates.js";import{_ as de}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";const ce={class:"app-root"},pe={class:"subapp-main"},fe=Q({__name:"SubAppShell",props:{applicationModule:{},modules:{},defaultRouteName:{default:"defaultIndex"},busListeners:{default:()=>[]},onShellMounted:{type:Function,default:void 0},onShellUnmounted:{type:Function,default:void 0},preloadDefaultView:{type:Function,default:void 0}},setup(P,{expose:A}){const o=P,a=ae(),d=ie();re({},o.applicationModule);const u=M([]),k=S(()=>u.value),L=new Map,f=typeof window<"u"&&!!window.__POWERED_BY_WUJIE__,{loading:T}=ue(()=>a.name),q=S(()=>!f&&T.value),W=()=>sessionStorage.getItem("embedMode")==="1",m=M(f),s=M(null);let l=null,h=0;const v=e=>{r.emit(o.applicationModule+"PageReadyBus",e??a.name)},B=()=>{typeof window>"u"||window.dispatchEvent(new Event("resize"))},V=()=>{l&&clearTimeout(l),l=setTimeout(()=>{const e=++h;requestAnimationFrame(()=>{requestAnimationFrame(async()=>{e===h&&(m.value=!1,s.value=null,await N(),le(!0),B(),requestAnimationFrame(()=>{e===h&&(v(a.name),l=null,requestAnimationFrame(()=>{B()}))}))})})},0)},g=()=>{a.name===o.defaultRouteName&&m.value||m.value&&!s.value||s.value&&a.name!==s.value||V()},O=(e,t)=>{if(!e)return null;const i=t;let n=L.get(i);return n||(n={name:i,__isPageWrapper:!0,mounted(){g()},activated(){g()},render(){return b("div",{className:W()?"vaf-page-wrapper vaf-page-wrapper--embed":"vaf-page-wrapper"},e)}},L.set(i,n)),b(n)},_=async(e,t)=>{const i=o.modules[String(e.path||"")];if(!i)return;const n=d.getRoutes().find(w=>w.name===e.code);n?n.meta={...n.meta,sysMenuData:e,applicationModule:e.applicationModule}:d.addRoute({name:e.code,path:"/"+e.code,meta:{sysMenuData:e,applicationModule:e.applicationModule},component:async()=>{const w=await i();return w.default.__name=e.code,b(w.default)}});const c=se(t);try{await d.push({name:e.code,...c?{query:c}:{}})}catch{}u.value.includes(e.code)||u.value.push(e.code),await N(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{g(),f||v(e.code)})})},U=(e,t)=>{e?.applicationModule===o.applicationModule&&(s.value=e.code,_(e,t))},H=async()=>{try{await d.push({name:o.defaultRouteName}).catch(()=>{}),u.value.includes(o.defaultRouteName)||u.value.push(o.defaultRouteName)}finally{m.value||v(o.defaultRouteName)}},C=()=>{const e=window.location.hash;if(e&&e.startsWith("#/src/")){const t=e.slice(1);_({code:"hash-"+t.replace(/[^\w]+/g,"-"),path:t})}},E=()=>{C()},x=e=>{if(e?.applicationModule===o.applicationModule){const t=u.value.indexOf(e.code);t>=0&&u.value.splice(t,1)}},G=d.beforeEach((e,t)=>{e.name!==t.name&&(h++,s.value=e.name),sessionStorage.setItem("activationRouteCode",e.name)});return z(()=>{window.hasOwnProperty("pdfjsLib")||Object.defineProperty(window,"pdfjsLib",{get:()=>window.parent?.pdfjsLib,set:e=>{window.parent.pdfjsLib=e},enumerable:!0,configurable:!0}),r.off(o.applicationModule+"RouterChangeBus"),r.off(o.applicationModule+"defaultIndexBus"),r.on(o.applicationModule+"RouterChangeBus",U),r.on(o.applicationModule+"defaultIndexBus",H),p.on("wujie-router-close",x),o.busListeners.forEach(({event:e,handler:t})=>{p.off(e,t),p.on(e,t)}),o.onShellMounted?.(),f&&o.preloadDefaultView?.(),window.addEventListener("hashchange",E),C()}),J(()=>{G(),l&&clearTimeout(l),r.off(o.applicationModule+"RouterChangeBus"),r.off(o.applicationModule+"defaultIndexBus"),p.off("wujie-router-close",x),o.busListeners.forEach(({event:e,handler:t})=>{p.off(e,t)}),o.onShellUnmounted?.(),window.removeEventListener("hashchange",E)}),A({openMenu:_,notifyPageReady:v}),(e,t)=>{const i=K("router-view"),n=Y("loading");return $((y(),X("div",ce,[Z(e.$slots,"popup",{},void 0,!0),D("div",pe,[j(i,null,{default:F(({Component:c})=>[j(ee,{name:"page-open",mode:"out-in"},{default:F(()=>[(y(),I(oe,{include:k.value},[c?(y(),I(te(O(c,R(a).name)),{name:R(a).name,key:R(a).name},null,8,["name"])):ne("v-if",!0)],1032,["include"]))]),_:2},1024)]),_:1})])])),[[n,q.value]])}}}),be=de(fe,[["__scopeId","data-v-e2dfea0d"]]);export{be as default};
|
|
@@ -1 +1 @@
|
|
|
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 oe,withCtx as u,renderSlot as V,createBlock as p,createTextVNode as d,toDisplayString as k,createCommentVNode as m,unref as ae,Fragment as re,mergeModels as W}from"vue";import D from"../../api/workflow/workflowInstApi.js";import ie from"./components/SelectAssigneeDialog.vue.js";import{_ as ne}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 me}from"../../hooks/workflowTodo.js";import{_ as pe}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../../chunks/request-ea_7oxLz.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"../../hooks/useFileOpen.js";import"../../utils/fileDownload.js";import"../../api/DocumentApi.js";import"../../utils/officePreviewUtil.js";import"../../utils/uploadAccept.js";import"../../hooks/useDeleteConfirmHooks.js";import"../../hooks/useBehaviorAction.js";import"../../utils/buildUploadHeaders.js";import"pinia";import"../../utils/userSessionStorage.js";import"../../../chunks/ElTextarea-CRk-I9iq.js";import"../../hooks/createDialogHooks.js";import"../../stores/storeConfig.js";import"pinia-plugin-store";import"../../config/ElementPlusConfig.js";import"../../utils/patchWujiePopperCoordinates.js";import"../../config/VxeTableConfig.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"../vxeReplace/index.js";import"../tooltip/index.js";import"../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"element-plus/es/locale/lang/zh-cn";import"../../hooks/useListenerHooks.js";import"../../stores/permissionStore.js";import"../../utils/operationAuth.js";import"../icon/ElIcons.vue.js";import"../ElDialogBody/ElDialogBody.vue.js";import"../../hooks/usePermissionHooks.js";import"vue-router";import"../../utils/routeMetaParams.js";import"../../hooks/useOpenNewMenu.js";import"../../utils/commonUtils.js";import"../../utils/tree.js";const de=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(a,{expose:E,emit:A}){const N=w(),b=v(null),i=a,n=Z(a,"butLoading"),R=A,e=v({taskId:"",comment:""}),O=i.renderDialog,g=(t,o,r,x,f,X)=>{if(!O){console.warn("[TaskOperation] 未注入 renderDialog,无法打开操作弹窗(请通过 props 传入 useDialogHooks 的 render)");return}O(t,o,r,x,f,X)},U=async()=>{if(typeof i.onProcessDetail=="function"){i.onProcessDetail(e.value);return}await ue(e.value)},T=_(()=>e.value?.operations==="assignee"),S=v(""),y=v(),K=v([{source:"edit"}]),j=async()=>{await me(v(e.value),K)},c=async t=>{if(t&&(S.value=t),!e.value)return;y.value={...e.value};let o=!1;if(t==="complete"&&i.params?.beforeCompleteFunction)try{const r=await i.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&&(o=!0),e.value={...e.value,...r}}catch{return}if(t==="addMulti"||t==="minusMulti")g(ne,{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&&i.params?.ignoreConfirm){await H();return}g(se,{taskVo:e.value,dialogType:t,taskOperate:i?.params,commentReadonly:o,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(n.value=!0,i.params?.completeFunction){const o=await i.params?.completeFunction(t);o&&o?.taskId?e.value=o:e.value=await D.getTaskInst(e.value.taskId)}else e.value=await D.taskComplete(t)}catch(o){q.messageError(o);return}finally{n.value=!1}try{await h({actionType:"complete",taskVo:e.value,askVo:t})}catch{}},M=t=>{y.value={...e.value},g(ie,{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,o)=>{const r={...t,actionType:t.actionType||S.value,originTask:t.originTask??y.value,taskVo:t.taskVo??e.value};await le(i.params,r),o?.refresh!==!1&&I(t.taskVo)},C=t=>h({...t,originTask:t.originTask??y.value},{refresh:!1}),F=(t,o)=>t?t.classList?.contains(o)?t:F(t.parentElement,o):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(i.taskInfo)e.value=i.taskInfo,e.value.finishTime&&console.log("该待办已完成!");else if(i.taskId)try{J(),e.value=await D.getTaskInst(i.taskId),e.value.finishTime&&console.log("该待办已完成!")}catch(t){q.messageError(t)}finally{Q()}};return E({reload:()=>{B()}}),te(()=>i.taskId,B),(t,o)=>{const r=$("el-button"),x=$("el-flex");return l(),P("div",{ref_key:"taskFlexRef",ref:b,class:"task-operation"},[oe(x,{align:"center",justify:"flex-end"},{default:u(()=>[V(t.$slots,"left",{},void 0,!0),a.params?.cancelBtnText!==""?(l(),p(r,{key:0,loading:n.value||s.value,onClick:a.params?.cancelFunction},{default:u(()=>[d(k(a.params?.cancelBtnText??"取消"),1)]),_:1},8,["loading","onClick"])):m("v-if",!0),a.showProcessBtn&&e.value?.procInsId?(l(),p(r,{key:1,type:"info",loading:n.value||s.value,onClick:U},{default:u(()=>[...o[7]||(o[7]=[d(" 流程信息 ",-1)])]),_:1},8,["loading"])):m("v-if",!0),!T.value&&e.value?.taskId&&a.showCurWorkBth&&!a.showOperationsBtn?(l(),p(r,{key:2,loading:n.value||s.value,type:"warning",disabled:e.value?.taskId&&(!e.value?.operations||ae(N).getUserInfo.userCode!==e.value?.assigneeId),onClick:j},{default:u(()=>[d(k(e.value.taskName),1)]),_:1},8,["loading","disabled"])):m("v-if",!0),T.value?(l(),p(r,{key:3,type:"primary",loading:n.value||s.value,onClick:o[0]||(o[0]=f=>c("assignee"))},{default:u(()=>[...o[8]||(o[8]=[d("指定执行人 ",-1)])]),_:1},8,["loading"])):m("v-if",!0),!T.value&&e.value?.taskId&&e.value?.operations&&a.showOperationsBtn?(l(),P(re,{key:4},[a.params?.saveBtnText?(l(),p(r,{key:0,loading:n.value||s.value,type:"primary",onClick:a.params?.saveFunction},{default:u(()=>[d(k(a.params?.saveBtnText),1)]),_:1},8,["loading","onClick"])):m("v-if",!0),e.value?.operations.indexOf("addMulti")>-1?(l(),p(r,{key:1,type:"warning",loading:n.value||s.value,onClick:o[1]||(o[1]=f=>c("addMulti"))},{default:u(()=>[...o[9]||(o[9]=[d("加签 ",-1)])]),_:1},8,["loading"])):m("v-if",!0),e.value?.operations.indexOf("minusMulti")>-1?(l(),p(r,{key:2,type:"danger",loading:n.value||s.value,onClick:o[2]||(o[2]=f=>c("minusMulti"))},{default:u(()=>[...o[10]||(o[10]=[d("减签 ",-1)])]),_:1},8,["loading"])):m("v-if",!0),e.value?.operations.indexOf("refuse")>-1&&a.params?.refuseBtnText!==""?(l(),p(r,{key:3,loading:n.value||s.value,type:"danger",onClick:o[3]||(o[3]=f=>c("refuse"))},{default:u(()=>[d(k(a.params?.refuseBtnText??"终止"),1)]),_:1},8,["loading"])):m("v-if",!0),e.value?.operations.indexOf("transfer")>-1&&a.params?.transferBtnText!==""?(l(),p(r,{key:4,loading:n.value||s.value,type:"warning",onClick:o[4]||(o[4]=f=>c("transfer"))},{default:u(()=>[d(k(a.params?.transferBtnText??"转办"),1)]),_:1},8,["loading"])):m("v-if",!0),e.value?.operations.indexOf("back")>-1&&a.params?.backBtnText!==""?(l(),p(r,{key:5,loading:n.value||s.value,type:"danger",onClick:o[5]||(o[5]=f=>c("back"))},{default:u(()=>[d(k(a.params?.backBtnText??"驳回"),1)]),_:1},8,["loading"])):m("v-if",!0),e.value?.operations.indexOf("complete")>-1&&a.params?.completeBtnText!==""?(l(),p(r,{key:6,loading:n.value||s.value,type:"primary",onClick:o[6]||(o[6]=f=>c("complete"))},{default:u(()=>[d(k(a.params?.completeBtnText??"同意"),1)]),_:1},8,["loading"])):m("v-if",!0)],64)):m("v-if",!0),V(t.$slots,"right",{},void 0,!0)]),_:3})],512)}}}),Ht=pe(de,[["__scopeId","data-v-a84c5805"]]);export{Ht 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 oe,withCtx as u,renderSlot as V,createBlock as p,createTextVNode as d,toDisplayString as k,createCommentVNode as m,unref as ae,Fragment as re,mergeModels as W}from"vue";import D from"../../api/workflow/workflowInstApi.js";import ie from"./components/SelectAssigneeDialog.vue.js";import{_ as ne}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 me}from"../../hooks/workflowTodo.js";import{_ as pe}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../../chunks/request-ea_7oxLz.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"../../hooks/useFileOpen.js";import"../../utils/fileDownload.js";import"../../api/DocumentApi.js";import"../../utils/officePreviewUtil.js";import"../../utils/uploadAccept.js";import"../../hooks/useDeleteConfirmHooks.js";import"../../hooks/useBehaviorAction.js";import"../../utils/buildUploadHeaders.js";import"pinia";import"../../utils/userSessionStorage.js";import"../../../chunks/ElTextarea-CRk-I9iq.js";import"../../hooks/createDialogHooks.js";import"../../stores/storeConfig.js";import"pinia-plugin-store";import"../../config/ElementPlusConfig.js";import"../../utils/patchWujiePopperCoordinates.js";import"../../config/VxeTableConfig.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"../vxeReplace/index.js";import"../tooltip/index.js";import"../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"element-plus/es/locale/lang/zh-cn";import"../../hooks/useListenerHooks.js";import"../../stores/permissionStore.js";import"../../utils/operationAuth.js";import"../icon/ElIcons.vue.js";import"../ElDialogBody/ElDialogBody.vue.js";import"vue-router";import"../../hooks/useMenuNavigate.js";import"../../hooks/usePermissionHooks.js";import"../../utils/routeMetaParams.js";import"../../utils/commonUtils.js";import"../../utils/tree.js";const de=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(a,{expose:E,emit:A}){const N=w(),b=v(null),i=a,n=Z(a,"butLoading"),R=A,e=v({taskId:"",comment:""}),O=i.renderDialog,g=(t,o,r,x,f,X)=>{if(!O){console.warn("[TaskOperation] 未注入 renderDialog,无法打开操作弹窗(请通过 props 传入 useDialogHooks 的 render)");return}O(t,o,r,x,f,X)},U=async()=>{if(typeof i.onProcessDetail=="function"){i.onProcessDetail(e.value);return}await ue(e.value)},T=_(()=>e.value?.operations==="assignee"),S=v(""),y=v(),K=v([]),j=async()=>{await me(v(e.value),K)},c=async t=>{if(t&&(S.value=t),!e.value)return;y.value={...e.value};let o=!1;if(t==="complete"&&i.params?.beforeCompleteFunction)try{const r=await i.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&&(o=!0),e.value={...e.value,...r}}catch{return}if(t==="addMulti"||t==="minusMulti")g(ne,{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&&i.params?.ignoreConfirm){await H();return}g(se,{taskVo:e.value,dialogType:t,taskOperate:i?.params,commentReadonly:o,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(n.value=!0,i.params?.completeFunction){const o=await i.params?.completeFunction(t);o&&o?.taskId?e.value=o:e.value=await D.getTaskInst(e.value.taskId)}else e.value=await D.taskComplete(t)}catch(o){q.messageError(o);return}finally{n.value=!1}try{await h({actionType:"complete",taskVo:e.value,askVo:t})}catch{}},M=t=>{y.value={...e.value},g(ie,{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,o)=>{const r={...t,actionType:t.actionType||S.value,originTask:t.originTask??y.value,taskVo:t.taskVo??e.value};await le(i.params,r),o?.refresh!==!1&&I(t.taskVo)},C=t=>h({...t,originTask:t.originTask??y.value},{refresh:!1}),F=(t,o)=>t?t.classList?.contains(o)?t:F(t.parentElement,o):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(i.taskInfo)e.value=i.taskInfo,e.value.finishTime&&console.log("该待办已完成!");else if(i.taskId)try{J(),e.value=await D.getTaskInst(i.taskId),e.value.finishTime&&console.log("该待办已完成!")}catch(t){q.messageError(t)}finally{Q()}};return E({reload:()=>{B()}}),te(()=>i.taskId,B),(t,o)=>{const r=$("el-button"),x=$("el-flex");return l(),P("div",{ref_key:"taskFlexRef",ref:b,class:"task-operation"},[oe(x,{align:"center",justify:"flex-end"},{default:u(()=>[V(t.$slots,"left",{},void 0,!0),a.params?.cancelBtnText!==""?(l(),p(r,{key:0,loading:n.value||s.value,onClick:a.params?.cancelFunction},{default:u(()=>[d(k(a.params?.cancelBtnText??"取消"),1)]),_:1},8,["loading","onClick"])):m("v-if",!0),a.showProcessBtn&&e.value?.procInsId?(l(),p(r,{key:1,type:"info",loading:n.value||s.value,onClick:U},{default:u(()=>[...o[7]||(o[7]=[d(" 流程信息 ",-1)])]),_:1},8,["loading"])):m("v-if",!0),!T.value&&e.value?.taskId&&a.showCurWorkBth&&!a.showOperationsBtn?(l(),p(r,{key:2,loading:n.value||s.value,type:"warning",disabled:e.value?.taskId&&(!e.value?.operations||ae(N).getUserInfo.userCode!==e.value?.assigneeId),onClick:j},{default:u(()=>[d(k(e.value.taskName),1)]),_:1},8,["loading","disabled"])):m("v-if",!0),T.value?(l(),p(r,{key:3,type:"primary",loading:n.value||s.value,onClick:o[0]||(o[0]=f=>c("assignee"))},{default:u(()=>[...o[8]||(o[8]=[d("指定执行人 ",-1)])]),_:1},8,["loading"])):m("v-if",!0),!T.value&&e.value?.taskId&&e.value?.operations&&a.showOperationsBtn?(l(),P(re,{key:4},[a.params?.saveBtnText?(l(),p(r,{key:0,loading:n.value||s.value,type:"primary",onClick:a.params?.saveFunction},{default:u(()=>[d(k(a.params?.saveBtnText),1)]),_:1},8,["loading","onClick"])):m("v-if",!0),e.value?.operations.indexOf("addMulti")>-1?(l(),p(r,{key:1,type:"warning",loading:n.value||s.value,onClick:o[1]||(o[1]=f=>c("addMulti"))},{default:u(()=>[...o[9]||(o[9]=[d("加签 ",-1)])]),_:1},8,["loading"])):m("v-if",!0),e.value?.operations.indexOf("minusMulti")>-1?(l(),p(r,{key:2,type:"danger",loading:n.value||s.value,onClick:o[2]||(o[2]=f=>c("minusMulti"))},{default:u(()=>[...o[10]||(o[10]=[d("减签 ",-1)])]),_:1},8,["loading"])):m("v-if",!0),e.value?.operations.indexOf("refuse")>-1&&a.params?.refuseBtnText!==""?(l(),p(r,{key:3,loading:n.value||s.value,type:"danger",onClick:o[3]||(o[3]=f=>c("refuse"))},{default:u(()=>[d(k(a.params?.refuseBtnText??"终止"),1)]),_:1},8,["loading"])):m("v-if",!0),e.value?.operations.indexOf("transfer")>-1&&a.params?.transferBtnText!==""?(l(),p(r,{key:4,loading:n.value||s.value,type:"warning",onClick:o[4]||(o[4]=f=>c("transfer"))},{default:u(()=>[d(k(a.params?.transferBtnText??"转办"),1)]),_:1},8,["loading"])):m("v-if",!0),e.value?.operations.indexOf("back")>-1&&a.params?.backBtnText!==""?(l(),p(r,{key:5,loading:n.value||s.value,type:"danger",onClick:o[5]||(o[5]=f=>c("back"))},{default:u(()=>[d(k(a.params?.backBtnText??"驳回"),1)]),_:1},8,["loading"])):m("v-if",!0),e.value?.operations.indexOf("complete")>-1&&a.params?.completeBtnText!==""?(l(),p(r,{key:6,loading:n.value||s.value,type:"primary",onClick:o[6]||(o[6]=f=>c("complete"))},{default:u(()=>[d(k(a.params?.completeBtnText??"同意"),1)]),_:1},8,["loading"])):m("v-if",!0)],64)):m("v-if",!0),V(t.$slots,"right",{},void 0,!0)]),_:3})],512)}}}),Ht=pe(de,[["__scopeId","data-v-edd75c34"]]);export{Ht as default};
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { type Component } from 'vue';
|
|
2
|
-
import type {
|
|
2
|
+
import type { IWfTaskVo } from '../../interface/workflow/IWfTaskVo';
|
|
3
3
|
type __VLS_Props = {
|
|
4
4
|
taskId: string;
|
|
5
5
|
taskInfo?: IWfTaskVo;
|
|
6
6
|
readonly?: boolean;
|
|
7
|
+
/** 入口显式声明"看的是当时那一版"(流程事项管理 / 任务快照 / 审批查看):只读 + 取快照 */
|
|
8
|
+
asHistory?: boolean;
|
|
7
9
|
contentComponent?: Component;
|
|
8
10
|
contentProps?: Record<string, unknown>;
|
|
9
11
|
renderDialog?: (...args: any[]) => any;
|
|
@@ -16,8 +18,9 @@ type __VLS_PublicProps = __VLS_Props & {
|
|
|
16
18
|
};
|
|
17
19
|
declare var __VLS_17: {
|
|
18
20
|
task: IWfTaskVo | undefined;
|
|
19
|
-
process: IWfProcessInstVo | undefined;
|
|
21
|
+
process: import("../../interface/workflow/IWfTaskVo").IWfProcessInstVo | undefined;
|
|
20
22
|
snapshot: Record<string, any> | null;
|
|
23
|
+
mode: import("../../hooks/useWorkflowTaskView").WorkflowTaskMode;
|
|
21
24
|
};
|
|
22
25
|
type __VLS_Slots = {} & {
|
|
23
26
|
content?: (props: typeof __VLS_17) => any;
|
|
@@ -37,6 +40,7 @@ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps,
|
|
|
37
40
|
readonly: boolean;
|
|
38
41
|
renderDialog: (...args: any[]) => any;
|
|
39
42
|
withdrawEnabled: boolean;
|
|
43
|
+
asHistory: boolean;
|
|
40
44
|
taskInfo: IWfTaskVo;
|
|
41
45
|
contentComponent: Component;
|
|
42
46
|
contentProps: Record<string, unknown>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import{defineComponent as st,useModel as ot,ref as S,computed as w,onMounted as nt,onBeforeUnmount as at,resolveComponent as T,resolveDirective as rt,openBlock as n,createElementBlock as r,createCommentVNode as l,createBlock as b,Teleport as lt,unref as C,toDisplayString as d,withDirectives as it,normalizeStyle as Ie,normalizeClass as O,createElementVNode as c,Fragment as m,renderList as B,createVNode as K,createTextVNode as x,renderSlot as ct,resolveDynamicComponent as dt,mergeProps as ut,withCtx as $,mergeModels as Te,nextTick as pt}from"vue";import{ElMessageBox as ft,ElMessage as mt}from"element-plus";import j from"../../api/workflow/workflowInstApi.js";import kt from"../../api/DocumentApi.js";import vt from"../../hooks/useFileView.js";import wt from"../../hooks/useDictHooks.js";import be from"../../utils/FrameworkUtils.js";import yt from"../../hooks/useWorkflowSnapshot.js";import{parseDateTime as te,formatDateTime as se}from"../../utils/dateTime.js";import{formatStayDuration as oe,resolveTimeoutMeta as _t}from"../../utils/flowTimeout.js";import{userInfoStore as F}from"../../stores/userInfoStore.js";import ht from"./TaskOperation.vue.js";import{_ as gt}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../../chunks/request-ea_7oxLz.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/useFileOpen.js";import"../../utils/fileDownload.js";import"../../utils/officePreviewUtil.js";import"../../utils/uploadAccept.js";import"../../hooks/useDeleteConfirmHooks.js";import"../../hooks/useBehaviorAction.js";import"../../utils/buildUploadHeaders.js";import"../../../chunks/ElTextarea-CRk-I9iq.js";import"../../hooks/createDialogHooks.js";import"../../stores/storeConfig.js";import"pinia-plugin-store";import"../../config/ElementPlusConfig.js";import"../../utils/patchWujiePopperCoordinates.js";import"../../config/VxeTableConfig.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"../vxeReplace/index.js";import"../tooltip/index.js";import"../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"element-plus/es/locale/lang/zh-cn";import"../../hooks/useListenerHooks.js";import"../../stores/permissionStore.js";import"../../utils/operationAuth.js";import"../icon/ElIcons.vue.js";import"../ElDialogBody/ElDialogBody.vue.js";import"../../hooks/workflowCompleteRunner.js";import"../../hooks/workflowTodo.js";import"../../hooks/usePermissionHooks.js";import"vue-router";import"../../utils/routeMetaParams.js";import"../../hooks/useOpenNewMenu.js";import"../../utils/commonUtils.js";import"../../utils/tree.js";const It={key:0,class:"workflow-todo-shell__source-label"},Tt={class:"workflow-todo-shell__body dialog-content-fill"},bt={key:0,class:"workflow-todo-shell__source-fallback"},Ct={class:"wf-wait__icon"},xt={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},Et={class:"wf-wait__main"},Nt={class:"wf-wait__title"},Dt={class:"wf-wait__sub"},St={key:0,class:"wf-wait__opinion"},Bt={key:1,class:"wf-wait__files"},Kt=["onClick"],Lt={key:0},Mt={key:1,class:"wf-progress-scroll"},$t={class:"wf-progress-steps"},At={class:"wf-progress-step__icon-wrap"},Ot={class:"wf-progress-step__icon"},jt={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"},Ft={key:4},Vt={class:"wf-progress-step__name"},Ut={class:"wf-progress-step__name-text"},Pt={class:"wf-progress-step__name-label"},Wt={key:0,class:"wf-progress-step__occurrence"},Rt={key:0,class:"workflow-todo-shell__record-occurrence"},zt={key:1,class:"workflow-todo-shell__record-type"},Ht={key:0,class:"workflow-todo-shell__record-user"},Qt={class:"workflow-todo-shell__record-person__name"},qt={key:0,class:"workflow-todo-shell__comment"},Gt={key:0,class:"workflow-todo-shell__record-files"},Yt=["onClick"],Jt={class:"workflow-todo-shell__record-person__name"},Xt={key:0,class:"workflow-todo-shell__comment"},Zt={key:1,class:"workflow-todo-shell__record-files"},es=["onClick"],ts={class:"workflow-todo-shell__record-person__name"},ss={key:1,class:"workflow-todo-shell__footer"},Ce="__end__",os=st({__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=ot(E,"loading"),v=S(),_=S(),R=S(),z=S(!1),{getDictTypeData:Ne}=wt(["SysFlowTimeout"]),De=e=>[...e].sort((t,s)=>(t.createTime||"").localeCompare(s.createTime||"")),H=w(()=>De([..._.value?.hisTasks||[],..._.value?.activeTasks||[]])),Q=S({}),q=vt().fileView,G=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?Q.value[e]||[]:[],Se=async()=>{var t;const e=Array.from(new Set(H.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);Q.value=o}catch{Q.value={}}},Y=w(()=>{const e=new Map;for(const t of H.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)",ne={ok:"var(--el-color-success)",warning:"var(--el-color-warning)",danger:"var(--el-color-danger)"},ae={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",re=e=>e==="danger"?"close":e==="warning"?"back":"check",Le=e=>!e||e.startsWith("已")?e:`已${e}`,J=w(()=>String(v.value?.finishedResult||"")==="terminate"||String(v.value?.processStatus||"")==="terminated"),X=w(()=>H.value.find(e=>!!u.taskId&&e.taskId===u.taskId)),le=e=>!!e?.assigneeId&&e.assigneeId===F().getUserInfo.userCode,Me=w(()=>{const e=F().getUserInfo.userCode;if(!e)return!1;const t=X.value;return t?.taskLocalVars?.firstTask?le(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"}:me[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=te(e.createTime||"")?.getTime()??0,k=te(e.finishTime||"")?.getTime()??0,g=h&&k?Math.max(k-h,0):0,y=Le(s.label);return{level:o,icon:re(o),color:ne[o],weakColor:ae[o],title:`${i?"我的处理":e.assigneeName||"审批"}:${y}`,sub:[se(e.finishTime),g?`耗时 ${oe(g)}`:""].filter(Boolean).join(" · "),opinion:t?"":$e(e),filesTaskId:t?"":e.taskId||"",ctText:e.taskName||"",ctLabel:"",ctKind:"node"}},ie=()=>{const e=v.value,t=J.value?"danger":"ok",s=J.value?"流程已终止":"流程已办结",o=se(e?.procEndTime);return{level:t,icon:re(t),color:ne[t],weakColor:ae[t],title:s,sub:o?`${o} ${J.value?"已终止":"完成归档"}`:s,opinion:"",filesTaskId:"",ctText:"",ctLabel:"",ctKind:""}},ce=()=>{const e=_.value?.activeTasks||[],t=e.map(y=>te(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"?" · ":" / ",k=Math.max(Date.now()-t.getTime(),0),g=_t(Ne("SysFlowTimeout"),k);return{title:`当前等待:${s?.taskName||v.value?.taskName||"当前节点"} · ${o.length?o.join(h):"待分配"}`,sub:`已停留 ${oe(k)}`,opinion:"",filesTaskId:"",ctText:oe(k),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=X.value;return Me.value?U.value?ie():ce():e?.finishTime&&!e.taskLocalVars?.firstTask&&le(e)?Ae(e):U.value?ie():ce()}),Oe=w(()=>{const e=[...Y.value],t=new Set(e.map(o=>de(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}),de=e=>`${e.taskDefKey||e.taskName}-${e.parentExecutionId||""}`,je={single:"或签",joint:"会签",all:"会签"},ue=e=>je[e.approvalType||e.tasks[0]?.approvalType||""]||"",Fe=e=>(e.approvalType||e.tasks[0]?.approvalType||"")==="single",Ve=w(()=>{const e=X.value;if(!e?.finishTime)return;const t=F().getUserInfo.userCode;if(!(!t||e.assigneeId!==t))return e}),pe=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"},fe=e=>{const t=(e.assigneeNames||"").split(",").map(s=>s.trim()).filter(Boolean);return t.length?t:["待处理"]},me={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=>se(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((k,g)=>(g.finishTime||"").localeCompare(k.finishTime||""))[0]?.commentList?.[0],h=me[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(" / "):fe(e).join(" / "),Z=e=>e.tasks.map(t=>t.comment).filter(Boolean).join(" / "),ve=w(()=>{const e=new Map,t=[];for(const s of Y.value){const o=s.taskDefKey||s.taskName||"";if(!o)continue;const i=s.tasks.some(k=>!k.finishTime)?"process":D(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:Ce,status:U.value?"success":"wait"}),t}),we=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(()=>we(v.value)?!0:(_.value?.activeTasks||[]).some(e=>we(e))),P=w(()=>u.readonly||!!v.value?.finishTime||!!v.value?.procEndTime||z.value&&!(_.value?.activeTasks||[]).length||!ze.value),ee=S(!1),ye=S(null),M=S(null);nt(()=>{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}),at(()=>{const e=M.value;M.value=null,e?.remove()});const He=w(()=>P.value),{snapshot:_e,dataSourceMeta:W,refresh:Qe}=yt(()=>String(u.taskInfo?.businessId||v.value?.businessId||""),{wfTaskId:()=>u.taskId,taskDefKey:()=>String(u.taskInfo?.taskDefKey||v.value?.taskDefKey||""),readonly:()=>P.value,enabled:()=>He.value}),qe=w(()=>P.value&&!!u.taskId&&(u.withdrawEnabled===!0||u.taskInfo?.withdrawEnabled===!0)),Ge=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};ee.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 ft.confirm(`确认撤回「${e.taskTitle||e.taskName||"该申请单"}」?`+(s?`撤回后流程将回到「${s}」,需要重新提交。`:"撤回后需要重新提交。"),"撤回确认",{type:"warning",confirmButtonText:"确认撤回",cancelButtonText:"取消"}),await j.processWithdrawal(t),mt.success("撤回成功"),V("success",e),V("cancel")}catch(s){if(s==="cancel"||s==="close")return;be.messageError(s)}finally{ee.value=!1}},Ye=w(()=>R.value?.taskOption),Je=w(()=>{const e=Ye.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,z.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)),z.value=!0,await Qe(),await Se(),await pt(),await R.value?.resetQuery?.()}catch(o){be.messageError(o)}finally{L.value=!1}},Xe=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"),k=T("el-flex"),g=T("el-timeline-item"),y=T("el-timeline"),A=T("el-button"),Ze=T("operation-auth"),et=rt("loading");return n(),r("div",{ref_key:"shellEl",ref:ye,class:"workflow-todo-shell"},[l(`
|
|
1
|
+
import{defineComponent as st,useModel as nt,ref as A,computed as w,onMounted as at,onBeforeUnmount as rt,watch as lt,resolveComponent as b,resolveDirective as it,openBlock as n,createElementBlock as r,createCommentVNode as l,createBlock as C,Teleport as ct,unref as v,toDisplayString as d,withDirectives as dt,normalizeStyle as Ie,normalizeClass as O,createElementVNode as c,Fragment as m,renderList as S,createVNode as B,createTextVNode as x,renderSlot as ut,resolveDynamicComponent as pt,mergeProps as mt,withCtx as M,mergeModels as be,nextTick as ft}from"vue";import{ElMessageBox as kt,ElMessage as vt}from"element-plus";import te from"../../api/workflow/workflowInstApi.js";import wt from"../../api/DocumentApi.js";import yt from"../../hooks/useFileView.js";import _t from"../../hooks/useDictHooks.js";import Ce from"../../utils/FrameworkUtils.js";import ht from"../../hooks/useWorkflowSnapshot.js";import{parseDateTime as oe,formatDateTime as se}from"../../utils/dateTime.js";import{formatStayDuration as ne,resolveTimeoutMeta as gt}from"../../utils/flowTimeout.js";import{userInfoStore as j}from"../../stores/userInfoStore.js";import Tt from"./TaskOperation.vue.js";import It from"../../hooks/useWorkflowTaskView.js";import{_ as bt}from"../../../chunks/_plugin-vue_export-helper-DlAUqK2U.js";import"../../../chunks/request-ea_7oxLz.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/useFileOpen.js";import"../../utils/fileDownload.js";import"../../utils/officePreviewUtil.js";import"../../utils/uploadAccept.js";import"../../hooks/useDeleteConfirmHooks.js";import"../../hooks/useBehaviorAction.js";import"../../utils/buildUploadHeaders.js";import"../../../chunks/ElTextarea-CRk-I9iq.js";import"../../hooks/createDialogHooks.js";import"../../stores/storeConfig.js";import"pinia-plugin-store";import"../../config/ElementPlusConfig.js";import"../../utils/patchWujiePopperCoordinates.js";import"../../config/VxeTableConfig.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"../vxeReplace/index.js";import"../tooltip/index.js";import"../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"element-plus/es/locale/lang/zh-cn";import"../../hooks/useListenerHooks.js";import"../../stores/permissionStore.js";import"../../utils/operationAuth.js";import"../icon/ElIcons.vue.js";import"../ElDialogBody/ElDialogBody.vue.js";import"../../hooks/workflowCompleteRunner.js";import"../../hooks/workflowTodo.js";import"vue-router";import"../../hooks/useMenuNavigate.js";import"../../hooks/usePermissionHooks.js";import"../../utils/routeMetaParams.js";import"../../utils/commonUtils.js";import"../../utils/tree.js";const Ct={key:0,class:"workflow-todo-shell__source-label"},xt={class:"workflow-todo-shell__body dialog-content-fill"},Nt={key:0,class:"workflow-todo-shell__source-fallback"},Et={class:"wf-wait__icon"},Dt={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},St={class:"wf-wait__main"},Bt={class:"wf-wait__title"},Kt={class:"wf-wait__sub"},Lt={key:0,class:"wf-wait__opinion"},Mt={key:1,class:"wf-wait__files"},$t=["onClick"],At={key:0},Ot={key:1,class:"wf-progress-scroll"},Vt={class:"wf-progress-steps"},jt={class:"wf-progress-step__icon-wrap"},Ft={class:"wf-progress-step__icon"},Pt={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"},Ut={key:4},Wt={class:"wf-progress-step__name"},Rt={class:"wf-progress-step__name-text"},Ht={class:"wf-progress-step__name-label"},zt={key:0,class:"wf-progress-step__occurrence"},Qt={key:0,class:"workflow-todo-shell__record-occurrence"},qt={key:1,class:"workflow-todo-shell__record-type"},Gt={key:0,class:"workflow-todo-shell__record-user"},Yt={class:"workflow-todo-shell__record-person__name"},Jt={key:0,class:"workflow-todo-shell__comment"},Xt={key:0,class:"workflow-todo-shell__record-files"},Zt=["onClick"],eo={class:"workflow-todo-shell__record-person__name"},to={key:0,class:"workflow-todo-shell__comment"},oo={key:1,class:"workflow-todo-shell__record-files"},so=["onClick"],no={class:"workflow-todo-shell__record-person__name"},ao={key:1,class:"workflow-todo-shell__footer"},xe="__end__",ro=st({__name:"WorkflowTodoShell",props:be({taskId:{},taskInfo:{default:void 0},readonly:{type:Boolean,default:!1},asHistory:{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:be(["cancel","success"],["update:loading"]),setup(N,{expose:Ne,emit:Ee}){const f=N,V=Ee,K=nt(N,"loading"),H=A(),ae=It({taskId:()=>String(f.taskId||f.taskInfo?.taskId||""),taskInfo:()=>f.taskInfo,asHistory:()=>f.asHistory===!0||f.readonly===!0}),{task:_,processInfo:T,processLoaded:De,mode:F,readonly:P}=ae,{getDictTypeData:Se}=_t(["SysFlowTimeout"]),Be=e=>[...e].sort((t,o)=>(t.createTime||"").localeCompare(o.createTime||"")),z=w(()=>Be([...T.value?.hisTasks||[],...T.value?.activeTasks||[]])),Q=A({}),q=yt().fileView,G=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"},E=e=>e?Q.value[e]||[]:[],Ke=async()=>{var t;const e=Array.from(new Set(z.value.map(o=>o.taskId).filter(o=>!!o)));if(e.length)try{const o=await wt.getUpLoadFilesByBussinessIds(e),s={};for(const i of o)i.businessId&&(s[t=i.businessId]||(s[t]=[])).push(i);Q.value=s}catch{Q.value={}}},Y=w(()=>{const e=new Map;for(const t of z.value){const o=ge(t),s=e.get(o);s?s.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=w(()=>_.value?.procEndTime?!0:!!(T.value&&!(T.value.activeTasks||[]).length&&(T.value.hisTasks||[]).length)),Le=e=>/^#[0-9a-fA-F]{6}$/.test(e)?`${e}1f`:"var(--el-color-primary-light-9)",re={ok:"var(--el-color-success)",warning:"var(--el-color-warning)",danger:"var(--el-color-danger)"},le={ok:"var(--el-color-success-light-9)",warning:"var(--el-color-warning-light-9)",danger:"var(--el-color-danger-light-9)"},Me=e=>e==="danger"?"danger":e==="warning"?"warning":"ok",ie=e=>e==="danger"?"close":e==="warning"?"back":"check",$e=e=>!e||e.startsWith("已")?e:`已${e}`,J=w(()=>String(_.value?.finishedResult||"")==="terminate"||String(_.value?.processStatus||"")==="terminated"),X=w(()=>z.value.find(e=>!!f.taskId&&e.taskId===f.taskId)),ce=e=>!!e?.assigneeId&&e.assigneeId===j().getUserInfo.userCode,Ae=w(()=>{const e=j().getUserInfo.userCode;if(!e)return!1;const t=X.value;return t?.taskLocalVars?.firstTask?ce(t):!t&&f.taskInfo?.startUserId===e}),Oe=e=>{const t=(e?.commentList||[]).find(o=>String(o.type)!=="8");return String(t?.fullMessage||"").trim()},Ve=e=>{if(!e?.finishTime)return;const t=!!e.taskLocalVars?.firstTask,o=t?{label:"已提交",type:"success"}:ve[String((e.commentList||[]).find($=>String($.type)!=="8")?.type||"")]||{label:"已办",type:"success"},s=Me(o.type),i=!!e.assigneeId&&e.assigneeId===j().getUserInfo.userCode,h=oe(e.createTime||"")?.getTime()??0,k=oe(e.finishTime||"")?.getTime()??0,g=h&&k?Math.max(k-h,0):0,y=$e(o.label);return{level:s,icon:ie(s),color:re[s],weakColor:le[s],title:`${i?"我的处理":e.assigneeName||"审批"}:${y}`,sub:[se(e.finishTime),g?`耗时 ${ne(g)}`:""].filter(Boolean).join(" · "),opinion:t?"":Oe(e),filesTaskId:t?"":e.taskId||"",ctText:e.taskName||"",ctLabel:"",ctKind:"node"}},de=()=>{const e=_.value,t=J.value?"danger":"ok",o=J.value?"流程已终止":"流程已办结",s=se(e?.procEndTime);return{level:t,icon:ie(t),color:re[t],weakColor:le[t],title:o,sub:s?`${s} ${J.value?"已终止":"完成归档"}`:o,opinion:"",filesTaskId:"",ctText:"",ctLabel:"",ctKind:""}},ue=()=>{const e=T.value?.activeTasks||[],t=e.map(y=>oe(y.createTime||"")).filter(y=>!!y).sort((y,$)=>y.getTime()-$.getTime())[0];if(!t)return;const o=e[0],s=Array.from(new Set(e.map(y=>y.assigneeName).filter(y=>!!y))),i=o?.approvalType||"",h=i==="joint"||i==="all"?" · ":" / ",k=Math.max(Date.now()-t.getTime(),0),g=gt(Se("SysFlowTimeout"),k);return{title:`当前等待:${o?.taskName||_.value?.taskName||"当前节点"} · ${s.length?s.join(h):"待分配"}`,sub:`已停留 ${ne(k)}`,opinion:"",filesTaskId:"",ctText:ne(k),ctLabel:g.level==="danger"?"超时风险":"等待中",ctKind:"stay",color:g.color||"var(--el-color-primary)",level:g.level,weakColor:Le(g.color),icon:"clock"}},u=w(()=>{const e=X.value;return Ae.value?U.value?de():ue():e?.finishTime&&!e.taskLocalVars?.firstTask&&ce(e)?Ve(e):U.value?de():ue()}),je=w(()=>{const e=[...Y.value],t=new Set(e.map(s=>pe(s)));for(const s of T.value?.futureTasks||[]){const i=`${s.taskDefKey||s.taskName}-`;t.has(i)||e.push({taskName:s.taskName,taskDefKey:s.taskDefKey,tasks:[],assigneeNames:s.assigneeNames,approvalType:s.approvalType})}e.push({taskName:"结束",taskDefKey:xe,tasks:[],isEnd:!0});const o=new Map;for(const s of e){const i=s.taskDefKey||s.taskName||"";i&&(s.occurrence=(o.get(i)||0)+1,o.set(i,s.occurrence))}return e}),pe=e=>`${e.taskDefKey||e.taskName}-${e.parentExecutionId||""}`,Fe={single:"或签",joint:"会签",all:"会签"},me=e=>Fe[e.approvalType||e.tasks[0]?.approvalType||""]||"",Pe=e=>(e.approvalType||e.tasks[0]?.approvalType||"")==="single",Ue=w(()=>{const e=X.value;if(!e?.finishTime)return;const t=j().getUserInfo.userCode;if(!(!t||e.assigneeId!==t))return e}),fe=e=>{const t=j().getUserInfo.userCode;if(!t)return"";const o=e.tasks.filter(i=>!!i.finishTime&&i.assigneeId===t);if(!o.length)return"";const s=Ue.value?.taskId;return s&&o.some(i=>i.taskId===s)?"entry":"other"},ke=e=>{const t=(e.assigneeNames||"").split(",").map(o=>o.trim()).filter(Boolean);return t.length?t:["待处理"]},ve={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"}},We=e=>se(e.finishTime||e.createTime),Re={success:"var(--el-color-success)",warning:"var(--el-color-warning)",danger:"var(--el-color-danger)",primary:"var(--el-color-primary)"},He=e=>Re[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 o="已办",s="success";if(t.some(i=>i.taskLocalVars?.firstTask))o="提交";else{const i=[...t].sort((k,g)=>(g.finishTime||"").localeCompare(k.finishTime||""))[0]?.commentList?.[0],h=ve[i?.type||""];o=h?.label||"已办",s=h?.type||"success"}return{label:o,type:s,hollow:!0}},we=e=>{const t=e.assigneeName||e.startUserName||"待处理";return e.finishTime?`${t} · ${We(e)}`:t},ze=e=>e.tasks.length?e.tasks.map(we).join(" / "):ke(e).join(" / "),Z=e=>e.tasks.map(t=>t.comment).filter(Boolean).join(" / "),ye=w(()=>{const e=new Map,t=[];for(const o of Y.value){const s=o.taskDefKey||o.taskName||"";if(!s)continue;const i=o.tasks.some(k=>!k.finishTime)?"process":D(o).type,h=e.get(s);if(h!==void 0){const k=t[h];k.occurrence=(k.occurrence||1)+1,k.parentExecutionId=o.parentExecutionId,k.status=i;continue}e.set(s,t.length),t.push({taskName:o.taskName,taskDefKey:o.taskDefKey,parentExecutionId:o.parentExecutionId,status:i,occurrence:1})}for(const o of T.value?.futureTasks||[]){const s=o.taskDefKey||o.taskName||"";if(!s)continue;const i=e.get(s);if(i!==void 0){t[i].status="wait";continue}e.set(s,t.length),t.push({taskName:o.taskName,taskDefKey:o.taskDefKey,status:"wait"})}return t.push({taskName:"结束",taskDefKey:xe,status:U.value?"success":"wait"}),t}),ee=A(!1),_e=A(null),L=A(null),W=A(null);at(()=>{const t=_e.value?.closest(".el-drawer, .el-dialog")?.querySelector(".dialog-hooks-header")??null;if(!t){L.value=null;return}const o=t.querySelector(".dialog-hooks-header-title");W.value=o;const s=document.createElement("span");s.style.display="contents",o?o.insertAdjacentElement("afterend",s):t.appendChild(s),L.value=s}),rt(()=>{const e=L.value;L.value=null,W.value=null,e?.remove()}),lt([F,()=>_.value?.taskName,W],()=>{const e=W.value;if(!e||e.children.length)return;const t=F.value==="view"?"流程详情":String(_.value?.taskName||"")||"流程详情";e.textContent!==t&&(e.textContent=t)},{immediate:!0});const Qe=w(()=>P.value),{snapshot:he,dataSourceMeta:R,refresh:qe}=ht(()=>String(f.taskInfo?.businessId||_.value?.businessId||""),{wfTaskId:()=>f.taskId,taskDefKey:()=>String(f.taskInfo?.taskDefKey||_.value?.taskDefKey||""),readonly:()=>P.value,enabled:()=>Qe.value}),Ge=w(()=>P.value&&!!f.taskId&&(f.withdrawEnabled===!0||f.taskInfo?.withdrawEnabled===!0)),Ye=async()=>{const e=f.taskInfo||_.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};ee.value=!0;try{await te.processWithdrawalVerification(t);let o="";try{const s=await te.processWithdrawalPreview(t);o=String(s?.targetTaskName||"")}catch(s){console.warn("撤回预览失败",s)}await kt.confirm(`确认撤回「${e.taskTitle||e.taskName||"该申请单"}」?`+(o?`撤回后流程将回到「${o}」,需要重新提交。`:"撤回后需要重新提交。"),"撤回确认",{type:"warning",confirmButtonText:"确认撤回",cancelButtonText:"取消"}),await te.processWithdrawal(t),vt.success("撤回成功"),V("success",e),V("cancel")}catch(o){if(o==="cancel"||o==="close")return;Ce.messageError(o)}finally{ee.value=!1}},Je=w(()=>H.value?.taskOption),Xe=w(()=>{const e=Je.value;return{...e||{},cancelFunction:(...t)=>{e?.cancelFunction?.(...t),V("cancel")},workflowComplete:async(...t)=>{await e?.workflowComplete?.(...t)}}}),ge=e=>`${e.taskDefKey||e.taskName}-${e.parentExecutionId||""}`,Te=async e=>{if(!(!f.taskId&&!f.taskInfo?.procInsId))try{K.value=!0,De.value=!1,await ae.load(e),await qe(),await Ke(),await ft(),await H.value?.resetQuery?.()}catch(t){Ce.messageError(t)}finally{K.value=!1}},Ze=async e=>{V("success",e),await Te(e)};return Ne({resetQuery:async()=>{await Te()}}),(e,t)=>{const o=b("el-icons"),s=b("el-title"),i=b("el-empty"),h=b("el-tag-display"),k=b("el-flex"),g=b("el-timeline-item"),y=b("el-timeline"),$=b("el-button"),et=b("operation-auth"),tt=it("loading");return n(),r("div",{ref_key:"shellEl",ref:_e,class:"workflow-todo-shell"},[l(`
|
|
2
2
|
内容区撑满剩余空间统一使用 dialog-content-fill(flex/height 由核心工具类提供),
|
|
3
3
|
滚动仅保留在本内容区,底部操作栏固定不随内容滚动。
|
|
4
4
|
`),l(`
|
|
5
5
|
快照标记:Teleport 进「本抽屉」的标题栏(标题文字右侧),不修改 createDialogHooks;
|
|
6
6
|
headerEl 由壳子在挂载时从自身所在抽屉里解析,多弹窗并存也不会串。
|
|
7
|
-
`),
|
|
7
|
+
`),L.value?(n(),C(ct,{key:0,to:L.value},[v(R)?(n(),r("span",Ct,d(v(R).label),1)):l("v-if",!0)],8,["to"])):l("v-if",!0),dt((n(),r("div",xt,[l(" 兜底:没有标题栏(非自定义 header 的弹窗)时,在内容区顶部显示 "),!L.value&&v(R)?(n(),r("div",Nt,d(v(R).label),1)):l("v-if",!0),l(`
|
|
8
8
|
数据来源标记(通用层统一判定,业务内容组件无需实现):
|
|
9
9
|
命中快照时展示「快照 · 时间」;没有快照(展示业务当前数据)时不展示,避免噪音,
|
|
10
10
|
放在内容区首行右对齐,紧贴标题栏,不随内容滚动位置变化而离开视线。
|
|
@@ -12,11 +12,11 @@ import{defineComponent as st,useModel as ot,ref as S,computed as w,onMounted as
|
|
|
12
12
|
当前等待:参考 flowpilot 设计的时长梯度状态条。
|
|
13
13
|
颜色与浅色底纹按 SysFlowTimeout 字典命中区间(正常 / 预警 / 超时)渲染,
|
|
14
14
|
流程已结束(含终止)时不展示。
|
|
15
|
-
`),
|
|
15
|
+
`),u.value?(n(),r("div",{key:1,class:O(["wf-wait",u.value.level?`is-${u.value.level}`:""]),style:Ie({"--wf-wait-color":u.value.color,"--wf-wait-weak":u.value.weakColor})},[c("span",Et,[l(" 进行中:时钟 "),u.value.icon==="clock"?(n(),r("svg",Dt,[...t[3]||(t[3]=[c("circle",{cx:"12",cy:"12",r:"9"},null,-1),c("path",{d:"M12 8v4l3 3"},null,-1)])])):u.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)):u.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",St,[c("div",Bt,d(u.value.title),1),c("div",Kt,d(u.value.sub),1),l(" 结束态:把该次审批的意见一并带出来,避免去审批记录里翻 "),u.value.opinion?(n(),r("div",Lt," 审核意见:"+d(u.value.opinion),1)):l("v-if",!0),l(" 该次审批的附件:与审批记录里的附件同样支持点击预览 "),u.value.filesTaskId&&E(u.value.filesTaskId).length?(n(),r("div",Mt,[(n(!0),r(m,null,S(E(u.value.filesTaskId),a=>(n(),r("span",{key:a.id,class:"wf-wait__file",onClick:p=>v(q)(a.id)},[B(o,{"model-value":G(a.name)},null,8,["model-value"]),x(d(a.name),1)],8,$t))),128))])):l("v-if",!0)]),u.value.ctText?(n(),r("div",{key:0,class:O(["wf-wait__ct",`is-${u.value.ctKind}`])},[c("b",null,d(u.value.ctText),1),u.value.ctLabel?(n(),r("span",At,d(u.value.ctLabel),1)):l("v-if",!0)],2)):l("v-if",!0)],6)):l("v-if",!0),B(s,{level:"1",title:"流程进度",style:{"border-bottom":"var(--border)"}}),c("div",null,[ye.value.length?(n(),r("div",Ot,[c("div",Vt,[(n(!0),r(m,null,S(ye.value,(a,p)=>(n(),r("div",{key:ge(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",jt,[c("div",Ft,[l(" 同意/提交:对勾 "),a.status==="success"?(n(),r("svg",Pt,[...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",Ut,d(p+1),1))])]),c("div",Wt,[c("span",Rt,[c("span",Ht,d(a.taskName||"未命名节点"),1),a.occurrence&&a.occurrence>1?(n(),r("sup",zt,d(a.occurrence),1)):l("v-if",!0)])])],2))),128))])])):(n(),C(i,{key:0,description:"暂无流程进度","image-size":48}))]),l(`
|
|
16
16
|
业务审核内容:完全由业务内容组件/插槽决定(含它自己的标题、分区、网格),
|
|
17
17
|
通用抽屉不再注入任何标题,业务页面给什么就展示什么。
|
|
18
|
-
`),
|
|
18
|
+
`),ut(e.$slots,"content",{task:v(_),process:v(T),snapshot:v(he),mode:v(F)},()=>[N.contentComponent?(n(),C(pt(N.contentComponent),mt({key:0,ref_key:"contentRef",ref:H},N.contentProps,{task:v(_),mode:v(F),snapshot:v(he),loading:K.value,"onUpdate:loading":t[0]||(t[0]=a=>K.value=a)}),null,16,["task","mode","snapshot","loading"])):l("v-if",!0)],!0),B(s,{level:"1",title:"审批记录",style:{"border-bottom":"var(--border)"}}),c("div",null,[Y.value.length?(n(),C(y,{key:1,class:"workflow-todo-shell__timeline"},{default:M(()=>[(n(!0),r(m,null,S(je.value,a=>(n(),C(g,{key:pe(a),type:D(a).type,hollow:D(a).hollow,class:O({"is-active":D(a).type==="primary"}),style:Ie({"--el-timeline-node-color":He(D(a).type)})},{default:M(()=>[B(k,{align:"center",justify:"space-between",class:O(["workflow-todo-shell__record-title",`is-${D(a).type}`])},{default:M(()=>[c("span",null,[x(d(a.taskName||"未命名节点")+" ",1),(a.occurrence||0)>1?(n(),r("span",Qt,d(a.occurrence),1)):l("v-if",!0),me(a)?(n(),r("span",qt,d(me(a)),1)):l("v-if",!0),l(" 我办理过的节点:标注「我的操作」,颜色跟随该节点的审批结论 "),fe(a)?(n(),r("span",{key:2,class:O(["workflow-todo-shell__record-mine",`is-${fe(a)}`])}," 我的操作 ",2)):l("v-if",!0)]),B(h,{type:D(a).type,size:"small"},{default:M(()=>[x(d(D(a).label),1)]),_:2},1032,["type"])]),_:2},1032,["class"]),Pe(a)?(n(),r("div",Gt,[c("span",Yt,d(ze(a)),1),Z(a)||a.tasks.some(p=>E(p.taskId).length)?(n(),r("div",Jt,[Z(a)?(n(),r(m,{key:0},[x(d(Z(a)),1)],64)):l("v-if",!0),(n(!0),r(m,null,S(a.tasks,p=>(n(),r(m,{key:p.taskId},[E(p.taskId).length?(n(),r("div",Xt,[(n(!0),r(m,null,S(E(p.taskId),I=>(n(),r("span",{key:I.id,class:"workflow-todo-shell__record-file",onClick:ot=>v(q)(I.id)},[B(o,{"model-value":G(I.name)},null,8,["model-value"]),x(d(I.name),1)],8,Zt))),128))])):l("v-if",!0)],64))),128))])):l("v-if",!0)])):a.tasks.length?(n(!0),r(m,{key:1},S(a.tasks,p=>(n(),r("div",{key:p.taskId,class:"workflow-todo-shell__record-user"},[c("span",eo,d(we(p)),1),p.comment||E(p.taskId).length?(n(),r("div",to,[p.comment?(n(),r(m,{key:0},[x(d(p.comment),1)],64)):l("v-if",!0),E(p.taskId).length?(n(),r("div",oo,[(n(!0),r(m,null,S(E(p.taskId),I=>(n(),r("span",{key:I.id,class:"workflow-todo-shell__record-file",onClick:ot=>v(q)(I.id)},[B(o,{"model-value":G(I.name)},null,8,["model-value"]),x(d(I.name),1)],8,so))),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,S(ke(a),p=>(n(),r("div",{key:p,class:"workflow-todo-shell__record-user"},[c("span",no,d(p),1)]))),128))],64))]),_:2},1032,["type","hollow","class","style"]))),128))]),_:1})):(n(),C(i,{key:0,description:"暂无审批记录","image-size":48}))])])),[[tt,K.value]]),N.showFooter?(n(),r("div",ao,[l(`
|
|
19
19
|
已办节点的只读查看:节点开了撤回(后端按节点下发 withdrawEnabled)时,
|
|
20
20
|
在「取消」旁边给出撤回入口——校验、预览、二次确认、执行都在组件内完成,
|
|
21
21
|
成功后通知调用方刷新列表并关闭查看。
|
|
22
|
-
`),
|
|
22
|
+
`),Ge.value?(n(),C(et,{key:0,"oper-code":"system:workflow:processWithdrawal"},{default:M(()=>[B($,{type:"warning",loading:ee.value,onClick:Ye},{default:M(()=>[...t[11]||(t[11]=[x("撤回",-1)])]),_:1},8,["loading"])]),_:1})):l("v-if",!0),v(P)?(n(),C($,{key:1,onClick:t[1]||(t[1]=a=>V("cancel"))},{default:M(()=>[...t[12]||(t[12]=[x("取消",-1)])]),_:1})):(n(),C(Tt,{key:2,"task-id":N.taskId,params:Xe.value,"render-dialog":N.renderDialog,"show-process-btn":!1,"but-loading":K.value,"onUpdate:butLoading":t[2]||(t[2]=a=>K.value=a),onSuccess:Ze},null,8,["task-id","params","render-dialog","but-loading"]))])):l("v-if",!0)],512)}}}),Gs=bt(ro,[["__scopeId","data-v-b2e7d452"]]);export{Gs as default};
|