@sugarat/easypicker2-client 2.7.3 → 2.8.1

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 (391) hide show
  1. package/dist/assets/aria-legacy-B70JmEZA.js.map +1 -1
  2. package/dist/assets/aria-nkjrUMQ-.js.map +1 -1
  3. package/dist/assets/config-CDHxxo7b.js +2 -0
  4. package/dist/assets/config-CDHxxo7b.js.map +1 -0
  5. package/dist/assets/config-CnEgj70a.css +1 -0
  6. package/dist/assets/config-legacy-n3sQ5kGn.js +2 -0
  7. package/dist/assets/config-legacy-n3sQ5kGn.js.map +1 -0
  8. package/dist/assets/{data-analysis-Bnq_VWU8.js → data-analysis-DBnVKJmJ.js} +2 -2
  9. package/dist/assets/data-analysis-DBnVKJmJ.js.map +1 -0
  10. package/dist/assets/{data-analysis-legacy-_KcR253K.js → data-analysis-legacy-4qD1YhB2.js} +2 -2
  11. package/dist/assets/data-analysis-legacy-4qD1YhB2.js.map +1 -0
  12. package/dist/assets/{data-board-L3s5ouKd.js → data-board-DeJXppeB.js} +2 -2
  13. package/dist/assets/data-board-DeJXppeB.js.map +1 -0
  14. package/dist/assets/{data-board-legacy-BFxWeFnQ.js → data-board-legacy-8OJulkyJ.js} +2 -2
  15. package/dist/assets/data-board-legacy-8OJulkyJ.js.map +1 -0
  16. package/dist/assets/delete-filled-DvkAD61M.js +2 -0
  17. package/dist/assets/delete-filled-DvkAD61M.js.map +1 -0
  18. package/dist/assets/delete-filled-legacy-BhHT0v2W.js +2 -0
  19. package/dist/assets/delete-filled-legacy-BhHT0v2W.js.map +1 -0
  20. package/dist/assets/el-date-picker-BX8jtnY2.js +2 -0
  21. package/dist/assets/el-date-picker-BX8jtnY2.js.map +1 -0
  22. package/dist/assets/el-date-picker-legacy-iQW0501V.js +2 -0
  23. package/dist/assets/el-date-picker-legacy-iQW0501V.js.map +1 -0
  24. package/dist/assets/el-dropdown-item-BQ-7lFIb.js +2 -0
  25. package/dist/assets/el-dropdown-item-BQ-7lFIb.js.map +1 -0
  26. package/dist/assets/el-dropdown-item-legacy-D5N_3F3d.js +2 -0
  27. package/dist/assets/el-dropdown-item-legacy-D5N_3F3d.js.map +1 -0
  28. package/dist/assets/el-empty-BZNyAlA7.js +2 -0
  29. package/dist/assets/el-empty-BZNyAlA7.js.map +1 -0
  30. package/dist/assets/el-empty-C2yupmrg.css +1 -0
  31. package/dist/assets/el-empty-legacy--8JR0M1C.js +2 -0
  32. package/dist/assets/el-empty-legacy--8JR0M1C.js.map +1 -0
  33. package/dist/assets/el-input-number-C0Bp8kfg.js +2 -0
  34. package/dist/assets/el-input-number-C0Bp8kfg.js.map +1 -0
  35. package/dist/assets/el-input-number-CU7OpiYS.css +1 -0
  36. package/dist/assets/el-input-number-legacy-CaZROy3J.js +2 -0
  37. package/dist/assets/el-input-number-legacy-CaZROy3J.js.map +1 -0
  38. package/dist/assets/{el-loading-DNzUD85e.js → el-loading-DgUVClxn.js} +2 -2
  39. package/dist/assets/el-loading-DgUVClxn.js.map +1 -0
  40. package/dist/assets/el-loading-legacy-BpxkUp1m.js +2 -0
  41. package/dist/assets/el-loading-legacy-BpxkUp1m.js.map +1 -0
  42. package/dist/assets/el-pagination-DX6u100-.js +2 -0
  43. package/dist/assets/el-pagination-DX6u100-.js.map +1 -0
  44. package/dist/assets/el-pagination-legacy-BcfQQTNs.js +2 -0
  45. package/dist/assets/el-pagination-legacy-BcfQQTNs.js.map +1 -0
  46. package/dist/assets/el-scrollbar-D2RZSJkX.js +2 -0
  47. package/dist/assets/el-scrollbar-D2RZSJkX.js.map +1 -0
  48. package/dist/assets/el-scrollbar-DFu7lMno.css +1 -0
  49. package/dist/assets/el-scrollbar-legacy-CLEobATW.js +2 -0
  50. package/dist/assets/el-scrollbar-legacy-CLEobATW.js.map +1 -0
  51. package/dist/assets/el-select-DWyBOD47.js +2 -0
  52. package/dist/assets/el-select-DWyBOD47.js.map +1 -0
  53. package/dist/assets/el-select-Dm4tLYz8.css +1 -0
  54. package/dist/assets/el-select-legacy-Cvxrwg7z.js +2 -0
  55. package/dist/assets/el-select-legacy-Cvxrwg7z.js.map +1 -0
  56. package/dist/assets/el-switch-c6xoppF3.js +2 -0
  57. package/dist/assets/el-switch-c6xoppF3.js.map +1 -0
  58. package/dist/assets/el-switch-legacy-DCF_46l4.js +2 -0
  59. package/dist/assets/el-switch-legacy-DCF_46l4.js.map +1 -0
  60. package/dist/assets/el-tab-pane-DWJdeyqN.js +2 -0
  61. package/dist/assets/el-tab-pane-DWJdeyqN.js.map +1 -0
  62. package/dist/assets/{el-tab-pane-legacy-DMdhUCHY.js → el-tab-pane-legacy-Cgd5IxXQ.js} +2 -2
  63. package/dist/assets/el-tab-pane-legacy-Cgd5IxXQ.js.map +1 -0
  64. package/dist/assets/{el-table-column-tkbtgrcD.js → el-table-column-DdhVw628.js} +3 -3
  65. package/dist/assets/el-table-column-DdhVw628.js.map +1 -0
  66. package/dist/assets/el-table-column-legacy-D1aU2dQP.js +24 -0
  67. package/dist/assets/el-table-column-legacy-D1aU2dQP.js.map +1 -0
  68. package/dist/assets/el-tag-Bgje3_SF.css +1 -0
  69. package/dist/assets/el-tag-legacy-DxOZcEw1.js +2 -0
  70. package/dist/assets/el-tag-legacy-DxOZcEw1.js.map +1 -0
  71. package/dist/assets/el-tag-uk6aooq0.js +2 -0
  72. package/dist/assets/el-tag-uk6aooq0.js.map +1 -0
  73. package/dist/assets/el-upload-B2Zxm6X5.css +1 -0
  74. package/dist/assets/el-upload-BxExG7hd.js +2 -0
  75. package/dist/assets/el-upload-BxExG7hd.js.map +1 -0
  76. package/dist/assets/el-upload-legacy-D8KH6HBU.js +2 -0
  77. package/dist/assets/el-upload-legacy-D8KH6HBU.js.map +1 -0
  78. package/dist/assets/index--nCmso-n.js +2 -0
  79. package/dist/assets/index--nCmso-n.js.map +1 -0
  80. package/dist/assets/index-2qujr45D.js +2 -0
  81. package/dist/assets/index-2qujr45D.js.map +1 -0
  82. package/dist/assets/index-6fj8rr7z.js +2 -0
  83. package/dist/assets/index-6fj8rr7z.js.map +1 -0
  84. package/dist/assets/index-8vfFTV-B.css +1 -0
  85. package/dist/assets/index-B-yBTqWJ.js +2 -0
  86. package/dist/assets/index-B-yBTqWJ.js.map +1 -0
  87. package/dist/assets/index-BC_fnfOg.js +2 -0
  88. package/dist/assets/index-BC_fnfOg.js.map +1 -0
  89. package/dist/assets/{index-C4H-Ptjt.css → index-BDkChTag.css} +1 -1
  90. package/dist/assets/index-BDsN2eKB.js +2 -0
  91. package/dist/assets/index-BDsN2eKB.js.map +1 -0
  92. package/dist/assets/index-BSIRw8UD.js +2 -0
  93. package/dist/assets/index-BSIRw8UD.js.map +1 -0
  94. package/dist/assets/index-BSMNPGJ5.css +1 -0
  95. package/dist/assets/index-BVEIUX2D.js +2 -0
  96. package/dist/assets/index-BVEIUX2D.js.map +1 -0
  97. package/dist/assets/index-BVp20vyj.css +1 -0
  98. package/dist/assets/index-BcJxc1ki.css +1 -0
  99. package/dist/assets/index-BgihxBmj.css +1 -0
  100. package/dist/assets/index-BjSgvXxj.css +1 -0
  101. package/dist/assets/index-BmheqIC4.js +2 -0
  102. package/dist/assets/index-BmheqIC4.js.map +1 -0
  103. package/dist/assets/index-BrOLxzFM.js.map +1 -1
  104. package/dist/assets/{index-ehQnwCE_.css → index-Bxvzu7zF.css} +1 -1
  105. package/dist/assets/index-CFpIdG49.css +1 -0
  106. package/dist/assets/index-CKVj2mCd.js +2 -0
  107. package/dist/assets/index-CKVj2mCd.js.map +1 -0
  108. package/dist/assets/index-CLt64lxI.js +2 -0
  109. package/dist/assets/index-CLt64lxI.js.map +1 -0
  110. package/dist/assets/index-COI3CDfm.js +2 -0
  111. package/dist/assets/index-COI3CDfm.js.map +1 -0
  112. package/dist/assets/index-CQud0ONT.css +1 -0
  113. package/dist/assets/index-CkyNID7q.css +1 -0
  114. package/dist/assets/index-CsTsOuFs.js +2 -0
  115. package/dist/assets/index-CsTsOuFs.js.map +1 -0
  116. package/dist/assets/index-CsfbnGni.css +1 -0
  117. package/dist/assets/index-D5EKLT5I.js +2 -0
  118. package/dist/assets/index-D5EKLT5I.js.map +1 -0
  119. package/dist/assets/index-D94P-51I.css +1 -0
  120. package/dist/assets/index-DBQzOZB-.js +23 -0
  121. package/dist/assets/index-DBQzOZB-.js.map +1 -0
  122. package/dist/assets/index-DC08DNQQ.js +2 -0
  123. package/dist/assets/index-DC08DNQQ.js.map +1 -0
  124. package/dist/assets/index-DLuR61Hw.css +1 -0
  125. package/dist/assets/index-DT7ciPLb.js +2 -0
  126. package/dist/assets/index-DT7ciPLb.js.map +1 -0
  127. package/dist/assets/index-DYTxk2nM.js +2 -0
  128. package/dist/assets/index-DYTxk2nM.js.map +1 -0
  129. package/dist/assets/index-DbhWmXsj.js +40 -0
  130. package/dist/assets/index-DbhWmXsj.js.map +1 -0
  131. package/dist/assets/index-DcUtl6Nq.css +1 -0
  132. package/dist/assets/index-DpoyDAhf.js +2 -0
  133. package/dist/assets/index-DpoyDAhf.js.map +1 -0
  134. package/dist/assets/index-Ds7mlGo_.js +2 -0
  135. package/dist/assets/index-Ds7mlGo_.js.map +1 -0
  136. package/dist/assets/index-FISBGs_l.css +1 -0
  137. package/dist/assets/index-FkvPFOBZ.js +2 -0
  138. package/dist/assets/index-FkvPFOBZ.js.map +1 -0
  139. package/dist/assets/index-HJwe3MZ4.js +2 -0
  140. package/dist/assets/index-HJwe3MZ4.js.map +1 -0
  141. package/dist/assets/index-LKJh-8oZ.css +1 -0
  142. package/dist/assets/index-Q8b92C8V.css +1 -0
  143. package/dist/assets/index-legacy-0p9exu0M.js +2 -0
  144. package/dist/assets/index-legacy-0p9exu0M.js.map +1 -0
  145. package/dist/assets/index-legacy-2gZknrAr.js +2 -0
  146. package/dist/assets/index-legacy-2gZknrAr.js.map +1 -0
  147. package/dist/assets/index-legacy-AH8uXlwH.js +2 -0
  148. package/dist/assets/index-legacy-AH8uXlwH.js.map +1 -0
  149. package/dist/assets/index-legacy-BTvagK_v.js +2 -0
  150. package/dist/assets/index-legacy-BTvagK_v.js.map +1 -0
  151. package/dist/assets/index-legacy-BUrH0Ubh.js +2 -0
  152. package/dist/assets/index-legacy-BUrH0Ubh.js.map +1 -0
  153. package/dist/assets/index-legacy-BVk27mxb.js +2 -0
  154. package/dist/assets/index-legacy-BVk27mxb.js.map +1 -0
  155. package/dist/assets/index-legacy-BnfLqgKz.js +2 -0
  156. package/dist/assets/index-legacy-BnfLqgKz.js.map +1 -0
  157. package/dist/assets/index-legacy-BsWj1xV2.js +54 -0
  158. package/dist/assets/index-legacy-BsWj1xV2.js.map +1 -0
  159. package/dist/assets/index-legacy-Bvis80MO.js +2 -0
  160. package/dist/assets/index-legacy-Bvis80MO.js.map +1 -0
  161. package/dist/assets/index-legacy-BxqvVJh6.js +16 -0
  162. package/dist/assets/index-legacy-BxqvVJh6.js.map +1 -0
  163. package/dist/assets/index-legacy-C-gHf8SN.js.map +1 -1
  164. package/dist/assets/index-legacy-C8OALizf.js +2 -0
  165. package/dist/assets/index-legacy-C8OALizf.js.map +1 -0
  166. package/dist/assets/index-legacy-Ca1NdJPm.js +2 -0
  167. package/dist/assets/index-legacy-Ca1NdJPm.js.map +1 -0
  168. package/dist/assets/index-legacy-D3Gbb8pX.js +2 -0
  169. package/dist/assets/index-legacy-D3Gbb8pX.js.map +1 -0
  170. package/dist/assets/index-legacy-DFUJlpQR.js +2 -0
  171. package/dist/assets/index-legacy-DFUJlpQR.js.map +1 -0
  172. package/dist/assets/index-legacy-DNPnYZJW.js +2 -0
  173. package/dist/assets/index-legacy-DNPnYZJW.js.map +1 -0
  174. package/dist/assets/index-legacy-DaUa56O-.js +2 -0
  175. package/dist/assets/index-legacy-DaUa56O-.js.map +1 -0
  176. package/dist/assets/index-legacy-DqfRlqrq.js +2 -0
  177. package/dist/assets/index-legacy-DqfRlqrq.js.map +1 -0
  178. package/dist/assets/index-legacy-DyJmAPRK.js +2 -0
  179. package/dist/assets/index-legacy-DyJmAPRK.js.map +1 -0
  180. package/dist/assets/index-legacy-DziFQjpX.js +2 -0
  181. package/dist/assets/index-legacy-DziFQjpX.js.map +1 -0
  182. package/dist/assets/index-legacy-N9COO-uZ.js +2 -0
  183. package/dist/assets/index-legacy-N9COO-uZ.js.map +1 -0
  184. package/dist/assets/index-legacy-P9gt2mpu.js +2 -0
  185. package/dist/assets/index-legacy-P9gt2mpu.js.map +1 -0
  186. package/dist/assets/index-legacy-c8lop5xr.js +2 -0
  187. package/dist/assets/index-legacy-c8lop5xr.js.map +1 -0
  188. package/dist/assets/index-legacy-npRizjoU.js +2 -0
  189. package/dist/assets/index-legacy-npRizjoU.js.map +1 -0
  190. package/dist/assets/index-legacy-xL9mLEDR.js +2 -0
  191. package/dist/assets/index-legacy-xL9mLEDR.js.map +1 -0
  192. package/dist/assets/index-mtfctTgx.css +1 -0
  193. package/dist/assets/index-oKiyEdt0.js +2 -0
  194. package/dist/assets/index-oKiyEdt0.js.map +1 -0
  195. package/dist/assets/linkDialog-D30VnNS0.js +2 -0
  196. package/dist/assets/linkDialog-D30VnNS0.js.map +1 -0
  197. package/dist/assets/linkDialog-Dida934t.css +1 -0
  198. package/dist/assets/linkDialog-legacy-CCHpjX0B.js +2 -0
  199. package/dist/assets/linkDialog-legacy-CCHpjX0B.js.map +1 -0
  200. package/dist/assets/other-BiIe9Z0L.js +2 -0
  201. package/dist/assets/other-BiIe9Z0L.js.map +1 -0
  202. package/dist/assets/other-legacy-Bfm4KL87.js +2 -0
  203. package/dist/assets/other-legacy-Bfm4KL87.js.map +1 -0
  204. package/dist/assets/polyfills-legacy-DqO_DCwg.js +1 -0
  205. package/dist/assets/{refresh-DPuuDO9h.js → refresh-Cccf8YoS.js} +2 -2
  206. package/dist/assets/refresh-Cccf8YoS.js.map +1 -0
  207. package/dist/assets/{refresh-legacy-DOts-8Wc.js → refresh-legacy-BwFA7z7t.js} +2 -2
  208. package/dist/assets/refresh-legacy-BwFA7z7t.js.map +1 -0
  209. package/dist/assets/tip-Nu5QmDDd.js +2 -0
  210. package/dist/assets/tip-Nu5QmDDd.js.map +1 -0
  211. package/dist/assets/tip-legacy-D_0YSCxT.js +2 -0
  212. package/dist/assets/tip-legacy-D_0YSCxT.js.map +1 -0
  213. package/dist/assets/tipInfo-BPHCIpRm.css +1 -0
  214. package/dist/assets/tipInfo-D75KJpWg.js +2 -0
  215. package/dist/assets/tipInfo-D75KJpWg.js.map +1 -0
  216. package/dist/assets/tipInfo-legacy-CV235bKZ.js +2 -0
  217. package/dist/assets/tipInfo-legacy-CV235bKZ.js.map +1 -0
  218. package/dist/index.html +105 -128
  219. package/package.json +13 -34
  220. package/README.md +0 -86
  221. package/dist/assets/data-analysis-Bnq_VWU8.js.map +0 -1
  222. package/dist/assets/data-analysis-legacy-_KcR253K.js.map +0 -1
  223. package/dist/assets/data-board-L3s5ouKd.js.map +0 -1
  224. package/dist/assets/data-board-legacy-BFxWeFnQ.js.map +0 -1
  225. package/dist/assets/el-date-picker-legacy-Uk9x97L5.js +0 -2
  226. package/dist/assets/el-date-picker-legacy-Uk9x97L5.js.map +0 -1
  227. package/dist/assets/el-date-picker-mhY2RJMG.js +0 -2
  228. package/dist/assets/el-date-picker-mhY2RJMG.js.map +0 -1
  229. package/dist/assets/el-dialog-Cu2jwelC.css +0 -1
  230. package/dist/assets/el-dialog-PRccau6N.js +0 -2
  231. package/dist/assets/el-dialog-PRccau6N.js.map +0 -1
  232. package/dist/assets/el-dialog-legacy-BRLM43ZY.js +0 -2
  233. package/dist/assets/el-dialog-legacy-BRLM43ZY.js.map +0 -1
  234. package/dist/assets/el-dropdown-item-Cr71teRg.js +0 -2
  235. package/dist/assets/el-dropdown-item-Cr71teRg.js.map +0 -1
  236. package/dist/assets/el-dropdown-item-legacy-B0ufpHvy.js +0 -2
  237. package/dist/assets/el-dropdown-item-legacy-B0ufpHvy.js.map +0 -1
  238. package/dist/assets/el-form-item-Cc9R0dZ1.css +0 -1
  239. package/dist/assets/el-form-item-DOwM4Mv8.js +0 -2
  240. package/dist/assets/el-form-item-DOwM4Mv8.js.map +0 -1
  241. package/dist/assets/el-form-item-legacy-CvQy7syv.js +0 -2
  242. package/dist/assets/el-form-item-legacy-CvQy7syv.js.map +0 -1
  243. package/dist/assets/el-loading-DNzUD85e.js.map +0 -1
  244. package/dist/assets/el-loading-legacy-B3RLcjwN.js +0 -2
  245. package/dist/assets/el-loading-legacy-B3RLcjwN.js.map +0 -1
  246. package/dist/assets/el-pagination-iCicJonH.js +0 -2
  247. package/dist/assets/el-pagination-iCicJonH.js.map +0 -1
  248. package/dist/assets/el-pagination-legacy-Bf-Bzx7n.js +0 -2
  249. package/dist/assets/el-pagination-legacy-Bf-Bzx7n.js.map +0 -1
  250. package/dist/assets/el-progress-1hLO5hs0.js +0 -2
  251. package/dist/assets/el-progress-1hLO5hs0.js.map +0 -1
  252. package/dist/assets/el-progress-legacy-QmxDezwR.js +0 -2
  253. package/dist/assets/el-progress-legacy-QmxDezwR.js.map +0 -1
  254. package/dist/assets/el-progress-njCW9-w4.css +0 -1
  255. package/dist/assets/el-select-BSO0hXRI.css +0 -1
  256. package/dist/assets/el-select-CVjQdC39.js +0 -2
  257. package/dist/assets/el-select-CVjQdC39.js.map +0 -1
  258. package/dist/assets/el-select-legacy-DSGgSQYX.js +0 -2
  259. package/dist/assets/el-select-legacy-DSGgSQYX.js.map +0 -1
  260. package/dist/assets/el-switch-B76QvbJN.js +0 -2
  261. package/dist/assets/el-switch-B76QvbJN.js.map +0 -1
  262. package/dist/assets/el-switch-legacy-CHkEgavQ.js +0 -2
  263. package/dist/assets/el-switch-legacy-CHkEgavQ.js.map +0 -1
  264. package/dist/assets/el-tab-pane-BhVByOfe.js +0 -2
  265. package/dist/assets/el-tab-pane-BhVByOfe.js.map +0 -1
  266. package/dist/assets/el-tab-pane-legacy-DMdhUCHY.js.map +0 -1
  267. package/dist/assets/el-table-column-legacy-N_oU_-0P.js +0 -24
  268. package/dist/assets/el-table-column-legacy-N_oU_-0P.js.map +0 -1
  269. package/dist/assets/el-table-column-tkbtgrcD.js.map +0 -1
  270. package/dist/assets/index-3yen43So.js +0 -2
  271. package/dist/assets/index-3yen43So.js.map +0 -1
  272. package/dist/assets/index-5sS3uHi0.css +0 -1
  273. package/dist/assets/index-9zuSLjpa.js +0 -2
  274. package/dist/assets/index-9zuSLjpa.js.map +0 -1
  275. package/dist/assets/index-B-6zRvEX.js +0 -2
  276. package/dist/assets/index-B-6zRvEX.js.map +0 -1
  277. package/dist/assets/index-B5tZv3FB.css +0 -1
  278. package/dist/assets/index-BN1f1UM3.js +0 -2
  279. package/dist/assets/index-BN1f1UM3.js.map +0 -1
  280. package/dist/assets/index-BUmkgniE.js +0 -2
  281. package/dist/assets/index-BUmkgniE.js.map +0 -1
  282. package/dist/assets/index-BbfnoqK6.js +0 -2
  283. package/dist/assets/index-BbfnoqK6.js.map +0 -1
  284. package/dist/assets/index-BghihfR3.css +0 -1
  285. package/dist/assets/index-C3IckGNL.js +0 -2
  286. package/dist/assets/index-C3IckGNL.js.map +0 -1
  287. package/dist/assets/index-CYAf_OTx.js +0 -40
  288. package/dist/assets/index-CYAf_OTx.js.map +0 -1
  289. package/dist/assets/index-Cb6-p2hG.js +0 -2
  290. package/dist/assets/index-Cb6-p2hG.js.map +0 -1
  291. package/dist/assets/index-CbkKWoQA.css +0 -1
  292. package/dist/assets/index-CeWnhlkq.css +0 -1
  293. package/dist/assets/index-Cfg2jkVw.css +0 -1
  294. package/dist/assets/index-CkMvb3wF.css +0 -1
  295. package/dist/assets/index-Cl4G6EQO.js +0 -2
  296. package/dist/assets/index-Cl4G6EQO.js.map +0 -1
  297. package/dist/assets/index-CnbFxlpi.css +0 -1
  298. package/dist/assets/index-Cyb1OjRN.js +0 -2
  299. package/dist/assets/index-Cyb1OjRN.js.map +0 -1
  300. package/dist/assets/index-D2p3cWtM.css +0 -1
  301. package/dist/assets/index-D7aZxhM6.js +0 -2
  302. package/dist/assets/index-D7aZxhM6.js.map +0 -1
  303. package/dist/assets/index-DI41wbky.js +0 -2
  304. package/dist/assets/index-DI41wbky.js.map +0 -1
  305. package/dist/assets/index-DaSb9EV4.css +0 -1
  306. package/dist/assets/index-DcOjlpKI.js +0 -2
  307. package/dist/assets/index-DcOjlpKI.js.map +0 -1
  308. package/dist/assets/index-DjO-nUIS.js +0 -2
  309. package/dist/assets/index-DjO-nUIS.js.map +0 -1
  310. package/dist/assets/index-DnxF29eG.css +0 -1
  311. package/dist/assets/index-DrKX0cCg.js +0 -2
  312. package/dist/assets/index-DrKX0cCg.js.map +0 -1
  313. package/dist/assets/index-F3S0vKOW.js +0 -2
  314. package/dist/assets/index-F3S0vKOW.js.map +0 -1
  315. package/dist/assets/index-I78Ur1Md.js +0 -2
  316. package/dist/assets/index-I78Ur1Md.js.map +0 -1
  317. package/dist/assets/index-L0LtrfyP.js +0 -2
  318. package/dist/assets/index-L0LtrfyP.js.map +0 -1
  319. package/dist/assets/index-XNFQHmLL.css +0 -1
  320. package/dist/assets/index-dEAnfrhp.css +0 -1
  321. package/dist/assets/index-hhTdfxnD.css +0 -1
  322. package/dist/assets/index-lTmxAqnX.js +0 -2
  323. package/dist/assets/index-lTmxAqnX.js.map +0 -1
  324. package/dist/assets/index-legacy-BJNK4MqF.js +0 -2
  325. package/dist/assets/index-legacy-BJNK4MqF.js.map +0 -1
  326. package/dist/assets/index-legacy-BLlk8iq-.js +0 -42
  327. package/dist/assets/index-legacy-BLlk8iq-.js.map +0 -1
  328. package/dist/assets/index-legacy-BmWYm3m_.js +0 -2
  329. package/dist/assets/index-legacy-BmWYm3m_.js.map +0 -1
  330. package/dist/assets/index-legacy-Bnp7569A.js +0 -2
  331. package/dist/assets/index-legacy-Bnp7569A.js.map +0 -1
  332. package/dist/assets/index-legacy-CQ24Si-w.js +0 -2
  333. package/dist/assets/index-legacy-CQ24Si-w.js.map +0 -1
  334. package/dist/assets/index-legacy-CT1nF7s9.js +0 -2
  335. package/dist/assets/index-legacy-CT1nF7s9.js.map +0 -1
  336. package/dist/assets/index-legacy-CeVzo60P.js +0 -2
  337. package/dist/assets/index-legacy-CeVzo60P.js.map +0 -1
  338. package/dist/assets/index-legacy-Cf0w_PNA.js +0 -2
  339. package/dist/assets/index-legacy-Cf0w_PNA.js.map +0 -1
  340. package/dist/assets/index-legacy-DZSQUiaj.js +0 -2
  341. package/dist/assets/index-legacy-DZSQUiaj.js.map +0 -1
  342. package/dist/assets/index-legacy-D_K0eXFb.js +0 -2
  343. package/dist/assets/index-legacy-D_K0eXFb.js.map +0 -1
  344. package/dist/assets/index-legacy-Da3YyHW_.js +0 -2
  345. package/dist/assets/index-legacy-Da3YyHW_.js.map +0 -1
  346. package/dist/assets/index-legacy-Da4s_D85.js +0 -2
  347. package/dist/assets/index-legacy-Da4s_D85.js.map +0 -1
  348. package/dist/assets/index-legacy-DhNaKknk.js +0 -2
  349. package/dist/assets/index-legacy-DhNaKknk.js.map +0 -1
  350. package/dist/assets/index-legacy-Dm1CXog1.js +0 -2
  351. package/dist/assets/index-legacy-Dm1CXog1.js.map +0 -1
  352. package/dist/assets/index-legacy-DpNNn-Dy.js +0 -2
  353. package/dist/assets/index-legacy-DpNNn-Dy.js.map +0 -1
  354. package/dist/assets/index-legacy-PkF4cKK9.js +0 -2
  355. package/dist/assets/index-legacy-PkF4cKK9.js.map +0 -1
  356. package/dist/assets/index-legacy-QHDmYAB8.js +0 -2
  357. package/dist/assets/index-legacy-QHDmYAB8.js.map +0 -1
  358. package/dist/assets/index-legacy-_M1-0586.js +0 -2
  359. package/dist/assets/index-legacy-_M1-0586.js.map +0 -1
  360. package/dist/assets/index-legacy-m0dvnwGi.js +0 -2
  361. package/dist/assets/index-legacy-m0dvnwGi.js.map +0 -1
  362. package/dist/assets/index-legacy-vRS79jKS.js +0 -2
  363. package/dist/assets/index-legacy-vRS79jKS.js.map +0 -1
  364. package/dist/assets/index-ypHH_Z_A.css +0 -1
  365. package/dist/assets/isEqual-BHpVKj_X.js +0 -2
  366. package/dist/assets/isEqual-BHpVKj_X.js.map +0 -1
  367. package/dist/assets/isEqual-legacy-BWUPR8bV.js +0 -2
  368. package/dist/assets/isEqual-legacy-BWUPR8bV.js.map +0 -1
  369. package/dist/assets/other-legacy-DjiCmSH4.js +0 -2
  370. package/dist/assets/other-legacy-DjiCmSH4.js.map +0 -1
  371. package/dist/assets/other-yMAyytYx.js +0 -2
  372. package/dist/assets/other-yMAyytYx.js.map +0 -1
  373. package/dist/assets/polyfills-legacy-CPmsgIAF.js +0 -4
  374. package/dist/assets/refresh-DPuuDO9h.js.map +0 -1
  375. package/dist/assets/refresh-legacy-DOts-8Wc.js.map +0 -1
  376. package/dist/assets/tip-CH7nBVXc.js +0 -2
  377. package/dist/assets/tip-CH7nBVXc.js.map +0 -1
  378. package/dist/assets/tip-legacy-DiCk_qP1.js +0 -2
  379. package/dist/assets/tip-legacy-DiCk_qP1.js.map +0 -1
  380. package/dist/assets/validator-BMr-jeUB.js +0 -2
  381. package/dist/assets/validator-BMr-jeUB.js.map +0 -1
  382. package/dist/assets/validator-legacy-CacjPWoF.js +0 -2
  383. package/dist/assets/validator-legacy-CacjPWoF.js.map +0 -1
  384. /package/dist/assets/{el-date-picker-NjWHL2Br.css → el-date-picker-C36c2CGO.css} +0 -0
  385. /package/dist/assets/{el-dropdown-item-CUgTpiu6.css → el-dropdown-item-5b6bMUQF.css} +0 -0
  386. /package/dist/assets/{el-loading-Uv12lkco.css → el-loading-BPl8mdQ3.css} +0 -0
  387. /package/dist/assets/{el-pagination-MvCAleW2.css → el-pagination-DMHBWKFj.css} +0 -0
  388. /package/dist/assets/{el-switch-D6dVIPlw.css → el-switch-CH9HekZJ.css} +0 -0
  389. /package/dist/assets/{el-tab-pane-kUw7IczA.css → el-tab-pane-CO1C5qCV.css} +0 -0
  390. /package/dist/assets/{el-table-column-DMXHP8sd.css → el-table-column-x3grTP_N.css} +0 -0
  391. /package/dist/assets/{tip-ovQu2XSt.css → tip-rRSL6nZ2.css} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-HJwe3MZ4.js","sources":["../../../../node_modules/.pnpm/element-plus@2.2.13_vue@3.5.12_typescript@4.9.5_/node_modules/element-plus/es/tokens/collapse.mjs","../../../../node_modules/.pnpm/element-plus@2.2.13_vue@3.5.12_typescript@4.9.5_/node_modules/element-plus/es/components/collapse/src/collapse.mjs","../../../../node_modules/.pnpm/element-plus@2.2.13_vue@3.5.12_typescript@4.9.5_/node_modules/element-plus/es/components/collapse/src/collapse2.mjs","../../../../node_modules/.pnpm/element-plus@2.2.13_vue@3.5.12_typescript@4.9.5_/node_modules/element-plus/es/components/collapse/src/collapse-item.mjs","../../../../node_modules/.pnpm/element-plus@2.2.13_vue@3.5.12_typescript@4.9.5_/node_modules/element-plus/es/components/collapse/src/collapse-item2.mjs","../../../../node_modules/.pnpm/element-plus@2.2.13_vue@3.5.12_typescript@4.9.5_/node_modules/element-plus/es/components/collapse/index.mjs","../../src/apis/modules/config.ts","../../src/pages/dashboard/config/index.vue"],"sourcesContent":["const collapseContextKey = Symbol(\"collapseContextKey\");\n\nexport { collapseContextKey };\n//# sourceMappingURL=collapse.mjs.map\n","import '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { isNumber } from '@vueuse/core';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { mutable } from '../../../utils/typescript.mjs';\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\n\nconst emitChangeFn = (value) => typeof isNumber(value);\nconst collapseProps = buildProps({\n accordion: Boolean,\n modelValue: {\n type: definePropType([Array, String, Number]),\n default: () => mutable([])\n }\n});\nconst collapseEmits = {\n [UPDATE_MODEL_EVENT]: emitChangeFn,\n [CHANGE_EVENT]: emitChangeFn\n};\n\nexport { collapseEmits, collapseProps, emitChangeFn };\n//# sourceMappingURL=collapse.mjs.map\n","import { defineComponent, ref, watch, provide, openBlock, createElementBlock, normalizeClass, unref, renderSlot } from 'vue';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../tokens/index.mjs';\nimport { collapseProps, collapseEmits } from './collapse.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { castArray } from 'lodash-unified';\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';\nimport { collapseContextKey } from '../../../tokens/collapse.mjs';\n\nconst __default__ = {\n name: \"ElCollapse\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: collapseProps,\n emits: collapseEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const ns = useNamespace(\"collapse\");\n const activeNames = ref(castArray(props.modelValue));\n const setActiveNames = (_activeNames) => {\n activeNames.value = _activeNames;\n const value = props.accordion ? activeNames.value[0] : activeNames.value;\n emit(UPDATE_MODEL_EVENT, value);\n emit(CHANGE_EVENT, value);\n };\n const handleItemClick = (name) => {\n if (props.accordion) {\n setActiveNames([\n (activeNames.value[0] || activeNames.value[0] === 0) && activeNames.value[0] === name ? \"\" : name\n ]);\n } else {\n const _activeNames = [...activeNames.value];\n const index = _activeNames.indexOf(name);\n if (index > -1) {\n _activeNames.splice(index, 1);\n } else {\n _activeNames.push(name);\n }\n setActiveNames(_activeNames);\n }\n };\n watch(() => props.modelValue, () => activeNames.value = castArray(props.modelValue), { deep: true });\n provide(collapseContextKey, {\n activeNames,\n handleItemClick\n });\n expose({\n activeNames,\n setActiveNames\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(unref(ns).b()),\n role: \"tablist\",\n \"aria-multiselectable\": \"true\"\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2);\n };\n }\n});\nvar Collapse = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"/home/runner/work/element-plus/element-plus/packages/components/collapse/src/collapse.vue\"]]);\n\nexport { Collapse as default };\n//# sourceMappingURL=collapse2.mjs.map\n","import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { generateId } from '../../../utils/rand.mjs';\n\nconst collapseItemProps = buildProps({\n title: {\n type: String,\n default: \"\"\n },\n name: {\n type: definePropType([String, Number]),\n default: () => generateId()\n },\n disabled: Boolean\n});\n\nexport { collapseItemProps };\n//# sourceMappingURL=collapse-item.mjs.map\n","import { defineComponent, inject, ref, computed, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, withKeys, withModifiers, renderSlot, createTextVNode, toDisplayString, createVNode, withCtx, withDirectives, vShow } from 'vue';\nimport '../../../utils/index.mjs';\nimport _CollapseTransition from '../../collapse-transition/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport { ArrowRight } from '@element-plus/icons-vue';\nimport '../../../hooks/index.mjs';\nimport '../../../tokens/index.mjs';\nimport { collapseItemProps } from './collapse-item.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { collapseContextKey } from '../../../tokens/collapse.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { generateId } from '../../../utils/rand.mjs';\n\nconst _hoisted_1 = [\"aria-expanded\", \"aria-controls\", \"aria-describedby\"];\nconst _hoisted_2 = [\"id\", \"tabindex\", \"onKeypress\"];\nconst _hoisted_3 = [\"id\", \"aria-hidden\", \"aria-labelledby\"];\nconst __default__ = {\n name: \"ElCollapseItem\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: collapseItemProps,\n setup(__props, { expose }) {\n const props = __props;\n const collapse = inject(collapseContextKey);\n const ns = useNamespace(\"collapse\");\n const focusing = ref(false);\n const isClick = ref(false);\n const id = ref(generateId());\n const isActive = computed(() => collapse == null ? void 0 : collapse.activeNames.value.includes(props.name));\n const handleFocus = () => {\n setTimeout(() => {\n if (!isClick.value) {\n focusing.value = true;\n } else {\n isClick.value = false;\n }\n }, 50);\n };\n const handleHeaderClick = () => {\n if (props.disabled)\n return;\n collapse == null ? void 0 : collapse.handleItemClick(props.name);\n focusing.value = false;\n isClick.value = true;\n };\n const handleEnterClick = () => {\n collapse == null ? void 0 : collapse.handleItemClick(props.name);\n };\n expose({\n isActive\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\n unref(ns).b(\"item\"),\n unref(ns).is(\"active\", unref(isActive)),\n unref(ns).is(\"disabled\", _ctx.disabled)\n ])\n }, [\n createElementVNode(\"div\", {\n role: \"tab\",\n \"aria-expanded\": unref(isActive),\n \"aria-controls\": unref(ns).b(`content-${id.value}`),\n \"aria-describedby\": unref(ns).b(`content-${id.value}`)\n }, [\n createElementVNode(\"div\", {\n id: unref(ns).b(`head-${id.value}`),\n class: normalizeClass([\n unref(ns).be(\"item\", \"header\"),\n unref(ns).is(\"active\", unref(isActive)),\n { focusing: focusing.value && !_ctx.disabled }\n ]),\n role: \"button\",\n tabindex: _ctx.disabled ? -1 : 0,\n onClick: handleHeaderClick,\n onKeypress: withKeys(withModifiers(handleEnterClick, [\"stop\", \"prevent\"]), [\"space\", \"enter\"]),\n onFocus: handleFocus,\n onBlur: _cache[0] || (_cache[0] = ($event) => focusing.value = false)\n }, [\n renderSlot(_ctx.$slots, \"title\", {}, () => [\n createTextVNode(toDisplayString(_ctx.title), 1)\n ]),\n createVNode(unref(ElIcon), {\n class: normalizeClass([unref(ns).be(\"item\", \"arrow\"), unref(ns).is(\"active\", unref(isActive))])\n }, {\n default: withCtx(() => [\n createVNode(unref(ArrowRight))\n ]),\n _: 1\n }, 8, [\"class\"])\n ], 42, _hoisted_2)\n ], 8, _hoisted_1),\n createVNode(unref(_CollapseTransition), null, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", {\n id: unref(ns).b(`content-${id.value}`),\n class: normalizeClass(unref(ns).be(\"item\", \"wrap\")),\n role: \"tabpanel\",\n \"aria-hidden\": !unref(isActive),\n \"aria-labelledby\": unref(ns).b(`head-${id.value}`)\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).be(\"item\", \"content\"))\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)\n ], 10, _hoisted_3), [\n [vShow, unref(isActive)]\n ])\n ]),\n _: 3\n })\n ], 2);\n };\n }\n});\nvar CollapseItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"/home/runner/work/element-plus/element-plus/packages/components/collapse/src/collapse-item.vue\"]]);\n\nexport { CollapseItem as default };\n//# sourceMappingURL=collapse-item2.mjs.map\n","import '../../utils/index.mjs';\nimport Collapse from './src/collapse2.mjs';\nimport CollapseItem from './src/collapse-item2.mjs';\nexport { collapseEmits, collapseProps, emitChangeFn } from './src/collapse.mjs';\nexport { collapseItemProps } from './src/collapse-item.mjs';\nimport { withInstall, withNoopInstall } from '../../utils/vue/install.mjs';\n\nconst ElCollapse = withInstall(Collapse, {\n CollapseItem\n});\nconst ElCollapseItem = withNoopInstall(CollapseItem);\n\nexport { ElCollapse, ElCollapseItem, ElCollapse as default };\n//# sourceMappingURL=index.mjs.map\n","import ajax from '../ajax'\n\nfunction getServiceOverview(): ConfigServiceAPITypes.getServiceOverview {\n return ajax.get('/config/service/overview')\n}\n\nfunction getMysqlSchema(): ConfigServiceAPITypes.getMysqlSchema {\n return ajax.get('/config/service/mysql/schema')\n}\n\nfunction getMysqlSchemaExportSql(): ConfigServiceAPITypes.getMysqlSchemaExportSql {\n return ajax.get('/config/service/mysql/schema/export-sql')\n}\n\nfunction applyMysqlSchema(): ConfigServiceAPITypes.applyMysqlSchema {\n return ajax.post('/config/service/mysql/schema/apply')\n}\n\nfunction getMysqlLiveIntrospect(): ConfigServiceAPITypes.getMysqlLiveIntrospect {\n return ajax.get('/config/service/mysql/introspect')\n}\n\nfunction checkMysqlDatabase(\n body: ConfigServiceAPITypes.MysqlCheckDatabaseBody,\n): ConfigServiceAPITypes.checkMysqlDatabase {\n return ajax.post('/config/service/mysql/check-database', body)\n}\n\nfunction listConfigAdminUsers(): ConfigServiceAPITypes.listConfigAdminUsers {\n return ajax.get('/config/service/admin-users')\n}\n\nfunction createConfigAdminUser(\n body: ConfigServiceAPITypes.CreateConfigAdminUserBody,\n): ConfigServiceAPITypes.createConfigAdminUser {\n return ajax.post('/config/service/admin-users', body)\n}\n\nfunction resetConfigAdminUserPassword(\n body: ConfigServiceAPITypes.ResetConfigAdminUserPasswordBody,\n): ConfigServiceAPITypes.resetConfigAdminUserPassword {\n return ajax.post('/config/service/admin-users/reset-password', body)\n}\n\nfunction getServiceConfig(): ConfigServiceAPITypes.getServiceConfig {\n return ajax.get('/config/service/config')\n}\n\nfunction updateCfg(data: ConfigServiceAPITypes.ServiceConfigItem | ConfigServiceAPITypes.ServiceConfigItem[]) {\n return ajax.put('/config/service/config', data)\n}\n\nexport default {\n getServiceOverview,\n getMysqlSchema,\n getMysqlSchemaExportSql,\n applyMysqlSchema,\n getMysqlLiveIntrospect,\n checkMysqlDatabase,\n listConfigAdminUsers,\n createConfigAdminUser,\n resetConfigAdminUserPassword,\n getServiceConfig,\n updateCfg,\n}\n","<script lang=\"ts\" setup>\nimport { Refresh } from '@element-plus/icons-vue'\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, onMounted, reactive, ref, watch } from 'vue'\nimport { ConfigServiceAPI, PublicApi, UserApi } from '@/apis'\nimport { useSiteConfig } from '@/composables'\nimport { rAccount, rMobilePhone, rPassword, rVerCode } from '@/utils/regExp'\nimport Tip from '../tasks/components/infoPanel/tip.vue'\n\ntype ConfigData = ConfigServiceAPITypes.ConfigData\ntype ServiceConfigItem = ConfigServiceAPITypes.ServiceConfigItem\ntype ServiceOverviewItem = ConfigServiceAPITypes.ServiceOverviewItem\ntype MysqlSchemaOverview = ConfigServiceAPITypes.MysqlSchemaOverview\ntype MysqlLiveIntrospection = ConfigServiceAPITypes.MysqlLiveIntrospection\ntype MysqlLiveTable = ConfigServiceAPITypes.MysqlLiveTable\n\n/** 与 MySQL 相关的子 Tab(连接配置仍在 name=mysql 的主 Tab);结构与脚本已与「在线库表」合并 */\nconst MYSQL_INTROSPECT_TAB = 'mysql-introspect'\nconst CONFIG_ADMIN_USERS_TAB = 'config-admin-users'\n\nconst { value: siteConfig } = useSiteConfig()\n\nconst mysqlSchema = ref<MysqlSchemaOverview | null>(null)\nconst schemaLoading = ref(false)\n\n/** 建表 SQL 全屏预览 */\nconst mysqlExportDialogVisible = ref(false)\nconst mysqlExportLoading = ref(false)\nconst mysqlExportSql = ref('')\nconst mysqlExportDescription = ref('')\nconst mysqlExportError = ref('')\n\nconst serviceOverview = ref<ServiceOverviewItem[]>([])\nconst serverConfig = ref<ConfigData[]>([])\nconst loading = ref(false)\nconst configLoading = ref(false)\nconst activeConfigTab = ref('')\nconst savingMap = reactive<Record<string, boolean>>({})\n\nconst overviewStats = computed(() => {\n const total = serviceOverview.value.length\n const running = serviceOverview.value.filter(item => item.status).length\n const required = serviceOverview.value.filter(item => item.required).length\n const optional = total - required\n return {\n total,\n running,\n required,\n optional,\n abnormal: total - running,\n }\n})\nconst showErrorList = computed(() => serviceOverview.value.filter(item => item.errMsg))\nconst showMysqlToolTabs = computed(() => serverConfig.value.some(s => s.type === 'mysql'))\nconst mysqlLive = ref<MysqlLiveIntrospection | null>(null)\nconst mysqlLiveLoading = ref(false)\nconst mysqlLiveOpenNames = ref<string[]>([])\n\nconst currentConfig = computed(() => serverConfig.value.find(item => item.type === activeConfigTab.value))\n\nfunction isActiveConfigTabValid(name: string) {\n if (name === CONFIG_ADMIN_USERS_TAB)\n return true\n if (serverConfig.value.some(item => item.type === name))\n return true\n if (showMysqlToolTabs.value && name === MYSQL_INTROSPECT_TAB)\n return true\n return false\n}\n\nfunction getServiceTagType(service: ServiceOverviewItem) {\n if (service.status) {\n return 'success'\n }\n return service.required ? 'danger' : 'warning'\n}\n\nfunction getServiceTagText(service: ServiceOverviewItem) {\n if (service.status) {\n return '运行中'\n }\n return service.required ? '异常' : '未就绪'\n}\n\nfunction isBooleanConfig(item: ServiceConfigItem) {\n return (\n typeof item.value === 'boolean'\n || item.key === 'auth'\n || item.key === 'autoCreateDatabase'\n || item.key === 'autoSyncSchemaOnStartup'\n )\n}\n\nfunction isNumberConfig(item: ServiceConfigItem) {\n return typeof item.value === 'number' || item.key === 'port'\n}\n\nfunction updateConfigValue(item: ServiceConfigItem, value: string | number | boolean) {\n item.value = value\n}\n\nasync function loadMysqlSchema() {\n schemaLoading.value = true\n try {\n const { data } = await ConfigServiceAPI.getMysqlSchema()\n mysqlSchema.value = data ?? null\n }\n catch {\n mysqlSchema.value = null\n }\n finally {\n schemaLoading.value = false\n }\n}\n\nasync function loadMysqlLiveIntrospect() {\n mysqlLiveLoading.value = true\n try {\n const { data } = await ConfigServiceAPI.getMysqlLiveIntrospect()\n mysqlLive.value = data ?? null\n }\n catch {\n mysqlLive.value = null\n }\n finally {\n mysqlLiveLoading.value = false\n }\n}\n\nfunction formatBytes(n: number | null) {\n if (n == null || Number.isNaN(n))\n return '—'\n if (n < 1024)\n return `${n} B`\n const units = ['KB', 'MB', 'GB', 'TB']\n let v = n / 1024\n let i = 0\n while (v >= 1024 && i < units.length - 1) {\n v /= 1024\n i++\n }\n return `${v < 10 ? v.toFixed(1) : Math.round(v)} ${units[i]}`\n}\n\nfunction indexColumnsLabel(idx: MysqlLiveTable['indexes'][number]) {\n return idx.columns\n .map((c) => {\n const p = c.subPart != null ? `(${c.subPart})` : ''\n return `${c.column}${p}`\n })\n .join(', ')\n}\n\nasync function copyMysqlTableDdl(tbl: MysqlLiveTable) {\n const text = tbl.createSql?.trim() ?? ''\n if (!text) {\n ElMessage.warning('建表语句为空')\n return\n }\n try {\n await navigator.clipboard.writeText(text)\n ElMessage.success(`已复制 ${tbl.name} 的建表 SQL`)\n }\n catch {\n ElMessage.error('复制失败,请手动选取文本框中的内容')\n }\n}\n\nasync function applyMysqlSchema() {\n schemaLoading.value = true\n try {\n await ConfigServiceAPI.applyMysqlSchema()\n await loadMysqlSchema()\n await loadMysqlLiveIntrospect()\n await refreshStatus(false)\n ElMessage.success('已按 mysql-schema.json 对齐缺列及列类型')\n }\n catch {\n ElMessage.error('执行失败,请查看服务端日志')\n }\n finally {\n schemaLoading.value = false\n }\n}\n\nasync function openMysqlExportDialog() {\n mysqlExportDialogVisible.value = true\n mysqlExportSql.value = ''\n mysqlExportDescription.value = ''\n mysqlExportError.value = ''\n mysqlExportLoading.value = true\n try {\n const { data } = await ConfigServiceAPI.getMysqlSchemaExportSql()\n if (!data?.sql?.trim() || data?.error) {\n mysqlExportError.value = data?.error || '未生成 SQL'\n return\n }\n mysqlExportSql.value = data.sql\n mysqlExportDescription.value = data.description?.trim() ?? ''\n }\n catch {\n mysqlExportError.value = '加载失败,请稍后重试'\n }\n finally {\n mysqlExportLoading.value = false\n }\n}\n\nfunction onMysqlExportDialogClosed() {\n mysqlExportSql.value = ''\n mysqlExportDescription.value = ''\n mysqlExportError.value = ''\n}\n\nfunction closeMysqlExportDialog() {\n mysqlExportDialogVisible.value = false\n onMysqlExportDialogClosed()\n}\n\nconst adminUsersLoading = ref(false)\nconst adminUsersList = ref<ConfigServiceAPITypes.ConfigAdminUserRow[]>([])\nconst loginIsSuper = ref(false)\nconst loginIsSystem = ref(false)\nconst canOperateConfigAdmins = computed(() => loginIsSuper.value || loginIsSystem.value)\n\nconst adminCreateForm = reactive({\n account: '',\n pwd1: '',\n pwd2: '',\n bindPhone: false,\n phone: '',\n code: '',\n})\nconst adminCreateSubmitting = ref(false)\nconst adminResetVisible = ref(false)\nconst adminResetRow = ref<ConfigServiceAPITypes.ConfigAdminUserRow | null>(null)\nconst adminResetPwd1 = ref('')\nconst adminResetPwd2 = ref('')\nconst adminResetSubmitting = ref(false)\nconst adminCodeText = ref('获取验证码')\nconst adminCodeTime = ref(0)\n\nfunction refreshAdminCodeText() {\n if (adminCodeTime.value === 0) {\n adminCodeText.value = '获取验证码'\n return\n }\n adminCodeText.value = `${adminCodeTime.value}s`\n adminCodeTime.value -= 1\n setTimeout(refreshAdminCodeText, 1000)\n}\n\nfunction getAdminCreateCode() {\n if (!rMobilePhone.test(adminCreateForm.phone)) {\n ElMessage.warning('手机号格式不正确')\n return\n }\n PublicApi.getCode(adminCreateForm.phone).then(() => {\n adminCodeTime.value = 120\n refreshAdminCodeText()\n ElMessage.success('验证码已发送')\n })\n}\n\nfunction adminStatusLabel(status: number) {\n if (status === 0)\n return '正常'\n if (status === 1)\n return '冻结'\n if (status === 2)\n return '封禁'\n return String(status)\n}\n\nasync function loadLoginPower() {\n try {\n const { data } = await UserApi.checkPower()\n loginIsSuper.value = Boolean(data?.power)\n loginIsSystem.value = Boolean(data?.system)\n }\n catch {\n loginIsSuper.value = false\n loginIsSystem.value = false\n }\n}\n\nasync function loadAdminUsers() {\n adminUsersLoading.value = true\n try {\n const { data } = await ConfigServiceAPI.listConfigAdminUsers()\n adminUsersList.value = data?.list ?? []\n }\n catch {\n adminUsersList.value = []\n }\n finally {\n adminUsersLoading.value = false\n }\n}\n\nwatch(() => siteConfig.value?.needBindPhone, (need) => {\n if (need)\n adminCreateForm.bindPhone = true\n}, { immediate: true })\n\nfunction checkAdminCreateForm(): boolean {\n if (!canOperateConfigAdmins.value) {\n ElMessage.warning('当前账号无权创建超级管理员')\n return false\n }\n if (!rAccount.test(adminCreateForm.account)) {\n ElMessage.warning('帐号格式不正确(4-11位 数字字母)')\n return false\n }\n if (!rPassword.test(adminCreateForm.pwd1)) {\n ElMessage.warning('密码格式不正确(6-16位 支持字母/数字/下划线)')\n return false\n }\n if (adminCreateForm.pwd1 !== adminCreateForm.pwd2) {\n ElMessage.warning('两次输入的密码不一致')\n return false\n }\n if (adminCreateForm.bindPhone) {\n if (!rMobilePhone.test(adminCreateForm.phone)) {\n ElMessage.warning('手机号格式不正确')\n return false\n }\n if (!rVerCode.test(adminCreateForm.code)) {\n ElMessage.warning('验证码不正确(4位 数字)')\n return false\n }\n }\n return true\n}\n\nasync function submitCreateAdminUser() {\n if (!checkAdminCreateForm())\n return\n adminCreateSubmitting.value = true\n try {\n const { data } = await ConfigServiceAPI.createConfigAdminUser({\n account: adminCreateForm.account,\n pwd: adminCreateForm.pwd1,\n bindPhone: adminCreateForm.bindPhone,\n phone: adminCreateForm.phone,\n code: adminCreateForm.code,\n })\n if (!data?.ok) {\n ElMessage.error(data?.error || '创建失败')\n return\n }\n ElMessage.success('管理员账号已创建')\n adminCreateForm.account = ''\n adminCreateForm.pwd1 = ''\n adminCreateForm.pwd2 = ''\n adminCreateForm.phone = ''\n adminCreateForm.code = ''\n await loadAdminUsers()\n }\n catch {\n ElMessage.error('请求失败')\n }\n finally {\n adminCreateSubmitting.value = false\n }\n}\n\nfunction openAdminResetDialog(row: ConfigServiceAPITypes.ConfigAdminUserRow) {\n adminResetRow.value = row\n adminResetPwd1.value = ''\n adminResetPwd2.value = ''\n adminResetVisible.value = true\n}\n\nfunction closeAdminResetDialog() {\n adminResetVisible.value = false\n adminResetRow.value = null\n}\n\nasync function submitAdminResetPassword() {\n if (!adminResetRow.value) {\n return\n }\n if (!rPassword.test(adminResetPwd1.value)) {\n ElMessage.warning('密码格式不正确(6-16位 支持字母/数字/下划线)')\n return\n }\n if (adminResetPwd1.value !== adminResetPwd2.value) {\n ElMessage.warning('两次输入的密码不一致')\n return\n }\n adminResetSubmitting.value = true\n try {\n const { data } = await ConfigServiceAPI.resetConfigAdminUserPassword({\n id: adminResetRow.value.id,\n pwd: adminResetPwd1.value,\n })\n if (!data?.ok) {\n ElMessage.error(data?.error || '重置失败')\n return\n }\n ElMessage.success('密码已重置')\n closeAdminResetDialog()\n }\n catch {\n ElMessage.error('请求失败')\n }\n finally {\n adminResetSubmitting.value = false\n }\n}\n\nwatch(mysqlExportDialogVisible, (open) => {\n if (typeof document === 'undefined')\n return\n document.body.style.overflow = open ? 'hidden' : ''\n})\n\nasync function copyMysqlExportSqlAll() {\n const text = mysqlExportSql.value?.trim?.() ?? ''\n if (!text) {\n ElMessage.warning('暂无 SQL 可复制')\n return\n }\n try {\n await navigator.clipboard.writeText(mysqlExportSql.value)\n ElMessage.success('已复制全部 SQL')\n }\n catch {\n ElMessage.error('复制失败,请手动在文本框中选取复制')\n }\n}\n\nasync function refreshStatus(showSuccess = true) {\n if (loading.value)\n return\n loading.value = true\n try {\n const { data } = await ConfigServiceAPI.getServiceOverview()\n serviceOverview.value = data || []\n if (showSuccess) {\n ElMessage.success('服务状态刷新完成')\n }\n }\n catch {\n ElMessage.error('服务状态刷新失败')\n }\n finally {\n loading.value = false\n }\n}\n\nasync function getServiceConfig() {\n configLoading.value = true\n try {\n const { data } = await ConfigServiceAPI.getServiceConfig()\n serverConfig.value = data || []\n if (!activeConfigTab.value || !isActiveConfigTabValid(activeConfigTab.value)) {\n activeConfigTab.value = serverConfig.value[0]?.type || CONFIG_ADMIN_USERS_TAB\n }\n }\n catch {\n ElMessage.error('服务配置加载失败')\n }\n finally {\n configLoading.value = false\n }\n}\n\nfunction configMysqlDataToCheckBody(\n items: ServiceConfigItem[],\n): ConfigServiceAPITypes.MysqlCheckDatabaseBody {\n const pick = ['host', 'port', 'user', 'password', 'database'] as const\n const body: ConfigServiceAPITypes.MysqlCheckDatabaseBody = {}\n for (const it of items) {\n if (it.type !== 'mysql' || !pick.includes(it.key as typeof pick[number]))\n continue\n const k = it.key as keyof ConfigServiceAPITypes.MysqlCheckDatabaseBody\n body[k] = it.value as never\n }\n return body\n}\n\nasync function updateCfgGroup(group?: ConfigData) {\n if (!group || savingMap[group.type])\n return\n\n if (group.type === 'mysql') {\n let check: ConfigServiceAPITypes.MysqlCheckDatabaseResult | null = null\n try {\n const { data } = await ConfigServiceAPI.checkMysqlDatabase(configMysqlDataToCheckBody(group.data))\n check = data ?? null\n }\n catch {\n ElMessage.error('检测数据库状态失败')\n return\n }\n if (!check) {\n ElMessage.error('检测数据库状态失败')\n return\n }\n if (!check.canConnect) {\n ElMessage.error(check.error || '无法连接 MySQL,请检查地址与账号')\n return\n }\n if (!check.databaseExists) {\n const autoItem = group.data.find(i => i.key === 'autoCreateDatabase')\n const autoOn = Boolean(autoItem?.value)\n if (!autoOn) {\n const dbName = group.data.find(i => i.key === 'database')?.value\n const name = dbName != null ? String(dbName).trim() : ''\n const msg = name\n ? `服务器上不存在名为「${name}」的数据库。是否开启「无库时自动建库并按模板导入全部表结构」并保存?`\n : `服务器上不存在该数据库。是否开启「无库时自动建库并按模板导入全部表结构」并保存?`\n try {\n await ElMessageBox.confirm(\n msg,\n '数据库不存在',\n {\n type: 'warning',\n confirmButtonText: '开启并保存',\n cancelButtonText: '取消',\n },\n )\n }\n catch {\n return\n }\n if (autoItem) {\n autoItem.value = true\n }\n else {\n group.data.push({\n type: 'mysql',\n key: 'autoCreateDatabase',\n value: true,\n label: '无库时自动建库并按模板导入全部表结构',\n isSecret: false,\n })\n }\n }\n }\n }\n\n savingMap[group.type] = true\n try {\n await ConfigServiceAPI.updateCfg(group.data)\n ElMessage.success(`${group.title} 配置已保存`)\n await getServiceConfig()\n await refreshStatus(false)\n if (group.type === 'mysql') {\n await loadMysqlSchema()\n await loadMysqlLiveIntrospect()\n }\n }\n catch {\n ElMessage.error(`${group.title} 配置保存失败`)\n }\n finally {\n savingMap[group.type] = false\n }\n}\n\nonMounted(() => {\n refreshStatus(false)\n getServiceConfig()\n})\n\nasync function refreshMysqlToolsTab() {\n await loadMysqlSchema()\n await loadMysqlLiveIntrospect()\n}\n\nwatch(activeConfigTab, (t) => {\n if (t === MYSQL_INTROSPECT_TAB)\n refreshMysqlToolsTab()\n if (t === CONFIG_ADMIN_USERS_TAB) {\n loadLoginPower()\n loadAdminUsers()\n }\n})\n</script>\n\n<template>\n <div class=\"config-page\">\n <section class=\"hero-card\">\n <div>\n <p class=\"eyebrow\">\n 服务配置\n </p>\n <h1>依赖服务概况</h1>\n <p class=\"hero-desc\">\n 按服务端当前实际启用的能力展示依赖状态;未启用的 Redis 不展示,MongoDB 异常也不会影响本页配置管理。\n </p>\n </div>\n <div class=\"hero-stats\">\n <div>\n <strong>{{ overviewStats.running }}</strong>\n <span>运行中</span>\n </div>\n <div>\n <strong>{{ overviewStats.abnormal }}</strong>\n <span>需关注</span>\n </div>\n <div>\n <strong>{{ overviewStats.optional }}</strong>\n <span>可选服务</span>\n </div>\n </div>\n </section>\n\n <section class=\"panel\">\n <div class=\"section-head\">\n <div>\n <h2>总体依赖服务概况</h2>\n <Tip>这里只检查当前服务端正在使用或已配置的依赖服务。</Tip>\n </div>\n <el-button :loading=\"loading\" :icon=\"Refresh\" @click=\"refreshStatus()\">\n 刷新状态\n </el-button>\n </div>\n\n <el-empty v-if=\"!loading && !serviceOverview.length\" description=\"暂无可展示的服务依赖\" />\n <div v-else v-loading=\"loading\" class=\"service-grid\">\n <article\n v-for=\"service in serviceOverview\"\n :key=\"service.type\"\n class=\"service-card\"\n :class=\"{ error: !service.status }\"\n >\n <div class=\"service-card-head\">\n <div>\n <h3>{{ service.title }}</h3>\n <p>{{ service.description }}</p>\n </div>\n <el-tag :type=\"getServiceTagType(service)\" effect=\"dark\">\n {{ getServiceTagText(service) }}\n </el-tag>\n </div>\n <div class=\"service-meta\">\n <span>{{ service.required ? '核心依赖' : '可选依赖' }}</span>\n <span v-if=\"service.errMsg\" class=\"error-text\">{{ service.errMsg }}</span>\n </div>\n </article>\n </div>\n </section>\n\n <section v-show=\"showErrorList.length\" class=\"panel\">\n <div class=\"section-head compact\">\n <div>\n <h2>异常信息</h2>\n <p>以下服务未通过状态检查,可在对应配置 Tab 中集中修改后保存。</p>\n </div>\n </div>\n <div class=\"error-list\">\n <p v-for=\"err in showErrorList\" :key=\"err.type\">\n <strong>{{ err.title }}:</strong>\n <span>{{ err.errMsg }}</span>\n </p>\n </div>\n </section>\n\n <section class=\"panel\">\n <div class=\"section-head\">\n <div>\n <h2>服务相关配置</h2>\n <Tip>\n 各类服务按 Tab 展开编辑,同一类服务修改完成后统一保存。\n <a\n href=\"https://docs.ep.sugarat.top/deploy/online-new.html#_5-%E6%9C%80%E5%90%8E%E6%9B%B4%E6%96%B0%E9%85%8D%E7%BD%AE\"\n >\n <el-button type=\"primary\" link>配置手册?</el-button></a>\n </Tip>\n </div>\n </div>\n\n <el-empty v-if=\"!configLoading && !serverConfig.length\" description=\"暂无可编辑的服务配置\" />\n <div v-else v-loading=\"configLoading\">\n <el-tabs v-model=\"activeConfigTab\" class=\"config-tabs\">\n <el-tab-pane\n v-for=\"serverItem in serverConfig\"\n :key=\"serverItem.type\"\n :label=\"serverItem.title\"\n :name=\"serverItem.type\"\n >\n <div class=\"tab-head\">\n <div>\n <h3>{{ serverItem.title }}</h3>\n <p>{{ serverItem.description }}</p>\n </div>\n <el-button\n type=\"primary\"\n :loading=\"savingMap[serverItem.type]\"\n @click=\"updateCfgGroup(serverItem)\"\n >\n 保存 {{ serverItem.title }}\n </el-button>\n </div>\n\n <el-form label-position=\"top\" class=\"config-form\">\n <div class=\"field-list\">\n <el-form-item\n v-for=\"cfgItem in serverItem.data\"\n :key=\"cfgItem.key\"\n class=\"field-item\"\n >\n <template #label>\n <span class=\"field-label\">{{ cfgItem.label || cfgItem.key }}</span>\n <span v-if=\"cfgItem.isSecret\" class=\"field-desc\">敏感项未修改时会保持原值</span>\n </template>\n\n <el-switch\n v-if=\"isBooleanConfig(cfgItem)\"\n :model-value=\"Boolean(cfgItem.value)\"\n inline-prompt\n active-text=\"开\"\n inactive-text=\"关\"\n @update:model-value=\"updateConfigValue(cfgItem, $event)\"\n />\n <el-input-number\n v-else-if=\"isNumberConfig(cfgItem)\"\n :model-value=\"Number(cfgItem.value)\"\n :min=\"0\"\n controls-position=\"right\"\n class=\"full-control\"\n @update:model-value=\"updateConfigValue(cfgItem, Number($event))\"\n />\n <el-input\n v-else\n :model-value=\"String(cfgItem.value)\"\n :type=\"cfgItem.isSecret ? 'password' : 'text'\"\n :show-password=\"cfgItem.isSecret\"\n :placeholder=\"cfgItem.isSecret ? '留空则保持原值' : '请输入'\"\n clearable\n @update:model-value=\"updateConfigValue(cfgItem, $event)\"\n />\n </el-form-item>\n </div>\n </el-form>\n </el-tab-pane>\n\n <el-tab-pane\n v-if=\"showMysqlToolTabs\"\n label=\"MySQL · 在线库表\"\n :name=\"MYSQL_INTROSPECT_TAB\"\n >\n <div class=\"tab-head\">\n <div>\n <h3>MySQL 在线库表与结构脚本</h3>\n <p>\n 上半部分与发布包内 <code>mysql-schema.json</code> 对照,可预览整库建表 SQL、检测漂移并一键对齐;下半部分读取当前连接库的真实结构(可与上方对照)。\n </p>\n </div>\n <el-button :loading=\"schemaLoading || mysqlLiveLoading\" :icon=\"Refresh\" @click=\"refreshMysqlToolsTab\">\n 刷新\n </el-button>\n </div>\n\n <div class=\"mysql-merged-section mysql-tool-block mysql-tool-block--solo\">\n <div class=\"mysql-merged-section__head\">\n <h4 class=\"mysql-merged-section__title\">\n 结构与脚本\n </h4>\n <p class=\"mysql-merged-section__desc\">\n 基于 canonical 定义检测缺表、缺列与类型漂移;弹窗可预览完整建库 SQL。\n </p>\n </div>\n <div v-loading=\"schemaLoading\" class=\"mysql-schema-hints mysql-schema-hints--in-tab\">\n <template v-if=\"mysqlSchema\">\n <div v-if=\"!mysqlSchema.error\" class=\"mysql-export-actions\">\n <el-button size=\"small\" :loading=\"mysqlExportLoading\" @click=\"openMysqlExportDialog\">\n 预览建表 SQL(全屏)\n </el-button>\n <span class=\"mysql-export-actions__hint\">\n 弹窗内可浏览、框选复制片段,或使用「复制全部」。\n </span>\n </div>\n <el-alert\n v-if=\"mysqlSchema.error\"\n :closable=\"false\"\n show-icon\n type=\"error\"\n title=\"MySQL schema 检测失败\"\n class=\"mysql-schema-alert\"\n >\n <p>{{ mysqlSchema.error }}</p>\n </el-alert>\n <el-alert\n v-else-if=\"mysqlSchema.pending\"\n type=\"warning\"\n :closable=\"false\"\n show-icon\n class=\"mysql-schema-alert\"\n >\n <div class=\"schema-drift-body\">\n <p>当前数据库与发布包 docs/schema/mysql-schema.json 期望结构不一致。</p>\n <p v-if=\"(mysqlSchema.missingTables ?? []).length\" style=\"margin: 8px 0 0 0;\">\n <strong>缺表:</strong>\n </p>\n <ul v-if=\"(mysqlSchema.missingTables ?? []).length\">\n <li v-for=\"t in (mysqlSchema.missingTables ?? [])\" :key=\"t\">\n {{ t }}\n </li>\n </ul>\n <p v-if=\"(mysqlSchema.missingColumns ?? []).length\" style=\"margin: 8px 0 0 0;\">\n <strong>缺列:</strong>\n </p>\n <ul v-if=\"(mysqlSchema.missingColumns ?? []).length\">\n <li v-for=\"c in mysqlSchema.missingColumns\" :key=\"`${c.table}.${c.column}`\">\n {{ c.table }}.{{ c.column }}\n </li>\n </ul>\n <p v-if=\"(mysqlSchema.typeMismatches ?? []).length\" style=\"margin: 8px 0 0 0;\">\n <strong>列类型不符(normalized):</strong>\n </p>\n <ul v-if=\"(mysqlSchema.typeMismatches ?? []).length\">\n <li v-for=\"m in mysqlSchema.typeMismatches\" :key=\"`${m.table}.${m.column}`\">\n {{ m.table }}.{{ m.column }}\n :库 {{ m.actualComparable }} /\n 期望 {{ m.expectedComparable }}\n </li>\n </ul>\n <el-button type=\"primary\" :loading=\"schemaLoading\" style=\"margin-top: 8px\" @click=\"applyMysqlSchema\">\n 一键对齐表结构\n </el-button>\n </div>\n </el-alert>\n <el-alert\n v-else-if=\"!mysqlSchema.autoSyncSchemaOnStartup\"\n type=\"info\"\n :closable=\"false\"\n show-icon\n title=\"未开启启动时自动同步\"\n class=\"mysql-schema-alert\"\n >\n <p style=\"margin: 0 0 8px 0;\">\n 当前关闭「启动时自动补齐表结构」;建议在版本升级后轮询此处并手动执行对齐。\n </p>\n <el-button size=\"small\" type=\"primary\" :loading=\"schemaLoading\" @click=\"applyMysqlSchema\">\n 检查并补齐表结构\n </el-button>\n </el-alert>\n </template>\n </div>\n </div>\n\n <div class=\"mysql-tool-block mysql-tool-block--solo mysql-merged-section mysql-merged-section--live\">\n <div class=\"mysql-merged-section__head\">\n <h4 class=\"mysql-merged-section__title\">\n 在线库表\n </h4>\n <p class=\"mysql-merged-section__desc\">\n 读取 information_schema(InnoDB 行数为估算);每张表含字段、索引与 SHOW CREATE TABLE。\n </p>\n </div>\n <div v-loading=\"mysqlLiveLoading\" class=\"mysql-live-panel\">\n <el-alert\n v-if=\"mysqlLive?.error\"\n type=\"error\"\n :closable=\"false\"\n show-icon\n title=\"无法读取库表信息\"\n >\n <p>{{ mysqlLive.error }}</p>\n </el-alert>\n <template v-else-if=\"mysqlLive\">\n <p class=\"mysql-live-summary\">\n <span>MySQL {{ mysqlLive.mysqlVersion }}</span>\n <span>库 <strong>{{ mysqlLive.database }}</strong></span>\n <span>共 {{ mysqlLive.tables.length }} 张表</span>\n </p>\n <el-empty v-if=\"!mysqlLive.tables.length\" description=\"当前库中暂无业务表\" />\n <el-collapse v-else v-model=\"mysqlLiveOpenNames\" class=\"mysql-live-collapse\">\n <el-collapse-item v-for=\"tbl in mysqlLive.tables\" :key=\"tbl.name\" :name=\"tbl.name\">\n <template #title>\n <span class=\"mysql-live-collapse-title\">\n <strong>{{ tbl.name }}</strong>\n <span class=\"mysql-live-collapse-meta\">\n {{ tbl.engine || '—' }}\n <span v-if=\"tbl.rowEstimate != null\"> · 约 {{ tbl.rowEstimate.toLocaleString() }} 行</span>\n <span v-if=\"tbl.dataLength != null\"> · 数据 {{ formatBytes(tbl.dataLength) }}</span>\n <span v-if=\"tbl.indexLength != null\"> · 索引 {{ formatBytes(tbl.indexLength) }}</span>\n </span>\n </span>\n </template>\n\n <div class=\"mysql-live-block\">\n <h4>字段</h4>\n <el-table :data=\"tbl.columns\" size=\"small\" border stripe class=\"mysql-live-table\">\n <el-table-column prop=\"name\" label=\"列名\" min-width=\"120\" />\n <el-table-column prop=\"columnType\" label=\"类型\" min-width=\"140\" />\n <el-table-column label=\"可空\" width=\"72\" align=\"center\">\n <template #default=\"{ row }\">\n {{ row.nullable ? 'YES' : 'NO' }}\n </template>\n </el-table-column>\n <el-table-column prop=\"key\" label=\"键\" width=\"84\" />\n <el-table-column label=\"默认值\" min-width=\"100\" show-overflow-tooltip>\n <template #default=\"{ row }\">\n {{ row.default ?? 'NULL' }}\n </template>\n </el-table-column>\n <el-table-column prop=\"extra\" label=\"额外\" width=\"120\" />\n <el-table-column prop=\"comment\" label=\"注释\" min-width=\"120\" show-overflow-tooltip />\n </el-table>\n </div>\n\n <div class=\"mysql-live-block\">\n <h4>索引</h4>\n <el-table v-if=\"tbl.indexes.length\" :data=\"tbl.indexes\" size=\"small\" border stripe class=\"mysql-live-table\">\n <el-table-column prop=\"name\" label=\"索引名\" min-width=\"120\" />\n <el-table-column label=\"唯一\" width=\"72\" align=\"center\">\n <template #default=\"{ row }\">\n {{ row.unique ? '是' : '否' }}\n </template>\n </el-table-column>\n <el-table-column prop=\"indexType\" label=\"类型\" width=\"100\" />\n <el-table-column label=\"列(序)\" min-width=\"200\">\n <template #default=\"{ row }\">\n {{ indexColumnsLabel(row) }}\n </template>\n </el-table-column>\n </el-table>\n <p v-else class=\"mysql-live-muted\">\n 无二级索引(或仅剩主键于信息模式中已展示于「键」列)\n </p>\n </div>\n\n <div class=\"mysql-live-block\">\n <div class=\"mysql-live-ddl-head\">\n <h4>SHOW CREATE TABLE</h4>\n <el-button size=\"small\" @click=\"copyMysqlTableDdl(tbl)\">\n 复制建表 SQL\n </el-button>\n </div>\n <el-input\n :model-value=\"tbl.createSql\"\n type=\"textarea\"\n readonly\n :rows=\"10\"\n class=\"mysql-live-ddl\"\n spellcheck=\"false\"\n />\n </div>\n </el-collapse-item>\n </el-collapse>\n </template>\n </div>\n </div>\n </el-tab-pane>\n\n <el-tab-pane label=\"系统管理员\" :name=\"CONFIG_ADMIN_USERS_TAB\">\n <div class=\"tab-head\">\n <div>\n <h3>系统管理员账号</h3>\n <p>\n 来自业务库 <code>user</code> 表,列出超级管理员与系统管理员。<strong>系统管理员与超级管理员</strong>均可在此新增超级管理员、重置管理员密码;新增规则与「注册」一致(不受站点「关闭注册」影响)。\n </p>\n </div>\n <el-button :loading=\"adminUsersLoading\" :icon=\"Refresh\" @click=\"loadAdminUsers\">\n 刷新列表\n </el-button>\n </div>\n <div v-loading=\"adminUsersLoading\" class=\"admin-users-panel\">\n <el-table :data=\"adminUsersList\" size=\"small\" border stripe class=\"admin-users-table\">\n <el-table-column prop=\"account\" label=\"账号\" min-width=\"120\" />\n <el-table-column prop=\"powerLabel\" label=\"权限\" width=\"120\" />\n <el-table-column prop=\"phoneMasked\" label=\"手机号\" min-width=\"120\" />\n <el-table-column label=\"状态\" width=\"88\">\n <template #default=\"{ row }\">\n {{ adminStatusLabel(row.status) }}\n </template>\n </el-table-column>\n <el-table-column label=\"注册时间\" min-width=\"160\" show-overflow-tooltip>\n <template #default=\"{ row }\">\n {{ row.joinTime || '—' }}\n </template>\n </el-table-column>\n <el-table-column v-if=\"canOperateConfigAdmins\" label=\"操作\" width=\"100\" fixed=\"right\">\n <template #default=\"{ row }\">\n <el-button type=\"primary\" link size=\"small\" @click=\"openAdminResetDialog(row)\">\n 重置密码\n </el-button>\n </template>\n </el-table-column>\n </el-table>\n\n <div v-if=\"canOperateConfigAdmins\" class=\"mysql-tool-block mysql-tool-block--solo admin-create-block\">\n <h3 class=\"mysql-tool-block__title\">\n 新增超级管理员\n </h3>\n <p class=\"mysql-tool-block__desc\">\n 创建后账号权限为「超级管理员」。若站点开启须绑定手机,则需按注册流程校验手机号。\n </p>\n <el-form label-position=\"top\" class=\"admin-create-form\">\n <div class=\"admin-create-grid\">\n <el-form-item label=\"登录账号\">\n <el-input v-model=\"adminCreateForm.account\" maxlength=\"11\" placeholder=\"4-11 位数字或字母\" clearable />\n </el-form-item>\n <el-form-item label=\"密码\">\n <el-input v-model=\"adminCreateForm.pwd1\" type=\"password\" show-password clearable />\n </el-form-item>\n <el-form-item label=\"确认密码\">\n <el-input v-model=\"adminCreateForm.pwd2\" type=\"password\" show-password clearable />\n </el-form-item>\n <el-form-item label=\"绑定手机\">\n <el-checkbox v-model=\"adminCreateForm.bindPhone\" :disabled=\"siteConfig?.needBindPhone\">\n 绑定手机号(与注册一致)\n </el-checkbox>\n </el-form-item>\n <template v-if=\"adminCreateForm.bindPhone\">\n <el-form-item label=\"手机号\">\n <el-input v-model=\"adminCreateForm.phone\" maxlength=\"11\" clearable />\n </el-form-item>\n <el-form-item label=\"验证码\">\n <div class=\"code-row\">\n <el-input v-model=\"adminCreateForm.code\" maxlength=\"4\" clearable />\n <el-button :disabled=\"adminCodeTime > 0\" @click=\"getAdminCreateCode\">\n {{ adminCodeText }}\n </el-button>\n </div>\n </el-form-item>\n </template>\n </div>\n <el-button type=\"primary\" :loading=\"adminCreateSubmitting\" @click=\"submitCreateAdminUser\">\n 创建超级管理员\n </el-button>\n </el-form>\n </div>\n </div>\n\n <el-dialog\n v-model=\"adminResetVisible\"\n title=\"重置管理员密码\"\n width=\"420px\"\n destroy-on-close\n @closed=\"closeAdminResetDialog\"\n >\n <p v-if=\"adminResetRow\" class=\"admin-reset-hint\">\n 账号 <strong>{{ adminResetRow.account }}</strong>({{ adminResetRow.powerLabel }})\n </p>\n <el-form label-position=\"top\" class=\"admin-reset-form\">\n <el-form-item label=\"新密码\">\n <el-input v-model=\"adminResetPwd1\" type=\"password\" show-password clearable autocomplete=\"new-password\" />\n </el-form-item>\n <el-form-item label=\"确认新密码\">\n <el-input v-model=\"adminResetPwd2\" type=\"password\" show-password clearable autocomplete=\"new-password\" />\n </el-form-item>\n </el-form>\n <template #footer>\n <el-button @click=\"closeAdminResetDialog\">\n 取消\n </el-button>\n <el-button type=\"primary\" :loading=\"adminResetSubmitting\" @click=\"submitAdminResetPassword\">\n 确定重置\n </el-button>\n </template>\n </el-dialog>\n </el-tab-pane>\n </el-tabs>\n\n <div v-if=\"currentConfig\" class=\"bottom-actions-row\">\n <p class=\"bottom-actions-hint\">\n 与当前 Tab 右上角「保存 {{ currentConfig.title }}」是同一功能;表单项较多时滚到此处保存即可。\n </p>\n <el-button\n type=\"primary\"\n :loading=\"savingMap[currentConfig.type]\"\n @click=\"updateCfgGroup(currentConfig)\"\n >\n 保存当前服务配置\n </el-button>\n </div>\n </div>\n </section>\n\n <Teleport to=\"body\">\n <div\n v-if=\"mysqlExportDialogVisible\"\n class=\"mysql-export-fs\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"mysql-export-fs-title\"\n >\n <div class=\"mysql-export-fs__shell\">\n <header class=\"mysql-export-fs__head\">\n <h2 id=\"mysql-export-fs-title\" class=\"mysql-export-fs__title\">\n 完整建表 SQL(mysql-schema.json)\n </h2>\n <div class=\"mysql-export-fs__head-actions\">\n <el-button size=\"small\" @click=\"closeMysqlExportDialog\">\n 关闭\n </el-button>\n </div>\n </header>\n <div v-loading=\"mysqlExportLoading\" class=\"mysql-export-fs__main\">\n <el-alert\n v-if=\"mysqlExportError\"\n type=\"error\"\n :closable=\"false\"\n show-icon\n :title=\"mysqlExportError\"\n />\n <template v-else>\n <p v-if=\"mysqlExportDescription\" class=\"mysql-export-fs__desc\">\n {{ mysqlExportDescription }}\n </p>\n <p class=\"mysql-export-fs__hint\">\n 在下方可直接框选复制局部语句;需要整段请点底部「复制全部」。\n </p>\n <textarea\n v-model=\"mysqlExportSql\"\n readonly\n spellcheck=\"false\"\n class=\"mysql-export-fs__textarea\"\n placeholder=\"正在加载…\"\n />\n </template>\n </div>\n <footer class=\"mysql-export-fs__foot\">\n <el-button @click=\"closeMysqlExportDialog\">\n 关闭\n </el-button>\n <el-button\n type=\"primary\"\n :disabled=\"!mysqlExportSql.trim() || !!mysqlExportError\"\n @click=\"copyMysqlExportSqlAll\"\n >\n 复制全部\n </el-button>\n </footer>\n </div>\n </div>\n </Teleport>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.config-page {\n max-width: 1256px;\n margin: 10px auto;\n color: #1f2937;\n}\n\n.hero-card,\n.panel {\n box-sizing: border-box;\n border: 1px solid #edf0f5;\n border-radius: 18px;\n background: #fff;\n box-shadow: 0 10px 30px rgb(31 41 55 / 8%);\n}\n\n.hero-card {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 24px;\n padding: 28px 32px;\n overflow: hidden;\n background:\n radial-gradient(circle at 88% 20%, rgb(64 158 255 / 18%), transparent 28%),\n linear-gradient(135deg, #fff 0%, #f6f9ff 100%);\n\n h1 {\n margin: 6px 0 10px;\n font-size: 30px;\n line-height: 1.2;\n }\n}\n\n.eyebrow {\n margin: 0;\n color: #409eff;\n font-size: 13px;\n font-weight: 700;\n letter-spacing: 0.12em;\n}\n\n.hero-desc {\n max-width: 640px;\n margin: 0;\n color: #6b7280;\n line-height: 1.7;\n}\n\n.hero-stats {\n display: grid;\n grid-template-columns: repeat(3, 92px);\n gap: 10px;\n\n div {\n display: grid;\n place-items: center;\n min-height: 92px;\n border-radius: 20px;\n background: rgb(255 255 255 / 74%);\n box-shadow: inset 0 0 0 1px rgb(64 158 255 / 12%);\n }\n\n strong {\n color: #2563eb;\n font-size: 32px;\n line-height: 1;\n }\n\n span {\n color: #6b7280;\n font-size: 13px;\n }\n}\n\n.panel {\n margin-top: 18px;\n padding: 24px;\n}\n\n.section-head {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 16px;\n margin-bottom: 20px;\n\n &.compact {\n margin-bottom: 12px;\n }\n\n h2 {\n margin: 0 0 6px;\n font-size: 20px;\n }\n\n p {\n margin: 0;\n color: #6b7280;\n line-height: 1.6;\n }\n}\n\n.service-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n gap: 14px;\n}\n\n.service-card {\n padding: 16px;\n border: 1px solid #e8edf5;\n border-radius: 14px;\n background: #fbfdff;\n\n &.error {\n background: #fff8f8;\n }\n}\n\n.service-card-head {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n\n h3 {\n margin: 0 0 6px;\n font-size: 17px;\n }\n\n p {\n margin: 0;\n color: #6b7280;\n font-size: 13px;\n line-height: 1.5;\n }\n}\n\n.service-meta {\n display: grid;\n gap: 8px;\n margin-top: 14px;\n color: #8a94a6;\n font-size: 13px;\n}\n\n.error-text,\n.error-list span {\n color: #d03050;\n word-break: break-all;\n}\n\n.error-list {\n display: grid;\n gap: 8px;\n\n p {\n margin: 0;\n line-height: 1.6;\n }\n}\n\n.config-tabs {\n :deep(.el-tabs__header) {\n margin-bottom: 14px;\n }\n\n :deep(.el-tabs__nav-wrap::after) {\n height: 1px;\n background-color: #edf0f5;\n }\n\n :deep(.el-tabs__item) {\n height: 36px;\n padding: 0 18px;\n color: #6b7280;\n font-weight: 700;\n }\n}\n\n.tab-head {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 16px;\n margin-bottom: 14px;\n padding: 12px 14px;\n border-radius: 12px;\n background: #f7faff;\n\n h3 {\n margin: 0 0 5px;\n font-size: 16px;\n }\n\n p {\n margin: 0;\n color: #6b7280;\n line-height: 1.5;\n }\n}\n\n.field-list {\n display: grid;\n gap: 12px;\n}\n\n.config-form :deep(.el-form-item) {\n margin-bottom: 0;\n}\n\n.field-item {\n min-width: 0;\n display: grid;\n grid-template-columns: minmax(180px, 1fr) minmax(220px, 380px);\n align-items: center;\n gap: 16px;\n padding: 12px 14px;\n border: 1px solid #edf0f5;\n border-radius: 12px;\n background: #fff;\n\n :deep(.el-form-item__label) {\n margin-bottom: 0;\n padding-right: 0;\n line-height: 1.4;\n }\n\n :deep(.el-form-item__content) {\n min-width: 0;\n }\n}\n\n.field-label,\n.field-desc {\n display: block;\n}\n\n.field-label {\n color: #1f2937;\n font-size: 14px;\n font-weight: 700;\n}\n\n.field-desc {\n margin-top: 3px;\n color: #8a94a6;\n font-size: 13px;\n}\n\n.full-control {\n width: 100%;\n}\n\n.bottom-actions-row {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-wrap: wrap;\n gap: 12px 16px;\n margin-top: 18px;\n}\n\n.bottom-actions-hint {\n flex: 1 1 220px;\n margin: 0;\n margin-right: auto;\n min-width: 0;\n color: #6b7280;\n font-size: 13px;\n line-height: 1.5;\n}\n\n.mysql-live-panel {\n min-height: 120px;\n}\n\n.mysql-tool-block {\n margin-top: 28px;\n padding: 20px 18px;\n border: 1px solid #edf0f5;\n border-radius: 14px;\n background: #fbfdff;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.mysql-tool-block__head {\n margin-bottom: 14px;\n\n &--row {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px 20px;\n }\n}\n\n.mysql-tool-block__title {\n margin: 0 0 6px;\n font-size: 16px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.mysql-tool-block__desc {\n margin: 0;\n color: #6b7280;\n font-size: 13px;\n line-height: 1.5;\n}\n\n.mysql-schema-hints--in-tab {\n margin-top: 4px;\n}\n\n.mysql-export-actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px 12px;\n margin-bottom: 12px;\n}\n\n.mysql-export-actions__hint {\n color: var(--el-text-color-secondary);\n font-size: 13px;\n}\n\n.mysql-schema-alert {\n margin-bottom: 12px;\n}\n\n.mysql-tool-block--solo {\n margin-top: 16px;\n}\n\n.mysql-merged-section {\n margin-top: 0;\n}\n\n.mysql-merged-section--live {\n margin-top: 20px;\n}\n\n.mysql-merged-section__head {\n margin-bottom: 12px;\n}\n\n.mysql-merged-section__title {\n margin: 0 0 6px;\n font-size: 16px;\n font-weight: 600;\n color: #303133;\n}\n\n.mysql-merged-section__desc {\n margin: 0;\n font-size: 13px;\n line-height: 1.5;\n color: #606266;\n}\n\n.admin-users-panel {\n margin-top: 8px;\n}\n\n.admin-users-table {\n width: 100%;\n margin-bottom: 24px;\n}\n\n.admin-create-block {\n margin-top: 8px;\n}\n\n.admin-create-form {\n max-width: 720px;\n}\n\n.admin-create-grid {\n display: grid;\n gap: 4px 20px;\n grid-template-columns: repeat(2, minmax(200px, 1fr));\n margin-bottom: 12px;\n}\n\n.code-row {\n display: flex;\n gap: 10px;\n align-items: center;\n width: 100%;\n\n .el-input {\n flex: 1;\n }\n}\n\n.field-hint-muted {\n margin: 6px 0 0;\n color: #8a94a6;\n font-size: 12px;\n}\n\n.admin-reset-hint {\n margin: 0 0 12px;\n color: #606266;\n font-size: 14px;\n}\n\n@media screen and (max-width: 700px) {\n .admin-create-grid {\n grid-template-columns: 1fr;\n }\n}\n\n.mysql-live-summary {\n display: flex;\n flex-wrap: wrap;\n gap: 10px 18px;\n margin: 0 0 14px;\n color: #6b7280;\n font-size: 13px;\n line-height: 1.5;\n}\n\n.mysql-live-collapse {\n border: none;\n\n :deep(.el-collapse-item__header) {\n height: auto;\n min-height: 48px;\n padding: 10px 12px;\n line-height: 1.4;\n background: #fbfdff;\n }\n\n :deep(.el-collapse-item__wrap) {\n border-bottom: 1px solid #edf0f5;\n }\n\n :deep(.el-collapse-item__content) {\n padding-bottom: 16px;\n }\n}\n\n.mysql-live-collapse-title {\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n gap: 8px 14px;\n width: 100%;\n padding-right: 8px;\n}\n\n.mysql-live-collapse-meta {\n color: #8a94a6;\n font-size: 13px;\n font-weight: 400;\n}\n\n.mysql-live-block {\n margin-top: 16px;\n\n h4 {\n margin: 0 0 10px;\n font-size: 14px;\n color: #374151;\n }\n}\n\n.mysql-live-table {\n width: 100%;\n}\n\n.mysql-live-muted {\n margin: 0;\n color: #8a94a6;\n font-size: 13px;\n}\n\n.mysql-live-ddl-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.mysql-live-ddl {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;\n font-size: 12px;\n}\n\n.tab-head code {\n padding: 1px 6px;\n border-radius: 4px;\n background: rgb(64 158 255 / 12%);\n font-size: 12px;\n}\n\n@media screen and (max-width: 900px) {\n .config-page {\n margin-top: 40px;\n }\n\n .hero-card {\n align-items: flex-start;\n flex-direction: column;\n padding: 22px;\n }\n\n .hero-stats {\n width: 100%;\n grid-template-columns: repeat(3, 1fr);\n }\n\n .field-item {\n grid-template-columns: 1fr;\n gap: 8px;\n }\n}\n\n@media screen and (max-width: 700px) {\n .config-page {\n margin: 40px 10px 0;\n }\n\n .panel {\n padding: 18px;\n border-radius: 14px;\n }\n\n .section-head,\n .tab-head {\n display: block;\n }\n\n .section-head .el-button,\n .tab-head .el-button {\n width: 100%;\n margin-top: 14px;\n }\n\n .hero-stats {\n grid-template-columns: 1fr;\n }\n\n .config-tabs :deep(.el-tabs__nav-scroll) {\n overflow-x: auto;\n }\n\n .field-item {\n padding: 12px;\n }\n\n .bottom-actions-row {\n flex-direction: column;\n align-items: stretch;\n }\n\n .bottom-actions-hint {\n margin-right: 0;\n }\n\n .bottom-actions-row .el-button {\n width: 100%;\n }\n}\n</style>\n\n<!-- Teleport 全屏预览:挂载到 body,样式独立于 scoped -->\n<style lang=\"scss\">\n.mysql-export-fs {\n position: fixed;\n inset: 0;\n z-index: 3000;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n background: var(--el-bg-color, #fff);\n}\n\n.mysql-export-fs__shell {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n min-width: 0;\n width: 100%;\n height: 100%;\n background: inherit;\n}\n\n.mysql-export-fs__head {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n padding: 14px 18px;\n border-bottom: 1px solid var(--el-border-color-lighter, #ebeef5);\n box-sizing: border-box;\n}\n\n.mysql-export-fs__title {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--el-text-color-primary);\n}\n\n.mysql-export-fs__main {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 12px 18px;\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.mysql-export-fs__desc {\n margin: 0;\n flex-shrink: 0;\n font-size: 13px;\n line-height: 1.5;\n color: var(--el-text-color-secondary);\n}\n\n.mysql-export-fs__hint {\n margin: 0;\n flex-shrink: 0;\n font-size: 13px;\n line-height: 1.5;\n color: var(--el-text-color-regular);\n}\n\n.mysql-export-fs__textarea {\n flex: 1 1 0;\n min-height: 0;\n width: 100%;\n resize: none;\n box-sizing: border-box;\n padding: 12px 14px;\n border: 1px solid var(--el-border-color, #dcdfe6);\n border-radius: var(--el-border-radius-base, 4px);\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;\n font-size: 13px;\n line-height: 1.5;\n tab-size: 2;\n color: var(--el-text-color-primary);\n background: var(--el-fill-color-blank, #fff);\n cursor: text;\n overflow-y: auto;\n}\n\n.mysql-export-fs__textarea:focus-visible {\n outline: 2px solid var(--el-color-primary);\n outline-offset: 0;\n}\n\n.mysql-export-fs__foot {\n flex-shrink: 0;\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n padding: 12px 18px;\n border-top: 1px solid var(--el-border-color-lighter, #ebeef5);\n box-sizing: border-box;\n}\n</style>\n"],"names":["collapseContextKey","emitChangeFn","value","isNumber","collapseProps","buildProps","definePropType","mutable","collapseEmits","UPDATE_MODEL_EVENT","CHANGE_EVENT","__default__","_sfc_main","defineComponent","__props","expose","emit","props","ns","useNamespace","activeNames","ref","castArray","setActiveNames","_activeNames","handleItemClick","name","index","watch","provide","_ctx","_cache","openBlock","createElementBlock","normalizeClass","unref","renderSlot","Collapse","_export_sfc","collapseItemProps","generateId","_hoisted_1","_hoisted_2","_hoisted_3","collapse","inject","focusing","isClick","id","isActive","computed","handleFocus","handleHeaderClick","handleEnterClick","createElementVNode","withKeys","withModifiers","$event","createTextVNode","toDisplayString","createVNode","ElIcon","withCtx","ArrowRight","_CollapseTransition","withDirectives","vShow","CollapseItem","ElCollapse","withInstall","ElCollapseItem","withNoopInstall","getServiceOverview","ajax","getMysqlSchema","getMysqlSchemaExportSql","applyMysqlSchema","getMysqlLiveIntrospect","checkMysqlDatabase","body","listConfigAdminUsers","createConfigAdminUser","resetConfigAdminUserPassword","getServiceConfig","updateCfg","data","ConfigServiceAPI","MYSQL_INTROSPECT_TAB","CONFIG_ADMIN_USERS_TAB","siteConfig","useSiteConfig","mysqlSchema","schemaLoading","mysqlExportDialogVisible","mysqlExportLoading","mysqlExportSql","mysqlExportDescription","mysqlExportError","serviceOverview","serverConfig","loading","configLoading","activeConfigTab","savingMap","reactive","overviewStats","total","running","item","required","optional","showErrorList","showMysqlToolTabs","s","mysqlLive","mysqlLiveLoading","mysqlLiveOpenNames","currentConfig","isActiveConfigTabValid","getServiceTagType","service","getServiceTagText","isBooleanConfig","isNumberConfig","updateConfigValue","loadMysqlSchema","e","loadMysqlLiveIntrospect","formatBytes","n","units","v","i","indexColumnsLabel","idx","c","p","copyMysqlTableDdl","tbl","text","_b","_a","ElMessage","refreshStatus","openMysqlExportDialog","_c","onMysqlExportDialogClosed","closeMysqlExportDialog","adminUsersLoading","adminUsersList","loginIsSuper","loginIsSystem","canOperateConfigAdmins","adminCreateForm","adminCreateSubmitting","adminResetVisible","adminResetRow","adminResetPwd1","adminResetPwd2","adminResetSubmitting","adminCodeText","adminCodeTime","refreshAdminCodeText","getAdminCreateCode","rMobilePhone","PublicApi","adminStatusLabel","status","loadLoginPower","UserApi","loadAdminUsers","need","checkAdminCreateForm","rAccount","rPassword","rVerCode","submitCreateAdminUser","openAdminResetDialog","row","closeAdminResetDialog","submitAdminResetPassword","open","copyMysqlExportSqlAll","showSuccess","configMysqlDataToCheckBody","items","pick","it","k","updateCfgGroup","group","check","autoItem","dbName","msg","ElMessageBox","onMounted","refreshMysqlToolsTab","t"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
@@ -0,0 +1 @@
1
+ .el-tag[data-v-908593e0]{margin-left:10px;margin-bottom:10px;cursor:pointer}.new-tag-wrap[data-v-908593e0]{display:flex;align-items:center}.button-new-tag[data-v-908593e0]{margin-left:10px;height:32px;line-height:30px;padding-top:0;padding-bottom:0}.input-new-tag[data-v-908593e0]{width:120px;padding:0;margin-left:10px;margin-bottom:10px;vertical-align:bottom}.panel[data-v-908593e0]{padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}.btn-area[data-v-908593e0]{display:flex;justify-content:center}.list-tip[data-v-908593e0]{margin-right:10px;flex:1;text-align:right}.tag-wrap[data-v-908593e0]{width:100%;height:150px}.tag-list[data-v-908593e0]{height:150px;overflow-x:hidden;overflow-y:scroll;display:flex;flex-wrap:wrap}.tag-list[data-v-908593e0] .el-tag{width:140px}.tag-list[data-v-908593e0] .el-tag__content{width:100px;text-align:center;text-overflow:ellipsis;word-break:keep-all;overflow:hidden}.btn-area[data-v-3758d543]{display:flex;justify-content:center}.input-container[data-v-3758d543]{margin:15px auto;max-width:600px;background-color:#fff;display:flex;justify-content:space-around}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank)}.el-card{border-radius:var(--el-card-border-radius);border:1px solid var(--el-card-border-color);background-color:var(--el-card-bg-color);overflow:hidden;color:var(--el-text-color-primary);transition:var(--el-transition-duration)}.el-card.is-always-shadow{box-shadow:var(--el-box-shadow-light)}.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box}.el-card__body{padding:var(--el-card-padding)}.task-item[data-v-b862420d]{min-width:400px;margin-top:1em}.task-item .header[data-v-b862420d]{overflow:hidden;display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap}.task-item .header .actions[data-v-b862420d]{min-width:200px;padding:3px 0;margin-left:20px}.task-item .body[data-v-b862420d]{min-height:30px}.task-item .body .empty[data-v-b862420d]{text-align:center;font-size:12px;color:gray}.task-item .body ul[data-v-b862420d]{font-size:12px;color:gray;list-style:none}.task-item .body ul .time[data-v-b862420d]{margin-right:10px}@media screen and (max-width: 700px){.task-item[data-v-b862420d]{min-width:100%}}.check-files[data-v-b862420d]{display:flex;justify-content:space-between;align-items:center}.check-files a[data-v-b862420d]{color:#409eff}.tasks[data-v-2d10c34e]{max-width:1024px;margin:0 auto;padding-bottom:2em}.tasks[data-v-2d10c34e] .el-dialog__body{padding-top:10px}.panel[data-v-2d10c34e]{padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}.task-list[data-v-2d10c34e]{display:flex;flex-wrap:wrap;justify-content:space-around}@media screen and (max-width: 700px){.categorys-area[data-v-2d10c34e]{margin-top:20px}[data-v-2d10c34e] .el-tabs__nav-scroll{overflow-x:scroll}[data-v-2d10c34e] .el-tabs__nav-scroll::-webkit-scrollbar{display:none}}
@@ -0,0 +1 @@
1
+ @media screen and (max-width: 700px){.user[data-v-9d0301c0]{margin-top:40px!important}.log-filter[data-v-9d0301c0]{justify-content:center}}.user[data-v-9d0301c0]{margin:0 auto}.panel[data-v-9d0301c0]{max-width:1256px;padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}.log-filter[data-v-9d0301c0]{display:flex;flex-wrap:wrap}.log-filter .item[data-v-9d0301c0]{margin-right:10px;margin-bottom:10px}.log-filter .item .label[data-v-9d0301c0]{margin-right:10px;font-size:12px}.text-btn-list[data-v-9d0301c0]{display:flex;flex-wrap:wrap}.text-btn-list button[data-v-9d0301c0]{margin-left:0}
@@ -0,0 +1,2 @@
1
+ System.register(["./index-legacy-BsWj1xV2.js","./el-scrollbar-legacy-CLEobATW.js","./el-dropdown-item-legacy-D5N_3F3d.js","./el-tab-pane-legacy-Cgd5IxXQ.js","./index-legacy-BUrH0Ubh.js","./aria-legacy-B70JmEZA.js"],(function(e,t){"use strict";var a,l,o,n,i,r,p,s,d,c,f,v,u,g,b,h,m,x,w,y,k,_,C,z,A,V,H,M,S,j,B,E,$,L,U,I,N,R,O,T,W,D,P,Z,q,F,G,J,K,Q,X,Y,ee,te,ae;return{setters:[e=>{a=e.H,l=e.I,o=e.J,n=e.K,i=e.L,r=e.d,p=e.M,s=e.N,d=e.r,c=e.j,f=e.O,v=e.a,u=e.B,g=e.w,b=e.c,h=e.D,m=e.t,x=e.Q,w=e.R,y=e.e,k=e.S,_=e.T,C=e.V,z=e.W,A=e.f,V=e.b,H=e.X,M=e.Y,S=e.Z,j=e.F,B=e.A,E=e.n,$=e.i,L=e.$,U=e.s,I=e.a0,N=e._,R=e.a1,O=e.o,T=e.a2,W=e.u,D=e.g,P=e.U,Z=e.h,q=e.a3,F=e.E,G=e.G},null,e=>{J=e.d,K=e.a,Q=e.E,X=e.b,Y=e.c},e=>{ee=e.E,te=e.a},e=>{ae=e.E},null],execute:function(){var t=document.createElement("style");t.textContent=".el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);min-width:150px;border-radius:var(--el-popover-border-radius);border:1px solid var(--el-popover-border-color);padding:var(--el-popover-padding);z-index:var(--el-index-popper);color:var(--el-text-color-regular);line-height:1.4;text-align:justify;font-size:var(--el-popover-font-size);box-shadow:var(--el-box-shadow-light);word-break:break-all;box-sizing:border-box}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.message-list[data-v-1aac0ffc]{list-style:none;max-height:500px;overflow-y:scroll}.message-list li[data-v-1aac0ffc]{border-bottom:1px solid #ddd;padding:10px;cursor:pointer}.message-list li.read[data-v-1aac0ffc]{opacity:.5}.message-list li.read[data-v-1aac0ffc]:hover{opacity:.9}.message-list li[data-v-1aac0ffc]:last-child{border-bottom:none}.message-list li p.text[data-v-1aac0ffc]{font-size:16px;display:-webkit-box;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical}.message-list li p.date[data-v-1aac0ffc]{font-size:14px;margin-top:4px}.empty[data-v-1aac0ffc]{text-align:center;padding:10px}.dialog-date[data-v-1aac0ffc]{font-size:14px;text-align:right;padding:10px;color:gray}.message-text{overflow-y:scroll;max-height:500px}.message-text ul,.message-text ol{list-style:none}.message-panel[data-v-9fb03fce]{margin-right:10px}.dashboard[data-v-5bc955ff]{background-color:#fafafa}.pc-nav[data-v-5bc955ff]{background-color:#fff;display:flex;padding:10px;justify-content:space-between;align-items:center}.pc-nav .exit[data-v-5bc955ff]{cursor:pointer;display:flex;align-items:center}.pc-nav .exit .exit-info[data-v-5bc955ff]{display:flex;justify-content:center;align-items:center}.pc-nav .exit .exit-info>span[data-v-5bc955ff]{margin-right:5px;display:block;max-width:70px}.pc-nav .nav[data-v-5bc955ff]{display:flex}.pc-nav .nav nav[data-v-5bc955ff]{display:flex;align-items:center}.pc-nav .nav nav .nav-item[data-v-5bc955ff]{font-size:1rem;color:#595959;padding:10px;cursor:pointer;display:flex;align-items:center;justify-content:center}.pc-nav .nav nav .nav-item.active[data-v-5bc955ff]{color:#409eff!important;font-weight:600}.pc-nav .nav .exit[data-v-5bc955ff]{color:#595959}.pc-nav .logo[data-v-5bc955ff]{width:180px;margin:0 10px}.pc-nav .logo img[data-v-5bc955ff]{height:40px}#navActive[data-v-5bc955ff]{display:none;opacity:0}#navMenu[data-v-5bc955ff]{display:none}.mobile-message-bell[data-v-5bc955ff]{display:none;position:fixed;right:0;top:0}@media screen and (max-width: 700px){#navActive[data-v-5bc955ff]{display:block;position:fixed;left:0;top:0}.mobile-message-bell[data-v-5bc955ff]{display:block}#navMenu[data-v-5bc955ff]{cursor:pointer;display:block;position:absolute;left:10px;top:5px;font-size:2rem}.pc-nav[data-v-5bc955ff]{position:fixed;left:0;right:0;top:0;z-index:6}.pc-nav .nav[data-v-5bc955ff]{flex-wrap:wrap;width:100%}.pc-nav .nav .logo[data-v-5bc955ff]{width:100%;text-align:center}.pc-nav #navActive+nav[data-v-5bc955ff]{display:none}.pc-nav #navActive:checked+nav[data-v-5bc955ff]{display:flex;flex-direction:column;width:100%;position:absolute;z-index:1;background:#fff;left:0;top:50px}.pc-nav #navActive:checked+nav+.mask[data-v-5bc955ff]{display:block;position:fixed;left:0;right:0;bottom:0;top:50px;background-color:rgba(0,0,0,.5)}.pc-nav .exit[data-v-5bc955ff]{position:absolute;right:10px;top:20px}}\n/*$vite$:1*/",document.head.appendChild(t);const le=a({trigger:l.trigger,placement:J.placement,disabled:l.disabled,visible:o.visible,transition:o.transition,popperOptions:J.popperOptions,tabindex:J.tabindex,content:o.content,popperStyle:o.popperStyle,popperClass:o.popperClass,enterable:{...o.enterable,default:!0},effect:{...o.effect,default:"light"},teleported:o.teleported,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},"onUpdate:visible":{type:Function}});var oe=i(r({name:"ElPopover",props:le,emits:{"update:visible":e=>n(e),"before-enter":()=>!0,"before-leave":()=>!0,"after-enter":()=>!0,"after-leave":()=>!0},setup(e,{expose:t,emit:a}){const l=e,o=p((()=>l["onUpdate:visible"])),n=s("popover"),i=d(),r=p((()=>{var e;return null==(e=c(i))?void 0:e.popperRef})),C=p((()=>[{width:f(l.width)},l.popperStyle])),z=p((()=>[n.b(),l.popperClass,{[n.m("plain")]:!!l.content}])),A=p((()=>"el-fade-in-linear"===l.transition)),V=()=>{a("before-enter")},H=()=>{a("before-leave")},M=()=>{a("after-enter")},S=()=>{a("update:visible",!1),a("after-leave")};return t({popperRef:r,hide:()=>{var e;null==(e=i.value)||e.hide()}}),(e,t)=>(v(),u(c(_),k({ref_key:"tooltipRef",ref:i},e.$attrs,{trigger:e.trigger,placement:e.placement,disabled:e.disabled,visible:e.visible,transition:e.transition,"popper-options":e.popperOptions,tabindex:e.tabindex,content:e.content,offset:e.offset,"show-after":e.showAfter,"hide-after":e.hideAfter,"auto-close":e.autoClose,"show-arrow":e.showArrow,"aria-label":e.title,effect:e.effect,enterable:e.enterable,"popper-class":c(z),"popper-style":c(C),teleported:e.teleported,persistent:e.persistent,"gpu-acceleration":c(A),"onUpdate:visible":c(o),onBeforeShow:V,onBeforeHide:H,onShow:M,onHide:S}),{content:g((()=>[e.title?(v(),b("div",{key:0,class:h(c(n).e("title")),role:"title"},m(e.title),3)):x("v-if",!0),w(e.$slots,"default",{},(()=>[y(m(e.content),1)]))])),default:g((()=>[e.$slots.reference?w(e.$slots,"reference",{key:0}):x("v-if",!0)])),_:3},16,["trigger","placement","disabled","visible","transition","popper-options","tabindex","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","persistent","gpu-acceleration","onUpdate:visible"]))}}),[["__file","/home/runner/work/element-plus/element-plus/packages/components/popover/src/popover.vue"]]);const ne=(e,t)=>{const a=t.arg||t.value,l=null==a?void 0:a.popperRef;l&&(l.triggerRef=e)},ie=C({mounted(e,t){ne(e,t)},updated(e,t){ne(e,t)}},"popover"),re=z(oe,{directive:ie}),pe=r({name:"Bell"}),se={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},de=[V("path",{fill:"currentColor",d:"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64z"},null,-1),V("path",{fill:"currentColor",d:"M256 768h512V448a256 256 0 1 0-512 0v320zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320z"},null,-1),V("path",{fill:"currentColor",d:"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm352 128h128a64 64 0 0 1-128 0z"},null,-1)];var ce=A(pe,[["render",function(e,t,a,l,o,n){return v(),b("svg",se,de)}]]);const fe=r({name:"Close"}),ve={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ue=[V("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"},null,-1)];var ge=A(fe,[["render",function(e,t,a,l,o,n){return v(),b("svg",ve,ue)}]]);const be=r({name:"Expand"}),he={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},me=[V("path",{fill:"currentColor",d:"M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352 192 160-192 128V352z"},null,-1)];var xe=A(be,[["render",function(e,t,a,l,o,n){return v(),b("svg",he,me)}]]);const we={key:0,class:"empty"},ye={class:"message-list"},ke=["onClick"],_e={class:"text"},Ce={class:"date"},ze=["innerHTML"],Ae={class:"dialog-date"},Ve=r({__name:"index",props:{data:{},autoShow:{type:Boolean}},setup(e){const t=e,a=H({show:!1,title:"系统消息",text:"内容"}),l=d(null);function o(e){l.value=e,a.text=e.text,a.title=0===e.type?"【系统消息】":"【私信】",a.show=!0}function n(){l.value.read?a.show=!1:L.readMessage(l.value.id).then((()=>{l.value.read=!0,a.show=!1}))}M((()=>t.data.length),(()=>{if(!t.autoShow)return;const e=t.data.find((e=>!e.read));e&&o(e)}));const i=S();return(e,t)=>{const r=U,p=I;return v(),b(j,null,[e.data.length?x("",!0):(v(),b("div",we," 暂无更多消息 ღ( ´・ᴗ・` )比心 ")),V("ul",ye,[(v(!0),b(j,null,B(e.data,(e=>(v(),b("li",{key:e.id,class:h({read:e.read}),onClick:t=>o(e)},[V("p",_e,m(e.text),1),V("p",Ce,m(c(E)(new Date(e.date))),1)],10,ke)))),128))]),$(p,{modelValue:a.show,"onUpdate:modelValue":t[1]||(t[1]=e=>a.show=e),center:"","show-close":"","append-to-body":"","close-on-click-modal":!1,title:a.title,width:"30%",fullscreen:c(i)},{footer:g((()=>[V("p",Ae," 时间:"+m(c(E)(new Date(l.value.date))),1),V("span",null,[$(r,{type:"default",onClick:t[0]||(t[0]=()=>{a.show=!1})},{default:g((()=>t[2]||(t[2]=[y(" 下次提醒 ")]))),_:1}),$(r,{type:"primary",onClick:n},{default:g((()=>t[3]||(t[3]=[y(" 确定 ")]))),_:1})])])),default:g((()=>[V("div",{class:"message-text",innerHTML:a.text},null,8,ze)])),_:1},8,["modelValue","title","fullscreen"])],64)}}}),He=N(Ve,[["__scopeId","data-v-1aac0ffc"]]),Me={class:"message-panel"},Se=N(r({__name:"index",setup(e){const t=d("all"),a=H([]),l=p((()=>a.filter((e=>!e.read)))),o=R();return O((()=>{"config"!==o.name&&L.getMessageList().then((e=>{a.push(...e.data)}))})),(e,o)=>{const n=U,i=T,r=ee,p=te,s=re;return v(),b("div",Me,[$(s,{placement:"bottom-end",width:375,trigger:"hover"},{reference:g((()=>[$(i,{value:l.value.length||"",max:99},{default:g((()=>[$(n,{icon:c(ce),circle:""},null,8,["icon"])])),_:1},8,["value"])])),default:g((()=>[V("div",null,[$(p,{modelValue:t.value,"onUpdate:modelValue":o[0]||(o[0]=e=>t.value=e)},{default:g((()=>[$(r,{label:`未读 ${l.value.length||""}`,name:"no"},{default:g((()=>[$(He,{"auto-show":"",data:l.value},null,8,["data"])])),_:1},8,["label"]),$(r,{label:`全部 ${a.length||""}`,name:"all"},{default:g((()=>[$(He,{data:a},null,8,["data"])])),_:1},8,["label"])])),_:1},8,["modelValue"])])])),_:1})])}}}),[["__scopeId","data-v-9fb03fce"]]),je={class:"dashboard"},Be={class:"pc-nav"},Ee={class:"nav"},$e={class:"logo"},Le={key:0,id:"navActive",type:"checkbox"},Ue={key:0,for:"navActive",class:"nav-item"},Ie=["onClick"],Ne={id:"navMenu"},Re={for:"navActive"},Oe={key:0,class:"flex fac"},Te={class:"exit-info"},We={class:"ellipsis"};e("default",N(r({__name:"index",setup(e){const t=S(),a=W(),l=D(),o=R(),n=H([{title:"文件管理",path:"/dashboard/files"},{title:"任务管理",path:"/dashboard/tasks"}]),i=d(0);function r(){ae.confirm("确认退出登录?","登出提示",{draggable:!0}).then((()=>{P.logout().finally((()=>{l.commit("user/setToken",null),a.replace({name:"home"})}))})).catch((()=>{F.info("取消")}))}M((()=>o.path),(e=>{const t=n.findIndex((t=>e.startsWith(t.path)));-1!==t&&(i.value=t)}));const p=d("World");return O((()=>{P.checkPower().then((e=>{const t=e.data?.power;if(p.value=e.data?.name,l.commit("user/setSuperAdmin",t),t){const e=[{title:"应用管理",path:"/dashboard/manage"},{title:"网站监控",path:"/dashboard/metrics"}];n.push(...e)}const a=e.data?.system;a&&(n.splice(0,n.length),n.push({title:"系统管理",path:"/dashboard/config"})),i.value=n.findIndex((e=>o.path.startsWith(e.path)))}))})),(e,l)=>{const o=Z("router-link"),s=G,d=Q,f=X,w=Y,k=Z("router-view");return v(),b("div",je,[V("div",Be,[V("div",Ee,[V("div",$e,[$(o,{to:"/"},{default:g((()=>l[0]||(l[0]=[V("img",{src:"https://img.cdn.sugarat.top/easypicker/EasyPicker.png",alt:"logo"},null,-1)]))),_:1})]),c(t)?(v(),b("input",Le)):x("",!0),V("nav",null,[c(t)?(v(),b("label",Ue,[l[1]||(l[1]=V("span",null,"Hello💐,",-1)),y(" "+m(p.value),1)])):x("",!0),(v(!0),b(j,null,B(n,((e,t)=>(v(),b("label",{key:t,for:"navActive",class:h(["nav-item",{active:i.value===t}]),onClick:e=>function(e){const t=n[e];t.isExternal||e===i.value||a.push({path:t.path}),t.isExternal&&window.open(t.path,"_blank")}(t)},m(e.title),11,Ie)))),128)),c(t)?(v(),b("label",{key:1,for:"navActive",class:"nav-item",onClick:r},[l[3]||(l[3]=V("span",{style:{"margin-right":"6px"}},"退出",-1)),$(s,{size:"16"},{default:g((()=>l[2]||(l[2]=[V("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","data-v-53d86618":""},[V("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M10.6667 2.55473C13.0212 3.58347 14.6667 5.93291 14.6667 8.66667C14.6667 12.3486 11.6819 15.3333 8 15.3333C4.3181 15.3333 1.33333 12.3486 1.33333 8.66667C1.33333 5.93291 2.97879 3.58347 5.33333 2.55473V4.04684C3.7392 4.969 2.66667 6.69259 2.66667 8.66667C2.66667 11.6122 5.05448 14 8 14C10.9455 14 13.3333 11.6122 13.3333 8.66667C13.3333 6.69259 12.2608 4.969 10.6667 4.04684V2.55473ZM7.33333 8.66667V1.33333C7.33333 1.14924 7.48257 1 7.66667 1H8.33333C8.51743 1 8.66667 1.14924 8.66667 1.33333V8.66667C8.66667 8.85076 8.51743 9 8.33333 9H7.66667C7.48257 9 7.33333 8.85076 7.33333 8.66667Z",fill:"#86909C","data-v-53d86618":""})],-1)]))),_:1})])):x("",!0)]),l[4]||(l[4]=V("div",{class:"mask"},null,-1))]),V("span",Ne,[c(t)?(v(),u(Se,{key:0,class:"mobile-message-bell"})):x("",!0),V("label",Re,[$(s,{size:"32"},{default:g((()=>[$(c(xe))])),_:1})])]),c(t)?x("",!0):(v(),b("div",Oe,[$(Se),l[6]||(l[6]=V("span",null,"Hello 💐,",-1)),$(w,{class:"exit"},{dropdown:g((()=>[$(f,null,{default:g((()=>[$(d,{icon:c(ge),onClick:r},{default:g((()=>l[5]||(l[5]=[y(" 退出 ")]))),_:1},8,["icon"])])),_:1})])),default:g((()=>[V("span",Te,[V("span",We,m(p.value),1),$(s,null,{default:g((()=>[$(c(K))])),_:1})])])),_:1})]))]),$(k),V("div",null,[$(q,{type:"dashboard"})])])}}}),[["__scopeId","data-v-5bc955ff"]]))}}}));
2
+ //# sourceMappingURL=index-legacy-0p9exu0M.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-legacy-0p9exu0M.js","sources":["../../../../node_modules/.pnpm/element-plus@2.2.13_vue@3.5.12_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/popover.mjs","../../../../node_modules/.pnpm/element-plus@2.2.13_vue@3.5.12_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/popover2.mjs","../../../../node_modules/.pnpm/element-plus@2.2.13_vue@3.5.12_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/directive.mjs","../../../../node_modules/.pnpm/element-plus@2.2.13_vue@3.5.12_typescript@4.9.5_/node_modules/element-plus/es/components/popover/index.mjs","../../../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.5.12_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/bell.mjs","../../../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.5.12_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/close.mjs","../../../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.5.12_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/expand.mjs","../../src/components/MessageList/index.vue","../../src/components/MessagePanel/index.vue","../../src/pages/dashboard/index.vue"],"sourcesContent":["import '../../../utils/index.mjs';\nimport '../../tooltip/index.mjs';\nimport '../../dropdown/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useTooltipTriggerProps, useTooltipContentProps } from '../../tooltip/src/tooltip.mjs';\nimport { dropdownProps } from '../../dropdown/src/dropdown.mjs';\nimport { isBoolean } from '@vueuse/core';\n\nconst popoverProps = buildProps({\n trigger: useTooltipTriggerProps.trigger,\n placement: dropdownProps.placement,\n disabled: useTooltipTriggerProps.disabled,\n visible: useTooltipContentProps.visible,\n transition: useTooltipContentProps.transition,\n popperOptions: dropdownProps.popperOptions,\n tabindex: dropdownProps.tabindex,\n content: useTooltipContentProps.content,\n popperStyle: useTooltipContentProps.popperStyle,\n popperClass: useTooltipContentProps.popperClass,\n enterable: {\n ...useTooltipContentProps.enterable,\n default: true\n },\n effect: {\n ...useTooltipContentProps.effect,\n default: \"light\"\n },\n teleported: useTooltipContentProps.teleported,\n title: String,\n width: {\n type: [String, Number],\n default: 150\n },\n offset: {\n type: Number,\n default: void 0\n },\n showAfter: {\n type: Number,\n default: 0\n },\n hideAfter: {\n type: Number,\n default: 200\n },\n autoClose: {\n type: Number,\n default: 0\n },\n showArrow: {\n type: Boolean,\n default: true\n },\n persistent: {\n type: Boolean,\n default: true\n },\n \"onUpdate:visible\": {\n type: Function\n }\n});\nconst popoverEmits = {\n \"update:visible\": (value) => isBoolean(value),\n \"before-enter\": () => true,\n \"before-leave\": () => true,\n \"after-enter\": () => true,\n \"after-leave\": () => true\n};\n\nexport { popoverEmits, popoverProps };\n//# sourceMappingURL=popover.mjs.map\n","import { defineComponent, computed, ref, unref, openBlock, createBlock, mergeProps, withCtx, createElementBlock, normalizeClass, toDisplayString, createCommentVNode, renderSlot, createTextVNode } from 'vue';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { popoverProps, popoverEmits } from './popover.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\n\nconst __default__ = {\n name: \"ElPopover\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: popoverProps,\n emits: popoverEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const updateEventKeyRaw = `onUpdate:visible`;\n const onUpdateVisible = computed(() => {\n return props[updateEventKeyRaw];\n });\n const ns = useNamespace(\"popover\");\n const tooltipRef = ref();\n const popperRef = computed(() => {\n var _a;\n return (_a = unref(tooltipRef)) == null ? void 0 : _a.popperRef;\n });\n const style = computed(() => {\n return [\n {\n width: addUnit(props.width)\n },\n props.popperStyle\n ];\n });\n const kls = computed(() => {\n return [ns.b(), props.popperClass, { [ns.m(\"plain\")]: !!props.content }];\n });\n const gpuAcceleration = computed(() => {\n return props.transition === \"el-fade-in-linear\";\n });\n const hide = () => {\n var _a;\n (_a = tooltipRef.value) == null ? void 0 : _a.hide();\n };\n const beforeEnter = () => {\n emit(\"before-enter\");\n };\n const beforeLeave = () => {\n emit(\"before-leave\");\n };\n const afterEnter = () => {\n emit(\"after-enter\");\n };\n const afterLeave = () => {\n emit(\"update:visible\", false);\n emit(\"after-leave\");\n };\n expose({\n popperRef,\n hide\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTooltip), mergeProps({\n ref_key: \"tooltipRef\",\n ref: tooltipRef\n }, _ctx.$attrs, {\n trigger: _ctx.trigger,\n placement: _ctx.placement,\n disabled: _ctx.disabled,\n visible: _ctx.visible,\n transition: _ctx.transition,\n \"popper-options\": _ctx.popperOptions,\n tabindex: _ctx.tabindex,\n content: _ctx.content,\n offset: _ctx.offset,\n \"show-after\": _ctx.showAfter,\n \"hide-after\": _ctx.hideAfter,\n \"auto-close\": _ctx.autoClose,\n \"show-arrow\": _ctx.showArrow,\n \"aria-label\": _ctx.title,\n effect: _ctx.effect,\n enterable: _ctx.enterable,\n \"popper-class\": unref(kls),\n \"popper-style\": unref(style),\n teleported: _ctx.teleported,\n persistent: _ctx.persistent,\n \"gpu-acceleration\": unref(gpuAcceleration),\n \"onUpdate:visible\": unref(onUpdateVisible),\n onBeforeShow: beforeEnter,\n onBeforeHide: beforeLeave,\n onShow: afterEnter,\n onHide: afterLeave\n }), {\n content: withCtx(() => [\n _ctx.title ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"title\")),\n role: \"title\"\n }, toDisplayString(_ctx.title), 3)) : createCommentVNode(\"v-if\", true),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(_ctx.content), 1)\n ])\n ]),\n default: withCtx(() => [\n _ctx.$slots.reference ? renderSlot(_ctx.$slots, \"reference\", { key: 0 }) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 16, [\"trigger\", \"placement\", \"disabled\", \"visible\", \"transition\", \"popper-options\", \"tabindex\", \"content\", \"offset\", \"show-after\", \"hide-after\", \"auto-close\", \"show-arrow\", \"aria-label\", \"effect\", \"enterable\", \"popper-class\", \"popper-style\", \"teleported\", \"persistent\", \"gpu-acceleration\", \"onUpdate:visible\"]);\n };\n }\n});\nvar Popover = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"/home/runner/work/element-plus/element-plus/packages/components/popover/src/popover.vue\"]]);\n\nexport { Popover as default };\n//# sourceMappingURL=popover2.mjs.map\n","const attachEvents = (el, binding) => {\n const popperComponent = binding.arg || binding.value;\n const popover = popperComponent == null ? void 0 : popperComponent.popperRef;\n if (popover) {\n popover.triggerRef = el;\n }\n};\nvar PopoverDirective = {\n mounted(el, binding) {\n attachEvents(el, binding);\n },\n updated(el, binding) {\n attachEvents(el, binding);\n }\n};\nconst VPopover = \"popover\";\n\nexport { VPopover, PopoverDirective as default };\n//# sourceMappingURL=directive.mjs.map\n","import '../../utils/index.mjs';\nimport Popover from './src/popover2.mjs';\nimport PopoverDirective, { VPopover } from './src/directive.mjs';\nexport { popoverEmits, popoverProps } from './src/popover.mjs';\nimport { withInstallDirective, withInstall } from '../../utils/vue/install.mjs';\n\nconst ElPopoverDirective = withInstallDirective(PopoverDirective, VPopover);\nconst ElPopover = withInstall(Popover, {\n directive: ElPopoverDirective\n});\n\nexport { ElPopover, ElPopoverDirective, ElPopover as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Bell\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M256 768h512V448a256 256 0 1 0-512 0v320zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320z\"\n}, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm352 128h128a64 64 0 0 1-128 0z\"\n}, null, -1);\nconst _hoisted_5 = [\n _hoisted_2,\n _hoisted_3,\n _hoisted_4\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_5);\n}\nvar bell = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { bell as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Close\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar close = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { close as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Expand\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352 192 160-192 128V352z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar expand = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { expand as default };\n","<script lang=\"ts\" setup>\nimport { reactive, ref, watch } from 'vue'\nimport { SuperUserApi } from '@/apis'\nimport { useIsMobile } from '@/composables'\nimport { formatDate } from '@/utils/stringUtil'\n\nconst props = defineProps<{\n data: SuperUserApiTypes.MessageItem[]\n autoShow?: boolean\n}>()\n\nconst dialogMessage = reactive({\n show: false,\n title: '系统消息',\n text: '内容',\n})\nconst activeMessage = ref<SuperUserApiTypes.MessageItem>(null)\nfunction handleViewDialogMessage(v: SuperUserApiTypes.MessageItem) {\n activeMessage.value = v\n dialogMessage.text = v.text\n // TODO: 魔法数字问题\n // TODO:支持更多的消息类型\n dialogMessage.title = v.type === 0 ? '【系统消息】' : '【私信】'\n dialogMessage.show = true\n}\n\nfunction readMessage() {\n if (activeMessage.value.read) {\n dialogMessage.show = false\n return\n }\n SuperUserApi.readMessage(activeMessage.value.id).then(() => {\n activeMessage.value.read = true\n dialogMessage.show = false\n })\n}\n\nwatch(\n () => props.data.length,\n () => {\n if (!props.autoShow) {\n return\n }\n const showItem = props.data.find(v => !v.read)\n if (showItem) {\n handleViewDialogMessage(showItem)\n }\n },\n)\n\nconst isMobile = useIsMobile()\n</script>\n\n<template>\n <div v-if=\"!data.length\" class=\"empty\">\n 暂无更多消息 ღ( ´・ᴗ・` )比心\n </div>\n <ul class=\"message-list\">\n <li\n v-for=\"d in data\"\n :key=\"d.id\"\n :class=\"{\n read: d.read,\n }\"\n @click=\"handleViewDialogMessage(d)\"\n >\n <p class=\"text\">\n {{ d.text }}\n </p>\n <p class=\"date\">\n {{ formatDate(new Date(d.date)) }}\n </p>\n </li>\n </ul>\n <el-dialog\n v-model=\"dialogMessage.show\"\n center\n show-close\n append-to-body\n :close-on-click-modal=\"false\"\n :title=\"dialogMessage.title\"\n width=\"30%\"\n :fullscreen=\"isMobile\"\n >\n <div class=\"message-text\" v-html=\"dialogMessage.text\" />\n <template #footer>\n <p class=\"dialog-date\">\n 时间:{{ formatDate(new Date(activeMessage.date)) }}\n </p>\n <span>\n <el-button\n type=\"default\"\n @click=\"\n () => {\n dialogMessage.show = false\n }\n \"\n >\n 下次提醒\n </el-button>\n <el-button type=\"primary\" @click=\"readMessage\"> 确定 </el-button>\n </span>\n </template>\n </el-dialog>\n</template>\n\n<style lang=\"scss\" scoped>\n.message-list {\n list-style: none;\n max-height: 500px;\n overflow-y: scroll;\n li {\n border-bottom: 1px solid #ddd;\n padding: 10px;\n cursor: pointer;\n &.read {\n opacity: 0.5;\n &:hover {\n opacity: 0.9;\n }\n }\n &:last-child {\n border-bottom: none;\n }\n\n p.text {\n font-size: 16px;\n display: -webkit-box;\n overflow: hidden;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n p.date {\n font-size: 14px;\n margin-top: 4px;\n }\n }\n}\n.empty {\n text-align: center;\n padding: 10px;\n}\n\n.dialog-date {\n font-size: 14px;\n text-align: right;\n padding: 10px;\n color: grey;\n}\n</style>\n\n<style lang=\"scss\">\n.message-text {\n overflow-y: scroll;\n max-height: 500px;\n ul,\n ol {\n list-style: none;\n }\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { Bell } from '@element-plus/icons-vue'\nimport { computed, onMounted, reactive, ref } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SuperUserApi } from '@/apis'\nimport MessageList from '@/components/MessageList/index.vue'\n\nconst activeTab = ref<'all' | 'no'>('all')\nconst messageData = reactive<SuperUserApiTypes.MessageItem[]>([])\n\nconst noReadMessage = computed(() => messageData.filter(v => !v.read))\nconst route = useRoute()\nonMounted(() => {\n if (route.name !== 'config') {\n SuperUserApi.getMessageList().then((v) => {\n messageData.push(...v.data)\n })\n }\n})\n</script>\n\n<template>\n <div class=\"message-panel\">\n <el-popover placement=\"bottom-end\" :width=\"375\" trigger=\"hover\">\n <template #reference>\n <el-badge :value=\"noReadMessage.length || ''\" :max=\"99\">\n <el-button :icon=\"Bell\" circle />\n </el-badge>\n </template>\n <div>\n <el-tabs v-model=\"activeTab\">\n <el-tab-pane :label=\"`未读 ${noReadMessage.length || ''}`\" name=\"no\">\n <MessageList auto-show :data=\"noReadMessage\" />\n </el-tab-pane>\n <el-tab-pane :label=\"`全部 ${messageData.length || ''}`\" name=\"all\">\n <MessageList :data=\"messageData\" />\n </el-tab-pane>\n </el-tabs>\n </div>\n </el-popover>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.message-panel {\n margin-right: 10px;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport HomeFooter from '@components/HomeFooter/index.vue'\nimport { ArrowDown, Close, Expand } from '@element-plus/icons-vue'\n\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { onMounted, reactive, ref, watch } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useStore } from 'vuex'\nimport { UserApi } from '@/apis'\nimport MessagePanel from '@/components/MessagePanel/index.vue'\nimport { useIsMobile } from '@/composables'\n\nconst isMobile = useIsMobile()\n\nconst $router = useRouter()\nconst $store = useStore()\nconst $route = useRoute()\nconst navList = reactive<\n { title: string, path: string, isExternal?: boolean }[]\n>([\n {\n title: '文件管理',\n path: '/dashboard/files',\n },\n {\n title: '任务管理',\n path: '/dashboard/tasks',\n },\n])\nconst navActiveIdx = ref(0)\nfunction handleNav(idx: number) {\n const n = navList[idx]\n if (!n.isExternal && idx !== navActiveIdx.value) {\n $router.push({\n path: n.path,\n })\n }\n if (n.isExternal) {\n window.open(n.path, '_blank')\n }\n}\n\n// 自动切换激活的标题栏\nwatch(\n () => $route.path,\n (path: string) => {\n const idx = navList.findIndex(n => path.startsWith(n.path))\n if (idx !== -1) {\n navActiveIdx.value = idx\n }\n },\n)\n\nfunction handleLogout() {\n ElMessageBox.confirm('确认退出登录?', '登出提示', {\n draggable: true,\n })\n .then(() => {\n // 登出接口\n UserApi.logout().finally(() => {\n $store.commit('user/setToken', null)\n $router.replace({\n name: 'home',\n })\n })\n })\n .catch(() => {\n ElMessage.info('取消')\n })\n}\nconst userName = ref('World')\n\nfunction refreshActiveTab() {\n // 动态修改active的项\n navActiveIdx.value = navList.findIndex(v => $route.path.startsWith(v.path))\n}\nonMounted(() => {\n // 动态添加管理页面入口\n UserApi.checkPower().then((r) => {\n const isSuperAdmin = r.data?.power\n userName.value = r.data?.name\n $store.commit('user/setSuperAdmin', isSuperAdmin)\n if (isSuperAdmin) {\n const superNavList = [\n {\n title: '应用管理',\n path: '/dashboard/manage',\n },\n {\n title: '网站监控',\n path: '/dashboard/metrics',\n },\n ]\n navList.push(...superNavList)\n }\n const isSystem = r.data?.system\n if (isSystem) {\n navList.splice(0, navList.length)\n navList.push({\n title: '系统管理',\n path: '/dashboard/config',\n })\n }\n refreshActiveTab()\n })\n})\n</script>\n\n<template>\n <div class=\"dashboard\">\n <div class=\"pc-nav\">\n <div class=\"nav\">\n <!-- LOGO -->\n <div class=\"logo\">\n <router-link to=\"/\">\n <img\n src=\"https://img.cdn.sugarat.top/easypicker/EasyPicker.png\"\n alt=\"logo\"\n >\n </router-link>\n </div>\n <input v-if=\"isMobile\" id=\"navActive\" type=\"checkbox\">\n <nav>\n <label v-if=\"isMobile\" for=\"navActive\" class=\"nav-item\">\n <span>Hello💐,</span>\n {{ userName }}\n </label>\n <label\n v-for=\"(n, idx) in navList\"\n :key=\"idx\"\n for=\"navActive\"\n class=\"nav-item\"\n :class=\"{\n active: navActiveIdx === idx,\n }\"\n @click=\"handleNav(idx)\"\n >{{ n.title }}</label>\n <label\n v-if=\"isMobile\"\n for=\"navActive\"\n class=\"nav-item\"\n @click=\"handleLogout\"\n >\n <span style=\"margin-right: 6px\">退出</span>\n <el-icon size=\"16\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-v-53d86618\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.6667 2.55473C13.0212 3.58347 14.6667 5.93291 14.6667 8.66667C14.6667 12.3486 11.6819 15.3333 8 15.3333C4.3181 15.3333 1.33333 12.3486 1.33333 8.66667C1.33333 5.93291 2.97879 3.58347 5.33333 2.55473V4.04684C3.7392 4.969 2.66667 6.69259 2.66667 8.66667C2.66667 11.6122 5.05448 14 8 14C10.9455 14 13.3333 11.6122 13.3333 8.66667C13.3333 6.69259 12.2608 4.969 10.6667 4.04684V2.55473ZM7.33333 8.66667V1.33333C7.33333 1.14924 7.48257 1 7.66667 1H8.33333C8.51743 1 8.66667 1.14924 8.66667 1.33333V8.66667C8.66667 8.85076 8.51743 9 8.33333 9H7.66667C7.48257 9 7.33333 8.85076 7.33333 8.66667Z\"\n fill=\"#86909C\"\n data-v-53d86618\n />\n </svg>\n </el-icon>\n </label>\n </nav>\n <div class=\"mask\" />\n </div>\n <!-- 移动端展示 -->\n <span id=\"navMenu\">\n <MessagePanel v-if=\"isMobile\" class=\"mobile-message-bell\" />\n <label for=\"navActive\">\n <el-icon size=\"32\">\n <Expand />\n </el-icon>\n </label>\n </span>\n <div v-if=\"!isMobile\" class=\"flex fac\">\n <MessagePanel />\n <span>Hello 💐,</span>\n <el-dropdown class=\"exit\">\n <span class=\"exit-info\">\n <span class=\"ellipsis\">{{ userName }}</span>\n <el-icon>\n <ArrowDown />\n </el-icon>\n </span>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item :icon=\"Close\" @click=\"handleLogout\">\n 退出\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n </div>\n <router-view />\n <div>\n <HomeFooter type=\"dashboard\" />\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.dashboard {\n background-color: #fafafa;\n}\n.pc-nav {\n background-color: #fff;\n display: flex;\n padding: 10px;\n justify-content: space-between;\n align-items: center;\n .exit {\n cursor: pointer;\n display: flex;\n align-items: center;\n .exit-info {\n display: flex;\n justify-content: center;\n align-items: center;\n > span {\n margin-right: 5px;\n display: block;\n max-width: 70px;\n }\n }\n }\n .nav {\n display: flex;\n nav {\n display: flex;\n align-items: center;\n .nav-item {\n font-size: 1rem;\n color: #595959;\n padding: 10px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n &.active {\n color: #409eff !important;\n font-weight: 600;\n }\n }\n }\n .exit {\n color: #595959;\n }\n }\n .logo {\n width: 180px;\n margin: 0 10px;\n img {\n height: 40px;\n }\n }\n}\n#navActive {\n display: none;\n opacity: 0;\n}\n#navMenu {\n display: none;\n}\n.mobile-message-bell {\n display: none;\n position: fixed;\n right: 0;\n top: 0;\n}\n@media screen and (max-width: 700px) {\n #navActive {\n display: block;\n position: fixed;\n left: 0;\n top: 0;\n }\n .mobile-message-bell {\n display: block;\n }\n #navMenu {\n cursor: pointer;\n display: block;\n position: absolute;\n left: 10px;\n top: 5px;\n font-size: 2rem;\n }\n .pc-nav {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n z-index: 6;\n .nav {\n flex-wrap: wrap;\n width: 100%;\n .logo {\n width: 100%;\n text-align: center;\n }\n }\n #navActive {\n & + nav {\n display: none;\n }\n }\n #navActive:checked {\n & + nav {\n display: flex;\n flex-direction: column;\n width: 100%;\n position: absolute;\n z-index: 1;\n background: #fff;\n left: 0;\n top: 50px;\n + .mask {\n display: block;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 50px;\n background-color: rgba(0, 0, 0, 0.5);\n }\n }\n }\n .exit {\n position: absolute;\n right: 10px;\n top: 20px;\n }\n }\n}\n</style>\n"],"names":["popoverProps","buildProps","trigger","useTooltipTriggerProps","placement","dropdownProps","disabled","visible","useTooltipContentProps","transition","popperOptions","tabindex","content","popperStyle","popperClass","enterable","default","effect","teleported","title","String","width","type","Number","offset","showAfter","hideAfter","autoClose","showArrow","Boolean","persistent","Function","Popover","_export_sfc","defineComponent","name","props","emits","value","isBoolean","before-enter","before-leave","after-enter","after-leave","setup","__props","expose","emit","onUpdateVisible","computed","ns","useNamespace","tooltipRef","ref","popperRef","_a","unref","style","addUnit","kls","b","m","gpuAcceleration","beforeEnter","beforeLeave","afterEnter","afterLeave","hide","_ctx","_cache","openBlock","createBlock","ElTooltip","mergeProps","ref_key","$attrs","onBeforeShow","onBeforeHide","onShow","onHide","withCtx","createElementBlock","key","class","normalizeClass","e","role","toDisplayString","createCommentVNode","renderSlot","$slots","createTextVNode","reference","_","attachEvents","el","binding","popperComponent","arg","popover","triggerRef","ElPopoverDirective","withInstallDirective","mounted","updated","ElPopover","withInstall","directive","_sfc_main","_hoisted_1","viewBox","xmlns","_hoisted_5","createElementVNode","fill","d","bell","$props","$setup","$data","$options","_hoisted_3","close","expand","dialogMessage","reactive","show","text","activeMessage","handleViewDialogMessage","v","readMessage","read","SuperUserApi","id","then","watch","data","length","autoShow","showItem","find","isMobile","useIsMobile","activeTab","messageData","noReadMessage","filter","route","useRoute","onMounted","getMessageList","push","$router","useRouter","$store","useStore","$route","navList","path","navActiveIdx","handleLogout","ElMessageBox","confirm","draggable","UserApi","logout","finally","commit","replace","catch","ElMessage","info","idx","findIndex","n","startsWith","userName","checkPower","r","isSuperAdmin","power","superNavList","isSystem","system","splice","isExternal","window","open"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
@@ -0,0 +1,2 @@
1
+ System.register(["./index-legacy-BsWj1xV2.js","./data-analysis-legacy-4qD1YhB2.js","./data-board-legacy-8OJulkyJ.js","./aria-legacy-B70JmEZA.js","./index-legacy-DqfRlqrq.js"],(function(e,t){"use strict";var l,n,o,a,i,r,u,s,d,c,m,p,v,h,b,f,g,x,y,_,w,z,M,k,S,I,C,E,A,T,$,P,B,N,L,j,O,W,R,Y,q,H,D,F,G,V,X,J,K,U,Z,Q,ee,te,le,ne,oe,ae,ie,re,ue,se,de;return{setters:[e=>{l=e.av,n=e.L,o=e.d,a=e.N,i=e.a,r=e.B,u=e.w,s=e.R,d=e.S,c=e.b4,m=e.b5,p=e.b6,v=e.b7,h=e.M,b=e.b8,f=e.H,g=e.aA,x=e.al,y=e.b9,_=e.r,w=e.az,z=e.aR,M=e.X,k=e.Y,S=e.ak,I=e.o,C=e.am,E=e.ba,A=e.G,T=e.T,$=e.a8,P=e.a9,B=e.F,N=e.bb,L=e.an,j=e.aJ,O=e.a7,W=e.bc,R=e.bd,Y=e.be,q=e.bf,H=e.aw,D=e.ap,F=e.bg,G=e.h,V=e.c,X=e.b,J=e.D,K=e.e,U=e.t,Z=e.W,Q=e.aI,ee=e.f,te=e.u,le=e.a1,ne=e.i,oe=e.j,ae=e.bh,ie=e._},e=>{re=e.d},e=>{ue=e.d},e=>{se=e.t},e=>{de=e._}],execute:function(){var t=document.createElement("style");t.textContent=".fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:var(--el-transition-md-fade);transform-origin:center top}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:var(--el-transition-md-fade);transform-origin:center bottom}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transition:var(--el-transition-md-fade);transform-origin:top left}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px;--el-menu-icon-transform-closed:none;--el-menu-icon-transform-open:rotateZ(180deg)}.el-menu{border-right:solid 1px var(--el-menu-border-color);list-style:none;position:relative;margin:0;padding-left:0;background-color:var(--el-menu-bg-color);box-sizing:border-box}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title{white-space:nowrap;padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level) * var(--el-menu-level-padding))}.el-menu--horizontal{display:flex;flex-wrap:nowrap;border-bottom:solid 1px var(--el-menu-border-color);border-right:none}.el-menu--horizontal>.el-menu-item{display:inline-flex;justify-content:center;align-items:center;height:100%;margin:0;border-bottom:2px solid transparent;color:var(--el-menu-text-color)}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover{background-color:#fff}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:0}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{height:100%;border-bottom:2px solid transparent;color:var(--el-menu-text-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-bg-color-overlay)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{background-color:var(--el-menu-bg-color);display:flex;align-items:center;height:var(--el-menu-horizontal-sub-item-height);padding:0 10px;color:var(--el-menu-text-color)}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:var(--el-menu-hover-text-color);background-color:var(--el-menu-hover-bg-color)}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{margin:0;vertical-align:middle;width:var(--el-menu-icon-width);text-align:center}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu{position:relative}.el-menu--collapse .el-sub-menu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid var(--el-border-color-light);border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light)}.el-menu--collapse .el-sub-menu.is-opened>.el-sub-menu__title .el-sub-menu__icon-arrow{transform:var(--el-menu-icon-transform-closed)}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light)}.el-menu .el-icon{flex-shrink:0}.el-menu-item{display:flex;align-items:center;height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);list-style:none;cursor:pointer;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:focus,.el-menu-item:hover{outline:0}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon]{margin-right:5px;width:var(--el-menu-icon-width);text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{position:absolute;left:0;top:0;height:100%;width:100%;display:inline-flex;align-items:center;box-sizing:border-box;padding:0 var(--el-menu-base-level-padding)}.el-sub-menu{list-style:none;margin:0;padding-left:0}.el-sub-menu__title{display:flex;align-items:center;height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);list-style:none;cursor:pointer;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:focus,.el-sub-menu__title:hover{outline:0}.el-sub-menu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height);min-width:200px}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-opened>.el-sub-menu__title .el-sub-menu__icon-arrow{transform:var(--el-menu-icon-transform-open)}.el-sub-menu.is-disabled .el-menu-item,.el-sub-menu.is-disabled .el-sub-menu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu .el-icon{vertical-align:middle;margin-right:5px;width:var(--el-menu-icon-width);text-align:center;font-size:18px}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{position:absolute;top:50%;right:var(--el-menu-base-level-padding);margin-top:-7px;transform:var(--el-menu-icon-transform-closed);transition:transform var(--el-transition-duration);font-size:12px;margin-right:0;width:inherit}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px var(--el-menu-base-level-padding);line-height:normal;font-size:12px;color:var(--el-text-color-secondary)}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{transition:var(--el-transition-duration-fast);opacity:0}.monitor[data-v-1f4a4d8d]{width:96%;padding:10px;overflow:hidden;display:flex}.navs[data-v-1f4a4d8d]{min-width:140px}.container[data-v-1f4a4d8d]{padding-left:20px;flex-grow:1;width:calc(100% - 150px)}@media screen and (max-width: 700px){.monitor[data-v-1f4a4d8d]{margin-top:70px;padding:10px 0 0;width:100%;display:block;overflow:visible}.navs[data-v-1f4a4d8d]{width:100%;min-width:0;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;box-sizing:border-box}.el-radio-group[data-v-1f4a4d8d]{display:none}.el-menu-nav[data-v-1f4a4d8d]{display:inline-flex;min-width:max-content;border-right:0;border-bottom:solid 1px var(--el-menu-border-color)}.el-menu-nav[data-v-1f4a4d8d] .el-menu-item{flex-shrink:0;height:44px;line-height:44px;padding:0 14px}.container[data-v-1f4a4d8d]{padding-left:0;margin-top:12px;width:100%}}\n/*$vite$:1*/",document.head.appendChild(t);const ce=o({name:"ElMenuCollapseTransition",setup(){const e=a("menu");return{listeners:{onBeforeEnter:e=>e.style.opacity="0.2",onEnter(t,l){m(t,`${e.namespace.value}-opacity-transition`),t.style.opacity="1",l()},onAfterEnter(t){p(t,`${e.namespace.value}-opacity-transition`),t.style.opacity=""},onBeforeLeave(t){t.dataset||(t.dataset={}),v(t,e.m("collapse"))?(p(t,e.m("collapse")),t.dataset.oldOverflow=t.style.overflow,t.dataset.scrollWidth=t.clientWidth.toString(),m(t,e.m("collapse"))):(m(t,e.m("collapse")),t.dataset.oldOverflow=t.style.overflow,t.dataset.scrollWidth=t.clientWidth.toString(),p(t,e.m("collapse"))),t.style.width=`${t.scrollWidth}px`,t.style.overflow="hidden"},onLeave(e){m(e,"horizontal-collapse-transition"),e.style.width=`${e.dataset.scrollWidth}px`}}}}});var me=n(ce,[["render",function(e,t,l,n,o,a){return i(),r(c,d({mode:"out-in"},e.listeners),{default:u((()=>[s(e.$slots,"default")])),_:3},16)}],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-collapse-transition.vue"]]);function pe(e,t){const l=h((()=>{let l=e.parent;const n=[t.value];for(;"ElMenu"!==l.type.name;)l.props.index&&n.unshift(l.props.index),l=l.parent;return n}));return{parentMenu:h((()=>{let t=e.parent;for(;t&&!["ElMenu","ElSubMenu"].includes(t.type.name);)t=t.parent;return t})),indexPath:l}}function ve(e){return h((()=>{const t=e.backgroundColor;return t?new b(t).shade(20).toString():""}))}const he=(e,t)=>{const l=a("menu");return h((()=>l.cssVarBlock({"text-color":e.textColor||"","hover-text-color":e.textColor||"","bg-color":e.backgroundColor||"","hover-bg-color":ve(e).value||"","active-color":e.activeTextColor||"",level:`${t}`})))},be=f({index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0},popperOffset:{type:Number,default:6}}),fe="ElSubMenu";var ge=o({name:fe,props:be,setup(e,{slots:t,expose:l}){const n=g(),{indexPath:o,parentMenu:i}=pe(n,h((()=>e.index))),r=a("menu"),u=a("sub-menu"),s=x("rootMenu");s||y(fe,"can not inject root menu");const d=x(`subMenu:${i.value.uid}`);d||y(fe,"can not inject sub menu");const c=_({}),m=_({});let p;const v=_(!1),b=_(),f=_(null),L=h((()=>"horizontal"===V.value&&O.value?"bottom-start":"right-start")),j=h((()=>"horizontal"===V.value&&O.value||"vertical"===V.value&&!s.props.collapse?w:z)),O=h((()=>0===d.level)),W=h((()=>void 0===e.popperAppendToBody?O.value:Boolean(e.popperAppendToBody))),R=h((()=>s.props.collapse?`${r.namespace.value}-zoom-in-left`:`${r.namespace.value}-zoom-in-top`)),Y=h((()=>"horizontal"===V.value&&O.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","left-start","bottom-start","bottom-end","top-start","top-end"])),q=h((()=>s.openedMenus.includes(e.index))),H=h((()=>{let e=!1;return Object.values(c.value).forEach((t=>{t.active&&(e=!0)})),Object.values(m.value).forEach((t=>{t.active&&(e=!0)})),e})),D=h((()=>s.props.backgroundColor||"")),F=h((()=>s.props.activeTextColor||"")),G=h((()=>s.props.textColor||"")),V=h((()=>s.props.mode)),X=M({index:e.index,indexPath:o,active:H}),J=h((()=>"horizontal"!==V.value?{color:G.value}:{borderBottomColor:H.value?s.props.activeTextColor?F.value:"":"transparent",color:H.value?F.value:G.value})),K=e=>{var t,l,n;e||null==(n=null==(l=null==(t=f.value)?void 0:t.popperRef)?void 0:l.popperInstanceRef)||n.destroy()},U=()=>{"hover"===s.props.menuTrigger&&"horizontal"===s.props.mode||s.props.collapse&&"vertical"===s.props.mode||e.disabled||s.handleSubMenuClick({index:e.index,indexPath:o.value,active:H.value})},Z=(t,l=e.showTimeout)=>{var n;"focus"!==t.type&&("click"===s.props.menuTrigger&&"horizontal"===s.props.mode||!s.props.collapse&&"vertical"===s.props.mode||e.disabled||(d.mouseInChild.value=!0,null==p||p(),({stop:p}=N((()=>{s.openMenu(e.index,o.value)}),l)),W.value&&(null==(n=i.value.vnode.el)||n.dispatchEvent(new MouseEvent("mouseenter")))))},Q=(t=!1)=>{var l,a;"click"===s.props.menuTrigger&&"horizontal"===s.props.mode||!s.props.collapse&&"vertical"===s.props.mode||(null==p||p(),d.mouseInChild.value=!1,({stop:p}=N((()=>!v.value&&s.closeMenu(e.index,o.value)),e.hideTimeout)),W.value&&t&&"ElSubMenu"===(null==(l=n.parent)?void 0:l.type.name)&&(null==(a=d.handleMouseleave)||a.call(d,!0)))};k((()=>s.props.collapse),(e=>K(Boolean(e))));{const e=e=>{m.value[e.index]=e},t=e=>{delete m.value[e.index]};S(`subMenu:${n.uid}`,{addSubMenu:e,removeSubMenu:t,handleMouseleave:Q,mouseInChild:v,level:d.level+1})}return l({opened:q}),I((()=>{s.addSubMenu(X),d.addSubMenu(X)})),C((()=>{d.removeSubMenu(X),s.removeSubMenu(X)})),()=>{var l;const n=[null==(l=t.title)?void 0:l.call(t),E(A,{class:u.e("icon-arrow")},{default:()=>E(j.value)})],o=he(s.props,d.level+1),a=s.isMenuPopup?E(T,{ref:f,visible:q.value,effect:"light",pure:!0,offset:e.popperOffset,showArrow:!1,persistent:!0,popperClass:e.popperClass,placement:L.value,teleported:W.value,fallbackPlacements:Y.value,transition:R.value,gpuAcceleration:!1},{content:()=>{var l;return E("div",{class:[r.m(V.value),r.m("popup-container"),e.popperClass],onMouseenter:e=>Z(e,100),onMouseleave:()=>Q(!0),onFocus:e=>Z(e,100)},[E("ul",{class:[r.b(),r.m("popup"),r.m(`popup-${L.value}`)],style:o.value},[null==(l=t.default)?void 0:l.call(t)])])},default:()=>E("div",{class:u.e("title"),style:[J.value,{backgroundColor:D.value}],onClick:U},n)}):E(B,{},[E("div",{class:u.e("title"),style:[J.value,{backgroundColor:D.value}],ref:b,onClick:U},n),E(de,{},{default:()=>{var e;return $(E("ul",{role:"menu",class:[r.b(),r.m("inline")],style:o.value},[null==(e=t.default)?void 0:e.call(t)]),[[P,q.value]])}})]);return E("li",{class:[u.b(),u.is("active",H.value),u.is("opened",q.value),u.is("disabled",e.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:q.value,onMouseenter:Z,onMouseleave:()=>Q(!0),onFocus:Z},[a])}}});const xe=f({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:L(Array),default:()=>j([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0}}),ye=e=>Array.isArray(e)&&e.every((e=>Y(e))),_e={close:(e,t)=>Y(e)&&ye(t),open:(e,t)=>Y(e)&&ye(t),select:(e,t,l,n)=>Y(e)&&ye(t)&&q(l)&&(void 0===n||n instanceof Promise)};var we=o({name:"ElMenu",props:xe,emits:_e,setup(e,{emit:t,slots:n,expose:o}){const i=g(),r=i.appContext.config.globalProperties.$router,u=_(),s=a("menu"),d=a("sub-menu"),c=_(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),m=_(e.defaultActive),p=_({}),v=_({}),b=h((()=>"horizontal"===e.mode||"vertical"===e.mode&&e.collapse)),f=(l,n)=>{c.value.includes(l)||(e.uniqueOpened&&(c.value=c.value.filter((e=>n.includes(e)))),c.value.push(l),t("open",l,n))},x=(e,l)=>{const n=c.value.indexOf(e);-1!==n&&c.value.splice(n,1),t("close",e,l)},y=({index:e,indexPath:t})=>{c.value.includes(e)?x(e,t):f(e,t)},w=l=>{("horizontal"===e.mode||e.collapse)&&(c.value=[]);const{index:n,indexPath:o}=l;if(void 0!==n&&void 0!==o)if(e.router&&r){const e=l.route||n,a=r.push(e).then((e=>(e||(m.value=n),e)));t("select",n,o,{index:n,indexPath:o,route:e},a)}else m.value=n,t("select",n,o,{index:n,indexPath:o})},z=()=>{H((()=>i.proxy.$forceUpdate()))};let C;k((()=>e.defaultActive),(t=>{p.value[t]||(m.value=""),(t=>{const l=p.value,n=l[t]||m.value&&l[m.value]||l[e.defaultActive];m.value=n?n.index:t})(t)})),k((()=>e.collapse),(e=>{e&&(c.value=[])})),k(p.value,(()=>{const t=m.value&&p.value[m.value];t&&"horizontal"!==e.mode&&!e.collapse&&t.indexPath.forEach((e=>{const t=v.value[e];t&&f(e,t.indexPath)}))})),O((()=>{"horizontal"===e.mode&&e.ellipsis?C=W(u,z).stop:null==C||C()}));{const t=e=>{v.value[e.index]=e},l=e=>{delete v.value[e.index]},n=e=>{p.value[e.index]=e},o=e=>{delete p.value[e.index]};S("rootMenu",M({props:e,openedMenus:c,items:p,subMenus:v,activeIndex:m,isMenuPopup:b,addMenuItem:n,removeMenuItem:o,addSubMenu:t,removeSubMenu:l,openMenu:f,closeMenu:x,handleMenuItemClick:w,handleSubMenuClick:y})),S(`subMenu:${i.uid}`,{addSubMenu:t,removeSubMenu:l,mouseInChild:_(!1),level:0})}I((()=>{"horizontal"===e.mode&&new class{constructor(e,t){this.domNode=e,this.init(t)}init(e){const t=this.domNode.childNodes;Array.from(t).forEach((t=>{1===t.nodeType&&new class{constructor(e,t){this.domNode=e,this.submenu=null,this.submenu=null,this.init(t)}init(e){this.domNode.setAttribute("tabindex","0");const t=this.domNode.querySelector(`.${e}-menu`);t&&(this.submenu=new class{constructor(e,t){this.parent=e,this.domNode=t,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(e){e===this.subMenuItems.length?e=0:e<0&&(e=this.subMenuItems.length-1),this.subMenuItems[e].focus(),this.subIndex=e}addListeners(){const e=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,(t=>{t.addEventListener("keydown",(t=>{let n=!1;switch(t.code){case l.down:this.gotoSubIndex(this.subIndex+1),n=!0;break;case l.up:this.gotoSubIndex(this.subIndex-1),n=!0;break;case l.tab:se(e,"mouseleave");break;case l.enter:case l.space:n=!0,t.currentTarget.click()}return n&&(t.preventDefault(),t.stopPropagation()),!1}))}))}}(this,t)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",(e=>{let t=!1;switch(e.code){case l.down:se(e.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),t=!0;break;case l.up:se(e.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),t=!0;break;case l.tab:se(e.currentTarget,"mouseleave");break;case l.enter:case l.space:t=!0,e.currentTarget.click()}t&&e.preventDefault()}))}}(t,e)}))}}(i.vnode.el,s.namespace.value)}));{const e=e=>{const{indexPath:t}=v.value[e];t.forEach((e=>f(e,t)))};o({open:e,close:x,handleResize:z})}const T=e=>{const t=Array.isArray(e)?e:[e],l=[];return t.forEach((e=>{Array.isArray(e.children)?l.push(...T(e.children)):l.push(e)})),l};return()=>{var t,l,o,a;let i=null!=(l=null==(t=n.default)?void 0:t.call(n))?l:[];const r=[];if("horizontal"===e.mode&&u.value){const t=Array.from(null!=(a=null==(o=u.value)?void 0:o.childNodes)?a:[]).filter((e=>"#text"!==e.nodeName||e.nodeValue)),l=T(i),n=64,s=Number.parseInt(getComputedStyle(u.value).paddingLeft,10),c=Number.parseInt(getComputedStyle(u.value).paddingRight,10),m=u.value.clientWidth-s-c;let p=0,v=0;t.forEach(((e,t)=>{p+=e.offsetWidth||0,p<=m-n&&(v=t+1)}));const h=l.slice(0,v),b=l.slice(v);(null==b?void 0:b.length)&&e.ellipsis&&(i=h,r.push(E(ge,{index:"sub-menu-more",class:d.e("hide-arrow")},{title:()=>E(A,{class:d.e("icon-more")},{default:()=>E(R)}),default:()=>b})))}const c=he(e,0),m=E("ul",{key:String(e.collapse),role:"menubar",ref:u,style:c.value,class:{[s.b()]:!0,[s.m(e.mode)]:!0,[s.m("collapse")]:e.collapse}},[...i,...r]);return e.collapseTransition&&"vertical"===e.mode?E(me,(()=>m)):m}}});const ze=f({index:{type:L([String,null]),default:null},route:{type:L([String,Object])},disabled:Boolean}),Me="ElMenuItem",ke=o({name:Me,components:{ElTooltip:T},props:ze,emits:{click:e=>Y(e.index)&&Array.isArray(e.indexPath)},setup(e,{emit:t}){const l=g(),n=x("rootMenu"),o=a("menu"),i=a("menu-item");n||y(Me,"can not inject root menu");const{parentMenu:r,indexPath:u}=pe(l,D(e,"index")),s=x(`subMenu:${r.value.uid}`);s||y(Me,"can not inject sub menu");const d=h((()=>e.index===n.activeIndex)),c=M({index:e.index,indexPath:u,active:d});return I((()=>{s.addSubMenu(c),n.addMenuItem(c)})),C((()=>{s.removeSubMenu(c),n.removeMenuItem(c)})),{Effect:F,parentMenu:r,rootMenu:n,active:d,nsMenu:o,nsMenuItem:i,handleClick:()=>{e.disabled||(n.handleMenuItemClick({index:e.index,indexPath:u.value,route:e.route}),t("click",c))}}}});var Se=n(ke,[["render",function(e,t,l,n,o,a){const d=G("el-tooltip");return i(),V("li",{class:J([e.nsMenuItem.b(),e.nsMenuItem.is("active",e.active),e.nsMenuItem.is("disabled",e.disabled)]),role:"menuitem",tabindex:"-1",onClick:t[0]||(t[0]=(...t)=>e.handleClick&&e.handleClick(...t))},["ElMenu"===e.parentMenu.type.name&&e.rootMenu.props.collapse&&e.$slots.title?(i(),r(d,{key:0,effect:e.Effect.DARK,placement:"right","fallback-placements":["left"],persistent:""},{content:u((()=>[s(e.$slots,"title")])),default:u((()=>[X("div",{class:J(e.nsMenu.be("tooltip","trigger"))},[s(e.$slots,"default")],2)])),_:3},8,["effect"])):(i(),V(B,{key:1},[s(e.$slots,"default"),s(e.$slots,"title")],64))],2)}],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-item.vue"]]);const Ie=o({name:"ElMenuItemGroup",props:{title:String},setup:()=>({ns:a("menu-item-group")})});var Ce=n(Ie,[["render",function(e,t,l,n,o,a){return i(),V("li",{class:J(e.ns.b())},[X("div",{class:J(e.ns.e("title"))},[e.$slots.title?s(e.$slots,"title",{key:1}):(i(),V(B,{key:0},[K(U(e.title),1)],64))],2),X("ul",null,[s(e.$slots,"default")])],2)}],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-item-group.vue"]]);const Ee=Z(we,{MenuItem:Se,MenuItemGroup:Ce,SubMenu:ge}),Ae=Q(Se);Q(Ce),Q(ge);const Te=o({name:"Setting"}),$e={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Pe=[X("path",{fill:"currentColor",d:"M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357.12 357.12 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a351.616 351.616 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357.12 357.12 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294.113 294.113 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293.12 293.12 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294.113 294.113 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288.282 288.282 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293.12 293.12 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a287.616 287.616 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384zm0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256z"},null,-1)];var Be=ee(Te,[["render",function(e,t,l,n,o,a){return i(),V("svg",$e,Pe)}]]);const Ne={class:"monitor"},Le={class:"navs"},je={class:"container"};e("default",ie(o({__name:"index",setup(e){const t=_("overview"),l=_(!1),n=te(),o=le();function a(e){o.path.endsWith(e)||n.replace({path:e})}return I((()=>{const e=o.path.split("/").slice(-1)[0];t.value=e})),(e,n)=>{const o=A,r=Ae,s=Ee,d=G("router-view");return i(),V("div",Ne,[X("div",Le,[ne(s,{"default-active":t.value,class:"el-menu-nav",collapse:l.value,onSelect:a},{default:u((()=>[ne(r,{index:"overview"},{title:u((()=>n[0]||(n[0]=[K(" 概况 ")]))),default:u((()=>[ne(o,null,{default:u((()=>[ne(oe(re))])),_:1})])),_:1}),ne(r,{index:"user"},{title:u((()=>n[1]||(n[1]=[K(" 用户 ")]))),default:u((()=>[ne(o,null,{default:u((()=>[ne(oe(ae))])),_:1})])),_:1}),ne(r,{index:"wish"},{title:u((()=>n[2]||(n[2]=[K(" 需求 ")]))),default:u((()=>[ne(o,null,{default:u((()=>[ne(oe(ue))])),_:1})])),_:1}),ne(r,{index:"config"},{title:u((()=>n[3]||(n[3]=[K(" 配置 ")]))),default:u((()=>[ne(o,null,{default:u((()=>[ne(oe(Be))])),_:1})])),_:1})])),_:1},8,["default-active","collapse"])]),X("div",je,[ne(d)])])}}}),[["__scopeId","data-v-1f4a4d8d"]]))}}}));
2
+ //# sourceMappingURL=index-legacy-2gZknrAr.js.map