@sugarat/easypicker2-client 2.5.0 → 2.6.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 (142) hide show
  1. package/dist/assets/{data-analysis-13490516.js → data-analysis-3ce8c1c1.js} +2 -2
  2. package/dist/assets/{data-analysis-13490516.js.map → data-analysis-3ce8c1c1.js.map} +1 -1
  3. package/dist/assets/{data-analysis-legacy.f8612e65.js → data-analysis-legacy.985137a1.js} +2 -2
  4. package/dist/assets/{data-board-229a3bf5.js → data-board-fc2c2ec1.js} +2 -2
  5. package/dist/assets/{data-board-229a3bf5.js.map → data-board-fc2c2ec1.js.map} +1 -1
  6. package/dist/assets/{data-board-legacy.a60c4519.js → data-board-legacy.33116f7c.js} +2 -2
  7. package/dist/assets/{el-date-picker-5a3e3d86.js → el-date-picker-b377a533.js} +2 -2
  8. package/dist/assets/{el-date-picker-5a3e3d86.js.map → el-date-picker-b377a533.js.map} +1 -1
  9. package/dist/assets/{el-date-picker-legacy.6d67764b.js → el-date-picker-legacy.127f0787.js} +2 -2
  10. package/dist/assets/{el-dialog-463960e0.js → el-dialog-5b7bce58.js} +2 -2
  11. package/dist/assets/{el-dialog-463960e0.js.map → el-dialog-5b7bce58.js.map} +1 -1
  12. package/dist/assets/{el-dialog-legacy.0bcf48a4.js → el-dialog-legacy.e6ef2c86.js} +2 -2
  13. package/dist/assets/{el-dropdown-item-7c33f4fa.js → el-dropdown-item-e0275106.js} +2 -2
  14. package/dist/assets/{el-dropdown-item-7c33f4fa.js.map → el-dropdown-item-e0275106.js.map} +1 -1
  15. package/dist/assets/{el-dropdown-item-legacy.8625546e.js → el-dropdown-item-legacy.4888d114.js} +2 -2
  16. package/dist/assets/{el-form-item-f40006bf.js → el-form-item-c0658f70.js} +2 -2
  17. package/dist/assets/{el-form-item-f40006bf.js.map → el-form-item-c0658f70.js.map} +1 -1
  18. package/dist/assets/{el-form-item-legacy.d28db5d0.js → el-form-item-legacy.a8e8784e.js} +2 -2
  19. package/dist/assets/{el-loading-5d91bb6c.js → el-loading-c8798044.js} +2 -2
  20. package/dist/assets/{el-loading-5d91bb6c.js.map → el-loading-c8798044.js.map} +1 -1
  21. package/dist/assets/{el-loading-legacy.0f35210f.js → el-loading-legacy.534bd799.js} +2 -2
  22. package/dist/assets/{el-pagination-ffb99240.js → el-pagination-dabcccbb.js} +2 -2
  23. package/dist/assets/{el-pagination-ffb99240.js.map → el-pagination-dabcccbb.js.map} +1 -1
  24. package/dist/assets/{el-pagination-legacy.25b54e8d.js → el-pagination-legacy.7d2ae10d.js} +2 -2
  25. package/dist/assets/{el-progress-2fff98be.js → el-progress-54b274cd.js} +2 -2
  26. package/dist/assets/{el-progress-2fff98be.js.map → el-progress-54b274cd.js.map} +1 -1
  27. package/dist/assets/{el-progress-legacy.db8b5855.js → el-progress-legacy.07ca6502.js} +2 -2
  28. package/dist/assets/{el-select-7d894fd0.js → el-select-f81a7377.js} +2 -2
  29. package/dist/assets/{el-select-7d894fd0.js.map → el-select-f81a7377.js.map} +1 -1
  30. package/dist/assets/{el-select-legacy.ad6ded5a.js → el-select-legacy.94fad7fa.js} +2 -2
  31. package/dist/assets/{el-switch-2eda0412.js → el-switch-9eba6fd0.js} +2 -2
  32. package/dist/assets/{el-switch-2eda0412.js.map → el-switch-9eba6fd0.js.map} +1 -1
  33. package/dist/assets/{el-switch-legacy.e17e7919.js → el-switch-legacy.490534be.js} +2 -2
  34. package/dist/assets/{el-tab-pane-b3156067.js → el-tab-pane-89bdd69b.js} +2 -2
  35. package/dist/assets/{el-tab-pane-b3156067.js.map → el-tab-pane-89bdd69b.js.map} +1 -1
  36. package/dist/assets/{el-tab-pane-legacy.2cf21031.js → el-tab-pane-legacy.cfdbc441.js} +2 -2
  37. package/dist/assets/{el-table-column-22352e92.js → el-table-column-6716308a.js} +2 -2
  38. package/dist/assets/{el-table-column-22352e92.js.map → el-table-column-6716308a.js.map} +1 -1
  39. package/dist/assets/{el-table-column-legacy.fd665e2a.js → el-table-column-legacy.49685e5a.js} +4 -4
  40. package/dist/assets/index-0b0f29ec.js +2 -0
  41. package/dist/assets/index-0b0f29ec.js.map +1 -0
  42. package/dist/assets/index-17c6005d.css +1 -0
  43. package/dist/assets/{index-bc1a6d96.js → index-20019c57.js} +2 -2
  44. package/dist/assets/{index-bc1a6d96.js.map → index-20019c57.js.map} +1 -1
  45. package/dist/assets/index-247f2c67.css +1 -0
  46. package/dist/assets/{index-f298d979.js → index-248e88e2.js} +2 -2
  47. package/dist/assets/{index-f298d979.js.map → index-248e88e2.js.map} +1 -1
  48. package/dist/assets/{index-8eff6b5a.js → index-39637d43.js} +2 -2
  49. package/dist/assets/{index-8eff6b5a.js.map → index-39637d43.js.map} +1 -1
  50. package/dist/assets/{index-c61deab7.js → index-5099f123.js} +2 -2
  51. package/dist/assets/index-5099f123.js.map +1 -0
  52. package/dist/assets/index-57513f17.css +1 -0
  53. package/dist/assets/index-8557974a.js +2 -0
  54. package/dist/assets/index-8557974a.js.map +1 -0
  55. package/dist/assets/{index-82a6b493.css → index-85fcd87a.css} +1 -1
  56. package/dist/assets/index-867d07e4.js +2 -0
  57. package/dist/assets/{index-34bd5929.js.map → index-867d07e4.js.map} +1 -1
  58. package/dist/assets/{index-afb7d164.js → index-8f353d3b.js} +2 -2
  59. package/dist/assets/{index-afb7d164.js.map → index-8f353d3b.js.map} +1 -1
  60. package/dist/assets/index-8f7abc30.js +2 -0
  61. package/dist/assets/index-8f7abc30.js.map +1 -0
  62. package/dist/assets/{index-75b8c91c.js → index-8fbd06a5.js} +2 -2
  63. package/dist/assets/{index-75b8c91c.js.map → index-8fbd06a5.js.map} +1 -1
  64. package/dist/assets/index-a880597c.css +1 -0
  65. package/dist/assets/{index-d32645f3.js → index-acdbf3b6.js} +2 -2
  66. package/dist/assets/{index-d32645f3.js.map → index-acdbf3b6.js.map} +1 -1
  67. package/dist/assets/{index-ca90e8da.js → index-b3e58b02.js} +2 -2
  68. package/dist/assets/{index-ca90e8da.js.map → index-b3e58b02.js.map} +1 -1
  69. package/dist/assets/{index-17fa8fb7.js → index-c13133c5.js} +2 -2
  70. package/dist/assets/{index-17fa8fb7.js.map → index-c13133c5.js.map} +1 -1
  71. package/dist/assets/{index-b3774417.js → index-c1d6836c.js} +2 -2
  72. package/dist/assets/{index-b3774417.js.map → index-c1d6836c.js.map} +1 -1
  73. package/dist/assets/{index-5f3a9ae0.css → index-d26aeed5.css} +1 -1
  74. package/dist/assets/index-d98be3e4.js +19 -0
  75. package/dist/assets/index-d98be3e4.js.map +1 -0
  76. package/dist/assets/{index-f6ffb548.js → index-d9db6cc1.js} +2 -2
  77. package/dist/assets/{index-f6ffb548.js.map → index-d9db6cc1.js.map} +1 -1
  78. package/dist/assets/{index-6f4c911e.js → index-e0ef7135.js} +2 -2
  79. package/dist/assets/{index-6f4c911e.js.map → index-e0ef7135.js.map} +1 -1
  80. package/dist/assets/index-ebf625c9.js +2 -0
  81. package/dist/assets/index-ebf625c9.js.map +1 -0
  82. package/dist/assets/{index-6d7ac779.js → index-eda7d85a.js} +2 -2
  83. package/dist/assets/{index-6d7ac779.js.map → index-eda7d85a.js.map} +1 -1
  84. package/dist/assets/{index-c840d3aa.js → index-fdc557f8.js} +2 -2
  85. package/dist/assets/{index-c840d3aa.js.map → index-fdc557f8.js.map} +1 -1
  86. package/dist/assets/{index-legacy.189f20a8.js → index-legacy.0c570346.js} +2 -2
  87. package/dist/assets/index-legacy.24edddf9.js +2 -0
  88. package/dist/assets/{index-legacy.01d9320a.js → index-legacy.31681402.js} +2 -2
  89. package/dist/assets/{index-legacy.bd5a4368.js → index-legacy.3e6b32cf.js} +2 -2
  90. package/dist/assets/index-legacy.4edc099d.js +2 -0
  91. package/dist/assets/{index-legacy.1f2405e5.js → index-legacy.614df679.js} +2 -2
  92. package/dist/assets/{index-legacy.6c7021b3.js → index-legacy.6420d0ab.js} +2 -2
  93. package/dist/assets/{index-legacy.9f65dcb9.js → index-legacy.679e5ce1.js} +2 -2
  94. package/dist/assets/{index-legacy.9c4986d3.js → index-legacy.7b42e0cb.js} +2 -2
  95. package/dist/assets/index-legacy.7bafa2e6.js +2 -0
  96. package/dist/assets/{index-legacy.4f956884.js → index-legacy.7ff3d773.js} +2 -2
  97. package/dist/assets/{index-legacy.9dc57803.js → index-legacy.84e0eca9.js} +2 -2
  98. package/dist/assets/{index-legacy.d9854cf5.js → index-legacy.9ca64f8c.js} +2 -2
  99. package/dist/assets/{index-legacy.7dae3131.js → index-legacy.a4371211.js} +2 -2
  100. package/dist/assets/index-legacy.acb8b137.js +23 -0
  101. package/dist/assets/index-legacy.bc3790f6.js +2 -0
  102. package/dist/assets/{index-legacy.e6994f0a.js → index-legacy.d0e21cb1.js} +2 -2
  103. package/dist/assets/{index-legacy.08663170.js → index-legacy.daf56c8f.js} +2 -2
  104. package/dist/assets/{index-legacy.1540c5bc.js → index-legacy.e12feae0.js} +2 -2
  105. package/dist/assets/{index-legacy.51740a44.js → index-legacy.e7f8790c.js} +2 -2
  106. package/dist/assets/{isEqual-9c466456.js → isEqual-82bb65ad.js} +2 -2
  107. package/dist/assets/{isEqual-9c466456.js.map → isEqual-82bb65ad.js.map} +1 -1
  108. package/dist/assets/{isEqual-legacy.985bb619.js → isEqual-legacy.dbaa2a6e.js} +2 -2
  109. package/dist/assets/{refresh-6ae903c0.js → refresh-f2c4c532.js} +2 -2
  110. package/dist/assets/{refresh-6ae903c0.js.map → refresh-f2c4c532.js.map} +1 -1
  111. package/dist/assets/{refresh-legacy.8092415a.js → refresh-legacy.0ee83ca1.js} +2 -2
  112. package/dist/assets/{tip-00ddf749.js → tip-3d272885.js} +2 -2
  113. package/dist/assets/{tip-00ddf749.js.map → tip-3d272885.js.map} +1 -1
  114. package/dist/assets/{tip-legacy.6e921091.js → tip-legacy.dee89e85.js} +2 -2
  115. package/dist/assets/validator-d4ea1237.js +2 -0
  116. package/dist/assets/{validator-853854a1.js.map → validator-d4ea1237.js.map} +1 -1
  117. package/dist/assets/validator-legacy.ecd1e5dd.js +2 -0
  118. package/dist/index.html +3 -3
  119. package/package.json +10 -4
  120. package/dist/assets/index-34bd5929.js +0 -2
  121. package/dist/assets/index-34fd4f9f.css +0 -1
  122. package/dist/assets/index-62c7029f.js +0 -15
  123. package/dist/assets/index-62c7029f.js.map +0 -1
  124. package/dist/assets/index-98964915.js +0 -2
  125. package/dist/assets/index-98964915.js.map +0 -1
  126. package/dist/assets/index-b0a4c236.js +0 -2
  127. package/dist/assets/index-b0a4c236.js.map +0 -1
  128. package/dist/assets/index-c3a1cd43.js +0 -2
  129. package/dist/assets/index-c3a1cd43.js.map +0 -1
  130. package/dist/assets/index-c61deab7.js.map +0 -1
  131. package/dist/assets/index-d3ae2239.css +0 -1
  132. package/dist/assets/index-eb08e7b7.css +0 -1
  133. package/dist/assets/index-f31c9ba4.css +0 -1
  134. package/dist/assets/index-f47a54b0.js +0 -2
  135. package/dist/assets/index-f47a54b0.js.map +0 -1
  136. package/dist/assets/index-legacy.45ec3501.js +0 -2
  137. package/dist/assets/index-legacy.5d174bde.js +0 -2
  138. package/dist/assets/index-legacy.978f90e1.js +0 -18
  139. package/dist/assets/index-legacy.d32480a5.js +0 -2
  140. package/dist/assets/index-legacy.e7464d3c.js +0 -2
  141. package/dist/assets/validator-853854a1.js +0 -2
  142. package/dist/assets/validator-legacy.b34dfdfa.js +0 -2
