@huyooo/ui 0.6.1 → 0.6.4

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