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