urit-qf-ui 0.1.10 → 0.2.0
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/UMenu.vue.d.ts +88 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +1512 -1159
- package/dist/index.umd.cjs +2 -2
- package/dist/style.css +1 -1
- package/dist/ts/model.d.ts +35 -0
- package/dist/uform/FormContainer.vue.d.ts +2 -2
- package/package.json +1 -1
package/dist/index.umd.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(f,x){typeof exports=="object"&&typeof module<"u"?x(exports,require("element-plus"),require("element-plus/dist/index.css"),require("element-plus/es"),require("element-plus/es/components/base/style/css"),require("element-plus/es/components/input/style/css"),require("vue"),require("element-plus/es/components/input-number/style/css"),require("element-plus/es/components/select/style/css"),require("element-plus/es/components/option/style/css"),require("axios"),require("element-plus/es/components/switch/style/css"),require("element-plus/es/components/date-picker/style/css"),require("element-plus/es/components/button/style/css"),require("element-plus/es/components/form/style/css"),require("element-plus/es/components/dialog/style/css"),require("element-plus/es/components/icon/style/css"),require("@element-plus/icons-vue"),require("element-plus/es/components/table/style/css"),require("element-plus/es/components/table-column/style/css"),require("element-plus/es/components/pagination/style/css"),require("element-plus/es/components/drawer/style/css"),require("mitt"),require("mqtt")):typeof define=="function"&&define.amd?define(["exports","element-plus","element-plus/dist/index.css","element-plus/es","element-plus/es/components/base/style/css","element-plus/es/components/input/style/css","vue","element-plus/es/components/input-number/style/css","element-plus/es/components/select/style/css","element-plus/es/components/option/style/css","axios","element-plus/es/components/switch/style/css","element-plus/es/components/date-picker/style/css","element-plus/es/components/button/style/css","element-plus/es/components/form/style/css","element-plus/es/components/dialog/style/css","element-plus/es/components/icon/style/css","@element-plus/icons-vue","element-plus/es/components/table/style/css","element-plus/es/components/table-column/style/css","element-plus/es/components/pagination/style/css","element-plus/es/components/drawer/style/css","mitt","mqtt"],x):(f=typeof globalThis<"u"?globalThis:f||self,x(f.UritQfUI={},f.ElementPlus,f.ElementPlus,f.ElementPlus,f.ElementPlus,f.ElementPlus,f.Vue,f.ElementPlus,f.ElementPlus,f.ElementPlus,f.axios,f.ElementPlus,f.ElementPlus,f.ElementPlus,f.ElementPlus,f.ElementPlus,f.ElementPlus,f.ElementPlusIconsVue,f.ElementPlus,f.ElementPlus,f.ElementPlus,f.ElementPlus,f.mitt,f.mqtt))})(this,function(f,x,P,C,bt,wt,e,Ct,kt,Bt,Q,xt,Vt,Et,_t,St,Dt,G,Tt,$t,Pt,Nt,te,ae){"use strict";var gt=Object.defineProperty;var yt=(f,x,P)=>x in f?gt(f,x,{enumerable:!0,configurable:!0,writable:!0,value:P}):f[x]=P;var b=(f,x,P)=>yt(f,typeof x!="symbol"?x+"":x,P);const oe=e.defineComponent({__name:"UInput",props:{fieldLabel:{},labelPosition:{default:"top"},labelWidth:{},labelAlign:{},required:{type:Boolean},modelValue:{},outlined:{type:Boolean},dense:{type:Boolean},filled:{type:Boolean},borderless:{type:Boolean},label:{},hint:{},error:{type:Boolean},errorMessage:{},type:{},placeholder:{},disable:{type:Boolean},readonly:{type:Boolean},prefix:{},suffix:{},mask:{},maxlength:{}},emits:["update:modelValue"],setup(o,{emit:a}){const t=o,l=a,r=e.computed(()=>{const m={};return t.labelPosition==="left"&&t.labelWidth&&(m.width=typeof t.labelWidth=="number"?`${t.labelWidth}px`:t.labelWidth),t.labelAlign&&(m.textAlign=t.labelAlign),m}),d=e.computed(()=>({"u-input-label-left":t.labelPosition==="left","u-input-label-top":t.labelPosition==="top"})),n={onInput(m){l("update:modelValue",m)}};return(m,i)=>{const c=C.ElInput;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-input",d.value])},[o.fieldLabel?(e.openBlock(),e.createElementBlock("div",{key:0,class:"u-input-label",style:e.normalizeStyle(r.value)},[e.createTextVNode(e.toDisplayString(o.fieldLabel)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["required-star",{"required-star--visible":o.required}])},"*",2)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["u-input-field",{"u-input-field--top":o.labelPosition==="top"}])},[e.createVNode(c,{"model-value":o.modelValue,placeholder:o.placeholder,type:o.type,disabled:o.disable,readonly:o.readonly,maxlength:o.maxlength,"onUpdate:modelValue":n.onInput},null,8,["model-value","placeholder","type","disabled","readonly","maxlength","onUpdate:modelValue"])],2)],2)}}}),k=(o,a)=>{const t=o.__vccOpts||o;for(const[l,r]of a)t[l]=r;return t},S=k(oe,[["__scopeId","data-v-ecf5177c"]]),le={class:"u-input-number-field"},L=k(e.defineComponent({__name:"UInputNumber",props:{fieldLabel:{},labelPosition:{default:"top"},labelWidth:{},labelAlign:{},required:{type:Boolean},modelValue:{},outlined:{type:Boolean},dense:{type:Boolean},filled:{type:Boolean},borderless:{type:Boolean},label:{},hint:{},error:{type:Boolean},errorMessage:{},type:{},placeholder:{},disable:{type:Boolean},readonly:{type:Boolean},min:{},max:{},step:{},precision:{}},emits:["update:modelValue"],setup(o,{emit:a}){const t=o,l=a,r=e.computed(()=>{const m={};return t.labelPosition==="left"&&t.labelWidth&&(m.width=typeof t.labelWidth=="number"?`${t.labelWidth}px`:t.labelWidth),t.labelAlign&&(m.textAlign=t.labelAlign),m}),d=e.computed(()=>({"u-input-number-label-left":t.labelPosition==="left","u-input-number-label-top":t.labelPosition==="top"})),n={onUpdate(m){l("update:modelValue",m===void 0?0:m)}};return(m,i)=>{const c=C.ElInputNumber;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-input-number",d.value])},[o.fieldLabel?(e.openBlock(),e.createElementBlock("div",{key:0,class:"u-input-number-label",style:e.normalizeStyle(r.value)},[e.createTextVNode(e.toDisplayString(o.fieldLabel)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["required-star",{"required-star--visible":o.required}])},"*",2)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",le,[e.createVNode(c,{"model-value":o.modelValue,placeholder:o.placeholder||"请输入数值",disabled:o.disable,min:o.min,max:o.max,step:o.step,precision:o.precision,controls:!0,"controls-position":"right",style:{width:"100%"},onChange:n.onUpdate},null,8,["model-value","placeholder","disabled","min","max","step","precision","onChange"])])],2)}}}),[["__scopeId","data-v-cb70bd5b"]]),N=Q.create({timeout:3e4,headers:{"Content-Type":"application/json"}});N.interceptors.request.use(o=>{const a=localStorage.getItem("token");return a&&(o.headers.Authorization=`Bearer ${a}`),o},o=>Promise.reject(o)),N.interceptors.response.use(o=>{const a=o.data;if(a&&typeof a=="object"&&!Array.isArray(a)){if(a.status===void 0&&a.code!==void 0){const t=a.code,l=t===0||t===200||Number(t)===0||Number(t)===200;a.status=l?200:Number(t)}if(a.status!==void 0&&a.status!==200){const t=a.message||"请求失败";return console.error("[HTTP Error]",t),Promise.reject(new Error(t))}}return o},o=>{var t,l;const a=((l=(t=o.response)==null?void 0:t.data)==null?void 0:l.message)||o.message||"请求失败";return console.error("[HTTP Error]",a),Promise.reject(o)});const V={get(o,a){return N.get(o,a).then(t=>t.data)},post(o,a,t){return N.post(o,a,t).then(l=>l.data)},instance:N},D={formCfgApi(o){return`/api/form?file-id=${o}`},dictApi(o){return`/api/dict/tree-list?dict_type=${o}&children=true`},cascaderApi(o){return`/api/dict/tree-list?dict_type=${o}&children=true`}},R={},I={};function K(o){const{children:a,...t}=o;return{label:o.label??o.dict_value??String(o.value??""),value:o.value??o.dict_code,...t}}function H(o){return Array.isArray(o)?o.map(a=>{if(!a||typeof a!="object")return a;const t=K(a),l=a.children;return Array.isArray(l)&&l.length>0&&(t.children=H(l)),t}):[]}function M(o){if(!Array.isArray(o))return[];const a=[],t=l=>{for(const r of l){if(!r||typeof r!="object")continue;const d=r.children;a.push(K(r)),Array.isArray(d)&&d.length>0&&t(d)}};return t(o),a}async function A(o){if(!o)return[];if(R[o])return R[o];if(o in I)return await I[o];const a=(async()=>{try{const t=await V.get(D.dictApi(o));if(t.status===200){const l=M(t.data);return R[o]=l,l}return[]}catch(t){return console.error(`[dict] 加载字典 ${o} 失败:`,t),[]}finally{delete I[o]}})();return I[o]=a,a}async function ne(o,a,t=""){if(a==null||a==="")return t;const l=R[o];if(l&&l.length>0)return J(l,a);const r=await A(o);return r&&r.length>0?J(r,a):t||String(a)}function J(o,a){const t=o.find(l=>l.value===a||String(l.value)===String(a));return t?t.label:String(a)}const se={class:"u-dict-field"},T=k(e.defineComponent({__name:"UDict",props:{fieldLabel:{},labelPosition:{default:"top"},labelWidth:{},labelAlign:{},required:{type:Boolean},modelValue:{},outlined:{type:Boolean},dense:{type:Boolean},filled:{type:Boolean},borderless:{type:Boolean},label:{},hint:{},error:{type:Boolean},errorMessage:{},type:{},placeholder:{},disable:{type:Boolean},readonly:{type:Boolean},dictType:{}},emits:["update:modelValue"],setup(o,{emit:a}){const t=o,l=a,r=e.reactive({excluded:["fieldLabel","labelPosition","labelWidth","labelAlign","required","modelValue","dictType"],options:[],loading:!1}),d=async()=>{if(t.dictType){r.loading=!0;try{const c=await V.get(D.dictApi(t.dictType));c.status===200?r.options=M(c.data):(console.error("[UDict] 请求失败:",c.message),r.options=[])}catch(c){console.error("[UDict] 加载字典失败:",c),r.options=[]}finally{r.loading=!1}}};e.watch(()=>t.dictType,()=>{d()},{immediate:!0});const n=e.computed(()=>{const c={};return t.labelPosition==="left"&&t.labelWidth&&(c.width=typeof t.labelWidth=="number"?`${t.labelWidth}px`:t.labelWidth),t.labelAlign&&(c.textAlign=t.labelAlign),c}),m=e.computed(()=>({"u-dict-label-left":t.labelPosition==="left","u-dict-label-top":t.labelPosition==="top"})),i={onUpdate(c){l("update:modelValue",c)}};return(c,s)=>{const u=C.ElOption,p=C.ElSelect;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-dict",m.value])},[o.fieldLabel?(e.openBlock(),e.createElementBlock("div",{key:0,class:"u-dict-label",style:e.normalizeStyle(n.value)},[e.createTextVNode(e.toDisplayString(o.fieldLabel)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["required-star",{"required-star--visible":o.required}])},"*",2)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",se,[e.createVNode(p,{"model-value":o.modelValue,placeholder:o.placeholder||"请选择",loading:r.loading,disabled:o.disable,style:{width:"100%"},onChange:i.onUpdate},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.options,g=>(e.openBlock(),e.createBlock(u,{key:g.value,label:g.label,value:g.value},null,8,["label","value"]))),128))]),_:1},8,["model-value","placeholder","loading","disabled","onChange"])])],2)}}}),[["__scopeId","data-v-239bb25f"]]),ie={class:"u-toggle-field"},W=k(e.defineComponent({__name:"UToggle",props:{fieldLabel:{},labelPosition:{default:"left"},labelWidth:{},labelAlign:{},required:{type:Boolean},modelValue:{},dense:{type:Boolean,default:!0},color:{},trueValue:{default:!0},falseValue:{default:!1},label:{},hint:{},disable:{type:Boolean},readonly:{type:Boolean},activeText:{},inactiveText:{},activeColor:{},inactiveColor:{}},emits:["update:modelValue"],setup(o,{emit:a}){const t=o,l=a,r=e.reactive({excluded:["fieldLabel","labelPosition","labelWidth","labelAlign","required","modelValue","trueValue","falseValue","activeText","inactiveText","activeColor","inactiveColor"]}),d=()=>{const i={};return t.labelPosition==="left"&&t.labelWidth&&(i.width=typeof t.labelWidth=="number"?`${t.labelWidth}px`:t.labelWidth),t.labelAlign&&(i.textAlign=t.labelAlign),i},n=e.computed({get:()=>t.modelValue===t.trueValue,set:i=>{l("update:modelValue",i?t.trueValue:t.falseValue)}}),m=e.computed(()=>{const i={};for(const c in t)!r.excluded.includes(c)&&c!=="modelValue"&&(i[c]=t[c]);return i});return(i,c)=>{const s=C.ElSwitch;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-toggle",{"u-toggle-label-left":o.labelPosition==="left"}])},[o.fieldLabel?(e.openBlock(),e.createElementBlock("div",{key:0,class:"u-toggle-label",style:e.normalizeStyle(d())},[e.createTextVNode(e.toDisplayString(o.fieldLabel)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["required-star",{"required-star--visible":o.required}])},"*",2)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",ie,[e.createVNode(s,e.mergeProps({modelValue:n.value,"onUpdate:modelValue":c[0]||(c[0]=u=>n.value=u)},m.value,{"active-text":o.activeText,"inactive-text":o.inactiveText,"active-color":o.activeColor,"inactive-color":o.inactiveColor}),null,16,["modelValue","active-text","inactive-text","active-color","inactive-color"])])],2)}}}),[["__scopeId","data-v-94c1fd38"]]),re={class:"u-cascader-levels"},O=k(e.defineComponent({__name:"UCascader",props:{fieldLabel:{},labelPosition:{default:"top"},labelWidth:{},labelAlign:{},required:{type:Boolean},modelValue:{},options:{},depth:{default:1}},emits:["update:modelValue"],setup(o,{emit:a}){const t=o,l=a,r=()=>{const i={};return t.labelPosition==="left"&&t.labelWidth&&(i.width=typeof t.labelWidth=="number"?`${t.labelWidth}px`:t.labelWidth),t.labelAlign&&(i.textAlign=t.labelAlign),i},d=e.ref([]),n=e.computed(()=>{const i=[];let c=t.options||[];for(let s=0;s<t.depth;s++)if(i.push(c),d.value[s]!==void 0){const u=c.find(p=>p.value===d.value[s]);u&&u.children?c=u.children:c=[]}else c=[];return i});e.watch(()=>t.modelValue,i=>{i!=null?d.value=Array.isArray(i)?i:[i]:d.value=[]},{immediate:!0});const m=(i,c)=>{d.value[i]=c;for(let u=i+1;u<t.depth;u++)d.value[u]=void 0;const s=d.value.filter(u=>u!==void 0);l("update:modelValue",s)};return(i,c)=>{const s=C.ElOption,u=C.ElSelect;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-cascader",{"u-cascader-label-left":o.labelPosition==="left"}])},[o.fieldLabel?(e.openBlock(),e.createElementBlock("div",{key:0,class:"u-cascader-label",style:e.normalizeStyle(r())},[e.createTextVNode(e.toDisplayString(o.fieldLabel)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["required-star",{"required-star--visible":o.required}])},"*",2)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",re,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.depth,p=>(e.openBlock(),e.createElementBlock("div",{key:p-1,class:"u-cascader-level"},[e.createVNode(u,{"model-value":d.value[p-1],options:n.value[p-1]||[],disabled:p>1&&d.value[p-2]===void 0,placeholder:`请选择${p}级`,style:{width:"100%"},onChange:g=>m(p-1,g)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value[p-1]||[],g=>(e.openBlock(),e.createBlock(s,{key:g.value,label:g.label,value:g.value},null,8,["label","value"]))),128))]),_:2},1032,["model-value","options","disabled","placeholder","onChange"])]))),128))])],2)}}}),[["__scopeId","data-v-d66c339c"]]),ce={class:"u-date-field"},U=k(e.defineComponent({__name:"UDate",props:{fieldLabel:{},labelPosition:{default:"top"},labelWidth:{},labelAlign:{},required:{type:Boolean},modelValue:{},mode:{default:"single"},locale:{default:"zh-CN"},mask:{default:"YYYY-MM-DD"},min:{},max:{}},emits:["update:modelValue"],setup(o,{emit:a}){const t=o,l=a,r=()=>{const i={};return t.labelPosition==="left"&&t.labelWidth&&(i.width=typeof t.labelWidth=="number"?`${t.labelWidth}px`:t.labelWidth),t.labelAlign&&(i.textAlign=t.labelAlign),i},d=e.ref("");e.watch(()=>t.modelValue,i=>{t.mode==="single"?d.value=i||"":t.mode==="multiple"?d.value=Array.isArray(i)?i:i?[i]:[]:t.mode==="range"&&(i&&typeof i=="object"&&i.from&&i.to?d.value=[i.from,i.to]:d.value=[])},{immediate:!0});const n=i=>{i&&(t.mode==="single"||t.mode==="multiple"?l("update:modelValue",i):t.mode==="range"&&i&&i.length===2&&l("update:modelValue",{from:i[0],to:i[1]}))},m=e.computed(()=>t.mode==="range"?"daterange":t.mode==="multiple"?"dates":"date");return(i,c)=>{const s=C.ElDatePicker;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-date",{"u-date-label-left":o.labelPosition==="left"}])},[o.fieldLabel?(e.openBlock(),e.createElementBlock("div",{key:0,class:"u-date-label",style:e.normalizeStyle(r())},[e.createTextVNode(e.toDisplayString(o.fieldLabel)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["required-star",{"required-star--visible":o.required}])},"*",2)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",ce,[e.createVNode(s,{modelValue:d.value,"onUpdate:modelValue":c[0]||(c[0]=u=>d.value=u),type:m.value,placeholder:o.locale==="en-US"?"Select date":"选择日期","range-separator":o.locale==="en-US"?"to":"至","start-placeholder":o.locale==="en-US"?"Start date":"开始日期","end-placeholder":o.locale==="en-US"?"End date":"结束日期",format:o.mask.replace("YYYY","YYYY").replace("MM","MM").replace("DD","DD"),"value-format":o.mask.replace("YYYY","YYYY").replace("MM","MM").replace("DD","DD"),onChange:n},null,8,["modelValue","type","placeholder","range-separator","start-placeholder","end-placeholder","format","value-format"])])],2)}}}),[["__scopeId","data-v-9cd05064"]]),de={key:0,class:"form-content"},me={key:1,class:"form-layout"},ue={key:0,class:"form-header"},pe={class:"title"},fe={class:"form-body"},he={key:1,class:"form-footer"},ge=k(e.defineComponent({__name:"FormContainer",props:{visible:{type:Boolean},layout:{},title:{},loading:{type:Boolean,default:!1}},emits:["update:visible","close"],setup(o,{emit:a}){const t=o,l=a,{visible:r}=e.toRefs(t),d=e.computed(()=>t.layout.open==="normal"),n=e.computed(()=>t.layout.width||400),m={handleClose(){l("update:visible",!1),l("close")},updateVisible(i){l("update:visible",i)}};return(i,c)=>{const s=C.ElIcon,u=C.ElDialog;return d.value?e.unref(r)?(e.openBlock(),e.createElementBlock("div",me,[o.title?(e.openBlock(),e.createElementBlock("div",ue,[e.createElementVNode("div",pe,e.toDisplayString(o.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",fe,[o.loading?(e.openBlock(),e.createBlock(s,{key:0,class:"is-loading",size:40},{default:e.withCtx(()=>[e.createVNode(e.unref(G.Loading))]),_:1})):e.renderSlot(i.$slots,"default",{},void 0,!0,1)]),i.$slots.actions?(e.openBlock(),e.createElementBlock("div",he,[e.renderSlot(i.$slots,"actions",{},void 0,!0)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(u,{key:0,"model-value":e.unref(r),title:o.title,width:n.value,"close-on-click-modal":!1,"onUpdate:modelValue":m.updateVisible,onClose:m.handleClose},{footer:e.withCtx(()=>[e.renderSlot(i.$slots,"actions",{},void 0,!0)]),default:e.withCtx(()=>[e.unref(r)?(e.openBlock(),e.createElementBlock("div",de,[o.loading?(e.openBlock(),e.createBlock(s,{key:0,class:"is-loading",size:40},{default:e.withCtx(()=>[e.createVNode(e.unref(G.Loading))]),_:1})):e.renderSlot(i.$slots,"default",{},void 0,!0,1)])):e.createCommentVNode("",!0)]),_:3},8,["model-value","title","width","onUpdate:modelValue","onClose"]))}}}),[["__scopeId","data-v-7e522999"]]),ye=k(e.defineComponent({__name:"FormGrid",props:{fields:{},layout:{}},setup(o){const a=o,t=e.reactive({columns:e.computed(()=>a.layout.columns||1)}),l={getColSpan(r){const d=r.colSpan||1;return Math.min(d,t.columns)}};return(r,d)=>(e.openBlock(),e.createElementBlock("div",{class:"form-grid",style:e.normalizeStyle({"--grid-columns":t.columns})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.fields,n=>(e.openBlock(),e.createElementBlock("div",{key:n.field,class:"form-grid-item",style:e.normalizeStyle({gridColumn:`span ${l.getColSpan(n)}`})},[e.renderSlot(r.$slots,"default",{field:n},void 0,!0)],4))),128))],4))}}),[["__scopeId","data-v-90ed35a4"]]),be={class:"form-field"},we=k(e.defineComponent({__name:"FormField",props:{field:{},modelValue:{},layout:{},disabled:{type:Boolean,default:!1},error:{}},emits:["update:modelValue"],setup(o,{emit:a}){const t=o,l=a,r=e.reactive({componentMap:e.markRaw({input:S,"input-number":L,dict:T,switch:W,cascader:O,date:U}),cascaderOptions:[]}),d=()=>{t.field.cascaderKey&&V.get(D.cascaderApi(t.field.cascaderKey)).then(s=>{s.status===200&&(r.cascaderOptions=H(s.data))})};e.watch(()=>t.field.cascaderKey,d,{immediate:!0});const n=e.computed(()=>r.componentMap[t.field.type]||S),m=e.computed(()=>{if((t.layout.labelPosition||"top")==="left"){const u=t.layout.labelWidth||0,p=typeof u=="number"?u+4:u;return{marginLeft:typeof p=="number"?`${p}px`:p}}return{}}),i=e.computed(()=>{const{field:s,modelValue:u,layout:p,disabled:g}=t;let w=u;s.type==="switch"&&u==null&&(w=!1);const h={fieldLabel:s.label,modelValue:w,labelPosition:p.labelPosition||"top",disable:g,name:s.field,required:s.required};if(p.labelWidth&&(h.labelWidth=p.labelWidth),p.labelAlign&&(h.labelAlign=p.labelAlign),s.maxlength&&(h.maxlength=s.maxlength),s.placeholder&&(h.placeholder=s.placeholder),s.readonly&&(h.readonly=s.readonly),s.lineCount&&s.lineCount>=2?(h.type="textarea",h.rows=s.lineCount):s.inputType&&(h.type=s.inputType),s.type==="switch"&&(s.activeText&&(h.activeText=s.activeText),s.inactiveText&&(h.inactiveText=s.inactiveText),s.activeColor&&(h.activeColor=s.activeColor),s.inactiveColor&&(h.inactiveColor=s.inactiveColor),s.trueValue!==void 0&&(h.trueValue=s.trueValue),s.falseValue!==void 0&&(h.falseValue=s.falseValue)),s.dictType&&(h.dictType=s.dictType),s.cascaderKey&&(h.options=r.cascaderOptions,h.depth=s.cascaderDepth||2),s.type==="date"){s.mode&&(h.mode=s.mode),s.locale&&(h.locale=s.locale),s.format?h.mask=s.format:s.mask&&(h.mask=s.mask);const B=s.dateMin??s.min,y=s.dateMax??s.max;B!=null&&(h.min=B),y!=null&&(h.max=y)}return s.type==="input-number"&&(s.min!==void 0&&(h.min=s.min),s.max!==void 0&&(h.max=s.max),s.step&&(h.step=s.step),s.precision!==void 0&&(h.precision=s.precision)),h}),c={handleUpdate(s){l("update:modelValue",s)}};return(s,u)=>(e.openBlock(),e.createElementBlock("div",be,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.value),e.mergeProps(i.value,{"onUpdate:modelValue":c.handleUpdate}),null,16,["onUpdate:modelValue"])),e.createElementVNode("div",{class:e.normalizeClass(["field-error",{"field-error--visible":o.error}]),style:e.normalizeStyle(m.value)},e.toDisplayString(o.error||""),7)]))}}),[["__scopeId","data-v-10299c8d"]]);class Ce{constructor(){b(this,"formConfig",null);b(this,"formData",{});b(this,"loading",!1);b(this,"submitting",!1);b(this,"visible",!1);b(this,"isEditMode",!1);b(this,"errors",[]);b(this,"currentQuery",{})}}let ke=class{constructor(){b(this,"data",e.reactive(new Ce))}parseQuery(a){if(!a)return{};const t={},l=a.split("&");for(const r of l){const[d,n]=r.split("=");d&&(t[d]=n||"")}return t}async fetchFormConfig(a){const t=await V.get(D.formCfgApi(a));if(t.status!==200)throw new Error(t.message||"获取表单配置失败");return t.data}async fetchFormData(a,t){const l=t?`${a}?${t}`:a,r=await V.get(l);if(r.status!==200)throw new Error(r.message||"获取表单数据失败");return r.data}async submitForm(a,t){return await V.post(a,t)}buildInitialData(a){const t={};for(const l of a)l.default!==void 0?t[l.field]=l.default:t[l.field]=null;return t}checkIsEditMode(a){return!!a&&a.trim().length>0}validate(){var t;this.data.errors=[];const a=((t=this.data.formConfig)==null?void 0:t.fields)||[];for(const l of a){const r=this.data.formData[l.field];if(l.required&&(r==null||r==="")){this.data.errors.push({field:l.field,message:`${l.label}为必填项`});continue}if(l.rules&&l.rules.length>0&&r){for(const d of l.rules)if(d.pattern&&!new RegExp(d.pattern).test(r)){this.data.errors.push({field:l.field,message:d.message||`${l.label}格式不正确`});break}}}return this.data.errors.length===0}getFieldError(a){const t=this.data.errors.find(l=>l.field===a);return t?t.message:null}clearErrors(){this.data&&(this.data.errors=[])}async openForm(a,t){this.data.loading=!0,this.data.visible=!0,this.clearErrors(),this.data.currentQuery=this.parseQuery(t||"");try{const l=await this.fetchFormConfig(a);if(this.data.formConfig=l,this.data.isEditMode=this.checkIsEditMode(t||""),this.data.formData=this.buildInitialData(l.fields),this.data.isEditMode&&l.api.get&&t){const r=await this.fetchFormData(l.api.get,t),d=this.nestedToFlat(r);this.data.formData={...this.data.formData,...d}}}catch(l){throw console.error("[FormRender] 打开表单失败:",l),this.data.visible=!1,l}finally{this.data.loading=!1}}async doSubmit(){if(!this.data.formConfig)return;if(!this.validate())throw new Error("请完善表单信息");const{api:a}=this.data.formConfig;let t=this.data.isEditMode?a.edit:a.add;if(!t)throw new Error("提交地址未配置");let l={...this.data.formData};l=this.flattenToNested(l),this.data.isEditMode&&this.data.currentQuery.id&&(l.id=Number(this.data.currentQuery.id)),this.data.submitting=!0;try{const r=await this.submitForm(t,l);if(r.status===200)return r.data;throw new Error(r.message||"提交失败")}finally{this.data.submitting=!1}}closeForm(){this&&(this.data.visible=!1,this.data.formConfig=null,this.data.formData={},this.data.isEditMode=!1,this.data.currentQuery={},this.clearErrors())}flattenToNested(a){const t={};for(const l in a){const r=a[l];if(l.includes(".")){const d=l.split(".");let n=t;for(let m=0;m<d.length-1;m++){const i=d[m];n[i]||(n[i]={}),n=n[i]}n[d[d.length-1]]=r}else t[l]=r}return t}nestedToFlat(a,t=""){const l={};for(const r in a){const d=a[r],n=t?`${t}.${r}`:r;d&&typeof d=="object"&&!Array.isArray(d)?Object.keys(d).length===2&&"from"in d&&"to"in d?l[n]=d:Object.assign(l,this.nestedToFlat(d,n)):l[n]=d}return l}};function $(o,a="info"){x.ElMessage({message:o,type:a,duration:1e3,showClose:!1})}function E(o){x.ElMessage({message:o,type:"error",duration:2e3,showClose:!1})}function Be(o){$(o,"success")}function xe(o){$(o,"error")}function Ve(o){$(o,"warning")}function Ee(o){$(o,"info")}const _={notify:$,success:Be,error:xe,warning:Ve,info:Ee,alertError:E},j=k(e.defineComponent({__name:"FormRender",setup(o,{expose:a}){const t=new ke,l=e.ref(null),r=e.reactive({currentQuery:{},submitResolve:null}),d=e.computed(()=>{var g;const p={};if(!t.data.isEditMode||!r.currentQuery)return p;for(const w of((g=t.data.formConfig)==null?void 0:g.fields)||[])r.currentQuery[w.field]!==void 0&&(p[w.field]=!0);return p}),n=e.computed(()=>{var p;return((p=t.data.formConfig)==null?void 0:p.layout)||{open:"dialog",columns:1,labelPosition:"top",buttonAlign:"right"}}),m=e.computed(()=>{var p;return((p=t.data.formConfig)==null?void 0:p.fields)||[]}),i=e.computed(()=>{var p,g;return((g=(p=t.data.formConfig)==null?void 0:p.meta)==null?void 0:g.title)||"表单"}),c=e.computed(()=>n.value.buttonAlign||"right"),s=e.computed(()=>n.value.open==="normal"),u={async showForm(p,g){r.currentQuery=t.parseQuery(g||"");try{await t.openForm(p,g)}catch(w){return E((w==null?void 0:w.message)||"打开表单失败"),null}return new Promise(w=>{r.submitResolve=w})},async handleSubmit(){var p,g;try{const w=await t.doSubmit(),h=((g=(p=t.data.formConfig)==null?void 0:p.meta)==null?void 0:g.title)+"保存成功";return _.success(h),r.submitResolve&&(r.submitResolve(w),r.submitResolve=null),s.value||t.closeForm(),w}catch(w){return r.submitResolve&&(r.submitResolve(null),r.submitResolve=null),w!=null&&w.message&&w.message!=="请完善表单信息"&&E(w.message),null}},handleCancel(){s.value||t.closeForm()},getFieldError(p){return t.getFieldError(p)},handleClose(){t.closeForm()}};return a({showForm:u.showForm}),(p,g)=>{const w=C.ElForm,h=C.ElButton;return e.openBlock(),e.createBlock(ge,{visible:e.unref(t).data.visible,"onUpdate:visible":g[0]||(g[0]=B=>e.unref(t).data.visible=B),layout:n.value,title:i.value,loading:e.unref(t).data.loading,onClose:u.handleClose},{actions:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(["form-actions",c.value==="right"?"justify-end":"justify-start"])},[e.createVNode(h,{onClick:u.handleCancel},{default:e.withCtx(()=>[...g[1]||(g[1]=[e.createTextVNode("取消",-1)])]),_:1},8,["onClick"]),e.createVNode(h,{type:"primary",loading:e.unref(t).data.submitting,onClick:u.handleSubmit},{default:e.withCtx(()=>[...g[2]||(g[2]=[e.createTextVNode("提交",-1)])]),_:1},8,["loading","onClick"])],2)]),default:e.withCtx(()=>[e.createVNode(w,{ref_key:"formRef",ref:l,class:"form-render","label-position":"top"},{default:e.withCtx(()=>[e.createVNode(ye,{fields:m.value,layout:n.value},{default:e.withCtx(({field:B})=>[e.createVNode(we,{modelValue:e.unref(t).data.formData[B.field],"onUpdate:modelValue":y=>e.unref(t).data.formData[B.field]=y,field:B,layout:n.value,disabled:d.value[B.field],error:u.getFieldError(B.field)},null,8,["modelValue","onUpdate:modelValue","field","layout","disabled","error"])]),_:1},8,["fields","layout"])]),_:1},512)]),_:1},8,["visible","layout","title","loading","onClose"])}}}),[["__scopeId","data-v-378d04bd"]]);class _e{constructor(a){this.config=a}async fetchList(a,t){const l={page:t.page,pageSize:t.pageSize,...a},r={};for(const i in l){const c=l[i];c!==""&&c!==null&&c!==void 0&&(r[i]=c)}const d=new URLSearchParams;for(const i in r)d.append(i,String(r[i]));const n=`${this.config.api.list}${d.toString()?"?"+d.toString():""}`,m=await V.get(n);if(m.status===200){const i=m.data;return Array.isArray(i)?{rows:i,total:i.length}:i||{rows:[],total:0}}throw new Error(m.message||"获取列表数据失败")}async deleteRow(a){if(!this.config.api.delete)throw new Error("未配置删除API");const t=this.config.key||"id",l=a[t],r=`${this.config.api.delete}?id=${l}`,d=await V.post(r);if(d.status!==200)throw new Error(d.message||"删除失败")}async batchDelete(a){if(!this.config.api.delete)throw new Error("未配置删除API");const t=await V.post(this.config.api.delete,a);if(t.status!==200)throw new Error(t.message||"批量删除失败")}async exportData(a){if(!this.config.api.export)throw new Error("未配置导出API");const l=(await V.post(this.config.api.export,a,{responseType:"blob"})).data,r=window.URL.createObjectURL(l),d=document.createElement("a");d.href=r,d.download=`export_${Date.now()}.xlsx`,d.click(),window.URL.revokeObjectURL(r)}async downloadTemplate(){if(!this.config.api.import)throw new Error("未配置导入API");const t=(await V.get(`${this.config.api.import}/template`,{responseType:"blob"})).data,l=window.URL.createObjectURL(t),r=document.createElement("a");r.href=l,r.download=`template_${Date.now()}.xlsx`,r.click(),window.URL.revokeObjectURL(l)}async importData(a){if(!this.config.api.import)throw new Error("未配置导入API");const t=new FormData;t.append("file",a);const l=await V.post(this.config.api.import,t,{headers:{"Content-Type":"multipart/form-data"}});if(l.status!==200)throw new Error(l.message||"导入失败");return l.data}}class Se{constructor(){b(this,"tableConfig",null);b(this,"rows",[]);b(this,"total",0);b(this,"loading",!1);b(this,"searchParams",{});b(this,"pagination",{page:1,pageSize:20});b(this,"selectedRows",[]);b(this,"detailVisible",!1);b(this,"detailData",null);b(this,"detailLoading",!1)}}let De=class{constructor(){b(this,"data",e.reactive(new Se));b(this,"dataService",null)}async loadConfig(a){var r;const t=D.formCfgApi(a);console.log("load config url =",t);const l=await V.get(t);if(console.log("---"),l.status!==200)throw new Error(l.message||"获取表格配置失败");this.data.tableConfig=l.data,this.dataService=new _e(l.data),typeof console<"u"&&console.log("[TableRender] loadConfig:",{tableId:a,hasDetail:this.hasDetail(),detail:(r=this.data.tableConfig)==null?void 0:r.detail}),this.initSearchParams()}initSearchParams(){var l;const a={},t=((l=this.data.tableConfig)==null?void 0:l.search)||[];for(const r of t)a[r.field]="";this.data.searchParams=a}async loadData(){if(!this.dataService)throw new Error("表格配置未加载");this.data.loading=!0;try{const a=await this.dataService.fetchList(this.data.searchParams,this.data.pagination);this.data.rows=a.rows||[],this.data.total=a.total||0}finally{this.data.loading=!1}}async search(){this.data.pagination.page=1,await this.loadData()}async reset(){this.initSearchParams(),this.data.pagination.page=1,await this.loadData()}updateSearchParam(a,t){this.data.searchParams[a]=t}async deleteRow(a){if(!this.dataService)throw new Error("表格配置未加载");await this.dataService.deleteRow(a),await this.loadData()}async batchDelete(){if(!this.dataService)throw new Error("表格配置未加载");if(this.data.selectedRows.length===0)throw new Error("请选择要删除的数据");await this.dataService.batchDelete(this.data.selectedRows),this.data.selectedRows=[],await this.loadData()}async changePage(a){this.data.pagination.page=a,await this.loadData()}async changePageSize(a){this.data.pagination.pageSize=a,this.data.pagination.page=1,await this.loadData()}updateSelection(a){this.data.selectedRows=a}async exportData(){if(!this.dataService)throw new Error("表格配置未加载");await this.dataService.exportData(this.data.searchParams)}async downloadTemplate(){if(!this.dataService)throw new Error("表格配置未加载");await this.dataService.downloadTemplate()}async importData(a){if(!this.dataService)throw new Error("表格配置未加载");const t=await this.dataService.importData(a);return await this.loadData(),t}getKeyField(){var a;return((a=this.data.tableConfig)==null?void 0:a.key)||"id"}getFormId(){var a;return(a=this.data.tableConfig)==null?void 0:a.form}getDetailFormId(){var a,t;return(t=(a=this.data.tableConfig)==null?void 0:a.detail)==null?void 0:t.formId}hasDetail(){var t;const a=(t=this.data.tableConfig)==null?void 0:t.detail;return!!(a&&typeof a=="object"&&(a.formId||a.position))}openDetail(a){this.data.detailData=a,this.data.detailVisible=!0}closeDetail(){this.data.detailVisible=!1}showSelection(){var t;const a=(t=this.data.tableConfig)==null?void 0:t.toolbar;return a?a.some(l=>l.type==="edit"||l.type==="delete"):!1}getSearchFields(){var a;return((a=this.data.tableConfig)==null?void 0:a.search)||[]}getColumns(){var a;return((a=this.data.tableConfig)==null?void 0:a.columns)||[]}getToolbar(){var a;return((a=this.data.tableConfig)==null?void 0:a.toolbar)||[]}getActions(){var a;return(a=this.data.tableConfig)==null?void 0:a.actions}getPaginationType(){var a;return((a=this.data.tableConfig)==null?void 0:a.pagination)||"page"}};const Te={class:"table-search"},$e={class:"search-fields"},Pe={class:"search-actions"},Ne=k(e.defineComponent({__name:"TableSearch",props:{fields:{},modelValue:{}},emits:["update:modelValue","search","reset"],setup(o,{emit:a}){const t=o,l=a,r={input:S,dict:T,dept:T,role:T,date:U,daterange:U},d={getComponent(n){return r[n]||S},updateValue(n,m){const i={...t.modelValue,[n]:m};l("update:modelValue",i)},handleSearch(){const n={};for(const m in t.modelValue){const i=t.modelValue[m];n[m]=typeof i=="string"?i.trim():i}l("update:modelValue",n),l("search")},handleReset(){l("reset")}};return(n,m)=>{const i=C.ElButton;return e.openBlock(),e.createElementBlock("div",Te,[e.createElementVNode("div",$e,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.fields,c=>(e.openBlock(),e.createElementBlock("div",{key:c.field,class:"search-field"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d.getComponent(c.type)),{"model-value":t.modelValue[c.field],"field-label":c.label,"dict-type":c.dictType,mode:c.type==="daterange"?"range":void 0,"label-position":"left","onUpdate:modelValue":s=>d.updateValue(c.field,s)},null,8,["model-value","field-label","dict-type","mode","onUpdate:modelValue"]))]))),128))]),e.createElementVNode("div",Pe,[e.createVNode(i,{type:"primary",onClick:d.handleSearch},{default:e.withCtx(()=>[...m[0]||(m[0]=[e.createTextVNode("查询",-1)])]),_:1},8,["onClick"]),e.createVNode(i,{onClick:d.handleReset},{default:e.withCtx(()=>[...m[1]||(m[1]=[e.createTextVNode("重置",-1)])]),_:1},8,["onClick"])])])}}}),[["__scopeId","data-v-68dd4c13"]]),Ue={class:"table-toolbar"},Re={class:"toolbar-left"},Ie=k(e.defineComponent({__name:"TableToolbar",props:{toolbar:{},actions:{},formId:{},apiDelete:{},selectedCount:{}},emits:["create","import","export","batchEdit","batchDelete","custom"],setup(o,{emit:a}){const t=o,l=a,r=e.computed(()=>({showEdit:!!t.formId&&(!t.actions||t.actions.edit!==!1),showDelete:!!t.apiDelete&&(!t.actions||t.actions.delete!==!1)})),d={isBuiltin(n){return typeof n=="string"||n.type!==void 0},getButtonProps(n){return typeof n=="string"?{type:n}:n},isDisabled(n){const m=d.getButtonProps(n);return m.type==="edit"||m.type==="delete"?t.selectedCount===0:!1},shouldShow(n){const m=d.getButtonProps(n);return m.type==="create"&&t.formId||m.type==="edit"&&r.value.showEdit||m.type==="delete"&&r.value.showDelete?!0:m.type==="import"||m.type==="export"?!1:!d.isBuiltin(n)},handleClick(n){switch(d.getButtonProps(n).type){case"create":l("create");break;case"import":l("import");break;case"export":l("export");break;case"edit":l("batchEdit");break;case"delete":l("batchDelete");break;default:l("custom",n)}},getButtonText(n){const m=d.getButtonProps(n);if(m.text)return m.text;switch(m.type){case"create":return"新增";case"import":return"导入";case"export":return"导出";case"edit":return"编辑";case"delete":return"删除";default:return""}},getButtonIcon(n){return d.getButtonProps(n).icon},isPrimary(n){return d.getButtonProps(n).primary===!0}};return(n,m)=>{const i=C.ElButton;return e.openBlock(),e.createElementBlock("div",Ue,[e.createElementVNode("div",Re,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.toolbar,(c,s)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s},[d.shouldShow(c)?(e.openBlock(),e.createBlock(i,{key:0,type:d.isPrimary(c)?"primary":"default",disabled:d.isDisabled(c),onClick:u=>d.handleClick(c)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.getButtonText(c)),1)]),_:2},1032,["type","disabled","onClick"])):e.createCommentVNode("",!0)],64))),128))])])}}}),[["__scopeId","data-v-a7c06f8c"]]),Ae=k(e.defineComponent({__name:"UInputShow",props:{modelValue:{},multiline:{type:Boolean,default:!1},maxLines:{default:0}},setup(o){const a=o,t=e.computed(()=>a.modelValue===null||a.modelValue===void 0?"":String(a.modelValue)),l=e.computed(()=>a.multiline||t.value.includes(`
|
|
2
|
-
`)),r=e.computed(()=>a.maxLines>0&&l.value?{display:"-webkit-box",WebkitLineClamp:a.maxLines,WebkitBoxOrient:"vertical",overflow:"hidden",textOverflow:"ellipsis"}:{});return(d,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-input-show",{"u-input-multiline":l.value}]),style:e.normalizeStyle(r.value)},e.toDisplayString(t.value),7))}}),[["__scopeId","data-v-c78b151e"]]),Fe=k(e.defineComponent({__name:"UDictShow",props:{modelValue:{},dictType:{},defaultText:{default:""}},setup(o){const a=o,t=e.ref(""),l=e.ref(!1),r=async()=>{if(a.modelValue===null||a.modelValue===void 0||a.modelValue===""){t.value=a.defaultText;return}if(!a.dictType){t.value=String(a.modelValue);return}l.value=!0;try{const d=await ne(a.dictType,a.modelValue,a.defaultText);t.value=d}catch(d){console.error("[UDictShow] 翻译失败:",d),t.value=String(a.modelValue)}finally{l.value=!1}};return e.watch(()=>a.modelValue,r,{immediate:!0}),e.watch(()=>a.dictType,()=>{a.dictType&&A(a.dictType).then(()=>r())}),e.onMounted(()=>{a.dictType?A(a.dictType).then(()=>r()):r()}),(d,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-dict-show",{"u-dict-loading":l.value}])},e.toDisplayString(t.value),3))}}),[["__scopeId","data-v-908045c4"]]),qe=k(e.defineComponent({__name:"UToggleShow",props:{modelValue:{},trueText:{default:"开启"},falseText:{default:"关闭"},useYesNo:{type:Boolean,default:!1}},setup(o){const a=o,t=e.computed(()=>a.useYesNo?"是":a.trueText),l=e.computed(()=>a.useYesNo?"否":a.falseText),r=e.computed(()=>a.modelValue===!0||a.modelValue==="true"?t.value:a.modelValue===!1||a.modelValue==="false"?l.value:String(a.modelValue??"")),d=e.computed(()=>a.modelValue===!0||a.modelValue==="true"?"toggle-true":a.modelValue===!1||a.modelValue==="false"?"toggle-false":"toggle-default");return(n,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-toggle-show",d.value])},e.toDisplayString(r.value),3))}}),[["__scopeId","data-v-bac05efc"]]),ze=k(e.defineComponent({__name:"UCascaderShow",props:{modelValue:{},cascaderKey:{},separator:{default:" / "},showRawValue:{type:Boolean,default:!0}},setup(o){const a=o,t=e.ref(""),l=e.ref(!1),r=async()=>{if(!a.modelValue||!Array.isArray(a.modelValue)){t.value="";return}const d=a.modelValue;if(a.cascaderKey){l.value=!0;try{const n=await A(a.cascaderKey),i=d.map(c=>{const s=n.find(u=>u.value===c||String(u.value)===String(c));return s?s.label:a.showRawValue?String(c):""}).filter(c=>c!=="");t.value=i.join(a.separator)}catch(n){console.error("[UCascaderShow] 翻译失败:",n),t.value=a.showRawValue?d.join(a.separator):""}finally{l.value=!1}}else t.value=d.join(a.separator)};return e.watch(()=>a.modelValue,r,{immediate:!0}),e.onMounted(()=>{r()}),(d,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-cascader-show",{"u-cascader-loading":l.value}])},e.toDisplayString(t.value),3))}}),[["__scopeId","data-v-5d84df67"]]),Le=k(e.defineComponent({__name:"UDateShow",props:{modelValue:{},mode:{default:"single"},locale:{default:"zh-CN"},format:{},separator:{default:", "},rangeSeparator:{default:" ~ "}},setup(o){const a=o,t=e.computed(()=>a.locale==="en-US"?a.mode==="range"?" - ":", ":a.mode==="range"?a.rangeSeparator:a.separator),l=e.computed(()=>{const n=a.modelValue;return a.mode==="single"?n?r(n,a.format):"":a.mode==="multiple"?n?Array.isArray(n)?n.map(m=>r(m,a.format)).join(t.value):String(n):"":a.mode==="range"?n?typeof n=="object"&&n.from&&n.to?`${r(n.from,a.format)}${t.value}${r(n.to,a.format)}`:Array.isArray(n)&&n.length>=2?`${r(n[0],a.format)}${t.value}${r(n[1],a.format)}`:String(n):"":String(n??"")});function r(n,m){return n||""}const d=e.computed(()=>!l.value);return(n,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-date-show",{"u-date-empty":d.value}])},e.toDisplayString(l.value||(o.locale==="en-US"?"Empty":"暂无")),3))}}),[["__scopeId","data-v-930657df"]]),F=k(e.defineComponent({__name:"UFieldView",props:{type:{default:"text"},modelValue:{},dictType:{},mode:{},locale:{default:"zh-CN"},format:{},text:{},trueText:{default:"开启"},falseText:{default:"关闭"},useYesNo:{type:Boolean,default:!1},cascaderKey:{},multiline:{type:Boolean},defaultText:{default:""}},setup(o){const a=o,t=e.computed(()=>{if(!a.text)return null;const n=a.text.split("/");return n.length>=2?{trueText:n[0].trim(),falseText:n[1].trim()}:null}),l=e.computed(()=>{var n;return a.trueText||((n=t.value)==null?void 0:n.trueText)||"开启"}),r=e.computed(()=>{var n;return a.falseText||((n=t.value)==null?void 0:n.falseText)||"关闭"}),d=e.computed(()=>{switch(a.type){case"dict":return"UDictShow";case"switch":return"UToggleShow";case"cascader":return"UCascaderShow";case"date":return"UDateShow";case"input":case"text":default:return"UInputShow"}});return(n,m)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d.value==="UDictShow"?Fe:d.value==="UToggleShow"?qe:d.value==="UCascaderShow"?ze:d.value==="UDateShow"?Le:Ae),{"model-value":o.modelValue,"dict-type":o.type==="dict"?o.dictType:void 0,"cascader-key":o.type==="cascader"?o.cascaderKey:void 0,mode:o.type==="date"?o.mode:void 0,locale:o.type==="date"?o.locale:void 0,format:o.type==="date"?o.format:void 0,"true-text":o.type==="switch"?l.value:void 0,"false-text":o.type==="switch"?r.value:void 0,"use-yes-no":o.type==="switch"?o.useYesNo:void 0,multiline:o.type==="input"||o.type==="text"?o.multiline:void 0,"default-text":o.type==="dict"?o.defaultText:void 0},null,8,["model-value","dict-type","cascader-key","mode","locale","format","true-text","false-text","use-yes-no","multiline","default-text"]))}}),[["__scopeId","data-v-fedb54d7"]]),Me={class:"table-grid"},We=k(e.defineComponent({__name:"TableGrid",props:{rows:{},columns:{},loading:{type:Boolean},actions:{},formId:{},apiDelete:{},keyField:{},selection:{type:[String,Boolean]},dictData:{}},emits:["selectionChange","rowEdit","rowDelete","rowClick"],setup(o,{emit:a}){const t=o,l=a,r=e.computed(()=>t.formId&&(!t.actions||t.actions.edit!==!1)),d=e.computed(()=>t.apiDelete&&(!t.actions||t.actions.delete!==!1)),n=e.computed(()=>{var s;return((s=t.actions)==null?void 0:s.edit)||"编辑"}),m=e.computed(()=>{var s;return((s=t.actions)==null?void 0:s.delete)||"删除"}),i=e.computed(()=>{const s=t.columns.map(u=>{const p={prop:u.field,label:u.label};return typeof u.width=="number"&&(p.width=u.width),p});return(r.value||d.value)&&s.push({prop:"actions",label:"操作",width:120,fixed:"right"}),s}),c={maskPhone(s){return!s||s.length<7?s:s.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2")},maskIdCard(s){return!s||s.length<8?s:s.replace(/(\d{3})\d{11}(\d{4})/,"$1***********$2")},formatMoney(s){const u=Number(s);return isNaN(u)?String(s):u.toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})},formatByType(s,u){if(!s)return"";switch(u){case"phone":return c.maskPhone(s);case"idcard":return c.maskIdCard(s);case"money":return c.formatMoney(s);case"percent":return String(s*100)+"%";default:return u&&u.includes("{}")?u.replace("{}",String(s)):String(s)}},getNestedValue(s,u){if(!u.includes("."))return s[u];const p=u.split(".");let g=s;for(const w of p)if(g&&typeof g=="object"&&w in g)g=g[w];else return;return g},useFieldView(s){return s.type?["dict","switch","cascader","date","input","text"].includes(s.type):!1},onSelectionChange(s){l("selectionChange",s)},onRowClick(s){l("rowClick",s)},onRowEdit(s){l("rowEdit",s)},onRowDelete(s){l("rowDelete",s)}};return(s,u)=>{const p=C.ElTableColumn,g=C.ElButton,w=C.ElTable;return e.openBlock(),e.createElementBlock("div",Me,[e.createVNode(w,{data:t.rows.length?t.rows:[{}],loading:t.loading,"row-key":t.keyField||"id",onSelectionChange:c.onSelectionChange,onRowClick:u[0]||(u[0]=h=>c.onRowClick(h)),stripe:"",border:""},{empty:e.withCtx(()=>[...u[1]||(u[1]=[e.createElementVNode("div",{class:"no-data"},"暂无数据",-1)])]),default:e.withCtx(()=>[t.selection?(e.openBlock(),e.createBlock(p,{key:0,type:"selection",width:"55"})):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,h=>(e.openBlock(),e.createBlock(p,{key:h.prop,prop:h.prop,label:h.label,width:h.width,fixed:h.fixed},{default:e.withCtx(({row:B})=>[h.prop==="actions"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[Object.keys(B).length>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[r.value?(e.openBlock(),e.createBlock(g,{key:0,link:"",type:"primary",size:"small",onClick:e.withModifiers(y=>c.onRowEdit(B),["stop"])},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.value),1)]),_:1},8,["onClick"])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createBlock(g,{key:1,link:"",type:"danger",size:"small",onClick:e.withModifiers(y=>c.onRowDelete(B),["stop"])},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(m.value),1)]),_:1},8,["onClick"])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[Object.keys(B).length>0?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(t.columns,y=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:y.field},[y.field===h.prop&&c.useFieldView(y)?(e.openBlock(),e.createBlock(F,{key:0,type:y.type,"model-value":c.getNestedValue(B,y.field),"dict-type":y.dictType,mode:y.mode,locale:y.locale,format:y.format,text:y.text,"true-text":y.trueText,"false-text":y.falseText,"use-yes-no":y.useYesNo,"cascader-key":y.cascaderKey,multiline:y.multiline,"default-text":y.defaultText},null,8,["type","model-value","dict-type","mode","locale","format","text","true-text","false-text","use-yes-no","cascader-key","multiline","default-text"])):y.field===h.prop?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass({"table-grid-format":y.format})},e.toDisplayString(c.formatByType(c.getNestedValue(B,y.field),y.format||"")),3)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)],64))]),_:2},1032,["prop","label","width","fixed"]))),128))]),_:1},8,["data","loading","row-key","onSelectionChange"])])}}}),[["__scopeId","data-v-60cb7136"]]),Oe={class:"table-pagination"},je={class:"page-size-select"},Ye={class:"total-text"},Qe={key:1,class:"load-more"},Ge={key:2,class:"total-text"},Ke=k(e.defineComponent({__name:"TablePagination",props:{page:{},pageSize:{},total:{},type:{}},emits:["update:page","update:pageSize"],setup(o,{emit:a}){const t=o,l=a,r=e.computed(()=>({totalPages:Math.ceil(t.total/t.pageSize),showPagination:t.type==="page"&&t.total>0})),d={onPageChange:n=>{l("update:page",n)},onPageSizeChange:n=>{l("update:pageSize",n)}};return(n,m)=>{const i=C.ElPagination,c=C.ElOption,s=C.ElSelect,u=C.ElButton;return e.openBlock(),e.createElementBlock("div",Oe,[r.value.showPagination?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(i,{"current-page":t.page,"page-count":r.value.totalPages,"page-sizes":[10,20,50,100],"page-size":t.pageSize,layout:"total, prev, pager, next, jumper",onCurrentChange:d.onPageChange,onSizeChange:d.onPageSizeChange},null,8,["current-page","page-count","page-size","onCurrentChange","onSizeChange"]),e.createElementVNode("div",je,[e.createVNode(s,{"model-value":t.pageSize,style:{width:"100px"},onChange:d.onPageSizeChange},{default:e.withCtx(()=>[e.createVNode(c,{value:10,label:"10条/页"}),e.createVNode(c,{value:20,label:"20条/页"}),e.createVNode(c,{value:50,label:"50条/页"}),e.createVNode(c,{value:100,label:"100条/页"})]),_:1},8,["model-value","onChange"]),e.createElementVNode("span",Ye,"共 "+e.toDisplayString(t.total)+" 条",1)])],64)):t.type==="auto"?(e.openBlock(),e.createElementBlock("div",Qe,[e.createVNode(u,{disabled:t.page*t.pageSize>=t.total},{default:e.withCtx(()=>[...m[0]||(m[0]=[e.createTextVNode("加载更多",-1)])]),_:1},8,["disabled"])])):t.type==="all"?(e.openBlock(),e.createElementBlock("div",Ge,"共 "+e.toDisplayString(t.total)+" 条",1)):e.createCommentVNode("",!0)])}}}),[["__scopeId","data-v-53e593aa"]]),He={class:"detail-header"},Je={class:"detail-title"},Xe={class:"table-detail"},Ze={key:0,class:"loading"},ve={key:1,class:"detail-content"},et={class:"detail-label"},tt={class:"detail-value"},at={key:2,class:"no-data"},ot=k(e.defineComponent({__name:"TableDetail",props:{visible:{type:Boolean},loading:{type:Boolean},position:{},title:{},rowData:{},columns:{}},emits:["close"],setup(o,{emit:a}){const t=o,l=a,r=e.computed(()=>({direction:{left:"ltr",right:"rtl",top:"ttb"}[t.position||"right"]||"rtl"})),d=(n,m)=>{if(!n||!m)return"";if(!m.includes("."))return n[m];const i=m.split(".");let c=n;for(const s of i)if(c&&typeof c=="object"&&s in c)c=c[s];else return"";return c};return(n,m)=>{const i=C.ElDrawer;return e.openBlock(),e.createBlock(i,{"model-value":t.visible,direction:r.value.direction,size:400,"with-header":!0,"show-close":!0,onClose:m[0]||(m[0]=c=>l("close"))},{header:e.withCtx(()=>[e.createElementVNode("div",He,[e.createElementVNode("div",Je,e.toDisplayString(t.title||"详情"),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",Xe,[t.loading?(e.openBlock(),e.createElementBlock("div",Ze,"加载中...")):t.rowData?(e.openBlock(),e.createElementBlock("div",ve,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,c=>(e.openBlock(),e.createElementBlock("div",{key:c.field,class:"detail-item"},[e.createElementVNode("div",et,e.toDisplayString(c.label),1),e.createElementVNode("div",tt,[e.createVNode(F,{type:c.type,"model-value":d(t.rowData,c.field),"dict-type":c.dictType,mode:c.mode,locale:c.locale,format:c.format,text:c.text,"true-text":c.trueText,"false-text":c.falseText,"use-yes-no":c.useYesNo,"cascader-key":c.cascaderKey,multiline:c.multiline,"default-text":c.defaultText},null,8,["type","model-value","dict-type","mode","locale","format","text","true-text","false-text","use-yes-no","cascader-key","multiline","default-text"])])]))),128))])):(e.openBlock(),e.createElementBlock("div",at,"暂无数据"))])]),_:1},8,["model-value","direction"])}}}),[["__scopeId","data-v-ee569603"]]),lt={class:"table-render"},nt={class:"table-body"},st={class:"table-container"},X=k(e.defineComponent({__name:"TableRender",props:{formId:{}},setup(o,{expose:a}){const t=o,l=new De,r=e.ref(null),d=e.reactive({searchParams:{},selection:[],loaded:!1,dictData:{}});e.onMounted(async()=>{t.formId&&await m.loadConfig(t.formId)});const n=e.computed(()=>({tableConfig:l.data.tableConfig,rows:l.data.rows,total:l.data.total,loading:l.data.loading,pagination:l.data.pagination,selectedRows:l.data.selectedRows,searchFields:l.getSearchFields(),columns:l.getColumns(),toolbar:l.getToolbar(),actions:l.getActions(),showDetail:l.hasDetail(),detailVisible:l.data.detailVisible,detailData:l.data.detailData,detailLoading:l.data.detailLoading,selectionMode:l.showSelection()?"multiple":void 0,dictData:d.dictData})),m={async loadConfig(i){console.log("loadConfig",i);try{await l.loadConfig(i)}catch(c){E((c==null?void 0:c.message)||"获取表格配置失败");return}d.searchParams={...l.data.searchParams},d.loaded=!0,await m.loadDictData(),await m.handleLoadData()},async handleLoadData(){try{await l.loadData()}catch(i){E((i==null?void 0:i.message)||"加载数据失败")}},async loadDictData(){const i=l.getColumns(),c=new Set;for(const s of i)s.type==="dict"&&s.dictType&&c.add(s.dictType);for(const s of c)try{const u=await V.get(D.dictApi(s));u.status===200&&(d.dictData[s]=M(u.data))}catch(u){console.error(`[TableRender] 加载字典 ${s} 失败:`,u)}},async handleSearch(){l.data.searchParams={...d.searchParams};try{await l.search()}catch(i){E((i==null?void 0:i.message)||"查询失败")}},async handleReset(){d.searchParams={};try{await l.reset()}catch(i){E((i==null?void 0:i.message)||"重置失败")}},updateSearchParam(i,c){d.searchParams[i]=c},handleSelectionChange(i){l.updateSelection(i)},async handleCreate(){var c;const i=l.getFormId();i&&r.value&&await((c=r.value)==null?void 0:c.showForm(i))!=null&&await m.handleLoadData()},async handleBatchEdit(){if(n.value.selectedRows.length!==1){_.warning("请选择一行数据进行编辑");return}await m.handleRowEdit(n.value.selectedRows[0])},async handleRowEdit(i){var s,u;const c=l.getFormId();if(c&&r.value){const p=l.getKeyField();await((s=r.value)==null?void 0:s.showForm(c,`${p}=${i[p]}`))!=null&&(await m.handleLoadData(),n.value.detailVisible&&((u=l.data.detailData)==null?void 0:u[p])===i[p]&&await l.openDetail(i))}},async handleBatchDelete(){try{await x.ElMessageBox.confirm(`确定要删除选中的 ${n.value.selectedRows.length} 条数据吗?`,"确认删除",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});try{await l.batchDelete(),_.success("删除成功")}catch(i){E((i==null?void 0:i.message)||"删除失败")}}catch{}},async handleRowDelete(i){try{await x.ElMessageBox.confirm("确定要删除这条数据吗?","确认删除",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});try{await l.deleteRow(i),_.success("删除成功")}catch(c){E((c==null?void 0:c.message)||"删除失败")}}catch{}},async handleExport(){try{await l.exportData(),_.success("导出成功")}catch(i){E((i==null?void 0:i.message)||"导出失败")}},handleImport(){_.info("导入功能开发中")},async handlePageChange(i){try{await l.changePage(i)}catch(c){E((c==null?void 0:c.message)||"加载数据失败")}},async handlePageSizeChange(i){try{await l.changePageSize(i)}catch(c){E((c==null?void 0:c.message)||"加载数据失败")}},handleRowClick(i){n.value.showDetail&&l.openDetail(i)},handleDetailClose(){l.closeDetail()}};return e.onMounted(()=>{}),a({loadConfig:m.loadConfig}),(i,c)=>{var s,u,p,g,w,h,B,y,Z,v,ee;return e.openBlock(),e.createElementBlock("div",lt,[n.value.searchFields.length>0?(e.openBlock(),e.createBlock(Ne,{key:0,fields:n.value.searchFields,modelValue:d.searchParams,"onUpdate:modelValue":c[0]||(c[0]=ht=>d.searchParams=ht),onSearch:m.handleSearch,onReset:m.handleReset},null,8,["fields","modelValue","onSearch","onReset"])):e.createCommentVNode("",!0),e.createElementVNode("div",nt,[e.createElementVNode("div",st,[e.createVNode(We,{rows:n.value.rows,columns:n.value.columns,loading:n.value.loading,actions:n.value.actions,"form-id":(s=n.value.tableConfig)==null?void 0:s.form,"api-delete":(u=n.value.tableConfig)==null?void 0:u.api.delete,"key-field":(p=n.value.tableConfig)==null?void 0:p.key,selection:n.value.selectionMode,"dict-data":n.value.dictData,onSelectionChange:m.handleSelectionChange,onRowEdit:m.handleRowEdit,onRowDelete:m.handleRowDelete,onRowClick:m.handleRowClick},null,8,["rows","columns","loading","actions","form-id","api-delete","key-field","selection","dict-data","onSelectionChange","onRowEdit","onRowDelete","onRowClick"]),e.createVNode(Ke,{class:"table-pagination",page:n.value.pagination.page,"page-size":n.value.pagination.pageSize,total:n.value.total,type:(g=n.value.tableConfig)==null?void 0:g.pagination,"onUpdate:page":m.handlePageChange,"onUpdate:pageSize":m.handlePageSizeChange},null,8,["page","page-size","total","type","onUpdate:page","onUpdate:pageSize"])]),n.value.showDetail?(e.openBlock(),e.createBlock(ot,{key:0,visible:n.value.detailVisible,loading:n.value.detailLoading,position:(h=(w=n.value.tableConfig)==null?void 0:w.detail)==null?void 0:h.position,title:(y=(B=n.value.tableConfig)==null?void 0:B.meta)==null?void 0:y.title,"row-data":n.value.detailData,columns:n.value.columns,onClose:m.handleDetailClose},null,8,["visible","loading","position","title","row-data","columns","onClose"])):e.createCommentVNode("",!0)]),n.value.toolbar.length>0||(Z=n.value.tableConfig)!=null&&Z.form?(e.openBlock(),e.createBlock(Ie,{key:1,class:"table-toolbar-bottom",toolbar:n.value.toolbar,actions:n.value.actions,"form-id":(v=n.value.tableConfig)==null?void 0:v.form,"api-delete":(ee=n.value.tableConfig)==null?void 0:ee.api.delete,"selected-count":n.value.selectedRows.length,onCreate:m.handleCreate,onImport:m.handleImport,onExport:m.handleExport,onBatchEdit:m.handleBatchEdit,onBatchDelete:m.handleBatchDelete},null,8,["toolbar","actions","form-id","api-delete","selected-count","onCreate","onImport","onExport","onBatchEdit","onBatchDelete"])):e.createCommentVNode("",!0),e.createVNode(j,{ref_key:"formRef",ref:r},null,512)])}}}),[["__scopeId","data-v-91132dca"]]);class it{constructor(a){b(this,"axiosInstance");b(this,"baseUrl","");this.axiosInstance=Q.create({timeout:1e4,baseURL:""}),this.axiosInstance.defaults.headers["Content-Type"]="application/json;charset=utf-8",this.axiosInstance.interceptors.request.use(t=>(t.headers.token=localStorage.getItem("token"),a.baseUrl?t.baseURL=a.baseUrl:t.baseURL=this.baseUrl||window.location.origin,t),t=>Promise.reject(t)),this.axiosInstance.interceptors.response.use(t=>t.config.responseType==="blob"?t:t.data,t=>Promise.reject(t))}Post(a,t){return this.axiosInstance.post(a,t)}Get(a,t){return this.axiosInstance.get(a,{params:t})}Delete(a,t){return this.axiosInstance.delete(a,{params:t})}Put(a,t){return this.axiosInstance.put(a,t)}Download(a,t){return this.axiosInstance.get(a,{params:t,responseType:"blob"})}}class rt{constructor(){b(this,"emitter");this.emitter=te()}On(a,t){this.emitter.on(a,t)}Emit(a,t){this.emitter.emit(a,t)}Off(a,t){this.emitter.off(a,t)}}class ct{constructor(a,t){b(this,"mqttClient",null);b(this,"eventBus");this.eventBus=a,this.connect(t).then()}async connect(a){const t={username:a.userName,password:a.password,clientId:`${a.module}_${this.randomStr(10)}`,clean:!0,keepalive:50,connectTimeout:5e3,reconnectPeriod:5e3};let l=a.mqttUrl||"ws://127.0.0.1:5002/ws";if(console.log("connect to mqtt..."),this.mqttClient=ae.connect(l,t),!this.mqttClient){console.log("connect mqtt failed");return}this.mqttClient.on("connect",()=>{console.log("=====> mqtt connect success!"),this.mqttClient.subscribe(Y,{qos:0},r=>{console.log(r?`mqtt subscribe [${Y}] failed`:`mqtt subscribe [${Y}] success`)})}),this.mqttClient.on("message",(r,d)=>{const n=d.toString();if(!n){console.error("Received empty message",r);return}let m=null;try{m=JSON.parse(n)}catch(i){console.error("Failed to parse message JSON",r,n,i);return}if(!m||m.Content===void 0||m.Content===null||!m.PType){console.log("parse notice failed!",n);return}m.PType==dt&&this.eventBus.Emit(m.Route,m.Content)}),this.mqttClient.on(q.OffLine,()=>{console.log("mqtt offline...")}),this.mqttClient.on(q.Reconnect,()=>{console.log("mqtt reconnecting...")}),this.mqttClient.on(q.Close,()=>{console.log("mqtt close")}),this.mqttClient.on(q.Error,r=>{console.log("mqtt error")})}randomStr(a){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let l="";for(let r=0;r<a;r++)l+=t.charAt(Math.floor(Math.random()*t.length));return l}}const Y="Notice",dt="NOTICE",q={OffLine:"offline",Close:"close",Reconnect:"reconnect",Error:"error"};let z;const mt=o=>{if(!o)throw new Error("QfOptions is undefined");if(!z&&o&&(z=new ut(o)),!z)throw new Error("Qf not initialized, please call GetQf(options) first");return z};class ut{constructor(a){b(this,"EventBus");b(this,"WebApi");b(this,"Mqtt");b(this,"options");this.initQf(a)}initQf(a){if(!a)throw new Error(`StartQf failed! options is ${a}`);this.options=a,console.log("StartQf(), qfOptions=",a),this.EventBus=new rt,this.WebApi=new it(a),this.options.useMqtt&&(this.Mqtt=new ct(this.EventBus,a))}On(a,t){this.EventBus.On(a,t)}Emit(a,t){this.EventBus.Emit(a,t)}Off(a,t){this.EventBus.Off(a,t)}Post(a,t){return this.WebApi.Post(a,t)}Get(a,t){return this.WebApi.Get(a,t)}Delete(a,t){return this.WebApi.Delete(a,t)}Put(a,t){return this.WebApi.Put(a,t)}Download(a,t){return this.WebApi.Download(a,t)}RegNotice(a,t){this.EventBus.On(a,t)}}const pt={UInput:S,UInputNumber:L,UDict:T,UToggle:W,UCascader:O,UDate:U,FormRender:j,TableRender:X,UFieldView:F},ft={install(o){o.use(x);for(const[a,t]of Object.entries(pt))o.component(a,t)}};f.FormRender=j,f.GetQf=mt,f.TableRender=X,f.UCascader=O,f.UDate=U,f.UDict=T,f.UFieldView=F,f.UInput=S,f.UInputNumber=L,f.UToggle=W,f.default=ft,f.notify=_,f.notifyUtil=$,Object.defineProperties(f,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
1
|
+
(function(g,x){typeof exports=="object"&&typeof module<"u"?x(exports,require("element-plus"),require("element-plus/dist/index.css"),require("element-plus/es"),require("element-plus/es/components/base/style/css"),require("element-plus/es/components/input/style/css"),require("vue"),require("element-plus/es/components/input-number/style/css"),require("element-plus/es/components/select/style/css"),require("element-plus/es/components/option/style/css"),require("axios"),require("element-plus/es/components/switch/style/css"),require("element-plus/es/components/date-picker/style/css"),require("element-plus/es/components/button/style/css"),require("element-plus/es/components/menu/style/css"),require("element-plus/es/components/sub-menu/style/css"),require("element-plus/es/components/menu-item/style/css"),require("element-plus/es/components/icon/style/css"),require("element-plus/es/components/form/style/css"),require("element-plus/es/components/dialog/style/css"),require("@element-plus/icons-vue"),require("element-plus/es/components/table/style/css"),require("element-plus/es/components/table-column/style/css"),require("element-plus/es/components/pagination/style/css"),require("element-plus/es/components/drawer/style/css"),require("mitt"),require("mqtt")):typeof define=="function"&&define.amd?define(["exports","element-plus","element-plus/dist/index.css","element-plus/es","element-plus/es/components/base/style/css","element-plus/es/components/input/style/css","vue","element-plus/es/components/input-number/style/css","element-plus/es/components/select/style/css","element-plus/es/components/option/style/css","axios","element-plus/es/components/switch/style/css","element-plus/es/components/date-picker/style/css","element-plus/es/components/button/style/css","element-plus/es/components/menu/style/css","element-plus/es/components/sub-menu/style/css","element-plus/es/components/menu-item/style/css","element-plus/es/components/icon/style/css","element-plus/es/components/form/style/css","element-plus/es/components/dialog/style/css","@element-plus/icons-vue","element-plus/es/components/table/style/css","element-plus/es/components/table-column/style/css","element-plus/es/components/pagination/style/css","element-plus/es/components/drawer/style/css","mitt","mqtt"],x):(g=typeof globalThis<"u"?globalThis:g||self,x(g.UritQfUI={},g.ElementPlus,g.ElementPlus,g.ElementPlus,g.ElementPlus,g.ElementPlus,g.Vue,g.ElementPlus,g.ElementPlus,g.ElementPlus,g.axios,g.ElementPlus,g.ElementPlus,g.ElementPlus,g.ElementPlus,g.ElementPlus,g.ElementPlus,g.ElementPlus,g.ElementPlus,g.ElementPlus,g.ElementPlusIconsVue,g.ElementPlus,g.ElementPlus,g.ElementPlus,g.ElementPlus,g.mitt,g.mqtt))})(this,function(g,x,P,C,xt,_t,e,Vt,Et,St,H,Dt,Tt,$t,Nt,Pt,It,Ut,Rt,At,K,zt,Ft,qt,Mt,ae,oe){"use strict";var Ct=Object.defineProperty;var Bt=(g,x,P)=>x in g?Ct(g,x,{enumerable:!0,configurable:!0,writable:!0,value:P}):g[x]=P;var k=(g,x,P)=>Bt(g,typeof x!="symbol"?x+"":x,P);const le=e.defineComponent({__name:"UInput",props:{fieldLabel:{},labelPosition:{default:"top"},labelWidth:{},labelAlign:{},required:{type:Boolean},modelValue:{},outlined:{type:Boolean},dense:{type:Boolean},filled:{type:Boolean},borderless:{type:Boolean},label:{},hint:{},error:{type:Boolean},errorMessage:{},type:{},placeholder:{},disable:{type:Boolean},readonly:{type:Boolean},prefix:{},suffix:{},mask:{},maxlength:{}},emits:["update:modelValue"],setup(n,{emit:a}){const t=n,l=a,m=e.computed(()=>{const d={};return t.labelPosition==="left"&&t.labelWidth&&(d.width=typeof t.labelWidth=="number"?`${t.labelWidth}px`:t.labelWidth),t.labelAlign&&(d.textAlign=t.labelAlign),d}),c=e.computed(()=>({"u-input-label-left":t.labelPosition==="left","u-input-label-top":t.labelPosition==="top"})),r={onInput(d){l("update:modelValue",d)}};return(d,o)=>{const i=C.ElInput;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-input",c.value])},[n.fieldLabel?(e.openBlock(),e.createElementBlock("div",{key:0,class:"u-input-label",style:e.normalizeStyle(m.value)},[e.createTextVNode(e.toDisplayString(n.fieldLabel)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["required-star",{"required-star--visible":n.required}])},"*",2)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["u-input-field",{"u-input-field--top":n.labelPosition==="top"}])},[e.createVNode(i,{"model-value":n.modelValue,placeholder:n.placeholder,type:n.type,disabled:n.disable,readonly:n.readonly,maxlength:n.maxlength,"onUpdate:modelValue":r.onInput},null,8,["model-value","placeholder","type","disabled","readonly","maxlength","onUpdate:modelValue"])],2)],2)}}}),B=(n,a)=>{const t=n.__vccOpts||n;for(const[l,m]of a)t[l]=m;return t},D=B(le,[["__scopeId","data-v-ecf5177c"]]),ne={class:"u-input-number-field"},L=B(e.defineComponent({__name:"UInputNumber",props:{fieldLabel:{},labelPosition:{default:"top"},labelWidth:{},labelAlign:{},required:{type:Boolean},modelValue:{},outlined:{type:Boolean},dense:{type:Boolean},filled:{type:Boolean},borderless:{type:Boolean},label:{},hint:{},error:{type:Boolean},errorMessage:{},type:{},placeholder:{},disable:{type:Boolean},readonly:{type:Boolean},min:{},max:{},step:{},precision:{}},emits:["update:modelValue"],setup(n,{emit:a}){const t=n,l=a,m=e.computed(()=>{const d={};return t.labelPosition==="left"&&t.labelWidth&&(d.width=typeof t.labelWidth=="number"?`${t.labelWidth}px`:t.labelWidth),t.labelAlign&&(d.textAlign=t.labelAlign),d}),c=e.computed(()=>({"u-input-number-label-left":t.labelPosition==="left","u-input-number-label-top":t.labelPosition==="top"})),r={onUpdate(d){l("update:modelValue",d===void 0?0:d)}};return(d,o)=>{const i=C.ElInputNumber;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-input-number",c.value])},[n.fieldLabel?(e.openBlock(),e.createElementBlock("div",{key:0,class:"u-input-number-label",style:e.normalizeStyle(m.value)},[e.createTextVNode(e.toDisplayString(n.fieldLabel)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["required-star",{"required-star--visible":n.required}])},"*",2)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",ne,[e.createVNode(i,{"model-value":n.modelValue,placeholder:n.placeholder||"请输入数值",disabled:n.disable,min:n.min,max:n.max,step:n.step,precision:n.precision,controls:!0,"controls-position":"right",style:{width:"100%"},onChange:r.onUpdate},null,8,["model-value","placeholder","disabled","min","max","step","precision","onChange"])])],2)}}}),[["__scopeId","data-v-cb70bd5b"]]),I=H.create({timeout:3e4,headers:{"Content-Type":"application/json"}});I.interceptors.request.use(n=>{const a=localStorage.getItem("token");return a&&(n.headers.Authorization=`Bearer ${a}`),n},n=>Promise.reject(n)),I.interceptors.response.use(n=>{const a=n.data;if(a&&typeof a=="object"&&!Array.isArray(a)){if(a.status===void 0&&a.code!==void 0){const t=a.code,l=t===0||t===200||Number(t)===0||Number(t)===200;a.status=l?200:Number(t)}if(a.status!==void 0&&a.status!==200){const t=a.message||"请求失败";return console.error("[HTTP Error]",t),Promise.reject(new Error(t))}}return n},n=>{var t,l;const a=((l=(t=n.response)==null?void 0:t.data)==null?void 0:l.message)||n.message||"请求失败";return console.error("[HTTP Error]",a),Promise.reject(n)});const _={get(n,a){return I.get(n,a).then(t=>t.data)},post(n,a,t){return I.post(n,a,t).then(l=>l.data)},instance:I},E={formCfgApi(n){return`/api/form?file-id=${n}`},dictApi(n){return`/api/dict/tree-list?dict_type=${n}&children=true`},cascaderApi(n){return`/api/dict/tree-list?dict_type=${n}&children=true`}},R={},A={};function J(n){const{children:a,...t}=n;return{label:n.label??n.dict_value??String(n.value??""),value:n.value??n.dict_code,...t}}function W(n){return Array.isArray(n)?n.map(a=>{if(!a||typeof a!="object")return a;const t=J(a),l=a.children;return Array.isArray(l)&&l.length>0&&(t.children=W(l)),t}):[]}function j(n){if(!Array.isArray(n))return[];const a=[],t=l=>{for(const m of l){if(!m||typeof m!="object")continue;const c=m.children;a.push(J(m)),Array.isArray(c)&&c.length>0&&t(c)}};return t(n),a}async function z(n){if(!n)return[];if(R[n])return R[n];if(n in A)return await A[n];const a=(async()=>{try{const t=await _.get(E.dictApi(n));if(t.status===200){const l=j(t.data);return R[n]=l,l}return[]}catch(t){return console.error(`[dict] 加载字典 ${n} 失败:`,t),[]}finally{delete A[n]}})();return A[n]=a,a}async function se(n,a,t=""){if(a==null||a==="")return t;const l=R[n];if(l&&l.length>0)return X(l,a);const m=await z(n);return m&&m.length>0?X(m,a):t||String(a)}function X(n,a){const t=n.find(l=>l.value===a||String(l.value)===String(a));return t?t.label:String(a)}const ie={class:"u-dict-field"},T=B(e.defineComponent({__name:"UDict",props:{fieldLabel:{},labelPosition:{default:"top"},labelWidth:{},labelAlign:{},required:{type:Boolean},modelValue:{},outlined:{type:Boolean},dense:{type:Boolean},filled:{type:Boolean},borderless:{type:Boolean},label:{},hint:{},error:{type:Boolean},errorMessage:{},type:{},placeholder:{},disable:{type:Boolean},readonly:{type:Boolean},dictType:{}},emits:["update:modelValue"],setup(n,{emit:a}){const t=n,l=a,m=e.reactive({excluded:["fieldLabel","labelPosition","labelWidth","labelAlign","required","modelValue","dictType"],options:[],loading:!1}),c=async()=>{if(t.dictType){m.loading=!0;try{const i=await _.get(E.dictApi(t.dictType));i.status===200?m.options=j(i.data):(console.error("[UDict] 请求失败:",i.message),m.options=[])}catch(i){console.error("[UDict] 加载字典失败:",i),m.options=[]}finally{m.loading=!1}}};e.watch(()=>t.dictType,()=>{c()},{immediate:!0});const r=e.computed(()=>{const i={};return t.labelPosition==="left"&&t.labelWidth&&(i.width=typeof t.labelWidth=="number"?`${t.labelWidth}px`:t.labelWidth),t.labelAlign&&(i.textAlign=t.labelAlign),i}),d=e.computed(()=>({"u-dict-label-left":t.labelPosition==="left","u-dict-label-top":t.labelPosition==="top"})),o={onUpdate(i){l("update:modelValue",i)}};return(i,s)=>{const u=C.ElOption,p=C.ElSelect;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-dict",d.value])},[n.fieldLabel?(e.openBlock(),e.createElementBlock("div",{key:0,class:"u-dict-label",style:e.normalizeStyle(r.value)},[e.createTextVNode(e.toDisplayString(n.fieldLabel)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["required-star",{"required-star--visible":n.required}])},"*",2)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",ie,[e.createVNode(p,{"model-value":n.modelValue,placeholder:n.placeholder||"请选择",loading:m.loading,disabled:n.disable,style:{width:"100%"},onChange:o.onUpdate},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.options,h=>(e.openBlock(),e.createBlock(u,{key:h.value,label:h.label,value:h.value},null,8,["label","value"]))),128))]),_:1},8,["model-value","placeholder","loading","disabled","onChange"])])],2)}}}),[["__scopeId","data-v-239bb25f"]]),re={class:"u-toggle-field"},O=B(e.defineComponent({__name:"UToggle",props:{fieldLabel:{},labelPosition:{default:"left"},labelWidth:{},labelAlign:{},required:{type:Boolean},modelValue:{},dense:{type:Boolean,default:!0},color:{},trueValue:{default:!0},falseValue:{default:!1},label:{},hint:{},disable:{type:Boolean},readonly:{type:Boolean},activeText:{},inactiveText:{},activeColor:{},inactiveColor:{}},emits:["update:modelValue"],setup(n,{emit:a}){const t=n,l=a,m=e.reactive({excluded:["fieldLabel","labelPosition","labelWidth","labelAlign","required","modelValue","trueValue","falseValue","activeText","inactiveText","activeColor","inactiveColor"]}),c=()=>{const o={};return t.labelPosition==="left"&&t.labelWidth&&(o.width=typeof t.labelWidth=="number"?`${t.labelWidth}px`:t.labelWidth),t.labelAlign&&(o.textAlign=t.labelAlign),o},r=e.computed({get:()=>t.modelValue===t.trueValue,set:o=>{l("update:modelValue",o?t.trueValue:t.falseValue)}}),d=e.computed(()=>{const o={};for(const i in t)!m.excluded.includes(i)&&i!=="modelValue"&&(o[i]=t[i]);return o});return(o,i)=>{const s=C.ElSwitch;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-toggle",{"u-toggle-label-left":n.labelPosition==="left"}])},[n.fieldLabel?(e.openBlock(),e.createElementBlock("div",{key:0,class:"u-toggle-label",style:e.normalizeStyle(c())},[e.createTextVNode(e.toDisplayString(n.fieldLabel)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["required-star",{"required-star--visible":n.required}])},"*",2)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",re,[e.createVNode(s,e.mergeProps({modelValue:r.value,"onUpdate:modelValue":i[0]||(i[0]=u=>r.value=u)},d.value,{"active-text":n.activeText,"inactive-text":n.inactiveText,"active-color":n.activeColor,"inactive-color":n.inactiveColor}),null,16,["modelValue","active-text","inactive-text","active-color","inactive-color"])])],2)}}}),[["__scopeId","data-v-94c1fd38"]]),ce={class:"u-cascader-levels"},Y=B(e.defineComponent({__name:"UCascader",props:{fieldLabel:{},labelPosition:{default:"top"},labelWidth:{},labelAlign:{},required:{type:Boolean},modelValue:{},options:{},depth:{default:1}},emits:["update:modelValue"],setup(n,{emit:a}){const t=n,l=a,m=()=>{const o={};return t.labelPosition==="left"&&t.labelWidth&&(o.width=typeof t.labelWidth=="number"?`${t.labelWidth}px`:t.labelWidth),t.labelAlign&&(o.textAlign=t.labelAlign),o},c=e.ref([]),r=e.computed(()=>{const o=[];let i=t.options||[];for(let s=0;s<t.depth;s++)if(o.push(i),c.value[s]!==void 0){const u=i.find(p=>p.value===c.value[s]);u&&u.children?i=u.children:i=[]}else i=[];return o});e.watch(()=>t.modelValue,o=>{o!=null?c.value=Array.isArray(o)?o:[o]:c.value=[]},{immediate:!0});const d=(o,i)=>{c.value[o]=i;for(let u=o+1;u<t.depth;u++)c.value[u]=void 0;const s=c.value.filter(u=>u!==void 0);l("update:modelValue",s)};return(o,i)=>{const s=C.ElOption,u=C.ElSelect;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-cascader",{"u-cascader-label-left":n.labelPosition==="left"}])},[n.fieldLabel?(e.openBlock(),e.createElementBlock("div",{key:0,class:"u-cascader-label",style:e.normalizeStyle(m())},[e.createTextVNode(e.toDisplayString(n.fieldLabel)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["required-star",{"required-star--visible":n.required}])},"*",2)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",ce,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.depth,p=>(e.openBlock(),e.createElementBlock("div",{key:p-1,class:"u-cascader-level"},[e.createVNode(u,{"model-value":c.value[p-1],options:r.value[p-1]||[],disabled:p>1&&c.value[p-2]===void 0,placeholder:`请选择${p}级`,style:{width:"100%"},onChange:h=>d(p-1,h)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value[p-1]||[],h=>(e.openBlock(),e.createBlock(s,{key:h.value,label:h.label,value:h.value},null,8,["label","value"]))),128))]),_:2},1032,["model-value","options","disabled","placeholder","onChange"])]))),128))])],2)}}}),[["__scopeId","data-v-d66c339c"]]),de={class:"u-date-field"},U=B(e.defineComponent({__name:"UDate",props:{fieldLabel:{},labelPosition:{default:"top"},labelWidth:{},labelAlign:{},required:{type:Boolean},modelValue:{},mode:{default:"single"},locale:{default:"zh-CN"},mask:{default:"YYYY-MM-DD"},min:{},max:{}},emits:["update:modelValue"],setup(n,{emit:a}){const t=n,l=a,m=()=>{const o={};return t.labelPosition==="left"&&t.labelWidth&&(o.width=typeof t.labelWidth=="number"?`${t.labelWidth}px`:t.labelWidth),t.labelAlign&&(o.textAlign=t.labelAlign),o},c=e.ref("");e.watch(()=>t.modelValue,o=>{t.mode==="single"?c.value=o||"":t.mode==="multiple"?c.value=Array.isArray(o)?o:o?[o]:[]:t.mode==="range"&&(o&&typeof o=="object"&&o.from&&o.to?c.value=[o.from,o.to]:c.value=[])},{immediate:!0});const r=o=>{o&&(t.mode==="single"||t.mode==="multiple"?l("update:modelValue",o):t.mode==="range"&&o&&o.length===2&&l("update:modelValue",{from:o[0],to:o[1]}))},d=e.computed(()=>t.mode==="range"?"daterange":t.mode==="multiple"?"dates":"date");return(o,i)=>{const s=C.ElDatePicker;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-date",{"u-date-label-left":n.labelPosition==="left"}])},[n.fieldLabel?(e.openBlock(),e.createElementBlock("div",{key:0,class:"u-date-label",style:e.normalizeStyle(m())},[e.createTextVNode(e.toDisplayString(n.fieldLabel)+" ",1),e.createElementVNode("span",{class:e.normalizeClass(["required-star",{"required-star--visible":n.required}])},"*",2)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",de,[e.createVNode(s,{modelValue:c.value,"onUpdate:modelValue":i[0]||(i[0]=u=>c.value=u),type:d.value,placeholder:n.locale==="en-US"?"Select date":"选择日期","range-separator":n.locale==="en-US"?"to":"至","start-placeholder":n.locale==="en-US"?"Start date":"开始日期","end-placeholder":n.locale==="en-US"?"End date":"结束日期",format:n.mask.replace("YYYY","YYYY").replace("MM","MM").replace("DD","DD"),"value-format":n.mask.replace("YYYY","YYYY").replace("MM","MM").replace("DD","DD"),onChange:r},null,8,["modelValue","type","placeholder","range-separator","start-placeholder","end-placeholder","format","value-format"])])],2)}}}),[["__scopeId","data-v-9cd05064"]]);function $(n,a="info"){x.ElMessage({message:n,type:a,duration:1e3,showClose:!1})}function V(n){x.ElMessage({message:n,type:"error",duration:2e3,showClose:!1})}function me(n){$(n,"success")}function ue(n){$(n,"error")}function pe(n){$(n,"warning")}function fe(n){$(n,"info")}const S={notify:$,success:me,error:ue,warning:pe,info:fe,alertError:V},he={key:0,class:"u-menu-brand"},ge=["src"],ye={class:"u-menu-brand-text"},be={key:1,class:"u-menu-logout"},Z=B(e.defineComponent({__name:"UMenu",props:{menuId:{default:"menu"},config:{},mode:{},projectName:{},activePath:{},width:{}},emits:["menu-click","logout"],setup(n,{expose:a,emit:t}){const l=n,m=t,c=e.reactive({config:null,menus:[],activePath:"",iconMap:{},iconsLoaded:!1}),r=e.computed(()=>{var o,i,s,u,p,h,y,f;return{projectName:l.projectName??((o=c.config)==null?void 0:o.projectName)??"",logo:((i=c.config)==null?void 0:i.logo)||"",mode:l.mode??((s=c.config)==null?void 0:s.mode)??"sidebar",isHorizontal:(l.mode??((u=c.config)==null?void 0:u.mode)??"sidebar")==="horizontal",elMode:(l.mode??((p=c.config)==null?void 0:p.mode)??"sidebar")==="horizontal"?"horizontal":"vertical",width:l.width??((h=c.config)==null?void 0:h.width)??220,menus:c.menus,activeIndex:d.getIndexByPath(c.activePath),showLogout:((y=c.config)==null?void 0:y.showLogout)!==!1,logoutText:((f=c.config)==null?void 0:f.logoutText)||"退出登录",iconMap:c.iconMap}}),d={async init(){await d.ensureIcons(),l.config?(c.config=l.config,c.menus=d.normalizeMenus(l.config.menus)):await d.loadConfig(l.menuId),c.activePath=l.activePath||c.activePath},async loadConfig(o){if(o)try{const i=await _.get(E.formCfgApi(o));if(i.status!==200){V(i.message||"获取菜单配置失败");return}const s=i.data||{};c.config=s,s.dictType?await d.loadDictMenus(s.dictType):c.menus=d.normalizeMenus(s.menus)}catch(i){V((i==null?void 0:i.message)||"获取菜单配置失败"),c.menus=[]}},async loadDictMenus(o){try{const i=await _.get(E.dictApi(o));if(i.status!==200){V(i.message||"获取菜单字典失败");return}c.menus=d.normalizeMenus(W(i.data))}catch(i){V((i==null?void 0:i.message)||"获取菜单字典失败"),c.menus=[]}},normalizeMenus(o){return Array.isArray(o)?o.map(i=>d.normalizeMenuNode(i)).filter(Boolean):[]},normalizeMenuNode(o){if(!o||typeof o!="object")return null;const i=d.parseInfo(o.info),s=o.label??o.dict_value??o.name;if(!s)return null;const u=i.path??o.path??o.dict_code??o.value??"",p=i.type??o.type??"route",h={...o,label:String(s),type:p,path:String(u??""),icon:i.icon??o.icon??""};delete h.children;const y=o.children;return Array.isArray(y)&&y.length>0&&(h.children=y.map(f=>d.normalizeMenuNode(f)).filter(Boolean)),h},parseInfo(o){if(!o)return{};if(typeof o=="object")return o;if(typeof o=="string")try{const i=JSON.parse(o);return i&&typeof i=="object"?i:{}}catch{return{path:o}}return{}},itemIndex(o,i){return o.path||`menu-${i}`},childIndex(o,i,s,u){return s.path?s.path:`${d.itemIndex(o,i)}-${u}`},hasChildren(o){return Array.isArray(o.children)&&o.children.length>0},getIndexByPath(o){if(!o)return"";for(let i=0;i<c.menus.length;i++){const s=c.menus[i];if(s.path===o)return d.itemIndex(s,i);const u=s.children||[];for(let p=0;p<u.length;p++)if(u[p].path===o)return d.childIndex(s,i,u[p],p)}return""},findItemByIndex(o,i){for(let s=0;s<c.menus.length;s++){const u=c.menus[s],p=d.itemIndex(u,s);if(p===o)return{item:u,level:1,indexPath:i||[p],index:o};const h=u.children||[];for(let y=0;y<h.length;y++){const f=h[y],w=d.childIndex(u,s,f,y);if(w===o)return{item:f,level:2,indexPath:i||[p,w],index:o}}}return null},resolveTarget(o){const i=o.type||"route",s=o.path||"";return i==="url"?{type:i,path:s,url:s}:i==="yaml"?{type:i,path:s,fileId:o.fileId||s}:{type:"route",path:s,route:s}},handleSelect(o,i){const s=d.findItemByIndex(o,i);if(!s||d.hasChildren(s.item))return;const u=d.resolveTarget(s.item);c.activePath=s.item.path||o;const p={...u,item:s.item,level:s.level,indexPath:s.indexPath,index:o};m("menu-click",p)},handleLogout(){m("logout")},setActivePath(o){c.activePath=o},async ensureIcons(){if(!c.iconsLoaded){c.iconsLoaded=!0;try{const o=await import("@element-plus/icons-vue"),i=o!=null&&o.default?{...o.default,...o}:{...o},s={};for(const[u,p]of Object.entries(i))s[u]=e.markRaw(p);c.iconMap=s}catch(o){console.warn("[UMenu] @element-plus/icons-vue 不可用,菜单图标将被忽略",o)}}},getIcon(o){return o&&c.iconMap[o]||null}};return e.watch(()=>l.menuId,o=>{l.config||d.loadConfig(o)}),e.watch(()=>l.activePath,o=>{c.activePath=o||""}),e.watch(()=>l.config,o=>{o&&(c.config=o,c.menus=d.normalizeMenus(o.menus))}),e.onMounted(()=>{d.init()}),a({loadConfig:d.loadConfig,setActivePath:d.setActivePath}),(o,i)=>{const s=C.ElIcon,u=C.ElMenuItem,p=C.ElSubMenu,h=C.ElMenu,y=C.ElButton;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-menu",[`u-menu--${r.value.mode}`,{"u-menu--no-brand":!r.value.projectName}]]),style:e.normalizeStyle(r.value.isHorizontal?{}:{width:r.value.width+"px"})},[r.value.projectName?(e.openBlock(),e.createElementBlock("div",he,[e.renderSlot(o.$slots,"brand",{projectName:r.value.projectName,mode:r.value.mode},()=>[r.value.logo?(e.openBlock(),e.createElementBlock("img",{key:0,class:"u-menu-logo",src:r.value.logo,alt:"logo"},null,8,ge)):e.createCommentVNode("",!0),e.createElementVNode("span",ye,e.toDisplayString(r.value.projectName),1)],!0)])):e.createCommentVNode("",!0),e.createVNode(h,{class:"u-menu-list",mode:r.value.elMode,"default-active":r.value.activeIndex,"unique-opened":!r.value.isHorizontal,onSelect:d.handleSelect},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value.menus,(f,w)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d.itemIndex(f,w)},[d.hasChildren(f)?(e.openBlock(),e.createBlock(p,{key:0,index:d.itemIndex(f,w)},{title:e.withCtx(()=>[e.renderSlot(o.$slots,"menu-title",{item:f,level:1,index:w},()=>[d.getIcon(f.icon)?(e.openBlock(),e.createBlock(s,{key:0,class:"u-menu-icon"},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d.getIcon(f.icon))))]),_:2},1024)):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(f.label),1)],!0)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.children,(b,N)=>(e.openBlock(),e.createBlock(u,{key:d.childIndex(f,w,b,N),index:d.childIndex(f,w,b,N)},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"menu-item",{item:b,level:2,index:N,parent:f},()=>[d.getIcon(b.icon)?(e.openBlock(),e.createBlock(s,{key:0,class:"u-menu-icon"},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d.getIcon(b.icon))))]),_:2},1024)):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(b.label),1)],!0)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(e.openBlock(),e.createBlock(u,{key:1,index:d.itemIndex(f,w)},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"menu-item",{item:f,level:1,index:w,parent:null},()=>[d.getIcon(f.icon)?(e.openBlock(),e.createBlock(s,{key:0,class:"u-menu-icon"},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d.getIcon(f.icon))))]),_:2},1024)):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(f.label),1)],!0)]),_:2},1032,["index"]))],64))),128))]),_:3},8,["mode","default-active","unique-opened","onSelect"]),r.value.showLogout?(e.openBlock(),e.createElementBlock("div",be,[e.renderSlot(o.$slots,"logout",{mode:r.value.mode},()=>[e.createVNode(y,{class:"u-menu-logout-btn",text:"",onClick:d.handleLogout},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value.logoutText),1)]),_:1},8,["onClick"])],!0)])):e.createCommentVNode("",!0)],6)}}}),[["__scopeId","data-v-48e7e044"]]),we={key:0,class:"form-content"},ke={key:1,class:"form-layout"},Ce={key:0,class:"form-header"},Be={class:"title"},xe={class:"form-body"},_e={key:1,class:"form-footer"},Ve=B(e.defineComponent({__name:"FormContainer",props:{visible:{type:Boolean},layout:{},title:{},loading:{type:Boolean,default:!1}},emits:["update:visible","close"],setup(n,{emit:a}){const t=n,l=a,{visible:m}=e.toRefs(t),c=e.computed(()=>t.layout.open==="normal"),r=e.computed(()=>t.layout.width||400),d={handleClose(){l("update:visible",!1),l("close")},updateVisible(o){l("update:visible",o)}};return(o,i)=>{const s=C.ElIcon,u=C.ElDialog;return c.value?e.unref(m)?(e.openBlock(),e.createElementBlock("div",ke,[n.title?(e.openBlock(),e.createElementBlock("div",Ce,[e.createElementVNode("div",Be,e.toDisplayString(n.title),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",xe,[n.loading?(e.openBlock(),e.createBlock(s,{key:0,class:"is-loading",size:40},{default:e.withCtx(()=>[e.createVNode(e.unref(K.Loading))]),_:1})):e.renderSlot(o.$slots,"default",{},void 0,!0,1)]),o.$slots.actions?(e.openBlock(),e.createElementBlock("div",_e,[e.renderSlot(o.$slots,"actions",{},void 0,!0)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(u,{key:0,"model-value":e.unref(m),title:n.title,width:r.value,"close-on-click-modal":!1,"onUpdate:modelValue":d.updateVisible,onClose:d.handleClose},{footer:e.withCtx(()=>[e.renderSlot(o.$slots,"actions",{},void 0,!0)]),default:e.withCtx(()=>[e.unref(m)?(e.openBlock(),e.createElementBlock("div",we,[n.loading?(e.openBlock(),e.createBlock(s,{key:0,class:"is-loading",size:40},{default:e.withCtx(()=>[e.createVNode(e.unref(K.Loading))]),_:1})):e.renderSlot(o.$slots,"default",{},void 0,!0,1)])):e.createCommentVNode("",!0)]),_:3},8,["model-value","title","width","onUpdate:modelValue","onClose"]))}}}),[["__scopeId","data-v-7e522999"]]),Ee=B(e.defineComponent({__name:"FormGrid",props:{fields:{},layout:{}},setup(n){const a=n,t=e.reactive({columns:e.computed(()=>a.layout.columns||1)}),l={getColSpan(m){const c=m.colSpan||1;return Math.min(c,t.columns)}};return(m,c)=>(e.openBlock(),e.createElementBlock("div",{class:"form-grid",style:e.normalizeStyle({"--grid-columns":t.columns})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.fields,r=>(e.openBlock(),e.createElementBlock("div",{key:r.field,class:"form-grid-item",style:e.normalizeStyle({gridColumn:`span ${l.getColSpan(r)}`})},[e.renderSlot(m.$slots,"default",{field:r},void 0,!0)],4))),128))],4))}}),[["__scopeId","data-v-90ed35a4"]]),Se={class:"form-field"},De=B(e.defineComponent({__name:"FormField",props:{field:{},modelValue:{},layout:{},disabled:{type:Boolean,default:!1},error:{}},emits:["update:modelValue"],setup(n,{emit:a}){const t=n,l=a,m=e.reactive({componentMap:e.markRaw({input:D,"input-number":L,dict:T,switch:O,cascader:Y,date:U}),cascaderOptions:[]}),c=()=>{t.field.cascaderKey&&_.get(E.cascaderApi(t.field.cascaderKey)).then(s=>{s.status===200&&(m.cascaderOptions=W(s.data))})};e.watch(()=>t.field.cascaderKey,c,{immediate:!0});const r=e.computed(()=>m.componentMap[t.field.type]||D),d=e.computed(()=>{if((t.layout.labelPosition||"top")==="left"){const u=t.layout.labelWidth||0,p=typeof u=="number"?u+4:u;return{marginLeft:typeof p=="number"?`${p}px`:p}}return{}}),o=e.computed(()=>{const{field:s,modelValue:u,layout:p,disabled:h}=t;let y=u;s.type==="switch"&&u==null&&(y=!1);const f={fieldLabel:s.label,modelValue:y,labelPosition:p.labelPosition||"top",disable:h,name:s.field,required:s.required};if(p.labelWidth&&(f.labelWidth=p.labelWidth),p.labelAlign&&(f.labelAlign=p.labelAlign),s.maxlength&&(f.maxlength=s.maxlength),s.placeholder&&(f.placeholder=s.placeholder),s.readonly&&(f.readonly=s.readonly),s.lineCount&&s.lineCount>=2?(f.type="textarea",f.rows=s.lineCount):s.inputType&&(f.type=s.inputType),s.type==="switch"&&(s.activeText&&(f.activeText=s.activeText),s.inactiveText&&(f.inactiveText=s.inactiveText),s.activeColor&&(f.activeColor=s.activeColor),s.inactiveColor&&(f.inactiveColor=s.inactiveColor),s.trueValue!==void 0&&(f.trueValue=s.trueValue),s.falseValue!==void 0&&(f.falseValue=s.falseValue)),s.dictType&&(f.dictType=s.dictType),s.cascaderKey&&(f.options=m.cascaderOptions,f.depth=s.cascaderDepth||2),s.type==="date"){s.mode&&(f.mode=s.mode),s.locale&&(f.locale=s.locale),s.format?f.mask=s.format:s.mask&&(f.mask=s.mask);const w=s.dateMin??s.min,b=s.dateMax??s.max;w!=null&&(f.min=w),b!=null&&(f.max=b)}return s.type==="input-number"&&(s.min!==void 0&&(f.min=s.min),s.max!==void 0&&(f.max=s.max),s.step&&(f.step=s.step),s.precision!==void 0&&(f.precision=s.precision)),f}),i={handleUpdate(s){l("update:modelValue",s)}};return(s,u)=>(e.openBlock(),e.createElementBlock("div",Se,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),e.mergeProps(o.value,{"onUpdate:modelValue":i.handleUpdate}),null,16,["onUpdate:modelValue"])),e.createElementVNode("div",{class:e.normalizeClass(["field-error",{"field-error--visible":n.error}]),style:e.normalizeStyle(d.value)},e.toDisplayString(n.error||""),7)]))}}),[["__scopeId","data-v-10299c8d"]]);class Te{constructor(){k(this,"formConfig",null);k(this,"formData",{});k(this,"loading",!1);k(this,"submitting",!1);k(this,"visible",!1);k(this,"isEditMode",!1);k(this,"errors",[]);k(this,"currentQuery",{})}}let $e=class{constructor(){k(this,"data",e.reactive(new Te))}parseQuery(a){if(!a)return{};const t={},l=a.split("&");for(const m of l){const[c,r]=m.split("=");c&&(t[c]=r||"")}return t}async fetchFormConfig(a){const t=await _.get(E.formCfgApi(a));if(t.status!==200)throw new Error(t.message||"获取表单配置失败");return t.data}async fetchFormData(a,t){const l=t?`${a}?${t}`:a,m=await _.get(l);if(m.status!==200)throw new Error(m.message||"获取表单数据失败");return m.data}async submitForm(a,t){return await _.post(a,t)}buildInitialData(a){const t={};for(const l of a)l.default!==void 0?t[l.field]=l.default:t[l.field]=null;return t}checkIsEditMode(a){return!!a&&a.trim().length>0}validate(){var t;this.data.errors=[];const a=((t=this.data.formConfig)==null?void 0:t.fields)||[];for(const l of a){const m=this.data.formData[l.field];if(l.required&&(m==null||m==="")){this.data.errors.push({field:l.field,message:`${l.label}为必填项`});continue}if(l.rules&&l.rules.length>0&&m){for(const c of l.rules)if(c.pattern&&!new RegExp(c.pattern).test(m)){this.data.errors.push({field:l.field,message:c.message||`${l.label}格式不正确`});break}}}return this.data.errors.length===0}getFieldError(a){const t=this.data.errors.find(l=>l.field===a);return t?t.message:null}clearErrors(){this.data&&(this.data.errors=[])}async openForm(a,t){this.data.loading=!0,this.data.visible=!0,this.clearErrors(),this.data.currentQuery=this.parseQuery(t||"");try{const l=await this.fetchFormConfig(a);if(this.data.formConfig=l,this.data.isEditMode=this.checkIsEditMode(t||""),this.data.formData=this.buildInitialData(l.fields),this.data.isEditMode&&l.api.get&&t){const m=await this.fetchFormData(l.api.get,t),c=this.nestedToFlat(m);this.data.formData={...this.data.formData,...c}}}catch(l){throw console.error("[FormRender] 打开表单失败:",l),this.data.visible=!1,l}finally{this.data.loading=!1}}async doSubmit(){if(!this.data.formConfig)return;if(!this.validate())throw new Error("请完善表单信息");const{api:a}=this.data.formConfig;let t=this.data.isEditMode?a.edit:a.add;if(!t)throw new Error("提交地址未配置");let l={...this.data.formData};l=this.flattenToNested(l),this.data.isEditMode&&this.data.currentQuery.id&&(l.id=Number(this.data.currentQuery.id)),this.data.submitting=!0;try{const m=await this.submitForm(t,l);if(m.status===200)return m.data;throw new Error(m.message||"提交失败")}finally{this.data.submitting=!1}}closeForm(){this&&(this.data.visible=!1,this.data.formConfig=null,this.data.formData={},this.data.isEditMode=!1,this.data.currentQuery={},this.clearErrors())}flattenToNested(a){const t={};for(const l in a){const m=a[l];if(l.includes(".")){const c=l.split(".");let r=t;for(let d=0;d<c.length-1;d++){const o=c[d];r[o]||(r[o]={}),r=r[o]}r[c[c.length-1]]=m}else t[l]=m}return t}nestedToFlat(a,t=""){const l={};for(const m in a){const c=a[m],r=t?`${t}.${m}`:m;c&&typeof c=="object"&&!Array.isArray(c)?Object.keys(c).length===2&&"from"in c&&"to"in c?l[r]=c:Object.assign(l,this.nestedToFlat(c,r)):l[r]=c}return l}};const Q=B(e.defineComponent({__name:"FormRender",setup(n,{expose:a}){const t=new $e,l=e.ref(null),m=e.reactive({currentQuery:{},submitResolve:null}),c=e.computed(()=>{var h;const p={};if(!t.data.isEditMode||!m.currentQuery)return p;for(const y of((h=t.data.formConfig)==null?void 0:h.fields)||[])m.currentQuery[y.field]!==void 0&&(p[y.field]=!0);return p}),r=e.computed(()=>{var p;return((p=t.data.formConfig)==null?void 0:p.layout)||{open:"dialog",columns:1,labelPosition:"top",buttonAlign:"right"}}),d=e.computed(()=>{var p;return((p=t.data.formConfig)==null?void 0:p.fields)||[]}),o=e.computed(()=>{var p,h;return((h=(p=t.data.formConfig)==null?void 0:p.meta)==null?void 0:h.title)||"表单"}),i=e.computed(()=>r.value.buttonAlign||"right"),s=e.computed(()=>r.value.open==="normal"),u={async showForm(p,h){m.currentQuery=t.parseQuery(h||"");try{await t.openForm(p,h)}catch(y){return V((y==null?void 0:y.message)||"打开表单失败"),null}return new Promise(y=>{m.submitResolve=y})},async handleSubmit(){var p,h;try{const y=await t.doSubmit(),f=((h=(p=t.data.formConfig)==null?void 0:p.meta)==null?void 0:h.title)+"保存成功";return S.success(f),m.submitResolve&&(m.submitResolve(y),m.submitResolve=null),s.value||t.closeForm(),y}catch(y){return m.submitResolve&&(m.submitResolve(null),m.submitResolve=null),y!=null&&y.message&&y.message!=="请完善表单信息"&&V(y.message),null}},handleCancel(){s.value||t.closeForm()},getFieldError(p){return t.getFieldError(p)},handleClose(){t.closeForm()}};return a({showForm:u.showForm}),(p,h)=>{const y=C.ElForm,f=C.ElButton;return e.openBlock(),e.createBlock(Ve,{visible:e.unref(t).data.visible,"onUpdate:visible":h[0]||(h[0]=w=>e.unref(t).data.visible=w),layout:r.value,title:o.value,loading:e.unref(t).data.loading,onClose:u.handleClose},{actions:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(["form-actions",i.value==="right"?"justify-end":"justify-start"])},[e.createVNode(f,{onClick:u.handleCancel},{default:e.withCtx(()=>[...h[1]||(h[1]=[e.createTextVNode("取消",-1)])]),_:1},8,["onClick"]),e.createVNode(f,{type:"primary",loading:e.unref(t).data.submitting,onClick:u.handleSubmit},{default:e.withCtx(()=>[...h[2]||(h[2]=[e.createTextVNode("提交",-1)])]),_:1},8,["loading","onClick"])],2)]),default:e.withCtx(()=>[e.createVNode(y,{ref_key:"formRef",ref:l,class:"form-render","label-position":"top"},{default:e.withCtx(()=>[e.createVNode(Ee,{fields:d.value,layout:r.value},{default:e.withCtx(({field:w})=>[e.createVNode(De,{modelValue:e.unref(t).data.formData[w.field],"onUpdate:modelValue":b=>e.unref(t).data.formData[w.field]=b,field:w,layout:r.value,disabled:c.value[w.field],error:u.getFieldError(w.field)},null,8,["modelValue","onUpdate:modelValue","field","layout","disabled","error"])]),_:1},8,["fields","layout"])]),_:1},512)]),_:1},8,["visible","layout","title","loading","onClose"])}}}),[["__scopeId","data-v-378d04bd"]]);class Ne{constructor(a){this.config=a}async fetchList(a,t){const l={page:t.page,pageSize:t.pageSize,...a},m={};for(const o in l){const i=l[o];i!==""&&i!==null&&i!==void 0&&(m[o]=i)}const c=new URLSearchParams;for(const o in m)c.append(o,String(m[o]));const r=`${this.config.api.list}${c.toString()?"?"+c.toString():""}`,d=await _.get(r);if(d.status===200){const o=d.data;return Array.isArray(o)?{rows:o,total:o.length}:o||{rows:[],total:0}}throw new Error(d.message||"获取列表数据失败")}async deleteRow(a){if(!this.config.api.delete)throw new Error("未配置删除API");const t=this.config.key||"id",l=a[t],m=`${this.config.api.delete}?id=${l}`,c=await _.post(m);if(c.status!==200)throw new Error(c.message||"删除失败")}async batchDelete(a){if(!this.config.api.delete)throw new Error("未配置删除API");const t=await _.post(this.config.api.delete,a);if(t.status!==200)throw new Error(t.message||"批量删除失败")}async exportData(a){if(!this.config.api.export)throw new Error("未配置导出API");const l=(await _.post(this.config.api.export,a,{responseType:"blob"})).data,m=window.URL.createObjectURL(l),c=document.createElement("a");c.href=m,c.download=`export_${Date.now()}.xlsx`,c.click(),window.URL.revokeObjectURL(m)}async downloadTemplate(){if(!this.config.api.import)throw new Error("未配置导入API");const t=(await _.get(`${this.config.api.import}/template`,{responseType:"blob"})).data,l=window.URL.createObjectURL(t),m=document.createElement("a");m.href=l,m.download=`template_${Date.now()}.xlsx`,m.click(),window.URL.revokeObjectURL(l)}async importData(a){if(!this.config.api.import)throw new Error("未配置导入API");const t=new FormData;t.append("file",a);const l=await _.post(this.config.api.import,t,{headers:{"Content-Type":"multipart/form-data"}});if(l.status!==200)throw new Error(l.message||"导入失败");return l.data}}class Pe{constructor(){k(this,"tableConfig",null);k(this,"rows",[]);k(this,"total",0);k(this,"loading",!1);k(this,"searchParams",{});k(this,"pagination",{page:1,pageSize:20});k(this,"selectedRows",[]);k(this,"detailVisible",!1);k(this,"detailData",null);k(this,"detailLoading",!1)}}let Ie=class{constructor(){k(this,"data",e.reactive(new Pe));k(this,"dataService",null)}async loadConfig(a){var m;const t=E.formCfgApi(a);console.log("load config url =",t);const l=await _.get(t);if(console.log("---"),l.status!==200)throw new Error(l.message||"获取表格配置失败");this.data.tableConfig=l.data,this.dataService=new Ne(l.data),typeof console<"u"&&console.log("[TableRender] loadConfig:",{tableId:a,hasDetail:this.hasDetail(),detail:(m=this.data.tableConfig)==null?void 0:m.detail}),this.initSearchParams()}initSearchParams(){var l;const a={},t=((l=this.data.tableConfig)==null?void 0:l.search)||[];for(const m of t)a[m.field]="";this.data.searchParams=a}async loadData(){if(!this.dataService)throw new Error("表格配置未加载");this.data.loading=!0;try{const a=await this.dataService.fetchList(this.data.searchParams,this.data.pagination);this.data.rows=a.rows||[],this.data.total=a.total||0}finally{this.data.loading=!1}}async search(){this.data.pagination.page=1,await this.loadData()}async reset(){this.initSearchParams(),this.data.pagination.page=1,await this.loadData()}updateSearchParam(a,t){this.data.searchParams[a]=t}async deleteRow(a){if(!this.dataService)throw new Error("表格配置未加载");await this.dataService.deleteRow(a),await this.loadData()}async batchDelete(){if(!this.dataService)throw new Error("表格配置未加载");if(this.data.selectedRows.length===0)throw new Error("请选择要删除的数据");await this.dataService.batchDelete(this.data.selectedRows),this.data.selectedRows=[],await this.loadData()}async changePage(a){this.data.pagination.page=a,await this.loadData()}async changePageSize(a){this.data.pagination.pageSize=a,this.data.pagination.page=1,await this.loadData()}updateSelection(a){this.data.selectedRows=a}async exportData(){if(!this.dataService)throw new Error("表格配置未加载");await this.dataService.exportData(this.data.searchParams)}async downloadTemplate(){if(!this.dataService)throw new Error("表格配置未加载");await this.dataService.downloadTemplate()}async importData(a){if(!this.dataService)throw new Error("表格配置未加载");const t=await this.dataService.importData(a);return await this.loadData(),t}getKeyField(){var a;return((a=this.data.tableConfig)==null?void 0:a.key)||"id"}getFormId(){var a;return(a=this.data.tableConfig)==null?void 0:a.form}getDetailFormId(){var a,t;return(t=(a=this.data.tableConfig)==null?void 0:a.detail)==null?void 0:t.formId}hasDetail(){var t;const a=(t=this.data.tableConfig)==null?void 0:t.detail;return!!(a&&typeof a=="object"&&(a.formId||a.position))}openDetail(a){this.data.detailData=a,this.data.detailVisible=!0}closeDetail(){this.data.detailVisible=!1}showSelection(){var t;const a=(t=this.data.tableConfig)==null?void 0:t.toolbar;return a?a.some(l=>l.type==="edit"||l.type==="delete"):!1}getSearchFields(){var a;return((a=this.data.tableConfig)==null?void 0:a.search)||[]}getColumns(){var a;return((a=this.data.tableConfig)==null?void 0:a.columns)||[]}getToolbar(){var a;return((a=this.data.tableConfig)==null?void 0:a.toolbar)||[]}getActions(){var a;return(a=this.data.tableConfig)==null?void 0:a.actions}getPaginationType(){var a;return((a=this.data.tableConfig)==null?void 0:a.pagination)||"page"}};const Ue={class:"table-search"},Re={class:"search-fields"},Ae={class:"search-actions"},ze=B(e.defineComponent({__name:"TableSearch",props:{fields:{},modelValue:{}},emits:["update:modelValue","search","reset"],setup(n,{emit:a}){const t=n,l=a,m={input:D,dict:T,dept:T,role:T,date:U,daterange:U},c={getComponent(r){return m[r]||D},updateValue(r,d){const o={...t.modelValue,[r]:d};l("update:modelValue",o)},handleSearch(){const r={};for(const d in t.modelValue){const o=t.modelValue[d];r[d]=typeof o=="string"?o.trim():o}l("update:modelValue",r),l("search")},handleReset(){l("reset")}};return(r,d)=>{const o=C.ElButton;return e.openBlock(),e.createElementBlock("div",Ue,[e.createElementVNode("div",Re,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.fields,i=>(e.openBlock(),e.createElementBlock("div",{key:i.field,class:"search-field"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.getComponent(i.type)),{"model-value":t.modelValue[i.field],"field-label":i.label,"dict-type":i.dictType,mode:i.type==="daterange"?"range":void 0,"label-position":"left","onUpdate:modelValue":s=>c.updateValue(i.field,s)},null,8,["model-value","field-label","dict-type","mode","onUpdate:modelValue"]))]))),128))]),e.createElementVNode("div",Ae,[e.createVNode(o,{type:"primary",onClick:c.handleSearch},{default:e.withCtx(()=>[...d[0]||(d[0]=[e.createTextVNode("查询",-1)])]),_:1},8,["onClick"]),e.createVNode(o,{onClick:c.handleReset},{default:e.withCtx(()=>[...d[1]||(d[1]=[e.createTextVNode("重置",-1)])]),_:1},8,["onClick"])])])}}}),[["__scopeId","data-v-68dd4c13"]]),Fe={class:"table-toolbar"},qe={class:"toolbar-left"},Me=B(e.defineComponent({__name:"TableToolbar",props:{toolbar:{},actions:{},formId:{},apiDelete:{},selectedCount:{}},emits:["create","import","export","batchEdit","batchDelete","custom"],setup(n,{emit:a}){const t=n,l=a,m=e.computed(()=>({showEdit:!!t.formId&&(!t.actions||t.actions.edit!==!1),showDelete:!!t.apiDelete&&(!t.actions||t.actions.delete!==!1)})),c={isBuiltin(r){return typeof r=="string"||r.type!==void 0},getButtonProps(r){return typeof r=="string"?{type:r}:r},isDisabled(r){const d=c.getButtonProps(r);return d.type==="edit"||d.type==="delete"?t.selectedCount===0:!1},shouldShow(r){const d=c.getButtonProps(r);return d.type==="create"&&t.formId||d.type==="edit"&&m.value.showEdit||d.type==="delete"&&m.value.showDelete?!0:d.type==="import"||d.type==="export"?!1:!c.isBuiltin(r)},handleClick(r){switch(c.getButtonProps(r).type){case"create":l("create");break;case"import":l("import");break;case"export":l("export");break;case"edit":l("batchEdit");break;case"delete":l("batchDelete");break;default:l("custom",r)}},getButtonText(r){const d=c.getButtonProps(r);if(d.text)return d.text;switch(d.type){case"create":return"新增";case"import":return"导入";case"export":return"导出";case"edit":return"编辑";case"delete":return"删除";default:return""}},getButtonIcon(r){return c.getButtonProps(r).icon},isPrimary(r){return c.getButtonProps(r).primary===!0}};return(r,d)=>{const o=C.ElButton;return e.openBlock(),e.createElementBlock("div",Fe,[e.createElementVNode("div",qe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.toolbar,(i,s)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s},[c.shouldShow(i)?(e.openBlock(),e.createBlock(o,{key:0,type:c.isPrimary(i)?"primary":"default",disabled:c.isDisabled(i),onClick:u=>c.handleClick(i)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.getButtonText(i)),1)]),_:2},1032,["type","disabled","onClick"])):e.createCommentVNode("",!0)],64))),128))])])}}}),[["__scopeId","data-v-a7c06f8c"]]),Le=B(e.defineComponent({__name:"UInputShow",props:{modelValue:{},multiline:{type:Boolean,default:!1},maxLines:{default:0}},setup(n){const a=n,t=e.computed(()=>a.modelValue===null||a.modelValue===void 0?"":String(a.modelValue)),l=e.computed(()=>a.multiline||t.value.includes(`
|
|
2
|
+
`)),m=e.computed(()=>a.maxLines>0&&l.value?{display:"-webkit-box",WebkitLineClamp:a.maxLines,WebkitBoxOrient:"vertical",overflow:"hidden",textOverflow:"ellipsis"}:{});return(c,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-input-show",{"u-input-multiline":l.value}]),style:e.normalizeStyle(m.value)},e.toDisplayString(t.value),7))}}),[["__scopeId","data-v-c78b151e"]]),We=B(e.defineComponent({__name:"UDictShow",props:{modelValue:{},dictType:{},defaultText:{default:""}},setup(n){const a=n,t=e.ref(""),l=e.ref(!1),m=async()=>{if(a.modelValue===null||a.modelValue===void 0||a.modelValue===""){t.value=a.defaultText;return}if(!a.dictType){t.value=String(a.modelValue);return}l.value=!0;try{const c=await se(a.dictType,a.modelValue,a.defaultText);t.value=c}catch(c){console.error("[UDictShow] 翻译失败:",c),t.value=String(a.modelValue)}finally{l.value=!1}};return e.watch(()=>a.modelValue,m,{immediate:!0}),e.watch(()=>a.dictType,()=>{a.dictType&&z(a.dictType).then(()=>m())}),e.onMounted(()=>{a.dictType?z(a.dictType).then(()=>m()):m()}),(c,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-dict-show",{"u-dict-loading":l.value}])},e.toDisplayString(t.value),3))}}),[["__scopeId","data-v-908045c4"]]),je=B(e.defineComponent({__name:"UToggleShow",props:{modelValue:{},trueText:{default:"开启"},falseText:{default:"关闭"},useYesNo:{type:Boolean,default:!1}},setup(n){const a=n,t=e.computed(()=>a.useYesNo?"是":a.trueText),l=e.computed(()=>a.useYesNo?"否":a.falseText),m=e.computed(()=>a.modelValue===!0||a.modelValue==="true"?t.value:a.modelValue===!1||a.modelValue==="false"?l.value:String(a.modelValue??"")),c=e.computed(()=>a.modelValue===!0||a.modelValue==="true"?"toggle-true":a.modelValue===!1||a.modelValue==="false"?"toggle-false":"toggle-default");return(r,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-toggle-show",c.value])},e.toDisplayString(m.value),3))}}),[["__scopeId","data-v-bac05efc"]]),Oe=B(e.defineComponent({__name:"UCascaderShow",props:{modelValue:{},cascaderKey:{},separator:{default:" / "},showRawValue:{type:Boolean,default:!0}},setup(n){const a=n,t=e.ref(""),l=e.ref(!1),m=async()=>{if(!a.modelValue||!Array.isArray(a.modelValue)){t.value="";return}const c=a.modelValue;if(a.cascaderKey){l.value=!0;try{const r=await z(a.cascaderKey),o=c.map(i=>{const s=r.find(u=>u.value===i||String(u.value)===String(i));return s?s.label:a.showRawValue?String(i):""}).filter(i=>i!=="");t.value=o.join(a.separator)}catch(r){console.error("[UCascaderShow] 翻译失败:",r),t.value=a.showRawValue?c.join(a.separator):""}finally{l.value=!1}}else t.value=c.join(a.separator)};return e.watch(()=>a.modelValue,m,{immediate:!0}),e.onMounted(()=>{m()}),(c,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-cascader-show",{"u-cascader-loading":l.value}])},e.toDisplayString(t.value),3))}}),[["__scopeId","data-v-5d84df67"]]),Ye=B(e.defineComponent({__name:"UDateShow",props:{modelValue:{},mode:{default:"single"},locale:{default:"zh-CN"},format:{},separator:{default:", "},rangeSeparator:{default:" ~ "}},setup(n){const a=n,t=e.computed(()=>a.locale==="en-US"?a.mode==="range"?" - ":", ":a.mode==="range"?a.rangeSeparator:a.separator),l=e.computed(()=>{const r=a.modelValue;return a.mode==="single"?r?m(r,a.format):"":a.mode==="multiple"?r?Array.isArray(r)?r.map(d=>m(d,a.format)).join(t.value):String(r):"":a.mode==="range"?r?typeof r=="object"&&r.from&&r.to?`${m(r.from,a.format)}${t.value}${m(r.to,a.format)}`:Array.isArray(r)&&r.length>=2?`${m(r[0],a.format)}${t.value}${m(r[1],a.format)}`:String(r):"":String(r??"")});function m(r,d){return r||""}const c=e.computed(()=>!l.value);return(r,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["u-date-show",{"u-date-empty":c.value}])},e.toDisplayString(l.value||(n.locale==="en-US"?"Empty":"暂无")),3))}}),[["__scopeId","data-v-930657df"]]),F=B(e.defineComponent({__name:"UFieldView",props:{type:{default:"text"},modelValue:{},dictType:{},mode:{},locale:{default:"zh-CN"},format:{},text:{},trueText:{default:"开启"},falseText:{default:"关闭"},useYesNo:{type:Boolean,default:!1},cascaderKey:{},multiline:{type:Boolean},defaultText:{default:""}},setup(n){const a=n,t=e.computed(()=>{if(!a.text)return null;const r=a.text.split("/");return r.length>=2?{trueText:r[0].trim(),falseText:r[1].trim()}:null}),l=e.computed(()=>{var r;return a.trueText||((r=t.value)==null?void 0:r.trueText)||"开启"}),m=e.computed(()=>{var r;return a.falseText||((r=t.value)==null?void 0:r.falseText)||"关闭"}),c=e.computed(()=>{switch(a.type){case"dict":return"UDictShow";case"switch":return"UToggleShow";case"cascader":return"UCascaderShow";case"date":return"UDateShow";case"input":case"text":default:return"UInputShow"}});return(r,d)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.value==="UDictShow"?We:c.value==="UToggleShow"?je:c.value==="UCascaderShow"?Oe:c.value==="UDateShow"?Ye:Le),{"model-value":n.modelValue,"dict-type":n.type==="dict"?n.dictType:void 0,"cascader-key":n.type==="cascader"?n.cascaderKey:void 0,mode:n.type==="date"?n.mode:void 0,locale:n.type==="date"?n.locale:void 0,format:n.type==="date"?n.format:void 0,"true-text":n.type==="switch"?l.value:void 0,"false-text":n.type==="switch"?m.value:void 0,"use-yes-no":n.type==="switch"?n.useYesNo:void 0,multiline:n.type==="input"||n.type==="text"?n.multiline:void 0,"default-text":n.type==="dict"?n.defaultText:void 0},null,8,["model-value","dict-type","cascader-key","mode","locale","format","true-text","false-text","use-yes-no","multiline","default-text"]))}}),[["__scopeId","data-v-fedb54d7"]]),Qe={class:"table-grid"},Ge=B(e.defineComponent({__name:"TableGrid",props:{rows:{},columns:{},loading:{type:Boolean},actions:{},formId:{},apiDelete:{},keyField:{},selection:{type:[String,Boolean]},dictData:{}},emits:["selectionChange","rowEdit","rowDelete","rowClick"],setup(n,{emit:a}){const t=n,l=a,m=e.computed(()=>t.formId&&(!t.actions||t.actions.edit!==!1)),c=e.computed(()=>t.apiDelete&&(!t.actions||t.actions.delete!==!1)),r=e.computed(()=>{var s;return((s=t.actions)==null?void 0:s.edit)||"编辑"}),d=e.computed(()=>{var s;return((s=t.actions)==null?void 0:s.delete)||"删除"}),o=e.computed(()=>{const s=t.columns.map(u=>{const p={prop:u.field,label:u.label};return typeof u.width=="number"&&(p.width=u.width),p});return(m.value||c.value)&&s.push({prop:"actions",label:"操作",width:120,fixed:"right"}),s}),i={maskPhone(s){return!s||s.length<7?s:s.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2")},maskIdCard(s){return!s||s.length<8?s:s.replace(/(\d{3})\d{11}(\d{4})/,"$1***********$2")},formatMoney(s){const u=Number(s);return isNaN(u)?String(s):u.toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})},formatByType(s,u){if(!s)return"";switch(u){case"phone":return i.maskPhone(s);case"idcard":return i.maskIdCard(s);case"money":return i.formatMoney(s);case"percent":return String(s*100)+"%";default:return u&&u.includes("{}")?u.replace("{}",String(s)):String(s)}},getNestedValue(s,u){if(!u.includes("."))return s[u];const p=u.split(".");let h=s;for(const y of p)if(h&&typeof h=="object"&&y in h)h=h[y];else return;return h},useFieldView(s){return s.type?["dict","switch","cascader","date","input","text"].includes(s.type):!1},onSelectionChange(s){l("selectionChange",s)},onRowClick(s){l("rowClick",s)},onRowEdit(s){l("rowEdit",s)},onRowDelete(s){l("rowDelete",s)}};return(s,u)=>{const p=C.ElTableColumn,h=C.ElButton,y=C.ElTable;return e.openBlock(),e.createElementBlock("div",Qe,[e.createVNode(y,{data:t.rows.length?t.rows:[{}],loading:t.loading,"row-key":t.keyField||"id",onSelectionChange:i.onSelectionChange,onRowClick:u[0]||(u[0]=f=>i.onRowClick(f)),stripe:"",border:""},{empty:e.withCtx(()=>[...u[1]||(u[1]=[e.createElementVNode("div",{class:"no-data"},"暂无数据",-1)])]),default:e.withCtx(()=>[t.selection?(e.openBlock(),e.createBlock(p,{key:0,type:"selection",width:"55"})):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,f=>(e.openBlock(),e.createBlock(p,{key:f.prop,prop:f.prop,label:f.label,width:f.width,fixed:f.fixed},{default:e.withCtx(({row:w})=>[f.prop==="actions"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[Object.keys(w).length>0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[m.value?(e.openBlock(),e.createBlock(h,{key:0,link:"",type:"primary",size:"small",onClick:e.withModifiers(b=>i.onRowEdit(w),["stop"])},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value),1)]),_:1},8,["onClick"])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createBlock(h,{key:1,link:"",type:"danger",size:"small",onClick:e.withModifiers(b=>i.onRowDelete(w),["stop"])},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.value),1)]),_:1},8,["onClick"])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[Object.keys(w).length>0?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(t.columns,b=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:b.field},[b.field===f.prop&&i.useFieldView(b)?(e.openBlock(),e.createBlock(F,{key:0,type:b.type,"model-value":i.getNestedValue(w,b.field),"dict-type":b.dictType,mode:b.mode,locale:b.locale,format:b.format,text:b.text,"true-text":b.trueText,"false-text":b.falseText,"use-yes-no":b.useYesNo,"cascader-key":b.cascaderKey,multiline:b.multiline,"default-text":b.defaultText},null,8,["type","model-value","dict-type","mode","locale","format","text","true-text","false-text","use-yes-no","cascader-key","multiline","default-text"])):b.field===f.prop?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass({"table-grid-format":b.format})},e.toDisplayString(i.formatByType(i.getNestedValue(w,b.field),b.format||"")),3)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0)],64))]),_:2},1032,["prop","label","width","fixed"]))),128))]),_:1},8,["data","loading","row-key","onSelectionChange"])])}}}),[["__scopeId","data-v-60cb7136"]]),He={class:"table-pagination"},Ke={class:"page-size-select"},Je={class:"total-text"},Xe={key:1,class:"load-more"},Ze={key:2,class:"total-text"},ve=B(e.defineComponent({__name:"TablePagination",props:{page:{},pageSize:{},total:{},type:{}},emits:["update:page","update:pageSize"],setup(n,{emit:a}){const t=n,l=a,m=e.computed(()=>({totalPages:Math.ceil(t.total/t.pageSize),showPagination:t.type==="page"&&t.total>0})),c={onPageChange:r=>{l("update:page",r)},onPageSizeChange:r=>{l("update:pageSize",r)}};return(r,d)=>{const o=C.ElPagination,i=C.ElOption,s=C.ElSelect,u=C.ElButton;return e.openBlock(),e.createElementBlock("div",He,[m.value.showPagination?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(o,{"current-page":t.page,"page-count":m.value.totalPages,"page-sizes":[10,20,50,100],"page-size":t.pageSize,layout:"total, prev, pager, next, jumper",onCurrentChange:c.onPageChange,onSizeChange:c.onPageSizeChange},null,8,["current-page","page-count","page-size","onCurrentChange","onSizeChange"]),e.createElementVNode("div",Ke,[e.createVNode(s,{"model-value":t.pageSize,style:{width:"100px"},onChange:c.onPageSizeChange},{default:e.withCtx(()=>[e.createVNode(i,{value:10,label:"10条/页"}),e.createVNode(i,{value:20,label:"20条/页"}),e.createVNode(i,{value:50,label:"50条/页"}),e.createVNode(i,{value:100,label:"100条/页"})]),_:1},8,["model-value","onChange"]),e.createElementVNode("span",Je,"共 "+e.toDisplayString(t.total)+" 条",1)])],64)):t.type==="auto"?(e.openBlock(),e.createElementBlock("div",Xe,[e.createVNode(u,{disabled:t.page*t.pageSize>=t.total},{default:e.withCtx(()=>[...d[0]||(d[0]=[e.createTextVNode("加载更多",-1)])]),_:1},8,["disabled"])])):t.type==="all"?(e.openBlock(),e.createElementBlock("div",Ze,"共 "+e.toDisplayString(t.total)+" 条",1)):e.createCommentVNode("",!0)])}}}),[["__scopeId","data-v-53e593aa"]]),et={class:"detail-header"},tt={class:"detail-title"},at={class:"table-detail"},ot={key:0,class:"loading"},lt={key:1,class:"detail-content"},nt={class:"detail-label"},st={class:"detail-value"},it={key:2,class:"no-data"},rt=B(e.defineComponent({__name:"TableDetail",props:{visible:{type:Boolean},loading:{type:Boolean},position:{},title:{},rowData:{},columns:{}},emits:["close"],setup(n,{emit:a}){const t=n,l=a,m=e.computed(()=>({direction:{left:"ltr",right:"rtl",top:"ttb"}[t.position||"right"]||"rtl"})),c=(r,d)=>{if(!r||!d)return"";if(!d.includes("."))return r[d];const o=d.split(".");let i=r;for(const s of o)if(i&&typeof i=="object"&&s in i)i=i[s];else return"";return i};return(r,d)=>{const o=C.ElDrawer;return e.openBlock(),e.createBlock(o,{"model-value":t.visible,direction:m.value.direction,size:400,"with-header":!0,"show-close":!0,onClose:d[0]||(d[0]=i=>l("close"))},{header:e.withCtx(()=>[e.createElementVNode("div",et,[e.createElementVNode("div",tt,e.toDisplayString(t.title||"详情"),1)])]),default:e.withCtx(()=>[e.createElementVNode("div",at,[t.loading?(e.openBlock(),e.createElementBlock("div",ot,"加载中...")):t.rowData?(e.openBlock(),e.createElementBlock("div",lt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,i=>(e.openBlock(),e.createElementBlock("div",{key:i.field,class:"detail-item"},[e.createElementVNode("div",nt,e.toDisplayString(i.label),1),e.createElementVNode("div",st,[e.createVNode(F,{type:i.type,"model-value":c(t.rowData,i.field),"dict-type":i.dictType,mode:i.mode,locale:i.locale,format:i.format,text:i.text,"true-text":i.trueText,"false-text":i.falseText,"use-yes-no":i.useYesNo,"cascader-key":i.cascaderKey,multiline:i.multiline,"default-text":i.defaultText},null,8,["type","model-value","dict-type","mode","locale","format","text","true-text","false-text","use-yes-no","cascader-key","multiline","default-text"])])]))),128))])):(e.openBlock(),e.createElementBlock("div",it,"暂无数据"))])]),_:1},8,["model-value","direction"])}}}),[["__scopeId","data-v-ee569603"]]),ct={class:"table-render"},dt={class:"table-body"},mt={class:"table-container"},v=B(e.defineComponent({__name:"TableRender",props:{formId:{}},setup(n,{expose:a}){const t=n,l=new Ie,m=e.ref(null),c=e.reactive({searchParams:{},selection:[],loaded:!1,dictData:{}});e.onMounted(async()=>{t.formId&&await d.loadConfig(t.formId)});const r=e.computed(()=>({tableConfig:l.data.tableConfig,rows:l.data.rows,total:l.data.total,loading:l.data.loading,pagination:l.data.pagination,selectedRows:l.data.selectedRows,searchFields:l.getSearchFields(),columns:l.getColumns(),toolbar:l.getToolbar(),actions:l.getActions(),showDetail:l.hasDetail(),detailVisible:l.data.detailVisible,detailData:l.data.detailData,detailLoading:l.data.detailLoading,selectionMode:l.showSelection()?"multiple":void 0,dictData:c.dictData})),d={async loadConfig(o){console.log("loadConfig",o);try{await l.loadConfig(o)}catch(i){V((i==null?void 0:i.message)||"获取表格配置失败");return}c.searchParams={...l.data.searchParams},c.loaded=!0,await d.loadDictData(),await d.handleLoadData()},async handleLoadData(){try{await l.loadData()}catch(o){V((o==null?void 0:o.message)||"加载数据失败")}},async loadDictData(){const o=l.getColumns(),i=new Set;for(const s of o)s.type==="dict"&&s.dictType&&i.add(s.dictType);for(const s of i)try{const u=await _.get(E.dictApi(s));u.status===200&&(c.dictData[s]=j(u.data))}catch(u){console.error(`[TableRender] 加载字典 ${s} 失败:`,u)}},async handleSearch(){l.data.searchParams={...c.searchParams};try{await l.search()}catch(o){V((o==null?void 0:o.message)||"查询失败")}},async handleReset(){c.searchParams={};try{await l.reset()}catch(o){V((o==null?void 0:o.message)||"重置失败")}},updateSearchParam(o,i){c.searchParams[o]=i},handleSelectionChange(o){l.updateSelection(o)},async handleCreate(){var i;const o=l.getFormId();o&&m.value&&await((i=m.value)==null?void 0:i.showForm(o))!=null&&await d.handleLoadData()},async handleBatchEdit(){if(r.value.selectedRows.length!==1){S.warning("请选择一行数据进行编辑");return}await d.handleRowEdit(r.value.selectedRows[0])},async handleRowEdit(o){var s,u;const i=l.getFormId();if(i&&m.value){const p=l.getKeyField();await((s=m.value)==null?void 0:s.showForm(i,`${p}=${o[p]}`))!=null&&(await d.handleLoadData(),r.value.detailVisible&&((u=l.data.detailData)==null?void 0:u[p])===o[p]&&await l.openDetail(o))}},async handleBatchDelete(){try{await x.ElMessageBox.confirm(`确定要删除选中的 ${r.value.selectedRows.length} 条数据吗?`,"确认删除",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});try{await l.batchDelete(),S.success("删除成功")}catch(o){V((o==null?void 0:o.message)||"删除失败")}}catch{}},async handleRowDelete(o){try{await x.ElMessageBox.confirm("确定要删除这条数据吗?","确认删除",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});try{await l.deleteRow(o),S.success("删除成功")}catch(i){V((i==null?void 0:i.message)||"删除失败")}}catch{}},async handleExport(){try{await l.exportData(),S.success("导出成功")}catch(o){V((o==null?void 0:o.message)||"导出失败")}},handleImport(){S.info("导入功能开发中")},async handlePageChange(o){try{await l.changePage(o)}catch(i){V((i==null?void 0:i.message)||"加载数据失败")}},async handlePageSizeChange(o){try{await l.changePageSize(o)}catch(i){V((i==null?void 0:i.message)||"加载数据失败")}},handleRowClick(o){r.value.showDetail&&l.openDetail(o)},handleDetailClose(){l.closeDetail()}};return e.onMounted(()=>{}),a({loadConfig:d.loadConfig}),(o,i)=>{var s,u,p,h,y,f,w,b,N,ee,te;return e.openBlock(),e.createElementBlock("div",ct,[r.value.searchFields.length>0?(e.openBlock(),e.createBlock(ze,{key:0,fields:r.value.searchFields,modelValue:c.searchParams,"onUpdate:modelValue":i[0]||(i[0]=kt=>c.searchParams=kt),onSearch:d.handleSearch,onReset:d.handleReset},null,8,["fields","modelValue","onSearch","onReset"])):e.createCommentVNode("",!0),e.createElementVNode("div",dt,[e.createElementVNode("div",mt,[e.createVNode(Ge,{rows:r.value.rows,columns:r.value.columns,loading:r.value.loading,actions:r.value.actions,"form-id":(s=r.value.tableConfig)==null?void 0:s.form,"api-delete":(u=r.value.tableConfig)==null?void 0:u.api.delete,"key-field":(p=r.value.tableConfig)==null?void 0:p.key,selection:r.value.selectionMode,"dict-data":r.value.dictData,onSelectionChange:d.handleSelectionChange,onRowEdit:d.handleRowEdit,onRowDelete:d.handleRowDelete,onRowClick:d.handleRowClick},null,8,["rows","columns","loading","actions","form-id","api-delete","key-field","selection","dict-data","onSelectionChange","onRowEdit","onRowDelete","onRowClick"]),e.createVNode(ve,{class:"table-pagination",page:r.value.pagination.page,"page-size":r.value.pagination.pageSize,total:r.value.total,type:(h=r.value.tableConfig)==null?void 0:h.pagination,"onUpdate:page":d.handlePageChange,"onUpdate:pageSize":d.handlePageSizeChange},null,8,["page","page-size","total","type","onUpdate:page","onUpdate:pageSize"])]),r.value.showDetail?(e.openBlock(),e.createBlock(rt,{key:0,visible:r.value.detailVisible,loading:r.value.detailLoading,position:(f=(y=r.value.tableConfig)==null?void 0:y.detail)==null?void 0:f.position,title:(b=(w=r.value.tableConfig)==null?void 0:w.meta)==null?void 0:b.title,"row-data":r.value.detailData,columns:r.value.columns,onClose:d.handleDetailClose},null,8,["visible","loading","position","title","row-data","columns","onClose"])):e.createCommentVNode("",!0)]),r.value.toolbar.length>0||(N=r.value.tableConfig)!=null&&N.form?(e.openBlock(),e.createBlock(Me,{key:1,class:"table-toolbar-bottom",toolbar:r.value.toolbar,actions:r.value.actions,"form-id":(ee=r.value.tableConfig)==null?void 0:ee.form,"api-delete":(te=r.value.tableConfig)==null?void 0:te.api.delete,"selected-count":r.value.selectedRows.length,onCreate:d.handleCreate,onImport:d.handleImport,onExport:d.handleExport,onBatchEdit:d.handleBatchEdit,onBatchDelete:d.handleBatchDelete},null,8,["toolbar","actions","form-id","api-delete","selected-count","onCreate","onImport","onExport","onBatchEdit","onBatchDelete"])):e.createCommentVNode("",!0),e.createVNode(Q,{ref_key:"formRef",ref:m},null,512)])}}}),[["__scopeId","data-v-91132dca"]]);class ut{constructor(a){k(this,"axiosInstance");k(this,"baseUrl","");this.axiosInstance=H.create({timeout:1e4,baseURL:""}),this.axiosInstance.defaults.headers["Content-Type"]="application/json;charset=utf-8",this.axiosInstance.interceptors.request.use(t=>(t.headers.token=localStorage.getItem("token"),a.baseUrl?t.baseURL=a.baseUrl:t.baseURL=this.baseUrl||window.location.origin,t),t=>Promise.reject(t)),this.axiosInstance.interceptors.response.use(t=>t.config.responseType==="blob"?t:t.data,t=>Promise.reject(t))}Post(a,t){return this.axiosInstance.post(a,t)}Get(a,t){return this.axiosInstance.get(a,{params:t})}Delete(a,t){return this.axiosInstance.delete(a,{params:t})}Put(a,t){return this.axiosInstance.put(a,t)}Download(a,t){return this.axiosInstance.get(a,{params:t,responseType:"blob"})}}class pt{constructor(){k(this,"emitter");this.emitter=ae()}On(a,t){this.emitter.on(a,t)}Emit(a,t){this.emitter.emit(a,t)}Off(a,t){this.emitter.off(a,t)}}class ft{constructor(a,t){k(this,"mqttClient",null);k(this,"eventBus");this.eventBus=a,this.connect(t).then()}async connect(a){const t={username:a.userName,password:a.password,clientId:`${a.module}_${this.randomStr(10)}`,clean:!0,keepalive:50,connectTimeout:5e3,reconnectPeriod:5e3};let l=a.mqttUrl||"ws://127.0.0.1:5002/ws";if(console.log("connect to mqtt..."),this.mqttClient=oe.connect(l,t),!this.mqttClient){console.log("connect mqtt failed");return}this.mqttClient.on("connect",()=>{console.log("=====> mqtt connect success!"),this.mqttClient.subscribe(G,{qos:0},m=>{console.log(m?`mqtt subscribe [${G}] failed`:`mqtt subscribe [${G}] success`)})}),this.mqttClient.on("message",(m,c)=>{const r=c.toString();if(!r){console.error("Received empty message",m);return}let d=null;try{d=JSON.parse(r)}catch(o){console.error("Failed to parse message JSON",m,r,o);return}if(!d||d.Content===void 0||d.Content===null||!d.PType){console.log("parse notice failed!",r);return}d.PType==ht&&this.eventBus.Emit(d.Route,d.Content)}),this.mqttClient.on(q.OffLine,()=>{console.log("mqtt offline...")}),this.mqttClient.on(q.Reconnect,()=>{console.log("mqtt reconnecting...")}),this.mqttClient.on(q.Close,()=>{console.log("mqtt close")}),this.mqttClient.on(q.Error,m=>{console.log("mqtt error")})}randomStr(a){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let l="";for(let m=0;m<a;m++)l+=t.charAt(Math.floor(Math.random()*t.length));return l}}const G="Notice",ht="NOTICE",q={OffLine:"offline",Close:"close",Reconnect:"reconnect",Error:"error"};let M;const gt=n=>{if(!n)throw new Error("QfOptions is undefined");if(!M&&n&&(M=new yt(n)),!M)throw new Error("Qf not initialized, please call GetQf(options) first");return M};class yt{constructor(a){k(this,"EventBus");k(this,"WebApi");k(this,"Mqtt");k(this,"options");this.initQf(a)}initQf(a){if(!a)throw new Error(`StartQf failed! options is ${a}`);this.options=a,console.log("StartQf(), qfOptions=",a),this.EventBus=new pt,this.WebApi=new ut(a),this.options.useMqtt&&(this.Mqtt=new ft(this.EventBus,a))}On(a,t){this.EventBus.On(a,t)}Emit(a,t){this.EventBus.Emit(a,t)}Off(a,t){this.EventBus.Off(a,t)}Post(a,t){return this.WebApi.Post(a,t)}Get(a,t){return this.WebApi.Get(a,t)}Delete(a,t){return this.WebApi.Delete(a,t)}Put(a,t){return this.WebApi.Put(a,t)}Download(a,t){return this.WebApi.Download(a,t)}RegNotice(a,t){this.EventBus.On(a,t)}}const bt={UInput:D,UInputNumber:L,UDict:T,UToggle:O,UCascader:Y,UDate:U,UMenu:Z,FormRender:Q,TableRender:v,UFieldView:F},wt={install(n){n.use(x);for(const[a,t]of Object.entries(bt))n.component(a,t)}};g.FormRender=Q,g.GetQf=gt,g.TableRender=v,g.UCascader=Y,g.UDate=U,g.UDict=T,g.UFieldView=F,g.UInput=D,g.UInputNumber=L,g.UMenu=Z,g.UToggle=O,g.default=wt,g.notify=S,g.notifyUtil=$,Object.defineProperties(g,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.u-input[data-v-ecf5177c]{display:flex;width:100%}.u-input.u-input-label-left .u-input-label[data-v-ecf5177c]{padding-top:10px;flex-shrink:0;text-align:right;padding-right:12px;font-size:14px;color:#606266;white-space:nowrap}.u-input.u-input-label-left .u-input-field[data-v-ecf5177c]{flex:1}.u-input.u-input-label-top[data-v-ecf5177c]{flex-direction:column}.u-input.u-input-label-top .u-input-label[data-v-ecf5177c]{width:100%;font-size:14px;color:#606266;margin-bottom:8px;white-space:nowrap}.u-input .required-star[data-v-ecf5177c]{color:#f56c6c;display:inline-block;width:10px}.u-input .required-star[data-v-ecf5177c]:not(.required-star--visible){color:transparent}.u-input .u-input-field--top[data-v-ecf5177c]{width:100%}.u-input-number[data-v-cb70bd5b]{display:flex;width:100%}.u-input-number.u-input-number-label-left .u-input-number-label[data-v-cb70bd5b]{padding-top:10px;flex-shrink:0;text-align:right;padding-right:12px;font-size:14px;color:#606266;white-space:nowrap}.u-input-number.u-input-number-label-left .u-input-number-field[data-v-cb70bd5b]{flex:1}.u-input-number.u-input-number-label-top[data-v-cb70bd5b]{flex-direction:column}.u-input-number.u-input-number-label-top .u-input-number-label[data-v-cb70bd5b]{width:100%;font-size:14px;color:#606266;margin-bottom:8px;white-space:nowrap}.u-input-number .required-star[data-v-cb70bd5b]{color:#f56c6c;display:inline-block;width:10px}.u-input-number .required-star[data-v-cb70bd5b]:not(.required-star--visible){color:transparent}.u-dict[data-v-239bb25f]{display:flex;width:100%}.u-dict.u-dict-label-left .u-dict-label[data-v-239bb25f]{padding-top:10px;flex-shrink:0;text-align:right;padding-right:12px;font-size:14px;color:#606266;white-space:nowrap}.u-dict.u-dict-label-left .u-dict-field[data-v-239bb25f]{flex:1}.u-dict.u-dict-label-top[data-v-239bb25f]{flex-direction:column}.u-dict.u-dict-label-top .u-dict-label[data-v-239bb25f]{width:100%;font-size:14px;color:#606266;margin-bottom:8px;white-space:nowrap}.u-dict .required-star[data-v-239bb25f]{color:#f56c6c;display:inline-block;width:10px}.u-dict .required-star[data-v-239bb25f]:not(.required-star--visible){color:transparent}.u-toggle[data-v-94c1fd38]{display:flex;width:100%}.u-toggle.u-toggle-label-left[data-v-94c1fd38]{flex-direction:row;align-items:flex-start}.u-toggle.u-toggle-label-left .u-toggle-label[data-v-94c1fd38]{padding-top:10px;flex-shrink:0;text-align:right;padding-right:12px;margin-bottom:0;white-space:nowrap}.u-toggle.u-toggle-label-left .u-toggle-field[data-v-94c1fd38]{flex:1}.u-toggle[data-v-94c1fd38]:not(.u-toggle-label-left){flex-direction:column}.u-toggle:not(.u-toggle-label-left) .u-toggle-label[data-v-94c1fd38]{width:100%;margin-bottom:4px;white-space:nowrap}.u-toggle .u-toggle-label[data-v-94c1fd38]{font-size:14px;color:#606266}.u-toggle .u-toggle-label .required-star[data-v-94c1fd38]{color:#f56c6c;display:inline-block;width:10px}.u-toggle .u-toggle-label .required-star[data-v-94c1fd38]:not(.required-star--visible){color:transparent}.u-toggle .u-toggle-field[data-v-94c1fd38]{display:flex;align-items:center}.u-cascader[data-v-d66c339c]{display:flex;width:100%}.u-cascader.u-cascader-label-left[data-v-d66c339c]{flex-direction:row;align-items:flex-start}.u-cascader.u-cascader-label-left .u-cascader-label[data-v-d66c339c]{padding-top:10px;flex-shrink:0;text-align:right;padding-right:12px;margin-bottom:0;white-space:nowrap}.u-cascader.u-cascader-label-left .u-cascader-levels[data-v-d66c339c]{flex:1}.u-cascader[data-v-d66c339c]:not(.u-cascader-label-left){flex-direction:column}.u-cascader:not(.u-cascader-label-left) .u-cascader-label[data-v-d66c339c]{width:100%;margin-bottom:8px;white-space:nowrap}.u-cascader .u-cascader-label[data-v-d66c339c]{font-size:14px;color:#606266}.u-cascader .u-cascader-label .required-star[data-v-d66c339c]{color:#f56c6c;display:inline-block;width:10px}.u-cascader .u-cascader-label .required-star[data-v-d66c339c]:not(.required-star--visible){color:transparent}.u-cascader .u-cascader-levels[data-v-d66c339c]{display:flex;gap:8px;flex-wrap:wrap}.u-cascader .u-cascader-level[data-v-d66c339c]{flex:1;min-width:120px}.u-date[data-v-9cd05064]{display:flex;width:100%}.u-date.u-date-label-left[data-v-9cd05064]{flex-direction:row;align-items:flex-start}.u-date.u-date-label-left .u-date-label[data-v-9cd05064]{padding-top:10px;flex-shrink:0;text-align:right;padding-right:12px;margin-bottom:0;white-space:nowrap}.u-date.u-date-label-left .u-date-field[data-v-9cd05064]{flex:1}.u-date[data-v-9cd05064]:not(.u-date-label-left){flex-direction:column}.u-date:not(.u-date-label-left) .u-date-label[data-v-9cd05064]{width:100%;margin-bottom:8px;white-space:nowrap}.u-date .u-date-label[data-v-9cd05064]{font-size:14px;color:#606266}.u-date .u-date-label .required-star[data-v-9cd05064]{color:#f56c6c;display:inline-block;width:10px}.u-date .u-date-label .required-star[data-v-9cd05064]:not(.required-star--visible){color:transparent}.form-content[data-v-7e522999]{min-height:100px}.form-layout[data-v-7e522999]{width:100%;background:#fff}.form-header[data-v-7e522999]{display:flex;align-items:center;padding:16px;border-bottom:1px solid #eee}.form-header .title[data-v-7e522999]{font-size:18px;font-weight:500}.form-body[data-v-7e522999]{padding:16px;min-height:100px}.form-footer[data-v-7e522999]{display:flex;justify-content:flex-end;gap:8px;padding:16px;border-top:1px solid #eee}.is-loading[data-v-7e522999]{display:flex;justify-content:center;align-items:center;min-height:100px;color:#409eff}.form-grid[data-v-90ed35a4]{display:grid;grid-template-columns:repeat(var(--grid-columns, 1),minmax(0,1fr));gap:8px;width:100%}.form-grid-item[data-v-90ed35a4]{min-width:0}.form-field[data-v-10299c8d]{width:100%}.field-error[data-v-10299c8d]{color:#f56c6c;font-size:12px;min-height:12px;line-height:1.5;transition:opacity .2s}.field-error[data-v-10299c8d]:not(.field-error--visible){opacity:0}.form-render[data-v-378d04bd]{width:100%}.form-actions[data-v-378d04bd]{display:flex;gap:8px}.justify-end[data-v-378d04bd]{justify-content:flex-end}.justify-start[data-v-378d04bd]{justify-content:flex-start}.table-search[data-v-68dd4c13]{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:16px;background:#fff;border-bottom:1px solid #eee}.table-search .search-fields[data-v-68dd4c13]{display:flex;flex-wrap:wrap;gap:12px}.table-search .search-field[data-v-68dd4c13]{display:flex;align-items:center;gap:8px;min-width:200px}.table-search .search-actions[data-v-68dd4c13]{display:flex;gap:8px;flex-shrink:0}.table-toolbar[data-v-a7c06f8c]{display:flex;align-items:center;justify-content:right;padding:12px 16px;border-top:1px solid darkgrey}.u-input-show[data-v-c78b151e]{font-size:14px;line-height:1.5;color:#333;word-break:break-all}.u-input-show.u-input-multiline[data-v-c78b151e]{white-space:pre-wrap}.u-dict-show[data-v-908045c4]{font-size:14px;line-height:1.5;color:#333}.u-dict-show.u-dict-loading[data-v-908045c4]{color:#999}.u-toggle-show[data-v-bac05efc]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:14px;line-height:1.5}.u-toggle-show.toggle-true[data-v-bac05efc]{background-color:#e6f7ed;color:#52c41a}.u-toggle-show.toggle-false[data-v-bac05efc]{background-color:#fff1f0;color:#ff4d4f}.u-toggle-show.toggle-default[data-v-bac05efc]{color:#999}.u-cascader-show[data-v-5d84df67]{font-size:14px;line-height:1.5;color:#333}.u-cascader-show.u-cascader-loading[data-v-5d84df67]{color:#999}.u-date-show[data-v-930657df]{font-size:14px;line-height:1.5;color:#333}.u-date-show.u-date-empty[data-v-930657df]{color:#999}.u-field-view[data-v-fedb54d7]{display:inline-block}.table-grid[data-v-60cb7136]{background:#fff}.table-grid .no-data[data-v-60cb7136]{padding:48px;text-align:center;color:#999}.table-pagination[data-v-53e593aa]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#fff;border-top:1px solid #eee}.table-pagination .page-size-select[data-v-53e593aa]{display:flex;align-items:center;gap:12px}.table-pagination .total-text[data-v-53e593aa]{color:#666;font-size:14px}.table-pagination .load-more[data-v-53e593aa]{flex:1;text-align:center}.table-detail[data-v-ee569603]{display:flex;flex-direction:column;height:100%;background:#fff}.table-detail .loading[data-v-ee569603],.table-detail .no-data[data-v-ee569603]{display:flex;align-items:center;justify-content:center;height:100%;color:#999}.table-detail .detail-content[data-v-ee569603]{padding:16px}.table-detail .detail-item[data-v-ee569603]{display:flex;padding:12px 0;border-bottom:1px solid #eee}.table-detail .detail-item[data-v-ee569603]:last-child{border-bottom:none}.table-detail .detail-item .detail-label[data-v-ee569603]{width:100px;flex-shrink:0;color:#666;font-size:14px}.table-detail .detail-item .detail-value[data-v-ee569603]{flex:1;color:#333;font-size:14px;word-break:break-all}.detail-header[data-v-ee569603]{display:flex;align-items:center;justify-content:space-between}.detail-header .detail-title[data-v-ee569603]{font-size:16px;font-weight:500}.table-render[data-v-91132dca]{display:flex;flex-direction:column;height:100%;min-height:0;background:#fff}.table-render .table-body[data-v-91132dca]{display:flex;flex:1;min-height:0;overflow:hidden}.table-render .table-container[data-v-91132dca]{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.table-render .table-pagination[data-v-91132dca],.table-render .table-toolbar-bottom[data-v-91132dca]{flex-shrink:0}
|
|
1
|
+
@charset "UTF-8";.u-input[data-v-ecf5177c]{display:flex;width:100%}.u-input.u-input-label-left .u-input-label[data-v-ecf5177c]{padding-top:10px;flex-shrink:0;text-align:right;padding-right:12px;font-size:14px;color:#606266;white-space:nowrap}.u-input.u-input-label-left .u-input-field[data-v-ecf5177c]{flex:1}.u-input.u-input-label-top[data-v-ecf5177c]{flex-direction:column}.u-input.u-input-label-top .u-input-label[data-v-ecf5177c]{width:100%;font-size:14px;color:#606266;margin-bottom:8px;white-space:nowrap}.u-input .required-star[data-v-ecf5177c]{color:#f56c6c;display:inline-block;width:10px}.u-input .required-star[data-v-ecf5177c]:not(.required-star--visible){color:transparent}.u-input .u-input-field--top[data-v-ecf5177c]{width:100%}.u-input-number[data-v-cb70bd5b]{display:flex;width:100%}.u-input-number.u-input-number-label-left .u-input-number-label[data-v-cb70bd5b]{padding-top:10px;flex-shrink:0;text-align:right;padding-right:12px;font-size:14px;color:#606266;white-space:nowrap}.u-input-number.u-input-number-label-left .u-input-number-field[data-v-cb70bd5b]{flex:1}.u-input-number.u-input-number-label-top[data-v-cb70bd5b]{flex-direction:column}.u-input-number.u-input-number-label-top .u-input-number-label[data-v-cb70bd5b]{width:100%;font-size:14px;color:#606266;margin-bottom:8px;white-space:nowrap}.u-input-number .required-star[data-v-cb70bd5b]{color:#f56c6c;display:inline-block;width:10px}.u-input-number .required-star[data-v-cb70bd5b]:not(.required-star--visible){color:transparent}.u-dict[data-v-239bb25f]{display:flex;width:100%}.u-dict.u-dict-label-left .u-dict-label[data-v-239bb25f]{padding-top:10px;flex-shrink:0;text-align:right;padding-right:12px;font-size:14px;color:#606266;white-space:nowrap}.u-dict.u-dict-label-left .u-dict-field[data-v-239bb25f]{flex:1}.u-dict.u-dict-label-top[data-v-239bb25f]{flex-direction:column}.u-dict.u-dict-label-top .u-dict-label[data-v-239bb25f]{width:100%;font-size:14px;color:#606266;margin-bottom:8px;white-space:nowrap}.u-dict .required-star[data-v-239bb25f]{color:#f56c6c;display:inline-block;width:10px}.u-dict .required-star[data-v-239bb25f]:not(.required-star--visible){color:transparent}.u-toggle[data-v-94c1fd38]{display:flex;width:100%}.u-toggle.u-toggle-label-left[data-v-94c1fd38]{flex-direction:row;align-items:flex-start}.u-toggle.u-toggle-label-left .u-toggle-label[data-v-94c1fd38]{padding-top:10px;flex-shrink:0;text-align:right;padding-right:12px;margin-bottom:0;white-space:nowrap}.u-toggle.u-toggle-label-left .u-toggle-field[data-v-94c1fd38]{flex:1}.u-toggle[data-v-94c1fd38]:not(.u-toggle-label-left){flex-direction:column}.u-toggle:not(.u-toggle-label-left) .u-toggle-label[data-v-94c1fd38]{width:100%;margin-bottom:4px;white-space:nowrap}.u-toggle .u-toggle-label[data-v-94c1fd38]{font-size:14px;color:#606266}.u-toggle .u-toggle-label .required-star[data-v-94c1fd38]{color:#f56c6c;display:inline-block;width:10px}.u-toggle .u-toggle-label .required-star[data-v-94c1fd38]:not(.required-star--visible){color:transparent}.u-toggle .u-toggle-field[data-v-94c1fd38]{display:flex;align-items:center}.u-cascader[data-v-d66c339c]{display:flex;width:100%}.u-cascader.u-cascader-label-left[data-v-d66c339c]{flex-direction:row;align-items:flex-start}.u-cascader.u-cascader-label-left .u-cascader-label[data-v-d66c339c]{padding-top:10px;flex-shrink:0;text-align:right;padding-right:12px;margin-bottom:0;white-space:nowrap}.u-cascader.u-cascader-label-left .u-cascader-levels[data-v-d66c339c]{flex:1}.u-cascader[data-v-d66c339c]:not(.u-cascader-label-left){flex-direction:column}.u-cascader:not(.u-cascader-label-left) .u-cascader-label[data-v-d66c339c]{width:100%;margin-bottom:8px;white-space:nowrap}.u-cascader .u-cascader-label[data-v-d66c339c]{font-size:14px;color:#606266}.u-cascader .u-cascader-label .required-star[data-v-d66c339c]{color:#f56c6c;display:inline-block;width:10px}.u-cascader .u-cascader-label .required-star[data-v-d66c339c]:not(.required-star--visible){color:transparent}.u-cascader .u-cascader-levels[data-v-d66c339c]{display:flex;gap:8px;flex-wrap:wrap}.u-cascader .u-cascader-level[data-v-d66c339c]{flex:1;min-width:120px}.u-date[data-v-9cd05064]{display:flex;width:100%}.u-date.u-date-label-left[data-v-9cd05064]{flex-direction:row;align-items:flex-start}.u-date.u-date-label-left .u-date-label[data-v-9cd05064]{padding-top:10px;flex-shrink:0;text-align:right;padding-right:12px;margin-bottom:0;white-space:nowrap}.u-date.u-date-label-left .u-date-field[data-v-9cd05064]{flex:1}.u-date[data-v-9cd05064]:not(.u-date-label-left){flex-direction:column}.u-date:not(.u-date-label-left) .u-date-label[data-v-9cd05064]{width:100%;margin-bottom:8px;white-space:nowrap}.u-date .u-date-label[data-v-9cd05064]{font-size:14px;color:#606266}.u-date .u-date-label .required-star[data-v-9cd05064]{color:#f56c6c;display:inline-block;width:10px}.u-date .u-date-label .required-star[data-v-9cd05064]:not(.required-star--visible){color:transparent}.u-menu[data-v-48e7e044]{display:flex;height:100%;min-height:0;background:#fff}.u-menu .u-menu-icon[data-v-48e7e044]{margin-right:6px}.u-menu.u-menu--sidebar[data-v-48e7e044]{flex-direction:column;border-right:1px solid #e4e7ed}.u-menu.u-menu--sidebar .u-menu-brand[data-v-48e7e044]{flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:16px 12px;border-bottom:1px solid #e4e7ed}.u-menu.u-menu--sidebar .u-menu-list[data-v-48e7e044]{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;border-right:none}.u-menu.u-menu--sidebar .u-menu-logout[data-v-48e7e044]{flex-shrink:0;width:100%;border-top:1px solid #e4e7ed}.u-menu.u-menu--sidebar .u-menu-logout-btn[data-v-48e7e044]{display:block;width:100%}.u-menu.u-menu--horizontal[data-v-48e7e044]{flex-direction:row;align-items:center;width:100%;border-bottom:1px solid #e4e7ed}.u-menu.u-menu--horizontal .u-menu-brand[data-v-48e7e044]{flex-shrink:0;display:flex;align-items:center;padding:0 16px;white-space:nowrap}.u-menu.u-menu--horizontal .u-menu-list[data-v-48e7e044]{flex:1;min-width:0;border-bottom:none}.u-menu.u-menu--horizontal .u-menu-logout[data-v-48e7e044]{flex-shrink:0;display:flex;align-items:center;padding:0 12px;margin-left:auto}.u-menu .u-menu-logo[data-v-48e7e044]{height:28px;margin-right:8px}.u-menu .u-menu-brand-text[data-v-48e7e044]{font-size:18px;font-weight:600;color:#303133;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.form-content[data-v-7e522999]{min-height:100px}.form-layout[data-v-7e522999]{width:100%;background:#fff}.form-header[data-v-7e522999]{display:flex;align-items:center;padding:16px;border-bottom:1px solid #eee}.form-header .title[data-v-7e522999]{font-size:18px;font-weight:500}.form-body[data-v-7e522999]{padding:16px;min-height:100px}.form-footer[data-v-7e522999]{display:flex;justify-content:flex-end;gap:8px;padding:16px;border-top:1px solid #eee}.is-loading[data-v-7e522999]{display:flex;justify-content:center;align-items:center;min-height:100px;color:#409eff}.form-grid[data-v-90ed35a4]{display:grid;grid-template-columns:repeat(var(--grid-columns, 1),minmax(0,1fr));gap:8px;width:100%}.form-grid-item[data-v-90ed35a4]{min-width:0}.form-field[data-v-10299c8d]{width:100%}.field-error[data-v-10299c8d]{color:#f56c6c;font-size:12px;min-height:12px;line-height:1.5;transition:opacity .2s}.field-error[data-v-10299c8d]:not(.field-error--visible){opacity:0}.form-render[data-v-378d04bd]{width:100%}.form-actions[data-v-378d04bd]{display:flex;gap:8px}.justify-end[data-v-378d04bd]{justify-content:flex-end}.justify-start[data-v-378d04bd]{justify-content:flex-start}.table-search[data-v-68dd4c13]{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:16px;background:#fff;border-bottom:1px solid #eee}.table-search .search-fields[data-v-68dd4c13]{display:flex;flex-wrap:wrap;gap:12px}.table-search .search-field[data-v-68dd4c13]{display:flex;align-items:center;gap:8px;min-width:200px}.table-search .search-actions[data-v-68dd4c13]{display:flex;gap:8px;flex-shrink:0}.table-toolbar[data-v-a7c06f8c]{display:flex;align-items:center;justify-content:right;padding:12px 16px;border-top:1px solid darkgrey}.u-input-show[data-v-c78b151e]{font-size:14px;line-height:1.5;color:#333;word-break:break-all}.u-input-show.u-input-multiline[data-v-c78b151e]{white-space:pre-wrap}.u-dict-show[data-v-908045c4]{font-size:14px;line-height:1.5;color:#333}.u-dict-show.u-dict-loading[data-v-908045c4]{color:#999}.u-toggle-show[data-v-bac05efc]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:14px;line-height:1.5}.u-toggle-show.toggle-true[data-v-bac05efc]{background-color:#e6f7ed;color:#52c41a}.u-toggle-show.toggle-false[data-v-bac05efc]{background-color:#fff1f0;color:#ff4d4f}.u-toggle-show.toggle-default[data-v-bac05efc]{color:#999}.u-cascader-show[data-v-5d84df67]{font-size:14px;line-height:1.5;color:#333}.u-cascader-show.u-cascader-loading[data-v-5d84df67]{color:#999}.u-date-show[data-v-930657df]{font-size:14px;line-height:1.5;color:#333}.u-date-show.u-date-empty[data-v-930657df]{color:#999}.u-field-view[data-v-fedb54d7]{display:inline-block}.table-grid[data-v-60cb7136]{background:#fff}.table-grid .no-data[data-v-60cb7136]{padding:48px;text-align:center;color:#999}.table-pagination[data-v-53e593aa]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#fff;border-top:1px solid #eee}.table-pagination .page-size-select[data-v-53e593aa]{display:flex;align-items:center;gap:12px}.table-pagination .total-text[data-v-53e593aa]{color:#666;font-size:14px}.table-pagination .load-more[data-v-53e593aa]{flex:1;text-align:center}.table-detail[data-v-ee569603]{display:flex;flex-direction:column;height:100%;background:#fff}.table-detail .loading[data-v-ee569603],.table-detail .no-data[data-v-ee569603]{display:flex;align-items:center;justify-content:center;height:100%;color:#999}.table-detail .detail-content[data-v-ee569603]{padding:16px}.table-detail .detail-item[data-v-ee569603]{display:flex;padding:12px 0;border-bottom:1px solid #eee}.table-detail .detail-item[data-v-ee569603]:last-child{border-bottom:none}.table-detail .detail-item .detail-label[data-v-ee569603]{width:100px;flex-shrink:0;color:#666;font-size:14px}.table-detail .detail-item .detail-value[data-v-ee569603]{flex:1;color:#333;font-size:14px;word-break:break-all}.detail-header[data-v-ee569603]{display:flex;align-items:center;justify-content:space-between}.detail-header .detail-title[data-v-ee569603]{font-size:16px;font-weight:500}.table-render[data-v-91132dca]{display:flex;flex-direction:column;height:100%;min-height:0;background:#fff}.table-render .table-body[data-v-91132dca]{display:flex;flex:1;min-height:0;overflow:hidden}.table-render .table-container[data-v-91132dca]{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.table-render .table-pagination[data-v-91132dca],.table-render .table-toolbar-bottom[data-v-91132dca]{flex-shrink:0}
|
package/dist/ts/model.d.ts
CHANGED
|
@@ -157,3 +157,38 @@ export interface Pagination {
|
|
|
157
157
|
page: number;
|
|
158
158
|
pageSize: number;
|
|
159
159
|
}
|
|
160
|
+
export type MenuJumpType = 'route' | 'url' | 'yaml';
|
|
161
|
+
export interface MenuItem {
|
|
162
|
+
label: string;
|
|
163
|
+
type?: MenuJumpType;
|
|
164
|
+
path?: string;
|
|
165
|
+
icon?: string;
|
|
166
|
+
children?: MenuItem[];
|
|
167
|
+
[key: string]: any;
|
|
168
|
+
}
|
|
169
|
+
export interface MenuConfig {
|
|
170
|
+
meta?: {
|
|
171
|
+
menuId?: string;
|
|
172
|
+
title?: string;
|
|
173
|
+
version?: number;
|
|
174
|
+
};
|
|
175
|
+
projectName?: string;
|
|
176
|
+
logo?: string;
|
|
177
|
+
mode?: 'sidebar' | 'horizontal';
|
|
178
|
+
width?: number;
|
|
179
|
+
dictType?: string;
|
|
180
|
+
menus?: MenuItem[];
|
|
181
|
+
showLogout?: boolean;
|
|
182
|
+
logoutText?: string;
|
|
183
|
+
}
|
|
184
|
+
export interface MenuClickPayload {
|
|
185
|
+
type: MenuJumpType;
|
|
186
|
+
path: string;
|
|
187
|
+
route?: string;
|
|
188
|
+
url?: string;
|
|
189
|
+
fileId?: string;
|
|
190
|
+
item: MenuItem;
|
|
191
|
+
level: number;
|
|
192
|
+
indexPath: string[];
|
|
193
|
+
index: string;
|
|
194
|
+
}
|
|
@@ -18,11 +18,11 @@ declare function __VLS_template(): {
|
|
|
18
18
|
};
|
|
19
19
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
20
20
|
declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
21
|
-
"update:visible": (value: boolean) => any;
|
|
22
21
|
close: () => any;
|
|
22
|
+
"update:visible": (value: boolean) => any;
|
|
23
23
|
}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
|
|
24
|
-
"onUpdate:visible"?: ((value: boolean) => any) | undefined;
|
|
25
24
|
onClose?: (() => any) | undefined;
|
|
25
|
+
"onUpdate:visible"?: ((value: boolean) => any) | undefined;
|
|
26
26
|
}>, {
|
|
27
27
|
loading: boolean;
|
|
28
28
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|