@sugarat/easypicker2-client 2.7.2 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/dist/assets/aria-legacy-B70JmEZA.js.map +1 -1
  2. package/dist/assets/aria-nkjrUMQ-.js.map +1 -1
  3. package/dist/assets/config-CnEgj70a.css +1 -0
  4. package/dist/assets/config-DR4Jo6x0.js +2 -0
  5. package/dist/assets/config-DR4Jo6x0.js.map +1 -0
  6. package/dist/assets/config-legacy-Frhed9Ou.js +2 -0
  7. package/dist/assets/config-legacy-Frhed9Ou.js.map +1 -0
  8. package/dist/assets/{data-analysis-B9140nBj.js → data-analysis-B8jQ_UrC.js} +2 -2
  9. package/dist/assets/data-analysis-B8jQ_UrC.js.map +1 -0
  10. package/dist/assets/{data-analysis-legacy-hCmX88pc.js → data-analysis-legacy-DjCCKm5W.js} +2 -2
  11. package/dist/assets/data-analysis-legacy-DjCCKm5W.js.map +1 -0
  12. package/dist/assets/{data-board-D3o_ZTM6.js → data-board-BGj6fORD.js} +2 -2
  13. package/dist/assets/data-board-BGj6fORD.js.map +1 -0
  14. package/dist/assets/{data-board-legacy-B3GeXOqc.js → data-board-legacy-D0aBtKuE.js} +2 -2
  15. package/dist/assets/data-board-legacy-D0aBtKuE.js.map +1 -0
  16. package/dist/assets/delete-filled-B3KAHg4C.js +2 -0
  17. package/dist/assets/delete-filled-B3KAHg4C.js.map +1 -0
  18. package/dist/assets/delete-filled-legacy-IwQ4U_-h.js +2 -0
  19. package/dist/assets/delete-filled-legacy-IwQ4U_-h.js.map +1 -0
  20. package/dist/assets/el-date-picker-2VHUEHRN.js +2 -0
  21. package/dist/assets/el-date-picker-2VHUEHRN.js.map +1 -0
  22. package/dist/assets/el-date-picker-legacy-6LjuTLvj.js +2 -0
  23. package/dist/assets/el-date-picker-legacy-6LjuTLvj.js.map +1 -0
  24. package/dist/assets/el-dropdown-item-C_iGHfk5.js +2 -0
  25. package/dist/assets/el-dropdown-item-C_iGHfk5.js.map +1 -0
  26. package/dist/assets/el-dropdown-item-legacy-Dd1a85un.js +2 -0
  27. package/dist/assets/el-dropdown-item-legacy-Dd1a85un.js.map +1 -0
  28. package/dist/assets/el-empty-C2yupmrg.css +1 -0
  29. package/dist/assets/el-empty-DM1AJWOT.js +2 -0
  30. package/dist/assets/el-empty-DM1AJWOT.js.map +1 -0
  31. package/dist/assets/el-empty-legacy-ZCYPIt_S.js +2 -0
  32. package/dist/assets/el-empty-legacy-ZCYPIt_S.js.map +1 -0
  33. package/dist/assets/el-input-number-CU7OpiYS.css +1 -0
  34. package/dist/assets/el-input-number-CgyrHNcj.js +2 -0
  35. package/dist/assets/el-input-number-CgyrHNcj.js.map +1 -0
  36. package/dist/assets/el-input-number-legacy-Bh6hK4h_.js +2 -0
  37. package/dist/assets/el-input-number-legacy-Bh6hK4h_.js.map +1 -0
  38. package/dist/assets/{el-loading-BzK_8zqi.js → el-loading-DqRoOOxo.js} +2 -2
  39. package/dist/assets/el-loading-DqRoOOxo.js.map +1 -0
  40. package/dist/assets/el-loading-legacy-CFNL_MoE.js +2 -0
  41. package/dist/assets/el-loading-legacy-CFNL_MoE.js.map +1 -0
  42. package/dist/assets/el-pagination-DVClk9XJ.js +2 -0
  43. package/dist/assets/el-pagination-DVClk9XJ.js.map +1 -0
  44. package/dist/assets/el-pagination-legacy-DwnhLxcB.js +2 -0
  45. package/dist/assets/el-pagination-legacy-DwnhLxcB.js.map +1 -0
  46. package/dist/assets/el-scrollbar-B_rEcSsQ.js +2 -0
  47. package/dist/assets/el-scrollbar-B_rEcSsQ.js.map +1 -0
  48. package/dist/assets/el-scrollbar-DFu7lMno.css +1 -0
  49. package/dist/assets/el-scrollbar-legacy-DVIFmrwk.js +2 -0
  50. package/dist/assets/el-scrollbar-legacy-DVIFmrwk.js.map +1 -0
  51. package/dist/assets/el-select-C5BnfITI.js +2 -0
  52. package/dist/assets/el-select-C5BnfITI.js.map +1 -0
  53. package/dist/assets/el-select-Dm4tLYz8.css +1 -0
  54. package/dist/assets/el-select-legacy-yKcmdaqh.js +2 -0
  55. package/dist/assets/el-select-legacy-yKcmdaqh.js.map +1 -0
  56. package/dist/assets/el-switch-BUjvki0a.js +2 -0
  57. package/dist/assets/el-switch-BUjvki0a.js.map +1 -0
  58. package/dist/assets/el-switch-legacy-CeDo4e_6.js +2 -0
  59. package/dist/assets/el-switch-legacy-CeDo4e_6.js.map +1 -0
  60. package/dist/assets/el-tab-pane-DKrBN9bA.js +2 -0
  61. package/dist/assets/el-tab-pane-DKrBN9bA.js.map +1 -0
  62. package/dist/assets/{el-tab-pane-legacy-CDSRCQdO.js → el-tab-pane-legacy-Ct9rYze8.js} +2 -2
  63. package/dist/assets/el-tab-pane-legacy-Ct9rYze8.js.map +1 -0
  64. package/dist/assets/{el-table-column-B2R1FOoB.js → el-table-column-cVnV9Qdi.js} +3 -3
  65. package/dist/assets/el-table-column-cVnV9Qdi.js.map +1 -0
  66. package/dist/assets/el-table-column-legacy-D2UbUqx0.js +24 -0
  67. package/dist/assets/el-table-column-legacy-D2UbUqx0.js.map +1 -0
  68. package/dist/assets/el-tag-Bgje3_SF.css +1 -0
  69. package/dist/assets/el-tag-CR8VXqUN.js +2 -0
  70. package/dist/assets/el-tag-CR8VXqUN.js.map +1 -0
  71. package/dist/assets/el-tag-legacy-diNMtlkE.js +2 -0
  72. package/dist/assets/el-tag-legacy-diNMtlkE.js.map +1 -0
  73. package/dist/assets/el-upload-B2Zxm6X5.css +1 -0
  74. package/dist/assets/el-upload-DRWHzvzW.js +2 -0
  75. package/dist/assets/el-upload-DRWHzvzW.js.map +1 -0
  76. package/dist/assets/el-upload-legacy-C7Y6h5AK.js +2 -0
  77. package/dist/assets/el-upload-legacy-C7Y6h5AK.js.map +1 -0
  78. package/dist/assets/index-8vfFTV-B.css +1 -0
  79. package/dist/assets/index-B2PHCM63.js +23 -0
  80. package/dist/assets/index-B2PHCM63.js.map +1 -0
  81. package/dist/assets/{index-C4H-Ptjt.css → index-BDkChTag.css} +1 -1
  82. package/dist/assets/index-BDsN2eKB.js +2 -0
  83. package/dist/assets/index-BDsN2eKB.js.map +1 -0
  84. package/dist/assets/index-BIKx9Xnn.js +2 -0
  85. package/dist/assets/index-BIKx9Xnn.js.map +1 -0
  86. package/dist/assets/index-BOFlLnYl.js +2 -0
  87. package/dist/assets/index-BOFlLnYl.js.map +1 -0
  88. package/dist/assets/index-BSMNPGJ5.css +1 -0
  89. package/dist/assets/index-BVp20vyj.css +1 -0
  90. package/dist/assets/index-BWExpeba.js +2 -0
  91. package/dist/assets/index-BWExpeba.js.map +1 -0
  92. package/dist/assets/index-B_7cUQcW.js +2 -0
  93. package/dist/assets/index-B_7cUQcW.js.map +1 -0
  94. package/dist/assets/index-BcJxc1ki.css +1 -0
  95. package/dist/assets/index-BgihxBmj.css +1 -0
  96. package/dist/assets/index-BjSgvXxj.css +1 -0
  97. package/dist/assets/index-BrOLxzFM.js.map +1 -1
  98. package/dist/assets/index-Bx68sw-c.js +2 -0
  99. package/dist/assets/index-Bx68sw-c.js.map +1 -0
  100. package/dist/assets/index-BxcfgZqH.js +2 -0
  101. package/dist/assets/index-BxcfgZqH.js.map +1 -0
  102. package/dist/assets/{index-ehQnwCE_.css → index-Bxvzu7zF.css} +1 -1
  103. package/dist/assets/index-BzQdnJY9.js +2 -0
  104. package/dist/assets/index-BzQdnJY9.js.map +1 -0
  105. package/dist/assets/index-CFpIdG49.css +1 -0
  106. package/dist/assets/index-CQjXznXy.js +2 -0
  107. package/dist/assets/index-CQjXznXy.js.map +1 -0
  108. package/dist/assets/index-CQud0ONT.css +1 -0
  109. package/dist/assets/index-CkyNID7q.css +1 -0
  110. package/dist/assets/index-CsfbnGni.css +1 -0
  111. package/dist/assets/index-CuGN8YoJ.js +2 -0
  112. package/dist/assets/index-CuGN8YoJ.js.map +1 -0
  113. package/dist/assets/index-D94P-51I.css +1 -0
  114. package/dist/assets/index-DLuR61Hw.css +1 -0
  115. package/dist/assets/index-DRKBIvKP.js +2 -0
  116. package/dist/assets/index-DRKBIvKP.js.map +1 -0
  117. package/dist/assets/index-DTRiT4Ia.js +2 -0
  118. package/dist/assets/index-DTRiT4Ia.js.map +1 -0
  119. package/dist/assets/index-DVSUcRaY.js +2 -0
  120. package/dist/assets/index-DVSUcRaY.js.map +1 -0
  121. package/dist/assets/index-DWOXO9QK.js +2 -0
  122. package/dist/assets/index-DWOXO9QK.js.map +1 -0
  123. package/dist/assets/index-DWi4klmy.js +2 -0
  124. package/dist/assets/index-DWi4klmy.js.map +1 -0
  125. package/dist/assets/index-DcUtl6Nq.css +1 -0
  126. package/dist/assets/index-Diw0ScGB.js +2 -0
  127. package/dist/assets/index-Diw0ScGB.js.map +1 -0
  128. package/dist/assets/index-Dk60yOI9.js +2 -0
  129. package/dist/assets/index-Dk60yOI9.js.map +1 -0
  130. package/dist/assets/index-FISBGs_l.css +1 -0
  131. package/dist/assets/index-LKJh-8oZ.css +1 -0
  132. package/dist/assets/index-MRZ7DYIX.js +2 -0
  133. package/dist/assets/index-MRZ7DYIX.js.map +1 -0
  134. package/dist/assets/index-Q8b92C8V.css +1 -0
  135. package/dist/assets/index-X0ZxbeZs.js +2 -0
  136. package/dist/assets/index-X0ZxbeZs.js.map +1 -0
  137. package/dist/assets/index-fz1mWSN_.js +2 -0
  138. package/dist/assets/index-fz1mWSN_.js.map +1 -0
  139. package/dist/assets/index-legacy-B5_Eg4NO.js +2 -0
  140. package/dist/assets/index-legacy-B5_Eg4NO.js.map +1 -0
  141. package/dist/assets/index-legacy-B71iq4Jg.js +2 -0
  142. package/dist/assets/index-legacy-B71iq4Jg.js.map +1 -0
  143. package/dist/assets/index-legacy-B7MgTgVj.js +2 -0
  144. package/dist/assets/index-legacy-B7MgTgVj.js.map +1 -0
  145. package/dist/assets/index-legacy-BLCMV_4m.js +2 -0
  146. package/dist/assets/index-legacy-BLCMV_4m.js.map +1 -0
  147. package/dist/assets/index-legacy-BLu3Mu8j.js +2 -0
  148. package/dist/assets/index-legacy-BLu3Mu8j.js.map +1 -0
  149. package/dist/assets/index-legacy-BSmhgZ-n.js +2 -0
  150. package/dist/assets/index-legacy-BSmhgZ-n.js.map +1 -0
  151. package/dist/assets/index-legacy-BTvagK_v.js +2 -0
  152. package/dist/assets/index-legacy-BTvagK_v.js.map +1 -0
  153. package/dist/assets/index-legacy-C-gHf8SN.js.map +1 -1
  154. package/dist/assets/index-legacy-C2bwTRoT.js +2 -0
  155. package/dist/assets/index-legacy-C2bwTRoT.js.map +1 -0
  156. package/dist/assets/index-legacy-CM7bG2hM.js +2 -0
  157. package/dist/assets/index-legacy-CM7bG2hM.js.map +1 -0
  158. package/dist/assets/index-legacy-CRa6h-UF.js +2 -0
  159. package/dist/assets/index-legacy-CRa6h-UF.js.map +1 -0
  160. package/dist/assets/index-legacy-CkcZHDIb.js +54 -0
  161. package/dist/assets/index-legacy-CkcZHDIb.js.map +1 -0
  162. package/dist/assets/index-legacy-Cp4ut576.js +2 -0
  163. package/dist/assets/index-legacy-Cp4ut576.js.map +1 -0
  164. package/dist/assets/index-legacy-CvW_2XYj.js +2 -0
  165. package/dist/assets/index-legacy-CvW_2XYj.js.map +1 -0
  166. package/dist/assets/index-legacy-CwUt8UiU.js +2 -0
  167. package/dist/assets/index-legacy-CwUt8UiU.js.map +1 -0
  168. package/dist/assets/index-legacy-CzoivdRy.js +2 -0
  169. package/dist/assets/index-legacy-CzoivdRy.js.map +1 -0
  170. package/dist/assets/index-legacy-D-mrc8ns.js +2 -0
  171. package/dist/assets/index-legacy-D-mrc8ns.js.map +1 -0
  172. package/dist/assets/index-legacy-D2hV5N51.js +2 -0
  173. package/dist/assets/index-legacy-D2hV5N51.js.map +1 -0
  174. package/dist/assets/index-legacy-D6Zqa9lw.js +2 -0
  175. package/dist/assets/index-legacy-D6Zqa9lw.js.map +1 -0
  176. package/dist/assets/index-legacy-DrA0B2e4.js +2 -0
  177. package/dist/assets/index-legacy-DrA0B2e4.js.map +1 -0
  178. package/dist/assets/index-legacy-DysxAWeo.js +2 -0
  179. package/dist/assets/index-legacy-DysxAWeo.js.map +1 -0
  180. package/dist/assets/index-legacy-TKeSN56S.js +16 -0
  181. package/dist/assets/index-legacy-TKeSN56S.js.map +1 -0
  182. package/dist/assets/index-legacy-erTEdV9o.js +2 -0
  183. package/dist/assets/index-legacy-erTEdV9o.js.map +1 -0
  184. package/dist/assets/index-legacy-pHu03Ans.js +2 -0
  185. package/dist/assets/index-legacy-pHu03Ans.js.map +1 -0
  186. package/dist/assets/index-legacy-w1mXHpIQ.js +2 -0
  187. package/dist/assets/index-legacy-w1mXHpIQ.js.map +1 -0
  188. package/dist/assets/index-mtfctTgx.css +1 -0
  189. package/dist/assets/index-sRZE1X3H.js +2 -0
  190. package/dist/assets/index-sRZE1X3H.js.map +1 -0
  191. package/dist/assets/index-uNaj-154.js +40 -0
  192. package/dist/assets/index-uNaj-154.js.map +1 -0
  193. package/dist/assets/index-vo_ird7L.js +2 -0
  194. package/dist/assets/index-vo_ird7L.js.map +1 -0
  195. package/dist/assets/linkDialog-Dida934t.css +1 -0
  196. package/dist/assets/linkDialog-legacy-0_j99SG_.js +2 -0
  197. package/dist/assets/linkDialog-legacy-0_j99SG_.js.map +1 -0
  198. package/dist/assets/linkDialog-vYdu1-Ul.js +2 -0
  199. package/dist/assets/linkDialog-vYdu1-Ul.js.map +1 -0
  200. package/dist/assets/other-BiIe9Z0L.js +2 -0
  201. package/dist/assets/other-BiIe9Z0L.js.map +1 -0
  202. package/dist/assets/other-legacy-Bfm4KL87.js +2 -0
  203. package/dist/assets/other-legacy-Bfm4KL87.js.map +1 -0
  204. package/dist/assets/polyfills-legacy-DqO_DCwg.js +1 -0
  205. package/dist/assets/{refresh-BA55HwKz.js → refresh-BnOQ8sKt.js} +2 -2
  206. package/dist/assets/refresh-BnOQ8sKt.js.map +1 -0
  207. package/dist/assets/{refresh-legacy-CpA05Fzr.js → refresh-legacy-D7NGa5wN.js} +2 -2
  208. package/dist/assets/refresh-legacy-D7NGa5wN.js.map +1 -0
  209. package/dist/assets/tip-CyB8omfw.js +2 -0
  210. package/dist/assets/tip-CyB8omfw.js.map +1 -0
  211. package/dist/assets/tip-legacy-DXZHLiK7.js +2 -0
  212. package/dist/assets/tip-legacy-DXZHLiK7.js.map +1 -0
  213. package/dist/assets/tipInfo-0FQ2unt4.js +2 -0
  214. package/dist/assets/tipInfo-0FQ2unt4.js.map +1 -0
  215. package/dist/assets/tipInfo-BPHCIpRm.css +1 -0
  216. package/dist/assets/tipInfo-legacy-cRqTuiqx.js +2 -0
  217. package/dist/assets/tipInfo-legacy-cRqTuiqx.js.map +1 -0
  218. package/dist/index.html +105 -128
  219. package/package.json +13 -35
  220. package/README.md +0 -86
  221. package/dist/assets/data-analysis-B9140nBj.js.map +0 -1
  222. package/dist/assets/data-analysis-legacy-hCmX88pc.js.map +0 -1
  223. package/dist/assets/data-board-D3o_ZTM6.js.map +0 -1
  224. package/dist/assets/data-board-legacy-B3GeXOqc.js.map +0 -1
  225. package/dist/assets/el-date-picker-DLwRZtue.js +0 -2
  226. package/dist/assets/el-date-picker-DLwRZtue.js.map +0 -1
  227. package/dist/assets/el-date-picker-legacy-D8g_iKhG.js +0 -2
  228. package/dist/assets/el-date-picker-legacy-D8g_iKhG.js.map +0 -1
  229. package/dist/assets/el-dialog-Cu2jwelC.css +0 -1
  230. package/dist/assets/el-dialog-Dq3XmL6w.js +0 -2
  231. package/dist/assets/el-dialog-Dq3XmL6w.js.map +0 -1
  232. package/dist/assets/el-dialog-legacy-DCFOVWEQ.js +0 -2
  233. package/dist/assets/el-dialog-legacy-DCFOVWEQ.js.map +0 -1
  234. package/dist/assets/el-dropdown-item-C3aOY1Nr.js +0 -2
  235. package/dist/assets/el-dropdown-item-C3aOY1Nr.js.map +0 -1
  236. package/dist/assets/el-dropdown-item-legacy-QQu1PUxO.js +0 -2
  237. package/dist/assets/el-dropdown-item-legacy-QQu1PUxO.js.map +0 -1
  238. package/dist/assets/el-form-item-Cc9R0dZ1.css +0 -1
  239. package/dist/assets/el-form-item-CtSEmj9z.js +0 -2
  240. package/dist/assets/el-form-item-CtSEmj9z.js.map +0 -1
  241. package/dist/assets/el-form-item-legacy-BS5eT84Y.js +0 -2
  242. package/dist/assets/el-form-item-legacy-BS5eT84Y.js.map +0 -1
  243. package/dist/assets/el-loading-BzK_8zqi.js.map +0 -1
  244. package/dist/assets/el-loading-legacy-DWfn3F3x.js +0 -2
  245. package/dist/assets/el-loading-legacy-DWfn3F3x.js.map +0 -1
  246. package/dist/assets/el-pagination-Qx_lnumK.js +0 -2
  247. package/dist/assets/el-pagination-Qx_lnumK.js.map +0 -1
  248. package/dist/assets/el-pagination-legacy-DqLvzT2t.js +0 -2
  249. package/dist/assets/el-pagination-legacy-DqLvzT2t.js.map +0 -1
  250. package/dist/assets/el-progress-CeLYmjYA.js +0 -2
  251. package/dist/assets/el-progress-CeLYmjYA.js.map +0 -1
  252. package/dist/assets/el-progress-legacy-CwFO38du.js +0 -2
  253. package/dist/assets/el-progress-legacy-CwFO38du.js.map +0 -1
  254. package/dist/assets/el-progress-njCW9-w4.css +0 -1
  255. package/dist/assets/el-select-BSO0hXRI.css +0 -1
  256. package/dist/assets/el-select-HG63LP3Z.js +0 -2
  257. package/dist/assets/el-select-HG63LP3Z.js.map +0 -1
  258. package/dist/assets/el-select-legacy-fKvGMZFT.js +0 -2
  259. package/dist/assets/el-select-legacy-fKvGMZFT.js.map +0 -1
  260. package/dist/assets/el-switch-FjmuXBNe.js +0 -2
  261. package/dist/assets/el-switch-FjmuXBNe.js.map +0 -1
  262. package/dist/assets/el-switch-legacy-CU4cCeO5.js +0 -2
  263. package/dist/assets/el-switch-legacy-CU4cCeO5.js.map +0 -1
  264. package/dist/assets/el-tab-pane-CuYcnzTM.js +0 -2
  265. package/dist/assets/el-tab-pane-CuYcnzTM.js.map +0 -1
  266. package/dist/assets/el-tab-pane-legacy-CDSRCQdO.js.map +0 -1
  267. package/dist/assets/el-table-column-B2R1FOoB.js.map +0 -1
  268. package/dist/assets/el-table-column-legacy-DDZdwCAr.js +0 -24
  269. package/dist/assets/el-table-column-legacy-DDZdwCAr.js.map +0 -1
  270. package/dist/assets/index-0SN-qZs5.js +0 -2
  271. package/dist/assets/index-0SN-qZs5.js.map +0 -1
  272. package/dist/assets/index-4ToTyeX6.css +0 -1
  273. package/dist/assets/index-5sS3uHi0.css +0 -1
  274. package/dist/assets/index-B5tZv3FB.css +0 -1
  275. package/dist/assets/index-BMhqAx1_.js +0 -2
  276. package/dist/assets/index-BMhqAx1_.js.map +0 -1
  277. package/dist/assets/index-BghihfR3.css +0 -1
  278. package/dist/assets/index-BjPgOd_H.js +0 -2
  279. package/dist/assets/index-BjPgOd_H.js.map +0 -1
  280. package/dist/assets/index-BjdYG4YE.js +0 -2
  281. package/dist/assets/index-BjdYG4YE.js.map +0 -1
  282. package/dist/assets/index-BkLqrfrW.js +0 -2
  283. package/dist/assets/index-BkLqrfrW.js.map +0 -1
  284. package/dist/assets/index-BvTJrWND.js +0 -2
  285. package/dist/assets/index-BvTJrWND.js.map +0 -1
  286. package/dist/assets/index-BxLy8VN3.js +0 -2
  287. package/dist/assets/index-BxLy8VN3.js.map +0 -1
  288. package/dist/assets/index-C0ZXXBCX.js +0 -40
  289. package/dist/assets/index-C0ZXXBCX.js.map +0 -1
  290. package/dist/assets/index-CbkKWoQA.css +0 -1
  291. package/dist/assets/index-CeWnhlkq.css +0 -1
  292. package/dist/assets/index-ChQZKkse.css +0 -1
  293. package/dist/assets/index-Cs-E_cyt.js +0 -2
  294. package/dist/assets/index-Cs-E_cyt.js.map +0 -1
  295. package/dist/assets/index-CsvxKrFP.js +0 -2
  296. package/dist/assets/index-CsvxKrFP.js.map +0 -1
  297. package/dist/assets/index-D2p3cWtM.css +0 -1
  298. package/dist/assets/index-DABL-KOd.js +0 -2
  299. package/dist/assets/index-DABL-KOd.js.map +0 -1
  300. package/dist/assets/index-DFVlBjXp.js +0 -2
  301. package/dist/assets/index-DFVlBjXp.js.map +0 -1
  302. package/dist/assets/index-DIlzTatU.js +0 -2
  303. package/dist/assets/index-DIlzTatU.js.map +0 -1
  304. package/dist/assets/index-DREZLSQi.js +0 -2
  305. package/dist/assets/index-DREZLSQi.js.map +0 -1
  306. package/dist/assets/index-DaSb9EV4.css +0 -1
  307. package/dist/assets/index-DclP3Kg-.js +0 -2
  308. package/dist/assets/index-DclP3Kg-.js.map +0 -1
  309. package/dist/assets/index-DlyJUJ0j.js +0 -2
  310. package/dist/assets/index-DlyJUJ0j.js.map +0 -1
  311. package/dist/assets/index-DnxF29eG.css +0 -1
  312. package/dist/assets/index-GC0X-O3Y.js +0 -2
  313. package/dist/assets/index-GC0X-O3Y.js.map +0 -1
  314. package/dist/assets/index-HzWmB96f.js +0 -2
  315. package/dist/assets/index-HzWmB96f.js.map +0 -1
  316. package/dist/assets/index-I0Y2y6h5.css +0 -1
  317. package/dist/assets/index-U2z5KAu0.js +0 -2
  318. package/dist/assets/index-U2z5KAu0.js.map +0 -1
  319. package/dist/assets/index-XNFQHmLL.css +0 -1
  320. package/dist/assets/index-dEAnfrhp.css +0 -1
  321. package/dist/assets/index-hhTdfxnD.css +0 -1
  322. package/dist/assets/index-legacy-B4IHsyj2.js +0 -42
  323. package/dist/assets/index-legacy-B4IHsyj2.js.map +0 -1
  324. package/dist/assets/index-legacy-BKxszgZW.js +0 -2
  325. package/dist/assets/index-legacy-BKxszgZW.js.map +0 -1
  326. package/dist/assets/index-legacy-BO3hAqA9.js +0 -2
  327. package/dist/assets/index-legacy-BO3hAqA9.js.map +0 -1
  328. package/dist/assets/index-legacy-BSXJnLod.js +0 -2
  329. package/dist/assets/index-legacy-BSXJnLod.js.map +0 -1
  330. package/dist/assets/index-legacy-BSv-V3Il.js +0 -2
  331. package/dist/assets/index-legacy-BSv-V3Il.js.map +0 -1
  332. package/dist/assets/index-legacy-CCqMKGqS.js +0 -2
  333. package/dist/assets/index-legacy-CCqMKGqS.js.map +0 -1
  334. package/dist/assets/index-legacy-CphqUnR0.js +0 -2
  335. package/dist/assets/index-legacy-CphqUnR0.js.map +0 -1
  336. package/dist/assets/index-legacy-D13WKbpb.js +0 -2
  337. package/dist/assets/index-legacy-D13WKbpb.js.map +0 -1
  338. package/dist/assets/index-legacy-D6IvG9Dt.js +0 -2
  339. package/dist/assets/index-legacy-D6IvG9Dt.js.map +0 -1
  340. package/dist/assets/index-legacy-DCezoU0z.js +0 -2
  341. package/dist/assets/index-legacy-DCezoU0z.js.map +0 -1
  342. package/dist/assets/index-legacy-DIwVyUHd.js +0 -2
  343. package/dist/assets/index-legacy-DIwVyUHd.js.map +0 -1
  344. package/dist/assets/index-legacy-DO2MADPO.js +0 -2
  345. package/dist/assets/index-legacy-DO2MADPO.js.map +0 -1
  346. package/dist/assets/index-legacy-DcFvM5kb.js +0 -2
  347. package/dist/assets/index-legacy-DcFvM5kb.js.map +0 -1
  348. package/dist/assets/index-legacy-Df_9F2Oo.js +0 -2
  349. package/dist/assets/index-legacy-Df_9F2Oo.js.map +0 -1
  350. package/dist/assets/index-legacy-Dhs-OKEx.js +0 -2
  351. package/dist/assets/index-legacy-Dhs-OKEx.js.map +0 -1
  352. package/dist/assets/index-legacy-DjWDlkzN.js +0 -2
  353. package/dist/assets/index-legacy-DjWDlkzN.js.map +0 -1
  354. package/dist/assets/index-legacy-DxQA53Qy.js +0 -2
  355. package/dist/assets/index-legacy-DxQA53Qy.js.map +0 -1
  356. package/dist/assets/index-legacy-GbLWntci.js +0 -2
  357. package/dist/assets/index-legacy-GbLWntci.js.map +0 -1
  358. package/dist/assets/index-legacy-I4qT4Thb.js +0 -2
  359. package/dist/assets/index-legacy-I4qT4Thb.js.map +0 -1
  360. package/dist/assets/index-legacy-quXi4jhF.js +0 -2
  361. package/dist/assets/index-legacy-quXi4jhF.js.map +0 -1
  362. package/dist/assets/index-tyMcidBi.js +0 -2
  363. package/dist/assets/index-tyMcidBi.js.map +0 -1
  364. package/dist/assets/index-ypHH_Z_A.css +0 -1
  365. package/dist/assets/isEqual-Cecwc716.js +0 -2
  366. package/dist/assets/isEqual-Cecwc716.js.map +0 -1
  367. package/dist/assets/isEqual-legacy-dqS7X02N.js +0 -2
  368. package/dist/assets/isEqual-legacy-dqS7X02N.js.map +0 -1
  369. package/dist/assets/other-legacy-DjiCmSH4.js +0 -2
  370. package/dist/assets/other-legacy-DjiCmSH4.js.map +0 -1
  371. package/dist/assets/other-yMAyytYx.js +0 -2
  372. package/dist/assets/other-yMAyytYx.js.map +0 -1
  373. package/dist/assets/polyfills-legacy-CPmsgIAF.js +0 -4
  374. package/dist/assets/refresh-BA55HwKz.js.map +0 -1
  375. package/dist/assets/refresh-legacy-CpA05Fzr.js.map +0 -1
  376. package/dist/assets/tip-CrU2GCmD.js +0 -2
  377. package/dist/assets/tip-CrU2GCmD.js.map +0 -1
  378. package/dist/assets/tip-legacy-B05oHh9-.js +0 -2
  379. package/dist/assets/tip-legacy-B05oHh9-.js.map +0 -1
  380. package/dist/assets/validator-Ca0QsRid.js +0 -2
  381. package/dist/assets/validator-Ca0QsRid.js.map +0 -1
  382. package/dist/assets/validator-legacy-D0GLFVMZ.js +0 -2
  383. package/dist/assets/validator-legacy-D0GLFVMZ.js.map +0 -1
  384. /package/dist/assets/{el-date-picker-NjWHL2Br.css → el-date-picker-C36c2CGO.css} +0 -0
  385. /package/dist/assets/{el-dropdown-item-CUgTpiu6.css → el-dropdown-item-5b6bMUQF.css} +0 -0
  386. /package/dist/assets/{el-loading-Uv12lkco.css → el-loading-BPl8mdQ3.css} +0 -0
  387. /package/dist/assets/{el-pagination-MvCAleW2.css → el-pagination-DMHBWKFj.css} +0 -0
  388. /package/dist/assets/{el-switch-D6dVIPlw.css → el-switch-CH9HekZJ.css} +0 -0
  389. /package/dist/assets/{el-tab-pane-kUw7IczA.css → el-tab-pane-CO1C5qCV.css} +0 -0
  390. /package/dist/assets/{el-table-column-DMXHP8sd.css → el-table-column-x3grTP_N.css} +0 -0
  391. /package/dist/assets/{tip-ovQu2XSt.css → tip-rRSL6nZ2.css} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DFVlBjXp.js","sources":["../../src/apis/modules/action.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/download.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/picture.mjs","../../src/composables/user.ts","../../src/pages/dashboard/files/index.vue"],"sourcesContent":["import ajax from '../ajax'\n\nfunction getDownloadActions(\n pageSize: number,\n pageIndex: number,\n extraIds: string[] = []\n): ActionApiTypes.getDownloadActions {\n return ajax.post('/action/download/list', {\n pageSize,\n pageIndex,\n extraIds\n })\n}\n\nexport default {\n getDownloadActions\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: \"Download\"\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: \"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64zm384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64v450.304z\"\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 download = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { download 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: \"Picture\"\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: \"M160 160v704h704V160H160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M384 288q64 0 64 64t-64 64q-64 0-64-64t64-64zM185.408 876.992l-50.816-38.912L350.72 556.032a96 96 0 0 1 134.592-17.856l1.856 1.472 122.88 99.136a32 32 0 0 0 44.992-4.864l216-269.888 49.92 39.936-215.808 269.824-.256.32a96 96 0 0 1-135.04 14.464l-122.88-99.072-.64-.512a32 32 0 0 0-44.8 5.952L185.408 876.992z\"\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 picture = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { picture as default };\n","import { computed, onMounted, reactive, ref } from 'vue'\nimport { UserApi } from '@/apis'\nimport { formatSize } from '@/utils/stringUtil'\n\nexport function useSpaceUsage() {\n const usageData = reactive({\n size: 0,\n usage: 0,\n limitUpload: false,\n wallet: '0:00',\n cost: '0.00',\n limitSpace: false,\n limitWallet: false,\n price: {\n storage: '0:00',\n download: '0:00',\n },\n })\n const usage = computed(() => usageData.usage)\n const size = computed(() => usageData.size)\n const percentage = computed(() => `${(usageData.usage / usageData.size * 100).toFixed(2)}%`)\n const walletPercentage = computed(() => `${(+usageData.cost / +usageData.wallet * 100).toFixed(2)}%`)\n const limitDownload = computed(() => usageData.limitUpload)\n const limitSpace = computed(() => usageData.limitSpace)\n const limitWallet = computed(() => usageData.limitWallet)\n const spaceUsageText = computed(() => {\n return `空间 ${percentage.value}: ${formatSize(usageData.usage)} / ${formatSize(usageData.size)}`\n })\n const moneyUsageText = computed(() => {\n return `钱包 ${walletPercentage.value}: ${usageData.cost} / ${usageData.wallet}¥`\n })\n const priceText = computed(() => {\n return `存储 ${usageData.price.storage}¥ + 下载 ${usageData.price.download}¥`\n })\n\n onMounted(() => {\n UserApi.usage().then((res) => {\n Object.assign(usageData, res.data)\n })\n })\n return {\n usage,\n size,\n percentage,\n limitDownload,\n limitSpace,\n limitWallet,\n spaceUsageText,\n moneyUsageText,\n priceText,\n }\n}\n","<script lang=\"ts\" setup>\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, onMounted, reactive, ref, watchEffect } from 'vue'\nimport { useStore } from 'vuex'\nimport LinkDialog from '@components/linkDialog.vue'\nimport {\n ArrowDown,\n DataAnalysis,\n Download,\n Picture,\n Refresh,\n Search,\n} from '@element-plus/icons-vue'\nimport { useRoute } from 'vue-router'\nimport Tip from '../tasks/components/infoPanel/tip.vue'\nimport {\n copyRes,\n formatDate,\n formatSize,\n getFileSuffix,\n normalizeFileName,\n parseInfo,\n} from '@/utils/stringUtil'\nimport { ActionServiceAPI, FileApi } from '@/apis'\nimport type { tableItem } from '@/utils/networkUtil'\nimport { downLoadByUrl, tableToExcel } from '@/utils/networkUtil'\nimport InfosForm from '@/components/InfosForm/index.vue'\nimport { ActionType, DownloadStatus, filenamePattern } from '@/constants'\nimport { useIsMobile, useSiteConfig, useSpaceUsage } from '@/composables'\n\nconst { value: siteConfig } = useSiteConfig()\nconst isOpenPraise = computed(() => siteConfig.value.openPraise)\n\nconst { limitDownload, spaceUsageText, moneyUsageText, limitSpace, limitWallet, priceText } = useSpaceUsage()\n\nconst $store = useStore()\nconst $route = useRoute()\nconst showLinkModel = ref(false)\nconst downloadUrl = ref('')\nconst showImg = ref(localStorage.getItem('ep-show-images') === 'true')\nconst showPeople = ref(true)\nconst showOriginName = ref(false)\nconst showHistoryPanel = ref(false)\nconst historyDownloadRecord = reactive({\n actions: [],\n pageSize: 3,\n /**\n * 总页数\n */\n pageCount: 0,\n pageCurrent: 1,\n pageTotal: 0,\n compressTask: [],\n})\n\nfunction loadActions() {\n // 已记录的task\n const compressTask: ActionApiTypes.DownloadActionData[] = JSON.parse(\n localStorage.getItem('ep_compress_task') || '[]',\n )\n historyDownloadRecord.compressTask = compressTask\n\n ActionServiceAPI.getDownloadActions(\n historyDownloadRecord.pageSize,\n historyDownloadRecord.pageCurrent,\n compressTask.map(v => v.id),\n ).then((v) => {\n const { actions, sum } = v.data\n const haveArchive = !!actions.find(\n v => v.status === DownloadStatus.ARCHIVE,\n )\n\n actions\n .filter(v => v.type === ActionType.Compress)\n .forEach((action) => {\n const existIndex = compressTask.findIndex(v => v.id === action.id)\n // 判断状态\n // SUCCESS\n // 存在,触发下载,从compressTask移除\n if (action.status === DownloadStatus.SUCCESS && existIndex !== -1) {\n // 展示弹窗\n downloadUrl.value = action.url\n showLinkModel.value = true\n downLoadByUrl(action.url)\n // ElMessage.success(`自动下载归档任务 ${action.tip}`)\n compressTask.splice(existIndex, 1)\n }\n // Archive\n // 不存在,push进compressTask\n if (action.status === DownloadStatus.ARCHIVE && existIndex === -1) {\n compressTask.push(action)\n }\n\n // ERROR\n if (action.status === DownloadStatus.FAIL && existIndex !== -1) {\n compressTask.splice(existIndex, 1)\n }\n })\n // TODO:之后根据反馈优化\n historyDownloadRecord.compressTask = compressTask\n localStorage.setItem('ep_compress_task', JSON.stringify(compressTask))\n if (haveArchive) {\n // 递归查询\n setTimeout(loadActions, 1000)\n }\n historyDownloadRecord.pageTotal = sum\n historyDownloadRecord.actions = actions\n historyDownloadRecord.pageCount = Math.ceil(\n sum / historyDownloadRecord.pageSize,\n )\n })\n}\nfunction handleHistoryActionPageChange(v) {\n historyDownloadRecord.pageCurrent = v\n loadActions()\n}\n\n// 分类相关\nconst categories = computed(() => $store.state.category.categoryList)\nconst selectCategory = ref('all')\n// 任务相关\nconst tasks = computed<TaskApiTypes.TaskItem[]>(\n () => $store.state.task.taskList,\n)\nconst selectTask = ref('all')\nconst filterTasks = computed(() => {\n if (selectCategory.value === 'all') {\n return tasks.value\n }\n // eslint-disable-next-line vue/no-side-effects-in-computed-properties\n selectTask.value = 'all'\n return tasks.value.filter(t => t.category === selectCategory.value)\n})\nconst selectTaskName = computed(() => {\n const t = filterTasks.value.find(v => v.key === selectTask.value)\n return t?.name\n})\n\nwatchEffect(() => {\n if (\n tasks.value.length\n && tasks.value.some(v => v.key === $route.query.task)\n ) {\n selectTask.value = `${$route.query.task}`\n }\n})\n\n// 记录导出\nfunction handleExportExcel(files: FileApiTypes.File[], filename?: string) {\n if (files.length === 0) {\n ElMessage.warning('表格中没有可导出的内容')\n return\n }\n const baseHeaders = ['提交时间', '任务', '文件名', '大小']\n if (showOriginName.value) {\n baseHeaders.push('原文件名')\n }\n if (showPeople.value) {\n baseHeaders.push('姓名')\n }\n const headers: (string | tableItem)[] = baseHeaders.map(v => ({\n value: v,\n row: 2,\n }))\n\n const infosHeader = files.reduce((pre, value) => {\n try {\n JSON.parse(value.info).forEach((i: any) => {\n if (!pre.includes(i.text)) {\n pre.push(i.text)\n }\n })\n }\n catch (error) {\n ElMessage.error({\n message: `数据异常${value.name},可联系平台管理员处理`,\n duration: 5000,\n })\n console.log(value)\n }\n return pre\n }, [])\n headers.push({\n value: '提交信息',\n col: infosHeader.length,\n })\n\n const body = files.map((v) => {\n const { date, task_name: taskName, name, size, people } = v\n try {\n const infoObj = JSON.parse(v.info).reduce((pre, v) => {\n pre[v.text] = `${v.value}`\n return pre\n }, {})\n const info = infosHeader.map(v => infoObj[v] ?? '-')\n const rows = [formatDate(new Date(date)), taskName, name, formatSize(size)]\n if (showOriginName.value) {\n rows.push(v.origin_name || '-')\n }\n if (showPeople.value) {\n rows.push(people || '-')\n }\n rows.push(...info)\n return rows\n }\n catch (error) {\n ElMessage.error({\n message: `数据异常${v.name},可联系平台管理员处理`,\n duration: 5000,\n })\n console.log(v)\n }\n return []\n }).filter(v => !!v.length)\n body.unshift(infosHeader)\n\n const _filename = filename || `数据导出_${formatDate(new Date(), 'yyyy年MM月日hh时mm分ss秒')}.xlsx`\n const resFileName = selectTaskName.value ? `${normalizeFileName(selectTaskName.value)}_${_filename}` : _filename\n\n tableToExcel(\n headers,\n body,\n resFileName,\n )\n ElMessage.success('导出成功')\n}\n\nconst isLoadingData = ref(false)\n// 提交的所有文件\nconst files: FileApiTypes.File[] = reactive([])\nfunction loadFiles() {\n isLoadingData.value = true\n files.splice(0, files.length)\n FileApi.getFileList().then((res) => {\n files.push(...res.data.files)\n isLoadingData.value = false\n })\n}\nconst multipleTable: any = ref()\nconst searchWord = ref('')\n\n// 用于展示的文件\n// 1. 过滤指定任务\nconst filterFiles = computed(() =>\n files\n .filter((f) => {\n if (selectCategory.value === 'no-task') {\n return tasks.value.every(t => t.key !== f.task_key)\n }\n if (filterTasks.value.length === 0) {\n return false\n }\n\n if (selectTask.value === 'all') {\n return filterTasks.value.find(t => t.key === f.task_key)\n }\n\n return selectTask.value === f.task_key\n // 2. 过滤关键词(精细优化)\n })\n .filter(t =>\n searchWord.value\n ? JSON.stringify([\n formatDate(new Date(t.date)),\n formatSize(t.size),\n t.people,\n t.name,\n t.task_name,\n\n t.info,\n ])\n .replace(/[:'\"{},[\\]]/g, '')\n .includes(searchWord.value)\n : true,\n ),\n)\n\n/**\n * 清空所有选项\n */\nfunction clearSelection() {\n multipleTable.value.clearSelection()\n}\n// 多选选中的项\nconst selectItem: any[] = reactive([])\nfunction handleSelectionChange(e: any) {\n selectItem.splice(0, selectItem.length)\n selectItem.push(...e)\n}\nconst batchDownStart = ref(false)\nfunction handleDropdownClick(e: string) {\n const ids: number[] = selectItem.map(v => v.id)\n switch (e) {\n case 'download':\n if (limitDownload.value) {\n ElMessage.error('下载功能已被限制,请联系管理员扩容,或自行删除历史无用文件')\n return\n }\n if (selectItem.length === 0) {\n ElMessage.warning('没有选中需要下载的内容')\n return\n }\n if (batchDownStart.value) {\n ElMessage.warning('已经有批量下载任务正在进行,请稍后再试')\n return\n }\n FileApi.batchDownload(\n ids,\n `批量下载_${formatDate(new Date(), 'yyyy年MM月日hh时mm分ss秒')}`,\n )\n .then(() => {\n loadActions()\n })\n .catch(() => {\n ElMessage.error('所选文件均已从服务器上移除')\n batchDownStart.value = false\n })\n ElMessage.info('开始归档选中的文件,请赖心等待')\n break\n case 'delete':\n if (selectItem.length === 0) {\n ElMessage.warning('没有选中需要删除的内容')\n return\n }\n ElMessageBox.confirm('删除后无法恢复,是否删除', '数据无价,请谨慎操作')\n .then(() => {\n FileApi.batchDel(ids).then(() => {\n files.splice(\n 0,\n files.length,\n ...files.filter(v => !ids.includes(v.id)),\n )\n ElMessage.success('删除成功')\n })\n })\n .catch(() => {\n ElMessage.info('取消')\n })\n break\n case 'excel':\n if (selectItem.length === 0) {\n ElMessage.warning('没有选中需要导出的内容')\n return\n }\n handleExportExcel(\n selectItem,\n `批量导出_${formatDate(new Date(), 'yyyy年MM月日hh时mm分ss秒')}.xlsx`,\n )\n ElMessage.success('导出成功')\n break\n default:\n break\n }\n clearSelection()\n}\nconst showInfoDialog = ref(false)\nconst infos: any[] = reactive([])\nfunction checkInfo(e: any) {\n infos.splice(0, infos.length)\n infos.push(...parseInfo(e.info))\n showInfoDialog.value = true\n}\n\nconst showRenameDialog = ref(false)\nconst renameForm = reactive({\n oldName: '',\n newName: '',\n suffix: '',\n id: -1,\n})\nfunction rewriteFilename(e: any) {\n const { id, name } = e\n const suffix = getFileSuffix(name)\n renameForm.oldName = name\n renameForm.suffix = suffix\n renameForm.id = id\n showRenameDialog.value = true\n}\n\nfunction handleSaveNewName() {\n // 文件名校验,不能有系统不支持的字符\n if (filenamePattern.test(renameForm.newName)) {\n ElMessage.error(`文件名不能包含${filenamePattern.source}等字符`)\n filenamePattern.lastIndex = 0\n return\n }\n FileApi.updateFilename(\n renameForm.id,\n `${renameForm.newName}${renameForm.suffix}`,\n )\n .then(() => {\n ElMessage.success('修改成功')\n const file = files.find(v => v.id === renameForm.id)\n file.name = `${renameForm.newName}${renameForm.suffix}`\n })\n .catch(() => {\n ElMessage.error('修改失败')\n })\n .finally(() => {\n showRenameDialog.value = false\n })\n}\n\nfunction downloadOne(e: any) {\n if (limitDownload.value) {\n ElMessage.error('下载功能已被限制,请联系管理员扩容,或自行删除历史无用文件')\n return\n }\n const { id, name } = e\n FileApi.getOneFileUrl(id)\n .then((res) => {\n const { link } = res.data\n showLinkModel.value = true\n downloadUrl.value = link\n downLoadByUrl(link, name)\n // 刷新\n loadActions()\n // 刷新次数\n setTimeout(() => {\n refreshFilesDownloadCount()\n }, 1000)\n })\n .catch(() => {\n ElMessage.error('文件已从服务器上移除')\n })\n}\nfunction handleDelete(e: any) {\n const idx = files.findIndex(v => v === e)\n ElMessageBox.confirm('确认删除此文件吗?', '数据无价,请谨慎操作')\n .then(() => {\n FileApi.deleteOneFile(e.id).then(() => {\n ElMessage.success('删除成功')\n files.splice(idx, 1)\n })\n })\n .catch(() => {\n ElMessage.info('取消删除')\n })\n}\n\n// 分页\nconst pageSize = ref(6)\nfunction handleSizeChange(v: number) {\n pageSize.value = v\n}\nconst pageCount = computed(() => {\n const t = Math.ceil(filterFiles.value.length / pageSize.value)\n return t\n})\n// 当前页\nconst pageCurrent = ref(1)\nconst showFilterFiles = computed(() => {\n const start = (pageCurrent.value - 1) * pageSize.value\n const end = pageCurrent.value * pageSize.value\n return filterFiles.value.slice(start, end)\n})\n\nconst filterFileSize = computed(() =>\n formatSize(filterFiles.value.reduce((acc, cur) => acc + cur.size, 0)),\n)\nconst fileListSize = computed(() =>\n formatSize(files.reduce((acc, cur) => acc + cur.size, 0)),\n)\nfunction handlePageChange(idx: number) {\n pageCurrent.value = idx\n}\n\n// 刷新文件列表\n\nfunction handleRefresh() {\n ElMessage.success({\n message: '刷新成功',\n })\n loadFiles()\n}\nfunction handleDownloadTask() {\n const ids: number[] = files\n .filter(f => f.task_key === selectTask.value)\n .map(v => v.id)\n if (ids.length === 0) {\n ElMessage.warning('该任务中没有数据')\n return\n }\n if (batchDownStart.value) {\n ElMessage.warning('已经有批量下载任务正在进行,请稍后再试')\n return\n }\n batchDownStart.value = true\n FileApi.batchDownload(ids, selectTaskName.value)\n .then(() => {\n loadActions()\n })\n .catch(() => {\n ElMessage.error('所选任务中的文件均已从服务器上移除')\n })\n .finally(() => {\n setTimeout(() => {\n batchDownStart.value = false\n }, 1000)\n })\n ElMessage.info('开始归档选中的文件,请赖心等待')\n}\n\nconst previewData = reactive<\n { cover: string, preview: string, name: string, date: string, id: number }[]\n>([])\n\nconst viewImageFilename = ref('')\n\nconst previewImages = computed(() => {\n // if (!sortProps.prop) {\n return previewData.map(v => v.preview)\n // }\n // TODO:下面代码暂不生效,后续再支持表格排序场景\n // const temp = [...previewData]\n // temp.sort((a, b) => {\n // if (sortProps.order === 'descending') {\n // return a[sortProps.prop] - b[sortProps.prop]\n // }\n // return b[sortProps.prop] - a[sortProps.prop]\n // })\n // return temp.map((v) => v.preview)\n})\n\nfunction handleSwitchImage(idx: number) {\n viewImageFilename.value = showFilterFiles.value[idx].name\n}\n\nlet fetching = false\nfunction refreshFilesCover() {\n const ids = showFilterFiles.value.map(v => v.id)\n if (ids.length === 0 || fetching) {\n return\n }\n fetching = true\n FileApi.checkImageFilePreviewUrl(ids).then((r) => {\n fetching = false\n const { data } = r\n if (data.length === 0 || data.length !== showFilterFiles.value.length) {\n return\n }\n previewData.splice(0, previewData.length)\n showFilterFiles.value.forEach((v, idx) => {\n const { cover, preview } = data[idx]\n v.cover = cover\n previewData.push({ cover, preview, name: v.name, date: v.date, id: v.id })\n })\n })\n}\n\nfunction refreshFilesDownloadCount() {\n const ids = showFilterFiles.value.map(v => v.id)\n if (ids.length === 0 || fetching) {\n return\n }\n\n FileApi.fileDownloadCount(ids).then((r) => {\n const { data } = r\n if (data.length === 0 || data.length !== showFilterFiles.value.length) {\n return\n }\n\n showFilterFiles.value.forEach((v, idx) => {\n v.downloadCount = data[idx]\n })\n })\n}\nwatchEffect(() => {\n if (searchWord.value || pageCurrent.value || pageSize.value) {\n refreshFilesDownloadCount()\n return\n }\n refreshFilesDownloadCount()\n})\n\nwatchEffect(() => {\n window.localStorage.setItem('ep-show-images', `${showImg.value}`)\n if (!showImg.value) {\n return\n }\n if (searchWord.value || pageCurrent.value || pageSize.value) {\n refreshFilesCover()\n return\n }\n refreshFilesCover()\n})\n\nonMounted(() => {\n loadFiles()\n loadActions()\n $store.dispatch('category/getCategory')\n $store.dispatch('task/getTask')\n})\n\nconst isMobile = useIsMobile()\nfunction handleShowDetail() {\n ElMessageBox.confirm(priceText.value)\n}\n</script>\n\n<template>\n <div class=\"files\">\n <!-- 筛选框 -->\n <div class=\"panel header\">\n <div class=\"item\">\n <span class=\"label\">分类</span>\n <!-- TODO: multiple 多选待评估 -->\n <el-select v-model=\"selectCategory\" size=\"default\" filterable placeholder=\"请选择\">\n <el-option label=\"全部\" value=\"all\" />\n <el-option label=\"默认\" value=\"default\" />\n <el-option v-for=\"item in categories\" :key=\"item.k\" :label=\"item.name\" :value=\"item.k\" />\n <el-option label=\"无关联任务\" value=\"no-task\" />\n <el-option label=\"♻️回收站♻️\" value=\"trash\" />\n </el-select>\n </div>\n <div class=\"item\">\n <span class=\"label\">任务</span>\n <el-select v-model=\"selectTask\" size=\"default\" filterable placeholder=\"请选择\">\n <el-option label=\"全部\" value=\"all\" />\n <el-option v-for=\"item in filterTasks\" :key=\"item.key\" :label=\"item.name\" :value=\"item.key\" />\n </el-select>\n </div>\n <div class=\"item\">\n <el-button\n :loading=\"batchDownStart\" :disabled=\"selectTask === 'all'\" type=\"primary\" size=\"default\"\n :icon=\"Download\" @click=\"handleDownloadTask\"\n >\n 下载任务中的文件\n </el-button>\n </div>\n <div class=\"item\">\n <el-input v-model=\"searchWord\" size=\"default\" clearable placeholder=\"请输入要检索的内容\" :prefix-icon=\"Search\" />\n </div>\n </div>\n <div class=\"panel\">\n <div class=\"export-btns flex fac\">\n <el-dropdown trigger=\"click\" @command=\"handleDropdownClick\">\n <el-button type=\"primary\" size=\"default\">\n 批量操作<el-icon class=\"el-icon--right\">\n <ArrowDown />\n </el-icon>\n </el-button>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item :disabled=\"selectItem.length === 0\" command=\"download\">\n 下载\n </el-dropdown-item>\n <el-dropdown-item :disabled=\"selectItem.length === 0\" command=\"delete\">\n 删除\n </el-dropdown-item>\n <el-dropdown-item :disabled=\"selectItem.length === 0\" command=\"excel\">\n 导出记录\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n <div v-show=\"false\">\n <!-- 迷惑的解决bug的手段 -->\n <el-dropdown trigger=\"click\" @command=\"handleDropdownClick\">\n <el-button type=\"primary\" :disabled=\"selectItem.length === 0\" size=\"default\">\n 批量操作\n <el-icon>\n <ArrowDown />\n </el-icon>\n </el-button>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item command=\"download\">\n 下载\n </el-dropdown-item>\n <el-dropdown-item command=\"delete\">\n 删除\n </el-dropdown-item>\n <el-dropdown-item command=\"excel\">\n 导出记录\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n <el-button size=\"default\" :icon=\"Refresh\" @click=\"handleRefresh\">\n 刷新\n </el-button>\n <el-button\n title=\"导出表格中所有的数据\" type=\"success\" size=\"default\" :icon=\"DataAnalysis\" :disabled=\"showFilterFiles.length === 0\" @click=\"() => {\n handleExportExcel(\n filterFiles,\n `筛选数据导出_${formatDate(\n new Date(),\n 'yyyy年MM月日hh时mm分ss秒',\n )}.xlsx`,\n )\n }\n \"\n >\n 导出记录\n </el-button>\n <div class=\"control-item\">\n 显示图片\n <el-switch\n v-model=\"showImg\" inline-prompt active-color=\"#13ce66\" inactive-color=\"#ff4949\" active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n 展示原文件名\n <el-switch\n v-model=\"showOriginName\" inline-prompt active-color=\"#13ce66\" inactive-color=\"#ff4949\"\n active-text=\"是\" inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n 显示提交人姓名\n <el-switch\n v-model=\"showPeople\" inline-prompt active-color=\"#13ce66\" inactive-color=\"#ff4949\" active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n ⏰ 查看下载历史\n <el-switch\n v-model=\"showHistoryPanel\" style=\"\n --el-switch-on-color: #13ce66;\n --el-switch-off-color: #ff4949;\n \"\n />\n </div>\n </div>\n </div>\n <div v-show=\"historyDownloadRecord.compressTask.length && !showHistoryPanel\" class=\"panel\">\n <Tip style=\"font-size: 16px\">\n 正在进行归档的任务\n {{ historyDownloadRecord.compressTask.length }}个\n </Tip>\n <Tip>详细归档记录点击右上角 “⏰查看下载历史”</Tip>\n <p\n v-for=\"(record, idx) in historyDownloadRecord.compressTask\" :key=\"record.id\" class=\"tc\"\n style=\"margin-top: 10px\"\n >\n {{ idx + 1 }}. {{ record.tip }}\n <span v-loading=\"true\" element-loading-text=\"...\" style=\"--el-loading-spinner-size: 20px\" />\n </p>\n </div>\n <div v-show=\"showHistoryPanel\" class=\"panel\">\n <Tip style=\"font-size: 16px\">\n ”❤️下面展示历史的下载记录与归档任务完成情况❤️“\n </Tip>\n <Tip>”再也不需要在页面停留等待归档完成“</Tip>\n <div>\n <el-table\n ref=\"multipleTable\" v-loading=\"isLoadingData\" element-loading-text=\"Loading...\" tooltip-effect=\"dark\"\n multiple-table stripe border :default-sort=\"{ prop: 'date', order: 'descending' }\"\n :max-height=\"666\" :data=\"historyDownloadRecord.actions\" style=\"width: 100%\"\n @selection-change=\"handleSelectionChange\"\n >\n <el-table-column prop=\"date\" label=\"触发时间\" width=\"200\">\n <template #default=\"scope\">\n {{\n formatDate(new Date(scope.row.date))\n }}\n </template>\n </el-table-column>\n <el-table-column prop=\"tip\" label=\"文件名\" />\n <el-table-column prop=\"type\" label=\"类型\">\n <template #default=\"scope\">\n <el-link v-if=\"scope.row.type === ActionType.Compress\" type=\"primary\">\n 归档下载\n </el-link>\n <el-link v-else type=\"default\">\n 普通下载\n </el-link>\n </template>\n </el-table-column>\n <el-table-column prop=\"size\" label=\"大小\" width=\"100\">\n <template #default=\"scope\">\n <span v-if=\"scope.row.status === DownloadStatus.ARCHIVE\"><el-link type=\"danger\">归档中...</el-link></span>\n <span v-else-if=\"scope.row.status !== DownloadStatus.FAIL\">{{\n !scope.row.size ? '未知大小' : formatSize(scope.row.size)\n }}</span>\n <span v-if=\"scope.row.status === DownloadStatus.FAIL\"><el-link type=\"danger\">归档失败</el-link></span>\n </template>\n </el-table-column>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"140\">\n <template #default=\"scope\">\n <div v-if=\"scope.row.status === DownloadStatus.ARCHIVE\" v-loading=\"true\">\n 归档中...\n </div>\n <div v-if=\"scope.row.status === DownloadStatus.EXPIRED\">\n 链接已失效\n </div>\n <div v-if=\"scope.row.status === DownloadStatus.FAIL\">\n 联系开发者,提供错误信息:{{ scope.row.error }}\n </div>\n <div v-if=\"scope.row.status === DownloadStatus.SUCCESS\">\n <el-link type=\"primary\" @click=\"downLoadByUrl(scope.row.url)\">\n 下载\n </el-link>\n <el-link type=\"success\" style=\"margin-left: 10px\" @click=\"copyRes(scope.row.url)\">\n 链接\n </el-link>\n <el-link\n type=\"warning\" style=\"margin-left: 10px\" @click=\"() => {\n showLinkModel = true\n downloadUrl = scope.row.url\n }\n \"\n >\n 二维码\n </el-link>\n </div>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"flex fc\">\n <el-pagination\n small :current-page=\"historyDownloadRecord.pageCurrent\"\n :page-count=\"historyDownloadRecord.pageCount\" :total=\"historyDownloadRecord.pageTotal\"\n layout=\"total, prev, pager, next\" @current-change=\"handleHistoryActionPageChange\"\n />\n </div>\n </div>\n </div>\n <!-- 主体内容 -->\n <div class=\"panel\">\n <Tip>全部文件大小:{{ fileListSize }},当前任务大小:{{ filterFileSize }}</Tip>\n <Tip v-if=\"siteConfig.limitSpace\">\n <span :class=\"{ warnColor: limitSpace }\">{{ spaceUsageText }}</span>\n </Tip>\n <Tip v-if=\"siteConfig.limitWallet\">\n 统计时间:{{ formatDate(siteConfig.moneyStartDay, 'yyyy-MM-dd') }} - 至今\n </Tip>\n <Tip v-if=\"siteConfig.limitWallet\">\n <span :class=\"{ warnColor: limitWallet }\">{{ moneyUsageText }}</span>\n <strong class=\"money-detail\" @click=\"handleShowDetail\">\n <span>查看详细</span>\n </strong>\n </Tip>\n <Tip v-if=\"limitDownload\">\n <h2 style=\"color:#f56c6c\">\n 空间超限将无法上传/下载文件,如需要使用,请联系管理员扩容,或自行删除无关文件\n </h2>\n </Tip>\n <Tip>\n <strong>如果你觉得应用不错,<a\n style=\"color: #409eff\" href=\"http://docs.ep.sugarat.top/praise/index.html\" target=\"_blank\"\n rel=\"noopener noreferrer\"\n >给他发电⚡</a></strong>\n <strong v-if=\"isOpenPraise\">,其它问题<a\n style=\"color: #409eff\"\n href=\"https://docs.ep.sugarat.top/author.html#%E8%81%94%E7%B3%BB%E4%BD%9C%E8%80%85\" target=\"_blank\"\n rel=\"noopener noreferrer\"\n >联系作者🔗</a></strong>\n <!-- <Praise>\n <el-button style=\"margin:0 0 2px;\" size=\"small\" type=\"primary\" text>Go!Go!❓</el-button>\n </Praise> -->\n </Tip>\n <Tip v-if=\"isOpenPraise\">\n <h3 style=\"color: #f56c6c\">\n 由于部分用户用量较大,小站无法承担这笔开销,限制每个账户为 2GB 可用空间,2¥的默认余额\n </h3>\n <h3>\n <span style=\"color: #f56c6c\">你可以通过<a\n style=\"color: #409eff\"\n href=\"https://docs.ep.sugarat.top/author.html#%E8%81%94%E7%B3%BB%E4%BD%9C%E8%80%85\" target=\"_blank\"\n rel=\"noopener noreferrer\"\n > 联系作者进行赞助⚡ </a>调整空间 和 可用余额</span>,\n <strong>\n <a\n style=\"color: #409eff\" href=\"https://docs.ep.sugarat.top/\" target=\"_blank\"\n rel=\"noopener noreferrer\"\n >也可以选择自己搭建💡\n </a>\n </strong>\n </h3>\n </Tip>\n <el-table\n ref=\"multipleTable\" v-loading=\"isLoadingData\" element-loading-text=\"Loading...\" tooltip-effect=\"dark\"\n multiple-table stripe border :max-height=\"666\" :data=\"showFilterFiles\"\n style=\"width: 100%\" @selection-change=\"handleSelectionChange\"\n >\n <el-table-column type=\"selection\" width=\"55\" />\n <el-table-column prop=\"date\" label=\"提交时间\" width=\"160\">\n <template #default=\"scope\">\n {{\n formatDate(new Date(scope.row.date))\n }}\n </template>\n </el-table-column>\n <el-table-column prop=\"task_name\" label=\"任务\" width=\"150\" />\n <el-table-column prop=\"name\" label=\"文件名\" width=\"200\" />\n <template v-if=\"showOriginName\">\n <el-table-column prop=\"origin_name\" label=\"原文件名\" width=\"200\">\n <template #default=\"scope\">\n {{ scope.row.origin_name || '-' }}\n </template>\n </el-table-column>\n </template>\n <el-table-column prop=\"size\" label=\"大小\">\n <template #default=\"scope\">\n {{\n scope.row.size === 0 ? '未知大小' : formatSize(scope.row.size)\n }}\n </template>\n </el-table-column>\n <el-table-column prop=\"downloadCount\" width=\"90\" label=\"下载次数\" />\n <template v-if=\"showImg\">\n <el-table-column label=\"缩略图\" width=\"120\">\n <template #default=\"scope\">\n <el-image\n preview-teleported :preview-src-list=\"previewImages\" :initial-index=\"scope.$index\"\n lazy style=\"width: 100px; height: 100px\" :src=\"scope.row.cover\" fit=\"cover\"\n @switch=\"handleSwitchImage\" @click=\"handleSwitchImage(scope.$index)\"\n >\n <template #viewer>\n <div class=\"imageDes\">\n {{ viewImageFilename }}\n </div>\n </template>\n <template #placeholder>\n <div class=\"imageLoading\">\n Loading...\n </div>\n </template>\n <template #error>\n <div class=\"imageLoading\">\n 不支持\n <el-icon>\n <Picture />\n </el-icon>\n </div>\n </template>\n </el-image>\n </template>\n </el-table-column>\n </template>\n <template v-if=\"showPeople\">\n <el-table-column prop=\"people\" width=\"100\" label=\"限制名单\">\n <template #default=\"scope\">\n {{ scope.row.people || '-' }}\n </template>\n </el-table-column>\n </template>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"140\">\n <template #default=\"scope\">\n <div class=\"text-btns\">\n <el-button type=\"primary\" text size=\"small\" @click=\"checkInfo(scope.row)\">\n 查看提交信息\n </el-button>\n <el-button type=\"primary\" text size=\"small\" @click=\"rewriteFilename(scope.row)\">\n 修改文件名\n </el-button>\n <el-button type=\"primary\" text size=\"small\" @click=\"downloadOne(scope.row)\">\n 下载\n </el-button>\n <el-button type=\"primary\" text size=\"small\" @click=\"handleDelete(scope.row)\">\n 删除\n </el-button>\n </div>\n </template>\n </el-table-column>\n </el-table>\n </div>\n <!-- 分页 -->\n <div class=\"panel flex fc\">\n <el-pagination\n :current-page=\"pageCurrent\" background :page-count=\"pageCount\" :page-sizes=\"[6, 10, 50, 100]\"\n :page-size=\"pageSize\" :total=\"filterFiles.length\" layout=\"total, sizes, prev, pager, next, jumper\" @current-change=\"handlePageChange\"\n @size-change=\"handleSizeChange\"\n />\n </div>\n <!-- 信息弹窗 -->\n <el-dialog v-model=\"showInfoDialog\" :fullscreen=\"isMobile\" title=\"提交填写的信息\">\n <InfosForm :infos=\"infos\" :disabled=\"true\" />\n </el-dialog>\n <LinkDialog v-model:value=\"showLinkModel\" title=\"下载链接\" :link=\"downloadUrl\" />\n <el-dialog v-model=\"showRenameDialog\" :fullscreen=\"isMobile\" title=\"修改文件名\">\n <div>\n <el-form label-width=\"100px\" :model=\"renameForm\">\n <el-form-item label=\"原文件名\" prop=\"newName\">\n <el-input v-model=\"renameForm.oldName\" disabled />\n </el-form-item>\n <el-form-item label=\"新文件名\" prop=\"newName\">\n <el-input v-model=\"renameForm.newName\" placeholder=\"请输入新文件名\">\n <template #append>\n {{ renameForm.suffix }}\n </template>\n </el-input>\n </el-form-item>\n <el-form-item>\n <el-button type=\"success\" @click=\"handleSaveNewName\">\n 保存\n </el-button>\n <el-button @click=\"showRenameDialog = false\">\n 取消\n </el-button>\n </el-form-item>\n </el-form>\n </div>\n </el-dialog>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.warnColor {\n color: #f56c6c;\n}\n.files {\n max-width: 1024px;\n margin: 0 auto;\n padding-bottom: 2em;\n}\n\n@media screen and (max-width: 700px) {\n .files {\n margin-top: 70px;\n }\n\n .text-btns {\n display: flex;\n flex-direction: column;\n\n :deep(.el-button) {\n margin-left: 0px;\n margin-bottom: 0px;\n }\n }\n\n .header {\n justify-content: center;\n }\n\n .export-btns {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n }\n}\n\n.panel {\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n z-index: 1;\n\n .label {\n font-size: 12px;\n margin-right: 10px;\n }\n}\n\n.header {\n display: flex;\n flex-wrap: wrap;\n\n .item {\n margin-right: 10px;\n margin-bottom: 10px;\n }\n}\n\n.el-button {\n margin-left: 10px;\n margin-bottom: 10px;\n}\n\n.control-item {\n margin-left: 10px;\n margin-bottom: 10px;\n font-size: 14px;\n}\n\n.imageLoading {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n\n.imageDes {\n position: absolute;\n bottom: 80px;\n color: #fff;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.progress-list {\n margin-top: 10px;\n\n .progress-item {\n margin-bottom: 10px;\n\n .progress {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 6px;\n\n .el-progress--line {\n min-width: 200px;\n width: 260px;\n }\n\n .el-button {\n margin: 0 6px;\n }\n }\n\n .des {\n font-size: 12px;\n\n .filename {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n word-break: keep-all;\n margin-right: 10px;\n }\n\n .mimeType {\n width: 60px;\n color: #409eff;\n }\n }\n\n text-align: center;\n }\n}\n.money-detail {\n color: #409eff;\n cursor: pointer;\n}\n</style>\n"],"names":["getDownloadActions","pageSize","pageIndex","extraIds","ajax","ActionServiceAPI","_sfc_main","defineComponent","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","download","_export_sfc","_hoisted_4","picture","useSpaceUsage","usageData","reactive","usage","computed","size","percentage","walletPercentage","limitDownload","limitSpace","limitWallet","spaceUsageText","formatSize","moneyUsageText","priceText","onMounted","UserApi","res","siteConfig","useSiteConfig","isOpenPraise","$store","useStore","$route","useRoute","showLinkModel","ref","downloadUrl","showImg","showPeople","showOriginName","showHistoryPanel","historyDownloadRecord","loadActions","compressTask","v","actions","sum","haveArchive","DownloadStatus","ActionType","action","existIndex","downLoadByUrl","handleHistoryActionPageChange","categories","selectCategory","tasks","selectTask","filterTasks","t","selectTaskName","watchEffect","handleExportExcel","files","filename","ElMessage","baseHeaders","headers","infosHeader","pre","value","i","error","body","date","taskName","name","people","infoObj","info","_a","rows","formatDate","_filename","resFileName","normalizeFileName","tableToExcel","isLoadingData","loadFiles","FileApi","multipleTable","searchWord","filterFiles","f","clearSelection","selectItem","handleSelectionChange","batchDownStart","handleDropdownClick","ids","ElMessageBox","showInfoDialog","infos","checkInfo","parseInfo","showRenameDialog","renameForm","rewriteFilename","id","suffix","getFileSuffix","handleSaveNewName","filenamePattern","file","downloadOne","link","refreshFilesDownloadCount","handleDelete","idx","handleSizeChange","pageCount","pageCurrent","showFilterFiles","start","end","filterFileSize","acc","cur","fileListSize","handlePageChange","handleRefresh","handleDownloadTask","previewData","viewImageFilename","previewImages","handleSwitchImage","fetching","refreshFilesCover","r","data","cover","preview","isMobile","useIsMobile","handleShowDetail"],"mappings":"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","x_google_ignoreList":[1,2]}
