@rytass/bpm-core-react 0.3.0 → 0.3.2

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 (184) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/README.md +13 -1
  3. package/dist/chunks/app-navigation-BSkMsEhy.js +268 -0
  4. package/dist/chunks/app-navigation-BSkMsEhy.js.map +1 -0
  5. package/dist/chunks/app-navigation-KnlJCUp1.cjs +2 -0
  6. package/dist/chunks/app-navigation-KnlJCUp1.cjs.map +1 -0
  7. package/dist/chunks/approval-instance-list-page-CVXgE2K3.cjs +2 -0
  8. package/dist/chunks/approval-instance-list-page-CVXgE2K3.cjs.map +1 -0
  9. package/dist/chunks/{approval-instance-list-page-BgE4vQw8.js → approval-instance-list-page-CqNdoZqx.js} +103 -99
  10. package/dist/chunks/approval-instance-list-page-CqNdoZqx.js.map +1 -0
  11. package/dist/chunks/builder-CMlJfQHE.cjs +3 -0
  12. package/dist/chunks/builder-CMlJfQHE.cjs.map +1 -0
  13. package/dist/chunks/{builder-Du_0apkh.js → builder-D950gct_.js} +436 -432
  14. package/dist/chunks/builder-D950gct_.js.map +1 -0
  15. package/dist/chunks/categories-5yEM3p3N.cjs +2 -0
  16. package/dist/chunks/categories-5yEM3p3N.cjs.map +1 -0
  17. package/dist/chunks/categories-BIpOG451.js +387 -0
  18. package/dist/chunks/categories-BIpOG451.js.map +1 -0
  19. package/dist/chunks/dashboard-page-1K_jQXQk.cjs +2 -0
  20. package/dist/chunks/dashboard-page-1K_jQXQk.cjs.map +1 -0
  21. package/dist/chunks/dashboard-page-R_T2OEiE.js +122 -0
  22. package/dist/chunks/dashboard-page-R_T2OEiE.js.map +1 -0
  23. package/dist/chunks/delegations-B2j-wNEO.js +646 -0
  24. package/dist/chunks/delegations-B2j-wNEO.js.map +1 -0
  25. package/dist/chunks/delegations-CsB9ozLu.cjs +2 -0
  26. package/dist/chunks/delegations-CsB9ozLu.cjs.map +1 -0
  27. package/dist/chunks/delegations-CvtwTXNP.cjs +2 -0
  28. package/dist/chunks/delegations-CvtwTXNP.cjs.map +1 -0
  29. package/dist/chunks/delegations-dKodb0WW.js +573 -0
  30. package/dist/chunks/delegations-dKodb0WW.js.map +1 -0
  31. package/dist/chunks/detail-BcGAqJ_R.js +1523 -0
  32. package/dist/chunks/detail-BcGAqJ_R.js.map +1 -0
  33. package/dist/chunks/detail-CqjqLd65.cjs +2 -0
  34. package/dist/chunks/detail-CqjqLd65.cjs.map +1 -0
  35. package/dist/chunks/{format-date-time-hKLVMxq4.cjs → format-date-time-26_pFvv4.cjs} +2 -2
  36. package/dist/chunks/{format-date-time-hKLVMxq4.cjs.map → format-date-time-26_pFvv4.cjs.map} +1 -1
  37. package/dist/chunks/notifications-2swRqDPF.js +198 -0
  38. package/dist/chunks/notifications-2swRqDPF.js.map +1 -0
  39. package/dist/chunks/notifications-BaYDebFt.cjs +2 -0
  40. package/dist/chunks/notifications-BaYDebFt.cjs.map +1 -0
  41. package/dist/chunks/{orgs-c29y74w2.js → orgs-CuHxxd_n.js} +665 -661
  42. package/dist/chunks/orgs-CuHxxd_n.js.map +1 -0
  43. package/dist/chunks/orgs-YMiVLNvL.cjs +2 -0
  44. package/dist/chunks/orgs-YMiVLNvL.cjs.map +1 -0
  45. package/dist/chunks/routes-config-2aKbWq2H.cjs +2 -0
  46. package/dist/chunks/routes-config-2aKbWq2H.cjs.map +1 -0
  47. package/dist/chunks/routes-config-dxahImVe.js +43 -0
  48. package/dist/chunks/routes-config-dxahImVe.js.map +1 -0
  49. package/dist/chunks/templates-DTkbSgFY.cjs +2 -0
  50. package/dist/chunks/templates-DTkbSgFY.cjs.map +1 -0
  51. package/dist/chunks/{templates-Dn9QHFSy.js → templates-DoDWM68t.js} +136 -132
  52. package/dist/chunks/templates-DoDWM68t.js.map +1 -0
  53. package/dist/chunks/users-3ySyUW4u.cjs +2 -0
  54. package/dist/chunks/users-3ySyUW4u.cjs.map +1 -0
  55. package/dist/chunks/users-sMfrSjRQ.js +219 -0
  56. package/dist/chunks/users-sMfrSjRQ.js.map +1 -0
  57. package/dist/components/app-navigation.d.ts +17 -10
  58. package/dist/index.cjs +1 -1
  59. package/dist/index.cjs.map +1 -1
  60. package/dist/index.d.ts +1 -0
  61. package/dist/index.js +101 -99
  62. package/dist/index.js.map +1 -1
  63. package/dist/lib/notification-drawer-provider.d.ts +1 -1
  64. package/dist/lib/notification-unread-provider.d.ts +1 -1
  65. package/dist/lib/providers.d.ts +1 -1
  66. package/dist/lib/routes-config.d.ts +96 -0
  67. package/dist/next/index.cjs +1 -1
  68. package/dist/next/index.cjs.map +1 -1
  69. package/dist/next/index.d.ts +1 -0
  70. package/dist/next/index.js +22 -21
  71. package/dist/next/index.js.map +1 -1
  72. package/dist/pages/admin/delegations/index.cjs +1 -1
  73. package/dist/pages/admin/delegations/index.js +1 -1
  74. package/dist/pages/admin/orgs/index.cjs +1 -1
  75. package/dist/pages/admin/orgs/index.js +1 -1
  76. package/dist/pages/admin/users/index.cjs +1 -1
  77. package/dist/pages/admin/users/index.js +1 -1
  78. package/dist/pages/delegations/index.cjs +1 -1
  79. package/dist/pages/delegations/index.js +1 -1
  80. package/dist/pages/forms/builder/index.cjs +1 -1
  81. package/dist/pages/forms/builder/index.js +1 -1
  82. package/dist/pages/instances/detail/index.cjs +1 -1
  83. package/dist/pages/instances/detail/index.js +1 -1
  84. package/dist/pages/settings/notifications/index.cjs +1 -1
  85. package/dist/pages/settings/notifications/index.js +1 -1
  86. package/dist/pages/templates/categories/index.cjs +1 -1
  87. package/dist/pages/templates/categories/index.js +1 -1
  88. package/dist/pages/templates/index.cjs +1 -1
  89. package/dist/pages/templates/index.js +1 -1
  90. package/dist/views/admin/delegations/index.cjs +1 -1
  91. package/dist/views/admin/delegations/index.js +1 -1
  92. package/dist/views/admin/index.cjs +1 -1
  93. package/dist/views/admin/index.js +3 -3
  94. package/dist/views/admin/orgs/index.cjs +1 -1
  95. package/dist/views/admin/orgs/index.js +1 -1
  96. package/dist/views/admin/users/index.cjs +1 -1
  97. package/dist/views/admin/users/index.js +1 -1
  98. package/dist/views/cc/index.cjs +1 -1
  99. package/dist/views/cc/index.js +1 -1
  100. package/dist/views/dashboard/index.cjs +1 -1
  101. package/dist/views/dashboard/index.js +1 -1
  102. package/dist/views/delegations/index.cjs +1 -1
  103. package/dist/views/delegations/index.js +1 -1
  104. package/dist/views/forms/builder/index.cjs +1 -1
  105. package/dist/views/forms/builder/index.js +1 -1
  106. package/dist/views/forms/index.cjs +1 -1
  107. package/dist/views/forms/index.cjs.map +1 -1
  108. package/dist/views/forms/index.js +84 -80
  109. package/dist/views/forms/index.js.map +1 -1
  110. package/dist/views/inbox/index.cjs +1 -1
  111. package/dist/views/inbox/index.cjs.map +1 -1
  112. package/dist/views/inbox/index.js +83 -79
  113. package/dist/views/inbox/index.js.map +1 -1
  114. package/dist/views/instances/detail/index.cjs +1 -1
  115. package/dist/views/instances/detail/index.js +1 -1
  116. package/dist/views/instances/new/index.cjs +1 -1
  117. package/dist/views/instances/new/index.cjs.map +1 -1
  118. package/dist/views/instances/new/index.js +107 -100
  119. package/dist/views/instances/new/index.js.map +1 -1
  120. package/dist/views/search/index.cjs +1 -1
  121. package/dist/views/search/index.js +1 -1
  122. package/dist/views/sent/index.cjs +1 -1
  123. package/dist/views/sent/index.js +1 -1
  124. package/dist/views/settings/index.cjs +1 -1
  125. package/dist/views/settings/index.js +1 -1
  126. package/dist/views/settings/notifications/index.cjs +1 -1
  127. package/dist/views/settings/notifications/index.js +1 -1
  128. package/dist/views/templates/categories/index.cjs +1 -1
  129. package/dist/views/templates/categories/index.js +1 -1
  130. package/dist/views/templates/designer/index.cjs +6 -6
  131. package/dist/views/templates/designer/index.cjs.map +1 -1
  132. package/dist/views/templates/designer/index.js +758 -754
  133. package/dist/views/templates/designer/index.js.map +1 -1
  134. package/dist/views/templates/index.cjs +1 -1
  135. package/dist/views/templates/index.js +2 -2
  136. package/dist/views/templates/versions/index.cjs +1 -1
  137. package/dist/views/templates/versions/index.cjs.map +1 -1
  138. package/dist/views/templates/versions/index.js +47 -43
  139. package/dist/views/templates/versions/index.js.map +1 -1
  140. package/package.json +3 -3
  141. package/dist/chunks/app-navigation-BRRFCkxZ.cjs +0 -2
  142. package/dist/chunks/app-navigation-BRRFCkxZ.cjs.map +0 -1
  143. package/dist/chunks/app-navigation-rxhpHCch.js +0 -262
  144. package/dist/chunks/app-navigation-rxhpHCch.js.map +0 -1
  145. package/dist/chunks/approval-instance-list-page-2vUWc5-c.cjs +0 -2
  146. package/dist/chunks/approval-instance-list-page-2vUWc5-c.cjs.map +0 -1
  147. package/dist/chunks/approval-instance-list-page-BgE4vQw8.js.map +0 -1
  148. package/dist/chunks/builder-B8X-m6C5.cjs +0 -3
  149. package/dist/chunks/builder-B8X-m6C5.cjs.map +0 -1
  150. package/dist/chunks/builder-Du_0apkh.js.map +0 -1
  151. package/dist/chunks/categories-DG4k7S8V.js +0 -383
  152. package/dist/chunks/categories-DG4k7S8V.js.map +0 -1
  153. package/dist/chunks/categories-DshBQG33.cjs +0 -2
  154. package/dist/chunks/categories-DshBQG33.cjs.map +0 -1
  155. package/dist/chunks/dashboard-page-CTBwpu_D.js +0 -114
  156. package/dist/chunks/dashboard-page-CTBwpu_D.js.map +0 -1
  157. package/dist/chunks/dashboard-page-DcDiWQp2.cjs +0 -2
  158. package/dist/chunks/dashboard-page-DcDiWQp2.cjs.map +0 -1
  159. package/dist/chunks/delegations-BAZQbElH.js +0 -642
  160. package/dist/chunks/delegations-BAZQbElH.js.map +0 -1
  161. package/dist/chunks/delegations-DzrckrPp.js +0 -569
  162. package/dist/chunks/delegations-DzrckrPp.js.map +0 -1
  163. package/dist/chunks/delegations-Z8hTajLj.cjs +0 -2
  164. package/dist/chunks/delegations-Z8hTajLj.cjs.map +0 -1
  165. package/dist/chunks/delegations-hb9JoVZe.cjs +0 -2
  166. package/dist/chunks/delegations-hb9JoVZe.cjs.map +0 -1
  167. package/dist/chunks/detail-DilI0PPe.js +0 -1519
  168. package/dist/chunks/detail-DilI0PPe.js.map +0 -1
  169. package/dist/chunks/detail-DuRg3Y7b.cjs +0 -2
  170. package/dist/chunks/detail-DuRg3Y7b.cjs.map +0 -1
  171. package/dist/chunks/notifications-B2Lk3grg.js +0 -194
  172. package/dist/chunks/notifications-B2Lk3grg.js.map +0 -1
  173. package/dist/chunks/notifications-C8ADhnxF.cjs +0 -2
  174. package/dist/chunks/notifications-C8ADhnxF.cjs.map +0 -1
  175. package/dist/chunks/orgs-CGv3VNDR.cjs +0 -2
  176. package/dist/chunks/orgs-CGv3VNDR.cjs.map +0 -1
  177. package/dist/chunks/orgs-c29y74w2.js.map +0 -1
  178. package/dist/chunks/templates-Cd0WFheA.cjs +0 -2
  179. package/dist/chunks/templates-Cd0WFheA.cjs.map +0 -1
  180. package/dist/chunks/templates-Dn9QHFSy.js.map +0 -1
  181. package/dist/chunks/users-B-trMu0E.cjs +0 -2
  182. package/dist/chunks/users-B-trMu0E.cjs.map +0 -1
  183. package/dist/chunks/users-itVXXRj7.js +0 -215
  184. package/dist/chunks/users-itVXXRj7.js.map +0 -1
