@huyooo/ui 1.0.2 → 1.0.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.
Files changed (182) hide show
  1. package/dist/AuthkitAppSetting-BN8-xgNq.js +2674 -0
  2. package/dist/{Contact-M6iyuyNL.js → Contact-DBH8CyKp.js} +105 -113
  3. package/dist/CustomTable-BzGfaAVH.js +276 -0
  4. package/dist/FeedbackModal.vue_vue_type_script_setup_true_lang-B9BqGWm8.js +1480 -0
  5. package/dist/LandingPageDescription-BczWZHKy.js +12 -0
  6. package/dist/{LandingPageLinkGroup-DDNRivMt.js → LandingPageLinkGroup-r-t3H1X0.js} +87 -88
  7. package/dist/LandingPageSectionHeader-CVAqc7bx.js +137 -0
  8. package/dist/{LandingPageSectionTabs-Ce3_Rc2L.js → LandingPageSectionTabs-DhKpOj5F.js} +300 -309
  9. package/dist/LegalDocViewer-DlaLKGyX.js +2501 -0
  10. package/dist/Menu-uCexrsKP.js +199 -0
  11. package/dist/MessageHandle-mEkCsv9e.js +1173 -0
  12. package/dist/MessageList-Ce-_LNTk.js +244 -0
  13. package/dist/PaySubscriptions-CXkEjqr2.js +1326 -0
  14. package/dist/PricingPlans-DoWP5aX7.js +427 -0
  15. package/dist/ReferrerReferees-DgygiIiE.js +237 -0
  16. package/dist/{Upload.vue_vue_type_script_setup_true_lang-B6NOZjK0.js → Upload.vue_vue_type_script_setup_true_lang-VGh2V4o0.js} +1 -1
  17. package/dist/UserMenuInvitationsItem.vue_vue_type_script_setup_true_lang-zgjpFVln.js +592 -0
  18. package/dist/WidthContainer-PeWkCK0p.js +721 -0
  19. package/dist/{apiClients-DrGX2iJy.js → apiClients-BcXOLuYu.js} +131 -98
  20. package/dist/authkit.d.ts +6 -2
  21. package/dist/authkit.js +53 -44
  22. package/dist/common/authProviderIcons.d.ts +12 -0
  23. package/dist/common/globalConfig.d.ts +5 -0
  24. package/dist/common/tableColumnWidths.d.ts +11 -0
  25. package/dist/common.js +3 -3
  26. package/dist/components/AuthProviderIcon.vue.d.ts +12 -0
  27. package/dist/components/Authkit/AppSetting/AuthkitEmailVerify.vue.d.ts +2 -2
  28. package/dist/components/Authkit/AppSetting/AuthkitOAuthBinding.vue.d.ts +2 -1
  29. package/dist/components/Authkit/AppSetting/AuthkitPasskeyBinding.vue.d.ts +14 -0
  30. package/dist/components/Authkit/AppSetting/AuthkitPasswordUpdate.vue.d.ts +11 -1
  31. package/dist/components/Authkit/AppSetting/AuthkitPersonalInformation.vue.d.ts +1 -3
  32. package/dist/components/Authkit/AppSetting/AuthkitPhoneVerify.vue.d.ts +13 -3
  33. package/dist/components/Authkit/Auth/AuthkitBindEmail.vue.d.ts +29 -2
  34. package/dist/components/Authkit/Auth/AuthkitBindPhone.vue.d.ts +2 -2
  35. package/dist/components/Authkit/Auth/AuthkitEmailUpdate.vue.d.ts +2 -2
  36. package/dist/components/Authkit/Auth/AuthkitOauthItem.vue.d.ts +37 -9
  37. package/dist/components/Authkit/Auth/AuthkitOauthList.vue.d.ts +7 -11
  38. package/dist/components/Authkit/Auth/AuthkitPasswordUpdateAndVerify.vue.d.ts +2 -2
  39. package/dist/components/Authkit/Auth/AuthkitPhonePasswordUpdateAndVerify.vue.d.ts +2 -2
  40. package/dist/components/Authkit/Auth/AuthkitServiceAgreementAndPrivacyProtection.vue.d.ts +11 -7
  41. package/dist/components/Authkit/Auth/AuthkitSignInEmailCode.vue.d.ts +2 -2
  42. package/dist/components/Authkit/Auth/AuthkitSignInPhone.vue.d.ts +3 -62
  43. package/dist/components/Authkit/Auth/AuthkitSignUpPhone.vue.d.ts +2 -2
  44. package/dist/components/Authkit/Auth/AuthkitSwitchSignUpOrResetPassword.vue.d.ts +9 -0
  45. package/dist/components/Authkit/AuthkitAuth.vue.d.ts +2 -8
  46. package/dist/components/Authkit/AuthkitAuthModal.vue.d.ts +0 -4
  47. package/dist/components/Authkit/AuthkitProvider.vue.d.ts +5 -2
  48. package/dist/components/Authkit/AuthkitSendVerifyCode.vue.d.ts +2 -1
  49. package/dist/components/CustomTable.vue.d.ts +27 -1
  50. package/dist/components/Ellipsis.vue.d.ts +2 -6
  51. package/dist/components/Feedback/FeedbackList.vue.d.ts +4 -1
  52. package/dist/components/Gradientbackground.vue.d.ts +2 -2
  53. package/dist/components/HeaderMenus.vue.d.ts +4 -1
  54. package/dist/components/InfiniteLoading.vue.d.ts +1 -1
  55. package/dist/components/LandingPage/LandingPageContainer.vue.d.ts +2 -2
  56. package/dist/components/LandingPage/LandingPagePageContent.vue.d.ts +2 -2
  57. package/dist/components/LegalDoc/LegalDocViewer.vue.d.ts +7 -0
  58. package/dist/components/Menu.vue.d.ts +2 -1
  59. package/dist/components/MenuItem.vue.d.ts +3 -1
  60. package/dist/components/Message/MessageAppMessage.vue.d.ts +12 -2
  61. package/dist/components/Message/MessageDetails.vue.d.ts +9 -161
  62. package/dist/components/Message/MessageHandle.vue.d.ts +16 -4
  63. package/dist/components/Message/MessageList.vue.d.ts +4 -3
  64. package/dist/components/Message/MessageNotificationDetails.vue.d.ts +13 -0
  65. package/dist/components/Message/messageBody/DescriptionsMessageBody.vue.d.ts +3 -0
  66. package/dist/components/Message/messageBody/JsonMessageBodyFallback.vue.d.ts +3 -0
  67. package/dist/components/Message/messageBody/TextMessageBody.vue.d.ts +3 -0
  68. package/dist/components/Message/messageBody/descriptionRows.d.ts +14 -0
  69. package/dist/components/Message/messageBody/descriptionsMessageBody.d.ts +32 -0
  70. package/dist/components/Message/messageBody/descriptionsValueRender.d.ts +4 -0
  71. package/dist/components/Message/messageBody/messageBodyRegistry.d.ts +9 -0
  72. package/dist/components/Message/messageBody/registerBuiltinMessageBodies.d.ts +2 -0
  73. package/dist/components/Message/messageBody/types.d.ts +7 -0
  74. package/dist/components/Referrer/ReferrerRefereeCell.vue.d.ts +7 -0
  75. package/dist/components/Referrer/ReferrerReferees.vue.d.ts +1 -0
  76. package/dist/components/UserMenu/UserAccountMenu.vue.d.ts +1 -16
  77. package/dist/components/UserMenu/UserMenuItem.vue.d.ts +4 -0
  78. package/dist/components/UserMenu/UserMenuModals.vue.d.ts +18 -4
  79. package/dist/components/UserMenu/parts/UserAvatar.vue.d.ts +6 -0
  80. package/dist/components/UserMenu/parts/UserBasicInformation.vue.d.ts +7 -2
  81. package/dist/composables/Authkit/fetchAuthPageAboutUs.d.ts +3 -0
  82. package/dist/composables/Authkit/resolveRoutePermission.d.ts +2 -0
  83. package/dist/composables/Authkit/useAuthkitAppsAuthPageInfo.d.ts +16 -0
  84. package/dist/composables/Authkit/useAuthkitAuth.d.ts +2 -0
  85. package/dist/composables/Authkit/useAuthkitPasskey.d.ts +10 -0
  86. package/dist/composables/Authkit/useLegalDocHostActions.d.ts +6 -0
  87. package/dist/composables/Authkit/useLegalDocs.d.ts +19 -0
  88. package/dist/composables/Authkit/useOauth.d.ts +17 -4
  89. package/dist/composables/Authkit/useRegistrationTerms.d.ts +24 -0
  90. package/dist/composables/Authkit/verifyCodeCooldown.d.ts +19 -0
  91. package/dist/composables/Billing/useBillingPlans.d.ts +0 -4
  92. package/dist/composables/Billing/useBillingStatusOptions.d.ts +2 -6
  93. package/dist/composables/Billing/useBillingSubscriptionSummary.d.ts +16 -0
  94. package/dist/composables/Billing/usePaidProductOptions.d.ts +5 -0
  95. package/dist/composables/Message/messageCenterBadgeCounts.d.ts +28 -0
  96. package/dist/composables/UserMenu/useUserMenuBadgeCounts.d.ts +9 -0
  97. package/dist/composables/useInfiniteList.d.ts +19 -0
  98. package/dist/composables/useMessageNotifications.d.ts +3 -6
  99. package/dist/composables.d.ts +4 -2
  100. package/dist/composables.js +50 -45
  101. package/dist/feedback.d.ts +1 -0
  102. package/dist/feedback.js +12 -11
  103. package/dist/fetchAuthPageAboutUs-dzTSwRsB.js +25 -0
  104. package/dist/{Clipboard-Bo7gdpR6.js → index-BkLvw1PU.js} +1 -1
  105. package/dist/landingPage.js +21 -21
  106. package/dist/legalDocs/buildBuiltinUrl.d.ts +3 -0
  107. package/dist/{utils/legalLinks.d.ts → legalDocs/constants.d.ts} +0 -10
  108. package/dist/legalDocs/index.d.ts +7 -0
  109. package/dist/legalDocs/isConfigured.d.ts +7 -0
  110. package/dist/legalDocs/open.d.ts +3 -0
  111. package/dist/legalDocs/resolveAppId.d.ts +8 -0
  112. package/dist/legalDocs/resolveTarget.d.ts +4 -0
  113. package/dist/legalDocs/types.d.ts +12 -0
  114. package/dist/main.js +320 -308
  115. package/dist/message.d.ts +3 -0
  116. package/dist/message.js +301 -21
  117. package/dist/pay.d.ts +1 -1
  118. package/dist/pay.js +14 -17
  119. package/dist/privateCom.js +1 -1
  120. package/dist/referrer.js +1 -1
  121. package/dist/style.css +1 -1
  122. package/dist/types/api/auth.generated.d.ts +1385 -328
  123. package/dist/types/api/billing.generated.d.ts +907 -76
  124. package/dist/types/api/ones.generated.d.ts +131 -2
  125. package/dist/types/api.d.ts +1 -0
  126. package/dist/types/app.d.ts +10 -0
  127. package/dist/types/user.d.ts +1 -0
  128. package/dist/upload.js +2 -2
  129. package/dist/{useAuthkitAppsAuthPageInfo-C2yKgl8t.js → useAuthkitAppsAuthPageInfo-CNudJd04.js} +18 -17
  130. package/dist/useAuthkitAuth-3m0yW6uP.js +267 -0
  131. package/dist/{useAuthkitCreateAndUpdate-oo9517Gj.js → useAuthkitCreateAndUpdate-BsINsI-E.js} +1 -1
  132. package/dist/{useAuthkitUsersProfile-BZDk21c8.js → useAuthkitUsersProfile-DJlMsftY.js} +3 -3
  133. package/dist/useBillingStatusOptions-CfHQOFNw.js +71 -0
  134. package/dist/{useEnsureAuthenticated-BuIbxqsO.js → useEnsureAuthenticated-DNkCCy_Y.js} +2 -2
  135. package/dist/useLegalDocs-DQP_Yq6B.js +106 -0
  136. package/dist/{useMessageNotifications-D85_-mDq.js → useMessageNotifications-CAphguOm.js} +21 -24
  137. package/dist/useRoutePermission-CEiya9AM.js +218 -0
  138. package/dist/useSEO-CDWxbk8B.js +221 -0
  139. package/dist/useSubscriptionCheckout-d_M_rKRa.js +368 -0
  140. package/dist/{useUploadCos-BRKRzSy3.js → useUploadCos-C8BqFPkx.js} +1 -1
  141. package/dist/user.js +1 -1
  142. package/dist/userMenuModal-D-nDaYqM.js +66 -0
  143. package/dist/utils/apiMiddlewares.d.ts +5 -5
  144. package/dist/utils/apiResponse.d.ts +11 -0
  145. package/dist/utils/authProviderIcon.d.ts +3 -0
  146. package/dist/utils/authkit.d.ts +20 -7
  147. package/dist/utils/formatPoints.d.ts +8 -0
  148. package/dist/utils/messageNotificationContent.d.ts +4 -0
  149. package/dist/utils/messageTextLink.d.ts +9 -0
  150. package/dist/utils/passkeySupport.d.ts +8 -0
  151. package/dist/utils/pointsFlowTypes.d.ts +10 -0
  152. package/dist/utils/pointsHistoryDisplay.d.ts +8 -0
  153. package/dist/utils/refundStatusDisplay.d.ts +1 -0
  154. package/dist/utils/subscriptionDisplay.d.ts +7 -0
  155. package/dist/utils/userDisplay.d.ts +41 -0
  156. package/package.json +11 -3
  157. package/dist/AuthkitAppSetting-C-0uuLSg.js +0 -1921
  158. package/dist/AuthkitGithubBinding-C5zEy9zN.js +0 -2207
  159. package/dist/CustomTable-CCOQxfxr.js +0 -279
  160. package/dist/FeedbackModal.vue_vue_type_script_setup_true_lang-M1NQ-rx-.js +0 -1396
  161. package/dist/LandingPageFAQ-CZJXvor9.js +0 -80
  162. package/dist/LandingPageSectionHeader-D_74W4My.js +0 -69
  163. package/dist/Menu-Cy2ZPeaz.js +0 -170
  164. package/dist/MessageHandle-BG12aX0i.js +0 -924
  165. package/dist/MessageList-CrCF8mU6.js +0 -233
  166. package/dist/MessageNoticeNotificationsDetails.vue_vue_type_script_setup_true_lang-gsjL6yAe.js +0 -142
  167. package/dist/PaySubscriptions-C3KiTsQS.js +0 -1241
  168. package/dist/PricingPlans-uwlFiiJx.js +0 -404
  169. package/dist/ReferrerReferees-Zb5Bd-_e.js +0 -106
  170. package/dist/UserMenuInvitationsItem.vue_vue_type_script_setup_true_lang-QWUNRjGh.js +0 -520
  171. package/dist/WidthContainer-BVBk0kJN.js +0 -688
  172. package/dist/components/Feedback/FeedbackDetails.vue.d.ts +0 -178
  173. package/dist/composables/Authkit/useLegalLinks.d.ts +0 -34
  174. package/dist/index-D3Kp6R4z.js +0 -4
  175. package/dist/useAuthkitAuth-DmS-H7M2.js +0 -175
  176. package/dist/useBillingStatusOptions-B7xLU3fs.js +0 -145
  177. package/dist/useLegalLinks-Cwr45PBT.js +0 -60
  178. package/dist/useRoutePermission-CaWtjLRA.js +0 -212
  179. package/dist/useSEO-BSMQdBR9.js +0 -158
  180. package/dist/useSubscriptionCheckout-BRk5h9aC.js +0 -365
  181. package/dist/useTableHandle-BdujaiNX.js +0 -69
  182. /package/dist/components/{Feedback/FeedbackVideoPreview.vue.d.ts → VideoPreview.vue.d.ts} +0 -0
