@ximatai/muyun-web-app 0.26.21 → 0.26.23

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 (39) hide show
  1. package/dist/{BusinessActivityLogView-6L75GZVc.js → BusinessActivityLogView-IWGZiPLo.js} +2 -2
  2. package/dist/{BusinessLogListDrawer-C4iFnkE7.js → BusinessLogListDrawer-UCsg6psI.js} +85 -85
  3. package/dist/{CodeConfigurationView-D7sqbNCg.js → CodeConfigurationView-Calkazua.js} +532 -532
  4. package/dist/{ConfigurationTranslationView-ta82REbn.js → ConfigurationTranslationView-fZrlRAMy.js} +24 -24
  5. package/dist/{LoginAuditLogView-B_RQ9JIX.js → LoginAuditLogView-B6J7t__0.js} +2 -2
  6. package/dist/ModuleActionManagementView-BZ89Woex.js +755 -0
  7. package/dist/{ModuleGovernanceView-Cl6tkZ6M.js → ModuleGovernanceView-D8ONs78K.js} +1892 -1892
  8. package/dist/{RequestErrorLogView-BJDO3Scn.js → RequestErrorLogView-poMgx4_6.js} +2 -2
  9. package/dist/RoleDetailWorkspaceView-6Bs1eKbm.js +1435 -0
  10. package/dist/{RuntimeLogView-jP9ceuJD.js → RuntimeLogView-Co-Z86bt.js} +41 -41
  11. package/dist/WorkflowAdministrationView-D7QpRHDp.js +650 -0
  12. package/dist/{WorkflowConfigurationView-Dh6BKQm5.js → WorkflowConfigurationView-mSyL_-We.js} +32 -32
  13. package/dist/{WorkflowWorkbenchView-BvPNKbuV.js → WorkflowWorkbenchView-DBMh3ycN.js} +224 -224
  14. package/dist/{codeConfiguration-DhCBKbkc.js → codeConfiguration-D1zrxzoW.js} +44 -44
  15. package/dist/index.css +1 -1
  16. package/dist/index.js +524 -550
  17. package/dist/moduleMenuWorkspace-lIVrTaOB.js +626 -0
  18. package/dist/{platform-components-i2ONyZ8r.js → platform-components-D0T03KGl.js} +2815 -2913
  19. package/dist/{platform-workbench-DhaREttd.js → platform-workbench-CobObbuz.js} +2770 -2745
  20. package/dist/record-read.js +2 -0
  21. package/dist/recordReadEntry-CxDHM44F.js +152 -0
  22. package/dist/types/consumer/recordRead.d.ts +6 -0
  23. package/dist/types/dynamic-page-runtime/ModulePageBusinessSession.d.ts +4 -0
  24. package/dist/types/dynamic-page-runtime/ModulePageHostRuntime.vue.d.ts +8 -0
  25. package/dist/types/dynamic-page-runtime/ModulePageRecordContent.vue.d.ts +2 -0
  26. package/dist/types/dynamic-page-runtime/ModuleRecordDetailActions.vue.d.ts +2 -0
  27. package/dist/types/dynamic-page-runtime/RecordFormSurface.vue.d.ts +2 -0
  28. package/dist/types/dynamic-page-runtime/useModulePageSession.d.ts +2 -0
  29. package/dist/types/platform-components/RecordFormFields.vue.d.ts +10 -8
  30. package/dist/types/platform-components/useBusinessCodeForm.d.ts +1 -0
  31. package/dist/types/platform-workbench/useAssistantConversation.d.ts +3 -0
  32. package/dist/types/web-contracts/operation.d.ts +2 -0
  33. package/dist/{useWorkflowConfigurationContext-B_NxZFyz.js → useWorkflowConfigurationContext-BkcNPU2H.js} +8 -8
  34. package/dist/{workspaceViews-MTwNg_aQ.js → workspaceViews-BtqO8rU0.js} +355 -355
  35. package/package.json +5 -1
  36. package/dist/ModuleActionManagementView-DtGF3NC_.js +0 -755
  37. package/dist/RoleDetailWorkspaceView-C0Ab3PEp.js +0 -1435
  38. package/dist/WorkflowAdministrationView-BmNJQYtq.js +0 -650
  39. package/dist/moduleMenuWorkspace-BbVmNKZn.js +0 -626
