@yuku123/z-team-component 0.2.103 → 0.2.104

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 (58) hide show
  1. package/dist/ChangeLogView-DG-ogBff.js +542 -0
  2. package/dist/ComponentDoc-BW1SyDxk.js +8035 -0
  3. package/dist/InvitationManagementPage-hYvoPEcm.js +495 -0
  4. package/dist/OnboardingPage-KDp-DrzY.js +393 -0
  5. package/dist/ScheduledTasks-CErSDgyW.js +12127 -0
  6. package/dist/SystemShell-DvrY4Bl7.js +688 -0
  7. package/dist/_commonjsHelpers-B52_cu2H.js +26 -0
  8. package/dist/admin-logs-uPnnclwN.js +198 -0
  9. package/dist/api-B__qdRIf.js +20 -0
  10. package/dist/browser-jb_PFvU3.js +1538 -0
  11. package/dist/createWorkspaceWsHandler-BXbn5-Ft.js +13142 -0
  12. package/dist/ctc-sso-DtJHC-2M.js +117 -0
  13. package/dist/echarts-B1OU1xr4.js +16 -0
  14. package/dist/history-BlrA1eaW.js +41 -0
  15. package/dist/index-0smeCTnr.js +42049 -0
  16. package/dist/index-2isWwv1X.js +10169 -0
  17. package/dist/index-BC8f-JP9.js +242 -0
  18. package/dist/index-BK3YDeXH.js +2217 -0
  19. package/dist/index-BOJm25by.js +999 -0
  20. package/dist/index-B_LJRFsK.js +339 -0
  21. package/dist/index-BnJ8UEeZ.js +5892 -0
  22. package/dist/index-BohoJQPr.js +7631 -0
  23. package/dist/index-BwJPAN8f.js +112 -0
  24. package/dist/index-ByhCWenF.js +434 -0
  25. package/dist/index-C2_tfpEj.js +118 -0
  26. package/dist/index-C815hPWS.js +430 -0
  27. package/dist/index-C9fGup9t.js +189 -0
  28. package/dist/index-Cb88Xdh4.js +169 -0
  29. package/dist/index-Cih0yoxc.js +178 -0
  30. package/dist/index-CkWKJORv.js +1645 -0
  31. package/dist/index-CsaGecGX.js +132 -0
  32. package/dist/index-D-xPVrY3.js +316 -0
  33. package/dist/index-DAGa9v8r.js +142 -0
  34. package/dist/index-DBnH-lRh.js +956 -0
  35. package/dist/index-DIFIvVWE.js +93 -0
  36. package/dist/index-DOgCfVB2.js +574 -0
  37. package/dist/index-DWsfQMp8.js +208 -0
  38. package/dist/index-DcurzowX.js +2699 -0
  39. package/dist/index-DhDdFRHC.js +279 -0
  40. package/dist/index-Dpii3P5J.js +1302 -0
  41. package/dist/index-DtHoMz1H.js +8 -0
  42. package/dist/index-YVtm1SRy.js +913 -0
  43. package/dist/index-aI2EXKED.js +479 -0
  44. package/dist/index-q_TPea69.js +315 -0
  45. package/dist/index.js +10 -0
  46. package/dist/index.module-CAa-2T7m.js +72 -0
  47. package/dist/index.module-UI0iz8K0.js +42 -0
  48. package/dist/instance-pdQ_wAhB.js +216 -0
  49. package/dist/menuPermission-CCQjJVXg.js +60 -0
  50. package/dist/mobile-client-O3yr9h6t.js +24 -0
  51. package/dist/pages.js +21 -0
  52. package/dist/send-default-agent-team-message-BzeR4ahf.js +35 -0
  53. package/dist/spark-md5-Dld54a-T.js +178 -0
  54. package/dist/sso-user-DI7oiDdc.js +43 -0
  55. package/dist/training-Bz7Sr5yC.js +450 -0
  56. package/dist/webide-NcHLDiSn.js +5233 -0
  57. package/dist/z-team-component.css +1 -0
  58. package/package.json +1 -1
