jgy-public-component 0.0.19 → 0.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/JButton/JButton.d.ts +1 -1
- package/dist/components/JSearchHeader/JSearchHeader.d.ts +2 -2
- package/dist/components/JUploadImg/JUploadImg.d.ts +2 -2
- package/dist/index.js +886 -897
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +1 -1
- package/dist/index.umd.cjs.map +1 -1
- package/dist/router/guards copy.d.ts +6 -0
- package/dist/style.css +1 -1
- package/package.json +73 -73
package/dist/index.umd.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(p,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("element-plus"),require("@element-plus/icons-vue"),require("vuedraggable"),require("@iconify/vue"),require("xlsx"),require("nprogress")):typeof define=="function"&&define.amd?define(["exports","vue","element-plus","@element-plus/icons-vue","vuedraggable","@iconify/vue","xlsx","nprogress"],e):(p=typeof globalThis<"u"?globalThis:p||self,e(p.JgyPublicComponent={},p.Vue,p.ElementPlus,p.ElementPlusIconsVue,p.vuedraggable,p.IconifyVue,p.XLSX,p.NProgress))})(this,function(p,e,_,S,le,ae,se,F){"use strict";function ie(t){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const o=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(a,n,o.get?o:{enumerable:!0,get:()=>t[n]})}}return a.default=t,Object.freeze(a)}const D=ie(se),re=["disabled"],ce={key:0,class:"j-button__loading-icon"},de={key:1,class:"j-button__text"},me=e.defineComponent({__name:"JButton",props:{type:{default:"default"},size:{default:"medium"},plain:{type:Boolean,default:!1},round:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:a}){const n=t,o=a;function l(s){!n.disabled&&!n.loading&&o("click",s)}return(s,r)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["j-button",[`j-button--${t.type}`,`j-button--${t.size}`,{"j-button--plain":t.plain,"j-button--round":t.round,"j-button--disabled":t.disabled,"j-button--loading":t.loading}]]),disabled:t.disabled||t.loading,onClick:l},[t.loading?(e.openBlock(),e.createElementBlock("span",ce)):e.createCommentVNode("",!0),s.$slots.default?(e.openBlock(),e.createElementBlock("span",de,[e.renderSlot(s.$slots,"default",{},void 0,!0)])):e.createCommentVNode("",!0)],10,re))}}),T=(t,a)=>{const n=t.__vccOpts||t;for(const[o,l]of a)n[o]=l;return n},U=T(me,[["__scopeId","data-v-22864824"]]),fe={class:"j-upload-img-container"},pe={key:0,class:"images-wrapper"},ue={class:"image-item"},he=["onClick"],ge={key:0,class:"image-item single-image-item"},ke={class:"image-actions"},ye={key:2,class:"upload-tip"},Ce={key:0},W=T(e.defineComponent({name:"JUploadImg",__name:"JUploadImg",props:{modelValue:{default:""},disabled:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},limit:{default:9},maxSize:{default:2},accept:{default:"image/jpeg,image/png,image/jpg,image/gif"},tip:{default:"只能上传jpg/png/gif格式的图片,且不超过2MB"},showTip:{type:Boolean,default:!0},uploadFn:{type:Function,default:void 0}},emits:["update:modelValue","success","error"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(""),s=e.ref(!1),r=n.showTip,c=()=>{s.value=!0},d=()=>{l.value="",o("update:modelValue",""),_.ElMessage.success("删除成功")},u=e.ref([]),k=e.ref(!1),M=m=>{u.value=m.map((f,i)=>({uid:Date.now()+i,url:f}))};e.watch(()=>n.modelValue,m=>{n.multiple?Array.isArray(m)&&m.length>0?M(m):u.value=[]:typeof m=="string"?l.value=m:l.value=""},{immediate:!0});const x=()=>{j()},C=m=>{u.value.splice(m,1),j(),_.ElMessage.success("删除成功")},g=async m=>{const f=m.raw;if(!f){_.ElMessage.error("文件不存在,请重试");return}if(f.size>n.maxSize*1024*1024){_.ElMessage.error(`图片大小不能超过 ${n.maxSize}MB`);return}if(!n.uploadFn){_.ElMessage.error("未配置上传函数 (uploadFn)");return}try{k.value=!0;const i=await n.uploadFn(f);n.multiple?(u.value.push({uid:Date.now(),url:i}),j()):(l.value=i,o("update:modelValue",i)),o("success",i),_.ElMessage.success("上传成功")}catch(i){console.error("上传出错:",i),_.ElMessage.error("上传失败,请重试"),o("error",i)}finally{k.value=!1}},j=()=>{const m=u.value.map(f=>f.url);o("update:modelValue",m)};return(m,f)=>{const i=e.resolveComponent("el-image"),w=e.resolveComponent("el-icon"),B=e.resolveComponent("el-upload"),h=e.resolveComponent("el-image-viewer");return e.openBlock(),e.createElementBlock("div",fe,[t.multiple?(e.openBlock(),e.createElementBlock("div",pe,[e.createVNode(e.unref(le),{modelValue:u.value,"onUpdate:modelValue":f[0]||(f[0]=N=>u.value=N),class:"images-list","item-key":"uid",animation:200,disabled:t.disabled,onEnd:x},{item:e.withCtx(({element:N,index:y})=>[e.createElementVNode("div",ue,[e.createVNode(i,{src:N.url,"preview-src-list":u.value.map(b=>b.url),"initial-index":y,fit:"cover",class:"image-preview","preview-teleported":!0,"hide-on-click-modal":!0},null,8,["src","preview-src-list","initial-index"]),t.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:"delete-btn",onClick:e.withModifiers(b=>C(y),["stop"])},[e.createVNode(w,{class:"icon-delete"},{default:e.withCtx(()=>[e.createVNode(e.unref(S.Delete))]),_:1})],8,he))])]),_:1},8,["modelValue","disabled"]),!t.disabled&&(!t.limit||u.value.length<t.limit)?(e.openBlock(),e.createBlock(B,{key:0,class:"image-uploader","auto-upload":!1,"show-file-list":!1,"on-change":g,disabled:k.value,"list-type":"picture-card",accept:t.accept},{default:e.withCtx(()=>[k.value?(e.openBlock(),e.createBlock(w,{key:1,class:"uploader-icon is-loading"},{default:e.withCtx(()=>[e.createVNode(e.unref(S.Loading))]),_:1})):(e.openBlock(),e.createBlock(w,{key:0,class:"uploader-icon"},{default:e.withCtx(()=>[e.createVNode(e.unref(S.Plus))]),_:1}))]),_:1},8,["disabled","accept"])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[l.value?(e.openBlock(),e.createElementBlock("div",ge,[e.createVNode(i,{src:l.value,fit:"cover",class:"image-preview"},null,8,["src"]),e.createElementVNode("div",ke,[e.createVNode(w,{class:"action-icon",onClick:e.withModifiers(c,["stop"])},{default:e.withCtx(()=>[e.createVNode(e.unref(S.ZoomIn))]),_:1}),t.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(w,{key:0,class:"action-icon",onClick:e.withModifiers(d,["stop"])},{default:e.withCtx(()=>[e.createVNode(e.unref(S.Delete))]),_:1}))])])):(e.openBlock(),e.createBlock(B,{key:1,class:"image-uploader","auto-upload":!1,"show-file-list":!1,"on-change":g,disabled:t.disabled||k.value,accept:t.accept,"list-type":"picture-card"},{default:e.withCtx(()=>[e.createVNode(w,{class:"uploader-icon"},{default:e.withCtx(()=>[k.value?(e.openBlock(),e.createBlock(e.unref(S.Loading),{key:1,class:"is-loading"})):(e.openBlock(),e.createBlock(e.unref(S.Plus),{key:0}))]),_:1})]),_:1},8,["disabled","accept"])),s.value?(e.openBlock(),e.createBlock(h,{key:2,"url-list":[l.value],teleported:!0,onClose:f[1]||(f[1]=N=>s.value=!1)},null,8,["url-list"])):e.createCommentVNode("",!0)],64)),e.unref(r)?(e.openBlock(),e.createElementBlock("div",ye,[e.createElementVNode("span",null,e.toDisplayString(t.tip),1),t.multiple&&t.limit?(e.openBlock(),e.createElementBlock("span",Ce," (最多 "+e.toDisplayString(t.limit)+" 张)",1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])}}}),[["__scopeId","data-v-94fad0af"]]),A=e.defineComponent({name:"JIconRender",__name:"JIconRender",props:{icon:{},size:{default:24}},setup(t){return(a,n)=>t.icon?(e.openBlock(),e.createBlock(e.unref(ae.Icon),e.mergeProps({key:0,icon:t.icon,width:t.size,height:t.size},a.$attrs),null,16,["icon","width","height"])):e.createCommentVNode("",!0)}}),we={class:"action-left"},P=T(e.defineComponent({name:"JSearchHeader",__name:"JSearchHeader",props:{selectedCount:{default:0},addText:{default:"新增"},defaultVisible:{default:5},showAdd:{type:Boolean,default:!0},showBatchDelete:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showReset:{type:Boolean,default:!0}},emits:["search","reset","add","batchDelete"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(),s=e.ref(!1),r=e.ref(!1),c=e.ref(0),d=e.ref(0),u=e.computed(()=>c.value>n.defaultVisible),k=()=>{if(!l.value)return;const C=Array.from(l.value.children);c.value=C.length;const g=C[n.defaultVisible-1];if(g&&l.value){const j=l.value.getBoundingClientRect(),m=g.getBoundingClientRect();d.value=m.bottom-j.top}},M=()=>{const C=l.value;if(C)if(s.value)k(),s.value=!1,C.style.maxHeight=C.scrollHeight+"px",C.offsetHeight,C.style.maxHeight=d.value+"px";else{s.value=!0,C.style.maxHeight=C.scrollHeight+"px";const g=()=>{C.style.maxHeight="none",C.removeEventListener("transitionend",g)};C.addEventListener("transitionend",g)}};let x=null;return e.onMounted(()=>{k(),u.value&&l.value&&(l.value.style.maxHeight=d.value+"px"),requestAnimationFrame(()=>{requestAnimationFrame(()=>{r.value=!0})}),l.value&&(x=new MutationObserver(()=>{k(),u.value&&!s.value&&l.value&&(l.value.style.maxHeight=d.value+"px")}),x.observe(l.value,{childList:!0}))}),e.onBeforeUnmount(()=>{x==null||x.disconnect()}),(C,g)=>{const j=e.resolveComponent("el-form"),m=e.resolveComponent("el-button"),f=e.resolveComponent("el-icon"),i=e.resolveComponent("el-card");return e.openBlock(),e.createBlock(i,{shadow:"never",class:"j-search-header-card"},{default:e.withCtx(()=>[e.createVNode(j,{inline:"",class:"search-form"},{default:e.withCtx(()=>[e.createElementVNode("div",{ref_key:"formItemsRef",ref:l,class:e.normalizeClass(["form-items-wrapper",{"is-animated":r.value}])},[e.renderSlot(C.$slots,"default",{},void 0,!0)],2)]),_:3}),e.createElementVNode("div",{class:"action-bar",style:e.normalizeStyle({marginTop:s.value?"0px":"10px"})},[e.createElementVNode("div",we,[t.showAdd?(e.openBlock(),e.createBlock(m,{key:0,type:"primary",icon:e.unref(S.Plus),onClick:g[0]||(g[0]=w=>o("add"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.addText),1)]),_:1},8,["icon"])):e.createCommentVNode("",!0),t.showBatchDelete?(e.openBlock(),e.createBlock(m,{key:1,type:"danger",icon:e.unref(S.Delete),disabled:t.selectedCount===0,onClick:g[1]||(g[1]=w=>o("batchDelete"))},{default:e.withCtx(()=>[e.createTextVNode(" 批量删除"+e.toDisplayString(t.selectedCount?`(${t.selectedCount})`:""),1)]),_:1},8,["icon","disabled"])):e.createCommentVNode("",!0),t.showSearch?(e.openBlock(),e.createBlock(m,{key:2,type:"primary",icon:e.unref(S.Search),onClick:g[2]||(g[2]=w=>o("search"))},{default:e.withCtx(()=>[...g[4]||(g[4]=[e.createTextVNode("搜索",-1)])]),_:1},8,["icon"])):e.createCommentVNode("",!0),t.showReset?(e.openBlock(),e.createBlock(m,{key:3,icon:e.unref(S.Refresh),onClick:g[3]||(g[3]=w=>o("reset"))},{default:e.withCtx(()=>[...g[5]||(g[5]=[e.createTextVNode("重置",-1)])]),_:1},8,["icon"])):e.createCommentVNode("",!0),e.renderSlot(C.$slots,"actions",{},void 0,!0)]),u.value?(e.openBlock(),e.createBlock(m,{key:0,link:"",type:"primary",onClick:M},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value?"收起":"展开")+" ",1),e.createVNode(f,{class:e.normalizeClass(["toggle-icon",{"is-expanded":s.value}])},{default:e.withCtx(()=>[e.createVNode(e.unref(S.ArrowDown))]),_:1},8,["class"])]),_:1})):e.createCommentVNode("",!0)],4)]),_:3})}}}),[["__scopeId","data-v-d3f83c3f"]]),Be={class:"j-import-upload-row"},_e={class:"j-import-stat-num"},be={class:"j-import-stat-num"},Ve={class:"j-import-stat-num"},Ne={key:0,class:"j-import-status-fail"},Ee={key:1},X=T(e.defineComponent({name:"JImportExcel",__name:"JImportExcel",props:e.mergeModels({getFieldListApi:{},importApi:{},excludeFields:{default:()=>["id","ctime","mtime"]},title:{default:"Excel 批量导入"}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:e.mergeModels(["success"],["update:modelValue"]),setup(t,{emit:a}){const n=t,o=a,l=e.useModel(t,"modelValue"),s=e.ref(!1),r=e.ref({}),c=e.ref([]),d=e.ref({total:0,success:0,fail:0}),u={0:"待创建",1:"创建成功",2:"创建中",[-1]:"创建失败"},k=e.computed(()=>Object.entries(r.value).filter(([f])=>!n.excludeFields.includes(f)).map(([f,i])=>({id:f,label:i,prop:f}))),M=async()=>{try{const f=await n.getFieldListApi();r.value=f.data.tableFieldsInfo??{}}catch{_.ElMessage.error("获取字段列表失败")}},x=f=>{const i=f.raw;if(!i)return;if(!["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-excel"].includes(i.type)&&!i.name.match(/\.xlsx?$/i)){_.ElMessage.warning("请上传 .xlsx 或 .xls 格式文件");return}const B=new FileReader;B.onload=h=>{try{const N=D.read(h.target.result,{type:"binary"}),y=N.SheetNames[0],b=N.Sheets[y],E=D.utils.sheet_to_json(b);if(!E.length){_.ElMessage.warning("文件内容为空");return}const I=k.value.map(R=>R.prop),$=E.map(R=>{const V=Object.values(R),J={_status:0,_error:""};return I.forEach((oe,Ke)=>{J[oe]=V[Ke]}),J});c.value=$,d.value={total:$.length,success:0,fail:0}}catch{_.ElMessage.error("解析文件失败,请检查文件格式")}},B.readAsBinaryString(i)},C=f=>{c.value.splice(f,1),d.value.total=c.value.length},g=async()=>{const f=c.value.filter(i=>i._status===0).map(({_status:i,_error:w,...B})=>B);if(!f.length){_.ElMessage.warning("没有可导入的数据");return}s.value=!0;try{const i=await n.importApi(f);i.code===1?(c.value.forEach(w=>{w._status===0&&(w._status=1)}),d.value.success=c.value.filter(w=>w._status===1).length,_.ElMessage.success("导入成功"),o("success")):_.ElMessage.error(i.msg||"导入失败")}catch{_.ElMessage.error("导入失败,请重试")}finally{s.value=!1}},j=()=>{try{const f=D.utils.book_new(),i=k.value.map(h=>h.label),w={};i.forEach(h=>w[h]="");const B=D.utils.json_to_sheet([w]);D.utils.book_append_sheet(f,B,"模板"),D.writeFile(f,"导入模板.xlsx")}catch{_.ElMessage.error("模板下载失败")}},m=()=>{s.value||(l.value=!1,c.value=[],d.value={total:0,success:0,fail:0})};return(f,i)=>{const w=e.resolveComponent("el-divider"),B=e.resolveComponent("el-button"),h=e.resolveComponent("el-upload"),N=e.resolveComponent("el-link"),y=e.resolveComponent("el-card"),b=e.resolveComponent("el-col"),E=e.resolveComponent("el-row"),I=e.resolveComponent("el-table-column"),$=e.resolveComponent("el-table"),R=e.resolveComponent("el-dialog");return e.openBlock(),e.createBlock(R,{modelValue:l.value,"onUpdate:modelValue":i[0]||(i[0]=V=>l.value=V),title:n.title,width:"900px","close-on-click-modal":!1,onOpen:M,onClose:m},{footer:e.withCtx(()=>[e.createVNode(B,{onClick:m},{default:e.withCtx(()=>[...i[9]||(i[9]=[e.createTextVNode("关闭",-1)])]),_:1})]),default:e.withCtx(()=>[e.createVNode(y,{shadow:"never",class:"j-import-upload-card"},{default:e.withCtx(()=>[i[3]||(i[3]=e.createElementVNode("div",{class:"j-import-upload-card-title"},"导入 EXCEL",-1)),e.createVNode(w,{style:{margin:"10px 0"}}),e.createElementVNode("div",Be,[e.createVNode(h,{accept:".xlsx,.xls","auto-upload":!1,"show-file-list":!1,"on-change":x},{default:e.withCtx(()=>[e.createVNode(B,{size:"small"},{default:e.withCtx(()=>[...i[1]||(i[1]=[e.createTextVNode("点击上传",-1)])]),_:1})]),_:1}),k.value.length?(e.openBlock(),e.createBlock(N,{key:0,type:"primary",class:"j-import-no-wrap",onClick:j},{default:e.withCtx(()=>[...i[2]||(i[2]=[e.createTextVNode(" 下载导入模板.xlsx ",-1)])]),_:1})):e.createCommentVNode("",!0)])]),_:1}),e.createVNode(E,{class:"j-import-stats-row",gutter:20,align:"middle"},{default:e.withCtx(()=>[e.createVNode(b,{span:18},{default:e.withCtx(()=>[e.createVNode(E,{class:"j-import-stats-cols"},{default:e.withCtx(()=>[e.createVNode(b,{span:4,class:"j-import-stat-item"},{default:e.withCtx(()=>[e.createElementVNode("div",_e,e.toDisplayString(d.value.total),1),i[4]||(i[4]=e.createElementVNode("div",{class:"j-import-stat-label"},"导入数量",-1))]),_:1}),e.createVNode(b,{span:4,class:"j-import-stat-item"},{default:e.withCtx(()=>[e.createElementVNode("div",be,e.toDisplayString(d.value.fail),1),i[5]||(i[5]=e.createElementVNode("div",{class:"j-import-stat-label"},"失败数量",-1))]),_:1}),e.createVNode(b,{span:4,class:"j-import-stat-item"},{default:e.withCtx(()=>[e.createElementVNode("div",Ve,e.toDisplayString(d.value.success),1),i[6]||(i[6]=e.createElementVNode("div",{class:"j-import-stat-label"},"成功数量",-1))]),_:1})]),_:1})]),_:1}),e.createVNode(b,{span:6,class:"j-import-confirm-col"},{default:e.withCtx(()=>[e.createVNode(B,{type:"primary",size:"small",loading:s.value,disabled:!c.value.length,onClick:g},{default:e.withCtx(()=>[...i[7]||(i[7]=[e.createTextVNode(" 确认导入 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),e.createVNode($,{data:c.value,border:"",size:"small","max-height":"360",class:"j-import-data-table"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,V=>(e.openBlock(),e.createBlock(I,{key:V.prop,prop:V.prop,label:V.label,"min-width":120,"show-overflow-tooltip":""},null,8,["prop","label"]))),128)),e.createVNode(I,{label:"状态",width:"110",align:"center",fixed:"right"},{default:e.withCtx(({row:V})=>[V._status===-1?(e.openBlock(),e.createElementBlock("span",Ne,e.toDisplayString(V._error||"创建失败"),1)):(e.openBlock(),e.createElementBlock("span",Ee,e.toDisplayString(u[V._status]),1))]),_:1}),e.createVNode(I,{label:"操作",width:"80",align:"center",fixed:"right"},{default:e.withCtx(({$index:V,row:J})=>[J._status===0?(e.openBlock(),e.createBlock(B,{key:0,size:"small",onClick:oe=>C(V)},{default:e.withCtx(()=>[...i[8]||(i[8]=[e.createTextVNode(" 删除 ",-1)])]),_:1},8,["onClick"])):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["data"])]),_:1},8,["modelValue","title"])}}}),[["__scopeId","data-v-bd8f8139"]]),xe={class:"j-sidebar__menu-item-title"},z=T(e.defineComponent({name:"JSideMenuItem",__name:"JSideMenuItem",props:{menuItem:{},isCollapse:{type:Boolean},depth:{default:0}},emits:["menu-click"],setup(t,{emit:a}){const n=t,o=a,l=()=>{o("menu-click",n.menuItem)};return(s,r)=>{const c=e.resolveComponent("JSideMenuItem",!0),d=e.resolveComponent("el-sub-menu"),u=e.resolveComponent("el-menu-item");return t.menuItem.children&&t.menuItem.children.length>0?(e.openBlock(),e.createBlock(d,{key:0,index:t.menuItem.path,class:e.normalizeClass([`j-sidebar__depth-${t.depth}`])},{title:e.withCtx(()=>[t.menuItem.icon&&t.depth===0?(e.openBlock(),e.createBlock(e.unref(A),{key:0,icon:t.menuItem.icon},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",xe,e.toDisplayString(t.menuItem.title||t.menuItem.name),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.menuItem.children,k=>(e.openBlock(),e.createBlock(c,{key:k.path,"menu-item":k,"is-collapse":t.isCollapse,depth:t.depth+1,onMenuClick:r[0]||(r[0]=M=>o("menu-click",M))},null,8,["menu-item","is-collapse","depth"]))),128))]),_:1},8,["index","class"])):(e.openBlock(),e.createBlock(u,{key:1,index:t.menuItem.path,class:e.normalizeClass([`j-sidebar__depth-${t.depth}`]),onClick:l},{title:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(t.menuItem.title||t.menuItem.name),1)]),default:e.withCtx(()=>[t.menuItem.icon&&t.depth===0?(e.openBlock(),e.createBlock(e.unref(A),{key:0,icon:t.menuItem.icon},null,8,["icon"])):e.createCommentVNode("",!0)]),_:1},8,["index","class"]))}}}),[["__scopeId","data-v-3787a646"]]),Se={class:"j-sidebar__logo"},je={class:"j-sidebar__title"},$e={class:"j-sidebar__menu-wrapper"},Me={class:"j-sidebar__footer"},L=T(e.defineComponent({name:"JSidebar",__name:"JSidebar",props:{menus:{},activeMenu:{default:""},title:{default:""},collapsedTitle:{default:""},collapsed:{type:Boolean,default:!1},collapsedWidth:{default:80},expandedWidth:{default:200},router:{type:Boolean,default:!0}},emits:["update:collapsed","menu-click"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(n.collapsed);e.watch(()=>n.collapsed,r=>{l.value=r});const s=()=>{l.value=!l.value,o("update:collapsed",l.value)};return(r,c)=>{const d=e.resolveComponent("el-menu");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["j-sidebar",l.value?"j-sidebar--collapsed":"j-sidebar--expanded"]),style:e.normalizeStyle({width:l.value?`${t.collapsedWidth}px`:`${t.expandedWidth}px`})},[e.createElementVNode("div",Se,[e.renderSlot(r.$slots,"logo",{collapsed:l.value},()=>{var u;return[e.createElementVNode("h2",je,e.toDisplayString(l.value?t.collapsedTitle||((u=t.title)==null?void 0:u.charAt(0))||"":t.title),1)]},!0)]),e.createElementVNode("div",$e,[e.createVNode(d,{"default-active":t.activeMenu,class:"j-sidebar__menu",router:t.router,collapse:l.value,"collapse-transition":!1},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.menus,u=>(e.openBlock(),e.createBlock(z,{key:u.path,"menu-item":u,"is-collapse":l.value,onMenuClick:c[0]||(c[0]=k=>o("menu-click",k))},null,8,["menu-item","is-collapse"]))),128))]),_:1},8,["default-active","router","collapse"])]),e.createElementVNode("div",Me,[e.renderSlot(r.$slots,"footer",{collapsed:l.value,toggle:s},()=>[e.createElementVNode("button",{class:"j-sidebar__collapse-btn",onClick:s},[e.createVNode(e.unref(A),{icon:l.value?"mdi:chevron-right":"mdi:chevron-left"},null,8,["icon"])])],!0)])],6)}}}),[["__scopeId","data-v-2e746199"]]),Ie={class:"j-admin-layout__right-panel"},Re={class:"j-admin-layout__header"},Te={class:"j-admin-layout__header-left"},De={key:0,class:"j-admin-layout__logo"},Ae={class:"j-admin-layout__header-right"},Je={class:"j-admin-layout__user"},Fe={class:"j-admin-layout__content-container"},K=T(e.defineComponent({name:"JAdminLayout",__name:"JAdminLayout",props:{topMenus:{},sideMenus:{},activeTopMenu:{default:""},activeMenu:{default:""},title:{default:""},logoTitle:{default:""},collapsedTitle:{default:""},collapsed:{type:Boolean,default:!1},username:{default:""},profileText:{default:"个人资料"},logoutText:{default:"退出登录"},sidebarCollapsedWidth:{default:80},sidebarExpandedWidth:{default:200},headerHeight:{default:"50px"},contentPadding:{default:"10px"},contentBackground:{default:"#f0f2f5"},headerBackground:{default:"#ffffff"},showProfile:{type:Boolean,default:!0},showLogout:{type:Boolean,default:!0},hideContentScrollbar:{type:Boolean,default:!1}},emits:["update:collapsed","top-menu-select","side-menu-click","profile","logout"],setup(t,{emit:a}){const n=t,o=a,l=e.computed({get:()=>n.collapsed,set:d=>o("update:collapsed",d)}),s=e.computed(()=>({"--j-admin-layout-header-height":n.headerHeight,"--j-admin-layout-content-padding":n.contentPadding,"--j-admin-layout-content-bg":n.contentBackground,"--j-admin-layout-header-bg":n.headerBackground})),r=d=>{o("top-menu-select",d)},c=d=>{o("side-menu-click",d)};return(d,u)=>{const k=e.resolveComponent("el-menu-item"),M=e.resolveComponent("el-menu"),x=e.resolveComponent("el-icon"),C=e.resolveComponent("el-dropdown-item"),g=e.resolveComponent("el-dropdown-menu"),j=e.resolveComponent("el-dropdown");return e.openBlock(),e.createElementBlock("div",{class:"j-admin-layout",style:e.normalizeStyle(s.value)},[t.sideMenus.length>0?(e.openBlock(),e.createBlock(e.unref(L),{key:0,collapsed:l.value,"onUpdate:collapsed":u[0]||(u[0]=m=>l.value=m),menus:t.sideMenus,"active-menu":t.activeMenu,title:t.title,"collapsed-title":t.collapsedTitle,"collapsed-width":t.sidebarCollapsedWidth,"expanded-width":t.sidebarExpandedWidth,onMenuClick:c},e.createSlots({_:2},[d.$slots.sidebarFooter?{name:"footer",fn:e.withCtx(({collapsed:m,toggle:f})=>[e.renderSlot(d.$slots,"sidebarFooter",{collapsed:m,toggle:f},void 0,!0)]),key:"0"}:void 0]),1032,["collapsed","menus","active-menu","title","collapsed-title","collapsed-width","expanded-width"])):e.createCommentVNode("",!0),e.createElementVNode("div",Ie,[e.createElementVNode("div",Re,[e.createElementVNode("div",Te,[t.sideMenus.length===0?(e.openBlock(),e.createElementBlock("div",De,[e.renderSlot(d.$slots,"logo",{},()=>[e.createElementVNode("h2",null,e.toDisplayString(t.logoTitle||t.title),1)],!0)])):e.createCommentVNode("",!0),e.createVNode(M,{mode:"horizontal","default-active":t.activeTopMenu,class:"j-admin-layout__top-menu",onSelect:r},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.topMenus,m=>(e.openBlock(),e.createBlock(k,{key:m.path,index:m.path},{default:e.withCtx(()=>[e.createVNode(e.unref(A),{icon:m.icon||"ep:menu",class:"j-admin-layout__top-menu-icon"},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(m.title||m.name),1)]),_:2},1032,["index"]))),128))]),_:1},8,["default-active"])]),e.createElementVNode("div",Ae,[e.renderSlot(d.$slots,"headerRight",{username:t.username},()=>[t.showProfile||t.showLogout?(e.openBlock(),e.createBlock(j,{key:0},{dropdown:e.withCtx(()=>[e.createVNode(g,null,{default:e.withCtx(()=>[t.showProfile?(e.openBlock(),e.createBlock(C,{key:0,onClick:u[1]||(u[1]=m=>o("profile"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.profileText),1)]),_:1})):e.createCommentVNode("",!0),t.showLogout?(e.openBlock(),e.createBlock(C,{key:1,onClick:u[2]||(u[2]=m=>o("logout"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.logoutText),1)]),_:1})):e.createCommentVNode("",!0)]),_:1})]),default:e.withCtx(()=>[e.createElementVNode("span",Je,[e.createTextVNode(e.toDisplayString(t.username)+" ",1),e.createVNode(x,null,{default:e.withCtx(()=>[e.createVNode(e.unref(S.ArrowDown))]),_:1})])]),_:1})):e.createCommentVNode("",!0)],!0)])]),e.createElementVNode("div",Fe,[e.renderSlot(d.$slots,"tabs",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass(["j-admin-layout__content",{"j-admin-layout__content--scrollbar-hidden":t.hideContentScrollbar}])},[e.renderSlot(d.$slots,"default",{},void 0,!0)],2)])])],4)}}}),[["__scopeId","data-v-f36e5274"]]);function O(t,a){return Array.isArray(t)?t.map(n=>O(n,a)):t!==null&&typeof t=="object"&&!(t instanceof Date)?a(t):t}function G(t,a=[]){return Object.fromEntries(Object.entries(t).map(([n,o])=>{const l=O(o,r=>G(r,a));return a.includes(n)?[n,l]:[n.replace(/([A-Z])/g,"_$1").toLowerCase(),l]}))}function Z(t,a=[]){return Object.fromEntries(Object.entries(t).map(([n,o])=>{const l=O(o,r=>Z(r,a));return a.includes(n)?[n,l]:[n.replace(/_([a-z])/g,(r,c)=>c.toUpperCase()),l]}))}function ze(t,a){const n={};for(const o of a)o in t&&(n[o]=t[o]);return n}function Le(t,a){const n={...t};for(const o of a)delete n[o];return n}function H(t){if(t===null||typeof t!="object")return t;if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t.source,t.flags);if(Array.isArray(t))return t.map(n=>H(n));const a={};for(const n of Object.keys(t))a[n]=H(t[n]);return a}function Q(t,a=!1){const n={};for(const[o,l]of Object.entries(t))if(!(l==null||l===""))if(a&&typeof l=="object"&&!Array.isArray(l)&&!(l instanceof Date)){const s=Q(l,!0);Object.keys(s).length>0&&(n[o]=s)}else n[o]=l;return n}function Y(t,a="",n="."){const o={};for(const[l,s]of Object.entries(t)){const r=a?`${a}${n}${l}`:l;s!==null&&typeof s=="object"&&!Array.isArray(s)&&!(s instanceof Date)?Object.assign(o,Y(s,r,n)):o[r]=s}return o}function Oe(t,a="."){const n={};for(const[o,l]of Object.entries(t)){const s=o.split(a);let r=n;for(let c=0;c<s.length-1;c++){const d=s[c];d in r||(r[d]={}),r=r[d]}r[s[s.length-1]]=l}return n}function He(t){return Object.entries(t).map(([a,n])=>({id:a,label:n,prop:a}))}function v(t,a){if(!t)return null;let n=t.replace(/^@\//,"");n.startsWith("views/")||(n=`views/${n}`),n.endsWith(".vue")||(n=`${n}.vue`);const o=`/src/${n}`;return a[o]??a["/src/views/common/NotFound.vue"]??null}function ee(t){const a=new Map,n=[];return t.forEach(o=>a.set(o.name,{...o,children:[]})),t.forEach(o=>{const l=a.get(o.name);if(!o.parent_name)n.push(l);else{const s=a.get(o.parent_name);s?(s.children??(s.children=[]),s.children.push(l)):n.push(l)}}),n}function q(t,a,n){return t.filter(o=>!n||!o.project||o.project===n).map(o=>{var r;const l={path:o.path,name:o.name,meta:{requiresAuth:o.requiresAuth===1,title:o.title,permissions:o.permissions?o.permissions.split(",").map(c=>c.trim()).filter(Boolean):[],params:o.params?o.params.split("&").map(c=>c.trim()).filter(Boolean):[]}},s=v(o.component,a);return s&&(l.component=s),o.redirect&&(l.redirect=o.redirect),(r=o.children)!=null&&r.length&&(l.children=q(o.children,a,n)),l})}function qe(t,a,n,o){const l=new Map;t.forEach(r=>l.set(r.name,r));const s=r=>{let c=r.parent_name;const d=new Set;for(;c;){if(c===n)return!0;if(d.has(c))return!1;d.add(c);const u=l.get(c);if(!u)return!1;c=u.parent_name}return!1};return t.filter(r=>r.name!==n&&r.is_show===1&&r.component&&a.includes(r.code)&&s(r)&&(!o||!r.project||r.project===o)).sort((r,c)=>r.sorts-c.sorts)[0]}F.configure({showSpinner:!1});const te=(...t)=>{},ne=(...t)=>{},Ue=(...t)=>{console.error("[Router]",...t)};function We(t,a){const{getRouteStore:n,getPermissionStore:o,getUserStore:l,isAuthenticated:s,viewModules:r,homeComponent:c,notFoundComponent:d,projectName:u,layoutRouteName:k="Layout",publicPaths:M=["/login","/register"],loginRouteName:x="login",forbiddenRouteName:C="Forbidden",homeRouteName:g="Home",homeRoutePath:j="home",homeTitle:m="首页",noPermissionMessage:f="暂无权限"}=a;let i=!1;function w(h){const y=ee(h).find(E=>E.name===k),b=y!=null&&y.children?q(y.children,r,u):[];b.forEach(E=>{E.name&&t.hasRoute(E.name)||(t.addRoute(k,E),te(`Add route: ${String(E.name)} -> ${E.path}`))}),t.hasRoute(g)||t.addRoute(k,{path:j,name:g,component:c,meta:{title:m}}),t.hasRoute("NotFound")||t.addRoute({path:"/:pathMatch(.*)*",name:"NotFound",component:d}),te(`Dynamic routes added: ${b.length}`)}function B(h,N){if(h===g){N();return}t.hasRoute(g)?N({name:g,replace:!0}):N()}return t.beforeEach(async(h,N,y)=>{if(F.start(),s()&&!i)try{const $=n(),R=o();if(await $.initRoutes(),await R.loadUserPermissions(),w($.backendRoutes),i=!0,h.path==="/"||h.path===""){B(h.name,y);return}if(h.name===k){B(h.name,y);return}const V=$.backendRoutes.find(J=>J.name===h.name);if(V&&!R.routePermissions.includes(V.code)){ne("No route permission:",h.path),y({name:C,replace:!0});return}y({path:h.path,query:h.query,hash:h.hash,replace:!0});return}catch($){Ue("Failed to load route permissions:",$),i=!1,await l().logout(),y({name:x,replace:!0});return}if(M.includes(h.path)){s()?y({path:"/",replace:!0}):y();return}if(!s()){y({name:x,replace:!0});return}const b=o(),E=n();if(h.name===g){y();return}if(b.routePermissions.length===0){h.path!=="/"?(_.ElMessage.warning(f),y({path:"/",replace:!0})):B(h.name,y);return}if(h.path==="/"){B(h.name,y);return}if(h.name===k){B(h.name,y);return}const I=E.backendRoutes.find($=>$.name===h.name);if(I&&!b.routePermissions.includes(I.code)){ne("No route permission:",h.path),y({name:C,replace:!0});return}y()}),t.afterEach(()=>F.done()),{resetRouterState:()=>{i=!1}}}const Pe=[U,W,A,P,X,L,z,K],Xe={install:t=>{Pe.forEach(a=>{t.component(a.name??a.__name??"",a)})}};p.JAdminLayout=K,p.JButton=U,p.JIconRender=A,p.JImportExcel=X,p.JSearchHeader=P,p.JSideMenuItem=z,p.JSidebar=L,p.JUploadImg=W,p.buildRouteTree=ee,p.createRouterGuard=We,p.deepClone=H,p.default=Xe,p.filterEmpty=Q,p.findFirstAllowedRoute=qe,p.flatten=Y,p.getComponentImport=v,p.omit=Le,p.pick=ze,p.toCamelCase=Z,p.toSnakeCase=G,p.toTableColumns=He,p.transformBackendRoutes=q,p.unflatten=Oe,Object.defineProperties(p,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
1
|
+
(function(f,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("element-plus"),require("@element-plus/icons-vue"),require("vuedraggable"),require("@iconify/vue"),require("xlsx"),require("nprogress")):typeof define=="function"&&define.amd?define(["exports","vue","element-plus","@element-plus/icons-vue","vuedraggable","@iconify/vue","xlsx","nprogress"],e):(f=typeof globalThis<"u"?globalThis:f||self,e(f.JgyPublicComponent={},f.Vue,f.ElementPlus,f.ElementPlusIconsVue,f.vuedraggable,f.IconifyVue,f.XLSX,f.NProgress))})(this,function(f,e,l,b,oe,le,ie,J){"use strict";function re(t){const i=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const n=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(i,a,n.get?n:{enumerable:!0,get:()=>t[a]})}}return i.default=t,Object.freeze(i)}const D=re(ie),se=["disabled"],ce={key:0,class:"j-button__loading-icon"},de={key:1,class:"j-button__text"},me=e.defineComponent({__name:"JButton",props:{type:{default:"default"},size:{default:"medium"},plain:{type:Boolean,default:!1},round:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:["click"],setup(t,{emit:i}){const a=t,n=i;function o(r){!a.disabled&&!a.loading&&n("click",r)}return(r,c)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["j-button",[`j-button--${t.type}`,`j-button--${t.size}`,{"j-button--plain":t.plain,"j-button--round":t.round,"j-button--disabled":t.disabled,"j-button--loading":t.loading}]]),disabled:t.disabled||t.loading,onClick:o},[t.loading?(e.openBlock(),e.createElementBlock("span",ce)):e.createCommentVNode("",!0),r.$slots.default?(e.openBlock(),e.createElementBlock("span",de,[e.renderSlot(r.$slots,"default",{},void 0,!0)])):e.createCommentVNode("",!0)],10,se))}}),M=(t,i)=>{const a=t.__vccOpts||t;for(const[n,o]of i)a[n]=o;return a},q=M(me,[["__scopeId","data-v-22864824"]]),fe={class:"j-upload-img-container"},pe={key:0,class:"images-wrapper"},ue={class:"image-item"},he=["onClick"],ge={key:0,class:"image-item single-image-item"},ke={class:"image-actions"},ye={key:2,class:"upload-tip"},Ce={key:0},W=M(e.defineComponent({name:"JUploadImg",__name:"JUploadImg",props:{modelValue:{default:""},disabled:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},limit:{default:9},maxSize:{default:2},accept:{default:"image/jpeg,image/png,image/jpg,image/gif"},tip:{default:"只能上传jpg/png/gif格式的图片,且不超过2MB"},showTip:{type:Boolean,default:!0},uploadFn:{type:Function,default:void 0}},emits:["update:modelValue","success","error"],setup(t,{emit:i}){const a=t,n=i,o=e.ref(""),r=e.ref(!1),c=a.showTip,m=()=>{r.value=!0},d=()=>{o.value="",n("update:modelValue",""),l.ElMessage.success("删除成功")},h=e.ref([]),p=e.ref(!1),$=E=>{h.value=E.map((u,s)=>({uid:Date.now()+s,url:u}))};e.watch(()=>a.modelValue,E=>{a.multiple?Array.isArray(E)&&E.length>0?$(E):h.value=[]:typeof E=="string"?o.value=E:o.value=""},{immediate:!0});const N=()=>{V()},C=E=>{h.value.splice(E,1),V(),l.ElMessage.success("删除成功")},k=async E=>{const u=E.raw;if(!u){l.ElMessage.error("文件不存在,请重试");return}if(u.size>a.maxSize*1024*1024){l.ElMessage.error(`图片大小不能超过 ${a.maxSize}MB`);return}if(!a.uploadFn){l.ElMessage.error("未配置上传函数 (uploadFn)");return}try{p.value=!0;const s=await a.uploadFn(u);a.multiple?(h.value.push({uid:Date.now(),url:s}),V()):(o.value=s,n("update:modelValue",s)),n("success",s),l.ElMessage.success("上传成功")}catch(s){console.error("上传出错:",s),l.ElMessage.error("上传失败,请重试"),n("error",s)}finally{p.value=!1}},V=()=>{const E=h.value.map(u=>u.url);n("update:modelValue",E)};return(E,u)=>(e.openBlock(),e.createElementBlock("div",fe,[t.multiple?(e.openBlock(),e.createElementBlock("div",pe,[e.createVNode(e.unref(oe),{modelValue:h.value,"onUpdate:modelValue":u[0]||(u[0]=s=>h.value=s),class:"images-list","item-key":"uid",animation:200,disabled:t.disabled,onEnd:N},{item:e.withCtx(({element:s,index:y})=>[e.createElementVNode("div",ue,[e.createVNode(e.unref(l.ElImage),{src:s.url,"preview-src-list":h.value.map(B=>B.url),"initial-index":y,fit:"cover",class:"image-preview","preview-teleported":!0,"hide-on-click-modal":!0},null,8,["src","preview-src-list","initial-index"]),t.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:"delete-btn",onClick:e.withModifiers(B=>C(y),["stop"])},[e.createVNode(e.unref(l.ElIcon),{class:"icon-delete"},{default:e.withCtx(()=>[e.createVNode(e.unref(b.Delete))]),_:1})],8,he))])]),_:1},8,["modelValue","disabled"]),!t.disabled&&(!t.limit||h.value.length<t.limit)?(e.openBlock(),e.createBlock(e.unref(l.ElUpload),{key:0,class:"image-uploader","auto-upload":!1,"show-file-list":!1,"on-change":k,disabled:p.value,"list-type":"picture-card",accept:t.accept},{default:e.withCtx(()=>[p.value?(e.openBlock(),e.createBlock(e.unref(l.ElIcon),{key:1,class:"uploader-icon is-loading"},{default:e.withCtx(()=>[e.createVNode(e.unref(b.Loading))]),_:1})):(e.openBlock(),e.createBlock(e.unref(l.ElIcon),{key:0,class:"uploader-icon"},{default:e.withCtx(()=>[e.createVNode(e.unref(b.Plus))]),_:1}))]),_:1},8,["disabled","accept"])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[o.value?(e.openBlock(),e.createElementBlock("div",ge,[e.createVNode(e.unref(l.ElImage),{src:o.value,fit:"cover",class:"image-preview"},null,8,["src"]),e.createElementVNode("div",ke,[e.createVNode(e.unref(l.ElIcon),{class:"action-icon",onClick:e.withModifiers(m,["stop"])},{default:e.withCtx(()=>[e.createVNode(e.unref(b.ZoomIn))]),_:1}),t.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(l.ElIcon),{key:0,class:"action-icon",onClick:e.withModifiers(d,["stop"])},{default:e.withCtx(()=>[e.createVNode(e.unref(b.Delete))]),_:1}))])])):(e.openBlock(),e.createBlock(e.unref(l.ElUpload),{key:1,class:"image-uploader","auto-upload":!1,"show-file-list":!1,"on-change":k,disabled:t.disabled||p.value,accept:t.accept,"list-type":"picture-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(l.ElIcon),{class:"uploader-icon"},{default:e.withCtx(()=>[p.value?(e.openBlock(),e.createBlock(e.unref(b.Loading),{key:1,class:"is-loading"})):(e.openBlock(),e.createBlock(e.unref(b.Plus),{key:0}))]),_:1})]),_:1},8,["disabled","accept"])),r.value?(e.openBlock(),e.createBlock(e.unref(l.ElImageViewer),{key:2,"url-list":[o.value],teleported:!0,onClose:u[1]||(u[1]=s=>r.value=!1)},null,8,["url-list"])):e.createCommentVNode("",!0)],64)),e.unref(c)?(e.openBlock(),e.createElementBlock("div",ye,[e.createElementVNode("span",null,e.toDisplayString(t.tip),1),t.multiple&&t.limit?(e.openBlock(),e.createElementBlock("span",Ce," (最多 "+e.toDisplayString(t.limit)+" 张)",1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-7dc4f798"]]),_=e.defineComponent({name:"JIconRender",__name:"JIconRender",props:{icon:{},size:{default:24}},setup(t){return(i,a)=>t.icon?(e.openBlock(),e.createBlock(e.unref(le.Icon),e.mergeProps({key:0,icon:t.icon,width:t.size,height:t.size},i.$attrs),null,16,["icon","width","height"])):e.createCommentVNode("",!0)}}),we={class:"action-left"},X=M(e.defineComponent({name:"JSearchHeader",__name:"JSearchHeader",props:{selectedCount:{default:0},addText:{default:"新增"},defaultVisible:{default:5},showAdd:{type:Boolean,default:!0},showBatchDelete:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showReset:{type:Boolean,default:!0}},emits:["search","reset","add","batchDelete"],setup(t,{emit:i}){const a=t,n=i,o=e.ref(),r=e.ref(!1),c=e.ref(!1),m=e.ref(0),d=e.ref(0),h=e.computed(()=>m.value>a.defaultVisible),p=()=>{if(!o.value)return;const C=Array.from(o.value.children);m.value=C.length;const k=C[a.defaultVisible-1];if(k&&o.value){const V=o.value.getBoundingClientRect(),E=k.getBoundingClientRect();d.value=E.bottom-V.top}},$=()=>{const C=o.value;if(C)if(r.value)p(),r.value=!1,C.style.maxHeight=C.scrollHeight+"px",C.offsetHeight,C.style.maxHeight=d.value+"px";else{r.value=!0,C.style.maxHeight=C.scrollHeight+"px";const k=()=>{C.style.maxHeight="none",C.removeEventListener("transitionend",k)};C.addEventListener("transitionend",k)}};let N=null;return e.onMounted(()=>{p(),h.value&&o.value&&(o.value.style.maxHeight=d.value+"px"),requestAnimationFrame(()=>{requestAnimationFrame(()=>{c.value=!0})}),o.value&&(N=new MutationObserver(()=>{p(),h.value&&!r.value&&o.value&&(o.value.style.maxHeight=d.value+"px")}),N.observe(o.value,{childList:!0}))}),e.onBeforeUnmount(()=>{N==null||N.disconnect()}),(C,k)=>(e.openBlock(),e.createBlock(e.unref(l.ElCard),{shadow:"never",class:"j-search-header-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(l.ElForm),{inline:"",class:"search-form"},{default:e.withCtx(()=>[e.createElementVNode("div",{ref_key:"formItemsRef",ref:o,class:e.normalizeClass(["form-items-wrapper",{"is-animated":c.value}])},[e.renderSlot(C.$slots,"default",{},void 0,!0)],2)]),_:3}),e.createElementVNode("div",{class:"action-bar",style:e.normalizeStyle({marginTop:r.value?"0px":"10px"})},[e.createElementVNode("div",we,[t.showAdd?(e.openBlock(),e.createBlock(e.unref(l.ElButton),{key:0,type:"primary",icon:e.unref(b.Plus),onClick:k[0]||(k[0]=V=>n("add"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.addText),1)]),_:1},8,["icon"])):e.createCommentVNode("",!0),t.showBatchDelete?(e.openBlock(),e.createBlock(e.unref(l.ElButton),{key:1,type:"danger",icon:e.unref(b.Delete),disabled:t.selectedCount===0,onClick:k[1]||(k[1]=V=>n("batchDelete"))},{default:e.withCtx(()=>[e.createTextVNode(" 批量删除"+e.toDisplayString(t.selectedCount?`(${t.selectedCount})`:""),1)]),_:1},8,["icon","disabled"])):e.createCommentVNode("",!0),t.showSearch?(e.openBlock(),e.createBlock(e.unref(l.ElButton),{key:2,type:"primary",icon:e.unref(b.Search),onClick:k[2]||(k[2]=V=>n("search"))},{default:e.withCtx(()=>[...k[4]||(k[4]=[e.createTextVNode("搜索",-1)])]),_:1},8,["icon"])):e.createCommentVNode("",!0),t.showReset?(e.openBlock(),e.createBlock(e.unref(l.ElButton),{key:3,icon:e.unref(b.Refresh),onClick:k[3]||(k[3]=V=>n("reset"))},{default:e.withCtx(()=>[...k[5]||(k[5]=[e.createTextVNode("重置",-1)])]),_:1},8,["icon"])):e.createCommentVNode("",!0),e.renderSlot(C.$slots,"actions",{},void 0,!0)]),h.value?(e.openBlock(),e.createBlock(e.unref(l.ElButton),{key:0,link:"",type:"primary",onClick:$},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value?"收起":"展开")+" ",1),e.createVNode(e.unref(l.ElIcon),{class:e.normalizeClass(["toggle-icon",{"is-expanded":r.value}])},{default:e.withCtx(()=>[e.createVNode(e.unref(b.ArrowDown))]),_:1},8,["class"])]),_:1})):e.createCommentVNode("",!0)],4)]),_:3}))}}),[["__scopeId","data-v-c1f4bf4c"]]),Ee={class:"j-import-upload-row"},Be={class:"j-import-stat-num"},be={class:"j-import-stat-num"},Ve={class:"j-import-stat-num"},Ne={key:0,class:"j-import-status-fail"},xe={key:1},K=M(e.defineComponent({name:"JImportExcel",__name:"JImportExcel",props:e.mergeModels({getFieldListApi:{},importApi:{},excludeFields:{default:()=>["id","ctime","mtime"]},title:{default:"Excel 批量导入"}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:e.mergeModels(["success"],["update:modelValue"]),setup(t,{emit:i}){const a=t,n=i,o=e.useModel(t,"modelValue"),r=e.ref(!1),c=e.ref({}),m=e.ref([]),d=e.ref({total:0,success:0,fail:0}),h={0:"待创建",1:"创建成功",2:"创建中",[-1]:"创建失败"},p=e.computed(()=>Object.entries(c.value).filter(([u])=>!a.excludeFields.includes(u)).map(([u,s])=>({id:u,label:s,prop:u}))),$=async()=>{try{const u=await a.getFieldListApi();c.value=u.data.tableFieldsInfo??{}}catch{l.ElMessage.error("获取字段列表失败")}},N=u=>{const s=u.raw;if(!s)return;if(!["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-excel"].includes(s.type)&&!s.name.match(/\.xlsx?$/i)){l.ElMessage.warning("请上传 .xlsx 或 .xls 格式文件");return}const B=new FileReader;B.onload=g=>{try{const j=D.read(g.target.result,{type:"binary"}),w=j.SheetNames[0],I=j.Sheets[w],A=D.utils.sheet_to_json(I,{header:1,defval:""}).slice(1).filter(R=>R.some(T=>T!==""));if(!A.length){l.ElMessage.warning("文件内容为空");return}const S=A.map(R=>{const T={_status:0,_error:""};return p.value.forEach((U,ne)=>{T[U.prop]=R[ne]!==void 0?R[ne]:""}),T});m.value=S,d.value={total:S.length,success:0,fail:0}}catch{l.ElMessage.error("解析文件失败,请检查文件格式")}},B.readAsBinaryString(s)},C=u=>{m.value.splice(u,1),d.value.total=m.value.length},k=async()=>{const u=m.value.filter(s=>s._status===0).map(({_status:s,_error:y,...B})=>B);if(!u.length){l.ElMessage.warning("没有可导入的数据");return}r.value=!0;try{const s=await a.importApi(u);s.code===1?(m.value.forEach(y=>{y._status===0&&(y._status=1)}),d.value.success=m.value.filter(y=>y._status===1).length,l.ElMessage.success("导入成功"),n("success")):l.ElMessage.error(s.msg||"导入失败")}catch{l.ElMessage.error("导入失败,请重试")}finally{r.value=!1}},V=()=>{try{const u=D.utils.book_new(),s=p.value.map(g=>g.label),y={};s.forEach(g=>y[g]="");const B=D.utils.json_to_sheet([y]);D.utils.book_append_sheet(u,B,"模板"),D.writeFile(u,"导入模板.xlsx")}catch{l.ElMessage.error("模板下载失败")}},E=()=>{r.value||(o.value=!1,m.value=[],d.value={total:0,success:0,fail:0})};return(u,s)=>(e.openBlock(),e.createBlock(e.unref(l.ElDialog),{modelValue:o.value,"onUpdate:modelValue":s[0]||(s[0]=y=>o.value=y),title:a.title,width:"900px","close-on-click-modal":!1,onOpen:$,onClose:E},{footer:e.withCtx(()=>[e.createVNode(e.unref(l.ElButton),{onClick:E},{default:e.withCtx(()=>[...s[9]||(s[9]=[e.createTextVNode("关闭",-1)])]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(l.ElCard),{shadow:"never",class:"j-import-upload-card"},{default:e.withCtx(()=>[s[3]||(s[3]=e.createElementVNode("div",{class:"j-import-upload-card-title"},"导入 EXCEL",-1)),e.createVNode(e.unref(l.ElDivider),{style:{margin:"10px 0"}}),e.createElementVNode("div",Ee,[e.createVNode(e.unref(l.ElUpload),{accept:".xlsx,.xls","auto-upload":!1,"show-file-list":!1,"on-change":N},{default:e.withCtx(()=>[e.createVNode(e.unref(l.ElButton),{size:"small"},{default:e.withCtx(()=>[...s[1]||(s[1]=[e.createTextVNode("点击上传",-1)])]),_:1})]),_:1}),p.value.length?(e.openBlock(),e.createBlock(e.unref(l.ElLink),{key:0,type:"primary",class:"j-import-no-wrap",onClick:V},{default:e.withCtx(()=>[...s[2]||(s[2]=[e.createTextVNode(" 下载导入模板.xlsx ",-1)])]),_:1})):e.createCommentVNode("",!0)])]),_:1}),e.createVNode(e.unref(l.ElRow),{class:"j-import-stats-row",gutter:20,align:"middle"},{default:e.withCtx(()=>[e.createVNode(e.unref(l.ElCol),{span:18},{default:e.withCtx(()=>[e.createVNode(e.unref(l.ElRow),{class:"j-import-stats-cols"},{default:e.withCtx(()=>[e.createVNode(e.unref(l.ElCol),{span:4,class:"j-import-stat-item"},{default:e.withCtx(()=>[e.createElementVNode("div",Be,e.toDisplayString(d.value.total),1),s[4]||(s[4]=e.createElementVNode("div",{class:"j-import-stat-label"},"导入数量",-1))]),_:1}),e.createVNode(e.unref(l.ElCol),{span:4,class:"j-import-stat-item"},{default:e.withCtx(()=>[e.createElementVNode("div",be,e.toDisplayString(d.value.fail),1),s[5]||(s[5]=e.createElementVNode("div",{class:"j-import-stat-label"},"失败数量",-1))]),_:1}),e.createVNode(e.unref(l.ElCol),{span:4,class:"j-import-stat-item"},{default:e.withCtx(()=>[e.createElementVNode("div",Ve,e.toDisplayString(d.value.success),1),s[6]||(s[6]=e.createElementVNode("div",{class:"j-import-stat-label"},"成功数量",-1))]),_:1})]),_:1})]),_:1}),e.createVNode(e.unref(l.ElCol),{span:6,class:"j-import-confirm-col"},{default:e.withCtx(()=>[e.createVNode(e.unref(l.ElButton),{type:"primary",size:"small",loading:r.value,disabled:!m.value.length,onClick:k},{default:e.withCtx(()=>[...s[7]||(s[7]=[e.createTextVNode(" 确认导入 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),e.createVNode(e.unref(l.ElTable),{data:m.value,border:"",size:"small","max-height":"360",class:"j-import-data-table"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,y=>(e.openBlock(),e.createBlock(e.unref(l.ElTableColumn),{key:y.prop,prop:y.prop,label:y.label,"min-width":120,"show-overflow-tooltip":""},null,8,["prop","label"]))),128)),e.createVNode(e.unref(l.ElTableColumn),{label:"状态",width:"110",align:"center",fixed:"right"},{default:e.withCtx(({row:y})=>[y._status===-1?(e.openBlock(),e.createElementBlock("span",Ne,e.toDisplayString(y._error||"创建失败"),1)):(e.openBlock(),e.createElementBlock("span",xe,e.toDisplayString(h[y._status]),1))]),_:1}),e.createVNode(e.unref(l.ElTableColumn),{label:"操作",width:"80",align:"center",fixed:"right"},{default:e.withCtx(({$index:y,row:B})=>[B._status===0?(e.openBlock(),e.createBlock(e.unref(l.ElButton),{key:0,size:"small",onClick:g=>C(y)},{default:e.withCtx(()=>[...s[8]||(s[8]=[e.createTextVNode(" 删除 ",-1)])]),_:1},8,["onClick"])):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["data"])]),_:1},8,["modelValue","title"]))}}),[["__scopeId","data-v-74dcefaa"]]),Se={class:"j-sidebar__menu-item-title"},F=M(e.defineComponent({name:"JSideMenuItem",__name:"JSideMenuItem",props:{menuItem:{},isCollapse:{type:Boolean},depth:{default:0}},emits:["menu-click"],setup(t,{emit:i}){const a=t,n=i,o=()=>{n("menu-click",a.menuItem)};return(r,c)=>{const m=e.resolveComponent("JSideMenuItem",!0);return t.menuItem.children&&t.menuItem.children.length>0?(e.openBlock(),e.createBlock(e.unref(l.ElSubMenu),{key:0,index:t.menuItem.path,class:e.normalizeClass([`j-sidebar__depth-${t.depth}`])},{title:e.withCtx(()=>[t.menuItem.icon&&t.depth===0?(e.openBlock(),e.createBlock(e.unref(_),{key:0,icon:t.menuItem.icon},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",Se,e.toDisplayString(t.menuItem.title||t.menuItem.name),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.menuItem.children,d=>(e.openBlock(),e.createBlock(m,{key:d.path,"menu-item":d,"is-collapse":t.isCollapse,depth:t.depth+1,onMenuClick:c[0]||(c[0]=h=>n("menu-click",h))},null,8,["menu-item","is-collapse","depth"]))),128))]),_:1},8,["index","class"])):(e.openBlock(),e.createBlock(e.unref(l.ElMenuItem),{key:1,index:t.menuItem.path,class:e.normalizeClass([`j-sidebar__depth-${t.depth}`]),onClick:o},{title:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(t.menuItem.title||t.menuItem.name),1)]),default:e.withCtx(()=>[t.menuItem.icon&&t.depth===0?(e.openBlock(),e.createBlock(e.unref(_),{key:0,icon:t.menuItem.icon},null,8,["icon"])):e.createCommentVNode("",!0)]),_:1},8,["index","class"]))}}}),[["__scopeId","data-v-3a990426"]]),$e={class:"j-sidebar__logo"},je={class:"j-sidebar__title"},Me={class:"j-sidebar__menu-wrapper"},Ie={class:"j-sidebar__footer"},z=M(e.defineComponent({name:"JSidebar",__name:"JSidebar",props:{menus:{},activeMenu:{default:""},title:{default:""},collapsedTitle:{default:""},collapsed:{type:Boolean,default:!1},collapsedWidth:{default:80},expandedWidth:{default:200},router:{type:Boolean,default:!0}},emits:["update:collapsed","menu-click"],setup(t,{emit:i}){const a=t,n=i,o=e.ref(a.collapsed);e.watch(()=>a.collapsed,c=>{o.value=c});const r=()=>{o.value=!o.value,n("update:collapsed",o.value)};return(c,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["j-sidebar",o.value?"j-sidebar--collapsed":"j-sidebar--expanded"]),style:e.normalizeStyle({width:o.value?`${t.collapsedWidth}px`:`${t.expandedWidth}px`})},[e.createElementVNode("div",$e,[e.renderSlot(c.$slots,"logo",{collapsed:o.value},()=>{var d;return[e.createElementVNode("h2",je,e.toDisplayString(o.value?t.collapsedTitle||((d=t.title)==null?void 0:d.charAt(0))||"":t.title),1)]},!0)]),e.createElementVNode("div",Me,[e.createVNode(e.unref(l.ElMenu),{"default-active":t.activeMenu,class:"j-sidebar__menu",router:t.router,collapse:o.value,"collapse-transition":!1},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.menus,d=>(e.openBlock(),e.createBlock(F,{key:d.path,"menu-item":d,"is-collapse":o.value,onMenuClick:m[0]||(m[0]=h=>n("menu-click",h))},null,8,["menu-item","is-collapse"]))),128))]),_:1},8,["default-active","router","collapse"])]),e.createElementVNode("div",Ie,[e.renderSlot(c.$slots,"footer",{collapsed:o.value,toggle:r},()=>[e.createElementVNode("button",{class:"j-sidebar__collapse-btn",onClick:r},[e.createVNode(e.unref(_),{icon:o.value?"mdi:chevron-right":"mdi:chevron-left"},null,8,["icon"])])],!0)])],6))}}),[["__scopeId","data-v-a3fac9de"]]),Re={class:"j-admin-layout__right-panel"},Te={class:"j-admin-layout__header"},De={class:"j-admin-layout__header-left"},_e={key:0,class:"j-admin-layout__logo"},Ae={class:"j-admin-layout__header-right"},Je={class:"j-admin-layout__user"},Fe={class:"j-admin-layout__content-container"},G=M(e.defineComponent({name:"JAdminLayout",__name:"JAdminLayout",props:{topMenus:{},sideMenus:{},activeTopMenu:{default:""},activeMenu:{default:""},title:{default:""},logoTitle:{default:""},collapsedTitle:{default:""},collapsed:{type:Boolean,default:!1},username:{default:""},profileText:{default:"个人资料"},logoutText:{default:"退出登录"},sidebarCollapsedWidth:{default:80},sidebarExpandedWidth:{default:200},headerHeight:{default:"50px"},contentPadding:{default:"10px"},contentBackground:{default:"#f0f2f5"},headerBackground:{default:"#ffffff"},showProfile:{type:Boolean,default:!0},showLogout:{type:Boolean,default:!0},hideContentScrollbar:{type:Boolean,default:!1}},emits:["update:collapsed","top-menu-select","side-menu-click","profile","logout"],setup(t,{emit:i}){const a=t,n=i,o=e.computed({get:()=>a.collapsed,set:d=>n("update:collapsed",d)}),r=e.computed(()=>({"--j-admin-layout-header-height":a.headerHeight,"--j-admin-layout-content-padding":a.contentPadding,"--j-admin-layout-content-bg":a.contentBackground,"--j-admin-layout-header-bg":a.headerBackground})),c=d=>{n("top-menu-select",d)},m=d=>{n("side-menu-click",d)};return(d,h)=>(e.openBlock(),e.createElementBlock("div",{class:"j-admin-layout",style:e.normalizeStyle(r.value)},[t.sideMenus.length>0?(e.openBlock(),e.createBlock(e.unref(z),{key:0,collapsed:o.value,"onUpdate:collapsed":h[0]||(h[0]=p=>o.value=p),menus:t.sideMenus,"active-menu":t.activeMenu,title:t.title,"collapsed-title":t.collapsedTitle,"collapsed-width":t.sidebarCollapsedWidth,"expanded-width":t.sidebarExpandedWidth,onMenuClick:m},e.createSlots({_:2},[d.$slots.sidebarFooter?{name:"footer",fn:e.withCtx(({collapsed:p,toggle:$})=>[e.renderSlot(d.$slots,"sidebarFooter",{collapsed:p,toggle:$},void 0,!0)]),key:"0"}:void 0]),1032,["collapsed","menus","active-menu","title","collapsed-title","collapsed-width","expanded-width"])):e.createCommentVNode("",!0),e.createElementVNode("div",Re,[e.createElementVNode("div",Te,[e.createElementVNode("div",De,[t.sideMenus.length===0?(e.openBlock(),e.createElementBlock("div",_e,[e.renderSlot(d.$slots,"logo",{},()=>[e.createElementVNode("h2",null,e.toDisplayString(t.logoTitle||t.title),1)],!0)])):e.createCommentVNode("",!0),e.createVNode(e.unref(l.ElMenu),{mode:"horizontal","default-active":t.activeTopMenu,class:"j-admin-layout__top-menu",onSelect:c},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.topMenus,p=>(e.openBlock(),e.createBlock(e.unref(l.ElMenuItem),{key:p.path,index:p.path},{default:e.withCtx(()=>[p.icon?(e.openBlock(),e.createBlock(e.unref(_),{key:0,icon:p.icon,class:"j-admin-layout__top-menu-icon"},null,8,["icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(p.title||p.name),1)]),_:2},1032,["index"]))),128))]),_:1},8,["default-active"])]),e.createElementVNode("div",Ae,[e.renderSlot(d.$slots,"headerRight",{username:t.username},()=>[t.showProfile||t.showLogout?(e.openBlock(),e.createBlock(e.unref(l.ElDropdown),{key:0},{dropdown:e.withCtx(()=>[e.createVNode(e.unref(l.ElDropdownMenu),null,{default:e.withCtx(()=>[t.showProfile?(e.openBlock(),e.createBlock(e.unref(l.ElDropdownItem),{key:0,onClick:h[1]||(h[1]=p=>n("profile"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.profileText),1)]),_:1})):e.createCommentVNode("",!0),t.showLogout?(e.openBlock(),e.createBlock(e.unref(l.ElDropdownItem),{key:1,onClick:h[2]||(h[2]=p=>n("logout"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.logoutText),1)]),_:1})):e.createCommentVNode("",!0)]),_:1})]),default:e.withCtx(()=>[e.createElementVNode("span",Je,[e.createTextVNode(e.toDisplayString(t.username)+" ",1),e.createVNode(e.unref(l.ElIcon),null,{default:e.withCtx(()=>[e.createVNode(e.unref(b.ArrowDown))]),_:1})])]),_:1})):e.createCommentVNode("",!0)],!0)])]),e.createElementVNode("div",Fe,[e.renderSlot(d.$slots,"tabs",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass(["j-admin-layout__content",{"j-admin-layout__content--scrollbar-hidden":t.hideContentScrollbar}])},[e.renderSlot(d.$slots,"default",{},void 0,!0)],2)])])],4))}}),[["__scopeId","data-v-51b44ebf"]]);function L(t,i){return Array.isArray(t)?t.map(a=>L(a,i)):t!==null&&typeof t=="object"&&!(t instanceof Date)?i(t):t}function Z(t,i=[]){return Object.fromEntries(Object.entries(t).map(([a,n])=>{const o=L(n,c=>Z(c,i));return i.includes(a)?[a,o]:[a.replace(/([A-Z])/g,"_$1").toLowerCase(),o]}))}function Q(t,i=[]){return Object.fromEntries(Object.entries(t).map(([a,n])=>{const o=L(n,c=>Q(c,i));return i.includes(a)?[a,o]:[a.replace(/_([a-z])/g,(c,m)=>m.toUpperCase()),o]}))}function ze(t,i){const a={};for(const n of i)n in t&&(a[n]=t[n]);return a}function Le(t,i){const a={...t};for(const n of i)delete a[n];return a}function O(t){if(t===null||typeof t!="object")return t;if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t.source,t.flags);if(Array.isArray(t))return t.map(a=>O(a));const i={};for(const a of Object.keys(t))i[a]=O(t[a]);return i}function Y(t,i=!1){const a={};for(const[n,o]of Object.entries(t))if(!(o==null||o===""))if(i&&typeof o=="object"&&!Array.isArray(o)&&!(o instanceof Date)){const r=Y(o,!0);Object.keys(r).length>0&&(a[n]=r)}else a[n]=o;return a}function P(t,i="",a="."){const n={};for(const[o,r]of Object.entries(t)){const c=i?`${i}${a}${o}`:o;r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Date)?Object.assign(n,P(r,c,a)):n[c]=r}return n}function Oe(t,i="."){const a={};for(const[n,o]of Object.entries(t)){const r=n.split(i);let c=a;for(let m=0;m<r.length-1;m++){const d=r[m];d in c||(c[d]={}),c=c[d]}c[r[r.length-1]]=o}return a}function He(t){return Object.entries(t).map(([i,a])=>({id:i,label:a,prop:i}))}function v(t,i){if(!t)return null;let a=t.replace(/^@\//,"");a.startsWith("views/")||(a=`views/${a}`),a.endsWith(".vue")||(a=`${a}.vue`);const n=`/src/${a}`;return i[n]??i["/src/views/common/NotFound.vue"]??null}function ee(t){const i=new Map,a=[];return t.forEach(n=>i.set(n.name,{...n,children:[]})),t.forEach(n=>{const o=i.get(n.name);if(!n.parent_name)a.push(o);else{const r=i.get(n.parent_name);r?(r.children??(r.children=[]),r.children.push(o)):a.push(o)}}),a}function H(t,i,a){return t.filter(n=>!a||!n.project||n.project===a).map(n=>{var c;const o={path:n.path,name:n.name,meta:{requiresAuth:n.requiresAuth===1,title:n.title,permissions:n.permissions?n.permissions.split(",").map(m=>m.trim()).filter(Boolean):[],params:n.params?n.params.split("&").map(m=>m.trim()).filter(Boolean):[]}},r=v(n.component,i);return r&&(o.component=r),n.redirect&&(o.redirect=n.redirect),(c=n.children)!=null&&c.length&&(o.children=H(n.children,i,a)),o})}function Ue(t,i,a,n){const o=new Map;t.forEach(c=>o.set(c.name,c));const r=c=>{let m=c.parent_name;const d=new Set;for(;m;){if(m===a)return!0;if(d.has(m))return!1;d.add(m);const h=o.get(m);if(!h)return!1;m=h.parent_name}return!1};return t.filter(c=>c.name!==a&&c.is_show===1&&c.component&&i.includes(c.code)&&r(c)&&(!n||!c.project||c.project===n)).sort((c,m)=>c.sorts-m.sorts)[0]}J.configure({showSpinner:!1});const te=(...t)=>{},ae=(...t)=>{},qe=(...t)=>{console.error("[Router]",...t)};function We(t,i){const{getRouteStore:a,getPermissionStore:n,getUserStore:o,isAuthenticated:r,viewModules:c,homeComponent:m,notFoundComponent:d,projectName:h,layoutRouteName:p="Layout",publicPaths:$=["/login","/register"],loginRouteName:N="login",forbiddenRouteName:C="Forbidden",homeRouteName:k="Home",homeRoutePath:V="home",homeTitle:E="首页",noPermissionMessage:u="暂无权限"}=i;let s=!1;function y(g){const w=ee(g).find(x=>x.name===p),I=w!=null&&w.children?H(w.children,c,h):[];I.forEach(x=>{x.name&&t.hasRoute(x.name)||(t.addRoute(p,x),te(`Add route: ${String(x.name)} -> ${x.path}`))}),t.hasRoute(k)||t.addRoute(p,{path:V,name:k,component:m,meta:{title:E}}),t.hasRoute("NotFound")||t.addRoute({path:"/:pathMatch(.*)*",name:"NotFound",component:d}),te(`Dynamic routes added: ${I.length}`)}function B(g,j){if(g===k){j();return}t.hasRoute(k)?j({name:k,replace:!0}):j()}return t.beforeEach(async(g,j,w)=>{if(J.start(),r()&&!s)try{const S=a(),R=n();if(await S.initRoutes(),await R.loadUserPermissions(),y(S.backendRoutes),s=!0,g.path==="/"||g.path===""){B(g.name,w);return}if(g.name===p){B(g.name,w);return}const T=S.backendRoutes.find(U=>U.name===g.name);if(T&&!R.routePermissions.includes(T.code)){ae("No route permission:",g.path),w({name:C,replace:!0});return}w({path:g.path,query:g.query,hash:g.hash,replace:!0});return}catch(S){qe("Failed to load route permissions:",S),s=!1,await o().logout(),w({name:N,replace:!0});return}if($.includes(g.path)){r()?w({path:"/",replace:!0}):w();return}if(!r()){w({name:N,replace:!0});return}const I=n(),x=a();if(g.name===k){w();return}if(I.routePermissions.length===0){g.path!=="/"?(l.ElMessage.warning(u),w({path:"/",replace:!0})):B(g.name,w);return}if(g.path==="/"){B(g.name,w);return}if(g.name===p){B(g.name,w);return}const A=x.backendRoutes.find(S=>S.name===g.name);if(A&&!I.routePermissions.includes(A.code)){ae("No route permission:",g.path),w({name:C,replace:!0});return}w()}),t.afterEach(()=>J.done()),{resetRouterState:()=>{s=!1}}}const Xe=[q,W,_,X,K,z,F,G],Ke={install:t=>{Xe.forEach(i=>{t.component(i.name??i.__name??"",i)})}};f.JAdminLayout=G,f.JButton=q,f.JIconRender=_,f.JImportExcel=K,f.JSearchHeader=X,f.JSideMenuItem=F,f.JSidebar=z,f.JUploadImg=W,f.buildRouteTree=ee,f.createRouterGuard=We,f.deepClone=O,f.default=Ke,f.filterEmpty=Y,f.findFirstAllowedRoute=Ue,f.flatten=P,f.getComponentImport=v,f.omit=Le,f.pick=ze,f.toCamelCase=Q,f.toSnakeCase=Z,f.toTableColumns=He,f.transformBackendRoutes=H,f.unflatten=Oe,Object.defineProperties(f,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
2
2
|
//# sourceMappingURL=index.umd.cjs.map
|