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