@sugarat/easypicker2-client 2.7.0-beta.0 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{data-analysis-c8lgg0AB.js → data-analysis-B61f8OZD.js} +2 -2
- package/dist/assets/{data-analysis-c8lgg0AB.js.map → data-analysis-B61f8OZD.js.map} +1 -1
- package/dist/assets/{data-analysis-legacy-CW8BY_nY.js → data-analysis-legacy-sXkPNcPD.js} +2 -2
- package/dist/assets/{data-analysis-legacy-CW8BY_nY.js.map → data-analysis-legacy-sXkPNcPD.js.map} +1 -1
- package/dist/assets/{data-board-CfWZjPIl.js → data-board-BIN3HXKE.js} +2 -2
- package/dist/assets/{data-board-CfWZjPIl.js.map → data-board-BIN3HXKE.js.map} +1 -1
- package/dist/assets/{data-board-legacy-DDytbRz4.js → data-board-legacy-mqcredpF.js} +2 -2
- package/dist/assets/{data-board-legacy-DDytbRz4.js.map → data-board-legacy-mqcredpF.js.map} +1 -1
- package/dist/assets/{el-date-picker-CI8bdk_f.js → el-date-picker-B-cvGosU.js} +2 -2
- package/dist/assets/{el-date-picker-CI8bdk_f.js.map → el-date-picker-B-cvGosU.js.map} +1 -1
- package/dist/assets/{el-date-picker-legacy-CSDTG-yp.js → el-date-picker-legacy-CACCtxzL.js} +2 -2
- package/dist/assets/{el-date-picker-legacy-CSDTG-yp.js.map → el-date-picker-legacy-CACCtxzL.js.map} +1 -1
- package/dist/assets/{el-dialog-C8bI9VGw.js → el-dialog-C9wNxcPt.js} +2 -2
- package/dist/assets/{el-dialog-C8bI9VGw.js.map → el-dialog-C9wNxcPt.js.map} +1 -1
- package/dist/assets/{el-dialog-legacy-DfEb6k1B.js → el-dialog-legacy-CX7a77_4.js} +2 -2
- package/dist/assets/{el-dialog-legacy-DfEb6k1B.js.map → el-dialog-legacy-CX7a77_4.js.map} +1 -1
- package/dist/assets/{el-dropdown-item-febUKGk9.js → el-dropdown-item-jbdZL0Yj.js} +2 -2
- package/dist/assets/{el-dropdown-item-febUKGk9.js.map → el-dropdown-item-jbdZL0Yj.js.map} +1 -1
- package/dist/assets/{el-dropdown-item-legacy-Bi1TbzqG.js → el-dropdown-item-legacy-ChoB2YAN.js} +2 -2
- package/dist/assets/{el-dropdown-item-legacy-Bi1TbzqG.js.map → el-dropdown-item-legacy-ChoB2YAN.js.map} +1 -1
- package/dist/assets/{el-form-item-SCs-OERV.js → el-form-item-BhAyaXPT.js} +2 -2
- package/dist/assets/{el-form-item-SCs-OERV.js.map → el-form-item-BhAyaXPT.js.map} +1 -1
- package/dist/assets/{el-form-item-legacy-CNxAgkUf.js → el-form-item-legacy-DNwgpXzk.js} +2 -2
- package/dist/assets/{el-form-item-legacy-CNxAgkUf.js.map → el-form-item-legacy-DNwgpXzk.js.map} +1 -1
- package/dist/assets/{el-loading-DSlXrliU.js → el-loading-D5D_2rI_.js} +2 -2
- package/dist/assets/{el-loading-DSlXrliU.js.map → el-loading-D5D_2rI_.js.map} +1 -1
- package/dist/assets/{el-loading-legacy-CbNNE-qk.js → el-loading-legacy-CCDpn-BT.js} +2 -2
- package/dist/assets/{el-loading-legacy-CbNNE-qk.js.map → el-loading-legacy-CCDpn-BT.js.map} +1 -1
- package/dist/assets/{el-pagination-nfYZbPTI.js → el-pagination-DRV4WevC.js} +2 -2
- package/dist/assets/{el-pagination-nfYZbPTI.js.map → el-pagination-DRV4WevC.js.map} +1 -1
- package/dist/assets/{el-pagination-legacy-CeTPKkkI.js → el-pagination-legacy-CAxn6D5y.js} +2 -2
- package/dist/assets/{el-pagination-legacy-CeTPKkkI.js.map → el-pagination-legacy-CAxn6D5y.js.map} +1 -1
- package/dist/assets/{el-progress-BRTU4m5q.js → el-progress-GDfl1hgb.js} +2 -2
- package/dist/assets/{el-progress-BRTU4m5q.js.map → el-progress-GDfl1hgb.js.map} +1 -1
- package/dist/assets/{el-progress-legacy-B6EwNV6c.js → el-progress-legacy-C5K3FqLs.js} +2 -2
- package/dist/assets/{el-progress-legacy-B6EwNV6c.js.map → el-progress-legacy-C5K3FqLs.js.map} +1 -1
- package/dist/assets/{el-select-uDoCZCn5.js → el-select-B9z8VvNb.js} +2 -2
- package/dist/assets/{el-select-uDoCZCn5.js.map → el-select-B9z8VvNb.js.map} +1 -1
- package/dist/assets/{el-select-legacy-BFhy033s.js → el-select-legacy-BI1YK9Jv.js} +2 -2
- package/dist/assets/{el-select-legacy-BFhy033s.js.map → el-select-legacy-BI1YK9Jv.js.map} +1 -1
- package/dist/assets/{el-switch-legacy-LBGoMV4l.js → el-switch-legacy-CG_sT4XS.js} +2 -2
- package/dist/assets/{el-switch-legacy-LBGoMV4l.js.map → el-switch-legacy-CG_sT4XS.js.map} +1 -1
- package/dist/assets/{el-switch-B8IyK6ZR.js → el-switch-oOC_byJv.js} +2 -2
- package/dist/assets/{el-switch-B8IyK6ZR.js.map → el-switch-oOC_byJv.js.map} +1 -1
- package/dist/assets/{el-tab-pane-fWqYc0uG.js → el-tab-pane-NvGl_NI0.js} +2 -2
- package/dist/assets/{el-tab-pane-fWqYc0uG.js.map → el-tab-pane-NvGl_NI0.js.map} +1 -1
- package/dist/assets/{el-tab-pane-legacy-ChZdms4s.js → el-tab-pane-legacy-usarmKVQ.js} +2 -2
- package/dist/assets/{el-tab-pane-legacy-ChZdms4s.js.map → el-tab-pane-legacy-usarmKVQ.js.map} +1 -1
- package/dist/assets/{el-table-column-C3qC7HsW.js → el-table-column-JBAymLKS.js} +2 -2
- package/dist/assets/{el-table-column-C3qC7HsW.js.map → el-table-column-JBAymLKS.js.map} +1 -1
- package/dist/assets/{el-table-column-legacy-Wp8N0Zxv.js → el-table-column-legacy-BWpnrxZl.js} +2 -2
- package/dist/assets/{el-table-column-legacy-Wp8N0Zxv.js.map → el-table-column-legacy-BWpnrxZl.js.map} +1 -1
- package/dist/assets/{index-DIARiZcJ.js → index-B0mV367i.js} +2 -2
- package/dist/assets/{index-DIARiZcJ.js.map → index-B0mV367i.js.map} +1 -1
- package/dist/assets/index-BG1GuMIu.css +1 -0
- package/dist/assets/{index-ShzTlShR.css → index-BOep9MOB.css} +1 -1
- package/dist/assets/{index-BAFXwCno.js → index-BUF8Xxid.js} +2 -2
- package/dist/assets/{index-BAFXwCno.js.map → index-BUF8Xxid.js.map} +1 -1
- package/dist/assets/index-BxsJs6HZ.js +2 -0
- package/dist/assets/index-BxsJs6HZ.js.map +1 -0
- package/dist/assets/{index-UJqXhonq.js → index-Byzqqd86.js} +2 -2
- package/dist/assets/{index-UJqXhonq.js.map → index-Byzqqd86.js.map} +1 -1
- package/dist/assets/{index-CYU98hsF.js → index-C0niS8Vv.js} +2 -2
- package/dist/assets/{index-CYU98hsF.js.map → index-C0niS8Vv.js.map} +1 -1
- package/dist/assets/{index-D2jrbKvI.js → index-CHIrZkSk.js} +2 -2
- package/dist/assets/{index-D2jrbKvI.js.map → index-CHIrZkSk.js.map} +1 -1
- package/dist/assets/index-CKIiHmIf.js +2 -0
- package/dist/assets/index-CKIiHmIf.js.map +1 -0
- package/dist/assets/{index-WblpVXQj.js → index-Cno4i6lg.js} +2 -2
- package/dist/assets/{index-WblpVXQj.js.map → index-Cno4i6lg.js.map} +1 -1
- package/dist/assets/index-D80lTVeV.js +36 -0
- package/dist/assets/index-D80lTVeV.js.map +1 -0
- package/dist/assets/{index-DVHa0g7s.js → index-DCwrZmag.js} +2 -2
- package/dist/assets/{index-DVHa0g7s.js.map → index-DCwrZmag.js.map} +1 -1
- package/dist/assets/{index-CAbIiez7.js → index-DDGYm9L-.js} +2 -2
- package/dist/assets/{index-CAbIiez7.js.map → index-DDGYm9L-.js.map} +1 -1
- package/dist/assets/{index-B621FN6u.js → index-DEiWe2Bk.js} +2 -2
- package/dist/assets/{index-B621FN6u.js.map → index-DEiWe2Bk.js.map} +1 -1
- package/dist/assets/{index-Bp9D-Hzs.js → index-DJnltRnr.js} +2 -2
- package/dist/assets/{index-Bp9D-Hzs.js.map → index-DJnltRnr.js.map} +1 -1
- package/dist/assets/index-DMIqQLOE.js +2 -0
- package/dist/assets/{index-E_UelRIx.js.map → index-DMIqQLOE.js.map} +1 -1
- package/dist/assets/{index-Cbj5Qf1k.js → index-DRHl9KU8.js} +2 -2
- package/dist/assets/{index-Cbj5Qf1k.js.map → index-DRHl9KU8.js.map} +1 -1
- package/dist/assets/{index-Lsr6KH3b.js → index-Dj5caLYF.js} +2 -2
- package/dist/assets/{index-Lsr6KH3b.js.map → index-Dj5caLYF.js.map} +1 -1
- package/dist/assets/{index-CcPY3ZJk.js → index-Dxy6ycv8.js} +2 -2
- package/dist/assets/{index-CcPY3ZJk.js.map → index-Dxy6ycv8.js.map} +1 -1
- package/dist/assets/{index-DvM_o_Iw.js → index-MTuc20rr.js} +2 -2
- package/dist/assets/{index-DvM_o_Iw.js.map → index-MTuc20rr.js.map} +1 -1
- package/dist/assets/index-XNFQHmLL.css +1 -0
- package/dist/assets/{index-C1FTaXL2.js → index-bD-fr3vy.js} +2 -2
- package/dist/assets/{index-C1FTaXL2.js.map → index-bD-fr3vy.js.map} +1 -1
- package/dist/assets/{index-AYz8tt3l.js → index-fb67TYJ8.js} +2 -2
- package/dist/assets/{index-AYz8tt3l.js.map → index-fb67TYJ8.js.map} +1 -1
- package/dist/assets/{index-legacy-B865ACt-.js → index-legacy-2G5G7SiF.js} +2 -2
- package/dist/assets/index-legacy-2G5G7SiF.js.map +1 -0
- package/dist/assets/{index-legacy-D8QuGa98.js → index-legacy-B1WwgC0S.js} +2 -2
- package/dist/assets/{index-legacy-D8QuGa98.js.map → index-legacy-B1WwgC0S.js.map} +1 -1
- package/dist/assets/{index-legacy-BzCDv5Tg.js → index-legacy-BN-W2P7-.js} +2 -2
- package/dist/assets/{index-legacy-BzCDv5Tg.js.map → index-legacy-BN-W2P7-.js.map} +1 -1
- package/dist/assets/{index-legacy-z4MDfS45.js → index-legacy-BZb5uhBF.js} +2 -2
- package/dist/assets/{index-legacy-z4MDfS45.js.map → index-legacy-BZb5uhBF.js.map} +1 -1
- package/dist/assets/{index-legacy-DiTQKLfl.js → index-legacy-BdJHr4yN.js} +2 -2
- package/dist/assets/{index-legacy-DiTQKLfl.js.map → index-legacy-BdJHr4yN.js.map} +1 -1
- package/dist/assets/{index-legacy-DTtXpYbD.js → index-legacy-BwpR0DP9.js} +2 -2
- package/dist/assets/{index-legacy-DTtXpYbD.js.map → index-legacy-BwpR0DP9.js.map} +1 -1
- package/dist/assets/{index-legacy-GmcnXr6o.js → index-legacy-Cbyz8WHA.js} +2 -2
- package/dist/assets/{index-legacy-GmcnXr6o.js.map → index-legacy-Cbyz8WHA.js.map} +1 -1
- package/dist/assets/index-legacy-Chw6iyCz.js +2 -0
- package/dist/assets/{index-legacy-B8pZsXYp.js.map → index-legacy-Chw6iyCz.js.map} +1 -1
- package/dist/assets/{index-legacy-BaUX-zxP.js → index-legacy-DC5-MYgp.js} +8 -13
- package/dist/assets/index-legacy-DC5-MYgp.js.map +1 -0
- package/dist/assets/{index-legacy-BWGaTIeh.js → index-legacy-DM_G6GXF.js} +2 -2
- package/dist/assets/{index-legacy-BWGaTIeh.js.map → index-legacy-DM_G6GXF.js.map} +1 -1
- package/dist/assets/index-legacy-DP3Q6cDA.js +2 -0
- package/dist/assets/index-legacy-DP3Q6cDA.js.map +1 -0
- package/dist/assets/{index-legacy-D93ANJJU.js → index-legacy-DUrsbgNe.js} +2 -2
- package/dist/assets/{index-legacy-D93ANJJU.js.map → index-legacy-DUrsbgNe.js.map} +1 -1
- package/dist/assets/{index-legacy-BA8TBope.js → index-legacy-DV-KwU0c.js} +2 -2
- package/dist/assets/{index-legacy-BA8TBope.js.map → index-legacy-DV-KwU0c.js.map} +1 -1
- package/dist/assets/{index-legacy-Bziat01y.js → index-legacy-DiNZXmUs.js} +2 -2
- package/dist/assets/{index-legacy-Bziat01y.js.map → index-legacy-DiNZXmUs.js.map} +1 -1
- package/dist/assets/{index-legacy-3jO8hk9z.js → index-legacy-DmJc-LaA.js} +2 -2
- package/dist/assets/{index-legacy-3jO8hk9z.js.map → index-legacy-DmJc-LaA.js.map} +1 -1
- package/dist/assets/{index-legacy-D-yT7UP7.js → index-legacy-Dmi-DBK0.js} +2 -2
- package/dist/assets/{index-legacy-D-yT7UP7.js.map → index-legacy-Dmi-DBK0.js.map} +1 -1
- package/dist/assets/{index-legacy-D14E8pOh.js → index-legacy-K0GPuvtR.js} +2 -2
- package/dist/assets/{index-legacy-D14E8pOh.js.map → index-legacy-K0GPuvtR.js.map} +1 -1
- package/dist/assets/{index-legacy-Bwwm9nit.js → index-legacy-Qibh5ehq.js} +2 -2
- package/dist/assets/{index-legacy-Bwwm9nit.js.map → index-legacy-Qibh5ehq.js.map} +1 -1
- package/dist/assets/{index-legacy-DqLKrBdr.js → index-legacy-gQf30T09.js} +2 -2
- package/dist/assets/{index-legacy-DqLKrBdr.js.map → index-legacy-gQf30T09.js.map} +1 -1
- package/dist/assets/{index-legacy-8ekXefFL.js → index-legacy-l7TP3X8w.js} +2 -2
- package/dist/assets/{index-legacy-8ekXefFL.js.map → index-legacy-l7TP3X8w.js.map} +1 -1
- package/dist/assets/{isEqual-legacy-D_cb03Zv.js → isEqual-legacy-DVLZyo95.js} +2 -2
- package/dist/assets/{isEqual-legacy-D_cb03Zv.js.map → isEqual-legacy-DVLZyo95.js.map} +1 -1
- package/dist/assets/{isEqual-a1R5cOCU.js → isEqual-pN6Ih18F.js} +2 -2
- package/dist/assets/{isEqual-a1R5cOCU.js.map → isEqual-pN6Ih18F.js.map} +1 -1
- package/dist/assets/{refresh-Bz5ULfz9.js → refresh-BTQLK-UW.js} +2 -2
- package/dist/assets/{refresh-Bz5ULfz9.js.map → refresh-BTQLK-UW.js.map} +1 -1
- package/dist/assets/{refresh-legacy-NT5iEzmI.js → refresh-legacy-Cv7RM_sm.js} +2 -2
- package/dist/assets/{refresh-legacy-NT5iEzmI.js.map → refresh-legacy-Cv7RM_sm.js.map} +1 -1
- package/dist/assets/{tip-BCCd4P_x.js → tip-DQo-E_Pu.js} +2 -2
- package/dist/assets/{tip-BCCd4P_x.js.map → tip-DQo-E_Pu.js.map} +1 -1
- package/dist/assets/{tip-legacy-Cm2JPa4-.js → tip-legacy-Ci60OMi9.js} +2 -2
- package/dist/assets/{tip-legacy-Cm2JPa4-.js.map → tip-legacy-Ci60OMi9.js.map} +1 -1
- package/dist/assets/validator-CZlzBDi2.js +2 -0
- package/dist/assets/{validator-BESrcCvQ.js.map → validator-CZlzBDi2.js.map} +1 -1
- package/dist/assets/validator-legacy-D-pC1hkO.js +2 -0
- package/dist/assets/{validator-legacy-xarmcLjs.js.map → validator-legacy-D-pC1hkO.js.map} +1 -1
- package/dist/index.html +2 -2
- package/package.json +4 -3
- package/dist/assets/index-BN8Mg9Y5.js +0 -2
- package/dist/assets/index-BN8Mg9Y5.js.map +0 -1
- package/dist/assets/index-BYEN2QaU.css +0 -1
- package/dist/assets/index-C0TTJR9g.js +0 -2
- package/dist/assets/index-C0TTJR9g.js.map +0 -1
- package/dist/assets/index-CvlaXQXr.js +0 -40
- package/dist/assets/index-CvlaXQXr.js.map +0 -1
- package/dist/assets/index-CwmiY_sv.css +0 -1
- package/dist/assets/index-E_UelRIx.js +0 -2
- package/dist/assets/index-legacy-B865ACt-.js.map +0 -1
- package/dist/assets/index-legacy-B8pZsXYp.js +0 -2
- package/dist/assets/index-legacy-BaUX-zxP.js.map +0 -1
- package/dist/assets/index-legacy-DZC-JuD-.js +0 -2
- package/dist/assets/index-legacy-DZC-JuD-.js.map +0 -1
- package/dist/assets/validator-BESrcCvQ.js +0 -2
- package/dist/assets/validator-legacy-xarmcLjs.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-E_UelRIx.js","sources":["../../src/apis/modules/action.ts","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/download.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/picture.mjs","../../src/composables/user.ts","../../src/pages/dashboard/files/index.vue"],"sourcesContent":["import ajax from '../ajax'\n\nfunction getDownloadActions(\n pageSize: number,\n pageIndex: number,\n extraIds: string[] = []\n): ActionApiTypes.getDownloadActions {\n return ajax.post('/action/download/list', {\n pageSize,\n pageIndex,\n extraIds\n })\n}\n\nexport default {\n getDownloadActions\n}\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Download\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64zm384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64v450.304z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar download = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { download as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Picture\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M160 160v704h704V160H160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M384 288q64 0 64 64t-64 64q-64 0-64-64t64-64zM185.408 876.992l-50.816-38.912L350.72 556.032a96 96 0 0 1 134.592-17.856l1.856 1.472 122.88 99.136a32 32 0 0 0 44.992-4.864l216-269.888 49.92 39.936-215.808 269.824-.256.32a96 96 0 0 1-135.04 14.464l-122.88-99.072-.64-.512a32 32 0 0 0-44.8 5.952L185.408 876.992z\"\n}, null, -1);\nconst _hoisted_4 = [\n _hoisted_2,\n _hoisted_3\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_4);\n}\nvar picture = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { picture as default };\n","import { computed, onMounted, reactive, ref } from 'vue'\nimport { UserApi } from '@/apis'\nimport { formatSize } from '@/utils/stringUtil'\n\nexport function useSpaceUsage() {\n const usageData = reactive({\n size: 0,\n usage: 0,\n limitUpload: false,\n wallet: '0:00',\n cost: '0.00',\n limitSpace: false,\n limitWallet: false,\n price: {\n storage: '0:00',\n download: '0:00',\n },\n })\n const usage = computed(() => usageData.usage)\n const size = computed(() => usageData.size)\n const percentage = computed(() => `${(usageData.usage / usageData.size * 100).toFixed(2)}%`)\n const walletPercentage = computed(() => `${(+usageData.cost / +usageData.wallet * 100).toFixed(2)}%`)\n const limitDownload = computed(() => usageData.limitUpload)\n const limitSpace = computed(() => usageData.limitSpace)\n const limitWallet = computed(() => usageData.limitWallet)\n const spaceUsageText = computed(() => {\n return `空间 ${percentage.value}: ${formatSize(usageData.usage)} / ${formatSize(usageData.size)}`\n })\n const moneyUsageText = computed(() => {\n return `钱包 ${walletPercentage.value}: ${usageData.cost} / ${usageData.wallet}¥`\n })\n const priceText = computed(() => {\n return `存储 ${usageData.price.storage}¥ + 下载 ${usageData.price.download}¥`\n })\n\n onMounted(() => {\n UserApi.usage().then((res) => {\n Object.assign(usageData, res.data)\n })\n })\n return {\n usage,\n size,\n percentage,\n limitDownload,\n limitSpace,\n limitWallet,\n spaceUsageText,\n moneyUsageText,\n priceText,\n }\n}\n","<script lang=\"ts\" setup>\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, onMounted, reactive, ref, watchEffect } from 'vue'\nimport { useStore } from 'vuex'\nimport LinkDialog from '@components/linkDialog.vue'\nimport {\n ArrowDown,\n DataAnalysis,\n Download,\n Picture,\n Refresh,\n Search,\n} from '@element-plus/icons-vue'\nimport { useRoute } from 'vue-router'\nimport Tip from '../tasks/components/infoPanel/tip.vue'\nimport {\n copyRes,\n formatDate,\n formatSize,\n getFileSuffix,\n normalizeFileName,\n parseInfo,\n} from '@/utils/stringUtil'\nimport { ActionServiceAPI, FileApi } from '@/apis'\nimport type { tableItem } from '@/utils/networkUtil'\nimport { downLoadByUrl, tableToExcel } from '@/utils/networkUtil'\nimport InfosForm from '@/components/InfosForm/index.vue'\nimport { ActionType, DownloadStatus, filenamePattern } from '@/constants'\nimport { useIsMobile, useSiteConfig, useSpaceUsage } from '@/composables'\n\nconst { value: siteConfig } = useSiteConfig()\nconst isOpenPraise = computed(() => siteConfig.value.openPraise)\n\nconst { limitDownload, spaceUsageText, moneyUsageText, limitSpace, limitWallet, priceText } = useSpaceUsage()\n\nconst $store = useStore()\nconst $route = useRoute()\nconst showLinkModel = ref(false)\nconst downloadUrl = ref('')\nconst showImg = ref(localStorage.getItem('ep-show-images') === 'true')\nconst showPeople = ref(true)\nconst showOriginName = ref(false)\nconst showHistoryPanel = ref(false)\nconst historyDownloadRecord = reactive({\n actions: [],\n pageSize: 3,\n /**\n * 总页数\n */\n pageCount: 0,\n pageCurrent: 1,\n pageTotal: 0,\n compressTask: [],\n})\n\nfunction loadActions() {\n // 已记录的task\n const compressTask: ActionApiTypes.DownloadActionData[] = JSON.parse(\n localStorage.getItem('ep_compress_task') || '[]',\n )\n historyDownloadRecord.compressTask = compressTask\n\n ActionServiceAPI.getDownloadActions(\n historyDownloadRecord.pageSize,\n historyDownloadRecord.pageCurrent,\n compressTask.map(v => v.id),\n ).then((v) => {\n const { actions, sum } = v.data\n const haveArchive = !!actions.find(\n v => v.status === DownloadStatus.ARCHIVE,\n )\n\n actions\n .filter(v => v.type === ActionType.Compress)\n .forEach((action) => {\n const existIndex = compressTask.findIndex(v => v.id === action.id)\n // 判断状态\n // SUCCESS\n // 存在,触发下载,从compressTask移除\n if (action.status === DownloadStatus.SUCCESS && existIndex !== -1) {\n // 展示弹窗\n downloadUrl.value = action.url\n showLinkModel.value = true\n downLoadByUrl(action.url)\n // ElMessage.success(`自动下载归档任务 ${action.tip}`)\n compressTask.splice(existIndex, 1)\n }\n // Archive\n // 不存在,push进compressTask\n if (action.status === DownloadStatus.ARCHIVE && existIndex === -1) {\n compressTask.push(action)\n }\n\n // ERROR\n if (action.status === DownloadStatus.FAIL && existIndex !== -1) {\n compressTask.splice(existIndex, 1)\n }\n })\n // TODO:之后根据反馈优化\n historyDownloadRecord.compressTask = compressTask\n localStorage.setItem('ep_compress_task', JSON.stringify(compressTask))\n if (haveArchive) {\n // 递归查询\n setTimeout(loadActions, 1000)\n }\n historyDownloadRecord.pageTotal = sum\n historyDownloadRecord.actions = actions\n historyDownloadRecord.pageCount = Math.ceil(\n sum / historyDownloadRecord.pageSize,\n )\n })\n}\nfunction handleHistoryActionPageChange(v) {\n historyDownloadRecord.pageCurrent = v\n loadActions()\n}\n\n// 分类相关\nconst categories = computed(() => $store.state.category.categoryList)\nconst selectCategory = ref('all')\n// 任务相关\nconst tasks = computed<TaskApiTypes.TaskItem[]>(\n () => $store.state.task.taskList,\n)\nconst selectTask = ref('all')\nconst filterTasks = computed(() => {\n if (selectCategory.value === 'all') {\n return tasks.value\n }\n // eslint-disable-next-line vue/no-side-effects-in-computed-properties\n selectTask.value = 'all'\n return tasks.value.filter(t => t.category === selectCategory.value)\n})\nconst selectTaskName = computed(() => {\n const t = filterTasks.value.find(v => v.key === selectTask.value)\n return t?.name\n})\n\nwatchEffect(() => {\n if (\n tasks.value.length\n && tasks.value.some(v => v.key === $route.query.task)\n ) {\n selectTask.value = `${$route.query.task}`\n }\n})\n\n// 记录导出\nfunction handleExportExcel(files: FileApiTypes.File[], filename?: string) {\n if (files.length === 0) {\n ElMessage.warning('表格中没有可导出的内容')\n return\n }\n const baseHeaders = ['提交时间', '任务', '文件名', '大小']\n if (showOriginName.value) {\n baseHeaders.push('原文件名')\n }\n if (showPeople.value) {\n baseHeaders.push('姓名')\n }\n const headers: (string | tableItem)[] = baseHeaders.map(v => ({\n value: v,\n row: 2,\n }))\n\n const infosHeader = files.reduce((pre, value) => {\n try {\n JSON.parse(value.info).forEach((i: any) => {\n if (!pre.includes(i.text)) {\n pre.push(i.text)\n }\n })\n }\n catch (error) {\n ElMessage.error({\n message: `数据异常${value.name},可联系平台管理员处理`,\n duration: 5000,\n })\n console.log(value)\n }\n return pre\n }, [])\n headers.push({\n value: '提交信息',\n col: infosHeader.length,\n })\n\n const body = files.map((v) => {\n const { date, task_name: taskName, name, size, people } = v\n try {\n const infoObj = JSON.parse(v.info).reduce((pre, v) => {\n pre[v.text] = `${v.value}`\n return pre\n }, {})\n const info = infosHeader.map(v => infoObj[v] ?? '-')\n const rows = [formatDate(new Date(date)), taskName, name, formatSize(size)]\n if (showOriginName.value) {\n rows.push(v.origin_name || '-')\n }\n if (showPeople.value) {\n rows.push(people || '-')\n }\n rows.push(...info)\n return rows\n }\n catch (error) {\n ElMessage.error({\n message: `数据异常${v.name},可联系平台管理员处理`,\n duration: 5000,\n })\n console.log(v)\n }\n return []\n }).filter(v => !!v.length)\n body.unshift(infosHeader)\n\n const _filename = filename || `数据导出_${formatDate(new Date(), 'yyyy年MM月日hh时mm分ss秒')}.xlsx`\n const resFileName = selectTaskName.value ? `${normalizeFileName(selectTaskName.value)}_${_filename}` : _filename\n\n tableToExcel(\n headers,\n body,\n resFileName,\n )\n ElMessage.success('导出成功')\n}\n\nconst isLoadingData = ref(false)\n// 提交的所有文件\nconst files: FileApiTypes.File[] = reactive([])\nfunction loadFiles() {\n isLoadingData.value = true\n files.splice(0, files.length)\n FileApi.getFileList().then((res) => {\n files.push(...res.data.files)\n isLoadingData.value = false\n })\n}\nconst multipleTable: any = ref()\nconst searchWord = ref('')\n\n// 用于展示的文件\n// 1. 过滤指定任务\nconst filterFiles = computed(() =>\n files\n .filter((f) => {\n if (selectCategory.value === 'no-task') {\n return tasks.value.every(t => t.key !== f.task_key)\n }\n if (filterTasks.value.length === 0) {\n return false\n }\n\n if (selectTask.value === 'all') {\n return filterTasks.value.find(t => t.key === f.task_key)\n }\n\n return selectTask.value === f.task_key\n // 2. 过滤关键词(精细优化)\n })\n .filter(t =>\n searchWord.value\n ? JSON.stringify([\n formatDate(new Date(t.date)),\n formatSize(t.size),\n t.people,\n t.name,\n t.task_name,\n\n t.info,\n ])\n .replace(/[:'\"{},[\\]]/g, '')\n .includes(searchWord.value)\n : true,\n ),\n)\n\n/**\n * 清空所有选项\n */\nfunction clearSelection() {\n multipleTable.value.clearSelection()\n}\n// 多选选中的项\nconst selectItem: any[] = reactive([])\nfunction handleSelectionChange(e: any) {\n selectItem.splice(0, selectItem.length)\n selectItem.push(...e)\n}\nconst batchDownStart = ref(false)\nfunction handleDropdownClick(e: string) {\n const ids: number[] = selectItem.map(v => v.id)\n switch (e) {\n case 'download':\n if (limitDownload.value) {\n ElMessage.error('下载功能已被限制,请联系管理员扩容,或自行删除历史无用文件')\n return\n }\n if (selectItem.length === 0) {\n ElMessage.warning('没有选中需要下载的内容')\n return\n }\n if (batchDownStart.value) {\n ElMessage.warning('已经有批量下载任务正在进行,请稍后再试')\n return\n }\n FileApi.batchDownload(\n ids,\n `批量下载_${formatDate(new Date(), 'yyyy年MM月日hh时mm分ss秒')}`,\n )\n .then(() => {\n loadActions()\n })\n .catch(() => {\n ElMessage.error('所选文件均已从服务器上移除')\n batchDownStart.value = false\n })\n ElMessage.info('开始归档选中的文件,请赖心等待')\n break\n case 'delete':\n if (selectItem.length === 0) {\n ElMessage.warning('没有选中需要删除的内容')\n return\n }\n ElMessageBox.confirm('删除后无法恢复,是否删除', '数据无价,请谨慎操作')\n .then(() => {\n FileApi.batchDel(ids).then(() => {\n files.splice(\n 0,\n files.length,\n ...files.filter(v => !ids.includes(v.id)),\n )\n ElMessage.success('删除成功')\n })\n })\n .catch(() => {\n ElMessage.info('取消')\n })\n break\n case 'excel':\n if (selectItem.length === 0) {\n ElMessage.warning('没有选中需要导出的内容')\n return\n }\n handleExportExcel(\n selectItem,\n `批量导出_${formatDate(new Date(), 'yyyy年MM月日hh时mm分ss秒')}.xlsx`,\n )\n ElMessage.success('导出成功')\n break\n default:\n break\n }\n clearSelection()\n}\nconst showInfoDialog = ref(false)\nconst infos: any[] = reactive([])\nfunction checkInfo(e: any) {\n infos.splice(0, infos.length)\n infos.push(...parseInfo(e.info))\n showInfoDialog.value = true\n}\n\nconst showRenameDialog = ref(false)\nconst renameForm = reactive({\n oldName: '',\n newName: '',\n suffix: '',\n id: -1,\n})\nfunction rewriteFilename(e: any) {\n const { id, name } = e\n const suffix = getFileSuffix(name)\n renameForm.oldName = name\n renameForm.suffix = suffix\n renameForm.id = id\n showRenameDialog.value = true\n}\n\nfunction handleSaveNewName() {\n // 文件名校验,不能有系统不支持的字符\n if (filenamePattern.test(renameForm.newName)) {\n ElMessage.error(`文件名不能包含${filenamePattern.source}等字符`)\n filenamePattern.lastIndex = 0\n return\n }\n FileApi.updateFilename(\n renameForm.id,\n `${renameForm.newName}${renameForm.suffix}`,\n )\n .then(() => {\n ElMessage.success('修改成功')\n const file = files.find(v => v.id === renameForm.id)\n file.name = `${renameForm.newName}${renameForm.suffix}`\n })\n .catch(() => {\n ElMessage.error('修改失败')\n })\n .finally(() => {\n showRenameDialog.value = false\n })\n}\n\nfunction downloadOne(e: any) {\n if (limitDownload.value) {\n ElMessage.error('下载功能已被限制,请联系管理员扩容,或自行删除历史无用文件')\n return\n }\n const { id, name } = e\n FileApi.getOneFileUrl(id)\n .then((res) => {\n const { link } = res.data\n showLinkModel.value = true\n downloadUrl.value = link\n downLoadByUrl(link, name)\n // 刷新\n loadActions()\n // 刷新次数\n setTimeout(() => {\n refreshFilesDownloadCount()\n }, 1000)\n })\n .catch(() => {\n ElMessage.error('文件已从服务器上移除')\n })\n}\nfunction handleDelete(e: any) {\n const idx = files.findIndex(v => v === e)\n ElMessageBox.confirm('确认删除此文件吗?', '数据无价,请谨慎操作')\n .then(() => {\n FileApi.deleteOneFile(e.id).then(() => {\n ElMessage.success('删除成功')\n files.splice(idx, 1)\n })\n })\n .catch(() => {\n ElMessage.info('取消删除')\n })\n}\n\n// 分页\nconst pageSize = ref(6)\nfunction handleSizeChange(v: number) {\n pageSize.value = v\n}\nconst pageCount = computed(() => {\n const t = Math.ceil(filterFiles.value.length / pageSize.value)\n return t\n})\n// 当前页\nconst pageCurrent = ref(1)\nconst showFilterFiles = computed(() => {\n const start = (pageCurrent.value - 1) * pageSize.value\n const end = pageCurrent.value * pageSize.value\n return filterFiles.value.slice(start, end)\n})\n\nconst filterFileSize = computed(() =>\n formatSize(filterFiles.value.reduce((acc, cur) => acc + cur.size, 0)),\n)\nconst fileListSize = computed(() =>\n formatSize(files.reduce((acc, cur) => acc + cur.size, 0)),\n)\nfunction handlePageChange(idx: number) {\n pageCurrent.value = idx\n}\n\n// 刷新文件列表\n\nfunction handleRefresh() {\n ElMessage.success({\n message: '刷新成功',\n })\n loadFiles()\n}\nfunction handleDownloadTask() {\n const ids: number[] = files\n .filter(f => f.task_key === selectTask.value)\n .map(v => v.id)\n if (ids.length === 0) {\n ElMessage.warning('该任务中没有数据')\n return\n }\n if (batchDownStart.value) {\n ElMessage.warning('已经有批量下载任务正在进行,请稍后再试')\n return\n }\n batchDownStart.value = true\n FileApi.batchDownload(ids, selectTaskName.value)\n .then(() => {\n loadActions()\n })\n .catch(() => {\n ElMessage.error('所选任务中的文件均已从服务器上移除')\n })\n .finally(() => {\n setTimeout(() => {\n batchDownStart.value = false\n }, 1000)\n })\n ElMessage.info('开始归档选中的文件,请赖心等待')\n}\n\nconst previewData = reactive<\n { cover: string, preview: string, name: string, date: string, id: number }[]\n>([])\n\nconst viewImageFilename = ref('')\n\nconst previewImages = computed(() => {\n // if (!sortProps.prop) {\n return previewData.map(v => v.preview)\n // }\n // TODO:下面代码暂不生效,后续再支持表格排序场景\n // const temp = [...previewData]\n // temp.sort((a, b) => {\n // if (sortProps.order === 'descending') {\n // return a[sortProps.prop] - b[sortProps.prop]\n // }\n // return b[sortProps.prop] - a[sortProps.prop]\n // })\n // return temp.map((v) => v.preview)\n})\n\nfunction handleSwitchImage(idx: number) {\n viewImageFilename.value = showFilterFiles.value[idx].name\n}\n\nlet fetching = false\nfunction refreshFilesCover() {\n const ids = showFilterFiles.value.map(v => v.id)\n if (ids.length === 0 || fetching) {\n return\n }\n fetching = true\n FileApi.checkImageFilePreviewUrl(ids).then((r) => {\n fetching = false\n const { data } = r\n if (data.length === 0 || data.length !== showFilterFiles.value.length) {\n return\n }\n previewData.splice(0, previewData.length)\n showFilterFiles.value.forEach((v, idx) => {\n const { cover, preview } = data[idx]\n v.cover = cover\n previewData.push({ cover, preview, name: v.name, date: v.date, id: v.id })\n })\n })\n}\n\nfunction refreshFilesDownloadCount() {\n const ids = showFilterFiles.value.map(v => v.id)\n if (ids.length === 0 || fetching) {\n return\n }\n\n FileApi.fileDownloadCount(ids).then((r) => {\n const { data } = r\n if (data.length === 0 || data.length !== showFilterFiles.value.length) {\n return\n }\n\n showFilterFiles.value.forEach((v, idx) => {\n v.downloadCount = data[idx]\n })\n })\n}\nwatchEffect(() => {\n if (searchWord.value || pageCurrent.value || pageSize.value) {\n refreshFilesDownloadCount()\n return\n }\n refreshFilesDownloadCount()\n})\n\nwatchEffect(() => {\n window.localStorage.setItem('ep-show-images', `${showImg.value}`)\n if (!showImg.value) {\n return\n }\n if (searchWord.value || pageCurrent.value || pageSize.value) {\n refreshFilesCover()\n return\n }\n refreshFilesCover()\n})\n\nonMounted(() => {\n loadFiles()\n loadActions()\n $store.dispatch('category/getCategory')\n $store.dispatch('task/getTask')\n})\n\nconst isMobile = useIsMobile()\nfunction handleShowDetail() {\n ElMessageBox.confirm(priceText.value)\n}\n</script>\n\n<template>\n <div class=\"files\">\n <!-- 筛选框 -->\n <div class=\"panel header\">\n <div class=\"item\">\n <span class=\"label\">分类</span>\n <!-- TODO: multiple 多选待评估 -->\n <el-select v-model=\"selectCategory\" size=\"default\" filterable placeholder=\"请选择\">\n <el-option label=\"全部\" value=\"all\" />\n <el-option label=\"默认\" value=\"default\" />\n <el-option v-for=\"item in categories\" :key=\"item.k\" :label=\"item.name\" :value=\"item.k\" />\n <el-option label=\"无关联任务\" value=\"no-task\" />\n <el-option label=\"♻️回收站♻️\" value=\"trash\" />\n </el-select>\n </div>\n <div class=\"item\">\n <span class=\"label\">任务</span>\n <el-select v-model=\"selectTask\" size=\"default\" filterable placeholder=\"请选择\">\n <el-option label=\"全部\" value=\"all\" />\n <el-option v-for=\"item in filterTasks\" :key=\"item.key\" :label=\"item.name\" :value=\"item.key\" />\n </el-select>\n </div>\n <div class=\"item\">\n <el-button\n :loading=\"batchDownStart\" :disabled=\"selectTask === 'all'\" type=\"primary\" size=\"default\"\n :icon=\"Download\" @click=\"handleDownloadTask\"\n >\n 下载任务中的文件\n </el-button>\n </div>\n <div class=\"item\">\n <el-input v-model=\"searchWord\" size=\"default\" clearable placeholder=\"请输入要检索的内容\" :prefix-icon=\"Search\" />\n </div>\n </div>\n <div class=\"panel\">\n <div class=\"export-btns flex fac\">\n <el-dropdown trigger=\"click\" @command=\"handleDropdownClick\">\n <el-button type=\"primary\" size=\"default\">\n 批量操作<el-icon class=\"el-icon--right\">\n <ArrowDown />\n </el-icon>\n </el-button>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item :disabled=\"selectItem.length === 0\" command=\"download\">\n 下载\n </el-dropdown-item>\n <el-dropdown-item :disabled=\"selectItem.length === 0\" command=\"delete\">\n 删除\n </el-dropdown-item>\n <el-dropdown-item :disabled=\"selectItem.length === 0\" command=\"excel\">\n 导出记录\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n <div v-show=\"false\">\n <!-- 迷惑的解决bug的手段 -->\n <el-dropdown trigger=\"click\" @command=\"handleDropdownClick\">\n <el-button type=\"primary\" :disabled=\"selectItem.length === 0\" size=\"default\">\n 批量操作\n <el-icon>\n <ArrowDown />\n </el-icon>\n </el-button>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item command=\"download\">\n 下载\n </el-dropdown-item>\n <el-dropdown-item command=\"delete\">\n 删除\n </el-dropdown-item>\n <el-dropdown-item command=\"excel\">\n 导出记录\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n <el-button size=\"default\" :icon=\"Refresh\" @click=\"handleRefresh\">\n 刷新\n </el-button>\n <el-button\n title=\"导出表格中所有的数据\" type=\"success\" size=\"default\" :icon=\"DataAnalysis\" :disabled=\"showFilterFiles.length === 0\" @click=\"() => {\n handleExportExcel(\n filterFiles,\n `筛选数据导出_${formatDate(\n new Date(),\n 'yyyy年MM月日hh时mm分ss秒',\n )}.xlsx`,\n )\n }\n \"\n >\n 导出记录\n </el-button>\n <div class=\"control-item\">\n 显示图片\n <el-switch\n v-model=\"showImg\" inline-prompt active-color=\"#13ce66\" inactive-color=\"#ff4949\" active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n 展示原文件名\n <el-switch\n v-model=\"showOriginName\" inline-prompt active-color=\"#13ce66\" inactive-color=\"#ff4949\"\n active-text=\"是\" inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n 显示提交人姓名\n <el-switch\n v-model=\"showPeople\" inline-prompt active-color=\"#13ce66\" inactive-color=\"#ff4949\" active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n ⏰ 查看下载历史\n <el-switch\n v-model=\"showHistoryPanel\" style=\"\n --el-switch-on-color: #13ce66;\n --el-switch-off-color: #ff4949;\n \"\n />\n </div>\n </div>\n </div>\n <div v-show=\"historyDownloadRecord.compressTask.length && !showHistoryPanel\" class=\"panel\">\n <Tip style=\"font-size: 16px\">\n 正在进行归档的任务\n {{ historyDownloadRecord.compressTask.length }}个\n </Tip>\n <Tip>详细归档记录点击右上角 “⏰查看下载历史”</Tip>\n <p\n v-for=\"(record, idx) in historyDownloadRecord.compressTask\" :key=\"record.id\" class=\"tc\"\n style=\"margin-top: 10px\"\n >\n {{ idx + 1 }}. {{ record.tip }}\n <span v-loading=\"true\" element-loading-text=\"...\" style=\"--el-loading-spinner-size: 20px\" />\n </p>\n </div>\n <div v-show=\"showHistoryPanel\" class=\"panel\">\n <Tip style=\"font-size: 16px\">\n ”❤️下面展示历史的下载记录与归档任务完成情况❤️“\n </Tip>\n <Tip>”再也不需要在页面停留等待归档完成“</Tip>\n <div>\n <el-table\n ref=\"multipleTable\" v-loading=\"isLoadingData\" element-loading-text=\"Loading...\" tooltip-effect=\"dark\"\n multiple-table stripe border :default-sort=\"{ prop: 'date', order: 'descending' }\"\n :max-height=\"666\" :data=\"historyDownloadRecord.actions\" style=\"width: 100%\"\n @selection-change=\"handleSelectionChange\"\n >\n <el-table-column prop=\"date\" label=\"触发时间\" width=\"200\">\n <template #default=\"scope\">\n {{\n formatDate(new Date(scope.row.date))\n }}\n </template>\n </el-table-column>\n <el-table-column prop=\"tip\" label=\"文件名\" />\n <el-table-column prop=\"type\" label=\"类型\">\n <template #default=\"scope\">\n <el-link v-if=\"scope.row.type === ActionType.Compress\" type=\"primary\">\n 归档下载\n </el-link>\n <el-link v-else type=\"default\">\n 普通下载\n </el-link>\n </template>\n </el-table-column>\n <el-table-column prop=\"size\" label=\"大小\" width=\"100\">\n <template #default=\"scope\">\n <span v-if=\"scope.row.status === DownloadStatus.ARCHIVE\"><el-link type=\"danger\">归档中...</el-link></span>\n <span v-else-if=\"scope.row.status !== DownloadStatus.FAIL\">{{\n !scope.row.size ? '未知大小' : formatSize(scope.row.size)\n }}</span>\n <span v-if=\"scope.row.status === DownloadStatus.FAIL\"><el-link type=\"danger\">归档失败</el-link></span>\n </template>\n </el-table-column>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"140\">\n <template #default=\"scope\">\n <div v-if=\"scope.row.status === DownloadStatus.ARCHIVE\" v-loading=\"true\">\n 归档中...\n </div>\n <div v-if=\"scope.row.status === DownloadStatus.EXPIRED\">\n 链接已失效\n </div>\n <div v-if=\"scope.row.status === DownloadStatus.FAIL\">\n 联系开发者,提供错误信息:{{ scope.row.error }}\n </div>\n <div v-if=\"scope.row.status === DownloadStatus.SUCCESS\">\n <el-link type=\"primary\" @click=\"downLoadByUrl(scope.row.url)\">\n 下载\n </el-link>\n <el-link type=\"success\" style=\"margin-left: 10px\" @click=\"copyRes(scope.row.url)\">\n 链接\n </el-link>\n <el-link\n type=\"warning\" style=\"margin-left: 10px\" @click=\"() => {\n showLinkModel = true\n downloadUrl = scope.row.url\n }\n \"\n >\n 二维码\n </el-link>\n </div>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"flex fc\">\n <el-pagination\n small :current-page=\"historyDownloadRecord.pageCurrent\"\n :page-count=\"historyDownloadRecord.pageCount\" :total=\"historyDownloadRecord.pageTotal\"\n layout=\"total, prev, pager, next\" @current-change=\"handleHistoryActionPageChange\"\n />\n </div>\n </div>\n </div>\n <!-- 主体内容 -->\n <div class=\"panel\">\n <Tip>全部文件大小:{{ fileListSize }},当前任务大小:{{ filterFileSize }}</Tip>\n <Tip v-if=\"siteConfig.limitSpace\">\n <span :class=\"{ warnColor: limitSpace }\">{{ spaceUsageText }}</span>\n </Tip>\n <Tip v-if=\"siteConfig.limitWallet\">\n <span :class=\"{ warnColor: limitWallet }\">{{ moneyUsageText }}</span>\n <strong class=\"money-detail\" @click=\"handleShowDetail\">\n <span>查看详细</span>\n </strong>\n </Tip>\n <Tip v-if=\"limitDownload\">\n <h2 style=\"color:#f56c6c\">\n 空间超限将无法上传/下载文件,如需要使用,请联系管理员扩容,或自行删除无关文件\n </h2>\n </Tip>\n <Tip>\n <strong>如果你觉得应用不错,<a\n style=\"color: #409eff\" href=\"http://docs.ep.sugarat.top/praise/index.html\" target=\"_blank\"\n rel=\"noopener noreferrer\"\n >给他发电⚡</a></strong>\n <strong v-if=\"isOpenPraise\">,其它问题<a\n style=\"color: #409eff\"\n href=\"https://docs.ep.sugarat.top/author.html#%E8%81%94%E7%B3%BB%E4%BD%9C%E8%80%85\" target=\"_blank\"\n rel=\"noopener noreferrer\"\n >联系作者🔗</a></strong>\n <!-- <Praise>\n <el-button style=\"margin:0 0 2px;\" size=\"small\" type=\"primary\" text>Go!Go!❓</el-button>\n </Praise> -->\n </Tip>\n <Tip v-if=\"isOpenPraise\">\n <h3 style=\"color: #f56c6c\">\n 由于部分用户用量较大,小站无法承担这笔开销,限制每个账户为 2GB 可用空间,2¥的默认余额\n </h3>\n <h3>\n <span style=\"color: #f56c6c\">你可以通过<a\n style=\"color: #409eff\"\n href=\"https://docs.ep.sugarat.top/author.html#%E8%81%94%E7%B3%BB%E4%BD%9C%E8%80%85\" target=\"_blank\"\n rel=\"noopener noreferrer\"\n > 联系作者进行赞助⚡ </a>增加空间 或 充值余额</span>,\n <strong>\n <a\n style=\"color: #409eff\" href=\"https://docs.ep.sugarat.top/\" target=\"_blank\"\n rel=\"noopener noreferrer\"\n >也可以选择自己搭建💡\n </a>\n </strong>\n </h3>\n </Tip>\n <el-table\n ref=\"multipleTable\" v-loading=\"isLoadingData\" element-loading-text=\"Loading...\" tooltip-effect=\"dark\"\n multiple-table stripe border :max-height=\"666\" :data=\"showFilterFiles\"\n style=\"width: 100%\" @selection-change=\"handleSelectionChange\"\n >\n <el-table-column type=\"selection\" width=\"55\" />\n <el-table-column prop=\"date\" label=\"提交时间\" width=\"160\">\n <template #default=\"scope\">\n {{\n formatDate(new Date(scope.row.date))\n }}\n </template>\n </el-table-column>\n <el-table-column prop=\"task_name\" label=\"任务\" width=\"150\" />\n <el-table-column prop=\"name\" label=\"文件名\" width=\"200\" />\n <template v-if=\"showOriginName\">\n <el-table-column prop=\"origin_name\" label=\"原文件名\" width=\"200\">\n <template #default=\"scope\">\n {{ scope.row.origin_name || '-' }}\n </template>\n </el-table-column>\n </template>\n <el-table-column prop=\"size\" label=\"大小\">\n <template #default=\"scope\">\n {{\n scope.row.size === 0 ? '未知大小' : formatSize(scope.row.size)\n }}\n </template>\n </el-table-column>\n <el-table-column prop=\"downloadCount\" width=\"90\" label=\"下载次数\" />\n <template v-if=\"showImg\">\n <el-table-column label=\"缩略图\" width=\"120\">\n <template #default=\"scope\">\n <el-image\n preview-teleported :preview-src-list=\"previewImages\" :initial-index=\"scope.$index\"\n lazy style=\"width: 100px; height: 100px\" :src=\"scope.row.cover\" fit=\"cover\"\n @switch=\"handleSwitchImage\" @click=\"handleSwitchImage(scope.$index)\"\n >\n <template #viewer>\n <div class=\"imageDes\">\n {{ viewImageFilename }}\n </div>\n </template>\n <template #placeholder>\n <div class=\"imageLoading\">\n Loading...\n </div>\n </template>\n <template #error>\n <div class=\"imageLoading\">\n 不支持\n <el-icon>\n <Picture />\n </el-icon>\n </div>\n </template>\n </el-image>\n </template>\n </el-table-column>\n </template>\n <template v-if=\"showPeople\">\n <el-table-column prop=\"people\" width=\"100\" label=\"限制名单\">\n <template #default=\"scope\">\n {{ scope.row.people || '-' }}\n </template>\n </el-table-column>\n </template>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"140\">\n <template #default=\"scope\">\n <div class=\"text-btns\">\n <el-button type=\"primary\" text size=\"small\" @click=\"checkInfo(scope.row)\">\n 查看提交信息\n </el-button>\n <el-button type=\"primary\" text size=\"small\" @click=\"rewriteFilename(scope.row)\">\n 修改文件名\n </el-button>\n <el-button type=\"primary\" text size=\"small\" @click=\"downloadOne(scope.row)\">\n 下载\n </el-button>\n <el-button type=\"primary\" text size=\"small\" @click=\"handleDelete(scope.row)\">\n 删除\n </el-button>\n </div>\n </template>\n </el-table-column>\n </el-table>\n </div>\n <!-- 分页 -->\n <div class=\"panel flex fc\">\n <el-pagination\n :current-page=\"pageCurrent\" background :page-count=\"pageCount\" :page-sizes=\"[6, 10, 50, 100]\"\n :page-size=\"pageSize\" :total=\"filterFiles.length\" layout=\"total, sizes, prev, pager, next, jumper\" @current-change=\"handlePageChange\"\n @size-change=\"handleSizeChange\"\n />\n </div>\n <!-- 信息弹窗 -->\n <el-dialog v-model=\"showInfoDialog\" :fullscreen=\"isMobile\" title=\"提交填写的信息\">\n <InfosForm :infos=\"infos\" :disabled=\"true\" />\n </el-dialog>\n <LinkDialog v-model:value=\"showLinkModel\" title=\"下载链接\" :link=\"downloadUrl\" />\n <el-dialog v-model=\"showRenameDialog\" :fullscreen=\"isMobile\" title=\"修改文件名\">\n <div>\n <el-form label-width=\"100px\" :model=\"renameForm\">\n <el-form-item label=\"原文件名\" prop=\"newName\">\n <el-input v-model=\"renameForm.oldName\" disabled />\n </el-form-item>\n <el-form-item label=\"新文件名\" prop=\"newName\">\n <el-input v-model=\"renameForm.newName\" placeholder=\"请输入新文件名\">\n <template #append>\n {{ renameForm.suffix }}\n </template>\n </el-input>\n </el-form-item>\n <el-form-item>\n <el-button type=\"success\" @click=\"handleSaveNewName\">\n 保存\n </el-button>\n <el-button @click=\"showRenameDialog = false\">\n 取消\n </el-button>\n </el-form-item>\n </el-form>\n </div>\n </el-dialog>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.warnColor {\n color: #f56c6c;\n}\n.files {\n max-width: 1024px;\n margin: 0 auto;\n padding-bottom: 2em;\n}\n\n@media screen and (max-width: 700px) {\n .files {\n margin-top: 70px;\n }\n\n .text-btns {\n display: flex;\n flex-direction: column;\n\n :deep(.el-button) {\n margin-left: 0px;\n margin-bottom: 0px;\n }\n }\n\n .header {\n justify-content: center;\n }\n\n .export-btns {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n }\n}\n\n.panel {\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n z-index: 1;\n\n .label {\n font-size: 12px;\n margin-right: 10px;\n }\n}\n\n.header {\n display: flex;\n flex-wrap: wrap;\n\n .item {\n margin-right: 10px;\n margin-bottom: 10px;\n }\n}\n\n.el-button {\n margin-left: 10px;\n margin-bottom: 10px;\n}\n\n.control-item {\n margin-left: 10px;\n margin-bottom: 10px;\n font-size: 14px;\n}\n\n.imageLoading {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n\n.imageDes {\n position: absolute;\n bottom: 80px;\n color: #fff;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.progress-list {\n margin-top: 10px;\n\n .progress-item {\n margin-bottom: 10px;\n\n .progress {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 6px;\n\n .el-progress--line {\n min-width: 200px;\n width: 260px;\n }\n\n .el-button {\n margin: 0 6px;\n }\n }\n\n .des {\n font-size: 12px;\n\n .filename {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n word-break: keep-all;\n margin-right: 10px;\n }\n\n .mimeType {\n width: 60px;\n color: #409eff;\n }\n }\n\n text-align: center;\n }\n}\n.money-detail {\n color: #409eff;\n cursor: pointer;\n}\n</style>\n"],"names":["getDownloadActions","pageSize","pageIndex","extraIds","ajax","ActionServiceAPI","_sfc_main","defineComponent","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","download","_export_sfc","_hoisted_4","picture","useSpaceUsage","usageData","reactive","usage","computed","size","percentage","walletPercentage","limitDownload","limitSpace","limitWallet","spaceUsageText","formatSize","moneyUsageText","priceText","onMounted","UserApi","res","siteConfig","useSiteConfig","isOpenPraise","$store","useStore","$route","useRoute","showLinkModel","ref","downloadUrl","showImg","showPeople","showOriginName","showHistoryPanel","historyDownloadRecord","loadActions","compressTask","v","actions","sum","haveArchive","DownloadStatus","ActionType","action","existIndex","downLoadByUrl","handleHistoryActionPageChange","categories","selectCategory","tasks","selectTask","filterTasks","t","selectTaskName","watchEffect","handleExportExcel","files","filename","ElMessage","baseHeaders","headers","infosHeader","pre","value","i","error","body","date","taskName","name","people","infoObj","info","_a","rows","formatDate","_filename","resFileName","normalizeFileName","tableToExcel","isLoadingData","loadFiles","FileApi","multipleTable","searchWord","filterFiles","f","clearSelection","selectItem","handleSelectionChange","batchDownStart","handleDropdownClick","ids","ElMessageBox","showInfoDialog","infos","checkInfo","parseInfo","showRenameDialog","renameForm","rewriteFilename","id","suffix","getFileSuffix","handleSaveNewName","filenamePattern","file","downloadOne","link","refreshFilesDownloadCount","handleDelete","idx","handleSizeChange","pageCount","pageCurrent","showFilterFiles","start","end","filterFileSize","acc","cur","fileListSize","handlePageChange","handleRefresh","handleDownloadTask","previewData","viewImageFilename","previewImages","handleSwitchImage","fetching","refreshFilesCover","r","data","cover","preview","isMobile","useIsMobile","handleShowDetail"],"mappings":"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","x_google_ignoreList":[1,2]}
|
|
1
|
+
{"version":3,"file":"index-DMIqQLOE.js","sources":["../../src/apis/modules/action.ts","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/download.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/picture.mjs","../../src/composables/user.ts","../../src/pages/dashboard/files/index.vue"],"sourcesContent":["import ajax from '../ajax'\n\nfunction getDownloadActions(\n pageSize: number,\n pageIndex: number,\n extraIds: string[] = []\n): ActionApiTypes.getDownloadActions {\n return ajax.post('/action/download/list', {\n pageSize,\n pageIndex,\n extraIds\n })\n}\n\nexport default {\n getDownloadActions\n}\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Download\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64zm384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64v450.304z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar download = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { download as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Picture\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M160 160v704h704V160H160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M384 288q64 0 64 64t-64 64q-64 0-64-64t64-64zM185.408 876.992l-50.816-38.912L350.72 556.032a96 96 0 0 1 134.592-17.856l1.856 1.472 122.88 99.136a32 32 0 0 0 44.992-4.864l216-269.888 49.92 39.936-215.808 269.824-.256.32a96 96 0 0 1-135.04 14.464l-122.88-99.072-.64-.512a32 32 0 0 0-44.8 5.952L185.408 876.992z\"\n}, null, -1);\nconst _hoisted_4 = [\n _hoisted_2,\n _hoisted_3\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_4);\n}\nvar picture = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { picture as default };\n","import { computed, onMounted, reactive, ref } from 'vue'\nimport { UserApi } from '@/apis'\nimport { formatSize } from '@/utils/stringUtil'\n\nexport function useSpaceUsage() {\n const usageData = reactive({\n size: 0,\n usage: 0,\n limitUpload: false,\n wallet: '0:00',\n cost: '0.00',\n limitSpace: false,\n limitWallet: false,\n price: {\n storage: '0:00',\n download: '0:00',\n },\n })\n const usage = computed(() => usageData.usage)\n const size = computed(() => usageData.size)\n const percentage = computed(() => `${(usageData.usage / usageData.size * 100).toFixed(2)}%`)\n const walletPercentage = computed(() => `${(+usageData.cost / +usageData.wallet * 100).toFixed(2)}%`)\n const limitDownload = computed(() => usageData.limitUpload)\n const limitSpace = computed(() => usageData.limitSpace)\n const limitWallet = computed(() => usageData.limitWallet)\n const spaceUsageText = computed(() => {\n return `空间 ${percentage.value}: ${formatSize(usageData.usage)} / ${formatSize(usageData.size)}`\n })\n const moneyUsageText = computed(() => {\n return `钱包 ${walletPercentage.value}: ${usageData.cost} / ${usageData.wallet}¥`\n })\n const priceText = computed(() => {\n return `存储 ${usageData.price.storage}¥ + 下载 ${usageData.price.download}¥`\n })\n\n onMounted(() => {\n UserApi.usage().then((res) => {\n Object.assign(usageData, res.data)\n })\n })\n return {\n usage,\n size,\n percentage,\n limitDownload,\n limitSpace,\n limitWallet,\n spaceUsageText,\n moneyUsageText,\n priceText,\n }\n}\n","<script lang=\"ts\" setup>\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, onMounted, reactive, ref, watchEffect } from 'vue'\nimport { useStore } from 'vuex'\nimport LinkDialog from '@components/linkDialog.vue'\nimport {\n ArrowDown,\n DataAnalysis,\n Download,\n Picture,\n Refresh,\n Search,\n} from '@element-plus/icons-vue'\nimport { useRoute } from 'vue-router'\nimport Tip from '../tasks/components/infoPanel/tip.vue'\nimport {\n copyRes,\n formatDate,\n formatSize,\n getFileSuffix,\n normalizeFileName,\n parseInfo,\n} from '@/utils/stringUtil'\nimport { ActionServiceAPI, FileApi } from '@/apis'\nimport type { tableItem } from '@/utils/networkUtil'\nimport { downLoadByUrl, tableToExcel } from '@/utils/networkUtil'\nimport InfosForm from '@/components/InfosForm/index.vue'\nimport { ActionType, DownloadStatus, filenamePattern } from '@/constants'\nimport { useIsMobile, useSiteConfig, useSpaceUsage } from '@/composables'\n\nconst { value: siteConfig } = useSiteConfig()\nconst isOpenPraise = computed(() => siteConfig.value.openPraise)\n\nconst { limitDownload, spaceUsageText, moneyUsageText, limitSpace, limitWallet, priceText } = useSpaceUsage()\n\nconst $store = useStore()\nconst $route = useRoute()\nconst showLinkModel = ref(false)\nconst downloadUrl = ref('')\nconst showImg = ref(localStorage.getItem('ep-show-images') === 'true')\nconst showPeople = ref(true)\nconst showOriginName = ref(false)\nconst showHistoryPanel = ref(false)\nconst historyDownloadRecord = reactive({\n actions: [],\n pageSize: 3,\n /**\n * 总页数\n */\n pageCount: 0,\n pageCurrent: 1,\n pageTotal: 0,\n compressTask: [],\n})\n\nfunction loadActions() {\n // 已记录的task\n const compressTask: ActionApiTypes.DownloadActionData[] = JSON.parse(\n localStorage.getItem('ep_compress_task') || '[]',\n )\n historyDownloadRecord.compressTask = compressTask\n\n ActionServiceAPI.getDownloadActions(\n historyDownloadRecord.pageSize,\n historyDownloadRecord.pageCurrent,\n compressTask.map(v => v.id),\n ).then((v) => {\n const { actions, sum } = v.data\n const haveArchive = !!actions.find(\n v => v.status === DownloadStatus.ARCHIVE,\n )\n\n actions\n .filter(v => v.type === ActionType.Compress)\n .forEach((action) => {\n const existIndex = compressTask.findIndex(v => v.id === action.id)\n // 判断状态\n // SUCCESS\n // 存在,触发下载,从compressTask移除\n if (action.status === DownloadStatus.SUCCESS && existIndex !== -1) {\n // 展示弹窗\n downloadUrl.value = action.url\n showLinkModel.value = true\n downLoadByUrl(action.url)\n // ElMessage.success(`自动下载归档任务 ${action.tip}`)\n compressTask.splice(existIndex, 1)\n }\n // Archive\n // 不存在,push进compressTask\n if (action.status === DownloadStatus.ARCHIVE && existIndex === -1) {\n compressTask.push(action)\n }\n\n // ERROR\n if (action.status === DownloadStatus.FAIL && existIndex !== -1) {\n compressTask.splice(existIndex, 1)\n }\n })\n // TODO:之后根据反馈优化\n historyDownloadRecord.compressTask = compressTask\n localStorage.setItem('ep_compress_task', JSON.stringify(compressTask))\n if (haveArchive) {\n // 递归查询\n setTimeout(loadActions, 1000)\n }\n historyDownloadRecord.pageTotal = sum\n historyDownloadRecord.actions = actions\n historyDownloadRecord.pageCount = Math.ceil(\n sum / historyDownloadRecord.pageSize,\n )\n })\n}\nfunction handleHistoryActionPageChange(v) {\n historyDownloadRecord.pageCurrent = v\n loadActions()\n}\n\n// 分类相关\nconst categories = computed(() => $store.state.category.categoryList)\nconst selectCategory = ref('all')\n// 任务相关\nconst tasks = computed<TaskApiTypes.TaskItem[]>(\n () => $store.state.task.taskList,\n)\nconst selectTask = ref('all')\nconst filterTasks = computed(() => {\n if (selectCategory.value === 'all') {\n return tasks.value\n }\n // eslint-disable-next-line vue/no-side-effects-in-computed-properties\n selectTask.value = 'all'\n return tasks.value.filter(t => t.category === selectCategory.value)\n})\nconst selectTaskName = computed(() => {\n const t = filterTasks.value.find(v => v.key === selectTask.value)\n return t?.name\n})\n\nwatchEffect(() => {\n if (\n tasks.value.length\n && tasks.value.some(v => v.key === $route.query.task)\n ) {\n selectTask.value = `${$route.query.task}`\n }\n})\n\n// 记录导出\nfunction handleExportExcel(files: FileApiTypes.File[], filename?: string) {\n if (files.length === 0) {\n ElMessage.warning('表格中没有可导出的内容')\n return\n }\n const baseHeaders = ['提交时间', '任务', '文件名', '大小']\n if (showOriginName.value) {\n baseHeaders.push('原文件名')\n }\n if (showPeople.value) {\n baseHeaders.push('姓名')\n }\n const headers: (string | tableItem)[] = baseHeaders.map(v => ({\n value: v,\n row: 2,\n }))\n\n const infosHeader = files.reduce((pre, value) => {\n try {\n JSON.parse(value.info).forEach((i: any) => {\n if (!pre.includes(i.text)) {\n pre.push(i.text)\n }\n })\n }\n catch (error) {\n ElMessage.error({\n message: `数据异常${value.name},可联系平台管理员处理`,\n duration: 5000,\n })\n console.log(value)\n }\n return pre\n }, [])\n headers.push({\n value: '提交信息',\n col: infosHeader.length,\n })\n\n const body = files.map((v) => {\n const { date, task_name: taskName, name, size, people } = v\n try {\n const infoObj = JSON.parse(v.info).reduce((pre, v) => {\n pre[v.text] = `${v.value}`\n return pre\n }, {})\n const info = infosHeader.map(v => infoObj[v] ?? '-')\n const rows = [formatDate(new Date(date)), taskName, name, formatSize(size)]\n if (showOriginName.value) {\n rows.push(v.origin_name || '-')\n }\n if (showPeople.value) {\n rows.push(people || '-')\n }\n rows.push(...info)\n return rows\n }\n catch (error) {\n ElMessage.error({\n message: `数据异常${v.name},可联系平台管理员处理`,\n duration: 5000,\n })\n console.log(v)\n }\n return []\n }).filter(v => !!v.length)\n body.unshift(infosHeader)\n\n const _filename = filename || `数据导出_${formatDate(new Date(), 'yyyy年MM月日hh时mm分ss秒')}.xlsx`\n const resFileName = selectTaskName.value ? `${normalizeFileName(selectTaskName.value)}_${_filename}` : _filename\n\n tableToExcel(\n headers,\n body,\n resFileName,\n )\n ElMessage.success('导出成功')\n}\n\nconst isLoadingData = ref(false)\n// 提交的所有文件\nconst files: FileApiTypes.File[] = reactive([])\nfunction loadFiles() {\n isLoadingData.value = true\n files.splice(0, files.length)\n FileApi.getFileList().then((res) => {\n files.push(...res.data.files)\n isLoadingData.value = false\n })\n}\nconst multipleTable: any = ref()\nconst searchWord = ref('')\n\n// 用于展示的文件\n// 1. 过滤指定任务\nconst filterFiles = computed(() =>\n files\n .filter((f) => {\n if (selectCategory.value === 'no-task') {\n return tasks.value.every(t => t.key !== f.task_key)\n }\n if (filterTasks.value.length === 0) {\n return false\n }\n\n if (selectTask.value === 'all') {\n return filterTasks.value.find(t => t.key === f.task_key)\n }\n\n return selectTask.value === f.task_key\n // 2. 过滤关键词(精细优化)\n })\n .filter(t =>\n searchWord.value\n ? JSON.stringify([\n formatDate(new Date(t.date)),\n formatSize(t.size),\n t.people,\n t.name,\n t.task_name,\n\n t.info,\n ])\n .replace(/[:'\"{},[\\]]/g, '')\n .includes(searchWord.value)\n : true,\n ),\n)\n\n/**\n * 清空所有选项\n */\nfunction clearSelection() {\n multipleTable.value.clearSelection()\n}\n// 多选选中的项\nconst selectItem: any[] = reactive([])\nfunction handleSelectionChange(e: any) {\n selectItem.splice(0, selectItem.length)\n selectItem.push(...e)\n}\nconst batchDownStart = ref(false)\nfunction handleDropdownClick(e: string) {\n const ids: number[] = selectItem.map(v => v.id)\n switch (e) {\n case 'download':\n if (limitDownload.value) {\n ElMessage.error('下载功能已被限制,请联系管理员扩容,或自行删除历史无用文件')\n return\n }\n if (selectItem.length === 0) {\n ElMessage.warning('没有选中需要下载的内容')\n return\n }\n if (batchDownStart.value) {\n ElMessage.warning('已经有批量下载任务正在进行,请稍后再试')\n return\n }\n FileApi.batchDownload(\n ids,\n `批量下载_${formatDate(new Date(), 'yyyy年MM月日hh时mm分ss秒')}`,\n )\n .then(() => {\n loadActions()\n })\n .catch(() => {\n ElMessage.error('所选文件均已从服务器上移除')\n batchDownStart.value = false\n })\n ElMessage.info('开始归档选中的文件,请赖心等待')\n break\n case 'delete':\n if (selectItem.length === 0) {\n ElMessage.warning('没有选中需要删除的内容')\n return\n }\n ElMessageBox.confirm('删除后无法恢复,是否删除', '数据无价,请谨慎操作')\n .then(() => {\n FileApi.batchDel(ids).then(() => {\n files.splice(\n 0,\n files.length,\n ...files.filter(v => !ids.includes(v.id)),\n )\n ElMessage.success('删除成功')\n })\n })\n .catch(() => {\n ElMessage.info('取消')\n })\n break\n case 'excel':\n if (selectItem.length === 0) {\n ElMessage.warning('没有选中需要导出的内容')\n return\n }\n handleExportExcel(\n selectItem,\n `批量导出_${formatDate(new Date(), 'yyyy年MM月日hh时mm分ss秒')}.xlsx`,\n )\n ElMessage.success('导出成功')\n break\n default:\n break\n }\n clearSelection()\n}\nconst showInfoDialog = ref(false)\nconst infos: any[] = reactive([])\nfunction checkInfo(e: any) {\n infos.splice(0, infos.length)\n infos.push(...parseInfo(e.info))\n showInfoDialog.value = true\n}\n\nconst showRenameDialog = ref(false)\nconst renameForm = reactive({\n oldName: '',\n newName: '',\n suffix: '',\n id: -1,\n})\nfunction rewriteFilename(e: any) {\n const { id, name } = e\n const suffix = getFileSuffix(name)\n renameForm.oldName = name\n renameForm.suffix = suffix\n renameForm.id = id\n showRenameDialog.value = true\n}\n\nfunction handleSaveNewName() {\n // 文件名校验,不能有系统不支持的字符\n if (filenamePattern.test(renameForm.newName)) {\n ElMessage.error(`文件名不能包含${filenamePattern.source}等字符`)\n filenamePattern.lastIndex = 0\n return\n }\n FileApi.updateFilename(\n renameForm.id,\n `${renameForm.newName}${renameForm.suffix}`,\n )\n .then(() => {\n ElMessage.success('修改成功')\n const file = files.find(v => v.id === renameForm.id)\n file.name = `${renameForm.newName}${renameForm.suffix}`\n })\n .catch(() => {\n ElMessage.error('修改失败')\n })\n .finally(() => {\n showRenameDialog.value = false\n })\n}\n\nfunction downloadOne(e: any) {\n if (limitDownload.value) {\n ElMessage.error('下载功能已被限制,请联系管理员扩容,或自行删除历史无用文件')\n return\n }\n const { id, name } = e\n FileApi.getOneFileUrl(id)\n .then((res) => {\n const { link } = res.data\n showLinkModel.value = true\n downloadUrl.value = link\n downLoadByUrl(link, name)\n // 刷新\n loadActions()\n // 刷新次数\n setTimeout(() => {\n refreshFilesDownloadCount()\n }, 1000)\n })\n .catch(() => {\n ElMessage.error('文件已从服务器上移除')\n })\n}\nfunction handleDelete(e: any) {\n const idx = files.findIndex(v => v === e)\n ElMessageBox.confirm('确认删除此文件吗?', '数据无价,请谨慎操作')\n .then(() => {\n FileApi.deleteOneFile(e.id).then(() => {\n ElMessage.success('删除成功')\n files.splice(idx, 1)\n })\n })\n .catch(() => {\n ElMessage.info('取消删除')\n })\n}\n\n// 分页\nconst pageSize = ref(6)\nfunction handleSizeChange(v: number) {\n pageSize.value = v\n}\nconst pageCount = computed(() => {\n const t = Math.ceil(filterFiles.value.length / pageSize.value)\n return t\n})\n// 当前页\nconst pageCurrent = ref(1)\nconst showFilterFiles = computed(() => {\n const start = (pageCurrent.value - 1) * pageSize.value\n const end = pageCurrent.value * pageSize.value\n return filterFiles.value.slice(start, end)\n})\n\nconst filterFileSize = computed(() =>\n formatSize(filterFiles.value.reduce((acc, cur) => acc + cur.size, 0)),\n)\nconst fileListSize = computed(() =>\n formatSize(files.reduce((acc, cur) => acc + cur.size, 0)),\n)\nfunction handlePageChange(idx: number) {\n pageCurrent.value = idx\n}\n\n// 刷新文件列表\n\nfunction handleRefresh() {\n ElMessage.success({\n message: '刷新成功',\n })\n loadFiles()\n}\nfunction handleDownloadTask() {\n const ids: number[] = files\n .filter(f => f.task_key === selectTask.value)\n .map(v => v.id)\n if (ids.length === 0) {\n ElMessage.warning('该任务中没有数据')\n return\n }\n if (batchDownStart.value) {\n ElMessage.warning('已经有批量下载任务正在进行,请稍后再试')\n return\n }\n batchDownStart.value = true\n FileApi.batchDownload(ids, selectTaskName.value)\n .then(() => {\n loadActions()\n })\n .catch(() => {\n ElMessage.error('所选任务中的文件均已从服务器上移除')\n })\n .finally(() => {\n setTimeout(() => {\n batchDownStart.value = false\n }, 1000)\n })\n ElMessage.info('开始归档选中的文件,请赖心等待')\n}\n\nconst previewData = reactive<\n { cover: string, preview: string, name: string, date: string, id: number }[]\n>([])\n\nconst viewImageFilename = ref('')\n\nconst previewImages = computed(() => {\n // if (!sortProps.prop) {\n return previewData.map(v => v.preview)\n // }\n // TODO:下面代码暂不生效,后续再支持表格排序场景\n // const temp = [...previewData]\n // temp.sort((a, b) => {\n // if (sortProps.order === 'descending') {\n // return a[sortProps.prop] - b[sortProps.prop]\n // }\n // return b[sortProps.prop] - a[sortProps.prop]\n // })\n // return temp.map((v) => v.preview)\n})\n\nfunction handleSwitchImage(idx: number) {\n viewImageFilename.value = showFilterFiles.value[idx].name\n}\n\nlet fetching = false\nfunction refreshFilesCover() {\n const ids = showFilterFiles.value.map(v => v.id)\n if (ids.length === 0 || fetching) {\n return\n }\n fetching = true\n FileApi.checkImageFilePreviewUrl(ids).then((r) => {\n fetching = false\n const { data } = r\n if (data.length === 0 || data.length !== showFilterFiles.value.length) {\n return\n }\n previewData.splice(0, previewData.length)\n showFilterFiles.value.forEach((v, idx) => {\n const { cover, preview } = data[idx]\n v.cover = cover\n previewData.push({ cover, preview, name: v.name, date: v.date, id: v.id })\n })\n })\n}\n\nfunction refreshFilesDownloadCount() {\n const ids = showFilterFiles.value.map(v => v.id)\n if (ids.length === 0 || fetching) {\n return\n }\n\n FileApi.fileDownloadCount(ids).then((r) => {\n const { data } = r\n if (data.length === 0 || data.length !== showFilterFiles.value.length) {\n return\n }\n\n showFilterFiles.value.forEach((v, idx) => {\n v.downloadCount = data[idx]\n })\n })\n}\nwatchEffect(() => {\n if (searchWord.value || pageCurrent.value || pageSize.value) {\n refreshFilesDownloadCount()\n return\n }\n refreshFilesDownloadCount()\n})\n\nwatchEffect(() => {\n window.localStorage.setItem('ep-show-images', `${showImg.value}`)\n if (!showImg.value) {\n return\n }\n if (searchWord.value || pageCurrent.value || pageSize.value) {\n refreshFilesCover()\n return\n }\n refreshFilesCover()\n})\n\nonMounted(() => {\n loadFiles()\n loadActions()\n $store.dispatch('category/getCategory')\n $store.dispatch('task/getTask')\n})\n\nconst isMobile = useIsMobile()\nfunction handleShowDetail() {\n ElMessageBox.confirm(priceText.value)\n}\n</script>\n\n<template>\n <div class=\"files\">\n <!-- 筛选框 -->\n <div class=\"panel header\">\n <div class=\"item\">\n <span class=\"label\">分类</span>\n <!-- TODO: multiple 多选待评估 -->\n <el-select v-model=\"selectCategory\" size=\"default\" filterable placeholder=\"请选择\">\n <el-option label=\"全部\" value=\"all\" />\n <el-option label=\"默认\" value=\"default\" />\n <el-option v-for=\"item in categories\" :key=\"item.k\" :label=\"item.name\" :value=\"item.k\" />\n <el-option label=\"无关联任务\" value=\"no-task\" />\n <el-option label=\"♻️回收站♻️\" value=\"trash\" />\n </el-select>\n </div>\n <div class=\"item\">\n <span class=\"label\">任务</span>\n <el-select v-model=\"selectTask\" size=\"default\" filterable placeholder=\"请选择\">\n <el-option label=\"全部\" value=\"all\" />\n <el-option v-for=\"item in filterTasks\" :key=\"item.key\" :label=\"item.name\" :value=\"item.key\" />\n </el-select>\n </div>\n <div class=\"item\">\n <el-button\n :loading=\"batchDownStart\" :disabled=\"selectTask === 'all'\" type=\"primary\" size=\"default\"\n :icon=\"Download\" @click=\"handleDownloadTask\"\n >\n 下载任务中的文件\n </el-button>\n </div>\n <div class=\"item\">\n <el-input v-model=\"searchWord\" size=\"default\" clearable placeholder=\"请输入要检索的内容\" :prefix-icon=\"Search\" />\n </div>\n </div>\n <div class=\"panel\">\n <div class=\"export-btns flex fac\">\n <el-dropdown trigger=\"click\" @command=\"handleDropdownClick\">\n <el-button type=\"primary\" size=\"default\">\n 批量操作<el-icon class=\"el-icon--right\">\n <ArrowDown />\n </el-icon>\n </el-button>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item :disabled=\"selectItem.length === 0\" command=\"download\">\n 下载\n </el-dropdown-item>\n <el-dropdown-item :disabled=\"selectItem.length === 0\" command=\"delete\">\n 删除\n </el-dropdown-item>\n <el-dropdown-item :disabled=\"selectItem.length === 0\" command=\"excel\">\n 导出记录\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n <div v-show=\"false\">\n <!-- 迷惑的解决bug的手段 -->\n <el-dropdown trigger=\"click\" @command=\"handleDropdownClick\">\n <el-button type=\"primary\" :disabled=\"selectItem.length === 0\" size=\"default\">\n 批量操作\n <el-icon>\n <ArrowDown />\n </el-icon>\n </el-button>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item command=\"download\">\n 下载\n </el-dropdown-item>\n <el-dropdown-item command=\"delete\">\n 删除\n </el-dropdown-item>\n <el-dropdown-item command=\"excel\">\n 导出记录\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n <el-button size=\"default\" :icon=\"Refresh\" @click=\"handleRefresh\">\n 刷新\n </el-button>\n <el-button\n title=\"导出表格中所有的数据\" type=\"success\" size=\"default\" :icon=\"DataAnalysis\" :disabled=\"showFilterFiles.length === 0\" @click=\"() => {\n handleExportExcel(\n filterFiles,\n `筛选数据导出_${formatDate(\n new Date(),\n 'yyyy年MM月日hh时mm分ss秒',\n )}.xlsx`,\n )\n }\n \"\n >\n 导出记录\n </el-button>\n <div class=\"control-item\">\n 显示图片\n <el-switch\n v-model=\"showImg\" inline-prompt active-color=\"#13ce66\" inactive-color=\"#ff4949\" active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n 展示原文件名\n <el-switch\n v-model=\"showOriginName\" inline-prompt active-color=\"#13ce66\" inactive-color=\"#ff4949\"\n active-text=\"是\" inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n 显示提交人姓名\n <el-switch\n v-model=\"showPeople\" inline-prompt active-color=\"#13ce66\" inactive-color=\"#ff4949\" active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n ⏰ 查看下载历史\n <el-switch\n v-model=\"showHistoryPanel\" style=\"\n --el-switch-on-color: #13ce66;\n --el-switch-off-color: #ff4949;\n \"\n />\n </div>\n </div>\n </div>\n <div v-show=\"historyDownloadRecord.compressTask.length && !showHistoryPanel\" class=\"panel\">\n <Tip style=\"font-size: 16px\">\n 正在进行归档的任务\n {{ historyDownloadRecord.compressTask.length }}个\n </Tip>\n <Tip>详细归档记录点击右上角 “⏰查看下载历史”</Tip>\n <p\n v-for=\"(record, idx) in historyDownloadRecord.compressTask\" :key=\"record.id\" class=\"tc\"\n style=\"margin-top: 10px\"\n >\n {{ idx + 1 }}. {{ record.tip }}\n <span v-loading=\"true\" element-loading-text=\"...\" style=\"--el-loading-spinner-size: 20px\" />\n </p>\n </div>\n <div v-show=\"showHistoryPanel\" class=\"panel\">\n <Tip style=\"font-size: 16px\">\n ”❤️下面展示历史的下载记录与归档任务完成情况❤️“\n </Tip>\n <Tip>”再也不需要在页面停留等待归档完成“</Tip>\n <div>\n <el-table\n ref=\"multipleTable\" v-loading=\"isLoadingData\" element-loading-text=\"Loading...\" tooltip-effect=\"dark\"\n multiple-table stripe border :default-sort=\"{ prop: 'date', order: 'descending' }\"\n :max-height=\"666\" :data=\"historyDownloadRecord.actions\" style=\"width: 100%\"\n @selection-change=\"handleSelectionChange\"\n >\n <el-table-column prop=\"date\" label=\"触发时间\" width=\"200\">\n <template #default=\"scope\">\n {{\n formatDate(new Date(scope.row.date))\n }}\n </template>\n </el-table-column>\n <el-table-column prop=\"tip\" label=\"文件名\" />\n <el-table-column prop=\"type\" label=\"类型\">\n <template #default=\"scope\">\n <el-link v-if=\"scope.row.type === ActionType.Compress\" type=\"primary\">\n 归档下载\n </el-link>\n <el-link v-else type=\"default\">\n 普通下载\n </el-link>\n </template>\n </el-table-column>\n <el-table-column prop=\"size\" label=\"大小\" width=\"100\">\n <template #default=\"scope\">\n <span v-if=\"scope.row.status === DownloadStatus.ARCHIVE\"><el-link type=\"danger\">归档中...</el-link></span>\n <span v-else-if=\"scope.row.status !== DownloadStatus.FAIL\">{{\n !scope.row.size ? '未知大小' : formatSize(scope.row.size)\n }}</span>\n <span v-if=\"scope.row.status === DownloadStatus.FAIL\"><el-link type=\"danger\">归档失败</el-link></span>\n </template>\n </el-table-column>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"140\">\n <template #default=\"scope\">\n <div v-if=\"scope.row.status === DownloadStatus.ARCHIVE\" v-loading=\"true\">\n 归档中...\n </div>\n <div v-if=\"scope.row.status === DownloadStatus.EXPIRED\">\n 链接已失效\n </div>\n <div v-if=\"scope.row.status === DownloadStatus.FAIL\">\n 联系开发者,提供错误信息:{{ scope.row.error }}\n </div>\n <div v-if=\"scope.row.status === DownloadStatus.SUCCESS\">\n <el-link type=\"primary\" @click=\"downLoadByUrl(scope.row.url)\">\n 下载\n </el-link>\n <el-link type=\"success\" style=\"margin-left: 10px\" @click=\"copyRes(scope.row.url)\">\n 链接\n </el-link>\n <el-link\n type=\"warning\" style=\"margin-left: 10px\" @click=\"() => {\n showLinkModel = true\n downloadUrl = scope.row.url\n }\n \"\n >\n 二维码\n </el-link>\n </div>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"flex fc\">\n <el-pagination\n small :current-page=\"historyDownloadRecord.pageCurrent\"\n :page-count=\"historyDownloadRecord.pageCount\" :total=\"historyDownloadRecord.pageTotal\"\n layout=\"total, prev, pager, next\" @current-change=\"handleHistoryActionPageChange\"\n />\n </div>\n </div>\n </div>\n <!-- 主体内容 -->\n <div class=\"panel\">\n <Tip>全部文件大小:{{ fileListSize }},当前任务大小:{{ filterFileSize }}</Tip>\n <Tip v-if=\"siteConfig.limitSpace\">\n <span :class=\"{ warnColor: limitSpace }\">{{ spaceUsageText }}</span>\n </Tip>\n <Tip v-if=\"siteConfig.limitWallet\">\n 统计时间:{{ formatDate(siteConfig.moneyStartDay, 'yyyy-MM-dd') }} - 至今\n </Tip>\n <Tip v-if=\"siteConfig.limitWallet\">\n <span :class=\"{ warnColor: limitWallet }\">{{ moneyUsageText }}</span>\n <strong class=\"money-detail\" @click=\"handleShowDetail\">\n <span>查看详细</span>\n </strong>\n </Tip>\n <Tip v-if=\"limitDownload\">\n <h2 style=\"color:#f56c6c\">\n 空间超限将无法上传/下载文件,如需要使用,请联系管理员扩容,或自行删除无关文件\n </h2>\n </Tip>\n <Tip>\n <strong>如果你觉得应用不错,<a\n style=\"color: #409eff\" href=\"http://docs.ep.sugarat.top/praise/index.html\" target=\"_blank\"\n rel=\"noopener noreferrer\"\n >给他发电⚡</a></strong>\n <strong v-if=\"isOpenPraise\">,其它问题<a\n style=\"color: #409eff\"\n href=\"https://docs.ep.sugarat.top/author.html#%E8%81%94%E7%B3%BB%E4%BD%9C%E8%80%85\" target=\"_blank\"\n rel=\"noopener noreferrer\"\n >联系作者🔗</a></strong>\n <!-- <Praise>\n <el-button style=\"margin:0 0 2px;\" size=\"small\" type=\"primary\" text>Go!Go!❓</el-button>\n </Praise> -->\n </Tip>\n <Tip v-if=\"isOpenPraise\">\n <h3 style=\"color: #f56c6c\">\n 由于部分用户用量较大,小站无法承担这笔开销,限制每个账户为 2GB 可用空间,2¥的默认余额\n </h3>\n <h3>\n <span style=\"color: #f56c6c\">你可以通过<a\n style=\"color: #409eff\"\n href=\"https://docs.ep.sugarat.top/author.html#%E8%81%94%E7%B3%BB%E4%BD%9C%E8%80%85\" target=\"_blank\"\n rel=\"noopener noreferrer\"\n > 联系作者进行赞助⚡ </a>增加空间 或 充值余额</span>,\n <strong>\n <a\n style=\"color: #409eff\" href=\"https://docs.ep.sugarat.top/\" target=\"_blank\"\n rel=\"noopener noreferrer\"\n >也可以选择自己搭建💡\n </a>\n </strong>\n </h3>\n </Tip>\n <el-table\n ref=\"multipleTable\" v-loading=\"isLoadingData\" element-loading-text=\"Loading...\" tooltip-effect=\"dark\"\n multiple-table stripe border :max-height=\"666\" :data=\"showFilterFiles\"\n style=\"width: 100%\" @selection-change=\"handleSelectionChange\"\n >\n <el-table-column type=\"selection\" width=\"55\" />\n <el-table-column prop=\"date\" label=\"提交时间\" width=\"160\">\n <template #default=\"scope\">\n {{\n formatDate(new Date(scope.row.date))\n }}\n </template>\n </el-table-column>\n <el-table-column prop=\"task_name\" label=\"任务\" width=\"150\" />\n <el-table-column prop=\"name\" label=\"文件名\" width=\"200\" />\n <template v-if=\"showOriginName\">\n <el-table-column prop=\"origin_name\" label=\"原文件名\" width=\"200\">\n <template #default=\"scope\">\n {{ scope.row.origin_name || '-' }}\n </template>\n </el-table-column>\n </template>\n <el-table-column prop=\"size\" label=\"大小\">\n <template #default=\"scope\">\n {{\n scope.row.size === 0 ? '未知大小' : formatSize(scope.row.size)\n }}\n </template>\n </el-table-column>\n <el-table-column prop=\"downloadCount\" width=\"90\" label=\"下载次数\" />\n <template v-if=\"showImg\">\n <el-table-column label=\"缩略图\" width=\"120\">\n <template #default=\"scope\">\n <el-image\n preview-teleported :preview-src-list=\"previewImages\" :initial-index=\"scope.$index\"\n lazy style=\"width: 100px; height: 100px\" :src=\"scope.row.cover\" fit=\"cover\"\n @switch=\"handleSwitchImage\" @click=\"handleSwitchImage(scope.$index)\"\n >\n <template #viewer>\n <div class=\"imageDes\">\n {{ viewImageFilename }}\n </div>\n </template>\n <template #placeholder>\n <div class=\"imageLoading\">\n Loading...\n </div>\n </template>\n <template #error>\n <div class=\"imageLoading\">\n 不支持\n <el-icon>\n <Picture />\n </el-icon>\n </div>\n </template>\n </el-image>\n </template>\n </el-table-column>\n </template>\n <template v-if=\"showPeople\">\n <el-table-column prop=\"people\" width=\"100\" label=\"限制名单\">\n <template #default=\"scope\">\n {{ scope.row.people || '-' }}\n </template>\n </el-table-column>\n </template>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"140\">\n <template #default=\"scope\">\n <div class=\"text-btns\">\n <el-button type=\"primary\" text size=\"small\" @click=\"checkInfo(scope.row)\">\n 查看提交信息\n </el-button>\n <el-button type=\"primary\" text size=\"small\" @click=\"rewriteFilename(scope.row)\">\n 修改文件名\n </el-button>\n <el-button type=\"primary\" text size=\"small\" @click=\"downloadOne(scope.row)\">\n 下载\n </el-button>\n <el-button type=\"primary\" text size=\"small\" @click=\"handleDelete(scope.row)\">\n 删除\n </el-button>\n </div>\n </template>\n </el-table-column>\n </el-table>\n </div>\n <!-- 分页 -->\n <div class=\"panel flex fc\">\n <el-pagination\n :current-page=\"pageCurrent\" background :page-count=\"pageCount\" :page-sizes=\"[6, 10, 50, 100]\"\n :page-size=\"pageSize\" :total=\"filterFiles.length\" layout=\"total, sizes, prev, pager, next, jumper\" @current-change=\"handlePageChange\"\n @size-change=\"handleSizeChange\"\n />\n </div>\n <!-- 信息弹窗 -->\n <el-dialog v-model=\"showInfoDialog\" :fullscreen=\"isMobile\" title=\"提交填写的信息\">\n <InfosForm :infos=\"infos\" :disabled=\"true\" />\n </el-dialog>\n <LinkDialog v-model:value=\"showLinkModel\" title=\"下载链接\" :link=\"downloadUrl\" />\n <el-dialog v-model=\"showRenameDialog\" :fullscreen=\"isMobile\" title=\"修改文件名\">\n <div>\n <el-form label-width=\"100px\" :model=\"renameForm\">\n <el-form-item label=\"原文件名\" prop=\"newName\">\n <el-input v-model=\"renameForm.oldName\" disabled />\n </el-form-item>\n <el-form-item label=\"新文件名\" prop=\"newName\">\n <el-input v-model=\"renameForm.newName\" placeholder=\"请输入新文件名\">\n <template #append>\n {{ renameForm.suffix }}\n </template>\n </el-input>\n </el-form-item>\n <el-form-item>\n <el-button type=\"success\" @click=\"handleSaveNewName\">\n 保存\n </el-button>\n <el-button @click=\"showRenameDialog = false\">\n 取消\n </el-button>\n </el-form-item>\n </el-form>\n </div>\n </el-dialog>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.warnColor {\n color: #f56c6c;\n}\n.files {\n max-width: 1024px;\n margin: 0 auto;\n padding-bottom: 2em;\n}\n\n@media screen and (max-width: 700px) {\n .files {\n margin-top: 70px;\n }\n\n .text-btns {\n display: flex;\n flex-direction: column;\n\n :deep(.el-button) {\n margin-left: 0px;\n margin-bottom: 0px;\n }\n }\n\n .header {\n justify-content: center;\n }\n\n .export-btns {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n }\n}\n\n.panel {\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n z-index: 1;\n\n .label {\n font-size: 12px;\n margin-right: 10px;\n }\n}\n\n.header {\n display: flex;\n flex-wrap: wrap;\n\n .item {\n margin-right: 10px;\n margin-bottom: 10px;\n }\n}\n\n.el-button {\n margin-left: 10px;\n margin-bottom: 10px;\n}\n\n.control-item {\n margin-left: 10px;\n margin-bottom: 10px;\n font-size: 14px;\n}\n\n.imageLoading {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n\n.imageDes {\n position: absolute;\n bottom: 80px;\n color: #fff;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.progress-list {\n margin-top: 10px;\n\n .progress-item {\n margin-bottom: 10px;\n\n .progress {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 6px;\n\n .el-progress--line {\n min-width: 200px;\n width: 260px;\n }\n\n .el-button {\n margin: 0 6px;\n }\n }\n\n .des {\n font-size: 12px;\n\n .filename {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n word-break: keep-all;\n margin-right: 10px;\n }\n\n .mimeType {\n width: 60px;\n color: #409eff;\n }\n }\n\n text-align: center;\n }\n}\n.money-detail {\n color: #409eff;\n cursor: pointer;\n}\n</style>\n"],"names":["getDownloadActions","pageSize","pageIndex","extraIds","ajax","ActionServiceAPI","_sfc_main","defineComponent","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","download","_export_sfc","_hoisted_4","picture","useSpaceUsage","usageData","reactive","usage","computed","size","percentage","walletPercentage","limitDownload","limitSpace","limitWallet","spaceUsageText","formatSize","moneyUsageText","priceText","onMounted","UserApi","res","siteConfig","useSiteConfig","isOpenPraise","$store","useStore","$route","useRoute","showLinkModel","ref","downloadUrl","showImg","showPeople","showOriginName","showHistoryPanel","historyDownloadRecord","loadActions","compressTask","v","actions","sum","haveArchive","DownloadStatus","ActionType","action","existIndex","downLoadByUrl","handleHistoryActionPageChange","categories","selectCategory","tasks","selectTask","filterTasks","t","selectTaskName","watchEffect","handleExportExcel","files","filename","ElMessage","baseHeaders","headers","infosHeader","pre","value","i","error","body","date","taskName","name","people","infoObj","info","_a","rows","formatDate","_filename","resFileName","normalizeFileName","tableToExcel","isLoadingData","loadFiles","FileApi","multipleTable","searchWord","filterFiles","f","clearSelection","selectItem","handleSelectionChange","batchDownStart","handleDropdownClick","ids","ElMessageBox","showInfoDialog","infos","checkInfo","parseInfo","showRenameDialog","renameForm","rewriteFilename","id","suffix","getFileSuffix","handleSaveNewName","filenamePattern","file","downloadOne","link","refreshFilesDownloadCount","handleDelete","idx","handleSizeChange","pageCount","pageCurrent","showFilterFiles","start","end","filterFileSize","acc","cur","fileListSize","handlePageChange","handleRefresh","handleDownloadTask","previewData","viewImageFilename","previewImages","handleSwitchImage","fetching","refreshFilesCover","r","data","cover","preview","isMobile","useIsMobile","handleShowDetail"],"mappings":"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","x_google_ignoreList":[1,2]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{_ as e,a as c,c as t,b as n}from"./index-
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import{_ as e,a as c,c as t,b as n}from"./index-D80lTVeV.js";const o={},s=n("h1",null,"反馈页",-1),_=[s];function a(r,d){return c(),t("div",null,_)}const i=e(o,[["render",a]]);export{i as default};
|
|
2
|
+
//# sourceMappingURL=index-DRHl9KU8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-DRHl9KU8.js","sources":["../../src/pages/feedback/index.vue"],"sourcesContent":["<template>\n <div>\n <h1>反馈页</h1>\n </div>\n</template>\n"],"names":["_hoisted_2","_sfc_render","_ctx","_cache"],"mappings":"gGAEoBA,EAAA,IADhB,SAAAC,EAAAC,EAAAC,EAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{J as se,K as R,L as b,M as ae,N as ne,d as k,O as V,Q as le,r as A,k as c,R as re,a as d,D as K,w as p,c as f,H as D,t as y,S as $,T as U,e as B,V as ie,W as pe,X as ce,Y as de,g as L,b as o,Z as N,$ as J,F as P,C as Q,s as F,j as l,a0 as X,x as Y,_ as z,a1 as G,o as ee,a2 as ue,u as _e,h as fe,U as O,i as W,a3 as he,E as ve,I as me,p as ge,f as we}from"./index-CvlaXQXr.js";import{u as te,E as be}from"./el-dialog-C8bI9VGw.js";import{d as I,a as $e,E as ye,b as Ce,c as ke}from"./el-dropdown-item-febUKGk9.js";import{E as Ee,a as Me}from"./el-tab-pane-fWqYc0uG.js";import{E as xe}from"./index-UJqXhonq.js";import"./index-BAFXwCno.js";import"./aria-nkjrUMQ-.js";import"./validator-BESrcCvQ.js";const Ve=se({trigger:R.trigger,placement:I.placement,disabled:R.disabled,visible:b.visible,transition:b.transition,popperOptions:I.popperOptions,tabindex:I.tabindex,content:b.content,popperStyle:b.popperStyle,popperClass:b.popperClass,enterable:{...b.enterable,default:!0},effect:{...b.effect,default:"light"},teleported:b.teleported,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},"onUpdate:visible":{type:Function}}),Se={"update:visible":r=>ae(r),"before-enter":()=>!0,"before-leave":()=>!0,"after-enter":()=>!0,"after-leave":()=>!0},Ae={name:"ElPopover"},Be=k({...Ae,props:Ve,emits:Se,setup(r,{expose:a,emit:t}){const s=r,m="onUpdate:visible",i=V(()=>s[m]),h=le("popover"),u=A(),v=V(()=>{var e;return(e=c(u))==null?void 0:e.popperRef}),g=V(()=>[{width:re(s.width)},s.popperStyle]),C=V(()=>[h.b(),s.popperClass,{[h.m("plain")]:!!s.content}]),n=V(()=>s.transition==="el-fade-in-linear"),_=()=>{var e;(e=u.value)==null||e.hide()},E=()=>{t("before-enter")},w=()=>{t("before-leave")},M=()=>{t("after-enter")},x=()=>{t("update:visible",!1),t("after-leave")};return a({popperRef:v,hide:_}),(e,T)=>(d(),K(c(pe),ie({ref_key:"tooltipRef",ref:u},e.$attrs,{trigger:e.trigger,placement:e.placement,disabled:e.disabled,visible:e.visible,transition:e.transition,"popper-options":e.popperOptions,tabindex:e.tabindex,content:e.content,offset:e.offset,"show-after":e.showAfter,"hide-after":e.hideAfter,"auto-close":e.autoClose,"show-arrow":e.showArrow,"aria-label":e.title,effect:e.effect,enterable:e.enterable,"popper-class":c(C),"popper-style":c(g),teleported:e.teleported,persistent:e.persistent,"gpu-acceleration":c(n),"onUpdate:visible":c(i),onBeforeShow:E,onBeforeHide:w,onShow:M,onHide:x}),{content:p(()=>[e.title?(d(),f("div",{key:0,class:D(c(h).e("title")),role:"title"},y(e.title),3)):$("v-if",!0),U(e.$slots,"default",{},()=>[B(y(e.content),1)])]),default:p(()=>[e.$slots.reference?U(e.$slots,"reference",{key:0}):$("v-if",!0)]),_:3},16,["trigger","placement","disabled","visible","transition","popper-options","tabindex","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","persistent","gpu-acceleration","onUpdate:visible"]))}});var He=ne(Be,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popover/src/popover.vue"]]);const Z=(r,a)=>{const t=a.arg||a.value,s=t==null?void 0:t.popperRef;s&&(s.triggerRef=r)};var Ie={mounted(r,a){Z(r,a)},updated(r,a){Z(r,a)}};const Pe="popover",De=ce(Ie,Pe),Le=de(He,{directive:De}),Ne=k({name:"Bell"}),ze={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Te=o("path",{fill:"currentColor",d:"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64z"},null,-1),Re=o("path",{fill:"currentColor",d:"M256 768h512V448a256 256 0 1 0-512 0v320zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320z"},null,-1),Ue=o("path",{fill:"currentColor",d:"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm352 128h128a64 64 0 0 1-128 0z"},null,-1),Fe=[Te,Re,Ue];function Oe(r,a,t,s,m,i){return d(),f("svg",ze,Fe)}var We=L(Ne,[["render",Oe]]);const Ze=k({name:"Close"}),je={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},qe=o("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"},null,-1),Ke=[qe];function Je(r,a,t,s,m,i){return d(),f("svg",je,Ke)}var Qe=L(Ze,[["render",Je]]);const Xe=k({name:"Expand"}),Ye={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Ge=o("path",{fill:"currentColor",d:"M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352 192 160-192 128V352z"},null,-1),et=[Ge];function tt(r,a,t,s,m,i){return d(),f("svg",Ye,et)}var ot=L(Xe,[["render",tt]]);const st={key:0,class:"empty"},at={class:"message-list"},nt=["onClick"],lt={class:"text"},rt={class:"date"},it=["innerHTML"],pt={class:"dialog-date"},ct=k({__name:"index",props:{data:{},autoShow:{type:Boolean}},setup(r){const a=r,t=N({show:!1,title:"系统消息",text:"内容"}),s=A(null);function m(u){s.value=u,t.text=u.text,t.title=u.type===0?"【系统消息】":"【私信】",t.show=!0}function i(){if(s.value.read){t.show=!1;return}X.readMessage(s.value.id).then(()=>{s.value.read=!0,t.show=!1})}J(()=>a.data.length,()=>{if(!a.autoShow)return;const u=a.data.find(v=>!v.read);u&&m(u)});const h=te();return(u,v)=>{const g=Y,C=be;return d(),f(P,null,[u.data.length?$("",!0):(d(),f("div",st," 暂无更多消息 ღ( ´・ᴗ・` )比心 ")),o("ul",at,[(d(!0),f(P,null,Q(u.data,n=>(d(),f("li",{key:n.id,class:D({read:n.read}),onClick:_=>m(n)},[o("p",lt,y(n.text),1),o("p",rt,y(c(F)(new Date(n.date))),1)],10,nt))),128))]),l(C,{modelValue:t.show,"onUpdate:modelValue":v[1]||(v[1]=n=>t.show=n),center:"","show-close":"","append-to-body":"","close-on-click-modal":!1,title:t.title,width:"30%",fullscreen:c(h)},{footer:p(()=>[o("p",pt," 时间:"+y(c(F)(new Date(s.value.date))),1),o("span",null,[l(g,{type:"default",onClick:v[0]||(v[0]=()=>{t.show=!1})},{default:p(()=>[B(" 下次提醒 ")]),_:1}),l(g,{type:"primary",onClick:i},{default:p(()=>[B(" 确定 ")]),_:1})])]),default:p(()=>[o("div",{class:"message-text",innerHTML:t.text},null,8,it)]),_:1},8,["modelValue","title","fullscreen"])],64)}}}),j=z(ct,[["__scopeId","data-v-7988765c"]]),dt={class:"message-panel"},ut=k({__name:"index",setup(r){const a=A("all"),t=N([]),s=V(()=>t.filter(i=>!i.read)),m=G();return ee(()=>{m.name!=="config"&&X.getMessageList().then(i=>{t.push(...i.data)})}),(i,h)=>{const u=Y,v=ue,g=Ee,C=Me,n=Le;return d(),f("div",dt,[l(n,{placement:"bottom-end",width:375,trigger:"hover"},{reference:p(()=>[l(v,{value:s.value.length||"",max:99},{default:p(()=>[l(u,{icon:c(We),circle:""},null,8,["icon"])]),_:1},8,["value"])]),default:p(()=>[o("div",null,[l(C,{modelValue:a.value,"onUpdate:modelValue":h[0]||(h[0]=_=>a.value=_)},{default:p(()=>[l(g,{label:"未读 ".concat(s.value.length||""),name:"no"},{default:p(()=>[l(j,{"auto-show":"",data:s.value},null,8,["data"])]),_:1},8,["label"]),l(g,{label:"全部 ".concat(t.length||""),name:"all"},{default:p(()=>[l(j,{data:t},null,8,["data"])]),_:1},8,["label"])]),_:1},8,["modelValue"])])]),_:1})])}}}),q=z(ut,[["__scopeId","data-v-9de070a6"]]),S=r=>(ge("data-v-a61daf72"),r=r(),we(),r),_t={class:"dashboard"},ft={class:"pc-nav"},ht={class:"nav"},vt={class:"logo"},mt=S(()=>o("img",{src:"https://img.cdn.sugarat.top/easypicker/EasyPicker.png",alt:"logo"},null,-1)),gt={key:0,id:"navActive",type:"checkbox"},wt={key:0,for:"navActive",class:"nav-item"},bt=S(()=>o("span",null,"Hello💐,",-1)),$t=["onClick"],yt=S(()=>o("span",{style:{"margin-right":"6px"}},"退出",-1)),Ct=S(()=>o("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","data-v-53d86618":""},[o("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M10.6667 2.55473C13.0212 3.58347 14.6667 5.93291 14.6667 8.66667C14.6667 12.3486 11.6819 15.3333 8 15.3333C4.3181 15.3333 1.33333 12.3486 1.33333 8.66667C1.33333 5.93291 2.97879 3.58347 5.33333 2.55473V4.04684C3.7392 4.969 2.66667 6.69259 2.66667 8.66667C2.66667 11.6122 5.05448 14 8 14C10.9455 14 13.3333 11.6122 13.3333 8.66667C13.3333 6.69259 12.2608 4.969 10.6667 4.04684V2.55473ZM7.33333 8.66667V1.33333C7.33333 1.14924 7.48257 1 7.66667 1H8.33333C8.51743 1 8.66667 1.14924 8.66667 1.33333V8.66667C8.66667 8.85076 8.51743 9 8.33333 9H7.66667C7.48257 9 7.33333 8.85076 7.33333 8.66667Z",fill:"#86909C","data-v-53d86618":""})],-1)),kt=S(()=>o("div",{class:"mask"},null,-1)),Et={id:"navMenu"},Mt={for:"navActive"},xt={key:0,class:"flex fac"},Vt=S(()=>o("span",null,"Hello 💐,",-1)),St={class:"exit-info"},At={class:"ellipsis"},Bt=k({__name:"index",setup(r){const a=te(),t=_e(),s=fe(),m=G(),i=N([{title:"文件管理",path:"/dashboard/files"},{title:"任务管理",path:"/dashboard/tasks"}]),h=A(0);function u(n){const _=i[n];!_.isExternal&&n!==h.value&&t.push({path:_.path}),_.isExternal&&window.open(_.path,"_blank")}J(()=>m.path,n=>{const _=i.findIndex(E=>n.startsWith(E.path));_!==-1&&(h.value=_)});function v(){xe.confirm("确认退出登录?","登出提示",{draggable:!0}).then(()=>{O.logout().finally(()=>{s.commit("user/setToken",null),t.replace({name:"home"})})}).catch(()=>{ve.info("取消")})}const g=A("World");function C(){h.value=i.findIndex(n=>m.path.startsWith(n.path))}return ee(()=>{O.checkPower().then(n=>{var w,M,x;const _=(w=n.data)==null?void 0:w.power;if(g.value=(M=n.data)==null?void 0:M.name,s.commit("user/setSuperAdmin",_),_){const e=[{title:"应用管理",path:"/dashboard/manage"},{title:"网站监控",path:"https://www.frontjs.com/app/87c1ef7667a513f313b4abb22a88dc78",isExternal:!0}];i.push(...e)}((x=n.data)==null?void 0:x.system)&&(i.splice(0,i.length),i.push({title:"系统管理",path:"/dashboard/config"})),C()})}),(n,_)=>{const E=W("router-link"),w=me,M=ye,x=Ce,e=ke,T=W("router-view");return d(),f("div",_t,[o("div",ft,[o("div",ht,[o("div",vt,[l(E,{to:"/"},{default:p(()=>[mt]),_:1})]),c(a)?(d(),f("input",gt)):$("",!0),o("nav",null,[c(a)?(d(),f("label",wt,[bt,B(" "+y(g.value),1)])):$("",!0),(d(!0),f(P,null,Q(i,(oe,H)=>(d(),f("label",{key:H,for:"navActive",class:D(["nav-item",{active:h.value===H}]),onClick:Ht=>u(H)},y(oe.title),11,$t))),128)),c(a)?(d(),f("label",{key:1,for:"navActive",class:"nav-item",onClick:v},[yt,l(w,{size:"16"},{default:p(()=>[Ct]),_:1})])):$("",!0)]),kt]),o("span",Et,[c(a)?(d(),K(q,{key:0,class:"mobile-message-bell"})):$("",!0),o("label",Mt,[l(w,{size:"32"},{default:p(()=>[l(c(ot))]),_:1})])]),c(a)?$("",!0):(d(),f("div",xt,[l(q),Vt,l(e,{class:"exit"},{dropdown:p(()=>[l(x,null,{default:p(()=>[l(M,{icon:c(Qe),onClick:v},{default:p(()=>[B(" 退出 ")]),_:1},8,["icon"])]),_:1})]),default:p(()=>[o("span",St,[o("span",At,y(g.value),1),l(w,null,{default:p(()=>[l(c($e))]),_:1})])]),_:1})]))]),l(T),o("div",null,[l(he,{type:"dashboard"})])])}}}),Ut=z(Bt,[["__scopeId","data-v-a61daf72"]]);export{Ut as default};
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import{J as se,K as R,L as b,M as ae,N as ne,d as k,O as V,Q as le,r as A,k as c,R as re,a as d,D as K,w as p,c as f,H as D,t as y,S as $,T as U,e as B,V as ie,W as pe,X as ce,Y as de,g as L,b as o,Z as N,$ as J,F as P,C as Q,s as F,j as l,a0 as X,x as Y,_ as z,a1 as G,o as ee,a2 as ue,u as _e,h as fe,U as O,i as W,a3 as he,E as ve,I as me,p as ge,f as we}from"./index-D80lTVeV.js";import{u as te,E as be}from"./el-dialog-C9wNxcPt.js";import{d as I,a as $e,E as ye,b as Ce,c as ke}from"./el-dropdown-item-jbdZL0Yj.js";import{E as Ee,a as Me}from"./el-tab-pane-NvGl_NI0.js";import{E as xe}from"./index-Byzqqd86.js";import"./index-BUF8Xxid.js";import"./aria-nkjrUMQ-.js";import"./validator-CZlzBDi2.js";const Ve=se({trigger:R.trigger,placement:I.placement,disabled:R.disabled,visible:b.visible,transition:b.transition,popperOptions:I.popperOptions,tabindex:I.tabindex,content:b.content,popperStyle:b.popperStyle,popperClass:b.popperClass,enterable:{...b.enterable,default:!0},effect:{...b.effect,default:"light"},teleported:b.teleported,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},"onUpdate:visible":{type:Function}}),Se={"update:visible":r=>ae(r),"before-enter":()=>!0,"before-leave":()=>!0,"after-enter":()=>!0,"after-leave":()=>!0},Ae={name:"ElPopover"},Be=k({...Ae,props:Ve,emits:Se,setup(r,{expose:a,emit:t}){const s=r,m="onUpdate:visible",i=V(()=>s[m]),h=le("popover"),u=A(),v=V(()=>{var e;return(e=c(u))==null?void 0:e.popperRef}),g=V(()=>[{width:re(s.width)},s.popperStyle]),C=V(()=>[h.b(),s.popperClass,{[h.m("plain")]:!!s.content}]),n=V(()=>s.transition==="el-fade-in-linear"),_=()=>{var e;(e=u.value)==null||e.hide()},E=()=>{t("before-enter")},w=()=>{t("before-leave")},M=()=>{t("after-enter")},x=()=>{t("update:visible",!1),t("after-leave")};return a({popperRef:v,hide:_}),(e,T)=>(d(),K(c(pe),ie({ref_key:"tooltipRef",ref:u},e.$attrs,{trigger:e.trigger,placement:e.placement,disabled:e.disabled,visible:e.visible,transition:e.transition,"popper-options":e.popperOptions,tabindex:e.tabindex,content:e.content,offset:e.offset,"show-after":e.showAfter,"hide-after":e.hideAfter,"auto-close":e.autoClose,"show-arrow":e.showArrow,"aria-label":e.title,effect:e.effect,enterable:e.enterable,"popper-class":c(C),"popper-style":c(g),teleported:e.teleported,persistent:e.persistent,"gpu-acceleration":c(n),"onUpdate:visible":c(i),onBeforeShow:E,onBeforeHide:w,onShow:M,onHide:x}),{content:p(()=>[e.title?(d(),f("div",{key:0,class:D(c(h).e("title")),role:"title"},y(e.title),3)):$("v-if",!0),U(e.$slots,"default",{},()=>[B(y(e.content),1)])]),default:p(()=>[e.$slots.reference?U(e.$slots,"reference",{key:0}):$("v-if",!0)]),_:3},16,["trigger","placement","disabled","visible","transition","popper-options","tabindex","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","persistent","gpu-acceleration","onUpdate:visible"]))}});var He=ne(Be,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popover/src/popover.vue"]]);const Z=(r,a)=>{const t=a.arg||a.value,s=t==null?void 0:t.popperRef;s&&(s.triggerRef=r)};var Ie={mounted(r,a){Z(r,a)},updated(r,a){Z(r,a)}};const Pe="popover",De=ce(Ie,Pe),Le=de(He,{directive:De}),Ne=k({name:"Bell"}),ze={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Te=o("path",{fill:"currentColor",d:"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64z"},null,-1),Re=o("path",{fill:"currentColor",d:"M256 768h512V448a256 256 0 1 0-512 0v320zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320z"},null,-1),Ue=o("path",{fill:"currentColor",d:"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm352 128h128a64 64 0 0 1-128 0z"},null,-1),Fe=[Te,Re,Ue];function Oe(r,a,t,s,m,i){return d(),f("svg",ze,Fe)}var We=L(Ne,[["render",Oe]]);const Ze=k({name:"Close"}),je={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},qe=o("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"},null,-1),Ke=[qe];function Je(r,a,t,s,m,i){return d(),f("svg",je,Ke)}var Qe=L(Ze,[["render",Je]]);const Xe=k({name:"Expand"}),Ye={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Ge=o("path",{fill:"currentColor",d:"M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352 192 160-192 128V352z"},null,-1),et=[Ge];function tt(r,a,t,s,m,i){return d(),f("svg",Ye,et)}var ot=L(Xe,[["render",tt]]);const st={key:0,class:"empty"},at={class:"message-list"},nt=["onClick"],lt={class:"text"},rt={class:"date"},it=["innerHTML"],pt={class:"dialog-date"},ct=k({__name:"index",props:{data:{},autoShow:{type:Boolean}},setup(r){const a=r,t=N({show:!1,title:"系统消息",text:"内容"}),s=A(null);function m(u){s.value=u,t.text=u.text,t.title=u.type===0?"【系统消息】":"【私信】",t.show=!0}function i(){if(s.value.read){t.show=!1;return}X.readMessage(s.value.id).then(()=>{s.value.read=!0,t.show=!1})}J(()=>a.data.length,()=>{if(!a.autoShow)return;const u=a.data.find(v=>!v.read);u&&m(u)});const h=te();return(u,v)=>{const g=Y,C=be;return d(),f(P,null,[u.data.length?$("",!0):(d(),f("div",st," 暂无更多消息 ღ( ´・ᴗ・` )比心 ")),o("ul",at,[(d(!0),f(P,null,Q(u.data,n=>(d(),f("li",{key:n.id,class:D({read:n.read}),onClick:_=>m(n)},[o("p",lt,y(n.text),1),o("p",rt,y(c(F)(new Date(n.date))),1)],10,nt))),128))]),l(C,{modelValue:t.show,"onUpdate:modelValue":v[1]||(v[1]=n=>t.show=n),center:"","show-close":"","append-to-body":"","close-on-click-modal":!1,title:t.title,width:"30%",fullscreen:c(h)},{footer:p(()=>[o("p",pt," 时间:"+y(c(F)(new Date(s.value.date))),1),o("span",null,[l(g,{type:"default",onClick:v[0]||(v[0]=()=>{t.show=!1})},{default:p(()=>[B(" 下次提醒 ")]),_:1}),l(g,{type:"primary",onClick:i},{default:p(()=>[B(" 确定 ")]),_:1})])]),default:p(()=>[o("div",{class:"message-text",innerHTML:t.text},null,8,it)]),_:1},8,["modelValue","title","fullscreen"])],64)}}}),j=z(ct,[["__scopeId","data-v-7988765c"]]),dt={class:"message-panel"},ut=k({__name:"index",setup(r){const a=A("all"),t=N([]),s=V(()=>t.filter(i=>!i.read)),m=G();return ee(()=>{m.name!=="config"&&X.getMessageList().then(i=>{t.push(...i.data)})}),(i,h)=>{const u=Y,v=ue,g=Ee,C=Me,n=Le;return d(),f("div",dt,[l(n,{placement:"bottom-end",width:375,trigger:"hover"},{reference:p(()=>[l(v,{value:s.value.length||"",max:99},{default:p(()=>[l(u,{icon:c(We),circle:""},null,8,["icon"])]),_:1},8,["value"])]),default:p(()=>[o("div",null,[l(C,{modelValue:a.value,"onUpdate:modelValue":h[0]||(h[0]=_=>a.value=_)},{default:p(()=>[l(g,{label:"未读 ".concat(s.value.length||""),name:"no"},{default:p(()=>[l(j,{"auto-show":"",data:s.value},null,8,["data"])]),_:1},8,["label"]),l(g,{label:"全部 ".concat(t.length||""),name:"all"},{default:p(()=>[l(j,{data:t},null,8,["data"])]),_:1},8,["label"])]),_:1},8,["modelValue"])])]),_:1})])}}}),q=z(ut,[["__scopeId","data-v-9de070a6"]]),S=r=>(ge("data-v-a61daf72"),r=r(),we(),r),_t={class:"dashboard"},ft={class:"pc-nav"},ht={class:"nav"},vt={class:"logo"},mt=S(()=>o("img",{src:"https://img.cdn.sugarat.top/easypicker/EasyPicker.png",alt:"logo"},null,-1)),gt={key:0,id:"navActive",type:"checkbox"},wt={key:0,for:"navActive",class:"nav-item"},bt=S(()=>o("span",null,"Hello💐,",-1)),$t=["onClick"],yt=S(()=>o("span",{style:{"margin-right":"6px"}},"退出",-1)),Ct=S(()=>o("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","data-v-53d86618":""},[o("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M10.6667 2.55473C13.0212 3.58347 14.6667 5.93291 14.6667 8.66667C14.6667 12.3486 11.6819 15.3333 8 15.3333C4.3181 15.3333 1.33333 12.3486 1.33333 8.66667C1.33333 5.93291 2.97879 3.58347 5.33333 2.55473V4.04684C3.7392 4.969 2.66667 6.69259 2.66667 8.66667C2.66667 11.6122 5.05448 14 8 14C10.9455 14 13.3333 11.6122 13.3333 8.66667C13.3333 6.69259 12.2608 4.969 10.6667 4.04684V2.55473ZM7.33333 8.66667V1.33333C7.33333 1.14924 7.48257 1 7.66667 1H8.33333C8.51743 1 8.66667 1.14924 8.66667 1.33333V8.66667C8.66667 8.85076 8.51743 9 8.33333 9H7.66667C7.48257 9 7.33333 8.85076 7.33333 8.66667Z",fill:"#86909C","data-v-53d86618":""})],-1)),kt=S(()=>o("div",{class:"mask"},null,-1)),Et={id:"navMenu"},Mt={for:"navActive"},xt={key:0,class:"flex fac"},Vt=S(()=>o("span",null,"Hello 💐,",-1)),St={class:"exit-info"},At={class:"ellipsis"},Bt=k({__name:"index",setup(r){const a=te(),t=_e(),s=fe(),m=G(),i=N([{title:"文件管理",path:"/dashboard/files"},{title:"任务管理",path:"/dashboard/tasks"}]),h=A(0);function u(n){const _=i[n];!_.isExternal&&n!==h.value&&t.push({path:_.path}),_.isExternal&&window.open(_.path,"_blank")}J(()=>m.path,n=>{const _=i.findIndex(E=>n.startsWith(E.path));_!==-1&&(h.value=_)});function v(){xe.confirm("确认退出登录?","登出提示",{draggable:!0}).then(()=>{O.logout().finally(()=>{s.commit("user/setToken",null),t.replace({name:"home"})})}).catch(()=>{ve.info("取消")})}const g=A("World");function C(){h.value=i.findIndex(n=>m.path.startsWith(n.path))}return ee(()=>{O.checkPower().then(n=>{var w,M,x;const _=(w=n.data)==null?void 0:w.power;if(g.value=(M=n.data)==null?void 0:M.name,s.commit("user/setSuperAdmin",_),_){const e=[{title:"应用管理",path:"/dashboard/manage"},{title:"网站监控",path:"https://www.frontjs.com/app/87c1ef7667a513f313b4abb22a88dc78",isExternal:!0}];i.push(...e)}((x=n.data)==null?void 0:x.system)&&(i.splice(0,i.length),i.push({title:"系统管理",path:"/dashboard/config"})),C()})}),(n,_)=>{const E=W("router-link"),w=me,M=ye,x=Ce,e=ke,T=W("router-view");return d(),f("div",_t,[o("div",ft,[o("div",ht,[o("div",vt,[l(E,{to:"/"},{default:p(()=>[mt]),_:1})]),c(a)?(d(),f("input",gt)):$("",!0),o("nav",null,[c(a)?(d(),f("label",wt,[bt,B(" "+y(g.value),1)])):$("",!0),(d(!0),f(P,null,Q(i,(oe,H)=>(d(),f("label",{key:H,for:"navActive",class:D(["nav-item",{active:h.value===H}]),onClick:Ht=>u(H)},y(oe.title),11,$t))),128)),c(a)?(d(),f("label",{key:1,for:"navActive",class:"nav-item",onClick:v},[yt,l(w,{size:"16"},{default:p(()=>[Ct]),_:1})])):$("",!0)]),kt]),o("span",Et,[c(a)?(d(),K(q,{key:0,class:"mobile-message-bell"})):$("",!0),o("label",Mt,[l(w,{size:"32"},{default:p(()=>[l(c(ot))]),_:1})])]),c(a)?$("",!0):(d(),f("div",xt,[l(q),Vt,l(e,{class:"exit"},{dropdown:p(()=>[l(x,null,{default:p(()=>[l(M,{icon:c(Qe),onClick:v},{default:p(()=>[B(" 退出 ")]),_:1},8,["icon"])]),_:1})]),default:p(()=>[o("span",St,[o("span",At,y(g.value),1),l(w,null,{default:p(()=>[l(c($e))]),_:1})])]),_:1})]))]),l(T),o("div",null,[l(he,{type:"dashboard"})])])}}}),Ut=z(Bt,[["__scopeId","data-v-a61daf72"]]);export{Ut as default};
|
|
2
|
+
//# sourceMappingURL=index-Dj5caLYF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-Lsr6KH3b.js","sources":["../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/popover.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/popover2.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/directive.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/index.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/bell.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/close.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/expand.mjs","../../src/components/MessageList/index.vue","../../src/components/MessagePanel/index.vue","../../src/pages/dashboard/index.vue"],"sourcesContent":["import '../../../utils/index.mjs';\nimport '../../tooltip/index.mjs';\nimport '../../dropdown/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useTooltipTriggerProps, useTooltipContentProps } from '../../tooltip/src/tooltip.mjs';\nimport { dropdownProps } from '../../dropdown/src/dropdown.mjs';\nimport { isBoolean } from '@vueuse/core';\n\nconst popoverProps = buildProps({\n trigger: useTooltipTriggerProps.trigger,\n placement: dropdownProps.placement,\n disabled: useTooltipTriggerProps.disabled,\n visible: useTooltipContentProps.visible,\n transition: useTooltipContentProps.transition,\n popperOptions: dropdownProps.popperOptions,\n tabindex: dropdownProps.tabindex,\n content: useTooltipContentProps.content,\n popperStyle: useTooltipContentProps.popperStyle,\n popperClass: useTooltipContentProps.popperClass,\n enterable: {\n ...useTooltipContentProps.enterable,\n default: true\n },\n effect: {\n ...useTooltipContentProps.effect,\n default: \"light\"\n },\n teleported: useTooltipContentProps.teleported,\n title: String,\n width: {\n type: [String, Number],\n default: 150\n },\n offset: {\n type: Number,\n default: void 0\n },\n showAfter: {\n type: Number,\n default: 0\n },\n hideAfter: {\n type: Number,\n default: 200\n },\n autoClose: {\n type: Number,\n default: 0\n },\n showArrow: {\n type: Boolean,\n default: true\n },\n persistent: {\n type: Boolean,\n default: true\n },\n \"onUpdate:visible\": {\n type: Function\n }\n});\nconst popoverEmits = {\n \"update:visible\": (value) => isBoolean(value),\n \"before-enter\": () => true,\n \"before-leave\": () => true,\n \"after-enter\": () => true,\n \"after-leave\": () => true\n};\n\nexport { popoverEmits, popoverProps };\n//# sourceMappingURL=popover.mjs.map\n","import { defineComponent, computed, ref, unref, openBlock, createBlock, mergeProps, withCtx, createElementBlock, normalizeClass, toDisplayString, createCommentVNode, renderSlot, createTextVNode } from 'vue';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { popoverProps, popoverEmits } from './popover.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\n\nconst __default__ = {\n name: \"ElPopover\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: popoverProps,\n emits: popoverEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const updateEventKeyRaw = `onUpdate:visible`;\n const onUpdateVisible = computed(() => {\n return props[updateEventKeyRaw];\n });\n const ns = useNamespace(\"popover\");\n const tooltipRef = ref();\n const popperRef = computed(() => {\n var _a;\n return (_a = unref(tooltipRef)) == null ? void 0 : _a.popperRef;\n });\n const style = computed(() => {\n return [\n {\n width: addUnit(props.width)\n },\n props.popperStyle\n ];\n });\n const kls = computed(() => {\n return [ns.b(), props.popperClass, { [ns.m(\"plain\")]: !!props.content }];\n });\n const gpuAcceleration = computed(() => {\n return props.transition === \"el-fade-in-linear\";\n });\n const hide = () => {\n var _a;\n (_a = tooltipRef.value) == null ? void 0 : _a.hide();\n };\n const beforeEnter = () => {\n emit(\"before-enter\");\n };\n const beforeLeave = () => {\n emit(\"before-leave\");\n };\n const afterEnter = () => {\n emit(\"after-enter\");\n };\n const afterLeave = () => {\n emit(\"update:visible\", false);\n emit(\"after-leave\");\n };\n expose({\n popperRef,\n hide\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTooltip), mergeProps({\n ref_key: \"tooltipRef\",\n ref: tooltipRef\n }, _ctx.$attrs, {\n trigger: _ctx.trigger,\n placement: _ctx.placement,\n disabled: _ctx.disabled,\n visible: _ctx.visible,\n transition: _ctx.transition,\n \"popper-options\": _ctx.popperOptions,\n tabindex: _ctx.tabindex,\n content: _ctx.content,\n offset: _ctx.offset,\n \"show-after\": _ctx.showAfter,\n \"hide-after\": _ctx.hideAfter,\n \"auto-close\": _ctx.autoClose,\n \"show-arrow\": _ctx.showArrow,\n \"aria-label\": _ctx.title,\n effect: _ctx.effect,\n enterable: _ctx.enterable,\n \"popper-class\": unref(kls),\n \"popper-style\": unref(style),\n teleported: _ctx.teleported,\n persistent: _ctx.persistent,\n \"gpu-acceleration\": unref(gpuAcceleration),\n \"onUpdate:visible\": unref(onUpdateVisible),\n onBeforeShow: beforeEnter,\n onBeforeHide: beforeLeave,\n onShow: afterEnter,\n onHide: afterLeave\n }), {\n content: withCtx(() => [\n _ctx.title ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"title\")),\n role: \"title\"\n }, toDisplayString(_ctx.title), 3)) : createCommentVNode(\"v-if\", true),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(_ctx.content), 1)\n ])\n ]),\n default: withCtx(() => [\n _ctx.$slots.reference ? renderSlot(_ctx.$slots, \"reference\", { key: 0 }) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 16, [\"trigger\", \"placement\", \"disabled\", \"visible\", \"transition\", \"popper-options\", \"tabindex\", \"content\", \"offset\", \"show-after\", \"hide-after\", \"auto-close\", \"show-arrow\", \"aria-label\", \"effect\", \"enterable\", \"popper-class\", \"popper-style\", \"teleported\", \"persistent\", \"gpu-acceleration\", \"onUpdate:visible\"]);\n };\n }\n});\nvar Popover = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"/home/runner/work/element-plus/element-plus/packages/components/popover/src/popover.vue\"]]);\n\nexport { Popover as default };\n//# sourceMappingURL=popover2.mjs.map\n","const attachEvents = (el, binding) => {\n const popperComponent = binding.arg || binding.value;\n const popover = popperComponent == null ? void 0 : popperComponent.popperRef;\n if (popover) {\n popover.triggerRef = el;\n }\n};\nvar PopoverDirective = {\n mounted(el, binding) {\n attachEvents(el, binding);\n },\n updated(el, binding) {\n attachEvents(el, binding);\n }\n};\nconst VPopover = \"popover\";\n\nexport { VPopover, PopoverDirective as default };\n//# sourceMappingURL=directive.mjs.map\n","import '../../utils/index.mjs';\nimport Popover from './src/popover2.mjs';\nimport PopoverDirective, { VPopover } from './src/directive.mjs';\nexport { popoverEmits, popoverProps } from './src/popover.mjs';\nimport { withInstallDirective, withInstall } from '../../utils/vue/install.mjs';\n\nconst ElPopoverDirective = withInstallDirective(PopoverDirective, VPopover);\nconst ElPopover = withInstall(Popover, {\n directive: ElPopoverDirective\n});\n\nexport { ElPopover, ElPopoverDirective, ElPopover as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Bell\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M256 768h512V448a256 256 0 1 0-512 0v320zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320z\"\n}, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm352 128h128a64 64 0 0 1-128 0z\"\n}, null, -1);\nconst _hoisted_5 = [\n _hoisted_2,\n _hoisted_3,\n _hoisted_4\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_5);\n}\nvar bell = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { bell as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Close\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar close = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { close as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Expand\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352 192 160-192 128V352z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar expand = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { expand as default };\n","<script lang=\"ts\" setup>\nimport { reactive, ref, watch } from 'vue'\nimport { formatDate } from '@/utils/stringUtil'\nimport { SuperUserApi } from '@/apis'\nimport { useIsMobile } from '@/composables'\n\nconst props = defineProps<{\n data: SuperUserApiTypes.MessageItem[]\n autoShow?: boolean\n}>()\n\nconst dialogMessage = reactive({\n show: false,\n title: '系统消息',\n text: '内容',\n})\nconst activeMessage = ref<SuperUserApiTypes.MessageItem>(null)\nfunction handleViewDialogMessage(v: SuperUserApiTypes.MessageItem) {\n activeMessage.value = v\n dialogMessage.text = v.text\n // TODO: 魔法数字问题\n // TODO:支持更多的消息类型\n dialogMessage.title = v.type === 0 ? '【系统消息】' : '【私信】'\n dialogMessage.show = true\n}\n\nfunction readMessage() {\n if (activeMessage.value.read) {\n dialogMessage.show = false\n return\n }\n SuperUserApi.readMessage(activeMessage.value.id).then(() => {\n activeMessage.value.read = true\n dialogMessage.show = false\n })\n}\n\nwatch(\n () => props.data.length,\n () => {\n if (!props.autoShow) {\n return\n }\n const showItem = props.data.find(v => !v.read)\n if (showItem) {\n handleViewDialogMessage(showItem)\n }\n },\n)\n\nconst isMobile = useIsMobile()\n</script>\n\n<template>\n <div v-if=\"!data.length\" class=\"empty\">\n 暂无更多消息 ღ( ´・ᴗ・` )比心\n </div>\n <ul class=\"message-list\">\n <li\n v-for=\"d in data\"\n :key=\"d.id\"\n :class=\"{\n read: d.read,\n }\"\n @click=\"handleViewDialogMessage(d)\"\n >\n <p class=\"text\">\n {{ d.text }}\n </p>\n <p class=\"date\">\n {{ formatDate(new Date(d.date)) }}\n </p>\n </li>\n </ul>\n <el-dialog\n v-model=\"dialogMessage.show\"\n center\n show-close\n append-to-body\n :close-on-click-modal=\"false\"\n :title=\"dialogMessage.title\"\n width=\"30%\"\n :fullscreen=\"isMobile\"\n >\n <div class=\"message-text\" v-html=\"dialogMessage.text\" />\n <template #footer>\n <p class=\"dialog-date\">\n 时间:{{ formatDate(new Date(activeMessage.date)) }}\n </p>\n <span>\n <el-button\n type=\"default\"\n @click=\"\n () => {\n dialogMessage.show = false\n }\n \"\n >\n 下次提醒\n </el-button>\n <el-button type=\"primary\" @click=\"readMessage\"> 确定 </el-button>\n </span>\n </template>\n </el-dialog>\n</template>\n\n<style lang=\"scss\" scoped>\n.message-list {\n list-style: none;\n max-height: 500px;\n overflow-y: scroll;\n li {\n border-bottom: 1px solid #ddd;\n padding: 10px;\n cursor: pointer;\n &.read {\n opacity: 0.5;\n &:hover {\n opacity: 0.9;\n }\n }\n &:last-child {\n border-bottom: none;\n }\n\n p.text {\n font-size: 16px;\n display: -webkit-box;\n overflow: hidden;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n p.date {\n font-size: 14px;\n margin-top: 4px;\n }\n }\n}\n.empty {\n text-align: center;\n padding: 10px;\n}\n\n.dialog-date {\n font-size: 14px;\n text-align: right;\n padding: 10px;\n color: grey;\n}\n</style>\n\n<style lang=\"scss\">\n.message-text {\n overflow-y: scroll;\n max-height: 500px;\n ul,\n ol {\n list-style: none;\n }\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { Bell } from '@element-plus/icons-vue'\nimport { computed, reactive, onMounted, ref } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SuperUserApi } from '@/apis'\nimport MessageList from '@/components/MessageList/index.vue'\n\nconst activeTab = ref<'all' | 'no'>('all')\nconst messageData = reactive<SuperUserApiTypes.MessageItem[]>([])\n\nconst noReadMessage = computed(() => messageData.filter((v) => !v.read))\nconst route = useRoute()\nonMounted(() => {\n if (route.name !== 'config') {\n SuperUserApi.getMessageList().then((v) => {\n messageData.push(...v.data)\n })\n }\n})\n</script>\n<template>\n <div class=\"message-panel\">\n <el-popover placement=\"bottom-end\" :width=\"375\" trigger=\"hover\">\n <template #reference>\n <el-badge :value=\"noReadMessage.length || ''\" :max=\"99\">\n <el-button :icon=\"Bell\" circle />\n </el-badge>\n </template>\n <div>\n <el-tabs v-model=\"activeTab\">\n <el-tab-pane :label=\"`未读 ${noReadMessage.length || ''}`\" name=\"no\">\n <message-list auto-show :data=\"noReadMessage\" />\n </el-tab-pane>\n <el-tab-pane :label=\"`全部 ${messageData.length || ''}`\" name=\"all\">\n <message-list :data=\"messageData\" />\n </el-tab-pane>\n </el-tabs>\n </div>\n </el-popover>\n </div>\n</template>\n<style lang=\"scss\" scoped>\n.message-panel {\n margin-right: 10px;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { ArrowDown, Close, Expand } from '@element-plus/icons-vue'\nimport HomeFooter from '@components/HomeFooter/index.vue'\n\nimport { onMounted, reactive, ref, watch } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useStore } from 'vuex'\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport MessagePanel from '@/components/MessagePanel/index.vue'\nimport { UserApi } from '@/apis'\nimport { useIsMobile } from '@/composables'\n\nconst isMobile = useIsMobile()\n\nconst $router = useRouter()\nconst $store = useStore()\nconst $route = useRoute()\nconst navList = reactive<\n { title: string, path: string, isExternal?: boolean }[]\n>([\n {\n title: '文件管理',\n path: '/dashboard/files',\n },\n {\n title: '任务管理',\n path: '/dashboard/tasks',\n },\n])\nconst navActiveIdx = ref(0)\nfunction handleNav(idx: number) {\n const n = navList[idx]\n if (!n.isExternal && idx !== navActiveIdx.value) {\n $router.push({\n path: n.path,\n })\n }\n if (n.isExternal) {\n window.open(n.path, '_blank')\n }\n}\n\n// 自动切换激活的标题栏\nwatch(\n () => $route.path,\n (path: string) => {\n const idx = navList.findIndex(n => path.startsWith(n.path))\n if (idx !== -1) {\n navActiveIdx.value = idx\n }\n },\n)\n\nfunction handleLogout() {\n ElMessageBox.confirm('确认退出登录?', '登出提示', {\n draggable: true,\n })\n .then(() => {\n // 登出接口\n UserApi.logout().finally(() => {\n $store.commit('user/setToken', null)\n $router.replace({\n name: 'home',\n })\n })\n })\n .catch(() => {\n ElMessage.info('取消')\n })\n}\nconst userName = ref('World')\n\nfunction refreshActiveTab() {\n // 动态修改active的项\n navActiveIdx.value = navList.findIndex(v => $route.path.startsWith(v.path))\n}\nonMounted(() => {\n // 动态添加管理页面入口\n UserApi.checkPower().then((r) => {\n const isSuperAdmin = r.data?.power\n userName.value = r.data?.name\n $store.commit('user/setSuperAdmin', isSuperAdmin)\n if (isSuperAdmin) {\n const superNavList = [\n {\n title: '应用管理',\n path: '/dashboard/manage',\n },\n {\n title: '网站监控',\n path: 'https://www.frontjs.com/app/87c1ef7667a513f313b4abb22a88dc78',\n isExternal: true,\n },\n ]\n navList.push(...superNavList)\n }\n const isSystem = r.data?.system\n if (isSystem) {\n navList.splice(0, navList.length)\n navList.push({\n title: '系统管理',\n path: '/dashboard/config',\n })\n }\n refreshActiveTab()\n })\n})\n</script>\n\n<template>\n <div class=\"dashboard\">\n <div class=\"pc-nav\">\n <div class=\"nav\">\n <!-- LOGO -->\n <div class=\"logo\">\n <router-link to=\"/\">\n <img\n src=\"https://img.cdn.sugarat.top/easypicker/EasyPicker.png\"\n alt=\"logo\"\n >\n </router-link>\n </div>\n <input v-if=\"isMobile\" id=\"navActive\" type=\"checkbox\">\n <nav>\n <label v-if=\"isMobile\" for=\"navActive\" class=\"nav-item\">\n <span>Hello💐,</span>\n {{ userName }}\n </label>\n <label\n v-for=\"(n, idx) in navList\"\n :key=\"idx\"\n for=\"navActive\"\n class=\"nav-item\"\n :class=\"{\n active: navActiveIdx === idx,\n }\"\n @click=\"handleNav(idx)\"\n >{{ n.title }}</label>\n <label\n v-if=\"isMobile\"\n for=\"navActive\"\n class=\"nav-item\"\n @click=\"handleLogout\"\n >\n <span style=\"margin-right: 6px\">退出</span>\n <el-icon size=\"16\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-v-53d86618\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.6667 2.55473C13.0212 3.58347 14.6667 5.93291 14.6667 8.66667C14.6667 12.3486 11.6819 15.3333 8 15.3333C4.3181 15.3333 1.33333 12.3486 1.33333 8.66667C1.33333 5.93291 2.97879 3.58347 5.33333 2.55473V4.04684C3.7392 4.969 2.66667 6.69259 2.66667 8.66667C2.66667 11.6122 5.05448 14 8 14C10.9455 14 13.3333 11.6122 13.3333 8.66667C13.3333 6.69259 12.2608 4.969 10.6667 4.04684V2.55473ZM7.33333 8.66667V1.33333C7.33333 1.14924 7.48257 1 7.66667 1H8.33333C8.51743 1 8.66667 1.14924 8.66667 1.33333V8.66667C8.66667 8.85076 8.51743 9 8.33333 9H7.66667C7.48257 9 7.33333 8.85076 7.33333 8.66667Z\"\n fill=\"#86909C\"\n data-v-53d86618\n />\n </svg>\n </el-icon>\n </label>\n </nav>\n <div class=\"mask\" />\n </div>\n <!-- 移动端展示 -->\n <span id=\"navMenu\">\n <MessagePanel v-if=\"isMobile\" class=\"mobile-message-bell\" />\n <label for=\"navActive\">\n <el-icon size=\"32\">\n <Expand />\n </el-icon>\n </label>\n </span>\n <div v-if=\"!isMobile\" class=\"flex fac\">\n <MessagePanel />\n <span>Hello 💐,</span>\n <el-dropdown class=\"exit\">\n <span class=\"exit-info\">\n <span class=\"ellipsis\">{{ userName }}</span>\n <el-icon>\n <ArrowDown />\n </el-icon>\n </span>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item :icon=\"Close\" @click=\"handleLogout\">\n 退出\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n </div>\n <router-view />\n <div>\n <HomeFooter type=\"dashboard\" />\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.dashboard {\n background-color: #fafafa;\n}\n.pc-nav {\n background-color: #fff;\n display: flex;\n padding: 10px;\n justify-content: space-between;\n align-items: center;\n .exit {\n cursor: pointer;\n display: flex;\n align-items: center;\n .exit-info {\n display: flex;\n justify-content: center;\n align-items: center;\n > span {\n margin-right: 5px;\n display: block;\n max-width: 70px;\n }\n }\n }\n .nav {\n display: flex;\n nav {\n display: flex;\n align-items: center;\n .nav-item {\n font-size: 1rem;\n color: #595959;\n padding: 10px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n &.active {\n color: #409eff !important;\n font-weight: 600;\n }\n }\n }\n .exit {\n color: #595959;\n }\n }\n .logo {\n width: 180px;\n margin: 0 10px;\n img {\n height: 40px;\n }\n }\n}\n#navActive {\n display: none;\n opacity: 0;\n}\n#navMenu {\n display: none;\n}\n.mobile-message-bell {\n display: none;\n position: fixed;\n right: 0;\n top: 0;\n}\n@media screen and (max-width: 700px) {\n #navActive {\n display: block;\n position: fixed;\n left: 0;\n top: 0;\n }\n .mobile-message-bell {\n display: block;\n }\n #navMenu {\n cursor: pointer;\n display: block;\n position: absolute;\n left: 10px;\n top: 5px;\n font-size: 2rem;\n }\n .pc-nav {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n z-index: 6;\n .nav {\n flex-wrap: wrap;\n width: 100%;\n .logo {\n width: 100%;\n text-align: center;\n }\n }\n #navActive {\n & + nav {\n display: none;\n }\n }\n #navActive:checked {\n & + nav {\n display: flex;\n flex-direction: column;\n width: 100%;\n position: absolute;\n z-index: 1;\n background: #fff;\n left: 0;\n top: 50px;\n + .mask {\n display: block;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 50px;\n background-color: rgba(0, 0, 0, 0.5);\n }\n }\n }\n .exit {\n position: absolute;\n right: 10px;\n top: 20px;\n }\n }\n}\n</style>\n"],"names":["popoverProps","buildProps","useTooltipTriggerProps","dropdownProps","useTooltipContentProps","popoverEmits","value","isBoolean","__default__","_sfc_main","defineComponent","__props","expose","emit","props","updateEventKeyRaw","onUpdateVisible","computed","ns","useNamespace","tooltipRef","ref","popperRef","_a","unref","style","addUnit","kls","gpuAcceleration","hide","beforeEnter","beforeLeave","afterEnter","afterLeave","_ctx","_cache","openBlock","createBlock","ElTooltip","mergeProps","withCtx","createElementBlock","normalizeClass","toDisplayString","createCommentVNode","renderSlot","createTextVNode","Popover","_export_sfc","attachEvents","el","binding","popperComponent","popover","PopoverDirective","VPopover","ElPopoverDirective","withInstallDirective","ElPopover","withInstall","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_render","$props","$setup","$data","$options","bell","close","expand","dialogMessage","reactive","activeMessage","handleViewDialogMessage","v","readMessage","SuperUserApi","watch","showItem","isMobile","useIsMobile","activeTab","messageData","noReadMessage","route","useRoute","onMounted","$router","useRouter","$store","useStore","$route","navList","navActiveIdx","handleNav","idx","n","path","handleLogout","ElMessageBox","UserApi","ElMessage","userName","refreshActiveTab","r","isSuperAdmin","_b","superNavList","_c"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
|
|
1
|
+
{"version":3,"file":"index-Dj5caLYF.js","sources":["../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/popover.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/popover2.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/directive.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/index.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/bell.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/close.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/expand.mjs","../../src/components/MessageList/index.vue","../../src/components/MessagePanel/index.vue","../../src/pages/dashboard/index.vue"],"sourcesContent":["import '../../../utils/index.mjs';\nimport '../../tooltip/index.mjs';\nimport '../../dropdown/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useTooltipTriggerProps, useTooltipContentProps } from '../../tooltip/src/tooltip.mjs';\nimport { dropdownProps } from '../../dropdown/src/dropdown.mjs';\nimport { isBoolean } from '@vueuse/core';\n\nconst popoverProps = buildProps({\n trigger: useTooltipTriggerProps.trigger,\n placement: dropdownProps.placement,\n disabled: useTooltipTriggerProps.disabled,\n visible: useTooltipContentProps.visible,\n transition: useTooltipContentProps.transition,\n popperOptions: dropdownProps.popperOptions,\n tabindex: dropdownProps.tabindex,\n content: useTooltipContentProps.content,\n popperStyle: useTooltipContentProps.popperStyle,\n popperClass: useTooltipContentProps.popperClass,\n enterable: {\n ...useTooltipContentProps.enterable,\n default: true\n },\n effect: {\n ...useTooltipContentProps.effect,\n default: \"light\"\n },\n teleported: useTooltipContentProps.teleported,\n title: String,\n width: {\n type: [String, Number],\n default: 150\n },\n offset: {\n type: Number,\n default: void 0\n },\n showAfter: {\n type: Number,\n default: 0\n },\n hideAfter: {\n type: Number,\n default: 200\n },\n autoClose: {\n type: Number,\n default: 0\n },\n showArrow: {\n type: Boolean,\n default: true\n },\n persistent: {\n type: Boolean,\n default: true\n },\n \"onUpdate:visible\": {\n type: Function\n }\n});\nconst popoverEmits = {\n \"update:visible\": (value) => isBoolean(value),\n \"before-enter\": () => true,\n \"before-leave\": () => true,\n \"after-enter\": () => true,\n \"after-leave\": () => true\n};\n\nexport { popoverEmits, popoverProps };\n//# sourceMappingURL=popover.mjs.map\n","import { defineComponent, computed, ref, unref, openBlock, createBlock, mergeProps, withCtx, createElementBlock, normalizeClass, toDisplayString, createCommentVNode, renderSlot, createTextVNode } from 'vue';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { popoverProps, popoverEmits } from './popover.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\n\nconst __default__ = {\n name: \"ElPopover\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: popoverProps,\n emits: popoverEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const updateEventKeyRaw = `onUpdate:visible`;\n const onUpdateVisible = computed(() => {\n return props[updateEventKeyRaw];\n });\n const ns = useNamespace(\"popover\");\n const tooltipRef = ref();\n const popperRef = computed(() => {\n var _a;\n return (_a = unref(tooltipRef)) == null ? void 0 : _a.popperRef;\n });\n const style = computed(() => {\n return [\n {\n width: addUnit(props.width)\n },\n props.popperStyle\n ];\n });\n const kls = computed(() => {\n return [ns.b(), props.popperClass, { [ns.m(\"plain\")]: !!props.content }];\n });\n const gpuAcceleration = computed(() => {\n return props.transition === \"el-fade-in-linear\";\n });\n const hide = () => {\n var _a;\n (_a = tooltipRef.value) == null ? void 0 : _a.hide();\n };\n const beforeEnter = () => {\n emit(\"before-enter\");\n };\n const beforeLeave = () => {\n emit(\"before-leave\");\n };\n const afterEnter = () => {\n emit(\"after-enter\");\n };\n const afterLeave = () => {\n emit(\"update:visible\", false);\n emit(\"after-leave\");\n };\n expose({\n popperRef,\n hide\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTooltip), mergeProps({\n ref_key: \"tooltipRef\",\n ref: tooltipRef\n }, _ctx.$attrs, {\n trigger: _ctx.trigger,\n placement: _ctx.placement,\n disabled: _ctx.disabled,\n visible: _ctx.visible,\n transition: _ctx.transition,\n \"popper-options\": _ctx.popperOptions,\n tabindex: _ctx.tabindex,\n content: _ctx.content,\n offset: _ctx.offset,\n \"show-after\": _ctx.showAfter,\n \"hide-after\": _ctx.hideAfter,\n \"auto-close\": _ctx.autoClose,\n \"show-arrow\": _ctx.showArrow,\n \"aria-label\": _ctx.title,\n effect: _ctx.effect,\n enterable: _ctx.enterable,\n \"popper-class\": unref(kls),\n \"popper-style\": unref(style),\n teleported: _ctx.teleported,\n persistent: _ctx.persistent,\n \"gpu-acceleration\": unref(gpuAcceleration),\n \"onUpdate:visible\": unref(onUpdateVisible),\n onBeforeShow: beforeEnter,\n onBeforeHide: beforeLeave,\n onShow: afterEnter,\n onHide: afterLeave\n }), {\n content: withCtx(() => [\n _ctx.title ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"title\")),\n role: \"title\"\n }, toDisplayString(_ctx.title), 3)) : createCommentVNode(\"v-if\", true),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(_ctx.content), 1)\n ])\n ]),\n default: withCtx(() => [\n _ctx.$slots.reference ? renderSlot(_ctx.$slots, \"reference\", { key: 0 }) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 16, [\"trigger\", \"placement\", \"disabled\", \"visible\", \"transition\", \"popper-options\", \"tabindex\", \"content\", \"offset\", \"show-after\", \"hide-after\", \"auto-close\", \"show-arrow\", \"aria-label\", \"effect\", \"enterable\", \"popper-class\", \"popper-style\", \"teleported\", \"persistent\", \"gpu-acceleration\", \"onUpdate:visible\"]);\n };\n }\n});\nvar Popover = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"/home/runner/work/element-plus/element-plus/packages/components/popover/src/popover.vue\"]]);\n\nexport { Popover as default };\n//# sourceMappingURL=popover2.mjs.map\n","const attachEvents = (el, binding) => {\n const popperComponent = binding.arg || binding.value;\n const popover = popperComponent == null ? void 0 : popperComponent.popperRef;\n if (popover) {\n popover.triggerRef = el;\n }\n};\nvar PopoverDirective = {\n mounted(el, binding) {\n attachEvents(el, binding);\n },\n updated(el, binding) {\n attachEvents(el, binding);\n }\n};\nconst VPopover = \"popover\";\n\nexport { VPopover, PopoverDirective as default };\n//# sourceMappingURL=directive.mjs.map\n","import '../../utils/index.mjs';\nimport Popover from './src/popover2.mjs';\nimport PopoverDirective, { VPopover } from './src/directive.mjs';\nexport { popoverEmits, popoverProps } from './src/popover.mjs';\nimport { withInstallDirective, withInstall } from '../../utils/vue/install.mjs';\n\nconst ElPopoverDirective = withInstallDirective(PopoverDirective, VPopover);\nconst ElPopover = withInstall(Popover, {\n directive: ElPopoverDirective\n});\n\nexport { ElPopover, ElPopoverDirective, ElPopover as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Bell\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M256 768h512V448a256 256 0 1 0-512 0v320zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320z\"\n}, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm352 128h128a64 64 0 0 1-128 0z\"\n}, null, -1);\nconst _hoisted_5 = [\n _hoisted_2,\n _hoisted_3,\n _hoisted_4\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_5);\n}\nvar bell = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { bell as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Close\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar close = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { close as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Expand\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352 192 160-192 128V352z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar expand = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { expand as default };\n","<script lang=\"ts\" setup>\nimport { reactive, ref, watch } from 'vue'\nimport { formatDate } from '@/utils/stringUtil'\nimport { SuperUserApi } from '@/apis'\nimport { useIsMobile } from '@/composables'\n\nconst props = defineProps<{\n data: SuperUserApiTypes.MessageItem[]\n autoShow?: boolean\n}>()\n\nconst dialogMessage = reactive({\n show: false,\n title: '系统消息',\n text: '内容',\n})\nconst activeMessage = ref<SuperUserApiTypes.MessageItem>(null)\nfunction handleViewDialogMessage(v: SuperUserApiTypes.MessageItem) {\n activeMessage.value = v\n dialogMessage.text = v.text\n // TODO: 魔法数字问题\n // TODO:支持更多的消息类型\n dialogMessage.title = v.type === 0 ? '【系统消息】' : '【私信】'\n dialogMessage.show = true\n}\n\nfunction readMessage() {\n if (activeMessage.value.read) {\n dialogMessage.show = false\n return\n }\n SuperUserApi.readMessage(activeMessage.value.id).then(() => {\n activeMessage.value.read = true\n dialogMessage.show = false\n })\n}\n\nwatch(\n () => props.data.length,\n () => {\n if (!props.autoShow) {\n return\n }\n const showItem = props.data.find(v => !v.read)\n if (showItem) {\n handleViewDialogMessage(showItem)\n }\n },\n)\n\nconst isMobile = useIsMobile()\n</script>\n\n<template>\n <div v-if=\"!data.length\" class=\"empty\">\n 暂无更多消息 ღ( ´・ᴗ・` )比心\n </div>\n <ul class=\"message-list\">\n <li\n v-for=\"d in data\"\n :key=\"d.id\"\n :class=\"{\n read: d.read,\n }\"\n @click=\"handleViewDialogMessage(d)\"\n >\n <p class=\"text\">\n {{ d.text }}\n </p>\n <p class=\"date\">\n {{ formatDate(new Date(d.date)) }}\n </p>\n </li>\n </ul>\n <el-dialog\n v-model=\"dialogMessage.show\"\n center\n show-close\n append-to-body\n :close-on-click-modal=\"false\"\n :title=\"dialogMessage.title\"\n width=\"30%\"\n :fullscreen=\"isMobile\"\n >\n <div class=\"message-text\" v-html=\"dialogMessage.text\" />\n <template #footer>\n <p class=\"dialog-date\">\n 时间:{{ formatDate(new Date(activeMessage.date)) }}\n </p>\n <span>\n <el-button\n type=\"default\"\n @click=\"\n () => {\n dialogMessage.show = false\n }\n \"\n >\n 下次提醒\n </el-button>\n <el-button type=\"primary\" @click=\"readMessage\"> 确定 </el-button>\n </span>\n </template>\n </el-dialog>\n</template>\n\n<style lang=\"scss\" scoped>\n.message-list {\n list-style: none;\n max-height: 500px;\n overflow-y: scroll;\n li {\n border-bottom: 1px solid #ddd;\n padding: 10px;\n cursor: pointer;\n &.read {\n opacity: 0.5;\n &:hover {\n opacity: 0.9;\n }\n }\n &:last-child {\n border-bottom: none;\n }\n\n p.text {\n font-size: 16px;\n display: -webkit-box;\n overflow: hidden;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n p.date {\n font-size: 14px;\n margin-top: 4px;\n }\n }\n}\n.empty {\n text-align: center;\n padding: 10px;\n}\n\n.dialog-date {\n font-size: 14px;\n text-align: right;\n padding: 10px;\n color: grey;\n}\n</style>\n\n<style lang=\"scss\">\n.message-text {\n overflow-y: scroll;\n max-height: 500px;\n ul,\n ol {\n list-style: none;\n }\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { Bell } from '@element-plus/icons-vue'\nimport { computed, reactive, onMounted, ref } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SuperUserApi } from '@/apis'\nimport MessageList from '@/components/MessageList/index.vue'\n\nconst activeTab = ref<'all' | 'no'>('all')\nconst messageData = reactive<SuperUserApiTypes.MessageItem[]>([])\n\nconst noReadMessage = computed(() => messageData.filter((v) => !v.read))\nconst route = useRoute()\nonMounted(() => {\n if (route.name !== 'config') {\n SuperUserApi.getMessageList().then((v) => {\n messageData.push(...v.data)\n })\n }\n})\n</script>\n<template>\n <div class=\"message-panel\">\n <el-popover placement=\"bottom-end\" :width=\"375\" trigger=\"hover\">\n <template #reference>\n <el-badge :value=\"noReadMessage.length || ''\" :max=\"99\">\n <el-button :icon=\"Bell\" circle />\n </el-badge>\n </template>\n <div>\n <el-tabs v-model=\"activeTab\">\n <el-tab-pane :label=\"`未读 ${noReadMessage.length || ''}`\" name=\"no\">\n <message-list auto-show :data=\"noReadMessage\" />\n </el-tab-pane>\n <el-tab-pane :label=\"`全部 ${messageData.length || ''}`\" name=\"all\">\n <message-list :data=\"messageData\" />\n </el-tab-pane>\n </el-tabs>\n </div>\n </el-popover>\n </div>\n</template>\n<style lang=\"scss\" scoped>\n.message-panel {\n margin-right: 10px;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { ArrowDown, Close, Expand } from '@element-plus/icons-vue'\nimport HomeFooter from '@components/HomeFooter/index.vue'\n\nimport { onMounted, reactive, ref, watch } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useStore } from 'vuex'\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport MessagePanel from '@/components/MessagePanel/index.vue'\nimport { UserApi } from '@/apis'\nimport { useIsMobile } from '@/composables'\n\nconst isMobile = useIsMobile()\n\nconst $router = useRouter()\nconst $store = useStore()\nconst $route = useRoute()\nconst navList = reactive<\n { title: string, path: string, isExternal?: boolean }[]\n>([\n {\n title: '文件管理',\n path: '/dashboard/files',\n },\n {\n title: '任务管理',\n path: '/dashboard/tasks',\n },\n])\nconst navActiveIdx = ref(0)\nfunction handleNav(idx: number) {\n const n = navList[idx]\n if (!n.isExternal && idx !== navActiveIdx.value) {\n $router.push({\n path: n.path,\n })\n }\n if (n.isExternal) {\n window.open(n.path, '_blank')\n }\n}\n\n// 自动切换激活的标题栏\nwatch(\n () => $route.path,\n (path: string) => {\n const idx = navList.findIndex(n => path.startsWith(n.path))\n if (idx !== -1) {\n navActiveIdx.value = idx\n }\n },\n)\n\nfunction handleLogout() {\n ElMessageBox.confirm('确认退出登录?', '登出提示', {\n draggable: true,\n })\n .then(() => {\n // 登出接口\n UserApi.logout().finally(() => {\n $store.commit('user/setToken', null)\n $router.replace({\n name: 'home',\n })\n })\n })\n .catch(() => {\n ElMessage.info('取消')\n })\n}\nconst userName = ref('World')\n\nfunction refreshActiveTab() {\n // 动态修改active的项\n navActiveIdx.value = navList.findIndex(v => $route.path.startsWith(v.path))\n}\nonMounted(() => {\n // 动态添加管理页面入口\n UserApi.checkPower().then((r) => {\n const isSuperAdmin = r.data?.power\n userName.value = r.data?.name\n $store.commit('user/setSuperAdmin', isSuperAdmin)\n if (isSuperAdmin) {\n const superNavList = [\n {\n title: '应用管理',\n path: '/dashboard/manage',\n },\n {\n title: '网站监控',\n path: 'https://www.frontjs.com/app/87c1ef7667a513f313b4abb22a88dc78',\n isExternal: true,\n },\n ]\n navList.push(...superNavList)\n }\n const isSystem = r.data?.system\n if (isSystem) {\n navList.splice(0, navList.length)\n navList.push({\n title: '系统管理',\n path: '/dashboard/config',\n })\n }\n refreshActiveTab()\n })\n})\n</script>\n\n<template>\n <div class=\"dashboard\">\n <div class=\"pc-nav\">\n <div class=\"nav\">\n <!-- LOGO -->\n <div class=\"logo\">\n <router-link to=\"/\">\n <img\n src=\"https://img.cdn.sugarat.top/easypicker/EasyPicker.png\"\n alt=\"logo\"\n >\n </router-link>\n </div>\n <input v-if=\"isMobile\" id=\"navActive\" type=\"checkbox\">\n <nav>\n <label v-if=\"isMobile\" for=\"navActive\" class=\"nav-item\">\n <span>Hello💐,</span>\n {{ userName }}\n </label>\n <label\n v-for=\"(n, idx) in navList\"\n :key=\"idx\"\n for=\"navActive\"\n class=\"nav-item\"\n :class=\"{\n active: navActiveIdx === idx,\n }\"\n @click=\"handleNav(idx)\"\n >{{ n.title }}</label>\n <label\n v-if=\"isMobile\"\n for=\"navActive\"\n class=\"nav-item\"\n @click=\"handleLogout\"\n >\n <span style=\"margin-right: 6px\">退出</span>\n <el-icon size=\"16\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-v-53d86618\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.6667 2.55473C13.0212 3.58347 14.6667 5.93291 14.6667 8.66667C14.6667 12.3486 11.6819 15.3333 8 15.3333C4.3181 15.3333 1.33333 12.3486 1.33333 8.66667C1.33333 5.93291 2.97879 3.58347 5.33333 2.55473V4.04684C3.7392 4.969 2.66667 6.69259 2.66667 8.66667C2.66667 11.6122 5.05448 14 8 14C10.9455 14 13.3333 11.6122 13.3333 8.66667C13.3333 6.69259 12.2608 4.969 10.6667 4.04684V2.55473ZM7.33333 8.66667V1.33333C7.33333 1.14924 7.48257 1 7.66667 1H8.33333C8.51743 1 8.66667 1.14924 8.66667 1.33333V8.66667C8.66667 8.85076 8.51743 9 8.33333 9H7.66667C7.48257 9 7.33333 8.85076 7.33333 8.66667Z\"\n fill=\"#86909C\"\n data-v-53d86618\n />\n </svg>\n </el-icon>\n </label>\n </nav>\n <div class=\"mask\" />\n </div>\n <!-- 移动端展示 -->\n <span id=\"navMenu\">\n <MessagePanel v-if=\"isMobile\" class=\"mobile-message-bell\" />\n <label for=\"navActive\">\n <el-icon size=\"32\">\n <Expand />\n </el-icon>\n </label>\n </span>\n <div v-if=\"!isMobile\" class=\"flex fac\">\n <MessagePanel />\n <span>Hello 💐,</span>\n <el-dropdown class=\"exit\">\n <span class=\"exit-info\">\n <span class=\"ellipsis\">{{ userName }}</span>\n <el-icon>\n <ArrowDown />\n </el-icon>\n </span>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item :icon=\"Close\" @click=\"handleLogout\">\n 退出\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n </div>\n <router-view />\n <div>\n <HomeFooter type=\"dashboard\" />\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.dashboard {\n background-color: #fafafa;\n}\n.pc-nav {\n background-color: #fff;\n display: flex;\n padding: 10px;\n justify-content: space-between;\n align-items: center;\n .exit {\n cursor: pointer;\n display: flex;\n align-items: center;\n .exit-info {\n display: flex;\n justify-content: center;\n align-items: center;\n > span {\n margin-right: 5px;\n display: block;\n max-width: 70px;\n }\n }\n }\n .nav {\n display: flex;\n nav {\n display: flex;\n align-items: center;\n .nav-item {\n font-size: 1rem;\n color: #595959;\n padding: 10px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n &.active {\n color: #409eff !important;\n font-weight: 600;\n }\n }\n }\n .exit {\n color: #595959;\n }\n }\n .logo {\n width: 180px;\n margin: 0 10px;\n img {\n height: 40px;\n }\n }\n}\n#navActive {\n display: none;\n opacity: 0;\n}\n#navMenu {\n display: none;\n}\n.mobile-message-bell {\n display: none;\n position: fixed;\n right: 0;\n top: 0;\n}\n@media screen and (max-width: 700px) {\n #navActive {\n display: block;\n position: fixed;\n left: 0;\n top: 0;\n }\n .mobile-message-bell {\n display: block;\n }\n #navMenu {\n cursor: pointer;\n display: block;\n position: absolute;\n left: 10px;\n top: 5px;\n font-size: 2rem;\n }\n .pc-nav {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n z-index: 6;\n .nav {\n flex-wrap: wrap;\n width: 100%;\n .logo {\n width: 100%;\n text-align: center;\n }\n }\n #navActive {\n & + nav {\n display: none;\n }\n }\n #navActive:checked {\n & + nav {\n display: flex;\n flex-direction: column;\n width: 100%;\n position: absolute;\n z-index: 1;\n background: #fff;\n left: 0;\n top: 50px;\n + .mask {\n display: block;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 50px;\n background-color: rgba(0, 0, 0, 0.5);\n }\n }\n }\n .exit {\n position: absolute;\n right: 10px;\n top: 20px;\n }\n }\n}\n</style>\n"],"names":["popoverProps","buildProps","useTooltipTriggerProps","dropdownProps","useTooltipContentProps","popoverEmits","value","isBoolean","__default__","_sfc_main","defineComponent","__props","expose","emit","props","updateEventKeyRaw","onUpdateVisible","computed","ns","useNamespace","tooltipRef","ref","popperRef","_a","unref","style","addUnit","kls","gpuAcceleration","hide","beforeEnter","beforeLeave","afterEnter","afterLeave","_ctx","_cache","openBlock","createBlock","ElTooltip","mergeProps","withCtx","createElementBlock","normalizeClass","toDisplayString","createCommentVNode","renderSlot","createTextVNode","Popover","_export_sfc","attachEvents","el","binding","popperComponent","popover","PopoverDirective","VPopover","ElPopoverDirective","withInstallDirective","ElPopover","withInstall","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_render","$props","$setup","$data","$options","bell","close","expand","dialogMessage","reactive","activeMessage","handleViewDialogMessage","v","readMessage","SuperUserApi","watch","showItem","isMobile","useIsMobile","activeTab","messageData","noReadMessage","route","useRoute","onMounted","$router","useRouter","$store","useStore","$route","navList","navActiveIdx","handleNav","idx","n","path","handleLogout","ElMessageBox","UserApi","ElMessage","userName","refreshActiveTab","r","isSuperAdmin","_b","superNavList","_c"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
|