@fecp/designer 5.5.111 → 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 (103) 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/dialogGlobal/index.vue2.mjs +1 -1
  8. package/es/designer/src/packages/eventFlow/dialog/action/RiskSch.vue.mjs +1 -1
  9. package/es/designer/src/packages/form/property/approvalHistory.vue.mjs +1 -1
  10. package/es/designer/src/packages/form/property/contract.vue.mjs +1 -1
  11. package/es/designer/src/packages/form/property/document.vue.mjs +25 -11
  12. package/es/designer/src/packages/form/property/subForm.vue.mjs +1 -1
  13. package/es/designer/src/packages/prod/index.vue.mjs +1 -1
  14. package/es/designer/src/packages/table/headerBtn.vue.mjs +1 -1
  15. package/es/designer.css +554 -132
  16. package/es/packages/mobile/index.mjs +2 -2
  17. package/es/packages/mobile/src/components/all.mjs +4 -2
  18. package/es/packages/mobile/src/components/custom/appDetail/AppDetail.vue.mjs +40 -11
  19. package/es/packages/mobile/src/components/custom/appTimeLine/AppTimeLine.vue.mjs +471 -0
  20. package/es/packages/mobile/src/components/custom/appTimeLine/index.mjs +10 -0
  21. package/es/packages/mobile/src/components/custom/approvalBar/ApprovalBar.vue.mjs +142 -62
  22. package/es/packages/mobile/src/components/custom/approvalList/ApprovalCard.vue.mjs +7 -6
  23. package/es/packages/mobile/src/components/custom/approvalList/ApprovalList.vue.mjs +168 -52
  24. package/es/packages/mobile/src/components/custom/document/Document.vue.mjs +258 -0
  25. package/es/packages/mobile/src/components/custom/document/assets/404.png.mjs +4 -0
  26. package/es/packages/mobile/src/components/custom/document/assets/audio.png.mjs +4 -0
  27. package/es/packages/mobile/src/components/custom/document/assets/black.png.mjs +4 -0
  28. package/es/packages/mobile/src/components/custom/document/assets/exl.png.mjs +4 -0
  29. package/es/packages/mobile/src/components/custom/document/assets/folder.png.mjs +4 -0
  30. package/es/packages/mobile/src/components/custom/document/assets/img.png.mjs +4 -0
  31. package/es/packages/mobile/src/components/custom/document/assets/other.png.mjs +4 -0
  32. package/es/packages/mobile/src/components/custom/document/assets/pdf.png.mjs +4 -0
  33. package/es/packages/mobile/src/components/custom/document/assets/ppt.png.mjs +4 -0
  34. package/es/packages/mobile/src/components/custom/document/assets/rar.png.mjs +4 -0
  35. package/es/packages/mobile/src/components/custom/document/assets/supp.png.mjs +4 -0
  36. package/es/packages/mobile/src/components/custom/document/assets/txt.png.mjs +4 -0
  37. package/es/packages/mobile/src/components/custom/document/assets/upload.png.mjs +4 -0
  38. package/es/packages/mobile/src/components/custom/document/assets/uploadBu.png.mjs +4 -0
  39. package/es/packages/mobile/src/components/custom/document/assets/uploadBuHover.png.mjs +4 -0
  40. package/es/packages/mobile/src/components/custom/document/assets/uploadHover.png.mjs +4 -0
  41. package/es/packages/mobile/src/components/custom/document/assets/video.png.mjs +4 -0
  42. package/es/packages/mobile/src/components/custom/document/assets/word.png.mjs +4 -0
  43. package/es/packages/mobile/src/components/custom/document/index.mjs +10 -0
  44. package/es/packages/mobile/src/components/custom/timeLineFilter/index.mjs +1 -5
  45. package/es/packages/mobile/src/components/dataDisplay/menuGrid/MenuGrid.vue.mjs +2 -2
  46. package/es/packages/mobile/src/components/navigation/navBar/NavBar.vue.mjs +2 -2
  47. package/es/packages/mobile/src/components/navigation/tabs/Tabs.vue.mjs +15 -7
  48. package/es/packages/mobile/src/index.vue.mjs +3 -3
  49. package/es/packages/mobile/src/page.vue.mjs +53 -3
  50. package/es/packages/vue/src/components/bus/document/Document.vue.mjs +1 -1
  51. package/es/packages/vue/src/utils/datasource.mjs +5 -1
  52. package/lib/designer/package.json.js +1 -1
  53. package/lib/designer/src/components/DocumentParam.vue.js +1 -1
  54. package/lib/designer/src/components/ParamsConfig.vue2.js +1 -1
  55. package/lib/designer/src/layout/aside/HiddenFieldDialog.vue.js +1 -1
  56. package/lib/designer/src/packages/advancedFilter/ValueInput.vue2.js +1 -1
  57. package/lib/designer/src/packages/dataLinkage/index.vue.js +1 -1
  58. package/lib/designer/src/packages/dialogGlobal/index.vue2.js +1 -1
  59. package/lib/designer/src/packages/eventFlow/dialog/action/RiskSch.vue.js +1 -1
  60. package/lib/designer/src/packages/form/property/approvalHistory.vue.js +1 -1
  61. package/lib/designer/src/packages/form/property/contract.vue.js +1 -1
  62. package/lib/designer/src/packages/form/property/document.vue.js +27 -13
  63. package/lib/designer/src/packages/form/property/subForm.vue.js +1 -1
  64. package/lib/designer/src/packages/prod/index.vue.js +1 -1
  65. package/lib/designer/src/packages/table/headerBtn.vue.js +1 -1
  66. package/lib/designer.css +554 -132
  67. package/lib/packages/mobile/index.js +8 -8
  68. package/lib/packages/mobile/src/components/all.js +10 -8
  69. package/lib/packages/mobile/src/components/custom/appDetail/AppDetail.vue.js +39 -10
  70. package/lib/packages/mobile/src/components/custom/appTimeLine/AppTimeLine.vue.js +471 -0
  71. package/lib/packages/mobile/src/components/custom/appTimeLine/index.js +10 -0
  72. package/lib/packages/mobile/src/components/custom/approvalBar/ApprovalBar.vue.js +141 -61
  73. package/lib/packages/mobile/src/components/custom/approvalList/ApprovalCard.vue.js +7 -6
  74. package/lib/packages/mobile/src/components/custom/approvalList/ApprovalList.vue.js +168 -52
  75. package/lib/packages/mobile/src/components/custom/document/Document.vue.js +258 -0
  76. package/lib/packages/mobile/src/components/custom/document/assets/404.png.js +4 -0
  77. package/lib/packages/mobile/src/components/custom/document/assets/audio.png.js +4 -0
  78. package/lib/packages/mobile/src/components/custom/document/assets/black.png.js +4 -0
  79. package/lib/packages/mobile/src/components/custom/document/assets/exl.png.js +4 -0
  80. package/lib/packages/mobile/src/components/custom/document/assets/folder.png.js +4 -0
  81. package/lib/packages/mobile/src/components/custom/document/assets/img.png.js +4 -0
  82. package/lib/packages/mobile/src/components/custom/document/assets/other.png.js +4 -0
  83. package/lib/packages/mobile/src/components/custom/document/assets/pdf.png.js +4 -0
  84. package/lib/packages/mobile/src/components/custom/document/assets/ppt.png.js +4 -0
  85. package/lib/packages/mobile/src/components/custom/document/assets/rar.png.js +4 -0
  86. package/lib/packages/mobile/src/components/custom/document/assets/supp.png.js +4 -0
  87. package/lib/packages/mobile/src/components/custom/document/assets/txt.png.js +4 -0
  88. package/lib/packages/mobile/src/components/custom/document/assets/upload.png.js +4 -0
  89. package/lib/packages/mobile/src/components/custom/document/assets/uploadBu.png.js +4 -0
  90. package/lib/packages/mobile/src/components/custom/document/assets/uploadBuHover.png.js +4 -0
  91. package/lib/packages/mobile/src/components/custom/document/assets/uploadHover.png.js +4 -0
  92. package/lib/packages/mobile/src/components/custom/document/assets/video.png.js +4 -0
  93. package/lib/packages/mobile/src/components/custom/document/assets/word.png.js +4 -0
  94. package/lib/packages/mobile/src/components/custom/document/index.js +10 -0
  95. package/lib/packages/mobile/src/components/custom/timeLineFilter/index.js +1 -4
  96. package/lib/packages/mobile/src/components/dataDisplay/menuGrid/MenuGrid.vue.js +2 -2
  97. package/lib/packages/mobile/src/components/navigation/navBar/NavBar.vue.js +2 -2
  98. package/lib/packages/mobile/src/components/navigation/tabs/Tabs.vue.js +14 -6
  99. package/lib/packages/mobile/src/index.vue.js +3 -3
  100. package/lib/packages/mobile/src/page.vue.js +53 -3
  101. package/lib/packages/vue/src/components/bus/document/Document.vue.js +1 -1
  102. package/lib/packages/vue/src/utils/datasource.js +5 -1
  103. package/package.json +1 -1