@@ -0,0 +1,626 @@
1
+ import { ht as e, m as t, vt as n, xt as r } from "./platform-workbench-CobObbuz.js";
2
+ import { $a as i, Ca as a, Ea as o, Ka as s, Pa as c, Qn as l, Zr as u, ba as d, da as f, fa as p, fr as m, or as h, pi as g, rr as _, sa as v, ua as y, ur as b } from "./platform-components-D0T03KGl.js";
3
+ import { Fragment as x, computed as S, createBlock as C, createCommentVNode as w, createElementBlock as T, createElementVNode as E, createTextVNode as D, createVNode as O, defineComponent as k, inject as A, nextTick as j, openBlock as M, ref as N, shallowRef as P, toDisplayString as F, unref as I, watch as L, withCtx as R } from "vue";
4
+ //#region src/platform-admin-runtime/module-menu/moduleMenuClient.ts
5
+ function z(e) {
6
+ let t = u(e, { moduleAlias: "platform.menu_scheme" });
7
+ return {
8
+ async schemes() {
9
+ let e = [];
10
+ for (let n = 1;; n++) {
11
+ let r = await t.query({ page: {
12
+ pageNum: n,
13
+ pageSize: 100
14
+ } });
15
+ if (e.push(...r.records), e.length >= r.total || r.records.length === 0) return e;
16
+ }
17
+ },
18
+ async tree(t) {
19
+ return (await e.request({
20
+ method: "POST",
21
+ path: "/platform.menu/tree/query",
22
+ headers: { "X-MuYun-Page-Context": JSON.stringify({ scheme: t }) },
23
+ body: { externalQueryValues: { schemeId: t } }
24
+ })).records;
25
+ },
26
+ context(t) {
27
+ return e.request({ path: `/platform.module/${encodeURIComponent(t)}/context` });
28
+ },
29
+ insert(t, n, r) {
30
+ return u(i(e, { "X-MuYun-Page-Context": JSON.stringify({ scheme: t }) }), { moduleAlias: "platform.menu" }).insert(n, { requestId: r });
31
+ },
32
+ view(t, n) {
33
+ return u(i(e, { "X-MuYun-Page-Context": JSON.stringify({ scheme: t }) }), { moduleAlias: "platform.menu" }).view(n);
34
+ },
35
+ receipt(t, n) {
36
+ return u(i(e, { "X-MuYun-Page-Context": JSON.stringify({ scheme: t }) }), { moduleAlias: "platform.menu" }).saveReceipt(n);
37
+ },
38
+ visible: () => r(e).mine().then((e) => e.records)
39
+ };
40
+ }
41
+ function B(e, t = s) {
42
+ return e ? e.scopeType === "system" ? t.t("platform.screen.moduleMenuClient.system-configuration-users", "系统配置用户") : e.organizationId ? t.t("platform.screen.moduleMenuClient.users-in-organization-value", "机构 {value1} 的用户", { value1: e.organizationId }) : e.tenantId ? t.t("platform.screen.moduleMenuClient.users-in-tenant-value", "租户 {value1} 的用户", { value1: e.tenantId }) : t.t("platform.screen.moduleMenuClient.audience-not-declared", "尚未声明适用范围") : t.t("platform.screen.moduleMenuClient.not-yet-determined", "尚未确定");
43
+ }
44
+ function V(e, t = "", n = s) {
45
+ return e.flatMap(({ record: e, children: r }) => {
46
+ let i = c(e, "title", n) ?? e.title, a = t ? `${t} / ${i}` : i;
47
+ return [{
48
+ menu: e,
49
+ path: a
50
+ }, ...V(r, a, n)];
51
+ });
52
+ }
53
+ function ee(e, t = !1, n = s) {
54
+ return e.map(({ record: e, children: r }) => {
55
+ let i = t || e.enabled === !1;
56
+ return {
57
+ value: e.id,
58
+ title: c(e, "title", n) ?? e.title,
59
+ disabled: i || !!e.moduleAlias,
60
+ children: ee(r, i, n)
61
+ };
62
+ });
63
+ }
64
+ //#endregion
65
+ //#region src/platform-admin-runtime/module-menu/ModuleMenuEditor.vue?vue&type=script&setup=true&lang.ts
66
+ var H = { class: "module-menu-form" }, U = { key: 0 }, W = {
67
+ key: 1,
68
+ class: "hint"
69
+ }, G = { class: "hint" }, K = {
70
+ key: 2,
71
+ role: "status"
72
+ }, te = { class: "hint" }, q = {
73
+ key: 1,
74
+ class: "hint"
75
+ }, J = {
76
+ key: 2,
77
+ role: "status"
78
+ }, Y = {
79
+ key: 3,
80
+ role: "status"
81
+ }, ne = {
82
+ key: 5,
83
+ role: "alert"
84
+ }, X = /*#__PURE__*/ m(/* @__PURE__ */ k({
85
+ __name: "ModuleMenuEditor",
86
+ props: {
87
+ session: {},
88
+ showSave: { type: Boolean }
89
+ },
90
+ emits: ["saved", "opened"],
91
+ setup(e, { expose: n, emit: r }) {
92
+ let i = e, a = r, o = i.session, s = o.language, u = t();
93
+ async function d() {
94
+ try {
95
+ await o.startAnother();
96
+ } catch (e) {
97
+ o.reportFailure(e instanceof Error ? e : f(s, "platform.screen.ModuleMenuEditor.cannot-start-a-new-entry-right-now", "暂时无法开始新入口"));
98
+ }
99
+ }
100
+ let p = S(() => o.loading.value || o.saving.value || o.resultUnknown.value || !o.authorized.value), m = S(() => p.value || o.updating.value), g = S(() => o.options.value.map((e) => ({
101
+ value: e.id,
102
+ label: `${c(e, "title", s) ?? e.alias ?? e.id} · ${B(e, s)}`
103
+ }))), v = S(() => [{
104
+ value: "root",
105
+ title: s.t("platform.screen.moduleMenuWorkspace.top-level", "顶层"),
106
+ children: ee(o.tree.value, !1, s)
107
+ }]);
108
+ async function y() {
109
+ try {
110
+ await (await o.prepare()).execute(), a("saved");
111
+ } catch (e) {
112
+ o.resultUnknown.value || o.reportFailure(e instanceof Error ? e : f(s, "platform.screen.ModuleMenuEditor.cannot-add-the-entry-right-now", "暂时无法添加入口"));
113
+ }
114
+ }
115
+ async function k() {
116
+ try {
117
+ await o.lookupPending() && a("saved");
118
+ } catch {
119
+ o.reportFailure(f(s, "platform.screen.ModuleMenuEditor.the-result-cannot-be-verified-right-now-retry-the-lookup", "结果暂时无法核实,请重试查询,勿重复添加。"));
120
+ }
121
+ }
122
+ async function A() {
123
+ await o.refreshVisibility(), o.visibleMenu.value && u?.openMenu && (u.openMenu(o.visibleMenu.value), a("opened"));
124
+ }
125
+ return n({ save: y }), (t, n) => (M(), T("div", H, [
126
+ I(o).saved.value ? (M(), T(x, { key: 1 }, [
127
+ E("strong", null, F(I(s).t("platform.screen.ModuleMenuEditor.added-to-menu", "已添加到菜单")), 1),
128
+ E("p", null, F(I(o).savedPath.value), 1),
129
+ E("p", te, F(I(s).t("platform.screen.ModuleMenuEditor.audience", "适用范围:")) + F(I(o).savedAudience.value), 1),
130
+ I(o).visibleMenu.value && I(u)?.openMenu ? (M(), C(I(b), {
131
+ key: 0,
132
+ type: "primary",
133
+ onClick: A
134
+ }, {
135
+ default: R(() => [D(F(I(s).t("platform.screen.ModuleMenuEntriesSection.open", "打开")), 1)]),
136
+ _: 1
137
+ })) : I(o).visibilityChecked.value ? (M(), T("p", q, F(I(s).t("platform.screen.ModuleMenuEditor.the-entry-was-saved-but-is-not-visible-in-navigation", "入口已保存,当前登录身份的导航暂不可见。请由适用范围内的使用者核实;若其也看不到,再检查上级菜单状态和业务访问权限。")), 1)) : w("v-if", !0),
138
+ O(I(b), {
139
+ disabled: I(o).saving.value,
140
+ onClick: d
141
+ }, {
142
+ default: R(() => [D(F(I(s).t("platform.screen.ModuleMenuEditor.add-another-entry", "另加一个入口")), 1)]),
143
+ _: 1
144
+ }, 8, ["disabled"]),
145
+ I(o).error.value ? (M(), C(I(b), {
146
+ key: 2,
147
+ disabled: I(o).saving.value,
148
+ onClick: I(o).refreshVisibility
149
+ }, {
150
+ default: R(() => [D(F(I(s).t("platform.screen.ModuleMenuEditor.refresh-navigation", "刷新导航")), 1)]),
151
+ _: 1
152
+ }, 8, ["disabled", "onClick"])) : w("v-if", !0)
153
+ ], 64)) : (M(), T(x, { key: 0 }, [
154
+ E("label", null, [D(F(I(s).t("platform.screen.ModuleMenuEditor.menu-name", "菜单名称")), 1), O(I(_), {
155
+ value: I(o).title.value,
156
+ disabled: m.value,
157
+ "aria-label": I(s).t("platform.screen.ModuleMenuEditor.menu-name", "菜单名称"),
158
+ "onUpdate:value": n[0] ||= (e) => I(o).update({ title: String(e ?? "") })
159
+ }, null, 8, [
160
+ "value",
161
+ "disabled",
162
+ "aria-label"
163
+ ])]),
164
+ g.value.length > 1 ? (M(), T("label", U, [D(F(I(s).t("platform.screen.ModuleMenuEditor.menu-scheme", "菜单方案")), 1), O(I(h), {
165
+ value: I(o).schemeId.value,
166
+ options: g.value,
167
+ "allow-clear": !1,
168
+ disabled: p.value,
169
+ "onUpdate:value": n[1] ||= (e) => I(o).update({ schemeId: String(e ?? "") })
170
+ }, null, 8, [
171
+ "value",
172
+ "options",
173
+ "disabled"
174
+ ])])) : w("v-if", !0),
175
+ E("label", null, [D(F(I(s).t("platform.screen.ModuleMenuEditor.position", "放置位置")), 1), O(I(l), {
176
+ value: I(o).parentId.value,
177
+ "tree-data": v.value,
178
+ "allow-clear": !1,
179
+ disabled: m.value,
180
+ loading: I(o).loading.value || I(o).updating.value,
181
+ "onUpdate:value": n[2] ||= (e) => I(o).update({ parentId: String(e ?? "root") })
182
+ }, null, 8, [
183
+ "value",
184
+ "tree-data",
185
+ "disabled",
186
+ "loading"
187
+ ])]),
188
+ E("label", null, [D(F(I(s).t("platform.screen.ModuleMenuEditor.open-mode", "打开方式")), 1), O(I(h), {
189
+ value: I(o).openMode.value,
190
+ "allow-clear": !1,
191
+ disabled: m.value,
192
+ options: [{
193
+ value: "tab",
194
+ label: I(s).t("platform.screen.ModuleMenuEditor.open-in-a-workbench-tab", "页签内打开")
195
+ }, {
196
+ value: "window",
197
+ label: I(s).t("platform.screen.ModuleMenuEditor.open-in-a-new-window", "新窗口打开")
198
+ }],
199
+ "onUpdate:value": n[3] ||= (e) => I(o).update({ openMode: e === "window" ? "window" : "tab" })
200
+ }, null, 8, [
201
+ "value",
202
+ "disabled",
203
+ "options"
204
+ ])]),
205
+ I(o).duplicate.value ? (M(), T("p", W, F(I(s).t("platform.screen.ModuleMenuEditor.duplicate-position", "此位置已有「{title}」,仍可另加入口。", { title: I(c)(I(o).duplicate.value.menu, "title", I(s)) })), 1)) : w("v-if", !0),
206
+ E("p", G, F(I(s).t("platform.screen.ModuleMenuEditor.adds-an-access-entry-only-it-does-not-activate-applications", "只添加访问入口,不开通应用或授予业务权限。")), 1),
207
+ I(o).updating.value ? (M(), T("p", K, F(I(s).t("platform.screen.ModuleMenuEditor.loading-the-menu-scheme-wait-for-the-candidate-to-be", "正在读取菜单方案,请等待候选就绪。")), 1)) : w("v-if", !0),
208
+ e.showSave && !I(o).resultUnknown.value ? (M(), C(I(b), {
209
+ key: 3,
210
+ type: "primary",
211
+ disabled: !I(o).canSave.value,
212
+ loading: I(o).saving.value,
213
+ onClick: y
214
+ }, {
215
+ default: R(() => [D(F(I(s).t("platform.screen.ModuleMenuEditor.add-entry", "添加入口")), 1)]),
216
+ _: 1
217
+ }, 8, ["disabled", "loading"])) : w("v-if", !0),
218
+ I(o).resultUnknown.value ? (M(), C(I(b), {
219
+ key: 4,
220
+ onClick: k
221
+ }, {
222
+ default: R(() => [D(F(I(s).t("platform.screen.ModuleMenuEditor.check-save-result", "查询保存结果")), 1)]),
223
+ _: 1
224
+ })) : w("v-if", !0)
225
+ ], 64)),
226
+ I(o).entryIssue.value ? (M(), T("p", J, F(I(o).entryIssue.value), 1)) : w("v-if", !0),
227
+ I(o).ready.value && !I(o).authorized.value ? (M(), T("p", Y, F(I(s).t("platform.screen.ModuleMenuEditor.you-do-not-have-permission-to-add-menu-entries", "当前没有添加菜单入口权限。")), 1)) : w("v-if", !0),
228
+ I(o).error.value && I(o).ready.value && !I(o).saved.value && !I(o).resultUnknown.value ? (M(), C(I(b), {
229
+ key: 4,
230
+ disabled: I(o).saving.value,
231
+ onClick: I(o).load
232
+ }, {
233
+ default: R(() => [D(F(I(s).t("platform.screen.ModuleMenuEditor.reload-candidate", "重新读取候选")), 1)]),
234
+ _: 1
235
+ }, 8, ["disabled", "onClick"])) : w("v-if", !0),
236
+ I(o).error.value ? (M(), T("p", ne, F(I(o).error.value), 1)) : w("v-if", !0),
237
+ I(o).error.value && !I(o).ready.value && !I(o).resultUnknown.value ? (M(), C(I(b), {
238
+ key: 6,
239
+ disabled: I(o).saving.value,
240
+ onClick: I(o).load
241
+ }, {
242
+ default: R(() => [D(F(I(s).t("platform.screen.WorkflowWorkbenchView.retry", "重试")), 1)]),
243
+ _: 1
244
+ }, 8, ["disabled", "onClick"])) : w("v-if", !0)
245
+ ]));
246
+ }
247
+ }), [["__scopeId", "data-v-1081a9ba"]]);
248
+ //#endregion
249
+ //#region src/platform-admin-runtime/module-menu/moduleMenuReceiptStore.ts
250
+ function Z(e, t, n, r = g, i, a = s) {
251
+ let o = `muyun.menu-pending.${JSON.stringify([e, t])}`, c = { persistence: "backend" }, l;
252
+ function u() {
253
+ if (!n()) throw new y(f(a, "platform.screen.moduleMenuReceiptStore.the-menu-editing-identity-has-changed", "菜单编辑身份已变化"));
254
+ return i ?? window.sessionStorage;
255
+ }
256
+ function d(e) {
257
+ if (!/^[a-zA-Z0-9-]{16,80}$/.test(e)) throw new y(f(a, "platform.screen.moduleMenuReceiptStore.the-original-entry-lookup-reference-is-invalid", "原入口查询标识无效"));
258
+ return `menu.pending.r${e.toLowerCase().replaceAll("-", "")}`;
259
+ }
260
+ return {
261
+ async restore() {
262
+ if (l = u().getItem(o) ?? void 0, !l) return;
263
+ let e = await r.restore(d(l), void 0, c);
264
+ if (!e) throw new y(f(a, "platform.screen.moduleMenuReceiptStore.the-original-entry-lookup-reference-cannot-be-read-right-now", "原入口查询引用暂不可读取,请核实后重试"));
265
+ return e;
266
+ },
267
+ async save(e) {
268
+ if (e.kind !== "record-save") throw new y(f(a, "platform.screen.moduleMenuReceiptStore.the-original-entry-lookup-reference-is-invalid", "原入口查询标识无效"));
269
+ let t = u();
270
+ l = e.requestId, await r.set(d(l), e, c), u(), t.setItem(o, l);
271
+ },
272
+ async clear() {
273
+ let e = u(), t = l;
274
+ t && (await r.remove(d(t), c), u(), e.getItem(o) === t && e.removeItem(o), l === t && (l = void 0));
275
+ }
276
+ };
277
+ }
278
+ //#endregion
279
+ //#region src/platform-admin-runtime/module-menu/moduleMenuSession.ts
280
+ function re(t, r, i, l, u = t.visible, m = s) {
281
+ let h = N(0), g = N(!1), _ = N(!1), b = N(!1), x = P(), C = S(() => x.value ? x.value instanceof y || x.value instanceof v ? p(x.value, m) : o(a(x.value), m) : "");
282
+ function w(e) {
283
+ x.value = e instanceof Error ? e : new y(e);
284
+ }
285
+ function T(e) {
286
+ w(e instanceof Error ? e : f(m, "platform.screen.moduleMenuSession.the-operation-is-temporarily-unavailable-retry", "操作暂不可用,请重试。"));
287
+ }
288
+ let E = P(), D = S(() => E.value ? oe(E.value, m) : ""), O = N(""), k = N(""), A = N("root"), j = N("tab"), M = P([]), F = P([]), I = P(), L = N(""), R = P(), z = N(""), ee = S(() => R.value ? B(R.value, m) : z.value), H = P(), U = N(!1), W = N(!1), G = N(!1), K = N(!1), te = !1, q = 0, J = 0, Y, ne = !1, X = () => !te && i.valid(), Z = S(() => M.value.filter((e) => e.enabled !== !1 && e.id)), re = S(() => ae(F.value, m)), le = S(() => X() && G.value && W.value && !g.value && !_.value && !b.value && !Y && !I.value && !D.value && !!O.value.trim()), ue = S(() => V(F.value, "", m).find(({ menu: e }) => e.moduleAlias === r && e.parentId === A.value));
289
+ function Q() {
290
+ if (!X()) throw new y(f(m, "platform.screen.moduleMenuSession.the-menu-editing-scope-has-changed-reopen-the-editor", "菜单编辑范围已变化,请重新打开"));
291
+ }
292
+ function $(e = !1) {
293
+ if (Q(), !G.value || !W.value || g.value || b.value || Y || I.value || !e && _.value) throw new y(f(m, "platform.screen.moduleMenuSession.wait-for-the-menu-candidate-to-be-ready-or-check", "请先等待菜单候选就绪,或查询未确定的保存结果"));
294
+ }
295
+ async function de() {
296
+ if (Q(), I.value || Y && G.value) return;
297
+ J++, _.value = !1;
298
+ let e = ++q;
299
+ g.value = !0, G.value = !1, x.value = void 0;
300
+ try {
301
+ if (!ne) {
302
+ let t = await l.restore();
303
+ if (!X() || e !== q) return;
304
+ if (t) {
305
+ let e = n(t);
306
+ if (e.kind !== "record-save" || e.moduleAlias !== "platform.menu" || !e.pageContext?.scheme) throw new y(f(m, "platform.screen.moduleMenuSession.the-original-entry-lookup-scope-is-invalid-verify-the-save", "原入口查询范围无效,请核实保存结果后继续"));
307
+ Y = {
308
+ requestId: e.requestId,
309
+ schemeId: e.pageContext.scheme
310
+ }, K.value = !0;
311
+ }
312
+ ne = !0;
313
+ }
314
+ let [i, a, o, s] = await Promise.all([
315
+ t.schemes(),
316
+ t.context(r),
317
+ t.context("platform.menu"),
318
+ t.visible()
319
+ ]);
320
+ if (!X() || e !== q) return;
321
+ W.value = o.actions.some((e) => e.actionCode === "create" && e.authorized), E.value = a, M.value = i, O.value ||= a.title ?? r, j.value = a.entryType === "link" ? "window" : "tab";
322
+ let c = s[0]?.record.schemeId, u = Z.value.find((e) => e.id === (Y?.schemeId ?? k.value)) ?? Z.value.find((e) => e.id === c) ?? Z.value[0];
323
+ if (!u?.id) throw new y(f(m, "platform.screen.moduleMenuSession.no-menu-schemes-are-available-configure-an-applicable-scheme-first", "暂无可用菜单方案,请先配置适用的菜单方案"));
324
+ let d = await t.tree(u.id);
325
+ if (!X() || e !== q) return;
326
+ k.value = u.id, F.value = d, A.value = "root", G.value = !0, h.value++;
327
+ } catch (t) {
328
+ X() && e === q && T(t);
329
+ } finally {
330
+ X() && e === q && (g.value = !1);
331
+ }
332
+ }
333
+ function fe(e) {
334
+ let n = e.schemeId ?? k.value;
335
+ if (!Z.value.some((e) => e.id === n)) throw new y(f(m, "platform.screen.moduleMenuSession.select-an-available-menu-scheme", "请选择当前可用的菜单方案"));
336
+ let r = e.title ?? O.value;
337
+ if ([...r].length > 120) throw new y(f(m, "platform.screen.moduleMenuSession.the-menu-name-must-not-exceed-120-characters", "菜单名称不能超过120个字符"));
338
+ let i = e.parentId ?? (n === k.value ? A.value : "root"), a = e.openMode ?? j.value, o = (e) => {
339
+ if (i !== "root" && !ae(e).some((e) => e.menu.id === i)) throw new y(f(m, "platform.screen.moduleMenuSession.select-an-enabled-directory-in-the-current-scheme", "请选择当前方案中的启用目录"));
340
+ return {
341
+ schemeId: n,
342
+ nodes: e,
343
+ parentId: i,
344
+ title: r,
345
+ openMode: a
346
+ };
347
+ };
348
+ return n === k.value ? o(F.value) : t.tree(n).then(o);
349
+ }
350
+ function pe(e) {
351
+ k.value = e.schemeId, F.value = e.nodes, A.value = e.parentId, O.value = e.title, j.value = e.openMode, h.value++;
352
+ }
353
+ async function me(e) {
354
+ $();
355
+ let t = h.value, n = await fe(e);
356
+ return () => {
357
+ if ($(), t !== h.value) throw new y(f(m, "platform.screen.moduleMenuSession.the-menu-candidate-has-changed-reload-it", "菜单候选已变化,请重新读取"));
358
+ pe(n);
359
+ };
360
+ }
361
+ async function he(e) {
362
+ let t;
363
+ try {
364
+ $(!0), t = ++J, _.value = !0;
365
+ let n = ++h.value;
366
+ x.value = void 0;
367
+ let r = fe(e), i = "then" in r ? await r : r;
368
+ if (!X() || t !== J) return;
369
+ if ($(!0), n !== h.value) throw new y(f(m, "platform.screen.moduleMenuSession.the-menu-candidate-has-changed-reload-it", "菜单候选已变化,请重新读取"));
370
+ pe(i), x.value = void 0;
371
+ } catch (e) {
372
+ X() && (t === void 0 || t === J) && T(e);
373
+ } finally {
374
+ t === J && (_.value = !1);
375
+ }
376
+ }
377
+ async function ge() {
378
+ Q();
379
+ let e = I.value?.id;
380
+ if (e) {
381
+ U.value = !1, H.value = void 0;
382
+ try {
383
+ let t = await u();
384
+ if (!X() || I.value?.id !== e) return;
385
+ H.value = V(t).find(({ menu: t }) => t.id === e)?.menu, U.value = !0, x.value = void 0;
386
+ } catch {
387
+ X() && w(f(m, "platform.screen.moduleMenuSession.the-menu-was-added-but-navigation-could-not-be-refreshed", "菜单已添加,导航刷新失败。请查询或刷新导航,无需重复添加。"));
388
+ }
389
+ }
390
+ }
391
+ async function _e(e, n) {
392
+ if (X()) {
393
+ let r = Y, i = n ?? (r.record ? {
394
+ ...r.record,
395
+ id: e
396
+ } : await t.view(r.schemeId, e));
397
+ Q(), I.value = i;
398
+ let a = r.audienceScheme ?? Z.value.find((e) => e.id === i.schemeId);
399
+ R.value = a ? { ...a } : void 0, z.value = r.audience ?? "", L.value = r.path ?? [
400
+ (() => {
401
+ let e = Z.value.find((e) => e.id === i.schemeId);
402
+ return e && c(e, "title", m);
403
+ })(),
404
+ V(F.value, "", m).find(({ menu: e }) => e.id === i.parentId)?.path,
405
+ i.title
406
+ ].filter(Boolean).join(" / "), Y = void 0, K.value = !1, h.value++, await l.clear().catch(() => {}), X() && await ge();
407
+ }
408
+ return {
409
+ title: m.t("platform.screen.moduleMenuSession.menu-entry-saved", "菜单入口已保存"),
410
+ lines: X() ? [L.value, U.value ? H.value ? m.t("platform.screen.moduleMenuSession.visible-to-the-current-user-the-business-page-can-be", "当前用户可见,可打开业务页面。") : m.t("platform.screen.moduleMenuSession.the-entry-was-saved-but-is-not-visible-to-the", "入口已保存;当前登录身份暂不可见,请由适用范围内的使用者核实导航。") : m.t("platform.screen.moduleMenuSession.navigation-visibility-has-not-been-verified-do-not-add-the", "导航可见性尚未核实;不要重复添加。")] : [m.t("platform.screen.moduleMenuSession.the-save-completed-verify-the-entry-in-its-original-scope", "保存已完成,请在原范围核实入口。")]
411
+ };
412
+ }
413
+ async function ve(e, n) {
414
+ let [i, a, o, s] = await Promise.all([
415
+ t.context(r),
416
+ t.context("platform.menu"),
417
+ t.schemes(),
418
+ t.tree(e.schemeId)
419
+ ]);
420
+ if (Q(), !a.actions.some((e) => e.actionCode === "create" && e.authorized)) throw new v(f(m, "platform.screen.moduleMenuSession.you-do-not-have-permission-to-add-menu-entries", "当前没有添加菜单入口权限"));
421
+ let l = se(i, m);
422
+ if (l) throw new v(l);
423
+ let u = o.find((t) => t.id === e.schemeId && t.enabled !== !1);
424
+ if (!u) throw new v(f(m, "platform.screen.moduleMenuSession.the-menu-scheme-is-no-longer-available", "菜单方案已不可用"));
425
+ if (e.parentId !== "root" && !ae(s).some((t) => t.menu.id === e.parentId)) throw new v(f(m, "platform.screen.moduleMenuSession.the-target-directory-is-no-longer-available-review-the-entry", "放置目录已不可用,请重新审阅"));
426
+ let d = e.parentId === "root" ? [] : ie(s, e.parentId), p = JSON.stringify([
427
+ u.id,
428
+ u.alias ?? null,
429
+ u.title ?? null,
430
+ u.scopeType ?? null,
431
+ u.tenantId ?? null,
432
+ u.organizationId ?? null,
433
+ d.map((e) => [e.id, e.title])
434
+ ]);
435
+ if (n && p !== n) throw new v(f(m, "platform.screen.moduleMenuSession.the-menu-scheme-audience-or-directory-has-changed-reload-and", "菜单方案适用范围或目录已变化,请重新读取候选并审阅"));
436
+ return {
437
+ scheme: u,
438
+ signature: p,
439
+ path: [
440
+ c(u, "title", m) ?? u.alias,
441
+ ...d.map((e) => c(e, "title", m)),
442
+ e.title
443
+ ].filter(Boolean).join(" / ")
444
+ };
445
+ }
446
+ async function ye() {
447
+ if ($(), !le.value) throw new y(f(m, "platform.screen.moduleMenuSession.provide-a-menu-name-and-an-available-business-page", "请补齐菜单名称及可用业务页面"));
448
+ let n = h.value, a = {
449
+ moduleAlias: r,
450
+ schemeId: k.value,
451
+ parentId: A.value,
452
+ title: O.value.trim(),
453
+ openMode: j.value,
454
+ enabled: !0
455
+ }, o = await ve(a);
456
+ if ($(), h.value !== n) throw new y(f(m, "platform.screen.moduleMenuSession.the-menu-candidate-has-changed-review-it-again", "菜单候选已变化,请重新审阅"));
457
+ let s = o.path, u = e(), p = () => X() && i.active() && G.value && W.value && !_.value && !Y && !I.value && h.value === n, g = {
458
+ kind: "record-save",
459
+ moduleAlias: "platform.menu",
460
+ requestId: u,
461
+ pageContext: { scheme: a.schemeId }
462
+ };
463
+ return {
464
+ receiptReference: g,
465
+ presentation: {
466
+ title: m.t("platform.screen.moduleMenuSession.add-a-business-entry", "添加业务入口"),
467
+ lines: [
468
+ s,
469
+ m.t("platform.screen.moduleMenuSession.audience-value", "适用范围:{value1}", { value1: B(o.scheme, m) }),
470
+ m.t("platform.screen.moduleMenuSession.open-mode-value", "打开方式:{value1}", { value1: a.openMode === "window" ? m.t("platform.screen.moduleMenuSession.new-window", "新窗口") : m.t("platform.screen.moduleMenuSession.workbench-tab", "页签内") }),
471
+ m.t("platform.screen.moduleMenuSession.adds-an-entry-only-it-does-not-activate-applications-or", "只添加入口,不开通应用或授予业务权限。"),
472
+ ...ue.value ? [m.t("platform.screen.moduleMenuSession.this-position-already-contains-value-another-entry-will-be-added", "此位置已有「{value1}」,本次将另加一个入口。", { value1: c(ue.value.menu, "title", m) })] : []
473
+ ],
474
+ details: {
475
+ title: m.t("platform.screen.moduleMenuSession.view-target-module", "查看目标模块"),
476
+ lines: [r]
477
+ }
478
+ },
479
+ confirmLabel: m.t("platform.screen.moduleMenuSession.confirm-entry-creation", "确认添加入口"),
480
+ expiresAt: Date.now() + 3e5,
481
+ isCurrent: p,
482
+ async execute() {
483
+ if (!p() || b.value) throw new v(f(m, "platform.screen.moduleMenuSession.the-menu-candidate-or-editing-scope-has-changed-review-it", "菜单候选或编辑范围已变化,请重新审阅"));
484
+ b.value = !0, x.value = void 0;
485
+ let e = !1;
486
+ try {
487
+ if (await ve(a, o.signature), !p() || (Y = {
488
+ requestId: u,
489
+ schemeId: a.schemeId,
490
+ record: a,
491
+ path: s,
492
+ audience: B(o.scheme, m),
493
+ audienceScheme: { ...o.scheme }
494
+ }, await l.save(g), !X() || !i.active() || h.value !== n)) throw new v(f(m, "platform.screen.moduleMenuSession.the-menu-candidate-or-editing-scope-has-changed-review-it", "菜单候选或编辑范围已变化,请重新审阅"));
495
+ e = !0;
496
+ let r = await t.insert(a.schemeId, a, u);
497
+ return await _e(r.record.id, r.record);
498
+ } catch (t) {
499
+ if (X()) {
500
+ if (!e || t instanceof v || t instanceof d && [
501
+ 400,
502
+ 401,
503
+ 403,
504
+ 404,
505
+ 409,
506
+ 422
507
+ ].includes(t.status ?? 0)) {
508
+ try {
509
+ Y && await l.clear(), Y = void 0;
510
+ } catch {
511
+ Y && (Y.rejected = !0), K.value = !0, w(f(m, "platform.screen.moduleMenuSession.the-operation-was-not-submitted-but-the-original-request-reference", "操作未提交,但原请求标识尚未清除,请先查询结果。"));
512
+ }
513
+ throw new v(ce(t, m));
514
+ }
515
+ Y && (K.value = !0, h.value++), Y ? w(f(m, "platform.screen.moduleMenuSession.the-save-result-is-unresolved-check-the-original-request-result", "保存结果尚未确定,请查询原请求结果,勿重复添加。")) : T(t);
516
+ }
517
+ throw t;
518
+ } finally {
519
+ X() && (b.value = !1);
520
+ }
521
+ },
522
+ lookup: be
523
+ };
524
+ }
525
+ async function be() {
526
+ if (Q(), !Y || b.value) return;
527
+ let e = Y;
528
+ if (e.rejected) return await l.clear(), Q(), Y === e ? (Y = void 0, K.value = !1, x.value = void 0, h.value++, {
529
+ title: m.t("platform.operation.not-submitted", "操作未提交"),
530
+ lines: [m.t("platform.screen.moduleMenuSession.the-recovery-reference-was-cleared-you-can-review-and-add", "恢复标识已清除,可以重新审阅并添加入口。")]
531
+ }) : void 0;
532
+ let n = await t.receipt(e.schemeId, e.requestId);
533
+ if (Q(), Y === e && n.committed && n.recordId) return _e(n.recordId);
534
+ }
535
+ return {
536
+ moduleAlias: r,
537
+ language: m,
538
+ revision: h,
539
+ loading: g,
540
+ updating: _,
541
+ saving: b,
542
+ error: C,
543
+ reportFailure: w,
544
+ failureCause: () => x.value,
545
+ entryIssue: D,
546
+ title: O,
547
+ schemeId: k,
548
+ parentId: A,
549
+ openMode: j,
550
+ schemes: M,
551
+ tree: F,
552
+ options: Z,
553
+ directories: re,
554
+ saved: I,
555
+ savedPath: L,
556
+ savedAudience: ee,
557
+ visibleMenu: H,
558
+ visibilityChecked: U,
559
+ authorized: W,
560
+ ready: G,
561
+ resultUnknown: K,
562
+ canSave: le,
563
+ duplicate: ue,
564
+ load: de,
565
+ update: he,
566
+ planRevision: me,
567
+ prepare: ye,
568
+ lookupPending: be,
569
+ refreshVisibility: ge,
570
+ async startAnother() {
571
+ if (Q(), !I.value || b.value || Y) throw new y(f(m, "platform.screen.moduleMenuSession.verify-the-current-entry-save-result-first", "请先核实当前入口保存结果"));
572
+ await l.clear(), Q(), I.value = void 0, L.value = "", R.value = void 0, z.value = "", H.value = void 0, U.value = !1, G.value = !1, h.value++, await de();
573
+ },
574
+ dispose() {
575
+ te = !0, q++, J++, _.value = !1, h.value++;
576
+ },
577
+ invalidate() {
578
+ J++, _.value = !1, h.value++;
579
+ }
580
+ };
581
+ }
582
+ function ie(e, t, n = []) {
583
+ for (let r of e) {
584
+ let e = [...n, r.record];
585
+ if (r.record.id === t) return e;
586
+ let i = ie(r.children, t, e);
587
+ if (i.length) return i;
588
+ }
589
+ return [];
590
+ }
591
+ function ae(e, t = s) {
592
+ let n = (e) => e.filter(({ record: e }) => e.enabled !== !1).map((e) => ({
593
+ ...e,
594
+ children: n(e.children)
595
+ }));
596
+ return V(n(e), "", t).filter(({ menu: e }) => !e.moduleAlias);
597
+ }
598
+ function oe(e, t = s) {
599
+ return se(e, t)?.message ?? "";
600
+ }
601
+ function se(e, t) {
602
+ return e.entryType === "route" ? e.entryRoute ? void 0 : f(t, "platform.screen.moduleMenuSession.this-module-has-no-page-address-return-to-its-configuration", "该模块尚未配置页面地址,请返回模块补充。") : e.entryType === "link" ? e.entryExternalUrl ? void 0 : f(t, "platform.screen.moduleMenuSession.this-module-has-no-link-address-return-to-its-configuration", "该模块尚未配置链接地址,请返回模块补充。") : e.uiDescriptor?.page ? void 0 : f(t, "platform.screen.moduleMenuSession.this-module-has-no-available-business-page-publish-its-page", "该模块尚无可用业务页面,请先发布页面配置。");
603
+ }
604
+ function ce(e, t = s) {
605
+ return e instanceof y || e instanceof v ? e.textMessage ?? e.message : e instanceof Error ? e.message : f(t, "platform.screen.moduleMenuSession.the-operation-is-temporarily-unavailable-retry", "操作暂不可用,请重试。");
606
+ }
607
+ //#endregion
608
+ //#region src/views/configurationEditorNavigation.ts
609
+ async function le(e, t, n = s) {
610
+ if (t?.aborted || (e() || await new Promise((r, i) => {
611
+ let a = (e) => {
612
+ s(), clearTimeout(c), t?.removeEventListener("abort", o), e ? i(e) : r();
613
+ }, o = () => a(new DOMException("Navigation cancelled", "AbortError")), s = L(e, (e) => {
614
+ e && a();
615
+ }, { flush: "post" }), c = setTimeout(() => a(new y(f(n, "platform.screen.configurationEditorNavigation.the-configuration-page-is-not-ready-reopen-it-before-continuing", "配置页面尚未就绪,请重新打开后继续。"))), 15e3);
616
+ t?.addEventListener("abort", o, { once: !0 });
617
+ }), await j(), t?.aborted)) throw new DOMException("Navigation cancelled", "AbortError");
618
+ }
619
+ //#endregion
620
+ //#region src/platform-admin-runtime/module-menu/moduleMenuWorkspace.ts
621
+ var ue = Symbol("module-menu-workspace");
622
+ function Q() {
623
+ return A(ue, void 0);
624
+ }
625
+ //#endregion
626
+ export { X as a, Z as i, le as n, z as o, re as r, V as s, Q as t };