@fecp/designer 5.5.101 → 5.5.103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/designer/package.json.mjs +1 -1
- package/es/designer.css +322 -33
- package/es/packages/mobile/index.mjs +4 -0
- package/es/packages/mobile/src/components/all.mjs +4 -0
- package/es/packages/mobile/src/components/custom/appDetail/AppDetail.vue.mjs +30 -7
- package/es/packages/mobile/src/components/custom/approvalBar/ApprovalBar.vue.mjs +191 -0
- package/es/packages/mobile/src/components/custom/approvalBar/index.mjs +10 -0
- package/es/packages/mobile/src/components/custom/approvalList/ApprovalList.vue.mjs +391 -0
- package/es/packages/mobile/src/components/custom/approvalList/index.mjs +10 -0
- package/es/packages/mobile/src/components/dataDisplay/cardList/CardList.vue.mjs +2 -18
- package/es/packages/mobile/src/components/dataDisplay/table/Table.vue.mjs +41 -9
- package/es/packages/mobile/src/components/form/field/Field.vue.mjs +38 -26
- package/es/packages/mobile/src/components/form/fieldArea/FieldArea.vue.mjs +4 -2
- package/es/packages/mobile/src/components/form/fieldCalendarPicker/FieldCalendarPicker.vue.mjs +1 -1
- package/es/packages/mobile/src/components/form/fieldCascaderPicker/fieldCascaderPicker.vue.mjs +1 -1
- package/es/packages/mobile/src/components/form/fieldDatePicker/FieldDatePicker.vue.mjs +1 -1
- package/es/packages/mobile/src/components/form/fieldDateTimePicker/FieldDateTimePicker.vue.mjs +1 -1
- package/es/packages/mobile/src/components/form/fieldIndustry/FieldIndustry.vue.mjs +38 -27
- package/es/packages/mobile/src/components/form/fieldPicker/FieldPicker.vue.mjs +58 -41
- package/es/packages/mobile/src/components/form/fieldTimePicker/FieldTimePicker.vue.mjs +1 -1
- package/es/packages/mobile/src/components/navigation/tabs/Tabs.vue.mjs +8 -3
- package/es/packages/mobile/src/composables/usePageEvents.mjs +80 -0
- package/es/packages/mobile/src/index.vue.mjs +8 -5
- package/es/packages/mobile/src/page.vue.mjs +150 -19
- package/es/packages/mobile/src/utils/datasource.mjs +12 -1
- package/es/packages/mobile/src/utils/eventFlow/actionHandlers.mjs +852 -0
- package/es/packages/mobile/src/utils/eventFlow/eventFlowHandler.mjs +94 -0
- package/es/packages/mobile/src/utils/eventFlowParser.mjs +396 -0
- package/es/packages/mobile/src/utils/formatterUtil.mjs +1 -0
- package/es/packages/mobile/src/utils/parseFilterConfig.mjs +98 -0
- package/es/packages/vue/src/components/forms/subTable/SubTable.vue.mjs +2 -2
- package/lib/designer/package.json.js +1 -1
- package/lib/designer.css +322 -33
- package/lib/packages/mobile/index.js +6 -2
- package/lib/packages/mobile/src/components/all.js +4 -0
- package/lib/packages/mobile/src/components/custom/appDetail/AppDetail.vue.js +29 -6
- package/lib/packages/mobile/src/components/custom/approvalBar/ApprovalBar.vue.js +191 -0
- package/lib/packages/mobile/src/components/custom/approvalBar/index.js +10 -0
- package/lib/packages/mobile/src/components/custom/approvalList/ApprovalList.vue.js +391 -0
- package/lib/packages/mobile/src/components/custom/approvalList/index.js +10 -0
- package/lib/packages/mobile/src/components/dataDisplay/cardList/CardList.vue.js +2 -18
- package/lib/packages/mobile/src/components/dataDisplay/table/Table.vue.js +41 -9
- package/lib/packages/mobile/src/components/form/field/Field.vue.js +37 -25
- package/lib/packages/mobile/src/components/form/fieldArea/FieldArea.vue.js +4 -2
- package/lib/packages/mobile/src/components/form/fieldCalendarPicker/FieldCalendarPicker.vue.js +1 -1
- package/lib/packages/mobile/src/components/form/fieldCascaderPicker/fieldCascaderPicker.vue.js +1 -1
- package/lib/packages/mobile/src/components/form/fieldDatePicker/FieldDatePicker.vue.js +1 -1
- package/lib/packages/mobile/src/components/form/fieldDateTimePicker/FieldDateTimePicker.vue.js +1 -1
- package/lib/packages/mobile/src/components/form/fieldIndustry/FieldIndustry.vue.js +37 -26
- package/lib/packages/mobile/src/components/form/fieldPicker/FieldPicker.vue.js +57 -40
- package/lib/packages/mobile/src/components/form/fieldTimePicker/FieldTimePicker.vue.js +1 -1
- package/lib/packages/mobile/src/components/navigation/tabs/Tabs.vue.js +8 -3
- package/lib/packages/mobile/src/composables/usePageEvents.js +80 -0
- package/lib/packages/mobile/src/index.vue.js +8 -5
- package/lib/packages/mobile/src/page.vue.js +149 -18
- package/lib/packages/mobile/src/utils/datasource.js +14 -3
- package/lib/packages/mobile/src/utils/eventFlow/actionHandlers.js +852 -0
- package/lib/packages/mobile/src/utils/eventFlow/eventFlowHandler.js +94 -0
- package/lib/packages/mobile/src/utils/eventFlowParser.js +396 -0
- package/lib/packages/mobile/src/utils/formatterUtil.js +1 -0
- package/lib/packages/mobile/src/utils/parseFilterConfig.js +98 -0
- package/lib/packages/vue/src/components/forms/subTable/SubTable.vue.js +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
/* empty css */
|
|
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
|
+
import { getCurrentInstance, ref, createElementBlock, openBlock, createVNode, unref, isRef, withCtx, createElementVNode, Fragment, renderList, toDisplayString, normalizeStyle, createTextVNode } from "vue";
|
|
12
|
+
/* empty css */
|
|
13
|
+
import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.mjs";
|
|
14
|
+
import { Tabs } from "../../../../node_modules/vant/es/tabs/index.mjs";
|
|
15
|
+
import { Tab } from "../../../../node_modules/vant/es/tab/index.mjs";
|
|
16
|
+
import { Icon } from "../../../../node_modules/vant/es/icon/index.mjs";
|
|
17
|
+
import { Button } from "../../../../node_modules/vant/es/button/index.mjs";
|
|
18
|
+
const _hoisted_1 = { class: "fec-mobile-approval-list" };
|
|
19
|
+
const _hoisted_2 = { class: "fec-tab-content" };
|
|
20
|
+
const _hoisted_3 = { class: "fec-list" };
|
|
21
|
+
const _hoisted_4 = { class: "fec-card-header" };
|
|
22
|
+
const _hoisted_5 = { class: "fec-card-title" };
|
|
23
|
+
const _hoisted_6 = { class: "fec-card-body" };
|
|
24
|
+
const _hoisted_7 = { class: "fec-card-message" };
|
|
25
|
+
const _hoisted_8 = { class: "fec-card-sn" };
|
|
26
|
+
const _hoisted_9 = { class: "fec-card-value" };
|
|
27
|
+
const _hoisted_10 = { class: "fec-card-footer" };
|
|
28
|
+
const _hoisted_11 = { class: "fec-card-time" };
|
|
29
|
+
const _hoisted_12 = { class: "fec-card-actions" };
|
|
30
|
+
const _hoisted_13 = { class: "fec-tab-content" };
|
|
31
|
+
const _hoisted_14 = { class: "fec-list" };
|
|
32
|
+
const _hoisted_15 = { class: "fec-card-header" };
|
|
33
|
+
const _hoisted_16 = { class: "fec-card-title" };
|
|
34
|
+
const _hoisted_17 = { class: "fec-card-body" };
|
|
35
|
+
const _hoisted_18 = { class: "fec-card-message" };
|
|
36
|
+
const _hoisted_19 = { class: "fec-card-sn" };
|
|
37
|
+
const _hoisted_20 = { class: "fec-card-value" };
|
|
38
|
+
const _hoisted_21 = { class: "fec-card-footer" };
|
|
39
|
+
const _hoisted_22 = { class: "fec-card-time" };
|
|
40
|
+
const _hoisted_23 = { class: "fec-card-actions" };
|
|
41
|
+
const _hoisted_24 = { class: "fec-tab-content" };
|
|
42
|
+
const _hoisted_25 = { class: "fec-list" };
|
|
43
|
+
const _hoisted_26 = { class: "fec-card-header" };
|
|
44
|
+
const _hoisted_27 = { class: "fec-card-title" };
|
|
45
|
+
const _hoisted_28 = { class: "fec-card-body" };
|
|
46
|
+
const _hoisted_29 = { class: "fec-card-message" };
|
|
47
|
+
const _hoisted_30 = { class: "fec-card-sn" };
|
|
48
|
+
const _hoisted_31 = { class: "fec-card-value" };
|
|
49
|
+
const _hoisted_32 = { class: "fec-card-footer" };
|
|
50
|
+
const _hoisted_33 = { class: "fec-card-time" };
|
|
51
|
+
const _hoisted_34 = { class: "fec-card-actions" };
|
|
52
|
+
const _sfc_main = {
|
|
53
|
+
__name: "ApprovalList",
|
|
54
|
+
props: {},
|
|
55
|
+
setup(__props) {
|
|
56
|
+
const currentInstance = getCurrentInstance();
|
|
57
|
+
const ctx = currentInstance.proxy;
|
|
58
|
+
ctx.route;
|
|
59
|
+
const activeName = ref("todo");
|
|
60
|
+
const todoList = [
|
|
61
|
+
{
|
|
62
|
+
id: 1,
|
|
63
|
+
title: "项目立项申请",
|
|
64
|
+
message: "客户李四提交了一笔新办公设备采购项目立项,请您审批。",
|
|
65
|
+
sn: "1100202406150001",
|
|
66
|
+
arriveTime: "30分钟前",
|
|
67
|
+
statusText: "待处理",
|
|
68
|
+
statusColor: "#fa8c16",
|
|
69
|
+
statusIcon: "clock-o",
|
|
70
|
+
actionText: "同意",
|
|
71
|
+
actionColor: "#52c41a"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: 2,
|
|
75
|
+
title: "合同审批",
|
|
76
|
+
message: "客户王五提交了一份销售合同,请您审批。",
|
|
77
|
+
sn: "1100202406150002",
|
|
78
|
+
arriveTime: "2小时前",
|
|
79
|
+
statusText: "已打回",
|
|
80
|
+
statusColor: "#722ed1",
|
|
81
|
+
statusIcon: "close",
|
|
82
|
+
actionText: "同意",
|
|
83
|
+
actionColor: "#52c41a"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
id: 3,
|
|
87
|
+
title: "付款申请",
|
|
88
|
+
message: "客户赵六提交了一笔供应商付款申请,请您审批。",
|
|
89
|
+
sn: "1100202406150003",
|
|
90
|
+
arriveTime: "2026-06-07 09:30:00",
|
|
91
|
+
statusText: "待处理",
|
|
92
|
+
statusColor: "#fa8c16",
|
|
93
|
+
statusIcon: "clock-o",
|
|
94
|
+
actionText: "同意",
|
|
95
|
+
actionColor: "#52c41a"
|
|
96
|
+
}
|
|
97
|
+
];
|
|
98
|
+
const doneList = [
|
|
99
|
+
{
|
|
100
|
+
id: 4,
|
|
101
|
+
title: "采购申请",
|
|
102
|
+
message: "客户孙七提交了一笔办公用品采购申请,处理中。",
|
|
103
|
+
sn: "1100202406140004",
|
|
104
|
+
arriveTime: "2026-06-06 14:30:00",
|
|
105
|
+
statusText: "处理中",
|
|
106
|
+
statusColor: "#1890ff",
|
|
107
|
+
statusIcon: "edit"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
id: 5,
|
|
111
|
+
title: "用车申请",
|
|
112
|
+
message: "客户周八提交了一笔商务用车申请,已完成。",
|
|
113
|
+
sn: "1100202406130005",
|
|
114
|
+
arriveTime: "2026-06-05 10:15:00",
|
|
115
|
+
statusText: "已完成",
|
|
116
|
+
statusColor: "#52c41a",
|
|
117
|
+
statusIcon: "checked"
|
|
118
|
+
}
|
|
119
|
+
];
|
|
120
|
+
const ccList = [
|
|
121
|
+
{
|
|
122
|
+
id: 6,
|
|
123
|
+
title: "会议通知",
|
|
124
|
+
message: "客户吴九提交了周一例会,请您知悉。",
|
|
125
|
+
sn: "1100202406150006",
|
|
126
|
+
arriveTime: "1小时前",
|
|
127
|
+
statusText: "处理中",
|
|
128
|
+
statusColor: "#1890ff",
|
|
129
|
+
statusIcon: "edit"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
id: 7,
|
|
133
|
+
title: "制度变更",
|
|
134
|
+
message: "客户郑十提交了新的考勤制度变更,请您知悉。",
|
|
135
|
+
sn: "1100202406140007",
|
|
136
|
+
arriveTime: "2026-06-07 16:45:00",
|
|
137
|
+
statusText: "已完成",
|
|
138
|
+
statusColor: "#52c41a",
|
|
139
|
+
statusIcon: "checked"
|
|
140
|
+
}
|
|
141
|
+
];
|
|
142
|
+
function formatTime(timeStr) {
|
|
143
|
+
if (!timeStr) return "";
|
|
144
|
+
if (timeStr.includes(":")) {
|
|
145
|
+
const time = new Date(timeStr.replace(/\-/g, "/"));
|
|
146
|
+
const now = /* @__PURE__ */ new Date();
|
|
147
|
+
const diff = now - time;
|
|
148
|
+
const oneDay = 24 * 60 * 60 * 1e3;
|
|
149
|
+
if (diff > oneDay) {
|
|
150
|
+
return timeStr;
|
|
151
|
+
}
|
|
152
|
+
const hours = Math.floor(diff / (60 * 60 * 1e3));
|
|
153
|
+
if (hours >= 1) {
|
|
154
|
+
return `${hours}小时前`;
|
|
155
|
+
}
|
|
156
|
+
const minutes = Math.floor(diff / (60 * 1e3));
|
|
157
|
+
return `${minutes}分钟前`;
|
|
158
|
+
}
|
|
159
|
+
return timeStr;
|
|
160
|
+
}
|
|
161
|
+
function onView(item) {
|
|
162
|
+
console.log("查看:", item);
|
|
163
|
+
}
|
|
164
|
+
function onApprove(item) {
|
|
165
|
+
console.log("同意:", item);
|
|
166
|
+
}
|
|
167
|
+
function onRevoke(item) {
|
|
168
|
+
console.log("撤销:", item);
|
|
169
|
+
}
|
|
170
|
+
return (_ctx, _cache) => {
|
|
171
|
+
const _component_van_icon = Icon;
|
|
172
|
+
const _component_van_button = Button;
|
|
173
|
+
const _component_van_tab = Tab;
|
|
174
|
+
const _component_van_tabs = Tabs;
|
|
175
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
176
|
+
createVNode(_component_van_tabs, {
|
|
177
|
+
sticky: "",
|
|
178
|
+
class: "fec-tabs",
|
|
179
|
+
active: unref(activeName),
|
|
180
|
+
"onUpdate:active": _cache[0] || (_cache[0] = ($event) => isRef(activeName) ? activeName.value = $event : null),
|
|
181
|
+
swipeable: "",
|
|
182
|
+
"lazy-render": ""
|
|
183
|
+
}, {
|
|
184
|
+
default: withCtx(() => [
|
|
185
|
+
createVNode(_component_van_tab, {
|
|
186
|
+
title: "待办",
|
|
187
|
+
name: "todo",
|
|
188
|
+
replace: "",
|
|
189
|
+
"show-zero-badge": false
|
|
190
|
+
}, {
|
|
191
|
+
default: withCtx(() => [
|
|
192
|
+
createElementVNode("div", _hoisted_2, [
|
|
193
|
+
createElementVNode("div", _hoisted_3, [
|
|
194
|
+
(openBlock(), createElementBlock(Fragment, null, renderList(todoList, (item) => {
|
|
195
|
+
return createElementVNode("div", {
|
|
196
|
+
key: item.id,
|
|
197
|
+
class: "fec-card"
|
|
198
|
+
}, [
|
|
199
|
+
createElementVNode("div", _hoisted_4, [
|
|
200
|
+
createElementVNode("span", _hoisted_5, toDisplayString(item.title), 1),
|
|
201
|
+
createElementVNode("span", {
|
|
202
|
+
class: "fec-card-status",
|
|
203
|
+
style: normalizeStyle({ background: item.statusColor })
|
|
204
|
+
}, [
|
|
205
|
+
createVNode(_component_van_icon, {
|
|
206
|
+
name: item.statusIcon,
|
|
207
|
+
size: "12"
|
|
208
|
+
}, null, 8, ["name"]),
|
|
209
|
+
createTextVNode(" " + toDisplayString(item.statusText), 1)
|
|
210
|
+
], 4)
|
|
211
|
+
]),
|
|
212
|
+
createElementVNode("div", _hoisted_6, [
|
|
213
|
+
createElementVNode("div", _hoisted_7, toDisplayString(item.message), 1),
|
|
214
|
+
createElementVNode("div", _hoisted_8, [
|
|
215
|
+
_cache[1] || (_cache[1] = createElementVNode("span", { class: "fec-card-label" }, "业务流水号:", -1)),
|
|
216
|
+
createElementVNode("span", _hoisted_9, toDisplayString(item.sn), 1)
|
|
217
|
+
])
|
|
218
|
+
]),
|
|
219
|
+
createElementVNode("div", _hoisted_10, [
|
|
220
|
+
createElementVNode("span", _hoisted_11, toDisplayString(formatTime(item.arriveTime)), 1),
|
|
221
|
+
createElementVNode("div", _hoisted_12, [
|
|
222
|
+
createVNode(_component_van_button, {
|
|
223
|
+
plain: "",
|
|
224
|
+
hairline: "",
|
|
225
|
+
round: "",
|
|
226
|
+
size: "small",
|
|
227
|
+
onClick: ($event) => onView(item)
|
|
228
|
+
}, {
|
|
229
|
+
default: withCtx(() => _cache[2] || (_cache[2] = [
|
|
230
|
+
createTextVNode(" 查看 ")
|
|
231
|
+
])),
|
|
232
|
+
_: 2
|
|
233
|
+
}, 1032, ["onClick"]),
|
|
234
|
+
createVNode(_component_van_button, {
|
|
235
|
+
type: "primary",
|
|
236
|
+
round: "",
|
|
237
|
+
size: "small",
|
|
238
|
+
onClick: ($event) => onApprove(item)
|
|
239
|
+
}, {
|
|
240
|
+
default: withCtx(() => [
|
|
241
|
+
createTextVNode(toDisplayString(item.actionText || "同意"), 1)
|
|
242
|
+
]),
|
|
243
|
+
_: 2
|
|
244
|
+
}, 1032, ["onClick"])
|
|
245
|
+
])
|
|
246
|
+
])
|
|
247
|
+
]);
|
|
248
|
+
}), 64))
|
|
249
|
+
])
|
|
250
|
+
])
|
|
251
|
+
]),
|
|
252
|
+
_: 1
|
|
253
|
+
}),
|
|
254
|
+
createVNode(_component_van_tab, {
|
|
255
|
+
title: "已办",
|
|
256
|
+
name: "done",
|
|
257
|
+
replace: "",
|
|
258
|
+
"show-zero-badge": false
|
|
259
|
+
}, {
|
|
260
|
+
default: withCtx(() => [
|
|
261
|
+
createElementVNode("div", _hoisted_13, [
|
|
262
|
+
createElementVNode("div", _hoisted_14, [
|
|
263
|
+
(openBlock(), createElementBlock(Fragment, null, renderList(doneList, (item) => {
|
|
264
|
+
return createElementVNode("div", {
|
|
265
|
+
key: item.id,
|
|
266
|
+
class: "fec-card"
|
|
267
|
+
}, [
|
|
268
|
+
createElementVNode("div", _hoisted_15, [
|
|
269
|
+
createElementVNode("span", _hoisted_16, toDisplayString(item.title), 1),
|
|
270
|
+
createElementVNode("span", {
|
|
271
|
+
class: "fec-card-status",
|
|
272
|
+
style: normalizeStyle({ background: item.statusColor })
|
|
273
|
+
}, [
|
|
274
|
+
createVNode(_component_van_icon, {
|
|
275
|
+
name: item.statusIcon,
|
|
276
|
+
size: "12"
|
|
277
|
+
}, null, 8, ["name"]),
|
|
278
|
+
createTextVNode(" " + toDisplayString(item.statusText), 1)
|
|
279
|
+
], 4)
|
|
280
|
+
]),
|
|
281
|
+
createElementVNode("div", _hoisted_17, [
|
|
282
|
+
createElementVNode("div", _hoisted_18, toDisplayString(item.message), 1),
|
|
283
|
+
createElementVNode("div", _hoisted_19, [
|
|
284
|
+
_cache[3] || (_cache[3] = createElementVNode("span", { class: "fec-card-label" }, "业务流水号:", -1)),
|
|
285
|
+
createElementVNode("span", _hoisted_20, toDisplayString(item.sn), 1)
|
|
286
|
+
])
|
|
287
|
+
]),
|
|
288
|
+
createElementVNode("div", _hoisted_21, [
|
|
289
|
+
createElementVNode("span", _hoisted_22, toDisplayString(formatTime(item.arriveTime)), 1),
|
|
290
|
+
createElementVNode("div", _hoisted_23, [
|
|
291
|
+
createVNode(_component_van_button, {
|
|
292
|
+
plain: "",
|
|
293
|
+
hairline: "",
|
|
294
|
+
round: "",
|
|
295
|
+
size: "small",
|
|
296
|
+
onClick: ($event) => onView(item)
|
|
297
|
+
}, {
|
|
298
|
+
default: withCtx(() => _cache[4] || (_cache[4] = [
|
|
299
|
+
createTextVNode(" 查看 ")
|
|
300
|
+
])),
|
|
301
|
+
_: 2
|
|
302
|
+
}, 1032, ["onClick"]),
|
|
303
|
+
createVNode(_component_van_button, {
|
|
304
|
+
type: "warning",
|
|
305
|
+
round: "",
|
|
306
|
+
size: "small",
|
|
307
|
+
onClick: ($event) => onRevoke(item)
|
|
308
|
+
}, {
|
|
309
|
+
default: withCtx(() => _cache[5] || (_cache[5] = [
|
|
310
|
+
createTextVNode(" 撤销 ")
|
|
311
|
+
])),
|
|
312
|
+
_: 2
|
|
313
|
+
}, 1032, ["onClick"])
|
|
314
|
+
])
|
|
315
|
+
])
|
|
316
|
+
]);
|
|
317
|
+
}), 64))
|
|
318
|
+
])
|
|
319
|
+
])
|
|
320
|
+
]),
|
|
321
|
+
_: 1
|
|
322
|
+
}),
|
|
323
|
+
createVNode(_component_van_tab, {
|
|
324
|
+
title: "抄送",
|
|
325
|
+
name: "cc",
|
|
326
|
+
replace: "",
|
|
327
|
+
"show-zero-badge": false
|
|
328
|
+
}, {
|
|
329
|
+
default: withCtx(() => [
|
|
330
|
+
createElementVNode("div", _hoisted_24, [
|
|
331
|
+
createElementVNode("div", _hoisted_25, [
|
|
332
|
+
(openBlock(), createElementBlock(Fragment, null, renderList(ccList, (item) => {
|
|
333
|
+
return createElementVNode("div", {
|
|
334
|
+
key: item.id,
|
|
335
|
+
class: "fec-card"
|
|
336
|
+
}, [
|
|
337
|
+
createElementVNode("div", _hoisted_26, [
|
|
338
|
+
createElementVNode("span", _hoisted_27, toDisplayString(item.title), 1),
|
|
339
|
+
createElementVNode("span", {
|
|
340
|
+
class: "fec-card-status",
|
|
341
|
+
style: normalizeStyle({ background: item.statusColor })
|
|
342
|
+
}, [
|
|
343
|
+
createVNode(_component_van_icon, {
|
|
344
|
+
name: item.statusIcon,
|
|
345
|
+
size: "12"
|
|
346
|
+
}, null, 8, ["name"]),
|
|
347
|
+
createTextVNode(" " + toDisplayString(item.statusText), 1)
|
|
348
|
+
], 4)
|
|
349
|
+
]),
|
|
350
|
+
createElementVNode("div", _hoisted_28, [
|
|
351
|
+
createElementVNode("div", _hoisted_29, toDisplayString(item.message), 1),
|
|
352
|
+
createElementVNode("div", _hoisted_30, [
|
|
353
|
+
_cache[6] || (_cache[6] = createElementVNode("span", { class: "fec-card-label" }, "业务流水号:", -1)),
|
|
354
|
+
createElementVNode("span", _hoisted_31, toDisplayString(item.sn), 1)
|
|
355
|
+
])
|
|
356
|
+
]),
|
|
357
|
+
createElementVNode("div", _hoisted_32, [
|
|
358
|
+
createElementVNode("span", _hoisted_33, toDisplayString(formatTime(item.arriveTime)), 1),
|
|
359
|
+
createElementVNode("div", _hoisted_34, [
|
|
360
|
+
createVNode(_component_van_button, {
|
|
361
|
+
plain: "",
|
|
362
|
+
hairline: "",
|
|
363
|
+
round: "",
|
|
364
|
+
size: "small",
|
|
365
|
+
onClick: ($event) => onView(item)
|
|
366
|
+
}, {
|
|
367
|
+
default: withCtx(() => _cache[7] || (_cache[7] = [
|
|
368
|
+
createTextVNode(" 查看 ")
|
|
369
|
+
])),
|
|
370
|
+
_: 2
|
|
371
|
+
}, 1032, ["onClick"])
|
|
372
|
+
])
|
|
373
|
+
])
|
|
374
|
+
]);
|
|
375
|
+
}), 64))
|
|
376
|
+
])
|
|
377
|
+
])
|
|
378
|
+
]),
|
|
379
|
+
_: 1
|
|
380
|
+
})
|
|
381
|
+
]),
|
|
382
|
+
_: 1
|
|
383
|
+
}, 8, ["active"])
|
|
384
|
+
]);
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
};
|
|
388
|
+
const _ApprovalList = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-5cd7ed05"]]);
|
|
389
|
+
export {
|
|
390
|
+
_ApprovalList as default
|
|
391
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import _ApprovalList from "./ApprovalList.vue.mjs";
|
|
2
|
+
import install from "../../../utils/install.mjs";
|
|
3
|
+
const MobileApprovalList = install.withInstall(
|
|
4
|
+
"MobileApprovalList",
|
|
5
|
+
_ApprovalList
|
|
6
|
+
);
|
|
7
|
+
export {
|
|
8
|
+
MobileApprovalList,
|
|
9
|
+
MobileApprovalList as default
|
|
10
|
+
};
|
|
@@ -15,9 +15,6 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
15
15
|
compId: {
|
|
16
16
|
type: String
|
|
17
17
|
},
|
|
18
|
-
currentPage: {
|
|
19
|
-
type: Object
|
|
20
|
-
},
|
|
21
18
|
modelValue: {
|
|
22
19
|
type: Array,
|
|
23
20
|
default: []
|
|
@@ -81,22 +78,9 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
81
78
|
const ctx = currentInstance.proxy;
|
|
82
79
|
const listRef = ref();
|
|
83
80
|
onMounted(() => {
|
|
84
|
-
var _a, _b
|
|
81
|
+
var _a, _b;
|
|
85
82
|
(_b = (_a = listRef.value) == null ? void 0 : _a.$el) == null ? void 0 : _b.closest(".device-content");
|
|
86
83
|
initDataSourceManager();
|
|
87
|
-
if (props.compId) {
|
|
88
|
-
if (props.autoHeight) {
|
|
89
|
-
const component = (_c = props.currentPage.layoutData) == null ? void 0 : _c.find(
|
|
90
|
-
(f) => {
|
|
91
|
-
var _a2;
|
|
92
|
-
return ((_a2 = f.component) == null ? void 0 : _a2.id) == props.compId;
|
|
93
|
-
}
|
|
94
|
-
);
|
|
95
|
-
const wrapperDom = (_e = (_d = listRef.value) == null ? void 0 : _d.$el) == null ? void 0 : _e.closest(".grid-wrapper");
|
|
96
|
-
const wrapperHeight = wrapperDom.offsetHeight;
|
|
97
|
-
component.h = wrapperHeight / 10;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
84
|
});
|
|
101
85
|
function eventHandler(funcName, rowData) {
|
|
102
86
|
console.log("🚀 ~ eventHandler ~ funcName, rowData:", funcName, rowData);
|
|
@@ -219,7 +203,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
219
203
|
};
|
|
220
204
|
}
|
|
221
205
|
});
|
|
222
|
-
const _CardList = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
206
|
+
const _CardList = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-38039905"]]);
|
|
223
207
|
export {
|
|
224
208
|
_CardList as default
|
|
225
209
|
};
|
|
@@ -7,6 +7,7 @@ import { VxeGrid } from "vxe-table";
|
|
|
7
7
|
import { createDataSource } from "../../../utils/datasource.mjs";
|
|
8
8
|
/* empty css */
|
|
9
9
|
import { textFormatter, dateFormatter, cascadeFormatter, multipleFormatter, selectFormatter } from "../../../utils/formatterUtil.mjs";
|
|
10
|
+
import { getOptions } from "../../../utils/optionUtil.mjs";
|
|
10
11
|
/* empty css */
|
|
11
12
|
/* empty css */
|
|
12
13
|
/* empty css */
|
|
@@ -96,6 +97,14 @@ const _sfc_main = {
|
|
|
96
97
|
type: Array,
|
|
97
98
|
default: () => []
|
|
98
99
|
},
|
|
100
|
+
formData: {
|
|
101
|
+
type: Object,
|
|
102
|
+
default: {}
|
|
103
|
+
},
|
|
104
|
+
fields: {
|
|
105
|
+
type: Array,
|
|
106
|
+
default: () => []
|
|
107
|
+
},
|
|
99
108
|
pageSize: {
|
|
100
109
|
type: Number,
|
|
101
110
|
default: 10
|
|
@@ -154,8 +163,22 @@ const _sfc_main = {
|
|
|
154
163
|
const compHeight = computed(() => {
|
|
155
164
|
return "100%";
|
|
156
165
|
});
|
|
157
|
-
const columnOptions =
|
|
158
|
-
|
|
166
|
+
const columnOptions = ref([]);
|
|
167
|
+
async function initColumnOptions() {
|
|
168
|
+
const columns = [...props.columns];
|
|
169
|
+
for (const col of columns) {
|
|
170
|
+
if (col.dataType == "select" || col.dataType == "multiple") {
|
|
171
|
+
const options = await getOptions({
|
|
172
|
+
ctx,
|
|
173
|
+
dataSources: props.dataSources,
|
|
174
|
+
formData: props.formData,
|
|
175
|
+
fields: props.fields,
|
|
176
|
+
...col.optionConfig
|
|
177
|
+
});
|
|
178
|
+
col.options = options;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
columns.forEach((col) => {
|
|
159
182
|
const newCol = { ...col };
|
|
160
183
|
switch (newCol.dataType) {
|
|
161
184
|
case "select":
|
|
@@ -208,9 +231,10 @@ const _sfc_main = {
|
|
|
208
231
|
newCol.showOverflow = true;
|
|
209
232
|
newCol.showHeaderOverflow = true;
|
|
210
233
|
newCol.showFooterOverflow = true;
|
|
211
|
-
|
|
234
|
+
columnOptions.value.push(newCol);
|
|
212
235
|
});
|
|
213
|
-
}
|
|
236
|
+
}
|
|
237
|
+
initColumnOptions();
|
|
214
238
|
function isEmpty(cellValue) {
|
|
215
239
|
return !cellValue && cellValue !== 0;
|
|
216
240
|
}
|
|
@@ -324,6 +348,12 @@ const _sfc_main = {
|
|
|
324
348
|
const error = ref(false);
|
|
325
349
|
const listError = ref(false);
|
|
326
350
|
let pageNo = 1;
|
|
351
|
+
const pageSize = computed(() => {
|
|
352
|
+
if (props.scrollLoad) {
|
|
353
|
+
return props.pageSize;
|
|
354
|
+
}
|
|
355
|
+
return -1;
|
|
356
|
+
});
|
|
327
357
|
function initDataSourceManager() {
|
|
328
358
|
dataSourceManager.value = createDataSource({
|
|
329
359
|
http: ctx.$http,
|
|
@@ -331,8 +361,10 @@ const _sfc_main = {
|
|
|
331
361
|
currentDataSourceId: props.dataSourceValue,
|
|
332
362
|
pagination: {
|
|
333
363
|
pageNo,
|
|
334
|
-
pageSize:
|
|
335
|
-
}
|
|
364
|
+
pageSize: pageSize.value
|
|
365
|
+
},
|
|
366
|
+
data: props.formData,
|
|
367
|
+
fields: props.fields
|
|
336
368
|
// data: hiddenFormData.value,
|
|
337
369
|
// fields: fieldsData.value,
|
|
338
370
|
// sortRules: localConfig.value.sortRules,
|
|
@@ -373,11 +405,11 @@ const _sfc_main = {
|
|
|
373
405
|
async function call() {
|
|
374
406
|
var _a;
|
|
375
407
|
try {
|
|
376
|
-
dataSourceManager.value.updatePagination(pageNo,
|
|
408
|
+
dataSourceManager.value.updatePagination(pageNo, pageSize.value);
|
|
377
409
|
await dataSourceManager.value.fetch();
|
|
378
410
|
const data = ((_a = dataSourceManager.value) == null ? void 0 : _a.getData().list) || [];
|
|
379
411
|
tableData.value.push(...data);
|
|
380
|
-
if (data.length <
|
|
412
|
+
if (data.length < pageSize.value) {
|
|
381
413
|
if (props.isFixedHead) {
|
|
382
414
|
finished.value = true;
|
|
383
415
|
} else {
|
|
@@ -574,7 +606,7 @@ const _sfc_main = {
|
|
|
574
606
|
};
|
|
575
607
|
}
|
|
576
608
|
};
|
|
577
|
-
const _Table = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
609
|
+
const _Table = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-77c6ee76"]]);
|
|
578
610
|
export {
|
|
579
611
|
_Table as default
|
|
580
612
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/* empty css */
|
|
4
4
|
/* empty css */
|
|
5
5
|
/* empty css */
|
|
6
|
-
import {
|
|
6
|
+
import { getCurrentInstance, computed, ref, watch, createElementBlock, openBlock, Fragment, createVNode, withDirectives, renderSlot, mergeProps, unref, isRef, createSlots, renderList, withCtx, createElementVNode, toDisplayString, createTextVNode, vModelText } from "vue";
|
|
7
7
|
import { getUnit, textFormatter, textFormatter4Input, reverseTextFormatter } from "../../../utils/formatterUtil.mjs";
|
|
8
8
|
import { useCursor } from "../../../utils/use-cursor.mjs";
|
|
9
9
|
/* empty css */
|
|
@@ -37,42 +37,44 @@ const _sfc_main = {
|
|
|
37
37
|
showUnit: {
|
|
38
38
|
type: Boolean,
|
|
39
39
|
default: true
|
|
40
|
-
}
|
|
40
|
+
},
|
|
41
|
+
maxlength: {
|
|
42
|
+
type: Number,
|
|
43
|
+
default: 0
|
|
44
|
+
},
|
|
45
|
+
formData: Object
|
|
41
46
|
},
|
|
42
47
|
emits: ["openPicker", "update:modelValue"],
|
|
43
48
|
setup(__props, { emit: __emit }) {
|
|
44
49
|
const props = __props;
|
|
50
|
+
const instance = getCurrentInstance();
|
|
51
|
+
const ctx = instance.proxy;
|
|
52
|
+
const realMaxLength = computed(() => {
|
|
53
|
+
return Math.floor(props.maxLength / (ctx.$dbFieldLengthRatio || 1)) || "-";
|
|
54
|
+
});
|
|
45
55
|
const unit = ref("");
|
|
46
56
|
const fieldInputRef = ref();
|
|
47
57
|
const [recordCursor, setCursor] = useCursor();
|
|
48
58
|
const emit = __emit;
|
|
49
59
|
const textValue = ref("");
|
|
50
60
|
const compValue = computed({
|
|
51
|
-
get: () =>
|
|
52
|
-
if (!props.fieldType || props.fieldType == "text") {
|
|
53
|
-
unit.value = getUnit(props.dataFormatter);
|
|
54
|
-
if (props.readonly) {
|
|
55
|
-
textValue.value = textFormatter(props.modelValue, props.dataFormatter);
|
|
56
|
-
} else {
|
|
57
|
-
textValue.value = textFormatter4Input(
|
|
58
|
-
props.modelValue,
|
|
59
|
-
props.dataFormatter
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
} else {
|
|
63
|
-
textValue.value = props.modelValue;
|
|
64
|
-
}
|
|
65
|
-
return props.modelValue;
|
|
66
|
-
},
|
|
61
|
+
get: () => props.modelValue,
|
|
67
62
|
set: (val) => {
|
|
68
63
|
emit("update:modelValue", val);
|
|
69
64
|
}
|
|
70
65
|
});
|
|
71
|
-
watch(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
66
|
+
watch(
|
|
67
|
+
() => props.modelValue,
|
|
68
|
+
(newVal) => {
|
|
69
|
+
unit.value = getUnit(props.dataFormatter);
|
|
70
|
+
if (!props.fieldType || props.fieldType === "text") {
|
|
71
|
+
textValue.value = textFormatter(newVal, props.dataFormatter);
|
|
72
|
+
} else {
|
|
73
|
+
textValue.value = newVal;
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{ immediate: true, flush: "post" }
|
|
77
|
+
);
|
|
76
78
|
const compClickable = computed(() => {
|
|
77
79
|
if (props.disabled || props.readonly) {
|
|
78
80
|
return false;
|
|
@@ -120,8 +122,10 @@ const _sfc_main = {
|
|
|
120
122
|
const _component_van_field = Field;
|
|
121
123
|
return openBlock(), createElementBlock(Fragment, null, [
|
|
122
124
|
createVNode(_component_van_field, mergeProps(_ctx.$attrs, {
|
|
125
|
+
type: _ctx.$attrs.type == "number" ? "text" : _ctx.$attrs.type,
|
|
123
126
|
modelValue: unref(textValue),
|
|
124
127
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(textValue) ? textValue.value = $event : null),
|
|
128
|
+
maxlength: unref(realMaxLength),
|
|
125
129
|
disabled: __props.disabled,
|
|
126
130
|
readonly: __props.readonly,
|
|
127
131
|
clearable: "",
|
|
@@ -132,7 +136,8 @@ const _sfc_main = {
|
|
|
132
136
|
ref: fieldInputRef,
|
|
133
137
|
onInput: handleInput,
|
|
134
138
|
onCompositionstart: handleCompositionStart,
|
|
135
|
-
onCompositionend: handleCompositionEnd
|
|
139
|
+
onCompositionend: handleCompositionEnd,
|
|
140
|
+
"input-align": "right"
|
|
136
141
|
}), createSlots({ _: 2 }, [
|
|
137
142
|
renderList(_ctx.$slots, (item, key) => {
|
|
138
143
|
return {
|
|
@@ -142,14 +147,21 @@ const _sfc_main = {
|
|
|
142
147
|
])
|
|
143
148
|
};
|
|
144
149
|
}),
|
|
150
|
+
__props.disabled ? {
|
|
151
|
+
name: "input",
|
|
152
|
+
fn: withCtx(() => [
|
|
153
|
+
createElementVNode("div", null, toDisplayString(unref(textValue)), 1)
|
|
154
|
+
]),
|
|
155
|
+
key: "0"
|
|
156
|
+
} : void 0,
|
|
145
157
|
__props.showUnit && unref(unit) ? {
|
|
146
158
|
name: "button",
|
|
147
159
|
fn: withCtx(() => [
|
|
148
160
|
createTextVNode(toDisplayString(unref(unit)), 1)
|
|
149
161
|
]),
|
|
150
|
-
key: "
|
|
162
|
+
key: "1"
|
|
151
163
|
} : void 0
|
|
152
|
-
]), 1040, ["modelValue", "disabled", "readonly", "clickable"]),
|
|
164
|
+
]), 1040, ["type", "modelValue", "maxlength", "disabled", "readonly", "clickable"]),
|
|
153
165
|
withDirectives(createElementVNode("input", {
|
|
154
166
|
type: "hidden",
|
|
155
167
|
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => isRef(compValue) ? compValue.value = $event : null)
|