@@ -0,0 +1 @@
1
+ @media screen and (max-width: 700px){.user[data-v-8b261490]{margin-top:40px!important}.log-filter[data-v-8b261490]{justify-content:center}}.user[data-v-8b261490]{margin:0 auto}.panel[data-v-8b261490]{max-width:1256px;padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}.log-filter[data-v-8b261490]{display:flex;flex-wrap:wrap}.log-filter .item[data-v-8b261490]{margin-right:10px;margin-bottom:10px}.log-filter .item .label[data-v-8b261490]{margin-right:10px;font-size:12px}.text-btn-list[data-v-8b261490]{display:flex;flex-wrap:wrap}.text-btn-list button[data-v-8b261490]{margin-left:0}.user-oss-info[data-v-8b261490]{list-style:none}.user-oss-info li[data-v-8b261490]{margin-bottom:10px}.user-oss-info .clear-btn[data-v-8b261490]{margin-left:10px}.user-oss-info.disabled[data-v-8b261490]{background-color:rgba(245,108,108,.3)}
@@ -1,2 +1,2 @@
1
- import{g as I,d as k,f as c,c as r,a as e,h as ce,O as j,r as i,Z as N,a5 as B,o as ie,i as re,a6 as A,F as J,C as G,j as a,w as n,k as w,D as P,bq as L,E as K,s as F,aa as ue,v as pe,x as de,p as _e,e as ve,bp as me,G as he,t as V,b as h,ac as fe,I as ge,_ as $e}from"./index-62c7029f.js";import{v as we}from"./el-loading-5d91bb6c.js";import{E as ye}from"./el-dialog-463960e0.js";import{E as xe,s as be}from"./el-pagination-ffb99240.js";import{E as Ce,a as ze}from"./el-select-7d894fd0.js";import{E as Ve,a as ke}from"./el-table-column-22352e92.js";import{d as Ee}from"./other-8d7ba6a0.js";import{d as Se}from"./data-board-229a3bf5.js";import{r as De}from"./refresh-6ae903c0.js";import{d as He}from"./data-analysis-13490516.js";import"./index-6d7ac779.js";import"./isEqual-9c466456.js";import"./validator-853854a1.js";const Me=k({name:"Coin"}),Be={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Le=e("path",{fill:"currentColor",d:"m161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z"},null,-1),Ie=e("path",{fill:"currentColor",d:"m161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z"},null,-1),Te=e("path",{fill:"currentColor",d:"M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224zm0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160z"},null,-1),Oe=[Le,Ie,Te];function je(u,y,x,m,o,f){return c(),r("svg",Be,Oe)}var Ne=I(Me,[["render",je]]);const Pe=k({name:"Document"}),Fe={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Ue=e("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z"},null,-1),qe=[Ue];function Ae(u,y,x,m,o,f){return c(),r("svg",Fe,qe)}var Je=I(Pe,[["render",Ae]]);const Ge=k({name:"TakeawayBox"}),Ke={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Re=e("path",{fill:"currentColor",d:"M832 384H192v448h640V384zM96 320h832V128H96v192zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32h-64zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64z"},null,-1),We=[Re];function Ze(u,y,x,m,o,f){return c(),r("svg",Ke,We)}var Qe=I(Ge,[["render",Ze]]);const Xe=k({name:"Tickets"}),Ye={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},et=e("path",{fill:"currentColor",d:"M192 128v768h640V128H192zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h192v64H320v-64zm0 384h384v64H320v-64z"},null,-1),tt=[et];function at(u,y,x,m,o,f){return c(),r("svg",Ye,tt)}var ot=I(Xe,[["render",at]]);const st=u=>(_e("data-v-c6757aaa"),u=u(),ve(),u),lt={class:"overview"},nt={class:"card-list","element-loading-text":"Loading..."},ct={class:"logo"},it={class:"content"},rt={class:"title"},ut={class:"text"},pt={class:"supplement"},dt={class:"panel"},_t={class:"p10 log-filter"},vt={class:"item"},mt=st(()=>e("span",{class:"label"},"类型",-1)),ht={class:"item"},ft={class:"item"},gt={class:"item"},$t={class:"item"},wt={class:"flex fc p10"},yt={class:"dialog-footer"},xt=k({__name:"index",setup(u){const y=ce(),x=j(()=>y.getters["public/isMobile"]),m=i(!1),o=N([{type:"user",title:"用户数量",value:"0",supplement:"较昨日 +0",icon:me,color:"#40c9c6"},{type:"file",title:"记录/OSS",value:"0",supplement:"记录较昨日 +0",icon:Je,color:"#36a3f7"},{type:"log",title:"日志数量",value:"0",supplement:"较昨日 +0",icon:ot,color:"#f4516c"},{type:"pv",title:"PV/UV",value:"0/0",supplement:"",icon:Se,color:"#34bfa3"},{type:"compress",title:"归档&无效文件",value:"0/0KB",supplement:"已失效0个",icon:Ne,color:"#e38013"}]),f=()=>{m.value=!0,L.getCount().then(s=>{const{user:l,file:d,log:g,pv:_,compress:v}=s.data;o[0].value="".concat(l.sum),o[0].supplement="较昨日 +".concat(l.recent),o[1].value="".concat(d.server.sum,"/").concat(d.oss.sum," (").concat(d.oss.size,")"),o[1].supplement="记录较昨日 +".concat(d.server.recent),o[2].value="".concat(g.sum),o[2].supplement="较昨日 +".concat(g.recent),o[3].value="".concat(_.today.sum,"/").concat(_.today.uv),o[3].supplement="历史: ".concat(_.all.sum,"/").concat(_.all.uv),o[4].value="".concat(v.all.sum,"/").concat(v.all.size),o[4].supplement="已失效 ".concat(v.expired.sum,"/").concat(v.expired.size),m.value=!1})},E=i(!1),R=()=>{E.value=!0,L.clearExpiredCompressFile().then(()=>{setTimeout(()=>{K.success("清理成功,数据同步可能有延迟"),E.value=!1,f()},2e3)})},p=N([]),b=i("behavior"),S=i(""),W=N([{label:"用户行为",type:"behavior"},{label:"网络请求",type:"request"},{label:"服务端错误",type:"error"},{label:"页面访问",type:"pv"}]),C=i(10),Z=s=>{C.value=s},T=i(0),Q=j(()=>Math.ceil(T.value/C.value)),z=i(1),X=s=>{z.value=s},D=Ee(()=>{L.getLogMsg(C.value,z.value,b.value,S.value).then(s=>{p.splice(0,p.length),p.push(...s.data.logs),T.value=s.data.sum})},100,!1);B(()=>{b.value&&(z.value=1)}),B(()=>{S.value!==void 0&&D()}),B(()=>{b.value&&D()}),B(()=>{(z.value||C.value)&&D()});const H=i(!1),O=i(""),Y=s=>{L.getLogMsgDetail(s).then(l=>{H.value=!0,O.value=JSON.stringify(l.data,null,2)})},ee=j(()=>{try{return JSON.parse(O.value)}catch(s){return{}}}),te=()=>{fe(O.value)},ae=()=>{if(p.length===0)return;const s=["日期","IP","内容"],l=p.map(d=>{const{date:g,ip:_,msg:v}=d;return[F(new Date(g)),_,v]});ue(s,l,"导出日志_".concat(p.length,"条").concat(F(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx")),K.success("导出成功")};return ie(()=>{f()}),(s,l)=>{const d=ge,g=ze,_=Ce,v=pe,$=de,M=ke,oe=Ve,se=xe,le=re("json-viewer"),ne=ye,U=we;return c(),r("div",lt,[A((c(),r("div",nt,[(c(!0),r(J,null,G(o,t=>(c(),r("div",{key:t.type,class:"card"},[e("div",ct,[a(d,{color:t.color},{default:n(()=>[(c(),P(he(t.icon)))]),_:2},1032,["color"])]),e("div",it,[e("div",rt,V(t.title),1),e("div",ut,V(t.value),1),e("div",pt,V(t.supplement),1)])]))),128))])),[[U,m.value]]),e("div",dt,[e("div",_t,[e("span",vt,[mt,a(_,{modelValue:b.value,"onUpdate:modelValue":l[0]||(l[0]=t=>b.value=t),size:"default",placeholder:"请选择日志类型"},{default:n(()=>[(c(!0),r(J,null,G(W,(t,q)=>(c(),P(g,{key:q,label:t.label,value:t.type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),e("span",ht,[a(v,{size:"default",clearable:"",placeholder:"请输入要检索的内容","prefix-icon":w(be),modelValue:S.value,"onUpdate:modelValue":l[1]||(l[1]=t=>S.value=t)},null,8,["prefix-icon","modelValue"])]),e("span",ft,[a($,{size:"default",icon:w(De),onClick:w(D)},{default:n(()=>[h("刷新")]),_:1},8,["icon","onClick"])]),e("span",gt,[a($,{size:"default",type:"primary",icon:w(He),onClick:ae},{default:n(()=>[h("导出日志 "+V(p.length)+" 条",1)]),_:1},8,["icon"])]),e("span",$t,[A((c(),P($,{size:"default",type:"danger",icon:w(Qe),disabled:E.value,onClick:R},{default:n(()=>[h("清理无效文件")]),_:1},8,["icon","disabled"])),[[U,E.value]])])]),a(oe,{"tooltip-effect":"dark",height:"400",stripe:"",border:"","default-sort":{prop:"date",order:"descending"},data:p,style:{width:"100%"}},{default:n(()=>[a(M,{sortable:"",prop:"date",label:"日期",width:"180"},{default:n(t=>[h(V(w(F)(new Date(t.row.date))),1)]),_:1}),a(M,{sortable:"",prop:"ip",label:"IP",width:"100"}),a(M,{"min-width":"160",prop:"msg",label:"内容"}),a(M,{fixed:"right",label:"操作",width:"100"},{default:n(t=>[a($,{onClick:q=>Y(t.row.id),type:"primary",text:"",size:"small"},{default:n(()=>[h("查看详情")]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data"]),e("div",wt,[a(se,{"current-page":z.value,onCurrentChange:X,background:"","page-count":Q.value,"page-sizes":[10,50,100,200,500,1e3],"page-size":C.value,onSizeChange:Z,total:T.value,layout:"total, sizes, prev, pager, next, jumper"},null,8,["current-page","page-count","page-size","total"])])]),a(ne,{modelValue:H.value,"onUpdate:modelValue":l[3]||(l[3]=t=>H.value=t),title:"详细信息",width:"50%",center:"",fullscreen:x.value},{footer:n(()=>[e("span",yt,[a($,{type:"default",onClick:te},{default:n(()=>[h("复制")]),_:1}),a($,{type:"primary",onClick:l[2]||(l[2]=t=>H.value=!1)},{default:n(()=>[h("确定")]),_:1})])]),default:n(()=>[a(le,{value:ee.value,"expand-depth":5,copyable:"",boxed:"",sort:""},null,8,["value"])]),_:1},8,["modelValue","fullscreen"])])}}});const Tt=$e(xt,[["__scopeId","data-v-c6757aaa"]]);export{Tt as default};
2
- //# sourceMappingURL=index-f298d979.js.map
1
+ import{g as I,d as k,f as c,c as r,a as e,h as ce,O as j,r as i,Z as N,a6 as B,o as ie,i as re,a7 as A,F as J,C as G,j as a,w as n,k as w,D as P,bq as L,E as K,s as F,aa as ue,v as pe,x as de,p as _e,e as ve,bp as me,G as he,t as V,b as h,ac as fe,I as ge,_ as $e}from"./index-d98be3e4.js";import{v as we}from"./el-loading-c8798044.js";import{E as ye}from"./el-dialog-5b7bce58.js";import{E as xe,s as be}from"./el-pagination-dabcccbb.js";import{E as Ce,a as ze}from"./el-select-f81a7377.js";import{E as Ve,a as ke}from"./el-table-column-6716308a.js";import{d as Ee}from"./other-8d7ba6a0.js";import{d as Se}from"./data-board-fc2c2ec1.js";import{r as De}from"./refresh-f2c4c532.js";import{d as He}from"./data-analysis-3ce8c1c1.js";import"./index-eda7d85a.js";import"./isEqual-82bb65ad.js";import"./validator-d4ea1237.js";const Me=k({name:"Coin"}),Be={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Le=e("path",{fill:"currentColor",d:"m161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z"},null,-1),Ie=e("path",{fill:"currentColor",d:"m161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z"},null,-1),Te=e("path",{fill:"currentColor",d:"M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224zm0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160z"},null,-1),Oe=[Le,Ie,Te];function je(u,y,x,m,o,f){return c(),r("svg",Be,Oe)}var Ne=I(Me,[["render",je]]);const Pe=k({name:"Document"}),Fe={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Ue=e("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z"},null,-1),qe=[Ue];function Ae(u,y,x,m,o,f){return c(),r("svg",Fe,qe)}var Je=I(Pe,[["render",Ae]]);const Ge=k({name:"TakeawayBox"}),Ke={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Re=e("path",{fill:"currentColor",d:"M832 384H192v448h640V384zM96 320h832V128H96v192zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32h-64zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64z"},null,-1),We=[Re];function Ze(u,y,x,m,o,f){return c(),r("svg",Ke,We)}var Qe=I(Ge,[["render",Ze]]);const Xe=k({name:"Tickets"}),Ye={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},et=e("path",{fill:"currentColor",d:"M192 128v768h640V128H192zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h192v64H320v-64zm0 384h384v64H320v-64z"},null,-1),tt=[et];function at(u,y,x,m,o,f){return c(),r("svg",Ye,tt)}var ot=I(Xe,[["render",at]]);const st=u=>(_e("data-v-c6757aaa"),u=u(),ve(),u),lt={class:"overview"},nt={class:"card-list","element-loading-text":"Loading..."},ct={class:"logo"},it={class:"content"},rt={class:"title"},ut={class:"text"},pt={class:"supplement"},dt={class:"panel"},_t={class:"p10 log-filter"},vt={class:"item"},mt=st(()=>e("span",{class:"label"},"类型",-1)),ht={class:"item"},ft={class:"item"},gt={class:"item"},$t={class:"item"},wt={class:"flex fc p10"},yt={class:"dialog-footer"},xt=k({__name:"index",setup(u){const y=ce(),x=j(()=>y.getters["public/isMobile"]),m=i(!1),o=N([{type:"user",title:"用户数量",value:"0",supplement:"较昨日 +0",icon:me,color:"#40c9c6"},{type:"file",title:"记录/OSS",value:"0",supplement:"记录较昨日 +0",icon:Je,color:"#36a3f7"},{type:"log",title:"日志数量",value:"0",supplement:"较昨日 +0",icon:ot,color:"#f4516c"},{type:"pv",title:"PV/UV",value:"0/0",supplement:"",icon:Se,color:"#34bfa3"},{type:"compress",title:"归档&无效文件",value:"0/0KB",supplement:"已失效0个",icon:Ne,color:"#e38013"}]),f=()=>{m.value=!0,L.getCount().then(s=>{const{user:l,file:d,log:g,pv:_,compress:v}=s.data;o[0].value="".concat(l.sum),o[0].supplement="较昨日 +".concat(l.recent),o[1].value="".concat(d.server.sum,"/").concat(d.oss.sum," (").concat(d.oss.size,")"),o[1].supplement="记录较昨日 +".concat(d.server.recent),o[2].value="".concat(g.sum),o[2].supplement="较昨日 +".concat(g.recent),o[3].value="".concat(_.today.sum,"/").concat(_.today.uv),o[3].supplement="历史: ".concat(_.all.sum,"/").concat(_.all.uv),o[4].value="".concat(v.all.sum,"/").concat(v.all.size),o[4].supplement="已失效 ".concat(v.expired.sum,"/").concat(v.expired.size),m.value=!1})},E=i(!1),R=()=>{E.value=!0,L.clearExpiredCompressFile().then(()=>{setTimeout(()=>{K.success("清理成功,数据同步可能有延迟"),E.value=!1,f()},2e3)})},p=N([]),b=i("behavior"),S=i(""),W=N([{label:"用户行为",type:"behavior"},{label:"网络请求",type:"request"},{label:"服务端错误",type:"error"},{label:"页面访问",type:"pv"}]),C=i(10),Z=s=>{C.value=s},T=i(0),Q=j(()=>Math.ceil(T.value/C.value)),z=i(1),X=s=>{z.value=s},D=Ee(()=>{L.getLogMsg(C.value,z.value,b.value,S.value).then(s=>{p.splice(0,p.length),p.push(...s.data.logs),T.value=s.data.sum})},100,!1);B(()=>{b.value&&(z.value=1)}),B(()=>{S.value!==void 0&&D()}),B(()=>{b.value&&D()}),B(()=>{(z.value||C.value)&&D()});const H=i(!1),O=i(""),Y=s=>{L.getLogMsgDetail(s).then(l=>{H.value=!0,O.value=JSON.stringify(l.data,null,2)})},ee=j(()=>{try{return JSON.parse(O.value)}catch(s){return{}}}),te=()=>{fe(O.value)},ae=()=>{if(p.length===0)return;const s=["日期","IP","内容"],l=p.map(d=>{const{date:g,ip:_,msg:v}=d;return[F(new Date(g)),_,v]});ue(s,l,"导出日志_".concat(p.length,"条").concat(F(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx")),K.success("导出成功")};return ie(()=>{f()}),(s,l)=>{const d=ge,g=ze,_=Ce,v=pe,$=de,M=ke,oe=Ve,se=xe,le=re("json-viewer"),ne=ye,U=we;return c(),r("div",lt,[A((c(),r("div",nt,[(c(!0),r(J,null,G(o,t=>(c(),r("div",{key:t.type,class:"card"},[e("div",ct,[a(d,{color:t.color},{default:n(()=>[(c(),P(he(t.icon)))]),_:2},1032,["color"])]),e("div",it,[e("div",rt,V(t.title),1),e("div",ut,V(t.value),1),e("div",pt,V(t.supplement),1)])]))),128))])),[[U,m.value]]),e("div",dt,[e("div",_t,[e("span",vt,[mt,a(_,{modelValue:b.value,"onUpdate:modelValue":l[0]||(l[0]=t=>b.value=t),size:"default",placeholder:"请选择日志类型"},{default:n(()=>[(c(!0),r(J,null,G(W,(t,q)=>(c(),P(g,{key:q,label:t.label,value:t.type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),e("span",ht,[a(v,{size:"default",clearable:"",placeholder:"请输入要检索的内容","prefix-icon":w(be),modelValue:S.value,"onUpdate:modelValue":l[1]||(l[1]=t=>S.value=t)},null,8,["prefix-icon","modelValue"])]),e("span",ft,[a($,{size:"default",icon:w(De),onClick:w(D)},{default:n(()=>[h("刷新")]),_:1},8,["icon","onClick"])]),e("span",gt,[a($,{size:"default",type:"primary",icon:w(He),onClick:ae},{default:n(()=>[h("导出日志 "+V(p.length)+" 条",1)]),_:1},8,["icon"])]),e("span",$t,[A((c(),P($,{size:"default",type:"danger",icon:w(Qe),disabled:E.value,onClick:R},{default:n(()=>[h("清理无效文件")]),_:1},8,["icon","disabled"])),[[U,E.value]])])]),a(oe,{"tooltip-effect":"dark",height:"400",stripe:"",border:"","default-sort":{prop:"date",order:"descending"},data:p,style:{width:"100%"}},{default:n(()=>[a(M,{sortable:"",prop:"date",label:"日期",width:"180"},{default:n(t=>[h(V(w(F)(new Date(t.row.date))),1)]),_:1}),a(M,{sortable:"",prop:"ip",label:"IP",width:"100"}),a(M,{"min-width":"160",prop:"msg",label:"内容"}),a(M,{fixed:"right",label:"操作",width:"100"},{default:n(t=>[a($,{onClick:q=>Y(t.row.id),type:"primary",text:"",size:"small"},{default:n(()=>[h("查看详情")]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data"]),e("div",wt,[a(se,{"current-page":z.value,onCurrentChange:X,background:"","page-count":Q.value,"page-sizes":[10,50,100,200,500,1e3],"page-size":C.value,onSizeChange:Z,total:T.value,layout:"total, sizes, prev, pager, next, jumper"},null,8,["current-page","page-count","page-size","total"])])]),a(ne,{modelValue:H.value,"onUpdate:modelValue":l[3]||(l[3]=t=>H.value=t),title:"详细信息",width:"50%",center:"",fullscreen:x.value},{footer:n(()=>[e("span",yt,[a($,{type:"default",onClick:te},{default:n(()=>[h("复制")]),_:1}),a($,{type:"primary",onClick:l[2]||(l[2]=t=>H.value=!1)},{default:n(()=>[h("确定")]),_:1})])]),default:n(()=>[a(le,{value:ee.value,"expand-depth":5,copyable:"",boxed:"",sort:""},null,8,["value"])]),_:1},8,["modelValue","fullscreen"])])}}});const Tt=$e(xt,[["__scopeId","data-v-c6757aaa"]]);export{Tt as default};
2
+ //# sourceMappingURL=index-248e88e2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-f298d979.js","sources":["../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/coin.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/document.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/takeaway-box.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/tickets.mjs","../../src/pages/dashboard/manage/overview/index.vue"],"sourcesContent":["import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Coin\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"m161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"m161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z\"\n}, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224zm0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160z\"\n}, null, -1);\nconst _hoisted_5 = [\n _hoisted_2,\n _hoisted_3,\n _hoisted_4\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_5);\n}\nvar coin = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { coin as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Document\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar document = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { document as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"TakeawayBox\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M832 384H192v448h640V384zM96 320h832V128H96v192zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32h-64zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar takeawayBox = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { takeawayBox as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Tickets\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M192 128v768h640V128H192zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h192v64H320v-64zm0 384h384v64H320v-64z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar tickets = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { tickets as default };\n","<template>\n <div class=\"overview\">\n <div\n class=\"card-list\"\n v-loading=\"isLoadingOverview\"\n element-loading-text=\"Loading...\"\n >\n <div v-for=\"c in cardList\" :key=\"c.type\" class=\"card\">\n <div class=\"logo\">\n <el-icon :color=\"c.color\">\n <component :is=\"c.icon\"></component>\n </el-icon>\n </div>\n <div class=\"content\">\n <div class=\"title\">{{ c.title }}</div>\n <div class=\"text\">{{ c.value }}</div>\n <div class=\"supplement\">{{ c.supplement }}</div>\n </div>\n </div>\n </div>\n <div class=\"panel\">\n <div class=\"p10 log-filter\">\n <span class=\"item\">\n <span class=\"label\">类型</span>\n <el-select\n v-model=\"filterLogType\"\n size=\"default\"\n placeholder=\"请选择日志类型\"\n >\n <el-option\n v-for=\"(item, idx) in logTypeList\"\n :key=\"idx\"\n :label=\"item.label\"\n :value=\"item.type\"\n ></el-option>\n </el-select>\n </span>\n <span 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 </span>\n <span class=\"item\">\n <el-button size=\"default\" :icon=\"Refresh\" @click=\"refreshLogs\"\n >刷新</el-button\n >\n </span>\n <span class=\"item\">\n <el-button\n size=\"default\"\n type=\"primary\"\n :icon=\"DataAnalysis\"\n @click=\"exportLogData\"\n >导出日志 {{ logs.length }} 条</el-button\n >\n </span>\n <span class=\"item\">\n <el-button\n size=\"default\"\n type=\"danger\"\n :icon=\"TakeawayBox\"\n :disabled=\"disableDelete\"\n @click=\"clearExpiredCompressFile\"\n v-loading=\"disableDelete\"\n >清理无效文件</el-button\n >\n </span>\n </div>\n <el-table\n tooltip-effect=\"dark\"\n height=\"400\"\n stripe\n border\n :default-sort=\"{ prop: 'date', order: 'descending' }\"\n :data=\"logs\"\n style=\"width: 100%\"\n >\n <el-table-column sortable prop=\"date\" label=\"日期\" width=\"180\">\n <template #default=\"scope\">{{\n formatDate(new Date(scope.row.date))\n }}</template>\n </el-table-column>\n <!-- <el-table-column prop=\"type\" label=\"类型\" width=\"100\">\n <template #default=\"scope\">{{ getLogsTypeText(scope.row.type) }}</template>\n </el-table-column>-->\n <el-table-column\n sortable\n prop=\"ip\"\n label=\"IP\"\n width=\"100\"\n ></el-table-column>\n <el-table-column\n min-width=\"160\"\n prop=\"msg\"\n label=\"内容\"\n ></el-table-column>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"100\">\n <template #default=\"scope\">\n <el-button\n @click=\"handleDetail(scope.row.id)\"\n type=\"primary\"\n text\n size=\"small\"\n >查看详情</el-button\n >\n </template>\n </el-table-column>\n </el-table>\n\n <div class=\"flex fc p10\">\n <el-pagination\n :current-page=\"pageCurrent\"\n @current-change=\"handlePageChange\"\n background\n :page-count=\"pageCount\"\n :page-sizes=\"[10, 50, 100, 200, 500, 1000]\"\n :page-size=\"pageSize\"\n @size-change=\"handleSizeChange\"\n :total=\"logSumCount\"\n layout=\"total, sizes, prev, pager, next, jumper\"\n ></el-pagination>\n </div>\n </div>\n <el-dialog\n v-model=\"showDetail\"\n title=\"详细信息\"\n width=\"50%\"\n center\n :fullscreen=\"isMobile\"\n >\n <json-viewer\n :value=\"jsonData\"\n :expand-depth=\"5\"\n copyable\n boxed\n sort\n ></json-viewer>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button type=\"default\" @click=\"handleCopyDetail\">复制</el-button>\n <el-button type=\"primary\" @click=\"showDetail = false\">确定</el-button>\n </span>\n </template>\n </el-dialog>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, onMounted, reactive, ref, watchEffect } from 'vue'\nimport {\n User,\n Document,\n Tickets,\n DataBoard,\n Search,\n Refresh,\n DataAnalysis,\n Coin,\n TakeawayBox\n} from '@element-plus/icons-vue'\nimport { useStore } from 'vuex'\nimport { ElMessage } from 'element-plus'\nimport { SuperOverviewApi } from '@/apis'\nimport { copyRes, formatDate } from '@/utils/stringUtil'\nimport { tableToExcel } from '@/utils/networkUtil'\nimport { debounce } from '@/utils/other'\n\nconst $store = useStore()\n\nconst isMobile = computed(() => $store.getters['public/isMobile'])\n\nconst isLoadingOverview = ref(false)\nconst cardList = reactive([\n {\n type: 'user',\n title: '用户数量',\n value: '0',\n supplement: '较昨日 +0',\n icon: User,\n color: '#40c9c6'\n },\n {\n type: 'file',\n title: '记录/OSS',\n value: '0',\n supplement: '记录较昨日 +0',\n icon: Document,\n color: '#36a3f7'\n },\n {\n type: 'log',\n title: '日志数量',\n value: '0',\n supplement: '较昨日 +0',\n icon: Tickets,\n color: '#f4516c'\n },\n {\n type: 'pv',\n title: 'PV/UV',\n value: '0/0',\n supplement: '',\n icon: DataBoard,\n color: '#34bfa3'\n },\n {\n type: 'compress',\n title: '归档&无效文件',\n value: '0/0KB',\n supplement: '已失效0个',\n icon: Coin,\n color: '#e38013'\n }\n])\n// 刷新记录条数\nconst refreshCount = () => {\n isLoadingOverview.value = true\n SuperOverviewApi.getCount().then((res) => {\n const { user, file, log, pv, compress } = res.data\n cardList[0].value = `${user.sum}`\n cardList[0].supplement = `较昨日 +${user.recent}`\n cardList[1].value = `${file.server.sum}/${file.oss.sum} (${file.oss.size})`\n cardList[1].supplement = `记录较昨日 +${file.server.recent}`\n cardList[2].value = `${log.sum}`\n cardList[2].supplement = `较昨日 +${log.recent}`\n cardList[3].value = `${pv.today.sum}/${pv.today.uv}`\n cardList[3].supplement = `历史: ${pv.all.sum}/${pv.all.uv}`\n cardList[4].value = `${compress.all.sum}/${compress.all.size}`\n cardList[4].supplement = `已失效 ${compress.expired.sum}/${compress.expired.size}`\n isLoadingOverview.value = false\n })\n}\n\nconst disableDelete = ref(false)\nconst clearExpiredCompressFile = () => {\n disableDelete.value = true\n SuperOverviewApi.clearExpiredCompressFile().then(() => {\n setTimeout(() => {\n ElMessage.success('清理成功,数据同步可能有延迟')\n disableDelete.value = false\n refreshCount()\n }, 2000)\n })\n}\n\n// 日志\nconst logs: any[] = reactive([])\n\n// function getLogsTypeText(type: string) {\n// const logsTypeText: any = {\n// request: '网络请求',\n// behavior: '用户行为',\n// error: '错误',\n// pv: '页面访问',\n// }\n// return logsTypeText[type]\n// }\n// 筛选的日志\nconst filterLogType = ref('behavior')\nconst searchWord = ref('')\nconst logTypeList = reactive([\n {\n label: '用户行为',\n type: 'behavior'\n },\n {\n label: '网络请求',\n type: 'request'\n },\n {\n label: '服务端错误',\n type: 'error'\n },\n {\n label: '页面访问',\n type: 'pv'\n }\n])\n\n// 分页\n// 页大小\nconst pageSize = ref(10)\nconst handleSizeChange = (v: number) => {\n pageSize.value = v\n}\n// 总条数\nconst logSumCount = ref(0)\nconst pageCount = computed(() => {\n const t = Math.ceil(logSumCount.value / pageSize.value)\n return t\n})\nconst pageCurrent = ref(1)\nconst handlePageChange = (idx: number) => {\n pageCurrent.value = idx\n}\n\nconst refreshLogs = debounce(\n () => {\n SuperOverviewApi.getLogMsg(\n pageSize.value,\n pageCurrent.value,\n filterLogType.value,\n searchWord.value\n ).then((res) => {\n logs.splice(0, logs.length)\n logs.push(...res.data.logs)\n logSumCount.value = res.data.sum\n })\n },\n 100,\n false\n)\n\nwatchEffect(() => {\n if (filterLogType.value) {\n pageCurrent.value = 1\n }\n})\n\nwatchEffect(() => {\n if (searchWord.value !== undefined) {\n refreshLogs()\n }\n})\n\nwatchEffect(() => {\n if (filterLogType.value) {\n refreshLogs()\n }\n})\n\nwatchEffect(() => {\n if (pageCurrent.value || pageSize.value) {\n refreshLogs()\n }\n})\n\nconst showDetail = ref(false)\nconst showData = ref('')\nconst handleDetail = (id) => {\n SuperOverviewApi.getLogMsgDetail(id).then((res) => {\n showDetail.value = true\n showData.value = JSON.stringify(res.data, null, 2)\n })\n}\nconst jsonData = computed(() => {\n try {\n return JSON.parse(showData.value)\n } catch (e) {\n return {}\n }\n})\nconst handleCopyDetail = () => {\n copyRes(showData.value)\n}\n\nconst exportLogData = () => {\n if (logs.length === 0) {\n return\n }\n const headers = ['日期', 'IP', '内容']\n const body = logs.map((v) => {\n const { date, ip, msg } = v\n return [formatDate(new Date(date)), ip, msg]\n })\n tableToExcel(\n headers,\n body,\n `导出日志_${logs.length}条${formatDate(\n new Date(),\n 'yyyy年MM月日hh时mm分ss秒'\n )}.xlsx`\n )\n ElMessage.success('导出成功')\n}\nonMounted(() => {\n refreshCount()\n})\n</script>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .card-list {\n margin-top: 40px;\n }\n\n .card {\n min-width: 300px;\n }\n\n .log-filter {\n justify-content: center;\n }\n}\n\n.overview {\n margin: 0 auto;\n}\n\n.card-list {\n display: flex;\n margin-top: 20px;\n justify-content: center;\n flex-wrap: wrap;\n}\n\n.card {\n margin: 10px;\n cursor: pointer;\n font-size: 12px;\n position: relative;\n overflow: hidden;\n color: #666;\n background: #fff;\n box-shadow: 4px 4px 40px rgb(0 0 0 / 5%);\n border-color: rgba(0, 0, 0, 0.05);\n min-width: 300px;\n\n .logo {\n float: left;\n margin: 4px 10px 0 10px;\n -webkit-transition: all 0.38s ease-out;\n transition: all 0.38s ease-out;\n border-radius: 6px;\n font-size: 48px;\n\n i {\n padding: 10px;\n }\n }\n\n .content {\n float: right;\n font-weight: 700;\n margin: 10px;\n margin-left: 0;\n\n .title {\n line-height: 18px;\n color: rgba(0, 0, 0, 0.45);\n font-size: 14px;\n text-align: right;\n }\n\n .text {\n font-size: 16px;\n text-align: right;\n }\n\n .supplement {\n font-size: 12px;\n font-weight: lighter;\n text-align: right;\n }\n }\n}\n\n.panel {\n max-width: 1024px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\n.log-filter {\n display: flex;\n flex-wrap: wrap;\n\n .item {\n margin-right: 10px;\n margin-bottom: 10px;\n\n .label {\n margin-right: 10px;\n font-size: 12px;\n }\n }\n}\n</style>\n"],"names":["_sfc_main","defineComponent","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","coin","_export_sfc","document","takeawayBox","tickets","$store","useStore","isMobile","computed","isLoadingOverview","ref","cardList","reactive","User","Document","Tickets","DataBoard","Coin","refreshCount","SuperOverviewApi","res","user","file","log","pv","compress","disableDelete","clearExpiredCompressFile","ElMessage","logs","filterLogType","searchWord","logTypeList","pageSize","handleSizeChange","v","logSumCount","pageCount","pageCurrent","handlePageChange","idx","refreshLogs","debounce","watchEffect","showDetail","showData","handleDetail","id","jsonData","e","handleCopyDetail","copyRes","exportLogData","headers","body","date","ip","msg","formatDate","tableToExcel","onMounted"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
1
+ {"version":3,"file":"index-248e88e2.js","sources":["../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/coin.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/document.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/takeaway-box.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/tickets.mjs","../../src/pages/dashboard/manage/overview/index.vue"],"sourcesContent":["import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Coin\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"m161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"m161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z\"\n}, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224zm0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160z\"\n}, null, -1);\nconst _hoisted_5 = [\n _hoisted_2,\n _hoisted_3,\n _hoisted_4\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_5);\n}\nvar coin = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { coin as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Document\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar document = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { document as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"TakeawayBox\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M832 384H192v448h640V384zM96 320h832V128H96v192zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32h-64zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar takeawayBox = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { takeawayBox as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Tickets\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M192 128v768h640V128H192zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h192v64H320v-64zm0 384h384v64H320v-64z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar tickets = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { tickets as default };\n","<template>\n <div class=\"overview\">\n <div\n class=\"card-list\"\n v-loading=\"isLoadingOverview\"\n element-loading-text=\"Loading...\"\n >\n <div v-for=\"c in cardList\" :key=\"c.type\" class=\"card\">\n <div class=\"logo\">\n <el-icon :color=\"c.color\">\n <component :is=\"c.icon\"></component>\n </el-icon>\n </div>\n <div class=\"content\">\n <div class=\"title\">{{ c.title }}</div>\n <div class=\"text\">{{ c.value }}</div>\n <div class=\"supplement\">{{ c.supplement }}</div>\n </div>\n </div>\n </div>\n <div class=\"panel\">\n <div class=\"p10 log-filter\">\n <span class=\"item\">\n <span class=\"label\">类型</span>\n <el-select\n v-model=\"filterLogType\"\n size=\"default\"\n placeholder=\"请选择日志类型\"\n >\n <el-option\n v-for=\"(item, idx) in logTypeList\"\n :key=\"idx\"\n :label=\"item.label\"\n :value=\"item.type\"\n ></el-option>\n </el-select>\n </span>\n <span 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 </span>\n <span class=\"item\">\n <el-button size=\"default\" :icon=\"Refresh\" @click=\"refreshLogs\"\n >刷新</el-button\n >\n </span>\n <span class=\"item\">\n <el-button\n size=\"default\"\n type=\"primary\"\n :icon=\"DataAnalysis\"\n @click=\"exportLogData\"\n >导出日志 {{ logs.length }} 条</el-button\n >\n </span>\n <span class=\"item\">\n <el-button\n size=\"default\"\n type=\"danger\"\n :icon=\"TakeawayBox\"\n :disabled=\"disableDelete\"\n @click=\"clearExpiredCompressFile\"\n v-loading=\"disableDelete\"\n >清理无效文件</el-button\n >\n </span>\n </div>\n <el-table\n tooltip-effect=\"dark\"\n height=\"400\"\n stripe\n border\n :default-sort=\"{ prop: 'date', order: 'descending' }\"\n :data=\"logs\"\n style=\"width: 100%\"\n >\n <el-table-column sortable prop=\"date\" label=\"日期\" width=\"180\">\n <template #default=\"scope\">{{\n formatDate(new Date(scope.row.date))\n }}</template>\n </el-table-column>\n <!-- <el-table-column prop=\"type\" label=\"类型\" width=\"100\">\n <template #default=\"scope\">{{ getLogsTypeText(scope.row.type) }}</template>\n </el-table-column>-->\n <el-table-column\n sortable\n prop=\"ip\"\n label=\"IP\"\n width=\"100\"\n ></el-table-column>\n <el-table-column\n min-width=\"160\"\n prop=\"msg\"\n label=\"内容\"\n ></el-table-column>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"100\">\n <template #default=\"scope\">\n <el-button\n @click=\"handleDetail(scope.row.id)\"\n type=\"primary\"\n text\n size=\"small\"\n >查看详情</el-button\n >\n </template>\n </el-table-column>\n </el-table>\n\n <div class=\"flex fc p10\">\n <el-pagination\n :current-page=\"pageCurrent\"\n @current-change=\"handlePageChange\"\n background\n :page-count=\"pageCount\"\n :page-sizes=\"[10, 50, 100, 200, 500, 1000]\"\n :page-size=\"pageSize\"\n @size-change=\"handleSizeChange\"\n :total=\"logSumCount\"\n layout=\"total, sizes, prev, pager, next, jumper\"\n ></el-pagination>\n </div>\n </div>\n <el-dialog\n v-model=\"showDetail\"\n title=\"详细信息\"\n width=\"50%\"\n center\n :fullscreen=\"isMobile\"\n >\n <json-viewer\n :value=\"jsonData\"\n :expand-depth=\"5\"\n copyable\n boxed\n sort\n ></json-viewer>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button type=\"default\" @click=\"handleCopyDetail\">复制</el-button>\n <el-button type=\"primary\" @click=\"showDetail = false\">确定</el-button>\n </span>\n </template>\n </el-dialog>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, onMounted, reactive, ref, watchEffect } from 'vue'\nimport {\n User,\n Document,\n Tickets,\n DataBoard,\n Search,\n Refresh,\n DataAnalysis,\n Coin,\n TakeawayBox\n} from '@element-plus/icons-vue'\nimport { useStore } from 'vuex'\nimport { ElMessage } from 'element-plus'\nimport { SuperOverviewApi } from '@/apis'\nimport { copyRes, formatDate } from '@/utils/stringUtil'\nimport { tableToExcel } from '@/utils/networkUtil'\nimport { debounce } from '@/utils/other'\n\nconst $store = useStore()\n\nconst isMobile = computed(() => $store.getters['public/isMobile'])\n\nconst isLoadingOverview = ref(false)\nconst cardList = reactive([\n {\n type: 'user',\n title: '用户数量',\n value: '0',\n supplement: '较昨日 +0',\n icon: User,\n color: '#40c9c6'\n },\n {\n type: 'file',\n title: '记录/OSS',\n value: '0',\n supplement: '记录较昨日 +0',\n icon: Document,\n color: '#36a3f7'\n },\n {\n type: 'log',\n title: '日志数量',\n value: '0',\n supplement: '较昨日 +0',\n icon: Tickets,\n color: '#f4516c'\n },\n {\n type: 'pv',\n title: 'PV/UV',\n value: '0/0',\n supplement: '',\n icon: DataBoard,\n color: '#34bfa3'\n },\n {\n type: 'compress',\n title: '归档&无效文件',\n value: '0/0KB',\n supplement: '已失效0个',\n icon: Coin,\n color: '#e38013'\n }\n])\n// 刷新记录条数\nconst refreshCount = () => {\n isLoadingOverview.value = true\n SuperOverviewApi.getCount().then((res) => {\n const { user, file, log, pv, compress } = res.data\n cardList[0].value = `${user.sum}`\n cardList[0].supplement = `较昨日 +${user.recent}`\n cardList[1].value = `${file.server.sum}/${file.oss.sum} (${file.oss.size})`\n cardList[1].supplement = `记录较昨日 +${file.server.recent}`\n cardList[2].value = `${log.sum}`\n cardList[2].supplement = `较昨日 +${log.recent}`\n cardList[3].value = `${pv.today.sum}/${pv.today.uv}`\n cardList[3].supplement = `历史: ${pv.all.sum}/${pv.all.uv}`\n cardList[4].value = `${compress.all.sum}/${compress.all.size}`\n cardList[4].supplement = `已失效 ${compress.expired.sum}/${compress.expired.size}`\n isLoadingOverview.value = false\n })\n}\n\nconst disableDelete = ref(false)\nconst clearExpiredCompressFile = () => {\n disableDelete.value = true\n SuperOverviewApi.clearExpiredCompressFile().then(() => {\n setTimeout(() => {\n ElMessage.success('清理成功,数据同步可能有延迟')\n disableDelete.value = false\n refreshCount()\n }, 2000)\n })\n}\n\n// 日志\nconst logs: any[] = reactive([])\n\n// function getLogsTypeText(type: string) {\n// const logsTypeText: any = {\n// request: '网络请求',\n// behavior: '用户行为',\n// error: '错误',\n// pv: '页面访问',\n// }\n// return logsTypeText[type]\n// }\n// 筛选的日志\nconst filterLogType = ref('behavior')\nconst searchWord = ref('')\nconst logTypeList = reactive([\n {\n label: '用户行为',\n type: 'behavior'\n },\n {\n label: '网络请求',\n type: 'request'\n },\n {\n label: '服务端错误',\n type: 'error'\n },\n {\n label: '页面访问',\n type: 'pv'\n }\n])\n\n// 分页\n// 页大小\nconst pageSize = ref(10)\nconst handleSizeChange = (v: number) => {\n pageSize.value = v\n}\n// 总条数\nconst logSumCount = ref(0)\nconst pageCount = computed(() => {\n const t = Math.ceil(logSumCount.value / pageSize.value)\n return t\n})\nconst pageCurrent = ref(1)\nconst handlePageChange = (idx: number) => {\n pageCurrent.value = idx\n}\n\nconst refreshLogs = debounce(\n () => {\n SuperOverviewApi.getLogMsg(\n pageSize.value,\n pageCurrent.value,\n filterLogType.value,\n searchWord.value\n ).then((res) => {\n logs.splice(0, logs.length)\n logs.push(...res.data.logs)\n logSumCount.value = res.data.sum\n })\n },\n 100,\n false\n)\n\nwatchEffect(() => {\n if (filterLogType.value) {\n pageCurrent.value = 1\n }\n})\n\nwatchEffect(() => {\n if (searchWord.value !== undefined) {\n refreshLogs()\n }\n})\n\nwatchEffect(() => {\n if (filterLogType.value) {\n refreshLogs()\n }\n})\n\nwatchEffect(() => {\n if (pageCurrent.value || pageSize.value) {\n refreshLogs()\n }\n})\n\nconst showDetail = ref(false)\nconst showData = ref('')\nconst handleDetail = (id) => {\n SuperOverviewApi.getLogMsgDetail(id).then((res) => {\n showDetail.value = true\n showData.value = JSON.stringify(res.data, null, 2)\n })\n}\nconst jsonData = computed(() => {\n try {\n return JSON.parse(showData.value)\n } catch (e) {\n return {}\n }\n})\nconst handleCopyDetail = () => {\n copyRes(showData.value)\n}\n\nconst exportLogData = () => {\n if (logs.length === 0) {\n return\n }\n const headers = ['日期', 'IP', '内容']\n const body = logs.map((v) => {\n const { date, ip, msg } = v\n return [formatDate(new Date(date)), ip, msg]\n })\n tableToExcel(\n headers,\n body,\n `导出日志_${logs.length}条${formatDate(\n new Date(),\n 'yyyy年MM月日hh时mm分ss秒'\n )}.xlsx`\n )\n ElMessage.success('导出成功')\n}\nonMounted(() => {\n refreshCount()\n})\n</script>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .card-list {\n margin-top: 40px;\n }\n\n .card {\n min-width: 300px;\n }\n\n .log-filter {\n justify-content: center;\n }\n}\n\n.overview {\n margin: 0 auto;\n}\n\n.card-list {\n display: flex;\n margin-top: 20px;\n justify-content: center;\n flex-wrap: wrap;\n}\n\n.card {\n margin: 10px;\n cursor: pointer;\n font-size: 12px;\n position: relative;\n overflow: hidden;\n color: #666;\n background: #fff;\n box-shadow: 4px 4px 40px rgb(0 0 0 / 5%);\n border-color: rgba(0, 0, 0, 0.05);\n min-width: 300px;\n\n .logo {\n float: left;\n margin: 4px 10px 0 10px;\n -webkit-transition: all 0.38s ease-out;\n transition: all 0.38s ease-out;\n border-radius: 6px;\n font-size: 48px;\n\n i {\n padding: 10px;\n }\n }\n\n .content {\n float: right;\n font-weight: 700;\n margin: 10px;\n margin-left: 0;\n\n .title {\n line-height: 18px;\n color: rgba(0, 0, 0, 0.45);\n font-size: 14px;\n text-align: right;\n }\n\n .text {\n font-size: 16px;\n text-align: right;\n }\n\n .supplement {\n font-size: 12px;\n font-weight: lighter;\n text-align: right;\n }\n }\n}\n\n.panel {\n max-width: 1024px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\n.log-filter {\n display: flex;\n flex-wrap: wrap;\n\n .item {\n margin-right: 10px;\n margin-bottom: 10px;\n\n .label {\n margin-right: 10px;\n font-size: 12px;\n }\n }\n}\n</style>\n"],"names":["_sfc_main","defineComponent","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","coin","_export_sfc","document","takeawayBox","tickets","$store","useStore","isMobile","computed","isLoadingOverview","ref","cardList","reactive","User","Document","Tickets","DataBoard","Coin","refreshCount","SuperOverviewApi","res","user","file","log","pv","compress","disableDelete","clearExpiredCompressFile","ElMessage","logs","filterLogType","searchWord","logTypeList","pageSize","handleSizeChange","v","logSumCount","pageCount","pageCurrent","handlePageChange","idx","refreshLogs","debounce","watchEffect","showDetail","showData","handleDetail","id","jsonData","e","handleCopyDetail","copyRes","exportLogData","headers","body","date","ip","msg","formatDate","tableToExcel","onMounted"],"mappings":"mzBAGA,MAAMA,GAAYC,EAAgB,CAChC,KAAM,MACR,CAAC,EACKC,GAAa,CACjB,QAAS,gBACT,MAAO,4BACT,EACMC,GAA6BC,EAAmB,OAAQ,CAC5D,KAAM,eACN,EAAG,4RACL,EAAG,KAAM,EAAE,EACLC,GAA6BD,EAAmB,OAAQ,CAC5D,KAAM,eACN,EAAG,2RACL,EAAG,KAAM,EAAE,EACLE,GAA6BF,EAAmB,OAAQ,CAC5D,KAAM,eACN,EAAG,iMACL,EAAG,KAAM,EAAE,EACLG,GAAa,CACjBJ,GACAE,GACAC,EACF,EACA,SAASE,GAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,OAAOC,EAAW,EAAEC,EAAmB,MAAOd,GAAYK,EAAU,CACtE,CACA,IAAIU,GAAuBC,EAAYlB,GAAW,CAAC,CAAC,SAAUQ,EAAW,CAAC,CAAC,EC3B3E,MAAMR,GAAYC,EAAgB,CAChC,KAAM,UACR,CAAC,EACKC,GAAa,CACjB,QAAS,gBACT,MAAO,4BACT,EACMC,GAA6BC,EAAmB,OAAQ,CAC5D,KAAM,eACN,EAAG,gOACL,EAAG,KAAM,EAAE,EACLC,GAAa,CACjBF,EACF,EACA,SAASK,GAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,OAAOC,EAAW,EAAEC,EAAmB,MAAOd,GAAYG,EAAU,CACtE,CACA,IAAIc,GAA2BD,EAAYlB,GAAW,CAAC,CAAC,SAAUQ,EAAW,CAAC,CAAC,ECjB/E,MAAMR,GAAYC,EAAgB,CAChC,KAAM,aACR,CAAC,EACKC,GAAa,CACjB,QAAS,gBACT,MAAO,4BACT,EACMC,GAA6BC,EAAmB,OAAQ,CAC5D,KAAM,eACN,EAAG,uPACL,EAAG,KAAM,EAAE,EACLC,GAAa,CACjBF,EACF,EACA,SAASK,GAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,OAAOC,EAAW,EAAEC,EAAmB,MAAOd,GAAYG,EAAU,CACtE,CACA,IAAIe,GAA8BF,EAAYlB,GAAW,CAAC,CAAC,SAAUQ,EAAW,CAAC,CAAC,ECjBlF,MAAMR,GAAYC,EAAgB,CAChC,KAAM,SACR,CAAC,EACKC,GAAa,CACjB,QAAS,gBACT,MAAO,4BACT,EACMC,GAA6BC,EAAmB,OAAQ,CAC5D,KAAM,eACN,EAAG,8LACL,EAAG,KAAM,EAAE,EACLC,GAAa,CACjBF,EACF,EACA,SAASK,GAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,OAAOC,EAAW,EAAEC,EAAmB,MAAOd,GAAYG,EAAU,CACtE,CACA,IAAIgB,GAA0BH,EAAYlB,GAAW,CAAC,CAAC,SAAUQ,EAAW,CAAC,CAAC,gfCuJ9E,MAAAc,EAAAC,KAEAC,EAAAC,EAAA,IAAAH,EAAA,QAAA,iBAAA,CAAA,EAEAI,EAAAC,EAAA,EAAA,EACAC,EAAAC,EAAA,CAA0B,CACxB,KAAA,OACQ,MAAA,OACC,MAAA,IACA,WAAA,SACK,KAAAC,GACN,MAAA,SACC,EACT,CACA,KAAA,OACQ,MAAA,SACC,MAAA,IACA,WAAA,WACK,KAAAC,GACN,MAAA,SACC,EACT,CACA,KAAA,MACQ,MAAA,OACC,MAAA,IACA,WAAA,SACK,KAAAC,GACN,MAAA,SACC,EACT,CACA,KAAA,KACQ,MAAA,QACC,MAAA,MACA,WAAA,GACK,KAAAC,GACN,MAAA,SACC,EACT,CACA,KAAA,WACQ,MAAA,UACC,MAAA,QACA,WAAA,QACK,KAAAC,GACN,MAAA,SACC,CACT,CAAA,EAGFC,EAAA,IAAA,CACET,EAAA,MAAA,GACAU,EAAA,SAAA,EAAA,KAAAC,GAAA,CACE,KAAA,CAAA,KAAAC,EAAA,KAAAC,EAAA,IAAAC,EAAA,GAAAC,EAAA,SAAAC,CAAA,EAAAL,EAAA,KACAT,EAAA,CAAA,EAAA,MAAA,GAAA,OAAAU,EAAA,KACAV,EAAA,CAAA,EAAA,WAAA,QAAA,OAAAU,EAAA,QACAV,EAAA,CAAA,EAAA,MAAA,GAAA,OAAAW,EAAA,OAAA,IAAA,KAAA,OAAAA,EAAA,IAAA,IAAA,MAAA,OAAAA,EAAA,IAAA,KAAA,KACAX,EAAA,CAAA,EAAA,WAAA,UAAA,OAAAW,EAAA,OAAA,QACAX,EAAA,CAAA,EAAA,MAAA,GAAA,OAAAY,EAAA,KACAZ,EAAA,CAAA,EAAA,WAAA,QAAA,OAAAY,EAAA,QACAZ,EAAA,CAAA,EAAA,MAAA,GAAA,OAAAa,EAAA,MAAA,IAAA,KAAA,OAAAA,EAAA,MAAA,IACAb,EAAA,CAAA,EAAA,WAAA,OAAA,OAAAa,EAAA,IAAA,IAAA,KAAA,OAAAA,EAAA,IAAA,IACAb,EAAA,CAAA,EAAA,MAAA,GAAA,OAAAc,EAAA,IAAA,IAAA,KAAA,OAAAA,EAAA,IAAA,MACAd,EAAA,CAAA,EAAA,WAAA,OAAA,OAAAc,EAAA,QAAA,IAAA,KAAA,OAAAA,EAAA,QAAA,MACAhB,EAAA,MAAA,EAA0B,CAAA,CAC3B,EAGHiB,EAAAhB,EAAA,EAAA,EACAiB,EAAA,IAAA,CACED,EAAA,MAAA,GACAP,EAAA,2BAAA,KAAA,IAAA,CACE,WAAA,IAAA,CACES,EAAA,QAAA,gBAAA,EACAF,EAAA,MAAA,GACAR,GAAa,EAAA,GAAA,CACR,CAAA,CACR,EAIHW,EAAAjB,EAAA,CAAA,CAAA,EAYAkB,EAAApB,EAAA,UAAA,EACAqB,EAAArB,EAAA,EAAA,EACAsB,EAAApB,EAAA,CAA6B,CAC3B,MAAA,OACS,KAAA,UACD,EACR,CACA,MAAA,OACS,KAAA,SACD,EACR,CACA,MAAA,QACS,KAAA,OACD,EACR,CACA,MAAA,OACS,KAAA,IACD,CACR,CAAA,EAKFqB,EAAAvB,EAAA,EAAA,EACAwB,EAAAC,GAAA,CACEF,EAAA,MAAAE,CAAiB,EAGnBC,EAAA1B,EAAA,CAAA,EACA2B,EAAA7B,EAAA,IACE,KAAA,KAAA4B,EAAA,MAAAH,EAAA,KAAA,CACO,EAETK,EAAA5B,EAAA,CAAA,EACA6B,EAAAC,GAAA,CACEF,EAAA,MAAAE,CAAoB,EAGtBC,EAAAC,GAAoB,IAAA,CAEhBvB,EAAA,UAAiBc,EAAA,MACNK,EAAA,MACGR,EAAA,MACEC,EAAA,KACH,EAAA,KAAAX,GAAA,CAEXS,EAAA,OAAA,EAAAA,EAAA,MAAA,EACAA,EAAA,KAAA,GAAAT,EAAA,KAAA,IAAA,EACAgB,EAAA,MAAAhB,EAAA,KAAA,GAA6B,CAAA,CAC9B,EACH,IACA,EACA,EAGFuB,EAAA,IAAA,CACEb,EAAA,QACEQ,EAAA,MAAA,EACF,CAAA,EAGFK,EAAA,IAAA,CACEZ,EAAA,QAAA,QACEU,GACF,CAAA,EAGFE,EAAA,IAAA,CACEb,EAAA,OACEW,GACF,CAAA,EAGFE,EAAA,IAAA,EACEL,EAAA,OAAAL,EAAA,QACEQ,GACF,CAAA,EAGF,MAAAG,EAAAlC,EAAA,EAAA,EACAmC,EAAAnC,EAAA,EAAA,EACAoC,EAAAC,GAAA,CACE5B,EAAA,gBAAA4B,CAAA,EAAA,KAAA3B,GAAA,CACEwB,EAAA,MAAA,GACAC,EAAA,MAAA,KAAA,UAAAzB,EAAA,KAAA,KAAA,CAAA,CAAiD,CAAA,CAClD,EAEH4B,GAAAxC,EAAA,IAAA,CACE,GAAA,CACE,OAAA,KAAA,MAAAqC,EAAA,KAAA,CAAgC,OAAAI,EAAA,CAEhC,MAAA,EAAQ,CACV,CAAA,EAEFC,GAAA,IAAA,CACEC,GAAAN,EAAA,KAAA,CAAsB,EAGxBO,GAAA,IAAA,CACE,GAAAvB,EAAA,SAAA,EACE,OAEF,MAAAwB,EAAA,CAAA,KAAA,KAAA,IAAA,EACAC,EAAAzB,EAAA,IAAAM,GAAA,CACE,KAAA,CAAA,KAAAoB,EAAA,GAAAC,EAAA,IAAAC,CAAA,EAAAtB,EACA,MAAA,CAAAuB,EAAA,IAAA,KAAAH,CAAA,CAAA,EAAAC,EAAAC,CAAA,CAA2C,CAAA,EAE7CE,GAAAN,EACEC,EACA,QAAA,OAAAzB,EAAA,OAAA,KAAA,OAAA6B,EACuB,IAAA,KACZ,oBACT,EAAA,QACD,EAEH9B,EAAA,QAAA,MAAA,CAAwB,EAE1B,OAAAgC,GAAA,IAAA,CACE1C,GAAa,CAAA","x_google_ignoreList":[0,1,2,3]}
@@ -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-d98be3e4.js";import{E as be}from"./el-dialog-5b7bce58.js";import{d as H,E as we,a as $e,b as ye,c as Ce}from"./el-dropdown-item-e0275106.js";import{E as ke,a as xe}from"./el-tab-pane-89bdd69b.js";import{E as Ee}from"./index-c13133c5.js";import"./index-eda7d85a.js";import"./aria-bc8e8b0f.js";import"./validator-d4ea1237.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-39637d43.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-8eff6b5a.js","sources":["../../node_modules/.pnpm/element-plus@2.2.13_vue@3.3.4/node_modules/element-plus/es/components/popover/src/popover.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.3.4/node_modules/element-plus/es/components/popover/src/popover2.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.3.4/node_modules/element-plus/es/components/popover/src/directive.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.3.4/node_modules/element-plus/es/components/popover/index.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/bell.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/close.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/expand.mjs","../../src/components/MessageList/index.vue","../../src/components/MessagePanel/index.vue","../../src/pages/dashboard/index.vue"],"sourcesContent":["import '../../../utils/index.mjs';\nimport '../../tooltip/index.mjs';\nimport '../../dropdown/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useTooltipTriggerProps, useTooltipContentProps } from '../../tooltip/src/tooltip.mjs';\nimport { dropdownProps } from '../../dropdown/src/dropdown.mjs';\nimport { isBoolean } from '@vueuse/core';\n\nconst popoverProps = buildProps({\n trigger: useTooltipTriggerProps.trigger,\n placement: dropdownProps.placement,\n disabled: useTooltipTriggerProps.disabled,\n visible: useTooltipContentProps.visible,\n transition: useTooltipContentProps.transition,\n popperOptions: dropdownProps.popperOptions,\n tabindex: dropdownProps.tabindex,\n content: useTooltipContentProps.content,\n popperStyle: useTooltipContentProps.popperStyle,\n popperClass: useTooltipContentProps.popperClass,\n enterable: {\n ...useTooltipContentProps.enterable,\n default: true\n },\n effect: {\n ...useTooltipContentProps.effect,\n default: \"light\"\n },\n teleported: useTooltipContentProps.teleported,\n title: String,\n width: {\n type: [String, Number],\n default: 150\n },\n offset: {\n type: Number,\n default: void 0\n },\n showAfter: {\n type: Number,\n default: 0\n },\n hideAfter: {\n type: Number,\n default: 200\n },\n autoClose: {\n type: Number,\n default: 0\n },\n showArrow: {\n type: Boolean,\n default: true\n },\n persistent: {\n type: Boolean,\n default: true\n },\n \"onUpdate:visible\": {\n type: Function\n }\n});\nconst popoverEmits = {\n \"update:visible\": (value) => isBoolean(value),\n \"before-enter\": () => true,\n \"before-leave\": () => true,\n \"after-enter\": () => true,\n \"after-leave\": () => true\n};\n\nexport { popoverEmits, popoverProps };\n//# sourceMappingURL=popover.mjs.map\n","import { defineComponent, computed, ref, unref, openBlock, createBlock, mergeProps, withCtx, createElementBlock, normalizeClass, toDisplayString, createCommentVNode, renderSlot, createTextVNode } from 'vue';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { popoverProps, popoverEmits } from './popover.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\n\nconst __default__ = {\n name: \"ElPopover\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: popoverProps,\n emits: popoverEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const updateEventKeyRaw = `onUpdate:visible`;\n const onUpdateVisible = computed(() => {\n return props[updateEventKeyRaw];\n });\n const ns = useNamespace(\"popover\");\n const tooltipRef = ref();\n const popperRef = computed(() => {\n var _a;\n return (_a = unref(tooltipRef)) == null ? void 0 : _a.popperRef;\n });\n const style = computed(() => {\n return [\n {\n width: addUnit(props.width)\n },\n props.popperStyle\n ];\n });\n const kls = computed(() => {\n return [ns.b(), props.popperClass, { [ns.m(\"plain\")]: !!props.content }];\n });\n const gpuAcceleration = computed(() => {\n return props.transition === \"el-fade-in-linear\";\n });\n const hide = () => {\n var _a;\n (_a = tooltipRef.value) == null ? void 0 : _a.hide();\n };\n const beforeEnter = () => {\n emit(\"before-enter\");\n };\n const beforeLeave = () => {\n emit(\"before-leave\");\n };\n const afterEnter = () => {\n emit(\"after-enter\");\n };\n const afterLeave = () => {\n emit(\"update:visible\", false);\n emit(\"after-leave\");\n };\n expose({\n popperRef,\n hide\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTooltip), mergeProps({\n ref_key: \"tooltipRef\",\n ref: tooltipRef\n }, _ctx.$attrs, {\n trigger: _ctx.trigger,\n placement: _ctx.placement,\n disabled: _ctx.disabled,\n visible: _ctx.visible,\n transition: _ctx.transition,\n \"popper-options\": _ctx.popperOptions,\n tabindex: _ctx.tabindex,\n content: _ctx.content,\n offset: _ctx.offset,\n \"show-after\": _ctx.showAfter,\n \"hide-after\": _ctx.hideAfter,\n \"auto-close\": _ctx.autoClose,\n \"show-arrow\": _ctx.showArrow,\n \"aria-label\": _ctx.title,\n effect: _ctx.effect,\n enterable: _ctx.enterable,\n \"popper-class\": unref(kls),\n \"popper-style\": unref(style),\n teleported: _ctx.teleported,\n persistent: _ctx.persistent,\n \"gpu-acceleration\": unref(gpuAcceleration),\n \"onUpdate:visible\": unref(onUpdateVisible),\n onBeforeShow: beforeEnter,\n onBeforeHide: beforeLeave,\n onShow: afterEnter,\n onHide: afterLeave\n }), {\n content: withCtx(() => [\n _ctx.title ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"title\")),\n role: \"title\"\n }, toDisplayString(_ctx.title), 3)) : createCommentVNode(\"v-if\", true),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(_ctx.content), 1)\n ])\n ]),\n default: withCtx(() => [\n _ctx.$slots.reference ? renderSlot(_ctx.$slots, \"reference\", { key: 0 }) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 16, [\"trigger\", \"placement\", \"disabled\", \"visible\", \"transition\", \"popper-options\", \"tabindex\", \"content\", \"offset\", \"show-after\", \"hide-after\", \"auto-close\", \"show-arrow\", \"aria-label\", \"effect\", \"enterable\", \"popper-class\", \"popper-style\", \"teleported\", \"persistent\", \"gpu-acceleration\", \"onUpdate:visible\"]);\n };\n }\n});\nvar Popover = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"/home/runner/work/element-plus/element-plus/packages/components/popover/src/popover.vue\"]]);\n\nexport { Popover as default };\n//# sourceMappingURL=popover2.mjs.map\n","const attachEvents = (el, binding) => {\n const popperComponent = binding.arg || binding.value;\n const popover = popperComponent == null ? void 0 : popperComponent.popperRef;\n if (popover) {\n popover.triggerRef = el;\n }\n};\nvar PopoverDirective = {\n mounted(el, binding) {\n attachEvents(el, binding);\n },\n updated(el, binding) {\n attachEvents(el, binding);\n }\n};\nconst VPopover = \"popover\";\n\nexport { VPopover, PopoverDirective as default };\n//# sourceMappingURL=directive.mjs.map\n","import '../../utils/index.mjs';\nimport Popover from './src/popover2.mjs';\nimport PopoverDirective, { VPopover } from './src/directive.mjs';\nexport { popoverEmits, popoverProps } from './src/popover.mjs';\nimport { withInstallDirective, withInstall } from '../../utils/vue/install.mjs';\n\nconst ElPopoverDirective = withInstallDirective(PopoverDirective, VPopover);\nconst ElPopover = withInstall(Popover, {\n directive: ElPopoverDirective\n});\n\nexport { ElPopover, ElPopoverDirective, ElPopover as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Bell\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M256 768h512V448a256 256 0 1 0-512 0v320zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320z\"\n}, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm352 128h128a64 64 0 0 1-128 0z\"\n}, null, -1);\nconst _hoisted_5 = [\n _hoisted_2,\n _hoisted_3,\n _hoisted_4\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_5);\n}\nvar bell = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { bell as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Close\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar close = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { close as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Expand\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352 192 160-192 128V352z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar expand = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { expand as default };\n","<script lang=\"ts\" setup>\nimport { ref, reactive, onMounted, watch, computed } from 'vue'\nimport { useStore } from 'vuex'\nimport { formatDate } from '@/utils/stringUtil'\nimport { SuperUserApi } from '@/apis'\n\nconst props = defineProps<{\n data: SuperUserApiTypes.MessageItem[]\n autoShow?: boolean\n}>()\n\nconst dialogMessage = reactive({\n show: false,\n title: '系统消息',\n text: '内容'\n})\nconst activeMessage = ref<SuperUserApiTypes.MessageItem>(null)\nconst handleViewDialogMessage = (v: SuperUserApiTypes.MessageItem) => {\n activeMessage.value = v\n dialogMessage.text = v.text\n // TODO: 魔法数字问题\n // TODO:支持更多的消息类型\n dialogMessage.title = v.type === 0 ? '【系统消息】' : '【私信】'\n dialogMessage.show = true\n}\n\nconst readMessage = () => {\n if (activeMessage.value.read) {\n dialogMessage.show = false\n return\n }\n SuperUserApi.readMessage(activeMessage.value.id).then(() => {\n activeMessage.value.read = true\n dialogMessage.show = false\n })\n}\n\nwatch(\n () => props.data.length,\n () => {\n if (!props.autoShow) {\n return\n }\n const showItem = props.data.find((v) => !v.read)\n if (showItem) {\n handleViewDialogMessage(showItem)\n }\n }\n)\n\n// TODO:换成自定义hook\nconst $store = useStore()\nconst isMobile = computed(() => $store.getters['public/isMobile'])\n</script>\n<template>\n <div v-if=\"!data.length\" class=\"empty\">暂无更多消息 ღ( ´・ᴗ・` )比心</div>\n <ul class=\"message-list\">\n <li\n v-for=\"d in data\"\n :key=\"d.id\"\n :class=\"{\n read: d.read\n }\"\n @click=\"handleViewDialogMessage(d)\"\n >\n <p class=\"text\">{{ d.text }}</p>\n <p class=\"date\">{{ formatDate(new Date(d.date)) }}</p>\n </li>\n </ul>\n <el-dialog\n center\n show-close\n append-to-body\n v-model=\"dialogMessage.show\"\n :close-on-click-modal=\"false\"\n :title=\"dialogMessage.title\"\n width=\"30%\"\n :fullscreen=\"isMobile\"\n >\n <div class=\"message-text\" v-html=\"dialogMessage.text\"></div>\n <template #footer>\n <p class=\"dialog-date\">\n 时间:{{ formatDate(new Date(activeMessage.date)) }}\n </p>\n <span>\n <el-button\n type=\"default\"\n @click=\"\n () => {\n dialogMessage.show = false\n }\n \"\n >\n 下次提醒\n </el-button>\n <el-button type=\"primary\" @click=\"readMessage\"> 确定 </el-button>\n </span>\n </template>\n </el-dialog>\n</template>\n\n<style lang=\"scss\" scoped>\n.message-list {\n list-style: none;\n max-height: 500px;\n overflow-y: scroll;\n li {\n border-bottom: 1px solid #ddd;\n padding: 10px;\n cursor: pointer;\n &.read {\n opacity: 0.5;\n &:hover {\n opacity: 0.9;\n }\n }\n &:last-child {\n border-bottom: none;\n }\n\n p.text {\n font-size: 16px;\n display: -webkit-box;\n overflow: hidden;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n p.date {\n font-size: 14px;\n margin-top: 4px;\n }\n }\n}\n.empty {\n text-align: center;\n padding: 10px;\n}\n\n.dialog-date {\n font-size: 14px;\n text-align: right;\n padding: 10px;\n color: grey;\n}\n</style>\n<style lang=\"scss\">\n.message-text {\n overflow-y: scroll;\n max-height: 500px;\n ul,\n ol {\n list-style: none;\n }\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { Bell } from '@element-plus/icons-vue'\nimport { computed, reactive, onMounted, ref } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SuperUserApi } from '@/apis'\nimport MessageList from '@/components/MessageList/index.vue'\n\nconst activeTab = ref<'all' | 'no'>('all')\nconst messageData = reactive<SuperUserApiTypes.MessageItem[]>([])\n\nconst noReadMessage = computed(() => messageData.filter((v) => !v.read))\nconst route = useRoute()\nonMounted(() => {\n if (route.name !== 'config') {\n SuperUserApi.getMessageList().then((v) => {\n messageData.push(...v.data)\n })\n }\n})\n</script>\n<template>\n <div class=\"message-panel\">\n <el-popover placement=\"bottom-end\" :width=\"375\" trigger=\"hover\">\n <template #reference>\n <el-badge :value=\"noReadMessage.length || ''\" :max=\"99\">\n <el-button :icon=\"Bell\" circle />\n </el-badge>\n </template>\n <div>\n <el-tabs v-model=\"activeTab\">\n <el-tab-pane :label=\"`未读 ${noReadMessage.length || ''}`\" name=\"no\">\n <message-list auto-show :data=\"noReadMessage\" />\n </el-tab-pane>\n <el-tab-pane :label=\"`全部 ${messageData.length || ''}`\" name=\"all\">\n <message-list :data=\"messageData\" />\n </el-tab-pane>\n </el-tabs>\n </div>\n </el-popover>\n </div>\n</template>\n<style lang=\"scss\" scoped>\n.message-panel {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"dashboard\">\n <div class=\"pc-nav\">\n <div class=\"nav\">\n <!-- LOGO -->\n <div class=\"logo\">\n <router-link to=\"/\">\n <img\n src=\"https://img.cdn.sugarat.top/easypicker/EasyPicker.png\"\n alt=\"logo\"\n />\n </router-link>\n </div>\n <input v-if=\"isMobile\" type=\"checkbox\" id=\"navActive\" />\n <nav>\n <label v-if=\"isMobile\" for=\"navActive\" class=\"nav-item\">\n <span>Hello💐,</span>\n {{ userName }}\n </label>\n <label\n for=\"navActive\"\n class=\"nav-item\"\n v-for=\"(n, idx) in navList\"\n :key=\"idx\"\n :class=\"{\n active: navActiveIdx === idx\n }\"\n @click=\"handleNav(idx)\"\n >{{ n.title }}</label\n >\n <label\n @click=\"handleLogout\"\n v-if=\"isMobile\"\n for=\"navActive\"\n class=\"nav-item\"\n >\n <span style=\"margin-right: 6px\">退出</span>\n <el-icon size=\"16\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-v-53d86618\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.6667 2.55473C13.0212 3.58347 14.6667 5.93291 14.6667 8.66667C14.6667 12.3486 11.6819 15.3333 8 15.3333C4.3181 15.3333 1.33333 12.3486 1.33333 8.66667C1.33333 5.93291 2.97879 3.58347 5.33333 2.55473V4.04684C3.7392 4.969 2.66667 6.69259 2.66667 8.66667C2.66667 11.6122 5.05448 14 8 14C10.9455 14 13.3333 11.6122 13.3333 8.66667C13.3333 6.69259 12.2608 4.969 10.6667 4.04684V2.55473ZM7.33333 8.66667V1.33333C7.33333 1.14924 7.48257 1 7.66667 1H8.33333C8.51743 1 8.66667 1.14924 8.66667 1.33333V8.66667C8.66667 8.85076 8.51743 9 8.33333 9H7.66667C7.48257 9 7.33333 8.85076 7.33333 8.66667Z\"\n fill=\"#86909C\"\n data-v-53d86618\n />\n </svg>\n </el-icon>\n </label>\n </nav>\n <div class=\"mask\"></div>\n </div>\n <!-- 移动端展示 -->\n <span id=\"navMenu\">\n <message-panel v-if=\"isMobile\" class=\"mobile-message-bell\" />\n <label for=\"navActive\">\n <el-icon size=\"32\">\n <Expand />\n </el-icon>\n </label>\n </span>\n <div class=\"flex fac\" v-if=\"!isMobile\">\n <message-panel />\n <span>Hello 💐,</span>\n <el-dropdown class=\"exit\">\n <span class=\"exit-info\">\n <span class=\"ellipsis\">{{ userName }}</span>\n <el-icon>\n <ArrowDown />\n </el-icon>\n </span>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item @click=\"handleLogout\" :icon=\"Close\"\n >退出</el-dropdown-item\n >\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n </div>\n <router-view></router-view>\n <div>\n <home-footer type=\"dashboard\"></home-footer>\n </div>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { Expand, Close, ArrowDown, Bell } from '@element-plus/icons-vue'\nimport HomeFooter from '@components/HomeFooter/index.vue'\n\nimport { onMounted, reactive, ref, computed, watch } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useStore } from 'vuex'\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport MessagePanel from '@/components/MessagePanel/index.vue'\nimport { UserApi } from '@/apis'\n\nconst $router = useRouter()\nconst $store = useStore()\nconst $route = useRoute()\nconst isMobile = computed(() => $store.getters['public/isMobile'])\nconst navList = reactive<\n { title: string; path: string; isExternal?: boolean }[]\n>([\n {\n title: '文件管理',\n path: '/dashboard/files'\n },\n {\n title: '任务管理',\n path: '/dashboard/tasks'\n }\n])\nconst navActiveIdx = ref(0)\nconst handleNav = (idx: number) => {\n const n = navList[idx]\n if (!n.isExternal && idx !== navActiveIdx.value) {\n $router.push({\n path: n.path\n })\n }\n if (n.isExternal) {\n window.open(n.path, '_blank')\n }\n}\n\n// 自动切换激活的标题栏\nwatch(\n () => $route.path,\n (path: string) => {\n const idx = navList.findIndex((n) => path.startsWith(n.path))\n if (idx !== -1) {\n navActiveIdx.value = idx\n }\n }\n)\n\nconst handleLogout = () => {\n ElMessageBox.confirm('确认退出登录?', '登出提示', {\n draggable: true\n })\n .then(() => {\n // 登出接口\n UserApi.logout().finally(() => {\n $store.commit('user/setToken', null)\n $router.replace({\n name: 'home'\n })\n })\n })\n .catch(() => {\n ElMessage.info('取消')\n })\n}\nconst userName = ref('World')\n\nconst refreshActiveTab = () => {\n // 动态修改active的项\n navActiveIdx.value = navList.findIndex((v) => $route.path.startsWith(v.path))\n}\nonMounted(() => {\n // 动态添加管理页面入口\n UserApi.checkPower().then((r) => {\n const isSuperAdmin = r.data?.power\n userName.value = r.data?.name\n $store.commit('user/setSuperAdmin', isSuperAdmin)\n if (isSuperAdmin) {\n const superNavList = [\n {\n title: '应用管理',\n path: '/dashboard/manage'\n },\n {\n title: '网站监控',\n path: 'https://www.frontjs.com/app/87c1ef7667a513f313b4abb22a88dc78',\n isExternal: true\n }\n ]\n navList.push(...superNavList)\n }\n const isSystem = r.data?.system\n if (isSystem) {\n navList.splice(0, navList.length)\n navList.push({\n title: '系统管理',\n path: '/dashboard/config'\n })\n }\n refreshActiveTab()\n })\n})\n</script>\n<style scoped lang=\"scss\">\n.dashboard {\n background-color: #fafafa;\n}\n.pc-nav {\n background-color: #fff;\n display: flex;\n padding: 10px;\n justify-content: space-between;\n align-items: center;\n .exit {\n cursor: pointer;\n display: flex;\n align-items: center;\n .exit-info {\n display: flex;\n justify-content: center;\n align-items: center;\n > span {\n margin-right: 5px;\n display: block;\n max-width: 70px;\n }\n }\n }\n .nav {\n display: flex;\n nav {\n display: flex;\n align-items: center;\n .nav-item {\n font-size: 1rem;\n color: #595959;\n padding: 10px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n &.active {\n color: #409eff !important;\n font-weight: 600;\n }\n }\n }\n .exit {\n color: #595959;\n }\n }\n .logo {\n width: 180px;\n margin: 0 10px;\n img {\n height: 40px;\n }\n }\n}\n#navActive {\n display: none;\n opacity: 0;\n}\n#navMenu {\n display: none;\n}\n.mobile-message-bell {\n display: none;\n position: fixed;\n right: 0;\n top: 0;\n}\n@media screen and (max-width: 700px) {\n #navActive {\n display: block;\n position: fixed;\n left: 0;\n top: 0;\n }\n .mobile-message-bell {\n display: block;\n }\n #navMenu {\n cursor: pointer;\n display: block;\n position: absolute;\n left: 10px;\n top: 5px;\n font-size: 2rem;\n }\n .pc-nav {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n z-index: 6;\n .nav {\n flex-wrap: wrap;\n width: 100%;\n .logo {\n width: 100%;\n text-align: center;\n }\n }\n #navActive {\n & + nav {\n display: none;\n }\n }\n #navActive:checked {\n & + nav {\n display: flex;\n flex-direction: column;\n width: 100%;\n position: absolute;\n z-index: 1;\n background: #fff;\n left: 0;\n top: 50px;\n + .mask {\n display: block;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 50px;\n background-color: rgba(0, 0, 0, 0.5);\n }\n }\n }\n .exit {\n position: absolute;\n right: 10px;\n top: 20px;\n }\n }\n}\n</style>\n"],"names":["popoverProps","buildProps","useTooltipTriggerProps","dropdownProps","useTooltipContentProps","popoverEmits","value","isBoolean","__default__","_sfc_main","defineComponent","__props","expose","emit","props","updateEventKeyRaw","onUpdateVisible","computed","ns","useNamespace","tooltipRef","ref","popperRef","_a","unref","style","addUnit","kls","gpuAcceleration","hide","beforeEnter","beforeLeave","afterEnter","afterLeave","_ctx","_cache","openBlock","createBlock","ElTooltip","mergeProps","withCtx","createElementBlock","normalizeClass","toDisplayString","createCommentVNode","renderSlot","createTextVNode","Popover","_export_sfc","attachEvents","el","binding","popperComponent","popover","PopoverDirective","VPopover","ElPopoverDirective","withInstallDirective","ElPopover","withInstall","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_render","$props","$setup","$data","$options","bell","close","expand","dialogMessage","reactive","activeMessage","handleViewDialogMessage","v","readMessage","SuperUserApi","watch","showItem","$store","useStore","isMobile","activeTab","messageData","noReadMessage","route","useRoute","onMounted","$router","useRouter","$route","navList","navActiveIdx","handleNav","idx","n","path","handleLogout","ElMessageBox","UserApi","ElMessage","userName","refreshActiveTab","r","isSuperAdmin","_b","superNavList","_c"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
1
+ {"version":3,"file":"index-39637d43.js","sources":["../../node_modules/.pnpm/element-plus@2.2.13_vue@3.3.4/node_modules/element-plus/es/components/popover/src/popover.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.3.4/node_modules/element-plus/es/components/popover/src/popover2.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.3.4/node_modules/element-plus/es/components/popover/src/directive.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.3.4/node_modules/element-plus/es/components/popover/index.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/bell.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/close.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/expand.mjs","../../src/components/MessageList/index.vue","../../src/components/MessagePanel/index.vue","../../src/pages/dashboard/index.vue"],"sourcesContent":["import '../../../utils/index.mjs';\nimport '../../tooltip/index.mjs';\nimport '../../dropdown/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useTooltipTriggerProps, useTooltipContentProps } from '../../tooltip/src/tooltip.mjs';\nimport { dropdownProps } from '../../dropdown/src/dropdown.mjs';\nimport { isBoolean } from '@vueuse/core';\n\nconst popoverProps = buildProps({\n trigger: useTooltipTriggerProps.trigger,\n placement: dropdownProps.placement,\n disabled: useTooltipTriggerProps.disabled,\n visible: useTooltipContentProps.visible,\n transition: useTooltipContentProps.transition,\n popperOptions: dropdownProps.popperOptions,\n tabindex: dropdownProps.tabindex,\n content: useTooltipContentProps.content,\n popperStyle: useTooltipContentProps.popperStyle,\n popperClass: useTooltipContentProps.popperClass,\n enterable: {\n ...useTooltipContentProps.enterable,\n default: true\n },\n effect: {\n ...useTooltipContentProps.effect,\n default: \"light\"\n },\n teleported: useTooltipContentProps.teleported,\n title: String,\n width: {\n type: [String, Number],\n default: 150\n },\n offset: {\n type: Number,\n default: void 0\n },\n showAfter: {\n type: Number,\n default: 0\n },\n hideAfter: {\n type: Number,\n default: 200\n },\n autoClose: {\n type: Number,\n default: 0\n },\n showArrow: {\n type: Boolean,\n default: true\n },\n persistent: {\n type: Boolean,\n default: true\n },\n \"onUpdate:visible\": {\n type: Function\n }\n});\nconst popoverEmits = {\n \"update:visible\": (value) => isBoolean(value),\n \"before-enter\": () => true,\n \"before-leave\": () => true,\n \"after-enter\": () => true,\n \"after-leave\": () => true\n};\n\nexport { popoverEmits, popoverProps };\n//# sourceMappingURL=popover.mjs.map\n","import { defineComponent, computed, ref, unref, openBlock, createBlock, mergeProps, withCtx, createElementBlock, normalizeClass, toDisplayString, createCommentVNode, renderSlot, createTextVNode } from 'vue';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { popoverProps, popoverEmits } from './popover.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\n\nconst __default__ = {\n name: \"ElPopover\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: popoverProps,\n emits: popoverEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const updateEventKeyRaw = `onUpdate:visible`;\n const onUpdateVisible = computed(() => {\n return props[updateEventKeyRaw];\n });\n const ns = useNamespace(\"popover\");\n const tooltipRef = ref();\n const popperRef = computed(() => {\n var _a;\n return (_a = unref(tooltipRef)) == null ? void 0 : _a.popperRef;\n });\n const style = computed(() => {\n return [\n {\n width: addUnit(props.width)\n },\n props.popperStyle\n ];\n });\n const kls = computed(() => {\n return [ns.b(), props.popperClass, { [ns.m(\"plain\")]: !!props.content }];\n });\n const gpuAcceleration = computed(() => {\n return props.transition === \"el-fade-in-linear\";\n });\n const hide = () => {\n var _a;\n (_a = tooltipRef.value) == null ? void 0 : _a.hide();\n };\n const beforeEnter = () => {\n emit(\"before-enter\");\n };\n const beforeLeave = () => {\n emit(\"before-leave\");\n };\n const afterEnter = () => {\n emit(\"after-enter\");\n };\n const afterLeave = () => {\n emit(\"update:visible\", false);\n emit(\"after-leave\");\n };\n expose({\n popperRef,\n hide\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTooltip), mergeProps({\n ref_key: \"tooltipRef\",\n ref: tooltipRef\n }, _ctx.$attrs, {\n trigger: _ctx.trigger,\n placement: _ctx.placement,\n disabled: _ctx.disabled,\n visible: _ctx.visible,\n transition: _ctx.transition,\n \"popper-options\": _ctx.popperOptions,\n tabindex: _ctx.tabindex,\n content: _ctx.content,\n offset: _ctx.offset,\n \"show-after\": _ctx.showAfter,\n \"hide-after\": _ctx.hideAfter,\n \"auto-close\": _ctx.autoClose,\n \"show-arrow\": _ctx.showArrow,\n \"aria-label\": _ctx.title,\n effect: _ctx.effect,\n enterable: _ctx.enterable,\n \"popper-class\": unref(kls),\n \"popper-style\": unref(style),\n teleported: _ctx.teleported,\n persistent: _ctx.persistent,\n \"gpu-acceleration\": unref(gpuAcceleration),\n \"onUpdate:visible\": unref(onUpdateVisible),\n onBeforeShow: beforeEnter,\n onBeforeHide: beforeLeave,\n onShow: afterEnter,\n onHide: afterLeave\n }), {\n content: withCtx(() => [\n _ctx.title ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"title\")),\n role: \"title\"\n }, toDisplayString(_ctx.title), 3)) : createCommentVNode(\"v-if\", true),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(_ctx.content), 1)\n ])\n ]),\n default: withCtx(() => [\n _ctx.$slots.reference ? renderSlot(_ctx.$slots, \"reference\", { key: 0 }) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 16, [\"trigger\", \"placement\", \"disabled\", \"visible\", \"transition\", \"popper-options\", \"tabindex\", \"content\", \"offset\", \"show-after\", \"hide-after\", \"auto-close\", \"show-arrow\", \"aria-label\", \"effect\", \"enterable\", \"popper-class\", \"popper-style\", \"teleported\", \"persistent\", \"gpu-acceleration\", \"onUpdate:visible\"]);\n };\n }\n});\nvar Popover = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"/home/runner/work/element-plus/element-plus/packages/components/popover/src/popover.vue\"]]);\n\nexport { Popover as default };\n//# sourceMappingURL=popover2.mjs.map\n","const attachEvents = (el, binding) => {\n const popperComponent = binding.arg || binding.value;\n const popover = popperComponent == null ? void 0 : popperComponent.popperRef;\n if (popover) {\n popover.triggerRef = el;\n }\n};\nvar PopoverDirective = {\n mounted(el, binding) {\n attachEvents(el, binding);\n },\n updated(el, binding) {\n attachEvents(el, binding);\n }\n};\nconst VPopover = \"popover\";\n\nexport { VPopover, PopoverDirective as default };\n//# sourceMappingURL=directive.mjs.map\n","import '../../utils/index.mjs';\nimport Popover from './src/popover2.mjs';\nimport PopoverDirective, { VPopover } from './src/directive.mjs';\nexport { popoverEmits, popoverProps } from './src/popover.mjs';\nimport { withInstallDirective, withInstall } from '../../utils/vue/install.mjs';\n\nconst ElPopoverDirective = withInstallDirective(PopoverDirective, VPopover);\nconst ElPopover = withInstall(Popover, {\n directive: ElPopoverDirective\n});\n\nexport { ElPopover, ElPopoverDirective, ElPopover as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Bell\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M256 768h512V448a256 256 0 1 0-512 0v320zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320z\"\n}, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm352 128h128a64 64 0 0 1-128 0z\"\n}, null, -1);\nconst _hoisted_5 = [\n _hoisted_2,\n _hoisted_3,\n _hoisted_4\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_5);\n}\nvar bell = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { bell as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Close\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar close = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { close as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Expand\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352 192 160-192 128V352z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar expand = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { expand as default };\n","<script lang=\"ts\" setup>\nimport { ref, reactive, onMounted, watch, computed } from 'vue'\nimport { useStore } from 'vuex'\nimport { formatDate } from '@/utils/stringUtil'\nimport { SuperUserApi } from '@/apis'\n\nconst props = defineProps<{\n data: SuperUserApiTypes.MessageItem[]\n autoShow?: boolean\n}>()\n\nconst dialogMessage = reactive({\n show: false,\n title: '系统消息',\n text: '内容'\n})\nconst activeMessage = ref<SuperUserApiTypes.MessageItem>(null)\nconst handleViewDialogMessage = (v: SuperUserApiTypes.MessageItem) => {\n activeMessage.value = v\n dialogMessage.text = v.text\n // TODO: 魔法数字问题\n // TODO:支持更多的消息类型\n dialogMessage.title = v.type === 0 ? '【系统消息】' : '【私信】'\n dialogMessage.show = true\n}\n\nconst readMessage = () => {\n if (activeMessage.value.read) {\n dialogMessage.show = false\n return\n }\n SuperUserApi.readMessage(activeMessage.value.id).then(() => {\n activeMessage.value.read = true\n dialogMessage.show = false\n })\n}\n\nwatch(\n () => props.data.length,\n () => {\n if (!props.autoShow) {\n return\n }\n const showItem = props.data.find((v) => !v.read)\n if (showItem) {\n handleViewDialogMessage(showItem)\n }\n }\n)\n\n// TODO:换成自定义hook\nconst $store = useStore()\nconst isMobile = computed(() => $store.getters['public/isMobile'])\n</script>\n<template>\n <div v-if=\"!data.length\" class=\"empty\">暂无更多消息 ღ( ´・ᴗ・` )比心</div>\n <ul class=\"message-list\">\n <li\n v-for=\"d in data\"\n :key=\"d.id\"\n :class=\"{\n read: d.read\n }\"\n @click=\"handleViewDialogMessage(d)\"\n >\n <p class=\"text\">{{ d.text }}</p>\n <p class=\"date\">{{ formatDate(new Date(d.date)) }}</p>\n </li>\n </ul>\n <el-dialog\n center\n show-close\n append-to-body\n v-model=\"dialogMessage.show\"\n :close-on-click-modal=\"false\"\n :title=\"dialogMessage.title\"\n width=\"30%\"\n :fullscreen=\"isMobile\"\n >\n <div class=\"message-text\" v-html=\"dialogMessage.text\"></div>\n <template #footer>\n <p class=\"dialog-date\">\n 时间:{{ formatDate(new Date(activeMessage.date)) }}\n </p>\n <span>\n <el-button\n type=\"default\"\n @click=\"\n () => {\n dialogMessage.show = false\n }\n \"\n >\n 下次提醒\n </el-button>\n <el-button type=\"primary\" @click=\"readMessage\"> 确定 </el-button>\n </span>\n </template>\n </el-dialog>\n</template>\n\n<style lang=\"scss\" scoped>\n.message-list {\n list-style: none;\n max-height: 500px;\n overflow-y: scroll;\n li {\n border-bottom: 1px solid #ddd;\n padding: 10px;\n cursor: pointer;\n &.read {\n opacity: 0.5;\n &:hover {\n opacity: 0.9;\n }\n }\n &:last-child {\n border-bottom: none;\n }\n\n p.text {\n font-size: 16px;\n display: -webkit-box;\n overflow: hidden;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n p.date {\n font-size: 14px;\n margin-top: 4px;\n }\n }\n}\n.empty {\n text-align: center;\n padding: 10px;\n}\n\n.dialog-date {\n font-size: 14px;\n text-align: right;\n padding: 10px;\n color: grey;\n}\n</style>\n<style lang=\"scss\">\n.message-text {\n overflow-y: scroll;\n max-height: 500px;\n ul,\n ol {\n list-style: none;\n }\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { Bell } from '@element-plus/icons-vue'\nimport { computed, reactive, onMounted, ref } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SuperUserApi } from '@/apis'\nimport MessageList from '@/components/MessageList/index.vue'\n\nconst activeTab = ref<'all' | 'no'>('all')\nconst messageData = reactive<SuperUserApiTypes.MessageItem[]>([])\n\nconst noReadMessage = computed(() => messageData.filter((v) => !v.read))\nconst route = useRoute()\nonMounted(() => {\n if (route.name !== 'config') {\n SuperUserApi.getMessageList().then((v) => {\n messageData.push(...v.data)\n })\n }\n})\n</script>\n<template>\n <div class=\"message-panel\">\n <el-popover placement=\"bottom-end\" :width=\"375\" trigger=\"hover\">\n <template #reference>\n <el-badge :value=\"noReadMessage.length || ''\" :max=\"99\">\n <el-button :icon=\"Bell\" circle />\n </el-badge>\n </template>\n <div>\n <el-tabs v-model=\"activeTab\">\n <el-tab-pane :label=\"`未读 ${noReadMessage.length || ''}`\" name=\"no\">\n <message-list auto-show :data=\"noReadMessage\" />\n </el-tab-pane>\n <el-tab-pane :label=\"`全部 ${messageData.length || ''}`\" name=\"all\">\n <message-list :data=\"messageData\" />\n </el-tab-pane>\n </el-tabs>\n </div>\n </el-popover>\n </div>\n</template>\n<style lang=\"scss\" scoped>\n.message-panel {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"dashboard\">\n <div class=\"pc-nav\">\n <div class=\"nav\">\n <!-- LOGO -->\n <div class=\"logo\">\n <router-link to=\"/\">\n <img\n src=\"https://img.cdn.sugarat.top/easypicker/EasyPicker.png\"\n alt=\"logo\"\n />\n </router-link>\n </div>\n <input v-if=\"isMobile\" type=\"checkbox\" id=\"navActive\" />\n <nav>\n <label v-if=\"isMobile\" for=\"navActive\" class=\"nav-item\">\n <span>Hello💐,</span>\n {{ userName }}\n </label>\n <label\n for=\"navActive\"\n class=\"nav-item\"\n v-for=\"(n, idx) in navList\"\n :key=\"idx\"\n :class=\"{\n active: navActiveIdx === idx\n }\"\n @click=\"handleNav(idx)\"\n >{{ n.title }}</label\n >\n <label\n @click=\"handleLogout\"\n v-if=\"isMobile\"\n for=\"navActive\"\n class=\"nav-item\"\n >\n <span style=\"margin-right: 6px\">退出</span>\n <el-icon size=\"16\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-v-53d86618\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.6667 2.55473C13.0212 3.58347 14.6667 5.93291 14.6667 8.66667C14.6667 12.3486 11.6819 15.3333 8 15.3333C4.3181 15.3333 1.33333 12.3486 1.33333 8.66667C1.33333 5.93291 2.97879 3.58347 5.33333 2.55473V4.04684C3.7392 4.969 2.66667 6.69259 2.66667 8.66667C2.66667 11.6122 5.05448 14 8 14C10.9455 14 13.3333 11.6122 13.3333 8.66667C13.3333 6.69259 12.2608 4.969 10.6667 4.04684V2.55473ZM7.33333 8.66667V1.33333C7.33333 1.14924 7.48257 1 7.66667 1H8.33333C8.51743 1 8.66667 1.14924 8.66667 1.33333V8.66667C8.66667 8.85076 8.51743 9 8.33333 9H7.66667C7.48257 9 7.33333 8.85076 7.33333 8.66667Z\"\n fill=\"#86909C\"\n data-v-53d86618\n />\n </svg>\n </el-icon>\n </label>\n </nav>\n <div class=\"mask\"></div>\n </div>\n <!-- 移动端展示 -->\n <span id=\"navMenu\">\n <message-panel v-if=\"isMobile\" class=\"mobile-message-bell\" />\n <label for=\"navActive\">\n <el-icon size=\"32\">\n <Expand />\n </el-icon>\n </label>\n </span>\n <div class=\"flex fac\" v-if=\"!isMobile\">\n <message-panel />\n <span>Hello 💐,</span>\n <el-dropdown class=\"exit\">\n <span class=\"exit-info\">\n <span class=\"ellipsis\">{{ userName }}</span>\n <el-icon>\n <ArrowDown />\n </el-icon>\n </span>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item @click=\"handleLogout\" :icon=\"Close\"\n >退出</el-dropdown-item\n >\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n </div>\n <router-view></router-view>\n <div>\n <home-footer type=\"dashboard\"></home-footer>\n </div>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { Expand, Close, ArrowDown, Bell } from '@element-plus/icons-vue'\nimport HomeFooter from '@components/HomeFooter/index.vue'\n\nimport { onMounted, reactive, ref, computed, watch } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useStore } from 'vuex'\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport MessagePanel from '@/components/MessagePanel/index.vue'\nimport { UserApi } from '@/apis'\n\nconst $router = useRouter()\nconst $store = useStore()\nconst $route = useRoute()\nconst isMobile = computed(() => $store.getters['public/isMobile'])\nconst navList = reactive<\n { title: string; path: string; isExternal?: boolean }[]\n>([\n {\n title: '文件管理',\n path: '/dashboard/files'\n },\n {\n title: '任务管理',\n path: '/dashboard/tasks'\n }\n])\nconst navActiveIdx = ref(0)\nconst handleNav = (idx: number) => {\n const n = navList[idx]\n if (!n.isExternal && idx !== navActiveIdx.value) {\n $router.push({\n path: n.path\n })\n }\n if (n.isExternal) {\n window.open(n.path, '_blank')\n }\n}\n\n// 自动切换激活的标题栏\nwatch(\n () => $route.path,\n (path: string) => {\n const idx = navList.findIndex((n) => path.startsWith(n.path))\n if (idx !== -1) {\n navActiveIdx.value = idx\n }\n }\n)\n\nconst handleLogout = () => {\n ElMessageBox.confirm('确认退出登录?', '登出提示', {\n draggable: true\n })\n .then(() => {\n // 登出接口\n UserApi.logout().finally(() => {\n $store.commit('user/setToken', null)\n $router.replace({\n name: 'home'\n })\n })\n })\n .catch(() => {\n ElMessage.info('取消')\n })\n}\nconst userName = ref('World')\n\nconst refreshActiveTab = () => {\n // 动态修改active的项\n navActiveIdx.value = navList.findIndex((v) => $route.path.startsWith(v.path))\n}\nonMounted(() => {\n // 动态添加管理页面入口\n UserApi.checkPower().then((r) => {\n const isSuperAdmin = r.data?.power\n userName.value = r.data?.name\n $store.commit('user/setSuperAdmin', isSuperAdmin)\n if (isSuperAdmin) {\n const superNavList = [\n {\n title: '应用管理',\n path: '/dashboard/manage'\n },\n {\n title: '网站监控',\n path: 'https://www.frontjs.com/app/87c1ef7667a513f313b4abb22a88dc78',\n isExternal: true\n }\n ]\n navList.push(...superNavList)\n }\n const isSystem = r.data?.system\n if (isSystem) {\n navList.splice(0, navList.length)\n navList.push({\n title: '系统管理',\n path: '/dashboard/config'\n })\n }\n refreshActiveTab()\n })\n})\n</script>\n<style scoped lang=\"scss\">\n.dashboard {\n background-color: #fafafa;\n}\n.pc-nav {\n background-color: #fff;\n display: flex;\n padding: 10px;\n justify-content: space-between;\n align-items: center;\n .exit {\n cursor: pointer;\n display: flex;\n align-items: center;\n .exit-info {\n display: flex;\n justify-content: center;\n align-items: center;\n > span {\n margin-right: 5px;\n display: block;\n max-width: 70px;\n }\n }\n }\n .nav {\n display: flex;\n nav {\n display: flex;\n align-items: center;\n .nav-item {\n font-size: 1rem;\n color: #595959;\n padding: 10px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n &.active {\n color: #409eff !important;\n font-weight: 600;\n }\n }\n }\n .exit {\n color: #595959;\n }\n }\n .logo {\n width: 180px;\n margin: 0 10px;\n img {\n height: 40px;\n }\n }\n}\n#navActive {\n display: none;\n opacity: 0;\n}\n#navMenu {\n display: none;\n}\n.mobile-message-bell {\n display: none;\n position: fixed;\n right: 0;\n top: 0;\n}\n@media screen and (max-width: 700px) {\n #navActive {\n display: block;\n position: fixed;\n left: 0;\n top: 0;\n }\n .mobile-message-bell {\n display: block;\n }\n #navMenu {\n cursor: pointer;\n display: block;\n position: absolute;\n left: 10px;\n top: 5px;\n font-size: 2rem;\n }\n .pc-nav {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n z-index: 6;\n .nav {\n flex-wrap: wrap;\n width: 100%;\n .logo {\n width: 100%;\n text-align: center;\n }\n }\n #navActive {\n & + nav {\n display: none;\n }\n }\n #navActive:checked {\n & + nav {\n display: flex;\n flex-direction: column;\n width: 100%;\n position: absolute;\n z-index: 1;\n background: #fff;\n left: 0;\n top: 50px;\n + .mask {\n display: block;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 50px;\n background-color: rgba(0, 0, 0, 0.5);\n }\n }\n }\n .exit {\n position: absolute;\n right: 10px;\n top: 20px;\n }\n }\n}\n</style>\n"],"names":["popoverProps","buildProps","useTooltipTriggerProps","dropdownProps","useTooltipContentProps","popoverEmits","value","isBoolean","__default__","_sfc_main","defineComponent","__props","expose","emit","props","updateEventKeyRaw","onUpdateVisible","computed","ns","useNamespace","tooltipRef","ref","popperRef","_a","unref","style","addUnit","kls","gpuAcceleration","hide","beforeEnter","beforeLeave","afterEnter","afterLeave","_ctx","_cache","openBlock","createBlock","ElTooltip","mergeProps","withCtx","createElementBlock","normalizeClass","toDisplayString","createCommentVNode","renderSlot","createTextVNode","Popover","_export_sfc","attachEvents","el","binding","popperComponent","popover","PopoverDirective","VPopover","ElPopoverDirective","withInstallDirective","ElPopover","withInstall","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_render","$props","$setup","$data","$options","bell","close","expand","dialogMessage","reactive","activeMessage","handleViewDialogMessage","v","readMessage","SuperUserApi","watch","showItem","$store","useStore","isMobile","activeTab","messageData","noReadMessage","route","useRoute","onMounted","$router","useRouter","$route","navList","navActiveIdx","handleNav","idx","n","path","handleLogout","ElMessageBox","UserApi","ElMessage","userName","refreshActiveTab","r","isSuperAdmin","_b","superNavList","_c"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
@@ -1,2 +1,2 @@
1
- import{_ as e,c,f as t,a as n}from"./index-62c7029f.js";const o={},s=n("h1",null,"反馈页",-1),_=[s];function a(r,d){return t(),c("div",null,_)}const f=e(o,[["render",a]]);export{f as default};
2
- //# sourceMappingURL=index-c61deab7.js.map
1
+ import{_ as e,c,f as t,a as n}from"./index-d98be3e4.js";const o={},s=n("h1",null,"反馈页",-1),_=[s];function a(r,d){return t(),c("div",null,_)}const f=e(o,[["render",a]]);export{f as default};
2
+ //# sourceMappingURL=index-5099f123.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-5099f123.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ .files[data-v-b8db442e]{max-width:1024px;margin:0 auto;padding-bottom:2em}@media screen and (max-width: 700px){.files[data-v-b8db442e]{margin-top:70px}.text-btns[data-v-b8db442e]{display:flex;flex-direction:column}.text-btns[data-v-b8db442e] .el-button{margin-left:0;margin-bottom:0}.header[data-v-b8db442e]{justify-content:center}.export-btns[data-v-b8db442e]{display:flex;flex-wrap:wrap;justify-content:space-around}}.panel[data-v-b8db442e]{padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px;z-index:1}.panel .label[data-v-b8db442e]{font-size:12px;margin-right:10px}.header[data-v-b8db442e]{display:flex;flex-wrap:wrap}.header .item[data-v-b8db442e]{margin-right:10px;margin-bottom:10px}.el-button[data-v-b8db442e]{margin-left:10px;margin-bottom:10px}.control-item[data-v-b8db442e]{margin-left:10px;margin-bottom:10px;font-size:14px}.imageLoading[data-v-b8db442e]{display:flex;align-items:center;justify-content:center;height:100%}.imageDes[data-v-b8db442e]{position:absolute;bottom:80px;color:#fff;left:50%;transform:translate(-50%)}.progress-list[data-v-b8db442e]{margin-top:10px}.progress-list .progress-item[data-v-b8db442e]{margin-bottom:10px;text-align:center}.progress-list .progress-item .progress[data-v-b8db442e]{display:flex;justify-content:center;align-items:center;margin-bottom:6px}.progress-list .progress-item .progress .el-progress--line[data-v-b8db442e]{min-width:200px;width:260px}.progress-list .progress-item .progress .el-button[data-v-b8db442e]{margin:0 6px}.progress-list .progress-item .des[data-v-b8db442e]{font-size:12px}.progress-list .progress-item .des .filename[data-v-b8db442e]{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-break:keep-all;margin-right:10px}.progress-list .progress-item .des .mimeType[data-v-b8db442e]{width:60px;color:#409eff}
@@ -0,0 +1,2 @@
1
+ import{a4 as nt,g as Oe,d as Se,f as d,c as k,a as n,r as m,O as x,o as Pe,U as it,a5 as B,h as rt,a1 as ut,Z as R,a6 as Ue,j as e,w as o,k as r,a7 as J,b as s,a8 as xe,F as be,C as Ce,D,S as b,a9 as Ee,E as u,s as U,aa as dt,ab as M,x as ct,v as pt,p as ft,e as mt,t as w,ac as _t,ad as vt,ae as ht,af as gt,I as wt,ag as yt,_ as kt}from"./index-d98be3e4.js";import{v as xt}from"./el-loading-c8798044.js";import{E as bt,a as Ct}from"./el-form-item-c0658f70.js";import{E as Et}from"./el-dialog-5b7bce58.js";import{T as A,E as zt}from"./tip-3d272885.js";import{E as St,s as $t}from"./el-pagination-dabcccbb.js";import{E as Vt,a as Dt}from"./el-select-f81a7377.js";import{E as It,a as Tt}from"./el-table-column-6716308a.js";import{E as Nt}from"./el-switch-9eba6fd0.js";import{E as Ft,a as Me,b as Lt,c as Ut}from"./el-dropdown-item-e0275106.js";import{L as Mt,I as At}from"./index-867d07e4.js";import{D as $,A as Ae,f as ze}from"./index-9e6bd406.js";import{E as Be}from"./index-c13133c5.js";import{r as Bt}from"./refresh-f2c4c532.js";import{d as Ot}from"./data-analysis-3ce8c1c1.js";import"./isEqual-82bb65ad.js";import"./index-eda7d85a.js";import"./validator-d4ea1237.js";import"./aria-bc8e8b0f.js";function Pt(y,V,S=[]){return nt.post("/action/download/list",{pageSize:y,pageIndex:V,extraIds:S})}const Ht={getDownloadActions:Pt},Rt=Se({name:"Download"}),Jt={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},qt=n("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),jt=[qt];function Wt(y,V,S,K,I,O){return d(),k("svg",Jt,jt)}var Xt=Oe(Rt,[["render",Wt]]);const Zt=Se({name:"Picture"}),Gt={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Kt=n("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),Qt=n("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),Yt=[Kt,Qt];function ea(y,V,S,K,I,O){return d(),k("svg",Gt,Yt)}var ta=Oe(Zt,[["render",ea]]);function aa(){const y=m(0),V=m(0),S=x(()=>"".concat((y.value/V.value*100).toFixed(2),"%")),K=x(()=>V.value<y.value),I=x(()=>"已用空间 ".concat(S.value,": ").concat(B(y.value)," / ").concat(B(V.value)));return Pe(()=>{it.usage().then(O=>{y.value=O.data.usage,V.value=O.data.size})}),{usage:y,size:V,percentage:S,limitDownload:K,spaceUsageText:I}}const re=y=>(ft("data-v-b8db442e"),y=y(),mt(),y),la={class:"files"},oa={class:"panel header"},sa={class:"item"},na=re(()=>n("span",{class:"label"},"分类",-1)),ia={class:"item"},ra=re(()=>n("span",{class:"label"},"任务",-1)),ua={class:"item"},da={class:"item"},ca={class:"panel"},pa={class:"export-btns flex fac"},fa={class:"control-item"},ma={class:"control-item"},_a={class:"control-item"},va={class:"control-item"},ha={class:"panel"},ga={"element-loading-text":"...",style:{"--el-loading-spinner-size":"20px"}},wa={class:"panel"},ya={key:0},ka={key:1},xa={key:2},ba={key:0},Ca={key:1},Ea={key:2},za={key:3},Sa={class:"flex fc"},$a={class:"panel"},Va=re(()=>n("h2",{style:{color:"#f56c6c"}},"空间超限将无法上传/下载文件,如需要使用,请联系管理员扩容,或自行删除无关文件",-1)),Da=re(()=>n("strong",null,[s("如果你觉得应用不错,"),n("a",{style:{color:"#409eff"},href:"http://docs.ep.sugarat.top/praise/index.html",target:"_blank",rel:"noopener noreferrer"},"给他发电⚡")],-1));const Ia={class:"imageDes"},Ta=re(()=>n("div",{class:"imageLoading"},"Loading...",-1)),Na={class:"imageLoading"},Fa={class:"text-btns"},La={class:"panel flex fc"},Ua=Se({__name:"index",setup(y){const{limitDownload:S,spaceUsageText:K}=aa(),I=rt(),O=ut(),Q=m(!1),ue=m(""),Y=m(localStorage.getItem("ep-show-images")==="true"),ee=m(!0),te=m(!1),de=m(!1),v=R({actions:[],pageSize:3,pageCount:0,pageCurrent:1,pageTotal:0,compressTask:[]}),q=()=>{const t=JSON.parse(localStorage.getItem("ep_compress_task")||"[]");v.compressTask=t,Ht.getDownloadActions(v.pageSize,v.pageCurrent,t.map(l=>l.id)).then(l=>{const{actions:i,sum:_}=l.data,c=!!i.find(p=>p.status===$.ARCHIVE);i.filter(p=>p.type===Ae.Compress).forEach(p=>{const f=t.findIndex(z=>z.id===p.id);p.status===$.SUCCESS&&f!==-1&&(ue.value=p.url,Q.value=!0,Ee(p.url),t.splice(f,1)),p.status===$.ARCHIVE&&f===-1&&t.push(p),p.status===$.FAIL&&f!==-1&&t.splice(f,1)}),v.compressTask=t,localStorage.setItem("ep_compress_task",JSON.stringify(t)),c&&setTimeout(q,1e3),v.pageTotal=_,v.actions=i,v.pageCount=Math.ceil(_/v.pageSize)})},He=t=>{v.pageCurrent=t,q()},$e=(t,l)=>{if(t.length===0){u.warning("表格中没有可导出的内容");return}const i=["提交时间","任务","文件名","大小"];te.value&&i.push("原文件名"),ee.value&&i.push("姓名");const _=i.map(f=>({value:f,row:2})),c=t.reduce((f,z)=>(JSON.parse(z.info).forEach(P=>{f.includes(P.text)||f.push(P.text)}),f),[]);_.push({value:"提交信息",col:c.length});const p=t.map(f=>{const{date:z,task_name:P,name:_e,size:Z,people:g}=f,N=JSON.parse(f.info).reduce((G,F)=>(G[F.text]=F.value,G),{}),ve=c.map(G=>{var F;return(F=N[G])!=null?F:"-"}),H=[U(new Date(z)),P,_e,B(Z)];return te.value&&H.push(f.origin_name||"-"),ee.value&&H.push(g||"-"),H.push(...ve),H});p.unshift(c),dt(_,p,l||"数据导出_".concat(U(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx")),u.success("导出成功")},Re=x(()=>I.state.category.categoryList),ae=m("all"),le=x(()=>I.state.task.taskList),T=m("all"),ce=x(()=>ae.value==="all"?le.value:(T.value="all",le.value.filter(t=>t.category===ae.value))),Je=x(()=>{const t=ce.value.find(l=>l.key===T.value);return t==null?void 0:t.name});Ue(()=>{le.value.length&&le.value.some(t=>t.key===O.query.task)&&(T.value="".concat(O.query.task))});const pe=m(!1),C=R([]),Ve=()=>{pe.value=!0,C.splice(0,C.length),M.getFileList().then(t=>{C.push(...t.data.files),pe.value=!1})},ge=m(),oe=m(""),se=x(()=>C.filter(t=>ae.value==="no-task"?le.value.every(l=>l.key!==t.task_key):ce.value.length===0?!1:T.value==="all"?ce.value.find(l=>l.key===t.task_key):T.value===t.task_key).filter(t=>oe.value?JSON.stringify([U(new Date(t.date)),B(t.size),t.people,t.name,t.task_name,t.info]).replace(/[:'"{},[\]]/g,"").includes(oe.value):!0)),qe=()=>{ge.value.clearSelection()},E=R([]),De=t=>{E.splice(0,E.length),E.push(...t)},j=m(!1),Ie=t=>{const l=E.map(i=>i.id);switch(t){case"download":if(S.value){u.error("下载功能已被限制,请联系管理员扩容,或自行删除历史无用文件");return}if(E.length===0){u.warning("没有选中需要下载的内容");return}if(j.value){u.warning("已经有批量下载任务正在进行,请稍后再试");return}M.batchDownload(l,"批量下载_".concat(U(new Date,"yyyy年MM月日hh时mm分ss秒"))).then(()=>{q()}).catch(()=>{u.error("所选文件均已从服务器上移除"),j.value=!1}),u.info("开始归档选中的文件,请赖心等待");break;case"delete":if(E.length===0){u.warning("没有选中需要删除的内容");return}Be.confirm("删除后无法恢复,是否删除","数据无价,请谨慎操作").then(()=>{M.batchDel(l).then(()=>{C.splice(0,C.length,...C.filter(i=>!l.includes(i.id))),u.success("删除成功")})}).catch(()=>{u.info("取消")});break;case"excel":if(E.length===0){u.warning("没有选中需要导出的内容");return}$e(E,"批量导出_".concat(U(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx")),u.success("导出成功");break}qe()},we=m(!1),fe=R([]),je=t=>{fe.splice(0,fe.length),fe.push(...ht(t.info)),we.value=!0},ne=m(!1),h=R({oldName:"",newName:"",suffix:"",id:-1}),We=t=>{const{id:l,name:i}=t,_=gt(i);h.oldName=i,h.suffix=_,h.id=l,ne.value=!0},Xe=()=>{if(ze.test(h.newName)){u.error("文件名不能包含".concat(ze.source,"等字符")),ze.lastIndex=0;return}M.updateFilename(h.id,"".concat(h.newName).concat(h.suffix)).then(()=>{u.success("修改成功");const t=C.find(l=>l.id===h.id);t.name="".concat(h.newName).concat(h.suffix)}).catch(()=>{u.error("修改失败")}).finally(()=>{ne.value=!1})},Ze=t=>{if(S.value){u.error("下载功能已被限制,请联系管理员扩容,或自行删除历史无用文件");return}const{id:l,name:i}=t;M.getOneFileUrl(l).then(_=>{const{link:c}=_.data;Q.value=!0,ue.value=c,Ee(c,i),q()}).catch(()=>{u.error("文件已从服务器上移除")})},Ge=t=>{const l=C.findIndex(i=>i===t);Be.confirm("确认删除此文件吗?","数据无价,请谨慎操作").then(()=>{M.deleteOneFile(t.id).then(()=>{u.success("删除成功"),C.splice(l,1)})}).catch(()=>{u.info("取消删除")})},W=m(6),Ke=t=>{W.value=t},Qe=x(()=>Math.ceil(se.value.length/W.value)),ie=m(1),X=x(()=>{const t=(ie.value-1)*W.value,l=ie.value*W.value;return se.value.slice(t,l)}),Ye=x(()=>B(se.value.reduce((t,l)=>t+l.size,0))),et=x(()=>B(C.reduce((t,l)=>t+l.size,0))),tt=t=>{ie.value=t},at=()=>{u.success({message:"刷新成功"}),Ve()},lt=()=>{const t=C.filter(l=>l.task_key===T.value).map(l=>l.id);if(t.length===0){u.warning("该任务中没有数据");return}if(j.value){u.warning("已经有批量下载任务正在进行,请稍后再试");return}j.value=!0,M.batchDownload(t,Je.value).then(()=>{q()}).catch(()=>{u.error("所选任务中的文件均已从服务器上移除")}).finally(()=>{setTimeout(()=>{j.value=!1},1e3)}),u.info("开始归档选中的文件,请赖心等待")},me=R([]);R({order:null,prop:null});const Te=m(""),ot=x(()=>me.map(t=>t.preview)),Ne=t=>{Te.value=X.value[t].name};let ye=!1;const Fe=()=>{const t=X.value.map(l=>l.id);t.length===0||ye||(ye=!0,M.checkImageFilePreviewUrl(t).then(l=>{ye=!1;const{data:i}=l;i.length===0||i.length!==X.value.length||(me.splice(0,me.length),X.value.forEach((_,c)=>{const{cover:p,preview:f}=i[c];_.cover=p,me.push({cover:p,preview:f,name:_.name,date:_.date,id:_.id})}))}))};Ue(()=>{if(window.localStorage.setItem("ep-show-images","".concat(Y.value)),!!Y.value){if(oe.value||ie.value||W.value){Fe();return}Fe()}}),Pe(()=>{Ve(),q(),I.dispatch("category/getCategory"),I.dispatch("task/getTask")});const Le=x(()=>I.getters["public/isMobile"]);return(t,l)=>{const i=Dt,_=Vt,c=ct,p=pt,f=wt,z=Lt,P=Ut,_e=Ft,Z=Nt,g=Tt,N=yt,ve=It,H=St,G=zt,F=Et,ke=bt,st=Ct,he=xt;return d(),k("div",la,[n("div",oa,[n("div",sa,[na,e(_,{size:"default",modelValue:ae.value,"onUpdate:modelValue":l[0]||(l[0]=a=>ae.value=a),filterable:"",placeholder:"请选择"},{default:o(()=>[e(i,{label:"全部",value:"all"}),e(i,{label:"默认",value:"default"}),(d(!0),k(be,null,Ce(Re.value,a=>(d(),D(i,{key:a.k,label:a.name,value:a.k},null,8,["label","value"]))),128)),e(i,{label:"无关联任务",value:"no-task"}),e(i,{label:"♻️回收站♻️",value:"trash"})]),_:1},8,["modelValue"])]),n("div",ia,[ra,e(_,{size:"default",modelValue:T.value,"onUpdate:modelValue":l[1]||(l[1]=a=>T.value=a),filterable:"",placeholder:"请选择"},{default:o(()=>[e(i,{label:"全部",value:"all"}),(d(!0),k(be,null,Ce(ce.value,a=>(d(),D(i,{key:a.key,label:a.name,value:a.key},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),n("div",ua,[e(c,{loading:j.value,disabled:T.value==="all",type:"primary",size:"default",icon:r(Xt),onClick:lt},{default:o(()=>[s("下载任务中的文件")]),_:1},8,["loading","disabled","icon"])]),n("div",da,[e(p,{size:"default",clearable:"",placeholder:"请输入要检索的内容","prefix-icon":r($t),modelValue:oe.value,"onUpdate:modelValue":l[2]||(l[2]=a=>oe.value=a)},null,8,["prefix-icon","modelValue"])])]),n("div",ca,[n("div",pa,[e(_e,{trigger:"click",onCommand:Ie},{dropdown:o(()=>[e(P,null,{default:o(()=>[e(z,{disabled:E.length===0,command:"download"},{default:o(()=>[s("下载")]),_:1},8,["disabled"]),e(z,{disabled:E.length===0,command:"delete"},{default:o(()=>[s("删除")]),_:1},8,["disabled"]),e(z,{disabled:E.length===0,command:"excel"},{default:o(()=>[s("导出记录")]),_:1},8,["disabled"])]),_:1})]),default:o(()=>[e(c,{type:"primary",size:"default"},{default:o(()=>[s(" 批量操作"),e(f,{class:"el-icon--right"},{default:o(()=>[e(r(Me))]),_:1})]),_:1})]),_:1}),J(n("div",null,[e(_e,{trigger:"click",onCommand:Ie},{dropdown:o(()=>[e(P,null,{default:o(()=>[e(z,{command:"download"},{default:o(()=>[s("下载")]),_:1}),e(z,{command:"delete"},{default:o(()=>[s("删除")]),_:1}),e(z,{command:"excel"},{default:o(()=>[s("导出记录")]),_:1})]),_:1})]),default:o(()=>[e(c,{type:"primary",disabled:E.length===0,size:"default"},{default:o(()=>[s(" 批量操作 "),e(f,null,{default:o(()=>[e(r(Me))]),_:1})]),_:1},8,["disabled"])]),_:1})],512),[[xe,!1]]),e(c,{size:"default",icon:r(Bt),onClick:at},{default:o(()=>[s("刷新")]),_:1},8,["icon"]),e(c,{title:"导出表格中所有的数据",type:"success",size:"default",icon:r(Ot),onClick:l[3]||(l[3]=()=>{$e(se.value,"筛选数据导出_".concat(r(U)(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx"))}),disabled:X.value.length===0},{default:o(()=>[s("导出记录")]),_:1},8,["icon","disabled"]),n("div",fa,[s(" 显示图片 "),e(Z,{"inline-prompt":"",modelValue:Y.value,"onUpdate:modelValue":l[4]||(l[4]=a=>Y.value=a),"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"是","inactive-text":"否"},null,8,["modelValue"])]),n("div",ma,[s(" 展示原文件名 "),e(Z,{"inline-prompt":"",modelValue:te.value,"onUpdate:modelValue":l[5]||(l[5]=a=>te.value=a),"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"是","inactive-text":"否"},null,8,["modelValue"])]),n("div",_a,[s(" 显示提交人姓名 "),e(Z,{"inline-prompt":"",modelValue:ee.value,"onUpdate:modelValue":l[6]||(l[6]=a=>ee.value=a),"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"是","inactive-text":"否"},null,8,["modelValue"])]),n("div",va,[s(" ⏰ 查看下载历史 "),e(Z,{modelValue:de.value,"onUpdate:modelValue":l[7]||(l[7]=a=>de.value=a),style:{"--el-switch-on-color":"#13ce66","--el-switch-off-color":"#ff4949"}},null,8,["modelValue"])])])]),J(n("div",ha,[e(A,{style:{"font-size":"16px"}},{default:o(()=>[s("正在进行归档的任务 "+w(v.compressTask.length)+"个",1)]),_:1}),e(A,null,{default:o(()=>[s("详细归档记录点击右上角 “⏰查看下载历史”")]),_:1}),(d(!0),k(be,null,Ce(v.compressTask,(a,L)=>(d(),k("p",{key:a.id,class:"tc",style:{"margin-top":"10px"}},[s(w(L+1)+". "+w(a.tip)+" ",1),J(n("span",ga,null,512),[[he,!0]])]))),128))],512),[[xe,v.compressTask.length&&!de.value]]),J(n("div",wa,[e(A,{style:{"font-size":"16px"}},{default:o(()=>[s("”❤️下面展示历史的下载记录与归档任务完成情况❤️“")]),_:1}),e(A,null,{default:o(()=>[s("”再也不需要在页面停留等待归档完成“")]),_:1}),n("div",null,[J((d(),D(ve,{"element-loading-text":"Loading...","tooltip-effect":"dark",multipleTable:"",ref_key:"multipleTable",ref:ge,onSelectionChange:De,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(a=>[s(w(r(U)(new Date(a.row.date))),1)]),_:1}),e(g,{prop:"tip",label:"文件信息"}),e(g,{prop:"type",label:"任务类型"},{default:o(a=>[a.row.type===r(Ae).Compress?(d(),D(N,{key:0,type:"primary"},{default:o(()=>[s("归档下载")]),_:1})):(d(),D(N,{key:1,type:"default"},{default:o(()=>[s("普通下载")]),_:1}))]),_:1}),e(g,{prop:"size",label:"大小",width:"100"},{default:o(a=>[a.row.status===r($).ARCHIVE?(d(),k("span",ya,[e(N,{type:"danger"},{default:o(()=>[s("归档中...")]),_:1})])):a.row.status!==r($).FAIL?(d(),k("span",ka,w(a.row.size?r(B)(a.row.size):"未知大小"),1)):b("",!0),a.row.status===r($).FAIL?(d(),k("span",xa,[e(N,{type:"danger"},{default:o(()=>[s("归档失败")]),_:1})])):b("",!0)]),_:1}),e(g,{fixed:"right",label:"操作",width:"140"},{default:o(a=>[a.row.status===r($).ARCHIVE?J((d(),k("div",ba,[s(" 归档中... ")])),[[he,!0]]):b("",!0),a.row.status===r($).EXPIRED?(d(),k("div",Ca," 链接已失效 ")):b("",!0),a.row.status===r($).FAIL?(d(),k("div",Ea," 联系开发者,提供错误信息:"+w(a.row.error),1)):b("",!0),a.row.status===r($).SUCCESS?(d(),k("div",za,[e(N,{onClick:L=>r(Ee)(a.row.url),type:"primary"},{default:o(()=>[s("下载")]),_:2},1032,["onClick"]),e(N,{type:"success",style:{"margin-left":"10px"},onClick:L=>r(_t)(a.row.url)},{default:o(()=>[s("链接")]),_:2},1032,["onClick"]),e(N,{type:"warning",style:{"margin-left":"10px"},onClick:()=>{Q.value=!0,ue.value=a.row.url}},{default:o(()=>[s("二维码")]),_:2},1032,["onClick"])])):b("",!0)]),_:1})]),_:1},8,["data"])),[[he,pe.value]]),n("div",Sa,[e(H,{small:"","current-page":v.pageCurrent,"page-count":v.pageCount,total:v.pageTotal,layout:"total, prev, pager, next",onCurrentChange:He},null,8,["current-page","page-count","total"])])])],512),[[xe,de.value]]),n("div",$a,[e(A,null,{default:o(()=>[s("全部文件大小:"+w(et.value)+",当前任务大小:"+w(Ye.value),1)]),_:1}),b("",!0),e(A,null,{default:o(()=>[n("span",{style:vt({color:r(S)?"#f56c6c":""})},w(r(K)),5)]),_:1}),r(S)?(d(),D(A,{key:1},{default:o(()=>[Va]),_:1})):b("",!0),e(A,null,{default:o(()=>[Da,b("",!0)]),_:1}),b("",!0),J((d(),D(ve,{"element-loading-text":"Loading...","tooltip-effect":"dark",multipleTable:"",ref_key:"multipleTable",ref:ge,onSelectionChange:De,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(a=>[s(w(r(U)(new Date(a.row.date))),1)]),_:1}),e(g,{prop:"task_name",label:"任务",width:"150"}),e(g,{prop:"name",label:"文件名",width:"200"}),te.value?(d(),D(g,{key:0,prop:"origin_name",label:"原文件名",width:"200"},{default:o(a=>[s(w(a.row.origin_name||"-"),1)]),_:1})):b("",!0),e(g,{prop:"size",label:"大小"},{default:o(a=>[s(w(a.row.size===0?"未知大小":r(B)(a.row.size)),1)]),_:1}),Y.value?(d(),D(g,{key:1,label:"缩略图",width:"120"},{default:o(a=>[e(G,{onSwitch:Ne,onClick:L=>Ne(a.$index),"preview-teleported":"","preview-src-list":ot.value,"initial-index":a.$index,lazy:"",style:{width:"100px",height:"100px"},src:a.row.cover,fit:"cover"},{viewer:o(()=>[n("div",Ia,w(Te.value),1)]),placeholder:o(()=>[Ta]),error:o(()=>[n("div",Na,[s(" 不支持 "),e(f,null,{default:o(()=>[e(r(ta))]),_:1})])]),_:2},1032,["onClick","preview-src-list","initial-index","src"])]),_:1})):b("",!0),ee.value?(d(),D(g,{key:2,prop:"people",width:"100",label:"限制名单"},{default:o(a=>[s(w(a.row.people||"-"),1)]),_:1})):b("",!0),e(g,{fixed:"right",label:"操作",width:"140"},{default:o(a=>[n("div",Fa,[e(c,{onClick:L=>je(a.row),type:"primary",text:"",size:"small"},{default:o(()=>[s("查看提交信息")]),_:2},1032,["onClick"]),e(c,{onClick:L=>We(a.row),type:"primary",text:"",size:"small"},{default:o(()=>[s("修改文件名")]),_:2},1032,["onClick"]),e(c,{onClick:L=>Ze(a.row),type:"primary",text:"",size:"small"},{default:o(()=>[s("下载")]),_:2},1032,["onClick"]),e(c,{onClick:L=>Ge(a.row),type:"primary",text:"",size:"small"},{default:o(()=>[s("删除")]),_:2},1032,["onClick"])])]),_:1})]),_:1},8,["data"])),[[he,pe.value]])]),n("div",La,[e(H,{"current-page":ie.value,onCurrentChange:tt,background:"","page-count":Qe.value,"page-sizes":[6,10,50,100],"page-size":W.value,onSizeChange:Ke,total:se.value.length,layout:"total, sizes, prev, pager, next, jumper"},null,8,["current-page","page-count","page-size","total"])]),e(F,{fullscreen:Le.value,title:"提交填写的信息",modelValue:we.value,"onUpdate:modelValue":l[8]||(l[8]=a=>we.value=a)},{default:o(()=>[e(At,{infos:fe,disabled:!0},null,8,["infos"])]),_:1},8,["fullscreen","modelValue"]),e(Mt,{value:Q.value,"onUpdate:value":l[9]||(l[9]=a=>Q.value=a),title:"下载链接",link:ue.value},null,8,["value","link"]),e(F,{fullscreen:Le.value,title:"修改文件名",modelValue:ne.value,"onUpdate:modelValue":l[13]||(l[13]=a=>ne.value=a)},{default:o(()=>[n("div",null,[e(st,{"label-width":"100px",model:h},{default:o(()=>[e(ke,{label:"原文件名",prop:"newName"},{default:o(()=>[e(p,{modelValue:h.oldName,"onUpdate:modelValue":l[10]||(l[10]=a=>h.oldName=a),disabled:""},null,8,["modelValue"])]),_:1}),e(ke,{label:"新文件名",prop:"newName"},{default:o(()=>[e(p,{modelValue:h.newName,"onUpdate:modelValue":l[11]||(l[11]=a=>h.newName=a),placeholder:"请输入新文件名"},{append:o(()=>[s(w(h.suffix),1)]),_:1},8,["modelValue"])]),_:1}),e(ke,null,{default:o(()=>[e(c,{type:"success",onClick:Xe},{default:o(()=>[s("保存")]),_:1}),e(c,{onClick:l[12]||(l[12]=a=>ne.value=!1)},{default:o(()=>[s("取消")]),_:1})]),_:1})]),_:1},8,["model"])])]),_:1},8,["fullscreen","modelValue"])])}}});const al=kt(Ua,[["__scopeId","data-v-b8db442e"]]);export{al as default};
2
+ //# sourceMappingURL=index-8557974a.js.map