calculator2026/33/static/js/LandScalePricingPane-DgT-hiGV.js
2026-06-25 09:43:48 +08:00

1 line
26 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,Bt as t,Cr as n,Dt as r,Er as i,G as a,H as o,K as s,Q as c,U as l,Wn as u,er as d,ft as f,mn as p,tt as m,xr as ee,yn as h}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as te}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as ne}from"./workspace-DxKKyh8w.js";import{a as re,d as ie}from"./decimal-D3bp1pbs.js";import{B as ae,R as oe,V as se,z as ce}from"./vendor-ui-B4V4Cf1T.js";import{r as g}from"./numberFormat-jhZZmX17.js";import{a as le,c as ue,h as _}from"./sql-C69Jo4HU.js";import{C as de,n as v}from"./index-CAPJG_im.js";import{t as fe}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{a as pe,i as me,o as he,r as ge,t as _e}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";import{n as ve,o as ye}from"./pricingScaleDetail-CuzzWQVd.js";import{l as y,o as b,u as x}from"./pricingScaleLink-BNsm4Fxd.js";import"./xmFactorDefaults-yPGPQ25R.js";import{a as be,o as xe,t as Se}from"./pricingScaleGrid-BCsr0Q1x.js";import{n as S}from"./pricingScaleCalc-CxdG8IMv.js";import{t as Ce}from"./pricingScalePaneLifecycle-CUGyrg3j.js";import{a as we,i as Te,n as Ee,o as De,r as Oe,t as ke}from"./pricingScaleProject-DnXeytCB.js";var Ae={class:`h-full min-h-0 flex flex-col`},je={class:`rounded-lg border bg-card xmMx flex min-h-0 flex-1 flex-col`},Me={class:`flex items-center justify-between border-b px-4 py-3`},Ne={class:`flex items-center gap-3`},Pe={class:`text-sm font-semibold text-foreground`},Fe={key:0,class:`flex items-center gap-2`},Ie={class:`text-xs text-muted-foreground`},C=`__only-cost-scale-total__`,w=m({__name:`LandScalePricingPane`,props:{contractId:{},serviceId:{},projectInfoKey:{}},setup(w){let T=w,E=de(),{t:D,locale:O}=ne(),k=ie();o(()=>`tzGMF-${T.contractId}-${T.serviceId}`);let Le=o(()=>`ht-info-v3-${T.contractId}`),A=o(()=>`ht-info-scale-change-v1-${T.contractId}`),Re=o(()=>`ht-consult-category-factor-v1-${T.contractId}`),ze=o(()=>`ht-major-factor-v1-${T.contractId}`),j=o(()=>`${Re.value}-change`),M=o(()=>`${ze.value}-change`);o(()=>T.projectInfoKey||`xm-base-info-v1`);let N=u(``),Be=u(new Map),Ve=u(new Map),P=u(null),He=()=>Be.value.get(String(T.serviceId))??null,F=o(()=>_(T.serviceId)?.onlyCostScale===!0),I=o(()=>_(T.serviceId)?.mutiple===!0),L=u(1),R=we,Ue=()=>I.value?R(L.value):1,We=e=>ke(e),z=(e,t)=>Ee(I.value,e,t),Ge=e=>Te(e,I.value),B=o(()=>{if(F.value){let e=_(T.serviceId);return`${e?.code||``} ${e?.name||``}`.trim()}let e=le(N.value.trim(),O.value);return e?D(`pricingScale.totalInvestmentByIndustry`,{industryName:e}):D(`pricingScale.totalInvestment`)}),V=u(null),Ke=async()=>{try{let e=await k.getItem(Le.value);if(typeof e?.totalAmount==`number`&&e.totalAmount>0){V.value=e.totalAmount;return}let t=await k.getItem(`xm-info-v3`);V.value=typeof t?.totalAmount==`number`?t.totalAmount:null}catch{V.value=null}},qe={"F1*":[{limit:200,rate:.0327,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0273,baseAmount:6540,base:`201~500万`},{limit:2e3,rate:.0216,baseAmount:14760,base:`501~2000万`},{limit:5e3,rate:.017,baseAmount:47160,base:`2001~5000万`},{limit:1e4,rate:.0151,baseAmount:98160,base:`5001~10000万`},{limit:3e4,rate:.0118,baseAmount:173660,base:`10001~30000万`},{limit:1/0,rate:.009,baseAmount:409660,base:`30000万以上`}],"F2-1*":[{limit:200,rate:.0087,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0073,baseAmount:1.74,base:`201~500万`},{limit:2e3,rate:.0056,baseAmount:3.93,base:`501~2000万`},{limit:5e3,rate:.0046,baseAmount:12.33,base:`2001~5000万`},{limit:1e4,rate:.0037,baseAmount:26.13,base:`5001~10000万`},{limit:3e4,rate:.0028,baseAmount:44.63,base:`10001~30000万`},{limit:1/0,rate:.0018,baseAmount:100.63,base:`30000万以上`}],"F2-2*":[{limit:200,rate:.024,baseAmount:0,base:`F≤200万`},{limit:500,rate:.02,baseAmount:4.8,base:`201~500万`},{limit:2e3,rate:.016,baseAmount:10.8,base:`501~2000万`},{limit:5e3,rate:.0126,baseAmount:34.8,base:`2001~5000万`},{limit:1e4,rate:.0114,baseAmount:72.6,base:`5001~10000万`},{limit:3e4,rate:.009,baseAmount:129.6,base:`10001~30000万`},{limit:1/0,rate:.0072,baseAmount:309.6,base:`30000万以上`}],"F2-3":[{limit:200,rate:.021,baseAmount:0,base:`F≤200万`},{limit:500,rate:.017,baseAmount:4.2,base:`201~500万`},{limit:2e3,rate:.013,baseAmount:9.3,base:`501~2000万`},{limit:5e3,rate:.0096,baseAmount:28.8,base:`2001~5000万`},{limit:1e4,rate:.0084,baseAmount:57.6,base:`5001~10000万`},{limit:3e4,rate:.006,baseAmount:99.6,base:`10001~30000万`},{limit:1/0,rate:.0042,baseAmount:219.6,base:`30000万以上`}],"F2-4":[{limit:200,rate:.018,baseAmount:0,base:`F≤200万`},{limit:500,rate:.014,baseAmount:3.6,base:`201~500万`},{limit:2e3,rate:.011,baseAmount:7.8,base:`501~2000万`},{limit:5e3,rate:.008,baseAmount:24.3,base:`2001~5000万`},{limit:1e4,rate:.007,baseAmount:48.3,base:`5001~10000万`},{limit:3e4,rate:.005,baseAmount:83.3,base:`10001~30000万`},{limit:1/0,rate:.0035,baseAmount:183.3,base:`30000万以上`}],"F3-1-1":[{limit:200,rate:.0011,baseAmount:0,base:`F≤200万`},{limit:500,rate:.001,baseAmount:.22,base:`201~500万`},{limit:2e3,rate:8e-4,baseAmount:.52,base:`501~2000万`},{limit:5e3,rate:7e-4,baseAmount:1.72,base:`2001~5000万`},{limit:1e4,rate:6e-4,baseAmount:3.82,base:`5001~10000万`},{limit:3e4,rate:5e-4,baseAmount:6.82,base:`10001~30000万`},{limit:1/0,rate:4e-4,baseAmount:16.82,base:`30000万以上`}],"F3-1-2":[{limit:200,rate:9e-4,baseAmount:0,base:`F≤200万`},{limit:500,rate:8e-4,baseAmount:.18,base:`201~500万`},{limit:2e3,rate:7e-4,baseAmount:.42,base:`501~2000万`},{limit:5e3,rate:6e-4,baseAmount:1.47,base:`2001~5000万`},{limit:1e4,rate:5e-4,baseAmount:3.27,base:`5001~10000万`},{limit:3e4,rate:4e-4,baseAmount:5.77,base:`10001~30000万`},{limit:1/0,rate:3e-4,baseAmount:13.77,base:`30000万以上`}],"F3-2-2":[{limit:200,rate:.0022,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0019,baseAmount:.44,base:`201~500万`},{limit:2e3,rate:.0015,baseAmount:1.01,base:`501~2000万`},{limit:5e3,rate:.0013,baseAmount:3.26,base:`2001~5000万`},{limit:1e4,rate:.001,baseAmount:7.16,base:`5001~10000万`},{limit:3e4,rate:8e-4,baseAmount:12.16,base:`10001~30000万`},{limit:1/0,rate:5e-4,baseAmount:28.16,base:`30000万以上`}],"F3-3-10":[{limit:200,rate:.0056,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0046,baseAmount:1.12,base:`201~500万`},{limit:2e3,rate:.0034,baseAmount:2.5,base:`501~2000万`},{limit:5e3,rate:.0027,baseAmount:7.6,base:`2001~5000万`},{limit:1e4,rate:.0022,baseAmount:15.7,base:`5001~10000万`},{limit:3e4,rate:.0016,baseAmount:26.7,base:`10001~30000万`},{limit:1/0,rate:.001,baseAmount:58.7,base:`30000万以上`}],"F3-3-11":[{limit:200,rate:.0016,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0014,baseAmount:.32,base:`201~500万`},{limit:2e3,rate:.001,baseAmount:.74,base:`501~2000万`},{limit:5e3,rate:8e-4,baseAmount:2.24,base:`2001~5000万`},{limit:1e4,rate:6e-4,baseAmount:4.64,base:`5001~10000万`},{limit:3e4,rate:5e-4,baseAmount:7.64,base:`10001~30000万`},{limit:1/0,rate:3e-4,baseAmount:17.64,base:`30000万以上`}],"F3-3-12":[{limit:200,rate:.0016,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0014,baseAmount:.32,base:`201~500万`},{limit:2e3,rate:.001,baseAmount:.74,base:`501~2000万`},{limit:5e3,rate:8e-4,baseAmount:2.24,base:`2001~5000万`},{limit:1e4,rate:6e-4,baseAmount:4.64,base:`5001~10000万`},{limit:3e4,rate:5e-4,baseAmount:7.64,base:`10001~30000万`},{limit:1/0,rate:3e-4,baseAmount:17.64,base:`30000万以上`}],"F3-4-1":[{limit:200,rate:.008,baseAmount:0,base:`F≤200万`},{limit:500,rate:.007,baseAmount:1.6,base:`201~500万`},{limit:2e3,rate:.006,baseAmount:3.7,base:`501~2000万`},{limit:5e3,rate:.005,baseAmount:12.7,base:`2001~5000万`},{limit:1e4,rate:.004,baseAmount:27.7,base:`5001~10000万`},{limit:3e4,rate:.003,baseAmount:47.7,base:`10001~30000万`},{limit:1/0,rate:.002,baseAmount:107.7,base:`30000万以上`}],"F3-4-2":[{limit:200,rate:.012,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0105,baseAmount:2.4,base:`201~500万`},{limit:2e3,rate:.009,baseAmount:5.55,base:`501~2000万`},{limit:5e3,rate:.0075,baseAmount:19.05,base:`2001~5000万`},{limit:1e4,rate:.006,baseAmount:41.55,base:`5001~10000万`},{limit:3e4,rate:.0045,baseAmount:71.55,base:`10001~30000万`},{limit:1/0,rate:.003,baseAmount:161.55,base:`30000万以上`}],"F3-4-3":[{limit:1/0,rate:.003,baseAmount:0,base:`无区间`}],"F3-4-4":[{limit:1/0,rate:.003,baseAmount:0,base:`无区间`}],"F3-4-5":[{limit:200,rate:.006,baseAmount:0,base:`F≤200万`},{limit:500,rate:.005,baseAmount:1.2,base:`201~500万`},{limit:2e3,rate:.004,baseAmount:2.7,base:`501~2000万`},{limit:5e3,rate:.003,baseAmount:8.7,base:`2001~5000万`},{limit:1e4,rate:.002,baseAmount:17.7,base:`5001~10000万`},{limit:3e4,rate:.0013,baseAmount:27.7,base:`10001~30000万`},{limit:1/0,rate:8e-4,baseAmount:53.7,base:`30000万以上`}],"F3-5":[{limit:1/0,rate:.008,baseAmount:0,base:`无区间`}],"F3-6-2":[{limit:100,rate:0,baseAmount:0,base:`≤100万`},{limit:500,rate:.25,baseAmount:0,base:`101~500万`},{limit:1e3,rate:.15,baseAmount:1e3,base:`501~1000万`},{limit:3e3,rate:.1,baseAmount:1750,base:`1001~3000万`},{limit:8e3,rate:.05,baseAmount:3750,base:`3001~8000万`},{limit:15e3,rate:.03,baseAmount:6250,base:`8001~15000万`},{limit:1/0,rate:.02,baseAmount:8350,base:`15000万以上`}]},Je=(e,t)=>{if(t==null||t<0)return{formula:``,amount:0,base:``};let n=qe[e];if(!n)return{formula:`无对应规则`,amount:0,base:``};let r=0;for(let e=0;e<n.length;e++){let{limit:i,rate:a,baseAmount:o,base:s}=n[e];if(t<i)if(o===0){let e=t*a*1e4;return{formula:`F×${a*1e3}`,amount:Math.round(e),base:s}}else{let e=o+(t-r)*a*1e4;return{formula:`${o.toLocaleString()}+(F-${r.toLocaleString()})×${a*1e3}`,amount:Math.round(e),base:s}}r=i}return{formula:``,amount:0,base:``}},Ye=e=>{let t=typeof e.budgetFee==`number`?e.budgetFee:0,n=typeof e.workStageFactor==`number`?e.workStageFactor:1,r=typeof e.workRatio==`number`?e.workRatio:1;return t===null?null:Math.round(t*n*r)},Xe=()=>{for(let e of H.value)e.serviceFee=Ye(e)},H=u([]),U=o({get:()=>H.value,set:e=>{$(),H.value=e}}),W=[],G=[],K=new Map,q=()=>{let e=ue().map(({id:e,item:t})=>[e,t]);W.splice(0,W.length,...e);let t=be(W,({hasCost:e,hasArea:t})=>e&&!t);G.splice(0,G.length,...t);let n=xe(t);K.clear(),n.forEach((e,t)=>{K.set(t,e)})};q();let J=async()=>{let e=[],t=await v().query([{field:`type`,value:`${T.contractId}-zxFw`,operator:`eq`}]);for(let n of t){if(!n.typel?.onlyCostScale)continue;let t=`${T.contractId}-${n.id||n._id}-${Date.now()}`.slice(0,64),r=n.code||``,i=V.value,a=i!=null&&i>0,{formula:o,amount:s,base:c}=a?Je(r,i):{formula:``,amount:0,base:``};e.push({id:t,majorCode:r,majorName:n.name||``,hasCost:!0,hasArea:!1,amount:null,benchmarkBudget:a?s:null,benchmarkBudgetBasic:a?s:null,benchmarkBudgetOptional:a?0:null,benchmarkBudgetBasicChecked:!0,benchmarkBudgetOptionalChecked:!1,basicFormula:a?`C0建设项目总费用`:``,optionalFormula:a?o:``,consultCategoryFactor:null,majorFactor:null,workStageFactor:1,workRatio:1,budgetFee:a?s:null,budgetFeeBasic:a?s:null,budgetFeeOptional:a?0:null,serviceFee:a?Math.round(s*1*100/100):null,remark:n.remark||``,path:[r,n.id||``],base:c,majortype:0,UnitPrice:r===`F3-7-1`?12:18,QuantityBasis:0,ProjectQuantityPhase:0})}return e},Y=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;let n=(e||[]).find(e=>e?.isGroupRow===!0);return typeof n?.amount==`number`&&Number.isFinite(n.amount)?n.amount:re(e||[],e=>typeof e?.amount==`number`?e.amount:null)},X=()=>{let e=String(N.value||``).trim();if(!e)return null;let t=W.find(([,t])=>String(t?.industryId??``).trim()===e&&!String(t?.code||``).includes(`-`));if(!t)return null;let[n,r]=t;return{id:n,item:r}},Ze=()=>{let e=X();if(!e)return 1;let t=e.id,n=e.item,r=Ve.value.get(String(t));return typeof r==`number`&&Number.isFinite(r)?r:typeof n?.defCoe==`number`&&Number.isFinite(n.defCoe)?n.defCoe:1},Qe=(e,t,n)=>{let r=_(T.serviceId),i=r?.code||`D1`,a=r?.name||`全过程造价咨询`;return{id:z(t,X()?.id||C),majorCode:i,majorName:a,hasCost:!0,hasArea:!1,amount:e,benchmarkBudget:null,benchmarkBudgetBasic:null,benchmarkBudgetOptional:null,benchmarkBudgetBasicChecked:typeof n?.benchmarkBudgetBasicChecked==`boolean`?n.benchmarkBudgetBasicChecked:!0,benchmarkBudgetOptionalChecked:typeof n?.benchmarkBudgetOptionalChecked==`boolean`?n.benchmarkBudgetOptionalChecked:!0,basicFormula:``,optionalFormula:``,consultCategoryFactor:typeof n?.consultCategoryFactor==`number`?n.consultCategoryFactor:He(),majorFactor:typeof n?.majorFactor==`number`?n.majorFactor:Ze(),workStageFactor:typeof n?.workStageFactor==`number`?n.workStageFactor:1,workRatio:typeof n?.workRatio==`number`?n.workRatio:100,budgetFee:null,budgetFeeBasic:null,budgetFeeOptional:null,remark:typeof n?.remark==`string`?n.remark:``,path:I.value?[We(t),z(t,X()?.id||C)]:[z(t,X()?.id||C)]}},$e=(e,t)=>{let n=R(t?.projectCount??Ue()),r=X()?.id||C,i=t?.preferSummaryAmountWhenSingleRow?Y(e,t.totalAmount):null,a=new Map;for(let t of e||[]){let e=x(t),n=y(t)||r;a.set(b(e,n),t),String(t.id||``)===C&&!a.has(b(e,r))&&a.set(b(e,r),t)}let o=[];for(let s=1;s<=n;s++){let n=b(s,r),c=b(1,r),l=a.get(n)||(t?.cloneFromProjectOne&&s>1?a.get(c):void 0),u=t?.cloneFromProjectOne&&s>1&&l==null?Y(e,t.totalAmount):null;o.push(Qe(i??(typeof l?.amount==`number`?l.amount:u),s,l))}return o},et=async e=>{let t=new Map;for(let n of e)t.set(n.id,n);return(await J()).map(e=>{let n=t.get(e.id);return n?{...e,serviceFee:typeof n.serviceFee==`number`?n.serviceFee:null,consultCategoryFactor:typeof n.consultCategoryFactor==`number`?n.consultCategoryFactor:null,majorFactor:typeof n.majorFactor==`number`?n.majorFactor:null,workStageFactor:typeof n.workStageFactor==`number`?n.workStageFactor:1,workRatio:typeof n.workRatio==`number`?n.workRatio:100,remark:typeof n.remark==`string`?n.remark:``}:e})};Se(()=>U.value,()=>Tt());let Z=e=>ve(e,`cost`),tt=m({name:`SelectQuantityBasis`,props:{params:{type:Object,required:!0}},setup(e){return()=>{if(e.params.node.rowPinned===`bottom`)return`/`;let t=e.params?.data||{},n=[{label:D(`pricingPane.land.columns.projectquantityoption.a`),value:`0`},{label:D(`pricingPane.land.columns.projectquantityoption.b`),value:`1`},{label:D(`pricingPane.land.columns.projectquantityoption.c`),value:`2`},{label:D(`pricingPane.land.columns.projectquantityoption.d`),value:`3`},{label:D(`pricingPane.land.columns.projectquantityoption.e`),value:`4`},{label:D(`pricingPane.land.columns.projectquantityoption.f`),value:`5`},{label:D(`pricingPane.land.columns.projectquantityoption.g`),value:`6`},{label:D(`pricingPane.land.columns.projectquantityoption.h`),value:`7`}];function r(e){t.QuantityBasis=e,$()}return f(`div`,{style:{height:`100%`,width:`100%`,display:`flex`,alignItems:`center`,padding:`0 10px`,gap:`14px`,flexWrap:`wrap`}},[...n.map(e=>f(`label`,{style:{display:`inline-flex`,alignItems:`center`,fontSize:`13px`,color:`#333`}},[f(`input`,{type:`radio`,name:`QuantityBasis-${t.id}`,style:{width:`16px`,height:`16px`,marginRight:`6px`,accentColor:`#1677ff`,cursor:`default`},value:e.value,checked:t.QuantityBasis==Number(e.value),onInput:()=>r(e.value)}),e.label]))])}}}),nt=m({name:`SelectProjectQuantityPhase`,props:{params:{type:Object,required:!0}},setup(e){return()=>{if(e.params.node.rowPinned===`bottom`)return`/`;let t=e.params?.data||{},n=[{label:D(`pricingPane.land.columns.ProjectSectionoption.a`),value:`0`},{label:D(`pricingPane.land.columns.ProjectSectionoption.b`),value:`1`},{label:D(`pricingPane.land.columns.ProjectSectionoption.c`),value:`2`},{label:D(`pricingPane.land.columns.ProjectSectionoption.d`),value:`3`},{label:D(`pricingPane.land.columns.ProjectSectionoption.e`),value:`4`}];function r(e){t.ProjectQuantityPhase=e,$()}return f(`div`,{style:{height:`100%`,width:`100%`,display:`flex`,alignItems:`center`,padding:`0 10px`,gap:`14px`,flexWrap:`wrap`}},[...n.map(e=>f(`label`,{style:{display:`inline-flex`,alignItems:`center`,fontSize:`13px`,color:`#333`}},[f(`input`,{type:`radio`,name:`ProjectQuantityPhase-${t.id}`,style:{width:`16px`,height:`16px`,marginRight:`6px`,accentColor:`#1677ff`,cursor:`default`},value:e.value,checked:t.ProjectQuantityPhase==Number(e.value),onInput:()=>r(e.value)}),e.label]))])}}}),rt=[{headerName:D(`pricingPane.land.columns.name`),field:`majorName`,minWidth:150,flex:1.5,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueFormatter:e=>e.node?.rowPinned?``:e.value||``},{headerName:D(`pricingPane.land.columns.countbase`),minWidth:200,flex:1.9,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueFormatter:e=>e.node?.rowPinned===`bottom`?`/`:D(`pricingPane.land.columns.countbasevalue`)},{headerName:D(`pricingPane.land.columns.base`),field:`amount`,minWidth:120,flex:1,editable:!0,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueFormatter:e=>e.value||D(`pricingPane.land.columns.basetip`),cellClass:` remark-wrap-cell`,cellClassRules:{"editable-cell-empty":e=>e.value==null||e.value===``}},{headerName:D(`pricingPane.land.columns.UnitPrice`),field:`UnitPrice`,minWidth:100,flex:1.5,editable:!1,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueFormatter:e=>e.value?e.value:``},{headerName:D(`pricingPane.land.columns.calculationAmount`),field:`budgetFee`,headerClass:`ag-right-aligned-header`,minWidth:120,flex:1,editable:!1,cellClassRules:{"ag-right-aligned-cell":()=>!0}},{headerName:D(`pricingPane.land.columns.calculation`),field:`serviceFee`,headerClass:`ag-right-aligned-header`,minWidth:120,flex:1,editable:!0,cellClassRules:{"ag-right-aligned-cell":()=>!0}},{headerName:D(`pricingPane.land.columns.projectquantity`),field:`QuantityBasis`,headerClass:`ag-right-aligned-header`,minWidth:372,cellRenderer:tt},{headerName:D(`pricingPane.land.columns.ProjectSection`),field:`ProjectQuantityPhase`,headerClass:`ag-right-aligned-header`,minWidth:240,cellRenderer:nt},{headerName:D(`pricingScale.columns.remark`),field:`remark`,minWidth:100,flex:1.2,cellEditor:`agLargeTextCellEditor`,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},editable:e=>!e.node?.group&&!e.node?.rowPinned,valueFormatter:e=>!e.node?.group&&!e.node?.rowPinned&&!e.value?D(`pricingScale.clickToInput`):e.value||``,cellClass:e=>!e.node?.group&&!e.node?.rowPinned?` remark-wrap-cell`:``,cellClassRules:{"editable-cell-empty":e=>!e.node?.group&&!e.node?.rowPinned&&(e.value==null||e.value===``)}}],it=o(()=>_e(rt)),at={headerName:D(`pricingScale.columns.number`),minWidth:80,flex:2,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},cellRenderer:void 0,colSpan:e=>e.node?.rowPinned||e.data?.id===`pinned-total-row`?2:1,valueFormatter:e=>{if(e.node?.rowPinned)return`小计`;let t=e.data;return t?.majorCode?`${t.majorCode}`:e.value||``},tooltipValueGetter:e=>{if(e.node?.rowPinned)return B.value;let t=e.data;return t?.majorCode&&t?.majorName?`${t.majorCode} ${t.majorName}`:e.value||``}},ot=o(()=>S(U.value,e=>e.budgetFee)),st=o(()=>S(U.value,e=>Z(e)?.basic)),ct=o(()=>S(U.value,e=>Z(e)?.optional)),lt=o(()=>S(U.value,e=>e.serviceFee*1e4)),ut=o(()=>[{id:`pinned-total-row`,groupCode:``,groupName:``,majorCode:``,majorName:B.value,base:`/`,hasCost:!1,hasArea:!1,amount:`/`,benchmarkBudget:null,benchmarkBudgetBasic:null,benchmarkBudgetOptional:null,benchmarkBudgetBasicChecked:!0,benchmarkBudgetOptionalChecked:!0,basicFormula:`/`,optionalFormula:`/`,workStageFactor:`/`,workRatio:`/`,consultCategoryFactor:null,majorFactor:null,budgetFee:ot.value,budgetFeeBasic:st.value,budgetFeeOptional:ct.value,serviceFee:lt.value,remark:``,path:[`TOTAL`]}]),Q=()=>{ye(U.value,`cost`)},$=async e=>{let t=H.value.map(e=>({...e,type:`${T.contractId}-Quantityofwork`})),n=await v().upsertBatch(t);console.log(`💾 数据保存成功:`,n)},dt=async()=>{},ft=async e=>{},pt=e=>String(e.data?.id||``),mt={...pe,getRowId:pt,groupDefaultExpanded:-1,groupHideOpenParents:!0},ht=o(()=>JSON.stringify({consultFactorChange:E.keyedStates[j.value]??k.entries[j.value]??null,majorFactorChange:E.keyedStates[M.value]??k.entries[M.value]??null})),gt=o(()=>JSON.stringify(k.entries[A.value]??null)),_t=async e=>[],vt=e=>{U.value=e.map(e=>({...e,benchmarkBudgetBasicChecked:typeof e.benchmarkBudgetBasicChecked==`boolean`?e.benchmarkBudgetBasicChecked:!0,benchmarkBudgetOptionalChecked:typeof e.benchmarkBudgetOptionalChecked==`boolean`?e.benchmarkBudgetOptionalChecked:!0}))},yt=async()=>{if(q(),U.value.length===0){P.value?.refreshCells({force:!0});return}let e=new Map;for(let t of G){e.set(t.id,{majorCode:t.code,majorName:t.name});for(let n of t.children)e.set(n.id,{majorCode:n.code,majorName:n.name})}let t=!1;U.value=U.value.map(n=>{let r=e.get(y(n));return!r||n.majorCode===r.majorCode&&n.majorName===r.majorName?n:(t=!0,{...n,majorCode:r.majorCode,majorName:r.majorName})}),P.value?.refreshCells({force:!0}),t&&(Q(),await $({skipComputedSync:!0}))},bt=(e,t)=>({...e,...t,id:e.id,majorCode:e.majorCode,majorName:e.majorName,hasCost:e.hasCost,hasArea:e.hasArea,path:e.path}),xt=async()=>{Q(),await $({skipComputedSync:!0})},St=async e=>{await De({nextValue:e,setProjectCount:e=>{L.value=e},isMutipleService:I.value,currentRows:U.value,cloneRows:e=>e.map(e=>({...e})),normalizeProjectCount:R,inferProjectCountFromRows:e=>Ge(e),buildRowsForReducedCount:(e,t)=>F.value?$e(e,{projectCount:t}):et(e,{projectCount:t}),buildRowsFromImportDefaultSource:_t,getRowKey:e=>Oe(e),getRowProjectIndex:e=>x(e),mergeExistingRow:bt,applyRows:vt,afterApplyRows:xt})},Ct=async()=>{await Ke();try{let e=await J(),t=(await v().query([{field:`type`,value:`${T.contractId}-Quantityofwork`,operator:`eq`}])).map(e=>({id:String(e.id||``),projectIndex:e.projectIndex==null?void 0:Number(e.projectIndex),majorDictId:e.majorDictId==null?void 0:String(e.majorDictId),groupCode:String(e.groupCode||``),groupName:String(e.groupName||``),majorCode:String(e.majorCode||``),majorName:String(e.majorName||``),hasCost:!!e.hasCost,hasArea:!!e.hasArea,amount:e.amount==null?null:Number(e.amount),benchmarkBudget:e.benchmarkBudget==null?null:Number(e.benchmarkBudget),benchmarkBudgetBasic:e.benchmarkBudgetBasic==null?null:Number(e.benchmarkBudgetBasic),benchmarkBudgetOptional:e.benchmarkBudgetOptional==null?null:Number(e.benchmarkBudgetOptional),benchmarkBudgetBasicChecked:!!e.benchmarkBudgetBasicChecked,benchmarkBudgetOptionalChecked:!!e.benchmarkBudgetOptionalChecked,basicFormula:e.basicFormula==null?null:String(e.basicFormula),optionalFormula:e.optionalFormula==null?null:String(e.optionalFormula),consultCategoryFactor:e.consultCategoryFactor==null?null:Number(e.consultCategoryFactor),majorFactor:e.majorFactor==null?null:Number(e.majorFactor),workStageFactor:e.workStageFactor,workRatio:e.workRatio,budgetFee:e.budgetFee==null?null:Number(e.budgetFee),budgetFeeBasic:e.budgetFeeBasic==null?null:Number(e.budgetFeeBasic),budgetFeeOptional:e.budgetFeeOptional==null?null:Number(e.budgetFeeOptional),serviceFee:e.serviceFee==null?0:Number(e.serviceFee),remark:String(e.remark||``),path:Array.isArray(e.path)?e.path:[],base:String(e.base||``),majortype:Number(e.majortype||``),UnitPrice:Number(e.UnitPrice||``),QuantityBasis:Number(e.QuantityBasis||``),ProjectQuantityPhase:Number(e.ProjectQuantityPhase||``)})),n=new Map;t.forEach(e=>n.set(e.majorCode,e)),H.value=e.map(e=>{let t=n.get(e.majorCode);return t?{...t,majorName:e.majorName}:e}),console.log(`✅ 智能加载完成:保留用户数据 + 同步最新结构`)}catch(e){console.error(`❌ 加载失败`,e),H.value=await J()}},wt=async e=>{await r(),Q(),P.value?.refreshHeader(),P.value?.refreshCells({force:!0}),await $({skipComputedSync:!0}),await r(),P.value?.refreshHeader(),P.value?.refreshCells({force:!0})},Tt=e=>{let t=e.data;if((e.column?.getColId()||e.column?.getColDef().field)===`amount`&&t){let n=Number(e.newValue)||0;(t.groupCode||t.majorCode)&&n>0?t.budgetFee=n*t.UnitPrice:t.budgetFee=0,e.api.applyTransaction({update:[t]}),Xe(),$()}$()},Et=()=>{},Dt=e=>{wt(e?.type||`bulk-end`)},Ot=e=>{P.value=e.api};Ce({gridApi:P,loadFromIndexedDB:Ct,syncLinkedFields:dt,linkedSourceSignature:ht,linkedSecondarySignature:gt,syncSecondaryLinkedFields:()=>ft((k.entries[A.value]??void 0)?.changedRowIds),saveToIndexedDB:()=>$()}),p(()=>O.value,()=>{yt()}),p(()=>v().items,async e=>{Object.keys(e).length>0&&Ct()},{immediate:!0,deep:!0});let kt=e=>Array.isArray(e.value)?JSON.stringify(e.value):e.value,At=e=>{let t=String(e.column?.getColDef?.().field||``);if(t===`amount`||t===`consultCategoryFactor`||t===`majorFactor`||t===`workStageFactor`)return g(e.value,{precision:3});if(t===`workRatio`)return g(e.value,{precision:2});try{let t=JSON.parse(e.value);if(Array.isArray(t))return t}catch{}return e.value};return(r,o)=>(t(),s(`div`,Ae,[l(`div`,je,[l(`div`,Me,[l(`div`,Ne,[l(`h3`,Pe,i(d(D)(`pricingPane.land.title`)),1),I.value?(t(),s(`div`,Fe,[l(`span`,Ie,i(d(D)(`pricingPane.projectCount`)),1),e(d(se),{modelValue:L.value,"onUpdate:modelValue":[o[0]||=e=>L.value=e,o[1]||=e=>void St(e)],min:1,step:1,class:`inline-flex items-center rounded-md border bg-background`},{default:h(()=>[e(d(ae),{class:`cursor-pointer px-2 py-1 text-xs text-muted-foreground hover:bg-muted`},{default:h(()=>[...o[2]||=[c(`-`,-1)]]),_:1}),e(d(oe),{class:`h-7 w-14 border-x bg-transparent px-2 text-center text-xs outline-none`}),e(d(ce),{class:`cursor-pointer px-2 py-1 text-xs text-muted-foreground hover:bg-muted`},{default:h(()=>[...o[3]||=[c(`+`,-1)]]),_:1})]),_:1},8,[`modelValue`])])):a(``,!0)])]),l(`div`,{class:ee(d(me))},[e(d(te),{style:n(d(ge)),rowData:U.value,pinnedBottomRowData:ut.value,columnDefs:it.value,autoGroupColumnDef:at,gridOptions:mt,theme:d(he),animateRows:!0,onGridReady:Ot,onCellValueChanged:Tt,suppressColumnVirtualisation:!0,onPasteStart:Et,onPasteEnd:Dt,onFillStart:Et,onFillEnd:Dt,suppressRowVirtualisation:!0,cellSelection:{handle:{mode:`range`}},enableClipboard:!0,localeText:d(fe),tooltipShowDelay:500,headerHeight:50,processCellForClipboard:kt,processCellFromClipboard:At,undoRedoCellEditing:!0,undoRedoCellEditingLimit:20},null,8,[`style`,`rowData`,`pinnedBottomRowData`,`columnDefs`,`theme`,`localeText`])],2)])]))}});export{w as default};