@huyooo/ui 0.4.23 → 0.4.24

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 (33) hide show
  1. package/dist/{AuthkitAppSetting-MYrqMZAf.js → AuthkitAppSetting-BFCdC1j2.js} +114 -88
  2. package/dist/{AuthkitAuthorize-CCSa1q9E.js → AuthkitAuthorize-p0mbjzzG.js} +6 -5
  3. package/dist/Clipboard-Bful1lNJ.js +558 -0
  4. package/dist/{FeedbackItem-DKowiTJj.js → FeedbackItem-MY9mxyf6.js} +1 -1
  5. package/dist/FeedbackModal-CMmvJOi1.js +1164 -0
  6. package/dist/{Menu-MZJINp6f.js → Menu-Cxo8Rpu3.js} +11 -11
  7. package/dist/{MessageHandle-BLiqnTvy.js → MessageHandle-DN_JsQb2.js} +1 -1
  8. package/dist/{MessageMenu-x26lfAeK.js → MessageMenu-_RZJ9Mbi.js} +15 -15
  9. package/dist/ReferrerReferees-BZqtRuiP.js +186 -0
  10. package/dist/{UserPanel-DT6fS0L2.js → UserPanel-BL8qPaxq.js} +8 -7
  11. package/dist/authkit.js +12 -11
  12. package/dist/common/referrerOptions.d.ts +0 -4
  13. package/dist/common.js +4 -4
  14. package/dist/composables/Authkit/useAuthkitAuth.d.ts +1 -0
  15. package/dist/composables/Authkit/useAuthkitUsersProfile.d.ts +0 -6
  16. package/dist/composables.js +20 -19
  17. package/dist/feedback.d.ts +1 -1
  18. package/dist/feedback.js +13 -12
  19. package/dist/index.js +130 -128
  20. package/dist/message.js +2 -2
  21. package/dist/referrer.js +1 -1
  22. package/dist/style.css +1 -1
  23. package/dist/styles.d.ts +1 -1
  24. package/dist/styles.js +1 -4
  25. package/dist/types/api.d.ts +1 -2
  26. package/dist/useAuthkitProps-CW3Jem_o.js +160 -0
  27. package/dist/useAuthkitUsersProfile-Diituvy1.js +227 -0
  28. package/dist/user.js +1 -1
  29. package/package.json +1 -1
  30. package/dist/FeedbackModal-BvIlQ5Qe.js +0 -1712
  31. package/dist/ReferrerReferees-E5Sq9dVw.js +0 -185
  32. package/dist/useAuthkitProps-BM6B7mZP.js +0 -384
  33. /package/dist/components/{Feedback/FeedbackClipboard.vue.d.ts → Clipboard.vue.d.ts} +0 -0
