import{$ as e,Bt as t,Cr as n,Dt as r,Er as i,G as a,H as o,K as s,Pt as c,Q as l,U as u,Wn as d,er as f,ft as p,mn as ee,tt as m,xr as te,yn as h}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as ne}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as re}from"./workspace-DxKKyh8w.js";import{a as ie,d as ae,n as oe}from"./decimal-D3bp1pbs.js";import{B as se,R as ce,V as le,ct as ue,dt as de,ft as fe,gt as pe,ht as me,lt as g,mt as he,pt as ge,ut as _e,z as ve}from"./vendor-ui-B4V4Cf1T.js";import{r as _}from"./numberFormat-jhZZmX17.js";import{a as ye,c as be,h as v,y as xe}from"./sql-C69Jo4HU.js";import{C as Se,k as y,n as b}from"./index-CAPJG_im.js";import{t as Ce}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{a as we,i as Te,o as Ee,r as De,t as Oe}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";import{n as ke,o as Ae}from"./pricingScaleDetail-CuzzWQVd.js";import{l as x,o as S,u as C}from"./pricingScaleLink-BNsm4Fxd.js";import"./xmFactorDefaults-yPGPQ25R.js";import"./pricingPersistControl-DVG_7RF1.js";import{a as je,n as w,o as Me,r as Ne,t as Pe}from"./pricingScaleGrid-BCsr0Q1x.js";import{n as T}from"./pricingScaleCalc-CxdG8IMv.js";import{t as Fe}from"./pricingScalePaneLifecycle-CUGyrg3j.js";import{a as Ie,i as Le,n as Re,o as ze,r as Be,t as Ve}from"./pricingScaleProject-DnXeytCB.js";var He={class:`h-full min-h-0 flex flex-col`},Ue={class:`rounded-lg border bg-card xmMx flex min-h-0 flex-1 flex-col`},We={class:`flex items-center justify-between border-b px-4 py-3`},Ge={class:`flex items-center gap-3`},Ke={class:`text-sm font-semibold text-foreground`},qe={key:0,class:`flex items-center gap-2`},Je={class:`text-xs text-muted-foreground`},Ye={class:`flex items-center gap-2`},Xe={class:`mt-4 flex items-center justify-end gap-2`},Ze={class:`mt-4 flex items-center justify-end gap-2`},E=`__only-cost-scale-total__`,D=m({__name:`InvestmentScalePricingPane`,props:{contractId:{},serviceId:{},projectInfoKey:{}},setup(D){let O=D,k=Se(),{t:A,locale:j}=re(),M=ae();o(()=>`tzGMF-${O.contractId}-${O.serviceId}`);let Qe=o(()=>`ht-info-v3-${O.contractId}`),N=o(()=>`ht-info-scale-change-v1-${O.contractId}`),$e=o(()=>`ht-consult-category-factor-v1-${O.contractId}`),et=o(()=>`ht-major-factor-v1-${O.contractId}`),P=o(()=>`${$e.value}-change`),F=o(()=>`${et.value}-change`);o(()=>O.projectInfoKey||`xm-base-info-v1`);let I=d(``),tt=d(new Map),nt=d(new Map),L=d(null);d(0),d(0);let rt=()=>tt.value.get(String(O.serviceId))??null,R=o(()=>v(O.serviceId)?.onlyCostScale===!0),z=o(()=>v(O.serviceId)?.mutiple===!0),B=d(1),V=Ie,it=()=>z.value?V(B.value):1,at=e=>Ve(e),H=(e,t)=>Re(z.value,e,t),ot=e=>Le(e,z.value),st=o(()=>{if(R.value){let e=v(O.serviceId);return`${e?.code||``} ${e?.name||``}`.trim()}let e=ye(I.value.trim(),j.value);return e?A(`pricingScale.totalInvestmentByIndustry`,{industryName:e}):A(`pricingScale.totalInvestment`)}),U=d(null),ct=async()=>{try{let e=await M.getItem(Qe.value);if(typeof e?.totalAmount==`number`&&e.totalAmount>0){U.value=e.totalAmount;return}let t=await M.getItem(`xm-info-v3`);U.value=typeof t?.totalAmount==`number`?t.totalAmount:null}catch{U.value=null}},lt={"F1*":[{limit:200,rate:.0327,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0273,baseAmount:6.54,base:`201~500万`},{limit:2e3,rate:.0216,baseAmount:14.73,base:`501~2000万`},{limit:5e3,rate:.017,baseAmount:47.13,base:`2001~5000万`},{limit:1e4,rate:.0151,baseAmount:98.13,base:`5001~10000万`},{limit:3e4,rate:.0118,baseAmount:173.63,base:`10001~30000万`},{limit:1/0,rate:.009,baseAmount:409.63,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:25e-5,baseAmount:.7,base:`101~500万`},{limit:1e3,rate:15e-5,baseAmount:.8,base:`501~1000万`},{limit:3e3,rate:1e-4,baseAmount:.875,base:`1001~3000万`},{limit:8e3,rate:5e-5,baseAmount:.975,base:`3001~8000万`},{limit:15e3,rate:3e-5,baseAmount:1.025,base:`8001~15000万`},{limit:1/0,rate:2e-5,baseAmount:1.046,base:`15000万以上`}]},ut=(e,t)=>{if(e==`F3-6-2`&&t<=100)return{formula:`固定值`,amount:7e3,base:`<100万`};if(e==`F3-6-1`)return t<=100?{formula:`固定值`,amount:2e3,base:`F<100万`}:{formula:`固定值`,amount:4e3,base:`F>100万`};if(t==null||t<0)return{formula:``,amount:0,base:``};let n=lt[e];if(!n)return{formula:`无对应规则`,amount:0,base:``};let r=0;for(let e=0;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)},ft=()=>{for(let e of W.value)e.serviceFee=dt(e)},W=d([]),G=o({get:()=>W.value,set:e=>{Q(),W.value=e}}),K=[],q=[],pt=new Map,mt=()=>{let e=be().map(({id:e,item:t})=>[e,t]);K.splice(0,K.length,...e);let t=je(K,({hasCost:e,hasArea:t})=>e&&!t);q.splice(0,q.length,...t);let n=Me(t);pt.clear(),n.forEach((e,t)=>{pt.set(t,e)})};mt();let J=async()=>{let e=[],t=await b().query([{field:`type`,value:`${O.contractId}-zxFw`,operator:`eq`}]);for(let n of t){if(!n.typel?.scale)continue;let t=`${O.contractId}-${n.id||n._id}-${Date.now()}`.slice(0,64),r=n.code||``,i=U.value,a=i!=null&&i>0,{formula:o,amount:s,base:c}=a?ut(r,i):{formula:``,amount:0,base:``};e.push({id:t,projectIndex:1,majorDictId:n.id||``,groupCode:r,groupName:n.name||``,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,computbase:0,basetype:0})}return e},ht=(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:ie(e||[],e=>typeof e?.amount==`number`?e.amount:null)},Y=()=>{let e=String(I.value||``).trim();if(!e)return null;let t=K.find(([,t])=>String(t?.industryId??``).trim()===e&&!String(t?.code||``).includes(`-`));if(!t)return null;let[n,r]=t;return{id:n,item:r}},gt=()=>{let e=Y();if(!e)return 1;let t=e.id,n=e.item,r=nt.value.get(String(t));return typeof r==`number`&&Number.isFinite(r)?r:typeof n?.defCoe==`number`&&Number.isFinite(n.defCoe)?n.defCoe:1},_t=(e,t,n)=>{let r=v(O.serviceId),i=r?.code||`D1`,a=r?.name||`全过程造价咨询`;return{id:H(t,Y()?.id||E),projectIndex:t,majorDictId:Y()?.id||E,groupCode:i,groupName:a,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:rt(),majorFactor:typeof n?.majorFactor==`number`?n.majorFactor:gt(),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:z.value?[at(t),H(t,Y()?.id||E)]:[H(t,Y()?.id||E)]}},vt=(e,t)=>{let n=V(t?.projectCount??it()),r=Y()?.id||E,i=t?.preferSummaryAmountWhenSingleRow?ht(e,t.totalAmount):null,a=new Map;for(let t of e||[]){let e=C(t),n=x(t)||r;a.set(S(e,n),t),String(t.id||``)===E&&!a.has(S(e,r))&&a.set(S(e,r),t)}let o=[];for(let s=1;s<=n;s++){let n=S(s,r),c=S(1,r),l=a.get(n)||(t?.cloneFromProjectOne&&s>1?a.get(c):void 0),u=t?.cloneFromProjectOne&&s>1&&l==null?ht(e,t.totalAmount):null;o.push(_t(i??(typeof l?.amount==`number`?l.amount:u),s,l))}return o},yt=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})};Pe(()=>G.value,()=>Qt());let bt=e=>ke(e,`cost`),xt=o(()=>O.projectInfoKey||`xm-base-info-v1`),X=d(``),St=async()=>{try{let e=await M.getItem(xt.value);X.value=typeof e?.projectIndustry==`string`?e.projectIndustry.trim():``}catch(e){console.error(`loadProjectIndustry failed:`,e),X.value=``}},Ct=o(()=>{let e=X.value;if(!e)return{};let t=be().filter(({id:t})=>xe(t,e)).map(({id:e,item:t})=>[e,t]);return Object.fromEntries(t)}),wt=[],Tt=m({name:`selecttypeCellRenderer`,props:{params:{type:Object,required:!0}},setup(e){return()=>{if(e.params.node.rowPinned===`bottom`)return`/`;let t=d([]);(async()=>{let n=e.params.context.contractId;t.value=await b().query([{field:`type`,value:`ht-major-factor-v1-${n}-factor`,operator:`eq`}])})();let n=e.params.data,r=e=>{let r=e.target.value,i=t.value.find((e,t)=>t===Number(r));n.majortype=r,n.workStageFactor=i?.budgetValue??null,console.log(n),Q()};return p(`div`,{style:{height:`100%`,width:`100%`}},[p(`select`,{style:{height:`100%`,width:`100%`,padding:`0 10px`,border:`none`,borderRadius:`4px`,backgroundColor:`#f9fafb`,fontSize:`13px`,color:`#333`,outline:`none`,cursor:`pointer`,transition:`all 0.2s`},onChange:e=>{r(e)},onFocus:e=>{let t=e.target;t.style.backgroundColor=`#eff6ff`,t.style.boxShadow=`0 0 0 1px #3b82f6`},onBlur:e=>{let t=e.target;t.style.backgroundColor=`#f9fafb`,t.style.boxShadow=`none`},onMouseover:e=>{let t=e.target;t.style.backgroundColor=`#f3f4f6`},onMouseout:e=>{let t=e.target;t.style.backgroundColor=`#f9fafb`},value:n.majortype??0},Object.entries(wt).map(([e,t])=>p(`option`,{value:e},t.name)))])}}}),Et=m({name:`Selectcomputbase`,props:{params:{type:Object,required:!0}},setup(e){return()=>{if(e.params.node.rowPinned===`bottom`)return`/`;let t=e.params?.data||{},n=[{label:A(`pricingScale.columns.computbaseoption.a`),value:`0`},{label:A(`pricingScale.columns.computbaseoption.b`),value:`1`},{label:A(`pricingScale.columns.computbaseoption.c`),value:`2`},{label:A(`pricingScale.columns.computbaseoption.d`),value:`3`},{label:A(`pricingScale.columns.computbaseoption.e`),value:`4`}];function r(e){t.computbase=e,Q()}return p(`div`,{style:{height:`100%`,width:`100%`,display:`flex`,alignItems:`center`,padding:`0 10px`,gap:`14px`,flexWrap:`wrap`}},[...n.map(e=>p(`label`,{style:{display:`inline-flex`,alignItems:`center`,fontSize:`10px`,color:`#333`}},[p(`input`,{type:`radio`,name:`computbase-${t.id}`,style:{width:`16px`,height:`16px`,marginRight:`6px`,accentColor:`#1677ff`,cursor:`default`},value:e.value,checked:t.computbase==Number(e.value),onInput:()=>r(e.value)}),e.label]))])}}}),Dt=m({name:`Selectbasetype`,props:{params:{type:Object,required:!0}},setup(e){return()=>{if(e.params.node.rowPinned===`bottom`)return`/`;let t=e.params?.data||{},n=[{label:A(`pricingScale.columns.basetypeoption.a`),value:`0`},{label:A(`pricingScale.columns.basetypeoption.b`),value:`1`},{label:A(`pricingScale.columns.basetypeoption.c`),value:`2`},{label:A(`pricingScale.columns.basetypeoption.d`),value:`3`},{label:A(`pricingScale.columns.basetypeoption.e`),value:`4`},{label:A(`pricingScale.columns.basetypeoption.f`),value:`5`},{label:A(`pricingScale.columns.basetypeoption.g`),value:`6`},{label:A(`pricingScale.columns.basetypeoption.h`),value:`7`}];function r(e){t.basetype=e,Q()}return p(`div`,{style:{height:`100%`,width:`100%`,display:`flex`,alignItems:`center`,padding:`0 10px`,gap:`14px`,flexWrap:`wrap`}},[...n.map(e=>p(`label`,{style:{display:`inline-flex`,alignItems:`center`,fontSize:`10px`,color:`#333`}},[p(`input`,{type:`radio`,name:`basetype-${t.id}`,style:{width:`16px`,height:`16px`,marginRight:`6px`,accentColor:`#1677ff`,cursor:`default`},value:e.value,checked:t.basetype==Number(e.value),onInput:()=>r(e.value)}),e.label]))])}}}),Ot=[{headerName:A(`pricingScale.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:A(`pricingScale.columns.projecttype`),minWidth:200,flex:1.9,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},cellRenderer:Tt},{headerName:A(`pricingScale.columns.base`),field:`amount`,minWidth:120,flex:1,editable:!0,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueFormatter:e=>e.value||A(`pricingScale.columns.enterdata`),cellClass:` remark-wrap-cell`,cellClassRules:{"editable-cell-empty":e=>e.value==null||e.value===``}},{headerName:A(`pricingScale.columns.computbase`),field:`computbase`,headerClass:`ag-right-aligned-header`,minWidth:372,cellRenderer:Et},{headerName:A(`pricingScale.columns.basetype`),field:`basetype`,headerClass:`ag-right-aligned-header`,minWidth:372,cellRenderer:Dt},{headerName:A(`pricingScale.columns.formula`),field:`optionalFormula`,minWidth:200,flex:1.5,editable:!1,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueFormatter:e=>e.value||``},{headerName:A(`pricingScale.columns.calculationAmount`),field:`budgetFee`,headerClass:`ag-right-aligned-header`,minWidth:120,flex:1,editable:!1,cellClassRules:{"ag-right-aligned-cell":()=>!0}},{headerName:A(`pricingScale.columns.calculation`),marryChildren:!0,children:[{headerName:A(`pricingScale.columns.workStageFactor`),field:`workStageFactor`,headerClass:`ag-right-aligned-header`,minWidth:80,flex:1,editable:!1,valueFormatter:e=>e.node?.rowPinned===`bottom`?`/`:w(e)},{headerName:A(`pricingScale.columns.workRatio`),field:`workRatio`,headerClass:`ag-right-aligned-header`,minWidth:80,flex:1,editable:e=>!e.node?.group&&!e.node?.rowPinned,cellClass:e=>!e.node?.group&&!e.node?.rowPinned?`editable-cell-line`:``,cellClassRules:{"ag-right-aligned-cell":()=>!0,"editable-cell-empty":e=>!e.node?.group&&!e.node?.rowPinned&&(e.value==null||e.value===``)},valueParser:e=>_(e.newValue,{precision:2}),valueFormatter:e=>e.node?.rowPinned===`bottom`?`/`:w(e,2)},{headerName:A(`pricingScale.columns.serviceFee`),field:`serviceFee`,colId:`serviceFeeTotal`,headerClass:`ag-right-aligned-header`,minWidth:120,flex:1,aggFunc:oe,cellClassRules:{"ag-right-aligned-cell":()=>!0},valueGetter:e=>{let t=e.data?.workStageFactor??0,n=e.data?.workRatio??0,r=e.data?.budgetFee??0,i=n*t*r;if(e.node?.rowPinned===`bottom`){let e=W.value.reduce((e,t)=>e+(t.workStageFactor||0)*(t.workRatio||0)*(t.budgetFee||0),0);return Math.round(e)}return Math.round(i)},valueFormatter:Ne}]},{headerName:A(`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?A(`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===``)}}],kt=o(()=>Oe(Ot)),At={headerName:A(`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 st.value;let t=e.data;return t?.majorCode&&t?.majorName?`${t.majorCode} ${t.majorName}`:e.value||``}},jt=o(()=>T(G.value,e=>e.budgetFee)),Mt=o(()=>T(G.value,e=>bt(e)?.basic)),Nt=o(()=>T(G.value,e=>bt(e)?.optional)),Pt=o(()=>T(G.value,e=>e.serviceFee*1e4)),Ft=o(()=>[{id:`pinned-total-row`,groupCode:``,groupName:``,majorCode:``,majorName:st.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:jt.value,budgetFeeBasic:Mt.value,budgetFeeOptional:Nt.value,serviceFee:Pt.value,remark:``,path:[`TOTAL`]}]),Z=()=>{Ae(G.value,`cost`)},Q=async e=>{let t=W.value.map(e=>({...e,type:`${O.contractId}-investment`})),n=await b().upsertBatch(t);console.log(`💾 数据保存成功:`,n)},It=async()=>{},Lt=async e=>{},Rt=e=>String(e.data?.id||``),zt={...we,getRowId:Rt,groupDefaultExpanded:-1,groupHideOpenParents:!0},Bt=o(()=>JSON.stringify({consultFactorChange:k.keyedStates[P.value]??M.entries[P.value]??null,majorFactorChange:k.keyedStates[F.value]??M.entries[F.value]??null})),Vt=o(()=>JSON.stringify(M.entries[N.value]??null)),Ht=async e=>[],Ut=e=>{G.value=e.map(e=>({...e,benchmarkBudgetBasicChecked:typeof e.benchmarkBudgetBasicChecked==`boolean`?e.benchmarkBudgetBasicChecked:!0,benchmarkBudgetOptionalChecked:typeof e.benchmarkBudgetOptionalChecked==`boolean`?e.benchmarkBudgetOptionalChecked:!0}))},Wt=async()=>{if(mt(),G.value.length===0){L.value?.refreshCells({force:!0});return}let e=new Map;for(let t of q){e.set(t.id,{groupCode:t.code,groupName:t.name,majorCode:t.code,majorName:t.name});for(let n of t.children)e.set(n.id,{groupCode:t.code,groupName:t.name,majorCode:n.code,majorName:n.name})}let t=!1;G.value=G.value.map(n=>{let r=e.get(x(n));return!r||n.groupCode===r.groupCode&&n.groupName===r.groupName&&n.majorCode===r.majorCode&&n.majorName===r.majorName?n:(t=!0,{...n,groupCode:r.groupCode,groupName:r.groupName,majorCode:r.majorCode,majorName:r.majorName})}),L.value?.refreshCells({force:!0}),t&&(Z(),await Q({skipComputedSync:!0}))},Gt=(e,t)=>({...e,...t,id:e.id,projectIndex:e.projectIndex,majorDictId:e.majorDictId,groupCode:e.groupCode,groupName:e.groupName,majorCode:e.majorCode,majorName:e.majorName,hasCost:e.hasCost,hasArea:e.hasArea,path:e.path}),Kt=async()=>{Z(),await Q({skipComputedSync:!0})},qt=async e=>{await ze({nextValue:e,setProjectCount:e=>{B.value=e},isMutipleService:z.value,currentRows:G.value,cloneRows:e=>e.map(e=>({...e})),normalizeProjectCount:V,inferProjectCountFromRows:e=>ot(e),buildRowsForReducedCount:(e,t)=>R.value?vt(e,{projectCount:t}):yt(e,{projectCount:t}),buildRowsFromImportDefaultSource:Ht,getRowKey:e=>Be(e),getRowProjectIndex:e=>C(e),mergeExistingRow:Gt,applyRows:Ut,afterApplyRows:Kt})},Jt=async()=>{await ct();try{let e=await b().query([{field:`type`,value:`${O.contractId}-investment`,operator:`eq`}]),t=await J();if(e&&e.length>0){let n=new Map(e.map(e=>[e.majorCode,{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||``),computbase:Number(e.computbase||``),basetype:Number(e.basetype||``)}])),r=t.map(e=>{let t=n.get(e.majorCode);return t?{...t,majorName:e.majorName}:e});W.value=r,console.log(`✅ 从数据库加载数据(保持默认顺序)`,r);return}console.log(`🆕 首次进入,加载默认数据`),W.value=t}catch(e){console.error(`loadFromIndexedDB error:`,e),W.value=await J()}},Yt=async()=>{try{let e=b(),t=await e.query([{field:`type`,value:`${O.contractId}-investment`,operator:`eq`}]);t.length&&await e.deleteBatch(t.map(e=>e.id));let n=await J();await e.upsertBatch(n),W.value=n,console.log(`✅ 成功覆盖默认数据`)}catch(e){console.error(`❌ 覆盖默认数据失败`,e)}},Xt=async()=>{try{let e=(await b().query([{field:`type`,value:`${O.contractId}-investment`,operator:`eq`}])).map(e=>e.id);await b().deleteBatch(e),W.value=await J(),console.log(`✅ 清空成功!`)}catch(e){console.error(`❌ 清空失败`,e)}},Zt=async e=>{await r(),Z(),L.value?.refreshHeader(),L.value?.refreshCells({force:!0}),await Q({skipComputedSync:!0}),await r(),L.value?.refreshHeader(),L.value?.refreshCells({force:!0})},Qt=e=>{let t=e.data;if((e.column?.getColId()||e.column?.getColDef().field)&&t){let n=Number(e.newValue)||0,r=t.groupCode||t.majorCode||``;if(r&&n>0){let{formula:e,amount:i,base:a}=ut(r,n);t.optionalFormula=e,t.budgetFee=i,t.base=a,t.serviceFee=dt(t)}else t.optionalFormula=``,t.budgetFee=0,t.base=``,t.serviceFee=0;e.api.applyTransaction({update:[t]}),ft(),Q()}Q()},$t=()=>{},$=e=>{Zt(e?.type||`bulk-end`)},en=e=>{L.value=e.api};Fe({gridApi:L,loadFromIndexedDB:Jt,syncLinkedFields:It,linkedSourceSignature:Bt,linkedSecondarySignature:Vt,syncSecondaryLinkedFields:()=>Lt((M.entries[N.value]??void 0)?.changedRowIds),saveToIndexedDB:()=>Q()}),ee(()=>j.value,()=>{Wt()}),ee(()=>b().items,async e=>{Object.keys(e).length>0&&Jt()},{immediate:!0,deep:!0});let tn=e=>Array.isArray(e.value)?JSON.stringify(e.value):e.value,nn=e=>{let t=String(e.column?.getColDef?.().field||``);if(t===`amount`||t===`consultCategoryFactor`||t===`majorFactor`||t===`workStageFactor`)return _(e.value,{precision:3});if(t===`workRatio`)return _(e.value,{precision:2});try{let t=JSON.parse(e.value);if(Array.isArray(t))return t}catch{}return e.value};return c(async()=>{await St(),wt=Ct.value}),(r,o)=>(t(),s(`div`,He,[u(`div`,Ue,[u(`div`,We,[u(`div`,Ge,[u(`h3`,Ke,i(f(A)(`pricingPane.investment.title`)),1),z.value?(t(),s(`div`,qe,[u(`span`,Je,i(f(A)(`pricingPane.projectCount`)),1),e(f(le),{modelValue:B.value,"onUpdate:modelValue":[o[0]||=e=>B.value=e,o[1]||=e=>void qt(e)],min:1,step:1,class:`inline-flex items-center rounded-md border bg-background`},{default:h(()=>[e(f(se),{class:`cursor-pointer px-2 py-1 text-xs text-muted-foreground hover:bg-muted`},{default:h(()=>[...o[2]||=[l(`-`,-1)]]),_:1}),e(f(ce),{class:`h-7 w-14 border-x bg-transparent px-2 text-center text-xs outline-none`}),e(f(ve),{class:`cursor-pointer px-2 py-1 text-xs text-muted-foreground hover:bg-muted`},{default:h(()=>[...o[3]||=[l(`+`,-1)]]),_:1})]),_:1},8,[`modelValue`])])):a(``,!0)]),u(`div`,Ye,[e(f(_e),null,{default:h(()=>[e(f(de),null,{default:h(()=>[e(f(fe),{class:`fixed inset-0 z-50 bg-black/45`}),e(f(me),{class:`fixed left-1/2 top-1/2 z-50 w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:h(()=>[e(f(g),{class:`text-base font-semibold`},{default:h(()=>[l(i(f(A)(`pricingPane.clearTitle`)),1)]),_:1}),e(f(ge),{class:`mt-2 text-sm text-muted-foreground`},{default:h(()=>[l(i(f(A)(`pricingPane.investment.clearDesc`)),1)]),_:1}),u(`div`,Xe,[e(f(he),{"as-child":``},{default:h(()=>[e(f(y),{variant:`outline`},{default:h(()=>[l(i(f(A)(`common.cancel`)),1)]),_:1})]),_:1}),e(f(pe),{"as-child":``},{default:h(()=>[e(f(y),{variant:`destructive`,onClick:Yt},{default:h(()=>[l(i(f(A)(`pricingPane.confirmClear`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1}),e(f(_e),null,{default:h(()=>[e(f(ue),{"as-child":``},{default:h(()=>[e(f(y),{type:`button`,variant:`outline`,size:`sm`},{default:h(()=>[l(i(f(A)(`pricingPane.useDefault`)),1)]),_:1})]),_:1}),e(f(de),null,{default:h(()=>[e(f(fe),{class:`fixed inset-0 z-50 bg-black/45`}),e(f(me),{class:`fixed left-1/2 top-1/2 z-50 w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:h(()=>[e(f(g),{class:`text-base font-semibold`},{default:h(()=>[l(i(f(A)(`pricingPane.overrideTitle`)),1)]),_:1}),e(f(ge),{class:`mt-2 text-sm text-muted-foreground`},{default:h(()=>[l(i(f(A)(`pricingPane.investment.overrideDesc`)),1)]),_:1}),u(`div`,Ze,[e(f(he),{"as-child":``},{default:h(()=>[e(f(y),{variant:`outline`},{default:h(()=>[l(i(f(A)(`common.cancel`)),1)]),_:1})]),_:1}),e(f(pe),{"as-child":``},{default:h(()=>[e(f(y),{onClick:Xt},{default:h(()=>[l(i(f(A)(`pricingPane.confirmOverride`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1})])]),u(`div`,{class:te(f(Te))},[e(f(ne),{style:n(f(De)),rowData:G.value,pinnedBottomRowData:Ft.value,columnDefs:kt.value,autoGroupColumnDef:At,gridOptions:zt,theme:f(Ee),animateRows:!0,context:{contractId:O.contractId},onGridReady:en,onCellValueChanged:Qt,suppressColumnVirtualisation:!0,onPasteStart:$t,onPasteEnd:$,onFillStart:$t,onFillEnd:$,suppressRowVirtualisation:!0,cellSelection:{handle:{mode:`range`}},enableClipboard:!0,localeText:f(Ce),tooltipShowDelay:500,headerHeight:50,processCellForClipboard:tn,processCellFromClipboard:nn,undoRedoCellEditing:!0,undoRedoCellEditingLimit:20},null,8,[`style`,`rowData`,`pinnedBottomRowData`,`columnDefs`,`theme`,`context`,`localeText`])],2)])]))}});export{D as default};