@huyooo/ui 0.10.7 → 0.11.1

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 (68) hide show
  1. package/dist/AuthkitAppSetting-BCrLMpLg.js +1322 -0
  2. package/dist/AuthkitSignInPhone-DmCQ2fWs.js +1721 -0
  3. package/dist/{Clipboard-CK_nROjb.js → Clipboard---tG2Zxz.js} +1 -1
  4. package/dist/{Contact-CpHU1bJ7.js → Contact-BEUbBGiB.js} +2 -2
  5. package/dist/{CustomTable-1W5byjgJ.js → CustomTable-CVZ4mFzi.js} +2 -3
  6. package/dist/FeedbackItem-CN041vTm.js +495 -0
  7. package/dist/FeedbackModal-aI28o-w5.js +1053 -0
  8. package/dist/MessageHandle-BV1nKlxs.js +1147 -0
  9. package/dist/MessageNoticeNotificationsDetails.vue_vue_type_script_setup_true_lang-F6neJUg3.js +142 -0
  10. package/dist/{PaySubscriptions-C4Een__-.js → PaySubscriptions-B3gI1Eme.js} +5 -6
  11. package/dist/{ReferrerReferees-DIassvGO.js → ReferrerReferees-DJzPo7X5.js} +7 -7
  12. package/dist/{Upload.vue_vue_type_script_setup_true_lang-DA8VZBrl.js → Upload.vue_vue_type_script_setup_true_lang-D_-oMTOo.js} +1 -1
  13. package/dist/UserAccountMenu-CJ9KKVYa.js +371 -0
  14. package/dist/UserMenuInvitationsItem.vue_vue_type_script_setup_true_lang-ClAXNSgl.js +81 -0
  15. package/dist/{WidthContainer-TXsvW1ut.js → WidthContainer-BG10rumn.js} +248 -252
  16. package/dist/{apiClients-ANEApCyY.js → apiClients-9b4zNZ2S.js} +2 -2
  17. package/dist/authkit.js +41 -40
  18. package/dist/common.js +2 -2
  19. package/dist/components/Authkit/AuthkitAppSetting.vue.d.ts +1 -1
  20. package/dist/components/Referrer/ReferrerReferees.vue.d.ts +1 -1
  21. package/dist/components/{User → UserMenu}/UserAccountMenu.vue.d.ts +1 -5
  22. package/dist/components/{User/UserPanel.vue.d.ts → UserMenu/UserMenu.vue.d.ts} +5 -12
  23. package/dist/components/UserMenu/UserMenuDivider.vue.d.ts +2 -0
  24. package/dist/components/UserMenu/UserMenuHeader.vue.d.ts +13 -0
  25. package/dist/components/{User/UserPanelItem.vue.d.ts → UserMenu/UserMenuItem.vue.d.ts} +6 -10
  26. package/dist/components/UserMenu/UserMenuModals.vue.d.ts +137 -0
  27. package/dist/components/UserMenu/items/UserMenuFeedbackItem.vue.d.ts +2 -0
  28. package/dist/components/UserMenu/items/UserMenuInvitationsItem.vue.d.ts +2 -0
  29. package/dist/components/UserMenu/items/UserMenuMessageItem.vue.d.ts +2 -0
  30. package/dist/components/UserMenu/items/UserMenuSettingItem.vue.d.ts +2 -0
  31. package/dist/components/UserMenu/items/UserMenuSubscriptionItem.vue.d.ts +2 -0
  32. package/dist/components/UserMenu/parts/UserAvatar.vue.d.ts +9 -0
  33. package/dist/components/UserMenu/parts/UserBasicInformation.vue.d.ts +13 -0
  34. package/dist/components/UserMenu/parts/UserSubscriptionBaseInformation.vue.d.ts +15 -0
  35. package/dist/composables/UserMenu/useUserMenu.d.ts +20 -0
  36. package/dist/composables.d.ts +1 -0
  37. package/dist/composables.js +19 -17
  38. package/dist/feedback.js +16 -15
  39. package/dist/main.js +193 -180
  40. package/dist/message.js +10 -9
  41. package/dist/pay.js +1 -1
  42. package/dist/privateCom.js +1 -1
  43. package/dist/referrer.js +1 -1
  44. package/dist/style.css +1 -1
  45. package/dist/upload.js +2 -2
  46. package/dist/{useAuthkitAppsAuthPageInfo-Da2yJTT-.js → useAuthkitAppsAuthPageInfo-494yLvsu.js} +1 -1
  47. package/dist/{useAuthkitCreateAndUpdate-BLs5vQOu.js → useAuthkitCreateAndUpdate-DyRtFxZS.js} +1 -1
  48. package/dist/{useAuthkitUsersProfile-Cx8NXjlt.js → useAuthkitUsersProfile-lGlQP54m.js} +1 -1
  49. package/dist/{useDownloads-DT5W2af6.js → useDownloads-DaeIY0E9.js} +1 -1
  50. package/dist/{useLegalLinks-BIF45kUt.js → useLegalLinks-CPbWqlu6.js} +2 -2
  51. package/dist/{useMessageNotifications-CavBmgO7.js → useMessageNotifications-Dg5q-C_o.js} +1 -1
  52. package/dist/{useSEO-MPXQf0dn.js → useSEO-CXX9dcBx.js} +2 -2
  53. package/dist/{useTableHandle--NSbZ-57.js → useTableHandle-Cjq4gcC0.js} +1 -1
  54. package/dist/{cos-js-sdk-v5-BJ5AlBRu.js → useUploadCos-DiJmmbRf.js} +2469 -2232
  55. package/dist/useUserMenu-B3HKZKJ4.js +43 -0
  56. package/dist/user.d.ts +15 -7
  57. package/dist/user.js +17 -9
  58. package/package.json +1 -1
  59. package/dist/AuthkitSignInPhone-BWPCpUie.js +0 -3034
  60. package/dist/FeedbackModal-qAJLL3V3.js +0 -1535
  61. package/dist/MessageNoticeNotificationsDetails.vue_vue_type_script_setup_true_lang-D109kT8_.js +0 -1282
  62. package/dist/UserAccountMenu-BIRTtjLb.js +0 -266
  63. package/dist/UserSubscriptionBaseInformation-BUs3qiHd.js +0 -60
  64. package/dist/components/User/UserAvatar.vue.d.ts +0 -23
  65. package/dist/components/User/UserBasicInformation.vue.d.ts +0 -41
  66. package/dist/components/User/UserSubscriptionBaseInformation.vue.d.ts +0 -32
  67. package/dist/useUploadCos-D6y0INvP.js +0 -242
  68. /package/dist/components/{User/UserButton.vue.d.ts → UserMenu/parts/UserSignInButton.vue.d.ts} +0 -0
@@ -1,1535 +0,0 @@
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
- };