@fecp/designer 5.5.112 → 5.5.113

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.
Files changed (87) hide show
  1. package/es/designer/package.json.mjs +1 -1
  2. package/es/designer/src/components/DocumentParam.vue.mjs +1 -1
  3. package/es/designer/src/components/ParamsConfig.vue2.mjs +1 -1
  4. package/es/designer/src/layout/aside/HiddenFieldDialog.vue.mjs +1 -1
  5. package/es/designer/src/packages/advancedFilter/ValueInput.vue2.mjs +1 -1
  6. package/es/designer/src/packages/dataLinkage/index.vue.mjs +1 -1
  7. package/es/designer/src/packages/dialog/useDialogDialog.mjs +1 -1
  8. package/es/designer/src/packages/dialogGlobal/index.vue2.mjs +1 -1
  9. package/es/designer/src/packages/dialogGlobal/useDialogGlobalDialog.mjs +1 -1
  10. package/es/designer/src/packages/eventFlow/dialog/action/RiskSch.vue.mjs +1 -1
  11. package/es/designer/src/packages/form/property/approvalHistory.vue.mjs +1 -1
  12. package/es/designer/src/packages/form/property/contract.vue.mjs +1 -1
  13. package/es/designer/src/packages/form/property/document.vue.mjs +25 -11
  14. package/es/designer/src/packages/form/property/subForm.vue.mjs +1 -1
  15. package/es/designer/src/packages/form/property/widgets.vue.mjs +2 -2
  16. package/es/designer/src/packages/prod/index.vue.mjs +1 -1
  17. package/es/designer/src/packages/table/headerBtn.vue.mjs +1 -1
  18. package/es/designer.css +321 -44
  19. package/es/packages/mobile/index.mjs +2 -0
  20. package/es/packages/mobile/src/components/all.mjs +2 -0
  21. package/es/packages/mobile/src/components/custom/appDetail/AppDetail.vue.mjs +3 -2
  22. package/es/packages/mobile/src/components/custom/appTimeLine/AppTimeLine.vue.mjs +338 -207
  23. package/es/packages/mobile/src/components/custom/document/Document.vue.mjs +258 -0
  24. package/es/packages/mobile/src/components/custom/document/assets/404.png.mjs +4 -0
  25. package/es/packages/mobile/src/components/custom/document/assets/audio.png.mjs +4 -0
  26. package/es/packages/mobile/src/components/custom/document/assets/black.png.mjs +4 -0
  27. package/es/packages/mobile/src/components/custom/document/assets/exl.png.mjs +4 -0
  28. package/es/packages/mobile/src/components/custom/document/assets/folder.png.mjs +4 -0
  29. package/es/packages/mobile/src/components/custom/document/assets/img.png.mjs +4 -0
  30. package/es/packages/mobile/src/components/custom/document/assets/other.png.mjs +4 -0
  31. package/es/packages/mobile/src/components/custom/document/assets/pdf.png.mjs +4 -0
  32. package/es/packages/mobile/src/components/custom/document/assets/ppt.png.mjs +4 -0
  33. package/es/packages/mobile/src/components/custom/document/assets/rar.png.mjs +4 -0
  34. package/es/packages/mobile/src/components/custom/document/assets/supp.png.mjs +4 -0
  35. package/es/packages/mobile/src/components/custom/document/assets/txt.png.mjs +4 -0
  36. package/es/packages/mobile/src/components/custom/document/assets/upload.png.mjs +4 -0
  37. package/es/packages/mobile/src/components/custom/document/assets/uploadBu.png.mjs +4 -0
  38. package/es/packages/mobile/src/components/custom/document/assets/uploadBuHover.png.mjs +4 -0
  39. package/es/packages/mobile/src/components/custom/document/assets/uploadHover.png.mjs +4 -0
  40. package/es/packages/mobile/src/components/custom/document/assets/video.png.mjs +4 -0
  41. package/es/packages/mobile/src/components/custom/document/assets/word.png.mjs +4 -0
  42. package/es/packages/mobile/src/components/custom/document/index.mjs +10 -0
  43. package/es/packages/vue/src/components/bus/document/Document.vue.mjs +1 -1
  44. package/lib/designer/package.json.js +1 -1
  45. package/lib/designer/src/components/DocumentParam.vue.js +1 -1
  46. package/lib/designer/src/components/ParamsConfig.vue2.js +1 -1
  47. package/lib/designer/src/layout/aside/HiddenFieldDialog.vue.js +1 -1
  48. package/lib/designer/src/packages/advancedFilter/ValueInput.vue2.js +1 -1
  49. package/lib/designer/src/packages/dataLinkage/index.vue.js +1 -1
  50. package/lib/designer/src/packages/dialog/useDialogDialog.js +1 -1
  51. package/lib/designer/src/packages/dialogGlobal/index.vue2.js +1 -1
  52. package/lib/designer/src/packages/dialogGlobal/useDialogGlobalDialog.js +1 -1
  53. package/lib/designer/src/packages/eventFlow/dialog/action/RiskSch.vue.js +1 -1
  54. package/lib/designer/src/packages/form/property/approvalHistory.vue.js +1 -1
  55. package/lib/designer/src/packages/form/property/contract.vue.js +1 -1
  56. package/lib/designer/src/packages/form/property/document.vue.js +27 -13
  57. package/lib/designer/src/packages/form/property/subForm.vue.js +1 -1
  58. package/lib/designer/src/packages/form/property/widgets.vue.js +2 -2
  59. package/lib/designer/src/packages/prod/index.vue.js +1 -1
  60. package/lib/designer/src/packages/table/headerBtn.vue.js +1 -1
  61. package/lib/designer.css +321 -44
  62. package/lib/packages/mobile/index.js +4 -2
  63. package/lib/packages/mobile/src/components/all.js +2 -0
  64. package/lib/packages/mobile/src/components/custom/appDetail/AppDetail.vue.js +5 -4
  65. package/lib/packages/mobile/src/components/custom/appTimeLine/AppTimeLine.vue.js +337 -206
  66. package/lib/packages/mobile/src/components/custom/document/Document.vue.js +258 -0
  67. package/lib/packages/mobile/src/components/custom/document/assets/404.png.js +4 -0
  68. package/lib/packages/mobile/src/components/custom/document/assets/audio.png.js +4 -0
  69. package/lib/packages/mobile/src/components/custom/document/assets/black.png.js +4 -0
  70. package/lib/packages/mobile/src/components/custom/document/assets/exl.png.js +4 -0
  71. package/lib/packages/mobile/src/components/custom/document/assets/folder.png.js +4 -0
  72. package/lib/packages/mobile/src/components/custom/document/assets/img.png.js +4 -0
  73. package/lib/packages/mobile/src/components/custom/document/assets/other.png.js +4 -0
  74. package/lib/packages/mobile/src/components/custom/document/assets/pdf.png.js +4 -0
  75. package/lib/packages/mobile/src/components/custom/document/assets/ppt.png.js +4 -0
  76. package/lib/packages/mobile/src/components/custom/document/assets/rar.png.js +4 -0
  77. package/lib/packages/mobile/src/components/custom/document/assets/supp.png.js +4 -0
  78. package/lib/packages/mobile/src/components/custom/document/assets/txt.png.js +4 -0
  79. package/lib/packages/mobile/src/components/custom/document/assets/upload.png.js +4 -0
  80. package/lib/packages/mobile/src/components/custom/document/assets/uploadBu.png.js +4 -0
  81. package/lib/packages/mobile/src/components/custom/document/assets/uploadBuHover.png.js +4 -0
  82. package/lib/packages/mobile/src/components/custom/document/assets/uploadHover.png.js +4 -0
  83. package/lib/packages/mobile/src/components/custom/document/assets/video.png.js +4 -0
  84. package/lib/packages/mobile/src/components/custom/document/assets/word.png.js +4 -0
  85. package/lib/packages/mobile/src/components/custom/document/index.js +10 -0
  86. package/lib/packages/vue/src/components/bus/document/Document.vue.js +1 -1
  87. package/package.json +1 -1
