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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/assets/{data-analysis-13490516.js → data-analysis-632af70e.js} +2 -2
  2. package/dist/assets/{data-analysis-13490516.js.map → data-analysis-632af70e.js.map} +1 -1
  3. package/dist/assets/{data-analysis-legacy.f8612e65.js → data-analysis-legacy.297ff95d.js} +2 -2
  4. package/dist/assets/{data-board-229a3bf5.js → data-board-4290cade.js} +2 -2
  5. package/dist/assets/{data-board-229a3bf5.js.map → data-board-4290cade.js.map} +1 -1
  6. package/dist/assets/{data-board-legacy.a60c4519.js → data-board-legacy.b3bf2f61.js} +2 -2
  7. package/dist/assets/{el-date-picker-5a3e3d86.js → el-date-picker-b3398f8f.js} +2 -2
  8. package/dist/assets/{el-date-picker-5a3e3d86.js.map → el-date-picker-b3398f8f.js.map} +1 -1
  9. package/dist/assets/{el-date-picker-legacy.6d67764b.js → el-date-picker-legacy.fd044c30.js} +2 -2
  10. package/dist/assets/{el-dialog-463960e0.js → el-dialog-c11c4af2.js} +2 -2
  11. package/dist/assets/{el-dialog-463960e0.js.map → el-dialog-c11c4af2.js.map} +1 -1
  12. package/dist/assets/{el-dialog-legacy.0bcf48a4.js → el-dialog-legacy.d2229175.js} +2 -2
  13. package/dist/assets/{el-dropdown-item-7c33f4fa.js → el-dropdown-item-3eb29c67.js} +2 -2
  14. package/dist/assets/{el-dropdown-item-7c33f4fa.js.map → el-dropdown-item-3eb29c67.js.map} +1 -1
  15. package/dist/assets/{el-dropdown-item-legacy.8625546e.js → el-dropdown-item-legacy.60575f42.js} +2 -2
  16. package/dist/assets/{el-form-item-f40006bf.js → el-form-item-fb230be3.js} +2 -2
  17. package/dist/assets/{el-form-item-f40006bf.js.map → el-form-item-fb230be3.js.map} +1 -1
  18. package/dist/assets/{el-form-item-legacy.d28db5d0.js → el-form-item-legacy.237ed4b6.js} +2 -2
  19. package/dist/assets/{el-loading-5d91bb6c.js → el-loading-e9365e7e.js} +2 -2
  20. package/dist/assets/{el-loading-5d91bb6c.js.map → el-loading-e9365e7e.js.map} +1 -1
  21. package/dist/assets/{el-loading-legacy.0f35210f.js → el-loading-legacy.8045609e.js} +2 -2
  22. package/dist/assets/{el-pagination-ffb99240.js → el-pagination-85149e11.js} +2 -2
  23. package/dist/assets/{el-pagination-ffb99240.js.map → el-pagination-85149e11.js.map} +1 -1
  24. package/dist/assets/{el-pagination-legacy.25b54e8d.js → el-pagination-legacy.02ed0149.js} +2 -2
  25. package/dist/assets/{el-progress-2fff98be.js → el-progress-b98becda.js} +2 -2
  26. package/dist/assets/{el-progress-2fff98be.js.map → el-progress-b98becda.js.map} +1 -1
  27. package/dist/assets/{el-progress-legacy.db8b5855.js → el-progress-legacy.1165db46.js} +2 -2
  28. package/dist/assets/{el-select-7d894fd0.js → el-select-2a16e5df.js} +2 -2
  29. package/dist/assets/{el-select-7d894fd0.js.map → el-select-2a16e5df.js.map} +1 -1
  30. package/dist/assets/{el-select-legacy.ad6ded5a.js → el-select-legacy.5ccdd9a4.js} +2 -2
  31. package/dist/assets/{el-switch-2eda0412.js → el-switch-abdd5a33.js} +2 -2
  32. package/dist/assets/{el-switch-2eda0412.js.map → el-switch-abdd5a33.js.map} +1 -1
  33. package/dist/assets/{el-switch-legacy.e17e7919.js → el-switch-legacy.96786863.js} +2 -2
  34. package/dist/assets/{el-tab-pane-b3156067.js → el-tab-pane-db271c8d.js} +2 -2
  35. package/dist/assets/{el-tab-pane-b3156067.js.map → el-tab-pane-db271c8d.js.map} +1 -1
  36. package/dist/assets/{el-tab-pane-legacy.2cf21031.js → el-tab-pane-legacy.143cbc33.js} +2 -2
  37. package/dist/assets/{el-table-column-22352e92.js → el-table-column-19feeab8.js} +2 -2
  38. package/dist/assets/{el-table-column-22352e92.js.map → el-table-column-19feeab8.js.map} +1 -1
  39. package/dist/assets/{el-table-column-legacy.fd665e2a.js → el-table-column-legacy.afba06f3.js} +2 -2
  40. package/dist/assets/{index-5f3a9ae0.css → index-0f83ff96.css} +1 -1
  41. package/dist/assets/{index-c61deab7.js → index-0fbe23b2.js} +2 -2
  42. package/dist/assets/index-0fbe23b2.js.map +1 -0
  43. package/dist/assets/{index-b3774417.js → index-14d600a5.js} +2 -2
  44. package/dist/assets/{index-b3774417.js.map → index-14d600a5.js.map} +1 -1
  45. package/dist/assets/index-1639ad54.js +15 -0
  46. package/dist/assets/index-1639ad54.js.map +1 -0
  47. package/dist/assets/{index-afb7d164.js → index-16b096cf.js} +2 -2
  48. package/dist/assets/{index-afb7d164.js.map → index-16b096cf.js.map} +1 -1
  49. package/dist/assets/{index-bc1a6d96.js → index-1bd2cd2e.js} +2 -2
  50. package/dist/assets/{index-bc1a6d96.js.map → index-1bd2cd2e.js.map} +1 -1
  51. package/dist/assets/{index-ca90e8da.js → index-2c76567d.js} +2 -2
  52. package/dist/assets/{index-ca90e8da.js.map → index-2c76567d.js.map} +1 -1
  53. package/dist/assets/{index-b0a4c236.js → index-43d1d27e.js} +2 -2
  54. package/dist/assets/{index-b0a4c236.js.map → index-43d1d27e.js.map} +1 -1
  55. package/dist/assets/{index-f47a54b0.js → index-488b0f9e.js} +2 -2
  56. package/dist/assets/{index-f47a54b0.js.map → index-488b0f9e.js.map} +1 -1
  57. package/dist/assets/{index-75b8c91c.js → index-4b1f55ea.js} +2 -2
  58. package/dist/assets/{index-75b8c91c.js.map → index-4b1f55ea.js.map} +1 -1
  59. package/dist/assets/{index-c840d3aa.js → index-51740dfd.js} +2 -2
  60. package/dist/assets/{index-c840d3aa.js.map → index-51740dfd.js.map} +1 -1
  61. package/dist/assets/{index-98964915.js → index-5281fad0.js} +2 -2
  62. package/dist/assets/{index-98964915.js.map → index-5281fad0.js.map} +1 -1
  63. package/dist/assets/{index-6d7ac779.js → index-68448dbd.js} +2 -2
  64. package/dist/assets/{index-6d7ac779.js.map → index-68448dbd.js.map} +1 -1
  65. package/dist/assets/{index-34bd5929.js → index-74330c06.js} +2 -2
  66. package/dist/assets/{index-34bd5929.js.map → index-74330c06.js.map} +1 -1
  67. package/dist/assets/{index-d32645f3.js → index-78a8b3c7.js} +2 -2
  68. package/dist/assets/{index-d32645f3.js.map → index-78a8b3c7.js.map} +1 -1
  69. package/dist/assets/{index-f6ffb548.js → index-9e6a9bcf.js} +2 -2
  70. package/dist/assets/{index-f6ffb548.js.map → index-9e6a9bcf.js.map} +1 -1
  71. package/dist/assets/{index-c3a1cd43.js → index-ac06071b.js} +2 -2
  72. package/dist/assets/{index-c3a1cd43.js.map → index-ac06071b.js.map} +1 -1
  73. package/dist/assets/{index-8eff6b5a.js → index-adc1b681.js} +2 -2
  74. package/dist/assets/{index-8eff6b5a.js.map → index-adc1b681.js.map} +1 -1
  75. package/dist/assets/{index-17fa8fb7.js → index-b8357360.js} +2 -2
  76. package/dist/assets/{index-17fa8fb7.js.map → index-b8357360.js.map} +1 -1
  77. package/dist/assets/{index-f298d979.js → index-d09329eb.js} +2 -2
  78. package/dist/assets/{index-f298d979.js.map → index-d09329eb.js.map} +1 -1
  79. package/dist/assets/{index-6f4c911e.js → index-f74b7eb6.js} +2 -2
  80. package/dist/assets/{index-6f4c911e.js.map → index-f74b7eb6.js.map} +1 -1
  81. package/dist/assets/{index-legacy.08663170.js → index-legacy.082ccf5b.js} +2 -2
  82. package/dist/assets/{index-legacy.5d174bde.js → index-legacy.12de1889.js} +2 -2
  83. package/dist/assets/{index-legacy.9dc57803.js → index-legacy.1796b3ef.js} +2 -2
  84. package/dist/assets/{index-legacy.1540c5bc.js → index-legacy.227978b5.js} +2 -2
  85. package/dist/assets/{index-legacy.e6994f0a.js → index-legacy.296716c3.js} +2 -2
  86. package/dist/assets/{index-legacy.e7464d3c.js → index-legacy.36482c14.js} +2 -2
  87. package/dist/assets/{index-legacy.9c4986d3.js → index-legacy.41d8801d.js} +2 -2
  88. package/dist/assets/{index-legacy.7dae3131.js → index-legacy.4b2923ee.js} +2 -2
  89. package/dist/assets/{index-legacy.1f2405e5.js → index-legacy.4c1d6eb3.js} +2 -2
  90. package/dist/assets/{index-legacy.bd5a4368.js → index-legacy.7a041259.js} +2 -2
  91. package/dist/assets/{index-legacy.45ec3501.js → index-legacy.820f4ba0.js} +2 -2
  92. package/dist/assets/{index-legacy.51740a44.js → index-legacy.8311ba4a.js} +2 -2
  93. package/dist/assets/index-legacy.9eb93981.js +18 -0
  94. package/dist/assets/{index-legacy.4f956884.js → index-legacy.a19ed25e.js} +2 -2
  95. package/dist/assets/{index-legacy.01d9320a.js → index-legacy.b8de0bf4.js} +2 -2
  96. package/dist/assets/{index-legacy.6c7021b3.js → index-legacy.e932a3d4.js} +2 -2
  97. package/dist/assets/{index-legacy.d32480a5.js → index-legacy.e96fb189.js} +2 -2
  98. package/dist/assets/{index-legacy.9f65dcb9.js → index-legacy.ec490514.js} +2 -2
  99. package/dist/assets/{index-legacy.189f20a8.js → index-legacy.ed2883a1.js} +2 -2
  100. package/dist/assets/{index-legacy.d9854cf5.js → index-legacy.f16524a6.js} +2 -2
  101. package/dist/assets/{isEqual-9c466456.js → isEqual-95d6c129.js} +2 -2
  102. package/dist/assets/{isEqual-9c466456.js.map → isEqual-95d6c129.js.map} +1 -1
  103. package/dist/assets/{isEqual-legacy.985bb619.js → isEqual-legacy.83836994.js} +2 -2
  104. package/dist/assets/{refresh-6ae903c0.js → refresh-be31af7a.js} +2 -2
  105. package/dist/assets/{refresh-6ae903c0.js.map → refresh-be31af7a.js.map} +1 -1
  106. package/dist/assets/{refresh-legacy.8092415a.js → refresh-legacy.600c5af4.js} +2 -2
  107. package/dist/assets/{tip-00ddf749.js → tip-822b05b7.js} +2 -2
  108. package/dist/assets/{tip-00ddf749.js.map → tip-822b05b7.js.map} +1 -1
  109. package/dist/assets/{tip-legacy.6e921091.js → tip-legacy.b6d754fd.js} +2 -2
  110. package/dist/assets/validator-5c60ab85.js +2 -0
  111. package/dist/assets/{validator-853854a1.js.map → validator-5c60ab85.js.map} +1 -1
  112. package/dist/assets/validator-legacy.86b93c0e.js +2 -0
  113. package/dist/index.html +3 -3
  114. package/package.json +5 -3
  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,2 +1,2 @@
