From 85eb501a428f14a6c6242f3321c5b4b86a44253e Mon Sep 17 00:00:00 2001 From: wintsa <770775984@qq.com> Date: Thu, 26 Mar 2026 16:43:58 +0800 Subject: [PATCH] 1 --- .dockerignore | 7 + Dockerfile.dist | 18 + docker/dist-server/go.mod | 3 + docker/dist-server/main.go | 69 + index.html | 4 +- public/data.js | 372 ----- public/基础参数及报表导出功能.js | 1918 -------------------------- public/标准文件转代码Data.xlsx | Bin 122254 -> 0 bytes public/造价咨询服务计费报表模板.xlsx | Bin 42648 -> 0 bytes scripts/package-dist-image.ps1 | 45 + tsconfig.tsbuildinfo | 2 +- 11 files changed, 145 insertions(+), 2293 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile.dist create mode 100644 docker/dist-server/go.mod create mode 100644 docker/dist-server/main.go delete mode 100644 public/data.js delete mode 100644 public/基础参数及报表导出功能.js delete mode 100644 public/标准文件转代码Data.xlsx delete mode 100644 public/造价咨询服务计费报表模板.xlsx create mode 100644 scripts/package-dist-image.ps1 diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..22909d0 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +** +!dist/ +!dist/** +!Dockerfile.dist +!docker/ +!docker/dist-server/ +!docker/dist-server/** diff --git a/Dockerfile.dist b/Dockerfile.dist new file mode 100644 index 0000000..4236d28 --- /dev/null +++ b/Dockerfile.dist @@ -0,0 +1,18 @@ +FROM golang:1.24-alpine AS builder + +WORKDIR /src + +COPY docker/dist-server/ ./ + +RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" -o /out/dist-server . + +FROM scratch + +WORKDIR /www + +COPY --from=builder /out/dist-server /dist-server +COPY dist/ /www/ + +EXPOSE 80 + +ENTRYPOINT ["/dist-server"] diff --git a/docker/dist-server/go.mod b/docker/dist-server/go.mod new file mode 100644 index 0000000..80bc90b --- /dev/null +++ b/docker/dist-server/go.mod @@ -0,0 +1,3 @@ +module dist-server + +go 1.24 diff --git a/docker/dist-server/main.go b/docker/dist-server/main.go new file mode 100644 index 0000000..adf127d --- /dev/null +++ b/docker/dist-server/main.go @@ -0,0 +1,69 @@ +package main + +import ( + "log" + "net/http" + "os" + "path/filepath" + "strings" +) + +const ( + defaultPort = "80" + webRoot = "/www" + indexName = "index.html" +) + +func main() { + port := strings.TrimSpace(os.Getenv("PORT")) + if port == "" { + port = defaultPort + } + + server := &http.Server{ + Addr: ":" + port, + Handler: http.HandlerFunc(serve), + } + + log.Printf("dist server listening on :%s", port) + if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed { + log.Fatal(err) + } +} + +func serve(w http.ResponseWriter, r *http.Request) { + requestPath := strings.TrimPrefix(filepath.Clean("/"+r.URL.Path), "/") + if requestPath == "." || requestPath == "" { + serveIndex(w, r) + return + } + + fullPath := filepath.Join(webRoot, filepath.FromSlash(requestPath)) + if info, err := os.Stat(fullPath); err == nil && !info.IsDir() { + applyAssetCacheHeaders(w, requestPath) + http.ServeFile(w, r, fullPath) + return + } + + serveIndex(w, r) +} + +func serveIndex(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Cache-Control", "no-cache") + w.Header().Set("Pragma", "no-cache") + w.Header().Set("Expires", "0") + http.ServeFile(w, r, filepath.Join(webRoot, indexName)) +} + +func applyAssetCacheHeaders(w http.ResponseWriter, requestPath string) { + if strings.EqualFold(requestPath, indexName) { + w.Header().Set("Cache-Control", "no-cache") + w.Header().Set("Pragma", "no-cache") + w.Header().Set("Expires", "0") + return + } + + if strings.HasPrefix(requestPath, "static/") { + w.Header().Set("Cache-Control", "public, max-age=31536000, immutable") + } +} diff --git a/index.html b/index.html index e76de1c..f13b71e 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,7 @@
- --> diff --git a/public/data.js b/public/data.js deleted file mode 100644 index 0b74662..0000000 --- a/public/data.js +++ /dev/null @@ -1,372 +0,0 @@ -let data1 = { - name: 'test001', - writer: '张三',// 编制人 - reviewer: '李四',// 复核人 - company: '测试公司',// 公司名称 - date: '2021-09-24',// 编制日期 - industry: 0,// 0为公路工程,1为铁路工程,2为水运工程 - fee: 10000, - scaleCost: 100000,// scale的cost的合计数 - overview: '项目概况××××', - desc: '在履行造价咨询服务时,宜根据咨询服务质量情况分级确定相应的处罚金额。其中考评得分在大于及等于85和小于90分时,处罚金额为预算费用的10%;其中考评得分在大于及等于80和小于85分时,处罚金额为预算费用的20%;其中考评得分在大于及等于75和小于80分时,处罚金额为预算费用的30%;其中考评得分在大于及等于70和小于75分时,处罚金额为预算费用的40%;其中考评得分小于70分时,处罚金额为预算费用的50%以上。', - 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, - quality: '造价咨询服务的综合评价应达到“较好”或综合评分90分', - duration: '自xxxx年xx月开始至xxxx年xx月结束,服务周期xx个月。', - 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: 250000,//小计 - finalFee: 250000,//确认金额 - 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: '',// 用户输入的说明 - }, - ], - }, - tasks: [{ serviceid: 0, text: ['abc', 'efg'] }, - { serviceid: 2,text: ['abc', 'efg'] } //tasks不分组的时候传单对象[{text: ['abc', 'efg']}],分组的时候传分组的服务id[{ serviceid: 0, text: ['abc', 'efg'] },...] - ],// 工作内容 - }, - ], - addtional: {// 附加工作费 - code: { 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, - code: { 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: '',// 用户输入的说明 - }, - ], - }, - tasks:[] - }, - { - id: 1, - code: { 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: '',// 用户输入的说明 - }, - ], - }, - tasks:[] - }, - ] - }, - reserve: {// 预备费 - code: { 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, - tasks:[], - 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: '',// 用户输入的说明 - }, - ], - } - }, - }, - ], -}; \ No newline at end of file diff --git a/public/基础参数及报表导出功能.js b/public/基础参数及报表导出功能.js deleted file mode 100644 index 32e56ce..0000000 --- a/public/基础参数及报表导出功能.js +++ /dev/null @@ -1,1918 +0,0 @@ -let majorList = { - 0: { code: 'E1', name: '交通运输工程通用专业', maxCoe: null, minCoe: null, defCoe: null, desc: '', isRoad: true, isRailway: true, isWaterway: true, order: 1, hasCost: false, hasArea: false }, - 1: { code: 'E1-1', name: '征地(用海)补偿', maxCoe: null, minCoe: null, defCoe: 1, desc: '适用于交通建设项目征地(用海)补偿的施工图预算、招标工程量清单及清单预算(或最高投标限价)、清理概算(仅限铁路工程)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: true, isRailway: true, isWaterway: true, order: 2, hasCost: true, hasArea: true }, - 2: { code: 'E1-2', name: '拆迁补偿', maxCoe: null, minCoe: null, defCoe: 2.5, desc: '适用于交通建设项目拆迁补偿的施工图预算、招标工程量清单及清单预算(或最高投标限价)、清理概算(仅限铁路工程)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: true, isRailway: true, isWaterway: true, order: 3, hasCost: true, hasArea: true }, - 3: { code: 'E1-3', name: '迁改工程', maxCoe: null, minCoe: null, defCoe: 2, desc: '适用于交通建设项目迁改工程的施工图预算、招标工程量清单及清单预算(或最高投标限价)、清理概算(仅限铁路工程)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: true, isRailway: true, isWaterway: true, order: 4, hasCost: true, hasArea: false }, - 4: { code: 'E1-4', name: '工程建设其他费', maxCoe: null, minCoe: null, defCoe: 1, desc: '适用于交通建设项目的工程建设其他费的施工图预算、招标工程量清单及清单预算(或最高投标限价)、清理概算(仅限铁路工程)和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: true, isRailway: true, isWaterway: true, order: 5, hasCost: true, hasArea: false }, - 5: { code: 'E1-5', name: '预备费', maxCoe: null, minCoe: null, defCoe: 1, desc: '', isRoad: true, isRailway: true, isWaterway: true, order: 6, hasCost: true, hasArea: false }, - 6: { code: 'E1-6', name: '建设期贷款利息', maxCoe: null, minCoe: null, defCoe: 1, desc: '', isRoad: true, isRailway: true, isWaterway: true, order: 7, hasCost: true, hasArea: false }, - 7: { code: 'E2', name: '公路工程专业', maxCoe: null, minCoe: null, defCoe: 1, desc: '适用于公路工程的全过程造价咨询、分阶段造价咨询、投资估算、初步设计概算、竣工决算和调整估算、调整概算(含征地拆迁和工程建设其他费)', isRoad: true, isRailway: false, isWaterway: false, order: 8, hasCost: false, hasArea: false }, - 8: { code: 'E2-1', name: '临时工程', maxCoe: null, minCoe: null, defCoe: 1, desc: '适用于临时工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: true, isRailway: false, isWaterway: false, order: 9, hasCost: true, hasArea: false }, - 9: { code: 'E2-2', name: '路基工程', maxCoe: null, minCoe: null, defCoe: 1.2, desc: '适用于路基工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: true, isRailway: false, isWaterway: false, order: 10, hasCost: true, hasArea: false }, - 10: { code: 'E2-3', name: '路面工程', maxCoe: null, minCoe: null, defCoe: 0.8, desc: '适用于路面工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: true, isRailway: false, isWaterway: false, order: 11, hasCost: true, hasArea: false }, - 11: { code: 'E2-4', name: '桥涵工程', maxCoe: null, minCoe: null, defCoe: 0.9, desc: '适用于桥梁涵洞工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: true, isRailway: false, isWaterway: false, order: 12, hasCost: true, hasArea: false }, - 12: { code: 'E2-5', name: '隧道工程', maxCoe: null, minCoe: null, defCoe: 1, desc: '适用于隧道工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: true, isRailway: false, isWaterway: false, order: 13, hasCost: true, hasArea: false }, - 13: { code: 'E2-6', name: '交叉工程', maxCoe: null, minCoe: null, defCoe: 1.1, desc: '适用于交叉工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: true, isRailway: false, isWaterway: false, order: 14, hasCost: true, hasArea: false }, - 14: { code: 'E2-7', name: '机电工程', maxCoe: null, minCoe: null, defCoe: 1.2, desc: '适用于机电工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: true, isRailway: false, isWaterway: false, order: 15, hasCost: true, hasArea: false }, - 15: { code: 'E2-8', name: '交通安全设施工程', maxCoe: null, minCoe: null, defCoe: 1.2, desc: '适用于交通安全设施工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: true, isRailway: false, isWaterway: false, order: 16, hasCost: true, hasArea: false }, - 16: { code: 'E2-9', name: '绿化及环境保护工程', maxCoe: null, minCoe: null, defCoe: 1.2, desc: '适用于绿化工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: true, isRailway: false, isWaterway: false, order: 17, hasCost: true, hasArea: false }, - 17: { code: 'E2-10', name: '房建工程', maxCoe: null, minCoe: null, defCoe: 2.5, desc: '适用于房建工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: true, isRailway: false, isWaterway: false, order: 18, hasCost: true, hasArea: false }, - 18: { code: 'E3', name: '铁路工程专业', maxCoe: null, minCoe: null, defCoe: 1, desc: '适用于铁路工程的投资估算、初步设计概算、清理概算、竣工决算和调整估算、调整概算(含征地拆迁和工程建设其他费)', isRoad: false, isRailway: true, isWaterway: false, order: 19, hasCost: false, hasArea: false }, - 19: { code: 'E3-1', name: '大型临时设施和过渡工程', maxCoe: null, minCoe: null, defCoe: 1, desc: '适用于大型临时设施和过渡工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: false, isRailway: true, isWaterway: false, order: 20, hasCost: true, hasArea: false }, - 20: { code: 'E3-2', name: '路基工程', maxCoe: null, minCoe: null, defCoe: 1.2, desc: '适用于路基工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: false, isRailway: true, isWaterway: false, order: 21, hasCost: true, hasArea: false }, - 21: { code: 'E3-3', name: '桥涵工程', maxCoe: null, minCoe: null, defCoe: 0.9, desc: '适用于桥涵工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: false, isRailway: true, isWaterway: false, order: 22, hasCost: true, hasArea: false }, - 22: { code: 'E3-4', name: '隧道及明洞工程', maxCoe: null, minCoe: null, defCoe: 1, desc: '适用于隧道及明洞工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算、竣工决算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: false, isRailway: true, isWaterway: false, order: 23, hasCost: true, hasArea: false }, - 23: { code: 'E3-5', name: '轨道工程', maxCoe: null, minCoe: null, defCoe: 0.3, desc: '适用于轨道工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: false, isRailway: true, isWaterway: false, order: 24, hasCost: true, hasArea: false }, - 24: { code: 'E3-6', name: '通信、信号、信息及灾害监测工程', maxCoe: null, minCoe: null, defCoe: 2, desc: '适用于通信、信号、信息及防灾监测工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: false, isRailway: true, isWaterway: false, order: 25, hasCost: true, hasArea: false }, - 25: { code: 'E3-7', name: '电力及电力牵引供电工程', maxCoe: null, minCoe: null, defCoe: 1.5, desc: '适用于电力及电力牵引供电工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: false, isRailway: true, isWaterway: false, order: 26, hasCost: true, hasArea: false }, - 26: { code: 'E3-8', name: '房建工程(房屋建筑及附属工程)', maxCoe: null, minCoe: null, defCoe: 2.5, desc: '适用于房屋建筑及附属工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: false, isRailway: true, isWaterway: false, order: 27, hasCost: true, hasArea: false }, - 27: { code: 'E3-9', name: '装饰装修工程', maxCoe: null, minCoe: null, defCoe: 2.7, desc: '适用于装饰装修工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: false, isRailway: true, isWaterway: false, order: 28, hasCost: true, hasArea: false }, - 28: { code: 'E4', name: '水运工程专业', maxCoe: null, minCoe: null, defCoe: 1, desc: '适用于水运工程的投资估算、初步设计概算、竣工决算和调整估算、调整概算(含征地拆迁和工程建设其他费)', isRoad: false, isRailway: false, isWaterway: true, order: 29, hasCost: false, hasArea: false }, - 29: { code: 'E4-1', name: '临时工程', maxCoe: null, minCoe: null, defCoe: 1.1, desc: '适用于临时工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算、竣工决算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: false, isRailway: false, isWaterway: true, order: 30, hasCost: true, hasArea: false }, - 30: { code: 'E4-2', name: '土建工程', maxCoe: null, minCoe: null, defCoe: 1, desc: '适用于土建工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算、竣工决算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: false, isRailway: false, isWaterway: true, order: 31, hasCost: true, hasArea: false }, - 31: { code: 'E4-3', name: '机电与金属结构工程', maxCoe: null, minCoe: null, defCoe: 1.5, desc: '适用于机电与金属结构专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: false, isRailway: false, isWaterway: true, order: 32, hasCost: true, hasArea: false }, - 32: { code: 'E4-4', name: '设备工程', maxCoe: null, minCoe: null, defCoe: 1.5, desc: '适用于设备工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: false, isRailway: false, isWaterway: true, order: 33, hasCost: true, hasArea: false }, - 33: { code: 'E4-5', name: '附属房建工程(房屋建筑及附属工程)', maxCoe: null, minCoe: null, defCoe: 2.5, desc: '适用于房屋建筑与水运附属工程专业的施工图预算、招标工程量清单及清单预算(或最高投标限价)、合同(工程)结算和造价鉴定、计算工程量、工程变更费用咨询、工程成本测(核)算', isRoad: false, isRailway: false, isWaterway: true, order: 34, hasCost: true, hasArea: false }, -}; - -let serviceList = { - 0: { code: 'D1', name: '全过程造价咨询', maxCoe: null, minCoe: null, defCoe: 1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 1, scale: true, onlyCostScale: true, amount: false, workDay: true }, - 1: { code: 'D2', name: '分阶段造价咨询', maxCoe: null, minCoe: null, defCoe: null, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 2, scale: null, onlyCostScale: null, amount: null, workDay: null }, - 2: { code: 'D2-1', name: '前期阶段造价咨询', maxCoe: null, minCoe: null, defCoe: 0.5, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 3, scale: true, onlyCostScale: true, amount: false, workDay: true }, - 3: { code: 'D2-2-1', name: '实施阶段造价咨询(公路、水运)', maxCoe: null, minCoe: null, defCoe: 0.55, desc: '本系数适用于公路和水运工程。', isRoad: true, isRailway: false, isWaterway: true, mutiple: false, order: 4, scale: true, onlyCostScale: true, amount: false, workDay: true }, - 4: { code: 'D2-2-2', name: '实施阶段造价咨询(铁路)', maxCoe: null, minCoe: null, defCoe: 0.6, desc: '本系数适用于铁路工程。', isRoad: false, isRailway: true, isWaterway: false, mutiple: false, order: 5, scale: true, onlyCostScale: true, amount: false, workDay: true }, - 5: { code: 'D3', name: '基本造价咨询', maxCoe: null, minCoe: null, defCoe: null, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 6, scale: null, onlyCostScale: null, amount: null, workDay: null }, - 6: { code: 'D3-1', name: '投资估算', maxCoe: null, minCoe: null, defCoe: 0.1, desc: '委托同一咨询人同时负责D3-1和D3-2时,D3-1和D3-2的合计调整系数为0.25。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 7, scale: true, onlyCostScale: true, amount: false, workDay: true }, - 7: { code: 'D3-2', name: '设计概算', maxCoe: null, minCoe: null, defCoe: 0.2, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 8, scale: true, onlyCostScale: true, amount: false, workDay: true }, - 8: { code: 'D3-3', name: '施工图预算', maxCoe: null, minCoe: null, defCoe: 0.25, desc: '委托同一咨询人同时负责D3-3和D3-4时,D3-3和D3-4的合计调整系数为0.3。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 9, scale: true, onlyCostScale: false, amount: false, workDay: true }, - 9: { code: 'D3-4', name: '招标工程量清单及清单预算(或最高投标限价)', maxCoe: null, minCoe: null, defCoe: 0.15, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 10, scale: true, onlyCostScale: false, amount: false, workDay: true }, - 10: { code: 'D3-5', name: '清理概算(仅限铁路)', maxCoe: null, minCoe: null, defCoe: 0.2, desc: '本系数适用于铁路工程。', isRoad: false, isRailway: true, isWaterway: false, mutiple: false, order: 11, scale: true, onlyCostScale: true, amount: false, workDay: true }, - 11: { code: 'D3-6-1', name: '合同(工程)结算', maxCoe: null, minCoe: null, defCoe: 0.3, desc: '本系数适用于公路和水运工程。', isRoad: true, isRailway: false, isWaterway: true, mutiple: false, order: 12, scale: true, onlyCostScale: false, amount: false, workDay: true }, - 12: { code: 'D3-6-2', name: '合同(工程)结算', maxCoe: null, minCoe: null, defCoe: 0.2, desc: '本系数适用于铁路工程。', isRoad: false, isRailway: true, isWaterway: false, mutiple: false, order: 13, scale: true, onlyCostScale: false, amount: false, workDay: true }, - 13: { code: 'D3-7', name: '竣工决算', maxCoe: null, minCoe: null, defCoe: 0.1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 14, scale: true, onlyCostScale: true, amount: false, workDay: true }, - 14: { code: 'D4', name: '专项造价咨询', maxCoe: null, minCoe: null, defCoe: null, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 15, scale: null, onlyCostScale: null, amount: null, workDay: null }, - 15: { code: 'D4-1', name: '工程造价顾问', maxCoe: null, minCoe: null, defCoe: 1, desc: '本表系数适用于采用工作量计价法基准预算的调整系数。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 16, scale: false, onlyCostScale: null, amount: true, workDay: true }, - 16: { code: 'D4-2', name: '造价政策制(修)订', maxCoe: null, minCoe: null, defCoe: 1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 17, scale: false, onlyCostScale: null, amount: true, workDay: true }, - 17: { code: 'D4-3', name: '造价科学与技术研究', maxCoe: null, minCoe: null, defCoe: 1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 18, scale: false, onlyCostScale: null, amount: true, workDay: true }, - 18: { code: 'D4-4', name: '定额测定', maxCoe: null, minCoe: null, defCoe: 1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 19, scale: false, onlyCostScale: null, amount: true, workDay: true }, - 19: { code: 'D4-5', name: '造价信息咨询', maxCoe: null, minCoe: null, defCoe: 1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 20, scale: false, onlyCostScale: null, amount: true, workDay: true }, - 20: { code: 'D4-6', name: '造价鉴定', maxCoe: null, minCoe: null, defCoe: 0.5, desc: '本表系数适用于采用规模计价法基准预算的调整系数。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 21, scale: true, onlyCostScale: false, amount: false, workDay: true }, - 21: { code: 'D4-7', name: '工程成本测算', maxCoe: null, minCoe: null, defCoe: 0.1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 22, scale: true, onlyCostScale: false, amount: false, workDay: true }, - 22: { code: 'D4-8', name: '工程成本核算', maxCoe: null, minCoe: null, defCoe: 0.1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 23, scale: true, onlyCostScale: false, amount: false, workDay: true }, - 23: { code: 'D4-9', name: '计算工程量', maxCoe: null, minCoe: null, defCoe: 0.2, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 24, scale: true, onlyCostScale: false, amount: false, workDay: true }, - 24: { code: 'D4-10', name: '工程变更费用咨询', maxCoe: null, minCoe: null, defCoe: 0.5, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 25, scale: true, onlyCostScale: false, amount: false, workDay: true }, - 25: { code: 'D4-11', name: '调整估算', maxCoe: 0.2, minCoe: 0.1, defCoe: 0.15, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 26, scale: true, onlyCostScale: true, amount: false, workDay: true }, - 26: { code: 'D4-12', name: '调整概算', maxCoe: 0.3, minCoe: 0.15, defCoe: 0.225, desc: '本表系数适用于采用规模计价法基准预算的系数;依据其调整时期所在建设阶段和基础资料的不同,其系数取值不同。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 27, scale: true, onlyCostScale: true, amount: false, workDay: true }, - 27: { code: 'D4-13', name: '造价检查', maxCoe: null, minCoe: null, defCoe: null, desc: '可按照服务工日数量×服务工日人工单价×综合预算系数;也可按照服务工日数量×服务工日综合预算单价。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 28, scale: false, onlyCostScale: null, amount: false, workDay: true }, - 28: { code: 'D4-14', name: '其他专项咨询', maxCoe: null, minCoe: null, defCoe: null, desc: '可参照相同或相似服务的系数。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 29, scale: false, onlyCostScale: null, amount: false, workDay: true }, - 29: { code: 'D4-15-1', name: '造价数据测试验证(估算)', maxCoe: null, minCoe: null, defCoe: 0.04, desc: '委托同一咨询人同时负责D3-1和D3-2时,D3-1和D3-2的合计调整系数为0.25。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 30, scale: false, onlyCostScale: null, amount: false, workDay: true }, - 30: { code: 'D4-15-2', name: '造价数据测试验证(概算)', maxCoe: null, minCoe: null, defCoe: 0.08, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 31, scale: false, onlyCostScale: null, amount: false, workDay: true }, - 31: { code: 'D4-15-3', name: '造价数据测试验证(施工图预算)', maxCoe: null, minCoe: null, defCoe: 0.1, desc: '委托同一咨询人同时负责D3-3和D3-4时,D3-3和D3-4的合计调整系数为0.3。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 32, scale: false, onlyCostScale: null, amount: false, workDay: true }, - 32: { code: 'D4-15-4', name: '造价数据测试验证(招标工程量清单及清单预算(或最高投标限价))', maxCoe: null, minCoe: null, defCoe: 0.06, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 33, scale: false, onlyCostScale: null, amount: false, workDay: true }, - 33: { code: 'D4-15-5', name: '造价数据测试验证(清理概算(仅限铁路))', maxCoe: null, minCoe: null, defCoe: 0.08, desc: '本系数适用于铁路工程。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 34, scale: false, onlyCostScale: null, amount: false, workDay: true }, - 34: { code: 'D4-15-6', name: '造价数据测试验证(合同(工程)结算)', maxCoe: null, minCoe: null, defCoe: 0.12, desc: '本系数适用于公路和水运工程。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 35, scale: false, onlyCostScale: null, amount: false, workDay: true }, - 35: { code: 'D4-15-7', name: '造价数据测试验证(合同(工程)结算)', maxCoe: null, minCoe: null, defCoe: 0.08, desc: '本系数适用于铁路工程。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 36, scale: false, onlyCostScale: null, amount: false, workDay: true }, - 36: { code: 'D4-15-8', name: '造价数据测试验证(竣工决算)', maxCoe: null, minCoe: null, defCoe: 0.04, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 37, scale: false, onlyCostScale: null, amount: false, workDay: true }, -}; - -let taskList = { - 0: { serviceID: 15, code: 'C4-1', name: '工程造价日常顾问', basicParam: '服务月份数', required: true, unit: '万元/月', conversion: 10000, maxPrice: 0.5, minPrice: 0.3, defPrice: 0.4, desc: '' }, - 1: { serviceID: 15, code: 'C4-2', name: '工程造价专项顾问', basicParam: '服务项目的造价金额', required: true, unit: '%', conversion: 0.01, maxPrice: null, minPrice: null, defPrice: 0.01, desc: '适用于涉及造价费用类的顾问' }, - 2: { serviceID: 16, code: 'C5-1', name: '组织与调研工作', basicParam: '调研次数', required: true, unit: '万元/次', conversion: 10000, maxPrice: 2, minPrice: 1, defPrice: 1.5, desc: '' }, - 3: { serviceID: 16, code: 'C5-2-1', name: '文件编写工作', basicParam: '文件份数', required: true, unit: '万元/份', conversion: 10000, maxPrice: 5, minPrice: 3, defPrice: 4, desc: '主编' }, - 4: { serviceID: 16, code: 'C5-2-2', name: '文件编写工作', basicParam: '文件份数', required: true, unit: '万元/份', conversion: 10000, maxPrice: 3, minPrice: 1, defPrice: 2, desc: '参编' }, - 5: { serviceID: 16, code: 'C5-3-1', name: '评审工作', basicParam: '评审次数', required: false, unit: '万元/次', conversion: 10000, maxPrice: 20, minPrice: 8, defPrice: 14, desc: '大型评审' }, - 6: { serviceID: 16, code: 'C5-3-2', name: '评审工作', basicParam: '评审次数', required: false, unit: '万元/次', conversion: 10000, maxPrice: 10, minPrice: 5, defPrice: 7.5, desc: '中型评审' }, - 7: { serviceID: 16, code: 'C5-3-3', name: '评审工作', basicParam: '评审次数', required: false, unit: '万元/次', conversion: 10000, maxPrice: 6, minPrice: 3, defPrice: 4.5, desc: '小型评审' }, - 8: { serviceID: 17, code: 'C6-1', name: '组织与调研工作', basicParam: '调研次数', required: true, unit: '万元/次', conversion: 10000, maxPrice: 2, minPrice: 1, defPrice: 1.5, desc: '' }, - 9: { serviceID: 17, code: 'C6-2-1', name: '研究及编写报告', basicParam: '文件份数', required: true, unit: '万元/份', conversion: 10000, maxPrice: 50, minPrice: 20, defPrice: 35, desc: '国家级' }, - 10: { serviceID: 17, code: 'C6-2-2', name: '研究及编写报告', basicParam: '文件份数', required: true, unit: '万元/份', conversion: 10000, maxPrice: 20, minPrice: 10, defPrice: 15, desc: '省部级' }, - 11: { serviceID: 17, code: 'C6-2-3', name: '研究及编写报告', basicParam: '文件份数', required: true, unit: '万元/份', conversion: 10000, maxPrice: 10, minPrice: 5, defPrice: 7.5, desc: '其他级' }, - 12: { serviceID: 17, code: 'C6-3-1', name: '标准与技术性指导文件的编制', basicParam: '文件与标准的数量', required: true, unit: '万元/份', conversion: 10000, maxPrice: 80, minPrice: 50, defPrice: 65, desc: '复杂标准' }, - 13: { serviceID: 17, code: 'C6-3-2', name: '标准与技术性指导文件的编制', basicParam: '文件与标准的数量', required: true, unit: '万元/份', conversion: 10000, maxPrice: 50, minPrice: 20, defPrice: 35, desc: '较复杂标准' }, - 14: { serviceID: 17, code: 'C6-3-3', name: '标准与技术性指导文件的编制', basicParam: '文件与标准的数量', required: true, unit: '万元/份', conversion: 10000, maxPrice: 20, minPrice: 10, defPrice: 15, desc: '一般标准' }, - 15: { serviceID: 17, code: 'C6-3-4', name: '标准与技术性指导文件的编制', basicParam: '文件与标准的数量', required: true, unit: '万元/份', conversion: 10000, maxPrice: 10, minPrice: 5, defPrice: 7.5, desc: '简单标准' }, - 16: { serviceID: 17, code: 'C6-4-1', name: '评审与验收工作', basicParam: '评审与验收次数', required: false, unit: '万元/次', conversion: 10000, maxPrice: 20, minPrice: 8, defPrice: 14, desc: '大型评审' }, - 17: { serviceID: 17, code: 'C6-4-2', name: '评审与验收工作', basicParam: '评审与验收次数', required: false, unit: '万元/次', conversion: 10000, maxPrice: 10, minPrice: 5, defPrice: 7.5, desc: '中型评审' }, - 18: { serviceID: 17, code: 'C6-4-3', name: '评审与验收工作', basicParam: '评审与验收次数', required: false, unit: '万元/次', conversion: 10000, maxPrice: 6, minPrice: 3, defPrice: 4.5, desc: '小型评审' }, - 19: { serviceID: 17, code: 'C6-5-1', name: '培训与宣贯工作', basicParam: '项目数量', required: false, unit: '万元/次', conversion: 10000, maxPrice: 3, minPrice: 1, defPrice: 2, desc: '培训与宣贯材料' }, - 20: { serviceID: 17, code: 'C6-5-2', name: '培训与宣贯工作', basicParam: '培训与宣贯次数', required: false, unit: '万元/次', conversion: 10000, maxPrice: 1, minPrice: 0.5, defPrice: 0.75, desc: '组织培训与宣贯' }, - 21: { serviceID: 18, code: 'C7-1', name: '组织与调研工作', basicParam: '调研次数', required: true, unit: '万元/次', conversion: 10000, maxPrice: 2, minPrice: 1, defPrice: 1.5, desc: '' }, - 22: { serviceID: 18, code: 'C7-2', name: '编制大纲', basicParam: '项目数量', required: true, unit: '万元/个', conversion: 10000, maxPrice: 3, minPrice: 2, defPrice: 2.5, desc: '包括技术与定额子目研究' }, - 23: { serviceID: 18, code: 'C7-3', name: '数据采集与测定', basicParam: '采集组数', required: true, unit: '万元/组', conversion: 10000, maxPrice: 0.8, minPrice: 0.2, defPrice: 0.5, desc: '现场采集方式时计' }, - 24: { serviceID: 18, code: 'C7-4-1', name: '数据整理与分析', basicParam: '定额子目条数', required: true, unit: '万元/条', conversion: 10000, maxPrice: 0.3, minPrice: 0.1, defPrice: 0.2, desc: '简单定额' }, - 25: { serviceID: 18, code: 'C7-4-2', name: '数据整理与分析', basicParam: '定额子目条数', required: true, unit: '万元/条', conversion: 10000, maxPrice: 3, minPrice: 0.3, defPrice: 1.65, desc: '复杂定额' }, - 26: { serviceID: 18, code: 'C7-5', name: '编写定额测定报告', basicParam: '项目数量', required: true, unit: '万元/份', conversion: 10000, maxPrice: 5, minPrice: 2, defPrice: 3.5, desc: '' }, - 27: { serviceID: 18, code: 'C7-6-1', name: '编制定额文本和释义', basicParam: '基本费用', required: true, unit: '万元/份', conversion: 10000, maxPrice: 1, minPrice: 0.5, defPrice: 0.75, desc: '20条定额子目内' }, - 28: { serviceID: 18, code: 'C7-6-2', name: '编制定额文本和释义', basicParam: '定额子目条数', required: true, unit: '万元/条', conversion: 10000, maxPrice: 0.2, minPrice: 0.1, defPrice: 0.15, desc: '超过20条每增加1条' }, - 29: { serviceID: 18, code: 'C7-7-1', name: '评审与验收工作', basicParam: '评审与验收次数', required: false, unit: '万元/次', conversion: 10000, maxPrice: 20, minPrice: 8, defPrice: 14, desc: '大型评审' }, - 30: { serviceID: 18, code: 'C7-7-2', name: '评审与验收工作', basicParam: '评审与验收次数', required: false, unit: '万元/次', conversion: 10000, maxPrice: 10, minPrice: 5, defPrice: 7.5, desc: '中型评审' }, - 31: { serviceID: 18, code: 'C7-7-3', name: '评审与验收工作', basicParam: '评审与验收次数', required: false, unit: '万元/次', conversion: 10000, maxPrice: 6, minPrice: 3, defPrice: 4.5, desc: '小型评审' }, - 32: { serviceID: 18, code: 'C7-8-1', name: '培训与宣贯工作', basicParam: '项目数量', required: false, unit: '万元/次', conversion: 10000, maxPrice: 3, minPrice: 1, defPrice: 2, desc: '培训与宣贯材料' }, - 33: { serviceID: 18, code: 'C7-8-2', name: '培训与宣贯工作', basicParam: '培训与宣贯次数', required: false, unit: '万元/次', conversion: 10000, maxPrice: 1, minPrice: 0.5, defPrice: 0.75, desc: '组织培训与宣贯' }, - 34: { serviceID: 19, code: 'C8-1', name: 'Q≤10条', basicParam: '价格信息数量', required: true, unit: '元/条', conversion: 1, maxPrice: null, minPrice: null, defPrice: 500, desc: '' }, - 35: { serviceID: 19, code: 'C8-2', name: '10条100条', basicParam: '价格信息数量', required: true, unit: '元/条', conversion: 1, maxPrice: null, minPrice: null, defPrice: 100, desc: '' }, -}; - -let expertList = { - 0: { code: 'C9-1-1', name: '技术员及其他', maxPrice: 800, minPrice: 600, defPrice: 700, manageCoe: 2.3 }, - 1: { code: 'C9-1-2', name: '助理工程师', maxPrice: 1000, minPrice: 800, defPrice: 900, manageCoe: 2.3 }, - 2: { code: 'C9-1-3', name: '中级工程师或二级造价工程师', maxPrice: 1500, minPrice: 1000, defPrice: 1250, manageCoe: 2.2 }, - 3: { code: 'C9-1-4', name: '高级工程师或一级造价工程师', maxPrice: 1800, minPrice: 1500, defPrice: 1650, manageCoe: 2.1 }, - 4: { code: 'C9-1-5', name: '正高级工程师或资深专家', maxPrice: 2500, minPrice: 2000, defPrice: 2250, manageCoe: 2 }, - 5: { code: 'C9-2-1', name: '二级造价工程师且具备中级工程师资格', maxPrice: 1500, minPrice: 1200, defPrice: 1350, manageCoe: 2.2 }, - 6: { code: 'C9-3-1', name: '一级造价工程师且具备中级工程师资格', maxPrice: 1800, minPrice: 1500, defPrice: 1650, manageCoe: 2.1 }, - 7: { code: 'C9-3-2', name: '一级造价工程师且具备高级工程师资格', maxPrice: 2000, minPrice: 1800, defPrice: 1900, manageCoe: 2.05 }, -}; - -let costScaleCal = [ - { code: 'C1-1', staLine: 0, endLine: 100, basic: { staPrice: 0, rate: 0.01 }, optional: { staPrice: 0, rate: 0.002 } }, - { code: 'C1-2', staLine: 100, endLine: 300, basic: { staPrice: 10000, rate: 0.008 }, optional: { staPrice: 2000, rate: 0.0016 } }, - { code: 'C1-3', staLine: 300, endLine: 500, basic: { staPrice: 26000, rate: 0.005 }, optional: { staPrice: 5200, rate: 0.001 } }, - { code: 'C1-4', staLine: 500, endLine: 1000, basic: { staPrice: 36000, rate: 0.004 }, optional: { staPrice: 7200, rate: 0.0008 } }, - { code: 'C1-5', staLine: 1000, endLine: 5000, basic: { staPrice: 56000, rate: 0.003 }, optional: { staPrice: 11200, rate: 0.0006 } }, - { code: 'C1-6', staLine: 5000, endLine: 10000, basic: { staPrice: 176000, rate: 0.002 }, optional: { staPrice: 35200, rate: 0.0004 } }, - { code: 'C1-7', staLine: 10000, endLine: 30000, basic: { staPrice: 276000, rate: 0.0016 }, optional: { staPrice: 55200, rate: 0.00032 } }, - { code: 'C1-8', staLine: 30000, endLine: 50000, basic: { staPrice: 596000, rate: 0.0013 }, optional: { staPrice: 119200, rate: 0.00026 } }, - { code: 'C1-9', staLine: 50000, endLine: 100000, basic: { staPrice: 856000, rate: 0.001 }, optional: { staPrice: 171200, rate: 0.0002 } }, - { code: 'C1-10', staLine: 100000, endLine: 150000, basic: { staPrice: 1356000, rate: 0.0009 }, optional: { staPrice: 271200, rate: 0.00018 } }, - { code: 'C1-11', staLine: 150000, endLine: 200000, basic: { staPrice: 1806000, rate: 0.0008 }, optional: { staPrice: 361200, rate: 0.00016 } }, - { code: 'C1-12', staLine: 200000, endLine: 300000, basic: { staPrice: 2206000, rate: 0.0007 }, optional: { staPrice: 441200, rate: 0.00014 } }, - { code: 'C1-13', staLine: 300000, endLine: 400000, basic: { staPrice: 2906000, rate: 0.0006 }, optional: { staPrice: 581200, rate: 0.00012 } }, - { code: 'C1-14', staLine: 400000, endLine: 600000, basic: { staPrice: 3506000, rate: 0.0005 }, optional: { staPrice: 701200, rate: 0.0001 } }, - { code: 'C1-15', staLine: 600000, endLine: 800000, basic: { staPrice: 4506000, rate: 0.0004 }, optional: { staPrice: 901200, rate: 0.00008 } }, - { code: 'C1-16', staLine: 800000, endLine: 1000000, basic: { staPrice: 5306000, rate: 0.0003 }, optional: { staPrice: 1061200, rate: 0.00006 } }, - { code: 'C1-17', staLine: 1000000, endLine: null, basic: { staPrice: 5906000, rate: 0.00025 }, optional: { staPrice: 1181200, rate: 0.00005 } }, -]; - -let areaScaleCal = [ - { code: 'C2-1', staLine: 0, endLine: 50, basic: { staPrice: 0, rate: 200 }, optional: { staPrice: 0, rate: 40 } }, - { code: 'C2-2', staLine: 50, endLine: 100, basic: { staPrice: 10000, rate: 160 }, optional: { staPrice: 2000, rate: 32 } }, - { code: 'C2-3', staLine: 100, endLine: 500, basic: { staPrice: 18000, rate: 120 }, optional: { staPrice: 3600, rate: 24 } }, - { code: 'C2-4', staLine: 500, endLine: 1000, basic: { staPrice: 66000, rate: 80 }, optional: { staPrice: 13200, rate: 16 } }, - { code: 'C2-5', staLine: 1000, endLine: 5000, basic: { staPrice: 106000, rate: 60 }, optional: { staPrice: 21200, rate: 12 } }, - { ref: 'C2-6', staLine: 5000, endLine: null, basic: { staPrice: 346000, rate: 20 }, optional: { staPrice: 69200, rate: 4 } }, -]; - -function getBasicFeeFromScale(scaleValue, scaleType) { - let sv = Number(scaleValue); - if (isNaN(sv)) return null; - if (sv <= 0) return null; - let targetRange; - let res; - switch (scaleType) { - case 'cost': - targetRange = costScaleCal.find(f => f.staLine < sv && (sv <= f.endLine || f.endLine === null)); - res = { - basic: Math.round((targetRange.basic.staPrice + (sv - targetRange.staLine) * 10000 * targetRange.basic.rate) * 100) / 100, - optional: Math.round((targetRange.optional.staPrice + (sv - targetRange.staLine) * 10000 * targetRange.optional.rate) * 100) / 100, - basicFormula: targetRange.basic.staPrice ? `${numberFormatter(targetRange.basic.staPrice, 0)}+(${numberFormatter(sv * 10000, 0)}-${numberFormatter(targetRange.staLine * 10000, 0)})×${Math.round(targetRange.basic.rate * 1000 * 100) / 100}‰` : `${numberFormatter(sv * 10000, 0)}×${Math.round(targetRange.basic.rate * 1000 * 100) / 100}‰`, - optionalFormula: targetRange.optional.staPrice ? `${numberFormatter(targetRange.optional.staPrice, 0)}+(${numberFormatter(sv * 10000, 0)}-${numberFormatter(targetRange.staLine * 10000, 0)})×${Math.round(targetRange.optional.rate * 1000 * 100) / 100}‰` : `${numberFormatter(sv * 10000, 0)}×${Math.round(targetRange.optional.rate * 1000 * 100) / 100}‰`, - }; - break; - case 'area': - targetRange = areaScaleCal.find(f => f.staLine < sv && (sv <= f.endLine || f.endLine === null)); - res = { - basic: Math.round((targetRange.basic.staPrice + (sv - targetRange.staLine) * targetRange.basic.rate) * 100) / 100, - optional: Math.round((targetRange.optional.staPrice + (sv - targetRange.staLine) * targetRange.optional.rate) * 100) / 100, - basicFormula: targetRange.basic.staPrice ? `${numberFormatter(targetRange.basic.staPrice, 0)}+(${numberFormatter(sv, 0)}-${numberFormatter(targetRange.staLine, 0)})×${targetRange.basic.rate}` : `${numberFormatter(sv, 0)}×${targetRange.basic.rate}`, - optionalFormula: targetRange.optional.staPrice ? `${numberFormatter(targetRange.optional.staPrice, 0)}+(${numberFormatter(sv, 0)}-${numberFormatter(targetRange.staLine, 0)})×${targetRange.optional.rate}` : `${numberFormatter(sv, 0)}×${targetRange.optional.rate}`, - }; - break; - } - return res; -} - - - -let data2 = { - name: 'test001', - scale: [ - { - major: 0, - cost: 100000, - area: 200, - }, - { - major: 1, - cost: 100000, - area: 200, - }, - ], - contracts: [ - { - name: 'A合同段', - scale: [ - { - major: 0, - cost: 100000, - area: 200, - }, - { - major: 1, - cost: 100000, - area: 200, - }, - ], - services: [ - { - id: 0, - method1: { // 投资规模法 - fee: 250000, - det: [ - { - major: 0, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method2: { // 用地规模法 - fee: 250000, - det: [ - { - major: 0, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - }, - { - id: 0, - method1: { // 投资规模法 - fee: 250000, - det: [ - { - major: 0, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method2: { // 用地规模法 - fee: 250000, - det: [ - { - major: 0, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method3: { // 工作量法 - fee: 250000, - det: [ - { - task: 0, - price: 100000, - amount: 10, - basicFee: 200, - serviceCoe: 1.1, - fee: 100000, - desc: '', - }, - { - task: 1, - price: 100000, - amount: 10, - basicFee: 200, - serviceCoe: 1.1, - fee: 100000, - desc: '', - }, - ], - }, - }, - ], - }, - { - name: 'A合同段', - scale: [ - { - major: 0, - cost: 100000, - area: 200, - }, - { - major: 1, - cost: 100000, - area: 200, - }, - ], - services: [ - { - id: 0, - }, - ], - }, - { - name: 'A合同段', - scale: [ - { - major: 0, - cost: 100000, - area: 200, - }, - { - major: 1, - cost: 100000, - area: 200, - }, - ], - services: [ - { - id: 0, - method1: { // 投资规模法 - fee: 250000, - det: [ - { - major: 0, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method2: { // 用地规模法 - fee: 250000, - det: [ - { - major: 0, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - }, - { - id: 0, - method1: { // 投资规模法 - fee: 250000, - det: [ - { - major: 0, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method2: { // 用地规模法 - fee: 250000, - det: [ - { - major: 0, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method3: { // 工作量法 - fee: 250000, - det: [ - { - task: 0, - price: 100000, - amount: 10, - basicFee: 200, - serviceCoe: 1.1, - fee: 100000, - desc: '', - }, - { - task: 1, - price: 100000, - amount: 10, - basicFee: 200, - serviceCoe: 1.1, - fee: 100000, - desc: '', - }, - ], - }, - }, - ], - }, - { - name: 'A合同段', - scale: [ - { - major: 0, - cost: 100000, - area: 200, - }, - { - major: 1, - cost: 100000, - area: 200, - }, - ], - services: [ - { - id: 0, - method1: { // 投资规模法 - fee: 250000, - det: [ - { - major: 0, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method2: { // 用地规模法 - fee: 250000, - det: [ - { - major: 0, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - }, - { - id: 0, - method1: { // 投资规模法 - fee: 250000, - det: [ - { - major: 0, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method2: { // 用地规模法 - fee: 250000, - det: [ - { - major: 0, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method3: { // 工作量法 - fee: 250000, - det: [ - { - task: 0, - price: 100000, - amount: 10, - basicFee: 200, - serviceCoe: 1.1, - fee: 100000, - desc: '', - }, - { - task: 1, - price: 100000, - amount: 10, - basicFee: 200, - serviceCoe: 1.1, - fee: 100000, - desc: '', - }, - ], - }, - }, - ], - }, - { - name: 'A合同段', - scale: [ - { - major: 0, - cost: 100000, - area: 200, - }, - { - major: 1, - cost: 100000, - area: 200, - }, - ], - services: [ - { - id: 0, - method1: { // 投资规模法 - fee: 250000, - det: [ - { - major: 0, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method2: { // 用地规模法 - fee: 250000, - det: [ - { - major: 0, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - }, - { - id: 0, - method1: { // 投资规模法 - fee: 250000, - det: [ - { - major: 0, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method2: { // 用地规模法 - fee: 250000, - det: [ - { - major: 0, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method3: { // 工作量法 - fee: 250000, - det: [ - { - task: 0, - price: 100000, - amount: 10, - basicFee: 200, - serviceCoe: 1.1, - fee: 100000, - desc: '', - }, - { - task: 1, - price: 100000, - amount: 10, - basicFee: 200, - serviceCoe: 1.1, - fee: 100000, - desc: '', - }, - ], - }, - }, - ], - }, - { - name: 'A合同段', - scale: [ - { - major: 0, - cost: 100000, - area: 200, - }, - { - major: 1, - cost: 100000, - area: 200, - }, - ], - services: [ - { - id: 0, - method1: { // 投资规模法 - fee: 250000, - det: [ - { - major: 0, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method2: { // 用地规模法 - fee: 250000, - det: [ - { - major: 0, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - }, - { - id: 0, - method1: { // 投资规模法 - fee: 250000, - det: [ - { - major: 0, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - cost: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method2: { // 用地规模法 - fee: 250000, - det: [ - { - major: 0, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - { - major: 1, - area: 100000, - basicFee: 200, - serviceCoe: 1.1, - majorCoe: 1.2, - fee: 100000, - desc: '', - }, - ], - }, - method3: { // 工作量法 - fee: 250000, - det: [ - { - task: 0, - price: 100000, - amount: 10, - basicFee: 200, - serviceCoe: 1.1, - fee: 100000, - desc: '', - }, - { - task: 1, - price: 100000, - amount: 10, - basicFee: 200, - serviceCoe: 1.1, - fee: 100000, - desc: '', - }, - ], - }, - }, - ], - }, - ], -}; - -async function exportFile(fileName, data) { - if (window.showSaveFilePicker) { - const handle = await window.showSaveFilePicker({ - suggestedName: fileName, - types: [{ - description: "Excel 文件", - accept: { "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": [".xlsx"] } - }] - }); - // ecCom.WeaLoadingGlobal.start({ - // tip: "下载中,结束前请勿打开文件...", - // }); - try { - const workbook = await generateTemplate(data); - const buffer = await workbook.xlsx.writeBuffer(); - const writable = await handle.createWritable(); - await writable.write(buffer); - await writable.close(); - // ecCom.WeaLoadingGlobal.destroy(); - // antd.notification['success']({ - // message: '下载成功!', - // }); - } catch (err) { - console.log('err:' + err); - // ecCom.WeaLoadingGlobal.destroy(); - // antd.notification['error']({ - // message: '下载失败!', - // }); - } - } else { - const workbook = await generateTemplate(data); - const buffer = await workbook.xlsx.writeBuffer(); - const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); - const url1 = window.URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url1; - a.download = `${fileName}.xlsx`; - a.click(); - URL.revokeObjectURL(url1); - } -} - -async function generateTemplate(data) { - // 获取模板 - let templateExcel = 'template20260226001test010'; - let templateUrl = `/myExcelTemplate/${templateExcel}.xlsx`; - let buf = await (await fetch(templateUrl)).arrayBuffer(); - let workbook = new ExcelJS.Workbook(); - await workbook.xlsx.load(buf); - - // 生成表格 - let fm_sheet = workbook.getWorksheet('封面'); - let ml_sheet = workbook.getWorksheet('目录'); - let yz01_sheet = workbook.getWorksheet('预总01表'); - let f01_sheet = workbook.getWorksheet('辅01表'); - - let now = new Date(); - let year = now.getFullYear(); - let month = now.getMonth() + 1; - let day = now.getDate(); - - fm_sheet.getRow(2).getCell(1).value = data.name; - fm_sheet.getRow(11).getCell(4).value = `${year} 年 ${month} 月 ${day} 日`; - - let yz01Mod = (data.contracts.length + 1) % 4; - let yz01Num = (data.contracts.length + 1 - yz01Mod) / 4; - switch (yz01Mod) { - case 0: - yz01_sheet.spliceColumns(8, 15); - break; - case 1: - yz01_sheet.spliceColumns(8, 11); - break; - case 2: - yz01_sheet.spliceColumns(19, 4); - yz01_sheet.spliceColumns(8, 6); - break; - case 3: - yz01_sheet.spliceColumns(14, 9); - break; - } - if (yz01Num == 0) { - yz01_sheet.spliceColumns(1, 7); - } else { - if (yz01Num > 1) { - for (let i = 0; i < yz01Num - 1; i++) { - insertAndCopyColumn(7 * (i + 1) + 1, [1, 2, 3, 4, 5, 6, 7], yz01_sheet); - } - } - } - - let f01Mod = (data.contracts.length) % 3; - let f01Num = (data.contracts.length - f01Mod) / 3; - switch (f01Mod) { - case 0: - f01_sheet.spliceColumns(11, 14); - break; - case 1: - f01_sheet.spliceColumns(11, 8); - break; - case 2: - f01_sheet.spliceColumns(19, 6); - break; - } - if (f01Num == 0) { - f01_sheet.spliceColumns(1, 10); - } else { - if (f01Num > 1) { - for (let i = 0; i < f01Num - 1; i++) { - insertAndCopyColumn(10 * (i + 1) + 1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], f01_sheet); - } - } - for (let i = 0; i < f01Num; i++) { - f01_sheet.mergeCells(1, i * 10 + 1, 2, i * 10 + 1); - f01_sheet.mergeCells(1, i * 10 + 2, 2, i * 10 + 2); - f01_sheet.mergeCells(1, i * 10 + 3, 2, i * 10 + 3); - f01_sheet.mergeCells(1, i * 10 + 10, 2, i * 10 + 10); - f01_sheet.mergeCells(1, i * 10 + 4, 1, i * 10 + 5); - f01_sheet.getRow(1).getCell(i * 10 + 4).value = data.contracts[i * 3].name; - f01_sheet.mergeCells(1, i * 10 + 6, 1, i * 10 + 7); - f01_sheet.getRow(1).getCell(i * 10 + 6).value = data.contracts[i * 3 + 1].name; - f01_sheet.mergeCells(1, i * 10 + 8, 1, i * 10 + 9); - f01_sheet.getRow(1).getCell(i * 10 + 8).value = data.contracts[i * 3 + 2].name; - } - } - if (f01Mod > 0) { - f01_sheet.mergeCells(1, f01Num * 10 + 1, 2, f01Num * 10 + 1); - f01_sheet.mergeCells(1, f01Num * 10 + 2, 2, f01Num * 10 + 2); - f01_sheet.mergeCells(1, f01Num * 10 + 3, 2, f01Num * 10 + 3); - f01_sheet.mergeCells(1, f01Num * 10 + 2 * f01Mod + 4, 2, f01Num * 10 + 2 * f01Mod + 4); - f01_sheet.mergeCells(1, f01Num * 10 + 4, 1, f01Num * 10 + 5); - f01_sheet.getRow(1).getCell(f01Num * 10 + 4).value = data.contracts[f01Num * 3].name; - if (f01Mod == 2) { - f01_sheet.mergeCells(1, f01Num * 10 + 6, 1, f01Num * 10 + 7); - f01_sheet.getRow(1).getCell(f01Num * 10 + 6).value = data.contracts[f01Num * 3 + 1].name; - } - } - - let ml_slotRow = 13; - let ml_number = 1; - let allServices = []; - data.contracts.forEach((ci, index) => { - ci.method1 = []; - ci.method2 = []; - ci.method3 = []; - ci.method4 = []; - ci.services.forEach(si => { - if (si.method1) { - ci.method1.push(si.id); - } - if (si.method2) { - ci.method2.push(si.id); - } - if (si.method3) ci.method3.push(si.id); - if (si.method4) ci.method4.push(si.id); - }); - - let ml_sourceRows = [ml_sheet.getRow(6)]; - let sheet_1 = copyWorksheet(workbook, '预i-1表', `预${index + 1}-1表`); - sheet_1.headerFooter.oddHeader = sheet_1.headerFooter.oddHeader.replace(/×××/g, ci.name).replace(/预 i-1 表/g, `预 ${index + 1}-1 表`).replace(/第i合同/g, ci.name); - sheet_1.getRow(1).getCell(4).value = sheet_1.getRow(1).getCell(4).value.replace(/第i合同/g, ci.name); - let sheet_2; - let sheet_2_1; - let sheet_2_2; - let sheet_3; - let sheet_4; - let sheet_4_1; - if (ci.method1.length || ci.method2.length) { - ml_sourceRows.push(ml_sheet.getRow(7)); - sheet_2 = copyWorksheet(workbook, '预i-2表', `预${index + 1}-2表`); - sheet_2.headerFooter.oddHeader = sheet_2.headerFooter.oddHeader.replace(/×××/g, ci.name).replace(/预 i-2 表/g, `预 ${index + 1}-2 表`).replace(/第i合同/g, ci.name); - if (ci.method1.length) { - ml_sourceRows.push(ml_sheet.getRow(8)); - sheet_2_1 = copyWorksheet(workbook, '预i-2-1表', `预${index + 1}-2-1表`); - sheet_2_1.headerFooter.oddHeader = sheet_2_1.headerFooter.oddHeader.replace(/×××/g, ci.name).replace(/预 i-2-1 表/g, `预 ${index + 1}-2-1 表`).replace(/第i合同/g, ci.name); - } - if (ci.method2.length) { - ml_sourceRows.push(ml_sheet.getRow(9)); - sheet_2_2 = copyWorksheet(workbook, '预i-2-2表', `预${index + 1}-2-2表`); - sheet_2_2.headerFooter.oddHeader = sheet_2_2.headerFooter.oddHeader.replace(/×××/g, ci.name).replace(/预 i-2-2 表/g, `预 ${index + 1}-2-2 表`).replace(/第i合同/g, ci.name); - } - } - if (ci.method3.length) { - ml_sourceRows.push(ml_sheet.getRow(10)); - sheet_3 = copyWorksheet(workbook, '预i-3表', `预${index + 1}-3表`); - sheet_3.headerFooter.oddHeader = sheet_3.headerFooter.oddHeader.replace(/×××/g, ci.name).replace(/预 i-3 表/g, `预 ${index + 1}-3 表`).replace(/第i合同/g, ci.name); - } - if (ci.method4.length) { - ml_sourceRows.push(ml_sheet.getRow(11)); - ml_sourceRows.push(ml_sheet.getRow(12)); - sheet_4 = copyWorksheet(workbook, '预i-4表', `预${index + 1}-4表`); - sheet_4.headerFooter.oddHeader = sheet_4.headerFooter.oddHeader.replace(/×××/g, ci.name).replace(/预 i-4 表/g, `预 ${index + 1}-4 表`).replace(/第i合同/g, ci.name); - sheet_4_1 = copyWorksheet(workbook, '预i-4-1表', `预${index + 1}-4-1表`); - sheet_4_1.headerFooter.oddHeader = sheet_4_1.headerFooter.oddHeader.replace(/×××/g, ci.name).replace(/预 i-4-1 表/g, `预 ${index + 1}-4-1 表`).replace(/第i合同/g, ci.name); - let sumObj = ci.method4.reduce((a, b) => { - const m4 = ci.services.find(f => f.id == b).method4; - return { person_num: a.person_num + m4.person_num, work_day: a.work_day + m4.work_day, fee: a.fee + m4.fee }; - }, { person_num: 0, work_day: 0, fee: 0 }); - sheet_4.getRow(3).getCell(4).value = sumObj.person_num; - sheet_4.getRow(3).getCell(5).value = sumObj.work_day; - sheet_4.getRow(3).getCell(6).value = sumObj.fee; - sheet_4_1.getRow(4).getCell(4).value = '/'; - sheet_4_1.getRow(4).getCell(5).value = '/'; - sheet_4_1.getRow(4).getCell(6).value = '/'; - sheet_4_1.getRow(4).getCell(7).value = sumObj.person_num; - sheet_4_1.getRow(4).getCell(8).value = sumObj.work_day; - sheet_4_1.getRow(4).getCell(9).value = sumObj.fee - } - - cusInsertRowFunc(ml_slotRow, ml_sourceRows, ml_sheet, () => ml_slotRow++, (targetCell, sourceCell, colNumber) => { - if (colNumber == 1) { - targetCell.value = ml_number++; - } else if (colNumber == 2) { - targetCell.value = sourceCell.value.replaceAll('第i合同', ci.name); - } else if (colNumber == 3) { - targetCell.value = sourceCell.value.replaceAll('i', index + 1); - } else { - targetCell.value = sourceCell.value; - } - }); - - let num_2 = 1; - let num_2_1 = 1; - let num_2_2 = 1; - let num_3 = 1; - let num_4 = 1; - let num_4_1 = 1; - ci.services.forEach((sobj, sindex) => { - let allServicesX = allServices.find(s => s.id == sobj.id); - if (allServicesX) { - allServicesX.contracts[index] = sobj.fee; - } else { - allServices.push({ - id: sobj.id, - contracts: { - [index]: sobj.fee, - }, - }); - } - let serviceX = serviceList[sobj.id]; - cusInsertRowFunc(4 + sindex, [sheet_1.getRow(3)], sheet_1, (targetRow) => { - targetRow.getCell(1).value = sindex + 1; - targetRow.getCell(2).value = serviceX.ref; - targetRow.getCell(3).value = serviceX.name; - targetRow.getCell(4).value = sobj.method1 ? sobj.method1.fee : ''; - targetRow.getCell(5).value = sobj.method2 ? sobj.method2.fee : ''; - targetRow.getCell(6).value = sobj.method3 ? sobj.method3.fee : ''; - targetRow.getCell(7).value = sobj.method4 ? sobj.method4.fee : ''; - targetRow.getCell(8).value = sobj.fee; - }); - if (sobj.method1 || sobj.method2) { - let det1 = sobj.method1 ? sobj.method1.det.map(m => m.major) : []; - let det2 = sobj.method2 ? sobj.method2.det.map(m => m.major) : []; - let allDet = [...(new Set([...det1, ...det2]))].sort((a, b) => a - b).map(m => { - return { - major: m, - mth1: det1.includes(m) ? sobj.method1.det[det1.indexOf(m)] : null, - mth2: det2.includes(m) ? sobj.method2.det[det2.indexOf(m)] : null, - }; - }); - - cusInsertRowFunc(4 + num_2, [sheet_2.getRow(4)], sheet_2, (targetRow) => { - targetRow.getCell(1).value = num_2++; - targetRow.getCell(2).value = serviceX.ref; - targetRow.getCell(3).value = serviceX.name; - targetRow.getCell(4).value = '/'; - targetRow.getCell(5).value = '/'; - if (sobj.method1) { - targetRow.getCell(6).value = sobj.method1.basicFee; - targetRow.getCell(7).value = sobj.method1.fee; - cusInsertRowFunc(4 + num_2_1, [sheet_2_1.getRow(4)], sheet_2_1, (targetRow) => { - targetRow.getCell(1).value = num_2_1++; - targetRow.getCell(2).value = serviceX.ref; - targetRow.getCell(3).value = serviceX.name; - targetRow.getCell(4).value = sobj.method1.cost; - targetRow.getCell(5).value = '/'; - targetRow.getCell(6).value = sobj.method1.basicFee_basic; - targetRow.getCell(7).value = '/'; - targetRow.getCell(8).value = sobj.method1.basicFee_optional; - targetRow.getCell(9).value = sobj.method1.basicFee; - }); - } - if (sobj.method2) { - targetRow.getCell(8).value = sobj.method2.basicFee; - targetRow.getCell(9).value = sobj.method2.fee; - cusInsertRowFunc(4 + num_2_2, [sheet_2_2.getRow(4)], sheet_2_2, (targetRow) => { - targetRow.getCell(1).value = num_2_2++; - targetRow.getCell(2).value = serviceX.ref; - targetRow.getCell(3).value = serviceX.name; - targetRow.getCell(4).value = sobj.method2.area; - targetRow.getCell(5).value = '/'; - targetRow.getCell(6).value = sobj.method2.basicFee_basic; - targetRow.getCell(7).value = '/'; - targetRow.getCell(8).value = sobj.method2.basicFee_optional; - targetRow.getCell(9).value = sobj.method2.basicFee; - }); - } - }); - allDet.forEach((m, mindex) => { - let majorX = majorList[m.major]; - cusInsertRowFunc(4 + num_2, [sheet_2.getRow(4)], sheet_2, (targetRow) => { - targetRow.getCell(1).value = num_2++; - targetRow.getCell(2).value = serviceX.ref + '-' + (mindex + 1); - targetRow.getCell(3).value = majorX.name; - if (m.mth1) { - targetRow.getCell(4).value = m.mth1.serviceCoe; - targetRow.getCell(5).value = m.mth1.majorCoe; - targetRow.getCell(6).value = m.mth1.basicFee; - targetRow.getCell(7).value = m.mth1.fee; - targetRow.getCell(8).value = 0; - targetRow.getCell(9).value = 0; - cusInsertRowFunc(4 + num_2_1, [sheet_2_1.getRow(4)], sheet_2_1, (targetRow) => { - targetRow.getCell(1).value = num_2_1++; - targetRow.getCell(2).value = serviceX.ref + '-' + (mindex + 1); - targetRow.getCell(3).value = majorX.name; - targetRow.getCell(4).value = m.mth1.cost; - targetRow.getCell(5).value = m.mth1.basicFormula; - targetRow.getCell(6).value = m.mth1.basicFee_basic; - targetRow.getCell(7).value = m.mth1.optionalFormula; - targetRow.getCell(8).value = m.mth1.basicFee_optional; - targetRow.getCell(9).value = m.mth1.basicFee; - }); - } else { - targetRow.getCell(4).value = m.mth2.serviceCoe; - targetRow.getCell(5).value = m.mth2.majorCoe; - targetRow.getCell(6).value = 0; - targetRow.getCell(7).value = 0; - targetRow.getCell(8).value = m.mth2.basicFee; - targetRow.getCell(9).value = m.mth2.fee; - cusInsertRowFunc(4 + num_2_2, [sheet_2_2.getRow(4)], sheet_2_2, (targetRow) => { - targetRow.getCell(1).value = num_2_2++; - targetRow.getCell(2).value = serviceX.ref + '-' + (mindex + 1); - targetRow.getCell(3).value = majorX.name; - targetRow.getCell(4).value = m.mth2.area; - targetRow.getCell(5).value = m.mth2.basicFormula; - targetRow.getCell(6).value = m.mth2.basicFee_basic; - targetRow.getCell(7).value = m.mth2.optionalFormula; - targetRow.getCell(8).value = m.mth2.basicFee_optional; - targetRow.getCell(9).value = m.mth2.basicFee; - }); - } - }); - }); - } - if (sobj.method3) { - cusInsertRowFunc(3 + num_3, [sheet_3.getRow(3)], sheet_3, (targetRow) => { - targetRow.getCell(1).value = num_3++; - targetRow.getCell(2).value = serviceX.ref; - targetRow.getCell(3).value = serviceX.name; - targetRow.getCell(4).value = '/'; - targetRow.getCell(5).value = '/'; - targetRow.getCell(6).value = '/'; - targetRow.getCell(7).value = sobj.method3.basicFee; - targetRow.getCell(8).value = '/'; - targetRow.getCell(9).value = sobj.method3.fee; - }); - sobj.method3.det.forEach((tobj, tindex) => { - const taskX = taskList[tobj.task]; - cusInsertRowFunc(3 + num_3, [sheet_3.getRow(3)], sheet_3, (targetRow) => { - targetRow.getCell(1).value = num_3++; - targetRow.getCell(2).value = taskX.ref; - targetRow.getCell(3).value = taskX.name + (taskX.desc ? `(${taskX.desc})` : ''); - targetRow.getCell(4).value = taskX.basicParam; - targetRow.getCell(5).value = tobj.price; - targetRow.getCell(6).value = tobj.amount; - targetRow.getCell(7).value = tobj.basicFee; - targetRow.getCell(8).value = tobj.serviceCoe; - targetRow.getCell(9).value = tobj.fee; - }); - }); - } - if (sobj.method4) { - cusInsertRowFunc(4 + num_4, [sheet_4.getRow(4)], sheet_4, (targetRow) => { - targetRow.getCell(1).value = num_4++; - targetRow.getCell(2).value = serviceX.ref; - targetRow.getCell(3).value = serviceX.name; - targetRow.getCell(4).value = sobj.method4.person_num; - targetRow.getCell(5).value = sobj.method4.work_day; - targetRow.getCell(6).value = sobj.method4.fee; - }); - cusInsertRowFunc(5 + num_4_1, [sheet_4_1.getRow(5)], sheet_4_1, (targetRow) => { - targetRow.getCell(1).value = num_4_1++; - targetRow.getCell(2).value = serviceX.ref; - targetRow.getCell(3).value = serviceX.name; - targetRow.getCell(4).value = '/'; - targetRow.getCell(5).value = '/'; - targetRow.getCell(6).value = '/'; - targetRow.getCell(7).value = sobj.method4.person_num; - targetRow.getCell(8).value = sobj.method4.work_day; - targetRow.getCell(9).value = sobj.method4.fee; - }); - sobj.method4.det.forEach((eobj, eindex) => { - const expertX = expertList[eobj.expert]; - cusInsertRowFunc(5 + num_4_1, [sheet_4_1.getRow(5)], sheet_4_1, (targetRow) => { - targetRow.getCell(1).value = num_4_1++; - targetRow.getCell(2).value = expertX.ref; - targetRow.getCell(3).value = expertX.name; - targetRow.getCell(4).value = `${expertX.minPrice}~${expertX.maxPrice}`; - targetRow.getCell(5).value = `${Math.round(expertX.minPrice * expertX.manageCoe)}~${Math.round(expertX.maxPrice * expertX.manageCoe)}`; - targetRow.getCell(6).value = eobj.price; - targetRow.getCell(7).value = eobj.person_num; - targetRow.getCell(8).value = eobj.work_day; - targetRow.getCell(9).value = eobj.fee; - targetRow.getCell(10).value = eobj.desc; - }); - }); - } - }); - }); - - allServices.sort((a, b) => a.id - b.id); - allServices.forEach((s, sindex) => { - const serviceX = serviceList[s.id]; - cusInsertRowFunc(3 + sindex, [yz01_sheet.getRow(2)], yz01_sheet, (targetRow) => { - let siSum = 0; - for (let i = 0; i < yz01Num; i++) { - targetRow.getCell(i * 7 + 1).value = sindex + 1; - targetRow.getCell(i * 7 + 2).value = serviceX.ref; - targetRow.getCell(i * 7 + 3).value = serviceX.name; - targetRow.getCell(i * 7 + 4).value = s.contracts[i * 4]; - targetRow.getCell(i * 7 + 5).value = s.contracts[i * 4 + 1]; - targetRow.getCell(i * 7 + 6).value = s.contracts[i * 4 + 2]; - siSum = siSum + (Number(s.contracts[i * 4]) || 0 + Number(s.contracts[i * 4 + 1]) || 0 + Number(s.contracts[i * 4 + 2]) || 0); - if (i == yz01Num - 1 && yz01Mod == 0) { - targetRow.getCell(i * 7 + 7).value = numberFormatter(siSum, 2); - } else { - targetRow.getCell(i * 7 + 7).value = s.contracts[i * 4 + 3]; - siSum = siSum + (Number(s.contracts[i * 4 + 3]) || 0); - } - } - if (yz01Mod) { - targetRow.getCell(yz01Num * 7 + 1).value = sindex + 1; - targetRow.getCell(yz01Num * 7 + 2).value = serviceX.ref; - targetRow.getCell(yz01Num * 7 + 3).value = serviceX.name; - if (yz01Mod == 1) { - targetRow.getCell(yz01Num * 7 + 4).value = numberFormatter(siSum, 2); - } else if (yz01Mod == 2) { - targetRow.getCell(yz01Num * 7 + 4).value = s.contracts[yz01Num * 4]; - siSum = siSum + (Number(s.contracts[yz01Num * 4]) || 0); - targetRow.getCell(yz01Num * 7 + 5).value = numberFormatter(siSum, 2); - } else { - targetRow.getCell(yz01Num * 7 + 4).value = s.contracts[yz01Num * 4]; - targetRow.getCell(yz01Num * 7 + 5).value = s.contracts[yz01Num * 4 + 1]; - siSum = siSum + (Number(s.contracts[yz01Num * 4]) || 0 + Number(s.contracts[yz01Num * 4 + 1]) || 0); - targetRow.getCell(yz01Num * 7 + 6).value = numberFormatter(siSum, 2); - } - } - }); - }); - - ml_sheet.spliceRows(6, 6); - ml_sheet.spliceRows(6, 1); - - // 合并说明 - if (yz01Num) { - for (let i = 0; i < yz01Num; i++) { - yz01_sheet.getRow(1).getCell(i * 7 + 4).value = `${data.contracts[i * 4].name}预算\n(元)`; - yz01_sheet.getRow(1).getCell(i * 7 + 4).value = `${data.contracts[i * 4 + 1].name}预算\n(元)`; - yz01_sheet.getRow(1).getCell(i * 7 + 4).value = `${data.contracts[i * 4 + 2].name}预算\n(元)`; - if (i == yz01Num - 1 && yz01Mod == 0) { - yz01_sheet.getRow(1).getCell(i * 7 + 4).value = `预算小计\n(元)`; - } else { - yz01_sheet.getRow(1).getCell(i * 7 + 4).value = `${data.contracts[i * 4 + 3].name}预算\n(元)`; - } - yz01_sheet.mergeCells(6, i * 7 + 2, 6, i * 7 + 7); - } - } - if (yz01Mod) { - for (let i = 0; i < yz01Mod; i++) { - if (i == yz01Mod - 1) { - yz01_sheet.getRow(1).getCell(yz01Num * 7 + 4 + i).value = `预算小计\n(元)`; - } else { - yz01_sheet.getRow(1).getCell(yz01Num * 7 + 4 + i).value = `${data.contracts[yz01Num * 4 + i].name}预算\n(元)`; - } - } - yz01_sheet.mergeCells(6, yz01Num * 7 + 2, 6, yz01Num * 7 + 3 + yz01Mod); - } - ml_sheet.mergeCells(ml_slotRow - 7, 1, ml_slotRow - 7, 4); - - workbook.removeWorksheet('预i-1表'); - workbook.removeWorksheet('预i-2表'); - workbook.removeWorksheet('预i-2-1表'); - workbook.removeWorksheet('预i-2-2表'); - workbook.removeWorksheet('预i-3表'); - workbook.removeWorksheet('预i-4表'); - workbook.removeWorksheet('预i-4-1表'); - workbook.getWorksheet('辅01表').orderNo = ml_number + 2 + 10; - workbook.getWorksheet('辅02表').orderNo = ml_number + 3 + 10; - workbook.getWorksheet('辅03表').orderNo = ml_number + 4 + 10; - - workbook._worksheets.forEach(sheet => { - if (sheet) { - if (sheet.headerFooter.oddHeader) sheet.headerFooter.oddHeader = sheet.headerFooter.oddHeader.replace(/&([CLR])&/g, '&$1&"宋体"&'); - if (sheet.headerFooter.oddFooter) sheet.headerFooter.oddFooter = sheet.headerFooter.oddFooter.replace(/&([CLR])&/g, '&$1&"宋体"&'); - } - }); - - window.workbook = workbook; - - return workbook; -} - -function cusInsertRowFunc(insertRowNum, sourceRows, worksheet, RowFun, cellFun) { - // 插入行 - let newRows = []; - for (let i = 0; i < sourceRows.length; i++) { - newRows.push([]); - } - worksheet.insertRows(insertRowNum, newRows); - - for (let i = 0; i < sourceRows.length; i++) { - const sourceRow = sourceRows[i]; - const targetRowNum = insertRowNum + i; - const targetRow = worksheet.getRow(targetRowNum); - targetRow.height = undefined; - sourceRow.eachCell({ includeEmpty: true }, (cell, colNumber) => { - const targetCell = targetRow.getCell(colNumber); - // targetCell.value = cell.value; // 复制内容 - // 复制样式 - if (cell.style) { - targetCell.style = { ...cell.style }; - } - - if (cellFun) { - cellFun(targetCell, cell, colNumber, targetRow, sourceRow); - } - }); - if (RowFun) { - RowFun(targetRow, sourceRow, i); - } - } -} - -function copyWorksheet(workbook, sourceName, targetName) { - const source = workbook.getWorksheet(sourceName); - if (!source) throw new Error("Source sheet not found"); - - const target = workbook.addWorksheet(targetName, { - properties: { ...source.properties }, - pageSetup: { ...source.pageSetup }, - views: source.views ? JSON.parse(JSON.stringify(source.views)) : [], - }); - - /* 复制页眉页脚(关键补充) */ - if (source.headerFooter) { - target.headerFooter = JSON.parse( - JSON.stringify(source.headerFooter) - ); - } - - /* 复制合并单元格 */ - Object.keys(source._merges).forEach(range => { - let rangeModel = source._merges[range].model; - target.mergeCells(rangeModel.top, rangeModel.left, rangeModel.bottom, rangeModel.right); - }); - - /* 复制列(宽度、样式) */ - source.columns.forEach((col, i) => { - const targetCol = target.getColumn(i + 1); - targetCol.width = col.width; - targetCol.style = JSON.parse(JSON.stringify(col.style || {})); - }); - - /* 复制行 & 单元格 */ - source.eachRow({ includeEmpty: true }, (row, rowNumber) => { - const targetRow = target.getRow(rowNumber); - targetRow.height = undefined; - - row.eachCell({ includeEmpty: true }, (cell, colNumber) => { - const targetCell = targetRow.getCell(colNumber); - - // value(富文本/公式安全) - targetCell.value = cloneCellValue(cell.value); - - // style(必须深拷贝) - targetCell.style = JSON.parse(JSON.stringify(cell.style || {})); - }); - }); - - return target; -} - -function insertAndCopyColumn(insertAt, cols, ws) { - let insertAti = insertAt; - cols.forEach((col, index) => { - // 在 insertAti 位置插入空列 - ws.spliceColumns(insertAti, 0, []); - - // 插入后,col 可能需要偏移 - const srcColIndex = col >= insertAti ? col + 1 + index : col; - - // 复制列 - copyColumn(insertAti, srcColIndex, ws); - - insertAti++; - }); -} - -function copyColumn(toCol, fromCol, ws) { - const srcCol = ws.getColumn(fromCol); - const dstCol = ws.getColumn(toCol); - - // 列级属性 - dstCol.width = srcCol.width; - dstCol.hidden = srcCol.hidden; - dstCol.style = JSON.parse(JSON.stringify(srcCol.style || {})); - - // 单元格 - srcCol.eachCell({ includeEmpty: true }, (cell, rowNumber) => { - const dstCell = ws.getRow(rowNumber).getCell(toCol); - dstCell.value = cloneCellValue(cell.value); - dstCell.style = JSON.parse(JSON.stringify(cell.style || {})); - }); -} - -function cloneCellValue(value) { - if (value == null) return value; - - if (typeof value === "object") { - return JSON.parse(JSON.stringify(value)); - } - return value; -} - -function numberFormatter(num, decimalNum) { - if (num == null || String(num).trim().length == 0) return null; - let varArr = String(num).split("."); - let big = Number(varArr[0]).toLocaleString(); - if (decimalNum > 0) { - let decimal = varArr.length > 1 ? varArr[1] + '000000' : '000000'; - decimal = decimal.slice(0, decimalNum); - return big + '.' + decimal; - } else { - return big; - } -} - - - -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: {// 附加工作费 - code: { 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, - code: { 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, - code: { 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: {// 预备费 - code: { 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: '',// 用户输入的说明 - }, - ], - } - }, - }, - ], -}; diff --git a/public/标准文件转代码Data.xlsx b/public/标准文件转代码Data.xlsx deleted file mode 100644 index c6424775ce2b5b7c639cd828a06c4ed0bda7cc2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122254 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 N^mZh*@Mg$B{tr&n1j7IT diff --git a/public/造价咨询服务计费报表模板.xlsx b/public/造价咨询服务计费报表模板.xlsx deleted file mode 100644 index ae61d988a3f59403db2d94e95f86d78cdc2a5931..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42648 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 qR+g)p0XJE0rggq%F_XEK