@@ -0,0 +1,132 @@
1
+ import { jsx as s, jsxs as C } from "react/jsx-runtime";
2
+ import { f as z, r as v } from "./ctc-sso-DtJHC-2M.js";
3
+ import { r as L, h as N, s as T } from "./sso-user-DI7oiDdc.js";
4
+ import { CheckCircleFilled as q } from "@ant-design/icons";
5
+ import { Spin as R } from "antd";
6
+ import W from "query-string";
7
+ import { useMemo as P, useState as p, useCallback as A, useEffect as U } from "react";
8
+ import { useLocation as F } from "react-router-dom";
9
+ import { h as H } from "./history-BlrA1eaW.js";
10
+ import { d as m, e as Y, j as B } from "./ComponentDoc-BW1SyDxk.js";
11
+ /* empty css */
12
+ import { b as G } from "./mobile-client-O3yr9h6t.js";
13
+ function oe() {
14
+ const i = F(), g = W.parse(i.search), S = P(
15
+ () => String(g.name ?? "WebIDE 在线咨询").trim(),
16
+ [i.search]
17
+ ), _ = P(
18
+ () => String(g.source ?? "z-team-webide").trim(),
19
+ [i.search]
20
+ ), [b, E] = p(!1), [I, y] = p("正在登录…"), [w, M] = p([]), [j, x] = p(""), { currentUser: d, updateCurrentUser: u, expandProject: $ } = m(), f = A((e, o) => {
21
+ M((a) => [...a, e]), y(o);
22
+ }, []);
23
+ return U(() => {
24
+ let e = !1, o = 0;
25
+ const a = 100;
26
+ let r = !1, n = 0;
27
+ const h = 3;
28
+ return (() => {
29
+ if (e) return;
30
+ const l = async () => {
31
+ if (e) return;
32
+ let t = L();
33
+ if ((!t || !N(t)) && !r) {
34
+ r = !0;
35
+ try {
36
+ const c = await z();
37
+ c.kind === "authenticated" ? t = c.user : c.kind === "unauthenticated" && (n += 1);
38
+ } catch {
39
+ } finally {
40
+ r = !1;
41
+ }
42
+ }
43
+ if (t && N(t)) {
44
+ u(T(t));
45
+ const c = m.getState().token;
46
+ B().then((D) => {
47
+ e || u(D);
48
+ }).catch(() => {
49
+ !e && c && (localStorage.removeItem("z_team_token"), m.setState({ token: "" }));
50
+ }).finally(() => {
51
+ e || E(!0);
52
+ });
53
+ return;
54
+ }
55
+ if (n >= h) {
56
+ v();
57
+ return;
58
+ }
59
+ if (o += 1, o >= a) {
60
+ v();
61
+ return;
62
+ }
63
+ window.setTimeout(() => void l(), 150);
64
+ };
65
+ l();
66
+ })(), () => {
67
+ e = !0;
68
+ };
69
+ }, [u]), U(() => {
70
+ if (!b || !d) return;
71
+ let e = !1;
72
+ return (async () => {
73
+ try {
74
+ const a = m.getState(), r = /* @__PURE__ */ new Date(), n = (c) => String(c).padStart(2, "0"), h = `${r.getFullYear()}-${n(r.getMonth() + 1)}-${n(
75
+ r.getDate()
76
+ )} ${n(r.getHours())}:${n(r.getMinutes())}`, k = `${S} - ${d.display_name || d.username} - ${h}`;
77
+ y("正在创建咨询群组…");
78
+ const l = await Y(
79
+ {
80
+ name: k,
81
+ description: `${_} 发起的在线咨询`,
82
+ workspace_path: `webide_consult_${Date.now()}`,
83
+ scenario_code: "z_team_webide_console_scenario"
84
+ },
85
+ a.token
86
+ );
87
+ if (e || (f("群组已创建", "正在初始化工作区…"), await $(l), e)) return;
88
+ const t = m.getState();
89
+ if (t.currentProject && await t.refreshProjectPanels(
90
+ t.currentProject.id,
91
+ t.projectSwitchSeq,
92
+ !1
93
+ ), e) return;
94
+ f("工作区已就绪", "即将进入工作台…"), H.replace(
95
+ G({
96
+ projectId: l.id,
97
+ search: i.search
98
+ })
99
+ );
100
+ } catch (a) {
101
+ e || x(a instanceof Error ? a.message : "创建群组失败");
102
+ }
103
+ })(), () => {
104
+ e = !0;
105
+ };
106
+ }, [
107
+ b,
108
+ d,
109
+ S,
110
+ _,
111
+ $,
112
+ f,
113
+ i.search
114
+ ]), j ? /* @__PURE__ */ s("div", { className: "embed-chat-page embed-chat-page--error", children: /* @__PURE__ */ s("p", { children: j }) }) : /* @__PURE__ */ s("div", { className: "embed-chat-page embed-chat-page--loading", children: /* @__PURE__ */ C("div", { className: "embed-chat-page__panel", children: [
115
+ /* @__PURE__ */ s(R, { size: "large" }),
116
+ /* @__PURE__ */ s("p", { className: "embed-chat-page__step", children: I }),
117
+ w.length > 0 ? /* @__PURE__ */ s("ul", { className: "embed-chat-page__done-list", children: w.filter((e) => e.trim().length > 0).map((e, o) => /* @__PURE__ */ C(
118
+ "li",
119
+ {
120
+ className: "embed-chat-page__done-item",
121
+ children: [
122
+ /* @__PURE__ */ s(q, { className: "embed-chat-page__done-icon" }),
123
+ /* @__PURE__ */ s("span", { children: e })
124
+ ]
125
+ },
126
+ `${o}-${e}`
127
+ )) }) : null
128
+ ] }) });
129
+ }
130
+ export {
131
+ oe as default
132
+ };
@@ -0,0 +1,316 @@
1
+ import { a as h, f as _, B as N, v as A, t as g } from "./ComponentDoc-BW1SyDxk.js";
2
+ import { jsx as p, jsxs as I } from "react/jsx-runtime";
3
+ import { useMemo as S, useState as C, useEffect as G, Component as L } from "react";
4
+ function $(t) {
5
+ if (t == null) return !0;
6
+ const e = String(t).trim();
7
+ return e === "" || e === "0";
8
+ }
9
+ function b(t) {
10
+ const e = (i) => {
11
+ if (typeof i != "string" || !i.trim()) return [];
12
+ try {
13
+ const s = JSON.parse(i);
14
+ return Array.isArray(s) ? s.filter((d) => typeof d == "string") : [];
15
+ } catch {
16
+ return [];
17
+ }
18
+ }, n = (i) => {
19
+ if (typeof i != "string" || !i.trim()) return [];
20
+ try {
21
+ const s = JSON.parse(i);
22
+ return Array.isArray(s) ? s.filter(
23
+ (d) => !!d && typeof d == "object" && typeof d.type == "string"
24
+ ) : [];
25
+ } catch {
26
+ return [];
27
+ }
28
+ }, r = () => {
29
+ const i = t.assigneeUserIds;
30
+ let s = null;
31
+ if (Array.isArray(i))
32
+ s = i;
33
+ else if (typeof i == "string" && i.trim())
34
+ try {
35
+ const o = JSON.parse(i);
36
+ s = Array.isArray(o) ? o : null;
37
+ } catch {
38
+ s = i.split(",");
39
+ }
40
+ if (s) {
41
+ const o = s.map((u) => String(u ?? "").trim()).filter(Boolean);
42
+ if (o.length > 0) return Array.from(new Set(o));
43
+ }
44
+ const d = t.assigneeUserId == null ? "" : String(t.assigneeUserId);
45
+ return d.trim() ? [d.trim()] : [];
46
+ }, c = (i) => {
47
+ const s = t.assignees, d = Array.isArray(s) ? s.map((o) => {
48
+ const u = o ?? {}, m = String(u.userId ?? "").trim();
49
+ return m ? { userId: m, name: String(u.name ?? "").trim() || m } : null;
50
+ }).filter((o) => o != null) : [];
51
+ return d.length > 0 ? d : i.map((o) => ({ userId: o, name: o }));
52
+ }, l = r();
53
+ return {
54
+ id: g(t.id),
55
+ projectId: t.projectId == null ? null : g(t.projectId),
56
+ userId: String(t.userId ?? ""),
57
+ title: String(t.title ?? ""),
58
+ detail: t.detail == null ? null : String(t.detail),
59
+ status: t.status ?? "TODO",
60
+ priority: t.priority ?? "MEDIUM",
61
+ dueDate: t.dueDate == null ? null : String(t.dueDate).slice(0, 10),
62
+ assigneeUserId: l[0] ?? null,
63
+ assigneeUserIds: l,
64
+ assignees: c(l),
65
+ projectTitle: t.projectTitle == null || !String(t.projectTitle).trim() ? null : String(t.projectTitle),
66
+ tags: e(t.tags),
67
+ links: n(t.links),
68
+ parentId: $(t.parentId) ? "" : g(t.parentId),
69
+ sortOrder: t.sortOrder == null ? 0 : Number(t.sortOrder),
70
+ completedAt: t.completedAt == null ? null : String(t.completedAt),
71
+ completedBy: t.completedBy == null ? null : String(t.completedBy),
72
+ createByName: t.createByName == null ? null : String(t.createByName),
73
+ updateTime: t.updateTime == null ? null : String(t.updateTime),
74
+ agentId: t.agentId == null ? null : g(t.agentId),
75
+ agentSessionId: t.agentSessionId == null ? null : g(t.agentSessionId)
76
+ };
77
+ }
78
+ function B(t) {
79
+ const e = t ?? {};
80
+ return {
81
+ id: g(e.id),
82
+ userId: String(e.userId ?? ""),
83
+ title: String(e.title ?? ""),
84
+ icon: e.icon == null ? null : String(e.icon),
85
+ description: e.description == null ? null : String(e.description),
86
+ visibility: e.visibility === "shared" ? "shared" : "private",
87
+ sortOrder: e.sortOrder == null ? 0 : Number(e.sortOrder),
88
+ extraInfo: e.extraInfo == null ? null : String(e.extraInfo),
89
+ createByName: e.createByName == null ? null : String(e.createByName)
90
+ };
91
+ }
92
+ function O(t) {
93
+ const e = t ?? {}, n = Array.isArray(e.memberDetails) ? e.memberDetails : [];
94
+ return {
95
+ ...B(e),
96
+ openCount: e.openCount == null ? 0 : Number(e.openCount),
97
+ memberDetails: n.map((r) => {
98
+ const c = r ?? {}, l = String(c.userId ?? "").trim();
99
+ return l ? { userId: l, userName: String(c.userName ?? "").trim() || l } : null;
100
+ }).filter((r) => r != null)
101
+ };
102
+ }
103
+ async function et(t = "") {
104
+ const e = t ? `?token=${encodeURIComponent(t)}` : "", n = await h(`${N}/todo/projects${e}`, _), r = await A(n, "获取待办项目失败");
105
+ return {
106
+ owned: ((r == null ? void 0 : r.owned) ?? []).map(O),
107
+ joined: ((r == null ? void 0 : r.joined) ?? []).map(O)
108
+ };
109
+ }
110
+ async function nt(t = {}, e = "") {
111
+ const n = new URLSearchParams();
112
+ e && n.set("token", e), t.view && n.set("view", t.view), t.projectId != null && n.set("projectId", String(t.projectId)), t.status && n.set("status", t.status), t.keyword && n.set("keyword", t.keyword);
113
+ const r = n.toString() ? `?${n.toString()}` : "", c = await h(`${N}/todo/items${r}`, _);
114
+ return (await A(
115
+ c,
116
+ "获取事项失败"
117
+ ) ?? []).map(b);
118
+ }
119
+ async function rt(t, e = "") {
120
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", r = await h(`${N}/todo/items${n}`, {
121
+ ..._,
122
+ method: "POST",
123
+ headers: { "Content-Type": "application/json" },
124
+ body: JSON.stringify(t)
125
+ }), c = await A(r, "新建事项失败");
126
+ return b(c);
127
+ }
128
+ const D = {
129
+ RUNTIME_MONITOR_VIEW: ["RUNTIME_MONITOR_MANAGE"],
130
+ EVALUATION_VIEW: ["EVALUATION_MANAGE"],
131
+ COLLABORATION_VIEW: [
132
+ "AGENT_MANAGE",
133
+ "SKILL_MANAGE",
134
+ "SCENARIO_MANAGE",
135
+ "PROFILE_MANAGE",
136
+ "TAG_MANAGE",
137
+ "TOOL_MANAGE"
138
+ ],
139
+ EVOLUTION_VIEW: ["EVOLUTION_MANAGE"],
140
+ OPS_CONFIG_VIEW: [
141
+ "OPS_CONFIG_MANAGE",
142
+ "ONCALL_MANAGE",
143
+ "ANNOUNCEMENT_MANAGE",
144
+ "OPS_REPORT_MANAGE"
145
+ ],
146
+ KNOWLEDGE_VIEW: ["KNOWLEDGE_MANAGE"],
147
+ WEBIDE_VIEW: ["WEBIDE_MANAGE"]
148
+ };
149
+ function it(t, e) {
150
+ var r;
151
+ if (!t) return !1;
152
+ if (t.is_global_admin || (r = t.permissions) != null && r.includes(e)) return !0;
153
+ const n = D[e];
154
+ return !!(n != null && n.some((c) => {
155
+ var l;
156
+ return (l = t.permissions) == null ? void 0 : l.includes(c);
157
+ }));
158
+ }
159
+ const P = "_wrap_2gcw5_1", U = "_card_2gcw5_9", R = "_badge_2gcw5_19", V = "_title_2gcw5_41", W = "_desc_2gcw5_48", v = "_actions_2gcw5_55", x = "_primary_2gcw5_63", z = "_secondary_2gcw5_75", F = "_details_2gcw5_90", J = "_pre_2gcw5_102", w = "_copy_2gcw5_117", K = "_compact_2gcw5_127", a = {
160
+ wrap: P,
161
+ card: U,
162
+ badge: R,
163
+ title: V,
164
+ desc: W,
165
+ actions: v,
166
+ primary: x,
167
+ secondary: z,
168
+ details: F,
169
+ pre: J,
170
+ copy: w,
171
+ compact: K
172
+ };
173
+ function H(t) {
174
+ const e = t, n = `${(e == null ? void 0 : e.name) ?? ""} ${(e == null ? void 0 : e.message) ?? ""} ${typeof t == "string" ? t : ""}`;
175
+ return /ChunkLoadError|Loading chunk|Failed to fetch dynamically imported module|Importing a module script failed|error loading dynamically imported module/i.test(n);
176
+ }
177
+ function Y(t) {
178
+ const { status: e, error: n } = t;
179
+ return e === 401 ? {
180
+ kind: "unauthorized",
181
+ status: e,
182
+ badge: "401",
183
+ title: "登录已失效",
184
+ description: "当前会话已过期或未建立,请重新登录后继续。重登后会回到这个页面。"
185
+ } : e === 403 ? {
186
+ kind: "forbidden",
187
+ status: e,
188
+ badge: "403",
189
+ title: "没有访问权限",
190
+ description: "当前账号无权访问该功能。如需开通,请联系管理员分配权限。"
191
+ } : e === 404 ? {
192
+ kind: "not-found",
193
+ status: e,
194
+ badge: "404",
195
+ title: "功能接口未就绪",
196
+ description: "这个页面要用的后端接口还没有部署,或前后端路径对不上。可以重试;若持续如此,请把技术详情发给运维确认版本。"
197
+ } : e && e >= 500 ? {
198
+ kind: "server",
199
+ status: e,
200
+ badge: String(e),
201
+ title: "服务暂时不可用",
202
+ description: "后端返回了错误。稍后重试;如果反复出现,请把技术详情发给运维。"
203
+ } : e === 0 ? {
204
+ kind: "network",
205
+ status: e,
206
+ badge: "!",
207
+ title: "网络不可用",
208
+ description: "请求没有到达后端。请检查网络,或确认本地后端服务是否已启动。"
209
+ } : H(n) ? {
210
+ kind: "chunk",
211
+ badge: "⟳",
212
+ title: "页面资源加载失败",
213
+ description: "可能刚发布了新版本,旧页面资源已被替换。刷新页面即可拿到新资源。"
214
+ } : n != null ? {
215
+ kind: "render",
216
+ badge: "!",
217
+ title: "页面渲染出错",
218
+ description: "这个页面遇到了未预期的错误,已被拦截,不影响其他页面。可以重试;仍然失败请把技术详情发给研发。"
219
+ } : {
220
+ kind: "unknown",
221
+ badge: "!",
222
+ title: "页面加载失败",
223
+ description: "发生了未知错误。请重试,或返回首页换个入口再试。"
224
+ };
225
+ }
226
+ function Q(t, e) {
227
+ const n = [];
228
+ if (n.push(`页面:${typeof location < "u" ? location.pathname + location.search : "-"}`), n.push(`时间:${(/* @__PURE__ */ new Date()).toISOString()}`), t != null && n.push(`HTTP:${t}`), e != null) {
229
+ const r = e;
230
+ r != null && r.name && n.push(`错误名:${String(r.name)}`), r != null && r.message && n.push(`消息:${String(r.message)}`), r != null && r.stack ? n.push(`堆栈:
231
+ ${String(r.stack)}`) : typeof e != "object" && n.push(`原文:${String(e)}`);
232
+ }
233
+ return n.join(`
234
+ `).slice(0, 4e3);
235
+ }
236
+ const X = ({
237
+ status: t,
238
+ error: e,
239
+ title: n,
240
+ description: r,
241
+ retry: c,
242
+ retryText: l,
243
+ extra: i,
244
+ showHome: s = !0,
245
+ compact: d = !1,
246
+ className: o
247
+ }) => {
248
+ const u = S(() => Y({ status: t, error: e }), [t, e]), [m, f] = C(!1), E = S(() => Q(t, e), [t, e]);
249
+ G(() => {
250
+ if (!m) return;
251
+ const y = setTimeout(() => f(!1), 2e3);
252
+ return () => clearTimeout(y);
253
+ }, [m]);
254
+ const T = async () => {
255
+ try {
256
+ await navigator.clipboard.writeText(E), f(!0);
257
+ } catch {
258
+ f(!1);
259
+ }
260
+ }, k = () => {
261
+ const y = encodeURIComponent(location.pathname + location.search);
262
+ location.assign(`/login?redirect=${y}`);
263
+ }, M = () => c ? /* @__PURE__ */ p("button", { type: "button", className: a.primary, onClick: c, children: l || "重试" }) : u.kind === "chunk" ? /* @__PURE__ */ p("button", { type: "button", className: a.primary, onClick: () => location.reload(), children: "刷新页面" }) : u.kind === "unauthorized" ? /* @__PURE__ */ p("button", { type: "button", className: a.primary, onClick: k, children: "重新登录" }) : null, j = e != null || t != null;
264
+ return /* @__PURE__ */ p(
265
+ "div",
266
+ {
267
+ className: [a.wrap, d ? a.compact : "", o || ""].filter(Boolean).join(" "),
268
+ role: "alert",
269
+ "data-error-kind": u.kind,
270
+ children: /* @__PURE__ */ I("div", { className: a.card, children: [
271
+ /* @__PURE__ */ p("div", { className: a.badge, "data-kind": u.kind, children: u.badge }),
272
+ /* @__PURE__ */ p("h2", { className: a.title, children: n || u.title }),
273
+ /* @__PURE__ */ p("p", { className: a.desc, children: r || u.description }),
274
+ /* @__PURE__ */ I("div", { className: a.actions, children: [
275
+ M(),
276
+ i,
277
+ s && u.kind !== "unauthorized" && /* @__PURE__ */ p("a", { className: a.secondary, href: "/", children: "返回首页" })
278
+ ] }),
279
+ j && /* @__PURE__ */ I("details", { className: a.details, children: [
280
+ /* @__PURE__ */ p("summary", { children: "技术详情" }),
281
+ /* @__PURE__ */ p("pre", { className: a.pre, children: E }),
282
+ /* @__PURE__ */ p("button", { type: "button", className: a.copy, onClick: T, children: m ? "已复制" : "复制详情" })
283
+ ] })
284
+ ] })
285
+ }
286
+ );
287
+ };
288
+ class st extends L {
289
+ constructor(e) {
290
+ super(e), this.state = { hasError: !1, error: null };
291
+ }
292
+ static getDerivedStateFromError(e) {
293
+ return { hasError: !0, error: e };
294
+ }
295
+ componentDidCatch(e, n) {
296
+ console.error("[ErrorBoundary]", e, n.componentStack);
297
+ }
298
+ render() {
299
+ return this.state.hasError ? this.props.fallback ? this.props.fallback : /* @__PURE__ */ p(
300
+ X,
301
+ {
302
+ error: this.state.error,
303
+ retry: () => this.setState({ hasError: !1, error: null })
304
+ }
305
+ ) : this.props.children;
306
+ }
307
+ }
308
+ export {
309
+ st as E,
310
+ X as P,
311
+ nt as a,
312
+ rt as c,
313
+ et as f,
314
+ it as h,
315
+ H as i
316
+ };
@@ -0,0 +1,142 @@
1
+ import { jsx as c, jsxs as _ } from "react/jsx-runtime";
2
+ import { c as $, d as j, t as x, p as O, e as v, g as F } from "./ComponentDoc-BW1SyDxk.js";
3
+ import { CheckCircleFilled as b } from "@ant-design/icons";
4
+ import { Result as D, Button as R, Spin as U } from "antd";
5
+ import B from "query-string";
6
+ import { useMemo as y, useState as f, useRef as q, useCallback as A, useEffect as J } from "react";
7
+ import { useLocation as W } from "react-router-dom";
8
+ import { h as w } from "./history-BlrA1eaW.js";
9
+ import { l as Z, j as z, f as H, b as L, p as M } from "./instance-pdQ_wAhB.js";
10
+ import { b as N } from "./mobile-client-O3yr9h6t.js";
11
+ function nt() {
12
+ const m = W(), p = B.parse(m.search), o = String(
13
+ p.projectId ?? p.project_id ?? ""
14
+ ).trim(), a = String(p.ticketId ?? p.ticket_id ?? "").trim(), e = y(() => {
15
+ if (!o)
16
+ return null;
17
+ const t = x(o);
18
+ return $(t) ? t : null;
19
+ }, [o]), u = j((t) => t.token), T = j((t) => t.expandProject), [h, l] = f(""), [P, n] = f("正在启动…"), [k, C] = f([]), g = q(!1), s = A((t, r) => {
20
+ C((i) => [...i, t]), n(r);
21
+ }, []), I = async (t) => {
22
+ s("协作区已就绪", "正在同步工程列表…"), await T(t), s("工作区已准备", "即将进入工作台…"), w.replace(
23
+ N({
24
+ projectId: t.id,
25
+ search: m.search
26
+ })
27
+ );
28
+ }, d = async (t) => {
29
+ n("正在确认工程信息…");
30
+ const r = await Z(t, u);
31
+ if (r.status === "NOT_FOUND" || !r.scenarioInstance)
32
+ throw new Error("PROJECT_NOT_FOUND");
33
+ n("正在加入协作区…");
34
+ const i = await z(t, u);
35
+ s("已加入协作区", "正在打开协作区…"), await I(i);
36
+ }, E = async () => {
37
+ n("正在检查工单信息…");
38
+ const t = await H(a);
39
+ s("工单信息已获取", "正在解析工程绑定…");
40
+ const r = O(t);
41
+ if (r != null) {
42
+ s("已定位协作区", `正在打开协作区 ${r}…`), await d(r);
43
+ return;
44
+ }
45
+ n("正在初始化工程…");
46
+ const i = await v(
47
+ L(t, a),
48
+ u
49
+ );
50
+ n("正在关联工单…");
51
+ try {
52
+ await F(
53
+ a,
54
+ i.id,
55
+ M(t)
56
+ );
57
+ } catch {
58
+ }
59
+ n("正在初始化工作区…"), await I(i);
60
+ };
61
+ J(() => {
62
+ if (!g.current) {
63
+ if (g.current = !0, o && e == null) {
64
+ l("projectId 无效,请传入正整数");
65
+ return;
66
+ }
67
+ if (e == null && !a) {
68
+ l("缺少参数:请提供 projectId 和/或 ticketId");
69
+ return;
70
+ }
71
+ if (e != null && !a) {
72
+ (async () => {
73
+ try {
74
+ n(`正在打开协作区 ${e}…`), await d(e);
75
+ } catch (t) {
76
+ const r = t instanceof Error ? t.message : String(t);
77
+ l(r || "打开工程失败");
78
+ }
79
+ })();
80
+ return;
81
+ }
82
+ if (!a) {
83
+ l("缺少 ticketId");
84
+ return;
85
+ }
86
+ (async () => {
87
+ try {
88
+ if (e != null)
89
+ try {
90
+ n(`正在打开指定协作区 ${e}…`), await d(e);
91
+ return;
92
+ } catch (t) {
93
+ if (!(t instanceof Error && t.message === "PROJECT_NOT_FOUND"))
94
+ throw t;
95
+ n("正在按工单重新查找…");
96
+ }
97
+ await E();
98
+ } catch (t) {
99
+ const r = t instanceof Error ? t.message : String(t);
100
+ l(r || "打开工程失败");
101
+ }
102
+ })();
103
+ }
104
+ }, [s, e, o, a, u]);
105
+ const S = y(() => e != null && a ? `工单 ${a} · 工程 ${e}` : e != null ? `工程 ${e}` : a ? `工单 ${a}` : "", [e, a]);
106
+ return h ? /* @__PURE__ */ c("div", { className: "from-ticket-page", children: /* @__PURE__ */ c(
107
+ D,
108
+ {
109
+ status: "error",
110
+ title: "无法打开工程",
111
+ subTitle: h,
112
+ extra: /* @__PURE__ */ c(
113
+ R,
114
+ {
115
+ type: "primary",
116
+ onClick: () => w.replace(
117
+ N({ search: m.search })
118
+ ),
119
+ children: "返回工作台"
120
+ }
121
+ )
122
+ }
123
+ ) }) : /* @__PURE__ */ c("div", { className: "from-ticket-page", children: /* @__PURE__ */ _("div", { className: "from-ticket-page__panel", children: [
124
+ /* @__PURE__ */ c(U, { size: "large" }),
125
+ /* @__PURE__ */ c("p", { className: "from-ticket-page__step", children: P }),
126
+ S ? /* @__PURE__ */ c("p", { className: "from-ticket-page__hint", children: S }) : null,
127
+ k.length > 0 ? /* @__PURE__ */ c("ul", { className: "from-ticket-page__done-list", children: k.filter((t) => t.trim().length > 0).map((t, r) => /* @__PURE__ */ _(
128
+ "li",
129
+ {
130
+ className: "from-ticket-page__done-item",
131
+ children: [
132
+ /* @__PURE__ */ c(b, { className: "from-ticket-page__done-icon" }),
133
+ /* @__PURE__ */ c("span", { children: t })
134
+ ]
135
+ },
136
+ `${r}-${t}`
137
+ )) }) : null
138
+ ] }) });
139
+ }
140
+ export {
141
+ nt as default
142
+ };