calculator2026/33/static/js/zxFw-DbWORAVD.js
2026-06-25 09:43:48 +08:00

1 line
25 KiB
JavaScript
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.

import{$ as e,At as t,Bt as n,Cr as r,Dt as i,Er as a,G as o,H as s,K as c,Kt as l,M as u,Mt as d,Ot as ee,Pt as f,Q as p,U as m,W as te,Wn as h,Yn as ne,er as g,ft as _,mn as v,qn as re,tt as y,xr as ie,yn as b}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as ae}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as oe}from"./workspace-DxKKyh8w.js";import{a as x,d as se,i as S,o as C}from"./decimal-D3bp1pbs.js";import{T as ce,a as le,d as ue,dt as de,ft as fe,gt as pe,ht as me,lt as he,mt as ge,n as _e,pt as ve,ut as ye}from"./vendor-ui-B4V4Cf1T.js";import{r as be,t as xe}from"./numberFormat-jhZZmX17.js";import{g as Se,h as Ce,m as we,o as Te,v as Ee,w as De}from"./sql-C69Jo4HU.js";import{t as Oe}from"./_plugin-vue_export-helper-DUFB50Ey.js";import{A as ke,C as Ae,k as w,n as T}from"./index-CAPJG_im.js";import{t as je}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{a as Me,i as Ne,o as Pe,r as Fe,t as Ie}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";import"./pricingScaleDetail-CuzzWQVd.js";import{n as Le,t as Re}from"./pricingMethodTotals-DHJf6v89.js";import{t as ze}from"./pricingPersistControl-DVG_7RF1.js";var E={class:`rounded-lg border bg-card p-2.5 shadow-sm hide`},D={class:`mb-1 flex items-center justify-between gap-2`},Be={class:`block text-[11px] font-medium text-foreground leading-none`},O={class:`rounded-md border p-1.5`},k={class:`flex flex-wrap items-start gap-1`},A=[`checked`,`onChange`],j={class:`text-muted-foreground shrink-0`},M={class:`text-foreground break-words`},N={key:0,class:`px-2 py-4 text-center text-xs text-muted-foreground`},Ve=y({__name:`ServiceCheckboxSelector`,props:{services:{},modelValue:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let r=e,i=t,{t:d}=oe(),ee=s(()=>new Set(r.modelValue)),f=new Set([`F3-6`,`F3-6-1`,`F3-6-2`]),p=(e,t)=>{let n=new Set(r.modelValue);f.has(e.code)?r.services.forEach(e=>{f.has(e.code)&&(t?n.add(e.id):n.delete(e.id))}):t?n.add(e.id):n.delete(e.id),i(`update:modelValue`,r.services.filter(e=>n.has(e.id)).map(e=>e.id))},te=()=>{i(`update:modelValue`,[])};return(e,t)=>(n(),c(`div`,E,[m(`div`,D,[m(`label`,Be,a(g(d)(`serviceSelector.title`)),1),m(`button`,{type:`button`,class:`cursor-pointer h-6 rounded-md border px-2 text-[13px] text-muted-foreground transition hover:bg-accent`,onClick:te},a(g(d)(`serviceSelector.clear`)),1)]),m(`div`,O,[m(`div`,k,[(n(!0),c(u,null,l(r.services,e=>(n(),c(`label`,{key:e.id,class:`inline-flex w-fit max-w-full cursor-pointer items-start gap-1.5 rounded-md border px-2 py-1 text-[11px] leading-4 hover:bg-muted/60`},[m(`input`,{type:`checkbox`,class:`mt-0.5`,checked:ee.value.has(e.id),onChange:t=>p(e,t.target.checked)},null,40,A),m(`span`,j,a(e.code),1),m(`span`,M,a(e.name),1)]))),128))]),r.services.length===0?(n(),c(`div`,N,a(g(d)(`serviceSelector.empty`)),1)):o(``,!0)])]))}}),He={class:`h-full min-h-0 flex flex-col gap-2`},Ue={class:`rounded-lg border bg-card xmMx flex min-h-0 flex-1 flex-col overflow-hidden`},We={class:`flex items-start justify-between gap-3 border-b px-3 py-2`},Ge={class:`min-w-0 space-y-1`},Ke={class:`text-xs font-semibold text-foreground leading-none`},qe={class:`text-[11px] leading-none leading-4 !text-[brown]`},Je={class:`mt-4 flex items-center justify-end gap-2`},Ye={class:`mt-4 flex items-center justify-end gap-2`},Xe=`pricing-clear-skip:`,Ze=`pricing-force-default:`,Qe=5e3,P=Oe(y({__name:`zxFw`,props:{contractId:{},contractName:{},projectInfoKey:{}},setup(o){let c=o,l=ke(),u=Ae(),Oe=se(),{t:E,locale:D}=oe(),Be=s(()=>c.projectInfoKey||`xm-base-info-v1`),O={excludeInvestmentCostAndAreaRows:!0},k=h(``),A=e=>typeof e==`boolean`?e:null,j=(e,t=!0)=>typeof e==`boolean`?e:t,M={scale:!0,onlyCostScale:!1,amount:!0,workDay:!0},N=s(()=>{let e=k.value;return e?we().map(({id:e,item:t})=>({id:e,item:t})).filter(({item:t})=>!!((t?.code||t?.ref)&&t?.name)&&t.defCoe!==null&&Ee(t,Te(e))).map(({id:e,item:t})=>({id:e,code:t.code||t.ref||``,name:t.name,type:{scale:A(t.scale),onlyCostScale:A(t.onlyCostScale),amount:A(t.amount),workDay:A(t.workDay)},process:t.process})):[]}),P=s(()=>new Map(N.value.map(e=>[e.id,e])));s(()=>new Map(N.value.map(e=>[e.code,e.id])));let $e=s(()=>N.value.map(e=>e.id).join(`|`)),F={id:`fixed-budget-c`,code:``,name:E(`htZxFw.subtotal`)},I=e=>e?.id===F.id,et=e=>({id:String(e.id||``),code:e.code||``,name:e.name||``,process:String(e.id||``)===F.id?null:Number(e.process)===1?1:0,investScale:typeof e.investScale==`number`?e.investScale:null,landScale:typeof e.landScale==`number`?e.landScale:null,serviceFee:typeof e.serviceFee==`number`?e.serviceFee:null,hourly:typeof e.hourly==`number`?e.hourly:null,subtotal:typeof e.subtotal==`number`?e.subtotal:null,finalFee:typeof e.finalFee==`number`?e.finalFee:null,remark:String(e.remark||``),actions:e.actions}),L=h([]),R=s(()=>u.contracts[c.contractId]?.selectedIds||[]),z=s(()=>L.value),B=()=>{let e=u.getContractState(c.contractId);return e?{selectedIds:Array.isArray(e.selectedIds)?[...e.selectedIds]:[],selectedCodes:Array.isArray(e.selectedCodes)?[...e.selectedCodes]:[],detailRows:(e.detailRows||[]).map(e=>et(e))}:{selectedIds:[],detailRows:[]}},V=async e=>{await u.setContractState(c.contractId,e)},H=re(null),tt=e=>{H.value=e.api,rt()},U=null,W=e=>!!(e&&!e.isDestroyed?.()),nt=async()=>{await i();let e=H.value;W(e)&&e.onRowHeightChanged()},rt=()=>{U&&clearTimeout(U),U=setTimeout(()=>{U=null,W(H.value)&&nt()},0)},it=e=>{rt()},G=h(!1),K=h(null),q=h(!1),J=h(null),at=s(()=>{if(!K.value)return``;let e=z.value.find(e=>e.id===K.value);if(e)return`${e.code}${e.name}`;let t=P.value.get(K.value);return t?`${t.code}${t.name}`:K.value}),ot=s(()=>{if(!J.value)return``;let e=z.value.find(e=>e.id===J.value);if(e)return`${e.code}${e.name}`;let t=P.value.get(J.value);return t?`${t.code}${t.name}`:J.value}),st=e=>{G.value=e},ct=e=>{q.value=e},lt=e=>{I(e)||(K.value=e.id,G.value=!0)},ut=async()=>{let e=K.value;if(!e)return;let t=z.value.find(t=>t.id===e);if(!t||I(t)){G.value=!1,K.value=null;return}await vt(t),G.value=!1,K.value=null},dt=e=>{I(e)||(J.value=e.id,q.value=!0)},ft=async()=>{let e=J.value;if(!e)return;let t=e.split(`-`)[4];await jt(R.value.filter(e=>e!==t)),q.value=!1,J.value=null},Y=(e,t,n=3)=>e==null&&t==null?!0:e==null||t==null?!1:S(e,n)===S(t,n),pt=e=>{let t=P.value.get(e)?.type;return{scale:j(t?.scale,M.scale),onlyCostScale:j(t?.onlyCostScale,M.onlyCostScale),amount:j(t?.amount,M.amount),workDay:j(t?.workDay,M.workDay)}},mt=(e,t)=>{let n=pt(e),r=n.scale,i=r&&!n.onlyCostScale;return{investScale:r?t.investScale:null,landScale:i?t.landScale:null,workload:n.amount?t.workload:null,hourly:n.workDay?t.hourly:null}},ht=(e,t)=>{let n=mt(e,t);return{investScale:n.investScale,landScale:n.landScale,workload:n.workload,hourly:n.hourly}},X=(e,t)=>C(e.filter(e=>!I(e)).map(e=>e[t])),Z=(e,t,n)=>({headerName:e,field:t,minWidth:n,flex:1.5,editable:!1,cellClassRules:{"zxfw-number-cell":()=>!0,"ag-right-aligned-cell":()=>!0},valueGetter:e=>e.data?e.data[t]:null,valueFormatter:e=>{if(e.value==null)return``;let t=be(e.value);return t==null?``:t.toLocaleString(`zh-CN`,{minimumFractionDigits:2,maximumFractionDigits:2})}}),gt=e=>u.getServicePricingStorageKeys(c.contractId,e),_t=async e=>{let t=gt(e),n=Date.now(),r=n+Qe,i=`${n}:${r}`;for(let e of t)sessionStorage.setItem(ze(Xe,e),i),sessionStorage.setItem(ze(Ze,e),String(r));u.removeAllServicePricingMethodStates(c.contractId,e),await Promise.all(t.map(e=>Oe.removeItem(e)))},vt=async e=>{if(I(e))return;l.removeTab(`zxfw-edit-${c.contractId}-${e.id}`),await i(),await _t(e.id);let t=L.value.find(t=>t.id===e.id);t&&(t.process=null,t.remark=``,t.finalFee=t.subtotal==null?null:S(t.subtotal,2),L.value=[...L.value],await $())},yt=e=>{let t=P.value.get(e.id)?.type;l.openTab({id:`zxfw-edit-${c.contractId}-${e.id}`,title:E(`htZxFw.editTabTitle`,{name:`${e.code}${e.name}`}),componentName:`ZxFwView`,props:{contractId:c.contractId,contractName:c.contractName||``,serviceId:e.id,fwName:e.code+e.name,type:t?{...t}:void 0,projectInfoKey:c.projectInfoKey}})};y({name:`ActionCellRenderer`,props:{params:{type:Object,required:!0}},setup(e){return()=>e.params.node?.rowPinned===`bottom`||I(e.params.data)?null:_(`div`,{class:`zxfw-action-wrap`},[_(`div`,{class:`zxfw-action-group`},[_(`button`,{class:`zxfw-action-btn`,"data-action":`edit`,type:`button`},[_(le,{size:13,"aria-hidden":`true`}),_(`span`,E(`htZxFw.edit`))]),_(`button`,{class:`zxfw-action-btn`,"data-action":`clear`,type:`button`},[_(ue,{size:13,"aria-hidden":`true`}),_(`span`,E(`htZxFw.resetDefault`))]),_(`button`,{class:`zxfw-action-btn zxfw-action-btn--danger`,"data-action":`delete`,type:`button`},[_(_e,{size:13,"aria-hidden":`true`}),_(`span`,E(`htZxFw.delete`))])])])}});let bt={"F1*":`none`,"F2-1*":`none`,"F2-2*":`none`,"F2-3":`none`,"F2-4":`none`,"F3-1-1":`radio`,"F3-1-2":`radio`,"F3-2-1":`radio`,"F3-2-2":`radio`,"F3-2-3":`none`,"F3-3-1":`none`,"F3-3-2":`radio`,"F3-3-3":`radio`,"F3-3-4":`radio`,"F3-3-5":`radio`,"F3-3-6":`radio`,"F3-3-7":`radio`,"F3-3-9":`radio`,"F3-3-10":`radio`,"F3-3-11":`none`,"F3-3-12":`none`,"F3-4-1":`radio`,"F3-4-2":`radio`,"F3-4-3":`radio`,"F3-4-4":`radio`,"F3-4-5":`none`,"F3-5":`none`,"F3-6":`none`,"F3-6-1":`none`,"F3-6-2":`none`,"F3-7-1":`none`,"F3-7-2":`none`,"F3-7-3":`none`,其他服务:`none`};y({name:`ProcessCellRenderer`,props:{params:{type:Object,required:!0}},setup(e){return()=>{let t=e.params.data;if(!t||I(t))return null;let n=bt[t.code]||`radio`,r=t.process===1?1:null,i=D.value.startsWith(`en`);if(n===`none`)return _(`div`,{class:`zxfw-process-cell`},[_(`span`,{class:`text-gray-400 text-sm`},`无选项,不可编辑`)]);if(n===`review_only`)return _(`div`,{class:`zxfw-process-cell`},[_(`span`,{class:`text-gray-400 text-sm`},`默认为审查,不可编辑`)]);let a=(n,r)=>{n.stopPropagation(),e.params.context?.onSetProcess(t.id,r)},o=`process-${t.id}`;return _(`div`,{class:[`zxfw-process-cell`,i?`zxfw-process-cell--en`:``]},[_(`label`,{class:[`zxfw-process-option`,i?`zxfw-process-option--en`:``]},[_(`input`,{type:`radio`,name:o,checked:r===0,class:`cursor-pointer h-4 w-4`,onClick:e=>e.stopPropagation(),onChange:e=>a(e,0)}),_(`span`,`编制`)]),_(`label`,{class:[`zxfw-process-option`,i?`zxfw-process-option--en`:``]},[_(`input`,{type:`radio`,name:o,checked:r===1,class:`cursor-pointer h-4 w-4`,onClick:e=>e.stopPropagation(),onChange:e=>a(e,1)}),_(`span`,`审查`)])])}}});let xt=y({name:`NameCellRenderer`,props:{params:{type:Object,required:!0}},setup(e){return()=>{let t=e.params.data;return!t||I(t)?``:_(`div`,{class:`zxfw-name-wrap`},String(e.params.value||t.name||``))}}}),St=[{headerName:E(`htZxFw.columns.code`),field:`code`,minWidth:50,maxWidth:100,valueGetter:e=>e.data?I(e.data)?E(`htZxFw.subtotal`):e.data.code:``,colSpan:e=>e.node?.rowPinned===`bottom`?3:1},{headerName:E(`htZxFw.columns.name`),field:`name`,minWidth:150,flex:3,cellClass:`zxfw-name-cell`,wrapText:!0,autoHeight:!0,cellStyle:{"line-height":1.6},cellRenderer:xt,valueGetter:e=>!e.data||I(e.data)?``:e.data.name},{headerName:E(`htZxFw.columns.process`),field:`process`,headerClass:`ag-center-header zxfw-process-header`,minWidth:D.value.startsWith(`en`)?118:150,maxWidth:D.value.startsWith(`en`)?136:200,flex:1,editable:!1,sortable:!1,filter:!1,cellClass:`zxfw-process-cell-container`,cellStyle:{display:`flex`,alignItems:`center`,justifyContent:`center`},valueFormatter:e=>e.value==0?E(`htZxFw.processReview`):e.value==1?E(`htZxFw.processDraft`):E(`htZxFw.none`)},Z(E(`htZxFw.columns.investScale`),`investScale`,100),Z(E(`htZxFw.columns.landScale`),`landScale`,100),Z(E(`htZxFw.columns.workload`),`serviceFee`,90),Z(E(`htZxFw.columns.hourly`),`hourly`,90),{headerName:E(`htZxFw.columns.subtotal`),field:`subtotal`,flex:2,minWidth:100,editable:!1,cellClassRules:{"zxfw-number-cell":()=>!0,"ag-right-aligned-cell":()=>!0},valueGetter:e=>e.data?e.data.subtotal:null,valueFormatter:e=>e.value==null?``:xe(e.value,2)},{headerName:E(`htZxFw.columns.finalFee`),field:`finalFee`,headerTooltip:E(`htZxFw.columns.finalFeeTooltip`),flex:2,minWidth:110,editable:e=>!I(e.data),cellClassRules:{"zxfw-number-cell":()=>!0,"ag-right-aligned-cell":()=>!0},valueGetter:e=>e.data?e.data.finalFee:null,valueParser:e=>{let t=be(e.newValue,{precision:2});return t==null?null:S(t,2)},valueFormatter:e=>e.value==null?``:xe(e.value,2)},{headerName:E(`htZxFw.columns.remark`),field:`remark`,minWidth:160,flex:1.8,editable:e=>!I(e.data),cellEditor:`agLargeTextCellEditor`,cellEditorPopup:!0,cellEditorParams:{maxLength:500,rows:8,cols:48},wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueGetter:e=>!e.data||I(e.data)?``:String(e.data.remark||``),valueFormatter:e=>e.value==null?``:String(e.value),cellClass:e=>I(e.data)?``:`remark-wrap-cell`,cellClassRules:{"editable-cell-empty":e=>!I(e.data)&&(e.value==null||String(e.value).trim()===``)}}],Ct=s(()=>Ie(St)),wt={...Me,treeData:!1,getDataPath:void 0,context:{onSetProcess:async(e,t)=>{console.log(`修改 process`,e,t);let n=L.value.find(t=>t.id===e);!n||I(n)||(n.process=t,L.value=[...L.value],await $())}},onCellClicked:async e=>{if(e.colDef.field!==`actions`||!e.data||I(e.data))return;let t=((e.event?.target)?.closest(`button[data-action]`))?.dataset.action;if(t===`clear`){lt(e.data);return}if(t===`edit`){yt(e.data);return}t===`delete`&&dt(e.data)}},Q=e=>{let t=X(e,`investScale`),n=X(e,`landScale`),r=X(e,`workload`),i=X(e,`hourly`),a=C(e.filter(e=>!I(e)).map(e=>e.finalFee));return e.map(e=>I(e)?{...e,investScale:t,landScale:n,workload:r,hourly:i,subtotal:C([t,n,r,i]),finalFee:a==null?null:S(a,2)}:e)},Tt=()=>z.value.filter(e=>!I(e)).map(e=>String(e.id)),Et=async()=>{let e=Tt();e.length!==0&&await Re({contractId:c.contractId,serviceIds:e,options:O})},Dt=async e=>{let t=B(),n=Array.from(new Set(e.filter(e=>t.detailRows.some(t=>!I(t)&&String(t.id)===String(e)))));if(n.length===0){await V({...t,detailRows:Q(t.detailRows)});return}await Re({contractId:c.contractId,serviceIds:n,options:O});let r=await Le({contractId:c.contractId,serviceIds:n,options:O}),i=new Set(n.map(e=>String(e))),a=t.detailRows.map(e=>{if(I(e)||!i.has(String(e.id)))return e;let t=r.get(String(e.id)),n=t?mt(String(e.id),t):null;if(!n)return e;console.log(`回填计价结果:`,e.id,n);let a=C([n.investScale,n.landScale,n.workload,n.hourly]),o=!(Y(e.investScale,n.investScale)&&Y(e.landScale,n.landScale)&&Y(e.workload,n.workload)&&Y(e.hourly,n.hourly));return{...e,investScale:n.investScale,landScale:n.landScale,workload:n.workload,hourly:n.hourly,finalFee:o?a==null?null:S(a,2):e.finalFee}});await V({...t,detailRows:Q(a)})},Ot=async e=>{let t=B(),n=new Set(t.selectedIds||[]),r=Array.from(new Set(e)).filter(e=>P.value.has(e)&&e!==F.id),i=new Map(t.detailRows.map(e=>[e.id,e])),a=r.map(e=>{let t=P.value.get(e);if(!t)return null;let n=i.get(e),r=ht(e,{investScale:n?.investScale??null,landScale:n?.landScale??null,workload:n?.workload??null,hourly:n?.hourly??null});return{id:n?.id||e,code:t.code,name:t.name,process:null,investScale:r.investScale,landScale:r.landScale,workload:r.workload,hourly:r.hourly,subtotal:typeof n?.subtotal==`number`?n.subtotal:null,finalFee:typeof n?.finalFee==`number`?n.finalFee:null,remark:String(n?.remark||``)}}).filter(e=>e!==null),o=new Map(N.value.map((e,t)=>[e.id,t]));a.sort((e,t)=>(o.get(e.id)||0)-(o.get(t.id)||0));let s=i.get(F.id),u={id:s?.id||F.id,code:F.code,name:F.name,process:null,investScale:typeof s?.investScale==`number`?s.investScale:null,landScale:typeof s?.landScale==`number`?s.landScale:null,hourly:typeof s?.hourly==`number`?s.hourly:null,subtotal:typeof s?.subtotal==`number`?s.subtotal:null,finalFee:typeof s?.finalFee==`number`?s.finalFee:null,serviceFee:typeof s?.serviceFee==`number`?s.serviceFee:null,remark:``,actions:null},d=Array.from(n).filter(e=>!r.includes(e));for(let e of d)l.removeTab(`zxfw-edit-${c.contractId}-${e}`);await V({...t,selectedIds:r,detailRows:Q([...a,u])})},kt=e=>{let t=c.contractId;return e.map(e=>{let n=P.value.get(e);return{id:`${t}-zx-${e}`,code:n?.code||``,name:n?.name||``,process:n?.process,investScale:null,landScale:null,serviceFee:null,hourly:null,subtotal:0,finalFee:0,remark:``,actions:null,typel:n?.type}})},At=async()=>{try{let e=u.getContractState(c.contractId)?.selectedIds||[];if(!e.length){L.value=[];return}let t=await T().query([{field:`type`,value:`${c.contractId}-zxFw`,operator:`eq`}]),n=await T().query([{field:`type`,value:`${c.contractId}-investment`,operator:`eq`}]),r=await T().query([{field:`type`,value:`${c.contractId}-Quantityofwork`,operator:`eq`}]),i=await T().query([{field:`type`,value:`${c.contractId}-hourly`,operator:`eq`}]),a=await T().query([{field:`type`,value:`${c.contractId}-task`,operator:`eq`}]),o;o=kt(e);for(let e of o){if(e.code==`F3-6`){let r=ne(e);console.log(`✅ 正确subtotal`,r.subtotal);let a=t.find(e=>e.code===`F3-6`),o=n.find(e=>e.groupCode===`F3-6-1`),s=n.find(e=>e.groupCode===`F3-6-2`),c=i.find(e=>e.expertCode===`F3-6-1`),l=i.find(e=>e.expertCode===`F3-6-2`);e.investScale=0,e.landScale=0,e.hourly=0,e.serviceFee=0,e.investScale=(o?.serviceFee||0)+(s?.serviceFee||0),e.hourly=(c?.feeSubtotal6||0)+(l?.feeSubtotal6||0),e.subtotal===e.investScale+e.hourly||(e.subtotal=e.investScale+e.hourly,e.finalFee=e.subtotal),a!=null&&(e.process=a.process,e.finalFee=a.finalFee,e.remark=a.remark);continue}let o=e.code,s=n.find(e=>e.groupCode===o),c=r.find(e=>e.majorCode===o),l=i.find(e=>e.expertCode===o),u=a.find(e=>e.taskCode===o),d=t.find(e=>e.code===o);e.investScale=0,e.landScale=0,e.finalFee=0,e.hourly=0,e.serviceFee=0,s!=null&&(e.investScale=s.serviceFee),d!=null&&(e.process=d.process,e.finalFee=d.finalFee,e.remark=d.remark),l!=null&&(e.hourly=l.feeSubtotal6),c!=null&&(e.landScale=c.serviceFee),u!=null&&(e.serviceFee=u.serviceFee),e.subtotal===e.investScale+e.landScale+e.serviceFee+e.hourly||(e.subtotal=e.investScale+e.landScale+e.serviceFee+e.hourly,e.finalFee=e.subtotal)}L.value=o;let s=await T().query([{field:`type`,value:`${c.contractId}-otherservice`,operator:`eq`}]);s?.length&&s.forEach(e=>{L.value.push({id:e.id,code:`其他服务`,name:e.feeItem,process:null,investScale:0,landScale:0,serviceFee:0,hourly:0,subtotal:e.serviceFee,finalFee:e.serviceFee,remark:e.remark,isOtherService:!0})}),console.log(`✅ 列表已更新,显示`,L.value.length,`条数据`)}catch(e){console.error(`updateFilteredRows failed:`,e),L.value=[]}},jt=async e=>{let t=[...R.value];await Ot(e);let n=B().selectedIds||[],r=new Set(n),i=n.filter(e=>!t.includes(e)&&r.has(e));await Lt(i),await Dt(i),await Et(),await At()};h([]),h([]),h([]);let Mt=async()=>{try{await At()}catch(e){console.error(`initializeContractState failed:`,e),L.value=[]}};v(()=>T().items,async e=>{Object.keys(e).length>0&&Mt()},{immediate:!0,deep:!0});let $=async()=>{try{let e=L.value.filter(e=>!e.isOtherService).map(e=>({...e,type:`${c.contractId}-zxFw`}));await T().upsertBatch(e),T().query([{field:`type`,operator:`eq`,value:`${c.contractId}-zxFw`}])}catch(e){console.error(`❌ saveToIndexedDB 失败:`,e)}},Nt=async()=>{try{let e=await Oe.getItem(Be.value);k.value=typeof e?.projectIndustry==`string`?e.projectIndustry.trim():``}catch(e){console.error(`loadProjectIndustry failed:`,e),k.value=``}},Pt=()=>{let e=String(k.value||``).trim();if(!e)return null;if(e.toUpperCase()===`E2`)return 0;if(e.toUpperCase()===`E3`)return 1;if(e.toUpperCase()===`E4`)return 2;let t=Number(e);return Number.isFinite(t)?t:null},Ft=e=>{let t=Number(e);if(!Number.isFinite(t))return[];let n=Se(D.value),r=Pt(),i=De.find(e=>Number(e.fid)===t&&Number(e.industry)===r),a=i?(()=>{let e=Array.isArray(i.sid)?i.sid.map(e=>Number(e)).filter(Number.isFinite):[],t=new Set(e);return n.filter(e=>t.has(Number(e.serviceid))).sort((t,n)=>{let r=e.indexOf(Number(t.serviceid)),i=e.indexOf(Number(n.serviceid));return r===i?t.order-n.order:r-i})})():n.filter(e=>Number(e.serviceid)===t).sort((e,t)=>e.order-t.order),o=e=>E(e===1?`workContent.type.optional`:e===2?`workContent.type.daily`:e===3?`workContent.type.special`:e===4?`workContent.type.additional`:`workContent.type.basic`);return a.map(e=>{let t=String(e.text||``).trim();if(!t)return null;let n=Ce(e.serviceid),r=n?`${String(n.code||``).trim()} ${String(n.name||``).trim()}`.trim():``;return{id:`dict-${e.serviceid}-${e.order}`,content:t,type:o(e.type),dictOrder:e.order,serviceGroup:r,serviceid:Number.isFinite(Number(e.serviceid))?Number(e.serviceid):null,remark:``,checked:!0,custom:!1,path:r?[r,t]:[o(e.type),t]}}).filter(e=>!!e)},It=async e=>{let t=`work-content-${c.contractId}-${e}`,n=await u.loadKeyState(t);if(Array.isArray(n?.detailRows)&&n.detailRows.length>0)return;let r=Ft(e);r.length!==0&&u.setKeyState(t,{detailRows:r})},Lt=async e=>{let t=Array.from(new Set(e.map(e=>String(e||``).trim()).filter(Boolean)));t.length!==0&&await Promise.all(t.map(e=>It(e)))};v($e,()=>{let e=new Set(N.value.map(e=>e.id)),t=R.value.filter(t=>e.has(t));t.length!==R.value.length&&Ot(t)});let Rt=async()=>{let e=B();if(!Array.isArray(e.detailRows)||e.detailRows.length===0)return;let t=!1,n=e.detailRows.map(e=>{if(I(e)){let n=E(`htZxFw.subtotal`);return e.name===n?e:(t=!0,{...e,name:n})}let n=P.value.get(String(e.id));if(!n)return e;let r=String(n.code||``),i=String(n.name||``);return e.code===r&&e.name===i?e:(t=!0,{...e,code:r,name:i})});t&&await V({...e,detailRows:Q(n)})};v(()=>D.value,()=>{Rt()}),v(()=>z.value.map(e=>`${e.id}:${e.name}`).join(`|`),()=>{rt()}),t(()=>{U&&=(clearTimeout(U),null),W(H.value)&&H.value.stopEditing(),H.value=null});let zt=!1,Bt=async()=>{let e=B(),t=Q(e.detailRows);await V({...e,detailRows:t});let n=H.value;if(W(n)){let e=t.find(e=>I(e)),r=n.getRowNode(F.id);r&&e&&r.setData(e)}},Vt=async e=>{if(zt)return;let t=e.data;if(!t||I(t))return;let n=String(e.colDef?.field||``);if(n!==`finalFee`&&n!==`remark`)return;n==`subtotal`&&console.log(e);let r=L.value.find(e=>e.code===t.code);r&&(n===`remark`?r.remark=String(e.newValue||``):n===`finalFee`&&(r.finalFee=e.newValue==null?null:S(Number(e.newValue),2)),L.value=[...L.value]),await $(),console.log(`✅ 单元格更新:`,n,`->`,e.newValue,`Row ID:`,t.id)},Ht=s(()=>[{id:`pinned-total-row`,code:E(`htZxFw.columns.subtotal`),process:null,investScale:x(L.value,e=>e.investScale),landScale:x(L.value,e=>e.landScale),hourly:x(L.value,e=>e.hourly),serviceFee:x(L.value,e=>e.serviceFee),finalFee:x(L.value,e=>e.finalFee),subtotal:x(L.value,e=>e.subtotal),expertName:``,path:[`TOTAL`]}]);E(`pricingScale.columns.number`);let Ut=()=>{zt=!0},Wt=()=>{zt=!1,Bt()};return f(async()=>{await Nt(),await Mt()}),ee(async()=>{await Nt(),await Mt()}),d(()=>{$()}),(t,i)=>(n(),te(g(ce),null,{default:b(()=>[m(`div`,He,[e(Ve,{services:N.value,"model-value":R.value,"onUpdate:modelValue":jt},null,8,[`services`,`model-value`]),m(`div`,Ue,[m(`div`,We,[m(`div`,Ge,[m(`h3`,Ke,a(g(E)(`htZxFw.title`)),1)]),m(`p`,qe,a(g(E)(`htZxFw.warning`)),1)]),m(`div`,{class:ie(g(Ne))},[e(g(ae),{style:r(g(Fe)),rowData:z.value,columnDefs:Ct.value,pinnedBottomRowData:Ht.value,gridOptions:wt,theme:g(Pe),onCellValueChanged:Vt,onPasteStart:Ut,onPasteEnd:Wt,onFillStart:Ut,onFillEnd:Wt,animateRows:!0,onGridReady:tt,onFirstDataRendered:it,enableClipboard:!0,localeText:g(je),tooltipShowDelay:500,headerHeight:30,undoRedoCellEditing:!0,undoRedoCellEditingLimit:20},null,8,[`style`,`rowData`,`columnDefs`,`pinnedBottomRowData`,`theme`,`localeText`])],2)]),e(g(ye),{open:G.value,"onUpdate:open":st},{default:b(()=>[e(g(de),null,{default:b(()=>[e(g(fe),{class:`fixed inset-0 z-50 bg-black/45`}),e(g(me),{class:`fixed left-1/2 top-1/2 z-[70] w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:b(()=>[e(g(he),{class:`text-base font-semibold`},{default:b(()=>[p(a(g(E)(`htZxFw.dialog.resetTitle`)),1)]),_:1}),e(g(ve),{class:`mt-2 text-sm text-muted-foreground`},{default:b(()=>[p(a(g(E)(`htZxFw.dialog.resetDesc`,{name:at.value})),1)]),_:1}),m(`div`,Je,[e(g(ge),{"as-child":``},{default:b(()=>[e(g(w),{variant:`outline`},{default:b(()=>[p(a(g(E)(`common.cancel`)),1)]),_:1})]),_:1}),e(g(pe),{"as-child":``},{default:b(()=>[e(g(w),{variant:`destructive`,onClick:ut},{default:b(()=>[p(a(g(E)(`htZxFw.dialog.confirmReset`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1},8,[`open`]),e(g(ye),{open:q.value,"onUpdate:open":ct},{default:b(()=>[e(g(de),null,{default:b(()=>[e(g(fe),{class:`fixed inset-0 z-50 bg-black/45`}),e(g(me),{class:`fixed left-1/2 top-1/2 z-[70] w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:b(()=>[e(g(he),{class:`text-base font-semibold`},{default:b(()=>[p(a(g(E)(`htZxFw.dialog.deleteTitle`)),1)]),_:1}),e(g(ve),{class:`mt-2 text-sm text-muted-foreground`},{default:b(()=>[p(a(g(E)(`htZxFw.dialog.deleteDesc`,{name:ot.value})),1)]),_:1}),m(`div`,Ye,[e(g(ge),{"as-child":``},{default:b(()=>[e(g(w),{variant:`outline`},{default:b(()=>[p(a(g(E)(`common.cancel`)),1)]),_:1})]),_:1}),e(g(pe),{"as-child":``},{default:b(()=>[e(g(w),{variant:`destructive`,onClick:ft},{default:b(()=>[p(a(g(E)(`common.delete`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1},8,[`open`])])]),_:1}))}}),[[`__scopeId`,`data-v-fc012628`]]);export{P as default};