@sugarat/easypicker2-client 2.7.2 → 2.7.3
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-B9140nBj.js → data-analysis-Bnq_VWU8.js} +2 -2
- package/dist/assets/{data-analysis-B9140nBj.js.map → data-analysis-Bnq_VWU8.js.map} +1 -1
- package/dist/assets/{data-analysis-legacy-hCmX88pc.js → data-analysis-legacy-_KcR253K.js} +2 -2
- package/dist/assets/{data-analysis-legacy-hCmX88pc.js.map → data-analysis-legacy-_KcR253K.js.map} +1 -1
- package/dist/assets/{data-board-D3o_ZTM6.js → data-board-L3s5ouKd.js} +2 -2
- package/dist/assets/{data-board-D3o_ZTM6.js.map → data-board-L3s5ouKd.js.map} +1 -1
- package/dist/assets/{data-board-legacy-B3GeXOqc.js → data-board-legacy-BFxWeFnQ.js} +2 -2
- package/dist/assets/{data-board-legacy-B3GeXOqc.js.map → data-board-legacy-BFxWeFnQ.js.map} +1 -1
- package/dist/assets/{el-date-picker-legacy-D8g_iKhG.js → el-date-picker-legacy-Uk9x97L5.js} +2 -2
- package/dist/assets/{el-date-picker-legacy-D8g_iKhG.js.map → el-date-picker-legacy-Uk9x97L5.js.map} +1 -1
- package/dist/assets/{el-date-picker-DLwRZtue.js → el-date-picker-mhY2RJMG.js} +2 -2
- package/dist/assets/{el-date-picker-DLwRZtue.js.map → el-date-picker-mhY2RJMG.js.map} +1 -1
- package/dist/assets/{el-dialog-Dq3XmL6w.js → el-dialog-PRccau6N.js} +2 -2
- package/dist/assets/{el-dialog-Dq3XmL6w.js.map → el-dialog-PRccau6N.js.map} +1 -1
- package/dist/assets/{el-dialog-legacy-DCFOVWEQ.js → el-dialog-legacy-BRLM43ZY.js} +2 -2
- package/dist/assets/{el-dialog-legacy-DCFOVWEQ.js.map → el-dialog-legacy-BRLM43ZY.js.map} +1 -1
- package/dist/assets/{el-dropdown-item-C3aOY1Nr.js → el-dropdown-item-Cr71teRg.js} +2 -2
- package/dist/assets/{el-dropdown-item-C3aOY1Nr.js.map → el-dropdown-item-Cr71teRg.js.map} +1 -1
- package/dist/assets/{el-dropdown-item-legacy-QQu1PUxO.js → el-dropdown-item-legacy-B0ufpHvy.js} +2 -2
- package/dist/assets/{el-dropdown-item-legacy-QQu1PUxO.js.map → el-dropdown-item-legacy-B0ufpHvy.js.map} +1 -1
- package/dist/assets/{el-form-item-CtSEmj9z.js → el-form-item-DOwM4Mv8.js} +2 -2
- package/dist/assets/{el-form-item-CtSEmj9z.js.map → el-form-item-DOwM4Mv8.js.map} +1 -1
- package/dist/assets/{el-form-item-legacy-BS5eT84Y.js → el-form-item-legacy-CvQy7syv.js} +2 -2
- package/dist/assets/{el-form-item-legacy-BS5eT84Y.js.map → el-form-item-legacy-CvQy7syv.js.map} +1 -1
- package/dist/assets/{el-loading-BzK_8zqi.js → el-loading-DNzUD85e.js} +2 -2
- package/dist/assets/{el-loading-BzK_8zqi.js.map → el-loading-DNzUD85e.js.map} +1 -1
- package/dist/assets/{el-loading-legacy-DWfn3F3x.js → el-loading-legacy-B3RLcjwN.js} +2 -2
- package/dist/assets/{el-loading-legacy-DWfn3F3x.js.map → el-loading-legacy-B3RLcjwN.js.map} +1 -1
- package/dist/assets/{el-pagination-Qx_lnumK.js → el-pagination-iCicJonH.js} +2 -2
- package/dist/assets/{el-pagination-Qx_lnumK.js.map → el-pagination-iCicJonH.js.map} +1 -1
- package/dist/assets/{el-pagination-legacy-DqLvzT2t.js → el-pagination-legacy-Bf-Bzx7n.js} +2 -2
- package/dist/assets/{el-pagination-legacy-DqLvzT2t.js.map → el-pagination-legacy-Bf-Bzx7n.js.map} +1 -1
- package/dist/assets/{el-progress-CeLYmjYA.js → el-progress-1hLO5hs0.js} +2 -2
- package/dist/assets/{el-progress-CeLYmjYA.js.map → el-progress-1hLO5hs0.js.map} +1 -1
- package/dist/assets/{el-progress-legacy-CwFO38du.js → el-progress-legacy-QmxDezwR.js} +2 -2
- package/dist/assets/{el-progress-legacy-CwFO38du.js.map → el-progress-legacy-QmxDezwR.js.map} +1 -1
- package/dist/assets/{el-select-HG63LP3Z.js → el-select-CVjQdC39.js} +2 -2
- package/dist/assets/{el-select-HG63LP3Z.js.map → el-select-CVjQdC39.js.map} +1 -1
- package/dist/assets/{el-select-legacy-fKvGMZFT.js → el-select-legacy-DSGgSQYX.js} +2 -2
- package/dist/assets/{el-select-legacy-fKvGMZFT.js.map → el-select-legacy-DSGgSQYX.js.map} +1 -1
- package/dist/assets/{el-switch-FjmuXBNe.js → el-switch-B76QvbJN.js} +2 -2
- package/dist/assets/{el-switch-FjmuXBNe.js.map → el-switch-B76QvbJN.js.map} +1 -1
- package/dist/assets/{el-switch-legacy-CU4cCeO5.js → el-switch-legacy-CHkEgavQ.js} +2 -2
- package/dist/assets/{el-switch-legacy-CU4cCeO5.js.map → el-switch-legacy-CHkEgavQ.js.map} +1 -1
- package/dist/assets/{el-tab-pane-CuYcnzTM.js → el-tab-pane-BhVByOfe.js} +2 -2
- package/dist/assets/{el-tab-pane-CuYcnzTM.js.map → el-tab-pane-BhVByOfe.js.map} +1 -1
- package/dist/assets/{el-tab-pane-legacy-CDSRCQdO.js → el-tab-pane-legacy-DMdhUCHY.js} +2 -2
- package/dist/assets/{el-tab-pane-legacy-CDSRCQdO.js.map → el-tab-pane-legacy-DMdhUCHY.js.map} +1 -1
- package/dist/assets/{el-table-column-legacy-DDZdwCAr.js → el-table-column-legacy-N_oU_-0P.js} +2 -2
- package/dist/assets/{el-table-column-legacy-DDZdwCAr.js.map → el-table-column-legacy-N_oU_-0P.js.map} +1 -1
- package/dist/assets/{el-table-column-B2R1FOoB.js → el-table-column-tkbtgrcD.js} +2 -2
- package/dist/assets/{el-table-column-B2R1FOoB.js.map → el-table-column-tkbtgrcD.js.map} +1 -1
- package/dist/assets/{index-tyMcidBi.js → index-3yen43So.js} +2 -2
- package/dist/assets/{index-tyMcidBi.js.map → index-3yen43So.js.map} +1 -1
- package/dist/assets/{index-DABL-KOd.js → index-9zuSLjpa.js} +2 -2
- package/dist/assets/{index-DABL-KOd.js.map → index-9zuSLjpa.js.map} +1 -1
- package/dist/assets/{index-BjdYG4YE.js → index-B-6zRvEX.js} +2 -2
- package/dist/assets/{index-BjdYG4YE.js.map → index-B-6zRvEX.js.map} +1 -1
- package/dist/assets/{index-DREZLSQi.js → index-BN1f1UM3.js} +2 -2
- package/dist/assets/{index-DREZLSQi.js.map → index-BN1f1UM3.js.map} +1 -1
- package/dist/assets/{index-HzWmB96f.js → index-BUmkgniE.js} +2 -2
- package/dist/assets/{index-HzWmB96f.js.map → index-BUmkgniE.js.map} +1 -1
- package/dist/assets/index-BbfnoqK6.js +2 -0
- package/dist/assets/index-BbfnoqK6.js.map +1 -0
- package/dist/assets/index-C3IckGNL.js +2 -0
- package/dist/assets/index-C3IckGNL.js.map +1 -0
- package/dist/assets/{index-C0ZXXBCX.js → index-CYAf_OTx.js} +3 -3
- package/dist/assets/{index-C0ZXXBCX.js.map → index-CYAf_OTx.js.map} +1 -1
- package/dist/assets/{index-BvTJrWND.js → index-Cb6-p2hG.js} +2 -2
- package/dist/assets/{index-BvTJrWND.js.map → index-Cb6-p2hG.js.map} +1 -1
- package/dist/assets/index-Cfg2jkVw.css +1 -0
- package/dist/assets/{index-I0Y2y6h5.css → index-CkMvb3wF.css} +1 -1
- package/dist/assets/{index-DIlzTatU.js → index-Cl4G6EQO.js} +2 -2
- package/dist/assets/{index-DIlzTatU.js.map → index-Cl4G6EQO.js.map} +1 -1
- package/dist/assets/index-CnbFxlpi.css +1 -0
- package/dist/assets/{index-DclP3Kg-.js → index-Cyb1OjRN.js} +2 -2
- package/dist/assets/{index-DclP3Kg-.js.map → index-Cyb1OjRN.js.map} +1 -1
- package/dist/assets/{index-U2z5KAu0.js → index-D7aZxhM6.js} +2 -2
- package/dist/assets/{index-U2z5KAu0.js.map → index-D7aZxhM6.js.map} +1 -1
- package/dist/assets/{index-BjPgOd_H.js → index-DI41wbky.js} +2 -2
- package/dist/assets/{index-BjPgOd_H.js.map → index-DI41wbky.js.map} +1 -1
- package/dist/assets/{index-0SN-qZs5.js → index-DcOjlpKI.js} +2 -2
- package/dist/assets/{index-0SN-qZs5.js.map → index-DcOjlpKI.js.map} +1 -1
- package/dist/assets/{index-BkLqrfrW.js → index-DjO-nUIS.js} +2 -2
- package/dist/assets/{index-BkLqrfrW.js.map → index-DjO-nUIS.js.map} +1 -1
- package/dist/assets/{index-BxLy8VN3.js → index-DrKX0cCg.js} +2 -2
- package/dist/assets/{index-BxLy8VN3.js.map → index-DrKX0cCg.js.map} +1 -1
- package/dist/assets/{index-CsvxKrFP.js → index-F3S0vKOW.js} +2 -2
- package/dist/assets/{index-CsvxKrFP.js.map → index-F3S0vKOW.js.map} +1 -1
- package/dist/assets/{index-BMhqAx1_.js → index-I78Ur1Md.js} +2 -2
- package/dist/assets/{index-BMhqAx1_.js.map → index-I78Ur1Md.js.map} +1 -1
- package/dist/assets/{index-GC0X-O3Y.js → index-L0LtrfyP.js} +2 -2
- package/dist/assets/{index-GC0X-O3Y.js.map → index-L0LtrfyP.js.map} +1 -1
- package/dist/assets/index-lTmxAqnX.js +2 -0
- package/dist/assets/index-lTmxAqnX.js.map +1 -0
- package/dist/assets/{index-legacy-BSv-V3Il.js → index-legacy-BJNK4MqF.js} +2 -2
- package/dist/assets/index-legacy-BJNK4MqF.js.map +1 -0
- package/dist/assets/{index-legacy-B4IHsyj2.js → index-legacy-BLlk8iq-.js} +2 -2
- package/dist/assets/{index-legacy-B4IHsyj2.js.map → index-legacy-BLlk8iq-.js.map} +1 -1
- package/dist/assets/{index-legacy-DxQA53Qy.js → index-legacy-BmWYm3m_.js} +2 -2
- package/dist/assets/{index-legacy-DxQA53Qy.js.map → index-legacy-BmWYm3m_.js.map} +1 -1
- package/dist/assets/{index-legacy-BKxszgZW.js → index-legacy-Bnp7569A.js} +2 -2
- package/dist/assets/{index-legacy-BKxszgZW.js.map → index-legacy-Bnp7569A.js.map} +1 -1
- package/dist/assets/{index-legacy-GbLWntci.js → index-legacy-CQ24Si-w.js} +2 -2
- package/dist/assets/{index-legacy-GbLWntci.js.map → index-legacy-CQ24Si-w.js.map} +1 -1
- package/dist/assets/{index-legacy-BSXJnLod.js → index-legacy-CT1nF7s9.js} +2 -2
- package/dist/assets/{index-legacy-BSXJnLod.js.map → index-legacy-CT1nF7s9.js.map} +1 -1
- package/dist/assets/{index-legacy-DO2MADPO.js → index-legacy-CeVzo60P.js} +2 -2
- package/dist/assets/{index-legacy-DO2MADPO.js.map → index-legacy-CeVzo60P.js.map} +1 -1
- package/dist/assets/index-legacy-Cf0w_PNA.js +2 -0
- package/dist/assets/index-legacy-Cf0w_PNA.js.map +1 -0
- package/dist/assets/{index-legacy-DcFvM5kb.js → index-legacy-DZSQUiaj.js} +2 -2
- package/dist/assets/{index-legacy-DcFvM5kb.js.map → index-legacy-DZSQUiaj.js.map} +1 -1
- package/dist/assets/{index-legacy-Df_9F2Oo.js → index-legacy-D_K0eXFb.js} +2 -2
- package/dist/assets/{index-legacy-Df_9F2Oo.js.map → index-legacy-D_K0eXFb.js.map} +1 -1
- package/dist/assets/{index-legacy-DjWDlkzN.js → index-legacy-Da3YyHW_.js} +2 -2
- package/dist/assets/{index-legacy-DjWDlkzN.js.map → index-legacy-Da3YyHW_.js.map} +1 -1
- package/dist/assets/{index-legacy-Dhs-OKEx.js → index-legacy-Da4s_D85.js} +2 -2
- package/dist/assets/{index-legacy-Dhs-OKEx.js.map → index-legacy-Da4s_D85.js.map} +1 -1
- package/dist/assets/{index-legacy-quXi4jhF.js → index-legacy-DhNaKknk.js} +2 -2
- package/dist/assets/{index-legacy-quXi4jhF.js.map → index-legacy-DhNaKknk.js.map} +1 -1
- package/dist/assets/{index-legacy-CphqUnR0.js → index-legacy-Dm1CXog1.js} +2 -2
- package/dist/assets/{index-legacy-CphqUnR0.js.map → index-legacy-Dm1CXog1.js.map} +1 -1
- package/dist/assets/{index-legacy-I4qT4Thb.js → index-legacy-DpNNn-Dy.js} +2 -2
- package/dist/assets/index-legacy-DpNNn-Dy.js.map +1 -0
- package/dist/assets/{index-legacy-D13WKbpb.js → index-legacy-PkF4cKK9.js} +2 -2
- package/dist/assets/{index-legacy-D13WKbpb.js.map → index-legacy-PkF4cKK9.js.map} +1 -1
- package/dist/assets/{index-legacy-DIwVyUHd.js → index-legacy-QHDmYAB8.js} +2 -2
- package/dist/assets/{index-legacy-DIwVyUHd.js.map → index-legacy-QHDmYAB8.js.map} +1 -1
- package/dist/assets/{index-legacy-DCezoU0z.js → index-legacy-_M1-0586.js} +2 -2
- package/dist/assets/{index-legacy-DCezoU0z.js.map → index-legacy-_M1-0586.js.map} +1 -1
- package/dist/assets/{index-legacy-BO3hAqA9.js → index-legacy-m0dvnwGi.js} +2 -2
- package/dist/assets/{index-legacy-BO3hAqA9.js.map → index-legacy-m0dvnwGi.js.map} +1 -1
- package/dist/assets/{index-legacy-CCqMKGqS.js → index-legacy-vRS79jKS.js} +2 -2
- package/dist/assets/{index-legacy-CCqMKGqS.js.map → index-legacy-vRS79jKS.js.map} +1 -1
- package/dist/assets/{isEqual-Cecwc716.js → isEqual-BHpVKj_X.js} +2 -2
- package/dist/assets/{isEqual-Cecwc716.js.map → isEqual-BHpVKj_X.js.map} +1 -1
- package/dist/assets/{isEqual-legacy-dqS7X02N.js → isEqual-legacy-BWUPR8bV.js} +2 -2
- package/dist/assets/{isEqual-legacy-dqS7X02N.js.map → isEqual-legacy-BWUPR8bV.js.map} +1 -1
- package/dist/assets/{refresh-BA55HwKz.js → refresh-DPuuDO9h.js} +2 -2
- package/dist/assets/{refresh-BA55HwKz.js.map → refresh-DPuuDO9h.js.map} +1 -1
- package/dist/assets/{refresh-legacy-CpA05Fzr.js → refresh-legacy-DOts-8Wc.js} +2 -2
- package/dist/assets/{refresh-legacy-CpA05Fzr.js.map → refresh-legacy-DOts-8Wc.js.map} +1 -1
- package/dist/assets/{tip-CrU2GCmD.js → tip-CH7nBVXc.js} +2 -2
- package/dist/assets/{tip-CrU2GCmD.js.map → tip-CH7nBVXc.js.map} +1 -1
- package/dist/assets/{tip-legacy-B05oHh9-.js → tip-legacy-DiCk_qP1.js} +2 -2
- package/dist/assets/{tip-legacy-B05oHh9-.js.map → tip-legacy-DiCk_qP1.js.map} +1 -1
- package/dist/assets/validator-BMr-jeUB.js +2 -0
- package/dist/assets/{validator-Ca0QsRid.js.map → validator-BMr-jeUB.js.map} +1 -1
- package/dist/assets/validator-legacy-CacjPWoF.js +2 -0
- package/dist/assets/{validator-legacy-D0GLFVMZ.js.map → validator-legacy-CacjPWoF.js.map} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -2
- package/dist/assets/index-4ToTyeX6.css +0 -1
- package/dist/assets/index-ChQZKkse.css +0 -1
- package/dist/assets/index-Cs-E_cyt.js +0 -2
- package/dist/assets/index-Cs-E_cyt.js.map +0 -1
- package/dist/assets/index-DFVlBjXp.js +0 -2
- package/dist/assets/index-DFVlBjXp.js.map +0 -1
- package/dist/assets/index-DlyJUJ0j.js +0 -2
- package/dist/assets/index-DlyJUJ0j.js.map +0 -1
- package/dist/assets/index-legacy-BSv-V3Il.js.map +0 -1
- package/dist/assets/index-legacy-D6IvG9Dt.js +0 -2
- package/dist/assets/index-legacy-D6IvG9Dt.js.map +0 -1
- package/dist/assets/index-legacy-I4qT4Thb.js.map +0 -1
- package/dist/assets/validator-Ca0QsRid.js +0 -2
- package/dist/assets/validator-legacy-D0GLFVMZ.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{J as et,al as vt,N as tt,d as J,Q as lt,a as d,c as k,H as ye,k as h,T as qe,e as u,t as A,S as Q,b as i,aD as at,Y as nt,aF as ht,aG as de,aH as gt,aI as yt,aJ as Ce,aK as kt,r as C,Z as X,aL as bt,O as H,aM as Te,az as $t,aN as wt,$ as Ee,o as Le,aO as Vt,a8 as ce,aP as Ve,j as e,w as t,D as L,ax as Ct,aQ as xt,I as $e,aR as It,aS as Tt,aT as Ue,v as _e,aU as Et,aV as Ge,g as ve,h as Pe,E as D,_ as he,i as Be,F as le,C as ae,x as ie,p as Se,f as Ne,a9 as be,s as ge,aW as xe,a7 as we,aX as ot,aY as ke,aZ as St,ad as De,ae as st,a_ as ut,a$ as it,a6 as Nt,af as We,b0 as rt,b1 as Mt,P as Ft,a5 as zt,ab as dt}from"./index-CYAf_OTx.js";import{E as Ut,a as Dt}from"./el-tab-pane-BhVByOfe.js";import{u as Ae,E as Oe}from"./el-dialog-PRccau6N.js";import{E as Ke,a as je}from"./el-form-item-DOwM4Mv8.js";import{b as ct,E as Me,a as Fe}from"./el-select-CVjQdC39.js";import{E as He,a as Lt}from"./el-progress-1hLO5hs0.js";import{E as Pt,a as Bt,b as At,I as Ot,L as Kt}from"./index-F3S0vKOW.js";import{R as Ze,d as jt,E as Ht}from"./el-date-picker-mhY2RJMG.js";import{E as ze}from"./index-BUmkgniE.js";import{T as N,a as Yt}from"./tip-CH7nBVXc.js";import{d as Rt}from"./other-yMAyytYx.js";import{v as Qt}from"./el-loading-DNzUD85e.js";import{E as Jt,a as qt}from"./el-table-column-tkbtgrcD.js";import{E as pt}from"./el-switch-B76QvbJN.js";import{u as Gt}from"./index-DrKX0cCg.js";import"./isEqual-BHpVKj_X.js";import"./validator-BMr-jeUB.js";import"./aria-nkjrUMQ-.js";const Wt=et({header:{type:String,default:""},bodyStyle:{type:vt([String,Object,Array]),default:""},shadow:{type:String,values:["always","hover","never"],default:"always"}}),Zt={name:"ElCard"},Xt=J({...Zt,props:Wt,setup(o){const a=lt("card");return(l,s)=>(d(),k("div",{class:ye([h(a).b(),h(a).is("".concat(l.shadow,"-shadow"))])},[l.$slots.header||l.header?(d(),k("div",{key:0,class:ye(h(a).e("header"))},[qe(l.$slots,"header",{},()=>[u(A(l.header),1)])],2)):Q("v-if",!0),i("div",{class:ye(h(a).e("body")),style:at(l.bodyStyle)},[qe(l.$slots,"default")],6)],2))}});var el=tt(Xt,[["__file","/home/runner/work/element-plus/element-plus/packages/components/card/src/card.vue"]]);const tl=nt(el),ll=et({id:{type:String,default:void 0},step:{type:Number,default:1},stepStrictly:Boolean,max:{type:Number,default:Number.POSITIVE_INFINITY},min:{type:Number,default:Number.NEGATIVE_INFINITY},modelValue:Number,disabled:Boolean,size:ht,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:"",values:["","right"]},valueOnClear:{type:[String,Number,null],validator:o=>o===null||de(o)||["min","max"].includes(o),default:null},name:String,label:String,placeholder:String,precision:{type:Number,validator:o=>o>=0&&o===Number.parseInt("".concat(o),10)},validateEvent:{type:Boolean,default:!0}}),al={[gt]:(o,a)=>o!==a,blur:o=>o instanceof FocusEvent,focus:o=>o instanceof FocusEvent,[yt]:o=>de(o)||Ce(o),[kt]:o=>de(o)||Ce(o)},nl=["aria-label","onKeydown"],ol=["aria-label","onKeydown"],sl={name:"ElInputNumber"},ul=J({...sl,props:ll,emits:al,setup(o,{expose:a,emit:l}){const s=o,{t:g}=Gt(),p=lt("input-number"),b=C(),v=X({currentValue:s.modelValue,userInput:null}),{formItem:T}=bt(),f=H(()=>de(s.modelValue)&&Y(s.modelValue,-1)<s.min),m=H(()=>de(s.modelValue)&&Y(s.modelValue)>s.max),y=H(()=>{const n=O(s.step);return Te(s.precision)?Math.max(O(s.modelValue),n):(n>s.precision,s.precision)}),z=H(()=>s.controls&&s.controlsPosition==="right"),j=$t(),U=wt(),w=H(()=>{if(v.userInput!==null)return v.userInput;let n=v.currentValue;if(Ce(n))return"";if(de(n)){if(Number.isNaN(n))return"";Te(s.precision)||(n=n.toFixed(s.precision))}return n}),_=(n,r)=>{if(Te(r)&&(r=y.value),r===0)return Math.round(n);let I=String(n);const E=I.indexOf(".");if(E===-1||!I.replace(".","").split("")[E+r])return n;const re=I.length;return I.charAt(re-1)==="5"&&(I="".concat(I.slice(0,Math.max(0,re-1)),"6")),Number.parseFloat(Number(I).toFixed(r))},O=n=>{if(Ce(n))return 0;const r=n.toString(),I=r.indexOf(".");let E=0;return I!==-1&&(E=r.length-I-1),E},Y=(n,r=1)=>de(n)?_(n+s.step*r):v.currentValue,K=()=>{if(U.value||m.value)return;const n=s.modelValue||0,r=Y(n);P(r)},B=()=>{if(U.value||f.value)return;const n=s.modelValue||0,r=Y(n,-1);P(r)},G=(n,r)=>{const{max:I,min:E,step:R,precision:x,stepStrictly:re,valueOnClear:M}=s;let c=Number(n);if(Ce(n)||Number.isNaN(c))return null;if(n===""){if(M===null)return null;c=Et(M)?{min:E,max:I}[M]:M}return re&&(c=_(Math.round(c/R)*R,x)),Te(x)||(c=_(c,x)),(c>I||c<E)&&(c=c>I?I:E,r&&l("update:modelValue",c)),c},P=n=>{var r;const I=v.currentValue,E=G(n);I!==E&&(v.userInput=null,l("update:modelValue",E),l("input",E),l("change",E,I),s.validateEvent&&((r=T==null?void 0:T.validate)==null||r.call(T,"change").catch(R=>Ge())),v.currentValue=E)},V=n=>v.userInput=n,Z=n=>{const r=n!==""?Number(n):"";(de(r)&&!Number.isNaN(r)||n==="")&&P(r),v.userInput=null},oe=()=>{var n,r;(r=(n=b.value)==null?void 0:n.focus)==null||r.call(n)},pe=()=>{var n,r;(r=(n=b.value)==null?void 0:n.blur)==null||r.call(n)},se=n=>{l("focus",n)},q=n=>{var r;l("blur",n),s.validateEvent&&((r=T==null?void 0:T.validate)==null||r.call(T,"blur").catch(I=>Ge()))};return Ee(()=>s.modelValue,n=>{v.currentValue=G(n,!0),v.userInput=null},{immediate:!0}),Le(()=>{var n;const{min:r,max:I,modelValue:E}=s,R=(n=b.value)==null?void 0:n.input;if(R.setAttribute("role","spinbutton"),Number.isFinite(I)?R.setAttribute("aria-valuemax",String(I)):R.removeAttribute("aria-valuemax"),Number.isFinite(r)?R.setAttribute("aria-valuemin",String(r)):R.removeAttribute("aria-valuemin"),R.setAttribute("aria-valuenow",String(v.currentValue)),R.setAttribute("aria-disabled",String(U.value)),!de(E)&&E!=null){let x=Number(E);Number.isNaN(x)&&(x=null),l("update:modelValue",x)}}),Vt(()=>{var n;const r=(n=b.value)==null?void 0:n.input;r==null||r.setAttribute("aria-valuenow","".concat(v.currentValue))}),a({focus:oe,blur:pe}),(n,r)=>(d(),k("div",{class:ye([h(p).b(),h(p).m(h(j)),h(p).is("disabled",h(U)),h(p).is("without-controls",!n.controls),h(p).is("controls-right",h(z))]),onDragstart:r[0]||(r[0]=Ue(()=>{},["prevent"]))},[n.controls?ce((d(),k("span",{key:0,role:"button","aria-label":h(g)("el.inputNumber.decrease"),class:ye([h(p).e("decrease"),h(p).is("disabled",h(f))]),onKeydown:Ve(B,["enter"])},[e(h($e),null,{default:t(()=>[h(z)?(d(),L(h(Ct),{key:0})):(d(),L(h(xt),{key:1}))]),_:1})],42,nl)),[[h(Ze),B]]):Q("v-if",!0),n.controls?ce((d(),k("span",{key:1,role:"button","aria-label":h(g)("el.inputNumber.increase"),class:ye([h(p).e("increase"),h(p).is("disabled",h(m))]),onKeydown:Ve(K,["enter"])},[e(h($e),null,{default:t(()=>[h(z)?(d(),L(h(It),{key:0})):(d(),L(h(Tt),{key:1}))]),_:1})],42,ol)),[[h(Ze),K]]):Q("v-if",!0),e(h(_e),{id:n.id,ref_key:"input",ref:b,type:"number",step:n.step,"model-value":h(w),placeholder:n.placeholder,disabled:h(U),size:h(j),max:n.max,min:n.min,name:n.name,label:n.label,"validate-event":!1,onKeydown:[Ve(Ue(K,["prevent"]),["up"]),Ve(Ue(B,["prevent"]),["down"])],onBlur:q,onFocus:se,onInput:V,onChange:Z},null,8,["id","step","model-value","placeholder","disabled","size","max","min","name","label","onKeydown"])],34))}});var il=tt(ul,[["__file","/home/runner/work/element-plus/element-plus/packages/components/input-number/src/input-number.vue"]]);const rl=nt(il),dl=J({name:"CircleCloseFilled"}),cl={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},pl=i("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336L512 457.664z"},null,-1),ml=[pl];function fl(o,a,l,s,g,p){return d(),k("svg",cl,ml)}var Xe=ve(dl,[["render",fl]]);const _l=J({name:"CirclePlusFilled"}),vl={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},hl=i("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-38.4 409.6H326.4a38.4 38.4 0 1 0 0 76.8h147.2v147.2a38.4 38.4 0 0 0 76.8 0V550.4h147.2a38.4 38.4 0 0 0 0-76.8H550.4V326.4a38.4 38.4 0 1 0-76.8 0v147.2z"},null,-1),gl=[hl];function yl(o,a,l,s,g,p){return d(),k("svg",vl,gl)}var kl=ve(_l,[["render",yl]]);const bl=J({name:"Delete"}),$l={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},wl=i("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V256zm448-64v-64H416v64h192zM224 896h576V256H224v640zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32zm192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32z"},null,-1),Vl=[wl];function Cl(o,a,l,s,g,p){return d(),k("svg",$l,Vl)}var xl=ve(bl,[["render",Cl]]);const Il=J({name:"Edit"}),Tl={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},El=i("path",{fill:"currentColor",d:"M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640V512z"},null,-1),Sl=i("path",{fill:"currentColor",d:"m469.952 554.24 52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z"},null,-1),Nl=[El,Sl];function Ml(o,a,l,s,g,p){return d(),k("svg",Tl,Nl)}var Fl=ve(Il,[["render",Ml]]);const zl=J({name:"Menu"}),Ul={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Dl=i("path",{fill:"currentColor",d:"M160 448a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32H160zm448 0a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32H608zM160 896a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32H160zm448 0a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32H608z"},null,-1),Ll=[Dl];function Pl(o,a,l,s,g,p){return d(),k("svg",Ul,Ll)}var mt=ve(zl,[["render",Pl]]);const Bl=J({name:"Plus"}),Al={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Ol=i("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64h352z"},null,-1),Kl=[Ol];function jl(o,a,l,s,g,p){return d(),k("svg",Al,Kl)}var Hl=ve(Bl,[["render",jl]]);const Yl=J({name:"Share"}),Rl={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Ql=i("path",{fill:"currentColor",d:"m679.872 348.8-301.76 188.608a127.808 127.808 0 0 1 5.12 52.16l279.936 104.96a128 128 0 1 1-22.464 59.904l-279.872-104.96a128 128 0 1 1-16.64-166.272l301.696-188.608a128 128 0 1 1 33.92 54.272z"},null,-1),Jl=[Ql];function ql(o,a,l,s,g,p){return d(),k("svg",Rl,Jl)}var Gl=ve(Yl,[["render",ql]]);const Wl=J({name:"Top"}),Zl={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Xl=i("path",{fill:"currentColor",d:"M572.235 205.282v600.365a30.118 30.118 0 1 1-60.235 0V205.282L292.382 438.633a28.913 28.913 0 0 1-42.646 0 33.43 33.43 0 0 1 0-45.236l271.058-288.045a28.913 28.913 0 0 1 42.647 0L834.5 393.397a33.43 33.43 0 0 1 0 45.176 28.913 28.913 0 0 1-42.647 0l-219.618-233.23z"},null,-1),ea=[Xl];function ta(o,a,l,s,g,p){return d(),k("svg",Zl,ea)}var la=ve(Wl,[["render",ta]]);const aa=J({name:"categoryPanel",components:{DeleteFilled:jt},props:{category:{type:String,required:!0,default:"default"}},setup(o,a){const l=Pe(),s=H(()=>l.state.category.categoryList),g=H(()=>l.state.task.taskList),p=y=>{const z=g.value.filter(j=>j.category===y).length;return z===0?"":" (".concat(z,")")},b=C(!1),v=C(""),T=()=>{b.value=!1,v.value.trim()&&(l.dispatch("category/createCategory",v.value).then(()=>{D.success("创建成功")}).catch(y=>{y.code===2001&&D.warning("分类名称已存在")}),v.value="")},f=y=>{a.emit("update:category",y)};return{categorys:s,isShowCreateCategory:b,categoryName:v,addCategory:T,handleDeleteCategory:y=>{ze.confirm("是否删除","提示",{confirmButtonText:"确定",cancelButtonText:"取消"}).then(()=>{l.dispatch("category/deleteCategory",y.k).then(()=>{f("default"),D.success("删除成功"),l.dispatch("task/getTask")})}).catch(()=>{D.info("取消删除")})},handleClickCategory:f,taskCount:p}}}),na=o=>(Se("data-v-89760030"),o=o(),Ne(),o),oa={class:"panel"},sa=na(()=>i("div",{class:"btn-area"},[i("h5",null,"分类列表"),i("h6",{style:{"font-weight":"lighter"}},"(点击分类可筛选任务)")],-1)),ua={style:{"margin-top":"15px"},class:"category-list"},ia={class:"new-tag-wrap"},ra={class:"list-tip"},da={class:"tag-wrap"},ca={class:"tag-list"};function pa(o,a,l,s,g,p){const b=_e,v=ie,T=ct,f=Be("DeleteFilled"),m=$e;return d(),k("div",oa,[sa,i("div",ua,[i("div",ia,[o.isShowCreateCategory?(d(),L(b,{key:0,class:"input-new-tag el-tag",modelValue:o.categoryName,"onUpdate:modelValue":a[0]||(a[0]=y=>o.categoryName=y),ref:"saveTagInput",placeholder:"分类名称",onKeyup:Ve(o.addCategory,["enter"]),onFocusout:o.addCategory},null,8,["modelValue","onKeyup","onFocusout"])):(d(),L(v,{key:1,class:"button-new-tag el-tag",size:"small",onClick:a[1]||(a[1]=y=>o.isShowCreateCategory=!0)},{default:t(()=>[u("+ New 分类")]),_:1})),e(T,{effect:o.category==="default"?"dark":"plain",onClick:a[2]||(a[2]=y=>o.handleClickCategory("default"))},{default:t(()=>[u("默认"+A(o.taskCount("default")),1)]),_:1},8,["effect"]),i("span",ra,[e(T,{type:"danger",effect:o.category==="trash"?"dark":"plain",onClick:a[3]||(a[3]=y=>o.handleClickCategory("trash"))},{default:t(()=>[e(m,null,{default:t(()=>[e(f)]),_:1}),u(" 回收站"+A(o.taskCount("trash")),1)]),_:1},8,["effect"])])]),i("div",da,[i("div",ca,[(d(!0),k(le,null,ae(o.categorys,y=>(d(),L(T,{key:y.k,closable:"",effect:o.category===y.k?"dark":"plain",onClose:z=>o.handleDeleteCategory(y),onClick:z=>o.handleClickCategory(y.k)},{default:t(()=>[u(A(y.name)+A(o.taskCount(y.k)),1)]),_:2},1032,["effect","onClose","onClick"]))),128))])])])])}const ma=he(aa,[["render",pa],["__scopeId","data-v-89760030"]]),fa={class:"btn-area"},_a={class:"input-container"},va=J({__name:"CreateTask",props:{activeCategoryKey:{type:String,default:"default"}},setup(o){const a=o,l=Pe(),s=H(()=>l.state.category.categoryList);H(()=>a.activeCategoryKey==="default"?"默认":s.value.find(v=>v.k===a.activeCategoryKey).name);const g=C(!1),p=C(""),b=()=>{if(!p.value.trim()){D.warning("不能为空");return}l.dispatch("task/createTask",{name:p.value,category:a.activeCategoryKey}).then(()=>{D.success("创建成功")}),p.value=""};return(v,T)=>{var z;const f=ie,m=_e,y=$e;return d(),k("div",null,[i("div",fa,[e(f,{size:"large",type:"primary",plain:!g.value,onClick:T[0]||(T[0]=j=>g.value=!g.value)},{default:t(()=>[u(A(g.value?"关闭创建面板":"创建收集任务"),1)]),_:1},8,["plain"])]),ce(i("div",null,[i("div",_a,[e(m,{placeholder:"请输入任务名称(上述列表选择分类)",modelValue:p.value,"onUpdate:modelValue":T[1]||(T[1]=j=>p.value=j)},null,8,["modelValue"]),e(f,{onClick:b,type:(z=p.value)!=null&&z.length?"success":"default"},{default:t(()=>[u("确定")]),_:1},8,["type"])])],512),[[be,g.value]]),e(N,{class:"p10"},{default:t(()=>[u(" 点击 "),e(y,null,{default:t(()=>[e(h(mt))]),_:1}),u(" 可以进一步的调整任务 ")]),_:1}),e(N,null,{default:t(()=>[u(" 设置截止时间,自动重命名,名单限制,批注,文件模板。。🚀 ")]),_:1})])}}}),ha=he(va,[["__scopeId","data-v-74937fc2"]]),ga={class:"header"},ya={class:"ellipsis"},ka={class:"actions"},ba={class:"body"},$a={key:0,class:"empty"},wa={key:1},Va={class:"check-files"},Ca={class:"time"},xa={class:"name"},Ia=J({__name:"TaskInfo",props:{item:{}},setup(o){return(a,l)=>{const s=ie,g=Be("router-link"),p=tl;return d(),L(p,{class:"task-item"},{header:t(()=>[i("div",ga,[i("span",ya,A(a.item.name),1),i("div",ka,[e(s,{circle:"",type:"warning",icon:h(mt),title:"更多",onClick:l[0]||(l[0]=b=>a.$emit("more",a.item))},null,8,["icon"]),e(s,{circle:"",type:"success",icon:h(Fl),title:"编辑基本信息",onClick:l[1]||(l[1]=b=>a.$emit("edit",a.item))},null,8,["icon"]),e(s,{circle:"",type:"primary",icon:h(Gl),title:"分享",onClick:l[2]||(l[2]=b=>a.$emit("share",a.item.key))},null,8,["icon"]),e(s,{circle:"",type:"danger",icon:h(xl),title:"删除",onClick:l[3]||(l[3]=b=>a.$emit("delete",a.item.key,a.item.category==="trash"))},null,8,["icon"])])])]),default:t(()=>[i("div",ba,[a.item.recentLog.length===0?(d(),k("div",$a," 暂时没有提交记录... ")):(d(),k("ul",wa,[i("li",Va,[i("strong",null,"近 "+A(a.item.recentLog.length)+" 条提交记录",1),e(g,{to:"/dashboard/files?task=".concat(a.item.key)},{default:t(()=>[u("查看详情")]),_:1},8,["to"])]),(d(!0),k(le,null,ae(a.item.recentLog,(b,v)=>(d(),k("li",{key:Number(v),class:"ellipsis"},[i("span",Ca,A(h(ge)(new Date(b.date))),1),i("span",xa,A(b.filename),1)]))),128))]))])]),_:1})}}}),Ta=he(Ia,[["__scopeId","data-v-15cc9632"]]),ue=Rt((o,a,l=!0)=>{o&&xe.updateTaskMoreInfo(o,a).then(()=>{l&&D.success({message:"设置成功",zIndex:4e3,duration:1e3})}).catch(()=>{D.error({message:"设置失败",zIndex:4e3})})},1e3,!0),Ea={class:"tc ddl"},Sa={class:"tc flex fc fac"},Na={key:0,style:{"margin-top":"10px"}},Ma=J({__name:"ddl",props:{ddl:{type:String,default:"",required:!1},k:{type:String,default:""}},setup(o){const a=o,l=C();we(()=>{a.ddl?l.value=new Date(a.ddl):l.value=null});const s=()=>{if(l.value){const f=ge(new Date(l.value.getTime()-288e5));ue(a.k,{ddl:f})}},g=()=>{l.value=null,ue(a.k,{ddl:null})},p=C(0),b=H(()=>p.value<=0),v=H(()=>{let f=~~(p.value/1e3),m=~~(f/(60*60));const y=~~(m/24);m%=24;const z=~~(f%3600/60);return f%=60,"剩余".concat(y,"天").concat(m,"时").concat(z,"分").concat(f,"秒")}),T=(f=!0)=>{l.value?p.value=l.value.getTime()-Date.now():p.value=0,f&&setTimeout(()=>{T()},1e3)};return Le(()=>{T()}),(f,m)=>{const y=Ht,z=ie;return d(),k("div",Ea,[e(N,{imgs:["https://img.cdn.sugarat.top/mdImg/MTY0OTE0OTI4NjU5Nw==649149286597","https://img.cdn.sugarat.top/mdImg/MTY0OTE0OTMxMDEyOQ==649149310129","https://img.cdn.sugarat.top/mdImg/MTY0OTE0OTM3MzgxOA==649149373818"]},{default:t(()=>[u("设置截止日期,截止后将不能再提交文件。")]),_:1}),i("div",Sa,[e(y,{editable:!1,modelValue:l.value,"onUpdate:modelValue":m[0]||(m[0]=j=>l.value=j),type:"datetime",placeholder:"点击设置新截止日期",onChange:s,"default-time":new Date(o.ddl)},null,8,["modelValue","default-time"]),l.value?(d(),L(z,{key:0,onClick:g},{default:t(()=>[u("取消")]),_:1})):Q("",!0)]),l.value?(d(),k("div",Na,[e(N,null,{default:t(()=>[u(A(b.value?"已经截止":"剩余时间: ".concat(v.value)),1)]),_:1})])):Q("",!0)])}}}),Fa={class:"tc info-panel"},za={key:3,class:"upload-people"},Ua={class:"import-people-wrapper"},Da={class:"el-upload__tip"},La={class:"p10"},Pa={style:{"max-width":"300px",margin:"0 auto"}},Ba={class:"p10"},Aa={style:{"max-width":"320px",margin:"0 auto"}},Oa={class:"nav"},Ka={class:"item"},ja={class:"item"},Ha={class:"item"},Ya={class:"item"},Ra={class:"tc p10"},Qa={class:"tc p10"},Ja={style:{"text-align":"center"}},qa={key:0,class:"submit-ok"},Ga={key:1,class:"submit-fail"},Wa={class:"dialog-footer"},Za=J({__name:"people",props:{value:{type:Number,defalut:0},k:{type:String,default:""},name:{type:String,default:""},field:{type:String,default:"姓名"}},setup(o){ot(M=>({"36e866fb":R.value}));const a=o,l=C("手动添加"),s=C(""),g=C(!1);function p(){s.value&&(g.value=!0,ke.addPeopleByUser(s.value,a.k).then(()=>{D.success("添加 ".concat(s.value," 成功"))}).catch(()=>{D.error("".concat(s.value," 已存在"))}).finally(()=>{g.value=!1,s.value=""}))}const b=C(!1),v=C(0);we(()=>{v.value=a.value});function T(M){ue(a.k,{people:+M}),v.value=+M}const f=C(!1),m=X([]),y=C("all"),z=C(""),j=H(()=>z.value?m.filter(M=>M.name.includes(z.value)):m),U=H(()=>y.value==="all"?j.value:j.value.filter(M=>M.status===y.value)),w=C(!1);function _(){w.value=!0,ke.getPeople(a.k,"".concat(+b.value)).then(M=>{m.splice(0,m.length),m.push(...M.data.people),m.forEach(c=>{!c.status&&c.count===0?c.lastDate="暂无记录":c.lastDate=ge(new Date(c.lastDate),"yyyy-MM-dd hh:mm:ss")}),w.value=!1})}function O(){b.value=!b.value,b.value&&_()}function Y(){f.value=!0,b.value=!1,_()}function K(M){ze.confirm("确认删除此人员吗","数据无价,请谨慎操作").then(()=>{ke.deletePeople(a.k,M.id).then(()=>{D.success("删除成功"),m.splice(m.findIndex(c=>c.id===M.id),1)})}).catch(()=>{D.info("取消删除")})}const B=C([]),G=C();function P(){D.error("只能选择一个文件,可删除后重新选择")}function V(){B.value.splice(0,B.value.length),G.value.clearFiles()}function Z(){B.value.forEach(M=>{St(M.raw,"/api/public/upload",{success:c=>{const{name:F,type:ee}=c.data;ke.importPeople(a.k,F,ee).then($=>{const{success:te,fail:W}=$.data;D.success("导入完成:".concat(te,"成功,").concat(W.length,"失败")),W.length>0&&setTimeout(()=>{D.info("自动开始下载未成功导入名单"),De(["未成功导入名单"],W.map(ne=>[ne]),"".concat(a.name,"_导入失败名单_").concat(ge(new Date,"yyyy年MM月dd日hh时mm分ss秒"),".xlsx"))},1e3),V()})}})})}function oe(M){M.raw.type!=="text/plain"&&(D.warning({message:"只支持txt文件",zIndex:4e3}),V())}function pe(){if(U.value.length===0){D.warning("表格中没有可导出数据");return}const M=["姓名","提交状态","提交数量","最后操作时间",...b.value?["现存数量","提交次数"]:[]],c=U.value.map(F=>{const{name:ee,status:$,lastDate:te,submitCount:W,fileCount:ne,count:me}=F;return[ee,$?"✔":"x",W,$?ge(new Date(te)):"",...b.value?[ne,me]:[]]});De(M,c,"".concat(a.name,"_提交情况_").concat(ge(new Date,"yyyy年MM月dd日hh时mm分ss秒"),".xlsx")),D.success("导出成功")}const se=Ae(),q=X({taskList:[],type:"override",taskValue:""}),n=C(!1);async function r(){var F;const M=a.k,{data:c}=await ke.getUsefulTemplate(M);q.taskList=c,q.taskValue=((F=c[0])==null?void 0:F.taskKey)||"",n.value=!0}const I=H(()=>{const{taskList:M,taskValue:c}=q,F=M.find(ee=>ee.taskKey===c);return F?"".concat(F.count," 条数据"):"无可用任务"});function E(){ke.importPeopleFromTpl(a.k,q.taskValue,q.type).then(M=>{n.value=!1;const{success:c,fail:F}=M.data;D.success("导入成功".concat(c,"条,失败").concat(F.length,"条")),F.length>0&&setTimeout(()=>{D.info("自动开始下载未成功导入名单"),De(["未成功导入名单"],F.map(ee=>[ee]),"".concat(a.name,"_导入失败名单_").concat(ge(new Date,"yyyy年MM月dd日hh时mm分ss秒"),".xlsx"))},1e3)})}const R=H(()=>se.value?"0 0 auto":.5),x=C("姓名");Ee(()=>a.field,M=>{x.value=M},{immediate:!0});function re(){if(!x.value.trim().length){D.warning("绑定的表单项不能为空");return}xe.updateTaskMoreInfo(a.k,{bindField:x.value}).then(()=>{D.success("保存成功")})}return(M,c)=>{const F=ie,ee=Pt,$=Bt,te=He,W=_e,ne=Ke,me=je,Ie=Me,Re=Fe,fe=Jt,ft=qt,Qe=Oe,Je=At,_t=Qt;return d(),k("div",Fa,[e(N,{imgs:["https://img.cdn.sugarat.top/mdImg/MTY1MDE4MzEwOTEzOQ==650183109139","https://img.cdn.sugarat.top/mdImg/MTY1MTQ5NjY3MTUyMw==651496671523"]},{default:t(()=>[u(" 只有名单里的成员,才可提交文件 ")]),_:1}),v.value?Q("",!0):(d(),L(F,{key:0,size:"default",round:"",type:"success",onClick:c[0]||(c[0]=S=>T(!0))},{default:t(()=>[u(" 开启 ")]),_:1})),v.value?(d(),L(F,{key:1,size:"default",round:"",type:"danger",onClick:c[1]||(c[1]=S=>T(!1))},{default:t(()=>[u(" 关闭 ")]),_:1})):Q("",!0),v.value?(d(),L(F,{key:2,round:"",size:"default",type:"primary",onClick:Y},{default:t(()=>[u(" 查看提交情况 ")]),_:1})):Q("",!0),v.value?(d(),k("div",za,[e($,{modelValue:l.value,"onUpdate:modelValue":c[2]||(c[2]=S=>l.value=S),size:"small"},{default:t(()=>[e(ee,{label:"文件导入"}),e(ee,{label:"任务导入"}),e(ee,{label:"手动添加"})]),_:1},8,["modelValue"]),i("div",Ua,[ce(i("div",null,[e(te,{ref_key:"peopleUpload",ref:G,"file-list":B.value,"onUpdate:fileList":c[3]||(c[3]=S=>B.value=S),accept:"text/plain",action:"",class:"upload-demo","on-change":oe,"on-exceed":P,"on-remove":V,"auto-upload":!1,limit:1},{trigger:t(()=>[e(F,{size:"small",type:"primary"},{default:t(()=>[u(" 选择文件 ")]),_:1})]),tip:t(()=>[i("div",Da,[e(N,{imgs:["https://img.cdn.sugarat.top/mdImg/MTY1MDE4Mjk2NjUxMA==650182966510"]},{default:t(()=>[u(" 只能上传 .txt 文本文件,每行一个名字 ")]),_:1}),e(N,null,{default:t(()=>[u("如名字有特殊字符,建议去除")]),_:1}),e(N,null,{default:t(()=>[u("上传文件导入的方式,为追加导入,不会覆盖已存在数据")]),_:1})])]),default:t(()=>[e(F,{style:{"margin-left":"10px"},size:"small",type:"success",disabled:!B.value.length,onClick:Z},{default:t(()=>[u(" 确定上传 ")]),_:1},8,["disabled"])]),_:1},8,["file-list"])],512),[[be,l.value==="文件导入"]]),ce(i("div",null,[e(F,{size:"small",type:"success",onClick:r},{default:t(()=>[u(" 选择任务 ")]),_:1}),i("div",La,[e(N,null,{default:t(()=>[u("支持从已有的任务直接导入名单")]),_:1})])],512),[[be,l.value==="任务导入"]]),ce(i("div",null,[i("div",Pa,[e(W,{modelValue:s.value,"onUpdate:modelValue":c[4]||(c[4]=S=>s.value=S),disabled:g.value,placeholder:"请输入姓名"},{append:t(()=>[e(F,{onClick:p},{default:t(()=>[u(" 确定 ")]),_:1})]),_:1},8,["modelValue","disabled"])]),i("div",Ba,[e(N,null,{default:t(()=>[u("会自动判重,不会重复添加")]),_:1}),e(N,null,{default:t(()=>[u("大量名单优先推荐使用文件导入")]),_:1})])],512),[[be,l.value==="手动添加"]])]),i("div",Aa,[e(me,{"label-width":"120px"},{default:t(()=>[e(ne,{label:"绑定表单项",style:{"margin-bottom":"6px"}},{default:t(()=>[e(W,{modelValue:x.value,"onUpdate:modelValue":c[5]||(c[5]=S=>x.value=S),size:"small",clearable:""},{append:t(()=>[e(F,{onClick:re},{default:t(()=>[u(" 确定 ")]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(N,{style:{}},{default:t(()=>[u(" 和表单项同名字段,可以避免重复填写!! ")]),_:1})]),_:1})])])):Q("",!0),e(Qe,{modelValue:f.value,"onUpdate:modelValue":c[8]||(c[8]=S=>f.value=S),fullscreen:h(se),title:"提交情况"},{default:t(()=>[i("div",Oa,[i("div",Ka,[e(F,{disabled:m.length===0,type:"success",size:"default",onClick:pe},{default:t(()=>[u(" 导出记录 ")]),_:1},8,["disabled"])]),i("div",ja,[e(Re,{modelValue:y.value,"onUpdate:modelValue":c[6]||(c[6]=S=>y.value=S),size:"default",placeholder:"状态筛选"},{default:t(()=>[e(Ie,{label:"全部",value:"all"}),e(Ie,{label:"已提交",value:1}),e(Ie,{label:"未提交",value:0})]),_:1},8,["modelValue"])]),i("div",Ha,[e(W,{modelValue:z.value,"onUpdate:modelValue":c[7]||(c[7]=S=>z.value=S),size:"default",placeholder:"输入要查询的姓名"},null,8,["modelValue"])]),i("div",Ya,[e(F,{type:"primary",size:"default",onClick:O},{default:t(()=>[u(A(b.value?"隐藏":"显示")+"详细提交情况 ",1)]),_:1})])]),i("div",Ra,[i("span",null,"共: "+A(U.value.length)+" 条数据",1),u(", "),i("span",null,"已提交: "+A(U.value.filter(S=>S.status).length),1),u(", "),i("span",null,"未提交: "+A(U.value.filter(S=>!S.status).length),1)]),i("div",Qa,[e(N,null,{default:t(()=>[u('"提交次数" 用户实际的提交次数')]),_:1}),e(N,null,{default:t(()=>[u('"现存数量" 还存在于服务器上的文件数 (不包含删除) --- 慢查询')]),_:1}),e(N,null,{default:t(()=>[u('"提交数量" 用户实际提交的文件数 (不包含撤回) --- 慢查询')]),_:1})]),ce((d(),L(ft,{"element-loading-text":"Loading...",stripe:"",border:"",data:U.value,height:"460px"},{default:t(()=>[e(fe,{label:"序号",width:"60"},{default:t(S=>[i("div",Ja,A(S.$index+1),1)]),_:1}),e(fe,{property:"name",label:"姓名"}),e(fe,{label:"提交状态",width:"100"},{default:t(S=>[S.row.status?(d(),k("span",qa,"已提交")):(d(),k("span",Ga,"未提交"))]),_:1}),e(fe,{property:"count",label:"提交次数",width:"94"}),e(fe,{sortable:"",property:"lastDate",label:"最后操作时间",width:"120"}),b.value?(d(),k(le,{key:0},[e(fe,{property:"fileCount",label:"现存数量",width:"94"}),e(fe,{sortable:"",property:"submitCount",label:"提交数量",width:"120"})],64)):Q("",!0),e(fe,{label:"操作",width:"100"},{default:t(S=>[e(F,{type:"primary",text:"",size:"small",onClick:Wn=>K(S.row)},{default:t(()=>[u(" 删除 ")]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data"])),[[_t,w.value]])]),_:1},8,["modelValue","fullscreen"]),e(Qe,{modelValue:n.value,"onUpdate:modelValue":c[12]||(c[12]=S=>n.value=S),fullscreen:h(se),title:"人员列表导入"},{footer:t(()=>[i("span",Wa,[e(F,{onClick:c[11]||(c[11]=S=>n.value=!1)},{default:t(()=>[u("取 消")]),_:1}),e(F,{disabled:!q.taskValue,type:"primary",onClick:E},{default:t(()=>[u("确 定")]),_:1},8,["disabled"])])]),default:t(()=>[e(me,{model:q,"label-width":"100px","label-position":"right"},{default:t(()=>[e(ne,{label:"任务"},{default:t(()=>[e(Re,{modelValue:q.taskValue,"onUpdate:modelValue":c[9]||(c[9]=S=>q.taskValue=S),filterable:"",placeholder:"请选择","no-data-text":"无可用任务"},{default:t(()=>[(d(!0),k(le,null,ae(q.taskList,S=>(d(),L(Ie,{key:S.taskKey,label:S.name,value:S.taskKey},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(N,null,{default:t(()=>[u(A(I.value),1)]),_:1}),e(ne,{label:"任务"},{default:t(()=>[e($,{modelValue:q.type,"onUpdate:modelValue":c[10]||(c[10]=S=>q.type=S)},{default:t(()=>[e(Je,{label:"override"},{default:t(()=>[u(" 覆盖导入 ")]),_:1}),e(Je,{label:"add"},{default:t(()=>[u(" 追加导入 ")]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(N,null,{default:t(()=>[u(A(q.type==="override"?"“覆盖导入” 将会覆盖原来的数据":"“追加导入” 将只会导入不存在数据"),1)]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","fullscreen"])])}}}),Xa=he(Za,[["__scopeId","data-v-862ab3c1"]]),en=J({name:"templatePanel",props:{value:{type:String,default:""},k:{type:String,default:""}},setup(o){const a=C();we(()=>{o.value?a.value=o.value:a.value=""});const l=C(0),s=()=>{a.value&&(ue(o.k,{template:""}),a.value="",l.value=0)},g=C([]),p=C(),b=()=>{D.error("只能选择一个文件,可删除后重新选择")},v=()=>{p.value.clearFiles()};return{template:a,deleteTemplate:s,fileList:g,handleExceedFile:b,clearFiles:v,submitUploadPeople:()=>{g.value.forEach(f=>{if(!o.k)return;const{name:m}=f,y="easypicker2/".concat(o.k,"_template/").concat(m);f.status==="ready"&&(f.status="uploading",st.getUploadToken().then(z=>{ut(z.data.token,f.raw,y,{success(){D.success("上传成功"),ue(o.k,{template:m}),v(),a.value=m,f.status="success"},process(j){f.percentage=~~j}})}))})},elUpload:p,percentage:l}},components:{Tip:N}}),tn=o=>(Se("data-v-77b4c9c1"),o=o(),Ne(),o),ln={class:"tc info-panel"},an={class:"p10"},nn={key:1,class:"upload-file"},on=tn(()=>i("div",{class:"el-upload__tip"},"选择模板文件,然后点击上传",-1));function sn(o,a,l,s,g,p){const b=Be("tip"),v=ie,T=He;return d(),k("div",ln,[e(b,{imgs:["https://img.cdn.sugarat.top/mdImg/MTY1MDE4MjY3MjUxNw==650182672517"]},{default:t(()=>[u("设置的模板文件,可供用户在提交页下载。")]),_:1}),o.template?(d(),L(v,{key:0,disabled:!o.template,onClick:o.deleteTemplate,size:"default",round:"",type:"danger"},{default:t(()=>[u("删除")]),_:1},8,["disabled","onClick"])):Q("",!0),i("div",an,A(o.template||"尚未设置模板文件"),1),o.template?Q("",!0):(d(),k("div",nn,[e(T,{action:"",ref:"elUpload","on-exceed":o.handleExceedFile,"on-remove":o.clearFiles,"auto-upload":!1,limit:1,"file-list":o.fileList,"onUpdate:fileList":a[0]||(a[0]=f=>o.fileList=f)},{trigger:t(()=>[e(v,{size:"small",type:"primary"},{default:t(()=>[u("选取文件")]),_:1})]),tip:t(()=>[on]),default:t(()=>[e(v,{onClick:o.submitUploadPeople,style:{"margin-left":"10px"},size:"small",type:"success"},{default:t(()=>[u("设为模板")]),_:1},8,["onClick"])]),_:1},8,["on-exceed","on-remove","file-list"])]))])}const un=he(en,[["render",sn],["__scopeId","data-v-77b4c9c1"]]),rn=o=>(Se("data-v-cb300958"),o=o(),Ne(),o),dn={class:"tc"},cn={class:"auto-format"},pn=rn(()=>i("span",null,"文件自动重命名:",-1)),mn={key:0,style:{"margin-bottom":"10px"}},fn={style:{color:"#409eff"}},_n={key:1,style:{"margin-bottom":"10px"}},vn={class:"form-wrapper"},hn={class:"flex fc fac"},gn={class:"num-wrapper"},yn={class:"form-item-wrapper"},kn={key:0,class:"radio-list"},bn={class:"form-item-wrapper"},$n={key:3,class:"p10"},wn={class:"p10"},Vn={key:4,style:{color:"red"}},Cn={class:"info-panel"},xn={class:"dialog-footer"},In=J({__name:"info",props:{rewrite:{type:Number,default:0},info:{typs:String,default:"[]"},k:{type:String,default:""},format:{type:String,default:"",required:!1}},setup(o){ot(n=>({"2cde0e12":oe.value}));const a=o,l=X(it()),s=C(!1),g=X([{label:"输入框",value:"input"},{label:"固定内容",value:"text"},{label:"单选框",value:"radio"},{label:"下拉选择",value:"select"}]);function p(n){var r;return(r=g.find(I=>I.value===n))==null?void 0:r.label}const b=C("input"),{value:v}=Nt(),T=H(()=>v.value.maxInputLength),f=C(!1),m=X([]),y=C(!1),z=H(()=>m.length<v.value.formLength&&!s.value);Ee(()=>a.info,()=>{m.splice(0,m.length),b.value="input",s.value=!1,m.push(...We(a.info)),y.value=!1},{immediate:!0});const j=H(()=>"".concat(m.map(n=>n.text).join(l.splitChar),".后缀"));we(()=>{f.value=!!a.rewrite});function U(n){ue(a.k,{rewrite:+n})}function w(n,r){const I=n||m,E=r||b.value,R={text:"标题".concat(I.length+1),type:E,value:""};(E==="radio"||E==="select")&&(R.children=[{text:"选项1"},{text:"选项2"}]),I.push(R),y.value=!0}function _(n,r,I=1){const E=r||m;E.length<=I||(E.splice(n,1),y.value=!0)}function O(n){return n.every(r=>r.text.trim()&&O(r.children||[]))}function Y(){if(!O(m)){D.error("请完整填写表单信息"),setTimeout(()=>{D.warning("不能有空项")},100);return}ue(a.k,{info:JSON.stringify(m.map(n=>(n.type==="text"&&(n.value=n.text),n)))}),y.value=!1}function K(n){if(n===0)return;const r=m[n-1];m.splice(n-1,1),m.splice(n,0,r)}const B=X({taskList:[],taskValue:""}),G=C(!1);async function P(){var I;const n=a.k,{data:r}=await xe.getUsefulTemplate(n);B.taskList=r,B.taskValue=((I=r[0])==null?void 0:I.taskKey)||"",G.value=!0}function V(){const n=B.taskList.find(r=>r.taskKey===B.taskValue).info;m.splice(0,m.length),m.push(...We(n)),G.value=!1,y.value=!0}const Z=Ae(),oe=H(()=>Z.value?"0 0 auto":.5);function pe(){ze.alert("<p>固定内容主要用于重命名中,固定的部分,如“活动名”,“班级名”</p><p>如要设置注意事项,请使用 <strong>批注</strong> 功能</p>","注意事项",{dangerouslyUseHTMLString:!0})}function se(){ue(a.k,{format:JSON.stringify(l)})}const q=X(["-","+","_"]);return we(()=>{a.format!==null&&Object.assign(l,rt(a.format))}),(n,r)=>{const I=pt,E=Me,R=Fe,x=$e,re=_e,M=Ke,c=je,F=ie,ee=Oe;return d(),k("div",dn,[e(N,{imgs:["https://img.cdn.sugarat.top/mdImg/MTY1MDE4MzM3NjUyNg==650183376526","https://img.cdn.sugarat.top/mdImg/MTY1MTQ5NjU2ODcyNg==651496568726"]},{default:t(()=>[u(" 上传文件必填表单信息 ")]),_:1}),i("div",cn,[pn,e(I,{modelValue:f.value,"onUpdate:modelValue":r[0]||(r[0]=$=>f.value=$),style:{display:"block"},"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"开","inactive-text":"关",onChange:U},null,8,["modelValue"])]),f.value?(d(),k("div",mn,[u(" 预期格式: "),i("span",fn,A(j.value),1)])):Q("",!0),f.value?(d(),k("div",_n,[u(" 分割符: "),e(R,{modelValue:l.splitChar,"onUpdate:modelValue":r[1]||(r[1]=$=>l.splitChar=$),placeholder:"分隔符",style:{width:"60px"},size:"small",onChange:se},{default:t(()=>[(d(!0),k(le,null,ae(q,$=>(d(),L(E,{key:$,label:$,value:$},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])):Q("",!0),f.value?(d(),L(N,{key:2,style:{color:"red"}},{default:t(()=>[u(" 开启自动重命名后,重点关注文件名格式是否符合预期 ")]),_:1})):Q("",!0),i("div",null,[u(" 预览 "),e(I,{modelValue:s.value,"onUpdate:modelValue":r[2]||(r[2]=$=>s.value=$),"inline-prompt":"","active-text":"是","inactive-text":"否","active-color":"#13ce66","inactive-color":"#ff4949"},null,8,["modelValue"])]),i("div",vn,[s.value?(d(),L(Ot,{key:0,infos:m,disabled:s.value},null,8,["infos","disabled"])):(d(),L(c,{key:1,"label-width":"100px"},{default:t(()=>[(d(!0),k(le,null,ae(m,($,te)=>(d(),L(M,{key:te},{label:t(()=>[i("div",hn,[i("div",gn,[i("div",null,A(te+1),1)]),i("div",{class:ye(["form-item-type",$.type])},A(p($.type)),3)])]),default:t(()=>[e(re,{modelValue:$.text,"onUpdate:modelValue":W=>$.text=W,placeholder:"输入内容",maxlength:T.value,clearable:"","show-word-limit":""},{append:t(()=>[i("div",yn,[e(x,{color:m.length>1?"red":"grey",onClick:W=>_(te)},{default:t(()=>[e(h(Xe))]),_:2},1032,["color","onClick"]),te>0?(d(),L(x,{key:0,color:"#000",style:{"margin-left":"6px"},onClick:W=>K(te)},{default:t(()=>[e(h(la))]),_:2},1032,["onClick"])):Q("",!0)])]),_:2},1032,["modelValue","onUpdate:modelValue","maxlength"]),$.type==="radio"||$.type==="select"?(d(),k("div",kn,[(d(!0),k(le,null,ae($.children,(W,ne)=>(d(),L(re,{key:ne,modelValue:W.text,"onUpdate:modelValue":me=>W.text=me,size:"small",placeholder:"输入内容",maxlength:T.value,clearable:"","show-word-limit":""},{append:t(()=>[i("div",bn,[e(x,{color:$.children.length>2?"red":"grey",onClick:me=>_(ne,$.children,2)},{default:t(()=>[e(h(Xe))]),_:2},1032,["color","onClick"]),ne+1===$.children.length?(d(),L(x,{key:0,style:{"margin-left":"10px"},color:"#67C23A",onClick:me=>w($.children,$.type)},{default:t(()=>[e(h(kl))]),_:2},1032,["onClick"])):Q("",!0)])]),_:2},1032,["modelValue","onUpdate:modelValue","maxlength"]))),128))])):Q("",!0)]),_:2},1024))),128))]),_:1}))]),z.value?(d(),k("div",$n,[e(F,{size:"small",type:"primary",round:"",onClick:r[3]||(r[3]=()=>{w()})},{default:t(()=>[u(" 添加一项 ")]),_:1}),e(R,{modelValue:b.value,"onUpdate:modelValue":r[4]||(r[4]=$=>b.value=$),style:{margin:"0 10px"},size:"small",placeholder:"选择添加的类型"},{default:t(()=>[(d(!0),k(le,null,ae(g,($,te)=>(d(),L(E,{key:te,label:$.label,value:$.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),e(F,{type:"primary",text:"",onClick:pe},{default:t(()=>[u(" 提示❓ ")]),_:1})])):Q("",!0),e(F,{size:"small",type:"warning",onClick:P},{default:t(()=>[u(" 从其它任务导入 ")]),_:1}),i("div",wn,[e(N,null,{default:t(()=>[u("支持从已有的任务直接导入表单信息")]),_:1}),e(F,{type:"success",style:{width:"200px"},onClick:Y},{default:t(()=>[u(" 保存 ")]),_:1})]),y.value?(d(),k("div",Vn," 有变动,请记得点击保存 ")):Q("",!0),i("div",Cn,[e(ee,{modelValue:G.value,"onUpdate:modelValue":r[7]||(r[7]=$=>G.value=$),fullscreen:h(Z),title:"表单信息导入"},{footer:t(()=>[i("span",xn,[e(F,{onClick:r[6]||(r[6]=$=>G.value=!1)},{default:t(()=>[u("取 消")]),_:1}),e(F,{disabled:!B.taskValue,type:"primary",onClick:V},{default:t(()=>[u("确 定 ")]),_:1},8,["disabled"])])]),default:t(()=>[e(c,{model:B,"label-width":"100px","label-position":"right"},{default:t(()=>[e(M,{label:"任务"},{default:t(()=>[e(R,{modelValue:B.taskValue,"onUpdate:modelValue":r[5]||(r[5]=$=>B.taskValue=$),filterable:"",placeholder:"请选择","no-data-text":"无可用任务"},{default:t(()=>[(d(!0),k(le,null,ae(B.taskList,$=>(d(),L(E,{key:$.taskKey,label:$.name,value:$.taskKey},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(N,null,{default:t(()=>[u(A(B.taskValue?"":"无可用任务"),1)]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","fullscreen"])])])}}}),Tn=he(In,[["__scopeId","data-v-cb300958"]]),En={class:"tc ddl"},Sn={class:"tc flex fc fac"},Nn={class:"p10"},Mn=J({__name:"tipInfo",props:{tip:{type:String,default:"",required:!1},k:{type:String,default:""}},setup(o){const a=o,l=C(""),s=X({text:"",imgs:[]}),g=C(3),p=C([]),b=H(()=>p.value.map(w=>w.preview||w.url)),v=C(0);Ee(()=>a.tip,()=>{try{const w=JSON.parse(a.tip);s.imgs=w.imgs,s.text=w.text||"",p.value=s.imgs.map(_=>({..._,url:"https://img.cdn.sugarat.top/mdImg/MTY3NzkxMDI1NTU1Nw==20140524124237518.gif"})),p.value.length&&Ft.getTipImageUrl(a.k,p.value.map(_=>({uid:_.uid,name:_.name}))).then(_=>{_.data.forEach((O,Y)=>{p.value[Y].url=O.cover,Object.assign(p.value[Y],{preview:O.preview})})})}catch(w){s.text=a.tip||"",s.imgs=[],p.value=[]}s.text?l.value=s.text:l.value=""},{immediate:!0});const T=H(()=>s.text!==l.value);function f(w=!0){s.text!==l.value&&(s.text=l.value),ue(a.k,{tip:JSON.stringify(s)},w)}const m=C(!1);function y(w){if(!a.k)return;const{name:_,uid:O}=w,Y=Mt(a.k,_,O);w.status==="ready"&&(w.status="success",st.getUploadToken().then(K=>{ut(K.data.token,w.raw,Y,{success(){s.imgs.push({uid:O,name:_}),f()}})}))}const z=w=>{const{uid:_,name:O}=w,Y=s.imgs.findIndex(K=>K.uid===_);s.imgs.splice(Y,1),f(),xe.delTipImage(a.k,_,O)};function j(w){m.value=!0;const _=p.value.findIndex(O=>O.uid===w.uid);v.value=_}function U(){D.error("只能选择".concat(g.value,"个图片,可删除后重新选择"))}return(w,_)=>{const O=_e,Y=ie,K=$e,B=He,G=Yt;return d(),k("div",En,[e(N,{imgs:["https://img.cdn.sugarat.top/mdImg/MTY1MTQ5NjI2OTI0MQ==651496269241"]},{default:t(()=>[u(" 设置注意事项,供用户提交时查看 ")]),_:1}),e(N,null,{default:t(()=>[u("注意控制字数和换行,避免展示异常,设置完记得预览一下,再投放")]),_:1}),i("div",Sn,[e(O,{modelValue:l.value,"onUpdate:modelValue":_[0]||(_[0]=P=>l.value=P),rows:5,clearable:"",max:500,"show-word-limit":"",type:"textarea",placeholder:"请输入要展示的批注信息"},null,8,["modelValue"])]),i("div",Nn,[e(Y,{size:"default",type:"success",onClick:f},{default:t(()=>[u(" 保存 ")]),_:1}),e(Y,{size:"default",type:"danger",onClick:_[1]||(_[1]=P=>l.value="")},{default:t(()=>[u(" 清空 ")]),_:1})]),T.value?(d(),L(N,{key:0},{default:t(()=>[u(" 有变动记得保存 ")]),_:1})):Q("",!0),e(N,null,{default:t(()=>[u(" 可以设置图片啦↓ 最多3张 ")]),_:1}),e(B,{"file-list":p.value,"onUpdate:fileList":_[2]||(_[2]=P=>p.value=P),accept:"image/*",limit:g.value,action:"","list-type":"picture-card","on-change":y,"on-exceed":U,"on-preview":j,"on-remove":z,"auto-upload":!1},{default:t(()=>[e(K,null,{default:t(()=>[e(h(Hl))]),_:1})]),_:1},8,["file-list","limit"]),m.value?(d(),L(G,{key:1,"hide-on-click-modal":"","initial-index":v.value,"url-list":b.value,teleported:"",onClose:_[3]||(_[3]=P=>m.value=!1)},null,8,["initial-index","url-list"])):Q("",!0)])}}}),Ye=o=>(Se("data-v-491fae6b"),o=o(),Ne(),o),Fn={class:"tc"},zn={class:"tc"},Un={style:{"max-width":"300px",margin:"0 auto"}},Dn=Ye(()=>i("div",{class:"split-line"},null,-1)),Ln={class:"tc"},Pn=Ye(()=>i("div",{class:"split-line"},null,-1)),Bn={class:"tc"},An=Ye(()=>i("div",{class:"split-line"},null,-1)),On=J({__name:"file",props:{format:{type:String,default:"",required:!1},k:{type:String,default:""}},setup(o){const a=o,l=X(it()),s=C(""),g=()=>{ue(a.k,{format:JSON.stringify(l)})},p=U=>{l.status=!!U,g()},b=()=>{const U=s.value.split(",").map(w=>w.trim().toLowerCase());for(const w of U)if(l.format.includes(w)){D.error("".concat(w," 已存在"));return}l.format.push(...U),g(),s.value=""},v=U=>{l.format.splice(U,1),g()},T=()=>{dt(l.format.join(","))},f=U=>{l.limit=U,g()},m=C(0),y=X(["B","KB","MB","GB"]),z=()=>{const U=y.findIndex(w=>w===l.sizeUnit);l.size=m.value*1024**U,g()},j=U=>{m.value=U;const w=y.findIndex(_=>_===l.sizeUnit);l.size=m.value*1024**w,g()};return we(()=>{a.format!==null&&Object.assign(l,rt(a.format))}),(U,w)=>{const _=pt,O=ie,Y=_e,K=ct,B=rl,G=Me,P=Fe;return d(),k("div",Fn,[e(N,{class:"title"},{default:t(()=>[u(" ↓下方设置允许提交的文件类型↓ ")]),_:1}),e(N,null,{default:t(()=>[u("暂时只支持通过文件名后缀进行卡控,不区分大小写")]),_:1}),e(N,null,{default:t(()=>[u("例如:txt,png,jpeg,webp")]),_:1}),i("div",zn,[e(_,{"active-text":"限制文件类型","inactive-text":"不限制文件类型",onChange:p,value:l.status,style:{"--el-switch-on-color":"#13ce66","--el-switch-off-color":"#ff4949"}},null,8,["value"])]),ce(i("div",null,[e(N,null,{default:t(()=>[u('支持英文逗号","分割,一次添加多个')]),_:1}),i("div",Un,[e(Y,{modelValue:s.value,"onUpdate:modelValue":w[0]||(w[0]=V=>s.value=V),placeholder:"请输入文件类型(省略.)"},{append:t(()=>[e(O,{onClick:b},{default:t(()=>[u(" 确定 ")]),_:1})]),_:1},8,["modelValue"])]),(d(!0),k(le,null,ae(l.format,(V,Z)=>(d(),L(K,{key:Z,class:"type",closable:"","disable-transitions":!1,onClose:oe=>v(Z)},{default:t(()=>[u(A(V),1)]),_:2},1032,["onClose"]))),128)),ce(e(N,null,{default:t(()=>[u("已添加: "),i("span",null,A(l.format.join(",")),1),e(O,{type:"primary",text:"",size:"small",onClick:T},{default:t(()=>[u("一键复制")]),_:1})]),_:1},512),[[be,l.format.length]])],512),[[be,l.status]]),Dn,e(N,{class:"title"},{default:t(()=>[u("↓下方设置最大同时提交文件数量(16 >= x >=1 默认 10)↓")]),_:1}),i("div",Ln,[e(B,{"model-value":l.limit,min:1,max:16,onChange:f},null,8,["model-value"])]),Pn,e(N,{class:"title"},{default:t(()=>[u(" ↓下方设置文件最大的大小↓ ")]),_:1}),e(N,null,{default:t(()=>[u("1024B = 1KB, 1024KB = 1MB, 1024MB = 1GB")]),_:1}),e(N,null,{default:t(()=>[u("0表示不限制")]),_:1}),i("div",Bn,[e(B,{"model-value":m.value,min:0,max:1024,onChange:j},null,8,["model-value"]),e(P,{onChange:z,modelValue:l.sizeUnit,"onUpdate:modelValue":w[1]||(w[1]=V=>l.sizeUnit=V),placeholder:"单位",style:{width:"100px"}},{default:t(()=>[(d(!0),k(le,null,ae(y,V=>(d(),L(G,{key:V,label:V,value:V},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),An,e(N,{style:at(l.size===0?"color:grey":"color:red")},{default:t(()=>[u(A(l.size===0?"不限制大小":"限制为不超过: ".concat(h(zt)(l.size))),1)]),_:1},8,["style"])])}}}),Kn=he(On,[["__scopeId","data-v-491fae6b"]]),jn={class:"tasks"},Hn={class:"categorys-area"},Yn={class:"panel task-panel"},Rn={class:"task-list"},Qn={class:"dialog-footer"},Jn={class:"tc",style:{"font-size":"14px",color:"#9e9e9e"}},qn={style:{color:"#000000"}},Gn=J({__name:"index",setup(o){const a=Pe(),l=Ae(),s=H(()=>a.state.category.categoryList),g=C("default"),p=H(()=>a.state.task.taskList),b=H(()=>p.value.filter(V=>V.category===g.value));function v(P,V=!1){P&&ze.confirm("确认删除此任务吗?",V?"!!回收站的删除后无法再恢复":"数据无价,请谨慎操作",{confirmButtonText:"确定",cancelButtonText:"取消",type:V?"error":"info"}).then(()=>{a.dispatch("task/deleteTask",P).then(()=>{D.success("删除成功")})}).catch(()=>{D.info("取消删除")})}const T=C(!1),f=X({name:"",category:"",key:""});function m(P){f.name=P.name,f.category=P.category,f.key=P.key,T.value=!0}function y(){if(T.value=!1,!f.name.trim()){D.warning("不能为空");return}a.dispatch("task/updateTask",f).then(()=>{D.success("更新成功")})}const z=C(""),j=C(!1),U=C("");function w(P){var Z;z.value="default";const{origin:V}=window.location;z.value="".concat(V,"/task/").concat(P),dt(z.value,"收集链接已自动复制到粘贴板"),U.value=(Z=p.value.find(oe=>oe.key===P))==null?void 0:Z.name,j.value=!0}const _=X({}),O=C(!1),Y=C("info"),K=X({category:"",key:"",name:"",recentLog:[]});function B(P){Object.assign(K,P),xe.getTaskMoreInfo(P.key).then(V=>{_.info="[]",_.ddl="",_.tip="",_.format="",_.bindField="",setTimeout(()=>{Object.assign(_,V.data),O.value=!0})})}Le(()=>{a.dispatch("category/getCategory"),a.dispatch("task/getTask")});function G(){window.open("/task/".concat(K.key))}return(P,V)=>{const Z=Lt,oe=_e,pe=Ke,se=Me,q=Fe,n=je,r=ie,I=Oe,E=Ut,R=Dt;return d(),k("div",jn,[i("div",Hn,[e(ma,{category:g.value,"onUpdate:category":V[0]||(V[0]=x=>g.value=x)},null,8,["category"])]),i("div",Yn,[e(ha,{"active-category-key":g.value},null,8,["active-category-key"]),i("div",Rn,[(d(!0),k(le,null,ae(b.value,x=>(d(),L(Ta,{key:x.key,item:x,onEdit:m,onDelete:v,onShare:w,onMore:B},null,8,["item"]))),128)),b.value.length===0?(d(),L(Z,{key:0,description:"此分类下没有任务哟,快去创建吧"})):Q("",!0)])]),e(I,{modelValue:T.value,"onUpdate:modelValue":V[4]||(V[4]=x=>T.value=x),draggable:"",fullscreen:h(l),title:"基本信息修改"},{footer:t(()=>[i("span",Qn,[e(r,{onClick:V[3]||(V[3]=x=>T.value=!1)},{default:t(()=>[u("取 消")]),_:1}),e(r,{type:"primary",onClick:y},{default:t(()=>[u("确 定")]),_:1})])]),default:t(()=>[e(n,{model:f},{default:t(()=>[e(pe,{label:"任务名称","label-width":"100px"},{default:t(()=>[e(oe,{modelValue:f.name,"onUpdate:modelValue":V[1]||(V[1]=x=>f.name=x),autocomplete:"off"},null,8,["modelValue"])]),_:1}),e(pe,{label:"新的分类","label-width":"100px"},{default:t(()=>[e(q,{modelValue:f.category,"onUpdate:modelValue":V[2]||(V[2]=x=>f.category=x),placeholder:"请选择新分类"},{default:t(()=>[e(se,{label:"默认",value:"default"}),(d(!0),k(le,null,ae(s.value,x=>(d(),L(se,{key:x.k,label:x.name,value:x.k},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","fullscreen"]),e(Kt,{value:j.value,"onUpdate:value":V[5]||(V[5]=x=>j.value=x),download:!1,title:"收取链接",link:z.value,"share-text-prefix":U.value},null,8,["value","link","share-text-prefix"]),e(I,{modelValue:O.value,"onUpdate:modelValue":V[7]||(V[7]=x=>O.value=x),fullscreen:h(l),title:"更多设置",center:""},{default:t(()=>[i("div",null,[i("h3",Jn,[u(" 任务名:"),i("strong",qn,A(K.name),1),u(", "),e(r,{type:"primary",text:"",onClick:G},{default:t(()=>[u(" 去查看效果 ")]),_:1})]),e(R,{modelValue:Y.value,"onUpdate:modelValue":V[6]||(V[6]=x=>Y.value=x)},{default:t(()=>[e(E,{label:"截止日期",name:"ddl"},{default:t(()=>[e(Ma,{ddl:_.ddl,k:K.key},null,8,["ddl","k"])]),_:1}),e(E,{label:"批注信息",name:"tip"},{default:t(()=>[e(Mn,{rewrite:_.rewrite,tip:_.tip,k:K.key},null,8,["rewrite","tip","k"])]),_:1}),e(E,{label:"限制名单",name:"people"},{default:t(()=>[e(Xa,{name:K.name,value:_.people,k:K.key,field:_.bindField},null,8,["name","value","k","field"])]),_:1}),e(E,{label:"必填信息",name:"info"},{default:t(()=>[e(Tn,{rewrite:_.rewrite,info:_.info,k:K.key,format:_.format},null,8,["rewrite","info","k","format"])]),_:1}),e(E,{label:"模板文件",name:"template"},{default:t(()=>[e(un,{value:_.template,k:K.key},null,8,["value","k"])]),_:1}),e(E,{label:"文件属性",name:"attr"},{default:t(()=>[e(Kn,{format:_.format,k:K.key},null,8,["format","k"])]),_:1})]),_:1},8,["modelValue"])])]),_:1},8,["modelValue","fullscreen"])])}}}),ho=he(Gn,[["__scopeId","data-v-ca061009"]]);export{ho as default};
|
|
2
|
+
//# sourceMappingURL=index-lTmxAqnX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-lTmxAqnX.js","sources":["../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/card/src/card.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/card/src/card2.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/card/index.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/input-number/src/input-number.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/input-number/src/input-number2.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/input-number/index.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/circle-close-filled.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/circle-plus-filled.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/delete.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/edit.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/menu.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/plus.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/share.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/top.mjs","../../src/pages/dashboard/tasks/components/CategoryPanel.vue","../../src/pages/dashboard/tasks/components/CreateTask.vue","../../src/pages/dashboard/tasks/public.ts","../../src/pages/dashboard/tasks/components/infoPanel/ddl.vue","../../src/pages/dashboard/tasks/components/infoPanel/people.vue","../../src/pages/dashboard/tasks/components/infoPanel/template.vue","../../src/pages/dashboard/tasks/components/infoPanel/info.vue","../../src/pages/dashboard/tasks/components/infoPanel/tipInfo.vue","../../src/pages/dashboard/tasks/components/infoPanel/file.vue","../../src/pages/dashboard/tasks/index.vue"],"sourcesContent":["import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst cardProps = buildProps({\n header: {\n type: String,\n default: \"\"\n },\n bodyStyle: {\n type: definePropType([String, Object, Array]),\n default: \"\"\n },\n shadow: {\n type: String,\n values: [\"always\", \"hover\", \"never\"],\n default: \"always\"\n }\n});\n\nexport { cardProps };\n//# sourceMappingURL=card.mjs.map\n","import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, renderSlot, createTextVNode, toDisplayString, createCommentVNode, createElementVNode, normalizeStyle } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { cardProps } from './card.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = {\n name: \"ElCard\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: cardProps,\n setup(__props) {\n const ns = useNamespace(\"card\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([unref(ns).b(), unref(ns).is(`${_ctx.shadow}-shadow`)])\n }, [\n _ctx.$slots.header || _ctx.header ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"header\"))\n }, [\n renderSlot(_ctx.$slots, \"header\", {}, () => [\n createTextVNode(toDisplayString(_ctx.header), 1)\n ])\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"body\")),\n style: normalizeStyle(_ctx.bodyStyle)\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 6)\n ], 2);\n };\n }\n});\nvar Card = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"/home/runner/work/element-plus/element-plus/packages/components/card/src/card.vue\"]]);\n\nexport { Card as default };\n//# sourceMappingURL=card2.mjs.map\n","import '../../utils/index.mjs';\nimport Card from './src/card2.mjs';\nexport { cardProps } from './src/card.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElCard = withInstall(Card);\n\nexport { ElCard, ElCard as default };\n//# sourceMappingURL=index.mjs.map\n","import { isNil } from 'lodash-unified';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../hooks/use-common-props/index.mjs';\nimport { isNumber } from '@vueuse/core';\nimport { CHANGE_EVENT, INPUT_EVENT, UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\n\nconst inputNumberProps = buildProps({\n id: {\n type: String,\n default: void 0\n },\n step: {\n type: Number,\n default: 1\n },\n stepStrictly: Boolean,\n max: {\n type: Number,\n default: Number.POSITIVE_INFINITY\n },\n min: {\n type: Number,\n default: Number.NEGATIVE_INFINITY\n },\n modelValue: Number,\n disabled: Boolean,\n size: useSizeProp,\n controls: {\n type: Boolean,\n default: true\n },\n controlsPosition: {\n type: String,\n default: \"\",\n values: [\"\", \"right\"]\n },\n valueOnClear: {\n type: [String, Number, null],\n validator: (val) => val === null || isNumber(val) || [\"min\", \"max\"].includes(val),\n default: null\n },\n name: String,\n label: String,\n placeholder: String,\n precision: {\n type: Number,\n validator: (val) => val >= 0 && val === Number.parseInt(`${val}`, 10)\n },\n validateEvent: {\n type: Boolean,\n default: true\n }\n});\nconst inputNumberEmits = {\n [CHANGE_EVENT]: (prev, cur) => prev !== cur,\n blur: (e) => e instanceof FocusEvent,\n focus: (e) => e instanceof FocusEvent,\n [INPUT_EVENT]: (val) => isNumber(val) || isNil(val),\n [UPDATE_MODEL_EVENT]: (val) => isNumber(val) || isNil(val)\n};\n\nexport { inputNumberEmits, inputNumberProps };\n//# sourceMappingURL=input-number.mjs.map\n","import { defineComponent, ref, reactive, computed, watch, onMounted, onUpdated, openBlock, createElementBlock, normalizeClass, unref, withModifiers, withDirectives, withKeys, createVNode, withCtx, createBlock, createCommentVNode } from 'vue';\nimport { isNil } from 'lodash-unified';\nimport { ElInput } from '../../input/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../directives/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { ArrowDown, Minus, ArrowUp, Plus } from '@element-plus/icons-vue';\nimport { inputNumberProps, inputNumberEmits } from './input-number.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useFormItem } from '../../../hooks/use-form-item/index.mjs';\nimport { isNumber } from '@vueuse/core';\nimport { isUndefined } from '../../../utils/types.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { useSize, useDisabled } from '../../../hooks/use-common-props/index.mjs';\nimport { isString } from '@vue/shared';\nimport RepeatClick from '../../../directives/repeat-click/index.mjs';\n\nconst _hoisted_1 = [\"aria-label\", \"onKeydown\"];\nconst _hoisted_2 = [\"aria-label\", \"onKeydown\"];\nconst __default__ = {\n name: \"ElInputNumber\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: inputNumberProps,\n emits: inputNumberEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const { t } = useLocale();\n const ns = useNamespace(\"input-number\");\n const input = ref();\n const data = reactive({\n currentValue: props.modelValue,\n userInput: null\n });\n const { formItem } = useFormItem();\n const minDisabled = computed(() => isNumber(props.modelValue) && ensurePrecision(props.modelValue, -1) < props.min);\n const maxDisabled = computed(() => isNumber(props.modelValue) && ensurePrecision(props.modelValue) > props.max);\n const numPrecision = computed(() => {\n const stepPrecision = getPrecision(props.step);\n if (!isUndefined(props.precision)) {\n if (stepPrecision > props.precision) {\n debugWarn(\"InputNumber\", \"precision should not be less than the decimal places of step\");\n }\n return props.precision;\n } else {\n return Math.max(getPrecision(props.modelValue), stepPrecision);\n }\n });\n const controlsAtRight = computed(() => {\n return props.controls && props.controlsPosition === \"right\";\n });\n const inputNumberSize = useSize();\n const inputNumberDisabled = useDisabled();\n const displayValue = computed(() => {\n if (data.userInput !== null) {\n return data.userInput;\n }\n let currentValue = data.currentValue;\n if (isNil(currentValue))\n return \"\";\n if (isNumber(currentValue)) {\n if (Number.isNaN(currentValue))\n return \"\";\n if (!isUndefined(props.precision)) {\n currentValue = currentValue.toFixed(props.precision);\n }\n }\n return currentValue;\n });\n const toPrecision = (num, pre) => {\n if (isUndefined(pre))\n pre = numPrecision.value;\n if (pre === 0)\n return Math.round(num);\n let snum = String(num);\n const pointPos = snum.indexOf(\".\");\n if (pointPos === -1)\n return num;\n const nums = snum.replace(\".\", \"\").split(\"\");\n const datum = nums[pointPos + pre];\n if (!datum)\n return num;\n const length = snum.length;\n if (snum.charAt(length - 1) === \"5\") {\n snum = `${snum.slice(0, Math.max(0, length - 1))}6`;\n }\n return Number.parseFloat(Number(snum).toFixed(pre));\n };\n const getPrecision = (value) => {\n if (isNil(value))\n return 0;\n const valueString = value.toString();\n const dotPosition = valueString.indexOf(\".\");\n let precision = 0;\n if (dotPosition !== -1) {\n precision = valueString.length - dotPosition - 1;\n }\n return precision;\n };\n const ensurePrecision = (val, coefficient = 1) => {\n if (!isNumber(val))\n return data.currentValue;\n return toPrecision(val + props.step * coefficient);\n };\n const increase = () => {\n if (inputNumberDisabled.value || maxDisabled.value)\n return;\n const value = props.modelValue || 0;\n const newVal = ensurePrecision(value);\n setCurrentValue(newVal);\n };\n const decrease = () => {\n if (inputNumberDisabled.value || minDisabled.value)\n return;\n const value = props.modelValue || 0;\n const newVal = ensurePrecision(value, -1);\n setCurrentValue(newVal);\n };\n const verifyValue = (value, update) => {\n const { max, min, step, precision, stepStrictly, valueOnClear } = props;\n let newVal = Number(value);\n if (isNil(value) || Number.isNaN(newVal)) {\n return null;\n }\n if (value === \"\") {\n if (valueOnClear === null) {\n return null;\n }\n newVal = isString(valueOnClear) ? { min, max }[valueOnClear] : valueOnClear;\n }\n if (stepStrictly) {\n newVal = toPrecision(Math.round(newVal / step) * step, precision);\n }\n if (!isUndefined(precision)) {\n newVal = toPrecision(newVal, precision);\n }\n if (newVal > max || newVal < min) {\n newVal = newVal > max ? max : min;\n update && emit(\"update:modelValue\", newVal);\n }\n return newVal;\n };\n const setCurrentValue = (value) => {\n var _a;\n const oldVal = data.currentValue;\n const newVal = verifyValue(value);\n if (oldVal === newVal)\n return;\n data.userInput = null;\n emit(\"update:modelValue\", newVal);\n emit(\"input\", newVal);\n emit(\"change\", newVal, oldVal);\n if (props.validateEvent) {\n (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, \"change\").catch((err) => debugWarn(err));\n }\n data.currentValue = newVal;\n };\n const handleInput = (value) => {\n return data.userInput = value;\n };\n const handleInputChange = (value) => {\n const newVal = value !== \"\" ? Number(value) : \"\";\n if (isNumber(newVal) && !Number.isNaN(newVal) || value === \"\") {\n setCurrentValue(newVal);\n }\n data.userInput = null;\n };\n const focus = () => {\n var _a, _b;\n (_b = (_a = input.value) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a);\n };\n const blur = () => {\n var _a, _b;\n (_b = (_a = input.value) == null ? void 0 : _a.blur) == null ? void 0 : _b.call(_a);\n };\n const handleFocus = (event) => {\n emit(\"focus\", event);\n };\n const handleBlur = (event) => {\n var _a;\n emit(\"blur\", event);\n if (props.validateEvent) {\n (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, \"blur\").catch((err) => debugWarn(err));\n }\n };\n watch(() => props.modelValue, (value) => {\n data.currentValue = verifyValue(value, true);\n data.userInput = null;\n }, { immediate: true });\n onMounted(() => {\n var _a;\n const { min, max, modelValue } = props;\n const innerInput = (_a = input.value) == null ? void 0 : _a.input;\n innerInput.setAttribute(\"role\", \"spinbutton\");\n if (Number.isFinite(max)) {\n innerInput.setAttribute(\"aria-valuemax\", String(max));\n } else {\n innerInput.removeAttribute(\"aria-valuemax\");\n }\n if (Number.isFinite(min)) {\n innerInput.setAttribute(\"aria-valuemin\", String(min));\n } else {\n innerInput.removeAttribute(\"aria-valuemin\");\n }\n innerInput.setAttribute(\"aria-valuenow\", String(data.currentValue));\n innerInput.setAttribute(\"aria-disabled\", String(inputNumberDisabled.value));\n if (!isNumber(modelValue) && modelValue != null) {\n let val = Number(modelValue);\n if (Number.isNaN(val)) {\n val = null;\n }\n emit(\"update:modelValue\", val);\n }\n });\n onUpdated(() => {\n var _a;\n const innerInput = (_a = input.value) == null ? void 0 : _a.input;\n innerInput == null ? void 0 : innerInput.setAttribute(\"aria-valuenow\", `${data.currentValue}`);\n });\n expose({\n focus,\n blur\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\n unref(ns).b(),\n unref(ns).m(unref(inputNumberSize)),\n unref(ns).is(\"disabled\", unref(inputNumberDisabled)),\n unref(ns).is(\"without-controls\", !_ctx.controls),\n unref(ns).is(\"controls-right\", unref(controlsAtRight))\n ]),\n onDragstart: _cache[0] || (_cache[0] = withModifiers(() => {\n }, [\"prevent\"]))\n }, [\n _ctx.controls ? withDirectives((openBlock(), createElementBlock(\"span\", {\n key: 0,\n role: \"button\",\n \"aria-label\": unref(t)(\"el.inputNumber.decrease\"),\n class: normalizeClass([unref(ns).e(\"decrease\"), unref(ns).is(\"disabled\", unref(minDisabled))]),\n onKeydown: withKeys(decrease, [\"enter\"])\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n unref(controlsAtRight) ? (openBlock(), createBlock(unref(ArrowDown), { key: 0 })) : (openBlock(), createBlock(unref(Minus), { key: 1 }))\n ]),\n _: 1\n })\n ], 42, _hoisted_1)), [\n [unref(RepeatClick), decrease]\n ]) : createCommentVNode(\"v-if\", true),\n _ctx.controls ? withDirectives((openBlock(), createElementBlock(\"span\", {\n key: 1,\n role: \"button\",\n \"aria-label\": unref(t)(\"el.inputNumber.increase\"),\n class: normalizeClass([unref(ns).e(\"increase\"), unref(ns).is(\"disabled\", unref(maxDisabled))]),\n onKeydown: withKeys(increase, [\"enter\"])\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n unref(controlsAtRight) ? (openBlock(), createBlock(unref(ArrowUp), { key: 0 })) : (openBlock(), createBlock(unref(Plus), { key: 1 }))\n ]),\n _: 1\n })\n ], 42, _hoisted_2)), [\n [unref(RepeatClick), increase]\n ]) : createCommentVNode(\"v-if\", true),\n createVNode(unref(ElInput), {\n id: _ctx.id,\n ref_key: \"input\",\n ref: input,\n type: \"number\",\n step: _ctx.step,\n \"model-value\": unref(displayValue),\n placeholder: _ctx.placeholder,\n disabled: unref(inputNumberDisabled),\n size: unref(inputNumberSize),\n max: _ctx.max,\n min: _ctx.min,\n name: _ctx.name,\n label: _ctx.label,\n \"validate-event\": false,\n onKeydown: [\n withKeys(withModifiers(increase, [\"prevent\"]), [\"up\"]),\n withKeys(withModifiers(decrease, [\"prevent\"]), [\"down\"])\n ],\n onBlur: handleBlur,\n onFocus: handleFocus,\n onInput: handleInput,\n onChange: handleInputChange\n }, null, 8, [\"id\", \"step\", \"model-value\", \"placeholder\", \"disabled\", \"size\", \"max\", \"min\", \"name\", \"label\", \"onKeydown\"])\n ], 34);\n };\n }\n});\nvar InputNumber = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"/home/runner/work/element-plus/element-plus/packages/components/input-number/src/input-number.vue\"]]);\n\nexport { InputNumber as default };\n//# sourceMappingURL=input-number2.mjs.map\n","import '../../utils/index.mjs';\nimport InputNumber from './src/input-number2.mjs';\nexport { inputNumberEmits, inputNumberProps } from './src/input-number.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElInputNumber = withInstall(InputNumber);\n\nexport { ElInputNumber, ElInputNumber as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"CircleCloseFilled\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336L512 457.664z\"\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 circleCloseFilled = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { circleCloseFilled 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: \"CirclePlusFilled\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-38.4 409.6H326.4a38.4 38.4 0 1 0 0 76.8h147.2v147.2a38.4 38.4 0 0 0 76.8 0V550.4h147.2a38.4 38.4 0 0 0 0-76.8H550.4V326.4a38.4 38.4 0 1 0-76.8 0v147.2z\"\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 circlePlusFilled = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { circlePlusFilled 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: \"Delete\"\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 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V256zm448-64v-64H416v64h192zM224 896h576V256H224v640zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32zm192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32z\"\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 _delete = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { _delete 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: \"Edit\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640V512z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"m469.952 554.24 52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z\"\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 edit = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { edit 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: \"Menu\"\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 448a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32H160zm448 0a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32H608zM160 896a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32H160zm448 0a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32H608z\"\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 menu = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { menu 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: \"Plus\"\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: \"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64h352z\"\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 plus = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { plus 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: \"Share\"\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: \"m679.872 348.8-301.76 188.608a127.808 127.808 0 0 1 5.12 52.16l279.936 104.96a128 128 0 1 1-22.464 59.904l-279.872-104.96a128 128 0 1 1-16.64-166.272l301.696-188.608a128 128 0 1 1 33.92 54.272z\"\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 share = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { share 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: \"Top\"\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: \"M572.235 205.282v600.365a30.118 30.118 0 1 1-60.235 0V205.282L292.382 438.633a28.913 28.913 0 0 1-42.646 0 33.43 33.43 0 0 1 0-45.236l271.058-288.045a28.913 28.913 0 0 1 42.647 0L834.5 393.397a33.43 33.43 0 0 1 0 45.176 28.913 28.913 0 0 1-42.647 0l-219.618-233.23z\"\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 top = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { top as default };\n","<template>\n <!-- 分类管理 -->\n <div class=\"panel\">\n <!-- 按钮 -->\n <div class=\"btn-area\">\n <h5>分类列表</h5>\n <h6 style=\"font-weight: lighter\">(点击分类可筛选任务)</h6>\n </div>\n <!-- 分类列表 -->\n <div style=\"margin-top: 15px\" class=\"category-list\">\n <div class=\"new-tag-wrap\">\n <!-- 新分类 -->\n <el-input\n class=\"input-new-tag el-tag\"\n v-if=\"isShowCreateCategory\"\n v-model=\"categoryName\"\n ref=\"saveTagInput\"\n placeholder=\"分类名称\"\n @keyup.enter=\"addCategory\"\n @focusout=\"addCategory\"\n ></el-input>\n <el-button\n v-else\n class=\"button-new-tag el-tag\"\n size=\"small\"\n @click=\"isShowCreateCategory = true\"\n >+ New 分类</el-button\n >\n <el-tag\n :effect=\"category === 'default' ? 'dark' : 'plain'\"\n @click=\"handleClickCategory('default')\"\n >默认{{ taskCount('default') }}</el-tag\n >\n <span class=\"list-tip\"\n ><el-tag\n type=\"danger\"\n :effect=\"category === 'trash' ? 'dark' : 'plain'\"\n @click=\"handleClickCategory('trash')\"\n ><el-icon><DeleteFilled /></el-icon> 回收站{{\n taskCount('trash')\n }}</el-tag\n ></span\n >\n </div>\n <div class=\"tag-wrap\">\n <div class=\"tag-list\">\n <el-tag\n v-for=\"tag in categorys\"\n :key=\"tag.k\"\n closable\n :effect=\"category === tag.k ? 'dark' : 'plain'\"\n @close=\"handleDeleteCategory(tag)\"\n @click=\"handleClickCategory(tag.k)\"\n >{{ tag.name }}{{ taskCount(tag.k) }}</el-tag\n >\n </div>\n </div>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, defineComponent, ref } from 'vue'\nimport { DeleteFilled } from '@element-plus/icons-vue'\nimport { useStore } from 'vuex'\n\nexport default defineComponent({\n name: 'categoryPanel',\n components: {\n DeleteFilled\n },\n props: {\n category: {\n type: String,\n required: true,\n default: 'default'\n }\n },\n setup(props, context) {\n const $store = useStore()\n // 分类相关\n const categorys = computed(() => $store.state.category.categoryList)\n const tasks = computed(() => $store.state.task.taskList)\n const taskCount = (c: string) => {\n const count = tasks.value.filter((t: any) => t.category === c).length\n return count === 0 ? '' : ` (${count})`\n }\n const isShowCreateCategory = ref(false)\n const categoryName = ref('')\n const addCategory = () => {\n isShowCreateCategory.value = false\n if (!categoryName.value.trim()) {\n // ElMessage.warning('不能为空')\n return\n }\n $store\n .dispatch('category/createCategory', categoryName.value)\n .then(() => {\n ElMessage.success('创建成功')\n })\n .catch((err) => {\n if (err.code === 2001) {\n ElMessage.warning('分类名称已存在')\n }\n })\n categoryName.value = ''\n }\n\n const handleClickCategory = (k: string) => {\n context.emit('update:category', k)\n }\n\n const handleDeleteCategory = (c: any) => {\n ElMessageBox.confirm('是否删除', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消'\n })\n .then(() => {\n $store.dispatch('category/deleteCategory', c.k).then(() => {\n // 删除后变动的默认选择\n handleClickCategory('default')\n ElMessage.success('删除成功')\n // 获取最新的任务\n $store.dispatch('task/getTask')\n })\n })\n .catch(() => {\n ElMessage.info('取消删除')\n })\n }\n\n return {\n categorys,\n isShowCreateCategory,\n categoryName,\n addCategory,\n handleDeleteCategory,\n handleClickCategory,\n taskCount\n }\n }\n})\n</script>\n<style scoped lang=\"scss\">\n.el-tag {\n margin-left: 10px;\n margin-bottom: 10px;\n cursor: pointer;\n}\n.new-tag-wrap {\n display: flex;\n align-items: center;\n}\n.button-new-tag {\n margin-left: 10px;\n height: 32px;\n line-height: 30px;\n padding-top: 0;\n padding-bottom: 0;\n}\n.input-new-tag {\n width: 120px;\n padding: 0;\n margin-left: 10px;\n margin-bottom: 10px;\n vertical-align: bottom;\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}\n.btn-area {\n display: flex;\n justify-content: center;\n}\n.list-tip {\n // color: #67c23a;\n // font-size: 10px;\n margin-right: 10px;\n flex: 1;\n text-align: right;\n}\n.tag-wrap {\n width: 100%;\n height: 150px;\n}\n.tag-list {\n height: 150px;\n overflow-x: hidden;\n overflow-y: scroll;\n display: flex;\n flex-wrap: wrap;\n :deep(.el-tag) {\n width: 140px;\n }\n :deep(.el-tag__content) {\n width: 100px;\n text-align: center;\n text-overflow: ellipsis;\n word-break: keep-all;\n overflow: hidden;\n }\n}\n</style>\n","<template>\n <div>\n <div class=\"btn-area\">\n <el-button size=\"large\" type=\"primary\" :plain=\"!isShowCreateTask\" @click=\"\n isShowCreateTask =\n !isShowCreateTask\n \">\n {{\n isShowCreateTask\n ? '关闭创建面板'\n : '创建收集任务'\n }}\n </el-button>\n </div>\n <!-- 新增区域 -->\n <div v-show=\"isShowCreateTask\">\n <div class=\"input-container\">\n <el-input placeholder=\"请输入任务名称(上述列表选择分类)\" v-model=\"taskName\"></el-input>\n <el-button @click=\"createTask\" :type=\"taskName?.length ? 'success' : 'default'\">确定</el-button>\n </div>\n </div>\n <tip class=\"p10\">\n 点击\n <el-icon>\n <Menu />\n </el-icon> 可以进一步的调整任务\n </tip>\n <tip>\n 设置截止时间,自动重命名,名单限制,批注,文件模板。。🚀\n </tip>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport {\n computed,\n ref,\n} from 'vue'\nimport { useStore } from 'vuex'\nimport { Menu } from '@element-plus/icons-vue'\nimport Tip from './infoPanel/tip.vue'\n\nconst props = defineProps({\n activeCategoryKey: {\n type: String,\n default: 'default',\n },\n})\nconst $store = useStore()\nconst categorys = computed(() => $store.state.category\n .categoryList)\nconst categoryName = computed(() => {\n if (props.activeCategoryKey\n === 'default') {\n return '默认'\n }\n return categorys.value.find((v: any) => v.k\n === props.activeCategoryKey).name\n})\n// 任务相关\nconst isShowCreateTask = ref(false)\nconst taskName = ref('')\nconst createTask = () => {\n if (!taskName.value.trim()) {\n ElMessage.warning('不能为空')\n return\n }\n $store\n .dispatch('task/createTask', {\n name: taskName.value,\n category: props.activeCategoryKey,\n })\n .then(() => {\n ElMessage.success('创建成功')\n })\n taskName.value = ''\n}\n\n</script>\n<style scoped>\n.btn-area {\n display: flex;\n justify-content: center;\n}\n\n.input-container {\n margin: 15px auto;\n max-width: 600px;\n background-color: #fff;\n display: flex;\n justify-content: space-around;\n}\n</style>\n","import { ElMessage } from 'element-plus'\nimport { TaskApi } from '@/apis'\nimport { debounce } from '@/utils/other'\n\nexport const updateTaskInfo: (\n key: string,\n options: TaskApiTypes.TaskInfo,\n successInfo?: boolean\n) => void = debounce(\n (key, options, successInfo = true) => {\n if (key) {\n TaskApi.updateTaskMoreInfo(key, options)\n .then(() => {\n if (successInfo) {\n ElMessage.success({\n message: '设置成功',\n zIndex: 4000,\n duration: 1000\n })\n }\n })\n .catch(() => {\n ElMessage.error({\n message: '设置失败',\n zIndex: 4000\n })\n })\n }\n },\n 1000,\n true\n)\n","<template>\n <div class=\"tc ddl\">\n <tip\n :imgs=\"[\n 'https://img.cdn.sugarat.top/mdImg/MTY0OTE0OTI4NjU5Nw==649149286597',\n 'https://img.cdn.sugarat.top/mdImg/MTY0OTE0OTMxMDEyOQ==649149310129',\n 'https://img.cdn.sugarat.top/mdImg/MTY0OTE0OTM3MzgxOA==649149373818'\n ]\"\n >设置截止日期,截止后将不能再提交文件。</tip\n >\n <div class=\"tc flex fc fac\">\n <el-date-picker\n :editable=\"false\"\n v-model=\"newDate\"\n type=\"datetime\"\n placeholder=\"点击设置新截止日期\"\n @change=\"updateDDL\"\n :default-time=\"new Date(ddl)\"\n ></el-date-picker>\n <el-button v-if=\"newDate\" @click=\"closeDDL\">取消</el-button>\n </div>\n <div style=\"margin-top: 10px\" v-if=\"newDate\">\n <tip>{{ isOver ? '已经截止' : `剩余时间: ${waitTimeStr}` }} </tip>\n </div>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, onMounted, ref, watchEffect } from 'vue'\nimport { formatDate } from '@/utils/stringUtil'\nimport { updateTaskInfo } from '../../public'\nimport Tip from './tip.vue'\n\nconst props = defineProps({\n ddl: {\n type: String,\n default: '',\n required: false\n },\n k: {\n type: String,\n default: ''\n }\n})\n\nconst newDate = ref()\nwatchEffect(() => {\n if (props.ddl) {\n newDate.value = new Date(props.ddl)\n } else {\n newDate.value = null\n }\n})\n// 更新DDL\nconst updateDDL = () => {\n if (newDate.value) {\n const ddl = formatDate(\n new Date(newDate.value.getTime() - 1000 * 60 * 60 * 8)\n )\n updateTaskInfo(props.k, { ddl })\n }\n}\n// 关闭DDL\nconst closeDDL = () => {\n newDate.value = null\n updateTaskInfo(props.k, { ddl: null })\n}\n\nconst waitTime = ref(0)\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})\n\nconst refreshWaitTime = (loop = true) => {\n if (newDate.value) {\n waitTime.value = newDate.value.getTime() - Date.now()\n } else {\n waitTime.value = 0\n }\n if (loop) {\n setTimeout(() => {\n refreshWaitTime()\n }, 1000)\n }\n}\n\nonMounted(() => {\n refreshWaitTime()\n})\n</script>\n","<script lang=\"ts\" setup>\nimport type { UploadUserFile } from 'element-plus'\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, reactive, ref, watch, watchEffect } from 'vue'\nimport { updateTaskInfo } from '../../public'\nimport Tip from './tip.vue'\nimport { PeopleApi, TaskApi } from '@/apis'\nimport { tableToExcel, uploadFile } from '@/utils/networkUtil'\nimport { formatDate } from '@/utils/stringUtil'\nimport { useIsMobile } from '@/composables'\n\nconst props = defineProps({\n value: {\n type: Number,\n defalut: 0,\n },\n k: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n default: '',\n },\n field: {\n type: String,\n default: '姓名',\n },\n})\n\nconst activeTab = ref('手动添加')\nconst userInputName = ref('')\nconst importStatus = ref(false)\n\nfunction handAddName() {\n if (!userInputName.value) {\n return\n }\n importStatus.value = true\n PeopleApi.addPeopleByUser(userInputName.value, props.k)\n .then(() => {\n ElMessage.success(`添加 ${userInputName.value} 成功`)\n })\n .catch(() => {\n ElMessage.error(`${userInputName.value} 已存在`)\n })\n .finally(() => {\n importStatus.value = false\n userInputName.value = ''\n })\n}\nconst checkMore = ref(false)\n\nconst people = ref(0)\nwatchEffect(() => {\n people.value = props.value as number\n})\n// 限制提交人员\nfunction updateLimitPeople(limit: boolean) {\n updateTaskInfo(props.k, {\n people: +limit,\n })\n people.value = +limit\n}\n\n// 查看提交情况\nconst showPeopleList = ref(false)\nconst peopleList: any = reactive([])\nconst selectSubmitStatus = ref('all')\nconst searchName = ref('')\nconst filterPeopleBySearchWord = computed(() => {\n if (!searchName.value) {\n return peopleList\n }\n return peopleList.filter(v => v.name.includes(searchName.value))\n})\nconst peopleSubmitData = computed(() => {\n if (selectSubmitStatus.value === 'all') {\n return filterPeopleBySearchWord.value\n }\n return filterPeopleBySearchWord.value.filter(\n p => p.status === selectSubmitStatus.value,\n )\n})\nconst isLoadingPeopleData = ref(false)\nfunction refreshSubmitData() {\n isLoadingPeopleData.value = true\n PeopleApi.getPeople(props.k, `${+checkMore.value}`).then((res) => {\n peopleList.splice(0, peopleList.length)\n peopleList.push(...res.data.people)\n peopleList.forEach((p) => {\n if (!p.status && p.count === 0) {\n p.lastDate = '暂无记录'\n }\n else {\n p.lastDate = formatDate(new Date(p.lastDate), 'yyyy-MM-dd hh:mm:ss')\n }\n })\n isLoadingPeopleData.value = false\n })\n}\nfunction handleCheckMore() {\n checkMore.value = !checkMore.value\n if (checkMore.value) {\n refreshSubmitData()\n }\n}\nfunction checkPeople() {\n showPeopleList.value = true\n // 默认不展示提交数量\n checkMore.value = false\n refreshSubmitData()\n}\nfunction handleDeletePeople(item: any) {\n ElMessageBox.confirm('确认删除此人员吗', '数据无价,请谨慎操作')\n .then(() => {\n PeopleApi.deletePeople(props.k, item.id).then(() => {\n ElMessage.success('删除成功')\n peopleList.splice(\n peopleList.findIndex(v => v.id === item.id),\n 1,\n )\n })\n })\n .catch(() => {\n ElMessage.info('取消删除')\n })\n}\n// 文件上传\nconst peopleFileList = ref<UploadUserFile[]>([])\nconst peopleUpload = ref()\n// 超出选择的文件个数\nfunction handleExceedFile() {\n ElMessage.error('只能选择一个文件,可删除后重新选择')\n}\n// 清空文件\nfunction clearFiles() {\n peopleFileList.value.splice(0, peopleFileList.value.length)\n peopleUpload.value.clearFiles()\n}\n// 开始上传\nfunction submitUploadPeople() {\n peopleFileList.value.forEach((file) => {\n uploadFile(\n file.raw,\n `${import.meta.env.VITE_APP_AXIOS_BASE_URL}public/upload`,\n {\n success: (e: any) => {\n const { name, type } = e.data\n PeopleApi.importPeople(props.k, name, type).then((res) => {\n const { success, fail } = res.data\n ElMessage.success(`导入完成:${success}成功,${fail.length}失败`)\n if (fail.length > 0) {\n setTimeout(() => {\n ElMessage.info('自动开始下载未成功导入名单')\n tableToExcel(\n ['未成功导入名单'],\n fail.map((v: string) => [v]),\n `${props.name}_导入失败名单_${formatDate(\n new Date(),\n 'yyyy年MM月dd日hh时mm分ss秒',\n )}.xlsx`,\n )\n }, 1000)\n }\n clearFiles()\n })\n },\n },\n )\n })\n}\n// 添加文件\nfunction handleChangeFile(file: any) {\n if (file.raw.type !== 'text/plain') {\n ElMessage.warning({\n message: '只支持txt文件',\n zIndex: 4000,\n })\n clearFiles()\n }\n}\nfunction handleExportExcel() {\n if (peopleSubmitData.value.length === 0) {\n ElMessage.warning('表格中没有可导出数据')\n return\n }\n const headers = [\n '姓名',\n '提交状态',\n '提交数量',\n '最后操作时间',\n ...(checkMore.value ? ['现存数量', '提交次数'] : []),\n ]\n const body = peopleSubmitData.value.map((v) => {\n const { name, status, lastDate, submitCount, fileCount, count } = v\n return [\n name,\n status ? '✔' : 'x',\n submitCount,\n status ? formatDate(new Date(lastDate)) : '',\n ...(checkMore.value ? [fileCount, count] : []),\n ]\n })\n tableToExcel(\n headers,\n body,\n `${props.name}_提交情况_${formatDate(\n new Date(),\n 'yyyy年MM月dd日hh时mm分ss秒',\n )}.xlsx`,\n )\n ElMessage.success('导出成功')\n}\n\nconst isMobile = useIsMobile()\nconst importPanelInfo = reactive({\n taskList: [],\n type: 'override',\n taskValue: '',\n})\nconst showImportPanel = ref(false)\nasync function openImportPanel() {\n const taskKey = props.k\n // 通过任务Key获取可用任务列表,与概况信息\n const { data } = await PeopleApi.getUsefulTemplate(taskKey)\n importPanelInfo.taskList = data\n importPanelInfo.taskValue = data[0]?.taskKey || ''\n showImportPanel.value = true\n}\nconst ImportTaskTipMsg = computed(() => {\n const { taskList, taskValue } = importPanelInfo\n const task = taskList.find(v => v.taskKey === taskValue)\n if (!task) {\n return '无可用任务'\n }\n return `${task.count} 条数据`\n})\nfunction handleSaveImportInfo() {\n PeopleApi.importPeopleFromTpl(\n props.k,\n importPanelInfo.taskValue,\n importPanelInfo.type,\n ).then((res) => {\n showImportPanel.value = false\n const { success, fail } = res.data\n ElMessage.success(`导入成功${success}条,失败${fail.length}条`)\n\n if (fail.length > 0) {\n setTimeout(() => {\n ElMessage.info('自动开始下载未成功导入名单')\n tableToExcel(\n ['未成功导入名单'],\n fail.map((v: string) => [v]),\n `${props.name}_导入失败名单_${formatDate(\n new Date(),\n 'yyyy年MM月dd日hh时mm分ss秒',\n )}.xlsx`,\n )\n }, 1000)\n }\n })\n}\n\nconst importPanelFlexStyle = computed(() => (isMobile.value ? '0 0 auto' : 0.5))\n\nconst bindField = ref('姓名')\nwatch(\n () => props.field,\n (v) => {\n bindField.value = v\n },\n {\n immediate: true,\n },\n)\nfunction handleSureBind() {\n // 空值校验\n if (!bindField.value.trim().length) {\n ElMessage.warning('绑定的表单项不能为空')\n return\n }\n\n // 提交保存\n TaskApi.updateTaskMoreInfo(props.k, {\n bindField: bindField.value,\n }).then(() => {\n ElMessage.success('保存成功')\n })\n}\n</script>\n\n<template>\n <div class=\"tc info-panel\">\n <Tip\n :imgs=\"[\n 'https://img.cdn.sugarat.top/mdImg/MTY1MDE4MzEwOTEzOQ==650183109139',\n 'https://img.cdn.sugarat.top/mdImg/MTY1MTQ5NjY3MTUyMw==651496671523',\n ]\"\n >\n 只有名单里的成员,才可提交文件\n </Tip>\n <el-button\n v-if=\"!people\"\n size=\"default\"\n round\n type=\"success\"\n @click=\"updateLimitPeople(true)\"\n >\n 开启\n </el-button>\n <el-button\n v-if=\"people\"\n size=\"default\"\n round\n type=\"danger\"\n @click=\"updateLimitPeople(false)\"\n >\n 关闭\n </el-button>\n <el-button\n v-if=\"people\"\n round\n size=\"default\"\n type=\"primary\"\n @click=\"checkPeople\"\n >\n 查看提交情况\n </el-button>\n <div v-if=\"people\" class=\"upload-people\">\n <el-radio-group v-model=\"activeTab\" size=\"small\">\n <el-radio-button label=\"文件导入\" />\n <el-radio-button label=\"任务导入\" />\n <el-radio-button label=\"手动添加\" />\n </el-radio-group>\n <div class=\"import-people-wrapper\">\n <div v-show=\"activeTab === '文件导入'\">\n <el-upload\n ref=\"peopleUpload\"\n v-model:file-list=\"peopleFileList\"\n accept=\"text/plain\"\n action=\"\"\n class=\"upload-demo\"\n :on-change=\"handleChangeFile\"\n :on-exceed=\"handleExceedFile\"\n :on-remove=\"clearFiles\"\n :auto-upload=\"false\"\n :limit=\"1\"\n >\n <template #trigger>\n <el-button size=\"small\" type=\"primary\">\n 选择文件\n </el-button>\n </template>\n <el-button\n style=\"margin-left: 10px\"\n size=\"small\"\n type=\"success\"\n :disabled=\"!peopleFileList.length\"\n @click=\"submitUploadPeople\"\n >\n 确定上传\n </el-button>\n <template #tip>\n <div class=\"el-upload__tip\">\n <Tip\n :imgs=\"[\n 'https://img.cdn.sugarat.top/mdImg/MTY1MDE4Mjk2NjUxMA==650182966510',\n ]\"\n >\n 只能上传 .txt 文本文件,每行一个名字\n </Tip>\n <Tip>如名字有特殊字符,建议去除</Tip>\n <Tip>上传文件导入的方式,为追加导入,不会覆盖已存在数据</Tip>\n </div>\n </template>\n </el-upload>\n </div>\n <div v-show=\"activeTab === '任务导入'\">\n <!-- 从其它任务导入 -->\n <el-button size=\"small\" type=\"success\" @click=\"openImportPanel\">\n 选择任务\n </el-button>\n <div class=\"p10\">\n <Tip>支持从已有的任务直接导入名单</Tip>\n </div>\n </div>\n <div v-show=\"activeTab === '手动添加'\">\n <div style=\"max-width: 300px; margin: 0 auto\">\n <el-input\n v-model=\"userInputName\"\n :disabled=\"importStatus\"\n placeholder=\"请输入姓名\"\n >\n <template #append>\n <el-button @click=\"handAddName\">\n 确定\n </el-button>\n </template>\n </el-input>\n </div>\n <div class=\"p10\">\n <Tip>会自动判重,不会重复添加</Tip>\n <Tip>大量名单优先推荐使用文件导入</Tip>\n </div>\n </div>\n </div>\n <div style=\"max-width: 320px; margin: 0 auto\">\n <el-form label-width=\"120px\">\n <el-form-item label=\"绑定表单项\" style=\"margin-bottom: 6px\">\n <el-input v-model=\"bindField\" size=\"small\" clearable>\n <template #append>\n <el-button @click=\"handleSureBind\">\n 确定\n </el-button>\n </template>\n </el-input>\n </el-form-item>\n <Tip style=\"\">\n 和表单项同名字段,可以避免重复填写!!\n </Tip>\n </el-form>\n </div>\n </div>\n <el-dialog v-model=\"showPeopleList\" :fullscreen=\"isMobile\" title=\"提交情况\">\n <!-- 上部分的筛选菜单 -->\n <div class=\"nav\">\n <div class=\"item\">\n <el-button\n :disabled=\"peopleList.length === 0\"\n type=\"success\"\n size=\"default\"\n @click=\"handleExportExcel\"\n >\n 导出记录\n </el-button>\n </div>\n <div class=\"item\">\n <el-select\n v-model=\"selectSubmitStatus\"\n size=\"default\"\n placeholder=\"状态筛选\"\n >\n <el-option label=\"全部\" value=\"all\" />\n <el-option label=\"已提交\" :value=\"1\" />\n <el-option label=\"未提交\" :value=\"0\" />\n </el-select>\n </div>\n <div class=\"item\">\n <el-input\n v-model=\"searchName\"\n size=\"default\"\n placeholder=\"输入要查询的姓名\"\n />\n </div>\n <div class=\"item\">\n <el-button type=\"primary\" size=\"default\" @click=\"handleCheckMore\">\n {{ checkMore ? '隐藏' : '显示' }}详细提交情况\n </el-button>\n </div>\n </div>\n <!-- 概况信息 -->\n <div class=\"tc p10\">\n <span>共: {{ peopleSubmitData.length }} 条数据</span>,\n <span>已提交: {{ peopleSubmitData.filter((v) => v.status).length }}</span>,\n <span>未提交: {{ peopleSubmitData.filter((v) => !v.status).length }}</span>\n </div>\n <div class=\"tc p10\">\n <Tip>\"提交次数\" 用户实际的提交次数</Tip>\n <Tip>\"现存数量\" 还存在于服务器上的文件数 (不包含删除) --- 慢查询</Tip>\n <Tip>\"提交数量\" 用户实际提交的文件数 (不包含撤回) --- 慢查询</Tip>\n </div>\n <!-- 数据部分 -->\n <el-table\n v-loading=\"isLoadingPeopleData\"\n element-loading-text=\"Loading...\"\n stripe\n border\n :data=\"peopleSubmitData\"\n height=\"460px\"\n >\n <el-table-column label=\"序号\" width=\"60\">\n <template #default=\"scope\">\n <div style=\"text-align: center\">\n {{ scope.$index + 1 }}\n </div>\n </template>\n </el-table-column>\n <el-table-column property=\"name\" label=\"姓名\" />\n <el-table-column label=\"提交状态\" width=\"100\">\n <template #default=\"scope\">\n <span v-if=\"scope.row.status\" class=\"submit-ok\">已提交</span>\n <span v-else class=\"submit-fail\">未提交</span>\n </template>\n </el-table-column>\n <el-table-column\n property=\"count\"\n label=\"提交次数\"\n width=\"94\"\n />\n <el-table-column\n sortable\n property=\"lastDate\"\n label=\"最后操作时间\"\n width=\"120\"\n />\n <template v-if=\"checkMore\">\n <el-table-column\n property=\"fileCount\"\n label=\"现存数量\"\n width=\"94\"\n />\n <el-table-column\n sortable\n property=\"submitCount\"\n label=\"提交数量\"\n width=\"120\"\n />\n </template>\n <el-table-column label=\"操作\" width=\"100\">\n <template #default=\"scope\">\n <el-button\n type=\"primary\"\n text\n size=\"small\"\n @click=\"handleDeletePeople(scope.row)\"\n >\n 删除\n </el-button>\n </template>\n </el-table-column>\n </el-table>\n </el-dialog>\n <el-dialog\n v-model=\"showImportPanel\"\n :fullscreen=\"isMobile\"\n title=\"人员列表导入\"\n >\n <el-form\n :model=\"importPanelInfo\"\n label-width=\"100px\"\n label-position=\"right\"\n >\n <el-form-item label=\"任务\">\n <el-select\n v-model=\"importPanelInfo.taskValue\"\n filterable\n placeholder=\"请选择\"\n no-data-text=\"无可用任务\"\n >\n <el-option\n v-for=\"t in importPanelInfo.taskList\"\n :key=\"t.taskKey\"\n :label=\"t.name\"\n :value=\"t.taskKey\"\n />\n </el-select>\n </el-form-item>\n <Tip>{{ ImportTaskTipMsg }}</Tip>\n <el-form-item label=\"任务\">\n <el-radio-group v-model=\"importPanelInfo.type\">\n <el-radio label=\"override\">\n 覆盖导入\n </el-radio>\n <el-radio label=\"add\">\n 追加导入\n </el-radio>\n </el-radio-group>\n </el-form-item>\n <Tip>\n {{\n importPanelInfo.type === 'override'\n ? '“覆盖导入” 将会覆盖原来的数据'\n : '“追加导入” 将只会导入不存在数据'\n }}\n </Tip>\n </el-form>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showImportPanel = false\">取 消</el-button>\n <el-button\n :disabled=\"!importPanelInfo.taskValue\"\n type=\"primary\"\n @click=\"handleSaveImportInfo\"\n >确 定</el-button>\n </span>\n </template>\n </el-dialog>\n </div>\n</template>\n\n<style scoped>\n.upload-people {\n padding: 10px;\n}\n\n.import-people-wrapper {\n padding: 10px 0;\n}\n.submit-ok {\n color: #67c23a;\n}\n\n.submit-fail {\n color: #f56c6c;\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n padding-bottom: 5px;\n}\n\n.nav .item {\n margin-left: 10px;\n margin-top: 5px;\n}\n\n.info-panel :deep(.el-form-item__label) {\n flex: v-bind(importPanelFlexStyle);\n}\n\n.info-panel :deep(.el-upload-list__item-name) {\n justify-content: center;\n}\n</style>\n","<template>\n <div class=\"tc info-panel\">\n <tip\n :imgs=\"[\n 'https://img.cdn.sugarat.top/mdImg/MTY1MDE4MjY3MjUxNw==650182672517'\n ]\"\n >设置的模板文件,可供用户在提交页下载。</tip\n >\n <el-button\n v-if=\"template\"\n :disabled=\"!template\"\n @click=\"deleteTemplate\"\n size=\"default\"\n round\n type=\"danger\"\n >删除</el-button\n >\n <div class=\"p10\">{{ template || '尚未设置模板文件' }}</div>\n <div class=\"upload-file\" v-if=\"!template\">\n <el-upload\n action=\"\"\n ref=\"elUpload\"\n :on-exceed=\"handleExceedFile\"\n :on-remove=\"clearFiles\"\n :auto-upload=\"false\"\n :limit=\"1\"\n v-model:file-list=\"fileList\"\n >\n <template #trigger>\n <el-button size=\"small\" type=\"primary\">选取文件</el-button>\n </template>\n <el-button\n @click=\"submitUploadPeople\"\n style=\"margin-left: 10px\"\n size=\"small\"\n type=\"success\"\n >设为模板</el-button\n >\n <template #tip>\n <div class=\"el-upload__tip\">选择模板文件,然后点击上传</div>\n </template>\n </el-upload>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { ElMessage, UploadUserFile } from 'element-plus'\nimport { defineComponent, ref, watchEffect } from 'vue'\nimport { FileApi } from '@/apis'\nimport { qiniuUpload } from '@/utils/networkUtil'\nimport { updateTaskInfo } from '../../public'\nimport Tip from './tip.vue'\n\nexport default defineComponent({\n name: 'templatePanel',\n props: {\n value: {\n type: String,\n default: ''\n },\n k: {\n type: String,\n default: ''\n }\n },\n setup(props) {\n const template = ref()\n watchEffect(() => {\n if (props.value) {\n template.value = props.value\n } else {\n template.value = ''\n }\n })\n const percentage = ref(0)\n // 删除模板\n const deleteTemplate = () => {\n if (template.value) {\n // 移除文件,避免空间被长时间占用\n updateTaskInfo(props.k, { template: '' })\n template.value = ''\n percentage.value = 0\n }\n }\n // 文件上传\n const fileList = ref<UploadUserFile[]>([])\n const elUpload = ref()\n // 超出选择的文件个数\n const handleExceedFile = () => {\n ElMessage.error('只能选择一个文件,可删除后重新选择')\n }\n // 清空文件\n const clearFiles = () => {\n elUpload.value.clearFiles()\n }\n // 开始上传\n const submitUploadPeople = () => {\n fileList.value.forEach((file) => {\n if (!props.k) {\n return\n }\n const { name } = file\n const key = `easypicker2/${props.k}_template/${name}`\n if (file.status === 'ready') {\n file.status = 'uploading'\n // qiniu上传\n FileApi.getUploadToken().then((res) => {\n qiniuUpload(res.data.token, file.raw, key, {\n success() {\n ElMessage.success('上传成功')\n updateTaskInfo(props.k, { template: name })\n // 清理上传完成的\n clearFiles()\n template.value = name\n file.status = 'success'\n // hash,key\n // console.log(data)\n },\n process(per: number) {\n file.percentage = ~~per\n }\n })\n })\n }\n })\n }\n return {\n template,\n deleteTemplate,\n fileList,\n handleExceedFile,\n clearFiles,\n submitUploadPeople,\n elUpload,\n percentage\n }\n },\n components: { Tip }\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.info-panel :deep(.el-upload-list__item-name) {\n justify-content: center;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, reactive, ref, watch, watchEffect } from 'vue'\nimport {\n CircleCloseFilled,\n CirclePlusFilled,\n Top,\n} from '@element-plus/icons-vue'\nimport { updateTaskInfo } from '../../public'\nimport Tip from './tip.vue'\nimport { TaskApi } from '@/apis'\nimport InfosForm from '@/components/InfosForm/index.vue'\nimport {\n getDefaultFormat,\n parseFileFormat,\n parseInfo,\n} from '@/utils/stringUtil'\nimport { useIsMobile, useSiteConfig } from '@/composables'\n\nconst props = defineProps({\n rewrite: {\n type: Number,\n default: 0,\n },\n info: {\n typs: String,\n default: '[]',\n },\n k: {\n type: String,\n default: '',\n },\n format: {\n type: String,\n default: '',\n required: false,\n },\n})\nconst formatData = reactive(getDefaultFormat())\nconst openPreview = ref(false)\nconst infoTypeList = reactive<{ label: string, value: InfoItemType }[]>([\n {\n label: '输入框',\n value: 'input',\n },\n {\n label: '固定内容',\n value: 'text',\n },\n {\n label: '单选框',\n value: 'radio',\n },\n {\n label: '下拉选择',\n value: 'select',\n },\n])\nfunction getTypeDes(type: string) {\n return infoTypeList.find(v => v.value === type)?.label\n}\n\nconst selectType = ref<InfoItemType>('input')\n\nconst { value: siteConfig } = useSiteConfig()\nconst maxInputLength = computed(() => siteConfig.value.maxInputLength)\n\nconst autoRewrite = ref(false)\nconst infos = reactive<InfoItem[]>([])\nconst needSave = ref(false)\n\nconst showAddInfo = computed(() => infos.length < siteConfig.value.formLength && !openPreview.value)\n// 负责清空&更新\nwatch(\n () => props.info,\n () => {\n infos.splice(0, infos.length)\n selectType.value = 'input'\n openPreview.value = false\n infos.push(...parseInfo(props.info))\n needSave.value = false\n },\n {\n immediate: true,\n },\n)\n\n// 预计格式\nconst resFormat = computed(\n () => `${infos.map(v => v.text).join(formatData.splitChar)}.后缀`,\n)\nwatchEffect(() => {\n autoRewrite.value = !!props.rewrite\n})\nfunction handleChange(v: boolean) {\n updateTaskInfo(props.k, {\n rewrite: +v,\n })\n}\n\nfunction addInfo(infoList?: InfoItem[], type?: InfoItemType) {\n const list = infoList || infos\n const t = type || selectType.value\n const item: InfoItem = { text: `标题${list.length + 1}`, type: t, value: '' }\n if (t === 'radio' || t === 'select') {\n item.children = [{ text: '选项1' }, { text: '选项2' }]\n }\n list.push(item)\n needSave.value = true\n}\nfunction deleteInfo(idx: number, infoList?: InfoItem[], minLen = 1) {\n const list = infoList || infos\n if (list.length <= minLen) {\n return\n }\n list.splice(idx, 1)\n needSave.value = true\n}\nfunction judgeInfoForm(items: InfoItem[]) {\n return items.every(v => v.text.trim() && judgeInfoForm(v.children || []))\n}\nfunction saveInfo() {\n if (!judgeInfoForm(infos)) {\n ElMessage.error('请完整填写表单信息')\n setTimeout(() => {\n ElMessage.warning('不能有空项')\n }, 100)\n return\n }\n updateTaskInfo(props.k, {\n info: JSON.stringify(\n infos.map((v) => {\n // 特殊处理固定值的内容\n if (v.type === 'text') {\n v.value = v.text\n }\n return v\n }),\n ),\n })\n needSave.value = false\n}\n\nfunction moveInfoUp(idx: number) {\n if (idx === 0)\n return\n const temp = infos[idx - 1]\n infos.splice(idx - 1, 1)\n infos.splice(idx, 0, temp)\n}\n\nconst importPanelInfo = reactive({ taskList: [], taskValue: '' })\nconst showImportPanel = ref(false)\nasync function openImportPanel() {\n const taskKey = props.k\n // 通过任务Key获取可用任务列表,与概况信息\n const { data } = await TaskApi.getUsefulTemplate(taskKey)\n importPanelInfo.taskList = data\n importPanelInfo.taskValue = data[0]?.taskKey || ''\n showImportPanel.value = true\n}\n\nfunction handleSaveImportInfo() {\n const usefulInfo = importPanelInfo.taskList.find(\n v => v.taskKey === importPanelInfo.taskValue,\n ).info\n infos.splice(0, infos.length)\n infos.push(...parseInfo(usefulInfo))\n showImportPanel.value = false\n needSave.value = true\n}\n\nconst isMobile = useIsMobile()\nconst importPanelFlexStyle = computed(() => (isMobile.value ? '0 0 auto' : 0.5))\n\nfunction showHelp() {\n ElMessageBox.alert(\n '<p>固定内容主要用于重命名中,固定的部分,如“活动名”,“班级名”</p><p>如要设置注意事项,请使用 <strong>批注</strong> 功能</p>',\n '注意事项',\n { dangerouslyUseHTMLString: true },\n )\n}\n\nfunction handleChangeSplitChar() {\n updateTaskInfo(props.k, {\n format: JSON.stringify(formatData),\n })\n}\nconst splitCharList = reactive(['-', '+', '_'])\nwatchEffect(() => {\n if (props.format !== null) {\n Object.assign(formatData, parseFileFormat(props.format))\n }\n})\n</script>\n\n<template>\n <div class=\"tc\">\n <Tip\n :imgs=\"[\n 'https://img.cdn.sugarat.top/mdImg/MTY1MDE4MzM3NjUyNg==650183376526',\n 'https://img.cdn.sugarat.top/mdImg/MTY1MTQ5NjU2ODcyNg==651496568726',\n ]\"\n >\n 上传文件必填表单信息\n </Tip>\n <div class=\"auto-format\">\n <span>文件自动重命名:</span>\n <el-switch\n v-model=\"autoRewrite\"\n style=\"display: block\"\n active-color=\"#13ce66\"\n inactive-color=\"#ff4949\"\n active-text=\"开\"\n inactive-text=\"关\"\n @change=\"handleChange\"\n />\n </div>\n <div v-if=\"autoRewrite\" style=\"margin-bottom: 10px\">\n 预期格式:\n <span style=\"color: #409eff\">{{ resFormat }}</span>\n </div>\n <div v-if=\"autoRewrite\" style=\"margin-bottom: 10px\">\n 分割符:\n <el-select\n v-model=\"formatData.splitChar\"\n placeholder=\"分隔符\"\n style=\"width: 60px\"\n size=\"small\"\n @change=\"handleChangeSplitChar\"\n >\n <el-option v-for=\"v in splitCharList\" :key=\"v\" :label=\"v\" :value=\"v\" />\n </el-select>\n </div>\n <Tip v-if=\"autoRewrite\" style=\"color: red\">\n 开启自动重命名后,重点关注文件名格式是否符合预期\n </Tip>\n <div>\n 预览\n <el-switch\n v-model=\"openPreview\"\n inline-prompt\n active-text=\"是\"\n inactive-text=\"否\"\n active-color=\"#13ce66\"\n inactive-color=\"#ff4949\"\n />\n </div>\n <!-- 必填信息区域 -->\n <div class=\"form-wrapper\">\n <InfosForm v-if=\"openPreview\" :infos=\"infos\" :disabled=\"openPreview\" />\n <el-form v-else label-width=\"100px\">\n <el-form-item v-for=\"(item, idx) in infos\" :key=\"idx\">\n <template #label>\n <div class=\"flex fc fac\">\n <div class=\"num-wrapper\">\n <div>{{ idx + 1 }}</div>\n </div>\n <div class=\"form-item-type\" :class=\"item.type\">\n {{ getTypeDes(item.type) }}\n </div>\n </div>\n </template>\n <el-input\n v-model=\"item.text\"\n placeholder=\"输入内容\"\n :maxlength=\"maxInputLength\"\n clearable\n show-word-limit\n >\n <template #append>\n <div class=\"form-item-wrapper\">\n <el-icon\n :color=\"infos.length > 1 ? 'red' : 'grey'\"\n @click=\"deleteInfo(idx)\"\n >\n <CircleCloseFilled />\n </el-icon>\n <el-icon\n v-if=\"idx > 0\"\n color=\"#000\"\n style=\"margin-left: 6px\"\n @click=\"moveInfoUp(idx)\"\n >\n <Top />\n </el-icon>\n </div>\n </template>\n </el-input>\n <div\n v-if=\"item.type === 'radio' || item.type === 'select'\"\n class=\"radio-list\"\n >\n <el-input\n v-for=\"(v, idx2) in item.children\"\n :key=\"idx2\"\n v-model=\"v.text\"\n size=\"small\"\n placeholder=\"输入内容\"\n :maxlength=\"maxInputLength\"\n clearable\n show-word-limit\n >\n <template #append>\n <div class=\"form-item-wrapper\">\n <el-icon\n :color=\"item.children.length > 2 ? 'red' : 'grey'\"\n @click=\"deleteInfo(idx2, item.children, 2)\"\n >\n <CircleCloseFilled />\n </el-icon>\n <template v-if=\"idx2 + 1 === item.children.length\">\n <el-icon\n style=\"margin-left: 10px\"\n color=\"#67C23A\"\n @click=\"addInfo(item.children, item.type)\"\n >\n <CirclePlusFilled />\n </el-icon>\n </template>\n </div>\n </template>\n </el-input>\n </div>\n </el-form-item>\n </el-form>\n </div>\n <div v-if=\"showAddInfo\" class=\"p10\">\n <el-button\n size=\"small\"\n type=\"primary\"\n round\n @click=\"\n () => {\n addInfo()\n }\n \"\n >\n 添加一项\n </el-button>\n <el-select\n v-model=\"selectType\"\n style=\"margin: 0 10px\"\n size=\"small\"\n placeholder=\"选择添加的类型\"\n >\n <el-option\n v-for=\"(v, idx) in infoTypeList\"\n :key=\"idx\"\n :label=\"v.label\"\n :value=\"v.value\"\n />\n </el-select>\n <el-button type=\"primary\" text @click=\"showHelp\">\n 提示❓\n </el-button>\n </div>\n <!-- 从其它任务导入 -->\n <el-button size=\"small\" type=\"warning\" @click=\"openImportPanel\">\n 从其它任务导入\n </el-button>\n <div class=\"p10\">\n <Tip>支持从已有的任务直接导入表单信息</Tip>\n <el-button type=\"success\" style=\"width: 200px\" @click=\"saveInfo\">\n 保存\n </el-button>\n </div>\n <div v-if=\"needSave\" style=\"color: red\">\n 有变动,请记得点击保存\n </div>\n <div class=\"info-panel\">\n <el-dialog\n v-model=\"showImportPanel\"\n :fullscreen=\"isMobile\"\n title=\"表单信息导入\"\n >\n <el-form\n :model=\"importPanelInfo\"\n label-width=\"100px\"\n label-position=\"right\"\n >\n <el-form-item label=\"任务\">\n <el-select\n v-model=\"importPanelInfo.taskValue\"\n filterable\n placeholder=\"请选择\"\n no-data-text=\"无可用任务\"\n >\n <el-option\n v-for=\"t in importPanelInfo.taskList\"\n :key=\"t.taskKey\"\n :label=\"t.name\"\n :value=\"t.taskKey\"\n />\n </el-select>\n </el-form-item>\n <Tip>{{ importPanelInfo.taskValue ? '' : '无可用任务' }}</Tip>\n </el-form>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showImportPanel = false\">取 消</el-button>\n <el-button\n :disabled=\"!importPanelInfo.taskValue\"\n type=\"primary\"\n @click=\"handleSaveImportInfo\"\n >确 定\n </el-button>\n </span>\n </template>\n </el-dialog>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.auto-format {\n display: flex;\n justify-content: center;\n}\n\n:deep(.el-form-item__label) {\n display: flex;\n justify-content: center;\n align-items: flex-start;\n}\n\n.num-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n border: 2px solid #000;\n text-align: center;\n font-size: 14px;\n}\n\n.info-panel :deep(.el-form-item__label) {\n flex: v-bind(importPanelFlexStyle);\n justify-content: flex-end;\n}\n\n.form-wrapper {\n max-width: 380px;\n margin: 0 auto;\n}\n\n.form-wrapper :deep(.el-input-group__append) {\n background-color: transparent;\n border: none;\n box-shadow: none;\n padding: 0;\n}\n\n.form-item-wrapper {\n width: 50px;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.form-item-type {\n margin-left: 10px;\n font-size: 12px;\n width: 48px;\n text-align: left;\n}\n\n.radio-list {\n padding-top: 10px;\n}\n\n.radio-list :deep(.el-input) {\n width: 80%;\n}\n</style>\n","<!-- eslint-disable ts/ban-ts-comment -->\n<script lang=\"ts\" setup>\nimport { computed, reactive, ref, watch } from 'vue'\nimport { Plus } from '@element-plus/icons-vue'\nimport type { UploadProps, UploadUserFile } from 'element-plus'\nimport { ElMessage } from 'element-plus'\nimport { updateTaskInfo } from '../../public'\nimport Tip from './tip.vue'\nimport { FileApi, PublicApi, TaskApi } from '@/apis'\nimport { qiniuUpload } from '@/utils/networkUtil'\nimport { getTipImageKey } from '@/utils/stringUtil'\n\nconst props = defineProps({\n tip: {\n type: String,\n default: '',\n required: false,\n },\n k: {\n type: String,\n default: '',\n },\n})\nconst textValue = ref('')\n\nconst tipData = reactive<{\n text: string\n imgs: {\n uid: number\n name: string\n }[]\n}>({\n text: '',\n imgs: [],\n})\nconst MaxImgCount = ref(3)\nconst imageList = ref<UploadUserFile[]>([])\nconst previewList = computed(() => {\n // @ts-expect-error\n return imageList.value.map(v => v!.preview || v.url)\n})\nconst previewIdx = ref(0)\n\nwatch(\n () => props.tip,\n () => {\n // 初始化\n try {\n const parseData = JSON.parse(props.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 props.k,\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 }\n catch {\n tipData.text = props.tip || ''\n tipData.imgs = []\n imageList.value = []\n }\n\n // 外部变动\n if (tipData.text) {\n textValue.value = tipData.text\n }\n else {\n textValue.value = ''\n }\n },\n {\n immediate: true,\n },\n)\nconst needSave = computed(() => tipData.text !== textValue.value)\n\n// 更新批注信息\nfunction updateTip(notify = true) {\n if (tipData.text !== textValue.value) {\n tipData.text = textValue.value\n }\n updateTaskInfo(props.k, { tip: JSON.stringify(tipData) }, notify)\n}\n\nconst imageViewerVisible = ref(false)\nfunction handleChangeFile(file: UploadUserFile) {\n if (!props.k) {\n return\n }\n const { name, uid } = file\n const key = getTipImageKey(props.k, name, uid)\n if (file.status === 'ready') {\n file.status = 'success'\n // qiniu上传\n FileApi.getUploadToken().then((res) => {\n qiniuUpload(res.data.token, file.raw, key, {\n success() {\n tipData.imgs.push({\n uid,\n name,\n })\n updateTip()\n },\n })\n })\n }\n}\nconst handleRemove: UploadProps['onRemove'] = (file) => {\n const { uid, name } = file\n const idx = tipData.imgs.findIndex(v => v.uid === uid)\n tipData.imgs.splice(idx, 1)\n updateTip()\n TaskApi.delTipImage(props.k, uid, name)\n}\n\nfunction handlePictureCardPreview(file) {\n imageViewerVisible.value = true\n const idx = imageList.value.findIndex(v => v.uid === file.uid)\n previewIdx.value = idx\n}\n// 超出选择的文件个数\nfunction handleExceedFile() {\n ElMessage.error(`只能选择${MaxImgCount.value}个图片,可删除后重新选择`)\n}\n</script>\n\n<template>\n <div class=\"tc ddl\">\n <Tip\n :imgs=\"[\n 'https://img.cdn.sugarat.top/mdImg/MTY1MTQ5NjI2OTI0MQ==651496269241',\n ]\"\n >\n 设置注意事项,供用户提交时查看\n </Tip>\n <Tip>注意控制字数和换行,避免展示异常,设置完记得预览一下,再投放</Tip>\n <div class=\"tc flex fc fac\">\n <el-input\n v-model=\"textValue\"\n :rows=\"5\"\n clearable\n :max=\"500\"\n show-word-limit\n type=\"textarea\"\n placeholder=\"请输入要展示的批注信息\"\n />\n </div>\n <div class=\"p10\">\n <el-button size=\"default\" type=\"success\" @click=\"updateTip\">\n 保存\n </el-button>\n <el-button size=\"default\" type=\"danger\" @click=\"textValue = ''\">\n 清空\n </el-button>\n </div>\n <Tip v-if=\"needSave\">\n 有变动记得保存\n </Tip>\n <Tip> 可以设置图片啦↓ 最多3张 </Tip>\n <el-upload\n v-model:file-list=\"imageList\"\n accept=\"image/*\"\n :limit=\"MaxImgCount\"\n action=\"\"\n list-type=\"picture-card\"\n :on-change=\"handleChangeFile\"\n :on-exceed=\"handleExceedFile\"\n :on-preview=\"handlePictureCardPreview\"\n :on-remove=\"handleRemove\"\n :auto-upload=\"false\"\n >\n <el-icon><Plus /></el-icon>\n </el-upload>\n <ElImageViewer\n v-if=\"imageViewerVisible\"\n hide-on-click-modal\n :initial-index=\"previewIdx\"\n :url-list=\"previewList\"\n teleported\n @close=\"imageViewerVisible = false\"\n />\n </div>\n</template>\n","<template>\n <div class=\"tc\">\n <tip class=\"title\"> ↓下方设置允许提交的文件类型↓ </tip>\n <tip>暂时只支持通过文件名后缀进行卡控,不区分大小写</tip>\n <tip>例如:txt,png,jpeg,webp</tip>\n <div class=\"tc\">\n <el-switch\n active-text=\"限制文件类型\"\n inactive-text=\"不限制文件类型\"\n @change=\"handleChange\"\n :value=\"formatData.status\"\n style=\"--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949\"\n />\n </div>\n <div v-show=\"formatData.status\">\n <tip>支持英文逗号\",\"分割,一次添加多个</tip>\n <div style=\"max-width: 300px; margin: 0 auto\">\n <el-input v-model=\"typeName\" placeholder=\"请输入文件类型(省略.)\">\n <template #append>\n <el-button @click=\"handleAddType\"> 确定 </el-button>\n </template>\n </el-input>\n </div>\n <el-tag\n v-for=\"(tag, idx) in formatData.format\"\n :key=\"idx\"\n class=\"type\"\n closable\n :disable-transitions=\"false\"\n @close=\"handleDelType(idx)\"\n >\n {{ tag }}\n </el-tag>\n <tip v-show=\"formatData.format.length\"\n >已添加: <span>{{ formatData.format.join(',') }}</span>\n <el-button type=\"primary\" text size=\"small\" @click=\"handleCopyType\"\n >一键复制</el-button\n >\n </tip>\n </div>\n <div class=\"split-line\"></div>\n <tip class=\"title\"\n >↓下方设置最大同时提交文件数量(16 >= x >=1 默认 10)↓</tip\n >\n <div class=\"tc\">\n <el-input-number\n :model-value=\"formatData.limit\"\n :min=\"1\"\n :max=\"16\"\n @change=\"handleChangeLimit\"\n />\n </div>\n <div class=\"split-line\"></div>\n <tip class=\"title\"> ↓下方设置文件最大的大小↓ </tip>\n <tip>1024B = 1KB, 1024KB = 1MB, 1024MB = 1GB</tip>\n <tip>0表示不限制</tip>\n <div class=\"tc\">\n <el-input-number\n :model-value=\"inputSize\"\n :min=\"0\"\n :max=\"1024\"\n @change=\"handleLimitSize\"\n />\n <el-select\n @change=\"handleChangeUnit\"\n v-model=\"formatData.sizeUnit\"\n placeholder=\"单位\"\n style=\"width: 100px\"\n >\n <el-option v-for=\"v in unitList\" :key=\"v\" :label=\"v\" :value=\"v\" />\n </el-select>\n </div>\n <div class=\"split-line\"></div>\n <tip :style=\"formatData.size === 0 ? 'color:grey' : 'color:red'\">{{\n formatData.size === 0\n ? '不限制大小'\n : `限制为不超过: ${formatSize(formatData.size)}`\n }}</tip>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport { reactive, ref, watchEffect } from 'vue'\nimport {\n copyRes,\n formatSize,\n getDefaultFormat,\n parseFileFormat\n} from '@/utils/stringUtil'\nimport { updateTaskInfo } from '../../public'\nimport Tip from './tip.vue'\n\nconst props = defineProps({\n format: {\n type: String,\n default: '',\n required: false\n },\n k: {\n type: String,\n default: ''\n }\n})\n\nconst formatData = reactive(getDefaultFormat())\nconst typeName = ref('')\nconst updateInfo = () => {\n updateTaskInfo(props.k, {\n format: JSON.stringify(formatData)\n })\n}\nconst handleChange = (v: boolean) => {\n formatData.status = !!v\n updateInfo()\n}\n\nconst handleAddType = () => {\n const inputValue = typeName.value\n .split(',')\n // 转为小写\n .map((v) => v.trim().toLowerCase())\n for (const v of inputValue) {\n if (formatData.format.includes(v)) {\n ElMessage.error(`${v} 已存在`)\n return\n }\n }\n\n formatData.format.push(...inputValue)\n updateInfo()\n\n typeName.value = ''\n}\nconst handleDelType = (idx) => {\n formatData.format.splice(idx, 1)\n updateInfo()\n}\nconst handleCopyType = () => {\n copyRes(formatData.format.join(','))\n}\n\nconst handleChangeLimit = (limit: number) => {\n formatData.limit = limit\n updateInfo()\n}\n\nconst inputSize = ref(0)\nconst unitList = reactive(['B', 'KB', 'MB', 'GB'])\nconst handleChangeUnit = () => {\n const idx = unitList.findIndex((v) => v === formatData.sizeUnit)\n formatData.size = inputSize.value * 1024 ** idx\n updateInfo()\n}\nconst handleLimitSize = (limit: number) => {\n inputSize.value = limit\n const idx = unitList.findIndex((v) => v === formatData.sizeUnit)\n formatData.size = inputSize.value * 1024 ** idx\n updateInfo()\n}\n\nwatchEffect(() => {\n if (props.format !== null) {\n Object.assign(formatData, parseFileFormat(props.format))\n }\n})\n</script>\n<style scoped>\n.type {\n margin: 10px;\n}\n.split-line {\n margin-top: 10px;\n}\n.title {\n color: black;\n font-weight: bold;\n}\n</style>\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 CategoryPanel from './components/CategoryPanel.vue'\nimport CreateTask from './components/CreateTask.vue'\nimport TaskInfo from './components/TaskInfo.vue'\nimport DDlPanel from './components/infoPanel/ddl.vue'\nimport PeoplePanel from './components/infoPanel/people.vue'\nimport TemplatePanel from './components/infoPanel/template.vue'\nimport InfoPanel from './components/infoPanel/info.vue'\nimport TipInfoPanel from './components/infoPanel/tipInfo.vue'\nimport FileInfoPanel from './components/infoPanel/file.vue'\nimport { copyRes } from '@/utils/stringUtil'\nimport { TaskApi } from '@/apis'\nimport { useIsMobile } from '@/composables'\n\nconst $store = useStore()\n\nconst isMobile = useIsMobile()\n// 分类相关\nconst categorys = computed(() => $store.state.category.categoryList)\n\n// 任务相关\nconst selectCategory = ref('default')\nconst tasks = computed<TaskApiTypes.TaskItem[]>(\n () => $store.state.task.taskList,\n)\nconst filterTasks = computed(() => {\n const t = tasks.value.filter(v => v.category === selectCategory.value)\n return t\n})\n\n// 删除任务\nfunction deleteTask(k: string, isTrash = false) {\n if (!k)\n return\n ElMessageBox.confirm(\n '确认删除此任务吗?',\n isTrash ? '!!回收站的删除后无法再恢复' : '数据无价,请谨慎操作',\n {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: isTrash ? 'error' : 'info',\n },\n )\n .then(() => {\n $store.dispatch('task/deleteTask', k).then(() => {\n ElMessage.success('删除成功')\n })\n })\n .catch(() => {\n ElMessage.info('取消删除')\n })\n}\n\n// 基本信息编辑\nconst showBaseInfoDialog = ref(false)\nconst taskBaseInfo = reactive({ name: '', category: '', key: '' })\nfunction editBaseInfo(task: any) {\n taskBaseInfo.name = task.name\n taskBaseInfo.category = task.category\n taskBaseInfo.key = task.key\n showBaseInfoDialog.value = true\n}\nfunction handleSaveEditInfo() {\n showBaseInfoDialog.value = false\n if (!taskBaseInfo.name.trim()) {\n ElMessage.warning('不能为空')\n return\n }\n $store.dispatch('task/updateTask', taskBaseInfo).then(() => {\n ElMessage.success('更新成功')\n })\n}\n\n// 生成分享链接\nconst shareTaskLink = ref('')\nconst showLinkModal = ref(false)\nconst shareTaskName = ref('')\nfunction shareTask(k: string) {\n shareTaskLink.value = 'default'\n const { origin } = window.location\n shareTaskLink.value = `${origin}/task/${k}`\n copyRes(shareTaskLink.value, '收集链接已自动复制到粘贴板')\n shareTaskName.value = tasks.value.find(v => v.key === k)?.name\n showLinkModal.value = true\n}\n\n// 附加属性编辑\nconst taskInfo = reactive<TaskApiTypes.TaskInfo>({})\nconst showTaskInfoPanel = ref(false)\nconst activeInfo = ref('info')\nconst activeTask: TaskApiTypes.TaskItem = reactive({\n category: '',\n key: '',\n name: '',\n recentLog: [],\n})\nfunction editMore(item: any) {\n Object.assign(activeTask, item)\n TaskApi.getTaskMoreInfo(item.key).then((res) => {\n // 先初始化,再赋值\n taskInfo.info = '[]'\n taskInfo.ddl = ''\n taskInfo.tip = ''\n taskInfo.format = ''\n taskInfo.bindField = ''\n setTimeout(() => {\n Object.assign(taskInfo, res.data)\n showTaskInfoPanel.value = true\n })\n })\n}\n\n// TODO: 有需要再优化,目前像bug\n// 用于选择默认展示项目\n// const taskCount = (c: string) => {\n// const count = tasks.value.filter((t: any) => t.category === c).length\n// return count\n// }\n\n// 选中一个有任务数据的分类\n// watchEffect(() => {\n// if (taskCount('default') > 0) {\n// return\n// }\n// if (categorys.value.length > 0) {\n// for (const c of categorys.value) {\n// if (taskCount(c.k) > 0) {\n// selectCategory.value = c.k\n// break\n// }\n// }\n// }\n// })\n\nonMounted(() => {\n $store.dispatch('category/getCategory')\n $store.dispatch('task/getTask')\n})\n\nfunction openTaskPage() {\n window.open(`/task/${activeTask.key}`)\n}\n</script>\n\n<template>\n <div class=\"tasks\">\n <!-- 分类管理 -->\n <div class=\"categorys-area\">\n <CategoryPanel v-model:category=\"selectCategory\" />\n </div>\n\n <!-- 任务管理 -->\n <div class=\"panel task-panel\">\n <!-- 创建任务 -->\n <CreateTask :active-category-key=\"selectCategory\" />\n\n <!-- 任务列表 -->\n <div class=\"task-list\">\n <TaskInfo\n v-for=\"item in filterTasks\"\n :key=\"item.key\"\n :item=\"item\"\n @edit=\"editBaseInfo\"\n @delete=\"deleteTask\"\n @share=\"shareTask\"\n @more=\"editMore\"\n />\n <el-empty\n v-if=\"filterTasks.length === 0\"\n description=\"此分类下没有任务哟,快去创建吧\"\n />\n </div>\n </div>\n\n <!-- 任务基本信息维护弹窗 -->\n <el-dialog\n v-model=\"showBaseInfoDialog\"\n draggable\n :fullscreen=\"isMobile\"\n title=\"基本信息修改\"\n >\n <el-form :model=\"taskBaseInfo\">\n <el-form-item label=\"任务名称\" label-width=\"100px\">\n <el-input v-model=\"taskBaseInfo.name\" autocomplete=\"off\" />\n </el-form-item>\n <el-form-item label=\"新的分类\" label-width=\"100px\">\n <el-select v-model=\"taskBaseInfo.category\" placeholder=\"请选择新分类\">\n <el-option label=\"默认\" value=\"default\" />\n <el-option\n v-for=\"c in categorys\"\n :key=\"c.k\"\n :label=\"c.name\"\n :value=\"c.k\"\n />\n </el-select>\n </el-form-item>\n </el-form>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showBaseInfoDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSaveEditInfo\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n\n <!-- 分享链接弹窗(二维码/链接/短链) -->\n <LinkDialog\n v-model:value=\"showLinkModal\"\n :download=\"false\"\n title=\"收取链接\"\n :link=\"shareTaskLink\"\n :share-text-prefix=\"shareTaskName\"\n />\n <!-- 附加属性编辑弹窗 -->\n <el-dialog\n v-model=\"showTaskInfoPanel\"\n :fullscreen=\"isMobile\"\n title=\"更多设置\"\n center\n >\n <div>\n <h3 class=\"tc\" style=\"font-size: 14px; color: #9e9e9e\">\n 任务名:<strong style=\"color: #000000\">{{ activeTask.name }}</strong>,\n <el-button type=\"primary\" text @click=\"openTaskPage\">\n 去查看效果\n </el-button>\n </h3>\n <el-tabs v-model=\"activeInfo\">\n <el-tab-pane label=\"截止日期\" name=\"ddl\">\n <DDlPanel :ddl=\"taskInfo.ddl\" :k=\"activeTask.key\" />\n </el-tab-pane>\n <el-tab-pane label=\"批注信息\" name=\"tip\">\n <TipInfoPanel\n :rewrite=\"taskInfo.rewrite\"\n :tip=\"taskInfo.tip\"\n :k=\"activeTask.key\"\n />\n </el-tab-pane>\n <el-tab-pane label=\"限制名单\" name=\"people\">\n <PeoplePanel\n :name=\"activeTask.name\"\n :value=\"taskInfo.people\"\n :k=\"activeTask.key\"\n :field=\"taskInfo.bindField\"\n />\n </el-tab-pane>\n <el-tab-pane label=\"必填信息\" name=\"info\">\n <InfoPanel\n :rewrite=\"taskInfo.rewrite\"\n :info=\"taskInfo.info\"\n :k=\"activeTask.key\"\n :format=\"taskInfo.format\"\n />\n </el-tab-pane>\n <el-tab-pane label=\"模板文件\" name=\"template\">\n <TemplatePanel :value=\"taskInfo.template\" :k=\"activeTask.key\" />\n </el-tab-pane>\n <el-tab-pane label=\"文件属性\" name=\"attr\">\n <FileInfoPanel :format=\"taskInfo.format\" :k=\"activeTask.key\" />\n </el-tab-pane>\n </el-tabs>\n </div>\n </el-dialog>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.tasks {\n max-width: 1024px;\n margin: 0 auto;\n padding-bottom: 2em;\n}\n\n.tasks :deep(.el-dialog__body) {\n padding-top: 10px;\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}\n\n.task-list {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n}\n\n@media screen and (max-width: 700px) {\n .categorys-area {\n margin-top: 20px;\n }\n :deep(.el-tabs__nav-scroll) {\n overflow-x: scroll;\n &::-webkit-scrollbar {\n display: none; /* Chrome Safari */\n }\n }\n}\n</style>\n"],"names":["cardProps","buildProps","definePropType","__default__","_sfc_main","defineComponent","__props","ns","useNamespace","_ctx","_cache","openBlock","createElementBlock","normalizeClass","unref","renderSlot","createTextVNode","toDisplayString","createCommentVNode","createElementVNode","normalizeStyle","Card","_export_sfc","ElCard","withInstall","inputNumberProps","useSizeProp","val","isNumber","inputNumberEmits","CHANGE_EVENT","prev","cur","e","INPUT_EVENT","isNil","UPDATE_MODEL_EVENT","_hoisted_1","_hoisted_2","expose","emit","props","t","useLocale","input","ref","data","reactive","formItem","useFormItem","minDisabled","computed","ensurePrecision","maxDisabled","numPrecision","stepPrecision","getPrecision","isUndefined","controlsAtRight","inputNumberSize","useSize","inputNumberDisabled","useDisabled","displayValue","currentValue","toPrecision","num","pre","snum","pointPos","length","value","valueString","dotPosition","precision","coefficient","increase","newVal","setCurrentValue","decrease","verifyValue","update","max","min","step","stepStrictly","valueOnClear","isString","_a","oldVal","err","debugWarn","handleInput","handleInputChange","focus","_b","blur","handleFocus","event","handleBlur","watch","onMounted","modelValue","innerInput","onUpdated","withModifiers","withDirectives","withKeys","createVNode","ElIcon","withCtx","createBlock","ArrowDown","Minus","RepeatClick","ArrowUp","Plus","ElInput","InputNumber","ElInputNumber","_hoisted_3","_sfc_render","$props","$setup","$data","$options","circleCloseFilled","circlePlusFilled","_delete","_hoisted_4","edit","menu","plus","share","top","_sfc_main$9","DeleteFilled","context","$store","useStore","categorys","tasks","taskCount","c","count","isShowCreateCategory","categoryName","addCategory","ElMessage","handleClickCategory","k","ElMessageBox","_withScopeId","n","_pushScopeId","_popScopeId","_createElementVNode","_hoisted_5","_component_el_icon","__unplugin_components_3","_openBlock","_createElementBlock","_createBlock","_component_el_input","$event","_component_el_button","_createTextVNode","_createVNode","_component_el_tag","_toDisplayString","category","_withCtx","_component_DeleteFilled","_hoisted_6","_hoisted_7","_Fragment","_renderList","tag","isShowCreateTask","taskName","createTask","updateTaskInfo","debounce","key","options","successInfo","TaskApi","newDate","watchEffect","updateDDL","ddl","formatDate","closeDDL","waitTime","isOver","waitTimeStr","seconds","hour","day","minute","refreshWaitTime","loop","activeTab","userInputName","importStatus","handAddName","PeopleApi","checkMore","people","updateLimitPeople","limit","showPeopleList","peopleList","selectSubmitStatus","searchName","filterPeopleBySearchWord","v","peopleSubmitData","p","isLoadingPeopleData","refreshSubmitData","res","handleCheckMore","checkPeople","handleDeletePeople","item","peopleFileList","peopleUpload","handleExceedFile","clearFiles","submitUploadPeople","file","uploadFile","name","type","success","fail","tableToExcel","handleChangeFile","handleExportExcel","headers","body","status","lastDate","submitCount","fileCount","isMobile","useIsMobile","importPanelInfo","showImportPanel","openImportPanel","taskKey","ImportTaskTipMsg","taskList","taskValue","task","handleSaveImportInfo","importPanelFlexStyle","bindField","handleSureBind","_sfc_main$4","template","percentage","deleteTemplate","fileList","elUpload","FileApi","qiniuUpload","per","Tip","_component_el_upload","__unplugin_components_1","_component_tip","_createCommentVNode","formatData","getDefaultFormat","openPreview","infoTypeList","getTypeDes","selectType","siteConfig","useSiteConfig","maxInputLength","autoRewrite","infos","needSave","showAddInfo","parseInfo","resFormat","handleChange","addInfo","infoList","list","deleteInfo","idx","minLen","judgeInfoForm","items","saveInfo","moveInfoUp","temp","usefulInfo","showHelp","handleChangeSplitChar","splitCharList","parseFileFormat","textValue","tipData","MaxImgCount","imageList","previewList","previewIdx","parseData","PublicApi","url","updateTip","notify","imageViewerVisible","uid","getTipImageKey","handleRemove","handlePictureCardPreview","typeName","updateInfo","handleAddType","inputValue","handleDelType","handleCopyType","copyRes","handleChangeLimit","inputSize","unitList","handleChangeUnit","handleLimitSize","selectCategory","filterTasks","deleteTask","isTrash","showBaseInfoDialog","taskBaseInfo","editBaseInfo","handleSaveEditInfo","shareTaskLink","showLinkModal","shareTaskName","shareTask","origin","taskInfo","showTaskInfoPanel","activeInfo","activeTask","editMore","openTaskPage"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13]}
|