dm-vue3-ui
Version:
This Components Library will help get you started developing in Vue 3.
2 lines (1 loc) • 3.17 kB
JavaScript
;const e=require("ant-design-vue/es"),t=require("vue"),a=require("ant-design-vue"),u=require("../cron-picker/utils/util"),l=require("../i18n/index"),r=require("../cron-picker/panel/index.vue"),n=require("@vueuse/core"),i={class:"dm-cron-picker"},s=t.defineComponent({name:"dm-cron-tab",__name:"index",props:{size:{default:"default"},trigger:{default:"click"},title:{default:l.$t("cronPicker.title")},placement:{default:"bottomLeft"},format:{default:""},disabled:{type:Boolean,default:!1},value:{default:""},runTypes:{default:()=>[]},tabSelect:{default:"time"}},emits:["input","extra","change","update:value"],setup(s,{emit:d}){const o=s,c=d,p=n.useVModel(o,"value",c),v=t.ref(o.runTypes.length>0?o.runTypes[0].value:""),f=t.ref(),m=t.ref(!0),T=t.ref(o.tabSelect),y=t.computed((()=>o.runTypes.length>0?o.runTypes:u.CRON_TIMES_LIST)),_=t.computed((()=>(()=>{const e=u.DEFAULT_PICKER_FORMAT[b.value?v.value:"default"],{formatter:t}=u.TYPE_VALUE_RESOLVER_MAP[v.value]||u.TYPE_VALUE_RESOLVER_MAP.default;return t(f.value,o.format||e)})())),b=t.computed((()=>u.PICKER_TYPE_LIST.includes(v.value))),E=e=>{let t=u.COLUMNS_MAP[v.value]||u.COLUMNS_MAP.default;f.value=e||Object.fromEntries(t.map((e=>[e,["week","day","month"].includes(e)?1:0])))},g=()=>{p.value=u.genCronExprByType(v.value,f.value)},x=e=>{p.value=e};return t.onMounted((()=>{if(o.value){m.value=!1;const e=u.genRunStrByCron(o.value);v.value=e.runType,f.value=e.runTimes}else v.value="minute",E()})),t.watch((()=>v.value),(()=>{m.value?E():m.value=!0}),{immediate:!0}),t.watch((()=>o.value),(e=>{if(e){p.value=e||"";const t=u.genRunStrByCron(o.value);v.value=t.runType,f.value=t.runTimes}else v.value="",E()}),{immediate:!1}),t.watch((()=>p.value),((e,t)=>{const a=`每${u.COLUMNS_HEADER_MAP[v.value]} ${_.value}`;p.value=e,c("extra",{val:e,dateStr:a}),e!==t&&c("change",e)})),(u,n)=>{const s=e.Input,d=e.Button,o=e.InputGroup;return t.openBlock(),t.createBlock(t.unref(a.ConfigProvider),{prefixCls:"dm-ui"},{default:t.withCtx((()=>[t.createElementVNode("div",i,[t.createVNode(o,{compact:"",style:{display:"flex"}},{default:t.withCtx((()=>[u.$slots.default?t.createCommentVNode("",!0):(t.openBlock(),t.createBlock(s,{key:0,class:"cron-picker-input",size:u.size,disabled:u.disabled,value:t.unref(p),"onUpdate:value":n[0]||(n[0]=e=>t.isRef(p)?p.value=e:null)},null,8,["size","disabled","value"])),t.createVNode(r,{trigger:u.trigger,title:u.title,size:u.size,placement:u.placement,runType:v.value,"onUpdate:runType":n[1]||(n[1]=e=>v.value=e),runTypes:u.runTypes,runtypeList:y.value,disabled:u.disabled,runTimes:f.value,tabSelect:T.value,format:u.format,isHaveTab:!0,expression:t.unref(p),onHandleGenCronExpr:g,onHandleTabCronExpr:x},{default:t.withCtx((()=>[t.renderSlot(u.$slots,"default",{},(()=>[t.createVNode(d,{size:u.size,disabled:u.disabled,class:"cron-picker-panel-button"},{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(t.unref(l.$t)("cronPicker.usePickerBtnText")),1)])),_:1},8,["size","disabled"])]))])),_:3},8,["trigger","title","size","placement","runType","runTypes","runtypeList","disabled","runTimes","tabSelect","format","expression"])])),_:3})])])),_:3})}}});module.exports=s;