@@ -1,45 +1,96 @@
1
1
  /* empty css */
2
2
  /* empty css */
3
- /* empty css */
4
3
  /* empty css */
4
+ /* empty css */
5
+ /* empty css */
6
+ /* empty css */
5
7
  /* empty css */
6
8
  /* empty css */
7
- import { ref, watch, computed, createElementBlock, openBlock, createBlock, unref, createVNode, withCtx, createTextVNode, Fragment, renderList, normalizeClass, createElementVNode, createCommentVNode, toDisplayString, normalizeStyle } from "vue";
9
+ import { getCurrentInstance, ref, computed, resolveComponent, createElementBlock, openBlock, createBlock, createVNode, unref, withCtx, createTextVNode, Fragment, renderList, normalizeClass, createCommentVNode, createElementVNode, withModifiers, toDisplayString, normalizeStyle, isRef } from "vue";
10
+ import { useStore } from "../../../../../../node_modules/vuex/dist/vuex.esm-bundler.mjs";
8
11
  /* empty css */
9
12
  import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.mjs";
10
13
  import { Loading } from "../../../../node_modules/vant/es/loading/index.mjs";
11
14
  import { Steps } from "../../../../node_modules/vant/es/steps/index.mjs";
12
15
  import { Step } from "../../../../node_modules/vant/es/step/index.mjs";
16
+ import { Icon } from "../../../../node_modules/vant/es/icon/index.mjs";
17
+ import { Popup } from "../../../../node_modules/vant/es/popup/index.mjs";
13
18
  const _hoisted_1 = { class: "fec-mobile-approval-timeline" };