@@ -0,0 +1,1164 @@
1
+ /* empty css */
2
+ /* empty css */
3
+ /* empty css */
4
+ import { defineComponent as L, createElementBlock as I, openBlock as i, normalizeStyle as M, normalizeClass as ie, createElementVNode as w, computed as A, createBlock as k, unref as r, withCtx as s, createVNode as c, createCommentVNode as F, Fragment as B, createTextVNode as $, toDisplayString as R, ref as v, onUnmounted as Ce, h as ee, renderList as ue, nextTick as V } from "vue";
5
+ import { Space as ce, Image as de, Avatar as pe, Descriptions as Se, DescriptionsItem as K, Tag as j, Spin as Ie, Button as J, Form as we, FormItem as H, Input as Ue, Select as $e, Option as qe, Textarea as Fe, Message as Le, Breadcrumb as Re, BreadcrumbItem as te, Modal as Be, Drawer as ze } from "@arco-design/web-vue";
6
+ import { M as De } from "./Menu-Cxo8Rpu3.js";
7
+ /* empty css */
8
+ /* empty css */
9
+ /* empty css */
10
+ /* empty css */
11
+ /* empty css */
12
+ import { api as D } from "@huyooo/api";
13
+ /* empty css */
14
+ /* empty css */
15
+ import { r as Ne, a as Ve, u as Ae } from "./useUploadCos-B8D9lYIk.js";
16
+ import { u as Pe } from "./useUserPanelProps-C5W72fZJ.js";
17
+ import { _ as P } from "./_plugin-vue_export-helper-CHgC5LLL.js";
18
+ /* empty css */
19
+ import { a as E, C as Oe } from "./CustomTable-C6Xcn_J7.js";
20
+ import { Bubble as fe, Prompts as je, Sender as Ee } from "ant-design-x-vue";
21
+ import { C as me } from "./Clipboard-Bful1lNJ.js";
22
+ import { Icon as Me } from "@iconify/vue";
23
+ import { _ as ve, g as ge, i as ye } from "./plugin-vue_export-helper-LjDO2Zua.js";
24
+ const We = L({
25
+ name: "IconExclamationCircle",
26
+ props: {
27
+ size: {
28
+ type: [Number, String]
29
+ },
30
+ strokeWidth: {
31
+ type: Number,
32
+ default: 4
33
+ },
34
+ strokeLinecap: {
35
+ type: String,
36
+ default: "butt",
37
+ validator: (e) => ["butt", "round", "square"].includes(e)
38
+ },
39
+ strokeLinejoin: {
40
+ type: String,
41
+ default: "miter",
42
+ validator: (e) => ["arcs", "bevel", "miter", "miter-clip", "round"].includes(e)
43
+ },
44
+ rotate: Number,
45
+ spin: Boolean
46
+ },
47
+ emits: {
48
+ click: (e) => !0
49
+ },
50
+ setup(e, {
51
+ emit: a
52
+ }) {
53
+ const t = ge("icon"), l = A(() => [t, `${t}-exclamation-circle`, {
54
+ [`${t}-spin`]: e.spin
55
+ }]), u = A(() => {
56
+ const n = {};
57
+ return e.size && (n.fontSize = ye(e.size) ? `${e.size}px` : e.size), e.rotate && (n.transform = `rotate(${e.rotate}deg)`), n;
58
+ });
59
+ return {
60
+ cls: l,
61
+ innerStyle: u,
62
+ onClick: (n) => {
63
+ a("click", n);
64
+ }
65
+ };
66
+ }
67
+ }), Te = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
68
+ function Ke(e, a, t, l, u, g) {
69
+ return i(), I("svg", {
70
+ viewBox: "0 0 48 48",
71
+ fill: "none",
72
+ xmlns: "http://www.w3.org/2000/svg",
73
+ stroke: "currentColor",
74
+ class: ie(e.cls),
75
+ style: M(e.innerStyle),
76
+ "stroke-width": e.strokeWidth,
77
+ "stroke-linecap": e.strokeLinecap,
78
+ "stroke-linejoin": e.strokeLinejoin,
79
+ onClick: a[0] || (a[0] = (...n) => e.onClick && e.onClick(...n))
80
+ }, a[1] || (a[1] = [w("path", {
81
+ 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"
82
+ }, null, -1)]), 14, Te);
83
+ }
84
+ var Y = /* @__PURE__ */ ve(We, [["render", Ke]]);
85
+ const le = Object.assign(Y, {
86
+ install: (e, a) => {
87
+ var t;
88
+ const l = (t = a == null ? void 0 : a.iconPrefix) != null ? t : "";
89
+ e.component(l + Y.name, Y);
90
+ }
91
+ }), He = L({
92
+ name: "IconLink",
93
+ props: {
94
+ size: {
95
+ type: [Number, String]
96
+ },
97
+ strokeWidth: {
98
+ type: Number,
99
+ default: 4
100
+ },
101
+ strokeLinecap: {
102
+ type: String,
103
+ default: "butt",
104
+ validator: (e) => ["butt", "round", "square"].includes(e)
105
+ },
106
+ strokeLinejoin: {
107
+ type: String,
108
+ default: "miter",
109
+ validator: (e) => ["arcs", "bevel", "miter", "miter-clip", "round"].includes(e)
110
+ },
111
+ rotate: Number,
112
+ spin: Boolean
113
+ },
114
+ emits: {
115
+ click: (e) => !0
116
+ },
117
+ setup(e, {
118
+ emit: a
119
+ }) {
120
+ const t = ge("icon"), l = A(() => [t, `${t}-link`, {
121
+ [`${t}-spin`]: e.spin
122
+ }]), u = A(() => {
123
+ const n = {};
124
+ return e.size && (n.fontSize = ye(e.size) ? `${e.size}px` : e.size), e.rotate && (n.transform = `rotate(${e.rotate}deg)`), n;
125
+ });
126
+ return {
127
+ cls: l,
128
+ innerStyle: u,
129
+ onClick: (n) => {
130
+ a("click", n);
131
+ }
132
+ };
133
+ }
134
+ }), Ye = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
135
+ function Ze(e, a, t, l, u, g) {
136
+ return i(), I("svg", {
137
+ viewBox: "0 0 48 48",
138
+ fill: "none",
139
+ xmlns: "http://www.w3.org/2000/svg",
140
+ stroke: "currentColor",
141
+ class: ie(e.cls),
142
+ style: M(e.innerStyle),
143
+ "stroke-width": e.strokeWidth,
144
+ "stroke-linecap": e.strokeLinecap,
145
+ "stroke-linejoin": e.strokeLinejoin,
146
+ onClick: a[0] || (a[0] = (...n) => e.onClick && e.onClick(...n))
147
+ }, a[1] || (a[1] = [w("path", {
148
+ 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"
149
+ }, null, -1)]), 14, Ye);
150
+ }
151
+ var Z = /* @__PURE__ */ ve(He, [["render", Ze]]);
152
+ const Ge = Object.assign(Z, {
153
+ install: (e, a) => {
154
+ var t;
155
+ const l = (t = a == null ? void 0 : a.iconPrefix) != null ? t : "";
156
+ e.component(l + Z.name, Z);
157
+ }
158
+ }), Je = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), ae = {
159
+ randomUUID: Je
160
+ };
161
+ function re(e, a, t) {
162
+ var u;
163
+ if (ae.randomUUID && !e)
164
+ return ae.randomUUID();
165
+ e = e || {};
166
+ const l = e.random ?? ((u = e.rng) == null ? void 0 : u.call(e)) ?? Ne();
167
+ if (l.length < 16)
168
+ throw new Error("Random bytes length must be >= 16");
169
+ return l[6] = l[6] & 15 | 64, l[8] = l[8] & 63 | 128, Ve(l);
170
+ }
171
+ const Qe = /* @__PURE__ */ L({
172
+ __name: "FeedbackRefresh",
173
+ setup(e) {
174
+ return (a, t) => (i(), k(r(Me), {
175
+ class: "icon",
176
+ icon: "mingcute:refresh-2-line"
177
+ }));
178
+ }
179
+ }), Xe = /* @__PURE__ */ P(Qe, [["__scopeId", "data-v-33249ffb"]]), et = ["src"], ne = /* @__PURE__ */ L({
180
+ __name: "FeedbackBubbleEnd",
181
+ props: {
182
+ value: {
183
+ type: String,
184
+ required: !1,
185
+ default: ""
186
+ },
187
+ type: {
188
+ type: String,
189
+ default: "text",
190
+ validator: (e) => ["text", "image"].includes(e)
191
+ },
192
+ avatarUrl: {
193
+ type: String,
194
+ default: "A"
195
+ },
196
+ bubbleStyle: {
197
+ type: Object,
198
+ default: () => ({
199
+ paddingLeft: "52px"
200
+ })
201
+ },
202
+ showRefresh: {
203
+ type: Boolean,
204
+ default: !1
205
+ },
206
+ showClipboard: {
207
+ type: Boolean,
208
+ default: !1
209
+ }
210
+ },
211
+ emits: ["refresh"],
212
+ setup(e, {
213
+ emit: a
214
+ }) {
215
+ const t = e, l = a;
216
+ function u() {
217
+ l("refresh");
218
+ }
219
+ return (g, n) => (i(), k(r(fe), {
220
+ placement: "end",
221
+ style: M(t.bubbleStyle),
222
+ styles: {
223
+ content: {
224
+ padding: t.type === "image" ? "0px" : void 0
225
+ }
226
+ }
227
+ }, {
228
+ avatar: s(() => [c(r(pe), null, {
229
+ default: s(() => [w("img", {
230
+ alt: "avatar",
231
+ src: t.avatarUrl
232
+ }, null, 8, et)]),
233
+ _: 1
234
+ })]),
235
+ message: s(() => [t.type === "text" ? (i(), I(B, {
236
+ key: 0
237
+ }, [$(R(t.value), 1)], 64)) : t.type === "image" ? (i(), k(r(de), {
238
+ key: 1,
239
+ width: "100",
240
+ src: t.value,
241
+ "show-loader": ""
242
+ }, null, 8, ["src"])) : F("", !0)]),
243
+ footer: s(() => [c(r(ce), null, {
244
+ default: s(() => [t.showClipboard && t.type === "text" ? (i(), k(me, {
245
+ key: 0,
246
+ value: e.value
247
+ }, null, 8, ["value"])) : F("", !0), t.showRefresh ? (i(), k(Xe, {
248
+ key: 1,
249
+ onClick: u
250
+ })) : F("", !0)]),
251
+ _: 1
252
+ })]),
253
+ _: 1
254
+ }, 8, ["style", "styles"]));
255
+ }
256
+ }), tt = ["src"], se = /* @__PURE__ */ L({
257
+ __name: "FeedbackBubbleStart",
258
+ props: {
259
+ value: {
260
+ type: String,
261
+ required: !1,
262
+ default: ""
263
+ },
264
+ type: {
265
+ type: String,
266
+ default: "text",
267
+ validator: (e) => ["text", "image"].includes(e)
268
+ },
269
+ avatarUrl: {
270
+ type: String,
271
+ default: "A"
272
+ },
273
+ bubbleStyle: {
274
+ type: Object,
275
+ default: () => ({
276
+ paddingRight: "52px"
277
+ })
278
+ },
279
+ showClipboard: {
280
+ type: Boolean,
281
+ default: !1
282
+ }
283
+ },
284
+ emits: ["footer-click"],
285
+ setup(e, {
286
+ emit: a
287
+ }) {
288
+ const t = e;
289
+ return (l, u) => (i(), k(r(fe), {
290
+ placement: "start",
291
+ style: M(t.bubbleStyle),
292
+ styles: {
293
+ content: {
294
+ padding: t.type === "image" ? "0px" : void 0
295
+ }
296
+ }
297
+ }, {
298
+ avatar: s(() => [c(r(pe), null, {
299
+ default: s(() => [w("img", {
300
+ alt: "avatar",
301
+ src: t.avatarUrl
302
+ }, null, 8, tt)]),
303
+ _: 1
304
+ })]),
305
+ message: s(() => [t.type === "text" ? (i(), I(B, {
306
+ key: 0
307
+ }, [$(R(t.value), 1)], 64)) : t.type === "image" ? (i(), k(r(de), {
308
+ key: 1,
309
+ width: "100",
310
+ src: t.value,
311
+ "show-loader": ""
312
+ }, null, 8, ["src"])) : F("", !0)]),
313
+ footer: s(() => [c(r(ce), null, {
314
+ default: s(() => [t.showClipboard && t.type === "text" ? (i(), k(me, {
315
+ key: 0,
316
+ value: t.value
317
+ }, null, 8, ["value"])) : F("", !0)]),
318
+ _: 1
319
+ })]),
320
+ _: 1
321
+ }, 8, ["style", "styles"]));
322
+ }
323
+ });
324
+ function lt(e, a = {}) {
325
+ const {
326
+ interval: t = 2e3,
327
+ immediate: l = !1,
328
+ autoStart: u = !1
329
+ } = a, g = v(!1);
330
+ let n = null;
331
+ async function f() {
332
+ try {
333
+ await e();
334
+ } catch (h) {
335
+ console.error("轮询回调执行失败:", h);
336
+ }
337
+ }
338
+ function o() {
339
+ if (g.value) {
340
+ console.warn("轮询已在运行中");
341
+ return;
342
+ }
343
+ g.value = !0, l && f(), n = setInterval(f, t);
344
+ }
345
+ function y() {
346
+ n && (clearInterval(n), n = null), g.value = !1;
347
+ }
348
+ function m() {
349
+ y(), o();
350
+ }
351
+ return u && o(), Ce(() => {
352
+ y();
353
+ }), {
354
+ isPolling: g,
355
+ start: o,
356
+ stop: y,
357
+ restart: m
358
+ };
359
+ }
360
+ function at(e, a) {
361
+ return D({
362
+ url: `${e}/restfulApi/feedbackCenter/create`,
363
+ method: "post",
364
+ data: a
365
+ });
366
+ }
367
+ function rt(e, a) {
368
+ return D({
369
+ url: `${e}/restfulApi/feedbackCenter/findOne`,
370
+ method: "post",
371
+ data: a
372
+ });
373
+ }
374
+ function nt(e, a) {
375
+ return D({
376
+ url: `${e}/restfulApi/feedbackCenter/own`,
377
+ method: "post",
378
+ data: a
379
+ });
380
+ }
381
+ function oe(e, a) {
382
+ return D({
383
+ url: `${e}/restfulApi/feedbackCenter/update/messages`,
384
+ method: "post",
385
+ data: a
386
+ });
387
+ }
388
+ function st(e, a) {
389
+ return D({
390
+ url: `${e}/restfulApi/messages/list/incremental`,
391
+ method: "post",
392
+ data: a
393
+ });
394
+ }
395
+ function ot(e, a) {
396
+ return D({
397
+ url: `${e}/restfulApi/messages/list`,
398
+ method: "post",
399
+ data: a
400
+ });
401
+ }
402
+ const Q = [{
403
+ key: "bugReports",
404
+ label: "问题报告"
405
+ }, {
406
+ key: "featureSuggestions",
407
+ label: "功能建议"
408
+ }, {
409
+ key: "technicalSupportRequests",
410
+ label: "技术支持请求"
411
+ }, {
412
+ key: "generalOpinions",
413
+ label: "一般意见"
414
+ }], be = [{
415
+ key: "newFeedback",
416
+ label: "新建反馈"
417
+ }, {
418
+ key: "inProgress",
419
+ label: "正在处理"
420
+ }, {
421
+ key: "done",
422
+ label: "已解决"
423
+ }], it = {
424
+ class: "FeedBackDetails"
425
+ }, ut = {
426
+ class: "content"
427
+ }, ct = {
428
+ key: 1,
429
+ class: "Bubbles"
430
+ }, dt = {
431
+ class: "sender-container"
432
+ }, pt = /* @__PURE__ */ L({
433
+ __name: "FeedbackDetails",
434
+ props: {
435
+ id: {
436
+ type: String,
437
+ required: !0,
438
+ default: () => ""
439
+ },
440
+ appId: {
441
+ type: String,
442
+ required: !0
443
+ },
444
+ prefixUrl: {
445
+ type: String,
446
+ required: !0
447
+ },
448
+ bucketId: {
449
+ type: String,
450
+ required: !0
451
+ },
452
+ bucket: {
453
+ type: String,
454
+ required: !0
455
+ },
456
+ region: {
457
+ type: String,
458
+ required: !0
459
+ },
460
+ senderRole: {
461
+ type: String,
462
+ required: !0,
463
+ validator: (e) => ["user", "support"].includes(e)
464
+ }
465
+ },
466
+ setup(e) {
467
+ function a(d) {
468
+ return d === "inProgress" ? "orangered" : d === "done" ? "green" : "arcoblue";
469
+ }
470
+ const t = v(""), l = v(!1), u = [{
471
+ key: "1",
472
+ label: "如何补充更多信息",
473
+ description: "请详细描述您的问题或需求,以便我们更好地为您服务。",
474
+ disabled: !0,
475
+ icon: ee(le, {
476
+ style: {
477
+ color: "#722ED1"
478
+ }
479
+ })
480
+ }, {
481
+ key: "3",
482
+ label: "如何补充附件",
483
+ description: "如有相关附件(如日志、截图等),请一并上传以便加快处理速度。",
484
+ disabled: !0,
485
+ icon: ee(le, {
486
+ style: {
487
+ color: "#722ED1"
488
+ }
489
+ })
490
+ }], g = v(null), n = v(null), f = () => {
491
+ var d;
492
+ (d = g.value) == null || d.focus({
493
+ cursor: "end"
494
+ }), V(() => {
495
+ n.value && (n.value.scrollTop = n.value.scrollHeight);
496
+ });
497
+ }, o = e;
498
+ function y() {
499
+ }
500
+ const m = v(!1), h = v([]), U = v(void 0), q = v({
501
+ id: void 0,
502
+ title: "",
503
+ description: "",
504
+ type: "bugReports",
505
+ status: "done",
506
+ reply: "",
507
+ createAt: ""
508
+ }), N = () => {
509
+ const {
510
+ uploadFile: d
511
+ } = Ae({
512
+ appId: o.appId,
513
+ bucketId: o.bucketId,
514
+ baseURL: o.prefixUrl,
515
+ bucket: o.bucket,
516
+ region: o.region
517
+ }), C = document.createElement("input");
518
+ C.type = "file", C.accept = "image/*", C.style.display = "none", document.body.append(C), C.addEventListener("change", async (p) => {
519
+ var X;
520
+ const z = (X = p.target.files) == null ? void 0 : X[0];
521
+ if (z) {
522
+ l.value = !0;
523
+ try {
524
+ d({
525
+ file: z,
526
+ onFileFinish(W, It, _e) {
527
+ const he = {
528
+ messageId: re(),
529
+ senderRole: o.senderRole,
530
+ type: "image",
531
+ key: _e.Key
532
+ }, xe = {
533
+ id: o.id,
534
+ message: he
535
+ };
536
+ oe(o.prefixUrl, xe).then(({
537
+ data: T
538
+ }) => {
539
+ h.value.push(T.message), typeof T.message.seq == "number" && (U.value = T.message.seq), V(() => {
540
+ f();
541
+ }), l.value = !1, o.senderRole === "support" && q.value.status === "newFeedback" && b();
542
+ }).catch(() => {
543
+ l.value = !1;
544
+ });
545
+ },
546
+ onError(W) {
547
+ console.error("上传图片失败"), l.value = !1;
548
+ }
549
+ });
550
+ } catch (W) {
551
+ console.error("上传图片失败", W), l.value = !1;
552
+ }
553
+ }
554
+ C.remove();
555
+ }), C.click();
556
+ };
557
+ function _(d) {
558
+ l.value = !0;
559
+ const p = {
560
+ messageId: re(),
561
+ senderRole: o.senderRole,
562
+ type: "text",
563
+ content: d
564
+ }, O = {
565
+ id: o.id,
566
+ message: p
567
+ };
568
+ oe(o.prefixUrl, O).then(({
569
+ data: z
570
+ }) => {
571
+ l.value = !1, h.value.push(z.message), typeof z.message.seq == "number" && (U.value = z.message.seq), V(() => {
572
+ f();
573
+ }), t.value = "", o.senderRole === "support" && q.value.status === "newFeedback" && b();
574
+ }).catch(() => {
575
+ l.value = !1;
576
+ });
577
+ }
578
+ function S() {
579
+ _(t.value);
580
+ }
581
+ function b() {
582
+ m.value = !0, rt(o.prefixUrl, {
583
+ id: o.id
584
+ }).then(async ({
585
+ data: d
586
+ }) => {
587
+ m.value = !1, q.value = d, d.messages && d.messages.length > 0 && (h.value = d.messages, U.value = d.messages.at(-1).seq);
588
+ }).catch(() => {
589
+ m.value = !1;
590
+ });
591
+ }
592
+ function x() {
593
+ st(o.prefixUrl, {
594
+ id: o.id,
595
+ lastSeq: U.value
596
+ }).then(async ({
597
+ data: d
598
+ }) => {
599
+ d && d.messages && d.messages.length > 0 && (h.value.push(...d.messages), U.value = d.messages.at(-1).seq, V(() => {
600
+ f();
601
+ }));
602
+ }).catch(() => {
603
+ });
604
+ }
605
+ function ke() {
606
+ m.value = !0, ot(o.prefixUrl, {
607
+ id: o.id
608
+ }).then(async ({
609
+ data: d
610
+ }) => {
611
+ m.value = !1, d && d.messages && d.messages.length > 0 && (h.value.push(...d.messages), U.value = d.messages.at(-1).seq, V(() => {
612
+ f();
613
+ }));
614
+ }).catch(() => {
615
+ m.value = !1;
616
+ });
617
+ }
618
+ return lt(x, {
619
+ interval: 2e3,
620
+ autoStart: !0
621
+ }), b(), ke(), (d, C) => (i(), I("div", it, [w("div", {
622
+ ref_key: "scrollableContentRef",
623
+ ref: n,
624
+ class: "scrollable-content"
625
+ }, [c(r(Se), {
626
+ title: "基本信息"
627
+ }, {
628
+ title: s(() => C[1] || (C[1] = [w("div", {
629
+ class: "title"
630
+ }, "基本信息", -1)])),
631
+ default: s(() => [c(r(K), {
632
+ label: "标题:",
633
+ span: 3
634
+ }, {
635
+ default: s(() => [$(R(q.value.title), 1)]),
636
+ _: 1
637
+ }), c(r(K), {
638
+ label: "反馈类型:",
639
+ span: 1
640
+ }, {
641
+ default: s(() => [c(r(j), {
642
+ color: "arcoblue"
643
+ }, {
644
+ default: s(() => {
645
+ var p;
646
+ return [$(R((p = r(E)(r(Q), q.value.type)) == null ? void 0 : p.label), 1)];
647
+ }),
648
+ _: 1
649
+ })]),
650
+ _: 1
651
+ }), c(r(K), {
652
+ label: "状态:",
653
+ span: 1
654
+ }, {
655
+ default: s(() => [c(r(j), {
656
+ color: a(q.value.status)
657
+ }, {
658
+ default: s(() => {
659
+ var p;
660
+ return [$(R((p = r(E)(r(be), q.value.status)) == null ? void 0 : p.label), 1)];
661
+ }),
662
+ _: 1
663
+ }, 8, ["color"])]),
664
+ _: 1
665
+ })]),
666
+ _: 1
667
+ }), w("div", ut, [C[2] || (C[2] = w("div", {
668
+ class: "title"
669
+ }, "沟通记录", -1)), c(r(Ie), {
670
+ class: "messageContent",
671
+ loading: m.value
672
+ }, {
673
+ default: s(() => [h.value.length == 0 ? (i(), k(r(je), {
674
+ key: 0,
675
+ title: "☕️ 温馨提示!",
676
+ items: u,
677
+ wrap: "",
678
+ vertical: !1,
679
+ onOnItemClick: y
680
+ })) : (i(), I("div", ct, [(i(!0), I(B, null, ue(h.value, (p, O) => (i(), I(B, {
681
+ key: O
682
+ }, [p.type === "text" ? (i(), I(B, {
683
+ key: 0
684
+ }, [p.senderRole !== o.senderRole ? (i(), k(se, {
685
+ key: 0,
686
+ value: p.content,
687
+ type: p.type,
688
+ "avatar-url": p.senderInfo.avatarUrl
689
+ }, null, 8, ["value", "type", "avatar-url"])) : (i(), k(ne, {
690
+ key: 1,
691
+ value: p.content,
692
+ "avatar-url": p.senderInfo.avatarUrl,
693
+ type: p.type
694
+ }, null, 8, ["value", "avatar-url", "type"]))], 64)) : (i(), I(B, {
695
+ key: 1
696
+ }, [p.senderRole !== o.senderRole ? (i(), k(se, {
697
+ key: 0,
698
+ type: p.type,
699
+ value: p.url,
700
+ "avatar-text": "S",
701
+ "avatar-url": p.senderInfo.avatarUrl
702
+ }, null, 8, ["type", "value", "avatar-url"])) : (i(), k(ne, {
703
+ key: 1,
704
+ type: p.type,
705
+ value: p.url,
706
+ "avatar-url": p.senderInfo.avatarUrl
707
+ }, null, 8, ["type", "value", "avatar-url"]))], 64))], 64))), 128))]))]),
708
+ _: 1
709
+ }, 8, ["loading"])])], 512), w("div", dt, [c(r(Ee), {
710
+ ref_key: "senderRef",
711
+ ref: g,
712
+ value: t.value,
713
+ "onUpdate:value": C[0] || (C[0] = (p) => t.value = p),
714
+ placeholder: "请输入你要咨询的问题?",
715
+ loading: l.value,
716
+ "allow-speech": !1,
717
+ "read-only": l.value,
718
+ onSubmit: S
719
+ }, {
720
+ prefix: s(() => [c(r(J), {
721
+ type: "text",
722
+ class: "IconLink",
723
+ onClick: N
724
+ }, {
725
+ icon: s(() => [c(r(Ge))]),
726
+ _: 1
727
+ })]),
728
+ _: 1
729
+ }, 8, ["value", "loading", "read-only"])])]));
730
+ }
731
+ }), ft = /* @__PURE__ */ P(pt, [["__scopeId", "data-v-358e6ad1"]]);
732
+ function G(e, a) {
733
+ const {
734
+ config: t
735
+ } = Pe(), l = t.value[e];
736
+ return l !== void 0 ? l : {
737
+ appId: "",
738
+ bucketId: "",
739
+ prefixUrl: "/api",
740
+ bucket: "",
741
+ region: "ap-beijing"
742
+ }[e];
743
+ }
744
+ const mt = {
745
+ class: "FeedBackFrom"
746
+ }, vt = /* @__PURE__ */ L({
747
+ __name: "FeedbackForm",
748
+ props: {
749
+ appId: {
750
+ type: String,
751
+ required: !0
752
+ },
753
+ prefixUrl: {
754
+ type: String,
755
+ required: !0
756
+ }
757
+ },
758
+ emits: ["confirm"],
759
+ setup(e, {
760
+ emit: a
761
+ }) {
762
+ const t = a, l = v(), u = v(!1), g = e, n = v({
763
+ id: void 0,
764
+ title: "",
765
+ type: "bugReports",
766
+ description: "",
767
+ screenshots: []
768
+ });
769
+ v([]), g.appId, G("bucketId"), G("bucket"), G("region");
770
+ function f() {
771
+ l.value.validate().then((o) => {
772
+ if (!o) {
773
+ u.value = !0, console.log("create");
774
+ const y = {
775
+ title: n.value.title,
776
+ type: n.value.type,
777
+ description: n.value.description,
778
+ screenshots: n.value.screenshots
779
+ };
780
+ at(g.prefixUrl, y).then(() => {
781
+ u.value = !1, Le.success("新建反馈成功"), t("confirm");
782
+ }).catch(() => {
783
+ u.value = !1;
784
+ });
785
+ }
786
+ });
787
+ }
788
+ return (o, y) => (i(), I("div", mt, [c(r(we), {
789
+ ref_key: "formRef",
790
+ ref: l,
791
+ model: n.value,
792
+ "auto-label-width": "",
793
+ layout: "vertical"
794
+ }, {
795
+ default: s(() => [c(r(H), {
796
+ field: "title",
797
+ label: "标题",
798
+ rules: [{
799
+ required: !0,
800
+ message: "请输入标题"
801
+ }]
802
+ }, {
803
+ default: s(() => [c(r(Ue), {
804
+ modelValue: n.value.title,
805
+ "onUpdate:modelValue": y[0] || (y[0] = (m) => n.value.title = m),
806
+ placeholder: "请输入标题"
807
+ }, null, 8, ["modelValue"])]),
808
+ _: 1
809
+ }), c(r(H), {
810
+ field: "type",
811
+ label: "反馈类型",
812
+ rules: [{
813
+ required: !0,
814
+ message: "请选择反馈类型"
815
+ }]
816
+ }, {
817
+ default: s(() => [c(r($e), {
818
+ modelValue: n.value.type,
819
+ "onUpdate:modelValue": y[1] || (y[1] = (m) => n.value.type = m),
820
+ placeholder: "请选择反馈类型"
821
+ }, {
822
+ default: s(() => [(i(!0), I(B, null, ue(r(Q), (m, h) => (i(), k(r(qe), {
823
+ key: h,
824
+ value: m.key
825
+ }, {
826
+ default: s(() => [$(R(m.label), 1)]),
827
+ _: 2
828
+ }, 1032, ["value"]))), 128))]),
829
+ _: 1
830
+ }, 8, ["modelValue"])]),
831
+ _: 1
832
+ }), c(r(H), {
833
+ field: "description",
834
+ label: "问题描述",
835
+ rules: [{
836
+ required: !0,
837
+ message: "请输入问题描述"
838
+ }]
839
+ }, {
840
+ default: s(() => [c(r(Fe), {
841
+ modelValue: n.value.description,
842
+ "onUpdate:modelValue": y[2] || (y[2] = (m) => n.value.description = m),
843
+ placeholder: "请输入问题描述",
844
+ "allow-clear": "",
845
+ "auto-size": {
846
+ minRows: 5
847
+ }
848
+ }, null, 8, ["modelValue"])]),
849
+ _: 1
850
+ }), F("", !0), c(r(J), {
851
+ loading: u.value,
852
+ type: "primary",
853
+ onClick: f
854
+ }, {
855
+ default: s(() => y[3] || (y[3] = [$(" 提交 ")])),
856
+ _: 1,
857
+ __: [3]
858
+ }, 8, ["loading"])]),
859
+ _: 1
860
+ }, 8, ["model"])]));
861
+ }
862
+ }), gt = /* @__PURE__ */ P(vt, [["__scopeId", "data-v-23dfb0fe"]]), yt = {
863
+ class: "messages"
864
+ }, bt = {
865
+ key: 1,
866
+ class: "list"
867
+ }, kt = /* @__PURE__ */ L({
868
+ __name: "FeedbackList",
869
+ props: {
870
+ appId: {
871
+ type: String,
872
+ required: !0
873
+ },
874
+ prefixUrl: {
875
+ type: String,
876
+ required: !0
877
+ },
878
+ bucketId: {
879
+ type: String,
880
+ required: !0
881
+ },
882
+ bucket: {
883
+ type: String,
884
+ required: !0
885
+ },
886
+ region: {
887
+ type: String,
888
+ required: !0
889
+ }
890
+ },
891
+ emits: ["toDetail"],
892
+ setup(e, {
893
+ emit: a
894
+ }) {
895
+ const t = e, l = v(!0), u = v([]), g = v(!1), n = v(""), f = v({
896
+ total: 0,
897
+ current: 1,
898
+ pageSize: 10
899
+ });
900
+ function o() {
901
+ l.value = !0;
902
+ }
903
+ function y(_) {
904
+ console.log(_, "record"), n.value = _.id, l.value = !1;
905
+ }
906
+ const m = [{
907
+ dataIndex: "id",
908
+ slotName: "id",
909
+ title: "ID",
910
+ minWidth: 100,
911
+ ellipsis: !0,
912
+ tooltip: !0
913
+ }, {
914
+ dataIndex: "title",
915
+ slotName: "title",
916
+ title: "标题",
917
+ minWidth: 100,
918
+ ellipsis: !0,
919
+ tooltip: !0
920
+ }, {
921
+ dataIndex: "type",
922
+ slotName: "type",
923
+ title: "反馈类型",
924
+ minWidth: 100,
925
+ ellipsis: !0,
926
+ tooltip: !0
927
+ }, {
928
+ dataIndex: "status",
929
+ slotName: "status",
930
+ title: "状态",
931
+ minWidth: 100,
932
+ ellipsis: !0,
933
+ tooltip: !0
934
+ }, {
935
+ dataIndex: "createAt",
936
+ slotName: "createAt",
937
+ title: "创建日期",
938
+ minWidth: 180
939
+ }, {
940
+ dataIndex: "actions",
941
+ slotName: "actions",
942
+ title: "操作",
943
+ fixed: "right",
944
+ minWidth: 80
945
+ }];
946
+ function h(_) {
947
+ return _ === "inProgress" ? "orangered" : _ === "done" ? "green" : "arcoblue";
948
+ }
949
+ function U() {
950
+ g.value = !0, nt(t.prefixUrl, {
951
+ current: f.value.current,
952
+ pageSize: f.value.pageSize
953
+ }).then(async ({
954
+ data: _
955
+ }) => {
956
+ g.value = !1, u.value = _.items, f.value.total = _.count;
957
+ }).catch(() => {
958
+ g.value = !1;
959
+ });
960
+ }
961
+ const q = (_) => {
962
+ f.value.current = _, U();
963
+ }, N = (_) => {
964
+ f.value.current = 1, f.value.pageSize = _, U();
965
+ };
966
+ return U(), (_, S) => (i(), I("div", yt, [l.value ? F("", !0) : (i(), k(r(Re), {
967
+ key: 0,
968
+ style: {
969
+ "margin-bottom": "10px",
970
+ cursor: "pointer"
971
+ }
972
+ }, {
973
+ default: s(() => [c(r(te), {
974
+ style: {
975
+ padding: "0px"
976
+ },
977
+ onClick: o
978
+ }, {
979
+ default: s(() => S[0] || (S[0] = [$("我的反馈")])),
980
+ _: 1,
981
+ __: [0]
982
+ }), c(r(te), {
983
+ style: {
984
+ padding: "0px"
985
+ }
986
+ }, {
987
+ default: s(() => S[1] || (S[1] = [$("反馈详情")])),
988
+ _: 1,
989
+ __: [1]
990
+ })]),
991
+ _: 1
992
+ })), l.value ? (i(), I("div", bt, [c(Oe, {
993
+ columns: m,
994
+ data: u.value,
995
+ loading: g.value,
996
+ pagination: f.value,
997
+ onPageChange: q,
998
+ onPageSizeChange: N
999
+ }, {
1000
+ type: s(({
1001
+ record: b
1002
+ }) => [c(r(j), {
1003
+ color: "arcoblue"
1004
+ }, {
1005
+ default: s(() => {
1006
+ var x;
1007
+ return [$(R((x = r(E)(r(Q), b.type)) == null ? void 0 : x.label), 1)];
1008
+ }),
1009
+ _: 2
1010
+ }, 1024)]),
1011
+ status: s(({
1012
+ record: b
1013
+ }) => [c(r(j), {
1014
+ color: h(b.status)
1015
+ }, {
1016
+ default: s(() => {
1017
+ var x;
1018
+ return [$(R((x = r(E)(r(be), b.status)) == null ? void 0 : x.label), 1)];
1019
+ }),
1020
+ _: 2
1021
+ }, 1032, ["color"])]),
1022
+ actions: s(({
1023
+ record: b
1024
+ }) => [c(r(J), {
1025
+ type: "text",
1026
+ onClick: (x) => y(b)
1027
+ }, {
1028
+ default: s(() => S[2] || (S[2] = [$("查看")])),
1029
+ _: 2,
1030
+ __: [2]
1031
+ }, 1032, ["onClick"])]),
1032
+ _: 1
1033
+ }, 8, ["data", "loading", "pagination"])])) : (i(), k(ft, {
1034
+ key: 2,
1035
+ id: n.value,
1036
+ "app-id": t.appId,
1037
+ "prefix-url": t.prefixUrl,
1038
+ "sender-role": "user",
1039
+ "bucket-id": t.bucketId,
1040
+ bucket: t.bucket,
1041
+ region: t.region
1042
+ }, null, 8, ["id", "app-id", "prefix-url", "bucket-id", "bucket", "region"]))]));
1043
+ }
1044
+ }), _t = /* @__PURE__ */ P(kt, [["__scopeId", "data-v-494d7bdc"]]), ht = {
1045
+ class: "content"
1046
+ }, xt = {
1047
+ class: "left"
1048
+ }, Ct = {
1049
+ class: "right"
1050
+ }, St = /* @__PURE__ */ L({
1051
+ __name: "FeedbackModal",
1052
+ props: {
1053
+ appId: {
1054
+ type: String,
1055
+ required: !0
1056
+ },
1057
+ prefixUrl: {
1058
+ type: String,
1059
+ required: !0
1060
+ },
1061
+ bucketId: {
1062
+ type: String,
1063
+ required: !0
1064
+ },
1065
+ bucket: {
1066
+ type: String,
1067
+ required: !0
1068
+ },
1069
+ region: {
1070
+ type: String,
1071
+ required: !0
1072
+ }
1073
+ },
1074
+ emits: ["confirm", "cancel"],
1075
+ setup(e, {
1076
+ expose: a,
1077
+ emit: t
1078
+ }) {
1079
+ const l = v(!1), u = e, g = t;
1080
+ function n() {
1081
+ g("cancel");
1082
+ }
1083
+ const f = v(["FeedbackList"]), o = v(["功能变更"]), y = v([{
1084
+ name: "我的反馈",
1085
+ path: "FeedbackList",
1086
+ meta: {
1087
+ icon: "mingcute:cube-3d-fill"
1088
+ }
1089
+ }, {
1090
+ name: "新建反馈",
1091
+ path: "CreateFeedback",
1092
+ meta: {
1093
+ icon: "mingcute:cube-3d-fill"
1094
+ }
1095
+ }]), m = v(!1), h = A(() => f.value.length !== 0 ? f.value[0] : "");
1096
+ function U() {
1097
+ f.value = ["FeedbackList"];
1098
+ }
1099
+ function q() {
1100
+ m.value = !1;
1101
+ }
1102
+ function N(S, b) {
1103
+ const x = S.path;
1104
+ console.log(x, b, "lokokoko"), f.value = [x], o.value = S.name;
1105
+ }
1106
+ function _(S) {
1107
+ l.value = S;
1108
+ }
1109
+ return a({
1110
+ setData: _
1111
+ }), (S, b) => (i(), k(r(Be), {
1112
+ visible: l.value,
1113
+ "onUpdate:visible": b[1] || (b[1] = (x) => l.value = x),
1114
+ loading: !1,
1115
+ "body-class": "AppMessagebodyClass",
1116
+ "mask-closable": !1,
1117
+ footer: !1,
1118
+ width: "auto",
1119
+ title: "用户反馈",
1120
+ "hide-title": !1,
1121
+ onCancel: n
1122
+ }, {
1123
+ default: s(() => [w("div", ht, [w("div", xt, [c(De, {
1124
+ "selected-keys": f.value,
1125
+ "onUpdate:selectedKeys": b[0] || (b[0] = (x) => f.value = x),
1126
+ menus: y.value,
1127
+ onChange: N
1128
+ }, null, 8, ["selected-keys", "menus"])]), w("div", Ct, [h.value === "FeedbackList" ? (i(), k(_t, {
1129
+ key: 0,
1130
+ "app-id": u.appId,
1131
+ "prefix-url": u.prefixUrl,
1132
+ "bucket-id": u.bucketId,
1133
+ bucket: u.bucket,
1134
+ region: u.region
1135
+ }, null, 8, ["app-id", "prefix-url", "bucket-id", "bucket", "region"])) : F("", !0), h.value === "CreateFeedback" ? (i(), k(gt, {
1136
+ key: 1,
1137
+ "app-id": u.appId,
1138
+ "prefix-url": u.prefixUrl,
1139
+ onConfirm: U
1140
+ }, null, 8, ["app-id", "prefix-url"])) : F("", !0)])]), c(r(ze), {
1141
+ width: 400,
1142
+ visible: m.value,
1143
+ "unmount-on-close": "",
1144
+ footer: !1,
1145
+ title: `${o.value}详情`,
1146
+ onCancel: q
1147
+ }, {
1148
+ default: s(() => b[2] || (b[2] = [w("div", null, " You can customize modal body text by the current situation. This modal will be closed immediately once you press the OK button. ", -1)])),
1149
+ _: 1,
1150
+ __: [2]
1151
+ }, 8, ["visible", "title"])]),
1152
+ _: 1
1153
+ }, 8, ["visible"]));
1154
+ }
1155
+ }), Gt = /* @__PURE__ */ P(St, [["__scopeId", "data-v-6f6174e8"]]);
1156
+ export {
1157
+ ft as F,
1158
+ Xe as R,
1159
+ ne as _,
1160
+ se as a,
1161
+ gt as b,
1162
+ _t as c,
1163
+ Gt as d
1164
+ };