@sugarat/easypicker2-client 2.7.3 → 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.
- package/dist/assets/aria-legacy-B70JmEZA.js.map +1 -1
- package/dist/assets/aria-nkjrUMQ-.js.map +1 -1
- package/dist/assets/config-CnEgj70a.css +1 -0
- package/dist/assets/config-DR4Jo6x0.js +2 -0
- package/dist/assets/config-DR4Jo6x0.js.map +1 -0
- package/dist/assets/config-legacy-Frhed9Ou.js +2 -0
- package/dist/assets/config-legacy-Frhed9Ou.js.map +1 -0
- package/dist/assets/{data-analysis-Bnq_VWU8.js → data-analysis-B8jQ_UrC.js} +2 -2
- package/dist/assets/data-analysis-B8jQ_UrC.js.map +1 -0
- package/dist/assets/{data-analysis-legacy-_KcR253K.js → data-analysis-legacy-DjCCKm5W.js} +2 -2
- package/dist/assets/data-analysis-legacy-DjCCKm5W.js.map +1 -0
- package/dist/assets/{data-board-L3s5ouKd.js → data-board-BGj6fORD.js} +2 -2
- package/dist/assets/data-board-BGj6fORD.js.map +1 -0
- package/dist/assets/{data-board-legacy-BFxWeFnQ.js → data-board-legacy-D0aBtKuE.js} +2 -2
- package/dist/assets/data-board-legacy-D0aBtKuE.js.map +1 -0
- package/dist/assets/delete-filled-B3KAHg4C.js +2 -0
- package/dist/assets/delete-filled-B3KAHg4C.js.map +1 -0
- package/dist/assets/delete-filled-legacy-IwQ4U_-h.js +2 -0
- package/dist/assets/delete-filled-legacy-IwQ4U_-h.js.map +1 -0
- package/dist/assets/el-date-picker-2VHUEHRN.js +2 -0
- package/dist/assets/el-date-picker-2VHUEHRN.js.map +1 -0
- package/dist/assets/el-date-picker-legacy-6LjuTLvj.js +2 -0
- package/dist/assets/el-date-picker-legacy-6LjuTLvj.js.map +1 -0
- package/dist/assets/el-dropdown-item-C_iGHfk5.js +2 -0
- package/dist/assets/el-dropdown-item-C_iGHfk5.js.map +1 -0
- package/dist/assets/el-dropdown-item-legacy-Dd1a85un.js +2 -0
- package/dist/assets/el-dropdown-item-legacy-Dd1a85un.js.map +1 -0
- package/dist/assets/el-empty-C2yupmrg.css +1 -0
- package/dist/assets/el-empty-DM1AJWOT.js +2 -0
- package/dist/assets/el-empty-DM1AJWOT.js.map +1 -0
- package/dist/assets/el-empty-legacy-ZCYPIt_S.js +2 -0
- package/dist/assets/el-empty-legacy-ZCYPIt_S.js.map +1 -0
- package/dist/assets/el-input-number-CU7OpiYS.css +1 -0
- package/dist/assets/el-input-number-CgyrHNcj.js +2 -0
- package/dist/assets/el-input-number-CgyrHNcj.js.map +1 -0
- package/dist/assets/el-input-number-legacy-Bh6hK4h_.js +2 -0
- package/dist/assets/el-input-number-legacy-Bh6hK4h_.js.map +1 -0
- package/dist/assets/{el-loading-DNzUD85e.js → el-loading-DqRoOOxo.js} +2 -2
- package/dist/assets/el-loading-DqRoOOxo.js.map +1 -0
- package/dist/assets/el-loading-legacy-CFNL_MoE.js +2 -0
- package/dist/assets/el-loading-legacy-CFNL_MoE.js.map +1 -0
- package/dist/assets/el-pagination-DVClk9XJ.js +2 -0
- package/dist/assets/el-pagination-DVClk9XJ.js.map +1 -0
- package/dist/assets/el-pagination-legacy-DwnhLxcB.js +2 -0
- package/dist/assets/el-pagination-legacy-DwnhLxcB.js.map +1 -0
- package/dist/assets/el-scrollbar-B_rEcSsQ.js +2 -0
- package/dist/assets/el-scrollbar-B_rEcSsQ.js.map +1 -0
- package/dist/assets/el-scrollbar-DFu7lMno.css +1 -0
- package/dist/assets/el-scrollbar-legacy-DVIFmrwk.js +2 -0
- package/dist/assets/el-scrollbar-legacy-DVIFmrwk.js.map +1 -0
- package/dist/assets/el-select-C5BnfITI.js +2 -0
- package/dist/assets/el-select-C5BnfITI.js.map +1 -0
- package/dist/assets/el-select-Dm4tLYz8.css +1 -0
- package/dist/assets/el-select-legacy-yKcmdaqh.js +2 -0
- package/dist/assets/el-select-legacy-yKcmdaqh.js.map +1 -0
- package/dist/assets/el-switch-BUjvki0a.js +2 -0
- package/dist/assets/el-switch-BUjvki0a.js.map +1 -0
- package/dist/assets/el-switch-legacy-CeDo4e_6.js +2 -0
- package/dist/assets/el-switch-legacy-CeDo4e_6.js.map +1 -0
- package/dist/assets/el-tab-pane-DKrBN9bA.js +2 -0
- package/dist/assets/el-tab-pane-DKrBN9bA.js.map +1 -0
- package/dist/assets/{el-tab-pane-legacy-DMdhUCHY.js → el-tab-pane-legacy-Ct9rYze8.js} +2 -2
- package/dist/assets/el-tab-pane-legacy-Ct9rYze8.js.map +1 -0
- package/dist/assets/{el-table-column-tkbtgrcD.js → el-table-column-cVnV9Qdi.js} +3 -3
- package/dist/assets/el-table-column-cVnV9Qdi.js.map +1 -0
- package/dist/assets/el-table-column-legacy-D2UbUqx0.js +24 -0
- package/dist/assets/el-table-column-legacy-D2UbUqx0.js.map +1 -0
- package/dist/assets/el-tag-Bgje3_SF.css +1 -0
- package/dist/assets/el-tag-CR8VXqUN.js +2 -0
- package/dist/assets/el-tag-CR8VXqUN.js.map +1 -0
- package/dist/assets/el-tag-legacy-diNMtlkE.js +2 -0
- package/dist/assets/el-tag-legacy-diNMtlkE.js.map +1 -0
- package/dist/assets/el-upload-B2Zxm6X5.css +1 -0
- package/dist/assets/el-upload-DRWHzvzW.js +2 -0
- package/dist/assets/el-upload-DRWHzvzW.js.map +1 -0
- package/dist/assets/el-upload-legacy-C7Y6h5AK.js +2 -0
- package/dist/assets/el-upload-legacy-C7Y6h5AK.js.map +1 -0
- package/dist/assets/index-8vfFTV-B.css +1 -0
- package/dist/assets/index-B2PHCM63.js +23 -0
- package/dist/assets/index-B2PHCM63.js.map +1 -0
- package/dist/assets/{index-C4H-Ptjt.css → index-BDkChTag.css} +1 -1
- package/dist/assets/index-BDsN2eKB.js +2 -0
- package/dist/assets/index-BDsN2eKB.js.map +1 -0
- package/dist/assets/index-BIKx9Xnn.js +2 -0
- package/dist/assets/index-BIKx9Xnn.js.map +1 -0
- package/dist/assets/index-BOFlLnYl.js +2 -0
- package/dist/assets/index-BOFlLnYl.js.map +1 -0
- package/dist/assets/index-BSMNPGJ5.css +1 -0
- package/dist/assets/index-BVp20vyj.css +1 -0
- package/dist/assets/index-BWExpeba.js +2 -0
- package/dist/assets/index-BWExpeba.js.map +1 -0
- package/dist/assets/index-B_7cUQcW.js +2 -0
- package/dist/assets/index-B_7cUQcW.js.map +1 -0
- package/dist/assets/index-BcJxc1ki.css +1 -0
- package/dist/assets/index-BgihxBmj.css +1 -0
- package/dist/assets/index-BjSgvXxj.css +1 -0
- package/dist/assets/index-BrOLxzFM.js.map +1 -1
- package/dist/assets/index-Bx68sw-c.js +2 -0
- package/dist/assets/index-Bx68sw-c.js.map +1 -0
- package/dist/assets/index-BxcfgZqH.js +2 -0
- package/dist/assets/index-BxcfgZqH.js.map +1 -0
- package/dist/assets/{index-ehQnwCE_.css → index-Bxvzu7zF.css} +1 -1
- package/dist/assets/index-BzQdnJY9.js +2 -0
- package/dist/assets/index-BzQdnJY9.js.map +1 -0
- package/dist/assets/index-CFpIdG49.css +1 -0
- package/dist/assets/index-CQjXznXy.js +2 -0
- package/dist/assets/index-CQjXznXy.js.map +1 -0
- package/dist/assets/index-CQud0ONT.css +1 -0
- package/dist/assets/index-CkyNID7q.css +1 -0
- package/dist/assets/index-CsfbnGni.css +1 -0
- package/dist/assets/index-CuGN8YoJ.js +2 -0
- package/dist/assets/index-CuGN8YoJ.js.map +1 -0
- package/dist/assets/index-D94P-51I.css +1 -0
- package/dist/assets/index-DLuR61Hw.css +1 -0
- package/dist/assets/index-DRKBIvKP.js +2 -0
- package/dist/assets/index-DRKBIvKP.js.map +1 -0
- package/dist/assets/index-DTRiT4Ia.js +2 -0
- package/dist/assets/index-DTRiT4Ia.js.map +1 -0
- package/dist/assets/index-DVSUcRaY.js +2 -0
- package/dist/assets/index-DVSUcRaY.js.map +1 -0
- package/dist/assets/index-DWOXO9QK.js +2 -0
- package/dist/assets/index-DWOXO9QK.js.map +1 -0
- package/dist/assets/index-DWi4klmy.js +2 -0
- package/dist/assets/index-DWi4klmy.js.map +1 -0
- package/dist/assets/index-DcUtl6Nq.css +1 -0
- package/dist/assets/index-Diw0ScGB.js +2 -0
- package/dist/assets/index-Diw0ScGB.js.map +1 -0
- package/dist/assets/index-Dk60yOI9.js +2 -0
- package/dist/assets/index-Dk60yOI9.js.map +1 -0
- package/dist/assets/index-FISBGs_l.css +1 -0
- package/dist/assets/index-LKJh-8oZ.css +1 -0
- package/dist/assets/index-MRZ7DYIX.js +2 -0
- package/dist/assets/index-MRZ7DYIX.js.map +1 -0
- package/dist/assets/index-Q8b92C8V.css +1 -0
- package/dist/assets/index-X0ZxbeZs.js +2 -0
- package/dist/assets/index-X0ZxbeZs.js.map +1 -0
- package/dist/assets/index-fz1mWSN_.js +2 -0
- package/dist/assets/index-fz1mWSN_.js.map +1 -0
- package/dist/assets/index-legacy-B5_Eg4NO.js +2 -0
- package/dist/assets/index-legacy-B5_Eg4NO.js.map +1 -0
- package/dist/assets/index-legacy-B71iq4Jg.js +2 -0
- package/dist/assets/index-legacy-B71iq4Jg.js.map +1 -0
- package/dist/assets/index-legacy-B7MgTgVj.js +2 -0
- package/dist/assets/index-legacy-B7MgTgVj.js.map +1 -0
- package/dist/assets/index-legacy-BLCMV_4m.js +2 -0
- package/dist/assets/index-legacy-BLCMV_4m.js.map +1 -0
- package/dist/assets/index-legacy-BLu3Mu8j.js +2 -0
- package/dist/assets/index-legacy-BLu3Mu8j.js.map +1 -0
- package/dist/assets/index-legacy-BSmhgZ-n.js +2 -0
- package/dist/assets/index-legacy-BSmhgZ-n.js.map +1 -0
- package/dist/assets/index-legacy-BTvagK_v.js +2 -0
- package/dist/assets/index-legacy-BTvagK_v.js.map +1 -0
- package/dist/assets/index-legacy-C-gHf8SN.js.map +1 -1
- package/dist/assets/index-legacy-C2bwTRoT.js +2 -0
- package/dist/assets/index-legacy-C2bwTRoT.js.map +1 -0
- package/dist/assets/index-legacy-CM7bG2hM.js +2 -0
- package/dist/assets/index-legacy-CM7bG2hM.js.map +1 -0
- package/dist/assets/index-legacy-CRa6h-UF.js +2 -0
- package/dist/assets/index-legacy-CRa6h-UF.js.map +1 -0
- package/dist/assets/index-legacy-CkcZHDIb.js +54 -0
- package/dist/assets/index-legacy-CkcZHDIb.js.map +1 -0
- package/dist/assets/index-legacy-Cp4ut576.js +2 -0
- package/dist/assets/index-legacy-Cp4ut576.js.map +1 -0
- package/dist/assets/index-legacy-CvW_2XYj.js +2 -0
- package/dist/assets/index-legacy-CvW_2XYj.js.map +1 -0
- package/dist/assets/index-legacy-CwUt8UiU.js +2 -0
- package/dist/assets/index-legacy-CwUt8UiU.js.map +1 -0
- package/dist/assets/index-legacy-CzoivdRy.js +2 -0
- package/dist/assets/index-legacy-CzoivdRy.js.map +1 -0
- package/dist/assets/index-legacy-D-mrc8ns.js +2 -0
- package/dist/assets/index-legacy-D-mrc8ns.js.map +1 -0
- package/dist/assets/index-legacy-D2hV5N51.js +2 -0
- package/dist/assets/index-legacy-D2hV5N51.js.map +1 -0
- package/dist/assets/index-legacy-D6Zqa9lw.js +2 -0
- package/dist/assets/index-legacy-D6Zqa9lw.js.map +1 -0
- package/dist/assets/index-legacy-DrA0B2e4.js +2 -0
- package/dist/assets/index-legacy-DrA0B2e4.js.map +1 -0
- package/dist/assets/index-legacy-DysxAWeo.js +2 -0
- package/dist/assets/index-legacy-DysxAWeo.js.map +1 -0
- package/dist/assets/index-legacy-TKeSN56S.js +16 -0
- package/dist/assets/index-legacy-TKeSN56S.js.map +1 -0
- package/dist/assets/index-legacy-erTEdV9o.js +2 -0
- package/dist/assets/index-legacy-erTEdV9o.js.map +1 -0
- package/dist/assets/index-legacy-pHu03Ans.js +2 -0
- package/dist/assets/index-legacy-pHu03Ans.js.map +1 -0
- package/dist/assets/index-legacy-w1mXHpIQ.js +2 -0
- package/dist/assets/index-legacy-w1mXHpIQ.js.map +1 -0
- package/dist/assets/index-mtfctTgx.css +1 -0
- package/dist/assets/index-sRZE1X3H.js +2 -0
- package/dist/assets/index-sRZE1X3H.js.map +1 -0
- package/dist/assets/index-uNaj-154.js +40 -0
- package/dist/assets/index-uNaj-154.js.map +1 -0
- package/dist/assets/index-vo_ird7L.js +2 -0
- package/dist/assets/index-vo_ird7L.js.map +1 -0
- package/dist/assets/linkDialog-Dida934t.css +1 -0
- package/dist/assets/linkDialog-legacy-0_j99SG_.js +2 -0
- package/dist/assets/linkDialog-legacy-0_j99SG_.js.map +1 -0
- package/dist/assets/linkDialog-vYdu1-Ul.js +2 -0
- package/dist/assets/linkDialog-vYdu1-Ul.js.map +1 -0
- package/dist/assets/other-BiIe9Z0L.js +2 -0
- package/dist/assets/other-BiIe9Z0L.js.map +1 -0
- package/dist/assets/other-legacy-Bfm4KL87.js +2 -0
- package/dist/assets/other-legacy-Bfm4KL87.js.map +1 -0
- package/dist/assets/polyfills-legacy-DqO_DCwg.js +1 -0
- package/dist/assets/{refresh-DPuuDO9h.js → refresh-BnOQ8sKt.js} +2 -2
- package/dist/assets/refresh-BnOQ8sKt.js.map +1 -0
- package/dist/assets/{refresh-legacy-DOts-8Wc.js → refresh-legacy-D7NGa5wN.js} +2 -2
- package/dist/assets/refresh-legacy-D7NGa5wN.js.map +1 -0
- package/dist/assets/tip-CyB8omfw.js +2 -0
- package/dist/assets/tip-CyB8omfw.js.map +1 -0
- package/dist/assets/tip-legacy-DXZHLiK7.js +2 -0
- package/dist/assets/tip-legacy-DXZHLiK7.js.map +1 -0
- package/dist/assets/tipInfo-0FQ2unt4.js +2 -0
- package/dist/assets/tipInfo-0FQ2unt4.js.map +1 -0
- package/dist/assets/tipInfo-BPHCIpRm.css +1 -0
- package/dist/assets/tipInfo-legacy-cRqTuiqx.js +2 -0
- package/dist/assets/tipInfo-legacy-cRqTuiqx.js.map +1 -0
- package/dist/index.html +105 -128
- package/package.json +13 -34
- package/README.md +0 -86
- package/dist/assets/data-analysis-Bnq_VWU8.js.map +0 -1
- package/dist/assets/data-analysis-legacy-_KcR253K.js.map +0 -1
- package/dist/assets/data-board-L3s5ouKd.js.map +0 -1
- package/dist/assets/data-board-legacy-BFxWeFnQ.js.map +0 -1
- package/dist/assets/el-date-picker-legacy-Uk9x97L5.js +0 -2
- package/dist/assets/el-date-picker-legacy-Uk9x97L5.js.map +0 -1
- package/dist/assets/el-date-picker-mhY2RJMG.js +0 -2
- package/dist/assets/el-date-picker-mhY2RJMG.js.map +0 -1
- package/dist/assets/el-dialog-Cu2jwelC.css +0 -1
- package/dist/assets/el-dialog-PRccau6N.js +0 -2
- package/dist/assets/el-dialog-PRccau6N.js.map +0 -1
- package/dist/assets/el-dialog-legacy-BRLM43ZY.js +0 -2
- package/dist/assets/el-dialog-legacy-BRLM43ZY.js.map +0 -1
- package/dist/assets/el-dropdown-item-Cr71teRg.js +0 -2
- package/dist/assets/el-dropdown-item-Cr71teRg.js.map +0 -1
- package/dist/assets/el-dropdown-item-legacy-B0ufpHvy.js +0 -2
- package/dist/assets/el-dropdown-item-legacy-B0ufpHvy.js.map +0 -1
- package/dist/assets/el-form-item-Cc9R0dZ1.css +0 -1
- package/dist/assets/el-form-item-DOwM4Mv8.js +0 -2
- package/dist/assets/el-form-item-DOwM4Mv8.js.map +0 -1
- package/dist/assets/el-form-item-legacy-CvQy7syv.js +0 -2
- package/dist/assets/el-form-item-legacy-CvQy7syv.js.map +0 -1
- package/dist/assets/el-loading-DNzUD85e.js.map +0 -1
- package/dist/assets/el-loading-legacy-B3RLcjwN.js +0 -2
- package/dist/assets/el-loading-legacy-B3RLcjwN.js.map +0 -1
- package/dist/assets/el-pagination-iCicJonH.js +0 -2
- package/dist/assets/el-pagination-iCicJonH.js.map +0 -1
- package/dist/assets/el-pagination-legacy-Bf-Bzx7n.js +0 -2
- package/dist/assets/el-pagination-legacy-Bf-Bzx7n.js.map +0 -1
- package/dist/assets/el-progress-1hLO5hs0.js +0 -2
- package/dist/assets/el-progress-1hLO5hs0.js.map +0 -1
- package/dist/assets/el-progress-legacy-QmxDezwR.js +0 -2
- package/dist/assets/el-progress-legacy-QmxDezwR.js.map +0 -1
- package/dist/assets/el-progress-njCW9-w4.css +0 -1
- package/dist/assets/el-select-BSO0hXRI.css +0 -1
- package/dist/assets/el-select-CVjQdC39.js +0 -2
- package/dist/assets/el-select-CVjQdC39.js.map +0 -1
- package/dist/assets/el-select-legacy-DSGgSQYX.js +0 -2
- package/dist/assets/el-select-legacy-DSGgSQYX.js.map +0 -1
- package/dist/assets/el-switch-B76QvbJN.js +0 -2
- package/dist/assets/el-switch-B76QvbJN.js.map +0 -1
- package/dist/assets/el-switch-legacy-CHkEgavQ.js +0 -2
- package/dist/assets/el-switch-legacy-CHkEgavQ.js.map +0 -1
- package/dist/assets/el-tab-pane-BhVByOfe.js +0 -2
- package/dist/assets/el-tab-pane-BhVByOfe.js.map +0 -1
- package/dist/assets/el-tab-pane-legacy-DMdhUCHY.js.map +0 -1
- package/dist/assets/el-table-column-legacy-N_oU_-0P.js +0 -24
- package/dist/assets/el-table-column-legacy-N_oU_-0P.js.map +0 -1
- package/dist/assets/el-table-column-tkbtgrcD.js.map +0 -1
- package/dist/assets/index-3yen43So.js +0 -2
- package/dist/assets/index-3yen43So.js.map +0 -1
- package/dist/assets/index-5sS3uHi0.css +0 -1
- package/dist/assets/index-9zuSLjpa.js +0 -2
- package/dist/assets/index-9zuSLjpa.js.map +0 -1
- package/dist/assets/index-B-6zRvEX.js +0 -2
- package/dist/assets/index-B-6zRvEX.js.map +0 -1
- package/dist/assets/index-B5tZv3FB.css +0 -1
- package/dist/assets/index-BN1f1UM3.js +0 -2
- package/dist/assets/index-BN1f1UM3.js.map +0 -1
- package/dist/assets/index-BUmkgniE.js +0 -2
- package/dist/assets/index-BUmkgniE.js.map +0 -1
- package/dist/assets/index-BbfnoqK6.js +0 -2
- package/dist/assets/index-BbfnoqK6.js.map +0 -1
- package/dist/assets/index-BghihfR3.css +0 -1
- package/dist/assets/index-C3IckGNL.js +0 -2
- package/dist/assets/index-C3IckGNL.js.map +0 -1
- package/dist/assets/index-CYAf_OTx.js +0 -40
- package/dist/assets/index-CYAf_OTx.js.map +0 -1
- package/dist/assets/index-Cb6-p2hG.js +0 -2
- package/dist/assets/index-Cb6-p2hG.js.map +0 -1
- package/dist/assets/index-CbkKWoQA.css +0 -1
- package/dist/assets/index-CeWnhlkq.css +0 -1
- package/dist/assets/index-Cfg2jkVw.css +0 -1
- package/dist/assets/index-CkMvb3wF.css +0 -1
- package/dist/assets/index-Cl4G6EQO.js +0 -2
- package/dist/assets/index-Cl4G6EQO.js.map +0 -1
- package/dist/assets/index-CnbFxlpi.css +0 -1
- package/dist/assets/index-Cyb1OjRN.js +0 -2
- package/dist/assets/index-Cyb1OjRN.js.map +0 -1
- package/dist/assets/index-D2p3cWtM.css +0 -1
- package/dist/assets/index-D7aZxhM6.js +0 -2
- package/dist/assets/index-D7aZxhM6.js.map +0 -1
- package/dist/assets/index-DI41wbky.js +0 -2
- package/dist/assets/index-DI41wbky.js.map +0 -1
- package/dist/assets/index-DaSb9EV4.css +0 -1
- package/dist/assets/index-DcOjlpKI.js +0 -2
- package/dist/assets/index-DcOjlpKI.js.map +0 -1
- package/dist/assets/index-DjO-nUIS.js +0 -2
- package/dist/assets/index-DjO-nUIS.js.map +0 -1
- package/dist/assets/index-DnxF29eG.css +0 -1
- package/dist/assets/index-DrKX0cCg.js +0 -2
- package/dist/assets/index-DrKX0cCg.js.map +0 -1
- package/dist/assets/index-F3S0vKOW.js +0 -2
- package/dist/assets/index-F3S0vKOW.js.map +0 -1
- package/dist/assets/index-I78Ur1Md.js +0 -2
- package/dist/assets/index-I78Ur1Md.js.map +0 -1
- package/dist/assets/index-L0LtrfyP.js +0 -2
- package/dist/assets/index-L0LtrfyP.js.map +0 -1
- package/dist/assets/index-XNFQHmLL.css +0 -1
- package/dist/assets/index-dEAnfrhp.css +0 -1
- package/dist/assets/index-hhTdfxnD.css +0 -1
- package/dist/assets/index-lTmxAqnX.js +0 -2
- package/dist/assets/index-lTmxAqnX.js.map +0 -1
- package/dist/assets/index-legacy-BJNK4MqF.js +0 -2
- package/dist/assets/index-legacy-BJNK4MqF.js.map +0 -1
- package/dist/assets/index-legacy-BLlk8iq-.js +0 -42
- package/dist/assets/index-legacy-BLlk8iq-.js.map +0 -1
- package/dist/assets/index-legacy-BmWYm3m_.js +0 -2
- package/dist/assets/index-legacy-BmWYm3m_.js.map +0 -1
- package/dist/assets/index-legacy-Bnp7569A.js +0 -2
- package/dist/assets/index-legacy-Bnp7569A.js.map +0 -1
- package/dist/assets/index-legacy-CQ24Si-w.js +0 -2
- package/dist/assets/index-legacy-CQ24Si-w.js.map +0 -1
- package/dist/assets/index-legacy-CT1nF7s9.js +0 -2
- package/dist/assets/index-legacy-CT1nF7s9.js.map +0 -1
- package/dist/assets/index-legacy-CeVzo60P.js +0 -2
- package/dist/assets/index-legacy-CeVzo60P.js.map +0 -1
- package/dist/assets/index-legacy-Cf0w_PNA.js +0 -2
- package/dist/assets/index-legacy-Cf0w_PNA.js.map +0 -1
- package/dist/assets/index-legacy-DZSQUiaj.js +0 -2
- package/dist/assets/index-legacy-DZSQUiaj.js.map +0 -1
- package/dist/assets/index-legacy-D_K0eXFb.js +0 -2
- package/dist/assets/index-legacy-D_K0eXFb.js.map +0 -1
- package/dist/assets/index-legacy-Da3YyHW_.js +0 -2
- package/dist/assets/index-legacy-Da3YyHW_.js.map +0 -1
- package/dist/assets/index-legacy-Da4s_D85.js +0 -2
- package/dist/assets/index-legacy-Da4s_D85.js.map +0 -1
- package/dist/assets/index-legacy-DhNaKknk.js +0 -2
- package/dist/assets/index-legacy-DhNaKknk.js.map +0 -1
- package/dist/assets/index-legacy-Dm1CXog1.js +0 -2
- package/dist/assets/index-legacy-Dm1CXog1.js.map +0 -1
- package/dist/assets/index-legacy-DpNNn-Dy.js +0 -2
- package/dist/assets/index-legacy-DpNNn-Dy.js.map +0 -1
- package/dist/assets/index-legacy-PkF4cKK9.js +0 -2
- package/dist/assets/index-legacy-PkF4cKK9.js.map +0 -1
- package/dist/assets/index-legacy-QHDmYAB8.js +0 -2
- package/dist/assets/index-legacy-QHDmYAB8.js.map +0 -1
- package/dist/assets/index-legacy-_M1-0586.js +0 -2
- package/dist/assets/index-legacy-_M1-0586.js.map +0 -1
- package/dist/assets/index-legacy-m0dvnwGi.js +0 -2
- package/dist/assets/index-legacy-m0dvnwGi.js.map +0 -1
- package/dist/assets/index-legacy-vRS79jKS.js +0 -2
- package/dist/assets/index-legacy-vRS79jKS.js.map +0 -1
- package/dist/assets/index-ypHH_Z_A.css +0 -1
- package/dist/assets/isEqual-BHpVKj_X.js +0 -2
- package/dist/assets/isEqual-BHpVKj_X.js.map +0 -1
- package/dist/assets/isEqual-legacy-BWUPR8bV.js +0 -2
- package/dist/assets/isEqual-legacy-BWUPR8bV.js.map +0 -1
- package/dist/assets/other-legacy-DjiCmSH4.js +0 -2
- package/dist/assets/other-legacy-DjiCmSH4.js.map +0 -1
- package/dist/assets/other-yMAyytYx.js +0 -2
- package/dist/assets/other-yMAyytYx.js.map +0 -1
- package/dist/assets/polyfills-legacy-CPmsgIAF.js +0 -4
- package/dist/assets/refresh-DPuuDO9h.js.map +0 -1
- package/dist/assets/refresh-legacy-DOts-8Wc.js.map +0 -1
- package/dist/assets/tip-CH7nBVXc.js +0 -2
- package/dist/assets/tip-CH7nBVXc.js.map +0 -1
- package/dist/assets/tip-legacy-DiCk_qP1.js +0 -2
- package/dist/assets/tip-legacy-DiCk_qP1.js.map +0 -1
- package/dist/assets/validator-BMr-jeUB.js +0 -2
- package/dist/assets/validator-BMr-jeUB.js.map +0 -1
- package/dist/assets/validator-legacy-CacjPWoF.js +0 -2
- package/dist/assets/validator-legacy-CacjPWoF.js.map +0 -1
- /package/dist/assets/{el-date-picker-NjWHL2Br.css → el-date-picker-C36c2CGO.css} +0 -0
- /package/dist/assets/{el-dropdown-item-CUgTpiu6.css → el-dropdown-item-5b6bMUQF.css} +0 -0
- /package/dist/assets/{el-loading-Uv12lkco.css → el-loading-BPl8mdQ3.css} +0 -0
- /package/dist/assets/{el-pagination-MvCAleW2.css → el-pagination-DMHBWKFj.css} +0 -0
- /package/dist/assets/{el-switch-D6dVIPlw.css → el-switch-CH9HekZJ.css} +0 -0
- /package/dist/assets/{el-tab-pane-kUw7IczA.css → el-tab-pane-CO1C5qCV.css} +0 -0
- /package/dist/assets/{el-table-column-DMXHP8sd.css → el-table-column-x3grTP_N.css} +0 -0
- /package/dist/assets/{tip-ovQu2XSt.css → tip-rRSL6nZ2.css} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
System.register(["./index-legacy-BLlk8iq-.js","./el-form-item-legacy-CvQy7syv.js","./el-date-picker-legacy-Uk9x97L5.js","./el-dialog-legacy-BRLM43ZY.js","./el-pagination-legacy-Bf-Bzx7n.js","./el-select-legacy-DSGgSQYX.js","./el-table-column-legacy-N_oU_-0P.js","./tip-legacy-DiCk_qP1.js","./index-legacy-C-gHf8SN.js","./refresh-legacy-DOts-8Wc.js","./index-legacy-CQ24Si-w.js","./isEqual-legacy-BWUPR8bV.js","./index-legacy-Da4s_D85.js","./validator-legacy-CacjPWoF.js","./aria-legacy-B70JmEZA.js"],(function(e,l){"use strict";var a,t,o,n,u,i,s,r,d,c,p,m,f,v,w,g,b,h,y,C,x,V,_,z,k,S,U,T,j,E,M,$,L,B,F,A,H,P,O,D,R,q,N,I,Z,G,W,Y,J,K,Q;return{setters:[e=>{a=e.g,t=e.d,o=e.a,n=e.c,u=e.b,i=e.r,s=e.Z,r=e.bt,d=e.O,c=e.o,p=e.a6,m=e.j,f=e.w,v=e.F,w=e.C,g=e.D,b=e.k,h=e.bu,y=e.e,C=e.t,x=e.s,V=e.a5,_=e.S,z=e.H,k=e.a0,S=e.E,U=e.q,T=e.P,j=e.v,E=e.x,M=e.p,$=e.f,L=e.z,B=e.A,F=e._},e=>{A=e.E,H=e.a},e=>{P=e.d,O=e.E},e=>{D=e.u,R=e.E},e=>{q=e.s,N=e.E},e=>{I=e.E,Z=e.a},e=>{G=e.E,W=e.a},e=>{Y=e.T},e=>{J=e.U},e=>{K=e.r},e=>{Q=e.E},null,null,null,null],execute:function(){var l=document.createElement("style");l.textContent="@media screen and (max-width: 700px){.user[data-v-5fb60ef4]{margin-top:40px!important}.log-filter[data-v-5fb60ef4]{justify-content:center}}.w100[data-v-5fb60ef4]{width:100px}.user[data-v-5fb60ef4]{margin:0 auto}.panel[data-v-5fb60ef4]{max-width:1256px;padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}.log-filter[data-v-5fb60ef4]{display:flex;flex-wrap:wrap}.log-filter .item[data-v-5fb60ef4]{margin-right:10px;margin-bottom:10px}.log-filter .item .label[data-v-5fb60ef4]{margin-right:10px;font-size:12px}.text-btn-list[data-v-5fb60ef4]{display:flex;flex-wrap:wrap}.text-btn-list button[data-v-5fb60ef4]{margin-left:0}.user-oss-info[data-v-5fb60ef4]{list-style:none}.user-oss-info li[data-v-5fb60ef4]{margin-bottom:10px}.user-oss-info .clear-btn[data-v-5fb60ef4]{margin-left:10px}.user-oss-info.disabled[data-v-5fb60ef4]{background-color:rgba(245,108,108,.3)}\n",document.head.appendChild(l);const X=t({name:"Message"}),ee={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},le=[u("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),u("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)];var ae=a(X,[["render",function(e,l,a,t,u,i){return o(),n("svg",ee,le)}]]);const te=t({name:"Money"}),oe={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ne=[u("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),u("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),u("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)];var ue=a(te,[["render",function(e,l,a,t,u,i){return o(),n("svg",oe,ne)}]]);const ie=e=>(M("data-v-5fb60ef4"),e=e(),$(),e),se={class:"user"},re={class:"panel"},de={class:"p10 log-filter"},ce={class:"item"},pe=ie((()=>u("span",{class:"label"},"状态",-1))),me={class:"item"},fe=ie((()=>u("span",{class:"label"},"排序",-1))),ve={class:"item"},we={class:"item"},ge={class:"item"},be=ie((()=>u("br",null,null,-1))),he=ie((()=>u("br",null,null,-1))),ye=ie((()=>u("br",null,null,-1))),Ce=ie((()=>u("br",null,null,-1))),xe=ie((()=>u("br",null,null,-1))),Ve=ie((()=>u("br",null,null,-1))),_e=ie((()=>u("br",null,null,-1))),ze=ie((()=>u("br",null,null,-1))),ke=ie((()=>u("br",null,null,-1))),Se=ie((()=>u("br",null,null,-1))),Ue=ie((()=>u("br",null,null,-1))),Te={class:"text-btn-list"},je={class:"flex fc p10"},Ee={class:"tc"},Me={class:"dialog-footer"},$e={class:"tc"},Le={key:0,style:{"margin-top":"10px"},class:"tc"},Be={class:"dialog-footer"},Fe={class:"tc"},Ae={class:"dialog-footer"},He={class:"tc"},Pe={class:"dialog-footer"},Oe={class:"tc"},De={class:"dialog-footer"},Re={class:"tc"},qe={class:"dialog-footer"},Ne=t({__name:"index",setup(e){const l=i(""),a=s([]);function t(){k.getUserList().then((e=>{a.splice(0,a.length,...e.data.list),l.value=e.data.sumCost,S.success("列表数据刷新成功")}))}const M=r("userStatusType",J.NORMAL),$=i(""),F=s([{label:"正常",type:J.NORMAL},{label:"冻结",type:J.FREEZE},{label:"封禁",type:J.BAN}]),X=r("userListSortType","id"),ee=[{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"}],le=r("userListSortOrder","desc"),te=[{label:"升序",value:"asc"},{label:"降序",value:"desc"}],oe=d((()=>{const e=[...a];return e.sort(((e,l)=>"asc"===le.value?e[X.value]-l[X.value]:l[X.value]-e[X.value])),e.filter((e=>e.status===M.value)).filter((e=>{const{id:l,account:a,phone:t,joinTime:o,loginCount:n,loginTime:u,openTime:i}=e;return 0===$.value.length||`${l} ${a} ${t} ${u} ${x(i)} ${x(n)} ${x(o)}`.includes($.value)}))})),ne=r("userListPageSize",10);function ie(e){ne.value=e}const Ne=d((()=>Math.ceil(oe.value.length/ne.value))),Ie=i(1),Ze=d((()=>{const e=(Ie.value-1)*ne.value,l=Ie.value*ne.value;return oe.value.slice(e,l)}));function Ge(e){Ie.value=e}const We=i(!1),Ye=i(0),Je=i(J.NORMAL),Ke=F,Qe=i("");function Xe(){const e=a.find((e=>e.id===Ye.value));if(Je.value===J.FREEZE){if(!Qe.value)return void S.warning("请设置解冻时间");e.openTime=Qe.value}else e.openTime="";e.status=Je.value,We.value=!1,k.updateUserStatus(e.id,e.status,e.openTime).then((()=>{S.success("修改成功")}))}const el=i(!1),ll=s({pwd1:"",pwd2:""});function al(){(L.test(ll.pwd1)?ll.pwd1===ll.pwd2||(S.warning("两次输入的密码不一致"),0):(S.warning("密码格式不正确(6-16位 支持字母/数字/下划线)"),0))&&Q.confirm("此操作不可逆,请谨慎操作","确定要重置用户的密码吗?",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((()=>{k.resetPassword(Ye.value,ll.pwd1).then((()=>{S.success("重置成功"),el.value=!1}))})).catch((()=>{}))}const tl=i(!1),ol=s({size:2});async function nl(){+ol.size<0?S.warning("空间上限不能小于0"):(await k.resetLimitSpace(Ye.value,+ol.size),S.success("修改成功"),tl.value=!1,t())}const ul=i(!1),il=s({money:2});async function sl(){+il.money<0?S.warning("余额不能小于0"):(await k.updateWallet(Ye.value,+il.money),S.success("修改成功"),ul.value=!1,t())}const rl=i(!1),dl=s({phone:"",code:""}),cl=i("获取验证码"),pl=i(0);function ml(){0!==pl.value?(cl.value=`${pl.value}s`,pl.value-=1,setTimeout(ml,1e3)):cl.value="获取验证码"}function fl(){U.test(dl.phone)?T.checkPhone(dl.phone).then((()=>{T.getCode(dl.phone).then((()=>{pl.value=120,ml(),S.success("获取成功,请注意查看手机短信")}))})).catch((e=>{const{code:l}=e;S.error({1002:"手机号已被注册",1006:"手机号格式不正确"}[l]||"注册失败,未知错误")})):S.warning("手机号格式不正确")}async function vl(){(U.test(dl.phone)?B.test(dl.code)||(S.warning("验证码格式不正确"),0):(S.warning("手机号格式不正确"),0))&&k.resetPhone(Ye.value,dl.phone,dl.code).then((()=>{S.success("绑定成功"),rl.value=!1,dl.code="",dl.phone="",t()})).catch((e=>{const{code:l}=e;S.error({1002:"手机号已被注册",1003:"验证码不正确"}[l]||"绑定失败,未知错误")}))}function wl(e,l){Ye.value=e,Q.confirm("移除后这些文件将无法恢复,请谨慎操作","删除前确认?",{confirmButtonText:`确认删除 ${{month:"一个月前",quarter:"三个月前",half:"半年前"}[l]}文件`}).then((()=>{k.clearOssFile(e,l).then((()=>{S.success("清理成功")}))})).catch((()=>{}))}const gl=i(1),bl=i(!1),hl=i("");function yl(e,l=1){Ye.value=e,gl.value=l,bl.value=!0}function Cl(){k.sendMessage(hl.value,gl.value,Ye.value).then((()=>{S.success("推送成功"),hl.value="",bl.value=!1}))}c((()=>{t()}));const xl=D(),{moneyStartDay:Vl}=p();return(e,a)=>{const i=I,s=Z,r=j,d=E,c=G,p=W,U=N,T=R,L=O,B=A,D=H;return o(),n("div",se,[u("div",re,[u("div",de,[u("span",ce,[pe,m(s,{modelValue:b(M),"onUpdate:modelValue":a[0]||(a[0]=e=>h(M)?M.value=e:null),size:"default",class:"w100"},{default:f((()=>[(o(!0),n(v,null,w(F,((e,l)=>(o(),g(i,{key:l,label:e.label,value:e.type},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])]),u("span",me,[fe,m(s,{modelValue:b(X),"onUpdate:modelValue":a[1]||(a[1]=e=>h(X)?X.value=e:null),size:"default",class:"w100"},{default:f((()=>[(o(),n(v,null,w(ee,((e,l)=>m(i,{key:l,label:e.label,value:e.value},null,8,["label","value"]))),64))])),_:1},8,["modelValue"]),m(s,{modelValue:b(le),"onUpdate:modelValue":a[2]||(a[2]=e=>h(le)?le.value=e:null),size:"default",class:"w100"},{default:f((()=>[(o(),n(v,null,w(te,((e,l)=>m(i,{key:l,label:e.label,value:e.value},null,8,["label","value"]))),64))])),_:1},8,["modelValue"])]),u("span",ve,[m(r,{modelValue:$.value,"onUpdate:modelValue":a[3]||(a[3]=e=>$.value=e),size:"default",clearable:"",placeholder:"请输入要检索的内容","prefix-icon":b(q)},null,8,["modelValue","prefix-icon"])]),u("span",we,[m(d,{size:"default",icon:b(K),onClick:t},{default:f((()=>[y("刷新")])),_:1},8,["icon"])]),u("span",ge,[m(d,{size:"warning",icon:b(ae),onClick:a[4]||(a[4]=e=>yl(null,0))},{default:f((()=>[y("推送全局消息")])),_:1},8,["icon"])])]),m(Y,null,{default:f((()=>[y(" 预估费用:"+C(l.value)+"¥, 计费起始时间:"+C(b(x)(b(Vl))),1)])),_:1}),m(p,{height:"550",stripe:"",border:"","default-sort":{prop:"date",order:"descending"},data:Ze.value,style:{width:"100%"}},{default:f((()=>[m(c,{prop:"id",label:"ID",width:"60"}),m(c,{prop:"account",label:"账号",width:"130"}),m(c,{prop:"phone",label:"手机号",width:"80"}),m(c,{label:"统计",width:"190"},{default:f((e=>[y(" 最后登录:"+C(e.row.loginTime&&b(x)(new Date(e.row.loginTime))),1),be,y(" 注册时间:"+C(b(x)(new Date(e.row.joinTime))),1),he,y(" 登录次数:"+C(e.row.loginCount),1),ye,y(" token: "+C(e.row.onlineCount),1),Ce])),_:1}),m(c,{prop:"downloadCount",label:"累计下载"},{default:f((({row:{downloadCount:e,downloadSize:l,oneFile:a,compressFile:t,templateFile:o}})=>[y(C(e)+" / "+C(b(V)(l)),1),xe,y(" 单文件:"+C(a.count)+" / "+C(b(V)(a.size)),1),Ve,y(" 归档:"+C(t.count)+" / "+C(b(V)(t.size)),1),_e,y(" 模板:"+C(o.count)+" / "+C(b(V)(o.size)),1)])),_:1}),1===b(M)?(o(),g(c,{key:0,prop:"openTime",label:"解封时间"},{default:f((e=>[y(C(e.row.openTime&&b(x)(new Date(e.row.openTime))),1)])),_:1})):_("",!0),m(c,{prop:"fileCount",label:"文件"},{default:f((e=>[y(" 累计:"+C(e.row.fileCount)+"/"+C(b(V)(e.row.originFileSize)),1),ze,y(" OSS:"+C(e.row.ossCount)+"/"+C(b(V)(e.row.usage)),1),ke,y(" 平均:"+C(e.row.originFileSize&&e.row.fileCount&&b(V)(Math.round(e.row.originFileSize/e.row.fileCount))),1),Se,y(" 平均:"+C(e.row.usage&&e.row.ossCount&&b(V)(Math.round(e.row.usage/e.row.ossCount))),1),Ue])),_:1}),m(c,{label:"云空间",width:"240"},{default:f((({row:{wallet:e,price:l,balance:a,resources:t,monthAgoSize:n,quarterAgoSize:i,halfYearSize:s,id:r,limitSize:c,limitUpload:p,percentage:f}})=>[u("ul",{class:z(["user-oss-info",{disabled:p}])},[u("li",null,[y(" ¥:"+C(l.total)+" / "+C(e)+" = "+C(a)+" ",1),m(d,{icon:b(ue),circle:"",size:"small",onClick:e=>function(e){const{backhaulTrafficPrice:l,cdnPrice:a,compressPrice:t,ossPrice:o}=e;Q.confirm(`存储:${o}, 下载:${a},压缩:${t},回源:${l}`,{showCancelButton:!1})}(l)},null,8,["icon","onClick"])]),u("li",null,C(f)+"% "+C(t)+"/"+C(c),1),u("li",null,[y(" 一月前:"+C(n),1),"0B"!==t?(o(),g(d,{key:0,class:"clear-btn",icon:b(P),circle:"",size:"small",onClick:e=>wl(r,"month")},null,8,["icon","onClick"])):_("",!0)]),u("li",null,[y(" 三月前:"+C(i),1),"0B"!==i?(o(),g(d,{key:0,class:"clear-btn",icon:b(P),circle:"",size:"small",onClick:e=>wl(r,"quarter")},null,8,["icon","onClick"])):_("",!0)]),u("li",null,[y(" 半年前:"+C(s),1),"0B"!==s?(o(),g(d,{key:0,class:"clear-btn",icon:b(P),circle:"",size:"small",onClick:e=>wl(r,"half")},null,8,["icon","onClick"])):_("",!0)])],2)])),_:1}),m(c,{fixed:"right",label:"操作",width:"100"},{default:f((e=>[u("div",Te,[m(d,{type:"primary",text:"",size:"small",onClick:l=>{return a=e.row.id,t=e.row.status,o=e.row.openTime,Ye.value=a,Je.value=t,Qe.value=o,void(We.value=!0);var a,t,o}},{default:f((()=>[y(" 修改状态 ")])),_:2},1032,["onClick"]),m(d,{type:"primary",text:"",size:"small",onClick:l=>{return a=e.row.id,Ye.value=a,el.value=!0,ll.pwd1="",void(ll.pwd2="");var a}},{default:f((()=>[y(" 重置密码 ")])),_:2},1032,["onClick"]),m(d,{type:"primary",text:"",size:"small",onClick:l=>{return a=e.row.id,Ye.value=a,void(rl.value=!0);var a}},{default:f((()=>[y(" 绑定手机号 ")])),_:2},1032,["onClick"]),m(d,{type:"warning",text:"",size:"small",onClick:l=>yl(e.row.id)},{default:f((()=>[y(" 发送消息 ")])),_:2},1032,["onClick"]),m(d,{type:"danger",text:"",size:"small",onClick:l=>{return a=e.row.id,t=e.row.size,Ye.value=a,ol.size=t,void(tl.value=!0);var a,t}},{default:f((()=>[y(" 修改上限 ")])),_:2},1032,["onClick"]),m(d,{type:"danger",text:"",size:"small",onClick:l=>function(e,l){Ye.value=e,il.money=l,ul.value=!0}(e.row.id,e.row.wallet)},{default:f((()=>[y(" 修改余额 ")])),_:2},1032,["onClick"]),0!==e.row.onlineCount?(o(),g(d,{key:0,type:"danger",text:"",size:"small",onClick:l=>{return a=e.row.account,void k.logout(a).then((()=>{S.success(`下线成功 ${a}`),t()}));var a}},{default:f((()=>[y(" 一键下线 ")])),_:2},1032,["onClick"])):_("",!0)])])),_:1})])),_:1},8,["data"]),u("div",je,[m(U,{"current-page":Ie.value,background:"","page-count":Ne.value,"page-sizes":[10,50,100,200],"page-size":b(ne),total:oe.value.length,layout:"total, sizes, prev, pager, next, jumper",onCurrentChange:Ge,onSizeChange:ie},null,8,["current-page","page-count","page-size","total"])])]),m(T,{modelValue:bl.value,"onUpdate:modelValue":a[7]||(a[7]=e=>bl.value=e),fullscreen:b(xl),center:"",title:"消息推送"},{footer:f((()=>[u("span",Me,[m(d,{onClick:a[6]||(a[6]=e=>bl.value=!1)},{default:f((()=>[y("取 消")])),_:1}),m(d,{type:"primary",onClick:Cl},{default:f((()=>[y("确 定")])),_:1})])])),default:f((()=>[u("div",Ee,[m(r,{modelValue:hl.value,"onUpdate:modelValue":a[5]||(a[5]=e=>hl.value=e),autosize:{minRows:6,maxRows:20},type:"textarea",placeholder:"输入要推送的消息,支持HTML内容(推荐使用mdnice 转 markdown 转html)"},null,8,["modelValue"])])])),_:1},8,["modelValue","fullscreen"]),m(T,{modelValue:We.value,"onUpdate:modelValue":a[11]||(a[11]=e=>We.value=e),fullscreen:b(xl),center:"",title:"状态修改"},{footer:f((()=>[u("span",Be,[m(d,{onClick:a[10]||(a[10]=e=>We.value=!1)},{default:f((()=>[y("取 消")])),_:1}),m(d,{type:"primary",onClick:Xe},{default:f((()=>[y("确 定")])),_:1})])])),default:f((()=>[u("div",$e,[m(s,{modelValue:Je.value,"onUpdate:modelValue":a[8]||(a[8]=e=>Je.value=e),placeholder:"请选择新分类"},{default:f((()=>[(o(!0),n(v,null,w(b(Ke),(e=>(o(),g(i,{key:e.type,label:e.label,value:e.type},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])]),1===Je.value?(o(),n("div",Le,[m(L,{modelValue:Qe.value,"onUpdate:modelValue":a[9]||(a[9]=e=>Qe.value=e),editable:!1,type:"datetime",placeholder:"点击设置解封日期"},null,8,["modelValue"])])):_("",!0)])),_:1},8,["modelValue","fullscreen"]),m(T,{modelValue:el.value,"onUpdate:modelValue":a[15]||(a[15]=e=>el.value=e),fullscreen:b(xl),center:"",title:"密码重置"},{footer:f((()=>[u("span",Ae,[m(d,{onClick:a[14]||(a[14]=e=>el.value=!1)},{default:f((()=>[y("取 消")])),_:1}),m(d,{type:"primary",onClick:al},{default:f((()=>[y("确 定")])),_:1})])])),default:f((()=>[u("div",Fe,[m(D,{model:ll,"label-width":"80px"},{default:f((()=>[m(B,{label:"新密码"},{default:f((()=>[m(r,{modelValue:ll.pwd1,"onUpdate:modelValue":a[12]||(a[12]=e=>ll.pwd1=e),"show-word-limit":"",clearable:"",placeholder:"请输入新密码",maxlength:"16",minlength:"6"},null,8,["modelValue"])])),_:1}),m(B,null,{default:f((()=>[m(r,{modelValue:ll.pwd2,"onUpdate:modelValue":a[13]||(a[13]=e=>ll.pwd2=e),"show-word-limit":"",clearable:"",placeholder:"请再次输入",maxlength:"16",minlength:"6"},null,8,["modelValue"])])),_:1})])),_:1},8,["model"])])])),_:1},8,["modelValue","fullscreen"]),m(T,{modelValue:rl.value,"onUpdate:modelValue":a[19]||(a[19]=e=>rl.value=e),fullscreen:b(xl),center:"",title:"绑定手机号"},{footer:f((()=>[u("span",Pe,[m(d,{onClick:a[18]||(a[18]=e=>rl.value=!1)},{default:f((()=>[y("取 消")])),_:1}),m(d,{type:"primary",onClick:vl},{default:f((()=>[y("确 定")])),_:1})])])),default:f((()=>[u("div",He,[m(D,{model:dl,"label-width":"60px"},{default:f((()=>[m(B,{label:"手机号"},{default:f((()=>[m(r,{modelValue:dl.phone,"onUpdate:modelValue":a[16]||(a[16]=e=>dl.phone=e),"show-word-limit":"",clearable:"",placeholder:"请输入手机号",maxlength:"11"},{append:f((()=>[m(d,{disabled:0!==pl.value,onClick:fl},{default:f((()=>[y(C(cl.value),1)])),_:1},8,["disabled"])])),_:1},8,["modelValue"])])),_:1}),m(B,null,{default:f((()=>[m(r,{modelValue:dl.code,"onUpdate:modelValue":a[17]||(a[17]=e=>dl.code=e),"show-word-limit":"",clearable:"",placeholder:"请输入验证码",maxlength:"4"},null,8,["modelValue"])])),_:1})])),_:1},8,["model"])])])),_:1},8,["modelValue","fullscreen"]),m(T,{modelValue:tl.value,"onUpdate:modelValue":a[22]||(a[22]=e=>tl.value=e),fullscreen:b(xl),center:"",title:"修改空间上限"},{footer:f((()=>[u("span",De,[m(d,{onClick:a[21]||(a[21]=e=>tl.value=!1)},{default:f((()=>[y("取 消")])),_:1}),m(d,{type:"primary",onClick:nl},{default:f((()=>[y("确 定")])),_:1})])])),default:f((()=>[u("div",Oe,[m(D,{model:ol,"label-width":"60px"},{default:f((()=>[m(B,{label:"大小"},{default:f((()=>[m(r,{modelValue:ol.size,"onUpdate:modelValue":a[20]||(a[20]=e=>ol.size=e),"show-word-limit":"",clearable:"",placeholder:"请输入空间上限",maxlength:"4",type:"number"},{append:f((()=>[y(" GB ")])),_:1},8,["modelValue"])])),_:1})])),_:1},8,["model"])])])),_:1},8,["modelValue","fullscreen"]),m(T,{modelValue:ul.value,"onUpdate:modelValue":a[25]||(a[25]=e=>ul.value=e),fullscreen:b(xl),center:"",title:"修改空间上限"},{footer:f((()=>[u("span",qe,[m(d,{onClick:a[24]||(a[24]=e=>ul.value=!1)},{default:f((()=>[y("取 消")])),_:1}),m(d,{type:"primary",onClick:sl},{default:f((()=>[y("确 定")])),_:1})])])),default:f((()=>[u("div",Re,[m(D,{model:il,"label-width":"60px"},{default:f((()=>[m(B,{label:"余额"},{default:f((()=>[m(r,{modelValue:il.money,"onUpdate:modelValue":a[23]||(a[23]=e=>il.money=e),"show-word-limit":"",clearable:"",placeholder:"请输入新的余额",maxlength:"4",type:"number"},{append:f((()=>[y(" ¥ ")])),_:1},8,["modelValue"])])),_:1})])),_:1},8,["model"])])])),_:1},8,["modelValue","fullscreen"])])}}});e("default",F(Ne,[["__scopeId","data-v-5fb60ef4"]]))}}}));
|
|
2
|
-
//# sourceMappingURL=index-legacy-DhNaKknk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-legacy-DhNaKknk.js","sources":["../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/message.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/money.mjs","../../src/pages/dashboard/manage/user/index.vue"],"sourcesContent":["import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Message\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M128 224v512a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V224H128zm0-64h768a64 64 0 0 1 64 64v512a128 128 0 0 1-128 128H192A128 128 0 0 1 64 736V224a64 64 0 0 1 64-64z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M904 224 656.512 506.88a192 192 0 0 1-289.024 0L120 224h784zm-698.944 0 210.56 240.704a128 128 0 0 0 192.704 0L818.944 224H205.056z\"\n}, null, -1);\nconst _hoisted_4 = [\n _hoisted_2,\n _hoisted_3\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_4);\n}\nvar message = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { message as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Money\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M256 640v192h640V384H768v-64h150.976c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H233.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096c-2.688-5.184-4.224-10.368-4.224-24.576V640h64z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M768 192H128v448h640V192zm64-22.976v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096C65.536 682.432 64 677.248 64 663.04V169.024c0-14.272 1.472-19.456 4.288-24.64a29.056 29.056 0 0 1 12.096-12.16C85.568 129.536 90.752 128 104.96 128h685.952c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64z\"\n}, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M448 576a160 160 0 1 1 0-320 160 160 0 0 1 0 320zm0-64a96 96 0 1 0 0-192 96 96 0 0 0 0 192z\"\n}, null, -1);\nconst _hoisted_5 = [\n _hoisted_2,\n _hoisted_3,\n _hoisted_4\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_5);\n}\nvar money = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { money as default };\n","<script lang=\"ts\" setup>\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, onMounted, reactive, ref } from 'vue'\nimport { DeleteFilled, Message, Money, Refresh, Search } from '@element-plus/icons-vue'\nimport { useLocalStorage } from '@vueuse/core'\nimport Tip from '../../tasks/components/infoPanel/tip.vue'\nimport { PublicApi, SuperUserApi } from '@/apis'\nimport { USER_STATUS } from '@/constants'\nimport { formatDate, formatSize } from '@/utils/stringUtil'\nimport { rMobilePhone, rPassword, rVerCode } from '@/utils/regExp'\n\nimport { useIsMobile, useSiteConfig } from '@/composables'\n\nconst sumCost = ref('')\n// 用户\nconst users = reactive<SuperUserApiTypes.UserItem[]>([])\nfunction refreshUsers() {\n SuperUserApi.getUserList().then((res) => {\n users.splice(0, users.length, ...res.data.list)\n sumCost.value = res.data.sumCost\n ElMessage.success('列表数据刷新成功')\n })\n}\n\n// 筛选用户状态\nconst userStatusType = useLocalStorage('userStatusType', USER_STATUS.NORMAL)\nconst searchWord = ref('')\nconst statusTypeList = reactive([\n {\n label: '正常',\n type: USER_STATUS.NORMAL,\n },\n {\n label: '冻结',\n type: USER_STATUS.FREEZE,\n },\n {\n label: '封禁',\n type: USER_STATUS.BAN,\n },\n])\nconst sortType = useLocalStorage('userListSortType', 'id')\nconst sortTypeList = [\n {\n label: 'ID',\n value: 'id',\n },\n {\n label: '累计上传数量',\n value: 'fileCount',\n },\n {\n label: '累计占用空间',\n value: 'originFileSize',\n },\n {\n label: 'OSS文件数量',\n value: 'ossCount',\n },\n {\n label: '最后登录时间',\n value: 'lastLoginTime',\n },\n {\n label: '登录次数',\n value: 'login_count',\n },\n {\n label: '容量大小',\n value: 'size',\n },\n {\n label: '占用空间',\n value: 'usage',\n },\n {\n label: '限制使用',\n value: 'limitUpload',\n },\n {\n label: '下载次数',\n value: 'downloadCount',\n },\n {\n label: '累计下载大小',\n value: 'downloadSize',\n },\n {\n label: '累计费用',\n value: 'cost',\n },\n]\n\n// 升降序\nconst sortOrder = useLocalStorage('userListSortOrder', 'desc')\nconst sortOrderList = [\n {\n label: '升序',\n value: 'asc',\n },\n {\n label: '降序',\n value: 'desc',\n },\n]\nconst filterUsers = computed(() => {\n const copyUsers = [...users]\n copyUsers.sort((a, b) => {\n return sortOrder.value === 'asc'\n ? a[sortType.value] - b[sortType.value]\n : b[sortType.value] - a[sortType.value]\n })\n return copyUsers\n .filter(v => v.status === userStatusType.value)\n .filter((v) => {\n const {\n id,\n account,\n phone,\n joinTime,\n loginCount,\n loginTime,\n openTime,\n } = v\n if (searchWord.value.length === 0)\n return true\n return `${id} ${account} ${phone} ${loginTime} ${formatDate(\n openTime,\n )} ${formatDate(loginCount)} ${formatDate(joinTime)}`.includes(\n searchWord.value,\n )\n })\n})\n\n// 分页\nconst pageSize = useLocalStorage<number>('userListPageSize', 10)\nfunction handleSizeChange(v: number) {\n pageSize.value = v\n}\nconst pageCount = computed(() => {\n const t = Math.ceil(filterUsers.value.length / pageSize.value)\n return t\n})\nconst pageCurrent = ref(1)\nconst pageUsers = computed(() => {\n const start = (pageCurrent.value - 1) * pageSize.value\n const end = pageCurrent.value * pageSize.value\n return filterUsers.value.slice(start, end)\n})\nfunction handlePageChange(idx: number) {\n pageCurrent.value = idx\n}\n\n// 状态修改\nconst showUserStatusDialog = ref(false)\nconst selectUserId = ref(0)\nconst selectStatus = ref(USER_STATUS.NORMAL)\nconst userStatusList = statusTypeList\nconst openTime = ref('')\nfunction handleChangeStatus(userId: number, status: USER_STATUS, oTime: string) {\n selectUserId.value = userId\n selectStatus.value = status\n openTime.value = oTime\n showUserStatusDialog.value = true\n}\nfunction handleSaveStatus() {\n const user = users.find(u => u.id === selectUserId.value)\n if (selectStatus.value === USER_STATUS.FREEZE) {\n if (!openTime.value) {\n ElMessage.warning('请设置解冻时间')\n return\n }\n user.openTime = openTime.value\n }\n else {\n user.openTime = ''\n }\n user.status = selectStatus.value\n showUserStatusDialog.value = false\n SuperUserApi.updateUserStatus(user.id, user.status, user.openTime).then(\n () => {\n ElMessage.success('修改成功')\n },\n )\n}\n\n// 重置密码\nconst showResetPasswordDialog = ref(false)\nconst pwdForm = reactive({\n pwd1: '',\n pwd2: '',\n})\nfunction handleResetPassword(userId: number) {\n selectUserId.value = userId\n showResetPasswordDialog.value = true\n pwdForm.pwd1 = ''\n pwdForm.pwd2 = ''\n}\n\nfunction checkPwdForm() {\n if (!rPassword.test(pwdForm.pwd1)) {\n ElMessage.warning('密码格式不正确(6-16位 支持字母/数字/下划线)')\n return false\n }\n if (pwdForm.pwd1 !== pwdForm.pwd2) {\n ElMessage.warning('两次输入的密码不一致')\n return false\n }\n\n return true\n}\n\nfunction handleSavePassword() {\n if (!checkPwdForm())\n return\n ElMessageBox.confirm('此操作不可逆,请谨慎操作', '确定要重置用户的密码吗?', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n })\n .then(() => {\n SuperUserApi.resetPassword(selectUserId.value, pwdForm.pwd1).then(() => {\n ElMessage.success('重置成功')\n showResetPasswordDialog.value = false\n })\n })\n .catch(() => {\n //\n })\n}\n\n// 限制空间大小\nconst showLimitSizeDialog = ref(false)\nconst limitSizeForm = reactive({\n size: 2,\n})\nfunction handleRewriteSize(id: number, size: number) {\n selectUserId.value = id\n limitSizeForm.size = size\n showLimitSizeDialog.value = true\n}\nasync function handleSaveSize() {\n if (+limitSizeForm.size < 0) {\n ElMessage.warning('空间上限不能小于0')\n return\n }\n await SuperUserApi.resetLimitSpace(selectUserId.value, +limitSizeForm.size)\n // 接口调用修改\n ElMessage.success('修改成功')\n showLimitSizeDialog.value = false\n refreshUsers()\n}\n// TODO: 重复代码优化\n// 修改余额\nconst showWalletDialog = ref(false)\nconst walletForm = reactive({\n money: 2,\n})\nfunction handleRewriteWallet(id: number, money: number) {\n selectUserId.value = id\n walletForm.money = money\n showWalletDialog.value = true\n}\nasync function handleSaveWallet() {\n if (+walletForm.money < 0) {\n ElMessage.warning('余额不能小于0')\n return\n }\n await SuperUserApi.updateWallet(selectUserId.value, +walletForm.money)\n // 接口调用修改\n ElMessage.success('修改成功')\n showWalletDialog.value = false\n refreshUsers()\n}\n\n// 绑定手机号\nconst showPhoneDialog = ref(false)\nconst phoneForm = reactive({\n phone: '',\n code: '',\n})\nconst codeText = ref('获取验证码')\nconst time = ref(0)\nfunction refreshCodeText() {\n if (time.value === 0) {\n codeText.value = '获取验证码'\n return\n }\n codeText.value = `${time.value}s`\n time.value -= 1\n setTimeout(refreshCodeText, 1000)\n}\nfunction getCode() {\n if (!rMobilePhone.test(phoneForm.phone)) {\n ElMessage.warning('手机号格式不正确')\n return\n }\n // check是否可用\n PublicApi.checkPhone(phoneForm.phone)\n .then(() => {\n PublicApi.getCode(phoneForm.phone).then(() => {\n time.value = 120\n refreshCodeText()\n ElMessage.success('获取成功,请注意查看手机短信')\n })\n })\n .catch((err) => {\n const { code: c } = err\n const msg = '注册失败,未知错误'\n const options: any = {\n 1002: '手机号已被注册',\n 1006: '手机号格式不正确',\n }\n ElMessage.error(options[c] || msg)\n })\n}\nfunction checkPhoneForm() {\n if (!rMobilePhone.test(phoneForm.phone)) {\n ElMessage.warning('手机号格式不正确')\n return false\n }\n if (!rVerCode.test(phoneForm.code)) {\n ElMessage.warning('验证码格式不正确')\n return false\n }\n\n return true\n}\nfunction handleBindPhone(id: number) {\n selectUserId.value = id\n showPhoneDialog.value = true\n}\nasync function handleSavePhone() {\n if (!checkPhoneForm()) {\n return\n }\n // 调用API更新,验证码 不正确判断\n SuperUserApi.resetPhone(selectUserId.value, phoneForm.phone, phoneForm.code)\n .then(() => {\n ElMessage.success('绑定成功')\n showPhoneDialog.value = false\n phoneForm.code = ''\n phoneForm.phone = ''\n refreshUsers()\n })\n .catch((err) => {\n const { code: c } = err\n const msg = '绑定失败,未知错误'\n const options: any = {\n 1002: '手机号已被注册',\n 1003: '验证码不正确',\n }\n ElMessage.error(options[c] || msg)\n })\n}\n\nfunction handleClearFiles(userId: number, type: 'month' | 'quarter' | 'half') {\n const tipWords = {\n month: '一个月前',\n quarter: '三个月前',\n half: '半年前',\n }\n selectUserId.value = userId\n ElMessageBox.confirm('移除后这些文件将无法恢复,请谨慎操作', '删除前确认?', {\n confirmButtonText: `确认删除 ${tipWords[type]}文件`,\n })\n .then(() => {\n SuperUserApi.clearOssFile(userId, type).then(() => {\n ElMessage.success('清理成功')\n })\n })\n .catch(() => {})\n}\n\n// TODO: 0 global 1 user_push\nconst pushMessageType = ref(1)\nconst showMessageDialog = ref(false)\nconst pushMessageText = ref('')\nfunction sendMessage(id: number, type = 1) {\n selectUserId.value = id\n pushMessageType.value = type\n showMessageDialog.value = true\n}\n\nfunction sureSendMessage() {\n SuperUserApi.sendMessage(\n pushMessageText.value,\n pushMessageType.value,\n selectUserId.value,\n ).then(() => {\n ElMessage.success('推送成功')\n // 推送成功\n pushMessageText.value = ''\n showMessageDialog.value = false\n })\n}\nfunction logout(account: string) {\n SuperUserApi.logout(account).then(() => {\n ElMessage.success(`下线成功 ${account}`)\n refreshUsers()\n })\n}\n\nonMounted(() => {\n refreshUsers()\n})\n\nconst isMobile = useIsMobile()\n\nconst { moneyStartDay } = useSiteConfig()\n\nfunction handleCheckDetail(price) {\n const { backhaulTrafficPrice, cdnPrice, compressPrice, ossPrice } = price\n ElMessageBox.confirm(`存储:${ossPrice}, 下载:${cdnPrice},压缩:${compressPrice},回源:${backhaulTrafficPrice}`, {\n showCancelButton: false,\n })\n}\n</script>\n\n<template>\n <div class=\"user\">\n <div class=\"panel\">\n <div class=\"p10 log-filter\">\n <span class=\"item\">\n <span class=\"label\">状态</span>\n <el-select\n v-model=\"userStatusType\"\n size=\"default\"\n class=\"w100\"\n >\n <el-option\n v-for=\"(item, idx) in statusTypeList\"\n :key=\"idx\"\n :label=\"item.label\"\n :value=\"item.type\"\n />\n </el-select>\n </span>\n <span class=\"item\">\n <span class=\"label\">排序</span>\n <el-select\n v-model=\"sortType\"\n size=\"default\"\n class=\"w100\"\n >\n <el-option\n v-for=\"(item, idx) in sortTypeList\"\n :key=\"idx\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n <el-select\n v-model=\"sortOrder\"\n size=\"default\"\n class=\"w100\"\n >\n <el-option\n v-for=\"(item, idx) in sortOrderList\"\n :key=\"idx\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select>\n </span>\n <span class=\"item\">\n <el-input\n v-model=\"searchWord\"\n size=\"default\"\n clearable\n placeholder=\"请输入要检索的内容\"\n :prefix-icon=\"Search\"\n />\n </span>\n <span class=\"item\">\n <el-button size=\"default\" :icon=\"Refresh\" @click=\"refreshUsers\">刷新</el-button>\n </span>\n <span class=\"item\">\n <el-button\n size=\"warning\"\n :icon=\"Message\"\n @click=\"sendMessage(null, 0)\"\n >推送全局消息</el-button>\n </span>\n </div>\n <Tip>\n 预估费用:{{ sumCost }}¥,\n 计费起始时间:{{ formatDate(moneyStartDay) }}\n </Tip>\n <el-table\n height=\"550\"\n stripe\n border\n :default-sort=\"{ prop: 'date', order: 'descending' }\"\n :data=\"pageUsers\"\n style=\"width: 100%\"\n >\n <el-table-column prop=\"id\" label=\"ID\" width=\"60\" />\n <el-table-column\n prop=\"account\"\n label=\"账号\"\n width=\"130\"\n />\n <el-table-column\n prop=\"phone\"\n label=\"手机号\"\n width=\"80\"\n />\n <el-table-column\n label=\"统计\"\n width=\"190\"\n >\n <template #default=\"scope\">\n 最后登录:{{\n scope.row.loginTime && formatDate(new Date(scope.row.loginTime))\n }}<br>\n 注册时间:{{ formatDate(new Date(scope.row.joinTime)) }}<br>\n 登录次数:{{ scope.row.loginCount }}<br>\n token: {{ scope.row.onlineCount }}<br>\n </template>\n </el-table-column>\n <el-table-column\n prop=\"downloadCount\"\n label=\"累计下载\"\n >\n <template #default=\"{ row: { downloadCount, downloadSize, oneFile, compressFile, templateFile } }\">\n {{ downloadCount }} / {{ formatSize(downloadSize) }}<br>\n 单文件:{{ oneFile.count }} / {{ formatSize(oneFile.size) }}<br>\n 归档:{{ compressFile.count }} / {{ formatSize(compressFile.size) }}<br>\n 模板:{{ templateFile.count }} / {{ formatSize(templateFile.size) }}\n </template>\n </el-table-column>\n <el-table-column\n v-if=\"userStatusType === 1\"\n prop=\"openTime\"\n label=\"解封时间\"\n >\n <template #default=\"scope\">\n {{\n scope.row.openTime && formatDate(new Date(scope.row.openTime))\n }}\n </template>\n </el-table-column>\n <el-table-column\n prop=\"fileCount\"\n label=\"文件\"\n >\n <template #default=\"scope\">\n 累计:{{ scope.row.fileCount }}/{{ formatSize(scope.row.originFileSize) }}<br>\n OSS:{{ scope.row.ossCount }}/{{ formatSize(scope.row.usage) }}<br>\n 平均:{{ scope.row.originFileSize && scope.row.fileCount && formatSize(Math.round(scope.row.originFileSize / scope.row.fileCount)) }}<br>\n 平均:{{ scope.row.usage && scope.row.ossCount && formatSize(Math.round(scope.row.usage / scope.row.ossCount)) }}<br>\n </template>\n </el-table-column>\n <el-table-column label=\"云空间\" width=\"240\">\n <template\n #default=\"{\n row: { wallet, price, balance, resources, monthAgoSize, quarterAgoSize, halfYearSize, id, limitSize, limitUpload, percentage },\n }\"\n >\n <ul class=\"user-oss-info\" :class=\"{ disabled: limitUpload }\">\n <li>\n ¥:{{ price.total }} / {{ wallet }} = {{ balance }} <el-button\n :icon=\"Money\"\n circle\n size=\"small\"\n @click=\"handleCheckDetail(price)\"\n />\n </li>\n <li>{{ percentage }}% {{ resources }}/{{ limitSize }}</li>\n <li>\n 一月前:{{ monthAgoSize\n }}<el-button\n v-if=\"resources !== '0B'\"\n class=\"clear-btn\"\n :icon=\"DeleteFilled\"\n circle\n size=\"small\"\n @click=\"handleClearFiles(id, 'month')\"\n />\n </li>\n <li>\n 三月前:{{ quarterAgoSize\n }}<el-button\n v-if=\"quarterAgoSize !== '0B'\"\n class=\"clear-btn\"\n :icon=\"DeleteFilled\"\n circle\n size=\"small\"\n @click=\"handleClearFiles(id, 'quarter')\"\n />\n </li>\n <li>\n 半年前:{{ halfYearSize\n }}<el-button\n v-if=\"halfYearSize !== '0B'\"\n class=\"clear-btn\"\n :icon=\"DeleteFilled\"\n circle\n size=\"small\"\n @click=\"handleClearFiles(id, 'half')\"\n />\n </li>\n </ul>\n </template>\n </el-table-column>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"100\">\n <template #default=\"scope\">\n <div class=\"text-btn-list\">\n <el-button\n type=\"primary\"\n text\n size=\"small\"\n @click=\"\n handleChangeStatus(\n scope.row.id,\n scope.row.status,\n scope.row.openTime,\n )\n \"\n >\n 修改状态\n </el-button>\n <el-button\n type=\"primary\"\n text\n size=\"small\"\n @click=\"handleResetPassword(scope.row.id)\"\n >\n 重置密码\n </el-button>\n <el-button\n type=\"primary\"\n text\n size=\"small\"\n @click=\"handleBindPhone(scope.row.id)\"\n >\n 绑定手机号\n </el-button>\n <el-button\n type=\"warning\"\n text\n size=\"small\"\n @click=\"sendMessage(scope.row.id)\"\n >\n 发送消息\n </el-button>\n <el-button\n type=\"danger\"\n text\n size=\"small\"\n @click=\"handleRewriteSize(scope.row.id, scope.row.size)\"\n >\n 修改上限\n </el-button>\n <el-button\n type=\"danger\"\n text\n size=\"small\"\n @click=\"handleRewriteWallet(scope.row.id, scope.row.wallet)\"\n >\n 修改余额\n </el-button>\n <el-button\n v-if=\"scope.row.onlineCount !== 0\"\n type=\"danger\"\n text\n size=\"small\"\n @click=\"logout(scope.row.account)\"\n >\n 一键下线\n </el-button>\n </div>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"flex fc p10\">\n <el-pagination\n :current-page=\"pageCurrent\"\n background\n :page-count=\"pageCount\"\n :page-sizes=\"[10, 50, 100, 200]\"\n :page-size=\"pageSize\"\n :total=\"filterUsers.length\"\n layout=\"total, sizes, prev, pager, next, jumper\"\n @current-change=\"handlePageChange\"\n @size-change=\"handleSizeChange\"\n />\n </div>\n </div>\n <!-- 消息推送弹窗 -->\n <el-dialog\n v-model=\"showMessageDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"消息推送\"\n >\n <div class=\"tc\">\n <el-input\n v-model=\"pushMessageText\"\n :autosize=\"{ minRows: 6, maxRows: 20 }\"\n type=\"textarea\"\n placeholder=\"输入要推送的消息,支持HTML内容(推荐使用mdnice 转 markdown 转html)\"\n />\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showMessageDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"sureSendMessage\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n <!-- 用户状态修改弹窗 -->\n <el-dialog\n v-model=\"showUserStatusDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"状态修改\"\n >\n <div class=\"tc\">\n <el-select v-model=\"selectStatus\" placeholder=\"请选择新分类\">\n <el-option\n v-for=\"s in userStatusList\"\n :key=\"s.type\"\n :label=\"s.label\"\n :value=\"s.type\"\n />\n </el-select>\n </div>\n <div v-if=\"selectStatus === 1\" style=\"margin-top: 10px\" class=\"tc\">\n <el-date-picker\n v-model=\"openTime\"\n :editable=\"false\"\n type=\"datetime\"\n placeholder=\"点击设置解封日期\"\n />\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showUserStatusDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSaveStatus\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n\n <!-- 重置密码 -->\n <el-dialog\n v-model=\"showResetPasswordDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"密码重置\"\n >\n <div class=\"tc\">\n <el-form :model=\"pwdForm\" label-width=\"80px\">\n <el-form-item label=\"新密码\">\n <el-input\n v-model=\"pwdForm.pwd1\"\n show-word-limit\n clearable\n placeholder=\"请输入新密码\"\n maxlength=\"16\"\n minlength=\"6\"\n />\n </el-form-item>\n <el-form-item>\n <el-input\n v-model=\"pwdForm.pwd2\"\n show-word-limit\n clearable\n placeholder=\"请再次输入\"\n maxlength=\"16\"\n minlength=\"6\"\n />\n </el-form-item>\n </el-form>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showResetPasswordDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSavePassword\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n <!-- 重绑定手机号 -->\n <el-dialog\n v-model=\"showPhoneDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"绑定手机号\"\n >\n <div class=\"tc\">\n <el-form :model=\"phoneForm\" label-width=\"60px\">\n <el-form-item label=\"手机号\">\n <el-input\n v-model=\"phoneForm.phone\"\n show-word-limit\n clearable\n placeholder=\"请输入手机号\"\n maxlength=\"11\"\n >\n <template #append>\n <!-- 获取验证码 -->\n <el-button :disabled=\"time !== 0\" @click=\"getCode\">\n {{\n codeText\n }}\n </el-button>\n </template>\n </el-input>\n </el-form-item>\n <el-form-item>\n <el-input\n v-model=\"phoneForm.code\"\n show-word-limit\n clearable\n placeholder=\"请输入验证码\"\n maxlength=\"4\"\n />\n </el-form-item>\n </el-form>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showPhoneDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSavePhone\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n <!-- 修改空间上限 -->\n <el-dialog\n v-model=\"showLimitSizeDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"修改空间上限\"\n >\n <div class=\"tc\">\n <el-form :model=\"limitSizeForm\" label-width=\"60px\">\n <el-form-item label=\"大小\">\n <el-input\n v-model=\"limitSizeForm.size\"\n show-word-limit\n clearable\n placeholder=\"请输入空间上限\"\n maxlength=\"4\"\n type=\"number\"\n >\n <template #append>\n GB\n </template>\n </el-input>\n </el-form-item>\n </el-form>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showLimitSizeDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSaveSize\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n <!-- 修改余额 -->\n <el-dialog\n v-model=\"showWalletDialog\"\n :fullscreen=\"isMobile\"\n center\n title=\"修改空间上限\"\n >\n <div class=\"tc\">\n <el-form :model=\"walletForm\" label-width=\"60px\">\n <el-form-item label=\"余额\">\n <el-input\n v-model=\"walletForm.money\"\n show-word-limit\n clearable\n placeholder=\"请输入新的余额\"\n maxlength=\"4\"\n type=\"number\"\n >\n <template #append>\n ¥\n </template>\n </el-input>\n </el-form-item>\n </el-form>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showWalletDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSaveWallet\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n\n .log-filter {\n justify-content: center;\n }\n}\n.w100 {\n width: 100px;\n}\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\n.log-filter {\n display: flex;\n flex-wrap: wrap;\n\n .item {\n margin-right: 10px;\n margin-bottom: 10px;\n .label {\n margin-right: 10px;\n font-size: 12px;\n }\n }\n}\n\n.text-btn-list {\n display: flex;\n flex-wrap: wrap;\n\n button {\n margin-left: 0;\n }\n}\n\n.user-oss-info {\n list-style: none;\n li {\n margin-bottom: 10px;\n }\n .clear-btn {\n margin-left: 10px;\n }\n &.disabled {\n background-color: rgb(245 108 108 / 30%);\n }\n}\n</style>\n"],"names":["_sfc_main","defineComponent","name","_hoisted_1","viewBox","xmlns","_hoisted_4","createElementVNode","fill","d","message","_export_sfc","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","_hoisted_5","money","sumCost","ref","users","reactive","refreshUsers","SuperUserApi","getUserList","then","res","splice","length","data","list","value","ElMessage","success","userStatusType","useLocalStorage","USER_STATUS","NORMAL","searchWord","statusTypeList","label","type","FREEZE","BAN","sortType","sortTypeList","sortOrder","sortOrderList","filterUsers","computed","copyUsers","sort","a","b","filter","v","status","id","account","phone","joinTime","loginCount","loginTime","openTime","formatDate","includes","pageSize","handleSizeChange","pageCount","Math","ceil","pageCurrent","pageUsers","start","end","slice","handlePageChange","idx","showUserStatusDialog","selectUserId","selectStatus","userStatusList","handleSaveStatus","user","find","u","warning","updateUserStatus","showResetPasswordDialog","pwdForm","pwd1","pwd2","handleSavePassword","rPassword","test","ElMessageBox","confirm","confirmButtonText","cancelButtonText","resetPassword","catch","showLimitSizeDialog","limitSizeForm","size","async","handleSaveSize","resetLimitSpace","showWalletDialog","walletForm","handleSaveWallet","updateWallet","showPhoneDialog","phoneForm","code","codeText","time","refreshCodeText","setTimeout","getCode","rMobilePhone","PublicApi","checkPhone","err","c","error","handleSavePhone","rVerCode","resetPhone","handleClearFiles","userId","month","quarter","half","clearOssFile","pushMessageType","showMessageDialog","pushMessageText","sendMessage","sureSendMessage","onMounted","isMobile","useIsMobile","moneyStartDay","useSiteConfig","price","backhaulTrafficPrice","cdnPrice","compressPrice","ossPrice","showCancelButton","oTime","logout"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
System.register(["./index-legacy-BLlk8iq-.js"],(function(e,t){"use strict";var a,n,l,d,c,o,i,r,f,v,u,s;return{setters:[e=>{a=e.d,n=e.r,l=e.u,d=e.o,c=e.a,o=e.c,i=e.b,r=e.e,f=e.t,v=e.p,u=e.f,s=e._}],execute:function(){var t=document.createElement("style");t.textContent=".not-found[data-v-7bc5f813]{font-family:Avenir,Helvetica,Arial,sans-serif;background-image:linear-gradient(to top,#30cfd0,#330867);min-height:100vh}h1[data-v-7bc5f813],h2[data-v-7bc5f813],h3[data-v-7bc5f813],a[data-v-7bc5f813]{color:#f0f8ff;text-align:center;font-weight:lighter}a[data-v-7bc5f813]{margin-left:10px;border-bottom:2px solid aliceblue}h1[data-v-7bc5f813]{font-size:48px;padding-top:10%}h2[data-v-7bc5f813]{font-size:30px;padding-top:2vh}h3[data-v-7bc5f813]{font-size:28px;padding-top:1vh}\n",document.head.appendChild(t);const p=e=>(v("data-v-7bc5f813"),e=e(),u(),e),h={class:"not-found"},b=p((()=>i("h1",null,"404 Not Found",-1))),g=p((()=>i("h2",null,"糟糕页面走丢了",-1)));e("default",s(a({__name:"index",setup(e){const t=n(3),a=n(null),v=l(),u=()=>{clearInterval(a.value),v.replace("/")};return d((()=>{a.value=setInterval((()=>{1===t.value&&(clearInterval(a.value),v.replace("/")),t.value-=1}),1e3)})),(e,a)=>(c(),o("div",h,[b,g,i("h3",null,[r(f(t.value)+"s后",1),i("a",{onClick:u},"回到首页")])]))}}),[["__scopeId","data-v-7bc5f813"]]))}}}));
|
|
2
|
-
//# sourceMappingURL=index-legacy-Dm1CXog1.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-legacy-Dm1CXog1.js","sources":["../../src/pages/404/index.vue"],"sourcesContent":["<template>\n <div class=\"not-found\">\n <h1>404 Not Found</h1>\n <h2>糟糕页面走丢了</h2>\n <h3>{{ time }}s后<a @click=\"handleToHome\">回到首页</a></h3>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { onMounted, ref } from 'vue'\nimport { useRouter } from 'vue-router'\n\nconst time = ref(3)\nconst timer = ref(null)\nconst router = useRouter()\nconst handleToHome = () => {\n clearInterval(timer.value)\n router.replace('/')\n}\nonMounted(() => {\n timer.value = setInterval(() => {\n if (time.value === 1) {\n clearInterval(timer.value)\n router.replace('/')\n }\n time.value -= 1\n }, 1000)\n})\n</script>\n<style lang=\"scss\" scoped>\n.not-found {\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n background-image: linear-gradient(to top, #30cfd0 0%, #330867 100%);\n min-height: 100vh;\n}\nh1,\nh2,\nh3,\na {\n color: aliceblue;\n text-align: center;\n font-weight: lighter;\n}\na {\n margin-left: 10px;\n border-bottom: 2px solid aliceblue;\n}\nh1 {\n font-size: 48px;\n padding-top: 10%;\n}\nh2 {\n font-size: 30px;\n padding-top: 2vh;\n}\nh3 {\n font-size: 28px;\n padding-top: 1vh;\n}\n</style>\n"],"names":["time","ref","timer","router","useRouter","handleToHome","clearInterval","value","replace","onMounted","setInterval"],"mappings":"i+BAWM,MAAAA,EAAOC,EAAI,GACXC,EAAQD,EAAI,MACZE,EAASC,IACTC,EAAeA,KACnBC,cAAcJ,EAAMK,OACpBJ,EAAOK,QAAQ,IAAG,SAEpBC,GAAU,KACFP,EAAAK,MAAQG,aAAY,KACL,IAAfV,EAAKO,QACPD,cAAcJ,EAAMK,OACpBJ,EAAOK,QAAQ,MAEjBR,EAAKO,OAAS,CAAA,GACb,IAAI"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
System.register(["./index-legacy-BLlk8iq-.js","./el-loading-legacy-B3RLcjwN.js","./el-dialog-legacy-BRLM43ZY.js","./el-pagination-legacy-Bf-Bzx7n.js","./el-select-legacy-DSGgSQYX.js","./el-table-column-legacy-N_oU_-0P.js","./other-legacy-DjiCmSH4.js","./data-board-legacy-BFxWeFnQ.js","./refresh-legacy-DOts-8Wc.js","./data-analysis-legacy-_KcR253K.js","./index-legacy-Da4s_D85.js","./isEqual-legacy-BWUPR8bV.js","./validator-legacy-CacjPWoF.js"],(function(e,a){"use strict";var l,t,n,o,r,s,i,c,u,d,p,v,f,g,m,h,x,y,w,b,z,C,V,j,k,$,_,H,M,S,E,D,B,I,L,O,U,P,T,q,F,J,N,A,G,K;return{setters:[e=>{l=e.g,t=e.d,n=e.a,o=e.c,r=e.b,s=e.r,i=e.Z,c=e.br,u=e.O,d=e.a7,p=e.o,v=e.i,f=e.a8,g=e.F,m=e.C,h=e.j,x=e.w,y=e.D,w=e.G,b=e.t,z=e.k,C=e.e,V=e.s,j=e.bs,k=e.E,$=e.ab,_=e.ad,H=e.I,M=e.v,S=e.x,E=e.p,D=e.f,B=e._},e=>{I=e.v},e=>{L=e.u,O=e.E},e=>{U=e.s,P=e.E},e=>{T=e.E,q=e.a},e=>{F=e.E,J=e.a},e=>{N=e.d},e=>{A=e.d},e=>{G=e.r},e=>{K=e.d},null,null,null],execute:function(){var a=ae.createElement("style");a.textContent="@media screen and (max-width: 700px){.card-list[data-v-0ac70f66]{margin-top:40px}.card[data-v-0ac70f66]{min-width:300px}.log-filter[data-v-0ac70f66]{justify-content:center}}.overview[data-v-0ac70f66]{margin:0 auto}.card-list[data-v-0ac70f66]{display:flex;margin-top:20px;justify-content:center;flex-wrap:wrap}.card[data-v-0ac70f66]{margin:10px;cursor:pointer;font-size:12px;position:relative;overflow:hidden;color:#666;background:#fff;box-shadow:4px 4px 40px rgba(0,0,0,.05);border-color:rgba(0,0,0,.05);min-width:300px}.card .logo[data-v-0ac70f66]{float:left;margin:4px 10px 0;-webkit-transition:all .38s ease-out;transition:all .38s ease-out;border-radius:6px;font-size:48px}.card .logo i[data-v-0ac70f66]{padding:10px}.card .content[data-v-0ac70f66]{float:right;font-weight:700;margin:10px 10px 10px 0}.card .content .title[data-v-0ac70f66]{line-height:18px;color:rgba(0,0,0,.45);font-size:14px;text-align:right}.card .content .text[data-v-0ac70f66]{font-size:16px;text-align:right}.card .content .supplement[data-v-0ac70f66]{font-size:12px;font-weight:lighter;text-align:right}.panel[data-v-0ac70f66]{max-width:1024px;padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}.log-filter[data-v-0ac70f66]{display:flex;flex-wrap:wrap}.log-filter .item[data-v-0ac70f66]{margin-right:10px;margin-bottom:10px}.log-filter .item .label[data-v-0ac70f66]{margin-right:10px;font-size:12px}\n",ae.head.appendChild(a);const Z=t({name:"Coin"}),Q={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},R=[r("path",{fill:"currentColor",d:"m161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z"},null,-1),r("path",{fill:"currentColor",d:"m161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z"},null,-1),r("path",{fill:"currentColor",d:"M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224zm0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160z"},null,-1)];var W=l(Z,[["render",function(e,a,l,t,r,s){return n(),o("svg",Q,R)}]]);const X=t({name:"Document"}),Y={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ee=[r("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z"},null,-1)];var ae=l(X,[["render",function(e,a,l,t,r,s){return n(),o("svg",Y,ee)}]]);const le=t({name:"TakeawayBox"}),te={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ne=[r("path",{fill:"currentColor",d:"M832 384H192v448h640V384zM96 320h832V128H96v192zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32h-64zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64z"},null,-1)];var oe=l(le,[["render",function(e,a,l,t,r,s){return n(),o("svg",te,ne)}]]);const re=t({name:"Tickets"}),se={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ie=[r("path",{fill:"currentColor",d:"M192 128v768h640V128H192zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h192v64H320v-64zm0 384h384v64H320v-64z"},null,-1)];var ce=l(re,[["render",function(e,a,l,t,r,s){return n(),o("svg",se,ie)}]]);const ue={class:"overview"},de={class:"card-list","element-loading-text":"Loading..."},pe={class:"logo"},ve={class:"content"},fe={class:"title"},ge={class:"text"},me={class:"supplement"},he={class:"panel"},xe={class:"p10 log-filter"},ye={class:"item"},we=(e=>(E("data-v-0ac70f66"),e=e(),D(),e))((()=>r("span",{class:"label"},"类型",-1))),be={class:"item"},ze={class:"item"},Ce={class:"item"},Ve={class:"item"},je={class:"flex fc p10"},ke={class:"dialog-footer"},$e=t({__name:"index",setup(e){const a=L(),l=s(!1),t=i([{type:"user",title:"用户数量",value:"0",supplement:"较昨日 +0",icon:c,color:"#40c9c6"},{type:"file",title:"记录/OSS",value:"0",supplement:"记录较昨日 +0",icon:ae,color:"#36a3f7"},{type:"log",title:"日志数量",value:"0",supplement:"较昨日 +0",icon:ce,color:"#f4516c"},{type:"pv",title:"PV/UV",value:"0/0",supplement:"",icon:A,color:"#34bfa3"},{type:"compress",title:"归档&无效文件",value:"0/0KB",supplement:"已失效0个",icon:W,color:"#e38013"}]);function E(){l.value=!0,j.getCount().then((e=>{const{user:a,file:n,log:o,pv:r,compress:s}=e.data;t[0].value=`${a.sum}`,t[0].supplement=`较昨日 +${a.recent}`,t[1].value=`${n.server.sum}/${n.oss.sum} (${n.oss.size})`,t[1].supplement=`记录较昨日 +${n.server.recent}`,t[2].value=`${o.sum}`,t[2].supplement=`较昨日 +${o.recent}`,t[3].value=`${r.today.sum}/${r.today.uv}`,t[3].supplement=`历史: ${r.all.sum}/${r.all.uv}`,t[4].value=`${s.all.sum}/${s.all.size}`,t[4].supplement=`已失效 ${s.expired.sum}/${s.expired.size}`,l.value=!1}))}const D=s(!1);function B(){D.value=!0,j.clearExpiredCompressFile().then((()=>{setTimeout((()=>{k.success("清理成功,数据同步可能有延迟"),D.value=!1,E()}),2e3)}))}const Z=i([]),Q=s("behavior"),R=s(""),X=i([{label:"用户行为",type:"behavior"},{label:"网络请求",type:"request"},{label:"服务端错误",type:"error"},{label:"页面访问",type:"pv"}]),Y=s(10);function ee(e){Y.value=e}const le=s(0),te=u((()=>Math.ceil(le.value/Y.value))),ne=s(1);function re(e){ne.value=e}const se=N((()=>{j.getLogMsg(Y.value,ne.value,Q.value,R.value).then((e=>{Z.splice(0,Z.length),Z.push(...e.data.logs),le.value=e.data.sum}))}),100,!1);d((()=>{Q.value&&(ne.value=1)})),d((()=>{void 0!==R.value&&se()})),d((()=>{Q.value&&se()})),d((()=>{(ne.value||Y.value)&&se()}));const ie=s(!1),$e=s(""),_e=u((()=>{try{return JSON.parse($e.value)}catch(e){return{}}}));function He(){$($e.value)}function Me(){if(0===Z.length)return;const e=Z.map((e=>{const{date:a,ip:l,msg:t}=e;return[V(new Date(a)),l,t]}));_(["日期","IP","内容"],e,`导出日志_${Z.length}条${V(new Date,"yyyy年MM月dd日hh时mm分ss秒")}.xlsx`),k.success("导出成功")}return p((()=>{E()})),(e,s)=>{const i=H,c=T,u=q,d=M,p=S,k=F,$=J,_=P,E=v("json-viewer"),L=O,N=I;return n(),o("div",ue,[f((n(),o("div",de,[(n(!0),o(g,null,m(t,(e=>(n(),o("div",{key:e.type,class:"card"},[r("div",pe,[h(i,{color:e.color},{default:x((()=>[(n(),y(w(e.icon)))])),_:2},1032,["color"])]),r("div",ve,[r("div",fe,b(e.title),1),r("div",ge,b(e.value),1),r("div",me,b(e.supplement),1)])])))),128))])),[[N,l.value]]),r("div",he,[r("div",xe,[r("span",ye,[we,h(u,{modelValue:Q.value,"onUpdate:modelValue":s[0]||(s[0]=e=>Q.value=e),size:"default",placeholder:"请选择日志类型"},{default:x((()=>[(n(!0),o(g,null,m(X,((e,a)=>(n(),y(c,{key:a,label:e.label,value:e.type},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])]),r("span",be,[h(d,{modelValue:R.value,"onUpdate:modelValue":s[1]||(s[1]=e=>R.value=e),size:"default",clearable:"",placeholder:"请输入要检索的内容","prefix-icon":z(U)},null,8,["modelValue","prefix-icon"])]),r("span",ze,[h(p,{size:"default",icon:z(G),onClick:z(se)},{default:x((()=>[C("刷新")])),_:1},8,["icon","onClick"])]),r("span",Ce,[h(p,{size:"default",type:"primary",icon:z(K),onClick:Me},{default:x((()=>[C("导出日志 "+b(Z.length)+" 条",1)])),_:1},8,["icon"])]),r("span",Ve,[f((n(),y(p,{size:"default",type:"danger",icon:z(oe),disabled:D.value,onClick:B},{default:x((()=>[C("清理无效文件")])),_:1},8,["icon","disabled"])),[[N,D.value]])])]),h($,{"tooltip-effect":"dark",height:"400",stripe:"",border:"","default-sort":{prop:"date",order:"descending"},data:Z,style:{width:"100%"}},{default:x((()=>[h(k,{sortable:"",prop:"date",label:"日期",width:"180"},{default:x((e=>[C(b(z(V)(new Date(e.row.date))),1)])),_:1}),h(k,{sortable:"",prop:"ip",label:"IP",width:"100"}),h(k,{"min-width":"160",prop:"msg",label:"内容"}),h(k,{fixed:"right",label:"操作",width:"100"},{default:x((e=>[h(p,{type:"primary",text:"",size:"small",onClick:a=>{return l=e.row.id,void j.getLogMsgDetail(l).then((e=>{ie.value=!0,$e.value=JSON.stringify(e.data,null,2)}));var l}},{default:x((()=>[C(" 查看详情 ")])),_:2},1032,["onClick"])])),_:1})])),_:1},8,["data"]),r("div",je,[h(_,{"current-page":ne.value,background:"","page-count":te.value,"page-sizes":[10,50,100,200,500,1e3],"page-size":Y.value,total:le.value,layout:"total, sizes, prev, pager, next, jumper",onCurrentChange:re,onSizeChange:ee},null,8,["current-page","page-count","page-size","total"])])]),h(L,{modelValue:ie.value,"onUpdate:modelValue":s[3]||(s[3]=e=>ie.value=e),title:"详细信息",width:"50%",center:"",fullscreen:z(a)},{footer:x((()=>[r("span",ke,[h(p,{type:"default",onClick:He},{default:x((()=>[C("复制")])),_:1}),h(p,{type:"primary",onClick:s[2]||(s[2]=e=>ie.value=!1)},{default:x((()=>[C("确定")])),_:1})])])),default:x((()=>[h(E,{value:_e.value,"expand-depth":5,copyable:"",boxed:"",sort:""},null,8,["value"])])),_:1},8,["modelValue","fullscreen"])])}}});e("default",B($e,[["__scopeId","data-v-0ac70f66"]]))}}}));
|
|
2
|
-
//# sourceMappingURL=index-legacy-DpNNn-Dy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-legacy-DpNNn-Dy.js","sources":["../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/coin.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/document.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/takeaway-box.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/tickets.mjs","../../src/pages/dashboard/manage/overview/index.vue"],"sourcesContent":["import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Coin\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"m161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"m161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z\"\n}, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224zm0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160z\"\n}, null, -1);\nconst _hoisted_5 = [\n _hoisted_2,\n _hoisted_3,\n _hoisted_4\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_5);\n}\nvar coin = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { coin as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Document\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar document = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { document as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"TakeawayBox\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M832 384H192v448h640V384zM96 320h832V128H96v192zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32h-64zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar takeawayBox = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { takeawayBox as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Tickets\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M192 128v768h640V128H192zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h192v64H320v-64zm0 384h384v64H320v-64z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar tickets = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { tickets as default };\n","<script lang=\"ts\" setup>\nimport { computed, onMounted, reactive, ref, watchEffect } from 'vue'\nimport {\n Coin,\n DataAnalysis,\n DataBoard,\n Document,\n Refresh,\n Search,\n TakeawayBox,\n Tickets,\n User,\n} from '@element-plus/icons-vue'\nimport { ElMessage } from 'element-plus'\nimport { SuperOverviewApi } from '@/apis'\nimport { copyRes, formatDate } from '@/utils/stringUtil'\nimport { tableToExcel } from '@/utils/networkUtil'\nimport { debounce } from '@/utils/other'\nimport { useIsMobile } from '@/composables'\n\nconst isMobile = useIsMobile()\n\nconst isLoadingOverview = ref(false)\nconst cardList = reactive([\n {\n type: 'user',\n title: '用户数量',\n value: '0',\n supplement: '较昨日 +0',\n icon: User,\n color: '#40c9c6',\n },\n {\n type: 'file',\n title: '记录/OSS',\n value: '0',\n supplement: '记录较昨日 +0',\n icon: Document,\n color: '#36a3f7',\n },\n {\n type: 'log',\n title: '日志数量',\n value: '0',\n supplement: '较昨日 +0',\n icon: Tickets,\n color: '#f4516c',\n },\n {\n type: 'pv',\n title: 'PV/UV',\n value: '0/0',\n supplement: '',\n icon: DataBoard,\n color: '#34bfa3',\n },\n {\n type: 'compress',\n title: '归档&无效文件',\n value: '0/0KB',\n supplement: '已失效0个',\n icon: Coin,\n color: '#e38013',\n },\n])\n// 刷新记录条数\nfunction refreshCount() {\n isLoadingOverview.value = true\n SuperOverviewApi.getCount().then((res) => {\n const { user, file, log, pv, compress } = res.data\n cardList[0].value = `${user.sum}`\n cardList[0].supplement = `较昨日 +${user.recent}`\n cardList[1].value = `${file.server.sum}/${file.oss.sum} (${file.oss.size})`\n cardList[1].supplement = `记录较昨日 +${file.server.recent}`\n cardList[2].value = `${log.sum}`\n cardList[2].supplement = `较昨日 +${log.recent}`\n cardList[3].value = `${pv.today.sum}/${pv.today.uv}`\n cardList[3].supplement = `历史: ${pv.all.sum}/${pv.all.uv}`\n cardList[4].value = `${compress.all.sum}/${compress.all.size}`\n cardList[4].supplement = `已失效 ${compress.expired.sum}/${compress.expired.size}`\n isLoadingOverview.value = false\n })\n}\n\nconst disableDelete = ref(false)\nfunction clearExpiredCompressFile() {\n disableDelete.value = true\n SuperOverviewApi.clearExpiredCompressFile().then(() => {\n setTimeout(() => {\n ElMessage.success('清理成功,数据同步可能有延迟')\n disableDelete.value = false\n refreshCount()\n }, 2000)\n })\n}\n\n// 日志\nconst logs: any[] = reactive([])\n\n// function getLogsTypeText(type: string) {\n// const logsTypeText: any = {\n// request: '网络请求',\n// behavior: '用户行为',\n// error: '错误',\n// pv: '页面访问',\n// }\n// return logsTypeText[type]\n// }\n// 筛选的日志\nconst filterLogType = ref('behavior')\nconst searchWord = ref('')\nconst logTypeList = reactive([\n {\n label: '用户行为',\n type: 'behavior',\n },\n {\n label: '网络请求',\n type: 'request',\n },\n {\n label: '服务端错误',\n type: 'error',\n },\n {\n label: '页面访问',\n type: 'pv',\n },\n])\n\n// 分页\n// 页大小\nconst pageSize = ref(10)\nfunction handleSizeChange(v: number) {\n pageSize.value = v\n}\n// 总条数\nconst logSumCount = ref(0)\nconst pageCount = computed(() => {\n const t = Math.ceil(logSumCount.value / pageSize.value)\n return t\n})\nconst pageCurrent = ref(1)\nfunction handlePageChange(idx: number) {\n pageCurrent.value = idx\n}\n\nconst refreshLogs = debounce(\n () => {\n SuperOverviewApi.getLogMsg(\n pageSize.value,\n pageCurrent.value,\n filterLogType.value,\n searchWord.value,\n ).then((res) => {\n logs.splice(0, logs.length)\n logs.push(...res.data.logs)\n logSumCount.value = res.data.sum\n })\n },\n 100,\n false,\n)\n\nwatchEffect(() => {\n if (filterLogType.value) {\n pageCurrent.value = 1\n }\n})\n\nwatchEffect(() => {\n if (searchWord.value !== undefined) {\n refreshLogs()\n }\n})\n\nwatchEffect(() => {\n if (filterLogType.value) {\n refreshLogs()\n }\n})\n\nwatchEffect(() => {\n if (pageCurrent.value || pageSize.value) {\n refreshLogs()\n }\n})\n\nconst showDetail = ref(false)\nconst showData = ref('')\nfunction handleDetail(id) {\n SuperOverviewApi.getLogMsgDetail(id).then((res) => {\n showDetail.value = true\n showData.value = JSON.stringify(res.data, null, 2)\n })\n}\nconst jsonData = computed(() => {\n try {\n return JSON.parse(showData.value)\n }\n catch (e) {\n return {}\n }\n})\nfunction handleCopyDetail() {\n copyRes(showData.value)\n}\n\nfunction exportLogData() {\n if (logs.length === 0) {\n return\n }\n const headers = ['日期', 'IP', '内容']\n const body = logs.map((v) => {\n const { date, ip, msg } = v\n return [formatDate(new Date(date)), ip, msg]\n })\n tableToExcel(\n headers,\n body,\n `导出日志_${logs.length}条${formatDate(\n new Date(),\n 'yyyy年MM月dd日hh时mm分ss秒',\n )}.xlsx`,\n )\n ElMessage.success('导出成功')\n}\nonMounted(() => {\n refreshCount()\n})\n</script>\n\n<template>\n <div class=\"overview\">\n <div\n v-loading=\"isLoadingOverview\"\n class=\"card-list\"\n element-loading-text=\"Loading...\"\n >\n <div v-for=\"c in cardList\" :key=\"c.type\" class=\"card\">\n <div class=\"logo\">\n <el-icon :color=\"c.color\">\n <component :is=\"c.icon\" />\n </el-icon>\n </div>\n <div class=\"content\">\n <div class=\"title\">\n {{ c.title }}\n </div>\n <div class=\"text\">\n {{ c.value }}\n </div>\n <div class=\"supplement\">\n {{ c.supplement }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"panel\">\n <div class=\"p10 log-filter\">\n <span class=\"item\">\n <span class=\"label\">类型</span>\n <el-select\n v-model=\"filterLogType\"\n size=\"default\"\n placeholder=\"请选择日志类型\"\n >\n <el-option\n v-for=\"(item, idx) in logTypeList\"\n :key=\"idx\"\n :label=\"item.label\"\n :value=\"item.type\"\n />\n </el-select>\n </span>\n <span class=\"item\">\n <el-input\n v-model=\"searchWord\"\n size=\"default\"\n clearable\n placeholder=\"请输入要检索的内容\"\n :prefix-icon=\"Search\"\n />\n </span>\n <span class=\"item\">\n <el-button size=\"default\" :icon=\"Refresh\" @click=\"refreshLogs\">刷新</el-button>\n </span>\n <span class=\"item\">\n <el-button\n size=\"default\"\n type=\"primary\"\n :icon=\"DataAnalysis\"\n @click=\"exportLogData\"\n >导出日志 {{ logs.length }} 条</el-button>\n </span>\n <span class=\"item\">\n <el-button\n v-loading=\"disableDelete\"\n size=\"default\"\n type=\"danger\"\n :icon=\"TakeawayBox\"\n :disabled=\"disableDelete\"\n @click=\"clearExpiredCompressFile\"\n >清理无效文件</el-button>\n </span>\n </div>\n <el-table\n tooltip-effect=\"dark\"\n height=\"400\"\n stripe\n border\n :default-sort=\"{ prop: 'date', order: 'descending' }\"\n :data=\"logs\"\n style=\"width: 100%\"\n >\n <el-table-column sortable prop=\"date\" label=\"日期\" width=\"180\">\n <template #default=\"scope\">\n {{\n formatDate(new Date(scope.row.date))\n }}\n </template>\n </el-table-column>\n <!-- <el-table-column prop=\"type\" label=\"类型\" width=\"100\">\n <template #default=\"scope\">{{ getLogsTypeText(scope.row.type) }}</template>\n </el-table-column> -->\n <el-table-column\n sortable\n prop=\"ip\"\n label=\"IP\"\n width=\"100\"\n />\n <el-table-column\n min-width=\"160\"\n prop=\"msg\"\n label=\"内容\"\n />\n <el-table-column fixed=\"right\" label=\"操作\" width=\"100\">\n <template #default=\"scope\">\n <el-button\n type=\"primary\"\n text\n size=\"small\"\n @click=\"handleDetail(scope.row.id)\"\n >\n 查看详情\n </el-button>\n </template>\n </el-table-column>\n </el-table>\n\n <div class=\"flex fc p10\">\n <el-pagination\n :current-page=\"pageCurrent\"\n background\n :page-count=\"pageCount\"\n :page-sizes=\"[10, 50, 100, 200, 500, 1000]\"\n :page-size=\"pageSize\"\n :total=\"logSumCount\"\n layout=\"total, sizes, prev, pager, next, jumper\"\n @current-change=\"handlePageChange\"\n @size-change=\"handleSizeChange\"\n />\n </div>\n </div>\n <el-dialog\n v-model=\"showDetail\"\n title=\"详细信息\"\n width=\"50%\"\n center\n :fullscreen=\"isMobile\"\n >\n <json-viewer\n :value=\"jsonData\"\n :expand-depth=\"5\"\n copyable\n boxed\n sort\n />\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button type=\"default\" @click=\"handleCopyDetail\">复制</el-button>\n <el-button type=\"primary\" @click=\"showDetail = false\">确定</el-button>\n </span>\n </template>\n </el-dialog>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .card-list {\n margin-top: 40px;\n }\n\n .card {\n min-width: 300px;\n }\n\n .log-filter {\n justify-content: center;\n }\n}\n\n.overview {\n margin: 0 auto;\n}\n\n.card-list {\n display: flex;\n margin-top: 20px;\n justify-content: center;\n flex-wrap: wrap;\n}\n\n.card {\n margin: 10px;\n cursor: pointer;\n font-size: 12px;\n position: relative;\n overflow: hidden;\n color: #666;\n background: #fff;\n box-shadow: 4px 4px 40px rgb(0 0 0 / 5%);\n border-color: rgba(0, 0, 0, 0.05);\n min-width: 300px;\n\n .logo {\n float: left;\n margin: 4px 10px 0 10px;\n -webkit-transition: all 0.38s ease-out;\n transition: all 0.38s ease-out;\n border-radius: 6px;\n font-size: 48px;\n\n i {\n padding: 10px;\n }\n }\n\n .content {\n float: right;\n font-weight: 700;\n margin: 10px;\n margin-left: 0;\n\n .title {\n line-height: 18px;\n color: rgba(0, 0, 0, 0.45);\n font-size: 14px;\n text-align: right;\n }\n\n .text {\n font-size: 16px;\n text-align: right;\n }\n\n .supplement {\n font-size: 12px;\n font-weight: lighter;\n text-align: right;\n }\n }\n}\n\n.panel {\n max-width: 1024px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\n.log-filter {\n display: flex;\n flex-wrap: wrap;\n\n .item {\n margin-right: 10px;\n margin-bottom: 10px;\n\n .label {\n margin-right: 10px;\n font-size: 12px;\n }\n }\n}\n</style>\n"],"names":["_sfc_main","defineComponent","name","_hoisted_1","viewBox","xmlns","_hoisted_5","createElementVNode","fill","d","coin","_export_sfc","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","_hoisted_3","document","takeawayBox","tickets","isMobile","useIsMobile","isLoadingOverview","ref","cardList","reactive","type","title","value","supplement","icon","User","color","Document","Tickets","DataBoard","Coin","refreshCount","SuperOverviewApi","getCount","then","res","user","file","log","pv","compress","data","sum","recent","server","oss","size","today","uv","all","expired","disableDelete","clearExpiredCompressFile","setTimeout","ElMessage","success","logs","filterLogType","searchWord","logTypeList","label","pageSize","handleSizeChange","v","logSumCount","pageCount","computed","Math","ceil","pageCurrent","handlePageChange","idx","refreshLogs","debounce","getLogMsg","splice","length","push","watchEffect","showDetail","showData","jsonData","JSON","parse","e","handleCopyDetail","copyRes","exportLogData","body","map","date","ip","msg","formatDate","Date","tableToExcel","onMounted","id","getLogMsgDetail","stringify"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
System.register(["./index-legacy-BLlk8iq-.js","./el-switch-legacy-CHkEgavQ.js","./validator-legacy-CacjPWoF.js"],(function(e,a){"use strict";var t,l,n,s,d,i,o,u,r,c,p,v,m,x,f,g,h,y,b,w,k,_,C,S,j,z;return{setters:[e=>{t=e.d,l=e.u,n=e.O,s=e.Z,d=e.r,i=e.c_,o=e.o,u=e.bs,r=e.i,c=e.a,p=e.c,v=e.b,m=e.j,x=e.w,f=e.e,g=e.F,h=e.C,y=e.t,b=e.D,w=e.k,k=e.E,_=e.y,C=e.x,S=e.v,j=e._},e=>{z=e.E},null],execute:function(){var a=document.createElement("style");a.textContent="@media screen and (max-width: 700px){.user[data-v-1e07da88]{margin-top:40px!important}}.user[data-v-1e07da88]{margin:0 auto}.panel[data-v-1e07da88]{max-width:1256px;padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}.routes[data-v-1e07da88]{max-width:500px;margin:0 auto}.routes li[data-v-1e07da88]{display:flex;padding:20px;align-items:center}.routes li .title[data-v-1e07da88]{font-weight:700;margin:0 10px}.config-btn[data-v-1e07da88]{text-align:center}.config-panel[data-v-1e07da88]{max-width:500px;margin:0 auto}\n",document.head.appendChild(a);const O={class:"user"},D={class:"panel"},J={class:"routes"},N={class:"title"},R={class:"path"},V={class:"config-btn"},E={class:"config-panel"};e("default",j(t({__name:"index",setup(e){const a=l(),t=n((()=>a.options.routes.filter((e=>e.meta?.allowDisabled)))),j=s([]),F=d(!1),{value:I,updateValue:U}=i(),Z=d("");function q(){F.value=!0,Z.value=JSON.stringify(I.value,null,2)}async function A(){try{const e=JSON.parse(Z.value);I.value=e,await U(),F.value=!1,k.success("保存成功")}catch(e){return k.error("JSON 格式错误")}}return o((()=>{for(const e of t.value)u.checkDisabledRoute(e.path).then((a=>{j.push({path:e.path,name:e.name.toString(),title:e.meta.title,disabled:!!a.data?.status})}))})),(e,a)=>{const t=_,l=z,n=C,s=r("json-viewer"),d=S;return c(),p("div",O,[v("div",D,[m(t,null,{default:x((()=>[f("禁用路由管理")])),_:1}),v("ul",J,[(c(!0),p(g,null,h(j,(e=>(c(),p("li",{key:e.name},[m(l,{"model-value":!e.disabled,style:{"--el-switch-on-color":"#13ce66","--el-switch-off-color":"#ff4949"},onChange:a=>function(e){u.addDisabledRoute(e.path,!e.disabled).then((()=>{e.disabled=!e.disabled,k.success("切换成功")}))}(e)},null,8,["model-value","onChange"]),v("span",N,y(e.title),1),v("span",R,y(e.path)+y("/register"===e.path?" 关闭后将同时禁用注册功能":""),1)])))),128))]),m(t,null,{default:x((()=>[f("全局配置管理(JSON)")])),_:1}),v("div",V,[F.value?(c(),p(g,{key:1},[m(n,{size:"small",type:"danger",onClick:a[0]||(a[0]=e=>F.value=!1)},{default:x((()=>[f(" 取消 ")])),_:1}),m(n,{size:"small",type:"success",onClick:A},{default:x((()=>[f(" 保存 ")])),_:1})],64)):(c(),b(n,{key:0,size:"small",type:"primary",onClick:q},{default:x((()=>[f(" 更新 ")])),_:1}))]),v("div",E,[F.value?(c(),b(d,{key:1,modelValue:Z.value,"onUpdate:modelValue":a[1]||(a[1]=e=>Z.value=e),autosize:{minRows:2,maxRows:30},type:"textarea"},null,8,["modelValue"])):(c(),b(s,{key:0,value:w(I),"expand-depth":5,copyable:"",boxed:"",sort:""},null,8,["value"]))])])])}}}),[["__scopeId","data-v-1e07da88"]]))}}}));
|
|
2
|
-
//# sourceMappingURL=index-legacy-PkF4cKK9.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-legacy-PkF4cKK9.js","sources":["../../src/pages/dashboard/manage/config/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport { computed, onMounted, reactive, ref } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { SuperOverviewApi } from '@/apis'\nimport { useSiteAllConfig } from '@/composables'\n\nconst $router = useRouter()\nconst routes = computed(() =>\n $router.options.routes.filter(v => v.meta?.allowDisabled),\n)\nconst showRoutes = reactive<\n {\n path: string\n name: string\n title: string\n disabled: boolean\n }[]\n>([])\n\nfunction handleChangeRoute(r: (typeof showRoutes)[0]) {\n SuperOverviewApi.addDisabledRoute(r.path, !r.disabled).then(() => {\n r.disabled = !r.disabled\n ElMessage.success('切换成功')\n })\n}\n\nconst editConfig = ref(false)\nconst { value: jsonData, updateValue: updateJsonData } = useSiteAllConfig()\n\nconst editJSON = ref('')\n\nfunction handleEditConfig() {\n editConfig.value = true\n editJSON.value = JSON.stringify(jsonData.value, null, 2)\n}\nasync function handleSaveConfig() {\n try {\n const data = JSON.parse(editJSON.value)\n jsonData.value = data\n await updateJsonData()\n editConfig.value = false\n ElMessage.success('保存成功')\n }\n catch (e) {\n return ElMessage.error('JSON 格式错误')\n }\n}\nonMounted(() => {\n for (const r of routes.value) {\n SuperOverviewApi.checkDisabledRoute(r.path).then((v) => {\n showRoutes.push({\n path: r.path,\n name: r.name.toString(),\n title: r.meta.title,\n disabled: !!v.data?.status,\n })\n })\n }\n})\n</script>\n\n<template>\n <div class=\"user\">\n <div class=\"panel\">\n <el-divider>禁用路由管理</el-divider>\n <ul class=\"routes\">\n <li v-for=\"r in showRoutes\" :key=\"r.name\">\n <el-switch\n :model-value=\"!r.disabled\" style=\"\n --el-switch-on-color: #13ce66;\n --el-switch-off-color: #ff4949;\n \" @change=\"handleChangeRoute(r)\"\n />\n <span class=\"title\">{{ r.title }}</span>\n <span class=\"path\">{{ r.path }}{{ r.path === '/register' ? ' 关闭后将同时禁用注册功能' : '' }}</span>\n </li>\n </ul>\n <el-divider>全局配置管理(JSON)</el-divider>\n <div class=\"config-btn\">\n <el-button v-if=\"!editConfig\" size=\"small\" type=\"primary\" @click=\"handleEditConfig\">\n 更新\n </el-button>\n <template v-else>\n <el-button size=\"small\" type=\"danger\" @click=\"editConfig = false\">\n 取消\n </el-button>\n <el-button size=\"small\" type=\"success\" @click=\"handleSaveConfig\">\n 保存\n </el-button>\n </template>\n </div>\n <div class=\"config-panel\">\n <json-viewer\n v-if=\"!editConfig\"\n :value=\"jsonData\"\n :expand-depth=\"5\"\n copyable\n boxed\n sort\n />\n <!-- TODO: JSON editor -->\n <el-input\n v-else\n v-model=\"editJSON\"\n :autosize=\"{ minRows: 2, maxRows: 30 }\"\n type=\"textarea\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n}\n\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\n.routes {\n max-width: 500px;\n margin: 0 auto;\n\n li {\n display: flex;\n padding: 20px;\n align-items: center;\n\n .title {\n font-weight: bold;\n margin: 0 10px;\n }\n }\n}\n.config-btn {\n text-align: center;\n}\n.config-panel {\n max-width: 500px;\n margin: 0 auto;\n}\n</style>\n"],"names":["$router","useRouter","routes","computed","options","filter","v","meta","allowDisabled","showRoutes","reactive","editConfig","ref","value","jsonData","updateValue","updateJsonData","useSiteAllConfig","editJSON","handleEditConfig","JSON","stringify","async","handleSaveConfig","data","parse","ElMessage","success","e","error","onMounted","r","SuperOverviewApi","checkDisabledRoute","path","then","push","name","toString","title","disabled","status","addDisabledRoute"],"mappings":"svCAOA,MAAMA,EAAUC,IACVC,EAASC,GAAS,IACtBH,EAAQI,QAAQF,OAAOG,QAAYC,GAAAA,EAAEC,MAAMC,kBAEvCC,EAAaC,EAOjB,IASIC,EAAaC,GAAI,IACfC,MAAOC,EAAUC,YAAaC,GAAmBC,IAEnDC,EAAWN,EAAI,IAErB,SAASO,IACPR,EAAWE,OAAQ,EACnBK,EAASL,MAAQO,KAAKC,UAAUP,EAASD,MAAO,KAAM,EACxD,CACAS,eAAeC,IACT,IACF,MAAMC,EAAOJ,KAAKK,MAAMP,EAASL,OACjCC,EAASD,MAAQW,QACXR,IACNL,EAAWE,OAAQ,EACnBa,EAAUC,QAAQ,cAEbC,GACE,OAAAF,EAAUG,MAAM,YACzB,CACF,QACAC,GAAU,KACG,IAAA,MAAAC,KAAK7B,EAAOW,MACrBmB,EAAiBC,mBAAmBF,EAAEG,MAAMC,MAAM7B,IAChDG,EAAW2B,KAAK,CACdF,KAAMH,EAAEG,KACRG,KAAMN,EAAEM,KAAKC,WACbC,MAAOR,EAAExB,KAAKgC,MACdC,WAAYlC,EAAEkB,MAAMiB,QACrB,GAEL,uTAtCF,SAA2BV,GACRC,EAAAU,iBAAiBX,EAAEG,MAAOH,EAAES,UAAUL,MAAK,KACxDJ,EAAAS,UAAYT,EAAES,SAChBd,EAAUC,QAAQ,OAAM,GAE5B"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
System.register(["./index-legacy-BLlk8iq-.js","./el-form-item-legacy-CvQy7syv.js","./tip-legacy-DiCk_qP1.js","./refresh-legacy-DOts-8Wc.js","./isEqual-legacy-BWUPR8bV.js","./index-legacy-Da4s_D85.js"],(function(e,a){"use strict";var t,l,n,r,s,i,o,d,c,u,g,p,m,v,f,x,y,h,w,k,M,b,z,C,E,_,j,O,T,B,I,N,S;return{setters:[e=>{t=e.a4,l=e.g,n=e.d,r=e.a,s=e.c,i=e.b,o=e.Z,d=e.r,c=e.O,u=e.o,g=e.j,p=e.w,m=e.k,v=e.H,f=e.a8,x=e.a9,y=e.e,h=e.F,w=e.C,k=e.t,M=e.D,b=e.S,z=e.E,C=e.I,E=e.x,_=e.v,j=e.p,O=e.f,T=e._},e=>{B=e.E,I=e.a},e=>{N=e.T},e=>{S=e.r},null,null],execute:function(){var a=document.createElement("style");a.textContent="@media screen and (max-width: 700px){.user[data-v-9638922a]{margin-top:40px!important}}.user[data-v-9638922a]{margin:0 auto}.panel[data-v-9638922a]{max-width:1256px;padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}h1[data-v-9638922a]{margin:0;padding:10px 0;font-size:20px;font-weight:700;text-align:center;display:flex;justify-content:center;align-items:center}.service-list[data-v-9638922a]{display:flex;flex-wrap:wrap;justify-content:space-around}.service-item[data-v-9638922a]{display:flex;flex-direction:column;justify-content:center;align-items:center;margin:10px;min-width:120px}.service-item img[data-v-9638922a]{width:80px}.service-item p[data-v-9638922a]{text-align:center;padding-top:10px;font-size:14px}@keyframes rotate-9638922a{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading[data-v-9638922a]{margin-left:10px;animation:rotate-9638922a 1s linear infinite}.error-panel[data-v-9638922a]{padding:0 20px}.error-panel p[data-v-9638922a]{margin-bottom:10px}.error-panel p .error[data-v-9638922a]{color:red}.config-container[data-v-9638922a]{display:flex;justify-content:space-around;flex-wrap:wrap}.config-panel h2[data-v-9638922a]{text-align:center;font-size:16px;margin-bottom:10px}\n",document.head.appendChild(a);const D={getServiceOverview:function(){return t.get("/config/service/overview")},getServiceConfig:function(){return t.get("/config/service/config")},updateCfg:function(e){return t.put("/config/service/config",e)}},A=n({name:"CloseBold"}),L={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Y=[i("path",{fill:"currentColor",d:"M195.2 195.2a64 64 0 0 1 90.496 0L512 421.504 738.304 195.2a64 64 0 0 1 90.496 90.496L602.496 512 828.8 738.304a64 64 0 0 1-90.496 90.496L512 602.496 285.696 828.8a64 64 0 0 1-90.496-90.496L421.504 512 195.2 285.696a64 64 0 0 1 0-90.496z"},null,-1)];var q=l(A,[["render",function(e,a,t,l,n,i){return r(),s("svg",L,Y)}]]);const V=n({name:"Select"}),Q={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},U=[i("path",{fill:"currentColor",d:"M77.248 415.04a64 64 0 0 1 90.496 0l226.304 226.304L846.528 188.8a64 64 0 1 1 90.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 0 1 0-90.496z"},null,-1)];var F=l(V,[["render",function(e,a,t,l,n,i){return r(),s("svg",Q,U)}]]);const H=e=>(j("data-v-9638922a"),e=e(),O(),e),R={class:"user"},Z={class:"panel"},G=H((()=>i("span",null,"服务概况",-1))),J={class:"service-list"},K=["src","alt"],P={key:2},W={class:"error-panel"},X=H((()=>i("h1",null,"错误信息",-1))),$={class:"error"},ee=H((()=>i("h1",null,"服务相关配置",-1))),ae={href:"https://docs.ep.sugarat.top/deploy/online-new.html#_5-%E6%9C%80%E5%90%8E%E6%9B%B4%E6%96%B0%E9%85%8D%E7%BD%AE"},te={class:"config-container"},le={class:"flex",style:{flex:"1"}};e("default",T(n({__name:"index",setup(e){const a=o([{name:"MySQL",key:"mysql",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTAyMjIwNA==657359022204",status:!1,des:"存储用户数据",errMsg:""},{name:"七牛云",key:"qiniu",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODcyODM0Mg==657358728342",status:!1,des:"文件存储"},{name:"MongoDB",key:"mongodb",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTA4OTc3Nw==657359089777",status:!1,des:"用户数据与日志"},{name:"Redis",key:"redis",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODgyNzM1MA==657358827350",status:!1,des:"持久化缓存数据",error:"确保安装redis,且监听端口6379"},{name:"腾讯云",key:"tx",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTE1MzQzOQ==657359153439",status:!1,des:"短信服务"}]),t=d(!1),l=c((()=>a.filter((e=>e.errMsg))));function n(){t.value||(t.value=!0,D.getServiceOverview().then((e=>{const{data:l}=e;a.forEach((e=>{const{status:a,errMsg:t}=l[e.key];e.status=a,e.errMsg=t})),z.success("服务状态刷新完成"),t.value=!1})))}const j=d([]);return u((()=>{n(),D.getServiceConfig().then((e=>{e.data.forEach((e=>{e.data.forEach((e=>{e.disabled=!0}))})),j.value=e.data}))})),(e,o)=>{const d=C,c=E,u=_,O=B,T=I;return r(),s("div",R,[i("div",Z,[i("div",null,[i("h1",null,[G,g(d,{class:v({loading:t.value}),style:{cursor:"pointer","margin-left":"10px"},onClick:n},{default:p((()=>[g(m(S))])),_:1},8,["class"]),f(i("span",null,"数据加载中...",512),[[x,t.value]])]),g(N,null,{default:p((()=>[y("查看各个服务的运行情况")])),_:1}),i("div",J,[(r(!0),s(h,null,w(a,(e=>(r(),s("div",{key:e.key,class:"service-item"},[i("img",{src:e.logo,alt:e.name},null,8,K),i("p",null,[g(N,null,{default:p((()=>[y(k(e.des),1)])),_:2},1024)]),e.status?(r(),M(c,{key:0,type:"success",size:"small",icon:m(F),circle:""},null,8,["icon"])):(r(),M(c,{key:1,type:"danger",size:"small",icon:m(q),circle:""},null,8,["icon"])),!e.status&&e.error?(r(),s("p",P,[g(N,null,{default:p((()=>[y(k(e.error),1)])),_:2},1024)])):b("",!0)])))),128))])]),f(i("div",W,[X,(r(!0),s(h,null,w(l.value,(e=>(r(),s("p",{key:e.key},[i("strong",null,k(e.name)+":",1),i("span",$,k(e.errMsg),1)])))),128))],512),[[x,l.value.length]]),i("div",null,[ee,g(N,null,{default:p((()=>[y(" 在此面板,配置服务器运行相关参数 "),i("a",ae,[g(c,{type:"primary",link:""},{default:p((()=>[y("配置手册?")])),_:1})])])),_:1})]),i("div",te,[(r(!0),s(h,null,w(j.value,(e=>(r(),s("div",{key:e.title,class:"config-panel"},[i("h2",null,k(e.title),1),g(T,{"label-position":"right","label-width":"100px",style:{"max-width":"400px",margin:"0 auto"}},{default:p((()=>[(r(!0),s(h,null,w(e.data,(e=>(r(),M(O,{key:e.key,"label-width":"auto",label:e.label||e.key},{default:p((()=>[i("div",le,[g(u,{modelValue:e.value,"onUpdate:modelValue":a=>e.value=a,disabled:e.disabled},null,8,["modelValue","onUpdate:modelValue","disabled"]),e.disabled?(r(),M(c,{key:0,type:"primary",text:"",onClick:a=>e.disabled=!1},{default:p((()=>[y(" 更新 ")])),_:2},1032,["onClick"])):(r(),M(c,{key:1,type:"success",text:"",onClick:a=>{return t=e,void D.updateCfg(t).then((()=>{t.disabled=!0,z.success("更新成功"),n()}));var t}},{default:p((()=>[y(" 完成 ")])),_:2},1032,["onClick"]))])])),_:2},1032,["label"])))),128))])),_:2},1024)])))),128))])])])}}}),[["__scopeId","data-v-9638922a"]]))}}}));
|
|
2
|
-
//# sourceMappingURL=index-legacy-QHDmYAB8.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-legacy-QHDmYAB8.js","sources":["../../src/apis/modules/config.ts","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/close-bold.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/select.mjs","../../src/pages/dashboard/config/index.vue"],"sourcesContent":["import ajax from '../ajax'\n\nfunction getServiceOverview(): ConfigServiceAPITypes.getServiceOverview {\n return ajax.get('/config/service/overview')\n}\n\nfunction getServiceConfig(): ConfigServiceAPITypes.getServiceConfig {\n return ajax.get('/config/service/config')\n}\n\nfunction updateCfg(data: ConfigServiceAPITypes.ServiceConfigItem) {\n return ajax.put('/config/service/config', data)\n}\n\nexport default {\n getServiceOverview,\n getServiceConfig,\n updateCfg\n}\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"CloseBold\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M195.2 195.2a64 64 0 0 1 90.496 0L512 421.504 738.304 195.2a64 64 0 0 1 90.496 90.496L602.496 512 828.8 738.304a64 64 0 0 1-90.496 90.496L512 602.496 285.696 828.8a64 64 0 0 1-90.496-90.496L421.504 512 195.2 285.696a64 64 0 0 1 0-90.496z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar closeBold = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { closeBold as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Select\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M77.248 415.04a64 64 0 0 1 90.496 0l226.304 226.304L846.528 188.8a64 64 0 1 1 90.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 0 1 0-90.496z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar select = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { select as default };\n","<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport { computed, onMounted, reactive, ref } from 'vue'\nimport { CloseBold, Refresh, Select } from '@element-plus/icons-vue'\nimport Tip from '../tasks/components/infoPanel/tip.vue'\nimport { ConfigServiceAPI } from '@/apis'\n\nconst serviceList = reactive([\n {\n name: 'MySQL',\n key: 'mysql',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTAyMjIwNA==657359022204',\n status: false,\n des: '存储用户数据',\n errMsg: '',\n },\n {\n name: '七牛云',\n key: 'qiniu',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODcyODM0Mg==657358728342',\n status: false,\n des: '文件存储',\n },\n {\n name: 'MongoDB',\n key: 'mongodb',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTA4OTc3Nw==657359089777',\n status: false,\n des: '用户数据与日志',\n },\n {\n name: 'Redis',\n key: 'redis',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODgyNzM1MA==657358827350',\n status: false,\n des: '持久化缓存数据',\n error: '确保安装redis,且监听端口6379',\n },\n {\n name: '腾讯云',\n key: 'tx',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTE1MzQzOQ==657359153439',\n status: false,\n des: '短信服务',\n },\n])\n\nconst loading = ref(false)\nconst showErrorList = computed(() => serviceList.filter(item => item.errMsg))\nfunction refreshStatus() {\n if (loading.value)\n return\n loading.value = true\n ConfigServiceAPI.getServiceOverview().then((v) => {\n const { data } = v\n serviceList.forEach((item) => {\n const { status, errMsg } = data[item.key]\n item.status = status\n item.errMsg = errMsg\n })\n ElMessage.success('服务状态刷新完成')\n loading.value = false\n })\n}\n\nconst serverConfig = ref([])\nfunction getServiceConfig() {\n ConfigServiceAPI.getServiceConfig().then((v) => {\n // console.log(v.data)\n v.data.forEach((v) => {\n v.data.forEach((v) => {\n v.disabled = true\n })\n })\n serverConfig.value = v.data\n })\n}\nfunction updateCfg(item: ConfigServiceAPITypes.ServiceConfigItem) {\n ConfigServiceAPI.updateCfg(item).then(() => {\n item.disabled = true\n ElMessage.success('更新成功')\n refreshStatus()\n })\n}\nonMounted(() => {\n refreshStatus()\n getServiceConfig()\n})\n</script>\n\n<template>\n <div class=\"user\">\n <div class=\"panel\">\n <!-- 服务概况 -->\n <div>\n <h1>\n <span>服务概况</span>\n <el-icon\n :class=\"{\n loading,\n }\"\n style=\"cursor: pointer; margin-left: 10px\"\n @click=\"refreshStatus\"\n >\n <Refresh />\n </el-icon>\n <span v-show=\"loading\">数据加载中...</span>\n </h1>\n <Tip>查看各个服务的运行情况</Tip>\n <div class=\"service-list\">\n <div\n v-for=\"service in serviceList\"\n :key=\"service.key\"\n class=\"service-item\"\n >\n <img :src=\"service.logo\" :alt=\"service.name\">\n <!-- <p>{{ service.name }}</p> -->\n <p>\n <Tip>{{ service.des }}</Tip>\n </p>\n <el-button\n v-if=\"service.status\"\n type=\"success\"\n size=\"small\"\n :icon=\"Select\"\n circle\n />\n <el-button\n v-else\n type=\"danger\"\n size=\"small\"\n :icon=\"CloseBold\"\n circle\n />\n <p v-if=\"!service.status && service.error\">\n <Tip>{{ service.error }}</Tip>\n </p>\n </div>\n </div>\n </div>\n <div v-show=\"showErrorList.length\" class=\"error-panel\">\n <h1>错误信息</h1>\n <p v-for=\"err in showErrorList\" :key=\"err.key\">\n <strong>{{ err.name }}:</strong>\n <span class=\"error\">{{ err.errMsg }}</span>\n </p>\n </div>\n <div>\n <h1>服务相关配置</h1>\n <Tip>\n 在此面板,配置服务器运行相关参数\n <a\n href=\"https://docs.ep.sugarat.top/deploy/online-new.html#_5-%E6%9C%80%E5%90%8E%E6%9B%B4%E6%96%B0%E9%85%8D%E7%BD%AE\"\n >\n <el-button type=\"primary\" link>配置手册?</el-button></a>\n </Tip>\n </div>\n <div class=\"config-container\">\n <div\n v-for=\"serverItem in serverConfig\"\n :key=\"serverItem.title\"\n class=\"config-panel\"\n >\n <h2>\n {{ serverItem.title }}\n </h2>\n <el-form\n label-position=\"right\"\n label-width=\"100px\"\n style=\"max-width: 400px; margin: 0 auto\"\n >\n <el-form-item\n v-for=\"cfgItem in serverItem.data\"\n :key=\"cfgItem.key\"\n label-width=\"auto\"\n :label=\"cfgItem.label || cfgItem.key\"\n >\n <div class=\"flex\" style=\"flex: 1\">\n <el-input\n v-model=\"cfgItem.value\"\n :disabled=\"cfgItem.disabled\"\n />\n <el-button\n v-if=\"cfgItem.disabled\"\n type=\"primary\"\n text\n @click=\"cfgItem.disabled = false\"\n >\n 更新\n </el-button>\n <el-button\n v-else\n type=\"success\"\n text\n @click=\"updateCfg(cfgItem)\"\n >\n 完成\n </el-button>\n </div>\n </el-form-item>\n </el-form>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n}\n\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\nh1 {\n margin: 0;\n padding: 10px 0;\n font-size: 20px;\n font-weight: bold;\n text-align: center;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.service-list {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n}\n\n.service-item {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n margin: 10px;\n min-width: 120px;\n\n img {\n width: 80px;\n }\n\n p {\n text-align: center;\n padding-top: 10px;\n font-size: 14px;\n }\n}\n\n@keyframes rotate {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.loading {\n margin-left: 10px;\n animation: rotate 1s linear infinite;\n}\n\n.error-panel {\n padding: 0 20px;\n\n p {\n .error {\n color: red;\n }\n\n margin-bottom: 10px;\n }\n}\n\n.config-container {\n display: flex;\n justify-content: space-around;\n flex-wrap: wrap;\n}\n\n.config-panel {\n h2 {\n text-align: center;\n font-size: 16px;\n margin-bottom: 10px;\n }\n}\n</style>\n"],"names":["ConfigServiceAPI","getServiceOverview","ajax","get","getServiceConfig","updateCfg","data","put","_sfc_main","defineComponent","name","_hoisted_1","viewBox","xmlns","_hoisted_3","createElementVNode","fill","d","closeBold","_export_sfc","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","select","serviceList","reactive","key","logo","status","des","errMsg","error","loading","ref","showErrorList","computed","filter","item","refreshStatus","value","then","v","forEach","ElMessage","success","serverConfig","onMounted","disabled"],"mappings":"g5DAce,MAAAA,EAAA,CACbC,mBAbF,WACS,OAAAC,EAAKC,IAAI,2BAClB,EAYEC,iBAVF,WACS,OAAAF,EAAKC,IAAI,yBAClB,EASEE,UAPF,SAAmBC,GACV,OAAAJ,EAAKK,IAAI,yBAA0BD,EAC5C,GCTME,EAAYC,EAAgB,CAChCC,KAAM,cAEFC,EAAa,CACjBC,QAAS,gBACTC,MAAO,8BAMHC,EAAa,CAJgBC,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,iPACF,MAAO,IAOV,IAAIC,EAA4BC,EAAYX,EAAW,CAAC,CAAC,SAHzD,SAAqBY,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,OAAOC,IAAaC,EAAmB,MAAOhB,EAAYG,EAC5D,KChBA,MAAMN,EAAYC,EAAgB,CAChCC,KAAM,WAEFC,EAAa,CACjBC,QAAS,gBACTC,MAAO,8BAMHC,EAAa,CAJgBC,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,+IACF,MAAO,IAOV,IAAIW,EAAyBT,EAAYX,EAAW,CAAC,CAAC,SAHtD,SAAqBY,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,OAAOC,IAAaC,EAAmB,MAAOhB,EAAYG,EAC5D,igBCZA,MAAMe,EAAcC,EAAS,CAC3B,CACEpB,KAAM,QACNqB,IAAK,QACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,SACLC,OAAQ,IAEV,CACEzB,KAAM,MACNqB,IAAK,QACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,QAEP,CACExB,KAAM,UACNqB,IAAK,UACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,WAEP,CACExB,KAAM,QACNqB,IAAK,QACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,UACLE,MAAO,uBAET,CACE1B,KAAM,MACNqB,IAAK,KACLC,KAAM,qEACNC,QAAQ,EACRC,IAAK,UAIHG,EAAUC,GAAI,GACdC,EAAgBC,GAAS,IAAMX,EAAYY,QAAeC,GAAAA,EAAKP,WACrE,SAASQ,IACHN,EAAQO,QAEZP,EAAQO,OAAQ,EAChB5C,EAAiBC,qBAAqB4C,MAAMC,IACpC,MAAAxC,KAAEA,GAASwC,EACLjB,EAAAkB,SAASL,IACnB,MAAMT,OAAEA,EAAQE,OAAAA,GAAW7B,EAAKoC,EAAKX,KACrCW,EAAKT,OAASA,EACdS,EAAKP,OAASA,CAAA,IAEhBa,EAAUC,QAAQ,YAClBZ,EAAQO,OAAQ,CAAA,IAEpB,CAEM,MAAAM,EAAeZ,EAAI,WAmBzBa,GAAU,KACMR,IAlBd3C,EAAiBI,mBAAmByC,MAAMC,IAEtCA,EAAAxC,KAAKyC,SAASD,IACdA,EAAExC,KAAKyC,SAASD,IACdA,EAAEM,UAAW,CAAA,GACd,IAEHF,EAAaN,MAAQE,EAAExC,IAAA,GAYR,yxDATAoC,SACjB1C,EAAiBK,UAAUqC,GAAMG,MAAK,KACpCH,EAAKU,UAAW,EAChBJ,EAAUC,QAAQ,QACJN,GAAA,IAJlB,IAAmBD","x_google_ignoreList":[1,2]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
System.register(["./index-legacy-BLlk8iq-.js"],(function(a,t){"use strict";var e,n,i,d,l,o,r,c,m,s,g,p,u,f,x,v,h,w,b;return{setters:[a=>{e=a.g,n=a.d,i=a.a,d=a.c,l=a.b,o=a.i,r=a.F,c=a.C,m=a.j,s=a.w,g=a.D,p=a.G,u=a.H,f=a.t,x=a.e,v=a.I,h=a.p,w=a.f,b=a._}],execute:function(){var t=document.createElement("style");t.textContent="h1[data-v-a235cdd8],h2[data-v-a235cdd8],h3[data-v-a235cdd8],h4[data-v-a235cdd8]{font-weight:500}.callme[data-v-a235cdd8]{background-image:linear-gradient(120deg,#a1c4fd,#c2e9fb);min-height:100vh}main[data-v-a235cdd8]{max-width:860px;margin:0 auto;padding:20px}main .panel[data-v-a235cdd8]{position:relative;margin:0 auto 20px;padding:16px 20px;width:100%;overflow:hidden;border-radius:.25rem;box-shadow:#eee;box-sizing:border-box;transition:all .3s;background-color:#fff}main h1[data-v-a235cdd8]{font-size:1.6rem;font-weight:500;margin-bottom:10px}main .baseinfo[data-v-a235cdd8]{color:#7f7f7f;font-size:1rem;display:flex;flex-wrap:wrap;margin-bottom:10px}main .baseinfo a[data-v-a235cdd8]{color:#7f7f7f;font-size:1rem;margin-left:10px}main .baseinfo .info-item[data-v-a235cdd8]{margin-right:20px}main hr[data-v-a235cdd8]{margin-bottom:10px}main .qq-wechat ul[data-v-a235cdd8]{list-style:none;display:flex;flex-wrap:wrap;margin-bottom:10px}main .qq-wechat ul li[data-v-a235cdd8]{text-align:center}main .qq-wechat ul li .title[data-v-a235cdd8]{font-weight:600}main .qq-wechat ul li .content[data-v-a235cdd8]{padding:.5em}main .qq-wechat ul li img[data-v-a235cdd8]{width:150px}main .description[data-v-a235cdd8]{color:#242424;font-size:15px;margin-bottom:10px;text-align:center}main .links[data-v-a235cdd8]{text-align:center}main .links a[data-v-a235cdd8]{color:#409eff}\n",document.head.appendChild(t);const z=n({name:"Promotion"}),q={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},T=[l("path",{fill:"currentColor",d:"m64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472 64 448zm256 512V657.024L512 768 320 960z"},null,-1)];var k=e(z,[["render",function(a,t,e,n,l,o){return i(),d("svg",q,T)}]]);const y=n({name:"UserFilled"}),M={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},_=[l("path",{fill:"currentColor",d:"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0zm544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z"},null,-1)];var N=e(y,[["render",function(a,t,e,n,l,o){return i(),d("svg",M,_)}]]);const E=a=>(h("data-v-a235cdd8"),a=a(),w(),a),I={class:"callme"},Q={class:"panel"},j=E((()=>l("h1",null,"联系作者",-1))),C={class:"baseinfo"},O=["href"],Y=E((()=>l("hr",null,null,-1))),A={class:"qq-wechat"},B={class:"title"},D={class:"content"},F=["src"],H=E((()=>l("div",{class:"description"},[l("p",null,"如遇无法解决的账号/使用问题,欢迎小窗联系我")],-1))),L={class:"links"};a("default",b(n({__name:"index",setup(a){const t=[{icon:N,text:"粥里有勺糖",href:"https://sugarat.top"},{icon:k,text:"engineerzjl@foxmail.com",href:"mailto:engineerzjl@foxmail.com"}],e=[{text:"微信",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTk3MTkyNA==619155971925"},{text:"公众号",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTYwNzQ5MQ==619155607491"},{text:"QQ",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NjQ5ODczOQ==619156498739"},{text:"交流群",img:"https://img.cdn.sugarat.top/mdImg/MTY0Nzc2MTE2MTE2NA==ep-group.png"}];return(a,n)=>{const h=v,w=o("router-link");return i(),d("div",I,[l("main",null,[l("div",Q,[j,l("div",C,[(i(),d(r,null,c(t,((a,t)=>l("span",{key:t,class:"info-item"},[m(h,null,{default:s((()=>[(i(),g(p(a.icon)))])),_:2},1024),l("i",{class:u(a.icon)},null,2),l("a",{target:"_blank",href:a.href},f(a.text),9,O)]))),64))]),Y,l("div",A,[l("ul",null,[(i(),d(r,null,c(e,((a,t)=>l("li",{key:t},[l("div",B,f(a.text),1),l("div",D,[l("img",{src:a.img},null,8,F)])]))),64))])]),H,l("div",L,[m(w,{to:"/"},{default:s((()=>[x("回到首页")])),_:1})])])])])}}}),[["__scopeId","data-v-a235cdd8"]]))}}}));
|
|
2
|
-
//# sourceMappingURL=index-legacy-_M1-0586.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-legacy-_M1-0586.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/promotion.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/user-filled.mjs","../../src/pages/callme/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: \"Promotion\"\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: \"m64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472 64 448zm256 512V657.024L512 768 320 960z\"\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 promotion = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { promotion 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: \"UserFilled\"\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: \"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0zm544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z\"\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 userFilled = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { userFilled as default };\n","<template>\n <div class=\"callme\">\n <main>\n <div class=\"panel\">\n <h1>联系作者</h1>\n <!-- 基本信息 -->\n <div class=\"baseinfo\">\n <span v-for=\"(info, idx) in baseInfo\" :key=\"idx\" class=\"info-item\">\n <el-icon>\n <component :is=\"info.icon\" />\n </el-icon>\n <i :class=\"info.icon\"></i>\n <a target=\"_blank\" :href=\"info.href\">{{ info.text }}</a>\n </span>\n </div>\n <hr />\n <!-- 一堆二维码 -->\n <div class=\"qq-wechat\">\n <ul>\n <li v-for=\"(qrcode, idx) in qrCOdes\" :key=\"idx\">\n <div class=\"title\">{{ qrcode.text }}</div>\n <div class=\"content\">\n <img :src=\"qrcode.img\" />\n </div>\n </li>\n </ul>\n </div>\n <div class=\"description\">\n <p>如遇无法解决的账号/使用问题,欢迎小窗联系我</p>\n </div>\n <div class=\"links\">\n <router-link to=\"/\">回到首页</router-link>\n </div>\n </div>\n </main>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { UserFilled, Promotion } from '@element-plus/icons-vue'\n\nconst baseInfo = [\n {\n icon: UserFilled,\n text: '粥里有勺糖',\n href: 'https://sugarat.top',\n },\n {\n icon: Promotion,\n text: 'engineerzjl@foxmail.com',\n href: 'mailto:engineerzjl@foxmail.com',\n },\n]\n\nconst qrCOdes = [\n {\n text: '微信',\n img: 'https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTk3MTkyNA==619155971925',\n },\n {\n text: '公众号',\n img: 'https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTYwNzQ5MQ==619155607491',\n },\n {\n text: 'QQ',\n img: 'https://img.cdn.sugarat.top/mdImg/MTYxOTE1NjQ5ODczOQ==619156498739',\n },\n {\n text: '交流群',\n img: 'https://img.cdn.sugarat.top/mdImg/MTY0Nzc2MTE2MTE2NA==ep-group.png',\n },\n]\n\n</script>\n<style lang=\"scss\" scoped>\nh1,\nh2,\nh3,\nh4 {\n font-weight: 500;\n}\n.callme {\n background-image: linear-gradient(120deg, #a1c4fd 0%, #c2e9fb 100%);\n min-height: 100vh;\n}\nmain {\n max-width: 860px;\n margin: 0 auto;\n padding: 20px;\n .panel {\n position: relative;\n margin: 0 auto 20px;\n padding: 16px 20px;\n width: 100%;\n overflow: hidden;\n border-radius: 0.25rem;\n box-shadow: #eee;\n box-sizing: border-box;\n transition: all 0.3s;\n background-color: #fff;\n }\n h1 {\n font-size: 1.6rem;\n font-weight: 500;\n margin-bottom: 10px;\n }\n .baseinfo {\n color: #7f7f7f;\n font-size: 1rem;\n display: flex;\n flex-wrap: wrap;\n a {\n color: #7f7f7f;\n font-size: 1rem;\n margin-left: 10px;\n }\n .info-item {\n margin-right: 20px;\n }\n margin-bottom: 10px;\n }\n hr {\n margin-bottom: 10px;\n }\n .qq-wechat ul {\n list-style: none;\n display: flex;\n flex-wrap: wrap;\n margin-bottom: 10px;\n li {\n text-align: center;\n .title {\n font-weight: 600;\n }\n .content {\n padding: 0.5em;\n }\n img {\n width: 150px;\n }\n }\n }\n .description {\n color: #242424;\n font-size: 15px;\n margin-bottom: 10px;\n text-align: center;\n }\n .links {\n text-align: center;\n a {\n color: #409eff;\n }\n }\n}\n</style>\n"],"names":["_sfc_main","defineComponent","name","_hoisted_1","viewBox","xmlns","_hoisted_3","createElementVNode","fill","d","promotion","_export_sfc","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","userFilled","baseInfo","icon","UserFilled","text","href","Promotion","qrCOdes","img"],"mappings":"8rDAGA,MAAMA,EAAYC,EAAgB,CAChCC,KAAM,cAEFC,EAAa,CACjBC,QAAS,gBACTC,MAAO,8BAMHC,EAAa,CAJgBC,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,2GACF,MAAO,IAOV,IAAIC,EAA4BC,EAAYX,EAAW,CAAC,CAAC,SAHzD,SAAqBY,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,OAAOC,IAAaC,EAAmB,MAAOhB,EAAYG,EAC5D,KChBA,MAAMN,EAAYC,EAAgB,CAChCC,KAAM,eAEFC,EAAa,CACjBC,QAAS,gBACTC,MAAO,8BAMHC,EAAa,CAJgBC,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,6JACF,MAAO,IAOV,IAAIW,EAA6BT,EAAYX,EAAW,CAAC,CAAC,SAH1D,SAAqBY,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,OAAOC,IAAaC,EAAmB,MAAOhB,EAAYG,EAC5D,+YCqBA,MAAMe,EAAW,CACf,CACEC,KAAMC,EACNC,KAAM,QACNC,KAAM,uBAER,CACEH,KAAMI,EACNF,KAAM,0BACNC,KAAM,mCAIJE,EAAU,CACd,CACEH,KAAM,KACNI,IAAK,sEAEP,CACEJ,KAAM,MACNI,IAAK,sEAEP,CACEJ,KAAM,KACNI,IAAK,sEAEP,CACEJ,KAAM,MACNI,IAAK","x_google_ignoreList":[0,1]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
System.register(["./index-legacy-BLlk8iq-.js","./el-loading-legacy-B3RLcjwN.js","./el-progress-legacy-QmxDezwR.js","./el-form-item-legacy-CvQy7syv.js","./tip-legacy-DiCk_qP1.js","./index-legacy-Bnp7569A.js","./el-dialog-legacy-BRLM43ZY.js","./index-legacy-CQ24Si-w.js","./index-legacy-Da4s_D85.js","./isEqual-legacy-BWUPR8bV.js","./el-select-legacy-DSGgSQYX.js","./validator-legacy-CacjPWoF.js","./aria-legacy-B70JmEZA.js"],(function(e,a){"use strict";var l,t,n,i,s,o,u,d,r,c,p,v,f,m,g,h,y,x,k,w,b,_,z,j,N,$,C,E,T,U,I,L,S,F,O,M,D,P,V,A,G,J,R,W,q,B,H,K,Y,X,Z,Q,ee,ae,le,te,ne,ie,se;return{setters:[e=>{l=e.g,t=e.d,n=e.a,i=e.c,s=e.b,o=e.u,u=e.a1,d=e.Z,r=e.O,c=e.r,p=e.$,v=e.bt,f=e.o,m=e.aW,g=e.E,h=e.bf,y=e.i,x=e.j,k=e.w,w=e.F,b=e.C,_=e.t,z=e.a8,j=e.k,N=e.S,$=e.e,C=e.D,E=e.a9,T=e.a5,U=e.a3,I=e.aY,L=e.ag,S=e.bX,F=e.ae,O=e.aa,M=e.af,D=e.y,P=e.v,V=e.x,A=e.I,G=e.p,J=e.f,R=e.b0,W=e.s,q=e.ac,B=e.a_,H=e.P,K=e._},e=>{Y=e.v},e=>{X=e.a,Z=e.E},e=>{Q=e.E,ee=e.a},e=>{ae=e.T,le=e.E},e=>{te=e.I,ne=e.L},e=>{ie=e.u},e=>{se=e.E},null,null,null,null,null],execute:function(){var a=document.createElement("style");a.textContent='@charset "UTF-8";.task-panel[data-v-8a74d233] ul.el-upload-list{border:1px dashed #d4d4d4;padding:10px}.task-panel[data-v-8a74d233] ul.el-upload-list:before{content:"此处展示选择文件列表";font-size:12px;position:relative;bottom:4px}.task-panel[data-v-8a74d233] .el-upload-list__item-name{display:block;overflow:hidden;max-width:290px;text-overflow:ellipsis;word-break:keep-all}.task-panel[data-v-8a74d233] .is-ready .el-icon--close{display:block;color:#000}.task-panel[data-v-8a74d233]{background-color:#f3f6f8;padding-bottom:1rem;position:relative}.pc-nav[data-v-8a74d233]{background-color:#fff;display:flex;padding:10px;justify-content:space-between;align-items:center}.pc-nav .exit[data-v-8a74d233]{cursor:pointer}.pc-nav .nav[data-v-8a74d233]{display:flex}.pc-nav .nav nav[data-v-8a74d233]{display:flex;align-items:center}.pc-nav .nav nav .nav-item[data-v-8a74d233]{font-size:1rem;color:#595959;padding:10px;cursor:pointer}.pc-nav .nav nav .nav-item.active[data-v-8a74d233]{color:#409eff!important;font-weight:600}.pc-nav .nav .exit[data-v-8a74d233]{color:#595959}.pc-nav .logo[data-v-8a74d233]{width:180px;margin:0 10px}.pc-nav .logo img[data-v-8a74d233]{height:40px}.panel[data-v-8a74d233]{max-width:1024px;padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}.panel .name[data-v-8a74d233]{text-align:center}.panel .ddl[data-v-8a74d233]{margin-top:10px;color:#919191;font-size:14px}.panel .infos[data-v-8a74d233]{max-width:460px;margin:auto;overflow:hidden}.panel .infos[data-v-8a74d233] div.el-form-item>label{font-weight:700}.panel .infos[data-v-8a74d233] div.el-form-item>label:before{content:"* ";color:red}.withdraw[data-v-8a74d233]{text-align:right}.tip-wrapper[data-v-8a74d233]{line-height:20px;text-align:left;word-break:break-all;overflow:hidden;padding:0 20px;color:#e6a23c;max-width:320px;font-size:14px}\n',document.head.appendChild(a);const oe=t({name:"UploadFilled"}),ue={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},de=[s("path",{fill:"currentColor",d:"M544 864V672h128L512 480 352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0 1 64 624c0-123.136 93.12-223.488 212.608-237.248A239.808 239.808 0 0 1 512 192a239.872 239.872 0 0 1 235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 0 1-240 240c-5.376 0-10.56-1.28-16-1.6v1.6H544z"},null,-1)];var re=l(oe,[["render",function(e,a,l,t,s,o){return n(),i("svg",ue,de)}]]);const ce=e=>(G("data-v-8a74d233"),e=e(),J(),e),pe={class:"task-panel"},ve={class:"pc-nav"},fe={class:"nav"},me={class:"logo"},ge=ce((()=>s("img",{style:{height:"40px",width:"170px"},src:"https://img.cdn.sugarat.top/easypicker/EasyPicker.png",alt:"logo"},null,-1))),he=["onClick"],ye={key:0,"element-loading-text":"Loading...",class:"panel tc"},xe={class:"name"},ke={key:0,style:{color:"red"}},we={class:"tip-wrapper"},be={class:"ddl"},_e={key:0},ze={key:4},je={class:"infos"},Ne={key:0},$e={class:"infos"},Ce=ce((()=>s("div",{class:"el-upload__text"},[$(" 将文件拖于此处 or "),s("em",null,"直接选择文件")],-1))),Ee={class:"p10"},Te={class:"p10"},Ue={class:"p10 option-tips"},Ie={style:{color:"red"}},Le={style:{color:"red"}},Se=ce((()=>s("br",null,null,-1))),Fe=ce((()=>s("br",null,null,-1))),Oe=ce((()=>s("strong",null,"查询提交情况,需填写和提交时一样的表单信息",-1))),Me=ce((()=>s("br",null,null,-1))),De=ce((()=>s("strong",null,"选择大文件后需要等待一会儿才展示处理",-1))),Pe=ce((()=>s("br",null,null,-1))),Ve={class:"withdraw"},Ae={key:1,class:"panel tc"},Ge={class:"name"},Je={style:{"padding-top":"20px"}};e("default",K(t({__name:"index",setup(e){const a=ie(),l=o(),t=u(),G=d([{title:"我也要收集",path:"https://docs.ep.sugarat.top/"}]),J=d({name:"",category:""}),K=d({bindField:""}),oe=r((()=>R(K.format))),ue=c(""),de=c(0),ce=r((()=>de.value<=0)),Re=r((()=>{let e=~~(de.value/1e3),a=~~(e/3600);const l=~~(a/24);a%=24;const t=~~(e%3600/60);return e%=60,`剩余${l}天${a}时${t}分${e}秒`}));function We(e=!0){if(K?.ddl){const e=new Date(K.ddl);de.value=e.getTime()-Date.now()}else de.value=0;e&&setTimeout((()=>{We()}),1e3)}const qe=r((()=>{if(K?.ddl){const e=new Date(K.ddl);return W(e)}return""})),Be=d([]),He=c([]),Ke=c(),Ye=r((()=>He.value.filter((e=>"uploading"===e.status)).length>0)),Xe=e=>"uploading"!==e.status&&"success"!==e.status||se.confirm("不影响已经上传成功的,正在上传的将取消上传","确定从列表移除文件吗?").then((()=>("uploading"===e.status&&(g.info(`取消${e.name}的上传`),e.subscription.unsubscribe()),!0))).catch((()=>!1)),Ze=r((()=>Be.every((e=>e.value)))),Qe=r((()=>K.bindField.trim()||"姓名")),ea=r((()=>Be.find((e=>e.text===Qe.value)))),aa=r((()=>K.people&&!ea.value)),la=d({peopleName:""});function ta(e,a,l){if(!a){const e=`请输入${Qe.value}`;return l(new Error(e)),void g.error(e)}I.checkPeopleIsExist(ue.value,a).then((e=>{e.data.exist||g.error("你不在此次提交名单中,如有疑问请联系管理员"),l(e.data.exist?void 0:new Error("你不在此次提交名单中,如有疑问请联系管理员"))}))}const na=c(),ia=d({peopleName:[{validator:ta,trigger:"blur"}]});function sa(){if(ea.value){const e=Be.find((e=>e.text===Qe.value))?.value;return la.peopleName=e||"",new Promise((a=>{ta(0,e,a)})).then((e=>!e))}return na.value.validate((e=>e))}async function oa(){if(Ze.value){if(K.people&&!(await sa()))return;!function(){const e=He.value;for(const a of e)if(a.md5){if("ready"===a.status){a.status="uploading";let{name:e}=a;const l=e;K.rewrite&&(e=Be.map((e=>e.value)).join(oe.value.splitChar||"-")+L(e)),e=q(e);const t=`easypicker2/${ue.value}/${a.md5}/${e}`;F.getUploadToken().then((n=>{B(n.data.token,a.raw,t,{success(t){const{fsize:n}=t;F.addFile({originName:l,name:e,taskKey:ue.value,taskName:J.name,size:n,hash:a.md5,info:JSON.stringify(Be),people:la.peopleName}).then((()=>{a.status="success",g.success(`文件:${a.name}提交成功`),K.people&&I.updatePeopleStatus(ue.value,e,la.peopleName,a.md5)}))},process(e,l,t){a.percentage=Math.floor(e),a.subscription=t}})}))}}else g.info(`文件(${a.name})的唯一指纹还在计算中,再等待一会儿再点击上传`),setTimeout((()=>{g.info("文件越大计算时间越长(1G通常需要20s)")}),100)}()}else g.warning("请先完成必要信息的填写")}const ua=r((()=>{for(const e of He.value)if("ready"===e.status)return!0;return!1})),da=r((()=>{for(const e of He.value)if(["success","ready"].includes(e.status))return!0;return!1})),ra=c(0);function ca(e){const{name:a}=e;if(oe.value.format.length&&oe.value.status){const l=L(a);if(!oe.value.format.find((e=>l.toLowerCase().endsWith(e))))return g.error(`${a} 格式不符合要求`),void Ke.value.handleRemove(e)}if(oe.value.size&&oe.value.size<e.size)return g.error(`${a} 大小${T(e.size)} 不符合要求`),void Ke.value.handleRemove(e);ra.value+=1,S(e.raw).then((a=>{e.md5=a,ra.value-=1}))}const pa=r((()=>oe.value.limit||10));function va(){g.warning(`一次提交最多只能选择${pa.value}个文件,请移除已经上传成功的或刷新页面`)}const fa=c(!1),ma=c("");function ga(){F.getTemplateUrl(K.template,ue.value).then((e=>{fa.value=!0;const{link:a}=e.data;ma.value=a,O(a,K.template)})).catch((()=>{g.warning("文件已从服务器上移除,请联系管理员重新上传")}))}const ha=c(!1);async function ya(){if(Ze.value){if(K.people&&!(await sa()))return;!function(){const e=He.value;for(const a of e)if(a.md5){if(!["fail","uploading"].includes(a.status)){let{name:e}=a;K.rewrite&&(e=Be.map((e=>e.value)).join(oe.value.splitChar||"-")+L(e)),F.withdrawFile({taskKey:ue.value,taskName:J.name,filename:e,hash:a.md5,info:JSON.stringify(Be),peopleName:la.peopleName}).then((()=>{g.success(`文件:${a.name}撤回成功`),a.name+=" - (已撤回 ✅ )",a.status="fail"})).catch((()=>{g.error(`撤回失败: 没有文件:${a.name}对应提交记录`)}))}}else g.info(`文件(${a.name})的唯一指纹还在计算中,再等待一会儿再点击上传`),setTimeout((()=>{g.info("文件越大计算时间越长(1G通常需要20s)")}),100)}()}else g.warning("请先完成必要信息的填写")}async function xa(){if(Ze.value){if(K.people&&!(await sa()))return;F.checkSubmitStatus(ue.value,Be,la.peopleName).then((e=>{e.data.isSubmit?g.success("已经提交过啦"):g.warning("还未提交过哟")}))}else g.warning("请先完成必要信息的填写,需和提交时信息完全一致")}const ka=c(!1),wa=c(!1);function ba(e=[],a=[]){return e.length===a.length&&e.every(((e,l)=>e.type===a[l].type&&e.text===a[l].text&&ba(e.children,a[l].children)))}function _a(e=!1){m.getTaskMoreInfo(ue.value).then((a=>{Object.assign(K,a.data),ba(Be,M(K.info))||(Be.splice(0,Be.length),Be.push(...M(K.info)),e&&g.success("表单信息有更新")),We(!1),ka.value=!1}))}function za(){wa.value=!0}function ja(){wa.value&&!Ye.value&&(wa.value=!1,_a(!0))}const Na=r((()=>ce.value?qe.value:qe.value+Re.value)),$a=d({text:"",imgs:[]}),Ca=c([]);p((()=>K.tip),(()=>{try{const e=JSON.parse(K.tip);$a.imgs=e.imgs,$a.text=e.text||"",Ca.value=$a.imgs.map((e=>({...e,url:"https://img.cdn.sugarat.top/mdImg/MTY3NzkxMDI1NTU1Nw==20140524124237518.gif"}))),Ca.value.length&&H.getTipImageUrl(ue.value,Ca.value.map((e=>({uid:e.uid,name:e.name})))).then((e=>{e.data.forEach(((e,a)=>{Ca.value[a].url=e.cover,Object.assign(Ca.value[a],{preview:e.preview})}))}))}catch{$a.text="",$a.imgs=[],Ca.value=[]}}));const Ea=v("disabledUpload",!1);return f((()=>{ue.value=t.params.key,ue.value&&(ka.value=!0,m.getTaskInfo(ue.value).then((e=>{Object.assign(J,e.data),Ea.value=!!e.data.limitUpload,Ea.value&&se.alert("任务存储空间容量已达到上限,已经无法进行上传,请联系发起人扩容空间")})).catch((e=>{4001===e.code&&(g.error("任务不存在"),ue.value="",J.name="任务不存在")})),_a(),We()),window.addEventListener("blur",za),window.addEventListener("focus",ja)})),h((()=>{window.removeEventListener("blur",za),window.removeEventListener("focus",ja)})),(e,t)=>{const o=y("router-link"),u=D,d=le,r=X,c=P,p=Q,v=ee,f=V,m=A,g=Z,h=Y;return n(),i("div",pe,[s("div",ve,[s("div",fe,[s("div",me,[x(o,{to:"/"},{default:k((()=>[ge])),_:1})]),s("nav",null,[(n(!0),i(w,null,b(G,((e,a)=>(n(),i("div",{key:a,class:"nav-item",onClick:e=>function(e){G[e].path.startsWith("http")?window.location.href=G[e].path:l.push({path:G[e].path})}(a)},_(e.title),9,he)))),128))])])]),ue.value?z((n(),i("div",ye,[s("h1",xe,_(J.name),1),j(Ea)?(n(),i("h2",ke," 任务存储空间容量已达到上限,已经无法进行上传,请联系发起人扩容空间 ")):N("",!0),!$a.text||qe.value&&ce.value?N("",!0):(n(),i(w,{key:1},[x(u,null,{default:k((()=>[$("⚠️ 注意事项 ⚠️")])),_:1}),x(ae,null,{default:k((()=>[s("div",we,[(n(!0),i(w,null,b($a.text.split("\n"),((e,a)=>(n(),i("p",{key:a},_(e.replace(/\s/g," ")),1)))),128))])])),_:1})],64)),!Ca.value.length||qe.value&&ce.value?N("",!0):(n(!0),i(w,{key:2},b(Ca.value,((e,a)=>(n(),C(d,{key:e.uid,"hide-on-click-modal":"",style:{width:"100px",height:"100px",margin:"10px"},src:e.url,"zoom-rate":1.2,"preview-src-list":Ca.value.map((e=>e.preview)),"initial-index":a,fit:"contain"},null,8,["src","preview-src-list","initial-index"])))),128)),qe.value?(n(),i(w,{key:3},[x(u,null,{default:k((()=>[$("截止时间")])),_:1}),s("h2",be,_(Na.value),1),ce.value?(n(),i("div",_e,[x(r,{description:"已经结束啦!"})])):N("",!0)],64)):N("",!0),qe.value&&ce.value?N("",!0):(n(),i("div",ze,[x(u,null,{default:k((()=>[$("必要信息填写")])),_:1}),s("div",je,[z(s("div",null,[x(ae,null,{default:k((()=>[$("“"+_(Qe.value)+"”在参与名单里才能正常提交",1)])),_:1})],512),[[E,K.people]]),aa.value?(n(),i("div",Ne,[s("div",$e,[x(v,{ref_key:"validModalRef",ref:na,rules:ia,"status-icon":"",model:la,disabled:Ye.value,"label-position":"top"},{default:k((()=>[x(p,{prop:"peopleName",label:Qe.value},{default:k((()=>[x(c,{modelValue:la.peopleName,"onUpdate:modelValue":t[0]||(t[0]=e=>la.peopleName=e),maxlength:14,clearable:"","show-word-limit":"",placeholder:`请输入 ${Qe.value}`},null,8,["modelValue","placeholder"])])),_:1},8,["label"])])),_:1},8,["rules","model","disabled"])])])):N("",!0),x(te,{infos:Be,disabled:Ye.value},null,8,["infos","disabled"])]),x(g,{ref_key:"fileUpload",ref:Ke,"file-list":He.value,"onUpdate:fileList":t[1]||(t[1]=e=>He.value=e),style:{"max-width":"400px",margin:"0 auto"},drag:!j(a),action:"","on-change":ca,"before-remove":Xe,"on-exceed":va,"auto-upload":!1,multiple:"",limit:pa.value},{tip:k((()=>[z(s("div",Ee,[x(ae,null,{default:k((()=>[$(" 还有 "+_(ra.value)+" 个文件正在生成校验信息,请稍等(1G通常需要20s) ",1)])),_:1})],512),[[E,!!ra.value]])])),default:k((()=>[j(a)?(n(),C(f,{key:0,type:"primary"},{default:k((()=>[$(" 选择文件 ")])),_:1})):(n(),i(w,{key:1},[x(m,{class:"el-icon--upload"},{default:k((()=>[x(j(re))])),_:1}),Ce],64))])),_:1},8,["file-list","drag","limit"]),s("div",Te,[ha.value?(n(),C(f,{key:0,size:"default",type:"warning",disabled:!da.value||!!ra.value,onClick:ya},{default:k((()=>[$(" 一键撤回 ")])),_:1},8,["disabled"])):j(Ea)?N("",!0):(n(),C(f,{key:1,size:"default",type:"success",disabled:!ua.value||!!ra.value,onClick:oa},{default:k((()=>[$(" 提交文件 ")])),_:1},8,["disabled"])),x(f,{size:"default",onClick:xa},{default:k((()=>[$(" 查询提交情况 ")])),_:1})]),s("div",Ue,[oe.value.status&&oe.value.format.length?(n(),C(ae,{key:0},{default:k((()=>[$(" 限制格式为: "),s("span",Ie,_(oe.value.format.join(", ")),1)])),_:1})):N("",!0),oe.value.size?(n(),C(ae,{key:1},{default:k((()=>[$(" 限制文件大小不超过: "),s("span",Le,_(j(T)(oe.value.size)),1)])),_:1})):N("",!0),ha.value?(n(),C(ae,{key:2},{default:k((()=>[$(" ① 须保证选择的文件与提交时的文件一致"),Se,$(" ② 填写表单信息一致 "),Fe,$(" ③ 完全一模一样的文件的提交记录(内容md5+命名),将会一次性全部撤回 ")])),_:1})):(n(),i(w,{key:3},[x(ae,null,{default:k((()=>[Oe])),_:1}),x(ae,null,{default:k((()=>[$(" ① 选择完文件,点击 ”提交文件“即可 "),Me,$(" ② "),De,K.template&&!j(Ea)?(n(),i(w,{key:0},[Pe,$(" ③ "),s("strong",null,[x(f,{type:"primary",text:"",style:{color:"#85ce61"},size:"small",onClick:ga},{default:k((()=>[$("右下角可 “查看提交示例” ")])),_:1})])],64)):N("",!0)])),_:1})],64))]),s("div",Ve,[K.template&&!j(Ea)?(n(),C(f,{key:0,type:"primary",text:"",style:{color:"#85ce61"},size:"small",onClick:ga},{default:k((()=>[$(" 查看提交示例 ")])),_:1})):N("",!0),ha.value?(n(),C(f,{key:1,size:"small",type:"primary",text:"",onClick:t[2]||(t[2]=e=>ha.value=!1)},{default:k((()=>[$(" 正常提交 ")])),_:1})):(n(),C(f,{key:2,size:"small",type:"primary",text:"",onClick:t[3]||(t[3]=e=>ha.value=!0)},{default:k((()=>[$(" 我要撤回 ")])),_:1}))])]))])),[[h,ka.value]]):(n(),i("div",Ae,[s("h1",Ge,_(J.name),1)])),x(ne,{value:fa.value,"onUpdate:value":t[4]||(t[4]=e=>fa.value=e),title:"示例文件下载链接",link:ma.value},null,8,["value","link"]),s("div",Je,[x(U,{type:"task"})])])}}}),[["__scopeId","data-v-8a74d233"]]))}}}));
|
|
2
|
-
//# sourceMappingURL=index-legacy-m0dvnwGi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-legacy-m0dvnwGi.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/upload-filled.mjs","../../src/pages/task/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: \"UploadFilled\"\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: \"M544 864V672h128L512 480 352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0 1 64 624c0-123.136 93.12-223.488 212.608-237.248A239.808 239.808 0 0 1 512 192a239.872 239.872 0 0 1 235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 0 1-240 240c-5.376 0-10.56-1.28-16-1.6v1.6H544z\"\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 uploadFilled = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { uploadFilled as default };\n","<script lang=\"ts\" setup>\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport type { FormInstance, UploadInstance, UploadUserFile } from 'element-plus'\nimport { computed, onMounted, onUnmounted, reactive, ref, watch } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport HomeFooter from '@components/HomeFooter/index.vue'\nimport LinkDialog from '@components/linkDialog.vue'\nimport { UploadFilled } from '@element-plus/icons-vue'\nimport { useStore } from 'vuex'\nimport { useLocalStorage } from '@vueuse/core'\nimport Tip from '../dashboard/tasks/components/infoPanel/tip.vue'\nimport {\n formatDate,\n formatSize,\n getFileMd5Hash,\n getFileSuffix,\n normalizeFileName,\n parseFileFormat,\n parseInfo,\n} from '@/utils/stringUtil'\nimport { downLoadByUrl, qiniuUpload } from '@/utils/networkUtil'\nimport { FileApi, PeopleApi, PublicApi, TaskApi } from '@/apis'\nimport InfosForm from '@/components/InfosForm/index.vue'\nimport { useIsMobile } from '@/composables'\n\nconst isMobile = useIsMobile()\n// 顶部导航\nconst $router = useRouter()\nconst $route = useRoute()\nconst pcNavs = reactive([\n {\n title: '我也要收集',\n path: 'https://docs.ep.sugarat.top/',\n },\n])\nfunction handleNav(idx: number) {\n if (pcNavs[idx].path.startsWith('http')) {\n window.location.href = pcNavs[idx].path\n return\n }\n $router.push({\n path: pcNavs[idx].path,\n })\n}\n\n// 任务基本信息展示\nconst taskInfo = reactive<TaskApiTypes.TaskInfo>({\n name: '',\n category: '',\n})\nconst taskMoreInfo = reactive<Partial<TaskApiTypes.TaskInfo>>({\n bindField: '',\n})\nconst formatData = computed(() => parseFileFormat(taskMoreInfo.format))\nconst k = ref('')\n\n// 用于展示截止日期\nconst waitTime = ref(0)\n// 判断是否结束\nconst isOver = computed(() => waitTime.value <= 0)\nconst waitTimeStr = computed(() => {\n let seconds = ~~(waitTime.value / 1000)\n let hour = ~~(seconds / (60 * 60))\n const day = ~~(hour / 24)\n hour %= 24\n const minute = ~~((seconds % 3600) / 60)\n seconds %= 60\n return `剩余${day}天${hour}时${minute}分${seconds}秒`\n})\nfunction refreshWaitTime(loop = true) {\n if (taskMoreInfo?.ddl) {\n const date = new Date(taskMoreInfo.ddl)\n waitTime.value = date.getTime() - Date.now()\n }\n else {\n waitTime.value = 0\n }\n if (loop) {\n setTimeout(() => {\n refreshWaitTime()\n }, 1000)\n }\n}\nconst ddlStr = computed(() => {\n if (taskMoreInfo?.ddl) {\n const date = new Date(taskMoreInfo.ddl)\n return formatDate(date)\n }\n return ''\n})\n\n// 必填信息\nconst infos = reactive<InfoItem[]>([])\n\n// 文件上传部分\n\n// 文件上传\nconst fileList = ref<(UploadUserFile & { md5: string, subscription: any })[]>(\n [],\n)\nconst fileUpload = ref<UploadInstance>()\nconst disableForm = computed(\n () => fileList.value.filter(item => item.status === 'uploading').length > 0,\n)\nconst handleRemoveFile: any = (file: any) => {\n if (file.status === 'uploading' || file.status === 'success') {\n return ElMessageBox.confirm(\n '不影响已经上传成功的,正在上传的将取消上传',\n '确定从列表移除文件吗?',\n )\n .then(() => {\n if (file.status === 'uploading') {\n ElMessage.info(`取消${file.name}的上传`)\n // 取消上传\n file.subscription.unsubscribe() // 取消上传\n }\n return true\n })\n .catch(() => false)\n }\n return true\n}\n\n// 校验表单填写\nconst isWriteFinish = computed(() => infos.every(item => item.value))\n// 提交文件\n\nconst limitBindField = computed(() => {\n return taskMoreInfo.bindField.trim() || '姓名'\n})\n\n// 身份核验表单\nconst isSameFieldName = computed(() =>\n infos.find(v => v.text === limitBindField.value),\n)\nconst showValidForm = computed(\n () => taskMoreInfo.people && !isSameFieldName.value,\n)\nconst validModal = reactive({\n peopleName: '',\n})\n\nfunction validatePeopleName(rule: any, value: any, callback: any) {\n if (!value) {\n const message = `请输入${limitBindField.value}`\n callback(new Error(message))\n ElMessage.error(message)\n return\n }\n // 异步校验\n PeopleApi.checkPeopleIsExist(k.value, value).then((res) => {\n if (!res.data.exist) {\n ElMessage.error('你不在此次提交名单中,如有疑问请联系管理员')\n }\n callback(\n res.data.exist\n ? undefined\n : new Error('你不在此次提交名单中,如有疑问请联系管理员'),\n )\n })\n}\n\nconst validModalRef = ref<FormInstance>()\nconst validModalRules = reactive({\n peopleName: [{ validator: validatePeopleName, trigger: 'blur' }],\n})\nfunction confirmPeopleName() {\n // 处理表单必填项含有 limitBindField 的情况\n if (isSameFieldName.value) {\n const value = infos.find(v => v.text === limitBindField.value)?.value\n validModal.peopleName = value || ''\n return new Promise((resolve) => {\n validatePeopleName(null, value, resolve)\n }).then(v => !v)\n }\n return validModalRef.value.validate((isValid: boolean) => isValid)\n}\n\nfunction startUpload() {\n const uploadFiles = fileList.value\n for (const file of uploadFiles) {\n if (!file.md5) {\n ElMessage.info(\n `文件(${file.name})的唯一指纹还在计算中,再等待一会儿再点击上传`,\n )\n setTimeout(() => {\n ElMessage.info('文件越大计算时间越长(1G通常需要20s)')\n }, 100)\n }\n else if (file.status === 'ready') {\n // 开始上传\n file.status = 'uploading'\n let { name } = file\n const originName = name\n // 如果开启了自动重命名,这里重命名一下\n if (taskMoreInfo.rewrite) {\n name\n = infos.map(v => v.value).join(formatData.value.splitChar || '-')\n + getFileSuffix(name)\n }\n // 替换不合法的字符\n name = normalizeFileName(name)\n const key = `easypicker2/${k.value}/${file.md5}/${name}`\n\n FileApi.getUploadToken().then((res) => {\n qiniuUpload(res.data.token, file.raw, key, {\n success(data: any) {\n const { fsize } = data\n FileApi.addFile({\n originName,\n name,\n taskKey: k.value,\n taskName: taskInfo.name,\n size: fsize,\n hash: file.md5,\n info: JSON.stringify(infos),\n people: validModal.peopleName,\n }).then(() => {\n file.status = 'success'\n ElMessage.success(`文件:${file.name}提交成功`)\n if (taskMoreInfo.people) {\n // 无感知更新一下\n PeopleApi.updatePeopleStatus(\n k.value,\n name,\n validModal.peopleName,\n file.md5,\n )\n }\n })\n },\n process(per: number, data: any, subscription: any) {\n file.percentage = Math.floor(per)\n // 挂载取消上传的方法\n file.subscription = subscription\n },\n })\n })\n }\n }\n}\n\nasync function submitUpload() {\n if (!isWriteFinish.value) {\n ElMessage.warning('请先完成必要信息的填写')\n return\n }\n\n if (taskMoreInfo.people) {\n const isValid = await confirmPeopleName()\n if (!isValid) {\n return\n }\n }\n startUpload()\n}\n\n// 是否允许上传\nconst allowUpload = computed(() => {\n for (const file of fileList.value) {\n if (file.status === 'ready') {\n return true\n }\n }\n return false\n})\n\n// 是否允许撤回\nconst allowWithdraw = computed(() => {\n for (const file of fileList.value) {\n if (['success', 'ready'].includes(file.status)) {\n return true\n }\n }\n return false\n})\n\n// 添加文件\n// 正在计算MD5值的文件个数\nconst calculateMd5Count = ref(0)\nfunction handleChangeFile(file: any) {\n // 校验文件后缀名\n const { name } = file\n if (formatData.value.format.length && formatData.value.status) {\n const suffix = getFileSuffix(name)\n if (\n !formatData.value.format.find(v => suffix.toLowerCase().endsWith(v))\n ) {\n ElMessage.error(`${name} 格式不符合要求`)\n fileUpload.value.handleRemove(file)\n return\n }\n }\n\n // 校验文件大小\n if (formatData.value.size && formatData.value.size < file.size) {\n ElMessage.error(`${name} 大小${formatSize(file.size)} 不符合要求`)\n fileUpload.value.handleRemove(file)\n return\n }\n\n calculateMd5Count.value += 1\n // 计算md5 hash\n getFileMd5Hash(file.raw).then((str) => {\n file.md5 = str\n calculateMd5Count.value -= 1\n })\n}\n\nconst limitUploadCount = computed(() => formatData.value.limit || 10)\nfunction handleExceed() {\n ElMessage.warning(\n `一次提交最多只能选择${limitUploadCount.value}个文件,请移除已经上传成功的或刷新页面`,\n )\n}\nconst showLinkModel = ref(false)\nconst templateLink = ref('')\nfunction runWithdraw() {\n const uploadFiles = fileList.value\n for (const file of uploadFiles) {\n if (!file.md5) {\n ElMessage.info(\n `文件(${file.name})的唯一指纹还在计算中,再等待一会儿再点击上传`,\n )\n setTimeout(() => {\n ElMessage.info('文件越大计算时间越长(1G通常需要20s)')\n }, 100)\n }\n else if (!['fail', 'uploading'].includes(file.status)) {\n // 准备开始撤回\n let { name } = file\n\n // 如果开启了自动重命名,这里重命名一下\n if (taskMoreInfo.rewrite) {\n name\n = infos.map(v => v.value).join(formatData.value.splitChar || '-')\n + getFileSuffix(name)\n }\n\n FileApi.withdrawFile({\n taskKey: k.value,\n taskName: taskInfo.name,\n filename: name,\n hash: file.md5,\n info: JSON.stringify(infos),\n peopleName: validModal.peopleName,\n })\n .then(() => {\n ElMessage.success(`文件:${file.name}撤回成功`)\n file.name += ' - (已撤回 ✅ )'\n file.status = 'fail'\n })\n .catch(() => {\n ElMessage.error(`撤回失败: 没有文件:${file.name}对应提交记录`)\n })\n }\n }\n}\nfunction downloadTemplate() {\n FileApi.getTemplateUrl(taskMoreInfo.template, k.value)\n .then((res) => {\n showLinkModel.value = true\n const { link } = res.data\n templateLink.value = link\n downLoadByUrl(link, taskMoreInfo.template)\n })\n .catch(() => {\n ElMessage.warning('文件已从服务器上移除,请联系管理员重新上传')\n })\n}\n\n// 撤回相关逻辑\nconst isWithdraw = ref(false)\nasync function startWithdraw() {\n // 校验表单填写\n if (!isWriteFinish.value) {\n ElMessage.warning('请先完成必要信息的填写')\n return\n }\n if (taskMoreInfo.people) {\n const isValid = await confirmPeopleName()\n if (!isValid) {\n return\n }\n }\n runWithdraw()\n}\n\n// 查询提交情况\nasync function checkSubmitStatus() {\n // 校验表单填写\n if (!isWriteFinish.value) {\n ElMessage.warning('请先完成必要信息的填写,需和提交时信息完全一致')\n return\n }\n // 卡控人员限制\n if (taskMoreInfo.people) {\n const isValid = await confirmPeopleName()\n if (!isValid) {\n return\n }\n }\n FileApi.checkSubmitStatus(k.value, infos, validModal.peopleName).then(\n (res) => {\n if (res.data.isSubmit) {\n ElMessage.success('已经提交过啦')\n }\n else {\n ElMessage.warning('还未提交过哟')\n }\n },\n )\n}\nconst isLoadingData = ref(false)\nconst readyRefresh = ref(false)\nfunction isEqualInfos(a: InfoItem[] = [], b: InfoItem[] = []) {\n if (a.length !== b.length) {\n return false\n }\n return a.every(\n (v, i) =>\n v.type === b[i].type\n && v.text === b[i].text\n && isEqualInfos(v.children, b[i].children),\n )\n}\nfunction refreshTaskMoreInfo(hot = false) {\n TaskApi.getTaskMoreInfo(k.value).then((res) => {\n Object.assign(taskMoreInfo, res.data)\n if (!isEqualInfos(infos, parseInfo(taskMoreInfo.info))) {\n infos.splice(0, infos.length)\n infos.push(...parseInfo(taskMoreInfo.info))\n if (hot) {\n ElMessage.success('表单信息有更新')\n }\n }\n refreshWaitTime(false)\n isLoadingData.value = false\n })\n}\nfunction handleBlur() {\n readyRefresh.value = true\n}\nfunction handleFocus() {\n if (readyRefresh.value && !disableForm.value) {\n readyRefresh.value = false\n refreshTaskMoreInfo(true)\n }\n}\n\n// 展示的时间提示文案\nconst timeInfo = computed(() => {\n if (!isOver.value) {\n return ddlStr.value + waitTimeStr.value\n }\n return ddlStr.value\n})\n\n// tipImage\nconst tipData = reactive<{\n text: string\n imgs: {\n uid: number\n name: string\n }[]\n}>({\n text: '',\n imgs: [],\n})\nconst imageList = ref<\n { name: string, uid: number, preview?: string, url: string }[]\n>([])\n\nwatch(\n () => taskMoreInfo.tip,\n () => {\n // 初始化\n try {\n const parseData = JSON.parse(taskMoreInfo.tip)\n tipData.imgs = parseData.imgs\n tipData.text = parseData.text || ''\n imageList.value = tipData.imgs.map((v) => {\n return {\n ...v,\n url: 'https://img.cdn.sugarat.top/mdImg/MTY3NzkxMDI1NTU1Nw==20140524124237518.gif',\n }\n })\n if (imageList.value.length) {\n // 异步填充url\n PublicApi.getTipImageUrl(\n k.value,\n imageList.value.map(v => ({\n uid: v.uid,\n name: v.name,\n })),\n ).then((v) => {\n v.data.forEach((url, idx) => {\n imageList.value[idx].url = url.cover\n Object.assign(imageList.value[idx], {\n preview: url.preview,\n })\n })\n })\n }\n }\n catch {\n tipData.text = ''\n tipData.imgs = []\n imageList.value = []\n }\n },\n)\n\n// 禁用上传\nconst disabledUpload = useLocalStorage('disabledUpload', false)\n\nonMounted(() => {\n k.value = $route.params.key as string\n if (k.value) {\n isLoadingData.value = true\n TaskApi.getTaskInfo(k.value)\n .then((res) => {\n Object.assign(taskInfo, res.data)\n disabledUpload.value = !!res.data.limitUpload\n if (disabledUpload.value) {\n ElMessageBox.alert(\n '任务存储空间容量已达到上限,已经无法进行上传,请联系发起人扩容空间',\n )\n }\n })\n .catch((err) => {\n if (err.code === 4001) {\n ElMessage.error('任务不存在')\n k.value = ''\n taskInfo.name = '任务不存在'\n }\n })\n refreshTaskMoreInfo()\n refreshWaitTime()\n }\n // 页面隐藏\n window.addEventListener('blur', handleBlur)\n\n // 页面展示\n window.addEventListener('focus', handleFocus)\n})\n\nonUnmounted(() => {\n // 页面隐藏\n window.removeEventListener('blur', handleBlur)\n // 页面展示\n window.removeEventListener('focus', handleFocus)\n})\n</script>\n\n<template>\n <div class=\"task-panel\">\n <div class=\"pc-nav\">\n <div class=\"nav\">\n <!-- LOGO -->\n <div class=\"logo\">\n <router-link to=\"/\">\n <img\n style=\"height: 40px; width: 170px\"\n src=\"https://img.cdn.sugarat.top/easypicker/EasyPicker.png\"\n alt=\"logo\"\n >\n </router-link>\n </div>\n <nav>\n <div\n v-for=\"(n, idx) in pcNavs\"\n :key=\"idx\"\n class=\"nav-item\"\n @click=\"handleNav(idx)\"\n >\n {{ n.title }}\n </div>\n </nav>\n </div>\n </div>\n <!-- 有效 -->\n <div\n v-if=\"k\"\n v-loading=\"isLoadingData\"\n element-loading-text=\"Loading...\"\n class=\"panel tc\"\n >\n <!-- 任务名 -->\n <h1 class=\"name\">\n {{ taskInfo.name }}\n </h1>\n <h2 v-if=\"disabledUpload\" style=\"color: red\">\n 任务存储空间容量已达到上限,已经无法进行上传,请联系发起人扩容空间\n </h2>\n <!-- 提示信息 -->\n <!-- 时间截止了也不再展示 -->\n <template v-if=\"tipData.text && (ddlStr ? !isOver : true)\">\n <el-divider>⚠️ 注意事项 ⚠️</el-divider>\n <Tip>\n <div class=\"tip-wrapper\">\n <p v-for=\"(t, i) in tipData.text.split('\\n')\" :key=\"i\">\n {{ t.replace(/\\s/g, ' ') }}\n </p>\n </div>\n </Tip>\n </template>\n <template v-if=\"imageList.length && (ddlStr ? !isOver : true)\">\n <el-image\n v-for=\"(img, idx) in imageList\"\n :key=\"img.uid\"\n hide-on-click-modal\n style=\"width: 100px; height: 100px; margin: 10px\"\n :src=\"img.url\"\n :zoom-rate=\"1.2\"\n :preview-src-list=\"imageList.map((v) => v.preview)\"\n :initial-index=\"idx\"\n fit=\"contain\"\n />\n </template>\n <!-- 截止时间字符串 -->\n <template v-if=\"ddlStr\">\n <el-divider>截止时间</el-divider>\n <h2 class=\"ddl\">\n {{ timeInfo }}\n </h2>\n <div v-if=\"isOver\">\n <el-empty description=\"已经结束啦!\" />\n </div>\n </template>\n <!-- 未设置ddl 或者 设置了还未结束 -->\n <div v-if=\"!ddlStr || !isOver\">\n <el-divider>必要信息填写</el-divider>\n <div class=\"infos\">\n <div v-show=\"taskMoreInfo.people\">\n <Tip>“{{ limitBindField }}”在参与名单里才能正常提交</Tip>\n </div>\n <div v-if=\"showValidForm\">\n <div class=\"infos\">\n <el-form\n ref=\"validModalRef\"\n :rules=\"validModalRules\"\n status-icon\n :model=\"validModal\"\n :disabled=\"disableForm\"\n label-position=\"top\"\n >\n <el-form-item prop=\"peopleName\" :label=\"limitBindField\">\n <el-input\n v-model=\"validModal.peopleName\"\n :maxlength=\"14\"\n clearable\n show-word-limit\n :placeholder=\"`请输入 ${limitBindField}`\"\n />\n </el-form-item>\n </el-form>\n </div>\n </div>\n <InfosForm :infos=\"infos\" :disabled=\"disableForm\" />\n </div>\n <el-upload\n ref=\"fileUpload\"\n v-model:file-list=\"fileList\"\n style=\"max-width: 400px; margin: 0 auto\"\n :drag=\"!isMobile\"\n action=\"\"\n :on-change=\"handleChangeFile\"\n :before-remove=\"handleRemoveFile\"\n :on-exceed=\"handleExceed\"\n :auto-upload=\"false\"\n multiple\n :limit=\"limitUploadCount\"\n >\n <el-button v-if=\"isMobile\" type=\"primary\">\n 选择文件\n </el-button>\n <template v-else>\n <el-icon class=\"el-icon--upload\">\n <UploadFilled />\n </el-icon>\n <div class=\"el-upload__text\">\n 将文件拖于此处 or <em>直接选择文件</em>\n </div>\n </template>\n <template #tip>\n <div v-show=\"!!calculateMd5Count\" class=\"p10\">\n <Tip>\n 还有\n {{ calculateMd5Count }}\n 个文件正在生成校验信息,请稍等(1G通常需要20s)\n </Tip>\n </div>\n </template>\n </el-upload>\n <div class=\"p10\">\n <el-button\n v-if=\"isWithdraw\"\n size=\"default\"\n type=\"warning\"\n :disabled=\"!allowWithdraw || !!calculateMd5Count\"\n @click=\"startWithdraw\"\n >\n 一键撤回\n </el-button>\n <el-button\n v-else-if=\"!disabledUpload\"\n size=\"default\"\n type=\"success\"\n :disabled=\"!allowUpload || !!calculateMd5Count\"\n @click=\"submitUpload\"\n >\n 提交文件\n </el-button>\n <el-button size=\"default\" @click=\"checkSubmitStatus\">\n 查询提交情况\n </el-button>\n </div>\n <!-- 提示信息 -->\n <div class=\"p10 option-tips\">\n <Tip v-if=\"formatData.status && formatData.format.length\">\n 限制格式为:\n <span style=\"color: red\">{{\n formatData.format.join(', ')\n }}</span>\n </Tip>\n <Tip v-if=\"formatData.size\">\n 限制文件大小不超过:\n <span style=\"color: red\">{{\n formatSize(formatData.size)\n }}</span>\n </Tip>\n <template v-if=\"isWithdraw\">\n <Tip>\n ① 须保证选择的文件与提交时的文件一致<br>\n ② 填写表单信息一致 <br>\n ③\n 完全一模一样的文件的提交记录(内容md5+命名),将会一次性全部撤回\n </Tip>\n </template>\n <template v-else>\n <Tip>\n <strong>查询提交情况,需填写和提交时一样的表单信息</strong>\n </Tip>\n <Tip>\n ① 选择完文件,点击 ”提交文件“即可 <br>\n ② <strong>选择大文件后需要等待一会儿才展示处理</strong>\n <template v-if=\"taskMoreInfo.template && !disabledUpload\">\n <br>\n ③\n <strong>\n <el-button\n type=\"primary\"\n text\n style=\"color: #85ce61\"\n size=\"small\"\n @click=\"downloadTemplate\"\n >右下角可 “查看提交示例”\n </el-button>\n </strong>\n </template>\n </Tip>\n </template>\n </div>\n <div class=\"withdraw\">\n <el-button\n v-if=\"taskMoreInfo.template && !disabledUpload\"\n type=\"primary\"\n text\n style=\"color: #85ce61\"\n size=\"small\"\n @click=\"downloadTemplate\"\n >\n 查看提交示例\n </el-button>\n <el-button\n v-if=\"isWithdraw\"\n size=\"small\"\n type=\"primary\"\n text\n @click=\"isWithdraw = false\"\n >\n 正常提交\n </el-button>\n <el-button\n v-else\n size=\"small\"\n type=\"primary\"\n text\n @click=\"isWithdraw = true\"\n >\n 我要撤回\n </el-button>\n </div>\n </div>\n </div>\n <!-- 无效任务 -->\n <div v-else class=\"panel tc\">\n <h1 class=\"name\">\n {{ taskInfo.name }}\n </h1>\n </div>\n <LinkDialog\n v-model:value=\"showLinkModel\"\n title=\"示例文件下载链接\"\n :link=\"templateLink\"\n />\n <div style=\"padding-top: 20px\">\n <HomeFooter type=\"task\" />\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.task-panel :deep(ul.el-upload-list) {\n border: 1px dashed #d4d4d4;\n padding: 10px;\n\n &::before {\n content: '此处展示选择文件列表';\n font-size: 12px;\n position: relative;\n bottom: 4px;\n }\n}\n\n.task-panel :deep(.el-upload-list__item-name) {\n display: block;\n overflow: hidden;\n max-width: 290px;\n text-overflow: ellipsis;\n word-break: keep-all;\n}\n\n.task-panel :deep(.is-ready .el-icon--close) {\n display: block;\n color: black;\n}\n\n.task-panel {\n background-color: #f3f6f8;\n padding-bottom: 1rem;\n position: relative;\n}\n\n.pc-nav {\n background-color: #fff;\n display: flex;\n padding: 10px;\n justify-content: space-between;\n align-items: center;\n\n .exit {\n cursor: pointer;\n }\n\n .nav {\n display: flex;\n\n nav {\n display: flex;\n align-items: center;\n\n .nav-item {\n font-size: 1rem;\n color: #595959;\n padding: 10px;\n cursor: pointer;\n\n &.active {\n color: #409eff !important;\n font-weight: 600;\n }\n }\n }\n\n .exit {\n color: #595959;\n }\n }\n\n .logo {\n width: 180px;\n margin: 0 10px;\n\n img {\n height: 40px;\n }\n }\n}\n\n.panel {\n max-width: 1024px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n\n .name {\n text-align: center;\n }\n\n .ddl {\n margin-top: 10px;\n color: #919191;\n font-size: 14px;\n }\n\n .infos {\n max-width: 460px;\n margin: auto;\n overflow: hidden;\n :deep(div.el-form-item > label) {\n font-weight: bold;\n &::before {\n content: '* ';\n color: red;\n }\n }\n }\n}\n\n.withdraw {\n text-align: right;\n}\n\n.tip-wrapper {\n line-height: 20px;\n text-align: left;\n word-break: break-all;\n // max-height: 100px;\n overflow: hidden;\n padding: 0 20px;\n color: #e6a23c;\n max-width: 320px;\n font-size: 14px;\n}\n</style>\n"],"names":["_sfc_main","defineComponent","name","_hoisted_1","viewBox","xmlns","_hoisted_3","createElementVNode","fill","d","uploadFilled","_export_sfc","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","isMobile","useIsMobile","$router","useRouter","$route","useRoute","pcNavs","reactive","title","path","taskInfo","category","taskMoreInfo","bindField","formatData","computed","parseFileFormat","format","k","ref","waitTime","isOver","value","waitTimeStr","seconds","hour","day","minute","refreshWaitTime","loop","ddl","date","Date","getTime","now","setTimeout","ddlStr","formatDate","infos","fileList","fileUpload","disableForm","filter","item","status","length","handleRemoveFile","file","ElMessageBox","confirm","then","ElMessage","info","subscription","unsubscribe","catch","isWriteFinish","every","limitBindField","trim","isSameFieldName","find","v","text","showValidForm","people","validModal","peopleName","validatePeopleName","rule","callback","message","Error","error","PeopleApi","checkPeopleIsExist","res","data","exist","validModalRef","validModalRules","validator","trigger","confirmPeopleName","Promise","resolve","validate","isValid","async","submitUpload","uploadFiles","md5","originName","rewrite","map","join","splitChar","getFileSuffix","normalizeFileName","key","FileApi","getUploadToken","qiniuUpload","token","raw","success","fsize","addFile","taskKey","taskName","size","hash","JSON","stringify","updatePeopleStatus","process","per","percentage","Math","floor","startUpload","warning","allowUpload","allowWithdraw","includes","calculateMd5Count","handleChangeFile","suffix","toLowerCase","endsWith","handleRemove","formatSize","getFileMd5Hash","str","limitUploadCount","limit","handleExceed","showLinkModel","templateLink","downloadTemplate","getTemplateUrl","template","link","downLoadByUrl","isWithdraw","startWithdraw","withdrawFile","filename","runWithdraw","checkSubmitStatus","isSubmit","isLoadingData","readyRefresh","isEqualInfos","a","b","i","type","children","refreshTaskMoreInfo","hot","TaskApi","getTaskMoreInfo","Object","assign","parseInfo","splice","push","handleBlur","handleFocus","timeInfo","tipData","imgs","imageList","watch","tip","parseData","parse","url","PublicApi","getTipImageUrl","uid","forEach","idx","cover","preview","disabledUpload","useLocalStorage","onMounted","params","getTaskInfo","limitUpload","alert","err","code","window","addEventListener","onUnmounted","removeEventListener","startsWith","location","href"],"mappings":"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","x_google_ignoreList":[0]}
|