xto-fronted 0.4.85 → 0.4.86

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 (303) hide show
  1. package/dist/assets/404-BNfk6aVM.js +1 -0
  2. package/dist/assets/404-ByYjFnhI.js +1 -0
  3. package/dist/assets/404-CH5_LdtS.css +1 -0
  4. package/dist/assets/404-sqW80Hc-.css +1 -0
  5. package/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
  6. package/dist/assets/index-BBhC8PX4.js +1 -0
  7. package/dist/assets/index-BOEFG4lP.css +1 -0
  8. package/dist/assets/index-BRR97dc6.js +1 -0
  9. package/dist/assets/index-BSa4SMHI.js +1 -0
  10. package/dist/assets/index-BihVoviB.js +1 -0
  11. package/dist/assets/index-Bmux4tGG.js +1 -0
  12. package/dist/assets/index-BrvR0Fn_.css +1 -0
  13. package/dist/assets/index-C4ZCZoPp.js +1 -0
  14. package/dist/assets/index-CMgRqiaT.js +1 -0
  15. package/dist/assets/index-CUh_s55Z.css +1 -0
  16. package/dist/assets/index-CV768Wu1.js +1 -0
  17. package/dist/assets/index-D0OnMilp.js +1 -0
  18. package/dist/assets/index-D9wlAuR_.js +1 -0
  19. package/dist/assets/index-DPkO-STg.js +1 -0
  20. package/dist/assets/index-DawJb02s.css +1 -0
  21. package/dist/assets/index-DcFOybjo.js +1 -0
  22. package/dist/assets/index-DiHSZ6SJ.js +2 -0
  23. package/dist/assets/index-GDP-IkXE.css +1 -0
  24. package/dist/assets/index-Gx75raue.js +2 -0
  25. package/dist/assets/index-JsZ6rkQj.js +1 -0
  26. package/dist/assets/index-PfV8pzQz.css +1 -0
  27. package/dist/assets/index-Swfu6yvD.css +1 -0
  28. package/dist/assets/index-eQ-JQMk3.css +1 -0
  29. package/dist/assets/vendor-42ANG6Sg.js +6 -0
  30. package/dist/assets/vite-Dw-pgLOX.js +1 -0
  31. package/dist/assets/vue-vendor-05sbU7Th.js +29 -0
  32. package/dist/assets/vue-vendor-Br-l7wbK.js +29 -0
  33. package/dist/assets/xto-base-BSTP-Yn2.js +1 -0
  34. package/dist/assets/xto-base-C-IBqjVs.js +1 -0
  35. package/dist/assets/xto-base-C6eqMPdO.css +1 -0
  36. package/dist/assets/xto-base-CL2NKZJJ.css +1 -0
  37. package/dist/assets/xto-business--V1F5Gwb.css +1 -0
  38. package/dist/assets/xto-core-DZK7Cyg0.js +1 -0
  39. package/dist/assets/xto-core-cL8BAdce.js +1 -0
  40. package/dist/assets/xto-data-BFpiDgJi.js +1 -0
  41. package/dist/assets/xto-data-CnAQAQH2.css +1 -0
  42. package/dist/assets/xto-data-Cw0dv5K5.js +1 -0
  43. package/dist/assets/xto-data-MxZsiJgi.css +1 -0
  44. package/dist/assets/xto-feedback-B2M02fn3.js +1 -0
  45. package/dist/assets/xto-feedback-Bxx38c3P.css +1 -0
  46. package/dist/assets/xto-feedback-ByaS-C7_.css +1 -0
  47. package/dist/assets/xto-feedback-CTk0sMCW.js +1 -0
  48. package/dist/assets/xto-form-C5i2lk3C.js +1 -0
  49. package/dist/assets/xto-form-CrsyAjyr.css +1 -0
  50. package/dist/assets/xto-form-Cu6q3VLG.css +1 -0
  51. package/dist/assets/xto-form-NRjKKNcY.js +1 -0
  52. package/dist/assets/xto-layout-BDD6sSlM.css +1 -0
  53. package/dist/assets/xto-layout-D1stVnJI.css +1 -0
  54. package/dist/assets/xto-navigation-BuRQVoD8.css +1 -0
  55. package/dist/assets/xto-navigation-DHsTg0WG.js +1 -0
  56. package/dist/assets/xto-navigation-XfpyMpEo.css +1 -0
  57. package/dist/assets/xto-navigation-qLRTxo68.js +1 -0
  58. package/dist/index-0h_oG71z.js +345 -0
  59. package/dist/index-1EEezXR3.js +142 -0
  60. package/dist/index-1EkaJDoD.js +142 -0
  61. package/dist/index-1VN-SSaj.js +2873 -0
  62. package/dist/index-23nX2t9j.js +142 -0
  63. package/dist/index-2RwL0s53.js +142 -0
  64. package/dist/index-2tvOdd6w.js +372 -0
  65. package/dist/index-3zeoNaqT.js +345 -0
  66. package/dist/index-8oCLh51t.js +475 -0
  67. package/dist/index-AF5JN8Up.js +142 -0
  68. package/dist/index-B02xiP9g.js +372 -0
  69. package/dist/index-B05xso4D.js +345 -0
  70. package/dist/index-B1VS4tRU.js +475 -0
  71. package/dist/index-B3_VQZ-d.js +372 -0
  72. package/dist/index-B3kL6i_g.js +345 -0
  73. package/dist/index-B4Wny0vt.js +345 -0
  74. package/dist/index-B5RdBQ-f.js +475 -0
  75. package/dist/index-B5rbuoWS.js +2835 -0
  76. package/dist/index-BAFpPlnI.js +475 -0
  77. package/dist/index-BAJakzRz.js +142 -0
  78. package/dist/index-BAOHlfVd.js +142 -0
  79. package/dist/index-BAzJWzWG.js +2852 -0
  80. package/dist/index-BEIxh_R3.js +2982 -0
  81. package/dist/index-BEWrRNps.js +475 -0
  82. package/dist/index-BFtKVmzo.js +142 -0
  83. package/dist/index-BHPrW1wN.js +142 -0
  84. package/dist/index-BHQIqN1E.js +372 -0
  85. package/dist/index-BHZ_y8lp.js +2067 -0
  86. package/dist/index-BHvnTk5Z.js +475 -0
  87. package/dist/index-BIf7CYCW.js +475 -0
  88. package/dist/index-BK1Y1z9_.js +142 -0
  89. package/dist/index-BK8qDl14.js +372 -0
  90. package/dist/index-BKnta6nv.js +372 -0
  91. package/dist/index-BLIem13z.js +345 -0
  92. package/dist/index-BNBv_FCu.js +142 -0
  93. package/dist/index-BNwtCm83.js +345 -0
  94. package/dist/index-BOEMA7WH.js +345 -0
  95. package/dist/index-BOwDukt-.js +2346 -0
  96. package/dist/index-BR9WVjrV.js +2851 -0
  97. package/dist/index-BRMkw154.js +475 -0
  98. package/dist/index-BRQBannD.js +345 -0
  99. package/dist/index-BShKtLTm.js +475 -0
  100. package/dist/index-BVpqTdd2.js +3132 -0
  101. package/dist/index-BWGQANAN.js +2851 -0
  102. package/dist/index-BZKw7U60.js +475 -0
  103. package/dist/index-BadGWG4q.js +475 -0
  104. package/dist/index-BbeWpCd3.js +345 -0
  105. package/dist/index-BeUYNx5P.js +475 -0
  106. package/dist/index-BgiGtxRr.js +142 -0
  107. package/dist/index-BhKJLk9M.js +2824 -0
  108. package/dist/index-BijsKQ3r.js +475 -0
  109. package/dist/index-BjEfspqP.js +475 -0
  110. package/dist/index-BjEnT8WQ.js +372 -0
  111. package/dist/index-BpOcz1m4.js +142 -0
  112. package/dist/index-BrRdLbLB.js +142 -0
  113. package/dist/index-BsHOXfCq.js +372 -0
  114. package/dist/index-Bt5ocakb.js +475 -0
  115. package/dist/index-BtE24Mt4.js +142 -0
  116. package/dist/index-BvcBQjw6.js +2836 -0
  117. package/dist/index-C0krZRWf.js +2859 -0
  118. package/dist/index-C1cKUqmA.js +372 -0
  119. package/dist/index-C3ANmIDM.js +475 -0
  120. package/dist/index-C5JrEkwD.js +345 -0
  121. package/dist/index-C5m4qNMQ.js +2851 -0
  122. package/dist/index-C69vu_ot.js +3147 -0
  123. package/dist/index-C6Um6eFy.js +475 -0
  124. package/dist/index-C75ePQYC.js +372 -0
  125. package/dist/index-C7wKLGhC.js +142 -0
  126. package/dist/index-C8DBDnxx.js +2836 -0
  127. package/dist/index-CAnqlIjX.js +475 -0
  128. package/dist/index-CB36fztK.js +345 -0
  129. package/dist/index-CBKo6Enz.js +345 -0
  130. package/dist/index-CBcuyFIa.js +2326 -0
  131. package/dist/index-CCxIu4ex.js +372 -0
  132. package/dist/index-CD1ZEMzL.js +2836 -0
  133. package/dist/index-CDx-6tvY.js +345 -0
  134. package/dist/index-CGrvOpdb.js +372 -0
  135. package/dist/index-CHJWNf3f.js +475 -0
  136. package/dist/index-CIb06BxE.js +372 -0
  137. package/dist/index-CLiJcB9v.js +142 -0
  138. package/dist/index-CNS6Ohfw.js +2853 -0
  139. package/dist/index-COkjB5Jm.js +142 -0
  140. package/dist/index-CS5h1O5W.js +345 -0
  141. package/dist/index-CT0deRSL.js +372 -0
  142. package/dist/index-CTQQBaf4.js +345 -0
  143. package/dist/index-CUAC0ZFB.js +475 -0
  144. package/dist/index-CVMV9Tfg.js +142 -0
  145. package/dist/index-CWOx59Vc.js +142 -0
  146. package/dist/index-CWdSR99B.js +372 -0
  147. package/dist/index-CWvOcS8Y.js +345 -0
  148. package/dist/index-C_8yJlf1.js +475 -0
  149. package/dist/index-C_MzXmh2.js +2830 -0
  150. package/dist/index-Cb7HXiBR.js +372 -0
  151. package/dist/index-CbA8oUvZ.js +142 -0
  152. package/dist/index-CbEIzXG9.js +475 -0
  153. package/dist/index-Cb_m0zz1.js +475 -0
  154. package/dist/index-Cc6HgGzc.js +142 -0
  155. package/dist/index-CcWdW9Mj.js +372 -0
  156. package/dist/index-CdAqkP8L.js +345 -0
  157. package/dist/index-CeVUHSt9.js +2847 -0
  158. package/dist/index-CejRpy0a.js +475 -0
  159. package/dist/index-Cg5wO_jJ.js +372 -0
  160. package/dist/index-CgZM1vHq.js +372 -0
  161. package/dist/index-CgofFg1D.js +372 -0
  162. package/dist/index-ChheXGDK.js +372 -0
  163. package/dist/index-ChuFHoI0.js +372 -0
  164. package/dist/index-CiOJZ6_b.js +372 -0
  165. package/dist/index-ClCWmz_7.js +2844 -0
  166. package/dist/index-CmajGrKA.js +142 -0
  167. package/dist/index-Cn_4o3fi.js +345 -0
  168. package/dist/index-CoJBI1vE.js +345 -0
  169. package/dist/index-CqLLaQ-P.js +372 -0
  170. package/dist/index-CsRhLwmR.js +475 -0
  171. package/dist/index-CttJvDTG.js +475 -0
  172. package/dist/index-Cu3m9UeX.js +345 -0
  173. package/dist/index-CyQbOMHa.js +2859 -0
  174. package/dist/index-D-NcbLKL.js +345 -0
  175. package/dist/index-D0gstkiI.js +2836 -0
  176. package/dist/index-D0krzDtx.js +475 -0
  177. package/dist/index-D1moFd4V.js +372 -0
  178. package/dist/index-D2Hs4bZj.js +345 -0
  179. package/dist/index-D4QhrTZs.js +475 -0
  180. package/dist/index-D6CC02F-.js +372 -0
  181. package/dist/index-D6s7Za5s.js +142 -0
  182. package/dist/index-D7i5bck2.js +3132 -0
  183. package/dist/index-D8YBeNfn.js +345 -0
  184. package/dist/index-D93bv6lU.js +372 -0
  185. package/dist/index-DAX_bFj5.js +142 -0
  186. package/dist/index-DBii9cjr.js +475 -0
  187. package/dist/index-DBzpSkNi.js +345 -0
  188. package/dist/index-DCuKNBck.js +3153 -0
  189. package/dist/index-DE3uKf0K.js +142 -0
  190. package/dist/index-DGAqp0QX.js +372 -0
  191. package/dist/index-DGh_w_v1.js +475 -0
  192. package/dist/index-DItKvJyI.js +475 -0
  193. package/dist/index-DKAyB0fv.js +345 -0
  194. package/dist/index-DKN4xsXi.js +2851 -0
  195. package/dist/index-DN_iIn8V.js +345 -0
  196. package/dist/index-DONIBpuJ.js +345 -0
  197. package/dist/index-DPDK8Ht4.js +2851 -0
  198. package/dist/index-DPr3ldST.js +2354 -0
  199. package/dist/index-DS1wfdxM.js +142 -0
  200. package/dist/index-DUW5cCh8.js +372 -0
  201. package/dist/index-DUv28uVd.js +142 -0
  202. package/dist/index-DVS-5SZn.js +475 -0
  203. package/dist/index-DWI51JAp.js +372 -0
  204. package/dist/index-DWVmEexu.js +475 -0
  205. package/dist/index-DXf9wUqQ.js +142 -0
  206. package/dist/index-DXmB-sjP.js +345 -0
  207. package/dist/index-DY_e_Dxv.js +372 -0
  208. package/dist/index-DZar-us7.js +142 -0
  209. package/dist/index-D_nwqVrw.js +2847 -0
  210. package/dist/index-DbEeir7h.js +2834 -0
  211. package/dist/index-Dbf5ypbh.js +142 -0
  212. package/dist/index-DcSK-2pt.js +345 -0
  213. package/dist/index-DclK-Mc7.js +2864 -0
  214. package/dist/index-DcnzaxVi.js +142 -0
  215. package/dist/index-Dd8PlF0M.js +2857 -0
  216. package/dist/index-DdkVT39s.js +345 -0
  217. package/dist/index-DeLbU1t-.js +345 -0
  218. package/dist/index-DfV_J8Te.js +345 -0
  219. package/dist/index-DgPnNd8U.js +475 -0
  220. package/dist/index-Dg_JLa7s.js +345 -0
  221. package/dist/index-Di2VPQjn.js +345 -0
  222. package/dist/index-DibHUbqc.js +372 -0
  223. package/dist/index-DjCVSrpw.js +475 -0
  224. package/dist/index-Djdb936p.js +142 -0
  225. package/dist/index-DmFL_GSt.js +142 -0
  226. package/dist/index-DmP4X2k0.js +372 -0
  227. package/dist/index-DmtmRd1r.js +372 -0
  228. package/dist/index-Dn8MA3kh.js +475 -0
  229. package/dist/index-Do7uXDSi.js +2071 -0
  230. package/dist/index-Dpv1M9Hu.js +372 -0
  231. package/dist/index-DqUuZC8f.js +372 -0
  232. package/dist/index-DtEXQIjn.js +372 -0
  233. package/dist/index-Dtw-qZ0V.js +372 -0
  234. package/dist/index-Dv3hIz8H.js +345 -0
  235. package/dist/index-Dv9jnaWp.js +345 -0
  236. package/dist/index-Dw8KZwGJ.js +2354 -0
  237. package/dist/index-DwJILh-Q.js +3149 -0
  238. package/dist/index-DwzGV3B9.js +142 -0
  239. package/dist/index-DyybaRkK.js +345 -0
  240. package/dist/index-DzerABZq.js +372 -0
  241. package/dist/index-F53NVkhc.js +142 -0
  242. package/dist/index-Fl0_k4XF.js +475 -0
  243. package/dist/index-HMYRCPrs.js +2326 -0
  244. package/dist/index-I49wpmT-.js +372 -0
  245. package/dist/index-IPv1O8Zq.js +345 -0
  246. package/dist/index-JLqnaery.js +372 -0
  247. package/dist/index-JRCQ1CYj.js +142 -0
  248. package/dist/index-L86-iO8O.js +345 -0
  249. package/dist/index-Q56EoFor.js +142 -0
  250. package/dist/index-QxKMr6p0.js +2829 -0
  251. package/dist/index-THRvW9Xm.js +2856 -0
  252. package/dist/index-WIUmTlfL.js +345 -0
  253. package/dist/index-WRrsK0pR.js +475 -0
  254. package/dist/index-Wq652QGf.js +2836 -0
  255. package/dist/index-YnSLCdjP.js +475 -0
  256. package/dist/index-Ynf0lvBE.js +142 -0
  257. package/dist/index-_OtTmb9i.js +142 -0
  258. package/dist/index-_oqoy_3D.js +142 -0
  259. package/dist/index-cl4Y-BWw.js +475 -0
  260. package/dist/index-d_eHJkDW.js +475 -0
  261. package/dist/index-dnmEyUWB.js +372 -0
  262. package/dist/index-dz6CwD6A.js +142 -0
  263. package/dist/index-g4rkaRry.js +475 -0
  264. package/dist/index-g9bRMdAX.js +142 -0
  265. package/dist/index-h4z4-a2p.js +2852 -0
  266. package/dist/index-h7BhcQYM.js +475 -0
  267. package/dist/index-hI3qofTF.js +345 -0
  268. package/dist/index-iyQQumAA.js +372 -0
  269. package/dist/index-js_OhKON.js +345 -0
  270. package/dist/index-kgb4MdHr.js +475 -0
  271. package/dist/index-logKl0VM.js +3144 -0
  272. package/dist/index-lrFMrOlR.js +3132 -0
  273. package/dist/index-mEHxtQWj.js +372 -0
  274. package/dist/index-mNm1BV3n.js +2857 -0
  275. package/dist/index-oOzAFXfr.js +142 -0
  276. package/dist/index-s3vGq0ro.js +345 -0
  277. package/dist/index-wt7AbUqc.js +2342 -0
  278. package/dist/index.es.js +1 -1
  279. package/dist/index.html +28 -0
  280. package/dist/index.umd.js +1 -8
  281. package/dist/style.css +1 -1
  282. package/package.json +87 -91
  283. package/src/App.vue +1 -30
  284. package/src/assets/styles/_root.scss +97 -141
  285. package/src/assets/styles/_variables.scss +19 -44
  286. package/src/assets/styles/index.scss +42 -267
  287. package/src/components/Layout/Sidebar.vue +2 -43
  288. package/src/components/Layout/TopMenu.vue +12 -37
  289. package/src/components/Layout/index.vue +0 -1
  290. package/src/utils/request.ts +1 -18
  291. package/src/views/dashboard/index.vue +155 -417
  292. package/src/views/error/403.vue +56 -251
  293. package/src/views/error/404.vue +56 -253
  294. package/src/views/login/index.vue +194 -586
  295. package/src/views/system/menu/index.vue +94 -403
  296. package/src/views/system/role/index.vue +69 -348
  297. package/src/views/system/user/index.vue +73 -402
  298. package/dist/index-BZaqYObA.js +0 -479
  299. package/dist/index-CbwOysFI.js +0 -641
  300. package/dist/index-Jynxhhda.js +0 -189
  301. package/dist/index-XgzSS-fV.js +0 -515
  302. package/dist/index-_iZKFlCa.js +0 -4178
  303. package/src/types/json-bigint.d.ts +0 -18
