@sugarat/easypicker2-client 2.5.0 → 2.6.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/assets/{data-analysis-13490516.js → data-analysis-b5271288.js} +2 -2
  2. package/dist/assets/{data-analysis-13490516.js.map → data-analysis-b5271288.js.map} +1 -1
  3. package/dist/assets/{data-analysis-legacy.f8612e65.js → data-analysis-legacy.6a4ab152.js} +2 -2
  4. package/dist/assets/{data-board-229a3bf5.js → data-board-fac5314d.js} +2 -2
  5. package/dist/assets/{data-board-229a3bf5.js.map → data-board-fac5314d.js.map} +1 -1
  6. package/dist/assets/{data-board-legacy.a60c4519.js → data-board-legacy.6c886296.js} +2 -2
  7. package/dist/assets/{el-date-picker-5a3e3d86.js → el-date-picker-7c194444.js} +2 -2
  8. package/dist/assets/{el-date-picker-5a3e3d86.js.map → el-date-picker-7c194444.js.map} +1 -1
  9. package/dist/assets/{el-date-picker-legacy.6d67764b.js → el-date-picker-legacy.749a72ef.js} +2 -2
  10. package/dist/assets/{el-dialog-463960e0.js → el-dialog-6d1c807a.js} +2 -2
  11. package/dist/assets/{el-dialog-463960e0.js.map → el-dialog-6d1c807a.js.map} +1 -1
  12. package/dist/assets/{el-dialog-legacy.0bcf48a4.js → el-dialog-legacy.5be8230f.js} +2 -2
  13. package/dist/assets/{el-dropdown-item-7c33f4fa.js → el-dropdown-item-958bfc71.js} +2 -2
  14. package/dist/assets/{el-dropdown-item-7c33f4fa.js.map → el-dropdown-item-958bfc71.js.map} +1 -1
  15. package/dist/assets/{el-dropdown-item-legacy.8625546e.js → el-dropdown-item-legacy.6457e2d9.js} +2 -2
  16. package/dist/assets/{el-form-item-f40006bf.js → el-form-item-14709389.js} +2 -2
  17. package/dist/assets/{el-form-item-f40006bf.js.map → el-form-item-14709389.js.map} +1 -1
  18. package/dist/assets/{el-form-item-legacy.d28db5d0.js → el-form-item-legacy.964d0dc1.js} +2 -2
  19. package/dist/assets/{el-loading-5d91bb6c.js → el-loading-2e8f5cae.js} +2 -2
  20. package/dist/assets/{el-loading-5d91bb6c.js.map → el-loading-2e8f5cae.js.map} +1 -1
  21. package/dist/assets/{el-loading-legacy.0f35210f.js → el-loading-legacy.8e1450cb.js} +2 -2
  22. package/dist/assets/{el-pagination-ffb99240.js → el-pagination-257e3c38.js} +2 -2
  23. package/dist/assets/{el-pagination-ffb99240.js.map → el-pagination-257e3c38.js.map} +1 -1
  24. package/dist/assets/{el-pagination-legacy.25b54e8d.js → el-pagination-legacy.20f976d7.js} +2 -2
  25. package/dist/assets/{el-progress-2fff98be.js → el-progress-d60eb9c6.js} +2 -2
  26. package/dist/assets/{el-progress-2fff98be.js.map → el-progress-d60eb9c6.js.map} +1 -1
  27. package/dist/assets/{el-progress-legacy.db8b5855.js → el-progress-legacy.d8c96dd6.js} +2 -2
  28. package/dist/assets/{el-select-7d894fd0.js → el-select-ca05d15a.js} +2 -2
  29. package/dist/assets/{el-select-7d894fd0.js.map → el-select-ca05d15a.js.map} +1 -1
  30. package/dist/assets/{el-select-legacy.ad6ded5a.js → el-select-legacy.96230556.js} +2 -2
  31. package/dist/assets/{el-switch-2eda0412.js → el-switch-a175c6ff.js} +2 -2
  32. package/dist/assets/{el-switch-2eda0412.js.map → el-switch-a175c6ff.js.map} +1 -1
  33. package/dist/assets/{el-switch-legacy.e17e7919.js → el-switch-legacy.c18bba6a.js} +2 -2
  34. package/dist/assets/{el-tab-pane-b3156067.js → el-tab-pane-499e4804.js} +2 -2
  35. package/dist/assets/{el-tab-pane-b3156067.js.map → el-tab-pane-499e4804.js.map} +1 -1
  36. package/dist/assets/{el-tab-pane-legacy.2cf21031.js → el-tab-pane-legacy.dfd3489b.js} +2 -2
  37. package/dist/assets/{el-table-column-22352e92.js → el-table-column-bccbd0ee.js} +2 -2
  38. package/dist/assets/{el-table-column-22352e92.js.map → el-table-column-bccbd0ee.js.map} +1 -1
  39. package/dist/assets/{el-table-column-legacy.fd665e2a.js → el-table-column-legacy.b083e5c9.js} +2 -2
  40. package/dist/assets/{index-c61deab7.js → index-04a69740.js} +2 -2
  41. package/dist/assets/index-04a69740.js.map +1 -0
  42. package/dist/assets/{index-6d7ac779.js → index-05e1d8e9.js} +2 -2
  43. package/dist/assets/{index-6d7ac779.js.map → index-05e1d8e9.js.map} +1 -1
  44. package/dist/assets/{index-b0a4c236.js → index-0aa5a09d.js} +2 -2
  45. package/dist/assets/{index-b0a4c236.js.map → index-0aa5a09d.js.map} +1 -1
  46. package/dist/assets/{index-f298d979.js → index-13570b16.js} +2 -2
  47. package/dist/assets/{index-f298d979.js.map → index-13570b16.js.map} +1 -1
  48. package/dist/assets/{index-f47a54b0.js → index-39c9824a.js} +2 -2
  49. package/dist/assets/{index-f47a54b0.js.map → index-39c9824a.js.map} +1 -1
  50. package/dist/assets/{index-c3a1cd43.js → index-3a3af29f.js} +2 -2
  51. package/dist/assets/{index-c3a1cd43.js.map → index-3a3af29f.js.map} +1 -1
  52. package/dist/assets/{index-d32645f3.js → index-4766f4e2.js} +2 -2
  53. package/dist/assets/{index-d32645f3.js.map → index-4766f4e2.js.map} +1 -1
  54. package/dist/assets/{index-c840d3aa.js → index-4f21c270.js} +2 -2
  55. package/dist/assets/{index-c840d3aa.js.map → index-4f21c270.js.map} +1 -1
  56. package/dist/assets/{index-f6ffb548.js → index-57c9ea07.js} +2 -2
  57. package/dist/assets/{index-f6ffb548.js.map → index-57c9ea07.js.map} +1 -1
  58. package/dist/assets/{index-bc1a6d96.js → index-930e03dd.js} +2 -2
  59. package/dist/assets/{index-bc1a6d96.js.map → index-930e03dd.js.map} +1 -1
  60. package/dist/assets/{index-17fa8fb7.js → index-9d8bb3cd.js} +2 -2
  61. package/dist/assets/{index-17fa8fb7.js.map → index-9d8bb3cd.js.map} +1 -1
  62. package/dist/assets/{index-75b8c91c.js → index-a880a055.js} +2 -2
  63. package/dist/assets/{index-75b8c91c.js.map → index-a880a055.js.map} +1 -1
  64. package/dist/assets/{index-5f3a9ae0.css → index-b6a0083a.css} +1 -1
  65. package/dist/assets/{index-34bd5929.js → index-c0ed4574.js} +2 -2
  66. package/dist/assets/{index-34bd5929.js.map → index-c0ed4574.js.map} +1 -1
  67. package/dist/assets/index-ce410282.js +19 -0
  68. package/dist/assets/index-ce410282.js.map +1 -0
  69. package/dist/assets/{index-ca90e8da.js → index-d14594d8.js} +2 -2
  70. package/dist/assets/{index-ca90e8da.js.map → index-d14594d8.js.map} +1 -1
  71. package/dist/assets/{index-8eff6b5a.js → index-d88fcb67.js} +2 -2
  72. package/dist/assets/{index-8eff6b5a.js.map → index-d88fcb67.js.map} +1 -1
  73. package/dist/assets/{index-6f4c911e.js → index-f2876d54.js} +2 -2
  74. package/dist/assets/{index-6f4c911e.js.map → index-f2876d54.js.map} +1 -1
  75. package/dist/assets/{index-afb7d164.js → index-f2af0aed.js} +2 -2
  76. package/dist/assets/{index-afb7d164.js.map → index-f2af0aed.js.map} +1 -1
  77. package/dist/assets/{index-98964915.js → index-f3cfa998.js} +2 -2
  78. package/dist/assets/{index-98964915.js.map → index-f3cfa998.js.map} +1 -1
  79. package/dist/assets/{index-b3774417.js → index-ff4fa185.js} +2 -2
  80. package/dist/assets/{index-b3774417.js.map → index-ff4fa185.js.map} +1 -1
  81. package/dist/assets/{index-legacy.6c7021b3.js → index-legacy.08acab8b.js} +2 -2
  82. package/dist/assets/{index-legacy.5d174bde.js → index-legacy.0fa09a50.js} +2 -2
  83. package/dist/assets/index-legacy.1bc3fb32.js +23 -0
  84. package/dist/assets/{index-legacy.e7464d3c.js → index-legacy.350597a4.js} +2 -2
  85. package/dist/assets/{index-legacy.1540c5bc.js → index-legacy.42c315a5.js} +2 -2
  86. package/dist/assets/{index-legacy.01d9320a.js → index-legacy.48503271.js} +2 -2
  87. package/dist/assets/{index-legacy.189f20a8.js → index-legacy.487dc8a3.js} +2 -2
  88. package/dist/assets/{index-legacy.d9854cf5.js → index-legacy.592d0ad8.js} +2 -2
  89. package/dist/assets/{index-legacy.45ec3501.js → index-legacy.764c62f4.js} +2 -2
  90. package/dist/assets/{index-legacy.7dae3131.js → index-legacy.7754567f.js} +2 -2
  91. package/dist/assets/{index-legacy.9f65dcb9.js → index-legacy.9bbb913d.js} +2 -2
  92. package/dist/assets/{index-legacy.4f956884.js → index-legacy.a30b5102.js} +2 -2
  93. package/dist/assets/{index-legacy.9dc57803.js → index-legacy.a755cc49.js} +2 -2
  94. package/dist/assets/{index-legacy.e6994f0a.js → index-legacy.af83663e.js} +2 -2
  95. package/dist/assets/{index-legacy.d32480a5.js → index-legacy.b7dbd470.js} +2 -2
  96. package/dist/assets/{index-legacy.9c4986d3.js → index-legacy.c2ac3287.js} +2 -2
  97. package/dist/assets/{index-legacy.08663170.js → index-legacy.c81edf2b.js} +2 -2
  98. package/dist/assets/{index-legacy.51740a44.js → index-legacy.d7412d7f.js} +2 -2
  99. package/dist/assets/{index-legacy.bd5a4368.js → index-legacy.e0df9935.js} +2 -2
  100. package/dist/assets/{index-legacy.1f2405e5.js → index-legacy.fcf53d84.js} +2 -2
  101. package/dist/assets/{isEqual-9c466456.js → isEqual-3a3c96c5.js} +2 -2
  102. package/dist/assets/{isEqual-9c466456.js.map → isEqual-3a3c96c5.js.map} +1 -1
  103. package/dist/assets/{isEqual-legacy.985bb619.js → isEqual-legacy.184e606c.js} +2 -2
  104. package/dist/assets/{refresh-6ae903c0.js → refresh-3ba5bdd3.js} +2 -2
  105. package/dist/assets/{refresh-6ae903c0.js.map → refresh-3ba5bdd3.js.map} +1 -1
  106. package/dist/assets/{refresh-legacy.8092415a.js → refresh-legacy.25fa8f66.js} +2 -2
  107. package/dist/assets/{tip-00ddf749.js → tip-e392c57d.js} +2 -2
  108. package/dist/assets/{tip-00ddf749.js.map → tip-e392c57d.js.map} +1 -1
  109. package/dist/assets/{tip-legacy.6e921091.js → tip-legacy.707697b5.js} +2 -2
  110. package/dist/assets/validator-001cb5f7.js +2 -0
  111. package/dist/assets/{validator-853854a1.js.map → validator-001cb5f7.js.map} +1 -1
  112. package/dist/assets/validator-legacy.9dc39c21.js +2 -0
  113. package/dist/index.html +3 -3
  114. package/package.json +8 -4
  115. package/dist/assets/index-62c7029f.js +0 -15
  116. package/dist/assets/index-62c7029f.js.map +0 -1
  117. package/dist/assets/index-c61deab7.js.map +0 -1
  118. package/dist/assets/index-legacy.978f90e1.js +0 -18
  119. package/dist/assets/validator-853854a1.js +0 -2
  120. package/dist/assets/validator-legacy.b34dfdfa.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index-c3a1cd43.js","sources":["../../src/apis/modules/action.ts","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/download.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/picture.mjs","../../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","<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\n size=\"default\"\n v-model=\"selectCategory\"\n filterable\n placeholder=\"请选择\"\n >\n <el-option label=\"全部\" value=\"all\" />\n <el-option label=\"默认\" value=\"default\" />\n <el-option\n v-for=\"item in categories\"\n :key=\"item.k\"\n :label=\"item.name\"\n :value=\"item.k\"\n />\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\n size=\"default\"\n v-model=\"selectTask\"\n filterable\n placeholder=\"请选择\"\n >\n <el-option label=\"全部\" value=\"all\" />\n <el-option\n v-for=\"item in filterTasks\"\n :key=\"item.key\"\n :label=\"item.name\"\n :value=\"item.key\"\n ></el-option>\n </el-select>\n </div>\n <div class=\"item\">\n <el-button\n :loading=\"batchDownStart\"\n :disabled=\"selectTask === 'all'\"\n type=\"primary\"\n size=\"default\"\n :icon=\"Download\"\n @click=\"handleDownloadTask\"\n >下载任务中的文件</el-button\n >\n </div>\n <div class=\"item\">\n <el-input\n size=\"default\"\n clearable\n placeholder=\"请输入要检索的内容\"\n :prefix-icon=\"Search\"\n v-model=\"searchWord\"\n >\n </el-input>\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 <arrow-down />\n </el-icon>\n </el-button>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item\n :disabled=\"selectItem.length === 0\"\n command=\"download\"\n >下载</el-dropdown-item\n >\n <el-dropdown-item\n :disabled=\"selectItem.length === 0\"\n command=\"delete\"\n >删除</el-dropdown-item\n >\n <el-dropdown-item\n :disabled=\"selectItem.length === 0\"\n command=\"excel\"\n >导出记录</el-dropdown-item\n >\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\n type=\"primary\"\n :disabled=\"selectItem.length === 0\"\n size=\"default\"\n >\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\">下载</el-dropdown-item>\n <el-dropdown-item command=\"delete\">删除</el-dropdown-item>\n <el-dropdown-item command=\"excel\">导出记录</el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n <el-button size=\"default\" :icon=\"Refresh\" @click=\"handleRefresh\"\n >刷新</el-button\n >\n <el-button\n title=\"导出表格中所有的数据\"\n type=\"success\"\n size=\"default\"\n :icon=\"DataAnalysis\"\n @click=\"\n () => {\n handleExportExcel(\n filterFiles,\n `筛选数据导出_${formatDate(\n new Date(),\n 'yyyy年MM月日hh时mm分ss秒'\n )}.xlsx`\n )\n }\n \"\n :disabled=\"showFilterFiles.length === 0\"\n >导出记录</el-button\n >\n <div class=\"control-item\">\n 显示图片\n <el-switch\n inline-prompt\n v-model=\"showImg\"\n active-color=\"#13ce66\"\n inactive-color=\"#ff4949\"\n active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n 展示原文件名\n <el-switch\n inline-prompt\n v-model=\"showOriginName\"\n active-color=\"#13ce66\"\n inactive-color=\"#ff4949\"\n active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n 显示提交人姓名\n <el-switch\n inline-prompt\n v-model=\"showPeople\"\n active-color=\"#13ce66\"\n inactive-color=\"#ff4949\"\n active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n ⏰ 查看下载历史\n <el-switch\n v-model=\"showHistoryPanel\"\n style=\"\n --el-switch-on-color: #13ce66;\n --el-switch-off-color: #ff4949;\n \"\n />\n </div>\n </div>\n </div>\n <div\n class=\"panel\"\n v-show=\"historyDownloadRecord.compressTask.length && !showHistoryPanel\"\n >\n <tip style=\"font-size: 16px\"\n >正在进行归档的任务\n {{ historyDownloadRecord.compressTask.length }}个</tip\n >\n <tip>详细归档记录点击右上角 “⏰查看下载历史”</tip>\n <p\n v-for=\"(record, idx) in historyDownloadRecord.compressTask\"\n :key=\"record.id\"\n class=\"tc\"\n style=\"margin-top: 10px\"\n >\n {{ idx + 1 }}. {{ record.tip }}\n <span\n v-loading=\"true\"\n element-loading-text=\"...\"\n style=\"--el-loading-spinner-size: 20px\"\n ></span>\n </p>\n </div>\n <div class=\"panel\" v-show=\"showHistoryPanel\">\n <tip style=\"font-size: 16px\"\n >”❤️下面展示历史的下载记录与归档任务完成情况❤️“</tip\n >\n <tip>”再也不需要在页面停留等待归档完成“</tip>\n <div>\n <el-table\n v-loading=\"isLoadingData\"\n element-loading-text=\"Loading...\"\n tooltip-effect=\"dark\"\n multipleTable\n ref=\"multipleTable\"\n @selection-change=\"handleSelectionChange\"\n stripe\n border\n :default-sort=\"{ prop: 'date', order: 'descending' }\"\n :max-height=\"666\"\n :data=\"historyDownloadRecord.actions\"\n style=\"width: 100%\"\n >\n <el-table-column prop=\"date\" label=\"触发时间\" width=\"200\">\n <template #default=\"scope\">{{\n formatDate(new Date(scope.row.date))\n }}</template>\n </el-table-column>\n <el-table-column prop=\"tip\" label=\"文件信息\"></el-table-column>\n <el-table-column prop=\"type\" label=\"任务类型\">\n <template #default=\"scope\">\n <el-link\n v-if=\"scope.row.type === ActionType.Compress\"\n type=\"primary\"\n >归档下载</el-link\n >\n <el-link v-else type=\"default\">普通下载</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\"\n ><el-link type=\"danger\">归档中...</el-link></span\n >\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\"\n ><el-link type=\"danger\">归档失败</el-link></span\n >\n </template>\n </el-table-column>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"140\">\n <template #default=\"scope\">\n <div\n v-loading=\"true\"\n v-if=\"scope.row.status === DownloadStatus.ARCHIVE\"\n >\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 @click=\"downLoadByUrl(scope.row.url)\" type=\"primary\"\n >下载</el-link\n >\n <el-link\n type=\"success\"\n style=\"margin-left: 10px\"\n @click=\"copyRes(scope.row.url)\"\n >链接</el-link\n >\n <el-link\n type=\"warning\"\n style=\"margin-left: 10px\"\n @click=\"\n () => {\n showLinkModel = true\n downloadUrl = scope.row.url\n }\n \"\n >二维码</el-link\n >\n </div>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"flex fc\">\n <el-pagination\n small\n :current-page=\"historyDownloadRecord.pageCurrent\"\n :page-count=\"historyDownloadRecord.pageCount\"\n :total=\"historyDownloadRecord.pageTotal\"\n layout=\"total, prev, pager, next\"\n @current-change=\"handleHistoryActionPageChange\"\n ></el-pagination>\n </div>\n </div>\n </div>\n <!-- 主体内容 -->\n <div class=\"panel\">\n <Tip>空间占用情况:{{ filterFileSize }} / {{ fileListSize }}</Tip>\n <Tip>↑ 仅供使用者参考,应用无存储空间上限,也不收费</Tip>\n <Tip\n ><strong\n >如果你觉得应用不错,<a\n style=\"color: #409eff\"\n href=\"http://docs.ep.sugarat.top/praise/index.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >请作者喝茶 🍵</a\n ></strong\n >\n <!-- <Praise>\n <el-button style=\"margin:0 0 2px;\" size=\"small\" type=\"primary\" text>Go!Go!❓</el-button>\n </Praise> -->\n </Tip>\n <el-table\n v-loading=\"isLoadingData\"\n element-loading-text=\"Loading...\"\n tooltip-effect=\"dark\"\n multipleTable\n ref=\"multipleTable\"\n @selection-change=\"handleSelectionChange\"\n stripe\n border\n :max-height=\"666\"\n :data=\"showFilterFiles\"\n style=\"width: 100%\"\n >\n <el-table-column type=\"selection\" width=\"55\" />\n <el-table-column prop=\"date\" label=\"提交时间\" width=\"160\">\n <template #default=\"scope\">{{\n formatDate(new Date(scope.row.date))\n }}</template>\n </el-table-column>\n <el-table-column\n prop=\"task_name\"\n label=\"任务\"\n width=\"150\"\n ></el-table-column>\n <el-table-column\n prop=\"name\"\n label=\"文件名\"\n width=\"200\"\n ></el-table-column>\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 scope.row.size === 0 ? '未知大小' : formatSize(scope.row.size)\n }}</template>\n </el-table-column>\n <template v-if=\"showImg\">\n <el-table-column label=\"缩略图\" width=\"120\">\n <template #default=\"scope\">\n <el-image\n @switch=\"handleSwitchImage\"\n @click=\"handleSwitchImage(scope.$index)\"\n preview-teleported\n :preview-src-list=\"previewImages\"\n :initial-index=\"scope.$index\"\n lazy\n style=\"width: 100px; height: 100px\"\n :src=\"scope.row.cover\"\n fit=\"cover\"\n >\n <template #viewer>\n <div class=\"imageDes\">{{ viewImageFilename }}</div>\n </template>\n <template #placeholder>\n <div class=\"imageLoading\">Loading...</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\n @click=\"checkInfo(scope.row)\"\n type=\"primary\"\n text\n size=\"small\"\n >查看提交信息</el-button\n >\n <el-button\n @click=\"rewriteFilename(scope.row)\"\n type=\"primary\"\n text\n size=\"small\"\n >修改文件名</el-button\n >\n <el-button\n @click=\"downloadOne(scope.row)\"\n type=\"primary\"\n text\n size=\"small\"\n >下载</el-button\n >\n <el-button\n @click=\"handleDelete(scope.row)\"\n type=\"primary\"\n text\n size=\"small\"\n >删除</el-button\n >\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\"\n @current-change=\"handlePageChange\"\n background\n :page-count=\"pageCount\"\n :page-sizes=\"[6, 10, 50, 100]\"\n :page-size=\"pageSize\"\n @size-change=\"handleSizeChange\"\n :total=\"filterFiles.length\"\n layout=\"total, sizes, prev, pager, next, jumper\"\n ></el-pagination>\n </div>\n <!-- 信息弹窗 -->\n <el-dialog\n :fullscreen=\"isMobile\"\n title=\"提交填写的信息\"\n v-model=\"showInfoDialog\"\n >\n <InfosForm :infos=\"infos\" :disabled=\"true\" />\n </el-dialog>\n <LinkDialog\n v-model:value=\"showLinkModel\"\n title=\"下载链接\"\n :link=\"downloadUrl\"\n ></LinkDialog>\n <el-dialog\n :fullscreen=\"isMobile\"\n title=\"修改文件名\"\n v-model=\"showRenameDialog\"\n >\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 >保存</el-button\n >\n <el-button @click=\"showRenameDialog = false\">取消</el-button>\n </el-form-item>\n </el-form>\n </div>\n </el-dialog>\n </div>\n</template>\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 Refresh,\n DataAnalysis,\n Download,\n Search,\n Picture\n} from '@element-plus/icons-vue'\nimport { useRoute } from 'vue-router'\nimport {\n copyRes,\n formatDate,\n formatSize,\n getFileSuffix,\n parseInfo\n} from '@/utils/stringUtil'\nimport { ActionServiceAPI, FileApi } from '@/apis'\nimport { downLoadByUrl, tableItem, tableToExcel } from '@/utils/networkUtil'\nimport Tip from '../tasks/components/infoPanel/tip.vue'\nimport InfosForm from '@/components/InfosForm/index.vue'\nimport { DownloadStatus, ActionType, filenamePattern } from '@/constants'\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\nconst 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}\nconst handleHistoryActionPageChange = (v) => {\n historyDownloadRecord.pageCurrent = v\n loadActions()\n}\n// 记录导出\nconst 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 JSON.parse(value.info).forEach((i: any) => {\n if (!pre.includes(i.text)) {\n pre.push(i.text)\n }\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 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 body.unshift(infosHeader)\n tableToExcel(\n headers,\n body,\n filename ||\n `数据导出_${formatDate(new Date(), 'yyyy年MM月日hh时mm分ss秒')}.xlsx`\n )\n ElMessage.success('导出成功')\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\nconst isLoadingData = ref(false)\n// 提交的所有文件\nconst files: FileApiTypes.File[] = reactive([])\nconst 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 // eslint-disable-next-line no-useless-escape\n t.info\n ])\n .replace(/[:'\"{},[\\]]/g, '')\n .includes(searchWord.value)\n : true\n )\n)\n\n/**\n * 清空所有选项\n */\nconst clearSelection = () => {\n multipleTable.value.clearSelection()\n}\n// 多选选中的项\nconst selectItem: any[] = reactive([])\nconst handleSelectionChange = (e: any) => {\n selectItem.splice(0, selectItem.length)\n selectItem.push(...e)\n}\nconst batchDownStart = ref(false)\nconst handleDropdownClick = (e: string) => {\n const ids: number[] = selectItem.map((v) => v.id)\n switch (e) {\n case 'download':\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([])\nconst 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})\nconst 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\nconst 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\nconst downloadOne = (e: any) => {\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 .catch(() => {\n ElMessage.error('文件已从服务器上移除')\n })\n}\nconst 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)\nconst 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)\nconst handlePageChange = (idx: number) => {\n pageCurrent.value = idx\n}\n\n// 刷新文件列表\n\nconst handleRefresh = () => {\n ElMessage.success({\n message: '刷新成功'\n })\n loadFiles()\n}\nconst 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>([])\nconst sortProps = reactive({\n order: null,\n prop: null\n})\nconst viewImageFilename = ref('')\nconst handleFilesSortChange = (v) => {\n sortProps.prop = v.prop\n sortProps.order = v.order\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\nconst handleSwitchImage = (idx: number) => {\n viewImageFilename.value = showFilterFiles.value[idx].name\n}\n\nlet fetching = false\nconst 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}\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 = computed(() => $store.getters['public/isMobile'])\n</script>\n<style scoped lang=\"scss\">\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.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</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","$store","useStore","$route","useRoute","showLinkModel","ref","downloadUrl","showImg","showPeople","showOriginName","showHistoryPanel","historyDownloadRecord","reactive","loadActions","compressTask","v","actions","sum","haveArchive","v2","DownloadStatus","ActionType","action","existIndex","downLoadByUrl","handleHistoryActionPageChange","handleExportExcel","files2","filename","ElMessage","baseHeaders","headers","infosHeader","pre","value","i","body","date","taskName","name","size","people","infoObj","info","_a","rows","formatDate","formatSize","tableToExcel","categories","computed","selectCategory","tasks","selectTask","filterTasks","selectTaskName","watchEffect","isLoadingData","files","loadFiles","FileApi","res","multipleTable","searchWord","filterFiles","f","t","clearSelection","selectItem","handleSelectionChange","e","batchDownStart","handleDropdownClick","ids","ElMessageBox","showInfoDialog","infos","checkInfo","parseInfo","showRenameDialog","renameForm","rewriteFilename","id","suffix","getFileSuffix","handleSaveNewName","filenamePattern","file","downloadOne","link","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","onMounted","isMobile"],"mappings":"kqCAEA,SAASA,GACPC,EACAC,EACAC,EAAqB,CAAA,EACc,CAC5B,OAAAC,GAAK,KAAK,wBAAyB,CACxC,SAAAH,EACA,UAAAC,EACA,SAAAC,CAAA,CACD,CACH,CAEA,MAAeE,GAAA,CACb,mBAAAL,EACF,ECbMM,GAAYC,GAAgB,CAChC,KAAM,UACR,CAAC,EACKC,GAAa,CACjB,QAAS,gBACT,MAAO,4BACT,EACMC,GAA6BC,EAAmB,OAAQ,CAC5D,KAAM,eACN,EAAG,6JACL,EAAG,KAAM,EAAE,EACLC,GAAa,CACjBF,EACF,EACA,SAASG,GAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,OAAOC,EAAW,EAAEC,EAAmB,MAAOZ,GAAYG,EAAU,CACtE,CACA,IAAIU,GAA2BC,GAAYhB,GAAW,CAAC,CAAC,SAAUM,EAAW,CAAC,CAAC,ECjB/E,MAAMN,GAAYC,GAAgB,CAChC,KAAM,SACR,CAAC,EACKC,GAAa,CACjB,QAAS,gBACT,MAAO,4BACT,EACMC,GAA6BC,EAAmB,OAAQ,CAC5D,KAAM,eACN,EAAG,2HACL,EAAG,KAAM,EAAE,EACLC,GAA6BD,EAAmB,OAAQ,CAC5D,KAAM,eACN,EAAG,sTACL,EAAG,KAAM,EAAE,EACLa,GAAa,CACjBd,GACAE,EACF,EACA,SAASC,GAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,OAAOC,EAAW,EAAEC,EAAmB,MAAOZ,GAAYe,EAAU,CACtE,CACA,IAAIC,GAA0BF,GAAYhB,GAAW,CAAC,CAAC,SAAUM,EAAW,CAAC,CAAC,8/BC+e9E,MAAAa,EAAAC,KACAC,EAAAC,KACAC,EAAAC,EAAA,EAAA,EACAC,EAAAD,EAAA,EAAA,EACAE,EAAAF,EAAA,aAAA,QAAA,gBAAA,IAAA,MAAA,EACAG,EAAAH,EAAA,EAAA,EACAI,EAAAJ,EAAA,EAAA,EACAK,GAAAL,EAAA,EAAA,EACAM,EAAAC,EAAA,CAAuC,QAAA,CAAA,EAC3B,SAAA,EACA,UAAA,EAIC,YAAA,EACE,UAAA,EACF,aAAA,CAAA,CACI,CAAA,EAGjBC,EAAA,IAAA,CAEE,MAAAC,EAAA,KAAA,MAA+D,aAAA,QAAA,kBAAA,GAAA,IACjB,EAE9CH,EAAA,aAAAG,EAEAlC,GAAA,mBAAiB+B,EAAA,SACOA,EAAA,YACAG,EAAA,IAAAC,GAAAA,EAAA,EAAA,CACM,EAAA,KAAAA,GAAA,CAE5B,KAAA,CAAA,QAAAC,EAAA,IAAAC,GAAAF,EAAA,KACAG,EAAA,CAAA,CAAAF,EAAA,KAA8BG,GAAAA,EAAA,SAAAC,EAAA,OACO,EAGrCJ,EAAA,OAAAG,GAAAA,EAAA,OAAAE,GAAA,QAAA,EAAA,QAAAC,GAAA,CAGI,MAAAC,EAAAT,EAAA,UAAAK,GAAAA,EAAA,KAAAG,EAAA,EAAA,EAIAA,EAAA,SAAAF,EAAA,SAAAG,IAAA,KAEEjB,EAAA,MAAAgB,EAAA,IACAlB,EAAA,MAAA,GACAoB,GAAAF,EAAA,GAAA,EAEAR,EAAA,OAAAS,EAAA,CAAA,GAIFD,EAAA,SAAAF,EAAA,SAAAG,IAAA,IACET,EAAA,KAAAQ,CAAA,EAIFA,EAAA,SAAAF,EAAA,MAAAG,IAAA,IACET,EAAA,OAAAS,EAAA,CAAA,CACF,CAAA,EAGJZ,EAAA,aAAAG,EACA,aAAA,QAAA,mBAAA,KAAA,UAAAA,CAAA,CAAA,EACAI,GAEE,WAAAL,EAAA,GAAA,EAEFF,EAAA,UAAAM,EACAN,EAAA,QAAAK,EACAL,EAAA,UAAA,KAAA,KAAuCM,EAAAN,EAAA,QACT,CAC9B,CAAA,CACD,EAEHc,GAAAV,GAAA,CACEJ,EAAA,YAAAI,EACAF,GAAY,EAGda,GAAA,CAAAC,EAAAC,IAAA,CACE,GAAAD,EAAA,SAAA,EAAA,CACEE,EAAA,QAAA,aAAA,EACA,MAAA,CAEF,MAAAC,EAAA,CAAA,OAAA,KAAA,MAAA,IAAA,EACArB,EAAA,OACEqB,EAAA,KAAA,MAAA,EAEFtB,EAAA,OACEsB,EAAA,KAAA,IAAA,EAEF,MAAAC,EAAAD,EAAA,IAAAf,IAAA,CAAgE,MAAAA,EACvD,IAAA,CACF,EAAA,EAGPiB,EAAAL,EAAA,OAAA,CAAAM,EAAAC,KACE,KAAA,MAAAA,EAAA,IAAA,EAAA,QAAAC,GAAA,CACEF,EAAA,SAAAE,EAAA,IAAA,GACEF,EAAA,KAAAE,EAAA,IAAA,CACF,CAAA,EAEFF,GAAO,CAAA,CAAA,EAETF,EAAA,KAAA,CAAa,MAAA,OACJ,IAAAC,EAAA,MACU,CAAA,EAGnB,MAAAI,EAAAT,EAAA,IAAAZ,GAAA,CACE,KAAA,CAAA,KAAAsB,EAAA,UAAAC,EAAA,KAAAC,GAAA,KAAAC,EAAA,OAAAC,CAAA,EAAA1B,EACA2B,EAAA,KAAA,MAAA3B,EAAA,IAAA,EAAA,OAAA,CAAAkB,EAAAd,KACEc,EAAAd,EAAA,IAAA,EAAAA,EAAA,MACAc,GAAO,CAAA,CAAA,EAETU,GAAAX,EAAA,IAAAb,GAAA,OAAA,OAAAyB,EAAAF,EAAAvB,CAAA,IAAA,KAAAyB,EAAA,IAAA,EACAC,EAAA,CAAAC,EAAA,IAAA,KAAAT,CAAA,CAAA,EAAAC,EAAAC,GAAAQ,EAAAP,CAAA,CAAA,EACA,OAAA/B,EAAA,OACEoC,EAAA,KAAA9B,EAAA,aAAA,GAAA,EAEFP,EAAA,OACEqC,EAAA,KAAAJ,GAAA,GAAA,EAEFI,EAAA,KAAA,GAAAF,EAAA,EACAE,CAAO,CAAA,EAETT,EAAA,QAAAJ,CAAA,EACAgB,GAAAjB,EACEK,EACAR,GAAA,QAAA,OAAAkB,EAAA,IAAA,KAAA,oBAAA,EAAA,QAEsD,EAExDjB,EAAA,QAAA,MAAA,CAAwB,EAG1BoB,GAAAC,EAAA,IAAAlD,EAAA,MAAA,SAAA,YAAA,EACAmD,GAAA9C,EAAA,KAAA,EAEA+C,GAAAF,EAAc,IAAAlD,EAAA,MAAA,KAAA,QACY,EAE1BqD,EAAAhD,EAAA,KAAA,EACAiD,GAAAJ,EAAA,IACEC,GAAA,QAAA,MACEC,GAAA,OAGFC,EAAA,MAAA,MACAD,GAAA,MAAA,OAAA,GAAA,EAAA,WAAAD,GAAA,KAAA,EAAoE,EAEtEI,GAAAL,EAAA,IAAA,CACE,MAAA,EAAAI,GAAA,MAAA,KAAAvC,GAAAA,EAAA,MAAAsC,EAAA,KAAA,EACA,OAAA,iBAAA,IAAU,CAAA,EAGZG,GAAA,IAAA,CACEJ,GAAA,MAAA,QAAAA,GAAA,MAAA,KAAArC,GAAAA,EAAA,MAAAb,EAAA,MAAA,IAAA,IAIEmD,EAAA,MAAA,GAAA,OAAAnD,EAAA,MAAA,MACF,CAAA,EAGF,MAAAuD,GAAApD,EAAA,EAAA,EAEAqD,EAAA9C,EAAA,CAAA,CAAA,EACA+C,GAAA,IAAA,CACEF,GAAA,MAAA,GACAC,EAAA,OAAA,EAAAA,EAAA,MAAA,EACAE,EAAA,YAAA,EAAA,KAAAC,GAAA,CACEH,EAAA,KAAA,GAAAG,EAAA,KAAA,KAAA,EACAJ,GAAA,MAAA,EAAsB,CAAA,CACvB,EAEHK,GAAAzD,IACA0D,GAAA1D,EAAA,EAAA,EAIA2D,GAAAd,EAAoB,IAAAQ,EAAA,OAAAO,GAGdd,GAAA,QAAA,UACEC,GAAA,MAAA,MAAAc,GAAAA,EAAA,MAAAD,EAAA,QAAA,EAEFX,GAAA,MAAA,SAAA,EACE,GAGFD,EAAA,QAAA,MACEC,GAAA,MAAA,KAAAY,GAAAA,EAAA,MAAAD,EAAA,QAAA,EAGFZ,EAAA,QAAAY,EAAA,QAA8B,EAAA,OAG/B,GAAAF,GAAA,MAAA,KAAA,UAAA,CAEoBjB,EAAA,IAAA,KAAA,EAAA,IAAA,CAAA,EACcC,EAAA,EAAA,IAAA,EACV,EAAA,OACf,EAAA,KACA,EAAA,UACA,EAAA,IAEA,CAAA,EAAA,QAAA,eAAA,EAAA,EAAA,SAAAgB,GAAA,KAAA,EAAA,EAIJ,CACN,EAMJI,GAAA,IAAA,CACEL,GAAA,MAAA,gBAAmC,EAGrCM,EAAAxD,EAAA,CAAA,CAAA,EACAyD,GAAAC,GAAA,CACEF,EAAA,OAAA,EAAAA,EAAA,MAAA,EACAA,EAAA,KAAA,GAAAE,CAAA,CAAoB,EAEtBC,EAAAlE,EAAA,EAAA,EACAmE,GAAAF,GAAA,CACE,MAAAG,EAAAL,EAAA,IAAArD,GAAAA,EAAA,EAAA,EACA,OAAAuD,EAAA,CAAW,IAAA,WAEP,GAAAF,EAAA,SAAA,EAAA,CACEvC,EAAA,QAAA,aAAA,EACA,MAAA,CAEF,GAAA0C,EAAA,MAAA,CACE1C,EAAA,QAAA,qBAAA,EACA,MAAA,CAEF+B,EAAA,cAAQa,EACN,QAAA,OAAA3B,EAAA,IAAA,KAAA,oBAAA,EACoD,EAAA,KAAA,IAAA,CAGlDjC,GAAY,CAAA,EAAA,MAAA,IAAA,CAGZgB,EAAA,MAAA,eAAA,EACA0C,EAAA,MAAA,EAAuB,CAAA,EAE3B1C,EAAA,KAAA,iBAAA,EACA,MAAA,IAAA,SAEA,GAAAuC,EAAA,SAAA,EAAA,CACEvC,EAAA,QAAA,aAAA,EACA,MAAA,CAEF6C,GAAA,QAAA,eAAA,YAAA,EAAA,KAAA,IAAA,CAEId,EAAA,SAAAa,CAAA,EAAA,KAAA,IAAA,CACEf,EAAA,OAAM,EACJA,EAAA,OACM,GAAAA,EAAA,OAAA3C,GAAA,CAAA0D,EAAA,SAAA1D,EAAA,EAAA,CAAA,CACoC,EAE5Cc,EAAA,QAAA,MAAA,CAAwB,CAAA,CACzB,CAAA,EAAA,MAAA,IAAA,CAGDA,EAAA,KAAA,IAAA,CAAmB,CAAA,EAEvB,MAAA,IAAA,QAEA,GAAAuC,EAAA,SAAA,EAAA,CACEvC,EAAA,QAAA,aAAA,EACA,MAAA,CAEFH,GAAA0C,EACE,QAAA,OAAAtB,EAAA,IAAA,KAAA,oBAAA,EAAA,QACoD,EAEtDjB,EAAA,QAAA,MAAA,EACA,KAEA,CAEJsC,IAAe,EAEjBQ,GAAAtE,EAAA,EAAA,EACAuE,GAAAhE,EAAA,CAAA,CAAA,EACAiE,GAAAP,GAAA,CACEM,GAAA,OAAA,EAAAA,GAAA,MAAA,EACAA,GAAA,KAAA,GAAAE,GAAAR,EAAA,IAAA,CAAA,EACAK,GAAA,MAAA,EAAuB,EAGzBI,GAAA1E,EAAA,EAAA,EACA2E,EAAApE,EAAA,CAA4B,QAAA,GACjB,QAAA,GACA,OAAA,GACD,GAAA,EACJ,CAAA,EAENqE,GAAAX,GAAA,CACE,KAAA,CAAA,GAAAY,EAAA,KAAA3C,CAAA,EAAA+B,EACAa,EAAAC,GAAA7C,CAAA,EACAyC,EAAA,QAAAzC,EACAyC,EAAA,OAAAG,EACAH,EAAA,GAAAE,EACAH,GAAA,MAAA,EAAyB,EAG3BM,GAAA,IAAA,CAEE,GAAAC,GAAA,KAAAN,EAAA,OAAA,EAAA,CACEnD,EAAA,MAAA,UAAA,OAAAyD,GAAA,OAAA,MAAA,EACAA,GAAA,UAAA,EACA,MAAA,CAEF1B,EAAA,eAAQoB,EAAA,GACK,GAAA,OAAAA,EAAA,SAAA,OAAAA,EAAA,OAC8B,EAAA,KAAA,IAAA,CAGvCnD,EAAA,QAAA,MAAA,EACA,MAAA0D,EAAA7B,EAAA,KAAA3C,GAAAA,EAAA,KAAAiE,EAAA,EAAA,EACAO,EAAA,KAAA,GAAA,OAAAP,EAAA,SAAA,OAAAA,EAAA,OAAqD,CAAA,EAAA,MAAA,IAAA,CAGrDnD,EAAA,MAAA,MAAA,CAAsB,CAAA,EAAA,QAAA,IAAA,CAGtBkD,GAAA,MAAA,EAAyB,CAAA,CAC1B,EAGLS,GAAAlB,GAAA,CACE,KAAA,CAAA,GAAAY,EAAA,KAAA3C,CAAA,EAAA+B,EACAV,EAAA,cAAAsB,CAAA,EAAA,KAAArB,GAAA,CAEI,KAAA,CAAA,KAAA4B,CAAA,EAAA5B,EAAA,KACAzD,EAAA,MAAA,GACAE,EAAA,MAAAmF,EACAjE,GAAAiE,EAAAlD,CAAA,EAEA1B,GAAY,CAAA,EAAA,MAAA,IAAA,CAGZgB,EAAA,MAAA,YAAA,CAA4B,CAAA,CAC7B,EAEL6D,GAAApB,GAAA,CACE,MAAAqB,EAAAjC,EAAA,UAAA3C,GAAAA,IAAAuD,CAAA,EACAI,GAAA,QAAA,YAAA,YAAA,EAAA,KAAA,IAAA,CAEId,EAAA,cAAAU,EAAA,EAAA,EAAA,KAAA,IAAA,CACEzC,EAAA,QAAA,MAAA,EACA6B,EAAA,OAAAiC,EAAA,CAAA,CAAmB,CAAA,CACpB,CAAA,EAAA,MAAA,IAAA,CAGD9D,EAAA,KAAA,MAAA,CAAqB,CAAA,CACtB,EAILrD,EAAA6B,EAAA,CAAA,EACAuF,GAAA7E,GAAA,CACEvC,EAAA,MAAAuC,CAAiB,EAEnB8E,GAAA3C,EAAA,IACE,KAAA,KAAAc,GAAA,MAAA,OAAAxF,EAAA,KAAA,CACO,EAGTsH,GAAAzF,EAAA,CAAA,EACA0F,EAAA7C,EAAA,IAAA,CACE,MAAA8C,GAAAF,GAAA,MAAA,GAAAtH,EAAA,MACAyH,EAAAH,GAAA,MAAAtH,EAAA,MACA,OAAAwF,GAAA,MAAA,MAAAgC,EAAAC,CAAA,CAAyC,CAAA,EAG3CC,GAAAhD,EAAuB,IAAAH,EAAAiB,GAAA,MAAA,OAAA,CAAAmC,EAAAC,IAAAD,EAAAC,EAAA,KAAA,CAAA,CAAA,CAC+C,EAEtEC,GAAAnD,EAAqB,IAAAH,EAAAW,EAAA,OAAA,CAAAyC,EAAAC,IAAAD,EAAAC,EAAA,KAAA,CAAA,CAAA,CACqC,EAE1DE,GAAAX,GAAA,CACEG,GAAA,MAAAH,CAAoB,EAKtBY,GAAA,IAAA,CACE1E,EAAA,QAAA,CAAkB,QAAA,MACP,CAAA,EAEX8B,IAAU,EAEZ6C,GAAA,IAAA,CACE,MAAA/B,EAAAf,EAAA,OAAAO,GAAAA,EAAA,WAAAZ,EAAA,KAAA,EAAA,IAAAtC,GAAAA,EAAA,EAAA,EAGA,GAAA0D,EAAA,SAAA,EAAA,CACE5C,EAAA,QAAA,UAAA,EACA,MAAA,CAEF,GAAA0C,EAAA,MAAA,CACE1C,EAAA,QAAA,qBAAA,EACA,MAAA,CAEF0C,EAAA,MAAA,GACAX,EAAA,cAAAa,EAAAlB,GAAA,KAAA,EAAA,KAAA,IAAA,CAEI1C,GAAY,CAAA,EAAA,MAAA,IAAA,CAGZgB,EAAA,MAAA,mBAAA,CAAmC,CAAA,EAAA,QAAA,IAAA,CAGnC,WAAA,IAAA,CACE0C,EAAA,MAAA,EAAuB,EAAA,GAAA,CAClB,CAAA,EAEX1C,EAAA,KAAA,iBAAA,CAAgC,EAGlC4E,GAAA7F,EAAA,CAAA,CAAA,EAGAA,EAAA,CAA2B,MAAA,KAClB,KAAA,IACD,CAAA,EAER,MAAA8F,GAAArG,EAAA,EAAA,EAKAsG,GAAAzD,EAAA,IAEEuD,GAAA,IAAA1F,GAAAA,EAAA,OAAA,CAAuC,EAazC6F,GAAAjB,GAAA,CACEe,GAAA,MAAAX,EAAA,MAAAJ,CAAA,EAAA,IAAqD,EAGvD,IAAAkB,GAAA,GACA,MAAAC,GAAA,IAAA,CACE,MAAArC,EAAAsB,EAAA,MAAA,IAAAhF,GAAAA,EAAA,EAAA,EACA0D,EAAA,SAAA,GAAAoC,KAGAA,GAAA,GACAjD,EAAA,yBAAAa,CAAA,EAAA,KAAAsC,GAAA,CACEF,GAAA,GACA,KAAA,CAAA,KAAAG,CAAA,EAAAD,EACAC,EAAA,SAAA,GAAAA,EAAA,SAAAjB,EAAA,MAAA,SAGAU,GAAA,OAAA,EAAAA,GAAA,MAAA,EACAV,EAAA,MAAA,QAAA,CAAAhF,EAAA4E,IAAA,CACE,KAAA,CAAA,MAAAsB,EAAA,QAAAC,CAAA,EAAAF,EAAArB,CAAA,EACA5E,EAAA,MAAAkG,EACAR,GAAA,KAAA,CAAA,MAAAQ,EAAA,QAAAC,EAAA,KAAAnG,EAAA,KAAA,KAAAA,EAAA,KAAA,GAAAA,EAAA,EAAA,CAAA,CAAyE,CAAA,EAC1E,CAAA,EACF,EAEHyC,GAAA,IAAA,CAEE,GADA,OAAA,aAAA,QAAA,iBAAA,GAAA,OAAAjD,EAAA,MAAA,EACA,EAAAA,EAAA,MAGA,IAAAwD,GAAA,OAAA+B,GAAA,OAAAtH,EAAA,MAAA,CACEsI,KACA,MAAA,CAEFA,KAAkB,CAAA,EAGpBK,GAAA,IAAA,CACExD,KACA9C,IACAb,EAAA,SAAA,sBAAA,EACAA,EAAA,SAAA,cAAA,CAA8B,CAAA,EAGhC,MAAAoH,GAAAlE,EAAA,IAAAlD,EAAA,QAAA,iBAAA,CAAA","x_google_ignoreList":[1,2]}
