@huyooo/ui 0.4.6 → 0.4.7

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