Files
qhmes/web-dist/js/BindingDetailFieldsEditor-ilFMi7Vw.js
2026-06-16 18:19:57 +08:00

2 lines
15 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 Te=Object.defineProperty,Ce=Object.defineProperties;var Se=Object.getOwnPropertyDescriptors;var P=Object.getOwnPropertySymbols;var Fe=Object.prototype.hasOwnProperty,Me=Object.prototype.propertyIsEnumerable;var V=(v,y,o)=>y in v?Te(v,y,{enumerable:!0,configurable:!0,writable:!0,value:o}):v[y]=o,x=(v,y)=>{for(var o in y||(y={}))Fe.call(y,o)&&V(v,o,y[o]);if(P)for(var o of P(y))Me.call(y,o)&&V(v,o,y[o]);return v},T=(v,y)=>Ce(v,Se(y));import{M as ze,s as Ue,aG as $e,aE as Ie,av as _e,au as Be}from"./index-X7Y8jykP.js";import{e as Re,o as Ee,d as Le,h as Ne,C as I,z as w,Q as m,f as u,A as p,K as qe,r as C,c as G,E as g,G as A,y as R,H as Y,F as j,D as Q}from"./vue-vendor-DNhG1Cve.js";import{_ as De}from"./index-DTjkSGYl.js";import Oe from"./index-DklMb9Qc.js";import Ge from"./index-saD4h7VJ.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";import"./eagerComputed-BTlOruLW.js";import"./fromPairs-Dx9PT-t0.js";import"./useMaxLevel-DE205ncc.js";import"./index-DSsDi_fL.js";import"./Group-UHkub2tu.js";import"./Checkbox-Dbxs4we4.js";import"./index-BuONesFs.js";import"./index-CfNJyBRj.js";import"./dropdown-jkliuVyN.js";import"./index-DfHu-LAS.js";import"./Group-DBzJABA_.js";import"./RadioButton-DRBix2Fq.js";import"./index-C7ckZv9Z.js";import"./DirectoryTree-nk_YTTIy.js";import"./FolderOpenOutlined-SzIPA7z0.js";import"./index-Cl-8Hzo4.js";import"./scrollTo-D49dA-9c.js";import"./operationUnit-vCu2co3e.js";import"./UpOutlined-B1UMbtrP.js";const He={class:"binding-detail-fields-editor"},Pe={class:"binding-actions-row"},Ve={key:2,class:"field-count"},Ae={class:"nested-fields"},Ye={class:"nested-fields-head"},je={class:"modal-section"},Qe={class:"modal-section"},We={class:"modal-section"},Je={class:"modal-section"},Xe=Re({__name:"BindingDetailFieldsEditor",props:{detailTables:{}},emits:["update:detailTables"],setup(v,{emit:y}){const o=v,S=y,{createMessage:z}=Ue(),D=C(typeof window!="undefined"?window.innerHeight:800);function H(){D.value=window.innerHeight}Ee(()=>window.addEventListener("resize",H)),Le(()=>window.removeEventListener("resize",H));const W=G(()=>{const a=D.value;return Math.round(Math.min(500,Math.max(220,a-380)))}),J=G(()=>{const a=D.value;return Math.round(Math.min(300,Math.max(140,a-520)))}),U=C([]),k=C([]),E=C(!1),L=C(1),F=C([{tableKey:"",label:""}]),_=C(!1),$=C(void 0),N=C(1),h=C([{parentKey:"",fieldKey:"",label:""}]),X=G(()=>(o.detailTables||[]).map(a=>({value:a.tableKey,label:a.label?`${a.tableKey}${a.label}`:a.tableKey}))),Z=[{title:"数据源",dataIndex:"tableKey",ellipsis:!0,width:96},{title:"显示名",dataIndex:"label",ellipsis:!0},{title:"字段数",dataIndex:"fieldCount",width:72,align:"right"}],ee=[{title:"字段键",dataIndex:"key",ellipsis:!0},{title:"显示名",dataIndex:"label",ellipsis:!0},{title:"操作",dataIndex:"actions",width:56,align:"center"}];Ne(()=>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)),U.value=U.value.filter(e=>a.has(e))});function le(a){k.value=a}function ae(){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 te(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 ne(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 ie(a,e){return typeof e=="number"&&e>=0?e:o.detailTables.findIndex(t=>t.tableKey===a.tableKey)}function se(a,e,t){var K,b;const l=ie(a,t),n=(b=(K=o.detailTables[l])==null?void 0:K.tableKey)!=null?b:a.tableKey,i=String(e||"").trim();if(!i){z.warning("数据源键不能为空");return}if(i!==n&&o.detailTables.some(M=>M.tableKey===i)){z.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),U.value=U.value.map(M=>M===n?i:M))}function oe(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 de(a,e,t){const l=String(t||"").trim();if(!l){z.warning("字段键不能为空");return}const n=o.detailTables.find(b=>b.tableKey===a);if(!n)return;const i=[...n.fields||[]];if(l!==e&&i.some(b=>b.key===l)){z.warning("该字段键已存在");return}const s=i.map(b=>b.key===e?T(x({},b),{key:l}):b),K=o.detailTables.map(b=>b.tableKey===a?T(x({},b),{fields:s}):b);S("update:detailTables",K)}function ue(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 re(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=pe(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 pe(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 ce(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 me(){if(!k.value.length)return;const a=new Set(k.value);S("update:detailTables",o.detailTables.filter(e=>!a.has(e.tableKey))),k.value=[],U.value=[]}function O(){L.value=1,F.value=[{tableKey:"",label:""}]}function be(){O(),E.value=!0}function fe(){F.value.push({tableKey:"",label:""})}function ye(a){F.value.length<=1||F.value.splice(a,1)}function ve(){const a=Math.max(1,Math.min(200,Math.floor(Number(L.value)||1))),e=ae();let t=Math.max(1,te(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}z.success(`已新增 ${a} 行到下方列表,可修改后点「确定添加」。`)}function ke(){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,O()}function q(){$.value=void 0,N.value=1,h.value=[{parentKey:"",fieldKey:"",label:""}]}function Ke(){q(),o.detailTables.length&&($.value=o.detailTables[0].tableKey),_.value=!0}function we(){h.value.push({parentKey:"",fieldKey:"",label:""})}function ge(a){h.value.length<=1||h.value.splice(a,1)}function he(){const a=String($.value||"").trim();if(!a){z.warning("请先选择父级明细数据源");return}if(!o.detailTables.some(i=>i.tableKey===a)){z.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,ne(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}z.success(`已新增 ${e} 行到下方列表,可修改后点「确定添加」。`)}function xe(){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(K=>K.tableKey===l))continue;const i=String(t.label||"").trim(),s=a.get(l)||[];s.some(K=>K.key===n)||(s.push({key:n,label:i||void 0}),a.set(l,s))}if(!a.size){_.value=!1,q();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),_.value=!1,q()}return(a,e)=>{const t=qe("a-button"),l=$e,n=De,i=Oe,s=Ie,K=Ge,b=ze,M=_e;return w(),I("div",He,[m("div",Pe,[u(t,{type:"primary",size:"small",onClick:be},{default:p(()=>[...e[6]||(e[6]=[g("批量新增明细表",-1)])]),_:1}),u(t,{type:"primary",size:"small",disabled:!v.detailTables.length,onClick:Ke},{default:p(()=>[...e[7]||(e[7]=[g("批量新增字段",-1)])]),_:1},8,["disabled"]),u(t,{size:"small",danger:k.value.length>0,disabled:!k.value.length,onClick:me},{default:p(()=>[...e[8]||(e[8]=[g(" 批量删除 ",-1)])]),_:1},8,["danger","disabled"])]),u(n,{expandedRowKeys:U.value,"onUpdate:expandedRowKeys":e[0]||(e[0]=d=>U.value=d),size:"small",columns:Z,"data-source":v.detailTables,"row-key":d=>d.tableKey,pagination:!1,scroll:{y:W.value},"row-selection":{selectedRowKeys:k.value,onChange:le}},{bodyCell:p(({column:d,record:c,index:r})=>{var B;return[d.dataIndex==="tableKey"?(w(),R(l,{key:0,value:c.tableKey,size:"small",placeholder:"数据源键 List1","onUpdate:value":f=>se(c,String(f!=null?f:""),r)},null,8,["value","onUpdate:value"])):d.dataIndex==="label"?(w(),R(l,{key:1,value:(B=c.label)!=null?B:"",size:"small",placeholder:"显示名可选","onUpdate:value":f=>oe(c.tableKey,String(f!=null?f:""))},null,8,["value","onUpdate:value"])):d.dataIndex==="fieldCount"?(w(),I("span",Ve,A((c.fields||[]).length)+" ",1)):Y("",!0)]}),expandedRowRender:p(({record:d})=>[m("div",Ae,[m("div",Ye,[m("span",null,"字段列表"+A(d.tableKey)+"",1),u(t,{type:"link",size:"small",onClick:c=>re(d.tableKey)},{default:p(()=>[...e[9]||(e[9]=[g("添加字段",-1)])]),_:1},8,["onClick"])]),u(n,{size:"small",columns:ee,"data-source":d.fields||[],"row-key":c=>`${d.tableKey}__${c.key}`,pagination:!1,"show-header":!0,scroll:{y:J.value}},{bodyCell:p(({column:c,record:r})=>{var B;return[c.dataIndex==="key"?(w(),R(l,{key:0,value:r.key,size:"small",placeholder:"字段键 Field1","onUpdate:value":f=>de(d.tableKey,r.key,String(f!=null?f:""))},null,8,["value","onUpdate:value"])):c.dataIndex==="label"?(w(),R(l,{key:1,value:(B=r.label)!=null?B:"",size:"small",placeholder:"显示名","onUpdate:value":f=>ue(d.tableKey,r.key,String(f!=null?f:""))},null,8,["value","onUpdate:value"])):c.dataIndex==="actions"?(w(),R(t,{key:2,type:"link",danger:"",size:"small",onClick:f=>ce(d.tableKey,r.key)},{default:p(()=>[...e[10]||(e[10]=[g("删除",-1)])]),_:1},8,["onClick"])):Y("",!0)]}),_:2},1032,["data-source","row-key","scroll"])])]),_:1},8,["expandedRowKeys","data-source","row-key","scroll","row-selection"]),u(b,{open:E.value,"onUpdate:open":e[2]||(e[2]=d=>E.value=d),title:"批量新增明细表","ok-text":"确定添加","cancel-text":"取消",width:"560px",onOk:ke,onCancel:O},{default:p(()=>[m("div",je,[e[13]||(e[13]=m("div",{class:"section-title"},"快速生成",-1)),e[14]||(e[14]=m("div",{class:"section-desc"},"按数量自动生成数据源键为 List + 数字显示名为 列表 + 数字与参数侧Parameter + 数字 / 参数 + 数字对应生成结果在下方列表中可再修改",-1)),u(s,{align:"center",wrap:"",class:"quick-row"},{default:p(()=>[e[12]||(e[12]=m("span",{class:"quick-label"},"数量",-1)),u(i,{value:L.value,"onUpdate:value":e[1]||(e[1]=d=>L.value=d),min:1,max:200,precision:0,style:{width:"120px"}},null,8,["value"]),u(t,{type:"primary",onClick:ve},{default:p(()=>[...e[11]||(e[11]=[g("一键新增",-1)])]),_:1})]),_:1})]),u(K,{style:{margin:"14px 0"}}),m("div",Qe,[e[17]||(e[17]=m("div",{class:"section-title"},"手动添加",-1)),e[18]||(e[18]=m("div",{class:"section-desc"},"每行两个输入框左侧数据源键右侧显示名可点添加一行增加空行",-1)),(w(!0),I(j,null,Q(F.value,(d,c)=>(w(),I("div",{key:c,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=>ye(c)},{default:p(()=>[...e[15]||(e[15]=[g("删除",-1)])]),_:1},8,["disabled","onClick"])]))),128)),u(t,{type:"dashed",block:"",size:"small",class:"add-row-btn",onClick:fe},{default:p(()=>[...e[16]||(e[16]=[g("添加一行",-1)])]),_:1})])]),_:1},8,["open"]),u(b,{open:_.value,"onUpdate:open":e[5]||(e[5]=d=>_.value=d),title:"批量新增字段","ok-text":"确定添加","cancel-text":"取消",width:"560px",onOk:xe,onCancel:q},{default:p(()=>[m("div",We,[e[21]||(e[21]=m("div",{class:"section-title"},"快速生成",-1)),e[22]||(e[22]=m("div",{class:"section-desc"}," 先选择父级明细表再填数量字段键为 Field + 数字显示名为 字段 + 数字生成结果追加到下方手动添加列表可再修改后点确定添加 ",-1)),u(s,{direction:"vertical",style:{width:"100%"},size:"small"},{default:p(()=>[u(M,{value:$.value,"onUpdate:value":e[3]||(e[3]=d=>$.value=d),options:X.value,"show-search":"","option-filter-prop":"label",placeholder:"选择父级明细数据源",style:{width:"100%"}},null,8,["value","options"]),u(s,{align:"center",wrap:"",class:"quick-row"},{default:p(()=>[e[20]||(e[20]=m("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:!$.value,onClick:he},{default:p(()=>[...e[19]||(e[19]=[g("一键新增",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})]),u(K,{style:{margin:"14px 0"}}),m("div",Je,[e[25]||(e[25]=m("div",{class:"section-title"},"手动添加",-1)),e[26]||(e[26]=m("div",{class:"section-desc"},"每行父级数据源键字段键显示名可选父级须为已登记的明细表",-1)),(w(!0),I(j,null,Q(h.value,(d,c)=>(w(),I("div",{key:c,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=>ge(c)},{default:p(()=>[...e[23]||(e[23]=[g("删除",-1)])]),_:1},8,["disabled","onClick"])]))),128)),u(t,{type:"dashed",block:"",size:"small",class:"add-row-btn",onClick:we},{default:p(()=>[...e[24]||(e[24]=[g("添加一行",-1)])]),_:1})])]),_:1},8,["open"])])}}}),Cl=Be(Xe,[["__scopeId","data-v-a173577e"]]);export{Cl as default};