@@ -71,10 +71,10 @@ const index$10 = require("./src/components/navigation/tabbar/index.js");
71
71
  const index$11 = require("./src/components/navigation/tabbarItem/index.js");
72
72
  const index$12 = require("./src/components/navigation/treeSelect/index.js");
73
73
  const index$13 = require("./src/components/layout/layout/index.js");
74
- const index$14 = require("./src/components/custom/timeLineFilter/index.js");
75
- const index$15 = require("./src/components/custom/appDetail/index.js");
76
- const index$16 = require("./src/components/custom/approvalBar/index.js");
77
- const index$17 = require("./src/components/custom/approvalList/index.js");
74
+ const index$14 = require("./src/components/custom/appDetail/index.js");
75
+ const index$15 = require("./src/components/custom/approvalBar/index.js");
76
+ const index$16 = require("./src/components/custom/approvalList/index.js");
77
+ const index$17 = require("./src/components/custom/document/index.js");
78
78
  const functionCall = require("./node_modules/vant/es/dialog/function-call.js");
79
79
  const functionCall$1 = require("./node_modules/vant/es/image-preview/function-call.js");
80
80
  const functionCall$2 = require("./node_modules/vant/es/notify/function-call.js");
@@ -154,10 +154,10 @@ exports.MobileTabbar = index$10.MobileTabbar;
154
154
  exports.MobileTabbarItem = index$11.MobileTabbarItem;
