Files
qhmes/deploy-qhmes/frontend/js/BindingDetailFieldsEditor-BawG8cM1.js
2026-05-15 11:34:12 +08:00

2 lines
14 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
var Ce=Object.defineProperty,Se=Object.defineProperties;var Fe=Object.getOwnPropertyDescriptors;var H=Object.getOwnPropertySymbols;var Me=Object.prototype.hasOwnProperty,Ue=Object.prototype.propertyIsEnumerable;var Y=(v,y,o)=>y in v?Ce(v,y,{enumerable:!0,configurable:!0,writable:!0,value:o}):v[y]=o,x=(v,y)=>{for(var o in y||(y={}))Me.call(y,o)&&Y(v,o,y[o]);if(H)for(var o of H(y))Ue.call(y,o)&&Y(v,o,y[o]);return v},T=(v,y)=>Se(v,Fe(y));import{d as ze,o as $e,b as Ie,w as Be,f as C,ah as z,ar as B,as as K,au as p,k as u,aF as c,G as g,e as V,av as j,aC as L,ag as A,F as J,aD as Q}from"./vue-vendor-C7Zq48Yl.js";import{u as Re,d as _e}from"./index-BI6CMai0.js";import"./antd-vue-vendor-BPnV8VqP.js";import"./vxe-table-vendor-B88kchpX.js";const Le={class:"binding-detail-fields-editor"},Ee={class:"binding-actions-row"},qe={key:2,class:"field-count"},Ne={class:"nested-fields"},De={class:"nested-fields-head"},Oe={class:"modal-section"},Pe={class:"modal-section"},Ve={class:"modal-section"},Ge={class:"modal-section"},He=ze({__name:"BindingDetailFieldsEditor",props:{detailTables:{}},emits:["update:detailTables"],setup(v,{emit:y}){const o=v,S=y,{createMessage:U}=Re(),O=C(typeof window!="undefined"?window.innerHeight:800);function G(){O.value=window.innerHeight}$e(()=>window.addEventListener("resize",G)),Ie(()=>window.removeEventListener("resize",G));const W=V(()=>{const a=O.value;return Math.round(Math.min(500,Math.max(220,a-380)))}),X=V(()=>{const a=O.value;return Math.round(Math.min(300,Math.max(140,a-520)))}),$=C([]),k=C([]),E=C(!1),q=C(1),F=C([{tableKey:"",label:""}]),R=C(!1),I=C(void 0),N=C(1),h=C([{parentKey:"",fieldKey:"",label:""}]),Z=V(()=>(o.detailTables||[]).map(a=>({value:a.tableKey,label:a.label?`${a.tableKey}${a.label}`:a.tableKey}))),ee=[{title:"数据源",dataIndex:"tableKey",ellipsis:!0,width:96},{title:"显示名",dataIndex:"label",ellipsis:!0},{title:"字段数",dataIndex:"fieldCount",width:72,align:"right"}],le=[{title:"字段键",dataIndex:"key",ellipsis:!0},{title:"显示名",dataIndex:"label",ellipsis:!0},{title:"操作",dataIndex:"actions",width:56,align:"center"}];Be(()=>o.detailTables.map(a=>a.tableKey).join(","),()=>{const a=new Set(o.detailTables.map(e=>e.tableKey));k.value=k.value.filter(e=>a.has(e)),$.value=$.value.filter(e=>a.has(e))});function ae(a){k.value=a}function te(){const a=new Set(o.detailTables.map(e=>e.tableKey.trim()).filter(Boolean));return F.value.forEach(e=>{const t=e.tableKey.trim();t&&a.add(t)}),a}function ne(a){let e=0;for(const t of a){const l=String(t).match(/^List(\d+)$/i);l&&(e=Math.max(e,Number(l[1])))}return e}function ie(a){const e=new Set,t=o.detailTables.find(n=>n.tableKey===a);((t==null?void 0:t.fields)||[]).forEach(n=>e.add(n.key)),h.value.forEach(n=>{var i;String((i=n.parentKey)!=null?i:"").trim()===a&&n.fieldKey.trim()&&e.add(n.fieldKey.trim())});let l=0;for(const n of e){const i=String(n).match(/^Field(\d+)$/i);i&&(l=Math.max(l,Number(i[1])))}return l}function se(a,e){return typeof e=="number"&&e>=0?e:o.detailTables.findIndex(t=>t.tableKey===a.tableKey)}function oe(a,e,t){var w,f;const l=se(a,t),n=(f=(w=o.detailTables[l])==null?void 0:w.tableKey)!=null?f:a.tableKey,i=String(e||"").trim();if(!i){U.warning("数据源键不能为空");return}if(i!==n&&o.detailTables.some(M=>M.tableKey===i)){U.warning("该数据源键已存在");return}const s=[...o.detailTables];l<0||l>=s.length||(s[l]=T(x({},s[l]),{tableKey:i}),S("update:detailTables",s),k.value=k.value.map(M=>M===n?i:M),$.value=$.value.map(M=>M===n?i:M))}function de(a,e){const t=o.detailTables.map(l=>l.tableKey===a?T(x({},l),{label:e.trim()||void 0}):l);S("update:detailTables",t)}function ue(a,e,t){const l=String(t||"").trim();if(!l){U.warning("字段键不能为空");return}const n=o.detailTables.find(f=>f.tableKey===a);if(!n)return;const i=[...n.fields||[]];if(l!==e&&i.some(f=>f.key===l)){U.warning("该字段键已存在");return}const s=i.map(f=>f.key===e?T(x({},f),{key:l}):f),w=o.detailTables.map(f=>f.tableKey===a?T(x({},f),{fields:s}):f);S("update:detailTables",w)}function re(a,e,t){const l=o.detailTables.map(n=>{if(n.tableKey!==a)return n;const i=(n.fields||[]).map(s=>s.key===e?T(x({},s),{label:t.trim()||void 0}):s);return T(x({},n),{fields:i})});S("update:detailTables",l)}function ce(a){const e=o.detailTables.find(s=>s.tableKey===a);if(!e)return;const t=new Set((e.fields||[]).map(s=>s.key));let l=be(a)+1;for(;t.has(`Field${l}`);)l+=1;const n=`Field${l}`,i=o.detailTables.map(s=>s.tableKey===a?T(x({},s),{fields:[...s.fields||[],{key:n,label:`字段${l}`}]}):s);S("update:detailTables",i)}function be(a){const e=o.detailTables.find(l=>l.tableKey===a);let t=0;for(const l of(e==null?void 0:e.fields)||[]){const n=String(l.key).match(/^Field(\d+)$/i);n&&(t=Math.max(t,Number(n[1])))}return t}function pe(a,e){const t=o.detailTables.map(l=>l.tableKey===a?T(x({},l),{fields:(l.fields||[]).filter(n=>n.key!==e)}):l);S("update:detailTables",t)}function fe(){if(!k.value.length)return;const a=new Set(k.value);S("update:detailTables",o.detailTables.filter(e=>!a.has(e.tableKey))),k.value=[],$.value=[]}function P(){q.value=1,F.value=[{tableKey:"",label:""}]}function me(){P(),E.value=!0}function ye(){F.value.push({tableKey:"",label:""})}function ve(a){F.value.length<=1||F.value.splice(a,1)}function ke(){const a=Math.max(1,Math.min(200,Math.floor(Number(q.value)||1))),e=te();let t=Math.max(1,ne(e)+1);for(let l=0;l<a;l++){for(;e.has(`List${t}`);)t+=1;const n=`List${t}`;e.add(n),F.value.push({tableKey:n,label:`列表${t}`}),t+=1}U.success(`已新增 ${a} 行到下方列表,可修改后点「确定添加」。`)}function we(){const a=new Set(o.detailTables.map(l=>l.tableKey.trim()).filter(Boolean)),e=[],t=new Set(a);for(const l of F.value){const n=String(l.tableKey||"").trim();if(!n||t.has(n))continue;t.add(n);const i=String(l.label||"").trim();e.push({tableKey:n,label:i||void 0,fields:[]})}e.length&&S("update:detailTables",[...o.detailTables,...e]),E.value=!1,P()}function D(){I.value=void 0,N.value=1,h.value=[{parentKey:"",fieldKey:"",label:""}]}function Ke(){D(),o.detailTables.length&&(I.value=o.detailTables[0].tableKey),R.value=!0}function ge(){h.value.push({parentKey:"",fieldKey:"",label:""})}function he(a){h.value.length<=1||h.value.splice(a,1)}function xe(){const a=String(I.value||"").trim();if(!a){U.warning("请先选择父级明细数据源");return}if(!o.detailTables.some(i=>i.tableKey===a)){U.warning("父级不存在请先在主表或批量新增明细表中登记");return}const e=Math.max(1,Math.min(200,Math.floor(Number(N.value)||1))),t=new Set,l=o.detailTables.find(i=>i.tableKey===a);((l==null?void 0:l.fields)||[]).forEach(i=>t.add(i.key)),h.value.forEach(i=>{var s;String((s=i.parentKey)!=null?s:"").trim()===a&&i.fieldKey.trim()&&t.add(i.fieldKey.trim())});let n=Math.max(1,ie(a)+1);for(let i=0;i<e;i++){for(;t.has(`Field${n}`);)n+=1;const s=`Field${n}`;t.add(s),h.value.push({parentKey:a,fieldKey:s,label:`字段${n}`}),n+=1}U.success(`已新增 ${e} 行到下方列表,可修改后点「确定添加」。`)}function Te(){const a=new Map;for(const t of h.value){const l=String(t.parentKey||"").trim(),n=String(t.fieldKey||"").trim();if(!l||!n||!o.detailTables.some(w=>w.tableKey===l))continue;const i=String(t.label||"").trim(),s=a.get(l)||[];s.some(w=>w.key===n)||(s.push({key:n,label:i||void 0}),a.set(l,s))}if(!a.size){R.value=!1,D();return}const e=o.detailTables.map(t=>{const l=a.get(t.tableKey);if(!(l!=null&&l.length))return t;const n=new Set((t.fields||[]).map(s=>s.key)),i=[...t.fields||[]];for(const s of l)n.has(s.key)||(n.add(s.key),i.push(s));return T(x({},t),{fields:i})});S("update:detailTables",e),R.value=!1,D()}return(a,e)=>{const t=z("a-button"),l=z("a-input"),n=z("a-table"),i=z("a-input-number"),s=z("a-space"),w=z("a-divider"),f=z("a-modal"),M=z("a-select");return K(),B("div",Le,[p("div",Ee,[u(t,{type:"primary",size:"small",onClick:me},{default:c(()=>[...e[6]||(e[6]=[g("批量新增明细表",-1)])]),_:1}),u(t,{type:"primary",size:"small",disabled:!v.detailTables.length,onClick:Ke},{default:c(()=>[...e[7]||(e[7]=[g("批量新增字段",-1)])]),_:1},8,["disabled"]),u(t,{size:"small",danger:k.value.length>0,disabled:!k.value.length,onClick:fe},{default:c(()=>[...e[8]||(e[8]=[g(" 批量删除 ",-1)])]),_:1},8,["danger","disabled"])]),u(n,{expandedRowKeys:$.value,"onUpdate:expandedRowKeys":e[0]||(e[0]=d=>$.value=d),size:"small",columns:ee,"data-source":v.detailTables,"row-key":d=>d.tableKey,pagination:!1,scroll:{y:W.value},"row-selection":{selectedRowKeys:k.value,onChange:ae}},{bodyCell:c(({column:d,record:b,index:r})=>{var _;return[d.dataIndex==="tableKey"?(K(),L(l,{key:0,value:b.tableKey,size:"small",placeholder:"数据源键 List1","onUpdate:value":m=>oe(b,String(m!=null?m:""),r)},null,8,["value","onUpdate:value"])):d.dataIndex==="label"?(K(),L(l,{key:1,value:(_=b.label)!=null?_:"",size:"small",placeholder:"显示名可选","onUpdate:value":m=>de(b.tableKey,String(m!=null?m:""))},null,8,["value","onUpdate:value"])):d.dataIndex==="fieldCount"?(K(),B("span",qe,j((b.fields||[]).length)+" ",1)):A("",!0)]}),expandedRowRender:c(({record:d})=>[p("div",Ne,[p("div",De,[p("span",null,"字段列表"+j(d.tableKey)+"",1),u(t,{type:"link",size:"small",onClick:b=>ce(d.tableKey)},{default:c(()=>[...e[9]||(e[9]=[g("添加字段",-1)])]),_:1},8,["onClick"])]),u(n,{size:"small",columns:le,"data-source":d.fields||[],"row-key":b=>`${d.tableKey}__${b.key}`,pagination:!1,"show-header":!0,scroll:{y:X.value}},{bodyCell:c(({column:b,record:r})=>{var _;return[b.dataIndex==="key"?(K(),L(l,{key:0,value:r.key,size:"small",placeholder:"字段键 Field1","onUpdate:value":m=>ue(d.tableKey,r.key,String(m!=null?m:""))},null,8,["value","onUpdate:value"])):b.dataIndex==="label"?(K(),L(l,{key:1,value:(_=r.label)!=null?_:"",size:"small",placeholder:"显示名","onUpdate:value":m=>re(d.tableKey,r.key,String(m!=null?m:""))},null,8,["value","onUpdate:value"])):b.dataIndex==="actions"?(K(),L(t,{key:2,type:"link",danger:"",size:"small",onClick:m=>pe(d.tableKey,r.key)},{default:c(()=>[...e[10]||(e[10]=[g("删除",-1)])]),_:1},8,["onClick"])):A("",!0)]}),_:2},1032,["data-source","row-key","scroll"])])]),_:1},8,["expandedRowKeys","data-source","row-key","scroll","row-selection"]),u(f,{open:E.value,"onUpdate:open":e[2]||(e[2]=d=>E.value=d),title:"批量新增明细表","ok-text":"确定添加","cancel-text":"取消",width:"560px",onOk:we,onCancel:P},{default:c(()=>[p("div",Oe,[e[13]||(e[13]=p("div",{class:"section-title"},"快速生成",-1)),e[14]||(e[14]=p("div",{class:"section-desc"},"按数量自动生成数据源键为 List + 数字显示名为 列表 + 数字与参数侧Parameter + 数字 / 参数 + 数字对应生成结果在下方列表中可再修改",-1)),u(s,{align:"center",wrap:"",class:"quick-row"},{default:c(()=>[e[12]||(e[12]=p("span",{class:"quick-label"},"数量",-1)),u(i,{value:q.value,"onUpdate:value":e[1]||(e[1]=d=>q.value=d),min:1,max:200,precision:0,style:{width:"120px"}},null,8,["value"]),u(t,{type:"primary",onClick:ke},{default:c(()=>[...e[11]||(e[11]=[g("一键新增",-1)])]),_:1})]),_:1})]),u(w,{style:{margin:"14px 0"}}),p("div",Pe,[e[17]||(e[17]=p("div",{class:"section-title"},"手动添加",-1)),e[18]||(e[18]=p("div",{class:"section-desc"},"每行两个输入框左侧数据源键右侧显示名可点添加一行增加空行",-1)),(K(!0),B(J,null,Q(F.value,(d,b)=>(K(),B("div",{key:b,class:"manual-row"},[u(l,{value:d.tableKey,"onUpdate:value":r=>d.tableKey=r,size:"small",placeholder:"数据源键","allow-clear":""},null,8,["value","onUpdate:value"]),u(l,{value:d.label,"onUpdate:value":r=>d.label=r,size:"small",placeholder:"显示名可选","allow-clear":""},null,8,["value","onUpdate:value"]),u(t,{type:"text",danger:"",size:"small",disabled:F.value.length<=1,onClick:r=>ve(b)},{default:c(()=>[...e[15]||(e[15]=[g("删除",-1)])]),_:1},8,["disabled","onClick"])]))),128)),u(t,{type:"dashed",block:"",size:"small",class:"add-row-btn",onClick:ye},{default:c(()=>[...e[16]||(e[16]=[g("添加一行",-1)])]),_:1})])]),_:1},8,["open"]),u(f,{open:R.value,"onUpdate:open":e[5]||(e[5]=d=>R.value=d),title:"批量新增字段","ok-text":"确定添加","cancel-text":"取消",width:"560px",onOk:Te,onCancel:D},{default:c(()=>[p("div",Ve,[e[21]||(e[21]=p("div",{class:"section-title"},"快速生成",-1)),e[22]||(e[22]=p("div",{class:"section-desc"}," 先选择父级明细表再填数量字段键为 Field + 数字显示名为 字段 + 数字生成结果追加到下方手动添加列表可再修改后点确定添加 ",-1)),u(s,{direction:"vertical",style:{width:"100%"},size:"small"},{default:c(()=>[u(M,{value:I.value,"onUpdate:value":e[3]||(e[3]=d=>I.value=d),options:Z.value,"show-search":"","option-filter-prop":"label",placeholder:"选择父级明细数据源",style:{width:"100%"}},null,8,["value","options"]),u(s,{align:"center",wrap:"",class:"quick-row"},{default:c(()=>[e[20]||(e[20]=p("span",{class:"quick-label"},"数量",-1)),u(i,{value:N.value,"onUpdate:value":e[4]||(e[4]=d=>N.value=d),min:1,max:200,precision:0,style:{width:"120px"}},null,8,["value"]),u(t,{type:"primary",disabled:!I.value,onClick:xe},{default:c(()=>[...e[19]||(e[19]=[g("一键新增",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})]),u(w,{style:{margin:"14px 0"}}),p("div",Ge,[e[25]||(e[25]=p("div",{class:"section-title"},"手动添加",-1)),e[26]||(e[26]=p("div",{class:"section-desc"},"每行父级数据源键字段键显示名可选父级须为已登记的明细表",-1)),(K(!0),B(J,null,Q(h.value,(d,b)=>(K(),B("div",{key:b,class:"manual-row manual-row--triple"},[u(l,{value:d.parentKey,"onUpdate:value":r=>d.parentKey=r,size:"small",placeholder:"父级数据源键","allow-clear":""},null,8,["value","onUpdate:value"]),u(l,{value:d.fieldKey,"onUpdate:value":r=>d.fieldKey=r,size:"small",placeholder:"字段键","allow-clear":""},null,8,["value","onUpdate:value"]),u(l,{value:d.label,"onUpdate:value":r=>d.label=r,size:"small",placeholder:"显示名可选","allow-clear":""},null,8,["value","onUpdate:value"]),u(t,{type:"text",danger:"",size:"small",disabled:h.value.length<=1,onClick:r=>he(b)},{default:c(()=>[...e[23]||(e[23]=[g("删除",-1)])]),_:1},8,["disabled","onClick"])]))),128)),u(t,{type:"dashed",block:"",size:"small",class:"add-row-btn",onClick:ge},{default:c(()=>[...e[24]||(e[24]=[g("添加一行",-1)])]),_:1})])]),_:1},8,["open"])])}}}),We=_e(He,[["__scopeId","data-v-a173577e"]]);export{We as default};