14
19
  const _hoisted_2 = {
15
20
  key: 0,
16
21
  class: "fec-timeline-loading"
17
22
  };
18
- const _hoisted_3 = { class: "fec-step-square" };
19
- const _hoisted_4 = { class: "fec-step-square-text" };
20
- const _hoisted_5 = { class: "fec-step-square" };
21
- const _hoisted_6 = { class: "fec-step-square-text" };
22
- const _hoisted_7 = { class: "fec-step-square" };
23
- const _hoisted_8 = { class: "fec-step-square-text" };
24
- const _hoisted_9 = { class: "fec-step-header" };
25
- const _hoisted_10 = { class: "fec-step-title" };
26
- const _hoisted_11 = { class: "fec-step-name" };
27
- const _hoisted_12 = {
23
+ const _hoisted_3 = {
24
+ key: 0,
25
+ class: "fec-step-square-text"
26
+ };
27
+ const _hoisted_4 = {
28
+ key: 1,
29
+ class: "fec-step-square-text"
30
+ };
31
+ const _hoisted_5 = {
32
+ key: 0,
33
+ class: "fec-step-square-text"
34
+ };
35
+ const _hoisted_6 = {
36
+ key: 1,
37
+ class: "fec-step-square-text"
38
+ };
39
+ const _hoisted_7 = {
40
+ key: 2,
41
+ class: "fec-step-square-text"
42
+ };
43
+ const _hoisted_8 = { class: "fec-step-title" };
44
+ const _hoisted_9 = ["onClick"];
45
+ const _hoisted_10 = {
28
46
  key: 0,
29
47
  class: "fec-step-role"
30
48
  };
31
- const _hoisted_13 = { class: "fec-step-header-right" };
32
- const _hoisted_14 = { class: "fec-step-time" };
49
+ const _hoisted_11 = { class: "fec-step-header-right" };
50
+ const _hoisted_12 = { class: "fec-step-time" };
51
+ const _hoisted_13 = {
52
+ key: 0,
53
+ class: "fec-step-title"
54
+ };
55
+ const _hoisted_14 = ["onClick"];
33
56
  const _hoisted_15 = {
57
+ key: 0,
58
+ class: "fec-step-role"
59
+ };
60
+ const _hoisted_16 = {
61
+ key: 1,
62
+ class: "fec-step-title"
63
+ };
64
+ const _hoisted_17 = ["onClick"];
65
+ const _hoisted_18 = { class: "fec-step-header-right" };
66
+ const _hoisted_19 = { class: "fec-step-time" };
67
+ const _hoisted_20 = {
34
68
  key: 0,
35
69
  class: "fec-step-desc"
36
70
  };
37
- const _hoisted_16 = { class: "fec-step-opinion" };
38
- const _hoisted_17 = {
71
+ const _hoisted_21 = { class: "fec-step-opinion" };
72
+ const _hoisted_22 = ["onClick"];
73
+ const _hoisted_23 = {
74
+ key: 0,
75
+ class: "fec-step-desc-toggle"
76
+ };
77
+ const _hoisted_24 = { key: 1 };
78
+ const _hoisted_25 = { class: "fec-step-desc-popup" };
79
+ const _hoisted_26 = { class: "fec-step-desc-popup-content" };
80
+ const _hoisted_27 = { class: "fec-assignee-popup" };
81
+ const _hoisted_28 = { class: "fec-assignee-list" };
82
+ const _hoisted_29 = { class: "fec-assignee-avatar" };
83
+ const _hoisted_30 = { class: "fec-assignee-info" };
84
+ const _hoisted_31 = { class: "fec-assignee-name" };
85
+ const _hoisted_32 = {
39
86
  key: 0,
40
- class: "fec-step-desc-text"
87
+ class: "fec-assignee-no"
41
88
  };
42
- const _sfc_main = {
89
+ const NAME_MAX_LENGTH = 16;
90
+ const DESC_MAX_LINES = 4;
91
+ const _sfc_main = /* @__PURE__ */ Object.assign({
92
+ name: "AppTimeLine"
93
+ }, {
43
94
  __name: "AppTimeLine",
44
95
  props: {
45
96
  // 业务主键号
@@ -47,168 +98,128 @@ const _sfc_main = {
47
98
  type: String,
48
99
  default: ""
49
100
  },
50
- // 图标映射(可配置)
51
- iconMap: {
52
- type: Object,
53
- default: () => ({
54
- 同意: { color: "#52c41a", icon: "✓" },
55
- 打回: { color: "#f5222d", icon: "✕" },
56
- 终止: { color: "#f5222d", icon: "■" },
57
- 发起流程: { color: "#52c41a", icon: "✓" },
58
- 当前任务: { color: "#fa8c16", icon: "○" }
59
- })
101
+ hisTaskData: {
102
+ type: Array,
103
+ default: []
60
104
  }
61
105
  },
62
106
  setup(__props) {
107
+ const store = useStore();
63
108
  const props = __props;
109
+ const currentInstance = getCurrentInstance();
110
+ const ctx = currentInstance.proxy;
64
111
  const loading = ref(false);
65
112
  const hisTask = ref([]);
66
113
  const task = ref([]);
67
- const mockData = {
68
- task: [
69
- {
70
- taskDefinitionKey: "UserTask_05pjyxs",
71
- name: "业务部负责人审批",
72
- createTime: "2026-06-16 14:37:03",
73
- taskId: "c9b2007a-694d-11f1-bc9c-5405db9932f3",
74
- duration: "35分10秒",
75
- assignee: [
76
- {
77
- opName: "大鹏租赁业务部主管",
78
- opNo: "dpzl02",
79
- userId: "14c87112e7324486aec4721abf14f1f1"
80
- },
81
- {
82
- opName: "王永超",
83
- opNo: "wych",
84
- userId: "6ae80b11533adcf510ec44632ce69213"
85
- },
86
- {
87
- opName: "管理员",
88
- opNo: "admin",
89
- userId: "ae1d74c1f44ea40dfd9c9f30d45b3084"
90
- },
91
- {
92
- opName: "业务部负责人",
93
- opNo: "0002",
94
- userId: "ff1825c49ee45bda61413461bed41ba0"
95
- }
96
- ],
97
- taskType: "task"
98
- }
99
- ],
100
- hisTask: [
101
- {
102
- taskDefinitionKey: "UserTask_1gwjv5e",
103
- name: "业务经理发起",
104
- createTime: "2026-06-16 14:26:24",
105
- taskType: "task",
106
- taskId: "4c5d747e-694c-11f1-b0e9-5405db9932f3",
107
- assignee: "huyanming",
108
- assigneeName: "huyanming",
109
- endTime: "2026-06-16 14:37:03",
110
- endDate: "2026-06-16 14:37:03",
111
- duration: "10分39秒",
112
- approveName: "同意",
113
- approveDesc: "123123123"
114
- },
115
- {
116
- taskDefinitionKey: "UserTask_1c82hgw",
117
- name: "风控部负责人",
118
- createTime: "2026-06-16 14:20:39",
119
- taskType: "task",
120
- taskId: "7e7868d3-694b-11f1-b0e9-5405db9932f3",
121
- assignee: "admin",
122
- assigneeName: "管理员",
123
- endTime: "2026-06-16 14:26:24",
124
- endDate: "2026-06-16 14:26:24",
125
- duration: "5分45秒",
126
- approveName: "打回",
127
- approveDesc: "打回审批意见111111"
128
- },
129
- {
130
- taskDefinitionKey: "UserTask_080zfmp",
131
- name: "风控经理",
132
- createTime: "2026-06-15 16:47:02",
133
- taskType: "task",
134
- taskId: "c76f76b6-6896-11f1-8f11-f64eb4e04b4b",
135
- assignee: "admin",
136
- assigneeName: "管理员",
137
- endTime: "2026-06-16 14:20:36",
138
- endDate: "2026-06-16 14:20:36",
139
- duration: "21小时33分",
140
- approveName: "同意",
141
- approveDesc: "222222222"
142
- },
143
- {
144
- taskDefinitionKey: "UserTask_05pjyxs",
145
- name: "业务部负责人审批",
146
- createTime: "2026-06-03 17:34:07",
147
- taskType: "task",
148
- taskId: "5e59eff6-5f2f-11f1-ab6a-fa163ecd6953",
149
- assignee: "admin",
150
- assigneeName: "管理员",
151
- endTime: "2026-06-15 16:47:02",
152
- endDate: "2026-06-15 16:47:02",
153
- duration: "11天23小时",
154
- approveName: "同意",
155
- approveDesc: "同意"
156
- },
157
- {
158
- taskDefinitionKey: "UserTask_1gwjv5e",
159
- name: "业务经理发起",
160
- createTime: "2026-06-03 17:34:07",
161
- taskType: "task",
162
- taskId: "5e409b8f-5f2f-11f1-ab6a-fa163ecd6953",
163
- assignee: "huyanming",
164
- assigneeName: "huyanming",
165
- endTime: "2026-06-03 17:34:07",
166
- endDate: "2026-06-03 17:34:07",
167
- duration: "149毫秒",
168
- approveName: "发起流程",
169
- approveDesc: ""
170
- }
171
- ]
172
- };
173
- watch(
174
- () => props.traceNo,
175
- (val) => {
176
- if (val) {
177
- fetchData();
178
- } else {
179
- hisTask.value = [];
180
- task.value = [];
181
- }
182
- },
183
- { immediate: true }
184
- );
114
+ const showDescPopup = ref(false);
115
+ const descText = ref("");
116
+ const showAssigneePopup = ref(false);
117
+ const currentAssignees = ref([]);
118
+ function isDescOverflow(item) {
119
+ const desc = getOpinionDesc(item);
120
+ if (!desc) return false;
121
+ const charsPerLine = 21;
122
+ const maxChars = charsPerLine * DESC_MAX_LINES;
123
+ const lines = desc.split("\n");
124
+ let totalLines = 0;
125
+ for (const line of lines) {
126
+ totalLines += Math.ceil((line.length || 1) / charsPerLine);
127
+ }
128
+ return totalLines > DESC_MAX_LINES || desc.length > maxChars;
129
+ }
130
+ function onDescClick(item) {
131
+ descText.value = getOpinionDesc(item);
132
+ showDescPopup.value = true;
133
+ }
134
+ function hasMultipleAssignees(item) {
135
+ return Array.isArray(item.assignee) && item.assignee.length > 1;
136
+ }
137
+ function getDisplayName(item) {
138
+ const full = getName(item) || "";
139
+ if (full.length > NAME_MAX_LENGTH) {
140
+ return full.slice(0, NAME_MAX_LENGTH) + "...";
141
+ }
142
+ return full;
143
+ }
144
+ function onAssigneeClick(item) {
145
+ if (!hasMultipleAssignees(item)) return;
146
+ currentAssignees.value = item.assignee || [];
147
+ showAssigneePopup.value = true;
148
+ }
149
+ if (props.traceNo) {
150
+ fetchData();
151
+ } else if (props.hisTaskData.length > 0) {
152
+ hisTask.value = props.hisTaskData;
153
+ task.value = [];
154
+ } else {
155
+ hisTask.value = [];
156
+ task.value = [];
157
+ }
185
158
  function fetchData() {
186
159
  loading.value = true;
187
- setTimeout(() => {
188
- hisTask.value = mockData.hisTask || [];
189
- task.value = mockData.task || [];
160
+ ctx.$http.postForm(
161
+ "/base-server/flow/flowData/findTimeLineByTraceNo",
162
+ {
163
+ traceNo: props.traceNo,
164
+ type: "app",
165
+ taskDefKey: ""
166
+ },
167
+ false
168
+ ).then((data) => {
169
+ hisTask.value = data.hisTask || [];
170
+ const tempTask = data.task || [];
171
+ tempTask.forEach((task2) => {
172
+ if (task2.taskType == "signTask") {
173
+ const filteredOutList = [];
174
+ task2.signTaskList.forEach((signTask) => {
175
+ const taskId = signTask.taskId;
176
+ hisTask.value = hisTask.value.filter((hisTask2) => {
177
+ if (hisTask2.taskType == "signTask") {
178
+ const data2 = hisTask2.signTaskList.find(
179
+ (item) => item.taskId == taskId
180
+ );
181
+ if (data2) {
182
+ filteredOutList.push(hisTask2);
183
+ return false;
184
+ }
185
+ }
186
+ return true;
187
+ });
188
+ });
189
+ if (filteredOutList.length > 0) {
190
+ task2.signTaskList = filteredOutList[0].signTaskList;
191
+ }
192
+ }
193
+ });
194
+ task.value = tempTask;
190
195
  loading.value = false;
191
- }, 300);
196
+ });
192
197
  }
193
198
  const timelineList = computed(() => {
194
199
  const list = [];
195
- const his = (hisTask.value || []).slice().sort((a, b) => {
196
- return new Date(a.createTime) - new Date(b.createTime);
197
- });
198
- his.forEach((item) => {
199
- list.push({ ...item, __type: "history" });
200
- });
201
200
  (task.value || []).forEach((item) => {
202
201
  list.push({ ...item, __type: "current" });
203
202
  });
203
+ hisTask.value.forEach((item) => {
204
+ list.push({ ...item, __type: "history" });
205
+ });
204
206
  return list;
205
207
  });
206
208
  function getName(item) {
207
- var _a;
208
209
  if (item.__type === "current" && Array.isArray(item.assignee)) {
209
- return ((_a = item.assignee[0]) == null ? void 0 : _a.opName) || "未知";
210
+ return item.assignee.map((v) => v.opName).filter((v) => {
211
+ if (item.taskType == "signTask") {
212
+ if (v.opNo == store.getters.user.opNo) {
213
+ return true;
214
+ } else {
215
+ return false;
216
+ }
217
+ } else {
218
+ return true;
219
+ }
220
+ }).join(",") || "未知";
210
221
  }
211
- return item.assigneeName || item.name || "未知";
222
+ return item.assigneeName || "";
212
223
  }
213
224
  function getRole(item) {
214
225
  return item.name || "";
@@ -219,7 +230,7 @@ const _sfc_main = {
219
230
  }
220
231
  function getOpinion(item) {
221
232
  if (item.__type === "current") {
222
- return "待审批";
233
+ return "";
223
234
  }
224
235
  return item.approveName || "";
225
236
  }
@@ -228,29 +239,44 @@ const _sfc_main = {
228
239
  return item.approveDesc || "";
229
240
  }
230
241
  function getIconColor(item) {
231
- var _a;
232
242
  if (item.__type === "current") {
233
- return ((_a = props.iconMap["当前任务"]) == null ? void 0 : _a.color) || "#fa8c16";
243
+ return "#FF7D00";
234
244
  }
235
- const opinion = item.approveName || "";
236
- if (props.iconMap[opinion]) {
237
- return props.iconMap[opinion].color;
245
+ const approveType = (item.approveType || "").trim();
246
+ const first = approveType.charAt(0).toUpperCase();
247
+ switch (first) {
248
+ case "C":
249
+ return "#00B42A";
250
+ case "R":
251
+ return "#FFC53D";
252
+ case "E":
253
+ return "#F53F3F";
254
+ case "G":
255
+ return "#86909C";
256
+ default:
257
+ return "#69b1ff";
238
258
  }
239
- if (opinion.includes("同意") || opinion.includes("发起")) return "#52c41a";
240
- if (opinion.includes("打回") || opinion.includes("终止") || opinion.includes("拒绝"))
241
- return "#f5222d";
242
- return "#52c41a";
243
259
  }
244
260
  function getIconText(item) {
245
- var _a;
246
261
  if (item.__type === "current") {
247
- return ((_a = props.iconMap["当前任务"]) == null ? void 0 : _a.icon) || "○";
262
+ return "ellipsis";
248
263
  }
249
- const opinion = item.approveName || "";
250
- if (props.iconMap[opinion]) {
251
- return props.iconMap[opinion].icon;
264
+ const approveType = (item.approveType || "").trim();
265
+ const first = approveType.charAt(0).toUpperCase();
266
+ switch (first) {
267
+ case "0":
268
+ return "play";
269
+ case "C":
270
+ return "success";
271
+ case "R":
272
+ return "revoke";
273
+ case "E":
274
+ return "cross";
275
+ case "G":
276
+ return "minus";
277
+ default:
278
+ return "success";
252
279
  }
253
- return "✓";
254
280
  }
255
281
  function formatTime(time) {
256
282
  if (!time) return "";
@@ -263,23 +289,26 @@ const _sfc_main = {
263
289
  }
264
290
  return (_ctx, _cache) => {
265
291
  const _component_van_loading = Loading;
292
+ const _component_van_icon = Icon;
293
+ const _component_AppTimeLine = resolveComponent("AppTimeLine", true);
266
294
  const _component_van_step = Step;
267
295
  const _component_van_steps = Steps;
296
+ const _component_van_popup = Popup;
268
297
  return openBlock(), createElementBlock("div", _hoisted_1, [
269
298
  unref(loading) ? (openBlock(), createElementBlock("div", _hoisted_2, [
270
299
  createVNode(_component_van_loading, {
271
300
  size: "20",
272
301
  color: "#999"
273
302
  }, {
274
- default: withCtx(() => _cache[0] || (_cache[0] = [
303
+ default: withCtx(() => _cache[2] || (_cache[2] = [
275
304
  createTextVNode("加载中...")
276
305
  ])),
277
306
  _: 1
278
307
  })
279
308
  ])) : (openBlock(), createBlock(_component_van_steps, {
280
309
  key: 1,
310
+ active: -1,
281
311
  direction: "vertical",
282
- active: unref(timelineList).length - 1,
283
312
  "active-color": "#52c41a",
284
313
  "inactive-icon": "circle",
285
314
  class: "fec-steps"
@@ -290,51 +319,153 @@ const _sfc_main = {
290
319
  key: item.taskId || index,
291
320
  class: normalizeClass(["fec-step", `fec-step-${item.__type}`])
292
321
  }, {
293
- "finish-icon": withCtx(() => [
294
- createElementVNode("div", _hoisted_3, [
295
- createElementVNode("span", _hoisted_4, toDisplayString(getInitial(item)), 1)
296
- ])
297
- ]),
298
- "active-icon": withCtx(() => [
299
- createElementVNode("div", _hoisted_5, [
300
- createElementVNode("span", _hoisted_6, toDisplayString(getInitial(item)), 1)
301
- ])
302
- ]),
303
322
  "inactive-icon": withCtx(() => [
304
- createElementVNode("div", _hoisted_7, [
305
- createElementVNode("span", _hoisted_8, toDisplayString(getInitial(item)), 1)
306
- ])
323
+ item.__type == "current" ? (openBlock(), createElementBlock("div", {
324
+ key: 0,
325
+ class: normalizeClass(["fec-step-square", item.taskType || "task"]),
326
+ style: { "background-color": "#ffaf5c" }
327
+ }, [
328
+ item.taskType == "task" ? (openBlock(), createElementBlock("span", _hoisted_3, toDisplayString(getInitial(item)), 1)) : item.taskType == "signTask" ? (openBlock(), createElementBlock("span", _hoisted_4, " 会 ")) : createCommentVNode("", true),
329
+ createElementVNode("span", {
330
+ class: "fec-step-icon",
331
+ style: normalizeStyle({ background: getIconColor(item) })
332
+ }, [
333
+ createVNode(_component_van_icon, {
334
+ name: getIconText(item)
335
+ }, null, 8, ["name"])
336
+ ], 4)
337
+ ], 2)) : (openBlock(), createElementBlock("div", {
338
+ key: 1,
339
+ class: normalizeClass(["fec-step-square", item.taskType || "task"])
340
+ }, [
341
+ !item.taskType || item.taskType == "task" ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(getInitial(item)), 1)) : item.taskType == "signTask" ? (openBlock(), createElementBlock("span", _hoisted_6, " 会 ")) : (openBlock(), createElementBlock("span", _hoisted_7, " ? ")),
342
+ !item.taskType || item.taskType == "task" ? (openBlock(), createElementBlock("span", {
343
+ key: 3,
344
+ class: "fec-step-icon",
345
+ style: normalizeStyle({ background: getIconColor(item) })
346
+ }, [
347
+ createVNode(_component_van_icon, {
348
+ name: getIconText(item)
349
+ }, null, 8, ["name"])
350
+ ], 4)) : createCommentVNode("", true)
351
+ ], 2))
307
352
  ]),
308
353
  default: withCtx(() => [
309
- createElementVNode("div", _hoisted_9, [
310
- createElementVNode("div", _hoisted_10, [
311
- createElementVNode("span", _hoisted_11, toDisplayString(getName(item)), 1),
312
- getRole(item) ? (openBlock(), createElementBlock("span", _hoisted_12, toDisplayString(getRole(item)), 1)) : createCommentVNode("", true)
354
+ item.__type == "current" ? (openBlock(), createElementBlock("div", {
355
+ key: 0,
356
+ class: normalizeClass(["fec-step-header", item.taskType || "task"])
357
+ }, [
358
+ createElementVNode("div", _hoisted_8, [
359
+ createElementVNode("span", {
360
+ class: normalizeClass(["fec-step-name", { "is-clickable": hasMultipleAssignees(item) }]),
361
+ onClick: withModifiers(($event) => hasMultipleAssignees(item) && onAssigneeClick(item), ["stop"])
362
+ }, toDisplayString(getDisplayName(item) || "其他处理人"), 11, _hoisted_9),
363
+ getRole(item) ? (openBlock(), createElementBlock("span", _hoisted_10, toDisplayString(getRole(item)), 1)) : createCommentVNode("", true)
313
364
  ]),
314
- createElementVNode("div", _hoisted_13, [
315
- createElementVNode("div", _hoisted_14, toDisplayString(formatTime(item.endTime || item.createTime)), 1),
316
- getOpinion(item) ? (openBlock(), createElementBlock("div", _hoisted_15, [
317
- createElementVNode("span", {
318
- class: "fec-step-icon",
319
- style: normalizeStyle({ background: getIconColor(item) })
320
- }, toDisplayString(getIconText(item)), 5),
321
- createElementVNode("span", _hoisted_16, toDisplayString(getOpinion(item)), 1)
365
+ createElementVNode("div", _hoisted_11, [
366
+ createElementVNode("div", _hoisted_12, toDisplayString(formatTime(item.createTime)), 1)
367
+ ])
368
+ ], 2)) : (openBlock(), createElementBlock("div", {
369
+ key: 1,
370
+ class: normalizeClass(["fec-step-header", item.taskType || "task"])
371
+ }, [
372
+ !item.taskType || item.taskType == "task" ? (openBlock(), createElementBlock("div", _hoisted_13, [
373
+ createElementVNode("span", {
374
+ class: normalizeClass(["fec-step-name", { "is-clickable": hasMultipleAssignees(item) }]),
375
+ onClick: withModifiers(($event) => hasMultipleAssignees(item) && onAssigneeClick(item), ["stop"])
376
+ }, toDisplayString(getDisplayName(item)), 11, _hoisted_14),
377
+ getRole(item) ? (openBlock(), createElementBlock("span", _hoisted_15, toDisplayString(getRole(item)), 1)) : createCommentVNode("", true)
378
+ ])) : item.taskType == "signTask" ? (openBlock(), createElementBlock("div", _hoisted_16, [
379
+ createElementVNode("span", {
380
+ class: normalizeClass(["fec-step-name", { "is-clickable": hasMultipleAssignees(item) }]),
381
+ onClick: withModifiers(($event) => hasMultipleAssignees(item) && onAssigneeClick(item), ["stop"])
382
+ }, toDisplayString(getDisplayName(item) || item.name), 11, _hoisted_17)
383
+ ])) : createCommentVNode("", true),
384
+ createElementVNode("div", _hoisted_18, [
385
+ createElementVNode("div", _hoisted_19, toDisplayString(formatTime(item.endTime || item.createTime)), 1),
386
+ getOpinion(item) ? (openBlock(), createElementBlock("div", _hoisted_20, [
387
+ createElementVNode("span", _hoisted_21, toDisplayString(getOpinion(item)), 1)
322
388
  ])) : createCommentVNode("", true)
323
389
  ])
324
- ]),
325
- getOpinionDesc(item) ? (openBlock(), createElementBlock("div", _hoisted_17, toDisplayString(getOpinionDesc(item)), 1)) : createCommentVNode("", true)
390
+ ], 2)),
391
+ item.__type != "current" ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
392
+ (!item.taskType || item.taskType == "task") && getOpinionDesc(item) ? (openBlock(), createElementBlock("div", {
393
+ key: 0,
394
+ class: "fec-step-desc-text-wrap",
395
+ onClick: ($event) => isDescOverflow(item) && onDescClick(item)
396
+ }, [
397
+ createElementVNode("div", {
398
+ class: normalizeClass(["fec-step-desc-text", { "is-collapsed": isDescOverflow(item) }])
399
+ }, toDisplayString(getOpinionDesc(item)), 3),
400
+ isDescOverflow(item) ? (openBlock(), createElementBlock("span", _hoisted_23, " 点击查看全部 ")) : createCommentVNode("", true)
401
+ ], 8, _hoisted_22)) : item.taskType == "signTask" ? (openBlock(), createElementBlock("div", _hoisted_24, [
402
+ createVNode(_component_AppTimeLine, {
403
+ hisTaskData: item.signTaskList
404
+ }, null, 8, ["hisTaskData"])
405
+ ])) : createCommentVNode("", true)
406
+ ], 64)) : item.__type == "current" && item.taskType == "signTask" ? (openBlock(), createBlock(_component_AppTimeLine, {
407
+ key: 3,
408
+ hisTaskData: item.signTaskList
409
+ }, null, 8, ["hisTaskData"])) : createCommentVNode("", true)
326
410
  ]),
327
411
  _: 2
328
412
  }, 1032, ["class"]);
329
413
  }), 128))
330
414
  ]),
331
415
  _: 1
332
- }, 8, ["active"]))
416
+ })),
417
+ createVNode(_component_van_popup, {
418
+ show: unref(showDescPopup),
419
+ "onUpdate:show": _cache[0] || (_cache[0] = ($event) => isRef(showDescPopup) ? showDescPopup.value = $event : null),
420
+ round: "",
421
+ position: "bottom",
422
+ style: { maxHeight: "70%" },
423
+ closeable: "",
424
+ teleport: "body"
425
+ }, {
426
+ default: withCtx(() => [
427
+ createElementVNode("div", _hoisted_25, [
428
+ _cache[3] || (_cache[3] = createElementVNode("div", { class: "fec-step-desc-popup-title" }, "审批意见", -1)),
429
+ createElementVNode("div", _hoisted_26, toDisplayString(unref(descText)), 1)
430
+ ])
431
+ ]),
432
+ _: 1
433
+ }, 8, ["show"]),
434
+ createVNode(_component_van_popup, {
435
+ show: unref(showAssigneePopup),
436
+ "onUpdate:show": _cache[1] || (_cache[1] = ($event) => isRef(showAssigneePopup) ? showAssigneePopup.value = $event : null),
437
+ round: "",
438
+ position: "bottom",
439
+ style: { maxHeight: "60%" },
440
+ closeable: "",
441
+ teleport: "body"
442
+ }, {
443
+ default: withCtx(() => [
444
+ createElementVNode("div", _hoisted_27, [
445
+ _cache[4] || (_cache[4] = createElementVNode("div", { class: "fec-assignee-popup-title" }, "审批人", -1)),
446
+ createElementVNode("div", _hoisted_28, [
447
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(currentAssignees), (a) => {
448
+ return openBlock(), createElementBlock("div", {
449
+ key: a.userId || a.opNo,
450
+ class: "fec-assignee-item"
451
+ }, [
452
+ createElementVNode("div", _hoisted_29, toDisplayString((a.opName || "").charAt(0)), 1),
453
+ createElementVNode("div", _hoisted_30, [
454
+ createElementVNode("div", _hoisted_31, toDisplayString(a.opName), 1),
455
+ a.opNo ? (openBlock(), createElementBlock("div", _hoisted_32, toDisplayString(a.opNo), 1)) : createCommentVNode("", true)
456
+ ])
457
+ ]);
458
+ }), 128))
459
+ ])
460
+ ])
461
+ ]),
462
+ _: 1
463
+ }, 8, ["show"])
333
464
  ]);
334
465
  };
335
466
  }
336
- };
337
- const _TimeLineFilter = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-ca283130"]]);
467
+ });
468
+ const _TimeLineFilter = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-723b161c"]]);
338
469
  export {
339
470
  _TimeLineFilter as default
340
471
  };