@huyooo/ui 0.10.3 → 0.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/AuthkitSignInPhone-BWPCpUie.js +3034 -0
  2. package/dist/{Clipboard-CMm8I4Rb.js → Clipboard-CK_nROjb.js} +1 -1
  3. package/dist/CollapseItem-DUzZA6tx.js +124 -0
  4. package/dist/{Contact-Dgn8_it4.js → Contact-CpHU1bJ7.js} +2 -2
  5. package/dist/{CustomTable-CVZ4mFzi.js → CustomTable-1W5byjgJ.js} +3 -2
  6. package/dist/FeedbackModal-qAJLL3V3.js +1535 -0
  7. package/dist/{LandingPageSectionTabs-Dv_xOLqR.js → LandingPageSectionTabs-B6ZVxR47.js} +1 -1
  8. package/dist/MessageNoticeNotificationsDetails.vue_vue_type_script_setup_true_lang-D109kT8_.js +1282 -0
  9. package/dist/{PaySubscriptions-W6GJ28uE.js → PaySubscriptions-C4Een__-.js} +17 -16
  10. package/dist/{ReferrerReferees-C5Sjn7aD.js → ReferrerReferees-DIassvGO.js} +8 -8
  11. package/dist/{Upload.vue_vue_type_script_setup_true_lang-C4-In_x4.js → Upload.vue_vue_type_script_setup_true_lang-DA8VZBrl.js} +1 -1
  12. package/dist/UserAccountMenu-BIRTtjLb.js +266 -0
  13. package/dist/UserSubscriptionBaseInformation-BUs3qiHd.js +60 -0
  14. package/dist/WidthContainer-TXsvW1ut.js +673 -0
  15. package/dist/{apiClients-DJchWBAG.js → apiClients-ANEApCyY.js} +84 -75
  16. package/dist/authkit.d.ts +5 -6
  17. package/dist/authkit.js +43 -43
  18. package/dist/common.js +3 -3
  19. package/dist/components/Authkit/Auth/AuthkitServiceAgreementAndPrivacyProtection.vue.d.ts +5 -5
  20. package/dist/components/Authkit/AuthkitAuthModal.vue.d.ts +13 -31
  21. package/dist/components/Feedback/FeedbackBubbleEnd.vue.d.ts +1 -1
  22. package/dist/components/Feedback/FeedbackBubbleStart.vue.d.ts +1 -1
  23. package/dist/components/User/UserButton.vue.d.ts +1 -36
  24. package/dist/components/User/UserPanel.vue.d.ts +26 -201
  25. package/dist/components/User/UserPanelItem.vue.d.ts +38 -0
  26. package/dist/composables/Authkit/useAuthkitAuth.d.ts +34 -10
  27. package/dist/composables/Authkit/useAuthkitAuthModal.d.ts +22 -3
  28. package/dist/composables/Authkit/useLegalLinks.d.ts +34 -0
  29. package/dist/composables/Authkit/useOauth.d.ts +0 -1
  30. package/dist/composables.d.ts +3 -2
  31. package/dist/composables.js +27 -25
  32. package/dist/{useUploadCos-BO3W_uqs.js → cos-js-sdk-v5-BJ5AlBRu.js} +2232 -2469
  33. package/dist/feedback.js +15 -16
  34. package/dist/landingPage.js +1 -1
  35. package/dist/main.js +177 -177
  36. package/dist/message.js +9 -10
  37. package/dist/pay.js +1 -1
  38. package/dist/privateCom.js +1 -1
  39. package/dist/referrer.js +1 -1
  40. package/dist/style.css +1 -1
  41. package/dist/upload.js +2 -2
  42. package/dist/{useAuthkitAppsAuthPageInfo-C3EHOtlk.js → useAuthkitAppsAuthPageInfo-Da2yJTT-.js} +1 -1
  43. package/dist/{useAuthkitCreateAndUpdate-CPkogY7K.js → useAuthkitCreateAndUpdate-BLs5vQOu.js} +1 -1
  44. package/dist/useAuthkitUsersProfile-Cx8NXjlt.js +186 -0
  45. package/dist/{useDownloads-COXmopbe.js → useDownloads-DT5W2af6.js} +1 -1
  46. package/dist/useLegalLinks-BIF45kUt.js +60 -0
  47. package/dist/{useMessageNotifications-SIM85vdb.js → useMessageNotifications-CavBmgO7.js} +1 -1
  48. package/dist/{useSEO-DeAU9YEc.js → useSEO-MPXQf0dn.js} +2 -2
  49. package/dist/{useTableHandle-CWu0LbeI.js → useTableHandle--NSbZ-57.js} +1 -1
  50. package/dist/useUploadCos-D6y0INvP.js +242 -0
  51. package/dist/user.d.ts +1 -0
  52. package/dist/user.js +9 -7
  53. package/dist/utils/legalLinks.d.ts +22 -0
  54. package/package.json +1 -1
  55. package/dist/AuthkitAuthModal-De0eEWOC.js +0 -2112
  56. package/dist/AuthkitSignInPhone-DEUVn3Rq.js +0 -920
  57. package/dist/CollapseItem-BAuejDBZ.js +0 -57
  58. package/dist/FeedbackItem-CRiLkWMh.js +0 -495
  59. package/dist/FeedbackModal-B8WLPCy_.js +0 -1053
  60. package/dist/MessageHandle-DpIUeQ7U.js +0 -1147
  61. package/dist/MessageNoticeNotificationsDetails.vue_vue_type_script_setup_true_lang-BbtfWRUD.js +0 -142
  62. package/dist/UserAccountMenu-OdwonGFa.js +0 -633
  63. package/dist/WidthContainer-Cpdc67hQ.js +0 -652
  64. package/dist/index-CUfrjRxu.js +0 -73
  65. package/dist/useAuthkitUsersProfile-BqW74gfs.js +0 -172
