znyg-frontend-common 1.0.87 → 1.0.89

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.
Files changed (26) hide show
  1. package/es/components/znFormV2/src/components/ZnFormV2Item.vue2.mjs +4 -4
  2. package/es/components/znFormV2/src/components/ZnFormV2Item.vue2.mjs.map +1 -1
  3. package/es/components/znFormV2/src/components/useRenderCheckbox.mjs +1 -1
  4. package/es/components/znFormV2/src/components/useRenderCheckbox.mjs.map +1 -1
  5. package/es/components/znFormV2/src/components/useRenderRadio.mjs +1 -1
  6. package/es/components/znFormV2/src/components/useRenderRadio.mjs.map +1 -1
  7. package/es/components/znFormV2/src/components/useRenderSelect.mjs +1 -1
  8. package/es/components/znFormV2/src/components/useRenderSelect.mjs.map +1 -1
  9. package/es/components/znFormV2/src/index.vue2.mjs +6 -6
  10. package/es/components/znFormV2/src/index.vue2.mjs.map +1 -1
  11. package/es/index.mjs +1 -1
  12. package/es/index.mjs.map +1 -1
  13. package/lib/components/znFormV2/src/components/ZnFormV2Item.vue2.js +4 -4
  14. package/lib/components/znFormV2/src/components/ZnFormV2Item.vue2.js.map +1 -1
  15. package/lib/components/znFormV2/src/components/useRenderCheckbox.js +1 -1
  16. package/lib/components/znFormV2/src/components/useRenderCheckbox.js.map +1 -1
  17. package/lib/components/znFormV2/src/components/useRenderRadio.js +1 -1
  18. package/lib/components/znFormV2/src/components/useRenderRadio.js.map +1 -1
  19. package/lib/components/znFormV2/src/components/useRenderSelect.js +1 -1
  20. package/lib/components/znFormV2/src/components/useRenderSelect.js.map +1 -1
  21. package/lib/components/znFormV2/src/index.vue2.js +7 -7
  22. package/lib/components/znFormV2/src/index.vue2.js.map +1 -1
  23. package/lib/index.js +1 -1
  24. package/lib/index.js.map +1 -1
  25. package/package.json +1 -1
  26. package/theme-default/index.css +1 -1
