eslink-ui-plus
Version:
vue3 component library, css framework
4 lines (3 loc) • 4.62 kB
JavaScript
import{defineComponent as T,computed as w,resolveComponent as L,openBlock as b,createBlock as v,mergeProps as y}from"vue";import{ElCascader as S}from"element-plus";const c=t=>t<10?`0${t}`:t,f=(t,a,e=!0)=>{const n=[],s={31:[1,3,5,7,8,10,12],30:[4,6,9,11],28:[2]},i=Object.values(s).findIndex(u=>u.includes(a)),o=Object.keys(s)[i];let l=1;for(;l<=+o;){const u=e?`${t}-${c(a)}-${c(l)}`:`${c(l)}\u65E5`;n.push({label:u,value:`${t}-${c(a)}-${c(l)}`}),l++}return n},$=t=>{const a=t?new Date(t):new Date,e=a.getFullYear(),n=a.getMonth()+1,s=a.getDate(),i=a.getDay(),r=+new Date(`${e}-${c(n)}-${c(s)}`),o=3600*1e3*24;let l,u;i===1?(l=r,u=l+6*o):i>0?(l=r-(i-1)*o,u=l+6*o):(l=r-(7-1)*o,u=l+6*o);const D=new Date(l).toLocaleDateString().split("/").map(p=>c(p)).join("-"),h=new Date(u).toLocaleDateString().split("/").map(p=>c(p)).join("-");return{timeString:{startTime:D,endTime:h},timeStamp:{startTime:+new Date(l),endTime:+new Date(u)}}},E=t=>{const a=t?new Date(t):new Date,e=a.getFullYear(),n=a.getMonth()+1,s=new Date(e,n,0).getDate();return{timeString:{startTime:`${e}-${c(n)}-01`,endTime:`${e}-${c(n)}-${s}`},timeStamp:{startTime:+new Date(`${e}-${c(n)}-01`),endTime:+new Date(`${e}-${c(n)}-${s}`)}}},M=t=>{const e=(t?new Date(t):new Date).getFullYear();return{timeString:{startTime:`${e}-01-01`,endTime:`${e}-12-31`},timeStamp:{startTime:+new Date(`${e}-01-01`),endTime:+new Date(`${e}-12-31`)}}},Y=t=>{const a=t?new Date(t):new Date,e=a.getFullYear(),n=a.getMonth()+1;let s=null;[[1,2,3],[4,5,6],[7,8,9],[10,11,12]].forEach((o,l)=>{o.includes(n)&&(s=l+1)});const r=C(s);return{timeString:{startTime:`${e}-${r[0]}`,endTime:`${e}-${r[1]}`},timeStamp:{startTime:+new Date(`${e}-${r[0]}`),endTime:+new Date(`${e}-${r[1]}`)}}},C=t=>({1:["01-01","03-31"],2:["04-01","06-30"],3:["07-01","09-30"],4:["10-01","12-31"]})[t],d=(t=5)=>{const a=[],e=new Date().getFullYear();if(t===void 0)return[];for(t--;t;)a.push(e-t),t--;return a.push(e),a},g=(t=new Date().getFullYear(),a=!0)=>{const e=[];let n=1;for(;n<=12;){const s=a?`${n}\u6708`:n,i=E(`${t}-${n}-01`).timeString;e.push({label:s,value:`${i.startTime}~${i.endTime}`,month:n}),n++}return e},_=(t=new Date().getFullYear(),a=!0)=>{const e=[];let n=1;const s={1:`${t}-01-01`,2:`${t}-04-01`,3:`${t}-07-01`,4:`${t}-10-01`};for(;n<=4;){const i=a?`\u7B2C${n}\u5B63\u5EA6`:n,r=Y(s[n]).timeString;e.push({label:i,value:`${r.startTime}~${r.endTime}`}),n++}return e},k=(t=new Date().getFullYear(),a=!0)=>{const e=3600*1e3*24,n=[],s=new Date(`${t}-01-01`),i=+new Date(`${t}-12-31`);let r=$(s),o=1;for(;r.timeStamp.startTime<=i;){const l=a?`\u7B2C${o}\u5468 (${r.timeString.startTime} ~ ${r.timeString.endTime})`:`\u7B2C${o}\u5468`;n.push({label:l,value:`${r.timeString.startTime}~${r.timeString.endTime}`}),o++,r=$(r.timeStamp.endTime+e)}return n},B=(t=5)=>d(t).map(e=>({label:`${e}\u5E74`,value:`${e}\u5E74`,children:k(e).map(n=>({complateLabel:`${e}\u5E74 ${n.label}`,label:n.label,value:n.value}))})),F=(t=5)=>d(t).map(e=>({label:`${e}\u5E74`,value:`${e}\u5E74`,children:g(e).map(n=>({complateLabel:`${e}\u5E74 ${n.label}`,label:n.label,value:n.value}))})),x=(t=5)=>d(t).map(e=>({label:`${e}\u5E74`,value:`${e}\u5E74`,children:_(e).map(n=>({complateLabel:`${e}\u5E74 ${n.label}`,label:n.label,value:n.value}))})),q=(t=5)=>d(t).map(e=>({label:`${e}\u5E74`,value:`${e}\u5E74`,children:g(e).map(n=>({label:n.label,value:n.value,children:f(e,n.month,!1).map(s=>({complateLabel:`${e}\u5E74 ${n.label} ${s.label}`,label:s.label,value:s.value}))}))})),j=(t=5)=>d(t).map(e=>{const n=M(`${e}-01-01`).timeString;return{complateLabel:`${e}\u5E74`,label:`${e}\u5E74`,value:`${n.startTime}~${n.endTime}`}});var m=T({name:"es-time-select-cascader",props:{type:{type:String,default:"day"},offset:{type:Number,default:5}},components:{ElCascader:S},setup(t){return{options:w(()=>({day:q,week:B,month:F,quarter:x,year:j})[t.type](t.offset))}}});function A(t,a,e,n,s,i){const r=L("el-cascader");return b(),v(r,y(t.$attrs,{options:t.options,class:"es-time-select-cascader"}),null,16,["options"])}function I(t,a){a===void 0&&(a={});var e=a.insertAt;if(!(!t||typeof document=="undefined")){var n=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css",e==="top"&&n.firstChild?n.insertBefore(s,n.firstChild):n.appendChild(s),s.styleSheet?s.styleSheet.cssText=t:s.appendChild(document.createTextNode(t))}}var O=`.es-time-select-cascader[data-v-1e279a2d] {
display: inline-block;
}`;I(O),m.render=A,m.__scopeId="data-v-1e279a2d",m.__file="components/time-select-cascader/index.vue",m.install=t=>{t.component("es-time-select-cascader",m)};export{m as default};