@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.
- package/dist/assets/{data-analysis-13490516.js → data-analysis-3ce8c1c1.js} +2 -2
- package/dist/assets/{data-analysis-13490516.js.map → data-analysis-3ce8c1c1.js.map} +1 -1
- package/dist/assets/{data-analysis-legacy.f8612e65.js → data-analysis-legacy.985137a1.js} +2 -2
- package/dist/assets/{data-board-229a3bf5.js → data-board-fc2c2ec1.js} +2 -2
- package/dist/assets/{data-board-229a3bf5.js.map → data-board-fc2c2ec1.js.map} +1 -1
- package/dist/assets/{data-board-legacy.a60c4519.js → data-board-legacy.33116f7c.js} +2 -2
- package/dist/assets/{el-date-picker-5a3e3d86.js → el-date-picker-b377a533.js} +2 -2
- package/dist/assets/{el-date-picker-5a3e3d86.js.map → el-date-picker-b377a533.js.map} +1 -1
- package/dist/assets/{el-date-picker-legacy.6d67764b.js → el-date-picker-legacy.127f0787.js} +2 -2
- package/dist/assets/{el-dialog-463960e0.js → el-dialog-5b7bce58.js} +2 -2
- package/dist/assets/{el-dialog-463960e0.js.map → el-dialog-5b7bce58.js.map} +1 -1
- package/dist/assets/{el-dialog-legacy.0bcf48a4.js → el-dialog-legacy.e6ef2c86.js} +2 -2
- package/dist/assets/{el-dropdown-item-7c33f4fa.js → el-dropdown-item-e0275106.js} +2 -2
- package/dist/assets/{el-dropdown-item-7c33f4fa.js.map → el-dropdown-item-e0275106.js.map} +1 -1
- package/dist/assets/{el-dropdown-item-legacy.8625546e.js → el-dropdown-item-legacy.4888d114.js} +2 -2
- package/dist/assets/{el-form-item-f40006bf.js → el-form-item-c0658f70.js} +2 -2
- package/dist/assets/{el-form-item-f40006bf.js.map → el-form-item-c0658f70.js.map} +1 -1
- package/dist/assets/{el-form-item-legacy.d28db5d0.js → el-form-item-legacy.a8e8784e.js} +2 -2
- package/dist/assets/{el-loading-5d91bb6c.js → el-loading-c8798044.js} +2 -2
- package/dist/assets/{el-loading-5d91bb6c.js.map → el-loading-c8798044.js.map} +1 -1
- package/dist/assets/{el-loading-legacy.0f35210f.js → el-loading-legacy.534bd799.js} +2 -2
- package/dist/assets/{el-pagination-ffb99240.js → el-pagination-dabcccbb.js} +2 -2
- package/dist/assets/{el-pagination-ffb99240.js.map → el-pagination-dabcccbb.js.map} +1 -1
- package/dist/assets/{el-pagination-legacy.25b54e8d.js → el-pagination-legacy.7d2ae10d.js} +2 -2
- package/dist/assets/{el-progress-2fff98be.js → el-progress-54b274cd.js} +2 -2
- package/dist/assets/{el-progress-2fff98be.js.map → el-progress-54b274cd.js.map} +1 -1
- package/dist/assets/{el-progress-legacy.db8b5855.js → el-progress-legacy.07ca6502.js} +2 -2
- package/dist/assets/{el-select-7d894fd0.js → el-select-f81a7377.js} +2 -2
- package/dist/assets/{el-select-7d894fd0.js.map → el-select-f81a7377.js.map} +1 -1
- package/dist/assets/{el-select-legacy.ad6ded5a.js → el-select-legacy.94fad7fa.js} +2 -2
- package/dist/assets/{el-switch-2eda0412.js → el-switch-9eba6fd0.js} +2 -2
- package/dist/assets/{el-switch-2eda0412.js.map → el-switch-9eba6fd0.js.map} +1 -1
- package/dist/assets/{el-switch-legacy.e17e7919.js → el-switch-legacy.490534be.js} +2 -2
- package/dist/assets/{el-tab-pane-b3156067.js → el-tab-pane-89bdd69b.js} +2 -2
- package/dist/assets/{el-tab-pane-b3156067.js.map → el-tab-pane-89bdd69b.js.map} +1 -1
- package/dist/assets/{el-tab-pane-legacy.2cf21031.js → el-tab-pane-legacy.cfdbc441.js} +2 -2
- package/dist/assets/{el-table-column-22352e92.js → el-table-column-6716308a.js} +2 -2
- package/dist/assets/{el-table-column-22352e92.js.map → el-table-column-6716308a.js.map} +1 -1
- package/dist/assets/{el-table-column-legacy.fd665e2a.js → el-table-column-legacy.49685e5a.js} +4 -4
- package/dist/assets/index-0b0f29ec.js +2 -0
- package/dist/assets/index-0b0f29ec.js.map +1 -0
- package/dist/assets/index-17c6005d.css +1 -0
- package/dist/assets/{index-bc1a6d96.js → index-20019c57.js} +2 -2
- package/dist/assets/{index-bc1a6d96.js.map → index-20019c57.js.map} +1 -1
- package/dist/assets/index-247f2c67.css +1 -0
- package/dist/assets/{index-f298d979.js → index-248e88e2.js} +2 -2
- package/dist/assets/{index-f298d979.js.map → index-248e88e2.js.map} +1 -1
- package/dist/assets/{index-8eff6b5a.js → index-39637d43.js} +2 -2
- package/dist/assets/{index-8eff6b5a.js.map → index-39637d43.js.map} +1 -1
- package/dist/assets/{index-c61deab7.js → index-5099f123.js} +2 -2
- package/dist/assets/index-5099f123.js.map +1 -0
- package/dist/assets/index-57513f17.css +1 -0
- package/dist/assets/index-8557974a.js +2 -0
- package/dist/assets/index-8557974a.js.map +1 -0
- package/dist/assets/{index-82a6b493.css → index-85fcd87a.css} +1 -1
- package/dist/assets/index-867d07e4.js +2 -0
- package/dist/assets/{index-34bd5929.js.map → index-867d07e4.js.map} +1 -1
- package/dist/assets/{index-afb7d164.js → index-8f353d3b.js} +2 -2
- package/dist/assets/{index-afb7d164.js.map → index-8f353d3b.js.map} +1 -1
- package/dist/assets/index-8f7abc30.js +2 -0
- package/dist/assets/index-8f7abc30.js.map +1 -0
- package/dist/assets/{index-75b8c91c.js → index-8fbd06a5.js} +2 -2
- package/dist/assets/{index-75b8c91c.js.map → index-8fbd06a5.js.map} +1 -1
- package/dist/assets/index-a880597c.css +1 -0
- package/dist/assets/{index-d32645f3.js → index-acdbf3b6.js} +2 -2
- package/dist/assets/{index-d32645f3.js.map → index-acdbf3b6.js.map} +1 -1
- package/dist/assets/{index-ca90e8da.js → index-b3e58b02.js} +2 -2
- package/dist/assets/{index-ca90e8da.js.map → index-b3e58b02.js.map} +1 -1
- package/dist/assets/{index-17fa8fb7.js → index-c13133c5.js} +2 -2
- package/dist/assets/{index-17fa8fb7.js.map → index-c13133c5.js.map} +1 -1
- package/dist/assets/{index-b3774417.js → index-c1d6836c.js} +2 -2
- package/dist/assets/{index-b3774417.js.map → index-c1d6836c.js.map} +1 -1
- package/dist/assets/{index-5f3a9ae0.css → index-d26aeed5.css} +1 -1
- package/dist/assets/index-d98be3e4.js +19 -0
- package/dist/assets/index-d98be3e4.js.map +1 -0
- package/dist/assets/{index-f6ffb548.js → index-d9db6cc1.js} +2 -2
- package/dist/assets/{index-f6ffb548.js.map → index-d9db6cc1.js.map} +1 -1
- package/dist/assets/{index-6f4c911e.js → index-e0ef7135.js} +2 -2
- package/dist/assets/{index-6f4c911e.js.map → index-e0ef7135.js.map} +1 -1
- package/dist/assets/index-ebf625c9.js +2 -0
- package/dist/assets/index-ebf625c9.js.map +1 -0
- package/dist/assets/{index-6d7ac779.js → index-eda7d85a.js} +2 -2
- package/dist/assets/{index-6d7ac779.js.map → index-eda7d85a.js.map} +1 -1
- package/dist/assets/{index-c840d3aa.js → index-fdc557f8.js} +2 -2
- package/dist/assets/{index-c840d3aa.js.map → index-fdc557f8.js.map} +1 -1
- package/dist/assets/{index-legacy.189f20a8.js → index-legacy.0c570346.js} +2 -2
- package/dist/assets/index-legacy.24edddf9.js +2 -0
- package/dist/assets/{index-legacy.01d9320a.js → index-legacy.31681402.js} +2 -2
- package/dist/assets/{index-legacy.bd5a4368.js → index-legacy.3e6b32cf.js} +2 -2
- package/dist/assets/index-legacy.4edc099d.js +2 -0
- package/dist/assets/{index-legacy.1f2405e5.js → index-legacy.614df679.js} +2 -2
- package/dist/assets/{index-legacy.6c7021b3.js → index-legacy.6420d0ab.js} +2 -2
- package/dist/assets/{index-legacy.9f65dcb9.js → index-legacy.679e5ce1.js} +2 -2
- package/dist/assets/{index-legacy.9c4986d3.js → index-legacy.7b42e0cb.js} +2 -2
- package/dist/assets/index-legacy.7bafa2e6.js +2 -0
- package/dist/assets/{index-legacy.4f956884.js → index-legacy.7ff3d773.js} +2 -2
- package/dist/assets/{index-legacy.9dc57803.js → index-legacy.84e0eca9.js} +2 -2
- package/dist/assets/{index-legacy.d9854cf5.js → index-legacy.9ca64f8c.js} +2 -2
- package/dist/assets/{index-legacy.7dae3131.js → index-legacy.a4371211.js} +2 -2
- package/dist/assets/index-legacy.acb8b137.js +23 -0
- package/dist/assets/index-legacy.bc3790f6.js +2 -0
- package/dist/assets/{index-legacy.e6994f0a.js → index-legacy.d0e21cb1.js} +2 -2
- package/dist/assets/{index-legacy.08663170.js → index-legacy.daf56c8f.js} +2 -2
- package/dist/assets/{index-legacy.1540c5bc.js → index-legacy.e12feae0.js} +2 -2
- package/dist/assets/{index-legacy.51740a44.js → index-legacy.e7f8790c.js} +2 -2
- package/dist/assets/{isEqual-9c466456.js → isEqual-82bb65ad.js} +2 -2
- package/dist/assets/{isEqual-9c466456.js.map → isEqual-82bb65ad.js.map} +1 -1
- package/dist/assets/{isEqual-legacy.985bb619.js → isEqual-legacy.dbaa2a6e.js} +2 -2
- package/dist/assets/{refresh-6ae903c0.js → refresh-f2c4c532.js} +2 -2
- package/dist/assets/{refresh-6ae903c0.js.map → refresh-f2c4c532.js.map} +1 -1
- package/dist/assets/{refresh-legacy.8092415a.js → refresh-legacy.0ee83ca1.js} +2 -2
- package/dist/assets/{tip-00ddf749.js → tip-3d272885.js} +2 -2
- package/dist/assets/{tip-00ddf749.js.map → tip-3d272885.js.map} +1 -1
- package/dist/assets/{tip-legacy.6e921091.js → tip-legacy.dee89e85.js} +2 -2
- package/dist/assets/validator-d4ea1237.js +2 -0
- package/dist/assets/{validator-853854a1.js.map → validator-d4ea1237.js.map} +1 -1
- package/dist/assets/validator-legacy.ecd1e5dd.js +2 -0
- package/dist/index.html +3 -3
- package/package.json +10 -4
- package/dist/assets/index-34bd5929.js +0 -2
- package/dist/assets/index-34fd4f9f.css +0 -1
- package/dist/assets/index-62c7029f.js +0 -15
- package/dist/assets/index-62c7029f.js.map +0 -1
- package/dist/assets/index-98964915.js +0 -2
- package/dist/assets/index-98964915.js.map +0 -1
- package/dist/assets/index-b0a4c236.js +0 -2
- package/dist/assets/index-b0a4c236.js.map +0 -1
- package/dist/assets/index-c3a1cd43.js +0 -2
- package/dist/assets/index-c3a1cd43.js.map +0 -1
- package/dist/assets/index-c61deab7.js.map +0 -1
- package/dist/assets/index-d3ae2239.css +0 -1
- package/dist/assets/index-eb08e7b7.css +0 -1
- package/dist/assets/index-f31c9ba4.css +0 -1
- package/dist/assets/index-f47a54b0.js +0 -2
- package/dist/assets/index-f47a54b0.js.map +0 -1
- package/dist/assets/index-legacy.45ec3501.js +0 -2
- package/dist/assets/index-legacy.5d174bde.js +0 -2
- package/dist/assets/index-legacy.978f90e1.js +0 -18
- package/dist/assets/index-legacy.d32480a5.js +0 -2
- package/dist/assets/index-legacy.e7464d3c.js +0 -2
- package/dist/assets/validator-853854a1.js +0 -2
- package/dist/assets/validator-legacy.b34dfdfa.js +0 -2
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{g as Pe,d as me,f as m,c as A,a as n,h as Te,Z,r,O as q,o as Be,j as t,w as o,k as f,a0 as C,v as De,x as Fe,p as Le,e as Re,F as re,C as ie,D as k,b as s,t as b,s as x,S as $,E as i,q as de,P as ce,z as Ae,A as Ne,_ as Ie}from"./index-62c7029f.js";import{E as Oe,a as je}from"./el-form-item-f40006bf.js";import{d as X,E as He}from"./el-date-picker-5a3e3d86.js";import{E as Ze}from"./el-dialog-463960e0.js";import{E as qe,s as We}from"./el-pagination-ffb99240.js";import{E as Ge,a as Je}from"./el-select-7d894fd0.js";import{E as Ke,a as Qe}from"./el-table-column-22352e92.js";import{U as E}from"./index-9e6bd406.js";import{r as Xe}from"./refresh-6ae903c0.js";import{E as pe}from"./index-17fa8fb7.js";import"./isEqual-9c466456.js";import"./index-6d7ac779.js";import"./validator-853854a1.js";import"./aria-bc8e8b0f.js";const Ye=me({name:"Message"}),el={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},ll=n("path",{fill:"currentColor",d:"M128 224v512a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V224H128zm0-64h768a64 64 0 0 1 64 64v512a128 128 0 0 1-128 128H192A128 128 0 0 1 64 736V224a64 64 0 0 1 64-64z"},null,-1),tl=n("path",{fill:"currentColor",d:"M904 224 656.512 506.88a192 192 0 0 1-289.024 0L120 224h784zm-698.944 0 210.56 240.704a128 128 0 0 0 192.704 0L818.944 224H205.056z"},null,-1),ol=[ll,tl];function al(U,Y,V,z,S,M){return m(),A("svg",el,ol)}var nl=Pe(Ye,[["render",al]]);const sl=U=>(Le("data-v-0b1b911a"),U=U(),Re(),U),ul={class:"user"},rl={class:"panel"},il={class:"p10 log-filter"},dl={class:"item"},cl=sl(()=>n("span",{class:"label"},"状态",-1)),pl={class:"item"},ml={class:"item"},_l={class:"item"},fl={class:"user-oss-info"},vl={class:"text-btn-list"},hl={class:"flex fc p10"},gl={class:"tc"},wl={class:"dialog-footer"},bl={class:"tc"},Cl={key:0,style:{"margin-top":"10px"},class:"tc"},kl={class:"dialog-footer"},Vl={class:"tc"},yl={class:"dialog-footer"},xl={class:"tc"},$l={class:"dialog-footer"},El=me({__name:"index",setup(U){const Y=Te(),V=Z([]),z=()=>{C.getUserList().then(a=>{V.splice(0,V.length);const l=a.data.list;V.push(...l)})},S=r(E.NORMAL),M=r(""),ee=Z([{label:"正常",type:E.NORMAL},{label:"冻结",type:E.FREEZE},{label:"封禁",type:E.BAN}]),W=q(()=>V.filter(a=>a.status===S.value).filter(a=>{const{id:l,account:p,phone:h,join_time:g,login_count:u,login_time:c,open_time:K}=a;return M.value.length===0?!0:"".concat(l," ").concat(p," ").concat(h," ").concat(u," ").concat(x(K)," ").concat(x(c)," ").concat(x(g)).includes(M.value)})),P=r(10),_e=a=>{P.value=a},fe=q(()=>Math.ceil(W.value.length/P.value)),N=r(1),ve=q(()=>{const a=(N.value-1)*P.value,l=N.value*P.value;return W.value.slice(a,l)}),he=a=>{N.value=a},T=r(!1),v=r(0),y=r(E.NORMAL),ge=ee,B=r(""),we=(a,l,p)=>{v.value=a,y.value=l,B.value=p,T.value=!0},be=()=>{const a=V.find(l=>l.id===v.value);if(y.value===E.FREEZE){if(!B.value){i.warning("请设置解冻时间");return}a.open_time=B.value}else a.open_time="";a.status=y.value,T.value=!1,C.updateUserStatus(a.id,a.status,a.open_time).then(()=>{i.success("修改成功")})},D=r(!1),_=Z({pwd1:"",pwd2:""}),Ce=a=>{v.value=a,D.value=!0,_.pwd1="",_.pwd2=""},ke=()=>Ae.test(_.pwd1)?_.pwd1!==_.pwd2?(i.warning("两次输入的密码不一致"),!1):!0:(i.warning("密码格式不正确(6-16位 支持字母/数字/下划线)"),!1),Ve=()=>{ke()&&pe.confirm("此操作不可逆,请谨慎操作","确定要重置用户的密码吗?",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{C.resetPassword(v.value,_.pwd1).then(()=>{i.success("重置成功"),D.value=!1})}).catch(()=>{})},F=r(!1),d=Z({phone:"",code:""}),G=r("获取验证码"),L=r(0),le=()=>{if(L.value===0){G.value="获取验证码";return}G.value="".concat(L.value,"s"),L.value-=1,setTimeout(le,1e3)},ye=()=>{if(!de.test(d.phone)){i.warning("手机号格式不正确");return}ce.checkPhone(d.phone).then(()=>{ce.getCode(d.phone).then(()=>{L.value=120,le(),i.success("获取成功,请注意查看手机短信")})}).catch(a=>{const{code:l}=a,p="注册失败,未知错误",h={1002:"手机号已被注册",1006:"手机号格式不正确"};i.error(h[l]||p)})},xe=()=>de.test(d.phone)?Ne.test(d.code)?!0:(i.warning("验证码格式不正确"),!1):(i.warning("手机号格式不正确"),!1),$e=a=>{v.value=a,F.value=!0},Ee=async()=>{xe()&&C.resetPhone(v.value,d.phone,d.code).then(()=>{i.success("绑定成功"),F.value=!1,d.code="",d.phone="",z()}).catch(a=>{const{code:l}=a,p="绑定失败,未知错误",h={1002:"手机号已被注册",1003:"验证码不正确"};i.error(h[l]||p)})},J=(a,l)=>{const p={month:"一个月前",quarter:"三个月前",half:"半年前"};v.value=a,pe.confirm("移除后这些文件将无法恢复,请谨慎操作","删除前确认?",{confirmButtonText:"确认删除 ".concat(p[l],"文件")}).then(()=>{C.clearOssFile(a,l).then(()=>{i.success("清理成功")})}).catch(()=>{})},te=r(1),R=r(!1),I=r(""),oe=(a,l=1)=>{v.value=a,te.value=l,R.value=!0},Ue=()=>{C.sendMessage(I.value,te.value,v.value).then(()=>{i.success("推送成功"),I.value="",R.value=!1})},ze=a=>{C.logout(a).then(()=>{i.success("下线成功 ".concat(a)),z()})};Be(()=>{z()});const O=q(()=>Y.getters["public/isMobile"]);return(a,l)=>{const p=Je,h=Ge,g=De,u=Fe,c=Qe,K=Ke,Se=qe,j=Ze,Me=He,H=Oe,ae=je;return m(),A("div",ul,[n("div",rl,[n("div",il,[n("span",dl,[cl,t(h,{modelValue:S.value,"onUpdate:modelValue":l[0]||(l[0]=e=>S.value=e),size:"default",placeholder:"请选择日志类型"},{default:o(()=>[(m(!0),A(re,null,ie(ee,(e,w)=>(m(),k(p,{key:w,label:e.label,value:e.type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),n("span",pl,[t(g,{size:"default",clearable:"",placeholder:"请输入要检索的内容","prefix-icon":f(We),modelValue:M.value,"onUpdate:modelValue":l[1]||(l[1]=e=>M.value=e)},null,8,["prefix-icon","modelValue"])]),n("span",ml,[t(u,{size:"default",icon:f(Xe),onClick:z},{default:o(()=>[s("刷新")]),_:1},8,["icon"])]),n("span",_l,[t(u,{size:"warning",icon:f(nl),onClick:l[2]||(l[2]=e=>oe(null,0))},{default:o(()=>[s("推送全局消息")]),_:1},8,["icon"])])]),t(K,{height:"550",stripe:"",border:"","default-sort":{prop:"date",order:"descending"},data:ve.value,style:{width:"100%"}},{default:o(()=>[t(c,{prop:"id",label:"ID",width:"60"}),t(c,{prop:"account",label:"账号",width:"120"}),t(c,{prop:"onlineCount",label:"token",width:"80"}),t(c,{prop:"phone",label:"手机号",width:"100"}),t(c,{sortable:"",prop:"login_time",label:"最后登录时间",width:"190"},{default:o(e=>[s(b(e.row.login_time&&f(x)(new Date(e.row.login_time))),1)]),_:1}),t(c,{prop:"join_time",label:"注册时间",width:"190"},{default:o(e=>[s(b(f(x)(new Date(e.row.join_time))),1)]),_:1}),t(c,{sortable:"",prop:"login_count",label:"登录次数"}),S.value===1?(m(),k(c,{key:0,prop:"open_time",label:"解封时间"},{default:o(e=>[s(b(e.row.open_time&&f(x)(new Date(e.row.open_time))),1)]),_:1})):$("",!0),t(c,{sortable:"",prop:"fileCount",label:"收集文件数"}),t(c,{label:"占用云空间",width:"200"},{default:o(({row:{resources:e,monthAgoSize:w,quarterAgoSize:ne,halfYearSize:se,id:Q}})=>[n("ul",fl,[n("li",null,"总大小:"+b(e),1),n("li",null,[s(" 一月前:"+b(w),1),e!=="0B"?(m(),k(u,{key:0,class:"clear-btn",onClick:ue=>J(Q,"month"),icon:f(X),circle:"",size:"small"},null,8,["onClick","icon"])):$("",!0)]),n("li",null,[s(" 三月前:"+b(ne),1),ne!=="0B"?(m(),k(u,{key:0,class:"clear-btn",onClick:ue=>J(Q,"quarter"),icon:f(X),circle:"",size:"small"},null,8,["onClick","icon"])):$("",!0)]),n("li",null,[s(" 半年前:"+b(se),1),se!=="0B"?(m(),k(u,{key:0,class:"clear-btn",onClick:ue=>J(Q,"half"),icon:f(X),circle:"",size:"small"},null,8,["onClick","icon"])):$("",!0)])])]),_:1}),t(c,{fixed:"right",label:"操作",width:"100"},{default:o(e=>[n("div",vl,[t(u,{onClick:w=>we(e.row.id,e.row.status,e.row.open_time),type:"primary",text:"",size:"small"},{default:o(()=>[s("修改状态")]),_:2},1032,["onClick"]),t(u,{onClick:w=>Ce(e.row.id),type:"primary",text:"",size:"small"},{default:o(()=>[s("重置密码")]),_:2},1032,["onClick"]),t(u,{onClick:w=>$e(e.row.id),type:"primary",text:"",size:"small"},{default:o(()=>[s("绑定手机号")]),_:2},1032,["onClick"]),t(u,{onClick:w=>oe(e.row.id),type:"warning",text:"",size:"small"},{default:o(()=>[s("发送消息")]),_:2},1032,["onClick"]),e.row.onlineCount!==0?(m(),k(u,{key:0,onClick:w=>ze(e.row.account),type:"danger",text:"",size:"small"},{default:o(()=>[s("一键下线")]),_:2},1032,["onClick"])):$("",!0)])]),_:1})]),_:1},8,["data"]),n("div",hl,[t(Se,{"current-page":N.value,onCurrentChange:he,background:"","page-count":fe.value,"page-sizes":[10,50,100,200],"page-size":P.value,onSizeChange:_e,total:W.value.length,layout:"total, sizes, prev, pager, next, jumper"},null,8,["current-page","page-count","page-size","total"])])]),t(j,{fullscreen:O.value,center:"",title:"消息推送",modelValue:R.value,"onUpdate:modelValue":l[5]||(l[5]=e=>R.value=e)},{footer:o(()=>[n("span",wl,[t(u,{onClick:l[4]||(l[4]=e=>R.value=!1)},{default:o(()=>[s("取 消")]),_:1}),t(u,{type:"primary",onClick:Ue},{default:o(()=>[s("确 定")]),_:1})])]),default:o(()=>[n("div",gl,[t(g,{modelValue:I.value,"onUpdate:modelValue":l[3]||(l[3]=e=>I.value=e),autosize:{minRows:6,maxRows:20},type:"textarea",placeholder:"输入要推送的消息,支持HTML内容(推荐使用mdnice 转 markdown 转html)"},null,8,["modelValue"])])]),_:1},8,["fullscreen","modelValue"]),t(j,{fullscreen:O.value,center:"",title:"状态修改",modelValue:T.value,"onUpdate:modelValue":l[9]||(l[9]=e=>T.value=e)},{footer:o(()=>[n("span",kl,[t(u,{onClick:l[8]||(l[8]=e=>T.value=!1)},{default:o(()=>[s("取 消")]),_:1}),t(u,{type:"primary",onClick:be},{default:o(()=>[s("确 定")]),_:1})])]),default:o(()=>[n("div",bl,[t(h,{modelValue:y.value,"onUpdate:modelValue":l[6]||(l[6]=e=>y.value=e),placeholder:"请选择新分类"},{default:o(()=>[(m(!0),A(re,null,ie(f(ge),e=>(m(),k(p,{key:e.type,label:e.label,value:e.type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),y.value===1?(m(),A("div",Cl,[t(Me,{editable:!1,modelValue:B.value,"onUpdate:modelValue":l[7]||(l[7]=e=>B.value=e),type:"datetime",placeholder:"点击设置解封日期"},null,8,["modelValue"])])):$("",!0)]),_:1},8,["fullscreen","modelValue"]),t(j,{fullscreen:O.value,center:"",title:"密码重置",modelValue:D.value,"onUpdate:modelValue":l[13]||(l[13]=e=>D.value=e)},{footer:o(()=>[n("span",yl,[t(u,{onClick:l[12]||(l[12]=e=>D.value=!1)},{default:o(()=>[s("取 消")]),_:1}),t(u,{type:"primary",onClick:Ve},{default:o(()=>[s("确 定")]),_:1})])]),default:o(()=>[n("div",Vl,[t(ae,{model:_,"label-width":"80px"},{default:o(()=>[t(H,{label:"新密码"},{default:o(()=>[t(g,{"show-word-limit":"",clearable:"",modelValue:_.pwd1,"onUpdate:modelValue":l[10]||(l[10]=e=>_.pwd1=e),placeholder:"请输入新密码",maxlength:"16",minlength:"6"},null,8,["modelValue"])]),_:1}),t(H,null,{default:o(()=>[t(g,{"show-word-limit":"",clearable:"",modelValue:_.pwd2,"onUpdate:modelValue":l[11]||(l[11]=e=>_.pwd2=e),placeholder:"请再次输入",maxlength:"16",minlength:"6"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},8,["fullscreen","modelValue"]),t(j,{fullscreen:O.value,center:"",title:"绑定手机号",modelValue:F.value,"onUpdate:modelValue":l[17]||(l[17]=e=>F.value=e)},{footer:o(()=>[n("span",$l,[t(u,{onClick:l[16]||(l[16]=e=>F.value=!1)},{default:o(()=>[s("取 消")]),_:1}),t(u,{type:"primary",onClick:Ee},{default:o(()=>[s("确 定")]),_:1})])]),default:o(()=>[n("div",xl,[t(ae,{model:d,"label-width":"60px"},{default:o(()=>[t(H,{label:"手机号"},{default:o(()=>[t(g,{"show-word-limit":"",clearable:"",modelValue:d.phone,"onUpdate:modelValue":l[14]||(l[14]=e=>d.phone=e),placeholder:"请输入手机号",maxlength:"11"},{append:o(()=>[t(u,{disabled:L.value!==0,onClick:ye},{default:o(()=>[s(b(G.value),1)]),_:1},8,["disabled"])]),_:1},8,["modelValue"])]),_:1}),t(H,null,{default:o(()=>[t(g,{"show-word-limit":"",clearable:"",modelValue:d.code,"onUpdate:modelValue":l[15]||(l[15]=e=>d.code=e),placeholder:"请输入验证码",maxlength:"4"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},8,["fullscreen","modelValue"])])}}});const Ol=Ie(El,[["__scopeId","data-v-0b1b911a"]]);export{Ol as default};
|
|
2
|
-
//# sourceMappingURL=index-98964915.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-98964915.js","sources":["../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/message.mjs","../../src/pages/dashboard/manage/user/index.vue"],"sourcesContent":["import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Message\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M128 224v512a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V224H128zm0-64h768a64 64 0 0 1 64 64v512a128 128 0 0 1-128 128H192A128 128 0 0 1 64 736V224a64 64 0 0 1 64-64z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M904 224 656.512 506.88a192 192 0 0 1-289.024 0L120 224h784zm-698.944 0 210.56 240.704a128 128 0 0 0 192.704 0L818.944 224H205.056z\"\n}, null, -1);\nconst _hoisted_4 = [\n _hoisted_2,\n _hoisted_3\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_4);\n}\nvar message = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { message as default };\n","<template>\n <div class=\"user\">\n <div class=\"panel\">\n <div class=\"p10 log-filter\">\n <span class=\"item\">\n <span class=\"label\">状态</span>\n <el-select\n v-model=\"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=\"refreshUsers\"\n >刷新</el-button\n >\n </span>\n <span class=\"item\">\n <el-button\n size=\"warning\"\n :icon=\"Message\"\n @click=\"sendMessage(null, 0)\"\n >推送全局消息</el-button\n >\n </span>\n </div>\n <el-table\n height=\"550\"\n stripe\n border\n :default-sort=\"{ prop: 'date', order: 'descending' }\"\n :data=\"pageUsers\"\n style=\"width: 100%\"\n >\n <el-table-column prop=\"id\" label=\"ID\" width=\"60\"></el-table-column>\n <el-table-column\n prop=\"account\"\n label=\"账号\"\n width=\"120\"\n ></el-table-column>\n <el-table-column prop=\"onlineCount\" label=\"token\" width=\"80\">\n </el-table-column>\n <el-table-column\n prop=\"phone\"\n label=\"手机号\"\n width=\"100\"\n ></el-table-column>\n <el-table-column\n sortable\n prop=\"login_time\"\n label=\"最后登录时间\"\n width=\"190\"\n >\n <template #default=\"scope\">{{\n scope.row.login_time && formatDate(new Date(scope.row.login_time))\n }}</template>\n </el-table-column>\n <el-table-column prop=\"join_time\" label=\"注册时间\" width=\"190\">\n <template #default=\"scope\">{{\n formatDate(new Date(scope.row.join_time))\n }}</template>\n </el-table-column>\n <el-table-column\n sortable\n prop=\"login_count\"\n label=\"登录次数\"\n ></el-table-column>\n <el-table-column\n prop=\"open_time\"\n label=\"解封时间\"\n v-if=\"filterLogType === 1\"\n >\n <template #default=\"scope\">{{\n scope.row.open_time && formatDate(new Date(scope.row.open_time))\n }}</template>\n </el-table-column>\n <el-table-column\n sortable\n prop=\"fileCount\"\n label=\"收集文件数\"\n ></el-table-column>\n <el-table-column label=\"占用云空间\" width=\"200\">\n <template\n #default=\"{\n row: { resources, monthAgoSize, quarterAgoSize, halfYearSize, id }\n }\"\n >\n <ul class=\"user-oss-info\">\n <li>总大小:{{ resources }}</li>\n <li>\n 一月前:{{ monthAgoSize\n }}<el-button\n v-if=\"resources !== '0B'\"\n class=\"clear-btn\"\n @click=\"handleClearFiles(id, 'month')\"\n :icon=\"DeleteFilled\"\n circle\n size=\"small\"\n ></el-button>\n </li>\n <li>\n 三月前:{{ quarterAgoSize\n }}<el-button\n v-if=\"quarterAgoSize !== '0B'\"\n class=\"clear-btn\"\n @click=\"handleClearFiles(id, 'quarter')\"\n :icon=\"DeleteFilled\"\n circle\n size=\"small\"\n ></el-button>\n </li>\n <li>\n 半年前:{{ halfYearSize\n }}<el-button\n v-if=\"halfYearSize !== '0B'\"\n class=\"clear-btn\"\n @click=\"handleClearFiles(id, 'half')\"\n :icon=\"DeleteFilled\"\n circle\n size=\"small\"\n ></el-button>\n </li>\n </ul>\n </template>\n </el-table-column>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"100\">\n <template #default=\"scope\">\n <div class=\"text-btn-list\">\n <el-button\n @click=\"\n handleChangeStatus(\n scope.row.id,\n scope.row.status,\n scope.row.open_time\n )\n \"\n type=\"primary\"\n text\n size=\"small\"\n >修改状态</el-button\n >\n <el-button\n @click=\"handleResetPassword(scope.row.id)\"\n type=\"primary\"\n text\n size=\"small\"\n >重置密码</el-button\n >\n <el-button\n @click=\"handleBindPhone(scope.row.id)\"\n type=\"primary\"\n text\n size=\"small\"\n >绑定手机号</el-button\n >\n <el-button\n @click=\"sendMessage(scope.row.id)\"\n type=\"warning\"\n text\n size=\"small\"\n >发送消息</el-button\n >\n <el-button\n v-if=\"scope.row.onlineCount !== 0\"\n @click=\"logout(scope.row.account)\"\n type=\"danger\"\n text\n size=\"small\"\n >一键下线</el-button\n >\n </div>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"flex fc p10\">\n <el-pagination\n :current-page=\"pageCurrent\"\n @current-change=\"handlePageChange\"\n background\n :page-count=\"pageCount\"\n :page-sizes=\"[10, 50, 100, 200]\"\n :page-size=\"pageSize\"\n @size-change=\"handleSizeChange\"\n :total=\"filterUsers.length\"\n layout=\"total, sizes, prev, pager, next, jumper\"\n ></el-pagination>\n </div>\n </div>\n <!-- 消息推送弹窗 -->\n <el-dialog\n :fullscreen=\"isMobile\"\n center\n title=\"消息推送\"\n v-model=\"showMessageDialog\"\n >\n <div class=\"tc\">\n <el-input\n v-model=\"pushMessageText\"\n :autosize=\"{ minRows: 6, maxRows: 20 }\"\n type=\"textarea\"\n placeholder=\"输入要推送的消息,支持HTML内容(推荐使用mdnice 转 markdown 转html)\"\n />\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showMessageDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"sureSendMessage\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n <!-- 用户状态修改弹窗 -->\n <el-dialog\n :fullscreen=\"isMobile\"\n center\n title=\"状态修改\"\n v-model=\"showUserStatusDialog\"\n >\n <div class=\"tc\">\n <el-select v-model=\"selectStatus\" placeholder=\"请选择新分类\">\n <el-option\n v-for=\"s in userStatusList\"\n :key=\"s.type\"\n :label=\"s.label\"\n :value=\"s.type\"\n ></el-option>\n </el-select>\n </div>\n <div style=\"margin-top: 10px\" class=\"tc\" v-if=\"selectStatus === 1\">\n <el-date-picker\n :editable=\"false\"\n v-model=\"openTime\"\n type=\"datetime\"\n placeholder=\"点击设置解封日期\"\n ></el-date-picker>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showUserStatusDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSaveStatus\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n\n <!-- 重置密码 -->\n <el-dialog\n :fullscreen=\"isMobile\"\n center\n title=\"密码重置\"\n v-model=\"showResetPasswordDialog\"\n >\n <div class=\"tc\">\n <el-form :model=\"pwdForm\" label-width=\"80px\">\n <el-form-item label=\"新密码\">\n <el-input\n show-word-limit\n clearable\n v-model=\"pwdForm.pwd1\"\n placeholder=\"请输入新密码\"\n maxlength=\"16\"\n minlength=\"6\"\n />\n </el-form-item>\n <el-form-item>\n <el-input\n show-word-limit\n clearable\n v-model=\"pwdForm.pwd2\"\n placeholder=\"请再次输入\"\n maxlength=\"16\"\n minlength=\"6\"\n />\n </el-form-item>\n </el-form>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showResetPasswordDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSavePassword\"\n >确 定</el-button\n >\n </span>\n </template>\n </el-dialog>\n <!-- 重绑定手机号 -->\n <el-dialog\n :fullscreen=\"isMobile\"\n center\n title=\"绑定手机号\"\n v-model=\"showPhoneDialog\"\n >\n <div class=\"tc\">\n <el-form :model=\"phoneForm\" label-width=\"60px\">\n <el-form-item label=\"手机号\">\n <el-input\n show-word-limit\n clearable\n v-model=\"phoneForm.phone\"\n placeholder=\"请输入手机号\"\n maxlength=\"11\"\n >\n <template #append>\n <!-- 获取验证码 -->\n <el-button :disabled=\"time !== 0\" @click=\"getCode\">{{\n codeText\n }}</el-button>\n </template>\n </el-input>\n </el-form-item>\n <el-form-item>\n <el-input\n show-word-limit\n clearable\n v-model=\"phoneForm.code\"\n placeholder=\"请输入验证码\"\n maxlength=\"4\"\n />\n </el-form-item>\n </el-form>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showPhoneDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSavePhone\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, onMounted, reactive, ref } from 'vue'\nimport { useStore } from 'vuex'\nimport { Search, DeleteFilled, Refresh, Message } from '@element-plus/icons-vue'\nimport { PublicApi, SuperUserApi } from '@/apis'\nimport { USER_STATUS } from '@/constants'\nimport { formatDate } from '@/utils/stringUtil'\nimport { rMobilePhone, rPassword, rVerCode } from '@/utils/regExp'\n\nconst $store = useStore()\n// 用户\nconst users: any[] = reactive([])\nconst refreshUsers = () => {\n SuperUserApi.getUserList().then((res) => {\n users.splice(0, users.length)\n const d = res.data.list\n users.push(...d)\n })\n}\n\n// 筛选用户状态\nconst filterLogType = ref(USER_STATUS.NORMAL)\nconst searchWord = ref('')\nconst logTypeList = reactive([\n {\n label: '正常',\n type: USER_STATUS.NORMAL\n },\n {\n label: '冻结',\n type: USER_STATUS.FREEZE\n },\n {\n label: '封禁',\n type: USER_STATUS.BAN\n }\n])\n\nconst filterUsers = computed(() =>\n users\n .filter((v) => v.status === filterLogType.value)\n .filter((v) => {\n const {\n id,\n account,\n phone,\n join_time,\n login_count,\n login_time,\n open_time\n } = v\n if (searchWord.value.length === 0) return true\n return `${id} ${account} ${phone} ${login_count} ${formatDate(\n open_time\n )} ${formatDate(login_time)} ${formatDate(join_time)}`.includes(\n searchWord.value\n )\n })\n)\n\n// 分页\nconst pageSize = ref(10)\nconst handleSizeChange = (v: number) => {\n pageSize.value = v\n}\nconst pageCount = computed(() => {\n const t = Math.ceil(filterUsers.value.length / pageSize.value)\n return t\n})\nconst pageCurrent = ref(1)\nconst pageUsers = computed(() => {\n const start = (pageCurrent.value - 1) * pageSize.value\n const end = pageCurrent.value * pageSize.value\n return filterUsers.value.slice(start, end)\n})\nconst handlePageChange = (idx: number) => {\n pageCurrent.value = idx\n}\n\n// 状态修改\nconst showUserStatusDialog = ref(false)\nconst selectUserId = ref(0)\nconst selectStatus = ref(USER_STATUS.NORMAL)\nconst userStatusList = logTypeList\nconst openTime = ref('')\nconst handleChangeStatus = (\n userId: number,\n status: USER_STATUS,\n oTime: string\n) => {\n selectUserId.value = userId\n selectStatus.value = status\n openTime.value = oTime\n showUserStatusDialog.value = true\n}\nconst handleSaveStatus = () => {\n const user = users.find((u) => u.id === selectUserId.value)\n if (selectStatus.value === USER_STATUS.FREEZE) {\n if (!openTime.value) {\n ElMessage.warning('请设置解冻时间')\n return\n }\n user.open_time = openTime.value\n } else {\n user.open_time = ''\n }\n user.status = selectStatus.value\n showUserStatusDialog.value = false\n SuperUserApi.updateUserStatus(user.id, user.status, user.open_time).then(\n () => {\n ElMessage.success('修改成功')\n }\n )\n}\n\n// 重置密码\nconst showResetPasswordDialog = ref(false)\nconst pwdForm = reactive({\n pwd1: '',\n pwd2: ''\n})\nconst handleResetPassword = (userId: number) => {\n selectUserId.value = userId\n showResetPasswordDialog.value = true\n pwdForm.pwd1 = ''\n pwdForm.pwd2 = ''\n}\n\nconst checkPwdForm = () => {\n if (!rPassword.test(pwdForm.pwd1)) {\n ElMessage.warning('密码格式不正确(6-16位 支持字母/数字/下划线)')\n return false\n }\n if (pwdForm.pwd1 !== pwdForm.pwd2) {\n ElMessage.warning('两次输入的密码不一致')\n return false\n }\n\n return true\n}\n\nconst handleSavePassword = () => {\n if (!checkPwdForm()) return\n ElMessageBox.confirm('此操作不可逆,请谨慎操作', '确定要重置用户的密码吗?', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n })\n .then(() => {\n SuperUserApi.resetPassword(selectUserId.value, pwdForm.pwd1).then(() => {\n ElMessage.success('重置成功')\n showResetPasswordDialog.value = false\n })\n })\n .catch(() => {\n //\n })\n}\n\n// 绑定手机号\nconst showPhoneDialog = ref(false)\nconst phoneForm = reactive({\n phone: '',\n code: ''\n})\nconst codeText = ref('获取验证码')\nconst time = ref(0)\nconst refreshCodeText = () => {\n if (time.value === 0) {\n codeText.value = '获取验证码'\n return\n }\n codeText.value = `${time.value}s`\n time.value -= 1\n setTimeout(refreshCodeText, 1000)\n}\nconst getCode = () => {\n if (!rMobilePhone.test(phoneForm.phone)) {\n ElMessage.warning('手机号格式不正确')\n return\n }\n // check是否可用\n PublicApi.checkPhone(phoneForm.phone)\n .then(() => {\n PublicApi.getCode(phoneForm.phone).then(() => {\n time.value = 120\n refreshCodeText()\n ElMessage.success('获取成功,请注意查看手机短信')\n })\n })\n .catch((err) => {\n const { code: c } = err\n const msg = '注册失败,未知错误'\n const options: any = {\n 1002: '手机号已被注册',\n 1006: '手机号格式不正确'\n }\n ElMessage.error(options[c] || msg)\n })\n}\nconst checkPhoneForm = () => {\n if (!rMobilePhone.test(phoneForm.phone)) {\n ElMessage.warning('手机号格式不正确')\n return false\n }\n if (!rVerCode.test(phoneForm.code)) {\n ElMessage.warning('验证码格式不正确')\n return false\n }\n\n return true\n}\nconst handleBindPhone = (id: number) => {\n selectUserId.value = id\n showPhoneDialog.value = true\n}\nconst handleSavePhone = async () => {\n if (!checkPhoneForm()) {\n return\n }\n // 调用API更新,验证码 不正确判断\n SuperUserApi.resetPhone(selectUserId.value, phoneForm.phone, phoneForm.code)\n .then(() => {\n ElMessage.success('绑定成功')\n showPhoneDialog.value = false\n phoneForm.code = ''\n phoneForm.phone = ''\n refreshUsers()\n })\n .catch((err) => {\n const { code: c } = err\n const msg = '绑定失败,未知错误'\n const options: any = {\n 1002: '手机号已被注册',\n 1003: '验证码不正确'\n }\n ElMessage.error(options[c] || msg)\n })\n}\n\nconst handleClearFiles = (\n userId: number,\n type: 'month' | 'quarter' | 'half'\n) => {\n const tipWords = {\n month: '一个月前',\n quarter: '三个月前',\n half: '半年前'\n }\n selectUserId.value = userId\n ElMessageBox.confirm('移除后这些文件将无法恢复,请谨慎操作', '删除前确认?', {\n confirmButtonText: `确认删除 ${tipWords[type]}文件`\n })\n .then(() => {\n SuperUserApi.clearOssFile(userId, type).then(() => {\n ElMessage.success('清理成功')\n })\n })\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n .catch(() => {})\n}\n\n// TODO: 0 global 1 user_push\nconst pushMessageType = ref(1)\nconst showMessageDialog = ref(false)\nconst pushMessageText = ref('')\nconst sendMessage = (id: number, type = 1) => {\n selectUserId.value = id\n pushMessageType.value = type\n showMessageDialog.value = true\n}\n\nconst sureSendMessage = () => {\n SuperUserApi.sendMessage(\n pushMessageText.value,\n pushMessageType.value,\n selectUserId.value\n ).then(() => {\n ElMessage.success('推送成功')\n // 推送成功\n pushMessageText.value = ''\n showMessageDialog.value = false\n })\n}\nconst logout = (account: string) => {\n SuperUserApi.logout(account).then(() => {\n ElMessage.success(`下线成功 ${account}`)\n refreshUsers()\n })\n}\n\nonMounted(() => {\n refreshUsers()\n})\nconst isMobile = computed(() => $store.getters['public/isMobile'])\n</script>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n\n .log-filter {\n justify-content: center;\n }\n}\n\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\n.log-filter {\n display: flex;\n flex-wrap: wrap;\n\n .item {\n margin-right: 10px;\n margin-bottom: 10px;\n\n .label {\n margin-right: 10px;\n font-size: 12px;\n }\n }\n}\n\n.text-btn-list {\n display: flex;\n flex-wrap: wrap;\n\n button {\n margin-left: 0;\n }\n}\n\n.user-oss-info {\n list-style: none;\n li {\n margin-bottom: 10px;\n }\n .clear-btn {\n margin-left: 10px;\n }\n}\n</style>\n"],"names":["_sfc_main","defineComponent","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_hoisted_4","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","message","_export_sfc","$store","useStore","users","reactive","refreshUsers","SuperUserApi","res","d","filterLogType","ref","USER_STATUS","searchWord","logTypeList","filterUsers","computed","v","id","account","phone","join_time","login_count","login_time","open_time","formatDate","pageSize","handleSizeChange","pageCount","pageCurrent","pageUsers","start","end","handlePageChange","idx","showUserStatusDialog","selectUserId","selectStatus","userStatusList","openTime","handleChangeStatus","userId","status","oTime","handleSaveStatus","user","u","ElMessage","showResetPasswordDialog","pwdForm","handleResetPassword","checkPwdForm","rPassword","handleSavePassword","ElMessageBox","showPhoneDialog","phoneForm","codeText","time","refreshCodeText","getCode","rMobilePhone","PublicApi","err","c","msg","options","checkPhoneForm","rVerCode","handleBindPhone","handleSavePhone","handleClearFiles","type","tipWords","pushMessageType","showMessageDialog","pushMessageText","sendMessage","sureSendMessage","logout","onMounted","isMobile"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{g as je,d as $e,f as o,c,a as s,h as Ae,O as v,u as He,a1 as Ge,Z as E,r as h,$ as Je,o as qe,aU as ge,E as u,bd as Ke,i as Ye,j as d,w as i,F,C as te,a6 as ae,t as k,S as y,a7 as ye,D as g,ae as se,a9 as we,bU as Ze,ab as W,a8 as Qe,ad as ke,y as Xe,x as et,bV as tt,aY as at,P as st,b as r,k as xe,a3 as lt,a_ as ot,s as nt,aW as be,v as it,I as rt,p as ut,e as dt,_ as ct}from"./index-62c7029f.js";import{v as pt}from"./el-loading-5d91bb6c.js";import{E as mt,a as vt}from"./el-progress-2fff98be.js";import{a as ft,E as _t}from"./el-form-item-f40006bf.js";import{T as S,E as ht}from"./tip-00ddf749.js";import{I as gt,L as yt}from"./index-34bd5929.js";import{E as wt}from"./index-17fa8fb7.js";import"./index-6d7ac779.js";import"./isEqual-9c466456.js";import"./el-dialog-463960e0.js";import"./el-select-7d894fd0.js";import"./validator-853854a1.js";import"./aria-bc8e8b0f.js";const kt=$e({name:"UploadFilled"}),xt={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},bt=s("path",{fill:"currentColor",d:"M544 864V672h128L512 480 352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0 1 64 624c0-123.136 93.12-223.488 212.608-237.248A239.808 239.808 0 0 1 512 192a239.872 239.872 0 0 1 235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 0 1-240 240c-5.376 0-10.56-1.28-16-1.6v1.6H544z"},null,-1),$t=[bt];function Nt(V,le,A,oe,ne,M){return o(),c("svg",xt,$t)}var Et=je(kt,[["render",Nt]]);const z=V=>(ut("data-v-d3f704e9"),V=V(),dt(),V),Ft={class:"task-panel"},St={class:"pc-nav"},zt={class:"nav"},Ct={class:"logo"},Tt=z(()=>s("img",{style:{height:"40px",width:"170px"},src:"https://img.cdn.sugarat.top/easypicker/EasyPicker.png",alt:"logo"},null,-1)),Ut=["onClick"],It={key:0,"element-loading-text":"Loading...",class:"panel tc"},Lt={class:"name"},Vt={class:"tip-wrapper"},Mt={class:"ddl"},Dt={key:0},Bt={key:3},Pt={class:"infos"},Rt={key:0},Wt={class:"infos"},Ot=z(()=>s("div",{class:"el-upload__text"},[r(" 将文件拖于此处 or "),s("em",null,"直接选择文件")],-1)),jt={class:"p10"},At={class:"p10"},Ht={class:"p10 option-tips"},Gt={style:{color:"red"}},Jt={style:{color:"red"}},qt=z(()=>s("br",null,null,-1)),Kt=z(()=>s("br",null,null,-1)),Yt=z(()=>s("br",null,null,-1)),Zt=z(()=>s("strong",null,"选择大文件后需要等待一会儿才展示处理",-1)),Qt=z(()=>s("br",null,null,-1)),Xt={class:"withdraw"},ea={key:1,class:"panel tc"},ta={class:"name"},aa={style:{"padding-top":"20px"}},sa=$e({__name:"index",setup(V){const le=Ae(),A=v(()=>le.getters["public/isMobile"]),oe=He(),ne=Ge(),M=E([{title:"我也要收集",path:"https://docs.ep.sugarat.top/"}]),Ne=t=>{if(M[t].path.startsWith("http")){window.location.href=M[t].path;return}oe.push({path:M[t].path})},C=E({name:"",category:""}),l=E({bindField:""}),f=v(()=>ot(l.format)),p=h(""),O=h(0),D=v(()=>O.value<=0),Ee=v(()=>{let t=~~(O.value/1e3),e=~~(t/(60*60));const a=~~(e/24);e%=24;const n=~~(t%3600/60);return t%=60,"剩余".concat(a,"天").concat(e,"时").concat(n,"分").concat(t,"秒")}),H=(t=!0)=>{if(l!=null&&l.ddl){const e=new Date(l.ddl);O.value=e.getTime()-Date.now()}else O.value=0;t&&setTimeout(()=>{H()},1e3)},T=v(()=>{if(l!=null&&l.ddl){const t=new Date(l.ddl);return nt(t)}return""}),_=E([]),$=h([]),G=h(),J=v(()=>$.value.filter(t=>t.status==="uploading").length>0),Fe=t=>t.status==="uploading"||t.status==="success"?wt.confirm("不影响已经上传成功的,正在上传的将取消上传","确定从列表移除文件吗?").then(()=>(t.status==="uploading"&&(u.info("取消".concat(t.name,"的上传")),t.subscription.unsubscribe()),!0)).catch(()=>!1):!0,q=v(()=>_.every(t=>t.value)),U=v(()=>l.bindField.trim()||"姓名"),ie=v(()=>_.find(t=>t.text===U.value)),Se=v(()=>l.people&&!ie.value),x=E({peopleName:""}),re=(t,e,a)=>{if(!e){const n="请输入".concat(U.value);a(new Error(n)),u.error(n);return}be.checkPeopleIsExist(p.value,e).then(n=>{n.data.exist||u.error("你不在此次提交名单中,如有疑问请联系管理员"),a(n.data.exist?void 0:new Error("你不在此次提交名单中,如有疑问请联系管理员"))})},ue=h(),ze=E({peopleName:[{validator:re,trigger:"blur"}]}),K=()=>{var t;if(ie.value){const e=(t=_.find(a=>a.text===U.value))==null?void 0:t.value;return x.peopleName=e||"",new Promise(a=>{re(null,e,a)}).then(a=>!a)}return ue.value.validate(e=>e)},Ce=()=>{const t=$.value;for(const e of t)if(!e.md5)u.info("文件(".concat(e.name,")的唯一指纹还在计算中,再等待一会儿再点击上传")),setTimeout(()=>{u.info("文件越大计算时间越长(1G通常需要20s)")},100);else if(e.status==="ready"){e.status="uploading";let{name:a}=e;const n=a;l.rewrite&&(a=_.map(P=>P.value).join(f.value.splitChar||"-")+se(a)),a=tt(a);const X="easypicker2/".concat(p.value,"/").concat(e.md5,"/").concat(a);W.getUploadToken().then(P=>{at(P.data.token,e.raw,X,{success(R){const{fsize:j}=R;W.addFile({originName:n,name:a,taskKey:p.value,taskName:C.name,size:j,hash:e.md5,info:JSON.stringify(_),people:x.peopleName}).then(()=>{e.status="success",u.success("文件:".concat(e.name,"提交成功")),l.people&&be.updatePeopleStatus(p.value,a,x.peopleName,e.md5)})},process(R,j,ee){e.percentage=Math.floor(R),e.subscription=ee}})})}},Te=async()=>{if(!q.value){u.warning("请先完成必要信息的填写");return}l.people&&!await K()||Ce()},Ue=v(()=>{for(const t of $.value)if(t.status==="ready")return!0;return!1}),Ie=v(()=>{for(const t of $.value)if(["success","ready"].includes(t.status))return!0;return!1}),I=h(0),Le=t=>{const{name:e}=t;if(f.value.format.length&&f.value.status){const a=se(e);if(!f.value.format.find(n=>a.endsWith(n))){u.error("".concat(e," 格式不符合要球")),G.value.handleRemove(t);return}}if(f.value.size&&f.value.size<t.size){u.error("".concat(e," 大小").concat(we(t.size)," 不符合要求")),G.value.handleRemove(t);return}I.value+=1,Ze(t.raw).then(a=>{t.md5=a,I.value-=1})},de=v(()=>f.value.limit||10),Ve=()=>{u.warning("一次提交最多只能选择".concat(de.value,"个文件,请移除已经上传成功的或刷新页面"))},Y=h(!1),ce=h(""),Me=()=>{const t=$.value;for(const e of t)if(!e.md5)u.info("文件(".concat(e.name,")的唯一指纹还在计算中,再等待一会儿再点击上传")),setTimeout(()=>{u.info("文件越大计算时间越长(1G通常需要20s)")},100);else if(!["fail","uploading"].includes(e.status)){let{name:a}=e;l.rewrite&&(a=_.map(n=>n.value).join(f.value.splitChar||"-")+se(a)),W.withdrawFile({taskKey:p.value,taskName:C.name,filename:a,hash:e.md5,info:JSON.stringify(_),peopleName:x.peopleName}).then(()=>{u.success("文件:".concat(e.name,"撤回成功")),e.name+=" - (已撤回 ✅ )",e.status="fail"}).catch(()=>{u.error("撤回失败: 没有文件:".concat(e.name,"对应提交记录"))})}},pe=()=>{W.getTemplateUrl(l.template,p.value).then(t=>{Y.value=!0;const{link:e}=t.data;ce.value=e,Qe(e,l.template)}).catch(()=>{u.warning("文件已从服务器上移除,请联系管理员重新上传")})},B=h(!1),De=async()=>{if(!q.value){u.warning("请先完成必要信息的填写");return}l.people&&!await K()||Me()},Be=async()=>{if(!q.value){u.warning("请先完成必要信息的填写,需和提交时信息完全一致");return}l.people&&!await K()||W.checkSubmitStatus(p.value,_,x.peopleName).then(t=>{t.data.isSubmit?u.success("已经提交过啦"):u.warning("还未提交过哟")})},Z=h(!1),Q=h(!1),me=(t=[],e=[])=>t.length!==e.length?!1:t.every((a,n)=>a.type===e[n].type&&a.text===e[n].text&&me(a.children,e[n].children)),ve=(t=!1)=>{ge.getTaskMoreInfo(p.value).then(e=>{Object.assign(l,e.data),me(_,ke(l.info))||(_.splice(0,_.length),_.push(...ke(l.info)),t&&u.success("表单信息有更新")),H(!1),Z.value=!1})},fe=()=>{Q.value=!0},_e=()=>{Q.value&&!J.value&&(Q.value=!1,ve(!0))},Pe=v(()=>D.value?T.value:T.value+Ee.value),N=E({text:"",imgs:[]}),w=h([]);return Je(()=>l.tip,()=>{try{const t=JSON.parse(l.tip);N.imgs=t.imgs,N.text=t.text||"",w.value=N.imgs.map(e=>({...e,url:"https://img.cdn.sugarat.top/mdImg/MTY3NzkxMDI1NTU1Nw==20140524124237518.gif"})),w.value.length&&st.getTipImageUrl(p.value,w.value.map(e=>({uid:e.uid,name:e.name}))).then(e=>{e.data.forEach((a,n)=>{w.value[n].url=a.cover,Object.assign(w.value[n],{preview:a.preview})})})}catch(t){N.text="",N.imgs=[],w.value=[]}}),qe(()=>{p.value=ne.params.key,p.value&&(Z.value=!0,ge.getTaskInfo(p.value).then(t=>{Object.assign(C,t.data)}).catch(t=>{t.code===4001&&(u.error("任务不存在"),p.value="",C.name="任务不存在")}),ve(),H()),window.addEventListener("blur",fe),window.addEventListener("focus",_e)}),Ke(()=>{window.removeEventListener("blur",fe),window.removeEventListener("focus",_e)}),(t,e)=>{const a=Ye("router-link"),n=Xe,X=ht,P=vt,R=it,j=_t,ee=ft,b=et,Re=rt,We=mt,Oe=pt;return o(),c("div",Ft,[s("div",St,[s("div",zt,[s("div",Ct,[d(a,{to:"/"},{default:i(()=>[Tt]),_:1})]),s("nav",null,[(o(!0),c(F,null,te(M,(m,L)=>(o(),c("div",{class:"nav-item",key:L,onClick:he=>Ne(L)},k(m.title),9,Ut))),128))])])]),p.value?ae((o(),c("div",It,[s("h1",Lt,k(C.name),1),N.text&&(!T.value||!D.value)?(o(),c(F,{key:0},[d(n,null,{default:i(()=>[r("⚠️ 注意事项 ⚠️")]),_:1}),d(S,null,{default:i(()=>[s("div",Vt,[(o(!0),c(F,null,te(N.text.split("\n"),(m,L)=>(o(),c("p",{key:L},k(m.replace(/\s/g," ")),1))),128))])]),_:1})],64)):y("",!0),w.value.length&&(!T.value||!D.value)?(o(!0),c(F,{key:1},te(w.value,(m,L)=>(o(),g(X,{"hide-on-click-modal":"",key:m.uid,style:{width:"100px",height:"100px",margin:"10px"},src:m.url,"zoom-rate":1.2,"preview-src-list":w.value.map(he=>he.preview),"initial-index":L,fit:"contain"},null,8,["src","preview-src-list","initial-index"]))),128)):y("",!0),T.value?(o(),c(F,{key:2},[d(n,null,{default:i(()=>[r("截止时间")]),_:1}),s("h2",Mt,k(Pe.value),1),D.value?(o(),c("div",Dt,[d(P,{description:"已经结束啦!"})])):y("",!0)],64)):y("",!0),!T.value||!D.value?(o(),c("div",Bt,[d(n,null,{default:i(()=>[r("必要信息填写")]),_:1}),s("div",Pt,[ae(s("div",null,[d(S,null,{default:i(()=>[r("“"+k(U.value)+"”在参与名单里才能正常提交",1)]),_:1})],512),[[ye,l.people]]),Se.value?(o(),c("div",Rt,[s("div",Wt,[d(ee,{ref_key:"validModalRef",ref:ue,rules:ze,"status-icon":"",model:x,disabled:J.value,"label-position":"top"},{default:i(()=>[d(j,{prop:"peopleName",label:U.value},{default:i(()=>[d(R,{maxlength:14,clearable:"","show-word-limit":"",placeholder:"请输入 ".concat(U.value),modelValue:x.peopleName,"onUpdate:modelValue":e[0]||(e[0]=m=>x.peopleName=m)},null,8,["placeholder","modelValue"])]),_:1},8,["label"])]),_:1},8,["rules","model","disabled"])])])):y("",!0),d(gt,{infos:_,disabled:J.value},null,8,["infos","disabled"])]),d(We,{style:{"max-width":"400px",margin:"0 auto"},drag:!A.value,action:"",ref_key:"fileUpload",ref:G,"on-change":Le,"before-remove":Fe,"on-exceed":Ve,"auto-upload":!1,multiple:"",limit:de.value,"file-list":$.value,"onUpdate:fileList":e[1]||(e[1]=m=>$.value=m)},{tip:i(()=>[ae(s("div",jt,[d(S,null,{default:i(()=>[r("还有 "+k(I.value)+" 个文件正在生成校验信息,请稍等(1G通常需要20s)",1)]),_:1})],512),[[ye,!!I.value]])]),default:i(()=>[A.value?(o(),g(b,{key:0,type:"primary"},{default:i(()=>[r("选择文件")]),_:1})):(o(),c(F,{key:1},[d(Re,{class:"el-icon--upload"},{default:i(()=>[d(xe(Et))]),_:1}),Ot],64))]),_:1},8,["drag","limit","file-list"]),s("div",At,[B.value?(o(),g(b,{key:0,size:"default",onClick:De,type:"warning",disabled:!Ie.value||!!I.value},{default:i(()=>[r("一键撤回")]),_:1},8,["disabled"])):(o(),g(b,{key:1,size:"default",onClick:Te,type:"success",disabled:!Ue.value||!!I.value},{default:i(()=>[r("提交文件")]),_:1},8,["disabled"])),d(b,{onClick:Be,size:"default"},{default:i(()=>[r("查询提交情况")]),_:1})]),s("div",Ht,[f.value.status&&f.value.format.length?(o(),g(S,{key:0},{default:i(()=>[r("限制格式为: "),s("span",Gt,k(f.value.format.join(", ")),1)]),_:1})):y("",!0),f.value.size?(o(),g(S,{key:1},{default:i(()=>[r("限制文件大小不超过: "),s("span",Jt,k(xe(we)(f.value.size)),1)]),_:1})):y("",!0),B.value?(o(),g(S,{key:2},{default:i(()=>[r("① 须保证选择的文件与提交时的文件一致"),qt,r(" ② 填写表单信息一致 "),Kt,r(" ③ 完全一模一样的文件的提交记录(内容md5+命名),将会一次性全部撤回")]),_:1})):(o(),g(S,{key:3},{default:i(()=>[r("① 选择完文件,点击 ”提交文件“即可 "),Yt,r(" ② "),Zt,l.template?(o(),c(F,{key:0},[Qt,r(" ③ "),s("strong",null,[d(b,{type:"primary",text:"",style:{color:"#85ce61"},size:"small",onClick:pe},{default:i(()=>[r("右下角可 “查看提交示例” ")]),_:1})])],64)):y("",!0)]),_:1}))]),s("div",Xt,[l.template?(o(),g(b,{key:0,type:"primary",text:"",style:{color:"#85ce61"},size:"small",onClick:pe},{default:i(()=>[r("查看提交示例")]),_:1})):y("",!0),B.value?(o(),g(b,{key:1,onClick:e[2]||(e[2]=m=>B.value=!1),size:"small",type:"primary",text:""},{default:i(()=>[r("正常提交")]),_:1})):(o(),g(b,{key:2,size:"small",onClick:e[3]||(e[3]=m=>B.value=!0),type:"primary",text:""},{default:i(()=>[r("我要撤回")]),_:1}))])])):y("",!0)])),[[Oe,Z.value]]):(o(),c("div",ea,[s("h1",ta,k(C.name),1)])),d(yt,{value:Y.value,"onUpdate:value":e[4]||(e[4]=m=>Y.value=m),title:"示例文件下载链接",link:ce.value},null,8,["value","link"]),s("div",aa,[d(lt,{type:"task"})])])}}});const ha=ct(sa,[["__scopeId","data-v-d3f704e9"]]);export{ha as default};
|
|
2
|
-
//# sourceMappingURL=index-b0a4c236.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-b0a4c236.js","sources":["../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/upload-filled.mjs","../../src/pages/task/index.vue"],"sourcesContent":["import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"UploadFilled\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M544 864V672h128L512 480 352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0 1 64 624c0-123.136 93.12-223.488 212.608-237.248A239.808 239.808 0 0 1 512 192a239.872 239.872 0 0 1 235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 0 1-240 240c-5.376 0-10.56-1.28-16-1.6v1.6H544z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar uploadFilled = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { uploadFilled as default };\n","<template>\n <div class=\"task-panel\">\n <div class=\"pc-nav\">\n <div class=\"nav\">\n <!-- LOGO -->\n <div class=\"logo\">\n <router-link to=\"/\">\n <img\n style=\"height: 40px; width: 170px\"\n src=\"https://img.cdn.sugarat.top/easypicker/EasyPicker.png\"\n alt=\"logo\"\n />\n </router-link>\n </div>\n <nav>\n <div\n class=\"nav-item\"\n v-for=\"(n, idx) in pcNavs\"\n :key=\"idx\"\n @click=\"handleNav(idx)\"\n >\n {{ n.title }}\n </div>\n </nav>\n </div>\n </div>\n <!-- 有效 -->\n <div\n v-loading=\"isLoadingData\"\n element-loading-text=\"Loading...\"\n class=\"panel tc\"\n v-if=\"k\"\n >\n <!-- 任务名 -->\n <h1 class=\"name\">\n {{ taskInfo.name }}\n </h1>\n <!-- 提示信息 -->\n <!-- 时间截止了也不再展示 -->\n <template v-if=\"tipData.text && (ddlStr ? !isOver : true)\">\n <el-divider>⚠️ 注意事项 ⚠️</el-divider>\n <Tip>\n <div class=\"tip-wrapper\">\n <p v-for=\"(t, i) in tipData.text.split('\\n')\" :key=\"i\">\n {{ t.replace(/\\s/g, ' ') }}\n </p>\n </div>\n </Tip>\n </template>\n <template v-if=\"imageList.length && (ddlStr ? !isOver : true)\">\n <el-image\n hide-on-click-modal\n v-for=\"(img, idx) in imageList\"\n :key=\"img.uid\"\n style=\"width: 100px; height: 100px; margin: 10px\"\n :src=\"img.url\"\n :zoom-rate=\"1.2\"\n :preview-src-list=\"imageList.map((v) => v.preview)\"\n :initial-index=\"idx\"\n fit=\"contain\"\n />\n </template>\n <!-- 截止时间字符串 -->\n <template v-if=\"ddlStr\">\n <el-divider>截止时间</el-divider>\n <h2 class=\"ddl\">\n {{ timeInfo }}\n </h2>\n <div v-if=\"isOver\">\n <el-empty description=\"已经结束啦!\"> </el-empty>\n </div>\n </template>\n <!-- 未设置ddl 或者 设置了还未结束 -->\n <div v-if=\"!ddlStr || !isOver\">\n <el-divider>必要信息填写</el-divider>\n <div class=\"infos\">\n <div v-show=\"taskMoreInfo.people\">\n <Tip>“{{ limitBindField }}”在参与名单里才能正常提交</Tip>\n </div>\n <div v-if=\"showValidForm\">\n <div class=\"infos\">\n <el-form\n ref=\"validModalRef\"\n :rules=\"validModalRules\"\n status-icon\n :model=\"validModal\"\n :disabled=\"disableForm\"\n label-position=\"top\"\n >\n <el-form-item prop=\"peopleName\" :label=\"limitBindField\">\n <el-input\n :maxlength=\"14\"\n clearable\n show-word-limit\n :placeholder=\"`请输入 ${limitBindField}`\"\n v-model=\"validModal.peopleName\"\n ></el-input>\n </el-form-item>\n </el-form>\n </div>\n </div>\n <InfosForm :infos=\"infos\" :disabled=\"disableForm\"></InfosForm>\n </div>\n <el-upload\n style=\"max-width: 400px; margin: 0 auto\"\n :drag=\"!isMobile\"\n action=\"\"\n ref=\"fileUpload\"\n :on-change=\"handleChangeFile\"\n :before-remove=\"handleRemoveFile\"\n :on-exceed=\"handleExceed\"\n :auto-upload=\"false\"\n multiple\n :limit=\"limitUploadCount\"\n v-model:file-list=\"fileList\"\n >\n <el-button v-if=\"isMobile\" type=\"primary\">选择文件</el-button>\n <template v-else>\n <el-icon class=\"el-icon--upload\">\n <upload-filled />\n </el-icon>\n <div class=\"el-upload__text\">\n 将文件拖于此处 or <em>直接选择文件</em>\n </div>\n </template>\n <template #tip>\n <div class=\"p10\" v-show=\"!!calculateMd5Count\">\n <tip\n >还有\n {{ calculateMd5Count }}\n 个文件正在生成校验信息,请稍等(1G通常需要20s)</tip\n >\n </div>\n </template>\n </el-upload>\n <div class=\"p10\">\n <el-button\n v-if=\"isWithdraw\"\n size=\"default\"\n @click=\"startWithdraw\"\n type=\"warning\"\n :disabled=\"!allowWithdraw || !!calculateMd5Count\"\n >一键撤回</el-button\n >\n <el-button\n v-else\n size=\"default\"\n @click=\"submitUpload\"\n type=\"success\"\n :disabled=\"!allowUpload || !!calculateMd5Count\"\n >提交文件</el-button\n >\n <el-button @click=\"checkSubmitStatus\" size=\"default\"\n >查询提交情况</el-button\n >\n </div>\n <!-- 提示信息 -->\n <div class=\"p10 option-tips\">\n <tip v-if=\"formatData.status && formatData.format.length\"\n >限制格式为:\n <span style=\"color: red\">{{\n formatData.format.join(', ')\n }}</span></tip\n >\n <tip v-if=\"formatData.size\"\n >限制文件大小不超过:\n <span style=\"color: red\">{{\n formatSize(formatData.size)\n }}</span></tip\n >\n <template v-if=\"isWithdraw\">\n <tip\n >① 须保证选择的文件与提交时的文件一致<br />\n ② 填写表单信息一致 <br />\n ③\n 完全一模一样的文件的提交记录(内容md5+命名),将会一次性全部撤回</tip\n >\n </template>\n <template v-else>\n <tip\n >① 选择完文件,点击 ”提交文件“即可 <br />\n ② <strong>选择大文件后需要等待一会儿才展示处理</strong>\n <template v-if=\"taskMoreInfo.template\"\n ><br />\n ③\n <strong>\n <el-button\n type=\"primary\"\n text\n style=\"color: #85ce61\"\n size=\"small\"\n @click=\"downloadTemplate\"\n >右下角可 “查看提交示例”\n </el-button>\n </strong></template\n >\n </tip>\n </template>\n </div>\n <div class=\"withdraw\">\n <el-button\n type=\"primary\"\n text\n style=\"color: #85ce61\"\n v-if=\"taskMoreInfo.template\"\n size=\"small\"\n @click=\"downloadTemplate\"\n >查看提交示例</el-button\n >\n <el-button\n v-if=\"isWithdraw\"\n @click=\"isWithdraw = false\"\n size=\"small\"\n type=\"primary\"\n text\n >正常提交</el-button\n >\n <el-button\n v-else\n size=\"small\"\n @click=\"isWithdraw = true\"\n type=\"primary\"\n text\n >我要撤回</el-button\n >\n </div>\n </div>\n </div>\n <!-- 无效任务 -->\n <div class=\"panel tc\" v-else>\n <h1 class=\"name\">\n {{ taskInfo.name }}\n </h1>\n </div>\n <LinkDialog\n v-model:value=\"showLinkModel\"\n title=\"示例文件下载链接\"\n :link=\"templateLink\"\n ></LinkDialog>\n <div style=\"padding-top: 20px\">\n <home-footer type=\"task\"></home-footer>\n </div>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport type { UploadUserFile, UploadInstance, FormInstance } from 'element-plus'\nimport { computed, onMounted, onUnmounted, reactive, ref, watch } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport HomeFooter from '@components/HomeFooter/index.vue'\nimport LinkDialog from '@components/linkDialog.vue'\nimport { UploadFilled } from '@element-plus/icons-vue'\nimport { useStore } from 'vuex'\nimport {\n formatDate,\n formatSize,\n getFileMd5Hash,\n getFileSuffix,\n normalizeFileName,\n parseFileFormat,\n parseInfo\n} from '@/utils/stringUtil'\nimport { downLoadByUrl, qiniuUpload } from '@/utils/networkUtil'\nimport { FileApi, PeopleApi, PublicApi, TaskApi } from '@/apis'\nimport Tip from '../dashboard/tasks/components/infoPanel/tip.vue'\nimport InfosForm from '@/components/InfosForm/index.vue'\n\nconst $store = useStore()\nconst isMobile = computed(() => $store.getters['public/isMobile'])\n// 顶部导航\nconst $router = useRouter()\nconst $route = useRoute()\nconst pcNavs = reactive([\n {\n title: '我也要收集',\n path: 'https://docs.ep.sugarat.top/'\n }\n])\nconst handleNav = (idx: number) => {\n if (pcNavs[idx].path.startsWith('http')) {\n window.location.href = pcNavs[idx].path\n return\n }\n $router.push({\n path: pcNavs[idx].path\n })\n}\n\n// 任务基本信息展示\nconst taskInfo = reactive<TaskApiTypes.TaskInfo>({\n name: '',\n category: ''\n})\nconst taskMoreInfo = reactive<Partial<TaskApiTypes.TaskInfo>>({\n bindField: ''\n})\nconst formatData = computed(() => parseFileFormat(taskMoreInfo.format))\nconst k = ref('')\n\n// 用于展示截止日期\nconst waitTime = ref(0)\n// 判断是否结束\nconst isOver = computed(() => waitTime.value <= 0)\nconst waitTimeStr = computed(() => {\n let seconds = ~~(waitTime.value / 1000)\n let hour = ~~(seconds / (60 * 60))\n const day = ~~(hour / 24)\n hour %= 24\n const minute = ~~((seconds % 3600) / 60)\n seconds %= 60\n return `剩余${day}天${hour}时${minute}分${seconds}秒`\n})\nconst refreshWaitTime = (loop = true) => {\n if (taskMoreInfo?.ddl) {\n const date = new Date(taskMoreInfo.ddl)\n waitTime.value = date.getTime() - Date.now()\n } else {\n waitTime.value = 0\n }\n if (loop) {\n setTimeout(() => {\n refreshWaitTime()\n }, 1000)\n }\n}\nconst ddlStr = computed(() => {\n if (taskMoreInfo?.ddl) {\n const date = new Date(taskMoreInfo.ddl)\n return formatDate(date)\n }\n return ''\n})\n\n// 必填信息\nconst infos = reactive<InfoItem[]>([])\n\n// 文件上传部分\n\n// 文件上传\nconst fileList = ref<(UploadUserFile & { md5: string; subscription: any })[]>(\n []\n)\nconst fileUpload = ref<UploadInstance>()\nconst disableForm = computed(\n () => fileList.value.filter((item) => item.status === 'uploading').length > 0\n)\nconst handleRemoveFile: any = (file: any) => {\n if (file.status === 'uploading' || file.status === 'success') {\n return ElMessageBox.confirm(\n '不影响已经上传成功的,正在上传的将取消上传',\n '确定从列表移除文件吗?'\n )\n .then(() => {\n if (file.status === 'uploading') {\n ElMessage.info(`取消${file.name}的上传`)\n // 取消上传\n file.subscription.unsubscribe() // 取消上传\n }\n return true\n })\n .catch(() => false)\n }\n return true\n}\n\n// 校验表单填写\nconst isWriteFinish = computed(() => infos.every((item) => item.value))\n// 提交文件\n\nconst limitBindField = computed(() => {\n return taskMoreInfo.bindField.trim() || '姓名'\n})\n\n// 身份核验表单\nconst isSameFieldName = computed(() =>\n infos.find((v) => v.text === limitBindField.value)\n)\nconst showValidForm = computed(\n () => taskMoreInfo.people && !isSameFieldName.value\n)\nconst validModal = reactive({\n peopleName: ''\n})\n\nconst validatePeopleName = (rule: any, value: any, callback: any) => {\n if (!value) {\n const message = `请输入${limitBindField.value}`\n callback(new Error(message))\n ElMessage.error(message)\n return\n }\n // 异步校验\n PeopleApi.checkPeopleIsExist(k.value, value).then((res) => {\n if (!res.data.exist) {\n ElMessage.error('你不在此次提交名单中,如有疑问请联系管理员')\n }\n callback(\n res.data.exist\n ? undefined\n : new Error('你不在此次提交名单中,如有疑问请联系管理员')\n )\n })\n}\n\nconst validModalRef = ref<FormInstance>()\nconst validModalRules = reactive({\n peopleName: [{ validator: validatePeopleName, trigger: 'blur' }]\n})\nconst confirmPeopleName = () => {\n // 处理表单必填项含有 limitBindField 的情况\n if (isSameFieldName.value) {\n const value = infos.find((v) => v.text === limitBindField.value)?.value\n validModal.peopleName = value || ''\n return new Promise((resolve) => {\n validatePeopleName(null, value, resolve)\n }).then((v) => !v)\n }\n return validModalRef.value.validate((isValid: boolean) => isValid)\n}\n\nconst startUpload = () => {\n const uploadFiles = fileList.value\n for (const file of uploadFiles) {\n if (!file.md5) {\n ElMessage.info(\n `文件(${file.name})的唯一指纹还在计算中,再等待一会儿再点击上传`\n )\n setTimeout(() => {\n ElMessage.info('文件越大计算时间越长(1G通常需要20s)')\n }, 100)\n } else if (file.status === 'ready') {\n // 开始上传\n file.status = 'uploading'\n let { name } = file\n const originName = name\n // 如果开启了自动重命名,这里重命名一下\n if (taskMoreInfo.rewrite) {\n name =\n infos.map((v) => v.value).join(formatData.value.splitChar || '-') +\n getFileSuffix(name)\n }\n // 替换不合法的字符\n name = normalizeFileName(name)\n const key = `easypicker2/${k.value}/${file.md5}/${name}`\n\n FileApi.getUploadToken().then((res) => {\n qiniuUpload(res.data.token, file.raw, key, {\n success(data: any) {\n const { fsize } = data\n FileApi.addFile({\n originName,\n name,\n taskKey: k.value,\n taskName: taskInfo.name,\n size: fsize,\n hash: file.md5,\n info: JSON.stringify(infos),\n people: validModal.peopleName\n }).then(() => {\n file.status = 'success'\n ElMessage.success(`文件:${file.name}提交成功`)\n if (taskMoreInfo.people) {\n // 无感知更新一下\n PeopleApi.updatePeopleStatus(\n k.value,\n name,\n validModal.peopleName,\n file.md5\n )\n }\n })\n },\n process(per: number, data: any, subscription: any) {\n file.percentage = Math.floor(per)\n // 挂载取消上传的方法\n file.subscription = subscription\n }\n })\n })\n }\n }\n}\n\nconst submitUpload = async () => {\n if (!isWriteFinish.value) {\n ElMessage.warning('请先完成必要信息的填写')\n return\n }\n\n if (taskMoreInfo.people) {\n const isValid = await confirmPeopleName()\n if (!isValid) {\n return\n }\n }\n startUpload()\n}\n\n// 是否允许上传\nconst allowUpload = computed(() => {\n for (const file of fileList.value) {\n if (file.status === 'ready') {\n return true\n }\n }\n return false\n})\n\n// 是否允许撤回\nconst allowWithdraw = computed(() => {\n for (const file of fileList.value) {\n if (['success', 'ready'].includes(file.status)) {\n return true\n }\n }\n return false\n})\n\n// 添加文件\n// 正在计算MD5值的文件个数\nconst calculateMd5Count = ref(0)\nconst handleChangeFile = (file: any) => {\n // 校验文件后缀名\n const { name } = file\n if (formatData.value.format.length && formatData.value.status) {\n const suffix = getFileSuffix(name)\n if (!formatData.value.format.find((v) => suffix.endsWith(v))) {\n ElMessage.error(`${name} 格式不符合要球`)\n fileUpload.value.handleRemove(file)\n return\n }\n }\n\n // 校验文件大小\n if (formatData.value.size && formatData.value.size < file.size) {\n ElMessage.error(`${name} 大小${formatSize(file.size)} 不符合要求`)\n fileUpload.value.handleRemove(file)\n return\n }\n\n calculateMd5Count.value += 1\n // 计算md5 hash\n getFileMd5Hash(file.raw).then((str) => {\n file.md5 = str\n calculateMd5Count.value -= 1\n })\n}\n\nconst limitUploadCount = computed(() => formatData.value.limit || 10)\nconst handleExceed = () => {\n ElMessage.warning(\n `一次提交最多只能选择${limitUploadCount.value}个文件,请移除已经上传成功的或刷新页面`\n )\n}\nconst showLinkModel = ref(false)\nconst templateLink = ref('')\nconst runWithdraw = () => {\n const uploadFiles = fileList.value\n for (const file of uploadFiles) {\n if (!file.md5) {\n ElMessage.info(\n `文件(${file.name})的唯一指纹还在计算中,再等待一会儿再点击上传`\n )\n setTimeout(() => {\n ElMessage.info('文件越大计算时间越长(1G通常需要20s)')\n }, 100)\n } else if (!['fail', 'uploading'].includes(file.status)) {\n // 准备开始撤回\n let { name } = file\n\n // 如果开启了自动重命名,这里重命名一下\n if (taskMoreInfo.rewrite) {\n name =\n infos.map((v) => v.value).join(formatData.value.splitChar || '-') +\n getFileSuffix(name)\n }\n\n FileApi.withdrawFile({\n taskKey: k.value,\n taskName: taskInfo.name,\n filename: name,\n hash: file.md5,\n info: JSON.stringify(infos),\n peopleName: validModal.peopleName\n })\n .then(() => {\n ElMessage.success(`文件:${file.name}撤回成功`)\n file.name += ' - (已撤回 ✅ )'\n file.status = 'fail'\n })\n .catch(() => {\n ElMessage.error(`撤回失败: 没有文件:${file.name}对应提交记录`)\n })\n }\n }\n}\nconst downloadTemplate = () => {\n FileApi.getTemplateUrl(taskMoreInfo.template, k.value)\n .then((res) => {\n showLinkModel.value = true\n const { link } = res.data\n templateLink.value = link\n downLoadByUrl(link, taskMoreInfo.template)\n })\n .catch(() => {\n ElMessage.warning('文件已从服务器上移除,请联系管理员重新上传')\n })\n}\n\n// 撤回相关逻辑\nconst isWithdraw = ref(false)\nconst startWithdraw = async () => {\n // 校验表单填写\n if (!isWriteFinish.value) {\n ElMessage.warning('请先完成必要信息的填写')\n return\n }\n if (taskMoreInfo.people) {\n const isValid = await confirmPeopleName()\n if (!isValid) {\n return\n }\n }\n runWithdraw()\n}\n\n// 查询提交情况\nconst checkSubmitStatus = async () => {\n // 校验表单填写\n if (!isWriteFinish.value) {\n ElMessage.warning('请先完成必要信息的填写,需和提交时信息完全一致')\n return\n }\n // 卡控人员限制\n if (taskMoreInfo.people) {\n const isValid = await confirmPeopleName()\n if (!isValid) {\n return\n }\n }\n FileApi.checkSubmitStatus(k.value, infos, validModal.peopleName).then(\n (res) => {\n if (res.data.isSubmit) {\n ElMessage.success('已经提交过啦')\n } else {\n ElMessage.warning('还未提交过哟')\n }\n }\n )\n}\nconst isLoadingData = ref(false)\nconst readyRefresh = ref(false)\nconst isEqualInfos = (a: InfoItem[] = [], b: InfoItem[] = []) => {\n if (a.length !== b.length) {\n return false\n }\n return a.every(\n (v, i) =>\n v.type === b[i].type &&\n v.text === b[i].text &&\n isEqualInfos(v.children, b[i].children)\n )\n}\nconst refreshTaskMoreInfo = (hot = false) => {\n TaskApi.getTaskMoreInfo(k.value).then((res) => {\n Object.assign(taskMoreInfo, res.data)\n if (!isEqualInfos(infos, parseInfo(taskMoreInfo.info))) {\n infos.splice(0, infos.length)\n infos.push(...parseInfo(taskMoreInfo.info))\n if (hot) {\n ElMessage.success('表单信息有更新')\n }\n }\n refreshWaitTime(false)\n isLoadingData.value = false\n })\n}\nconst handleBlur = () => {\n readyRefresh.value = true\n}\nconst handleFocus = () => {\n if (readyRefresh.value && !disableForm.value) {\n readyRefresh.value = false\n refreshTaskMoreInfo(true)\n }\n}\n\n// 展示的时间提示文案\nconst timeInfo = computed(() => {\n if (!isOver.value) {\n return ddlStr.value + waitTimeStr.value\n }\n return ddlStr.value\n})\n\n// tipImage\nconst tipData = reactive<{\n text: string\n imgs: {\n uid: number\n name: string\n }[]\n}>({\n text: '',\n imgs: []\n})\nconst imageList = ref<\n { name: string; uid: number; preview?: string; url: string }[]\n>([])\n\nwatch(\n () => taskMoreInfo.tip,\n () => {\n // 初始化\n try {\n const parseData = JSON.parse(taskMoreInfo.tip)\n tipData.imgs = parseData.imgs\n tipData.text = parseData.text || ''\n imageList.value = tipData.imgs.map((v) => {\n return {\n ...v,\n url: 'https://img.cdn.sugarat.top/mdImg/MTY3NzkxMDI1NTU1Nw==20140524124237518.gif'\n }\n })\n if (imageList.value.length) {\n // 异步填充url\n PublicApi.getTipImageUrl(\n k.value,\n imageList.value.map((v) => ({\n uid: v.uid,\n name: v.name\n }))\n ).then((v) => {\n v.data.forEach((url, idx) => {\n imageList.value[idx].url = url.cover\n Object.assign(imageList.value[idx], {\n preview: url.preview\n })\n })\n })\n }\n } catch {\n tipData.text = ''\n tipData.imgs = []\n imageList.value = []\n }\n }\n)\nonMounted(() => {\n k.value = $route.params.key as string\n if (k.value) {\n isLoadingData.value = true\n TaskApi.getTaskInfo(k.value)\n .then((res) => {\n Object.assign(taskInfo, res.data)\n })\n .catch((err) => {\n if (err.code === 4001) {\n ElMessage.error('任务不存在')\n k.value = ''\n taskInfo.name = '任务不存在'\n }\n })\n refreshTaskMoreInfo()\n refreshWaitTime()\n }\n // 页面隐藏\n window.addEventListener('blur', handleBlur)\n\n // 页面展示\n window.addEventListener('focus', handleFocus)\n})\n\nonUnmounted(() => {\n // 页面隐藏\n window.removeEventListener('blur', handleBlur)\n // 页面展示\n window.removeEventListener('focus', handleFocus)\n})\n</script>\n<style scoped lang=\"scss\">\n.task-panel :deep(ul.el-upload-list) {\n border: 1px dashed #d4d4d4;\n padding: 10px;\n\n &::before {\n content: '此处展示选择文件列表';\n font-size: 12px;\n position: relative;\n bottom: 4px;\n }\n}\n\n.task-panel :deep(.el-upload-list__item-name) {\n display: block;\n overflow: hidden;\n max-width: 290px;\n text-overflow: ellipsis;\n word-break: keep-all;\n}\n\n.task-panel :deep(.is-ready .el-icon--close) {\n display: block;\n color: black;\n}\n\n.task-panel {\n background-color: #f3f6f8;\n padding-bottom: 1rem;\n position: relative;\n}\n\n.pc-nav {\n background-color: #fff;\n display: flex;\n padding: 10px;\n justify-content: space-between;\n align-items: center;\n\n .exit {\n cursor: pointer;\n }\n\n .nav {\n display: flex;\n\n nav {\n display: flex;\n align-items: center;\n\n .nav-item {\n font-size: 1rem;\n color: #595959;\n padding: 10px;\n cursor: pointer;\n\n &.active {\n color: #409eff !important;\n font-weight: 600;\n }\n }\n }\n\n .exit {\n color: #595959;\n }\n }\n\n .logo {\n width: 180px;\n margin: 0 10px;\n\n img {\n height: 40px;\n }\n }\n}\n\n.panel {\n max-width: 1024px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n\n .name {\n text-align: center;\n }\n\n .ddl {\n margin-top: 10px;\n color: #919191;\n font-size: 14px;\n }\n\n .infos {\n max-width: 460px;\n margin: auto;\n overflow: hidden;\n :deep(div.el-form-item > label) {\n font-weight: bold;\n &::before {\n content: '* ';\n color: red;\n }\n }\n }\n}\n\n.withdraw {\n text-align: right;\n}\n\n.tip-wrapper {\n line-height: 20px;\n text-align: left;\n word-break: break-all;\n // max-height: 100px;\n overflow: hidden;\n padding: 0 20px;\n color: #e6a23c;\n max-width: 320px;\n font-size: 14px;\n}\n</style>\n"],"names":["_sfc_main","defineComponent","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","uploadFilled","_export_sfc","$store","useStore","isMobile","computed","$router","useRouter","$route","useRoute","pcNavs","reactive","handleNav","idx","taskInfo","taskMoreInfo","formatData","parseFileFormat","k","ref","waitTime","isOver","waitTimeStr","seconds","hour","day","minute","refreshWaitTime","loop","date","ddlStr","formatDate","infos","fileList","fileUpload","disableForm","item","handleRemoveFile","file","ElMessageBox","ElMessage","isWriteFinish","limitBindField","isSameFieldName","v","showValidForm","validModal","validatePeopleName","rule","value","callback","message","PeopleApi","res","validModalRef","validModalRules","confirmPeopleName","_a","resolve","isValid","startUpload","uploadFiles","name","originName","getFileSuffix","normalizeFileName","key","FileApi","qiniuUpload","data","fsize","per","subscription","submitUpload","allowUpload","allowWithdraw","calculateMd5Count","handleChangeFile","suffix","formatSize","getFileMd5Hash","str","limitUploadCount","handleExceed","showLinkModel","templateLink","runWithdraw","downloadTemplate","link","downLoadByUrl","isWithdraw","startWithdraw","checkSubmitStatus","isLoadingData","readyRefresh","isEqualInfos","a","b","i","refreshTaskMoreInfo","hot","TaskApi","parseInfo","handleBlur","handleFocus","timeInfo","tipData","imageList","watch","parseData","PublicApi","url","e","onMounted","err","onUnmounted"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a4 as lt,g as Ae,d as Ce,f as r,c as y,a as s,h as at,a1 as ot,r as _,Z as H,O as C,a5 as Ne,o as nt,j as e,w as o,k as u,a6 as P,b as n,a7 as we,F as ye,C as ke,D as $,a8 as xe,E as c,s as F,a9 as K,aa as st,ab as L,x as it,v as rt,p as dt,e as ut,t as w,S as I,ac as ct,ad as pt,ae as mt,I as ft,af as _t,_ as vt}from"./index-62c7029f.js";import{v as ht}from"./el-loading-5d91bb6c.js";import{E as gt,a as wt}from"./el-form-item-f40006bf.js";import{E as yt}from"./el-dialog-463960e0.js";import{T as R,E as kt}from"./tip-00ddf749.js";import{E as xt,s as bt}from"./el-pagination-ffb99240.js";import{E as Ct,a as zt}from"./el-select-7d894fd0.js";import{E as Et,a as St}from"./el-table-column-22352e92.js";import{E as Vt}from"./el-switch-2eda0412.js";import{E as $t,a as Fe,b as It,c as Dt}from"./el-dropdown-item-7c33f4fa.js";import{L as Tt,I as Nt}from"./index-34bd5929.js";import{D as z,A as Le,f as be}from"./index-9e6bd406.js";import{E as Me}from"./index-17fa8fb7.js";import{r as Ft}from"./refresh-6ae903c0.js";import{d as Lt}from"./data-analysis-13490516.js";import"./isEqual-9c466456.js";import"./index-6d7ac779.js";import"./validator-853854a1.js";import"./aria-bc8e8b0f.js";function Mt(D,E,B=[]){return lt.post("/action/download/list",{pageSize:D,pageIndex:E,extraIds:B})}const At={getDownloadActions:Mt},Ut=Ce({name:"Download"}),Ot={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Ht=s("path",{fill:"currentColor",d:"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64zm384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64v450.304z"},null,-1),Pt=[Ht];function Rt(D,E,B,M,J,A){return r(),y("svg",Ot,Pt)}var Bt=Ae(Ut,[["render",Rt]]);const Jt=Ce({name:"Picture"}),qt={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},jt=s("path",{fill:"currentColor",d:"M160 160v704h704V160H160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32z"},null,-1),Wt=s("path",{fill:"currentColor",d:"M384 288q64 0 64 64t-64 64q-64 0-64-64t64-64zM185.408 876.992l-50.816-38.912L350.72 556.032a96 96 0 0 1 134.592-17.856l1.856 1.472 122.88 99.136a32 32 0 0 0 44.992-4.864l216-269.888 49.92 39.936-215.808 269.824-.256.32a96 96 0 0 1-135.04 14.464l-122.88-99.072-.64-.512a32 32 0 0 0-44.8 5.952L185.408 876.992z"},null,-1),Xt=[jt,Wt];function Zt(D,E,B,M,J,A){return r(),y("svg",qt,Xt)}var Gt=Ae(Jt,[["render",Zt]]);const fe=D=>(dt("data-v-7d8411d6"),D=D(),ut(),D),Kt={class:"files"},Qt={class:"panel header"},Yt={class:"item"},el=fe(()=>s("span",{class:"label"},"分类",-1)),tl={class:"item"},ll=fe(()=>s("span",{class:"label"},"任务",-1)),al={class:"item"},ol={class:"item"},nl={class:"panel"},sl={class:"export-btns flex fac"},il={class:"control-item"},rl={class:"control-item"},dl={class:"control-item"},ul={class:"control-item"},cl={class:"panel"},pl={"element-loading-text":"...",style:{"--el-loading-spinner-size":"20px"}},ml={class:"panel"},fl={key:0},_l={key:1},vl={key:2},hl={key:0},gl={key:1},wl={key:2},yl={key:3},kl={class:"flex fc"},xl={class:"panel"},bl=fe(()=>s("strong",null,[n("如果你觉得应用不错,"),s("a",{style:{color:"#409eff"},href:"http://docs.ep.sugarat.top/praise/index.html",target:"_blank",rel:"noopener noreferrer"},"请作者喝茶 🍵")],-1)),Cl={class:"imageDes"},zl=fe(()=>s("div",{class:"imageLoading"},"Loading...",-1)),El={class:"imageLoading"},Sl={class:"text-btns"},Vl={class:"panel flex fc"},$l=Ce({__name:"index",setup(D){const E=at(),B=ot(),M=_(!1),J=_(""),A=_(localStorage.getItem("ep-show-images")==="true"),Q=_(!0),Y=_(!1),se=_(!1),v=H({actions:[],pageSize:3,pageCount:0,pageCurrent:1,pageTotal:0,compressTask:[]}),q=()=>{const t=JSON.parse(localStorage.getItem("ep_compress_task")||"[]");v.compressTask=t,At.getDownloadActions(v.pageSize,v.pageCurrent,t.map(a=>a.id)).then(a=>{const{actions:i,sum:f}=a.data,d=!!i.find(p=>p.status===z.ARCHIVE);i.filter(p=>p.type===Le.Compress).forEach(p=>{const m=t.findIndex(b=>b.id===p.id);p.status===z.SUCCESS&&m!==-1&&(J.value=p.url,M.value=!0,xe(p.url),t.splice(m,1)),p.status===z.ARCHIVE&&m===-1&&t.push(p),p.status===z.FAIL&&m!==-1&&t.splice(m,1)}),v.compressTask=t,localStorage.setItem("ep_compress_task",JSON.stringify(t)),d&&setTimeout(q,1e3),v.pageTotal=f,v.actions=i,v.pageCount=Math.ceil(f/v.pageSize)})},Ue=t=>{v.pageCurrent=t,q()},ze=(t,a)=>{if(t.length===0){c.warning("表格中没有可导出的内容");return}const i=["提交时间","任务","文件名","大小"];Y.value&&i.push("原文件名"),Q.value&&i.push("姓名");const f=i.map(m=>({value:m,row:2})),d=t.reduce((m,b)=>(JSON.parse(b.info).forEach(U=>{m.includes(U.text)||m.push(U.text)}),m),[]);f.push({value:"提交信息",col:d.length});const p=t.map(m=>{const{date:b,task_name:U,name:ce,size:Z,people:g}=m,V=JSON.parse(m.info).reduce((G,T)=>(G[T.text]=T.value,G),{}),pe=d.map(G=>{var T;return(T=V[G])!=null?T:"-"}),O=[F(new Date(b)),U,ce,K(Z)];return Y.value&&O.push(m.origin_name||"-"),Q.value&&O.push(g||"-"),O.push(...pe),O});p.unshift(d),st(f,p,a||"数据导出_".concat(F(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx")),c.success("导出成功")},Oe=C(()=>E.state.category.categoryList),ee=_("all"),te=C(()=>E.state.task.taskList),S=_("all"),ie=C(()=>ee.value==="all"?te.value:(S.value="all",te.value.filter(t=>t.category===ee.value))),He=C(()=>{const t=ie.value.find(a=>a.key===S.value);return t==null?void 0:t.name});Ne(()=>{te.value.length&&te.value.some(t=>t.key===B.query.task)&&(S.value="".concat(B.query.task))});const re=_(!1),k=H([]),Ee=()=>{re.value=!0,k.splice(0,k.length),L.getFileList().then(t=>{k.push(...t.data.files),re.value=!1})},_e=_(),le=_(""),ae=C(()=>k.filter(t=>ee.value==="no-task"?te.value.every(a=>a.key!==t.task_key):ie.value.length===0?!1:S.value==="all"?ie.value.find(a=>a.key===t.task_key):S.value===t.task_key).filter(t=>le.value?JSON.stringify([F(new Date(t.date)),K(t.size),t.people,t.name,t.task_name,t.info]).replace(/[:'"{},[\]]/g,"").includes(le.value):!0)),Pe=()=>{_e.value.clearSelection()},x=H([]),Se=t=>{x.splice(0,x.length),x.push(...t)},j=_(!1),Ve=t=>{const a=x.map(i=>i.id);switch(t){case"download":if(x.length===0){c.warning("没有选中需要下载的内容");return}if(j.value){c.warning("已经有批量下载任务正在进行,请稍后再试");return}L.batchDownload(a,"批量下载_".concat(F(new Date,"yyyy年MM月日hh时mm分ss秒"))).then(()=>{q()}).catch(()=>{c.error("所选文件均已从服务器上移除"),j.value=!1}),c.info("开始归档选中的文件,请赖心等待");break;case"delete":if(x.length===0){c.warning("没有选中需要删除的内容");return}Me.confirm("删除后无法恢复,是否删除","数据无价,请谨慎操作").then(()=>{L.batchDel(a).then(()=>{k.splice(0,k.length,...k.filter(i=>!a.includes(i.id))),c.success("删除成功")})}).catch(()=>{c.info("取消")});break;case"excel":if(x.length===0){c.warning("没有选中需要导出的内容");return}ze(x,"批量导出_".concat(F(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx")),c.success("导出成功");break}Pe()},ve=_(!1),de=H([]),Re=t=>{de.splice(0,de.length),de.push(...pt(t.info)),ve.value=!0},oe=_(!1),h=H({oldName:"",newName:"",suffix:"",id:-1}),Be=t=>{const{id:a,name:i}=t,f=mt(i);h.oldName=i,h.suffix=f,h.id=a,oe.value=!0},Je=()=>{if(be.test(h.newName)){c.error("文件名不能包含".concat(be.source,"等字符")),be.lastIndex=0;return}L.updateFilename(h.id,"".concat(h.newName).concat(h.suffix)).then(()=>{c.success("修改成功");const t=k.find(a=>a.id===h.id);t.name="".concat(h.newName).concat(h.suffix)}).catch(()=>{c.error("修改失败")}).finally(()=>{oe.value=!1})},qe=t=>{const{id:a,name:i}=t;L.getOneFileUrl(a).then(f=>{const{link:d}=f.data;M.value=!0,J.value=d,xe(d,i),q()}).catch(()=>{c.error("文件已从服务器上移除")})},je=t=>{const a=k.findIndex(i=>i===t);Me.confirm("确认删除此文件吗?","数据无价,请谨慎操作").then(()=>{L.deleteOneFile(t.id).then(()=>{c.success("删除成功"),k.splice(a,1)})}).catch(()=>{c.info("取消删除")})},W=_(6),We=t=>{W.value=t},Xe=C(()=>Math.ceil(ae.value.length/W.value)),ne=_(1),X=C(()=>{const t=(ne.value-1)*W.value,a=ne.value*W.value;return ae.value.slice(t,a)}),Ze=C(()=>K(ae.value.reduce((t,a)=>t+a.size,0))),Ge=C(()=>K(k.reduce((t,a)=>t+a.size,0))),Ke=t=>{ne.value=t},Qe=()=>{c.success({message:"刷新成功"}),Ee()},Ye=()=>{const t=k.filter(a=>a.task_key===S.value).map(a=>a.id);if(t.length===0){c.warning("该任务中没有数据");return}if(j.value){c.warning("已经有批量下载任务正在进行,请稍后再试");return}j.value=!0,L.batchDownload(t,He.value).then(()=>{q()}).catch(()=>{c.error("所选任务中的文件均已从服务器上移除")}).finally(()=>{setTimeout(()=>{j.value=!1},1e3)}),c.info("开始归档选中的文件,请赖心等待")},ue=H([]);H({order:null,prop:null});const $e=_(""),et=C(()=>ue.map(t=>t.preview)),Ie=t=>{$e.value=X.value[t].name};let he=!1;const De=()=>{const t=X.value.map(a=>a.id);t.length===0||he||(he=!0,L.checkImageFilePreviewUrl(t).then(a=>{he=!1;const{data:i}=a;i.length===0||i.length!==X.value.length||(ue.splice(0,ue.length),X.value.forEach((f,d)=>{const{cover:p,preview:m}=i[d];f.cover=p,ue.push({cover:p,preview:m,name:f.name,date:f.date,id:f.id})}))}))};Ne(()=>{if(window.localStorage.setItem("ep-show-images","".concat(A.value)),!!A.value){if(le.value||ne.value||W.value){De();return}De()}}),nt(()=>{Ee(),q(),E.dispatch("category/getCategory"),E.dispatch("task/getTask")});const Te=C(()=>E.getters["public/isMobile"]);return(t,a)=>{const i=zt,f=Ct,d=it,p=rt,m=ft,b=It,U=Dt,ce=$t,Z=Vt,g=St,V=_t,pe=Et,O=xt,G=kt,T=yt,ge=gt,tt=wt,me=ht;return r(),y("div",Kt,[s("div",Qt,[s("div",Yt,[el,e(f,{size:"default",modelValue:ee.value,"onUpdate:modelValue":a[0]||(a[0]=l=>ee.value=l),filterable:"",placeholder:"请选择"},{default:o(()=>[e(i,{label:"全部",value:"all"}),e(i,{label:"默认",value:"default"}),(r(!0),y(ye,null,ke(Oe.value,l=>(r(),$(i,{key:l.k,label:l.name,value:l.k},null,8,["label","value"]))),128)),e(i,{label:"无关联任务",value:"no-task"}),e(i,{label:"♻️回收站♻️",value:"trash"})]),_:1},8,["modelValue"])]),s("div",tl,[ll,e(f,{size:"default",modelValue:S.value,"onUpdate:modelValue":a[1]||(a[1]=l=>S.value=l),filterable:"",placeholder:"请选择"},{default:o(()=>[e(i,{label:"全部",value:"all"}),(r(!0),y(ye,null,ke(ie.value,l=>(r(),$(i,{key:l.key,label:l.name,value:l.key},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),s("div",al,[e(d,{loading:j.value,disabled:S.value==="all",type:"primary",size:"default",icon:u(Bt),onClick:Ye},{default:o(()=>[n("下载任务中的文件")]),_:1},8,["loading","disabled","icon"])]),s("div",ol,[e(p,{size:"default",clearable:"",placeholder:"请输入要检索的内容","prefix-icon":u(bt),modelValue:le.value,"onUpdate:modelValue":a[2]||(a[2]=l=>le.value=l)},null,8,["prefix-icon","modelValue"])])]),s("div",nl,[s("div",sl,[e(ce,{trigger:"click",onCommand:Ve},{dropdown:o(()=>[e(U,null,{default:o(()=>[e(b,{disabled:x.length===0,command:"download"},{default:o(()=>[n("下载")]),_:1},8,["disabled"]),e(b,{disabled:x.length===0,command:"delete"},{default:o(()=>[n("删除")]),_:1},8,["disabled"]),e(b,{disabled:x.length===0,command:"excel"},{default:o(()=>[n("导出记录")]),_:1},8,["disabled"])]),_:1})]),default:o(()=>[e(d,{type:"primary",size:"default"},{default:o(()=>[n(" 批量操作"),e(m,{class:"el-icon--right"},{default:o(()=>[e(u(Fe))]),_:1})]),_:1})]),_:1}),P(s("div",null,[e(ce,{trigger:"click",onCommand:Ve},{dropdown:o(()=>[e(U,null,{default:o(()=>[e(b,{command:"download"},{default:o(()=>[n("下载")]),_:1}),e(b,{command:"delete"},{default:o(()=>[n("删除")]),_:1}),e(b,{command:"excel"},{default:o(()=>[n("导出记录")]),_:1})]),_:1})]),default:o(()=>[e(d,{type:"primary",disabled:x.length===0,size:"default"},{default:o(()=>[n(" 批量操作 "),e(m,null,{default:o(()=>[e(u(Fe))]),_:1})]),_:1},8,["disabled"])]),_:1})],512),[[we,!1]]),e(d,{size:"default",icon:u(Ft),onClick:Qe},{default:o(()=>[n("刷新")]),_:1},8,["icon"]),e(d,{title:"导出表格中所有的数据",type:"success",size:"default",icon:u(Lt),onClick:a[3]||(a[3]=()=>{ze(ae.value,"筛选数据导出_".concat(u(F)(new Date,"yyyy年MM月日hh时mm分ss秒"),".xlsx"))}),disabled:X.value.length===0},{default:o(()=>[n("导出记录")]),_:1},8,["icon","disabled"]),s("div",il,[n(" 显示图片 "),e(Z,{"inline-prompt":"",modelValue:A.value,"onUpdate:modelValue":a[4]||(a[4]=l=>A.value=l),"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"是","inactive-text":"否"},null,8,["modelValue"])]),s("div",rl,[n(" 展示原文件名 "),e(Z,{"inline-prompt":"",modelValue:Y.value,"onUpdate:modelValue":a[5]||(a[5]=l=>Y.value=l),"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"是","inactive-text":"否"},null,8,["modelValue"])]),s("div",dl,[n(" 显示提交人姓名 "),e(Z,{"inline-prompt":"",modelValue:Q.value,"onUpdate:modelValue":a[6]||(a[6]=l=>Q.value=l),"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"是","inactive-text":"否"},null,8,["modelValue"])]),s("div",ul,[n(" ⏰ 查看下载历史 "),e(Z,{modelValue:se.value,"onUpdate:modelValue":a[7]||(a[7]=l=>se.value=l),style:{"--el-switch-on-color":"#13ce66","--el-switch-off-color":"#ff4949"}},null,8,["modelValue"])])])]),P(s("div",cl,[e(R,{style:{"font-size":"16px"}},{default:o(()=>[n("正在进行归档的任务 "+w(v.compressTask.length)+"个",1)]),_:1}),e(R,null,{default:o(()=>[n("详细归档记录点击右上角 “⏰查看下载历史”")]),_:1}),(r(!0),y(ye,null,ke(v.compressTask,(l,N)=>(r(),y("p",{key:l.id,class:"tc",style:{"margin-top":"10px"}},[n(w(N+1)+". "+w(l.tip)+" ",1),P(s("span",pl,null,512),[[me,!0]])]))),128))],512),[[we,v.compressTask.length&&!se.value]]),P(s("div",ml,[e(R,{style:{"font-size":"16px"}},{default:o(()=>[n("”❤️下面展示历史的下载记录与归档任务完成情况❤️“")]),_:1}),e(R,null,{default:o(()=>[n("”再也不需要在页面停留等待归档完成“")]),_:1}),s("div",null,[P((r(),$(pe,{"element-loading-text":"Loading...","tooltip-effect":"dark",multipleTable:"",ref_key:"multipleTable",ref:_e,onSelectionChange:Se,stripe:"",border:"","default-sort":{prop:"date",order:"descending"},"max-height":666,data:v.actions,style:{width:"100%"}},{default:o(()=>[e(g,{prop:"date",label:"触发时间",width:"200"},{default:o(l=>[n(w(u(F)(new Date(l.row.date))),1)]),_:1}),e(g,{prop:"tip",label:"文件信息"}),e(g,{prop:"type",label:"任务类型"},{default:o(l=>[l.row.type===u(Le).Compress?(r(),$(V,{key:0,type:"primary"},{default:o(()=>[n("归档下载")]),_:1})):(r(),$(V,{key:1,type:"default"},{default:o(()=>[n("普通下载")]),_:1}))]),_:1}),e(g,{prop:"size",label:"大小",width:"100"},{default:o(l=>[l.row.status===u(z).ARCHIVE?(r(),y("span",fl,[e(V,{type:"danger"},{default:o(()=>[n("归档中...")]),_:1})])):l.row.status!==u(z).FAIL?(r(),y("span",_l,w(l.row.size?u(K)(l.row.size):"未知大小"),1)):I("",!0),l.row.status===u(z).FAIL?(r(),y("span",vl,[e(V,{type:"danger"},{default:o(()=>[n("归档失败")]),_:1})])):I("",!0)]),_:1}),e(g,{fixed:"right",label:"操作",width:"140"},{default:o(l=>[l.row.status===u(z).ARCHIVE?P((r(),y("div",hl,[n(" 归档中... ")])),[[me,!0]]):I("",!0),l.row.status===u(z).EXPIRED?(r(),y("div",gl," 链接已失效 ")):I("",!0),l.row.status===u(z).FAIL?(r(),y("div",wl," 联系开发者,提供错误信息:"+w(l.row.error),1)):I("",!0),l.row.status===u(z).SUCCESS?(r(),y("div",yl,[e(V,{onClick:N=>u(xe)(l.row.url),type:"primary"},{default:o(()=>[n("下载")]),_:2},1032,["onClick"]),e(V,{type:"success",style:{"margin-left":"10px"},onClick:N=>u(ct)(l.row.url)},{default:o(()=>[n("链接")]),_:2},1032,["onClick"]),e(V,{type:"warning",style:{"margin-left":"10px"},onClick:()=>{M.value=!0,J.value=l.row.url}},{default:o(()=>[n("二维码")]),_:2},1032,["onClick"])])):I("",!0)]),_:1})]),_:1},8,["data"])),[[me,re.value]]),s("div",kl,[e(O,{small:"","current-page":v.pageCurrent,"page-count":v.pageCount,total:v.pageTotal,layout:"total, prev, pager, next",onCurrentChange:Ue},null,8,["current-page","page-count","total"])])])],512),[[we,se.value]]),s("div",xl,[e(R,null,{default:o(()=>[n("空间占用情况:"+w(Ze.value)+" / "+w(Ge.value),1)]),_:1}),e(R,null,{default:o(()=>[n("↑ 仅供使用者参考,应用无存储空间上限,也不收费")]),_:1}),e(R,null,{default:o(()=>[bl]),_:1}),P((r(),$(pe,{"element-loading-text":"Loading...","tooltip-effect":"dark",multipleTable:"",ref_key:"multipleTable",ref:_e,onSelectionChange:Se,stripe:"",border:"","max-height":666,data:X.value,style:{width:"100%"}},{default:o(()=>[e(g,{type:"selection",width:"55"}),e(g,{prop:"date",label:"提交时间",width:"160"},{default:o(l=>[n(w(u(F)(new Date(l.row.date))),1)]),_:1}),e(g,{prop:"task_name",label:"任务",width:"150"}),e(g,{prop:"name",label:"文件名",width:"200"}),Y.value?(r(),$(g,{key:0,prop:"origin_name",label:"原文件名",width:"200"},{default:o(l=>[n(w(l.row.origin_name||"-"),1)]),_:1})):I("",!0),e(g,{prop:"size",label:"大小"},{default:o(l=>[n(w(l.row.size===0?"未知大小":u(K)(l.row.size)),1)]),_:1}),A.value?(r(),$(g,{key:1,label:"缩略图",width:"120"},{default:o(l=>[e(G,{onSwitch:Ie,onClick:N=>Ie(l.$index),"preview-teleported":"","preview-src-list":et.value,"initial-index":l.$index,lazy:"",style:{width:"100px",height:"100px"},src:l.row.cover,fit:"cover"},{viewer:o(()=>[s("div",Cl,w($e.value),1)]),placeholder:o(()=>[zl]),error:o(()=>[s("div",El,[n(" 不支持 "),e(m,null,{default:o(()=>[e(u(Gt))]),_:1})])]),_:2},1032,["onClick","preview-src-list","initial-index","src"])]),_:1})):I("",!0),Q.value?(r(),$(g,{key:2,prop:"people",width:"100",label:"限制名单"},{default:o(l=>[n(w(l.row.people||"-"),1)]),_:1})):I("",!0),e(g,{fixed:"right",label:"操作",width:"140"},{default:o(l=>[s("div",Sl,[e(d,{onClick:N=>Re(l.row),type:"primary",text:"",size:"small"},{default:o(()=>[n("查看提交信息")]),_:2},1032,["onClick"]),e(d,{onClick:N=>Be(l.row),type:"primary",text:"",size:"small"},{default:o(()=>[n("修改文件名")]),_:2},1032,["onClick"]),e(d,{onClick:N=>qe(l.row),type:"primary",text:"",size:"small"},{default:o(()=>[n("下载")]),_:2},1032,["onClick"]),e(d,{onClick:N=>je(l.row),type:"primary",text:"",size:"small"},{default:o(()=>[n("删除")]),_:2},1032,["onClick"])])]),_:1})]),_:1},8,["data"])),[[me,re.value]])]),s("div",Vl,[e(O,{"current-page":ne.value,onCurrentChange:Ke,background:"","page-count":Xe.value,"page-sizes":[6,10,50,100],"page-size":W.value,onSizeChange:We,total:ae.value.length,layout:"total, sizes, prev, pager, next, jumper"},null,8,["current-page","page-count","page-size","total"])]),e(T,{fullscreen:Te.value,title:"提交填写的信息",modelValue:ve.value,"onUpdate:modelValue":a[8]||(a[8]=l=>ve.value=l)},{default:o(()=>[e(Nt,{infos:de,disabled:!0},null,8,["infos"])]),_:1},8,["fullscreen","modelValue"]),e(Tt,{value:M.value,"onUpdate:value":a[9]||(a[9]=l=>M.value=l),title:"下载链接",link:J.value},null,8,["value","link"]),e(T,{fullscreen:Te.value,title:"修改文件名",modelValue:oe.value,"onUpdate:modelValue":a[13]||(a[13]=l=>oe.value=l)},{default:o(()=>[s("div",null,[e(tt,{"label-width":"100px",model:h},{default:o(()=>[e(ge,{label:"原文件名",prop:"newName"},{default:o(()=>[e(p,{modelValue:h.oldName,"onUpdate:modelValue":a[10]||(a[10]=l=>h.oldName=l),disabled:""},null,8,["modelValue"])]),_:1}),e(ge,{label:"新文件名",prop:"newName"},{default:o(()=>[e(p,{modelValue:h.newName,"onUpdate:modelValue":a[11]||(a[11]=l=>h.newName=l),placeholder:"请输入新文件名"},{append:o(()=>[n(w(h.suffix),1)]),_:1},8,["modelValue"])]),_:1}),e(ge,null,{default:o(()=>[e(d,{type:"success",onClick:Je},{default:o(()=>[n("保存")]),_:1}),e(d,{onClick:a[12]||(a[12]=l=>oe.value=!1)},{default:o(()=>[n("取消")]),_:1})]),_:1})]),_:1},8,["model"])])]),_:1},8,["fullscreen","modelValue"])])}}});const Zl=vt($l,[["__scopeId","data-v-7d8411d6"]]);export{Zl as default};
|
|
2
|
-
//# sourceMappingURL=index-c3a1cd43.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-c3a1cd43.js","sources":["../../src/apis/modules/action.ts","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/download.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.3.4/node_modules/@element-plus/icons-vue/dist/es/picture.mjs","../../src/pages/dashboard/files/index.vue"],"sourcesContent":["import ajax from '../ajax'\n\nfunction getDownloadActions(\n pageSize: number,\n pageIndex: number,\n extraIds: string[] = []\n): ActionApiTypes.getDownloadActions {\n return ajax.post('/action/download/list', {\n pageSize,\n pageIndex,\n extraIds\n })\n}\n\nexport default {\n getDownloadActions\n}\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Download\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64zm384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64v450.304z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar download = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { download as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Picture\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M160 160v704h704V160H160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M384 288q64 0 64 64t-64 64q-64 0-64-64t64-64zM185.408 876.992l-50.816-38.912L350.72 556.032a96 96 0 0 1 134.592-17.856l1.856 1.472 122.88 99.136a32 32 0 0 0 44.992-4.864l216-269.888 49.92 39.936-215.808 269.824-.256.32a96 96 0 0 1-135.04 14.464l-122.88-99.072-.64-.512a32 32 0 0 0-44.8 5.952L185.408 876.992z\"\n}, null, -1);\nconst _hoisted_4 = [\n _hoisted_2,\n _hoisted_3\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_4);\n}\nvar picture = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { picture as default };\n","<template>\n <div class=\"files\">\n <!-- 筛选框 -->\n <div class=\"panel header\">\n <div class=\"item\">\n <span class=\"label\">分类</span>\n <!--TODO: multiple 多选待评估 -->\n <el-select\n size=\"default\"\n v-model=\"selectCategory\"\n filterable\n placeholder=\"请选择\"\n >\n <el-option label=\"全部\" value=\"all\" />\n <el-option label=\"默认\" value=\"default\" />\n <el-option\n v-for=\"item in categories\"\n :key=\"item.k\"\n :label=\"item.name\"\n :value=\"item.k\"\n />\n <el-option label=\"无关联任务\" value=\"no-task\" />\n <el-option label=\"♻️回收站♻️\" value=\"trash\" />\n </el-select>\n </div>\n <div class=\"item\">\n <span class=\"label\">任务</span>\n <el-select\n size=\"default\"\n v-model=\"selectTask\"\n filterable\n placeholder=\"请选择\"\n >\n <el-option label=\"全部\" value=\"all\" />\n <el-option\n v-for=\"item in filterTasks\"\n :key=\"item.key\"\n :label=\"item.name\"\n :value=\"item.key\"\n ></el-option>\n </el-select>\n </div>\n <div class=\"item\">\n <el-button\n :loading=\"batchDownStart\"\n :disabled=\"selectTask === 'all'\"\n type=\"primary\"\n size=\"default\"\n :icon=\"Download\"\n @click=\"handleDownloadTask\"\n >下载任务中的文件</el-button\n >\n </div>\n <div class=\"item\">\n <el-input\n size=\"default\"\n clearable\n placeholder=\"请输入要检索的内容\"\n :prefix-icon=\"Search\"\n v-model=\"searchWord\"\n >\n </el-input>\n </div>\n </div>\n <div class=\"panel\">\n <div class=\"export-btns flex fac\">\n <el-dropdown trigger=\"click\" @command=\"handleDropdownClick\">\n <el-button type=\"primary\" size=\"default\">\n 批量操作<el-icon class=\"el-icon--right\">\n <arrow-down />\n </el-icon>\n </el-button>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item\n :disabled=\"selectItem.length === 0\"\n command=\"download\"\n >下载</el-dropdown-item\n >\n <el-dropdown-item\n :disabled=\"selectItem.length === 0\"\n command=\"delete\"\n >删除</el-dropdown-item\n >\n <el-dropdown-item\n :disabled=\"selectItem.length === 0\"\n command=\"excel\"\n >导出记录</el-dropdown-item\n >\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n <div v-show=\"false\">\n <!-- 迷惑的解决bug的手段 -->\n <el-dropdown trigger=\"click\" @command=\"handleDropdownClick\">\n <el-button\n type=\"primary\"\n :disabled=\"selectItem.length === 0\"\n size=\"default\"\n >\n 批量操作\n <el-icon>\n <ArrowDown />\n </el-icon>\n </el-button>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item command=\"download\">下载</el-dropdown-item>\n <el-dropdown-item command=\"delete\">删除</el-dropdown-item>\n <el-dropdown-item command=\"excel\">导出记录</el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n <el-button size=\"default\" :icon=\"Refresh\" @click=\"handleRefresh\"\n >刷新</el-button\n >\n <el-button\n title=\"导出表格中所有的数据\"\n type=\"success\"\n size=\"default\"\n :icon=\"DataAnalysis\"\n @click=\"\n () => {\n handleExportExcel(\n filterFiles,\n `筛选数据导出_${formatDate(\n new Date(),\n 'yyyy年MM月日hh时mm分ss秒'\n )}.xlsx`\n )\n }\n \"\n :disabled=\"showFilterFiles.length === 0\"\n >导出记录</el-button\n >\n <div class=\"control-item\">\n 显示图片\n <el-switch\n inline-prompt\n v-model=\"showImg\"\n active-color=\"#13ce66\"\n inactive-color=\"#ff4949\"\n active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n 展示原文件名\n <el-switch\n inline-prompt\n v-model=\"showOriginName\"\n active-color=\"#13ce66\"\n inactive-color=\"#ff4949\"\n active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n 显示提交人姓名\n <el-switch\n inline-prompt\n v-model=\"showPeople\"\n active-color=\"#13ce66\"\n inactive-color=\"#ff4949\"\n active-text=\"是\"\n inactive-text=\"否\"\n />\n </div>\n <div class=\"control-item\">\n ⏰ 查看下载历史\n <el-switch\n v-model=\"showHistoryPanel\"\n style=\"\n --el-switch-on-color: #13ce66;\n --el-switch-off-color: #ff4949;\n \"\n />\n </div>\n </div>\n </div>\n <div\n class=\"panel\"\n v-show=\"historyDownloadRecord.compressTask.length && !showHistoryPanel\"\n >\n <tip style=\"font-size: 16px\"\n >正在进行归档的任务\n {{ historyDownloadRecord.compressTask.length }}个</tip\n >\n <tip>详细归档记录点击右上角 “⏰查看下载历史”</tip>\n <p\n v-for=\"(record, idx) in historyDownloadRecord.compressTask\"\n :key=\"record.id\"\n class=\"tc\"\n style=\"margin-top: 10px\"\n >\n {{ idx + 1 }}. {{ record.tip }}\n <span\n v-loading=\"true\"\n element-loading-text=\"...\"\n style=\"--el-loading-spinner-size: 20px\"\n ></span>\n </p>\n </div>\n <div class=\"panel\" v-show=\"showHistoryPanel\">\n <tip style=\"font-size: 16px\"\n >”❤️下面展示历史的下载记录与归档任务完成情况❤️“</tip\n >\n <tip>”再也不需要在页面停留等待归档完成“</tip>\n <div>\n <el-table\n v-loading=\"isLoadingData\"\n element-loading-text=\"Loading...\"\n tooltip-effect=\"dark\"\n multipleTable\n ref=\"multipleTable\"\n @selection-change=\"handleSelectionChange\"\n stripe\n border\n :default-sort=\"{ prop: 'date', order: 'descending' }\"\n :max-height=\"666\"\n :data=\"historyDownloadRecord.actions\"\n style=\"width: 100%\"\n >\n <el-table-column prop=\"date\" label=\"触发时间\" width=\"200\">\n <template #default=\"scope\">{{\n formatDate(new Date(scope.row.date))\n }}</template>\n </el-table-column>\n <el-table-column prop=\"tip\" label=\"文件信息\"></el-table-column>\n <el-table-column prop=\"type\" label=\"任务类型\">\n <template #default=\"scope\">\n <el-link\n v-if=\"scope.row.type === ActionType.Compress\"\n type=\"primary\"\n >归档下载</el-link\n >\n <el-link v-else type=\"default\">普通下载</el-link>\n </template>\n </el-table-column>\n <el-table-column prop=\"size\" label=\"大小\" width=\"100\">\n <template #default=\"scope\">\n <span v-if=\"scope.row.status === DownloadStatus.ARCHIVE\"\n ><el-link type=\"danger\">归档中...</el-link></span\n >\n <span v-else-if=\"scope.row.status !== DownloadStatus.FAIL\">{{\n !scope.row.size ? '未知大小' : formatSize(scope.row.size)\n }}</span>\n <span v-if=\"scope.row.status === DownloadStatus.FAIL\"\n ><el-link type=\"danger\">归档失败</el-link></span\n >\n </template>\n </el-table-column>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"140\">\n <template #default=\"scope\">\n <div\n v-loading=\"true\"\n v-if=\"scope.row.status === DownloadStatus.ARCHIVE\"\n >\n 归档中...\n </div>\n <div v-if=\"scope.row.status === DownloadStatus.EXPIRED\">\n 链接已失效\n </div>\n <div v-if=\"scope.row.status === DownloadStatus.FAIL\">\n 联系开发者,提供错误信息:{{ scope.row.error }}\n </div>\n <div v-if=\"scope.row.status === DownloadStatus.SUCCESS\">\n <el-link @click=\"downLoadByUrl(scope.row.url)\" type=\"primary\"\n >下载</el-link\n >\n <el-link\n type=\"success\"\n style=\"margin-left: 10px\"\n @click=\"copyRes(scope.row.url)\"\n >链接</el-link\n >\n <el-link\n type=\"warning\"\n style=\"margin-left: 10px\"\n @click=\"\n () => {\n showLinkModel = true\n downloadUrl = scope.row.url\n }\n \"\n >二维码</el-link\n >\n </div>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"flex fc\">\n <el-pagination\n small\n :current-page=\"historyDownloadRecord.pageCurrent\"\n :page-count=\"historyDownloadRecord.pageCount\"\n :total=\"historyDownloadRecord.pageTotal\"\n layout=\"total, prev, pager, next\"\n @current-change=\"handleHistoryActionPageChange\"\n ></el-pagination>\n </div>\n </div>\n </div>\n <!-- 主体内容 -->\n <div class=\"panel\">\n <Tip>空间占用情况:{{ filterFileSize }} / {{ fileListSize }}</Tip>\n <Tip>↑ 仅供使用者参考,应用无存储空间上限,也不收费</Tip>\n <Tip\n ><strong\n >如果你觉得应用不错,<a\n style=\"color: #409eff\"\n href=\"http://docs.ep.sugarat.top/praise/index.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >请作者喝茶 🍵</a\n ></strong\n >\n <!-- <Praise>\n <el-button style=\"margin:0 0 2px;\" size=\"small\" type=\"primary\" text>Go!Go!❓</el-button>\n </Praise> -->\n </Tip>\n <el-table\n v-loading=\"isLoadingData\"\n element-loading-text=\"Loading...\"\n tooltip-effect=\"dark\"\n multipleTable\n ref=\"multipleTable\"\n @selection-change=\"handleSelectionChange\"\n stripe\n border\n :max-height=\"666\"\n :data=\"showFilterFiles\"\n style=\"width: 100%\"\n >\n <el-table-column type=\"selection\" width=\"55\" />\n <el-table-column prop=\"date\" label=\"提交时间\" width=\"160\">\n <template #default=\"scope\">{{\n formatDate(new Date(scope.row.date))\n }}</template>\n </el-table-column>\n <el-table-column\n prop=\"task_name\"\n label=\"任务\"\n width=\"150\"\n ></el-table-column>\n <el-table-column\n prop=\"name\"\n label=\"文件名\"\n width=\"200\"\n ></el-table-column>\n <template v-if=\"showOriginName\">\n <el-table-column prop=\"origin_name\" label=\"原文件名\" width=\"200\">\n <template #default=\"scope\">\n {{ scope.row.origin_name || '-' }}\n </template>\n </el-table-column>\n </template>\n <el-table-column prop=\"size\" label=\"大小\">\n <template #default=\"scope\">{{\n scope.row.size === 0 ? '未知大小' : formatSize(scope.row.size)\n }}</template>\n </el-table-column>\n <template v-if=\"showImg\">\n <el-table-column label=\"缩略图\" width=\"120\">\n <template #default=\"scope\">\n <el-image\n @switch=\"handleSwitchImage\"\n @click=\"handleSwitchImage(scope.$index)\"\n preview-teleported\n :preview-src-list=\"previewImages\"\n :initial-index=\"scope.$index\"\n lazy\n style=\"width: 100px; height: 100px\"\n :src=\"scope.row.cover\"\n fit=\"cover\"\n >\n <template #viewer>\n <div class=\"imageDes\">{{ viewImageFilename }}</div>\n </template>\n <template #placeholder>\n <div class=\"imageLoading\">Loading...</div>\n </template>\n <template #error>\n <div class=\"imageLoading\">\n 不支持\n <el-icon>\n <Picture />\n </el-icon>\n </div>\n </template>\n </el-image>\n </template>\n </el-table-column>\n </template>\n <template v-if=\"showPeople\">\n <el-table-column prop=\"people\" width=\"100\" label=\"限制名单\">\n <template #default=\"scope\">\n {{ scope.row.people || '-' }}\n </template>\n </el-table-column>\n </template>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"140\">\n <template #default=\"scope\">\n <div class=\"text-btns\">\n <el-button\n @click=\"checkInfo(scope.row)\"\n type=\"primary\"\n text\n size=\"small\"\n >查看提交信息</el-button\n >\n <el-button\n @click=\"rewriteFilename(scope.row)\"\n type=\"primary\"\n text\n size=\"small\"\n >修改文件名</el-button\n >\n <el-button\n @click=\"downloadOne(scope.row)\"\n type=\"primary\"\n text\n size=\"small\"\n >下载</el-button\n >\n <el-button\n @click=\"handleDelete(scope.row)\"\n type=\"primary\"\n text\n size=\"small\"\n >删除</el-button\n >\n </div>\n </template>\n </el-table-column>\n </el-table>\n </div>\n <!-- 分页 -->\n <div class=\"panel flex fc\">\n <el-pagination\n :current-page=\"pageCurrent\"\n @current-change=\"handlePageChange\"\n background\n :page-count=\"pageCount\"\n :page-sizes=\"[6, 10, 50, 100]\"\n :page-size=\"pageSize\"\n @size-change=\"handleSizeChange\"\n :total=\"filterFiles.length\"\n layout=\"total, sizes, prev, pager, next, jumper\"\n ></el-pagination>\n </div>\n <!-- 信息弹窗 -->\n <el-dialog\n :fullscreen=\"isMobile\"\n title=\"提交填写的信息\"\n v-model=\"showInfoDialog\"\n >\n <InfosForm :infos=\"infos\" :disabled=\"true\" />\n </el-dialog>\n <LinkDialog\n v-model:value=\"showLinkModel\"\n title=\"下载链接\"\n :link=\"downloadUrl\"\n ></LinkDialog>\n <el-dialog\n :fullscreen=\"isMobile\"\n title=\"修改文件名\"\n v-model=\"showRenameDialog\"\n >\n <div>\n <el-form label-width=\"100px\" :model=\"renameForm\">\n <el-form-item label=\"原文件名\" prop=\"newName\">\n <el-input v-model=\"renameForm.oldName\" disabled />\n </el-form-item>\n <el-form-item label=\"新文件名\" prop=\"newName\">\n <el-input v-model=\"renameForm.newName\" placeholder=\"请输入新文件名\">\n <template #append>\n {{ renameForm.suffix }}\n </template>\n </el-input>\n </el-form-item>\n <el-form-item>\n <el-button type=\"success\" @click=\"handleSaveNewName\"\n >保存</el-button\n >\n <el-button @click=\"showRenameDialog = false\">取消</el-button>\n </el-form-item>\n </el-form>\n </div>\n </el-dialog>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, onMounted, reactive, ref, watchEffect } from 'vue'\nimport { useStore } from 'vuex'\nimport LinkDialog from '@components/linkDialog.vue'\nimport {\n ArrowDown,\n Refresh,\n DataAnalysis,\n Download,\n Search,\n Picture\n} from '@element-plus/icons-vue'\nimport { useRoute } from 'vue-router'\nimport {\n copyRes,\n formatDate,\n formatSize,\n getFileSuffix,\n parseInfo\n} from '@/utils/stringUtil'\nimport { ActionServiceAPI, FileApi } from '@/apis'\nimport { downLoadByUrl, tableItem, tableToExcel } from '@/utils/networkUtil'\nimport Tip from '../tasks/components/infoPanel/tip.vue'\nimport InfosForm from '@/components/InfosForm/index.vue'\nimport { DownloadStatus, ActionType, filenamePattern } from '@/constants'\n\nconst $store = useStore()\nconst $route = useRoute()\nconst showLinkModel = ref(false)\nconst downloadUrl = ref('')\nconst showImg = ref(localStorage.getItem('ep-show-images') === 'true')\nconst showPeople = ref(true)\nconst showOriginName = ref(false)\nconst showHistoryPanel = ref(false)\nconst historyDownloadRecord = reactive({\n actions: [],\n pageSize: 3,\n /**\n * 总页数\n */\n pageCount: 0,\n pageCurrent: 1,\n pageTotal: 0,\n compressTask: []\n})\n\nconst loadActions = () => {\n // 已记录的task\n const compressTask: ActionApiTypes.DownloadActionData[] = JSON.parse(\n localStorage.getItem('ep_compress_task') || '[]'\n )\n historyDownloadRecord.compressTask = compressTask\n\n ActionServiceAPI.getDownloadActions(\n historyDownloadRecord.pageSize,\n historyDownloadRecord.pageCurrent,\n compressTask.map((v) => v.id)\n ).then((v) => {\n const { actions, sum } = v.data\n const haveArchive = !!actions.find(\n (v) => v.status === DownloadStatus.ARCHIVE\n )\n\n actions\n .filter((v) => v.type === ActionType.Compress)\n .forEach((action) => {\n const existIndex = compressTask.findIndex((v) => v.id === action.id)\n // 判断状态\n // SUCCESS\n // 存在,触发下载,从compressTask移除\n if (action.status === DownloadStatus.SUCCESS && existIndex !== -1) {\n // 展示弹窗\n downloadUrl.value = action.url\n showLinkModel.value = true\n downLoadByUrl(action.url)\n // ElMessage.success(`自动下载归档任务 ${action.tip}`)\n compressTask.splice(existIndex, 1)\n }\n // Archive\n // 不存在,push进compressTask\n if (action.status === DownloadStatus.ARCHIVE && existIndex === -1) {\n compressTask.push(action)\n }\n\n // ERROR\n if (action.status === DownloadStatus.FAIL && existIndex !== -1) {\n compressTask.splice(existIndex, 1)\n }\n })\n // TODO:之后根据反馈优化\n historyDownloadRecord.compressTask = compressTask\n localStorage.setItem('ep_compress_task', JSON.stringify(compressTask))\n if (haveArchive) {\n // 递归查询\n setTimeout(loadActions, 1000)\n }\n historyDownloadRecord.pageTotal = sum\n historyDownloadRecord.actions = actions\n historyDownloadRecord.pageCount = Math.ceil(\n sum / historyDownloadRecord.pageSize\n )\n })\n}\nconst handleHistoryActionPageChange = (v) => {\n historyDownloadRecord.pageCurrent = v\n loadActions()\n}\n// 记录导出\nconst handleExportExcel = (files: FileApiTypes.File[], filename?: string) => {\n if (files.length === 0) {\n ElMessage.warning('表格中没有可导出的内容')\n return\n }\n const baseHeaders = ['提交时间', '任务', '文件名', '大小']\n if (showOriginName.value) {\n baseHeaders.push('原文件名')\n }\n if (showPeople.value) {\n baseHeaders.push('姓名')\n }\n const headers: (string | tableItem)[] = baseHeaders.map((v) => ({\n value: v,\n row: 2\n }))\n\n const infosHeader = files.reduce((pre, value) => {\n JSON.parse(value.info).forEach((i: any) => {\n if (!pre.includes(i.text)) {\n pre.push(i.text)\n }\n })\n return pre\n }, [])\n headers.push({\n value: '提交信息',\n col: infosHeader.length\n })\n\n const body = files.map((v) => {\n const { date, task_name: taskName, name, size, people } = v\n const infoObj = JSON.parse(v.info).reduce((pre, v) => {\n pre[v.text] = v.value\n return pre\n }, {})\n const info = infosHeader.map((v) => infoObj[v] ?? '-')\n const rows = [formatDate(new Date(date)), taskName, name, formatSize(size)]\n if (showOriginName.value) {\n rows.push(v.origin_name || '-')\n }\n if (showPeople.value) {\n rows.push(people || '-')\n }\n rows.push(...info)\n return rows\n })\n body.unshift(infosHeader)\n tableToExcel(\n headers,\n body,\n filename ||\n `数据导出_${formatDate(new Date(), 'yyyy年MM月日hh时mm分ss秒')}.xlsx`\n )\n ElMessage.success('导出成功')\n}\n// 分类相关\nconst categories = computed(() => $store.state.category.categoryList)\nconst selectCategory = ref('all')\n// 任务相关\nconst tasks = computed<TaskApiTypes.TaskItem[]>(\n () => $store.state.task.taskList\n)\nconst selectTask = ref('all')\nconst filterTasks = computed(() => {\n if (selectCategory.value === 'all') {\n return tasks.value\n }\n // eslint-disable-next-line vue/no-side-effects-in-computed-properties\n selectTask.value = 'all'\n return tasks.value.filter((t) => t.category === selectCategory.value)\n})\nconst selectTaskName = computed(() => {\n const t = filterTasks.value.find((v) => v.key === selectTask.value)\n return t?.name\n})\n\nwatchEffect(() => {\n if (\n tasks.value.length &&\n tasks.value.some((v) => v.key === $route.query.task)\n ) {\n selectTask.value = `${$route.query.task}`\n }\n})\n\nconst isLoadingData = ref(false)\n// 提交的所有文件\nconst files: FileApiTypes.File[] = reactive([])\nconst loadFiles = () => {\n isLoadingData.value = true\n files.splice(0, files.length)\n FileApi.getFileList().then((res) => {\n files.push(...res.data.files)\n isLoadingData.value = false\n })\n}\nconst multipleTable: any = ref()\nconst searchWord = ref('')\n\n// 用于展示的文件\n// 1. 过滤指定任务\nconst filterFiles = computed(() =>\n files\n .filter((f) => {\n if (selectCategory.value === 'no-task') {\n return tasks.value.every((t) => t.key !== f.task_key)\n }\n if (filterTasks.value.length === 0) {\n return false\n }\n\n if (selectTask.value === 'all') {\n return filterTasks.value.find((t) => t.key === f.task_key)\n }\n\n return selectTask.value === f.task_key\n // 2. 过滤关键词(精细优化)\n })\n .filter((t) =>\n searchWord.value\n ? JSON.stringify([\n formatDate(new Date(t.date)),\n formatSize(t.size),\n t.people,\n t.name,\n t.task_name,\n // eslint-disable-next-line no-useless-escape\n t.info\n ])\n .replace(/[:'\"{},[\\]]/g, '')\n .includes(searchWord.value)\n : true\n )\n)\n\n/**\n * 清空所有选项\n */\nconst clearSelection = () => {\n multipleTable.value.clearSelection()\n}\n// 多选选中的项\nconst selectItem: any[] = reactive([])\nconst handleSelectionChange = (e: any) => {\n selectItem.splice(0, selectItem.length)\n selectItem.push(...e)\n}\nconst batchDownStart = ref(false)\nconst handleDropdownClick = (e: string) => {\n const ids: number[] = selectItem.map((v) => v.id)\n switch (e) {\n case 'download':\n if (selectItem.length === 0) {\n ElMessage.warning('没有选中需要下载的内容')\n return\n }\n if (batchDownStart.value) {\n ElMessage.warning('已经有批量下载任务正在进行,请稍后再试')\n return\n }\n FileApi.batchDownload(\n ids,\n `批量下载_${formatDate(new Date(), 'yyyy年MM月日hh时mm分ss秒')}`\n )\n .then(() => {\n loadActions()\n })\n .catch(() => {\n ElMessage.error('所选文件均已从服务器上移除')\n batchDownStart.value = false\n })\n ElMessage.info('开始归档选中的文件,请赖心等待')\n break\n case 'delete':\n if (selectItem.length === 0) {\n ElMessage.warning('没有选中需要删除的内容')\n return\n }\n ElMessageBox.confirm('删除后无法恢复,是否删除', '数据无价,请谨慎操作')\n .then(() => {\n FileApi.batchDel(ids).then(() => {\n files.splice(\n 0,\n files.length,\n ...files.filter((v) => !ids.includes(v.id))\n )\n ElMessage.success('删除成功')\n })\n })\n .catch(() => {\n ElMessage.info('取消')\n })\n break\n case 'excel':\n if (selectItem.length === 0) {\n ElMessage.warning('没有选中需要导出的内容')\n return\n }\n handleExportExcel(\n selectItem,\n `批量导出_${formatDate(new Date(), 'yyyy年MM月日hh时mm分ss秒')}.xlsx`\n )\n ElMessage.success('导出成功')\n break\n default:\n break\n }\n clearSelection()\n}\nconst showInfoDialog = ref(false)\nconst infos: any[] = reactive([])\nconst checkInfo = (e: any) => {\n infos.splice(0, infos.length)\n infos.push(...parseInfo(e.info))\n showInfoDialog.value = true\n}\n\nconst showRenameDialog = ref(false)\nconst renameForm = reactive({\n oldName: '',\n newName: '',\n suffix: '',\n id: -1\n})\nconst rewriteFilename = (e: any) => {\n const { id, name } = e\n const suffix = getFileSuffix(name)\n renameForm.oldName = name\n renameForm.suffix = suffix\n renameForm.id = id\n showRenameDialog.value = true\n}\n\nconst handleSaveNewName = () => {\n // 文件名校验,不能有系统不支持的字符\n if (filenamePattern.test(renameForm.newName)) {\n ElMessage.error(`文件名不能包含${filenamePattern.source}等字符`)\n filenamePattern.lastIndex = 0\n return\n }\n FileApi.updateFilename(\n renameForm.id,\n `${renameForm.newName}${renameForm.suffix}`\n )\n .then(() => {\n ElMessage.success('修改成功')\n const file = files.find((v) => v.id === renameForm.id)\n file.name = `${renameForm.newName}${renameForm.suffix}`\n })\n .catch(() => {\n ElMessage.error('修改失败')\n })\n .finally(() => {\n showRenameDialog.value = false\n })\n}\n\nconst downloadOne = (e: any) => {\n const { id, name } = e\n FileApi.getOneFileUrl(id)\n .then((res) => {\n const { link } = res.data\n showLinkModel.value = true\n downloadUrl.value = link\n downLoadByUrl(link, name)\n // 刷新\n loadActions()\n })\n .catch(() => {\n ElMessage.error('文件已从服务器上移除')\n })\n}\nconst handleDelete = (e: any) => {\n const idx = files.findIndex((v) => v === e)\n ElMessageBox.confirm('确认删除此文件吗?', '数据无价,请谨慎操作')\n .then(() => {\n FileApi.deleteOneFile(e.id).then(() => {\n ElMessage.success('删除成功')\n files.splice(idx, 1)\n })\n })\n .catch(() => {\n ElMessage.info('取消删除')\n })\n}\n\n// 分页\nconst pageSize = ref(6)\nconst handleSizeChange = (v: number) => {\n pageSize.value = v\n}\nconst pageCount = computed(() => {\n const t = Math.ceil(filterFiles.value.length / pageSize.value)\n return t\n})\n// 当前页\nconst pageCurrent = ref(1)\nconst showFilterFiles = computed(() => {\n const start = (pageCurrent.value - 1) * pageSize.value\n const end = pageCurrent.value * pageSize.value\n return filterFiles.value.slice(start, end)\n})\n\nconst filterFileSize = computed(() =>\n formatSize(filterFiles.value.reduce((acc, cur) => acc + cur.size, 0))\n)\nconst fileListSize = computed(() =>\n formatSize(files.reduce((acc, cur) => acc + cur.size, 0))\n)\nconst handlePageChange = (idx: number) => {\n pageCurrent.value = idx\n}\n\n// 刷新文件列表\n\nconst handleRefresh = () => {\n ElMessage.success({\n message: '刷新成功'\n })\n loadFiles()\n}\nconst handleDownloadTask = () => {\n const ids: number[] = files\n .filter((f) => f.task_key === selectTask.value)\n .map((v) => v.id)\n if (ids.length === 0) {\n ElMessage.warning('该任务中没有数据')\n return\n }\n if (batchDownStart.value) {\n ElMessage.warning('已经有批量下载任务正在进行,请稍后再试')\n return\n }\n batchDownStart.value = true\n FileApi.batchDownload(ids, selectTaskName.value)\n .then(() => {\n loadActions()\n })\n .catch(() => {\n ElMessage.error('所选任务中的文件均已从服务器上移除')\n })\n .finally(() => {\n setTimeout(() => {\n batchDownStart.value = false\n }, 1000)\n })\n ElMessage.info('开始归档选中的文件,请赖心等待')\n}\n\nconst previewData = reactive<\n { cover: string; preview: string; name: string; date: string; id: number }[]\n>([])\nconst sortProps = reactive({\n order: null,\n prop: null\n})\nconst viewImageFilename = ref('')\nconst handleFilesSortChange = (v) => {\n sortProps.prop = v.prop\n sortProps.order = v.order\n}\nconst previewImages = computed(() => {\n // if (!sortProps.prop) {\n return previewData.map((v) => v.preview)\n // }\n // TODO:下面代码暂不生效,后续再支持表格排序场景\n // const temp = [...previewData]\n // temp.sort((a, b) => {\n // if (sortProps.order === 'descending') {\n // return a[sortProps.prop] - b[sortProps.prop]\n // }\n // return b[sortProps.prop] - a[sortProps.prop]\n // })\n // return temp.map((v) => v.preview)\n})\n\nconst handleSwitchImage = (idx: number) => {\n viewImageFilename.value = showFilterFiles.value[idx].name\n}\n\nlet fetching = false\nconst refreshFilesCover = () => {\n const ids = showFilterFiles.value.map((v) => v.id)\n if (ids.length === 0 || fetching) {\n return\n }\n fetching = true\n FileApi.checkImageFilePreviewUrl(ids).then((r) => {\n fetching = false\n const { data } = r\n if (data.length === 0 || data.length !== showFilterFiles.value.length) {\n return\n }\n previewData.splice(0, previewData.length)\n showFilterFiles.value.forEach((v, idx) => {\n const { cover, preview } = data[idx]\n v.cover = cover\n previewData.push({ cover, preview, name: v.name, date: v.date, id: v.id })\n })\n })\n}\nwatchEffect(() => {\n window.localStorage.setItem('ep-show-images', `${showImg.value}`)\n if (!showImg.value) {\n return\n }\n if (searchWord.value || pageCurrent.value || pageSize.value) {\n refreshFilesCover()\n return\n }\n refreshFilesCover()\n})\n\nonMounted(() => {\n loadFiles()\n loadActions()\n $store.dispatch('category/getCategory')\n $store.dispatch('task/getTask')\n})\n\nconst isMobile = computed(() => $store.getters['public/isMobile'])\n</script>\n<style scoped lang=\"scss\">\n.files {\n max-width: 1024px;\n margin: 0 auto;\n padding-bottom: 2em;\n}\n\n@media screen and (max-width: 700px) {\n .files {\n margin-top: 70px;\n }\n\n .text-btns {\n display: flex;\n flex-direction: column;\n\n :deep(.el-button) {\n margin-left: 0px;\n margin-bottom: 0px;\n }\n }\n\n .header {\n justify-content: center;\n }\n\n .export-btns {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n }\n}\n\n.panel {\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n z-index: 1;\n\n .label {\n font-size: 12px;\n margin-right: 10px;\n }\n}\n\n.header {\n display: flex;\n flex-wrap: wrap;\n\n .item {\n margin-right: 10px;\n margin-bottom: 10px;\n }\n}\n\n.el-button {\n margin-left: 10px;\n margin-bottom: 10px;\n}\n\n.control-item {\n margin-left: 10px;\n margin-bottom: 10px;\n font-size: 14px;\n}\n\n.imageLoading {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n.imageDes {\n position: absolute;\n bottom: 80px;\n color: #fff;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.progress-list {\n margin-top: 10px;\n\n .progress-item {\n margin-bottom: 10px;\n\n .progress {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 6px;\n\n .el-progress--line {\n min-width: 200px;\n width: 260px;\n }\n\n .el-button {\n margin: 0 6px;\n }\n }\n\n .des {\n font-size: 12px;\n\n .filename {\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n word-break: keep-all;\n margin-right: 10px;\n }\n\n .mimeType {\n width: 60px;\n color: #409eff;\n }\n }\n\n text-align: center;\n }\n}\n</style>\n"],"names":["getDownloadActions","pageSize","pageIndex","extraIds","ajax","ActionServiceAPI","_sfc_main","defineComponent","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","download","_export_sfc","_hoisted_4","picture","$store","useStore","$route","useRoute","showLinkModel","ref","downloadUrl","showImg","showPeople","showOriginName","showHistoryPanel","historyDownloadRecord","reactive","loadActions","compressTask","v","actions","sum","haveArchive","v2","DownloadStatus","ActionType","action","existIndex","downLoadByUrl","handleHistoryActionPageChange","handleExportExcel","files2","filename","ElMessage","baseHeaders","headers","infosHeader","pre","value","i","body","date","taskName","name","size","people","infoObj","info","_a","rows","formatDate","formatSize","tableToExcel","categories","computed","selectCategory","tasks","selectTask","filterTasks","selectTaskName","watchEffect","isLoadingData","files","loadFiles","FileApi","res","multipleTable","searchWord","filterFiles","f","t","clearSelection","selectItem","handleSelectionChange","e","batchDownStart","handleDropdownClick","ids","ElMessageBox","showInfoDialog","infos","checkInfo","parseInfo","showRenameDialog","renameForm","rewriteFilename","id","suffix","getFileSuffix","handleSaveNewName","filenamePattern","file","downloadOne","link","handleDelete","idx","handleSizeChange","pageCount","pageCurrent","showFilterFiles","start","end","filterFileSize","acc","cur","fileListSize","handlePageChange","handleRefresh","handleDownloadTask","previewData","viewImageFilename","previewImages","handleSwitchImage","fetching","refreshFilesCover","r","data","cover","preview","onMounted","isMobile"],"mappings":"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","x_google_ignoreList":[1,2]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-c61deab7.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@media screen and (max-width: 700px){.user[data-v-6edac847]{margin-top:40px!important}}.user[data-v-6edac847]{margin:0 auto}.panel[data-v-6edac847]{max-width:1256px;padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}.routes[data-v-6edac847]{max-width:500px;margin:0 auto}.routes li[data-v-6edac847]{display:flex;padding:20px;align-items:center}.routes li .title[data-v-6edac847]{font-weight:700;margin:0 10px}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@charset "UTF-8";.task-panel[data-v-d3f704e9] ul.el-upload-list{border:1px dashed #d4d4d4;padding:10px}.task-panel[data-v-d3f704e9] ul.el-upload-list:before{content:"此处展示选择文件列表";font-size:12px;position:relative;bottom:4px}.task-panel[data-v-d3f704e9] .el-upload-list__item-name{display:block;overflow:hidden;max-width:290px;text-overflow:ellipsis;word-break:keep-all}.task-panel[data-v-d3f704e9] .is-ready .el-icon--close{display:block;color:#000}.task-panel[data-v-d3f704e9]{background-color:#f3f6f8;padding-bottom:1rem;position:relative}.pc-nav[data-v-d3f704e9]{background-color:#fff;display:flex;padding:10px;justify-content:space-between;align-items:center}.pc-nav .exit[data-v-d3f704e9]{cursor:pointer}.pc-nav .nav[data-v-d3f704e9]{display:flex}.pc-nav .nav nav[data-v-d3f704e9]{display:flex;align-items:center}.pc-nav .nav nav .nav-item[data-v-d3f704e9]{font-size:1rem;color:#595959;padding:10px;cursor:pointer}.pc-nav .nav nav .nav-item.active[data-v-d3f704e9]{color:#409eff!important;font-weight:600}.pc-nav .nav .exit[data-v-d3f704e9]{color:#595959}.pc-nav .logo[data-v-d3f704e9]{width:180px;margin:0 10px}.pc-nav .logo img[data-v-d3f704e9]{height:40px}.panel[data-v-d3f704e9]{max-width:1024px;padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}.panel .name[data-v-d3f704e9]{text-align:center}.panel .ddl[data-v-d3f704e9]{margin-top:10px;color:#919191;font-size:14px}.panel .infos[data-v-d3f704e9]{max-width:460px;margin:auto;overflow:hidden}.panel .infos[data-v-d3f704e9] div.el-form-item>label{font-weight:700}.panel .infos[data-v-d3f704e9] div.el-form-item>label:before{content:"* ";color:red}.withdraw[data-v-d3f704e9]{text-align:right}.tip-wrapper[data-v-d3f704e9]{line-height:20px;text-align:left;word-break:break-all;overflow:hidden;padding:0 20px;color:#e6a23c;max-width:320px;font-size:14px}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.files[data-v-7d8411d6]{max-width:1024px;margin:0 auto;padding-bottom:2em}@media screen and (max-width: 700px){.files[data-v-7d8411d6]{margin-top:70px}.text-btns[data-v-7d8411d6]{display:flex;flex-direction:column}.text-btns[data-v-7d8411d6] .el-button{margin-left:0;margin-bottom:0}.header[data-v-7d8411d6]{justify-content:center}.export-btns[data-v-7d8411d6]{display:flex;flex-wrap:wrap;justify-content:space-around}}.panel[data-v-7d8411d6]{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-7d8411d6]{font-size:12px;margin-right:10px}.header[data-v-7d8411d6]{display:flex;flex-wrap:wrap}.header .item[data-v-7d8411d6]{margin-right:10px;margin-bottom:10px}.el-button[data-v-7d8411d6]{margin-left:10px;margin-bottom:10px}.control-item[data-v-7d8411d6]{margin-left:10px;margin-bottom:10px;font-size:14px}.imageLoading[data-v-7d8411d6]{display:flex;align-items:center;justify-content:center;height:100%}.imageDes[data-v-7d8411d6]{position:absolute;bottom:80px;color:#fff;left:50%;transform:translate(-50%)}.progress-list[data-v-7d8411d6]{margin-top:10px}.progress-list .progress-item[data-v-7d8411d6]{margin-bottom:10px;text-align:center}.progress-list .progress-item .progress[data-v-7d8411d6]{display:flex;justify-content:center;align-items:center;margin-bottom:6px}.progress-list .progress-item .progress .el-progress--line[data-v-7d8411d6]{min-width:200px;width:260px}.progress-list .progress-item .progress .el-button[data-v-7d8411d6]{margin:0 6px}.progress-list .progress-item .des[data-v-7d8411d6]{font-size:12px}.progress-list .progress-item .des .filename[data-v-7d8411d6]{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-7d8411d6]{width:60px;color:#409eff}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{d as v,h as b,u as w,O as i,Z as x,o as g,bq as d,c as n,a as o,j as _,w as y,F as C,C as D,y as R,f as l,b as S,t as r,_ as k}from"./index-62c7029f.js";import{E}from"./el-switch-2eda0412.js";import"./validator-853854a1.js";const B={class:"user"},N={class:"panel"},V={class:"routes"},$={class:"title"},F={class:"path"},M=v({__name:"index",setup(O){const u=b(),p=w(),h=i(()=>p.options.routes.filter(e=>{var t;return(t=e.meta)==null?void 0:t.allowDisabled})),c=x([]),m=e=>{d.addDisabledRoute(e.path,!e.disabled).then(()=>{e.disabled=!e.disabled})};return g(()=>{for(const e of h.value)d.checkDisabledRoute(e.path).then(t=>{var a;c.push({path:e.path,name:e.name.toString(),title:e.meta.title,disabled:!!((a=t.data)!=null&&a.status)})})}),i(()=>u.getters["public/isMobile"]),(e,t)=>{const a=R,f=E;return l(),n("div",B,[o("div",N,[_(a,null,{default:y(()=>[S("部分路由管理")]),_:1}),o("ul",V,[(l(!0),n(C,null,D(c,s=>(l(),n("li",{key:s.name},[_(f,{onChange:j=>m(s),value:!s.disabled,style:{"--el-switch-on-color":"#13ce66","--el-switch-off-color":"#ff4949"}},null,8,["onChange","value"]),o("span",$,r(s.title),1),o("span",F,r(s.path),1)]))),128))])])])}}});const L=k(M,[["__scopeId","data-v-6edac847"]]);export{L as default};
|
|
2
|
-
//# sourceMappingURL=index-f47a54b0.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-f47a54b0.js","sources":["../../src/pages/dashboard/manage/config/index.vue"],"sourcesContent":["<template>\n <div class=\"user\">\n <div class=\"panel\">\n <el-divider>部分路由管理</el-divider>\n <ul class=\"routes\">\n <li v-for=\"r in showRoutes\" :key=\"r.name\">\n <el-switch\n @change=\"handleChangeRoute(r)\"\n :value=\"!r.disabled\"\n style=\"\n --el-switch-on-color: #13ce66;\n --el-switch-off-color: #ff4949;\n \"\n />\n <span class=\"title\">{{ r.title }}</span>\n <span class=\"path\">{{ r.path }}</span>\n </li>\n </ul>\n </div>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport { computed, onMounted, reactive, ref } from 'vue'\nimport { useStore } from 'vuex'\nimport { useRouter } from 'vue-router'\nimport { SuperOverviewApi } from '@/apis'\n\nconst $store = useStore()\nconst $router = useRouter()\nconst routes = computed(() =>\n $router.options.routes.filter((v) => v.meta?.allowDisabled)\n)\nconst showRoutes = reactive<\n {\n path: string\n name: string\n title: string\n disabled: boolean\n }[]\n>([])\n\nconst handleChangeRoute = (r: typeof showRoutes[0]) => {\n SuperOverviewApi.addDisabledRoute(r.path, !r.disabled).then(() => {\n r.disabled = !r.disabled\n })\n}\nonMounted(() => {\n for (const r of routes.value) {\n SuperOverviewApi.checkDisabledRoute(r.path).then((v) => {\n showRoutes.push({\n path: r.path,\n name: r.name.toString(),\n title: r.meta.title,\n disabled: !!v.data?.status\n })\n })\n }\n})\nconst isMobile = computed(() => $store.getters['public/isMobile'])\n</script>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n}\n\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\n.routes {\n max-width: 500px;\n margin: 0 auto;\n li {\n display: flex;\n padding: 20px;\n align-items: center;\n .title {\n font-weight: bold;\n margin: 0 10px;\n }\n }\n}\n</style>\n"],"names":["$store","useStore","$router","useRouter","routes","computed","v","_a","showRoutes","reactive","handleChangeRoute","r","SuperOverviewApi","onMounted"],"mappings":"mWA4BA,MAAAA,EAAAC,IACAC,EAAAC,IACAC,EAAAC,EAAe,IAAAH,EAAA,QAAA,OAAA,OAAAI,GAAA,OAAA,OAAAC,EAAAD,EAAA,OAAA,YAAAC,EAAA,cAAA,CAC6C,EAE5DC,EAAAC,EAAA,CAAA,CAAA,EASAC,EAAAC,GAAA,CACEC,EAAA,iBAAAD,EAAA,KAAA,CAAAA,EAAA,QAAA,EAAA,KAAA,IAAA,CACEA,EAAA,SAAA,CAAAA,EAAA,QAAgB,CAAA,CACjB,EAEH,OAAAE,EAAA,IAAA,CACE,UAAAF,KAAAP,EAAA,MACEQ,EAAA,mBAAAD,EAAA,IAAA,EAAA,KAAAL,GAAA,OACEE,EAAA,KAAA,CAAgB,KAAAG,EAAA,KACN,KAAAA,EAAA,KAAA,SAAA,EACc,MAAAA,EAAA,KAAA,MACR,SAAA,CAAA,GAAAJ,EAAAD,EAAA,OAAA,MAAAC,EAAA,OACM,CAAA,CACrB,CAAA,CAEL,CAAA,EAEFF,EAAA,IAAAL,EAAA,QAAA,iBAAA,CAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
System.register(["./index-legacy.978f90e1.js","./el-switch-legacy.e17e7919.js","./validator-legacy.b34dfdfa.js"],(function(e,a){"use strict";var t,s,d,l,n,i,o,r,c,u,p,h,m,x,g,b,f,v,w;return{setters:[e=>{t=e.d,s=e.h,d=e.u,l=e.O,n=e.Z,i=e.o,o=e.bq,r=e.c,c=e.a,u=e.j,p=e.w,h=e.F,m=e.C,x=e.y,g=e.f,b=e.b,f=e.t,v=e._},e=>{w=e.E},null],execute:function(){var a=document.createElement("style");a.textContent="@media screen and (max-width: 700px){.user[data-v-6edac847]{margin-top:40px!important}}.user[data-v-6edac847]{margin:0 auto}.panel[data-v-6edac847]{max-width:1256px;padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}.routes[data-v-6edac847]{max-width:500px;margin:0 auto}.routes li[data-v-6edac847]{display:flex;padding:20px;align-items:center}.routes li .title[data-v-6edac847]{font-weight:700;margin:0 10px}\n",document.head.appendChild(a);const y={class:"user"},_={class:"panel"},C={class:"routes"},j={class:"title"},k={class:"path"};e("default",v(t({__name:"index",setup(e){const a=s(),t=d(),v=l((()=>t.options.routes.filter((e=>e.meta?.allowDisabled)))),D=n([]);return i((()=>{for(const e of v.value)o.checkDisabledRoute(e.path).then((a=>{D.push({path:e.path,name:e.name.toString(),title:e.meta.title,disabled:!!a.data?.status})}))})),l((()=>a.getters["public/isMobile"])),(e,a)=>{const t=x,s=w;return g(),r("div",y,[c("div",_,[u(t,null,{default:p((()=>[b("部分路由管理")])),_:1}),c("ul",C,[(g(!0),r(h,null,m(D,(e=>(g(),r("li",{key:e.name},[u(s,{onChange:a=>(e=>{o.addDisabledRoute(e.path,!e.disabled).then((()=>{e.disabled=!e.disabled}))})(e),value:!e.disabled,style:{"--el-switch-on-color":"#13ce66","--el-switch-off-color":"#ff4949"}},null,8,["onChange","value"]),c("span",j,f(e.title),1),c("span",k,f(e.path),1)])))),128))])])])}}}),[["__scopeId","data-v-6edac847"]]))}}}));
|
|
2
|
-
//# sourceMappingURL=index-legacy.45ec3501.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
System.register(["./index-legacy.978f90e1.js","./el-loading-legacy.0f35210f.js","./el-progress-legacy.db8b5855.js","./el-form-item-legacy.d28db5d0.js","./tip-legacy.6e921091.js","./index-legacy.1540c5bc.js","./index-legacy.9dc57803.js","./index-legacy.bd5a4368.js","./isEqual-legacy.985bb619.js","./el-dialog-legacy.0bcf48a4.js","./el-select-legacy.ad6ded5a.js","./validator-legacy.b34dfdfa.js","./aria-legacy.af0825d3.js"],(function(e,a){"use strict";var l,t,i,n,s,o,d,u,r,p,v,c,f,m,g,h,y,x,k,w,b,_,z,j,N,$,E,C,T,U,I,S,L,F,M,O,D,P,V,A,G,J,R,W,q,B,H,K,Y,Z,Q,X,ee,ae,le,te,ie,ne;return{setters:[e=>{l=e.g,t=e.d,i=e.f,n=e.c,s=e.a,o=e.h,d=e.O,u=e.u,r=e.a1,p=e.Z,v=e.r,c=e.$,f=e.o,m=e.aU,g=e.E,h=e.bd,y=e.i,x=e.j,k=e.w,w=e.F,b=e.C,_=e.a6,z=e.t,j=e.S,N=e.a7,$=e.D,E=e.ae,C=e.a9,T=e.bU,U=e.ab,I=e.a8,S=e.ad,L=e.y,F=e.x,M=e.bV,O=e.aY,D=e.P,P=e.b,V=e.k,A=e.a3,G=e.a_,J=e.s,R=e.aW,W=e.v,q=e.I,B=e.p,H=e.e,K=e._},e=>{Y=e.v},e=>{Z=e.E,Q=e.a},e=>{X=e.a,ee=e.E},e=>{ae=e.T,le=e.E},e=>{te=e.I,ie=e.L},e=>{ne=e.E},null,null,null,null,null,null],execute:function(){var a=document.createElement("style");a.textContent='@charset "UTF-8";.task-panel[data-v-d3f704e9] ul.el-upload-list{border:1px dashed #d4d4d4;padding:10px}.task-panel[data-v-d3f704e9] ul.el-upload-list:before{content:"此处展示选择文件列表";font-size:12px;position:relative;bottom:4px}.task-panel[data-v-d3f704e9] .el-upload-list__item-name{display:block;overflow:hidden;max-width:290px;text-overflow:ellipsis;word-break:keep-all}.task-panel[data-v-d3f704e9] .is-ready .el-icon--close{display:block;color:#000}.task-panel[data-v-d3f704e9]{background-color:#f3f6f8;padding-bottom:1rem;position:relative}.pc-nav[data-v-d3f704e9]{background-color:#fff;display:flex;padding:10px;justify-content:space-between;align-items:center}.pc-nav .exit[data-v-d3f704e9]{cursor:pointer}.pc-nav .nav[data-v-d3f704e9]{display:flex}.pc-nav .nav nav[data-v-d3f704e9]{display:flex;align-items:center}.pc-nav .nav nav .nav-item[data-v-d3f704e9]{font-size:1rem;color:#595959;padding:10px;cursor:pointer}.pc-nav .nav nav .nav-item.active[data-v-d3f704e9]{color:#409eff!important;font-weight:600}.pc-nav .nav .exit[data-v-d3f704e9]{color:#595959}.pc-nav .logo[data-v-d3f704e9]{width:180px;margin:0 10px}.pc-nav .logo img[data-v-d3f704e9]{height:40px}.panel[data-v-d3f704e9]{max-width:1024px;padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}.panel .name[data-v-d3f704e9]{text-align:center}.panel .ddl[data-v-d3f704e9]{margin-top:10px;color:#919191;font-size:14px}.panel .infos[data-v-d3f704e9]{max-width:460px;margin:auto;overflow:hidden}.panel .infos[data-v-d3f704e9] div.el-form-item>label{font-weight:700}.panel .infos[data-v-d3f704e9] div.el-form-item>label:before{content:"* ";color:red}.withdraw[data-v-d3f704e9]{text-align:right}.tip-wrapper[data-v-d3f704e9]{line-height:20px;text-align:left;word-break:break-all;overflow:hidden;padding:0 20px;color:#e6a23c;max-width:320px;font-size:14px}\n',document.head.appendChild(a);const se=t({name:"UploadFilled"}),oe={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},de=[s("path",{fill:"currentColor",d:"M544 864V672h128L512 480 352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0 1 64 624c0-123.136 93.12-223.488 212.608-237.248A239.808 239.808 0 0 1 512 192a239.872 239.872 0 0 1 235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 0 1-240 240c-5.376 0-10.56-1.28-16-1.6v1.6H544z"},null,-1)];var ue=l(se,[["render",function(e,a,l,t,s,o){return i(),n("svg",oe,de)}]]);const re=e=>(B("data-v-d3f704e9"),e=e(),H(),e),pe={class:"task-panel"},ve={class:"pc-nav"},ce={class:"nav"},fe={class:"logo"},me=re((()=>s("img",{style:{height:"40px",width:"170px"},src:"https://img.cdn.sugarat.top/easypicker/EasyPicker.png",alt:"logo"},null,-1))),ge=["onClick"],he={key:0,"element-loading-text":"Loading...",class:"panel tc"},ye={class:"name"},xe={class:"tip-wrapper"},ke={class:"ddl"},we={key:0},be={key:3},_e={class:"infos"},ze={key:0},je={class:"infos"},Ne=re((()=>s("div",{class:"el-upload__text"},[P(" 将文件拖于此处 or "),s("em",null,"直接选择文件")],-1))),$e={class:"p10"},Ee={class:"p10"},Ce={class:"p10 option-tips"},Te={style:{color:"red"}},Ue={style:{color:"red"}},Ie=re((()=>s("br",null,null,-1))),Se=re((()=>s("br",null,null,-1))),Le=re((()=>s("br",null,null,-1))),Fe=re((()=>s("strong",null,"选择大文件后需要等待一会儿才展示处理",-1))),Me=re((()=>s("br",null,null,-1))),Oe={class:"withdraw"},De={key:1,class:"panel tc"},Pe={class:"name"},Ve={style:{"padding-top":"20px"}};e("default",K(t({__name:"index",setup(e){const a=o(),l=d((()=>a.getters["public/isMobile"])),t=u(),B=r(),H=p([{title:"我也要收集",path:"https://docs.ep.sugarat.top/"}]),K=p({name:"",category:""}),se=p({bindField:""}),oe=d((()=>G(se.format))),de=v(""),re=v(0),Ae=d((()=>re.value<=0)),Ge=d((()=>{let e=~~(re.value/1e3),a=~~(e/3600);const l=~~(a/24);a%=24;const t=~~(e%3600/60);return e%=60,`剩余${l}天${a}时${t}分${e}秒`})),Je=(e=!0)=>{if(se?.ddl){const e=new Date(se.ddl);re.value=e.getTime()-Date.now()}else re.value=0;e&&setTimeout((()=>{Je()}),1e3)},Re=d((()=>{if(se?.ddl){const e=new Date(se.ddl);return J(e)}return""})),We=p([]),qe=v([]),Be=v(),He=d((()=>qe.value.filter((e=>"uploading"===e.status)).length>0)),Ke=e=>"uploading"!==e.status&&"success"!==e.status||ne.confirm("不影响已经上传成功的,正在上传的将取消上传","确定从列表移除文件吗?").then((()=>("uploading"===e.status&&(g.info(`取消${e.name}的上传`),e.subscription.unsubscribe()),!0))).catch((()=>!1)),Ye=d((()=>We.every((e=>e.value)))),Ze=d((()=>se.bindField.trim()||"姓名")),Qe=d((()=>We.find((e=>e.text===Ze.value)))),Xe=d((()=>se.people&&!Qe.value)),ea=p({peopleName:""}),aa=(e,a,l)=>{if(!a){const e=`请输入${Ze.value}`;return l(new Error(e)),void g.error(e)}R.checkPeopleIsExist(de.value,a).then((e=>{e.data.exist||g.error("你不在此次提交名单中,如有疑问请联系管理员"),l(e.data.exist?void 0:new Error("你不在此次提交名单中,如有疑问请联系管理员"))}))},la=v(),ta=p({peopleName:[{validator:aa,trigger:"blur"}]}),ia=()=>{if(Qe.value){const e=We.find((e=>e.text===Ze.value))?.value;return ea.peopleName=e||"",new Promise((a=>{aa(0,e,a)})).then((e=>!e))}return la.value.validate((e=>e))},na=async()=>{if(Ye.value){if(se.people&&!(await ia()))return;(()=>{const e=qe.value;for(const a of e)if(a.md5){if("ready"===a.status){a.status="uploading";let{name:e}=a;const l=e;se.rewrite&&(e=We.map((e=>e.value)).join(oe.value.splitChar||"-")+E(e)),e=M(e);const t=`easypicker2/${de.value}/${a.md5}/${e}`;U.getUploadToken().then((i=>{O(i.data.token,a.raw,t,{success(t){const{fsize:i}=t;U.addFile({originName:l,name:e,taskKey:de.value,taskName:K.name,size:i,hash:a.md5,info:JSON.stringify(We),people:ea.peopleName}).then((()=>{a.status="success",g.success(`文件:${a.name}提交成功`),se.people&&R.updatePeopleStatus(de.value,e,ea.peopleName,a.md5)}))},process(e,l,t){a.percentage=Math.floor(e),a.subscription=t}})}))}}else g.info(`文件(${a.name})的唯一指纹还在计算中,再等待一会儿再点击上传`),setTimeout((()=>{g.info("文件越大计算时间越长(1G通常需要20s)")}),100)})()}else g.warning("请先完成必要信息的填写")},sa=d((()=>{for(const e of qe.value)if("ready"===e.status)return!0;return!1})),oa=d((()=>{for(const e of qe.value)if(["success","ready"].includes(e.status))return!0;return!1})),da=v(0),ua=e=>{const{name:a}=e;if(oe.value.format.length&&oe.value.status){const l=E(a);if(!oe.value.format.find((e=>l.endsWith(e))))return g.error(`${a} 格式不符合要球`),void Be.value.handleRemove(e)}if(oe.value.size&&oe.value.size<e.size)return g.error(`${a} 大小${C(e.size)} 不符合要求`),void Be.value.handleRemove(e);da.value+=1,T(e.raw).then((a=>{e.md5=a,da.value-=1}))},ra=d((()=>oe.value.limit||10)),pa=()=>{g.warning(`一次提交最多只能选择${ra.value}个文件,请移除已经上传成功的或刷新页面`)},va=v(!1),ca=v(""),fa=()=>{U.getTemplateUrl(se.template,de.value).then((e=>{va.value=!0;const{link:a}=e.data;ca.value=a,I(a,se.template)})).catch((()=>{g.warning("文件已从服务器上移除,请联系管理员重新上传")}))},ma=v(!1),ga=async()=>{if(Ye.value){if(se.people&&!(await ia()))return;(()=>{const e=qe.value;for(const a of e)if(a.md5){if(!["fail","uploading"].includes(a.status)){let{name:e}=a;se.rewrite&&(e=We.map((e=>e.value)).join(oe.value.splitChar||"-")+E(e)),U.withdrawFile({taskKey:de.value,taskName:K.name,filename:e,hash:a.md5,info:JSON.stringify(We),peopleName:ea.peopleName}).then((()=>{g.success(`文件:${a.name}撤回成功`),a.name+=" - (已撤回 ✅ )",a.status="fail"})).catch((()=>{g.error(`撤回失败: 没有文件:${a.name}对应提交记录`)}))}}else g.info(`文件(${a.name})的唯一指纹还在计算中,再等待一会儿再点击上传`),setTimeout((()=>{g.info("文件越大计算时间越长(1G通常需要20s)")}),100)})()}else g.warning("请先完成必要信息的填写")},ha=async()=>{if(Ye.value){if(se.people&&!(await ia()))return;U.checkSubmitStatus(de.value,We,ea.peopleName).then((e=>{e.data.isSubmit?g.success("已经提交过啦"):g.warning("还未提交过哟")}))}else g.warning("请先完成必要信息的填写,需和提交时信息完全一致")},ya=v(!1),xa=v(!1),ka=(e=[],a=[])=>e.length===a.length&&e.every(((e,l)=>e.type===a[l].type&&e.text===a[l].text&&ka(e.children,a[l].children))),wa=(e=!1)=>{m.getTaskMoreInfo(de.value).then((a=>{Object.assign(se,a.data),ka(We,S(se.info))||(We.splice(0,We.length),We.push(...S(se.info)),e&&g.success("表单信息有更新")),Je(!1),ya.value=!1}))},ba=()=>{xa.value=!0},_a=()=>{xa.value&&!He.value&&(xa.value=!1,wa(!0))},za=d((()=>Ae.value?Re.value:Re.value+Ge.value)),ja=p({text:"",imgs:[]}),Na=v([]);return c((()=>se.tip),(()=>{try{const e=JSON.parse(se.tip);ja.imgs=e.imgs,ja.text=e.text||"",Na.value=ja.imgs.map((e=>({...e,url:"https://img.cdn.sugarat.top/mdImg/MTY3NzkxMDI1NTU1Nw==20140524124237518.gif"}))),Na.value.length&&D.getTipImageUrl(de.value,Na.value.map((e=>({uid:e.uid,name:e.name})))).then((e=>{e.data.forEach(((e,a)=>{Na.value[a].url=e.cover,Object.assign(Na.value[a],{preview:e.preview})}))}))}catch{ja.text="",ja.imgs=[],Na.value=[]}})),f((()=>{de.value=B.params.key,de.value&&(ya.value=!0,m.getTaskInfo(de.value).then((e=>{Object.assign(K,e.data)})).catch((e=>{4001===e.code&&(g.error("任务不存在"),de.value="",K.name="任务不存在")})),wa(),Je()),window.addEventListener("blur",ba),window.addEventListener("focus",_a)})),h((()=>{window.removeEventListener("blur",ba),window.removeEventListener("focus",_a)})),(e,a)=>{const o=y("router-link"),d=L,u=le,r=Q,p=W,v=ee,c=X,f=F,m=q,g=Z,h=Y;return i(),n("div",pe,[s("div",ve,[s("div",ce,[s("div",fe,[x(o,{to:"/"},{default:k((()=>[me])),_:1})]),s("nav",null,[(i(!0),n(w,null,b(H,((e,a)=>(i(),n("div",{class:"nav-item",key:a,onClick:e=>(e=>{H[e].path.startsWith("http")?window.location.href=H[e].path:t.push({path:H[e].path})})(a)},z(e.title),9,ge)))),128))])])]),de.value?_((i(),n("div",he,[s("h1",ye,z(K.name),1),!ja.text||Re.value&&Ae.value?j("",!0):(i(),n(w,{key:0},[x(d,null,{default:k((()=>[P("⚠️ 注意事项 ⚠️")])),_:1}),x(ae,null,{default:k((()=>[s("div",xe,[(i(!0),n(w,null,b(ja.text.split("\n"),((e,a)=>(i(),n("p",{key:a},z(e.replace(/\s/g," ")),1)))),128))])])),_:1})],64)),!Na.value.length||Re.value&&Ae.value?j("",!0):(i(!0),n(w,{key:1},b(Na.value,((e,a)=>(i(),$(u,{"hide-on-click-modal":"",key:e.uid,style:{width:"100px",height:"100px",margin:"10px"},src:e.url,"zoom-rate":1.2,"preview-src-list":Na.value.map((e=>e.preview)),"initial-index":a,fit:"contain"},null,8,["src","preview-src-list","initial-index"])))),128)),Re.value?(i(),n(w,{key:2},[x(d,null,{default:k((()=>[P("截止时间")])),_:1}),s("h2",ke,z(za.value),1),Ae.value?(i(),n("div",we,[x(r,{description:"已经结束啦!"})])):j("",!0)],64)):j("",!0),Re.value&&Ae.value?j("",!0):(i(),n("div",be,[x(d,null,{default:k((()=>[P("必要信息填写")])),_:1}),s("div",_e,[_(s("div",null,[x(ae,null,{default:k((()=>[P("“"+z(Ze.value)+"”在参与名单里才能正常提交",1)])),_:1})],512),[[N,se.people]]),Xe.value?(i(),n("div",ze,[s("div",je,[x(c,{ref_key:"validModalRef",ref:la,rules:ta,"status-icon":"",model:ea,disabled:He.value,"label-position":"top"},{default:k((()=>[x(v,{prop:"peopleName",label:Ze.value},{default:k((()=>[x(p,{maxlength:14,clearable:"","show-word-limit":"",placeholder:`请输入 ${Ze.value}`,modelValue:ea.peopleName,"onUpdate:modelValue":a[0]||(a[0]=e=>ea.peopleName=e)},null,8,["placeholder","modelValue"])])),_:1},8,["label"])])),_:1},8,["rules","model","disabled"])])])):j("",!0),x(te,{infos:We,disabled:He.value},null,8,["infos","disabled"])]),x(g,{style:{"max-width":"400px",margin:"0 auto"},drag:!l.value,action:"",ref_key:"fileUpload",ref:Be,"on-change":ua,"before-remove":Ke,"on-exceed":pa,"auto-upload":!1,multiple:"",limit:ra.value,"file-list":qe.value,"onUpdate:fileList":a[1]||(a[1]=e=>qe.value=e)},{tip:k((()=>[_(s("div",$e,[x(ae,null,{default:k((()=>[P("还有 "+z(da.value)+" 个文件正在生成校验信息,请稍等(1G通常需要20s)",1)])),_:1})],512),[[N,!!da.value]])])),default:k((()=>[l.value?(i(),$(f,{key:0,type:"primary"},{default:k((()=>[P("选择文件")])),_:1})):(i(),n(w,{key:1},[x(m,{class:"el-icon--upload"},{default:k((()=>[x(V(ue))])),_:1}),Ne],64))])),_:1},8,["drag","limit","file-list"]),s("div",Ee,[ma.value?(i(),$(f,{key:0,size:"default",onClick:ga,type:"warning",disabled:!oa.value||!!da.value},{default:k((()=>[P("一键撤回")])),_:1},8,["disabled"])):(i(),$(f,{key:1,size:"default",onClick:na,type:"success",disabled:!sa.value||!!da.value},{default:k((()=>[P("提交文件")])),_:1},8,["disabled"])),x(f,{onClick:ha,size:"default"},{default:k((()=>[P("查询提交情况")])),_:1})]),s("div",Ce,[oe.value.status&&oe.value.format.length?(i(),$(ae,{key:0},{default:k((()=>[P("限制格式为: "),s("span",Te,z(oe.value.format.join(", ")),1)])),_:1})):j("",!0),oe.value.size?(i(),$(ae,{key:1},{default:k((()=>[P("限制文件大小不超过: "),s("span",Ue,z(V(C)(oe.value.size)),1)])),_:1})):j("",!0),ma.value?(i(),$(ae,{key:2},{default:k((()=>[P("① 须保证选择的文件与提交时的文件一致"),Ie,P(" ② 填写表单信息一致 "),Se,P(" ③ 完全一模一样的文件的提交记录(内容md5+命名),将会一次性全部撤回")])),_:1})):(i(),$(ae,{key:3},{default:k((()=>[P("① 选择完文件,点击 ”提交文件“即可 "),Le,P(" ② "),Fe,se.template?(i(),n(w,{key:0},[Me,P(" ③ "),s("strong",null,[x(f,{type:"primary",text:"",style:{color:"#85ce61"},size:"small",onClick:fa},{default:k((()=>[P("右下角可 “查看提交示例” ")])),_:1})])],64)):j("",!0)])),_:1}))]),s("div",Oe,[se.template?(i(),$(f,{key:0,type:"primary",text:"",style:{color:"#85ce61"},size:"small",onClick:fa},{default:k((()=>[P("查看提交示例")])),_:1})):j("",!0),ma.value?(i(),$(f,{key:1,onClick:a[2]||(a[2]=e=>ma.value=!1),size:"small",type:"primary",text:""},{default:k((()=>[P("正常提交")])),_:1})):(i(),$(f,{key:2,size:"small",onClick:a[3]||(a[3]=e=>ma.value=!0),type:"primary",text:""},{default:k((()=>[P("我要撤回")])),_:1}))])]))])),[[h,ya.value]]):(i(),n("div",De,[s("h1",Pe,z(K.name),1)])),x(ie,{value:va.value,"onUpdate:value":a[4]||(a[4]=e=>va.value=e),title:"示例文件下载链接",link:ca.value},null,8,["value","link"]),s("div",Ve,[x(A,{type:"task"})])])}}}),[["__scopeId","data-v-d3f704e9"]]))}}}));
|
|
2
|
-
//# sourceMappingURL=index-legacy.5d174bde.js.map
|