1
- import{a4 as lt,g as Ae,d as Ce,f as r,c as y,a as s,h as at,a1 as ot,r as _,Z as H,O as C,a5 as Ne,o as nt,j as e,w as o,k as u,a6 as P,b as n,a7 as we,F as ye,C as ke,D as $,a8 as xe,E as c,s as F,a9 as K,aa as st,ab as L,x as it,v as rt,p as dt,e as ut,t as w,S as I,ac as ct,ad as pt,ae as mt,I as ft,af as _t,_ as vt}from"./index-62c7029f.js";import{v as ht}from"./el-loading-5d91bb6c.js";import{E as gt,a as wt}from"./el-form-item-f40006bf.js";import{E as yt}from"./el-dialog-463960e0.js";import{T as R,E as kt}from"./tip-00ddf749.js";import{E as xt,s as bt}from"./el-pagination-ffb99240.js";import{E as Ct,a as zt}from"./el-select-7d894fd0.js";import{E as Et,a as St}from"./el-table-column-22352e92.js";import{E as Vt}from"./el-switch-2eda0412.js";import{E as $t,a as Fe,b as It,c as Dt}from"./el-dropdown-item-7c33f4fa.js";import{L as Tt,I as Nt}from"./index-34bd5929.js";import{D as z,A as Le,f as be}from"./index-9e6bd406.js";import{E as Me}from"./index-17fa8fb7.js";import{r as Ft}from"./refresh-6ae903c0.js";import{d as Lt}from"./data-analysis-13490516.js";import"./isEqual-9c466456.js";import"./index-6d7ac779.js";import"./validator-853854a1.js";import"./aria-bc8e8b0f.js";function Mt(D,E,B=[]){return lt.post("/action/download/list",{pageSize:D,pageIndex:E,extraIds:B})}const At={getDownloadActions:Mt},Ut=Ce({name:"Download"}),Ot={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Ht=s("path",{fill:"currentColor",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"},null,-1),Pt=[Ht];function Rt(D,E,B,M,J,A){return r(),y("svg",Ot,Pt)}var Bt=Ae(Ut,[["render",Rt]]);const Jt=Ce({name:"Picture"}),qt={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},jt=s("path",{fill:"currentColor",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"},null,-1),Wt=s("path",{fill:"currentColor",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"},null,-1),Xt=[jt,Wt];function Zt(D,E,B,M,J,A){return r(),y("svg",qt,Xt)}var Gt=Ae(Jt,[["render",Zt]]);const fe=D=>(dt("data-v-7d8411d6"),D=D(),ut(),D),Kt={class:"files"},Qt={class:"panel header"},Yt={class:"item"},el=fe(()=>s("span",{class:"label"},"分类",-1)),tl={class:"item"},ll=fe(()=>s("span",{class:"label"},"任务",-1)),al={class:"item"},ol={class:"item"},nl={class:"panel"},sl={class:"export-btns flex fac"},il={class:"control-item"},rl={class:"control-item"},dl={class:"control-item"},ul={class:"control-item"},cl={class:"panel"},pl={"element-loading-text":"...",style:{"--el-loading-spinner-size":"20px"}},ml={class:"panel"},fl={key:0},_l={key:1},vl={key:2},hl={key:0},gl={key:1},wl={key:2},yl={key:3},kl={class:"flex fc"},xl={class:"panel"},bl=fe(()=>s("strong",null,[n("如果你觉得应用不错,"),s("a",{style:{color:"#409eff"},href:"http://docs.ep.sugarat.top/praise/index.html",target:"_blank",rel:"noopener noreferrer"},"请作者喝茶 🍵")],-1)),Cl={class:"imageDes"},zl=fe(()=>s("div",{class:"imageLoading"},"Loading...",-1)),El={class:"imageLoading"},Sl={class:"text-btns"},Vl={class:"panel flex fc"},$l=Ce({__name:"index",setup(D){const E=at(),B=ot(),M=_(!1),J=_(""),A=_(localStorage.getItem("ep-show-images")==="true"),Q=_(!0),Y=_(!1),se=_(!1),v=H({actions:[],pageSize:3,pageCount:0,pageCurrent:1,pageTotal:0,compressTask:[]}),q=()=>{const t=JSON.parse(localStorage.getItem("ep_compress_task")||"[]");v.compressTask=t,At.getDownloadActions(v.pageSize,v.pageCurrent,t.map(a=>a.id)).then(a=>{const{actions:i,sum:f}=a.data,d=!!i.find(p=>p.status===z.ARCHIVE);i.filter(p=>p.type===Le.Compress).forEach(p=>{const m=t.findIndex(b=>b.id===p.id);p.status===z.SUCCESS&&m!==-1&&(J.value=p.url,M.value=!0,xe(p.url),t.splice(m,1)),p.status===z.ARCHIVE&&m===-1&&t.push(p),p.status===z.FAIL&&m!==-1&&t.splice(m,1)}),v.compressTask=t,localStorage.setItem("ep_compress_task",JSON.stringify(t)),d&&setTimeout(q,1e3),v.pageTotal=f,v.actions=i,v.pageCount=Math.ceil(f/v.pageSize)})},Ue=t=>{v.pageCurrent=t,q()},ze=(t,a)=>{if(t.length===0){c.warning("表格中没有可导出的内容");return}const i=["提交时间","任务","文件名","大小"];Y.value&&i.push("原文件名"),Q.value&&i.push("姓名");const f=i.map(m=>({value:m,row:2})),d=t.reduce((m,b)=>(JSON.parse(b.info).forEach(U=>{m.includes(U.text)||m.push(U.text)}),m),[]);f.push({value:"提交信息",col:d.length});const p=t.map(m=>{const{date:b,task_name:U,name:ce,size:Z,people:g}=m,V=JSON.parse(m.info).reduce((G,T)=>(G[T.text]=T.value,G),{}),pe=d.map(G=>{var T;return(T=V[G])!=null?T:"-"}),O=[F(new Date(b)),U,ce,K(Z)];return Y.value&&O.push(m.origin_name||"-"),Q.value&&O.push(g||"-"),O.push(...pe),O});p.unshift(d),st(f,p,a||"数据导出_".concat(F(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx")),c.success("导出成功")},Oe=C(()=>E.state.category.categoryList),ee=_("all"),te=C(()=>E.state.task.taskList),S=_("all"),ie=C(()=>ee.value==="all"?te.value:(S.value="all",te.value.filter(t=>t.category===ee.value))),He=C(()=>{const t=ie.value.find(a=>a.key===S.value);return t==null?void 0:t.name});Ne(()=>{te.value.length&&te.value.some(t=>t.key===B.query.task)&&(S.value="".concat(B.query.task))});const re=_(!1),k=H([]),Ee=()=>{re.value=!0,k.splice(0,k.length),L.getFileList().then(t=>{k.push(...t.data.files),re.value=!1})},_e=_(),le=_(""),ae=C(()=>k.filter(t=>ee.value==="no-task"?te.value.every(a=>a.key!==t.task_key):ie.value.length===0?!1:S.value==="all"?ie.value.find(a=>a.key===t.task_key):S.value===t.task_key).filter(t=>le.value?JSON.stringify([F(new Date(t.date)),K(t.size),t.people,t.name,t.task_name,t.info]).replace(/[:'"{},[\]]/g,"").includes(le.value):!0)),Pe=()=>{_e.value.clearSelection()},x=H([]),Se=t=>{x.splice(0,x.length),x.push(...t)},j=_(!1),Ve=t=>{const a=x.map(i=>i.id);switch(t){case"download":if(x.length===0){c.warning("没有选中需要下载的内容");return}if(j.value){c.warning("已经有批量下载任务正在进行,请稍后再试");return}L.batchDownload(a,"批量下载_".concat(F(new Date,"yyyy年MM月日hh时mm分ss秒"))).then(()=>{q()}).catch(()=>{c.error("所选文件均已从服务器上移除"),j.value=!1}),c.info("开始归档选中的文件,请赖心等待");break;case"delete":if(x.length===0){c.warning("没有选中需要删除的内容");return}Me.confirm("删除后无法恢复,是否删除","数据无价,请谨慎操作").then(()=>{L.batchDel(a).then(()=>{k.splice(0,k.length,...k.filter(i=>!a.includes(i.id))),c.success("删除成功")})}).catch(()=>{c.info("取消")});break;case"excel":if(x.length===0){c.warning("没有选中需要导出的内容");return}ze(x,"批量导出_".concat(F(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx")),c.success("导出成功");break}Pe()},ve=_(!1),de=H([]),Re=t=>{de.splice(0,de.length),de.push(...pt(t.info)),ve.value=!0},oe=_(!1),h=H({oldName:"",newName:"",suffix:"",id:-1}),Be=t=>{const{id:a,name:i}=t,f=mt(i);h.oldName=i,h.suffix=f,h.id=a,oe.value=!0},Je=()=>{if(be.test(h.newName)){c.error("文件名不能包含".concat(be.source,"等字符")),be.lastIndex=0;return}L.updateFilename(h.id,"".concat(h.newName).concat(h.suffix)).then(()=>{c.success("修改成功");const t=k.find(a=>a.id===h.id);t.name="".concat(h.newName).concat(h.suffix)}).catch(()=>{c.error("修改失败")}).finally(()=>{oe.value=!1})},qe=t=>{const{id:a,name:i}=t;L.getOneFileUrl(a).then(f=>{const{link:d}=f.data;M.value=!0,J.value=d,xe(d,i),q()}).catch(()=>{c.error("文件已从服务器上移除")})},je=t=>{const a=k.findIndex(i=>i===t);Me.confirm("确认删除此文件吗?","数据无价,请谨慎操作").then(()=>{L.deleteOneFile(t.id).then(()=>{c.success("删除成功"),k.splice(a,1)})}).catch(()=>{c.info("取消删除")})},W=_(6),We=t=>{W.value=t},Xe=C(()=>Math.ceil(ae.value.length/W.value)),ne=_(1),X=C(()=>{const t=(ne.value-1)*W.value,a=ne.value*W.value;return ae.value.slice(t,a)}),Ze=C(()=>K(ae.value.reduce((t,a)=>t+a.size,0))),Ge=C(()=>K(k.reduce((t,a)=>t+a.size,0))),Ke=t=>{ne.value=t},Qe=()=>{c.success({message:"刷新成功"}),Ee()},Ye=()=>{const t=k.filter(a=>a.task_key===S.value).map(a=>a.id);if(t.length===0){c.warning("该任务中没有数据");return}if(j.value){c.warning("已经有批量下载任务正在进行,请稍后再试");return}j.value=!0,L.batchDownload(t,He.value).then(()=>{q()}).catch(()=>{c.error("所选任务中的文件均已从服务器上移除")}).finally(()=>{setTimeout(()=>{j.value=!1},1e3)}),c.info("开始归档选中的文件,请赖心等待")},ue=H([]);H({order:null,prop:null});const $e=_(""),et=C(()=>ue.map(t=>t.preview)),Ie=t=>{$e.value=X.value[t].name};let he=!1;const De=()=>{const t=X.value.map(a=>a.id);t.length===0||he||(he=!0,L.checkImageFilePreviewUrl(t).then(a=>{he=!1;const{data:i}=a;i.length===0||i.length!==X.value.length||(ue.splice(0,ue.length),X.value.forEach((f,d)=>{const{cover:p,preview:m}=i[d];f.cover=p,ue.push({cover:p,preview:m,name:f.name,date:f.date,id:f.id})}))}))};Ne(()=>{if(window.localStorage.setItem("ep-show-images","".concat(A.value)),!!A.value){if(le.value||ne.value||W.value){De();return}De()}}),nt(()=>{Ee(),q(),E.dispatch("category/getCategory"),E.dispatch("task/getTask")});const Te=C(()=>E.getters["public/isMobile"]);return(t,a)=>{const i=zt,f=Ct,d=it,p=rt,m=ft,b=It,U=Dt,ce=$t,Z=Vt,g=St,V=_t,pe=Et,O=xt,G=kt,T=yt,ge=gt,tt=wt,me=ht;return r(),y("div",Kt,[s("div",Qt,[s("div",Yt,[el,e(f,{size:"default",modelValue:ee.value,"onUpdate:modelValue":a[0]||(a[0]=l=>ee.value=l),filterable:"",placeholder:"请选择"},{default:o(()=>[e(i,{label:"全部",value:"all"}),e(i,{label:"默认",value:"default"}),(r(!0),y(ye,null,ke(Oe.value,l=>(r(),$(i,{key:l.k,label:l.name,value:l.k},null,8,["label","value"]))),128)),e(i,{label:"无关联任务",value:"no-task"}),e(i,{label:"♻️回收站♻️",value:"trash"})]),_:1},8,["modelValue"])]),s("div",tl,[ll,e(f,{size:"default",modelValue:S.value,"onUpdate:modelValue":a[1]||(a[1]=l=>S.value=l),filterable:"",placeholder:"请选择"},{default:o(()=>[e(i,{label:"全部",value:"all"}),(r(!0),y(ye,null,ke(ie.value,l=>(r(),$(i,{key:l.key,label:l.name,value:l.key},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),s("div",al,[e(d,{loading:j.value,disabled:S.value==="all",type:"primary",size:"default",icon:u(Bt),onClick:Ye},{default:o(()=>[n("下载任务中的文件")]),_:1},8,["loading","disabled","icon"])]),s("div",ol,[e(p,{size:"default",clearable:"",placeholder:"请输入要检索的内容","prefix-icon":u(bt),modelValue:le.value,"onUpdate:modelValue":a[2]||(a[2]=l=>le.value=l)},null,8,["prefix-icon","modelValue"])])]),s("div",nl,[s("div",sl,[e(ce,{trigger:"click",onCommand:Ve},{dropdown:o(()=>[e(U,null,{default:o(()=>[e(b,{disabled:x.length===0,command:"download"},{default:o(()=>[n("下载")]),_:1},8,["disabled"]),e(b,{disabled:x.length===0,command:"delete"},{default:o(()=>[n("删除")]),_:1},8,["disabled"]),e(b,{disabled:x.length===0,command:"excel"},{default:o(()=>[n("导出记录")]),_:1},8,["disabled"])]),_:1})]),default:o(()=>[e(d,{type:"primary",size:"default"},{default:o(()=>[n(" 批量操作"),e(m,{class:"el-icon--right"},{default:o(()=>[e(u(Fe))]),_:1})]),_:1})]),_:1}),P(s("div",null,[e(ce,{trigger:"click",onCommand:Ve},{dropdown:o(()=>[e(U,null,{default:o(()=>[e(b,{command:"download"},{default:o(()=>[n("下载")]),_:1}),e(b,{command:"delete"},{default:o(()=>[n("删除")]),_:1}),e(b,{command:"excel"},{default:o(()=>[n("导出记录")]),_:1})]),_:1})]),default:o(()=>[e(d,{type:"primary",disabled:x.length===0,size:"default"},{default:o(()=>[n(" 批量操作 "),e(m,null,{default:o(()=>[e(u(Fe))]),_:1})]),_:1},8,["disabled"])]),_:1})],512),[[we,!1]]),e(d,{size:"default",icon:u(Ft),onClick:Qe},{default:o(()=>[n("刷新")]),_:1},8,["icon"]),e(d,{title:"导出表格中所有的数据",type:"success",size:"default",icon:u(Lt),onClick:a[3]||(a[3]=()=>{ze(ae.value,"筛选数据导出_".concat(u(F)(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx"))}),disabled:X.value.length===0},{default:o(()=>[n("导出记录")]),_:1},8,["icon","disabled"]),s("div",il,[n(" 显示图片 "),e(Z,{"inline-prompt":"",modelValue:A.value,"onUpdate:modelValue":a[4]||(a[4]=l=>A.value=l),"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"是","inactive-text":"否"},null,8,["modelValue"])]),s("div",rl,[n(" 展示原文件名 "),e(Z,{"inline-prompt":"",modelValue:Y.value,"onUpdate:modelValue":a[5]||(a[5]=l=>Y.value=l),"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"是","inactive-text":"否"},null,8,["modelValue"])]),s("div",dl,[n(" 显示提交人姓名 "),e(Z,{"inline-prompt":"",modelValue:Q.value,"onUpdate:modelValue":a[6]||(a[6]=l=>Q.value=l),"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"是","inactive-text":"否"},null,8,["modelValue"])]),s("div",ul,[n(" ⏰ 查看下载历史 "),e(Z,{modelValue:se.value,"onUpdate:modelValue":a[7]||(a[7]=l=>se.value=l),style:{"--el-switch-on-color":"#13ce66","--el-switch-off-color":"#ff4949"}},null,8,["modelValue"])])])]),P(s("div",cl,[e(R,{style:{"font-size":"16px"}},{default:o(()=>[n("正在进行归档的任务 "+w(v.compressTask.length)+"个",1)]),_:1}),e(R,null,{default:o(()=>[n("详细归档记录点击右上角 “⏰查看下载历史”")]),_:1}),(r(!0),y(ye,null,ke(v.compressTask,(l,N)=>(r(),y("p",{key:l.id,class:"tc",style:{"margin-top":"10px"}},[n(w(N+1)+". "+w(l.tip)+" ",1),P(s("span",pl,null,512),[[me,!0]])]))),128))],512),[[we,v.compressTask.length&&!se.value]]),P(s("div",ml,[e(R,{style:{"font-size":"16px"}},{default:o(()=>[n("”❤️下面展示历史的下载记录与归档任务完成情况❤️“")]),_:1}),e(R,null,{default:o(()=>[n("”再也不需要在页面停留等待归档完成“")]),_:1}),s("div",null,[P((r(),$(pe,{"element-loading-text":"Loading...","tooltip-effect":"dark",multipleTable:"",ref_key:"multipleTable",ref:_e,onSelectionChange:Se,stripe:"",border:"","default-sort":{prop:"date",order:"descending"},"max-height":666,data:v.actions,style:{width:"100%"}},{default:o(()=>[e(g,{prop:"date",label:"触发时间",width:"200"},{default:o(l=>[n(w(u(F)(new Date(l.row.date))),1)]),_:1}),e(g,{prop:"tip",label:"文件信息"}),e(g,{prop:"type",label:"任务类型"},{default:o(l=>[l.row.type===u(Le).Compress?(r(),$(V,{key:0,type:"primary"},{default:o(()=>[n("归档下载")]),_:1})):(r(),$(V,{key:1,type:"default"},{default:o(()=>[n("普通下载")]),_:1}))]),_:1}),e(g,{prop:"size",label:"大小",width:"100"},{default:o(l=>[l.row.status===u(z).ARCHIVE?(r(),y("span",fl,[e(V,{type:"danger"},{default:o(()=>[n("归档中...")]),_:1})])):l.row.status!==u(z).FAIL?(r(),y("span",_l,w(l.row.size?u(K)(l.row.size):"未知大小"),1)):I("",!0),l.row.status===u(z).FAIL?(r(),y("span",vl,[e(V,{type:"danger"},{default:o(()=>[n("归档失败")]),_:1})])):I("",!0)]),_:1}),e(g,{fixed:"right",label:"操作",width:"140"},{default:o(l=>[l.row.status===u(z).ARCHIVE?P((r(),y("div",hl,[n(" 归档中... ")])),[[me,!0]]):I("",!0),l.row.status===u(z).EXPIRED?(r(),y("div",gl," 链接已失效 ")):I("",!0),l.row.status===u(z).FAIL?(r(),y("div",wl," 联系开发者,提供错误信息:"+w(l.row.error),1)):I("",!0),l.row.status===u(z).SUCCESS?(r(),y("div",yl,[e(V,{onClick:N=>u(xe)(l.row.url),type:"primary"},{default:o(()=>[n("下载")]),_:2},1032,["onClick"]),e(V,{type:"success",style:{"margin-left":"10px"},onClick:N=>u(ct)(l.row.url)},{default:o(()=>[n("链接")]),_:2},1032,["onClick"]),e(V,{type:"warning",style:{"margin-left":"10px"},onClick:()=>{M.value=!0,J.value=l.row.url}},{default:o(()=>[n("二维码")]),_:2},1032,["onClick"])])):I("",!0)]),_:1})]),_:1},8,["data"])),[[me,re.value]]),s("div",kl,[e(O,{small:"","current-page":v.pageCurrent,"page-count":v.pageCount,total:v.pageTotal,layout:"total, prev, pager, next",onCurrentChange:Ue},null,8,["current-page","page-count","total"])])])],512),[[we,se.value]]),s("div",xl,[e(R,null,{default:o(()=>[n("空间占用情况:"+w(Ze.value)+" / "+w(Ge.value),1)]),_:1}),e(R,null,{default:o(()=>[n("↑ 仅供使用者参考,应用无存储空间上限,也不收费")]),_:1}),e(R,null,{default:o(()=>[bl]),_:1}),P((r(),$(pe,{"element-loading-text":"Loading...","tooltip-effect":"dark",multipleTable:"",ref_key:"multipleTable",ref:_e,onSelectionChange:Se,stripe:"",border:"","max-height":666,data:X.value,style:{width:"100%"}},{default:o(()=>[e(g,{type:"selection",width:"55"}),e(g,{prop:"date",label:"提交时间",width:"160"},{default:o(l=>[n(w(u(F)(new Date(l.row.date))),1)]),_:1}),e(g,{prop:"task_name",label:"任务",width:"150"}),e(g,{prop:"name",label:"文件名",width:"200"}),Y.value?(r(),$(g,{key:0,prop:"origin_name",label:"原文件名",width:"200"},{default:o(l=>[n(w(l.row.origin_name||"-"),1)]),_:1})):I("",!0),e(g,{prop:"size",label:"大小"},{default:o(l=>[n(w(l.row.size===0?"未知大小":u(K)(l.row.size)),1)]),_:1}),A.value?(r(),$(g,{key:1,label:"缩略图",width:"120"},{default:o(l=>[e(G,{onSwitch:Ie,onClick:N=>Ie(l.$index),"preview-teleported":"","preview-src-list":et.value,"initial-index":l.$index,lazy:"",style:{width:"100px",height:"100px"},src:l.row.cover,fit:"cover"},{viewer:o(()=>[s("div",Cl,w($e.value),1)]),placeholder:o(()=>[zl]),error:o(()=>[s("div",El,[n(" 不支持 "),e(m,null,{default:o(()=>[e(u(Gt))]),_:1})])]),_:2},1032,["onClick","preview-src-list","initial-index","src"])]),_:1})):I("",!0),Q.value?(r(),$(g,{key:2,prop:"people",width:"100",label:"限制名单"},{default:o(l=>[n(w(l.row.people||"-"),1)]),_:1})):I("",!0),e(g,{fixed:"right",label:"操作",width:"140"},{default:o(l=>[s("div",Sl,[e(d,{onClick:N=>Re(l.row),type:"primary",text:"",size:"small"},{default:o(()=>[n("查看提交信息")]),_:2},1032,["onClick"]),e(d,{onClick:N=>Be(l.row),type:"primary",text:"",size:"small"},{default:o(()=>[n("修改文件名")]),_:2},1032,["onClick"]),e(d,{onClick:N=>qe(l.row),type:"primary",text:"",size:"small"},{default:o(()=>[n("下载")]),_:2},1032,["onClick"]),e(d,{onClick:N=>je(l.row),type:"primary",text:"",size:"small"},{default:o(()=>[n("删除")]),_:2},1032,["onClick"])])]),_:1})]),_:1},8,["data"])),[[me,re.value]])]),s("div",Vl,[e(O,{"current-page":ne.value,onCurrentChange:Ke,background:"","page-count":Xe.value,"page-sizes":[6,10,50,100],"page-size":W.value,onSizeChange:We,total:ae.value.length,layout:"total, sizes, prev, pager, next, jumper"},null,8,["current-page","page-count","page-size","total"])]),e(T,{fullscreen:Te.value,title:"提交填写的信息",modelValue:ve.value,"onUpdate:modelValue":a[8]||(a[8]=l=>ve.value=l)},{default:o(()=>[e(Nt,{infos:de,disabled:!0},null,8,["infos"])]),_:1},8,["fullscreen","modelValue"]),e(Tt,{value:M.value,"onUpdate:value":a[9]||(a[9]=l=>M.value=l),title:"下载链接",link:J.value},null,8,["value","link"]),e(T,{fullscreen:Te.value,title:"修改文件名",modelValue:oe.value,"onUpdate:modelValue":a[13]||(a[13]=l=>oe.value=l)},{default:o(()=>[s("div",null,[e(tt,{"label-width":"100px",model:h},{default:o(()=>[e(ge,{label:"原文件名",prop:"newName"},{default:o(()=>[e(p,{modelValue:h.oldName,"onUpdate:modelValue":a[10]||(a[10]=l=>h.oldName=l),disabled:""},null,8,["modelValue"])]),_:1}),e(ge,{label:"新文件名",prop:"newName"},{default:o(()=>[e(p,{modelValue:h.newName,"onUpdate:modelValue":a[11]||(a[11]=l=>h.newName=l),placeholder:"请输入新文件名"},{append:o(()=>[n(w(h.suffix),1)]),_:1},8,["modelValue"])]),_:1}),e(ge,null,{default:o(()=>[e(d,{type:"success",onClick:Je},{default:o(()=>[n("保存")]),_:1}),e(d,{onClick:a[12]||(a[12]=l=>oe.value=!1)},{default:o(()=>[n("取消")]),_:1})]),_:1})]),_:1},8,["model"])])]),_:1},8,["fullscreen","modelValue"])])}}});const Zl=vt($l,[["__scopeId","data-v-7d8411d6"]]);export{Zl as default};
2
- //# sourceMappingURL=index-c3a1cd43.js.map
1
+ import{a4 as lt,g as Ae,d as Ce,f as r,c as y,a as s,h as at,a1 as ot,r as _,Z as H,O as C,a5 as Ne,o as nt,j as e,w as o,k as u,a6 as P,b as n,a7 as we,F as ye,C as ke,D as $,a8 as xe,E as c,s as F,a9 as K,aa as st,ab as L,x as it,v as rt,p as dt,e as ut,t as w,S as I,ac as ct,ad as pt,ae as mt,I as ft,af as _t,_ as vt}from"./index-1639ad54.js";import{v as ht}from"./el-loading-e9365e7e.js";import{E as gt,a as wt}from"./el-form-item-fb230be3.js";import{E as yt}from"./el-dialog-c11c4af2.js";import{T as R,E as kt}from"./tip-822b05b7.js";import{E as xt,s as bt}from"./el-pagination-85149e11.js";import{E as Ct,a as zt}from"./el-select-2a16e5df.js";import{E as Et,a as St}from"./el-table-column-19feeab8.js";import{E as Vt}from"./el-switch-abdd5a33.js";import{E as $t,a as Fe,b as It,c as Dt}from"./el-dropdown-item-3eb29c67.js";import{L as Tt,I as Nt}from"./index-74330c06.js";import{D as z,A as Le,f as be}from"./index-9e6bd406.js";import{E as Me}from"./index-b8357360.js";import{r as Ft}from"./refresh-be31af7a.js";import{d as Lt}from"./data-analysis-632af70e.js";import"./isEqual-95d6c129.js";import"./index-68448dbd.js";import"./validator-5c60ab85.js";import"./aria-bc8e8b0f.js";function Mt(D,E,B=[]){return lt.post("/action/download/list",{pageSize:D,pageIndex:E,extraIds:B})}const At={getDownloadActions:Mt},Ut=Ce({name:"Download"}),Ot={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Ht=s("path",{fill:"currentColor",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"},null,-1),Pt=[Ht];function Rt(D,E,B,M,J,A){return r(),y("svg",Ot,Pt)}var Bt=Ae(Ut,[["render",Rt]]);const Jt=Ce({name:"Picture"}),qt={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},jt=s("path",{fill:"currentColor",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"},null,-1),Wt=s("path",{fill:"currentColor",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"},null,-1),Xt=[jt,Wt];function Zt(D,E,B,M,J,A){return r(),y("svg",qt,Xt)}var Gt=Ae(Jt,[["render",Zt]]);const fe=D=>(dt("data-v-7d8411d6"),D=D(),ut(),D),Kt={class:"files"},Qt={class:"panel header"},Yt={class:"item"},el=fe(()=>s("span",{class:"label"},"分类",-1)),tl={class:"item"},ll=fe(()=>s("span",{class:"label"},"任务",-1)),al={class:"item"},ol={class:"item"},nl={class:"panel"},sl={class:"export-btns flex fac"},il={class:"control-item"},rl={class:"control-item"},dl={class:"control-item"},ul={class:"control-item"},cl={class:"panel"},pl={"element-loading-text":"...",style:{"--el-loading-spinner-size":"20px"}},ml={class:"panel"},fl={key:0},_l={key:1},vl={key:2},hl={key:0},gl={key:1},wl={key:2},yl={key:3},kl={class:"flex fc"},xl={class:"panel"},bl=fe(()=>s("strong",null,[n("如果你觉得应用不错,"),s("a",{style:{color:"#409eff"},href:"http://docs.ep.sugarat.top/praise/index.html",target:"_blank",rel:"noopener noreferrer"},"请作者喝茶 🍵")],-1)),Cl={class:"imageDes"},zl=fe(()=>s("div",{class:"imageLoading"},"Loading...",-1)),El={class:"imageLoading"},Sl={class:"text-btns"},Vl={class:"panel flex fc"},$l=Ce({__name:"index",setup(D){const E=at(),B=ot(),M=_(!1),J=_(""),A=_(localStorage.getItem("ep-show-images")==="true"),Q=_(!0),Y=_(!1),se=_(!1),v=H({actions:[],pageSize:3,pageCount:0,pageCurrent:1,pageTotal:0,compressTask:[]}),q=()=>{const t=JSON.parse(localStorage.getItem("ep_compress_task")||"[]");v.compressTask=t,At.getDownloadActions(v.pageSize,v.pageCurrent,t.map(a=>a.id)).then(a=>{const{actions:i,sum:f}=a.data,d=!!i.find(p=>p.status===z.ARCHIVE);i.filter(p=>p.type===Le.Compress).forEach(p=>{const m=t.findIndex(b=>b.id===p.id);p.status===z.SUCCESS&&m!==-1&&(J.value=p.url,M.value=!0,xe(p.url),t.splice(m,1)),p.status===z.ARCHIVE&&m===-1&&t.push(p),p.status===z.FAIL&&m!==-1&&t.splice(m,1)}),v.compressTask=t,localStorage.setItem("ep_compress_task",JSON.stringify(t)),d&&setTimeout(q,1e3),v.pageTotal=f,v.actions=i,v.pageCount=Math.ceil(f/v.pageSize)})},Ue=t=>{v.pageCurrent=t,q()},ze=(t,a)=>{if(t.length===0){c.warning("表格中没有可导出的内容");return}const i=["提交时间","任务","文件名","大小"];Y.value&&i.push("原文件名"),Q.value&&i.push("姓名");const f=i.map(m=>({value:m,row:2})),d=t.reduce((m,b)=>(JSON.parse(b.info).forEach(U=>{m.includes(U.text)||m.push(U.text)}),m),[]);f.push({value:"提交信息",col:d.length});const p=t.map(m=>{const{date:b,task_name:U,name:ce,size:Z,people:g}=m,V=JSON.parse(m.info).reduce((G,T)=>(G[T.text]=T.value,G),{}),pe=d.map(G=>{var T;return(T=V[G])!=null?T:"-"}),O=[F(new Date(b)),U,ce,K(Z)];return Y.value&&O.push(m.origin_name||"-"),Q.value&&O.push(g||"-"),O.push(...pe),O});p.unshift(d),st(f,p,a||"数据导出_".concat(F(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx")),c.success("导出成功")},Oe=C(()=>E.state.category.categoryList),ee=_("all"),te=C(()=>E.state.task.taskList),S=_("all"),ie=C(()=>ee.value==="all"?te.value:(S.value="all",te.value.filter(t=>t.category===ee.value))),He=C(()=>{const t=ie.value.find(a=>a.key===S.value);return t==null?void 0:t.name});Ne(()=>{te.value.length&&te.value.some(t=>t.key===B.query.task)&&(S.value="".concat(B.query.task))});const re=_(!1),k=H([]),Ee=()=>{re.value=!0,k.splice(0,k.length),L.getFileList().then(t=>{k.push(...t.data.files),re.value=!1})},_e=_(),le=_(""),ae=C(()=>k.filter(t=>ee.value==="no-task"?te.value.every(a=>a.key!==t.task_key):ie.value.length===0?!1:S.value==="all"?ie.value.find(a=>a.key===t.task_key):S.value===t.task_key).filter(t=>le.value?JSON.stringify([F(new Date(t.date)),K(t.size),t.people,t.name,t.task_name,t.info]).replace(/[:'"{},[\]]/g,"").includes(le.value):!0)),Pe=()=>{_e.value.clearSelection()},x=H([]),Se=t=>{x.splice(0,x.length),x.push(...t)},j=_(!1),Ve=t=>{const a=x.map(i=>i.id);switch(t){case"download":if(x.length===0){c.warning("没有选中需要下载的内容");return}if(j.value){c.warning("已经有批量下载任务正在进行,请稍后再试");return}L.batchDownload(a,"批量下载_".concat(F(new Date,"yyyy年MM月日hh时mm分ss秒"))).then(()=>{q()}).catch(()=>{c.error("所选文件均已从服务器上移除"),j.value=!1}),c.info("开始归档选中的文件,请赖心等待");break;case"delete":if(x.length===0){c.warning("没有选中需要删除的内容");return}Me.confirm("删除后无法恢复,是否删除","数据无价,请谨慎操作").then(()=>{L.batchDel(a).then(()=>{k.splice(0,k.length,...k.filter(i=>!a.includes(i.id))),c.success("删除成功")})}).catch(()=>{c.info("取消")});break;case"excel":if(x.length===0){c.warning("没有选中需要导出的内容");return}ze(x,"批量导出_".concat(F(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx")),c.success("导出成功");break}Pe()},ve=_(!1),de=H([]),Re=t=>{de.splice(0,de.length),de.push(...pt(t.info)),ve.value=!0},oe=_(!1),h=H({oldName:"",newName:"",suffix:"",id:-1}),Be=t=>{const{id:a,name:i}=t,f=mt(i);h.oldName=i,h.suffix=f,h.id=a,oe.value=!0},Je=()=>{if(be.test(h.newName)){c.error("文件名不能包含".concat(be.source,"等字符")),be.lastIndex=0;return}L.updateFilename(h.id,"".concat(h.newName).concat(h.suffix)).then(()=>{c.success("修改成功");const t=k.find(a=>a.id===h.id);t.name="".concat(h.newName).concat(h.suffix)}).catch(()=>{c.error("修改失败")}).finally(()=>{oe.value=!1})},qe=t=>{const{id:a,name:i}=t;L.getOneFileUrl(a).then(f=>{const{link:d}=f.data;M.value=!0,J.value=d,xe(d,i),q()}).catch(()=>{c.error("文件已从服务器上移除")})},je=t=>{const a=k.findIndex(i=>i===t);Me.confirm("确认删除此文件吗?","数据无价,请谨慎操作").then(()=>{L.deleteOneFile(t.id).then(()=>{c.success("删除成功"),k.splice(a,1)})}).catch(()=>{c.info("取消删除")})},W=_(6),We=t=>{W.value=t},Xe=C(()=>Math.ceil(ae.value.length/W.value)),ne=_(1),X=C(()=>{const t=(ne.value-1)*W.value,a=ne.value*W.value;return ae.value.slice(t,a)}),Ze=C(()=>K(ae.value.reduce((t,a)=>t+a.size,0))),Ge=C(()=>K(k.reduce((t,a)=>t+a.size,0))),Ke=t=>{ne.value=t},Qe=()=>{c.success({message:"刷新成功"}),Ee()},Ye=()=>{const t=k.filter(a=>a.task_key===S.value).map(a=>a.id);if(t.length===0){c.warning("该任务中没有数据");return}if(j.value){c.warning("已经有批量下载任务正在进行,请稍后再试");return}j.value=!0,L.batchDownload(t,He.value).then(()=>{q()}).catch(()=>{c.error("所选任务中的文件均已从服务器上移除")}).finally(()=>{setTimeout(()=>{j.value=!1},1e3)}),c.info("开始归档选中的文件,请赖心等待")},ue=H([]);H({order:null,prop:null});const $e=_(""),et=C(()=>ue.map(t=>t.preview)),Ie=t=>{$e.value=X.value[t].name};let he=!1;const De=()=>{const t=X.value.map(a=>a.id);t.length===0||he||(he=!0,L.checkImageFilePreviewUrl(t).then(a=>{he=!1;const{data:i}=a;i.length===0||i.length!==X.value.length||(ue.splice(0,ue.length),X.value.forEach((f,d)=>{const{cover:p,preview:m}=i[d];f.cover=p,ue.push({cover:p,preview:m,name:f.name,date:f.date,id:f.id})}))}))};Ne(()=>{if(window.localStorage.setItem("ep-show-images","".concat(A.value)),!!A.value){if(le.value||ne.value||W.value){De();return}De()}}),nt(()=>{Ee(),q(),E.dispatch("category/getCategory"),E.dispatch("task/getTask")});const Te=C(()=>E.getters["public/isMobile"]);return(t,a)=>{const i=zt,f=Ct,d=it,p=rt,m=ft,b=It,U=Dt,ce=$t,Z=Vt,g=St,V=_t,pe=Et,O=xt,G=kt,T=yt,ge=gt,tt=wt,me=ht;return r(),y("div",Kt,[s("div",Qt,[s("div",Yt,[el,e(f,{size:"default",modelValue:ee.value,"onUpdate:modelValue":a[0]||(a[0]=l=>ee.value=l),filterable:"",placeholder:"请选择"},{default:o(()=>[e(i,{label:"全部",value:"all"}),e(i,{label:"默认",value:"default"}),(r(!0),y(ye,null,ke(Oe.value,l=>(r(),$(i,{key:l.k,label:l.name,value:l.k},null,8,["label","value"]))),128)),e(i,{label:"无关联任务",value:"no-task"}),e(i,{label:"♻️回收站♻️",value:"trash"})]),_:1},8,["modelValue"])]),s("div",tl,[ll,e(f,{size:"default",modelValue:S.value,"onUpdate:modelValue":a[1]||(a[1]=l=>S.value=l),filterable:"",placeholder:"请选择"},{default:o(()=>[e(i,{label:"全部",value:"all"}),(r(!0),y(ye,null,ke(ie.value,l=>(r(),$(i,{key:l.key,label:l.name,value:l.key},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),s("div",al,[e(d,{loading:j.value,disabled:S.value==="all",type:"primary",size:"default",icon:u(Bt),onClick:Ye},{default:o(()=>[n("下载任务中的文件")]),_:1},8,["loading","disabled","icon"])]),s("div",ol,[e(p,{size:"default",clearable:"",placeholder:"请输入要检索的内容","prefix-icon":u(bt),modelValue:le.value,"onUpdate:modelValue":a[2]||(a[2]=l=>le.value=l)},null,8,["prefix-icon","modelValue"])])]),s("div",nl,[s("div",sl,[e(ce,{trigger:"click",onCommand:Ve},{dropdown:o(()=>[e(U,null,{default:o(()=>[e(b,{disabled:x.length===0,command:"download"},{default:o(()=>[n("下载")]),_:1},8,["disabled"]),e(b,{disabled:x.length===0,command:"delete"},{default:o(()=>[n("删除")]),_:1},8,["disabled"]),e(b,{disabled:x.length===0,command:"excel"},{default:o(()=>[n("导出记录")]),_:1},8,["disabled"])]),_:1})]),default:o(()=>[e(d,{type:"primary",size:"default"},{default:o(()=>[n(" 批量操作"),e(m,{class:"el-icon--right"},{default:o(()=>[e(u(Fe))]),_:1})]),_:1})]),_:1}),P(s("div",null,[e(ce,{trigger:"click",onCommand:Ve},{dropdown:o(()=>[e(U,null,{default:o(()=>[e(b,{command:"download"},{default:o(()=>[n("下载")]),_:1}),e(b,{command:"delete"},{default:o(()=>[n("删除")]),_:1}),e(b,{command:"excel"},{default:o(()=>[n("导出记录")]),_:1})]),_:1})]),default:o(()=>[e(d,{type:"primary",disabled:x.length===0,size:"default"},{default:o(()=>[n(" 批量操作 "),e(m,null,{default:o(()=>[e(u(Fe))]),_:1})]),_:1},8,["disabled"])]),_:1})],512),[[we,!1]]),e(d,{size:"default",icon:u(Ft),onClick:Qe},{default:o(()=>[n("刷新")]),_:1},8,["icon"]),e(d,{title:"导出表格中所有的数据",type:"success",size:"default",icon:u(Lt),onClick:a[3]||(a[3]=()=>{ze(ae.value,"筛选数据导出_".concat(u(F)(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx"))}),disabled:X.value.length===0},{default:o(()=>[n("导出记录")]),_:1},8,["icon","disabled"]),s("div",il,[n(" 显示图片 "),e(Z,{"inline-prompt":"",modelValue:A.value,"onUpdate:modelValue":a[4]||(a[4]=l=>A.value=l),"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"是","inactive-text":"否"},null,8,["modelValue"])]),s("div",rl,[n(" 展示原文件名 "),e(Z,{"inline-prompt":"",modelValue:Y.value,"onUpdate:modelValue":a[5]||(a[5]=l=>Y.value=l),"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"是","inactive-text":"否"},null,8,["modelValue"])]),s("div",dl,[n(" 显示提交人姓名 "),e(Z,{"inline-prompt":"",modelValue:Q.value,"onUpdate:modelValue":a[6]||(a[6]=l=>Q.value=l),"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"是","inactive-text":"否"},null,8,["modelValue"])]),s("div",ul,[n(" ⏰ 查看下载历史 "),e(Z,{modelValue:se.value,"onUpdate:modelValue":a[7]||(a[7]=l=>se.value=l),style:{"--el-switch-on-color":"#13ce66","--el-switch-off-color":"#ff4949"}},null,8,["modelValue"])])])]),P(s("div",cl,[e(R,{style:{"font-size":"16px"}},{default:o(()=>[n("正在进行归档的任务 "+w(v.compressTask.length)+"个",1)]),_:1}),e(R,null,{default:o(()=>[n("详细归档记录点击右上角 “⏰查看下载历史”")]),_:1}),(r(!0),y(ye,null,ke(v.compressTask,(l,N)=>(r(),y("p",{key:l.id,class:"tc",style:{"margin-top":"10px"}},[n(w(N+1)+". "+w(l.tip)+" ",1),P(s("span",pl,null,512),[[me,!0]])]))),128))],512),[[we,v.compressTask.length&&!se.value]]),P(s("div",ml,[e(R,{style:{"font-size":"16px"}},{default:o(()=>[n("”❤️下面展示历史的下载记录与归档任务完成情况❤️“")]),_:1}),e(R,null,{default:o(()=>[n("”再也不需要在页面停留等待归档完成“")]),_:1}),s("div",null,[P((r(),$(pe,{"element-loading-text":"Loading...","tooltip-effect":"dark",multipleTable:"",ref_key:"multipleTable",ref:_e,onSelectionChange:Se,stripe:"",border:"","default-sort":{prop:"date",order:"descending"},"max-height":666,data:v.actions,style:{width:"100%"}},{default:o(()=>[e(g,{prop:"date",label:"触发时间",width:"200"},{default:o(l=>[n(w(u(F)(new Date(l.row.date))),1)]),_:1}),e(g,{prop:"tip",label:"文件信息"}),e(g,{prop:"type",label:"任务类型"},{default:o(l=>[l.row.type===u(Le).Compress?(r(),$(V,{key:0,type:"primary"},{default:o(()=>[n("归档下载")]),_:1})):(r(),$(V,{key:1,type:"default"},{default:o(()=>[n("普通下载")]),_:1}))]),_:1}),e(g,{prop:"size",label:"大小",width:"100"},{default:o(l=>[l.row.status===u(z).ARCHIVE?(r(),y("span",fl,[e(V,{type:"danger"},{default:o(()=>[n("归档中...")]),_:1})])):l.row.status!==u(z).FAIL?(r(),y("span",_l,w(l.row.size?u(K)(l.row.size):"未知大小"),1)):I("",!0),l.row.status===u(z).FAIL?(r(),y("span",vl,[e(V,{type:"danger"},{default:o(()=>[n("归档失败")]),_:1})])):I("",!0)]),_:1}),e(g,{fixed:"right",label:"操作",width:"140"},{default:o(l=>[l.row.status===u(z).ARCHIVE?P((r(),y("div",hl,[n(" 归档中... ")])),[[me,!0]]):I("",!0),l.row.status===u(z).EXPIRED?(r(),y("div",gl," 链接已失效 ")):I("",!0),l.row.status===u(z).FAIL?(r(),y("div",wl," 联系开发者,提供错误信息:"+w(l.row.error),1)):I("",!0),l.row.status===u(z).SUCCESS?(r(),y("div",yl,[e(V,{onClick:N=>u(xe)(l.row.url),type:"primary"},{default:o(()=>[n("下载")]),_:2},1032,["onClick"]),e(V,{type:"success",style:{"margin-left":"10px"},onClick:N=>u(ct)(l.row.url)},{default:o(()=>[n("链接")]),_:2},1032,["onClick"]),e(V,{type:"warning",style:{"margin-left":"10px"},onClick:()=>{M.value=!0,J.value=l.row.url}},{default:o(()=>[n("二维码")]),_:2},1032,["onClick"])])):I("",!0)]),_:1})]),_:1},8,["data"])),[[me,re.value]]),s("div",kl,[e(O,{small:"","current-page":v.pageCurrent,"page-count":v.pageCount,total:v.pageTotal,layout:"total, prev, pager, next",onCurrentChange:Ue},null,8,["current-page","page-count","total"])])])],512),[[we,se.value]]),s("div",xl,[e(R,null,{default:o(()=>[n("空间占用情况:"+w(Ze.value)+" / "+w(Ge.value),1)]),_:1}),e(R,null,{default:o(()=>[n("↑ 仅供使用者参考,应用无存储空间上限,也不收费")]),_:1}),e(R,null,{default:o(()=>[bl]),_:1}),P((r(),$(pe,{"element-loading-text":"Loading...","tooltip-effect":"dark",multipleTable:"",ref_key:"multipleTable",ref:_e,onSelectionChange:Se,stripe:"",border:"","max-height":666,data:X.value,style:{width:"100%"}},{default:o(()=>[e(g,{type:"selection",width:"55"}),e(g,{prop:"date",label:"提交时间",width:"160"},{default:o(l=>[n(w(u(F)(new Date(l.row.date))),1)]),_:1}),e(g,{prop:"task_name",label:"任务",width:"150"}),e(g,{prop:"name",label:"文件名",width:"200"}),Y.value?(r(),$(g,{key:0,prop:"origin_name",label:"原文件名",width:"200"},{default:o(l=>[n(w(l.row.origin_name||"-"),1)]),_:1})):I("",!0),e(g,{prop:"size",label:"大小"},{default:o(l=>[n(w(l.row.size===0?"未知大小":u(K)(l.row.size)),1)]),_:1}),A.value?(r(),$(g,{key:1,label:"缩略图",width:"120"},{default:o(l=>[e(G,{onSwitch:Ie,onClick:N=>Ie(l.$index),"preview-teleported":"","preview-src-list":et.value,"initial-index":l.$index,lazy:"",style:{width:"100px",height:"100px"},src:l.row.cover,fit:"cover"},{viewer:o(()=>[s("div",Cl,w($e.value),1)]),placeholder:o(()=>[zl]),error:o(()=>[s("div",El,[n(" 不支持 "),e(m,null,{default:o(()=>[e(u(Gt))]),_:1})])]),_:2},1032,["onClick","preview-src-list","initial-index","src"])]),_:1})):I("",!0),Q.value?(r(),$(g,{key:2,prop:"people",width:"100",label:"限制名单"},{default:o(l=>[n(w(l.row.people||"-"),1)]),_:1})):I("",!0),e(g,{fixed:"right",label:"操作",width:"140"},{default:o(l=>[s("div",Sl,[e(d,{onClick:N=>Re(l.row),type:"primary",text:"",size:"small"},{default:o(()=>[n("查看提交信息")]),_:2},1032,["onClick"]),e(d,{onClick:N=>Be(l.row),type:"primary",text:"",size:"small"},{default:o(()=>[n("修改文件名")]),_:2},1032,["onClick"]),e(d,{onClick:N=>qe(l.row),type:"primary",text:"",size:"small"},{default:o(()=>[n("下载")]),_:2},1032,["onClick"]),e(d,{onClick:N=>je(l.row),type:"primary",text:"",size:"small"},{default:o(()=>[n("删除")]),_:2},1032,["onClick"])])]),_:1})]),_:1},8,["data"])),[[me,re.value]])]),s("div",Vl,[e(O,{"current-page":ne.value,onCurrentChange:Ke,background:"","page-count":Xe.value,"page-sizes":[6,10,50,100],"page-size":W.value,onSizeChange:We,total:ae.value.length,layout:"total, sizes, prev, pager, next, jumper"},null,8,["current-page","page-count","page-size","total"])]),e(T,{fullscreen:Te.value,title:"提交填写的信息",modelValue:ve.value,"onUpdate:modelValue":a[8]||(a[8]=l=>ve.value=l)},{default:o(()=>[e(Nt,{infos:de,disabled:!0},null,8,["infos"])]),_:1},8,["fullscreen","modelValue"]),e(Tt,{value:M.value,"onUpdate:value":a[9]||(a[9]=l=>M.value=l),title:"下载链接",link:J.value},null,8,["value","link"]),e(T,{fullscreen:Te.value,title:"修改文件名",modelValue:oe.value,"onUpdate:modelValue":a[13]||(a[13]=l=>oe.value=l)},{default:o(()=>[s("div",null,[e(tt,{"label-width":"100px",model:h},{default:o(()=>[e(ge,{label:"原文件名",prop:"newName"},{default:o(()=>[e(p,{modelValue:h.oldName,"onUpdate:modelValue":a[10]||(a[10]=l=>h.oldName=l),disabled:""},null,8,["modelValue"])]),_:1}),e(ge,{label:"新文件名",prop:"newName"},{default:o(()=>[e(p,{modelValue:h.newName,"onUpdate:modelValue":a[11]||(a[11]=l=>h.newName=l),placeholder:"请输入新文件名"},{append:o(()=>[n(w(h.suffix),1)]),_:1},8,["modelValue"])]),_:1}),e(ge,null,{default:o(()=>[e(d,{type:"success",onClick:Je},{default:o(()=>[n("保存")]),_:1}),e(d,{onClick:a[12]||(a[12]=l=>oe.value=!1)},{default:o(()=>[n("取消")]),_:1})]),_:1})]),_:1},8,["model"])])]),_:1},8,["fullscreen","modelValue"])])}}});const Zl=vt($l,[["__scopeId","data-v-7d8411d6"]]);export{Zl as default};
2
+ //# sourceMappingURL=index-ac06071b.js.map
@@ -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":"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","x_google_ignoreList":[1,2]}
1
+ {"version":3,"file":"index-ac06071b.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{J as se,K as R,L as $,M as ae,N as ne,d as E,O as y,Q as le,r as A,k as m,R as re,f as c,D as K,w as p,c as _,H as I,t as k,S as C,T as U,b as B,V as ie,W as pe,X as ce,Y as de,g as L,a as o,Z as N,$ as J,h as Q,F as D,C as X,s as F,j as n,a0 as Y,x as G,_ as z,a1 as ee,o as te,a2 as ue,u as _e,U as O,i as W,E as fe,I as ve,p as he,e as me,a3 as ge}from"./index-62c7029f.js";import{E as be}from"./el-dialog-463960e0.js";import{d as H,E as we,a as $e,b as ye,c as Ce}from"./el-dropdown-item-7c33f4fa.js";import{E as ke,a as xe}from"./el-tab-pane-b3156067.js";import{E as Ee}from"./index-17fa8fb7.js";import"./index-6d7ac779.js";import"./aria-bc8e8b0f.js";import"./validator-853854a1.js";const Me=se({trigger:R.trigger,placement:H.placement,disabled:R.disabled,visible:$.visible,transition:$.transition,popperOptions:H.popperOptions,tabindex:H.tabindex,content:$.content,popperStyle:$.popperStyle,popperClass:$.popperClass,enterable:{...$.enterable,default:!0},effect:{...$.effect,default:"light"},teleported:$.teleported,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},"onUpdate:visible":{type:Function}}),Ve={"update:visible":r=>ae(r),"before-enter":()=>!0,"before-leave":()=>!0,"after-enter":()=>!0,"after-leave":()=>!0},Se={name:"ElPopover"},Ae=E({...Se,props:Me,emits:Ve,setup(r,{expose:l,emit:t}){const s=r,f="onUpdate:visible",i=y(()=>s[f]),h=le("popover"),g=A(),u=y(()=>{var e;return(e=m(g))==null?void 0:e.popperRef}),v=y(()=>[{width:re(s.width)},s.popperStyle]),b=y(()=>[h.b(),s.popperClass,{[h.m("plain")]:!!s.content}]),d=y(()=>s.transition==="el-fade-in-linear"),a=()=>{var e;(e=g.value)==null||e.hide()},x=()=>{t("before-enter")},w=()=>{t("before-leave")},M=()=>{t("after-enter")},V=()=>{t("update:visible",!1),t("after-leave")};return l({popperRef:u,hide:a}),(e,T)=>(c(),K(m(pe),ie({ref_key:"tooltipRef",ref:g},e.$attrs,{trigger:e.trigger,placement:e.placement,disabled:e.disabled,visible:e.visible,transition:e.transition,"popper-options":e.popperOptions,tabindex:e.tabindex,content:e.content,offset:e.offset,"show-after":e.showAfter,"hide-after":e.hideAfter,"auto-close":e.autoClose,"show-arrow":e.showArrow,"aria-label":e.title,effect:e.effect,enterable:e.enterable,"popper-class":m(b),"popper-style":m(v),teleported:e.teleported,persistent:e.persistent,"gpu-acceleration":m(d),"onUpdate:visible":m(i),onBeforeShow:x,onBeforeHide:w,onShow:M,onHide:V}),{content:p(()=>[e.title?(c(),_("div",{key:0,class:I(m(h).e("title")),role:"title"},k(e.title),3)):C("v-if",!0),U(e.$slots,"default",{},()=>[B(k(e.content),1)])]),default:p(()=>[e.$slots.reference?U(e.$slots,"reference",{key:0}):C("v-if",!0)]),_:3},16,["trigger","placement","disabled","visible","transition","popper-options","tabindex","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","persistent","gpu-acceleration","onUpdate:visible"]))}});var Be=ne(Ae,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popover/src/popover.vue"]]);const Z=(r,l)=>{const t=l.arg||l.value,s=t==null?void 0:t.popperRef;s&&(s.triggerRef=r)};var Pe={mounted(r,l){Z(r,l)},updated(r,l){Z(r,l)}};const He="popover",De=ce(Pe,He),Ie=de(Be,{directive:De}),Le=E({name:"Bell"}),Ne={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ze=o("path",{fill:"currentColor",d:"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64z"},null,-1),Te=o("path",{fill:"currentColor",d:"M256 768h512V448a256 256 0 1 0-512 0v320zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320z"},null,-1),Re=o("path",{fill:"currentColor",d:"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm352 128h128a64 64 0 0 1-128 0z"},null,-1),Ue=[ze,Te,Re];function Fe(r,l,t,s,f,i){return c(),_("svg",Ne,Ue)}var Oe=L(Le,[["render",Fe]]);const We=E({name:"Close"}),Ze={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},je=o("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"},null,-1),qe=[je];function Ke(r,l,t,s,f,i){return c(),_("svg",Ze,qe)}var Je=L(We,[["render",Ke]]);const Qe=E({name:"Expand"}),Xe={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Ye=o("path",{fill:"currentColor",d:"M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352 192 160-192 128V352z"},null,-1),Ge=[Ye];function et(r,l,t,s,f,i){return c(),_("svg",Xe,Ge)}var tt=L(Qe,[["render",et]]);const ot={key:0,class:"empty"},st={class:"message-list"},at=["onClick"],nt={class:"text"},lt={class:"date"},rt=["innerHTML"],it={class:"dialog-date"},pt=E({__name:"index",props:{data:{},autoShow:{type:Boolean}},setup(r){const l=r,t=N({show:!1,title:"系统消息",text:"内容"}),s=A(null),f=u=>{s.value=u,t.text=u.text,t.title=u.type===0?"【系统消息】":"【私信】",t.show=!0},i=()=>{if(s.value.read){t.show=!1;return}Y.readMessage(s.value.id).then(()=>{s.value.read=!0,t.show=!1})};J(()=>l.data.length,()=>{if(!l.autoShow)return;const u=l.data.find(v=>!v.read);u&&f(u)});const h=Q(),g=y(()=>h.getters["public/isMobile"]);return(u,v)=>{const b=G,d=be;return c(),_(D,null,[u.data.length?C("",!0):(c(),_("div",ot,"暂无更多消息 ღ( ´・ᴗ・` )比心")),o("ul",st,[(c(!0),_(D,null,X(u.data,a=>(c(),_("li",{key:a.id,class:I({read:a.read}),onClick:x=>f(a)},[o("p",nt,k(a.text),1),o("p",lt,k(m(F)(new Date(a.date))),1)],10,at))),128))]),n(d,{center:"","show-close":"","append-to-body":"",modelValue:t.show,"onUpdate:modelValue":v[1]||(v[1]=a=>t.show=a),"close-on-click-modal":!1,title:t.title,width:"30%",fullscreen:g.value},{footer:p(()=>[o("p",it," 时间:"+k(m(F)(new Date(s.value.date))),1),o("span",null,[n(b,{type:"default",onClick:v[0]||(v[0]=()=>{t.show=!1})},{default:p(()=>[B(" 下次提醒 ")]),_:1}),n(b,{type:"primary",onClick:i},{default:p(()=>[B(" 确定 ")]),_:1})])]),default:p(()=>[o("div",{class:"message-text",innerHTML:t.text},null,8,rt)]),_:1},8,["modelValue","title","fullscreen"])],64)}}});const j=z(pt,[["__scopeId","data-v-46eebd19"]]),ct={class:"message-panel"},dt=E({__name:"index",setup(r){const l=A("all"),t=N([]),s=y(()=>t.filter(i=>!i.read)),f=ee();return te(()=>{f.name!=="config"&&Y.getMessageList().then(i=>{t.push(...i.data)})}),(i,h)=>{const g=G,u=ue,v=ke,b=xe,d=Ie;return c(),_("div",ct,[n(d,{placement:"bottom-end",width:375,trigger:"hover"},{reference:p(()=>[n(u,{value:s.value.length||"",max:99},{default:p(()=>[n(g,{icon:m(Oe),circle:""},null,8,["icon"])]),_:1},8,["value"])]),default:p(()=>[o("div",null,[n(b,{modelValue:l.value,"onUpdate:modelValue":h[0]||(h[0]=a=>l.value=a)},{default:p(()=>[n(v,{label:"未读 ".concat(s.value.length||""),name:"no"},{default:p(()=>[n(j,{"auto-show":"",data:s.value},null,8,["data"])]),_:1},8,["label"]),n(v,{label:"全部 ".concat(t.length||""),name:"all"},{default:p(()=>[n(j,{data:t},null,8,["data"])]),_:1},8,["label"])]),_:1},8,["modelValue"])])]),_:1})])}}});const q=z(dt,[["__scopeId","data-v-9de070a6"]]),S=r=>(he("data-v-2108dc2b"),r=r(),me(),r),ut={class:"dashboard"},_t={class:"pc-nav"},ft={class:"nav"},vt={class:"logo"},ht=S(()=>o("img",{src:"https://img.cdn.sugarat.top/easypicker/EasyPicker.png",alt:"logo"},null,-1)),mt={key:0,type:"checkbox",id:"navActive"},gt={key:0,for:"navActive",class:"nav-item"},bt=S(()=>o("span",null,"Hello💐,",-1)),wt=["onClick"],$t=S(()=>o("span",{style:{"margin-right":"6px"}},"退出",-1)),yt=S(()=>o("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","data-v-53d86618":""},[o("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M10.6667 2.55473C13.0212 3.58347 14.6667 5.93291 14.6667 8.66667C14.6667 12.3486 11.6819 15.3333 8 15.3333C4.3181 15.3333 1.33333 12.3486 1.33333 8.66667C1.33333 5.93291 2.97879 3.58347 5.33333 2.55473V4.04684C3.7392 4.969 2.66667 6.69259 2.66667 8.66667C2.66667 11.6122 5.05448 14 8 14C10.9455 14 13.3333 11.6122 13.3333 8.66667C13.3333 6.69259 12.2608 4.969 10.6667 4.04684V2.55473ZM7.33333 8.66667V1.33333C7.33333 1.14924 7.48257 1 7.66667 1H8.33333C8.51743 1 8.66667 1.14924 8.66667 1.33333V8.66667C8.66667 8.85076 8.51743 9 8.33333 9H7.66667C7.48257 9 7.33333 8.85076 7.33333 8.66667Z",fill:"#86909C","data-v-53d86618":""})],-1)),Ct=S(()=>o("div",{class:"mask"},null,-1)),kt={id:"navMenu"},xt={for:"navActive"},Et={key:0,class:"flex fac"},Mt=S(()=>o("span",null,"Hello 💐,",-1)),Vt={class:"exit-info"},St={class:"ellipsis"},At=E({__name:"index",setup(r){const l=_e(),t=Q(),s=ee(),f=y(()=>t.getters["public/isMobile"]),i=N([{title:"文件管理",path:"/dashboard/files"},{title:"任务管理",path:"/dashboard/tasks"}]),h=A(0),g=d=>{const a=i[d];!a.isExternal&&d!==h.value&&l.push({path:a.path}),a.isExternal&&window.open(a.path,"_blank")};J(()=>s.path,d=>{const a=i.findIndex(x=>d.startsWith(x.path));a!==-1&&(h.value=a)});const u=()=>{Ee.confirm("确认退出登录?","登出提示",{draggable:!0}).then(()=>{O.logout().finally(()=>{t.commit("user/setToken",null),l.replace({name:"home"})})}).catch(()=>{fe.info("取消")})},v=A("World"),b=()=>{h.value=i.findIndex(d=>s.path.startsWith(d.path))};return te(()=>{O.checkPower().then(d=>{var w,M,V;const a=(w=d.data)==null?void 0:w.power;if(v.value=(M=d.data)==null?void 0:M.name,t.commit("user/setSuperAdmin",a),a){const e=[{title:"应用管理",path:"/dashboard/manage"},{title:"网站监控",path:"https://www.frontjs.com/app/87c1ef7667a513f313b4abb22a88dc78",isExternal:!0}];i.push(...e)}((V=d.data)==null?void 0:V.system)&&(i.splice(0,i.length),i.push({title:"系统管理",path:"/dashboard/config"})),b()})}),(d,a)=>{const x=W("router-link"),w=ve,M=ye,V=Ce,e=we,T=W("router-view");return c(),_("div",ut,[o("div",_t,[o("div",ft,[o("div",vt,[n(x,{to:"/"},{default:p(()=>[ht]),_:1})]),f.value?(c(),_("input",mt)):C("",!0),o("nav",null,[f.value?(c(),_("label",gt,[bt,B(" "+k(v.value),1)])):C("",!0),(c(!0),_(D,null,X(i,(oe,P)=>(c(),_("label",{for:"navActive",class:I(["nav-item",{active:h.value===P}]),key:P,onClick:Bt=>g(P)},k(oe.title),11,wt))),128)),f.value?(c(),_("label",{key:1,onClick:u,for:"navActive",class:"nav-item"},[$t,n(w,{size:"16"},{default:p(()=>[yt]),_:1})])):C("",!0)]),Ct]),o("span",kt,[f.value?(c(),K(q,{key:0,class:"mobile-message-bell"})):C("",!0),o("label",xt,[n(w,{size:"32"},{default:p(()=>[n(m(tt))]),_:1})])]),f.value?C("",!0):(c(),_("div",Et,[n(q),Mt,n(e,{class:"exit"},{dropdown:p(()=>[n(V,null,{default:p(()=>[n(M,{onClick:u,icon:m(Je)},{default:p(()=>[B("退出")]),_:1},8,["icon"])]),_:1})]),default:p(()=>[o("span",Vt,[o("span",St,k(v.value),1),n(w,null,{default:p(()=>[n(m($e))]),_:1})])]),_:1})]))]),n(T),o("div",null,[n(ge,{type:"dashboard"})])])}}});const Rt=z(At,[["__scopeId","data-v-2108dc2b"]]);export{Rt as default};
2
- //# sourceMappingURL=index-8eff6b5a.js.map
1
+ import{J as se,K as R,L as $,M as ae,N as ne,d as E,O as y,Q as le,r as A,k as m,R as re,f as c,D as K,w as p,c as _,H as I,t as k,S as C,T as U,b as B,V as ie,W as pe,X as ce,Y as de,g as L,a as o,Z as N,$ as J,h as Q,F as D,C as X,s as F,j as n,a0 as Y,x as G,_ as z,a1 as ee,o as te,a2 as ue,u as _e,U as O,i as W,E as fe,I as ve,p as he,e as me,a3 as ge}from"./index-1639ad54.js";import{E as be}from"./el-dialog-c11c4af2.js";import{d as H,E as we,a as $e,b as ye,c as Ce}from"./el-dropdown-item-3eb29c67.js";import{E as ke,a as xe}from"./el-tab-pane-db271c8d.js";import{E as Ee}from"./index-b8357360.js";import"./index-68448dbd.js";import"./aria-bc8e8b0f.js";import"./validator-5c60ab85.js";const Me=se({trigger:R.trigger,placement:H.placement,disabled:R.disabled,visible:$.visible,transition:$.transition,popperOptions:H.popperOptions,tabindex:H.tabindex,content:$.content,popperStyle:$.popperStyle,popperClass:$.popperClass,enterable:{...$.enterable,default:!0},effect:{...$.effect,default:"light"},teleported:$.teleported,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},"onUpdate:visible":{type:Function}}),Ve={"update:visible":r=>ae(r),"before-enter":()=>!0,"before-leave":()=>!0,"after-enter":()=>!0,"after-leave":()=>!0},Se={name:"ElPopover"},Ae=E({...Se,props:Me,emits:Ve,setup(r,{expose:l,emit:t}){const s=r,f="onUpdate:visible",i=y(()=>s[f]),h=le("popover"),g=A(),u=y(()=>{var e;return(e=m(g))==null?void 0:e.popperRef}),v=y(()=>[{width:re(s.width)},s.popperStyle]),b=y(()=>[h.b(),s.popperClass,{[h.m("plain")]:!!s.content}]),d=y(()=>s.transition==="el-fade-in-linear"),a=()=>{var e;(e=g.value)==null||e.hide()},x=()=>{t("before-enter")},w=()=>{t("before-leave")},M=()=>{t("after-enter")},V=()=>{t("update:visible",!1),t("after-leave")};return l({popperRef:u,hide:a}),(e,T)=>(c(),K(m(pe),ie({ref_key:"tooltipRef",ref:g},e.$attrs,{trigger:e.trigger,placement:e.placement,disabled:e.disabled,visible:e.visible,transition:e.transition,"popper-options":e.popperOptions,tabindex:e.tabindex,content:e.content,offset:e.offset,"show-after":e.showAfter,"hide-after":e.hideAfter,"auto-close":e.autoClose,"show-arrow":e.showArrow,"aria-label":e.title,effect:e.effect,enterable:e.enterable,"popper-class":m(b),"popper-style":m(v),teleported:e.teleported,persistent:e.persistent,"gpu-acceleration":m(d),"onUpdate:visible":m(i),onBeforeShow:x,onBeforeHide:w,onShow:M,onHide:V}),{content:p(()=>[e.title?(c(),_("div",{key:0,class:I(m(h).e("title")),role:"title"},k(e.title),3)):C("v-if",!0),U(e.$slots,"default",{},()=>[B(k(e.content),1)])]),default:p(()=>[e.$slots.reference?U(e.$slots,"reference",{key:0}):C("v-if",!0)]),_:3},16,["trigger","placement","disabled","visible","transition","popper-options","tabindex","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","persistent","gpu-acceleration","onUpdate:visible"]))}});var Be=ne(Ae,[["__file","/home/runner/work/element-plus/element-plus/packages/components/popover/src/popover.vue"]]);const Z=(r,l)=>{const t=l.arg||l.value,s=t==null?void 0:t.popperRef;s&&(s.triggerRef=r)};var Pe={mounted(r,l){Z(r,l)},updated(r,l){Z(r,l)}};const He="popover",De=ce(Pe,He),Ie=de(Be,{directive:De}),Le=E({name:"Bell"}),Ne={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ze=o("path",{fill:"currentColor",d:"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64z"},null,-1),Te=o("path",{fill:"currentColor",d:"M256 768h512V448a256 256 0 1 0-512 0v320zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320z"},null,-1),Re=o("path",{fill:"currentColor",d:"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm352 128h128a64 64 0 0 1-128 0z"},null,-1),Ue=[ze,Te,Re];function Fe(r,l,t,s,f,i){return c(),_("svg",Ne,Ue)}var Oe=L(Le,[["render",Fe]]);const We=E({name:"Close"}),Ze={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},je=o("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"},null,-1),qe=[je];function Ke(r,l,t,s,f,i){return c(),_("svg",Ze,qe)}var Je=L(We,[["render",Ke]]);const Qe=E({name:"Expand"}),Xe={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Ye=o("path",{fill:"currentColor",d:"M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352 192 160-192 128V352z"},null,-1),Ge=[Ye];function et(r,l,t,s,f,i){return c(),_("svg",Xe,Ge)}var tt=L(Qe,[["render",et]]);const ot={key:0,class:"empty"},st={class:"message-list"},at=["onClick"],nt={class:"text"},lt={class:"date"},rt=["innerHTML"],it={class:"dialog-date"},pt=E({__name:"index",props:{data:{},autoShow:{type:Boolean}},setup(r){const l=r,t=N({show:!1,title:"系统消息",text:"内容"}),s=A(null),f=u=>{s.value=u,t.text=u.text,t.title=u.type===0?"【系统消息】":"【私信】",t.show=!0},i=()=>{if(s.value.read){t.show=!1;return}Y.readMessage(s.value.id).then(()=>{s.value.read=!0,t.show=!1})};J(()=>l.data.length,()=>{if(!l.autoShow)return;const u=l.data.find(v=>!v.read);u&&f(u)});const h=Q(),g=y(()=>h.getters["public/isMobile"]);return(u,v)=>{const b=G,d=be;return c(),_(D,null,[u.data.length?C("",!0):(c(),_("div",ot,"暂无更多消息 ღ( ´・ᴗ・` )比心")),o("ul",st,[(c(!0),_(D,null,X(u.data,a=>(c(),_("li",{key:a.id,class:I({read:a.read}),onClick:x=>f(a)},[o("p",nt,k(a.text),1),o("p",lt,k(m(F)(new Date(a.date))),1)],10,at))),128))]),n(d,{center:"","show-close":"","append-to-body":"",modelValue:t.show,"onUpdate:modelValue":v[1]||(v[1]=a=>t.show=a),"close-on-click-modal":!1,title:t.title,width:"30%",fullscreen:g.value},{footer:p(()=>[o("p",it," 时间:"+k(m(F)(new Date(s.value.date))),1),o("span",null,[n(b,{type:"default",onClick:v[0]||(v[0]=()=>{t.show=!1})},{default:p(()=>[B(" 下次提醒 ")]),_:1}),n(b,{type:"primary",onClick:i},{default:p(()=>[B(" 确定 ")]),_:1})])]),default:p(()=>[o("div",{class:"message-text",innerHTML:t.text},null,8,rt)]),_:1},8,["modelValue","title","fullscreen"])],64)}}});const j=z(pt,[["__scopeId","data-v-46eebd19"]]),ct={class:"message-panel"},dt=E({__name:"index",setup(r){const l=A("all"),t=N([]),s=y(()=>t.filter(i=>!i.read)),f=ee();return te(()=>{f.name!=="config"&&Y.getMessageList().then(i=>{t.push(...i.data)})}),(i,h)=>{const g=G,u=ue,v=ke,b=xe,d=Ie;return c(),_("div",ct,[n(d,{placement:"bottom-end",width:375,trigger:"hover"},{reference:p(()=>[n(u,{value:s.value.length||"",max:99},{default:p(()=>[n(g,{icon:m(Oe),circle:""},null,8,["icon"])]),_:1},8,["value"])]),default:p(()=>[o("div",null,[n(b,{modelValue:l.value,"onUpdate:modelValue":h[0]||(h[0]=a=>l.value=a)},{default:p(()=>[n(v,{label:"未读 ".concat(s.value.length||""),name:"no"},{default:p(()=>[n(j,{"auto-show":"",data:s.value},null,8,["data"])]),_:1},8,["label"]),n(v,{label:"全部 ".concat(t.length||""),name:"all"},{default:p(()=>[n(j,{data:t},null,8,["data"])]),_:1},8,["label"])]),_:1},8,["modelValue"])])]),_:1})])}}});const q=z(dt,[["__scopeId","data-v-9de070a6"]]),S=r=>(he("data-v-2108dc2b"),r=r(),me(),r),ut={class:"dashboard"},_t={class:"pc-nav"},ft={class:"nav"},vt={class:"logo"},ht=S(()=>o("img",{src:"https://img.cdn.sugarat.top/easypicker/EasyPicker.png",alt:"logo"},null,-1)),mt={key:0,type:"checkbox",id:"navActive"},gt={key:0,for:"navActive",class:"nav-item"},bt=S(()=>o("span",null,"Hello💐,",-1)),wt=["onClick"],$t=S(()=>o("span",{style:{"margin-right":"6px"}},"退出",-1)),yt=S(()=>o("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg","data-v-53d86618":""},[o("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M10.6667 2.55473C13.0212 3.58347 14.6667 5.93291 14.6667 8.66667C14.6667 12.3486 11.6819 15.3333 8 15.3333C4.3181 15.3333 1.33333 12.3486 1.33333 8.66667C1.33333 5.93291 2.97879 3.58347 5.33333 2.55473V4.04684C3.7392 4.969 2.66667 6.69259 2.66667 8.66667C2.66667 11.6122 5.05448 14 8 14C10.9455 14 13.3333 11.6122 13.3333 8.66667C13.3333 6.69259 12.2608 4.969 10.6667 4.04684V2.55473ZM7.33333 8.66667V1.33333C7.33333 1.14924 7.48257 1 7.66667 1H8.33333C8.51743 1 8.66667 1.14924 8.66667 1.33333V8.66667C8.66667 8.85076 8.51743 9 8.33333 9H7.66667C7.48257 9 7.33333 8.85076 7.33333 8.66667Z",fill:"#86909C","data-v-53d86618":""})],-1)),Ct=S(()=>o("div",{class:"mask"},null,-1)),kt={id:"navMenu"},xt={for:"navActive"},Et={key:0,class:"flex fac"},Mt=S(()=>o("span",null,"Hello 💐,",-1)),Vt={class:"exit-info"},St={class:"ellipsis"},At=E({__name:"index",setup(r){const l=_e(),t=Q(),s=ee(),f=y(()=>t.getters["public/isMobile"]),i=N([{title:"文件管理",path:"/dashboard/files"},{title:"任务管理",path:"/dashboard/tasks"}]),h=A(0),g=d=>{const a=i[d];!a.isExternal&&d!==h.value&&l.push({path:a.path}),a.isExternal&&window.open(a.path,"_blank")};J(()=>s.path,d=>{const a=i.findIndex(x=>d.startsWith(x.path));a!==-1&&(h.value=a)});const u=()=>{Ee.confirm("确认退出登录?","登出提示",{draggable:!0}).then(()=>{O.logout().finally(()=>{t.commit("user/setToken",null),l.replace({name:"home"})})}).catch(()=>{fe.info("取消")})},v=A("World"),b=()=>{h.value=i.findIndex(d=>s.path.startsWith(d.path))};return te(()=>{O.checkPower().then(d=>{var w,M,V;const a=(w=d.data)==null?void 0:w.power;if(v.value=(M=d.data)==null?void 0:M.name,t.commit("user/setSuperAdmin",a),a){const e=[{title:"应用管理",path:"/dashboard/manage"},{title:"网站监控",path:"https://www.frontjs.com/app/87c1ef7667a513f313b4abb22a88dc78",isExternal:!0}];i.push(...e)}((V=d.data)==null?void 0:V.system)&&(i.splice(0,i.length),i.push({title:"系统管理",path:"/dashboard/config"})),b()})}),(d,a)=>{const x=W("router-link"),w=ve,M=ye,V=Ce,e=we,T=W("router-view");return c(),_("div",ut,[o("div",_t,[o("div",ft,[o("div",vt,[n(x,{to:"/"},{default:p(()=>[ht]),_:1})]),f.value?(c(),_("input",mt)):C("",!0),o("nav",null,[f.value?(c(),_("label",gt,[bt,B(" "+k(v.value),1)])):C("",!0),(c(!0),_(D,null,X(i,(oe,P)=>(c(),_("label",{for:"navActive",class:I(["nav-item",{active:h.value===P}]),key:P,onClick:Bt=>g(P)},k(oe.title),11,wt))),128)),f.value?(c(),_("label",{key:1,onClick:u,for:"navActive",class:"nav-item"},[$t,n(w,{size:"16"},{default:p(()=>[yt]),_:1})])):C("",!0)]),Ct]),o("span",kt,[f.value?(c(),K(q,{key:0,class:"mobile-message-bell"})):C("",!0),o("label",xt,[n(w,{size:"32"},{default:p(()=>[n(m(tt))]),_:1})])]),f.value?C("",!0):(c(),_("div",Et,[n(q),Mt,n(e,{class:"exit"},{dropdown:p(()=>[n(V,null,{default:p(()=>[n(M,{onClick:u,icon:m(Je)},{default:p(()=>[B("退出")]),_:1},8,["icon"])]),_:1})]),default:p(()=>[o("span",Vt,[o("span",St,k(v.value),1),n(w,null,{default:p(()=>[n(m($e))]),_:1})])]),_:1})]))]),n(T),o("div",null,[n(ge,{type:"dashboard"})])])}}});const Rt=z(At,[["__scopeId","data-v-2108dc2b"]]);export{Rt as default};
2
+ //# sourceMappingURL=index-adc1b681.js.map