@huyooo/ui 0.4.34 → 0.4.36

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