@@ -1,6 +1,6 @@
1
- import{defineComponent as e,useModel as l,computed as n,inject as o,ref as r,unref as t,markRaw as a,createVNode as s,createTextVNode as u,resolveComponent as i,h as m,createElementBlock as c,openBlock as d,Fragment as p,createCommentVNode as f,toDisplayString as y,createElementVNode as E,createBlock as _,normalizeStyle as v,mergeProps as h,mergeModels as L}from"vue";import"./Tree.vue.mjs";import{hyphenToCamelCase as b,getFormProp as g,setFormProp as R}from"../helper/index.mjs";import{getComponent as C}from"../helper/componentMap.mjs";import{formEnumMapKey as V,ComponentNameEnum as w}from"../interface/index.mjs";import{useRenderCheckbox as T}from"./useRenderCheckbox.mjs";import{useRenderComponent as $}from"./useRenderComponent.mjs";import{useRenderRadio as x}from"./useRenderRadio.mjs";import{useRenderSelect as S}from"./useRenderSelect.mjs";import{useLocalStorage as M}from"@vueuse/core";import O from"./Tree.vue2.mjs";var j=Object.defineProperty,D=(e,l)=>j(e,"name",{value:l,configurable:!0});const I={key:1,style:{display:"flex","align-items":"center","min-height":"32px",transition:"opacity 0.3s ease",opacity:"0.6"}},k={style:{display:"flex","align-items":"center",gap:"8px"}},P={style:{color:"#999","font-size":"12px"}},N={class:"zn-form-item-fade-in",style:{display:"contents"}};var A=e({name:"ZnFormV2Item",__name:"ZnFormV2Item",props:L({column:{type:Object,required:!0},style:{required:!1},isView:{type:Boolean,skipCheck:!0,required:!1,default:!1},isLazyLoading:{type:Boolean,required:!1,default:!1},isReady:{type:Boolean,required:!1,default:!0}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(L){const j=L,A=M("znyg",{dictMap:{}}),U=l(L,"modelValue"),Y=new Map,z=n((()=>{const{dictCode:e}=j.column;let l=j.column.fieldNames?.label??"label",n=j.column.fieldNames?.value??"value";return e&&(l="name",n="code"),{label:l,value:n,children:j.column.fieldNames?.children??"children",disabled:j.column.fieldNames?.disabled??"disabled"}})),B=o(V,r(new Map)),q=n((()=>j.column.enum)),H=n((()=>{const{useEnumMap:e,enumKey:l,prop:n,el:o,dictCode:r}=j.column,a=t(B),s=t(q);let u;if(r&&A&&A.value?.dictMap&&(u=A.value.dictMap[r?.toString()]??[]),e)if("function"==typeof e)u=e(a);else{const n=a.get(e);u=n?l?n[l]||[]:n:[]}if(!u)if(Array.isArray(s)&&s.length>0)u=s;else{let e=a.get(n);u=e?b(o)===w.EL_SELECT_V2?e.map((e=>({...e,label:e[t(z).label],value:e[t(z).value]}))):l?e[l]||[]:e:[]}return u||[]})),K=n((()=>{const e=t(z).label,l=t(z).value,n=t(z).children,o=b(j.column?.el);let r=j.column.props??{};const a=`formProps_${o}_${JSON.stringify(r)}_${e}_${l}_${n}`;if(Y.has(a))return Y.get(a);let s={...r};return o===w.EL_TREE_SELECT&&(s={...s,props:{...s.props,label:e,children:n},nodeKey:l}),o===w.EL_CASCADER&&(s={...s,props:{...s.props,label:e,value:l,children:n}}),o===w.EL_DATE_PICKER&&("datetime"===s.type&&(s={valueFormat:"YYYY-MM-DD HH:mm:ss",...s}),s=(s.type,{valueFormat:"YYYY-MM-DD",...s})),o===w.EL_TIME_PICKER&&(s={valueFormat:"HH:mm:ss",...s}),Y.set(a,s),s})),F=n((()=>{const{props:{type:e,isRange:l,placeholder:n,notDefaultPlaceholder:o}={},el:r}=j.column?.props?j.column:{props:{},el:j.column?.el},t=`placeholder_${r}_${e}_${l}_${n}_${o}`;if(Y.has(t))return Y.get(t);let a;if(!["datetimerange","daterange","monthrange"].includes(e)&&!l||o){a={placeholder:n??(b(r)?.includes(w.EL_INPUT)?"请输入":"请选择")}}else a={rangeSeparator:"至",startPlaceholder:"开始时间",endPlaceholder:"结束时间"};return Y.set(t,a),a})),G=n((()=>{const{props:{clearable:e}={},defaultValue:l}=j.column;return e??null==l})),J=n((()=>{const{render:e,renderInView:l}=j.column,n=t(j.isView);if(j.isLazyLoading&&!j.isReady)return!1;if(n){return!(!l&&!e)}return!!e})),X=D((()=>{const{disabled:e}=j.column;if("boolean"==typeof e)return e;if("function"==typeof e){const l=`disabled_${j.column.prop}_${JSON.stringify(t(U))}`;if(Y.has(l))return Y.get(l);const n=e(t(U));return Y.set(l,n),n}return!1}),"isDisabled"),Z=a(e({name:"RenderSlots",props:["style","column","isView"],setup:e=>()=>{if(j.isLazyLoading&&!j.isReady)return s("div",{style:"min-height: 32px; opacity: 0.5;"},[u("Loading...")]);const{render:l,renderInView:n}=e.column;let o=null;if(o=t(e.isView)&&n||l,!o)return null;const r={model:t(U),data:g(t(U),e.column.prop),enumData:t(H)};try{return o(r)}catch(e){return null}}})),W=D((()=>{const e=g(t(U),j.column.prop),l=b(j.column.el);if(l!==w.EL_SELECT&&l!==w.EL_SELECT_V2)return e;const n=t(z),o=t(H);if(j.column.props?.multiple){return o.filter((l=>e?.includes(l[n.value]))).map((e=>e[n.label])).join(",")}{const l=o.find((l=>l[n.value]===e));return l?l[n.label]:e}}),"getShowValue"),Q=a(e({name:"RenderElComponents",props:["column"],setup:e=>()=>{if(t(j.isView))return s("span",null,[W()]);const l=e.column.el,n=b(l);let o=C(l);if(!o&&n&&(o=C(n)),!o)return console.warn(`未找到组件: ${l} (也尝试了 ${n})`),null;switch(n){case w.EL_SELECT:case w.EL_SELECT_V2:return S(o,t(U),e.column,t(K),t(F),t(G),X(),t(H),t(z));case w.EL_RADIO_GROUP:case w.EL_RADIO:case w.EL_RADIO_BUTTON:return x(o,t(U),e.column,t(K),X(),t(H),t(z));case w.EL_CHECKBOX_GROUP:case w.EL_Checkbox:case w.EL_CHECKBOX_BUTTON:return T(o,t(U),e.column,t(K),X(),t(H),t(z));default:return $(o,t(U),e.column,{...t(K),...t(F),clearable:t(G),disabled:X()})}}})),ee=a(e({name:"RenderComponent",props:["style","column"],setup:e=>()=>{const{el:l}=e.column;try{const n=i(l);return n?m(n,{modelValue:g(t(U),e.column.prop),"onUpdate:modelValue":D((l=>R(t(U),e.column.prop,l)),"onUpdate:modelValue"),...t(K),...t(F),clearable:t(G),disabled:X(),style:e.style}):(console.warn(`未找到自定义组件: ${l}`),null)}catch(e){return console.error(`渲染自定义组件失败: ${l}`,e),null}}}));return(e,l)=>(d(),c(p,null,[f(" 调试信息 "),f("v-if",!0),f(" 懒加载占位符 "),L.isLazyLoading&&!L.isReady?(d(),c("div",I,[E("div",k,[l[1]||(l[1]=E("div",{style:{width:"12px",height:"12px",animation:"spin 0.8s linear infinite",border:"1px solid #409eff","border-top":"1px solid transparent","border-radius":"50%"}},null,-1
1
+ import{defineComponent as e,useModel as l,computed as n,inject as o,ref as r,unref as t,markRaw as a,createVNode as u,createTextVNode as s,resolveComponent as i,h as m,createElementBlock as c,openBlock as d,Fragment as p,createCommentVNode as f,toDisplayString as y,createElementVNode as E,createBlock as _,normalizeStyle as v,mergeProps as h,mergeModels as L}from"vue";import"./Tree.vue.mjs";import{hyphenToCamelCase as b,getFormProp as g,setFormProp as R}from"../helper/index.mjs";import{getComponent as C}from"../helper/componentMap.mjs";import{formEnumMapKey as V,ComponentNameEnum as w}from"../interface/index.mjs";import{useRenderCheckbox as T}from"./useRenderCheckbox.mjs";import{useRenderComponent as $}from"./useRenderComponent.mjs";import{useRenderRadio as x}from"./useRenderRadio.mjs";import{useRenderSelect as S}from"./useRenderSelect.mjs";import{useLocalStorage as M}from"@vueuse/core";import O from"./Tree.vue2.mjs";var j=Object.defineProperty,D=(e,l)=>j(e,"name",{value:l,configurable:!0});const I={key:1,style:{display:"flex","align-items":"center","min-height":"32px",transition:"opacity 0.3s ease",opacity:"0.6"}},k={style:{display:"flex","align-items":"center",gap:"8px"}},P={style:{color:"#999","font-size":"12px"}};var N=e({name:"ZnFormV2Item",__name:"ZnFormV2Item",props:L({column:{type:Object,required:!0},style:{required:!1},isView:{type:Boolean,skipCheck:!0,required:!1,default:!1},isLazyLoading:{type:Boolean,required:!1,default:!1},isReady:{type:Boolean,required:!1,default:!0}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(L){const j=L,N=M("znyg",{dictMap:{}}),A=l(L,"modelValue"),U=new Map,Y=n((()=>{const{dictCode:e}=j.column;let l=j.column.fieldNames?.label??"label",n=j.column.fieldNames?.value??"value";return e&&(l="name",n="code"),{label:l,value:n,children:j.column.fieldNames?.children??"children",disabled:j.column.fieldNames?.disabled??"disabled"}})),B=o(V,r(new Map)),q=n((()=>j.column.enum)),z=n((()=>{const{useEnumMap:e,enumKey:l,prop:n,el:o,dictCode:r}=j.column,a=t(B),u=t(q);let s;if(r&&N&&N.value?.dictMap&&(s=N.value.dictMap[r?.toString()]??[]),e)if("function"==typeof e)s=e(a);else{const n=a.get(e);s=n?l?n[l]||[]:n:[]}if(!s)if(Array.isArray(u)&&u.length>0)s=u;else{let e=a.get(n);s=e?b(o)===w.EL_SELECT_V2?e.map((e=>({...e,label:e[t(Y).label],value:e[t(Y).value]}))):l?e[l]||[]:e:[]}return s||[]})),H=n((()=>{const e=t(Y).label,l=t(Y).value,n=t(Y).children,o=b(j.column?.el);let r=j.column.props??{};const a=`formProps_${o}_${JSON.stringify(r)}_${e}_${l}_${n}`;if(U.has(a))return U.get(a);let u={};o===w.EL_TREE_SELECT&&(u={props:{label:e,children:n},nodeKey:l}),o===w.EL_CASCADER&&(u={props:{label:e,value:l,children:n}}),o===w.EL_DATE_PICKER&&(u="datetime"===r.type?{valueFormat:"YYYY-MM-DD HH:mm:ss"}:(r.type,{valueFormat:"YYYY-MM-DD"})),o===w.EL_TIME_PICKER&&(u={valueFormat:"HH:mm:ss"});const s={...u,...r};return U.set(a,s),s})),K=n((()=>{const{props:{type:e,isRange:l,placeholder:n,notDefaultPlaceholder:o}={},el:r}=j.column?.props?j.column:{props:{},el:j.column?.el},t=`placeholder_${r}_${e}_${l}_${n}_${o}`;if(U.has(t))return U.get(t);let a;if(!["datetimerange","daterange","monthrange"].includes(e)&&!l||o){a={placeholder:n??(b(r)?.includes(w.EL_INPUT)?"请输入":"请选择")}}else a={rangeSeparator:"至",startPlaceholder:"开始时间",endPlaceholder:"结束时间"};return U.set(t,a),a})),F=n((()=>{const{props:{clearable:e}={},defaultValue:l}=j.column;return e??null==l})),G=n((()=>({...t(K),clearable:t(F),disabled:X(),...t(H)}))),J=n((()=>{const{render:e,renderInView:l}=j.column,n=t(j.isView);if(j.isLazyLoading&&!j.isReady)return!1;if(n){return!(!l&&!e)}return!!e})),X=D((()=>{const{disabled:e}=j.column;if("boolean"==typeof e)return e;if("function"==typeof e){const l=`disabled_${j.column.prop}_${JSON.stringify(t(A))}`;if(U.has(l))return U.get(l);const n=e(t(A));return U.set(l,n),n}return!1}),"isDisabled"),Z=a(e({name:"RenderSlots",props:["style","column","isView"],setup:e=>()=>{if(j.isLazyLoading&&!j.isReady)return u("div",{style:"min-height: 32px; opacity: 0.5;"},[s("Loading...")]);const{render:l,renderInView:n}=e.column;let o=null;if(o=t(e.isView)&&n||l,!o)return null;const r={model:t(A),data:g(t(A),e.column.prop),enumData:t(z)};try{return o(r)}catch(e){return null}}})),W=D((()=>{const e=g(t(A),j.column.prop),l=b(j.column.el);if(l!==w.EL_SELECT&&l!==w.EL_SELECT_V2)return e;const n=t(Y),o=t(z);if(j.column.props?.multiple){return o.filter((l=>e?.includes(l[n.value]))).map((e=>e[n.label])).join(",")}{const l=o.find((l=>l[n.value]===e));return l?l[n.label]:e}}),"getShowValue"),Q=a(e({name:"RenderElComponents",props:["column"],setup:e=>()=>{if(t(j.isView))return u("span",null,[W()]);const l=e.column.el,n=b(l);let o=C(l);if(!o&&n&&(o=C(n)),!o)return console.warn(`未找到组件: ${l} (也尝试了 ${n})`),null;switch(n){case w.EL_SELECT:case w.EL_SELECT_V2:return S(o,t(A),e.column,t(H),t(K),t(F),X(),t(z),t(Y));case w.EL_RADIO_GROUP:case w.EL_RADIO:case w.EL_RADIO_BUTTON:return x(o,t(A),e.column,t(G),t(z),t(Y));case w.EL_CHECKBOX_GROUP:case w.EL_Checkbox:case w.EL_CHECKBOX_BUTTON:return T(o,t(A),e.column,t(G),t(z),t(Y));default:return $(o,t(A),e.column,t(G))}}})),ee=a(e({name:"RenderComponent",props:["style","column"],setup:e=>()=>{const{el:l}=e.column;try{const n=i(l);return n?m(n,{modelValue:g(t(A),e.column.prop),"onUpdate:modelValue":D((l=>R(t(A),e.column.prop,l)),"onUpdate:modelValue"),style:e.style,...t(G)}):(console.warn(`未找到自定义组件: ${l}`),null)}catch(e){return console.error(`渲染自定义组件失败: ${l}`,e),null}}}));return(e,l)=>(d(),c(p,null,[f(" 调试信息 "),f("v-if",!0),f(" 懒加载占位符 "),L.isLazyLoading&&!L.isReady?(d(),c("div",I,[E("div",k,[l[1]||(l[1]=E("div",{style:{width:"12px",height:"12px",animation:"spin 0.8s linear infinite",border:"1px solid #409eff","border-top":"1px solid transparent","border-radius":"50%"}},null,-1
2
2
  /* HOISTED */)),E("span",P,y(L.column.label||"")+" 加载中...",1
3
- /* TEXT */)])])):(d(),c(p,{key:2},[f(" 实际组件内容 - 使用无侵入式包装器 "),E("div",N,[J.value?(d(),_(t(Z),{key:0,style:v(L.style),column:L.column,"is-view":L.isView},null,8,["style","column","is-view"])):t(b)(L.column.el)===t(w).EL_TREE?(d(),_(O,h({key:1,data:H.value,"model-value":t(g)(U.value,L.column.prop),"onUpdate:modelValue":l[0]||(l[0]=e=>t(R)(U.value,L.column.prop,e))},{...K.value}),null,16,["data","model-value"])):t(b)(L.column.el)?.startsWith("El")?(d(),_(t(Q),{key:2,column:L.column},null,8,["column"])):(d(),_(t(ee),{key:3,style:v(L.style),column:L.column},null,8,["style","column"]))])],2112
4
- /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))],64
5
- /* STABLE_FRAGMENT */))}});export{A as default};
3
+ /* TEXT */)])])):(d(),c(p,{key:2},[f(" 实际组件内容 "),J.value?(d(),_(t(Z),{key:0,style:v(L.style),column:L.column,"is-view":L.isView},null,8,["style","column","is-view"])):t(b)(L.column.el)===t(w).EL_TREE?(d(),_(O,h({key:1,data:z.value,"model-value":t(g)(A.value,L.column.prop),"onUpdate:modelValue":l[0]||(l[0]=e=>t(R)(A.value,L.column.prop,e))},{...H.value}),null,16,["data","model-value"])):t(b)(L.column.el)?.startsWith("El")?(d(),_(t(Q),{key:2,column:L.column},null,8,["column"])):(d(),_(t(ee),{key:3,style:v(L.style),column:L.column},null,8,["style","column"]))],64
4
+ /* STABLE_FRAGMENT */))],64
5
+ /* STABLE_FRAGMENT */))}});export{N as default};
6
6
  //# sourceMappingURL=ZnFormV2Item.vue2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ZnFormV2Item.vue2.mjs","sources":["../../../../../../../packages/components/znFormV2/src/components/ZnFormV2Item.vue"],"sourcesContent":["<template>\n <!-- 调试信息 -->\n <div v-if=\"false\" style=\"margin: 5px; padding: 5px; border: 1px solid #ccc; color: #999; font-size: 12px;\">\n [Debug] {{ column.prop }}: shouldUseCustomRender={{ shouldUseCustomRender }}, el={{ column.el }}, render={{ !!column.render }}, isView={{ isView }}, isLazyLoading={{ isLazyLoading }}, isReady={{ isReady }}\n </div>\n\n <!-- 懒加载占位符 -->\n <div\n v-if=\"isLazyLoading && !isReady\"\n style=\"display: flex; align-items: center; min-height: 32px; transition: opacity 0.3s ease; opacity: 0.6;\"\n >\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <div style=\"width: 12px; height: 12px; animation: spin 0.8s linear infinite; border: 1px solid #409eff; border-top: 1px solid transparent; border-radius: 50%;\"></div>\n <span style=\"color: #999; font-size: 12px;\">{{ column.label || '' }} 加载中...</span>\n </div>\n </div>\n\n <!-- 实际组件内容 - 使用无侵入式包装器 -->\n <div\n v-else\n class=\"zn-form-item-fade-in\"\n style=\"display: contents;\"\n >\n <RenderSlots v-if=\"shouldUseCustomRender\" :style=\"style\" :column=\"column\" :is-view=\"isView\" />\n\n <Tree\n v-else-if=\"hyphenToCamelCase(column.el) === ComponentNameEnum.EL_TREE\"\n :data=\"columnEnum\"\n :model-value=\"getFormProp(model, column.prop)\"\n @update:model-value=\"(v) => setFormProp(model, column.prop, v)\"\n v-bind=\"{ ...formProps }\" />\n\n <RenderElComponents v-else-if=\"hyphenToCamelCase(column.el)?.startsWith('El')\" :column=\"column\" />\n\n <RenderComponent v-else :style=\"style\" :column=\"column\" />\n </div>\n</template>\n\n<script setup lang=\"tsx\">\nimport { computed, inject, markRaw, ref, resolveComponent, unref, Ref, shallowRef, nextTick, h } from 'vue'\n\nimport Tree from './Tree.vue'\n\nimport { getFormProp, hyphenToCamelCase, setComponentSlots, setFormProp } from '../helper'\nimport { getComponent } from '../helper/componentMap'\nimport { ComponentNameEnum, formEnumMapKey, type ZnFormV2SchemaProps, type PascalCaseComponentName } from '../interface'\nimport { useRenderCheckbox } from './useRenderCheckbox'\nimport { useRenderComponent } from './useRenderComponent'\nimport { useRenderRadio } from './useRenderRadio'\nimport { useRenderSelect } from './useRenderSelect'\nimport type { Component } from 'vue'\nimport { defineComponent } from 'vue'\nimport { useLocalStorage } from '@vueuse/core'\n\ndefineOptions({ name: 'ZnFormV2Item' })\n\ninterface ZnFormV2ItemProps {\n column: ZnFormV2SchemaProps\n style?: CSSStyleDeclaration\n isView?: boolean | Ref<boolean>\n isLazyLoading?: boolean\n isReady?: boolean\n}\n\nconst props = defineProps({\n column: { type: Object, required: true },\n style: { required: false },\n isView: { type: Boolean, skipCheck: true, required: false, default: false },\n isLazyLoading: { type: Boolean, required: false, default: false },\n isReady: { type: Boolean, required: false, default: true }\n})\n\nconst znygStore = useLocalStorage('znyg', { dictMap: {} })\n\nconst model = defineModel<Record<string, any>>({ required: true })\n\n// 缓存计算结果\nconst cachedResults = new Map()\n\n// 判断 fieldNames 设置 label && value && children 的 key 值\nconst fieldNames = computed(() => {\n const { dictCode } = props.column\n let label = props.column.fieldNames?.label ?? 'label'\n let value = props.column.fieldNames?.value ?? 'value'\n if (dictCode) {\n label = 'name'\n value = 'code'\n }\n\n return {\n label: label,\n value: value,\n children: props.column.fieldNames?.children ?? 'children',\n disabled: props.column.fieldNames?.disabled ?? 'disabled'\n }\n})\n\n// 接收 enumMap (el 为 select-v 2 需单独处理 enumData)\nconst enumMap = inject(formEnumMapKey, ref(new Map()))\n\n// 添加对column.enum的直接引用,提高响应性\nconst rawEnum = computed(() => props.column.enum)\n\nconst columnEnum = computed(() => {\n const { useEnumMap, enumKey, prop, el, dictCode } = props.column\n\n // 确保从enumMap获取最新数据\n const currentEnumMap = unref(enumMap)\n\n // 通过获取原始enum来确保依赖收集\n const currentRawEnum = unref(rawEnum)\n\n let result\n if (dictCode) {\n // 如果存在dictCode,则直接从字典中获取\n if (znygStore && znygStore.value?.dictMap) {\n result = znygStore.value.dictMap[dictCode?.toString()] ?? []\n }\n }\n\n if (useEnumMap) {\n if (typeof useEnumMap === 'function') {\n result = useEnumMap(currentEnumMap)\n } else {\n const data = currentEnumMap.get(useEnumMap)\n if (!data) {\n result = []\n } else if (enumKey) {\n result = data[enumKey] || []\n } else {\n result = data\n }\n }\n }\n\n if (!result) {\n // 如果直接的enum是数组且不为空,优先使用它\n if (Array.isArray(currentRawEnum) && currentRawEnum.length > 0) {\n result = currentRawEnum\n } else {\n // 否则从enumMap中获取\n let enumData = currentEnumMap.get(prop)\n\n if (!enumData) {\n result = []\n } else if (hyphenToCamelCase(el) === ComponentNameEnum.EL_SELECT_V2) {\n result = enumData.map((item: Record<string, any>) => {\n return { ...item, label: item[unref(fieldNames).label], value: item[unref(fieldNames).value] }\n })\n } else if (enumKey) {\n result = enumData[enumKey] || []\n } else {\n result = enumData\n }\n }\n }\n\n return result || []\n})\n\n// 处理透传的 formProps (el 为 tree-select、cascader 的时候需要给下默认 label && value && children)\nconst formProps = computed(() => {\n const label = unref(fieldNames).label\n const value = unref(fieldNames).value\n const children = unref(fieldNames).children\n const formEl = hyphenToCamelCase(props.column?.el)\n let formProps = props.column.props ?? {}\n\n // 创建缓存键\n const cacheKey = `formProps_${formEl}_${JSON.stringify(formProps)}_${label}_${value}_${children}`\n\n // 检查缓存\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey)\n }\n\n let result = { ...formProps }\n if (formEl === ComponentNameEnum.EL_TREE_SELECT) {\n result = { ...result, props: { ...result.props, label, children }, nodeKey: value }\n }\n\n if (formEl === ComponentNameEnum.EL_CASCADER) {\n result = { ...result, props: { ...result.props, label, value, children } }\n }\n\n if (formEl === ComponentNameEnum.EL_DATE_PICKER) {\n if (result.type === 'datetime') result = { valueFormat: 'YYYY-MM-DD HH:mm:ss', ...result }\n if (result.type === 'date') result = { valueFormat: 'YYYY-MM-DD', ...result }\n else result = { valueFormat: 'YYYY-MM-DD', ...result }\n }\n\n if (formEl === ComponentNameEnum.EL_TIME_PICKER) result = { valueFormat: 'HH:mm:ss', ...result }\n\n // 缓存结果\n cachedResults.set(cacheKey, result)\n return result\n})\n\n// 处理默认 placeholder\nconst placeholder = computed(() => {\n const { props: { type, isRange, placeholder, notDefaultPlaceholder } = {}, el } = props.column?.props ? props.column : { props: {}, el: props.column?.el }\n\n // 创建缓存键\n const cacheKey = `placeholder_${el}_${type}_${isRange}_${placeholder}_${notDefaultPlaceholder}`\n\n // 检查缓存\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey)\n }\n\n let result\n if ((['datetimerange', 'daterange', 'monthrange'].includes(type) || isRange) && !notDefaultPlaceholder) {\n result = { rangeSeparator: '至', startPlaceholder: '开始时间', endPlaceholder: '结束时间' }\n } else {\n const placeholderConst = placeholder ?? (hyphenToCamelCase(el)?.includes(ComponentNameEnum.EL_INPUT) ? '请输入' : '请选择')\n result = { placeholder: placeholderConst }\n }\n\n // 缓存结果\n cachedResults.set(cacheKey, result)\n return result\n})\n\n// 是否有清除按钮 (当有默认值时,清除按钮不显示)\nconst clearable = computed(() => {\n const { props: { clearable } = {}, defaultValue } = props.column\n return clearable ?? (defaultValue === null || defaultValue === undefined)\n})\n\n// 判断是否应该使用自定义渲染\nconst shouldUseCustomRender = computed(() => {\n const { render, renderInView } = props.column\n const currentIsView = unref(props.isView)\n\n // 懒加载状态检查:如果组件未准备好,延迟自定义渲染\n if (props.isLazyLoading && !props.isReady) {\n return false\n }\n\n\n // 在查看模式下:优先使用 renderInView,如果没有则使用 render\n if (currentIsView) {\n const result = !!(renderInView || render)\n return result\n }\n\n // 在编辑模式下:只使用 render\n const result = !!render\n return result\n})\n\n// 是否禁用 - 缓存结果提高性能\nconst isDisabled = () => {\n const { disabled } = props.column\n if (typeof disabled === 'boolean') return disabled\n if (typeof disabled === 'function') {\n const cacheKey = `disabled_${props.column.prop}_${JSON.stringify(unref(model))}`\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey)\n }\n const result = disabled(unref(model))\n cachedResults.set(cacheKey, result)\n return result\n }\n return false\n}\n\n// 渲染自定义slot\nconst RenderSlots = markRaw(\n defineComponent({\n name: 'RenderSlots',\n props: ['style', 'column', 'isView'],\n setup(slotProps) {\n return () => {\n // 检查懒加载状态,如果未准备好则显示占位符\n if (props.isLazyLoading && !props.isReady) {\n return <div style=\"min-height: 32px; opacity: 0.5;\">Loading...</div>\n }\n\n const { render, renderInView } = slotProps.column\n const currentIsView = unref(slotProps.isView)\n\n\n\n let renderFunction = null\n\n // 在查看模式下:优先使用 renderInView,如果没有则使用 render\n if (currentIsView) {\n renderFunction = renderInView || render\n } else {\n // 在编辑模式下:只使用 render\n renderFunction = render\n }\n\n\n if (!renderFunction) return null\n\n const renderScope = {\n model: unref(model),\n data: getFormProp(unref(model), slotProps.column.prop),\n enumData: unref(columnEnum)\n }\n\n try {\n const result = renderFunction(renderScope)\n return result\n } catch (error) {\n return null\n }\n }\n }\n })\n)\n\n// 计算要显示的值(查看模式用)\nconst getShowValue = () => {\n const val = getFormProp(unref(model), props.column.prop)\n const formEl = hyphenToCamelCase(props.column.el)\n\n if (formEl !== ComponentNameEnum.EL_SELECT && formEl !== ComponentNameEnum.EL_SELECT_V2) {\n return val\n }\n\n const currentFieldNames = unref(fieldNames)\n const currentColumnEnum = unref(columnEnum)\n\n if (props.column.props?.multiple) {\n // 多选下拉框\n const selectedItemList = currentColumnEnum.filter((_: any) => val?.includes(_[currentFieldNames.value]))\n return selectedItemList.map((_: any) => _[currentFieldNames.label]).join(',')\n } else {\n const selectedItem = currentColumnEnum.find((_: any) => _[currentFieldNames.value] === val)\n return selectedItem ? selectedItem[currentFieldNames.label] : val\n }\n}\n\n// 渲染Element组件\nconst RenderElComponents = markRaw(\n defineComponent({\n name: 'RenderElComponents',\n props: ['column'],\n setup(elProps) {\n return () => {\n // 如果是查看模式,显示纯文本\n if (unref(props.isView)) {\n return <span>{getShowValue()}</span>\n }\n\n const originalEl = elProps.column.el\n const formEl = hyphenToCamelCase(originalEl)\n\n // 首先尝试使用原始格式(kebab-case 优先)\n let componentName = getComponent(originalEl!)\n\n // 如果没找到,尝试转换后的格式\n if (!componentName && formEl) {\n componentName = getComponent(formEl)\n }\n\n if (!componentName) {\n console.warn(`未找到组件: ${originalEl} (也尝试了 ${formEl})`)\n return null\n }\n\n // 根据不同组件类型使用不同的渲染逻辑\n switch (formEl) {\n case ComponentNameEnum.EL_SELECT:\n case ComponentNameEnum.EL_SELECT_V2:\n return useRenderSelect(\n componentName,\n unref(model),\n elProps.column,\n unref(formProps),\n unref(placeholder),\n unref(clearable),\n isDisabled(),\n unref(columnEnum),\n unref(fieldNames)\n )\n\n case ComponentNameEnum.EL_RADIO_GROUP:\n case ComponentNameEnum.EL_RADIO:\n case ComponentNameEnum.EL_RADIO_BUTTON:\n return useRenderRadio(\n componentName,\n unref(model),\n elProps.column,\n unref(formProps),\n isDisabled(),\n unref(columnEnum),\n unref(fieldNames)\n )\n\n case ComponentNameEnum.EL_CHECKBOX_GROUP:\n case ComponentNameEnum.EL_Checkbox:\n case ComponentNameEnum.EL_CHECKBOX_BUTTON:\n return useRenderCheckbox(\n componentName,\n unref(model),\n elProps.column,\n unref(formProps),\n isDisabled(),\n unref(columnEnum),\n unref(fieldNames)\n )\n\n default:\n return useRenderComponent(\n componentName,\n unref(model),\n elProps.column,\n {\n ...unref(formProps),\n ...unref(placeholder),\n clearable: unref(clearable),\n disabled: isDisabled()\n }\n )\n }\n }\n }\n })\n)\n\n// 渲染自定义组件\nconst RenderComponent = markRaw(\n defineComponent({\n name: 'RenderComponent',\n props: ['style', 'column'],\n setup(componentProps) {\n return () => {\n const { el } = componentProps.column\n\n try {\n const Component = resolveComponent(el!)\n\n if (!Component) {\n console.warn(`未找到自定义组件: ${el}`)\n return null\n }\n\n return h(Component, {\n modelValue: getFormProp(unref(model), componentProps.column.prop),\n 'onUpdate:modelValue': (val: any) => setFormProp(unref(model), componentProps.column.prop, val),\n ...unref(formProps),\n ...unref(placeholder),\n clearable: unref(clearable),\n disabled: isDisabled(),\n style: componentProps.style\n })\n } catch (error) {\n console.error(`渲染自定义组件失败: ${el}`, error)\n return null\n }\n }\n }\n })\n)\n</script>\n\n\n\n\n"],"names":["props","__props","znygStore","useLocalStorage","dictMap","model","_useModel","cachedResults","Map","fieldNames","computed","dictCode","column","label","value","children","disabled","enumMap","inject","formEnumMapKey","ref","rawEnum","enum","columnEnum","useEnumMap","enumKey","prop","el","currentEnumMap","unref","currentRawEnum","result","toString","data","get","Array","isArray","length","enumData","hyphenToCamelCase","ComponentNameEnum","EL_SELECT_V2","map","item","formProps","formEl","cacheKey","JSON","stringify","has","EL_TREE_SELECT","nodeKey","EL_CASCADER","EL_DATE_PICKER","type","valueFormat","EL_TIME_PICKER","set","placeholder","isRange","notDefaultPlaceholder","includes","EL_INPUT","rangeSeparator","startPlaceholder","endPlaceholder","clearable","defaultValue","undefined","shouldUseCustomRender","render","renderInView","currentIsView","isView","isLazyLoading","isReady","isDisabled","__name","RenderSlots","markRaw","defineComponent","name","setup","slotProps","_createVNode","style","_createTextVNode","renderFunction","renderScope","getFormProp","error","getShowValue","val","EL_SELECT","currentFieldNames","currentColumnEnum","multiple","selectedItemList","filter","_","join","selectedItem","find","RenderElComponents","elProps","originalEl","componentName","getComponent","console","warn","useRenderSelect","EL_RADIO_GROUP","EL_RADIO","EL_RADIO_BUTTON","useRenderRadio","EL_CHECKBOX_GROUP","EL_Checkbox","EL_CHECKBOX_BUTTON","useRenderCheckbox","useRenderComponent","RenderComponent","componentProps","Component","resolveComponent","h","modelValue","setFormProp"],"mappings":"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"}
1
+ {"version":3,"file":"ZnFormV2Item.vue2.mjs","sources":["../../../../../../../packages/components/znFormV2/src/components/ZnFormV2Item.vue"],"sourcesContent":["<template>\n <!-- 调试信息 -->\n <div v-if=\"false\" style=\"margin: 5px; padding: 5px; border: 1px solid #ccc; color: #999; font-size: 12px;\">\n [Debug] {{ column.prop }}: shouldUseCustomRender={{ shouldUseCustomRender }}, el={{ column.el }}, render={{ !!column.render }}, isView={{ isView }}, isLazyLoading={{ isLazyLoading }}, isReady={{ isReady }}\n </div>\n\n <!-- 懒加载占位符 -->\n <div\n v-if=\"isLazyLoading && !isReady\"\n style=\"display: flex; align-items: center; min-height: 32px; transition: opacity 0.3s ease; opacity: 0.6;\"\n >\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <div style=\"width: 12px; height: 12px; animation: spin 0.8s linear infinite; border: 1px solid #409eff; border-top: 1px solid transparent; border-radius: 50%;\"></div>\n <span style=\"color: #999; font-size: 12px;\">{{ column.label || '' }} 加载中...</span>\n </div>\n </div>\n\n <!-- 实际组件内容 -->\n <template v-else>\n <RenderSlots v-if=\"shouldUseCustomRender\" :style=\"style\" :column=\"column\" :is-view=\"isView\" />\n\n <Tree\n v-else-if=\"hyphenToCamelCase(column.el) === ComponentNameEnum.EL_TREE\"\n :data=\"columnEnum\"\n :model-value=\"getFormProp(model, column.prop)\"\n @update:model-value=\"(v) => setFormProp(model, column.prop, v)\"\n v-bind=\"{ ...formProps }\" />\n\n <RenderElComponents v-else-if=\"hyphenToCamelCase(column.el)?.startsWith('El')\" :column=\"column\" />\n\n <RenderComponent v-else :style=\"style\" :column=\"column\" />\n </template>\n</template>\n\n<script setup lang=\"tsx\">\nimport { computed, inject, markRaw, ref, resolveComponent, unref, Ref, shallowRef, nextTick, h } from 'vue'\n\nimport Tree from './Tree.vue'\n\nimport { getFormProp, hyphenToCamelCase, setComponentSlots, setFormProp } from '../helper'\nimport { getComponent } from '../helper/componentMap'\nimport { ComponentNameEnum, formEnumMapKey, type ZnFormV2SchemaProps, type PascalCaseComponentName } from '../interface'\nimport { useRenderCheckbox } from './useRenderCheckbox'\nimport { useRenderComponent } from './useRenderComponent'\nimport { useRenderRadio } from './useRenderRadio'\nimport { useRenderSelect } from './useRenderSelect'\nimport type { Component } from 'vue'\nimport { defineComponent } from 'vue'\nimport { useLocalStorage } from '@vueuse/core'\n\ndefineOptions({ name: 'ZnFormV2Item' })\n\ninterface ZnFormV2ItemProps {\n column: ZnFormV2SchemaProps\n style?: CSSStyleDeclaration\n isView?: boolean | Ref<boolean>\n isLazyLoading?: boolean\n isReady?: boolean\n}\n\nconst props = defineProps({\n column: { type: Object, required: true },\n style: { required: false },\n isView: { type: Boolean, skipCheck: true, required: false, default: false },\n isLazyLoading: { type: Boolean, required: false, default: false },\n isReady: { type: Boolean, required: false, default: true }\n})\n\nconst znygStore = useLocalStorage('znyg', { dictMap: {} })\n\nconst model = defineModel<Record<string, any>>({ required: true })\n\n// 缓存计算结果\nconst cachedResults = new Map()\n\n// 判断 fieldNames 设置 label && value && children 的 key 值\nconst fieldNames = computed(() => {\n const { dictCode } = props.column\n let label = props.column.fieldNames?.label ?? 'label'\n let value = props.column.fieldNames?.value ?? 'value'\n if (dictCode) {\n label = 'name'\n value = 'code'\n }\n\n return {\n label: label,\n value: value,\n children: props.column.fieldNames?.children ?? 'children',\n disabled: props.column.fieldNames?.disabled ?? 'disabled'\n }\n})\n\n// 接收 enumMap (el 为 select-v 2 需单独处理 enumData)\nconst enumMap = inject(formEnumMapKey, ref(new Map()))\n\n// 添加对column.enum的直接引用,提高响应性\nconst rawEnum = computed(() => props.column.enum)\n\nconst columnEnum = computed(() => {\n const { useEnumMap, enumKey, prop, el, dictCode } = props.column\n\n // 确保从enumMap获取最新数据\n const currentEnumMap = unref(enumMap)\n\n // 通过获取原始enum来确保依赖收集\n const currentRawEnum = unref(rawEnum)\n\n let result\n if (dictCode) {\n // 如果存在dictCode,则直接从字典中获取\n if (znygStore && znygStore.value?.dictMap) {\n result = znygStore.value.dictMap[dictCode?.toString()] ?? []\n }\n }\n\n if (useEnumMap) {\n if (typeof useEnumMap === 'function') {\n result = useEnumMap(currentEnumMap)\n } else {\n const data = currentEnumMap.get(useEnumMap)\n if (!data) {\n result = []\n } else if (enumKey) {\n result = data[enumKey] || []\n } else {\n result = data\n }\n }\n }\n\n if (!result) {\n // 如果直接的enum是数组且不为空,优先使用它\n if (Array.isArray(currentRawEnum) && currentRawEnum.length > 0) {\n result = currentRawEnum\n } else {\n // 否则从enumMap中获取\n let enumData = currentEnumMap.get(prop)\n\n if (!enumData) {\n result = []\n } else if (hyphenToCamelCase(el) === ComponentNameEnum.EL_SELECT_V2) {\n result = enumData.map((item: Record<string, any>) => {\n return { ...item, label: item[unref(fieldNames).label], value: item[unref(fieldNames).value] }\n })\n } else if (enumKey) {\n result = enumData[enumKey] || []\n } else {\n result = enumData\n }\n }\n }\n\n return result || []\n})\n\n// 处理透传的 formProps (el 为 tree-select、cascader 的时候需要给下默认 label && value && children)\nconst formProps = computed(() => {\n const label = unref(fieldNames).label\n const value = unref(fieldNames).value\n const children = unref(fieldNames).children\n const formEl = hyphenToCamelCase(props.column?.el)\n let userProps = props.column.props ?? {}\n\n // 创建缓存键\n const cacheKey = `formProps_${formEl}_${JSON.stringify(userProps)}_${label}_${value}_${children}`\n\n // 检查缓存\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey)\n }\n\n // 基础属性(默认值,优先级最低)\n let baseProps = {}\n\n if (formEl === ComponentNameEnum.EL_TREE_SELECT) {\n baseProps = { props: { label, children }, nodeKey: value }\n }\n\n if (formEl === ComponentNameEnum.EL_CASCADER) {\n baseProps = { props: { label, value, children } }\n }\n\n if (formEl === ComponentNameEnum.EL_DATE_PICKER) {\n if (userProps.type === 'datetime') baseProps = { valueFormat: 'YYYY-MM-DD HH:mm:ss' }\n else if (userProps.type === 'date') baseProps = { valueFormat: 'YYYY-MM-DD' }\n else baseProps = { valueFormat: 'YYYY-MM-DD' }\n }\n\n if (formEl === ComponentNameEnum.EL_TIME_PICKER) baseProps = { valueFormat: 'HH:mm:ss' }\n\n // 合并属性:基础属性在前,用户属性在后(用户属性优先级更高)\n const result = { ...baseProps, ...userProps }\n\n // 缓存结果\n cachedResults.set(cacheKey, result)\n return result\n})\n\n// 处理默认 placeholder\nconst placeholder = computed(() => {\n const { props: { type, isRange, placeholder, notDefaultPlaceholder } = {}, el } = props.column?.props ? props.column : { props: {}, el: props.column?.el }\n\n // 创建缓存键\n const cacheKey = `placeholder_${el}_${type}_${isRange}_${placeholder}_${notDefaultPlaceholder}`\n\n // 检查缓存\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey)\n }\n\n let result\n if ((['datetimerange', 'daterange', 'monthrange'].includes(type) || isRange) && !notDefaultPlaceholder) {\n result = { rangeSeparator: '至', startPlaceholder: '开始时间', endPlaceholder: '结束时间' }\n } else {\n const placeholderConst = placeholder ?? (hyphenToCamelCase(el)?.includes(ComponentNameEnum.EL_INPUT) ? '请输入' : '请选择')\n result = { placeholder: placeholderConst }\n }\n\n // 缓存结果\n cachedResults.set(cacheKey, result)\n return result\n})\n\n// 是否有清除按钮 (当有默认值时,清除按钮不显示)\nconst clearable = computed(() => {\n const { props: { clearable } = {}, defaultValue } = props.column\n return clearable ?? (defaultValue === null || defaultValue === undefined)\n})\n\n// 最终合并的属性(确保用户配置的props具有最高优先级)\nconst finalProps = computed(() => {\n return {\n ...unref(placeholder),\n clearable: unref(clearable),\n disabled: isDisabled(),\n ...unref(formProps) // 用户配置的props放在最后,具有最高优先级\n }\n})\n\n// 判断是否应该使用自定义渲染\nconst shouldUseCustomRender = computed(() => {\n const { render, renderInView } = props.column\n const currentIsView = unref(props.isView)\n\n // 懒加载状态检查:如果组件未准备好,延迟自定义渲染\n if (props.isLazyLoading && !props.isReady) {\n return false\n }\n\n\n // 在查看模式下:优先使用 renderInView,如果没有则使用 render\n if (currentIsView) {\n const result = !!(renderInView || render)\n return result\n }\n\n // 在编辑模式下:只使用 render\n const result = !!render\n return result\n})\n\n// 是否禁用 - 缓存结果提高性能\nconst isDisabled = () => {\n const { disabled } = props.column\n if (typeof disabled === 'boolean') return disabled\n if (typeof disabled === 'function') {\n const cacheKey = `disabled_${props.column.prop}_${JSON.stringify(unref(model))}`\n if (cachedResults.has(cacheKey)) {\n return cachedResults.get(cacheKey)\n }\n const result = disabled(unref(model))\n cachedResults.set(cacheKey, result)\n return result\n }\n return false\n}\n\n// 渲染自定义slot\nconst RenderSlots = markRaw(\n defineComponent({\n name: 'RenderSlots',\n props: ['style', 'column', 'isView'],\n setup(slotProps) {\n return () => {\n // 检查懒加载状态,如果未准备好则显示占位符\n if (props.isLazyLoading && !props.isReady) {\n return <div style=\"min-height: 32px; opacity: 0.5;\">Loading...</div>\n }\n\n const { render, renderInView } = slotProps.column\n const currentIsView = unref(slotProps.isView)\n\n\n\n let renderFunction = null\n\n // 在查看模式下:优先使用 renderInView,如果没有则使用 render\n if (currentIsView) {\n renderFunction = renderInView || render\n } else {\n // 在编辑模式下:只使用 render\n renderFunction = render\n }\n\n\n if (!renderFunction) return null\n\n const renderScope = {\n model: unref(model),\n data: getFormProp(unref(model), slotProps.column.prop),\n enumData: unref(columnEnum)\n }\n\n try {\n const result = renderFunction(renderScope)\n return result\n } catch (error) {\n return null\n }\n }\n }\n })\n)\n\n// 计算要显示的值(查看模式用)\nconst getShowValue = () => {\n const val = getFormProp(unref(model), props.column.prop)\n const formEl = hyphenToCamelCase(props.column.el)\n\n if (formEl !== ComponentNameEnum.EL_SELECT && formEl !== ComponentNameEnum.EL_SELECT_V2) {\n return val\n }\n\n const currentFieldNames = unref(fieldNames)\n const currentColumnEnum = unref(columnEnum)\n\n if (props.column.props?.multiple) {\n // 多选下拉框\n const selectedItemList = currentColumnEnum.filter((_: any) => val?.includes(_[currentFieldNames.value]))\n return selectedItemList.map((_: any) => _[currentFieldNames.label]).join(',')\n } else {\n const selectedItem = currentColumnEnum.find((_: any) => _[currentFieldNames.value] === val)\n return selectedItem ? selectedItem[currentFieldNames.label] : val\n }\n}\n\n// 渲染Element组件\nconst RenderElComponents = markRaw(\n defineComponent({\n name: 'RenderElComponents',\n props: ['column'],\n setup(elProps) {\n return () => {\n // 如果是查看模式,显示纯文本\n if (unref(props.isView)) {\n return <span>{getShowValue()}</span>\n }\n\n const originalEl = elProps.column.el\n const formEl = hyphenToCamelCase(originalEl)\n\n // 首先尝试使用原始格式(kebab-case 优先)\n let componentName = getComponent(originalEl!)\n\n // 如果没找到,尝试转换后的格式\n if (!componentName && formEl) {\n componentName = getComponent(formEl)\n }\n\n if (!componentName) {\n console.warn(`未找到组件: ${originalEl} (也尝试了 ${formEl})`)\n return null\n }\n\n // 根据不同组件类型使用不同的渲染逻辑\n switch (formEl) {\n case ComponentNameEnum.EL_SELECT:\n case ComponentNameEnum.EL_SELECT_V2:\n return useRenderSelect(\n componentName,\n unref(model),\n elProps.column,\n unref(formProps),\n unref(placeholder),\n unref(clearable),\n isDisabled(),\n unref(columnEnum),\n unref(fieldNames)\n )\n\n case ComponentNameEnum.EL_RADIO_GROUP:\n case ComponentNameEnum.EL_RADIO:\n case ComponentNameEnum.EL_RADIO_BUTTON:\n return useRenderRadio(\n componentName,\n unref(model),\n elProps.column,\n unref(finalProps),\n unref(columnEnum),\n unref(fieldNames)\n )\n\n case ComponentNameEnum.EL_CHECKBOX_GROUP:\n case ComponentNameEnum.EL_Checkbox:\n case ComponentNameEnum.EL_CHECKBOX_BUTTON:\n return useRenderCheckbox(\n componentName,\n unref(model),\n elProps.column,\n unref(finalProps),\n unref(columnEnum),\n unref(fieldNames)\n )\n\n default:\n return useRenderComponent(\n componentName,\n unref(model),\n elProps.column,\n unref(finalProps)\n )\n }\n }\n }\n })\n)\n\n// 渲染自定义组件\nconst RenderComponent = markRaw(\n defineComponent({\n name: 'RenderComponent',\n props: ['style', 'column'],\n setup(componentProps) {\n return () => {\n const { el } = componentProps.column\n\n try {\n const Component = resolveComponent(el!)\n\n if (!Component) {\n console.warn(`未找到自定义组件: ${el}`)\n return null\n }\n\n return h(Component, {\n modelValue: getFormProp(unref(model), componentProps.column.prop),\n 'onUpdate:modelValue': (val: any) => setFormProp(unref(model), componentProps.column.prop, val),\n style: componentProps.style,\n ...unref(finalProps)\n })\n } catch (error) {\n console.error(`渲染自定义组件失败: ${el}`, error)\n return null\n }\n }\n }\n })\n)\n</script>\n\n\n\n\n"],"names":["props","__props","znygStore","useLocalStorage","dictMap","model","_useModel","cachedResults","Map","fieldNames","computed","dictCode","column","label","value","children","disabled","enumMap","inject","formEnumMapKey","ref","rawEnum","enum","columnEnum","useEnumMap","enumKey","prop","el","currentEnumMap","unref","currentRawEnum","result","toString","data","get","Array","isArray","length","enumData","hyphenToCamelCase","ComponentNameEnum","EL_SELECT_V2","map","item","formProps","formEl","userProps","cacheKey","JSON","stringify","has","baseProps","EL_TREE_SELECT","nodeKey","EL_CASCADER","EL_DATE_PICKER","type","valueFormat","EL_TIME_PICKER","set","placeholder","isRange","notDefaultPlaceholder","includes","EL_INPUT","rangeSeparator","startPlaceholder","endPlaceholder","clearable","defaultValue","undefined","finalProps","isDisabled","shouldUseCustomRender","render","renderInView","currentIsView","isView","isLazyLoading","isReady","__name","RenderSlots","markRaw","defineComponent","name","setup","slotProps","_createVNode","style","_createTextVNode","renderFunction","renderScope","getFormProp","error","getShowValue","val","EL_SELECT","currentFieldNames","currentColumnEnum","multiple","selectedItemList","filter","_","join","selectedItem","find","RenderElComponents","elProps","originalEl","componentName","getComponent","console","warn","useRenderSelect","EL_RADIO_GROUP","EL_RADIO","EL_RADIO_BUTTON","useRenderRadio","EL_CHECKBOX_GROUP","EL_Checkbox","EL_CHECKBOX_BUTTON","useRenderCheckbox","useRenderComponent","RenderComponent","componentProps","Component","resolveComponent","h","modelValue","setFormProp"],"mappings":"qjDA4DA,MAAMA,EAAQC,EAQRC,EAAYC,EAAgB,OAAQ,CAAEC,QAAS,CAAA,IAE/CC,EAAQC,EAAmDL,EAAA,cAG3DM,MAAoBC,IAGpBC,EAAaC,GAAS,KACpB,MAAAC,SAAEA,GAAaX,EAAMY,OAC3B,IAAIC,EAAQb,EAAMY,OAAOH,YAAYI,OAAS,QAC1CC,EAAQd,EAAMY,OAAOH,YAAYK,OAAS,QAMvC,OALHH,IACME,EAAA,OACAC,EAAA,QAGH,CACLD,QACAC,QACAC,SAAUf,EAAMY,OAAOH,YAAYM,UAAY,WAC/CC,SAAUhB,EAAMY,OAAOH,YAAYO,UAAY,WACjD,IAIIC,EAAUC,EAAOC,EAAgBC,EAAQZ,IAAAA,MAGzCa,EAAUX,GAAS,IAAMV,EAAMY,OAAOU,OAEtCC,EAAab,GAAS,KACpB,MAAAc,WAAEA,EAAAA,QAAYC,EAAAA,KAASC,EAAAA,GAAMC,EAAAA,SAAIhB,GAAaX,EAAMY,OAGpDgB,EAAiBC,EAAMZ,GAGvBa,EAAiBD,EAAMR,GAEzBU,IAAAA,EAQJ,GAPIpB,GAEET,GAAaA,EAAUY,OAAOV,UAChC2B,EAAS7B,EAAUY,MAAMV,QAAQO,GAAUqB,aAAe,IAI1DR,EACE,GAAsB,mBAAfA,EACTO,EAASP,EAAWI,OACf,CACCK,MAAAA,EAAOL,EAAeM,IAAIV,GAIrBS,EAHNA,EAEMR,EACAQ,EAAKR,IAAY,GAEjBQ,EAJA,EAKX,CAIJ,IAAKF,EAEH,GAAII,MAAMC,QAAQN,IAAmBA,EAAeO,OAAS,EAClDP,EAAAA,MACJ,CAEDQ,IAAAA,EAAWV,EAAeM,IAAIR,GAKvBY,EAHNA,EAEMC,EAAkBZ,KAAQa,EAAkBC,aAC5CH,EAASI,KAAmCC,IAC5C,IAAKA,EAAM9B,MAAO8B,EAAKd,EAAMpB,GAAYI,OAAQC,MAAO6B,EAAKd,EAAMpB,GAAYK,WAE/EW,EACAa,EAASb,IAAY,GAErBa,EARA,EASX,CAIJ,OAAOP,GAAU,EAAC,IAIda,EAAYlC,GAAS,KACnBG,MAAAA,EAAQgB,EAAMpB,GAAYI,MAC1BC,EAAQe,EAAMpB,GAAYK,MAC1BC,EAAWc,EAAMpB,GAAYM,SAC7B8B,EAASN,EAAkBvC,EAAMY,QAAQe,IAC/C,IAAImB,EAAY9C,EAAMY,OAAOZ,OAAS,CAAC,EAGvC,MAAM+C,EAAW,aAAaF,KAAUG,KAAKC,UAAUH,MAAcjC,KAASC,KAASC,IAGnFR,GAAAA,EAAc2C,IAAIH,GACbxC,OAAAA,EAAc2B,IAAIa,GAI3B,IAAII,EAAY,CAAC,EAEbN,IAAWL,EAAkBY,iBACnBD,EAAA,CAAEnD,MAAO,CAAEa,QAAOE,YAAYsC,QAASvC,IAGjD+B,IAAWL,EAAkBc,cACnBH,EAAA,CAAEnD,MAAO,CAAEa,QAAOC,QAAOC,cAGnC8B,IAAWL,EAAkBe,iBACgBJ,EAAxB,aAAnBL,EAAUU,KAAiC,CAAEC,YAAa,wBACrDX,EAAUU,KAA6B,CAAEC,YAAa,gBAI7DZ,IAAWL,EAAkBkB,iBAA4BP,EAAA,CAAEM,YAAa,aAG5E,MAAM1B,EAAS,IAAKoB,KAAcL,GAI3Bf,OADO4B,EAAAA,IAAIZ,EAAUhB,GACrBA,CAAAA,IAIH6B,EAAclD,GAAS,KACrB,MAAEV,OAAOwD,KAAEA,EAAAA,QAAMK,EAASD,YAAAA,EAAAA,sBAAaE,GAA0B,CAAC,EAAAnC,GAAGA,GAAO3B,EAAMY,QAAQZ,MAAQA,EAAMY,OAAS,CAAEZ,MAAO,CAAC,EAAG2B,GAAI3B,EAAMY,QAAQe,IAGhJoB,EAAW,eAAepB,KAAM6B,KAAQK,KAAWD,KAAeE,IAGpEvD,GAAAA,EAAc2C,IAAIH,GACbxC,OAAAA,EAAc2B,IAAIa,GAGvBhB,IAAAA,EACC,IAAA,CAAC,gBAAiB,YAAa,cAAcgC,SAASP,KAASK,GAAaC,EAE1E,CAEI/B,EAAA,CAAE6B,YADcA,IAAgBrB,EAAkBZ,IAAKoC,SAASvB,EAAkBwB,UAAY,MAAQ,OACtE,MAHhCjC,EAAA,CAAEkC,eAAgB,IAAKC,iBAAkB,OAAQC,eAAgB,QAQrEpC,OADO4B,EAAAA,IAAIZ,EAAUhB,GACrBA,CAAAA,IAIHqC,EAAY1D,GAAS,KACnB,MAAEV,OAASoE,UAAAA,GAAc,CAAC,EAAAC,aAAGA,GAAiBrE,EAAMY,OACnDwD,OAAAA,GAAAA,MAAcC,CAA0CC,IAI3DC,EAAa7D,GAAS,KACnB,IACFmB,EAAM+B,GACTQ,UAAWvC,EAAMuC,GACjBpD,SAAUwD,OACP3C,EAAMe,OAKP6B,EAAwB/D,GAAS,KAC/B,MAAAgE,OAAEA,EAAAA,aAAQC,GAAiB3E,EAAMY,OACjCgE,EAAgB/C,EAAM7B,EAAM6E,QAGlC,GAAI7E,EAAM8E,gBAAkB9E,EAAM+E,QACzB,OAAA,EAKT,GAAIH,EAAe,CAEV7C,SADW4C,IAAgBD,EAC3B3C,CAKFA,QADU2C,CACV3C,IAIHyC,EAAmBQ,GAAA,KACjB,MAAAhE,SAAEA,GAAahB,EAAMY,OACvB,GAAoB,kBAAbI,EAA+BA,OAAAA,EACtC,GAAoB,mBAAbA,EAAyB,CAC5B+B,MAAAA,EAAW,YAAY/C,EAAMY,OAAOc,QAAQsB,KAAKC,UAAUpB,EAAMxB,MACnEE,GAAAA,EAAc2C,IAAIH,GACbxC,OAAAA,EAAc2B,IAAIa,GAE3B,MAAMhB,EAASf,EAASa,EAAMxB,IAEvB0B,OADO4B,EAAAA,IAAIZ,EAAUhB,GACrBA,CAAAA,CAEF,OAAA,CAAA,GAZUyC,cAgBbS,EAAcC,EACFC,EAAA,CACdC,KAAM,cACNpF,MAAO,CAAC,QAAS,SAAU,UAC3BqF,MAAMC,GACG,KAEL,GAAItF,EAAM8E,gBAAkB9E,EAAM+E,QAChC,OAAAQ,EAAA,MAAA,CAAAC,MAAA,mCAAA,CAAAC,EAAA,gBAGI,MAAAf,OAAEA,EAAAA,aAAQC,GAAiBW,EAAU1E,OAK3C,IAAI8E,EAAiB,KAWjB,GAPFA,EARoB7D,EAAMyD,EAAUT,SAQnBF,GAGAD,GAIdgB,EAAuB,OAAA,KAE5B,MAAMC,EAAc,CAClBtF,MAAOwB,EAAMxB,GACb4B,KAAM2D,EAAY/D,EAAMxB,GAAQiF,EAAU1E,OAAOc,MACjDY,SAAUT,EAAMN,IAGd,IAEKQ,OADQ2D,EAAeC,SAEvBE,GACA,OAAA,IAAA,MAQXC,EAAqBd,GAAA,KACzB,MAAMe,EAAMH,EAAY/D,EAAMxB,GAAQL,EAAMY,OAAOc,MAC7CmB,EAASN,EAAkBvC,EAAMY,OAAOe,IAE9C,GAAIkB,IAAWL,EAAkBwD,WAAanD,IAAWL,EAAkBC,aAClEsD,OAAAA,EAGHE,MAAAA,EAAoBpE,EAAMpB,GAC1ByF,EAAoBrE,EAAMN,GAE5BvB,GAAAA,EAAMY,OAAOZ,OAAOmG,SAAU,CAGzBC,OADkBF,EAAkBG,QAAmBN,GAAAA,GAAKhC,SAASuC,EAAEL,EAAkBnF,UACxE4B,KAAgB4D,GAAAA,EAAEL,EAAkBpF,SAAQ0F,KAAK,IAAG,CACvE,CACCC,MAAAA,EAAeN,EAAkBO,MAAMH,GAAWA,EAAEL,EAAkBnF,SAAWiF,IACvF,OAAOS,EAAeA,EAAaP,EAAkBpF,OAASkF,CAAAA,IAjB7CD,gBAsBfY,EAAqBxB,EACTC,EAAA,CACdC,KAAM,qBACNpF,MAAO,CAAC,UACRqF,MAAMsB,GACG,KAED9E,GAAAA,EAAM7B,EAAM6E,QACd,OAAAU,EAAA,OAAA,KAAA,CAAcO,MAGVc,MAAAA,EAAaD,EAAQ/F,OAAOe,GAC5BkB,EAASN,EAAkBqE,GAG7BC,IAAAA,EAAgBC,EAAaF,GAOjC,IAJKC,GAAiBhE,IACpBgE,EAAgBC,EAAajE,KAG1BgE,EAEI,OADPE,QAAQC,KAAK,UAAUJ,WAAoB/D,MACpC,KAIT,OAAQA,GACN,KAAKL,EAAkBwD,UACvB,KAAKxD,EAAkBC,aACdwE,OAAAA,EACLJ,EACAhF,EAAMxB,GACNsG,EAAQ/F,OACRiB,EAAMe,GACNf,EAAM+B,GACN/B,EAAMuC,GACNI,IACA3C,EAAMN,GACNM,EAAMpB,IAGV,KAAK+B,EAAkB0E,eACvB,KAAK1E,EAAkB2E,SACvB,KAAK3E,EAAkB4E,gBACrB,OAAOC,EACLR,EACAhF,EAAMxB,GACNsG,EAAQ/F,OACRiB,EAAM0C,GACN1C,EAAMN,GACNM,EAAMpB,IAGV,KAAK+B,EAAkB8E,kBACvB,KAAK9E,EAAkB+E,YACvB,KAAK/E,EAAkBgF,mBACrB,OAAOC,EACLZ,EACAhF,EAAMxB,GACNsG,EAAQ/F,OACRiB,EAAM0C,GACN1C,EAAMN,GACNM,EAAMpB,IAGV,QACSiH,OAAAA,EACLb,EACAhF,EAAMxB,GACNsG,EAAQ/F,OACRiB,EAAM0C,IACR,KAQNoD,GAAkBzC,EACNC,EAAA,CACdC,KAAM,kBACNpF,MAAO,CAAC,QAAS,UACjBqF,MAAMuC,GACG,KACC,MAAAjG,GAAEA,GAAOiG,EAAehH,OAE1B,IACIiH,MAAAA,EAAYC,EAAiBnG,GAEnC,OAAKkG,EAKEE,EAAEF,EAAW,CAClBG,WAAYpC,EAAY/D,EAAMxB,GAAQuH,EAAehH,OAAOc,MAC5D,sBAAqCuG,GAAAA,GAAAA,EAAYpG,EAAMxB,GAAQuH,EAAehH,OAAOc,KAAMqE,IAAnEA,uBACxBP,MAAOoC,EAAepC,SACnB3D,EAAM0C,MARDyC,QAAAA,KAAK,aAAarF,KACnB,YASFkE,GAEA,OADPkB,QAAQlB,MAAM,cAAclE,IAAMkE,GAC3B,IAAA;;;;"}
@@ -1,2 +1,2 @@
1
- import{createVNode as e,h as l}from"vue";import{ElCheckboxButton as o,ElCheckbox as r}from"element-plus";import{hyphenToCamelCase as a,setFormProp as d,getFormProp as t}from"../helper/index.mjs";import{ComponentNameEnum as n}from"../interface/index.mjs";var m=Object.defineProperty,p=(e,l)=>m(e,"name",{value:l,configurable:!0});const u=p(((m,u,i,s,b,f,c)=>{const v=p(((l,d,t)=>{const m=a(t.el)===n.EL_CHECKBOX_BUTTON?o:r;return l.map((l=>e(m,{disabled:l[d.disabled||"disabled"],label:l[d.label],value:l[d.value],key:l[d.value]},null)))}),"renderCheckboxOptions");return l(m,{modelValue:t(u,i.prop),"onUpdate:modelValue":p((e=>d(u,i.prop,e)),"onUpdate:modelValue"),...s,disabled:b},{default:p((()=>v(f,c,i)),"default")})}),"useRenderCheckbox");export{u as useRenderCheckbox};
1
+ import{createVNode as e,h as l}from"vue";import{ElCheckboxButton as o,ElCheckbox as r}from"element-plus";import{hyphenToCamelCase as a,setFormProp as d,getFormProp as t}from"../helper/index.mjs";import{ComponentNameEnum as n}from"../interface/index.mjs";var m=Object.defineProperty,p=(e,l)=>m(e,"name",{value:l,configurable:!0});const u=p(((m,u,i,s,b,f)=>{const c=p(((l,d,t)=>{const m=a(t.el)===n.EL_CHECKBOX_BUTTON?o:r;return l.map((l=>e(m,{disabled:l[d.disabled||"disabled"],label:l[d.label],value:l[d.value],key:l[d.value]},null)))}),"renderCheckboxOptions");return l(m,{modelValue:t(u,i.prop),"onUpdate:modelValue":p((e=>d(u,i.prop,e)),"onUpdate:modelValue"),...formProps,disabled:disabled},{default:p((()=>c(b,f,i)),"default")})}),"useRenderCheckbox");export{u as useRenderCheckbox};
2
2
  //# sourceMappingURL=useRenderCheckbox.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRenderCheckbox.mjs","sources":["../../../../../../../packages/components/znFormV2/src/components/useRenderCheckbox.tsx"],"sourcesContent":["import { h } from 'vue'\nimport { ElCheckbox, ElCheckboxButton, ElCheckboxGroup } from 'element-plus'\nimport { hyphenToCamelCase, getFormProp, setFormProp } from '../helper'\nimport { ComponentNameEnum, type FormFieldNamesProps, type ZnFormV2SchemaProps } from '../interface'\n\nexport const useRenderCheckbox = (\n componentName: any,\n model: Record<string, any>,\n column: ZnFormV2SchemaProps,\n formProps: any,\n disabled: boolean,\n columnEnum: Record<string, any>[],\n fieldNames: FormFieldNamesProps\n) => {\n const renderCheckboxOptions = (columnEnum: Record<string, any>[], fieldNames: FormFieldNamesProps, column: ZnFormV2SchemaProps) => {\n const Component = hyphenToCamelCase(column.el) === ComponentNameEnum.EL_CHECKBOX_BUTTON ? ElCheckboxButton : ElCheckbox\n return columnEnum.map((col: any) => {\n return (\n <Component\n disabled={col[fieldNames.disabled || 'disabled']}\n label={col[fieldNames.label]}\n value={col[fieldNames.value]}\n key={col[fieldNames.value]}></Component>\n )\n })\n }\n\n // 主渲染函数\n return h(\n componentName,\n {\n modelValue: getFormProp(model, column.prop),\n 'onUpdate:modelValue': (val: any) => setFormProp(model, column.prop, val),\n ...formProps,\n disabled\n },\n {\n default: () => renderCheckboxOptions(columnEnum, fieldNames, column)\n }\n )\n}\n"],"names":["useRenderCheckbox","componentName","model","column","formProps","disabled","columnEnum","fieldNames","renderCheckboxOptions","Component","hyphenToCamelCase","el","ComponentNameEnum","EL_CHECKBOX_BUTTON","ElCheckboxButton","ElCheckbox","map","col","_createVNode","label","value","key","h","modelValue","getFormProp","prop","setFormProp","val","default"],"mappings":"yUAKaA,MAAAA,MACXC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,KAEA,MAAMC,EAAwBA,GAAAA,CAACF,EAAmCC,EAAiCJ,KACjG,MAAMM,EAAYC,EAAkBP,EAAOQ,MAAQC,EAAkBC,mBAAqBC,EAAmBC,EACtGT,OAAAA,EAAWU,KAAkBC,GAClCC,EAAAT,EAAA,CAAAJ,SAEcY,EAAIV,EAAWF,UAAY,YAAWc,MACzCF,EAAIV,EAAWY,OAAMC,MACrBH,EAAIV,EAAWa,OAAMC,IACvBJ,EAAIV,EAAWa,QAAM,OAE/B,GAV2BZ,yBAc9B,OAAOc,EACLrB,EACA,CACEsB,WAAYC,EAAYtB,EAAOC,EAAOsB,MACtC,sBAAqCC,GAAAA,GAAAA,EAAYxB,EAAOC,EAAOsB,KAAME,IAA7CA,0BACrBvB,EACHC,YAEF,CACEuB,QAAepB,GAAAA,IAAAA,EAAsBF,EAAYC,EAAYJ,IAApDyB,YAEb,GAlC+B5B"}
1
+ {"version":3,"file":"useRenderCheckbox.mjs","sources":["../../../../../../../packages/components/znFormV2/src/components/useRenderCheckbox.tsx"],"sourcesContent":["import { h } from 'vue'\nimport { ElCheckbox, ElCheckboxButton, ElCheckboxGroup } from 'element-plus'\nimport { hyphenToCamelCase, getFormProp, setFormProp } from '../helper'\nimport { ComponentNameEnum, type FormFieldNamesProps, type ZnFormV2SchemaProps } from '../interface'\n\nexport const useRenderCheckbox = (\n componentName: any,\n model: Record<string, any>,\n column: ZnFormV2SchemaProps,\n mergedProps: any,\n columnEnum: Record<string, any>[],\n fieldNames: FormFieldNamesProps\n) => {\n const renderCheckboxOptions = (columnEnum: Record<string, any>[], fieldNames: FormFieldNamesProps, column: ZnFormV2SchemaProps) => {\n const Component = hyphenToCamelCase(column.el) === ComponentNameEnum.EL_CHECKBOX_BUTTON ? ElCheckboxButton : ElCheckbox\n return columnEnum.map((col: any) => {\n return (\n <Component\n disabled={col[fieldNames.disabled || 'disabled']}\n label={col[fieldNames.label]}\n value={col[fieldNames.value]}\n key={col[fieldNames.value]}></Component>\n )\n })\n }\n\n // 主渲染函数\n return h(\n componentName,\n {\n modelValue: getFormProp(model, column.prop),\n 'onUpdate:modelValue': (val: any) => setFormProp(model, column.prop, val),\n ...formProps,\n disabled\n },\n {\n default: () => renderCheckboxOptions(columnEnum, fieldNames, column)\n }\n )\n}\n"],"names":["useRenderCheckbox","componentName","model","column","mergedProps","columnEnum","fieldNames","renderCheckboxOptions","Component","hyphenToCamelCase","el","ComponentNameEnum","EL_CHECKBOX_BUTTON","ElCheckboxButton","ElCheckbox","map","col","_createVNode","disabled","label","value","key","h","modelValue","getFormProp","prop","setFormProp","val","formProps","default"],"mappings":"yUAKO,MAAMA,EACXC,GAAAA,CAAAA,EACAC,EACAC,EACAC,EACAC,EACAC,KAEA,MAAMC,EAAwBA,GAAAA,CAACF,EAAmCC,EAAiCH,KACjG,MAAMK,EAAYC,EAAkBN,EAAOO,MAAQC,EAAkBC,mBAAqBC,EAAmBC,EACtGT,OAAAA,EAAWU,KAAkBC,GAClCC,EAAAT,EAAA,CAAAU,SAEcF,EAAIV,EAAWY,UAAY,YAAWC,MACzCH,EAAIV,EAAWa,OAAMC,MACrBJ,EAAIV,EAAWc,OAAMC,IACvBL,EAAIV,EAAWc,QAAM,OAE/B,GAV2Bb,yBAc9B,OAAOe,EACLrB,EACA,CACEsB,WAAYC,EAAYtB,EAAOC,EAAOsB,MACtC,sBAAqCC,GAAAA,GAAAA,EAAYxB,EAAOC,EAAOsB,KAAME,IAA7CA,0BACrBC,UACHV,mBAEF,CACEW,QAAetB,GAAAA,IAAAA,EAAsBF,EAAYC,EAAYH,IAApD0B,YAEb,GAjC+B7B"}
@@ -1,2 +1,2 @@
1
- import{createVNode as e,h as l}from"vue";import{ElRadioButton as a,ElRadio as o}from"element-plus";import{hyphenToCamelCase as r,setFormProp as d,getFormProp as t}from"../helper/index.mjs";import{ComponentNameEnum as n}from"../interface/index.mjs";var i=Object.defineProperty,m=(e,l)=>i(e,"name",{value:l,configurable:!0});const p=m(((i,p,u,s,f,b,c)=>{const v=m(((l,d,t)=>{const i=r(t.el)===n.EL_RADIO_BUTTON?a:o;return l.map((l=>e(i,{disabled:l[d.disabled||"disabled"],label:l[d.label],value:l[d.value],key:l[d.value]},null)))}),"renderRadioOptions");return l(i,{modelValue:t(p,u.prop),"onUpdate:modelValue":m((e=>d(p,u.prop,e)),"onUpdate:modelValue"),...s,disabled:f},{default:m((()=>v(b,c,u)),"default")})}),"useRenderRadio");export{p as useRenderRadio};
1
+ import{createVNode as e,h as l}from"vue";import{ElRadioButton as o,ElRadio as r}from"element-plus";import{hyphenToCamelCase as a,setFormProp as d,getFormProp as t}from"../helper/index.mjs";import{ComponentNameEnum as n}from"../interface/index.mjs";var m=Object.defineProperty,p=(e,l)=>m(e,"name",{value:l,configurable:!0});const u=p(((m,u,i,s,f,b)=>{const c=p(((l,d,t)=>{const m=a(t.el)===n.EL_RADIO_BUTTON?o:r;return l.map((l=>e(m,{disabled:l[d.disabled||"disabled"],label:l[d.label],value:l[d.value],key:l[d.value]},null)))}),"renderRadioOptions");return l(m,{modelValue:t(u,i.prop),"onUpdate:modelValue":p((e=>d(u,i.prop,e)),"onUpdate:modelValue"),...s},{default:p((()=>c(f,b,i)),"default")})}),"useRenderRadio");export{u as useRenderRadio};
2
2
  //# sourceMappingURL=useRenderRadio.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRenderRadio.mjs","sources":["../../../../../../../packages/components/znFormV2/src/components/useRenderRadio.tsx"],"sourcesContent":["import { h } from 'vue'\nimport { ElRadio, ElRadioButton, ElRadioGroup } from 'element-plus'\nimport { hyphenToCamelCase, getFormProp, setFormProp } from '../helper'\nimport { ComponentNameEnum, type FormFieldNamesProps, type ZnFormV2SchemaProps } from '../interface'\n\nexport const useRenderRadio = (\n componentName: any,\n model: Record<string, any>,\n column: ZnFormV2SchemaProps,\n formProps: any,\n disabled: boolean,\n columnEnum: Record<string, any>[],\n fieldNames: FormFieldNamesProps\n) => {\n const renderRadioOptions = (columnEnum: Record<string, any>[], fieldNames: FormFieldNamesProps, column: ZnFormV2SchemaProps) => {\n const Component = hyphenToCamelCase(column.el) === ComponentNameEnum.EL_RADIO_BUTTON ? ElRadioButton : ElRadio\n\n return columnEnum.map((col) => {\n return (\n <Component\n disabled={col[fieldNames.disabled || 'disabled']}\n label={col[fieldNames.label]}\n value={col[fieldNames.value]}\n key={col[fieldNames.value]}></Component>\n )\n })\n }\n\n // 主渲染函数\n return h(\n componentName,\n {\n modelValue: getFormProp(model, column.prop),\n 'onUpdate:modelValue': (val: any) => setFormProp(model, column.prop, val),\n ...formProps,\n disabled\n },\n {\n default: () => renderRadioOptions(columnEnum, fieldNames, column)\n }\n )\n}\n"],"names":["useRenderRadio","componentName","model","column","formProps","disabled","columnEnum","fieldNames","renderRadioOptions","Component","hyphenToCamelCase","el","ComponentNameEnum","EL_RADIO_BUTTON","ElRadioButton","ElRadio","map","col","_createVNode","label","value","key","h","modelValue","getFormProp","prop","setFormProp","val","default"],"mappings":"mUAKaA,MAAAA,MACXC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,KAEA,MAAMC,EAAqBA,GAAAA,CAACF,EAAmCC,EAAiCJ,KAC9F,MAAMM,EAAYC,EAAkBP,EAAOQ,MAAQC,EAAkBC,gBAAkBC,EAAgBC,EAEhGT,OAAAA,EAAWU,KAAaC,GAC7BC,EAAAT,EAAA,CAAAJ,SAEcY,EAAIV,EAAWF,UAAY,YAAWc,MACzCF,EAAIV,EAAWY,OAAMC,MACrBH,EAAIV,EAAWa,OAAMC,IACvBJ,EAAIV,EAAWa,QAAM,OAE/B,GAXwBZ,sBAe3B,OAAOc,EACLrB,EACA,CACEsB,WAAYC,EAAYtB,EAAOC,EAAOsB,MACtC,sBAAqCC,GAAAA,GAAAA,EAAYxB,EAAOC,EAAOsB,KAAME,IAA7CA,0BACrBvB,EACHC,YAEF,CACEuB,QAAepB,GAAAA,IAAAA,EAAmBF,EAAYC,EAAYJ,IAAjDyB,YAEb,GAnC4B5B"}
1
+ {"version":3,"file":"useRenderRadio.mjs","sources":["../../../../../../../packages/components/znFormV2/src/components/useRenderRadio.tsx"],"sourcesContent":["import { h } from 'vue'\nimport { ElRadio, ElRadioButton } from 'element-plus'\nimport { hyphenToCamelCase, getFormProp, setFormProp } from '../helper'\nimport { ComponentNameEnum, type FormFieldNamesProps, type ZnFormV2SchemaProps } from '../interface'\n\nexport const useRenderRadio = (\n componentName: any,\n model: Record<string, any>,\n column: ZnFormV2SchemaProps,\n mergedProps: any,\n columnEnum: Record<string, any>[],\n fieldNames: FormFieldNamesProps\n) => {\n const renderRadioOptions = (columnEnum: Record<string, any>[], fieldNames: FormFieldNamesProps, column: ZnFormV2SchemaProps) => {\n const Component = hyphenToCamelCase(column.el) === ComponentNameEnum.EL_RADIO_BUTTON ? ElRadioButton : ElRadio\n\n return columnEnum.map((col) => {\n return (\n <Component\n disabled={col[fieldNames.disabled || 'disabled']}\n label={col[fieldNames.label]}\n value={col[fieldNames.value]}\n key={col[fieldNames.value]}></Component>\n )\n })\n }\n\n // 主渲染函数\n return h(\n componentName,\n {\n modelValue: getFormProp(model, column.prop),\n 'onUpdate:modelValue': (val: any) => setFormProp(model, column.prop, val),\n ...mergedProps\n },\n {\n default: () => renderRadioOptions(columnEnum, fieldNames, column)\n }\n )\n}\n"],"names":["useRenderRadio","componentName","model","column","mergedProps","columnEnum","fieldNames","renderRadioOptions","Component","hyphenToCamelCase","el","ComponentNameEnum","EL_RADIO_BUTTON","ElRadioButton","ElRadio","map","col","_createVNode","disabled","label","value","key","h","modelValue","getFormProp","prop","setFormProp","val","default"],"mappings":"mUAKO,MAAMA,EACXC,GAAAA,CAAAA,EACAC,EACAC,EACAC,EACAC,EACAC,KAEA,MAAMC,EAAqBA,GAAAA,CAACF,EAAmCC,EAAiCH,KAC9F,MAAMK,EAAYC,EAAkBN,EAAOO,MAAQC,EAAkBC,gBAAkBC,EAAgBC,EAEhGT,OAAAA,EAAWU,KAAaC,GAC7BC,EAAAT,EAAA,CAAAU,SAEcF,EAAIV,EAAWY,UAAY,YAAWC,MACzCH,EAAIV,EAAWa,OAAMC,MACrBJ,EAAIV,EAAWc,OAAMC,IACvBL,EAAIV,EAAWc,QAAM,OAE/B,GAXwBb,sBAe3B,OAAOe,EACLrB,EACA,CACEsB,WAAYC,EAAYtB,EAAOC,EAAOsB,MACtC,sBAAqCC,GAAAA,GAAAA,EAAYxB,EAAOC,EAAOsB,KAAME,IAA7CA,0BACrBvB,GAEL,CACEwB,QAAerB,GAAAA,IAAAA,EAAmBF,EAAYC,EAAYH,IAAjDyB,YAEb,GAjC4B5B"}
@@ -1,2 +1,2 @@
1
- import{unref as e,createVNode as l,h as a}from"vue";import{ElOptionGroup as t,ElOption as o}from"element-plus";import{setFormProp as r,getFormProp as n}from"../helper/index.mjs";var p=Object.defineProperty,u=(e,l)=>p(e,"name",{value:l,configurable:!0});const d=u(((p,d,m,i,f,s,b,c,v)=>{const y=u(((a,o)=>e(a).map((e=>e?.options?.length?l(t,{label:e[o.label],key:e[o.value]},{default:u((()=>e.options.map((e=>O(e,o)))),"default")}):O(e,o)))),"renderSelectOptions"),O=u(((e,a)=>l(o,{label:e[a.label],value:e[a.value],key:e[a.value]},null)),"renderSelectOptionItem");return a(p,{modelValue:n(d,m.prop),"onUpdate:modelValue":u((e=>r(d,m.prop,e)),"onUpdate:modelValue"),...i,...f,clearable:s,disabled:b},{default:u((()=>y(c,v)),"default")})}),"useRenderSelect");export{d as useRenderSelect};
1
+ import{unref as e,createVNode as l,h as o}from"vue";import{ElOptionGroup as t,ElOption as a}from"element-plus";import{setFormProp as r,getFormProp as p}from"../helper/index.mjs";var n=Object.defineProperty,u=(e,l)=>n(e,"name",{value:l,configurable:!0});const m=u(((n,m,d,i,f,s,c,v,b)=>{const g=u(((o,a)=>e(o).map((e=>e?.options?.length?l(t,{label:e[a.label],key:e[a.value]},{default:u((()=>e.options.map((e=>y(e,a)))),"default")}):y(e,a)))),"renderSelectOptions"),y=u(((e,o)=>l(a,{label:e[o.label],value:e[o.value],key:e[o.value]},null)),"renderSelectOptionItem");return o(n,{modelValue:p(m,d.prop),"onUpdate:modelValue":u((e=>r(m,d.prop,e)),"onUpdate:modelValue"),...mergedProps},{default:u((()=>g(v,b)),"default")})}),"useRenderSelect");export{m as useRenderSelect};
2
2
  //# sourceMappingURL=useRenderSelect.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRenderSelect.mjs","sources":["../../../../../../../packages/components/znFormV2/src/components/useRenderSelect.tsx"],"sourcesContent":["import { h, unref } from 'vue'\n\nimport { ElOption, ElOptionGroup } from 'element-plus'\nimport type { FormFieldNamesProps, ZnFormV2SchemaProps } from '../interface'\nimport { getFormProp, setFormProp } from '../helper'\n\nexport const useRenderSelect = (\n componentName: any,\n model: Record<string, any>,\n column: ZnFormV2SchemaProps,\n formProps: any,\n placeholder: any,\n clearable: boolean,\n disabled: boolean,\n columnEnum: Record<string, any>[],\n fieldNames: FormFieldNamesProps\n) => {\n // 渲染 select options\n const renderSelectOptions = (columnEnum: Record<string, any>[], fieldNames: FormFieldNamesProps) => {\n return unref(columnEnum).map((col) => {\n if (col?.options?.length) {\n return (\n <ElOptionGroup\n label={col[fieldNames.label]}\n key={col[fieldNames.value]}\n v-slots={{\n default: () => col.options.map((option) => renderSelectOptionItem(option, fieldNames))\n }}\n />\n )\n }\n\n return renderSelectOptionItem(col, fieldNames)\n })\n }\n\n const renderSelectOptionItem = (col: Record<string, any>, fieldNames: FormFieldNamesProps) => {\n return <ElOption label={col[fieldNames.label]} value={col[fieldNames.value]} key={col[fieldNames.value]} />\n }\n\n // 主渲染函数\n return h(\n componentName,\n {\n modelValue: getFormProp(model, column.prop),\n 'onUpdate:modelValue': (val: any) => setFormProp(model, column.prop, val),\n ...formProps,\n ...placeholder,\n clearable,\n disabled\n },\n {\n default: () => renderSelectOptions(columnEnum, fieldNames)\n }\n )\n}\n"],"names":["useRenderSelect","componentName","model","column","formProps","placeholder","clearable","disabled","columnEnum","fieldNames","renderSelectOptions","unref","map","col","options","length","_createVNode","ElOptionGroup","label","key","value","default","renderSelectOptionItem","option","ElOption","h","modelValue","getFormProp","prop","setFormProp","val"],"mappings":"6PAMaA,MAAAA,EACXC,GAAAA,CAAAA,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,KAGMC,MAAAA,EAAuBF,GAAAA,CAAAA,EAAmCC,IACvDE,EAAMH,GAAYI,KAAaC,GAChCA,GAAKC,SAASC,OAChBC,EAAAC,EAAA,CAAAC,MAEWL,EAAIJ,EAAWS,OAAMC,IACvBN,EAAIJ,EAAWW,QACX,CACPC,QAAeR,GAAAA,IAAAA,EAAIC,QAAQF,QAAgBU,EAAuBC,EAAQd,MAAjEY,aAMVC,EAAuBT,EAAKJ,MAdXC,uBAkBtBY,EAA0BT,GAAAA,CAAAA,EAA0BJ,IACxDO,EAAAQ,EAAA,CAAAN,MAAwBL,EAAIJ,EAAWS,OAAME,MAASP,EAAIJ,EAAWW,OAAMD,IAAON,EAAIJ,EAAWW,QAAM,OAD1EE,0BAK/B,OAAOG,EACLxB,EACA,CACEyB,WAAYC,EAAYzB,EAAOC,EAAOyB,MACtC,sBAAqCC,GAAAA,GAAAA,EAAY3B,EAAOC,EAAOyB,KAAME,IAA7CA,0BACrB1B,KACAC,EACHC,YACAC,YAEF,CACEc,QAASA,GAAAA,IAAMX,EAAoBF,EAAYC,IAAtCY,YAEb,GAhD6BrB"}
1
+ {"version":3,"file":"useRenderSelect.mjs","sources":["../../../../../../../packages/components/znFormV2/src/components/useRenderSelect.tsx"],"sourcesContent":["import { h, unref } from 'vue'\n\nimport { ElOption, ElOptionGroup } from 'element-plus'\nimport type { FormFieldNamesProps, ZnFormV2SchemaProps } from '../interface'\nimport { getFormProp, setFormProp } from '../helper'\n\nexport const useRenderSelect = (\n componentName: any,\n model: Record<string, any>,\n column: ZnFormV2SchemaProps,\n formProps: any,\n placeholder: any,\n clearable: boolean,\n disabled: boolean,\n columnEnum: Record<string, any>[],\n fieldNames: FormFieldNamesProps\n) => {\n // 渲染 select options\n const renderSelectOptions = (columnEnum: Record<string, any>[], fieldNames: FormFieldNamesProps) => {\n return unref(columnEnum).map((col) => {\n if (col?.options?.length) {\n return (\n <ElOptionGroup\n label={col[fieldNames.label]}\n key={col[fieldNames.value]}\n v-slots={{\n default: () => col.options.map((option) => renderSelectOptionItem(option, fieldNames))\n }}\n />\n )\n }\n\n return renderSelectOptionItem(col, fieldNames)\n })\n }\n\n const renderSelectOptionItem = (col: Record<string, any>, fieldNames: FormFieldNamesProps) => {\n return <ElOption label={col[fieldNames.label]} value={col[fieldNames.value]} key={col[fieldNames.value]} />\n }\n\n // 主渲染函数\n return h(\n componentName,\n {\n modelValue: getFormProp(model, column.prop),\n 'onUpdate:modelValue': (val: any) => setFormProp(model, column.prop, val),\n ...mergedProps\n },\n {\n default: () => renderSelectOptions(columnEnum, fieldNames)\n }\n )\n}\n"],"names":["useRenderSelect","componentName","model","column","formProps","placeholder","clearable","disabled","columnEnum","fieldNames","renderSelectOptions","unref","map","col","options","length","_createVNode","ElOptionGroup","label","key","value","default","renderSelectOptionItem","option","ElOption","h","modelValue","getFormProp","prop","setFormProp","val","mergedProps"],"mappings":"6PAMaA,MAAAA,EACXC,GAAAA,CAAAA,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,KAGMC,MAAAA,EAAuBF,GAAAA,CAAAA,EAAmCC,IACvDE,EAAMH,GAAYI,KAAaC,GAChCA,GAAKC,SAASC,OAChBC,EAAAC,EAAA,CAAAC,MAEWL,EAAIJ,EAAWS,OAAMC,IACvBN,EAAIJ,EAAWW,QACX,CACPC,QAAeR,GAAAA,IAAAA,EAAIC,QAAQF,QAAgBU,EAAuBC,EAAQd,MAAjEY,aAMVC,EAAuBT,EAAKJ,MAdXC,uBAkBtBY,EAA0BT,GAAAA,CAAAA,EAA0BJ,IACxDO,EAAAQ,EAAA,CAAAN,MAAwBL,EAAIJ,EAAWS,OAAME,MAASP,EAAIJ,EAAWW,OAAMD,IAAON,EAAIJ,EAAWW,QAAM,OAD1EE,0BAK/B,OAAOG,EACLxB,EACA,CACEyB,WAAYC,EAAYzB,EAAOC,EAAOyB,MACtC,sBAAqCC,GAAAA,GAAAA,EAAY3B,EAAOC,EAAOyB,KAAME,IAA7CA,0BACrBC,aAEL,CACEV,QAASA,GAAAA,IAAMX,EAAoBF,EAAYC,IAAtCY,YAEb,GA7C6BrB"}
@@ -1,10 +1,10 @@
1
- import{isVNode as e,defineComponent as t,useModel as a,shallowRef as n,ref as l,computed as r,unref as o,getCurrentInstance as i,nextTick as u,provide as d,watch as s,markRaw as c,useSlots as p,withDirectives as m,createVNode as h,vShow as f,mergeProps as v,onMounted as y,onBeforeUnmount as g,createElementBlock as b,openBlock as V,normalizeClass as w,createCommentVNode as C,createBlock as L,createElementVNode as z,toDisplayString as x,mergeModels as q}from"vue";import"./components/ZnFormV2Item.vue.mjs";import{getFormProp as I,setFormProp as $,hyphenToCamelCase as _,getPx as S}from"./helper/index.mjs";import{formEnumMapKey as F,ComponentNameEnum as R}from"./interface/index.mjs";import{ElForm as M,ElRow as P,ElCol as D,ElFormItem as T,ElSkeleton as j}from"element-plus";import E from"./components/ZnFormV2Item.vue2.mjs";var U=Object.defineProperty,k=(e,t)=>U(e,"name",{value:t,configurable:!0});const A={key:0,class:"performance-panel",style:{position:"fixed","z-index":"9999",top:"10px",right:"10px",padding:"10px","border-radius":"4px",background:"rgb(0 0 0 / 80%)",color:"white","font-size":"12px"}},B={key:0,class:"loading",style:{display:"flex",position:"absolute","z-index":"1000",top:"50%",left:"50%","align-items":"center",transform:"translate(-50%, -50%)",gap:"10px"}};function N(t){return"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!e(t)}k(N,"_isSlot");const O="zn-form-v2";var Z=t({name:"ZnFormV2",__name:"index",props:q({modelValue:{type:Object,required:!1,default:k((()=>({})),"default")},schema:{type:Array,required:!1,default:k((()=>[]),"default")},elFormProps:{required:!1,default:k((()=>({})),"default")},useCol:{type:Boolean,required:!1,default:!0},rowProps:{type:Object,required:!1},onlyRenderComponent:{type:Boolean,required:!1,default:!1},dynamicModel:{type:Boolean,required:!1,default:!0},includeModelKeys:{type:Array,required:!1},enumMapProps:{type:Map,required:!1},isView:{type:Boolean,required:!1,default:!1},disableRulesInView:{type:Boolean,required:!1,default:!0},lazyLoad:{type:Boolean,required:!1,default:!0},lazyLoadDelay:{type:Number,required:!1,default:16},initialLoadCount:{type:Number,required:!1,default:20},batchLoadCount:{type:Number,required:!1,default:30},lazyLoadDebug:{type:Boolean,required:!1,default:!1},delayLoad:{type:Number,required:!1,default:500},performanceConfig:{required:!1,default:k((()=>({enableMonitoring:!1,enableDebug:!1,reportInterval:5e3})),"default")},enableVirtualScroll:{type:Boolean,required:!1,default:!1},virtualScrollConfig:{required:!1,default:k((()=>({enabled:!1,height:400,itemHeight:60,buffer:5})),"default")},timeSliceConfig:{required:!1,default:k((()=>({enabled:!0,sliceSize:5,batchSize:10})),"default")},maxSyncRenderCount:{type:Number,required:!1,default:20},renderBatchSize:{type:Number,required:!1,default:10},renderDelay:{type:Number,required:!1,default:0},enablePerformanceMonitoring:{type:Boolean,required:!1,default:!1}},{modelValue:{default:k((()=>({})),"default")},modelModifiers:{}}),emits:q(["update:modelValue","update:schema","register","onSearch","onReset","onChange","onEnumChange","onSchemaChange","onPerformanceUpdate"],["update:modelValue"]),setup(e,{expose:q,emit:U}){const Z=1e3,H=3e4,W=16;class G{static{k(this,"PerformanceCache")}cache=new Map;timers=new Map;hitCount=0;missCount=0;has(e){const t=this.cache.get(e);return!!(t&&Date.now()-t.timestamp<H)||(t&&this.delete(e),!1)}get(e){const t=this.cache.get(e);if(t&&Date.now()-t.timestamp<H)return this.hitCount++,t.value;this.missCount++,this.delete(e)}set(e,t){if(this.cache.size>=Z){const e=this.cache.keys().next().value;this.delete(e)}this.cache.set(e,{value:t,timestamp:Date.now()}),this.timers.has(e)&&clearTimeout(this.timers.get(e));const a=setTimeout((()=>{this.delete(e)}),H);this.timers.set(e,a)}delete(e){this.cache.delete(e);const t=this.timers.get(e);t&&(clearTimeout(t),this.timers.delete(e))}clear(){this.cache.clear(),this.timers.forEach((e=>clearTimeout(e))),this.timers.clear()}getStats(){return{size:this.cache.size,hitRate:this.hitCount/(this.hitCount+this.missCount)||0,hitCount:this.hitCount,missCount:this.missCount}}}const K=k((()=>{const e=new Map;return(t,a,n=W)=>{e.has(t)&&clearTimeout(e.get(t));const l=setTimeout((()=>{a(),e.delete(t)}),n);e.set(t,l)}}),"createDebouncer"),Y=k((()=>{let e=null,t="";return a=>{if(a===e)return t;const n=Object.keys(a).sort();let l=n.length.toString();for(const e of n){const t=a[e];l+="object"==typeof t&&null!==t?`${e}:obj:${Object.keys(t).length};`:`${e}:${typeof t}:${String(t).slice(0,50)};`}return e=a,t=l,l}}),"createModelHasher"),J=e,Q=U,X=a(e,"modelValue"),ee=n(),te=l({}),ae=r((()=>{const e={...J};return Object.assign(e,o(te)),e})),ne=l(J.enumMapProps||new Map),le=l(new Set),re=l([]),oe=l(!1),ie=l(J.delayLoad>0),ue=l(null),de=(l(0),l([])),se=new G,ce=K(),pe=Y(),me=l({renderCount:0,lastRenderTime:0,avgRenderTime:0,cacheStats:{size:0,hitRate:0,hitCount:0,missCount:0},renderTime:0,componentCount:0,cacheHitRate:0,queueLength:0,memoryUsage:null}),he=l(!1),fe=k((()=>{se.clear()}),"clearCache"),ve=(i(),k((()=>{ue.value&&(clearInterval(ue.value),ue.value=null),se.clear()}),"cleanup")),ye=k((async({enum:e,prop:t,cacheEnum:a=!0})=>{if(!e)return;const n=o(ne);if("function"!=typeof e)return n.set(t,o(e)),void(ne.value=new Map(n));try{n.set(t,[]);let a=await e(o(X),n);a=a?.result||a,Array.isArray(a)||(console.warn(`警告: '${t}' 的enum函数返回值不是数组`,a),a=[]),n.set(t,a),ne.value=new Map(n),u((()=>{if(t){const e=o(ae).schema?.find((e=>e.prop===t));e&&ge(e)}}))}catch(e){console.error(`添加enum函数参数失败: '${t}'`,e),n.set(t,[]),ne.value=new Map(n)}}),"setEnumMap");d(F,ne);const ge=k((async({defaultValue:e,fieldNames:t,prop:a})=>{const n=o(X),l=I(n,a);if(l||!1===l||0===l)return;const r=o(e);if(null!=r)return $(n,a,"function"!=typeof r?r:await r(n,o(ne)));const i=o(ne).get(a);if(i?.length){const e=i.filter((e=>"Y"===e.isDefault));return e.length&&$(n,a,e[0][t?.value??"value"])}}),"initDefaultValue"),be=k((({prop:e,el:t,subProp:a,subEnum:n})=>{if(_(t)===R.EL_SELECT){if("string"!=typeof a)return;s((()=>I(o(X),e)),(async t=>{const l=o(ne);if(o(X)[a]&&(o(X)[a]=""),!n)return;if(!t)return l.set(a,[]);if(l.get(`${a}-${t}`))l.set(a,l.get(`${a}-${t}`)||[]);else if("function"==typeof n){const r=await n(t,l.get(e));l.set(`${a}-${t}`,r),l.set(a,r)}else Array.isArray(n)&&(l.set(`${a}-${t}`,n),l.set(a,n));const r=l.get(e)||[],[i]=r.filter((e=>e.value===t));i?.subValue&&(o(X)[a]=i.subValue)}),{immediate:!0})}}),"cascadeEnum"),Ve=k((e=>"boolean"==typeof e.hidden?e.hidden:"function"==typeof e.hidden&&e.hidden(o(X))),"getIsHidden"),we=k((e=>!!J.isView&&("boolean"==typeof e.hiddenInView?e.hiddenInView:"function"==typeof e.hiddenInView&&e.hiddenInView(o(X)))),"getIsHiddenInView"),Ce=k((e=>"boolean"==typeof e.hiddenLabel?e.hiddenLabel:"function"==typeof e.hiddenLabel&&e.hiddenLabel(o(X))),"getIsHiddenLabel"),Le=k((e=>{if("boolean"==typeof e.destroy)return e.destroy;if("function"==typeof e.destroy){const t=`destroy_${e.prop}_${pe(o(X))}`;if(se.has(t))return se.get(t);const a=e.destroy(o(X));return se.set(t,a),a}return!1}),"getIsDestroyed"),ze=r((()=>{if(J.delayLoad>0&&!oe.value)return[];const e=o(ae).schema||[];if(e.length<=20)return e.filter((e=>!Le(e))).sort(((e,t)=>(e.order||0)-(t.order||0))).map(((e,t)=>({...e,renderPriority:e.renderPriority||0,enableAsyncRender:!1!==e.enableAsyncRender,_index:t,_hidden:Ve(e),_hiddenInView:we(e),_hiddenLabel:Ce(e)})));const t=`processedSchema_${e.length}_${pe(o(X))}`;if(se.has(t))return se.get(t);const a=k(((e,t=10)=>{const a=[];for(let n=0;n<e.length;n+=t){const l=e.slice(n,n+t).filter((e=>!Le(e))).map(((e,t)=>({...e,renderPriority:e.renderPriority||0,enableAsyncRender:!1!==e.enableAsyncRender,_index:n+t,_hidden:Ve(e),_hiddenInView:we(e),_hiddenLabel:Ce(e)})));a.push(...l)}return a.sort(((e,t)=>(e.order||0)-(t.order||0)))}),"processInBatches")(e);return se.set(t,a),a})),xe=r((()=>{const e=ze.value;if(!e.length)return[];if(De.value||e.length>J.maxSyncRenderCount){const t=Array.from(le.value);return e.filter(((e,a)=>!e._hidden&&!e._hiddenInView&&(t.includes(e.prop)||a<J.initialLoadCount)))}return e.filter((e=>!e._hidden&&!e._hiddenInView))})),qe=c(t({name:"RenderFormWrap",setup(){p();return()=>{const{useCol:e,rowProps:t,onlyRenderComponent:a,elFormProps:n}=o(ae),l=xe.value;if(a)return l.map(((e,t)=>m(h("div",{key:`${e.prop}_${t}`},[h(E,{column:e,modelValue:X.value,"onUpdate:modelValue":k((e=>X.value=e),"onUpdate:modelValue"),isView:J.isView,isLazyLoading:De.value,isReady:le.value.has(e.prop)},null)]),[[f,!e._hidden&&!e._hiddenInView]])));return h(M,v({ref:ee,model:X.value,class:O},n),{default:k((()=>[e?$e(l):_e(l)]),"default")})}}})),Ie=k(((e={})=>({
1
+ import{isVNode as e,defineComponent as t,useModel as a,shallowRef as n,ref as l,computed as r,unref as o,getCurrentInstance as i,nextTick as u,provide as d,watch as s,markRaw as c,useSlots as p,withDirectives as m,createVNode as h,vShow as f,mergeProps as v,onMounted as y,onBeforeUnmount as g,createElementBlock as b,openBlock as V,normalizeClass as w,createCommentVNode as C,createBlock as L,createElementVNode as z,toDisplayString as I,mergeModels as x}from"vue";import"./components/ZnFormV2Item.vue.mjs";import{getFormProp as q,setFormProp as $,hyphenToCamelCase as _,getPx as R}from"./helper/index.mjs";import{formEnumMapKey as S,ComponentNameEnum as F}from"./interface/index.mjs";import{ElForm as M,ElRow as P,ElCol as D,ElFormItem as T,ElSkeleton as j}from"element-plus";import E from"./components/ZnFormV2Item.vue2.mjs";var U=Object.defineProperty,k=(e,t)=>U(e,"name",{value:t,configurable:!0});const A={key:0,class:"performance-panel",style:{position:"fixed","z-index":"9999",top:"10px",right:"10px",padding:"10px","border-radius":"4px",background:"rgb(0 0 0 / 80%)",color:"white","font-size":"12px"}},B={key:0,class:"loading",style:{display:"flex",position:"absolute","z-index":"1000",top:"50%",left:"50%","align-items":"center",transform:"translate(-50%, -50%)",gap:"10px"}};function N(t){return"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!e(t)}k(N,"_isSlot");const O="zn-form-v2";var Z=t({name:"ZnFormV2",__name:"index",props:x({modelValue:{type:Object,required:!1,default:k((()=>({})),"default")},schema:{type:Array,required:!1,default:k((()=>[]),"default")},elFormProps:{required:!1,default:k((()=>({})),"default")},useCol:{type:Boolean,required:!1,default:!0},rowProps:{type:Object,required:!1},onlyRenderComponent:{type:Boolean,required:!1,default:!1},dynamicModel:{type:Boolean,required:!1,default:!0},includeModelKeys:{type:Array,required:!1},enumMapProps:{type:Map,required:!1},isView:{type:Boolean,required:!1,default:!1},disableRulesInView:{type:Boolean,required:!1,default:!0},lazyLoad:{type:Boolean,required:!1,default:!0},lazyLoadDelay:{type:Number,required:!1,default:16},initialLoadCount:{type:Number,required:!1,default:20},batchLoadCount:{type:Number,required:!1,default:30},lazyLoadDebug:{type:Boolean,required:!1,default:!1},delayLoad:{type:Number,required:!1,default:500},performanceConfig:{required:!1,default:k((()=>({enableMonitoring:!1,enableDebug:!1,reportInterval:5e3})),"default")},enableVirtualScroll:{type:Boolean,required:!1,default:!1},virtualScrollConfig:{required:!1,default:k((()=>({enabled:!1,height:400,itemHeight:60,buffer:5})),"default")},timeSliceConfig:{required:!1,default:k((()=>({enabled:!0,sliceSize:5,batchSize:10})),"default")},maxSyncRenderCount:{type:Number,required:!1,default:20},renderBatchSize:{type:Number,required:!1,default:10},renderDelay:{type:Number,required:!1,default:0},enablePerformanceMonitoring:{type:Boolean,required:!1,default:!1}},{modelValue:{default:k((()=>({})),"default")},modelModifiers:{}}),emits:x(["update:modelValue","update:schema","register","onSearch","onReset","onChange","onEnumChange","onSchemaChange","onPerformanceUpdate"],["update:modelValue"]),setup(e,{expose:x,emit:U}){const Z=1e3,H=3e4,W=16;class G{static{k(this,"PerformanceCache")}cache=new Map;timers=new Map;hitCount=0;missCount=0;has(e){const t=this.cache.get(e);return!!(t&&Date.now()-t.timestamp<H)||(t&&this.delete(e),!1)}get(e){const t=this.cache.get(e);if(t&&Date.now()-t.timestamp<H)return this.hitCount++,t.value;this.missCount++,this.delete(e)}set(e,t){if(this.cache.size>=Z){const e=this.cache.keys().next().value;this.delete(e)}this.cache.set(e,{value:t,timestamp:Date.now()}),this.timers.has(e)&&clearTimeout(this.timers.get(e));const a=setTimeout((()=>{this.delete(e)}),H);this.timers.set(e,a)}delete(e){this.cache.delete(e);const t=this.timers.get(e);t&&(clearTimeout(t),this.timers.delete(e))}clear(){this.cache.clear(),this.timers.forEach((e=>clearTimeout(e))),this.timers.clear()}getStats(){return{size:this.cache.size,hitRate:this.hitCount/(this.hitCount+this.missCount)||0,hitCount:this.hitCount,missCount:this.missCount}}}const K=k((()=>{const e=new Map;return(t,a,n=W)=>{e.has(t)&&clearTimeout(e.get(t));const l=setTimeout((()=>{a(),e.delete(t)}),n);e.set(t,l)}}),"createDebouncer"),Y=k((()=>{let e=null,t="";return a=>{if(a===e)return t;const n=Object.keys(a).sort();let l=n.length.toString();for(const e of n){const t=a[e];l+="object"==typeof t&&null!==t?`${e}:obj:${Object.keys(t).length};`:`${e}:${typeof t}:${String(t).slice(0,50)};`}return e=a,t=l,l}}),"createModelHasher"),J=e,Q=U,X=a(e,"modelValue"),ee=n(),te=l({}),ae=r((()=>{const e={...J};return Object.assign(e,o(te)),e})),ne=l(J.enumMapProps||new Map),le=l(new Set),re=l([]),oe=l(!1),ie=l(J.delayLoad>0),ue=l(null),de=(l(0),l([])),se=new G,ce=K(),pe=Y(),me=l({renderCount:0,lastRenderTime:0,avgRenderTime:0,cacheStats:{size:0,hitRate:0,hitCount:0,missCount:0},renderTime:0,componentCount:0,cacheHitRate:0,queueLength:0,memoryUsage:null}),he=l(!1),fe=k((()=>{se.clear()}),"clearCache"),ve=(i(),k((()=>{ue.value&&(clearInterval(ue.value),ue.value=null),se.clear()}),"cleanup")),ye=k((async({enum:e,prop:t,cacheEnum:a=!0})=>{if(!e)return;const n=o(ne);if("function"!=typeof e)return n.set(t,o(e)),void(ne.value=new Map(n));try{n.set(t,[]);let a=await e(o(X),n);a=a?.result||a,Array.isArray(a)||(console.warn(`警告: '${t}' 的enum函数返回值不是数组`,a),a=[]),n.set(t,a),ne.value=new Map(n),u((()=>{if(t){const e=o(ae).schema?.find((e=>e.prop===t));e&&ge(e)}}))}catch(e){console.error(`添加enum函数参数失败: '${t}'`,e),n.set(t,[]),ne.value=new Map(n)}}),"setEnumMap");d(S,ne);const ge=k((async({defaultValue:e,fieldNames:t,prop:a})=>{const n=o(X),l=q(n,a);if(l||!1===l||0===l)return;const r=o(e);if(null!=r)return $(n,a,"function"!=typeof r?r:await r(n,o(ne)));const i=o(ne).get(a);if(i?.length){const e=i.filter((e=>"Y"===e.isDefault));return e.length&&$(n,a,e[0][t?.value??"value"])}}),"initDefaultValue"),be=k((({prop:e,el:t,subProp:a,subEnum:n})=>{if(_(t)===F.EL_SELECT){if("string"!=typeof a)return;s((()=>q(o(X),e)),(async t=>{const l=o(ne);if(o(X)[a]&&(o(X)[a]=""),!n)return;if(!t)return l.set(a,[]);if(l.get(`${a}-${t}`))l.set(a,l.get(`${a}-${t}`)||[]);else if("function"==typeof n){const r=await n(t,l.get(e));l.set(`${a}-${t}`,r),l.set(a,r)}else Array.isArray(n)&&(l.set(`${a}-${t}`,n),l.set(a,n));const r=l.get(e)||[],[i]=r.filter((e=>e.value===t));i?.subValue&&(o(X)[a]=i.subValue)}),{immediate:!0})}}),"cascadeEnum"),Ve=k((e=>"boolean"==typeof e.hidden?e.hidden:"function"==typeof e.hidden&&e.hidden(o(X))),"getIsHidden"),we=k((e=>!!J.isView&&("boolean"==typeof e.hiddenInView?e.hiddenInView:"function"==typeof e.hiddenInView&&e.hiddenInView(o(X)))),"getIsHiddenInView"),Ce=k((e=>"boolean"==typeof e.hiddenLabel?e.hiddenLabel:"function"==typeof e.hiddenLabel&&e.hiddenLabel(o(X))),"getIsHiddenLabel"),Le=k((e=>{if("boolean"==typeof e.destroy)return e.destroy;if("function"==typeof e.destroy){const t=`destroy_${e.prop}_${pe(o(X))}`;if(se.has(t))return se.get(t);const a=e.destroy(o(X));return se.set(t,a),a}return!1}),"getIsDestroyed"),ze=r((()=>{if(J.delayLoad>0&&!oe.value)return[];const e=o(ae).schema||[];if(e.length<=20)return e.filter((e=>!Le(e))).sort(((e,t)=>(e.order||0)-(t.order||0))).map(((e,t)=>({...e,renderPriority:e.renderPriority||0,enableAsyncRender:!1!==e.enableAsyncRender,_index:t,_hidden:Ve(e),_hiddenInView:we(e),_hiddenLabel:Ce(e)})));const t=`processedSchema_${e.length}_${pe(o(X))}`;if(se.has(t))return se.get(t);const a=k(((e,t=10)=>{const a=[];for(let n=0;n<e.length;n+=t){const l=e.slice(n,n+t).filter((e=>!Le(e))).map(((e,t)=>({...e,renderPriority:e.renderPriority||0,enableAsyncRender:!1!==e.enableAsyncRender,_index:n+t,_hidden:Ve(e),_hiddenInView:we(e),_hiddenLabel:Ce(e)})));a.push(...l)}return a.sort(((e,t)=>(e.order||0)-(t.order||0)))}),"processInBatches")(e);return se.set(t,a),a})),Ie=r((()=>{const e=ze.value;if(!e.length)return[];if(De.value||e.length>J.maxSyncRenderCount){const t=Array.from(le.value);return e.filter(((e,a)=>!e._hidden&&!e._hiddenInView&&(t.includes(e.prop)||a<J.initialLoadCount)))}return e.filter((e=>!e._hidden&&!e._hiddenInView))})),xe=c(t({name:"RenderFormWrap",setup(){p();return()=>{const{useCol:e,rowProps:t,onlyRenderComponent:a,elFormProps:n}=o(ae),l=Ie.value;if(a)return l.map(((e,t)=>m(h("div",{key:`${e.prop}_${t}`},[h(E,{column:e,modelValue:X.value,"onUpdate:modelValue":k((e=>X.value=e),"onUpdate:modelValue"),isView:J.isView,isLazyLoading:De.value,isReady:le.value.has(e.prop)},null)]),[[f,!e._hidden&&!e._hiddenInView]])));return h(M,v({ref:ee,model:X.value,class:O},n),{default:k((()=>[e?$e(l):_e(l)]),"default")})}}})),qe=k(((e={})=>({
2
2
  // 如果有 span,代表用户优先级更高,所以不需要默认栅格
3
- ...e.span?{}:{xs:24,sm:12,md:12,lg:12,xl:12},...e})),"setGridProp"),$e=k((e=>{let t;const{rowProps:a}=o(ae);return h(P,v({gutter:20},a),N(t=e.map(((e,t)=>{const n=Ie({...a?.col,...e.col});return h(D,v({key:`${e.prop}_${t}`},n),{default:k((()=>[e._hiddenLabel?h(E,{column:e,modelValue:X.value,"onUpdate:modelValue":k((e=>X.value=e),"onUpdate:modelValue"),isView:J.isView,isLazyLoading:De.value,isReady:le.value.has(e.prop)},null):h(T,v({prop:e.prop,label:"function"==typeof e.label?e.label(X.value):e.label,style:e.width?{width:S(e.width)}:{}},e.formItem),{default:k((()=>[h(E,{column:e,modelValue:X.value,"onUpdate:modelValue":k((e=>X.value=e),"onUpdate:modelValue"),isView:J.isView,isLazyLoading:De.value,isReady:le.value.has(e.prop)},null)]),"default")})]),"default")})})))?t:{default:k((()=>[t]),"default")})}),"renderWithCol"),_e=k((e=>e.map(((e,t)=>e._hiddenLabel?h(E,{key:`${e.prop}_${t}`,column:e,modelValue:X.value,"onUpdate:modelValue":k((e=>X.value=e),"onUpdate:modelValue"),isView:J.isView,isLazyLoading:De.value,isReady:le.value.has(e.prop)},null):h(T,v({key:`${e.prop}_${t}`,prop:e.prop,label:"function"==typeof e.label?e.label(X.value):e.label,style:e.width?{width:S(e.width)}:{}},e.formItem),{default:k((()=>[h(E,{column:e,modelValue:X.value,"onUpdate:modelValue":k((e=>X.value=e),"onUpdate:modelValue"),isView:J.isView,isLazyLoading:De.value,isReady:le.value.has(e.prop)},null)]),"default")})))),"renderWithoutCol"),Se=k((()=>{if(!De.value)return;const e=ze.value;for(let t=0;t<Math.min(J.initialLoadCount,e.length);t++)le.value.add(e[t].prop);re.value=e.slice(J.initialLoadCount),re.value.length>0&&Fe()}),"initializeLazyLoading"),Fe=k((()=>{if(0===re.value.length)return void(he.value=!1);he.value=!0;const e=k((()=>{if(0===re.value.length)return he.value=!1,void(J.lazyLoadDebug&&console.log("ZnFormV2 懒加载完成",{"总组件数":le.value.size,"加载时间统计":de.value}));const t=performance.now(),a=re.value.shift();a&&(le.value.add(a.prop),de.value.push({prop:a.prop,label:a.label,startTime:t,endTime:performance.now(),duration:performance.now()-t,batchIndex:le.value.size}),me.value.componentCount=le.value.size,me.value.renderTime=performance.now()-t,me.value.queueLength=re.value.length,J.enablePerformanceMonitoring&&Q("onPerformanceUpdate",me.value)),re.value.length>0?J.lazyLoadDelay<=16?requestAnimationFrame(e):setTimeout(e,J.lazyLoadDelay):(he.value=!1,J.lazyLoadDebug&&console.log("ZnFormV2 懒加载完成",{"总组件数":le.value.size,"加载时间统计":de.value}))}),"renderNext");setTimeout(e,J.delayLoad)}),"startBatchRendering"),Re=k((()=>{(o(ae).schema||[]).forEach((async e=>{e.enum&&await ye(e),e.subProp&&e.subEnum&&be(e),void 0!==e.defaultValue&&ce(`init_${e.prop}`,(()=>ge(e)),50)}))}),"handleSchemaInit"),Me=k(((e,t)=>{if(!t||t.length!==e.length)return!0;for(let a=0;a<e.length;a++){const n=e[a],l=t[a];if(!l||n.prop!==l.prop||n.el!==l.el||n.destroy!==l.destroy||n.order!==l.order)return!0}return!1}),"hasStructuralChanges");s((()=>o(ae).schema),((e,t)=>{if((!(J.delayLoad>0)||oe.value)&&e?.length){const a=Me(e,t||[]);Re();!t||a||J.lazyLoad&&a||e.length>J.maxSyncRenderCount&&a?(J.lazyLoadDebug&&console.log("ZnFormV2: 检测到结构变化,重新渲染",{oldCount:t?.length||0,newCount:e.length,hasStructuralChange:a}),a&&le.value.clear(),re.value=[],de.value=[],u((()=>{Se()}))):(fe(),J.lazyLoadDebug&&console.log("ZnFormV2: Schema属性更新,无需重新渲染",{oldCount:t?.length,newCount:e.length}))}}),{immediate:!1,deep:!0}),s((()=>o(ae).schema?.map((e=>({prop:e.prop,enum:e.enum,dictCode:e.dictCode})))),((e,t)=>{if(!e||!t||e.length!==t.length)return;let a=!1;e.forEach(((e,n)=>{const l=t[n];if(e.enum!==l?.enum||e.dictCode!==l?.dictCode){const t=o(ae).schema?.find((t=>t.prop===e.prop));t&&(a=!0,u((()=>{ye(t)})),J.lazyLoadDebug&&console.log(`ZnFormV2: 更新枚举数据 ${e.prop}`,{oldEnum:l?.enum,newEnum:e.enum,dictCode:e.dictCode}))}})),a&&se.clear()}),{deep:!0}),s((()=>X.value),(()=>{se.clear()}),{deep:!0}),s([()=>J.isView,()=>o(ae).schema?.map((e=>({prop:e.prop,hidden:e.hidden,hiddenInView:e.hiddenInView,hiddenLabel:e.hiddenLabel})))],(()=>{se.clear()}),{deep:!0});const Pe={validate:k((()=>ee.value?.validate()),"validate"),validateField:k((e=>ee.value?.validateField(e)),"validateField"),resetFields:k((()=>{ee.value?.resetFields()}),"resetFields"),resetForm:k((()=>{Object.keys(X.value).forEach((e=>{delete X.value[e]})),ee.value?.clearValidate(),u((()=>{Re()}))}),"resetForm"),clearValidate:k((e=>{ee.value?.clearValidate(e)}),"clearValidate"),scrollToField:k((e=>{ee.value?.scrollToField(e)}),"scrollToField"),setEnumMap:ye,initDefaultValue:ge,clearCache:fe};y((()=>{if(J.delayLoad>0)setTimeout((()=>{ie.value=!1,oe.value=!0;const e=o(ae).schema;e?.length&&(Re(),De.value&&Se()),Q("register",Pe)}),J.delayLoad);else{ie.value=!1,oe.value=!0;const e=o(ae).schema;e?.length&&(Re(),De.value&&Se()),Q("register",Pe)}J.enablePerformanceMonitoring&&(ue.value=setInterval((()=>{me.value.cacheStats=se.getStats(),Q("onPerformanceUpdate",me.value)}),J.performanceConfig.reportInterval||2e3))})),g((()=>{ve()})),q({...Pe,form:ee,enumMap:ne});const De=r((()=>{const e=o(ae).schema?.length||0,t=J.lazyLoad;if(!1===t)return!1;if(!0===t)return!0;if(e<5){if(0===(o(ae).schema?.filter((e=>e.render||e.renderInView))?.length||0))return!1}return!0}));return(t,a)=>(V(),b("div",{class:w([O,"zn-znform-v2-container"]),ref:"containerRef"},[C(" 性能监控面板 "),e.performanceConfig.enableDebug&&me.value?(V(),b("div",A,[z("div",null,"渲染耗时: "+x(me.value.renderTime.toFixed(2))+"ms",1
4
- /* TEXT */),z("div",null,"组件数量: "+x(me.value.componentCount),1
5
- /* TEXT */),z("div",null,"缓存命中率: "+x((100*me.value.cacheHitRate).toFixed(1))+"%",1
6
- /* TEXT */),z("div",null,"队列长度: "+x(me.value.queueLength),1
7
- /* TEXT */)])):C("v-if",!0),C(" 组件级别的骨架屏 - delayLoad期间显示 "),ie.value?(V(),L(o(j),{key:1,rows:8,animated:""})):C("v-if",!0),C(" 表单容器 - 组件准备好后显示 "),m(z("div",null,[h(o(qe)),C(" 懒加载状态 "),he.value&&e.enablePerformanceMonitoring?(V(),b("div",B,a[0]||(a[0]=[z("div",{style:{width:"16px",height:"16px",animation:"spin 1s linear infinite",border:"2px solid #409eff","border-top":"2px solid transparent","border-radius":"50%"}},null,-1
3
+ ...e.span?{}:{xs:24,sm:12,md:12,lg:12,xl:12},...e})),"setGridProp"),$e=k((e=>{let t;const{rowProps:a}=o(ae);return h(P,v({gutter:20},a),N(t=e.map(((e,t)=>{const n=qe({...a?.col,...e.col});return h(D,v({key:`${e.prop}_${t}`},n),{default:k((()=>[e._hiddenLabel?h(E,{column:e,modelValue:X.value,"onUpdate:modelValue":k((e=>X.value=e),"onUpdate:modelValue"),isView:J.isView,isLazyLoading:De.value,isReady:le.value.has(e.prop)},null):h(T,v({prop:e.prop,label:"function"==typeof e.label?e.label(X.value):e.label,style:e.width?{width:R(e.width)}:{}},J.isView&&J.disableRulesInView?{...e.formItem,rules:null}:e.formItem),{default:k((()=>[h(E,{column:e,modelValue:X.value,"onUpdate:modelValue":k((e=>X.value=e),"onUpdate:modelValue"),isView:J.isView,isLazyLoading:De.value,isReady:le.value.has(e.prop)},null)]),"default")})]),"default")})})))?t:{default:k((()=>[t]),"default")})}),"renderWithCol"),_e=k((e=>e.map(((e,t)=>e._hiddenLabel?h(E,{key:`${e.prop}_${t}`,column:e,modelValue:X.value,"onUpdate:modelValue":k((e=>X.value=e),"onUpdate:modelValue"),isView:J.isView,isLazyLoading:De.value,isReady:le.value.has(e.prop)},null):h(T,v({key:`${e.prop}_${t}`,prop:e.prop,label:"function"==typeof e.label?e.label(X.value):e.label,style:e.width?{width:R(e.width)}:{}},J.isView&&J.disableRulesInView?{...e.formItem,rules:null}:e.formItem),{default:k((()=>[h(E,{column:e,modelValue:X.value,"onUpdate:modelValue":k((e=>X.value=e),"onUpdate:modelValue"),isView:J.isView,isLazyLoading:De.value,isReady:le.value.has(e.prop)},null)]),"default")})))),"renderWithoutCol"),Re=k((()=>{if(!De.value)return;const e=ze.value;for(let t=0;t<Math.min(J.initialLoadCount,e.length);t++)le.value.add(e[t].prop);re.value=e.slice(J.initialLoadCount),re.value.length>0&&Se()}),"initializeLazyLoading"),Se=k((()=>{if(0===re.value.length)return void(he.value=!1);he.value=!0;const e=k((()=>{if(0===re.value.length)return he.value=!1,void(J.lazyLoadDebug&&console.log("ZnFormV2 懒加载完成",{"总组件数":le.value.size,"加载时间统计":de.value}));const t=performance.now(),a=re.value.shift();a&&(le.value.add(a.prop),de.value.push({prop:a.prop,label:a.label,startTime:t,endTime:performance.now(),duration:performance.now()-t,batchIndex:le.value.size}),me.value.componentCount=le.value.size,me.value.renderTime=performance.now()-t,me.value.queueLength=re.value.length,J.enablePerformanceMonitoring&&Q("onPerformanceUpdate",me.value)),re.value.length>0?J.lazyLoadDelay<=16?requestAnimationFrame(e):setTimeout(e,J.lazyLoadDelay):(he.value=!1,J.lazyLoadDebug&&console.log("ZnFormV2 懒加载完成",{"总组件数":le.value.size,"加载时间统计":de.value}))}),"renderNext");setTimeout(e,J.delayLoad)}),"startBatchRendering"),Fe=k((()=>{(o(ae).schema||[]).forEach((async e=>{e.enum&&await ye(e),e.subProp&&e.subEnum&&be(e),void 0!==e.defaultValue&&ce(`init_${e.prop}`,(()=>ge(e)),50)}))}),"handleSchemaInit"),Me=k(((e,t)=>{if(!t||t.length!==e.length)return!0;for(let a=0;a<e.length;a++){const n=e[a],l=t[a];if(!l||n.prop!==l.prop||n.el!==l.el||n.destroy!==l.destroy||n.order!==l.order)return!0}return!1}),"hasStructuralChanges");s((()=>o(ae).schema),((e,t)=>{if((!(J.delayLoad>0)||oe.value)&&e?.length){const a=Me(e,t||[]);Fe();!t||a||J.lazyLoad&&a||e.length>J.maxSyncRenderCount&&a?(J.lazyLoadDebug&&console.log("ZnFormV2: 检测到结构变化,重新渲染",{oldCount:t?.length||0,newCount:e.length,hasStructuralChange:a}),a&&le.value.clear(),re.value=[],de.value=[],u((()=>{Re()}))):(fe(),J.lazyLoadDebug&&console.log("ZnFormV2: Schema属性更新,无需重新渲染",{oldCount:t?.length,newCount:e.length}))}}),{immediate:!1,deep:!0}),s((()=>o(ae).schema?.map((e=>({prop:e.prop,enum:e.enum,dictCode:e.dictCode})))),((e,t)=>{if(!e||!t||e.length!==t.length)return;let a=!1;e.forEach(((e,n)=>{const l=t[n];if(e.enum!==l?.enum||e.dictCode!==l?.dictCode){const t=o(ae).schema?.find((t=>t.prop===e.prop));t&&(a=!0,u((()=>{ye(t)})),J.lazyLoadDebug&&console.log(`ZnFormV2: 更新枚举数据 ${e.prop}`,{oldEnum:l?.enum,newEnum:e.enum,dictCode:e.dictCode}))}})),a&&se.clear()}),{deep:!0}),s((()=>X.value),(()=>{se.clear()}),{deep:!0}),s([()=>J.isView,()=>o(ae).schema?.map((e=>({prop:e.prop,hidden:e.hidden,hiddenInView:e.hiddenInView,hiddenLabel:e.hiddenLabel})))],(()=>{se.clear()}),{deep:!0});const Pe={validate:k((()=>ee.value?.validate()),"validate"),validateField:k((e=>ee.value?.validateField(e)),"validateField"),resetFields:k((()=>{ee.value?.resetFields()}),"resetFields"),resetForm:k((()=>{Object.keys(X.value).forEach((e=>{delete X.value[e]})),ee.value?.clearValidate(),u((()=>{Fe()}))}),"resetForm"),clearValidate:k((e=>{ee.value?.clearValidate(e)}),"clearValidate"),scrollToField:k((e=>{ee.value?.scrollToField(e)}),"scrollToField"),setEnumMap:ye,initDefaultValue:ge,clearCache:fe};y((()=>{if(J.delayLoad>0)setTimeout((()=>{ie.value=!1,oe.value=!0;const e=o(ae).schema;e?.length&&(Fe(),De.value&&Re()),Q("register",Pe)}),J.delayLoad);else{ie.value=!1,oe.value=!0;const e=o(ae).schema;e?.length&&(Fe(),De.value&&Re()),Q("register",Pe)}J.enablePerformanceMonitoring&&(ue.value=setInterval((()=>{me.value.cacheStats=se.getStats(),Q("onPerformanceUpdate",me.value)}),J.performanceConfig.reportInterval||2e3))})),g((()=>{ve()})),x({...Pe,form:ee,enumMap:ne});const De=r((()=>{const e=o(ae).schema?.length||0,t=J.lazyLoad;if(!1===t)return!1;if(!0===t)return!0;if(e<5){if(0===(o(ae).schema?.filter((e=>e.render||e.renderInView))?.length||0))return!1}return!0}));return(t,a)=>(V(),b("div",{class:w([O,"zn-znform-v2-container"]),ref:"containerRef"},[C(" 性能监控面板 "),e.performanceConfig.enableDebug&&me.value?(V(),b("div",A,[z("div",null,"渲染耗时: "+I(me.value.renderTime.toFixed(2))+"ms",1
4
+ /* TEXT */),z("div",null,"组件数量: "+I(me.value.componentCount),1
5
+ /* TEXT */),z("div",null,"缓存命中率: "+I((100*me.value.cacheHitRate).toFixed(1))+"%",1
6
+ /* TEXT */),z("div",null,"队列长度: "+I(me.value.queueLength),1
7
+ /* TEXT */)])):C("v-if",!0),C(" 组件级别的骨架屏 - delayLoad期间显示 "),ie.value?(V(),L(o(j),{key:1,rows:8,animated:""})):C("v-if",!0),C(" 表单容器 - 组件准备好后显示 "),m(z("div",null,[h(o(xe)),C(" 懒加载状态 "),he.value&&e.enablePerformanceMonitoring?(V(),b("div",B,a[0]||(a[0]=[z("div",{style:{width:"16px",height:"16px",animation:"spin 1s linear infinite",border:"2px solid #409eff","border-top":"2px solid transparent","border-radius":"50%"}},null,-1
8
8
  /* HOISTED */),z("span",null,"正在渲染表单项...",-1
9
9
  /* HOISTED */)]))):C("v-if",!0)],512
10
10
  /* NEED_PATCH */),[[f,!ie.value]])],2