1
+ {"version":3,"file":"index-3a3af29f.js","sources":["../../src/apis/modules/action.ts","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/download.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/picture.mjs","../../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","<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\n size=\"default\"\n v-model=\"selectCategory\"\n filterable\n placeholder=\"请选择\"\n >\n <el-option label=\"全部\" value=\"all\" />\n <el-option label=\"默认\" value=\"default\" />\n <el-option\n v-for=\"item in categories\"\n :key=\"item.k\"\n :label=\"item.name\"\n :value=\"item.k\"\n />\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\n size=\"default\"\n v-model=\"selectTask\"\n filterable\n placeholder=\"请选择\"\n >\n <el-option label=\"全部\" value=\"all\" />\n <el-option\n v-for=\"item in filterTasks\"\n :key=\"item.key\"\n :label=\"item.name\"\n :value=\"item.key\"\n ></el-option>\n </el-select>\n </div>\n <div class=\"item\">\n <el-button\n :loading=\"batchDownStart\"\n :disabled=\"selectTask === 'all'\"\n type=\"primary\"\n size=\"default\"\n :icon=\"Download\"\n @click=\"handleDownloadTask\"\n >下载任务中的文件</el-button\n >\n </div>\n <div class=\"item\">\n <el-input\n size=\"default\"\n clearable\n placeholder=\"请输入要检索的内容\"\n :prefix-icon=\"Search\"\n v-model=\"searchWord\"\n >\n </el-input>\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 <arrow-down />\n </el-icon>\n </el-button>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item\n :disabled=\"selectItem.length === 0\"\n command=\"download\"\n >下载</el-dropdown-item\n >\n <el-dropdown-item\n :disabled=\"selectItem.length === 0\"\n command=\"delete\"\n >删除</el-dropdown-item\n >\n <el-dropdown-item\n :disabled=\"selectItem.length === 0\"\n command=\"excel\"\n >导出记录</el-dropdown-item\n >\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\n type=\"primary\"\n :disabled=\"selectItem.length === 0\"\n size=\"default\"\n >\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\">下载</el-dropdown-item>\n <el-dropdown-item command=\"delete\">删除</el-dropdown-item>\n <el-dropdown-item command=\"excel\">导出记录</el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n <el-button size=\"default\" :icon=\"Refresh\" @click=\"handleRefresh\"\n >刷新</el-button\n >\n <el-button\n title=\"导出表格中所有的数据\"\n type=\"success\"\n size=\"default\"\n :icon=\"DataAnalysis\"\n @click=\"\n () => {\n handleExportExcel(\n filterFiles,\n `筛选数据导出_${formatDate(\n new Date(),\n 'yyyy年MM月日hh时mm分ss秒'\n )}.xlsx`\n )\n }\n \"\n :disabled=\"showFilterFiles.length === 0\"\n >导出记录</el-button\n >\n <div class=\"control-item\">\n 显示图片\n <el-switch\n inline-prompt\n v-model=\"showImg\"\n active-color=\"#13ce66\"\n inactive-color=\"#ff4949\"\n active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n 展示原文件名\n <el-switch\n inline-prompt\n v-model=\"showOriginName\"\n active-color=\"#13ce66\"\n inactive-color=\"#ff4949\"\n active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n 显示提交人姓名\n <el-switch\n inline-prompt\n v-model=\"showPeople\"\n active-color=\"#13ce66\"\n inactive-color=\"#ff4949\"\n active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n ⏰ 查看下载历史\n <el-switch\n v-model=\"showHistoryPanel\"\n style=\"\n --el-switch-on-color: #13ce66;\n --el-switch-off-color: #ff4949;\n \"\n />\n </div>\n </div>\n </div>\n <div\n class=\"panel\"\n v-show=\"historyDownloadRecord.compressTask.length && !showHistoryPanel\"\n >\n <tip style=\"font-size: 16px\"\n >正在进行归档的任务\n {{ historyDownloadRecord.compressTask.length }}个</tip\n >\n <tip>详细归档记录点击右上角 “⏰查看下载历史”</tip>\n <p\n v-for=\"(record, idx) in historyDownloadRecord.compressTask\"\n :key=\"record.id\"\n class=\"tc\"\n style=\"margin-top: 10px\"\n >\n {{ idx + 1 }}. {{ record.tip }}\n <span\n v-loading=\"true\"\n element-loading-text=\"...\"\n style=\"--el-loading-spinner-size: 20px\"\n ></span>\n </p>\n </div>\n <div class=\"panel\" v-show=\"showHistoryPanel\">\n <tip style=\"font-size: 16px\"\n >”❤️下面展示历史的下载记录与归档任务完成情况❤️“</tip\n >\n <tip>”再也不需要在页面停留等待归档完成“</tip>\n <div>\n <el-table\n v-loading=\"isLoadingData\"\n element-loading-text=\"Loading...\"\n tooltip-effect=\"dark\"\n multipleTable\n ref=\"multipleTable\"\n @selection-change=\"handleSelectionChange\"\n stripe\n border\n :default-sort=\"{ prop: 'date', order: 'descending' }\"\n :max-height=\"666\"\n :data=\"historyDownloadRecord.actions\"\n style=\"width: 100%\"\n >\n <el-table-column prop=\"date\" label=\"触发时间\" width=\"200\">\n <template #default=\"scope\">{{\n formatDate(new Date(scope.row.date))\n }}</template>\n </el-table-column>\n <el-table-column prop=\"tip\" label=\"文件信息\"></el-table-column>\n <el-table-column prop=\"type\" label=\"任务类型\">\n <template #default=\"scope\">\n <el-link\n v-if=\"scope.row.type === ActionType.Compress\"\n type=\"primary\"\n >归档下载</el-link\n >\n <el-link v-else type=\"default\">普通下载</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\"\n ><el-link type=\"danger\">归档中...</el-link></span\n >\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\"\n ><el-link type=\"danger\">归档失败</el-link></span\n >\n </template>\n </el-table-column>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"140\">\n <template #default=\"scope\">\n <div\n v-loading=\"true\"\n v-if=\"scope.row.status === DownloadStatus.ARCHIVE\"\n >\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 @click=\"downLoadByUrl(scope.row.url)\" type=\"primary\"\n >下载</el-link\n >\n <el-link\n type=\"success\"\n style=\"margin-left: 10px\"\n @click=\"copyRes(scope.row.url)\"\n >链接</el-link\n >\n <el-link\n type=\"warning\"\n style=\"margin-left: 10px\"\n @click=\"\n () => {\n showLinkModel = true\n downloadUrl = scope.row.url\n }\n \"\n >二维码</el-link\n >\n </div>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"flex fc\">\n <el-pagination\n small\n :current-page=\"historyDownloadRecord.pageCurrent\"\n :page-count=\"historyDownloadRecord.pageCount\"\n :total=\"historyDownloadRecord.pageTotal\"\n layout=\"total, prev, pager, next\"\n @current-change=\"handleHistoryActionPageChange\"\n ></el-pagination>\n </div>\n </div>\n </div>\n <!-- 主体内容 -->\n <div class=\"panel\">\n <Tip>空间占用情况:{{ filterFileSize }} / {{ fileListSize }}</Tip>\n <Tip>↑ 仅供使用者参考,应用无存储空间上限,也不收费</Tip>\n <Tip\n ><strong\n >如果你觉得应用不错,<a\n style=\"color: #409eff\"\n href=\"http://docs.ep.sugarat.top/praise/index.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >请作者喝茶 🍵</a\n ></strong\n >\n <!-- <Praise>\n <el-button style=\"margin:0 0 2px;\" size=\"small\" type=\"primary\" text>Go!Go!❓</el-button>\n </Praise> -->\n </Tip>\n <el-table\n v-loading=\"isLoadingData\"\n element-loading-text=\"Loading...\"\n tooltip-effect=\"dark\"\n multipleTable\n ref=\"multipleTable\"\n @selection-change=\"handleSelectionChange\"\n stripe\n border\n :max-height=\"666\"\n :data=\"showFilterFiles\"\n style=\"width: 100%\"\n >\n <el-table-column type=\"selection\" width=\"55\" />\n <el-table-column prop=\"date\" label=\"提交时间\" width=\"160\">\n <template #default=\"scope\">{{\n formatDate(new Date(scope.row.date))\n }}</template>\n </el-table-column>\n <el-table-column\n prop=\"task_name\"\n label=\"任务\"\n width=\"150\"\n ></el-table-column>\n <el-table-column\n prop=\"name\"\n label=\"文件名\"\n width=\"200\"\n ></el-table-column>\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 scope.row.size === 0 ? '未知大小' : formatSize(scope.row.size)\n }}</template>\n </el-table-column>\n <template v-if=\"showImg\">\n <el-table-column label=\"缩略图\" width=\"120\">\n <template #default=\"scope\">\n <el-image\n @switch=\"handleSwitchImage\"\n @click=\"handleSwitchImage(scope.$index)\"\n preview-teleported\n :preview-src-list=\"previewImages\"\n :initial-index=\"scope.$index\"\n lazy\n style=\"width: 100px; height: 100px\"\n :src=\"scope.row.cover\"\n fit=\"cover\"\n >\n <template #viewer>\n <div class=\"imageDes\">{{ viewImageFilename }}</div>\n </template>\n <template #placeholder>\n <div class=\"imageLoading\">Loading...</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\n @click=\"checkInfo(scope.row)\"\n type=\"primary\"\n text\n size=\"small\"\n >查看提交信息</el-button\n >\n <el-button\n @click=\"rewriteFilename(scope.row)\"\n type=\"primary\"\n text\n size=\"small\"\n >修改文件名</el-button\n >\n <el-button\n @click=\"downloadOne(scope.row)\"\n type=\"primary\"\n text\n size=\"small\"\n >下载</el-button\n >\n <el-button\n @click=\"handleDelete(scope.row)\"\n type=\"primary\"\n text\n size=\"small\"\n >删除</el-button\n >\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\"\n @current-change=\"handlePageChange\"\n background\n :page-count=\"pageCount\"\n :page-sizes=\"[6, 10, 50, 100]\"\n :page-size=\"pageSize\"\n @size-change=\"handleSizeChange\"\n :total=\"filterFiles.length\"\n layout=\"total, sizes, prev, pager, next, jumper\"\n ></el-pagination>\n </div>\n <!-- 信息弹窗 -->\n <el-dialog\n :fullscreen=\"isMobile\"\n title=\"提交填写的信息\"\n v-model=\"showInfoDialog\"\n >\n <InfosForm :infos=\"infos\" :disabled=\"true\" />\n </el-dialog>\n <LinkDialog\n v-model:value=\"showLinkModel\"\n title=\"下载链接\"\n :link=\"downloadUrl\"\n ></LinkDialog>\n <el-dialog\n :fullscreen=\"isMobile\"\n title=\"修改文件名\"\n v-model=\"showRenameDialog\"\n >\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 >保存</el-button\n >\n <el-button @click=\"showRenameDialog = false\">取消</el-button>\n </el-form-item>\n </el-form>\n </div>\n </el-dialog>\n </div>\n</template>\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 Refresh,\n DataAnalysis,\n Download,\n Search,\n Picture\n} from '@element-plus/icons-vue'\nimport { useRoute } from 'vue-router'\nimport {\n copyRes,\n formatDate,\n formatSize,\n getFileSuffix,\n parseInfo\n} from '@/utils/stringUtil'\nimport { ActionServiceAPI, FileApi } from '@/apis'\nimport { downLoadByUrl, tableItem, tableToExcel } from '@/utils/networkUtil'\nimport Tip from '../tasks/components/infoPanel/tip.vue'\nimport InfosForm from '@/components/InfosForm/index.vue'\nimport { DownloadStatus, ActionType, filenamePattern } from '@/constants'\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\nconst 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}\nconst handleHistoryActionPageChange = (v) => {\n historyDownloadRecord.pageCurrent = v\n loadActions()\n}\n// 记录导出\nconst 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 JSON.parse(value.info).forEach((i: any) => {\n if (!pre.includes(i.text)) {\n pre.push(i.text)\n }\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 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 body.unshift(infosHeader)\n tableToExcel(\n headers,\n body,\n filename ||\n `数据导出_${formatDate(new Date(), 'yyyy年MM月日hh时mm分ss秒')}.xlsx`\n )\n ElMessage.success('导出成功')\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\nconst isLoadingData = ref(false)\n// 提交的所有文件\nconst files: FileApiTypes.File[] = reactive([])\nconst 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 // eslint-disable-next-line no-useless-escape\n t.info\n ])\n .replace(/[:'\"{},[\\]]/g, '')\n .includes(searchWord.value)\n : true\n )\n)\n\n/**\n * 清空所有选项\n */\nconst clearSelection = () => {\n multipleTable.value.clearSelection()\n}\n// 多选选中的项\nconst selectItem: any[] = reactive([])\nconst handleSelectionChange = (e: any) => {\n selectItem.splice(0, selectItem.length)\n selectItem.push(...e)\n}\nconst batchDownStart = ref(false)\nconst handleDropdownClick = (e: string) => {\n const ids: number[] = selectItem.map((v) => v.id)\n switch (e) {\n case 'download':\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([])\nconst 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})\nconst 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\nconst 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\nconst downloadOne = (e: any) => {\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 .catch(() => {\n ElMessage.error('文件已从服务器上移除')\n })\n}\nconst 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)\nconst 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)\nconst handlePageChange = (idx: number) => {\n pageCurrent.value = idx\n}\n\n// 刷新文件列表\n\nconst handleRefresh = () => {\n ElMessage.success({\n message: '刷新成功'\n })\n loadFiles()\n}\nconst 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>([])\nconst sortProps = reactive({\n order: null,\n prop: null\n})\nconst viewImageFilename = ref('')\nconst handleFilesSortChange = (v) => {\n sortProps.prop = v.prop\n sortProps.order = v.order\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\nconst handleSwitchImage = (idx: number) => {\n viewImageFilename.value = showFilterFiles.value[idx].name\n}\n\nlet fetching = false\nconst 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}\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 = computed(() => $store.getters['public/isMobile'])\n</script>\n<style scoped lang=\"scss\">\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.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</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","$store","useStore","$route","useRoute","showLinkModel","ref","downloadUrl","showImg","showPeople","showOriginName","showHistoryPanel","historyDownloadRecord","reactive","loadActions","compressTask","v","actions","sum","haveArchive","v2","DownloadStatus","ActionType","action","existIndex","downLoadByUrl","handleHistoryActionPageChange","handleExportExcel","files2","filename","ElMessage","baseHeaders","headers","infosHeader","pre","value","i","body","date","taskName","name","size","people","infoObj","info","_a","rows","formatDate","formatSize","tableToExcel","categories","computed","selectCategory","tasks","selectTask","filterTasks","selectTaskName","watchEffect","isLoadingData","files","loadFiles","FileApi","res","multipleTable","searchWord","filterFiles","f","t","clearSelection","selectItem","handleSelectionChange","e","batchDownStart","handleDropdownClick","ids","ElMessageBox","showInfoDialog","infos","checkInfo","parseInfo","showRenameDialog","renameForm","rewriteFilename","id","suffix","getFileSuffix","handleSaveNewName","filenamePattern","file","downloadOne","link","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","onMounted","isMobile"],"mappings":"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","x_google_ignoreList":[1,2]}
@@ -1,2 +1,2 @@
1
- import{N as ue,d as P,Q as T,f as S,D as ge,w as M,T as B,V as Ie,be as Le,k as G,bf as Te,ak as I,bg as ee,bh as pe,bi as He,O as v,bj as We,J as Me,ah as ae,b1 as se,r as $,av as je,b8 as De,Z as ye,$ as te,ag as he,o as re,ai as Se,bk as _,I as _e,W as Ee,a6 as Re,a7 as Ve,F as xe,ay as Ce,bl as ke,aj as be,b0 as Fe,a5 as qe,b2 as Ge,bm as Ue,aS as J,bn as Je,as as Ke,am as Qe,bo as Ye,i as Be,c as W,a as j,H as le,b as U,t as Ze,Y as Xe,aC as $e,g as et,u as tt,a1 as nt,j as C,bp as ot,_ as at}from"./index-62c7029f.js";import{t as ne}from"./aria-bc8e8b0f.js";import{d as st}from"./data-analysis-13490516.js";import{d as lt}from"./data-board-229a3bf5.js";const ut={name:"ElCollapseTransition"},rt=P({...ut,setup(e){const o=T("collapse-transition"),n={beforeEnter(t){t.dataset||(t.dataset={}),t.dataset.oldPaddingTop=t.style.paddingTop,t.dataset.oldPaddingBottom=t.style.paddingBottom,t.style.maxHeight=0,t.style.paddingTop=0,t.style.paddingBottom=0},enter(t){t.dataset.oldOverflow=t.style.overflow,t.scrollHeight!==0?(t.style.maxHeight="".concat(t.scrollHeight,"px"),t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom):(t.style.maxHeight=0,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom),t.style.overflow="hidden"},afterEnter(t){t.style.maxHeight="",t.style.overflow=t.dataset.oldOverflow},beforeLeave(t){t.dataset||(t.dataset={}),t.dataset.oldPaddingTop=t.style.paddingTop,t.dataset.oldPaddingBottom=t.style.paddingBottom,t.dataset.oldOverflow=t.style.overflow,t.style.maxHeight="".concat(t.scrollHeight,"px"),t.style.overflow="hidden"},leave(t){t.scrollHeight!==0&&(t.style.maxHeight=0,t.style.paddingTop=0,t.style.paddingBottom=0)},afterLeave(t){t.style.maxHeight="",t.style.overflow=t.dataset.oldOverflow,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom}};return(t,l)=>(S(),ge(Te,Ie({name:G(o).b()},Le(n)),{default:M(()=>[B(t.$slots,"default")]),_:3},16,["name"]))}});var oe=ue(rt,[["__file","/home/runner/work/element-plus/element-plus/packages/components/collapse-transition/src/collapse-transition.vue"]]);oe.install=e=>{e.component(oe.name,oe)};const it=oe;let dt=class{constructor(o,n){this.parent=o,this.domNode=n,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(o){o===this.subMenuItems.length?o=0:o<0&&(o=this.subMenuItems.length-1),this.subMenuItems[o].focus(),this.subIndex=o}addListeners(){const o=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,n=>{n.addEventListener("keydown",t=>{let l=!1;switch(t.code){case I.down:{this.gotoSubIndex(this.subIndex+1),l=!0;break}case I.up:{this.gotoSubIndex(this.subIndex-1),l=!0;break}case I.tab:{ne(o,"mouseleave");break}case I.enter:case I.space:{l=!0,t.currentTarget.click();break}}return l&&(t.preventDefault(),t.stopPropagation()),!1})})}},ct=class{constructor(o,n){this.domNode=o,this.submenu=null,this.submenu=null,this.init(n)}init(o){this.domNode.setAttribute("tabindex","0");const n=this.domNode.querySelector(".".concat(o,"-menu"));n&&(this.submenu=new dt(this,n)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",o=>{let n=!1;switch(o.code){case I.down:{ne(o.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),n=!0;break}case I.up:{ne(o.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),n=!0;break}case I.tab:{ne(o.currentTarget,"mouseleave");break}case I.enter:case I.space:{n=!0,o.currentTarget.click();break}}n&&o.preventDefault()})}},pt=class{constructor(o,n){this.domNode=o,this.init(n)}init(o){const n=this.domNode.childNodes;Array.from(n).forEach(t=>{t.nodeType===1&&new ct(t,o)})}};const mt=P({name:"ElMenuCollapseTransition",setup(){const e=T("menu");return{listeners:{onBeforeEnter:n=>n.style.opacity="0.2",onEnter(n,t){ee(n,"".concat(e.namespace.value,"-opacity-transition")),n.style.opacity="1",t()},onAfterEnter(n){pe(n,"".concat(e.namespace.value,"-opacity-transition")),n.style.opacity=""},onBeforeLeave(n){n.dataset||(n.dataset={}),He(n,e.m("collapse"))?(pe(n,e.m("collapse")),n.dataset.oldOverflow=n.style.overflow,n.dataset.scrollWidth=n.clientWidth.toString(),ee(n,e.m("collapse"))):(ee(n,e.m("collapse")),n.dataset.oldOverflow=n.style.overflow,n.dataset.scrollWidth=n.clientWidth.toString(),pe(n,e.m("collapse"))),n.style.width="".concat(n.scrollWidth,"px"),n.style.overflow="hidden"},onLeave(n){ee(n,"horizontal-collapse-transition"),n.style.width="".concat(n.dataset.scrollWidth,"px")}}}}});function vt(e,o,n,t,l,y){return S(),ge(Te,Ie({mode:"out-in"},e.listeners),{default:M(()=>[B(e.$slots,"default")]),_:3},16)}var ft=ue(mt,[["render",vt],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-collapse-transition.vue"]]);function Pe(e,o){const n=v(()=>{let l=e.parent;const y=[o.value];for(;l.type.name!=="ElMenu";)l.props.index&&y.unshift(l.props.index),l=l.parent;return y});return{parentMenu:v(()=>{let l=e.parent;for(;l&&!["ElMenu","ElSubMenu"].includes(l.type.name);)l=l.parent;return l}),indexPath:n}}function ht(e){return v(()=>{const n=e.backgroundColor;return n?new We(n).shade(20).toString():""})}const Ne=(e,o)=>{const n=T("menu");return v(()=>n.cssVarBlock({"text-color":e.textColor||"","hover-text-color":e.textColor||"","bg-color":e.backgroundColor||"","hover-bg-color":ht(e).value||"","active-color":e.activeTextColor||"",level:"".concat(o)}))},bt=Me({index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0},popperOffset:{type:Number,default:6}}),me="ElSubMenu";var we=P({name:me,props:bt,setup(e,{slots:o,expose:n}){const t=Ce(),{indexPath:l,parentMenu:y}=Pe(t,v(()=>e.index)),d=T("menu"),h=T("sub-menu"),a=ae("rootMenu");a||se(me,"can not inject root menu");const i=ae("subMenu:".concat(y.value.uid));i||se(me,"can not inject sub menu");const m=$({}),x=$({});let w;const K=$(!1),ie=$(),N=$(null),z=v(()=>c.value==="horizontal"&&L.value?"bottom-start":"right-start"),de=v(()=>c.value==="horizontal"&&L.value||c.value==="vertical"&&!a.props.collapse?je:De),L=v(()=>i.level===0),D=v(()=>e.popperAppendToBody===void 0?L.value:!!e.popperAppendToBody),Q=v(()=>a.props.collapse?"".concat(d.namespace.value,"-zoom-in-left"):"".concat(d.namespace.value,"-zoom-in-top")),R=v(()=>c.value==="horizontal"&&L.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","left-start","bottom-start","bottom-end","top-start","top-end"]),E=v(()=>a.openedMenus.includes(e.index)),s=v(()=>{let p=!1;return Object.values(m.value).forEach(g=>{g.active&&(p=!0)}),Object.values(x.value).forEach(g=>{g.active&&(p=!0)}),p}),u=v(()=>a.props.backgroundColor||""),r=v(()=>a.props.activeTextColor||""),b=v(()=>a.props.textColor||""),c=v(()=>a.props.mode),k=ye({index:e.index,indexPath:l,active:s}),Y=v(()=>c.value!=="horizontal"?{color:b.value}:{borderBottomColor:s.value?a.props.activeTextColor?r.value:"":"transparent",color:s.value?r.value:b.value}),Z=()=>{var p,g,f;return(f=(g=(p=N.value)==null?void 0:p.popperRef)==null?void 0:g.popperInstanceRef)==null?void 0:f.destroy()},ce=p=>{p||Z()},V=()=>{a.props.menuTrigger==="hover"&&a.props.mode==="horizontal"||a.props.collapse&&a.props.mode==="vertical"||e.disabled||a.handleSubMenuClick({index:e.index,indexPath:l.value,active:s.value})},H=(p,g=e.showTimeout)=>{var f;p.type!=="focus"&&(a.props.menuTrigger==="click"&&a.props.mode==="horizontal"||!a.props.collapse&&a.props.mode==="vertical"||e.disabled||(i.mouseInChild.value=!0,w==null||w(),{stop:w}=ke(()=>{a.openMenu(e.index,l.value)},g),D.value&&((f=y.value.vnode.el)==null||f.dispatchEvent(new MouseEvent("mouseenter")))))},F=(p=!1)=>{var g,f;a.props.menuTrigger==="click"&&a.props.mode==="horizontal"||!a.props.collapse&&a.props.mode==="vertical"||(w==null||w(),i.mouseInChild.value=!1,{stop:w}=ke(()=>!K.value&&a.closeMenu(e.index,l.value),e.hideTimeout),D.value&&p&&((g=t.parent)==null?void 0:g.type.name)==="ElSubMenu"&&((f=i.handleMouseleave)==null||f.call(i,!0)))};te(()=>a.props.collapse,p=>ce(!!p));{const p=f=>{x.value[f.index]=f},g=f=>{delete x.value[f.index]};he("subMenu:".concat(t.uid),{addSubMenu:p,removeSubMenu:g,handleMouseleave:F,mouseInChild:K,level:i.level+1})}return n({opened:E}),re(()=>{a.addSubMenu(k),i.addSubMenu(k)}),Se(()=>{i.removeSubMenu(k),a.removeSubMenu(k)}),()=>{var p;const g=[(p=o.title)==null?void 0:p.call(o),_(_e,{class:h.e("icon-arrow")},{default:()=>_(de.value)})],f=Ne(a.props,i.level+1),q=a.isMenuPopup?_(Ee,{ref:N,visible:E.value,effect:"light",pure:!0,offset:e.popperOffset,showArrow:!1,persistent:!0,popperClass:e.popperClass,placement:z.value,teleported:D.value,fallbackPlacements:R.value,transition:Q.value,gpuAcceleration:!1},{content:()=>{var A;return _("div",{class:[d.m(c.value),d.m("popup-container"),e.popperClass],onMouseenter:O=>H(O,100),onMouseleave:()=>F(!0),onFocus:O=>H(O,100)},[_("ul",{class:[d.b(),d.m("popup"),d.m("popup-".concat(z.value))],style:f.value},[(A=o.default)==null?void 0:A.call(o)])])},default:()=>_("div",{class:h.e("title"),style:[Y.value,{backgroundColor:u.value}],onClick:V},g)}):_(xe,{},[_("div",{class:h.e("title"),style:[Y.value,{backgroundColor:u.value}],ref:ie,onClick:V},g),_(it,{},{default:()=>{var A;return Re(_("ul",{role:"menu",class:[d.b(),d.m("inline")],style:f.value},[(A=o.default)==null?void 0:A.call(o)]),[[Ve,E.value]])}})]);return _("li",{class:[h.b(),h.is("active",s.value),h.is("opened",E.value),h.is("disabled",e.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:E.value,onMouseenter:H,onMouseleave:()=>F(!0),onFocus:H},[q])}}});const gt=Me({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:be(Array),default:()=>Fe([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0}}),ve=e=>Array.isArray(e)&&e.every(o=>J(o)),Mt={close:(e,o)=>J(e)&&ve(o),open:(e,o)=>J(e)&&ve(o),select:(e,o,n,t)=>J(e)&&ve(o)&&Je(n)&&(t===void 0||t instanceof Promise)};var yt=P({name:"ElMenu",props:gt,emits:Mt,setup(e,{emit:o,slots:n,expose:t}){const l=Ce(),y=l.appContext.config.globalProperties.$router,d=$(),h=T("menu"),a=T("sub-menu"),i=$(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),m=$(e.defaultActive),x=$({}),w=$({}),K=v(()=>e.mode==="horizontal"||e.mode==="vertical"&&e.collapse),ie=()=>{const s=m.value&&x.value[m.value];if(!s||e.mode==="horizontal"||e.collapse)return;s.indexPath.forEach(r=>{const b=w.value[r];b&&N(r,b.indexPath)})},N=(s,u)=>{i.value.includes(s)||(e.uniqueOpened&&(i.value=i.value.filter(r=>u.includes(r))),i.value.push(s),o("open",s,u))},z=(s,u)=>{const r=i.value.indexOf(s);r!==-1&&i.value.splice(r,1),o("close",s,u)},de=({index:s,indexPath:u})=>{i.value.includes(s)?z(s,u):N(s,u)},L=s=>{(e.mode==="horizontal"||e.collapse)&&(i.value=[]);const{index:u,indexPath:r}=s;if(!(u===void 0||r===void 0))if(e.router&&y){const b=s.route||u,c=y.push(b).then(k=>(k||(m.value=u),k));o("select",u,r,{index:u,indexPath:r,route:b},c)}else m.value=u,o("select",u,r,{index:u,indexPath:r})},D=s=>{const u=x.value,r=u[s]||m.value&&u[m.value]||u[e.defaultActive];r?m.value=r.index:m.value=s},Q=()=>{Ke(()=>l.proxy.$forceUpdate())};te(()=>e.defaultActive,s=>{x.value[s]||(m.value=""),D(s)}),te(()=>e.collapse,s=>{s&&(i.value=[])}),te(x.value,ie);let R;qe(()=>{e.mode==="horizontal"&&e.ellipsis?R=Ge(d,Q).stop:R==null||R()});{const s=c=>{w.value[c.index]=c},u=c=>{delete w.value[c.index]};he("rootMenu",ye({props:e,openedMenus:i,items:x,subMenus:w,activeIndex:m,isMenuPopup:K,addMenuItem:c=>{x.value[c.index]=c},removeMenuItem:c=>{delete x.value[c.index]},addSubMenu:s,removeSubMenu:u,openMenu:N,closeMenu:z,handleMenuItemClick:L,handleSubMenuClick:de})),he("subMenu:".concat(l.uid),{addSubMenu:s,removeSubMenu:u,mouseInChild:$(!1),level:0})}re(()=>{e.mode==="horizontal"&&new pt(l.vnode.el,h.namespace.value)}),t({open:u=>{const{indexPath:r}=w.value[u];r.forEach(b=>N(b,r))},close:z,handleResize:Q});const E=s=>{const u=Array.isArray(s)?s:[s],r=[];return u.forEach(b=>{Array.isArray(b.children)?r.push(...E(b.children)):r.push(b)}),r};return()=>{var s,u,r,b;let c=(u=(s=n.default)==null?void 0:s.call(n))!=null?u:[];const k=[];if(e.mode==="horizontal"&&d.value){const ce=Array.from((b=(r=d.value)==null?void 0:r.childNodes)!=null?b:[]).filter(X=>X.nodeName!=="#text"||X.nodeValue),V=E(c),H=64,F=Number.parseInt(getComputedStyle(d.value).paddingLeft,10),p=Number.parseInt(getComputedStyle(d.value).paddingRight,10),g=d.value.clientWidth-F-p;let f=0,q=0;ce.forEach((X,ze)=>{f+=X.offsetWidth||0,f<=g-H&&(q=ze+1)});const A=V.slice(0,q),O=V.slice(q);O!=null&&O.length&&e.ellipsis&&(c=A,k.push(_(we,{index:"sub-menu-more",class:a.e("hide-arrow")},{title:()=>_(_e,{class:a.e("icon-more")},{default:()=>_(Ue)}),default:()=>O})))}const Y=Ne(e,0),Z=_("ul",{key:String(e.collapse),role:"menubar",ref:d,style:Y.value,class:{[h.b()]:!0,[h.m(e.mode)]:!0,[h.m("collapse")]:e.collapse}},[...c,...k]);return e.collapseTransition&&e.mode==="vertical"?_(ft,()=>Z):Z}}});const _t=Me({index:{type:be([String,null]),default:null},route:{type:be([String,Object])},disabled:Boolean}),xt={click:e=>J(e.index)&&Array.isArray(e.indexPath)},fe="ElMenuItem",Ct=P({name:fe,components:{ElTooltip:Ee},props:_t,emits:xt,setup(e,{emit:o}){const n=Ce(),t=ae("rootMenu"),l=T("menu"),y=T("menu-item");t||se(fe,"can not inject root menu");const{parentMenu:d,indexPath:h}=Pe(n,Qe(e,"index")),a=ae("subMenu:".concat(d.value.uid));a||se(fe,"can not inject sub menu");const i=v(()=>e.index===t.activeIndex),m=ye({index:e.index,indexPath:h,active:i}),x=()=>{e.disabled||(t.handleMenuItemClick({index:e.index,indexPath:h.value,route:e.route}),o("click",m))};return re(()=>{a.addSubMenu(m),t.addMenuItem(m)}),Se(()=>{a.removeSubMenu(m),t.removeMenuItem(m)}),{Effect:Ye,parentMenu:d,rootMenu:t,active:i,nsMenu:l,nsMenuItem:y,handleClick:x}}});function $t(e,o,n,t,l,y){const d=Be("el-tooltip");return S(),W("li",{class:le([e.nsMenuItem.b(),e.nsMenuItem.is("active",e.active),e.nsMenuItem.is("disabled",e.disabled)]),role:"menuitem",tabindex:"-1",onClick:o[0]||(o[0]=(...h)=>e.handleClick&&e.handleClick(...h))},[e.parentMenu.type.name==="ElMenu"&&e.rootMenu.props.collapse&&e.$slots.title?(S(),ge(d,{key:0,effect:e.Effect.DARK,placement:"right","fallback-placements":["left"],persistent:""},{content:M(()=>[B(e.$slots,"title")]),default:M(()=>[j("div",{class:le(e.nsMenu.be("tooltip","trigger"))},[B(e.$slots,"default")],2)]),_:3},8,["effect"])):(S(),W(xe,{key:1},[B(e.$slots,"default"),B(e.$slots,"title")],64))],2)}var Ae=ue(Ct,[["render",$t],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-item.vue"]]);const wt={title:String},kt="ElMenuItemGroup",It=P({name:kt,props:wt,setup(){return{ns:T("menu-item-group")}}});function Tt(e,o,n,t,l,y){return S(),W("li",{class:le(e.ns.b())},[j("div",{class:le(e.ns.e("title"))},[e.$slots.title?B(e.$slots,"title",{key:1}):(S(),W(xe,{key:0},[U(Ze(e.title),1)],64))],2),j("ul",null,[B(e.$slots,"default")])],2)}var Oe=ue(It,[["render",Tt],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-item-group.vue"]]);const St=Xe(yt,{MenuItem:Ae,MenuItemGroup:Oe,SubMenu:we}),Et=$e(Ae);$e(Oe);$e(we);const Bt=P({name:"Setting"}),Pt={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Nt=j("path",{fill:"currentColor",d:"M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357.12 357.12 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a351.616 351.616 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357.12 357.12 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294.113 294.113 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293.12 293.12 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294.113 294.113 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288.282 288.282 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293.12 293.12 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a287.616 287.616 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384zm0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256z"},null,-1),At=[Nt];function Ot(e,o,n,t,l,y){return S(),W("svg",Pt,At)}var zt=et(Bt,[["render",Ot]]);const Lt={class:"monitor"},Ht={class:"navs"},Wt={class:"container"},jt=P({__name:"index",setup(e){const o=$("overview"),n=$(!1),t=tt(),l=nt(),y=d=>{l.path.endsWith(d)||t.replace({path:d})};return re(()=>{const d=l.path.split("/").slice(-1)[0];o.value=d}),(d,h)=>{const a=_e,i=Et,m=St,x=Be("router-view");return S(),W("div",Lt,[j("div",Ht,[C(m,{"default-active":o.value,class:"el-menu-nav",collapse:n.value,onSelect:y},{default:M(()=>[C(i,{index:"overview"},{title:M(()=>[U("概况")]),default:M(()=>[C(a,null,{default:M(()=>[C(G(st))]),_:1})]),_:1}),C(i,{index:"user"},{title:M(()=>[U("用户")]),default:M(()=>[C(a,null,{default:M(()=>[C(G(ot))]),_:1})]),_:1}),C(i,{index:"wish"},{title:M(()=>[U("需求")]),default:M(()=>[C(a,null,{default:M(()=>[C(G(lt))]),_:1})]),_:1}),C(i,{index:"config"},{title:M(()=>[U("配置")]),default:M(()=>[C(a,null,{default:M(()=>[C(G(zt))]),_:1})]),_:1})]),_:1},8,["default-active","collapse"])]),j("div",Wt,[C(x)])])}}});const Jt=at(jt,[["__scopeId","data-v-67f8ea8e"]]);export{Jt as default};
2
- //# sourceMappingURL=index-d32645f3.js.map
1
+ import{N as ue,d as P,Q as T,f as S,D as ge,w as M,T as B,V as Ie,be as Le,k as G,bf as Te,ak as I,bg as ee,bh as pe,bi as He,O as v,bj as We,J as Me,ah as ae,b1 as se,r as $,av as je,b8 as De,Z as ye,$ as te,ag as he,o as re,ai as Se,bk as _,I as _e,W as Ee,a6 as Re,a7 as Ve,F as xe,ay as Ce,bl as ke,aj as be,b0 as Fe,a5 as qe,b2 as Ge,bm as Ue,aS as J,bn as Je,as as Ke,am as Qe,bo as Ye,i as Be,c as W,a as j,H as le,b as U,t as Ze,Y as Xe,aC as $e,g as et,u as tt,a1 as nt,j as C,bp as ot,_ as at}from"./index-ce410282.js";import{t as ne}from"./aria-bc8e8b0f.js";import{d as st}from"./data-analysis-b5271288.js";import{d as lt}from"./data-board-fac5314d.js";const ut={name:"ElCollapseTransition"},rt=P({...ut,setup(e){const o=T("collapse-transition"),n={beforeEnter(t){t.dataset||(t.dataset={}),t.dataset.oldPaddingTop=t.style.paddingTop,t.dataset.oldPaddingBottom=t.style.paddingBottom,t.style.maxHeight=0,t.style.paddingTop=0,t.style.paddingBottom=0},enter(t){t.dataset.oldOverflow=t.style.overflow,t.scrollHeight!==0?(t.style.maxHeight="".concat(t.scrollHeight,"px"),t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom):(t.style.maxHeight=0,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom),t.style.overflow="hidden"},afterEnter(t){t.style.maxHeight="",t.style.overflow=t.dataset.oldOverflow},beforeLeave(t){t.dataset||(t.dataset={}),t.dataset.oldPaddingTop=t.style.paddingTop,t.dataset.oldPaddingBottom=t.style.paddingBottom,t.dataset.oldOverflow=t.style.overflow,t.style.maxHeight="".concat(t.scrollHeight,"px"),t.style.overflow="hidden"},leave(t){t.scrollHeight!==0&&(t.style.maxHeight=0,t.style.paddingTop=0,t.style.paddingBottom=0)},afterLeave(t){t.style.maxHeight="",t.style.overflow=t.dataset.oldOverflow,t.style.paddingTop=t.dataset.oldPaddingTop,t.style.paddingBottom=t.dataset.oldPaddingBottom}};return(t,l)=>(S(),ge(Te,Ie({name:G(o).b()},Le(n)),{default:M(()=>[B(t.$slots,"default")]),_:3},16,["name"]))}});var oe=ue(rt,[["__file","/home/runner/work/element-plus/element-plus/packages/components/collapse-transition/src/collapse-transition.vue"]]);oe.install=e=>{e.component(oe.name,oe)};const it=oe;let dt=class{constructor(o,n){this.parent=o,this.domNode=n,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(o){o===this.subMenuItems.length?o=0:o<0&&(o=this.subMenuItems.length-1),this.subMenuItems[o].focus(),this.subIndex=o}addListeners(){const o=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,n=>{n.addEventListener("keydown",t=>{let l=!1;switch(t.code){case I.down:{this.gotoSubIndex(this.subIndex+1),l=!0;break}case I.up:{this.gotoSubIndex(this.subIndex-1),l=!0;break}case I.tab:{ne(o,"mouseleave");break}case I.enter:case I.space:{l=!0,t.currentTarget.click();break}}return l&&(t.preventDefault(),t.stopPropagation()),!1})})}},ct=class{constructor(o,n){this.domNode=o,this.submenu=null,this.submenu=null,this.init(n)}init(o){this.domNode.setAttribute("tabindex","0");const n=this.domNode.querySelector(".".concat(o,"-menu"));n&&(this.submenu=new dt(this,n)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",o=>{let n=!1;switch(o.code){case I.down:{ne(o.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),n=!0;break}case I.up:{ne(o.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),n=!0;break}case I.tab:{ne(o.currentTarget,"mouseleave");break}case I.enter:case I.space:{n=!0,o.currentTarget.click();break}}n&&o.preventDefault()})}},pt=class{constructor(o,n){this.domNode=o,this.init(n)}init(o){const n=this.domNode.childNodes;Array.from(n).forEach(t=>{t.nodeType===1&&new ct(t,o)})}};const mt=P({name:"ElMenuCollapseTransition",setup(){const e=T("menu");return{listeners:{onBeforeEnter:n=>n.style.opacity="0.2",onEnter(n,t){ee(n,"".concat(e.namespace.value,"-opacity-transition")),n.style.opacity="1",t()},onAfterEnter(n){pe(n,"".concat(e.namespace.value,"-opacity-transition")),n.style.opacity=""},onBeforeLeave(n){n.dataset||(n.dataset={}),He(n,e.m("collapse"))?(pe(n,e.m("collapse")),n.dataset.oldOverflow=n.style.overflow,n.dataset.scrollWidth=n.clientWidth.toString(),ee(n,e.m("collapse"))):(ee(n,e.m("collapse")),n.dataset.oldOverflow=n.style.overflow,n.dataset.scrollWidth=n.clientWidth.toString(),pe(n,e.m("collapse"))),n.style.width="".concat(n.scrollWidth,"px"),n.style.overflow="hidden"},onLeave(n){ee(n,"horizontal-collapse-transition"),n.style.width="".concat(n.dataset.scrollWidth,"px")}}}}});function vt(e,o,n,t,l,y){return S(),ge(Te,Ie({mode:"out-in"},e.listeners),{default:M(()=>[B(e.$slots,"default")]),_:3},16)}var ft=ue(mt,[["render",vt],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-collapse-transition.vue"]]);function Pe(e,o){const n=v(()=>{let l=e.parent;const y=[o.value];for(;l.type.name!=="ElMenu";)l.props.index&&y.unshift(l.props.index),l=l.parent;return y});return{parentMenu:v(()=>{let l=e.parent;for(;l&&!["ElMenu","ElSubMenu"].includes(l.type.name);)l=l.parent;return l}),indexPath:n}}function ht(e){return v(()=>{const n=e.backgroundColor;return n?new We(n).shade(20).toString():""})}const Ne=(e,o)=>{const n=T("menu");return v(()=>n.cssVarBlock({"text-color":e.textColor||"","hover-text-color":e.textColor||"","bg-color":e.backgroundColor||"","hover-bg-color":ht(e).value||"","active-color":e.activeTextColor||"",level:"".concat(o)}))},bt=Me({index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0},popperOffset:{type:Number,default:6}}),me="ElSubMenu";var we=P({name:me,props:bt,setup(e,{slots:o,expose:n}){const t=Ce(),{indexPath:l,parentMenu:y}=Pe(t,v(()=>e.index)),d=T("menu"),h=T("sub-menu"),a=ae("rootMenu");a||se(me,"can not inject root menu");const i=ae("subMenu:".concat(y.value.uid));i||se(me,"can not inject sub menu");const m=$({}),x=$({});let w;const K=$(!1),ie=$(),N=$(null),z=v(()=>c.value==="horizontal"&&L.value?"bottom-start":"right-start"),de=v(()=>c.value==="horizontal"&&L.value||c.value==="vertical"&&!a.props.collapse?je:De),L=v(()=>i.level===0),D=v(()=>e.popperAppendToBody===void 0?L.value:!!e.popperAppendToBody),Q=v(()=>a.props.collapse?"".concat(d.namespace.value,"-zoom-in-left"):"".concat(d.namespace.value,"-zoom-in-top")),R=v(()=>c.value==="horizontal"&&L.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","left-start","bottom-start","bottom-end","top-start","top-end"]),E=v(()=>a.openedMenus.includes(e.index)),s=v(()=>{let p=!1;return Object.values(m.value).forEach(g=>{g.active&&(p=!0)}),Object.values(x.value).forEach(g=>{g.active&&(p=!0)}),p}),u=v(()=>a.props.backgroundColor||""),r=v(()=>a.props.activeTextColor||""),b=v(()=>a.props.textColor||""),c=v(()=>a.props.mode),k=ye({index:e.index,indexPath:l,active:s}),Y=v(()=>c.value!=="horizontal"?{color:b.value}:{borderBottomColor:s.value?a.props.activeTextColor?r.value:"":"transparent",color:s.value?r.value:b.value}),Z=()=>{var p,g,f;return(f=(g=(p=N.value)==null?void 0:p.popperRef)==null?void 0:g.popperInstanceRef)==null?void 0:f.destroy()},ce=p=>{p||Z()},V=()=>{a.props.menuTrigger==="hover"&&a.props.mode==="horizontal"||a.props.collapse&&a.props.mode==="vertical"||e.disabled||a.handleSubMenuClick({index:e.index,indexPath:l.value,active:s.value})},H=(p,g=e.showTimeout)=>{var f;p.type!=="focus"&&(a.props.menuTrigger==="click"&&a.props.mode==="horizontal"||!a.props.collapse&&a.props.mode==="vertical"||e.disabled||(i.mouseInChild.value=!0,w==null||w(),{stop:w}=ke(()=>{a.openMenu(e.index,l.value)},g),D.value&&((f=y.value.vnode.el)==null||f.dispatchEvent(new MouseEvent("mouseenter")))))},F=(p=!1)=>{var g,f;a.props.menuTrigger==="click"&&a.props.mode==="horizontal"||!a.props.collapse&&a.props.mode==="vertical"||(w==null||w(),i.mouseInChild.value=!1,{stop:w}=ke(()=>!K.value&&a.closeMenu(e.index,l.value),e.hideTimeout),D.value&&p&&((g=t.parent)==null?void 0:g.type.name)==="ElSubMenu"&&((f=i.handleMouseleave)==null||f.call(i,!0)))};te(()=>a.props.collapse,p=>ce(!!p));{const p=f=>{x.value[f.index]=f},g=f=>{delete x.value[f.index]};he("subMenu:".concat(t.uid),{addSubMenu:p,removeSubMenu:g,handleMouseleave:F,mouseInChild:K,level:i.level+1})}return n({opened:E}),re(()=>{a.addSubMenu(k),i.addSubMenu(k)}),Se(()=>{i.removeSubMenu(k),a.removeSubMenu(k)}),()=>{var p;const g=[(p=o.title)==null?void 0:p.call(o),_(_e,{class:h.e("icon-arrow")},{default:()=>_(de.value)})],f=Ne(a.props,i.level+1),q=a.isMenuPopup?_(Ee,{ref:N,visible:E.value,effect:"light",pure:!0,offset:e.popperOffset,showArrow:!1,persistent:!0,popperClass:e.popperClass,placement:z.value,teleported:D.value,fallbackPlacements:R.value,transition:Q.value,gpuAcceleration:!1},{content:()=>{var A;return _("div",{class:[d.m(c.value),d.m("popup-container"),e.popperClass],onMouseenter:O=>H(O,100),onMouseleave:()=>F(!0),onFocus:O=>H(O,100)},[_("ul",{class:[d.b(),d.m("popup"),d.m("popup-".concat(z.value))],style:f.value},[(A=o.default)==null?void 0:A.call(o)])])},default:()=>_("div",{class:h.e("title"),style:[Y.value,{backgroundColor:u.value}],onClick:V},g)}):_(xe,{},[_("div",{class:h.e("title"),style:[Y.value,{backgroundColor:u.value}],ref:ie,onClick:V},g),_(it,{},{default:()=>{var A;return Re(_("ul",{role:"menu",class:[d.b(),d.m("inline")],style:f.value},[(A=o.default)==null?void 0:A.call(o)]),[[Ve,E.value]])}})]);return _("li",{class:[h.b(),h.is("active",s.value),h.is("opened",E.value),h.is("disabled",e.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:E.value,onMouseenter:H,onMouseleave:()=>F(!0),onFocus:H},[q])}}});const gt=Me({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:be(Array),default:()=>Fe([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0}}),ve=e=>Array.isArray(e)&&e.every(o=>J(o)),Mt={close:(e,o)=>J(e)&&ve(o),open:(e,o)=>J(e)&&ve(o),select:(e,o,n,t)=>J(e)&&ve(o)&&Je(n)&&(t===void 0||t instanceof Promise)};var yt=P({name:"ElMenu",props:gt,emits:Mt,setup(e,{emit:o,slots:n,expose:t}){const l=Ce(),y=l.appContext.config.globalProperties.$router,d=$(),h=T("menu"),a=T("sub-menu"),i=$(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),m=$(e.defaultActive),x=$({}),w=$({}),K=v(()=>e.mode==="horizontal"||e.mode==="vertical"&&e.collapse),ie=()=>{const s=m.value&&x.value[m.value];if(!s||e.mode==="horizontal"||e.collapse)return;s.indexPath.forEach(r=>{const b=w.value[r];b&&N(r,b.indexPath)})},N=(s,u)=>{i.value.includes(s)||(e.uniqueOpened&&(i.value=i.value.filter(r=>u.includes(r))),i.value.push(s),o("open",s,u))},z=(s,u)=>{const r=i.value.indexOf(s);r!==-1&&i.value.splice(r,1),o("close",s,u)},de=({index:s,indexPath:u})=>{i.value.includes(s)?z(s,u):N(s,u)},L=s=>{(e.mode==="horizontal"||e.collapse)&&(i.value=[]);const{index:u,indexPath:r}=s;if(!(u===void 0||r===void 0))if(e.router&&y){const b=s.route||u,c=y.push(b).then(k=>(k||(m.value=u),k));o("select",u,r,{index:u,indexPath:r,route:b},c)}else m.value=u,o("select",u,r,{index:u,indexPath:r})},D=s=>{const u=x.value,r=u[s]||m.value&&u[m.value]||u[e.defaultActive];r?m.value=r.index:m.value=s},Q=()=>{Ke(()=>l.proxy.$forceUpdate())};te(()=>e.defaultActive,s=>{x.value[s]||(m.value=""),D(s)}),te(()=>e.collapse,s=>{s&&(i.value=[])}),te(x.value,ie);let R;qe(()=>{e.mode==="horizontal"&&e.ellipsis?R=Ge(d,Q).stop:R==null||R()});{const s=c=>{w.value[c.index]=c},u=c=>{delete w.value[c.index]};he("rootMenu",ye({props:e,openedMenus:i,items:x,subMenus:w,activeIndex:m,isMenuPopup:K,addMenuItem:c=>{x.value[c.index]=c},removeMenuItem:c=>{delete x.value[c.index]},addSubMenu:s,removeSubMenu:u,openMenu:N,closeMenu:z,handleMenuItemClick:L,handleSubMenuClick:de})),he("subMenu:".concat(l.uid),{addSubMenu:s,removeSubMenu:u,mouseInChild:$(!1),level:0})}re(()=>{e.mode==="horizontal"&&new pt(l.vnode.el,h.namespace.value)}),t({open:u=>{const{indexPath:r}=w.value[u];r.forEach(b=>N(b,r))},close:z,handleResize:Q});const E=s=>{const u=Array.isArray(s)?s:[s],r=[];return u.forEach(b=>{Array.isArray(b.children)?r.push(...E(b.children)):r.push(b)}),r};return()=>{var s,u,r,b;let c=(u=(s=n.default)==null?void 0:s.call(n))!=null?u:[];const k=[];if(e.mode==="horizontal"&&d.value){const ce=Array.from((b=(r=d.value)==null?void 0:r.childNodes)!=null?b:[]).filter(X=>X.nodeName!=="#text"||X.nodeValue),V=E(c),H=64,F=Number.parseInt(getComputedStyle(d.value).paddingLeft,10),p=Number.parseInt(getComputedStyle(d.value).paddingRight,10),g=d.value.clientWidth-F-p;let f=0,q=0;ce.forEach((X,ze)=>{f+=X.offsetWidth||0,f<=g-H&&(q=ze+1)});const A=V.slice(0,q),O=V.slice(q);O!=null&&O.length&&e.ellipsis&&(c=A,k.push(_(we,{index:"sub-menu-more",class:a.e("hide-arrow")},{title:()=>_(_e,{class:a.e("icon-more")},{default:()=>_(Ue)}),default:()=>O})))}const Y=Ne(e,0),Z=_("ul",{key:String(e.collapse),role:"menubar",ref:d,style:Y.value,class:{[h.b()]:!0,[h.m(e.mode)]:!0,[h.m("collapse")]:e.collapse}},[...c,...k]);return e.collapseTransition&&e.mode==="vertical"?_(ft,()=>Z):Z}}});const _t=Me({index:{type:be([String,null]),default:null},route:{type:be([String,Object])},disabled:Boolean}),xt={click:e=>J(e.index)&&Array.isArray(e.indexPath)},fe="ElMenuItem",Ct=P({name:fe,components:{ElTooltip:Ee},props:_t,emits:xt,setup(e,{emit:o}){const n=Ce(),t=ae("rootMenu"),l=T("menu"),y=T("menu-item");t||se(fe,"can not inject root menu");const{parentMenu:d,indexPath:h}=Pe(n,Qe(e,"index")),a=ae("subMenu:".concat(d.value.uid));a||se(fe,"can not inject sub menu");const i=v(()=>e.index===t.activeIndex),m=ye({index:e.index,indexPath:h,active:i}),x=()=>{e.disabled||(t.handleMenuItemClick({index:e.index,indexPath:h.value,route:e.route}),o("click",m))};return re(()=>{a.addSubMenu(m),t.addMenuItem(m)}),Se(()=>{a.removeSubMenu(m),t.removeMenuItem(m)}),{Effect:Ye,parentMenu:d,rootMenu:t,active:i,nsMenu:l,nsMenuItem:y,handleClick:x}}});function $t(e,o,n,t,l,y){const d=Be("el-tooltip");return S(),W("li",{class:le([e.nsMenuItem.b(),e.nsMenuItem.is("active",e.active),e.nsMenuItem.is("disabled",e.disabled)]),role:"menuitem",tabindex:"-1",onClick:o[0]||(o[0]=(...h)=>e.handleClick&&e.handleClick(...h))},[e.parentMenu.type.name==="ElMenu"&&e.rootMenu.props.collapse&&e.$slots.title?(S(),ge(d,{key:0,effect:e.Effect.DARK,placement:"right","fallback-placements":["left"],persistent:""},{content:M(()=>[B(e.$slots,"title")]),default:M(()=>[j("div",{class:le(e.nsMenu.be("tooltip","trigger"))},[B(e.$slots,"default")],2)]),_:3},8,["effect"])):(S(),W(xe,{key:1},[B(e.$slots,"default"),B(e.$slots,"title")],64))],2)}var Ae=ue(Ct,[["render",$t],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-item.vue"]]);const wt={title:String},kt="ElMenuItemGroup",It=P({name:kt,props:wt,setup(){return{ns:T("menu-item-group")}}});function Tt(e,o,n,t,l,y){return S(),W("li",{class:le(e.ns.b())},[j("div",{class:le(e.ns.e("title"))},[e.$slots.title?B(e.$slots,"title",{key:1}):(S(),W(xe,{key:0},[U(Ze(e.title),1)],64))],2),j("ul",null,[B(e.$slots,"default")])],2)}var Oe=ue(It,[["render",Tt],["__file","/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-item-group.vue"]]);const St=Xe(yt,{MenuItem:Ae,MenuItemGroup:Oe,SubMenu:we}),Et=$e(Ae);$e(Oe);$e(we);const Bt=P({name:"Setting"}),Pt={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Nt=j("path",{fill:"currentColor",d:"M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357.12 357.12 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a351.616 351.616 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357.12 357.12 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294.113 294.113 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293.12 293.12 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294.113 294.113 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288.282 288.282 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293.12 293.12 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a287.616 287.616 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384zm0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256z"},null,-1),At=[Nt];function Ot(e,o,n,t,l,y){return S(),W("svg",Pt,At)}var zt=et(Bt,[["render",Ot]]);const Lt={class:"monitor"},Ht={class:"navs"},Wt={class:"container"},jt=P({__name:"index",setup(e){const o=$("overview"),n=$(!1),t=tt(),l=nt(),y=d=>{l.path.endsWith(d)||t.replace({path:d})};return re(()=>{const d=l.path.split("/").slice(-1)[0];o.value=d}),(d,h)=>{const a=_e,i=Et,m=St,x=Be("router-view");return S(),W("div",Lt,[j("div",Ht,[C(m,{"default-active":o.value,class:"el-menu-nav",collapse:n.value,onSelect:y},{default:M(()=>[C(i,{index:"overview"},{title:M(()=>[U("概况")]),default:M(()=>[C(a,null,{default:M(()=>[C(G(st))]),_:1})]),_:1}),C(i,{index:"user"},{title:M(()=>[U("用户")]),default:M(()=>[C(a,null,{default:M(()=>[C(G(ot))]),_:1})]),_:1}),C(i,{index:"wish"},{title:M(()=>[U("需求")]),default:M(()=>[C(a,null,{default:M(()=>[C(G(lt))]),_:1})]),_:1}),C(i,{index:"config"},{title:M(()=>[U("配置")]),default:M(()=>[C(a,null,{default:M(()=>[C(G(zt))]),_:1})]),_:1})]),_:1},8,["default-active","collapse"])]),j("div",Wt,[C(x)])])}}});const Jt=at(jt,[["__scopeId","data-v-67f8ea8e"]]);export{Jt as default};
2
+ //# sourceMappingURL=index-4766f4e2.js.map