155
155
  exports.MobileTreeSelect = index$12.MobileTreeSelect;
156
156
  exports.MobileLayout = index$13.MobileLayout;
157
- exports.MobileTimeLineFilter = index$14.MobileTimeLineFilter;
158
- exports.MobileAppDetail = index$15.MobileAppDetail;
159
- exports.MobileApprovalBar = index$16.MobileApprovalBar;
160
- exports.MobileApprovalList = index$17.MobileApprovalList;
157
+ exports.MobileAppDetail = index$14.MobileAppDetail;
158
+ exports.MobileApprovalBar = index$15.MobileApprovalBar;
159
+ exports.MobileApprovalList = index$16.MobileApprovalList;
160
+ exports.MobileDocument = index$17.MobileDocument;
161
161
  exports.closeDialog = functionCall.closeDialog;
162
162
  exports.showConfirmDialog = functionCall.showConfirmDialog;
163
163
  exports.showDialog = functionCall.showDialog;
@@ -67,10 +67,12 @@ const index$$ = require("./navigation/tabbar/index.js");
67
67
  const index$10 = require("./navigation/tabbarItem/index.js");
68
68
  const index$11 = require("./navigation/treeSelect/index.js");
69
69
  const index$12 = require("./layout/layout/index.js");
70
- const index$13 = require("./custom/timeLineFilter/index.js");
71
- const index$14 = require("./custom/appDetail/index.js");
72
- const index$15 = require("./custom/approvalBar/index.js");
73
- const index$16 = require("./custom/approvalList/index.js");
70
+ require("./custom/timeLineFilter/index.js");
71
+ const index$13 = require("./custom/appDetail/index.js");
72
+ const index$14 = require("./custom/approvalBar/index.js");
73
+ const index$15 = require("./custom/approvalList/index.js");
74
+ require("./custom/appTimeLine/index.js");
75
+ const index$16 = require("./custom/document/index.js");
74
76
  exports.MobileButton = index.MobileButton;
