You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2 lines
2.0 KiB

var v=(r,o,l)=>new Promise((p,m)=>{var k=c=>{try{h(l.next(c))}catch(g){m(g)}},i=c=>{try{h(l.throw(c))}catch(g){m(g)}},h=c=>c.done?p(c.value):Promise.resolve(c.value).then(k,i);h((l=l.apply(r,o)).next())});import{x as D}from"./xlsx-d1ed961a.js";import{d as S,r as N,u as R,aY as F,aT as U,o as $,g as B,s as E,v as I,j as C,aV as _}from"./index-f4658ae7.js";const w=S({name:"ImportExcel",props:{dateFormat:{type:String},timeZone:{type:Number,default:8}},emits:["success","error"],setup(r,{emit:o}){const l=N(null),p=N(!1);function m(e){if(!e||!e["!ref"])return[];const t=[],n=D.utils.decode_range(e["!ref"]),f=n.s.r;for(let a=n.s.c;a<=n.e.c;++a){const s=e[D.utils.encode_cell({c:a,r:f})];let d="UNKNOWN "+a;s&&s.t&&(d=D.utils.format_cell(s)),t.push(d)}return t}function k(e){const t=[],{dateFormat:n,timeZone:f}=r;for(const a of e.SheetNames){const s=e.Sheets[a],d=m(s);let y=D.utils.sheet_to_json(s,{raw:!0,dateNF:n});y=y.map(u=>{for(let x in u)u[x]instanceof Date&&(f===8&&u[x].setSeconds(u[x].getSeconds()+43),n&&(u[x]=F(u[x]).format(n)));return u}),t.push({header:d,results:y,meta:{sheetName:a}})}return t}function i(e){return p.value=!0,new Promise((t,n)=>{const f=new FileReader;f.onload=a=>v(this,null,function*(){try{const s=a.target&&a.target.result,d=D.read(s,{type:"array",cellDates:!0}),y=k(d);o("success",y),t("")}catch(s){n(s),o("error")}finally{p.value=!1}}),f.readAsArrayBuffer(e)})}function h(e){return v(this,null,function*(){const t=R(l);t&&(t.value=""),yield i(e)})}function c(e){const t=e&&e.target.files,n=t&&t[0];n&&h(n)}function g(){const e=R(l);e&&e.click()}return{handleUpload:g,handleInputClick:c,inputRef:l}}});function j(r,o,l,p,m,k){return $(),B("div",null,[E(C("input",{ref:"inputRef",type:"file",accept:".xlsx, .xls",onChange:o[0]||(o[0]=(...i)=>r.handleInputClick&&r.handleInputClick(...i))},null,544),[[I,!1]]),C("div",{onClick:o[1]||(o[1]=(...i)=>r.handleUpload&&r.handleUpload(...i))},[_(r.$slots,"default")])])}const b=U(w,[["render",j]]);export{b as default};