@marktowin/prototype-core 1.2.11 → 1.2.12
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.
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { defineComponent as tn, computed as k, openBlock as d, createBlock as Me, resolveDynamicComponent as ro, createElementBlock as v, Fragment as D, renderList as
|
|
2
|
-
import { Save as Sd, CloudUpload as Cd, Download as kd, X as vn, Plus as Pn, ChevronDown as xd, ChevronRight as Id, Trash2 as Dn, RefreshCw as Yi, AlertTriangle as $d, CheckCircle2 as _d, CircleDot as $i, Bug as Pd, ImagePlus as _i, Filter as Dd, Search as Ra, ArrowLeft as Pi, FileJson as Xi, FileSpreadsheet as Ad, ArrowUp as
|
|
3
|
-
import { g as vo, a as js, s as Ud } from "./index-
|
|
1
|
+
import { defineComponent as tn, computed as k, openBlock as d, createBlock as Me, resolveDynamicComponent as ro, createElementBlock as v, Fragment as D, renderList as E, normalizeClass as A, createTextVNode as K, toDisplayString as c, createElementVNode as e, normalizeStyle as Ee, createCommentVNode as S, ref as y, watch as Ye, createVNode as V, Transition as Ea, withCtx as Na, unref as i, withModifiers as Ce, withDirectives as N, vModelText as z, createStaticVNode as Ii, reactive as lo, onBeforeUnmount as Xo, vModelSelect as st, onMounted as Wi, nextTick as Sa, isRef as so, vModelCheckbox as wd, withKeys as Ca } from "vue";
|
|
2
|
+
import { Save as Sd, CloudUpload as Cd, Download as kd, X as vn, Plus as Pn, ChevronDown as xd, ChevronRight as Id, Trash2 as Dn, RefreshCw as Yi, AlertTriangle as $d, CheckCircle2 as _d, CircleDot as $i, Bug as Pd, ImagePlus as _i, Filter as Dd, Search as Ra, ArrowLeft as Pi, FileJson as Xi, FileSpreadsheet as Ad, ArrowUp as Td, ArrowDown as Ed, Check as Zi, CircleAlert as qi, Clipboard as Qi, SunMedium as Nd, RotateCcw as Rd, PanelTop as er, BookOpen as Di, Cloud as Od, Database as Bd, Keyboard as jd } from "@lucide/vue";
|
|
3
|
+
import { g as vo, a as js, s as Ud } from "./index-CQZFzzRZ.js";
|
|
4
4
|
const Lo = /* @__PURE__ */ tn({
|
|
5
5
|
__name: "ScreenRenderer",
|
|
6
6
|
props: {
|
|
@@ -19,7 +19,7 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
19
19
|
emits: ["change"],
|
|
20
20
|
setup(t) {
|
|
21
21
|
return (n, o) => (d(), v("div", Md, [
|
|
22
|
-
(d(!0), v(D, null,
|
|
22
|
+
(d(!0), v(D, null, E(t.items, (a) => (d(), v("button", {
|
|
23
23
|
key: a.id,
|
|
24
24
|
class: A(["flex flex-col items-center gap-1 rounded-full py-2 text-xs font-normal transition active:scale-95", t.active === a.id ? "bg-soft text-ocean" : "text-muted"]),
|
|
25
25
|
onClick: (r) => n.$emit("change", a.id)
|
|
@@ -46,7 +46,7 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
46
46
|
const o = n;
|
|
47
47
|
return (a, r) => (d(), v("aside", Fd, [
|
|
48
48
|
e("p", null, c(t.title), 1),
|
|
49
|
-
(d(!0), v(D, null,
|
|
49
|
+
(d(!0), v(D, null, E(t.options, (p) => {
|
|
50
50
|
var g, h;
|
|
51
51
|
return d(), v("button", {
|
|
52
52
|
key: p.id,
|
|
@@ -57,7 +57,7 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
57
57
|
(g = t.highlightedColors) != null && g[p.id] ? (d(), v("span", {
|
|
58
58
|
key: 0,
|
|
59
59
|
class: "prototype-state-highlight-bookmark",
|
|
60
|
-
style:
|
|
60
|
+
style: Ee({ backgroundColor: t.highlightedColors[p.id] }),
|
|
61
61
|
"aria-hidden": "true"
|
|
62
62
|
}, null, 4)) : (d(), v("span", zd)),
|
|
63
63
|
K(" " + c(p.label) + " ", 1),
|
|
@@ -89,7 +89,7 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
89
89
|
}, _p = {
|
|
90
90
|
class: "screen-content",
|
|
91
91
|
style: { height: "100%", overflow: "hidden", "padding-bottom": "20px" }
|
|
92
|
-
}, Pp = ["onClick"], Dp = { class: "flex items-center justify-center gap-1 max-w-full" }, Ap = { class: "text-center text-[11px] text-ink leading-tight truncate" },
|
|
92
|
+
}, Pp = ["onClick"], Dp = { class: "flex items-center justify-center gap-1 max-w-full" }, Ap = { class: "text-center text-[11px] text-ink leading-tight truncate" }, Tp = { class: "text-center text-[10px] text-muted" }, Ep = {
|
|
93
93
|
key: 1,
|
|
94
94
|
class: "flex flex-col items-center justify-center w-full h-48 text-muted relative"
|
|
95
95
|
}, Np = {
|
|
@@ -108,7 +108,7 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
108
108
|
}, Kp = { key: 1 }, Jp = { class: "grid grid-cols-2 gap-3" }, Wp = ["onDragstart"], Yp = { class: "desktop-frame-thumb" }, Xp = { class: "desktop-screen-content-thumb" }, Zp = { class: "flex items-center gap-1 px-0.5" }, qp = { class: "text-[10px] font-mono text-muted" }, Qp = { class: "text-[10px] text-ink leading-tight truncate" }, ev = {
|
|
109
109
|
key: 0,
|
|
110
110
|
class: "px-0.5 text-[10px] leading-tight text-ocean truncate"
|
|
111
|
-
}, tv = 0.18, nv = 0.38, Ai = 393, ov = 852, jo = 640,
|
|
111
|
+
}, tv = 0.18, nv = 0.38, Ai = 393, ov = 852, jo = 640, Ti = 360, Ei = 1920, sv = /* @__PURE__ */ tn({
|
|
112
112
|
__name: "FlowEditor",
|
|
113
113
|
props: {
|
|
114
114
|
flows: {},
|
|
@@ -127,18 +127,18 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
127
127
|
return ((I = h.value) == null ? void 0 : I.rows[g.value]) ?? [];
|
|
128
128
|
}), P = y(0.28);
|
|
129
129
|
function oe(I) {
|
|
130
|
-
return I === "pc" ? P.value * jo /
|
|
130
|
+
return I === "pc" ? P.value * jo / Ei : P.value;
|
|
131
131
|
}
|
|
132
132
|
function xe(I) {
|
|
133
|
-
const _ = I === "pc" ? jo : Ai, Y = I === "pc" ?
|
|
133
|
+
const _ = I === "pc" ? jo : Ai, Y = I === "pc" ? Ti : ov;
|
|
134
134
|
return {
|
|
135
135
|
width: `${Math.ceil(_ * P.value) + 2}px`,
|
|
136
136
|
height: `${Math.ceil(Y * P.value) + 2}px`
|
|
137
137
|
};
|
|
138
138
|
}
|
|
139
|
-
const pe = k(() => Math.ceil(Ai * P.value) + 16), ue = k(() => Math.ceil(jo * P.value) + 16), ae = k(() => P.value * 0.55), B = k(() => ae.value * jo /
|
|
139
|
+
const pe = k(() => Math.ceil(Ai * P.value) + 16), ue = k(() => Math.ceil(jo * P.value) + 16), ae = k(() => P.value * 0.55), B = k(() => ae.value * jo / Ei), ke = k(() => ({
|
|
140
140
|
width: `${Math.ceil(jo * ae.value) + 2}px`,
|
|
141
|
-
height: `${Math.ceil(
|
|
141
|
+
height: `${Math.ceil(Ti * ae.value) + 2}px`
|
|
142
142
|
})), ge = y(/* @__PURE__ */ new Set([0]));
|
|
143
143
|
function Ae(I) {
|
|
144
144
|
ge.value.has(I) ? ge.value.delete(I) : ge.value.add(I);
|
|
@@ -146,7 +146,7 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
146
146
|
function J(I, _) {
|
|
147
147
|
p.value = I, g.value = _;
|
|
148
148
|
}
|
|
149
|
-
function
|
|
149
|
+
function Te(I) {
|
|
150
150
|
return o.screens.find((_) => _.id === I);
|
|
151
151
|
}
|
|
152
152
|
function Re() {
|
|
@@ -198,7 +198,7 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
198
198
|
), Ve = k(() => H.value.filter((I) => I.screen.platform === "mobile")), Oe = k(() => H.value.filter((I) => I.screen.platform === "pc"));
|
|
199
199
|
function ce(I) {
|
|
200
200
|
var _;
|
|
201
|
-
return ((_ =
|
|
201
|
+
return ((_ = Te(I.screenId)) == null ? void 0 : _.platform) ?? "mobile";
|
|
202
202
|
}
|
|
203
203
|
function fe(I) {
|
|
204
204
|
return {
|
|
@@ -209,7 +209,7 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
209
209
|
}
|
|
210
210
|
function Ie(I) {
|
|
211
211
|
var we;
|
|
212
|
-
const _ =
|
|
212
|
+
const _ = Te(I.screenId) ?? o.screens[0], Y = I.stateId ? (we = o.stateOptionsByScreen(_.id).find((T) => T.id === I.stateId)) == null ? void 0 : we.label : void 0;
|
|
213
213
|
return {
|
|
214
214
|
..._,
|
|
215
215
|
stateId: I.stateId,
|
|
@@ -236,8 +236,8 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
236
236
|
}
|
|
237
237
|
function $(I, _) {
|
|
238
238
|
I.preventDefault();
|
|
239
|
-
const we = I.currentTarget.getBoundingClientRect(),
|
|
240
|
-
_e.value = I.clientX <
|
|
239
|
+
const we = I.currentTarget.getBoundingClientRect(), T = we.left + we.width / 2;
|
|
240
|
+
_e.value = I.clientX < T ? "before" : "after", Z.value = _;
|
|
241
241
|
}
|
|
242
242
|
function C(I, _) {
|
|
243
243
|
var Je;
|
|
@@ -246,20 +246,20 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
246
246
|
Z.value = -1, ze.value = null, G.value = -1, de.value = null;
|
|
247
247
|
const we = (Je = I.dataTransfer) == null ? void 0 : Je.getData("text/plain");
|
|
248
248
|
if (!we) return;
|
|
249
|
-
let
|
|
249
|
+
let T;
|
|
250
250
|
try {
|
|
251
|
-
|
|
251
|
+
T = JSON.parse(we);
|
|
252
252
|
} catch {
|
|
253
253
|
return;
|
|
254
254
|
}
|
|
255
255
|
const q = Ge();
|
|
256
256
|
if (!q) return;
|
|
257
257
|
const Ke = Y === "before" ? _ : _ + 1;
|
|
258
|
-
if (
|
|
259
|
-
const We = { screenId:
|
|
258
|
+
if (T.type === "palette" && T.screenId) {
|
|
259
|
+
const We = { screenId: T.screenId, stateId: T.stateId };
|
|
260
260
|
q.splice(Ke, 0, We);
|
|
261
|
-
} else if (
|
|
262
|
-
const We =
|
|
261
|
+
} else if (T.type === "sort" && typeof T.fromIndex == "number") {
|
|
262
|
+
const We = T.fromIndex;
|
|
263
263
|
if (We === Ke) return;
|
|
264
264
|
const [yo] = q.splice(We, 1), Ft = We < Ke ? Ke - 1 : Ke;
|
|
265
265
|
q.splice(Ft, 0, yo);
|
|
@@ -277,9 +277,9 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
277
277
|
return;
|
|
278
278
|
}
|
|
279
279
|
if (Y.type === "palette" && Y.screenId) {
|
|
280
|
-
const
|
|
281
|
-
if (!
|
|
282
|
-
|
|
280
|
+
const T = Ge();
|
|
281
|
+
if (!T) return;
|
|
282
|
+
T.push({ screenId: Y.screenId, stateId: Y.stateId });
|
|
283
283
|
}
|
|
284
284
|
}
|
|
285
285
|
function He(I, _) {
|
|
@@ -322,7 +322,7 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
322
322
|
_[4] || (_[4] = e("h2", { class: "text-lg font-semibold text-ink" }, "流程编排", -1)),
|
|
323
323
|
e("span", Zd, c((Y = h.value) == null ? void 0 : Y.title) + " · 子流程 " + c(g.value + 1) + " / " + c((we = h.value) == null ? void 0 : we.rows.length), 1)
|
|
324
324
|
]),
|
|
325
|
-
V(
|
|
325
|
+
V(Ea, { name: "toast" }, {
|
|
326
326
|
default: Na(() => [
|
|
327
327
|
rt.value ? (d(), v("div", {
|
|
328
328
|
key: 0,
|
|
@@ -376,8 +376,8 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
376
376
|
])
|
|
377
377
|
]),
|
|
378
378
|
e("div", sp, [
|
|
379
|
-
(d(!0), v(D, null,
|
|
380
|
-
key:
|
|
379
|
+
(d(!0), v(D, null, E(r.value, (T, q) => (d(), v("div", {
|
|
380
|
+
key: T.id,
|
|
381
381
|
class: A(["rounded-xl border border-line bg-soft overflow-hidden", { "ring-1 ring-ocean": p.value === q }])
|
|
382
382
|
}, [
|
|
383
383
|
e("div", {
|
|
@@ -386,7 +386,7 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
386
386
|
}, [
|
|
387
387
|
(d(), Me(ro(ge.value.has(q) ? i(xd) : i(Id)), { class: "h-4 w-4 text-muted" })),
|
|
388
388
|
e("input", {
|
|
389
|
-
value:
|
|
389
|
+
value: T.title,
|
|
390
390
|
class: "flex-1 min-w-0 bg-transparent text-sm font-semibold text-ink outline-none",
|
|
391
391
|
onClick: _[0] || (_[0] = Ce(() => {
|
|
392
392
|
}, ["stop"])),
|
|
@@ -401,7 +401,7 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
401
401
|
], 8, ip)
|
|
402
402
|
], 8, ap),
|
|
403
403
|
ge.value.has(q) ? (d(), v("div", rp, [
|
|
404
|
-
(d(!0), v(D, null, T
|
|
404
|
+
(d(!0), v(D, null, E(T.rows, (Ke, Je) => (d(), v("div", {
|
|
405
405
|
key: Je,
|
|
406
406
|
class: A(["group/row flex items-center gap-2 py-2 text-xs cursor-pointer hover:bg-canvas transition", [
|
|
407
407
|
p.value === q && g.value === Je ? "pl-[9px] pr-3 bg-ocean/5 border-l-[3px] border-ocean" : "px-3"
|
|
@@ -413,7 +413,7 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
413
413
|
}, null, 2),
|
|
414
414
|
e("span", {
|
|
415
415
|
class: A(["flex-1 min-w-0 truncate", p.value === q && g.value === Je ? "text-ink font-medium" : "text-muted"])
|
|
416
|
-
}, c(M(
|
|
416
|
+
}, c(M(T, Je)), 3),
|
|
417
417
|
e("span", {
|
|
418
418
|
class: A(["", p.value === q && g.value === Je ? "text-ocean" : "text-muted/60"])
|
|
419
419
|
}, c(Ke.length) + " 页", 3),
|
|
@@ -444,14 +444,14 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
444
444
|
value: M(h.value, g.value),
|
|
445
445
|
class: "rounded-lg border border-line bg-canvas px-3 py-1.5 text-sm text-ink outline-none focus:border-ocean",
|
|
446
446
|
placeholder: "输入子流程名称...",
|
|
447
|
-
onInput: _[1] || (_[1] = (
|
|
447
|
+
onInput: _[1] || (_[1] = (T) => ye(g.value, T.target.value))
|
|
448
448
|
}, null, 40, mp)
|
|
449
449
|
]),
|
|
450
450
|
e("div", gp, [
|
|
451
451
|
e("div", hp, [
|
|
452
452
|
_[9] || (_[9] = e("span", { class: "text-xs text-muted" }, "缩略图", -1)),
|
|
453
453
|
N(e("input", {
|
|
454
|
-
"onUpdate:modelValue": _[2] || (_[2] = (
|
|
454
|
+
"onUpdate:modelValue": _[2] || (_[2] = (T) => P.value = T),
|
|
455
455
|
type: "range",
|
|
456
456
|
min: tv,
|
|
457
457
|
max: nv,
|
|
@@ -485,15 +485,15 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
485
485
|
onDrop: se
|
|
486
486
|
}, [
|
|
487
487
|
e("div", bp, [
|
|
488
|
-
b.value.length > 0 ? (d(!0), v(D, { key: 0 },
|
|
488
|
+
b.value.length > 0 ? (d(!0), v(D, { key: 0 }, E(b.value, (T, q) => {
|
|
489
489
|
var Ke, Je;
|
|
490
490
|
return d(), v("div", {
|
|
491
|
-
key: `${
|
|
491
|
+
key: `${T.screenId}-${q}`,
|
|
492
492
|
class: A(["group relative flex flex-col items-center gap-2", {
|
|
493
493
|
"opacity-40 scale-[0.96]": G.value === q,
|
|
494
494
|
"transition-all duration-150": !0
|
|
495
495
|
}]),
|
|
496
|
-
style:
|
|
496
|
+
style: Ee({ width: `${ce(T) === "pc" ? ue.value : pe.value}px` }),
|
|
497
497
|
draggable: "true",
|
|
498
498
|
onDragstart: (We) => te(We, q),
|
|
499
499
|
onDragend: qe,
|
|
@@ -504,26 +504,26 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
504
504
|
q === b.value.length - 1 && Rt.value === b.value.length ? (d(), v("div", Cp)) : S("", !0),
|
|
505
505
|
e("div", kp, [
|
|
506
506
|
e("div", {
|
|
507
|
-
class: A(["thumb-frame", { "pc-thumb-frame": ce(
|
|
508
|
-
style:
|
|
507
|
+
class: A(["thumb-frame", { "pc-thumb-frame": ce(T) === "pc" }]),
|
|
508
|
+
style: Ee(xe(ce(T)))
|
|
509
509
|
}, [
|
|
510
510
|
e("div", {
|
|
511
511
|
class: "thumb-scale",
|
|
512
|
-
style:
|
|
512
|
+
style: Ee({ transform: `scale(${oe(ce(T))})` })
|
|
513
513
|
}, [
|
|
514
|
-
ce(
|
|
514
|
+
ce(T) === "pc" ? (d(), v("div", xp, [
|
|
515
515
|
e("div", Ip, [
|
|
516
|
-
|
|
516
|
+
T.screenId ? (d(), Me(Lo, {
|
|
517
517
|
key: 0,
|
|
518
|
-
screen: Ie(
|
|
518
|
+
screen: Ie(T)
|
|
519
519
|
}, null, 8, ["screen"])) : S("", !0)
|
|
520
520
|
])
|
|
521
521
|
])) : (d(), v("div", $p, [
|
|
522
522
|
_[11] || (_[11] = Ii('<div class="status-bar" data-v-f5226710><span data-v-f5226710>9:41</span><span class="flex items-center gap-1" data-v-f5226710><svg class="h-3 w-3" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-f5226710><path d="M12 2a4 4 0 0 0-4 4c0 2.5 3 5.5 4 9 1-3.5 4-6.5 4-9a4 4 0 0 0-4-4Z" data-v-f5226710></path><circle cx="12" cy="6" r="1.5" data-v-f5226710></circle></svg> 86% </span></div>', 1)),
|
|
523
523
|
e("div", _p, [
|
|
524
|
-
|
|
524
|
+
T.screenId ? (d(), Me(Lo, {
|
|
525
525
|
key: 0,
|
|
526
|
-
screen: Ie(
|
|
526
|
+
screen: Ie(T)
|
|
527
527
|
}, null, 8, ["screen"])) : S("", !0)
|
|
528
528
|
])
|
|
529
529
|
]))
|
|
@@ -538,18 +538,18 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
538
538
|
]),
|
|
539
539
|
e("div", Dp, [
|
|
540
540
|
e("span", {
|
|
541
|
-
class: A(["platform-badge is-small", ce(
|
|
542
|
-
}, c(ce(
|
|
543
|
-
e("span", Ap, c(((Ke =
|
|
541
|
+
class: A(["platform-badge is-small", ce(T) === "pc" ? "is-pc" : "is-mobile"])
|
|
542
|
+
}, c(ce(T) === "pc" ? "P" : "M"), 3),
|
|
543
|
+
e("span", Ap, c(((Ke = Te(T.screenId)) == null ? void 0 : Ke.title) ?? T.screenId), 1)
|
|
544
544
|
]),
|
|
545
|
-
e("span",
|
|
546
|
-
K(c(((Je =
|
|
547
|
-
|
|
548
|
-
K(" · " + c(Ie(
|
|
545
|
+
e("span", Tp, [
|
|
546
|
+
K(c(((Je = Te(T.screenId)) == null ? void 0 : Je.code) ?? ""), 1),
|
|
547
|
+
T.stateId ? (d(), v(D, { key: 0 }, [
|
|
548
|
+
K(" · " + c(Ie(T).stateLabel), 1)
|
|
549
549
|
], 64)) : S("", !0)
|
|
550
550
|
])
|
|
551
551
|
], 46, wp);
|
|
552
|
-
}), 128)) : (d(), v("div",
|
|
552
|
+
}), 128)) : (d(), v("div", Ep, [
|
|
553
553
|
ze.value ? (d(), v("div", Np)) : S("", !0),
|
|
554
554
|
e("div", Rp, [
|
|
555
555
|
V(i(Pn), { class: "h-6 w-6" })
|
|
@@ -568,28 +568,28 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
568
568
|
Ve.value.length ? (d(), v("div", jp, [
|
|
569
569
|
_[15] || (_[15] = e("p", { class: "mb-2 text-xs font-semibold text-muted" }, "移动端", -1)),
|
|
570
570
|
e("div", Up, [
|
|
571
|
-
(d(!0), v(D, null,
|
|
572
|
-
key:
|
|
571
|
+
(d(!0), v(D, null, E(Ve.value, (T) => (d(), v("div", {
|
|
572
|
+
key: T.key,
|
|
573
573
|
class: A(["group flex flex-col gap-1 p-2 rounded-xl border border-line bg-soft hover:border-ocean hover:shadow-sm transition cursor-grab active:cursor-grabbing", {
|
|
574
|
-
"opacity-40 ring-2 ring-ocean/40": de.value ===
|
|
574
|
+
"opacity-40 ring-2 ring-ocean/40": de.value === T.key
|
|
575
575
|
}]),
|
|
576
576
|
draggable: "true",
|
|
577
|
-
onDragstart: (q) => be(q,
|
|
577
|
+
onDragstart: (q) => be(q, T),
|
|
578
578
|
onDragend: qe
|
|
579
579
|
}, [
|
|
580
580
|
e("div", {
|
|
581
581
|
class: "thumb-frame",
|
|
582
|
-
style:
|
|
582
|
+
style: Ee(xe("mobile"))
|
|
583
583
|
}, [
|
|
584
584
|
e("div", {
|
|
585
585
|
class: "thumb-scale",
|
|
586
|
-
style:
|
|
586
|
+
style: Ee({ transform: `scale(${P.value})` })
|
|
587
587
|
}, [
|
|
588
588
|
e("div", Vp, [
|
|
589
589
|
_[13] || (_[13] = Ii('<div class="status-bar" data-v-f5226710><span data-v-f5226710>9:41</span><span class="flex items-center gap-1" data-v-f5226710><svg class="h-3 w-3" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-f5226710><path d="M12 2a4 4 0 0 0-4 4c0 2.5 3 5.5 4 9 1-3.5 4-6.5 4-9a4 4 0 0 0-4-4Z" data-v-f5226710></path><circle cx="12" cy="6" r="1.5" data-v-f5226710></circle></svg> 86% </span></div>', 1)),
|
|
590
590
|
e("div", Lp, [
|
|
591
591
|
V(Lo, {
|
|
592
|
-
screen: fe(
|
|
592
|
+
screen: fe(T)
|
|
593
593
|
}, null, 8, ["screen"])
|
|
594
594
|
])
|
|
595
595
|
])
|
|
@@ -597,37 +597,37 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
597
597
|
], 4),
|
|
598
598
|
e("div", Fp, [
|
|
599
599
|
_[14] || (_[14] = e("span", { class: "platform-badge is-small is-mobile" }, "M", -1)),
|
|
600
|
-
e("span", Gp, c(
|
|
601
|
-
e("span", zp, c(
|
|
600
|
+
e("span", Gp, c(T.screen.code), 1),
|
|
601
|
+
e("span", zp, c(T.screen.title), 1)
|
|
602
602
|
]),
|
|
603
|
-
|
|
603
|
+
T.stateLabel ? (d(), v("span", Hp, c(T.stateLabel), 1)) : S("", !0)
|
|
604
604
|
], 42, Mp))), 128))
|
|
605
605
|
])
|
|
606
606
|
])) : S("", !0),
|
|
607
607
|
Oe.value.length ? (d(), v("div", Kp, [
|
|
608
608
|
_[17] || (_[17] = e("p", { class: "mb-2 text-xs font-semibold text-muted" }, "PC 端", -1)),
|
|
609
609
|
e("div", Jp, [
|
|
610
|
-
(d(!0), v(D, null,
|
|
611
|
-
key:
|
|
610
|
+
(d(!0), v(D, null, E(Oe.value, (T) => (d(), v("div", {
|
|
611
|
+
key: T.key,
|
|
612
612
|
class: A(["group flex flex-col gap-1 p-2 rounded-xl border border-line bg-soft hover:border-ocean hover:shadow-sm transition cursor-grab active:cursor-grabbing", {
|
|
613
|
-
"opacity-40 ring-2 ring-ocean/40": de.value ===
|
|
613
|
+
"opacity-40 ring-2 ring-ocean/40": de.value === T.key
|
|
614
614
|
}]),
|
|
615
615
|
draggable: "true",
|
|
616
|
-
onDragstart: (q) => be(q,
|
|
616
|
+
onDragstart: (q) => be(q, T),
|
|
617
617
|
onDragend: qe
|
|
618
618
|
}, [
|
|
619
619
|
e("div", {
|
|
620
620
|
class: "thumb-frame pc-thumb-frame",
|
|
621
|
-
style:
|
|
621
|
+
style: Ee(ke.value)
|
|
622
622
|
}, [
|
|
623
623
|
e("div", {
|
|
624
624
|
class: "thumb-scale",
|
|
625
|
-
style:
|
|
625
|
+
style: Ee({ transform: `scale(${B.value})` })
|
|
626
626
|
}, [
|
|
627
627
|
e("div", Yp, [
|
|
628
628
|
e("div", Xp, [
|
|
629
629
|
V(Lo, {
|
|
630
|
-
screen: fe(
|
|
630
|
+
screen: fe(T)
|
|
631
631
|
}, null, 8, ["screen"])
|
|
632
632
|
])
|
|
633
633
|
])
|
|
@@ -635,10 +635,10 @@ const Lo = /* @__PURE__ */ tn({
|
|
|
635
635
|
], 4),
|
|
636
636
|
e("div", Zp, [
|
|
637
637
|
_[16] || (_[16] = e("span", { class: "platform-badge is-small is-pc" }, "P", -1)),
|
|
638
|
-
e("span", qp, c(
|
|
639
|
-
e("span", Qp, c(
|
|
638
|
+
e("span", qp, c(T.screen.code), 1),
|
|
639
|
+
e("span", Qp, c(T.screen.title), 1)
|
|
640
640
|
]),
|
|
641
|
-
|
|
641
|
+
T.stateLabel ? (d(), v("span", ev, c(T.stateLabel), 1)) : S("", !0)
|
|
642
642
|
], 42, Wp))), 128))
|
|
643
643
|
])
|
|
644
644
|
])) : S("", !0)
|
|
@@ -884,7 +884,7 @@ async function gv(t, n, o) {
|
|
|
884
884
|
return await mv(ur(), r, a != null && a.legacy ? null : (a == null ? void 0 : a.sha) ?? null, fv(t, n)), pr();
|
|
885
885
|
});
|
|
886
886
|
}
|
|
887
|
-
const vr = ["功能异常", "UI/文案", "流程阻塞", "数据/报告", "设备/蓝牙", "性能/稳定性", "兼容性", "其他"], fr = ["P0", "P1", "P2", "P3", "P4"], mr = ["安卓侧", "iOS 侧", "后端"], gr = ["后端开发", "iOS 开发", "安卓开发", "产品经理", "算法开发", "硬件嵌入式开发"], hr = ["待处理", "已确认", "修复中", "已修复", "已验证", "无需处理"], yr = ["待处理", "已确认", "修复中"],
|
|
887
|
+
const vr = ["功能异常", "UI/文案", "流程阻塞", "数据/报告", "设备/蓝牙", "性能/稳定性", "兼容性", "其他"], fr = ["P0", "P1", "P2", "P3", "P4"], mr = ["安卓侧", "iOS 侧", "后端"], gr = ["后端开发", "iOS 开发", "安卓开发", "产品经理", "算法开发", "硬件嵌入式开发"], hr = ["待处理", "已确认", "修复中", "已修复", "已验证", "无需处理"], yr = ["待处理", "已确认", "修复中"], Tt = y([]), Ka = y(ir), br = y(ir ? "loading" : "idle"), Ja = y("");
|
|
888
888
|
let Bi = !1;
|
|
889
889
|
function hv(t) {
|
|
890
890
|
return typeof t == "string" && vr.includes(t);
|
|
@@ -955,13 +955,13 @@ async function wr() {
|
|
|
955
955
|
try {
|
|
956
956
|
Yt("loading", "正在同步 Gitee Bug 数据");
|
|
957
957
|
const n = await pr();
|
|
958
|
-
|
|
958
|
+
Tt.value = io((n == null ? void 0 : n.value) ?? []), Zt("bugs", Tt.value, (n == null ? void 0 : n.sha) ?? null, (/* @__PURE__ */ new Date()).toISOString(), "synced"), Yt("success", "已同步 Gitee Bug 数据");
|
|
959
959
|
return;
|
|
960
960
|
} catch (n) {
|
|
961
961
|
const o = Xt("bugs");
|
|
962
962
|
o && Zt("bugs", o.value, o.revision, o.lastRemoteSyncAt, "stale", n instanceof Error ? n.message : "Gitee Bug 数据同步失败"), Yt("error", n instanceof Error ? n.message : "Gitee Bug 数据同步失败,已切换本地兜底");
|
|
963
963
|
}
|
|
964
|
-
|
|
964
|
+
Tt.value = io(((t = Xt("bugs")) == null ? void 0 : t.value) ?? []), Ja.value || Yt("idle", "当前使用本地 Bug 数据");
|
|
965
965
|
}
|
|
966
966
|
async function xv() {
|
|
967
967
|
if (!Bi) {
|
|
@@ -969,25 +969,25 @@ async function xv() {
|
|
|
969
969
|
try {
|
|
970
970
|
await wr();
|
|
971
971
|
} catch {
|
|
972
|
-
|
|
972
|
+
Tt.value = [], Yt("error", "Bug 数据初始化失败");
|
|
973
973
|
}
|
|
974
974
|
}
|
|
975
975
|
}
|
|
976
976
|
async function Iv(t, n, o) {
|
|
977
977
|
const a = () => {
|
|
978
|
-
|
|
978
|
+
Tt.value = io(o(Tt.value)), kv(Tt.value);
|
|
979
979
|
};
|
|
980
980
|
if (Ka.value)
|
|
981
981
|
try {
|
|
982
982
|
Yt("loading", "正在提交 Gitee Bug 数据");
|
|
983
983
|
const r = await gv(t, n, (p) => io(o(io(p))));
|
|
984
|
-
return
|
|
984
|
+
return Tt.value = io((r == null ? void 0 : r.value) ?? []), Zt("bugs", Tt.value, (r == null ? void 0 : r.sha) ?? null, (/* @__PURE__ */ new Date()).toISOString(), "synced"), Yt("success", "Bug 数据已提交"), !0;
|
|
985
985
|
} catch (r) {
|
|
986
986
|
return Yt("error", r instanceof Error ? r.message : "Bug 数据提交失败"), !1;
|
|
987
987
|
}
|
|
988
988
|
return a(), Yt("success", "Bug 数据已保存到本地"), !0;
|
|
989
989
|
}
|
|
990
|
-
const $v = k(() =>
|
|
990
|
+
const $v = k(() => Tt.value.filter((t) => yr.includes(t.status)).length);
|
|
991
991
|
function _v(t) {
|
|
992
992
|
const n = t.reduce((o, a) => {
|
|
993
993
|
const r = /^BUG-(\d+)$/i.exec(a.id.trim());
|
|
@@ -997,7 +997,7 @@ function _v(t) {
|
|
|
997
997
|
}
|
|
998
998
|
function Sr() {
|
|
999
999
|
return {
|
|
1000
|
-
bugs:
|
|
1000
|
+
bugs: Tt,
|
|
1001
1001
|
bugTypes: vr,
|
|
1002
1002
|
bugSeverities: fr,
|
|
1003
1003
|
bugSourceSides: mr,
|
|
@@ -1030,7 +1030,7 @@ async function Av(t, n) {
|
|
|
1030
1030
|
const o = new TextEncoder(), a = await crypto.subtle.importKey("raw", o.encode(n), { name: "HMAC", hash: "SHA-1" }, !1, ["sign"]), r = await crypto.subtle.sign("HMAC", a, o.encode(t));
|
|
1031
1031
|
return Dv(r);
|
|
1032
1032
|
}
|
|
1033
|
-
function
|
|
1033
|
+
function Tv(t, n) {
|
|
1034
1034
|
const o = new Date(Date.now() + 6e5).toISOString();
|
|
1035
1035
|
return btoa(
|
|
1036
1036
|
JSON.stringify({
|
|
@@ -1043,7 +1043,7 @@ function Ev(t, n) {
|
|
|
1043
1043
|
})
|
|
1044
1044
|
);
|
|
1045
1045
|
}
|
|
1046
|
-
function
|
|
1046
|
+
function Ev() {
|
|
1047
1047
|
return !!Wa();
|
|
1048
1048
|
}
|
|
1049
1049
|
function Nv(t) {
|
|
@@ -1056,7 +1056,7 @@ function xa(t) {
|
|
|
1056
1056
|
async function Rv(t, n) {
|
|
1057
1057
|
const o = Wa();
|
|
1058
1058
|
if (!o) throw new Error("缺少 OSS 上传配置");
|
|
1059
|
-
const a =
|
|
1059
|
+
const a = Tv(t, n.size), r = await Av(a, o.accessKeySecret), p = new FormData();
|
|
1060
1060
|
p.set("key", t), p.set("policy", a), p.set("OSSAccessKeyId", o.accessKeyId), p.set("signature", r), p.set("success_action_status", "201"), p.set("Content-Type", n.type || "application/octet-stream"), p.set("file", n);
|
|
1061
1061
|
const g = await fetch(o.baseUrl, {
|
|
1062
1062
|
method: "POST",
|
|
@@ -1083,10 +1083,10 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1083
1083
|
}, xf = ["disabled"], If = ["disabled"], $f = { class: "bug-list" }, _f = {
|
|
1084
1084
|
key: 0,
|
|
1085
1085
|
class: "bug-empty"
|
|
1086
|
-
}, Pf = { class: "bug-list-main" }, Df = { class: "bug-list-meta" }, Af = { key: 0 },
|
|
1086
|
+
}, Pf = { class: "bug-list-main" }, Df = { class: "bug-list-meta" }, Af = { key: 0 }, Tf = {
|
|
1087
1087
|
key: 0,
|
|
1088
1088
|
class: "bug-list-images"
|
|
1089
|
-
},
|
|
1089
|
+
}, Ef = ["onClick"], Nf = ["src", "alt"], Rf = { key: 0 }, Of = ["onClick"], Bf = {
|
|
1090
1090
|
key: 1,
|
|
1091
1091
|
class: "bug-pagination"
|
|
1092
1092
|
}, jf = ["disabled"], Uf = ["disabled"], Mf = { class: "bug-detail-panel" }, Vf = { class: "bug-detail-head" }, Lf = { class: "bug-detail-summary" }, Ff = { key: 0 }, Gf = { class: "bug-detail-actions" }, zf = { key: 1 }, Hf = {
|
|
@@ -1155,7 +1155,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1155
1155
|
P2: 2,
|
|
1156
1156
|
P3: 3,
|
|
1157
1157
|
P4: 4
|
|
1158
|
-
},
|
|
1158
|
+
}, Te = [
|
|
1159
1159
|
{ value: "createdDesc", label: "创建时间 新→旧" },
|
|
1160
1160
|
{ value: "createdAsc", label: "创建时间 旧→新" },
|
|
1161
1161
|
{ value: "updatedDesc", label: "更新时间 新→旧" },
|
|
@@ -1209,7 +1209,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1209
1209
|
sourceSideVersion: "",
|
|
1210
1210
|
ownerRole: "后端开发",
|
|
1211
1211
|
description: ""
|
|
1212
|
-
}), de = y([]), Rt = y(null), be = y([]), te = y(""), qe = y(null), $ =
|
|
1212
|
+
}), de = y([]), Rt = y(null), be = y([]), te = y(""), qe = y(null), $ = Ev(), C = k(() => a.value.find((x) => x.id === ye.value) ?? null), se = k(() => !!(C.value && !["已验证", "无需处理"].includes(C.value.status))), He = k(() => a.value.filter((x) => x.status === "已修复" || x.status === "已验证").length), rt = k(() => a.value.filter((x) => x.status === "无需处理").length), ut = k(
|
|
1213
1213
|
() => Array.from(new Set(a.value.map((x) => {
|
|
1214
1214
|
var f;
|
|
1215
1215
|
return (f = x.sourceSideVersion) == null ? void 0 : f.trim();
|
|
@@ -1244,7 +1244,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1244
1244
|
const W = (/* @__PURE__ */ new Date()).toISOString().replace(/\D/g, "").slice(0, 14);
|
|
1245
1245
|
return `bugs/${x}/${W}-${_(f.name)}.${Y(f)}`;
|
|
1246
1246
|
}
|
|
1247
|
-
async function
|
|
1247
|
+
async function T(x) {
|
|
1248
1248
|
if (!["image/png", "image/jpeg", "image/jpg", "image/webp"].includes(x.type)) throw new Error("仅支持 png、jpg、jpeg、webp 图片");
|
|
1249
1249
|
return {
|
|
1250
1250
|
id: `pending-image-${Date.now()}-${Math.random().toString(16).slice(2)}`,
|
|
@@ -1268,7 +1268,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1268
1268
|
}
|
|
1269
1269
|
for (const Q of f.slice(0, m))
|
|
1270
1270
|
try {
|
|
1271
|
-
be.value = [...be.value, await
|
|
1271
|
+
be.value = [...be.value, await T(Q)];
|
|
1272
1272
|
} catch (Qe) {
|
|
1273
1273
|
te.value = Qe instanceof Error ? Qe.message : "图片处理失败";
|
|
1274
1274
|
}
|
|
@@ -1519,7 +1519,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1519
1519
|
onPaste: Je
|
|
1520
1520
|
}, [
|
|
1521
1521
|
e("datalist", zv, [
|
|
1522
|
-
(d(!0), v(D, null,
|
|
1522
|
+
(d(!0), v(D, null, E(ut.value, (m) => (d(), v("option", {
|
|
1523
1523
|
key: m,
|
|
1524
1524
|
value: m
|
|
1525
1525
|
}, null, 8, Hv))), 128))
|
|
@@ -1554,7 +1554,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1554
1554
|
N(e("select", {
|
|
1555
1555
|
"onUpdate:modelValue": f[4] || (f[4] = (m) => L.type = m)
|
|
1556
1556
|
}, [
|
|
1557
|
-
(d(!0), v(D, null,
|
|
1557
|
+
(d(!0), v(D, null, E(i(r), (m) => (d(), v("option", {
|
|
1558
1558
|
key: m,
|
|
1559
1559
|
value: m
|
|
1560
1560
|
}, c(m), 9, Wv))), 128))
|
|
@@ -1567,7 +1567,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1567
1567
|
N(e("select", {
|
|
1568
1568
|
"onUpdate:modelValue": f[5] || (f[5] = (m) => L.severity = m)
|
|
1569
1569
|
}, [
|
|
1570
|
-
(d(!0), v(D, null,
|
|
1570
|
+
(d(!0), v(D, null, E(i(p), (m) => (d(), v("option", {
|
|
1571
1571
|
key: m,
|
|
1572
1572
|
value: m
|
|
1573
1573
|
}, c(m), 9, Yv))), 128))
|
|
@@ -1580,7 +1580,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1580
1580
|
N(e("select", {
|
|
1581
1581
|
"onUpdate:modelValue": f[6] || (f[6] = (m) => L.sourceSide = m)
|
|
1582
1582
|
}, [
|
|
1583
|
-
(d(!0), v(D, null,
|
|
1583
|
+
(d(!0), v(D, null, E(i(g), (m) => (d(), v("option", {
|
|
1584
1584
|
key: m,
|
|
1585
1585
|
value: m
|
|
1586
1586
|
}, c(m), 9, Xv))), 128))
|
|
@@ -1604,7 +1604,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1604
1604
|
N(e("select", {
|
|
1605
1605
|
"onUpdate:modelValue": f[8] || (f[8] = (m) => L.ownerRole = m)
|
|
1606
1606
|
}, [
|
|
1607
|
-
(d(!0), v(D, null,
|
|
1607
|
+
(d(!0), v(D, null, E(i(h), (m) => (d(), v("option", {
|
|
1608
1608
|
key: m,
|
|
1609
1609
|
value: m
|
|
1610
1610
|
}, c(m), 9, Zv))), 128))
|
|
@@ -1647,7 +1647,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1647
1647
|
}, null, 544),
|
|
1648
1648
|
f[55] || (f[55] = e("p", { class: "bug-image-hint" }, "支持 png、jpg、webp;最多 10 张;图片将按原文件直接上传 OSS。", -1)),
|
|
1649
1649
|
be.value.length ? (d(), v("div", tf, [
|
|
1650
|
-
(d(!0), v(D, null,
|
|
1650
|
+
(d(!0), v(D, null, E(be.value, (m) => (d(), v("article", {
|
|
1651
1651
|
key: m.id,
|
|
1652
1652
|
class: A(`is-${m.status}`)
|
|
1653
1653
|
}, [
|
|
@@ -1695,7 +1695,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1695
1695
|
}, [
|
|
1696
1696
|
f[57] || (f[57] = e("option", { value: "未修复" }, "未修复", -1)),
|
|
1697
1697
|
f[58] || (f[58] = e("option", { value: "全部" }, "全部状态", -1)),
|
|
1698
|
-
(d(!0), v(D, null,
|
|
1698
|
+
(d(!0), v(D, null, E(i(b), (m) => (d(), v("option", {
|
|
1699
1699
|
key: m,
|
|
1700
1700
|
value: m
|
|
1701
1701
|
}, c(m), 9, vf))), 128))
|
|
@@ -1706,7 +1706,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1706
1706
|
"onUpdate:modelValue": f[12] || (f[12] = (m) => H.type = m)
|
|
1707
1707
|
}, [
|
|
1708
1708
|
f[59] || (f[59] = e("option", { value: "全部" }, "全部类型", -1)),
|
|
1709
|
-
(d(!0), v(D, null,
|
|
1709
|
+
(d(!0), v(D, null, E(i(r), (m) => (d(), v("option", {
|
|
1710
1710
|
key: m,
|
|
1711
1711
|
value: m
|
|
1712
1712
|
}, c(m), 9, ff))), 128))
|
|
@@ -1717,7 +1717,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1717
1717
|
"onUpdate:modelValue": f[13] || (f[13] = (m) => H.severity = m)
|
|
1718
1718
|
}, [
|
|
1719
1719
|
f[60] || (f[60] = e("option", { value: "全部" }, "全部等级", -1)),
|
|
1720
|
-
(d(!0), v(D, null,
|
|
1720
|
+
(d(!0), v(D, null, E(i(p), (m) => (d(), v("option", {
|
|
1721
1721
|
key: m,
|
|
1722
1722
|
value: m
|
|
1723
1723
|
}, c(m), 9, mf))), 128))
|
|
@@ -1728,7 +1728,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1728
1728
|
"onUpdate:modelValue": f[14] || (f[14] = (m) => H.ownerRole = m)
|
|
1729
1729
|
}, [
|
|
1730
1730
|
f[61] || (f[61] = e("option", { value: "全部" }, "全部归属", -1)),
|
|
1731
|
-
(d(!0), v(D, null,
|
|
1731
|
+
(d(!0), v(D, null, E(i(h), (m) => (d(), v("option", {
|
|
1732
1732
|
key: m,
|
|
1733
1733
|
value: m
|
|
1734
1734
|
}, c(m), 9, gf))), 128))
|
|
@@ -1739,7 +1739,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1739
1739
|
"onUpdate:modelValue": f[15] || (f[15] = (m) => H.sourceSide = m)
|
|
1740
1740
|
}, [
|
|
1741
1741
|
f[62] || (f[62] = e("option", { value: "全部" }, "全部发生侧", -1)),
|
|
1742
|
-
(d(!0), v(D, null,
|
|
1742
|
+
(d(!0), v(D, null, E(i(g), (m) => (d(), v("option", {
|
|
1743
1743
|
key: m,
|
|
1744
1744
|
value: m
|
|
1745
1745
|
}, c(m), 9, hf))), 128))
|
|
@@ -1750,7 +1750,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1750
1750
|
"onUpdate:modelValue": f[16] || (f[16] = (m) => H.sourceSideVersion = m)
|
|
1751
1751
|
}, [
|
|
1752
1752
|
f[63] || (f[63] = e("option", { value: "全部" }, "全部发生侧版本", -1)),
|
|
1753
|
-
(d(!0), v(D, null,
|
|
1753
|
+
(d(!0), v(D, null, E(ut.value, (m) => (d(), v("option", {
|
|
1754
1754
|
key: m,
|
|
1755
1755
|
value: m
|
|
1756
1756
|
}, c(m), 9, yf))), 128))
|
|
@@ -1774,7 +1774,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1774
1774
|
N(e("select", {
|
|
1775
1775
|
"onUpdate:modelValue": f[18] || (f[18] = (m) => Ve.value = m)
|
|
1776
1776
|
}, [
|
|
1777
|
-
(d(), v(D, null,
|
|
1777
|
+
(d(), v(D, null, E(Te, (m) => e("option", {
|
|
1778
1778
|
key: m.value,
|
|
1779
1779
|
value: m.value
|
|
1780
1780
|
}, c(m.label), 9, Sf)), 64))
|
|
@@ -1787,7 +1787,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1787
1787
|
N(e("select", {
|
|
1788
1788
|
"onUpdate:modelValue": f[19] || (f[19] = (m) => Oe.value = m)
|
|
1789
1789
|
}, [
|
|
1790
|
-
(d(), v(D, null,
|
|
1790
|
+
(d(), v(D, null, E(Re, (m) => e("option", {
|
|
1791
1791
|
key: m,
|
|
1792
1792
|
value: m
|
|
1793
1793
|
}, c(m) + " 条", 9, Cf)), 64))
|
|
@@ -1820,7 +1820,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1820
1820
|
])) : S("", !0),
|
|
1821
1821
|
e("div", $f, [
|
|
1822
1822
|
vt.value.length ? S("", !0) : (d(), v("p", _f, "当前筛选条件下暂无 Bug。")),
|
|
1823
|
-
(d(!0), v(D, null,
|
|
1823
|
+
(d(!0), v(D, null, E($e.value, (m) => {
|
|
1824
1824
|
var Q;
|
|
1825
1825
|
return d(), v("article", {
|
|
1826
1826
|
key: m.id,
|
|
@@ -1842,8 +1842,8 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1842
1842
|
]),
|
|
1843
1843
|
e("h2", null, c(m.title), 1),
|
|
1844
1844
|
e("p", null, c(m.description), 1),
|
|
1845
|
-
(Q = m.attachments) != null && Q.length ? (d(), v("div",
|
|
1846
|
-
(d(!0), v(D, null,
|
|
1845
|
+
(Q = m.attachments) != null && Q.length ? (d(), v("div", Tf, [
|
|
1846
|
+
(d(!0), v(D, null, E(m.attachments.slice(0, 3), (Qe) => (d(), v("button", {
|
|
1847
1847
|
key: Qe.id,
|
|
1848
1848
|
type: "button",
|
|
1849
1849
|
onClick: (bn) => qe.value = Qe
|
|
@@ -1853,7 +1853,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1853
1853
|
alt: Qe.name,
|
|
1854
1854
|
loading: "lazy"
|
|
1855
1855
|
}, null, 8, Nf)
|
|
1856
|
-
], 8,
|
|
1856
|
+
], 8, Ef))), 128)),
|
|
1857
1857
|
m.attachments.length > 3 ? (d(), v("span", Rf, "+" + c(m.attachments.length - 3), 1)) : S("", !0)
|
|
1858
1858
|
])) : S("", !0),
|
|
1859
1859
|
e("small", null, [
|
|
@@ -1991,7 +1991,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
1991
1991
|
N(e("select", {
|
|
1992
1992
|
"onUpdate:modelValue": f[26] || (f[26] = (m) => G.type = m)
|
|
1993
1993
|
}, [
|
|
1994
|
-
(d(!0), v(D, null,
|
|
1994
|
+
(d(!0), v(D, null, E(i(r), (m) => (d(), v("option", {
|
|
1995
1995
|
key: m,
|
|
1996
1996
|
value: m
|
|
1997
1997
|
}, c(m), 9, Wf))), 128))
|
|
@@ -2004,7 +2004,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
2004
2004
|
N(e("select", {
|
|
2005
2005
|
"onUpdate:modelValue": f[27] || (f[27] = (m) => G.severity = m)
|
|
2006
2006
|
}, [
|
|
2007
|
-
(d(!0), v(D, null,
|
|
2007
|
+
(d(!0), v(D, null, E(i(p), (m) => (d(), v("option", {
|
|
2008
2008
|
key: m,
|
|
2009
2009
|
value: m
|
|
2010
2010
|
}, c(m), 9, Yf))), 128))
|
|
@@ -2017,7 +2017,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
2017
2017
|
N(e("select", {
|
|
2018
2018
|
"onUpdate:modelValue": f[28] || (f[28] = (m) => G.sourceSide = m)
|
|
2019
2019
|
}, [
|
|
2020
|
-
(d(!0), v(D, null,
|
|
2020
|
+
(d(!0), v(D, null, E(i(g), (m) => (d(), v("option", {
|
|
2021
2021
|
key: m,
|
|
2022
2022
|
value: m
|
|
2023
2023
|
}, c(m), 9, Xf))), 128))
|
|
@@ -2041,7 +2041,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
2041
2041
|
N(e("select", {
|
|
2042
2042
|
"onUpdate:modelValue": f[30] || (f[30] = (m) => G.ownerRole = m)
|
|
2043
2043
|
}, [
|
|
2044
|
-
(d(!0), v(D, null,
|
|
2044
|
+
(d(!0), v(D, null, E(i(h), (m) => (d(), v("option", {
|
|
2045
2045
|
key: m,
|
|
2046
2046
|
value: m
|
|
2047
2047
|
}, c(m), 9, Zf))), 128))
|
|
@@ -2073,7 +2073,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
2073
2073
|
})
|
|
2074
2074
|
}, " 添加图片 / 粘贴截图 ", 8, em),
|
|
2075
2075
|
de.value.length ? (d(), v("div", tm, [
|
|
2076
|
-
(d(!0), v(D, null,
|
|
2076
|
+
(d(!0), v(D, null, E(de.value, (m) => (d(), v("article", {
|
|
2077
2077
|
key: m.id
|
|
2078
2078
|
}, [
|
|
2079
2079
|
e("button", {
|
|
@@ -2101,7 +2101,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
2101
2101
|
]))), 128))
|
|
2102
2102
|
])) : S("", !0),
|
|
2103
2103
|
be.value.length ? (d(), v("div", am, [
|
|
2104
|
-
(d(!0), v(D, null,
|
|
2104
|
+
(d(!0), v(D, null, E(be.value, (m) => (d(), v("article", {
|
|
2105
2105
|
key: m.id,
|
|
2106
2106
|
class: A(`is-${m.status}`)
|
|
2107
2107
|
}, [
|
|
@@ -2141,7 +2141,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
2141
2141
|
!_e.value && ((W = C.value.attachments) != null && W.length) ? (d(), v("section", mm, [
|
|
2142
2142
|
f[77] || (f[77] = e("h3", null, "问题截图", -1)),
|
|
2143
2143
|
e("div", null, [
|
|
2144
|
-
(d(!0), v(D, null,
|
|
2144
|
+
(d(!0), v(D, null, E(C.value.attachments, (m) => (d(), v("button", {
|
|
2145
2145
|
key: m.id,
|
|
2146
2146
|
type: "button",
|
|
2147
2147
|
onClick: (Q) => qe.value = m
|
|
@@ -2168,7 +2168,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
2168
2168
|
N(e("select", {
|
|
2169
2169
|
"onUpdate:modelValue": f[33] || (f[33] = (m) => fe.status = m)
|
|
2170
2170
|
}, [
|
|
2171
|
-
(d(!0), v(D, null,
|
|
2171
|
+
(d(!0), v(D, null, E(i(b), (m) => (d(), v("option", {
|
|
2172
2172
|
key: m,
|
|
2173
2173
|
value: m
|
|
2174
2174
|
}, c(m), 9, bm))), 128))
|
|
@@ -2217,7 +2217,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
2217
2217
|
e("section", xm, [
|
|
2218
2218
|
f[83] || (f[83] = e("h3", null, "处理记录", -1)),
|
|
2219
2219
|
C.value.history.length ? S("", !0) : (d(), v("p", Im, "暂无状态变更记录。")),
|
|
2220
|
-
(d(!0), v(D, null,
|
|
2220
|
+
(d(!0), v(D, null, E(C.value.history, (m) => (d(), v("article", {
|
|
2221
2221
|
key: m.id
|
|
2222
2222
|
}, [
|
|
2223
2223
|
e("b", null, c(m.fromStatus) + " → " + c(m.toStatus), 1),
|
|
@@ -2253,7 +2253,7 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
2253
2253
|
]);
|
|
2254
2254
|
};
|
|
2255
2255
|
}
|
|
2256
|
-
}),
|
|
2256
|
+
}), Tm = {
|
|
2257
2257
|
prototypeStateSwitch: "切换业务状态",
|
|
2258
2258
|
annotationExpand: "展开注释面板",
|
|
2259
2259
|
annotationCollapse: "收起注释面板",
|
|
@@ -2332,12 +2332,12 @@ const Ov = { class: "bug-page" }, Bv = { class: "bug-page-head" }, jv = ["disabl
|
|
|
2332
2332
|
testCaseUnknown: "未知页面或状态"
|
|
2333
2333
|
};
|
|
2334
2334
|
function ve(t) {
|
|
2335
|
-
const n =
|
|
2335
|
+
const n = Tm[t];
|
|
2336
2336
|
if (typeof n != "string" || n.length === 0)
|
|
2337
2337
|
throw new Error(`🈶 [内核文案] 缺少中文文案:${t}`);
|
|
2338
2338
|
return n;
|
|
2339
2339
|
}
|
|
2340
|
-
function
|
|
2340
|
+
function Em(t, n, o, a = o) {
|
|
2341
2341
|
return t[n][o] ?? t.zh[o] ?? a;
|
|
2342
2342
|
}
|
|
2343
2343
|
function tt(t, n) {
|
|
@@ -2627,10 +2627,10 @@ async function Km(t, n, o) {
|
|
|
2627
2627
|
function Ar() {
|
|
2628
2628
|
return Vt("pageDescriptions");
|
|
2629
2629
|
}
|
|
2630
|
-
function
|
|
2630
|
+
function Tr(t) {
|
|
2631
2631
|
return Vt("pageDescriptions", t);
|
|
2632
2632
|
}
|
|
2633
|
-
function
|
|
2633
|
+
function Er(t, n, o) {
|
|
2634
2634
|
return Dr("pageDescriptions", o, t, n, "保存");
|
|
2635
2635
|
}
|
|
2636
2636
|
function Nr(t, n, o) {
|
|
@@ -2657,9 +2657,9 @@ function Ym() {
|
|
|
2657
2657
|
function Xm(t, n) {
|
|
2658
2658
|
return Dr("flows", { version: "1.0.0", flows: n }, "", t, "保存");
|
|
2659
2659
|
}
|
|
2660
|
-
const Qt = y([]), Bt = y(null), po = y(""), zo = y(!1), Or = y(!1),
|
|
2660
|
+
const Qt = y([]), Bt = y(null), po = y(""), zo = y(!1), Or = y(!1), En = y({ source: "local-seed", status: "idle" }), dn = js(), Nt = Ze();
|
|
2661
2661
|
function gt(t, n, o = "", a) {
|
|
2662
|
-
|
|
2662
|
+
En.value = { source: t, status: n, ...o ? { message: o } : {}, ...a ? { syncedAt: a } : {} };
|
|
2663
2663
|
}
|
|
2664
2664
|
async function Zm() {
|
|
2665
2665
|
try {
|
|
@@ -2717,10 +2717,10 @@ async function Za(t = !1) {
|
|
|
2717
2717
|
var o;
|
|
2718
2718
|
if (!zo.value || !Nt.remoteReadable || !po.value) return;
|
|
2719
2719
|
if (Ms(t, Or.value)) {
|
|
2720
|
-
gt(
|
|
2720
|
+
gt(En.value.source, "idle", "检测到未保存编辑,已暂缓轮询覆盖");
|
|
2721
2721
|
return;
|
|
2722
2722
|
}
|
|
2723
|
-
gt(
|
|
2723
|
+
gt(En.value.source, "syncing");
|
|
2724
2724
|
const n = po.value;
|
|
2725
2725
|
try {
|
|
2726
2726
|
const [a, r] = await Promise.all([Rr(), Xa(n)]);
|
|
@@ -2743,7 +2743,7 @@ async function Za(t = !1) {
|
|
|
2743
2743
|
nt("testCases", n, b, r.sha, P, "synced"), Ho(n, b), Ba(n, b.length), gt("gitee", "success", "", P);
|
|
2744
2744
|
} catch (a) {
|
|
2745
2745
|
const r = it("testCases").scopes[n];
|
|
2746
|
-
r && nt("testCases", n, r.value, r.revision, r.lastRemoteSyncAt, r.status === "pending" ? "pending" : "stale", a instanceof Error ? a.message : "测试用例同步失败"), gt(r ? "local-cache" :
|
|
2746
|
+
r && nt("testCases", n, r.value, r.revision, r.lastRemoteSyncAt, r.status === "pending" ? "pending" : "stale", a instanceof Error ? a.message : "测试用例同步失败"), gt(r ? "local-cache" : En.value.source, "error", a instanceof Error ? a.message : "测试用例同步失败");
|
|
2747
2747
|
}
|
|
2748
2748
|
}
|
|
2749
2749
|
async function tg(t, n) {
|
|
@@ -2755,7 +2755,7 @@ async function tg(t, n) {
|
|
|
2755
2755
|
const g = it("testCases").scopes[o];
|
|
2756
2756
|
return nt("testCases", o, p, (g == null ? void 0 : g.revision) ?? null, (g == null ? void 0 : g.lastRemoteSyncAt) ?? null, "pending"), Ba(o, p.length), gt("local-cache", "success", `${Nt.unavailableReason || "Gitee 当前不可写"},修改尚未同步`), !0;
|
|
2757
2757
|
}
|
|
2758
|
-
gt(
|
|
2758
|
+
gt(En.value.source, "syncing");
|
|
2759
2759
|
try {
|
|
2760
2760
|
const p = await Jm(o, a, t, (P) => Ui(co(P), t, n));
|
|
2761
2761
|
if (!p) throw new Error("测试用例写入后未能回读");
|
|
@@ -2766,7 +2766,7 @@ async function tg(t, n) {
|
|
|
2766
2766
|
return Bt.value = b.value, gt("gitee", "success", "", h), !0;
|
|
2767
2767
|
} catch (p) {
|
|
2768
2768
|
const g = p instanceof Error ? p.message : "测试用例保存失败";
|
|
2769
|
-
return gt(
|
|
2769
|
+
return gt(En.value.source, p instanceof mo ? "conflict" : "error", g), !1;
|
|
2770
2770
|
}
|
|
2771
2771
|
}
|
|
2772
2772
|
async function ng() {
|
|
@@ -2798,7 +2798,7 @@ function jr() {
|
|
|
2798
2798
|
testCaseManifest: Bt,
|
|
2799
2799
|
selectedScopeId: po,
|
|
2800
2800
|
initialized: zo,
|
|
2801
|
-
sourceState:
|
|
2801
|
+
sourceState: En,
|
|
2802
2802
|
selectedScopeCases: k(() => Qt.value.filter((t) => tt(t.screenId, t.stateId) === po.value)),
|
|
2803
2803
|
scopes: Br,
|
|
2804
2804
|
initializeTestCases: Qm,
|
|
@@ -2817,10 +2817,10 @@ const og = { class: "test-case-workbench" }, sg = { class: "test-case-toolbar" }
|
|
|
2817
2817
|
}, Ig = { class: "test-case-table-wrap" }, $g = { class: "test-case-table" }, _g = ["onClick"], Pg = { key: 0 }, Dg = ["aria-label", "onClick"], Ag = {
|
|
2818
2818
|
key: 0,
|
|
2819
2819
|
class: "test-case-empty"
|
|
2820
|
-
},
|
|
2820
|
+
}, Tg = {
|
|
2821
2821
|
key: 0,
|
|
2822
2822
|
class: "test-case-editor"
|
|
2823
|
-
},
|
|
2823
|
+
}, Eg = ["aria-label"], Ng = { class: "test-case-editor-body" }, Rg = ["value"], Og = ["onUpdate:modelValue"], Bg = ["aria-label", "disabled", "onClick"], jg = ["aria-label", "disabled", "onClick"], Ug = ["aria-label", "disabled", "onClick"], Mg = ["disabled"], Vg = /* @__PURE__ */ tn({
|
|
2824
2824
|
__name: "TestCaseWorkbench",
|
|
2825
2825
|
props: {
|
|
2826
2826
|
lang: {},
|
|
@@ -2876,7 +2876,7 @@ const og = { class: "test-case-workbench" }, sg = { class: "test-case-toolbar" }
|
|
|
2876
2876
|
moveDown: ve("testCaseMoveDown"),
|
|
2877
2877
|
removeStep: ve("testCaseRemoveStep"),
|
|
2878
2878
|
unknown: ve("testCaseUnknown")
|
|
2879
|
-
}, ke = y(""), ge = y(""), Ae = y("current"), J = y("cases"),
|
|
2879
|
+
}, ke = y(""), ge = y(""), Ae = y("current"), J = y("cases"), Te = y(!1), Re = y(""), F = lo(Ia()), Fe = y(""), he = y(""), L = y(!1), M = k(() => b(o.lang)), ye = k(() => M.value.find(($) => $.id === g.value) ?? M.value[0]), H = k(() => {
|
|
2880
2880
|
const $ = ke.value.trim().toLowerCase();
|
|
2881
2881
|
return $ ? M.value.filter((C) => `${C.screenCode} ${C.screenTitle} ${C.stateLabel}`.toLowerCase().includes($)) : M.value;
|
|
2882
2882
|
}), Ve = k(() => {
|
|
@@ -2888,7 +2888,7 @@ const og = { class: "test-case-workbench" }, sg = { class: "test-case-toolbar" }
|
|
|
2888
2888
|
}), Oe = k(() => {
|
|
2889
2889
|
const $ = Ae.value === "all" ? r.value : r.value.filter((se) => tt(se.screenId, se.stateId) === g.value), C = ge.value.trim().toLowerCase();
|
|
2890
2890
|
return C ? $.filter((se) => [se.module, se.testItem, se.testPoint, se.preconditions, se.steps.join(" "), se.expectedResult, se.actualResult].join(" ").toLowerCase().includes(C)) : $;
|
|
2891
|
-
}), ce = k(() =>
|
|
2891
|
+
}), ce = k(() => Te.value && JSON.stringify(F) !== Fe.value), fe = k(() => {
|
|
2892
2892
|
const $ = h.value.source === "gitee" ? "Gitee" : h.value.source === "local-cache" ? "本地缓存" : "JSON 种子", C = h.value.status === "syncing" ? "同步中" : h.value.status === "conflict" ? "冲突" : h.value.status === "error" ? "失败" : h.value.source === "local-cache" ? "待同步" : "已就绪";
|
|
2893
2893
|
return `${$} · ${C}`;
|
|
2894
2894
|
});
|
|
@@ -2903,7 +2903,7 @@ const og = { class: "test-case-workbench" }, sg = { class: "test-case-toolbar" }
|
|
|
2903
2903
|
}
|
|
2904
2904
|
function ze() {
|
|
2905
2905
|
var $;
|
|
2906
|
-
Re.value = "", Ie(Ia((($ = ye.value) == null ? void 0 : $.screenTitle) ?? "")),
|
|
2906
|
+
Re.value = "", Ie(Ia((($ = ye.value) == null ? void 0 : $.screenTitle) ?? "")), Te.value = !0;
|
|
2907
2907
|
}
|
|
2908
2908
|
function Z($) {
|
|
2909
2909
|
Re.value = $.id, Ie({
|
|
@@ -2914,10 +2914,10 @@ const og = { class: "test-case-workbench" }, sg = { class: "test-case-toolbar" }
|
|
|
2914
2914
|
steps: [...$.steps],
|
|
2915
2915
|
expectedResult: $.expectedResult,
|
|
2916
2916
|
actualResult: $.actualResult
|
|
2917
|
-
}),
|
|
2917
|
+
}), Te.value = !0;
|
|
2918
2918
|
}
|
|
2919
2919
|
function _e($ = !0) {
|
|
2920
|
-
$ && !Le() || (
|
|
2920
|
+
$ && !Le() || (Te.value = !1, Re.value = "", Ie(Ia()));
|
|
2921
2921
|
}
|
|
2922
2922
|
function G($, C) {
|
|
2923
2923
|
const se = $ + C;
|
|
@@ -3031,7 +3031,7 @@ const og = { class: "test-case-workbench" }, sg = { class: "test-case-toolbar" }
|
|
|
3031
3031
|
])
|
|
3032
3032
|
]),
|
|
3033
3033
|
e("div", {
|
|
3034
|
-
class: A(["test-case-grid", [{ "has-editor":
|
|
3034
|
+
class: A(["test-case-grid", [{ "has-editor": Te.value }, `mobile-${J.value}`]])
|
|
3035
3035
|
}, [
|
|
3036
3036
|
e("aside", cg, [
|
|
3037
3037
|
e("label", dg, [
|
|
@@ -3045,14 +3045,14 @@ const og = { class: "test-case-workbench" }, sg = { class: "test-case-toolbar" }
|
|
|
3045
3045
|
])
|
|
3046
3046
|
]),
|
|
3047
3047
|
e("div", vg, [
|
|
3048
|
-
(d(!0), v(D, null,
|
|
3048
|
+
(d(!0), v(D, null, E(Ve.value, (R) => (d(), v("section", {
|
|
3049
3049
|
key: R.screenId
|
|
3050
3050
|
}, [
|
|
3051
3051
|
e("div", fg, [
|
|
3052
3052
|
e("b", null, c(R.code), 1),
|
|
3053
3053
|
e("span", null, c(R.title), 1)
|
|
3054
3054
|
]),
|
|
3055
|
-
(d(!0), v(D, null,
|
|
3055
|
+
(d(!0), v(D, null, E(R.scopes, (ne) => {
|
|
3056
3056
|
var $e, It, ft;
|
|
3057
3057
|
return d(), v("button", {
|
|
3058
3058
|
key: ne.id,
|
|
@@ -3137,7 +3137,7 @@ const og = { class: "test-case-workbench" }, sg = { class: "test-case-toolbar" }
|
|
|
3137
3137
|
])
|
|
3138
3138
|
]),
|
|
3139
3139
|
e("tbody", null, [
|
|
3140
|
-
(d(!0), v(D, null,
|
|
3140
|
+
(d(!0), v(D, null, E(Oe.value, (R) => {
|
|
3141
3141
|
var ne;
|
|
3142
3142
|
return d(), v("tr", {
|
|
3143
3143
|
key: R.id,
|
|
@@ -3152,7 +3152,7 @@ const og = { class: "test-case-workbench" }, sg = { class: "test-case-toolbar" }
|
|
|
3152
3152
|
e("td", null, c(R.preconditions), 1),
|
|
3153
3153
|
e("td", null, [
|
|
3154
3154
|
e("ol", null, [
|
|
3155
|
-
(d(!0), v(D, null,
|
|
3155
|
+
(d(!0), v(D, null, E(R.steps, ($e, It) => (d(), v("li", { key: It }, c($e), 1))), 128))
|
|
3156
3156
|
])
|
|
3157
3157
|
]),
|
|
3158
3158
|
e("td", null, c(R.expectedResult), 1),
|
|
@@ -3176,7 +3176,7 @@ const og = { class: "test-case-workbench" }, sg = { class: "test-case-toolbar" }
|
|
|
3176
3176
|
]))
|
|
3177
3177
|
])
|
|
3178
3178
|
]),
|
|
3179
|
-
|
|
3179
|
+
Te.value ? (d(), v("aside", Tg, [
|
|
3180
3180
|
e("header", null, [
|
|
3181
3181
|
e("div", null, [
|
|
3182
3182
|
e("small", null, c((ut = ye.value) == null ? void 0 : ut.screenCode) + " · " + c((vt = ye.value) == null ? void 0 : vt.stateLabel), 1),
|
|
@@ -3188,7 +3188,7 @@ const og = { class: "test-case-workbench" }, sg = { class: "test-case-toolbar" }
|
|
|
3188
3188
|
onClick: C[8] || (C[8] = (R) => _e())
|
|
3189
3189
|
}, [
|
|
3190
3190
|
V(i(vn))
|
|
3191
|
-
], 8,
|
|
3191
|
+
], 8, Eg)
|
|
3192
3192
|
]),
|
|
3193
3193
|
e("div", Ng, [
|
|
3194
3194
|
e("label", null, [
|
|
@@ -3237,7 +3237,7 @@ const og = { class: "test-case-workbench" }, sg = { class: "test-case-toolbar" }
|
|
|
3237
3237
|
]),
|
|
3238
3238
|
e("fieldset", null, [
|
|
3239
3239
|
e("legend", null, c(B.steps) + " *", 1),
|
|
3240
|
-
(d(!0), v(D, null,
|
|
3240
|
+
(d(!0), v(D, null, E(F.steps, (R, ne) => (d(), v("div", {
|
|
3241
3241
|
key: ne,
|
|
3242
3242
|
class: "test-case-step"
|
|
3243
3243
|
}, [
|
|
@@ -3255,7 +3255,7 @@ const og = { class: "test-case-workbench" }, sg = { class: "test-case-toolbar" }
|
|
|
3255
3255
|
disabled: ne === 0,
|
|
3256
3256
|
onClick: ($e) => G(ne, -1)
|
|
3257
3257
|
}, [
|
|
3258
|
-
V(i(
|
|
3258
|
+
V(i(Td))
|
|
3259
3259
|
], 8, Bg),
|
|
3260
3260
|
e("button", {
|
|
3261
3261
|
type: "button",
|
|
@@ -3263,7 +3263,7 @@ const og = { class: "test-case-workbench" }, sg = { class: "test-case-toolbar" }
|
|
|
3263
3263
|
disabled: ne === F.steps.length - 1,
|
|
3264
3264
|
onClick: ($e) => G(ne, 1)
|
|
3265
3265
|
}, [
|
|
3266
|
-
V(i(
|
|
3266
|
+
V(i(Ed))
|
|
3267
3267
|
], 8, jg),
|
|
3268
3268
|
e("button", {
|
|
3269
3269
|
type: "button",
|
|
@@ -3637,13 +3637,27 @@ export const product: PrototypeProductDefinition = {
|
|
|
3637
3637
|
|
|
3638
3638
|
用户确认后再实施;纯文案、颜色或已确定样式的局部修正可直接修改。
|
|
3639
3639
|
|
|
3640
|
+
#### 6.2.1 手机画布与消费者容器边界
|
|
3641
|
+
|
|
3642
|
+
内核负责手机外框、状态栏、滚动容器和 TabBar 预留空间,消费者负责手机画布内的业务页面。实现移动端页面前必须先检查当前安装版本的内核样式,确认 \`.screen-content\` 已提供的横向、顶部和底部留白;不得在业务页面根节点机械重复同等 padding。当前默认手机预览内容区已有 \`20px\` 横向留白,实际值仍以消费者安装版本为准。
|
|
3643
|
+
|
|
3644
|
+
- 页面背景需要覆盖完整业务画布时,把背景设置在页面根节点,并确保根节点至少覆盖可用高度;不要只给内部内容块着色,形成四周或底部断层。
|
|
3645
|
+
- 需要全幅背景、全幅标题或贴边分区时,只在一个共享页面根类中统一抵消内核留白,并在交互、全图、流程和演示模式中验证;不要让每个页面分别硬编码负边距。
|
|
3646
|
+
- 需要保留画布留白时,卡片、标题和表单只增加业务层间距;先检查父级,再决定是否增加子级 padding,禁止层层叠加导致组件宽度被挤压。
|
|
3647
|
+
- 背景颜色不同的相邻区域必须选择一种清晰关系:全幅分区使用 \`--ds-rounded-none\` 并铺满边界;内嵌卡片与画布保持明确间距,并使用统一的 \`--ds-rounded-*\` 圆角。不得让异色矩形直接贴住手机边框,也不得只处理上圆角或下圆角。
|
|
3648
|
+
- 同一产品中重复出现的普通标题、返回标题、状态摘要等结构应封装为消费者公共组件;标题、返回热区、边距、圆角和深浅色变体从同一处维护。
|
|
3649
|
+
- TabBar 由内核渲染时不得在业务页面重复实现。必须按实际 Tab 数量检查等宽分栏、选中态和点击热区;项目 Tab 数量与内核当前布局不匹配时,应明确记录为内核兼容问题,不通过压缩业务内容掩盖。
|
|
3650
|
+
- 颜色、圆角、间距和阴影优先使用 \`--ds-*\` token。触控目标不小于 \`44 × 44px\`,并在 \`393 × 852\` 基准画布及至少 \`375px\` 宽度检查溢出、滚动、固定底栏和键盘遮挡。
|
|
3651
|
+
|
|
3640
3652
|
### 6.3 编写业务组件
|
|
3641
3653
|
|
|
3642
3654
|
- 页面只实现业务内容,不复制手机外框、顶部模式栏、协作面板等内核 UI。
|
|
3643
3655
|
- 页内弹窗、输入、展开、加载等使用普通 Vue 状态。
|
|
3644
3656
|
- 跨页面、Tab 和评审状态切换使用内核上下文。
|
|
3645
|
-
-
|
|
3657
|
+
- 页面组件会收到响应式 \`screen: DisplayScreen\` 属性;状态页面必须显式声明该 prop,并以 \`screen.stateId\` 渲染当前页面实例。
|
|
3646
3658
|
- 保持消费者现有组件库、尺寸体系和样式约定,不顺手重构其他页面。
|
|
3659
|
+
- 定时器、\`requestAnimationFrame\`、音频、Canvas 绘制任务和设备监听必须在重新开始前先清理,并在 \`onBeforeUnmount\` 中释放;不得假设状态切换后组件实例仍然存在。
|
|
3660
|
+
- 状态评审数据与真实业务数据分离。状态按钮用于展示空、失败、加载等评审结果时,不得写入真实缓存、最近记录、导入草稿或正式报告;真实业务动作只在明确的确认点写入。
|
|
3647
3661
|
|
|
3648
3662
|
### 6.4 注册页面
|
|
3649
3663
|
|
|
@@ -3663,17 +3677,72 @@ export const product: PrototypeProductDefinition = {
|
|
|
3663
3677
|
- \`states[screenId]\` 中的状态 ID。
|
|
3664
3678
|
- \`copy.zh\` 与 \`copy.en\` 对应 \`labelKey\`。
|
|
3665
3679
|
- \`copy.zh/en\` 只维护消费者业务文案;注释、页面描述、协作状态、数据源和测试工具等内核文案固定为中文,不得复制到消费者配置中。
|
|
3666
|
-
-
|
|
3680
|
+
- 页面组件根据传入实例的 \`screen.stateId\` 呈现该状态;不得把 \`activePrototypeStateId\` 作为页面内容的首要展示来源。
|
|
3667
3681
|
- 流程需要时引用同一 \`stateId\`。
|
|
3668
3682
|
- 状态级页面描述使用相同 scope。
|
|
3669
3683
|
|
|
3684
|
+
#### 6.5.1 \`screen.stateId\` 与 \`activePrototypeStateId\`
|
|
3685
|
+
|
|
3686
|
+
两者用途不同:
|
|
3687
|
+
|
|
3688
|
+
| 值 | 含义 | 正确用途 |
|
|
3689
|
+
| --- | --- | --- |
|
|
3690
|
+
| \`screen.stateId\` | 当前这一张 \`DisplayScreen\` 页面实例要展示的状态 | 消费者页面模板、计算属性、状态数据选择和状态级 UI |
|
|
3691
|
+
| \`activePrototypeStateId\` | 当前交互页面在内核中的活动状态 | 没有 \`screen\` prop 的外围控制、当前协作 scope 或主动状态控制 |
|
|
3692
|
+
|
|
3693
|
+
交互模式通常只渲染当前页面,因此两个值看起来可能相同;全图模式会同时为同一页面生成多张不同 \`stateId\` 的卡片,流程模式也会按节点传入各自状态。此时如果业务组件读取全局 \`activePrototypeStateId\`,多张卡片会错误地显示成同一个状态。
|
|
3694
|
+
|
|
3695
|
+
状态页面使用以下模式:
|
|
3696
|
+
|
|
3697
|
+
\`\`\`vue
|
|
3698
|
+
<script setup lang="ts">
|
|
3699
|
+
import { computed } from 'vue'
|
|
3700
|
+
import { usePrototypeContext } from '@marktowin/prototype-core'
|
|
3701
|
+
import type { DisplayScreen } from '@marktowin/prototype-core'
|
|
3702
|
+
|
|
3703
|
+
const props = defineProps<{ screen: DisplayScreen }>()
|
|
3704
|
+
const { setPrototypeState } = usePrototypeContext()
|
|
3705
|
+
|
|
3706
|
+
const stateId = computed(() => props.screen.stateId ?? 'ready')
|
|
3707
|
+
const isEmpty = computed(() => stateId.value === 'empty')
|
|
3708
|
+
|
|
3709
|
+
function showEmptyState() {
|
|
3710
|
+
setPrototypeState(props.screen.id, 'empty')
|
|
3711
|
+
}
|
|
3712
|
+
<\/script>
|
|
3713
|
+
|
|
3714
|
+
<template>
|
|
3715
|
+
<p v-if="isEmpty">暂无数据</p>
|
|
3716
|
+
<p v-else>正常内容</p>
|
|
3717
|
+
<button type="button" @click="showEmptyState">显示空状态</button>
|
|
3718
|
+
</template>
|
|
3719
|
+
\`\`\`
|
|
3720
|
+
|
|
3721
|
+
禁止以下实现:
|
|
3722
|
+
|
|
3723
|
+
- 只在 \`setup\` 初始化时执行 \`ref(props.screen.stateId === 'empty')\`,后续状态切换不会自动同步。
|
|
3724
|
+
- 仅在 \`mode === 'overview'\` 时读取 \`screen.stateId\`,导致交互模式的状态按钮只改变标签、不改变页面内容。
|
|
3725
|
+
- 页面内容优先读取 Store,只有 Store 为空时才读取状态 ID,导致“空状态”仍显示真实数据。
|
|
3726
|
+
- 为了展示评审状态而修改真实业务 Store、\`localStorage\` 或 \`sessionStorage\`。
|
|
3727
|
+
|
|
3728
|
+
当状态需要演示数据时,为各状态提供只读预览数据;非运行态的评审展示由当前页面实例的 \`screen.stateId\` 决定。真实业务流程可以通过显式的 \`runtimeDriven\`(或同义状态)暂时展示 Store 中的实时结果,但手动切换评审状态时必须退出运行态并恢复为 \`screen.stateId\` 驱动,不能让 Store 静默覆盖状态选择器。编辑、删除和确认操作必须明确区分“预览数据”与“真实草稿”。
|
|
3729
|
+
|
|
3730
|
+
#### 6.5.2 状态切换与长任务生命周期
|
|
3731
|
+
|
|
3732
|
+
内核当前使用包含 \`screen.id\` 和 \`screen.stateId\` 的 key 渲染页面实例。调用 \`setPrototypeState\` 后,消费者页面可能被卸载并重新创建;组件内的计时器、采样进度、Canvas 动画和局部 ref 不会自动延续。
|
|
3733
|
+
|
|
3734
|
+
- 纯展示状态可以直接调用 \`setPrototypeState\`。
|
|
3735
|
+
- 采集、上传、轮询、倒计时等运行中阶段,如果任务依赖组件本地计时器,不要在每个中间阶段调用 \`setPrototypeState\`;先用页内 Vue 状态推进,任务结束并清理资源后再同步终态或跳转。
|
|
3736
|
+
- 如果评审面板必须实时反映“进行中”状态,应把任务、时间基准和可恢复进度移到组件外的 Store 或独立 composable;组件重建后从外部状态恢复,而不是依赖旧实例继续运行。
|
|
3737
|
+
- 页面离开、手动切换评审状态或重新测试时,必须停止旧任务。Canvas 不可用或绘制失败时,文字状态和业务判定仍应保留。
|
|
3738
|
+
|
|
3670
3739
|
### 6.6 实现跳转
|
|
3671
3740
|
|
|
3672
3741
|
\`\`\`vue
|
|
3673
3742
|
<script setup lang="ts">
|
|
3674
3743
|
import { usePrototypeContext } from '@marktowin/prototype-core'
|
|
3675
3744
|
|
|
3676
|
-
const {
|
|
3745
|
+
const { go, goTab, setPrototypeState } = usePrototypeContext()
|
|
3677
3746
|
|
|
3678
3747
|
// go('detail'):跳转到已注册页面
|
|
3679
3748
|
// goTab('home'):按 Tab 语义切换到已注册页面
|
|
@@ -3685,6 +3754,7 @@ const { activePrototypeStateId, go, goTab, setPrototypeState } = usePrototypeCon
|
|
|
3685
3754
|
- \`go\` 与 \`goTab\` 只接收已注册 ID。
|
|
3686
3755
|
- 当前不是 Vue Router,不假设 URL、历史栈、参数、守卫或文件路由。
|
|
3687
3756
|
- 流程节点不会自动生成点击逻辑;页面事件与流程数据必须分别实现并保持一致。
|
|
3757
|
+
- \`go/goTab\` 修改当前页面,但不应被当作“自动退出全图/流程模式”的承诺。业务按钮以交互模式为主要运行环境;如果产品明确要求从其他模式触发业务跳转,应先显式切回 \`interactive\`,并回归状态面板、页面导航和业务按钮的点击层级。
|
|
3688
3758
|
|
|
3689
3759
|
### 6.7 补入流程
|
|
3690
3760
|
|
|
@@ -3720,15 +3790,18 @@ const { activePrototypeStateId, go, goTab, setPrototypeState } = usePrototypeCon
|
|
|
3720
3790
|
- 页面/状态描述已补全。
|
|
3721
3791
|
- 交互、全图、流程模式均可展示。
|
|
3722
3792
|
- 移动端/PC 尺寸、滚动、遮挡和交互已回归。
|
|
3793
|
+
- 每个状态切换后,手机内容、状态文案、按钮可用性和演示数据同步变化,而不只是状态按钮的选中样式变化。
|
|
3794
|
+
- 页面根背景铺满预期画布,未出现重复内边距、异色直角贴边、局部背景断层或 TabBar 非等宽布局。
|
|
3795
|
+
- 长任务可从开始推进到终态;状态切换、重新开始和页面离开后没有残留计时器、绘制任务或设备监听。
|
|
3723
3796
|
- 相关协作资源已按任务要求完成本地与远端验证。
|
|
3724
3797
|
|
|
3725
3798
|
## 7. 核心操作规范
|
|
3726
3799
|
|
|
3727
3800
|
### 7.1 新增或修改状态
|
|
3728
3801
|
|
|
3729
|
-
标准动作:确认状态语义 → 注册 ID → 补双语标签 →
|
|
3802
|
+
标准动作:确认状态语义 → 注册 ID → 补双语标签 → 使用 \`screen.stateId\` 实现响应式展示 → 隔离预览与真实数据 → 更新跳转/流程 → 补状态描述 → 回归连续切换和组件重建。
|
|
3730
3803
|
|
|
3731
|
-
禁止:只在组件中写字符串状态、只改 UI 不注册、复用含义不同的旧状态 ID
|
|
3804
|
+
禁止:只在组件中写字符串状态、只改 UI 不注册、复用含义不同的旧状态 ID、只改变状态按钮选中态而不改变页面内容、用评审状态覆盖真实业务缓存。
|
|
3732
3805
|
|
|
3733
3806
|
### 7.2 删除页面或状态
|
|
3734
3807
|
|
|
@@ -3998,11 +4071,13 @@ const runtimeConfig: PrototypeRuntimeConfig = {
|
|
|
3998
4071
|
|
|
3999
4072
|
### 11.3 运行时回归
|
|
4000
4073
|
|
|
4001
|
-
- 交互模式:点击、输入、弹窗、跳转、Tab
|
|
4002
|
-
-
|
|
4003
|
-
-
|
|
4074
|
+
- 交互模式:点击、输入、弹窗、跳转、Tab、状态切换;逐个状态确认页面内容确实变化,不能只看状态按钮是否选中。
|
|
4075
|
+
- 全图模式:所有页面和状态可见,每张卡片按自身 \`screen.stateId\` 独立渲染,缩放与布局正常。
|
|
4076
|
+
- 流程模式:节点、顺序、分支与页面实现一致;同一页面的不同流程状态不得显示成同一内容。
|
|
4004
4077
|
- 批注模式:任意位置可落点,交互组件不会抢占标注点击。
|
|
4005
4078
|
- 演示模式:移动端保持基准比例整体缩放。
|
|
4079
|
+
- 动态任务:采集、上传、轮询、倒计时和 Canvas 动画能完整到达终态;重新开始、切换状态和离开页面后旧任务停止。
|
|
4080
|
+
- 移动端视觉:在基准画布和窄屏检查根背景、有效内容宽度、滚动、键盘、固定底栏、圆角过渡和触控热区;展开的内核面板不得遮挡状态按钮或页面导航。
|
|
4006
4081
|
- 协作工具:注释、页面描述、测试用例和流程的读、写、冲突、失败降级和轮询行为符合预期。
|
|
4007
4082
|
|
|
4008
4083
|
### 11.4 远端精确验证
|
|
@@ -4041,7 +4116,10 @@ Git 状态:未提交 / 已提交 / 已推送
|
|
|
4041
4116
|
- [ ] 页面清单、状态清单和流程清单来自真实需求。
|
|
4042
4117
|
- [ ] 每个页面有唯一 ID、正确端型和组件注册。
|
|
4043
4118
|
- [ ] 页面状态、双语文案、流程节点和跳转调用完全一致。
|
|
4119
|
+
- [ ] 状态页面以响应式 \`screen.stateId\` 渲染;全图和流程中的同页多状态可以同时显示不同内容。
|
|
4044
4120
|
- [ ] 页面 UI 方案已确认,页内与跨页交互均实现。
|
|
4121
|
+
- [ ] 页面根背景、有效内容宽度、内边距、圆角和 TabBar 分栏已在基准画布及窄屏验证。
|
|
4122
|
+
- [ ] 状态预览不污染真实缓存;长任务在组件重建、重新开始和页面离开后可以正确继续或清理。
|
|
4045
4123
|
- [ ] 页面/状态描述与真实实现一致。
|
|
4046
4124
|
- [ ] 测试用例按页面/状态 scope 维护,远端真值和整体导出范围已核对。
|
|
4047
4125
|
- [ ] 本地种子、缓存和 Gitee 真值的状态已区分报告。
|
|
@@ -4058,7 +4136,7 @@ Git 状态:未提交 / 已提交 / 已推送
|
|
|
4058
4136
|
__name: "PrototypeCoreHelpPage",
|
|
4059
4137
|
emits: ["close"],
|
|
4060
4138
|
setup(t) {
|
|
4061
|
-
const n = y("idle"), o = "1.2.
|
|
4139
|
+
const n = y("idle"), o = "1.2.12";
|
|
4062
4140
|
let a;
|
|
4063
4141
|
function r() {
|
|
4064
4142
|
const g = document.createElement("textarea");
|
|
@@ -4130,7 +4208,7 @@ Git 状态:未提交 / 已提交 / 已推送
|
|
|
4130
4208
|
__name: "PrototypeCoreThemeGuidePage",
|
|
4131
4209
|
emits: ["close"],
|
|
4132
4210
|
setup(t) {
|
|
4133
|
-
const n = y("idle"), o = "1.2.
|
|
4211
|
+
const n = y("idle"), o = "1.2.12";
|
|
4134
4212
|
let a;
|
|
4135
4213
|
function r() {
|
|
4136
4214
|
const g = document.createElement("textarea");
|
|
@@ -4405,7 +4483,7 @@ const ch = Wt({
|
|
|
4405
4483
|
Object.entries(Vr).forEach(([t, n]) => {
|
|
4406
4484
|
n.length && (Qa[t] = n[0].id);
|
|
4407
4485
|
});
|
|
4408
|
-
const vh = y("annotations"), nn = y($r), pn = y("idle"), fn = y($r ? "云端协作已启用" : "本地兜底模式"), xt = y(""), uo = y(qr),
|
|
4486
|
+
const vh = y("annotations"), nn = y($r), pn = y("idle"), fn = y($r ? "云端协作已启用" : "本地兜底模式"), xt = y(""), uo = y(qr), Ts = y(String(qr)), Es = y(""), fh = y(!1), mh = y(!0), Ls = y(!1), Fs = y(""), Zo = y(null), el = y(""), qo = y("view"), An = y({ featureName: "", featureDescription: "", specialNote: "", color: Ot.ocean }), ie = y([]), mn = y(null), Xe = y([]), ht = y(null), jn = y("local-seed"), nu = y(!1), Ut = y({
|
|
4409
4487
|
gitee: {},
|
|
4410
4488
|
"local-cache": {},
|
|
4411
4489
|
"local-seed": {}
|
|
@@ -4426,7 +4504,7 @@ const vh = y("annotations"), nn = y($r), pn = y("idle"), fn = y($r ? "云端协
|
|
|
4426
4504
|
pageDescriptions: { source: "local-seed", status: "idle" },
|
|
4427
4505
|
testCases: { source: "local-seed", status: "idle" },
|
|
4428
4506
|
flows: { source: "local-seed", status: "idle" }
|
|
4429
|
-
}), cn = y("idle"), at = y({ current: 0, total: 0, label: "" }),
|
|
4507
|
+
}), cn = y("idle"), at = y({ current: 0, total: 0, label: "" }), Tn = y(""), gh = y(!1), su = k(() => nn.value && Pe.remoteWritable), hh = y(1), yh = y(3), Wo = y(null), Bn = Mr;
|
|
4430
4508
|
function jt() {
|
|
4431
4509
|
return typeof window > "u" ? null : window.localStorage;
|
|
4432
4510
|
}
|
|
@@ -4453,7 +4531,7 @@ const bh = k(() => {
|
|
|
4453
4531
|
return t[t.length - 1] ?? "";
|
|
4454
4532
|
}), Sh = k(() => {
|
|
4455
4533
|
if (cn.value === "running") return `正在初始化 Gitee · ${at.value.current} / ${at.value.total}`;
|
|
4456
|
-
if (
|
|
4534
|
+
if (Tn.value) return Tn.value;
|
|
4457
4535
|
if (!Pe.remoteWritable) return Pe.unavailableReason;
|
|
4458
4536
|
if (iu.value === "conflict") return "远端已更新,请处理本地草稿";
|
|
4459
4537
|
const t = Object.values(Ne.value).find((n) => n.status === "error");
|
|
@@ -4469,7 +4547,7 @@ function nl(t, n, o, a, r) {
|
|
|
4469
4547
|
var g, h, b;
|
|
4470
4548
|
if (!o || !n) return;
|
|
4471
4549
|
const p = t === "flows" ? (g = Xt("flows")) == null ? void 0 : g.revision : t === "annotations" ? (h = it("annotations").scopes[r ?? ""]) == null ? void 0 : h.revision : (b = it("pageDescriptions").scopes[r ?? ""]) == null ? void 0 : b.revision;
|
|
4472
|
-
p && p !== n && (
|
|
4550
|
+
p && p !== n && (Es.value = `检测到远端${a}更新,已同步到当前页面`);
|
|
4473
4551
|
}
|
|
4474
4552
|
function ol(t, n) {
|
|
4475
4553
|
re(t, Ne.value[t].source, "conflict", n), pn.value = "error", fn.value = n;
|
|
@@ -4478,7 +4556,7 @@ function kh(t, n) {
|
|
|
4478
4556
|
Jo.value = { ...Jo.value, [t]: n };
|
|
4479
4557
|
}
|
|
4480
4558
|
function ru(t, n = t) {
|
|
4481
|
-
return
|
|
4559
|
+
return Em(rh, tu.value, t, n);
|
|
4482
4560
|
}
|
|
4483
4561
|
function Yo(t) {
|
|
4484
4562
|
return /^#[0-9a-fA-F]{6}$/.test(t);
|
|
@@ -4555,10 +4633,10 @@ function Dh(t, n) {
|
|
|
4555
4633
|
function Ah(t, n) {
|
|
4556
4634
|
n.trim() && (De.value = { ...De.value, radius: { ...De.value.radius, [t]: n.trim() } }, St.value = "custom");
|
|
4557
4635
|
}
|
|
4558
|
-
function
|
|
4636
|
+
function Th() {
|
|
4559
4637
|
De.value = Wt(), St.value = "default";
|
|
4560
4638
|
}
|
|
4561
|
-
function
|
|
4639
|
+
function Eh(t) {
|
|
4562
4640
|
var n;
|
|
4563
4641
|
return ((n = Yr[t.nameKey]) == null ? void 0 : n.name) ?? t.nameKey;
|
|
4564
4642
|
}
|
|
@@ -4672,7 +4750,7 @@ const Fa = k(() => ie.value.filter((t) => j(t.screenId, t.stateId) === en())), i
|
|
|
4672
4750
|
function Ga(t) {
|
|
4673
4751
|
return Object.fromEntries(t.map((n) => [j(n.screenId, n.stateId), n]));
|
|
4674
4752
|
}
|
|
4675
|
-
function
|
|
4753
|
+
function Et(t, n, o) {
|
|
4676
4754
|
const a = { ...Ut.value[t] };
|
|
4677
4755
|
o ? a[n] = o : delete a[n], Ut.value = { ...Ut.value, [t]: a };
|
|
4678
4756
|
}
|
|
@@ -4789,7 +4867,7 @@ async function Yh() {
|
|
|
4789
4867
|
const t = (Re = jt()) == null ? void 0 : Re.getItem(Xr);
|
|
4790
4868
|
t && (xt.value = t);
|
|
4791
4869
|
const n = (F = jt()) == null ? void 0 : F.getItem(Zr), o = n == null ? Number.NaN : Number(n);
|
|
4792
|
-
Number.isFinite(o) && (uo.value = Math.min(eu, Math.max(Qr, o)),
|
|
4870
|
+
Number.isFinite(o) && (uo.value = Math.min(eu, Math.max(Qr, o)), Ts.value = String(uo.value));
|
|
4793
4871
|
try {
|
|
4794
4872
|
const M = JSON.parse(((Fe = jt()) == null ? void 0 : Fe.getItem(ja)) ?? "null");
|
|
4795
4873
|
(M != null && M.colors || M != null && M.designColors || M != null && M.typography || M != null && M.radius || M != null && M.spacing || M != null && M.shadow) && (De.value = uu(M), St.value = M.selectedThemeId ?? St.value);
|
|
@@ -4818,12 +4896,12 @@ async function Yh() {
|
|
|
4818
4896
|
M[j(ye.screenId, ye.stateId)] = { value: ye, revision: null, cachedAt: (/* @__PURE__ */ new Date()).toISOString(), lastRemoteSyncAt: null, status: "stale" };
|
|
4819
4897
|
}), Ri("pageDescriptions", M);
|
|
4820
4898
|
}
|
|
4821
|
-
const P = it("annotations"), oe = it("pageDescriptions"), xe = Object.values(P.scopes).flatMap((M) => M.value), pe = Object.values(oe.scopes).map((M) => M.value), ue = new Set(Object.keys(P.scopes)), ae = new Set(Object.keys(oe.scopes)), B = [...g.annotations.filter((M) => !ue.has(j(M.screenId, M.stateId))), ...xe], ke = [...g.pageDescriptions.filter((M) => !ae.has(j(M.screenId, M.stateId))), ...pe], ge = ar("flows"), Ae = ue.size ? { value: B, source: "local-cache" } : { value: g.annotations, source: "local-seed" }, J = ae.size ? { value: ke, source: "local-cache" } : { value: g.pageDescriptions, source: "local-seed" },
|
|
4899
|
+
const P = it("annotations"), oe = it("pageDescriptions"), xe = Object.values(P.scopes).flatMap((M) => M.value), pe = Object.values(oe.scopes).map((M) => M.value), ue = new Set(Object.keys(P.scopes)), ae = new Set(Object.keys(oe.scopes)), B = [...g.annotations.filter((M) => !ue.has(j(M.screenId, M.stateId))), ...xe], ke = [...g.pageDescriptions.filter((M) => !ae.has(j(M.screenId, M.stateId))), ...pe], ge = ar("flows"), Ae = ue.size ? { value: B, source: "local-cache" } : { value: g.annotations, source: "local-seed" }, J = ae.size ? { value: ke, source: "local-cache" } : { value: g.pageDescriptions, source: "local-seed" }, Te = rv(ge, g.flows);
|
|
4822
4900
|
ie.value = Ae.value, Xe.value = J.value, Ut.value = {
|
|
4823
4901
|
gitee: {},
|
|
4824
4902
|
"local-cache": Ga(pe),
|
|
4825
4903
|
"local-seed": Ga(g.pageDescriptions)
|
|
4826
|
-
}, jn.value = Ut.value["local-cache"][en()] ? "local-cache" : "local-seed", et.value =
|
|
4904
|
+
}, jn.value = Ut.value["local-cache"][en()] ? "local-cache" : "local-seed", et.value = Te.value, re("annotations", Ae.source, "idle"), re("pageDescriptions", J.source, "idle"), re("flows", Te.source, "idle"), Lt.value = ((L = et.value[0]) == null ? void 0 : L.id) ?? "", nn.value ? await Bs(!1) : fn.value = Pe.unavailableReason, Un(), ou.value = !0;
|
|
4827
4905
|
}
|
|
4828
4906
|
Ye([De, St], () => {
|
|
4829
4907
|
var t;
|
|
@@ -4876,19 +4954,19 @@ async function Xh(t, n = Qo(t, wt.value), o = !1) {
|
|
|
4876
4954
|
return nt("annotations", r, p, a.sha, h, "synced"), ie.value = g, Gs(t, n, p.length), re("annotations", "gitee", "success", a.legacy ? "已读取主分支旧目录" : "", h), !0;
|
|
4877
4955
|
}
|
|
4878
4956
|
async function Zh(t = !1) {
|
|
4879
|
-
const n = pt.value, o = wt.value, a = j(n, o), r = await
|
|
4957
|
+
const n = pt.value, o = wt.value, a = j(n, o), r = await Tr(j(n, o));
|
|
4880
4958
|
if (!r) return !1;
|
|
4881
4959
|
nl("pageDescriptions", r.sha, t, "页面描述", a);
|
|
4882
4960
|
const p = Nn([{ ...r.value, screenId: n, stateId: o }])[0];
|
|
4883
4961
|
if (!p) return;
|
|
4884
4962
|
const g = (/* @__PURE__ */ new Date()).toISOString();
|
|
4885
|
-
|
|
4963
|
+
Et("gitee", a, p);
|
|
4886
4964
|
const h = it("pageDescriptions").scopes[a];
|
|
4887
4965
|
if ((h == null ? void 0 : h.status) === "pending")
|
|
4888
4966
|
re("pageDescriptions", "local-cache", "idle", "已读取 Gitee,本地缓存仍有待推送修改", g);
|
|
4889
4967
|
else {
|
|
4890
4968
|
const b = [...Xe.value.filter((P) => j(P.screenId, P.stateId) !== a), p];
|
|
4891
|
-
nt("pageDescriptions", a, p, r.sha, g, "synced"),
|
|
4969
|
+
nt("pageDescriptions", a, p, r.sha, g, "synced"), Et("local-cache", a, p), Xe.value = b, zs(n, o, 1, p.highlighted, p.highlightColor), nu.value || (jn.value = "gitee"), re("pageDescriptions", "gitee", "success", r.legacy ? "已读取主分支旧目录" : "", g);
|
|
4892
4970
|
}
|
|
4893
4971
|
return a === en() && Un(), !0;
|
|
4894
4972
|
}
|
|
@@ -4929,9 +5007,9 @@ async function ul(t = !1) {
|
|
|
4929
5007
|
ht.value = (o == null ? void 0 : o.value) ?? ht.value;
|
|
4930
5008
|
const a = await Zh(t), r = en();
|
|
4931
5009
|
if (!a && !((n = o == null ? void 0 : o.value.scopes) != null && n[r])) {
|
|
4932
|
-
|
|
5010
|
+
Et("gitee", r, null);
|
|
4933
5011
|
const p = it("pageDescriptions").scopes[r];
|
|
4934
|
-
(p == null ? void 0 : p.status) === "pending" ? re("pageDescriptions", "local-cache", "idle", "Gitee 当前 Scope 不存在,本地缓存待推送") : (Ha("pageDescriptions", r),
|
|
5012
|
+
(p == null ? void 0 : p.status) === "pending" ? re("pageDescriptions", "local-cache", "idle", "Gitee 当前 Scope 不存在,本地缓存待推送") : (Ha("pageDescriptions", r), Et("local-cache", r, null), Xe.value = Xe.value.filter((g) => j(g.screenId, g.stateId) !== r), re("pageDescriptions", "gitee", "success", "", (/* @__PURE__ */ new Date()).toISOString())), Un();
|
|
4935
5013
|
} else if (!a) throw new Error("Gitee 当前页面描述不存在");
|
|
4936
5014
|
pn.value = "success", fn.value = Ne.value.pageDescriptions.source === "local-cache" ? "已读取 Gitee,本地缓存待推送" : "页面说明已同步";
|
|
4937
5015
|
} catch (o) {
|
|
@@ -4987,14 +5065,14 @@ function Fi(t) {
|
|
|
4987
5065
|
async function qh() {
|
|
4988
5066
|
if (!Pe.remoteWritable || cn.value === "running") return;
|
|
4989
5067
|
const t = xt.value.trim() || "初始化工具";
|
|
4990
|
-
cn.value = "running",
|
|
5068
|
+
cn.value = "running", Tn.value = "", at.value = { current: 0, total: 1, label: "检查初始化状态" };
|
|
4991
5069
|
try {
|
|
4992
5070
|
if (await Fm()) {
|
|
4993
|
-
cn.value = "success", at.value = { current: 1, total: 1, label: "远端已初始化" },
|
|
5071
|
+
cn.value = "success", at.value = { current: 1, total: 1, label: "远端已初始化" }, Tn.value = "远端已初始化:未逐文件检查,未产生重复提交", await Bs(!1);
|
|
4994
5072
|
return;
|
|
4995
5073
|
}
|
|
4996
5074
|
} catch (r) {
|
|
4997
|
-
cn.value = "partial", at.value = { current: 1, total: 1, label: "初始化状态检查失败" },
|
|
5075
|
+
cn.value = "partial", at.value = { current: 1, total: 1, label: "初始化状态检查失败" }, Tn.value = r instanceof Error ? r.message : "无法检查 Gitee 初始化状态", console.error("❌ [Gitee 初始化] 初始化状态检查失败", { error: r });
|
|
4998
5076
|
return;
|
|
4999
5077
|
}
|
|
5000
5078
|
const n = [], o = /* @__PURE__ */ new Map();
|
|
@@ -5022,7 +5100,7 @@ async function qh() {
|
|
|
5022
5100
|
} catch (r) {
|
|
5023
5101
|
a.failed += 1, console.error("❌ [Gitee 初始化] 完成标记写入失败", { error: r });
|
|
5024
5102
|
}
|
|
5025
|
-
at.value = { ...at.value, current: at.value.current + 1 }, cn.value = a.failed ? "partial" : "success",
|
|
5103
|
+
at.value = { ...at.value, current: at.value.current + 1 }, cn.value = a.failed ? "partial" : "success", Tn.value = a.failed ? `初始化部分完成:新建 ${a.created},跳过 ${a.unchanged + a.protected},失败 ${a.failed}` : a.created ? `初始化成功:新建 ${a.created},跳过 ${a.unchanged + a.protected}` : `远端已初始化:未重复创建,检查 ${a.unchanged + a.protected}`, await Bs(!1);
|
|
5026
5104
|
}
|
|
5027
5105
|
function Qh() {
|
|
5028
5106
|
Ls.value = !0, Zo.value = null;
|
|
@@ -5167,21 +5245,21 @@ function cl() {
|
|
|
5167
5245
|
}
|
|
5168
5246
|
function dl() {
|
|
5169
5247
|
const t = cl(), n = j(t.screenId, t.stateId), o = it("pageDescriptions").scopes[n];
|
|
5170
|
-
return nt("pageDescriptions", n, t, (o == null ? void 0 : o.revision) ?? null, (o == null ? void 0 : o.lastRemoteSyncAt) ?? null, "pending"),
|
|
5248
|
+
return nt("pageDescriptions", n, t, (o == null ? void 0 : o.revision) ?? null, (o == null ? void 0 : o.lastRemoteSyncAt) ?? null, "pending"), Et("local-cache", n, t), Xe.value = [...Xe.value.filter((a) => j(a.screenId, a.stateId) !== n), t], zs(t.screenId, t.stateId, 1, t.highlighted, t.highlightColor), re("pageDescriptions", "local-cache", "success", "页面描述已保存到本地缓存,尚未推送 Gitee"), !0;
|
|
5171
5249
|
}
|
|
5172
5250
|
async function Su(t) {
|
|
5173
5251
|
if (!Pe.remoteWritable)
|
|
5174
5252
|
return re("pageDescriptions", jn.value, "error", Pe.unavailableReason || "Gitee 当前不可写"), !1;
|
|
5175
5253
|
const n = j(t.screenId, t.stateId);
|
|
5176
5254
|
try {
|
|
5177
|
-
const o = await
|
|
5255
|
+
const o = await Er(n, t.authorName ?? "未署名", t);
|
|
5178
5256
|
if (!o || (zs(t.screenId, t.stateId, 1, t.highlighted, t.highlightColor), !ht.value)) return !1;
|
|
5179
5257
|
const a = await Nr(ht.value, t.authorName ?? "未署名", n);
|
|
5180
5258
|
if (!a) throw new Error(`页面描述 ${n} 已写入,但 manifest 回读失败`);
|
|
5181
5259
|
const r = Nn([{ ...o.value, screenId: t.screenId, stateId: t.stateId }])[0];
|
|
5182
5260
|
if (!r) throw new Error(`页面描述 ${n} 回读内容无效`);
|
|
5183
5261
|
const p = (/* @__PURE__ */ new Date()).toISOString();
|
|
5184
|
-
return nt("pageDescriptions", n, r, o.sha, p, "synced"),
|
|
5262
|
+
return nt("pageDescriptions", n, r, o.sha, p, "synced"), Et("gitee", n, r), Et("local-cache", n, r), Xe.value = [...Xe.value.filter((g) => j(g.screenId, g.stateId) !== n), r], ht.value = a.value, re("pageDescriptions", "gitee", "success", "", p), !0;
|
|
5185
5263
|
} catch (o) {
|
|
5186
5264
|
const a = o instanceof Error ? o.message : "页面描述保存失败";
|
|
5187
5265
|
return o instanceof mo ? ol("pageDescriptions", a) : re("pageDescriptions", Ne.value.pageDescriptions.source, "error", a), !1;
|
|
@@ -5221,18 +5299,18 @@ async function Cu(t = {}) {
|
|
|
5221
5299
|
for (const ue of p) {
|
|
5222
5300
|
const ae = j(ue.screenId, ue.stateId), B = ((pe = ue.authorName) == null ? void 0 : pe.trim()) || xt.value.trim() || "AI";
|
|
5223
5301
|
try {
|
|
5224
|
-
const ke = await
|
|
5302
|
+
const ke = await Tr(ae), ge = ke ? Nn([{ ...ke.value, screenId: ue.screenId, stateId: ue.stateId }])[0] : void 0;
|
|
5225
5303
|
if (ke && ge && nr(ge, ue)) {
|
|
5226
5304
|
const F = (/* @__PURE__ */ new Date()).toISOString();
|
|
5227
|
-
nt("pageDescriptions", ae, ge, ke.sha, F, "synced"),
|
|
5305
|
+
nt("pageDescriptions", ae, ge, ke.sha, F, "synced"), Et("gitee", ae, ge), Et("local-cache", ae, ge), Xe.value = [...Xe.value.filter((Fe) => j(Fe.screenId, Fe.stateId) !== ae), ge], b.push(ae);
|
|
5228
5306
|
continue;
|
|
5229
5307
|
}
|
|
5230
|
-
const Ae = await
|
|
5308
|
+
const Ae = await Er(ae, B, ue);
|
|
5231
5309
|
if (!Ae) throw new Error(`页面描述 ${ae} 写入后未能回读`);
|
|
5232
5310
|
const J = Nn([{ ...Ae.value, screenId: ue.screenId, stateId: ue.stateId }])[0];
|
|
5233
5311
|
if (!J) throw new Error(`页面描述 ${ae} 回读内容无效`);
|
|
5234
|
-
const
|
|
5235
|
-
if (nt("pageDescriptions", ae, J, Ae.sha,
|
|
5312
|
+
const Te = (/* @__PURE__ */ new Date()).toISOString();
|
|
5313
|
+
if (nt("pageDescriptions", ae, J, Ae.sha, Te, "synced"), Et("gitee", ae, J), Et("local-cache", ae, J), Xe.value = [...Xe.value.filter((F) => j(F.screenId, F.stateId) !== ae), J], zs(J.screenId, J.stateId, 1, J.highlighted, J.highlightColor), !ht.value) throw new Error("页面描述索引未初始化");
|
|
5236
5314
|
const Re = await Nr(ht.value, B, ae);
|
|
5237
5315
|
if (!Re) throw new Error(`页面描述 ${ae} 已写入,但 manifest 回读失败`);
|
|
5238
5316
|
ht.value = Re.value, h.push(ae);
|
|
@@ -5254,12 +5332,12 @@ function py() {
|
|
|
5254
5332
|
}
|
|
5255
5333
|
function vy() {
|
|
5256
5334
|
var n;
|
|
5257
|
-
const t = Number(
|
|
5335
|
+
const t = Number(Ts.value);
|
|
5258
5336
|
if (!Number.isFinite(t)) {
|
|
5259
|
-
|
|
5337
|
+
Es.value = "请输入数字";
|
|
5260
5338
|
return;
|
|
5261
5339
|
}
|
|
5262
|
-
uo.value = Math.min(eu, Math.max(Qr, t)),
|
|
5340
|
+
uo.value = Math.min(eu, Math.max(Qr, t)), Ts.value = String(uo.value), (n = jt()) == null || n.setItem(Zr, String(uo.value)), Es.value = "已保存同步间隔";
|
|
5263
5341
|
}
|
|
5264
5342
|
const fy = k(() => ({
|
|
5265
5343
|
"--flow-zoom": String(dt.value)
|
|
@@ -5367,12 +5445,12 @@ async function Ay(t) {
|
|
|
5367
5445
|
return r instanceof mo ? ol("flows", p) : re("flows", Ne.value.flows.source, "error", p), !1;
|
|
5368
5446
|
}
|
|
5369
5447
|
}
|
|
5370
|
-
function
|
|
5448
|
+
function Ty(t = et.value) {
|
|
5371
5449
|
const n = new Blob([JSON.stringify({ version: "1.0.0", flows: t }, null, 2)], { type: "application/json;charset=utf-8" }), o = document.createElement("a");
|
|
5372
5450
|
o.href = URL.createObjectURL(n), o.download = "flows.json", o.click(), URL.revokeObjectURL(o.href);
|
|
5373
5451
|
}
|
|
5374
|
-
function
|
|
5375
|
-
return { saveFlowsToSession: $u, pushFlowsToGitee: Ay, exportFlows:
|
|
5452
|
+
function Ey() {
|
|
5453
|
+
return { saveFlowsToSession: $u, pushFlowsToGitee: Ay, exportFlows: Ty };
|
|
5376
5454
|
}
|
|
5377
5455
|
function Ny() {
|
|
5378
5456
|
const t = {
|
|
@@ -5400,8 +5478,8 @@ function Ny() {
|
|
|
5400
5478
|
annotationSyncLabel: fn,
|
|
5401
5479
|
annotationAuthorName: xt,
|
|
5402
5480
|
annotationPollingIntervalSeconds: uo,
|
|
5403
|
-
annotationPollingIntervalInput:
|
|
5404
|
-
annotationPollingNotice:
|
|
5481
|
+
annotationPollingIntervalInput: Ts,
|
|
5482
|
+
annotationPollingNotice: Es,
|
|
5405
5483
|
collaborationInitialized: ou,
|
|
5406
5484
|
collaborationContext: Pe,
|
|
5407
5485
|
collaborationSources: Ne,
|
|
@@ -5411,7 +5489,7 @@ function Ny() {
|
|
|
5411
5489
|
collaborationLastSyncedAt: wh,
|
|
5412
5490
|
collaborationBootstrapStatus: cn,
|
|
5413
5491
|
collaborationBootstrapProgress: at,
|
|
5414
|
-
collaborationBootstrapMessage:
|
|
5492
|
+
collaborationBootstrapMessage: Tn,
|
|
5415
5493
|
canInitializeRemote: Ch,
|
|
5416
5494
|
annotationPanelCollapsed: fh,
|
|
5417
5495
|
annotationPointsVisible: mh,
|
|
@@ -5430,7 +5508,7 @@ function Ny() {
|
|
|
5430
5508
|
activeDesignColors: xh,
|
|
5431
5509
|
themeOptions: cu,
|
|
5432
5510
|
themeStyle: Ih,
|
|
5433
|
-
themeLabel:
|
|
5511
|
+
themeLabel: Eh,
|
|
5434
5512
|
themeDescription: Nh,
|
|
5435
5513
|
screens: Bn,
|
|
5436
5514
|
mainFlows: et,
|
|
@@ -5465,7 +5543,7 @@ function Ny() {
|
|
|
5465
5543
|
updateCustomThemeDesignColor: Ph,
|
|
5466
5544
|
updateCustomThemeTypography: Dh,
|
|
5467
5545
|
updateCustomThemeRadius: Ah,
|
|
5468
|
-
resetCustomTheme:
|
|
5546
|
+
resetCustomTheme: Th,
|
|
5469
5547
|
exportCustomTheme: Rh,
|
|
5470
5548
|
importCustomTheme: Oh,
|
|
5471
5549
|
setPrototypeState: La,
|
|
@@ -5586,7 +5664,7 @@ const Ry = {
|
|
|
5586
5664
|
}, _b = {
|
|
5587
5665
|
key: 1,
|
|
5588
5666
|
class: "apple-side-nav overview-side-nav"
|
|
5589
|
-
}, Pb = { class: "px-2 pb-4" }, Db = { class: "flex items-center gap-3" }, Ab = { class: "min-w-5 text-center text-xs font-semibold text-ink" },
|
|
5667
|
+
}, Pb = { class: "px-2 pb-4" }, Db = { class: "flex items-center gap-3" }, Ab = { class: "min-w-5 text-center text-xs font-semibold text-ink" }, Tb = { class: "px-2" }, Eb = { class: "flex items-center gap-2" }, Nb = { class: "min-w-10 text-center text-xs font-semibold text-ink" }, Rb = {
|
|
5590
5668
|
key: 2,
|
|
5591
5669
|
class: "apple-side-nav flow-side-nav lg:w-80"
|
|
5592
5670
|
}, Ob = { class: "flex items-center justify-between px-2 pb-3" }, Bb = ["onClick"], jb = { class: "min-w-0 flex-1 text-left" }, Ub = {
|
|
@@ -5644,7 +5722,7 @@ const Ry = {
|
|
|
5644
5722
|
}, _1 = { class: "page-description-editor-source-row" }, P1 = {
|
|
5645
5723
|
class: "page-description-source-switcher",
|
|
5646
5724
|
"aria-label": "切换编辑数据源"
|
|
5647
|
-
}, D1 = ["aria-pressed", "onClick"], A1 = ["disabled"],
|
|
5725
|
+
}, D1 = ["aria-pressed", "onClick"], A1 = ["disabled"], T1 = { class: "page-description-highlight-field" }, E1 = {
|
|
5648
5726
|
key: 0,
|
|
5649
5727
|
class: "page-description-highlight-colors"
|
|
5650
5728
|
}, N1 = { class: "page-description-highlight-swatches" }, R1 = ["aria-label", "title", "onClick"], O1 = { class: "page-description-custom-color" }, B1 = ["onKeydown"], j1 = { key: 0 }, U1 = ["placeholder"], M1 = ["placeholder"], V1 = ["placeholder"], L1 = ["placeholder"], F1 = ["placeholder"], G1 = {
|
|
@@ -5670,7 +5748,7 @@ const Ry = {
|
|
|
5670
5748
|
role: "dialog",
|
|
5671
5749
|
"aria-modal": "true",
|
|
5672
5750
|
"aria-label": "原型健康检查"
|
|
5673
|
-
}, _w = { class: "prototype-health-head" }, Pw = { class: "prototype-health-tabs" }, Dw = { class: "prototype-health-stat-grid" }, Aw = { class: "prototype-health-section" },
|
|
5751
|
+
}, _w = { class: "prototype-health-head" }, Pw = { class: "prototype-health-tabs" }, Dw = { class: "prototype-health-stat-grid" }, Aw = { class: "prototype-health-section" }, Tw = { class: "prototype-health-section-head" }, Ew = { class: "prototype-health-issues" }, Nw = {
|
|
5674
5752
|
key: 1,
|
|
5675
5753
|
class: "prototype-health-section prototype-health-matrix-section"
|
|
5676
5754
|
}, Rw = { class: "prototype-health-table-wrap" }, Ow = { class: "prototype-health-table" }, Bw = { class: "w-full max-w-xl rounded-[24px] border border-line bg-panel p-5 text-left shadow-[0_24px_70px_rgb(0_0_0/0.18)]" }, jw = { class: "flex items-start justify-between gap-4" }, Uw = { class: "mt-1 text-xs text-muted" }, Mw = { class: "mt-4 max-h-[60vh] space-y-3 overflow-y-auto pr-1" }, Vw = ["onClick"], Lw = { class: "flex items-center justify-between gap-3" }, Fw = { class: "text-sm font-semibold text-ink" }, Gw = { class: "flex shrink-0 items-center gap-2" }, zw = { class: "rounded-full bg-panel px-2 py-1 text-xs text-muted" }, Hw = { class: "mt-2 text-sm leading-5 text-muted" }, Kw = {
|
|
@@ -5685,13 +5763,13 @@ const Ry = {
|
|
|
5685
5763
|
}, Yw = {
|
|
5686
5764
|
key: 0,
|
|
5687
5765
|
class: "rounded-[16px] bg-soft p-3 text-sm text-muted"
|
|
5688
|
-
}, Xw = { class: "mobile-page-picker" }, Zw = { class: "mobile-page-picker-list" }, qw = ["onClick"], Qw = { class: "mobile-page-picker-code" },
|
|
5766
|
+
}, Xw = { class: "mobile-page-picker" }, Zw = { class: "mobile-page-picker-list" }, qw = ["onClick"], Qw = { class: "mobile-page-picker-code" }, eS = { class: "mobile-page-picker-copy" }, tS = {
|
|
5689
5767
|
key: 0,
|
|
5690
5768
|
class: "mobile-page-picker-count"
|
|
5691
|
-
},
|
|
5769
|
+
}, nS = {
|
|
5692
5770
|
key: 0,
|
|
5693
5771
|
class: "mobile-page-picker-states"
|
|
5694
|
-
},
|
|
5772
|
+
}, oS = ["onClick"], Ki = "prototype-core-authenticated", Vo = "prototype-core-page-description-summary-sections", Ps = "prototype-core-panel-state-v1", ao = 393, Aa = 852, sS = 24, Ta = 1920, aS = 1080, lS = 640, cS = /* @__PURE__ */ tn({
|
|
5695
5773
|
__name: "App",
|
|
5696
5774
|
setup(t) {
|
|
5697
5775
|
var ki;
|
|
@@ -5715,7 +5793,7 @@ const Ry = {
|
|
|
5715
5793
|
annotationSyncStatus: ge,
|
|
5716
5794
|
annotationSyncLabel: Ae,
|
|
5717
5795
|
annotationAuthorName: J,
|
|
5718
|
-
annotationPollingIntervalSeconds:
|
|
5796
|
+
annotationPollingIntervalSeconds: Te,
|
|
5719
5797
|
annotationPollingIntervalInput: Re,
|
|
5720
5798
|
annotationPollingNotice: F,
|
|
5721
5799
|
collaborationInitialized: Fe,
|
|
@@ -5757,7 +5835,7 @@ const Ry = {
|
|
|
5757
5835
|
flowRows: _,
|
|
5758
5836
|
visibleScreens: Y,
|
|
5759
5837
|
prototypeStateOptions: we,
|
|
5760
|
-
activePrototypeStateId:
|
|
5838
|
+
activePrototypeStateId: T,
|
|
5761
5839
|
getPrototypeStateOptions: q,
|
|
5762
5840
|
getPrototypeStateLabel: Ke,
|
|
5763
5841
|
normalizePrototypeStateId: Je,
|
|
@@ -5800,12 +5878,12 @@ const Ry = {
|
|
|
5800
5878
|
annotationCountByState: Pu,
|
|
5801
5879
|
refreshPrototypeAnnotations: Du,
|
|
5802
5880
|
refreshPageDescriptions: Au,
|
|
5803
|
-
refreshAllCollaborationData:
|
|
5881
|
+
refreshAllCollaborationData: Tu,
|
|
5804
5882
|
setCollaborationEditing: qs,
|
|
5805
5883
|
initializeRemoteCollaborationData: bl,
|
|
5806
5884
|
saveAnnotationPollingInterval: wl,
|
|
5807
5885
|
exportAnnotations: Sl,
|
|
5808
|
-
saveCurrentPageDescription:
|
|
5886
|
+
saveCurrentPageDescription: Eu,
|
|
5809
5887
|
saveCurrentPageDescriptionToCache: Nu,
|
|
5810
5888
|
pushPageDescriptionSourceToGitee: Ru,
|
|
5811
5889
|
selectPageDescriptionSource: Cl,
|
|
@@ -5822,7 +5900,7 @@ const Ry = {
|
|
|
5822
5900
|
zoomFlowAtPoint: Vu,
|
|
5823
5901
|
overviewZoom: Gt,
|
|
5824
5902
|
overviewColumns: wn
|
|
5825
|
-
} = Ny(), { saveFlowsToSession: Lu, pushFlowsToGitee: Fu, exportFlows: Gu } =
|
|
5903
|
+
} = Ny(), { saveFlowsToSession: Lu, pushFlowsToGitee: Fu, exportFlows: Gu } = Ey(), { unresolvedBugCount: Pl, initializeBugs: zu } = Sr(), { initializeTestCases: Hu, refreshTestCases: Ku, sourceState: Ju } = jr(), Wu = k(
|
|
5826
5904
|
() => R.filter((u) => u.platform === "mobile" && u.hasTabBar).map((u) => ({ id: u.id, label: u.title, icon: u.icon }))
|
|
5827
5905
|
), is = {
|
|
5828
5906
|
gitee: "Gitee",
|
|
@@ -5837,7 +5915,7 @@ const Ry = {
|
|
|
5837
5915
|
Ye(Ju, (u) => {
|
|
5838
5916
|
L.value = { ...L.value, testCases: { ...u } };
|
|
5839
5917
|
}, { deep: !0, immediate: !0 });
|
|
5840
|
-
const Qu = ["structure", "features"], rs = y(""), us = y(""), wo = y(""), Fn = y(!1), Al = y(!1), sn = y(!1), Sn = y(!1), So = y("overview"), _t = y(!1), an = y(""), bt = y([...Qu]), zt = y(!1), Gn = y(""),
|
|
5918
|
+
const Qu = ["structure", "features"], rs = y(""), us = y(""), wo = y(""), Fn = y(!1), Al = y(!1), sn = y(!1), Sn = y(!1), So = y("overview"), _t = y(!1), an = y(""), bt = y([...Qu]), zt = y(!1), Gn = y(""), Tl = ["#ef4444", "#f97316", "#eab308", "#22c55e", "#3b82f6", "#8b5cf6"], El = Tl, cs = y(""), Co = y(""), Nl = `prototype-highlight-colors:${he.projectId}`, ds = y(ec()), zn = y(""), Cn = y(""), Rl = `prototype-annotation-colors:${he.projectId}`, ko = y(tc());
|
|
5841
5919
|
function ec() {
|
|
5842
5920
|
try {
|
|
5843
5921
|
const u = window.localStorage.getItem(Nl);
|
|
@@ -5953,7 +6031,7 @@ const Ry = {
|
|
|
5953
6031
|
]
|
|
5954
6032
|
}
|
|
5955
6033
|
];
|
|
5956
|
-
}), Bl = k(() => ta.value.reduce((u, s) => u + s.items.length, 0)), jl = k(() => ta.value.reduce((u, s) => u + s.items.filter((l) => l.configured).length, 0)), na = k(() => Bl.value - jl.value), oa = "1.2.
|
|
6034
|
+
}), Bl = k(() => ta.value.reduce((u, s) => u + s.items.length, 0)), jl = k(() => ta.value.reduce((u, s) => u + s.items.filter((l) => l.configured).length, 0)), na = k(() => Bl.value - jl.value), oa = "1.2.12", sa = y(""), kn = y("idle"), oc = k(() => kn.value === "success" && sa.value !== oa), sc = k(() => kn.value === "success" ? `v${sa.value}` : kn.value === "error" ? "版本暂不可用" : "版本检测中");
|
|
5957
6035
|
async function ac() {
|
|
5958
6036
|
if (kn.value !== "idle") return;
|
|
5959
6037
|
kn.value = "loading";
|
|
@@ -6034,7 +6112,7 @@ const Ry = {
|
|
|
6034
6112
|
const ee = k(() => me.value ? "interactive" : g.value), fc = k(
|
|
6035
6113
|
() => me.value ? [$t.value] : Y.value
|
|
6036
6114
|
), qn = k(
|
|
6037
|
-
() =>
|
|
6115
|
+
() => T.value ? Ke(h.value, T.value) : ""
|
|
6038
6116
|
), mc = k(() => {
|
|
6039
6117
|
const u = Io.value.trim().toLowerCase();
|
|
6040
6118
|
return R.map((s) => {
|
|
@@ -6047,9 +6125,9 @@ const Ry = {
|
|
|
6047
6125
|
};
|
|
6048
6126
|
}).filter((s) => s.visible);
|
|
6049
6127
|
}), gc = k(
|
|
6050
|
-
() => !!(Z.value && Z.value.screenId === h.value && Z.value.stateId === Je(h.value,
|
|
6128
|
+
() => !!(Z.value && Z.value.screenId === h.value && Z.value.stateId === Je(h.value, T.value))
|
|
6051
6129
|
);
|
|
6052
|
-
Ye([h,
|
|
6130
|
+
Ye([h, T, B], () => {
|
|
6053
6131
|
zt.value = !1;
|
|
6054
6132
|
}), Ye(zt, (u) => qs("pageDescriptions", u), { immediate: !0 }), Ye($e, (u) => qs("flows", u), { immediate: !0 }), Ye([G, Z], ([u, s]) => {
|
|
6055
6133
|
qs("annotations", u !== "view" || !!s);
|
|
@@ -6091,14 +6169,14 @@ const Ry = {
|
|
|
6091
6169
|
Hl(), zt.value = !1;
|
|
6092
6170
|
}
|
|
6093
6171
|
async function yc() {
|
|
6094
|
-
await
|
|
6172
|
+
await Eu() && (zt.value = !1);
|
|
6095
6173
|
}
|
|
6096
6174
|
function bc() {
|
|
6097
6175
|
Nu() && (zt.value = !1);
|
|
6098
6176
|
}
|
|
6099
6177
|
async function wc() {
|
|
6100
6178
|
if (te.value === "gitee") return;
|
|
6101
|
-
const u =
|
|
6179
|
+
const u = Eo(h.value, T.value), s = he.branchKey || "未知分支", l = `projects/${he.projectId}/branches/${s}/page-descriptions/${u}.json`, w = te.value === "local-cache" ? "本地缓存" : "JSON";
|
|
6102
6180
|
if (!window.confirm(`将${w}中的当前页面描述覆盖推送到 Gitee?
|
|
6103
6181
|
|
|
6104
6182
|
Scope:${u}
|
|
@@ -6118,7 +6196,7 @@ Scope:${u}
|
|
|
6118
6196
|
function kc() {
|
|
6119
6197
|
hs && (window.clearTimeout(hs), hs = null);
|
|
6120
6198
|
}
|
|
6121
|
-
function
|
|
6199
|
+
function To() {
|
|
6122
6200
|
kc(), Hn.value = "", Be = null;
|
|
6123
6201
|
}
|
|
6124
6202
|
function Kl(u, s) {
|
|
@@ -6157,7 +6235,7 @@ Scope:${u}
|
|
|
6157
6235
|
function Dc(u, s) {
|
|
6158
6236
|
if (s.pointerType === "mouse" && s.button !== 0 || Kn.value.has(u.id)) return;
|
|
6159
6237
|
const l = s.currentTarget.closest(".screen-content");
|
|
6160
|
-
l && (
|
|
6238
|
+
l && (To(), ze.value = "", Hn.value = u.id, Be = {
|
|
6161
6239
|
annotation: u,
|
|
6162
6240
|
pointerId: s.pointerId,
|
|
6163
6241
|
startClientX: s.clientX,
|
|
@@ -6178,17 +6256,17 @@ Scope:${u}
|
|
|
6178
6256
|
function Ac(u) {
|
|
6179
6257
|
if (!Be || Be.pointerId !== u.pointerId) return;
|
|
6180
6258
|
if (!Be.activated) {
|
|
6181
|
-
Math.hypot(u.clientX - Be.startClientX, u.clientY - Be.startClientY) > 8 &&
|
|
6259
|
+
Math.hypot(u.clientX - Be.startClientX, u.clientY - Be.startClientY) > 8 && To();
|
|
6182
6260
|
return;
|
|
6183
6261
|
}
|
|
6184
6262
|
u.preventDefault(), u.stopPropagation();
|
|
6185
6263
|
const { x: s, y: l } = Jl(u.clientX, u.clientY, Be.content);
|
|
6186
6264
|
Pt.value = { id: Be.annotation.id, x: s, y: l };
|
|
6187
6265
|
}
|
|
6188
|
-
function
|
|
6266
|
+
function Tc(u) {
|
|
6189
6267
|
if (!Be || Be.pointerId !== u.pointerId) return;
|
|
6190
6268
|
const s = Be, l = Pt.value;
|
|
6191
|
-
if (
|
|
6269
|
+
if (To(), !s.activated || !l || l.id !== s.annotation.id) return;
|
|
6192
6270
|
if (u.preventDefault(), u.stopPropagation(), ea = s.annotation.id, Math.max(
|
|
6193
6271
|
Math.abs(l.x - s.annotation.x),
|
|
6194
6272
|
Math.abs(l.y - s.annotation.y)
|
|
@@ -6208,8 +6286,8 @@ Scope:${u}
|
|
|
6208
6286
|
}, 300);
|
|
6209
6287
|
$o.set(s.annotation.id, X);
|
|
6210
6288
|
}
|
|
6211
|
-
function
|
|
6212
|
-
!Be || Be.pointerId !== u.pointerId || (
|
|
6289
|
+
function Ec(u) {
|
|
6290
|
+
!Be || Be.pointerId !== u.pointerId || (To(), Pt.value = null);
|
|
6213
6291
|
}
|
|
6214
6292
|
function Nc(u, s) {
|
|
6215
6293
|
Hn.value || Pt.value || (gs.value = s.currentTarget.getBoundingClientRect(), hl(u.id));
|
|
@@ -6224,7 +6302,7 @@ Scope:${u}
|
|
|
6224
6302
|
if (!((s = Se.value) != null && s.authorName) && !((l = Se.value) != null && l.updatedAt)) return "";
|
|
6225
6303
|
const u = pa(Se.value.updatedAt);
|
|
6226
6304
|
return `${Se.value.authorName || "未署名"}${u ? ` · ${u}` : ""}`;
|
|
6227
|
-
}), Oc = k(() =>
|
|
6305
|
+
}), Oc = k(() => Eo(h.value, T.value)), Wl = [
|
|
6228
6306
|
{ source: "gitee", label: "Gitee", icon: Od },
|
|
6229
6307
|
{ source: "local-cache", label: "本地缓存", icon: Bd },
|
|
6230
6308
|
{ source: "local-seed", label: "JSON", icon: Xi }
|
|
@@ -6258,7 +6336,7 @@ Scope:${u}
|
|
|
6258
6336
|
|
|
6259
6337
|
`)
|
|
6260
6338
|
);
|
|
6261
|
-
function
|
|
6339
|
+
function Eo(u, s) {
|
|
6262
6340
|
return s ? `${u}__${s}` : u;
|
|
6263
6341
|
}
|
|
6264
6342
|
const da = k(
|
|
@@ -6276,7 +6354,7 @@ Scope:${u}
|
|
|
6276
6354
|
)
|
|
6277
6355
|
), Zl = k(() => {
|
|
6278
6356
|
var s;
|
|
6279
|
-
const u = new Set(Rt.value.map((l) =>
|
|
6357
|
+
const u = new Set(Rt.value.map((l) => Eo(l.screenId, l.stateId)));
|
|
6280
6358
|
return ke.value && ((s = be.value) != null && s.scopes) && Object.entries(be.value.scopes).forEach(([l, w]) => {
|
|
6281
6359
|
((w == null ? void 0 : w.count) ?? 0) > 0 && u.add(l);
|
|
6282
6360
|
}), u;
|
|
@@ -6286,10 +6364,10 @@ Scope:${u}
|
|
|
6286
6364
|
}), Qn = k(
|
|
6287
6365
|
() => R.map((u) => {
|
|
6288
6366
|
const s = q(u.id), l = s.length ? s.map((X) => ({
|
|
6289
|
-
id:
|
|
6367
|
+
id: Eo(u.id, X.id),
|
|
6290
6368
|
stateId: X.id,
|
|
6291
6369
|
label: X.label
|
|
6292
|
-
})) : [{ id:
|
|
6370
|
+
})) : [{ id: Eo(u.id), stateId: void 0, label: "默认" }], w = l.filter((X) => Zl.value.has(X.id)).length, O = da.value.filter((X) => X.screenId === u.id).length;
|
|
6293
6371
|
return {
|
|
6294
6372
|
...u,
|
|
6295
6373
|
stateCount: l.length,
|
|
@@ -6377,14 +6455,14 @@ Scope:${u}
|
|
|
6377
6455
|
bt.value = xn.value.map((s) => s.id).filter((s) => !u.has(s)), window.localStorage.setItem(Vo, JSON.stringify(bt.value));
|
|
6378
6456
|
}
|
|
6379
6457
|
const va = k(() => {
|
|
6380
|
-
const u = Math.max(1, wn.value), l = ((ua.value || window.innerWidth) -
|
|
6458
|
+
const u = Math.max(1, wn.value), l = ((ua.value || window.innerWidth) - sS * (u - 1)) / u;
|
|
6381
6459
|
return Math.min(1, Math.max(0.36, Number((l / ao).toFixed(3))));
|
|
6382
6460
|
}), ni = k(() => Math.round(ao * va.value * 100) / 100), zc = k(() => Math.round(Aa * va.value * 100) / 100);
|
|
6383
6461
|
function Hc() {
|
|
6384
6462
|
if (lt.value)
|
|
6385
|
-
return Math.min(
|
|
6463
|
+
return Math.min(Ta, Yn.value, Math.max(0, Do.value - 48) * 16 / 9);
|
|
6386
6464
|
if (ee.value === "overview") return ni.value;
|
|
6387
|
-
if (ee.value === "flow") return
|
|
6465
|
+
if (ee.value === "flow") return lS;
|
|
6388
6466
|
const u = ua.value || Yn.value;
|
|
6389
6467
|
return Math.min(1440, u, Math.max(0, Do.value - 120) * 16 / 9);
|
|
6390
6468
|
}
|
|
@@ -6404,12 +6482,12 @@ Scope:${u}
|
|
|
6404
6482
|
"--presentation-phone-scale": String(O / ao)
|
|
6405
6483
|
};
|
|
6406
6484
|
}
|
|
6407
|
-
const l = Math.max(1, Hc()), w = l *
|
|
6485
|
+
const l = Math.max(1, Hc()), w = l * aS / Ta;
|
|
6408
6486
|
return {
|
|
6409
6487
|
...s,
|
|
6410
6488
|
"--desktop-display-width": `${l}px`,
|
|
6411
6489
|
"--desktop-display-height": `${w}px`,
|
|
6412
|
-
"--desktop-preview-scale": String(l /
|
|
6490
|
+
"--desktop-preview-scale": String(l / Ta)
|
|
6413
6491
|
};
|
|
6414
6492
|
}
|
|
6415
6493
|
const Jc = k(() => ({
|
|
@@ -6610,10 +6688,10 @@ Scope:${u}
|
|
|
6610
6688
|
);
|
|
6611
6689
|
function pi() {
|
|
6612
6690
|
ui(), ke.value && (Is = window.setInterval(() => {
|
|
6613
|
-
console.info("🔄 [协作同步] 开始轮询注释、页面描述、测试用例和流程"),
|
|
6614
|
-
},
|
|
6691
|
+
console.info("🔄 [协作同步] 开始轮询注释、页面描述、测试用例和流程"), Tu(!0), Ku(!0);
|
|
6692
|
+
}, Te.value * 1e3));
|
|
6615
6693
|
}
|
|
6616
|
-
Ye(
|
|
6694
|
+
Ye(Te, () => {
|
|
6617
6695
|
Fe.value && pi();
|
|
6618
6696
|
});
|
|
6619
6697
|
function ld() {
|
|
@@ -6791,13 +6869,13 @@ Scope:${u}
|
|
|
6791
6869
|
var u;
|
|
6792
6870
|
ha(), Vc(), ad(), In = window.matchMedia("(max-width: 640px)"), ba(In), In.addEventListener("change", ba), window.addEventListener("touchstart", wi, { passive: !0 }), window.addEventListener("touchmove", Si, { passive: !1 }), window.addEventListener("touchend", $s, { passive: !0 }), window.addEventListener("touchcancel", $s, { passive: !0 }), window.addEventListener("resize", Ci), window.addEventListener("hashchange", ha), wa(), eo = new ResizeObserver(wa), ws.value && eo.observe(ws.value), window.addEventListener("keydown", di), Fn.value = ((u = Ct.auth) == null ? void 0 : u.enabled) !== !0 || window.localStorage.getItem(Ki) === "true", Fn.value ? Ll() : Vl() || console.error("🔐 [前端认证] 已启用认证但未提供用户名或密码,访问页将无法登录");
|
|
6793
6871
|
}), Xo(() => {
|
|
6794
|
-
ui(),
|
|
6872
|
+
ui(), To(), xc(), In == null || In.removeEventListener("change", ba), In = void 0, window.removeEventListener("touchstart", wi), window.removeEventListener("touchmove", Si), window.removeEventListener("touchend", $s), window.removeEventListener("touchcancel", $s), window.removeEventListener("resize", Ci), window.removeEventListener("hashchange", ha), window.removeEventListener("keydown", di), eo == null || eo.disconnect(), eo = void 0, id(), Jn && window.clearTimeout(Jn), Wn && window.clearTimeout(Wn);
|
|
6795
6873
|
}), (u, s) => (d(), v("main", {
|
|
6796
6874
|
class: A(["min-h-screen bg-canvas text-ink transition-[padding] duration-200", [
|
|
6797
6875
|
me.value ? "mobile-pure-interactive" : "",
|
|
6798
6876
|
le.value === "help" || le.value === "themeGuide" ? "prototype-help-route" : le.value === "testCases" ? "test-cases-route" : lt.value ? "presentation-mode" : !me.value && (No.value ? "has-update-banner pt-[120px]" : "pt-[68px]")
|
|
6799
6877
|
]]),
|
|
6800
|
-
style:
|
|
6878
|
+
style: Ee(i(rt))
|
|
6801
6879
|
}, [
|
|
6802
6880
|
No.value && Fn.value ? (d(), v("div", Ry, [
|
|
6803
6881
|
e("div", { class: "update-banner-inner" }, [
|
|
@@ -6902,7 +6980,7 @@ Scope:${u}
|
|
|
6902
6980
|
}, [
|
|
6903
6981
|
e("span", {
|
|
6904
6982
|
class: "theme-swatch",
|
|
6905
|
-
style:
|
|
6983
|
+
style: Ee({ "--swatch-color": i(se).primary })
|
|
6906
6984
|
}, null, 4),
|
|
6907
6985
|
s[100] || (s[100] = K(" 主题切换 ", -1))
|
|
6908
6986
|
], 2),
|
|
@@ -6931,14 +7009,14 @@ Scope:${u}
|
|
|
6931
7009
|
]),
|
|
6932
7010
|
s[102] || (s[102] = e("p", { class: "theme-section-title" }, "预设主题", -1)),
|
|
6933
7011
|
e("div", eb, [
|
|
6934
|
-
(d(!0), v(D, null,
|
|
7012
|
+
(d(!0), v(D, null, E(i(He), (l) => (d(), v("button", {
|
|
6935
7013
|
key: l.id,
|
|
6936
7014
|
class: A(["theme-scheme-btn", { active: i(P) === l.id }]),
|
|
6937
7015
|
onClick: (w) => i(Ys)(l.id)
|
|
6938
7016
|
}, [
|
|
6939
7017
|
e("span", {
|
|
6940
7018
|
class: "theme-swatch",
|
|
6941
|
-
style:
|
|
7019
|
+
style: Ee({ "--swatch-color": l.designColors.primary })
|
|
6942
7020
|
}, null, 4),
|
|
6943
7021
|
e("span", nb, [
|
|
6944
7022
|
e("b", null, c(i(ut)(l)), 1),
|
|
@@ -6971,7 +7049,7 @@ Scope:${u}
|
|
|
6971
7049
|
]),
|
|
6972
7050
|
s[103] || (s[103] = e("p", { class: "theme-section-title" }, "设计系统颜色", -1)),
|
|
6973
7051
|
e("div", sb, [
|
|
6974
|
-
(d(!0), v(D, null,
|
|
7052
|
+
(d(!0), v(D, null, E(i(o), (l) => (d(), v("label", {
|
|
6975
7053
|
key: l.key,
|
|
6976
7054
|
class: "theme-color-field"
|
|
6977
7055
|
}, [
|
|
@@ -6993,7 +7071,7 @@ Scope:${u}
|
|
|
6993
7071
|
]),
|
|
6994
7072
|
s[104] || (s[104] = e("p", { class: "theme-section-title" }, "字体", -1)),
|
|
6995
7073
|
e("div", ib, [
|
|
6996
|
-
(d(!0), v(D, null,
|
|
7074
|
+
(d(!0), v(D, null, E(i(a), (l) => {
|
|
6997
7075
|
var w;
|
|
6998
7076
|
return d(), v("label", {
|
|
6999
7077
|
key: l.key,
|
|
@@ -7013,7 +7091,7 @@ Scope:${u}
|
|
|
7013
7091
|
]),
|
|
7014
7092
|
s[105] || (s[105] = e("p", { class: "theme-section-title" }, "形状", -1)),
|
|
7015
7093
|
e("div", ub, [
|
|
7016
|
-
(d(!0), v(D, null,
|
|
7094
|
+
(d(!0), v(D, null, E(i(r), (l) => {
|
|
7017
7095
|
var w;
|
|
7018
7096
|
return d(), v("label", {
|
|
7019
7097
|
key: l.key,
|
|
@@ -7033,7 +7111,7 @@ Scope:${u}
|
|
|
7033
7111
|
]),
|
|
7034
7112
|
s[106] || (s[106] = e("p", { class: "theme-section-title" }, "内核兼容颜色", -1)),
|
|
7035
7113
|
e("div", db, [
|
|
7036
|
-
(d(!0), v(D, null,
|
|
7114
|
+
(d(!0), v(D, null, E(i(n), (l) => (d(), v("label", {
|
|
7037
7115
|
key: l.key,
|
|
7038
7116
|
class: "theme-color-field"
|
|
7039
7117
|
}, [
|
|
@@ -7071,7 +7149,7 @@ Scope:${u}
|
|
|
7071
7149
|
key: 1,
|
|
7072
7150
|
lang: i(p),
|
|
7073
7151
|
"current-screen-id": i(h),
|
|
7074
|
-
"current-state-id": i(
|
|
7152
|
+
"current-state-id": i(T),
|
|
7075
7153
|
"author-name": i(J),
|
|
7076
7154
|
"onUpdate:authorName": s[13] || (s[13] = (l) => J.value = l),
|
|
7077
7155
|
onClose: pd
|
|
@@ -7086,7 +7164,7 @@ Scope:${u}
|
|
|
7086
7164
|
me.value ? S("", !0) : (d(), v("section", fb, [
|
|
7087
7165
|
ee.value === "interactive" ? (d(), v("div", mb, [
|
|
7088
7166
|
e("div", gb, [
|
|
7089
|
-
(d(), v(D, null,
|
|
7167
|
+
(d(), v(D, null, E(Wl, (l) => e("button", {
|
|
7090
7168
|
key: l.source,
|
|
7091
7169
|
type: "button",
|
|
7092
7170
|
class: A({ active: i(te) === l.source }),
|
|
@@ -7136,7 +7214,7 @@ Scope:${u}
|
|
|
7136
7214
|
class: "interactive-side-nav-scroll",
|
|
7137
7215
|
onScroll: fa
|
|
7138
7216
|
}, [
|
|
7139
|
-
(d(!0), v(D, null,
|
|
7217
|
+
(d(!0), v(D, null, E(i(R), (l) => (d(), v("button", {
|
|
7140
7218
|
key: l.id,
|
|
7141
7219
|
class: A(["nav-row", { active: i(h) === l.id }]),
|
|
7142
7220
|
onClick: (w) => i(Qe)(l.id)
|
|
@@ -7149,7 +7227,7 @@ Scope:${u}
|
|
|
7149
7227
|
i(Ks)(l.id) ? (d(), v("span", {
|
|
7150
7228
|
key: 0,
|
|
7151
7229
|
class: "screen-highlight-bookmark",
|
|
7152
|
-
style:
|
|
7230
|
+
style: Ee({ backgroundColor: i(Js)(l.id) }),
|
|
7153
7231
|
"aria-hidden": "true"
|
|
7154
7232
|
}, null, 4)) : S("", !0),
|
|
7155
7233
|
e("span", Cb, c(l.code) + " " + c(l.title), 1),
|
|
@@ -7192,9 +7270,9 @@ Scope:${u}
|
|
|
7192
7270
|
e("strong", Ab, c(i(wn)), 1)
|
|
7193
7271
|
])
|
|
7194
7272
|
]),
|
|
7195
|
-
e("div",
|
|
7273
|
+
e("div", Tb, [
|
|
7196
7274
|
s[114] || (s[114] = e("label", { class: "mb-2 block text-xs font-semibold text-muted" }, "缩放", -1)),
|
|
7197
|
-
e("div",
|
|
7275
|
+
e("div", Eb, [
|
|
7198
7276
|
e("button", {
|
|
7199
7277
|
type: "button",
|
|
7200
7278
|
class: "overview-zoom-btn",
|
|
@@ -7238,7 +7316,7 @@ Scope:${u}
|
|
|
7238
7316
|
K(" 编辑流程 ", -1)
|
|
7239
7317
|
])])
|
|
7240
7318
|
]),
|
|
7241
|
-
(d(!0), v(D, null,
|
|
7319
|
+
(d(!0), v(D, null, E(i(ne), (l) => (d(), v("button", {
|
|
7242
7320
|
key: l.id,
|
|
7243
7321
|
class: A(["nav-row flow-nav-row", { active: i(b) === l.id }]),
|
|
7244
7322
|
onClick: (w) => i(Ou)(l.id)
|
|
@@ -7295,7 +7373,7 @@ Scope:${u}
|
|
|
7295
7373
|
ee.value === "overview" ? "overview-canvas" : ee.value === "flow" ? "flow-grid" : "grid gap-6 place-items-center",
|
|
7296
7374
|
{ "is-flow-panning": i(ue), "is-overview-panning": Ss.value }
|
|
7297
7375
|
]),
|
|
7298
|
-
style:
|
|
7376
|
+
style: Ee(ee.value === "flow" ? i(We) : void 0),
|
|
7299
7377
|
onMousedown: s[25] || (s[25] = (l) => ee.value === "flow" ? i(Uu)(l) : ee.value === "overview" ? Yc(l) : void 0),
|
|
7300
7378
|
onMousemove: s[26] || (s[26] = (l) => ee.value === "flow" ? i(Mu)(l) : ee.value === "overview" ? Xc(l) : void 0),
|
|
7301
7379
|
onMouseup: s[27] || (s[27] = (l) => ee.value === "flow" ? i(_l)() : ai()),
|
|
@@ -7306,17 +7384,17 @@ Scope:${u}
|
|
|
7306
7384
|
ref_key: "overviewGridRef",
|
|
7307
7385
|
ref: zl,
|
|
7308
7386
|
class: A(ee.value === "overview" ? "overview-grid" : "contents"),
|
|
7309
|
-
style:
|
|
7387
|
+
style: Ee(ee.value === "overview" ? Jc.value : void 0)
|
|
7310
7388
|
}, [
|
|
7311
|
-
(d(!0), v(D, null,
|
|
7389
|
+
(d(!0), v(D, null, E(ee.value === "flow" ? i(_) : [], (l) => (d(), v("div", {
|
|
7312
7390
|
key: l.key,
|
|
7313
7391
|
class: "flow-row-label",
|
|
7314
|
-
style:
|
|
7392
|
+
style: Ee(i(ju)(l.row))
|
|
7315
7393
|
}, [
|
|
7316
7394
|
s[119] || (s[119] = e("span", null, "子流程", -1)),
|
|
7317
7395
|
e("strong", null, c(l.label), 1)
|
|
7318
7396
|
], 4))), 128)),
|
|
7319
|
-
(d(!0), v(D, null,
|
|
7397
|
+
(d(!0), v(D, null, E(fc.value, (l) => (d(), v("article", {
|
|
7320
7398
|
key: ee.value === "flow" ? `${l.id}-${l.stateId ?? "default"}-${l.flowRow}-${l.flowCol}` : `${l.id}-${l.stateId ?? "default"}`,
|
|
7321
7399
|
class: A([
|
|
7322
7400
|
l.platform === "pc" ? "desktop-shell" : "phone-shell",
|
|
@@ -7326,7 +7404,7 @@ Scope:${u}
|
|
|
7326
7404
|
"flow-has-next": ee.value === "flow" && l.hasNext
|
|
7327
7405
|
}
|
|
7328
7406
|
]),
|
|
7329
|
-
style:
|
|
7407
|
+
style: Ee(Kc(l))
|
|
7330
7408
|
}, [
|
|
7331
7409
|
e("div", {
|
|
7332
7410
|
class: A(["prototype-preview-scaler", {
|
|
@@ -7334,11 +7412,11 @@ Scope:${u}
|
|
|
7334
7412
|
"overview-desktop-scale": ee.value === "overview" && l.platform === "pc"
|
|
7335
7413
|
}])
|
|
7336
7414
|
}, [
|
|
7337
|
-
ee.value === "interactive" && !me.value && l.platform === "mobile" && i(we).length && i(
|
|
7415
|
+
ee.value === "interactive" && !me.value && l.platform === "mobile" && i(we).length && i(T) ? (d(), Me(Jd, {
|
|
7338
7416
|
key: 0,
|
|
7339
7417
|
title: i(U)("prototypeStateSwitch"),
|
|
7340
7418
|
options: i(we),
|
|
7341
|
-
"active-id": i(
|
|
7419
|
+
"active-id": i(T),
|
|
7342
7420
|
"count-for-state": (w) => i(Pu)(i(h), w),
|
|
7343
7421
|
"highlighted-colors": i(Mn),
|
|
7344
7422
|
onChange: s[23] || (s[23] = (w) => i(m)(i(h), w))
|
|
@@ -7361,7 +7439,7 @@ Scope:${u}
|
|
|
7361
7439
|
e("div", Fb, [
|
|
7362
7440
|
V(Lo, { screen: l }, null, 8, ["screen"]),
|
|
7363
7441
|
ee.value === "interactive" && !me.value && !lt.value && i(B) === "annotations" && i(Le) ? (d(), v("div", Gb, [
|
|
7364
|
-
(d(!0), v(D, null,
|
|
7442
|
+
(d(!0), v(D, null, E(i(Ft), (w, O) => {
|
|
7365
7443
|
var X;
|
|
7366
7444
|
return d(), v("div", {
|
|
7367
7445
|
key: w.id,
|
|
@@ -7371,7 +7449,7 @@ Scope:${u}
|
|
|
7371
7449
|
"is-dragging": ((X = Pt.value) == null ? void 0 : X.id) === w.id,
|
|
7372
7450
|
"is-syncing-position": Kn.value.has(w.id)
|
|
7373
7451
|
}]),
|
|
7374
|
-
style:
|
|
7452
|
+
style: Ee(Ic(w)),
|
|
7375
7453
|
onMouseenter: (je) => Nc(w, je),
|
|
7376
7454
|
onMouseleave: s[24] || (s[24] = //@ts-ignore
|
|
7377
7455
|
(...je) => i(Ln) && i(Ln)(...je))
|
|
@@ -7384,15 +7462,15 @@ Scope:${u}
|
|
|
7384
7462
|
onClick: Ce((je) => _c(w), ["stop"]),
|
|
7385
7463
|
onPointerdown: Ce((je) => Dc(w, je), ["stop"]),
|
|
7386
7464
|
onPointermove: Ac,
|
|
7387
|
-
onPointerup:
|
|
7388
|
-
onPointercancel:
|
|
7465
|
+
onPointerup: Tc,
|
|
7466
|
+
onPointercancel: Ec
|
|
7389
7467
|
}, c(O + 1), 41, Hb)
|
|
7390
7468
|
], 46, zb);
|
|
7391
7469
|
}), 128)),
|
|
7392
7470
|
gc.value ? (d(), v("div", {
|
|
7393
7471
|
key: 0,
|
|
7394
7472
|
class: "annotation-point-wrap draft",
|
|
7395
|
-
style:
|
|
7473
|
+
style: Ee(i(xl)(i(Z)))
|
|
7396
7474
|
}, [...s[121] || (s[121] = [
|
|
7397
7475
|
e("button", {
|
|
7398
7476
|
class: "annotation-point",
|
|
@@ -7539,7 +7617,7 @@ Scope:${u}
|
|
|
7539
7617
|
e("small", null, c(i(U)("annotationPollingUnit")), 1),
|
|
7540
7618
|
e("button", {
|
|
7541
7619
|
type: "button",
|
|
7542
|
-
disabled: Number(i(Re)) === i(
|
|
7620
|
+
disabled: Number(i(Re)) === i(Te),
|
|
7543
7621
|
onClick: s[41] || (s[41] = //@ts-ignore
|
|
7544
7622
|
(...l) => i(wl) && i(wl)(...l))
|
|
7545
7623
|
}, c(i(U)("annotationPollingSave")), 9, o1)
|
|
@@ -7548,7 +7626,7 @@ Scope:${u}
|
|
|
7548
7626
|
i(F) ? (d(), v("p", s1, c(i(F)), 1)) : S("", !0),
|
|
7549
7627
|
i(B) === "annotations" ? (d(), v("div", a1, [
|
|
7550
7628
|
i(Ft).length ? S("", !0) : (d(), v("p", l1, c(i(U)("annotationEmpty")), 1)),
|
|
7551
|
-
(d(!0), v(D, null,
|
|
7629
|
+
(d(!0), v(D, null, E(i(Ft), (l, w) => (d(), v("section", {
|
|
7552
7630
|
key: l.id,
|
|
7553
7631
|
onMouseenter: (O) => Rc(l),
|
|
7554
7632
|
onMouseleave: s[42] || (s[42] = //@ts-ignore
|
|
@@ -7584,7 +7662,7 @@ Scope:${u}
|
|
|
7584
7662
|
])) : (d(), v("div", p1, [
|
|
7585
7663
|
i(Se) ? (d(), v(D, { key: 1 }, [
|
|
7586
7664
|
Cs.value ? (d(), v("small", f1, c(Cs.value), 1)) : S("", !0),
|
|
7587
|
-
(d(!0), v(D, null,
|
|
7665
|
+
(d(!0), v(D, null, E(xn.value, (l) => (d(), v("section", {
|
|
7588
7666
|
key: l.id
|
|
7589
7667
|
}, [
|
|
7590
7668
|
e("h3", null, c(l.label), 1),
|
|
@@ -7657,11 +7735,11 @@ Scope:${u}
|
|
|
7657
7735
|
}, "×")
|
|
7658
7736
|
]),
|
|
7659
7737
|
e("div", b1, [
|
|
7660
|
-
(d(!0), v(D, null,
|
|
7738
|
+
(d(!0), v(D, null, E(ta.value, (l) => (d(), v("section", {
|
|
7661
7739
|
key: l.id
|
|
7662
7740
|
}, [
|
|
7663
7741
|
e("h3", null, c(l.title), 1),
|
|
7664
|
-
(d(!0), v(D, null,
|
|
7742
|
+
(d(!0), v(D, null, E(l.items, (w) => (d(), v("div", {
|
|
7665
7743
|
key: w.name,
|
|
7666
7744
|
class: A(["environment-check-row", { missing: !w.configured }])
|
|
7667
7745
|
}, [
|
|
@@ -7692,12 +7770,12 @@ Scope:${u}
|
|
|
7692
7770
|
e("strong", null, "当前面板快捷键"),
|
|
7693
7771
|
e("span", null, "输入内容时自动停用")
|
|
7694
7772
|
], -1)),
|
|
7695
|
-
(d(), v(D, null,
|
|
7773
|
+
(d(), v(D, null, E(ci, (l) => e("section", {
|
|
7696
7774
|
key: l.title,
|
|
7697
7775
|
class: "shortcut-group"
|
|
7698
7776
|
}, [
|
|
7699
7777
|
e("h3", null, c(l.title), 1),
|
|
7700
|
-
(d(!0), v(D, null,
|
|
7778
|
+
(d(!0), v(D, null, E(l.items, (w) => (d(), v("div", {
|
|
7701
7779
|
key: w.key,
|
|
7702
7780
|
class: "shortcut-row"
|
|
7703
7781
|
}, [
|
|
@@ -7707,13 +7785,13 @@ Scope:${u}
|
|
|
7707
7785
|
])), 64))
|
|
7708
7786
|
], 64))
|
|
7709
7787
|
], 2)) : S("", !0),
|
|
7710
|
-
V(
|
|
7788
|
+
V(Ea, { name: "shortcut-toast" }, {
|
|
7711
7789
|
default: Na(() => [
|
|
7712
7790
|
le.value === "prototype" && la.value && !me.value && !lt.value ? (d(), v("div", S1, " 按快捷键 P 可以进入/退出演示模式 ")) : S("", !0)
|
|
7713
7791
|
]),
|
|
7714
7792
|
_: 1
|
|
7715
7793
|
}),
|
|
7716
|
-
V(
|
|
7794
|
+
V(Ea, { name: "shortcut-toast" }, {
|
|
7717
7795
|
default: Na(() => [
|
|
7718
7796
|
ia.value && !me.value && !lt.value ? (d(), v("div", C1, " 还未配置产品文档地址,请在 PrototypeProductDefinition.document.url 中配置 ")) : S("", !0)
|
|
7719
7797
|
]),
|
|
@@ -7748,7 +7826,7 @@ Scope:${u}
|
|
|
7748
7826
|
i(Se) ? Cs.value ? (d(), v("small", $1, c(Cs.value), 1)) : S("", !0) : (d(), v("p", I1, c(i(U)("pageDescriptionEmpty")), 1)),
|
|
7749
7827
|
e("div", _1, [
|
|
7750
7828
|
e("div", P1, [
|
|
7751
|
-
(d(), v(D, null,
|
|
7829
|
+
(d(), v(D, null, E(Wl, (l) => e("button", {
|
|
7752
7830
|
key: l.source,
|
|
7753
7831
|
type: "button",
|
|
7754
7832
|
class: A({ active: i(te) === l.source }),
|
|
@@ -7767,7 +7845,7 @@ Scope:${u}
|
|
|
7767
7845
|
class: "page-description-editor-fields",
|
|
7768
7846
|
disabled: i(te) === "local-seed"
|
|
7769
7847
|
}, [
|
|
7770
|
-
e("label",
|
|
7848
|
+
e("label", T1, [
|
|
7771
7849
|
N(e("input", {
|
|
7772
7850
|
"onUpdate:modelValue": s[49] || (s[49] = (l) => i($).highlighted = l),
|
|
7773
7851
|
type: "checkbox"
|
|
@@ -7776,14 +7854,14 @@ Scope:${u}
|
|
|
7776
7854
|
]),
|
|
7777
7855
|
s[125] || (s[125] = e("span", null, "重点标注当前状态页", -1))
|
|
7778
7856
|
]),
|
|
7779
|
-
i($).highlighted ? (d(), v("section",
|
|
7857
|
+
i($).highlighted ? (d(), v("section", E1, [
|
|
7780
7858
|
s[126] || (s[126] = e("span", null, "标记颜色", -1)),
|
|
7781
7859
|
e("div", N1, [
|
|
7782
|
-
(d(!0), v(D, null,
|
|
7860
|
+
(d(!0), v(D, null, E([...Tl, ...ds.value], (l) => (d(), v("button", {
|
|
7783
7861
|
key: l,
|
|
7784
7862
|
type: "button",
|
|
7785
7863
|
class: A({ active: i($).highlightColor === l }),
|
|
7786
|
-
style:
|
|
7864
|
+
style: Ee({ backgroundColor: l }),
|
|
7787
7865
|
"aria-label": `选择颜色 ${l}`,
|
|
7788
7866
|
title: l,
|
|
7789
7867
|
onClick: (w) => nc(l)
|
|
@@ -7919,7 +7997,7 @@ Scope:${u}
|
|
|
7919
7997
|
le.value === "prototype" && i(on) && !me.value && !lt.value ? (d(), v("div", {
|
|
7920
7998
|
key: 9,
|
|
7921
7999
|
class: "annotation-popover annotation-floating-popover",
|
|
7922
|
-
style:
|
|
8000
|
+
style: Ee($c.value),
|
|
7923
8001
|
onMouseenter: s[61] || (s[61] = //@ts-ignore
|
|
7924
8002
|
(...l) => i(gl) && i(gl)(...l)),
|
|
7925
8003
|
onMouseleave: s[62] || (s[62] = //@ts-ignore
|
|
@@ -7979,11 +8057,11 @@ Scope:${u}
|
|
|
7979
8057
|
e("section", q1, [
|
|
7980
8058
|
s[132] || (s[132] = e("span", null, "注释点颜色", -1)),
|
|
7981
8059
|
e("div", Q1, [
|
|
7982
|
-
(d(!0), v(D, null,
|
|
8060
|
+
(d(!0), v(D, null, E([...i(El), ...ko.value], (l) => (d(), v("button", {
|
|
7983
8061
|
key: l,
|
|
7984
8062
|
type: "button",
|
|
7985
8063
|
class: A({ active: i(Z).color === l }),
|
|
7986
|
-
style:
|
|
8064
|
+
style: Ee({ backgroundColor: l }),
|
|
7987
8065
|
"aria-label": `选择颜色 ${l}`,
|
|
7988
8066
|
title: l,
|
|
7989
8067
|
onClick: (w) => Qs(l, "draft")
|
|
@@ -8070,11 +8148,11 @@ Scope:${u}
|
|
|
8070
8148
|
i(G) === "edit" ? (d(), v("section", cw, [
|
|
8071
8149
|
s[133] || (s[133] = e("span", null, "注释点颜色", -1)),
|
|
8072
8150
|
e("div", dw, [
|
|
8073
|
-
(d(!0), v(D, null,
|
|
8151
|
+
(d(!0), v(D, null, E([...i(El), ...ko.value], (l) => (d(), v("button", {
|
|
8074
8152
|
key: l,
|
|
8075
8153
|
type: "button",
|
|
8076
8154
|
class: A({ active: i(de).color === l }),
|
|
8077
|
-
style:
|
|
8155
|
+
style: Ee({ backgroundColor: l }),
|
|
8078
8156
|
"aria-label": `选择颜色 ${l}`,
|
|
8079
8157
|
title: l,
|
|
8080
8158
|
onClick: (w) => Qs(l, "editor")
|
|
@@ -8160,7 +8238,7 @@ Scope:${u}
|
|
|
8160
8238
|
}, "反选")
|
|
8161
8239
|
]),
|
|
8162
8240
|
e("div", null, [
|
|
8163
|
-
(d(!0), v(D, null,
|
|
8241
|
+
(d(!0), v(D, null, E(xn.value, (l) => (d(), v("label", {
|
|
8164
8242
|
key: l.id
|
|
8165
8243
|
}, [
|
|
8166
8244
|
e("input", {
|
|
@@ -8173,7 +8251,7 @@ Scope:${u}
|
|
|
8173
8251
|
])
|
|
8174
8252
|
]),
|
|
8175
8253
|
e("div", Cw, [
|
|
8176
|
-
ks.value.length ? (d(!0), v(D, { key: 1 },
|
|
8254
|
+
ks.value.length ? (d(!0), v(D, { key: 1 }, E(ks.value, (l) => (d(), v("p", {
|
|
8177
8255
|
key: l.id
|
|
8178
8256
|
}, [
|
|
8179
8257
|
e("b", null, c(l.label) + ":", 1),
|
|
@@ -8221,7 +8299,7 @@ Scope:${u}
|
|
|
8221
8299
|
]),
|
|
8222
8300
|
So.value === "overview" ? (d(), v(D, { key: 0 }, [
|
|
8223
8301
|
e("div", Dw, [
|
|
8224
|
-
(d(!0), v(D, null,
|
|
8302
|
+
(d(!0), v(D, null, E(Uc.value, (l) => (d(), v("section", {
|
|
8225
8303
|
key: l.label
|
|
8226
8304
|
}, [
|
|
8227
8305
|
e("span", null, c(l.label), 1),
|
|
@@ -8230,12 +8308,12 @@ Scope:${u}
|
|
|
8230
8308
|
]))), 128))
|
|
8231
8309
|
]),
|
|
8232
8310
|
e("div", Aw, [
|
|
8233
|
-
e("div",
|
|
8311
|
+
e("div", Tw, [
|
|
8234
8312
|
s[137] || (s[137] = e("p", null, "问题清单", -1)),
|
|
8235
8313
|
e("span", null, c(ti.value.filter((l) => l.tone !== "success").length) + " 个待关注项", 1)
|
|
8236
8314
|
]),
|
|
8237
|
-
e("div",
|
|
8238
|
-
(d(!0), v(D, null,
|
|
8315
|
+
e("div", Ew, [
|
|
8316
|
+
(d(!0), v(D, null, E(ti.value, (l) => (d(), v("section", {
|
|
8239
8317
|
key: l.title,
|
|
8240
8318
|
class: A(`is-${l.tone}`)
|
|
8241
8319
|
}, [
|
|
@@ -8263,7 +8341,7 @@ Scope:${u}
|
|
|
8263
8341
|
])
|
|
8264
8342
|
], -1)),
|
|
8265
8343
|
e("tbody", null, [
|
|
8266
|
-
(d(!0), v(D, null,
|
|
8344
|
+
(d(!0), v(D, null, E(Qn.value, (l) => (d(), v("tr", {
|
|
8267
8345
|
key: l.id,
|
|
8268
8346
|
class: A({ "has-gap": l.describedCount < l.stateCount || !l.inFlow })
|
|
8269
8347
|
}, [
|
|
@@ -8301,7 +8379,7 @@ Scope:${u}
|
|
|
8301
8379
|
}, " × ")
|
|
8302
8380
|
]),
|
|
8303
8381
|
e("div", Mw, [
|
|
8304
|
-
(d(!0), v(D, null,
|
|
8382
|
+
(d(!0), v(D, null, E(i(ys), (l) => (d(), v("section", {
|
|
8305
8383
|
key: l.hash,
|
|
8306
8384
|
class: "overflow-hidden rounded-[16px] bg-soft transition"
|
|
8307
8385
|
}, [
|
|
@@ -8323,7 +8401,7 @@ Scope:${u}
|
|
|
8323
8401
|
], 8, Vw),
|
|
8324
8402
|
bs.value === l.hash ? (d(), v("div", Kw, [
|
|
8325
8403
|
li(l).length ? (d(), v("div", Jw, [
|
|
8326
|
-
(d(!0), v(D, null,
|
|
8404
|
+
(d(!0), v(D, null, E(li(l), (w) => (d(), v("p", {
|
|
8327
8405
|
key: `${l.hash}-${w}`,
|
|
8328
8406
|
class: "rounded-[12px] bg-panel px-3 py-2 text-xs leading-5 text-muted"
|
|
8329
8407
|
}, c(w), 1))), 128))
|
|
@@ -8366,7 +8444,7 @@ Scope:${u}
|
|
|
8366
8444
|
[z, Io.value]
|
|
8367
8445
|
]),
|
|
8368
8446
|
e("div", Zw, [
|
|
8369
|
-
(d(!0), v(D, null,
|
|
8447
|
+
(d(!0), v(D, null, E(mc.value, (l) => (d(), v("section", {
|
|
8370
8448
|
key: l.screen.id,
|
|
8371
8449
|
class: "mobile-page-picker-item"
|
|
8372
8450
|
}, [
|
|
@@ -8376,22 +8454,22 @@ Scope:${u}
|
|
|
8376
8454
|
onClick: (w) => l.states.length ? hd(l.screen.id) : yd(l.screen.id)
|
|
8377
8455
|
}, [
|
|
8378
8456
|
e("span", Qw, c(l.screen.code), 1),
|
|
8379
|
-
e("span",
|
|
8457
|
+
e("span", eS, [
|
|
8380
8458
|
e("b", null, c(l.screen.title), 1),
|
|
8381
8459
|
e("small", null, c(l.screen.subtitle), 1)
|
|
8382
8460
|
]),
|
|
8383
|
-
l.states.length ? (d(), v("span",
|
|
8461
|
+
l.states.length ? (d(), v("span", tS, c(l.states.length), 1)) : S("", !0)
|
|
8384
8462
|
], 10, qw),
|
|
8385
|
-
l.states.length && (l.forceExpanded || vs.value.has(l.screen.id)) ? (d(), v("div",
|
|
8386
|
-
(d(!0), v(D, null,
|
|
8463
|
+
l.states.length && (l.forceExpanded || vs.value.has(l.screen.id)) ? (d(), v("div", nS, [
|
|
8464
|
+
(d(!0), v(D, null, E(l.states, (w) => (d(), v("button", {
|
|
8387
8465
|
key: w.id,
|
|
8388
8466
|
type: "button",
|
|
8389
|
-
class: A({ active: i(h) === l.screen.id && i(
|
|
8467
|
+
class: A({ active: i(h) === l.screen.id && i(T) === w.id }),
|
|
8390
8468
|
onClick: (O) => bd(l.screen.id, w.id)
|
|
8391
8469
|
}, [
|
|
8392
8470
|
s[142] || (s[142] = e("span", null, null, -1)),
|
|
8393
8471
|
K(" " + c(w.label), 1)
|
|
8394
|
-
], 10,
|
|
8472
|
+
], 10, oS))), 128))
|
|
8395
8473
|
])) : S("", !0)
|
|
8396
8474
|
]))), 128))
|
|
8397
8475
|
])
|
|
@@ -8456,5 +8534,5 @@ Scope:${u}
|
|
|
8456
8534
|
}
|
|
8457
8535
|
});
|
|
8458
8536
|
export {
|
|
8459
|
-
|
|
8537
|
+
cS as default
|
|
8460
8538
|
};
|