@sugarat/easypicker2-client 2.7.1 → 2.7.3

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 (174) hide show
  1. package/dist/assets/{data-analysis-B61f8OZD.js → data-analysis-Bnq_VWU8.js} +2 -2
  2. package/dist/assets/{data-analysis-B61f8OZD.js.map → data-analysis-Bnq_VWU8.js.map} +1 -1
  3. package/dist/assets/{data-analysis-legacy-sXkPNcPD.js → data-analysis-legacy-_KcR253K.js} +2 -2
  4. package/dist/assets/{data-analysis-legacy-sXkPNcPD.js.map → data-analysis-legacy-_KcR253K.js.map} +1 -1
  5. package/dist/assets/{data-board-BIN3HXKE.js → data-board-L3s5ouKd.js} +2 -2
  6. package/dist/assets/{data-board-BIN3HXKE.js.map → data-board-L3s5ouKd.js.map} +1 -1
  7. package/dist/assets/{data-board-legacy-mqcredpF.js → data-board-legacy-BFxWeFnQ.js} +2 -2
  8. package/dist/assets/{data-board-legacy-mqcredpF.js.map → data-board-legacy-BFxWeFnQ.js.map} +1 -1
  9. package/dist/assets/{el-date-picker-legacy-CACCtxzL.js → el-date-picker-legacy-Uk9x97L5.js} +2 -2
  10. package/dist/assets/{el-date-picker-legacy-CACCtxzL.js.map → el-date-picker-legacy-Uk9x97L5.js.map} +1 -1
  11. package/dist/assets/{el-date-picker-B-cvGosU.js → el-date-picker-mhY2RJMG.js} +2 -2
  12. package/dist/assets/{el-date-picker-B-cvGosU.js.map → el-date-picker-mhY2RJMG.js.map} +1 -1
  13. package/dist/assets/{el-dialog-C9wNxcPt.js → el-dialog-PRccau6N.js} +2 -2
  14. package/dist/assets/{el-dialog-C9wNxcPt.js.map → el-dialog-PRccau6N.js.map} +1 -1
  15. package/dist/assets/{el-dialog-legacy-CX7a77_4.js → el-dialog-legacy-BRLM43ZY.js} +2 -2
  16. package/dist/assets/{el-dialog-legacy-CX7a77_4.js.map → el-dialog-legacy-BRLM43ZY.js.map} +1 -1
  17. package/dist/assets/{el-dropdown-item-jbdZL0Yj.js → el-dropdown-item-Cr71teRg.js} +2 -2
  18. package/dist/assets/{el-dropdown-item-jbdZL0Yj.js.map → el-dropdown-item-Cr71teRg.js.map} +1 -1
  19. package/dist/assets/{el-dropdown-item-legacy-ChoB2YAN.js → el-dropdown-item-legacy-B0ufpHvy.js} +2 -2
  20. package/dist/assets/{el-dropdown-item-legacy-ChoB2YAN.js.map → el-dropdown-item-legacy-B0ufpHvy.js.map} +1 -1
  21. package/dist/assets/{el-form-item-BhAyaXPT.js → el-form-item-DOwM4Mv8.js} +2 -2
  22. package/dist/assets/{el-form-item-BhAyaXPT.js.map → el-form-item-DOwM4Mv8.js.map} +1 -1
  23. package/dist/assets/{el-form-item-legacy-DNwgpXzk.js → el-form-item-legacy-CvQy7syv.js} +2 -2
  24. package/dist/assets/{el-form-item-legacy-DNwgpXzk.js.map → el-form-item-legacy-CvQy7syv.js.map} +1 -1
  25. package/dist/assets/{el-loading-D5D_2rI_.js → el-loading-DNzUD85e.js} +2 -2
  26. package/dist/assets/{el-loading-D5D_2rI_.js.map → el-loading-DNzUD85e.js.map} +1 -1
  27. package/dist/assets/{el-loading-legacy-CCDpn-BT.js → el-loading-legacy-B3RLcjwN.js} +2 -2
  28. package/dist/assets/{el-loading-legacy-CCDpn-BT.js.map → el-loading-legacy-B3RLcjwN.js.map} +1 -1
  29. package/dist/assets/{el-pagination-DRV4WevC.js → el-pagination-iCicJonH.js} +2 -2
  30. package/dist/assets/{el-pagination-DRV4WevC.js.map → el-pagination-iCicJonH.js.map} +1 -1
  31. package/dist/assets/{el-pagination-legacy-CAxn6D5y.js → el-pagination-legacy-Bf-Bzx7n.js} +2 -2
  32. package/dist/assets/{el-pagination-legacy-CAxn6D5y.js.map → el-pagination-legacy-Bf-Bzx7n.js.map} +1 -1
  33. package/dist/assets/{el-progress-GDfl1hgb.js → el-progress-1hLO5hs0.js} +2 -2
  34. package/dist/assets/{el-progress-GDfl1hgb.js.map → el-progress-1hLO5hs0.js.map} +1 -1
  35. package/dist/assets/{el-progress-legacy-C5K3FqLs.js → el-progress-legacy-QmxDezwR.js} +2 -2
  36. package/dist/assets/{el-progress-legacy-C5K3FqLs.js.map → el-progress-legacy-QmxDezwR.js.map} +1 -1
  37. package/dist/assets/{el-select-B9z8VvNb.js → el-select-CVjQdC39.js} +2 -2
  38. package/dist/assets/{el-select-B9z8VvNb.js.map → el-select-CVjQdC39.js.map} +1 -1
  39. package/dist/assets/{el-select-legacy-BI1YK9Jv.js → el-select-legacy-DSGgSQYX.js} +2 -2
  40. package/dist/assets/{el-select-legacy-BI1YK9Jv.js.map → el-select-legacy-DSGgSQYX.js.map} +1 -1
  41. package/dist/assets/{el-switch-oOC_byJv.js → el-switch-B76QvbJN.js} +2 -2
  42. package/dist/assets/{el-switch-oOC_byJv.js.map → el-switch-B76QvbJN.js.map} +1 -1
  43. package/dist/assets/{el-switch-legacy-CG_sT4XS.js → el-switch-legacy-CHkEgavQ.js} +2 -2
  44. package/dist/assets/{el-switch-legacy-CG_sT4XS.js.map → el-switch-legacy-CHkEgavQ.js.map} +1 -1
  45. package/dist/assets/{el-tab-pane-NvGl_NI0.js → el-tab-pane-BhVByOfe.js} +2 -2
  46. package/dist/assets/{el-tab-pane-NvGl_NI0.js.map → el-tab-pane-BhVByOfe.js.map} +1 -1
  47. package/dist/assets/{el-tab-pane-legacy-usarmKVQ.js → el-tab-pane-legacy-DMdhUCHY.js} +2 -2
  48. package/dist/assets/{el-tab-pane-legacy-usarmKVQ.js.map → el-tab-pane-legacy-DMdhUCHY.js.map} +1 -1
  49. package/dist/assets/{el-table-column-legacy-BWpnrxZl.js → el-table-column-legacy-N_oU_-0P.js} +2 -2
  50. package/dist/assets/{el-table-column-legacy-BWpnrxZl.js.map → el-table-column-legacy-N_oU_-0P.js.map} +1 -1
  51. package/dist/assets/{el-table-column-JBAymLKS.js → el-table-column-tkbtgrcD.js} +2 -2
  52. package/dist/assets/{el-table-column-JBAymLKS.js.map → el-table-column-tkbtgrcD.js.map} +1 -1
  53. package/dist/assets/{index-Dj5caLYF.js → index-3yen43So.js} +2 -2
  54. package/dist/assets/{index-Dj5caLYF.js.map → index-3yen43So.js.map} +1 -1
  55. package/dist/assets/{index-CHIrZkSk.js → index-9zuSLjpa.js} +2 -2
  56. package/dist/assets/{index-CHIrZkSk.js.map → index-9zuSLjpa.js.map} +1 -1
  57. package/dist/assets/{index-MTuc20rr.js → index-B-6zRvEX.js} +2 -2
  58. package/dist/assets/{index-MTuc20rr.js.map → index-B-6zRvEX.js.map} +1 -1
  59. package/dist/assets/{index-DCwrZmag.js → index-BN1f1UM3.js} +2 -2
  60. package/dist/assets/{index-DCwrZmag.js.map → index-BN1f1UM3.js.map} +1 -1
  61. package/dist/assets/{index-Byzqqd86.js → index-BUmkgniE.js} +2 -2
  62. package/dist/assets/{index-Byzqqd86.js.map → index-BUmkgniE.js.map} +1 -1
  63. package/dist/assets/index-BbfnoqK6.js +2 -0
  64. package/dist/assets/index-BbfnoqK6.js.map +1 -0
  65. package/dist/assets/index-C3IckGNL.js +2 -0
  66. package/dist/assets/index-C3IckGNL.js.map +1 -0
  67. package/dist/assets/index-CYAf_OTx.js +40 -0
  68. package/dist/assets/index-CYAf_OTx.js.map +1 -0
  69. package/dist/assets/{index-B0mV367i.js → index-Cb6-p2hG.js} +2 -2
  70. package/dist/assets/{index-B0mV367i.js.map → index-Cb6-p2hG.js.map} +1 -1
  71. package/dist/assets/index-Cfg2jkVw.css +1 -0
  72. package/dist/assets/{index-BOep9MOB.css → index-CkMvb3wF.css} +1 -1
  73. package/dist/assets/{index-CKIiHmIf.js → index-Cl4G6EQO.js} +2 -2
  74. package/dist/assets/{index-CKIiHmIf.js.map → index-Cl4G6EQO.js.map} +1 -1
  75. package/dist/assets/index-CnbFxlpi.css +1 -0
  76. package/dist/assets/{index-C0niS8Vv.js → index-Cyb1OjRN.js} +2 -2
  77. package/dist/assets/{index-C0niS8Vv.js.map → index-Cyb1OjRN.js.map} +1 -1
  78. package/dist/assets/{index-Dxy6ycv8.js → index-D7aZxhM6.js} +2 -2
  79. package/dist/assets/{index-Dxy6ycv8.js.map → index-D7aZxhM6.js.map} +1 -1
  80. package/dist/assets/{index-DDGYm9L-.js → index-DI41wbky.js} +2 -2
  81. package/dist/assets/{index-DDGYm9L-.js.map → index-DI41wbky.js.map} +1 -1
  82. package/dist/assets/{index-Cno4i6lg.js → index-DcOjlpKI.js} +2 -2
  83. package/dist/assets/{index-Cno4i6lg.js.map → index-DcOjlpKI.js.map} +1 -1
  84. package/dist/assets/{index-bD-fr3vy.js → index-DjO-nUIS.js} +2 -2
  85. package/dist/assets/{index-bD-fr3vy.js.map → index-DjO-nUIS.js.map} +1 -1
  86. package/dist/assets/index-DnxF29eG.css +1 -0
  87. package/dist/assets/{index-BUF8Xxid.js → index-DrKX0cCg.js} +2 -2
  88. package/dist/assets/{index-BUF8Xxid.js.map → index-DrKX0cCg.js.map} +1 -1
  89. package/dist/assets/index-F3S0vKOW.js +2 -0
  90. package/dist/assets/{index-DEiWe2Bk.js.map → index-F3S0vKOW.js.map} +1 -1
  91. package/dist/assets/{index-DRHl9KU8.js → index-I78Ur1Md.js} +2 -2
  92. package/dist/assets/{index-DRHl9KU8.js.map → index-I78Ur1Md.js.map} +1 -1
  93. package/dist/assets/{index-fb67TYJ8.js → index-L0LtrfyP.js} +2 -2
  94. package/dist/assets/{index-fb67TYJ8.js.map → index-L0LtrfyP.js.map} +1 -1
  95. package/dist/assets/index-lTmxAqnX.js +2 -0
  96. package/dist/assets/index-lTmxAqnX.js.map +1 -0
  97. package/dist/assets/{index-legacy-2G5G7SiF.js → index-legacy-BJNK4MqF.js} +2 -2
  98. package/dist/assets/index-legacy-BJNK4MqF.js.map +1 -0
  99. package/dist/assets/{index-legacy-DC5-MYgp.js → index-legacy-BLlk8iq-.js} +13 -8
  100. package/dist/assets/index-legacy-BLlk8iq-.js.map +1 -0
  101. package/dist/assets/{index-legacy-DV-KwU0c.js → index-legacy-BmWYm3m_.js} +2 -2
  102. package/dist/assets/{index-legacy-DV-KwU0c.js.map → index-legacy-BmWYm3m_.js.map} +1 -1
  103. package/dist/assets/index-legacy-Bnp7569A.js +2 -0
  104. package/dist/assets/{index-legacy-DM_G6GXF.js.map → index-legacy-Bnp7569A.js.map} +1 -1
  105. package/dist/assets/{index-legacy-DmJc-LaA.js → index-legacy-CQ24Si-w.js} +2 -2
  106. package/dist/assets/{index-legacy-DmJc-LaA.js.map → index-legacy-CQ24Si-w.js.map} +1 -1
  107. package/dist/assets/{index-legacy-l7TP3X8w.js → index-legacy-CT1nF7s9.js} +2 -2
  108. package/dist/assets/{index-legacy-l7TP3X8w.js.map → index-legacy-CT1nF7s9.js.map} +1 -1
  109. package/dist/assets/{index-legacy-K0GPuvtR.js → index-legacy-CeVzo60P.js} +2 -2
  110. package/dist/assets/{index-legacy-K0GPuvtR.js.map → index-legacy-CeVzo60P.js.map} +1 -1
  111. package/dist/assets/index-legacy-Cf0w_PNA.js +2 -0
  112. package/dist/assets/index-legacy-Cf0w_PNA.js.map +1 -0
  113. package/dist/assets/{index-legacy-B1WwgC0S.js → index-legacy-DZSQUiaj.js} +2 -2
  114. package/dist/assets/{index-legacy-B1WwgC0S.js.map → index-legacy-DZSQUiaj.js.map} +1 -1
  115. package/dist/assets/{index-legacy-Dmi-DBK0.js → index-legacy-D_K0eXFb.js} +2 -2
  116. package/dist/assets/{index-legacy-Dmi-DBK0.js.map → index-legacy-D_K0eXFb.js.map} +1 -1
  117. package/dist/assets/{index-legacy-DUrsbgNe.js → index-legacy-Da3YyHW_.js} +2 -2
  118. package/dist/assets/{index-legacy-DUrsbgNe.js.map → index-legacy-Da3YyHW_.js.map} +1 -1
  119. package/dist/assets/{index-legacy-DiNZXmUs.js → index-legacy-Da4s_D85.js} +2 -2
  120. package/dist/assets/{index-legacy-DiNZXmUs.js.map → index-legacy-Da4s_D85.js.map} +1 -1
  121. package/dist/assets/{index-legacy-DP3Q6cDA.js → index-legacy-DhNaKknk.js} +2 -2
  122. package/dist/assets/{index-legacy-DP3Q6cDA.js.map → index-legacy-DhNaKknk.js.map} +1 -1
  123. package/dist/assets/{index-legacy-BN-W2P7-.js → index-legacy-Dm1CXog1.js} +2 -2
  124. package/dist/assets/{index-legacy-BN-W2P7-.js.map → index-legacy-Dm1CXog1.js.map} +1 -1
  125. package/dist/assets/{index-legacy-gQf30T09.js → index-legacy-DpNNn-Dy.js} +2 -2
  126. package/dist/assets/index-legacy-DpNNn-Dy.js.map +1 -0
  127. package/dist/assets/{index-legacy-BwpR0DP9.js → index-legacy-PkF4cKK9.js} +2 -2
  128. package/dist/assets/{index-legacy-BwpR0DP9.js.map → index-legacy-PkF4cKK9.js.map} +1 -1
  129. package/dist/assets/{index-legacy-BdJHr4yN.js → index-legacy-QHDmYAB8.js} +2 -2
  130. package/dist/assets/{index-legacy-BdJHr4yN.js.map → index-legacy-QHDmYAB8.js.map} +1 -1
  131. package/dist/assets/{index-legacy-BZb5uhBF.js → index-legacy-_M1-0586.js} +2 -2
  132. package/dist/assets/{index-legacy-BZb5uhBF.js.map → index-legacy-_M1-0586.js.map} +1 -1
  133. package/dist/assets/{index-legacy-Cbyz8WHA.js → index-legacy-m0dvnwGi.js} +2 -2
  134. package/dist/assets/{index-legacy-Cbyz8WHA.js.map → index-legacy-m0dvnwGi.js.map} +1 -1
  135. package/dist/assets/{index-legacy-Qibh5ehq.js → index-legacy-vRS79jKS.js} +2 -2
  136. package/dist/assets/{index-legacy-Qibh5ehq.js.map → index-legacy-vRS79jKS.js.map} +1 -1
  137. package/dist/assets/{isEqual-pN6Ih18F.js → isEqual-BHpVKj_X.js} +2 -2
  138. package/dist/assets/{isEqual-pN6Ih18F.js.map → isEqual-BHpVKj_X.js.map} +1 -1
  139. package/dist/assets/{isEqual-legacy-DVLZyo95.js → isEqual-legacy-BWUPR8bV.js} +2 -2
  140. package/dist/assets/{isEqual-legacy-DVLZyo95.js.map → isEqual-legacy-BWUPR8bV.js.map} +1 -1
  141. package/dist/assets/{refresh-BTQLK-UW.js → refresh-DPuuDO9h.js} +2 -2
  142. package/dist/assets/{refresh-BTQLK-UW.js.map → refresh-DPuuDO9h.js.map} +1 -1
  143. package/dist/assets/{refresh-legacy-Cv7RM_sm.js → refresh-legacy-DOts-8Wc.js} +2 -2
  144. package/dist/assets/{refresh-legacy-Cv7RM_sm.js.map → refresh-legacy-DOts-8Wc.js.map} +1 -1
  145. package/dist/assets/{tip-DQo-E_Pu.js → tip-CH7nBVXc.js} +2 -2
  146. package/dist/assets/{tip-DQo-E_Pu.js.map → tip-CH7nBVXc.js.map} +1 -1
  147. package/dist/assets/{tip-legacy-Ci60OMi9.js → tip-legacy-DiCk_qP1.js} +2 -2
  148. package/dist/assets/{tip-legacy-Ci60OMi9.js.map → tip-legacy-DiCk_qP1.js.map} +1 -1
  149. package/dist/assets/validator-BMr-jeUB.js +2 -0
  150. package/dist/assets/{validator-CZlzBDi2.js.map → validator-BMr-jeUB.js.map} +1 -1
  151. package/dist/assets/validator-legacy-CacjPWoF.js +2 -0
  152. package/dist/assets/{validator-legacy-D-pC1hkO.js.map → validator-legacy-CacjPWoF.js.map} +1 -1
  153. package/dist/index.html +2 -2
  154. package/package.json +3 -4
  155. package/dist/assets/index-1eHw6sEI.css +0 -1
  156. package/dist/assets/index-BG1GuMIu.css +0 -1
  157. package/dist/assets/index-BxsJs6HZ.js +0 -2
  158. package/dist/assets/index-BxsJs6HZ.js.map +0 -1
  159. package/dist/assets/index-ChQZKkse.css +0 -1
  160. package/dist/assets/index-D80lTVeV.js +0 -36
  161. package/dist/assets/index-D80lTVeV.js.map +0 -1
  162. package/dist/assets/index-DEiWe2Bk.js +0 -2
  163. package/dist/assets/index-DJnltRnr.js +0 -2
  164. package/dist/assets/index-DJnltRnr.js.map +0 -1
  165. package/dist/assets/index-DMIqQLOE.js +0 -2
  166. package/dist/assets/index-DMIqQLOE.js.map +0 -1
  167. package/dist/assets/index-legacy-2G5G7SiF.js.map +0 -1
  168. package/dist/assets/index-legacy-Chw6iyCz.js +0 -2
  169. package/dist/assets/index-legacy-Chw6iyCz.js.map +0 -1
  170. package/dist/assets/index-legacy-DC5-MYgp.js.map +0 -1
  171. package/dist/assets/index-legacy-DM_G6GXF.js +0 -2
  172. package/dist/assets/index-legacy-gQf30T09.js.map +0 -1
  173. package/dist/assets/validator-CZlzBDi2.js +0 -2
  174. package/dist/assets/validator-legacy-D-pC1hkO.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index-legacy-DP3Q6cDA.js","sources":["../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/message.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/money.mjs","../../src/pages/dashboard/manage/user/index.vue"],"sourcesContent":["import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Message\"\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 224v512a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V224H128zm0-64h768a64 64 0 0 1 64 64v512a128 128 0 0 1-128 128H192A128 128 0 0 1 64 736V224a64 64 0 0 1 64-64z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M904 224 656.512 506.88a192 192 0 0 1-289.024 0L120 224h784zm-698.944 0 210.56 240.704a128 128 0 0 0 192.704 0L818.944 224H205.056z\"\n}, null, -1);\nconst _hoisted_4 = [\n _hoisted_2,\n _hoisted_3\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_4);\n}\nvar message = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { message 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: \"Money\"\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: \"M256 640v192h640V384H768v-64h150.976c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H233.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096c-2.688-5.184-4.224-10.368-4.224-24.576V640h64z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M768 192H128v448h640V192zm64-22.976v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096C65.536 682.432 64 677.248 64 663.04V169.024c0-14.272 1.472-19.456 4.288-24.64a29.056 29.056 0 0 1 12.096-12.16C85.568 129.536 90.752 128 104.96 128h685.952c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64z\"\n}, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M448 576a160 160 0 1 1 0-320 160 160 0 0 1 0 320zm0-64a96 96 0 1 0 0-192 96 96 0 0 0 0 192z\"\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 money = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { money as default };\n","<script lang=\"ts\" setup>\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, onMounted, reactive, ref } from 'vue'\nimport { DeleteFilled, Message, Money, Refresh, Search } from '@element-plus/icons-vue'\nimport { useLocalStorage } from '@vueuse/core'\nimport Tip from '../../tasks/components/infoPanel/tip.vue'\nimport { PublicApi, SuperUserApi } from '@/apis'\nimport { USER_STATUS } from '@/constants'\nimport { formatDate, formatSize } from '@/utils/stringUtil'\nimport { rMobilePhone, rPassword, rVerCode } from '@/utils/regExp'\n\nimport { useIsMobile, useSiteConfig } from '@/composables'\n\nconst sumCost = ref('')\n// 用户\nconst users = reactive<SuperUserApiTypes.UserItem[]>([])\nfunction refreshUsers() {\n SuperUserApi.getUserList().then((res) => {\n users.splice(0, users.length, ...res.data.list)\n sumCost.value = res.data.sumCost\n ElMessage.success('列表数据刷新成功')\n })\n}\n\n// 筛选用户状态\nconst userStatusType = useLocalStorage('userStatusType', USER_STATUS.NORMAL)\nconst searchWord = ref('')\nconst statusTypeList = reactive([\n {\n label: '正常',\n type: USER_STATUS.NORMAL,\n },\n {\n label: '冻结',\n type: USER_STATUS.FREEZE,\n },\n {\n label: '封禁',\n type: USER_STATUS.BAN,\n },\n])\nconst sortType = useLocalStorage('userListSortType', 'id')\nconst sortTypeList = [\n {\n label: 'ID',\n value: 'id',\n },\n {\n label: '累计上传数量',\n value: 'fileCount',\n },\n {\n label: '累计占用空间',\n value: 'originFileSize',\n },\n {\n label: 'OSS文件数量',\n value: 'ossCount',\n },\n {\n label: '最后登录时间',\n value: 'lastLoginTime',\n },\n {\n label: '登录次数',\n value: 'login_count',\n },\n {\n label: '容量大小',\n value: 'size',\n },\n {\n label: '占用空间',\n value: 'usage',\n },\n {\n label: '限制使用',\n value: 'limitUpload',\n },\n {\n label: '下载次数',\n value: 'downloadCount',\n },\n {\n label: '累计下载大小',\n value: 'downloadSize',\n },\n {\n label: '累计费用',\n value: 'cost',\n },\n]\n\n// 升降序\nconst sortOrder = useLocalStorage('userListSortOrder', 'desc')\nconst sortOrderList = [\n {\n label: '升序',\n value: 'asc',\n },\n {\n label: '降序',\n value: 'desc',\n },\n]\nconst filterUsers = computed(() => {\n const copyUsers = [...users]\n copyUsers.sort((a, b) => {\n return sortOrder.value === 'asc'\n ? a[sortType.value] - b[sortType.value]\n : b[sortType.value] - a[sortType.value]\n })\n return copyUsers\n .filter(v => v.status === userStatusType.value)\n .filter((v) => {\n const {\n id,\n account,\n phone,\n joinTime,\n loginCount,\n loginTime,\n openTime,\n } = v\n if (searchWord.value.length === 0)\n return true\n return `${id} ${account} ${phone} ${loginTime} ${formatDate(\n openTime,\n )} ${formatDate(loginCount)} ${formatDate(joinTime)}`.includes(\n searchWord.value,\n )\n })\n})\n\n// 分页\nconst pageSize = useLocalStorage<number>('userListPageSize', 10)\nfunction handleSizeChange(v: number) {\n pageSize.value = v\n}\nconst pageCount = computed(() => {\n const t = Math.ceil(filterUsers.value.length / pageSize.value)\n return t\n})\nconst pageCurrent = ref(1)\nconst pageUsers = computed(() => {\n const start = (pageCurrent.value - 1) * pageSize.value\n const end = pageCurrent.value * pageSize.value\n return filterUsers.value.slice(start, end)\n})\nfunction handlePageChange(idx: number) {\n pageCurrent.value = idx\n}\n\n// 状态修改\nconst showUserStatusDialog = ref(false)\nconst selectUserId = ref(0)\nconst selectStatus = ref(USER_STATUS.NORMAL)\nconst userStatusList = statusTypeList\nconst openTime = ref('')\nfunction handleChangeStatus(userId: number, status: USER_STATUS, oTime: string) {\n selectUserId.value = userId\n selectStatus.value = status\n openTime.value = oTime\n showUserStatusDialog.value = true\n}\nfunction handleSaveStatus() {\n const user = users.find(u => u.id === selectUserId.value)\n if (selectStatus.value === USER_STATUS.FREEZE) {\n if (!openTime.value) {\n ElMessage.warning('请设置解冻时间')\n return\n }\n user.openTime = openTime.value\n }\n else {\n user.openTime = ''\n }\n user.status = selectStatus.value\n showUserStatusDialog.value = false\n SuperUserApi.updateUserStatus(user.id, user.status, user.openTime).then(\n () => {\n ElMessage.success('修改成功')\n },\n )\n}\n\n// 重置密码\nconst showResetPasswordDialog = ref(false)\nconst pwdForm = reactive({\n pwd1: '',\n pwd2: '',\n})\nfunction handleResetPassword(userId: number) {\n selectUserId.value = userId\n showResetPasswordDialog.value = true\n pwdForm.pwd1 = ''\n pwdForm.pwd2 = ''\n}\n\nfunction checkPwdForm() {\n if (!rPassword.test(pwdForm.pwd1)) {\n ElMessage.warning('密码格式不正确(6-16位 支持字母/数字/下划线)')\n return false\n }\n if (pwdForm.pwd1 !== pwdForm.pwd2) {\n ElMessage.warning('两次输入的密码不一致')\n return false\n }\n\n return true\n}\n\nfunction handleSavePassword() {\n if (!checkPwdForm())\n return\n ElMessageBox.confirm('此操作不可逆,请谨慎操作', '确定要重置用户的密码吗?', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n })\n .then(() => {\n SuperUserApi.resetPassword(selectUserId.value, pwdForm.pwd1).then(() => {\n ElMessage.success('重置成功')\n showResetPasswordDialog.value = false\n })\n })\n .catch(() => {\n //\n })\n}\n\n// 限制空间大小\nconst showLimitSizeDialog = ref(false)\nconst limitSizeForm = reactive({\n size: 2,\n})\nfunction handleRewriteSize(id: number, size: number) {\n selectUserId.value = id\n limitSizeForm.size = size\n showLimitSizeDialog.value = true\n}\nasync function handleSaveSize() {\n if (+limitSizeForm.size < 0) {\n ElMessage.warning('空间上限不能小于0')\n return\n }\n await SuperUserApi.resetLimitSpace(selectUserId.value, +limitSizeForm.size)\n // 接口调用修改\n ElMessage.success('修改成功')\n showLimitSizeDialog.value = false\n refreshUsers()\n}\n// TODO: 重复代码优化\n// 修改余额\nconst showWalletDialog = ref(false)\nconst walletForm = reactive({\n money: 2,\n})\nfunction handleRewriteWallet(id: number, money: number) {\n selectUserId.value = id\n walletForm.money = money\n showWalletDialog.value = true\n}\nasync function handleSaveWallet() {\n if (+walletForm.money < 0) {\n ElMessage.warning('余额不能小于0')\n return\n }\n await SuperUserApi.updateWallet(selectUserId.value, +walletForm.money)\n // 接口调用修改\n ElMessage.success('修改成功')\n showWalletDialog.value = false\n refreshUsers()\n}\n\n// 绑定手机号\nconst showPhoneDialog = ref(false)\nconst phoneForm = reactive({\n phone: '',\n code: '',\n})\nconst codeText = ref('获取验证码')\nconst time = ref(0)\nfunction refreshCodeText() {\n if (time.value === 0) {\n codeText.value = '获取验证码'\n return\n }\n codeText.value = `${time.value}s`\n time.value -= 1\n setTimeout(refreshCodeText, 1000)\n}\nfunction getCode() {\n if (!rMobilePhone.test(phoneForm.phone)) {\n ElMessage.warning('手机号格式不正确')\n return\n }\n // check是否可用\n PublicApi.checkPhone(phoneForm.phone)\n .then(() => {\n PublicApi.getCode(phoneForm.phone).then(() => {\n time.value = 120\n refreshCodeText()\n ElMessage.success('获取成功,请注意查看手机短信')\n })\n })\n .catch((err) => {\n const { code: c } = err\n const msg = '注册失败,未知错误'\n const options: any = {\n 1002: '手机号已被注册',\n 1006: '手机号格式不正确',\n }\n ElMessage.error(options[c] || msg)\n })\n}\nfunction checkPhoneForm() {\n if (!rMobilePhone.test(phoneForm.phone)) {\n ElMessage.warning('手机号格式不正确')\n return false\n }\n if (!rVerCode.test(phoneForm.code)) {\n ElMessage.warning('验证码格式不正确')\n return false\n }\n\n return true\n}\nfunction handleBindPhone(id: number) {\n selectUserId.value = id\n showPhoneDialog.value = true\n}\nasync function handleSavePhone() {\n if (!checkPhoneForm()) {\n return\n }\n // 调用API更新,验证码 不正确判断\n SuperUserApi.resetPhone(selectUserId.value, phoneForm.phone, phoneForm.code)\n .then(() => {\n ElMessage.success('绑定成功')\n showPhoneDialog.value = false\n phoneForm.code = ''\n phoneForm.phone = ''\n refreshUsers()\n })\n .catch((err) => {\n const { code: c } = err\n const msg = '绑定失败,未知错误'\n const options: any = {\n 1002: '手机号已被注册',\n 1003: '验证码不正确',\n }\n ElMessage.error(options[c] || msg)\n })\n}\n\nfunction handleClearFiles(userId: number, type: 'month' | 'quarter' | 'half') {\n const tipWords = {\n month: '一个月前',\n quarter: '三个月前',\n half: '半年前',\n }\n selectUserId.value = userId\n ElMessageBox.confirm('移除后这些文件将无法恢复,请谨慎操作', '删除前确认?', {\n confirmButtonText: `确认删除 ${tipWords[type]}文件`,\n })\n .then(() => {\n SuperUserApi.clearOssFile(userId, type).then(() => {\n ElMessage.success('清理成功')\n })\n })\n .catch(() => {})\n}\n\n// TODO: 0 global 1 user_push\nconst pushMessageType = ref(1)\nconst showMessageDialog = ref(false)\nconst pushMessageText = ref('')\nfunction sendMessage(id: number, type = 1) {\n selectUserId.value = id\n pushMessageType.value = type\n showMessageDialog.value = true\n}\n\nfunction sureSendMessage() {\n SuperUserApi.sendMessage(\n pushMessageText.value,\n pushMessageType.value,\n selectUserId.value,\n ).then(() => {\n ElMessage.success('推送成功')\n // 推送成功\n pushMessageText.value = ''\n showMessageDialog.value = false\n })\n}\nfunction logout(account: string) {\n SuperUserApi.logout(account).then(() => {\n ElMessage.success(`下线成功 ${account}`)\n refreshUsers()\n })\n}\n\nonMounted(() => {\n refreshUsers()\n})\n\nconst isMobile = useIsMobile()\n\nconst { moneyStartDay } = useSiteConfig()\n\nfunction handleCheckDetail(price) {\n const { backhaulTrafficPrice, cdnPrice, compressPrice, ossPrice } = price\n ElMessageBox.confirm(`存储:${ossPrice}, 下载:${cdnPrice},压缩:${compressPrice},回源:${backhaulTrafficPrice}`, {\n showCancelButton: false,\n })\n}\n</script>\n\n<template>\n <div class=\"user\">\n <div class=\"panel\">\n <div class=\"p10 log-filter\">\n <span class=\"item\">\n <span class=\"label\">状态</span>\n <el-select\n v-model=\"userStatusType\"\n size=\"default\"\n class=\"w100\"\n >\n <el-option\n v-for=\"(item, idx) in statusTypeList\"\n :key=\"idx\"\n :label=\"item.label\"\n :value=\"item.type\"\n />\n </el-select>\n </span>\n <span class=\"item\">\n <span class=\"label\">排序</span>\n <el-select\n v-model=\"sortType\"\n size=\"default\"\n class=\"w100\"\n >\n <el-option\n v-for=\"(item, idx) in sortTypeList\"\n :key=\"idx\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n <el-select\n v-model=\"sortOrder\"\n size=\"default\"\n class=\"w100\"\n >\n <el-option\n v-for=\"(item, idx) in sortOrderList\"\n :key=\"idx\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n </span>\n <span class=\"item\">\n <el-input\n v-model=\"searchWord\"\n size=\"default\"\n clearable\n placeholder=\"请输入要检索的内容\"\n :prefix-icon=\"Search\"\n />\n </span>\n <span class=\"item\">\n <el-button size=\"default\" :icon=\"Refresh\" @click=\"refreshUsers\">刷新</el-button>\n </span>\n <span class=\"item\">\n <el-button\n size=\"warning\"\n :icon=\"Message\"\n @click=\"sendMessage(null, 0)\"\n >推送全局消息</el-button>\n </span>\n </div>\n <Tip>\n 预估费用:{{ sumCost }}¥,\n 计费起始时间:{{ formatDate(moneyStartDay) }}\n </Tip>\n <el-table\n height=\"550\"\n stripe\n border\n :default-sort=\"{ prop: 'date', order: 'descending' }\"\n :data=\"pageUsers\"\n style=\"width: 100%\"\n >\n <el-table-column prop=\"id\" label=\"ID\" width=\"60\" />\n <el-table-column\n prop=\"account\"\n label=\"账号\"\n width=\"130\"\n />\n <el-table-column\n prop=\"phone\"\n label=\"手机号\"\n width=\"80\"\n />\n <el-table-column\n label=\"统计\"\n width=\"190\"\n >\n <template #default=\"scope\">\n 最后登录:{{\n scope.row.loginTime && formatDate(new Date(scope.row.loginTime))\n }}<br>\n 注册时间:{{ formatDate(new Date(scope.row.joinTime)) }}<br>\n 登录次数:{{ scope.row.loginCount }}<br>\n token: {{ scope.row.onlineCount }}<br>\n </template>\n </el-table-column>\n <el-table-column\n prop=\"downloadCount\"\n label=\"累计下载\"\n >\n <template #default=\"{ row: { downloadCount, downloadSize, oneFile, compressFile, templateFile } }\">\n {{ downloadCount }} / {{ formatSize(downloadSize) }}<br>\n 单文件:{{ oneFile.count }} / {{ formatSize(oneFile.size) }}<br>\n 归档:{{ compressFile.count }} / {{ formatSize(compressFile.size) }}<br>\n 模板:{{ templateFile.count }} / {{ formatSize(templateFile.size) }}\n </template>\n </el-table-column>\n <el-table-column\n v-if=\"userStatusType === 1\"\n prop=\"openTime\"\n label=\"解封时间\"\n >\n <template #default=\"scope\">\n {{\n scope.row.openTime && formatDate(new Date(scope.row.openTime))\n }}\n </template>\n </el-table-column>\n <el-table-column\n prop=\"fileCount\"\n label=\"文件\"\n >\n <template #default=\"scope\">\n 累计:{{ scope.row.fileCount }}/{{ formatSize(scope.row.originFileSize) }}<br>\n OSS:{{ scope.row.ossCount }}/{{ formatSize(scope.row.usage) }}<br>\n 平均:{{ scope.row.originFileSize && scope.row.fileCount && formatSize(Math.round(scope.row.originFileSize / scope.row.fileCount)) }}<br>\n 平均:{{ scope.row.usage && scope.row.ossCount && formatSize(Math.round(scope.row.usage / scope.row.ossCount)) }}<br>\n </template>\n </el-table-column>\n <el-table-column label=\"云空间\" width=\"240\">\n <template\n #default=\"{\n row: { wallet, price, balance, resources, monthAgoSize, quarterAgoSize, halfYearSize, id, limitSize, limitUpload, percentage },\n }\"\n >\n <ul class=\"user-oss-info\" :class=\"{ disabled: limitUpload }\">\n <li>\n ¥:{{ price.total }} / {{ wallet }} = {{ balance }} <el-button\n :icon=\"Money\"\n circle\n size=\"small\"\n @click=\"handleCheckDetail(price)\"\n />\n </li>\n <li>{{ percentage }}% {{ resources }}/{{ limitSize }}</li>\n <li>\n 一月前:{{ monthAgoSize\n }}<el-button\n v-if=\"resources !== '0B'\"\n class=\"clear-btn\"\n :icon=\"DeleteFilled\"\n circle\n size=\"small\"\n @click=\"handleClearFiles(id, 'month')\"\n />\n </li>\n <li>\n 三月前:{{ quarterAgoSize\n }}<el-button\n v-if=\"quarterAgoSize !== '0B'\"\n class=\"clear-btn\"\n :icon=\"DeleteFilled\"\n circle\n size=\"small\"\n @click=\"handleClearFiles(id, 'quarter')\"\n />\n </li>\n <li>\n 半年前:{{ halfYearSize\n }}<el-button\n v-if=\"halfYearSize !== '0B'\"\n class=\"clear-btn\"\n :icon=\"DeleteFilled\"\n circle\n size=\"small\"\n @click=\"handleClearFiles(id, 'half')\"\n />\n </li>\n </ul>\n </template>\n </el-table-column>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"100\">\n <template #default=\"scope\">\n <div class=\"text-btn-list\">\n <el-button\n type=\"primary\"\n text\n size=\"small\"\n @click=\"\n handleChangeStatus(\n scope.row.id,\n scope.row.status,\n scope.row.openTime,\n )\n \"\n >\n 修改状态\n </el-button>\n <el-button\n type=\"primary\"\n text\n size=\"small\"\n @click=\"handleResetPassword(scope.row.id)\"\n >\n 重置密码\n </el-button>\n <el-button\n type=\"primary\"\n text\n size=\"small\"\n @click=\"handleBindPhone(scope.row.id)\"\n >\n 绑定手机号\n </el-button>\n <el-button\n type=\"warning\"\n text\n size=\"small\"\n @click=\"sendMessage(scope.row.id)\"\n >\n 发送消息\n </el-button>\n <el-button\n type=\"danger\"\n text\n size=\"small\"\n @click=\"handleRewriteSize(scope.row.id, scope.row.size)\"\n >\n 修改上限\n </el-button>\n <el-button\n type=\"danger\"\n text\n size=\"small\"\n @click=\"handleRewriteWallet(scope.row.id, scope.row.wallet)\"\n >\n 修改余额\n </el-button>\n <el-button\n v-if=\"scope.row.onlineCount !== 0\"\n type=\"danger\"\n text\n size=\"small\"\n @click=\"logout(scope.row.account)\"\n >\n 一键下线\n </el-button>\n </div>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"flex fc p10\">\n <el-pagination\n :current-page=\"pageCurrent\"\n background\n :page-count=\"pageCount\"\n :page-sizes=\"[10, 50, 100, 200]\"\n :page-size=\"pageSize\"\n :total=\"filterUsers.length\"\n layout=\"total, sizes, prev, pager, next, jumper\"\n @current-change=\"handlePageChange\"\n @size-change=\"handleSizeChange\"\n />\n </div>\n </div>\n <!-- 消息推送弹窗 -->\n <el-dialog\n v-model=\"showMessageDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"消息推送\"\n >\n <div class=\"tc\">\n <el-input\n v-model=\"pushMessageText\"\n :autosize=\"{ minRows: 6, maxRows: 20 }\"\n type=\"textarea\"\n placeholder=\"输入要推送的消息,支持HTML内容(推荐使用mdnice 转 markdown 转html)\"\n />\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showMessageDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"sureSendMessage\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n <!-- 用户状态修改弹窗 -->\n <el-dialog\n v-model=\"showUserStatusDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"状态修改\"\n >\n <div class=\"tc\">\n <el-select v-model=\"selectStatus\" placeholder=\"请选择新分类\">\n <el-option\n v-for=\"s in userStatusList\"\n :key=\"s.type\"\n :label=\"s.label\"\n :value=\"s.type\"\n />\n </el-select>\n </div>\n <div v-if=\"selectStatus === 1\" style=\"margin-top: 10px\" class=\"tc\">\n <el-date-picker\n v-model=\"openTime\"\n :editable=\"false\"\n type=\"datetime\"\n placeholder=\"点击设置解封日期\"\n />\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showUserStatusDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSaveStatus\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n\n <!-- 重置密码 -->\n <el-dialog\n v-model=\"showResetPasswordDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"密码重置\"\n >\n <div class=\"tc\">\n <el-form :model=\"pwdForm\" label-width=\"80px\">\n <el-form-item label=\"新密码\">\n <el-input\n v-model=\"pwdForm.pwd1\"\n show-word-limit\n clearable\n placeholder=\"请输入新密码\"\n maxlength=\"16\"\n minlength=\"6\"\n />\n </el-form-item>\n <el-form-item>\n <el-input\n v-model=\"pwdForm.pwd2\"\n show-word-limit\n clearable\n placeholder=\"请再次输入\"\n maxlength=\"16\"\n minlength=\"6\"\n />\n </el-form-item>\n </el-form>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showResetPasswordDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSavePassword\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n <!-- 重绑定手机号 -->\n <el-dialog\n v-model=\"showPhoneDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"绑定手机号\"\n >\n <div class=\"tc\">\n <el-form :model=\"phoneForm\" label-width=\"60px\">\n <el-form-item label=\"手机号\">\n <el-input\n v-model=\"phoneForm.phone\"\n show-word-limit\n clearable\n placeholder=\"请输入手机号\"\n maxlength=\"11\"\n >\n <template #append>\n <!-- 获取验证码 -->\n <el-button :disabled=\"time !== 0\" @click=\"getCode\">\n {{\n codeText\n }}\n </el-button>\n </template>\n </el-input>\n </el-form-item>\n <el-form-item>\n <el-input\n v-model=\"phoneForm.code\"\n show-word-limit\n clearable\n placeholder=\"请输入验证码\"\n maxlength=\"4\"\n />\n </el-form-item>\n </el-form>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showPhoneDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSavePhone\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n <!-- 修改空间上限 -->\n <el-dialog\n v-model=\"showLimitSizeDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"修改空间上限\"\n >\n <div class=\"tc\">\n <el-form :model=\"limitSizeForm\" label-width=\"60px\">\n <el-form-item label=\"大小\">\n <el-input\n v-model=\"limitSizeForm.size\"\n show-word-limit\n clearable\n placeholder=\"请输入空间上限\"\n maxlength=\"4\"\n type=\"number\"\n >\n <template #append>\n GB\n </template>\n </el-input>\n </el-form-item>\n </el-form>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showLimitSizeDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSaveSize\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n <!-- 修改余额 -->\n <el-dialog\n v-model=\"showWalletDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"修改空间上限\"\n >\n <div class=\"tc\">\n <el-form :model=\"walletForm\" label-width=\"60px\">\n <el-form-item label=\"余额\">\n <el-input\n v-model=\"walletForm.money\"\n show-word-limit\n clearable\n placeholder=\"请输入新的余额\"\n maxlength=\"4\"\n type=\"number\"\n >\n <template #append>\n ¥\n </template>\n </el-input>\n </el-form-item>\n </el-form>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showWalletDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSaveWallet\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n\n .log-filter {\n justify-content: center;\n }\n}\n.w100 {\n width: 100px;\n}\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\n.log-filter {\n display: flex;\n flex-wrap: wrap;\n\n .item {\n margin-right: 10px;\n margin-bottom: 10px;\n .label {\n margin-right: 10px;\n font-size: 12px;\n }\n }\n}\n\n.text-btn-list {\n display: flex;\n flex-wrap: wrap;\n\n button {\n margin-left: 0;\n }\n}\n\n.user-oss-info {\n list-style: none;\n li {\n margin-bottom: 10px;\n }\n .clear-btn {\n margin-left: 10px;\n }\n &.disabled {\n background-color: rgb(245 108 108 / 30%);\n }\n}\n</style>\n"],"names":["_sfc_main","defineComponent","name","_hoisted_1","viewBox","xmlns","_hoisted_4","createElementVNode","fill","d","message","_export_sfc","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","_hoisted_5","money","sumCost","ref","users","reactive","refreshUsers","SuperUserApi","getUserList","then","res","splice","length","data","list","value","ElMessage","success","userStatusType","useLocalStorage","USER_STATUS","NORMAL","searchWord","statusTypeList","label","type","FREEZE","BAN","sortType","sortTypeList","sortOrder","sortOrderList","filterUsers","computed","copyUsers","sort","a","b","filter","v","status","id","account","phone","joinTime","loginCount","loginTime","openTime","formatDate","includes","pageSize","handleSizeChange","pageCount","Math","ceil","pageCurrent","pageUsers","start","end","slice","handlePageChange","idx","showUserStatusDialog","selectUserId","selectStatus","userStatusList","handleSaveStatus","user","find","u","warning","updateUserStatus","showResetPasswordDialog","pwdForm","pwd1","pwd2","handleSavePassword","rPassword","test","ElMessageBox","confirm","confirmButtonText","cancelButtonText","resetPassword","catch","showLimitSizeDialog","limitSizeForm","size","async","handleSaveSize","resetLimitSpace","showWalletDialog","walletForm","handleSaveWallet","updateWallet","showPhoneDialog","phoneForm","code","codeText","time","refreshCodeText","setTimeout","getCode","rMobilePhone","PublicApi","checkPhone","err","c","error","handleSavePhone","rVerCode","resetPhone","handleClearFiles","userId","month","quarter","half","clearOssFile","pushMessageType","showMessageDialog","pushMessageText","sendMessage","sureSendMessage","onMounted","isMobile","useIsMobile","moneyStartDay","useSiteConfig","price","backhaulTrafficPrice","cdnPrice","compressPrice","ossPrice","showCancelButton","oTime","logout"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"index-legacy-DhNaKknk.js","sources":["../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/message.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/money.mjs","../../src/pages/dashboard/manage/user/index.vue"],"sourcesContent":["import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Message\"\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 224v512a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V224H128zm0-64h768a64 64 0 0 1 64 64v512a128 128 0 0 1-128 128H192A128 128 0 0 1 64 736V224a64 64 0 0 1 64-64z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M904 224 656.512 506.88a192 192 0 0 1-289.024 0L120 224h784zm-698.944 0 210.56 240.704a128 128 0 0 0 192.704 0L818.944 224H205.056z\"\n}, null, -1);\nconst _hoisted_4 = [\n _hoisted_2,\n _hoisted_3\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_4);\n}\nvar message = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { message 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: \"Money\"\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: \"M256 640v192h640V384H768v-64h150.976c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H233.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096c-2.688-5.184-4.224-10.368-4.224-24.576V640h64z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M768 192H128v448h640V192zm64-22.976v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096C65.536 682.432 64 677.248 64 663.04V169.024c0-14.272 1.472-19.456 4.288-24.64a29.056 29.056 0 0 1 12.096-12.16C85.568 129.536 90.752 128 104.96 128h685.952c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64z\"\n}, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M448 576a160 160 0 1 1 0-320 160 160 0 0 1 0 320zm0-64a96 96 0 1 0 0-192 96 96 0 0 0 0 192z\"\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 money = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { money as default };\n","<script lang=\"ts\" setup>\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, onMounted, reactive, ref } from 'vue'\nimport { DeleteFilled, Message, Money, Refresh, Search } from '@element-plus/icons-vue'\nimport { useLocalStorage } from '@vueuse/core'\nimport Tip from '../../tasks/components/infoPanel/tip.vue'\nimport { PublicApi, SuperUserApi } from '@/apis'\nimport { USER_STATUS } from '@/constants'\nimport { formatDate, formatSize } from '@/utils/stringUtil'\nimport { rMobilePhone, rPassword, rVerCode } from '@/utils/regExp'\n\nimport { useIsMobile, useSiteConfig } from '@/composables'\n\nconst sumCost = ref('')\n// 用户\nconst users = reactive<SuperUserApiTypes.UserItem[]>([])\nfunction refreshUsers() {\n SuperUserApi.getUserList().then((res) => {\n users.splice(0, users.length, ...res.data.list)\n sumCost.value = res.data.sumCost\n ElMessage.success('列表数据刷新成功')\n })\n}\n\n// 筛选用户状态\nconst userStatusType = useLocalStorage('userStatusType', USER_STATUS.NORMAL)\nconst searchWord = ref('')\nconst statusTypeList = reactive([\n {\n label: '正常',\n type: USER_STATUS.NORMAL,\n },\n {\n label: '冻结',\n type: USER_STATUS.FREEZE,\n },\n {\n label: '封禁',\n type: USER_STATUS.BAN,\n },\n])\nconst sortType = useLocalStorage('userListSortType', 'id')\nconst sortTypeList = [\n {\n label: 'ID',\n value: 'id',\n },\n {\n label: '累计上传数量',\n value: 'fileCount',\n },\n {\n label: '累计占用空间',\n value: 'originFileSize',\n },\n {\n label: 'OSS文件数量',\n value: 'ossCount',\n },\n {\n label: '最后登录时间',\n value: 'lastLoginTime',\n },\n {\n label: '登录次数',\n value: 'login_count',\n },\n {\n label: '容量大小',\n value: 'size',\n },\n {\n label: '占用空间',\n value: 'usage',\n },\n {\n label: '限制使用',\n value: 'limitUpload',\n },\n {\n label: '下载次数',\n value: 'downloadCount',\n },\n {\n label: '累计下载大小',\n value: 'downloadSize',\n },\n {\n label: '累计费用',\n value: 'cost',\n },\n]\n\n// 升降序\nconst sortOrder = useLocalStorage('userListSortOrder', 'desc')\nconst sortOrderList = [\n {\n label: '升序',\n value: 'asc',\n },\n {\n label: '降序',\n value: 'desc',\n },\n]\nconst filterUsers = computed(() => {\n const copyUsers = [...users]\n copyUsers.sort((a, b) => {\n return sortOrder.value === 'asc'\n ? a[sortType.value] - b[sortType.value]\n : b[sortType.value] - a[sortType.value]\n })\n return copyUsers\n .filter(v => v.status === userStatusType.value)\n .filter((v) => {\n const {\n id,\n account,\n phone,\n joinTime,\n loginCount,\n loginTime,\n openTime,\n } = v\n if (searchWord.value.length === 0)\n return true\n return `${id} ${account} ${phone} ${loginTime} ${formatDate(\n openTime,\n )} ${formatDate(loginCount)} ${formatDate(joinTime)}`.includes(\n searchWord.value,\n )\n })\n})\n\n// 分页\nconst pageSize = useLocalStorage<number>('userListPageSize', 10)\nfunction handleSizeChange(v: number) {\n pageSize.value = v\n}\nconst pageCount = computed(() => {\n const t = Math.ceil(filterUsers.value.length / pageSize.value)\n return t\n})\nconst pageCurrent = ref(1)\nconst pageUsers = computed(() => {\n const start = (pageCurrent.value - 1) * pageSize.value\n const end = pageCurrent.value * pageSize.value\n return filterUsers.value.slice(start, end)\n})\nfunction handlePageChange(idx: number) {\n pageCurrent.value = idx\n}\n\n// 状态修改\nconst showUserStatusDialog = ref(false)\nconst selectUserId = ref(0)\nconst selectStatus = ref(USER_STATUS.NORMAL)\nconst userStatusList = statusTypeList\nconst openTime = ref('')\nfunction handleChangeStatus(userId: number, status: USER_STATUS, oTime: string) {\n selectUserId.value = userId\n selectStatus.value = status\n openTime.value = oTime\n showUserStatusDialog.value = true\n}\nfunction handleSaveStatus() {\n const user = users.find(u => u.id === selectUserId.value)\n if (selectStatus.value === USER_STATUS.FREEZE) {\n if (!openTime.value) {\n ElMessage.warning('请设置解冻时间')\n return\n }\n user.openTime = openTime.value\n }\n else {\n user.openTime = ''\n }\n user.status = selectStatus.value\n showUserStatusDialog.value = false\n SuperUserApi.updateUserStatus(user.id, user.status, user.openTime).then(\n () => {\n ElMessage.success('修改成功')\n },\n )\n}\n\n// 重置密码\nconst showResetPasswordDialog = ref(false)\nconst pwdForm = reactive({\n pwd1: '',\n pwd2: '',\n})\nfunction handleResetPassword(userId: number) {\n selectUserId.value = userId\n showResetPasswordDialog.value = true\n pwdForm.pwd1 = ''\n pwdForm.pwd2 = ''\n}\n\nfunction checkPwdForm() {\n if (!rPassword.test(pwdForm.pwd1)) {\n ElMessage.warning('密码格式不正确(6-16位 支持字母/数字/下划线)')\n return false\n }\n if (pwdForm.pwd1 !== pwdForm.pwd2) {\n ElMessage.warning('两次输入的密码不一致')\n return false\n }\n\n return true\n}\n\nfunction handleSavePassword() {\n if (!checkPwdForm())\n return\n ElMessageBox.confirm('此操作不可逆,请谨慎操作', '确定要重置用户的密码吗?', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n })\n .then(() => {\n SuperUserApi.resetPassword(selectUserId.value, pwdForm.pwd1).then(() => {\n ElMessage.success('重置成功')\n showResetPasswordDialog.value = false\n })\n })\n .catch(() => {\n //\n })\n}\n\n// 限制空间大小\nconst showLimitSizeDialog = ref(false)\nconst limitSizeForm = reactive({\n size: 2,\n})\nfunction handleRewriteSize(id: number, size: number) {\n selectUserId.value = id\n limitSizeForm.size = size\n showLimitSizeDialog.value = true\n}\nasync function handleSaveSize() {\n if (+limitSizeForm.size < 0) {\n ElMessage.warning('空间上限不能小于0')\n return\n }\n await SuperUserApi.resetLimitSpace(selectUserId.value, +limitSizeForm.size)\n // 接口调用修改\n ElMessage.success('修改成功')\n showLimitSizeDialog.value = false\n refreshUsers()\n}\n// TODO: 重复代码优化\n// 修改余额\nconst showWalletDialog = ref(false)\nconst walletForm = reactive({\n money: 2,\n})\nfunction handleRewriteWallet(id: number, money: number) {\n selectUserId.value = id\n walletForm.money = money\n showWalletDialog.value = true\n}\nasync function handleSaveWallet() {\n if (+walletForm.money < 0) {\n ElMessage.warning('余额不能小于0')\n return\n }\n await SuperUserApi.updateWallet(selectUserId.value, +walletForm.money)\n // 接口调用修改\n ElMessage.success('修改成功')\n showWalletDialog.value = false\n refreshUsers()\n}\n\n// 绑定手机号\nconst showPhoneDialog = ref(false)\nconst phoneForm = reactive({\n phone: '',\n code: '',\n})\nconst codeText = ref('获取验证码')\nconst time = ref(0)\nfunction refreshCodeText() {\n if (time.value === 0) {\n codeText.value = '获取验证码'\n return\n }\n codeText.value = `${time.value}s`\n time.value -= 1\n setTimeout(refreshCodeText, 1000)\n}\nfunction getCode() {\n if (!rMobilePhone.test(phoneForm.phone)) {\n ElMessage.warning('手机号格式不正确')\n return\n }\n // check是否可用\n PublicApi.checkPhone(phoneForm.phone)\n .then(() => {\n PublicApi.getCode(phoneForm.phone).then(() => {\n time.value = 120\n refreshCodeText()\n ElMessage.success('获取成功,请注意查看手机短信')\n })\n })\n .catch((err) => {\n const { code: c } = err\n const msg = '注册失败,未知错误'\n const options: any = {\n 1002: '手机号已被注册',\n 1006: '手机号格式不正确',\n }\n ElMessage.error(options[c] || msg)\n })\n}\nfunction checkPhoneForm() {\n if (!rMobilePhone.test(phoneForm.phone)) {\n ElMessage.warning('手机号格式不正确')\n return false\n }\n if (!rVerCode.test(phoneForm.code)) {\n ElMessage.warning('验证码格式不正确')\n return false\n }\n\n return true\n}\nfunction handleBindPhone(id: number) {\n selectUserId.value = id\n showPhoneDialog.value = true\n}\nasync function handleSavePhone() {\n if (!checkPhoneForm()) {\n return\n }\n // 调用API更新,验证码 不正确判断\n SuperUserApi.resetPhone(selectUserId.value, phoneForm.phone, phoneForm.code)\n .then(() => {\n ElMessage.success('绑定成功')\n showPhoneDialog.value = false\n phoneForm.code = ''\n phoneForm.phone = ''\n refreshUsers()\n })\n .catch((err) => {\n const { code: c } = err\n const msg = '绑定失败,未知错误'\n const options: any = {\n 1002: '手机号已被注册',\n 1003: '验证码不正确',\n }\n ElMessage.error(options[c] || msg)\n })\n}\n\nfunction handleClearFiles(userId: number, type: 'month' | 'quarter' | 'half') {\n const tipWords = {\n month: '一个月前',\n quarter: '三个月前',\n half: '半年前',\n }\n selectUserId.value = userId\n ElMessageBox.confirm('移除后这些文件将无法恢复,请谨慎操作', '删除前确认?', {\n confirmButtonText: `确认删除 ${tipWords[type]}文件`,\n })\n .then(() => {\n SuperUserApi.clearOssFile(userId, type).then(() => {\n ElMessage.success('清理成功')\n })\n })\n .catch(() => {})\n}\n\n// TODO: 0 global 1 user_push\nconst pushMessageType = ref(1)\nconst showMessageDialog = ref(false)\nconst pushMessageText = ref('')\nfunction sendMessage(id: number, type = 1) {\n selectUserId.value = id\n pushMessageType.value = type\n showMessageDialog.value = true\n}\n\nfunction sureSendMessage() {\n SuperUserApi.sendMessage(\n pushMessageText.value,\n pushMessageType.value,\n selectUserId.value,\n ).then(() => {\n ElMessage.success('推送成功')\n // 推送成功\n pushMessageText.value = ''\n showMessageDialog.value = false\n })\n}\nfunction logout(account: string) {\n SuperUserApi.logout(account).then(() => {\n ElMessage.success(`下线成功 ${account}`)\n refreshUsers()\n })\n}\n\nonMounted(() => {\n refreshUsers()\n})\n\nconst isMobile = useIsMobile()\n\nconst { moneyStartDay } = useSiteConfig()\n\nfunction handleCheckDetail(price) {\n const { backhaulTrafficPrice, cdnPrice, compressPrice, ossPrice } = price\n ElMessageBox.confirm(`存储:${ossPrice}, 下载:${cdnPrice},压缩:${compressPrice},回源:${backhaulTrafficPrice}`, {\n showCancelButton: false,\n })\n}\n</script>\n\n<template>\n <div class=\"user\">\n <div class=\"panel\">\n <div class=\"p10 log-filter\">\n <span class=\"item\">\n <span class=\"label\">状态</span>\n <el-select\n v-model=\"userStatusType\"\n size=\"default\"\n class=\"w100\"\n >\n <el-option\n v-for=\"(item, idx) in statusTypeList\"\n :key=\"idx\"\n :label=\"item.label\"\n :value=\"item.type\"\n />\n </el-select>\n </span>\n <span class=\"item\">\n <span class=\"label\">排序</span>\n <el-select\n v-model=\"sortType\"\n size=\"default\"\n class=\"w100\"\n >\n <el-option\n v-for=\"(item, idx) in sortTypeList\"\n :key=\"idx\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n <el-select\n v-model=\"sortOrder\"\n size=\"default\"\n class=\"w100\"\n >\n <el-option\n v-for=\"(item, idx) in sortOrderList\"\n :key=\"idx\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n </span>\n <span class=\"item\">\n <el-input\n v-model=\"searchWord\"\n size=\"default\"\n clearable\n placeholder=\"请输入要检索的内容\"\n :prefix-icon=\"Search\"\n />\n </span>\n <span class=\"item\">\n <el-button size=\"default\" :icon=\"Refresh\" @click=\"refreshUsers\">刷新</el-button>\n </span>\n <span class=\"item\">\n <el-button\n size=\"warning\"\n :icon=\"Message\"\n @click=\"sendMessage(null, 0)\"\n >推送全局消息</el-button>\n </span>\n </div>\n <Tip>\n 预估费用:{{ sumCost }}¥,\n 计费起始时间:{{ formatDate(moneyStartDay) }}\n </Tip>\n <el-table\n height=\"550\"\n stripe\n border\n :default-sort=\"{ prop: 'date', order: 'descending' }\"\n :data=\"pageUsers\"\n style=\"width: 100%\"\n >\n <el-table-column prop=\"id\" label=\"ID\" width=\"60\" />\n <el-table-column\n prop=\"account\"\n label=\"账号\"\n width=\"130\"\n />\n <el-table-column\n prop=\"phone\"\n label=\"手机号\"\n width=\"80\"\n />\n <el-table-column\n label=\"统计\"\n width=\"190\"\n >\n <template #default=\"scope\">\n 最后登录:{{\n scope.row.loginTime && formatDate(new Date(scope.row.loginTime))\n }}<br>\n 注册时间:{{ formatDate(new Date(scope.row.joinTime)) }}<br>\n 登录次数:{{ scope.row.loginCount }}<br>\n token: {{ scope.row.onlineCount }}<br>\n </template>\n </el-table-column>\n <el-table-column\n prop=\"downloadCount\"\n label=\"累计下载\"\n >\n <template #default=\"{ row: { downloadCount, downloadSize, oneFile, compressFile, templateFile } }\">\n {{ downloadCount }} / {{ formatSize(downloadSize) }}<br>\n 单文件:{{ oneFile.count }} / {{ formatSize(oneFile.size) }}<br>\n 归档:{{ compressFile.count }} / {{ formatSize(compressFile.size) }}<br>\n 模板:{{ templateFile.count }} / {{ formatSize(templateFile.size) }}\n </template>\n </el-table-column>\n <el-table-column\n v-if=\"userStatusType === 1\"\n prop=\"openTime\"\n label=\"解封时间\"\n >\n <template #default=\"scope\">\n {{\n scope.row.openTime && formatDate(new Date(scope.row.openTime))\n }}\n </template>\n </el-table-column>\n <el-table-column\n prop=\"fileCount\"\n label=\"文件\"\n >\n <template #default=\"scope\">\n 累计:{{ scope.row.fileCount }}/{{ formatSize(scope.row.originFileSize) }}<br>\n OSS:{{ scope.row.ossCount }}/{{ formatSize(scope.row.usage) }}<br>\n 平均:{{ scope.row.originFileSize && scope.row.fileCount && formatSize(Math.round(scope.row.originFileSize / scope.row.fileCount)) }}<br>\n 平均:{{ scope.row.usage && scope.row.ossCount && formatSize(Math.round(scope.row.usage / scope.row.ossCount)) }}<br>\n </template>\n </el-table-column>\n <el-table-column label=\"云空间\" width=\"240\">\n <template\n #default=\"{\n row: { wallet, price, balance, resources, monthAgoSize, quarterAgoSize, halfYearSize, id, limitSize, limitUpload, percentage },\n }\"\n >\n <ul class=\"user-oss-info\" :class=\"{ disabled: limitUpload }\">\n <li>\n ¥:{{ price.total }} / {{ wallet }} = {{ balance }} <el-button\n :icon=\"Money\"\n circle\n size=\"small\"\n @click=\"handleCheckDetail(price)\"\n />\n </li>\n <li>{{ percentage }}% {{ resources }}/{{ limitSize }}</li>\n <li>\n 一月前:{{ monthAgoSize\n }}<el-button\n v-if=\"resources !== '0B'\"\n class=\"clear-btn\"\n :icon=\"DeleteFilled\"\n circle\n size=\"small\"\n @click=\"handleClearFiles(id, 'month')\"\n />\n </li>\n <li>\n 三月前:{{ quarterAgoSize\n }}<el-button\n v-if=\"quarterAgoSize !== '0B'\"\n class=\"clear-btn\"\n :icon=\"DeleteFilled\"\n circle\n size=\"small\"\n @click=\"handleClearFiles(id, 'quarter')\"\n />\n </li>\n <li>\n 半年前:{{ halfYearSize\n }}<el-button\n v-if=\"halfYearSize !== '0B'\"\n class=\"clear-btn\"\n :icon=\"DeleteFilled\"\n circle\n size=\"small\"\n @click=\"handleClearFiles(id, 'half')\"\n />\n </li>\n </ul>\n </template>\n </el-table-column>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"100\">\n <template #default=\"scope\">\n <div class=\"text-btn-list\">\n <el-button\n type=\"primary\"\n text\n size=\"small\"\n @click=\"\n handleChangeStatus(\n scope.row.id,\n scope.row.status,\n scope.row.openTime,\n )\n \"\n >\n 修改状态\n </el-button>\n <el-button\n type=\"primary\"\n text\n size=\"small\"\n @click=\"handleResetPassword(scope.row.id)\"\n >\n 重置密码\n </el-button>\n <el-button\n type=\"primary\"\n text\n size=\"small\"\n @click=\"handleBindPhone(scope.row.id)\"\n >\n 绑定手机号\n </el-button>\n <el-button\n type=\"warning\"\n text\n size=\"small\"\n @click=\"sendMessage(scope.row.id)\"\n >\n 发送消息\n </el-button>\n <el-button\n type=\"danger\"\n text\n size=\"small\"\n @click=\"handleRewriteSize(scope.row.id, scope.row.size)\"\n >\n 修改上限\n </el-button>\n <el-button\n type=\"danger\"\n text\n size=\"small\"\n @click=\"handleRewriteWallet(scope.row.id, scope.row.wallet)\"\n >\n 修改余额\n </el-button>\n <el-button\n v-if=\"scope.row.onlineCount !== 0\"\n type=\"danger\"\n text\n size=\"small\"\n @click=\"logout(scope.row.account)\"\n >\n 一键下线\n </el-button>\n </div>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"flex fc p10\">\n <el-pagination\n :current-page=\"pageCurrent\"\n background\n :page-count=\"pageCount\"\n :page-sizes=\"[10, 50, 100, 200]\"\n :page-size=\"pageSize\"\n :total=\"filterUsers.length\"\n layout=\"total, sizes, prev, pager, next, jumper\"\n @current-change=\"handlePageChange\"\n @size-change=\"handleSizeChange\"\n />\n </div>\n </div>\n <!-- 消息推送弹窗 -->\n <el-dialog\n v-model=\"showMessageDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"消息推送\"\n >\n <div class=\"tc\">\n <el-input\n v-model=\"pushMessageText\"\n :autosize=\"{ minRows: 6, maxRows: 20 }\"\n type=\"textarea\"\n placeholder=\"输入要推送的消息,支持HTML内容(推荐使用mdnice 转 markdown 转html)\"\n />\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showMessageDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"sureSendMessage\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n <!-- 用户状态修改弹窗 -->\n <el-dialog\n v-model=\"showUserStatusDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"状态修改\"\n >\n <div class=\"tc\">\n <el-select v-model=\"selectStatus\" placeholder=\"请选择新分类\">\n <el-option\n v-for=\"s in userStatusList\"\n :key=\"s.type\"\n :label=\"s.label\"\n :value=\"s.type\"\n />\n </el-select>\n </div>\n <div v-if=\"selectStatus === 1\" style=\"margin-top: 10px\" class=\"tc\">\n <el-date-picker\n v-model=\"openTime\"\n :editable=\"false\"\n type=\"datetime\"\n placeholder=\"点击设置解封日期\"\n />\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showUserStatusDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSaveStatus\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n\n <!-- 重置密码 -->\n <el-dialog\n v-model=\"showResetPasswordDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"密码重置\"\n >\n <div class=\"tc\">\n <el-form :model=\"pwdForm\" label-width=\"80px\">\n <el-form-item label=\"新密码\">\n <el-input\n v-model=\"pwdForm.pwd1\"\n show-word-limit\n clearable\n placeholder=\"请输入新密码\"\n maxlength=\"16\"\n minlength=\"6\"\n />\n </el-form-item>\n <el-form-item>\n <el-input\n v-model=\"pwdForm.pwd2\"\n show-word-limit\n clearable\n placeholder=\"请再次输入\"\n maxlength=\"16\"\n minlength=\"6\"\n />\n </el-form-item>\n </el-form>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showResetPasswordDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSavePassword\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n <!-- 重绑定手机号 -->\n <el-dialog\n v-model=\"showPhoneDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"绑定手机号\"\n >\n <div class=\"tc\">\n <el-form :model=\"phoneForm\" label-width=\"60px\">\n <el-form-item label=\"手机号\">\n <el-input\n v-model=\"phoneForm.phone\"\n show-word-limit\n clearable\n placeholder=\"请输入手机号\"\n maxlength=\"11\"\n >\n <template #append>\n <!-- 获取验证码 -->\n <el-button :disabled=\"time !== 0\" @click=\"getCode\">\n {{\n codeText\n }}\n </el-button>\n </template>\n </el-input>\n </el-form-item>\n <el-form-item>\n <el-input\n v-model=\"phoneForm.code\"\n show-word-limit\n clearable\n placeholder=\"请输入验证码\"\n maxlength=\"4\"\n />\n </el-form-item>\n </el-form>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showPhoneDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSavePhone\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n <!-- 修改空间上限 -->\n <el-dialog\n v-model=\"showLimitSizeDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"修改空间上限\"\n >\n <div class=\"tc\">\n <el-form :model=\"limitSizeForm\" label-width=\"60px\">\n <el-form-item label=\"大小\">\n <el-input\n v-model=\"limitSizeForm.size\"\n show-word-limit\n clearable\n placeholder=\"请输入空间上限\"\n maxlength=\"4\"\n type=\"number\"\n >\n <template #append>\n GB\n </template>\n </el-input>\n </el-form-item>\n </el-form>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showLimitSizeDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSaveSize\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n <!-- 修改余额 -->\n <el-dialog\n v-model=\"showWalletDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"修改空间上限\"\n >\n <div class=\"tc\">\n <el-form :model=\"walletForm\" label-width=\"60px\">\n <el-form-item label=\"余额\">\n <el-input\n v-model=\"walletForm.money\"\n show-word-limit\n clearable\n placeholder=\"请输入新的余额\"\n maxlength=\"4\"\n type=\"number\"\n >\n <template #append>\n ¥\n </template>\n </el-input>\n </el-form-item>\n </el-form>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showWalletDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSaveWallet\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n\n .log-filter {\n justify-content: center;\n }\n}\n.w100 {\n width: 100px;\n}\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\n.log-filter {\n display: flex;\n flex-wrap: wrap;\n\n .item {\n margin-right: 10px;\n margin-bottom: 10px;\n .label {\n margin-right: 10px;\n font-size: 12px;\n }\n }\n}\n\n.text-btn-list {\n display: flex;\n flex-wrap: wrap;\n\n button {\n margin-left: 0;\n }\n}\n\n.user-oss-info {\n list-style: none;\n li {\n margin-bottom: 10px;\n }\n .clear-btn {\n margin-left: 10px;\n }\n &.disabled {\n background-color: rgb(245 108 108 / 30%);\n }\n}\n</style>\n"],"names":["_sfc_main","defineComponent","name","_hoisted_1","viewBox","xmlns","_hoisted_4","createElementVNode","fill","d","message","_export_sfc","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","_hoisted_5","money","sumCost","ref","users","reactive","refreshUsers","SuperUserApi","getUserList","then","res","splice","length","data","list","value","ElMessage","success","userStatusType","useLocalStorage","USER_STATUS","NORMAL","searchWord","statusTypeList","label","type","FREEZE","BAN","sortType","sortTypeList","sortOrder","sortOrderList","filterUsers","computed","copyUsers","sort","a","b","filter","v","status","id","account","phone","joinTime","loginCount","loginTime","openTime","formatDate","includes","pageSize","handleSizeChange","pageCount","Math","ceil","pageCurrent","pageUsers","start","end","slice","handlePageChange","idx","showUserStatusDialog","selectUserId","selectStatus","userStatusList","handleSaveStatus","user","find","u","warning","updateUserStatus","showResetPasswordDialog","pwdForm","pwd1","pwd2","handleSavePassword","rPassword","test","ElMessageBox","confirm","confirmButtonText","cancelButtonText","resetPassword","catch","showLimitSizeDialog","limitSizeForm","size","async","handleSaveSize","resetLimitSpace","showWalletDialog","walletForm","handleSaveWallet","updateWallet","showPhoneDialog","phoneForm","code","codeText","time","refreshCodeText","setTimeout","getCode","rMobilePhone","PublicApi","checkPhone","err","c","error","handleSavePhone","rVerCode","resetPhone","handleClearFiles","userId","month","quarter","half","clearOssFile","pushMessageType","showMessageDialog","pushMessageText","sendMessage","sureSendMessage","onMounted","isMobile","useIsMobile","moneyStartDay","useSiteConfig","price","backhaulTrafficPrice","cdnPrice","compressPrice","ossPrice","showCancelButton","oTime","logout"],"mappings":"giEAGA,MAAMA,EAAYC,EAAgB,CAChCC,KAAM,YAEFC,GAAa,CACjBC,QAAS,gBACTC,MAAO,8BAUHC,GAAa,CARgBC,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,sKACF,MAAO,GACyBF,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,uIACF,MAAO,IAQV,IAAIC,GAA0BC,EAAYX,EAAW,CAAC,CAAC,SAHvD,SAAqBY,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,OAAOC,IAAaC,EAAmB,MAAOhB,GAAYG,GAC5D,KCrBA,MAAMN,GAAYC,EAAgB,CAChCC,KAAM,UAEFC,GAAa,CACjBC,QAAS,gBACTC,MAAO,8BAcHe,GAAa,CAZgBb,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,4XACF,MAAO,GACyBF,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,yeACF,MAAO,GACyBF,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,+FACF,MAAO,IASV,IAAIY,GAAwBV,EAAYX,GAAW,CAAC,CAAC,SAHrD,SAAqBY,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,OAAOC,IAAaC,EAAmB,MAAOhB,GAAYiB,GAC5D,yiCChBM,MAAAE,EAAUC,EAAI,IAEdC,EAAQC,EAAuC,IACrD,SAASC,IACPC,EAAaC,cAAcC,MAAMC,IAC/BN,EAAMO,OAAO,EAAGP,EAAMQ,UAAWF,EAAIG,KAAKC,MAClCZ,EAAAa,MAAQL,EAAIG,KAAKX,QACzBc,EAAUC,QAAQ,WAAU,GAEhC,CAGA,MAAMC,EAAiBC,EAAgB,iBAAkBC,EAAYC,QAC/DC,EAAanB,EAAI,IACjBoB,EAAiBlB,EAAS,CAC9B,CACEmB,MAAO,KACPC,KAAML,EAAYC,QAEpB,CACEG,MAAO,KACPC,KAAML,EAAYM,QAEpB,CACEF,MAAO,KACPC,KAAML,EAAYO,OAGhBC,EAAWT,EAAgB,mBAAoB,MAC/CU,GAAe,CACnB,CACEL,MAAO,KACPT,MAAO,MAET,CACES,MAAO,SACPT,MAAO,aAET,CACES,MAAO,SACPT,MAAO,kBAET,CACES,MAAO,UACPT,MAAO,YAET,CACES,MAAO,SACPT,MAAO,iBAET,CACES,MAAO,OACPT,MAAO,eAET,CACES,MAAO,OACPT,MAAO,QAET,CACES,MAAO,OACPT,MAAO,SAET,CACES,MAAO,OACPT,MAAO,eAET,CACES,MAAO,OACPT,MAAO,iBAET,CACES,MAAO,SACPT,MAAO,gBAET,CACES,MAAO,OACPT,MAAO,SAKLe,GAAYX,EAAgB,oBAAqB,QACjDY,GAAgB,CACpB,CACEP,MAAO,KACPT,MAAO,OAET,CACES,MAAO,KACPT,MAAO,SAGLiB,GAAcC,GAAS,KACrB,MAAAC,EAAY,IAAI9B,GAMf,OALG8B,EAAAC,MAAK,CAACC,EAAGC,IACU,QAApBP,GAAUf,MACbqB,EAAER,EAASb,OAASsB,EAAET,EAASb,OAC/BsB,EAAET,EAASb,OAASqB,EAAER,EAASb,SAE9BmB,EACJI,QAAOC,GAAKA,EAAEC,SAAWtB,EAAeH,QACxCuB,QAAQC,IACD,MAAAE,GACJA,EAAAC,QACAA,EAAAC,MACAA,EAAAC,SACAA,EAAAC,WACAA,EAAAC,UACAA,EACAC,SAAAA,GACER,EACA,OAA4B,IAA5BjB,EAAWP,MAAMH,QAEd,GAAG6B,KAAMC,KAAWC,KAASG,KAAaE,EAC/CD,MACGC,EAAWH,MAAeG,EAAWJ,KAAYK,SACpD3B,EAAWP,MACb,GACD,IAICmC,GAAW/B,EAAwB,mBAAoB,IAC7D,SAASgC,GAAiBZ,GACxBW,GAASnC,MAAQwB,CACnB,CACM,MAAAa,GAAYnB,GAAS,IACfoB,KAAKC,KAAKtB,GAAYjB,MAAMH,OAASsC,GAASnC,SAGpDwC,GAAcpD,EAAI,GAClBqD,GAAYvB,GAAS,KACzB,MAAMwB,GAASF,GAAYxC,MAAQ,GAAKmC,GAASnC,MAC3C2C,EAAMH,GAAYxC,MAAQmC,GAASnC,MACzC,OAAOiB,GAAYjB,MAAM4C,MAAMF,EAAOC,EAAG,IAE3C,SAASE,GAAiBC,GACxBN,GAAYxC,MAAQ8C,CACtB,CAGM,MAAAC,GAAuB3D,GAAI,GAC3B4D,GAAe5D,EAAI,GACnB6D,GAAe7D,EAAIiB,EAAYC,QAC/B4C,GAAiB1C,EACjBwB,GAAW5C,EAAI,IAOrB,SAAS+D,KACP,MAAMC,EAAO/D,EAAMgE,SAAUC,EAAE5B,KAAOsB,GAAahD,QAC/C,GAAAiD,GAAajD,QAAUK,EAAYM,OAAQ,CACzC,IAACqB,GAAShC,MAEZ,YADAC,EAAUsD,QAAQ,WAGpBH,EAAKpB,SAAWA,GAAShC,KAAA,MAGzBoD,EAAKpB,SAAW,GAElBoB,EAAK3B,OAASwB,GAAajD,MAC3B+C,GAAqB/C,OAAQ,EAC7BR,EAAagE,iBAAiBJ,EAAK1B,GAAI0B,EAAK3B,OAAQ2B,EAAKpB,UAAUtC,MACjE,KACEO,EAAUC,QAAQ,OAAM,GAG9B,CAGM,MAAAuD,GAA0BrE,GAAI,GAC9BsE,GAAUpE,EAAS,CACvBqE,KAAM,GACNC,KAAM,KAsBR,SAASC,MAZFC,EAAUC,KAAKL,GAAQC,MAIxBD,GAAQC,OAASD,GAAQE,OAC3B3D,EAAUsD,QAAQ,cACX,IALPtD,EAAUsD,QAAQ,8BACX,KAaIS,EAAAC,QAAQ,eAAgB,eAAgB,CACnDC,kBAAmB,KACnBC,iBAAkB,KAClBzD,KAAM,YAELhB,MAAK,KACJF,EAAa4E,cAAcpB,GAAahD,MAAO0D,GAAQC,MAAMjE,MAAK,KAChEO,EAAUC,QAAQ,QAClBuD,GAAwBzD,OAAQ,CAAA,GACjC,IAEFqE,OAAM,QAGX,CAGM,MAAAC,GAAsBlF,GAAI,GAC1BmF,GAAgBjF,EAAS,CAC7BkF,KAAM,IAORC,eAAeC,MACRH,GAAcC,KAAO,EACxBvE,EAAUsD,QAAQ,oBAGd/D,EAAamF,gBAAgB3B,GAAahD,OAAQuE,GAAcC,MAEtEvE,EAAUC,QAAQ,QAClBoE,GAAoBtE,OAAQ,EACfT,IACf,CAGM,MAAAqF,GAAmBxF,GAAI,GACvByF,GAAavF,EAAS,CAC1BJ,MAAO,IAOTuF,eAAeK,MACRD,GAAW3F,MAAQ,EACtBe,EAAUsD,QAAQ,kBAGd/D,EAAauF,aAAa/B,GAAahD,OAAQ6E,GAAW3F,OAEhEe,EAAUC,QAAQ,QAClB0E,GAAiB5E,OAAQ,EACZT,IACf,CAGM,MAAAyF,GAAkB5F,GAAI,GACtB6F,GAAY3F,EAAS,CACzBsC,MAAO,GACPsD,KAAM,KAEFC,GAAW/F,EAAI,SACfgG,GAAOhG,EAAI,GACjB,SAASiG,KACY,IAAfD,GAAKpF,OAIAmF,GAAAnF,MAAQ,GAAGoF,GAAKpF,SACzBoF,GAAKpF,OAAS,EACdsF,WAAWD,GAAiB,MAL1BF,GAASnF,MAAQ,OAMrB,CACA,SAASuF,KACFC,EAAazB,KAAKkB,GAAUrD,OAKjC6D,EAAUC,WAAWT,GAAUrD,OAC5BlC,MAAK,KACJ+F,EAAUF,QAAQN,GAAUrD,OAAOlC,MAAK,KACtC0F,GAAKpF,MAAQ,IACGqF,KAChBpF,EAAUC,QAAQ,iBAAgB,GACnC,IAEFmE,OAAOsB,IACA,MAAET,KAAMU,GAAMD,EAMpB1F,EAAU4F,MAJW,CACnB,KAAM,UACN,KAAM,YAEgBD,IALZ,YAKqB,IAnBnC3F,EAAUsD,QAAQ,WAqBtB,CAiBAkB,eAAeqB,MAfRN,EAAazB,KAAKkB,GAAUrD,OAI5BmE,EAAShC,KAAKkB,GAAUC,QAC3BjF,EAAUsD,QAAQ,YACX,IALPtD,EAAUsD,QAAQ,YACX,KAkBI/D,EAAAwG,WAAWhD,GAAahD,MAAOiF,GAAUrD,MAAOqD,GAAUC,MACpExF,MAAK,KACJO,EAAUC,QAAQ,QAClB8E,GAAgBhF,OAAQ,EACxBiF,GAAUC,KAAO,GACjBD,GAAUrD,MAAQ,GACLrC,GAAA,IAEd8E,OAAOsB,IACA,MAAET,KAAMU,GAAMD,EAMpB1F,EAAU4F,MAJW,CACnB,KAAM,UACN,KAAM,UAEgBD,IALZ,YAKqB,GAEvC,CAES,SAAAK,GAAiBC,EAAgBxF,GAMxCsC,GAAahD,MAAQkG,EACRlC,EAAAC,QAAQ,qBAAsB,SAAU,CACnDC,kBAAmB,QAPJ,CACfiC,MAAO,OACPC,QAAS,OACTC,KAAM,OAI8B3F,SAEnChB,MAAK,KACJF,EAAa8G,aAAaJ,EAAQxF,GAAMhB,MAAK,KAC3CO,EAAUC,QAAQ,OAAM,GACzB,IAEFmE,OAAM,QACX,CAGM,MAAAkC,GAAkBnH,EAAI,GACtBoH,GAAoBpH,GAAI,GACxBqH,GAAkBrH,EAAI,IACnB,SAAAsH,GAAYhF,EAAYhB,EAAO,GACtCsC,GAAahD,MAAQ0B,EACrB6E,GAAgBvG,MAAQU,EACxB8F,GAAkBxG,OAAQ,CAC5B,CAEA,SAAS2G,KACMnH,EAAAkH,YACXD,GAAgBzG,MAChBuG,GAAgBvG,MAChBgD,GAAahD,OACbN,MAAK,KACLO,EAAUC,QAAQ,QAElBuG,GAAgBzG,MAAQ,GACxBwG,GAAkBxG,OAAQ,CAAA,GAE9B,CAQA4G,GAAU,KACKrH,GAAA,IAGf,MAAMsH,GAAWC,KAEXC,cAAEA,IAAkBC,ykGAE1B,SAA2BC,GACzB,MAAMC,qBAAEA,EAAAC,SAAsBA,EAAUC,cAAAA,EAAAC,SAAeA,GAAaJ,EACvDjD,EAAAC,QAAQ,MAAMoD,SAAgBF,QAAeC,QAAoBF,IAAwB,CACpGI,kBAAkB,GAEtB,+tBAjQ4BpB,WAAgBzE,eAAqB8F,iBAC/DvE,GAAahD,MAAQkG,EACrBjD,GAAajD,MAAQyB,EACrBO,GAAShC,MAAQuH,OACjBxE,GAAqB/C,OAAQ,GAJtB,IAAmBkG,EAAgBzE,EAAqB8F,uHAiCpCrB,WAC3BlD,GAAahD,MAAQkG,EACrBzC,GAAwBzD,OAAQ,EAChC0D,GAAQC,KAAO,QACfD,GAAQE,KAAO,IAJjB,IAA6BsC,uHAwIJxE,WACvBsB,GAAahD,MAAQ0B,OACrBsD,GAAgBhF,OAAQ,GAF1B,IAAyB0B,gPA5FEA,WAAY8C,aACrCxB,GAAahD,MAAQ0B,EACrB6C,GAAcC,KAAOA,OACrBF,GAAoBtE,OAAQ,GAHrB,IAAkB0B,EAAY8C,8GAsB9B,SAAoB9C,EAAYxC,GACvC8D,GAAahD,MAAQ0B,EACrBmD,GAAW3F,MAAQA,EACnB0F,GAAiB5E,OAAQ,CAC3B,6KAsIgB2B,qBACdnC,EAAagI,OAAO7F,GAASjC,MAAK,KACtBO,EAAAC,QAAQ,QAAQyB,KACbpC,GAAA,IAHjB,IAAgBoC","x_google_ignoreList":[0,1]}
