@rytass/bpm-core-react 0.20.1 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +1 -1
  3. package/dist/approval-instance-list-page.css +1 -1
  4. package/dist/chunks/FormBuilderView-DjPGrOJ2.cjs +4 -0
  5. package/dist/chunks/FormBuilderView-DjPGrOJ2.cjs.map +1 -0
  6. package/dist/chunks/{FormBuilderView-CFRiw04B.js → FormBuilderView-WtC2iW5f.js} +667 -584
  7. package/dist/chunks/FormBuilderView-WtC2iW5f.js.map +1 -0
  8. package/dist/chunks/{FormRendererView-lYSaR8CQ.cjs → FormRendererView-B-xycC9S.cjs} +3 -3
  9. package/dist/chunks/{FormRendererView-lYSaR8CQ.cjs.map → FormRendererView-B-xycC9S.cjs.map} +1 -1
  10. package/dist/chunks/{FormRendererView-GfbVWEGa.js → FormRendererView-BcQKUi1A.js} +238 -238
  11. package/dist/chunks/{FormRendererView-GfbVWEGa.js.map → FormRendererView-BcQKUi1A.js.map} +1 -1
  12. package/dist/chunks/approval-instance-list-page-Bth7Raya.js +724 -0
  13. package/dist/chunks/approval-instance-list-page-Bth7Raya.js.map +1 -0
  14. package/dist/chunks/approval-instance-list-page-Dcvo6TrT.cjs +2 -0
  15. package/dist/chunks/approval-instance-list-page-Dcvo6TrT.cjs.map +1 -0
  16. package/dist/chunks/{categories-DQUtVEiV.cjs → categories-CyyqG6wG.cjs} +2 -2
  17. package/dist/chunks/{categories-DQUtVEiV.cjs.map → categories-CyyqG6wG.cjs.map} +1 -1
  18. package/dist/chunks/{categories-BAdxjNSA.js → categories-f7E-RJEc.js} +9 -9
  19. package/dist/chunks/{categories-BAdxjNSA.js.map → categories-f7E-RJEc.js.map} +1 -1
  20. package/dist/chunks/{compose-Bb5bUVFd.cjs → compose-BKUTsB2W.cjs} +2 -2
  21. package/dist/chunks/{compose-Bb5bUVFd.cjs.map → compose-BKUTsB2W.cjs.map} +1 -1
  22. package/dist/chunks/{compose-egQlRjuZ.js → compose-DZvIspW3.js} +4 -4
  23. package/dist/chunks/{compose-egQlRjuZ.js.map → compose-DZvIspW3.js.map} +1 -1
  24. package/dist/chunks/{delegations-CVmtpkRn.cjs → delegations-ClRCwD1I.cjs} +2 -2
  25. package/dist/chunks/{delegations-CVmtpkRn.cjs.map → delegations-ClRCwD1I.cjs.map} +1 -1
  26. package/dist/chunks/{delegations-9-yvWWws.js → delegations-CqND-Qtz.js} +5 -5
  27. package/dist/chunks/{delegations-9-yvWWws.js.map → delegations-CqND-Qtz.js.map} +1 -1
  28. package/dist/chunks/{delegations-CrfjsH94.cjs → delegations-D43VDSz1.cjs} +2 -2
  29. package/dist/chunks/{delegations-CrfjsH94.cjs.map → delegations-D43VDSz1.cjs.map} +1 -1
  30. package/dist/chunks/{delegations-CxnNvTCc.js → delegations-zisffLwk.js} +5 -5
  31. package/dist/chunks/{delegations-CxnNvTCc.js.map → delegations-zisffLwk.js.map} +1 -1
  32. package/dist/chunks/{designer-CZDlQ9Nf.js → designer-CWubIE69.js} +1425 -1412
  33. package/dist/chunks/designer-CWubIE69.js.map +1 -0
  34. package/dist/chunks/designer-C_m8DmMl.cjs +69 -0
  35. package/dist/chunks/designer-C_m8DmMl.cjs.map +1 -0
  36. package/dist/chunks/{detail-ByZV1XaI.js → detail-Bv90gvy0.js} +578 -577
  37. package/dist/chunks/detail-Bv90gvy0.js.map +1 -0
  38. package/dist/chunks/detail-DNzqesdI.cjs +5 -0
  39. package/dist/chunks/detail-DNzqesdI.cjs.map +1 -0
  40. package/dist/chunks/instance-error-message-BW464LRQ.cjs +2 -0
  41. package/dist/chunks/instance-error-message-BW464LRQ.cjs.map +1 -0
  42. package/dist/chunks/instance-error-message-CAP1vJhX.js +204 -0
  43. package/dist/chunks/instance-error-message-CAP1vJhX.js.map +1 -0
  44. package/dist/components/approval-instance-field-filter-controls.d.cts +12 -0
  45. package/dist/components/approval-instance-field-filter-controls.d.ts +12 -0
  46. package/dist/components/approval-instance-field-filters.d.cts +86 -0
  47. package/dist/components/approval-instance-field-filters.d.ts +86 -0
  48. package/dist/components/approval-instance-list-page.d.cts +4 -0
  49. package/dist/components/approval-instance-list-page.d.ts +4 -0
  50. package/dist/index.cjs +1 -1
  51. package/dist/index.js +1 -1
  52. package/dist/next/workflow-chat-route.cjs +2 -2
  53. package/dist/next/workflow-chat-route.cjs.map +1 -1
  54. package/dist/next/workflow-chat-route.js +13 -13
  55. package/dist/pages/admin/delegations/index.cjs +1 -1
  56. package/dist/pages/admin/delegations/index.js +1 -1
  57. package/dist/pages/delegations/index.cjs +1 -1
  58. package/dist/pages/delegations/index.js +1 -1
  59. package/dist/pages/instances/detail/index.cjs +1 -1
  60. package/dist/pages/instances/detail/index.js +1 -1
  61. package/dist/pages/templates/categories/index.cjs +1 -1
  62. package/dist/pages/templates/categories/index.js +1 -1
  63. package/dist/pages/templates/compose/index.cjs +1 -1
  64. package/dist/pages/templates/compose/index.js +1 -1
  65. package/dist/pages/templates/designer/index.cjs +1 -1
  66. package/dist/pages/templates/designer/index.js +1 -1
  67. package/dist/views/admin/delegations/index.cjs +1 -1
  68. package/dist/views/admin/delegations/index.js +1 -1
  69. package/dist/views/admin/index.cjs +1 -1
  70. package/dist/views/admin/index.js +1 -1
  71. package/dist/views/admin/webhook-endpoints/index.cjs +1 -1
  72. package/dist/views/admin/webhook-endpoints/index.cjs.map +1 -1
  73. package/dist/views/admin/webhook-endpoints/index.js +60 -60
  74. package/dist/views/admin/webhook-endpoints/index.js.map +1 -1
  75. package/dist/views/cc/index.cjs +1 -1
  76. package/dist/views/cc/index.js +1 -1
  77. package/dist/views/delegations/index.cjs +1 -1
  78. package/dist/views/delegations/index.js +1 -1
  79. package/dist/views/forms/builder/FormBuilderView.d.cts +8 -1
  80. package/dist/views/forms/builder/FormBuilderView.d.ts +8 -1
  81. package/dist/views/forms/builder/index.cjs +1 -1
  82. package/dist/views/forms/builder/index.js +1 -1
  83. package/dist/views/forms/renderer/index.cjs +1 -1
  84. package/dist/views/forms/renderer/index.js +1 -1
  85. package/dist/views/instances/approver-filled-form.d.cts +8 -5
  86. package/dist/views/instances/approver-filled-form.d.ts +8 -5
  87. package/dist/views/instances/detail/index.cjs +1 -1
  88. package/dist/views/instances/detail/index.js +1 -1
  89. package/dist/views/instances/detail/sections/InstanceTasksSection.d.cts +2 -1
  90. package/dist/views/instances/detail/sections/InstanceTasksSection.d.ts +2 -1
  91. package/dist/views/instances/new/index.cjs +1 -1
  92. package/dist/views/instances/new/index.cjs.map +1 -1
  93. package/dist/views/instances/new/index.js +8 -8
  94. package/dist/views/instances/new/index.js.map +1 -1
  95. package/dist/views/search/index.cjs +1 -1
  96. package/dist/views/search/index.js +1 -1
  97. package/dist/views/sent/index.cjs +1 -1
  98. package/dist/views/sent/index.js +1 -1
  99. package/dist/views/templates/categories/index.cjs +1 -1
  100. package/dist/views/templates/categories/index.js +1 -1
  101. package/dist/views/templates/compose/index.cjs +1 -1
  102. package/dist/views/templates/compose/index.js +1 -1
  103. package/dist/views/templates/designer/NotifyWebhookTargetsEditor.d.cts +2 -0
  104. package/dist/views/templates/designer/NotifyWebhookTargetsEditor.d.ts +2 -0
  105. package/dist/views/templates/designer/index.cjs +1 -1
  106. package/dist/views/templates/designer/index.js +1 -1
  107. package/dist/views/templates/index.cjs +1 -1
  108. package/dist/views/templates/index.cjs.map +1 -1
  109. package/dist/views/templates/index.js +7 -7
  110. package/package.json +3 -3
  111. package/dist/chunks/FormBuilderView-CFRiw04B.js.map +0 -1
  112. package/dist/chunks/FormBuilderView-CpUgbSbt.cjs +0 -3
  113. package/dist/chunks/FormBuilderView-CpUgbSbt.cjs.map +0 -1
  114. package/dist/chunks/approval-instance-list-page-BnI4t5mD.js +0 -279
  115. package/dist/chunks/approval-instance-list-page-BnI4t5mD.js.map +0 -1
  116. package/dist/chunks/approval-instance-list-page-fqvmkBlg.cjs +0 -2
  117. package/dist/chunks/approval-instance-list-page-fqvmkBlg.cjs.map +0 -1
  118. package/dist/chunks/designer-CX9bhYJS.cjs +0 -69
  119. package/dist/chunks/designer-CX9bhYJS.cjs.map +0 -1
  120. package/dist/chunks/designer-CZDlQ9Nf.js.map +0 -1
  121. package/dist/chunks/detail-ByZV1XaI.js.map +0 -1
  122. package/dist/chunks/detail-ChseSF55.cjs +0 -5
  123. package/dist/chunks/detail-ChseSF55.cjs.map +0 -1
  124. package/dist/chunks/instance-error-message-DTARGbGo.cjs +0 -2
  125. package/dist/chunks/instance-error-message-DTARGbGo.cjs.map +0 -1
  126. package/dist/chunks/instance-error-message-q6gy5evy.js +0 -120
  127. package/dist/chunks/instance-error-message-q6gy5evy.js.map +0 -1
