From 5bb6609ef882fbbf8a9a323c02ef1db0a3466c6f Mon Sep 17 00:00:00 2001
From: wintsa <770775984@qq.com>
Date: Tue, 10 Mar 2026 15:50:07 +0800
Subject: [PATCH] fix bug
---
public/基础参数及报表导出功能.js | 362 +-----------
src/components/common/HourlyFeeGrid.vue | 550 ++++++++++++++++++
src/components/common/HtFeeGrid.vue | 187 +++++-
src/components/common/HtFeeMethodGrid.vue | 324 +++++++++--
src/components/views/HtAdditionalWorkFee.vue | 4 +-
.../views/HtFeeMethodTypeLineView.vue | 84 ++-
src/components/views/HtFeeRateMethodForm.vue | 223 +++++++
src/components/views/HtReserveFee.vue | 2 +-
src/components/views/htCard.vue | 2 +-
.../views/pricingView/HourlyPricingPane.vue | 497 +---------------
.../InvestmentScalePricingPane.vue | 18 +-
.../pricingView/LandScalePricingPane.vue | 19 +-
.../views/pricingView/WorkloadPricingPane.vue | 19 +-
src/components/views/zxFw.vue | 42 +-
src/layout/tab.vue | 2 +-
src/pinia/htFeeMethodReload.ts | 34 ++
src/pinia/pricingPaneReload.ts | 55 +-
tsconfig.tsbuildinfo | 2 +-
18 files changed, 1447 insertions(+), 979 deletions(-)
create mode 100644 src/components/common/HourlyFeeGrid.vue
create mode 100644 src/components/views/HtFeeRateMethodForm.vue
create mode 100644 src/pinia/htFeeMethodReload.ts
diff --git a/public/基础参数及报表导出功能.js b/public/基础参数及报表导出功能.js
index de3a319..aae68e3 100644
--- a/public/基础参数及报表导出功能.js
+++ b/public/基础参数及报表导出功能.js
@@ -186,367 +186,7 @@ function getBasicFeeFromScale(scaleValue, scaleType) {
return res;
}
-let data1 = {
- name: 'test001',
- writer: '张三',// 编制人
- reviewer: '李四',// 复核人
- company: '测试公司',// 公司名称
- date: '2021-09-24',// 编制日期
- industry: 0,// 0为公路工程,1为铁路工程,2为水运工程
- fee: 10000,
- scaleCost: 100000,// scale的cost的合计数
- scale: [// 规模信息
- {
- major: 0,
- cost: 100000,
- area: 200,
- },
- {
- major: 1,
- cost: 100000,
- area: 200,
- },
- ],
- serviceCoes: [// 项目咨询分类系数
- {
- serviceid: 0,
- coe: 1.1,
- remark: '',// 用户输入的说明
- },
- {
- serviceid: 1,
- coe: 1.2,
- remark: '',// 用户输入的说明
- },
- ],
- majorCoes: [// 项目工程专业系数
- {
- majorid: 0,
- coe: 1.1,
- remark: '',// 用户输入的说明
- },
- {
- majorid: 1,
- coe: 1.2,
- remark: '',// 用户输入的说明
- },
- ],
- contracts: [// 合同段信息
- {
- name: 'A合同段',
- serviceFee: 100000,
- addtionalFee: 0,
- reserveFee: 0,
- fee: 10000,
- scale: [
- {
- major: 0,
- cost: 100000,
- area: 200,
- },
- {
- major: 1,
- cost: 100000,
- area: 200,
- },
- ],
- serviceCoes: [// 合同段咨询分类系数
- {
- serviceid: 0,
- coe: 1.1,
- remark: '',// 用户输入的说明
- },
- {
- serviceid: 1,
- coe: 1.2,
- remark: '',// 用户输入的说明
- },
- ],
- majorCoes: [// 合同段工程专业系数
- {
- majorid: 0,
- coe: 1.1,
- remark: '',// 用户输入的说明
- },
- {
- majorid: 1,
- coe: 1.2,
- remark: '',// 用户输入的说明
- },
- ],
- services: [
- {
- id: 0,
- fee: 100000,
- process: 0,// 工作环节,0为编制,1为审核
- method1: { // 投资规模法
- cost: 100000,
- basicFee: 200,
- basicFee_basic: 200,
- basicFee_optional: 0,
- fee: 250000,
- proAmount: 3,
- det: [
- {
- proNum: 1,
- major: 0,
- cost: 100000,
- basicFee: 200,
- basicFormula: '856,000+(1,000,000,000-500,000,000)×1‰',
- basicFee_basic: 200,
- optionalFormula: '171,200+(1,000,000,000-500,000,000)×0.2‰',
- basicFee_optional: 0,
- serviceCoe: 1.1,
- majorCoe: 1.2,
- processCoe: 1,// 工作环节系数(编审系数)
- proportion: 0.5,// 工作占比
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- ],
- },
- method2: { // 用地规模法
- area: 1200,
- basicFee: 200,
- basicFee_basic: 200,
- basicFee_optional: 0,
- fee: 250000,
- proAmount: 3,
- det: [
- {
- proNum: 1,
- major: 0,
- area: 1200,
- basicFee: 200,
- basicFormula: '106,000+(1,200-1,000)×60',
- basicFee_basic: 200,
- optionalFormula: '21,200+(1,200-1,000)×12',
- basicFee_optional: 0,
- serviceCoe: 1.1,
- majorCoe: 1.2,
- processCoe: 1,// 工作环节系数(编审系数)
- proportion: 0.5,// 工作占比
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- ],
- },
- method3: { // 工作量法
- basicFee: 200,
- fee: 250000,
- det: [
- {
- task: 0,
- price: 100000,
- amount: 10,
- basicFee: 200,
- serviceCoe: 1.1,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- {
- task: 1,
- price: 100000,
- amount: 10,
- basicFee: 200,
- serviceCoe: 1.1,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- ],
- },
- method4: { // 工时法
- person_num: 10,
- work_day: 10,
- fee: 250000,
- det: [
- {
- expert: 0,
- price: 100000,
- person_num: 10,
- work_day: 3,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- {
- expert: 1,
- price: 100000,
- person_num: 10,
- work_day: 3,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- ],
- },
- },
- ],
- addtional: {// 附加工作费
- ref: { richText: [{ font: { charset: 134, color: { theme: 1 }, italic: true, name: '宋体', size: 10 }, text: 'C' }, { font: { charset: 134, color: { theme: 1 }, italic: true, name: 'Calibri', size: 10, vertAlign: 'subscript' }, text: 'C' }] },
- name: '附加工作',
- fee: 10000,
- det: [
- {
- id: 0,
- ref: { richText: [{ font: { charset: 134, color: { theme: 1 }, italic: true, name: '宋体', size: 10 }, text: 'C' }, { font: { charset: 134, color: { theme: 1 }, italic: true, name: 'Calibri', size: 10, vertAlign: 'subscript' }, text: 'F' }] },
- name: '人员驻场服务及其他附加工作',
- fee: 10000,
- m4: { //工时
- person_num: 10,
- work_day: 3,
- fee: 10000,
- det: [
- {
- expert: 0,
- price: 100000,
- person_num: 10,
- work_day: 3,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- {
- expert: 1,
- price: 100000,
- person_num: 10,
- work_day: 3,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- ],
- },
- m5: { //数量单价
- fee: 10000,
- det: [
- {
- name: '×××项',
- unit: '项',
- amount: 10,
- price: 100000,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- {
- name: '×××项',
- unit: '项',
- amount: 10,
- price: 100000,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- ],
- },
- },
- {
- id: 1,
- ref: { richText: [{ font: { charset: 134, color: { theme: 1 }, italic: true, name: '宋体', size: 10 }, text: 'C' }, { font: { charset: 134, color: { theme: 1 }, italic: true, name: 'Calibri', size: 10, vertAlign: 'subscript' }, text: 'X' }] },
- name: '咨询服务协调工作',
- fee: 10000,
- m0: {
- coe: 0.03,
- fee: 10000,
- },
- m4: {
- person_num: 10,
- work_day: 3,
- fee: 10000,
- det: [
- {
- expert: 0,
- price: 100000,
- person_num: 10,
- work_day: 3,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- {
- expert: 1,
- price: 100000,
- person_num: 10,
- work_day: 3,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- ],
- },
- m5: {
- fee: 10000,
- det: [
- {
- name: '×××项',
- unit: '项',
- amount: 10,
- price: 100000,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- {
- name: '×××项',
- unit: '项',
- amount: 10,
- price: 100000,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- ],
- },
- },
- ]
- },
- reserve: {// 预备费
- ref: { richText: [{ font: { charset: 134, color: { theme: 1 }, italic: true, name: '宋体', size: 10 }, text: 'Y' }, { font: { charset: 134, color: { theme: 1 }, italic: true, name: 'Calibri', size: 10, vertAlign: 'subscript' }, text: 'B' }] },
- name: '预备费',
- fee: 10000,
- m0: {
- coe: 0.03,
- fee: 10000,
- },
- m4: {
- person_num: 10,
- work_day: 3,
- fee: 10000,
- det: [
- {
- expert: 0,
- price: 100000,
- person_num: 10,
- work_day: 3,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- {
- expert: 1,
- price: 100000,
- person_num: 10,
- work_day: 3,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- ],
- },
- m5: {
- fee: 10000,
- det: [
- {
- name: '×××项',
- unit: '项',
- amount: 10,
- price: 100000,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- {
- name: '×××项',
- unit: '项',
- amount: 10,
- price: 100000,
- fee: 100000,
- remark: '',// 用户输入的说明
- },
- ],
- }
- },
- },
- ],
-};
+
let data2 = {
name: 'test001',
diff --git a/src/components/common/HourlyFeeGrid.vue b/src/components/common/HourlyFeeGrid.vue
new file mode 100644
index 0000000..1d98696
--- /dev/null
+++ b/src/components/common/HourlyFeeGrid.vue
@@ -0,0 +1,550 @@
+
+
+
+
+
diff --git a/src/components/common/HtFeeGrid.vue b/src/components/common/HtFeeGrid.vue
index fbb27b6..4fe1cff 100644
--- a/src/components/common/HtFeeGrid.vue
+++ b/src/components/common/HtFeeGrid.vue
@@ -1,13 +1,26 @@
diff --git a/src/components/views/HtFeeRateMethodForm.vue b/src/components/views/HtFeeRateMethodForm.vue
new file mode 100644
index 0000000..50fe38f
--- /dev/null
+++ b/src/components/views/HtFeeRateMethodForm.vue
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/views/HtReserveFee.vue b/src/components/views/HtReserveFee.vue
index 3f1150b..3ba0f66 100644
--- a/src/components/views/HtReserveFee.vue
+++ b/src/components/views/HtReserveFee.vue
@@ -10,5 +10,5 @@ const STORAGE_KEY = computed(() => `htExtraFee-${props.contractId}-reserve`)
-
+
diff --git a/src/components/views/htCard.vue b/src/components/views/htCard.vue
index 1d0ebcd..73c841d 100644
--- a/src/components/views/htCard.vue
+++ b/src/components/views/htCard.vue
@@ -99,7 +99,7 @@ const additionalWorkFeeView = markRaw(
console.error('加载 HtAdditionalWorkFee 组件失败:', err);
}
});
- return () => h(AsyncHtAdditionalWorkFee, { contractId: props.contractId });
+ return () => h(AsyncHtAdditionalWorkFee, { contractId: props.contractId, contractName: props.contractName });
}
})
);
diff --git a/src/components/views/pricingView/HourlyPricingPane.vue b/src/components/views/pricingView/HourlyPricingPane.vue
index 3235330..541612c 100644
--- a/src/components/views/pricingView/HourlyPricingPane.vue
+++ b/src/components/views/pricingView/HourlyPricingPane.vue
@@ -1,495 +1,22 @@
-
+
diff --git a/src/components/views/pricingView/InvestmentScalePricingPane.vue b/src/components/views/pricingView/InvestmentScalePricingPane.vue
index 291af29..f952aa2 100644
--- a/src/components/views/pricingView/InvestmentScalePricingPane.vue
+++ b/src/components/views/pricingView/InvestmentScalePricingPane.vue
@@ -8,7 +8,7 @@ import { myTheme, gridOptions } from '@/lib/diyAgGridOptions'
import { addNumbers, decimalAggSum, roundTo, sumByNumber } from '@/lib/decimal'
import { formatThousandsFlexible } from '@/lib/numberFormat'
import { syncPricingTotalToZxFw, ZXFW_RELOAD_SERVICE_KEY } from '@/lib/zxFwPricingSync'
-import { usePricingPaneReloadStore } from '@/pinia/pricingPaneReload'
+import { matchPricingPaneReload, usePricingPaneReloadStore } from '@/pinia/pricingPaneReload'
import { loadConsultCategoryFactorMap, loadMajorFactorMap } from '@/lib/xmFactorDefaults'
import { parseNumberOrNull } from '@/lib/number'
import { getBenchmarkBudgetSplitByScale, getScaleBudgetFeeSplit } from '@/lib/pricingScaleFee'
@@ -93,6 +93,7 @@ const props = defineProps<{
contractId: string,
serviceId: string | number
}>()
+const pricingPaneReloadStore = usePricingPaneReloadStore()
const DB_KEY = computed(() => `tzGMF-${props.contractId}-${props.serviceId}`)
const HT_DB_KEY = computed(() => `ht-info-v3-${props.contractId}`)
const HT_CONSULT_FACTOR_KEY = computed(() => `ht-consult-category-factor-v1-${props.contractId}`)
@@ -101,11 +102,11 @@ const BASE_INFO_KEY = 'xm-base-info-v1'
const activeIndustryCode = ref('')
const PRICING_CLEAR_SKIP_PREFIX = 'pricing-clear-skip:'
const PRICING_FORCE_DEFAULT_PREFIX = 'pricing-force-default:'
-const pricingPaneReloadStore = usePricingPaneReloadStore()
const consultCategoryFactorMap = ref