@@ -1,2 +0,0 @@
1
- import{g as Se,d as ge,a as f,c as z,b as a,r as p,Z as O,bt as ne,O as ve,o as ol,a6 as al,j as t,w as o,F as se,C as ue,D as S,k as u,bu as _e,e as s,t as i,s as T,a5 as k,S as H,H as nl,a0 as V,E as d,q as $e,P as xe,v as sl,x as ul,p as il,f as rl,z as dl,A as cl,_ as ml}from"./index-C0ZXXBCX.js";import{E as pl,a as fl}from"./el-form-item-CtSEmj9z.js";import{d as he,E as vl}from"./el-date-picker-DLwRZtue.js";import{u as _l,E as hl}from"./el-dialog-Dq3XmL6w.js";import{s as wl,E as gl}from"./el-pagination-Qx_lnumK.js";import{E as bl,a as Cl}from"./el-select-HG63LP3Z.js";import{E as Vl,a as yl}from"./el-table-column-B2R1FOoB.js";import{T as kl}from"./tip-CrU2GCmD.js";import{U as I}from"./index-BrOLxzFM.js";import{r as zl}from"./refresh-BA55HwKz.js";import{E as we}from"./index-HzWmB96f.js";import"./isEqual-Cecwc716.js";import"./index-BxLy8VN3.js";import"./validator-Ca0QsRid.js";import"./aria-nkjrUMQ-.js";const $l=ge({name:"Message"}),xl={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Sl=a("path",{fill:"currentColor",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"},null,-1),Tl=a("path",{fill:"currentColor",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"},null,-1),Ul=[Sl,Tl];function El(U,X,E,y,$,M){return f(),z("svg",xl,Ul)}var Ml=Se($l,[["render",El]]);const Pl=ge({name:"Money"}),Ll={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Bl=a("path",{fill:"currentColor",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"},null,-1),Dl=a("path",{fill:"currentColor",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"},null,-1),Fl=a("path",{fill:"currentColor",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"},null,-1),Rl=[Bl,Dl,Fl];function Ol(U,X,E,y,$,M){return f(),z("svg",Ll,Rl)}var Hl=Se(Pl,[["render",Ol]]);const h=U=>(il("data-v-5fb60ef4"),U=U(),rl(),U),Il={class:"user"},Al={class:"panel"},Nl={class:"p10 log-filter"},Wl={class:"item"},jl=h(()=>a("span",{class:"label"},"状态",-1)),Zl={class:"item"},ql=h(()=>a("span",{class:"label"},"排序",-1)),Gl={class:"item"},Jl={class:"item"},Kl={class:"item"},Ql=h(()=>a("br",null,null,-1)),Xl=h(()=>a("br",null,null,-1)),Yl=h(()=>a("br",null,null,-1)),et=h(()=>a("br",null,null,-1)),lt=h(()=>a("br",null,null,-1)),tt=h(()=>a("br",null,null,-1)),ot=h(()=>a("br",null,null,-1)),at=h(()=>a("br",null,null,-1)),nt=h(()=>a("br",null,null,-1)),st=h(()=>a("br",null,null,-1)),ut=h(()=>a("br",null,null,-1)),it={class:"text-btn-list"},rt={class:"flex fc p10"},dt={class:"tc"},ct={class:"dialog-footer"},mt={class:"tc"},pt={key:0,style:{"margin-top":"10px"},class:"tc"},ft={class:"dialog-footer"},vt={class:"tc"},_t={class:"dialog-footer"},ht={class:"tc"},wt={class:"dialog-footer"},gt={class:"tc"},bt={class:"dialog-footer"},Ct={class:"tc"},Vt={class:"dialog-footer"},yt=ge({__name:"index",setup(U){const X=p(""),E=O([]);function y(){V.getUserList().then(n=>{E.splice(0,E.length,...n.data.list),X.value=n.data.sumCost,d.success("列表数据刷新成功")})}const $=ne("userStatusType",I.NORMAL),M=p(""),be=O([{label:"正常",type:I.NORMAL},{label:"冻结",type:I.FREEZE},{label:"封禁",type:I.BAN}]),x=ne("userListSortType","id"),Te=[{label:"ID",value:"id"},{label:"累计上传数量",value:"fileCount"},{label:"累计占用空间",value:"originFileSize"},{label:"OSS文件数量",value:"ossCount"},{label:"最后登录时间",value:"lastLoginTime"},{label:"登录次数",value:"login_count"},{label:"容量大小",value:"size"},{label:"占用空间",value:"usage"},{label:"限制使用",value:"limitUpload"},{label:"下载次数",value:"downloadCount"},{label:"累计下载大小",value:"downloadSize"},{label:"累计费用",value:"cost"}],Y=ne("userListSortOrder","desc"),Ue=[{label:"升序",value:"asc"},{label:"降序",value:"desc"}],ie=ve(()=>{const n=[...E];return n.sort((l,c)=>Y.value==="asc"?l[x.value]-c[x.value]:c[x.value]-l[x.value]),n.filter(l=>l.status===$.value).filter(l=>{const{id:c,account:w,phone:g,joinTime:r,loginCount:C,loginTime:ce,openTime:me}=l;return M.value.length===0?!0:"".concat(c," ").concat(w," ").concat(g," ").concat(ce," ").concat(T(me)," ").concat(T(C)," ").concat(T(r)).includes(M.value)})}),A=ne("userListPageSize",10);function Ee(n){A.value=n}const Me=ve(()=>Math.ceil(ie.value.length/A.value)),ee=p(1),Pe=ve(()=>{const n=(ee.value-1)*A.value,l=ee.value*A.value;return ie.value.slice(n,l)});function Le(n){ee.value=n}const N=p(!1),_=p(0),P=p(I.NORMAL),Be=be,W=p("");function De(n,l,c){_.value=n,P.value=l,W.value=c,N.value=!0}function Fe(){const n=E.find(l=>l.id===_.value);if(P.value===I.FREEZE){if(!W.value){d.warning("请设置解冻时间");return}n.openTime=W.value}else n.openTime="";n.status=P.value,N.value=!1,V.updateUserStatus(n.id,n.status,n.openTime).then(()=>{d.success("修改成功")})}const j=p(!1),b=O({pwd1:"",pwd2:""});function Re(n){_.value=n,j.value=!0,b.pwd1="",b.pwd2=""}function Oe(){return dl.test(b.pwd1)?b.pwd1!==b.pwd2?(d.warning("两次输入的密码不一致"),!1):!0:(d.warning("密码格式不正确(6-16位 支持字母/数字/下划线)"),!1)}function He(){Oe()&&we.confirm("此操作不可逆,请谨慎操作","确定要重置用户的密码吗?",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{V.resetPassword(_.value,b.pwd1).then(()=>{d.success("重置成功"),j.value=!1})}).catch(()=>{})}const Z=p(!1),L=O({size:2});function Ie(n,l){_.value=n,L.size=l,Z.value=!0}async function Ae(){if(+L.size<0){d.warning("空间上限不能小于0");return}await V.resetLimitSpace(_.value,+L.size),d.success("修改成功"),Z.value=!1,y()}const q=p(!1),B=O({money:2});function Ne(n,l){_.value=n,B.money=l,q.value=!0}async function We(){if(+B.money<0){d.warning("余额不能小于0");return}await V.updateWallet(_.value,+B.money),d.success("修改成功"),q.value=!1,y()}const G=p(!1),v=O({phone:"",code:""}),re=p("获取验证码"),J=p(0);function Ce(){if(J.value===0){re.value="获取验证码";return}re.value="".concat(J.value,"s"),J.value-=1,setTimeout(Ce,1e3)}function je(){if(!$e.test(v.phone)){d.warning("手机号格式不正确");return}xe.checkPhone(v.phone).then(()=>{xe.getCode(v.phone).then(()=>{J.value=120,Ce(),d.success("获取成功,请注意查看手机短信")})}).catch(n=>{const{code:l}=n,c="注册失败,未知错误",w={1002:"手机号已被注册",1006:"手机号格式不正确"};d.error(w[l]||c)})}function Ze(){return $e.test(v.phone)?cl.test(v.code)?!0:(d.warning("验证码格式不正确"),!1):(d.warning("手机号格式不正确"),!1)}function qe(n){_.value=n,G.value=!0}async function Ge(){Ze()&&V.resetPhone(_.value,v.phone,v.code).then(()=>{d.success("绑定成功"),G.value=!1,v.code="",v.phone="",y()}).catch(n=>{const{code:l}=n,c="绑定失败,未知错误",w={1002:"手机号已被注册",1003:"验证码不正确"};d.error(w[l]||c)})}function de(n,l){const c={month:"一个月前",quarter:"三个月前",half:"半年前"};_.value=n,we.confirm("移除后这些文件将无法恢复,请谨慎操作","删除前确认?",{confirmButtonText:"确认删除 ".concat(c[l],"文件")}).then(()=>{V.clearOssFile(n,l).then(()=>{d.success("清理成功")})}).catch(()=>{})}const Ve=p(1),K=p(!1),le=p("");function ye(n,l=1){_.value=n,Ve.value=l,K.value=!0}function Je(){V.sendMessage(le.value,Ve.value,_.value).then(()=>{d.success("推送成功"),le.value="",K.value=!1})}function Ke(n){V.logout(n).then(()=>{d.success("下线成功 ".concat(n)),y()})}ol(()=>{y()});const D=_l(),{moneyStartDay:Qe}=al();function Xe(n){const{backhaulTrafficPrice:l,cdnPrice:c,compressPrice:w,ossPrice:g}=n;we.confirm("存储:".concat(g,", 下载:").concat(c,",压缩:").concat(w,",回源:").concat(l),{showCancelButton:!1})}return(n,l)=>{const c=bl,w=Cl,g=sl,r=ul,C=Vl,ce=yl,me=gl,F=hl,Ye=vl,R=pl,te=fl;return f(),z("div",Il,[a("div",Al,[a("div",Nl,[a("span",Wl,[jl,t(w,{modelValue:u($),"onUpdate:modelValue":l[0]||(l[0]=e=>_e($)?$.value=e:null),size:"default",class:"w100"},{default:o(()=>[(f(!0),z(se,null,ue(be,(e,m)=>(f(),S(c,{key:m,label:e.label,value:e.type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),a("span",Zl,[ql,t(w,{modelValue:u(x),"onUpdate:modelValue":l[1]||(l[1]=e=>_e(x)?x.value=e:null),size:"default",class:"w100"},{default:o(()=>[(f(),z(se,null,ue(Te,(e,m)=>t(c,{key:m,label:e.label,value:e.value},null,8,["label","value"])),64))]),_:1},8,["modelValue"]),t(w,{modelValue:u(Y),"onUpdate:modelValue":l[2]||(l[2]=e=>_e(Y)?Y.value=e:null),size:"default",class:"w100"},{default:o(()=>[(f(),z(se,null,ue(Ue,(e,m)=>t(c,{key:m,label:e.label,value:e.value},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),a("span",Gl,[t(g,{modelValue:M.value,"onUpdate:modelValue":l[3]||(l[3]=e=>M.value=e),size:"default",clearable:"",placeholder:"请输入要检索的内容","prefix-icon":u(wl)},null,8,["modelValue","prefix-icon"])]),a("span",Jl,[t(r,{size:"default",icon:u(zl),onClick:y},{default:o(()=>[s("刷新")]),_:1},8,["icon"])]),a("span",Kl,[t(r,{size:"warning",icon:u(Ml),onClick:l[4]||(l[4]=e=>ye(null,0))},{default:o(()=>[s("推送全局消息")]),_:1},8,["icon"])])]),t(kl,null,{default:o(()=>[s(" 预估费用:"+i(X.value)+"¥, 计费起始时间:"+i(u(T)(u(Qe))),1)]),_:1}),t(ce,{height:"550",stripe:"",border:"","default-sort":{prop:"date",order:"descending"},data:Pe.value,style:{width:"100%"}},{default:o(()=>[t(C,{prop:"id",label:"ID",width:"60"}),t(C,{prop:"account",label:"账号",width:"130"}),t(C,{prop:"phone",label:"手机号",width:"80"}),t(C,{label:"统计",width:"190"},{default:o(e=>[s(" 最后登录:"+i(e.row.loginTime&&u(T)(new Date(e.row.loginTime))),1),Ql,s(" 注册时间:"+i(u(T)(new Date(e.row.joinTime))),1),Xl,s(" 登录次数:"+i(e.row.loginCount),1),Yl,s(" token: "+i(e.row.onlineCount),1),et]),_:1}),t(C,{prop:"downloadCount",label:"累计下载"},{default:o(({row:{downloadCount:e,downloadSize:m,oneFile:oe,compressFile:Q,templateFile:ae}})=>[s(i(e)+" / "+i(u(k)(m)),1),lt,s(" 单文件:"+i(oe.count)+" / "+i(u(k)(oe.size)),1),tt,s(" 归档:"+i(Q.count)+" / "+i(u(k)(Q.size)),1),ot,s(" 模板:"+i(ae.count)+" / "+i(u(k)(ae.size)),1)]),_:1}),u($)===1?(f(),S(C,{key:0,prop:"openTime",label:"解封时间"},{default:o(e=>[s(i(e.row.openTime&&u(T)(new Date(e.row.openTime))),1)]),_:1})):H("",!0),t(C,{prop:"fileCount",label:"文件"},{default:o(e=>[s(" 累计:"+i(e.row.fileCount)+"/"+i(u(k)(e.row.originFileSize)),1),at,s(" OSS:"+i(e.row.ossCount)+"/"+i(u(k)(e.row.usage)),1),nt,s(" 平均:"+i(e.row.originFileSize&&e.row.fileCount&&u(k)(Math.round(e.row.originFileSize/e.row.fileCount))),1),st,s(" 平均:"+i(e.row.usage&&e.row.ossCount&&u(k)(Math.round(e.row.usage/e.row.ossCount))),1),ut]),_:1}),t(C,{label:"云空间",width:"240"},{default:o(({row:{wallet:e,price:m,balance:oe,resources:Q,monthAgoSize:ae,quarterAgoSize:ke,halfYearSize:ze,id:pe,limitSize:el,limitUpload:ll,percentage:tl}})=>[a("ul",{class:nl(["user-oss-info",{disabled:ll}])},[a("li",null,[s(" ¥:"+i(m.total)+" / "+i(e)+" = "+i(oe)+" ",1),t(r,{icon:u(Hl),circle:"",size:"small",onClick:fe=>Xe(m)},null,8,["icon","onClick"])]),a("li",null,i(tl)+"% "+i(Q)+"/"+i(el),1),a("li",null,[s(" 一月前:"+i(ae),1),Q!=="0B"?(f(),S(r,{key:0,class:"clear-btn",icon:u(he),circle:"",size:"small",onClick:fe=>de(pe,"month")},null,8,["icon","onClick"])):H("",!0)]),a("li",null,[s(" 三月前:"+i(ke),1),ke!=="0B"?(f(),S(r,{key:0,class:"clear-btn",icon:u(he),circle:"",size:"small",onClick:fe=>de(pe,"quarter")},null,8,["icon","onClick"])):H("",!0)]),a("li",null,[s(" 半年前:"+i(ze),1),ze!=="0B"?(f(),S(r,{key:0,class:"clear-btn",icon:u(he),circle:"",size:"small",onClick:fe=>de(pe,"half")},null,8,["icon","onClick"])):H("",!0)])],2)]),_:1}),t(C,{fixed:"right",label:"操作",width:"100"},{default:o(e=>[a("div",it,[t(r,{type:"primary",text:"",size:"small",onClick:m=>De(e.row.id,e.row.status,e.row.openTime)},{default:o(()=>[s(" 修改状态 ")]),_:2},1032,["onClick"]),t(r,{type:"primary",text:"",size:"small",onClick:m=>Re(e.row.id)},{default:o(()=>[s(" 重置密码 ")]),_:2},1032,["onClick"]),t(r,{type:"primary",text:"",size:"small",onClick:m=>qe(e.row.id)},{default:o(()=>[s(" 绑定手机号 ")]),_:2},1032,["onClick"]),t(r,{type:"warning",text:"",size:"small",onClick:m=>ye(e.row.id)},{default:o(()=>[s(" 发送消息 ")]),_:2},1032,["onClick"]),t(r,{type:"danger",text:"",size:"small",onClick:m=>Ie(e.row.id,e.row.size)},{default:o(()=>[s(" 修改上限 ")]),_:2},1032,["onClick"]),t(r,{type:"danger",text:"",size:"small",onClick:m=>Ne(e.row.id,e.row.wallet)},{default:o(()=>[s(" 修改余额 ")]),_:2},1032,["onClick"]),e.row.onlineCount!==0?(f(),S(r,{key:0,type:"danger",text:"",size:"small",onClick:m=>Ke(e.row.account)},{default:o(()=>[s(" 一键下线 ")]),_:2},1032,["onClick"])):H("",!0)])]),_:1})]),_:1},8,["data"]),a("div",rt,[t(me,{"current-page":ee.value,background:"","page-count":Me.value,"page-sizes":[10,50,100,200],"page-size":u(A),total:ie.value.length,layout:"total, sizes, prev, pager, next, jumper",onCurrentChange:Le,onSizeChange:Ee},null,8,["current-page","page-count","page-size","total"])])]),t(F,{modelValue:K.value,"onUpdate:modelValue":l[7]||(l[7]=e=>K.value=e),fullscreen:u(D),center:"",title:"消息推送"},{footer:o(()=>[a("span",ct,[t(r,{onClick:l[6]||(l[6]=e=>K.value=!1)},{default:o(()=>[s("取 消")]),_:1}),t(r,{type:"primary",onClick:Je},{default:o(()=>[s("确 定")]),_:1})])]),default:o(()=>[a("div",dt,[t(g,{modelValue:le.value,"onUpdate:modelValue":l[5]||(l[5]=e=>le.value=e),autosize:{minRows:6,maxRows:20},type:"textarea",placeholder:"输入要推送的消息,支持HTML内容(推荐使用mdnice 转 markdown 转html)"},null,8,["modelValue"])])]),_:1},8,["modelValue","fullscreen"]),t(F,{modelValue:N.value,"onUpdate:modelValue":l[11]||(l[11]=e=>N.value=e),fullscreen:u(D),center:"",title:"状态修改"},{footer:o(()=>[a("span",ft,[t(r,{onClick:l[10]||(l[10]=e=>N.value=!1)},{default:o(()=>[s("取 消")]),_:1}),t(r,{type:"primary",onClick:Fe},{default:o(()=>[s("确 定")]),_:1})])]),default:o(()=>[a("div",mt,[t(w,{modelValue:P.value,"onUpdate:modelValue":l[8]||(l[8]=e=>P.value=e),placeholder:"请选择新分类"},{default:o(()=>[(f(!0),z(se,null,ue(u(Be),e=>(f(),S(c,{key:e.type,label:e.label,value:e.type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),P.value===1?(f(),z("div",pt,[t(Ye,{modelValue:W.value,"onUpdate:modelValue":l[9]||(l[9]=e=>W.value=e),editable:!1,type:"datetime",placeholder:"点击设置解封日期"},null,8,["modelValue"])])):H("",!0)]),_:1},8,["modelValue","fullscreen"]),t(F,{modelValue:j.value,"onUpdate:modelValue":l[15]||(l[15]=e=>j.value=e),fullscreen:u(D),center:"",title:"密码重置"},{footer:o(()=>[a("span",_t,[t(r,{onClick:l[14]||(l[14]=e=>j.value=!1)},{default:o(()=>[s("取 消")]),_:1}),t(r,{type:"primary",onClick:He},{default:o(()=>[s("确 定")]),_:1})])]),default:o(()=>[a("div",vt,[t(te,{model:b,"label-width":"80px"},{default:o(()=>[t(R,{label:"新密码"},{default:o(()=>[t(g,{modelValue:b.pwd1,"onUpdate:modelValue":l[12]||(l[12]=e=>b.pwd1=e),"show-word-limit":"",clearable:"",placeholder:"请输入新密码",maxlength:"16",minlength:"6"},null,8,["modelValue"])]),_:1}),t(R,null,{default:o(()=>[t(g,{modelValue:b.pwd2,"onUpdate:modelValue":l[13]||(l[13]=e=>b.pwd2=e),"show-word-limit":"",clearable:"",placeholder:"请再次输入",maxlength:"16",minlength:"6"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},8,["modelValue","fullscreen"]),t(F,{modelValue:G.value,"onUpdate:modelValue":l[19]||(l[19]=e=>G.value=e),fullscreen:u(D),center:"",title:"绑定手机号"},{footer:o(()=>[a("span",wt,[t(r,{onClick:l[18]||(l[18]=e=>G.value=!1)},{default:o(()=>[s("取 消")]),_:1}),t(r,{type:"primary",onClick:Ge},{default:o(()=>[s("确 定")]),_:1})])]),default:o(()=>[a("div",ht,[t(te,{model:v,"label-width":"60px"},{default:o(()=>[t(R,{label:"手机号"},{default:o(()=>[t(g,{modelValue:v.phone,"onUpdate:modelValue":l[16]||(l[16]=e=>v.phone=e),"show-word-limit":"",clearable:"",placeholder:"请输入手机号",maxlength:"11"},{append:o(()=>[t(r,{disabled:J.value!==0,onClick:je},{default:o(()=>[s(i(re.value),1)]),_:1},8,["disabled"])]),_:1},8,["modelValue"])]),_:1}),t(R,null,{default:o(()=>[t(g,{modelValue:v.code,"onUpdate:modelValue":l[17]||(l[17]=e=>v.code=e),"show-word-limit":"",clearable:"",placeholder:"请输入验证码",maxlength:"4"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},8,["modelValue","fullscreen"]),t(F,{modelValue:Z.value,"onUpdate:modelValue":l[22]||(l[22]=e=>Z.value=e),fullscreen:u(D),center:"",title:"修改空间上限"},{footer:o(()=>[a("span",bt,[t(r,{onClick:l[21]||(l[21]=e=>Z.value=!1)},{default:o(()=>[s("取 消")]),_:1}),t(r,{type:"primary",onClick:Ae},{default:o(()=>[s("确 定")]),_:1})])]),default:o(()=>[a("div",gt,[t(te,{model:L,"label-width":"60px"},{default:o(()=>[t(R,{label:"大小"},{default:o(()=>[t(g,{modelValue:L.size,"onUpdate:modelValue":l[20]||(l[20]=e=>L.size=e),"show-word-limit":"",clearable:"",placeholder:"请输入空间上限",maxlength:"4",type:"number"},{append:o(()=>[s(" GB ")]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},8,["modelValue","fullscreen"]),t(F,{modelValue:q.value,"onUpdate:modelValue":l[25]||(l[25]=e=>q.value=e),fullscreen:u(D),center:"",title:"修改空间上限"},{footer:o(()=>[a("span",Vt,[t(r,{onClick:l[24]||(l[24]=e=>q.value=!1)},{default:o(()=>[s("取 消")]),_:1}),t(r,{type:"primary",onClick:We},{default:o(()=>[s("确 定")]),_:1})])]),default:o(()=>[a("div",Ct,[t(te,{model:B,"label-width":"60px"},{default:o(()=>[t(R,{label:"余额"},{default:o(()=>[t(g,{modelValue:B.money,"onUpdate:modelValue":l[23]||(l[23]=e=>B.money=e),"show-word-limit":"",clearable:"",placeholder:"请输入新的余额",maxlength:"4",type:"number"},{append:o(()=>[s(" ¥ ")]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},8,["modelValue","fullscreen"])])}}}),Ot=ml(yt,[["__scopeId","data-v-5fb60ef4"]]);export{Ot as default};
2
- //# sourceMappingURL=index-DIlzTatU.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DIlzTatU.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","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_hoisted_4","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","message","_export_sfc","_hoisted_5","money","sumCost","ref","users","reactive","refreshUsers","SuperUserApi","res","ElMessage","userStatusType","useLocalStorage","USER_STATUS","searchWord","statusTypeList","sortType","sortTypeList","sortOrder","sortOrderList","filterUsers","computed","copyUsers","a","b","v","id","account","phone","joinTime","loginCount","loginTime","openTime","formatDate","pageSize","handleSizeChange","pageCount","pageCurrent","pageUsers","start","end","handlePageChange","idx","showUserStatusDialog","selectUserId","selectStatus","userStatusList","handleChangeStatus","userId","status","oTime","handleSaveStatus","user","u","showResetPasswordDialog","pwdForm","handleResetPassword","checkPwdForm","rPassword","handleSavePassword","ElMessageBox","showLimitSizeDialog","limitSizeForm","handleRewriteSize","size","handleSaveSize","showWalletDialog","walletForm","handleRewriteWallet","handleSaveWallet","showPhoneDialog","phoneForm","codeText","time","refreshCodeText","getCode","rMobilePhone","PublicApi","err","c","msg","options","checkPhoneForm","rVerCode","handleBindPhone","handleSavePhone","handleClearFiles","type","tipWords","pushMessageType","showMessageDialog","pushMessageText","sendMessage","sureSendMessage","logout","onMounted","isMobile","useIsMobile","moneyStartDay","useSiteConfig","handleCheckDetail","price","backhaulTrafficPrice","cdnPrice","compressPrice","ossPrice"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,2 +0,0 @@
1
- import{d as r,r as n,u,o as d,a as _,c as p,b as t,e as i,t as v,p as f,f as h,_ as m}from"./index-C0ZXXBCX.js";const c=e=>(f("data-v-7bc5f813"),e=e(),h(),e),I={class:"not-found"},x=c(()=>t("h1",null,"404 Not Found",-1)),S=c(()=>t("h2",null,"糟糕页面走丢了",-1)),b=r({__name:"index",setup(e){const a=n(3),o=n(null),s=u(),l=()=>{clearInterval(o.value),s.replace("/")};return d(()=>{o.value=setInterval(()=>{a.value===1&&(clearInterval(o.value),s.replace("/")),a.value-=1},1e3)}),(k,B)=>(_(),p("div",I,[x,S,t("h3",null,[i(v(a.value)+"s后",1),t("a",{onClick:l},"回到首页")])]))}}),C=m(b,[["__scopeId","data-v-7bc5f813"]]);export{C as default};
2
- //# sourceMappingURL=index-DREZLSQi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DREZLSQi.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","onMounted"],"mappings":"6RAWM,MAAAA,EAAOC,EAAI,CAAC,EACZC,EAAQD,EAAI,IAAI,EAChBE,EAASC,IACTC,EAAe,IAAM,CACzB,cAAcH,EAAM,KAAK,EACzBC,EAAO,QAAQ,GAAG,CAAA,EAEpB,OAAAG,EAAU,IAAM,CACRJ,EAAA,MAAQ,YAAY,IAAM,CAC1BF,EAAK,QAAU,IACjB,cAAcE,EAAM,KAAK,EACzBC,EAAO,QAAQ,GAAG,GAEpBH,EAAK,OAAS,GACb,GAAI,CAAA,CACR"}
@@ -1 +0,0 @@
1
- .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}
@@ -1,2 +0,0 @@
1
- import{d as R,u as V,O as J,Z as B,r as y,c_ as j,o as z,bs as g,i as $,a as s,c as r,b as o,j as i,w as u,e as c,F as b,C as A,t as v,D as f,k as F,E as m,y as I,x as M,v as L,_ as T}from"./index-C0ZXXBCX.js";import{E as U}from"./el-switch-FjmuXBNe.js";import"./validator-Ca0QsRid.js";const Z={class:"user"},q={class:"panel"},G={class:"routes"},H={class:"title"},K={class:"path"},P={class:"config-btn"},Q={class:"config-panel"},W=R({__name:"index",setup(X){const w=V(),C=J(()=>w.options.routes.filter(e=>{var t;return(t=e.meta)==null?void 0:t.allowDisabled})),h=B([]);function k(e){g.addDisabledRoute(e.path,!e.disabled).then(()=>{e.disabled=!e.disabled,m.success("切换成功")})}const n=y(!1),{value:p,updateValue:x}=j(),d=y("");function S(){n.value=!0,d.value=JSON.stringify(p.value,null,2)}async function E(){try{const e=JSON.parse(d.value);p.value=e,await x(),n.value=!1,m.success("保存成功")}catch(e){return m.error("JSON 格式错误")}}return z(()=>{for(const e of C.value)g.checkDisabledRoute(e.path).then(t=>{var l;h.push({path:e.path,name:e.name.toString(),title:e.meta.title,disabled:!!((l=t.data)!=null&&l.status)})})}),(e,t)=>{const l=I,D=U,_=M,N=$("json-viewer"),O=L;return s(),r("div",Z,[o("div",q,[i(l,null,{default:u(()=>[c("禁用路由管理")]),_:1}),o("ul",G,[(s(!0),r(b,null,A(h,a=>(s(),r("li",{key:a.name},[i(D,{"model-value":!a.disabled,style:{"--el-switch-on-color":"#13ce66","--el-switch-off-color":"#ff4949"},onChange:Y=>k(a)},null,8,["model-value","onChange"]),o("span",H,v(a.title),1),o("span",K,v(a.path)+v(a.path==="/register"?" 关闭后将同时禁用注册功能":""),1)]))),128))]),i(l,null,{default:u(()=>[c("全局配置管理(JSON)")]),_:1}),o("div",P,[n.value?(s(),r(b,{key:1},[i(_,{size:"small",type:"danger",onClick:t[0]||(t[0]=a=>n.value=!1)},{default:u(()=>[c(" 取消 ")]),_:1}),i(_,{size:"small",type:"success",onClick:E},{default:u(()=>[c(" 保存 ")]),_:1})],64)):(s(),f(_,{key:0,size:"small",type:"primary",onClick:S},{default:u(()=>[c(" 更新 ")]),_:1}))]),o("div",Q,[n.value?(s(),f(O,{key:1,modelValue:d.value,"onUpdate:modelValue":t[1]||(t[1]=a=>d.value=a),autosize:{minRows:2,maxRows:30},type:"textarea"},null,8,["modelValue"])):(s(),f(N,{key:0,value:F(p),"expand-depth":5,copyable:"",boxed:"",sort:""},null,8,["value"]))])])])}}}),se=T(W,[["__scopeId","data-v-1e07da88"]]);export{se as default};
2
- //# sourceMappingURL=index-DclP3Kg-.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DclP3Kg-.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","v","_a","showRoutes","reactive","handleChangeRoute","r","SuperOverviewApi","ElMessage","editConfig","ref","jsonData","updateJsonData","useSiteAllConfig","editJSON","handleEditConfig","handleSaveConfig","data","onMounted"],"mappings":"0cAOA,MAAMA,EAAUC,IACVC,EAASC,EAAS,IACtBH,EAAQ,QAAQ,OAAO,OAAYI,GAAA,OAAA,OAAAC,EAAAD,EAAE,OAAF,YAAAC,EAAQ,cAAa,CAAA,EAEpDC,EAAaC,EAOjB,CAAA,CAAE,EAEJ,SAASC,EAAkBC,EAA2B,CACnCC,EAAA,iBAAiBD,EAAE,KAAM,CAACA,EAAE,QAAQ,EAAE,KAAK,IAAM,CAC9DA,EAAA,SAAW,CAACA,EAAE,SAChBE,EAAU,QAAQ,MAAM,CAAA,CACzB,CACH,CAEM,MAAAC,EAAaC,EAAI,EAAK,EACtB,CAAE,MAAOC,EAAU,YAAaC,CAAA,EAAmBC,IAEnDC,EAAWJ,EAAI,EAAE,EAEvB,SAASK,GAAmB,CAC1BN,EAAW,MAAQ,GACnBK,EAAS,MAAQ,KAAK,UAAUH,EAAS,MAAO,KAAM,CAAC,CACzD,CACA,eAAeK,GAAmB,CAC5B,GAAA,CACF,MAAMC,EAAO,KAAK,MAAMH,EAAS,KAAK,EACtCH,EAAS,MAAQM,EACjB,MAAML,EAAe,EACrBH,EAAW,MAAQ,GACnBD,EAAU,QAAQ,MAAM,QAEnB,EAAG,CACD,OAAAA,EAAU,MAAM,WAAW,CACpC,CACF,CACA,OAAAU,EAAU,IAAM,CACH,UAAAZ,KAAKP,EAAO,MACrBQ,EAAiB,mBAAmBD,EAAE,IAAI,EAAE,KAAML,GAAM,OACtDE,EAAW,KAAK,CACd,KAAMG,EAAE,KACR,KAAMA,EAAE,KAAK,SAAS,EACtB,MAAOA,EAAE,KAAK,MACd,SAAU,CAAC,GAACJ,EAAAD,EAAE,OAAF,MAAAC,EAAQ,OAAA,CACrB,CAAA,CACF,CACH,CACD"}
@@ -1,2 +0,0 @@
1
- import{J as et,al as vt,N as tt,d as J,Q as lt,a as d,c as k,H as ye,k as h,T as qe,e as u,t as A,S as Q,b as i,aD as at,Y as nt,aF as ht,aG as de,aH as gt,aI as yt,aJ as Ce,aK as kt,r as C,Z as X,aL as bt,O as H,aM as Te,az as $t,aN as wt,$ as Ee,o as Le,aO as Vt,a8 as ce,aP as Ve,j as e,w as t,D as L,ax as Ct,aQ as xt,I as $e,aR as It,aS as Tt,aT as Ue,v as _e,aU as Et,aV as Ge,g as ve,h as Pe,E as D,_ as he,i as Be,F as le,C as ae,x as ie,p as Se,f as Ne,a9 as be,s as ge,aW as xe,a7 as we,aX as ot,aY as ke,aZ as St,ad as De,ae as st,a_ as ut,a$ as it,a6 as Nt,af as We,b0 as rt,b1 as Mt,P as Ft,a5 as zt,ab as dt}from"./index-C0ZXXBCX.js";import{E as Ut,a as Dt}from"./el-tab-pane-CuYcnzTM.js";import{u as Ae,E as Oe}from"./el-dialog-Dq3XmL6w.js";import{E as Ke,a as je}from"./el-form-item-CtSEmj9z.js";import{b as ct,E as Me,a as Fe}from"./el-select-HG63LP3Z.js";import{E as He,a as Lt}from"./el-progress-CeLYmjYA.js";import{E as Pt,a as Bt,b as At,I as Ot,L as Kt}from"./index-CsvxKrFP.js";import{R as Ze,d as jt,E as Ht}from"./el-date-picker-DLwRZtue.js";import{E as ze}from"./index-HzWmB96f.js";import{T as N,a as Yt}from"./tip-CrU2GCmD.js";import{d as Rt}from"./other-yMAyytYx.js";import{v as Qt}from"./el-loading-BzK_8zqi.js";import{E as Jt,a as qt}from"./el-table-column-B2R1FOoB.js";import{E as pt}from"./el-switch-FjmuXBNe.js";import{u as Gt}from"./index-BxLy8VN3.js";import"./isEqual-Cecwc716.js";import"./validator-Ca0QsRid.js";import"./aria-nkjrUMQ-.js";const Wt=et({header:{type:String,default:""},bodyStyle:{type:vt([String,Object,Array]),default:""},shadow:{type:String,values:["always","hover","never"],default:"always"}}),Zt={name:"ElCard"},Xt=J({...Zt,props:Wt,setup(o){const a=lt("card");return(l,s)=>(d(),k("div",{class:ye([h(a).b(),h(a).is("".concat(l.shadow,"-shadow"))])},[l.$slots.header||l.header?(d(),k("div",{key:0,class:ye(h(a).e("header"))},[qe(l.$slots,"header",{},()=>[u(A(l.header),1)])],2)):Q("v-if",!0),i("div",{class:ye(h(a).e("body")),style:at(l.bodyStyle)},[qe(l.$slots,"default")],6)],2))}});var el=tt(Xt,[["__file","/home/runner/work/element-plus/element-plus/packages/components/card/src/card.vue"]]);const tl=nt(el),ll=et({id:{type:String,default:void 0},step:{type:Number,default:1},stepStrictly:Boolean,max:{type:Number,default:Number.POSITIVE_INFINITY},min:{type:Number,default:Number.NEGATIVE_INFINITY},modelValue:Number,disabled:Boolean,size:ht,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:"",values:["","right"]},valueOnClear:{type:[String,Number,null],validator:o=>o===null||de(o)||["min","max"].includes(o),default:null},name:String,label:String,placeholder:String,precision:{type:Number,validator:o=>o>=0&&o===Number.parseInt("".concat(o),10)},validateEvent:{type:Boolean,default:!0}}),al={[gt]:(o,a)=>o!==a,blur:o=>o instanceof FocusEvent,focus:o=>o instanceof FocusEvent,[yt]:o=>de(o)||Ce(o),[kt]:o=>de(o)||Ce(o)},nl=["aria-label","onKeydown"],ol=["aria-label","onKeydown"],sl={name:"ElInputNumber"},ul=J({...sl,props:ll,emits:al,setup(o,{expose:a,emit:l}){const s=o,{t:g}=Gt(),p=lt("input-number"),b=C(),v=X({currentValue:s.modelValue,userInput:null}),{formItem:T}=bt(),f=H(()=>de(s.modelValue)&&Y(s.modelValue,-1)<s.min),m=H(()=>de(s.modelValue)&&Y(s.modelValue)>s.max),y=H(()=>{const n=O(s.step);return Te(s.precision)?Math.max(O(s.modelValue),n):(n>s.precision,s.precision)}),z=H(()=>s.controls&&s.controlsPosition==="right"),j=$t(),U=wt(),w=H(()=>{if(v.userInput!==null)return v.userInput;let n=v.currentValue;if(Ce(n))return"";if(de(n)){if(Number.isNaN(n))return"";Te(s.precision)||(n=n.toFixed(s.precision))}return n}),_=(n,r)=>{if(Te(r)&&(r=y.value),r===0)return Math.round(n);let I=String(n);const E=I.indexOf(".");if(E===-1||!I.replace(".","").split("")[E+r])return n;const re=I.length;return I.charAt(re-1)==="5"&&(I="".concat(I.slice(0,Math.max(0,re-1)),"6")),Number.parseFloat(Number(I).toFixed(r))},O=n=>{if(Ce(n))return 0;const r=n.toString(),I=r.indexOf(".");let E=0;return I!==-1&&(E=r.length-I-1),E},Y=(n,r=1)=>de(n)?_(n+s.step*r):v.currentValue,K=()=>{if(U.value||m.value)return;const n=s.modelValue||0,r=Y(n);P(r)},B=()=>{if(U.value||f.value)return;const n=s.modelValue||0,r=Y(n,-1);P(r)},G=(n,r)=>{const{max:I,min:E,step:R,precision:x,stepStrictly:re,valueOnClear:M}=s;let c=Number(n);if(Ce(n)||Number.isNaN(c))return null;if(n===""){if(M===null)return null;c=Et(M)?{min:E,max:I}[M]:M}return re&&(c=_(Math.round(c/R)*R,x)),Te(x)||(c=_(c,x)),(c>I||c<E)&&(c=c>I?I:E,r&&l("update:modelValue",c)),c},P=n=>{var r;const I=v.currentValue,E=G(n);I!==E&&(v.userInput=null,l("update:modelValue",E),l("input",E),l("change",E,I),s.validateEvent&&((r=T==null?void 0:T.validate)==null||r.call(T,"change").catch(R=>Ge())),v.currentValue=E)},V=n=>v.userInput=n,Z=n=>{const r=n!==""?Number(n):"";(de(r)&&!Number.isNaN(r)||n==="")&&P(r),v.userInput=null},oe=()=>{var n,r;(r=(n=b.value)==null?void 0:n.focus)==null||r.call(n)},pe=()=>{var n,r;(r=(n=b.value)==null?void 0:n.blur)==null||r.call(n)},se=n=>{l("focus",n)},q=n=>{var r;l("blur",n),s.validateEvent&&((r=T==null?void 0:T.validate)==null||r.call(T,"blur").catch(I=>Ge()))};return Ee(()=>s.modelValue,n=>{v.currentValue=G(n,!0),v.userInput=null},{immediate:!0}),Le(()=>{var n;const{min:r,max:I,modelValue:E}=s,R=(n=b.value)==null?void 0:n.input;if(R.setAttribute("role","spinbutton"),Number.isFinite(I)?R.setAttribute("aria-valuemax",String(I)):R.removeAttribute("aria-valuemax"),Number.isFinite(r)?R.setAttribute("aria-valuemin",String(r)):R.removeAttribute("aria-valuemin"),R.setAttribute("aria-valuenow",String(v.currentValue)),R.setAttribute("aria-disabled",String(U.value)),!de(E)&&E!=null){let x=Number(E);Number.isNaN(x)&&(x=null),l("update:modelValue",x)}}),Vt(()=>{var n;const r=(n=b.value)==null?void 0:n.input;r==null||r.setAttribute("aria-valuenow","".concat(v.currentValue))}),a({focus:oe,blur:pe}),(n,r)=>(d(),k("div",{class:ye([h(p).b(),h(p).m(h(j)),h(p).is("disabled",h(U)),h(p).is("without-controls",!n.controls),h(p).is("controls-right",h(z))]),onDragstart:r[0]||(r[0]=Ue(()=>{},["prevent"]))},[n.controls?ce((d(),k("span",{key:0,role:"button","aria-label":h(g)("el.inputNumber.decrease"),class:ye([h(p).e("decrease"),h(p).is("disabled",h(f))]),onKeydown:Ve(B,["enter"])},[e(h($e),null,{default:t(()=>[h(z)?(d(),L(h(Ct),{key:0})):(d(),L(h(xt),{key:1}))]),_:1})],42,nl)),[[h(Ze),B]]):Q("v-if",!0),n.controls?ce((d(),k("span",{key:1,role:"button","aria-label":h(g)("el.inputNumber.increase"),class:ye([h(p).e("increase"),h(p).is("disabled",h(m))]),onKeydown:Ve(K,["enter"])},[e(h($e),null,{default:t(()=>[h(z)?(d(),L(h(It),{key:0})):(d(),L(h(Tt),{key:1}))]),_:1})],42,ol)),[[h(Ze),K]]):Q("v-if",!0),e(h(_e),{id:n.id,ref_key:"input",ref:b,type:"number",step:n.step,"model-value":h(w),placeholder:n.placeholder,disabled:h(U),size:h(j),max:n.max,min:n.min,name:n.name,label:n.label,"validate-event":!1,onKeydown:[Ve(Ue(K,["prevent"]),["up"]),Ve(Ue(B,["prevent"]),["down"])],onBlur:q,onFocus:se,onInput:V,onChange:Z},null,8,["id","step","model-value","placeholder","disabled","size","max","min","name","label","onKeydown"])],34))}});var il=tt(ul,[["__file","/home/runner/work/element-plus/element-plus/packages/components/input-number/src/input-number.vue"]]);const rl=nt(il),dl=J({name:"CircleCloseFilled"}),cl={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},pl=i("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336L512 457.664z"},null,-1),ml=[pl];function fl(o,a,l,s,g,p){return d(),k("svg",cl,ml)}var Xe=ve(dl,[["render",fl]]);const _l=J({name:"CirclePlusFilled"}),vl={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},hl=i("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-38.4 409.6H326.4a38.4 38.4 0 1 0 0 76.8h147.2v147.2a38.4 38.4 0 0 0 76.8 0V550.4h147.2a38.4 38.4 0 0 0 0-76.8H550.4V326.4a38.4 38.4 0 1 0-76.8 0v147.2z"},null,-1),gl=[hl];function yl(o,a,l,s,g,p){return d(),k("svg",vl,gl)}var kl=ve(_l,[["render",yl]]);const bl=J({name:"Delete"}),$l={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},wl=i("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V256zm448-64v-64H416v64h192zM224 896h576V256H224v640zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32zm192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32z"},null,-1),Vl=[wl];function Cl(o,a,l,s,g,p){return d(),k("svg",$l,Vl)}var xl=ve(bl,[["render",Cl]]);const Il=J({name:"Edit"}),Tl={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},El=i("path",{fill:"currentColor",d:"M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640V512z"},null,-1),Sl=i("path",{fill:"currentColor",d:"m469.952 554.24 52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z"},null,-1),Nl=[El,Sl];function Ml(o,a,l,s,g,p){return d(),k("svg",Tl,Nl)}var Fl=ve(Il,[["render",Ml]]);const zl=J({name:"Menu"}),Ul={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Dl=i("path",{fill:"currentColor",d:"M160 448a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32H160zm448 0a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32H608zM160 896a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32H160zm448 0a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32H608z"},null,-1),Ll=[Dl];function Pl(o,a,l,s,g,p){return d(),k("svg",Ul,Ll)}var mt=ve(zl,[["render",Pl]]);const Bl=J({name:"Plus"}),Al={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Ol=i("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64h352z"},null,-1),Kl=[Ol];function jl(o,a,l,s,g,p){return d(),k("svg",Al,Kl)}var Hl=ve(Bl,[["render",jl]]);const Yl=J({name:"Share"}),Rl={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Ql=i("path",{fill:"currentColor",d:"m679.872 348.8-301.76 188.608a127.808 127.808 0 0 1 5.12 52.16l279.936 104.96a128 128 0 1 1-22.464 59.904l-279.872-104.96a128 128 0 1 1-16.64-166.272l301.696-188.608a128 128 0 1 1 33.92 54.272z"},null,-1),Jl=[Ql];function ql(o,a,l,s,g,p){return d(),k("svg",Rl,Jl)}var Gl=ve(Yl,[["render",ql]]);const Wl=J({name:"Top"}),Zl={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Xl=i("path",{fill:"currentColor",d:"M572.235 205.282v600.365a30.118 30.118 0 1 1-60.235 0V205.282L292.382 438.633a28.913 28.913 0 0 1-42.646 0 33.43 33.43 0 0 1 0-45.236l271.058-288.045a28.913 28.913 0 0 1 42.647 0L834.5 393.397a33.43 33.43 0 0 1 0 45.176 28.913 28.913 0 0 1-42.647 0l-219.618-233.23z"},null,-1),ea=[Xl];function ta(o,a,l,s,g,p){return d(),k("svg",Zl,ea)}var la=ve(Wl,[["render",ta]]);const aa=J({name:"categoryPanel",components:{DeleteFilled:jt},props:{category:{type:String,required:!0,default:"default"}},setup(o,a){const l=Pe(),s=H(()=>l.state.category.categoryList),g=H(()=>l.state.task.taskList),p=y=>{const z=g.value.filter(j=>j.category===y).length;return z===0?"":" (".concat(z,")")},b=C(!1),v=C(""),T=()=>{b.value=!1,v.value.trim()&&(l.dispatch("category/createCategory",v.value).then(()=>{D.success("创建成功")}).catch(y=>{y.code===2001&&D.warning("分类名称已存在")}),v.value="")},f=y=>{a.emit("update:category",y)};return{categorys:s,isShowCreateCategory:b,categoryName:v,addCategory:T,handleDeleteCategory:y=>{ze.confirm("是否删除","提示",{confirmButtonText:"确定",cancelButtonText:"取消"}).then(()=>{l.dispatch("category/deleteCategory",y.k).then(()=>{f("default"),D.success("删除成功"),l.dispatch("task/getTask")})}).catch(()=>{D.info("取消删除")})},handleClickCategory:f,taskCount:p}}}),na=o=>(Se("data-v-89760030"),o=o(),Ne(),o),oa={class:"panel"},sa=na(()=>i("div",{class:"btn-area"},[i("h5",null,"分类列表"),i("h6",{style:{"font-weight":"lighter"}},"(点击分类可筛选任务)")],-1)),ua={style:{"margin-top":"15px"},class:"category-list"},ia={class:"new-tag-wrap"},ra={class:"list-tip"},da={class:"tag-wrap"},ca={class:"tag-list"};function pa(o,a,l,s,g,p){const b=_e,v=ie,T=ct,f=Be("DeleteFilled"),m=$e;return d(),k("div",oa,[sa,i("div",ua,[i("div",ia,[o.isShowCreateCategory?(d(),L(b,{key:0,class:"input-new-tag el-tag",modelValue:o.categoryName,"onUpdate:modelValue":a[0]||(a[0]=y=>o.categoryName=y),ref:"saveTagInput",placeholder:"分类名称",onKeyup:Ve(o.addCategory,["enter"]),onFocusout:o.addCategory},null,8,["modelValue","onKeyup","onFocusout"])):(d(),L(v,{key:1,class:"button-new-tag el-tag",size:"small",onClick:a[1]||(a[1]=y=>o.isShowCreateCategory=!0)},{default:t(()=>[u("+ New 分类")]),_:1})),e(T,{effect:o.category==="default"?"dark":"plain",onClick:a[2]||(a[2]=y=>o.handleClickCategory("default"))},{default:t(()=>[u("默认"+A(o.taskCount("default")),1)]),_:1},8,["effect"]),i("span",ra,[e(T,{type:"danger",effect:o.category==="trash"?"dark":"plain",onClick:a[3]||(a[3]=y=>o.handleClickCategory("trash"))},{default:t(()=>[e(m,null,{default:t(()=>[e(f)]),_:1}),u(" 回收站"+A(o.taskCount("trash")),1)]),_:1},8,["effect"])])]),i("div",da,[i("div",ca,[(d(!0),k(le,null,ae(o.categorys,y=>(d(),L(T,{key:y.k,closable:"",effect:o.category===y.k?"dark":"plain",onClose:z=>o.handleDeleteCategory(y),onClick:z=>o.handleClickCategory(y.k)},{default:t(()=>[u(A(y.name)+A(o.taskCount(y.k)),1)]),_:2},1032,["effect","onClose","onClick"]))),128))])])])])}const ma=he(aa,[["render",pa],["__scopeId","data-v-89760030"]]),fa={class:"btn-area"},_a={class:"input-container"},va=J({__name:"CreateTask",props:{activeCategoryKey:{type:String,default:"default"}},setup(o){const a=o,l=Pe(),s=H(()=>l.state.category.categoryList);H(()=>a.activeCategoryKey==="default"?"默认":s.value.find(v=>v.k===a.activeCategoryKey).name);const g=C(!1),p=C(""),b=()=>{if(!p.value.trim()){D.warning("不能为空");return}l.dispatch("task/createTask",{name:p.value,category:a.activeCategoryKey}).then(()=>{D.success("创建成功")}),p.value=""};return(v,T)=>{var z;const f=ie,m=_e,y=$e;return d(),k("div",null,[i("div",fa,[e(f,{size:"large",type:"primary",plain:!g.value,onClick:T[0]||(T[0]=j=>g.value=!g.value)},{default:t(()=>[u(A(g.value?"关闭创建面板":"创建收集任务"),1)]),_:1},8,["plain"])]),ce(i("div",null,[i("div",_a,[e(m,{placeholder:"请输入任务名称(上述列表选择分类)",modelValue:p.value,"onUpdate:modelValue":T[1]||(T[1]=j=>p.value=j)},null,8,["modelValue"]),e(f,{onClick:b,type:(z=p.value)!=null&&z.length?"success":"default"},{default:t(()=>[u("确定")]),_:1},8,["type"])])],512),[[be,g.value]]),e(N,{class:"p10"},{default:t(()=>[u(" 点击 "),e(y,null,{default:t(()=>[e(h(mt))]),_:1}),u(" 可以进一步的调整任务 ")]),_:1}),e(N,null,{default:t(()=>[u(" 设置截止时间,自动重命名,名单限制,批注,文件模板。。🚀 ")]),_:1})])}}}),ha=he(va,[["__scopeId","data-v-74937fc2"]]),ga={class:"header"},ya={class:"ellipsis"},ka={class:"actions"},ba={class:"body"},$a={key:0,class:"empty"},wa={key:1},Va={class:"check-files"},Ca={class:"time"},xa={class:"name"},Ia=J({__name:"TaskInfo",props:{item:{}},setup(o){return(a,l)=>{const s=ie,g=Be("router-link"),p=tl;return d(),L(p,{class:"task-item"},{header:t(()=>[i("div",ga,[i("span",ya,A(a.item.name),1),i("div",ka,[e(s,{circle:"",type:"warning",icon:h(mt),title:"更多",onClick:l[0]||(l[0]=b=>a.$emit("more",a.item))},null,8,["icon"]),e(s,{circle:"",type:"success",icon:h(Fl),title:"编辑基本信息",onClick:l[1]||(l[1]=b=>a.$emit("edit",a.item))},null,8,["icon"]),e(s,{circle:"",type:"primary",icon:h(Gl),title:"分享",onClick:l[2]||(l[2]=b=>a.$emit("share",a.item.key))},null,8,["icon"]),e(s,{circle:"",type:"danger",icon:h(xl),title:"删除",onClick:l[3]||(l[3]=b=>a.$emit("delete",a.item.key,a.item.category==="trash"))},null,8,["icon"])])])]),default:t(()=>[i("div",ba,[a.item.recentLog.length===0?(d(),k("div",$a," 暂时没有提交记录... ")):(d(),k("ul",wa,[i("li",Va,[i("strong",null,"近 "+A(a.item.recentLog.length)+" 条提交记录",1),e(g,{to:"/dashboard/files?task=".concat(a.item.key)},{default:t(()=>[u("查看详情")]),_:1},8,["to"])]),(d(!0),k(le,null,ae(a.item.recentLog,(b,v)=>(d(),k("li",{key:Number(v),class:"ellipsis"},[i("span",Ca,A(h(ge)(new Date(b.date))),1),i("span",xa,A(b.filename),1)]))),128))]))])]),_:1})}}}),Ta=he(Ia,[["__scopeId","data-v-15cc9632"]]),ue=Rt((o,a,l=!0)=>{o&&xe.updateTaskMoreInfo(o,a).then(()=>{l&&D.success({message:"设置成功",zIndex:4e3,duration:1e3})}).catch(()=>{D.error({message:"设置失败",zIndex:4e3})})},1e3,!0),Ea={class:"tc ddl"},Sa={class:"tc flex fc fac"},Na={key:0,style:{"margin-top":"10px"}},Ma=J({__name:"ddl",props:{ddl:{type:String,default:"",required:!1},k:{type:String,default:""}},setup(o){const a=o,l=C();we(()=>{a.ddl?l.value=new Date(a.ddl):l.value=null});const s=()=>{if(l.value){const f=ge(new Date(l.value.getTime()-288e5));ue(a.k,{ddl:f})}},g=()=>{l.value=null,ue(a.k,{ddl:null})},p=C(0),b=H(()=>p.value<=0),v=H(()=>{let f=~~(p.value/1e3),m=~~(f/(60*60));const y=~~(m/24);m%=24;const z=~~(f%3600/60);return f%=60,"剩余".concat(y,"天").concat(m,"时").concat(z,"分").concat(f,"秒")}),T=(f=!0)=>{l.value?p.value=l.value.getTime()-Date.now():p.value=0,f&&setTimeout(()=>{T()},1e3)};return Le(()=>{T()}),(f,m)=>{const y=Ht,z=ie;return d(),k("div",Ea,[e(N,{imgs:["https://img.cdn.sugarat.top/mdImg/MTY0OTE0OTI4NjU5Nw==649149286597","https://img.cdn.sugarat.top/mdImg/MTY0OTE0OTMxMDEyOQ==649149310129","https://img.cdn.sugarat.top/mdImg/MTY0OTE0OTM3MzgxOA==649149373818"]},{default:t(()=>[u("设置截止日期,截止后将不能再提交文件。")]),_:1}),i("div",Sa,[e(y,{editable:!1,modelValue:l.value,"onUpdate:modelValue":m[0]||(m[0]=j=>l.value=j),type:"datetime",placeholder:"点击设置新截止日期",onChange:s,"default-time":new Date(o.ddl)},null,8,["modelValue","default-time"]),l.value?(d(),L(z,{key:0,onClick:g},{default:t(()=>[u("取消")]),_:1})):Q("",!0)]),l.value?(d(),k("div",Na,[e(N,null,{default:t(()=>[u(A(b.value?"已经截止":"剩余时间: ".concat(v.value)),1)]),_:1})])):Q("",!0)])}}}),Fa={class:"tc info-panel"},za={key:3,class:"upload-people"},Ua={class:"import-people-wrapper"},Da={class:"el-upload__tip"},La={class:"p10"},Pa={style:{"max-width":"300px",margin:"0 auto"}},Ba={class:"p10"},Aa={style:{"max-width":"320px",margin:"0 auto"}},Oa={class:"nav"},Ka={class:"item"},ja={class:"item"},Ha={class:"item"},Ya={class:"item"},Ra={class:"tc p10"},Qa={class:"tc p10"},Ja={style:{"text-align":"center"}},qa={key:0,class:"submit-ok"},Ga={key:1,class:"submit-fail"},Wa={class:"dialog-footer"},Za=J({__name:"people",props:{value:{type:Number,defalut:0},k:{type:String,default:""},name:{type:String,default:""},field:{type:String,default:"姓名"}},setup(o){ot(M=>({"2d24e53a":R.value}));const a=o,l=C("手动添加"),s=C(""),g=C(!1);function p(){s.value&&(g.value=!0,ke.addPeopleByUser(s.value,a.k).then(()=>{D.success("添加 ".concat(s.value," 成功"))}).catch(()=>{D.error("".concat(s.value," 已存在"))}).finally(()=>{g.value=!1,s.value=""}))}const b=C(!1),v=C(0);we(()=>{v.value=a.value});function T(M){ue(a.k,{people:+M}),v.value=+M}const f=C(!1),m=X([]),y=C("all"),z=C(""),j=H(()=>z.value?m.filter(M=>M.name.includes(z.value)):m),U=H(()=>y.value==="all"?j.value:j.value.filter(M=>M.status===y.value)),w=C(!1);function _(){w.value=!0,ke.getPeople(a.k,"".concat(+b.value)).then(M=>{m.splice(0,m.length),m.push(...M.data.people),m.forEach(c=>{!c.status&&c.count===0?c.lastDate="暂无记录":c.lastDate=ge(new Date(c.lastDate),"yyyy-MM-dd hh:mm:ss")}),w.value=!1})}function O(){b.value=!b.value,b.value&&_()}function Y(){f.value=!0,b.value=!1,_()}function K(M){ze.confirm("确认删除此人员吗","数据无价,请谨慎操作").then(()=>{ke.deletePeople(a.k,M.id).then(()=>{D.success("删除成功"),m.splice(m.findIndex(c=>c.id===M.id),1)})}).catch(()=>{D.info("取消删除")})}const B=C([]),G=C();function P(){D.error("只能选择一个文件,可删除后重新选择")}function V(){B.value.splice(0,B.value.length),G.value.clearFiles()}function Z(){B.value.forEach(M=>{St(M.raw,"/api/public/upload",{success:c=>{const{name:F,type:ee}=c.data;ke.importPeople(a.k,F,ee).then($=>{const{success:te,fail:W}=$.data;D.success("导入完成:".concat(te,"成功,").concat(W.length,"失败")),W.length>0&&setTimeout(()=>{D.info("自动开始下载未成功导入名单"),De(["未成功导入名单"],W.map(ne=>[ne]),"".concat(a.name,"_导入失败名单_").concat(ge(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx"))},1e3),V()})}})})}function oe(M){M.raw.type!=="text/plain"&&(D.warning({message:"只支持txt文件",zIndex:4e3}),V())}function pe(){if(U.value.length===0){D.warning("表格中没有可导出数据");return}const M=["姓名","提交状态","提交数量","最后操作时间",...b.value?["现存数量","提交次数"]:[]],c=U.value.map(F=>{const{name:ee,status:$,lastDate:te,submitCount:W,fileCount:ne,count:me}=F;return[ee,$?"✔":"x",W,$?ge(new Date(te)):"",...b.value?[ne,me]:[]]});De(M,c,"".concat(a.name,"_提交情况_").concat(ge(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx")),D.success("导出成功")}const se=Ae(),q=X({taskList:[],type:"override",taskValue:""}),n=C(!1);async function r(){var F;const M=a.k,{data:c}=await ke.getUsefulTemplate(M);q.taskList=c,q.taskValue=((F=c[0])==null?void 0:F.taskKey)||"",n.value=!0}const I=H(()=>{const{taskList:M,taskValue:c}=q,F=M.find(ee=>ee.taskKey===c);return F?"".concat(F.count," 条数据"):"无可用任务"});function E(){ke.importPeopleFromTpl(a.k,q.taskValue,q.type).then(M=>{n.value=!1;const{success:c,fail:F}=M.data;D.success("导入成功".concat(c,"条,失败").concat(F.length,"条")),F.length>0&&setTimeout(()=>{D.info("自动开始下载未成功导入名单"),De(["未成功导入名单"],F.map(ee=>[ee]),"".concat(a.name,"_导入失败名单_").concat(ge(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx"))},1e3)})}const R=H(()=>se.value?"0 0 auto":.5),x=C("姓名");Ee(()=>a.field,M=>{x.value=M},{immediate:!0});function re(){if(!x.value.trim().length){D.warning("绑定的表单项不能为空");return}xe.updateTaskMoreInfo(a.k,{bindField:x.value}).then(()=>{D.success("保存成功")})}return(M,c)=>{const F=ie,ee=Pt,$=Bt,te=He,W=_e,ne=Ke,me=je,Ie=Me,Re=Fe,fe=Jt,ft=qt,Qe=Oe,Je=At,_t=Qt;return d(),k("div",Fa,[e(N,{imgs:["https://img.cdn.sugarat.top/mdImg/MTY1MDE4MzEwOTEzOQ==650183109139","https://img.cdn.sugarat.top/mdImg/MTY1MTQ5NjY3MTUyMw==651496671523"]},{default:t(()=>[u(" 只有名单里的成员,才可提交文件 ")]),_:1}),v.value?Q("",!0):(d(),L(F,{key:0,size:"default",round:"",type:"success",onClick:c[0]||(c[0]=S=>T(!0))},{default:t(()=>[u(" 开启 ")]),_:1})),v.value?(d(),L(F,{key:1,size:"default",round:"",type:"danger",onClick:c[1]||(c[1]=S=>T(!1))},{default:t(()=>[u(" 关闭 ")]),_:1})):Q("",!0),v.value?(d(),L(F,{key:2,round:"",size:"default",type:"primary",onClick:Y},{default:t(()=>[u(" 查看提交情况 ")]),_:1})):Q("",!0),v.value?(d(),k("div",za,[e($,{modelValue:l.value,"onUpdate:modelValue":c[2]||(c[2]=S=>l.value=S),size:"small"},{default:t(()=>[e(ee,{label:"文件导入"}),e(ee,{label:"任务导入"}),e(ee,{label:"手动添加"})]),_:1},8,["modelValue"]),i("div",Ua,[ce(i("div",null,[e(te,{ref_key:"peopleUpload",ref:G,"file-list":B.value,"onUpdate:fileList":c[3]||(c[3]=S=>B.value=S),accept:"text/plain",action:"",class:"upload-demo","on-change":oe,"on-exceed":P,"on-remove":V,"auto-upload":!1,limit:1},{trigger:t(()=>[e(F,{size:"small",type:"primary"},{default:t(()=>[u(" 选择文件 ")]),_:1})]),tip:t(()=>[i("div",Da,[e(N,{imgs:["https://img.cdn.sugarat.top/mdImg/MTY1MDE4Mjk2NjUxMA==650182966510"]},{default:t(()=>[u(" 只能上传 .txt 文本文件,每行一个名字 ")]),_:1}),e(N,null,{default:t(()=>[u("如名字有特殊字符,建议去除")]),_:1}),e(N,null,{default:t(()=>[u("上传文件导入的方式,为追加导入,不会覆盖已存在数据")]),_:1})])]),default:t(()=>[e(F,{style:{"margin-left":"10px"},size:"small",type:"success",disabled:!B.value.length,onClick:Z},{default:t(()=>[u(" 确定上传 ")]),_:1},8,["disabled"])]),_:1},8,["file-list"])],512),[[be,l.value==="文件导入"]]),ce(i("div",null,[e(F,{size:"small",type:"success",onClick:r},{default:t(()=>[u(" 选择任务 ")]),_:1}),i("div",La,[e(N,null,{default:t(()=>[u("支持从已有的任务直接导入名单")]),_:1})])],512),[[be,l.value==="任务导入"]]),ce(i("div",null,[i("div",Pa,[e(W,{modelValue:s.value,"onUpdate:modelValue":c[4]||(c[4]=S=>s.value=S),disabled:g.value,placeholder:"请输入姓名"},{append:t(()=>[e(F,{onClick:p},{default:t(()=>[u(" 确定 ")]),_:1})]),_:1},8,["modelValue","disabled"])]),i("div",Ba,[e(N,null,{default:t(()=>[u("会自动判重,不会重复添加")]),_:1}),e(N,null,{default:t(()=>[u("大量名单优先推荐使用文件导入")]),_:1})])],512),[[be,l.value==="手动添加"]])]),i("div",Aa,[e(me,{"label-width":"120px"},{default:t(()=>[e(ne,{label:"绑定表单项",style:{"margin-bottom":"6px"}},{default:t(()=>[e(W,{modelValue:x.value,"onUpdate:modelValue":c[5]||(c[5]=S=>x.value=S),size:"small",clearable:""},{append:t(()=>[e(F,{onClick:re},{default:t(()=>[u(" 确定 ")]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(N,{style:{}},{default:t(()=>[u(" 和表单项同名字段,可以避免重复填写!! ")]),_:1})]),_:1})])])):Q("",!0),e(Qe,{modelValue:f.value,"onUpdate:modelValue":c[8]||(c[8]=S=>f.value=S),fullscreen:h(se),title:"提交情况"},{default:t(()=>[i("div",Oa,[i("div",Ka,[e(F,{disabled:m.length===0,type:"success",size:"default",onClick:pe},{default:t(()=>[u(" 导出记录 ")]),_:1},8,["disabled"])]),i("div",ja,[e(Re,{modelValue:y.value,"onUpdate:modelValue":c[6]||(c[6]=S=>y.value=S),size:"default",placeholder:"状态筛选"},{default:t(()=>[e(Ie,{label:"全部",value:"all"}),e(Ie,{label:"已提交",value:1}),e(Ie,{label:"未提交",value:0})]),_:1},8,["modelValue"])]),i("div",Ha,[e(W,{modelValue:z.value,"onUpdate:modelValue":c[7]||(c[7]=S=>z.value=S),size:"default",placeholder:"输入要查询的姓名"},null,8,["modelValue"])]),i("div",Ya,[e(F,{type:"primary",size:"default",onClick:O},{default:t(()=>[u(A(b.value?"隐藏":"显示")+"详细提交情况 ",1)]),_:1})])]),i("div",Ra,[i("span",null,"共: "+A(U.value.length)+" 条数据",1),u(", "),i("span",null,"已提交: "+A(U.value.filter(S=>S.status).length),1),u(", "),i("span",null,"未提交: "+A(U.value.filter(S=>!S.status).length),1)]),i("div",Qa,[e(N,null,{default:t(()=>[u('"提交次数" 用户实际的提交次数')]),_:1}),e(N,null,{default:t(()=>[u('"现存数量" 还存在于服务器上的文件数 (不包含删除) --- 慢查询')]),_:1}),e(N,null,{default:t(()=>[u('"提交数量" 用户实际提交的文件数 (不包含撤回) --- 慢查询')]),_:1})]),ce((d(),L(ft,{"element-loading-text":"Loading...",stripe:"",border:"",data:U.value,height:"460px"},{default:t(()=>[e(fe,{label:"序号",width:"60"},{default:t(S=>[i("div",Ja,A(S.$index+1),1)]),_:1}),e(fe,{property:"name",label:"姓名"}),e(fe,{label:"提交状态",width:"100"},{default:t(S=>[S.row.status?(d(),k("span",qa,"已提交")):(d(),k("span",Ga,"未提交"))]),_:1}),e(fe,{property:"count",label:"提交次数",width:"94"}),e(fe,{sortable:"",property:"lastDate",label:"最后操作时间",width:"120"}),b.value?(d(),k(le,{key:0},[e(fe,{property:"fileCount",label:"现存数量",width:"94"}),e(fe,{sortable:"",property:"submitCount",label:"提交数量",width:"120"})],64)):Q("",!0),e(fe,{label:"操作",width:"100"},{default:t(S=>[e(F,{type:"primary",text:"",size:"small",onClick:Wn=>K(S.row)},{default:t(()=>[u(" 删除 ")]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data"])),[[_t,w.value]])]),_:1},8,["modelValue","fullscreen"]),e(Qe,{modelValue:n.value,"onUpdate:modelValue":c[12]||(c[12]=S=>n.value=S),fullscreen:h(se),title:"人员列表导入"},{footer:t(()=>[i("span",Wa,[e(F,{onClick:c[11]||(c[11]=S=>n.value=!1)},{default:t(()=>[u("取 消")]),_:1}),e(F,{disabled:!q.taskValue,type:"primary",onClick:E},{default:t(()=>[u("确 定")]),_:1},8,["disabled"])])]),default:t(()=>[e(me,{model:q,"label-width":"100px","label-position":"right"},{default:t(()=>[e(ne,{label:"任务"},{default:t(()=>[e(Re,{modelValue:q.taskValue,"onUpdate:modelValue":c[9]||(c[9]=S=>q.taskValue=S),filterable:"",placeholder:"请选择","no-data-text":"无可用任务"},{default:t(()=>[(d(!0),k(le,null,ae(q.taskList,S=>(d(),L(Ie,{key:S.taskKey,label:S.name,value:S.taskKey},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(N,null,{default:t(()=>[u(A(I.value),1)]),_:1}),e(ne,{label:"任务"},{default:t(()=>[e($,{modelValue:q.type,"onUpdate:modelValue":c[10]||(c[10]=S=>q.type=S)},{default:t(()=>[e(Je,{label:"override"},{default:t(()=>[u(" 覆盖导入 ")]),_:1}),e(Je,{label:"add"},{default:t(()=>[u(" 追加导入 ")]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(N,null,{default:t(()=>[u(A(q.type==="override"?"“覆盖导入” 将会覆盖原来的数据":"“追加导入” 将只会导入不存在数据"),1)]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","fullscreen"])])}}}),Xa=he(Za,[["__scopeId","data-v-3822224c"]]),en=J({name:"templatePanel",props:{value:{type:String,default:""},k:{type:String,default:""}},setup(o){const a=C();we(()=>{o.value?a.value=o.value:a.value=""});const l=C(0),s=()=>{a.value&&(ue(o.k,{template:""}),a.value="",l.value=0)},g=C([]),p=C(),b=()=>{D.error("只能选择一个文件,可删除后重新选择")},v=()=>{p.value.clearFiles()};return{template:a,deleteTemplate:s,fileList:g,handleExceedFile:b,clearFiles:v,submitUploadPeople:()=>{g.value.forEach(f=>{if(!o.k)return;const{name:m}=f,y="easypicker2/".concat(o.k,"_template/").concat(m);f.status==="ready"&&(f.status="uploading",st.getUploadToken().then(z=>{ut(z.data.token,f.raw,y,{success(){D.success("上传成功"),ue(o.k,{template:m}),v(),a.value=m,f.status="success"},process(j){f.percentage=~~j}})}))})},elUpload:p,percentage:l}},components:{Tip:N}}),tn=o=>(Se("data-v-77b4c9c1"),o=o(),Ne(),o),ln={class:"tc info-panel"},an={class:"p10"},nn={key:1,class:"upload-file"},on=tn(()=>i("div",{class:"el-upload__tip"},"选择模板文件,然后点击上传",-1));function sn(o,a,l,s,g,p){const b=Be("tip"),v=ie,T=He;return d(),k("div",ln,[e(b,{imgs:["https://img.cdn.sugarat.top/mdImg/MTY1MDE4MjY3MjUxNw==650182672517"]},{default:t(()=>[u("设置的模板文件,可供用户在提交页下载。")]),_:1}),o.template?(d(),L(v,{key:0,disabled:!o.template,onClick:o.deleteTemplate,size:"default",round:"",type:"danger"},{default:t(()=>[u("删除")]),_:1},8,["disabled","onClick"])):Q("",!0),i("div",an,A(o.template||"尚未设置模板文件"),1),o.template?Q("",!0):(d(),k("div",nn,[e(T,{action:"",ref:"elUpload","on-exceed":o.handleExceedFile,"on-remove":o.clearFiles,"auto-upload":!1,limit:1,"file-list":o.fileList,"onUpdate:fileList":a[0]||(a[0]=f=>o.fileList=f)},{trigger:t(()=>[e(v,{size:"small",type:"primary"},{default:t(()=>[u("选取文件")]),_:1})]),tip:t(()=>[on]),default:t(()=>[e(v,{onClick:o.submitUploadPeople,style:{"margin-left":"10px"},size:"small",type:"success"},{default:t(()=>[u("设为模板")]),_:1},8,["onClick"])]),_:1},8,["on-exceed","on-remove","file-list"])]))])}const un=he(en,[["render",sn],["__scopeId","data-v-77b4c9c1"]]),rn=o=>(Se("data-v-cb300958"),o=o(),Ne(),o),dn={class:"tc"},cn={class:"auto-format"},pn=rn(()=>i("span",null,"文件自动重命名:",-1)),mn={key:0,style:{"margin-bottom":"10px"}},fn={style:{color:"#409eff"}},_n={key:1,style:{"margin-bottom":"10px"}},vn={class:"form-wrapper"},hn={class:"flex fc fac"},gn={class:"num-wrapper"},yn={class:"form-item-wrapper"},kn={key:0,class:"radio-list"},bn={class:"form-item-wrapper"},$n={key:3,class:"p10"},wn={class:"p10"},Vn={key:4,style:{color:"red"}},Cn={class:"info-panel"},xn={class:"dialog-footer"},In=J({__name:"info",props:{rewrite:{type:Number,default:0},info:{typs:String,default:"[]"},k:{type:String,default:""},format:{type:String,default:"",required:!1}},setup(o){ot(n=>({"2cde0e12":oe.value}));const a=o,l=X(it()),s=C(!1),g=X([{label:"输入框",value:"input"},{label:"固定内容",value:"text"},{label:"单选框",value:"radio"},{label:"下拉选择",value:"select"}]);function p(n){var r;return(r=g.find(I=>I.value===n))==null?void 0:r.label}const b=C("input"),{value:v}=Nt(),T=H(()=>v.value.maxInputLength),f=C(!1),m=X([]),y=C(!1),z=H(()=>m.length<v.value.formLength&&!s.value);Ee(()=>a.info,()=>{m.splice(0,m.length),b.value="input",s.value=!1,m.push(...We(a.info)),y.value=!1},{immediate:!0});const j=H(()=>"".concat(m.map(n=>n.text).join(l.splitChar),".后缀"));we(()=>{f.value=!!a.rewrite});function U(n){ue(a.k,{rewrite:+n})}function w(n,r){const I=n||m,E=r||b.value,R={text:"标题".concat(I.length+1),type:E,value:""};(E==="radio"||E==="select")&&(R.children=[{text:"选项1"},{text:"选项2"}]),I.push(R),y.value=!0}function _(n,r,I=1){const E=r||m;E.length<=I||(E.splice(n,1),y.value=!0)}function O(n){return n.every(r=>r.text.trim()&&O(r.children||[]))}function Y(){if(!O(m)){D.error("请完整填写表单信息"),setTimeout(()=>{D.warning("不能有空项")},100);return}ue(a.k,{info:JSON.stringify(m.map(n=>(n.type==="text"&&(n.value=n.text),n)))}),y.value=!1}function K(n){if(n===0)return;const r=m[n-1];m.splice(n-1,1),m.splice(n,0,r)}const B=X({taskList:[],taskValue:""}),G=C(!1);async function P(){var I;const n=a.k,{data:r}=await xe.getUsefulTemplate(n);B.taskList=r,B.taskValue=((I=r[0])==null?void 0:I.taskKey)||"",G.value=!0}function V(){const n=B.taskList.find(r=>r.taskKey===B.taskValue).info;m.splice(0,m.length),m.push(...We(n)),G.value=!1,y.value=!0}const Z=Ae(),oe=H(()=>Z.value?"0 0 auto":.5);function pe(){ze.alert("<p>固定内容主要用于重命名中,固定的部分,如“活动名”,“班级名”</p><p>如要设置注意事项,请使用 <strong>批注</strong> 功能</p>","注意事项",{dangerouslyUseHTMLString:!0})}function se(){ue(a.k,{format:JSON.stringify(l)})}const q=X(["-","+","_"]);return we(()=>{a.format!==null&&Object.assign(l,rt(a.format))}),(n,r)=>{const I=pt,E=Me,R=Fe,x=$e,re=_e,M=Ke,c=je,F=ie,ee=Oe;return d(),k("div",dn,[e(N,{imgs:["https://img.cdn.sugarat.top/mdImg/MTY1MDE4MzM3NjUyNg==650183376526","https://img.cdn.sugarat.top/mdImg/MTY1MTQ5NjU2ODcyNg==651496568726"]},{default:t(()=>[u(" 上传文件必填表单信息 ")]),_:1}),i("div",cn,[pn,e(I,{modelValue:f.value,"onUpdate:modelValue":r[0]||(r[0]=$=>f.value=$),style:{display:"block"},"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"开","inactive-text":"关",onChange:U},null,8,["modelValue"])]),f.value?(d(),k("div",mn,[u(" 预期格式: "),i("span",fn,A(j.value),1)])):Q("",!0),f.value?(d(),k("div",_n,[u(" 分割符: "),e(R,{modelValue:l.splitChar,"onUpdate:modelValue":r[1]||(r[1]=$=>l.splitChar=$),placeholder:"分隔符",style:{width:"60px"},size:"small",onChange:se},{default:t(()=>[(d(!0),k(le,null,ae(q,$=>(d(),L(E,{key:$,label:$,value:$},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])):Q("",!0),f.value?(d(),L(N,{key:2,style:{color:"red"}},{default:t(()=>[u(" 开启自动重命名后,重点关注文件名格式是否符合预期 ")]),_:1})):Q("",!0),i("div",null,[u(" 预览 "),e(I,{modelValue:s.value,"onUpdate:modelValue":r[2]||(r[2]=$=>s.value=$),"inline-prompt":"","active-text":"是","inactive-text":"否","active-color":"#13ce66","inactive-color":"#ff4949"},null,8,["modelValue"])]),i("div",vn,[s.value?(d(),L(Ot,{key:0,infos:m,disabled:s.value},null,8,["infos","disabled"])):(d(),L(c,{key:1,"label-width":"100px"},{default:t(()=>[(d(!0),k(le,null,ae(m,($,te)=>(d(),L(M,{key:te},{label:t(()=>[i("div",hn,[i("div",gn,[i("div",null,A(te+1),1)]),i("div",{class:ye(["form-item-type",$.type])},A(p($.type)),3)])]),default:t(()=>[e(re,{modelValue:$.text,"onUpdate:modelValue":W=>$.text=W,placeholder:"输入内容",maxlength:T.value,clearable:"","show-word-limit":""},{append:t(()=>[i("div",yn,[e(x,{color:m.length>1?"red":"grey",onClick:W=>_(te)},{default:t(()=>[e(h(Xe))]),_:2},1032,["color","onClick"]),te>0?(d(),L(x,{key:0,color:"#000",style:{"margin-left":"6px"},onClick:W=>K(te)},{default:t(()=>[e(h(la))]),_:2},1032,["onClick"])):Q("",!0)])]),_:2},1032,["modelValue","onUpdate:modelValue","maxlength"]),$.type==="radio"||$.type==="select"?(d(),k("div",kn,[(d(!0),k(le,null,ae($.children,(W,ne)=>(d(),L(re,{key:ne,modelValue:W.text,"onUpdate:modelValue":me=>W.text=me,size:"small",placeholder:"输入内容",maxlength:T.value,clearable:"","show-word-limit":""},{append:t(()=>[i("div",bn,[e(x,{color:$.children.length>2?"red":"grey",onClick:me=>_(ne,$.children,2)},{default:t(()=>[e(h(Xe))]),_:2},1032,["color","onClick"]),ne+1===$.children.length?(d(),L(x,{key:0,style:{"margin-left":"10px"},color:"#67C23A",onClick:me=>w($.children,$.type)},{default:t(()=>[e(h(kl))]),_:2},1032,["onClick"])):Q("",!0)])]),_:2},1032,["modelValue","onUpdate:modelValue","maxlength"]))),128))])):Q("",!0)]),_:2},1024))),128))]),_:1}))]),z.value?(d(),k("div",$n,[e(F,{size:"small",type:"primary",round:"",onClick:r[3]||(r[3]=()=>{w()})},{default:t(()=>[u(" 添加一项 ")]),_:1}),e(R,{modelValue:b.value,"onUpdate:modelValue":r[4]||(r[4]=$=>b.value=$),style:{margin:"0 10px"},size:"small",placeholder:"选择添加的类型"},{default:t(()=>[(d(!0),k(le,null,ae(g,($,te)=>(d(),L(E,{key:te,label:$.label,value:$.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),e(F,{type:"primary",text:"",onClick:pe},{default:t(()=>[u(" 提示❓ ")]),_:1})])):Q("",!0),e(F,{size:"small",type:"warning",onClick:P},{default:t(()=>[u(" 从其它任务导入 ")]),_:1}),i("div",wn,[e(N,null,{default:t(()=>[u("支持从已有的任务直接导入表单信息")]),_:1}),e(F,{type:"success",style:{width:"200px"},onClick:Y},{default:t(()=>[u(" 保存 ")]),_:1})]),y.value?(d(),k("div",Vn," 有变动,请记得点击保存 ")):Q("",!0),i("div",Cn,[e(ee,{modelValue:G.value,"onUpdate:modelValue":r[7]||(r[7]=$=>G.value=$),fullscreen:h(Z),title:"表单信息导入"},{footer:t(()=>[i("span",xn,[e(F,{onClick:r[6]||(r[6]=$=>G.value=!1)},{default:t(()=>[u("取 消")]),_:1}),e(F,{disabled:!B.taskValue,type:"primary",onClick:V},{default:t(()=>[u("确 定 ")]),_:1},8,["disabled"])])]),default:t(()=>[e(c,{model:B,"label-width":"100px","label-position":"right"},{default:t(()=>[e(M,{label:"任务"},{default:t(()=>[e(R,{modelValue:B.taskValue,"onUpdate:modelValue":r[5]||(r[5]=$=>B.taskValue=$),filterable:"",placeholder:"请选择","no-data-text":"无可用任务"},{default:t(()=>[(d(!0),k(le,null,ae(B.taskList,$=>(d(),L(E,{key:$.taskKey,label:$.name,value:$.taskKey},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(N,null,{default:t(()=>[u(A(B.taskValue?"":"无可用任务"),1)]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","fullscreen"])])])}}}),Tn=he(In,[["__scopeId","data-v-cb300958"]]),En={class:"tc ddl"},Sn={class:"tc flex fc fac"},Nn={class:"p10"},Mn=J({__name:"tipInfo",props:{tip:{type:String,default:"",required:!1},k:{type:String,default:""}},setup(o){const a=o,l=C(""),s=X({text:"",imgs:[]}),g=C(3),p=C([]),b=H(()=>p.value.map(w=>w.preview||w.url)),v=C(0);Ee(()=>a.tip,()=>{try{const w=JSON.parse(a.tip);s.imgs=w.imgs,s.text=w.text||"",p.value=s.imgs.map(_=>({..._,url:"https://img.cdn.sugarat.top/mdImg/MTY3NzkxMDI1NTU1Nw==20140524124237518.gif"})),p.value.length&&Ft.getTipImageUrl(a.k,p.value.map(_=>({uid:_.uid,name:_.name}))).then(_=>{_.data.forEach((O,Y)=>{p.value[Y].url=O.cover,Object.assign(p.value[Y],{preview:O.preview})})})}catch(w){s.text=a.tip||"",s.imgs=[],p.value=[]}s.text?l.value=s.text:l.value=""},{immediate:!0});const T=H(()=>s.text!==l.value);function f(w=!0){s.text!==l.value&&(s.text=l.value),ue(a.k,{tip:JSON.stringify(s)},w)}const m=C(!1);function y(w){if(!a.k)return;const{name:_,uid:O}=w,Y=Mt(a.k,_,O);w.status==="ready"&&(w.status="success",st.getUploadToken().then(K=>{ut(K.data.token,w.raw,Y,{success(){s.imgs.push({uid:O,name:_}),f()}})}))}const z=w=>{const{uid:_,name:O}=w,Y=s.imgs.findIndex(K=>K.uid===_);s.imgs.splice(Y,1),f(),xe.delTipImage(a.k,_,O)};function j(w){m.value=!0;const _=p.value.findIndex(O=>O.uid===w.uid);v.value=_}function U(){D.error("只能选择".concat(g.value,"个图片,可删除后重新选择"))}return(w,_)=>{const O=_e,Y=ie,K=$e,B=He,G=Yt;return d(),k("div",En,[e(N,{imgs:["https://img.cdn.sugarat.top/mdImg/MTY1MTQ5NjI2OTI0MQ==651496269241"]},{default:t(()=>[u(" 设置注意事项,供用户提交时查看 ")]),_:1}),e(N,null,{default:t(()=>[u("注意控制字数和换行,避免展示异常,设置完记得预览一下,再投放")]),_:1}),i("div",Sn,[e(O,{modelValue:l.value,"onUpdate:modelValue":_[0]||(_[0]=P=>l.value=P),rows:5,clearable:"",max:500,"show-word-limit":"",type:"textarea",placeholder:"请输入要展示的批注信息"},null,8,["modelValue"])]),i("div",Nn,[e(Y,{size:"default",type:"success",onClick:f},{default:t(()=>[u(" 保存 ")]),_:1}),e(Y,{size:"default",type:"danger",onClick:_[1]||(_[1]=P=>l.value="")},{default:t(()=>[u(" 清空 ")]),_:1})]),T.value?(d(),L(N,{key:0},{default:t(()=>[u(" 有变动记得保存 ")]),_:1})):Q("",!0),e(N,null,{default:t(()=>[u(" 可以设置图片啦↓ 最多3张 ")]),_:1}),e(B,{"file-list":p.value,"onUpdate:fileList":_[2]||(_[2]=P=>p.value=P),accept:"image/*",limit:g.value,action:"","list-type":"picture-card","on-change":y,"on-exceed":U,"on-preview":j,"on-remove":z,"auto-upload":!1},{default:t(()=>[e(K,null,{default:t(()=>[e(h(Hl))]),_:1})]),_:1},8,["file-list","limit"]),m.value?(d(),L(G,{key:1,"hide-on-click-modal":"","initial-index":v.value,"url-list":b.value,teleported:"",onClose:_[3]||(_[3]=P=>m.value=!1)},null,8,["initial-index","url-list"])):Q("",!0)])}}}),Ye=o=>(Se("data-v-491fae6b"),o=o(),Ne(),o),Fn={class:"tc"},zn={class:"tc"},Un={style:{"max-width":"300px",margin:"0 auto"}},Dn=Ye(()=>i("div",{class:"split-line"},null,-1)),Ln={class:"tc"},Pn=Ye(()=>i("div",{class:"split-line"},null,-1)),Bn={class:"tc"},An=Ye(()=>i("div",{class:"split-line"},null,-1)),On=J({__name:"file",props:{format:{type:String,default:"",required:!1},k:{type:String,default:""}},setup(o){const a=o,l=X(it()),s=C(""),g=()=>{ue(a.k,{format:JSON.stringify(l)})},p=U=>{l.status=!!U,g()},b=()=>{const U=s.value.split(",").map(w=>w.trim().toLowerCase());for(const w of U)if(l.format.includes(w)){D.error("".concat(w," 已存在"));return}l.format.push(...U),g(),s.value=""},v=U=>{l.format.splice(U,1),g()},T=()=>{dt(l.format.join(","))},f=U=>{l.limit=U,g()},m=C(0),y=X(["B","KB","MB","GB"]),z=()=>{const U=y.findIndex(w=>w===l.sizeUnit);l.size=m.value*1024**U,g()},j=U=>{m.value=U;const w=y.findIndex(_=>_===l.sizeUnit);l.size=m.value*1024**w,g()};return we(()=>{a.format!==null&&Object.assign(l,rt(a.format))}),(U,w)=>{const _=pt,O=ie,Y=_e,K=ct,B=rl,G=Me,P=Fe;return d(),k("div",Fn,[e(N,{class:"title"},{default:t(()=>[u(" ↓下方设置允许提交的文件类型↓ ")]),_:1}),e(N,null,{default:t(()=>[u("暂时只支持通过文件名后缀进行卡控,不区分大小写")]),_:1}),e(N,null,{default:t(()=>[u("例如:txt,png,jpeg,webp")]),_:1}),i("div",zn,[e(_,{"active-text":"限制文件类型","inactive-text":"不限制文件类型",onChange:p,value:l.status,style:{"--el-switch-on-color":"#13ce66","--el-switch-off-color":"#ff4949"}},null,8,["value"])]),ce(i("div",null,[e(N,null,{default:t(()=>[u('支持英文逗号","分割,一次添加多个')]),_:1}),i("div",Un,[e(Y,{modelValue:s.value,"onUpdate:modelValue":w[0]||(w[0]=V=>s.value=V),placeholder:"请输入文件类型(省略.)"},{append:t(()=>[e(O,{onClick:b},{default:t(()=>[u(" 确定 ")]),_:1})]),_:1},8,["modelValue"])]),(d(!0),k(le,null,ae(l.format,(V,Z)=>(d(),L(K,{key:Z,class:"type",closable:"","disable-transitions":!1,onClose:oe=>v(Z)},{default:t(()=>[u(A(V),1)]),_:2},1032,["onClose"]))),128)),ce(e(N,null,{default:t(()=>[u("已添加: "),i("span",null,A(l.format.join(",")),1),e(O,{type:"primary",text:"",size:"small",onClick:T},{default:t(()=>[u("一键复制")]),_:1})]),_:1},512),[[be,l.format.length]])],512),[[be,l.status]]),Dn,e(N,{class:"title"},{default:t(()=>[u("↓下方设置最大同时提交文件数量(16 >= x >=1 默认 10)↓")]),_:1}),i("div",Ln,[e(B,{"model-value":l.limit,min:1,max:16,onChange:f},null,8,["model-value"])]),Pn,e(N,{class:"title"},{default:t(()=>[u(" ↓下方设置文件最大的大小↓ ")]),_:1}),e(N,null,{default:t(()=>[u("1024B = 1KB, 1024KB = 1MB, 1024MB = 1GB")]),_:1}),e(N,null,{default:t(()=>[u("0表示不限制")]),_:1}),i("div",Bn,[e(B,{"model-value":m.value,min:0,max:1024,onChange:j},null,8,["model-value"]),e(P,{onChange:z,modelValue:l.sizeUnit,"onUpdate:modelValue":w[1]||(w[1]=V=>l.sizeUnit=V),placeholder:"单位",style:{width:"100px"}},{default:t(()=>[(d(!0),k(le,null,ae(y,V=>(d(),L(G,{key:V,label:V,value:V},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),An,e(N,{style:at(l.size===0?"color:grey":"color:red")},{default:t(()=>[u(A(l.size===0?"不限制大小":"限制为不超过: ".concat(h(zt)(l.size))),1)]),_:1},8,["style"])])}}}),Kn=he(On,[["__scopeId","data-v-491fae6b"]]),jn={class:"tasks"},Hn={class:"categorys-area"},Yn={class:"panel task-panel"},Rn={class:"task-list"},Qn={class:"dialog-footer"},Jn={class:"tc",style:{"font-size":"14px",color:"#9e9e9e"}},qn={style:{color:"#000000"}},Gn=J({__name:"index",setup(o){const a=Pe(),l=Ae(),s=H(()=>a.state.category.categoryList),g=C("default"),p=H(()=>a.state.task.taskList),b=H(()=>p.value.filter(V=>V.category===g.value));function v(P,V=!1){P&&ze.confirm("确认删除此任务吗?",V?"!!回收站的删除后无法再恢复":"数据无价,请谨慎操作",{confirmButtonText:"确定",cancelButtonText:"取消",type:V?"error":"info"}).then(()=>{a.dispatch("task/deleteTask",P).then(()=>{D.success("删除成功")})}).catch(()=>{D.info("取消删除")})}const T=C(!1),f=X({name:"",category:"",key:""});function m(P){f.name=P.name,f.category=P.category,f.key=P.key,T.value=!0}function y(){if(T.value=!1,!f.name.trim()){D.warning("不能为空");return}a.dispatch("task/updateTask",f).then(()=>{D.success("更新成功")})}const z=C(""),j=C(!1),U=C("");function w(P){var Z;z.value="default";const{origin:V}=window.location;z.value="".concat(V,"/task/").concat(P),dt(z.value,"收集链接已自动复制到粘贴板"),U.value=(Z=p.value.find(oe=>oe.key===P))==null?void 0:Z.name,j.value=!0}const _=X({}),O=C(!1),Y=C("info"),K=X({category:"",key:"",name:"",recentLog:[]});function B(P){Object.assign(K,P),xe.getTaskMoreInfo(P.key).then(V=>{_.info="[]",_.ddl="",_.tip="",_.format="",_.bindField="",setTimeout(()=>{Object.assign(_,V.data),O.value=!0})})}Le(()=>{a.dispatch("category/getCategory"),a.dispatch("task/getTask")});function G(){window.open("/task/".concat(K.key))}return(P,V)=>{const Z=Lt,oe=_e,pe=Ke,se=Me,q=Fe,n=je,r=ie,I=Oe,E=Ut,R=Dt;return d(),k("div",jn,[i("div",Hn,[e(ma,{category:g.value,"onUpdate:category":V[0]||(V[0]=x=>g.value=x)},null,8,["category"])]),i("div",Yn,[e(ha,{"active-category-key":g.value},null,8,["active-category-key"]),i("div",Rn,[(d(!0),k(le,null,ae(b.value,x=>(d(),L(Ta,{key:x.key,item:x,onEdit:m,onDelete:v,onShare:w,onMore:B},null,8,["item"]))),128)),b.value.length===0?(d(),L(Z,{key:0,description:"此分类下没有任务哟,快去创建吧"})):Q("",!0)])]),e(I,{modelValue:T.value,"onUpdate:modelValue":V[4]||(V[4]=x=>T.value=x),draggable:"",fullscreen:h(l),title:"基本信息修改"},{footer:t(()=>[i("span",Qn,[e(r,{onClick:V[3]||(V[3]=x=>T.value=!1)},{default:t(()=>[u("取 消")]),_:1}),e(r,{type:"primary",onClick:y},{default:t(()=>[u("确 定")]),_:1})])]),default:t(()=>[e(n,{model:f},{default:t(()=>[e(pe,{label:"任务名称","label-width":"100px"},{default:t(()=>[e(oe,{modelValue:f.name,"onUpdate:modelValue":V[1]||(V[1]=x=>f.name=x),autocomplete:"off"},null,8,["modelValue"])]),_:1}),e(pe,{label:"新的分类","label-width":"100px"},{default:t(()=>[e(q,{modelValue:f.category,"onUpdate:modelValue":V[2]||(V[2]=x=>f.category=x),placeholder:"请选择新分类"},{default:t(()=>[e(se,{label:"默认",value:"default"}),(d(!0),k(le,null,ae(s.value,x=>(d(),L(se,{key:x.k,label:x.name,value:x.k},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","fullscreen"]),e(Kt,{value:j.value,"onUpdate:value":V[5]||(V[5]=x=>j.value=x),download:!1,title:"收取链接",link:z.value,"share-text-prefix":U.value},null,8,["value","link","share-text-prefix"]),e(I,{modelValue:O.value,"onUpdate:modelValue":V[7]||(V[7]=x=>O.value=x),fullscreen:h(l),title:"更多设置",center:""},{default:t(()=>[i("div",null,[i("h3",Jn,[u(" 任务名:"),i("strong",qn,A(K.name),1),u(", "),e(r,{type:"primary",text:"",onClick:G},{default:t(()=>[u(" 去查看效果 ")]),_:1})]),e(R,{modelValue:Y.value,"onUpdate:modelValue":V[6]||(V[6]=x=>Y.value=x)},{default:t(()=>[e(E,{label:"截止日期",name:"ddl"},{default:t(()=>[e(Ma,{ddl:_.ddl,k:K.key},null,8,["ddl","k"])]),_:1}),e(E,{label:"批注信息",name:"tip"},{default:t(()=>[e(Mn,{rewrite:_.rewrite,tip:_.tip,k:K.key},null,8,["rewrite","tip","k"])]),_:1}),e(E,{label:"限制名单",name:"people"},{default:t(()=>[e(Xa,{name:K.name,value:_.people,k:K.key,field:_.bindField},null,8,["name","value","k","field"])]),_:1}),e(E,{label:"必填信息",name:"info"},{default:t(()=>[e(Tn,{rewrite:_.rewrite,info:_.info,k:K.key,format:_.format},null,8,["rewrite","info","k","format"])]),_:1}),e(E,{label:"模板文件",name:"template"},{default:t(()=>[e(un,{value:_.template,k:K.key},null,8,["value","k"])]),_:1}),e(E,{label:"文件属性",name:"attr"},{default:t(()=>[e(Kn,{format:_.format,k:K.key},null,8,["format","k"])]),_:1})]),_:1},8,["modelValue"])])]),_:1},8,["modelValue","fullscreen"])])}}}),ho=he(Gn,[["__scopeId","data-v-ca061009"]]);export{ho as default};
2
- //# sourceMappingURL=index-DlyJUJ0j.js.map