75
77
  exports.MobileIcon = index$1.MobileIcon;
76
78
  exports.MobileCell = index$2.MobileCell;
@@ -138,7 +140,7 @@ exports.MobileTabbar = index$$.MobileTabbar;
138
140
  exports.MobileTabbarItem = index$10.MobileTabbarItem;
139
141
  exports.MobileTreeSelect = index$11.MobileTreeSelect;
140
142
  exports.MobileLayout = index$12.MobileLayout;
141
- exports.MobileTimeLineFilter = index$13.MobileTimeLineFilter;
142
- exports.MobileAppDetail = index$14.MobileAppDetail;
143
- exports.MobileApprovalBar = index$15.MobileApprovalBar;
144
- exports.MobileApprovalList = index$16.MobileApprovalList;
143
+ exports.MobileAppDetail = index$13.MobileAppDetail;
144
+ exports.MobileApprovalBar = index$14.MobileApprovalBar;
145
+ exports.MobileApprovalList = index$15.MobileApprovalList;
146
+ exports.MobileDocument = index$16.MobileDocument;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const Vue = require("vue");
4
+ const index$1 = require("../appTimeLine/index.js");
5
+ const index = require("../document/index.js");
4
6
  ;/* empty css */
5
7
  const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.js");
6
8
  const _sfc_main = {
@@ -33,20 +35,37 @@ const _sfc_main = {
33
35
  actionBar: {
34
36
  type: Object
35
37
  },
36
- taskId: {
37
- type: String,
38
- default: ""
38
+ swipeable: {
39
+ type: Boolean,
40
+ default: true
39
41
  },
40
- taskType: {
42
+ operationPageId: {
41
43
  type: String,
42
44
  default: ""
43
45
  }
44
46
  },
45
47
  setup(__props) {
48
+ var _a, _b;
46
49
  const props = __props;
47
50
  const currentInstance = Vue.getCurrentInstance();
48
51
  const ctx = currentInstance.proxy;
49
52
  ctx.route;
53
+ const opinionTypeOptions = Vue.ref([]);
54
+ const taskData = { ...props.params.taskData };
55
+ const taskParams = { ...props.params };
56
+ delete taskParams.taskData;
57
+ ctx.$http.postForm(
58
+ "/base-server/flow/flowApproveDetail/findById",
59
+ {
60
+ taskId: (_a = props.params) == null ? void 0 : _a.taskId,
61
+ type: (_b = props.params) == null ? void 0 : _b.type
62
+ },
63
+ false
64
+ ).then((data) => {
65
+ opinionTypeOptions.value = data.approvalBtn.filter(
66
+ (item) => item.approveType != "C1"
67
+ );
68
+ });
50
69
  const activeName = Vue.ref("tab_base_info");
51
70
  const baseInfoPageId = Vue.ref("");
52
71
  if (props.baseInfoPageSource == "dynamic") ;
@@ -63,10 +82,14 @@ const _sfc_main = {
63
82
  ...props.options || []
64
83
  ];
65
84
  if (props.document) {
66
- tabs.push({ id: "tab_doc_info", title: "要件信息" });
85
+ tabs.push({ id: "tab_doc_info", title: "要件信息", component: index.MobileDocument });
67
86
  }
68
87
  if (props.approvalHistory) {
69
- tabs.push({ id: "tab_timeline_info", title: "审批历史" });
88
+ tabs.push({
89
+ id: "tab_timeline_info",
90
+ title: "审批历史",
91
+ component: index$1.MobileTimeLineFilter
92
+ });
70
93
  }
71
94
  return tabs;
72
95
  });
@@ -81,12 +104,18 @@ const _sfc_main = {
81
104
  modelValue: Vue.unref(activeName),
82
105
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => Vue.isRef(activeName) ? activeName.value = $event : null),
83
106
  options: Vue.unref(tabsOptions),
84
- params: __props.params
85
- }, null, 8, ["modelValue", "options", "params"]),
86
- __props.actionBar ? (Vue.openBlock(), Vue.createBlock(_component_FecMobileApprovalBar, Vue.normalizeProps(Vue.mergeProps({ key: 0 }, __props.actionBar)), null, 16)) : Vue.createCommentVNode("", true)
107
+ params: taskParams,
108
+ swipeable: __props.swipeable
109
+ }, null, 8, ["modelValue", "options", "swipeable"]),
110
+ __props.actionBar ? (Vue.openBlock(), Vue.createBlock(_component_FecMobileApprovalBar, Vue.mergeProps({ key: 0 }, __props.actionBar, {
111
+ params: taskParams,
112
+ taskData,
113
+ opinionTypeOptions: Vue.unref(opinionTypeOptions),
114
+ operationPageId: __props.operationPageId
115
+ }), null, 16, ["opinionTypeOptions", "operationPageId"])) : Vue.createCommentVNode("", true)
87
116
  ], 64);