@@ -0,0 +1,2354 @@
1
+ import { ref as h, computed as g, watch as ct, defineComponent as Q, openBlock as i, createElementBlock as _, normalizeClass as K, createElementVNode as t, withDirectives as He, toDisplayString as x, unref as l, vShow as dt, createVNode as k, withCtx as $, Fragment as q, renderList as W, createBlock as A, createTextVNode as ne, createCommentVNode as j, onMounted as Xe, onUnmounted as Ge, withModifiers as Re, Transition as De, withKeys as Je, vModelText as mt, normalizeStyle as ze, resolveComponent as pt, reactive as Pe } from "vue";
2
+ import { defineStore as Ce } from "pinia";
3
+ import { useRoute as de, useRouter as ee, createRouter as Oe, createWebHistory as Ae } from "vue-router";
4
+ import { Menu as Qe, SubMenu as Ze, MenuItem as ye, Tabs as vt, TabPane as _t } from "@xto/navigation";
5
+ import { Icon as E, Button as xe } from "@xto/base";
6
+ import { Drawer as et, Message as J } from "@xto/feedback";
7
+ import { Form as ht, FormItem as he, Input as We, Checkbox as ft } from "@xto/form";
8
+ import gt from "axios";
9
+ const ue = "xto_", tt = (e) => ({
10
+ get(s) {
11
+ const o = e.getItem(ue + s);
12
+ if (!o) return null;
13
+ try {
14
+ return JSON.parse(o);
15
+ } catch {
16
+ return o;
17
+ }
18
+ },
19
+ set(s, o) {
20
+ if (o == null) {
21
+ e.removeItem(ue + s);
22
+ return;
23
+ }
24
+ const r = typeof o == "string" ? o : JSON.stringify(o);
25
+ e.setItem(ue + s, r);
26
+ },
27
+ remove(s) {
28
+ e.removeItem(ue + s);
29
+ },
30
+ clear() {
31
+ Object.keys(e).forEach((o) => {
32
+ o.startsWith(ue) && e.removeItem(o);
33
+ });
34
+ }
35
+ }), fe = tt(window.localStorage), ge = tt(window.sessionStorage), f = {
36
+ get: fe.get,
37
+ set: fe.set,
38
+ remove: fe.remove,
39
+ clear: fe.clear
40
+ }, Cn = {
41
+ get: ge.get,
42
+ set: ge.set,
43
+ remove: ge.remove,
44
+ clear: ge.clear
45
+ }, te = Ce("app", () => {
46
+ const e = h(f.get("appName") || "XTO App"), s = h(f.get("indexPath") || "/dashboard"), o = h(f.get("isDark") || !1), r = h(f.get("theme") || "light"), a = h(f.get("layout") || "sidebar"), u = h(f.get("isCollapsed") || !1), C = h(f.get("showTabs") ?? !0), m = h(f.get("showFooter") ?? !0), p = h(f.get("showBreadcrumb") ?? !0), d = h(f.get("primaryColor") || "#409eff"), v = h([]), c = g(() => o.value ? "dark" : "light"), y = (T) => {
47
+ e.value = T, f.set("appName", T);
48
+ }, V = (T) => {
49
+ s.value = T, f.set("indexPath", T);
50
+ }, L = () => {
51
+ o.value = !o.value, r.value = o.value ? "dark" : "light", D();
52
+ }, R = (T) => {
53
+ r.value = T, o.value = T === "dark", D();
54
+ }, D = () => {
55
+ const T = document.documentElement;
56
+ o.value ? T.classList.add("dark") : T.classList.remove("dark"), f.set("isDark", o.value), f.set("theme", r.value);
57
+ }, z = () => {
58
+ u.value = !u.value, f.set("isCollapsed", u.value);
59
+ }, P = (T) => {
60
+ a.value = T, f.set("layout", T);
61
+ }, F = () => {
62
+ C.value = !C.value, f.set("showTabs", C.value);
63
+ }, N = () => {
64
+ m.value = !m.value, f.set("showFooter", m.value);
65
+ }, Y = () => {
66
+ p.value = !p.value, f.set("showBreadcrumb", p.value);
67
+ }, M = (T) => {
68
+ d.value = T, document.documentElement.style.setProperty("--color-primary", T), f.set("primaryColor", T);
69
+ }, B = (T) => {
70
+ v.value.includes(T) || v.value.push(T);
71
+ }, le = (T) => {
72
+ const se = v.value.indexOf(T);
73
+ se > -1 && v.value.splice(se, 1);
74
+ }, G = () => {
75
+ v.value = [];
76
+ }, re = () => {
77
+ D(), d.value !== "#409eff" && document.documentElement.style.setProperty("--color-primary", d.value);
78
+ };
79
+ return ct(o, D), {
80
+ appName: e,
81
+ indexPath: s,
82
+ isDark: o,
83
+ theme: r,
84
+ layout: a,
85
+ isCollapsed: u,
86
+ showTabs: C,
87
+ showFooter: m,
88
+ showBreadcrumb: p,
89
+ primaryColor: d,
90
+ cachedViews: v,
91
+ themeClass: c,
92
+ setAppName: y,
93
+ setIndexPath: V,
94
+ toggleTheme: L,
95
+ toggleCollapse: z,
96
+ setTheme: R,
97
+ setLayout: P,
98
+ toggleTabs: F,
99
+ toggleFooter: N,
100
+ toggleBreadcrumb: Y,
101
+ setPrimaryColor: M,
102
+ addCachedView: B,
103
+ removeCachedView: le,
104
+ clearCachedViews: G,
105
+ initTheme: re
106
+ };
107
+ }), Me = "menu_list", yt = {
108
+ menuCode: "home",
109
+ menuName: "首页",
110
+ menuUrl: "/dashboard",
111
+ icon: "home",
112
+ closable: !1,
113
+ isDefault: !1,
114
+ isOut: !1
115
+ }, ae = Ce("menu", () => {
116
+ const e = h(f.get(Me) || []), s = g(() => e.value.length > 0);
117
+ return {
118
+ menuList: e,
119
+ hasMenu: s,
120
+ setMenuList: (a) => {
121
+ e.value = [yt, ...a], f.set(Me, e.value);
122
+ },
123
+ clearMenu: () => {
124
+ e.value = [], f.remove(Me);
125
+ }
126
+ };
127
+ }), $e = "/vite.svg", Ue = "user_info", H = Ce("user", () => {
128
+ const e = h(f.get(Ue)), s = g(() => !!e.value), o = g(() => {
129
+ var c;
130
+ return ((c = e.value) == null ? void 0 : c.userId) || "";
131
+ }), r = g(() => {
132
+ var c;
133
+ return ((c = e.value) == null ? void 0 : c.userName) || "";
134
+ }), a = g(() => {
135
+ var c;
136
+ return ((c = e.value) == null ? void 0 : c.departmentName) || "";
137
+ }), u = g(() => {
138
+ var c;
139
+ return ((c = e.value) == null ? void 0 : c.email) || "";
140
+ }), C = g(() => {
141
+ var c;
142
+ return ((c = e.value) == null ? void 0 : c.mobilePhone) || "";
143
+ }), m = g(() => {
144
+ var c;
145
+ return ((c = e.value) == null ? void 0 : c.positionName) || "";
146
+ }), p = g(() => {
147
+ var c;
148
+ return ((c = e.value) == null ? void 0 : c.avatar) || "";
149
+ });
150
+ return {
151
+ userInfo: e,
152
+ isLoggedIn: s,
153
+ userId: o,
154
+ userName: r,
155
+ departmentName: a,
156
+ email: u,
157
+ mobilePhone: C,
158
+ positionName: m,
159
+ avatar: p,
160
+ setUserInfo: (c) => {
161
+ e.value = c, f.set(Ue, c);
162
+ },
163
+ clearUserInfo: () => {
164
+ e.value = null, f.remove(Ue);
165
+ }
166
+ };
167
+ }), Ve = "token", Fe = "token_type", Be = "refresh_token", Ke = "expires_time", je = "refresh_time", qe = "code", Se = () => f.get(Ve), kt = (e) => {
168
+ f.set(Ve, e);
169
+ }, bt = () => f.get(Fe), wt = (e) => {
170
+ f.set(Fe, e);
171
+ }, xn = () => f.get(Be), Ct = (e) => {
172
+ f.set(Be, e);
173
+ }, xt = () => f.get(Ke), $t = (e) => {
174
+ f.set(Ke, e);
175
+ }, $n = () => f.get(je), St = (e) => {
176
+ f.set(je, e);
177
+ }, Sn = () => f.get(qe), It = (e) => {
178
+ f.set(qe, e);
179
+ }, st = (e) => {
180
+ kt(e.access_token), wt(e.token_type || "Bearer"), Ct(e.refresh_token), $t(e.expires_time), St(e.refresh_time), e.code && It(e.code);
181
+ }, ot = () => {
182
+ f.remove(Ve), f.remove(Fe), f.remove(Be), f.remove(Ke), f.remove(je), f.remove(qe);
183
+ }, Lt = () => {
184
+ const e = xt();
185
+ return e ? Date.now() > e : !0;
186
+ }, nt = () => !!Se() && !Lt(), Ie = Ce("auth", () => {
187
+ const e = h(Se()), s = g(() => nt()), o = h(""), r = h(""), a = h(""), u = h("/login");
188
+ return {
189
+ token: e,
190
+ isLoggedIn: s,
191
+ baseUrl: o,
192
+ appId: r,
193
+ clientId: a,
194
+ loginPath: u,
195
+ login: (y) => {
196
+ e.value = y.access_token, st(y);
197
+ },
198
+ logout: () => {
199
+ e.value = null, ot();
200
+ },
201
+ setBaseUrl: (y) => {
202
+ o.value = y;
203
+ },
204
+ setAppId: (y) => {
205
+ r.value = y;
206
+ },
207
+ setClientId: (y) => {
208
+ a.value = y;
209
+ },
210
+ setLoginPath: (y) => {
211
+ u.value = y;
212
+ }
213
+ };
214
+ }), Tt = { class: "sidebar__logo" }, Et = { class: "sidebar__menu-content" }, Nt = { class: "sidebar__menu-icon" }, Mt = {
215
+ key: 1,
216
+ class: "sidebar__menu-char"
217
+ }, Ut = { class: "sidebar__menu-text" }, Dt = { class: "sidebar__menu-content" }, Rt = { class: "sidebar__menu-icon" }, zt = {
218
+ key: 1,
219
+ class: "sidebar__menu-char"
220
+ }, Pt = { class: "sidebar__menu-text" }, Ot = { class: "sidebar__menu-content" }, At = { class: "sidebar__menu-icon" }, Vt = {
221
+ key: 1,
222
+ class: "sidebar__menu-char"
223
+ }, Ft = { class: "sidebar__menu-text" }, Bt = {
224
+ key: 0,
225
+ class: "sidebar__user"
226
+ }, Kt = { class: "sidebar__user-info" }, jt = { class: "sidebar__user-name" }, qt = { class: "sidebar__user-role" }, Yt = /* @__PURE__ */ Q({
227
+ __name: "Sidebar",
228
+ props: {
229
+ menuList: { default: () => [] }
230
+ },
231
+ setup(e) {
232
+ const s = e, o = de(), r = ee(), a = ae(), u = H(), C = Ie(), m = te(), p = g(() => s.menuList.length > 0 ? s.menuList : a.menuList), d = g(() => m.isCollapsed), v = g(() => o.path), c = g(() => m.isDark ? "#1d1e1f" : "#fff"), y = g(() => m.isDark ? "#cfd3dc" : "#303133"), V = g(() => "#409eff"), L = (N) => {
233
+ N && N !== o.path && r.push(N);
234
+ }, R = () => {
235
+ C.logout(), u.clearUserInfo(), a.clearMenu(), r.push("/login");
236
+ }, D = /* @__PURE__ */ new Set([
237
+ "arrow-up",
238
+ "arrow-down",
239
+ "arrow-left",
240
+ "arrow-right",
241
+ "caret-down",
242
+ "caret-right",
243
+ "plus",
244
+ "minus",
245
+ "close",
246
+ "check",
247
+ "edit",
248
+ "delete",
249
+ "copy",
250
+ "download",
251
+ "upload",
252
+ "refresh",
253
+ "search",
254
+ "filter",
255
+ "more",
256
+ "setting",
257
+ "share",
258
+ "loading",
259
+ "info",
260
+ "success",
261
+ "warning",
262
+ "error",
263
+ "question",
264
+ "user",
265
+ "user-add",
266
+ "user-group",
267
+ "logout",
268
+ "login",
269
+ "file",
270
+ "folder",
271
+ "folder-open",
272
+ "document",
273
+ "image",
274
+ "video",
275
+ "music",
276
+ "camera",
277
+ "mail",
278
+ "phone",
279
+ "chat",
280
+ "bell",
281
+ "message",
282
+ "eye",
283
+ "eye-off",
284
+ "calendar",
285
+ "clock",
286
+ "history",
287
+ "timer",
288
+ "location",
289
+ "map",
290
+ "globe",
291
+ "star",
292
+ "heart",
293
+ "thumb-up",
294
+ "link",
295
+ "external-link",
296
+ "lock",
297
+ "unlock",
298
+ "key",
299
+ "home",
300
+ "menu",
301
+ "menu-fold",
302
+ "menu-unfold",
303
+ "sidebar-fold",
304
+ "sidebar-expand",
305
+ "sidebar-left",
306
+ "dashboard",
307
+ "chart",
308
+ "chart-pie",
309
+ "chart-line",
310
+ "report",
311
+ "analytics",
312
+ "system",
313
+ "permission",
314
+ "role",
315
+ "user-manage",
316
+ "log",
317
+ "notification",
318
+ "app",
319
+ "list",
320
+ "grid",
321
+ "fullscreen",
322
+ "fullscreen-exit",
323
+ "zoom-in",
324
+ "zoom-out",
325
+ "print",
326
+ "bookmark",
327
+ "tag",
328
+ "code",
329
+ "terminal",
330
+ "database",
331
+ "server",
332
+ "cloud",
333
+ "gift",
334
+ "moon",
335
+ "sun",
336
+ "theme",
337
+ "skin"
338
+ ]), z = (N) => {
339
+ if (!N || N === "") return "";
340
+ if (N.startsWith("tineco-icon-")) {
341
+ const M = N.replace("tineco-icon-", "");
342
+ return {
343
+ home: "home",
344
+ dashboard: "dashboard",
345
+ system: "system",
346
+ user: "user",
347
+ role: "role",
348
+ menu: "list",
349
+ setting: "setting",
350
+ file: "file",
351
+ folder: "folder",
352
+ chart: "chart",
353
+ report: "report",
354
+ analytics: "analytics"
355
+ }[M] || M;
356
+ }
357
+ return {
358
+ dashboard: "dashboard",
359
+ system: "system",
360
+ user: "user",
361
+ role: "role",
362
+ menu: "list",
363
+ setting: "setting",
364
+ home: "home",
365
+ chart: "chart",
366
+ report: "report",
367
+ analytics: "analytics",
368
+ permission: "permission",
369
+ log: "log",
370
+ notification: "notification",
371
+ app: "app",
372
+ list: "list",
373
+ grid: "grid"
374
+ }[N] || N;
375
+ }, P = (N) => N ? N.charAt(0) : "", F = (N) => D.has(N);
376
+ return (N, Y) => (i(), _("div", {
377
+ class: K(["sidebar", { "sidebar--collapsed": d.value }])
378
+ }, [
379
+ t("div", Tt, [
380
+ Y[0] || (Y[0] = t("img", {
381
+ src: $e,
382
+ alt: "Logo",
383
+ class: "sidebar__logo-img"
384
+ }, null, -1)),
385
+ He(t("span", { class: "sidebar__logo-text" }, x(l(m).appName), 513), [
386
+ [dt, !d.value]
387
+ ])
388
+ ]),
389
+ k(l(Qe), {
390
+ "default-active": v.value,
391
+ mode: "vertical",
392
+ collapse: d.value,
393
+ "collapse-transition": !1,
394
+ "background-color": c.value,
395
+ "text-color": y.value,
396
+ "active-text-color": V.value,
397
+ class: "sidebar__menu",
398
+ onSelect: L
399
+ }, {
400
+ default: $(() => [
401
+ (i(!0), _(q, null, W(p.value, (M) => (i(), _(q, {
402
+ key: M.menuUrl
403
+ }, [
404
+ M.children && M.children.length > 0 ? (i(), A(l(Ze), {
405
+ key: 0,
406
+ index: M.menuUrl
407
+ }, {
408
+ title: $(() => [
409
+ t("span", Et, [
410
+ t("span", Nt, [
411
+ F(z(M.icon)) ? (i(), A(l(E), {
412
+ key: 0,
413
+ name: z(M.icon),
414
+ size: 16
415
+ }, null, 8, ["name"])) : (i(), _("span", Mt, x(P(M.menuName)), 1))
416
+ ]),
417
+ t("span", Ut, x(M.menuName), 1)
418
+ ])
419
+ ]),
420
+ default: $(() => [
421
+ (i(!0), _(q, null, W(M.children, (B) => (i(), A(l(ye), {
422
+ key: B.menuUrl,
423
+ index: B.menuUrl
424
+ }, {
425
+ default: $(() => [
426
+ t("span", Dt, [
427
+ t("span", Rt, [
428
+ F(z(B.icon)) ? (i(), A(l(E), {
429
+ key: 0,
430
+ name: z(B.icon),
431
+ size: 16
432
+ }, null, 8, ["name"])) : (i(), _("span", zt, x(P(B.menuName)), 1))
433
+ ]),
434
+ t("span", Pt, x(B.menuName), 1)
435
+ ])
436
+ ]),
437
+ _: 2
438
+ }, 1032, ["index"]))), 128))
439
+ ]),
440
+ _: 2
441
+ }, 1032, ["index"])) : (i(), A(l(ye), {
442
+ key: 1,
443
+ index: M.menuUrl
444
+ }, {
445
+ default: $(() => [
446
+ t("span", Ot, [
447
+ t("span", At, [
448
+ F(z(M.icon)) ? (i(), A(l(E), {
449
+ key: 0,
450
+ name: z(M.icon),
451
+ size: 16
452
+ }, null, 8, ["name"])) : (i(), _("span", Vt, x(P(M.menuName)), 1))
453
+ ]),
454
+ t("span", Ft, x(M.menuName), 1)
455
+ ])
456
+ ]),
457
+ _: 2
458
+ }, 1032, ["index"]))
459
+ ], 64))), 128))
460
+ ]),
461
+ _: 1
462
+ }, 8, ["default-active", "collapse", "background-color", "text-color", "active-text-color"]),
463
+ d.value ? j("", !0) : (i(), _("div", Bt, [
464
+ t("div", Kt, [
465
+ t("span", jt, x(l(u).userName), 1),
466
+ t("span", qt, x(l(u).departmentName), 1)
467
+ ]),
468
+ k(l(xe), {
469
+ type: "text",
470
+ size: "small",
471
+ onClick: R
472
+ }, {
473
+ default: $(() => [...Y[1] || (Y[1] = [
474
+ ne("退出", -1)
475
+ ])]),
476
+ _: 1
477
+ })
478
+ ]))
479
+ ], 2));
480
+ }
481
+ }), X = (e, s) => {
482
+ const o = e.__vccOpts || e;
483
+ for (const [r, a] of s)
484
+ o[r] = a;
485
+ return o;
486
+ }, Wt = /* @__PURE__ */ X(Yt, [["__scopeId", "data-v-11c97455"]]), Ht = { class: "header" }, Xt = { class: "header__left" }, Gt = { class: "header__logo" }, Jt = { class: "header__logo-text" }, Qt = {
487
+ key: 0,
488
+ class: "header__breadcrumb"
489
+ }, Zt = {
490
+ key: 0,
491
+ class: "breadcrumb-separator"
492
+ }, es = { class: "header__right" }, ts = ["title"], ss = { class: "header__avatar" }, os = { class: "header__user-name" }, ns = {
493
+ key: 0,
494
+ class: "header__dropdown"
495
+ }, as = { class: "header__dropdown-header" }, ls = { class: "header__dropdown-avatar" }, rs = { class: "header__dropdown-info" }, is = { class: "header__dropdown-name" }, us = { class: "header__dropdown-role" }, cs = { class: "header__dropdown-menu" }, ds = { class: "search-container" }, ms = { class: "search-input-wrapper" }, ps = {
496
+ key: 0,
497
+ class: "search-results"
498
+ }, vs = ["onClick"], _s = { class: "search-result-info" }, hs = { class: "search-result-title" }, fs = {
499
+ key: 0,
500
+ class: "search-result-parent"
501
+ }, gs = {
502
+ key: 1,
503
+ class: "search-empty"
504
+ }, ys = { class: "settings-drawer" }, ks = { class: "settings-section" }, bs = { class: "settings-layout-options" }, ws = ["onClick"], Cs = { class: "layout-option__preview" }, xs = {
505
+ key: 0,
506
+ class: "layout-preview-sidebar"
507
+ }, $s = {
508
+ key: 1,
509
+ class: "layout-preview-top"
510
+ }, Ss = {
511
+ key: 2,
512
+ class: "layout-preview-mix"
513
+ }, Is = { class: "layout-option__label" }, Ls = { class: "settings-section" }, Ts = { class: "settings-color-options" }, Es = ["title", "onClick"], Ns = { class: "settings-section" }, Ms = { class: "settings-switch-list" }, Us = { class: "settings-switch-item" }, Ds = { class: "settings-switch-item" }, Rs = /* @__PURE__ */ Q({
514
+ __name: "Header",
515
+ setup(e) {
516
+ const s = de(), o = ee(), r = te(), a = H(), u = Ie(), C = ae(), m = h(!1), p = h(!1), d = h(null), v = h(!1), c = h(!1), y = h(""), V = h(null), L = h(!1), R = [
517
+ { value: "sidebar", label: "左侧菜单", icon: "sidebar-left" },
518
+ { value: "top", label: "顶部菜单", icon: "menu" },
519
+ { value: "mix", label: "混合菜单", icon: "grid" }
520
+ ], D = [
521
+ { value: "#409eff", label: "默认蓝" },
522
+ { value: "#1890ff", label: "科技蓝" },
523
+ { value: "#52c41a", label: "极光绿" },
524
+ { value: "#faad14", label: "日落橙" },
525
+ { value: "#f5222d", label: "薄暮红" },
526
+ { value: "#722ed1", label: "酱紫" }
527
+ ], z = g(() => s.matched.filter((n) => n.meta && n.meta.title).map((n) => ({
528
+ title: n.meta.title,
529
+ path: n.path
530
+ }))), P = (I, n = "") => {
531
+ const O = [];
532
+ return I.forEach((w) => {
533
+ w.children && w.children.length > 0 ? O.push(...P(w.children, w.title)) : O.push({ ...w, parentTitle: n });
534
+ }), O;
535
+ }, F = g(() => y.value.trim() ? P(C.menuList).filter(
536
+ (n) => n.title.toLowerCase().includes(y.value.toLowerCase())
537
+ ) : []), N = g(() => r.layout), Y = () => {
538
+ r.toggleCollapse();
539
+ }, M = () => {
540
+ r.toggleTheme();
541
+ }, B = () => {
542
+ p.value = !0;
543
+ }, le = (I) => {
544
+ r.setLayout(I), p.value = !1;
545
+ }, G = (I) => {
546
+ L.value = I;
547
+ const n = document.documentElement;
548
+ I ? n.classList.add("grey-mode") : n.classList.remove("grey-mode");
549
+ }, re = () => {
550
+ G(!L.value), p.value = !1;
551
+ }, T = () => {
552
+ r.toggleTheme(), p.value = !1;
553
+ }, se = () => {
554
+ document.fullscreenElement ? document.exitFullscreen() : document.documentElement.requestFullscreen();
555
+ }, me = () => {
556
+ v.value = !!document.fullscreenElement;
557
+ }, Le = () => {
558
+ m.value = !m.value;
559
+ }, Z = () => {
560
+ m.value = !1;
561
+ }, pe = () => {
562
+ c.value = !0;
563
+ }, ie = () => {
564
+ c.value = !1, y.value = "";
565
+ }, ve = (I) => {
566
+ o.push(I), ie();
567
+ }, Te = (I) => {
568
+ r.setPrimaryColor(I), p.value = !1;
569
+ }, Ee = () => {
570
+ Z(), o.push("/profile");
571
+ }, Ne = () => {
572
+ Z(), o.push("/change-password");
573
+ }, _e = () => {
574
+ Z(), u.logout(), a.clearUserInfo(), C.clearMenu(), o.push("/login");
575
+ }, S = (I) => {
576
+ d.value && !d.value.contains(I.target) && Z(), V.value && !V.value.contains(I.target) && ie();
577
+ }, b = (I) => {
578
+ I.key === "Escape" && (ie(), Z()), (I.ctrlKey || I.metaKey) && I.key === "k" && (I.preventDefault(), pe());
579
+ };
580
+ return Xe(() => {
581
+ document.addEventListener("click", S), document.addEventListener("fullscreenchange", me), document.addEventListener("keydown", b), r.initTheme(), L.value = document.documentElement.classList.contains("grey-mode");
582
+ }), Ge(() => {
583
+ document.removeEventListener("click", S), document.removeEventListener("fullscreenchange", me), document.removeEventListener("keydown", b);
584
+ }), (I, n) => {
585
+ var O;
586
+ return i(), _("div", Ht, [
587
+ t("div", Xt, [
588
+ t("div", Gt, [
589
+ n[3] || (n[3] = t("img", {
590
+ src: $e,
591
+ alt: "Logo",
592
+ class: "header__logo-img"
593
+ }, null, -1)),
594
+ t("span", Jt, x(l(r).appName), 1)
595
+ ]),
596
+ t("div", {
597
+ class: "header__collapse",
598
+ onClick: Y
599
+ }, [
600
+ k(l(E), {
601
+ name: l(r).isCollapsed ? "menu-unfold" : "menu-fold",
602
+ size: 18
603
+ }, null, 8, ["name"])
604
+ ]),
605
+ l(r).showBreadcrumb ? (i(), _("div", Qt, [
606
+ (i(!0), _(q, null, W(z.value, (w, oe) => (i(), _("span", {
607
+ key: w.path
608
+ }, [
609
+ oe > 0 ? (i(), _("span", Zt, "/")) : j("", !0),
610
+ t("span", {
611
+ class: K({ "is-current": oe === z.value.length - 1 })
612
+ }, x(w.title), 3)
613
+ ]))), 128))
614
+ ])) : j("", !0)
615
+ ]),
616
+ t("div", es, [
617
+ t("div", {
618
+ class: "header__action",
619
+ onClick: pe,
620
+ title: "搜索 (Ctrl+K)"
621
+ }, [
622
+ k(l(E), {
623
+ name: "search",
624
+ size: 16
625
+ })
626
+ ]),
627
+ t("div", {
628
+ class: "header__action",
629
+ onClick: se,
630
+ title: v.value ? "退出全屏" : "全屏"
631
+ }, [
632
+ k(l(E), {
633
+ name: v.value ? "fullscreen-exit" : "fullscreen",
634
+ size: 16
635
+ }, null, 8, ["name"])
636
+ ], 8, ts),
637
+ t("div", {
638
+ class: "header__action",
639
+ onClick: B,
640
+ title: "换肤设置"
641
+ }, [
642
+ k(l(E), {
643
+ name: "skin",
644
+ size: 16
645
+ })
646
+ ]),
647
+ t("div", {
648
+ class: "header__action",
649
+ onClick: M,
650
+ title: "切换主题"
651
+ }, [
652
+ k(l(E), {
653
+ name: l(r).isDark ? "sun" : "moon",
654
+ size: 16
655
+ }, null, 8, ["name"])
656
+ ]),
657
+ t("div", {
658
+ class: "header__user",
659
+ ref_key: "dropdownRef",
660
+ ref: d
661
+ }, [
662
+ t("div", {
663
+ class: "header__user-trigger",
664
+ onClick: Re(Le, ["stop"])
665
+ }, [
666
+ t("div", ss, [
667
+ t("span", null, x(((O = l(a).userName) == null ? void 0 : O.charAt(0)) || "U"), 1)
668
+ ]),
669
+ t("span", os, x(l(a).userName), 1),
670
+ t("span", {
671
+ class: K(["header__user-arrow", { "is-active": m.value }])
672
+ }, "▼", 2)
673
+ ]),
674
+ k(De, { name: "dropdown" }, {
675
+ default: $(() => {
676
+ var w;
677
+ return [
678
+ m.value ? (i(), _("div", ns, [
679
+ t("div", as, [
680
+ t("div", ls, [
681
+ t("span", null, x(((w = l(a).userName) == null ? void 0 : w.charAt(0)) || "U"), 1)
682
+ ]),
683
+ t("div", rs, [
684
+ t("div", is, x(l(a).userName), 1),
685
+ t("div", us, x(l(a).departmentName), 1)
686
+ ])
687
+ ]),
688
+ n[8] || (n[8] = t("div", { class: "header__dropdown-divider" }, null, -1)),
689
+ t("div", cs, [
690
+ t("div", {
691
+ class: "header__dropdown-item",
692
+ onClick: Ee
693
+ }, [
694
+ k(l(E), {
695
+ name: "user",
696
+ size: 16
697
+ }),
698
+ n[4] || (n[4] = t("span", null, "个人信息", -1))
699
+ ]),
700
+ t("div", {
701
+ class: "header__dropdown-item",
702
+ onClick: Ne
703
+ }, [
704
+ k(l(E), {
705
+ name: "lock",
706
+ size: 16
707
+ }),
708
+ n[5] || (n[5] = t("span", null, "修改密码", -1))
709
+ ]),
710
+ n[7] || (n[7] = t("div", { class: "header__dropdown-divider" }, null, -1)),
711
+ t("div", {
712
+ class: "header__dropdown-item header__dropdown-item--danger",
713
+ onClick: _e
714
+ }, [
715
+ k(l(E), {
716
+ name: "logout",
717
+ size: 16
718
+ }),
719
+ n[6] || (n[6] = t("span", null, "退出登录", -1))
720
+ ])
721
+ ])
722
+ ])) : j("", !0)
723
+ ];
724
+ }),
725
+ _: 1
726
+ })
727
+ ], 512)
728
+ ]),
729
+ k(De, { name: "search" }, {
730
+ default: $(() => [
731
+ c.value ? (i(), _("div", {
732
+ key: 0,
733
+ class: "header__search-modal",
734
+ ref_key: "searchRef",
735
+ ref: V
736
+ }, [
737
+ t("div", ds, [
738
+ t("div", ms, [
739
+ k(l(E), {
740
+ class: "search-icon",
741
+ name: "search",
742
+ size: 20
743
+ }),
744
+ He(t("input", {
745
+ "onUpdate:modelValue": n[0] || (n[0] = (w) => y.value = w),
746
+ type: "text",
747
+ class: "search-input",
748
+ placeholder: "搜索菜单...",
749
+ autofocus: "",
750
+ onKeyup: n[1] || (n[1] = Je((w) => F.value[0] && ve(F.value[0].path), ["enter"]))
751
+ }, null, 544), [
752
+ [mt, y.value]
753
+ ]),
754
+ n[9] || (n[9] = t("span", { class: "search-shortcut" }, "ESC 关闭", -1))
755
+ ]),
756
+ F.value.length > 0 ? (i(), _("div", ps, [
757
+ (i(!0), _(q, null, W(F.value, (w, oe) => (i(), _("div", {
758
+ key: w.path,
759
+ class: K(["search-result-item", { "is-first": oe === 0 }]),
760
+ onClick: (vn) => ve(w.path)
761
+ }, [
762
+ k(l(E), {
763
+ class: "search-result-icon",
764
+ name: w.icon || "file",
765
+ size: 20
766
+ }, null, 8, ["name"]),
767
+ t("div", _s, [
768
+ t("span", hs, x(w.title), 1),
769
+ w.parentTitle ? (i(), _("span", fs, x(w.parentTitle), 1)) : j("", !0)
770
+ ])
771
+ ], 10, vs))), 128))
772
+ ])) : y.value ? (i(), _("div", gs, " 未找到匹配的菜单 ")) : j("", !0)
773
+ ])
774
+ ], 512)) : j("", !0)
775
+ ]),
776
+ _: 1
777
+ }),
778
+ k(l(et), {
779
+ modelValue: p.value,
780
+ "onUpdate:modelValue": n[2] || (n[2] = (w) => p.value = w),
781
+ title: "换肤设置",
782
+ direction: "rtl",
783
+ size: "320px"
784
+ }, {
785
+ default: $(() => [
786
+ t("div", ys, [
787
+ t("div", ks, [
788
+ n[13] || (n[13] = t("div", { class: "settings-title" }, "布局模式", -1)),
789
+ t("div", bs, [
790
+ (i(), _(q, null, W(R, (w) => t("div", {
791
+ key: w.value,
792
+ class: K(["layout-option", { "is-active": N.value === w.value }]),
793
+ onClick: (oe) => le(w.value)
794
+ }, [
795
+ t("div", Cs, [
796
+ w.value === "sidebar" ? (i(), _("div", xs, [...n[10] || (n[10] = [
797
+ t("div", { class: "preview-aside" }, null, -1),
798
+ t("div", { class: "preview-main" }, [
799
+ t("div", { class: "preview-header" }),
800
+ t("div", { class: "preview-content" })
801
+ ], -1)
802
+ ])])) : w.value === "top" ? (i(), _("div", $s, [...n[11] || (n[11] = [
803
+ t("div", { class: "preview-header-full" }, null, -1),
804
+ t("div", { class: "preview-content-full" }, null, -1)
805
+ ])])) : (i(), _("div", Ss, [...n[12] || (n[12] = [
806
+ t("div", { class: "preview-header-mix" }, [
807
+ t("div", { class: "preview-mix-left" })
808
+ ], -1),
809
+ t("div", { class: "preview-mix-body" }, [
810
+ t("div", { class: "preview-mix-aside" }),
811
+ t("div", { class: "preview-mix-content" })
812
+ ], -1)
813
+ ])]))
814
+ ]),
815
+ t("span", Is, x(w.label), 1)
816
+ ], 10, ws)), 64))
817
+ ])
818
+ ]),
819
+ t("div", Ls, [
820
+ n[14] || (n[14] = t("div", { class: "settings-title" }, "主题色", -1)),
821
+ t("div", Ts, [
822
+ (i(), _(q, null, W(D, (w) => t("div", {
823
+ key: w.value,
824
+ class: K(["color-option", { "is-active": l(r).primaryColor === w.value }]),
825
+ style: ze({ backgroundColor: w.value }),
826
+ title: w.label,
827
+ onClick: (oe) => Te(w.value)
828
+ }, [
829
+ l(r).primaryColor === w.value ? (i(), A(l(E), {
830
+ key: 0,
831
+ name: "check",
832
+ size: 12,
833
+ color: "#fff"
834
+ })) : j("", !0)
835
+ ], 14, Es)), 64))
836
+ ])
837
+ ]),
838
+ t("div", Ns, [
839
+ n[19] || (n[19] = t("div", { class: "settings-title" }, "功能设置", -1)),
840
+ t("div", Ms, [
841
+ t("div", Us, [
842
+ n[16] || (n[16] = t("span", null, "灰色模式", -1)),
843
+ t("div", {
844
+ class: K(["switch-wrapper", { "is-checked": L.value }]),
845
+ onClick: re
846
+ }, [...n[15] || (n[15] = [
847
+ t("span", { class: "switch-core" }, null, -1)
848
+ ])], 2)
849
+ ]),
850
+ t("div", Ds, [
851
+ n[18] || (n[18] = t("span", null, "暗黑模式", -1)),
852
+ t("div", {
853
+ class: K(["switch-wrapper", { "is-checked": l(r).isDark }]),
854
+ onClick: T
855
+ }, [...n[17] || (n[17] = [
856
+ t("span", { class: "switch-core" }, null, -1)
857
+ ])], 2)
858
+ ])
859
+ ])
860
+ ])
861
+ ])
862
+ ]),
863
+ _: 1
864
+ }, 8, ["modelValue"])
865
+ ]);
866
+ };
867
+ }
868
+ }), zs = /* @__PURE__ */ X(Rs, [["__scopeId", "data-v-bf260d8d"]]), Ps = { class: "top-menu" }, Os = { class: "top-menu__logo" }, As = { class: "top-menu__logo-text" }, Vs = { class: "top-menu__menu-content" }, Fs = { class: "top-menu__menu-icon" }, Bs = {
869
+ key: 1,
870
+ class: "top-menu__menu-char"
871
+ }, Ks = { class: "top-menu__menu-text" }, js = { class: "top-menu__menu-content" }, qs = { class: "top-menu__menu-icon" }, Ys = {
872
+ key: 1,
873
+ class: "top-menu__menu-char"
874
+ }, Ws = { class: "top-menu__menu-text" }, Hs = { class: "top-menu__menu-content" }, Xs = { class: "top-menu__menu-icon" }, Gs = {
875
+ key: 1,
876
+ class: "top-menu__menu-char"
877
+ }, Js = { class: "top-menu__menu-text" }, Qs = { class: "top-menu__actions" }, Zs = ["title"], eo = { class: "top-menu__avatar" }, to = { class: "top-menu__user-name" }, so = {
878
+ key: 0,
879
+ class: "top-menu__dropdown"
880
+ }, oo = { class: "top-menu__dropdown-header" }, no = { class: "top-menu__dropdown-avatar" }, ao = { class: "top-menu__dropdown-info" }, lo = { class: "top-menu__dropdown-name" }, ro = { class: "top-menu__dropdown-role" }, io = { class: "top-menu__dropdown-menu" }, uo = { class: "settings-drawer" }, co = { class: "settings-section" }, mo = { class: "settings-layout-options" }, po = ["onClick"], vo = { class: "layout-option__preview" }, _o = {
881
+ key: 0,
882
+ class: "layout-preview-sidebar"
883
+ }, ho = {
884
+ key: 1,
885
+ class: "layout-preview-top"
886
+ }, fo = {
887
+ key: 2,
888
+ class: "layout-preview-mix"
889
+ }, go = { class: "layout-option__label" }, yo = { class: "settings-section" }, ko = { class: "settings-color-options" }, bo = ["title", "onClick"], wo = { class: "settings-section" }, Co = { class: "settings-switch-list" }, xo = { class: "settings-switch-item" }, $o = { class: "settings-switch-item" }, So = /* @__PURE__ */ Q({
890
+ __name: "TopMenu",
891
+ setup(e) {
892
+ const s = de(), o = ee(), r = ae(), a = te(), u = H(), C = Ie(), m = g(() => s.path), p = g(() => a.isDark ? "#1d1e1f" : "#fff"), d = g(() => a.isDark ? "#cfd3dc" : "#303133"), v = g(() => "#409eff"), c = h(!1), y = h(null), V = h(!1), L = h(!1), R = h(!1), D = (S) => {
893
+ S && S !== s.path && o.push(S);
894
+ }, z = /* @__PURE__ */ new Set([
895
+ "arrow-up",
896
+ "arrow-down",
897
+ "arrow-left",
898
+ "arrow-right",
899
+ "caret-down",
900
+ "caret-right",
901
+ "plus",
902
+ "minus",
903
+ "close",
904
+ "check",
905
+ "edit",
906
+ "delete",
907
+ "copy",
908
+ "download",
909
+ "upload",
910
+ "refresh",
911
+ "search",
912
+ "filter",
913
+ "more",
914
+ "setting",
915
+ "share",
916
+ "loading",
917
+ "info",
918
+ "success",
919
+ "warning",
920
+ "error",
921
+ "question",
922
+ "user",
923
+ "user-add",
924
+ "user-group",
925
+ "logout",
926
+ "login",
927
+ "file",
928
+ "folder",
929
+ "folder-open",
930
+ "document",
931
+ "image",
932
+ "video",
933
+ "music",
934
+ "camera",
935
+ "mail",
936
+ "phone",
937
+ "chat",
938
+ "bell",
939
+ "message",
940
+ "eye",
941
+ "eye-off",
942
+ "calendar",
943
+ "clock",
944
+ "history",
945
+ "timer",
946
+ "location",
947
+ "map",
948
+ "globe",
949
+ "star",
950
+ "heart",
951
+ "thumb-up",
952
+ "link",
953
+ "external-link",
954
+ "lock",
955
+ "unlock",
956
+ "key",
957
+ "home",
958
+ "menu",
959
+ "menu-fold",
960
+ "menu-unfold",
961
+ "sidebar-fold",
962
+ "sidebar-expand",
963
+ "sidebar-left",
964
+ "dashboard",
965
+ "chart",
966
+ "chart-pie",
967
+ "chart-line",
968
+ "report",
969
+ "analytics",
970
+ "system",
971
+ "permission",
972
+ "role",
973
+ "user-manage",
974
+ "log",
975
+ "notification",
976
+ "app",
977
+ "list",
978
+ "grid",
979
+ "fullscreen",
980
+ "fullscreen-exit",
981
+ "zoom-in",
982
+ "zoom-out",
983
+ "print",
984
+ "bookmark",
985
+ "tag",
986
+ "code",
987
+ "terminal",
988
+ "database",
989
+ "server",
990
+ "cloud",
991
+ "gift",
992
+ "moon",
993
+ "sun",
994
+ "theme",
995
+ "skin"
996
+ ]), P = (S) => {
997
+ if (!S || S === "") return "";
998
+ if (S.startsWith("tineco-icon-")) {
999
+ const I = S.replace("tineco-icon-", "");
1000
+ return {
1001
+ home: "home",
1002
+ dashboard: "dashboard",
1003
+ system: "system",
1004
+ user: "user",
1005
+ role: "role",
1006
+ menu: "list",
1007
+ setting: "setting",
1008
+ file: "file",
1009
+ folder: "folder",
1010
+ chart: "chart",
1011
+ report: "report",
1012
+ analytics: "analytics"
1013
+ }[I] || I;
1014
+ }
1015
+ return {
1016
+ dashboard: "dashboard",
1017
+ system: "system",
1018
+ user: "user",
1019
+ role: "role",
1020
+ menu: "list",
1021
+ setting: "setting",
1022
+ home: "home",
1023
+ chart: "chart",
1024
+ report: "report",
1025
+ analytics: "analytics",
1026
+ permission: "permission",
1027
+ log: "log",
1028
+ notification: "notification",
1029
+ app: "app",
1030
+ list: "list",
1031
+ grid: "grid"
1032
+ }[S] || S;
1033
+ }, F = (S) => S ? S.charAt(0) : "", N = (S) => z.has(S), Y = () => {
1034
+ a.toggleTheme(), L.value = !1;
1035
+ }, M = () => {
1036
+ document.fullscreenElement ? document.exitFullscreen() : document.documentElement.requestFullscreen();
1037
+ }, B = () => {
1038
+ V.value = !!document.fullscreenElement;
1039
+ }, le = () => {
1040
+ c.value = !c.value;
1041
+ }, G = () => {
1042
+ c.value = !1;
1043
+ }, re = () => {
1044
+ L.value = !0;
1045
+ }, T = (S) => {
1046
+ R.value = S;
1047
+ const b = document.documentElement;
1048
+ S ? b.classList.add("grey-mode") : b.classList.remove("grey-mode");
1049
+ }, se = () => {
1050
+ T(!R.value), L.value = !1;
1051
+ }, me = () => {
1052
+ a.toggleTheme(), L.value = !1;
1053
+ }, Le = [
1054
+ { value: "sidebar", label: "左侧菜单", icon: "sidebar-left" },
1055
+ { value: "top", label: "顶部菜单", icon: "menu" },
1056
+ { value: "mix", label: "混合菜单", icon: "grid" }
1057
+ ], Z = g(() => a.layout), pe = (S) => {
1058
+ a.setLayout(S), L.value = !1;
1059
+ }, ie = [
1060
+ { value: "#409eff", label: "默认蓝" },
1061
+ { value: "#1890ff", label: "科技蓝" },
1062
+ { value: "#52c41a", label: "极光绿" },
1063
+ { value: "#faad14", label: "日落橙" },
1064
+ { value: "#f5222d", label: "薄暮红" },
1065
+ { value: "#722ed1", label: "酱紫" }
1066
+ ], ve = (S) => {
1067
+ a.setPrimaryColor(S), L.value = !1;
1068
+ }, Te = () => {
1069
+ G(), o.push("/profile");
1070
+ }, Ee = () => {
1071
+ G(), o.push("/change-password");
1072
+ }, Ne = () => {
1073
+ G(), C.logout(), u.clearUserInfo(), r.clearMenu(), o.push("/login");
1074
+ }, _e = (S) => {
1075
+ y.value && !y.value.contains(S.target) && G();
1076
+ };
1077
+ return Xe(() => {
1078
+ document.addEventListener("click", _e), document.addEventListener("fullscreenchange", B), R.value = document.documentElement.classList.contains("grey-mode");
1079
+ }), Ge(() => {
1080
+ document.removeEventListener("click", _e), document.removeEventListener("fullscreenchange", B);
1081
+ }), (S, b) => {
1082
+ var I;
1083
+ return i(), _("div", Ps, [
1084
+ t("div", Os, [
1085
+ b[1] || (b[1] = t("img", {
1086
+ src: $e,
1087
+ alt: "Logo",
1088
+ class: "top-menu__logo-img"
1089
+ }, null, -1)),
1090
+ t("span", As, x(l(a).appName), 1)
1091
+ ]),
1092
+ k(l(Qe), {
1093
+ "default-active": m.value,
1094
+ mode: "horizontal",
1095
+ "background-color": p.value,
1096
+ "text-color": d.value,
1097
+ "active-text-color": v.value,
1098
+ class: "top-menu__menu",
1099
+ onSelect: D
1100
+ }, {
1101
+ default: $(() => [
1102
+ (i(!0), _(q, null, W(l(r).menuList, (n) => (i(), _(q, {
1103
+ key: n.menuUrl
1104
+ }, [
1105
+ n.children && n.children.length > 0 ? (i(), A(l(Ze), {
1106
+ key: 0,
1107
+ index: n.menuUrl
1108
+ }, {
1109
+ title: $(() => [
1110
+ t("span", Vs, [
1111
+ t("span", Fs, [
1112
+ N(P(n.icon)) ? (i(), A(l(E), {
1113
+ key: 0,
1114
+ name: P(n.icon),
1115
+ size: 16
1116
+ }, null, 8, ["name"])) : (i(), _("span", Bs, x(F(n.menuName)), 1))
1117
+ ]),
1118
+ t("span", Ks, x(n.menuName), 1)
1119
+ ])
1120
+ ]),
1121
+ default: $(() => [
1122
+ (i(!0), _(q, null, W(n.children, (O) => (i(), A(l(ye), {
1123
+ key: O.menuUrl,
1124
+ index: O.menuUrl
1125
+ }, {
1126
+ default: $(() => [
1127
+ t("span", js, [
1128
+ t("span", qs, [
1129
+ N(P(O.icon)) ? (i(), A(l(E), {
1130
+ key: 0,
1131
+ name: P(O.icon),
1132
+ size: 16
1133
+ }, null, 8, ["name"])) : (i(), _("span", Ys, x(F(O.menuName)), 1))
1134
+ ]),
1135
+ t("span", Ws, x(O.menuName), 1)
1136
+ ])
1137
+ ]),
1138
+ _: 2
1139
+ }, 1032, ["index"]))), 128))
1140
+ ]),
1141
+ _: 2
1142
+ }, 1032, ["index"])) : (i(), A(l(ye), {
1143
+ key: 1,
1144
+ index: n.menuUrl
1145
+ }, {
1146
+ default: $(() => [
1147
+ t("span", Hs, [
1148
+ t("span", Xs, [
1149
+ N(P(n.icon)) ? (i(), A(l(E), {
1150
+ key: 0,
1151
+ name: P(n.icon),
1152
+ size: 16
1153
+ }, null, 8, ["name"])) : (i(), _("span", Gs, x(F(n.menuName)), 1))
1154
+ ]),
1155
+ t("span", Js, x(n.menuName), 1)
1156
+ ])
1157
+ ]),
1158
+ _: 2
1159
+ }, 1032, ["index"]))
1160
+ ], 64))), 128))
1161
+ ]),
1162
+ _: 1
1163
+ }, 8, ["default-active", "background-color", "text-color", "active-text-color"]),
1164
+ t("div", Qs, [
1165
+ t("div", {
1166
+ class: "top-menu__action",
1167
+ onClick: M,
1168
+ title: V.value ? "退出全屏" : "全屏"
1169
+ }, [
1170
+ k(l(E), {
1171
+ name: V.value ? "fullscreen-exit" : "fullscreen",
1172
+ size: 16
1173
+ }, null, 8, ["name"])
1174
+ ], 8, Zs),
1175
+ t("div", {
1176
+ class: "top-menu__action",
1177
+ onClick: re,
1178
+ title: "换肤设置"
1179
+ }, [
1180
+ k(l(E), {
1181
+ name: "skin",
1182
+ size: 16
1183
+ })
1184
+ ]),
1185
+ t("div", {
1186
+ class: "top-menu__action",
1187
+ onClick: Y,
1188
+ title: "切换主题"
1189
+ }, [
1190
+ k(l(E), {
1191
+ name: l(a).isDark ? "sun" : "moon",
1192
+ size: 16
1193
+ }, null, 8, ["name"])
1194
+ ]),
1195
+ t("div", {
1196
+ class: "top-menu__user",
1197
+ ref_key: "dropdownRef",
1198
+ ref: y
1199
+ }, [
1200
+ t("div", {
1201
+ class: "top-menu__user-trigger",
1202
+ onClick: Re(le, ["stop"])
1203
+ }, [
1204
+ t("div", eo, [
1205
+ t("span", null, x(((I = l(u).userName) == null ? void 0 : I.charAt(0)) || "U"), 1)
1206
+ ]),
1207
+ t("span", to, x(l(u).userName), 1),
1208
+ t("span", {
1209
+ class: K(["top-menu__user-arrow", { "is-active": c.value }])
1210
+ }, "▼", 2)
1211
+ ]),
1212
+ k(De, { name: "dropdown" }, {
1213
+ default: $(() => {
1214
+ var n;
1215
+ return [
1216
+ c.value ? (i(), _("div", so, [
1217
+ t("div", oo, [
1218
+ t("div", no, [
1219
+ t("span", null, x(((n = l(u).userName) == null ? void 0 : n.charAt(0)) || "U"), 1)
1220
+ ]),
1221
+ t("div", ao, [
1222
+ t("div", lo, x(l(u).userName), 1),
1223
+ t("div", ro, x(l(u).departmentName), 1)
1224
+ ])
1225
+ ]),
1226
+ b[6] || (b[6] = t("div", { class: "top-menu__dropdown-divider" }, null, -1)),
1227
+ t("div", io, [
1228
+ t("div", {
1229
+ class: "top-menu__dropdown-item",
1230
+ onClick: Te
1231
+ }, [
1232
+ k(l(E), {
1233
+ name: "user",
1234
+ size: 16
1235
+ }),
1236
+ b[2] || (b[2] = t("span", null, "个人信息", -1))
1237
+ ]),
1238
+ t("div", {
1239
+ class: "top-menu__dropdown-item",
1240
+ onClick: Ee
1241
+ }, [
1242
+ k(l(E), {
1243
+ name: "lock",
1244
+ size: 16
1245
+ }),
1246
+ b[3] || (b[3] = t("span", null, "修改密码", -1))
1247
+ ]),
1248
+ b[5] || (b[5] = t("div", { class: "top-menu__dropdown-divider" }, null, -1)),
1249
+ t("div", {
1250
+ class: "top-menu__dropdown-item top-menu__dropdown-item--danger",
1251
+ onClick: Ne
1252
+ }, [
1253
+ k(l(E), {
1254
+ name: "logout",
1255
+ size: 16
1256
+ }),
1257
+ b[4] || (b[4] = t("span", null, "退出登录", -1))
1258
+ ])
1259
+ ])
1260
+ ])) : j("", !0)
1261
+ ];
1262
+ }),
1263
+ _: 1
1264
+ })
1265
+ ], 512)
1266
+ ]),
1267
+ k(l(et), {
1268
+ modelValue: L.value,
1269
+ "onUpdate:modelValue": b[0] || (b[0] = (n) => L.value = n),
1270
+ title: "换肤设置",
1271
+ direction: "rtl",
1272
+ size: "320px"
1273
+ }, {
1274
+ default: $(() => [
1275
+ t("div", uo, [
1276
+ t("div", co, [
1277
+ b[10] || (b[10] = t("div", { class: "settings-title" }, "布局模式", -1)),
1278
+ t("div", mo, [
1279
+ (i(), _(q, null, W(Le, (n) => t("div", {
1280
+ key: n.value,
1281
+ class: K(["layout-option", { "is-active": Z.value === n.value }]),
1282
+ onClick: (O) => pe(n.value)
1283
+ }, [
1284
+ t("div", vo, [
1285
+ n.value === "sidebar" ? (i(), _("div", _o, [...b[7] || (b[7] = [
1286
+ t("div", { class: "preview-aside" }, null, -1),
1287
+ t("div", { class: "preview-main" }, [
1288
+ t("div", { class: "preview-header" }),
1289
+ t("div", { class: "preview-content" })
1290
+ ], -1)
1291
+ ])])) : n.value === "top" ? (i(), _("div", ho, [...b[8] || (b[8] = [
1292
+ t("div", { class: "preview-header-full" }, null, -1),
1293
+ t("div", { class: "preview-content-full" }, null, -1)
1294
+ ])])) : (i(), _("div", fo, [...b[9] || (b[9] = [
1295
+ t("div", { class: "preview-header-mix" }, [
1296
+ t("div", { class: "preview-mix-left" })
1297
+ ], -1),
1298
+ t("div", { class: "preview-mix-body" }, [
1299
+ t("div", { class: "preview-mix-aside" }),
1300
+ t("div", { class: "preview-mix-content" })
1301
+ ], -1)
1302
+ ])]))
1303
+ ]),
1304
+ t("span", go, x(n.label), 1)
1305
+ ], 10, po)), 64))
1306
+ ])
1307
+ ]),
1308
+ t("div", yo, [
1309
+ b[11] || (b[11] = t("div", { class: "settings-title" }, "主题色", -1)),
1310
+ t("div", ko, [
1311
+ (i(), _(q, null, W(ie, (n) => t("div", {
1312
+ key: n.value,
1313
+ class: K(["color-option", { "is-active": l(a).primaryColor === n.value }]),
1314
+ style: ze({ backgroundColor: n.value }),
1315
+ title: n.label,
1316
+ onClick: (O) => ve(n.value)
1317
+ }, [
1318
+ l(a).primaryColor === n.value ? (i(), A(l(E), {
1319
+ key: 0,
1320
+ name: "check",
1321
+ size: 12,
1322
+ color: "#fff"
1323
+ })) : j("", !0)
1324
+ ], 14, bo)), 64))
1325
+ ])
1326
+ ]),
1327
+ t("div", wo, [
1328
+ b[16] || (b[16] = t("div", { class: "settings-title" }, "功能设置", -1)),
1329
+ t("div", Co, [
1330
+ t("div", xo, [
1331
+ b[13] || (b[13] = t("span", null, "灰色模式", -1)),
1332
+ t("div", {
1333
+ class: K(["switch-wrapper", { "is-checked": R.value }]),
1334
+ onClick: se
1335
+ }, [...b[12] || (b[12] = [
1336
+ t("span", { class: "switch-core" }, null, -1)
1337
+ ])], 2)
1338
+ ]),
1339
+ t("div", $o, [
1340
+ b[15] || (b[15] = t("span", null, "暗黑模式", -1)),
1341
+ t("div", {
1342
+ class: K(["switch-wrapper", { "is-checked": l(a).isDark }]),
1343
+ onClick: me
1344
+ }, [...b[14] || (b[14] = [
1345
+ t("span", { class: "switch-core" }, null, -1)
1346
+ ])], 2)
1347
+ ])
1348
+ ])
1349
+ ])
1350
+ ])
1351
+ ]),
1352
+ _: 1
1353
+ }, 8, ["modelValue"])
1354
+ ]);
1355
+ };
1356
+ }
1357
+ }), Io = /* @__PURE__ */ X(So, [["__scopeId", "data-v-a7eeb703"]]), Lo = {
1358
+ key: 1,
1359
+ class: "layout__top-menu"
1360
+ }, To = { class: "layout__main" }, Eo = {
1361
+ key: 0,
1362
+ class: "layout__header"
1363
+ }, No = { class: "layout__content" }, Mo = /* @__PURE__ */ Q({
1364
+ __name: "index",
1365
+ setup(e) {
1366
+ const s = te(), o = ae(), r = g(
1367
+ () => s.isCollapsed ? "64px" : "210px"
1368
+ ), a = g(() => s.layout), u = g(() => a.value === "sidebar" || a.value === "mix"), C = g(() => a.value === "top"), m = g(() => a.value !== "top"), p = g(() => (a.value !== "mix", o.menuList));
1369
+ return (d, v) => {
1370
+ const c = pt("router-view");
1371
+ return i(), _("div", {
1372
+ class: K(["layout", `layout--${a.value}`])
1373
+ }, [
1374
+ u.value ? (i(), _("aside", {
1375
+ key: 0,
1376
+ class: "layout__aside",
1377
+ style: ze({ width: r.value })
1378
+ }, [
1379
+ k(Wt, {
1380
+ "menu-list": a.value === "mix" ? p.value : l(o).menuList
1381
+ }, null, 8, ["menu-list"])
1382
+ ], 4)) : j("", !0),
1383
+ C.value ? (i(), _("div", Lo, [
1384
+ k(Io)
1385
+ ])) : j("", !0),
1386
+ t("div", To, [
1387
+ m.value ? (i(), _("header", Eo, [
1388
+ k(zs)
1389
+ ])) : j("", !0),
1390
+ t("main", No, [
1391
+ k(c)
1392
+ ])
1393
+ ])
1394
+ ], 2);
1395
+ };
1396
+ }
1397
+ }), at = /* @__PURE__ */ X(Mo, [["__scopeId", "data-v-7e8c7aeb"]]), Uo = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1398
+ __proto__: null,
1399
+ default: at
1400
+ }, Symbol.toStringTag, { value: "Module" })), Do = { class: "tabs-wrapper" }, Ro = { class: "tab-label" }, zo = ["onClick"], Po = /* @__PURE__ */ Q({
1401
+ __name: "Tabs",
1402
+ setup(e) {
1403
+ const s = de(), o = ee(), r = g(() => {
1404
+ const m = [];
1405
+ return s.matched.forEach((p) => {
1406
+ var d;
1407
+ (d = p.meta) != null && d.affix && m.push({
1408
+ name: p.name,
1409
+ title: p.meta.title,
1410
+ path: p.path,
1411
+ affix: !0
1412
+ });
1413
+ }), m;
1414
+ }), a = g(() => s.path), u = (m) => {
1415
+ o.push(m);
1416
+ }, C = (m) => {
1417
+ const p = r.value.find((d) => d.path === m);
1418
+ if (!(p != null && p.affix) && m === a.value) {
1419
+ const d = r.value.findIndex((c) => c.path === m), v = r.value[d - 1] || r.value[d + 1];
1420
+ v && o.push(v.path);
1421
+ }
1422
+ };
1423
+ return (m, p) => (i(), _("div", Do, [
1424
+ k(l(vt), {
1425
+ modelValue: a.value,
1426
+ "onUpdate:modelValue": p[0] || (p[0] = (d) => a.value = d),
1427
+ type: "card",
1428
+ onTabClick: u
1429
+ }, {
1430
+ default: $(() => [
1431
+ (i(!0), _(q, null, W(r.value, (d) => (i(), A(l(_t), {
1432
+ key: d.path,
1433
+ name: d.path,
1434
+ label: d.title,
1435
+ closable: !d.affix
1436
+ }, {
1437
+ label: $(() => [
1438
+ t("span", Ro, [
1439
+ ne(x(d.title) + " ", 1),
1440
+ d.affix ? j("", !0) : (i(), _("span", {
1441
+ key: 0,
1442
+ class: "tab-close",
1443
+ onClick: Re((v) => C(d.path), ["stop"])
1444
+ }, " ✕ ", 8, zo))
1445
+ ])
1446
+ ]),
1447
+ _: 2
1448
+ }, 1032, ["name", "label", "closable"]))), 128))
1449
+ ]),
1450
+ _: 1
1451
+ }, 8, ["modelValue"])
1452
+ ]));
1453
+ }
1454
+ }), In = /* @__PURE__ */ X(Po, [["__scopeId", "data-v-9156d8cd"]]), Oo = {}, Ao = { class: "footer" };
1455
+ function Vo(e, s) {
1456
+ return i(), _("div", Ao, [...s[0] || (s[0] = [
1457
+ t("span", null, "Copyright © 2024 Xto Demo. All Rights Reserved.", -1)
1458
+ ])]);
1459
+ }
1460
+ const Ln = /* @__PURE__ */ X(Oo, [["render", Vo], ["__scopeId", "data-v-4852826a"]]), Fo = () => {
1461
+ const e = gt.create({
1462
+ baseURL: void 0,
1463
+ timeout: 3e4,
1464
+ headers: {
1465
+ "Content-Type": "application/json"
1466
+ }
1467
+ });
1468
+ return e.interceptors.request.use(
1469
+ (s) => {
1470
+ const o = Se(), r = bt() || "Bearer";
1471
+ return o && (s.headers.Authorization = `${r} ${o}`), s;
1472
+ },
1473
+ (s) => Promise.reject(s)
1474
+ ), e.interceptors.response.use(
1475
+ (s) => {
1476
+ const { data: o } = s;
1477
+ return o.code === 200 || o.code === 0 ? o.data : (J.error(o.message || "请求失败"), Promise.reject(new Error(o.message || "请求失败")));
1478
+ },
1479
+ (s) => {
1480
+ var r;
1481
+ const { response: o } = s;
1482
+ if (o)
1483
+ switch (o.status) {
1484
+ case 401:
1485
+ J.error("登录已过期,请重新登录"), ot(), window.location.href = "/login";
1486
+ break;
1487
+ case 403:
1488
+ J.error("没有权限访问");
1489
+ break;
1490
+ case 404:
1491
+ J.error("请求资源不存在");
1492
+ break;
1493
+ case 500:
1494
+ J.error("服务器错误");
1495
+ break;
1496
+ default:
1497
+ J.error(((r = o.data) == null ? void 0 : r.message) || "请求失败");
1498
+ }
1499
+ else
1500
+ J.error("网络连接失败");
1501
+ return Promise.reject(s);
1502
+ }
1503
+ ), e;
1504
+ }, ce = Fo(), U = {
1505
+ get(e, s) {
1506
+ return ce.get(e, s);
1507
+ },
1508
+ post(e, s, o) {
1509
+ return ce.post(e, s, o);
1510
+ },
1511
+ put(e, s, o) {
1512
+ return ce.put(e, s, o);
1513
+ },
1514
+ patch(e, s, o) {
1515
+ return ce.patch(e, s, o);
1516
+ },
1517
+ delete(e, s) {
1518
+ return ce.delete(e, s);
1519
+ }
1520
+ };
1521
+ function Bo(e) {
1522
+ return U.post("/user/v1.0/login/by-domain", e);
1523
+ }
1524
+ function Tn() {
1525
+ return U.put("/user/v1.0/user/logout");
1526
+ }
1527
+ function Ko() {
1528
+ return U.get("/user/v1.0/user/get-me");
1529
+ }
1530
+ function En(e) {
1531
+ return U.post("/user/v1.0/refresh", { refreshToken: e });
1532
+ }
1533
+ const ke = h(""), be = h(""), we = h("");
1534
+ function Nn(e) {
1535
+ e.appId && (ke.value = e.appId), e.clientId && (be.value = e.clientId), e.apiBaseUrl && (we.value = e.apiBaseUrl);
1536
+ }
1537
+ function Ye() {
1538
+ if (ke.value)
1539
+ return ke.value;
1540
+ try {
1541
+ return "";
1542
+ } catch {
1543
+ return "";
1544
+ }
1545
+ }
1546
+ function jo() {
1547
+ if (be.value)
1548
+ return be.value;
1549
+ try {
1550
+ return "";
1551
+ } catch {
1552
+ return "";
1553
+ }
1554
+ }
1555
+ function Mn() {
1556
+ if (we.value)
1557
+ return we.value;
1558
+ try {
1559
+ return "";
1560
+ } catch {
1561
+ return "";
1562
+ }
1563
+ }
1564
+ const Un = {
1565
+ appId: ke,
1566
+ clientId: be,
1567
+ apiBaseUrl: we
1568
+ }, qo = { class: "login" }, Yo = { class: "login__container" }, Wo = /* @__PURE__ */ Q({
1569
+ __name: "index",
1570
+ setup(e) {
1571
+ const s = ee(), o = de(), r = h(!1), a = h(!1), u = Pe({
1572
+ uid: "",
1573
+ password: ""
1574
+ }), C = {
1575
+ uid: [
1576
+ { required: !0, message: "请输入用户名", trigger: "blur" }
1577
+ ],
1578
+ password: [
1579
+ { required: !0, message: "请输入密码", trigger: "blur" },
1580
+ { min: 6, message: "密码长度至少6位", trigger: "blur" }
1581
+ ]
1582
+ }, m = h(), p = async () => {
1583
+ var d;
1584
+ try {
1585
+ await ((d = m.value) == null ? void 0 : d.validate()), r.value = !0;
1586
+ const v = await Bo({
1587
+ appId: Ye(),
1588
+ clientId: jo(),
1589
+ uid: u.uid,
1590
+ password: u.password,
1591
+ code: !0
1592
+ });
1593
+ st(v), J.success("登录成功");
1594
+ const c = o.query.redirect || "/";
1595
+ s.push(c);
1596
+ } catch (v) {
1597
+ console.error("登录失败:", v);
1598
+ } finally {
1599
+ r.value = !1;
1600
+ }
1601
+ };
1602
+ return (d, v) => (i(), _("div", qo, [
1603
+ t("div", Yo, [
1604
+ v[5] || (v[5] = t("div", { class: "login__header" }, [
1605
+ t("img", {
1606
+ src: $e,
1607
+ alt: "Logo",
1608
+ class: "login__logo"
1609
+ }),
1610
+ t("h1", { class: "login__title" }, "Xto Demo"),
1611
+ t("p", { class: "login__subtitle" }, "后台管理系统")
1612
+ ], -1)),
1613
+ k(l(ht), {
1614
+ ref_key: "formRef",
1615
+ ref: m,
1616
+ model: u,
1617
+ rules: C,
1618
+ class: "login__form",
1619
+ "label-width": "0"
1620
+ }, {
1621
+ default: $(() => [
1622
+ k(l(he), { prop: "uid" }, {
1623
+ default: $(() => [
1624
+ k(l(We), {
1625
+ modelValue: u.uid,
1626
+ "onUpdate:modelValue": v[0] || (v[0] = (c) => u.uid = c),
1627
+ placeholder: "用户名",
1628
+ size: "large"
1629
+ }, {
1630
+ prefix: $(() => [
1631
+ k(l(E), {
1632
+ name: "user",
1633
+ size: 18
1634
+ })
1635
+ ]),
1636
+ _: 1
1637
+ }, 8, ["modelValue"])
1638
+ ]),
1639
+ _: 1
1640
+ }),
1641
+ k(l(he), { prop: "password" }, {
1642
+ default: $(() => [
1643
+ k(l(We), {
1644
+ modelValue: u.password,
1645
+ "onUpdate:modelValue": v[1] || (v[1] = (c) => u.password = c),
1646
+ type: "password",
1647
+ placeholder: "密码",
1648
+ size: "large",
1649
+ "show-password": "",
1650
+ onKeyup: Je(p, ["enter"])
1651
+ }, {
1652
+ prefix: $(() => [
1653
+ k(l(E), {
1654
+ name: "lock",
1655
+ size: 18
1656
+ })
1657
+ ]),
1658
+ _: 1
1659
+ }, 8, ["modelValue"])
1660
+ ]),
1661
+ _: 1
1662
+ }),
1663
+ k(l(he), null, {
1664
+ default: $(() => [
1665
+ k(l(ft), {
1666
+ modelValue: a.value,
1667
+ "onUpdate:modelValue": v[2] || (v[2] = (c) => a.value = c)
1668
+ }, {
1669
+ default: $(() => [...v[3] || (v[3] = [
1670
+ ne("记住我", -1)
1671
+ ])]),
1672
+ _: 1
1673
+ }, 8, ["modelValue"])
1674
+ ]),
1675
+ _: 1
1676
+ }),
1677
+ k(l(he), null, {
1678
+ default: $(() => [
1679
+ k(l(xe), {
1680
+ type: "primary",
1681
+ size: "large",
1682
+ loading: r.value,
1683
+ class: "login__submit",
1684
+ onClick: p
1685
+ }, {
1686
+ default: $(() => [...v[4] || (v[4] = [
1687
+ ne(" 登录 ", -1)
1688
+ ])]),
1689
+ _: 1
1690
+ }, 8, ["loading"])
1691
+ ]),
1692
+ _: 1
1693
+ })
1694
+ ]),
1695
+ _: 1
1696
+ }, 8, ["model"]),
1697
+ v[6] || (v[6] = t("div", { class: "login__footer" }, [
1698
+ t("p", null, "请输入您的用户名和密码")
1699
+ ], -1))
1700
+ ])
1701
+ ]));
1702
+ }
1703
+ }), Ho = /* @__PURE__ */ X(Wo, [["__scopeId", "data-v-f3e724b6"]]), Xo = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1704
+ __proto__: null,
1705
+ default: Ho
1706
+ }, Symbol.toStringTag, { value: "Module" })), Go = { class: "error-page" }, Jo = { class: "error-page__content" }, Qo = /* @__PURE__ */ Q({
1707
+ __name: "404",
1708
+ setup(e) {
1709
+ const s = ee(), o = () => {
1710
+ s.push("/");
1711
+ };
1712
+ return (r, a) => (i(), _("div", Go, [
1713
+ t("div", Jo, [
1714
+ a[1] || (a[1] = t("div", { class: "error-page__code" }, "404", -1)),
1715
+ a[2] || (a[2] = t("div", { class: "error-page__title" }, "页面不存在", -1)),
1716
+ a[3] || (a[3] = t("div", { class: "error-page__desc" }, "抱歉,您访问的页面不存在或已被删除", -1)),
1717
+ k(l(xe), {
1718
+ type: "primary",
1719
+ onClick: o
1720
+ }, {
1721
+ default: $(() => [...a[0] || (a[0] = [
1722
+ ne("返回首页", -1)
1723
+ ])]),
1724
+ _: 1
1725
+ })
1726
+ ])
1727
+ ]));
1728
+ }
1729
+ }), Zo = /* @__PURE__ */ X(Qo, [["__scopeId", "data-v-c3c12c24"]]), en = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1730
+ __proto__: null,
1731
+ default: Zo
1732
+ }, Symbol.toStringTag, { value: "Module" })), tn = { class: "error-page" }, sn = { class: "error-page__content" }, on = /* @__PURE__ */ Q({
1733
+ __name: "403",
1734
+ setup(e) {
1735
+ const s = ee(), o = () => {
1736
+ s.push("/");
1737
+ };
1738
+ return (r, a) => (i(), _("div", tn, [
1739
+ t("div", sn, [
1740
+ a[1] || (a[1] = t("div", { class: "error-page__code" }, "403", -1)),
1741
+ a[2] || (a[2] = t("div", { class: "error-page__title" }, "无访问权限", -1)),
1742
+ a[3] || (a[3] = t("div", { class: "error-page__desc" }, "抱歉,您没有权限访问此页面", -1)),
1743
+ k(l(xe), {
1744
+ type: "primary",
1745
+ onClick: o
1746
+ }, {
1747
+ default: $(() => [...a[0] || (a[0] = [
1748
+ ne("返回首页", -1)
1749
+ ])]),
1750
+ _: 1
1751
+ })
1752
+ ])
1753
+ ]));
1754
+ }
1755
+ }), nn = /* @__PURE__ */ X(on, [["__scopeId", "data-v-dd5f2795"]]), an = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1756
+ __proto__: null,
1757
+ default: nn
1758
+ }, Symbol.toStringTag, { value: "Module" }));
1759
+ function Dn() {
1760
+ const e = te(), s = H(), o = Ie(), r = g(() => s.userName || ""), a = g(() => s.userInfo), u = g(() => e.appName), C = g(() => o.isLoggedIn), m = g(() => e.isDark), p = g(() => e.theme), d = g(() => e.isCollapsed), v = g(() => e.layout);
1761
+ return {
1762
+ userName: r,
1763
+ userInfo: a,
1764
+ appName: u,
1765
+ isLoggedIn: C,
1766
+ isDark: m,
1767
+ theme: p,
1768
+ isCollapsed: d,
1769
+ layout: v,
1770
+ toggleTheme: () => {
1771
+ e.toggleTheme();
1772
+ },
1773
+ toggleCollapse: () => {
1774
+ e.toggleCollapse();
1775
+ }
1776
+ };
1777
+ }
1778
+ function Rn() {
1779
+ const e = H();
1780
+ return {
1781
+ isLoggedIn: g(() => e.isLoggedIn)
1782
+ };
1783
+ }
1784
+ function zn(e, s = {}) {
1785
+ const { rules: o, onSubmit: r } = s, a = h(), u = Pe({ ...e }), C = h(!1), m = h(!1), p = h(!1), d = () => {
1786
+ y(), p.value = !1, m.value = !0;
1787
+ }, v = (L) => {
1788
+ Object.assign(u, L), p.value = !0, m.value = !0;
1789
+ }, c = () => {
1790
+ m.value = !1, y();
1791
+ }, y = () => {
1792
+ var L;
1793
+ Object.keys(e).forEach((R) => {
1794
+ u[R] = e[R];
1795
+ }), (L = a.value) == null || L.resetFields();
1796
+ };
1797
+ return {
1798
+ formRef: a,
1799
+ formData: u,
1800
+ rules: o,
1801
+ loading: C,
1802
+ visible: m,
1803
+ isEdit: p,
1804
+ openAdd: d,
1805
+ openEdit: v,
1806
+ close: c,
1807
+ resetForm: y,
1808
+ handleSubmit: async () => {
1809
+ var L;
1810
+ try {
1811
+ await ((L = a.value) == null ? void 0 : L.validate()), C.value = !0, await (r == null ? void 0 : r(u)), c();
1812
+ } catch (R) {
1813
+ console.error(R);
1814
+ } finally {
1815
+ C.value = !1;
1816
+ }
1817
+ }
1818
+ };
1819
+ }
1820
+ function Pn(e) {
1821
+ const { fetchData: s, defaultPageSize: o = 10 } = e, r = h(!1), a = h([]), u = h(0), C = h(1), m = h(o), p = Pe({}), d = async () => {
1822
+ r.value = !0;
1823
+ try {
1824
+ const D = {
1825
+ ...p,
1826
+ page: C.value,
1827
+ pageSize: m.value
1828
+ }, z = await s(D);
1829
+ a.value = z.list, u.value = z.total;
1830
+ } catch (D) {
1831
+ console.error(D);
1832
+ } finally {
1833
+ r.value = !1;
1834
+ }
1835
+ }, v = () => {
1836
+ C.value = 1, d();
1837
+ }, c = () => {
1838
+ Object.keys(p).forEach((D) => {
1839
+ p[D] = void 0;
1840
+ }), C.value = 1, d();
1841
+ }, y = (D) => {
1842
+ C.value = D, d();
1843
+ }, V = (D) => {
1844
+ m.value = D, C.value = 1, d();
1845
+ }, L = () => {
1846
+ d();
1847
+ }, R = g(() => ({
1848
+ current: C.value,
1849
+ pageSize: m.value,
1850
+ total: u.value
1851
+ }));
1852
+ return {
1853
+ loading: r,
1854
+ data: a,
1855
+ total: u,
1856
+ currentPage: C,
1857
+ pageSize: m,
1858
+ searchParams: p,
1859
+ pagination: R,
1860
+ getData: d,
1861
+ handleSearch: v,
1862
+ handleReset: c,
1863
+ handlePageChange: y,
1864
+ handleSizeChange: V,
1865
+ refresh: L
1866
+ };
1867
+ }
1868
+ function On(e) {
1869
+ return H().isLoggedIn;
1870
+ }
1871
+ function An(e) {
1872
+ return H().isLoggedIn;
1873
+ }
1874
+ function Vn() {
1875
+ return !0;
1876
+ }
1877
+ const lt = [
1878
+ {
1879
+ path: "/login",
1880
+ name: "Login",
1881
+ component: () => Promise.resolve().then(() => Xo),
1882
+ meta: {
1883
+ title: "登录",
1884
+ hidden: !0
1885
+ }
1886
+ },
1887
+ {
1888
+ path: "/404",
1889
+ name: "NotFound",
1890
+ component: () => Promise.resolve().then(() => en),
1891
+ meta: {
1892
+ title: "404",
1893
+ hidden: !0
1894
+ }
1895
+ },
1896
+ {
1897
+ path: "/403",
1898
+ name: "Forbidden",
1899
+ component: () => Promise.resolve().then(() => an),
1900
+ meta: {
1901
+ title: "403",
1902
+ hidden: !0
1903
+ }
1904
+ }
1905
+ ], rt = {
1906
+ path: "/:pathMatch(.*)*",
1907
+ redirect: "/404",
1908
+ meta: {
1909
+ hidden: !0
1910
+ }
1911
+ }, it = {
1912
+ path: "/",
1913
+ name: "Layout",
1914
+ component: () => Promise.resolve().then(() => Uo),
1915
+ redirect: "/dashboard",
1916
+ children: [
1917
+ {
1918
+ path: "/dashboard",
1919
+ name: "Dashboard",
1920
+ component: () => import("./index-DwzGV3B9.js"),
1921
+ meta: {
1922
+ title: "仪表盘",
1923
+ icon: "dashboard",
1924
+ keepAlive: !0,
1925
+ affix: !0
1926
+ }
1927
+ },
1928
+ {
1929
+ path: "/system/user",
1930
+ name: "SystemUser",
1931
+ component: () => import("./index-DWI51JAp.js"),
1932
+ meta: {
1933
+ title: "用户管理",
1934
+ icon: "user",
1935
+ keepAlive: !0
1936
+ }
1937
+ },
1938
+ {
1939
+ path: "/system/role",
1940
+ name: "SystemRole",
1941
+ component: () => import("./index-B4Wny0vt.js"),
1942
+ meta: {
1943
+ title: "角色管理",
1944
+ icon: "role",
1945
+ keepAlive: !0
1946
+ }
1947
+ },
1948
+ {
1949
+ path: "/system/menu",
1950
+ name: "SystemMenu",
1951
+ component: () => import("./index-BeUYNx5P.js"),
1952
+ meta: {
1953
+ title: "菜单管理",
1954
+ icon: "menu",
1955
+ keepAlive: !0
1956
+ }
1957
+ }
1958
+ ]
1959
+ }, Fn = [
1960
+ {
1961
+ path: "/dashboard",
1962
+ name: "Dashboard",
1963
+ component: () => import("./index-DwzGV3B9.js"),
1964
+ meta: {
1965
+ title: "仪表盘",
1966
+ icon: "dashboard",
1967
+ keepAlive: !0,
1968
+ affix: !0
1969
+ }
1970
+ },
1971
+ {
1972
+ path: "/system",
1973
+ name: "System",
1974
+ redirect: "/system/user",
1975
+ meta: {
1976
+ title: "系统管理",
1977
+ icon: "setting"
1978
+ },
1979
+ children: [
1980
+ {
1981
+ path: "user",
1982
+ name: "SystemUser",
1983
+ component: () => import("./index-DWI51JAp.js"),
1984
+ meta: {
1985
+ title: "用户管理",
1986
+ icon: "user",
1987
+ keepAlive: !0
1988
+ }
1989
+ },
1990
+ {
1991
+ path: "role",
1992
+ name: "SystemRole",
1993
+ component: () => import("./index-B4Wny0vt.js"),
1994
+ meta: {
1995
+ title: "角色管理",
1996
+ icon: "role",
1997
+ keepAlive: !0
1998
+ }
1999
+ },
2000
+ {
2001
+ path: "menu",
2002
+ name: "SystemMenu",
2003
+ component: () => import("./index-BeUYNx5P.js"),
2004
+ meta: {
2005
+ title: "菜单管理",
2006
+ icon: "menu",
2007
+ keepAlive: !0
2008
+ }
2009
+ }
2010
+ ]
2011
+ }
2012
+ ], ln = [
2013
+ {
2014
+ menuCode: "dashboard",
2015
+ menuName: "仪表盘",
2016
+ menuUrl: "/dashboard",
2017
+ icon: "dashboard",
2018
+ closable: !0,
2019
+ isDefault: !0,
2020
+ isOut: !1
2021
+ },
2022
+ {
2023
+ menuCode: "system",
2024
+ menuName: "系统管理",
2025
+ menuUrl: "/system",
2026
+ icon: "setting",
2027
+ closable: !1,
2028
+ isDefault: !1,
2029
+ isOut: !1,
2030
+ children: [
2031
+ {
2032
+ menuCode: "system_user",
2033
+ menuName: "用户管理",
2034
+ menuUrl: "/system/user",
2035
+ icon: "user",
2036
+ closable: !0,
2037
+ isDefault: !1,
2038
+ isOut: !1
2039
+ },
2040
+ {
2041
+ menuCode: "system_role",
2042
+ menuName: "角色管理",
2043
+ menuUrl: "/system/role",
2044
+ icon: "role",
2045
+ closable: !0,
2046
+ isDefault: !1,
2047
+ isOut: !1
2048
+ },
2049
+ {
2050
+ menuCode: "system_menu",
2051
+ menuName: "菜单管理",
2052
+ menuUrl: "/system/menu",
2053
+ icon: "menu",
2054
+ closable: !0,
2055
+ isDefault: !1,
2056
+ isOut: !1
2057
+ }
2058
+ ]
2059
+ }
2060
+ ], ut = Oe({
2061
+ history: Ae(),
2062
+ routes: [...lt, it, rt],
2063
+ scrollBehavior: () => ({ left: 0, top: 0 })
2064
+ }), rn = ["/login", "/404", "/403"];
2065
+ ut.beforeEach(async (e, s, o) => {
2066
+ const r = te();
2067
+ if (r.initTheme(), nt())
2068
+ if (e.path === "/login")
2069
+ o({ path: "/" });
2070
+ else {
2071
+ const a = H();
2072
+ a.isLoggedIn || (a.setUserInfo({
2073
+ appId: Ye(),
2074
+ userId: "1",
2075
+ userName: "管理员",
2076
+ departmentName: "技术部",
2077
+ email: "admin@example.com",
2078
+ mobilePhone: "13800138000",
2079
+ positionName: "管理员",
2080
+ avatar: ""
2081
+ }), ae().setMenuList(ln)), e.name && e.meta.keepAlive && r.addCachedView(e.name), o();
2082
+ }
2083
+ else
2084
+ rn.includes(e.path) ? o() : o("/login");
2085
+ });
2086
+ function Bn() {
2087
+ const e = Oe({
2088
+ history: Ae(),
2089
+ routes: [...lt, it, rt]
2090
+ });
2091
+ ut.matcher = e.matcher;
2092
+ }
2093
+ function Kn(e, s = {}) {
2094
+ const o = s.indexPath || "/dashboard";
2095
+ return {
2096
+ path: "/",
2097
+ name: "Layout",
2098
+ component: at,
2099
+ redirect: o,
2100
+ children: e
2101
+ };
2102
+ }
2103
+ function jn(e) {
2104
+ return Oe({
2105
+ history: Ae(),
2106
+ routes: e,
2107
+ scrollBehavior: () => ({ left: 0, top: 0 })
2108
+ });
2109
+ }
2110
+ function qn(e) {
2111
+ return U.get("/role/list", { params: e });
2112
+ }
2113
+ function Yn(e) {
2114
+ return U.get(`/role/${e}`);
2115
+ }
2116
+ function Wn(e) {
2117
+ return U.post("/role", e);
2118
+ }
2119
+ function Hn(e, s) {
2120
+ return U.put(`/role/${e}`, s);
2121
+ }
2122
+ function Xn(e) {
2123
+ return U.delete(`/role/${e}`);
2124
+ }
2125
+ function Gn(e, s) {
2126
+ return U.patch(`/role/${e}/status`, { status: s });
2127
+ }
2128
+ function Jn() {
2129
+ return U.get("/user/v1.0/menu/list");
2130
+ }
2131
+ function un(e) {
2132
+ const s = e || Ye();
2133
+ return U.get(`/user/v1.0/menu/get-menu?appId=${s}`);
2134
+ }
2135
+ function Qn(e) {
2136
+ return U.post("/menu", e);
2137
+ }
2138
+ function Zn(e, s) {
2139
+ return U.put(`/menu/${e}`, s);
2140
+ }
2141
+ function ea(e) {
2142
+ return U.delete(`/menu/${e}`);
2143
+ }
2144
+ const cn = ["/login", "/404", "/403"];
2145
+ function ta(e, s = {}) {
2146
+ const o = s.whiteList || cn, r = s.loginPath || "/login", a = s.homePath || "/";
2147
+ e.beforeEach(async (u, C, m) => {
2148
+ const p = te(), d = H(), v = ae();
2149
+ if (p.initTheme(), Se())
2150
+ if (u.path === r)
2151
+ m({ path: a });
2152
+ else if (d.isLoggedIn)
2153
+ u.name && u.meta.keepAlive && p.addCachedView(u.name), m();
2154
+ else
2155
+ try {
2156
+ if (s.fetchUserInfo) {
2157
+ const y = await s.fetchUserInfo();
2158
+ d.setUserInfo(y);
2159
+ } else {
2160
+ const y = await Ko();
2161
+ d.setUserInfo(y);
2162
+ }
2163
+ if (s.fetchMenu) {
2164
+ const y = await s.fetchMenu();
2165
+ v.setMenuList(y);
2166
+ } else {
2167
+ const y = await un(s.appId);
2168
+ v.setMenuList(y);
2169
+ }
2170
+ s.onLoginSuccess && s.onLoginSuccess(), u.name && u.meta.keepAlive && p.addCachedView(u.name), m({ ...u, replace: !0 });
2171
+ } catch (y) {
2172
+ console.error("获取用户信息失败:", y), d.clearUserInfo(), v.clearMenu(), localStorage.removeItem("token"), localStorage.removeItem("token_type"), localStorage.removeItem("refresh_token"), m({ path: r, query: { redirect: u.fullPath } });
2173
+ }
2174
+ else
2175
+ o.includes(u.path) ? m() : m({ path: r, query: { redirect: u.fullPath } });
2176
+ }), e.afterEach(() => {
2177
+ });
2178
+ }
2179
+ function sa(e) {
2180
+ return U.get("/user/list", { params: e });
2181
+ }
2182
+ function oa(e) {
2183
+ return U.get(`/user/${e}`);
2184
+ }
2185
+ function na(e) {
2186
+ return U.post("/user", e);
2187
+ }
2188
+ function aa(e, s) {
2189
+ return U.put(`/user/${e}`, s);
2190
+ }
2191
+ function la(e) {
2192
+ return U.delete(`/user/${e}`);
2193
+ }
2194
+ function ra(e) {
2195
+ return U.post("/user/batch-delete", { ids: e });
2196
+ }
2197
+ function ia(e, s) {
2198
+ return U.patch(`/user/${e}/status`, { status: s });
2199
+ }
2200
+ function ua(e) {
2201
+ return U.post(`/user/${e}/reset-password`);
2202
+ }
2203
+ var dn = /* @__PURE__ */ ((e) => (e[e.ENABLED = 1] = "ENABLED", e[e.DISABLED = 0] = "DISABLED", e))(dn || {}), mn = /* @__PURE__ */ ((e) => (e[e.UNKNOWN = 0] = "UNKNOWN", e[e.MALE = 1] = "MALE", e[e.FEMALE = 2] = "FEMALE", e))(mn || {}), pn = /* @__PURE__ */ ((e) => (e[e.DIRECTORY = 0] = "DIRECTORY", e[e.MENU = 1] = "MENU", e[e.BUTTON = 2] = "BUTTON", e))(pn || {});
2204
+ const ca = {
2205
+ 1: "启用",
2206
+ 0: "禁用"
2207
+ }, da = {
2208
+ 0: "未知",
2209
+ 1: "男",
2210
+ 2: "女"
2211
+ }, ma = {
2212
+ 0: "目录",
2213
+ 1: "菜单",
2214
+ 2: "按钮"
2215
+ }, pa = [
2216
+ {
2217
+ label: "启用",
2218
+ value: 1
2219
+ /* ENABLED */
2220
+ },
2221
+ {
2222
+ label: "禁用",
2223
+ value: 0
2224
+ /* DISABLED */
2225
+ }
2226
+ ], va = [
2227
+ {
2228
+ label: "未知",
2229
+ value: 0
2230
+ /* UNKNOWN */
2231
+ },
2232
+ {
2233
+ label: "男",
2234
+ value: 1
2235
+ /* MALE */
2236
+ },
2237
+ {
2238
+ label: "女",
2239
+ value: 2
2240
+ /* FEMALE */
2241
+ }
2242
+ ], _a = [
2243
+ {
2244
+ label: "目录",
2245
+ value: 0
2246
+ /* DIRECTORY */
2247
+ },
2248
+ {
2249
+ label: "菜单",
2250
+ value: 1
2251
+ /* MENU */
2252
+ },
2253
+ {
2254
+ label: "按钮",
2255
+ value: 2
2256
+ /* BUTTON */
2257
+ }
2258
+ ], ha = {
2259
+ mounted(e, s) {
2260
+ var r;
2261
+ H().isLoggedIn || (r = e.parentNode) == null || r.removeChild(e);
2262
+ }
2263
+ };
2264
+ export {
2265
+ Lt as $,
2266
+ Sn as A,
2267
+ Jn as B,
2268
+ un as C,
2269
+ $n as D,
2270
+ xn as E,
2271
+ Ln as F,
2272
+ mn as G,
2273
+ zs as H,
2274
+ Yn as I,
2275
+ qn as J,
2276
+ Se as K,
2277
+ at as L,
2278
+ pn as M,
2279
+ xt as N,
2280
+ bt as O,
2281
+ oa as P,
2282
+ Ko as Q,
2283
+ sa as R,
2284
+ dn as S,
2285
+ In as T,
2286
+ On as U,
2287
+ An as V,
2288
+ nt as W,
2289
+ U as X,
2290
+ Nn as Y,
2291
+ Vn as Z,
2292
+ X as _,
2293
+ pa as a,
2294
+ it as a0,
2295
+ f as a1,
2296
+ fe as a2,
2297
+ Bo as a3,
2298
+ Tn as a4,
2299
+ ln as a5,
2300
+ ha as a6,
2301
+ En as a7,
2302
+ ua as a8,
2303
+ Bn as a9,
2304
+ ut as aa,
2305
+ Cn as ab,
2306
+ ge as ac,
2307
+ It as ad,
2308
+ St as ae,
2309
+ Ct as af,
2310
+ kt as ag,
2311
+ $t as ah,
2312
+ st as ai,
2313
+ wt as aj,
2314
+ ta as ak,
2315
+ lt as al,
2316
+ Zn as am,
2317
+ Hn as an,
2318
+ Gn as ao,
2319
+ aa as ap,
2320
+ ia as aq,
2321
+ Dn as ar,
2322
+ te as as,
2323
+ Rn as at,
2324
+ Ie as au,
2325
+ zn as av,
2326
+ ae as aw,
2327
+ Pn as ax,
2328
+ H as ay,
2329
+ _a as b,
2330
+ nn as c,
2331
+ va as d,
2332
+ da as e,
2333
+ ma as f,
2334
+ Zo as g,
2335
+ Wt as h,
2336
+ Ho as i,
2337
+ ca as j,
2338
+ Un as k,
2339
+ ra as l,
2340
+ ot as m,
2341
+ Kn as n,
2342
+ Qn as o,
2343
+ Wn as p,
2344
+ jn as q,
2345
+ na as r,
2346
+ Fn as s,
2347
+ ea as t,
2348
+ Xn as u,
2349
+ la as v,
2350
+ rt as w,
2351
+ Mn as x,
2352
+ Ye as y,
2353
+ jo as z
2354
+ };