diff --git a/frontend/dist/assets/AdminLayout-C8hRi9x-.js b/frontend/dist/assets/AdminLayout-ltF-ui71.js similarity index 98% rename from frontend/dist/assets/AdminLayout-C8hRi9x-.js rename to frontend/dist/assets/AdminLayout-ltF-ui71.js index 9d3d23e..2a41f05 100644 --- a/frontend/dist/assets/AdminLayout-C8hRi9x-.js +++ b/frontend/dist/assets/AdminLayout-ltF-ui71.js @@ -1 +1 @@ -import{f as K,u as O,p as y,g as Q,E as X,q as d,w as a,k as Y,l as Z,h as f,r as o,i as p,s as ee,v as te,x as ae,d as c,a as n,c as _,y as b,t as l,z as I,F as k,A as N,B as w,b as S,C as T,D as se,o as s,_ as ne}from"./index-ChTrSGCb.js";const oe={class:"brand"},ce=["src"],ie={class:"brand-text"},le={class:"right"},re={class:"nick"},ue={class:"page-title-bar"},de={class:"page-title"},_e={class:"page-content"},fe={key:0,class:"footer"},pe={href:"https://beian.miit.gov.cn",target:"_blank"},me={key:0},ge=K({__name:"AdminLayout",setup(he){const m=Y(),x=Z(),i=O(),L=p(""),g=p(""),h=p(""),v=p(""),V=T(()=>m.path),$=T(()=>m.meta.title||""),R={perm:y(ae),system:y(te),log:y(ee)};function C(r){for(const e in R)if(r.startsWith(e))return R[e];return se}async function D(){let e=await f.get("/api/settings/public?setting_id=1");e.data&&(L.value=e.data.value)}async function E(){try{let e=await f.get("/api/settings/public?setting_id=2");e.data&&(h.value=e.data.value)}catch{}}async function M(){try{let e=await f.get("/api/settings/public?setting_id=3");e.data&&(v.value=e.data.value)}catch{}}async function P(){try{let e=await f.get("/api/settings/public?key=系统Logo");e.data&&e.data.value&&(g.value=e.data.value)}catch{}}Q(async()=>{try{await D(),await P(),await E(),await M(),i.user||await i.fetchProfile(),await i.fetchPermissions()}catch{X.error("获取用户信息失败,请重新登录"),await i.logout(),x.replace({name:"admin-login",query:{redirect:m.fullPath}})}});async function q(){await i.logout(),x.push({name:"admin-login"})}return(r,e)=>{const U=o("el-icon"),B=o("el-menu-item"),F=o("el-sub-menu"),z=o("el-menu"),W=o("el-aside"),j=o("el-button"),G=o("el-header"),H=o("router-view"),J=o("el-main"),A=o("el-container");return s(),d(A,{class:"admin-root"},{default:a(()=>[c(W,{width:"220px",class:"aside"},{default:a(()=>[n("div",oe,[g.value?(s(),_("img",{key:0,src:g.value,class:"brand-logo"},null,8,ce)):b("",!0),n("span",ie,l(L.value),1)]),c(z,{"default-active":V.value,router:"","background-color":"#0f172a","text-color":"#e2e8f0","active-text-color":"#38bdf8"},{default:a(()=>[(s(!0),_(k,null,I(w(i).menu,t=>(s(),_(k,{key:t.id},[t.children&&t.children.length>0?(s(),d(F,{key:0,index:t.route},{title:a(()=>[c(U,null,{default:a(()=>[(s(),d(N(C(t.code))))]),_:2},1024),n("span",null,l(t.name),1)]),default:a(()=>[(s(!0),_(k,null,I(t.children,u=>(s(),d(B,{key:u.id,index:u.route},{default:a(()=>[n("span",null,l(u.name),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(s(),d(B,{key:1,index:t.route},{default:a(()=>[c(U,null,{default:a(()=>[(s(),d(N(C(t.code))))]),_:2},1024),n("span",null,l(t.name),1)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active"])]),_:1}),c(A,null,{default:a(()=>[c(G,{class:"header"},{default:a(()=>{var t,u;return[n("div",le,[n("span",re,l(((t=w(i).user)==null?void 0:t.nickname)||((u=w(i).user)==null?void 0:u.username)),1),c(j,{type:"primary",link:"",onClick:q},{default:a(()=>[...e[0]||(e[0]=[S("退出",-1)])]),_:1})])]}),_:1}),c(J,{class:"main"},{default:a(()=>[n("div",ue,[n("h1",de,l($.value),1)]),n("div",_e,[c(H)]),h.value?(s(),_("div",fe,[S(l(h.value)+" ",1),n("a",pe,[v.value?(s(),_("span",me," | "+l(v.value),1)):b("",!0)])])):b("",!0)]),_:1})]),_:1})]),_:1})}}}),ye=ne(ge,[["__scopeId","data-v-627faa7f"]]);export{ye as default}; +import{f as K,u as O,p as y,g as Q,E as X,q as d,w as a,k as Y,l as Z,h as f,r as o,i as p,s as ee,v as te,x as ae,d as c,a as n,c as _,y as b,t as l,z as I,F as k,A as N,B as w,b as S,C as T,D as se,o as s,_ as ne}from"./index-rb7Oshfn.js";const oe={class:"brand"},ce=["src"],ie={class:"brand-text"},le={class:"right"},re={class:"nick"},ue={class:"page-title-bar"},de={class:"page-title"},_e={class:"page-content"},fe={key:0,class:"footer"},pe={href:"https://beian.miit.gov.cn",target:"_blank"},me={key:0},ge=K({__name:"AdminLayout",setup(he){const m=Y(),x=Z(),i=O(),L=p(""),g=p(""),h=p(""),v=p(""),V=T(()=>m.path),$=T(()=>m.meta.title||""),R={perm:y(ae),system:y(te),log:y(ee)};function C(r){for(const e in R)if(r.startsWith(e))return R[e];return se}async function D(){let e=await f.get("/api/settings/public?setting_id=1");e.data&&(L.value=e.data.value)}async function E(){try{let e=await f.get("/api/settings/public?setting_id=2");e.data&&(h.value=e.data.value)}catch{}}async function M(){try{let e=await f.get("/api/settings/public?setting_id=3");e.data&&(v.value=e.data.value)}catch{}}async function P(){try{let e=await f.get("/api/settings/public?key=系统Logo");e.data&&e.data.value&&(g.value=e.data.value)}catch{}}Q(async()=>{try{await D(),await P(),await E(),await M(),i.user||await i.fetchProfile(),await i.fetchPermissions()}catch{X.error("获取用户信息失败,请重新登录"),await i.logout(),x.replace({name:"admin-login",query:{redirect:m.fullPath}})}});async function q(){await i.logout(),x.push({name:"admin-login"})}return(r,e)=>{const U=o("el-icon"),B=o("el-menu-item"),F=o("el-sub-menu"),z=o("el-menu"),W=o("el-aside"),j=o("el-button"),G=o("el-header"),H=o("router-view"),J=o("el-main"),A=o("el-container");return s(),d(A,{class:"admin-root"},{default:a(()=>[c(W,{width:"220px",class:"aside"},{default:a(()=>[n("div",oe,[g.value?(s(),_("img",{key:0,src:g.value,class:"brand-logo"},null,8,ce)):b("",!0),n("span",ie,l(L.value),1)]),c(z,{"default-active":V.value,router:"","background-color":"#0f172a","text-color":"#e2e8f0","active-text-color":"#38bdf8"},{default:a(()=>[(s(!0),_(k,null,I(w(i).menu,t=>(s(),_(k,{key:t.id},[t.children&&t.children.length>0?(s(),d(F,{key:0,index:t.route},{title:a(()=>[c(U,null,{default:a(()=>[(s(),d(N(C(t.code))))]),_:2},1024),n("span",null,l(t.name),1)]),default:a(()=>[(s(!0),_(k,null,I(t.children,u=>(s(),d(B,{key:u.id,index:u.route},{default:a(()=>[n("span",null,l(u.name),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(s(),d(B,{key:1,index:t.route},{default:a(()=>[c(U,null,{default:a(()=>[(s(),d(N(C(t.code))))]),_:2},1024),n("span",null,l(t.name),1)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active"])]),_:1}),c(A,null,{default:a(()=>[c(G,{class:"header"},{default:a(()=>{var t,u;return[n("div",le,[n("span",re,l(((t=w(i).user)==null?void 0:t.nickname)||((u=w(i).user)==null?void 0:u.username)),1),c(j,{type:"primary",link:"",onClick:q},{default:a(()=>[...e[0]||(e[0]=[S("退出",-1)])]),_:1})])]}),_:1}),c(J,{class:"main"},{default:a(()=>[n("div",ue,[n("h1",de,l($.value),1)]),n("div",_e,[c(H)]),h.value?(s(),_("div",fe,[S(l(h.value)+" ",1),n("a",pe,[v.value?(s(),_("span",me," | "+l(v.value),1)):b("",!0)])])):b("",!0)]),_:1})]),_:1})]),_:1})}}}),ye=ne(ge,[["__scopeId","data-v-627faa7f"]]);export{ye as default}; diff --git a/frontend/dist/assets/LoginLogManage-CQqltd1Y.js b/frontend/dist/assets/LoginLogManage-COZ7cyEH.js similarity index 97% rename from frontend/dist/assets/LoginLogManage-CQqltd1Y.js rename to frontend/dist/assets/LoginLogManage-COZ7cyEH.js index e9e9dd2..67bb9ba 100644 --- a/frontend/dist/assets/LoginLogManage-CQqltd1Y.js +++ b/frontend/dist/assets/LoginLogManage-COZ7cyEH.js @@ -1 +1 @@ -import{G as y,O as M,n as w,f as V,H as Y,g as D,c as H,d as n,w as l,F as O,i as p,r as s,I as R,B as E,b as _,E as m,P as L,o as I}from"./index-ChTrSGCb.js";function P(f){return()=>({crudOptions:{pagination:{show:!1},search:{show:!0,options:{layout:"inline"},expand:!1},request:{pageRequest:async e=>{const{data:t}=await w.post("/login-logs/search",e);return t},transformQuery:({form:e})=>{const t={};return e!=null&&e.username&&(t.username=e.username),e!=null&&e.status&&(t.status=e.status),t},transformRes:({res:e})=>{const t=Array.isArray(e)?e:[];return{currentPage:1,pageSize:Math.max(t.length,1),total:t.length,records:t}}},rowHandle:{show:!1},toolbar:{buttons:{clean:{text:"清理旧日志",type:"warning",click:()=>f.onClean()}}},columns:{id:{title:"ID",key:"id",type:"number",column:{width:70},form:{show:!1}},username:{title:"用户名",key:"username",type:"text",search:{show:!0}},status:{title:"状态",key:"status",type:"dict-select",search:{show:!0},dict:M({data:[{value:"success",label:"成功"},{value:"failure",label:"失败"}],value:"value",label:"label"}),column:{width:80}},failure_reason:{title:"失败原因",key:"failure_reason",type:"text",column:{width:160}},ip_address:{title:"IP地址",key:"ip_address",type:"text",column:{width:150}},user_agent:{title:"User-Agent",key:"user_agent",type:"text",column:{width:300}},login_time:{title:"登录时间",key:"login_time",type:"text",column:{width:170},form:{show:!1},valueBuilder({value:e,row:t,key:u}){!t||e==null||(t[u]=y(e).format("YYYY-MM-DD HH:mm:ss"))}}}}})}const S=V({__name:"LoginLogManage",setup(f){const{crudBinding:e,crudRef:t,crudExpose:u}=Y({createCrudOptions:P({onClean:()=>{o.value=!0}})}),o=p(!1),r=p(),d=p(!1);async function h(){if(!r.value){m.warning("请选择要清理的日期");return}try{await L.confirm(`确定要清理 ${y(r.value).format("YYYY-MM-DD HH:mm:ss")} 之前的所有登录日志吗?此操作不可撤销。`,"确认清理",{confirmButtonText:"确认清理",cancelButtonText:"取消",type:"warning"})}catch{return}d.value=!0;try{const{data:c}=await w.delete("/login-logs/clean",{data:{before_date:r.value.toISOString()}});m.success(c.message||"清理成功"),o.value=!1,u.doRefresh()}catch{m.error("清理失败")}finally{d.value=!1}}return D(()=>{u.doRefresh()}),(c,a)=>{const v=s("fs-crud"),x=s("fs-page"),k=s("el-date-picker"),b=s("el-form-item"),C=s("el-form"),g=s("el-button"),B=s("el-dialog");return I(),H(O,null,[n(x,null,{default:l(()=>[n(v,R({ref_key:"crudRef",ref:t},E(e)),null,16)]),_:1}),n(B,{modelValue:o.value,"onUpdate:modelValue":a[2]||(a[2]=i=>o.value=i),title:"清理旧日志",width:"420px"},{footer:l(()=>[n(g,{onClick:a[1]||(a[1]=i=>o.value=!1)},{default:l(()=>[...a[3]||(a[3]=[_("取消",-1)])]),_:1}),n(g,{type:"warning",loading:d.value,onClick:h},{default:l(()=>[...a[4]||(a[4]=[_("确认清理",-1)])]),_:1},8,["loading"])]),default:l(()=>[n(C,null,{default:l(()=>[n(b,{label:"清理此日期之前的日志"},{default:l(()=>[n(k,{modelValue:r.value,"onUpdate:modelValue":a[0]||(a[0]=i=>r.value=i),type:"datetime",placeholder:"选择日期时间",style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue"])],64)}}});export{S as default}; +import{G as y,O as M,n as w,f as V,H as Y,g as D,c as H,d as n,w as l,F as O,i as p,r as s,I as R,B as E,b as _,E as m,P as L,o as I}from"./index-rb7Oshfn.js";function P(f){return()=>({crudOptions:{pagination:{show:!1},search:{show:!0,options:{layout:"inline"},expand:!1},request:{pageRequest:async e=>{const{data:t}=await w.post("/login-logs/search",e);return t},transformQuery:({form:e})=>{const t={};return e!=null&&e.username&&(t.username=e.username),e!=null&&e.status&&(t.status=e.status),t},transformRes:({res:e})=>{const t=Array.isArray(e)?e:[];return{currentPage:1,pageSize:Math.max(t.length,1),total:t.length,records:t}}},rowHandle:{show:!1},toolbar:{buttons:{clean:{text:"清理旧日志",type:"warning",click:()=>f.onClean()}}},columns:{id:{title:"ID",key:"id",type:"number",column:{width:70},form:{show:!1}},username:{title:"用户名",key:"username",type:"text",search:{show:!0}},status:{title:"状态",key:"status",type:"dict-select",search:{show:!0},dict:M({data:[{value:"success",label:"成功"},{value:"failure",label:"失败"}],value:"value",label:"label"}),column:{width:80}},failure_reason:{title:"失败原因",key:"failure_reason",type:"text",column:{width:160}},ip_address:{title:"IP地址",key:"ip_address",type:"text",column:{width:150}},user_agent:{title:"User-Agent",key:"user_agent",type:"text",column:{width:300}},login_time:{title:"登录时间",key:"login_time",type:"text",column:{width:170},form:{show:!1},valueBuilder({value:e,row:t,key:u}){!t||e==null||(t[u]=y(e).format("YYYY-MM-DD HH:mm:ss"))}}}}})}const S=V({__name:"LoginLogManage",setup(f){const{crudBinding:e,crudRef:t,crudExpose:u}=Y({createCrudOptions:P({onClean:()=>{o.value=!0}})}),o=p(!1),r=p(),d=p(!1);async function h(){if(!r.value){m.warning("请选择要清理的日期");return}try{await L.confirm(`确定要清理 ${y(r.value).format("YYYY-MM-DD HH:mm:ss")} 之前的所有登录日志吗?此操作不可撤销。`,"确认清理",{confirmButtonText:"确认清理",cancelButtonText:"取消",type:"warning"})}catch{return}d.value=!0;try{const{data:c}=await w.delete("/login-logs/clean",{data:{before_date:r.value.toISOString()}});m.success(c.message||"清理成功"),o.value=!1,u.doRefresh()}catch{m.error("清理失败")}finally{d.value=!1}}return D(()=>{u.doRefresh()}),(c,a)=>{const v=s("fs-crud"),x=s("fs-page"),k=s("el-date-picker"),b=s("el-form-item"),C=s("el-form"),g=s("el-button"),B=s("el-dialog");return I(),H(O,null,[n(x,null,{default:l(()=>[n(v,R({ref_key:"crudRef",ref:t},E(e)),null,16)]),_:1}),n(B,{modelValue:o.value,"onUpdate:modelValue":a[2]||(a[2]=i=>o.value=i),title:"清理旧日志",width:"420px"},{footer:l(()=>[n(g,{onClick:a[1]||(a[1]=i=>o.value=!1)},{default:l(()=>[...a[3]||(a[3]=[_("取消",-1)])]),_:1}),n(g,{type:"warning",loading:d.value,onClick:h},{default:l(()=>[...a[4]||(a[4]=[_("确认清理",-1)])]),_:1},8,["loading"])]),default:l(()=>[n(C,null,{default:l(()=>[n(b,{label:"清理此日期之前的日志"},{default:l(()=>[n(k,{modelValue:r.value,"onUpdate:modelValue":a[0]||(a[0]=i=>r.value=i),type:"datetime",placeholder:"选择日期时间",style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue"])],64)}}});export{S as default}; diff --git a/frontend/dist/assets/LoginView-CL6FqBfI.js b/frontend/dist/assets/LoginView-CdDWJNab.js similarity index 97% rename from frontend/dist/assets/LoginView-CL6FqBfI.js rename to frontend/dist/assets/LoginView-CdDWJNab.js index c595902..971c5bc 100644 --- a/frontend/dist/assets/LoginView-CL6FqBfI.js +++ b/frontend/dist/assets/LoginView-CdDWJNab.js @@ -1 +1 @@ -import{f as q,u as I,g as j,c as h,d as o,w as r,h as k,E as g,r as u,i,j as B,k as D,l as E,o as w,m as M,a as v,b as N,t as O,n as P,_ as $}from"./index-ChTrSGCb.js";const A={class:"login-wrap"},W={class:"card-title"},X={class:"captcha-row"},z=["src"],F={key:1,class:"captcha-placeholder"},G=q({__name:"LoginView",setup(H){const x=D(),R=E(),m=I(),b=i(),_=i(!1),l=i(""),p=i(""),y=i(""),V="/api",a=B({username:"",password:"",captcha_code:""}),U={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}],captcha_code:[{required:!0,message:"请输入验证码",trigger:"blur"}]};async function C(){let t=await k.get(`${V}/settings/public?setting_id=1`);t.data&&(y.value=t.data.value)}async function f(){l.value.startsWith("blob:")&&URL.revokeObjectURL(l.value),l.value="",p.value="";const t=await k.get(`${V}/users/captcha`,{responseType:"blob",headers:{}}),e=t.headers["x-captcha-id"]||t.headers["X-Captcha-ID"];if(!e){g.error("未获取到验证码 ID,请检查后端 CORS expose_headers");return}p.value=e,l.value=URL.createObjectURL(t.data),a.captcha_code=""}async function L(){var e,n;if(!p.value){g.warning("请先加载验证码");return}const t=b.value;if(t){try{await t.validate()}catch{return}_.value=!0;try{const{data:s}=await P.post("/users/login",{username:a.username,password:a.password,captcha_id:p.value,captcha_code:a.captcha_code});m.setToken(s.access_token),await m.fetchProfile(),await m.fetchPermissions();const c=x.query.redirect||"/admin";await R.replace(c)}catch(s){const c=(n=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:n.detail;g.error(typeof c=="string"?c:"登录失败"),await f()}finally{_.value=!1}}}return j(()=>{f(),C()}),(t,e)=>{const n=u("el-input"),s=u("el-form-item"),c=u("el-button"),S=u("el-form"),T=u("el-card");return w(),h("div",A,[o(T,{class:"card",shadow:"hover"},{header:r(()=>[v("span",W,O(y.value),1)]),default:r(()=>[o(S,{ref_key:"formRef",ref:b,model:a,rules:U,"label-width":"88px",onSubmit:e[3]||(e[3]=M(()=>{},["prevent"]))},{default:r(()=>[o(s,{label:"用户名",prop:"username"},{default:r(()=>[o(n,{modelValue:a.username,"onUpdate:modelValue":e[0]||(e[0]=d=>a.username=d),autocomplete:"username"},null,8,["modelValue"])]),_:1}),o(s,{label:"密码",prop:"password"},{default:r(()=>[o(n,{modelValue:a.password,"onUpdate:modelValue":e[1]||(e[1]=d=>a.password=d),type:"password","show-password":"",autocomplete:"current-password"},null,8,["modelValue"])]),_:1}),o(s,{label:"验证码",prop:"captcha_code"},{default:r(()=>[v("div",X,[o(n,{modelValue:a.captcha_code,"onUpdate:modelValue":e[2]||(e[2]=d=>a.captcha_code=d),maxlength:"8",placeholder:"请输入验证码"},null,8,["modelValue"]),v("div",{class:"captcha-img",onClick:f},[l.value?(w(),h("img",{key:0,src:l.value,alt:"captcha"},null,8,z)):(w(),h("span",F,"点击获取"))])])]),_:1}),o(s,null,{default:r(()=>[o(c,{type:"primary",loading:_.value,style:{width:"100%"},onClick:L},{default:r(()=>[...e[4]||(e[4]=[N(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1})])}}}),K=$(G,[["__scopeId","data-v-3d2542ad"]]);export{K as default}; +import{f as q,u as I,g as j,c as h,d as o,w as r,h as k,E as g,r as u,i,j as B,k as D,l as E,o as w,m as M,a as v,b as N,t as O,n as P,_ as $}from"./index-rb7Oshfn.js";const A={class:"login-wrap"},W={class:"card-title"},X={class:"captcha-row"},z=["src"],F={key:1,class:"captcha-placeholder"},G=q({__name:"LoginView",setup(H){const x=D(),R=E(),m=I(),b=i(),_=i(!1),l=i(""),p=i(""),y=i(""),V="/api",a=B({username:"",password:"",captcha_code:""}),U={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}],captcha_code:[{required:!0,message:"请输入验证码",trigger:"blur"}]};async function C(){let t=await k.get(`${V}/settings/public?setting_id=1`);t.data&&(y.value=t.data.value)}async function f(){l.value.startsWith("blob:")&&URL.revokeObjectURL(l.value),l.value="",p.value="";const t=await k.get(`${V}/users/captcha`,{responseType:"blob",headers:{}}),e=t.headers["x-captcha-id"]||t.headers["X-Captcha-ID"];if(!e){g.error("未获取到验证码 ID,请检查后端 CORS expose_headers");return}p.value=e,l.value=URL.createObjectURL(t.data),a.captcha_code=""}async function L(){var e,n;if(!p.value){g.warning("请先加载验证码");return}const t=b.value;if(t){try{await t.validate()}catch{return}_.value=!0;try{const{data:s}=await P.post("/users/login",{username:a.username,password:a.password,captcha_id:p.value,captcha_code:a.captcha_code});m.setToken(s.access_token),await m.fetchProfile(),await m.fetchPermissions();const c=x.query.redirect||"/admin";await R.replace(c)}catch(s){const c=(n=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:n.detail;g.error(typeof c=="string"?c:"登录失败"),await f()}finally{_.value=!1}}}return j(()=>{f(),C()}),(t,e)=>{const n=u("el-input"),s=u("el-form-item"),c=u("el-button"),S=u("el-form"),T=u("el-card");return w(),h("div",A,[o(T,{class:"card",shadow:"hover"},{header:r(()=>[v("span",W,O(y.value),1)]),default:r(()=>[o(S,{ref_key:"formRef",ref:b,model:a,rules:U,"label-width":"88px",onSubmit:e[3]||(e[3]=M(()=>{},["prevent"]))},{default:r(()=>[o(s,{label:"用户名",prop:"username"},{default:r(()=>[o(n,{modelValue:a.username,"onUpdate:modelValue":e[0]||(e[0]=d=>a.username=d),autocomplete:"username"},null,8,["modelValue"])]),_:1}),o(s,{label:"密码",prop:"password"},{default:r(()=>[o(n,{modelValue:a.password,"onUpdate:modelValue":e[1]||(e[1]=d=>a.password=d),type:"password","show-password":"",autocomplete:"current-password"},null,8,["modelValue"])]),_:1}),o(s,{label:"验证码",prop:"captcha_code"},{default:r(()=>[v("div",X,[o(n,{modelValue:a.captcha_code,"onUpdate:modelValue":e[2]||(e[2]=d=>a.captcha_code=d),maxlength:"8",placeholder:"请输入验证码"},null,8,["modelValue"]),v("div",{class:"captcha-img",onClick:f},[l.value?(w(),h("img",{key:0,src:l.value,alt:"captcha"},null,8,z)):(w(),h("span",F,"点击获取"))])])]),_:1}),o(s,null,{default:r(()=>[o(c,{type:"primary",loading:_.value,style:{width:"100%"},onClick:L},{default:r(()=>[...e[4]||(e[4]=[N(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1})])}}}),K=$(G,[["__scopeId","data-v-3d2542ad"]]);export{K as default}; diff --git a/frontend/dist/assets/MenuManage-J689-0Rz.js b/frontend/dist/assets/MenuManage-BEleckEE.js similarity index 58% rename from frontend/dist/assets/MenuManage-J689-0Rz.js rename to frontend/dist/assets/MenuManage-BEleckEE.js index afbc784..a1fb520 100644 --- a/frontend/dist/assets/MenuManage-J689-0Rz.js +++ b/frontend/dist/assets/MenuManage-BEleckEE.js @@ -1 +1 @@ -import{G as l,E as t,n as u,f as y,H as h,g as w,q as _,w as x,r as m,d as k,I as q,B as E,o as M}from"./index-ChTrSGCb.js";import{t as D}from"./list-query-4ZZvVtjn.js";const R=()=>({crudOptions:{pagination:{show:!1},search:{show:!0,options:{layout:"inline"},expand:!1},tree:{enable:!0,childrenKey:"children",parentKey:"parentid",hasChildField:"children"},request:{transformQuery:({form:e})=>D(e,["name","code"]),pageRequest:async e=>{const{data:s}=await u.get("/permissions/tree");return s},transformRes:({res:e})=>{const s=Array.isArray(e)?e:[];return{currentPage:1,pageSize:Math.max(s.length,1),total:s.length,records:s}},addRequest:async({form:e})=>{await u.post("/permissions/",e),t.success({message:"添加成功",duration:5e3})},editRequest:async({form:e,row:s})=>{s&&(await u.put(`/permissions/${s.id}`,e),t.success({message:"修改成功",duration:5e3}))},delRequest:async({row:e})=>{e&&(await u.delete(`/permissions/${e.id}`),t.success({message:"删除成功",duration:5e3}))},onSuccess:({action:e})=>{e==="add"?t.success({message:"添加成功",duration:5e3}):e==="edit"&&t.success({message:"修改成功",duration:5e3})},onError:e=>{var r;let s="操作失败";if((r=e.response)!=null&&r.data){const a=e.response.data;a.message?s=a.message:a.detail&&(s=typeof a.detail=="string"?a.detail:"操作失败")}t.error({message:s,duration:5e3})}},table:{remove:{showSuccessNotification:!1}},rowHandle:{buttons:{edit:{text:"编辑"},remove:{text:"删除"}}},columns:{id:{title:"ID",key:"id",type:"number",column:{width:70},form:{show:!1}},name:{title:"名称",key:"name",type:"text",search:{show:!0},form:{rules:[{required:!0,message:"必填"}]}},code:{title:"编码",key:"code",type:"text",search:{show:!0},form:{rules:[{required:!0,message:"必填"}]}},parentid:{title:"父级ID",key:"parentid",type:"number",form:{value:0,rules:[{required:!0,message:"必填"}]}},description:{title:"描述",key:"description",type:"textarea",column:{show:!1}},route:{title:"路由",key:"route",type:"text",column:{width:200},form:{placeholder:"如:/admin/users"}},createtime:{title:"创建时间",key:"createtime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:e,row:s,key:r}){!s||e==null||(s[r]=l(e).format("YYYY-MM-DD HH:mm:ss"))}},updatetime:{title:"更新时间",key:"updatetime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:e,row:s,key:r}){!s||e==null||(s[r]=l(e).format("YYYY-MM-DD HH:mm:ss"))}}}}}),B=y({__name:"MenuManage",setup(e){const{crudBinding:s,crudRef:r,crudExpose:a}=h({createCrudOptions:R}),p=()=>{t.success({message:"添加成功",duration:5e3})},f=()=>{t.success({message:"修改成功",duration:5e3})},g=()=>{t.success({message:"删除成功",duration:5e3})},d=c=>{var i;let n="操作失败";if((i=c.response)!=null&&i.data){const o=c.response.data;o.message?n=o.message:o.detail&&(n=typeof o.detail=="string"?o.detail:"操作失败")}t.error({message:n,duration:5e3})};return w(()=>{a.doRefresh()}),(c,n)=>{const i=m("fs-crud"),o=m("fs-page");return M(),_(o,null,{default:x(()=>[k(i,q({ref_key:"crudRef",ref:r},E(s),{onAddSuccess:p,onEditSuccess:f,onDelSuccess:g,onAddError:d,onEditError:d,onDelError:d}),null,16)]),_:1})}}});export{B as default}; +import{G as l,E as t,n as u,f as y,H as h,g as w,q as _,w as x,r as m,d as k,I as q,B as E,o as M}from"./index-rb7Oshfn.js";import{t as D}from"./list-query-4ZZvVtjn.js";const R=()=>({crudOptions:{pagination:{show:!1},search:{show:!0,options:{layout:"inline"},expand:!1},tree:{enable:!0,childrenKey:"children",parentKey:"parentid",hasChildField:"children"},request:{transformQuery:({form:e})=>D(e,["name","code"]),pageRequest:async e=>{const{data:s}=await u.get("/permissions/tree");return s},transformRes:({res:e})=>{const s=Array.isArray(e)?e:[];return{currentPage:1,pageSize:Math.max(s.length,1),total:s.length,records:s}},addRequest:async({form:e})=>{await u.post("/permissions/",e),t.success({message:"添加成功",duration:5e3})},editRequest:async({form:e,row:s})=>{s&&(await u.put(`/permissions/${s.id}`,e),t.success({message:"修改成功",duration:5e3}))},delRequest:async({row:e})=>{e&&(await u.delete(`/permissions/${e.id}`),t.success({message:"删除成功",duration:5e3}))},onSuccess:({action:e})=>{e==="add"?t.success({message:"添加成功",duration:5e3}):e==="edit"&&t.success({message:"修改成功",duration:5e3})},onError:e=>{var r;let s="操作失败";if((r=e.response)!=null&&r.data){const a=e.response.data;a.message?s=a.message:a.detail&&(s=typeof a.detail=="string"?a.detail:"操作失败")}t.error({message:s,duration:5e3})}},table:{remove:{showSuccessNotification:!1}},rowHandle:{buttons:{edit:{text:"编辑"},remove:{text:"删除"}}},columns:{id:{title:"ID",key:"id",type:"number",column:{width:70},form:{show:!1}},name:{title:"名称",key:"name",type:"text",search:{show:!0},form:{rules:[{required:!0,message:"必填"}]}},code:{title:"编码",key:"code",type:"text",search:{show:!0},form:{rules:[{required:!0,message:"必填"}]}},parentid:{title:"父级ID",key:"parentid",type:"number",form:{value:0,rules:[{required:!0,message:"必填"}]}},description:{title:"描述",key:"description",type:"textarea",column:{show:!1}},route:{title:"路由",key:"route",type:"text",column:{width:200},form:{placeholder:"如:/admin/users"}},sort:{title:"排序",key:"sort",type:"number",column:{width:80,align:"center"},form:{value:0,rules:[{required:!0,message:"必填"}],helper:"数字越小,排序越靠前"}},createtime:{title:"创建时间",key:"createtime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:e,row:s,key:r}){!s||e==null||(s[r]=l(e).format("YYYY-MM-DD HH:mm:ss"))}},updatetime:{title:"更新时间",key:"updatetime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:e,row:s,key:r}){!s||e==null||(s[r]=l(e).format("YYYY-MM-DD HH:mm:ss"))}}}}}),b=y({__name:"MenuManage",setup(e){const{crudBinding:s,crudRef:r,crudExpose:a}=h({createCrudOptions:R}),p=()=>{t.success({message:"添加成功",duration:5e3})},f=()=>{t.success({message:"修改成功",duration:5e3})},g=()=>{t.success({message:"删除成功",duration:5e3})},d=c=>{var i;let n="操作失败";if((i=c.response)!=null&&i.data){const o=c.response.data;o.message?n=o.message:o.detail&&(n=typeof o.detail=="string"?o.detail:"操作失败")}t.error({message:n,duration:5e3})};return w(()=>{a.doRefresh()}),(c,n)=>{const i=m("fs-crud"),o=m("fs-page");return M(),_(o,null,{default:x(()=>[k(i,q({ref_key:"crudRef",ref:r},E(s),{onAddSuccess:p,onEditSuccess:f,onDelSuccess:g,onAddError:d,onEditError:d,onDelError:d}),null,16)]),_:1})}}});export{b as default}; diff --git a/frontend/dist/assets/OperationLogManage-CrJsIKz-.js b/frontend/dist/assets/OperationLogManage-BIONNQB8.js similarity index 98% rename from frontend/dist/assets/OperationLogManage-CrJsIKz-.js rename to frontend/dist/assets/OperationLogManage-BIONNQB8.js index 79bc404..18fd5c2 100644 --- a/frontend/dist/assets/OperationLogManage-CrJsIKz-.js +++ b/frontend/dist/assets/OperationLogManage-BIONNQB8.js @@ -1 +1 @@ -import{G as w,O as f,n as h,f as M,H as V,g as O,c as Y,d as l,w as n,F as H,i as p,r as o,I,B as R,b as g,E as m,P as E,o as P}from"./index-ChTrSGCb.js";function A(_){return()=>({crudOptions:{pagination:{show:!1},search:{show:!0,options:{layout:"inline"},expand:!1},request:{pageRequest:async e=>{const{data:t}=await h.post("/operation-logs/search",e);return t},transformQuery:({form:e})=>{const t={};return e!=null&&e.username&&(t.username=e.username),e!=null&&e.action_type&&(t.action_type=e.action_type),e!=null&&e.target_type&&(t.target_type=e.target_type),t},transformRes:({res:e})=>{const t=Array.isArray(e)?e:[];return{currentPage:1,pageSize:Math.max(t.length,1),total:t.length,records:t}}},rowHandle:{show:!1},toolbar:{buttons:{clean:{text:"清理旧日志",type:"warning",click:()=>_.onClean()}}},columns:{id:{title:"ID",key:"id",type:"number",column:{width:70},form:{show:!1}},user_id:{title:"用户ID",key:"user_id",type:"number",column:{width:80},form:{show:!1}},username:{title:"操作人",key:"username",type:"text",search:{show:!0}},action_type:{title:"操作类型",key:"action_type",type:"dict-select",search:{show:!0},dict:f({data:[{value:"create",label:"创建"},{value:"update",label:"更新"},{value:"delete",label:"删除"}],value:"value",label:"label"}),column:{width:90}},target_type:{title:"目标类型",key:"target_type",type:"dict-select",search:{show:!0},dict:f({data:[{value:"user",label:"用户"},{value:"role",label:"角色"},{value:"permission",label:"菜单"},{value:"setting",label:"系统设置"}],value:"value",label:"label"}),column:{width:100}},target_name:{title:"目标名称",key:"target_name",type:"text",column:{width:140}},target_id:{title:"目标ID",key:"target_id",type:"number",column:{width:80},form:{show:!1}},detail:{title:"变更详情",key:"detail",type:"text",column:{width:200},form:{show:!1}},ip_address:{title:"IP地址",key:"ip_address",type:"text",column:{width:150}},user_agent:{title:"User-Agent",key:"user_agent",type:"text",column:{width:300}},createtime:{title:"操作时间",key:"createtime",type:"text",column:{width:170},form:{show:!1},valueBuilder({value:e,row:t,key:u}){!t||e==null||(t[u]=w(e).format("YYYY-MM-DD HH:mm:ss"))}}}}})}const S=M({__name:"OperationLogManage",setup(_){const{crudBinding:e,crudRef:t,crudExpose:u}=V({createCrudOptions:A({onClean:()=>{s.value=!0}})}),s=p(!1),r=p(),d=p(!1);async function v(){if(!r.value){m.warning("请选择要清理的日期");return}try{await E.confirm(`确定要清理 ${w(r.value).format("YYYY-MM-DD HH:mm:ss")} 之前的所有操作日志吗?此操作不可撤销。`,"确认清理",{confirmButtonText:"确认清理",cancelButtonText:"取消",type:"warning"})}catch{return}d.value=!0;try{const{data:c}=await h.delete("/operation-logs/clean",{data:{before_date:r.value.toISOString()}});m.success(c.message||"清理成功"),s.value=!1,u.doRefresh()}catch{m.error("清理失败")}finally{d.value=!1}}return O(()=>{u.doRefresh()}),(c,a)=>{const b=o("fs-crud"),k=o("fs-page"),x=o("el-date-picker"),C=o("el-form-item"),B=o("el-form"),y=o("el-button"),D=o("el-dialog");return P(),Y(H,null,[l(k,null,{default:n(()=>[l(b,I({ref_key:"crudRef",ref:t},R(e)),null,16)]),_:1}),l(D,{modelValue:s.value,"onUpdate:modelValue":a[2]||(a[2]=i=>s.value=i),title:"清理旧日志",width:"420px"},{footer:n(()=>[l(y,{onClick:a[1]||(a[1]=i=>s.value=!1)},{default:n(()=>[...a[3]||(a[3]=[g("取消",-1)])]),_:1}),l(y,{type:"warning",loading:d.value,onClick:v},{default:n(()=>[...a[4]||(a[4]=[g("确认清理",-1)])]),_:1},8,["loading"])]),default:n(()=>[l(B,null,{default:n(()=>[l(C,{label:"清理此日期之前的日志"},{default:n(()=>[l(x,{modelValue:r.value,"onUpdate:modelValue":a[0]||(a[0]=i=>r.value=i),type:"datetime",placeholder:"选择日期时间",style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue"])],64)}}});export{S as default}; +import{G as w,O as f,n as h,f as M,H as V,g as O,c as Y,d as l,w as n,F as H,i as p,r as o,I,B as R,b as g,E as m,P as E,o as P}from"./index-rb7Oshfn.js";function A(_){return()=>({crudOptions:{pagination:{show:!1},search:{show:!0,options:{layout:"inline"},expand:!1},request:{pageRequest:async e=>{const{data:t}=await h.post("/operation-logs/search",e);return t},transformQuery:({form:e})=>{const t={};return e!=null&&e.username&&(t.username=e.username),e!=null&&e.action_type&&(t.action_type=e.action_type),e!=null&&e.target_type&&(t.target_type=e.target_type),t},transformRes:({res:e})=>{const t=Array.isArray(e)?e:[];return{currentPage:1,pageSize:Math.max(t.length,1),total:t.length,records:t}}},rowHandle:{show:!1},toolbar:{buttons:{clean:{text:"清理旧日志",type:"warning",click:()=>_.onClean()}}},columns:{id:{title:"ID",key:"id",type:"number",column:{width:70},form:{show:!1}},user_id:{title:"用户ID",key:"user_id",type:"number",column:{width:80},form:{show:!1}},username:{title:"操作人",key:"username",type:"text",search:{show:!0}},action_type:{title:"操作类型",key:"action_type",type:"dict-select",search:{show:!0},dict:f({data:[{value:"create",label:"创建"},{value:"update",label:"更新"},{value:"delete",label:"删除"}],value:"value",label:"label"}),column:{width:90}},target_type:{title:"目标类型",key:"target_type",type:"dict-select",search:{show:!0},dict:f({data:[{value:"user",label:"用户"},{value:"role",label:"角色"},{value:"permission",label:"菜单"},{value:"setting",label:"系统设置"}],value:"value",label:"label"}),column:{width:100}},target_name:{title:"目标名称",key:"target_name",type:"text",column:{width:140}},target_id:{title:"目标ID",key:"target_id",type:"number",column:{width:80},form:{show:!1}},detail:{title:"变更详情",key:"detail",type:"text",column:{width:200},form:{show:!1}},ip_address:{title:"IP地址",key:"ip_address",type:"text",column:{width:150}},user_agent:{title:"User-Agent",key:"user_agent",type:"text",column:{width:300}},createtime:{title:"操作时间",key:"createtime",type:"text",column:{width:170},form:{show:!1},valueBuilder({value:e,row:t,key:u}){!t||e==null||(t[u]=w(e).format("YYYY-MM-DD HH:mm:ss"))}}}}})}const S=M({__name:"OperationLogManage",setup(_){const{crudBinding:e,crudRef:t,crudExpose:u}=V({createCrudOptions:A({onClean:()=>{s.value=!0}})}),s=p(!1),r=p(),d=p(!1);async function v(){if(!r.value){m.warning("请选择要清理的日期");return}try{await E.confirm(`确定要清理 ${w(r.value).format("YYYY-MM-DD HH:mm:ss")} 之前的所有操作日志吗?此操作不可撤销。`,"确认清理",{confirmButtonText:"确认清理",cancelButtonText:"取消",type:"warning"})}catch{return}d.value=!0;try{const{data:c}=await h.delete("/operation-logs/clean",{data:{before_date:r.value.toISOString()}});m.success(c.message||"清理成功"),s.value=!1,u.doRefresh()}catch{m.error("清理失败")}finally{d.value=!1}}return O(()=>{u.doRefresh()}),(c,a)=>{const b=o("fs-crud"),k=o("fs-page"),x=o("el-date-picker"),C=o("el-form-item"),B=o("el-form"),y=o("el-button"),D=o("el-dialog");return P(),Y(H,null,[l(k,null,{default:n(()=>[l(b,I({ref_key:"crudRef",ref:t},R(e)),null,16)]),_:1}),l(D,{modelValue:s.value,"onUpdate:modelValue":a[2]||(a[2]=i=>s.value=i),title:"清理旧日志",width:"420px"},{footer:n(()=>[l(y,{onClick:a[1]||(a[1]=i=>s.value=!1)},{default:n(()=>[...a[3]||(a[3]=[g("取消",-1)])]),_:1}),l(y,{type:"warning",loading:d.value,onClick:v},{default:n(()=>[...a[4]||(a[4]=[g("确认清理",-1)])]),_:1},8,["loading"])]),default:n(()=>[l(B,null,{default:n(()=>[l(C,{label:"清理此日期之前的日志"},{default:n(()=>[l(x,{modelValue:r.value,"onUpdate:modelValue":a[0]||(a[0]=i=>r.value=i),type:"datetime",placeholder:"选择日期时间",style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue"])],64)}}});export{S as default}; diff --git a/frontend/dist/assets/PublicHome-BE6848HM.js b/frontend/dist/assets/PublicHome-4L60krmd.js similarity index 89% rename from frontend/dist/assets/PublicHome-BE6848HM.js rename to frontend/dist/assets/PublicHome-4L60krmd.js index 486c591..f2a61c0 100644 --- a/frontend/dist/assets/PublicHome-BE6848HM.js +++ b/frontend/dist/assets/PublicHome-4L60krmd.js @@ -1 +1 @@ -import{_ as n,c as r,a as s,b as t,d as l,w as d,r as i,o as a}from"./index-ChTrSGCb.js";const p={},u={class:"public-wrap"},m={class:"hint"};function f(_,o){const e=i("router-link");return a(),r("div",u,[o[5]||(o[5]=s("h1",null,"BookSystem",-1)),s("p",m,[o[1]||(o[1]=t(" 此处预留为",-1)),o[2]||(o[2]=s("strong",null,"无需登录",-1)),o[3]||(o[3]=t("的站点首页(图书浏览、门户等)。管理功能请前往 ",-1)),l(e,{to:"/admin/login"},{default:d(()=>[...o[0]||(o[0]=[t("管理后台",-1)])]),_:1}),o[4]||(o[4]=t("。 ",-1))])])}const x=n(p,[["render",f],["__scopeId","data-v-f5876933"]]);export{x as default}; +import{_ as n,c as r,a as s,b as t,d as l,w as d,r as i,o as a}from"./index-rb7Oshfn.js";const p={},u={class:"public-wrap"},m={class:"hint"};function f(_,o){const e=i("router-link");return a(),r("div",u,[o[5]||(o[5]=s("h1",null,"BookSystem",-1)),s("p",m,[o[1]||(o[1]=t(" 此处预留为",-1)),o[2]||(o[2]=s("strong",null,"无需登录",-1)),o[3]||(o[3]=t("的站点首页(图书浏览、门户等)。管理功能请前往 ",-1)),l(e,{to:"/admin/login"},{default:d(()=>[...o[0]||(o[0]=[t("管理后台",-1)])]),_:1}),o[4]||(o[4]=t("。 ",-1))])])}const x=n(p,[["render",f],["__scopeId","data-v-f5876933"]]);export{x as default}; diff --git a/frontend/dist/assets/RoleManage-C7cZ0SSm.js b/frontend/dist/assets/RoleManage-7Ni_fgq0.js similarity index 97% rename from frontend/dist/assets/RoleManage-C7cZ0SSm.js rename to frontend/dist/assets/RoleManage-7Ni_fgq0.js index bfd1884..f4f819a 100644 --- a/frontend/dist/assets/RoleManage-C7cZ0SSm.js +++ b/frontend/dist/assets/RoleManage-7Ni_fgq0.js @@ -1 +1 @@ -import{G as A,E as d,n as f,f as K,H as L,g as U,q as w,w as y,r as v,i as p,d as k,I as F,B as j,c as V,b as x,a as B,t as C,y as Y,F as G,z as J,o as c,J as Q,K as W,_ as X}from"./index-ChTrSGCb.js";import{t as Z}from"./list-query-4ZZvVtjn.js";function ee(b){return()=>({crudOptions:{pagination:{show:!1},search:{show:!0,options:{layout:"inline"},expand:!1},request:{transformQuery:({form:e})=>Z(e,["name"]),pageRequest:async e=>{const{data:t}=await f.post("/roles/search",e);return t},transformRes:({res:e})=>{const t=Array.isArray(e)?e:[];return{currentPage:1,pageSize:Math.max(t.length,1),total:t.length,records:t}},addRequest:async({form:e})=>{await f.post("/roles/",e),d.success({message:"添加成功",duration:5e3})},editRequest:async({form:e,row:t})=>{t&&(await f.put(`/roles/${t.id}`,e),d.success({message:"修改成功",duration:5e3}))},delRequest:async({row:e})=>{e&&(await f.delete(`/roles/${e.id}`),d.success({message:"删除成功",duration:5e3}))},onSuccess:({action:e})=>{e==="add"?d.success({message:"添加成功",duration:5e3}):e==="edit"&&d.success({message:"修改成功",duration:5e3})},onError:e=>{var r;let t="操作失败";if((r=e.response)!=null&&r.data){const a=e.response.data;a.message?t=a.message:a.detail&&(t=typeof a.detail=="string"?a.detail:"操作失败")}d.error({message:t,duration:5e3})}},table:{remove:{showSuccessNotification:!1}},rowHandle:{width:300,buttons:{view:{show:!1},viewPerm:{text:"查看",order:1,click:({row:e})=>{e&&b.onView(e)}},assignPerm:{text:"分配权限",order:2,click:({row:e})=>{e&&b.onAssign(e)}},edit:{text:"编辑",order:10},remove:{text:"删除",order:20}}},columns:{id:{title:"ID",key:"id",type:"number",column:{width:70},form:{show:!1}},name:{title:"角色名称",key:"name",type:"text",search:{show:!0},form:{rules:[{required:!0,message:"必填"}]}},creator:{title:"创建人",key:"creator",type:"text"},createtime:{title:"创建时间",key:"createtime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:e,row:t,key:r}){!t||e==null||(t[r]=A(e).format("YYYY-MM-DD HH:mm:ss"))}},updatetime:{title:"更新时间",key:"updatetime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:e,row:t,key:r}){!t||e==null||(t[r]=A(e).format("YYYY-MM-DD HH:mm:ss"))}}}}})}const se={key:0,class:"dlg-role"},te={key:1,class:"perm-tags"},oe={key:0,class:"dlg-role"},ae=K({__name:"RoleManage",setup(b){const e=p(!1),t=p(!1),r=p(null),a=p([]),_=p(null),D=p([]),R=p(),P=p(!1),E={label:"label",children:"children"};function M(o){return o.map(s=>{var l;return{id:s.id,label:`${s.name}(${s.code})`,children:(l=s.children)!=null&&l.length?M(s.children):void 0}})}async function T(){const{data:o}=await f.get("/permissions/tree");D.value=M(o??[])}async function H(o){r.value=o,e.value=!0;try{const{data:s}=await f.get(`/permissions/role/${o.id}`);a.value=s.permissions??[]}catch{d.error("加载权限失败"),a.value=[]}}function S(o){_.value=o,t.value=!0}async function N(){var s,l,g,n,m;const o=_.value;if(o)try{console.log(`Loading permissions for role id: ${o.id}`);const i=await f.get(`/permissions/role/${o.id}`);console.log("Response data:",i.data);const h=(i.data.permissions??[]).map(q=>q.id);console.log("Permission IDs:",h),await Q(),(s=R.value)==null||s.setCheckedKeys(h)}catch(i){console.error("Error loading role permissions:",i),W(i)&&(console.error("Response status:",(l=i.response)==null?void 0:l.status),console.error("Response data:",(g=i.response)==null?void 0:g.data),console.error("Request URL:",(n=i.request)==null?void 0:n.url)),d.error("加载角色权限失败"),(m=R.value)==null||m.setCheckedKeys([])}}async function O(){var s,l,g;const o=_.value;if(o){P.value=!0;try{const n=((s=R.value)==null?void 0:s.getCheckedKeys(!1))??[];await f.post("/permissions/assign",{role_id:o.id,permission_ids:n}),d.success("保存成功"),t.value=!1,$.doRefresh()}catch(n){const m=(g=(l=n==null?void 0:n.response)==null?void 0:l.data)==null?void 0:g.detail;d.error(typeof m=="string"?m:"保存失败")}finally{P.value=!1}}}const{crudBinding:z,crudRef:I,crudExpose:$}=L({createCrudOptions:ee({onView:H,onAssign:S})});return U(async()=>{await T(),$.doRefresh()}),(o,s)=>{const l=v("fs-crud"),g=v("el-tag"),n=v("el-empty"),m=v("el-dialog"),i=v("el-tree"),h=v("el-button"),q=v("fs-page");return c(),w(q,null,{default:y(()=>[k(l,F({ref_key:"crudRef",ref:I},j(z)),null,16),k(m,{modelValue:e.value,"onUpdate:modelValue":s[0]||(s[0]=u=>e.value=u),title:"查看角色权限",width:"560px","destroy-on-close":"",onClosed:s[1]||(s[1]=u=>a.value=[])},{default:y(()=>[r.value?(c(),V("p",se,[s[4]||(s[4]=x(" 角色:",-1)),B("strong",null,C(r.value.name),1)])):Y("",!0),a.value.length?(c(),V("div",te,[(c(!0),V(G,null,J(a.value,u=>(c(),w(g,{key:u.id,class:"perm-tag",type:"info"},{default:y(()=>[x(C(u.name)+"("+C(u.code)+") ",1)]),_:2},1024))),128))])):(c(),w(n,{key:2,description:"暂未分配权限","image-size":72}))]),_:1},8,["modelValue"]),k(m,{modelValue:t.value,"onUpdate:modelValue":s[3]||(s[3]=u=>t.value=u),title:"分配权限",width:"640px","destroy-on-close":"",onOpen:N},{footer:y(()=>[k(h,{onClick:s[2]||(s[2]=u=>t.value=!1)},{default:y(()=>[...s[6]||(s[6]=[x("取消",-1)])]),_:1}),k(h,{type:"primary",loading:P.value,onClick:O},{default:y(()=>[...s[7]||(s[7]=[x(" 保存 ",-1)])]),_:1},8,["loading"])]),default:y(()=>[_.value?(c(),V("p",oe,[s[5]||(s[5]=x(" 角色:",-1)),B("strong",null,C(_.value.name),1)])):Y("",!0),D.value.length?(c(),w(i,{key:1,ref_key:"permTreeRef",ref:R,class:"perm-tree",data:D.value,"show-checkbox":"","node-key":"id",props:E,"default-expand-all":"","check-strictly":!1},null,8,["data"])):(c(),w(n,{key:2,description:"暂无权限数据","image-size":64}))]),_:1},8,["modelValue"])]),_:1})}}}),le=X(ae,[["__scopeId","data-v-0e80fdd4"]]);export{le as default}; +import{G as A,E as d,n as f,f as K,H as L,g as U,q as w,w as y,r as v,i as p,d as k,I as F,B as j,c as V,b as x,a as B,t as C,y as Y,F as G,z as J,o as c,J as Q,K as W,_ as X}from"./index-rb7Oshfn.js";import{t as Z}from"./list-query-4ZZvVtjn.js";function ee(b){return()=>({crudOptions:{pagination:{show:!1},search:{show:!0,options:{layout:"inline"},expand:!1},request:{transformQuery:({form:e})=>Z(e,["name"]),pageRequest:async e=>{const{data:t}=await f.post("/roles/search",e);return t},transformRes:({res:e})=>{const t=Array.isArray(e)?e:[];return{currentPage:1,pageSize:Math.max(t.length,1),total:t.length,records:t}},addRequest:async({form:e})=>{await f.post("/roles/",e),d.success({message:"添加成功",duration:5e3})},editRequest:async({form:e,row:t})=>{t&&(await f.put(`/roles/${t.id}`,e),d.success({message:"修改成功",duration:5e3}))},delRequest:async({row:e})=>{e&&(await f.delete(`/roles/${e.id}`),d.success({message:"删除成功",duration:5e3}))},onSuccess:({action:e})=>{e==="add"?d.success({message:"添加成功",duration:5e3}):e==="edit"&&d.success({message:"修改成功",duration:5e3})},onError:e=>{var r;let t="操作失败";if((r=e.response)!=null&&r.data){const a=e.response.data;a.message?t=a.message:a.detail&&(t=typeof a.detail=="string"?a.detail:"操作失败")}d.error({message:t,duration:5e3})}},table:{remove:{showSuccessNotification:!1}},rowHandle:{width:300,buttons:{view:{show:!1},viewPerm:{text:"查看",order:1,click:({row:e})=>{e&&b.onView(e)}},assignPerm:{text:"分配权限",order:2,click:({row:e})=>{e&&b.onAssign(e)}},edit:{text:"编辑",order:10},remove:{text:"删除",order:20}}},columns:{id:{title:"ID",key:"id",type:"number",column:{width:70},form:{show:!1}},name:{title:"角色名称",key:"name",type:"text",search:{show:!0},form:{rules:[{required:!0,message:"必填"}]}},creator:{title:"创建人",key:"creator",type:"text"},createtime:{title:"创建时间",key:"createtime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:e,row:t,key:r}){!t||e==null||(t[r]=A(e).format("YYYY-MM-DD HH:mm:ss"))}},updatetime:{title:"更新时间",key:"updatetime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:e,row:t,key:r}){!t||e==null||(t[r]=A(e).format("YYYY-MM-DD HH:mm:ss"))}}}}})}const se={key:0,class:"dlg-role"},te={key:1,class:"perm-tags"},oe={key:0,class:"dlg-role"},ae=K({__name:"RoleManage",setup(b){const e=p(!1),t=p(!1),r=p(null),a=p([]),_=p(null),D=p([]),R=p(),P=p(!1),E={label:"label",children:"children"};function M(o){return o.map(s=>{var l;return{id:s.id,label:`${s.name}(${s.code})`,children:(l=s.children)!=null&&l.length?M(s.children):void 0}})}async function T(){const{data:o}=await f.get("/permissions/tree");D.value=M(o??[])}async function H(o){r.value=o,e.value=!0;try{const{data:s}=await f.get(`/permissions/role/${o.id}`);a.value=s.permissions??[]}catch{d.error("加载权限失败"),a.value=[]}}function S(o){_.value=o,t.value=!0}async function N(){var s,l,g,n,m;const o=_.value;if(o)try{console.log(`Loading permissions for role id: ${o.id}`);const i=await f.get(`/permissions/role/${o.id}`);console.log("Response data:",i.data);const h=(i.data.permissions??[]).map(q=>q.id);console.log("Permission IDs:",h),await Q(),(s=R.value)==null||s.setCheckedKeys(h)}catch(i){console.error("Error loading role permissions:",i),W(i)&&(console.error("Response status:",(l=i.response)==null?void 0:l.status),console.error("Response data:",(g=i.response)==null?void 0:g.data),console.error("Request URL:",(n=i.request)==null?void 0:n.url)),d.error("加载角色权限失败"),(m=R.value)==null||m.setCheckedKeys([])}}async function O(){var s,l,g;const o=_.value;if(o){P.value=!0;try{const n=((s=R.value)==null?void 0:s.getCheckedKeys(!1))??[];await f.post("/permissions/assign",{role_id:o.id,permission_ids:n}),d.success("保存成功"),t.value=!1,$.doRefresh()}catch(n){const m=(g=(l=n==null?void 0:n.response)==null?void 0:l.data)==null?void 0:g.detail;d.error(typeof m=="string"?m:"保存失败")}finally{P.value=!1}}}const{crudBinding:z,crudRef:I,crudExpose:$}=L({createCrudOptions:ee({onView:H,onAssign:S})});return U(async()=>{await T(),$.doRefresh()}),(o,s)=>{const l=v("fs-crud"),g=v("el-tag"),n=v("el-empty"),m=v("el-dialog"),i=v("el-tree"),h=v("el-button"),q=v("fs-page");return c(),w(q,null,{default:y(()=>[k(l,F({ref_key:"crudRef",ref:I},j(z)),null,16),k(m,{modelValue:e.value,"onUpdate:modelValue":s[0]||(s[0]=u=>e.value=u),title:"查看角色权限",width:"560px","destroy-on-close":"",onClosed:s[1]||(s[1]=u=>a.value=[])},{default:y(()=>[r.value?(c(),V("p",se,[s[4]||(s[4]=x(" 角色:",-1)),B("strong",null,C(r.value.name),1)])):Y("",!0),a.value.length?(c(),V("div",te,[(c(!0),V(G,null,J(a.value,u=>(c(),w(g,{key:u.id,class:"perm-tag",type:"info"},{default:y(()=>[x(C(u.name)+"("+C(u.code)+") ",1)]),_:2},1024))),128))])):(c(),w(n,{key:2,description:"暂未分配权限","image-size":72}))]),_:1},8,["modelValue"]),k(m,{modelValue:t.value,"onUpdate:modelValue":s[3]||(s[3]=u=>t.value=u),title:"分配权限",width:"640px","destroy-on-close":"",onOpen:N},{footer:y(()=>[k(h,{onClick:s[2]||(s[2]=u=>t.value=!1)},{default:y(()=>[...s[6]||(s[6]=[x("取消",-1)])]),_:1}),k(h,{type:"primary",loading:P.value,onClick:O},{default:y(()=>[...s[7]||(s[7]=[x(" 保存 ",-1)])]),_:1},8,["loading"])]),default:y(()=>[_.value?(c(),V("p",oe,[s[5]||(s[5]=x(" 角色:",-1)),B("strong",null,C(_.value.name),1)])):Y("",!0),D.value.length?(c(),w(i,{key:1,ref_key:"permTreeRef",ref:R,class:"perm-tree",data:D.value,"show-checkbox":"","node-key":"id",props:E,"default-expand-all":"","check-strictly":!1},null,8,["data"])):(c(),w(n,{key:2,description:"暂无权限数据","image-size":64}))]),_:1},8,["modelValue"])]),_:1})}}}),le=X(ae,[["__scopeId","data-v-0e80fdd4"]]);export{le as default}; diff --git a/frontend/dist/assets/SettingManage-CAoqayco.css b/frontend/dist/assets/SettingManage-CAoqayco.css deleted file mode 100644 index b7324bd..0000000 --- a/frontend/dist/assets/SettingManage-CAoqayco.css +++ /dev/null @@ -1 +0,0 @@ -.setting-container[data-v-a71db493]{padding:20px}.header[data-v-a71db493]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.header h2[data-v-a71db493]{margin:0;font-size:18px}.add-btn[data-v-a71db493]{background:#409eff;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer}.add-btn[data-v-a71db493]:hover{background:#66b1ff}.settings-table[data-v-a71db493]{width:100%;border-collapse:collapse}.settings-table th[data-v-a71db493],.settings-table td[data-v-a71db493]{border:1px solid #ebeef5;padding:12px;text-align:left}.settings-table th[data-v-a71db493]{background:#f5f7fa;font-weight:600}.value-cell[data-v-a71db493]{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell-image[data-v-a71db493]{width:60px;height:60px;object-fit:contain;border-radius:4px;background:#f5f7fa}.actions[data-v-a71db493]{display:flex;gap:8px}.edit-btn[data-v-a71db493]{background:#67c23a;color:#fff;border:none;padding:4px 12px;border-radius:4px;cursor:pointer}.edit-btn[data-v-a71db493]:hover{background:#85ce61}.modal-overlay[data-v-a71db493]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content[data-v-a71db493]{background:#fff;padding:24px;border-radius:8px;width:480px}.modal-content h3[data-v-a71db493]{margin:0 0 20px;font-size:16px}.form-group[data-v-a71db493]{margin-bottom:16px}.form-group label[data-v-a71db493]{display:block;margin-bottom:8px;font-weight:500}.form-group input[data-v-a71db493],.form-group textarea[data-v-a71db493],.form-select[data-v-a71db493]{width:100%;padding:8px;border:1px solid #dcdfe6;border-radius:4px;box-sizing:border-box}.form-group textarea[data-v-a71db493]{resize:vertical}.form-select[data-v-a71db493]{height:36px}.image-upload-area[data-v-a71db493]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px;border:1px dashed #dcdfe6;border-radius:4px;background:#fafafa}.preview-image[data-v-a71db493]{max-width:200px;max-height:120px;object-fit:contain;border-radius:4px}.no-image[data-v-a71db493]{color:#c0c4cc;font-size:13px;padding:12px}.upload-btn[data-v-a71db493]{background:#409eff;color:#fff;border:none;padding:6px 16px;border-radius:4px;cursor:pointer;font-size:13px}.upload-btn[data-v-a71db493]:hover{background:#66b1ff}.upload-hint[data-v-a71db493]{color:#909399;font-size:13px}.modal-footer[data-v-a71db493]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.cancel-btn[data-v-a71db493]{background:#f5f7fa;color:#606266;border:none;padding:8px 16px;border-radius:4px;cursor:pointer}.cancel-btn[data-v-a71db493]:hover{background:#e4e7ed}.submit-btn[data-v-a71db493]{background:#409eff;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer}.submit-btn[data-v-a71db493]:hover{background:#66b1ff} diff --git a/frontend/dist/assets/SettingManage-DbOShH1j.js b/frontend/dist/assets/SettingManage-D3eSU6jo.js similarity index 96% rename from frontend/dist/assets/SettingManage-DbOShH1j.js rename to frontend/dist/assets/SettingManage-D3eSU6jo.js index f2b772d..7ad0476 100644 --- a/frontend/dist/assets/SettingManage-DbOShH1j.js +++ b/frontend/dist/assets/SettingManage-D3eSU6jo.js @@ -1 +1 @@ -import{f as I,c as n,a as e,F as L,z as B,m as T,t as u,L as p,M as b,N as M,y as C,i as r,n as f,E as i,o,_ as R}from"./index-ChTrSGCb.js";const j={class:"setting-container"},z={class:"settings-table"},A={class:"value-cell"},H=["src"],Y={key:1},q={class:"actions"},G=["onClick"],J={class:"modal-content"},K={class:"form-group"},O={class:"form-group"},P={class:"form-group"},Q={key:0,class:"image-upload-area"},W=["src"],X={key:1,class:"no-image"},Z={key:2,class:"upload-hint"},ee={class:"form-group"},te={class:"modal-footer"},le=I({__name:"SettingManage",setup(ae){const D=s=>({string:"字符串",image:"图片",select:"下拉列表",boolean:"布尔值"})[s]||s,_=s=>{const t=new Date(s);if(isNaN(t.getTime()))return"-";const l=t.getFullYear(),c=String(t.getMonth()+1).padStart(2,"0"),y=String(t.getDate()).padStart(2,"0"),k=String(t.getHours()).padStart(2,"0"),F=String(t.getMinutes()).padStart(2,"0"),N=String(t.getSeconds()).padStart(2,"0");return`${l}-${c}-${y} ${k}:${F}:${N}`},h=r([]),v=r(!1),d=r(!1),g=r(!1),S=r(),a=r({id:0,key:"",value:"",type:"string",description:""}),w=async()=>{try{const{data:s}=await f.get("/settings/");h.value=s}catch{i.error("加载失败")}},$=()=>{d.value=!1,a.value={id:0,key:"",value:"",type:"string",description:""},v.value=!0},x=s=>{d.value=!0,a.value={id:s.id,key:s.key,value:s.value,type:s.type||"string",description:s.description},v.value=!0},m=()=>{v.value=!1,g.value=!1},V=()=>{var s;(s=S.value)==null||s.click()},U=async s=>{var c;const t=s.target,l=(c=t.files)==null?void 0:c[0];if(l){g.value=!0;try{const y=new FormData;y.append("file",l);const{data:k}=await f.post("/settings/upload",y);a.value.value=k.url,i.success("图片上传成功")}catch{i.error("图片上传失败")}finally{g.value=!1,t.value=""}}},E=async()=>{if(!a.value.key){i.warning("请输入设置键名");return}try{d.value?(await f.put(`/settings/${a.value.id}`,a.value),i.success("修改成功")):(await f.post("/settings/",a.value),i.success("添加成功")),m(),await w()}catch{i.error("操作失败")}};return w(),(s,t)=>(o(),n("div",j,[e("div",{class:"header"},[t[5]||(t[5]=e("h2",null,"系统设置管理",-1)),e("button",{class:"add-btn",onClick:$},"添加设置")]),e("table",z,[t[6]||(t[6]=e("thead",null,[e("tr",null,[e("th",null,"ID"),e("th",null,"设置键名"),e("th",null,"类型"),e("th",null,"设置值"),e("th",null,"描述"),e("th",null,"更新时间"),e("th",null,"创建时间"),e("th",null,"操作")])],-1)),e("tbody",null,[(o(!0),n(L,null,B(h.value,l=>(o(),n("tr",{key:l.id},[e("td",null,u(l.id),1),e("td",null,u(l.key),1),e("td",null,u(D(l.type)),1),e("td",A,[l.type==="image"&&l.value?(o(),n("img",{key:0,src:l.value,class:"cell-image"},null,8,H)):(o(),n("span",Y,u(l.value),1))]),e("td",null,u(l.description||"-"),1),e("td",null,u(_(l.updatetime)),1),e("td",null,u(_(l.createtime)),1),e("td",q,[e("button",{class:"edit-btn",onClick:c=>x(l)},"编辑",8,G)])]))),128))])]),v.value?(o(),n("div",{key:0,class:"modal-overlay",onClick:T(m,["self"])},[e("div",J,[e("h3",null,u(d.value?"编辑设置":"添加设置"),1),e("div",K,[t[7]||(t[7]=e("label",null,"设置键名 *",-1)),p(e("input",{"onUpdate:modelValue":t[0]||(t[0]=l=>a.value.key=l),type:"text",placeholder:"请输入设置键名"},null,512),[[b,a.value.key]])]),e("div",O,[t[9]||(t[9]=e("label",null,"类型",-1)),p(e("select",{"onUpdate:modelValue":t[1]||(t[1]=l=>a.value.type=l),class:"form-select"},[...t[8]||(t[8]=[e("option",{value:"string"},"字符串",-1),e("option",{value:"image"},"图片",-1),e("option",{value:"select"},"下拉列表",-1),e("option",{value:"boolean"},"布尔值",-1)])],512),[[M,a.value.type]])]),e("div",P,[t[11]||(t[11]=e("label",null,"设置值",-1)),a.value.type==="image"?(o(),n("div",Q,[a.value.value?(o(),n("img",{key:0,src:a.value.value,class:"preview-image"},null,8,W)):(o(),n("div",X,"暂无图片")),e("input",{ref_key:"fileInputRef",ref:S,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",style:{display:"none"},onChange:U},null,544),e("button",{class:"upload-btn",onClick:V},"选择图片"),g.value?(o(),n("span",Z,"上传中...")):C("",!0)])):a.value.type==="boolean"?p((o(),n("select",{key:1,"onUpdate:modelValue":t[2]||(t[2]=l=>a.value.value=l),class:"form-select"},[...t[10]||(t[10]=[e("option",{value:"true"},"是",-1),e("option",{value:"false"},"否",-1)])],512)),[[M,a.value.value]]):p((o(),n("textarea",{key:2,"onUpdate:modelValue":t[3]||(t[3]=l=>a.value.value=l),rows:"3",placeholder:"请输入设置值"},null,512)),[[b,a.value.value]])]),e("div",ee,[t[12]||(t[12]=e("label",null,"描述",-1)),p(e("textarea",{"onUpdate:modelValue":t[4]||(t[4]=l=>a.value.description=l),rows:"2",placeholder:"请输入描述"},null,512),[[b,a.value.description]])]),e("div",te,[e("button",{class:"cancel-btn",onClick:m},"取消"),e("button",{class:"submit-btn",onClick:E},u(d.value?"保存修改":"确认添加"),1)])])])):C("",!0)]))}}),ne=R(le,[["__scopeId","data-v-a71db493"]]);export{ne as default}; +import{f as I,c as n,a as e,F as L,z as B,m as T,t as u,L as p,M as b,N as M,y as C,i as r,n as f,E as i,o,_ as R}from"./index-rb7Oshfn.js";const j={class:"setting-container"},z={class:"settings-table"},A={class:"value-cell"},H=["src"],Y={key:1},q={class:"actions"},G=["onClick"],J={class:"modal-content"},K={class:"form-group"},O={class:"form-group"},P={class:"form-group"},Q={key:0,class:"image-upload-area"},W=["src"],X={key:1,class:"no-image"},Z={key:2,class:"upload-hint"},ee={class:"form-group"},te={class:"modal-footer"},le=I({__name:"SettingManage",setup(ae){const D=s=>({string:"字符串",image:"图片",select:"下拉列表",boolean:"布尔值"})[s]||s,_=s=>{const t=new Date(s);if(isNaN(t.getTime()))return"-";const l=t.getFullYear(),c=String(t.getMonth()+1).padStart(2,"0"),y=String(t.getDate()).padStart(2,"0"),k=String(t.getHours()).padStart(2,"0"),F=String(t.getMinutes()).padStart(2,"0"),N=String(t.getSeconds()).padStart(2,"0");return`${l}-${c}-${y} ${k}:${F}:${N}`},h=r([]),v=r(!1),d=r(!1),g=r(!1),S=r(),a=r({id:0,key:"",value:"",type:"string",description:""}),w=async()=>{try{const{data:s}=await f.get("/settings/");h.value=s}catch{i.error("加载失败")}},$=()=>{d.value=!1,a.value={id:0,key:"",value:"",type:"string",description:""},v.value=!0},x=s=>{d.value=!0,a.value={id:s.id,key:s.key,value:s.value,type:s.type||"string",description:s.description},v.value=!0},m=()=>{v.value=!1,g.value=!1},V=()=>{var s;(s=S.value)==null||s.click()},U=async s=>{var c;const t=s.target,l=(c=t.files)==null?void 0:c[0];if(l){g.value=!0;try{const y=new FormData;y.append("file",l);const{data:k}=await f.post("/settings/upload",y);a.value.value=k.url,i.success("图片上传成功")}catch{i.error("图片上传失败")}finally{g.value=!1,t.value=""}}},E=async()=>{if(!a.value.key){i.warning("请输入设置键名");return}try{d.value?(await f.put(`/settings/${a.value.id}`,a.value),i.success("修改成功")):(await f.post("/settings/",a.value),i.success("添加成功")),m(),await w()}catch{i.error("操作失败")}};return w(),(s,t)=>(o(),n("div",j,[e("div",{class:"header"},[t[5]||(t[5]=e("h2",null,"系统设置管理",-1)),e("button",{class:"add-btn",onClick:$},"添加设置")]),e("table",z,[t[6]||(t[6]=e("thead",null,[e("tr",null,[e("th",null,"ID"),e("th",null,"设置键名"),e("th",null,"类型"),e("th",null,"设置值"),e("th",null,"描述"),e("th",null,"更新时间"),e("th",null,"创建时间"),e("th",null,"操作")])],-1)),e("tbody",null,[(o(!0),n(L,null,B(h.value,l=>(o(),n("tr",{key:l.id},[e("td",null,u(l.id),1),e("td",null,u(l.key),1),e("td",null,u(D(l.type)),1),e("td",A,[l.type==="image"&&l.value?(o(),n("img",{key:0,src:l.value,class:"cell-image"},null,8,H)):(o(),n("span",Y,u(l.value),1))]),e("td",null,u(l.description||"-"),1),e("td",null,u(_(l.updatetime)),1),e("td",null,u(_(l.createtime)),1),e("td",q,[e("button",{class:"edit-btn",onClick:c=>x(l)},"编辑",8,G)])]))),128))])]),v.value?(o(),n("div",{key:0,class:"modal-overlay",onClick:T(m,["self"])},[e("div",J,[e("h3",null,u(d.value?"编辑设置":"添加设置"),1),e("div",K,[t[7]||(t[7]=e("label",null,"设置键名 *",-1)),p(e("input",{"onUpdate:modelValue":t[0]||(t[0]=l=>a.value.key=l),type:"text",placeholder:"请输入设置键名"},null,512),[[b,a.value.key]])]),e("div",O,[t[9]||(t[9]=e("label",null,"类型",-1)),p(e("select",{"onUpdate:modelValue":t[1]||(t[1]=l=>a.value.type=l),class:"form-select"},[...t[8]||(t[8]=[e("option",{value:"string"},"字符串",-1),e("option",{value:"image"},"图片",-1),e("option",{value:"select"},"下拉列表",-1),e("option",{value:"boolean"},"布尔值",-1)])],512),[[M,a.value.type]])]),e("div",P,[t[11]||(t[11]=e("label",null,"设置值",-1)),a.value.type==="image"?(o(),n("div",Q,[a.value.value?(o(),n("img",{key:0,src:a.value.value,class:"preview-image"},null,8,W)):(o(),n("div",X,"暂无图片")),e("input",{ref_key:"fileInputRef",ref:S,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",style:{display:"none"},onChange:U},null,544),e("button",{class:"upload-btn",onClick:V},"选择图片"),g.value?(o(),n("span",Z,"上传中...")):C("",!0)])):a.value.type==="boolean"?p((o(),n("select",{key:1,"onUpdate:modelValue":t[2]||(t[2]=l=>a.value.value=l),class:"form-select"},[...t[10]||(t[10]=[e("option",{value:"true"},"是",-1),e("option",{value:"false"},"否",-1)])],512)),[[M,a.value.value]]):p((o(),n("textarea",{key:2,"onUpdate:modelValue":t[3]||(t[3]=l=>a.value.value=l),rows:"3",placeholder:"请输入设置值"},null,512)),[[b,a.value.value]])]),e("div",ee,[t[12]||(t[12]=e("label",null,"描述",-1)),p(e("textarea",{"onUpdate:modelValue":t[4]||(t[4]=l=>a.value.description=l),rows:"2",placeholder:"请输入描述"},null,512),[[b,a.value.description]])]),e("div",te,[e("button",{class:"cancel-btn",onClick:m},"取消"),e("button",{class:"submit-btn",onClick:E},u(d.value?"保存修改":"确认添加"),1)])])])):C("",!0)]))}}),ne=R(le,[["__scopeId","data-v-1321c610"]]);export{ne as default}; diff --git a/frontend/dist/assets/SettingManage-DcldOeo6.css b/frontend/dist/assets/SettingManage-DcldOeo6.css new file mode 100644 index 0000000..f0e3cd6 --- /dev/null +++ b/frontend/dist/assets/SettingManage-DcldOeo6.css @@ -0,0 +1 @@ +.setting-container[data-v-1321c610]{padding:20px}.header[data-v-1321c610]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.header h2[data-v-1321c610]{margin:0;font-size:18px}.add-btn[data-v-1321c610]{background:#409eff;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer}.add-btn[data-v-1321c610]:hover{background:#66b1ff}.settings-table[data-v-1321c610]{width:100%;border-collapse:collapse}.settings-table th[data-v-1321c610],.settings-table td[data-v-1321c610]{border:1px solid #ebeef5;padding:12px;text-align:left}.settings-table th[data-v-1321c610]{background:#f5f7fa;font-weight:600}.value-cell[data-v-1321c610]{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell-image[data-v-1321c610]{width:60px;height:60px;object-fit:contain;border-radius:4px;background:#f5f7fa}.actions[data-v-1321c610]{display:flex;gap:8px}.edit-btn[data-v-1321c610]{background:#67c23a;color:#fff;border:none;padding:4px 12px;border-radius:4px;cursor:pointer}.edit-btn[data-v-1321c610]:hover{background:#85ce61}.modal-overlay[data-v-1321c610]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content[data-v-1321c610]{background:#fff;padding:24px;border-radius:8px;width:480px}.modal-content h3[data-v-1321c610]{margin:0 0 20px;font-size:16px}.form-group[data-v-1321c610]{margin-bottom:16px}.form-group label[data-v-1321c610]{display:block;margin-bottom:8px;font-weight:500}.form-group input[data-v-1321c610],.form-group textarea[data-v-1321c610],.form-select[data-v-1321c610]{width:100%;padding:8px;border:1px solid #dcdfe6;border-radius:4px;box-sizing:border-box}.form-group textarea[data-v-1321c610]{resize:vertical}.form-select[data-v-1321c610]{height:36px}.image-upload-area[data-v-1321c610]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px;border:1px dashed #dcdfe6;border-radius:4px;background:#fafafa}.preview-image[data-v-1321c610]{max-width:200px;max-height:120px;object-fit:contain;border-radius:4px}.no-image[data-v-1321c610]{color:#c0c4cc;font-size:13px;padding:12px}.upload-btn[data-v-1321c610]{background:#409eff;color:#fff;border:none;padding:6px 16px;border-radius:4px;cursor:pointer;font-size:13px}.upload-btn[data-v-1321c610]:hover{background:#66b1ff}.upload-hint[data-v-1321c610]{color:#909399;font-size:13px}.modal-footer[data-v-1321c610]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.cancel-btn[data-v-1321c610]{background:#f5f7fa;color:#606266;border:none;padding:8px 16px;border-radius:4px;cursor:pointer}.cancel-btn[data-v-1321c610]:hover{background:#e4e7ed}.submit-btn[data-v-1321c610]{background:#409eff;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer}.submit-btn[data-v-1321c610]:hover{background:#66b1ff} diff --git a/frontend/dist/assets/UserManage-DExq8OEE.js b/frontend/dist/assets/UserManage-DDgTVhjY.js similarity index 98% rename from frontend/dist/assets/UserManage-DExq8OEE.js rename to frontend/dist/assets/UserManage-DDgTVhjY.js index 3f2209d..3cded9e 100644 --- a/frontend/dist/assets/UserManage-DExq8OEE.js +++ b/frontend/dist/assets/UserManage-DDgTVhjY.js @@ -1 +1 @@ -import{G as n,O as c,n as i,E as o,f as d,H as p,g as f,q as h,w as g,r as u,d as y,I as w,B as x,o as _}from"./index-ChTrSGCb.js";import{t as k}from"./list-query-4ZZvVtjn.js";const Y=()=>({crudOptions:{pagination:{show:!1},search:{show:!0},searchFormOptions:{inline:!0,labelWidth:"80px",col:{span:0}},request:{transformQuery:({form:e})=>k(e,["username","nickname","email","phone"]),pageRequest:async e=>{const{data:s}=await i.post("/users/search",e);return s},transformRes:({res:e})=>{const s=Array.isArray(e)?e:[];return{currentPage:1,pageSize:Math.max(s.length,1),total:s.length,records:s}},onError:e=>{var t;let s="操作失败";if((t=e.response)!=null&&t.data){const a=e.response.data;if(a.errors&&Array.isArray(a.errors))s=a.errors.map(r=>r.message).join(";");else if(a.message)s=a.message;else if(a.detail){const r=a.detail;typeof r=="string"&&(r.includes("at least 6 characters")?s="密码长度至少为6个字符":s=r)}}else e.message&&(s=e.message);throw o.error({message:s,duration:5e3}),e},addRequest:async({form:e})=>{await i.post("/users/",e),o.success({message:"添加成功",duration:5e3})},editRequest:async({form:e,row:s})=>{if(!s)return;const t={...e};t.password||delete t.password,await i.put(`/users/${s.id}`,t),o.success({message:"修改成功",duration:5e3})},delRequest:async({row:e})=>{e&&(await i.delete(`/users/${e.id}`),o.success({message:"删除成功",duration:5e3}))},onSuccess:({action:e})=>{e==="add"?o.success({message:"添加成功",duration:5e3}):e==="edit"&&o.success({message:"修改成功",duration:5e3})}},table:{remove:{showSuccessNotification:!1}},rowHandle:{buttons:{edit:{text:"编辑"},remove:{text:"删除",show:!0}}},columns:{id:{title:"ID",key:"id",type:"number",column:{width:70},form:{show:!1}},username:{title:"登录名",key:"username",type:"text",search:{show:!0},form:{rules:[{required:!0,message:"请输入登录名",trigger:"blur"},{min:3,max:50,message:"用户名长度必须在3-50个字符之间",trigger:"blur"}]}},nickname:{title:"昵称",key:"nickname",type:"text",search:{show:!0},form:{rules:[{required:!0,message:"必填"}]}},password:{title:"密码",key:"password",type:"password",column:{show:!1},form:{show:!1},addForm:{show:!0,rules:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,max:50,message:"密码长度必须在6-50个字符之间",trigger:"blur"}]},editForm:{show:!0,component:{placeholder:"不修改请留空"},rules:[{min:6,max:50,message:"密码长度必须在6-50个字符之间",trigger:"blur"}]}},email:{title:"邮箱",key:"email",type:"text",search:{show:!0}},phone:{title:"手机",key:"phone",type:"text",search:{show:!0}},wx_openid:{title:"微信OpenID",key:"wx_openid",type:"text",column:{show:!1}},avatar:{title:"头像",key:"avatar",type:"text",column:{show:!1}},role_id:{title:"角色",key:"role_id",type:"dict-select",dict:c({getData:async()=>{const{data:e}=await i.post("/roles/search",{});return e},value:"id",label:"name"}),column:{width:120,dict:!0},form:{rules:[{required:!0,message:"必选"}],value:2}},createtime:{title:"创建时间",key:"createtime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:e,row:s,key:t}){!s||e==null||(s[t]=n(e).format("YYYY-MM-DD HH:mm:ss"))}},updatetime:{title:"更新时间",key:"updatetime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:e,row:s,key:t}){!s||e==null||(s[t]=n(e).format("YYYY-MM-DD HH:mm:ss"))}},lastlogintime:{title:"最后登录",key:"lastlogintime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:e,row:s,key:t}){!s||e==null||(s[t]=n(e).format("YYYY-MM-DD HH:mm:ss"))}}}}}),D=d({__name:"UserManage",setup(e){const{crudBinding:s,crudRef:t,crudExpose:a}=p({createCrudOptions:Y});return f(()=>{a.doRefresh()}),(r,b)=>{const l=u("fs-crud"),m=u("fs-page");return _(),h(m,null,{default:g(()=>[y(l,w({ref_key:"crudRef",ref:t},x(s)),null,16)]),_:1})}}});export{D as default}; +import{G as n,O as c,n as i,E as o,f as d,H as p,g as f,q as h,w as g,r as u,d as y,I as w,B as x,o as _}from"./index-rb7Oshfn.js";import{t as k}from"./list-query-4ZZvVtjn.js";const Y=()=>({crudOptions:{pagination:{show:!1},search:{show:!0},searchFormOptions:{inline:!0,labelWidth:"80px",col:{span:0}},request:{transformQuery:({form:e})=>k(e,["username","nickname","email","phone"]),pageRequest:async e=>{const{data:s}=await i.post("/users/search",e);return s},transformRes:({res:e})=>{const s=Array.isArray(e)?e:[];return{currentPage:1,pageSize:Math.max(s.length,1),total:s.length,records:s}},onError:e=>{var t;let s="操作失败";if((t=e.response)!=null&&t.data){const a=e.response.data;if(a.errors&&Array.isArray(a.errors))s=a.errors.map(r=>r.message).join(";");else if(a.message)s=a.message;else if(a.detail){const r=a.detail;typeof r=="string"&&(r.includes("at least 6 characters")?s="密码长度至少为6个字符":s=r)}}else e.message&&(s=e.message);throw o.error({message:s,duration:5e3}),e},addRequest:async({form:e})=>{await i.post("/users/",e),o.success({message:"添加成功",duration:5e3})},editRequest:async({form:e,row:s})=>{if(!s)return;const t={...e};t.password||delete t.password,await i.put(`/users/${s.id}`,t),o.success({message:"修改成功",duration:5e3})},delRequest:async({row:e})=>{e&&(await i.delete(`/users/${e.id}`),o.success({message:"删除成功",duration:5e3}))},onSuccess:({action:e})=>{e==="add"?o.success({message:"添加成功",duration:5e3}):e==="edit"&&o.success({message:"修改成功",duration:5e3})}},table:{remove:{showSuccessNotification:!1}},rowHandle:{buttons:{edit:{text:"编辑"},remove:{text:"删除",show:!0}}},columns:{id:{title:"ID",key:"id",type:"number",column:{width:70},form:{show:!1}},username:{title:"登录名",key:"username",type:"text",search:{show:!0},form:{rules:[{required:!0,message:"请输入登录名",trigger:"blur"},{min:3,max:50,message:"用户名长度必须在3-50个字符之间",trigger:"blur"}]}},nickname:{title:"昵称",key:"nickname",type:"text",search:{show:!0},form:{rules:[{required:!0,message:"必填"}]}},password:{title:"密码",key:"password",type:"password",column:{show:!1},form:{show:!1},addForm:{show:!0,rules:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,max:50,message:"密码长度必须在6-50个字符之间",trigger:"blur"}]},editForm:{show:!0,component:{placeholder:"不修改请留空"},rules:[{min:6,max:50,message:"密码长度必须在6-50个字符之间",trigger:"blur"}]}},email:{title:"邮箱",key:"email",type:"text",search:{show:!0}},phone:{title:"手机",key:"phone",type:"text",search:{show:!0}},wx_openid:{title:"微信OpenID",key:"wx_openid",type:"text",column:{show:!1}},avatar:{title:"头像",key:"avatar",type:"text",column:{show:!1}},role_id:{title:"角色",key:"role_id",type:"dict-select",dict:c({getData:async()=>{const{data:e}=await i.post("/roles/search",{});return e},value:"id",label:"name"}),column:{width:120,dict:!0},form:{rules:[{required:!0,message:"必选"}],value:2}},createtime:{title:"创建时间",key:"createtime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:e,row:s,key:t}){!s||e==null||(s[t]=n(e).format("YYYY-MM-DD HH:mm:ss"))}},updatetime:{title:"更新时间",key:"updatetime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:e,row:s,key:t}){!s||e==null||(s[t]=n(e).format("YYYY-MM-DD HH:mm:ss"))}},lastlogintime:{title:"最后登录",key:"lastlogintime",type:"text",form:{show:!1},column:{width:170},valueBuilder({value:e,row:s,key:t}){!s||e==null||(s[t]=n(e).format("YYYY-MM-DD HH:mm:ss"))}}}}}),D=d({__name:"UserManage",setup(e){const{crudBinding:s,crudRef:t,crudExpose:a}=p({createCrudOptions:Y});return f(()=>{a.doRefresh()}),(r,b)=>{const l=u("fs-crud"),m=u("fs-page");return _(),h(m,null,{default:g(()=>[y(l,w({ref_key:"crudRef",ref:t},x(s)),null,16)]),_:1})}}});export{D as default}; diff --git a/frontend/dist/assets/index-64865240-CievhkpU.js b/frontend/dist/assets/index-64865240-B3tEj8Ws.js similarity index 99% rename from frontend/dist/assets/index-64865240-CievhkpU.js rename to frontend/dist/assets/index-64865240-B3tEj8Ws.js index 136ad37..9ec875c 100644 --- a/frontend/dist/assets/index-64865240-CievhkpU.js +++ b/frontend/dist/assets/index-64865240-B3tEj8Ws.js @@ -1,4 +1,4 @@ -import{e as Nl,Z as da}from"./index-ChTrSGCb.js";function On(e){const t=navigator.userAgent;return t.indexOf("compatible")>-1&&t.indexOf("MSIE")>-1?(new RegExp("MSIE (\\d+\\.\\d+);").test(t),parseFloat(RegExp.$1)):!1}const Il={_isIE11(){let e=0;const t=/MSIE (\d+\.\d+);/.test(navigator.userAgent),r=!!navigator.userAgent.match(/Trident\/7.0/),a=navigator.userAgent.indexOf("rv:11.0");return t&&(e=Number(RegExp.$1)),navigator.appVersion.indexOf("MSIE 10")!==-1&&(e=10),r&&a!==-1&&(e=11),e===11},_isEdge(){return/Edge/.test(navigator.userAgent)},_getDownloadUrl(e){const t="\uFEFF";if(window.Blob&&window.URL&&window.URL.createObjectURL){const r=new Blob([t+e],{type:"text/csv"});return URL.createObjectURL(r)}else return"data:attachment/csv;charset=utf-8,"+t+encodeURIComponent(e)},download(e,t){if(On()&&On()<10){const r=window.top.open("about:blank","_blank");r.document.charset="utf-8",r.document.write(t),r.document.close(),r.document.execCommand("SaveAs",e+".csv"),r.close()}else if(On()===10||this._isIE11()||this._isEdge()){const r="\uFEFF",a=new Blob([r+t],{type:"text/csv"});navigator.msSaveBlob(a,e+".csv")}else{const r=document.createElement("a");r.download=e+".csv",r.href=this._getDownloadUrl(t),document.body.appendChild(r),r.click(),document.body.removeChild(r)}}},Fl=`\r +import{e as Nl,Z as da}from"./index-rb7Oshfn.js";function On(e){const t=navigator.userAgent;return t.indexOf("compatible")>-1&&t.indexOf("MSIE")>-1?(new RegExp("MSIE (\\d+\\.\\d+);").test(t),parseFloat(RegExp.$1)):!1}const Il={_isIE11(){let e=0;const t=/MSIE (\d+\.\d+);/.test(navigator.userAgent),r=!!navigator.userAgent.match(/Trident\/7.0/),a=navigator.userAgent.indexOf("rv:11.0");return t&&(e=Number(RegExp.$1)),navigator.appVersion.indexOf("MSIE 10")!==-1&&(e=10),r&&a!==-1&&(e=11),e===11},_isEdge(){return/Edge/.test(navigator.userAgent)},_getDownloadUrl(e){const t="\uFEFF";if(window.Blob&&window.URL&&window.URL.createObjectURL){const r=new Blob([t+e],{type:"text/csv"});return URL.createObjectURL(r)}else return"data:attachment/csv;charset=utf-8,"+t+encodeURIComponent(e)},download(e,t){if(On()&&On()<10){const r=window.top.open("about:blank","_blank");r.document.charset="utf-8",r.document.write(t),r.document.close(),r.document.execCommand("SaveAs",e+".csv"),r.close()}else if(On()===10||this._isIE11()||this._isEdge()){const r="\uFEFF",a=new Blob([r+t],{type:"text/csv"});navigator.msSaveBlob(a,e+".csv")}else{const r=document.createElement("a");r.download=e+".csv",r.href=this._getDownloadUrl(t),document.body.appendChild(r),r.click(),document.body.removeChild(r)}}},Fl=`\r `,Nn=(e,t,{separator:r,quoted:a})=>{const n=t.map(s=>a?(s=typeof s=="string"?s.replace(/"/g,'"'):s,`"${s}"`):s);e.push(n.join(r))},Pl={separator:",",quoted:!1};function Dl(e,t,r,a=!1){r=Object.assign({},Pl,r);let n;const s=[],i=[];return e?(n=e.map(o=>typeof o=="string"?o:(a||i.push(typeof o.label<"u"?o.label:o.prop),o.prop)),i.length>0&&Nn(s,i,r)):(n=[],t.forEach(o=>{Array.isArray(o)||(n=n.concat(Object.keys(o)))}),n.length>0&&(n=n.filter((o,c,l)=>l.indexOf(o)===c),a||Nn(s,n,r))),Array.isArray(t)&&t.forEach(o=>{Array.isArray(o)||(o=n.map(c=>typeof o[c]<"u"?o[c]:"")),Nn(s,o,r)}),s.join(Fl)}/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */(function(e){if(e.URL=e.URL||e.webkitURL,e.Blob&&e.URL)try{new Blob;return}catch{}var t=e.BlobBuilder||e.WebKitBlobBuilder||e.MozBlobBuilder||function(r){var a=function(x){return Object.prototype.toString.call(x).match(/^\[object\s(.*)\]$/)[1]},n=function(){this.data=[]},s=function(x,A,P){this.data=x,this.size=x.length,this.type=A,this.encoding=P},i=n.prototype,o=s.prototype,c=r.FileReaderSync,l=function(x){this.code=this[this.name=x]},f="NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "),p=f.length,h=r.URL||r.webkitURL||r,d=h.createObjectURL,m=h.revokeObjectURL,u=h,b=r.btoa,T=r.atob,S=r.ArrayBuffer,g=r.Uint8Array;for(s.fake=o.fake=!0;p--;)l.prototype[f[p]]=p+1;return h.createObjectURL||(u=r.URL={}),u.createObjectURL=function(x){var A=x.type,P;if(A===null&&(A="application/octet-stream"),x instanceof s)return P="data:"+A,x.encoding==="base64"?P+";base64,"+x.data:x.encoding==="URI"?P+","+decodeURIComponent(x.data):b?P+";base64,"+b(x.data):P+","+encodeURIComponent(x.data);if(d)return d.call(h,x)},u.revokeObjectURL=function(x){x.substring(0,5)!=="data:"&&m&&m.call(h,x)},i.append=function(x){var A=this.data;if(g&&(x instanceof S||x instanceof g)){for(var P="",R=new g(x),U=0,I=R.length;U1?A:this.data.length),P,this.encoding)},o.toString=function(){return"[object Blob]"},o.close=function(){this.size=this.data.length=0},n}(e);e.Blob=function(r,a){var n=a&&a.type||"",s=new t;if(r)for(var i=0,o=r.length;i"u"?f={autoBom:!1}:typeof f!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),f={autoBom:!f}),f.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(l.type)?new Blob(["\uFEFF",l],{type:l.type}):l}function a(l,f,p){var h=new XMLHttpRequest;h.open("GET",l),h.responseType="blob",h.onload=function(){c(h.response,f,p)},h.onerror=function(){console.error("could not download file")},h.send()}function n(l){var f=new XMLHttpRequest;f.open("HEAD",l,!1);try{f.send()}catch{}return 200<=f.status&&299>=f.status}function s(l){try{l.dispatchEvent(new MouseEvent("click"))}catch{var f=document.createEvent("MouseEvents");f.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),l.dispatchEvent(f)}}var i=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof da=="object"&&da.global===da?da:void 0,o=i.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),c=i.saveAs||(typeof window!="object"||window!==i?function(){}:"download"in HTMLAnchorElement.prototype&&!o?function(l,f,p){var h=i.URL||i.webkitURL,d=document.createElement("a");f=f||l.name||"download",d.download=f,d.rel="noopener",typeof l=="string"?(d.href=l,d.origin===location.origin?s(d):n(d.href)?a(l,f,p):s(d,d.target="_blank")):(d.href=h.createObjectURL(l),setTimeout(function(){h.revokeObjectURL(d.href)},4e4),setTimeout(function(){s(d)},0))}:"msSaveOrOpenBlob"in navigator?function(l,f,p){if(f=f||l.name||"download",typeof l!="string")navigator.msSaveOrOpenBlob(r(l,p),f);else if(n(l))a(l,f,p);else{var h=document.createElement("a");h.href=l,h.target="_blank",setTimeout(function(){s(h)})}}:function(l,f,p,h){if(h=h||open("","_blank"),h&&(h.document.title=h.document.body.innerText="downloading..."),typeof l=="string")return a(l,f,p);var d=l.type==="application/octet-stream",m=/constructor/i.test(i.HTMLElement)||i.safari,u=/CriOS\/[\d]+/.test(navigator.userAgent);if((u||d&&m||o)&&typeof FileReader<"u"){var b=new FileReader;b.onloadend=function(){var g=b.result;g=u?g:g.replace(/^data:[^;]*;/,"data:attachment/file;"),h?h.location.href=g:location=g,h=null},b.readAsDataURL(l)}else{var T=i.URL||i.webkitURL,S=T.createObjectURL(l);h?h.location=S:location.href=S,h=null,setTimeout(function(){T.revokeObjectURL(S)},4e4)}});i.saveAs=c.saveAs=c,e.exports=c})})(no);var Ll=no.exports;const so=Nl(Ll);/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */var nn={};nn.version="0.18.5";var io=1252,Ml=[874,932,936,949,950,1250,1251,1252,1253,1254,1255,1256,1257,1258,1e4],is={0:1252,1:65001,2:65001,77:1e4,128:932,129:949,130:1361,134:936,136:950,161:1253,162:1254,163:1258,177:1255,178:1256,186:1257,204:1251,222:874,238:1250,255:1252,69:6969},os=function(e){Ml.indexOf(e)!=-1&&(io=is[0]=e)};function Ul(){os(1252)}var jr=function(e){os(e)};function cs(){jr(1200),Ul()}function Zs(e){for(var t=[],r=0,a=e.length;r>1;++r)t[r]=String.fromCharCode(e.charCodeAt(2*r)+(e.charCodeAt(2*r+1)<<8));return t.join("")}function oo(e){for(var t=[],r=0;r>1;++r)t[r]=String.fromCharCode(e.charCodeAt(2*r+1)+(e.charCodeAt(2*r)<<8));return t.join("")}var ma=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1);return t==255&&r==254?Bl(e.slice(2)):t==254&&r==255?oo(e.slice(2)):t==65279?e.slice(1):e},Xa=function(e){return String.fromCharCode(e)},qs=function(e){return String.fromCharCode(e)},Kt,mt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function xa(e){for(var t="",r=0,a=0,n=0,s=0,i=0,o=0,c=0,l=0;l>2,a=e.charCodeAt(l++),i=(r&3)<<4|a>>4,n=e.charCodeAt(l++),o=(a&15)<<2|n>>6,c=n&63,isNaN(a)?o=c=64:isNaN(n)&&(c=64),t+=mt.charAt(s)+mt.charAt(i)+mt.charAt(o)+mt.charAt(c);return t}function Ir(e){var t="",r=0,a=0,n=0,s=0,i=0,o=0,c=0;e=e.replace(/[^\w\+\/\=]/g,"");for(var l=0;l>4,t+=String.fromCharCode(r),o=mt.indexOf(e.charAt(l++)),a=(i&15)<<4|o>>2,o!==64&&(t+=String.fromCharCode(a)),c=mt.indexOf(e.charAt(l++)),n=(o&3)<<6|c,c!==64&&(t+=String.fromCharCode(n));return t}var Se=function(){return typeof Buffer<"u"&&typeof process<"u"&&typeof process.versions<"u"&&!!process.versions.node}(),lt=function(){if(typeof Buffer<"u"){var e=!Buffer.from;if(!e)try{Buffer.from("foo","utf8")}catch{e=!0}return e?function(t,r){return r?new Buffer(t,r):new Buffer(t)}:Buffer.from.bind(Buffer)}return function(){}}();function vt(e){return Se?Buffer.alloc?Buffer.alloc(e):new Buffer(e):typeof Uint8Array<"u"?new Uint8Array(e):new Array(e)}function Qs(e){return Se?Buffer.allocUnsafe?Buffer.allocUnsafe(e):new Buffer(e):typeof Uint8Array<"u"?new Uint8Array(e):new Array(e)}var Or=function(e){return Se?lt(e,"binary"):e.split("").map(function(t){return t.charCodeAt(0)&255})};function gn(e){if(typeof ArrayBuffer>"u")return Or(e);for(var t=new ArrayBuffer(e.length),r=new Uint8Array(t),a=0;a!=e.length;++a)r[a]=e.charCodeAt(a)&255;return t}function Tt(e){if(Array.isArray(e))return e.map(function(a){return String.fromCharCode(a)}).join("");for(var t=[],r=0;r"u")throw new Error("Unsupported");return new Uint8Array(e)}function ls(e){if(typeof ArrayBuffer>"u")throw new Error("Unsupported");if(e instanceof ArrayBuffer)return ls(new Uint8Array(e));for(var t=new Array(e.length),r=0;r>6&31,n[r++]=128|i&63;else if(i>=55296&&i<57344){i=(i&1023)+64;var o=e.charCodeAt(++s)&1023;n[r++]=240|i>>8&7,n[r++]=128|i>>2&63,n[r++]=128|o>>6&15|(i&3)<<4,n[r++]=128|o&63}else n[r++]=224|i>>12&15,n[r++]=128|i>>6&63,n[r++]=128|i&63;r>a&&(t.push(n.slice(0,r)),r=0,n=vt(65535),a=65530)}return t.push(n.slice(0,r)),ir(t)}var yr=/\u0000/g,ba=/[\u0001-\u0006]/g;function Jt(e){for(var t="",r=e.length-1;r>=0;)t+=e.charAt(r--);return t}function $r(e,t){var r=""+e;return r.length>=t?r:$e("0",t-r.length)+r}function fs(e,t){var r=""+e;return r.length>=t?r:$e(" ",t-r.length)+r}function sn(e,t){var r=""+e;return r.length>=t?r:r+$e(" ",t-r.length)}function Hl(e,t){var r=""+Math.round(e);return r.length>=t?r:$e("0",t-r.length)+r}function Gl(e,t){var r=""+e;return r.length>=t?r:$e("0",t-r.length)+r}var ei=Math.pow(2,32);function Vt(e,t){if(e>ei||e<-ei)return Hl(e,t);var r=Math.round(e);return Gl(r,t)}function on(e,t){return t=t||0,e.length>=7+t&&(e.charCodeAt(t)|32)===103&&(e.charCodeAt(t+1)|32)===101&&(e.charCodeAt(t+2)|32)===110&&(e.charCodeAt(t+3)|32)===101&&(e.charCodeAt(t+4)|32)===114&&(e.charCodeAt(t+5)|32)===97&&(e.charCodeAt(t+6)|32)===108}var ri=[["Sun","Sunday"],["Mon","Monday"],["Tue","Tuesday"],["Wed","Wednesday"],["Thu","Thursday"],["Fri","Friday"],["Sat","Saturday"]],In=[["J","Jan","January"],["F","Feb","February"],["M","Mar","March"],["A","Apr","April"],["M","May","May"],["J","Jun","June"],["J","Jul","July"],["A","Aug","August"],["S","Sep","September"],["O","Oct","October"],["N","Nov","November"],["D","Dec","December"]];function Vl(e){return e||(e={}),e[0]="General",e[1]="0",e[2]="0.00",e[3]="#,##0",e[4]="#,##0.00",e[9]="0%",e[10]="0.00%",e[11]="0.00E+00",e[12]="# ?/?",e[13]="# ??/??",e[14]="m/d/yy",e[15]="d-mmm-yy",e[16]="d-mmm",e[17]="mmm-yy",e[18]="h:mm AM/PM",e[19]="h:mm:ss AM/PM",e[20]="h:mm",e[21]="h:mm:ss",e[22]="m/d/yy h:mm",e[37]="#,##0 ;(#,##0)",e[38]="#,##0 ;[Red](#,##0)",e[39]="#,##0.00;(#,##0.00)",e[40]="#,##0.00;[Red](#,##0.00)",e[45]="mm:ss",e[46]="[h]:mm:ss",e[47]="mmss.0",e[48]="##0.0E+0",e[49]="@",e[56]='"上午/下午 "hh"時"mm"分"ss"秒 "',e}var be={0:"General",1:"0",2:"0.00",3:"#,##0",4:"#,##0.00",9:"0%",10:"0.00%",11:"0.00E+00",12:"# ?/?",13:"# ??/??",14:"m/d/yy",15:"d-mmm-yy",16:"d-mmm",17:"mmm-yy",18:"h:mm AM/PM",19:"h:mm:ss AM/PM",20:"h:mm",21:"h:mm:ss",22:"m/d/yy h:mm",37:"#,##0 ;(#,##0)",38:"#,##0 ;[Red](#,##0)",39:"#,##0.00;(#,##0.00)",40:"#,##0.00;[Red](#,##0.00)",45:"mm:ss",46:"[h]:mm:ss",47:"mmss.0",48:"##0.0E+0",49:"@",56:'"上午/下午 "hh"時"mm"分"ss"秒 "'},ti={5:37,6:38,7:39,8:40,23:0,24:0,25:0,26:0,27:14,28:14,29:14,30:14,31:14,50:14,51:14,52:14,53:14,54:14,55:14,56:14,57:14,58:14,59:1,60:2,61:3,62:4,67:9,68:10,69:12,70:13,71:14,72:14,73:15,74:16,75:17,76:20,77:21,78:22,79:45,80:46,81:47,82:0},jl={5:'"$"#,##0_);\\("$"#,##0\\)',63:'"$"#,##0_);\\("$"#,##0\\)',6:'"$"#,##0_);[Red]\\("$"#,##0\\)',64:'"$"#,##0_);[Red]\\("$"#,##0\\)',7:'"$"#,##0.00_);\\("$"#,##0.00\\)',65:'"$"#,##0.00_);\\("$"#,##0.00\\)',8:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',66:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',41:'_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)',42:'_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)',43:'_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)',44:'_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)'};function cn(e,t,r){for(var a=e<0?-1:1,n=e*a,s=0,i=1,o=0,c=1,l=0,f=0,p=Math.floor(n);lt&&(l>t?(f=c,o=s):(f=l,o=i)),!r)return[0,a*o,f];var h=Math.floor(a*o/f);return[h,a*o-h*f,f]}function Ct(e,t,r){if(e>2958465||e<0)return null;var a=e|0,n=Math.floor(86400*(e-a)),s=0,i=[],o={D:a,T:n,u:86400*(e-a)-n,y:0,m:0,d:0,H:0,M:0,S:0,q:0};if(Math.abs(o.u)<1e-6&&(o.u=0),t&&t.date1904&&(a+=1462),o.u>.9999&&(o.u=0,++n==86400&&(o.T=n=0,++a,++o.D)),a===60)i=r?[1317,10,29]:[1900,2,29],s=3;else if(a===0)i=r?[1317,8,29]:[1900,1,0],s=6;else{a>60&&--a;var c=new Date(1900,0,1);c.setDate(c.getDate()+a-1),i=[c.getFullYear(),c.getMonth()+1,c.getDate()],s=c.getDay(),a<60&&(s=(s+6)%7),r&&(s=Zl(c,i))}return o.y=i[0],o.m=i[1],o.d=i[2],o.S=n%60,n=Math.floor(n/60),o.M=n%60,n=Math.floor(n/60),o.H=n,o.q=s,o}var co=new Date(1899,11,31,0,0,0),$l=co.getTime(),Xl=new Date(1900,2,1,0,0,0);function lo(e,t){var r=e.getTime();return t?r-=1461*24*60*60*1e3:e>=Xl&&(r+=24*60*60*1e3),(r-($l+(e.getTimezoneOffset()-co.getTimezoneOffset())*6e4))/(24*60*60*1e3)}function hs(e){return e.indexOf(".")==-1?e:e.replace(/(?:\.0*|(\.\d*[1-9])0+)$/,"$1")}function Yl(e){return e.indexOf("E")==-1?e:e.replace(/(?:\.0*|(\.\d*[1-9])0+)[Ee]/,"$1E").replace(/(E[+-])(\d)$/,"$10$2")}function Kl(e){var t=e<0?12:11,r=hs(e.toFixed(12));return r.length<=t||(r=e.toPrecision(10),r.length<=t)?r:e.toExponential(5)}function Jl(e){var t=hs(e.toFixed(11));return t.length>(e<0?12:11)||t==="0"||t==="-0"?e.toPrecision(6):t}function Aa(e){var t=Math.floor(Math.log(Math.abs(e))*Math.LOG10E),r;return t>=-4&&t<=-1?r=e.toPrecision(10+t):Math.abs(t)<=9?r=Kl(e):t===10?r=e.toFixed(10).substr(0,12):r=Jl(e),hs(Yl(r.toUpperCase()))}function Nt(e,t){switch(typeof e){case"string":return e;case"boolean":return e?"TRUE":"FALSE";case"number":return(e|0)===e?e.toString(10):Aa(e);case"undefined":return"";case"object":if(e==null)return"";if(e instanceof Date)return zr(14,lo(e,t&&t.date1904),t)}throw new Error("unsupported value in General format: "+e)}function Zl(e,t){t[0]-=581;var r=e.getDay();return e<60&&(r=(r+6)%7),r}function ql(e,t,r,a){var n="",s=0,i=0,o=r.y,c,l=0;switch(e){case 98:o=r.y+543;case 121:switch(t.length){case 1:case 2:c=o%100,l=2;break;default:c=o%1e4,l=4;break}break;case 109:switch(t.length){case 1:case 2:c=r.m,l=t.length;break;case 3:return In[r.m-1][1];case 5:return In[r.m-1][0];default:return In[r.m-1][2]}break;case 100:switch(t.length){case 1:case 2:c=r.d,l=t.length;break;case 3:return ri[r.q][0];default:return ri[r.q][1]}break;case 104:switch(t.length){case 1:case 2:c=1+(r.H+11)%12,l=t.length;break;default:throw"bad hour format: "+t}break;case 72:switch(t.length){case 1:case 2:c=r.H,l=t.length;break;default:throw"bad hour format: "+t}break;case 77:switch(t.length){case 1:case 2:c=r.M,l=t.length;break;default:throw"bad minute format: "+t}break;case 115:if(t!="s"&&t!="ss"&&t!=".0"&&t!=".00"&&t!=".000")throw"bad second format: "+t;return r.u===0&&(t=="s"||t=="ss")?$r(r.S,t.length):(a>=2?i=a===3?1e3:100:i=a===1?10:1,s=Math.round(i*(r.S+r.u)),s>=60*i&&(s=0),t==="s"?s===0?"0":""+s/i:(n=$r(s,2+a),t==="ss"?n.substr(0,2):"."+n.substr(2,t.length-1)));case 90:switch(t){case"[h]":case"[hh]":c=r.D*24+r.H;break;case"[m]":case"[mm]":c=(r.D*24+r.H)*60+r.M;break;case"[s]":case"[ss]":c=((r.D*24+r.H)*60+r.M)*60+Math.round(r.S+r.u);break;default:throw"bad abstime format: "+t}l=t.length===3?1:2;break;case 101:c=o,l=1;break}var f=l>0?$r(c,l):"";return f}function bt(e){var t=3;if(e.length<=t)return e;for(var r=e.length%t,a=e.substr(0,r);r!=e.length;r+=t)a+=(a.length>0?",":"")+e.substr(r,t);return a}var fo=/%/g;function Ql(e,t,r){var a=t.replace(fo,""),n=t.length-a.length;return st(e,a,r*Math.pow(10,2*n))+$e("%",n)}function ef(e,t,r){for(var a=t.length-1;t.charCodeAt(a-1)===44;)--a;return st(e,t.substr(0,a),r/Math.pow(10,3*(t.length-a)))}function ho(e,t){var r,a=e.indexOf("E")-e.indexOf(".")-1;if(e.match(/^#+0.0E\+0$/)){if(t==0)return"0.0E+0";if(t<0)return"-"+ho(e,-t);var n=e.indexOf(".");n===-1&&(n=e.indexOf("E"));var s=Math.floor(Math.log(t)*Math.LOG10E)%n;if(s<0&&(s+=n),r=(t/Math.pow(10,s)).toPrecision(a+1+(n+s)%n),r.indexOf("e")===-1){var i=Math.floor(Math.log(t)*Math.LOG10E);for(r.indexOf(".")===-1?r=r.charAt(0)+"."+r.substr(1)+"E+"+(i-r.length+s):r+="E+"+(i-s);r.substr(0,2)==="0.";)r=r.charAt(0)+r.substr(2,n)+"."+r.substr(2+n),r=r.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0.");r=r.replace(/\+-/,"-")}r=r.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(o,c,l,f){return c+l+f.substr(0,(n+s)%n)+"."+f.substr(s)+"E"})}else r=t.toExponential(a);return e.match(/E\+00$/)&&r.match(/e[+-]\d$/)&&(r=r.substr(0,r.length-1)+"0"+r.charAt(r.length-1)),e.match(/E\-/)&&r.match(/e\+/)&&(r=r.replace(/e\+/,"e")),r.replace("e","E")}var uo=/# (\?+)( ?)\/( ?)(\d+)/;function rf(e,t,r){var a=parseInt(e[4],10),n=Math.round(t*a),s=Math.floor(n/a),i=n-s*a,o=a;return r+(s===0?"":""+s)+" "+(i===0?$e(" ",e[1].length+1+e[4].length):fs(i,e[1].length)+e[2]+"/"+e[3]+$r(o,e[4].length))}function tf(e,t,r){return r+(t===0?"":""+t)+$e(" ",e[1].length+2+e[4].length)}var po=/^#*0*\.([0#]+)/,mo=/\).*[0#]/,bo=/\(###\) ###\\?-####/;function Tr(e){for(var t="",r,a=0;a!=e.length;++a)switch(r=e.charCodeAt(a)){case 35:break;case 63:t+=" ";break;case 48:t+="0";break;default:t+=String.fromCharCode(r)}return t}function ai(e,t){var r=Math.pow(10,t);return""+Math.round(e*r)/r}function ni(e,t){var r=e-Math.floor(e),a=Math.pow(10,t);return t<(""+Math.round(r*a)).length?0:Math.round(r*a)}function af(e,t){return t<(""+Math.round((e-Math.floor(e))*Math.pow(10,t))).length?1:0}function nf(e){return e<2147483647&&e>-2147483648?""+(e>=0?e|0:e-1|0):""+Math.floor(e)}function Dr(e,t,r){if(e.charCodeAt(0)===40&&!t.match(mo)){var a=t.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");return r>=0?Dr("n",a,r):"("+Dr("n",a,-r)+")"}if(t.charCodeAt(t.length-1)===44)return ef(e,t,r);if(t.indexOf("%")!==-1)return Ql(e,t,r);if(t.indexOf("E")!==-1)return ho(t,r);if(t.charCodeAt(0)===36)return"$"+Dr(e,t.substr(t.charAt(1)==" "?2:1),r);var n,s,i,o,c=Math.abs(r),l=r<0?"-":"";if(t.match(/^00+$/))return l+Vt(c,t.length);if(t.match(/^[#?]+$/))return n=Vt(r,0),n==="0"&&(n=""),n.length>t.length?n:Tr(t.substr(0,t.length-n.length))+n;if(s=t.match(uo))return rf(s,c,l);if(t.match(/^#+0+$/))return l+Vt(c,t.length-t.indexOf("0"));if(s=t.match(po))return n=ai(r,s[1].length).replace(/^([^\.]+)$/,"$1."+Tr(s[1])).replace(/\.$/,"."+Tr(s[1])).replace(/\.(\d*)$/,function(m,u){return"."+u+$e("0",Tr(s[1]).length-u.length)}),t.indexOf("0.")!==-1?n:n.replace(/^0\./,".");if(t=t.replace(/^#+([0.])/,"$1"),s=t.match(/^(0*)\.(#*)$/))return l+ai(c,s[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,s[1].length?"0.":".");if(s=t.match(/^#{1,3},##0(\.?)$/))return l+bt(Vt(c,0));if(s=t.match(/^#,##0\.([#0]*0)$/))return r<0?"-"+Dr(e,t,-r):bt(""+(Math.floor(r)+af(r,s[1].length)))+"."+$r(ni(r,s[1].length),s[1].length);if(s=t.match(/^#,#*,#0/))return Dr(e,t.replace(/^#,#*,/,""),r);if(s=t.match(/^([0#]+)(\\?-([0#]+))+$/))return n=Jt(Dr(e,t.replace(/[\\-]/g,""),r)),i=0,Jt(Jt(t.replace(/\\/g,"")).replace(/[0#]/g,function(m){return i=0?Jr("n",a,r):"("+Jr("n",a,-r)+")"}if(t.charCodeAt(t.length-1)===44)return sf(e,t,r);if(t.indexOf("%")!==-1)return of(e,t,r);if(t.indexOf("E")!==-1)return vo(t,r);if(t.charCodeAt(0)===36)return"$"+Jr(e,t.substr(t.charAt(1)==" "?2:1),r);var n,s,i,o,c=Math.abs(r),l=r<0?"-":"";if(t.match(/^00+$/))return l+$r(c,t.length);if(t.match(/^[#?]+$/))return n=""+r,r===0&&(n=""),n.length>t.length?n:Tr(t.substr(0,t.length-n.length))+n;if(s=t.match(uo))return tf(s,c,l);if(t.match(/^#+0+$/))return l+$r(c,t.length-t.indexOf("0"));if(s=t.match(po))return n=(""+r).replace(/^([^\.]+)$/,"$1."+Tr(s[1])).replace(/\.$/,"."+Tr(s[1])),n=n.replace(/\.(\d*)$/,function(m,u){return"."+u+$e("0",Tr(s[1]).length-u.length)}),t.indexOf("0.")!==-1?n:n.replace(/^0\./,".");if(t=t.replace(/^#+([0.])/,"$1"),s=t.match(/^(0*)\.(#*)$/))return l+(""+c).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,s[1].length?"0.":".");if(s=t.match(/^#{1,3},##0(\.?)$/))return l+bt(""+c);if(s=t.match(/^#,##0\.([#0]*0)$/))return r<0?"-"+Jr(e,t,-r):bt(""+r)+"."+$e("0",s[1].length);if(s=t.match(/^#,#*,#0/))return Jr(e,t.replace(/^#,#*,/,""),r);if(s=t.match(/^([0#]+)(\\?-([0#]+))+$/))return n=Jt(Jr(e,t.replace(/[\\-]/g,""),r)),i=0,Jt(Jt(t.replace(/\\/g,"")).replace(/[0#]/g,function(m){return i-1||r=="\\"&&e.charAt(t+1)=="-"&&"0#".indexOf(e.charAt(t+2))>-1););break;case"?":for(;e.charAt(++t)===r;);break;case"*":++t,(e.charAt(t)==" "||e.charAt(t)=="*")&&++t;break;case"(":case")":++t;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(;t-1;);break;case" ":++t;break;default:++t;break}return!1}function lf(e,t,r,a){for(var n=[],s="",i=0,o="",c="t",l,f,p,h="H";i=12?"P":"A"),u.t="T",h="h",i+=3):e.substr(i,5).toUpperCase()==="AM/PM"?(l!=null&&(u.v=l.H>=12?"PM":"AM"),u.t="T",i+=5,h="h"):e.substr(i,5).toUpperCase()==="上午/下午"?(l!=null&&(u.v=l.H>=12?"下午":"上午"),u.t="T",i+=5,h="h"):(u.t="t",++i),l==null&&u.t==="T")return"";n[n.length]=u,c=o;break;case"[":for(s=o;e.charAt(i++)!=="]"&&i-1&&(s=(s.match(/\$([^-\[\]]*)/)||[])[1]||"$",sa(e)||(n[n.length]={t:"t",v:s}));break;case".":if(l!=null){for(s=o;++i-1;)s+=o;n[n.length]={t:"n",v:s};break;case"?":for(s=o;e.charAt(++i)===o;)s+=o;n[n.length]={t:o,v:s},c=o;break;case"*":++i,(e.charAt(i)==" "||e.charAt(i)=="*")&&++i;break;case"(":case")":n[n.length]={t:a===1?"t":o,v:o},++i;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(s=o;i-1;)s+=e.charAt(i);n[n.length]={t:"D",v:s};break;case" ":n[n.length]={t:o,v:o},++i;break;case"$":n[n.length]={t:"t",v:"$"},++i;break;default:if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(o)===-1)throw new Error("unrecognized character "+o+" in "+e);n[n.length]={t:"t",v:o},++i;break}var b=0,T=0,S;for(i=n.length-1,c="t";i>=0;--i)switch(n[i].t){case"h":case"H":n[i].t=h,c="h",b<1&&(b=1);break;case"s":(S=n[i].v.match(/\.0+$/))&&(T=Math.max(T,S[0].length-1)),b<3&&(b=3);case"d":case"y":case"M":case"e":c=n[i].t;break;case"m":c==="s"&&(n[i].t="M",b<2&&(b=2));break;case"X":break;case"Z":b<1&&n[i].v.match(/[Hh]/)&&(b=1),b<2&&n[i].v.match(/[Mm]/)&&(b=2),b<3&&n[i].v.match(/[Ss]/)&&(b=3)}switch(b){case 0:break;case 1:l.u>=.5&&(l.u=0,++l.S),l.S>=60&&(l.S=0,++l.M),l.M>=60&&(l.M=0,++l.H);break;case 2:l.u>=.5&&(l.u=0,++l.S),l.S>=60&&(l.S=0,++l.M);break}var g="",x;for(i=0;i0){g.charCodeAt(0)==40?(P=t<0&&g.charCodeAt(0)===45?-t:t,R=st("n",g,P)):(P=t<0&&a>1?-t:t,R=st("n",g,P),P<0&&n[0]&&n[0].t=="t"&&(R=R.substr(1),n[0].v="-"+n[0].v)),x=R.length-1;var U=n.length;for(i=0;i-1){U=i;break}var I=n.length;if(U===n.length&&R.indexOf("E")===-1){for(i=n.length-1;i>=0;--i)n[i]==null||"n?".indexOf(n[i].t)===-1||(x>=n[i].v.length-1?(x-=n[i].v.length,n[i].v=R.substr(x+1,n[i].v.length)):x<0?n[i].v="":(n[i].v=R.substr(0,x+1),x=-1),n[i].t="t",I=i);x>=0&&I=0;--i)if(!(n[i]==null||"n?".indexOf(n[i].t)===-1)){for(f=n[i].v.indexOf(".")>-1&&i===U?n[i].v.indexOf(".")-1:n[i].v.length-1,A=n[i].v.substr(f+1);f>=0;--f)x>=0&&(n[i].v.charAt(f)==="0"||n[i].v.charAt(f)==="#")&&(A=R.charAt(x--)+A);n[i].v=A,n[i].t="t",I=i}for(x>=0&&I-1&&i===U?n[i].v.indexOf(".")+1:0,A=n[i].v.substr(0,f);f-1&&(P=a>1&&t<0&&i>0&&n[i-1].v==="-"?-t:t,n[i].v=st(n[i].t,n[i].v,P),n[i].t="t");var G="";for(i=0;i!==n.length;++i)n[i]!=null&&(G+=n[i].v);return G}var si=/\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;function ii(e,t){if(t==null)return!1;var r=parseFloat(t[2]);switch(t[1]){case"=":if(e==r)return!0;break;case">":if(e>r)return!0;break;case"<":if(e":if(e!=r)return!0;break;case">=":if(e>=r)return!0;break;case"<=":if(e<=r)return!0;break}return!1}function ff(e,t){var r=cf(e),a=r.length,n=r[a-1].indexOf("@");if(a<4&&n>-1&&--a,r.length>4)throw new Error("cannot find right format for |"+r.join("|")+"|");if(typeof t!="number")return[4,r.length===4||n>-1?r[r.length-1]:"@"];switch(r.length){case 1:r=n>-1?["General","General","General",r[0]]:[r[0],r[0],r[0],"@"];break;case 2:r=n>-1?[r[0],r[0],r[0],r[1]]:[r[0],r[1],r[0],"@"];break;case 3:r=n>-1?[r[0],r[1],r[0],r[2]]:[r[0],r[1],r[2],"@"];break}var s=t>0?r[0]:t<0?r[1]:r[2];if(r[0].indexOf("[")===-1&&r[1].indexOf("[")===-1)return[a,s];if(r[0].match(/\[[=<>]/)!=null||r[1].match(/\[[=<>]/)!=null){var i=r[0].match(si),o=r[1].match(si);return ii(t,i)?[a,r[0]]:ii(t,o)?[a,r[1]]:[a,r[i!=null&&o!=null?2:1]]}return[a,s]}function zr(e,t,r){r==null&&(r={});var a="";switch(typeof e){case"string":e=="m/d/yy"&&r.dateNF?a=r.dateNF:a=e;break;case"number":e==14&&r.dateNF?a=r.dateNF:a=(r.table!=null?r.table:be)[e],a==null&&(a=r.table&&r.table[ti[e]]||be[ti[e]]),a==null&&(a=jl[e]||"General");break}if(on(a,0))return Nt(t,r);t instanceof Date&&(t=lo(t,r.date1904));var n=ff(a,t);if(on(n[1]))return Nt(t,r);if(t===!0)t="TRUE";else if(t===!1)t="FALSE";else if(t===""||t==null)return"";return lf(n[1],t,r,n[0])}function it(e,t){if(typeof t!="number"){t=+t||-1;for(var r=0;r<392;++r){if(be[r]==null){t<0&&(t=r);continue}if(be[r]==e){t=r;break}}t<0&&(t=391)}return be[t]=e,t}function wn(e){for(var t=0;t!=392;++t)e[t]!==void 0&&it(e[t],t)}function ia(){be=Vl()}var hf={_table:be},uf={5:'"$"#,##0_);\\("$"#,##0\\)',6:'"$"#,##0_);[Red]\\("$"#,##0\\)',7:'"$"#,##0.00_);\\("$"#,##0.00\\)',8:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',23:"General",24:"General",25:"General",26:"General",27:"m/d/yy",28:"m/d/yy",29:"m/d/yy",30:"m/d/yy",31:"m/d/yy",32:"h:mm:ss",33:"h:mm:ss",34:"h:mm:ss",35:"h:mm:ss",36:"m/d/yy",41:'_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)',42:'_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)',43:'_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)',44:'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)',50:"m/d/yy",51:"m/d/yy",52:"m/d/yy",53:"m/d/yy",54:"m/d/yy",55:"m/d/yy",56:"m/d/yy",57:"m/d/yy",58:"m/d/yy",59:"0",60:"0.00",61:"#,##0",62:"#,##0.00",63:'"$"#,##0_);\\("$"#,##0\\)',64:'"$"#,##0_);[Red]\\("$"#,##0\\)',65:'"$"#,##0.00_);\\("$"#,##0.00\\)',66:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',67:"0%",68:"0.00%",69:"# ?/?",70:"# ??/??",71:"m/d/yy",72:"m/d/yy",73:"d-mmm-yy",74:"d-mmm",75:"mmm-yy",76:"h:mm",77:"h:mm:ss",78:"m/d/yy h:mm",79:"mm:ss",80:"[h]:mm:ss",81:"mmss.0"},wo=/[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;function df(e){var t=typeof e=="number"?be[e]:e;return t=t.replace(wo,"(\\d+)"),new RegExp("^"+t+"$")}function pf(e,t,r){var a=-1,n=-1,s=-1,i=-1,o=-1,c=-1;(t.match(wo)||[]).forEach(function(p,h){var d=parseInt(r[h+1],10);switch(p.toLowerCase().charAt(0)){case"y":a=d;break;case"d":s=d;break;case"h":i=d;break;case"s":c=d;break;case"m":i>=0?o=d:n=d;break}}),c>=0&&o==-1&&n>=0&&(o=n,n=-1);var l=(""+(a>=0?a:new Date().getFullYear())).slice(-4)+"-"+("00"+(n>=1?n:1)).slice(-2)+"-"+("00"+(s>=1?s:1)).slice(-2);l.length==7&&(l="0"+l),l.length==8&&(l="20"+l);var f=("00"+(i>=0?i:0)).slice(-2)+":"+("00"+(o>=0?o:0)).slice(-2)+":"+("00"+(c>=0?c:0)).slice(-2);return i==-1&&o==-1&&c==-1?l:a==-1&&n==-1&&s==-1?f:l+"T"+f}var mf=function(){var e={};e.version="1.2.0";function t(){for(var R=0,U=new Array(256),I=0;I!=256;++I)R=I,R=R&1?-306674912^R>>>1:R>>>1,R=R&1?-306674912^R>>>1:R>>>1,R=R&1?-306674912^R>>>1:R>>>1,R=R&1?-306674912^R>>>1:R>>>1,R=R&1?-306674912^R>>>1:R>>>1,R=R&1?-306674912^R>>>1:R>>>1,R=R&1?-306674912^R>>>1:R>>>1,R=R&1?-306674912^R>>>1:R>>>1,U[I]=R;return typeof Int32Array<"u"?new Int32Array(U):U}var r=t();function a(R){var U=0,I=0,G=0,W=typeof Int32Array<"u"?new Int32Array(4096):new Array(4096);for(G=0;G!=256;++G)W[G]=R[G];for(G=0;G!=256;++G)for(I=R[G],U=256+G;U<4096;U+=256)I=W[U]=I>>>8^R[I&255];var D=[];for(G=1;G!=16;++G)D[G-1]=typeof Int32Array<"u"?W.subarray(G*256,G*256+256):W.slice(G*256,G*256+256);return D}var n=a(r),s=n[0],i=n[1],o=n[2],c=n[3],l=n[4],f=n[5],p=n[6],h=n[7],d=n[8],m=n[9],u=n[10],b=n[11],T=n[12],S=n[13],g=n[14];function x(R,U){for(var I=U^-1,G=0,W=R.length;G>>8^r[(I^R.charCodeAt(G++))&255];return~I}function A(R,U){for(var I=U^-1,G=R.length-15,W=0;W>8&255]^T[R[W++]^I>>16&255]^b[R[W++]^I>>>24]^u[R[W++]]^m[R[W++]]^d[R[W++]]^h[R[W++]]^p[R[W++]]^f[R[W++]]^l[R[W++]]^c[R[W++]]^o[R[W++]]^i[R[W++]]^s[R[W++]]^r[R[W++]];for(G+=15;W>>8^r[(I^R[W++])&255];return~I}function P(R,U){for(var I=U^-1,G=0,W=R.length,D=0,te=0;G>>8^r[(I^D)&255]:D<2048?(I=I>>>8^r[(I^(192|D>>6&31))&255],I=I>>>8^r[(I^(128|D&63))&255]):D>=55296&&D<57344?(D=(D&1023)+64,te=R.charCodeAt(G++)&1023,I=I>>>8^r[(I^(240|D>>8&7))&255],I=I>>>8^r[(I^(128|D>>2&63))&255],I=I>>>8^r[(I^(128|te>>6&15|(D&3)<<4))&255],I=I>>>8^r[(I^(128|te&63))&255]):(I=I>>>8^r[(I^(224|D>>12&15))&255],I=I>>>8^r[(I^(128|D>>6&63))&255],I=I>>>8^r[(I^(128|D&63))&255]);return~I}return e.table=r,e.bstr=x,e.buf=A,e.str=P,e}(),pe=function(){var e={};e.version="1.2.1";function t(v,E){for(var w=v.split("/"),k=E.split("/"),y=0,_=0,M=Math.min(w.length,k.length);y>>1,v.write_shift(2,w);var k=E.getFullYear()-1980;k=k<<4|E.getMonth()+1,k=k<<5|E.getDate(),v.write_shift(2,k)}function s(v){var E=v.read_shift(2)&65535,w=v.read_shift(2)&65535,k=new Date,y=w&31;w>>>=5;var _=w&15;w>>>=4,k.setMilliseconds(0),k.setFullYear(w+1980),k.setMonth(_-1),k.setDate(y);var M=E&31;E>>>=5;var z=E&63;return E>>>=6,k.setHours(E),k.setMinutes(z),k.setSeconds(M<<1),k}function i(v){lr(v,0);for(var E={},w=0;v.l<=v.length-4;){var k=v.read_shift(2),y=v.read_shift(2),_=v.l+y,M={};switch(k){case 21589:w=v.read_shift(1),w&1&&(M.mtime=v.read_shift(4)),y>5&&(w&2&&(M.atime=v.read_shift(4)),w&4&&(M.ctime=v.read_shift(4))),M.mtime&&(M.mt=new Date(M.mtime*1e3));break}v.l=_,E[k]=M}return E}var o;function c(){return o||(o={})}function l(v,E){if(v[0]==80&&v[1]==75)return Js(v,E);if((v[0]|32)==109&&(v[1]|32)==105)return _l(v,E);if(v.length<512)throw new Error("CFB file size "+v.length+" < 512");var w=3,k=512,y=0,_=0,M=0,z=0,B=0,H=[],V=v.slice(0,512);lr(V,0);var Z=f(V);switch(w=Z[0],w){case 3:k=512;break;case 4:k=4096;break;case 0:if(Z[1]==0)return Js(v,E);default:throw new Error("Major Version: Expected 3 or 4 saw "+w)}k!==512&&(V=v.slice(0,k),lr(V,28));var oe=v.slice(0,k);p(V,w);var ce=V.read_shift(4,"i");if(w===3&&ce!==0)throw new Error("# Directory Sectors: Expected 0 saw "+ce);V.l+=4,M=V.read_shift(4,"i"),V.l+=4,V.chk("00100000","Mini Stream Cutoff Size: "),z=V.read_shift(4,"i"),y=V.read_shift(4,"i"),B=V.read_shift(4,"i"),_=V.read_shift(4,"i");for(var ie=-1,he=0;he<109&&(ie=V.read_shift(4,"i"),!(ie<0));++he)H[he]=ie;var Ae=h(v,k);u(B,_,Ae,k,H);var He=T(Ae,M,H,k);He[M].name="!Directory",y>0&&z!==D&&(He[z].name="!MiniFAT"),He[H[0]].name="!FAT",He.fat_addrs=H,He.ssz=k;var Ge={},Ar=[],fa=[],ha=[];S(M,He,Ae,Ar,y,Ge,fa,z),d(fa,ha,Ar),Ar.shift();var ua={FileIndex:fa,FullPaths:ha};return E&&E.raw&&(ua.raw={header:oe,sectors:Ae}),ua}function f(v){if(v[v.l]==80&&v[v.l+1]==75)return[0,0];v.chk(te,"Header Signature: "),v.l+=16;var E=v.read_shift(2,"u");return[v.read_shift(2,"u"),E]}function p(v,E){var w=9;switch(v.l+=2,w=v.read_shift(2)){case 9:if(E!=3)throw new Error("Sector Shift: Expected 9 saw "+w);break;case 12:if(E!=4)throw new Error("Sector Shift: Expected 12 saw "+w);break;default:throw new Error("Sector Shift: Expected 9 or 12 saw "+w)}v.chk("0600","Mini Sector Shift: "),v.chk("000000000000","Reserved: ")}function h(v,E){for(var w=Math.ceil(v.length/E)-1,k=[],y=1;y0&&M>=0;)_.push(E.slice(M*W,M*W+W)),y-=W,M=At(w,M*4);return _.length===0?j(0):ir(_).slice(0,v.size)}function u(v,E,w,k,y){var _=D;if(v===D){if(E!==0)throw new Error("DIFAT chain shorter than expected")}else if(v!==-1){var M=w[v],z=(k>>>2)-1;if(!M)return;for(var B=0;B=0;){y[B]=!0,_[_.length]=B,M.push(v[B]);var V=w[Math.floor(B*4/k)];if(H=B*4&z,k<4+H)throw new Error("FAT boundary crossed: "+B+" 4 "+k);if(!v[V])break;B=At(v[V],H)}return{nodes:_,data:gi([M])}}function T(v,E,w,k){var y=v.length,_=[],M=[],z=[],B=[],H=k-1,V=0,Z=0,oe=0,ce=0;for(V=0;V=y&&(oe-=y),!M[oe]){B=[];var ie=[];for(Z=oe;Z>=0;){ie[Z]=!0,M[Z]=!0,z[z.length]=Z,B.push(v[Z]);var he=w[Math.floor(Z*4/k)];if(ce=Z*4&H,k<4+ce)throw new Error("FAT boundary crossed: "+Z+" 4 "+k);if(!v[he]||(Z=At(v[he],ce),ie[Z]))break}_[oe]={nodes:z,data:gi([B])}}return _}function S(v,E,w,k,y,_,M,z){for(var B=0,H=k.length?2:0,V=E[v].data,Z=0,oe=0,ce;Z0&&B!==D&&(E[B].name="!StreamData")):he.size>=4096?(he.storage="fat",E[he.start]===void 0&&(E[he.start]=b(w,he.start,E.fat_addrs,E.ssz)),E[he.start].name=he.name,he.content=E[he.start].data.slice(0,he.size)):(he.storage="minifat",he.size<0?he.size=0:B!==D&&he.start!==D&&E[B]&&(he.content=m(he,E[B].data,(E[z]||{}).data))),he.content&&lr(he.content,0),_[ce]=he,M.push(he)}}function g(v,E){return new Date((Rr(v,E+4)/1e7*Math.pow(2,32)+Rr(v,E)/1e7-11644473600)*1e3)}function x(v,E){return c(),l(o.readFileSync(v),E)}function A(v,E){var w=E&&E.type;switch(w||Se&&Buffer.isBuffer(v)&&(w="buffer"),w||"base64"){case"file":return x(v,E);case"base64":return l(Or(Ir(v)),E);case"binary":return l(Or(v),E)}return l(v,E)}function P(v,E){var w=E||{},k=w.root||"Root Entry";if(v.FullPaths||(v.FullPaths=[]),v.FileIndex||(v.FileIndex=[]),v.FullPaths.length!==v.FileIndex.length)throw new Error("inconsistent CFB structure");v.FullPaths.length===0&&(v.FullPaths[0]=k+"/",v.FileIndex[0]={name:k,type:5}),w.CLSID&&(v.FileIndex[0].clsid=w.CLSID),R(v)}function R(v){var E="Sh33tJ5";if(!pe.find(v,"/"+E)){var w=j(4);w[0]=55,w[1]=w[3]=50,w[2]=54,v.FileIndex.push({name:E,type:2,content:w,size:4,L:69,R:69,C:69}),v.FullPaths.push(v.FullPaths[0]+E),U(v)}}function U(v,E){P(v);for(var w=!1,k=!1,y=v.FullPaths.length-1;y>=0;--y){var _=v.FileIndex[y];switch(_.type){case 0:k?w=!0:(v.FileIndex.pop(),v.FullPaths.pop());break;case 1:case 2:case 5:k=!0,isNaN(_.R*_.L*_.C)&&(w=!0),_.R>-1&&_.L>-1&&_.R==_.L&&(w=!0);break;default:w=!0;break}}if(!(!w&&!E)){var M=new Date(1987,1,19),z=0,B=Object.create?Object.create(null):{},H=[];for(y=0;y1?1:-1,Z.size=0,Z.type=5;else if(oe.slice(-1)=="/"){for(z=y+1;z=H.length?-1:z,z=y+1;z=H.length?-1:z,Z.type=1}else r(v.FullPaths[y+1]||"")==r(oe)&&(Z.R=y+1),Z.type=2}}}function I(v,E){var w=E||{};if(w.fileType=="mad")return xl(v,w);switch(U(v),w.fileType){case"zip":return wl(v,w)}var k=function(ce){for(var ie=0,he=0,Ae=0;Ae0&&(Ge<4096?ie+=Ge+63>>6:he+=Ge+511>>9)}}for(var Ar=ce.FullPaths.length+3>>2,fa=ie+7>>3,ha=ie+127>>7,ua=fa+he+Ar+ha,xt=ua+127>>7,Rn=xt<=109?0:Math.ceil((xt-109)/127);ua+xt+Rn+127>>7>xt;)Rn=++xt<=109?0:Math.ceil((xt-109)/127);var at=[1,Rn,xt,ha,Ar,he,ie,0];return ce.FileIndex[0].size=ie<<6,at[7]=(ce.FileIndex[0].start=at[0]+at[1]+at[2]+at[3]+at[4]+at[5])+(at[6]+7>>3),at}(v),y=j(k[7]<<9),_=0,M=0;{for(_=0;_<8;++_)y.write_shift(1,fe[_]);for(_=0;_<8;++_)y.write_shift(2,0);for(y.write_shift(2,62),y.write_shift(2,3),y.write_shift(2,65534),y.write_shift(2,9),y.write_shift(2,6),_=0;_<3;++_)y.write_shift(2,0);for(y.write_shift(4,0),y.write_shift(4,k[2]),y.write_shift(4,k[0]+k[1]+k[2]+k[3]-1),y.write_shift(4,0),y.write_shift(4,4096),y.write_shift(4,k[3]?k[0]+k[1]+k[2]-1:D),y.write_shift(4,k[3]),y.write_shift(-4,k[1]?k[0]-1:D),y.write_shift(4,k[1]),_=0;_<109;++_)y.write_shift(-4,_>9)));for(z(k[6]+7>>3);y.l&511;)y.write_shift(-4,de.ENDOFCHAIN);for(M=_=0,B=0;B=4096)&&(V.start=M,z(H+63>>6)));for(;y.l&511;)y.write_shift(-4,de.ENDOFCHAIN);for(_=0;_=4096)if(y.l=V.start+1<<9,Se&&Buffer.isBuffer(V.content))V.content.copy(y,y.l,0,V.size),y.l+=V.size+511&-512;else{for(B=0;B0&&V.size<4096)if(Se&&Buffer.isBuffer(V.content))V.content.copy(y,y.l,0,V.size),y.l+=V.size+63&-64;else{for(B=0;B>16|E>>8|E)&255}for(var J=typeof Uint8Array<"u",Q=J?new Uint8Array(256):[],q=0;q<256;++q)Q[q]=ne(q);function Ee(v,E){var w=Q[v&255];return E<=8?w>>>8-E:(w=w<<8|Q[v>>8&255],E<=16?w>>>16-E:(w=w<<8|Q[v>>16&255],w>>>24-E))}function O(v,E){var w=E&7,k=E>>>3;return(v[k]|(w<=6?0:v[k+1]<<8))>>>w&3}function Me(v,E){var w=E&7,k=E>>>3;return(v[k]|(w<=5?0:v[k+1]<<8))>>>w&7}function Oe(v,E){var w=E&7,k=E>>>3;return(v[k]|(w<=4?0:v[k+1]<<8))>>>w&15}function De(v,E){var w=E&7,k=E>>>3;return(v[k]|(w<=3?0:v[k+1]<<8))>>>w&31}function xe(v,E){var w=E&7,k=E>>>3;return(v[k]|(w<=1?0:v[k+1]<<8))>>>w&127}function le(v,E,w){var k=E&7,y=E>>>3,_=(1<>>k;return w<8-k||(M|=v[y+1]<<8-k,w<16-k)||(M|=v[y+2]<<16-k,w<24-k)||(M|=v[y+3]<<24-k),M&_}function rr(v,E,w){var k=E&7,y=E>>>3;return k<=5?v[y]|=(w&7)<>8-k),E+3}function Gr(v,E,w){var k=E&7,y=E>>>3;return w=(w&1)<>>3;return w<<=k,v[y]|=w&255,w>>>=8,v[y+1]=w,E+8}function la(v,E,w){var k=E&7,y=E>>>3;return w<<=k,v[y]|=w&255,w>>>=8,v[y+1]=w&255,v[y+2]=w>>>8,E+16}function Gt(v,E){var w=v.length,k=2*w>E?2*w:E+5,y=0;if(w>=E)return v;if(Se){var _=Qs(k);if(v.copy)v.copy(_);else for(;y>k-Z,M=(1<=0;--M)E[z|M<0;)z[z.l++]=M[B++]}return z.l}function _(M,z){for(var B=0,H=0,V=J?new Uint16Array(32768):[];H0;)z[z.l++]=M[H++];B=z.l*8;continue}B=rr(z,B,+(H+Z==M.length)+2);for(var oe=0;Z-- >0;){var ce=M[H];oe=(oe<<5^ce)&32767;var ie=-1,he=0;if((ie=V[oe])&&(ie|=H&-32768,ie>H&&(ie-=32768),ie2){ce=k[he],ce<=22?B=wr(z,B,Q[ce+1]>>1)-1:(wr(z,B,3),B+=5,wr(z,B,Q[ce-23]>>5),B+=3);var Ae=ce<8?0:ce-4>>2;Ae>0&&(la(z,B,he-N[ce]),B+=Ae),ce=v[H-ie],B=wr(z,B,Q[ce]>>3),B-=3;var He=ce<4?0:ce-2>>1;He>0&&(la(z,B,H-ie-X[ce]),B+=He);for(var Ge=0;Ge>8-ie;for(var he=(1<<7-ie)-1;he>=0;--he)tr[ce|he<>>=3){case 16:for(_=3+O(v,E),E+=2,ce=Ae[Ae.length-1];_-- >0;)Ae.push(ce);break;case 17:for(_=3+Me(v,E),E+=3;_-- >0;)Ae.push(0);break;case 18:for(_=11+xe(v,E),E+=7;_-- >0;)Ae.push(0);break;default:Ae.push(ce),B>>0,z=0,B=0;!(k&1);){if(k=Me(v,w),w+=3,k>>>1)k>>1==1?(z=9,B=5):(w=bl(v,w),z=_t,B=Xs);else{w&7&&(w+=8-(w&7));var H=v[w>>>3]|v[(w>>>3)+1]<<8;if(w+=32,H>0)for(!E&&M<_+H&&(y=Gt(y,_+H),M=y.length);H-- >0;)y[_++]=v[w>>>3],w+=8;continue}for(;;){!E&&M<_+32767&&(y=Gt(y,_+32767),M=y.length);var V=le(v,w,z),Z=k>>>1==1?ut[V]:Ue[V];if(w+=Z&15,Z>>>=4,!(Z>>>8&255))y[_++]=Z;else{if(Z==256)break;Z-=257;var oe=Z<8?0:Z-4>>2;oe>5&&(oe=0);var ce=_+N[Z];oe>0&&(ce+=le(v,w,oe),w+=oe),V=le(v,w,B),Z=k>>>1==1?dt[V]:Fr[V],w+=Z&15,Z>>>=4;var ie=Z<4?0:Z-2>>1,he=X[Z];for(ie>0&&(he+=le(v,w,ie),w+=ie),!E&&M>>3]:[y.slice(0,_),w+7>>>3]}function Ys(v,E){var w=v.slice(v.l||0),k=vl(w,E);return v.l+=k[1],k[0]}function Ks(v,E){if(v)typeof console<"u"&&console.error(E);else throw new Error(E)}function Js(v,E){var w=v;lr(w,0);var k=[],y=[],_={FileIndex:k,FullPaths:y};P(_,{root:E.root});for(var M=w.length-4;(w[M]!=80||w[M+1]!=75||w[M+2]!=5||w[M+3]!=6)&&M>=0;)--M;w.l=M+4,w.l+=4;var z=w.read_shift(2);w.l+=6;var B=w.read_shift(4);for(w.l=B,M=0;Mi.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PublicHome-4L60krmd.js","assets/PublicHome-DJV5lKWp.css","assets/LoginView-CdDWJNab.js","assets/LoginView-CvZfAeZ0.css","assets/AdminLayout-ltF-ui71.js","assets/AdminLayout-BbmuxEs9.css","assets/UserManage-DDgTVhjY.js","assets/list-query-4ZZvVtjn.js","assets/RoleManage-7Ni_fgq0.js","assets/RoleManage-DVUY3tTJ.css","assets/MenuManage-BEleckEE.js","assets/SettingManage-D3eSU6jo.js","assets/SettingManage-DcldOeo6.css"])))=>i.map(i=>d[i]); (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))a(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const l of r.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&a(l)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function a(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();/** * @vue/shared v3.5.34 * (c) 2018-present Yuxi (Evan) You and Vue contributors @@ -94,7 +94,7 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`),{initialZIndex:a,curr callback failed before deep iterate at: `+t(r.path)),p}}if(u)break;r.res!==!1&&!u&&!r.isCircular&&r.info.isObject&&(l.childrenPath!==void 0&&(r.depth||!l.rootIsChildren)?(r.childrenItems=[],r.children.length&&r.children.forEach(([f,p,m,h])=>{r.childrenItems=[...r.childrenItems,...h.isArray?a(r,m,l,f,p):o(r,m,l,f,p)]})):r.childrenItems=r.info.isArray?a(r,r.value,l,[],""):o(r,r.value,l,[],"")),r.currentChildIndex=-1}if(r.childrenItems&&r.currentChildIndex=0;l--)r.childrenPath[l]=jL(r.strChildrenPath[l])}return t({value:a,callback:o,options:r,obj:a}),a}return n}const z1e=B1e({isString:Nd}),H1e={forEachDeep:z1e},j1e={omit(e,...t){const n=Object.keys(e.value),a={};for(const o of n)o!=="loading"&&(t.indexOf(o)>=0||(a[o]=e.value[o]));return a}};function q8(e){const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.opacity="0",t.style.pointerEvents="none",t.style.zIndex="-1",document.body.appendChild(t);try{t.select(),t.setSelectionRange(0,99999);const n=document.execCommand("copy");return document.body.removeChild(t),n?!0:(console.error("传统复制方法失败"),!1)}catch(n){return console.error("传统复制方法出错: ",n),document.body.removeChild(t),!1}}async function K1e(e){try{return!navigator.clipboard||!navigator.clipboard.writeText?(console.warn("Clipboard API not supported, falling back to traditional method"),q8(e)):(await navigator.clipboard.writeText(e),!0)}catch(t){return console.error("复制失败: ",t),q8(e)}}async function W1e(){return new Promise((e,t)=>{const n=document.createElement("textarea");n.style.position="fixed",n.style.top="0",n.style.left="0",n.style.opacity="0",document.body.appendChild(n);try{if(n.focus(),document.execCommand("paste")){const a=n.value;document.body.removeChild(n),e(a)}else document.body.removeChild(n),t(new Error("传统读取方法失败"))}finally{document.body.removeChild(n)}})}async function q1e(){try{if(!navigator.clipboard||!navigator.clipboard.readText)throw console.warn("Clipboard API not supported for reading"),new Error("浏览器不支持读取剪贴板");if(navigator.permissions&&(await navigator.permissions.query({name:"clipboard-read"})).state==="denied")throw new Error("剪贴板读取权限被拒绝");return await navigator.clipboard.readText()}catch(e){return console.error("读取剪贴板失败: ",e),await W1e()}}const sb=Nt({store:{}});function U1e(e,t="__default__"){sb.store[t]=e}function Y1e(e="__default__"){return sb.store[e]}function G1e(e="__default__"){sb.store[e]=""}const X1e=Object.freeze(Object.defineProperty({__proto__:null,clearMemoryClipboard:G1e,copyToClipboard:K1e,copyToMemory:U1e,readToClipboard:q1e,readToMemory:Y1e},Symbol.toStringTag,{value:"Module"})),ys={logger:Lt,dash:j1e,clipboard:X1e},Zd={commonOptions(e){return{}},defaultOptions(e){const{t,crudOptionsRef:n}=e,a=r=>x(()=>t(r)),o=zn.get();return{settings:{plugins:{mobile:{enabled:!0,props:{isMobile:x(()=>window.innerWidth<768)}}}},mode:{},status:{},search:{container:{is:"fs-search-layout-default",collapse:!0,col:{span:4}},formItem:{wrapperCol:{style:{}}},options:{...o.form.inlineLayout,showFeedback:!1},onValidateError({trigger:r}){r==="search"&&o.notification.error({message:t("fs.search.error.message")})},collapse:!0,show:!0,buttons:{search:{className:{"fs-search-btn-search":!0},icon:o.icons.search},reset:{className:{"fs-search-btn-reset":!0},icon:o.icons.refresh}}},form:{pasteKey:"__default__",labelPlacement:"left",labelPosition:"right",labelWidth:"120px",style:{"grid-template-columns":"50% 50%"},row:{gutter:10},col:{span:12},labelAlign:"right",labelCol:{span:4},wrapperCol:{span:18},wrapper:{is:o.dialog.name,...o.formWrapper.buildWidthBind(o.dialog.name,"960px"),...o.formWrapper.buildInitBind(o.dialog.name),dragenabled:!0,destroyOnClose:!0,...o.dialog.footer(),buttons:{copy:{text:a("fs.form.copy"),order:1,click:async({form:r})=>{var l,s;const i=(s=(l=n.value)==null?void 0:l.form)==null?void 0:s.pasteKey;ys.clipboard.copyToMemory(JSON.stringify(r),i),o.message.success(t("fs.form.copySuccess"))}},paste:{text:a("fs.form.paste"),order:2,badge:x(()=>{var r,l;const s=(l=(r=n.value)==null?void 0:r.form)==null?void 0:l.pasteKey,i=ys.clipboard.readToMemory(s);return{[o.badge.value]:i?1:0,[o.badge.dot]:!!i}}),click:async({form:r})=>{var l,s;const i=(s=(l=n.value)==null?void 0:l.form)==null?void 0:s.pasteKey,u=ys.clipboard.readToMemory(i);if(u)try{const c=JSON.parse(u);Fs(r,c)}catch(c){console.error(c)}finally{ys.clipboard.clearMemoryClipboard(i)}}},cancel:{text:a("fs.form.cancel"),order:4,click:({doClose:r})=>{r()}},reset:{text:a("fs.form.reset"),order:3,click:({reset:r})=>{r()}},ok:{text:a("fs.form.ok"),order:5,type:"primary",click:async({submit:r})=>{await r()}}}}},addForm:{mode:"add",wrapper:{title:a("fs.addForm.title")}},editForm:{mode:"edit",wrapper:{title:a("fs.editForm.title")}},viewForm:{mode:"view",wrapper:{title:a("fs.viewForm.title"),buttons:{reset:{show:!1},cancel:{show:!1}}}},rowHandle:{width:250,title:a("fs.rowHandle.title"),order:1e3,dropdown:{more:{text:null,type:"primary",icon:o.icons.more}}},pagination:{background:!0,pageSize:20,[o.pagination.currentPage]:1,[o.pagination.total]:1,pageSizes:[5,10,20,50],layout:"total, sizes, prev, pager, next, jumper",showSizeChanger:!0,showQuickJumper:!0,showSizePicker:!0,showTotal:r=>t("fs.pagination.showTotal",[r])},table:{show:!0,height:"100%",rowKey:o.table.defaultRowKey,stripe:!0,border:!0,bordered:!0,singleLine:!1,scrollTopOnRefreshed:!0,editable:{enabled:!1,rowKey:"$editable_id"},pagination:!1},toolbar:{compact:!0,buttons:{search:{className:{"fs-toolbar-btn-search":!0}},compact:{className:{"fs-toolbar-btn-compact":!0}},refresh:{className:{"fs-toolbar-btn-refresh":!0}},export:{className:{"fs-toolbar-btn-export":!0}},columns:{className:{"fs-toolbar-btn-columns":!0}}}},actionbar:{buttons:{add:{className:{"fs-actionbar-btn-add":!0},type:"primary",text:a("fs.actionbar.add")}}}}}};function fv(e,t){return e.type!=="antdv"?{}:{labelCol:{span:t},wrapperCol:{span:23-t}}}function J1e(){const{ui:e}=sn();return{colspan:{form:{col:{span:24},...fv(e,2)}},colspan3:{form:{col:{span:24},...fv(e,3)}},colspan4:{form:{col:{span:24},...fv(e,4)}}}}const Z1e=Object.freeze(Object.defineProperty({__proto__:null,default:J1e},Symbol.toStringTag,{value:"Module"}));function Q1e(){const e=zn.get();return{button:{form:{component:{name:e.input.name,vModel:e.input.modelValue,[e.input.clearable]:!0}},column:{component:{name:"fs-button",vModel:"text"}}},link:{form:{component:{name:e.input.name,vModel:e.input.modelValue,[e.input.clearable]:!0}},column:{component:{name:"fs-button",vModel:"text",...e.button.linkType}}}}}const e4e=Object.freeze(Object.defineProperty({__proto__:null,default:Q1e},Symbol.toStringTag,{value:"Module"}));function t4e(){const e=zn.get();return{"dict-cascader":{search:{component:{clearable:!0}},form:{component:{name:"fs-dict-cascader",vModel:e.cascader.modelValue,[e.cascader.clearable]:!0}},column:{component:{name:"fs-dict-cascader-format"}}}}}const n4e=Object.freeze(Object.defineProperty({__proto__:null,default:t4e},Symbol.toStringTag,{value:"Module"})),f7={name:"zh-cn",fs:{component:{select:{placeholder:"请选择"}},addForm:{title:"添加"},editForm:{title:"编辑"},viewForm:{title:"查看"},rowHandle:{title:"操作",remove:{text:"删除",confirmTitle:"删除提示",confirmMessage:"您确定要删除该记录吗?",success:"删除成功!",confirmText:"确定",cancelText:"取消"},copy:{text:"复制"},edit:{text:"编辑"},view:{text:"查看"}},form:{cancel:"取消",ok:"确定",reset:"重置",saveRemind:{title:"提示",content:"表单数据有变更,是否保存",cancel:"不保存",ok:"保存"},copy:"复制",paste:"粘贴",copySuccess:"表单数据已复制,您可以在添加对话框中粘贴"},actionbar:{add:"添加"},toolbar:{columnFilter:{title:"列设置",fixed:"固定",order:"排序",reset:"还原",confirm:"确定",unnamed:"未命名"},search:{title:"查询显示"},refresh:{title:"刷新"},compact:{title:"紧凑模式"},export:{title:"导出"},columns:{title:"列设置"}},search:{container:{collapseButton:{text:{collapse:"收起",expand:"展开"}}},search:{text:"查询"},reset:{text:"重置"},error:{message:"查询表单校验失败"}},pagination:{showTotal:"共 {0} 条"},date:{formatter:{to:"至"}},extends:{tableSelect:{view:"查看",select:"选择",ok:"确定",cancel:"取消"},cropper:{title:"图片裁剪",preview:"预览",reChoose:"重新选择",flipX:"左右翻转",flipY:"上下翻转",reset:"重置",cancel:"取消",confirm:"确定",chooseImage:"+ 选择图片",onlySupport:"仅支持",sizeLimit:"大小不能超过",sizeNoLimit:"大小不限制"},fileUploader:{text:"文件上传",limitTip:"文件数量不能超过 {0}",sizeLimitTip:"文件大小不能超过 {0},当前大小:{1}",loadError:"图片加载失败",pixelLimitTip:"图片像素尺寸不能超过 宽:{0},高:{1}",hasUploading:"还有文件正在上传,请等待上传完成,或删除它"}}}},a4e={fs:{component:{select:{placeholder:"please select"}},addForm:{title:"add"},editForm:{title:"edit"},viewForm:{title:"view"},rowHandle:{title:"handle",remove:{text:"remove",confirmTitle:"remove tip",confirmMessage:"Are you sure you want to delete this record?",success:"delete success!",confirmText:"confirm",cancelText:"cancel"},copy:{text:"copy"},edit:{text:"edit"},view:{text:"view"}},form:{cancel:"cancel",ok:"ok",reset:"reset",saveRemind:{title:"save remind",content:"The form data has changed, whether to save",cancel:"don't save",ok:"save"},copy:"copy",paste:"paste"},actionbar:{add:"add"},toolbar:{columnFilter:{title:"columns set",fixed:"fixed",order:"sort",reset:"reset",confirm:"ok",unnamed:"unnamed"},search:{title:"show search bar"},refresh:{title:"refresh"},compact:{title:"compact mode"},export:{title:"export"},columns:{title:"columns set"}},search:{container:{collapseButton:{text:{collapse:"collapse",expand:"expand"}}},search:{text:"search"},reset:{text:"reset"},error:{message:"form valid error"}},pagination:{showTotal:"Total {0} items"},date:{formatter:{to:"to"}},extends:{tableSelect:{view:"view",select:"select"},cropper:{title:"image crop",preview:"preview",reChoose:"reChoose",flipX:"flipX",flipY:"flipY",reset:"reset",cancel:"cancel",confirm:"confirm",chooseImage:"+ choose image",onlySupport:"only",sizeLimit:"size limit",sizeNoLimit:" no limit"},fileUploader:{text:"fileUpload",limitTip:"file count limit: {0}",sizeLimitTip:"file size limit: {0}, current size: {1}",loadError:"image load error",pixelLimitTip:"pixel limit : width:{0},height:{1}",hasUploading:"The file is being uploaded, please wait for the upload to complete or delete"}}}};function o4e(e,t){let n=on(f7,e);return n==null?e:t instanceof Array?(dt(t,(a,o)=>{n=n.replace("{"+o+"}",a)}),n):n.replace("{n}",t)}class r4e{constructor(){$t(this,"vueI18nInstance",null)}t(t,n){return o4e(t,n)}setVueI18n(t){if(!t)return;t.global&&(t=t.global);const n=t.availableLocales;for(const a of n){if(a.startsWith("zh")){const o=t.getLocaleMessage(a),r=Kn(o.fs||{});t.mergeLocaleMessage(a,{fs:f7.fs}),t.mergeLocaleMessage(a,{fs:r})}else if(a.startsWith("en")){const o=t.getLocaleMessage(a),r=Kn(o.fs||{});t.mergeLocaleMessage(a,{fs:a4e.fs}),t.mergeLocaleMessage(a,{fs:r})}Lt.debug("i18n",t.getLocaleMessage(a))}this.vueI18nInstance=t}}const jp=new r4e;function ao(){return jp.vueI18nInstance!=null?{t:jp.vueI18nInstance.t}:{t:jp.t}}var tm=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function nm(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var p7={exports:{}};(function(e,t){(function(n,a){e.exports=a()})(tm,function(){return function(n,a){var o=a.prototype,r=o.format;o.format=function(l){var s=this,i=this.$locale();if(!this.isValid())return r.bind(this)(l);var u=this.$utils(),c=(l||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(f){switch(f){case"Q":return Math.ceil((s.$M+1)/3);case"Do":return i.ordinal(s.$D);case"gggg":return s.weekYear();case"GGGG":return s.isoWeekYear();case"wo":return i.ordinal(s.week(),"W");case"w":case"ww":return u.s(s.week(),f==="w"?1:2,"0");case"W":case"WW":return u.s(s.isoWeek(),f==="W"?1:2,"0");case"k":case"kk":return u.s(String(s.$H===0?24:s.$H),f==="k"?1:2,"0");case"X":return Math.floor(s.$d.getTime()/1e3);case"x":return s.$d.getTime();case"z":return"["+s.offsetName()+"]";case"zzz":return"["+s.offsetName("long")+"]";default:return f}});return r.bind(this)(c)}}})})(p7);var l4e=p7.exports;const s4e=nm(l4e);tt.extend(s4e);function pv(e,t){if(!i7.isEmpty(e))return tt(e).format(t)}function h7(e,t="YYYY-MM-DD HH:mm:ss"){if(e!=null&&e instanceof Array&&e.length>1){if(i7.hasEmpty(e))return;const{t:n}=ao();return`${pv(e[0],t)} ${n("fs.date.formatter.to")} ${pv(e[1],t)}`}return pv(e,t)}function i4e(e){const{value:t}=e;return h7(t,"YYYY-MM-DD")}function u4e(e){const{value:t}=e;return h7(t,"YYYY-MM-DD HH:mm:ss")}var m7={exports:{}};(function(e,t){(function(n,a){e.exports=a()})(tm,function(){var n="week",a="year";return function(o,r,l){var s=r.prototype;s.week=function(i){if(i===void 0&&(i=null),i!==null)return this.add(7*(i-this.week()),"day");var u=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var c=l(this).startOf(a).add(1,a).date(u),f=l(this).endOf(n);if(c.isBefore(f))return 1}var p=l(this).startOf(a).date(u).startOf(n).subtract(1,"millisecond"),m=this.diff(p,n,!0);return m<0?l(this).startOf("week").week():Math.ceil(m)},s.weeks=function(i){return i===void 0&&(i=null),this.week(i)}}})})(m7);var c4e=m7.exports;const d4e=nm(c4e);var v7={exports:{}};(function(e,t){(function(n,a){e.exports=a()})(tm,function(){return function(n,a){a.prototype.weekday=function(o){var r=this.$locale().weekStart||0,l=this.$W,s=(l{b7.push(e.default)});const Qd={};function P4e(){return Qd}function N4e(e){return Qd[e]}function I4e(e){for(const t in e)Qd[t]=e[t]}const y7={getType:N4e,addTypes:I4e,getTypes:P4e,install(){for(const e of b7)dt(e(),(t,n)=>{Qd[n]=t});Lt.debug("types installed:",Qd)}},V4e=K({name:"FsPage",setup(){const e=F();return gt(()=>{window.getComputedStyle(e.value.parentNode).getPropertyValue("position")!=="relative"&&ys.logger.warn("fs-page父节点的position建议为relative,因为fs-page为相对定位(position:absolute),如果样式没有异常,你可以忽略此警告")}),{pageRef:e}}}),Rn=(e,t)=>{const n=e.__vccOpts||e;for(const[a,o]of t)n[a]=o;return n},L4e={ref:"pageRef",class:"fs-page"},F4e={key:0,class:"fs-page-header"},D4e={class:"fs-page-content"},B4e={key:1,class:"fs-page-footer"};function z4e(e,t,n,a,o,r){return C(),A("div",L4e,[e.$slots.header!=null?(C(),A("div",F4e,[re(e.$slots,"header")])):le("",!0),M("div",D4e,[re(e.$slots,"default")]),e.$slots.footer!=null?(C(),A("div",B4e,[re(e.$slots,"footer")])):le("",!0)],512)}const H4e=Rn(V4e,[["render",z4e]]);function vg(e){return e!=null&&(e instanceof w7||nn(e)||Qa(e))}function U8(e){return vg(e)&&!e.cloneable}function j4e(e,...t){function n(o,r){if(r!=null&&(Un(o)||vg(r)))return r}let a=null;for(const o of t)vg(o)&&(a=o);return a||UV(e,...t,n)}function K4e(e){if(U8(e))return e;function t(n){if(U8(n))return n}return eV(e,t)}let w7=class{constructor(){$t(this,"cloneable",!1)}setCloneable(e){this.cloneable=e}};function _n(){return{merge:j4e,cloneDeep:K4e,UnMergeable:w7}}const{cloneDeep:W4e}=_n();function q4e(e){return e instanceof ib}function U4e(e){return e instanceof am}function Y8(e,t,n){const a={};if(e==null)return a;const o=n?q4e:U4e;return H1e.forEachDeep(e,(r,l,s,i)=>{if(r==null)return!1;if(o(r)){const u=i.path;if(t){for(const c of t)if(typeof c=="string"){if(u.startsWith(c))return!1}else if(c instanceof RegExp&&c.test(u))return!0}return a[u]=r,!1}return!Qa(r)},{checkCircular:!0}),a}function Y4e(e,t){if(e==null||Object.keys(e).length<=0)return null;const n={};return dt(e,(a,o)=>{n[o]=a.buildAsyncRef(t)}),n}function G4e(e,t){t==null||Object.keys(t).length<=0||dt(t,(n,a)=>{Zn(e,a,n.value==null?null:n.value)})}function X4e(e,t,n,a){const o=x(()=>{const s=e();return Y8(s,n,!1)}),r=x(()=>{const s=e();return Y8(s,n,!0)}),l=Y4e(r.value,t);return x(()=>{let s=e();const i=Object.keys(r.value).length,u=Object.keys(o.value).length;if(i>0||u>0){if(s=W4e(s),u>0){const c=t?t():{};dt(o.value,(f,p)=>{Zn(s,p,f.computeFn(c))})}i>0&&G4e(s,l)}return a?a(s):s})}class am{constructor(t){$t(this,"computeFn"),this.computeFn=t}}function J4e(e){return new am(e)}class ib{constructor(t){$t(this,"watch"),$t(this,"asyncFn"),$t(this,"defaultValue");const{asyncFn:n,defaultValue:a}=t;this.watch=t.watch,this.asyncFn=n,this.defaultValue=a}buildAsyncRef(t){t=t||function(){};const n=F(this.defaultValue),a=x(()=>this.watch?this.watch(t()):null);return pe(()=>a.value,async o=>{n.value=await this.asyncFn(o,t())},{immediate:!0}),n}}function Z4e(e){return new ib(e)}function kr(){return{ComputeValue:am,compute:J4e,AsyncComputeValue:ib,asyncCompute:Z4e,doComputed:X4e}}const Bs={orderDefault:1},{merge:or,cloneDeep:Tl}=_n(),zc=[];function C7(e){I_(zc,t=>t.name===e.name),zc.push(e),zc.sort((t,n)=>t.order-n.order),Lt.debug("mergeColumnPlugin register success: current:",e,"registered:",zc)}function Q4e(e){var t,n;if(e.dict){if((t=e.column)!=null&&t.component){const a=Os(Tl(e.dict));a.cloneable&&(a.cloneable=!1),e.column.component.dict=or(a,e.column.component.dict)}if((n=e.form)!=null&&n.component){const a=Os(Tl(e.dict));a.cloneable&&(a.cloneable=!1),e.form.component.dict=or(a,e.form.component.dict)}}return e}function ebe(e){if(!e.type)return e;let t=[];typeof e.type=="string"?t=[e.type]:e.type instanceof Array&&(t=e.type);const n={};for(const a of t){const o=y7.getType(a);o&&or(n,o)}return e=or(n,e),e}const hc=[];hc.push({name:"type",handle:ebe,order:-2});hc.push({name:"dict",handle:Q4e,order:-1});hc.push({name:"viewFormUseCellComponent",order:10,handle:(e={},t={})=>{var n,a;if(!((n=t.settings)!=null&&n.viewFormUseCellComponent))return e;const o={component:((a=e.column)==null?void 0:a.component)||{}};return(e.type==="text"||e.type instanceof Array&&e.type.includes("text"))&&(o.render||(o.render=r=>{const{value:l}=r;return J("span",null,[l])})),or(e,{viewForm:o}),e}});hc.push({name:"NaiveFormRuleFix",order:10,handle:(e={},t={})=>{var n,a,o,r,l;const{ui:s}=sn();return s.type!=="naive"||((n=e.addForm)!=null&&n.rules&&(e.addForm.rule=e.addForm.rules),(a=e.editForm)!=null&&a.rules&&(e.editForm.rule=e.editForm.rules),(o=e.viewForm)!=null&&o.rules&&(e.viewForm.rule=e.viewForm.rules),(r=e.form)!=null&&r.rules&&(e.form.rule=e.form.rules),(l=e.search)!=null&&l.rules&&(e.search.rule=e.search.rules)),e}});hc.push({name:"DefaultOrder",order:0,handle:(e={},t={},n)=>(on(e,"column.order")==null&&Zn(e,"column.order",n),on(e,"form.order")==null&&Zn(e,"form.order",n),e)});for(const e of hc)C7(e);function ub(e,t){const n={};let a=0;return dt(e,(o,r)=>{if(o.key=r,o.children)o.children=ub(o.children,t);else for(const l of zc)o=l.handle(o,t,a);n[r]=o,a++}),n}function cb(e={},t){return dt(t,(n,a)=>{n.children?cb(e,n.children):e[a]=n}),e}function db(e={},t){return dt(t,(n,a)=>{n.children?db(e,n.children):e[a]=n}),e}function tbe(e){const t=e,n=t.column||{};return n.title==null&&(n.title=t.title),n.key=t.key,t.children&&(n.children=S7(t.children)),_7(n),Nt(n)}function _7(e){var t;e&&(t=e.component)!=null&&t.name&&typeof e.component.name!="string"&&(nn(e.component.name)||(e.component.name=un(e.component.name)))}function S7(e){let t={};return dt(e,(n,a)=>{t[a]=tbe(n)}),t=fb(t),t}function nbe(e){return Bi(e,t=>t.order??Bs.orderDefault)}function fb(e){const t=[];for(const o in e){const r=e[o];r.key=o,r.children&&zL(r.children)>0&&(r.children=fb(r.children)),t.push(r)}const n=nbe(t),a={};for(const o of n)a[o.key]=o;return a}function x7(e,t){const n={};return dt(e,a=>{const o=Tl(a[t])||{};t==="form"&&o.title==null&&(o.title=a.title),o.key=a.key,n[a.key]=o,_7(o)}),n}function Hc(e,t,n,a){const o=x7(n,t),r=or(Tl(e.form),e[t],{columns:o});return a&&a(r),r}function abe(e,t="search",n){var a;const o=x7(n,t),r={},l=((a=e.settings)==null?void 0:a.searchCopyFormProps)??["component","valueChange","title","key","label","render"];function s(i,u,c){if(sL(l,c)&&e.columns[u]){const f=e.columns[u][c];f&&(i[c]=f)}}return dt(Tl(e.form.columns),(i,u)=>{const c={};s(c,u,"valueResolve"),s(c,u,"valueBuilder"),r[u]=or(c,ur(i,l))}),or({columns:r},{columns:o},e.search)}function obe(e,t,n="form"){const{t:a}=ao(),{merge:o}=_n();t=t||{};const r={value:null},l=o(Zd.defaultOptions({t:a,crudOptionsRef:r}),Zd.commonOptions({crudOptions:e,context:t,crudExpose:null}),e);r.value=l;const s=ub(Tl(l.columns),l),i=cb({},s),u=n==="form"?"form":`${n}Form`;return Hc(l,u,i)}function rbe(e){dt(e.columns,(a,o)=>{a.key=o});const t=ub(Tl(e.columns),e);e.columns=t;const n=cb({},t);return e.table.columns=S7(Tl(t)),e.table.columnsMap=db({},e.table.columns),or(e.toolbar,{columnsFilter:{originalColumns:Tl(e.table.columns)}}),e.form=Hc(e,"form",n),e.addForm=Hc(e,"addForm",n),e.editForm=Hc(e,"editForm",n),e.viewForm=Hc(e,"viewForm",n,a=>{dt(a.columns,o=>{o.component||(o.component={}),o.component.disabled=!0})}),e.search=abe(e,"search",n),e.table.editable&&(e.table.editable.addForm=or(e.addForm.columns,e.table.editable.addForm),e.table.editable.editForm=or(e.editForm.columns,e.table.editable.editForm)),e}function Kh(e,t){dt(e,(n,a)=>{n.key||(n.key=a),n.children?Kh(n.children,t):t(n,a)})}function Wh(e,t){dt(e,(n,a)=>{n.key||(n.key=a),n.children?Wh(n.children,t):t(n,a)})}function pb(){return{buildFormOptions:obe,buildColumns:rbe,registerMergeColumnPlugin:C7,forEachColumns:Wh,doColumnsSort:fb,forEachTableColumns:Kh}}let lbe=0;const hv={};async function sbe(e){const t=e.id||`${lbe++}`,n=document.createElement("div");return new Promise((a,o)=>{let r=hv[t];r!=null&&(r.vm.exposed.open(e),a(r));const l=J(ef,{id:t,onClosed(){e.id||delete hv[t]}});l.appContext=ef._context,$l(l,n),document.body.appendChild(n);const s=l.component;r={id:t,vNode:l,vm:s,props:l.component.props},hv[t]=r,r.vm.exposed.open(e),a(r.vm.exposed)})}function ibe(){let e=null;try{e=Fe("use:form:wrapper",()=>{})()}catch(a){Lt.warn("cant inject use:form:wrapper,建议在App.vue中使用组件包裹",a)}let t=null;e==null?t=async a=>await sbe(a):t=async a=>await e.open(a);async function n(a){const{buildFormOptions:o}=pb(),r=o(a.crudOptions,a.context);return await t(r)}return{openDialog:t,openCrudFormDialog:n}}const{merge:k7}=_n(),ube=k7;function cbe(e){const{crudExpose:t}=e,{crudBinding:n}=t;sn(),ao();const{merge:a}=_n();pe(()=>{var r,l,s;return(s=(l=(r=n.value)==null?void 0:r.table)==null?void 0:l.editable)==null?void 0:s.enabled},r=>{var l,s,i,u,c;const f=(i=(s=(l=n.value)==null?void 0:l.table)==null?void 0:s.editable)==null?void 0:i.customRowHandleActive;if(f){f({enabled:r,mode:(u=n.value.table.editable)==null?void 0:u.mode,rowHandle:n.value.rowHandle});return}r?((c=n.value.table.editable)==null?void 0:c.mode)==="row"?n.value.rowHandle.active="editRow":n.value.rowHandle.active="editable":n.value.rowHandle.active="default"});const o={async enable(r,l){const s=n.value.table.editable;a(s,{enabled:!0},r),l&&l({editable:s})},disable(){var r;(r=t.getTableRef())==null||r.editable.resume(),n.value.table.editable.enabled=!1,n.value.rowHandle.active="default"},active(r){t.getTableRef().editable.active(r)},inactive(){t.getTableRef().editable.inactive()},addRow(r){t.getTableRef().editable.addRow(r)},activeCols(r){t.getTableRef().editable.activeCols(r)},resume(){t.getTableRef().editable.resume()},cancel(){t.getTableRef().editable.cancelAll()},persist(){t.getTableRef().editable.persist()},removeRow(r){t.getTableRef().editable.removeRow(r)},getEditableRow(r){var l,s;return(s=(l=t.getTableRef())==null?void 0:l.editable)==null?void 0:s.getEditableRow(r)},getActiveRows(){var r,l;return(l=(r=t.getTableRef())==null?void 0:r.editable)==null?void 0:l.getActiveRows()},async doSaveRow(r){let l=r.editableId;l||(l=r.row[n.value.table.editable.rowKey]);const s=o.getEditableRow(l);await s.save({async doSave(i){var u,c;const{isAdd:f,row:p,setData:m}=i,h=p;if(((c=(u=n.value)==null?void 0:u.mode)==null?void 0:c.name)!=="local")try{if(s.loading=!0,f){const v=await n.value.request.addRequest({form:h});m(v)}else await n.value.request.editRequest({form:h,row:h})}finally{s.loading=!1}}})},async doCancelRow(r){let l=r.editableId;l||(l=r.row[n.value.table.editable.rowKey]);const s=o.getEditableRow(l);if(s.isAdd){o.removeRow(l);return}s.cancel()},async doRemoveRow(r){let l=r.editableId;l||(l=r.row[n.value.table.editable.rowKey]);const s=o.getEditableRow(l);return await t.doRemove(r,{async handle(){return s.isAdd?(o.removeRow(l),!1):n.value.mode.name==="local"?(o.removeRow(l),{isLocal:!0}):await n.value.request.delRequest(r)}})},getInstance(){t.getTableRef().editable},eachCells(r){var l;(l=t.getTableRef().editable)==null||l.eachCells(r)},eachRows(r){var l;(l=t.getTableRef().editable)==null||l.eachRows(r)},async validate(){var r;return await((r=t.getTableRef().editable)==null?void 0:r.validate())},getTableData(r){var l;return(l=t.getTableRef().editable)==null?void 0:l.getCleanTableData(r)},getCleanTableData(r){var l;return(l=t.getTableRef().editable)==null?void 0:l.getCleanTableData(r)}};return o}function E7(e){const{crudRef:t,crudBinding:n}=e,{ui:a}=sn(),{t:o}=ao(),r=ibe();function l(){t.value==null&&Lt.warn("crudRef还未初始化,请在onMounted之后调用")}function s(){n.value==null&&Lt.warn("crudBinding还未初始化,请在useFs或useCrud之后调用")}const i={crudRef:t,crudBinding:n,getFormWrapperRef(){return t.value.formWrapperRef},getFormRef:()=>{const u=i.getFormWrapperRef();if(u==null||(u==null?void 0:u.formRef)==null){Lt.error("当前无法获取FormRef,请在编辑对话框已打开的状态下调用此方法,如果是在打开对话框时调用,可以尝试先nextTick");return}return u==null?void 0:u.formRef},getFormData:()=>{const u=i.getFormRef();return u==null?void 0:u.getFormData()},setFormData:(u,c)=>{var f;(f=i.getFormRef())==null||f.setFormData(u,c)},getFormComponentRef(u,c=!1){const f=i.getFormRef();return f==null?void 0:f.getComponentRef(u,c)},doValueBuilder(u,c){c==null&&(c=Qt(n.value.columns)),Lt.debug("doValueBuilder ,columns=",c);const f=[];Wh(c,p=>{p.valueBuilder!=null&&f.push(p)}),f.length!==0&&(dt(u,(p,m)=>{dt(f,h=>{const v=h.valueBuilder({value:on(p,h.key),row:p,form:p,index:m,key:h.key,column:h});v!=null&&!(v instanceof Promise)&&Zn(p,h.key,v)}),p.children&&Un(p.children)&&i.doValueBuilder(p.children,c)}),Lt.debug("valueBuilder success:",u))},doValueResolve({form:u},c){c==null&&(c=Qt(n.value.columns));const f=[];Wh(c,p=>{p.valueResolve!=null&&f.push(p)}),f.length!==0&&(Lt.debug("doValueResolve ,columns=",c),dt(f,p=>{const m=p.key,h=p.valueResolve({value:on(u,m),row:u,form:u,key:m,column:p});h!=null&&!(h instanceof Promise)&&Zn(u,m,h)}),Lt.debug("valueResolve success:",u))},doSearchValidate(){i.getSearchRef().doValidate()},getSearchFormData(){return n.value.search.validatedForm},getSearchValidatedFormData(){return n.value.search.validatedForm},setSearchFormData(u){if(t.value&&t.value.setSearchFormData({form:u.form,mergeForm:u.mergeForm}),u.mergeForm===!1)for(const f in n.value.search.validatedForm)delete n.value.search.validatedForm[f];const{merge:c}=_n();c(n.value.search.validatedForm,u.form),u.triggerSearch&&i.doRefresh()},getSearchRef(){var u;return l(),(u=t.value)==null?void 0:u.getSearchRef()},buildPageQuery(u){var c,f;const p=u.page;let m=u.form;m==null&&(m=Kn(i.getSearchValidatedFormData())||{},(f=(c=n.value)==null?void 0:c.search)!=null&&f.columns&&i.doValueResolve({form:m},Qt(n.value.search.columns)));let h=u.sort;h==null&&(h=n.value.table.sort||{});const v={page:p,form:m,sort:h};let g=v;return n.value.request.transformQuery&&(g=n.value.request.transformQuery(v)),g},async search(u,c={}){const f=i.buildPageQuery(u);let p;const m=d(n.value.table.disableLoading);try{c.silence!==!0&&m!==!0&&(n.value.table.loading=!0),Lt.debug("pageRequest",f),p=await n.value.request.pageRequest(f)}finally{n.value.table.loading=!1}if(p==null){Lt.warn("pageRequest返回结果不能为空");return}let h=p;return n.value.request.transformRes&&(h=n.value.request.transformRes({res:p,query:f})),h.records&&i.doValueBuilder(h.records),h},getPage(){let u={currentPage:1,pageSize:10};return n.value.pagination&&(u={currentPage:n.value.pagination[a.pagination.currentPage],pageSize:n.value.pagination.pageSize}),u},async doRefresh(u){var c,f;if(n.value.request.pageRequest==null)return;Lt.debug("do refresh:",u),n.value.pagination&&u!=null&&u.goFirstPage&&(n.value.pagination[a.pagination.currentPage]=1);const p=i.getPage(),m=await i.search({page:p},{silence:u==null?void 0:u.silence});if(m==null){Lt.error("pageRequest返回结构不正确,请配置正确的request.transformRes,期望:{currentPage>0, pageSize>0, total, records:[]},实际返回:",m);return}const{currentPage:h=p.currentPage||1,pageSize:v=p.pageSize,total:g}=m,{records:b}=m;if(b==null||!(b instanceof Array)||g==null||h==null||h<=0||isNaN(h)||v==null||v<=0||isNaN(v)){Lt.error("pageRequest返回结构不正确,请配置正确的request.transformRes,期望:{currentPage>0, pageSize>0, total, records:[]},实际返回:",m),Lt.info("如果你的不需要分页,也需要按照上面的格式返回,可以让pageSize=99999,然后配置crudOptions.pagination.show=false来隐藏分页组件");return}if(n.value.data=b,n.value.pagination&&(n.value.pagination[a.pagination.currentPage]=h,n.value.pagination.pageSize=v,n.value.pagination[a.pagination.total]=g||b.length),(u==null?void 0:u.scrollTop)??n.value.table.scrollTopOnRefreshed){const y=i.getTableRef();y==null||y.scrollTo(0)}(f=(c=n.value)==null?void 0:c.table)!=null&&f.onRefreshed&&n.value.table.onRefreshed({data:b})},getToolbarRef:()=>t.value.toolbarRef,getColumnsFilterRef:()=>i.getToolbarRef().columnsFilterRef,getColumnsFilterOriginalColumnsRef:()=>i.getColumnsFilterRef().original,getColumnsFilterColumnsRef:()=>i.getColumnsFilterRef().columns,doPageTurn(u){n.value.pagination[a.pagination.currentPage]=u},async doSearch(u){Lt.debug("do search:",u),u=k7({goFirstPage:!0},u),u.goFirstPage&&i.doPageTurn(1),u.form&&t.value&&i.setSearchFormData({form:u.form,mergeForm:u.mergeForm,refWarning:!1,triggerSearch:!1}),await i.doRefresh()},getTableRef(){var u;return l(),(u=t.value)==null?void 0:u.tableRef},getBaseTableRef(){const u=this.getTableRef();if(u==null){Lt.warn("fs-table还未挂载");return}return u.tableRef},getTableData(){return s(),n.value.data},setTableData(u){s(),n.value.data=u},insertTableRow(u,c){s(),n.value.data.splice(u,0,c)},updateTableRow(u,c,f=!0){f?n.value.data[u]=ube(n.value.data[u],c):n.value.data[u]=c},removeTableRow(u){s(),n.value.data.splice(u,1)},removeTableRowByRowKey:(u,c)=>{s(),c==null&&(c=n.value.data);for(let f=0;fAr(()=>import("./index-64865240-CievhkpU.js"),[])});let t=null;return dt(e,n=>{t=n}),(await t()).exportUtil}function fbe({originalRow:e,row:t,key:n,col:a}){var o;const r=e[n],l=(o=a.component)==null?void 0:o.dict;if(l&&r!=null){const s=l.getNodesFromDataMap(r);if(s!=null&&s.length>0){const i=E_(s,u=>l.getLabel(u)||l.getValue(u)).join("|");i!=null&&i!==""&&(t[n]=i)}}return t}async function pbe(e,t={}){if(t.server){const u=e.getPage(),c=e.buildPageQuery({page:u});await t.server(c);return}const n=e.crudBinding;let a=t.columns;a==null&&(a=[],dt(n.value.table.columnsMap,u=>{if(!(t.columnFilter&&t.columnFilter(u)===!1)&&!(t.onlyShow&&d(u.show)===!1)&&u.exportable!==!1&&u.key!=="_index"){const c={key:u.key,title:u.title};a.push(c)}}));for(const u of a){const c=n.value.table.columnsMap[u.key];u.columnProps=c||{},t.columnBuilder&&t.columnBuilder({col:u})}const{merge:o}=_n(),r=await dbe(),l=[];let s=n.value.data;if(t.dataFrom==="search"){const u=o({page:{currentPage:1,pageSize:99999999}},n.value.toolbar.export.searchParams);s=(await e.search(u,{silence:!0})).records}for(const u of s){const c=Kn(u);dt(a,f=>{const p=f.columnProps,m={row:c,originalRow:u,key:f.key,col:p,exportCol:f};t.autoUseDictLabel!==!1&&fbe(m),t.dataFormatter&&t.dataFormatter(m)}),l.push(c)}const i=o({columns:a,data:l,filename:"table",noHeader:!1,separator:",",quoted:!1},{...t});t.fileType==="excel"?await r.excel(i):await r.csv(i)}const T7={};function M7(e,t,n={}){T7[e]={handle:t,opts:n}}function hbe(e){return T7[e]}M7("rowSelection",(e,t,n)=>{const a=t.crudExpose.crudBinding;function o(){var s,i;return((i=(s=a.value)==null?void 0:s.table)==null?void 0:i.rowKey)||"id"}const{ui:r}=sn();if(!e){Lt.warn("请配置settings.plugins.rowSelection.props参数");return}let l=r.table;return(n==null?void 0:n.table.tableVersion)=="v2"&&(l=r.tableV2),l.buildSelectionCrudOptions({crossPage:e.crossPage,getRowKey:o,getPageData(){return a.value.data},useCompute:()=>kr(),selectionFixed:e.selectionFixed,multiple:e.multiple,selectedRowKeys:e.selectedRowKeys,onSelectedKeysChanged:async s=>{const i=e.selectedRowKeys instanceof Function?e.selectedRowKeys():e.selectedRowKeys;i.value=[...s],await Oe(),e.onSelectedChanged&&e.onSelectedChanged(i.value)}})},{before:!0,order:-2});M7("mobile",(e,t,n)=>{const a=n.rowHandle,o=a.buttons;let r={};for(const s in o){const i=o[s];nn(i.dropdown)?r=i:r[s]={...i,dropdown:x(()=>e.isMobile.value?!0:i.dropdown)}}let l=a.width;return(l==null||!nn(l))&&(l=x(()=>{var s;return e.isMobile.value?((s=e==null?void 0:e.rowHandle)==null?void 0:s.width)||60:a.width||250})),{rowHandle:{width:l,buttons:r}}},{before:!1,order:-2});const{merge:rs}=_n();function mbe(e){e.context==null&&(e.context={});const t=zn.get(),{t:n}=ao(),a=E=>x(()=>n(E));let o=e.crudOptions;const r=e.expose||e.crudExpose;if(!r)throw new Error("crudExpose不能为空,请给useCrud传入{crudExpose}参数");const l=r,{crudBinding:s}=l,{doRefresh:i,doValueResolve:u}=l;function c(){return{pagination:{...t.pagination.onChange({setCurrentPage(E){s.value.pagination[t.pagination.currentPage]=E,s.value.pagination._onCurrentChange&&s.value.pagination._onCurrentChange({current:E,pagination:s.value.pagination})},setPageSize(E){s.value.pagination.pageSize=E,s.value.pagination[t.pagination.currentPage]=1,s.value.pagination._onPageSizeChange&&s.value.pagination._onPageSizeChange({pageSize:E,current:1,pagination:s.value.pagination})},async doAfterChange(){return await i()}})}}}function f(){return{form:{async doSubmit(E){var O,I,$,z;if(E.mode==="edit")if(u(E),((O=o.mode)==null?void 0:O.name)==="local")l.updateTableRow(E.index,E.form,o.mode.isMergeWhenUpdate);else return(I=s.value.request)!=null&&I.editRequest||Lt.warn("request.editRequest 未定义,无法保存"),await s.value.request.editRequest(E);else if(E.mode==="add")if(u(E),(($=o.mode)==null?void 0:$.name)==="local"){const q=o.mode.isAppendWhenAdd?l.getTableData().length:0;l.insertTableRow(q,E.form)}else return(z=s.value.request)!=null&&z.addRequest||Lt.warn("request.addRequest 未定义,无法保存"),await s.value.request.addRequest(E)},async onSuccess({mode:E}){E==="edit"?await i({scrollTop:!1}):E==="add"?await i({scrollTop:!0,goFirstPage:!0}):await i()}}}}function p(){return{rowHandle:{buttons:{remove:{click:async E=>{E.row=E[t.tableColumn.row],await l.doRemove(E)}},copy:{show:!1,click:async E=>{E.row=E[t.tableColumn.row],await l.openCopy({row:E.row,index:E.index})}},edit:{click:async E=>{E.row=E[t.tableColumn.row],await l.openEdit({row:E.row,index:E.index})}},view:{click:async E=>{E.row=E[t.tableColumn.row],await l.openView({row:E.row,index:E.index})}}}}}}function m(){return{search:{buttons:{search:{loading:x(()=>{var E,O;return(O=(E=s.value)==null?void 0:E.table)==null?void 0:O.loading})}},on_reset(){s.value.table.sort={},Kh(s.value.table.columns,O=>{O.sortOrder=!1});const E=r.getBaseTableRef();E!=null&&E.clearSort&&E.clearSort()},on_search(){r.doRefresh({goFirstPage:!0})},"onUpdate:form":E=>{s.value.search.form=E},"onUpdate:validatedForm":E=>{s.value.search.validatedForm=E},"onUpdate:collapse":E=>{s.value.search.collapse=E},container:{collapse:!0,"onUpdate:collapse":E=>{s.value.search.container.collapse=E}}}}}function h(){return{tabs:{},onTabChange(E){r.setSearchFormData({form:E,mergeForm:!0}),i()}}}function v(){const E=F(!1);return{toolbar:{buttons:{refresh:{type:"primary",icon:t.icons.refresh,title:a("fs.toolbar.refresh.title"),order:1,circle:!0,click:async()=>{await r.doRefresh({scrollTop:!1})}},search:{type:x(()=>s.value.search.show!==!1?"primary":"default"),icon:t.icons.search,title:a("fs.toolbar.search.title"),order:2,circle:!0,click:()=>{s.value.search.show=!s.value.search.show}},compact:{type:x(()=>s.value.toolbar.compact?"primary":"default"),icon:t.icons.compact,title:a("fs.toolbar.compact.title"),order:3,circle:!0,click:()=>{s.value.toolbar.compact=!s.value.toolbar.compact}},export:{show:!0,type:"primary",icon:t.icons.export,order:4,loading:E,title:a("fs.toolbar.export.title"),circle:!0,click:async()=>{E.value=!0;try{await pbe(r,s.value.toolbar.export)}finally{E.value=!1}}},columns:{type:"primary",icon:t.icons.columnsFilter,title:a("fs.toolbar.columns.title"),circle:!0,order:5}},"onUpdate:columns"(O){const I=s.value.table.columns;function $(q,W){const j={};return dt(W,N=>{const V=q[N.key];if(V){if(V.columnSetShow===!1){j[N.key]=V;return}delete V.order;const H=rs({...V},N);j[N.key]=H,V.children&&(H.children=$(V.children,N.children))}}),j}const z=$(I,O);s.value.table.columns=z,s.value.table.columnsMap=db({},z)}}}}function g(){return{table:{onSortChange(E){const{isServerSort:O,prop:I,asc:$,order:z}=E;Kh(s.value.table.columns,W=>{W.key===I?W.sortOrder=z:W.sortOrder=!1});const q=s.value.table.sort;s.value.table.sort=O?{prop:I,order:z,asc:$}:null,(O||q!=null)&&l.doRefresh()}}}}function b(){return{actionbar:{buttons:{add:{click(){l.openAdd({})}}}}}}function y(){const{compute:E}=kr();return{actionbar:{buttons:{addRow:{show:!1,text:a("fs.actionbar.add"),type:"primary",click:()=>{l.editable.addRow()}}}},rowHandle:{group:{editable:{remove:{text:"删除",...t.button.colors("danger"),click:async O=>{const{index:I,row:$}=O,z=$[s.value.table.editable.rowKey];await l.editable.doRemoveRow({editableId:z,row:$})}}},editRow:{edit:{text:"编辑",loading:E(O=>{const{index:I,row:$}=O,z=$[s.value.table.editable.rowKey],q=l.editable.getEditableRow(z);return!!(q!=null&&q.loading)}),click:async O=>{var I;const{index:$,row:z}=O,q=z[s.value.table.editable.rowKey];if(s.value.table.editable.exclusive){const W=l.editable.getActiveRows();dt(W,j=>{s.value.table.editable.exclusiveEffect==="save"?l.editable.doSaveRow({row:j.rowData}):l.editable.doCancelRow({row:j.rowData})})}(I=l.editable.getEditableRow(q))==null||I.active()},show:E(O=>{var I,$;const{index:z,row:q}=O,W=q[s.value.table.editable.rowKey];return!(($=(I=l.editable)==null?void 0:I.getEditableRow(W))!=null&&$.isEditing)})},save:{text:"保存",loading:!1,click:async O=>{const{index:I,row:$}=O;await l.editable.doSaveRow({row:$})},show:E(O=>{var I,$;const{index:z,row:q}=O,W=q[s.value.table.editable.rowKey];return!!(($=(I=l.editable)==null?void 0:I.getEditableRow(W))!=null&&$.isEditing)})},cancel:{text:"取消",click:async O=>{var I;const{index:$,row:z}=O;await((I=l.editable)==null?void 0:I.doCancelRow({row:z}))},show:E(O=>{var I,$;const{index:z,row:q}=O,W=q[s.value.table.editable.rowKey];return!!(($=(I=l.editable)==null?void 0:I.getEditableRow(W))!=null&&$.isEditing)})},remove:{text:"删除",...t.button.colors("danger"),click:async O=>{var I;const{index:$,row:z}=O,q=z[s.value.table.editable.rowKey];await((I=l.editable)==null?void 0:I.doRemoveRow({row:z,editableId:q}))}}}}}}}const{cloneDeep:w}=_n();function _(E){E.search.validatedForm=w(E.search.initialForm)}function S(E){var O;const I={value:null};let $=w(E);const z=Zd.commonOptions(e),q=Zd.defaultOptions({t:n,crudOptionsRef:I});o=rs({},q,z,$),I.value=o;const W=d(o.settings);if(W){const H=d(W.plugins);dt(H,(Y,P)=>{if(Y.enabled===!1)return;let D=Y.handle,B={};if(D==null){const ce=hbe(P);ce!=null&&(D=ce.handle,B=ce.opts)}if(D==null)return;const U=Y.before??B.before,X=D(Y.props,e,o);U!==!1?$=rs(X,$):$=rs($,X)})}const j=rs(q,c(),f(),p(),m(),h(),v(),g(),b(),y(),z,$),{buildColumns:N}=pb(),V=N(j);return _(V),(O=V==null?void 0:V.settings)!=null&&O.onUseCrud&&V.settings.onUseCrud(V),V}function k(E){s.value=S(E),Lt.info("fast-crud inited, crudBinding=",s.value)}function T(E){const O=rs({},o,E);return k(O),o=O,O}k(o);function R(E){rs(s.value,E)}return{appendCrudOptions:T,resetCrudOptions:k,appendCrudBinding:R,rebuildCrudBindings:S}}function O7(e){const{createCrudOptions:t,crudExposeRef:n}=e,a=e.crudRef||F(),o=e.crudBinding||F({});let r=e.crudExpose;r||(r=E7({crudRef:a,crudBinding:o}).crudExpose),n&&!n.value&&(n.value=r),e.context==null&&(e.context={});const l=e.context;e.onExpose&&e.onExpose({crudRef:a,crudBinding:o,crudExpose:r,context:l});const s=t({...e,crudExpose:r,expose:r,context:l});function i(u){const c={crudExpose:r,...u,context:l};rs(u.crudOptions,e.crudOptionsOverride);const f=mbe(c);return{...u,...f,crudRef:a,crudExpose:r,crudBinding:o,context:l}}return s instanceof Promise?s.then(u=>i(u)):i(s)}function r_e(e){return O7(e)}function vbe(e){return O7(e)}function gbe(){const e=F(),t=F(),n={},{crudExpose:a}=E7({crudBinding:t,crudRef:e});return{crudRef:e,crudBinding:t,context:n,crudExpose:a}}function zs(e,t,n="modelValue"){const a=zn.get();let o=e.dict;o&&o.prototype&&(o.clear(),o=Os(Kn(e.dict)),o.cloneable=!1,o.clear());function r(){return x(()=>{let _=[];if(e.options?_=e.options:o&&o.data!=null&&(o.data instanceof Array||ys.logger.warn("dict.data类型错误,期望为数组,实际:",o.data),_=o.data,e.transformDictData&&(_=e.transformDictData(Kn(o.data)))),a.type==="naive"||a.type==="element"){const S=[];for(const k of _)S.push({...k,value:b(k),label:w(k)});return S}return _})}function l(){return o}const s=Fe("get:scope",function(){});function i(){const _=e[n]||t.attrs[n];return{...s(),componentRef:u,value:_}}const{proxy:u}=bt(),c=async(_=!1)=>{if(!o)return;if(o.getNodesByValues){const k=i();if(k.value==null)return;let T=k.value;Array.isArray(k.value)||(T=[k.value]),await o.appendByValues(T);return}if(o.loading)return;const S=i();if(_){await o.reloadDict(S);return}await o.loadDict(S)};c();const f=async()=>{await c(!0)},p=()=>{o&&o.clear()},m=()=>{o!=null&&(!o.prototype&&!o.cloneable||pe(()=>e[n],()=>{f()}))};pe(()=>o==null?void 0:o.data,()=>{const _=i();t.attrs.onDictChange,t.emit("dict-change",{dict:o,..._})},{immediate:!0});const h=()=>{var _;return(_=l())==null?void 0:_.data},v=(_,S)=>{let k=S;return l()&&(k=l()[S]),_[k]},g=(_,S)=>{let k=S;l()&&(k=l()[S]),delete _[k]},b=_=>v(_,"value"),y=_=>v(_,"children"),w=_=>{if(e.labelFormatter)return e.labelFormatter(_);const S=v(_,"label");return S==null?"":String(S)};return{createComputedOptions:r,loadDict:c,reloadDict:f,clearDict:p,getDictData:h,getDict:l,watchValue:m,getValue:b,getLabel:w,getChildren:y,getColor:_=>v(_,"color"),removePropValue:g,curDict:o}}const Ru=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,R7=new Set,gg=typeof process=="object"&&process?process:{},A7=(e,t,n,a)=>{typeof gg.emitWarning=="function"?gg.emitWarning(e,t,n,a):console.error(`[${n}] ${t}: ${e}`)};let qh=globalThis.AbortController,G8=globalThis.AbortSignal;var X8;if(typeof qh>"u"){G8=class{constructor(){$t(this,"onabort"),$t(this,"_onabort",[]),$t(this,"reason"),$t(this,"aborted",!1)}addEventListener(n,a){this._onabort.push(a)}},qh=class{constructor(){$t(this,"signal",new G8),t()}abort(n){var a,o;if(!this.signal.aborted){this.signal.reason=n,this.signal.aborted=!0;for(const r of this.signal._onabort)r(n);(o=(a=this.signal).onabort)==null||o.call(a,n)}}};let e=((X8=gg.env)==null?void 0:X8.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const t=()=>{e&&(e=!1,A7("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}const bbe=e=>!R7.has(e),ps=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),$7=e=>ps(e)?e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?Kp:null:null;class Kp extends Array{constructor(t){super(t),this.fill(0)}}var dd;const P7=class jc{constructor(t,n){if($t(this,"heap"),$t(this,"length"),!fe(jc,dd))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new n(t),this.length=0}static create(t){const n=$7(t);if(!n)return[];Bt(jc,dd,!0);const a=new jc(t,n);return Bt(jc,dd,!1),a}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}};dd=new WeakMap,Jt(P7,dd,!1);let ybe=P7;var Fr,Io,Dr,Nr,fd,Kc,Ca,Vo,ha,jn,Zt,so,Fo,Ga,Ma,Wr,Oa,Br,zr,Do,Hr,pi,io,Wp,bg,pu,us,Uh,Bo,yg,N7,hu,pd,Yh,dl,ls,pl,cs,qp,mv,I7,hd,Gh,Wc,Up,Nn,Ln,Yp,vv,uu,qc,Sl,ws,Xh,wg;const wbe=class V7{constructor(t){Jt(this,Wp),Jt(this,yg),Jt(this,dl),Jt(this,pl),Jt(this,qp),Jt(this,hd),Jt(this,Wc),Jt(this,Nn),Jt(this,Yp),Jt(this,uu),Jt(this,Sl),Jt(this,Xh),Jt(this,Fr,void 0),Jt(this,Io,void 0),Jt(this,Dr,void 0),Jt(this,Nr,void 0),Jt(this,fd,void 0),Jt(this,Kc,void 0),$t(this,"ttl"),$t(this,"ttlResolution"),$t(this,"ttlAutopurge"),$t(this,"updateAgeOnGet"),$t(this,"updateAgeOnHas"),$t(this,"allowStale"),$t(this,"noDisposeOnSet"),$t(this,"noUpdateTTL"),$t(this,"maxEntrySize"),$t(this,"sizeCalculation"),$t(this,"noDeleteOnFetchRejection"),$t(this,"noDeleteOnStaleGet"),$t(this,"allowStaleOnFetchAbort"),$t(this,"allowStaleOnFetchRejection"),$t(this,"ignoreFetchAbort"),Jt(this,Ca,void 0),Jt(this,Vo,void 0),Jt(this,ha,void 0),Jt(this,jn,void 0),Jt(this,Zt,void 0),Jt(this,so,void 0),Jt(this,Fo,void 0),Jt(this,Ga,void 0),Jt(this,Ma,void 0),Jt(this,Wr,void 0),Jt(this,Oa,void 0),Jt(this,Br,void 0),Jt(this,zr,void 0),Jt(this,Do,void 0),Jt(this,Hr,void 0),Jt(this,pi,void 0),Jt(this,io,void 0),Jt(this,pu,()=>{}),Jt(this,us,()=>{}),Jt(this,Uh,()=>{}),Jt(this,Bo,()=>!1),Jt(this,hu,R=>{}),Jt(this,pd,(R,E,O)=>{}),Jt(this,Yh,(R,E,O,I)=>{if(O||I)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0}),$t(this,I7,"LRUCache");const{max:n=0,ttl:a,ttlResolution:o=1,ttlAutopurge:r,updateAgeOnGet:l,updateAgeOnHas:s,allowStale:i,dispose:u,disposeAfter:c,noDisposeOnSet:f,noUpdateTTL:p,maxSize:m=0,maxEntrySize:h=0,sizeCalculation:v,fetchMethod:g,memoMethod:b,noDeleteOnFetchRejection:y,noDeleteOnStaleGet:w,allowStaleOnFetchRejection:_,allowStaleOnFetchAbort:S,ignoreFetchAbort:k}=t;if(n!==0&&!ps(n))throw new TypeError("max option must be a nonnegative integer");const T=n?$7(n):Array;if(!T)throw new Error("invalid max value: "+n);if(Bt(this,Fr,n),Bt(this,Io,m),this.maxEntrySize=h||fe(this,Io),this.sizeCalculation=v,this.sizeCalculation){if(!fe(this,Io)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(b!==void 0&&typeof b!="function")throw new TypeError("memoMethod must be a function if defined");if(Bt(this,Kc,b),g!==void 0&&typeof g!="function")throw new TypeError("fetchMethod must be a function if specified");if(Bt(this,fd,g),Bt(this,pi,!!g),Bt(this,ha,new Map),Bt(this,jn,new Array(n).fill(void 0)),Bt(this,Zt,new Array(n).fill(void 0)),Bt(this,so,new T(n)),Bt(this,Fo,new T(n)),Bt(this,Ga,0),Bt(this,Ma,0),Bt(this,Wr,ybe.create(n)),Bt(this,Ca,0),Bt(this,Vo,0),typeof u=="function"&&Bt(this,Dr,u),typeof c=="function"?(Bt(this,Nr,c),Bt(this,Oa,[])):(Bt(this,Nr,void 0),Bt(this,Oa,void 0)),Bt(this,Hr,!!fe(this,Dr)),Bt(this,io,!!fe(this,Nr)),this.noDisposeOnSet=!!f,this.noUpdateTTL=!!p,this.noDeleteOnFetchRejection=!!y,this.allowStaleOnFetchRejection=!!_,this.allowStaleOnFetchAbort=!!S,this.ignoreFetchAbort=!!k,this.maxEntrySize!==0){if(fe(this,Io)!==0&&!ps(fe(this,Io)))throw new TypeError("maxSize must be a positive integer if specified");if(!ps(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");Mt(this,yg,N7).call(this)}if(this.allowStale=!!i,this.noDeleteOnStaleGet=!!w,this.updateAgeOnGet=!!l,this.updateAgeOnHas=!!s,this.ttlResolution=ps(o)||o===0?o:1,this.ttlAutopurge=!!r,this.ttl=a||0,this.ttl){if(!ps(this.ttl))throw new TypeError("ttl must be a positive integer if specified");Mt(this,Wp,bg).call(this)}if(fe(this,Fr)===0&&this.ttl===0&&fe(this,Io)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!fe(this,Fr)&&!fe(this,Io)){const R="LRU_CACHE_UNBOUNDED";bbe(R)&&(R7.add(R),A7("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",R,V7))}}static unsafeExposeInternals(t){return{starts:fe(t,zr),ttls:fe(t,Do),sizes:fe(t,Br),keyMap:fe(t,ha),keyList:fe(t,jn),valList:fe(t,Zt),next:fe(t,so),prev:fe(t,Fo),get head(){return fe(t,Ga)},get tail(){return fe(t,Ma)},free:fe(t,Wr),isBackgroundFetch:n=>{var a;return Mt(a=t,Nn,Ln).call(a,n)},backgroundFetch:(n,a,o,r)=>{var l;return Mt(l=t,Wc,Up).call(l,n,a,o,r)},moveToTail:n=>{var a;return Mt(a=t,uu,qc).call(a,n)},indexes:n=>{var a;return Mt(a=t,dl,ls).call(a,n)},rindexes:n=>{var a;return Mt(a=t,pl,cs).call(a,n)},isStale:n=>{var a;return fe(a=t,Bo).call(a,n)}}}get max(){return fe(this,Fr)}get maxSize(){return fe(this,Io)}get calculatedSize(){return fe(this,Vo)}get size(){return fe(this,Ca)}get fetchMethod(){return fe(this,fd)}get memoMethod(){return fe(this,Kc)}get dispose(){return fe(this,Dr)}get disposeAfter(){return fe(this,Nr)}getRemainingTTL(t){return fe(this,ha).has(t)?1/0:0}*entries(){for(const t of Mt(this,dl,ls).call(this))fe(this,Zt)[t]!==void 0&&fe(this,jn)[t]!==void 0&&!Mt(this,Nn,Ln).call(this,fe(this,Zt)[t])&&(yield[fe(this,jn)[t],fe(this,Zt)[t]])}*rentries(){for(const t of Mt(this,pl,cs).call(this))fe(this,Zt)[t]!==void 0&&fe(this,jn)[t]!==void 0&&!Mt(this,Nn,Ln).call(this,fe(this,Zt)[t])&&(yield[fe(this,jn)[t],fe(this,Zt)[t]])}*keys(){for(const t of Mt(this,dl,ls).call(this)){const n=fe(this,jn)[t];n!==void 0&&!Mt(this,Nn,Ln).call(this,fe(this,Zt)[t])&&(yield n)}}*rkeys(){for(const t of Mt(this,pl,cs).call(this)){const n=fe(this,jn)[t];n!==void 0&&!Mt(this,Nn,Ln).call(this,fe(this,Zt)[t])&&(yield n)}}*values(){for(const t of Mt(this,dl,ls).call(this))fe(this,Zt)[t]!==void 0&&!Mt(this,Nn,Ln).call(this,fe(this,Zt)[t])&&(yield fe(this,Zt)[t])}*rvalues(){for(const t of Mt(this,pl,cs).call(this))fe(this,Zt)[t]!==void 0&&!Mt(this,Nn,Ln).call(this,fe(this,Zt)[t])&&(yield fe(this,Zt)[t])}[Symbol.iterator](){return this.entries()}find(t,n={}){for(const a of Mt(this,dl,ls).call(this)){const o=fe(this,Zt)[a],r=Mt(this,Nn,Ln).call(this,o)?o.__staleWhileFetching:o;if(r!==void 0&&t(r,fe(this,jn)[a],this))return this.get(fe(this,jn)[a],n)}}forEach(t,n=this){for(const a of Mt(this,dl,ls).call(this)){const o=fe(this,Zt)[a],r=Mt(this,Nn,Ln).call(this,o)?o.__staleWhileFetching:o;r!==void 0&&t.call(n,r,fe(this,jn)[a],this)}}rforEach(t,n=this){for(const a of Mt(this,pl,cs).call(this)){const o=fe(this,Zt)[a],r=Mt(this,Nn,Ln).call(this,o)?o.__staleWhileFetching:o;r!==void 0&&t.call(n,r,fe(this,jn)[a],this)}}purgeStale(){let t=!1;for(const n of Mt(this,pl,cs).call(this,{allowStale:!0}))fe(this,Bo).call(this,n)&&(Mt(this,Sl,ws).call(this,fe(this,jn)[n],"expire"),t=!0);return t}info(t){const n=fe(this,ha).get(t);if(n===void 0)return;const a=fe(this,Zt)[n],o=Mt(this,Nn,Ln).call(this,a)?a.__staleWhileFetching:a;if(o===void 0)return;const r={value:o};if(fe(this,Do)&&fe(this,zr)){const l=fe(this,Do)[n],s=fe(this,zr)[n];if(l&&s){const i=l-(Ru.now()-s);r.ttl=i,r.start=Date.now()}}return fe(this,Br)&&(r.size=fe(this,Br)[n]),r}dump(){const t=[];for(const n of Mt(this,dl,ls).call(this,{allowStale:!0})){const a=fe(this,jn)[n],o=fe(this,Zt)[n],r=Mt(this,Nn,Ln).call(this,o)?o.__staleWhileFetching:o;if(r===void 0||a===void 0)continue;const l={value:r};if(fe(this,Do)&&fe(this,zr)){l.ttl=fe(this,Do)[n];const s=Ru.now()-fe(this,zr)[n];l.start=Math.floor(Date.now()-s)}fe(this,Br)&&(l.size=fe(this,Br)[n]),t.unshift([a,l])}return t}load(t){this.clear();for(const[n,a]of t){if(a.start){const o=Date.now()-a.start;a.start=Ru.now()-o}this.set(n,a.value,a)}}set(t,n,a={}){var o,r,l,s,i;if(n===void 0)return this.delete(t),this;const{ttl:u=this.ttl,start:c,noDisposeOnSet:f=this.noDisposeOnSet,sizeCalculation:p=this.sizeCalculation,status:m}=a;let{noUpdateTTL:h=this.noUpdateTTL}=a;const v=fe(this,Yh).call(this,t,n,a.size||0,p);if(this.maxEntrySize&&v>this.maxEntrySize)return m&&(m.set="miss",m.maxEntrySizeExceeded=!0),Mt(this,Sl,ws).call(this,t,"set"),this;let g=fe(this,Ca)===0?void 0:fe(this,ha).get(t);if(g===void 0)g=fe(this,Ca)===0?fe(this,Ma):fe(this,Wr).length!==0?fe(this,Wr).pop():fe(this,Ca)===fe(this,Fr)?Mt(this,hd,Gh).call(this,!1):fe(this,Ca),fe(this,jn)[g]=t,fe(this,Zt)[g]=n,fe(this,ha).set(t,g),fe(this,so)[fe(this,Ma)]=g,fe(this,Fo)[g]=fe(this,Ma),Bt(this,Ma,g),hg(this,Ca)._++,fe(this,pd).call(this,g,v,m),m&&(m.set="add"),h=!1;else{Mt(this,uu,qc).call(this,g);const b=fe(this,Zt)[g];if(n!==b){if(fe(this,pi)&&Mt(this,Nn,Ln).call(this,b)){b.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:y}=b;y!==void 0&&!f&&(fe(this,Hr)&&((o=fe(this,Dr))==null||o.call(this,y,t,"set")),fe(this,io)&&((r=fe(this,Oa))==null||r.push([y,t,"set"])))}else f||(fe(this,Hr)&&((l=fe(this,Dr))==null||l.call(this,b,t,"set")),fe(this,io)&&((s=fe(this,Oa))==null||s.push([b,t,"set"])));if(fe(this,hu).call(this,g),fe(this,pd).call(this,g,v,m),fe(this,Zt)[g]=n,m){m.set="replace";const y=b&&Mt(this,Nn,Ln).call(this,b)?b.__staleWhileFetching:b;y!==void 0&&(m.oldValue=y)}}else m&&(m.set="update")}if(u!==0&&!fe(this,Do)&&Mt(this,Wp,bg).call(this),fe(this,Do)&&(h||fe(this,Uh).call(this,g,u,c),m&&fe(this,us).call(this,m,g)),!f&&fe(this,io)&&fe(this,Oa)){const b=fe(this,Oa);let y;for(;y=b==null?void 0:b.shift();)(i=fe(this,Nr))==null||i.call(this,...y)}return this}pop(){var t;try{for(;fe(this,Ca);){const n=fe(this,Zt)[fe(this,Ga)];if(Mt(this,hd,Gh).call(this,!0),Mt(this,Nn,Ln).call(this,n)){if(n.__staleWhileFetching)return n.__staleWhileFetching}else if(n!==void 0)return n}}finally{if(fe(this,io)&&fe(this,Oa)){const n=fe(this,Oa);let a;for(;a=n==null?void 0:n.shift();)(t=fe(this,Nr))==null||t.call(this,...a)}}}has(t,n={}){const{updateAgeOnHas:a=this.updateAgeOnHas,status:o}=n,r=fe(this,ha).get(t);if(r!==void 0){const l=fe(this,Zt)[r];if(Mt(this,Nn,Ln).call(this,l)&&l.__staleWhileFetching===void 0)return!1;if(fe(this,Bo).call(this,r))o&&(o.has="stale",fe(this,us).call(this,o,r));else return a&&fe(this,pu).call(this,r),o&&(o.has="hit",fe(this,us).call(this,o,r)),!0}else o&&(o.has="miss");return!1}peek(t,n={}){const{allowStale:a=this.allowStale}=n,o=fe(this,ha).get(t);if(o===void 0||!a&&fe(this,Bo).call(this,o))return;const r=fe(this,Zt)[o];return Mt(this,Nn,Ln).call(this,r)?r.__staleWhileFetching:r}async fetch(t,n={}){const{allowStale:a=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:l=this.ttl,noDisposeOnSet:s=this.noDisposeOnSet,size:i=0,sizeCalculation:u=this.sizeCalculation,noUpdateTTL:c=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:p=this.allowStaleOnFetchRejection,ignoreFetchAbort:m=this.ignoreFetchAbort,allowStaleOnFetchAbort:h=this.allowStaleOnFetchAbort,context:v,forceRefresh:g=!1,status:b,signal:y}=n;if(!fe(this,pi))return b&&(b.fetch="get"),this.get(t,{allowStale:a,updateAgeOnGet:o,noDeleteOnStaleGet:r,status:b});const w={allowStale:a,updateAgeOnGet:o,noDeleteOnStaleGet:r,ttl:l,noDisposeOnSet:s,size:i,sizeCalculation:u,noUpdateTTL:c,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:p,allowStaleOnFetchAbort:h,ignoreFetchAbort:m,status:b,signal:y};let _=fe(this,ha).get(t);if(_===void 0){b&&(b.fetch="miss");const S=Mt(this,Wc,Up).call(this,t,_,w,v);return S.__returned=S}else{const S=fe(this,Zt)[_];if(Mt(this,Nn,Ln).call(this,S)){const E=a&&S.__staleWhileFetching!==void 0;return b&&(b.fetch="inflight",E&&(b.returnedStale=!0)),E?S.__staleWhileFetching:S.__returned=S}const k=fe(this,Bo).call(this,_);if(!g&&!k)return b&&(b.fetch="hit"),Mt(this,uu,qc).call(this,_),o&&fe(this,pu).call(this,_),b&&fe(this,us).call(this,b,_),S;const T=Mt(this,Wc,Up).call(this,t,_,w,v),R=T.__staleWhileFetching!==void 0&&a;return b&&(b.fetch=k?"stale":"refresh",R&&k&&(b.returnedStale=!0)),R?T.__staleWhileFetching:T.__returned=T}}async forceFetch(t,n={}){const a=await this.fetch(t,n);if(a===void 0)throw new Error("fetch() returned undefined");return a}memo(t,n={}){const a=fe(this,Kc);if(!a)throw new Error("no memoMethod provided to constructor");const{context:o,forceRefresh:r,...l}=n,s=this.get(t,l);if(!r&&s!==void 0)return s;const i=a(t,s,{options:l,context:o});return this.set(t,i,l),i}get(t,n={}){const{allowStale:a=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:l}=n,s=fe(this,ha).get(t);if(s!==void 0){const i=fe(this,Zt)[s],u=Mt(this,Nn,Ln).call(this,i);return l&&fe(this,us).call(this,l,s),fe(this,Bo).call(this,s)?(l&&(l.get="stale"),u?(l&&a&&i.__staleWhileFetching!==void 0&&(l.returnedStale=!0),a?i.__staleWhileFetching:void 0):(r||Mt(this,Sl,ws).call(this,t,"expire"),l&&a&&(l.returnedStale=!0),a?i:void 0)):(l&&(l.get="hit"),u?i.__staleWhileFetching:(Mt(this,uu,qc).call(this,s),o&&fe(this,pu).call(this,s),i))}else l&&(l.get="miss")}delete(t){return Mt(this,Sl,ws).call(this,t,"delete")}clear(){return Mt(this,Xh,wg).call(this,"delete")}};I7=Symbol.toStringTag,Fr=new WeakMap,Io=new WeakMap,Dr=new WeakMap,Nr=new WeakMap,fd=new WeakMap,Kc=new WeakMap,Ca=new WeakMap,Vo=new WeakMap,ha=new WeakMap,jn=new WeakMap,Zt=new WeakMap,so=new WeakMap,Fo=new WeakMap,Ga=new WeakMap,Ma=new WeakMap,Wr=new WeakMap,Oa=new WeakMap,Br=new WeakMap,zr=new WeakMap,Do=new WeakMap,Hr=new WeakMap,pi=new WeakMap,io=new WeakMap,Wp=new WeakSet,bg=function(){const e=new Kp(fe(this,Fr)),t=new Kp(fe(this,Fr));Bt(this,Do,e),Bt(this,zr,t),Bt(this,Uh,(o,r,l=Ru.now())=>{if(t[o]=r!==0?l:0,e[o]=r,r!==0&&this.ttlAutopurge){const s=setTimeout(()=>{fe(this,Bo).call(this,o)&&Mt(this,Sl,ws).call(this,fe(this,jn)[o],"expire")},r+1);s.unref&&s.unref()}}),Bt(this,pu,o=>{t[o]=e[o]!==0?Ru.now():0}),Bt(this,us,(o,r)=>{if(e[r]){const l=e[r],s=t[r];if(!l||!s)return;o.ttl=l,o.start=s,o.now=n||a();const i=o.now-s;o.remainingTTL=l-i}});let n=0;const a=()=>{const o=Ru.now();if(this.ttlResolution>0){n=o;const r=setTimeout(()=>n=0,this.ttlResolution);r.unref&&r.unref()}return o};this.getRemainingTTL=o=>{const r=fe(this,ha).get(o);if(r===void 0)return 0;const l=e[r],s=t[r];if(!l||!s)return 1/0;const i=(n||a())-s;return l-i},Bt(this,Bo,o=>{const r=t[o],l=e[o];return!!l&&!!r&&(n||a())-r>l})},pu=new WeakMap,us=new WeakMap,Uh=new WeakMap,Bo=new WeakMap,yg=new WeakSet,N7=function(){const e=new Kp(fe(this,Fr));Bt(this,Vo,0),Bt(this,Br,e),Bt(this,hu,t=>{Bt(this,Vo,fe(this,Vo)-e[t]),e[t]=0}),Bt(this,Yh,(t,n,a,o)=>{if(Mt(this,Nn,Ln).call(this,n))return 0;if(!ps(a))if(o){if(typeof o!="function")throw new TypeError("sizeCalculation must be a function");if(a=o(n,t),!ps(a))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return a}),Bt(this,pd,(t,n,a)=>{if(e[t]=n,fe(this,Io)){const o=fe(this,Io)-e[t];for(;fe(this,Vo)>o;)Mt(this,hd,Gh).call(this,!0)}Bt(this,Vo,fe(this,Vo)+e[t]),a&&(a.entrySize=n,a.totalCalculatedSize=fe(this,Vo))})},hu=new WeakMap,pd=new WeakMap,Yh=new WeakMap,dl=new WeakSet,ls=function*({allowStale:e=this.allowStale}={}){if(fe(this,Ca))for(let t=fe(this,Ma);!(!Mt(this,qp,mv).call(this,t)||((e||!fe(this,Bo).call(this,t))&&(yield t),t===fe(this,Ga)));)t=fe(this,Fo)[t]},pl=new WeakSet,cs=function*({allowStale:e=this.allowStale}={}){if(fe(this,Ca))for(let t=fe(this,Ga);!(!Mt(this,qp,mv).call(this,t)||((e||!fe(this,Bo).call(this,t))&&(yield t),t===fe(this,Ma)));)t=fe(this,so)[t]},qp=new WeakSet,mv=function(e){return e!==void 0&&fe(this,ha).get(fe(this,jn)[e])===e},hd=new WeakSet,Gh=function(e){var t,n;const a=fe(this,Ga),o=fe(this,jn)[a],r=fe(this,Zt)[a];return fe(this,pi)&&Mt(this,Nn,Ln).call(this,r)?r.__abortController.abort(new Error("evicted")):(fe(this,Hr)||fe(this,io))&&(fe(this,Hr)&&((t=fe(this,Dr))==null||t.call(this,r,o,"evict")),fe(this,io)&&((n=fe(this,Oa))==null||n.push([r,o,"evict"]))),fe(this,hu).call(this,a),e&&(fe(this,jn)[a]=void 0,fe(this,Zt)[a]=void 0,fe(this,Wr).push(a)),fe(this,Ca)===1?(Bt(this,Ga,Bt(this,Ma,0)),fe(this,Wr).length=0):Bt(this,Ga,fe(this,so)[a]),fe(this,ha).delete(o),hg(this,Ca)._--,a},Wc=new WeakSet,Up=function(e,t,n,a){const o=t===void 0?void 0:fe(this,Zt)[t];if(Mt(this,Nn,Ln).call(this,o))return o;const r=new qh,{signal:l}=n;l==null||l.addEventListener("abort",()=>r.abort(l.reason),{signal:r.signal});const s={signal:r.signal,options:n,context:a},i=(h,v=!1)=>{const{aborted:g}=r.signal,b=n.ignoreFetchAbort&&h!==void 0;if(n.status&&(g&&!v?(n.status.fetchAborted=!0,n.status.fetchError=r.signal.reason,b&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),g&&!b&&!v)return c(r.signal.reason);const y=p;return fe(this,Zt)[t]===p&&(h===void 0?y.__staleWhileFetching?fe(this,Zt)[t]=y.__staleWhileFetching:Mt(this,Sl,ws).call(this,e,"fetch"):(n.status&&(n.status.fetchUpdated=!0),this.set(e,h,s.options))),h},u=h=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=h),c(h)),c=h=>{const{aborted:v}=r.signal,g=v&&n.allowStaleOnFetchAbort,b=g||n.allowStaleOnFetchRejection,y=b||n.noDeleteOnFetchRejection,w=p;if(fe(this,Zt)[t]===p&&(!y||w.__staleWhileFetching===void 0?Mt(this,Sl,ws).call(this,e,"fetch"):g||(fe(this,Zt)[t]=w.__staleWhileFetching)),b)return n.status&&w.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),w.__staleWhileFetching;if(w.__returned===w)throw h},f=(h,v)=>{var g;const b=(g=fe(this,fd))==null?void 0:g.call(this,e,o,s);b&&b instanceof Promise&&b.then(y=>h(y===void 0?void 0:y),v),r.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(h(void 0),n.allowStaleOnFetchAbort&&(h=y=>i(y,!0)))})};n.status&&(n.status.fetchDispatched=!0);const p=new Promise(f).then(i,u),m=Object.assign(p,{__abortController:r,__staleWhileFetching:o,__returned:void 0});return t===void 0?(this.set(e,m,{...s.options,status:void 0}),t=fe(this,ha).get(e)):fe(this,Zt)[t]=m,m},Nn=new WeakSet,Ln=function(e){if(!fe(this,pi))return!1;const t=e;return!!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof qh},Yp=new WeakSet,vv=function(e,t){fe(this,Fo)[t]=e,fe(this,so)[e]=t},uu=new WeakSet,qc=function(e){e!==fe(this,Ma)&&(e===fe(this,Ga)?Bt(this,Ga,fe(this,so)[e]):Mt(this,Yp,vv).call(this,fe(this,Fo)[e],fe(this,so)[e]),Mt(this,Yp,vv).call(this,fe(this,Ma),e),Bt(this,Ma,e))},Sl=new WeakSet,ws=function(e,t){var n,a,o,r;let l=!1;if(fe(this,Ca)!==0){const s=fe(this,ha).get(e);if(s!==void 0)if(l=!0,fe(this,Ca)===1)Mt(this,Xh,wg).call(this,t);else{fe(this,hu).call(this,s);const i=fe(this,Zt)[s];if(Mt(this,Nn,Ln).call(this,i)?i.__abortController.abort(new Error("deleted")):(fe(this,Hr)||fe(this,io))&&(fe(this,Hr)&&((n=fe(this,Dr))==null||n.call(this,i,e,t)),fe(this,io)&&((a=fe(this,Oa))==null||a.push([i,e,t]))),fe(this,ha).delete(e),fe(this,jn)[s]=void 0,fe(this,Zt)[s]=void 0,s===fe(this,Ma))Bt(this,Ma,fe(this,Fo)[s]);else if(s===fe(this,Ga))Bt(this,Ga,fe(this,so)[s]);else{const u=fe(this,Fo)[s];fe(this,so)[u]=fe(this,so)[s];const c=fe(this,so)[s];fe(this,Fo)[c]=fe(this,Fo)[s]}hg(this,Ca)._--,fe(this,Wr).push(s)}}if(fe(this,io)&&(o=fe(this,Oa))!=null&&o.length){const s=fe(this,Oa);let i;for(;i=s==null?void 0:s.shift();)(r=fe(this,Nr))==null||r.call(this,...i)}return l},Xh=new WeakSet,wg=function(e){var t,n,a;for(const o of Mt(this,pl,cs).call(this,{allowStale:!0})){const r=fe(this,Zt)[o];if(Mt(this,Nn,Ln).call(this,r))r.__abortController.abort(new Error("deleted"));else{const l=fe(this,jn)[o];fe(this,Hr)&&((t=fe(this,Dr))==null||t.call(this,r,l,e)),fe(this,io)&&((n=fe(this,Oa))==null||n.push([r,l,e]))}}if(fe(this,ha).clear(),fe(this,Zt).fill(void 0),fe(this,jn).fill(void 0),fe(this,Do)&&fe(this,zr)&&(fe(this,Do).fill(0),fe(this,zr).fill(0)),fe(this,Br)&&fe(this,Br).fill(0),Bt(this,Ga,0),Bt(this,Ma,0),fe(this,Wr).length=0,Bt(this,Vo,0),Bt(this,Ca,0),fe(this,io)&&fe(this,Oa)){const o=fe(this,Oa);let r;for(;r=o==null?void 0:o.shift();)(a=fe(this,Nr))==null||a.call(this,...r)}};let Cbe=wbe;const fp=new Cbe({max:500,maxSize:5e3,ttl:1e3*60*30,sizeCalculation:(e,t)=>1}),{UnMergeable:_be}=_n();function Sbe(e){L7=e}let L7=async e=>(Lt.warn("请配置 app.use(FsCrud,{dictRequest:(context)=>{ 你的字典请求方法 }})"),[]);class F7 extends _be{constructor(t){super(),$t(this,"cache",!1),$t(this,"prototype",!1),$t(this,"immediate",!0),$t(this,"url"),$t(this,"getData"),$t(this,"value","value"),$t(this,"label","label"),$t(this,"labelBuilder"),$t(this,"children","children"),$t(this,"color","color"),$t(this,"isTree",!1),$t(this,"_data",null),$t(this,"originalData"),$t(this,"dataMap",{}),$t(this,"loading",!1),$t(this,"custom",{}),$t(this,"getNodesByValues"),$t(this,"onReady"),$t(this,"notifies",[]),$t(this,"_unfetchValues",{}),Object.defineProperty(this,"loading",{value:!1,enumerable:!1}),Object.defineProperty(this,"notifies",{value:!1,enumerable:!1}),Object.defineProperty(this,"originalData",{value:null,enumerable:!1}),this.loading=!1,Fs(this,t),t.data!=null&&(this.originalData=t.data,this.setData(t.data)),this.toMap()}get data(){return this._data}set data(t){this._data=t,this.toMap()}isDynamic(){return this.url instanceof Function||this.getData instanceof Function||this.prototype}setData(t){this.data=t}async _loadDict(t){if(this.data&&!t.reload)return this.data;if(this.loading)return this._registerNotify();let n=null;if(this.getNodesByValues){if(t.value){let a=null;this.cache&&this.url&&(a=this.url+t.value);let o=null;if(a&&(o=fp.get(a)),o)n=o;else{const r=Array.isArray(t.value)?t.value:[t.value];if(n=await this.getNodesByValues(r,t),n!=null&&!(n instanceof Array)){Lt.error("getNodesByValues需要返回数组,当前返回值:",n);return}a&&fp.set(a,n)}}}else if(this.originalData)n=this.originalData;else{this.loading=!0;try{n=await this.getRemoteDictData(t)}finally{this.loading=!1}}this.data=n,this.onReady&&this.onReady({dict:this,...t}),this._triggerNotify()}_triggerNotify(){this.notifies&&this.notifies.length>0&&(dt(this.notifies,t=>{t(this.data)}),this.notifies.length=0)}_registerNotify(){let t=null;const n=new Promise(a=>{t=o=>{a(o)}});return this.notifies||(this.notifies=[]),this.notifies.push(t),n}async loadDict(t){return await this._loadDict({...t})}async reloadDict(t){return await this.loadDict({...t,reload:!0})}async appendByValues(t){if(this.getNodesByValues==null){Lt.warn("请配置getNodesByValues");return}for(const a of t)this.dataMap[a]||this._unfetchValues[a]||(this._unfetchValues[a]={loading:!1,value:a});await Oe(),await Oe(),await Oe();const n=[];if(dt(this._unfetchValues,a=>{a.loading||(a.loading=!0,n.push(a.value))}),n.length>0){const a=await this.getNodesByValues(n);this.setData([...this.data||[],...a]);for(const o of n)delete this._unfetchValues[o];return Object.keys(this._unfetchValues).length===0&&this._triggerNotify(),this.data}else return this._registerNotify()}clear(){this.originalData=null,this.setData(null)}async getRemoteDictData(t){let n,a,o;if(this.url&&(o=this.url,o instanceof Function&&(o=o({...t,dict:this})),a=o),this.getData!=null)n=async()=>{const r=await this.getData({url:o,dict:this,...t});return Array.isArray(r)?r:[]};else if(o)n=async()=>{const r=await L7({url:o,dict:this});return Array.isArray(r)?r:[]};else return[];if(this.cache&&a){let r=fp.get(a);if(r==null)r={loaded:!1,loading:!0,data:void 0,callback:[]},fp.set(a,r);else{if(r.loaded)return r.data;if(r.loading)return new Promise(l=>{const s=i=>{l(i)};r.callback.push(s)})}try{r.loaded=!1,r.loading=!0;let l=await n();l=l||[],l instanceof Array||Lt.warn("dict data 格式有误,期望格式为数组,实际格式为:",l),r.data=l,r.loaded=!0,r.loading=!1;for(const s of r.callback)s(l);return r.callback=[],l}catch(l){r.loading=!1,r.loaded=!1,Lt.error("load dict error:",l)}}return await n()}toMap(){if(this._data==null){this.dataMap={};return}const t={};this.data&&this.buildMap(t,this.data||[]),this.dataMap=t}buildMap(t,n){dt(n,a=>{t[this.getValue(a)]=a,this.isTree&&this.getChildren(a)&&this.buildMap(t,this.getChildren(a))})}getValue(t){return t[this.value]}getLabel(t){return this.labelBuilder?this.labelBuilder(t):t[this.label]}getChildren(t){return t[this.children]}getColor(t){return t[this.color]}getDictData(){return this.data}getDictMap(){return this.dataMap}getNodeByValue(t){return this.dataMap[t]}getNodesFromDataMap(t){if(t==null)return[];Un(t)||(t=[t]);const n=[];return dt(t,a=>{const o=this.dataMap[a];o?n.push(o):n.push({[this.value]:a})}),n}}function xbe(e){const t=Os(new F7(e));return!t.prototype&&t.immediate&&t.loadDict(),t}function kbe(){return{dict:xbe,setDictRequest:Sbe,Dict:F7}}async function Ebe(e){await Oe();const t=e.getModal();if(t==null)return;const n=t.querySelector(".ant-modal-header");if(n==null)return;const a=t,o=t.style;n.style.cursor="move",n.onmousedown=r=>{const l=r.clientX,s=r.clientY;a.style.transform="translate(0px, 0px)";let i,u;o.left.includes("%")?(i=+document.body.clientWidth*(+o.left.replace(/%/g,"")/100),u=+document.body.clientHeight*(+o.top.replace(/%/g,"")/100)):(i=+o.left.replace(/px/g,""),u=+o.top.replace(/px/g,""),u=u===0?100:u),document.onmousemove=function(c){const f=c.clientX-l,p=c.clientY-s;a.style.left=`${f+i}px`,a.style.top=`${p+u}px`},document.onmouseup=function(c){document.onmousemove=null,document.onmouseup=null}}}async function Tbe(e){await Oe();const t=e.getModal();if(t==null)return;const n=t.querySelector(".n-card-header");if(n==null)return;const a=t,o=t.style;n.style.cursor="move",n.onmousedown=r=>{const l=r.clientX,s=r.clientY;a.style.transform="translate(0px, 0px)";let i,u;o.left.includes("%")?(i=+document.body.clientWidth*(+o.left.replace(/%/g,"")/100),u=+document.body.clientHeight*(+o.top.replace(/%/g,"")/100)):(i=+o.left.replace(/px/g,""),u=+o.top.replace(/px/g,"")),document.onmousemove=async function(c){if(c.clientX==0&&c.clientY==0)return;const f=c.clientX-l,p=c.clientY-s;a.style.left=`${f+i}px`,a.style.top=`${p+u}px`},document.onmouseup=function(c){document.onmousemove=null,document.onmouseup=null}}}async function Mbe(e){const{ui:t}=sn();t.type==="antdv"?await Ebe(e):t.type==="element"||await Tbe(e)}function Obe(){return{dragModal:Mbe}}const Rbe={logger:{off:{tableColumns:!1}}},Abe=K({name:"FsContainer",props:{fixedHeight:{type:Boolean,default:!0},bodyStyle:{type:Object,default:()=>({})},innerStyle:{type:Object,default:()=>({})}},setup(e,t){const{merge:n}=_n(),a=x(()=>e.fixedHeight===!1?n({position:"relative"},e.innerStyle):e.innerStyle),o=x(()=>e.fixedHeight===!1?n({flex:"unset"},e.bodyStyle):e.bodyStyle);return{computedInnerStyle:a,computedBodyStyle:o}}}),$be={class:"fs-container"},Pbe={class:"box"},Nbe={class:"header"},Ibe={class:"footer"};function Vbe(e,t,n,a,o,r){return C(),A("div",$be,[M("div",Pbe,[M("div",{class:"inner",style:Ue(e.computedInnerStyle)},[M("div",Nbe,[re(e.$slots,"header")]),M("div",{class:"body",style:Ue(e.computedBodyStyle)},[re(e.$slots,"default")],4),M("div",Ibe,[re(e.$slots,"footer")])],4)]),re(e.$slots,"box")])}const Lbe=Rn(Abe,[["render",Vbe]]),Fbe=K({name:"FsLayoutDefault"}),Dbe={class:"fs-crud-header"},Bbe={class:"fs-header-top"},zbe={class:"fs-header-middle"},Hbe={class:"fs-header-bottom"},jbe={class:"fs-crud-footer"};function Kbe(e,t,n,a,o,r){const l=He("fs-container");return C(),ae(l,{class:"fs-layout-default"},{header:te(()=>[M("div",Dbe,[M("div",Bbe,[re(e.$slots,"header-top")]),re(e.$slots,"search"),M("div",zbe,[re(e.$slots,"header-middle")]),re(e.$slots,"actionbar"),re(e.$slots,"toolbar"),M("div",Hbe,[re(e.$slots,"header-bottom")]),re(e.$slots,"tabs")])]),footer:te(()=>[M("div",jbe,[re(e.$slots,"footer-top"),re(e.$slots,"pagination"),re(e.$slots,"footer-bottom")])]),default:te(()=>[re(e.$slots,"default"),re(e.$slots,"table"),re(e.$slots,"form")]),_:3})}const Wbe=Rn(Fbe,[["render",Kbe]]),qbe=K({name:"FsLayoutCard",setup(){const e=Fe("get:crudBinding"),t=x(()=>{var o,r;return e==null?!0:(r=(o=e())==null?void 0:o.search)==null?void 0:r.show}),{ui:n}=sn(),a=F(n.card.name);return{searchShow:t,cardComponentName:a}}}),Ube={class:"fs-header-top"},Ybe={class:"fs-header-bottom"},Gbe={class:"top-bar"},Xbe={class:"top-bar"},Jbe={class:"fs-crud-footer"};function Zbe(e,t,n,a,o,r){const l=He("fs-container");return C(),ae(l,{class:"fs-layout-card"},{header:te(()=>[M("div",Ube,[re(e.$slots,"header-top")]),e.searchShow?(C(),ae(Me(e.cardComponentName),{key:0},{default:te(()=>[re(e.$slots,"search")]),_:3})):le("",!0),M("div",Ybe,[re(e.$slots,"header-bottom")])]),default:te(()=>[J(l,null,{header:te(()=>[re(e.$slots,"tabs")]),default:te(()=>[(C(),ae(Me(e.cardComponentName),{class:"fs-layout-card-body"},{title:te(()=>[M("div",Gbe,[re(e.$slots,"actionbar"),re(e.$slots,"toolbar")])]),header:te(()=>[M("div",Xbe,[re(e.$slots,"actionbar"),re(e.$slots,"toolbar")])]),default:te(()=>[J(l,null,{footer:te(()=>[M("div",Jbe,[re(e.$slots,"footer-top"),re(e.$slots,"pagination"),re(e.$slots,"footer-bottom")])]),default:te(()=>[re(e.$slots,"default"),re(e.$slots,"table"),re(e.$slots,"form")]),_:3})]),_:3}))]),_:3})]),_:3})}const Qbe=Rn(qbe,[["render",Zbe]]);function J8(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!rn(e)}const eye=K({name:"FsButton",inheritAttrs:!1,props:{text:{type:String,default:"",required:!1},icon:{type:[String,Object,Function],default:"",required:!1},iconRight:{type:[String,Object,Function],default:"",required:!1},circle:{type:Boolean,default:!1,required:!1},tooltip:{type:Object,default:void 0},badge:{type:Object,default:null,required:!1},buttonProps:{type:Object,default:void 0},className:{},loading:{type:Boolean,default:void 0,required:!1}},emits:["click"],setup(e,t){const{ui:n}=sn(),{merge:a}=_n(),o=F(!1),r=x(()=>e.loading??o.value??!1),l=(m,h="fs-button-icon")=>{if(m!=null)return typeof m=="string"?J(He("fs-icon"),{icon:m,class:h},null):typeof m=="function"?m():J(He("fs-icon"),Re(m,{class:h}),null)};let s=()=>{const m=e.icon,h=e.iconRight,v=n.type!=="element",g=!v;let b;const y={...t.slots};(m&&!v&&!g||t.slots.default||e.text||h)&&(y.default=()=>{const T=[];return m&&!v&&!g&&T.push(l(m)),t.slots.default&&T.push(t.slots.default()),e.text&&T.push(e.text),h&&T.push(l(h,"fs-button-icon-right")),T}),m&&(v&&!y.icon?y.icon=()=>l(m):g&&!y.icon&&(b=l(m)));const w=e.circle?n.button.circle:{},_=Me(n.button.name),S=T=>{T.loadingRef=o,t.emit("click",T)},k=a({...w,class:{"fs-button":!0,"is-thin":!e.text&&!t.slots.default},loading:r.value,onClick:S},{class:e.className,...t.attrs,...e.buttonProps});return b&&(k.icon=b),Je(_,k,y)};const i=s,u=Me(n.badge.name);if(e.badge&&(s=()=>{let m;return J(u,e.badge,J8(m=i())?m:{default:()=>[m]})}),!e.tooltip)return s;const c=Me(n.tooltip.name),f=x(()=>Uo(e.tooltip,"slots")),p=n.tooltip.trigger;return()=>{var m;const h={...(m=e.tooltip)==null?void 0:m.slots,[p]:s};return J(c,f.value,J8(h)?h:{default:()=>[h]})}}}),tye=K({name:"FsIcon",inheritAttrs:!1,props:{icon:{type:String,default:void 0,require:!0},baseUrl:{type:String,default:""}},setup(e,t){const{ui:n}=sn(),a=x(()=>{var o;if(e.icon&&((o=e.icon)==null?void 0:o.indexOf(":"))>=0){if(e.icon.startsWith("http:")||e.icon.startsWith("https:")){let c=null;return e.icon.startsWith("http://")||e.icon.startsWith("https://")?c=e.icon:c=e.baseUrl+e.icon.replace("http:","").replace("https:",""),()=>J("img",Re({class:"fs-icon-image",src:c},t.attrs),null)}if(e.icon.startsWith("svg:")){const c=Me("FsIconSvg");return()=>{const f=e.icon.replace("svg:","");return J(c,Re({class:"fs-icon",icon:f},t.attrs),null)}}const l=Me("FsIconify"),s=e.icon.split(":");let i={},u=e.icon;return s.length>=3&&(i={color:s[2]},u=s[0]+":"+s[1]),()=>J(l,Re({class:"fs-icon",icon:u,style:i},t.attrs),null)}const r=Me(e.icon);return typeof r=="string"?()=>J("span",{title:"error icon name"},[r]):n.icon.isComponent?()=>J(r,Re({class:"fs-icon"},t.attrs),null):()=>J(He("el-icon"),Re({class:"fs-icon"},t.attrs),{default:()=>[J(r,null,null)]})});return()=>a.value()}}),nye=K({name:"FsIconify",components:{Icon:pge},props:{icon:{type:String},spin:{type:Boolean,default:!1}},setup(e,t){return{iconifyRef:F(null)}}});function aye(e,t,n,a,o,r){const l=He("Icon");return C(),A("span",{class:L(["fs-iconify",{"fs-iconify-spin":e.spin}])},[J(l,{ref:"iconifyRef",icon:e.icon,inline:!0},null,8,["icon"])],2)}const oye=Rn(nye,[["render",aye]]),rye=K({name:"FsSvgIcon",props:{icon:{type:String,required:!0},size:{type:[Number,String],default:16},spin:{type:Boolean,default:!1}},setup(e){const t=x(()=>`#${e.icon}`),n=x(()=>{const{size:a}=e;let o=`${a}`;return o=`${o.replace("px","")}px`,{width:o,height:o}});return{symbolId:t,getStyle:n}}}),lye={class:"fs-icon-svg-content","aria-hidden":"true"},sye=["xlink:href"];function iye(e,t,n,a,o,r){return C(),A("span",{class:L(["fs-icon-svg",e.spin&&"fs-icon-spin"])},[(C(),A("svg",lye,[M("use",{"xlink:href":e.symbolId},null,8,sye)]))],2)}const uye=Rn(rye,[["render",iye]]),cye=K({name:"FsLabel",props:{label:{type:String,default:""},labelAttrs:{type:Object,default:()=>({})},contentAttrs:{type:Object,default:()=>({})}}}),dye={class:"fs-label"};function fye(e,t,n,a,o,r){return C(),A("div",dye,[M("div",Re({class:"label"},e.labelAttrs),[Ct(ye(e.label)+" ",1),re(e.$slots,"label")],16),M("div",Re({class:"content"},e.contentAttrs),[re(e.$slots,"default")],16)])}const pye=Rn(cye,[["render",fye]]),hye={key:0,class:"fs-loading"},mye={key:0},vye=K({name:"FsLoading"}),gye=K({...vye,props:{loading:{type:Boolean},icon:{},text:{}},setup(e){const{ui:t}=sn();return(n,a)=>{const o=He("fs-icon");return n.loading?(C(),A("div",hye,[J(o,{class:"fs-icon-spin",icon:n.icon??d(t).icons.refresh},null,8,["icon"]),n.text?(C(),A("span",mye,ye(n.text),1)):le("",!0)])):le("",!0)}}}),bye=K({name:"FsBox"}),yye={class:"fs-box"};function wye(e,t,n,a,o,r){return C(),A("div",yye,[re(e.$slots,"default")])}const Cye=Rn(bye,[["render",wye]]);function _ye(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!rn(e)}function Z8(e,t){if(e[t]instanceof Array){const n=e[t];e[t]=a=>{for(const o of n)o(a)}}}const Sye=["div","span","a","p","pre","li","ol","ul"],xye=K({name:"FsComponentRender",inheritAttrs:!1,props:{modelValue:{},name:{},slots:{type:Object},children:{type:Object},on:{type:Object},events:{type:Object},scope:{type:Object},vModel:{type:[String,Object]},props:{},render:{},undefineToNull:{type:Boolean,default:!0}},emits:["update:dict","update:modelValue","mounted"],setup(e,t){const{ui:n}=sn(),{merge:a}=_n();_t("get:scope",()=>e.scope),gt(()=>{t.emit("mounted",e.scope)});const o=F(),r=x(()=>{const m={name:"modelValue",trim:!1,number:!1,transform:void 0};e.vModel&&(typeof e.vModel=="string"?m.name=e.vModel:a(m,e.vModel));const h=e.modelValue??(n.type==="antdv"?void 0:null),v="onUpdate:"+m.name,g={ref:o,[m.name]:h,[v]:y=>{if(y&&(m.trim&&(y=y.trim()),m.number)){const w=Number(y);isNaN(w)||(y=w)}m.transform&&(y=m.transform(y)),y===void 0&&e.undefineToNull&&(y=null),t.emit("update:modelValue",y)},...e.props},b={...e.events,...e.on};return dt(b,(y,w)=>{const _=y;w.startsWith("on")||(w=_N("on_"+w)),g[w]=S=>_({...e.scope,$event:S})}),g}),l=()=>{const m={},h=(v,g)=>{v instanceof Function?m[g]=b=>v({...e.scope,scope:b}):m[g]=()=>v};return dt(e.children,h),dt(e.slots,h),m},s=x(()=>{e.name;let m=d(e.name)||n.input.name;typeof m=="function"&&(m=m());const h={isAsyncComponent:!1,component:m};let v=h.component;return Sye.includes(v)||(typeof v=="string"&&(v=He(v)),(v==null?void 0:v.name)==="AsyncComponentWrapper"&&(h.isAsyncComponent=!0)),h.component=v,h}),i=l;function u(){return s.value.isAsyncComponent?f():c()}function c(){return o.value}async function f(){return c()??new Promise((h,v)=>{p(h,v,0)})}function p(m,h,v){setTimeout(()=>{const g=c();if(g!=null){m(g);return}if(v++,v>20){h(new Error("异步组件加载超时"));return}p(m,h,v)},200)}return t.expose({props:e,getTargetRefSync:c,getTargetRef:u,getTargetRefAsync:f}),()=>{let m;const h=Re(r.value,t.attrs);return Z8(h,"onChange"),Z8(h,"onBlur"),e.render?e.render({...e.scope,attrs:h}):J(s.value.component,h,_ye(m=i())?m:{default:()=>[m]})}}}),kye=K({name:"FsSlotRender",inheritAttrs:!1,props:{slots:{type:Function},scope:{type:Object}},setup(e){return()=>e.slots(e.scope)}}),D7=K({name:"FsRender",functional:!0,props:{renderFunc:{type:Function},scope:{type:Object}},setup(){},render(){return this.renderFunc(this.scope)}}),Eye=K({name:"FsForm",props:{initialForm:{type:Object,default(){return{}}},columns:{type:Object,default:void 0},group:{type:Object,default:void 0},doReset:{type:Function,default:void 0},beforeValidate:{type:Function,default:void 0},beforeSubmit:{type:Function,default:void 0},doSubmit:{type:Function,default:void 0},afterSubmit:{type:Function,default:void 0},slots:{type:Object,default:()=>({})},display:{type:String,default:"flex"},index:{type:Number,default:void 0},mode:{type:String,default:void 0},row:{type:Object,default:void 0},col:{type:Object,default:void 0},formItem:{type:Object,default:void 0},helper:{type:Object},watch:{type:Function,default:null}},emits:["reset","submit","success","validationError","value-change","init"],setup(e,t){var n,a;const{merge:o}=_n(),{ui:r}=sn(),{AsyncComputeValue:l,doComputed:s}=kr(),i=F(),u=Nt({}),{proxy:c}=bt();dt(e.columns,B=>{B.value!=null&&(B.value instanceof l||B.value instanceof am)&&Lt.warn("form.value配置不支持Compute/AsyncCompute类型的动态计算")});function f(){const B={};return dt(e.columns,(U,X)=>{const ce=d(U.value);ce!==void 0&&Zn(B,X,ce)}),o(B,Kn(e.initialForm)),B}const p=f();y(p);const m=x(()=>({row:p,form:u,index:e.index,mode:e.mode||"add",attrs:t.attrs,getComponentRef:R}));function h(){return m.value}const v=x(()=>e.columns);function g(B){B!=null&&dt(e.columns,(U,X)=>{let ce=on(B,X);if(U.valueBuilder){const ne=U.valueBuilder({value:ce,key:X,row:p,form:B,index:e.index,mode:e.mode});ne!=null&&!(ne instanceof Promise)&&Zn(B,X,ne)}})}function b(){return u}function y(B,U={}){if(g(B),U.mergeForm===!1)for(const ce in u)delete u[ce];o(u,B);const{valueChange:X}=U;X&&dt(e.columns,(ce,ne)=>{const ue=u[ne];S(ne,ue)})}function w(...B){return o({},e.col,...B)}function _(B){return{key:B.key,...m.value}}function S(B,U){const X={key:B,value:U,formRef:c,...m.value,immediate:!1};t.emit("value-change",X);let ce=e.columns[B].valueChange;ce&&(ce instanceof Function?ce(X):ce.handle&&ce.handle(X))}const k=F({});function T(B){return k.value[B].getFormItemRef()}function R(B,U=!1){var X;return(X=T(B))==null?void 0:X.getComponentRef(U)}const E=F([]);dt((n=e.group)==null?void 0:n.groups,(B,U)=>{B.collapsed!==!0&&E.value.push(U)}),((a=e.group)==null?void 0:a.groupType)==="tabs"&&(E.value=E.value.length>0?E.value[0]:null);const O=s(()=>e.group,h,null,(B={})=>{const U={};dt(B==null?void 0:B.groups,(ne,ue)=>{dt(ne.columns,ie=>{if(v.value[ie]==null){ys.logger.warn("无效的分组字段:"+ie);return}U[ie]=ue})});const X=B.groupType;let ce={parent:r.collapse.name,child:r.collapseItem.name};return X==="tabs"&&(ce.parent=r.tabs.name,ce.child=r.tabPane.name),o({wrapper:ce,groupedKeys:U},B)}),I=x(()=>{const B=[];return dt(v.value,(U,X)=>{var ce,ne;const ue=Kn(e.formItem||{});U=o(ue,U),U.key=X,U.order==null&&(U.order=Bs.orderDefault),(((ce=O.value)==null?void 0:ce.groupedKeys)==null||((ne=O.value)==null?void 0:ne.groupedKeys[X])==null)&&B.push(U),U.col=w(U.col)}),B.sort((U,X)=>U.order-X.order),B});function $(){return i.value}async function z(){const B=f(),U=k1(u);for(const X of U){const ce=on(B,X[0]);ce==null?bh(u,X[0]):Zn(u,X[0],ce)}e.doReset&&await e.doReset(m.value),t.emit("reset")}const q=F(),W=F({});function j(B){var U,X;if((U=O.value)!=null&&U.groupedKeys)for(let ce in B){const ne=(X=O.value)==null?void 0:X.groupedKeys[ce];ne!=null&&(B["group."+ne]=!0)}}async function N(){const B={...m.value,form:u};if(B.mode!=="view"){if(e.beforeValidate&&await e.beforeValidate(B)===!1)return!1;try{W.value={},await r.form.validateWrap(i.value),q.value=!0}catch(U){q.value=!1;const X=r.form.transformValidateErrors(U);throw j(X),W.value=X,t.emit("validationError",m.value),U}}}async function V(){await N();const B=Kn(Qt(u)),U={...m.value,form:B};if(Lt.debug("form submit",JSON.stringify(u)),dt(e.columns,(X,ce)=>{let ne=on(B,ce);if(X.valueResolve){const ue=X.valueResolve({value:ne,key:ce,...U});ue!=null&&!(ue instanceof Promise)&&Zn(B,ce,ue)}}),e.beforeSubmit&&await e.beforeSubmit(U)===!1)return!1;if(dt(e.columns,(X,ce)=>{X.submit===!1?bh(B,ce):X.submit===!0&&Zn(B,ce,B[ce])}),e.doSubmit){const X=await e.doSubmit(U);if(U.res=X,X===!1)return!1}return t.emit("submit",U),e.afterSubmit&&await e.afterSubmit(U)===!1?!1:(t.emit("success",U),U)}gt(()=>{dt(v.value,(B,U)=>{if(B.valueChange==null)return;let X=B.valueChange;if(X&&X.immediate===!0&&X.handle){const ce={key:U,value:u[U],formRef:c,...m.value,immediate:!0};X.handle&&X.handle(ce)}})});function H(B){return!!(B&&d(B.show)!==!1)}function Y(B){if(!B.columns||d(B.show)===!1)return!1;for(let U of B.columns)if(v.value[U]!=null&&H(v.value[U]))return!0;return!1}e.watch&&pe(()=>u,(B,U)=>{e.watch&&e.watch(m.value)},{deep:!0,immediate:!0});function P(){const B=JSON.stringify(p),U=JSON.stringify(u);return B!==U}const D=x(()=>o({},e.slots,t.slots));return t.emit("init",m.value),{get:(B,U)=>on(B,U),set:(B,U,X)=>{Zn(B,U,X),S(U,X)},ui:r,validRef:q,errorsRef:W,formRef:i,computedColumns:v,computedDefaultColumns:I,submit:V,reset:z,getFormRef:$,scope:m,buildItemScope:_,groupActiveKey:E,form:u,formItemRefs:k,getFormData:b,setFormData:y,getComponentRef:R,mergeCol:w,validate:N,computedGroup:O,getContextFn:h,formItemShow:H,groupItemShow:Y,isDirty:P,mergedSlots:D}}});function Tye(e,t,n,a,o,r){const l=He("fs-form-item-col"),s=He("fs-render");return C(),ae(Me(e.ui.form.name),{ref:"formRef",class:L(["fs-form",{"fs-form-grid":e.display==="grid","fs-form-flex":e.display==="flex","fs-form-invalid":e.validRef===!1}]),onsubmit:"event.preventDefault();",model:e.form},{default:te(()=>[(C(),ae(Me(e.ui.row.name),Re({class:"fs-row"},e.row),{default:te(()=>[(C(!0),A(Ae,null,it(e.computedDefaultColumns,i=>(C(),ae(l,{key:i==null?void 0:i.key,ref_for:!0,ref:u=>{u&&(e.formItemRefs[i.key]=u)},col:e.mergeCol(i.col),item:i,helper:e.helper,"model-value":e.get(e.form,i.key),slots:e.mergedSlots["form_"+i.key],"get-context-fn":e.getContextFn,"onUpdate:modelValue":u=>e.set(e.form,i.key,u)},null,8,["col","item","helper","model-value","slots","get-context-fn","onUpdate:modelValue"]))),128))]),_:1},16)),e.computedGroup.wrapper?(C(),ae(Me(e.computedGroup.wrapper.parent),Re({key:0,[e.ui.collapse.modelValue]:e.groupActiveKey,["onUpdate:"+e.ui.collapse.modelValue]:t[0]||(t[0]=i=>e.groupActiveKey=i),style:{width:"100%"}},e.computedGroup),{default:te(()=>[(C(!0),A(Ae,null,it(e.computedGroup.groups,(i,u)=>(C(),A(Ae,{key:u},[e.groupItemShow(i)?(C(),ae(Me(e.computedGroup.wrapper.child),Re({key:0,[e.ui.collapse.keyName||""]:u},{ref_for:!0},i,{class:{"fs-form-group-error":e.errorsRef["group."+u]}}),xa({default:te(()=>[(C(),ae(Me(e.ui.row.name),Re({class:"fs-row"},{ref_for:!0},e.row),{default:te(()=>[(C(!0),A(Ae,null,it(i.columns,c=>(C(),A(Ae,{key:c},[e.computedColumns[c]?(C(),ae(l,{key:0,ref_for:!0,ref:f=>{f&&(e.formItemRefs[c]=f)},col:e.mergeCol(e.computedColumns[c].col),item:e.computedColumns[c],"model-value":e.get(e.form,c),slots:e.mergedSlots["form_"+c],"get-context-fn":e.getContextFn,helper:e.helper,"onUpdate:modelValue":f=>e.set(e.form,c,f)},null,8,["col","item","model-value","slots","get-context-fn","helper","onUpdate:modelValue"])):le("",!0)],64))),128))]),_:2},1040))]),_:2},[it(i.slots,(c,f)=>({name:f,fn:te(p=>[J(s,{"render-func":c,scope:{...p,hasError:e.errorsRef["group."+u]}},null,8,["render-func","scope"])])}))]),1040,["class"])):le("",!0)],64))),128))]),_:1},16)):le("",!0)]),_:1},8,["class","model"])}const Mye=Rn(Eye,[["render",Tye]]),Oye=K({name:"FsFormItem",components:{FsRender:D7},props:{modelValue:{},item:{type:Object,default:void 0},formSlot:{type:Function,default:void 0},getContextFn:{type:Function,default:void 0},helper:{type:[String,Object]}},emits:["update:modelValue"],setup(e,t){const{ui:n}=sn(),{merge:a}=_n(),o=F(),r=()=>{const h=e.getContextFn?e.getContextFn():{};return{value:e.modelValue,key:e.item.key,...h}};function l(h){t.emit("update:modelValue",h)}function s(h=!1){var v,g;return h?(v=o.value)==null?void 0:v.getTargetRefAsync():(g=o.value)==null?void 0:g.getTargetRef()}const i=x(()=>{const h={...e.item};return delete h.title,delete h.label,h}),u=x(()=>{var h,v,g;return((v=(h=e.item)==null?void 0:h.helper)==null?void 0:v.position)||((g=e.helper)==null?void 0:g.position)}),c=x(()=>{var h,v;return a({},(h=e.item.helper)==null?void 0:h.tooltip,(v=e.helper)==null?void 0:v.tooltip)}),f=x(()=>{if(e.item!=null)return e.item.key.indexOf(".")>=0?e.item.key.split("."):e.item.key}),p=x(()=>e.item.label||e.item.title),m=x(()=>p.value instanceof Function);return{ui:n,updateModelValue:l,scopeFunc:r,getComponentRef:s,componentRenderRef:o,computedHelperPosition:u,computedHelperTooltip:c,computedKey:f,computedLabelIsRender:m,computedLabel:p,computedLabelRender:()=>p.value(r()),computedItem:i}}}),Rye={key:0,class:"fs-form-item-label-text"},Aye=["title"],$ye={class:"fs-form-helper-tooltip"},Pye={class:"fs-form-item-label-icon"},Nye={class:"fs-form-item-content"},Iye={class:"fs-form-item-render"},Vye={class:"fs-form-item-component"};function Lye(e,t,n,a,o,r){const l=He("fs-render"),s=He("fs-form-helper"),i=He("fs-icon"),u=He("fs-slot-render"),c=He("fs-component-render");return e.computedItem?(C(),ae(Me(e.ui.formItem.name),Re({key:0,class:"fs-form-item",[e.ui.formItem.prop||""]:e.computedKey},e.computedItem,{path:e.computedItem.key,"rule-path":e.computedItem.key}),{label:te(()=>[e.computedLabelIsRender?(C(),A("span",Rye,[J(l,{"render-func":e.computedLabelRender},null,8,["render-func"])])):(C(),A("span",{key:1,class:"fs-form-item-label-text",title:e.computedLabel},ye(e.computedLabel),9,Aye)),e.computedItem.helper&&e.computedHelperPosition==="label"?(C(),ae(Me(e.ui.tooltip.name),gn(Re({key:2},e.computedHelperTooltip)),{[e.ui.tooltip.content]:te(()=>[M("span",$ye,[J(s,{helper:e.computedItem.helper,scope:e.scopeFunc()},null,8,["helper","scope"])])]),[e.ui.tooltip.trigger]:te(()=>[M("span",Pye,[J(i,{class:"fs-form-item-label-icon-inner",icon:e.ui.icons.question},null,8,["icon"])])]),_:2},1040)):le("",!0)]),default:te(()=>{var f;return[M("div",Nye,[e.computedItem.topRender?(C(),ae(l,{key:0,"render-func":e.computedItem.topRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):le("",!0),M("div",Iye,[e.computedItem.prefixRender?(C(),ae(l,{key:0,"render-func":e.computedItem.prefixRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):le("",!0),M("div",Vye,[e.formSlot?(C(),ae(u,{key:0,slots:e.formSlot,scope:e.scopeFunc()},null,8,["slots","scope"])):((f=e.computedItem.component)==null?void 0:f.show)!==!1?(C(),A(Ae,{key:1},[e.computedItem.conditionalRender&&e.computedItem.conditionalRender.match&&e.computedItem.conditionalRender.match(e.scopeFunc())?(C(),ae(l,{key:0,"render-func":e.computedItem.conditionalRender.render,scope:e.scopeFunc()},null,8,["render-func","scope"])):e.computedItem.render?(C(),ae(l,{key:1,"render-func":e.computedItem.render,scope:e.scopeFunc()},null,8,["render-func","scope"])):(C(),ae(c,Re({key:2,ref:"componentRenderRef"},e.computedItem.component,{"model-value":e.modelValue,scope:e.scopeFunc(),"onUpdate:modelValue":e.updateModelValue}),null,16,["model-value","scope","onUpdate:modelValue"]))],64)):le("",!0)]),e.computedItem.suffixRender?(C(),ae(l,{key:1,"render-func":e.computedItem.suffixRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):le("",!0)]),e.computedItem.bottomRender?(C(),ae(l,{key:1,"render-func":e.computedItem.bottomRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):le("",!0),e.computedItem.helper&&e.computedHelperPosition!=="label"?(C(),ae(s,{key:2,helper:e.computedItem.helper,scope:e.scopeFunc()},null,8,["helper","scope"])):le("",!0)])]}),_:1},16,["path","rule-path"])):le("",!0)}const Fye=Rn(Oye,[["render",Lye]]),Dye=K({__name:"fs-form-item-col",props:{item:{type:Object,default:void 0},slots:{type:Function,default:void 0},getContextFn:{type:Function,default:void 0},col:{type:Object,default:()=>({})},helper:{type:[String,Object],default:void 0}},setup(e,{expose:t}){const{ui:n}=sn(),a=e,{doComputed:o}=kr(),r=o(()=>a.item,()=>a.getContextFn()),{merge:l}=_n(),s=Ro(),i=F();function u(){return i.value}return t({getFormItemRef:u}),(c,f)=>{var p;const m=He("fs-form-item");return d(r)&&d(r).show!==!1?(C(),ae(Me(d(n).col.name),Re({key:0,class:"fs-col"},d(l)(e.col,(p=d(r))==null?void 0:p.col)),{default:te(()=>{var h;return[d(r)&&((h=d(r))==null?void 0:h.blank)!==!0?(C(),ae(m,Re({key:0,ref_key:"formItemRef",ref:i,item:d(r),"form-slot":e.slots,"get-context-fn":e.getContextFn,helper:e.helper},d(s)),null,16,["item","form-slot","get-context-fn","helper"])):le("",!0)]}),_:1},16)):le("",!0)}}}),Bye=K({name:"FsFormHelper",props:{helper:{type:[Object,String]},scope:{}},setup(e){}}),zye={class:"fs-form-helper"},Hye={key:0},jye={key:2};function Kye(e,t,n,a,o,r){const l=He("fs-render");return C(),A("div",zye,[typeof e.helper=="string"?(C(),A("pre",Hye,ye(e.helper),1)):e.helper.render?(C(),ae(l,{key:1,"render-func":e.helper.render,scope:e.scope},null,8,["render-func","scope"])):e.helper.text?(C(),A("pre",jye,ye(e.helper.text),1)):le("",!0)])}const Wye=Rn(Bye,[["render",Kye]]);function qye(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!rn(e)}const ef=K({name:"FsFormWrapper",props:{options:{},slots:{},inner:{},innerWrapper:{},id:{},zIndex:{}},emits:["reset","submit","validationError","value-change","open","opened","mounted","closed","inner-change"],setup(e,t){var n;const{t:a}=ao(),{merge:o}=_n(),r=F(!1),l=F(),s=F(),i=F(),u=F(),c=F(),f=F(!1),p=F(),m=F(),h=F(),v=F(),g=e.id||Math.floor(Math.random()*1e6)+"",b="fs-form-wrapper_"+g,y=F({});function w(Q={}){var se;return{formWrapperId:g,formWrapperIdClass:b,close:q,doClose:W,onClosed:j,onOpened:N,open:_,title:v,fullscreenEnabled:ue,fullscreen:ne,formWrapperIs:l,formWrapperOpen:r,formWrapperBind:i,computedButtons:ce,onValueChange:V,innerBind:ee,formWrapperSlots:y,wrapper:i.value,options:s.value,formRef:c.value,form:P(),wrapperBindRef:i,formOptionsRef:s,setFormData:D,getFormData:P,reset:Y,loading:f,toggleFullscreen:ie,submit:H,mode:(se=s.value)==null?void 0:se.mode,...Q}}const _=async Q=>{var se,de;const{wrapper:he}=Q;he.onOpen&&he.onOpen(Q),v.value=d(he.title),l.value=Q.wrapper.is,u.value=he,s.value={...Uo(Q,"wrapper","slots"),slots:{...e.slots,...Q.slots,...t.slots}};const ve=Z.formWrapper.customClass(l.value),Ie=`fs-form-wrapper fs-form-wrapper-${(se=s.value)==null?void 0:se.mode} ${b} ${he[ve]||""} `;return i.value={...Uo(he,"title","onOpen","onClosed","onOpened","is","inner","beforeClose"),[ve]:Ie},y.value={...e.slots,...(de=Q.wrapper)==null?void 0:de.slots,...t.slots},t.emit("open",w()),p.value=()=>{he.onClosed&&he.onClosed(w())},m.value=()=>{he.onOpened&&he.onOpened(w())},h.value=he.beforeClose,he.fullscreen!=null&&(ne.value=he.fullscreen),t.emit("inner-change",!!u.value.inner),await Oe(),r.value=!0,await Oe(),N(),w()};async function S(){var Q;const se=u.value.saveRemind;if((Q=c.value)!=null&&Q.isDirty()&&se){let de=!1;if(se instanceof Function)de=await se();else try{await Z.messageBox.confirm({title:a("fs.form.saveRemind.title"),message:a("fs.form.saveRemind.content"),confirmButtonText:a("fs.form.saveRemind.ok"),cancelButtonText:a("fs.form.saveRemind.cancel")}),de=!0}catch{de=!1}de&&await H()}}const k=s7();let T=null;function R(){return u.value.saveDraft?(T==null&&(T=new u7({$router:k,tableName:"addFormDraft",keyType:e.id||"0"})),T):null}async function E(){var Q;const se=u.value.saveDraft,de=(Q=c.value)==null?void 0:Q.isDirty(),he=s.value.mode=="add";return de&&se&&he?(await R().updateTableValue(P()),!0):!1}async function O(){const Q=R();Q&&await Q.clearTableValue()}async function I(){const Q=R();if(Q){const se=await Q.getTableValue();se&&D(se,{mergeForm:!0})}}async function $(){let Q=!1;return u.value.saveDraft&&(Q=await E()),h.value&&h.value(w())==!1?!1:(Q||await S(),!0)}const z=x(()=>Z.type=="element"?{beforeClose:Q=>{W()}}:{}),q=async()=>{r.value=!1},W=async()=>await $()==!1?!1:(q(),!0),j=()=>{p.value&&p.value(),t.emit("closed"),s.value=null},N=()=>{if(u.value.saveDraft&&I(),t.emit("opened"),m.value&&m.value(),i.value.draggable||i.value.dragenabled){const{dragModal:Q}=Obe();Q({getModal:()=>document.querySelector(`.${b}`)})}},V=Q=>{t.emit("value-change",Q)};async function H(){f.value=!0;try{if(await c.value.submit()===!1)return;await O(),q()}finally{f.value=!1}}async function Y(){await c.value.reset()}function P(){var Q;return(Q=c.value)==null?void 0:Q.getFormData()}function D(Q,se){var de;(de=c.value)==null||de.setFormData(Q,se)}const{doComputed:B}=kr();function U(){var Q,se,de;return{row:(Q=s.value)==null?void 0:Q.initialForm,form:P(),index:(se=s.value)==null?void 0:se.index,mode:(de=s.value)==null?void 0:de.mode,attrs:s.value,getComponentRef(...he){var ve;(ve=c.value)==null||ve.getComponentRef(...he)}}}const X=B(()=>{var Q;return(Q=i.value)==null?void 0:Q.buttons},U),ce=x(()=>{const Q={cancel:{},reset:{},ok:{loading:f.value}},se=o(Q,X.value),de=[];return dt(se,(he,ve)=>{he.key=ve,de.push(he),he.onClick==null&&he.click!=null&&(he.onClick=Ie=>{he.click(w({loadingRef:Ie==null?void 0:Ie.loadingRef}))})}),Bi(de,he=>he.order??Bs.orderDefault)});gt(async()=>{e.options!=null&&await _(e.options),t.emit("mounted",bt().exposed)});const ne=F(!1),ue=x(()=>{var Q;return!((Q=l.value)!=null&&Q.endsWith("drawer"))});function ie(){ne.value=!ne.value}const Z=zn.get(),ee=x(()=>u.value.inner?Z.formWrapper.buildInnerBind({getInnerWrapper(){if(u.value.innerContainerSelector){const Q=document.querySelector(u.value.innerContainerSelector);if(Q)return Q.classList.add("fs-form-inner-wrapper"),Q;console.error(`找不到选择器为${u.value.innerContainerSelector}的元素`)}return e.innerWrapper}}):{});t.expose({formWrapperId:g,formWrapperIdClass:b,close:q,doClose:W,onClosed:j,onOpened:N,open:_,title:v,fullscreenEnabled:ue,fullscreen:ne,toggleFullscreen:ie,formOptions:s,formWrapperIs:l,formWrapperOpen:r,formWrapperBind:i,formRef:c,submit:H,reset:Y,computedButtons:ce,loading:f,getFormData:P,setFormData:D,onValueChange:V,innerBind:ee,formWrapperSlots:y,form:P(),wrapperBindRef:i,formOptionsRef:s,mode:(n=s.value)==null?void 0:n.mode});const G=Tn();return()=>{if(!i.value)return null;const Q=zn.get();let se={};const de={...G,...y.value},he=(et,rt,ke=de)=>ke[et]?ke[et](rt):null,ve=l.value||"el-dialog";if(s.value){const{index:et,mode:rt}=s.value||{},ke={_self:this,index:et,mode:rt,getFormData:P};se={[Q.formWrapper.titleSlotName]:()=>{let Qe=null;return ue.value&&(Qe=J(He("fs-icon"),{class:"fs-fullscreen-icon",onClick:ie,icon:ne.value?Q.icons.fullScreen:Q.icons.unFullScreen},null)),J("div",{class:"fs-form-header"},[J("div",{class:"fs-form-header-left"},[he("form-header-left",ke),v.value,he("form-header-right",ke)]),J("div",{class:"fs-form-header-action"},[he("form-header-action-left",ke),Qe,he("form-header-action-right",ke)])])},default:()=>{const Qe=[];return dt(ce.value,ft=>{ft.show!==!1&&Qe.push(J(He("fs-button"),ft,null))}),J("div",{class:"fs-form-wrapper-body"},[J("div",{class:"fs-form-body"},[he("form-body-top",ke),J("div",{class:"fs-form-content"},[he("form-body-left",ke),J(He("fs-form"),Re({ref:c},s.value,{onValueChange:V}),null),he("form-body-right",ke)]),he("form-body-bottom",ke)]),J("div",{class:"fs-form-footer-btns"},[he("form-footer-left",ke),Qe,he("form-footer-right",ke)])])}}}if(Q.formWrapper.hasContentWrap){const et=Q.formWrapper.hasContentWrap(ve),rt=se;if(et){const ke=Me(et);se={default:()=>J(ke,Re({closable:!0},u.value.contentProps),qye(rt)?rt:{default:()=>[rt]})}}}const Ie=Q.formWrapper.visible,De={[Ie]:r.value,["onUpdate:"+Ie]:async et=>{if(et===!1&&r.value)return await W();r.value=et}},Le=Q.formWrapper.buildOnClosedBind(ve,j),we=Q.formWrapper.customClass(ve),$e=`${ne.value?"fs-fullscreen":""} ${i.value[we]||""}`,_e={[we]:$e},Be={fullscreen:ne.value},Ke={zIndex:i.value.zIndex||e.zIndex},ot=Me(ve);return J(ot,Re(i.value,_e,De,Le,Be,ee.value,Ke,z.value),se)}}}),Uye=K({name:"FsFormProvider"}),Yye=K({...Uye,setup(e){const t=F({}),n=F({});return _t("get:form:wrapper:context",a=>n.value[a]),_t("use:form:wrapper",()=>({setContext(a,o){n.value[a]=o},open(a){const o=a.id||Math.floor(Math.random()*1e6)+"";return new Promise((r,l)=>{t.value[o]={id:o,async onMounted(s){await s.open(a),r(s)},onClosed(){a.id||delete t.value[o]}}})}})),(a,o)=>(C(),A(Ae,null,[re(a.$slots,"default"),(C(!0),A(Ae,null,it(t.value,r=>(C(),ae(d(ef),Re({key:r.id},{ref_for:!0},r),null,16))),128))],64))}});function Gye(e,t){_t("get:columns",()=>e.table.columns),_t("update:columns",n=>{t.emit("update:columns",n)}),_t("get:crudBinding",()=>e)}function Xye(e,t){const n=F(),a=()=>n.value,o=()=>n.value?n.value.getForm():(Lt.warn("请使用expose.getSearchFormData代替"),{}),r=()=>n.value?n.value.getValidatedForm():(Lt.warn("请使用expose.getSearchValidatedFormData代替"),{});function l({form:s,mergeForm:i=!1}){n.value&&n.value.setForm(s,i)}return{searchRef:n,getSearchRef:a,getSearchFormData:o,setSearchFormData:l,getSearchValidatedFormData:r}}function Jye(e,t,n){return{tabsBinding:x(()=>{var a,o,r,l,s,i,u;if(t.tabs&&t.tabs.show&&t.tabs.name){let c=null;const f={...t.tabs};return(a=t.search)!=null&&a.columns&&(l=(r=(o=t.search)==null?void 0:o.columns[t.tabs.name])==null?void 0:r.component)!=null&&l.dict&&(c=(u=(i=(s=t.search)==null?void 0:s.columns[t.tabs.name])==null?void 0:i.component)==null?void 0:u.dict,f.value==null&&(f.value=c.value),f.label==null&&(f.label=c.label),f.options==null&&(f.options=c.data||[])),{...f,modelValue:t.search.validatedForm&&t.search.validatedForm[t.tabs.name],"onUpdate:modelValue":p=>{n.emit("tab-change",{[t.tabs.name]:p})}}}return{show:!1}})}}function pp(e,t){if(!e)return{};const n={};return dt(e,(a,o)=>{o.startsWith(t)&&(n[o]=a)}),n}function Zye(e,t,{tableRef:n,containerRef:a}){var o;const r=zn.get();let l=r.table;if(((o=e.table)==null?void 0:o.tableVersion)==="v2"&&(l=r.tableV2),l.hasMaxHeight(e.table))return{};if(!l.fixedHeaderNeedComputeBodyHeight)return{};const s=F(null);function i(){var c;const f=(c=n==null?void 0:n.value)==null?void 0:c.$el;if(f==null||f.querySelector==null)return;const p=f.querySelector(l.headerDomSelector);if(p==null)return;const m=f.getBoundingClientRect().height,h=p.getBoundingClientRect().height;s.value=m-h-2+(e.table.maxHeightAdjust||0),Lt.debug("table max height recomputed ",s.value)}function u(){var c;const f=(c=n==null?void 0:n.value)==null?void 0:c.$el;if(f==null)return;const p=f.parentNode;new ResizeObserver(function(m){Lt.debug("table resized",m),m.length>0&&m[0].contentRect.height>0&&(i(),setTimeout(()=>{i()},200),setTimeout(()=>{i()},500))}).observe(p)}return gt(async()=>{await Oe(),await Oe(),u()}),{maxHeightRef:s,computeBodyHeight:i}}function Qye(e,t){const n=zn.get(),a=F(),o=F(),r=F(),{maxHeightRef:l,computeBodyHeight:s}=Zye(e,t,{tableRef:a,containerRef:r}),{merge:i}=_n(),u=Wt(e,"table"),c=x(()=>{var _;let S={};if((l==null?void 0:l.value)!=null){let T=n.table;((_=e.table)==null?void 0:_.tableVersion)==="v2"&&(T=n.tableV2),S=T.buildMaxHeight(l.value)}const k=ys.dash.omit(u,"loading","columns","columnsMap");return i(S,{...t.attrs,...k})}),f=Wt(e,"toolbar"),p=x(()=>pp(t.slots,"cell")),m=x(()=>pp(t.slots,"form")),h=x(()=>pp(t.slots,"search")),v=x(()=>pp(t.slots,"toolbar")),g=F(),b=x(()=>{const _={compact:e.toolbar.compact!==!1};return e.customClass&&(_[e.customClass]=!0),_}),y=F(),w=F(!1);return{tableRef:a,containerRef:r,toolbarRef:o,computedTable:c,computedToolbar:f,computedCellSlots:p,formWrapperRef:g,isFormInner:w,onFormInnerChange:_=>{w.value=_},computedFormSlots:m,computedSearchSlots:h,computedToolbarSlots:v,computeBodyHeight:s,computedClass:b,innerWrapperRef:y}}const e3e=K({name:"FsCrud",inheritAttrs:!1,props:{id:{type:String,default:""},table:{type:Object,default(){return{}}},data:{type:Array},rowHandle:{type:Object,default(){return{}}},search:{type:Object,default(){return{}}},toolbar:{type:Object,default(){return{}}},actionbar:{type:Object,default(){return{}}},tabs:{type:Object,default(){return{}}},addForm:{type:Object,default(){return{}}},editForm:{type:Object,default(){return{}}},viewForm:{type:Object,default(){return{}}},pagination:{type:Object,default(){return{show:!1}}},container:{type:Object,default(){return{}}},customClass:{},form:{type:Object,default(){return{}}},selection:{type:Object,default(){return{show:!1}}}},emits:["update:search","update:compact","update:columns","form-value-change","update:modelValue","tab-change"],setup(e,t){const{ui:n}=sn();Gye(e,t);const a=Xye(),o=Jye(a,e,t),r=Qye(e,t);return{ui:n,...a,...r,...o}}}),t3e={class:"fs-crud-search"},n3e={key:0,class:"fs-crud-actionbar"},a3e={key:0,class:"fs-crud-toolbar"},o3e={class:"fs-crud-pagination"},r3e={class:"fs-pagination-left"},l3e={class:"fs-pagination"},s3e={class:"fs-pagination-right"};function i3e(e,t,n,a,o,r){var l;const s=He("fs-actionbar"),i=He("fs-toolbar"),u=He("fs-tabs-filter"),c=He("fs-table"),f=He("fs-form-wrapper");return C(),ae(Me(((l=e.container)==null?void 0:l.is)||"fs-layout-default"),Re({ref:"containerRef",class:"fs-crud-container"},e.container,{class:e.computedClass}),{"header-top":te(()=>[re(e.$slots,"header-top")]),"header-bottom":te(()=>[re(e.$slots,"header-bottom")]),"header-middle":te(()=>[re(e.$slots,"header-middle")]),search:te(()=>[M("div",t3e,[(C(),ae(Me(e.search.is||"fs-search"),Re({ref:"searchRef"},e.search,{slots:e.computedSearchSlots}),null,16,["slots"]))])]),actionbar:te(()=>[e.actionbar&&e.actionbar.show!==!1?(C(),A("div",n3e,[re(e.$slots,"actionbar-left"),J(s,gn(va(e.actionbar)),null,16),re(e.$slots,"actionbar-right")])):le("",!0)]),toolbar:te(()=>[e.toolbar&&e.toolbar.show!==!1?(C(),A("div",a3e,[re(e.$slots,"toolbar-left"),J(i,Re({ref:"toolbarRef"},e.toolbar,{slots:e.computedToolbarSlots,columns:e.table.columns}),null,16,["slots","columns"]),re(e.$slots,"toolbar-right")])):le("",!0)]),tabs:te(()=>[e.tabsBinding.show?(C(),ae(u,Re({key:0,ref:"tabsRef",class:"fs-tabs"},e.tabsBinding),null,16)):le("",!0)]),table:te(()=>[J(c,Re({ref:"tableRef",class:"fs-crud-table"},e.computedTable,{columns:e.table.columns,loading:e.table.loading,"row-handle":e.rowHandle,data:e.data,"cell-slots":e.computedCellSlots}),null,16,["columns","loading","row-handle","data","cell-slots"])]),form:te(()=>[M("div",{ref:"innerWrapperRef",class:L(["fs-form-wrapper-container",{"fs-form-inner-wrapper":e.isFormInner}])},[J(f,{ref:"formWrapperRef",slots:e.computedFormSlots,"inner-wrapper":e.innerWrapperRef,onInnerChange:e.onFormInnerChange,onValueChange:t[0]||(t[0]=p=>e.$emit("form-value-change",p))},null,8,["slots","inner-wrapper","onInnerChange"])],2)]),pagination:te(()=>[M("div",o3e,[M("div",r3e,[re(e.$slots,"pagination-left")]),M("div",l3e,[e.pagination.show!==!1?(C(),ae(Me(e.ui.pagination.name),gn(Re({key:0},e.pagination)),null,16)):le("",!0)]),M("div",s3e,[re(e.$slots,"pagination-right")])])]),"footer-top":te(()=>[re(e.$slots,"footer-top")]),"footer-bottom":te(()=>[re(e.$slots,"footer-bottom")]),default:te(()=>[re(e.$slots,"default")]),_:3},16,["class"])}const u3e=Rn(e3e,[["render",i3e]]),c3e=K({name:"FsRowHandle",props:{dropdown:{type:Object},buttons:{type:Object},group:{type:Object},active:{type:String,default:"default"},scope:{type:Object,default:()=>({})}},emits:["handle"],setup(e,t){const{ui:n}=sn(),{merge:a}=_n(),{t:o}=ao(),r=x(()=>({...e.scope,row:e.scope[n.tableColumn.row],index:e.scope[n.tableColumn.index]})),l=(g,b)=>{const y=e.scope[n.tableColumn.index],w=e.scope[n.tableColumn.row],_={key:g.key,row:w,btn:g,index:y,...e.scope,loadingRef:b==null?void 0:b.loadingRef};if(g.click)return g.click(_);t.emit("handle",_)},{doComputed:s}=kr(),i=x(()=>({dropdown:e.dropdown,buttons:e.buttons,active:e.active,group:e.group})),u=s(()=>i.value,()=>{const g=e.scope[n.tableColumn.index],b=e.scope[n.tableColumn.row];return{...e.scope,index:g,row:b}}),c=x(()=>{let g=null;if(u.value.active==null||u.value.active==="default"){const y={view:{key:"view",text:o("fs.rowHandle.view.text"),title:o("fs.rowHandle.view.text")},copy:{key:"copy",text:o("fs.rowHandle.copy.text"),title:o("fs.rowHandle.copy.text")},edit:{key:"edit",type:"primary",text:o("fs.rowHandle.edit.text"),title:o("fs.rowHandle.edit.text")},remove:{key:"remove",...n.button.colors("danger"),text:o("fs.rowHandle.remove.text"),title:o("fs.rowHandle.remove.text")}};g=a(y,u.value.buttons)}else g=u.value.group[u.value.active];const b=[];return dt(g,(y,w)=>{y.key=w,y.show!==!1&&b.push(y)}),Bi(b,y=>y.order??Bs.orderDefault)}),f=x(()=>u.value.dropdown==null||u.value.dropdown.atLeast==null||u.value.dropdown.atLeast<=0||c.value.length<=u.value.dropdown.atLeast?0:u.value.dropdown.atLeast||0);function p(g,b){return g.dropdown===!0||f.value>0&&f.value{let g=0;for(const b of c.value){if(p(b,g))return!0;g++}return!1});function h(g){for(let b of c.value)if(g===b.key){l(b);return}}const v=x(()=>{const g={};if(n.dropdown.renderMode!=="slot"){const b=c.value,y=[];dt(b,(w,_)=>{w.show!==!1&&p(w,_)&&y.push({[n.dropdown.value]:w.key,[n.dropdown.label]:w.text,title:w.title})}),g.options=y}return{...Uo(e.dropdown,"more","atLeast"),...n.dropdown.command(h),...g}});return{ui:n,hasDropdownBtn:m,computedHandleBtns:c,doDropdownItemClick:h,computedDropdownAtLeast:f,doClick:l,isDropdownBtn:p,scopeRef:r,computedDropdownBinding:v}}}),d3e={class:"fs-row-handle"},f3e={key:0,class:"row-handle-btn fs-handle-row-dropdown"};function p3e(e,t,n,a,o,r){const l=He("fs-render"),s=He("fs-button"),i=He("fs-icon");return C(),A("div",d3e,[re(e.$slots,"cell-rowHandle-left",gn(va(e.scopeRef))),(C(!0),A(Ae,null,it(e.computedHandleBtns,(u,c)=>(C(),A(Ae,{key:c},[u.show!==!1&&!e.isDropdownBtn(u,c)?(C(),A(Ae,{key:0},[u.render?(C(),ae(l,{key:0,"render-func":u.render,scope:e.scopeRef},null,8,["render-func","scope"])):(C(),ae(s,Re({key:1,class:"row-handle-btn"},{ref_for:!0},u,{onClick:nt(f=>e.doClick(u,f),["stop"])}),null,16,["onClick"]))],64)):le("",!0)],64))),128)),re(e.$slots,"cell-rowHandle-middle",gn(va(e.scope))),e.hasDropdownBtn?(C(),A("span",f3e,[(C(),ae(Me(e.ui.dropdown.name),gn(va(e.computedDropdownBinding)),{[e.ui.dropdown.slotName]:te(()=>[e.ui.dropdown.renderMode==="slot"?(C(),ae(Me(e.ui.dropdownMenu.name),gn(Re({key:0},e.ui.dropdownMenu.command(e.doDropdownItemClick))),{default:te(()=>[(C(!0),A(Ae,null,it(e.computedHandleBtns,(u,c)=>(C(),A(Ae,{key:c},[u.show!==!1&&e.isDropdownBtn(u,c)?(C(),ae(Me(e.ui.dropdownItem.name),Re({key:0,[e.ui.dropdownItem.command||""]:u.key},{ref_for:!0},u.dropdownItem,{disabled:u.disabled}),{default:te(()=>[M("div",Re({class:"fs-row-handle-dropdown-item"},{ref_for:!0},u),[u.icon?(C(),ae(i,{key:0,icon:u.icon},null,8,["icon"])):le("",!0),Ct(" "+ye(u.text||u.title),1)],16)]),_:2},1040,["disabled"])):le("",!0)],64))),128))]),_:1},16)):le("",!0)]),default:te(()=>[J(s,gn(va(e.dropdown.more)),null,16)]),_:2},1040))])):le("",!0),re(e.$slots,"cell-rowHandle-right",gn(va(e.scope)))])}const h3e=Rn(c3e,[["render",p3e]]);function hi(){return hi=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Gp(e,t,n){return v3e()?Gp=Reflect.construct.bind():Gp=function(a,o,r){var l=[null];l.push.apply(l,o);var s=Function.bind.apply(a,l),i=new s;return r&&tf(i,r.prototype),i},Gp.apply(null,arguments)}function g3e(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function _g(e){var t=typeof Map=="function"?new Map:void 0;return _g=function(n){if(n===null||!g3e(n))return n;if(typeof n!="function")throw new TypeError("Super expression must either be null or a function");if(typeof t<"u"){if(t.has(n))return t.get(n);t.set(n,a)}function a(){return Gp(n,arguments,Cg(this).constructor)}return a.prototype=Object.create(n.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),tf(a,n)},_g(e)}var b3e=/%[sdj%]/g,y3e=function(){};function Sg(e){if(!e||!e.length)return null;var t={};return e.forEach(function(n){var a=n.field;t[a]=t[a]||[],t[a].push(n)}),t}function ko(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a=r)return s;switch(s){case"%s":return String(n[o++]);case"%d":return Number(n[o++]);case"%j":try{return JSON.stringify(n[o++])}catch{return"[Circular]"}break;default:return s}});return l}return e}function w3e(e){return e==="string"||e==="url"||e==="hex"||e==="email"||e==="date"||e==="pattern"}function ya(e,t){return!!(e==null||t==="array"&&Array.isArray(e)&&!e.length||w3e(t)&&typeof e=="string"&&!e)}function C3e(e,t,n){var a=[],o=0,r=e.length;function l(s){a.push.apply(a,s||[]),o++,o===r&&n(a)}e.forEach(function(s){t(s,l)})}function Q8(e,t,n){var a=0,o=e.length;function r(l){if(l&&l.length){n(l);return}var s=a;a=a+1,s=0;l--)r.childrenPath[l]=jL(r.strChildrenPath[l])}return t({value:a,callback:o,options:r,obj:a}),a}return n}const z1e=B1e({isString:Nd}),H1e={forEachDeep:z1e},j1e={omit(e,...t){const n=Object.keys(e.value),a={};for(const o of n)o!=="loading"&&(t.indexOf(o)>=0||(a[o]=e.value[o]));return a}};function q8(e){const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.opacity="0",t.style.pointerEvents="none",t.style.zIndex="-1",document.body.appendChild(t);try{t.select(),t.setSelectionRange(0,99999);const n=document.execCommand("copy");return document.body.removeChild(t),n?!0:(console.error("传统复制方法失败"),!1)}catch(n){return console.error("传统复制方法出错: ",n),document.body.removeChild(t),!1}}async function K1e(e){try{return!navigator.clipboard||!navigator.clipboard.writeText?(console.warn("Clipboard API not supported, falling back to traditional method"),q8(e)):(await navigator.clipboard.writeText(e),!0)}catch(t){return console.error("复制失败: ",t),q8(e)}}async function W1e(){return new Promise((e,t)=>{const n=document.createElement("textarea");n.style.position="fixed",n.style.top="0",n.style.left="0",n.style.opacity="0",document.body.appendChild(n);try{if(n.focus(),document.execCommand("paste")){const a=n.value;document.body.removeChild(n),e(a)}else document.body.removeChild(n),t(new Error("传统读取方法失败"))}finally{document.body.removeChild(n)}})}async function q1e(){try{if(!navigator.clipboard||!navigator.clipboard.readText)throw console.warn("Clipboard API not supported for reading"),new Error("浏览器不支持读取剪贴板");if(navigator.permissions&&(await navigator.permissions.query({name:"clipboard-read"})).state==="denied")throw new Error("剪贴板读取权限被拒绝");return await navigator.clipboard.readText()}catch(e){return console.error("读取剪贴板失败: ",e),await W1e()}}const sb=Nt({store:{}});function U1e(e,t="__default__"){sb.store[t]=e}function Y1e(e="__default__"){return sb.store[e]}function G1e(e="__default__"){sb.store[e]=""}const X1e=Object.freeze(Object.defineProperty({__proto__:null,clearMemoryClipboard:G1e,copyToClipboard:K1e,copyToMemory:U1e,readToClipboard:q1e,readToMemory:Y1e},Symbol.toStringTag,{value:"Module"})),ys={logger:Lt,dash:j1e,clipboard:X1e},Zd={commonOptions(e){return{}},defaultOptions(e){const{t,crudOptionsRef:n}=e,a=r=>x(()=>t(r)),o=zn.get();return{settings:{plugins:{mobile:{enabled:!0,props:{isMobile:x(()=>window.innerWidth<768)}}}},mode:{},status:{},search:{container:{is:"fs-search-layout-default",collapse:!0,col:{span:4}},formItem:{wrapperCol:{style:{}}},options:{...o.form.inlineLayout,showFeedback:!1},onValidateError({trigger:r}){r==="search"&&o.notification.error({message:t("fs.search.error.message")})},collapse:!0,show:!0,buttons:{search:{className:{"fs-search-btn-search":!0},icon:o.icons.search},reset:{className:{"fs-search-btn-reset":!0},icon:o.icons.refresh}}},form:{pasteKey:"__default__",labelPlacement:"left",labelPosition:"right",labelWidth:"120px",style:{"grid-template-columns":"50% 50%"},row:{gutter:10},col:{span:12},labelAlign:"right",labelCol:{span:4},wrapperCol:{span:18},wrapper:{is:o.dialog.name,...o.formWrapper.buildWidthBind(o.dialog.name,"960px"),...o.formWrapper.buildInitBind(o.dialog.name),dragenabled:!0,destroyOnClose:!0,...o.dialog.footer(),buttons:{copy:{text:a("fs.form.copy"),order:1,click:async({form:r})=>{var l,s;const i=(s=(l=n.value)==null?void 0:l.form)==null?void 0:s.pasteKey;ys.clipboard.copyToMemory(JSON.stringify(r),i),o.message.success(t("fs.form.copySuccess"))}},paste:{text:a("fs.form.paste"),order:2,badge:x(()=>{var r,l;const s=(l=(r=n.value)==null?void 0:r.form)==null?void 0:l.pasteKey,i=ys.clipboard.readToMemory(s);return{[o.badge.value]:i?1:0,[o.badge.dot]:!!i}}),click:async({form:r})=>{var l,s;const i=(s=(l=n.value)==null?void 0:l.form)==null?void 0:s.pasteKey,u=ys.clipboard.readToMemory(i);if(u)try{const c=JSON.parse(u);Fs(r,c)}catch(c){console.error(c)}finally{ys.clipboard.clearMemoryClipboard(i)}}},cancel:{text:a("fs.form.cancel"),order:4,click:({doClose:r})=>{r()}},reset:{text:a("fs.form.reset"),order:3,click:({reset:r})=>{r()}},ok:{text:a("fs.form.ok"),order:5,type:"primary",click:async({submit:r})=>{await r()}}}}},addForm:{mode:"add",wrapper:{title:a("fs.addForm.title")}},editForm:{mode:"edit",wrapper:{title:a("fs.editForm.title")}},viewForm:{mode:"view",wrapper:{title:a("fs.viewForm.title"),buttons:{reset:{show:!1},cancel:{show:!1}}}},rowHandle:{width:250,title:a("fs.rowHandle.title"),order:1e3,dropdown:{more:{text:null,type:"primary",icon:o.icons.more}}},pagination:{background:!0,pageSize:20,[o.pagination.currentPage]:1,[o.pagination.total]:1,pageSizes:[5,10,20,50],layout:"total, sizes, prev, pager, next, jumper",showSizeChanger:!0,showQuickJumper:!0,showSizePicker:!0,showTotal:r=>t("fs.pagination.showTotal",[r])},table:{show:!0,height:"100%",rowKey:o.table.defaultRowKey,stripe:!0,border:!0,bordered:!0,singleLine:!1,scrollTopOnRefreshed:!0,editable:{enabled:!1,rowKey:"$editable_id"},pagination:!1},toolbar:{compact:!0,buttons:{search:{className:{"fs-toolbar-btn-search":!0}},compact:{className:{"fs-toolbar-btn-compact":!0}},refresh:{className:{"fs-toolbar-btn-refresh":!0}},export:{className:{"fs-toolbar-btn-export":!0}},columns:{className:{"fs-toolbar-btn-columns":!0}}}},actionbar:{buttons:{add:{className:{"fs-actionbar-btn-add":!0},type:"primary",text:a("fs.actionbar.add")}}}}}};function fv(e,t){return e.type!=="antdv"?{}:{labelCol:{span:t},wrapperCol:{span:23-t}}}function J1e(){const{ui:e}=sn();return{colspan:{form:{col:{span:24},...fv(e,2)}},colspan3:{form:{col:{span:24},...fv(e,3)}},colspan4:{form:{col:{span:24},...fv(e,4)}}}}const Z1e=Object.freeze(Object.defineProperty({__proto__:null,default:J1e},Symbol.toStringTag,{value:"Module"}));function Q1e(){const e=zn.get();return{button:{form:{component:{name:e.input.name,vModel:e.input.modelValue,[e.input.clearable]:!0}},column:{component:{name:"fs-button",vModel:"text"}}},link:{form:{component:{name:e.input.name,vModel:e.input.modelValue,[e.input.clearable]:!0}},column:{component:{name:"fs-button",vModel:"text",...e.button.linkType}}}}}const e4e=Object.freeze(Object.defineProperty({__proto__:null,default:Q1e},Symbol.toStringTag,{value:"Module"}));function t4e(){const e=zn.get();return{"dict-cascader":{search:{component:{clearable:!0}},form:{component:{name:"fs-dict-cascader",vModel:e.cascader.modelValue,[e.cascader.clearable]:!0}},column:{component:{name:"fs-dict-cascader-format"}}}}}const n4e=Object.freeze(Object.defineProperty({__proto__:null,default:t4e},Symbol.toStringTag,{value:"Module"})),f7={name:"zh-cn",fs:{component:{select:{placeholder:"请选择"}},addForm:{title:"添加"},editForm:{title:"编辑"},viewForm:{title:"查看"},rowHandle:{title:"操作",remove:{text:"删除",confirmTitle:"删除提示",confirmMessage:"您确定要删除该记录吗?",success:"删除成功!",confirmText:"确定",cancelText:"取消"},copy:{text:"复制"},edit:{text:"编辑"},view:{text:"查看"}},form:{cancel:"取消",ok:"确定",reset:"重置",saveRemind:{title:"提示",content:"表单数据有变更,是否保存",cancel:"不保存",ok:"保存"},copy:"复制",paste:"粘贴",copySuccess:"表单数据已复制,您可以在添加对话框中粘贴"},actionbar:{add:"添加"},toolbar:{columnFilter:{title:"列设置",fixed:"固定",order:"排序",reset:"还原",confirm:"确定",unnamed:"未命名"},search:{title:"查询显示"},refresh:{title:"刷新"},compact:{title:"紧凑模式"},export:{title:"导出"},columns:{title:"列设置"}},search:{container:{collapseButton:{text:{collapse:"收起",expand:"展开"}}},search:{text:"查询"},reset:{text:"重置"},error:{message:"查询表单校验失败"}},pagination:{showTotal:"共 {0} 条"},date:{formatter:{to:"至"}},extends:{tableSelect:{view:"查看",select:"选择",ok:"确定",cancel:"取消"},cropper:{title:"图片裁剪",preview:"预览",reChoose:"重新选择",flipX:"左右翻转",flipY:"上下翻转",reset:"重置",cancel:"取消",confirm:"确定",chooseImage:"+ 选择图片",onlySupport:"仅支持",sizeLimit:"大小不能超过",sizeNoLimit:"大小不限制"},fileUploader:{text:"文件上传",limitTip:"文件数量不能超过 {0}",sizeLimitTip:"文件大小不能超过 {0},当前大小:{1}",loadError:"图片加载失败",pixelLimitTip:"图片像素尺寸不能超过 宽:{0},高:{1}",hasUploading:"还有文件正在上传,请等待上传完成,或删除它"}}}},a4e={fs:{component:{select:{placeholder:"please select"}},addForm:{title:"add"},editForm:{title:"edit"},viewForm:{title:"view"},rowHandle:{title:"handle",remove:{text:"remove",confirmTitle:"remove tip",confirmMessage:"Are you sure you want to delete this record?",success:"delete success!",confirmText:"confirm",cancelText:"cancel"},copy:{text:"copy"},edit:{text:"edit"},view:{text:"view"}},form:{cancel:"cancel",ok:"ok",reset:"reset",saveRemind:{title:"save remind",content:"The form data has changed, whether to save",cancel:"don't save",ok:"save"},copy:"copy",paste:"paste"},actionbar:{add:"add"},toolbar:{columnFilter:{title:"columns set",fixed:"fixed",order:"sort",reset:"reset",confirm:"ok",unnamed:"unnamed"},search:{title:"show search bar"},refresh:{title:"refresh"},compact:{title:"compact mode"},export:{title:"export"},columns:{title:"columns set"}},search:{container:{collapseButton:{text:{collapse:"collapse",expand:"expand"}}},search:{text:"search"},reset:{text:"reset"},error:{message:"form valid error"}},pagination:{showTotal:"Total {0} items"},date:{formatter:{to:"to"}},extends:{tableSelect:{view:"view",select:"select"},cropper:{title:"image crop",preview:"preview",reChoose:"reChoose",flipX:"flipX",flipY:"flipY",reset:"reset",cancel:"cancel",confirm:"confirm",chooseImage:"+ choose image",onlySupport:"only",sizeLimit:"size limit",sizeNoLimit:" no limit"},fileUploader:{text:"fileUpload",limitTip:"file count limit: {0}",sizeLimitTip:"file size limit: {0}, current size: {1}",loadError:"image load error",pixelLimitTip:"pixel limit : width:{0},height:{1}",hasUploading:"The file is being uploaded, please wait for the upload to complete or delete"}}}};function o4e(e,t){let n=on(f7,e);return n==null?e:t instanceof Array?(dt(t,(a,o)=>{n=n.replace("{"+o+"}",a)}),n):n.replace("{n}",t)}class r4e{constructor(){$t(this,"vueI18nInstance",null)}t(t,n){return o4e(t,n)}setVueI18n(t){if(!t)return;t.global&&(t=t.global);const n=t.availableLocales;for(const a of n){if(a.startsWith("zh")){const o=t.getLocaleMessage(a),r=Kn(o.fs||{});t.mergeLocaleMessage(a,{fs:f7.fs}),t.mergeLocaleMessage(a,{fs:r})}else if(a.startsWith("en")){const o=t.getLocaleMessage(a),r=Kn(o.fs||{});t.mergeLocaleMessage(a,{fs:a4e.fs}),t.mergeLocaleMessage(a,{fs:r})}Lt.debug("i18n",t.getLocaleMessage(a))}this.vueI18nInstance=t}}const jp=new r4e;function ao(){return jp.vueI18nInstance!=null?{t:jp.vueI18nInstance.t}:{t:jp.t}}var tm=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function nm(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var p7={exports:{}};(function(e,t){(function(n,a){e.exports=a()})(tm,function(){return function(n,a){var o=a.prototype,r=o.format;o.format=function(l){var s=this,i=this.$locale();if(!this.isValid())return r.bind(this)(l);var u=this.$utils(),c=(l||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(f){switch(f){case"Q":return Math.ceil((s.$M+1)/3);case"Do":return i.ordinal(s.$D);case"gggg":return s.weekYear();case"GGGG":return s.isoWeekYear();case"wo":return i.ordinal(s.week(),"W");case"w":case"ww":return u.s(s.week(),f==="w"?1:2,"0");case"W":case"WW":return u.s(s.isoWeek(),f==="W"?1:2,"0");case"k":case"kk":return u.s(String(s.$H===0?24:s.$H),f==="k"?1:2,"0");case"X":return Math.floor(s.$d.getTime()/1e3);case"x":return s.$d.getTime();case"z":return"["+s.offsetName()+"]";case"zzz":return"["+s.offsetName("long")+"]";default:return f}});return r.bind(this)(c)}}})})(p7);var l4e=p7.exports;const s4e=nm(l4e);tt.extend(s4e);function pv(e,t){if(!i7.isEmpty(e))return tt(e).format(t)}function h7(e,t="YYYY-MM-DD HH:mm:ss"){if(e!=null&&e instanceof Array&&e.length>1){if(i7.hasEmpty(e))return;const{t:n}=ao();return`${pv(e[0],t)} ${n("fs.date.formatter.to")} ${pv(e[1],t)}`}return pv(e,t)}function i4e(e){const{value:t}=e;return h7(t,"YYYY-MM-DD")}function u4e(e){const{value:t}=e;return h7(t,"YYYY-MM-DD HH:mm:ss")}var m7={exports:{}};(function(e,t){(function(n,a){e.exports=a()})(tm,function(){var n="week",a="year";return function(o,r,l){var s=r.prototype;s.week=function(i){if(i===void 0&&(i=null),i!==null)return this.add(7*(i-this.week()),"day");var u=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var c=l(this).startOf(a).add(1,a).date(u),f=l(this).endOf(n);if(c.isBefore(f))return 1}var p=l(this).startOf(a).date(u).startOf(n).subtract(1,"millisecond"),m=this.diff(p,n,!0);return m<0?l(this).startOf("week").week():Math.ceil(m)},s.weeks=function(i){return i===void 0&&(i=null),this.week(i)}}})})(m7);var c4e=m7.exports;const d4e=nm(c4e);var v7={exports:{}};(function(e,t){(function(n,a){e.exports=a()})(tm,function(){return function(n,a){a.prototype.weekday=function(o){var r=this.$locale().weekStart||0,l=this.$W,s=(l{b7.push(e.default)});const Qd={};function P4e(){return Qd}function N4e(e){return Qd[e]}function I4e(e){for(const t in e)Qd[t]=e[t]}const y7={getType:N4e,addTypes:I4e,getTypes:P4e,install(){for(const e of b7)dt(e(),(t,n)=>{Qd[n]=t});Lt.debug("types installed:",Qd)}},V4e=K({name:"FsPage",setup(){const e=F();return gt(()=>{window.getComputedStyle(e.value.parentNode).getPropertyValue("position")!=="relative"&&ys.logger.warn("fs-page父节点的position建议为relative,因为fs-page为相对定位(position:absolute),如果样式没有异常,你可以忽略此警告")}),{pageRef:e}}}),Rn=(e,t)=>{const n=e.__vccOpts||e;for(const[a,o]of t)n[a]=o;return n},L4e={ref:"pageRef",class:"fs-page"},F4e={key:0,class:"fs-page-header"},D4e={class:"fs-page-content"},B4e={key:1,class:"fs-page-footer"};function z4e(e,t,n,a,o,r){return C(),A("div",L4e,[e.$slots.header!=null?(C(),A("div",F4e,[re(e.$slots,"header")])):le("",!0),M("div",D4e,[re(e.$slots,"default")]),e.$slots.footer!=null?(C(),A("div",B4e,[re(e.$slots,"footer")])):le("",!0)],512)}const H4e=Rn(V4e,[["render",z4e]]);function vg(e){return e!=null&&(e instanceof w7||nn(e)||Qa(e))}function U8(e){return vg(e)&&!e.cloneable}function j4e(e,...t){function n(o,r){if(r!=null&&(Un(o)||vg(r)))return r}let a=null;for(const o of t)vg(o)&&(a=o);return a||UV(e,...t,n)}function K4e(e){if(U8(e))return e;function t(n){if(U8(n))return n}return eV(e,t)}let w7=class{constructor(){$t(this,"cloneable",!1)}setCloneable(e){this.cloneable=e}};function _n(){return{merge:j4e,cloneDeep:K4e,UnMergeable:w7}}const{cloneDeep:W4e}=_n();function q4e(e){return e instanceof ib}function U4e(e){return e instanceof am}function Y8(e,t,n){const a={};if(e==null)return a;const o=n?q4e:U4e;return H1e.forEachDeep(e,(r,l,s,i)=>{if(r==null)return!1;if(o(r)){const u=i.path;if(t){for(const c of t)if(typeof c=="string"){if(u.startsWith(c))return!1}else if(c instanceof RegExp&&c.test(u))return!0}return a[u]=r,!1}return!Qa(r)},{checkCircular:!0}),a}function Y4e(e,t){if(e==null||Object.keys(e).length<=0)return null;const n={};return dt(e,(a,o)=>{n[o]=a.buildAsyncRef(t)}),n}function G4e(e,t){t==null||Object.keys(t).length<=0||dt(t,(n,a)=>{Zn(e,a,n.value==null?null:n.value)})}function X4e(e,t,n,a){const o=x(()=>{const s=e();return Y8(s,n,!1)}),r=x(()=>{const s=e();return Y8(s,n,!0)}),l=Y4e(r.value,t);return x(()=>{let s=e();const i=Object.keys(r.value).length,u=Object.keys(o.value).length;if(i>0||u>0){if(s=W4e(s),u>0){const c=t?t():{};dt(o.value,(f,p)=>{Zn(s,p,f.computeFn(c))})}i>0&&G4e(s,l)}return a?a(s):s})}class am{constructor(t){$t(this,"computeFn"),this.computeFn=t}}function J4e(e){return new am(e)}class ib{constructor(t){$t(this,"watch"),$t(this,"asyncFn"),$t(this,"defaultValue");const{asyncFn:n,defaultValue:a}=t;this.watch=t.watch,this.asyncFn=n,this.defaultValue=a}buildAsyncRef(t){t=t||function(){};const n=F(this.defaultValue),a=x(()=>this.watch?this.watch(t()):null);return pe(()=>a.value,async o=>{n.value=await this.asyncFn(o,t())},{immediate:!0}),n}}function Z4e(e){return new ib(e)}function kr(){return{ComputeValue:am,compute:J4e,AsyncComputeValue:ib,asyncCompute:Z4e,doComputed:X4e}}const Bs={orderDefault:1},{merge:or,cloneDeep:Tl}=_n(),zc=[];function C7(e){I_(zc,t=>t.name===e.name),zc.push(e),zc.sort((t,n)=>t.order-n.order),Lt.debug("mergeColumnPlugin register success: current:",e,"registered:",zc)}function Q4e(e){var t,n;if(e.dict){if((t=e.column)!=null&&t.component){const a=Os(Tl(e.dict));a.cloneable&&(a.cloneable=!1),e.column.component.dict=or(a,e.column.component.dict)}if((n=e.form)!=null&&n.component){const a=Os(Tl(e.dict));a.cloneable&&(a.cloneable=!1),e.form.component.dict=or(a,e.form.component.dict)}}return e}function ebe(e){if(!e.type)return e;let t=[];typeof e.type=="string"?t=[e.type]:e.type instanceof Array&&(t=e.type);const n={};for(const a of t){const o=y7.getType(a);o&&or(n,o)}return e=or(n,e),e}const hc=[];hc.push({name:"type",handle:ebe,order:-2});hc.push({name:"dict",handle:Q4e,order:-1});hc.push({name:"viewFormUseCellComponent",order:10,handle:(e={},t={})=>{var n,a;if(!((n=t.settings)!=null&&n.viewFormUseCellComponent))return e;const o={component:((a=e.column)==null?void 0:a.component)||{}};return(e.type==="text"||e.type instanceof Array&&e.type.includes("text"))&&(o.render||(o.render=r=>{const{value:l}=r;return J("span",null,[l])})),or(e,{viewForm:o}),e}});hc.push({name:"NaiveFormRuleFix",order:10,handle:(e={},t={})=>{var n,a,o,r,l;const{ui:s}=sn();return s.type!=="naive"||((n=e.addForm)!=null&&n.rules&&(e.addForm.rule=e.addForm.rules),(a=e.editForm)!=null&&a.rules&&(e.editForm.rule=e.editForm.rules),(o=e.viewForm)!=null&&o.rules&&(e.viewForm.rule=e.viewForm.rules),(r=e.form)!=null&&r.rules&&(e.form.rule=e.form.rules),(l=e.search)!=null&&l.rules&&(e.search.rule=e.search.rules)),e}});hc.push({name:"DefaultOrder",order:0,handle:(e={},t={},n)=>(on(e,"column.order")==null&&Zn(e,"column.order",n),on(e,"form.order")==null&&Zn(e,"form.order",n),e)});for(const e of hc)C7(e);function ub(e,t){const n={};let a=0;return dt(e,(o,r)=>{if(o.key=r,o.children)o.children=ub(o.children,t);else for(const l of zc)o=l.handle(o,t,a);n[r]=o,a++}),n}function cb(e={},t){return dt(t,(n,a)=>{n.children?cb(e,n.children):e[a]=n}),e}function db(e={},t){return dt(t,(n,a)=>{n.children?db(e,n.children):e[a]=n}),e}function tbe(e){const t=e,n=t.column||{};return n.title==null&&(n.title=t.title),n.key=t.key,t.children&&(n.children=S7(t.children)),_7(n),Nt(n)}function _7(e){var t;e&&(t=e.component)!=null&&t.name&&typeof e.component.name!="string"&&(nn(e.component.name)||(e.component.name=un(e.component.name)))}function S7(e){let t={};return dt(e,(n,a)=>{t[a]=tbe(n)}),t=fb(t),t}function nbe(e){return Bi(e,t=>t.order??Bs.orderDefault)}function fb(e){const t=[];for(const o in e){const r=e[o];r.key=o,r.children&&zL(r.children)>0&&(r.children=fb(r.children)),t.push(r)}const n=nbe(t),a={};for(const o of n)a[o.key]=o;return a}function x7(e,t){const n={};return dt(e,a=>{const o=Tl(a[t])||{};t==="form"&&o.title==null&&(o.title=a.title),o.key=a.key,n[a.key]=o,_7(o)}),n}function Hc(e,t,n,a){const o=x7(n,t),r=or(Tl(e.form),e[t],{columns:o});return a&&a(r),r}function abe(e,t="search",n){var a;const o=x7(n,t),r={},l=((a=e.settings)==null?void 0:a.searchCopyFormProps)??["component","valueChange","title","key","label","render"];function s(i,u,c){if(sL(l,c)&&e.columns[u]){const f=e.columns[u][c];f&&(i[c]=f)}}return dt(Tl(e.form.columns),(i,u)=>{const c={};s(c,u,"valueResolve"),s(c,u,"valueBuilder"),r[u]=or(c,ur(i,l))}),or({columns:r},{columns:o},e.search)}function obe(e,t,n="form"){const{t:a}=ao(),{merge:o}=_n();t=t||{};const r={value:null},l=o(Zd.defaultOptions({t:a,crudOptionsRef:r}),Zd.commonOptions({crudOptions:e,context:t,crudExpose:null}),e);r.value=l;const s=ub(Tl(l.columns),l),i=cb({},s),u=n==="form"?"form":`${n}Form`;return Hc(l,u,i)}function rbe(e){dt(e.columns,(a,o)=>{a.key=o});const t=ub(Tl(e.columns),e);e.columns=t;const n=cb({},t);return e.table.columns=S7(Tl(t)),e.table.columnsMap=db({},e.table.columns),or(e.toolbar,{columnsFilter:{originalColumns:Tl(e.table.columns)}}),e.form=Hc(e,"form",n),e.addForm=Hc(e,"addForm",n),e.editForm=Hc(e,"editForm",n),e.viewForm=Hc(e,"viewForm",n,a=>{dt(a.columns,o=>{o.component||(o.component={}),o.component.disabled=!0})}),e.search=abe(e,"search",n),e.table.editable&&(e.table.editable.addForm=or(e.addForm.columns,e.table.editable.addForm),e.table.editable.editForm=or(e.editForm.columns,e.table.editable.editForm)),e}function Kh(e,t){dt(e,(n,a)=>{n.key||(n.key=a),n.children?Kh(n.children,t):t(n,a)})}function Wh(e,t){dt(e,(n,a)=>{n.key||(n.key=a),n.children?Wh(n.children,t):t(n,a)})}function pb(){return{buildFormOptions:obe,buildColumns:rbe,registerMergeColumnPlugin:C7,forEachColumns:Wh,doColumnsSort:fb,forEachTableColumns:Kh}}let lbe=0;const hv={};async function sbe(e){const t=e.id||`${lbe++}`,n=document.createElement("div");return new Promise((a,o)=>{let r=hv[t];r!=null&&(r.vm.exposed.open(e),a(r));const l=J(ef,{id:t,onClosed(){e.id||delete hv[t]}});l.appContext=ef._context,$l(l,n),document.body.appendChild(n);const s=l.component;r={id:t,vNode:l,vm:s,props:l.component.props},hv[t]=r,r.vm.exposed.open(e),a(r.vm.exposed)})}function ibe(){let e=null;try{e=Fe("use:form:wrapper",()=>{})()}catch(a){Lt.warn("cant inject use:form:wrapper,建议在App.vue中使用组件包裹",a)}let t=null;e==null?t=async a=>await sbe(a):t=async a=>await e.open(a);async function n(a){const{buildFormOptions:o}=pb(),r=o(a.crudOptions,a.context);return await t(r)}return{openDialog:t,openCrudFormDialog:n}}const{merge:k7}=_n(),ube=k7;function cbe(e){const{crudExpose:t}=e,{crudBinding:n}=t;sn(),ao();const{merge:a}=_n();pe(()=>{var r,l,s;return(s=(l=(r=n.value)==null?void 0:r.table)==null?void 0:l.editable)==null?void 0:s.enabled},r=>{var l,s,i,u,c;const f=(i=(s=(l=n.value)==null?void 0:l.table)==null?void 0:s.editable)==null?void 0:i.customRowHandleActive;if(f){f({enabled:r,mode:(u=n.value.table.editable)==null?void 0:u.mode,rowHandle:n.value.rowHandle});return}r?((c=n.value.table.editable)==null?void 0:c.mode)==="row"?n.value.rowHandle.active="editRow":n.value.rowHandle.active="editable":n.value.rowHandle.active="default"});const o={async enable(r,l){const s=n.value.table.editable;a(s,{enabled:!0},r),l&&l({editable:s})},disable(){var r;(r=t.getTableRef())==null||r.editable.resume(),n.value.table.editable.enabled=!1,n.value.rowHandle.active="default"},active(r){t.getTableRef().editable.active(r)},inactive(){t.getTableRef().editable.inactive()},addRow(r){t.getTableRef().editable.addRow(r)},activeCols(r){t.getTableRef().editable.activeCols(r)},resume(){t.getTableRef().editable.resume()},cancel(){t.getTableRef().editable.cancelAll()},persist(){t.getTableRef().editable.persist()},removeRow(r){t.getTableRef().editable.removeRow(r)},getEditableRow(r){var l,s;return(s=(l=t.getTableRef())==null?void 0:l.editable)==null?void 0:s.getEditableRow(r)},getActiveRows(){var r,l;return(l=(r=t.getTableRef())==null?void 0:r.editable)==null?void 0:l.getActiveRows()},async doSaveRow(r){let l=r.editableId;l||(l=r.row[n.value.table.editable.rowKey]);const s=o.getEditableRow(l);await s.save({async doSave(i){var u,c;const{isAdd:f,row:p,setData:m}=i,h=p;if(((c=(u=n.value)==null?void 0:u.mode)==null?void 0:c.name)!=="local")try{if(s.loading=!0,f){const v=await n.value.request.addRequest({form:h});m(v)}else await n.value.request.editRequest({form:h,row:h})}finally{s.loading=!1}}})},async doCancelRow(r){let l=r.editableId;l||(l=r.row[n.value.table.editable.rowKey]);const s=o.getEditableRow(l);if(s.isAdd){o.removeRow(l);return}s.cancel()},async doRemoveRow(r){let l=r.editableId;l||(l=r.row[n.value.table.editable.rowKey]);const s=o.getEditableRow(l);return await t.doRemove(r,{async handle(){return s.isAdd?(o.removeRow(l),!1):n.value.mode.name==="local"?(o.removeRow(l),{isLocal:!0}):await n.value.request.delRequest(r)}})},getInstance(){t.getTableRef().editable},eachCells(r){var l;(l=t.getTableRef().editable)==null||l.eachCells(r)},eachRows(r){var l;(l=t.getTableRef().editable)==null||l.eachRows(r)},async validate(){var r;return await((r=t.getTableRef().editable)==null?void 0:r.validate())},getTableData(r){var l;return(l=t.getTableRef().editable)==null?void 0:l.getCleanTableData(r)},getCleanTableData(r){var l;return(l=t.getTableRef().editable)==null?void 0:l.getCleanTableData(r)}};return o}function E7(e){const{crudRef:t,crudBinding:n}=e,{ui:a}=sn(),{t:o}=ao(),r=ibe();function l(){t.value==null&&Lt.warn("crudRef还未初始化,请在onMounted之后调用")}function s(){n.value==null&&Lt.warn("crudBinding还未初始化,请在useFs或useCrud之后调用")}const i={crudRef:t,crudBinding:n,getFormWrapperRef(){return t.value.formWrapperRef},getFormRef:()=>{const u=i.getFormWrapperRef();if(u==null||(u==null?void 0:u.formRef)==null){Lt.error("当前无法获取FormRef,请在编辑对话框已打开的状态下调用此方法,如果是在打开对话框时调用,可以尝试先nextTick");return}return u==null?void 0:u.formRef},getFormData:()=>{const u=i.getFormRef();return u==null?void 0:u.getFormData()},setFormData:(u,c)=>{var f;(f=i.getFormRef())==null||f.setFormData(u,c)},getFormComponentRef(u,c=!1){const f=i.getFormRef();return f==null?void 0:f.getComponentRef(u,c)},doValueBuilder(u,c){c==null&&(c=Qt(n.value.columns)),Lt.debug("doValueBuilder ,columns=",c);const f=[];Wh(c,p=>{p.valueBuilder!=null&&f.push(p)}),f.length!==0&&(dt(u,(p,m)=>{dt(f,h=>{const v=h.valueBuilder({value:on(p,h.key),row:p,form:p,index:m,key:h.key,column:h});v!=null&&!(v instanceof Promise)&&Zn(p,h.key,v)}),p.children&&Un(p.children)&&i.doValueBuilder(p.children,c)}),Lt.debug("valueBuilder success:",u))},doValueResolve({form:u},c){c==null&&(c=Qt(n.value.columns));const f=[];Wh(c,p=>{p.valueResolve!=null&&f.push(p)}),f.length!==0&&(Lt.debug("doValueResolve ,columns=",c),dt(f,p=>{const m=p.key,h=p.valueResolve({value:on(u,m),row:u,form:u,key:m,column:p});h!=null&&!(h instanceof Promise)&&Zn(u,m,h)}),Lt.debug("valueResolve success:",u))},doSearchValidate(){i.getSearchRef().doValidate()},getSearchFormData(){return n.value.search.validatedForm},getSearchValidatedFormData(){return n.value.search.validatedForm},setSearchFormData(u){if(t.value&&t.value.setSearchFormData({form:u.form,mergeForm:u.mergeForm}),u.mergeForm===!1)for(const f in n.value.search.validatedForm)delete n.value.search.validatedForm[f];const{merge:c}=_n();c(n.value.search.validatedForm,u.form),u.triggerSearch&&i.doRefresh()},getSearchRef(){var u;return l(),(u=t.value)==null?void 0:u.getSearchRef()},buildPageQuery(u){var c,f;const p=u.page;let m=u.form;m==null&&(m=Kn(i.getSearchValidatedFormData())||{},(f=(c=n.value)==null?void 0:c.search)!=null&&f.columns&&i.doValueResolve({form:m},Qt(n.value.search.columns)));let h=u.sort;h==null&&(h=n.value.table.sort||{});const v={page:p,form:m,sort:h};let g=v;return n.value.request.transformQuery&&(g=n.value.request.transformQuery(v)),g},async search(u,c={}){const f=i.buildPageQuery(u);let p;const m=d(n.value.table.disableLoading);try{c.silence!==!0&&m!==!0&&(n.value.table.loading=!0),Lt.debug("pageRequest",f),p=await n.value.request.pageRequest(f)}finally{n.value.table.loading=!1}if(p==null){Lt.warn("pageRequest返回结果不能为空");return}let h=p;return n.value.request.transformRes&&(h=n.value.request.transformRes({res:p,query:f})),h.records&&i.doValueBuilder(h.records),h},getPage(){let u={currentPage:1,pageSize:10};return n.value.pagination&&(u={currentPage:n.value.pagination[a.pagination.currentPage],pageSize:n.value.pagination.pageSize}),u},async doRefresh(u){var c,f;if(n.value.request.pageRequest==null)return;Lt.debug("do refresh:",u),n.value.pagination&&u!=null&&u.goFirstPage&&(n.value.pagination[a.pagination.currentPage]=1);const p=i.getPage(),m=await i.search({page:p},{silence:u==null?void 0:u.silence});if(m==null){Lt.error("pageRequest返回结构不正确,请配置正确的request.transformRes,期望:{currentPage>0, pageSize>0, total, records:[]},实际返回:",m);return}const{currentPage:h=p.currentPage||1,pageSize:v=p.pageSize,total:g}=m,{records:b}=m;if(b==null||!(b instanceof Array)||g==null||h==null||h<=0||isNaN(h)||v==null||v<=0||isNaN(v)){Lt.error("pageRequest返回结构不正确,请配置正确的request.transformRes,期望:{currentPage>0, pageSize>0, total, records:[]},实际返回:",m),Lt.info("如果你的不需要分页,也需要按照上面的格式返回,可以让pageSize=99999,然后配置crudOptions.pagination.show=false来隐藏分页组件");return}if(n.value.data=b,n.value.pagination&&(n.value.pagination[a.pagination.currentPage]=h,n.value.pagination.pageSize=v,n.value.pagination[a.pagination.total]=g||b.length),(u==null?void 0:u.scrollTop)??n.value.table.scrollTopOnRefreshed){const y=i.getTableRef();y==null||y.scrollTo(0)}(f=(c=n.value)==null?void 0:c.table)!=null&&f.onRefreshed&&n.value.table.onRefreshed({data:b})},getToolbarRef:()=>t.value.toolbarRef,getColumnsFilterRef:()=>i.getToolbarRef().columnsFilterRef,getColumnsFilterOriginalColumnsRef:()=>i.getColumnsFilterRef().original,getColumnsFilterColumnsRef:()=>i.getColumnsFilterRef().columns,doPageTurn(u){n.value.pagination[a.pagination.currentPage]=u},async doSearch(u){Lt.debug("do search:",u),u=k7({goFirstPage:!0},u),u.goFirstPage&&i.doPageTurn(1),u.form&&t.value&&i.setSearchFormData({form:u.form,mergeForm:u.mergeForm,refWarning:!1,triggerSearch:!1}),await i.doRefresh()},getTableRef(){var u;return l(),(u=t.value)==null?void 0:u.tableRef},getBaseTableRef(){const u=this.getTableRef();if(u==null){Lt.warn("fs-table还未挂载");return}return u.tableRef},getTableData(){return s(),n.value.data},setTableData(u){s(),n.value.data=u},insertTableRow(u,c){s(),n.value.data.splice(u,0,c)},updateTableRow(u,c,f=!0){f?n.value.data[u]=ube(n.value.data[u],c):n.value.data[u]=c},removeTableRow(u){s(),n.value.data.splice(u,1)},removeTableRowByRowKey:(u,c)=>{s(),c==null&&(c=n.value.data);for(let f=0;fAr(()=>import("./index-64865240-B3tEj8Ws.js"),[])});let t=null;return dt(e,n=>{t=n}),(await t()).exportUtil}function fbe({originalRow:e,row:t,key:n,col:a}){var o;const r=e[n],l=(o=a.component)==null?void 0:o.dict;if(l&&r!=null){const s=l.getNodesFromDataMap(r);if(s!=null&&s.length>0){const i=E_(s,u=>l.getLabel(u)||l.getValue(u)).join("|");i!=null&&i!==""&&(t[n]=i)}}return t}async function pbe(e,t={}){if(t.server){const u=e.getPage(),c=e.buildPageQuery({page:u});await t.server(c);return}const n=e.crudBinding;let a=t.columns;a==null&&(a=[],dt(n.value.table.columnsMap,u=>{if(!(t.columnFilter&&t.columnFilter(u)===!1)&&!(t.onlyShow&&d(u.show)===!1)&&u.exportable!==!1&&u.key!=="_index"){const c={key:u.key,title:u.title};a.push(c)}}));for(const u of a){const c=n.value.table.columnsMap[u.key];u.columnProps=c||{},t.columnBuilder&&t.columnBuilder({col:u})}const{merge:o}=_n(),r=await dbe(),l=[];let s=n.value.data;if(t.dataFrom==="search"){const u=o({page:{currentPage:1,pageSize:99999999}},n.value.toolbar.export.searchParams);s=(await e.search(u,{silence:!0})).records}for(const u of s){const c=Kn(u);dt(a,f=>{const p=f.columnProps,m={row:c,originalRow:u,key:f.key,col:p,exportCol:f};t.autoUseDictLabel!==!1&&fbe(m),t.dataFormatter&&t.dataFormatter(m)}),l.push(c)}const i=o({columns:a,data:l,filename:"table",noHeader:!1,separator:",",quoted:!1},{...t});t.fileType==="excel"?await r.excel(i):await r.csv(i)}const T7={};function M7(e,t,n={}){T7[e]={handle:t,opts:n}}function hbe(e){return T7[e]}M7("rowSelection",(e,t,n)=>{const a=t.crudExpose.crudBinding;function o(){var s,i;return((i=(s=a.value)==null?void 0:s.table)==null?void 0:i.rowKey)||"id"}const{ui:r}=sn();if(!e){Lt.warn("请配置settings.plugins.rowSelection.props参数");return}let l=r.table;return(n==null?void 0:n.table.tableVersion)=="v2"&&(l=r.tableV2),l.buildSelectionCrudOptions({crossPage:e.crossPage,getRowKey:o,getPageData(){return a.value.data},useCompute:()=>kr(),selectionFixed:e.selectionFixed,multiple:e.multiple,selectedRowKeys:e.selectedRowKeys,onSelectedKeysChanged:async s=>{const i=e.selectedRowKeys instanceof Function?e.selectedRowKeys():e.selectedRowKeys;i.value=[...s],await Oe(),e.onSelectedChanged&&e.onSelectedChanged(i.value)}})},{before:!0,order:-2});M7("mobile",(e,t,n)=>{const a=n.rowHandle,o=a.buttons;let r={};for(const s in o){const i=o[s];nn(i.dropdown)?r=i:r[s]={...i,dropdown:x(()=>e.isMobile.value?!0:i.dropdown)}}let l=a.width;return(l==null||!nn(l))&&(l=x(()=>{var s;return e.isMobile.value?((s=e==null?void 0:e.rowHandle)==null?void 0:s.width)||60:a.width||250})),{rowHandle:{width:l,buttons:r}}},{before:!1,order:-2});const{merge:rs}=_n();function mbe(e){e.context==null&&(e.context={});const t=zn.get(),{t:n}=ao(),a=E=>x(()=>n(E));let o=e.crudOptions;const r=e.expose||e.crudExpose;if(!r)throw new Error("crudExpose不能为空,请给useCrud传入{crudExpose}参数");const l=r,{crudBinding:s}=l,{doRefresh:i,doValueResolve:u}=l;function c(){return{pagination:{...t.pagination.onChange({setCurrentPage(E){s.value.pagination[t.pagination.currentPage]=E,s.value.pagination._onCurrentChange&&s.value.pagination._onCurrentChange({current:E,pagination:s.value.pagination})},setPageSize(E){s.value.pagination.pageSize=E,s.value.pagination[t.pagination.currentPage]=1,s.value.pagination._onPageSizeChange&&s.value.pagination._onPageSizeChange({pageSize:E,current:1,pagination:s.value.pagination})},async doAfterChange(){return await i()}})}}}function f(){return{form:{async doSubmit(E){var O,I,$,z;if(E.mode==="edit")if(u(E),((O=o.mode)==null?void 0:O.name)==="local")l.updateTableRow(E.index,E.form,o.mode.isMergeWhenUpdate);else return(I=s.value.request)!=null&&I.editRequest||Lt.warn("request.editRequest 未定义,无法保存"),await s.value.request.editRequest(E);else if(E.mode==="add")if(u(E),(($=o.mode)==null?void 0:$.name)==="local"){const q=o.mode.isAppendWhenAdd?l.getTableData().length:0;l.insertTableRow(q,E.form)}else return(z=s.value.request)!=null&&z.addRequest||Lt.warn("request.addRequest 未定义,无法保存"),await s.value.request.addRequest(E)},async onSuccess({mode:E}){E==="edit"?await i({scrollTop:!1}):E==="add"?await i({scrollTop:!0,goFirstPage:!0}):await i()}}}}function p(){return{rowHandle:{buttons:{remove:{click:async E=>{E.row=E[t.tableColumn.row],await l.doRemove(E)}},copy:{show:!1,click:async E=>{E.row=E[t.tableColumn.row],await l.openCopy({row:E.row,index:E.index})}},edit:{click:async E=>{E.row=E[t.tableColumn.row],await l.openEdit({row:E.row,index:E.index})}},view:{click:async E=>{E.row=E[t.tableColumn.row],await l.openView({row:E.row,index:E.index})}}}}}}function m(){return{search:{buttons:{search:{loading:x(()=>{var E,O;return(O=(E=s.value)==null?void 0:E.table)==null?void 0:O.loading})}},on_reset(){s.value.table.sort={},Kh(s.value.table.columns,O=>{O.sortOrder=!1});const E=r.getBaseTableRef();E!=null&&E.clearSort&&E.clearSort()},on_search(){r.doRefresh({goFirstPage:!0})},"onUpdate:form":E=>{s.value.search.form=E},"onUpdate:validatedForm":E=>{s.value.search.validatedForm=E},"onUpdate:collapse":E=>{s.value.search.collapse=E},container:{collapse:!0,"onUpdate:collapse":E=>{s.value.search.container.collapse=E}}}}}function h(){return{tabs:{},onTabChange(E){r.setSearchFormData({form:E,mergeForm:!0}),i()}}}function v(){const E=F(!1);return{toolbar:{buttons:{refresh:{type:"primary",icon:t.icons.refresh,title:a("fs.toolbar.refresh.title"),order:1,circle:!0,click:async()=>{await r.doRefresh({scrollTop:!1})}},search:{type:x(()=>s.value.search.show!==!1?"primary":"default"),icon:t.icons.search,title:a("fs.toolbar.search.title"),order:2,circle:!0,click:()=>{s.value.search.show=!s.value.search.show}},compact:{type:x(()=>s.value.toolbar.compact?"primary":"default"),icon:t.icons.compact,title:a("fs.toolbar.compact.title"),order:3,circle:!0,click:()=>{s.value.toolbar.compact=!s.value.toolbar.compact}},export:{show:!0,type:"primary",icon:t.icons.export,order:4,loading:E,title:a("fs.toolbar.export.title"),circle:!0,click:async()=>{E.value=!0;try{await pbe(r,s.value.toolbar.export)}finally{E.value=!1}}},columns:{type:"primary",icon:t.icons.columnsFilter,title:a("fs.toolbar.columns.title"),circle:!0,order:5}},"onUpdate:columns"(O){const I=s.value.table.columns;function $(q,W){const j={};return dt(W,N=>{const V=q[N.key];if(V){if(V.columnSetShow===!1){j[N.key]=V;return}delete V.order;const H=rs({...V},N);j[N.key]=H,V.children&&(H.children=$(V.children,N.children))}}),j}const z=$(I,O);s.value.table.columns=z,s.value.table.columnsMap=db({},z)}}}}function g(){return{table:{onSortChange(E){const{isServerSort:O,prop:I,asc:$,order:z}=E;Kh(s.value.table.columns,W=>{W.key===I?W.sortOrder=z:W.sortOrder=!1});const q=s.value.table.sort;s.value.table.sort=O?{prop:I,order:z,asc:$}:null,(O||q!=null)&&l.doRefresh()}}}}function b(){return{actionbar:{buttons:{add:{click(){l.openAdd({})}}}}}}function y(){const{compute:E}=kr();return{actionbar:{buttons:{addRow:{show:!1,text:a("fs.actionbar.add"),type:"primary",click:()=>{l.editable.addRow()}}}},rowHandle:{group:{editable:{remove:{text:"删除",...t.button.colors("danger"),click:async O=>{const{index:I,row:$}=O,z=$[s.value.table.editable.rowKey];await l.editable.doRemoveRow({editableId:z,row:$})}}},editRow:{edit:{text:"编辑",loading:E(O=>{const{index:I,row:$}=O,z=$[s.value.table.editable.rowKey],q=l.editable.getEditableRow(z);return!!(q!=null&&q.loading)}),click:async O=>{var I;const{index:$,row:z}=O,q=z[s.value.table.editable.rowKey];if(s.value.table.editable.exclusive){const W=l.editable.getActiveRows();dt(W,j=>{s.value.table.editable.exclusiveEffect==="save"?l.editable.doSaveRow({row:j.rowData}):l.editable.doCancelRow({row:j.rowData})})}(I=l.editable.getEditableRow(q))==null||I.active()},show:E(O=>{var I,$;const{index:z,row:q}=O,W=q[s.value.table.editable.rowKey];return!(($=(I=l.editable)==null?void 0:I.getEditableRow(W))!=null&&$.isEditing)})},save:{text:"保存",loading:!1,click:async O=>{const{index:I,row:$}=O;await l.editable.doSaveRow({row:$})},show:E(O=>{var I,$;const{index:z,row:q}=O,W=q[s.value.table.editable.rowKey];return!!(($=(I=l.editable)==null?void 0:I.getEditableRow(W))!=null&&$.isEditing)})},cancel:{text:"取消",click:async O=>{var I;const{index:$,row:z}=O;await((I=l.editable)==null?void 0:I.doCancelRow({row:z}))},show:E(O=>{var I,$;const{index:z,row:q}=O,W=q[s.value.table.editable.rowKey];return!!(($=(I=l.editable)==null?void 0:I.getEditableRow(W))!=null&&$.isEditing)})},remove:{text:"删除",...t.button.colors("danger"),click:async O=>{var I;const{index:$,row:z}=O,q=z[s.value.table.editable.rowKey];await((I=l.editable)==null?void 0:I.doRemoveRow({row:z,editableId:q}))}}}}}}}const{cloneDeep:w}=_n();function _(E){E.search.validatedForm=w(E.search.initialForm)}function S(E){var O;const I={value:null};let $=w(E);const z=Zd.commonOptions(e),q=Zd.defaultOptions({t:n,crudOptionsRef:I});o=rs({},q,z,$),I.value=o;const W=d(o.settings);if(W){const H=d(W.plugins);dt(H,(Y,P)=>{if(Y.enabled===!1)return;let D=Y.handle,B={};if(D==null){const ce=hbe(P);ce!=null&&(D=ce.handle,B=ce.opts)}if(D==null)return;const U=Y.before??B.before,X=D(Y.props,e,o);U!==!1?$=rs(X,$):$=rs($,X)})}const j=rs(q,c(),f(),p(),m(),h(),v(),g(),b(),y(),z,$),{buildColumns:N}=pb(),V=N(j);return _(V),(O=V==null?void 0:V.settings)!=null&&O.onUseCrud&&V.settings.onUseCrud(V),V}function k(E){s.value=S(E),Lt.info("fast-crud inited, crudBinding=",s.value)}function T(E){const O=rs({},o,E);return k(O),o=O,O}k(o);function R(E){rs(s.value,E)}return{appendCrudOptions:T,resetCrudOptions:k,appendCrudBinding:R,rebuildCrudBindings:S}}function O7(e){const{createCrudOptions:t,crudExposeRef:n}=e,a=e.crudRef||F(),o=e.crudBinding||F({});let r=e.crudExpose;r||(r=E7({crudRef:a,crudBinding:o}).crudExpose),n&&!n.value&&(n.value=r),e.context==null&&(e.context={});const l=e.context;e.onExpose&&e.onExpose({crudRef:a,crudBinding:o,crudExpose:r,context:l});const s=t({...e,crudExpose:r,expose:r,context:l});function i(u){const c={crudExpose:r,...u,context:l};rs(u.crudOptions,e.crudOptionsOverride);const f=mbe(c);return{...u,...f,crudRef:a,crudExpose:r,crudBinding:o,context:l}}return s instanceof Promise?s.then(u=>i(u)):i(s)}function r_e(e){return O7(e)}function vbe(e){return O7(e)}function gbe(){const e=F(),t=F(),n={},{crudExpose:a}=E7({crudBinding:t,crudRef:e});return{crudRef:e,crudBinding:t,context:n,crudExpose:a}}function zs(e,t,n="modelValue"){const a=zn.get();let o=e.dict;o&&o.prototype&&(o.clear(),o=Os(Kn(e.dict)),o.cloneable=!1,o.clear());function r(){return x(()=>{let _=[];if(e.options?_=e.options:o&&o.data!=null&&(o.data instanceof Array||ys.logger.warn("dict.data类型错误,期望为数组,实际:",o.data),_=o.data,e.transformDictData&&(_=e.transformDictData(Kn(o.data)))),a.type==="naive"||a.type==="element"){const S=[];for(const k of _)S.push({...k,value:b(k),label:w(k)});return S}return _})}function l(){return o}const s=Fe("get:scope",function(){});function i(){const _=e[n]||t.attrs[n];return{...s(),componentRef:u,value:_}}const{proxy:u}=bt(),c=async(_=!1)=>{if(!o)return;if(o.getNodesByValues){const k=i();if(k.value==null)return;let T=k.value;Array.isArray(k.value)||(T=[k.value]),await o.appendByValues(T);return}if(o.loading)return;const S=i();if(_){await o.reloadDict(S);return}await o.loadDict(S)};c();const f=async()=>{await c(!0)},p=()=>{o&&o.clear()},m=()=>{o!=null&&(!o.prototype&&!o.cloneable||pe(()=>e[n],()=>{f()}))};pe(()=>o==null?void 0:o.data,()=>{const _=i();t.attrs.onDictChange,t.emit("dict-change",{dict:o,..._})},{immediate:!0});const h=()=>{var _;return(_=l())==null?void 0:_.data},v=(_,S)=>{let k=S;return l()&&(k=l()[S]),_[k]},g=(_,S)=>{let k=S;l()&&(k=l()[S]),delete _[k]},b=_=>v(_,"value"),y=_=>v(_,"children"),w=_=>{if(e.labelFormatter)return e.labelFormatter(_);const S=v(_,"label");return S==null?"":String(S)};return{createComputedOptions:r,loadDict:c,reloadDict:f,clearDict:p,getDictData:h,getDict:l,watchValue:m,getValue:b,getLabel:w,getChildren:y,getColor:_=>v(_,"color"),removePropValue:g,curDict:o}}const Ru=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,R7=new Set,gg=typeof process=="object"&&process?process:{},A7=(e,t,n,a)=>{typeof gg.emitWarning=="function"?gg.emitWarning(e,t,n,a):console.error(`[${n}] ${t}: ${e}`)};let qh=globalThis.AbortController,G8=globalThis.AbortSignal;var X8;if(typeof qh>"u"){G8=class{constructor(){$t(this,"onabort"),$t(this,"_onabort",[]),$t(this,"reason"),$t(this,"aborted",!1)}addEventListener(n,a){this._onabort.push(a)}},qh=class{constructor(){$t(this,"signal",new G8),t()}abort(n){var a,o;if(!this.signal.aborted){this.signal.reason=n,this.signal.aborted=!0;for(const r of this.signal._onabort)r(n);(o=(a=this.signal).onabort)==null||o.call(a,n)}}};let e=((X8=gg.env)==null?void 0:X8.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const t=()=>{e&&(e=!1,A7("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}const bbe=e=>!R7.has(e),ps=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),$7=e=>ps(e)?e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?Kp:null:null;class Kp extends Array{constructor(t){super(t),this.fill(0)}}var dd;const P7=class jc{constructor(t,n){if($t(this,"heap"),$t(this,"length"),!fe(jc,dd))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new n(t),this.length=0}static create(t){const n=$7(t);if(!n)return[];Bt(jc,dd,!0);const a=new jc(t,n);return Bt(jc,dd,!1),a}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}};dd=new WeakMap,Jt(P7,dd,!1);let ybe=P7;var Fr,Io,Dr,Nr,fd,Kc,Ca,Vo,ha,jn,Zt,so,Fo,Ga,Ma,Wr,Oa,Br,zr,Do,Hr,pi,io,Wp,bg,pu,us,Uh,Bo,yg,N7,hu,pd,Yh,dl,ls,pl,cs,qp,mv,I7,hd,Gh,Wc,Up,Nn,Ln,Yp,vv,uu,qc,Sl,ws,Xh,wg;const wbe=class V7{constructor(t){Jt(this,Wp),Jt(this,yg),Jt(this,dl),Jt(this,pl),Jt(this,qp),Jt(this,hd),Jt(this,Wc),Jt(this,Nn),Jt(this,Yp),Jt(this,uu),Jt(this,Sl),Jt(this,Xh),Jt(this,Fr,void 0),Jt(this,Io,void 0),Jt(this,Dr,void 0),Jt(this,Nr,void 0),Jt(this,fd,void 0),Jt(this,Kc,void 0),$t(this,"ttl"),$t(this,"ttlResolution"),$t(this,"ttlAutopurge"),$t(this,"updateAgeOnGet"),$t(this,"updateAgeOnHas"),$t(this,"allowStale"),$t(this,"noDisposeOnSet"),$t(this,"noUpdateTTL"),$t(this,"maxEntrySize"),$t(this,"sizeCalculation"),$t(this,"noDeleteOnFetchRejection"),$t(this,"noDeleteOnStaleGet"),$t(this,"allowStaleOnFetchAbort"),$t(this,"allowStaleOnFetchRejection"),$t(this,"ignoreFetchAbort"),Jt(this,Ca,void 0),Jt(this,Vo,void 0),Jt(this,ha,void 0),Jt(this,jn,void 0),Jt(this,Zt,void 0),Jt(this,so,void 0),Jt(this,Fo,void 0),Jt(this,Ga,void 0),Jt(this,Ma,void 0),Jt(this,Wr,void 0),Jt(this,Oa,void 0),Jt(this,Br,void 0),Jt(this,zr,void 0),Jt(this,Do,void 0),Jt(this,Hr,void 0),Jt(this,pi,void 0),Jt(this,io,void 0),Jt(this,pu,()=>{}),Jt(this,us,()=>{}),Jt(this,Uh,()=>{}),Jt(this,Bo,()=>!1),Jt(this,hu,R=>{}),Jt(this,pd,(R,E,O)=>{}),Jt(this,Yh,(R,E,O,I)=>{if(O||I)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0}),$t(this,I7,"LRUCache");const{max:n=0,ttl:a,ttlResolution:o=1,ttlAutopurge:r,updateAgeOnGet:l,updateAgeOnHas:s,allowStale:i,dispose:u,disposeAfter:c,noDisposeOnSet:f,noUpdateTTL:p,maxSize:m=0,maxEntrySize:h=0,sizeCalculation:v,fetchMethod:g,memoMethod:b,noDeleteOnFetchRejection:y,noDeleteOnStaleGet:w,allowStaleOnFetchRejection:_,allowStaleOnFetchAbort:S,ignoreFetchAbort:k}=t;if(n!==0&&!ps(n))throw new TypeError("max option must be a nonnegative integer");const T=n?$7(n):Array;if(!T)throw new Error("invalid max value: "+n);if(Bt(this,Fr,n),Bt(this,Io,m),this.maxEntrySize=h||fe(this,Io),this.sizeCalculation=v,this.sizeCalculation){if(!fe(this,Io)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(b!==void 0&&typeof b!="function")throw new TypeError("memoMethod must be a function if defined");if(Bt(this,Kc,b),g!==void 0&&typeof g!="function")throw new TypeError("fetchMethod must be a function if specified");if(Bt(this,fd,g),Bt(this,pi,!!g),Bt(this,ha,new Map),Bt(this,jn,new Array(n).fill(void 0)),Bt(this,Zt,new Array(n).fill(void 0)),Bt(this,so,new T(n)),Bt(this,Fo,new T(n)),Bt(this,Ga,0),Bt(this,Ma,0),Bt(this,Wr,ybe.create(n)),Bt(this,Ca,0),Bt(this,Vo,0),typeof u=="function"&&Bt(this,Dr,u),typeof c=="function"?(Bt(this,Nr,c),Bt(this,Oa,[])):(Bt(this,Nr,void 0),Bt(this,Oa,void 0)),Bt(this,Hr,!!fe(this,Dr)),Bt(this,io,!!fe(this,Nr)),this.noDisposeOnSet=!!f,this.noUpdateTTL=!!p,this.noDeleteOnFetchRejection=!!y,this.allowStaleOnFetchRejection=!!_,this.allowStaleOnFetchAbort=!!S,this.ignoreFetchAbort=!!k,this.maxEntrySize!==0){if(fe(this,Io)!==0&&!ps(fe(this,Io)))throw new TypeError("maxSize must be a positive integer if specified");if(!ps(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");Mt(this,yg,N7).call(this)}if(this.allowStale=!!i,this.noDeleteOnStaleGet=!!w,this.updateAgeOnGet=!!l,this.updateAgeOnHas=!!s,this.ttlResolution=ps(o)||o===0?o:1,this.ttlAutopurge=!!r,this.ttl=a||0,this.ttl){if(!ps(this.ttl))throw new TypeError("ttl must be a positive integer if specified");Mt(this,Wp,bg).call(this)}if(fe(this,Fr)===0&&this.ttl===0&&fe(this,Io)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!fe(this,Fr)&&!fe(this,Io)){const R="LRU_CACHE_UNBOUNDED";bbe(R)&&(R7.add(R),A7("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",R,V7))}}static unsafeExposeInternals(t){return{starts:fe(t,zr),ttls:fe(t,Do),sizes:fe(t,Br),keyMap:fe(t,ha),keyList:fe(t,jn),valList:fe(t,Zt),next:fe(t,so),prev:fe(t,Fo),get head(){return fe(t,Ga)},get tail(){return fe(t,Ma)},free:fe(t,Wr),isBackgroundFetch:n=>{var a;return Mt(a=t,Nn,Ln).call(a,n)},backgroundFetch:(n,a,o,r)=>{var l;return Mt(l=t,Wc,Up).call(l,n,a,o,r)},moveToTail:n=>{var a;return Mt(a=t,uu,qc).call(a,n)},indexes:n=>{var a;return Mt(a=t,dl,ls).call(a,n)},rindexes:n=>{var a;return Mt(a=t,pl,cs).call(a,n)},isStale:n=>{var a;return fe(a=t,Bo).call(a,n)}}}get max(){return fe(this,Fr)}get maxSize(){return fe(this,Io)}get calculatedSize(){return fe(this,Vo)}get size(){return fe(this,Ca)}get fetchMethod(){return fe(this,fd)}get memoMethod(){return fe(this,Kc)}get dispose(){return fe(this,Dr)}get disposeAfter(){return fe(this,Nr)}getRemainingTTL(t){return fe(this,ha).has(t)?1/0:0}*entries(){for(const t of Mt(this,dl,ls).call(this))fe(this,Zt)[t]!==void 0&&fe(this,jn)[t]!==void 0&&!Mt(this,Nn,Ln).call(this,fe(this,Zt)[t])&&(yield[fe(this,jn)[t],fe(this,Zt)[t]])}*rentries(){for(const t of Mt(this,pl,cs).call(this))fe(this,Zt)[t]!==void 0&&fe(this,jn)[t]!==void 0&&!Mt(this,Nn,Ln).call(this,fe(this,Zt)[t])&&(yield[fe(this,jn)[t],fe(this,Zt)[t]])}*keys(){for(const t of Mt(this,dl,ls).call(this)){const n=fe(this,jn)[t];n!==void 0&&!Mt(this,Nn,Ln).call(this,fe(this,Zt)[t])&&(yield n)}}*rkeys(){for(const t of Mt(this,pl,cs).call(this)){const n=fe(this,jn)[t];n!==void 0&&!Mt(this,Nn,Ln).call(this,fe(this,Zt)[t])&&(yield n)}}*values(){for(const t of Mt(this,dl,ls).call(this))fe(this,Zt)[t]!==void 0&&!Mt(this,Nn,Ln).call(this,fe(this,Zt)[t])&&(yield fe(this,Zt)[t])}*rvalues(){for(const t of Mt(this,pl,cs).call(this))fe(this,Zt)[t]!==void 0&&!Mt(this,Nn,Ln).call(this,fe(this,Zt)[t])&&(yield fe(this,Zt)[t])}[Symbol.iterator](){return this.entries()}find(t,n={}){for(const a of Mt(this,dl,ls).call(this)){const o=fe(this,Zt)[a],r=Mt(this,Nn,Ln).call(this,o)?o.__staleWhileFetching:o;if(r!==void 0&&t(r,fe(this,jn)[a],this))return this.get(fe(this,jn)[a],n)}}forEach(t,n=this){for(const a of Mt(this,dl,ls).call(this)){const o=fe(this,Zt)[a],r=Mt(this,Nn,Ln).call(this,o)?o.__staleWhileFetching:o;r!==void 0&&t.call(n,r,fe(this,jn)[a],this)}}rforEach(t,n=this){for(const a of Mt(this,pl,cs).call(this)){const o=fe(this,Zt)[a],r=Mt(this,Nn,Ln).call(this,o)?o.__staleWhileFetching:o;r!==void 0&&t.call(n,r,fe(this,jn)[a],this)}}purgeStale(){let t=!1;for(const n of Mt(this,pl,cs).call(this,{allowStale:!0}))fe(this,Bo).call(this,n)&&(Mt(this,Sl,ws).call(this,fe(this,jn)[n],"expire"),t=!0);return t}info(t){const n=fe(this,ha).get(t);if(n===void 0)return;const a=fe(this,Zt)[n],o=Mt(this,Nn,Ln).call(this,a)?a.__staleWhileFetching:a;if(o===void 0)return;const r={value:o};if(fe(this,Do)&&fe(this,zr)){const l=fe(this,Do)[n],s=fe(this,zr)[n];if(l&&s){const i=l-(Ru.now()-s);r.ttl=i,r.start=Date.now()}}return fe(this,Br)&&(r.size=fe(this,Br)[n]),r}dump(){const t=[];for(const n of Mt(this,dl,ls).call(this,{allowStale:!0})){const a=fe(this,jn)[n],o=fe(this,Zt)[n],r=Mt(this,Nn,Ln).call(this,o)?o.__staleWhileFetching:o;if(r===void 0||a===void 0)continue;const l={value:r};if(fe(this,Do)&&fe(this,zr)){l.ttl=fe(this,Do)[n];const s=Ru.now()-fe(this,zr)[n];l.start=Math.floor(Date.now()-s)}fe(this,Br)&&(l.size=fe(this,Br)[n]),t.unshift([a,l])}return t}load(t){this.clear();for(const[n,a]of t){if(a.start){const o=Date.now()-a.start;a.start=Ru.now()-o}this.set(n,a.value,a)}}set(t,n,a={}){var o,r,l,s,i;if(n===void 0)return this.delete(t),this;const{ttl:u=this.ttl,start:c,noDisposeOnSet:f=this.noDisposeOnSet,sizeCalculation:p=this.sizeCalculation,status:m}=a;let{noUpdateTTL:h=this.noUpdateTTL}=a;const v=fe(this,Yh).call(this,t,n,a.size||0,p);if(this.maxEntrySize&&v>this.maxEntrySize)return m&&(m.set="miss",m.maxEntrySizeExceeded=!0),Mt(this,Sl,ws).call(this,t,"set"),this;let g=fe(this,Ca)===0?void 0:fe(this,ha).get(t);if(g===void 0)g=fe(this,Ca)===0?fe(this,Ma):fe(this,Wr).length!==0?fe(this,Wr).pop():fe(this,Ca)===fe(this,Fr)?Mt(this,hd,Gh).call(this,!1):fe(this,Ca),fe(this,jn)[g]=t,fe(this,Zt)[g]=n,fe(this,ha).set(t,g),fe(this,so)[fe(this,Ma)]=g,fe(this,Fo)[g]=fe(this,Ma),Bt(this,Ma,g),hg(this,Ca)._++,fe(this,pd).call(this,g,v,m),m&&(m.set="add"),h=!1;else{Mt(this,uu,qc).call(this,g);const b=fe(this,Zt)[g];if(n!==b){if(fe(this,pi)&&Mt(this,Nn,Ln).call(this,b)){b.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:y}=b;y!==void 0&&!f&&(fe(this,Hr)&&((o=fe(this,Dr))==null||o.call(this,y,t,"set")),fe(this,io)&&((r=fe(this,Oa))==null||r.push([y,t,"set"])))}else f||(fe(this,Hr)&&((l=fe(this,Dr))==null||l.call(this,b,t,"set")),fe(this,io)&&((s=fe(this,Oa))==null||s.push([b,t,"set"])));if(fe(this,hu).call(this,g),fe(this,pd).call(this,g,v,m),fe(this,Zt)[g]=n,m){m.set="replace";const y=b&&Mt(this,Nn,Ln).call(this,b)?b.__staleWhileFetching:b;y!==void 0&&(m.oldValue=y)}}else m&&(m.set="update")}if(u!==0&&!fe(this,Do)&&Mt(this,Wp,bg).call(this),fe(this,Do)&&(h||fe(this,Uh).call(this,g,u,c),m&&fe(this,us).call(this,m,g)),!f&&fe(this,io)&&fe(this,Oa)){const b=fe(this,Oa);let y;for(;y=b==null?void 0:b.shift();)(i=fe(this,Nr))==null||i.call(this,...y)}return this}pop(){var t;try{for(;fe(this,Ca);){const n=fe(this,Zt)[fe(this,Ga)];if(Mt(this,hd,Gh).call(this,!0),Mt(this,Nn,Ln).call(this,n)){if(n.__staleWhileFetching)return n.__staleWhileFetching}else if(n!==void 0)return n}}finally{if(fe(this,io)&&fe(this,Oa)){const n=fe(this,Oa);let a;for(;a=n==null?void 0:n.shift();)(t=fe(this,Nr))==null||t.call(this,...a)}}}has(t,n={}){const{updateAgeOnHas:a=this.updateAgeOnHas,status:o}=n,r=fe(this,ha).get(t);if(r!==void 0){const l=fe(this,Zt)[r];if(Mt(this,Nn,Ln).call(this,l)&&l.__staleWhileFetching===void 0)return!1;if(fe(this,Bo).call(this,r))o&&(o.has="stale",fe(this,us).call(this,o,r));else return a&&fe(this,pu).call(this,r),o&&(o.has="hit",fe(this,us).call(this,o,r)),!0}else o&&(o.has="miss");return!1}peek(t,n={}){const{allowStale:a=this.allowStale}=n,o=fe(this,ha).get(t);if(o===void 0||!a&&fe(this,Bo).call(this,o))return;const r=fe(this,Zt)[o];return Mt(this,Nn,Ln).call(this,r)?r.__staleWhileFetching:r}async fetch(t,n={}){const{allowStale:a=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:l=this.ttl,noDisposeOnSet:s=this.noDisposeOnSet,size:i=0,sizeCalculation:u=this.sizeCalculation,noUpdateTTL:c=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:p=this.allowStaleOnFetchRejection,ignoreFetchAbort:m=this.ignoreFetchAbort,allowStaleOnFetchAbort:h=this.allowStaleOnFetchAbort,context:v,forceRefresh:g=!1,status:b,signal:y}=n;if(!fe(this,pi))return b&&(b.fetch="get"),this.get(t,{allowStale:a,updateAgeOnGet:o,noDeleteOnStaleGet:r,status:b});const w={allowStale:a,updateAgeOnGet:o,noDeleteOnStaleGet:r,ttl:l,noDisposeOnSet:s,size:i,sizeCalculation:u,noUpdateTTL:c,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:p,allowStaleOnFetchAbort:h,ignoreFetchAbort:m,status:b,signal:y};let _=fe(this,ha).get(t);if(_===void 0){b&&(b.fetch="miss");const S=Mt(this,Wc,Up).call(this,t,_,w,v);return S.__returned=S}else{const S=fe(this,Zt)[_];if(Mt(this,Nn,Ln).call(this,S)){const E=a&&S.__staleWhileFetching!==void 0;return b&&(b.fetch="inflight",E&&(b.returnedStale=!0)),E?S.__staleWhileFetching:S.__returned=S}const k=fe(this,Bo).call(this,_);if(!g&&!k)return b&&(b.fetch="hit"),Mt(this,uu,qc).call(this,_),o&&fe(this,pu).call(this,_),b&&fe(this,us).call(this,b,_),S;const T=Mt(this,Wc,Up).call(this,t,_,w,v),R=T.__staleWhileFetching!==void 0&&a;return b&&(b.fetch=k?"stale":"refresh",R&&k&&(b.returnedStale=!0)),R?T.__staleWhileFetching:T.__returned=T}}async forceFetch(t,n={}){const a=await this.fetch(t,n);if(a===void 0)throw new Error("fetch() returned undefined");return a}memo(t,n={}){const a=fe(this,Kc);if(!a)throw new Error("no memoMethod provided to constructor");const{context:o,forceRefresh:r,...l}=n,s=this.get(t,l);if(!r&&s!==void 0)return s;const i=a(t,s,{options:l,context:o});return this.set(t,i,l),i}get(t,n={}){const{allowStale:a=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:l}=n,s=fe(this,ha).get(t);if(s!==void 0){const i=fe(this,Zt)[s],u=Mt(this,Nn,Ln).call(this,i);return l&&fe(this,us).call(this,l,s),fe(this,Bo).call(this,s)?(l&&(l.get="stale"),u?(l&&a&&i.__staleWhileFetching!==void 0&&(l.returnedStale=!0),a?i.__staleWhileFetching:void 0):(r||Mt(this,Sl,ws).call(this,t,"expire"),l&&a&&(l.returnedStale=!0),a?i:void 0)):(l&&(l.get="hit"),u?i.__staleWhileFetching:(Mt(this,uu,qc).call(this,s),o&&fe(this,pu).call(this,s),i))}else l&&(l.get="miss")}delete(t){return Mt(this,Sl,ws).call(this,t,"delete")}clear(){return Mt(this,Xh,wg).call(this,"delete")}};I7=Symbol.toStringTag,Fr=new WeakMap,Io=new WeakMap,Dr=new WeakMap,Nr=new WeakMap,fd=new WeakMap,Kc=new WeakMap,Ca=new WeakMap,Vo=new WeakMap,ha=new WeakMap,jn=new WeakMap,Zt=new WeakMap,so=new WeakMap,Fo=new WeakMap,Ga=new WeakMap,Ma=new WeakMap,Wr=new WeakMap,Oa=new WeakMap,Br=new WeakMap,zr=new WeakMap,Do=new WeakMap,Hr=new WeakMap,pi=new WeakMap,io=new WeakMap,Wp=new WeakSet,bg=function(){const e=new Kp(fe(this,Fr)),t=new Kp(fe(this,Fr));Bt(this,Do,e),Bt(this,zr,t),Bt(this,Uh,(o,r,l=Ru.now())=>{if(t[o]=r!==0?l:0,e[o]=r,r!==0&&this.ttlAutopurge){const s=setTimeout(()=>{fe(this,Bo).call(this,o)&&Mt(this,Sl,ws).call(this,fe(this,jn)[o],"expire")},r+1);s.unref&&s.unref()}}),Bt(this,pu,o=>{t[o]=e[o]!==0?Ru.now():0}),Bt(this,us,(o,r)=>{if(e[r]){const l=e[r],s=t[r];if(!l||!s)return;o.ttl=l,o.start=s,o.now=n||a();const i=o.now-s;o.remainingTTL=l-i}});let n=0;const a=()=>{const o=Ru.now();if(this.ttlResolution>0){n=o;const r=setTimeout(()=>n=0,this.ttlResolution);r.unref&&r.unref()}return o};this.getRemainingTTL=o=>{const r=fe(this,ha).get(o);if(r===void 0)return 0;const l=e[r],s=t[r];if(!l||!s)return 1/0;const i=(n||a())-s;return l-i},Bt(this,Bo,o=>{const r=t[o],l=e[o];return!!l&&!!r&&(n||a())-r>l})},pu=new WeakMap,us=new WeakMap,Uh=new WeakMap,Bo=new WeakMap,yg=new WeakSet,N7=function(){const e=new Kp(fe(this,Fr));Bt(this,Vo,0),Bt(this,Br,e),Bt(this,hu,t=>{Bt(this,Vo,fe(this,Vo)-e[t]),e[t]=0}),Bt(this,Yh,(t,n,a,o)=>{if(Mt(this,Nn,Ln).call(this,n))return 0;if(!ps(a))if(o){if(typeof o!="function")throw new TypeError("sizeCalculation must be a function");if(a=o(n,t),!ps(a))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return a}),Bt(this,pd,(t,n,a)=>{if(e[t]=n,fe(this,Io)){const o=fe(this,Io)-e[t];for(;fe(this,Vo)>o;)Mt(this,hd,Gh).call(this,!0)}Bt(this,Vo,fe(this,Vo)+e[t]),a&&(a.entrySize=n,a.totalCalculatedSize=fe(this,Vo))})},hu=new WeakMap,pd=new WeakMap,Yh=new WeakMap,dl=new WeakSet,ls=function*({allowStale:e=this.allowStale}={}){if(fe(this,Ca))for(let t=fe(this,Ma);!(!Mt(this,qp,mv).call(this,t)||((e||!fe(this,Bo).call(this,t))&&(yield t),t===fe(this,Ga)));)t=fe(this,Fo)[t]},pl=new WeakSet,cs=function*({allowStale:e=this.allowStale}={}){if(fe(this,Ca))for(let t=fe(this,Ga);!(!Mt(this,qp,mv).call(this,t)||((e||!fe(this,Bo).call(this,t))&&(yield t),t===fe(this,Ma)));)t=fe(this,so)[t]},qp=new WeakSet,mv=function(e){return e!==void 0&&fe(this,ha).get(fe(this,jn)[e])===e},hd=new WeakSet,Gh=function(e){var t,n;const a=fe(this,Ga),o=fe(this,jn)[a],r=fe(this,Zt)[a];return fe(this,pi)&&Mt(this,Nn,Ln).call(this,r)?r.__abortController.abort(new Error("evicted")):(fe(this,Hr)||fe(this,io))&&(fe(this,Hr)&&((t=fe(this,Dr))==null||t.call(this,r,o,"evict")),fe(this,io)&&((n=fe(this,Oa))==null||n.push([r,o,"evict"]))),fe(this,hu).call(this,a),e&&(fe(this,jn)[a]=void 0,fe(this,Zt)[a]=void 0,fe(this,Wr).push(a)),fe(this,Ca)===1?(Bt(this,Ga,Bt(this,Ma,0)),fe(this,Wr).length=0):Bt(this,Ga,fe(this,so)[a]),fe(this,ha).delete(o),hg(this,Ca)._--,a},Wc=new WeakSet,Up=function(e,t,n,a){const o=t===void 0?void 0:fe(this,Zt)[t];if(Mt(this,Nn,Ln).call(this,o))return o;const r=new qh,{signal:l}=n;l==null||l.addEventListener("abort",()=>r.abort(l.reason),{signal:r.signal});const s={signal:r.signal,options:n,context:a},i=(h,v=!1)=>{const{aborted:g}=r.signal,b=n.ignoreFetchAbort&&h!==void 0;if(n.status&&(g&&!v?(n.status.fetchAborted=!0,n.status.fetchError=r.signal.reason,b&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),g&&!b&&!v)return c(r.signal.reason);const y=p;return fe(this,Zt)[t]===p&&(h===void 0?y.__staleWhileFetching?fe(this,Zt)[t]=y.__staleWhileFetching:Mt(this,Sl,ws).call(this,e,"fetch"):(n.status&&(n.status.fetchUpdated=!0),this.set(e,h,s.options))),h},u=h=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=h),c(h)),c=h=>{const{aborted:v}=r.signal,g=v&&n.allowStaleOnFetchAbort,b=g||n.allowStaleOnFetchRejection,y=b||n.noDeleteOnFetchRejection,w=p;if(fe(this,Zt)[t]===p&&(!y||w.__staleWhileFetching===void 0?Mt(this,Sl,ws).call(this,e,"fetch"):g||(fe(this,Zt)[t]=w.__staleWhileFetching)),b)return n.status&&w.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),w.__staleWhileFetching;if(w.__returned===w)throw h},f=(h,v)=>{var g;const b=(g=fe(this,fd))==null?void 0:g.call(this,e,o,s);b&&b instanceof Promise&&b.then(y=>h(y===void 0?void 0:y),v),r.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(h(void 0),n.allowStaleOnFetchAbort&&(h=y=>i(y,!0)))})};n.status&&(n.status.fetchDispatched=!0);const p=new Promise(f).then(i,u),m=Object.assign(p,{__abortController:r,__staleWhileFetching:o,__returned:void 0});return t===void 0?(this.set(e,m,{...s.options,status:void 0}),t=fe(this,ha).get(e)):fe(this,Zt)[t]=m,m},Nn=new WeakSet,Ln=function(e){if(!fe(this,pi))return!1;const t=e;return!!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof qh},Yp=new WeakSet,vv=function(e,t){fe(this,Fo)[t]=e,fe(this,so)[e]=t},uu=new WeakSet,qc=function(e){e!==fe(this,Ma)&&(e===fe(this,Ga)?Bt(this,Ga,fe(this,so)[e]):Mt(this,Yp,vv).call(this,fe(this,Fo)[e],fe(this,so)[e]),Mt(this,Yp,vv).call(this,fe(this,Ma),e),Bt(this,Ma,e))},Sl=new WeakSet,ws=function(e,t){var n,a,o,r;let l=!1;if(fe(this,Ca)!==0){const s=fe(this,ha).get(e);if(s!==void 0)if(l=!0,fe(this,Ca)===1)Mt(this,Xh,wg).call(this,t);else{fe(this,hu).call(this,s);const i=fe(this,Zt)[s];if(Mt(this,Nn,Ln).call(this,i)?i.__abortController.abort(new Error("deleted")):(fe(this,Hr)||fe(this,io))&&(fe(this,Hr)&&((n=fe(this,Dr))==null||n.call(this,i,e,t)),fe(this,io)&&((a=fe(this,Oa))==null||a.push([i,e,t]))),fe(this,ha).delete(e),fe(this,jn)[s]=void 0,fe(this,Zt)[s]=void 0,s===fe(this,Ma))Bt(this,Ma,fe(this,Fo)[s]);else if(s===fe(this,Ga))Bt(this,Ga,fe(this,so)[s]);else{const u=fe(this,Fo)[s];fe(this,so)[u]=fe(this,so)[s];const c=fe(this,so)[s];fe(this,Fo)[c]=fe(this,Fo)[s]}hg(this,Ca)._--,fe(this,Wr).push(s)}}if(fe(this,io)&&(o=fe(this,Oa))!=null&&o.length){const s=fe(this,Oa);let i;for(;i=s==null?void 0:s.shift();)(r=fe(this,Nr))==null||r.call(this,...i)}return l},Xh=new WeakSet,wg=function(e){var t,n,a;for(const o of Mt(this,pl,cs).call(this,{allowStale:!0})){const r=fe(this,Zt)[o];if(Mt(this,Nn,Ln).call(this,r))r.__abortController.abort(new Error("deleted"));else{const l=fe(this,jn)[o];fe(this,Hr)&&((t=fe(this,Dr))==null||t.call(this,r,l,e)),fe(this,io)&&((n=fe(this,Oa))==null||n.push([r,l,e]))}}if(fe(this,ha).clear(),fe(this,Zt).fill(void 0),fe(this,jn).fill(void 0),fe(this,Do)&&fe(this,zr)&&(fe(this,Do).fill(0),fe(this,zr).fill(0)),fe(this,Br)&&fe(this,Br).fill(0),Bt(this,Ga,0),Bt(this,Ma,0),fe(this,Wr).length=0,Bt(this,Vo,0),Bt(this,Ca,0),fe(this,io)&&fe(this,Oa)){const o=fe(this,Oa);let r;for(;r=o==null?void 0:o.shift();)(a=fe(this,Nr))==null||a.call(this,...r)}};let Cbe=wbe;const fp=new Cbe({max:500,maxSize:5e3,ttl:1e3*60*30,sizeCalculation:(e,t)=>1}),{UnMergeable:_be}=_n();function Sbe(e){L7=e}let L7=async e=>(Lt.warn("请配置 app.use(FsCrud,{dictRequest:(context)=>{ 你的字典请求方法 }})"),[]);class F7 extends _be{constructor(t){super(),$t(this,"cache",!1),$t(this,"prototype",!1),$t(this,"immediate",!0),$t(this,"url"),$t(this,"getData"),$t(this,"value","value"),$t(this,"label","label"),$t(this,"labelBuilder"),$t(this,"children","children"),$t(this,"color","color"),$t(this,"isTree",!1),$t(this,"_data",null),$t(this,"originalData"),$t(this,"dataMap",{}),$t(this,"loading",!1),$t(this,"custom",{}),$t(this,"getNodesByValues"),$t(this,"onReady"),$t(this,"notifies",[]),$t(this,"_unfetchValues",{}),Object.defineProperty(this,"loading",{value:!1,enumerable:!1}),Object.defineProperty(this,"notifies",{value:!1,enumerable:!1}),Object.defineProperty(this,"originalData",{value:null,enumerable:!1}),this.loading=!1,Fs(this,t),t.data!=null&&(this.originalData=t.data,this.setData(t.data)),this.toMap()}get data(){return this._data}set data(t){this._data=t,this.toMap()}isDynamic(){return this.url instanceof Function||this.getData instanceof Function||this.prototype}setData(t){this.data=t}async _loadDict(t){if(this.data&&!t.reload)return this.data;if(this.loading)return this._registerNotify();let n=null;if(this.getNodesByValues){if(t.value){let a=null;this.cache&&this.url&&(a=this.url+t.value);let o=null;if(a&&(o=fp.get(a)),o)n=o;else{const r=Array.isArray(t.value)?t.value:[t.value];if(n=await this.getNodesByValues(r,t),n!=null&&!(n instanceof Array)){Lt.error("getNodesByValues需要返回数组,当前返回值:",n);return}a&&fp.set(a,n)}}}else if(this.originalData)n=this.originalData;else{this.loading=!0;try{n=await this.getRemoteDictData(t)}finally{this.loading=!1}}this.data=n,this.onReady&&this.onReady({dict:this,...t}),this._triggerNotify()}_triggerNotify(){this.notifies&&this.notifies.length>0&&(dt(this.notifies,t=>{t(this.data)}),this.notifies.length=0)}_registerNotify(){let t=null;const n=new Promise(a=>{t=o=>{a(o)}});return this.notifies||(this.notifies=[]),this.notifies.push(t),n}async loadDict(t){return await this._loadDict({...t})}async reloadDict(t){return await this.loadDict({...t,reload:!0})}async appendByValues(t){if(this.getNodesByValues==null){Lt.warn("请配置getNodesByValues");return}for(const a of t)this.dataMap[a]||this._unfetchValues[a]||(this._unfetchValues[a]={loading:!1,value:a});await Oe(),await Oe(),await Oe();const n=[];if(dt(this._unfetchValues,a=>{a.loading||(a.loading=!0,n.push(a.value))}),n.length>0){const a=await this.getNodesByValues(n);this.setData([...this.data||[],...a]);for(const o of n)delete this._unfetchValues[o];return Object.keys(this._unfetchValues).length===0&&this._triggerNotify(),this.data}else return this._registerNotify()}clear(){this.originalData=null,this.setData(null)}async getRemoteDictData(t){let n,a,o;if(this.url&&(o=this.url,o instanceof Function&&(o=o({...t,dict:this})),a=o),this.getData!=null)n=async()=>{const r=await this.getData({url:o,dict:this,...t});return Array.isArray(r)?r:[]};else if(o)n=async()=>{const r=await L7({url:o,dict:this});return Array.isArray(r)?r:[]};else return[];if(this.cache&&a){let r=fp.get(a);if(r==null)r={loaded:!1,loading:!0,data:void 0,callback:[]},fp.set(a,r);else{if(r.loaded)return r.data;if(r.loading)return new Promise(l=>{const s=i=>{l(i)};r.callback.push(s)})}try{r.loaded=!1,r.loading=!0;let l=await n();l=l||[],l instanceof Array||Lt.warn("dict data 格式有误,期望格式为数组,实际格式为:",l),r.data=l,r.loaded=!0,r.loading=!1;for(const s of r.callback)s(l);return r.callback=[],l}catch(l){r.loading=!1,r.loaded=!1,Lt.error("load dict error:",l)}}return await n()}toMap(){if(this._data==null){this.dataMap={};return}const t={};this.data&&this.buildMap(t,this.data||[]),this.dataMap=t}buildMap(t,n){dt(n,a=>{t[this.getValue(a)]=a,this.isTree&&this.getChildren(a)&&this.buildMap(t,this.getChildren(a))})}getValue(t){return t[this.value]}getLabel(t){return this.labelBuilder?this.labelBuilder(t):t[this.label]}getChildren(t){return t[this.children]}getColor(t){return t[this.color]}getDictData(){return this.data}getDictMap(){return this.dataMap}getNodeByValue(t){return this.dataMap[t]}getNodesFromDataMap(t){if(t==null)return[];Un(t)||(t=[t]);const n=[];return dt(t,a=>{const o=this.dataMap[a];o?n.push(o):n.push({[this.value]:a})}),n}}function xbe(e){const t=Os(new F7(e));return!t.prototype&&t.immediate&&t.loadDict(),t}function kbe(){return{dict:xbe,setDictRequest:Sbe,Dict:F7}}async function Ebe(e){await Oe();const t=e.getModal();if(t==null)return;const n=t.querySelector(".ant-modal-header");if(n==null)return;const a=t,o=t.style;n.style.cursor="move",n.onmousedown=r=>{const l=r.clientX,s=r.clientY;a.style.transform="translate(0px, 0px)";let i,u;o.left.includes("%")?(i=+document.body.clientWidth*(+o.left.replace(/%/g,"")/100),u=+document.body.clientHeight*(+o.top.replace(/%/g,"")/100)):(i=+o.left.replace(/px/g,""),u=+o.top.replace(/px/g,""),u=u===0?100:u),document.onmousemove=function(c){const f=c.clientX-l,p=c.clientY-s;a.style.left=`${f+i}px`,a.style.top=`${p+u}px`},document.onmouseup=function(c){document.onmousemove=null,document.onmouseup=null}}}async function Tbe(e){await Oe();const t=e.getModal();if(t==null)return;const n=t.querySelector(".n-card-header");if(n==null)return;const a=t,o=t.style;n.style.cursor="move",n.onmousedown=r=>{const l=r.clientX,s=r.clientY;a.style.transform="translate(0px, 0px)";let i,u;o.left.includes("%")?(i=+document.body.clientWidth*(+o.left.replace(/%/g,"")/100),u=+document.body.clientHeight*(+o.top.replace(/%/g,"")/100)):(i=+o.left.replace(/px/g,""),u=+o.top.replace(/px/g,"")),document.onmousemove=async function(c){if(c.clientX==0&&c.clientY==0)return;const f=c.clientX-l,p=c.clientY-s;a.style.left=`${f+i}px`,a.style.top=`${p+u}px`},document.onmouseup=function(c){document.onmousemove=null,document.onmouseup=null}}}async function Mbe(e){const{ui:t}=sn();t.type==="antdv"?await Ebe(e):t.type==="element"||await Tbe(e)}function Obe(){return{dragModal:Mbe}}const Rbe={logger:{off:{tableColumns:!1}}},Abe=K({name:"FsContainer",props:{fixedHeight:{type:Boolean,default:!0},bodyStyle:{type:Object,default:()=>({})},innerStyle:{type:Object,default:()=>({})}},setup(e,t){const{merge:n}=_n(),a=x(()=>e.fixedHeight===!1?n({position:"relative"},e.innerStyle):e.innerStyle),o=x(()=>e.fixedHeight===!1?n({flex:"unset"},e.bodyStyle):e.bodyStyle);return{computedInnerStyle:a,computedBodyStyle:o}}}),$be={class:"fs-container"},Pbe={class:"box"},Nbe={class:"header"},Ibe={class:"footer"};function Vbe(e,t,n,a,o,r){return C(),A("div",$be,[M("div",Pbe,[M("div",{class:"inner",style:Ue(e.computedInnerStyle)},[M("div",Nbe,[re(e.$slots,"header")]),M("div",{class:"body",style:Ue(e.computedBodyStyle)},[re(e.$slots,"default")],4),M("div",Ibe,[re(e.$slots,"footer")])],4)]),re(e.$slots,"box")])}const Lbe=Rn(Abe,[["render",Vbe]]),Fbe=K({name:"FsLayoutDefault"}),Dbe={class:"fs-crud-header"},Bbe={class:"fs-header-top"},zbe={class:"fs-header-middle"},Hbe={class:"fs-header-bottom"},jbe={class:"fs-crud-footer"};function Kbe(e,t,n,a,o,r){const l=He("fs-container");return C(),ae(l,{class:"fs-layout-default"},{header:te(()=>[M("div",Dbe,[M("div",Bbe,[re(e.$slots,"header-top")]),re(e.$slots,"search"),M("div",zbe,[re(e.$slots,"header-middle")]),re(e.$slots,"actionbar"),re(e.$slots,"toolbar"),M("div",Hbe,[re(e.$slots,"header-bottom")]),re(e.$slots,"tabs")])]),footer:te(()=>[M("div",jbe,[re(e.$slots,"footer-top"),re(e.$slots,"pagination"),re(e.$slots,"footer-bottom")])]),default:te(()=>[re(e.$slots,"default"),re(e.$slots,"table"),re(e.$slots,"form")]),_:3})}const Wbe=Rn(Fbe,[["render",Kbe]]),qbe=K({name:"FsLayoutCard",setup(){const e=Fe("get:crudBinding"),t=x(()=>{var o,r;return e==null?!0:(r=(o=e())==null?void 0:o.search)==null?void 0:r.show}),{ui:n}=sn(),a=F(n.card.name);return{searchShow:t,cardComponentName:a}}}),Ube={class:"fs-header-top"},Ybe={class:"fs-header-bottom"},Gbe={class:"top-bar"},Xbe={class:"top-bar"},Jbe={class:"fs-crud-footer"};function Zbe(e,t,n,a,o,r){const l=He("fs-container");return C(),ae(l,{class:"fs-layout-card"},{header:te(()=>[M("div",Ube,[re(e.$slots,"header-top")]),e.searchShow?(C(),ae(Me(e.cardComponentName),{key:0},{default:te(()=>[re(e.$slots,"search")]),_:3})):le("",!0),M("div",Ybe,[re(e.$slots,"header-bottom")])]),default:te(()=>[J(l,null,{header:te(()=>[re(e.$slots,"tabs")]),default:te(()=>[(C(),ae(Me(e.cardComponentName),{class:"fs-layout-card-body"},{title:te(()=>[M("div",Gbe,[re(e.$slots,"actionbar"),re(e.$slots,"toolbar")])]),header:te(()=>[M("div",Xbe,[re(e.$slots,"actionbar"),re(e.$slots,"toolbar")])]),default:te(()=>[J(l,null,{footer:te(()=>[M("div",Jbe,[re(e.$slots,"footer-top"),re(e.$slots,"pagination"),re(e.$slots,"footer-bottom")])]),default:te(()=>[re(e.$slots,"default"),re(e.$slots,"table"),re(e.$slots,"form")]),_:3})]),_:3}))]),_:3})]),_:3})}const Qbe=Rn(qbe,[["render",Zbe]]);function J8(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!rn(e)}const eye=K({name:"FsButton",inheritAttrs:!1,props:{text:{type:String,default:"",required:!1},icon:{type:[String,Object,Function],default:"",required:!1},iconRight:{type:[String,Object,Function],default:"",required:!1},circle:{type:Boolean,default:!1,required:!1},tooltip:{type:Object,default:void 0},badge:{type:Object,default:null,required:!1},buttonProps:{type:Object,default:void 0},className:{},loading:{type:Boolean,default:void 0,required:!1}},emits:["click"],setup(e,t){const{ui:n}=sn(),{merge:a}=_n(),o=F(!1),r=x(()=>e.loading??o.value??!1),l=(m,h="fs-button-icon")=>{if(m!=null)return typeof m=="string"?J(He("fs-icon"),{icon:m,class:h},null):typeof m=="function"?m():J(He("fs-icon"),Re(m,{class:h}),null)};let s=()=>{const m=e.icon,h=e.iconRight,v=n.type!=="element",g=!v;let b;const y={...t.slots};(m&&!v&&!g||t.slots.default||e.text||h)&&(y.default=()=>{const T=[];return m&&!v&&!g&&T.push(l(m)),t.slots.default&&T.push(t.slots.default()),e.text&&T.push(e.text),h&&T.push(l(h,"fs-button-icon-right")),T}),m&&(v&&!y.icon?y.icon=()=>l(m):g&&!y.icon&&(b=l(m)));const w=e.circle?n.button.circle:{},_=Me(n.button.name),S=T=>{T.loadingRef=o,t.emit("click",T)},k=a({...w,class:{"fs-button":!0,"is-thin":!e.text&&!t.slots.default},loading:r.value,onClick:S},{class:e.className,...t.attrs,...e.buttonProps});return b&&(k.icon=b),Je(_,k,y)};const i=s,u=Me(n.badge.name);if(e.badge&&(s=()=>{let m;return J(u,e.badge,J8(m=i())?m:{default:()=>[m]})}),!e.tooltip)return s;const c=Me(n.tooltip.name),f=x(()=>Uo(e.tooltip,"slots")),p=n.tooltip.trigger;return()=>{var m;const h={...(m=e.tooltip)==null?void 0:m.slots,[p]:s};return J(c,f.value,J8(h)?h:{default:()=>[h]})}}}),tye=K({name:"FsIcon",inheritAttrs:!1,props:{icon:{type:String,default:void 0,require:!0},baseUrl:{type:String,default:""}},setup(e,t){const{ui:n}=sn(),a=x(()=>{var o;if(e.icon&&((o=e.icon)==null?void 0:o.indexOf(":"))>=0){if(e.icon.startsWith("http:")||e.icon.startsWith("https:")){let c=null;return e.icon.startsWith("http://")||e.icon.startsWith("https://")?c=e.icon:c=e.baseUrl+e.icon.replace("http:","").replace("https:",""),()=>J("img",Re({class:"fs-icon-image",src:c},t.attrs),null)}if(e.icon.startsWith("svg:")){const c=Me("FsIconSvg");return()=>{const f=e.icon.replace("svg:","");return J(c,Re({class:"fs-icon",icon:f},t.attrs),null)}}const l=Me("FsIconify"),s=e.icon.split(":");let i={},u=e.icon;return s.length>=3&&(i={color:s[2]},u=s[0]+":"+s[1]),()=>J(l,Re({class:"fs-icon",icon:u,style:i},t.attrs),null)}const r=Me(e.icon);return typeof r=="string"?()=>J("span",{title:"error icon name"},[r]):n.icon.isComponent?()=>J(r,Re({class:"fs-icon"},t.attrs),null):()=>J(He("el-icon"),Re({class:"fs-icon"},t.attrs),{default:()=>[J(r,null,null)]})});return()=>a.value()}}),nye=K({name:"FsIconify",components:{Icon:pge},props:{icon:{type:String},spin:{type:Boolean,default:!1}},setup(e,t){return{iconifyRef:F(null)}}});function aye(e,t,n,a,o,r){const l=He("Icon");return C(),A("span",{class:L(["fs-iconify",{"fs-iconify-spin":e.spin}])},[J(l,{ref:"iconifyRef",icon:e.icon,inline:!0},null,8,["icon"])],2)}const oye=Rn(nye,[["render",aye]]),rye=K({name:"FsSvgIcon",props:{icon:{type:String,required:!0},size:{type:[Number,String],default:16},spin:{type:Boolean,default:!1}},setup(e){const t=x(()=>`#${e.icon}`),n=x(()=>{const{size:a}=e;let o=`${a}`;return o=`${o.replace("px","")}px`,{width:o,height:o}});return{symbolId:t,getStyle:n}}}),lye={class:"fs-icon-svg-content","aria-hidden":"true"},sye=["xlink:href"];function iye(e,t,n,a,o,r){return C(),A("span",{class:L(["fs-icon-svg",e.spin&&"fs-icon-spin"])},[(C(),A("svg",lye,[M("use",{"xlink:href":e.symbolId},null,8,sye)]))],2)}const uye=Rn(rye,[["render",iye]]),cye=K({name:"FsLabel",props:{label:{type:String,default:""},labelAttrs:{type:Object,default:()=>({})},contentAttrs:{type:Object,default:()=>({})}}}),dye={class:"fs-label"};function fye(e,t,n,a,o,r){return C(),A("div",dye,[M("div",Re({class:"label"},e.labelAttrs),[Ct(ye(e.label)+" ",1),re(e.$slots,"label")],16),M("div",Re({class:"content"},e.contentAttrs),[re(e.$slots,"default")],16)])}const pye=Rn(cye,[["render",fye]]),hye={key:0,class:"fs-loading"},mye={key:0},vye=K({name:"FsLoading"}),gye=K({...vye,props:{loading:{type:Boolean},icon:{},text:{}},setup(e){const{ui:t}=sn();return(n,a)=>{const o=He("fs-icon");return n.loading?(C(),A("div",hye,[J(o,{class:"fs-icon-spin",icon:n.icon??d(t).icons.refresh},null,8,["icon"]),n.text?(C(),A("span",mye,ye(n.text),1)):le("",!0)])):le("",!0)}}}),bye=K({name:"FsBox"}),yye={class:"fs-box"};function wye(e,t,n,a,o,r){return C(),A("div",yye,[re(e.$slots,"default")])}const Cye=Rn(bye,[["render",wye]]);function _ye(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!rn(e)}function Z8(e,t){if(e[t]instanceof Array){const n=e[t];e[t]=a=>{for(const o of n)o(a)}}}const Sye=["div","span","a","p","pre","li","ol","ul"],xye=K({name:"FsComponentRender",inheritAttrs:!1,props:{modelValue:{},name:{},slots:{type:Object},children:{type:Object},on:{type:Object},events:{type:Object},scope:{type:Object},vModel:{type:[String,Object]},props:{},render:{},undefineToNull:{type:Boolean,default:!0}},emits:["update:dict","update:modelValue","mounted"],setup(e,t){const{ui:n}=sn(),{merge:a}=_n();_t("get:scope",()=>e.scope),gt(()=>{t.emit("mounted",e.scope)});const o=F(),r=x(()=>{const m={name:"modelValue",trim:!1,number:!1,transform:void 0};e.vModel&&(typeof e.vModel=="string"?m.name=e.vModel:a(m,e.vModel));const h=e.modelValue??(n.type==="antdv"?void 0:null),v="onUpdate:"+m.name,g={ref:o,[m.name]:h,[v]:y=>{if(y&&(m.trim&&(y=y.trim()),m.number)){const w=Number(y);isNaN(w)||(y=w)}m.transform&&(y=m.transform(y)),y===void 0&&e.undefineToNull&&(y=null),t.emit("update:modelValue",y)},...e.props},b={...e.events,...e.on};return dt(b,(y,w)=>{const _=y;w.startsWith("on")||(w=_N("on_"+w)),g[w]=S=>_({...e.scope,$event:S})}),g}),l=()=>{const m={},h=(v,g)=>{v instanceof Function?m[g]=b=>v({...e.scope,scope:b}):m[g]=()=>v};return dt(e.children,h),dt(e.slots,h),m},s=x(()=>{e.name;let m=d(e.name)||n.input.name;typeof m=="function"&&(m=m());const h={isAsyncComponent:!1,component:m};let v=h.component;return Sye.includes(v)||(typeof v=="string"&&(v=He(v)),(v==null?void 0:v.name)==="AsyncComponentWrapper"&&(h.isAsyncComponent=!0)),h.component=v,h}),i=l;function u(){return s.value.isAsyncComponent?f():c()}function c(){return o.value}async function f(){return c()??new Promise((h,v)=>{p(h,v,0)})}function p(m,h,v){setTimeout(()=>{const g=c();if(g!=null){m(g);return}if(v++,v>20){h(new Error("异步组件加载超时"));return}p(m,h,v)},200)}return t.expose({props:e,getTargetRefSync:c,getTargetRef:u,getTargetRefAsync:f}),()=>{let m;const h=Re(r.value,t.attrs);return Z8(h,"onChange"),Z8(h,"onBlur"),e.render?e.render({...e.scope,attrs:h}):J(s.value.component,h,_ye(m=i())?m:{default:()=>[m]})}}}),kye=K({name:"FsSlotRender",inheritAttrs:!1,props:{slots:{type:Function},scope:{type:Object}},setup(e){return()=>e.slots(e.scope)}}),D7=K({name:"FsRender",functional:!0,props:{renderFunc:{type:Function},scope:{type:Object}},setup(){},render(){return this.renderFunc(this.scope)}}),Eye=K({name:"FsForm",props:{initialForm:{type:Object,default(){return{}}},columns:{type:Object,default:void 0},group:{type:Object,default:void 0},doReset:{type:Function,default:void 0},beforeValidate:{type:Function,default:void 0},beforeSubmit:{type:Function,default:void 0},doSubmit:{type:Function,default:void 0},afterSubmit:{type:Function,default:void 0},slots:{type:Object,default:()=>({})},display:{type:String,default:"flex"},index:{type:Number,default:void 0},mode:{type:String,default:void 0},row:{type:Object,default:void 0},col:{type:Object,default:void 0},formItem:{type:Object,default:void 0},helper:{type:Object},watch:{type:Function,default:null}},emits:["reset","submit","success","validationError","value-change","init"],setup(e,t){var n,a;const{merge:o}=_n(),{ui:r}=sn(),{AsyncComputeValue:l,doComputed:s}=kr(),i=F(),u=Nt({}),{proxy:c}=bt();dt(e.columns,B=>{B.value!=null&&(B.value instanceof l||B.value instanceof am)&&Lt.warn("form.value配置不支持Compute/AsyncCompute类型的动态计算")});function f(){const B={};return dt(e.columns,(U,X)=>{const ce=d(U.value);ce!==void 0&&Zn(B,X,ce)}),o(B,Kn(e.initialForm)),B}const p=f();y(p);const m=x(()=>({row:p,form:u,index:e.index,mode:e.mode||"add",attrs:t.attrs,getComponentRef:R}));function h(){return m.value}const v=x(()=>e.columns);function g(B){B!=null&&dt(e.columns,(U,X)=>{let ce=on(B,X);if(U.valueBuilder){const ne=U.valueBuilder({value:ce,key:X,row:p,form:B,index:e.index,mode:e.mode});ne!=null&&!(ne instanceof Promise)&&Zn(B,X,ne)}})}function b(){return u}function y(B,U={}){if(g(B),U.mergeForm===!1)for(const ce in u)delete u[ce];o(u,B);const{valueChange:X}=U;X&&dt(e.columns,(ce,ne)=>{const ue=u[ne];S(ne,ue)})}function w(...B){return o({},e.col,...B)}function _(B){return{key:B.key,...m.value}}function S(B,U){const X={key:B,value:U,formRef:c,...m.value,immediate:!1};t.emit("value-change",X);let ce=e.columns[B].valueChange;ce&&(ce instanceof Function?ce(X):ce.handle&&ce.handle(X))}const k=F({});function T(B){return k.value[B].getFormItemRef()}function R(B,U=!1){var X;return(X=T(B))==null?void 0:X.getComponentRef(U)}const E=F([]);dt((n=e.group)==null?void 0:n.groups,(B,U)=>{B.collapsed!==!0&&E.value.push(U)}),((a=e.group)==null?void 0:a.groupType)==="tabs"&&(E.value=E.value.length>0?E.value[0]:null);const O=s(()=>e.group,h,null,(B={})=>{const U={};dt(B==null?void 0:B.groups,(ne,ue)=>{dt(ne.columns,ie=>{if(v.value[ie]==null){ys.logger.warn("无效的分组字段:"+ie);return}U[ie]=ue})});const X=B.groupType;let ce={parent:r.collapse.name,child:r.collapseItem.name};return X==="tabs"&&(ce.parent=r.tabs.name,ce.child=r.tabPane.name),o({wrapper:ce,groupedKeys:U},B)}),I=x(()=>{const B=[];return dt(v.value,(U,X)=>{var ce,ne;const ue=Kn(e.formItem||{});U=o(ue,U),U.key=X,U.order==null&&(U.order=Bs.orderDefault),(((ce=O.value)==null?void 0:ce.groupedKeys)==null||((ne=O.value)==null?void 0:ne.groupedKeys[X])==null)&&B.push(U),U.col=w(U.col)}),B.sort((U,X)=>U.order-X.order),B});function $(){return i.value}async function z(){const B=f(),U=k1(u);for(const X of U){const ce=on(B,X[0]);ce==null?bh(u,X[0]):Zn(u,X[0],ce)}e.doReset&&await e.doReset(m.value),t.emit("reset")}const q=F(),W=F({});function j(B){var U,X;if((U=O.value)!=null&&U.groupedKeys)for(let ce in B){const ne=(X=O.value)==null?void 0:X.groupedKeys[ce];ne!=null&&(B["group."+ne]=!0)}}async function N(){const B={...m.value,form:u};if(B.mode!=="view"){if(e.beforeValidate&&await e.beforeValidate(B)===!1)return!1;try{W.value={},await r.form.validateWrap(i.value),q.value=!0}catch(U){q.value=!1;const X=r.form.transformValidateErrors(U);throw j(X),W.value=X,t.emit("validationError",m.value),U}}}async function V(){await N();const B=Kn(Qt(u)),U={...m.value,form:B};if(Lt.debug("form submit",JSON.stringify(u)),dt(e.columns,(X,ce)=>{let ne=on(B,ce);if(X.valueResolve){const ue=X.valueResolve({value:ne,key:ce,...U});ue!=null&&!(ue instanceof Promise)&&Zn(B,ce,ue)}}),e.beforeSubmit&&await e.beforeSubmit(U)===!1)return!1;if(dt(e.columns,(X,ce)=>{X.submit===!1?bh(B,ce):X.submit===!0&&Zn(B,ce,B[ce])}),e.doSubmit){const X=await e.doSubmit(U);if(U.res=X,X===!1)return!1}return t.emit("submit",U),e.afterSubmit&&await e.afterSubmit(U)===!1?!1:(t.emit("success",U),U)}gt(()=>{dt(v.value,(B,U)=>{if(B.valueChange==null)return;let X=B.valueChange;if(X&&X.immediate===!0&&X.handle){const ce={key:U,value:u[U],formRef:c,...m.value,immediate:!0};X.handle&&X.handle(ce)}})});function H(B){return!!(B&&d(B.show)!==!1)}function Y(B){if(!B.columns||d(B.show)===!1)return!1;for(let U of B.columns)if(v.value[U]!=null&&H(v.value[U]))return!0;return!1}e.watch&&pe(()=>u,(B,U)=>{e.watch&&e.watch(m.value)},{deep:!0,immediate:!0});function P(){const B=JSON.stringify(p),U=JSON.stringify(u);return B!==U}const D=x(()=>o({},e.slots,t.slots));return t.emit("init",m.value),{get:(B,U)=>on(B,U),set:(B,U,X)=>{Zn(B,U,X),S(U,X)},ui:r,validRef:q,errorsRef:W,formRef:i,computedColumns:v,computedDefaultColumns:I,submit:V,reset:z,getFormRef:$,scope:m,buildItemScope:_,groupActiveKey:E,form:u,formItemRefs:k,getFormData:b,setFormData:y,getComponentRef:R,mergeCol:w,validate:N,computedGroup:O,getContextFn:h,formItemShow:H,groupItemShow:Y,isDirty:P,mergedSlots:D}}});function Tye(e,t,n,a,o,r){const l=He("fs-form-item-col"),s=He("fs-render");return C(),ae(Me(e.ui.form.name),{ref:"formRef",class:L(["fs-form",{"fs-form-grid":e.display==="grid","fs-form-flex":e.display==="flex","fs-form-invalid":e.validRef===!1}]),onsubmit:"event.preventDefault();",model:e.form},{default:te(()=>[(C(),ae(Me(e.ui.row.name),Re({class:"fs-row"},e.row),{default:te(()=>[(C(!0),A(Ae,null,it(e.computedDefaultColumns,i=>(C(),ae(l,{key:i==null?void 0:i.key,ref_for:!0,ref:u=>{u&&(e.formItemRefs[i.key]=u)},col:e.mergeCol(i.col),item:i,helper:e.helper,"model-value":e.get(e.form,i.key),slots:e.mergedSlots["form_"+i.key],"get-context-fn":e.getContextFn,"onUpdate:modelValue":u=>e.set(e.form,i.key,u)},null,8,["col","item","helper","model-value","slots","get-context-fn","onUpdate:modelValue"]))),128))]),_:1},16)),e.computedGroup.wrapper?(C(),ae(Me(e.computedGroup.wrapper.parent),Re({key:0,[e.ui.collapse.modelValue]:e.groupActiveKey,["onUpdate:"+e.ui.collapse.modelValue]:t[0]||(t[0]=i=>e.groupActiveKey=i),style:{width:"100%"}},e.computedGroup),{default:te(()=>[(C(!0),A(Ae,null,it(e.computedGroup.groups,(i,u)=>(C(),A(Ae,{key:u},[e.groupItemShow(i)?(C(),ae(Me(e.computedGroup.wrapper.child),Re({key:0,[e.ui.collapse.keyName||""]:u},{ref_for:!0},i,{class:{"fs-form-group-error":e.errorsRef["group."+u]}}),xa({default:te(()=>[(C(),ae(Me(e.ui.row.name),Re({class:"fs-row"},{ref_for:!0},e.row),{default:te(()=>[(C(!0),A(Ae,null,it(i.columns,c=>(C(),A(Ae,{key:c},[e.computedColumns[c]?(C(),ae(l,{key:0,ref_for:!0,ref:f=>{f&&(e.formItemRefs[c]=f)},col:e.mergeCol(e.computedColumns[c].col),item:e.computedColumns[c],"model-value":e.get(e.form,c),slots:e.mergedSlots["form_"+c],"get-context-fn":e.getContextFn,helper:e.helper,"onUpdate:modelValue":f=>e.set(e.form,c,f)},null,8,["col","item","model-value","slots","get-context-fn","helper","onUpdate:modelValue"])):le("",!0)],64))),128))]),_:2},1040))]),_:2},[it(i.slots,(c,f)=>({name:f,fn:te(p=>[J(s,{"render-func":c,scope:{...p,hasError:e.errorsRef["group."+u]}},null,8,["render-func","scope"])])}))]),1040,["class"])):le("",!0)],64))),128))]),_:1},16)):le("",!0)]),_:1},8,["class","model"])}const Mye=Rn(Eye,[["render",Tye]]),Oye=K({name:"FsFormItem",components:{FsRender:D7},props:{modelValue:{},item:{type:Object,default:void 0},formSlot:{type:Function,default:void 0},getContextFn:{type:Function,default:void 0},helper:{type:[String,Object]}},emits:["update:modelValue"],setup(e,t){const{ui:n}=sn(),{merge:a}=_n(),o=F(),r=()=>{const h=e.getContextFn?e.getContextFn():{};return{value:e.modelValue,key:e.item.key,...h}};function l(h){t.emit("update:modelValue",h)}function s(h=!1){var v,g;return h?(v=o.value)==null?void 0:v.getTargetRefAsync():(g=o.value)==null?void 0:g.getTargetRef()}const i=x(()=>{const h={...e.item};return delete h.title,delete h.label,h}),u=x(()=>{var h,v,g;return((v=(h=e.item)==null?void 0:h.helper)==null?void 0:v.position)||((g=e.helper)==null?void 0:g.position)}),c=x(()=>{var h,v;return a({},(h=e.item.helper)==null?void 0:h.tooltip,(v=e.helper)==null?void 0:v.tooltip)}),f=x(()=>{if(e.item!=null)return e.item.key.indexOf(".")>=0?e.item.key.split("."):e.item.key}),p=x(()=>e.item.label||e.item.title),m=x(()=>p.value instanceof Function);return{ui:n,updateModelValue:l,scopeFunc:r,getComponentRef:s,componentRenderRef:o,computedHelperPosition:u,computedHelperTooltip:c,computedKey:f,computedLabelIsRender:m,computedLabel:p,computedLabelRender:()=>p.value(r()),computedItem:i}}}),Rye={key:0,class:"fs-form-item-label-text"},Aye=["title"],$ye={class:"fs-form-helper-tooltip"},Pye={class:"fs-form-item-label-icon"},Nye={class:"fs-form-item-content"},Iye={class:"fs-form-item-render"},Vye={class:"fs-form-item-component"};function Lye(e,t,n,a,o,r){const l=He("fs-render"),s=He("fs-form-helper"),i=He("fs-icon"),u=He("fs-slot-render"),c=He("fs-component-render");return e.computedItem?(C(),ae(Me(e.ui.formItem.name),Re({key:0,class:"fs-form-item",[e.ui.formItem.prop||""]:e.computedKey},e.computedItem,{path:e.computedItem.key,"rule-path":e.computedItem.key}),{label:te(()=>[e.computedLabelIsRender?(C(),A("span",Rye,[J(l,{"render-func":e.computedLabelRender},null,8,["render-func"])])):(C(),A("span",{key:1,class:"fs-form-item-label-text",title:e.computedLabel},ye(e.computedLabel),9,Aye)),e.computedItem.helper&&e.computedHelperPosition==="label"?(C(),ae(Me(e.ui.tooltip.name),gn(Re({key:2},e.computedHelperTooltip)),{[e.ui.tooltip.content]:te(()=>[M("span",$ye,[J(s,{helper:e.computedItem.helper,scope:e.scopeFunc()},null,8,["helper","scope"])])]),[e.ui.tooltip.trigger]:te(()=>[M("span",Pye,[J(i,{class:"fs-form-item-label-icon-inner",icon:e.ui.icons.question},null,8,["icon"])])]),_:2},1040)):le("",!0)]),default:te(()=>{var f;return[M("div",Nye,[e.computedItem.topRender?(C(),ae(l,{key:0,"render-func":e.computedItem.topRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):le("",!0),M("div",Iye,[e.computedItem.prefixRender?(C(),ae(l,{key:0,"render-func":e.computedItem.prefixRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):le("",!0),M("div",Vye,[e.formSlot?(C(),ae(u,{key:0,slots:e.formSlot,scope:e.scopeFunc()},null,8,["slots","scope"])):((f=e.computedItem.component)==null?void 0:f.show)!==!1?(C(),A(Ae,{key:1},[e.computedItem.conditionalRender&&e.computedItem.conditionalRender.match&&e.computedItem.conditionalRender.match(e.scopeFunc())?(C(),ae(l,{key:0,"render-func":e.computedItem.conditionalRender.render,scope:e.scopeFunc()},null,8,["render-func","scope"])):e.computedItem.render?(C(),ae(l,{key:1,"render-func":e.computedItem.render,scope:e.scopeFunc()},null,8,["render-func","scope"])):(C(),ae(c,Re({key:2,ref:"componentRenderRef"},e.computedItem.component,{"model-value":e.modelValue,scope:e.scopeFunc(),"onUpdate:modelValue":e.updateModelValue}),null,16,["model-value","scope","onUpdate:modelValue"]))],64)):le("",!0)]),e.computedItem.suffixRender?(C(),ae(l,{key:1,"render-func":e.computedItem.suffixRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):le("",!0)]),e.computedItem.bottomRender?(C(),ae(l,{key:1,"render-func":e.computedItem.bottomRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):le("",!0),e.computedItem.helper&&e.computedHelperPosition!=="label"?(C(),ae(s,{key:2,helper:e.computedItem.helper,scope:e.scopeFunc()},null,8,["helper","scope"])):le("",!0)])]}),_:1},16,["path","rule-path"])):le("",!0)}const Fye=Rn(Oye,[["render",Lye]]),Dye=K({__name:"fs-form-item-col",props:{item:{type:Object,default:void 0},slots:{type:Function,default:void 0},getContextFn:{type:Function,default:void 0},col:{type:Object,default:()=>({})},helper:{type:[String,Object],default:void 0}},setup(e,{expose:t}){const{ui:n}=sn(),a=e,{doComputed:o}=kr(),r=o(()=>a.item,()=>a.getContextFn()),{merge:l}=_n(),s=Ro(),i=F();function u(){return i.value}return t({getFormItemRef:u}),(c,f)=>{var p;const m=He("fs-form-item");return d(r)&&d(r).show!==!1?(C(),ae(Me(d(n).col.name),Re({key:0,class:"fs-col"},d(l)(e.col,(p=d(r))==null?void 0:p.col)),{default:te(()=>{var h;return[d(r)&&((h=d(r))==null?void 0:h.blank)!==!0?(C(),ae(m,Re({key:0,ref_key:"formItemRef",ref:i,item:d(r),"form-slot":e.slots,"get-context-fn":e.getContextFn,helper:e.helper},d(s)),null,16,["item","form-slot","get-context-fn","helper"])):le("",!0)]}),_:1},16)):le("",!0)}}}),Bye=K({name:"FsFormHelper",props:{helper:{type:[Object,String]},scope:{}},setup(e){}}),zye={class:"fs-form-helper"},Hye={key:0},jye={key:2};function Kye(e,t,n,a,o,r){const l=He("fs-render");return C(),A("div",zye,[typeof e.helper=="string"?(C(),A("pre",Hye,ye(e.helper),1)):e.helper.render?(C(),ae(l,{key:1,"render-func":e.helper.render,scope:e.scope},null,8,["render-func","scope"])):e.helper.text?(C(),A("pre",jye,ye(e.helper.text),1)):le("",!0)])}const Wye=Rn(Bye,[["render",Kye]]);function qye(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!rn(e)}const ef=K({name:"FsFormWrapper",props:{options:{},slots:{},inner:{},innerWrapper:{},id:{},zIndex:{}},emits:["reset","submit","validationError","value-change","open","opened","mounted","closed","inner-change"],setup(e,t){var n;const{t:a}=ao(),{merge:o}=_n(),r=F(!1),l=F(),s=F(),i=F(),u=F(),c=F(),f=F(!1),p=F(),m=F(),h=F(),v=F(),g=e.id||Math.floor(Math.random()*1e6)+"",b="fs-form-wrapper_"+g,y=F({});function w(Q={}){var se;return{formWrapperId:g,formWrapperIdClass:b,close:q,doClose:W,onClosed:j,onOpened:N,open:_,title:v,fullscreenEnabled:ue,fullscreen:ne,formWrapperIs:l,formWrapperOpen:r,formWrapperBind:i,computedButtons:ce,onValueChange:V,innerBind:ee,formWrapperSlots:y,wrapper:i.value,options:s.value,formRef:c.value,form:P(),wrapperBindRef:i,formOptionsRef:s,setFormData:D,getFormData:P,reset:Y,loading:f,toggleFullscreen:ie,submit:H,mode:(se=s.value)==null?void 0:se.mode,...Q}}const _=async Q=>{var se,de;const{wrapper:he}=Q;he.onOpen&&he.onOpen(Q),v.value=d(he.title),l.value=Q.wrapper.is,u.value=he,s.value={...Uo(Q,"wrapper","slots"),slots:{...e.slots,...Q.slots,...t.slots}};const ve=Z.formWrapper.customClass(l.value),Ie=`fs-form-wrapper fs-form-wrapper-${(se=s.value)==null?void 0:se.mode} ${b} ${he[ve]||""} `;return i.value={...Uo(he,"title","onOpen","onClosed","onOpened","is","inner","beforeClose"),[ve]:Ie},y.value={...e.slots,...(de=Q.wrapper)==null?void 0:de.slots,...t.slots},t.emit("open",w()),p.value=()=>{he.onClosed&&he.onClosed(w())},m.value=()=>{he.onOpened&&he.onOpened(w())},h.value=he.beforeClose,he.fullscreen!=null&&(ne.value=he.fullscreen),t.emit("inner-change",!!u.value.inner),await Oe(),r.value=!0,await Oe(),N(),w()};async function S(){var Q;const se=u.value.saveRemind;if((Q=c.value)!=null&&Q.isDirty()&&se){let de=!1;if(se instanceof Function)de=await se();else try{await Z.messageBox.confirm({title:a("fs.form.saveRemind.title"),message:a("fs.form.saveRemind.content"),confirmButtonText:a("fs.form.saveRemind.ok"),cancelButtonText:a("fs.form.saveRemind.cancel")}),de=!0}catch{de=!1}de&&await H()}}const k=s7();let T=null;function R(){return u.value.saveDraft?(T==null&&(T=new u7({$router:k,tableName:"addFormDraft",keyType:e.id||"0"})),T):null}async function E(){var Q;const se=u.value.saveDraft,de=(Q=c.value)==null?void 0:Q.isDirty(),he=s.value.mode=="add";return de&&se&&he?(await R().updateTableValue(P()),!0):!1}async function O(){const Q=R();Q&&await Q.clearTableValue()}async function I(){const Q=R();if(Q){const se=await Q.getTableValue();se&&D(se,{mergeForm:!0})}}async function $(){let Q=!1;return u.value.saveDraft&&(Q=await E()),h.value&&h.value(w())==!1?!1:(Q||await S(),!0)}const z=x(()=>Z.type=="element"?{beforeClose:Q=>{W()}}:{}),q=async()=>{r.value=!1},W=async()=>await $()==!1?!1:(q(),!0),j=()=>{p.value&&p.value(),t.emit("closed"),s.value=null},N=()=>{if(u.value.saveDraft&&I(),t.emit("opened"),m.value&&m.value(),i.value.draggable||i.value.dragenabled){const{dragModal:Q}=Obe();Q({getModal:()=>document.querySelector(`.${b}`)})}},V=Q=>{t.emit("value-change",Q)};async function H(){f.value=!0;try{if(await c.value.submit()===!1)return;await O(),q()}finally{f.value=!1}}async function Y(){await c.value.reset()}function P(){var Q;return(Q=c.value)==null?void 0:Q.getFormData()}function D(Q,se){var de;(de=c.value)==null||de.setFormData(Q,se)}const{doComputed:B}=kr();function U(){var Q,se,de;return{row:(Q=s.value)==null?void 0:Q.initialForm,form:P(),index:(se=s.value)==null?void 0:se.index,mode:(de=s.value)==null?void 0:de.mode,attrs:s.value,getComponentRef(...he){var ve;(ve=c.value)==null||ve.getComponentRef(...he)}}}const X=B(()=>{var Q;return(Q=i.value)==null?void 0:Q.buttons},U),ce=x(()=>{const Q={cancel:{},reset:{},ok:{loading:f.value}},se=o(Q,X.value),de=[];return dt(se,(he,ve)=>{he.key=ve,de.push(he),he.onClick==null&&he.click!=null&&(he.onClick=Ie=>{he.click(w({loadingRef:Ie==null?void 0:Ie.loadingRef}))})}),Bi(de,he=>he.order??Bs.orderDefault)});gt(async()=>{e.options!=null&&await _(e.options),t.emit("mounted",bt().exposed)});const ne=F(!1),ue=x(()=>{var Q;return!((Q=l.value)!=null&&Q.endsWith("drawer"))});function ie(){ne.value=!ne.value}const Z=zn.get(),ee=x(()=>u.value.inner?Z.formWrapper.buildInnerBind({getInnerWrapper(){if(u.value.innerContainerSelector){const Q=document.querySelector(u.value.innerContainerSelector);if(Q)return Q.classList.add("fs-form-inner-wrapper"),Q;console.error(`找不到选择器为${u.value.innerContainerSelector}的元素`)}return e.innerWrapper}}):{});t.expose({formWrapperId:g,formWrapperIdClass:b,close:q,doClose:W,onClosed:j,onOpened:N,open:_,title:v,fullscreenEnabled:ue,fullscreen:ne,toggleFullscreen:ie,formOptions:s,formWrapperIs:l,formWrapperOpen:r,formWrapperBind:i,formRef:c,submit:H,reset:Y,computedButtons:ce,loading:f,getFormData:P,setFormData:D,onValueChange:V,innerBind:ee,formWrapperSlots:y,form:P(),wrapperBindRef:i,formOptionsRef:s,mode:(n=s.value)==null?void 0:n.mode});const G=Tn();return()=>{if(!i.value)return null;const Q=zn.get();let se={};const de={...G,...y.value},he=(et,rt,ke=de)=>ke[et]?ke[et](rt):null,ve=l.value||"el-dialog";if(s.value){const{index:et,mode:rt}=s.value||{},ke={_self:this,index:et,mode:rt,getFormData:P};se={[Q.formWrapper.titleSlotName]:()=>{let Qe=null;return ue.value&&(Qe=J(He("fs-icon"),{class:"fs-fullscreen-icon",onClick:ie,icon:ne.value?Q.icons.fullScreen:Q.icons.unFullScreen},null)),J("div",{class:"fs-form-header"},[J("div",{class:"fs-form-header-left"},[he("form-header-left",ke),v.value,he("form-header-right",ke)]),J("div",{class:"fs-form-header-action"},[he("form-header-action-left",ke),Qe,he("form-header-action-right",ke)])])},default:()=>{const Qe=[];return dt(ce.value,ft=>{ft.show!==!1&&Qe.push(J(He("fs-button"),ft,null))}),J("div",{class:"fs-form-wrapper-body"},[J("div",{class:"fs-form-body"},[he("form-body-top",ke),J("div",{class:"fs-form-content"},[he("form-body-left",ke),J(He("fs-form"),Re({ref:c},s.value,{onValueChange:V}),null),he("form-body-right",ke)]),he("form-body-bottom",ke)]),J("div",{class:"fs-form-footer-btns"},[he("form-footer-left",ke),Qe,he("form-footer-right",ke)])])}}}if(Q.formWrapper.hasContentWrap){const et=Q.formWrapper.hasContentWrap(ve),rt=se;if(et){const ke=Me(et);se={default:()=>J(ke,Re({closable:!0},u.value.contentProps),qye(rt)?rt:{default:()=>[rt]})}}}const Ie=Q.formWrapper.visible,De={[Ie]:r.value,["onUpdate:"+Ie]:async et=>{if(et===!1&&r.value)return await W();r.value=et}},Le=Q.formWrapper.buildOnClosedBind(ve,j),we=Q.formWrapper.customClass(ve),$e=`${ne.value?"fs-fullscreen":""} ${i.value[we]||""}`,_e={[we]:$e},Be={fullscreen:ne.value},Ke={zIndex:i.value.zIndex||e.zIndex},ot=Me(ve);return J(ot,Re(i.value,_e,De,Le,Be,ee.value,Ke,z.value),se)}}}),Uye=K({name:"FsFormProvider"}),Yye=K({...Uye,setup(e){const t=F({}),n=F({});return _t("get:form:wrapper:context",a=>n.value[a]),_t("use:form:wrapper",()=>({setContext(a,o){n.value[a]=o},open(a){const o=a.id||Math.floor(Math.random()*1e6)+"";return new Promise((r,l)=>{t.value[o]={id:o,async onMounted(s){await s.open(a),r(s)},onClosed(){a.id||delete t.value[o]}}})}})),(a,o)=>(C(),A(Ae,null,[re(a.$slots,"default"),(C(!0),A(Ae,null,it(t.value,r=>(C(),ae(d(ef),Re({key:r.id},{ref_for:!0},r),null,16))),128))],64))}});function Gye(e,t){_t("get:columns",()=>e.table.columns),_t("update:columns",n=>{t.emit("update:columns",n)}),_t("get:crudBinding",()=>e)}function Xye(e,t){const n=F(),a=()=>n.value,o=()=>n.value?n.value.getForm():(Lt.warn("请使用expose.getSearchFormData代替"),{}),r=()=>n.value?n.value.getValidatedForm():(Lt.warn("请使用expose.getSearchValidatedFormData代替"),{});function l({form:s,mergeForm:i=!1}){n.value&&n.value.setForm(s,i)}return{searchRef:n,getSearchRef:a,getSearchFormData:o,setSearchFormData:l,getSearchValidatedFormData:r}}function Jye(e,t,n){return{tabsBinding:x(()=>{var a,o,r,l,s,i,u;if(t.tabs&&t.tabs.show&&t.tabs.name){let c=null;const f={...t.tabs};return(a=t.search)!=null&&a.columns&&(l=(r=(o=t.search)==null?void 0:o.columns[t.tabs.name])==null?void 0:r.component)!=null&&l.dict&&(c=(u=(i=(s=t.search)==null?void 0:s.columns[t.tabs.name])==null?void 0:i.component)==null?void 0:u.dict,f.value==null&&(f.value=c.value),f.label==null&&(f.label=c.label),f.options==null&&(f.options=c.data||[])),{...f,modelValue:t.search.validatedForm&&t.search.validatedForm[t.tabs.name],"onUpdate:modelValue":p=>{n.emit("tab-change",{[t.tabs.name]:p})}}}return{show:!1}})}}function pp(e,t){if(!e)return{};const n={};return dt(e,(a,o)=>{o.startsWith(t)&&(n[o]=a)}),n}function Zye(e,t,{tableRef:n,containerRef:a}){var o;const r=zn.get();let l=r.table;if(((o=e.table)==null?void 0:o.tableVersion)==="v2"&&(l=r.tableV2),l.hasMaxHeight(e.table))return{};if(!l.fixedHeaderNeedComputeBodyHeight)return{};const s=F(null);function i(){var c;const f=(c=n==null?void 0:n.value)==null?void 0:c.$el;if(f==null||f.querySelector==null)return;const p=f.querySelector(l.headerDomSelector);if(p==null)return;const m=f.getBoundingClientRect().height,h=p.getBoundingClientRect().height;s.value=m-h-2+(e.table.maxHeightAdjust||0),Lt.debug("table max height recomputed ",s.value)}function u(){var c;const f=(c=n==null?void 0:n.value)==null?void 0:c.$el;if(f==null)return;const p=f.parentNode;new ResizeObserver(function(m){Lt.debug("table resized",m),m.length>0&&m[0].contentRect.height>0&&(i(),setTimeout(()=>{i()},200),setTimeout(()=>{i()},500))}).observe(p)}return gt(async()=>{await Oe(),await Oe(),u()}),{maxHeightRef:s,computeBodyHeight:i}}function Qye(e,t){const n=zn.get(),a=F(),o=F(),r=F(),{maxHeightRef:l,computeBodyHeight:s}=Zye(e,t,{tableRef:a,containerRef:r}),{merge:i}=_n(),u=Wt(e,"table"),c=x(()=>{var _;let S={};if((l==null?void 0:l.value)!=null){let T=n.table;((_=e.table)==null?void 0:_.tableVersion)==="v2"&&(T=n.tableV2),S=T.buildMaxHeight(l.value)}const k=ys.dash.omit(u,"loading","columns","columnsMap");return i(S,{...t.attrs,...k})}),f=Wt(e,"toolbar"),p=x(()=>pp(t.slots,"cell")),m=x(()=>pp(t.slots,"form")),h=x(()=>pp(t.slots,"search")),v=x(()=>pp(t.slots,"toolbar")),g=F(),b=x(()=>{const _={compact:e.toolbar.compact!==!1};return e.customClass&&(_[e.customClass]=!0),_}),y=F(),w=F(!1);return{tableRef:a,containerRef:r,toolbarRef:o,computedTable:c,computedToolbar:f,computedCellSlots:p,formWrapperRef:g,isFormInner:w,onFormInnerChange:_=>{w.value=_},computedFormSlots:m,computedSearchSlots:h,computedToolbarSlots:v,computeBodyHeight:s,computedClass:b,innerWrapperRef:y}}const e3e=K({name:"FsCrud",inheritAttrs:!1,props:{id:{type:String,default:""},table:{type:Object,default(){return{}}},data:{type:Array},rowHandle:{type:Object,default(){return{}}},search:{type:Object,default(){return{}}},toolbar:{type:Object,default(){return{}}},actionbar:{type:Object,default(){return{}}},tabs:{type:Object,default(){return{}}},addForm:{type:Object,default(){return{}}},editForm:{type:Object,default(){return{}}},viewForm:{type:Object,default(){return{}}},pagination:{type:Object,default(){return{show:!1}}},container:{type:Object,default(){return{}}},customClass:{},form:{type:Object,default(){return{}}},selection:{type:Object,default(){return{show:!1}}}},emits:["update:search","update:compact","update:columns","form-value-change","update:modelValue","tab-change"],setup(e,t){const{ui:n}=sn();Gye(e,t);const a=Xye(),o=Jye(a,e,t),r=Qye(e,t);return{ui:n,...a,...r,...o}}}),t3e={class:"fs-crud-search"},n3e={key:0,class:"fs-crud-actionbar"},a3e={key:0,class:"fs-crud-toolbar"},o3e={class:"fs-crud-pagination"},r3e={class:"fs-pagination-left"},l3e={class:"fs-pagination"},s3e={class:"fs-pagination-right"};function i3e(e,t,n,a,o,r){var l;const s=He("fs-actionbar"),i=He("fs-toolbar"),u=He("fs-tabs-filter"),c=He("fs-table"),f=He("fs-form-wrapper");return C(),ae(Me(((l=e.container)==null?void 0:l.is)||"fs-layout-default"),Re({ref:"containerRef",class:"fs-crud-container"},e.container,{class:e.computedClass}),{"header-top":te(()=>[re(e.$slots,"header-top")]),"header-bottom":te(()=>[re(e.$slots,"header-bottom")]),"header-middle":te(()=>[re(e.$slots,"header-middle")]),search:te(()=>[M("div",t3e,[(C(),ae(Me(e.search.is||"fs-search"),Re({ref:"searchRef"},e.search,{slots:e.computedSearchSlots}),null,16,["slots"]))])]),actionbar:te(()=>[e.actionbar&&e.actionbar.show!==!1?(C(),A("div",n3e,[re(e.$slots,"actionbar-left"),J(s,gn(va(e.actionbar)),null,16),re(e.$slots,"actionbar-right")])):le("",!0)]),toolbar:te(()=>[e.toolbar&&e.toolbar.show!==!1?(C(),A("div",a3e,[re(e.$slots,"toolbar-left"),J(i,Re({ref:"toolbarRef"},e.toolbar,{slots:e.computedToolbarSlots,columns:e.table.columns}),null,16,["slots","columns"]),re(e.$slots,"toolbar-right")])):le("",!0)]),tabs:te(()=>[e.tabsBinding.show?(C(),ae(u,Re({key:0,ref:"tabsRef",class:"fs-tabs"},e.tabsBinding),null,16)):le("",!0)]),table:te(()=>[J(c,Re({ref:"tableRef",class:"fs-crud-table"},e.computedTable,{columns:e.table.columns,loading:e.table.loading,"row-handle":e.rowHandle,data:e.data,"cell-slots":e.computedCellSlots}),null,16,["columns","loading","row-handle","data","cell-slots"])]),form:te(()=>[M("div",{ref:"innerWrapperRef",class:L(["fs-form-wrapper-container",{"fs-form-inner-wrapper":e.isFormInner}])},[J(f,{ref:"formWrapperRef",slots:e.computedFormSlots,"inner-wrapper":e.innerWrapperRef,onInnerChange:e.onFormInnerChange,onValueChange:t[0]||(t[0]=p=>e.$emit("form-value-change",p))},null,8,["slots","inner-wrapper","onInnerChange"])],2)]),pagination:te(()=>[M("div",o3e,[M("div",r3e,[re(e.$slots,"pagination-left")]),M("div",l3e,[e.pagination.show!==!1?(C(),ae(Me(e.ui.pagination.name),gn(Re({key:0},e.pagination)),null,16)):le("",!0)]),M("div",s3e,[re(e.$slots,"pagination-right")])])]),"footer-top":te(()=>[re(e.$slots,"footer-top")]),"footer-bottom":te(()=>[re(e.$slots,"footer-bottom")]),default:te(()=>[re(e.$slots,"default")]),_:3},16,["class"])}const u3e=Rn(e3e,[["render",i3e]]),c3e=K({name:"FsRowHandle",props:{dropdown:{type:Object},buttons:{type:Object},group:{type:Object},active:{type:String,default:"default"},scope:{type:Object,default:()=>({})}},emits:["handle"],setup(e,t){const{ui:n}=sn(),{merge:a}=_n(),{t:o}=ao(),r=x(()=>({...e.scope,row:e.scope[n.tableColumn.row],index:e.scope[n.tableColumn.index]})),l=(g,b)=>{const y=e.scope[n.tableColumn.index],w=e.scope[n.tableColumn.row],_={key:g.key,row:w,btn:g,index:y,...e.scope,loadingRef:b==null?void 0:b.loadingRef};if(g.click)return g.click(_);t.emit("handle",_)},{doComputed:s}=kr(),i=x(()=>({dropdown:e.dropdown,buttons:e.buttons,active:e.active,group:e.group})),u=s(()=>i.value,()=>{const g=e.scope[n.tableColumn.index],b=e.scope[n.tableColumn.row];return{...e.scope,index:g,row:b}}),c=x(()=>{let g=null;if(u.value.active==null||u.value.active==="default"){const y={view:{key:"view",text:o("fs.rowHandle.view.text"),title:o("fs.rowHandle.view.text")},copy:{key:"copy",text:o("fs.rowHandle.copy.text"),title:o("fs.rowHandle.copy.text")},edit:{key:"edit",type:"primary",text:o("fs.rowHandle.edit.text"),title:o("fs.rowHandle.edit.text")},remove:{key:"remove",...n.button.colors("danger"),text:o("fs.rowHandle.remove.text"),title:o("fs.rowHandle.remove.text")}};g=a(y,u.value.buttons)}else g=u.value.group[u.value.active];const b=[];return dt(g,(y,w)=>{y.key=w,y.show!==!1&&b.push(y)}),Bi(b,y=>y.order??Bs.orderDefault)}),f=x(()=>u.value.dropdown==null||u.value.dropdown.atLeast==null||u.value.dropdown.atLeast<=0||c.value.length<=u.value.dropdown.atLeast?0:u.value.dropdown.atLeast||0);function p(g,b){return g.dropdown===!0||f.value>0&&f.value{let g=0;for(const b of c.value){if(p(b,g))return!0;g++}return!1});function h(g){for(let b of c.value)if(g===b.key){l(b);return}}const v=x(()=>{const g={};if(n.dropdown.renderMode!=="slot"){const b=c.value,y=[];dt(b,(w,_)=>{w.show!==!1&&p(w,_)&&y.push({[n.dropdown.value]:w.key,[n.dropdown.label]:w.text,title:w.title})}),g.options=y}return{...Uo(e.dropdown,"more","atLeast"),...n.dropdown.command(h),...g}});return{ui:n,hasDropdownBtn:m,computedHandleBtns:c,doDropdownItemClick:h,computedDropdownAtLeast:f,doClick:l,isDropdownBtn:p,scopeRef:r,computedDropdownBinding:v}}}),d3e={class:"fs-row-handle"},f3e={key:0,class:"row-handle-btn fs-handle-row-dropdown"};function p3e(e,t,n,a,o,r){const l=He("fs-render"),s=He("fs-button"),i=He("fs-icon");return C(),A("div",d3e,[re(e.$slots,"cell-rowHandle-left",gn(va(e.scopeRef))),(C(!0),A(Ae,null,it(e.computedHandleBtns,(u,c)=>(C(),A(Ae,{key:c},[u.show!==!1&&!e.isDropdownBtn(u,c)?(C(),A(Ae,{key:0},[u.render?(C(),ae(l,{key:0,"render-func":u.render,scope:e.scopeRef},null,8,["render-func","scope"])):(C(),ae(s,Re({key:1,class:"row-handle-btn"},{ref_for:!0},u,{onClick:nt(f=>e.doClick(u,f),["stop"])}),null,16,["onClick"]))],64)):le("",!0)],64))),128)),re(e.$slots,"cell-rowHandle-middle",gn(va(e.scope))),e.hasDropdownBtn?(C(),A("span",f3e,[(C(),ae(Me(e.ui.dropdown.name),gn(va(e.computedDropdownBinding)),{[e.ui.dropdown.slotName]:te(()=>[e.ui.dropdown.renderMode==="slot"?(C(),ae(Me(e.ui.dropdownMenu.name),gn(Re({key:0},e.ui.dropdownMenu.command(e.doDropdownItemClick))),{default:te(()=>[(C(!0),A(Ae,null,it(e.computedHandleBtns,(u,c)=>(C(),A(Ae,{key:c},[u.show!==!1&&e.isDropdownBtn(u,c)?(C(),ae(Me(e.ui.dropdownItem.name),Re({key:0,[e.ui.dropdownItem.command||""]:u.key},{ref_for:!0},u.dropdownItem,{disabled:u.disabled}),{default:te(()=>[M("div",Re({class:"fs-row-handle-dropdown-item"},{ref_for:!0},u),[u.icon?(C(),ae(i,{key:0,icon:u.icon},null,8,["icon"])):le("",!0),Ct(" "+ye(u.text||u.title),1)],16)]),_:2},1040,["disabled"])):le("",!0)],64))),128))]),_:1},16)):le("",!0)]),default:te(()=>[J(s,gn(va(e.dropdown.more)),null,16)]),_:2},1040))])):le("",!0),re(e.$slots,"cell-rowHandle-right",gn(va(e.scope)))])}const h3e=Rn(c3e,[["render",p3e]]);function hi(){return hi=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Gp(e,t,n){return v3e()?Gp=Reflect.construct.bind():Gp=function(a,o,r){var l=[null];l.push.apply(l,o);var s=Function.bind.apply(a,l),i=new s;return r&&tf(i,r.prototype),i},Gp.apply(null,arguments)}function g3e(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function _g(e){var t=typeof Map=="function"?new Map:void 0;return _g=function(n){if(n===null||!g3e(n))return n;if(typeof n!="function")throw new TypeError("Super expression must either be null or a function");if(typeof t<"u"){if(t.has(n))return t.get(n);t.set(n,a)}function a(){return Gp(n,arguments,Cg(this).constructor)}return a.prototype=Object.create(n.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),tf(a,n)},_g(e)}var b3e=/%[sdj%]/g,y3e=function(){};function Sg(e){if(!e||!e.length)return null;var t={};return e.forEach(function(n){var a=n.field;t[a]=t[a]||[],t[a].push(n)}),t}function ko(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a=r)return s;switch(s){case"%s":return String(n[o++]);case"%d":return Number(n[o++]);case"%j":try{return JSON.stringify(n[o++])}catch{return"[Circular]"}break;default:return s}});return l}return e}function w3e(e){return e==="string"||e==="url"||e==="hex"||e==="email"||e==="date"||e==="pattern"}function ya(e,t){return!!(e==null||t==="array"&&Array.isArray(e)&&!e.length||w3e(t)&&typeof e=="string"&&!e)}function C3e(e,t,n){var a=[],o=0,r=e.length;function l(s){a.push.apply(a,s||[]),o++,o===r&&n(a)}e.forEach(function(s){t(s,l)})}function Q8(e,t,n){var a=0,o=e.length;function r(l){if(l&&l.length){n(l);return}var s=a;a=a+1,s{delete r[h]}),n.headers=eo.concat(l,r);const s=[];let i=!0;this.interceptors.request.forEach(function(v){if(typeof v.runWhen=="function"&&v.runWhen(n)===!1)return;i=i&&v.synchronous;const g=n.transitional||yb;g&&g.legacyInterceptorReqResOrdering?s.unshift(v.fulfilled,v.rejected):s.push(v.fulfilled,v.rejected)});const u=[];this.interceptors.response.forEach(function(v){u.push(v.fulfilled,v.rejected)});let c,f=0,p;if(!i){const h=[Pw.bind(this),void 0];for(h.unshift(...s),h.push(...u),p=h.length,c=Promise.resolve(n);f{if(!a._listeners)return;let r=a._listeners.length;for(;r-- >0;)a._listeners[r](o);a._listeners=null}),this.promise.then=o=>{let r;const l=new Promise(s=>{a.subscribe(s),r=s}).then(o);return l.cancel=function(){a.unsubscribe(r)},l},t(function(r,l,s){a.reason||(a.reason=new Bf(r,l,s),n(a.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=a=>{t.abort(a)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new AT(function(o){t=o}),cancel:t}}};function Q5e(e){return function(n){return e.apply(null,n)}}function e_e(e){return Ee.isObject(e)&&e.isAxiosError===!0}const Vg={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Vg).forEach(([e,t])=>{Vg[t]=e});function $T(e){const t=new Ci(e),n=fT(Ci.prototype.request,t);return Ee.extend(n,Ci.prototype,t,{allOwnKeys:!0}),Ee.extend(n,t,null,{allOwnKeys:!0}),n.create=function(o){return $T(Ni(e,o))},n}const aa=$T(Df);aa.Axios=Ci;aa.CanceledError=Bf;aa.CancelToken=Z5e;aa.isCancel=kT;aa.VERSION=Cb;aa.toFormData=um;aa.AxiosError=Ot;aa.Cancel=aa.CanceledError;aa.all=function(t){return Promise.all(t)};aa.spread=Q5e;aa.isAxiosError=e_e;aa.mergeConfig=Ni;aa.AxiosHeaders=eo;aa.formToJSON=e=>xT(Ee.isHTMLForm(e)?new FormData(e):e);aa.getAdapter=RT.getAdapter;aa.HttpStatusCode=Vg;aa.default=aa;const{Axios:u_e,AxiosError:c_e,CanceledError:d_e,isCancel:f_e,CancelToken:p_e,VERSION:h_e,all:m_e,Cancel:v_e,isAxiosError:g_e,spread:b_e,toFormData:y_e,AxiosHeaders:w_e,HttpStatusCode:C_e,formToJSON:__e,getAdapter:S_e,mergeConfig:x_e,create:k_e}=aa,t_e="/api",Cd=aa.create({baseURL:t_e,timeout:3e4});Cd.interceptors.request.use(e=>{const t=localStorage.getItem("access_token");return t&&(e.headers.Authorization=`Bearer ${t}`),e});Cd.interceptors.response.use(e=>e,e=>{var t;if(((t=e.response)==null?void 0:t.status)===401){localStorage.removeItem("access_token");const n=window.location.pathname;n.startsWith("/admin/login")||(window.location.href=`/admin/login?redirect=${encodeURIComponent(n+window.location.search)}`)}return Promise.reject(e)});const n_e=pR("auth",()=>{const e=F(localStorage.getItem("access_token")||""),t=F(null),n=F([]),a=F([]),o=x(()=>!!e.value),r=x(()=>n.value.map(m=>m.code));function l(m){e.value=m,m?localStorage.setItem("access_token",m):localStorage.removeItem("access_token")}async function s(){const{data:m}=await Cd.get("/users/me");return t.value=m,m}async function i(){const{data:m}=await Cd.get("/permissions/user/me");return n.value=m.permissions||[],a.value=m.menu||[],{permissions:n.value,menu:a.value}}async function u(){await s(),await i()}function c(m){return r.value.includes(m)}function f(m){return m.some(h=>r.value.includes(h))}async function p(){try{await Cd.post("/users/logout")}catch{}t.value=null,n.value=[],a.value=[],l("")}return{token:e,user:t,permissions:n,menu:a,permissionCodes:r,isAuthenticated:o,setToken:l,fetchProfile:s,fetchPermissions:i,loginAndFetchData:u,hasPermission:c,hasAnyPermission:f,logout:p}}),PT=y1e({history:Jge("/"),routes:[{path:"/",name:"public-home",meta:{title:"首页"},component:()=>Ar(()=>import("./PublicHome-BE6848HM.js"),__vite__mapDeps([0,1]))},{path:"/admin/login",name:"admin-login",meta:{title:"管理后台登录",guestOnly:!0},component:()=>Ar(()=>import("./LoginView-CL6FqBfI.js"),__vite__mapDeps([2,3]))},{path:"/admin",component:()=>Ar(()=>import("./AdminLayout-C8hRi9x-.js"),__vite__mapDeps([4,5])),meta:{requiresAuth:!0},children:[{path:"",redirect:{name:"admin-users"}},{path:"users",name:"admin-users",meta:{title:"用户管理",permission:"perm:user"},component:()=>Ar(()=>import("./UserManage-DExq8OEE.js"),__vite__mapDeps([6,7]))},{path:"roles",name:"admin-roles",meta:{title:"角色管理",permission:"perm:role"},component:()=>Ar(()=>import("./RoleManage-C7cZ0SSm.js"),__vite__mapDeps([8,7,9]))},{path:"menu",name:"admin-menu",meta:{title:"菜单管理",permission:"perm:menu"},component:()=>Ar(()=>import("./MenuManage-J689-0Rz.js"),__vite__mapDeps([10,7]))},{path:"settings",name:"admin-settings",meta:{title:"系统设置",permission:"system:"},component:()=>Ar(()=>import("./SettingManage-DbOShH1j.js"),__vite__mapDeps([11,12]))},{path:"login-logs",name:"admin-login-logs",meta:{title:"登录日志",permission:"log:"},component:()=>Ar(()=>import("./LoginLogManage-CQqltd1Y.js"),[])},{path:"operation-logs",name:"admin-operation-logs",meta:{title:"操作日志",permission:"log:"},component:()=>Ar(()=>import("./OperationLogManage-CrJsIKz-.js"),[])}]}]});PT.beforeEach(async(e,t,n)=>{const a=n_e(),o=e.meta.title||"BookSystem";if(document.title=`${o} · BookSystem`,e.meta.requiresAuth&&!a.isAuthenticated){n({name:"admin-login",query:{redirect:e.fullPath}});return}if(e.meta.guestOnly&&a.isAuthenticated){if(!a.user||a.permissions.length===0)try{await a.fetchProfile(),await a.fetchPermissions()}catch{a.logout(),n({name:"admin-login"});return}n({name:"admin-users"});return}const r=e.meta.permission;if(r&&a.isAuthenticated&&a.permissions.length>0&&!a.permissions.some(s=>s.code.startsWith(r))){n({name:"admin-users"});return}n()});const vc=o5(pCe);vc.use(sR());vc.use(i2e,{locale:u2e});vc.use(dT);vc.use(oCe,{ui:dT.set(),commonOptions:()=>({search:{container:{layout:"multi-line"}}})});vc.use(PT);vc.mount("#app");export{Me as A,d as B,x as C,RK as D,AE as E,Ae as F,tt as G,r_e as H,Re as I,Oe as J,g_e as K,wt as L,QC as M,a_e as N,xbe as O,$E as P,tm as Z,cCe as _,M as a,Ct as b,A as c,J as d,nm as e,K as f,gt as g,aa as h,F as i,Nt as j,s7 as k,o_e as l,nt as m,Cd as n,C as o,jo as p,ae as q,He as r,HS as s,ye as t,n_e as u,VY as v,te as w,LW as x,le as y,it as z}; +`+r)}}catch{}}throw a}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Ni(this.defaults,n);const{transitional:a,paramsSerializer:o,headers:r}=n;a!==void 0&&ah.assertOptions(a,{silentJSONParsing:Po.transitional(Po.boolean),forcedJSONParsing:Po.transitional(Po.boolean),clarifyTimeoutError:Po.transitional(Po.boolean),legacyInterceptorReqResOrdering:Po.transitional(Po.boolean)},!1),o!=null&&(Ee.isFunction(o)?n.paramsSerializer={serialize:o}:ah.assertOptions(o,{encode:Po.function,serialize:Po.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),ah.assertOptions(n,{baseUrl:Po.spelling("baseURL"),withXsrfToken:Po.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let l=r&&Ee.merge(r.common,r[n.method]);r&&Ee.forEach(["delete","get","head","post","put","patch","query","common"],h=>{delete r[h]}),n.headers=eo.concat(l,r);const s=[];let i=!0;this.interceptors.request.forEach(function(v){if(typeof v.runWhen=="function"&&v.runWhen(n)===!1)return;i=i&&v.synchronous;const g=n.transitional||yb;g&&g.legacyInterceptorReqResOrdering?s.unshift(v.fulfilled,v.rejected):s.push(v.fulfilled,v.rejected)});const u=[];this.interceptors.response.forEach(function(v){u.push(v.fulfilled,v.rejected)});let c,f=0,p;if(!i){const h=[Pw.bind(this),void 0];for(h.unshift(...s),h.push(...u),p=h.length,c=Promise.resolve(n);f{if(!a._listeners)return;let r=a._listeners.length;for(;r-- >0;)a._listeners[r](o);a._listeners=null}),this.promise.then=o=>{let r;const l=new Promise(s=>{a.subscribe(s),r=s}).then(o);return l.cancel=function(){a.unsubscribe(r)},l},t(function(r,l,s){a.reason||(a.reason=new Bf(r,l,s),n(a.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=a=>{t.abort(a)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new AT(function(o){t=o}),cancel:t}}};function Q5e(e){return function(n){return e.apply(null,n)}}function e_e(e){return Ee.isObject(e)&&e.isAxiosError===!0}const Vg={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Vg).forEach(([e,t])=>{Vg[t]=e});function $T(e){const t=new Ci(e),n=fT(Ci.prototype.request,t);return Ee.extend(n,Ci.prototype,t,{allOwnKeys:!0}),Ee.extend(n,t,null,{allOwnKeys:!0}),n.create=function(o){return $T(Ni(e,o))},n}const aa=$T(Df);aa.Axios=Ci;aa.CanceledError=Bf;aa.CancelToken=Z5e;aa.isCancel=kT;aa.VERSION=Cb;aa.toFormData=um;aa.AxiosError=Ot;aa.Cancel=aa.CanceledError;aa.all=function(t){return Promise.all(t)};aa.spread=Q5e;aa.isAxiosError=e_e;aa.mergeConfig=Ni;aa.AxiosHeaders=eo;aa.formToJSON=e=>xT(Ee.isHTMLForm(e)?new FormData(e):e);aa.getAdapter=RT.getAdapter;aa.HttpStatusCode=Vg;aa.default=aa;const{Axios:u_e,AxiosError:c_e,CanceledError:d_e,isCancel:f_e,CancelToken:p_e,VERSION:h_e,all:m_e,Cancel:v_e,isAxiosError:g_e,spread:b_e,toFormData:y_e,AxiosHeaders:w_e,HttpStatusCode:C_e,formToJSON:__e,getAdapter:S_e,mergeConfig:x_e,create:k_e}=aa,t_e="/api",Cd=aa.create({baseURL:t_e,timeout:3e4});Cd.interceptors.request.use(e=>{const t=localStorage.getItem("access_token");return t&&(e.headers.Authorization=`Bearer ${t}`),e});Cd.interceptors.response.use(e=>e,e=>{var t;if(((t=e.response)==null?void 0:t.status)===401){localStorage.removeItem("access_token");const n=window.location.pathname;n.startsWith("/admin/login")||(window.location.href=`/admin/login?redirect=${encodeURIComponent(n+window.location.search)}`)}return Promise.reject(e)});const n_e=pR("auth",()=>{const e=F(localStorage.getItem("access_token")||""),t=F(null),n=F([]),a=F([]),o=x(()=>!!e.value),r=x(()=>n.value.map(m=>m.code));function l(m){e.value=m,m?localStorage.setItem("access_token",m):localStorage.removeItem("access_token")}async function s(){const{data:m}=await Cd.get("/users/me");return t.value=m,m}async function i(){const{data:m}=await Cd.get("/permissions/user/me");return n.value=m.permissions||[],a.value=m.menu||[],{permissions:n.value,menu:a.value}}async function u(){await s(),await i()}function c(m){return r.value.includes(m)}function f(m){return m.some(h=>r.value.includes(h))}async function p(){try{await Cd.post("/users/logout")}catch{}t.value=null,n.value=[],a.value=[],l("")}return{token:e,user:t,permissions:n,menu:a,permissionCodes:r,isAuthenticated:o,setToken:l,fetchProfile:s,fetchPermissions:i,loginAndFetchData:u,hasPermission:c,hasAnyPermission:f,logout:p}}),PT=y1e({history:Jge("/"),routes:[{path:"/",name:"public-home",meta:{title:"首页"},component:()=>Ar(()=>import("./PublicHome-4L60krmd.js"),__vite__mapDeps([0,1]))},{path:"/admin/login",name:"admin-login",meta:{title:"管理后台登录",guestOnly:!0},component:()=>Ar(()=>import("./LoginView-CdDWJNab.js"),__vite__mapDeps([2,3]))},{path:"/admin",component:()=>Ar(()=>import("./AdminLayout-ltF-ui71.js"),__vite__mapDeps([4,5])),meta:{requiresAuth:!0},children:[{path:"",redirect:{name:"admin-users"}},{path:"users",name:"admin-users",meta:{title:"用户管理",permission:"perm:user"},component:()=>Ar(()=>import("./UserManage-DDgTVhjY.js"),__vite__mapDeps([6,7]))},{path:"roles",name:"admin-roles",meta:{title:"角色管理",permission:"perm:role"},component:()=>Ar(()=>import("./RoleManage-7Ni_fgq0.js"),__vite__mapDeps([8,7,9]))},{path:"menu",name:"admin-menu",meta:{title:"菜单管理",permission:"perm:menu"},component:()=>Ar(()=>import("./MenuManage-BEleckEE.js"),__vite__mapDeps([10,7]))},{path:"settings",name:"admin-settings",meta:{title:"系统设置",permission:"system:"},component:()=>Ar(()=>import("./SettingManage-D3eSU6jo.js"),__vite__mapDeps([11,12]))},{path:"login-logs",name:"admin-login-logs",meta:{title:"登录日志",permission:"log:"},component:()=>Ar(()=>import("./LoginLogManage-COZ7cyEH.js"),[])},{path:"operation-logs",name:"admin-operation-logs",meta:{title:"操作日志",permission:"log:"},component:()=>Ar(()=>import("./OperationLogManage-BIONNQB8.js"),[])}]}]});PT.beforeEach(async(e,t,n)=>{const a=n_e(),o=e.meta.title||"BookSystem";if(document.title=`${o} · BookSystem`,e.meta.requiresAuth&&!a.isAuthenticated){n({name:"admin-login",query:{redirect:e.fullPath}});return}if(e.meta.guestOnly&&a.isAuthenticated){if(!a.user||a.permissions.length===0)try{await a.fetchProfile(),await a.fetchPermissions()}catch{a.logout(),n({name:"admin-login"});return}n({name:"admin-users"});return}const r=e.meta.permission;if(r&&a.isAuthenticated&&a.permissions.length>0&&!a.permissions.some(s=>s.code.startsWith(r))){n({name:"admin-users"});return}n()});const vc=o5(pCe);vc.use(sR());vc.use(i2e,{locale:u2e});vc.use(dT);vc.use(oCe,{ui:dT.set(),commonOptions:()=>({search:{container:{layout:"multi-line"}}})});vc.use(PT);vc.mount("#app");export{Me as A,d as B,x as C,RK as D,AE as E,Ae as F,tt as G,r_e as H,Re as I,Oe as J,g_e as K,wt as L,QC as M,a_e as N,xbe as O,$E as P,tm as Z,cCe as _,M as a,Ct as b,A as c,J as d,nm as e,K as f,gt as g,aa as h,F as i,Nt as j,s7 as k,o_e as l,nt as m,Cd as n,C as o,jo as p,ae as q,He as r,HS as s,ye as t,n_e as u,VY as v,te as w,LW as x,le as y,it as z}; diff --git a/frontend/dist/index.html b/frontend/dist/index.html index 28a2433..e96c187 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -4,7 +4,7 @@ BookSystem - +