@@ -0,0 +1,1480 @@
1
+ /* empty css */
2
+ /* empty css */
3
+ import { U as Ye } from "./userMenuModal-D-nDaYqM.js";
4
+ import { defineComponent as q, useModel as Je, openBlock as s, createBlock as B, Teleport as Ze, createElementBlock as c, withKeys as Qe, createElementVNode as b, toDisplayString as F, withModifiers as G, createCommentVNode as R, mergeModels as et, ref as m, computed as A, Fragment as V, renderList as z, createVNode as f, unref as a, normalizeStyle as ee, withCtx as v, createTextVNode as E, normalizeClass as ie, onBeforeUnmount as tt, onUnmounted as at, watch as fe, readonly as st, nextTick as te } from "vue";
5
+ import { ImagePreviewGroup as ge, Avatar as re, Space as oe, Descriptions as nt, DescriptionsItem as ae, Tag as Z, Spin as lt, Empty as it, Button as pe, Message as ue, Form as rt, FormItem as Y, Input as ot, Select as Ce, Option as Ue, Textarea as ut, Breadcrumb as ct, BreadcrumbItem as xe, Modal as dt } from "@arco-design/web-vue";
6
+ import { M as ft } from "./Menu-uCexrsKP.js";
7
+ /* empty css */
8
+ import { C as ce } from "./index-BkLvw1PU.js";
9
+ /* empty css */
10
+ /* empty css */
11
+ import { o as O, g as Fe } from "./apiClients-BcXOLuYu.js";
12
+ /* empty css */
13
+ import { g as vt, u as pt } from "./useUploadCos-C8BqFPkx.js";
14
+ import { _ as W } from "./_plugin-vue_export-helper-CHgC5LLL.js";
15
+ import { r as mt, m as Se, a as gt, M as bt } from "./MessageList-Ce-_LNTk.js";
16
+ import { f as Q } from "./index-D56hUMeD.js";
17
+ import { Bubble as Ie, Sender as kt } from "ant-design-x-vue";
18
+ import { u as yt } from "./useAuthkitUsersProfile-DJlMsftY.js";
19
+ import { u as _t } from "./useUserMenu-ClPBlvaM.js";
20
+ /* empty css */
21
+ import { Icon as ht } from "@iconify/vue";
22
+ import { _ as wt, g as Ct, i as Ut } from "./plugin-vue_export-helper-LjDO2Zua.js";
23
+ const xt = {
24
+ class: "video-preview__header"
25
+ }, St = {
26
+ class: "video-preview__title"
27
+ }, $t = {
28
+ class: "video-preview__stage"
29
+ }, Ft = ["src"], It = /* @__PURE__ */ q({
30
+ __name: "VideoPreview",
31
+ props: /* @__PURE__ */ et({
32
+ src: {
33
+ type: String,
34
+ default: ""
35
+ },
36
+ title: {
37
+ type: String,
38
+ default: ""
39
+ }
40
+ }, {
41
+ visible: {
42
+ type: Boolean,
43
+ default: !1
44
+ },
45
+ visibleModifiers: {}
46
+ }),
47
+ emits: ["update:visible"],
48
+ setup(e) {
49
+ const t = Je(e, "visible"), i = e;
50
+ function o() {
51
+ t.value = !1;
52
+ }
53
+ return (g, l) => (s(), B(Ze, {
54
+ to: "body"
55
+ }, [t.value ? (s(), c("div", {
56
+ key: 0,
57
+ class: "video-preview",
58
+ tabindex: "0",
59
+ onClick: o,
60
+ onKeydown: Qe(o, ["esc"])
61
+ }, [b("div", xt, [b("div", St, F(i.title), 1), b("button", {
62
+ type: "button",
63
+ class: "video-preview__close",
64
+ onClick: G(o, ["stop"])
65
+ }, " × ")]), b("div", $t, [i.src ? (s(), c("video", {
66
+ key: 0,
67
+ class: "video-preview__video",
68
+ src: i.src,
69
+ controls: "",
70
+ autoplay: "",
71
+ onClick: l[0] || (l[0] = G(() => {
72
+ }, ["stop"]))
73
+ }, null, 8, Ft)) : R("", !0)])], 32)) : R("", !0)]));
74
+ }
75
+ }), be = /* @__PURE__ */ W(It, [["__scopeId", "data-v-3f517bc8"]]), At = {
76
+ key: 0,
77
+ class: "message-attachments"
78
+ }, Pt = ["title", "onClick"], Rt = ["src", "alt"], Bt = ["title", "onClick"], Tt = ["src"], Mt = ["href", "title"], Lt = {
79
+ class: "message-attachment-main"
80
+ }, Vt = {
81
+ class: "message-attachment-name"
82
+ }, Et = {
83
+ class: "message-attachment-meta"
84
+ }, Dt = /* @__PURE__ */ q({
85
+ __name: "FeedbackMessageAttachments",
86
+ props: {
87
+ attachments: {
88
+ type: Array,
89
+ default: () => []
90
+ }
91
+ },
92
+ setup(e) {
93
+ const t = e, i = m(!1), o = m(0), g = m(!1), l = m(""), k = m(""), x = A(() => t.attachments.filter((h) => h.kind === "image")), _ = A(() => t.attachments.filter((h) => h.kind === "video")), S = A(() => t.attachments.filter((h) => h.kind === "file")), L = A(() => x.value.map((h) => h.url || ""));
94
+ function w(h) {
95
+ o.value = h, i.value = !0;
96
+ }
97
+ function $(h) {
98
+ l.value = h.url || "", k.value = h.name, g.value = !0;
99
+ }
100
+ function P(h) {
101
+ return h < 1024 ? `${h} B` : h < 1024 * 1024 ? `${(h / 1024).toFixed(1)} KB` : h < 1024 * 1024 * 1024 ? `${(h / 1024 / 1024).toFixed(1)} MB` : `${(h / 1024 / 1024 / 1024).toFixed(1)} GB`;
102
+ }
103
+ return (h, I) => (s(), c(V, null, [t.attachments.length > 0 ? (s(), c("div", At, [(s(!0), c(V, null, z(x.value, (u, U) => (s(), c("button", {
104
+ key: u.key,
105
+ type: "button",
106
+ class: "message-media message-media--image",
107
+ title: u.name,
108
+ onClick: (T) => w(U)
109
+ }, [b("img", {
110
+ src: u.url,
111
+ alt: u.name,
112
+ class: "message-media__content"
113
+ }, null, 8, Rt)], 8, Pt))), 128)), (s(!0), c(V, null, z(_.value, (u) => (s(), c("button", {
114
+ key: u.key,
115
+ type: "button",
116
+ class: "message-media message-media--video",
117
+ title: u.name,
118
+ onClick: (U) => $(u)
119
+ }, [b("video", {
120
+ class: "message-media__content",
121
+ src: u.url,
122
+ muted: "",
123
+ preload: "metadata"
124
+ }, null, 8, Tt), I[3] || (I[3] = b("span", {
125
+ class: "message-video-play"
126
+ }, "播放", -1))], 8, Bt))), 128)), (s(!0), c(V, null, z(S.value, (u) => (s(), c("a", {
127
+ key: u.key,
128
+ class: "message-file",
129
+ href: u.url,
130
+ target: "_blank",
131
+ rel: "noopener noreferrer",
132
+ title: u.name
133
+ }, [I[4] || (I[4] = b("span", {
134
+ class: "message-file-icon"
135
+ }, "FILE", -1)), b("span", Lt, [b("span", Vt, F(u.name), 1), b("span", Et, F(P(u.size)), 1)])], 8, Mt))), 128))])) : R("", !0), f(a(ge), {
136
+ "src-list": L.value,
137
+ visible: i.value,
138
+ "onUpdate:visible": I[0] || (I[0] = (u) => i.value = u),
139
+ current: o.value,
140
+ "onUpdate:current": I[1] || (I[1] = (u) => o.value = u)
141
+ }, null, 8, ["src-list", "visible", "current"]), f(be, {
142
+ visible: g.value,
143
+ "onUpdate:visible": I[2] || (I[2] = (u) => g.value = u),
144
+ title: k.value,
145
+ src: l.value
146
+ }, null, 8, ["visible", "title", "src"])], 64));
147
+ }
148
+ }), Ae = /* @__PURE__ */ W(Dt, [["__scopeId", "data-v-49a094a3"]]), qt = /* @__PURE__ */ q({
149
+ __name: "FeedbackRefresh",
150
+ setup(e) {
151
+ return (t, i) => (s(), B(a(ht), {
152
+ class: "icon",
153
+ icon: "mingcute:refresh-2-line"
154
+ }));
155
+ }
156
+ }), $e = /* @__PURE__ */ W(qt, [["__scopeId", "data-v-64bb6fc2"]]), Ot = ["src"], zt = {
157
+ key: 1
158
+ }, Nt = {
159
+ class: "feedback-message-body"
160
+ }, jt = {
161
+ key: 0,
162
+ class: "feedback-text-bubble"
163
+ }, Kt = {
164
+ key: 1,
165
+ class: "feedback-bubble-stack feedback-bubble-stack--end"
166
+ }, Wt = ["src"], Ht = {
167
+ key: 1
168
+ }, Gt = /* @__PURE__ */ q({
169
+ __name: "FeedbackBubbleEnd",
170
+ props: {
171
+ text: {
172
+ type: String,
173
+ default: ""
174
+ },
175
+ attachments: {
176
+ type: Array,
177
+ default: () => []
178
+ },
179
+ avatarUrl: {
180
+ type: String,
181
+ default: ""
182
+ },
183
+ avatarText: {
184
+ type: String,
185
+ default: "U"
186
+ },
187
+ bubbleStyle: {
188
+ type: Object,
189
+ default: () => ({
190
+ paddingLeft: "52px"
191
+ })
192
+ },
193
+ showRefresh: {
194
+ type: Boolean,
195
+ default: !1
196
+ },
197
+ showClipboard: {
198
+ type: Boolean,
199
+ default: !1
200
+ }
201
+ },
202
+ emits: ["refresh"],
203
+ setup(e, {
204
+ emit: t
205
+ }) {
206
+ const i = e, o = t;
207
+ function g(_) {
208
+ return _.startsWith("http://") || _.startsWith("https://") || _.startsWith("data:");
209
+ }
210
+ const l = A(() => {
211
+ const _ = i.avatarUrl.trim();
212
+ return g(_) ? _ : "";
213
+ }), k = A(() => i.attachments.length > 0);
214
+ function x() {
215
+ o("refresh");
216
+ }
217
+ return (_, S) => k.value ? (s(), c("div", {
218
+ key: 0,
219
+ class: "feedback-message-group feedback-message-group--end",
220
+ style: ee(i.bubbleStyle)
221
+ }, [f(a(re), {
222
+ class: "feedback-message-avatar"
223
+ }, {
224
+ default: v(() => [l.value ? (s(), c("img", {
225
+ key: 0,
226
+ alt: "avatar",
227
+ src: l.value
228
+ }, null, 8, Ot)) : (s(), c("span", zt, F(i.avatarText), 1))]),
229
+ _: 1
230
+ }), b("div", Nt, [i.text ? (s(), c("div", jt, F(i.text), 1)) : R("", !0), i.showClipboard || i.showRefresh ? (s(), B(a(oe), {
231
+ key: 1,
232
+ class: "feedback-message-footer"
233
+ }, {
234
+ default: v(() => [i.showClipboard ? (s(), B(ce, {
235
+ key: 0,
236
+ value: i.text
237
+ }, null, 8, ["value"])) : R("", !0), i.showRefresh ? (s(), B($e, {
238
+ key: 1,
239
+ onClick: x
240
+ })) : R("", !0)]),
241
+ _: 1
242
+ })) : R("", !0), f(Ae, {
243
+ attachments: i.attachments
244
+ }, null, 8, ["attachments"])])], 4)) : (s(), c("div", Kt, [f(a(Ie), {
245
+ placement: "end",
246
+ style: ee(i.bubbleStyle)
247
+ }, {
248
+ avatar: v(() => [f(a(re), null, {
249
+ default: v(() => [l.value ? (s(), c("img", {
250
+ key: 0,
251
+ alt: "avatar",
252
+ src: l.value
253
+ }, null, 8, Wt)) : (s(), c("span", Ht, F(i.avatarText), 1))]),
254
+ _: 1
255
+ })]),
256
+ message: v(() => [i.text ? (s(), c(V, {
257
+ key: 0
258
+ }, [E(F(i.text), 1)], 64)) : R("", !0)]),
259
+ footer: v(() => [f(a(oe), null, {
260
+ default: v(() => [i.showClipboard && i.text ? (s(), B(ce, {
261
+ key: 0,
262
+ value: i.text
263
+ }, null, 8, ["value"])) : R("", !0), i.showRefresh ? (s(), B($e, {
264
+ key: 1,
265
+ onClick: x
266
+ })) : R("", !0)]),
267
+ _: 1
268
+ })]),
269
+ _: 1
270
+ }, 8, ["style"])]));
271
+ }
272
+ }), Xt = /* @__PURE__ */ W(Gt, [["__scopeId", "data-v-ed8f32cc"]]), Yt = ["src"], Jt = {
273
+ key: 1
274
+ }, Zt = {
275
+ class: "feedback-message-body"
276
+ }, Qt = {
277
+ key: 0,
278
+ class: "feedback-text-bubble"
279
+ }, ea = {
280
+ key: 1,
281
+ class: "feedback-bubble-stack feedback-bubble-stack--start"
282
+ }, ta = ["src"], aa = {
283
+ key: 1
284
+ }, sa = /* @__PURE__ */ q({
285
+ __name: "FeedbackBubbleStart",
286
+ props: {
287
+ text: {
288
+ type: String,
289
+ default: ""
290
+ },
291
+ attachments: {
292
+ type: Array,
293
+ default: () => []
294
+ },
295
+ avatarUrl: {
296
+ type: String,
297
+ default: ""
298
+ },
299
+ avatarText: {
300
+ type: String,
301
+ default: "U"
302
+ },
303
+ bubbleStyle: {
304
+ type: Object,
305
+ default: () => ({
306
+ paddingRight: "52px"
307
+ })
308
+ },
309
+ showClipboard: {
310
+ type: Boolean,
311
+ default: !1
312
+ }
313
+ },
314
+ setup(e) {
315
+ const t = e;
316
+ function i(l) {
317
+ return l.startsWith("http://") || l.startsWith("https://") || l.startsWith("data:");
318
+ }
319
+ const o = A(() => {
320
+ const l = t.avatarUrl.trim();
321
+ return i(l) ? l : "";
322
+ }), g = A(() => t.attachments.length > 0);
323
+ return (l, k) => g.value ? (s(), c("div", {
324
+ key: 0,
325
+ class: "feedback-message-group feedback-message-group--start",
326
+ style: ee(t.bubbleStyle)
327
+ }, [f(a(re), {
328
+ class: "feedback-message-avatar"
329
+ }, {
330
+ default: v(() => [o.value ? (s(), c("img", {
331
+ key: 0,
332
+ alt: "avatar",
333
+ src: o.value
334
+ }, null, 8, Yt)) : (s(), c("span", Jt, F(t.avatarText), 1))]),
335
+ _: 1
336
+ }), b("div", Zt, [t.text ? (s(), c("div", Qt, F(t.text), 1)) : R("", !0), t.showClipboard ? (s(), B(a(oe), {
337
+ key: 1,
338
+ class: "feedback-message-footer"
339
+ }, {
340
+ default: v(() => [f(ce, {
341
+ value: t.text
342
+ }, null, 8, ["value"])]),
343
+ _: 1
344
+ })) : R("", !0), f(Ae, {
345
+ attachments: t.attachments
346
+ }, null, 8, ["attachments"])])], 4)) : (s(), c("div", ea, [f(a(Ie), {
347
+ placement: "start",
348
+ style: ee(t.bubbleStyle)
349
+ }, {
350
+ avatar: v(() => [f(a(re), null, {
351
+ default: v(() => [o.value ? (s(), c("img", {
352
+ key: 0,
353
+ alt: "avatar",
354
+ src: o.value
355
+ }, null, 8, ta)) : (s(), c("span", aa, F(t.avatarText), 1))]),
356
+ _: 1
357
+ })]),
358
+ message: v(() => [t.text ? (s(), c(V, {
359
+ key: 0
360
+ }, [E(F(t.text), 1)], 64)) : R("", !0)]),
361
+ footer: v(() => [f(a(oe), null, {
362
+ default: v(() => [t.showClipboard && t.text ? (s(), B(ce, {
363
+ key: 0,
364
+ value: t.text
365
+ }, null, 8, ["value"])) : R("", !0)]),
366
+ _: 1
367
+ })]),
368
+ _: 1
369
+ }, 8, ["style"])]));
370
+ }
371
+ }), na = /* @__PURE__ */ W(sa, [["__scopeId", "data-v-a88b5650"]]), la = q({
372
+ name: "IconLink",
373
+ props: {
374
+ size: {
375
+ type: [Number, String]
376
+ },
377
+ strokeWidth: {
378
+ type: Number,
379
+ default: 4
380
+ },
381
+ strokeLinecap: {
382
+ type: String,
383
+ default: "butt",
384
+ validator: (e) => ["butt", "round", "square"].includes(e)
385
+ },
386
+ strokeLinejoin: {
387
+ type: String,
388
+ default: "miter",
389
+ validator: (e) => ["arcs", "bevel", "miter", "miter-clip", "round"].includes(e)
390
+ },
391
+ rotate: Number,
392
+ spin: Boolean
393
+ },
394
+ emits: {
395
+ click: (e) => !0
396
+ },
397
+ setup(e, {
398
+ emit: t
399
+ }) {
400
+ const i = Ct("icon"), o = A(() => [i, `${i}-link`, {
401
+ [`${i}-spin`]: e.spin
402
+ }]), g = A(() => {
403
+ const k = {};
404
+ return e.size && (k.fontSize = Ut(e.size) ? `${e.size}px` : e.size), e.rotate && (k.transform = `rotate(${e.rotate}deg)`), k;
405
+ });
406
+ return {
407
+ cls: o,
408
+ innerStyle: g,
409
+ onClick: (k) => {
410
+ t("click", k);
411
+ }
412
+ };
413
+ }
414
+ }), ia = ["stroke-width", "stroke-linecap", "stroke-linejoin"];
415
+ function ra(e, t, i, o, g, l) {
416
+ return s(), c("svg", {
417
+ viewBox: "0 0 48 48",
418
+ fill: "none",
419
+ xmlns: "http://www.w3.org/2000/svg",
420
+ stroke: "currentColor",
421
+ class: ie(e.cls),
422
+ style: ee(e.innerStyle),
423
+ "stroke-width": e.strokeWidth,
424
+ "stroke-linecap": e.strokeLinecap,
425
+ "stroke-linejoin": e.strokeLinejoin,
426
+ onClick: t[0] || (t[0] = (...k) => e.onClick && e.onClick(...k))
427
+ }, t[1] || (t[1] = [b("path", {
428
+ 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"
429
+ }, null, -1)]), 14, ia);
430
+ }
431
+ var ve = /* @__PURE__ */ wt(la, [["render", ra]]);
432
+ const oa = Object.assign(ve, {
433
+ install: (e, t) => {
434
+ var i;
435
+ const o = (i = t == null ? void 0 : t.iconPrefix) != null ? i : "";
436
+ e.component(o + ve.name, ve);
437
+ }
438
+ }), Pe = [".jpg", ".jpeg", ".png", ".gif", ".webp", ".mp4", ".webm", ".mov", ".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".txt", ".md", ".csv", ".json", ".zip"], Re = Pe.join(","), ua = /* @__PURE__ */ new Set(["image/jpeg", "image/png", "image/gif", "image/webp"]), ca = /* @__PURE__ */ new Set(["video/mp4", "video/webm", "video/quicktime"]);
439
+ function da(e) {
440
+ const t = e.lastIndexOf(".");
441
+ return t < 0 ? "" : e.slice(t).toLowerCase();
442
+ }
443
+ function fa(e) {
444
+ return Pe.includes(da(e.name));
445
+ }
446
+ function Be(e, t = e.type) {
447
+ return ua.has(t) ? "image" : ca.has(t) ? "video" : "file";
448
+ }
449
+ const se = 9;
450
+ function va(e) {
451
+ const t = Be(e);
452
+ return {
453
+ id: `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
454
+ file: e,
455
+ kind: t,
456
+ previewUrl: t === "image" || t === "video" ? URL.createObjectURL(e) : void 0
457
+ };
458
+ }
459
+ function Te(e) {
460
+ const t = m([]), i = A(() => t.value.length > 0), o = A(() => t.value.filter((w) => w.kind === "image" && !!w.previewUrl)), g = A(() => t.value.filter((w) => w.kind === "video" && !!w.previewUrl)), l = A(() => t.value.filter((w) => w.kind === "file"));
461
+ function k(w) {
462
+ e == null || e(w);
463
+ }
464
+ function x(w) {
465
+ w.previewUrl && URL.revokeObjectURL(w.previewUrl);
466
+ }
467
+ function _(w) {
468
+ if (w.length === 0) return;
469
+ const $ = w.filter(fa);
470
+ if (w.length - $.length > 0 && k("仅支持常见图片、浏览器可预览视频、文档、文本、CSV、JSON 和 ZIP 文件"), $.length === 0) return;
471
+ const h = se - t.value.length;
472
+ if (h <= 0) {
473
+ k(`最多只能添加 ${se} 个附件`);
474
+ return;
475
+ }
476
+ const I = $.slice(0, h);
477
+ $.length > h && k(`最多只能添加 ${se} 个附件,已跳过多余文件`), t.value.push(...I.map(va));
478
+ }
479
+ function S(w) {
480
+ const $ = t.value[w];
481
+ $ && (x($), t.value.splice(w, 1));
482
+ }
483
+ function L() {
484
+ t.value.forEach(x), t.value = [];
485
+ }
486
+ return tt(() => {
487
+ L();
488
+ }), {
489
+ items: t,
490
+ imageItems: o,
491
+ videoItems: g,
492
+ fileItems: l,
493
+ hasAttachments: i,
494
+ addFiles: _,
495
+ removeAt: S,
496
+ clear: L,
497
+ maxAttachments: se
498
+ };
499
+ }
500
+ function pa(e, t) {
501
+ const {
502
+ uploadFile: i
503
+ } = pt();
504
+ return new Promise((o, g) => {
505
+ i({
506
+ file: e,
507
+ bucketId: t,
508
+ onFileFinish(l, k, x) {
509
+ if (l) {
510
+ g(l);
511
+ return;
512
+ }
513
+ o(x.Key);
514
+ },
515
+ onError(l) {
516
+ g(l);
517
+ }
518
+ });
519
+ });
520
+ }
521
+ async function Me(e, t) {
522
+ const i = [];
523
+ for (const o of e) {
524
+ const g = await pa(o, t), l = vt(o);
525
+ i.push({
526
+ key: g,
527
+ name: o.name,
528
+ size: o.size,
529
+ mimeType: l,
530
+ kind: Be(o, l)
531
+ });
532
+ }
533
+ return i;
534
+ }
535
+ function ma(e, t = {}) {
536
+ const {
537
+ interval: i = 2e3,
538
+ immediate: o = !1,
539
+ autoStart: g = !1
540
+ } = t, l = m(!1);
541
+ let k = null;
542
+ async function x() {
543
+ try {
544
+ await e();
545
+ } catch (w) {
546
+ console.error("轮询回调执行失败:", w);
547
+ }
548
+ }
549
+ function _() {
550
+ if (l.value) {
551
+ console.warn("轮询已在运行中");
552
+ return;
553
+ }
554
+ l.value = !0, o && x(), k = setInterval(x, i);
555
+ }
556
+ function S() {
557
+ k && (clearInterval(k), k = null), l.value = !1;
558
+ }
559
+ function L() {
560
+ S(), _();
561
+ }
562
+ return g && _(), at(() => {
563
+ S();
564
+ }), {
565
+ isPolling: l,
566
+ start: _,
567
+ stop: S,
568
+ restart: L
569
+ };
570
+ }
571
+ const de = m(0);
572
+ let J = null, le = null, me = !1;
573
+ function ga() {
574
+ de.value = 0;
575
+ }
576
+ async function ba() {
577
+ const {
578
+ data: e,
579
+ error: t
580
+ } = await O.feedbackCenter.unreadReplyCount.post({});
581
+ return t ? null : typeof (e == null ? void 0 : e.count) == "number" ? e.count : 0;
582
+ }
583
+ async function H() {
584
+ return J || (J = (async () => {
585
+ await gt();
586
+ const e = await ba();
587
+ e !== null && (de.value = e);
588
+ })().finally(() => {
589
+ J = null;
590
+ }), J);
591
+ }
592
+ function ka() {
593
+ me || (me = !0, le = setInterval(() => {
594
+ H();
595
+ }, 6e4));
596
+ }
597
+ function ya() {
598
+ le && (clearInterval(le), le = null), me = !1;
599
+ }
600
+ function ws() {
601
+ const {
602
+ isLoggedIn: e
603
+ } = yt(), {
604
+ isOpen: t,
605
+ messagesTrigger: i,
606
+ feedbackTrigger: o
607
+ } = _t();
608
+ return fe(e, (g) => {
609
+ if (g) {
610
+ H(), ka();
611
+ return;
612
+ }
613
+ mt(), ga(), ya();
614
+ }, {
615
+ immediate: !0
616
+ }), fe(t, (g) => {
617
+ g && e.value && H();
618
+ }), fe([i, o], () => {
619
+ e.value && window.setTimeout(() => {
620
+ H();
621
+ }, 1500);
622
+ }), {
623
+ messageUnreadCount: Se,
624
+ feedbackUnreadCount: st(de),
625
+ hasMessageBadge: A(() => Se.value > 0),
626
+ hasFeedbackBadge: A(() => de.value > 0),
627
+ refreshUserMenuBadgeCounts: H
628
+ };
629
+ }
630
+ const ke = [{
631
+ key: "bugReports",
632
+ label: "问题报告"
633
+ }, {
634
+ key: "featureSuggestions",
635
+ label: "功能建议"
636
+ }, {
637
+ key: "technicalSupportRequests",
638
+ label: "技术支持请求"
639
+ }, {
640
+ key: "generalOpinions",
641
+ label: "一般意见"
642
+ }], Le = [{
643
+ key: "urgent",
644
+ label: "紧急"
645
+ }, {
646
+ key: "high",
647
+ label: "高"
648
+ }, {
649
+ key: "normal",
650
+ label: "普通"
651
+ }, {
652
+ key: "low",
653
+ label: "低"
654
+ }], Ve = [{
655
+ key: "newFeedback",
656
+ label: "新反馈"
657
+ }, {
658
+ key: "inProgress",
659
+ label: "处理中"
660
+ }, {
661
+ key: "pending",
662
+ label: "待处理"
663
+ }, {
664
+ key: "resolved",
665
+ label: "已解决"
666
+ }, {
667
+ key: "closed",
668
+ label: "已关闭"
669
+ }];
670
+ function _a(e) {
671
+ return e ? e.startsWith("http://") || e.startsWith("https://") || e.startsWith("data:") : !1;
672
+ }
673
+ function ne(e) {
674
+ const t = (e.attachments ?? []).filter((i) => _a(i.url));
675
+ return {
676
+ text: e.content ?? "",
677
+ attachments: t
678
+ };
679
+ }
680
+ const ha = {
681
+ class: "FeedBackDetails"
682
+ }, wa = {
683
+ class: "scrollable-content__inner"
684
+ }, Ca = {
685
+ class: "content"
686
+ }, Ua = {
687
+ class: "empty-title"
688
+ }, xa = {
689
+ class: "empty-tips"
690
+ }, Sa = {
691
+ key: 1,
692
+ class: "Bubbles"
693
+ }, $a = {
694
+ class: "sender-container"
695
+ }, Fa = {
696
+ key: 0,
697
+ class: "attachments-preview"
698
+ }, Ia = ["onClick"], Aa = ["src"], Pa = ["src"], Ra = {
699
+ class: "attachment-file-name"
700
+ }, Ba = ["onClick"], Ta = ["accept"], Ma = /* @__PURE__ */ q({
701
+ __name: "FeedbackDetails",
702
+ props: {
703
+ id: {
704
+ type: String,
705
+ required: !0,
706
+ default: () => ""
707
+ },
708
+ senderRole: {
709
+ type: String,
710
+ required: !0,
711
+ validator: (e) => ["user", "support"].includes(e)
712
+ }
713
+ },
714
+ setup(e) {
715
+ function t(r) {
716
+ return r === "inProgress" ? "orangered" : r === "pending" ? "gold" : r === "resolved" ? "green" : r === "closed" ? "gray" : "arcoblue";
717
+ }
718
+ const i = m(""), o = m(!1), g = m(null), l = m(null), k = m(null), x = m(!1), _ = m(!1), S = m(0), L = m(!1), w = m(""), $ = m(""), P = Te((r) => {
719
+ ue.warning(r);
720
+ }), h = A(() => P.imageItems.value.map((r) => r.previewUrl || "")), I = A(() => i.value.trim().length > 0 || P.hasAttachments.value), u = () => {
721
+ var r;
722
+ (r = g.value) == null || r.focus({
723
+ cursor: "end"
724
+ }), te(() => {
725
+ l.value && (l.value.scrollTop = l.value.scrollHeight);
726
+ });
727
+ }, U = e, T = A(() => U.senderRole === "support" ? "暂无沟通记录" : "还没有消息"), C = A(() => U.senderRole === "support" ? ["可在下方输入框回复用户", "支持发送文字、图片和文件附件"] : ["请尽量详细描述问题或需求", "可上传多张图片或文件附件,支持与文字一起发送"]), y = A(() => U.senderRole === "support" ? "输入回复内容,Enter 发送" : "补充问题描述或追问,Enter 发送"), p = m(!1), D = m([]), N = m(void 0);
728
+ function Ee(r, d) {
729
+ const n = "seq" in r && typeof r.seq == "number" ? r.seq : d;
730
+ return `${r.senderRole}-${n}-${d}`;
731
+ }
732
+ function ye(r) {
733
+ var d;
734
+ return String(((d = r.senderInfo) == null ? void 0 : d.avatarUrl) || "");
735
+ }
736
+ function _e(r) {
737
+ var n;
738
+ const d = String(((n = r.senderInfo) == null ? void 0 : n.nickname) || "").trim();
739
+ return d ? d.slice(0, 1).toUpperCase() : r.senderRole === "support" ? "S" : "U";
740
+ }
741
+ const K = m({
742
+ id: void 0,
743
+ title: "",
744
+ description: "",
745
+ type: "bugReports",
746
+ status: "newFeedback",
747
+ reply: "",
748
+ createAt: ""
749
+ });
750
+ function De() {
751
+ var r;
752
+ (r = k.value) == null || r.click();
753
+ }
754
+ function qe(r) {
755
+ const d = r.target, n = d.files;
756
+ n != null && n.length && P.addFiles(Array.from(n)), d.value = "";
757
+ }
758
+ function Oe(r) {
759
+ if (r.kind === "image" && r.previewUrl) {
760
+ const d = P.imageItems.value.findIndex((n) => n.id === r.id);
761
+ if (d < 0) return;
762
+ S.value = d, _.value = !0;
763
+ return;
764
+ }
765
+ r.kind === "video" && r.previewUrl && (w.value = r.previewUrl, $.value = r.file.name, L.value = !0);
766
+ }
767
+ function ze(r) {
768
+ var M;
769
+ const d = (M = r.clipboardData) == null ? void 0 : M.items;
770
+ if (!d) return;
771
+ const n = [];
772
+ for (const j of d)
773
+ if (j.type.startsWith("image/")) {
774
+ const X = j.getAsFile();
775
+ X && n.push(X);
776
+ }
777
+ n.length > 0 && (r.preventDefault(), P.addFiles(n));
778
+ }
779
+ function Ne(r) {
780
+ var d;
781
+ (d = r.dataTransfer) != null && d.types.includes("Files") && (x.value = !0);
782
+ }
783
+ function je() {
784
+ x.value = !1;
785
+ }
786
+ function Ke(r) {
787
+ var n;
788
+ x.value = !1;
789
+ const d = (n = r.dataTransfer) == null ? void 0 : n.files;
790
+ d && P.addFiles(Array.from(d));
791
+ }
792
+ async function We() {
793
+ U.senderRole === "support" && K.value.status === "newFeedback" && await he();
794
+ }
795
+ async function He() {
796
+ const r = i.value, d = P.items.value.map((n) => n.file);
797
+ if (!(!r.trim() && d.length === 0)) {
798
+ o.value = !0;
799
+ try {
800
+ const n = d.length > 0 ? await Me(d, Fe.feedbackBucketId) : [], M = r.trim(), {
801
+ data: j
802
+ } = await O.feedbackCenter.update.messages.post({
803
+ id: U.id,
804
+ message: {
805
+ type: "text",
806
+ content: M,
807
+ attachments: n,
808
+ senderRole: U.senderRole
809
+ }
810
+ });
811
+ if (j) {
812
+ D.value.push(j.message);
813
+ const X = j.message.seq;
814
+ typeof X == "number" && (N.value = X), i.value = "", P.clear(), te(() => {
815
+ u();
816
+ }), await We();
817
+ }
818
+ } catch {
819
+ ue.error("发送失败,请稍后重试");
820
+ } finally {
821
+ o.value = !1;
822
+ }
823
+ }
824
+ }
825
+ async function he() {
826
+ p.value = !0;
827
+ const {
828
+ data: r
829
+ } = await O.feedbackCenter.findOne.post({
830
+ id: U.id
831
+ });
832
+ p.value = !1, r && (K.value = r);
833
+ }
834
+ async function we() {
835
+ U.senderRole === "user" && (await O.feedbackCenter.markRead.post({
836
+ id: U.id
837
+ }), H());
838
+ }
839
+ async function Ge() {
840
+ var d;
841
+ const {
842
+ data: r
843
+ } = await O.messages.list.incremental.post({
844
+ id: U.id,
845
+ lastSeq: N.value
846
+ });
847
+ if (r && ((d = r.messages) != null && d.length)) {
848
+ const n = r.messages;
849
+ D.value.push(...n);
850
+ const M = n.at(-1);
851
+ M && "seq" in M && typeof M.seq == "number" && (N.value = M.seq), te(() => {
852
+ u();
853
+ }), await we();
854
+ }
855
+ }
856
+ async function Xe() {
857
+ var d;
858
+ p.value = !0;
859
+ const {
860
+ data: r
861
+ } = await O.messages.list.post({
862
+ id: U.id
863
+ });
864
+ if (p.value = !1, r && ((d = r.messages) != null && d.length)) {
865
+ const n = r.messages;
866
+ D.value = n;
867
+ const M = n.at(-1);
868
+ M && "seq" in M && typeof M.seq == "number" && (N.value = M.seq), te(() => {
869
+ u();
870
+ });
871
+ }
872
+ await we();
873
+ }
874
+ return ma(Ge, {
875
+ interval: 2e3,
876
+ autoStart: !0
877
+ }), he(), Xe(), (r, d) => (s(), c("div", ha, [b("div", {
878
+ ref_key: "scrollableContentRef",
879
+ ref: l,
880
+ class: "scrollable-content"
881
+ }, [b("div", wa, [f(a(nt), {
882
+ title: "基本信息"
883
+ }, {
884
+ title: v(() => [...d[4] || (d[4] = [b("div", {
885
+ class: "title"
886
+ }, "基本信息", -1)])]),
887
+ default: v(() => [f(a(ae), {
888
+ label: "标题:",
889
+ span: 3
890
+ }, {
891
+ default: v(() => [E(F(K.value.title), 1)]),
892
+ _: 1
893
+ }), f(a(ae), {
894
+ label: "问题描述:",
895
+ span: 3
896
+ }, {
897
+ default: v(() => [E(F(K.value.description || "-"), 1)]),
898
+ _: 1
899
+ }), f(a(ae), {
900
+ label: "反馈类型:",
901
+ span: 1
902
+ }, {
903
+ default: v(() => [f(a(Z), {
904
+ color: "arcoblue"
905
+ }, {
906
+ default: v(() => {
907
+ var n;
908
+ return [E(F((n = a(Q)(a(ke), K.value.type)) == null ? void 0 : n.label), 1)];
909
+ }),
910
+ _: 1
911
+ })]),
912
+ _: 1
913
+ }), f(a(ae), {
914
+ label: "状态:",
915
+ span: 1
916
+ }, {
917
+ default: v(() => [f(a(Z), {
918
+ color: t(K.value.status)
919
+ }, {
920
+ default: v(() => {
921
+ var n;
922
+ return [E(F((n = a(Q)(a(Ve), K.value.status)) == null ? void 0 : n.label), 1)];
923
+ }),
924
+ _: 1
925
+ }, 8, ["color"])]),
926
+ _: 1
927
+ })]),
928
+ _: 1
929
+ }), b("div", Ca, [d[5] || (d[5] = b("div", {
930
+ class: "title"
931
+ }, "沟通记录", -1)), f(a(lt), {
932
+ class: "messageContent",
933
+ loading: p.value
934
+ }, {
935
+ default: v(() => [D.value.length === 0 ? (s(), B(a(it), {
936
+ key: 0,
937
+ class: "message-empty"
938
+ }, {
939
+ description: v(() => [b("div", Ua, F(T.value), 1), b("ul", xa, [(s(!0), c(V, null, z(C.value, (n) => (s(), c("li", {
940
+ key: n
941
+ }, F(n), 1))), 128))])]),
942
+ _: 1
943
+ })) : (s(), c("div", Sa, [(s(!0), c(V, null, z(D.value, (n, M) => (s(), c(V, {
944
+ key: Ee(n, M)
945
+ }, [n.senderRole !== U.senderRole ? (s(), B(na, {
946
+ key: 0,
947
+ text: a(ne)(n).text,
948
+ attachments: a(ne)(n).attachments,
949
+ "avatar-url": ye(n),
950
+ "avatar-text": _e(n)
951
+ }, null, 8, ["text", "attachments", "avatar-url", "avatar-text"])) : (s(), B(Xt, {
952
+ key: 1,
953
+ text: a(ne)(n).text,
954
+ attachments: a(ne)(n).attachments,
955
+ "avatar-url": ye(n),
956
+ "avatar-text": _e(n)
957
+ }, null, 8, ["text", "attachments", "avatar-url", "avatar-text"]))], 64))), 128))]))]),
958
+ _: 1
959
+ }, 8, ["loading"])])])], 512), b("div", $a, [b("div", {
960
+ class: ie(["sender-panel", {
961
+ "is-drag-over": x.value
962
+ }]),
963
+ onDragover: G(Ne, ["prevent"]),
964
+ onDragleave: je,
965
+ onDrop: G(Ke, ["prevent"]),
966
+ onPaste: ze
967
+ }, [a(P).hasAttachments.value ? (s(), c("div", Fa, [(s(!0), c(V, null, z(a(P).items.value, (n, M) => (s(), c("div", {
968
+ key: n.id,
969
+ class: ie(["attachment-preview-item", {
970
+ "is-image": n.kind === "image",
971
+ "is-video": n.kind === "video"
972
+ }]),
973
+ onClick: (j) => Oe(n)
974
+ }, [n.kind === "image" && n.previewUrl ? (s(), c("img", {
975
+ key: 0,
976
+ src: n.previewUrl,
977
+ alt: "预览",
978
+ class: "attachment-thumbnail"
979
+ }, null, 8, Aa)) : n.kind === "video" && n.previewUrl ? (s(), c(V, {
980
+ key: 1
981
+ }, [b("video", {
982
+ class: "attachment-thumbnail",
983
+ src: n.previewUrl,
984
+ muted: "",
985
+ preload: "metadata"
986
+ }, null, 8, Pa), d[6] || (d[6] = b("span", {
987
+ class: "attachment-video-play"
988
+ }, "播放", -1))], 64)) : (s(), c(V, {
989
+ key: 2
990
+ }, [d[7] || (d[7] = b("span", {
991
+ class: "attachment-file-icon"
992
+ }, "FILE", -1)), b("span", Ra, F(n.file.name), 1)], 64)), b("button", {
993
+ type: "button",
994
+ class: "attachment-remove-btn",
995
+ title: "移除附件",
996
+ onClick: G((j) => a(P).removeAt(M), ["stop"])
997
+ }, " × ", 8, Ba)], 10, Ia))), 128))])) : R("", !0), f(a(ge), {
998
+ "src-list": h.value,
999
+ visible: _.value,
1000
+ "onUpdate:visible": d[0] || (d[0] = (n) => _.value = n),
1001
+ current: S.value,
1002
+ "onUpdate:current": d[1] || (d[1] = (n) => S.value = n)
1003
+ }, null, 8, ["src-list", "visible", "current"]), f(be, {
1004
+ visible: L.value,
1005
+ "onUpdate:visible": d[2] || (d[2] = (n) => L.value = n),
1006
+ title: $.value,
1007
+ src: w.value
1008
+ }, null, 8, ["visible", "title", "src"]), f(a(kt), {
1009
+ ref_key: "senderRef",
1010
+ ref: g,
1011
+ value: i.value,
1012
+ "onUpdate:value": d[3] || (d[3] = (n) => i.value = n),
1013
+ placeholder: y.value,
1014
+ loading: o.value,
1015
+ "allow-speech": !1,
1016
+ "read-only": o.value,
1017
+ "send-disabled": !I.value,
1018
+ onSubmit: He
1019
+ }, {
1020
+ prefix: v(() => [f(a(pe), {
1021
+ type: "text",
1022
+ class: "IconLink",
1023
+ disabled: o.value,
1024
+ onClick: De
1025
+ }, {
1026
+ icon: v(() => [f(a(oa))]),
1027
+ _: 1
1028
+ }, 8, ["disabled"])]),
1029
+ _: 1
1030
+ }, 8, ["value", "placeholder", "loading", "read-only", "send-disabled"]), b("input", {
1031
+ ref_key: "fileInputRef",
1032
+ ref: k,
1033
+ type: "file",
1034
+ accept: a(Re),
1035
+ multiple: "",
1036
+ class: "hidden-file-input",
1037
+ onChange: qe
1038
+ }, null, 40, Ta)], 34)])]));
1039
+ }
1040
+ }), La = /* @__PURE__ */ W(Ma, [["__scopeId", "data-v-f37bf266"]]), Va = {
1041
+ class: "FeedBackFrom"
1042
+ }, Ea = {
1043
+ class: "feedback-attachments-field"
1044
+ }, Da = {
1045
+ key: 0,
1046
+ class: "attachments-preview"
1047
+ }, qa = ["onClick"], Oa = ["src"], za = ["src"], Na = {
1048
+ class: "attachment-file-name"
1049
+ }, ja = ["onClick"], Ka = ["accept"], Wa = /* @__PURE__ */ q({
1050
+ __name: "FeedbackForm",
1051
+ emits: ["confirm"],
1052
+ setup(e, {
1053
+ emit: t
1054
+ }) {
1055
+ const i = t, o = m(), g = m(!1), l = m({
1056
+ id: void 0,
1057
+ title: "",
1058
+ type: "bugReports",
1059
+ priority: "normal",
1060
+ description: ""
1061
+ }), k = m(null), x = m(!1), _ = m(0), S = m(!1), L = m(""), w = m(""), $ = Te((C) => {
1062
+ ue.warning(C);
1063
+ }), P = A(() => $.imageItems.value.map((C) => C.previewUrl || ""));
1064
+ function h() {
1065
+ var C;
1066
+ (C = k.value) == null || C.click();
1067
+ }
1068
+ function I(C) {
1069
+ const y = C.target, p = y.files;
1070
+ p != null && p.length && $.addFiles(Array.from(p)), y.value = "";
1071
+ }
1072
+ function u(C) {
1073
+ if (C.kind === "image" && C.previewUrl) {
1074
+ const y = $.imageItems.value.findIndex((p) => p.id === C.id);
1075
+ if (y < 0) return;
1076
+ _.value = y, x.value = !0;
1077
+ return;
1078
+ }
1079
+ C.kind === "video" && C.previewUrl && (L.value = C.previewUrl, w.value = C.file.name, S.value = !0);
1080
+ }
1081
+ function U() {
1082
+ var C, y;
1083
+ l.value = {
1084
+ id: void 0,
1085
+ title: "",
1086
+ type: "bugReports",
1087
+ priority: "normal",
1088
+ description: ""
1089
+ }, $.clear(), (y = (C = o.value) == null ? void 0 : C.resetFields) == null || y.call(C);
1090
+ }
1091
+ async function T() {
1092
+ if (!await o.value.validate()) {
1093
+ g.value = !0;
1094
+ try {
1095
+ const y = $.items.value.map((N) => N.file), p = y.length > 0 ? await Me(y, Fe.feedbackBucketId) : [], {
1096
+ error: D
1097
+ } = await O.feedbackCenter.create.post({
1098
+ title: l.value.title,
1099
+ type: l.value.type,
1100
+ priority: l.value.priority,
1101
+ description: l.value.description,
1102
+ attachments: p
1103
+ });
1104
+ D || (ue.success("新建反馈成功"), U(), i("confirm"));
1105
+ } finally {
1106
+ g.value = !1;
1107
+ }
1108
+ }
1109
+ }
1110
+ return (C, y) => (s(), c("div", Va, [f(a(rt), {
1111
+ ref_key: "formRef",
1112
+ ref: o,
1113
+ model: l.value,
1114
+ "auto-label-width": "",
1115
+ layout: "vertical"
1116
+ }, {
1117
+ default: v(() => [f(a(Y), {
1118
+ field: "title",
1119
+ label: "标题",
1120
+ rules: [{
1121
+ required: !0,
1122
+ message: "请输入标题"
1123
+ }]
1124
+ }, {
1125
+ default: v(() => [f(a(ot), {
1126
+ modelValue: l.value.title,
1127
+ "onUpdate:modelValue": y[0] || (y[0] = (p) => l.value.title = p),
1128
+ placeholder: "请输入标题"
1129
+ }, null, 8, ["modelValue"])]),
1130
+ _: 1
1131
+ }), f(a(Y), {
1132
+ field: "type",
1133
+ label: "反馈类型",
1134
+ rules: [{
1135
+ required: !0,
1136
+ message: "请选择反馈类型"
1137
+ }]
1138
+ }, {
1139
+ default: v(() => [f(a(Ce), {
1140
+ modelValue: l.value.type,
1141
+ "onUpdate:modelValue": y[1] || (y[1] = (p) => l.value.type = p),
1142
+ placeholder: "请选择反馈类型"
1143
+ }, {
1144
+ default: v(() => [(s(!0), c(V, null, z(a(ke), (p, D) => (s(), B(a(Ue), {
1145
+ key: D,
1146
+ value: p.key
1147
+ }, {
1148
+ default: v(() => [E(F(p.label), 1)]),
1149
+ _: 2
1150
+ }, 1032, ["value"]))), 128))]),
1151
+ _: 1
1152
+ }, 8, ["modelValue"])]),
1153
+ _: 1
1154
+ }), f(a(Y), {
1155
+ field: "priority",
1156
+ label: "优先级",
1157
+ rules: [{
1158
+ required: !0,
1159
+ message: "请选择优先级"
1160
+ }]
1161
+ }, {
1162
+ default: v(() => [f(a(Ce), {
1163
+ modelValue: l.value.priority,
1164
+ "onUpdate:modelValue": y[2] || (y[2] = (p) => l.value.priority = p),
1165
+ placeholder: "请选择优先级"
1166
+ }, {
1167
+ default: v(() => [(s(!0), c(V, null, z(a(Le), (p, D) => (s(), B(a(Ue), {
1168
+ key: D,
1169
+ value: p.key
1170
+ }, {
1171
+ default: v(() => [E(F(p.label), 1)]),
1172
+ _: 2
1173
+ }, 1032, ["value"]))), 128))]),
1174
+ _: 1
1175
+ }, 8, ["modelValue"])]),
1176
+ _: 1
1177
+ }), f(a(Y), {
1178
+ field: "description",
1179
+ label: "问题描述",
1180
+ rules: [{
1181
+ required: !0,
1182
+ message: "请输入问题描述"
1183
+ }]
1184
+ }, {
1185
+ default: v(() => [f(a(ut), {
1186
+ modelValue: l.value.description,
1187
+ "onUpdate:modelValue": y[3] || (y[3] = (p) => l.value.description = p),
1188
+ placeholder: "请输入问题描述",
1189
+ "allow-clear": "",
1190
+ "auto-size": {
1191
+ minRows: 5
1192
+ }
1193
+ }, null, 8, ["modelValue"])]),
1194
+ _: 1
1195
+ }), f(a(Y), {
1196
+ field: "attachments",
1197
+ label: "附件"
1198
+ }, {
1199
+ default: v(() => [b("div", Ea, [f(a(pe), {
1200
+ type: "outline",
1201
+ disabled: g.value,
1202
+ onClick: h
1203
+ }, {
1204
+ default: v(() => [...y[7] || (y[7] = [E(" 添加图片、视频或文件 ", -1)])]),
1205
+ _: 1
1206
+ }, 8, ["disabled"]), a($).hasAttachments.value ? (s(), c("div", Da, [(s(!0), c(V, null, z(a($).items.value, (p, D) => (s(), c("div", {
1207
+ key: p.id,
1208
+ class: ie(["attachment-preview-item", {
1209
+ "is-image": p.kind === "image",
1210
+ "is-video": p.kind === "video"
1211
+ }]),
1212
+ onClick: (N) => u(p)
1213
+ }, [p.kind === "image" && p.previewUrl ? (s(), c("img", {
1214
+ key: 0,
1215
+ src: p.previewUrl,
1216
+ alt: "预览",
1217
+ class: "attachment-thumbnail"
1218
+ }, null, 8, Oa)) : p.kind === "video" && p.previewUrl ? (s(), c(V, {
1219
+ key: 1
1220
+ }, [b("video", {
1221
+ class: "attachment-thumbnail",
1222
+ src: p.previewUrl,
1223
+ muted: "",
1224
+ preload: "metadata"
1225
+ }, null, 8, za), y[8] || (y[8] = b("span", {
1226
+ class: "attachment-video-play"
1227
+ }, "播放", -1))], 64)) : (s(), c(V, {
1228
+ key: 2
1229
+ }, [y[9] || (y[9] = b("span", {
1230
+ class: "attachment-file-icon"
1231
+ }, "FILE", -1)), b("span", Na, F(p.file.name), 1)], 64)), b("button", {
1232
+ type: "button",
1233
+ class: "attachment-remove-btn",
1234
+ title: "移除附件",
1235
+ onClick: G((N) => a($).removeAt(D), ["stop"])
1236
+ }, " × ", 8, ja)], 10, qa))), 128))])) : R("", !0), f(a(ge), {
1237
+ "src-list": P.value,
1238
+ visible: x.value,
1239
+ "onUpdate:visible": y[4] || (y[4] = (p) => x.value = p),
1240
+ current: _.value,
1241
+ "onUpdate:current": y[5] || (y[5] = (p) => _.value = p)
1242
+ }, null, 8, ["src-list", "visible", "current"]), f(be, {
1243
+ visible: S.value,
1244
+ "onUpdate:visible": y[6] || (y[6] = (p) => S.value = p),
1245
+ title: w.value,
1246
+ src: L.value
1247
+ }, null, 8, ["visible", "title", "src"]), b("input", {
1248
+ ref_key: "fileInputRef",
1249
+ ref: k,
1250
+ type: "file",
1251
+ accept: a(Re),
1252
+ multiple: "",
1253
+ class: "hidden-file-input",
1254
+ onChange: I
1255
+ }, null, 40, Ka)])]),
1256
+ _: 1
1257
+ }), f(a(pe), {
1258
+ loading: g.value,
1259
+ type: "primary",
1260
+ onClick: T
1261
+ }, {
1262
+ default: v(() => [...y[10] || (y[10] = [E(" 提交 ", -1)])]),
1263
+ _: 1
1264
+ }, 8, ["loading"])]),
1265
+ _: 1
1266
+ }, 8, ["model"])]));
1267
+ }
1268
+ }), Ha = /* @__PURE__ */ W(Wa, [["__scopeId", "data-v-a63b0678"]]), Ga = {
1269
+ class: "message-panel"
1270
+ }, Xa = {
1271
+ key: 2,
1272
+ class: "message-panel__detail"
1273
+ }, Ya = /* @__PURE__ */ q({
1274
+ __name: "FeedbackList",
1275
+ emits: ["toDetail"],
1276
+ setup(e, {
1277
+ expose: t,
1278
+ emit: i
1279
+ }) {
1280
+ const o = m(!0), g = m([]), l = m(!1), k = m(!1), x = m(""), _ = m({
1281
+ total: 0,
1282
+ current: 1,
1283
+ pageSize: 10
1284
+ });
1285
+ function S() {
1286
+ o.value = !0, _.value.current = 1, h();
1287
+ }
1288
+ function L(u) {
1289
+ x.value = u.id, o.value = !1;
1290
+ }
1291
+ function w(u) {
1292
+ return u === "inProgress" ? "orangered" : u === "pending" ? "gold" : u === "resolved" ? "green" : u === "closed" ? "gray" : "arcoblue";
1293
+ }
1294
+ function $(u) {
1295
+ return u === "urgent" ? "red" : u === "high" ? "orangered" : u === "low" ? "gray" : "blue";
1296
+ }
1297
+ function P(u) {
1298
+ return u.map((U) => ({
1299
+ ...U,
1300
+ read: U.read ?? !0
1301
+ }));
1302
+ }
1303
+ async function h() {
1304
+ l.value = !0;
1305
+ const {
1306
+ data: u
1307
+ } = await O.feedbackCenter.own.post({
1308
+ current: _.value.current,
1309
+ pageSize: _.value.pageSize
1310
+ });
1311
+ if (l.value = !1, u) {
1312
+ const U = u, T = P(U.items || []);
1313
+ g.value = T, _.value.total = U.count || 0, k.value = T.length < _.value.pageSize;
1314
+ }
1315
+ }
1316
+ async function I() {
1317
+ if (l.value || k.value) return;
1318
+ _.value.current += 1, l.value = !0;
1319
+ const {
1320
+ data: u
1321
+ } = await O.feedbackCenter.own.post({
1322
+ current: _.value.current,
1323
+ pageSize: _.value.pageSize
1324
+ });
1325
+ if (l.value = !1, u) {
1326
+ const T = P(u.items || []);
1327
+ g.value = [...g.value, ...T], k.value = T.length < _.value.pageSize;
1328
+ }
1329
+ }
1330
+ return h(), t({
1331
+ refresh: h
1332
+ }), (u, U) => (s(), c("div", Ga, [o.value ? R("", !0) : (s(), B(a(ct), {
1333
+ key: 0,
1334
+ class: "message-panel__breadcrumb"
1335
+ }, {
1336
+ default: v(() => [f(a(xe), {
1337
+ onClick: S
1338
+ }, {
1339
+ default: v(() => [...U[0] || (U[0] = [E("我的反馈", -1)])]),
1340
+ _: 1
1341
+ }), f(a(xe), null, {
1342
+ default: v(() => [...U[1] || (U[1] = [E("反馈详情", -1)])]),
1343
+ _: 1
1344
+ })]),
1345
+ _: 1
1346
+ })), o.value ? (s(), B(bt, {
1347
+ key: 1,
1348
+ "message-list": g.value,
1349
+ loading: l.value,
1350
+ finished: k.value,
1351
+ "show-read-status": !0,
1352
+ "show-view-button": !1,
1353
+ "empty-description": "暂无反馈",
1354
+ onItemClick: L,
1355
+ onLoadMore: I
1356
+ }, {
1357
+ tags: v(({
1358
+ item: T
1359
+ }) => [f(a(Z), {
1360
+ color: "arcoblue",
1361
+ size: "small"
1362
+ }, {
1363
+ default: v(() => {
1364
+ var C;
1365
+ return [E(F((C = a(Q)(a(ke), T.type)) == null ? void 0 : C.label), 1)];
1366
+ }),
1367
+ _: 2
1368
+ }, 1024), f(a(Z), {
1369
+ color: $(T.priority),
1370
+ size: "small"
1371
+ }, {
1372
+ default: v(() => {
1373
+ var C;
1374
+ return [E(F(((C = a(Q)(a(Le), T.priority)) == null ? void 0 : C.label) || "普通"), 1)];
1375
+ }),
1376
+ _: 2
1377
+ }, 1032, ["color"]), f(a(Z), {
1378
+ color: w(T.status),
1379
+ size: "small"
1380
+ }, {
1381
+ default: v(() => {
1382
+ var C;
1383
+ return [E(F((C = a(Q)(a(Ve), T.status)) == null ? void 0 : C.label), 1)];
1384
+ }),
1385
+ _: 2
1386
+ }, 1032, ["color"])]),
1387
+ description: v(({
1388
+ item: T
1389
+ }) => [E(F(T.description || "暂无描述"), 1)]),
1390
+ _: 1
1391
+ }, 8, ["message-list", "loading", "finished"])) : (s(), c("div", Xa, [f(La, {
1392
+ id: x.value,
1393
+ "sender-role": "user",
1394
+ class: "feedback-details-panel"
1395
+ }, null, 8, ["id"])]))]));
1396
+ }
1397
+ }), Ja = {
1398
+ key: 0,
1399
+ class: "user-menu-modal-content"
1400
+ }, Za = {
1401
+ class: "left"
1402
+ }, Qa = {
1403
+ key: 1,
1404
+ class: "user-menu-modal-form"
1405
+ }, Cs = /* @__PURE__ */ q({
1406
+ __name: "FeedbackModal",
1407
+ emits: ["confirm", "cancel"],
1408
+ setup(e, {
1409
+ expose: t,
1410
+ emit: i
1411
+ }) {
1412
+ const o = m(!1), g = m(Symbol("feedback-list")), l = m(Symbol("feedback-form")), k = i;
1413
+ function x() {
1414
+ S.value = ["FeedbackList"], g.value = Symbol("feedback-list"), l.value = Symbol("feedback-form");
1415
+ }
1416
+ function _() {
1417
+ x(), k("cancel");
1418
+ }
1419
+ const S = m(["FeedbackList"]), L = m([{
1420
+ name: "我的反馈",
1421
+ path: "FeedbackList",
1422
+ meta: {
1423
+ icon: "mingcute:cube-3d-fill"
1424
+ }
1425
+ }, {
1426
+ name: "新建反馈",
1427
+ path: "CreateFeedback",
1428
+ meta: {
1429
+ icon: "mingcute:cube-3d-fill"
1430
+ }
1431
+ }]), w = A(() => S.value.length !== 0 ? S.value[0] : "");
1432
+ function $() {
1433
+ S.value = ["FeedbackList"], g.value = Symbol("feedback-list");
1434
+ }
1435
+ function P(I) {
1436
+ S.value = [I.path];
1437
+ }
1438
+ function h(I) {
1439
+ o.value = I, I && x();
1440
+ }
1441
+ return t({
1442
+ setData: h
1443
+ }), (I, u) => (s(), B(a(dt), {
1444
+ visible: o.value,
1445
+ "onUpdate:visible": u[1] || (u[1] = (U) => o.value = U),
1446
+ loading: !1,
1447
+ "body-class": "AppMessagebodyClass",
1448
+ "mask-closable": !1,
1449
+ footer: !1,
1450
+ width: a(Ye),
1451
+ title: "系统反馈",
1452
+ "hide-title": !1,
1453
+ onCancel: _
1454
+ }, {
1455
+ default: v(() => [o.value ? (s(), c("div", Ja, [b("div", Za, [f(ft, {
1456
+ "selected-keys": S.value,
1457
+ "onUpdate:selectedKeys": u[0] || (u[0] = (U) => S.value = U),
1458
+ menus: L.value,
1459
+ onChange: P
1460
+ }, null, 8, ["selected-keys", "menus"])]), w.value === "FeedbackList" ? (s(), B(Ya, {
1461
+ key: g.value
1462
+ })) : R("", !0), w.value === "CreateFeedback" ? (s(), c("div", Qa, [(s(), B(Ha, {
1463
+ key: l.value,
1464
+ onConfirm: $
1465
+ }))])) : R("", !0)])) : R("", !0)]),
1466
+ _: 1
1467
+ }, 8, ["visible", "width"]));
1468
+ }
1469
+ });
1470
+ export {
1471
+ Xt as B,
1472
+ La as F,
1473
+ $e as R,
1474
+ be as V,
1475
+ Ya as _,
1476
+ na as a,
1477
+ Ha as b,
1478
+ Cs as c,
1479
+ ws as u
1480
+ };