@@ -0,0 +1,646 @@
1
+ "use client";
2
+ import { n as e } from "./auth-provider-Bnox5gsx.js";
3
+ import { t } from "./format-date-time-CB-LxzqT.js";
4
+ import { t as n } from "./app-navigation-BSkMsEhy.js";
5
+ import { r } from "./routes-config-dxahImVe.js";
6
+ import { t as i } from "./bpm-form-field-Cao0rMol.js";
7
+ import { useCallback as a, useEffect as o, useMemo as s, useState as c } from "react";
8
+ import { AutoComplete as ee, Badge as l, Button as te, DateTimePicker as u, Filter as d, FilterArea as ne, FilterLine as re, FormField as f, Input as ie, Modal as ae, PageHeader as oe, Section as se, SectionGroup as ce, Select as le, Tab as ue, TabItem as de, Table as fe, Tooltip as p, Typography as m } from "@mezzanine-ui/react";
9
+ import { jsx as h, jsxs as g } from "react/jsx-runtime";
10
+ import { createDelegationRule as pe, listDelegationRulesPage as me, revokeDelegationRule as he, searchMembers as ge } from "@rytass/bpm-core-client/workflow";
11
+ import { PlusIcon as _e } from "@mezzanine-ui/icons";
12
+ import ve from "@mezzanine-ui/react/ContentHeader";
13
+ import { FormFieldLayout as _ } from "@mezzanine-ui/core/form";
14
+ import { listApprovalTemplates as ye } from "@rytass/bpm-core-client/template";
15
+ import '../delegations.css';var v = {
16
+ delegationModalFields: "bpm_delegationModalFields_gUlCQ",
17
+ delegationFilterArea: "bpm_delegationFilterArea_QDZkw",
18
+ memberNameWithTooltip: "bpm_memberNameWithTooltip_RggTW"
19
+ }, be = _.HORIZONTAL, xe = [
20
+ 10,
21
+ 20,
22
+ 50
23
+ ], Se = [
24
+ {
25
+ key: "ALL",
26
+ label: "全部"
27
+ },
28
+ {
29
+ key: "ACTIVE",
30
+ label: "啟用中"
31
+ },
32
+ {
33
+ key: "REVOKED",
34
+ label: "已撤銷"
35
+ },
36
+ {
37
+ key: "EXPIRED",
38
+ label: "已過期"
39
+ }
40
+ ], y = [{
41
+ id: "ALL",
42
+ name: "全部簽核"
43
+ }, {
44
+ id: "TEMPLATE_LIST",
45
+ name: "指定模板"
46
+ }], b = [
47
+ {
48
+ id: "ALL_SCOPES",
49
+ name: "全部範圍",
50
+ scopeType: null
51
+ },
52
+ {
53
+ id: "ALL",
54
+ name: "全部簽核",
55
+ scopeType: "ALL"
56
+ },
57
+ {
58
+ id: "TEMPLATE_LIST",
59
+ name: "指定模板",
60
+ scopeType: "TEMPLATE_LIST"
61
+ }
62
+ ];
63
+ function x({ activeHref: l } = {}) {
64
+ let p = r(), be = l ?? p.adminDelegations(), { member: x } = e(), w = x?.memberId ?? null, [T, E] = c(null), [D, O] = c(""), [k, j] = c(null), [Ie, Le] = c(!0), [M, N] = c(!1), [P, F] = c([]), [I, Re] = c(null), [L, ze] = c(null), [Be, R] = c(!1), [z, Ve] = c(null), [B, He] = c("100"), [V, H] = c(1), [U, Ue] = c(10), [W, We] = c("ALL"), [Ge, Ke] = c(0), [qe, Je] = c([]), [Ye, Xe] = c(!1), [G, Ze] = c([]), [K, Qe] = c(b[0]), [$e, et] = c(y[0]), [q, tt] = c(""), [nt, rt] = c(!1), [it, J] = c([]), Y = a(async () => {
65
+ Le(!0), j(null);
66
+ try {
67
+ let [e, t] = await Promise.all([me({
68
+ agentMemberId: L?.id ?? null,
69
+ includeInactive: !0,
70
+ page: V,
71
+ pageSize: U,
72
+ principalMemberId: I?.id ?? null,
73
+ scopeType: K.scopeType,
74
+ status: W === "ALL" ? null : W
75
+ }), ge("")]);
76
+ Je(e.rules), Ke(e.totalCount), F(t.map(C));
77
+ } catch (e) {
78
+ j(A(e));
79
+ } finally {
80
+ Le(!1);
81
+ }
82
+ }, [
83
+ L,
84
+ I,
85
+ V,
86
+ U,
87
+ W,
88
+ K
89
+ ]);
90
+ o(() => {
91
+ Y();
92
+ }, [Y]);
93
+ let X = s(() => new Map(P.map((e) => [e.id, e])), [P]), at = s(() => qe.map((e) => ({
94
+ ...e,
95
+ agentEmail: X.get(e.agentMemberId)?.email ?? null,
96
+ agentName: X.get(e.agentMemberId)?.displayName ?? e.agentMemberId,
97
+ key: e.id,
98
+ principalEmail: X.get(e.principalMemberId)?.email ?? null,
99
+ principalName: X.get(e.principalMemberId)?.displayName ?? e.principalMemberId,
100
+ scopeLabel: Ae(e)
101
+ })), [X, qe]), Z = y.find((e) => e.id === $e.id) ?? y[0], ot = s(() => [
102
+ {
103
+ key: "principal",
104
+ render: (e) => /* @__PURE__ */ h(Ce, {
105
+ email: e.principalEmail,
106
+ name: e.principalName
107
+ }),
108
+ title: "原簽核人",
109
+ width: 220
110
+ },
111
+ {
112
+ key: "agent",
113
+ render: (e) => /* @__PURE__ */ h(Ce, {
114
+ email: e.agentEmail,
115
+ name: e.agentName
116
+ }),
117
+ title: "代理人",
118
+ width: 220
119
+ },
120
+ {
121
+ dataIndex: "scopeLabel",
122
+ key: "scope",
123
+ title: "代理範圍",
124
+ width: 220
125
+ },
126
+ {
127
+ key: "status",
128
+ render: (e) => /* @__PURE__ */ h(je, { status: e.status }),
129
+ title: "狀態",
130
+ width: 120
131
+ },
132
+ {
133
+ dataIndex: "priority",
134
+ key: "priority",
135
+ title: "優先序",
136
+ width: 100
137
+ },
138
+ {
139
+ key: "startAt",
140
+ render: (e) => /* @__PURE__ */ h(m, {
141
+ component: "span",
142
+ variant: "body",
143
+ children: t(e.startAt)
144
+ }),
145
+ title: "開始時間",
146
+ width: 220
147
+ },
148
+ {
149
+ key: "endAt",
150
+ render: (e) => /* @__PURE__ */ h(m, {
151
+ component: "span",
152
+ variant: "body",
153
+ children: e.endAt ? t(e.endAt) : "-"
154
+ }),
155
+ title: "結束時間",
156
+ width: 220
157
+ }
158
+ ], []), st = a(async (e) => {
159
+ if (w) {
160
+ j(null);
161
+ try {
162
+ await he({
163
+ id: e,
164
+ revokedByMemberId: w
165
+ }), await Y();
166
+ } catch (e) {
167
+ j(A(e));
168
+ }
169
+ }
170
+ }, [w, Y]), ct = s(() => ({
171
+ render: (e) => e.status === "ACTIVE" ? [{
172
+ name: "撤銷",
173
+ onClick: () => void st(e.id)
174
+ }] : [],
175
+ variant: "destructive-secondary",
176
+ width: 88
177
+ }), [st]);
178
+ async function Q(e) {
179
+ N(!0);
180
+ try {
181
+ F((await ge(e)).map(C));
182
+ } catch (e) {
183
+ j(A(e));
184
+ } finally {
185
+ N(!1);
186
+ }
187
+ }
188
+ async function $(e, t = G) {
189
+ rt(!0);
190
+ try {
191
+ J(De(t, Ee((await ye()).map(we), e)));
192
+ } catch (e) {
193
+ j(A(e));
194
+ } finally {
195
+ rt(!1);
196
+ }
197
+ }
198
+ function lt() {
199
+ E(null), O(""), Ve(null), He("100"), Ze([]), et(y[0]), tt(""), J([]), $("", []), R(!0);
200
+ }
201
+ function ut() {
202
+ Ye || R(!1);
203
+ }
204
+ async function dt() {
205
+ if (w) {
206
+ if (!z || !T) {
207
+ j("請選擇原簽核人與代理人");
208
+ return;
209
+ }
210
+ if (Z.id === "TEMPLATE_LIST" && G.length < 1) {
211
+ j("請選擇至少一個簽核模板");
212
+ return;
213
+ }
214
+ if (Fe(q, D)) {
215
+ j("結束時間必須晚於起始時間");
216
+ return;
217
+ }
218
+ Xe(!0), j(null);
219
+ try {
220
+ await pe({
221
+ agentMemberId: T.id,
222
+ createdByMemberId: w,
223
+ endAt: D || null,
224
+ principalMemberId: z.id,
225
+ priority: Number(B) || 100,
226
+ requiresConfirmation: !1,
227
+ scopeConditionCel: null,
228
+ scopeTemplateIds: Z.id === "TEMPLATE_LIST" ? G.map((e) => e.id) : [],
229
+ scopeType: Z.id,
230
+ startAt: q || null
231
+ }), R(!1), V === 1 ? await Y() : H(1);
232
+ } catch (e) {
233
+ j(A(e));
234
+ } finally {
235
+ Xe(!1);
236
+ }
237
+ }
238
+ }
239
+ return /* @__PURE__ */ g(n, {
240
+ activeHref: be,
241
+ children: [
242
+ /* @__PURE__ */ h(oe, { children: /* @__PURE__ */ h(ve, {
243
+ description: "設定簽核代理規則,讓符合範圍的待簽任務自動改派給代理人。",
244
+ title: "代理設定",
245
+ children: /* @__PURE__ */ h(te, {
246
+ icon: _e,
247
+ iconType: "leading",
248
+ onClick: lt,
249
+ variant: "base-primary",
250
+ children: "建立代理"
251
+ })
252
+ }) }),
253
+ /* @__PURE__ */ h(ce, { children: /* @__PURE__ */ g(se, {
254
+ filterArea: /* @__PURE__ */ h(ne, {
255
+ className: v.delegationFilterArea,
256
+ children: /* @__PURE__ */ g(re, { children: [
257
+ /* @__PURE__ */ h(d, {
258
+ span: 2,
259
+ children: /* @__PURE__ */ h(S, {
260
+ hideLabel: !0,
261
+ label: "原簽核人",
262
+ loading: M,
263
+ name: "principalFilterMemberId",
264
+ onChange: (e) => {
265
+ Re(e), H(1);
266
+ },
267
+ onSearch: Q,
268
+ options: P,
269
+ required: !1,
270
+ layout: _.VERTICAL,
271
+ size: "sub",
272
+ value: I
273
+ })
274
+ }),
275
+ /* @__PURE__ */ h(d, {
276
+ span: 2,
277
+ children: /* @__PURE__ */ h(S, {
278
+ hideLabel: !0,
279
+ label: "代理人",
280
+ loading: M,
281
+ name: "agentFilterMemberId",
282
+ onChange: (e) => {
283
+ ze(e), H(1);
284
+ },
285
+ onSearch: Q,
286
+ options: P,
287
+ required: !1,
288
+ layout: _.VERTICAL,
289
+ size: "sub",
290
+ value: L
291
+ })
292
+ }),
293
+ /* @__PURE__ */ h(d, {
294
+ span: 2,
295
+ children: /* @__PURE__ */ h(f, {
296
+ fullWidth: !0,
297
+ layout: _.VERTICAL,
298
+ name: "scopeFilterType",
299
+ children: /* @__PURE__ */ h(le, {
300
+ clearable: !1,
301
+ fullWidth: !0,
302
+ onChange: (e) => {
303
+ Qe(ke(e)), H(1);
304
+ },
305
+ options: [...b],
306
+ placeholder: "代理範圍",
307
+ size: "sub",
308
+ value: K
309
+ })
310
+ })
311
+ })
312
+ ] })
313
+ }),
314
+ tab: /* @__PURE__ */ h(ue, {
315
+ activeKey: W,
316
+ onChange: (e) => {
317
+ We(Me(e)), H(1);
318
+ },
319
+ children: Se.map((e) => /* @__PURE__ */ h(de, { children: e.label }, e.key))
320
+ }),
321
+ children: [k ? /* @__PURE__ */ h(m, {
322
+ color: "text-error",
323
+ variant: "body",
324
+ children: k
325
+ }) : null, /* @__PURE__ */ h(fe, {
326
+ actions: ct,
327
+ columns: ot,
328
+ dataSource: at,
329
+ fullWidth: !0,
330
+ loading: Ie,
331
+ pagination: {
332
+ current: V,
333
+ onChange: (e) => {
334
+ H(e);
335
+ },
336
+ onChangePageSize: (e) => {
337
+ H(1), Ue(e);
338
+ },
339
+ pageSize: U,
340
+ pageSizeLabel: "每頁筆數",
341
+ pageSizeOptions: xe,
342
+ renderResultSummary: (e, t, n) => `顯示 ${e}-${t} 筆,共 ${n} 筆`,
343
+ showPageSizeOptions: !0,
344
+ total: Ge
345
+ }
346
+ })]
347
+ }) }),
348
+ /* @__PURE__ */ h(ae, {
349
+ cancelText: "取消",
350
+ confirmButtonProps: { disabled: !z || !T },
351
+ confirmText: "建立代理",
352
+ loading: Ye,
353
+ modalType: "standard",
354
+ onCancel: ut,
355
+ onClose: ut,
356
+ onConfirm: () => void dt(),
357
+ open: Be,
358
+ showModalFooter: !0,
359
+ showModalHeader: !0,
360
+ size: "regular",
361
+ supportingText: "代理生效後,後續建立的待簽任務會依範圍自動指派。",
362
+ title: "建立代理",
363
+ children: /* @__PURE__ */ g("div", {
364
+ className: v.delegationModalFields,
365
+ children: [
366
+ /* @__PURE__ */ h(S, {
367
+ label: "原簽核人",
368
+ loading: M,
369
+ name: "principalMemberId",
370
+ onChange: Ve,
371
+ onSearch: Q,
372
+ options: P,
373
+ value: z
374
+ }),
375
+ /* @__PURE__ */ h(S, {
376
+ label: "代理人",
377
+ loading: M,
378
+ name: "agentMemberId",
379
+ onChange: E,
380
+ onSearch: Q,
381
+ options: P,
382
+ value: T
383
+ }),
384
+ /* @__PURE__ */ h(i, {
385
+ label: "代理範圍",
386
+ name: "scopeType",
387
+ required: !0,
388
+ children: /* @__PURE__ */ h(le, {
389
+ clearable: !1,
390
+ fullWidth: !0,
391
+ onChange: (e) => et(Oe(e)),
392
+ options: [...y],
393
+ value: Z
394
+ })
395
+ }),
396
+ Z.id === "TEMPLATE_LIST" ? /* @__PURE__ */ h(i, {
397
+ label: "簽核模板",
398
+ name: "scopeTemplateIds",
399
+ required: !0,
400
+ children: /* @__PURE__ */ h(ee, {
401
+ asyncData: !0,
402
+ disabledOptionsFilter: !0,
403
+ emptyText: "沒有符合的模板",
404
+ inputProps: {
405
+ autoCapitalize: "none",
406
+ autoCorrect: "off",
407
+ name: "scopeTemplateIds",
408
+ spellCheck: !1
409
+ },
410
+ loading: nt,
411
+ loadingText: "搜尋模板中...",
412
+ mode: "multiple",
413
+ onChange: (e) => {
414
+ let t = Te(e);
415
+ Ze(t), J((e) => De(t, e));
416
+ },
417
+ onSearch: $,
418
+ onVisibilityChange: (e) => {
419
+ e && $("");
420
+ },
421
+ options: [...it],
422
+ overflowStrategy: "wrap",
423
+ placeholder: "搜尋並選取簽核模板",
424
+ searchDebounceTime: 300,
425
+ value: [...G]
426
+ })
427
+ }) : null,
428
+ /* @__PURE__ */ h(i, {
429
+ label: "優先序",
430
+ name: "priority",
431
+ children: /* @__PURE__ */ h(ie, {
432
+ fullWidth: !0,
433
+ onChange: (e) => He(e.target.value),
434
+ value: B,
435
+ variant: "base"
436
+ })
437
+ }),
438
+ /* @__PURE__ */ h(i, {
439
+ label: "起始時間",
440
+ name: "startAt",
441
+ children: /* @__PURE__ */ h(u, {
442
+ formatDate: "YYYY-MM-DD",
443
+ formatTime: "HH:mm",
444
+ fullWidth: !0,
445
+ hideSecond: !0,
446
+ onChange: (e) => tt(Pe(e)),
447
+ placeholderLeft: "留空立即生效",
448
+ placeholderRight: "選擇時間",
449
+ value: Ne(q)
450
+ })
451
+ }),
452
+ /* @__PURE__ */ h(i, {
453
+ label: "結束時間",
454
+ name: "endAt",
455
+ children: /* @__PURE__ */ h(u, {
456
+ formatDate: "YYYY-MM-DD",
457
+ formatTime: "HH:mm",
458
+ fullWidth: !0,
459
+ hideSecond: !0,
460
+ onChange: (e) => O(Pe(e)),
461
+ placeholderLeft: "可留空",
462
+ placeholderRight: "選擇時間",
463
+ value: Ne(D)
464
+ })
465
+ })
466
+ ]
467
+ })
468
+ })
469
+ ]
470
+ });
471
+ }
472
+ function S({ hideLabel: e = !1, label: t, layout: n = be, loading: r, name: a, onChange: o, onSearch: s, options: c, required: l = !0, size: te, value: u }) {
473
+ let d = /* @__PURE__ */ h(ee, {
474
+ asyncData: !0,
475
+ disabledOptionsFilter: !0,
476
+ emptyText: "沒有符合的成員",
477
+ inputProps: {
478
+ autoCapitalize: "none",
479
+ autoCorrect: "off",
480
+ name: a,
481
+ spellCheck: !1
482
+ },
483
+ loading: r,
484
+ loadingText: "搜尋成員中...",
485
+ mode: "single",
486
+ onChange: (e) => o(w(e)),
487
+ onSearch: s,
488
+ onSearchTextChange: (e) => o(T(e, c)),
489
+ onVisibilityChange: (e) => {
490
+ e && s("");
491
+ },
492
+ options: [...c],
493
+ placeholder: e ? t : "搜尋姓名或信箱",
494
+ searchDebounceTime: 300,
495
+ size: te,
496
+ value: u
497
+ });
498
+ return e ? /* @__PURE__ */ h(f, {
499
+ fullWidth: !0,
500
+ layout: n,
501
+ name: a,
502
+ children: d
503
+ }) : /* @__PURE__ */ h(i, {
504
+ label: t,
505
+ layout: n,
506
+ name: a,
507
+ required: l,
508
+ children: d
509
+ });
510
+ }
511
+ function C(e) {
512
+ return {
513
+ displayName: e.name,
514
+ email: e.email,
515
+ id: e.memberId,
516
+ name: `${e.name} · ${e.email}`
517
+ };
518
+ }
519
+ function w(e) {
520
+ if (!j(e)) return null;
521
+ let t = e.id, n = e.name, r = e.email, i = e.displayName;
522
+ return typeof t == "string" && typeof n == "string" ? {
523
+ displayName: typeof i == "string" ? i : n,
524
+ email: typeof r == "string" ? r : null,
525
+ id: t,
526
+ name: n
527
+ } : null;
528
+ }
529
+ function Ce({ email: e, name: t }) {
530
+ return e ? /* @__PURE__ */ h(p, {
531
+ title: e,
532
+ children: ({ onMouseEnter: e, onMouseLeave: n, ref: r }) => /* @__PURE__ */ h("span", {
533
+ className: v.memberNameWithTooltip,
534
+ onMouseEnter: e,
535
+ onMouseLeave: n,
536
+ ref: r,
537
+ children: t
538
+ })
539
+ }) : /* @__PURE__ */ h("span", { children: t });
540
+ }
541
+ function T(e, t) {
542
+ let n = e.trim().toLocaleLowerCase();
543
+ if (!n) return null;
544
+ let r = t.filter((e) => [
545
+ e.id,
546
+ e.name,
547
+ e.email ?? ""
548
+ ].some((e) => e.toLocaleLowerCase().includes(n)));
549
+ return r.length === 1 ? r[0] ?? null : null;
550
+ }
551
+ function we(e) {
552
+ return {
553
+ id: e.id,
554
+ name: e.name
555
+ };
556
+ }
557
+ function Te(e) {
558
+ return e.flatMap((e) => {
559
+ if (!j(e)) return [];
560
+ let t = e.id, n = e.name;
561
+ return typeof t == "string" && typeof n == "string" ? [{
562
+ id: t,
563
+ name: n
564
+ }] : [];
565
+ });
566
+ }
567
+ function Ee(e, t) {
568
+ let n = t.trim().toLocaleLowerCase();
569
+ return n ? e.filter((e) => [e.id, e.name].some((e) => e.toLocaleLowerCase().includes(n))) : e;
570
+ }
571
+ function De(e, t) {
572
+ return [...e, ...t].reduce((e, t) => e.some((e) => e.id === t.id) ? e : [...e, t], []);
573
+ }
574
+ function Oe(e) {
575
+ return !j(e) || !E(e.id) ? y[0] : y.find((t) => t.id === e.id) ?? y[0];
576
+ }
577
+ function ke(e) {
578
+ if (!j(e)) return b[0];
579
+ let t = e.id;
580
+ return b.find((e) => e.id === t) ?? b[0];
581
+ }
582
+ function E(e) {
583
+ return e === "ALL" || e === "TEMPLATE_LIST";
584
+ }
585
+ function Ae(e) {
586
+ return e.scopeType === "ALL" ? "全部簽核" : e.scopeType === "TEMPLATE_LIST" ? `指定模板:${e.scopeTemplateIds.length}` : e.scopeConditionCel ? `條件:${e.scopeConditionCel}` : "條件式";
587
+ }
588
+ function je({ status: e }) {
589
+ return e === "ACTIVE" ? /* @__PURE__ */ h(l, {
590
+ size: "sub",
591
+ text: "啟用中",
592
+ variant: "dot-success"
593
+ }) : e === "REVOKED" ? /* @__PURE__ */ h(l, {
594
+ size: "sub",
595
+ text: "已撤銷",
596
+ variant: "dot-inactive"
597
+ }) : e === "EXPIRED" ? /* @__PURE__ */ h(l, {
598
+ size: "sub",
599
+ text: "已過期",
600
+ variant: "dot-warning"
601
+ }) : /* @__PURE__ */ h(l, {
602
+ size: "sub",
603
+ text: e,
604
+ variant: "dot-info"
605
+ });
606
+ }
607
+ function Me(e) {
608
+ return e === "ACTIVE" || e === "REVOKED" || e === "EXPIRED" ? e : "ALL";
609
+ }
610
+ function Ne(e) {
611
+ let t = e ? D(e) : null;
612
+ return t ? `${O(t)}T${k(t.getHours())}:${k(t.getMinutes())}` : void 0;
613
+ }
614
+ function Pe(e) {
615
+ let t = e ? D(e) : null;
616
+ return t ? t.toISOString() : "";
617
+ }
618
+ function Fe(e, t) {
619
+ if (!e || !t) return !1;
620
+ let n = D(e), r = D(t);
621
+ return !!n && !!r && r.getTime() <= n.getTime();
622
+ }
623
+ function D(e) {
624
+ if (e.endsWith("Z") || /[+-]\d{2}:\d{2}$/.test(e)) {
625
+ let t = new Date(e);
626
+ return Number.isNaN(t.getTime()) ? null : t;
627
+ }
628
+ let [t = "", n = "00:00"] = e.split("T"), [r = 0, i = 1, a = 1] = t.split("-").map(Number), [o = 0, s = 0] = n.split(":").map(Number), c = new Date(r, i - 1, a, o, s);
629
+ return Number.isNaN(c.getTime()) ? null : c;
630
+ }
631
+ function O(e) {
632
+ return `${e.getFullYear()}-${k(e.getMonth() + 1)}-${k(e.getDate())}`;
633
+ }
634
+ function k(e) {
635
+ return String(e).padStart(2, "0");
636
+ }
637
+ function A(e) {
638
+ return e instanceof Error ? e.message : "發生未知錯誤";
639
+ }
640
+ function j(e) {
641
+ return typeof e == "object" && !!e;
642
+ }
643
+ //#endregion
644
+ export { x as t };
645
+
646
+ //# sourceMappingURL=delegations-B2j-wNEO.js.map