88
117
  };
89
118
  }
90
119
  };
91
- const _AppDetail = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-ab2095bf"]]);
120
+ const _AppDetail = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-7df517b6"]]);
92
121
  exports.default = _AppDetail;
@@ -0,0 +1,471 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ ;/* empty css */
4
+ ;/* empty css */
5
+ ;/* empty css */
6
+ ;/* empty css */
7
+ ;/* empty css */
8
+ ;/* empty css */
9
+ ;/* empty css */
10
+ ;/* empty css */
11
+ const Vue = require("vue");
12
+ const vuex_esmBundler = require("../../../../../../node_modules/vuex/dist/vuex.esm-bundler.js");
13
+ ;/* empty css */
14
+ const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.js");
15
+ const index = require("../../../../node_modules/vant/es/loading/index.js");
16
+ const index$1 = require("../../../../node_modules/vant/es/steps/index.js");
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");
20
+ const _hoisted_1 = { class: "fec-mobile-approval-timeline" };
21
+ const _hoisted_2 = {
22
+ key: 0,
23
+ class: "fec-timeline-loading"
24
+ };
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 = {
48
+ key: 0,
49
+ class: "fec-step-role"
50
+ };
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"];
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 = {
70
+ key: 0,
71
+ class: "fec-step-desc"
72
+ };
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 = {
88
+ key: 0,
89
+ class: "fec-assignee-no"
90
+ };
91
+ const NAME_MAX_LENGTH = 16;
92
+ const DESC_MAX_LINES = 4;
93
+ const _sfc_main = /* @__PURE__ */ Object.assign({
94
+ name: "AppTimeLine"
95
+ }, {
96
+ __name: "AppTimeLine",
97
+ props: {
98
+ // 业务主键号
99
+ traceNo: {
100
+ type: String,
101
+ default: ""
102
+ },
103
+ hisTaskData: {
104
+ type: Array,
105
+ default: []
106
+ }
107
+ },
108
+ setup(__props) {
109
+ const store = vuex_esmBundler.useStore();
110
+ const props = __props;
111
+ const currentInstance = Vue.getCurrentInstance();
112
+ const ctx = currentInstance.proxy;
113
+ const loading = Vue.ref(false);
114
+ const hisTask = Vue.ref([]);
115
+ const task = Vue.ref([]);
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
+ }
160
+ function fetchData() {
161
+ loading.value = true;
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;
197
+ loading.value = false;
198
+ });
199
+ }
200
+ const timelineList = Vue.computed(() => {
201
+ const list = [];
202
+ (task.value || []).forEach((item) => {
203
+ list.push({ ...item, __type: "current" });
204
+ });
205
+ hisTask.value.forEach((item) => {
206
+ list.push({ ...item, __type: "history" });
207
+ });
208
+ return list;
209
+ });
210
+ function getName(item) {
211
+ if (item.__type === "current" && Array.isArray(item.assignee)) {
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(",") || "未知";
223
+ }
224
+ return item.assigneeName || "";
225
+ }
226
+ function getRole(item) {
227
+ return item.name || "";
228
+ }
229
+ function getInitial(item) {
230
+ const name = getName(item);
231
+ return name ? name.charAt(0) : "?";
232
+ }
233
+ function getOpinion(item) {
234
+ if (item.__type === "current") {
235
+ return "";
236
+ }
237
+ return item.approveName || "";
238
+ }
239
+ function getOpinionDesc(item) {
240
+ if (item.__type === "current") return "";
241
+ return item.approveDesc || "";
242
+ }
243
+ function getIconColor(item) {
244
+ if (item.__type === "current") {
245
+ return "#FF7D00";
246
+ }
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";
260
+ }
261
+ }
262
+ function getIconText(item) {
263
+ if (item.__type === "current") {
264
+ return "ellipsis";
265
+ }
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";
281
+ }
282
+ }
283
+ function formatTime(time) {
284
+ if (!time) return "";
285
+ const d = new Date(time);
286
+ if (isNaN(d.getTime())) return time;
287
+ const pad = (n) => String(n).padStart(2, "0");
288
+ return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(
289
+ d.getHours()
290
+ )}:${pad(d.getMinutes())}`;
291
+ }
292
+ return (_ctx, _cache) => {
293
+ const _component_van_loading = index.Loading;
294
+ const _component_van_icon = index$3.Icon;
295
+ const _component_AppTimeLine = Vue.resolveComponent("AppTimeLine", true);
296
+ const _component_van_step = index$2.Step;
297
+ const _component_van_steps = index$1.Steps;
298
+ const _component_van_popup = index$4.Popup;
299
+ return Vue.openBlock(), Vue.createElementBlock("div", _hoisted_1, [
300
+ Vue.unref(loading) ? (Vue.openBlock(), Vue.createElementBlock("div", _hoisted_2, [
301
+ Vue.createVNode(_component_van_loading, {
302
+ size: "20",
303
+ color: "#999"
304
+ }, {
305
+ default: Vue.withCtx(() => _cache[2] || (_cache[2] = [
306
+ Vue.createTextVNode("加载中...")
307
+ ])),
308
+ _: 1
309
+ })
310
+ ])) : (Vue.openBlock(), Vue.createBlock(_component_van_steps, {
311
+ key: 1,
312
+ active: -1,
313
+ direction: "vertical",
314
+ "active-color": "#52c41a",
315
+ "inactive-icon": "circle",
316
+ class: "fec-steps"
317
+ }, {
318
+ default: Vue.withCtx(() => [
319
+ (Vue.openBlock(true), Vue.createElementBlock(Vue.Fragment, null, Vue.renderList(Vue.unref(timelineList), (item, index2) => {
320
+ return Vue.openBlock(), Vue.createBlock(_component_van_step, {
321
+ key: item.taskId || index2,
322
+ class: Vue.normalizeClass(["fec-step", `fec-step-${item.__type}`])
323
+ }, {
324
+ "inactive-icon": Vue.withCtx(() => [
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))
354
+ ]),
355
+ default: Vue.withCtx(() => [
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)
366
+ ]),
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)
390
+ ])) : Vue.createCommentVNode("", true)
391
+ ])
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)
412
+ ]),
413
+ _: 2
414
+ }, 1032, ["class"]);
415
+ }), 128))
416
+ ]),
417
+ _: 1
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"])
466
+ ]);
467
+ };
468
+ }
469
+ });
470
+ const _TimeLineFilter = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-723b161c"]]);
471
+ exports.default = _TimeLineFilter;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const AppTimeLine = require("./AppTimeLine.vue.js");
4
+ const install = require("../../../utils/install.js");
5
+ const MobileTimeLineFilter = install.default.withInstall(
6
+ "MobileTimeLineFilter",
7
+ AppTimeLine.default
8
+ );
9
+ exports.MobileTimeLineFilter = MobileTimeLineFilter;
10
+ exports.default = MobileTimeLineFilter;