@@ -1,2 +1,2 @@
1
- System.register(["./index-legacy-DC5-MYgp.js"],(function(e,t){"use strict";var a,n,l,d,c,o,i,r,f,v,u,s;return{setters:[e=>{a=e.d,n=e.r,l=e.u,d=e.o,c=e.a,o=e.c,i=e.b,r=e.e,f=e.t,v=e.p,u=e.f,s=e._}],execute:function(){var t=document.createElement("style");t.textContent=".not-found[data-v-7bc5f813]{font-family:Avenir,Helvetica,Arial,sans-serif;background-image:linear-gradient(to top,#30cfd0,#330867);min-height:100vh}h1[data-v-7bc5f813],h2[data-v-7bc5f813],h3[data-v-7bc5f813],a[data-v-7bc5f813]{color:#f0f8ff;text-align:center;font-weight:lighter}a[data-v-7bc5f813]{margin-left:10px;border-bottom:2px solid aliceblue}h1[data-v-7bc5f813]{font-size:48px;padding-top:10%}h2[data-v-7bc5f813]{font-size:30px;padding-top:2vh}h3[data-v-7bc5f813]{font-size:28px;padding-top:1vh}\n",document.head.appendChild(t);const p=e=>(v("data-v-7bc5f813"),e=e(),u(),e),h={class:"not-found"},b=p((()=>i("h1",null,"404 Not Found",-1))),g=p((()=>i("h2",null,"糟糕页面走丢了",-1)));e("default",s(a({__name:"index",setup(e){const t=n(3),a=n(null),v=l(),u=()=>{clearInterval(a.value),v.replace("/")};return d((()=>{a.value=setInterval((()=>{1===t.value&&(clearInterval(a.value),v.replace("/")),t.value-=1}),1e3)})),(e,a)=>(c(),o("div",h,[b,g,i("h3",null,[r(f(t.value)+"s后",1),i("a",{onClick:u},"回到首页")])]))}}),[["__scopeId","data-v-7bc5f813"]]))}}}));
2
- //# sourceMappingURL=index-legacy-BN-W2P7-.js.map
1
+ System.register(["./index-legacy-BLlk8iq-.js"],(function(e,t){"use strict";var a,n,l,d,c,o,i,r,f,v,u,s;return{setters:[e=>{a=e.d,n=e.r,l=e.u,d=e.o,c=e.a,o=e.c,i=e.b,r=e.e,f=e.t,v=e.p,u=e.f,s=e._}],execute:function(){var t=document.createElement("style");t.textContent=".not-found[data-v-7bc5f813]{font-family:Avenir,Helvetica,Arial,sans-serif;background-image:linear-gradient(to top,#30cfd0,#330867);min-height:100vh}h1[data-v-7bc5f813],h2[data-v-7bc5f813],h3[data-v-7bc5f813],a[data-v-7bc5f813]{color:#f0f8ff;text-align:center;font-weight:lighter}a[data-v-7bc5f813]{margin-left:10px;border-bottom:2px solid aliceblue}h1[data-v-7bc5f813]{font-size:48px;padding-top:10%}h2[data-v-7bc5f813]{font-size:30px;padding-top:2vh}h3[data-v-7bc5f813]{font-size:28px;padding-top:1vh}\n",document.head.appendChild(t);const p=e=>(v("data-v-7bc5f813"),e=e(),u(),e),h={class:"not-found"},b=p((()=>i("h1",null,"404 Not Found",-1))),g=p((()=>i("h2",null,"糟糕页面走丢了",-1)));e("default",s(a({__name:"index",setup(e){const t=n(3),a=n(null),v=l(),u=()=>{clearInterval(a.value),v.replace("/")};return d((()=>{a.value=setInterval((()=>{1===t.value&&(clearInterval(a.value),v.replace("/")),t.value-=1}),1e3)})),(e,a)=>(c(),o("div",h,[b,g,i("h3",null,[r(f(t.value)+"s后",1),i("a",{onClick:u},"回到首页")])]))}}),[["__scopeId","data-v-7bc5f813"]]))}}}));
2
+ //# sourceMappingURL=index-legacy-Dm1CXog1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-legacy-BN-W2P7-.js","sources":["../../src/pages/404/index.vue"],"sourcesContent":["<template>\n <div class=\"not-found\">\n <h1>404 Not Found</h1>\n <h2>糟糕页面走丢了</h2>\n <h3>{{ time }}s后<a @click=\"handleToHome\">回到首页</a></h3>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { onMounted, ref } from 'vue'\nimport { useRouter } from 'vue-router'\n\nconst time = ref(3)\nconst timer = ref(null)\nconst router = useRouter()\nconst handleToHome = () => {\n clearInterval(timer.value)\n router.replace('/')\n}\nonMounted(() => {\n timer.value = setInterval(() => {\n if (time.value === 1) {\n clearInterval(timer.value)\n router.replace('/')\n }\n time.value -= 1\n }, 1000)\n})\n</script>\n<style lang=\"scss\" scoped>\n.not-found {\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n background-image: linear-gradient(to top, #30cfd0 0%, #330867 100%);\n min-height: 100vh;\n}\nh1,\nh2,\nh3,\na {\n color: aliceblue;\n text-align: center;\n font-weight: lighter;\n}\na {\n margin-left: 10px;\n border-bottom: 2px solid aliceblue;\n}\nh1 {\n font-size: 48px;\n padding-top: 10%;\n}\nh2 {\n font-size: 30px;\n padding-top: 2vh;\n}\nh3 {\n font-size: 28px;\n padding-top: 1vh;\n}\n</style>\n"],"names":["time","ref","timer","router","useRouter","handleToHome","clearInterval","value","replace","onMounted","setInterval"],"mappings":"i+BAWM,MAAAA,EAAOC,EAAI,GACXC,EAAQD,EAAI,MACZE,EAASC,IACTC,EAAeA,KACnBC,cAAcJ,EAAMK,OACpBJ,EAAOK,QAAQ,IAAG,SAEpBC,GAAU,KACFP,EAAAK,MAAQG,aAAY,KACL,IAAfV,EAAKO,QACPD,cAAcJ,EAAMK,OACpBJ,EAAOK,QAAQ,MAEjBR,EAAKO,OAAS,CAAA,GACb,IAAI"}
1
+ {"version":3,"file":"index-legacy-Dm1CXog1.js","sources":["../../src/pages/404/index.vue"],"sourcesContent":["<template>\n <div class=\"not-found\">\n <h1>404 Not Found</h1>\n <h2>糟糕页面走丢了</h2>\n <h3>{{ time }}s后<a @click=\"handleToHome\">回到首页</a></h3>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { onMounted, ref } from 'vue'\nimport { useRouter } from 'vue-router'\n\nconst time = ref(3)\nconst timer = ref(null)\nconst router = useRouter()\nconst handleToHome = () => {\n clearInterval(timer.value)\n router.replace('/')\n}\nonMounted(() => {\n timer.value = setInterval(() => {\n if (time.value === 1) {\n clearInterval(timer.value)\n router.replace('/')\n }\n time.value -= 1\n }, 1000)\n})\n</script>\n<style lang=\"scss\" scoped>\n.not-found {\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n background-image: linear-gradient(to top, #30cfd0 0%, #330867 100%);\n min-height: 100vh;\n}\nh1,\nh2,\nh3,\na {\n color: aliceblue;\n text-align: center;\n font-weight: lighter;\n}\na {\n margin-left: 10px;\n border-bottom: 2px solid aliceblue;\n}\nh1 {\n font-size: 48px;\n padding-top: 10%;\n}\nh2 {\n font-size: 30px;\n padding-top: 2vh;\n}\nh3 {\n font-size: 28px;\n padding-top: 1vh;\n}\n</style>\n"],"names":["time","ref","timer","router","useRouter","handleToHome","clearInterval","value","replace","onMounted","setInterval"],"mappings":"i+BAWM,MAAAA,EAAOC,EAAI,GACXC,EAAQD,EAAI,MACZE,EAASC,IACTC,EAAeA,KACnBC,cAAcJ,EAAMK,OACpBJ,EAAOK,QAAQ,IAAG,SAEpBC,GAAU,KACFP,EAAAK,MAAQG,aAAY,KACL,IAAfV,EAAKO,QACPD,cAAcJ,EAAMK,OACpBJ,EAAOK,QAAQ,MAEjBR,EAAKO,OAAS,CAAA,GACb,IAAI"}
@@ -1,2 +1,2 @@
1
- System.register(["./index-legacy-DC5-MYgp.js","./el-loading-legacy-CCDpn-BT.js","./el-dialog-legacy-CX7a77_4.js","./el-pagination-legacy-CAxn6D5y.js","./el-select-legacy-BI1YK9Jv.js","./el-table-column-legacy-BWpnrxZl.js","./other-legacy-DjiCmSH4.js","./data-board-legacy-mqcredpF.js","./refresh-legacy-Cv7RM_sm.js","./data-analysis-legacy-sXkPNcPD.js","./index-legacy-DiNZXmUs.js","./isEqual-legacy-DVLZyo95.js","./validator-legacy-D-pC1hkO.js"],(function(e,a){"use strict";var l,t,n,o,r,s,i,c,u,d,p,v,g,m,f,h,x,b,y,w,z,C,V,j,k,$,_,H,M,S,E,D,B,I,L,O,U,P,T,q,F,J,N,A,G,K;return{setters:[e=>{l=e.g,t=e.d,n=e.a,o=e.c,r=e.b,s=e.r,i=e.Z,c=e.br,u=e.O,d=e.a7,p=e.o,v=e.i,g=e.a8,m=e.F,f=e.C,h=e.j,x=e.w,b=e.D,y=e.G,w=e.t,z=e.k,C=e.e,V=e.s,j=e.bs,k=e.E,$=e.ab,_=e.ad,H=e.I,M=e.v,S=e.x,E=e.p,D=e.f,B=e._},e=>{I=e.v},e=>{L=e.u,O=e.E},e=>{U=e.s,P=e.E},e=>{T=e.E,q=e.a},e=>{F=e.E,J=e.a},e=>{N=e.d},e=>{A=e.d},e=>{G=e.r},e=>{K=e.d},null,null,null],execute:function(){var a=ae.createElement("style");a.textContent="@media screen and (max-width: 700px){.card-list[data-v-2d96ccb5]{margin-top:40px}.card[data-v-2d96ccb5]{min-width:300px}.log-filter[data-v-2d96ccb5]{justify-content:center}}.overview[data-v-2d96ccb5]{margin:0 auto}.card-list[data-v-2d96ccb5]{display:flex;margin-top:20px;justify-content:center;flex-wrap:wrap}.card[data-v-2d96ccb5]{margin:10px;cursor:pointer;font-size:12px;position:relative;overflow:hidden;color:#666;background:#fff;box-shadow:4px 4px 40px rgba(0,0,0,.05);border-color:rgba(0,0,0,.05);min-width:300px}.card .logo[data-v-2d96ccb5]{float:left;margin:4px 10px 0;-webkit-transition:all .38s ease-out;transition:all .38s ease-out;border-radius:6px;font-size:48px}.card .logo i[data-v-2d96ccb5]{padding:10px}.card .content[data-v-2d96ccb5]{float:right;font-weight:700;margin:10px 10px 10px 0}.card .content .title[data-v-2d96ccb5]{line-height:18px;color:rgba(0,0,0,.45);font-size:14px;text-align:right}.card .content .text[data-v-2d96ccb5]{font-size:16px;text-align:right}.card .content .supplement[data-v-2d96ccb5]{font-size:12px;font-weight:lighter;text-align:right}.panel[data-v-2d96ccb5]{max-width:1024px;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-2d96ccb5]{display:flex;flex-wrap:wrap}.log-filter .item[data-v-2d96ccb5]{margin-right:10px;margin-bottom:10px}.log-filter .item .label[data-v-2d96ccb5]{margin-right:10px;font-size:12px}\n",ae.head.appendChild(a);const Z=t({name:"Coin"}),Q={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},R=[r("path",{fill:"currentColor",d:"m161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z"},null,-1),r("path",{fill:"currentColor",d:"m161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z"},null,-1),r("path",{fill:"currentColor",d:"M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224zm0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160z"},null,-1)];var W=l(Z,[["render",function(e,a,l,t,r,s){return n(),o("svg",Q,R)}]]);const X=t({name:"Document"}),Y={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ee=[r("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z"},null,-1)];var ae=l(X,[["render",function(e,a,l,t,r,s){return n(),o("svg",Y,ee)}]]);const le=t({name:"TakeawayBox"}),te={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ne=[r("path",{fill:"currentColor",d:"M832 384H192v448h640V384zM96 320h832V128H96v192zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32h-64zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64z"},null,-1)];var oe=l(le,[["render",function(e,a,l,t,r,s){return n(),o("svg",te,ne)}]]);const re=t({name:"Tickets"}),se={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ie=[r("path",{fill:"currentColor",d:"M192 128v768h640V128H192zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h192v64H320v-64zm0 384h384v64H320v-64z"},null,-1)];var ce=l(re,[["render",function(e,a,l,t,r,s){return n(),o("svg",se,ie)}]]);const ue={class:"overview"},de={class:"card-list","element-loading-text":"Loading..."},pe={class:"logo"},ve={class:"content"},ge={class:"title"},me={class:"text"},fe={class:"supplement"},he={class:"panel"},xe={class:"p10 log-filter"},be={class:"item"},ye=(e=>(E("data-v-2d96ccb5"),e=e(),D(),e))((()=>r("span",{class:"label"},"类型",-1))),we={class:"item"},ze={class:"item"},Ce={class:"item"},Ve={class:"item"},je={class:"flex fc p10"},ke={class:"dialog-footer"},$e=t({__name:"index",setup(e){const a=L(),l=s(!1),t=i([{type:"user",title:"用户数量",value:"0",supplement:"较昨日 +0",icon:c,color:"#40c9c6"},{type:"file",title:"记录/OSS",value:"0",supplement:"记录较昨日 +0",icon:ae,color:"#36a3f7"},{type:"log",title:"日志数量",value:"0",supplement:"较昨日 +0",icon:ce,color:"#f4516c"},{type:"pv",title:"PV/UV",value:"0/0",supplement:"",icon:A,color:"#34bfa3"},{type:"compress",title:"归档&无效文件",value:"0/0KB",supplement:"已失效0个",icon:W,color:"#e38013"}]);function E(){l.value=!0,j.getCount().then((e=>{const{user:a,file:n,log:o,pv:r,compress:s}=e.data;t[0].value=`${a.sum}`,t[0].supplement=`较昨日 +${a.recent}`,t[1].value=`${n.server.sum}/${n.oss.sum} (${n.oss.size})`,t[1].supplement=`记录较昨日 +${n.server.recent}`,t[2].value=`${o.sum}`,t[2].supplement=`较昨日 +${o.recent}`,t[3].value=`${r.today.sum}/${r.today.uv}`,t[3].supplement=`历史: ${r.all.sum}/${r.all.uv}`,t[4].value=`${s.all.sum}/${s.all.size}`,t[4].supplement=`已失效 ${s.expired.sum}/${s.expired.size}`,l.value=!1}))}const D=s(!1);function B(){D.value=!0,j.clearExpiredCompressFile().then((()=>{setTimeout((()=>{k.success("清理成功,数据同步可能有延迟"),D.value=!1,E()}),2e3)}))}const Z=i([]),Q=s("behavior"),R=s(""),X=i([{label:"用户行为",type:"behavior"},{label:"网络请求",type:"request"},{label:"服务端错误",type:"error"},{label:"页面访问",type:"pv"}]),Y=s(10);function ee(e){Y.value=e}const le=s(0),te=u((()=>Math.ceil(le.value/Y.value))),ne=s(1);function re(e){ne.value=e}const se=N((()=>{j.getLogMsg(Y.value,ne.value,Q.value,R.value).then((e=>{Z.splice(0,Z.length),Z.push(...e.data.logs),le.value=e.data.sum}))}),100,!1);d((()=>{Q.value&&(ne.value=1)})),d((()=>{void 0!==R.value&&se()})),d((()=>{Q.value&&se()})),d((()=>{(ne.value||Y.value)&&se()}));const ie=s(!1),$e=s(""),_e=u((()=>{try{return JSON.parse($e.value)}catch(e){return{}}}));function He(){$($e.value)}function Me(){if(0===Z.length)return;const e=Z.map((e=>{const{date:a,ip:l,msg:t}=e;return[V(new Date(a)),l,t]}));_(["日期","IP","内容"],e,`导出日志_${Z.length}条${V(new Date,"yyyy年MM月日hh时mm分ss秒")}.xlsx`),k.success("导出成功")}return p((()=>{E()})),(e,s)=>{const i=H,c=T,u=q,d=M,p=S,k=F,$=J,_=P,E=v("json-viewer"),L=O,N=I;return n(),o("div",ue,[g((n(),o("div",de,[(n(!0),o(m,null,f(t,(e=>(n(),o("div",{key:e.type,class:"card"},[r("div",pe,[h(i,{color:e.color},{default:x((()=>[(n(),b(y(e.icon)))])),_:2},1032,["color"])]),r("div",ve,[r("div",ge,w(e.title),1),r("div",me,w(e.value),1),r("div",fe,w(e.supplement),1)])])))),128))])),[[N,l.value]]),r("div",he,[r("div",xe,[r("span",be,[ye,h(u,{modelValue:Q.value,"onUpdate:modelValue":s[0]||(s[0]=e=>Q.value=e),size:"default",placeholder:"请选择日志类型"},{default:x((()=>[(n(!0),o(m,null,f(X,((e,a)=>(n(),b(c,{key:a,label:e.label,value:e.type},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])]),r("span",we,[h(d,{modelValue:R.value,"onUpdate:modelValue":s[1]||(s[1]=e=>R.value=e),size:"default",clearable:"",placeholder:"请输入要检索的内容","prefix-icon":z(U)},null,8,["modelValue","prefix-icon"])]),r("span",ze,[h(p,{size:"default",icon:z(G),onClick:z(se)},{default:x((()=>[C("刷新")])),_:1},8,["icon","onClick"])]),r("span",Ce,[h(p,{size:"default",type:"primary",icon:z(K),onClick:Me},{default:x((()=>[C("导出日志 "+w(Z.length)+" 条",1)])),_:1},8,["icon"])]),r("span",Ve,[g((n(),b(p,{size:"default",type:"danger",icon:z(oe),disabled:D.value,onClick:B},{default:x((()=>[C("清理无效文件")])),_:1},8,["icon","disabled"])),[[N,D.value]])])]),h($,{"tooltip-effect":"dark",height:"400",stripe:"",border:"","default-sort":{prop:"date",order:"descending"},data:Z,style:{width:"100%"}},{default:x((()=>[h(k,{sortable:"",prop:"date",label:"日期",width:"180"},{default:x((e=>[C(w(z(V)(new Date(e.row.date))),1)])),_:1}),h(k,{sortable:"",prop:"ip",label:"IP",width:"100"}),h(k,{"min-width":"160",prop:"msg",label:"内容"}),h(k,{fixed:"right",label:"操作",width:"100"},{default:x((e=>[h(p,{type:"primary",text:"",size:"small",onClick:a=>{return l=e.row.id,void j.getLogMsgDetail(l).then((e=>{ie.value=!0,$e.value=JSON.stringify(e.data,null,2)}));var l}},{default:x((()=>[C(" 查看详情 ")])),_:2},1032,["onClick"])])),_:1})])),_:1},8,["data"]),r("div",je,[h(_,{"current-page":ne.value,background:"","page-count":te.value,"page-sizes":[10,50,100,200,500,1e3],"page-size":Y.value,total:le.value,layout:"total, sizes, prev, pager, next, jumper",onCurrentChange:re,onSizeChange:ee},null,8,["current-page","page-count","page-size","total"])])]),h(L,{modelValue:ie.value,"onUpdate:modelValue":s[3]||(s[3]=e=>ie.value=e),title:"详细信息",width:"50%",center:"",fullscreen:z(a)},{footer:x((()=>[r("span",ke,[h(p,{type:"default",onClick:He},{default:x((()=>[C("复制")])),_:1}),h(p,{type:"primary",onClick:s[2]||(s[2]=e=>ie.value=!1)},{default:x((()=>[C("确定")])),_:1})])])),default:x((()=>[h(E,{value:_e.value,"expand-depth":5,copyable:"",boxed:"",sort:""},null,8,["value"])])),_:1},8,["modelValue","fullscreen"])])}}});e("default",B($e,[["__scopeId","data-v-2d96ccb5"]]))}}}));
2
- //# sourceMappingURL=index-legacy-gQf30T09.js.map
1
+ System.register(["./index-legacy-BLlk8iq-.js","./el-loading-legacy-B3RLcjwN.js","./el-dialog-legacy-BRLM43ZY.js","./el-pagination-legacy-Bf-Bzx7n.js","./el-select-legacy-DSGgSQYX.js","./el-table-column-legacy-N_oU_-0P.js","./other-legacy-DjiCmSH4.js","./data-board-legacy-BFxWeFnQ.js","./refresh-legacy-DOts-8Wc.js","./data-analysis-legacy-_KcR253K.js","./index-legacy-Da4s_D85.js","./isEqual-legacy-BWUPR8bV.js","./validator-legacy-CacjPWoF.js"],(function(e,a){"use strict";var l,t,n,o,r,s,i,c,u,d,p,v,f,g,m,h,x,y,w,b,z,C,V,j,k,$,_,H,M,S,E,D,B,I,L,O,U,P,T,q,F,J,N,A,G,K;return{setters:[e=>{l=e.g,t=e.d,n=e.a,o=e.c,r=e.b,s=e.r,i=e.Z,c=e.br,u=e.O,d=e.a7,p=e.o,v=e.i,f=e.a8,g=e.F,m=e.C,h=e.j,x=e.w,y=e.D,w=e.G,b=e.t,z=e.k,C=e.e,V=e.s,j=e.bs,k=e.E,$=e.ab,_=e.ad,H=e.I,M=e.v,S=e.x,E=e.p,D=e.f,B=e._},e=>{I=e.v},e=>{L=e.u,O=e.E},e=>{U=e.s,P=e.E},e=>{T=e.E,q=e.a},e=>{F=e.E,J=e.a},e=>{N=e.d},e=>{A=e.d},e=>{G=e.r},e=>{K=e.d},null,null,null],execute:function(){var a=ae.createElement("style");a.textContent="@media screen and (max-width: 700px){.card-list[data-v-0ac70f66]{margin-top:40px}.card[data-v-0ac70f66]{min-width:300px}.log-filter[data-v-0ac70f66]{justify-content:center}}.overview[data-v-0ac70f66]{margin:0 auto}.card-list[data-v-0ac70f66]{display:flex;margin-top:20px;justify-content:center;flex-wrap:wrap}.card[data-v-0ac70f66]{margin:10px;cursor:pointer;font-size:12px;position:relative;overflow:hidden;color:#666;background:#fff;box-shadow:4px 4px 40px rgba(0,0,0,.05);border-color:rgba(0,0,0,.05);min-width:300px}.card .logo[data-v-0ac70f66]{float:left;margin:4px 10px 0;-webkit-transition:all .38s ease-out;transition:all .38s ease-out;border-radius:6px;font-size:48px}.card .logo i[data-v-0ac70f66]{padding:10px}.card .content[data-v-0ac70f66]{float:right;font-weight:700;margin:10px 10px 10px 0}.card .content .title[data-v-0ac70f66]{line-height:18px;color:rgba(0,0,0,.45);font-size:14px;text-align:right}.card .content .text[data-v-0ac70f66]{font-size:16px;text-align:right}.card .content .supplement[data-v-0ac70f66]{font-size:12px;font-weight:lighter;text-align:right}.panel[data-v-0ac70f66]{max-width:1024px;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-0ac70f66]{display:flex;flex-wrap:wrap}.log-filter .item[data-v-0ac70f66]{margin-right:10px;margin-bottom:10px}.log-filter .item .label[data-v-0ac70f66]{margin-right:10px;font-size:12px}\n",ae.head.appendChild(a);const Z=t({name:"Coin"}),Q={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},R=[r("path",{fill:"currentColor",d:"m161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z"},null,-1),r("path",{fill:"currentColor",d:"m161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z"},null,-1),r("path",{fill:"currentColor",d:"M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224zm0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160z"},null,-1)];var W=l(Z,[["render",function(e,a,l,t,r,s){return n(),o("svg",Q,R)}]]);const X=t({name:"Document"}),Y={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ee=[r("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z"},null,-1)];var ae=l(X,[["render",function(e,a,l,t,r,s){return n(),o("svg",Y,ee)}]]);const le=t({name:"TakeawayBox"}),te={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ne=[r("path",{fill:"currentColor",d:"M832 384H192v448h640V384zM96 320h832V128H96v192zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32h-64zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64z"},null,-1)];var oe=l(le,[["render",function(e,a,l,t,r,s){return n(),o("svg",te,ne)}]]);const re=t({name:"Tickets"}),se={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ie=[r("path",{fill:"currentColor",d:"M192 128v768h640V128H192zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h192v64H320v-64zm0 384h384v64H320v-64z"},null,-1)];var ce=l(re,[["render",function(e,a,l,t,r,s){return n(),o("svg",se,ie)}]]);const ue={class:"overview"},de={class:"card-list","element-loading-text":"Loading..."},pe={class:"logo"},ve={class:"content"},fe={class:"title"},ge={class:"text"},me={class:"supplement"},he={class:"panel"},xe={class:"p10 log-filter"},ye={class:"item"},we=(e=>(E("data-v-0ac70f66"),e=e(),D(),e))((()=>r("span",{class:"label"},"类型",-1))),be={class:"item"},ze={class:"item"},Ce={class:"item"},Ve={class:"item"},je={class:"flex fc p10"},ke={class:"dialog-footer"},$e=t({__name:"index",setup(e){const a=L(),l=s(!1),t=i([{type:"user",title:"用户数量",value:"0",supplement:"较昨日 +0",icon:c,color:"#40c9c6"},{type:"file",title:"记录/OSS",value:"0",supplement:"记录较昨日 +0",icon:ae,color:"#36a3f7"},{type:"log",title:"日志数量",value:"0",supplement:"较昨日 +0",icon:ce,color:"#f4516c"},{type:"pv",title:"PV/UV",value:"0/0",supplement:"",icon:A,color:"#34bfa3"},{type:"compress",title:"归档&无效文件",value:"0/0KB",supplement:"已失效0个",icon:W,color:"#e38013"}]);function E(){l.value=!0,j.getCount().then((e=>{const{user:a,file:n,log:o,pv:r,compress:s}=e.data;t[0].value=`${a.sum}`,t[0].supplement=`较昨日 +${a.recent}`,t[1].value=`${n.server.sum}/${n.oss.sum} (${n.oss.size})`,t[1].supplement=`记录较昨日 +${n.server.recent}`,t[2].value=`${o.sum}`,t[2].supplement=`较昨日 +${o.recent}`,t[3].value=`${r.today.sum}/${r.today.uv}`,t[3].supplement=`历史: ${r.all.sum}/${r.all.uv}`,t[4].value=`${s.all.sum}/${s.all.size}`,t[4].supplement=`已失效 ${s.expired.sum}/${s.expired.size}`,l.value=!1}))}const D=s(!1);function B(){D.value=!0,j.clearExpiredCompressFile().then((()=>{setTimeout((()=>{k.success("清理成功,数据同步可能有延迟"),D.value=!1,E()}),2e3)}))}const Z=i([]),Q=s("behavior"),R=s(""),X=i([{label:"用户行为",type:"behavior"},{label:"网络请求",type:"request"},{label:"服务端错误",type:"error"},{label:"页面访问",type:"pv"}]),Y=s(10);function ee(e){Y.value=e}const le=s(0),te=u((()=>Math.ceil(le.value/Y.value))),ne=s(1);function re(e){ne.value=e}const se=N((()=>{j.getLogMsg(Y.value,ne.value,Q.value,R.value).then((e=>{Z.splice(0,Z.length),Z.push(...e.data.logs),le.value=e.data.sum}))}),100,!1);d((()=>{Q.value&&(ne.value=1)})),d((()=>{void 0!==R.value&&se()})),d((()=>{Q.value&&se()})),d((()=>{(ne.value||Y.value)&&se()}));const ie=s(!1),$e=s(""),_e=u((()=>{try{return JSON.parse($e.value)}catch(e){return{}}}));function He(){$($e.value)}function Me(){if(0===Z.length)return;const e=Z.map((e=>{const{date:a,ip:l,msg:t}=e;return[V(new Date(a)),l,t]}));_(["日期","IP","内容"],e,`导出日志_${Z.length}条${V(new Date,"yyyy年MM月dd日hh时mm分ss秒")}.xlsx`),k.success("导出成功")}return p((()=>{E()})),(e,s)=>{const i=H,c=T,u=q,d=M,p=S,k=F,$=J,_=P,E=v("json-viewer"),L=O,N=I;return n(),o("div",ue,[f((n(),o("div",de,[(n(!0),o(g,null,m(t,(e=>(n(),o("div",{key:e.type,class:"card"},[r("div",pe,[h(i,{color:e.color},{default:x((()=>[(n(),y(w(e.icon)))])),_:2},1032,["color"])]),r("div",ve,[r("div",fe,b(e.title),1),r("div",ge,b(e.value),1),r("div",me,b(e.supplement),1)])])))),128))])),[[N,l.value]]),r("div",he,[r("div",xe,[r("span",ye,[we,h(u,{modelValue:Q.value,"onUpdate:modelValue":s[0]||(s[0]=e=>Q.value=e),size:"default",placeholder:"请选择日志类型"},{default:x((()=>[(n(!0),o(g,null,m(X,((e,a)=>(n(),y(c,{key:a,label:e.label,value:e.type},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])]),r("span",be,[h(d,{modelValue:R.value,"onUpdate:modelValue":s[1]||(s[1]=e=>R.value=e),size:"default",clearable:"",placeholder:"请输入要检索的内容","prefix-icon":z(U)},null,8,["modelValue","prefix-icon"])]),r("span",ze,[h(p,{size:"default",icon:z(G),onClick:z(se)},{default:x((()=>[C("刷新")])),_:1},8,["icon","onClick"])]),r("span",Ce,[h(p,{size:"default",type:"primary",icon:z(K),onClick:Me},{default:x((()=>[C("导出日志 "+b(Z.length)+" 条",1)])),_:1},8,["icon"])]),r("span",Ve,[f((n(),y(p,{size:"default",type:"danger",icon:z(oe),disabled:D.value,onClick:B},{default:x((()=>[C("清理无效文件")])),_:1},8,["icon","disabled"])),[[N,D.value]])])]),h($,{"tooltip-effect":"dark",height:"400",stripe:"",border:"","default-sort":{prop:"date",order:"descending"},data:Z,style:{width:"100%"}},{default:x((()=>[h(k,{sortable:"",prop:"date",label:"日期",width:"180"},{default:x((e=>[C(b(z(V)(new Date(e.row.date))),1)])),_:1}),h(k,{sortable:"",prop:"ip",label:"IP",width:"100"}),h(k,{"min-width":"160",prop:"msg",label:"内容"}),h(k,{fixed:"right",label:"操作",width:"100"},{default:x((e=>[h(p,{type:"primary",text:"",size:"small",onClick:a=>{return l=e.row.id,void j.getLogMsgDetail(l).then((e=>{ie.value=!0,$e.value=JSON.stringify(e.data,null,2)}));var l}},{default:x((()=>[C(" 查看详情 ")])),_:2},1032,["onClick"])])),_:1})])),_:1},8,["data"]),r("div",je,[h(_,{"current-page":ne.value,background:"","page-count":te.value,"page-sizes":[10,50,100,200,500,1e3],"page-size":Y.value,total:le.value,layout:"total, sizes, prev, pager, next, jumper",onCurrentChange:re,onSizeChange:ee},null,8,["current-page","page-count","page-size","total"])])]),h(L,{modelValue:ie.value,"onUpdate:modelValue":s[3]||(s[3]=e=>ie.value=e),title:"详细信息",width:"50%",center:"",fullscreen:z(a)},{footer:x((()=>[r("span",ke,[h(p,{type:"default",onClick:He},{default:x((()=>[C("复制")])),_:1}),h(p,{type:"primary",onClick:s[2]||(s[2]=e=>ie.value=!1)},{default:x((()=>[C("确定")])),_:1})])])),default:x((()=>[h(E,{value:_e.value,"expand-depth":5,copyable:"",boxed:"",sort:""},null,8,["value"])])),_:1},8,["modelValue","fullscreen"])])}}});e("default",B($e,[["__scopeId","data-v-0ac70f66"]]))}}}));
2
+ //# sourceMappingURL=index-legacy-DpNNn-Dy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-legacy-DpNNn-Dy.js","sources":["../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/coin.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/document.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/takeaway-box.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/tickets.mjs","../../src/pages/dashboard/manage/overview/index.vue"],"sourcesContent":["import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Coin\"\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: \"m161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"m161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z\"\n}, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224zm0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160z\"\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 coin = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { coin 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: \"Document\"\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: \"M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z\"\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 document = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { document 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: \"TakeawayBox\"\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: \"M832 384H192v448h640V384zM96 320h832V128H96v192zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32h-64zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64z\"\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 takeawayBox = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { takeawayBox 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: \"Tickets\"\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: \"M192 128v768h640V128H192zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h192v64H320v-64zm0 384h384v64H320v-64z\"\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 tickets = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { tickets as default };\n","<script lang=\"ts\" setup>\nimport { computed, onMounted, reactive, ref, watchEffect } from 'vue'\nimport {\n Coin,\n DataAnalysis,\n DataBoard,\n Document,\n Refresh,\n Search,\n TakeawayBox,\n Tickets,\n User,\n} from '@element-plus/icons-vue'\nimport { ElMessage } from 'element-plus'\nimport { SuperOverviewApi } from '@/apis'\nimport { copyRes, formatDate } from '@/utils/stringUtil'\nimport { tableToExcel } from '@/utils/networkUtil'\nimport { debounce } from '@/utils/other'\nimport { useIsMobile } from '@/composables'\n\nconst isMobile = useIsMobile()\n\nconst isLoadingOverview = ref(false)\nconst cardList = reactive([\n {\n type: 'user',\n title: '用户数量',\n value: '0',\n supplement: '较昨日 +0',\n icon: User,\n color: '#40c9c6',\n },\n {\n type: 'file',\n title: '记录/OSS',\n value: '0',\n supplement: '记录较昨日 +0',\n icon: Document,\n color: '#36a3f7',\n },\n {\n type: 'log',\n title: '日志数量',\n value: '0',\n supplement: '较昨日 +0',\n icon: Tickets,\n color: '#f4516c',\n },\n {\n type: 'pv',\n title: 'PV/UV',\n value: '0/0',\n supplement: '',\n icon: DataBoard,\n color: '#34bfa3',\n },\n {\n type: 'compress',\n title: '归档&无效文件',\n value: '0/0KB',\n supplement: '已失效0个',\n icon: Coin,\n color: '#e38013',\n },\n])\n// 刷新记录条数\nfunction refreshCount() {\n isLoadingOverview.value = true\n SuperOverviewApi.getCount().then((res) => {\n const { user, file, log, pv, compress } = res.data\n cardList[0].value = `${user.sum}`\n cardList[0].supplement = `较昨日 +${user.recent}`\n cardList[1].value = `${file.server.sum}/${file.oss.sum} (${file.oss.size})`\n cardList[1].supplement = `记录较昨日 +${file.server.recent}`\n cardList[2].value = `${log.sum}`\n cardList[2].supplement = `较昨日 +${log.recent}`\n cardList[3].value = `${pv.today.sum}/${pv.today.uv}`\n cardList[3].supplement = `历史: ${pv.all.sum}/${pv.all.uv}`\n cardList[4].value = `${compress.all.sum}/${compress.all.size}`\n cardList[4].supplement = `已失效 ${compress.expired.sum}/${compress.expired.size}`\n isLoadingOverview.value = false\n })\n}\n\nconst disableDelete = ref(false)\nfunction clearExpiredCompressFile() {\n disableDelete.value = true\n SuperOverviewApi.clearExpiredCompressFile().then(() => {\n setTimeout(() => {\n ElMessage.success('清理成功,数据同步可能有延迟')\n disableDelete.value = false\n refreshCount()\n }, 2000)\n })\n}\n\n// 日志\nconst logs: any[] = reactive([])\n\n// function getLogsTypeText(type: string) {\n// const logsTypeText: any = {\n// request: '网络请求',\n// behavior: '用户行为',\n// error: '错误',\n// pv: '页面访问',\n// }\n// return logsTypeText[type]\n// }\n// 筛选的日志\nconst filterLogType = ref('behavior')\nconst searchWord = ref('')\nconst logTypeList = reactive([\n {\n label: '用户行为',\n type: 'behavior',\n },\n {\n label: '网络请求',\n type: 'request',\n },\n {\n label: '服务端错误',\n type: 'error',\n },\n {\n label: '页面访问',\n type: 'pv',\n },\n])\n\n// 分页\n// 页大小\nconst pageSize = ref(10)\nfunction handleSizeChange(v: number) {\n pageSize.value = v\n}\n// 总条数\nconst logSumCount = ref(0)\nconst pageCount = computed(() => {\n const t = Math.ceil(logSumCount.value / pageSize.value)\n return t\n})\nconst pageCurrent = ref(1)\nfunction handlePageChange(idx: number) {\n pageCurrent.value = idx\n}\n\nconst refreshLogs = debounce(\n () => {\n SuperOverviewApi.getLogMsg(\n pageSize.value,\n pageCurrent.value,\n filterLogType.value,\n searchWord.value,\n ).then((res) => {\n logs.splice(0, logs.length)\n logs.push(...res.data.logs)\n logSumCount.value = res.data.sum\n })\n },\n 100,\n false,\n)\n\nwatchEffect(() => {\n if (filterLogType.value) {\n pageCurrent.value = 1\n }\n})\n\nwatchEffect(() => {\n if (searchWord.value !== undefined) {\n refreshLogs()\n }\n})\n\nwatchEffect(() => {\n if (filterLogType.value) {\n refreshLogs()\n }\n})\n\nwatchEffect(() => {\n if (pageCurrent.value || pageSize.value) {\n refreshLogs()\n }\n})\n\nconst showDetail = ref(false)\nconst showData = ref('')\nfunction handleDetail(id) {\n SuperOverviewApi.getLogMsgDetail(id).then((res) => {\n showDetail.value = true\n showData.value = JSON.stringify(res.data, null, 2)\n })\n}\nconst jsonData = computed(() => {\n try {\n return JSON.parse(showData.value)\n }\n catch (e) {\n return {}\n }\n})\nfunction handleCopyDetail() {\n copyRes(showData.value)\n}\n\nfunction exportLogData() {\n if (logs.length === 0) {\n return\n }\n const headers = ['日期', 'IP', '内容']\n const body = logs.map((v) => {\n const { date, ip, msg } = v\n return [formatDate(new Date(date)), ip, msg]\n })\n tableToExcel(\n headers,\n body,\n `导出日志_${logs.length}条${formatDate(\n new Date(),\n 'yyyy年MM月dd日hh时mm分ss秒',\n )}.xlsx`,\n )\n ElMessage.success('导出成功')\n}\nonMounted(() => {\n refreshCount()\n})\n</script>\n\n<template>\n <div class=\"overview\">\n <div\n v-loading=\"isLoadingOverview\"\n class=\"card-list\"\n element-loading-text=\"Loading...\"\n >\n <div v-for=\"c in cardList\" :key=\"c.type\" class=\"card\">\n <div class=\"logo\">\n <el-icon :color=\"c.color\">\n <component :is=\"c.icon\" />\n </el-icon>\n </div>\n <div class=\"content\">\n <div class=\"title\">\n {{ c.title }}\n </div>\n <div class=\"text\">\n {{ c.value }}\n </div>\n <div class=\"supplement\">\n {{ c.supplement }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"panel\">\n <div class=\"p10 log-filter\">\n <span class=\"item\">\n <span class=\"label\">类型</span>\n <el-select\n v-model=\"filterLogType\"\n size=\"default\"\n placeholder=\"请选择日志类型\"\n >\n <el-option\n v-for=\"(item, idx) in logTypeList\"\n :key=\"idx\"\n :label=\"item.label\"\n :value=\"item.type\"\n />\n </el-select>\n </span>\n <span class=\"item\">\n <el-input\n v-model=\"searchWord\"\n size=\"default\"\n clearable\n placeholder=\"请输入要检索的内容\"\n :prefix-icon=\"Search\"\n />\n </span>\n <span class=\"item\">\n <el-button size=\"default\" :icon=\"Refresh\" @click=\"refreshLogs\">刷新</el-button>\n </span>\n <span class=\"item\">\n <el-button\n size=\"default\"\n type=\"primary\"\n :icon=\"DataAnalysis\"\n @click=\"exportLogData\"\n >导出日志 {{ logs.length }} 条</el-button>\n </span>\n <span class=\"item\">\n <el-button\n v-loading=\"disableDelete\"\n size=\"default\"\n type=\"danger\"\n :icon=\"TakeawayBox\"\n :disabled=\"disableDelete\"\n @click=\"clearExpiredCompressFile\"\n >清理无效文件</el-button>\n </span>\n </div>\n <el-table\n tooltip-effect=\"dark\"\n height=\"400\"\n stripe\n border\n :default-sort=\"{ prop: 'date', order: 'descending' }\"\n :data=\"logs\"\n style=\"width: 100%\"\n >\n <el-table-column sortable prop=\"date\" label=\"日期\" width=\"180\">\n <template #default=\"scope\">\n {{\n formatDate(new Date(scope.row.date))\n }}\n </template>\n </el-table-column>\n <!-- <el-table-column prop=\"type\" label=\"类型\" width=\"100\">\n <template #default=\"scope\">{{ getLogsTypeText(scope.row.type) }}</template>\n </el-table-column> -->\n <el-table-column\n sortable\n prop=\"ip\"\n label=\"IP\"\n width=\"100\"\n />\n <el-table-column\n min-width=\"160\"\n prop=\"msg\"\n label=\"内容\"\n />\n <el-table-column fixed=\"right\" label=\"操作\" width=\"100\">\n <template #default=\"scope\">\n <el-button\n type=\"primary\"\n text\n size=\"small\"\n @click=\"handleDetail(scope.row.id)\"\n >\n 查看详情\n </el-button>\n </template>\n </el-table-column>\n </el-table>\n\n <div class=\"flex fc p10\">\n <el-pagination\n :current-page=\"pageCurrent\"\n background\n :page-count=\"pageCount\"\n :page-sizes=\"[10, 50, 100, 200, 500, 1000]\"\n :page-size=\"pageSize\"\n :total=\"logSumCount\"\n layout=\"total, sizes, prev, pager, next, jumper\"\n @current-change=\"handlePageChange\"\n @size-change=\"handleSizeChange\"\n />\n </div>\n </div>\n <el-dialog\n v-model=\"showDetail\"\n title=\"详细信息\"\n width=\"50%\"\n center\n :fullscreen=\"isMobile\"\n >\n <json-viewer\n :value=\"jsonData\"\n :expand-depth=\"5\"\n copyable\n boxed\n sort\n />\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button type=\"default\" @click=\"handleCopyDetail\">复制</el-button>\n <el-button type=\"primary\" @click=\"showDetail = false\">确定</el-button>\n </span>\n </template>\n </el-dialog>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .card-list {\n margin-top: 40px;\n }\n\n .card {\n min-width: 300px;\n }\n\n .log-filter {\n justify-content: center;\n }\n}\n\n.overview {\n margin: 0 auto;\n}\n\n.card-list {\n display: flex;\n margin-top: 20px;\n justify-content: center;\n flex-wrap: wrap;\n}\n\n.card {\n margin: 10px;\n cursor: pointer;\n font-size: 12px;\n position: relative;\n overflow: hidden;\n color: #666;\n background: #fff;\n box-shadow: 4px 4px 40px rgb(0 0 0 / 5%);\n border-color: rgba(0, 0, 0, 0.05);\n min-width: 300px;\n\n .logo {\n float: left;\n margin: 4px 10px 0 10px;\n -webkit-transition: all 0.38s ease-out;\n transition: all 0.38s ease-out;\n border-radius: 6px;\n font-size: 48px;\n\n i {\n padding: 10px;\n }\n }\n\n .content {\n float: right;\n font-weight: 700;\n margin: 10px;\n margin-left: 0;\n\n .title {\n line-height: 18px;\n color: rgba(0, 0, 0, 0.45);\n font-size: 14px;\n text-align: right;\n }\n\n .text {\n font-size: 16px;\n text-align: right;\n }\n\n .supplement {\n font-size: 12px;\n font-weight: lighter;\n text-align: right;\n }\n }\n}\n\n.panel {\n max-width: 1024px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\n.log-filter {\n display: flex;\n flex-wrap: wrap;\n\n .item {\n margin-right: 10px;\n margin-bottom: 10px;\n\n .label {\n margin-right: 10px;\n font-size: 12px;\n }\n }\n}\n</style>\n"],"names":["_sfc_main","defineComponent","name","_hoisted_1","viewBox","xmlns","_hoisted_5","createElementVNode","fill","d","coin","_export_sfc","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","_hoisted_3","document","takeawayBox","tickets","isMobile","useIsMobile","isLoadingOverview","ref","cardList","reactive","type","title","value","supplement","icon","User","color","Document","Tickets","DataBoard","Coin","refreshCount","SuperOverviewApi","getCount","then","res","user","file","log","pv","compress","data","sum","recent","server","oss","size","today","uv","all","expired","disableDelete","clearExpiredCompressFile","setTimeout","ElMessage","success","logs","filterLogType","searchWord","logTypeList","label","pageSize","handleSizeChange","v","logSumCount","pageCount","computed","Math","ceil","pageCurrent","handlePageChange","idx","refreshLogs","debounce","getLogMsg","splice","length","push","watchEffect","showDetail","showData","jsonData","JSON","parse","e","handleCopyDetail","copyRes","exportLogData","body","map","date","ip","msg","formatDate","Date","tableToExcel","onMounted","id","getLogMsgDetail","stringify"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
@@ -1,2 +1,2 @@
1
- System.register(["./index-legacy-DC5-MYgp.js","./el-switch-legacy-CG_sT4XS.js","./validator-legacy-D-pC1hkO.js"],(function(e,a){"use strict";var t,l,n,s,d,i,o,u,r,c,p,v,m,x,f,g,h,y,b,w,k,_,C,S,j,z;return{setters:[e=>{t=e.d,l=e.u,n=e.O,s=e.Z,d=e.r,i=e.c_,o=e.o,u=e.bs,r=e.i,c=e.a,p=e.c,v=e.b,m=e.j,x=e.w,f=e.e,g=e.F,h=e.C,y=e.t,b=e.D,w=e.k,k=e.E,_=e.y,C=e.x,S=e.v,j=e._},e=>{z=e.E},null],execute:function(){var a=document.createElement("style");a.textContent="@media screen and (max-width: 700px){.user[data-v-1e07da88]{margin-top:40px!important}}.user[data-v-1e07da88]{margin:0 auto}.panel[data-v-1e07da88]{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}.routes[data-v-1e07da88]{max-width:500px;margin:0 auto}.routes li[data-v-1e07da88]{display:flex;padding:20px;align-items:center}.routes li .title[data-v-1e07da88]{font-weight:700;margin:0 10px}.config-btn[data-v-1e07da88]{text-align:center}.config-panel[data-v-1e07da88]{max-width:500px;margin:0 auto}\n",document.head.appendChild(a);const O={class:"user"},D={class:"panel"},J={class:"routes"},N={class:"title"},R={class:"path"},V={class:"config-btn"},E={class:"config-panel"};e("default",j(t({__name:"index",setup(e){const a=l(),t=n((()=>a.options.routes.filter((e=>e.meta?.allowDisabled)))),j=s([]),F=d(!1),{value:I,updateValue:U}=i(),Z=d("");function q(){F.value=!0,Z.value=JSON.stringify(I.value,null,2)}async function A(){try{const e=JSON.parse(Z.value);I.value=e,await U(),F.value=!1,k.success("保存成功")}catch(e){return k.error("JSON 格式错误")}}return o((()=>{for(const e of t.value)u.checkDisabledRoute(e.path).then((a=>{j.push({path:e.path,name:e.name.toString(),title:e.meta.title,disabled:!!a.data?.status})}))})),(e,a)=>{const t=_,l=z,n=C,s=r("json-viewer"),d=S;return c(),p("div",O,[v("div",D,[m(t,null,{default:x((()=>[f("禁用路由管理")])),_:1}),v("ul",J,[(c(!0),p(g,null,h(j,(e=>(c(),p("li",{key:e.name},[m(l,{"model-value":!e.disabled,style:{"--el-switch-on-color":"#13ce66","--el-switch-off-color":"#ff4949"},onChange:a=>function(e){u.addDisabledRoute(e.path,!e.disabled).then((()=>{e.disabled=!e.disabled,k.success("切换成功")}))}(e)},null,8,["model-value","onChange"]),v("span",N,y(e.title),1),v("span",R,y(e.path)+y("/register"===e.path?" 关闭后将同时禁用注册功能":""),1)])))),128))]),m(t,null,{default:x((()=>[f("全局配置管理(JSON)")])),_:1}),v("div",V,[F.value?(c(),p(g,{key:1},[m(n,{size:"small",type:"danger",onClick:a[0]||(a[0]=e=>F.value=!1)},{default:x((()=>[f(" 取消 ")])),_:1}),m(n,{size:"small",type:"success",onClick:A},{default:x((()=>[f(" 保存 ")])),_:1})],64)):(c(),b(n,{key:0,size:"small",type:"primary",onClick:q},{default:x((()=>[f(" 更新 ")])),_:1}))]),v("div",E,[F.value?(c(),b(d,{key:1,modelValue:Z.value,"onUpdate:modelValue":a[1]||(a[1]=e=>Z.value=e),autosize:{minRows:2,maxRows:30},type:"textarea"},null,8,["modelValue"])):(c(),b(s,{key:0,value:w(I),"expand-depth":5,copyable:"",boxed:"",sort:""},null,8,["value"]))])])])}}}),[["__scopeId","data-v-1e07da88"]]))}}}));
2
- //# sourceMappingURL=index-legacy-BwpR0DP9.js.map
1
+ System.register(["./index-legacy-BLlk8iq-.js","./el-switch-legacy-CHkEgavQ.js","./validator-legacy-CacjPWoF.js"],(function(e,a){"use strict";var t,l,n,s,d,i,o,u,r,c,p,v,m,x,f,g,h,y,b,w,k,_,C,S,j,z;return{setters:[e=>{t=e.d,l=e.u,n=e.O,s=e.Z,d=e.r,i=e.c_,o=e.o,u=e.bs,r=e.i,c=e.a,p=e.c,v=e.b,m=e.j,x=e.w,f=e.e,g=e.F,h=e.C,y=e.t,b=e.D,w=e.k,k=e.E,_=e.y,C=e.x,S=e.v,j=e._},e=>{z=e.E},null],execute:function(){var a=document.createElement("style");a.textContent="@media screen and (max-width: 700px){.user[data-v-1e07da88]{margin-top:40px!important}}.user[data-v-1e07da88]{margin:0 auto}.panel[data-v-1e07da88]{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}.routes[data-v-1e07da88]{max-width:500px;margin:0 auto}.routes li[data-v-1e07da88]{display:flex;padding:20px;align-items:center}.routes li .title[data-v-1e07da88]{font-weight:700;margin:0 10px}.config-btn[data-v-1e07da88]{text-align:center}.config-panel[data-v-1e07da88]{max-width:500px;margin:0 auto}\n",document.head.appendChild(a);const O={class:"user"},D={class:"panel"},J={class:"routes"},N={class:"title"},R={class:"path"},V={class:"config-btn"},E={class:"config-panel"};e("default",j(t({__name:"index",setup(e){const a=l(),t=n((()=>a.options.routes.filter((e=>e.meta?.allowDisabled)))),j=s([]),F=d(!1),{value:I,updateValue:U}=i(),Z=d("");function q(){F.value=!0,Z.value=JSON.stringify(I.value,null,2)}async function A(){try{const e=JSON.parse(Z.value);I.value=e,await U(),F.value=!1,k.success("保存成功")}catch(e){return k.error("JSON 格式错误")}}return o((()=>{for(const e of t.value)u.checkDisabledRoute(e.path).then((a=>{j.push({path:e.path,name:e.name.toString(),title:e.meta.title,disabled:!!a.data?.status})}))})),(e,a)=>{const t=_,l=z,n=C,s=r("json-viewer"),d=S;return c(),p("div",O,[v("div",D,[m(t,null,{default:x((()=>[f("禁用路由管理")])),_:1}),v("ul",J,[(c(!0),p(g,null,h(j,(e=>(c(),p("li",{key:e.name},[m(l,{"model-value":!e.disabled,style:{"--el-switch-on-color":"#13ce66","--el-switch-off-color":"#ff4949"},onChange:a=>function(e){u.addDisabledRoute(e.path,!e.disabled).then((()=>{e.disabled=!e.disabled,k.success("切换成功")}))}(e)},null,8,["model-value","onChange"]),v("span",N,y(e.title),1),v("span",R,y(e.path)+y("/register"===e.path?" 关闭后将同时禁用注册功能":""),1)])))),128))]),m(t,null,{default:x((()=>[f("全局配置管理(JSON)")])),_:1}),v("div",V,[F.value?(c(),p(g,{key:1},[m(n,{size:"small",type:"danger",onClick:a[0]||(a[0]=e=>F.value=!1)},{default:x((()=>[f(" 取消 ")])),_:1}),m(n,{size:"small",type:"success",onClick:A},{default:x((()=>[f(" 保存 ")])),_:1})],64)):(c(),b(n,{key:0,size:"small",type:"primary",onClick:q},{default:x((()=>[f(" 更新 ")])),_:1}))]),v("div",E,[F.value?(c(),b(d,{key:1,modelValue:Z.value,"onUpdate:modelValue":a[1]||(a[1]=e=>Z.value=e),autosize:{minRows:2,maxRows:30},type:"textarea"},null,8,["modelValue"])):(c(),b(s,{key:0,value:w(I),"expand-depth":5,copyable:"",boxed:"",sort:""},null,8,["value"]))])])])}}}),[["__scopeId","data-v-1e07da88"]]))}}}));
2
+ //# sourceMappingURL=index-legacy-PkF4cKK9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-legacy-BwpR0DP9.js","sources":["../../src/pages/dashboard/manage/config/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport { computed, onMounted, reactive, ref } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { SuperOverviewApi } from '@/apis'\nimport { useSiteAllConfig } from '@/composables'\n\nconst $router = useRouter()\nconst routes = computed(() =>\n $router.options.routes.filter(v => v.meta?.allowDisabled),\n)\nconst showRoutes = reactive<\n {\n path: string\n name: string\n title: string\n disabled: boolean\n }[]\n>([])\n\nfunction handleChangeRoute(r: (typeof showRoutes)[0]) {\n SuperOverviewApi.addDisabledRoute(r.path, !r.disabled).then(() => {\n r.disabled = !r.disabled\n ElMessage.success('切换成功')\n })\n}\n\nconst editConfig = ref(false)\nconst { value: jsonData, updateValue: updateJsonData } = useSiteAllConfig()\n\nconst editJSON = ref('')\n\nfunction handleEditConfig() {\n editConfig.value = true\n editJSON.value = JSON.stringify(jsonData.value, null, 2)\n}\nasync function handleSaveConfig() {\n try {\n const data = JSON.parse(editJSON.value)\n jsonData.value = data\n await updateJsonData()\n editConfig.value = false\n ElMessage.success('保存成功')\n }\n catch (e) {\n return ElMessage.error('JSON 格式错误')\n }\n}\nonMounted(() => {\n for (const r of routes.value) {\n SuperOverviewApi.checkDisabledRoute(r.path).then((v) => {\n showRoutes.push({\n path: r.path,\n name: r.name.toString(),\n title: r.meta.title,\n disabled: !!v.data?.status,\n })\n })\n }\n})\n</script>\n\n<template>\n <div class=\"user\">\n <div class=\"panel\">\n <el-divider>禁用路由管理</el-divider>\n <ul class=\"routes\">\n <li v-for=\"r in showRoutes\" :key=\"r.name\">\n <el-switch\n :model-value=\"!r.disabled\" style=\"\n --el-switch-on-color: #13ce66;\n --el-switch-off-color: #ff4949;\n \" @change=\"handleChangeRoute(r)\"\n />\n <span class=\"title\">{{ r.title }}</span>\n <span class=\"path\">{{ r.path }}{{ r.path === '/register' ? ' 关闭后将同时禁用注册功能' : '' }}</span>\n </li>\n </ul>\n <el-divider>全局配置管理(JSON)</el-divider>\n <div class=\"config-btn\">\n <el-button v-if=\"!editConfig\" size=\"small\" type=\"primary\" @click=\"handleEditConfig\">\n 更新\n </el-button>\n <template v-else>\n <el-button size=\"small\" type=\"danger\" @click=\"editConfig = false\">\n 取消\n </el-button>\n <el-button size=\"small\" type=\"success\" @click=\"handleSaveConfig\">\n 保存\n </el-button>\n </template>\n </div>\n <div class=\"config-panel\">\n <json-viewer\n v-if=\"!editConfig\"\n :value=\"jsonData\"\n :expand-depth=\"5\"\n copyable\n boxed\n sort\n />\n <!-- TODO: JSON editor -->\n <el-input\n v-else\n v-model=\"editJSON\"\n :autosize=\"{ minRows: 2, maxRows: 30 }\"\n type=\"textarea\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n}\n\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\n.routes {\n max-width: 500px;\n margin: 0 auto;\n\n li {\n display: flex;\n padding: 20px;\n align-items: center;\n\n .title {\n font-weight: bold;\n margin: 0 10px;\n }\n }\n}\n.config-btn {\n text-align: center;\n}\n.config-panel {\n max-width: 500px;\n margin: 0 auto;\n}\n</style>\n"],"names":["$router","useRouter","routes","computed","options","filter","v","meta","allowDisabled","showRoutes","reactive","editConfig","ref","value","jsonData","updateValue","updateJsonData","useSiteAllConfig","editJSON","handleEditConfig","JSON","stringify","async","handleSaveConfig","data","parse","ElMessage","success","e","error","onMounted","r","SuperOverviewApi","checkDisabledRoute","path","then","push","name","toString","title","disabled","status","addDisabledRoute"],"mappings":"svCAOA,MAAMA,EAAUC,IACVC,EAASC,GAAS,IACtBH,EAAQI,QAAQF,OAAOG,QAAYC,GAAAA,EAAEC,MAAMC,kBAEvCC,EAAaC,EAOjB,IASIC,EAAaC,GAAI,IACfC,MAAOC,EAAUC,YAAaC,GAAmBC,IAEnDC,EAAWN,EAAI,IAErB,SAASO,IACPR,EAAWE,OAAQ,EACnBK,EAASL,MAAQO,KAAKC,UAAUP,EAASD,MAAO,KAAM,EACxD,CACAS,eAAeC,IACT,IACF,MAAMC,EAAOJ,KAAKK,MAAMP,EAASL,OACjCC,EAASD,MAAQW,QACXR,IACNL,EAAWE,OAAQ,EACnBa,EAAUC,QAAQ,cAEbC,GACE,OAAAF,EAAUG,MAAM,YACzB,CACF,QACAC,GAAU,KACG,IAAA,MAAAC,KAAK7B,EAAOW,MACrBmB,EAAiBC,mBAAmBF,EAAEG,MAAMC,MAAM7B,IAChDG,EAAW2B,KAAK,CACdF,KAAMH,EAAEG,KACRG,KAAMN,EAAEM,KAAKC,WACbC,MAAOR,EAAExB,KAAKgC,MACdC,WAAYlC,EAAEkB,MAAMiB,QACrB,GAEL,uTAtCF,SAA2BV,GACRC,EAAAU,iBAAiBX,EAAEG,MAAOH,EAAES,UAAUL,MAAK,KACxDJ,EAAAS,UAAYT,EAAES,SAChBd,EAAUC,QAAQ,OAAM,GAE5B"}
1
+ {"version":3,"file":"index-legacy-PkF4cKK9.js","sources":["../../src/pages/dashboard/manage/config/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport { computed, onMounted, reactive, ref } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { SuperOverviewApi } from '@/apis'\nimport { useSiteAllConfig } from '@/composables'\n\nconst $router = useRouter()\nconst routes = computed(() =>\n $router.options.routes.filter(v => v.meta?.allowDisabled),\n)\nconst showRoutes = reactive<\n {\n path: string\n name: string\n title: string\n disabled: boolean\n }[]\n>([])\n\nfunction handleChangeRoute(r: (typeof showRoutes)[0]) {\n SuperOverviewApi.addDisabledRoute(r.path, !r.disabled).then(() => {\n r.disabled = !r.disabled\n ElMessage.success('切换成功')\n })\n}\n\nconst editConfig = ref(false)\nconst { value: jsonData, updateValue: updateJsonData } = useSiteAllConfig()\n\nconst editJSON = ref('')\n\nfunction handleEditConfig() {\n editConfig.value = true\n editJSON.value = JSON.stringify(jsonData.value, null, 2)\n}\nasync function handleSaveConfig() {\n try {\n const data = JSON.parse(editJSON.value)\n jsonData.value = data\n await updateJsonData()\n editConfig.value = false\n ElMessage.success('保存成功')\n }\n catch (e) {\n return ElMessage.error('JSON 格式错误')\n }\n}\nonMounted(() => {\n for (const r of routes.value) {\n SuperOverviewApi.checkDisabledRoute(r.path).then((v) => {\n showRoutes.push({\n path: r.path,\n name: r.name.toString(),\n title: r.meta.title,\n disabled: !!v.data?.status,\n })\n })\n }\n})\n</script>\n\n<template>\n <div class=\"user\">\n <div class=\"panel\">\n <el-divider>禁用路由管理</el-divider>\n <ul class=\"routes\">\n <li v-for=\"r in showRoutes\" :key=\"r.name\">\n <el-switch\n :model-value=\"!r.disabled\" style=\"\n --el-switch-on-color: #13ce66;\n --el-switch-off-color: #ff4949;\n \" @change=\"handleChangeRoute(r)\"\n />\n <span class=\"title\">{{ r.title }}</span>\n <span class=\"path\">{{ r.path }}{{ r.path === '/register' ? ' 关闭后将同时禁用注册功能' : '' }}</span>\n </li>\n </ul>\n <el-divider>全局配置管理(JSON)</el-divider>\n <div class=\"config-btn\">\n <el-button v-if=\"!editConfig\" size=\"small\" type=\"primary\" @click=\"handleEditConfig\">\n 更新\n </el-button>\n <template v-else>\n <el-button size=\"small\" type=\"danger\" @click=\"editConfig = false\">\n 取消\n </el-button>\n <el-button size=\"small\" type=\"success\" @click=\"handleSaveConfig\">\n 保存\n </el-button>\n </template>\n </div>\n <div class=\"config-panel\">\n <json-viewer\n v-if=\"!editConfig\"\n :value=\"jsonData\"\n :expand-depth=\"5\"\n copyable\n boxed\n sort\n />\n <!-- TODO: JSON editor -->\n <el-input\n v-else\n v-model=\"editJSON\"\n :autosize=\"{ minRows: 2, maxRows: 30 }\"\n type=\"textarea\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n}\n\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\n.routes {\n max-width: 500px;\n margin: 0 auto;\n\n li {\n display: flex;\n padding: 20px;\n align-items: center;\n\n .title {\n font-weight: bold;\n margin: 0 10px;\n }\n }\n}\n.config-btn {\n text-align: center;\n}\n.config-panel {\n max-width: 500px;\n margin: 0 auto;\n}\n</style>\n"],"names":["$router","useRouter","routes","computed","options","filter","v","meta","allowDisabled","showRoutes","reactive","editConfig","ref","value","jsonData","updateValue","updateJsonData","useSiteAllConfig","editJSON","handleEditConfig","JSON","stringify","async","handleSaveConfig","data","parse","ElMessage","success","e","error","onMounted","r","SuperOverviewApi","checkDisabledRoute","path","then","push","name","toString","title","disabled","status","addDisabledRoute"],"mappings":"svCAOA,MAAMA,EAAUC,IACVC,EAASC,GAAS,IACtBH,EAAQI,QAAQF,OAAOG,QAAYC,GAAAA,EAAEC,MAAMC,kBAEvCC,EAAaC,EAOjB,IASIC,EAAaC,GAAI,IACfC,MAAOC,EAAUC,YAAaC,GAAmBC,IAEnDC,EAAWN,EAAI,IAErB,SAASO,IACPR,EAAWE,OAAQ,EACnBK,EAASL,MAAQO,KAAKC,UAAUP,EAASD,MAAO,KAAM,EACxD,CACAS,eAAeC,IACT,IACF,MAAMC,EAAOJ,KAAKK,MAAMP,EAASL,OACjCC,EAASD,MAAQW,QACXR,IACNL,EAAWE,OAAQ,EACnBa,EAAUC,QAAQ,cAEbC,GACE,OAAAF,EAAUG,MAAM,YACzB,CACF,QACAC,GAAU,KACG,IAAA,MAAAC,KAAK7B,EAAOW,MACrBmB,EAAiBC,mBAAmBF,EAAEG,MAAMC,MAAM7B,IAChDG,EAAW2B,KAAK,CACdF,KAAMH,EAAEG,KACRG,KAAMN,EAAEM,KAAKC,WACbC,MAAOR,EAAExB,KAAKgC,MACdC,WAAYlC,EAAEkB,MAAMiB,QACrB,GAEL,uTAtCF,SAA2BV,GACRC,EAAAU,iBAAiBX,EAAEG,MAAOH,EAAES,UAAUL,MAAK,KACxDJ,EAAAS,UAAYT,EAAES,SAChBd,EAAUC,QAAQ,OAAM,GAE5B"}
@@ -1,2 +1,2 @@
1
- System.register(["./index-legacy-DC5-MYgp.js","./el-form-item-legacy-DNwgpXzk.js","./tip-legacy-Ci60OMi9.js","./refresh-legacy-Cv7RM_sm.js","./isEqual-legacy-DVLZyo95.js","./index-legacy-DiNZXmUs.js"],(function(e,a){"use strict";var t,l,n,r,s,i,o,d,c,u,g,p,m,v,f,x,y,h,w,k,M,b,z,C,E,_,j,O,T,B,I,N,S;return{setters:[e=>{t=e.a4,l=e.g,n=e.d,r=e.a,s=e.c,i=e.b,o=e.Z,d=e.r,c=e.O,u=e.o,g=e.j,p=e.w,m=e.k,v=e.H,f=e.a8,x=e.a9,y=e.e,h=e.F,w=e.C,k=e.t,M=e.D,b=e.S,z=e.E,C=e.I,E=e.x,_=e.v,j=e.p,O=e.f,T=e._},e=>{B=e.E,I=e.a},e=>{N=e.T},e=>{S=e.r},null,null],execute:function(){var a=document.createElement("style");a.textContent="@media screen and (max-width: 700px){.user[data-v-9638922a]{margin-top:40px!important}}.user[data-v-9638922a]{margin:0 auto}.panel[data-v-9638922a]{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}h1[data-v-9638922a]{margin:0;padding:10px 0;font-size:20px;font-weight:700;text-align:center;display:flex;justify-content:center;align-items:center}.service-list[data-v-9638922a]{display:flex;flex-wrap:wrap;justify-content:space-around}.service-item[data-v-9638922a]{display:flex;flex-direction:column;justify-content:center;align-items:center;margin:10px;min-width:120px}.service-item img[data-v-9638922a]{width:80px}.service-item p[data-v-9638922a]{text-align:center;padding-top:10px;font-size:14px}@keyframes rotate-9638922a{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading[data-v-9638922a]{margin-left:10px;animation:rotate-9638922a 1s linear infinite}.error-panel[data-v-9638922a]{padding:0 20px}.error-panel p[data-v-9638922a]{margin-bottom:10px}.error-panel p .error[data-v-9638922a]{color:red}.config-container[data-v-9638922a]{display:flex;justify-content:space-around;flex-wrap:wrap}.config-panel h2[data-v-9638922a]{text-align:center;font-size:16px;margin-bottom:10px}\n",document.head.appendChild(a);const D={getServiceOverview:function(){return t.get("/config/service/overview")},getServiceConfig:function(){return t.get("/config/service/config")},updateCfg:function(e){return t.put("/config/service/config",e)}},A=n({name:"CloseBold"}),L={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Y=[i("path",{fill:"currentColor",d:"M195.2 195.2a64 64 0 0 1 90.496 0L512 421.504 738.304 195.2a64 64 0 0 1 90.496 90.496L602.496 512 828.8 738.304a64 64 0 0 1-90.496 90.496L512 602.496 285.696 828.8a64 64 0 0 1-90.496-90.496L421.504 512 195.2 285.696a64 64 0 0 1 0-90.496z"},null,-1)];var q=l(A,[["render",function(e,a,t,l,n,i){return r(),s("svg",L,Y)}]]);const V=n({name:"Select"}),Q={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},U=[i("path",{fill:"currentColor",d:"M77.248 415.04a64 64 0 0 1 90.496 0l226.304 226.304L846.528 188.8a64 64 0 1 1 90.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 0 1 0-90.496z"},null,-1)];var F=l(V,[["render",function(e,a,t,l,n,i){return r(),s("svg",Q,U)}]]);const H=e=>(j("data-v-9638922a"),e=e(),O(),e),R={class:"user"},Z={class:"panel"},G=H((()=>i("span",null,"服务概况",-1))),J={class:"service-list"},K=["src","alt"],P={key:2},W={class:"error-panel"},X=H((()=>i("h1",null,"错误信息",-1))),$={class:"error"},ee=H((()=>i("h1",null,"服务相关配置",-1))),ae={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"},te={class:"config-container"},le={class:"flex",style:{flex:"1"}};e("default",T(n({__name:"index",setup(e){const a=o([{name:"MySQL",key:"mysql",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTAyMjIwNA==657359022204",status:!1,des:"存储用户数据",errMsg:""},{name:"七牛云",key:"qiniu",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODcyODM0Mg==657358728342",status:!1,des:"文件存储"},{name:"MongoDB",key:"mongodb",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTA4OTc3Nw==657359089777",status:!1,des:"用户数据与日志"},{name:"Redis",key:"redis",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODgyNzM1MA==657358827350",status:!1,des:"持久化缓存数据",error:"确保安装redis,且监听端口6379"},{name:"腾讯云",key:"tx",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTE1MzQzOQ==657359153439",status:!1,des:"短信服务"}]),t=d(!1),l=c((()=>a.filter((e=>e.errMsg))));function n(){t.value||(t.value=!0,D.getServiceOverview().then((e=>{const{data:l}=e;a.forEach((e=>{const{status:a,errMsg:t}=l[e.key];e.status=a,e.errMsg=t})),z.success("服务状态刷新完成"),t.value=!1})))}const j=d([]);return u((()=>{n(),D.getServiceConfig().then((e=>{e.data.forEach((e=>{e.data.forEach((e=>{e.disabled=!0}))})),j.value=e.data}))})),(e,o)=>{const d=C,c=E,u=_,O=B,T=I;return r(),s("div",R,[i("div",Z,[i("div",null,[i("h1",null,[G,g(d,{class:v({loading:t.value}),style:{cursor:"pointer","margin-left":"10px"},onClick:n},{default:p((()=>[g(m(S))])),_:1},8,["class"]),f(i("span",null,"数据加载中...",512),[[x,t.value]])]),g(N,null,{default:p((()=>[y("查看各个服务的运行情况")])),_:1}),i("div",J,[(r(!0),s(h,null,w(a,(e=>(r(),s("div",{key:e.key,class:"service-item"},[i("img",{src:e.logo,alt:e.name},null,8,K),i("p",null,[g(N,null,{default:p((()=>[y(k(e.des),1)])),_:2},1024)]),e.status?(r(),M(c,{key:0,type:"success",size:"small",icon:m(F),circle:""},null,8,["icon"])):(r(),M(c,{key:1,type:"danger",size:"small",icon:m(q),circle:""},null,8,["icon"])),!e.status&&e.error?(r(),s("p",P,[g(N,null,{default:p((()=>[y(k(e.error),1)])),_:2},1024)])):b("",!0)])))),128))])]),f(i("div",W,[X,(r(!0),s(h,null,w(l.value,(e=>(r(),s("p",{key:e.key},[i("strong",null,k(e.name)+":",1),i("span",$,k(e.errMsg),1)])))),128))],512),[[x,l.value.length]]),i("div",null,[ee,g(N,null,{default:p((()=>[y(" 在此面板,配置服务器运行相关参数 "),i("a",ae,[g(c,{type:"primary",link:""},{default:p((()=>[y("配置手册?")])),_:1})])])),_:1})]),i("div",te,[(r(!0),s(h,null,w(j.value,(e=>(r(),s("div",{key:e.title,class:"config-panel"},[i("h2",null,k(e.title),1),g(T,{"label-position":"right","label-width":"100px",style:{"max-width":"400px",margin:"0 auto"}},{default:p((()=>[(r(!0),s(h,null,w(e.data,(e=>(r(),M(O,{key:e.key,"label-width":"auto",label:e.label||e.key},{default:p((()=>[i("div",le,[g(u,{modelValue:e.value,"onUpdate:modelValue":a=>e.value=a,disabled:e.disabled},null,8,["modelValue","onUpdate:modelValue","disabled"]),e.disabled?(r(),M(c,{key:0,type:"primary",text:"",onClick:a=>e.disabled=!1},{default:p((()=>[y(" 更新 ")])),_:2},1032,["onClick"])):(r(),M(c,{key:1,type:"success",text:"",onClick:a=>{return t=e,void D.updateCfg(t).then((()=>{t.disabled=!0,z.success("更新成功"),n()}));var t}},{default:p((()=>[y(" 完成 ")])),_:2},1032,["onClick"]))])])),_:2},1032,["label"])))),128))])),_:2},1024)])))),128))])])])}}}),[["__scopeId","data-v-9638922a"]]))}}}));
2
- //# sourceMappingURL=index-legacy-BdJHr4yN.js.map
1
+ System.register(["./index-legacy-BLlk8iq-.js","./el-form-item-legacy-CvQy7syv.js","./tip-legacy-DiCk_qP1.js","./refresh-legacy-DOts-8Wc.js","./isEqual-legacy-BWUPR8bV.js","./index-legacy-Da4s_D85.js"],(function(e,a){"use strict";var t,l,n,r,s,i,o,d,c,u,g,p,m,v,f,x,y,h,w,k,M,b,z,C,E,_,j,O,T,B,I,N,S;return{setters:[e=>{t=e.a4,l=e.g,n=e.d,r=e.a,s=e.c,i=e.b,o=e.Z,d=e.r,c=e.O,u=e.o,g=e.j,p=e.w,m=e.k,v=e.H,f=e.a8,x=e.a9,y=e.e,h=e.F,w=e.C,k=e.t,M=e.D,b=e.S,z=e.E,C=e.I,E=e.x,_=e.v,j=e.p,O=e.f,T=e._},e=>{B=e.E,I=e.a},e=>{N=e.T},e=>{S=e.r},null,null],execute:function(){var a=document.createElement("style");a.textContent="@media screen and (max-width: 700px){.user[data-v-9638922a]{margin-top:40px!important}}.user[data-v-9638922a]{margin:0 auto}.panel[data-v-9638922a]{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}h1[data-v-9638922a]{margin:0;padding:10px 0;font-size:20px;font-weight:700;text-align:center;display:flex;justify-content:center;align-items:center}.service-list[data-v-9638922a]{display:flex;flex-wrap:wrap;justify-content:space-around}.service-item[data-v-9638922a]{display:flex;flex-direction:column;justify-content:center;align-items:center;margin:10px;min-width:120px}.service-item img[data-v-9638922a]{width:80px}.service-item p[data-v-9638922a]{text-align:center;padding-top:10px;font-size:14px}@keyframes rotate-9638922a{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading[data-v-9638922a]{margin-left:10px;animation:rotate-9638922a 1s linear infinite}.error-panel[data-v-9638922a]{padding:0 20px}.error-panel p[data-v-9638922a]{margin-bottom:10px}.error-panel p .error[data-v-9638922a]{color:red}.config-container[data-v-9638922a]{display:flex;justify-content:space-around;flex-wrap:wrap}.config-panel h2[data-v-9638922a]{text-align:center;font-size:16px;margin-bottom:10px}\n",document.head.appendChild(a);const D={getServiceOverview:function(){return t.get("/config/service/overview")},getServiceConfig:function(){return t.get("/config/service/config")},updateCfg:function(e){return t.put("/config/service/config",e)}},A=n({name:"CloseBold"}),L={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Y=[i("path",{fill:"currentColor",d:"M195.2 195.2a64 64 0 0 1 90.496 0L512 421.504 738.304 195.2a64 64 0 0 1 90.496 90.496L602.496 512 828.8 738.304a64 64 0 0 1-90.496 90.496L512 602.496 285.696 828.8a64 64 0 0 1-90.496-90.496L421.504 512 195.2 285.696a64 64 0 0 1 0-90.496z"},null,-1)];var q=l(A,[["render",function(e,a,t,l,n,i){return r(),s("svg",L,Y)}]]);const V=n({name:"Select"}),Q={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},U=[i("path",{fill:"currentColor",d:"M77.248 415.04a64 64 0 0 1 90.496 0l226.304 226.304L846.528 188.8a64 64 0 1 1 90.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 0 1 0-90.496z"},null,-1)];var F=l(V,[["render",function(e,a,t,l,n,i){return r(),s("svg",Q,U)}]]);const H=e=>(j("data-v-9638922a"),e=e(),O(),e),R={class:"user"},Z={class:"panel"},G=H((()=>i("span",null,"服务概况",-1))),J={class:"service-list"},K=["src","alt"],P={key:2},W={class:"error-panel"},X=H((()=>i("h1",null,"错误信息",-1))),$={class:"error"},ee=H((()=>i("h1",null,"服务相关配置",-1))),ae={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"},te={class:"config-container"},le={class:"flex",style:{flex:"1"}};e("default",T(n({__name:"index",setup(e){const a=o([{name:"MySQL",key:"mysql",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTAyMjIwNA==657359022204",status:!1,des:"存储用户数据",errMsg:""},{name:"七牛云",key:"qiniu",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODcyODM0Mg==657358728342",status:!1,des:"文件存储"},{name:"MongoDB",key:"mongodb",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTA4OTc3Nw==657359089777",status:!1,des:"用户数据与日志"},{name:"Redis",key:"redis",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODgyNzM1MA==657358827350",status:!1,des:"持久化缓存数据",error:"确保安装redis,且监听端口6379"},{name:"腾讯云",key:"tx",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTE1MzQzOQ==657359153439",status:!1,des:"短信服务"}]),t=d(!1),l=c((()=>a.filter((e=>e.errMsg))));function n(){t.value||(t.value=!0,D.getServiceOverview().then((e=>{const{data:l}=e;a.forEach((e=>{const{status:a,errMsg:t}=l[e.key];e.status=a,e.errMsg=t})),z.success("服务状态刷新完成"),t.value=!1})))}const j=d([]);return u((()=>{n(),D.getServiceConfig().then((e=>{e.data.forEach((e=>{e.data.forEach((e=>{e.disabled=!0}))})),j.value=e.data}))})),(e,o)=>{const d=C,c=E,u=_,O=B,T=I;return r(),s("div",R,[i("div",Z,[i("div",null,[i("h1",null,[G,g(d,{class:v({loading:t.value}),style:{cursor:"pointer","margin-left":"10px"},onClick:n},{default:p((()=>[g(m(S))])),_:1},8,["class"]),f(i("span",null,"数据加载中...",512),[[x,t.value]])]),g(N,null,{default:p((()=>[y("查看各个服务的运行情况")])),_:1}),i("div",J,[(r(!0),s(h,null,w(a,(e=>(r(),s("div",{key:e.key,class:"service-item"},[i("img",{src:e.logo,alt:e.name},null,8,K),i("p",null,[g(N,null,{default:p((()=>[y(k(e.des),1)])),_:2},1024)]),e.status?(r(),M(c,{key:0,type:"success",size:"small",icon:m(F),circle:""},null,8,["icon"])):(r(),M(c,{key:1,type:"danger",size:"small",icon:m(q),circle:""},null,8,["icon"])),!e.status&&e.error?(r(),s("p",P,[g(N,null,{default:p((()=>[y(k(e.error),1)])),_:2},1024)])):b("",!0)])))),128))])]),f(i("div",W,[X,(r(!0),s(h,null,w(l.value,(e=>(r(),s("p",{key:e.key},[i("strong",null,k(e.name)+":",1),i("span",$,k(e.errMsg),1)])))),128))],512),[[x,l.value.length]]),i("div",null,[ee,g(N,null,{default:p((()=>[y(" 在此面板,配置服务器运行相关参数 "),i("a",ae,[g(c,{type:"primary",link:""},{default:p((()=>[y("配置手册?")])),_:1})])])),_:1})]),i("div",te,[(r(!0),s(h,null,w(j.value,(e=>(r(),s("div",{key:e.title,class:"config-panel"},[i("h2",null,k(e.title),1),g(T,{"label-position":"right","label-width":"100px",style:{"max-width":"400px",margin:"0 auto"}},{default:p((()=>[(r(!0),s(h,null,w(e.data,(e=>(r(),M(O,{key:e.key,"label-width":"auto",label:e.label||e.key},{default:p((()=>[i("div",le,[g(u,{modelValue:e.value,"onUpdate:modelValue":a=>e.value=a,disabled:e.disabled},null,8,["modelValue","onUpdate:modelValue","disabled"]),e.disabled?(r(),M(c,{key:0,type:"primary",text:"",onClick:a=>e.disabled=!1},{default:p((()=>[y(" 更新 ")])),_:2},1032,["onClick"])):(r(),M(c,{key:1,type:"success",text:"",onClick:a=>{return t=e,void D.updateCfg(t).then((()=>{t.disabled=!0,z.success("更新成功"),n()}));var t}},{default:p((()=>[y(" 完成 ")])),_:2},1032,["onClick"]))])])),_:2},1032,["label"])))),128))])),_:2},1024)])))),128))])])])}}}),[["__scopeId","data-v-9638922a"]]))}}}));
2
+ //# sourceMappingURL=index-legacy-QHDmYAB8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-legacy-BdJHr4yN.js","sources":["../../src/apis/modules/config.ts","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/close-bold.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/select.mjs","../../src/pages/dashboard/config/index.vue"],"sourcesContent":["import ajax from '../ajax'\n\nfunction getServiceOverview(): ConfigServiceAPITypes.getServiceOverview {\n return ajax.get('/config/service/overview')\n}\n\nfunction getServiceConfig(): ConfigServiceAPITypes.getServiceConfig {\n return ajax.get('/config/service/config')\n}\n\nfunction updateCfg(data: ConfigServiceAPITypes.ServiceConfigItem) {\n return ajax.put('/config/service/config', data)\n}\n\nexport default {\n getServiceOverview,\n getServiceConfig,\n updateCfg\n}\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: \"CloseBold\"\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: \"M195.2 195.2a64 64 0 0 1 90.496 0L512 421.504 738.304 195.2a64 64 0 0 1 90.496 90.496L602.496 512 828.8 738.304a64 64 0 0 1-90.496 90.496L512 602.496 285.696 828.8a64 64 0 0 1-90.496-90.496L421.504 512 195.2 285.696a64 64 0 0 1 0-90.496z\"\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 closeBold = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { closeBold 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: \"Select\"\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: \"M77.248 415.04a64 64 0 0 1 90.496 0l226.304 226.304L846.528 188.8a64 64 0 1 1 90.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 0 1 0-90.496z\"\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 select = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { select as default };\n","<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport { computed, onMounted, reactive, ref } from 'vue'\nimport { CloseBold, Refresh, Select } from '@element-plus/icons-vue'\nimport Tip from '../tasks/components/infoPanel/tip.vue'\nimport { ConfigServiceAPI } from '@/apis'\n\nconst serviceList = reactive([\n {\n name: 'MySQL',\n key: 'mysql',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTAyMjIwNA==657359022204',\n status: false,\n des: '存储用户数据',\n errMsg: '',\n },\n {\n name: '七牛云',\n key: 'qiniu',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODcyODM0Mg==657358728342',\n status: false,\n des: '文件存储',\n },\n {\n name: 'MongoDB',\n key: 'mongodb',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTA4OTc3Nw==657359089777',\n status: false,\n des: '用户数据与日志',\n },\n {\n name: 'Redis',\n key: 'redis',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODgyNzM1MA==657358827350',\n status: false,\n des: '持久化缓存数据',\n error: '确保安装redis,且监听端口6379',\n },\n {\n name: '腾讯云',\n key: 'tx',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTE1MzQzOQ==657359153439',\n status: false,\n des: '短信服务',\n },\n])\n\nconst loading = ref(false)\nconst showErrorList = computed(() => serviceList.filter(item => item.errMsg))\nfunction refreshStatus() {\n if (loading.value)\n return\n loading.value = true\n ConfigServiceAPI.getServiceOverview().then((v) => {\n const { data } = v\n serviceList.forEach((item) => {\n const { status, errMsg } = data[item.key]\n item.status = status\n item.errMsg = errMsg\n })\n ElMessage.success('服务状态刷新完成')\n loading.value = false\n })\n}\n\nconst serverConfig = ref([])\nfunction getServiceConfig() {\n ConfigServiceAPI.getServiceConfig().then((v) => {\n // console.log(v.data)\n v.data.forEach((v) => {\n v.data.forEach((v) => {\n v.disabled = true\n })\n })\n serverConfig.value = v.data\n })\n}\nfunction updateCfg(item: ConfigServiceAPITypes.ServiceConfigItem) {\n ConfigServiceAPI.updateCfg(item).then(() => {\n item.disabled = true\n ElMessage.success('更新成功')\n refreshStatus()\n })\n}\nonMounted(() => {\n refreshStatus()\n getServiceConfig()\n})\n</script>\n\n<template>\n <div class=\"user\">\n <div class=\"panel\">\n <!-- 服务概况 -->\n <div>\n <h1>\n <span>服务概况</span>\n <el-icon\n :class=\"{\n loading,\n }\"\n style=\"cursor: pointer; margin-left: 10px\"\n @click=\"refreshStatus\"\n >\n <Refresh />\n </el-icon>\n <span v-show=\"loading\">数据加载中...</span>\n </h1>\n <Tip>查看各个服务的运行情况</Tip>\n <div class=\"service-list\">\n <div\n v-for=\"service in serviceList\"\n :key=\"service.key\"\n class=\"service-item\"\n >\n <img :src=\"service.logo\" :alt=\"service.name\">\n <!-- <p>{{ service.name }}</p> -->\n <p>\n <Tip>{{ service.des }}</Tip>\n </p>\n <el-button\n v-if=\"service.status\"\n type=\"success\"\n size=\"small\"\n :icon=\"Select\"\n circle\n />\n <el-button\n v-else\n type=\"danger\"\n size=\"small\"\n :icon=\"CloseBold\"\n circle\n />\n <p v-if=\"!service.status && service.error\">\n <Tip>{{ service.error }}</Tip>\n </p>\n </div>\n </div>\n </div>\n <div v-show=\"showErrorList.length\" class=\"error-panel\">\n <h1>错误信息</h1>\n <p v-for=\"err in showErrorList\" :key=\"err.key\">\n <strong>{{ err.name }}:</strong>\n <span class=\"error\">{{ err.errMsg }}</span>\n </p>\n </div>\n <div>\n <h1>服务相关配置</h1>\n <Tip>\n 在此面板,配置服务器运行相关参数\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 class=\"config-container\">\n <div\n v-for=\"serverItem in serverConfig\"\n :key=\"serverItem.title\"\n class=\"config-panel\"\n >\n <h2>\n {{ serverItem.title }}\n </h2>\n <el-form\n label-position=\"right\"\n label-width=\"100px\"\n style=\"max-width: 400px; margin: 0 auto\"\n >\n <el-form-item\n v-for=\"cfgItem in serverItem.data\"\n :key=\"cfgItem.key\"\n label-width=\"auto\"\n :label=\"cfgItem.label || cfgItem.key\"\n >\n <div class=\"flex\" style=\"flex: 1\">\n <el-input\n v-model=\"cfgItem.value\"\n :disabled=\"cfgItem.disabled\"\n />\n <el-button\n v-if=\"cfgItem.disabled\"\n type=\"primary\"\n text\n @click=\"cfgItem.disabled = false\"\n >\n 更新\n </el-button>\n <el-button\n v-else\n type=\"success\"\n text\n @click=\"updateCfg(cfgItem)\"\n >\n 完成\n </el-button>\n </div>\n </el-form-item>\n </el-form>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n}\n\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\nh1 {\n margin: 0;\n padding: 10px 0;\n font-size: 20px;\n font-weight: bold;\n text-align: center;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.service-list {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n}\n\n.service-item {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n margin: 10px;\n min-width: 120px;\n\n img {\n width: 80px;\n }\n\n p {\n text-align: center;\n padding-top: 10px;\n font-size: 14px;\n }\n}\n\n@keyframes rotate {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.loading {\n margin-left: 10px;\n animation: rotate 1s linear infinite;\n}\n\n.error-panel {\n padding: 0 20px;\n\n p {\n .error {\n color: red;\n }\n\n margin-bottom: 10px;\n }\n}\n\n.config-container {\n display: flex;\n justify-content: space-around;\n flex-wrap: wrap;\n}\n\n.config-panel {\n h2 {\n text-align: center;\n font-size: 16px;\n margin-bottom: 10px;\n }\n}\n</style>\n"],"names":["ConfigServiceAPI","getServiceOverview","ajax","get","getServiceConfig","updateCfg","data","put","_sfc_main","defineComponent","name","_hoisted_1","viewBox","xmlns","_hoisted_3","createElementVNode","fill","d","closeBold","_export_sfc","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","select","serviceList","reactive","key","logo","status","des","errMsg","error","loading","ref","showErrorList","computed","filter","item","refreshStatus","value","then","v","forEach","ElMessage","success","serverConfig","onMounted","disabled"],"mappings":"g5DAce,MAAAA,EAAA,CACbC,mBAbF,WACS,OAAAC,EAAKC,IAAI,2BAClB,EAYEC,iBAVF,WACS,OAAAF,EAAKC,IAAI,yBAClB,EASEE,UAPF,SAAmBC,GACV,OAAAJ,EAAKK,IAAI,yBAA0BD,EAC5C,GCTME,EAAYC,EAAgB,CAChCC,KAAM,cAEFC,EAAa,CACjBC,QAAS,gBACTC,MAAO,8BAMHC,EAAa,CAJgBC,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,iPACF,MAAO,IAOV,IAAIC,EAA4BC,EAAYX,EAAW,CAAC,CAAC,SAHzD,SAAqBY,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,OAAOC,IAAaC,EAAmB,MAAOhB,EAAYG,EAC5D,KChBA,MAAMN,EAAYC,EAAgB,CAChCC,KAAM,WAEFC,EAAa,CACjBC,QAAS,gBACTC,MAAO,8BAMHC,EAAa,CAJgBC,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,+IACF,MAAO,IAOV,IAAIW,EAAyBT,EAAYX,EAAW,CAAC,CAAC,SAHtD,SAAqBY,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,OAAOC,IAAaC,EAAmB,MAAOhB,EAAYG,EAC5D,igBCZA,MAAMe,EAAcC,EAAS,CAC3B,CACEpB,KAAM,QACNqB,IAAK,QACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,SACLC,OAAQ,IAEV,CACEzB,KAAM,MACNqB,IAAK,QACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,QAEP,CACExB,KAAM,UACNqB,IAAK,UACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,WAEP,CACExB,KAAM,QACNqB,IAAK,QACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,UACLE,MAAO,uBAET,CACE1B,KAAM,MACNqB,IAAK,KACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,UAIHG,EAAUC,GAAI,GACdC,EAAgBC,GAAS,IAAMX,EAAYY,QAAeC,GAAAA,EAAKP,WACrE,SAASQ,IACHN,EAAQO,QAEZP,EAAQO,OAAQ,EAChB5C,EAAiBC,qBAAqB4C,MAAMC,IACpC,MAAAxC,KAAEA,GAASwC,EACLjB,EAAAkB,SAASL,IACnB,MAAMT,OAAEA,EAAQE,OAAAA,GAAW7B,EAAKoC,EAAKX,KACrCW,EAAKT,OAASA,EACdS,EAAKP,OAASA,CAAA,IAEhBa,EAAUC,QAAQ,YAClBZ,EAAQO,OAAQ,CAAA,IAEpB,CAEM,MAAAM,EAAeZ,EAAI,WAmBzBa,GAAU,KACMR,IAlBd3C,EAAiBI,mBAAmByC,MAAMC,IAEtCA,EAAAxC,KAAKyC,SAASD,IACdA,EAAExC,KAAKyC,SAASD,IACdA,EAAEM,UAAW,CAAA,GACd,IAEHF,EAAaN,MAAQE,EAAExC,IAAA,GAYR,yxDATAoC,SACjB1C,EAAiBK,UAAUqC,GAAMG,MAAK,KACpCH,EAAKU,UAAW,EAChBJ,EAAUC,QAAQ,QACJN,GAAA,IAJlB,IAAmBD","x_google_ignoreList":[1,2]}
1
+ {"version":3,"file":"index-legacy-QHDmYAB8.js","sources":["../../src/apis/modules/config.ts","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/close-bold.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/select.mjs","../../src/pages/dashboard/config/index.vue"],"sourcesContent":["import ajax from '../ajax'\n\nfunction getServiceOverview(): ConfigServiceAPITypes.getServiceOverview {\n return ajax.get('/config/service/overview')\n}\n\nfunction getServiceConfig(): ConfigServiceAPITypes.getServiceConfig {\n return ajax.get('/config/service/config')\n}\n\nfunction updateCfg(data: ConfigServiceAPITypes.ServiceConfigItem) {\n return ajax.put('/config/service/config', data)\n}\n\nexport default {\n getServiceOverview,\n getServiceConfig,\n updateCfg\n}\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: \"CloseBold\"\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: \"M195.2 195.2a64 64 0 0 1 90.496 0L512 421.504 738.304 195.2a64 64 0 0 1 90.496 90.496L602.496 512 828.8 738.304a64 64 0 0 1-90.496 90.496L512 602.496 285.696 828.8a64 64 0 0 1-90.496-90.496L421.504 512 195.2 285.696a64 64 0 0 1 0-90.496z\"\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 closeBold = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { closeBold 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: \"Select\"\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: \"M77.248 415.04a64 64 0 0 1 90.496 0l226.304 226.304L846.528 188.8a64 64 0 1 1 90.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 0 1 0-90.496z\"\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 select = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { select as default };\n","<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport { computed, onMounted, reactive, ref } from 'vue'\nimport { CloseBold, Refresh, Select } from '@element-plus/icons-vue'\nimport Tip from '../tasks/components/infoPanel/tip.vue'\nimport { ConfigServiceAPI } from '@/apis'\n\nconst serviceList = reactive([\n {\n name: 'MySQL',\n key: 'mysql',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTAyMjIwNA==657359022204',\n status: false,\n des: '存储用户数据',\n errMsg: '',\n },\n {\n name: '七牛云',\n key: 'qiniu',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODcyODM0Mg==657358728342',\n status: false,\n des: '文件存储',\n },\n {\n name: 'MongoDB',\n key: 'mongodb',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTA4OTc3Nw==657359089777',\n status: false,\n des: '用户数据与日志',\n },\n {\n name: 'Redis',\n key: 'redis',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODgyNzM1MA==657358827350',\n status: false,\n des: '持久化缓存数据',\n error: '确保安装redis,且监听端口6379',\n },\n {\n name: '腾讯云',\n key: 'tx',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTE1MzQzOQ==657359153439',\n status: false,\n des: '短信服务',\n },\n])\n\nconst loading = ref(false)\nconst showErrorList = computed(() => serviceList.filter(item => item.errMsg))\nfunction refreshStatus() {\n if (loading.value)\n return\n loading.value = true\n ConfigServiceAPI.getServiceOverview().then((v) => {\n const { data } = v\n serviceList.forEach((item) => {\n const { status, errMsg } = data[item.key]\n item.status = status\n item.errMsg = errMsg\n })\n ElMessage.success('服务状态刷新完成')\n loading.value = false\n })\n}\n\nconst serverConfig = ref([])\nfunction getServiceConfig() {\n ConfigServiceAPI.getServiceConfig().then((v) => {\n // console.log(v.data)\n v.data.forEach((v) => {\n v.data.forEach((v) => {\n v.disabled = true\n })\n })\n serverConfig.value = v.data\n })\n}\nfunction updateCfg(item: ConfigServiceAPITypes.ServiceConfigItem) {\n ConfigServiceAPI.updateCfg(item).then(() => {\n item.disabled = true\n ElMessage.success('更新成功')\n refreshStatus()\n })\n}\nonMounted(() => {\n refreshStatus()\n getServiceConfig()\n})\n</script>\n\n<template>\n <div class=\"user\">\n <div class=\"panel\">\n <!-- 服务概况 -->\n <div>\n <h1>\n <span>服务概况</span>\n <el-icon\n :class=\"{\n loading,\n }\"\n style=\"cursor: pointer; margin-left: 10px\"\n @click=\"refreshStatus\"\n >\n <Refresh />\n </el-icon>\n <span v-show=\"loading\">数据加载中...</span>\n </h1>\n <Tip>查看各个服务的运行情况</Tip>\n <div class=\"service-list\">\n <div\n v-for=\"service in serviceList\"\n :key=\"service.key\"\n class=\"service-item\"\n >\n <img :src=\"service.logo\" :alt=\"service.name\">\n <!-- <p>{{ service.name }}</p> -->\n <p>\n <Tip>{{ service.des }}</Tip>\n </p>\n <el-button\n v-if=\"service.status\"\n type=\"success\"\n size=\"small\"\n :icon=\"Select\"\n circle\n />\n <el-button\n v-else\n type=\"danger\"\n size=\"small\"\n :icon=\"CloseBold\"\n circle\n />\n <p v-if=\"!service.status && service.error\">\n <Tip>{{ service.error }}</Tip>\n </p>\n </div>\n </div>\n </div>\n <div v-show=\"showErrorList.length\" class=\"error-panel\">\n <h1>错误信息</h1>\n <p v-for=\"err in showErrorList\" :key=\"err.key\">\n <strong>{{ err.name }}:</strong>\n <span class=\"error\">{{ err.errMsg }}</span>\n </p>\n </div>\n <div>\n <h1>服务相关配置</h1>\n <Tip>\n 在此面板,配置服务器运行相关参数\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 class=\"config-container\">\n <div\n v-for=\"serverItem in serverConfig\"\n :key=\"serverItem.title\"\n class=\"config-panel\"\n >\n <h2>\n {{ serverItem.title }}\n </h2>\n <el-form\n label-position=\"right\"\n label-width=\"100px\"\n style=\"max-width: 400px; margin: 0 auto\"\n >\n <el-form-item\n v-for=\"cfgItem in serverItem.data\"\n :key=\"cfgItem.key\"\n label-width=\"auto\"\n :label=\"cfgItem.label || cfgItem.key\"\n >\n <div class=\"flex\" style=\"flex: 1\">\n <el-input\n v-model=\"cfgItem.value\"\n :disabled=\"cfgItem.disabled\"\n />\n <el-button\n v-if=\"cfgItem.disabled\"\n type=\"primary\"\n text\n @click=\"cfgItem.disabled = false\"\n >\n 更新\n </el-button>\n <el-button\n v-else\n type=\"success\"\n text\n @click=\"updateCfg(cfgItem)\"\n >\n 完成\n </el-button>\n </div>\n </el-form-item>\n </el-form>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n}\n\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\nh1 {\n margin: 0;\n padding: 10px 0;\n font-size: 20px;\n font-weight: bold;\n text-align: center;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.service-list {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n}\n\n.service-item {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n margin: 10px;\n min-width: 120px;\n\n img {\n width: 80px;\n }\n\n p {\n text-align: center;\n padding-top: 10px;\n font-size: 14px;\n }\n}\n\n@keyframes rotate {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.loading {\n margin-left: 10px;\n animation: rotate 1s linear infinite;\n}\n\n.error-panel {\n padding: 0 20px;\n\n p {\n .error {\n color: red;\n }\n\n margin-bottom: 10px;\n }\n}\n\n.config-container {\n display: flex;\n justify-content: space-around;\n flex-wrap: wrap;\n}\n\n.config-panel {\n h2 {\n text-align: center;\n font-size: 16px;\n margin-bottom: 10px;\n }\n}\n</style>\n"],"names":["ConfigServiceAPI","getServiceOverview","ajax","get","getServiceConfig","updateCfg","data","put","_sfc_main","defineComponent","name","_hoisted_1","viewBox","xmlns","_hoisted_3","createElementVNode","fill","d","closeBold","_export_sfc","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","select","serviceList","reactive","key","logo","status","des","errMsg","error","loading","ref","showErrorList","computed","filter","item","refreshStatus","value","then","v","forEach","ElMessage","success","serverConfig","onMounted","disabled"],"mappings":"g5DAce,MAAAA,EAAA,CACbC,mBAbF,WACS,OAAAC,EAAKC,IAAI,2BAClB,EAYEC,iBAVF,WACS,OAAAF,EAAKC,IAAI,yBAClB,EASEE,UAPF,SAAmBC,GACV,OAAAJ,EAAKK,IAAI,yBAA0BD,EAC5C,GCTME,EAAYC,EAAgB,CAChCC,KAAM,cAEFC,EAAa,CACjBC,QAAS,gBACTC,MAAO,8BAMHC,EAAa,CAJgBC,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,iPACF,MAAO,IAOV,IAAIC,EAA4BC,EAAYX,EAAW,CAAC,CAAC,SAHzD,SAAqBY,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,OAAOC,IAAaC,EAAmB,MAAOhB,EAAYG,EAC5D,KChBA,MAAMN,EAAYC,EAAgB,CAChCC,KAAM,WAEFC,EAAa,CACjBC,QAAS,gBACTC,MAAO,8BAMHC,EAAa,CAJgBC,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,+IACF,MAAO,IAOV,IAAIW,EAAyBT,EAAYX,EAAW,CAAC,CAAC,SAHtD,SAAqBY,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,OAAOC,IAAaC,EAAmB,MAAOhB,EAAYG,EAC5D,igBCZA,MAAMe,EAAcC,EAAS,CAC3B,CACEpB,KAAM,QACNqB,IAAK,QACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,SACLC,OAAQ,IAEV,CACEzB,KAAM,MACNqB,IAAK,QACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,QAEP,CACExB,KAAM,UACNqB,IAAK,UACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,WAEP,CACExB,KAAM,QACNqB,IAAK,QACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,UACLE,MAAO,uBAET,CACE1B,KAAM,MACNqB,IAAK,KACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,UAIHG,EAAUC,GAAI,GACdC,EAAgBC,GAAS,IAAMX,EAAYY,QAAeC,GAAAA,EAAKP,WACrE,SAASQ,IACHN,EAAQO,QAEZP,EAAQO,OAAQ,EAChB5C,EAAiBC,qBAAqB4C,MAAMC,IACpC,MAAAxC,KAAEA,GAASwC,EACLjB,EAAAkB,SAASL,IACnB,MAAMT,OAAEA,EAAQE,OAAAA,GAAW7B,EAAKoC,EAAKX,KACrCW,EAAKT,OAASA,EACdS,EAAKP,OAASA,CAAA,IAEhBa,EAAUC,QAAQ,YAClBZ,EAAQO,OAAQ,CAAA,IAEpB,CAEM,MAAAM,EAAeZ,EAAI,WAmBzBa,GAAU,KACMR,IAlBd3C,EAAiBI,mBAAmByC,MAAMC,IAEtCA,EAAAxC,KAAKyC,SAASD,IACdA,EAAExC,KAAKyC,SAASD,IACdA,EAAEM,UAAW,CAAA,GACd,IAEHF,EAAaN,MAAQE,EAAExC,IAAA,GAYR,yxDATAoC,SACjB1C,EAAiBK,UAAUqC,GAAMG,MAAK,KACpCH,EAAKU,UAAW,EAChBJ,EAAUC,QAAQ,QACJN,GAAA,IAJlB,IAAmBD","x_google_ignoreList":[1,2]}
@@ -1,2 +1,2 @@
1
- System.register(["./index-legacy-DC5-MYgp.js"],(function(a,t){"use strict";var e,n,i,d,l,o,r,c,m,s,g,p,u,f,x,v,h,w,b;return{setters:[a=>{e=a.g,n=a.d,i=a.a,d=a.c,l=a.b,o=a.i,r=a.F,c=a.C,m=a.j,s=a.w,g=a.D,p=a.G,u=a.H,f=a.t,x=a.e,v=a.I,h=a.p,w=a.f,b=a._}],execute:function(){var t=document.createElement("style");t.textContent="h1[data-v-a235cdd8],h2[data-v-a235cdd8],h3[data-v-a235cdd8],h4[data-v-a235cdd8]{font-weight:500}.callme[data-v-a235cdd8]{background-image:linear-gradient(120deg,#a1c4fd,#c2e9fb);min-height:100vh}main[data-v-a235cdd8]{max-width:860px;margin:0 auto;padding:20px}main .panel[data-v-a235cdd8]{position:relative;margin:0 auto 20px;padding:16px 20px;width:100%;overflow:hidden;border-radius:.25rem;box-shadow:#eee;box-sizing:border-box;transition:all .3s;background-color:#fff}main h1[data-v-a235cdd8]{font-size:1.6rem;font-weight:500;margin-bottom:10px}main .baseinfo[data-v-a235cdd8]{color:#7f7f7f;font-size:1rem;display:flex;flex-wrap:wrap;margin-bottom:10px}main .baseinfo a[data-v-a235cdd8]{color:#7f7f7f;font-size:1rem;margin-left:10px}main .baseinfo .info-item[data-v-a235cdd8]{margin-right:20px}main hr[data-v-a235cdd8]{margin-bottom:10px}main .qq-wechat ul[data-v-a235cdd8]{list-style:none;display:flex;flex-wrap:wrap;margin-bottom:10px}main .qq-wechat ul li[data-v-a235cdd8]{text-align:center}main .qq-wechat ul li .title[data-v-a235cdd8]{font-weight:600}main .qq-wechat ul li .content[data-v-a235cdd8]{padding:.5em}main .qq-wechat ul li img[data-v-a235cdd8]{width:150px}main .description[data-v-a235cdd8]{color:#242424;font-size:15px;margin-bottom:10px;text-align:center}main .links[data-v-a235cdd8]{text-align:center}main .links a[data-v-a235cdd8]{color:#409eff}\n",document.head.appendChild(t);const z=n({name:"Promotion"}),q={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},T=[l("path",{fill:"currentColor",d:"m64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472 64 448zm256 512V657.024L512 768 320 960z"},null,-1)];var k=e(z,[["render",function(a,t,e,n,l,o){return i(),d("svg",q,T)}]]);const y=n({name:"UserFilled"}),M={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},_=[l("path",{fill:"currentColor",d:"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0zm544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z"},null,-1)];var N=e(y,[["render",function(a,t,e,n,l,o){return i(),d("svg",M,_)}]]);const E=a=>(h("data-v-a235cdd8"),a=a(),w(),a),I={class:"callme"},Q={class:"panel"},j=E((()=>l("h1",null,"联系作者",-1))),C={class:"baseinfo"},O=["href"],Y=E((()=>l("hr",null,null,-1))),A={class:"qq-wechat"},B={class:"title"},D={class:"content"},F=["src"],H=E((()=>l("div",{class:"description"},[l("p",null,"如遇无法解决的账号/使用问题,欢迎小窗联系我")],-1))),L={class:"links"};a("default",b(n({__name:"index",setup(a){const t=[{icon:N,text:"粥里有勺糖",href:"https://sugarat.top"},{icon:k,text:"engineerzjl@foxmail.com",href:"mailto:engineerzjl@foxmail.com"}],e=[{text:"微信",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTk3MTkyNA==619155971925"},{text:"公众号",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTYwNzQ5MQ==619155607491"},{text:"QQ",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NjQ5ODczOQ==619156498739"},{text:"交流群",img:"https://img.cdn.sugarat.top/mdImg/MTY0Nzc2MTE2MTE2NA==ep-group.png"}];return(a,n)=>{const h=v,w=o("router-link");return i(),d("div",I,[l("main",null,[l("div",Q,[j,l("div",C,[(i(),d(r,null,c(t,((a,t)=>l("span",{key:t,class:"info-item"},[m(h,null,{default:s((()=>[(i(),g(p(a.icon)))])),_:2},1024),l("i",{class:u(a.icon)},null,2),l("a",{target:"_blank",href:a.href},f(a.text),9,O)]))),64))]),Y,l("div",A,[l("ul",null,[(i(),d(r,null,c(e,((a,t)=>l("li",{key:t},[l("div",B,f(a.text),1),l("div",D,[l("img",{src:a.img},null,8,F)])]))),64))])]),H,l("div",L,[m(w,{to:"/"},{default:s((()=>[x("回到首页")])),_:1})])])])])}}}),[["__scopeId","data-v-a235cdd8"]]))}}}));
2
- //# sourceMappingURL=index-legacy-BZb5uhBF.js.map
1
+ System.register(["./index-legacy-BLlk8iq-.js"],(function(a,t){"use strict";var e,n,i,d,l,o,r,c,m,s,g,p,u,f,x,v,h,w,b;return{setters:[a=>{e=a.g,n=a.d,i=a.a,d=a.c,l=a.b,o=a.i,r=a.F,c=a.C,m=a.j,s=a.w,g=a.D,p=a.G,u=a.H,f=a.t,x=a.e,v=a.I,h=a.p,w=a.f,b=a._}],execute:function(){var t=document.createElement("style");t.textContent="h1[data-v-a235cdd8],h2[data-v-a235cdd8],h3[data-v-a235cdd8],h4[data-v-a235cdd8]{font-weight:500}.callme[data-v-a235cdd8]{background-image:linear-gradient(120deg,#a1c4fd,#c2e9fb);min-height:100vh}main[data-v-a235cdd8]{max-width:860px;margin:0 auto;padding:20px}main .panel[data-v-a235cdd8]{position:relative;margin:0 auto 20px;padding:16px 20px;width:100%;overflow:hidden;border-radius:.25rem;box-shadow:#eee;box-sizing:border-box;transition:all .3s;background-color:#fff}main h1[data-v-a235cdd8]{font-size:1.6rem;font-weight:500;margin-bottom:10px}main .baseinfo[data-v-a235cdd8]{color:#7f7f7f;font-size:1rem;display:flex;flex-wrap:wrap;margin-bottom:10px}main .baseinfo a[data-v-a235cdd8]{color:#7f7f7f;font-size:1rem;margin-left:10px}main .baseinfo .info-item[data-v-a235cdd8]{margin-right:20px}main hr[data-v-a235cdd8]{margin-bottom:10px}main .qq-wechat ul[data-v-a235cdd8]{list-style:none;display:flex;flex-wrap:wrap;margin-bottom:10px}main .qq-wechat ul li[data-v-a235cdd8]{text-align:center}main .qq-wechat ul li .title[data-v-a235cdd8]{font-weight:600}main .qq-wechat ul li .content[data-v-a235cdd8]{padding:.5em}main .qq-wechat ul li img[data-v-a235cdd8]{width:150px}main .description[data-v-a235cdd8]{color:#242424;font-size:15px;margin-bottom:10px;text-align:center}main .links[data-v-a235cdd8]{text-align:center}main .links a[data-v-a235cdd8]{color:#409eff}\n",document.head.appendChild(t);const z=n({name:"Promotion"}),q={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},T=[l("path",{fill:"currentColor",d:"m64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472 64 448zm256 512V657.024L512 768 320 960z"},null,-1)];var k=e(z,[["render",function(a,t,e,n,l,o){return i(),d("svg",q,T)}]]);const y=n({name:"UserFilled"}),M={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},_=[l("path",{fill:"currentColor",d:"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0zm544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z"},null,-1)];var N=e(y,[["render",function(a,t,e,n,l,o){return i(),d("svg",M,_)}]]);const E=a=>(h("data-v-a235cdd8"),a=a(),w(),a),I={class:"callme"},Q={class:"panel"},j=E((()=>l("h1",null,"联系作者",-1))),C={class:"baseinfo"},O=["href"],Y=E((()=>l("hr",null,null,-1))),A={class:"qq-wechat"},B={class:"title"},D={class:"content"},F=["src"],H=E((()=>l("div",{class:"description"},[l("p",null,"如遇无法解决的账号/使用问题,欢迎小窗联系我")],-1))),L={class:"links"};a("default",b(n({__name:"index",setup(a){const t=[{icon:N,text:"粥里有勺糖",href:"https://sugarat.top"},{icon:k,text:"engineerzjl@foxmail.com",href:"mailto:engineerzjl@foxmail.com"}],e=[{text:"微信",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTk3MTkyNA==619155971925"},{text:"公众号",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTYwNzQ5MQ==619155607491"},{text:"QQ",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NjQ5ODczOQ==619156498739"},{text:"交流群",img:"https://img.cdn.sugarat.top/mdImg/MTY0Nzc2MTE2MTE2NA==ep-group.png"}];return(a,n)=>{const h=v,w=o("router-link");return i(),d("div",I,[l("main",null,[l("div",Q,[j,l("div",C,[(i(),d(r,null,c(t,((a,t)=>l("span",{key:t,class:"info-item"},[m(h,null,{default:s((()=>[(i(),g(p(a.icon)))])),_:2},1024),l("i",{class:u(a.icon)},null,2),l("a",{target:"_blank",href:a.href},f(a.text),9,O)]))),64))]),Y,l("div",A,[l("ul",null,[(i(),d(r,null,c(e,((a,t)=>l("li",{key:t},[l("div",B,f(a.text),1),l("div",D,[l("img",{src:a.img},null,8,F)])]))),64))])]),H,l("div",L,[m(w,{to:"/"},{default:s((()=>[x("回到首页")])),_:1})])])])])}}}),[["__scopeId","data-v-a235cdd8"]]))}}}));
2
+ //# sourceMappingURL=index-legacy-_M1-0586.js.map