@@ -0,0 +1,1535 @@
1
+ /* empty css */
2
+ /* empty css */
3
+ import { defineComponent as I, computed as L, openBlock as i, createElementBlock as y, normalizeStyle as P, normalizeClass as O, createElementVNode as v, createBlock as C, unref as l, withCtx as c, createVNode as d, createCommentVNode as V, Fragment as j, createTextVNode as z, toDisplayString as F, withDirectives as ue, vShow as ce, ref as b, renderSlot as Ve, renderList as X, onUnmounted as je, h as de, nextTick as E, onMounted as Ne, onBeforeUnmount as Pe } from "vue";
4
+ import { Space as _e, Image as he, Avatar as Ce, Popover as De, Descriptions as Me, DescriptionsItem as J, Tag as A, Spin as Oe, Button as le, Upload as Ee, Form as Ae, FormItem as Y, Input as Te, Select as pe, Option as fe, Textarea as We, Message as Ke, Breadcrumb as Ze, BreadcrumbItem as me, Modal as He } from "@arco-design/web-vue";
5
+ import { _ as W, g as K, i as Z } from "./plugin-vue_export-helper-LjDO2Zua.js";
6
+ import { _ as U } from "./_plugin-vue_export-helper-CHgC5LLL.js";
7
+ /* empty css */
8
+ /* empty css */
9
+ /* empty css */
10
+ /* empty css */
11
+ import { u as we } from "./useUploadCos-D6y0INvP.js";
12
+ import { o as M, g as $e } from "./apiClients-ANEApCyY.js";
13
+ import { Icon as Se } from "@iconify/vue";
14
+ /* empty css */
15
+ import { M as Ye } from "./Menu-Cy2ZPeaz.js";
16
+ /* empty css */
17
+ /* empty css */
18
+ /* empty css */
19
+ /* empty css */
20
+ /* empty css */
21
+ import "./cos-js-sdk-v5-BJ5AlBRu.js";
22
+ /* empty css */
23
+ import { f as T } from "./index-D56hUMeD.js";
24
+ import { C as Xe } from "./CustomTable-1W5byjgJ.js";
25
+ import { Bubble as xe, Prompts as Ge, Sender as Je } from "ant-design-x-vue";
26
+ /* empty css */
27
+ import { C as Ie } from "./Clipboard-CK_nROjb.js";
28
+ const Qe = I({
29
+ name: "IconDown",
30
+ props: {
31
+ size: {
32
+ type: [Number, String]
33
+ },
34
+ strokeWidth: {
35
+ type: Number,
36
+ default: 4
37
+ },
38
+ strokeLinecap: {
39
+ type: String,
40
+ default: "butt",
41
+ validator: (e) => ["butt", "round", "square"].includes(e)
42
+ },
43
+ strokeLinejoin: {
44
+ type: String,
45
+ default: "miter",
46
+ validator: (e) => ["arcs", "bevel", "miter", "miter-clip", "round"].includes(e)
47
+ },
48
+ rotate: Number,
49
+ spin: Boolean
50
+ },
51
+ emits: {
52
+ click: (e) => !0
53
+ },
54
+ setup(e, {
55
+ emit: t
56
+ }) {
57
+ const n = K("icon"), s = L(() => [n, `${n}-down`, {
58
+ [`${n}-spin`]: e.spin
59
+ }]), o = L(() => {
60
+ const a = {};
61
+ return e.size && (a.fontSize = Z(e.size) ? `${e.size}px` : e.size), e.rotate && (a.transform = `rotate(${e.rotate}deg)`), a;
62
+ });
63
+ return {
64
+ cls: s,
65
+ innerStyle: o,
66
+ onClick: (a) => {
67
+ t("click", a);
68
+ }
69
+ };
70
+ }
71
+ }), et = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
72
+ function tt(e, t, n, s, o, u) {
73
+ return i(), y("svg", {
74
+ viewBox: "0 0 48 48",
75
+ fill: "none",
76
+ xmlns: "http://www.w3.org/2000/svg",
77
+ stroke: "currentColor",
78
+ class: O(e.cls),
79
+ style: P(e.innerStyle),
80
+ "stroke-width": e.strokeWidth,
81
+ "stroke-linecap": e.strokeLinecap,
82
+ "stroke-linejoin": e.strokeLinejoin,
83
+ onClick: t[0] || (t[0] = (...a) => e.onClick && e.onClick(...a))
84
+ }, t[1] || (t[1] = [v("path", {
85
+ d: "M39.6 17.443 24.043 33 8.487 17.443"
86
+ }, null, -1)]), 14, et);
87
+ }
88
+ var Q = /* @__PURE__ */ W(Qe, [["render", tt]]);
89
+ const nt = Object.assign(Q, {
90
+ install: (e, t) => {
91
+ var n;
92
+ const s = (n = t == null ? void 0 : t.iconPrefix) != null ? n : "";
93
+ e.component(s + Q.name, Q);
94
+ }
95
+ }), at = I({
96
+ name: "IconClose",
97
+ props: {
98
+ size: {
99
+ type: [Number, String]
100
+ },
101
+ strokeWidth: {
102
+ type: Number,
103
+ default: 4
104
+ },
105
+ strokeLinecap: {
106
+ type: String,
107
+ default: "butt",
108
+ validator: (e) => ["butt", "round", "square"].includes(e)
109
+ },
110
+ strokeLinejoin: {
111
+ type: String,
112
+ default: "miter",
113
+ validator: (e) => ["arcs", "bevel", "miter", "miter-clip", "round"].includes(e)
114
+ },
115
+ rotate: Number,
116
+ spin: Boolean
117
+ },
118
+ emits: {
119
+ click: (e) => !0
120
+ },
121
+ setup(e, {
122
+ emit: t
123
+ }) {
124
+ const n = K("icon"), s = L(() => [n, `${n}-close`, {
125
+ [`${n}-spin`]: e.spin
126
+ }]), o = L(() => {
127
+ const a = {};
128
+ return e.size && (a.fontSize = Z(e.size) ? `${e.size}px` : e.size), e.rotate && (a.transform = `rotate(${e.rotate}deg)`), a;
129
+ });
130
+ return {
131
+ cls: s,
132
+ innerStyle: o,
133
+ onClick: (a) => {
134
+ t("click", a);
135
+ }
136
+ };
137
+ }
138
+ }), st = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
139
+ function lt(e, t, n, s, o, u) {
140
+ return i(), y("svg", {
141
+ viewBox: "0 0 48 48",
142
+ fill: "none",
143
+ xmlns: "http://www.w3.org/2000/svg",
144
+ stroke: "currentColor",
145
+ class: O(e.cls),
146
+ style: P(e.innerStyle),
147
+ "stroke-width": e.strokeWidth,
148
+ "stroke-linecap": e.strokeLinecap,
149
+ "stroke-linejoin": e.strokeLinejoin,
150
+ onClick: t[0] || (t[0] = (...a) => e.onClick && e.onClick(...a))
151
+ }, t[1] || (t[1] = [v("path", {
152
+ d: "M9.857 9.858 24 24m0 0 14.142 14.142M24 24 38.142 9.858M24 24 9.857 38.142"
153
+ }, null, -1)]), 14, st);
154
+ }
155
+ var ee = /* @__PURE__ */ W(at, [["render", lt]]);
156
+ const ot = Object.assign(ee, {
157
+ install: (e, t) => {
158
+ var n;
159
+ const s = (n = t == null ? void 0 : t.iconPrefix) != null ? n : "";
160
+ e.component(s + ee.name, ee);
161
+ }
162
+ }), rt = I({
163
+ name: "IconExclamationCircle",
164
+ props: {
165
+ size: {
166
+ type: [Number, String]
167
+ },
168
+ strokeWidth: {
169
+ type: Number,
170
+ default: 4
171
+ },
172
+ strokeLinecap: {
173
+ type: String,
174
+ default: "butt",
175
+ validator: (e) => ["butt", "round", "square"].includes(e)
176
+ },
177
+ strokeLinejoin: {
178
+ type: String,
179
+ default: "miter",
180
+ validator: (e) => ["arcs", "bevel", "miter", "miter-clip", "round"].includes(e)
181
+ },
182
+ rotate: Number,
183
+ spin: Boolean
184
+ },
185
+ emits: {
186
+ click: (e) => !0
187
+ },
188
+ setup(e, {
189
+ emit: t
190
+ }) {
191
+ const n = K("icon"), s = L(() => [n, `${n}-exclamation-circle`, {
192
+ [`${n}-spin`]: e.spin
193
+ }]), o = L(() => {
194
+ const a = {};
195
+ return e.size && (a.fontSize = Z(e.size) ? `${e.size}px` : e.size), e.rotate && (a.transform = `rotate(${e.rotate}deg)`), a;
196
+ });
197
+ return {
198
+ cls: s,
199
+ innerStyle: o,
200
+ onClick: (a) => {
201
+ t("click", a);
202
+ }
203
+ };
204
+ }
205
+ }), it = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
206
+ function ut(e, t, n, s, o, u) {
207
+ return i(), y("svg", {
208
+ viewBox: "0 0 48 48",
209
+ fill: "none",
210
+ xmlns: "http://www.w3.org/2000/svg",
211
+ stroke: "currentColor",
212
+ class: O(e.cls),
213
+ style: P(e.innerStyle),
214
+ "stroke-width": e.strokeWidth,
215
+ "stroke-linecap": e.strokeLinecap,
216
+ "stroke-linejoin": e.strokeLinejoin,
217
+ onClick: t[0] || (t[0] = (...a) => e.onClick && e.onClick(...a))
218
+ }, t[1] || (t[1] = [v("path", {
219
+ d: "M24 28V14m0 16v4M6 24c0-9.941 8.059-18 18-18s18 8.059 18 18-8.059 18-18 18S6 33.941 6 24Z"
220
+ }, null, -1)]), 14, it);
221
+ }
222
+ var te = /* @__PURE__ */ W(rt, [["render", ut]]);
223
+ const ve = Object.assign(te, {
224
+ install: (e, t) => {
225
+ var n;
226
+ const s = (n = t == null ? void 0 : t.iconPrefix) != null ? n : "";
227
+ e.component(s + te.name, te);
228
+ }
229
+ }), ct = I({
230
+ name: "IconLink",
231
+ props: {
232
+ size: {
233
+ type: [Number, String]
234
+ },
235
+ strokeWidth: {
236
+ type: Number,
237
+ default: 4
238
+ },
239
+ strokeLinecap: {
240
+ type: String,
241
+ default: "butt",
242
+ validator: (e) => ["butt", "round", "square"].includes(e)
243
+ },
244
+ strokeLinejoin: {
245
+ type: String,
246
+ default: "miter",
247
+ validator: (e) => ["arcs", "bevel", "miter", "miter-clip", "round"].includes(e)
248
+ },
249
+ rotate: Number,
250
+ spin: Boolean
251
+ },
252
+ emits: {
253
+ click: (e) => !0
254
+ },
255
+ setup(e, {
256
+ emit: t
257
+ }) {
258
+ const n = K("icon"), s = L(() => [n, `${n}-link`, {
259
+ [`${n}-spin`]: e.spin
260
+ }]), o = L(() => {
261
+ const a = {};
262
+ return e.size && (a.fontSize = Z(e.size) ? `${e.size}px` : e.size), e.rotate && (a.transform = `rotate(${e.rotate}deg)`), a;
263
+ });
264
+ return {
265
+ cls: s,
266
+ innerStyle: o,
267
+ onClick: (a) => {
268
+ t("click", a);
269
+ }
270
+ };
271
+ }
272
+ }), dt = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
273
+ function pt(e, t, n, s, o, u) {
274
+ return i(), y("svg", {
275
+ viewBox: "0 0 48 48",
276
+ fill: "none",
277
+ xmlns: "http://www.w3.org/2000/svg",
278
+ stroke: "currentColor",
279
+ class: O(e.cls),
280
+ style: P(e.innerStyle),
281
+ "stroke-width": e.strokeWidth,
282
+ "stroke-linecap": e.strokeLinecap,
283
+ "stroke-linejoin": e.strokeLinejoin,
284
+ onClick: t[0] || (t[0] = (...a) => e.onClick && e.onClick(...a))
285
+ }, t[1] || (t[1] = [v("path", {
286
+ d: "m14.1 25.414-4.95 4.95a6 6 0 0 0 8.486 8.485l8.485-8.485a6 6 0 0 0 0-8.485m7.779.707 4.95-4.95a6 6 0 1 0-8.486-8.485l-8.485 8.485a6 6 0 0 0 0 8.485"
287
+ }, null, -1)]), 14, dt);
288
+ }
289
+ var ne = /* @__PURE__ */ W(ct, [["render", pt]]);
290
+ const ft = Object.assign(ne, {
291
+ install: (e, t) => {
292
+ var n;
293
+ const s = (n = t == null ? void 0 : t.iconPrefix) != null ? n : "";
294
+ e.component(s + ne.name, ne);
295
+ }
296
+ }), mt = I({
297
+ name: "IconRobot",
298
+ props: {
299
+ size: {
300
+ type: [Number, String]
301
+ },
302
+ strokeWidth: {
303
+ type: Number,
304
+ default: 4
305
+ },
306
+ strokeLinecap: {
307
+ type: String,
308
+ default: "butt",
309
+ validator: (e) => ["butt", "round", "square"].includes(e)
310
+ },
311
+ strokeLinejoin: {
312
+ type: String,
313
+ default: "miter",
314
+ validator: (e) => ["arcs", "bevel", "miter", "miter-clip", "round"].includes(e)
315
+ },
316
+ rotate: Number,
317
+ spin: Boolean
318
+ },
319
+ emits: {
320
+ click: (e) => !0
321
+ },
322
+ setup(e, {
323
+ emit: t
324
+ }) {
325
+ const n = K("icon"), s = L(() => [n, `${n}-robot`, {
326
+ [`${n}-spin`]: e.spin
327
+ }]), o = L(() => {
328
+ const a = {};
329
+ return e.size && (a.fontSize = Z(e.size) ? `${e.size}px` : e.size), e.rotate && (a.transform = `rotate(${e.rotate}deg)`), a;
330
+ });
331
+ return {
332
+ cls: s,
333
+ innerStyle: o,
334
+ onClick: (a) => {
335
+ t("click", a);
336
+ }
337
+ };
338
+ }
339
+ }), vt = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
340
+ function yt(e, t, n, s, o, u) {
341
+ return i(), y("svg", {
342
+ viewBox: "0 0 48 48",
343
+ fill: "none",
344
+ xmlns: "http://www.w3.org/2000/svg",
345
+ stroke: "currentColor",
346
+ class: O(e.cls),
347
+ style: P(e.innerStyle),
348
+ "stroke-width": e.strokeWidth,
349
+ "stroke-linecap": e.strokeLinecap,
350
+ "stroke-linejoin": e.strokeLinejoin,
351
+ onClick: t[0] || (t[0] = (...a) => e.onClick && e.onClick(...a))
352
+ }, t[1] || (t[1] = [v("path", {
353
+ d: "M18 26h1v1h-1v-1ZM29 26h1v1h-1v-1Z",
354
+ fill: "currentColor",
355
+ stroke: "none"
356
+ }, null, -1), v("path", {
357
+ d: "M24 7v6m0-6h5m-5 0h-5M3 21v11m36 8H9V13h30v29m6-21v11m-27-6h1v1h-1v-1Zm11 0h1v1h-1v-1Z"
358
+ }, null, -1)]), 14, vt);
359
+ }
360
+ var ae = /* @__PURE__ */ W(mt, [["render", yt]]);
361
+ const kt = Object.assign(ae, {
362
+ install: (e, t) => {
363
+ var n;
364
+ const s = (n = t == null ? void 0 : t.iconPrefix) != null ? n : "";
365
+ e.component(s + ae.name, ae);
366
+ }
367
+ }), gt = /* @__PURE__ */ I({
368
+ __name: "FeedbackRefresh",
369
+ setup(e) {
370
+ return (t, n) => (i(), C(l(Se), {
371
+ class: "icon",
372
+ icon: "mingcute:refresh-2-line"
373
+ }));
374
+ }
375
+ }), bt = /* @__PURE__ */ U(gt, [["__scopeId", "data-v-64bb6fc2"]]), _t = ["src"], ht = /* @__PURE__ */ I({
376
+ __name: "FeedbackBubbleEnd",
377
+ props: {
378
+ value: {
379
+ type: String,
380
+ required: !1,
381
+ default: ""
382
+ },
383
+ type: {
384
+ type: String,
385
+ default: "text",
386
+ validator: (e) => ["text", "image"].includes(e)
387
+ },
388
+ avatarUrl: {
389
+ type: String,
390
+ default: "A"
391
+ },
392
+ bubbleStyle: {
393
+ type: Object,
394
+ default: () => ({
395
+ paddingLeft: "52px"
396
+ })
397
+ },
398
+ showRefresh: {
399
+ type: Boolean,
400
+ default: !1
401
+ },
402
+ showClipboard: {
403
+ type: Boolean,
404
+ default: !1
405
+ }
406
+ },
407
+ emits: ["refresh"],
408
+ setup(e, {
409
+ emit: t
410
+ }) {
411
+ const n = e, s = t;
412
+ function o() {
413
+ s("refresh");
414
+ }
415
+ return (u, a) => (i(), C(l(xe), {
416
+ placement: "end",
417
+ style: P(n.bubbleStyle),
418
+ styles: {
419
+ content: {
420
+ padding: n.type === "image" ? "0px" : void 0
421
+ }
422
+ }
423
+ }, {
424
+ avatar: c(() => [d(l(Ce), null, {
425
+ default: c(() => [v("img", {
426
+ alt: "avatar",
427
+ src: n.avatarUrl
428
+ }, null, 8, _t)]),
429
+ _: 1
430
+ })]),
431
+ message: c(() => [n.type === "text" ? (i(), y(j, {
432
+ key: 0
433
+ }, [z(F(n.value), 1)], 64)) : n.type === "image" ? (i(), C(l(he), {
434
+ key: 1,
435
+ width: "100",
436
+ src: n.value,
437
+ "show-loader": ""
438
+ }, null, 8, ["src"])) : V("", !0)]),
439
+ footer: c(() => [d(l(_e), null, {
440
+ default: c(() => [n.showClipboard && n.type === "text" ? (i(), C(Ie, {
441
+ key: 0,
442
+ value: e.value
443
+ }, null, 8, ["value"])) : V("", !0), n.showRefresh ? (i(), C(bt, {
444
+ key: 1,
445
+ onClick: o
446
+ })) : V("", !0)]),
447
+ _: 1
448
+ })]),
449
+ _: 1
450
+ }, 8, ["style", "styles"]));
451
+ }
452
+ }), ye = /* @__PURE__ */ U(ht, [["__scopeId", "data-v-2e1b7acf"]]), Ct = ["src"], wt = /* @__PURE__ */ I({
453
+ __name: "FeedbackBubbleStart",
454
+ props: {
455
+ value: {
456
+ type: String,
457
+ required: !1,
458
+ default: ""
459
+ },
460
+ type: {
461
+ type: String,
462
+ default: "text",
463
+ validator: (e) => ["text", "image"].includes(e)
464
+ },
465
+ avatarUrl: {
466
+ type: String,
467
+ default: "A"
468
+ },
469
+ bubbleStyle: {
470
+ type: Object,
471
+ default: () => ({
472
+ paddingRight: "52px"
473
+ })
474
+ },
475
+ showClipboard: {
476
+ type: Boolean,
477
+ default: !1
478
+ }
479
+ },
480
+ emits: ["footer-click"],
481
+ setup(e, {
482
+ emit: t
483
+ }) {
484
+ const n = e;
485
+ return (s, o) => (i(), C(l(xe), {
486
+ placement: "start",
487
+ style: P(n.bubbleStyle),
488
+ styles: {
489
+ content: {
490
+ padding: n.type === "image" ? "0px" : void 0
491
+ }
492
+ }
493
+ }, {
494
+ avatar: c(() => [d(l(Ce), null, {
495
+ default: c(() => [v("img", {
496
+ alt: "avatar",
497
+ src: n.avatarUrl
498
+ }, null, 8, Ct)]),
499
+ _: 1
500
+ })]),
501
+ message: c(() => [n.type === "text" ? (i(), y(j, {
502
+ key: 0
503
+ }, [z(F(n.value), 1)], 64)) : n.type === "image" ? (i(), C(l(he), {
504
+ key: 1,
505
+ width: "100",
506
+ src: n.value,
507
+ "show-loader": ""
508
+ }, null, 8, ["src"])) : V("", !0)]),
509
+ footer: c(() => [d(l(_e), null, {
510
+ default: c(() => [n.showClipboard && n.type === "text" ? (i(), C(Ie, {
511
+ key: 0,
512
+ value: n.value
513
+ }, null, 8, ["value"])) : V("", !0)]),
514
+ _: 1
515
+ })]),
516
+ _: 1
517
+ }, 8, ["style", "styles"]));
518
+ }
519
+ }), ke = /* @__PURE__ */ U(wt, [["__scopeId", "data-v-37150f19"]]), $t = /* @__PURE__ */ I({
520
+ __name: "FeedbackFloatButton",
521
+ props: {
522
+ active: {
523
+ type: Boolean,
524
+ required: !0,
525
+ default: !0
526
+ },
527
+ offsetX: {
528
+ type: Number,
529
+ default: 20
530
+ },
531
+ offsetY: {
532
+ type: Number,
533
+ default: 20
534
+ },
535
+ iconSize: {
536
+ type: Number,
537
+ default: 18
538
+ }
539
+ },
540
+ setup(e) {
541
+ const t = e, n = L(() => ({
542
+ bottom: `${t.offsetY}px`,
543
+ right: `${t.offsetY}px`,
544
+ fontSize: `${t.iconSize}px`
545
+ }));
546
+ return (s, o) => (i(), y("div", {
547
+ class: O(["float-button", {
548
+ active: e.active
549
+ }]),
550
+ style: P(n.value)
551
+ }, [ue(d(l(kt), {
552
+ name: "Feedback/Help",
553
+ filled: "",
554
+ size: 18
555
+ }, null, 512), [[ce, !e.active]]), ue(d(l(nt), {
556
+ name: "Feedback/Close",
557
+ filled: "",
558
+ size: 18
559
+ }, null, 512), [[ce, e.active]])], 6));
560
+ }
561
+ }), St = /* @__PURE__ */ U($t, [["__scopeId", "data-v-f7b06b6d"]]), xt = {
562
+ class: "card"
563
+ }, It = {
564
+ class: "content"
565
+ }, Ft = {
566
+ class: "header"
567
+ }, Rt = {
568
+ class: "title"
569
+ }, zt = {
570
+ class: "description"
571
+ }, Lt = {
572
+ class: "body"
573
+ }, Bt = /* @__PURE__ */ I({
574
+ __name: "FeedbackContainer",
575
+ props: {
576
+ title: {
577
+ type: String,
578
+ required: !0
579
+ },
580
+ description: {
581
+ type: String,
582
+ required: !0
583
+ },
584
+ appId: {
585
+ type: String,
586
+ required: !0
587
+ }
588
+ },
589
+ setup(e, {
590
+ expose: t
591
+ }) {
592
+ const n = e, s = b(!1), o = L(() => ({
593
+ padding: 0,
594
+ marginTop: 0,
595
+ "border-radius": "14px",
596
+ background: "var(--huyooo-feedback-panel-gradient)",
597
+ backgroundSize: "100% 505px",
598
+ backgroundRepeat: "no-repeat",
599
+ border: "0px solid"
600
+ }));
601
+ function u() {
602
+ s.value = !0;
603
+ }
604
+ function a(p) {
605
+ }
606
+ function k() {
607
+ s.value = !1;
608
+ }
609
+ return t({
610
+ show: s
611
+ }), (p, r) => (i(), C(l(De), {
612
+ "popup-visible": s.value,
613
+ "onUpdate:popupVisible": r[0] || (r[0] = (_) => s.value = _),
614
+ trigger: "click",
615
+ "content-style": o.value,
616
+ "arrow-style": {
617
+ display: "none"
618
+ },
619
+ position: "tr",
620
+ onPopupVisibleChange: a
621
+ }, {
622
+ content: c(() => [v("div", xt, [v("div", It, [v("div", Ft, [v("div", {
623
+ class: "headerCancel",
624
+ onClick: k
625
+ }, [d(l(ot))]), v("div", Rt, F(n.title), 1), v("div", zt, F(n.description), 1)]), v("div", Lt, [Ve(p.$slots, "default", {}, void 0, !0)])])])]),
626
+ default: c(() => [d(St, {
627
+ active: s.value,
628
+ onClick: u
629
+ }, null, 8, ["active"])]),
630
+ _: 3
631
+ }, 8, ["popup-visible", "content-style"]));
632
+ }
633
+ }), An = /* @__PURE__ */ U(Bt, [["__scopeId", "data-v-99bf36fb"]]), Ut = {
634
+ style: {
635
+ "margin-bottom": "10px",
636
+ display: "flex",
637
+ gap: "10px"
638
+ }
639
+ }, qt = ["onClick"], Vt = /* @__PURE__ */ I({
640
+ __name: "FeedbackCustomTabs",
641
+ props: {
642
+ modelValue: {
643
+ type: String,
644
+ default: "1"
645
+ },
646
+ tabs: {
647
+ type: Array,
648
+ default: () => [{
649
+ label: "未读消息",
650
+ key: "1"
651
+ }, {
652
+ label: "已读消息",
653
+ key: "2"
654
+ }]
655
+ }
656
+ },
657
+ emits: ["update:modelValue", "change"],
658
+ setup(e, {
659
+ emit: t
660
+ }) {
661
+ const n = e, s = t;
662
+ function o(u) {
663
+ u !== n.modelValue && (s("update:modelValue", u), s("change", u));
664
+ }
665
+ return (u, a) => (i(), y("div", Ut, [(i(!0), y(j, null, X(e.tabs, (k) => (i(), y("span", {
666
+ key: k.key,
667
+ class: O(["custom-tab", [{
668
+ active: e.modelValue === k.key
669
+ }]]),
670
+ onClick: (p) => o(k.key)
671
+ }, F(k.label), 11, qt))), 128))]));
672
+ }
673
+ }), Tn = /* @__PURE__ */ U(Vt, [["__scopeId", "data-v-c10f714b"]]), x = [];
674
+ for (let e = 0; e < 256; ++e)
675
+ x.push((e + 256).toString(16).slice(1));
676
+ function jt(e, t = 0) {
677
+ return (x[e[t + 0]] + x[e[t + 1]] + x[e[t + 2]] + x[e[t + 3]] + "-" + x[e[t + 4]] + x[e[t + 5]] + "-" + x[e[t + 6]] + x[e[t + 7]] + "-" + x[e[t + 8]] + x[e[t + 9]] + "-" + x[e[t + 10]] + x[e[t + 11]] + x[e[t + 12]] + x[e[t + 13]] + x[e[t + 14]] + x[e[t + 15]]).toLowerCase();
678
+ }
679
+ let se;
680
+ const Nt = new Uint8Array(16);
681
+ function Pt() {
682
+ if (!se) {
683
+ if (typeof crypto > "u" || !crypto.getRandomValues)
684
+ throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
685
+ se = crypto.getRandomValues.bind(crypto);
686
+ }
687
+ return se(Nt);
688
+ }
689
+ const Dt = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), ge = {
690
+ randomUUID: Dt
691
+ };
692
+ function be(e, t, n) {
693
+ var o;
694
+ if (ge.randomUUID && !e)
695
+ return ge.randomUUID();
696
+ e = e || {};
697
+ const s = e.random ?? ((o = e.rng) == null ? void 0 : o.call(e)) ?? Pt();
698
+ if (s.length < 16)
699
+ throw new Error("Random bytes length must be >= 16");
700
+ return s[6] = s[6] & 15 | 64, s[8] = s[8] & 63 | 128, jt(s);
701
+ }
702
+ function Mt(e, t = {}) {
703
+ const {
704
+ interval: n = 2e3,
705
+ immediate: s = !1,
706
+ autoStart: o = !1
707
+ } = t, u = b(!1);
708
+ let a = null;
709
+ async function k() {
710
+ try {
711
+ await e();
712
+ } catch (w) {
713
+ console.error("轮询回调执行失败:", w);
714
+ }
715
+ }
716
+ function p() {
717
+ if (u.value) {
718
+ console.warn("轮询已在运行中");
719
+ return;
720
+ }
721
+ u.value = !0, s && k(), a = setInterval(k, n);
722
+ }
723
+ function r() {
724
+ a && (clearInterval(a), a = null), u.value = !1;
725
+ }
726
+ function _() {
727
+ r(), p();
728
+ }
729
+ return o && p(), je(() => {
730
+ r();
731
+ }), {
732
+ isPolling: u,
733
+ start: p,
734
+ stop: r,
735
+ restart: _
736
+ };
737
+ }
738
+ const oe = [{
739
+ key: "bugReports",
740
+ label: "问题报告"
741
+ }, {
742
+ key: "featureSuggestions",
743
+ label: "功能建议"
744
+ }, {
745
+ key: "technicalSupportRequests",
746
+ label: "技术支持请求"
747
+ }, {
748
+ key: "generalOpinions",
749
+ label: "一般意见"
750
+ }], Fe = [{
751
+ key: "urgent",
752
+ label: "紧急"
753
+ }, {
754
+ key: "high",
755
+ label: "高"
756
+ }, {
757
+ key: "normal",
758
+ label: "普通"
759
+ }, {
760
+ key: "low",
761
+ label: "低"
762
+ }], Re = [{
763
+ key: "newFeedback",
764
+ label: "新反馈"
765
+ }, {
766
+ key: "inProgress",
767
+ label: "处理中"
768
+ }, {
769
+ key: "pending",
770
+ label: "待处理"
771
+ }, {
772
+ key: "resolved",
773
+ label: "已解决"
774
+ }, {
775
+ key: "closed",
776
+ label: "已关闭"
777
+ }], Ot = {
778
+ class: "FeedBackDetails"
779
+ }, Et = {
780
+ class: "content"
781
+ }, At = {
782
+ key: 1,
783
+ class: "Bubbles"
784
+ }, Tt = {
785
+ class: "sender-container"
786
+ }, Wt = /* @__PURE__ */ I({
787
+ __name: "FeedbackDetails",
788
+ props: {
789
+ id: {
790
+ type: String,
791
+ required: !0,
792
+ default: () => ""
793
+ },
794
+ senderRole: {
795
+ type: String,
796
+ required: !0,
797
+ validator: (e) => ["user", "support"].includes(e)
798
+ }
799
+ },
800
+ setup(e) {
801
+ const t = {
802
+ color: "var(--huyooo-accent-primary)"
803
+ };
804
+ function n(f) {
805
+ return f === "inProgress" ? "orangered" : f === "pending" ? "gold" : f === "resolved" ? "green" : f === "closed" ? "gray" : "arcoblue";
806
+ }
807
+ const s = b(""), o = b(!1), u = [{
808
+ key: "1",
809
+ label: "如何补充更多信息",
810
+ description: "请详细描述您的问题或需求,以便我们更好地为您服务。",
811
+ disabled: !0,
812
+ icon: de(ve, {
813
+ style: t
814
+ })
815
+ }, {
816
+ key: "3",
817
+ label: "如何补充附件",
818
+ description: "如有相关附件(如日志、截图等),请一并上传以便加快处理速度。",
819
+ disabled: !0,
820
+ icon: de(ve, {
821
+ style: t
822
+ })
823
+ }], a = b(null), k = b(null), p = () => {
824
+ var f;
825
+ (f = a.value) == null || f.focus({
826
+ cursor: "end"
827
+ }), E(() => {
828
+ k.value && (k.value.scrollTop = k.value.scrollHeight);
829
+ });
830
+ }, r = e;
831
+ function _() {
832
+ }
833
+ const w = b(!1), h = b([]), $ = b(void 0), R = b({
834
+ id: void 0,
835
+ title: "",
836
+ description: "",
837
+ type: "bugReports",
838
+ status: "newFeedback",
839
+ reply: "",
840
+ createAt: ""
841
+ }), g = () => {
842
+ const {
843
+ uploadFile: f
844
+ } = we(), S = document.createElement("input");
845
+ S.type = "file", S.accept = "image/*", S.style.display = "none", document.body.append(S), S.addEventListener("change", async (m) => {
846
+ var ie;
847
+ const re = (ie = m.target.files) == null ? void 0 : ie[0];
848
+ if (re) {
849
+ o.value = !0;
850
+ try {
851
+ f({
852
+ bucketId: $e.feedbackBucketId,
853
+ file: re,
854
+ onFileFinish(Be, mn, Ue) {
855
+ const G = {
856
+ messageId: be(),
857
+ senderRole: r.senderRole,
858
+ type: "image",
859
+ key: Ue.Key
860
+ }, qe = {
861
+ id: r.id,
862
+ message: {
863
+ type: G.type,
864
+ key: G.key,
865
+ senderRole: G.senderRole
866
+ }
867
+ };
868
+ (async () => {
869
+ const {
870
+ data: H
871
+ } = await M.feedbackCenter.update.messages.post(qe);
872
+ H ? (h.value.push(H.message), typeof H.message.seq == "number" && ($.value = H.message.seq), E(() => {
873
+ p();
874
+ }), o.value = !1, r.senderRole === "support" && R.value.status === "newFeedback" && B()) : o.value = !1;
875
+ })();
876
+ },
877
+ onError(Be) {
878
+ o.value = !1;
879
+ }
880
+ });
881
+ } catch {
882
+ o.value = !1;
883
+ }
884
+ }
885
+ S.remove();
886
+ }), S.click();
887
+ };
888
+ async function N(f) {
889
+ o.value = !0, be();
890
+ const S = {
891
+ senderRole: r.senderRole,
892
+ type: "text",
893
+ content: f
894
+ }, m = {
895
+ id: r.id,
896
+ message: {
897
+ type: S.type,
898
+ content: S.content,
899
+ senderRole: S.senderRole
900
+ }
901
+ }, {
902
+ data: D
903
+ } = await M.feedbackCenter.update.messages.post(m);
904
+ o.value = !1, D && (h.value.push(D.message), typeof D.message.seq == "number" && ($.value = D.message.seq), E(() => {
905
+ p();
906
+ }), s.value = "", r.senderRole === "support" && R.value.status === "newFeedback" && B());
907
+ }
908
+ function q() {
909
+ N(s.value);
910
+ }
911
+ async function B() {
912
+ w.value = !0;
913
+ const {
914
+ data: f
915
+ } = await M.feedbackCenter.findOne.post({
916
+ id: r.id
917
+ });
918
+ w.value = !1, f && (R.value = f, f.messages && f.messages.length > 0 && (h.value = f.messages, $.value = f.messages.at(-1).seq));
919
+ }
920
+ async function ze() {
921
+ const {
922
+ data: f
923
+ } = await M.messages.list.incremental.post({
924
+ id: r.id,
925
+ lastSeq: $.value
926
+ });
927
+ f && f.messages && f.messages.length > 0 && (h.value.push(...f.messages), $.value = f.messages.at(-1).seq, E(() => {
928
+ p();
929
+ }));
930
+ }
931
+ async function Le() {
932
+ w.value = !0;
933
+ const {
934
+ data: f
935
+ } = await M.messages.list.post({
936
+ id: r.id
937
+ });
938
+ w.value = !1, f && f.messages && f.messages.length > 0 && (h.value.push(...f.messages), $.value = f.messages.at(-1).seq, E(() => {
939
+ p();
940
+ }));
941
+ }
942
+ return Mt(ze, {
943
+ interval: 2e3,
944
+ autoStart: !0
945
+ }), B(), Le(), (f, S) => (i(), y("div", Ot, [v("div", {
946
+ ref_key: "scrollableContentRef",
947
+ ref: k,
948
+ class: "scrollable-content"
949
+ }, [d(l(Me), {
950
+ title: "基本信息"
951
+ }, {
952
+ title: c(() => [...S[1] || (S[1] = [v("div", {
953
+ class: "title"
954
+ }, "基本信息", -1)])]),
955
+ default: c(() => [d(l(J), {
956
+ label: "标题:",
957
+ span: 3
958
+ }, {
959
+ default: c(() => [z(F(R.value.title), 1)]),
960
+ _: 1
961
+ }), d(l(J), {
962
+ label: "反馈类型:",
963
+ span: 1
964
+ }, {
965
+ default: c(() => [d(l(A), {
966
+ color: "arcoblue"
967
+ }, {
968
+ default: c(() => {
969
+ var m;
970
+ return [z(F((m = l(T)(l(oe), R.value.type)) == null ? void 0 : m.label), 1)];
971
+ }),
972
+ _: 1
973
+ })]),
974
+ _: 1
975
+ }), d(l(J), {
976
+ label: "状态:",
977
+ span: 1
978
+ }, {
979
+ default: c(() => [d(l(A), {
980
+ color: n(R.value.status)
981
+ }, {
982
+ default: c(() => {
983
+ var m;
984
+ return [z(F((m = l(T)(l(Re), R.value.status)) == null ? void 0 : m.label), 1)];
985
+ }),
986
+ _: 1
987
+ }, 8, ["color"])]),
988
+ _: 1
989
+ })]),
990
+ _: 1
991
+ }), v("div", Et, [S[2] || (S[2] = v("div", {
992
+ class: "title"
993
+ }, "沟通记录", -1)), d(l(Oe), {
994
+ class: "messageContent",
995
+ loading: w.value
996
+ }, {
997
+ default: c(() => [h.value.length == 0 ? (i(), C(l(Ge), {
998
+ key: 0,
999
+ title: "☕️ 温馨提示!",
1000
+ items: u,
1001
+ wrap: "",
1002
+ vertical: !1,
1003
+ onOnItemClick: _
1004
+ })) : (i(), y("div", At, [(i(!0), y(j, null, X(h.value, (m, D) => (i(), y(j, {
1005
+ key: D
1006
+ }, [m.type === "text" ? (i(), y(j, {
1007
+ key: 0
1008
+ }, [m.senderRole !== r.senderRole ? (i(), C(ke, {
1009
+ key: 0,
1010
+ value: m.content,
1011
+ type: m.type,
1012
+ "avatar-url": m.senderInfo.avatarUrl
1013
+ }, null, 8, ["value", "type", "avatar-url"])) : (i(), C(ye, {
1014
+ key: 1,
1015
+ value: m.content,
1016
+ "avatar-url": m.senderInfo.avatarUrl,
1017
+ type: m.type
1018
+ }, null, 8, ["value", "avatar-url", "type"]))], 64)) : (i(), y(j, {
1019
+ key: 1
1020
+ }, [m.senderRole !== r.senderRole ? (i(), C(ke, {
1021
+ key: 0,
1022
+ type: m.type,
1023
+ value: m.url,
1024
+ "avatar-text": "S",
1025
+ "avatar-url": m.senderInfo.avatarUrl
1026
+ }, null, 8, ["type", "value", "avatar-url"])) : (i(), C(ye, {
1027
+ key: 1,
1028
+ type: m.type,
1029
+ value: m.url,
1030
+ "avatar-url": m.senderInfo.avatarUrl
1031
+ }, null, 8, ["type", "value", "avatar-url"]))], 64))], 64))), 128))]))]),
1032
+ _: 1
1033
+ }, 8, ["loading"])])], 512), v("div", Tt, [d(l(Je), {
1034
+ ref_key: "senderRef",
1035
+ ref: a,
1036
+ value: s.value,
1037
+ "onUpdate:value": S[0] || (S[0] = (m) => s.value = m),
1038
+ placeholder: "请输入你要咨询的问题?",
1039
+ loading: o.value,
1040
+ "allow-speech": !1,
1041
+ "read-only": o.value,
1042
+ onSubmit: q
1043
+ }, {
1044
+ prefix: c(() => [d(l(le), {
1045
+ type: "text",
1046
+ class: "IconLink",
1047
+ onClick: g
1048
+ }, {
1049
+ icon: c(() => [d(l(ft))]),
1050
+ _: 1
1051
+ })]),
1052
+ _: 1
1053
+ }, 8, ["value", "loading", "read-only"])])]));
1054
+ }
1055
+ }), Kt = /* @__PURE__ */ U(Wt, [["__scopeId", "data-v-de790d44"]]), Zt = {
1056
+ class: "screenshots-upload"
1057
+ }, Ht = /* @__PURE__ */ I({
1058
+ __name: "FeedbackScreenshots",
1059
+ props: {
1060
+ urls: {
1061
+ type: Array,
1062
+ required: !0
1063
+ }
1064
+ },
1065
+ emits: ["change"],
1066
+ setup(e, {
1067
+ emit: t
1068
+ }) {
1069
+ const n = e, s = t, o = b(null), u = L(() => n.urls.map((r) => ({
1070
+ uid: r,
1071
+ name: r.split("/").pop() || r,
1072
+ url: r,
1073
+ status: "done",
1074
+ response: {
1075
+ url: r
1076
+ }
1077
+ })));
1078
+ function a(r) {
1079
+ return new Promise((_, w) => {
1080
+ const {
1081
+ uploadFile: h
1082
+ } = we();
1083
+ h({
1084
+ bucketId: $e.feedbackBucketId,
1085
+ file: r,
1086
+ onFileFinish($, R, g) {
1087
+ _(g.Key);
1088
+ },
1089
+ onError($) {
1090
+ w(new Error("上传截图失败"));
1091
+ }
1092
+ });
1093
+ });
1094
+ }
1095
+ async function k(r) {
1096
+ const _ = r.fileItem.file, w = await a(_);
1097
+ s("change", {
1098
+ key: w,
1099
+ localUrl: URL.createObjectURL(_)
1100
+ });
1101
+ }
1102
+ function p(r) {
1103
+ var w;
1104
+ const _ = (w = r.clipboardData) == null ? void 0 : w.items;
1105
+ if (_) {
1106
+ for (const h of _)
1107
+ if (h.type.indexOf("image") !== -1) {
1108
+ const $ = h.getAsFile();
1109
+ $ && k({
1110
+ fileItem: {
1111
+ file: $
1112
+ }
1113
+ });
1114
+ }
1115
+ }
1116
+ }
1117
+ return Ne(() => {
1118
+ window.addEventListener("paste", p);
1119
+ }), Pe(() => {
1120
+ window.removeEventListener("paste", p);
1121
+ }), (r, _) => (i(), y("div", Zt, [d(l(Ee), {
1122
+ ref_key: "uploadRef",
1123
+ ref: o,
1124
+ "list-type": "picture",
1125
+ "file-list": u.value,
1126
+ "show-upload-list": !0,
1127
+ "show-file-list": !0,
1128
+ "image-preview": !0,
1129
+ accept: "image/*",
1130
+ "custom-request": k
1131
+ }, null, 8, ["file-list"])]));
1132
+ }
1133
+ }), Wn = /* @__PURE__ */ U(Ht, [["__scopeId", "data-v-8e764d8f"]]), Yt = {
1134
+ class: "FeedBackFrom"
1135
+ }, Xt = /* @__PURE__ */ I({
1136
+ __name: "FeedbackForm",
1137
+ emits: ["confirm"],
1138
+ setup(e, {
1139
+ emit: t
1140
+ }) {
1141
+ const n = t, s = b(), o = b(!1), u = b({
1142
+ id: void 0,
1143
+ title: "",
1144
+ type: "bugReports",
1145
+ priority: "normal",
1146
+ description: "",
1147
+ screenshots: []
1148
+ });
1149
+ b([]);
1150
+ async function a() {
1151
+ if (!await s.value.validate()) {
1152
+ o.value = !0;
1153
+ const {
1154
+ error: p
1155
+ } = await M.feedbackCenter.create.post({
1156
+ title: u.value.title,
1157
+ type: u.value.type,
1158
+ priority: u.value.priority,
1159
+ description: u.value.description
1160
+ // screenshots 字段暂不支持,后续可能需要通过消息发送
1161
+ });
1162
+ o.value = !1, p || (Ke.success("新建反馈成功"), n("confirm"));
1163
+ }
1164
+ }
1165
+ return (k, p) => (i(), y("div", Yt, [d(l(Ae), {
1166
+ ref_key: "formRef",
1167
+ ref: s,
1168
+ model: u.value,
1169
+ "auto-label-width": "",
1170
+ layout: "vertical"
1171
+ }, {
1172
+ default: c(() => [d(l(Y), {
1173
+ field: "title",
1174
+ label: "标题",
1175
+ rules: [{
1176
+ required: !0,
1177
+ message: "请输入标题"
1178
+ }]
1179
+ }, {
1180
+ default: c(() => [d(l(Te), {
1181
+ modelValue: u.value.title,
1182
+ "onUpdate:modelValue": p[0] || (p[0] = (r) => u.value.title = r),
1183
+ placeholder: "请输入标题"
1184
+ }, null, 8, ["modelValue"])]),
1185
+ _: 1
1186
+ }), d(l(Y), {
1187
+ field: "type",
1188
+ label: "反馈类型",
1189
+ rules: [{
1190
+ required: !0,
1191
+ message: "请选择反馈类型"
1192
+ }]
1193
+ }, {
1194
+ default: c(() => [d(l(pe), {
1195
+ modelValue: u.value.type,
1196
+ "onUpdate:modelValue": p[1] || (p[1] = (r) => u.value.type = r),
1197
+ placeholder: "请选择反馈类型"
1198
+ }, {
1199
+ default: c(() => [(i(!0), y(j, null, X(l(oe), (r, _) => (i(), C(l(fe), {
1200
+ key: _,
1201
+ value: r.key
1202
+ }, {
1203
+ default: c(() => [z(F(r.label), 1)]),
1204
+ _: 2
1205
+ }, 1032, ["value"]))), 128))]),
1206
+ _: 1
1207
+ }, 8, ["modelValue"])]),
1208
+ _: 1
1209
+ }), d(l(Y), {
1210
+ field: "priority",
1211
+ label: "优先级",
1212
+ rules: [{
1213
+ required: !0,
1214
+ message: "请选择优先级"
1215
+ }]
1216
+ }, {
1217
+ default: c(() => [d(l(pe), {
1218
+ modelValue: u.value.priority,
1219
+ "onUpdate:modelValue": p[2] || (p[2] = (r) => u.value.priority = r),
1220
+ placeholder: "请选择优先级"
1221
+ }, {
1222
+ default: c(() => [(i(!0), y(j, null, X(l(Fe), (r, _) => (i(), C(l(fe), {
1223
+ key: _,
1224
+ value: r.key
1225
+ }, {
1226
+ default: c(() => [z(F(r.label), 1)]),
1227
+ _: 2
1228
+ }, 1032, ["value"]))), 128))]),
1229
+ _: 1
1230
+ }, 8, ["modelValue"])]),
1231
+ _: 1
1232
+ }), d(l(Y), {
1233
+ field: "description",
1234
+ label: "问题描述",
1235
+ rules: [{
1236
+ required: !0,
1237
+ message: "请输入问题描述"
1238
+ }]
1239
+ }, {
1240
+ default: c(() => [d(l(We), {
1241
+ modelValue: u.value.description,
1242
+ "onUpdate:modelValue": p[3] || (p[3] = (r) => u.value.description = r),
1243
+ placeholder: "请输入问题描述",
1244
+ "allow-clear": "",
1245
+ "auto-size": {
1246
+ minRows: 5
1247
+ }
1248
+ }, null, 8, ["modelValue"])]),
1249
+ _: 1
1250
+ }), V("", !0), d(l(le), {
1251
+ loading: o.value,
1252
+ type: "primary",
1253
+ onClick: a
1254
+ }, {
1255
+ default: c(() => [...p[4] || (p[4] = [z(" 提交 ", -1)])]),
1256
+ _: 1
1257
+ }, 8, ["loading"])]),
1258
+ _: 1
1259
+ }, 8, ["model"])]));
1260
+ }
1261
+ }), Gt = /* @__PURE__ */ U(Xt, [["__scopeId", "data-v-bf24e737"]]), Jt = {
1262
+ class: "operate-wrapper"
1263
+ }, Qt = {
1264
+ class: "operate-item"
1265
+ }, en = {
1266
+ class: "icon"
1267
+ }, tn = {
1268
+ class: "title"
1269
+ }, nn = {
1270
+ class: "feedback-info"
1271
+ }, an = {
1272
+ key: 0,
1273
+ class: "feedback-count"
1274
+ }, sn = /* @__PURE__ */ I({
1275
+ __name: "FeedbackItem",
1276
+ props: {
1277
+ title: {
1278
+ type: String,
1279
+ required: !0
1280
+ },
1281
+ icon: {
1282
+ type: String,
1283
+ required: !0
1284
+ },
1285
+ extra: {
1286
+ type: String,
1287
+ required: !1,
1288
+ default: () => ""
1289
+ }
1290
+ },
1291
+ setup(e) {
1292
+ const t = e;
1293
+ return (n, s) => (i(), y("div", Jt, [v("div", Qt, [v("div", en, [d(l(Se), {
1294
+ icon: t.icon
1295
+ }, null, 8, ["icon"])]), v("p", tn, F(t.title), 1)]), v("div", nn, [e.extra ? (i(), y("span", an, F(e.extra), 1)) : V("", !0)])]));
1296
+ }
1297
+ }), Kn = /* @__PURE__ */ U(sn, [["__scopeId", "data-v-28e45887"]]), ln = {
1298
+ class: "messages"
1299
+ }, on = {
1300
+ key: 1,
1301
+ class: "list"
1302
+ }, rn = /* @__PURE__ */ I({
1303
+ __name: "FeedbackList",
1304
+ emits: ["toDetail"],
1305
+ setup(e, {
1306
+ emit: t
1307
+ }) {
1308
+ const n = b(!0), s = b([]), o = b(!1), u = b(""), a = b({
1309
+ total: 0,
1310
+ current: 1,
1311
+ pageSize: 10
1312
+ });
1313
+ function k() {
1314
+ n.value = !0;
1315
+ }
1316
+ function p(g) {
1317
+ u.value = g.id, n.value = !1;
1318
+ }
1319
+ const r = [{
1320
+ dataIndex: "title",
1321
+ title: "标题",
1322
+ minWidth: 120,
1323
+ ellipsis: !0,
1324
+ tooltip: !0
1325
+ }, {
1326
+ dataIndex: "type",
1327
+ slotName: "type",
1328
+ title: "类型",
1329
+ width: 100
1330
+ }, {
1331
+ dataIndex: "priority",
1332
+ slotName: "priority",
1333
+ title: "优先级",
1334
+ width: 80
1335
+ }, {
1336
+ dataIndex: "status",
1337
+ slotName: "status",
1338
+ title: "状态",
1339
+ width: 90
1340
+ }, {
1341
+ dataIndex: "createAt",
1342
+ title: "创建日期",
1343
+ width: 160
1344
+ }, {
1345
+ dataIndex: "actions",
1346
+ slotName: "actions",
1347
+ title: "操作",
1348
+ fixed: "right",
1349
+ width: 80
1350
+ }];
1351
+ function _(g) {
1352
+ return g === "inProgress" ? "orangered" : g === "pending" ? "gold" : g === "resolved" ? "green" : g === "closed" ? "gray" : "arcoblue";
1353
+ }
1354
+ function w(g) {
1355
+ return g === "urgent" ? "red" : g === "high" ? "orangered" : g === "low" ? "gray" : "blue";
1356
+ }
1357
+ async function h() {
1358
+ o.value = !0;
1359
+ const {
1360
+ data: g
1361
+ } = await M.feedbackCenter.own.post({
1362
+ current: a.value.current,
1363
+ pageSize: a.value.pageSize
1364
+ });
1365
+ o.value = !1, g && (s.value = g.items, a.value.total = g.count);
1366
+ }
1367
+ const $ = (g) => {
1368
+ a.value.current = g, h();
1369
+ }, R = (g) => {
1370
+ a.value.current = 1, a.value.pageSize = g, h();
1371
+ };
1372
+ return h(), (g, N) => (i(), y("div", ln, [n.value ? V("", !0) : (i(), C(l(Ze), {
1373
+ key: 0,
1374
+ style: {
1375
+ "margin-bottom": "10px",
1376
+ cursor: "pointer"
1377
+ }
1378
+ }, {
1379
+ default: c(() => [d(l(me), {
1380
+ style: {
1381
+ padding: "0px"
1382
+ },
1383
+ onClick: k
1384
+ }, {
1385
+ default: c(() => [...N[0] || (N[0] = [z("我的反馈", -1)])]),
1386
+ _: 1
1387
+ }), d(l(me), {
1388
+ style: {
1389
+ padding: "0px"
1390
+ }
1391
+ }, {
1392
+ default: c(() => [...N[1] || (N[1] = [z("反馈详情", -1)])]),
1393
+ _: 1
1394
+ })]),
1395
+ _: 1
1396
+ })), n.value ? (i(), y("div", on, [d(Xe, {
1397
+ columns: r,
1398
+ data: s.value,
1399
+ loading: o.value,
1400
+ pagination: a.value,
1401
+ onPageChange: $,
1402
+ onPageSizeChange: R
1403
+ }, {
1404
+ type: c(({
1405
+ record: q
1406
+ }) => [d(l(A), {
1407
+ color: "arcoblue"
1408
+ }, {
1409
+ default: c(() => {
1410
+ var B;
1411
+ return [z(F((B = l(T)(l(oe), q.type)) == null ? void 0 : B.label), 1)];
1412
+ }),
1413
+ _: 2
1414
+ }, 1024)]),
1415
+ priority: c(({
1416
+ record: q
1417
+ }) => [d(l(A), {
1418
+ color: w(q.priority)
1419
+ }, {
1420
+ default: c(() => {
1421
+ var B;
1422
+ return [z(F(((B = l(T)(l(Fe), q.priority)) == null ? void 0 : B.label) || "普通"), 1)];
1423
+ }),
1424
+ _: 2
1425
+ }, 1032, ["color"])]),
1426
+ status: c(({
1427
+ record: q
1428
+ }) => [d(l(A), {
1429
+ color: _(q.status)
1430
+ }, {
1431
+ default: c(() => {
1432
+ var B;
1433
+ return [z(F((B = l(T)(l(Re), q.status)) == null ? void 0 : B.label), 1)];
1434
+ }),
1435
+ _: 2
1436
+ }, 1032, ["color"])]),
1437
+ actions: c(({
1438
+ record: q
1439
+ }) => [d(l(le), {
1440
+ type: "text",
1441
+ onClick: (B) => p(q)
1442
+ }, {
1443
+ default: c(() => [...N[2] || (N[2] = [z("查看", -1)])]),
1444
+ _: 1
1445
+ }, 8, ["onClick"])]),
1446
+ _: 1
1447
+ }, 8, ["data", "loading", "pagination"])])) : (i(), C(Kt, {
1448
+ key: 2,
1449
+ id: u.value,
1450
+ "sender-role": "user"
1451
+ }, null, 8, ["id"]))]));
1452
+ }
1453
+ }), un = /* @__PURE__ */ U(rn, [["__scopeId", "data-v-5fb9e85f"]]), cn = {
1454
+ key: 0,
1455
+ class: "content"
1456
+ }, dn = {
1457
+ class: "left"
1458
+ }, pn = {
1459
+ class: "right"
1460
+ }, fn = /* @__PURE__ */ I({
1461
+ __name: "FeedbackModal",
1462
+ emits: ["confirm", "cancel"],
1463
+ setup(e, {
1464
+ expose: t,
1465
+ emit: n
1466
+ }) {
1467
+ const s = b(!1), o = n;
1468
+ function u() {
1469
+ o("cancel");
1470
+ }
1471
+ const a = b(["FeedbackList"]), k = b([{
1472
+ name: "我的反馈",
1473
+ path: "FeedbackList",
1474
+ meta: {
1475
+ icon: "mingcute:cube-3d-fill"
1476
+ }
1477
+ }, {
1478
+ name: "新建反馈",
1479
+ path: "CreateFeedback",
1480
+ meta: {
1481
+ icon: "mingcute:cube-3d-fill"
1482
+ }
1483
+ }]), p = L(() => a.value.length !== 0 ? a.value[0] : "");
1484
+ function r() {
1485
+ a.value = ["FeedbackList"];
1486
+ }
1487
+ function _(h) {
1488
+ a.value = [h.path];
1489
+ }
1490
+ function w(h) {
1491
+ s.value = h;
1492
+ }
1493
+ return t({
1494
+ setData: w
1495
+ }), (h, $) => (i(), C(l(He), {
1496
+ visible: s.value,
1497
+ "onUpdate:visible": $[1] || ($[1] = (R) => s.value = R),
1498
+ loading: !1,
1499
+ "body-class": "AppMessagebodyClass",
1500
+ "mask-closable": !1,
1501
+ footer: !1,
1502
+ width: "auto",
1503
+ title: "用户反馈",
1504
+ "hide-title": !1,
1505
+ onCancel: u
1506
+ }, {
1507
+ default: c(() => [s.value ? (i(), y("div", cn, [v("div", dn, [d(Ye, {
1508
+ "selected-keys": a.value,
1509
+ "onUpdate:selectedKeys": $[0] || ($[0] = (R) => a.value = R),
1510
+ menus: k.value,
1511
+ onChange: _
1512
+ }, null, 8, ["selected-keys", "menus"])]), v("div", pn, [p.value === "FeedbackList" ? (i(), C(un, {
1513
+ key: 0
1514
+ })) : V("", !0), p.value === "CreateFeedback" ? (i(), C(Gt, {
1515
+ key: 1,
1516
+ onConfirm: r
1517
+ })) : V("", !0)])])) : V("", !0)]),
1518
+ _: 1
1519
+ }, 8, ["visible"]));
1520
+ }
1521
+ }), Zn = /* @__PURE__ */ U(fn, [["__scopeId", "data-v-7ca0cfbf"]]);
1522
+ export {
1523
+ ye as B,
1524
+ An as F,
1525
+ bt as R,
1526
+ ke as a,
1527
+ Tn as b,
1528
+ Kt as c,
1529
+ St as d,
1530
+ Gt as e,
1531
+ Kn as f,
1532
+ un as g,
1533
+ Zn as h,
1534
+ Wn as i
1535
+ };