@@ -0,0 +1,724 @@
1
+ "use client";
2
+ import { r as e } from "./router-adapter-CkxCyzf5.js";
3
+ import { r as t } from "./routes-config-BcNaWJWJ.js";
4
+ import { t as n } from "./format-date-time-B0LdmWg4.js";
5
+ import { useCallback as r, useEffect as i, useMemo as a, useRef as ee, useState as o } from "react";
6
+ import { DateRangePicker as s, DateTimeRangePicker as te, Filter as c, FilterArea as ne, FilterLine as l, FormField as u, Input as d, PageHeader as re, RadioGroup as ie, Section as ae, SectionGroup as oe, Select as f, Table as se, Typography as p } from "@mezzanine-ui/react";
7
+ import { resolveMembers as ce } from "@rytass/bpm-core-client";
8
+ import { Fragment as le, jsx as m, jsxs as h } from "react/jsx-runtime";
9
+ import { listApprovalInstancesPage as ue, readApprovalInstanceCaseTitle as de, readApprovalTemplateCurrentFormSchema as fe } from "@rytass/bpm-core-client/workflow";
10
+ import { ControlFieldSlotLayout as g, FormFieldLayout as _ } from "@mezzanine-ui/core/form";
11
+ import pe from "@mezzanine-ui/react/ContentHeader";
12
+ import { listApprovalTemplates as me } from "@rytass/bpm-core-client/template";
13
+ import { APPROVAL_INSTANCE_SORT_TIME_FIELDS as v, isFilterableFieldSortable as he, readFilterableFieldPaths as ge } from "@rytass/bpm-core-shared";
14
+ import { formatDatePickerValue as y, formatDateTimePickerValue as b } from "@rytass/bpm-core-client/form";
15
+ import '../approval-instance-list-page.css';// src/components/approval-instance-field-filters.ts
16
+ function x(e) {
17
+ switch (e.kind) {
18
+ case "number": return { kind: "number-range" };
19
+ case "date": return { kind: "date-range" };
20
+ case "datetime": return { kind: "datetime-range" };
21
+ case "boolean": return { kind: "boolean" };
22
+ case "member":
23
+ case "org_unit": return { kind: "id-in" };
24
+ case "option": return e.staticOptions ? {
25
+ kind: "option-in",
26
+ options: e.staticOptions
27
+ } : { kind: "contains" };
28
+ case "text": return { kind: "contains" };
29
+ }
30
+ }
31
+ var S = {
32
+ from: "",
33
+ text: "",
34
+ to: "",
35
+ values: []
36
+ }, C = /^-?\d+(\.\d+)?$/u;
37
+ function w(e) {
38
+ return T(e) !== null;
39
+ }
40
+ function T(e) {
41
+ let t = e.trim().replace(/,/gu, "");
42
+ return C.test(t) ? t : null;
43
+ }
44
+ function E(e) {
45
+ return e.split(",").map((e) => e.trim()).filter((e) => e.length > 0);
46
+ }
47
+ function D(e, t) {
48
+ switch (x(e).kind) {
49
+ case "contains": {
50
+ let n = t.text.trim();
51
+ return n ? {
52
+ fieldKey: e.path,
53
+ operator: "CONTAINS",
54
+ values: [n]
55
+ } : null;
56
+ }
57
+ case "option-in": return t.values.length > 0 ? {
58
+ fieldKey: e.path,
59
+ operator: "IN",
60
+ values: [...t.values]
61
+ } : null;
62
+ case "id-in": {
63
+ let n = E(t.text);
64
+ return n.length > 0 ? {
65
+ fieldKey: e.path,
66
+ operator: "IN",
67
+ values: n
68
+ } : null;
69
+ }
70
+ case "number-range": {
71
+ let n = T(t.from), r = T(t.to);
72
+ return n || r ? {
73
+ fieldKey: e.path,
74
+ operator: "RANGE",
75
+ ...n ? { from: n } : {},
76
+ ...r ? { to: r } : {}
77
+ } : null;
78
+ }
79
+ case "date-range":
80
+ case "datetime-range": {
81
+ let n = t.from.trim(), r = t.to.trim();
82
+ return n || r ? {
83
+ fieldKey: e.path,
84
+ operator: "RANGE",
85
+ ...n ? { from: n } : {},
86
+ ...r ? { to: r } : {}
87
+ } : null;
88
+ }
89
+ case "boolean": {
90
+ let n = t.values[0];
91
+ return n === "true" || n === "false" ? {
92
+ fieldKey: e.path,
93
+ operator: "EQUALS",
94
+ values: [n]
95
+ } : null;
96
+ }
97
+ }
98
+ }
99
+ function _e(e, t) {
100
+ return e.flatMap((e) => {
101
+ let n = D(e, t[e.path] ?? S);
102
+ return n ? [n] : [];
103
+ });
104
+ }
105
+ var O = {
106
+ direction: "DESC",
107
+ field: ""
108
+ }, ve = {
109
+ id: "",
110
+ label: "預設(建立時間,新到舊)"
111
+ }, k = {
112
+ completedAt: "完成時間",
113
+ submittedAt: "送出時間",
114
+ updatedAt: "最後更新"
115
+ };
116
+ function ye(e, t) {
117
+ let n = v.map((e) => ({
118
+ id: e,
119
+ label: k[e]
120
+ })), r = t ? e.filter(he).map((e) => ({
121
+ id: e.path,
122
+ label: e.label
123
+ })) : [];
124
+ return [
125
+ ve,
126
+ ...n,
127
+ ...r
128
+ ];
129
+ }
130
+ function be(e, t, n) {
131
+ return e === "" || v.includes(e) ? !0 : n && t.some((t) => t.path === e);
132
+ }
133
+ function xe(e) {
134
+ return e.field === "" ? void 0 : [{
135
+ direction: e.direction,
136
+ field: e.field
137
+ }];
138
+ }
139
+ // src/components/approval-instance-field-filter-controls.tsx
140
+ var A = [{
141
+ id: "true",
142
+ name: "是"
143
+ }, {
144
+ id: "false",
145
+ name: "否"
146
+ }];
147
+ function Se(e, t, n) {
148
+ return e.flatMap((e) => {
149
+ let r = t[e.path] ?? S, i = (t) => {
150
+ n(e.path, t);
151
+ }, a = x(e);
152
+ return a.kind === "number-range" ? [j(`${e.path}:from`, `${e.label}(下限)`, /* @__PURE__ */ m(d, {
153
+ fullWidth: !0,
154
+ onChange: (e) => {
155
+ i({
156
+ ...r,
157
+ from: e.target.value
158
+ });
159
+ },
160
+ placeholder: `${e.label}:下限`,
161
+ size: "sub",
162
+ value: r.from,
163
+ variant: "base"
164
+ }), N(r.from)), j(`${e.path}:to`, `${e.label}(上限)`, /* @__PURE__ */ m(d, {
165
+ fullWidth: !0,
166
+ onChange: (e) => {
167
+ i({
168
+ ...r,
169
+ to: e.target.value
170
+ });
171
+ },
172
+ placeholder: `${e.label}:上限`,
173
+ size: "sub",
174
+ value: r.to,
175
+ variant: "base"
176
+ }), N(r.to))] : [j(e.path, e.label, P(e, r, i, e.label), a.kind === "id-in" ? `多個${M(e)}以逗號分隔` : void 0)];
177
+ });
178
+ }
179
+ function j(e, t, n, r) {
180
+ return /* @__PURE__ */ m(c, {
181
+ span: 2,
182
+ children: /* @__PURE__ */ m(u, {
183
+ fullWidth: !0,
184
+ hintText: r,
185
+ controlFieldSlotLayout: g.SUB,
186
+ layout: _.VERTICAL,
187
+ label: t,
188
+ name: `fieldFilter-${e}`,
189
+ children: n
190
+ })
191
+ }, e);
192
+ }
193
+ function M(e) {
194
+ return e.kind === "org_unit" ? "組織" : "成員";
195
+ }
196
+ function N(e) {
197
+ return !e || w(e) ? void 0 : "請輸入數字";
198
+ }
199
+ function P(e, t, n, r) {
200
+ let i = x(e);
201
+ if (i.kind === "option-in") {
202
+ let e = i.options.map((e) => ({
203
+ id: e.value,
204
+ name: e.label
205
+ }));
206
+ return /* @__PURE__ */ m(f, {
207
+ clearable: !0,
208
+ fullWidth: !0,
209
+ mode: "multiple",
210
+ onChange: (e) => {
211
+ n({
212
+ ...t,
213
+ values: e.map((e) => e.id)
214
+ });
215
+ },
216
+ options: [...e],
217
+ placeholder: `${r}:全部`,
218
+ size: "sub",
219
+ value: e.filter((e) => t.values.includes(e.id))
220
+ });
221
+ }
222
+ if (i.kind === "boolean") {
223
+ let e = A.find((e) => t.values.includes(e.id));
224
+ return /* @__PURE__ */ m(f, {
225
+ clearable: !0,
226
+ fullWidth: !0,
227
+ onChange: (e) => {
228
+ n({
229
+ ...t,
230
+ values: e ? [e.id] : []
231
+ });
232
+ },
233
+ options: [...A],
234
+ placeholder: `${r}:全部`,
235
+ size: "sub",
236
+ value: e ?? null
237
+ });
238
+ }
239
+ return i.kind === "date-range" ? /* @__PURE__ */ m(s, {
240
+ clearable: !0,
241
+ fullWidth: !0,
242
+ inputFromPlaceholder: `${r}:起`,
243
+ inputToPlaceholder: "迄",
244
+ onChange: (e) => {
245
+ n({
246
+ ...t,
247
+ from: y(e?.[0]) ?? "",
248
+ to: y(e?.[1]) ?? ""
249
+ });
250
+ },
251
+ size: "sub",
252
+ value: t.from && t.to ? [t.from, t.to] : []
253
+ }) : i.kind === "datetime-range" ? /* @__PURE__ */ m(te, {
254
+ clearable: !0,
255
+ fullWidth: !0,
256
+ onChange: (e) => {
257
+ n({
258
+ ...t,
259
+ from: b(e[0]) ?? "",
260
+ to: b(e[1]) ?? ""
261
+ });
262
+ },
263
+ size: "sub",
264
+ value: [t.from || void 0, t.to || void 0]
265
+ }) : i.kind === "id-in" ? /* @__PURE__ */ m(d, {
266
+ fullWidth: !0,
267
+ onChange: (e) => {
268
+ n({
269
+ ...t,
270
+ text: e.target.value
271
+ });
272
+ },
273
+ placeholder: `${r}:${M(e)} ID`,
274
+ size: "sub",
275
+ value: t.text,
276
+ variant: "base"
277
+ }) : /* @__PURE__ */ m(d, {
278
+ fullWidth: !0,
279
+ onChange: (e) => {
280
+ n({
281
+ ...t,
282
+ text: e.target.value
283
+ });
284
+ },
285
+ placeholder: `${r}:包含`,
286
+ size: "sub",
287
+ value: t.text,
288
+ variant: "base"
289
+ });
290
+ }
291
+ var Ce = { instanceFilterArea: "bpm_instanceFilterArea_qpvJq" }, we = [
292
+ 10,
293
+ 20,
294
+ 50
295
+ ], Te = 3, F = [
296
+ {
297
+ id: "ALL",
298
+ name: "全部狀態",
299
+ state: null
300
+ },
301
+ {
302
+ id: "RUNNING",
303
+ name: "進行中",
304
+ state: "RUNNING"
305
+ },
306
+ {
307
+ id: "APPROVED",
308
+ name: "已通過",
309
+ state: "APPROVED"
310
+ },
311
+ {
312
+ id: "REJECTED",
313
+ name: "已拒絕",
314
+ state: "REJECTED"
315
+ },
316
+ {
317
+ id: "RETURNED",
318
+ name: "已退回",
319
+ state: "RETURNED"
320
+ },
321
+ {
322
+ id: "CANCELLED",
323
+ name: "已取消",
324
+ state: "CANCELLED"
325
+ },
326
+ {
327
+ id: "EXPIRED",
328
+ name: "已逾期",
329
+ state: "EXPIRED"
330
+ },
331
+ {
332
+ id: "DRAFT",
333
+ name: "草稿",
334
+ state: "DRAFT"
335
+ }
336
+ ], Ee = [{
337
+ id: "DESC",
338
+ name: "新到舊"
339
+ }, {
340
+ id: "ASC",
341
+ name: "舊到新"
342
+ }];
343
+ function I({ defaultState: s, description: te, emptyMessage: de, searchPlaceholder: v, title: he, view: y }) {
344
+ let b = e(), x = t(), [S, C] = o(null), [w, T] = o(/* @__PURE__ */ new Map()), [E, D] = o(1), [k, A] = o(10), [j, M] = o(0), [N, P] = o(!0), [I, R] = o([]), [z, Fe] = o(""), [B, Ie] = o(L(s)), [Le, Re] = o([]), [V, ze] = o(null), [H, U] = o(null), [Be, W] = o(!1), [G, K] = o(null), [q, J] = o({}), [Y, X] = o(O), Z = ee(0), Q = a(() => H ? ge(H) : [], [H]), Ve = a(() => V === null ? void 0 : _e(Q, q), [
345
+ q,
346
+ Q,
347
+ V
348
+ ]), He = a(() => xe(Y), [Y]), Ue = a(() => ye(Q, V !== null), [Q, V]), $ = r(async () => {
349
+ let e = Z.current + 1;
350
+ Z.current = e, P(!0), C(null);
351
+ try {
352
+ let t = await ue({
353
+ fieldFilters: Ve,
354
+ page: E,
355
+ pageSize: k,
356
+ searchText: z,
357
+ sort: He,
358
+ state: B.state,
359
+ templateId: V,
360
+ view: y
361
+ });
362
+ if (e !== Z.current) return;
363
+ R(t.instances.map(ke)), M(t.totalCount);
364
+ } catch (t) {
365
+ e === Z.current && C(Pe(t));
366
+ } finally {
367
+ e === Z.current && P(!1);
368
+ }
369
+ }, [
370
+ Ve,
371
+ E,
372
+ k,
373
+ z,
374
+ He,
375
+ B,
376
+ V,
377
+ y
378
+ ]);
379
+ i(() => {
380
+ $();
381
+ }, [$]), i(() => {
382
+ let e = !1;
383
+ return (async () => {
384
+ try {
385
+ let t = await me();
386
+ e || Re(t);
387
+ } catch {
388
+ e || Re([]);
389
+ }
390
+ })(), () => {
391
+ e = !0;
392
+ };
393
+ }, []), i(() => {
394
+ if (V === null) {
395
+ U(null), W(!1), K(null);
396
+ return;
397
+ }
398
+ let e = !1;
399
+ return W(!0), K(null), (async () => {
400
+ try {
401
+ let t = await fe(V);
402
+ e || U(t);
403
+ } catch (t) {
404
+ e || (U(null), K(Pe(t)));
405
+ } finally {
406
+ e || W(!1);
407
+ }
408
+ })(), () => {
409
+ e = !0;
410
+ };
411
+ }, [V]), i(() => {
412
+ let e = Array.from(new Set(I.map((e) => e.initiatorMemberId).filter(Boolean)));
413
+ if (e.length === 0) {
414
+ T(/* @__PURE__ */ new Map());
415
+ return;
416
+ }
417
+ let t = !1;
418
+ return (async () => {
419
+ try {
420
+ let n = await ce(e);
421
+ if (t) return;
422
+ T(new Map(n.map((e) => [e.memberId, e])));
423
+ } catch {
424
+ if (t) return;
425
+ T(/* @__PURE__ */ new Map());
426
+ }
427
+ })(), () => {
428
+ t = !0;
429
+ };
430
+ }, [I]);
431
+ let We = r((e) => {
432
+ ze(e?.id ?? null), U(null), J({}), D(1), X((e) => be(e.field, [], !1) ? e : {
433
+ ...e,
434
+ field: O.field
435
+ });
436
+ }, []), Ge = r(() => {
437
+ Fe(""), Ie(L(s)), ze(null), U(null), J({}), X(O), D(1);
438
+ }, [s]), Ke = r(() => {
439
+ $();
440
+ }, [$]), qe = r((e, t) => {
441
+ J((n) => ({
442
+ ...n,
443
+ [e]: t
444
+ })), D(1);
445
+ }, []), Je = a(() => [
446
+ {
447
+ dataIndex: "caseTitle",
448
+ key: "caseTitle",
449
+ title: "案件",
450
+ width: 300
451
+ },
452
+ {
453
+ key: "state",
454
+ render: (e) => /* @__PURE__ */ m(p, {
455
+ color: Me(e.state),
456
+ component: "span",
457
+ variant: "body",
458
+ children: e.stateLabel
459
+ }),
460
+ title: "狀態",
461
+ width: 120
462
+ },
463
+ {
464
+ key: "initiatorMemberId",
465
+ render: (e) => /* @__PURE__ */ m(p, {
466
+ component: "span",
467
+ variant: "body",
468
+ children: Ne(e.initiatorMemberId, w)
469
+ }),
470
+ title: "發起人",
471
+ width: 180
472
+ },
473
+ {
474
+ key: "startedAt",
475
+ render: (e) => /* @__PURE__ */ m(p, {
476
+ component: "span",
477
+ variant: "body",
478
+ children: n(e.startedAt)
479
+ }),
480
+ title: "發起時間",
481
+ width: 220
482
+ },
483
+ {
484
+ key: "completedAt",
485
+ render: (e) => /* @__PURE__ */ m(p, {
486
+ component: "span",
487
+ variant: "body",
488
+ children: n(e.completedAt)
489
+ }),
490
+ title: "完成時間",
491
+ width: 220
492
+ }
493
+ ], [w]), Ye = a(() => ({
494
+ render: (e) => [{
495
+ name: "查看",
496
+ onClick: () => b.push(x.caseDetail(e.id))
497
+ }],
498
+ variant: "base-secondary",
499
+ width: 88
500
+ }), [b]), Xe = a(() => Le.map((e) => ({
501
+ id: e.id,
502
+ name: e.name
503
+ })), [Le]), Ze = Xe.find((e) => e.id === V), Qe = a(() => De(Se(Q, q, qe), Te).map((e, t) => /* @__PURE__ */ m(l, { children: [...e] }, `field-filter-line-${t}`)), [
504
+ q,
505
+ Q,
506
+ qe
507
+ ]), $e = a(() => Ue.map((e) => ({
508
+ id: e.id,
509
+ name: e.label
510
+ })), [Ue]), et = $e.find((e) => e.id === Y.field) ?? $e.find((e) => e.id === ve.id), tt = /* @__PURE__ */ h(l, { children: [
511
+ /* @__PURE__ */ m(c, {
512
+ span: 2,
513
+ children: /* @__PURE__ */ m(u, {
514
+ fullWidth: !0,
515
+ controlFieldSlotLayout: g.SUB,
516
+ layout: _.VERTICAL,
517
+ name: "instanceSearchText",
518
+ children: /* @__PURE__ */ m(d, {
519
+ fullWidth: !0,
520
+ onChange: (e) => {
521
+ Fe(e.target.value), D(1);
522
+ },
523
+ placeholder: v,
524
+ size: "sub",
525
+ value: z,
526
+ variant: "base"
527
+ })
528
+ })
529
+ }),
530
+ /* @__PURE__ */ m(c, {
531
+ span: 2,
532
+ children: /* @__PURE__ */ m(u, {
533
+ fullWidth: !0,
534
+ controlFieldSlotLayout: g.SUB,
535
+ layout: _.VERTICAL,
536
+ name: "instanceState",
537
+ children: /* @__PURE__ */ m(f, {
538
+ clearable: !1,
539
+ fullWidth: !0,
540
+ onChange: (e) => {
541
+ Ie(Ae(e)), D(1);
542
+ },
543
+ options: [...F],
544
+ placeholder: "狀態",
545
+ renderValue: (e) => `狀態:${je(e)}`,
546
+ size: "sub",
547
+ value: B
548
+ })
549
+ })
550
+ }),
551
+ /* @__PURE__ */ m(c, {
552
+ span: 2,
553
+ children: /* @__PURE__ */ m(u, {
554
+ fullWidth: !0,
555
+ controlFieldSlotLayout: g.SUB,
556
+ layout: _.VERTICAL,
557
+ label: "範本",
558
+ name: "instanceTemplate",
559
+ children: /* @__PURE__ */ m(f, {
560
+ clearable: !0,
561
+ fullWidth: !0,
562
+ onChange: We,
563
+ options: [...Xe],
564
+ placeholder: "全部範本",
565
+ size: "sub",
566
+ value: Ze ?? null
567
+ })
568
+ })
569
+ })
570
+ ] }, "search"), nt = /* @__PURE__ */ h(l, { children: [/* @__PURE__ */ m(c, {
571
+ span: 2,
572
+ children: /* @__PURE__ */ m(u, {
573
+ fullWidth: !0,
574
+ controlFieldSlotLayout: g.SUB,
575
+ layout: _.VERTICAL,
576
+ label: "排序欄位",
577
+ name: "instanceSortField",
578
+ children: /* @__PURE__ */ m(f, {
579
+ clearable: !1,
580
+ fullWidth: !0,
581
+ onChange: (e) => {
582
+ X((t) => ({
583
+ ...t,
584
+ field: e?.id ?? O.field
585
+ })), D(1);
586
+ },
587
+ options: [...$e],
588
+ placeholder: "排序欄位",
589
+ size: "sub",
590
+ value: et ?? null
591
+ })
592
+ })
593
+ }), /* @__PURE__ */ m(c, {
594
+ span: 2,
595
+ children: /* @__PURE__ */ m(u, {
596
+ fullWidth: !0,
597
+ controlFieldSlotLayout: g.SUB,
598
+ layout: _.VERTICAL,
599
+ label: "排序方向",
600
+ name: "instanceSortDirection",
601
+ children: /* @__PURE__ */ m(ie, {
602
+ name: "instanceSortDirection",
603
+ onChange: (e) => {
604
+ X((t) => ({
605
+ ...t,
606
+ direction: Oe(e.target.value)
607
+ })), D(1);
608
+ },
609
+ options: [...Ee],
610
+ size: "sub",
611
+ type: "segment",
612
+ value: Y.direction
613
+ })
614
+ })
615
+ })] }, "sort");
616
+ return /* @__PURE__ */ h(le, { children: [/* @__PURE__ */ m(re, { children: /* @__PURE__ */ m(pe, {
617
+ description: te,
618
+ title: he
619
+ }) }), /* @__PURE__ */ m(oe, { children: /* @__PURE__ */ h(ae, {
620
+ filterArea: /* @__PURE__ */ m(ne, {
621
+ className: Ce.instanceFilterArea,
622
+ onReset: Ge,
623
+ onSubmit: Ke,
624
+ resetText: "清除條件",
625
+ rowAlign: "end",
626
+ size: "sub",
627
+ submitText: "重新查詢",
628
+ children: [
629
+ tt,
630
+ ...Qe,
631
+ nt
632
+ ]
633
+ }),
634
+ children: [
635
+ S ? /* @__PURE__ */ m(p, {
636
+ color: "text-error",
637
+ variant: "body",
638
+ children: S
639
+ }) : null,
640
+ G ? /* @__PURE__ */ m(p, {
641
+ color: "text-error",
642
+ variant: "body",
643
+ children: G
644
+ }) : null,
645
+ V !== null && !Be && !G && H && Q.length === 0 ? /* @__PURE__ */ m(p, {
646
+ color: "text-neutral",
647
+ variant: "body",
648
+ children: "此範本沒有可篩選的欄位。"
649
+ }) : null,
650
+ !S && !N && I.length === 0 ? /* @__PURE__ */ m(p, {
651
+ color: "text-neutral",
652
+ variant: "body",
653
+ children: de
654
+ }) : null,
655
+ /* @__PURE__ */ m(se, {
656
+ actions: Ye,
657
+ columns: Je,
658
+ dataSource: [...I],
659
+ fullWidth: !0,
660
+ loading: N,
661
+ pagination: {
662
+ current: E,
663
+ onChange: (e) => {
664
+ D(e);
665
+ },
666
+ onChangePageSize: (e) => {
667
+ D(1), A(e);
668
+ },
669
+ pageSize: k,
670
+ pageSizeLabel: "每頁筆數",
671
+ pageSizeOptions: we,
672
+ renderResultSummary: (e, t, n) => `顯示 ${e}-${t} 筆,共 ${n} 筆`,
673
+ showPageSizeOptions: !0,
674
+ total: j
675
+ }
676
+ })
677
+ ]
678
+ }) })] });
679
+ }
680
+ function De(e, t) {
681
+ return e.reduce((e, n) => {
682
+ let r = e[e.length - 1];
683
+ return r && r.length < t ? [...e.slice(0, -1), [...r, n]] : [...e, [n]];
684
+ }, []);
685
+ }
686
+ function Oe(e) {
687
+ return e === "ASC" ? "ASC" : "DESC";
688
+ }
689
+ function ke(e) {
690
+ return {
691
+ ...e,
692
+ caseTitle: de(e),
693
+ key: e.id,
694
+ stateLabel: z(e.state)
695
+ };
696
+ }
697
+ function Ae(e) {
698
+ return R(e) ? L(e.state) : F[0];
699
+ }
700
+ function L(e) {
701
+ return F.find((t) => t.state === e) ?? F[0];
702
+ }
703
+ function je(e) {
704
+ return R(e) ? e.name : F[0].name;
705
+ }
706
+ function R(e) {
707
+ return typeof e == "object" && !!e && "id" in e && "name" in e && "state" in e;
708
+ }
709
+ function z(e) {
710
+ return e === "RUNNING" ? "進行中" : e === "APPROVED" ? "已通過" : e === "REJECTED" ? "已拒絕" : e === "RETURNED" ? "已退回" : e === "CANCELLED" ? "已取消" : e === "EXPIRED" ? "已逾期" : "草稿";
711
+ }
712
+ function Me(e) {
713
+ return e === "APPROVED" ? "text-success" : e === "REJECTED" || e === "CANCELLED" || e === "EXPIRED" ? "text-error" : "text-neutral";
714
+ }
715
+ function Ne(e, t) {
716
+ let n = (e ?? "").trim();
717
+ return n ? t.get(n)?.name ?? n : "未知發起人";
718
+ }
719
+ function Pe(e) {
720
+ return e instanceof Error ? e.message : "讀取簽核案件失敗。";
721
+ }
722
+ export { I as t };
723
+
724
+ //# sourceMappingURL=approval-instance-list-page-Bth7Raya.js.map