Sfoglia il codice sorgente

1. 调整非参与人,期数据读取基础值
2. 调整中间计量数据表

MaiXinRong 5 anni fa
parent
commit
2f30ee9e94

+ 24 - 4
app/lib/stage_im.js

@@ -321,18 +321,31 @@ class StageIm {
                     this.ImBillsData.push(b);
                 }
                 b.quantity = this.ctx.helper.add(b.quantity, p.quantity);
+                b.total_price = this.ctx.helper.add(b.total_price, p.total_price);
 
                 b.jl = this.ctx.helper.add(b.jl, p.gather_qty);
                 b.contract_jl = this.ctx.helper.add(b.contract_jl, p.contract_qty);
                 b.qc_jl = this.ctx.helper.add(b.qc_jl, p.qc_qty);
 
+                b.tp = this.ctx.helper.add(b.tp, p.gather_tp);
+                b.contract_tp = this.ctx.helper.add(b.contract_tp, p.contract_tp);
+                b.qc_tp = this.ctx.helper.add(b.qc_tp, p.qc_tp);
+
                 b.pre_jl = this.ctx.helper.add(b.pre_jl, p.pre_gather_qty);
                 b.pre_contract_jl = this.ctx.helper.add(b.pre_contract_jl, p.pre_contract_qty);
                 b.pre_qc_jl = this.ctx.helper.add(b.pre_qc_jl, p.pre_qc_qty);
 
+                b.pre_tp = this.ctx.helper.add(b.pre_tp, p.pre_gather_tp);
+                b.pre_contract_tp = this.ctx.helper.add(b.pre_contract_tp, p.pre_contract_tp);
+                b.pre_qc_tp = this.ctx.helper.add(b.pre_qc_tp, p.pre_qc_tp);
+
                 b.end_jl = this.ctx.helper.add(b.end_jl, p.end_gather_qty);
                 b.end_contract_jl = this.ctx.helper.add(b.end_contract_jl, p.end_contract_qty);
                 b.end_qc_jl = this.ctx.helper.add(b.end_qc_jl, p.end_qc_qty);
+
+                b.end_tp = this.ctx.helper.add(b.end_tp, p.end_gather_tp);
+                b.end_contract_tp = this.ctx.helper.add(b.end_contract_tp, p.end_contract_tp);
+                b.end_qc_tp = this.ctx.helper.add(b.end_qc_tp, p.end_qc_tp);
                 this._generateTzPosData(p, b);
             }
         }
@@ -382,6 +395,7 @@ class StageIm {
      */
     _generateTzImData(node) {
         if (node.gather_tp) {
+            const nodeIndex = this.billsTree.getNodeSerialNo(node);
             const peg = this._getPegNode(node);
             const im = {
                 id: this.ImData.length + 1,
@@ -391,6 +405,7 @@ class StageIm {
                 end_jl: node.end_gather_tp, end_contract_jl: node.end_contract_tp, end_qc_jl: node.end_qc_tp,
                 peg: peg ? this._getPegStr(peg.name) : '', drawing_code: this._getDrawingCode(node),
                 position: '',
+                lIndex: nodeIndex,
             };
             if (this.ctx.stage.im_gather && node.check) {
                 im.bw = this._getZlGatherBw(node, peg);
@@ -478,13 +493,13 @@ class StageIm {
      */
     _generateZlImData(node) {
         const self = this;
-        const nodeImData = [],
-            posterity = this.billsTree.getPosterity(node);
+        const nodeImData = [], posterity = this.billsTree.getPosterity(node);
+        const nodeIndex = this.billsTree.getNodeSerialNo(node);
         for (const p of posterity) {
             if (p.children && p.children.length > 0) { continue; }
             if (!p.b_code || p.b_code === '') { continue; }
             if (!p.gather_tp || p.gather_tp === 0) { continue; }
-            //if (this.ctx.helper.checkZero(p.contract_qty) && this.ctx.helper.checkZero(p.qc_qty)) { continue; }
+            // if (this.ctx.helper.checkZero(p.contract_qty) && this.ctx.helper.checkZero(p.qc_qty)) { continue; }
             let im = nodeImData.find(function(d) {
                 return d.lid === node.id &&
                     d.code === p.b_code && p.name === d.name && p.unit === d.unit &&
@@ -504,6 +519,7 @@ class StageIm {
                     end_tp: 0, end_contract_tp: 0, end_qc_tp: 0,
                     peg: peg ? this._getPegStr(peg.name) : '',
                     position: '',
+                    lIndex: nodeIndex,
                 };
                 if (this.ctx.stage.im_gather && node.check) {
                     im.check = true;
@@ -563,6 +579,7 @@ class StageIm {
             const pPos = this.pos.getLedgerPos(p.id);
             const bw = this._getZlNormalBw(node, peg);
             if (pPos && pPos.length > 0) {
+                const nodeIndex = this.billsTree.getNodeSerialNo(node);
                 for (const pp of pPos) {
                     if (this.ctx.helper.checkZero(pp.contract_qty) && this.ctx.helper.checkZero(pp.qc_qty)) { continue; }
                     const im = {
@@ -578,6 +595,7 @@ class StageIm {
                         drawing_code: pp.drawing_code,
                         changes: [],
                         position: pp.position,
+                        lIndex: nodeIndex * 1000 + pp.porder,
                     };
                     im.total_price = this.ctx.helper.mul(im.quantity, im.unit_price, tp_decimal);
                     im.tp = this.ctx.helper.mul(im.jl, im.unit_price, tp_decimal);
@@ -619,6 +637,7 @@ class StageIm {
                     drawing_code: this._getDrawingCode(p),
                     changes: [],
                     position: '',
+                    lIndex: this.billsTree.getNodeSerialNo(node),
                 };
                 im.calc_memo = '本期计量:' + im.jl + ' ' + im.unit;
                 this._checkCustomDetail(im);
@@ -669,7 +688,8 @@ class StageIm {
         // 排序
         if (this.ctx.stage.im_type !== imType.tz.value) {
             this.ImData.sort(function(x, y) {
-                return self.ctx.helper.compareCode(x.code, y.code);
+                const iCode = self.ctx.helper.compareCode(x.code, y.code);
+                return iCode === 0 ? x.lIndex - y.lIndex : iCode;
             });
         }
         // 生成数据(需要缓存,并清理缓存)

+ 12 - 3
app/middleware/stage_check.js

@@ -55,7 +55,9 @@ module.exports = options => {
             });
             // 权限相关
             // todo 校验权限 (标段参与人、分享)
-            const accountId = this.session.sessionUser.accountId, auditorIds = _.map(stage.auditors, 'aid'), shareIds = [];
+            const accountId = this.session.sessionUser.accountId,
+                auditorIds = _.map(stage.auditors, 'aid'),
+                shareIds = [];
             const permission = this.session.sessionUser.permission;
             if (accountId === stage.user_id) { // 原报
                 if (stage.curAuditor) {
@@ -80,7 +82,7 @@ module.exports = options => {
                     stage.curOrder = _.max(_.map(stage.auditors, 'order'));
                 } else if (stage.status === status.checkNo) {
                     const audit = yield this.service.stageAudit.getDataByCondition({
-                        sid: stage.id, times: stage.times - 1, status: status.checkNo
+                        sid: stage.id, times: stage.times - 1, status: status.checkNo,
                     });
                     stage.curOrder = audit.order;
                 } else {
@@ -93,7 +95,14 @@ module.exports = options => {
                 }
                 stage.readOnly = true;
                 stage.curTimes = stage.status === status.checkNo ? stage.times - 1 : stage.times;
-                stage.curOrder = stage.status === status.checked ? _.max(_.map(stage.auditors, 'order')) : stage.curAuditor.order - 1;
+                if (stage.status === status.checkNo) {
+                    const audit = yield this.service.stageAudit.getDataByCondition({
+                        sid: stage.id, times: stage.times - 1, status: status.checkNo,
+                    });
+                    stage.curOrder = audit.order;
+                } else {
+                    stage.curOrder = stage.status === status.checked ? _.max(_.map(stage.auditors, 'order')) : stage.curAuditor.order - 1;
+                }
             } else { // 其他不可见
                 throw '您无权查看该数据';
             }

+ 3 - 0
app/public/js/path_tree.js

@@ -347,6 +347,9 @@ const createNewPathTree = function (type, setting) {
         getItems(id) {
             return this.items[itemsPre + id];
         };
+        getNodeIndex(node) {
+            return this.nodes.indexOf(node);
+        }
         /**
          * 查找node的parent
          * @param {Object} node

+ 9 - 1
app/public/js/stage_im.js

@@ -405,6 +405,7 @@ const stageIm = (function () {
      */
     function generateTzImData (node) {
         if (node.gather_tp) {
+            const nodeIndex = gsTree.getNodeIndex(node);
             const peg = getPegNode(node);
             const im = {
                 lid: node.id, pid: '', code: node.code,
@@ -412,6 +413,7 @@ const stageIm = (function () {
                 //im_code: getNewImCode(),
                 peg: peg ? getPegStr(peg.name) : '', drawing_code: getDrawingCode(node),
                 position: '',
+                lIndex: nodeIndex,
             };
             if (stage.im_gather && node.check) {
                 im.bw = getZlGatherBw(node, peg);
@@ -500,6 +502,7 @@ const stageIm = (function () {
      */
     function generateZlImData (node) {
         const nodeImData = [], posterity = gsTree.getPosterity(node);
+        const nodeIndex = gsTree.getNodeIndex(node);
         for (const p of posterity) {
             if (p.children && p.children.length > 0 ) { continue; }
             if (!p.b_code || p.b_code === '') { continue }
@@ -515,6 +518,7 @@ const stageIm = (function () {
                     jl: 0, contract_jl: 0, qc_jl: 0,
                     peg: peg ? getPegStr(peg.name) : '',
                     position: '',
+                    lIndex: nodeIndex,
                 };
                 if (stage.im_gather && node.check) {
                     im.bw = getZlGatherBw(node, peg);
@@ -548,6 +552,7 @@ const stageIm = (function () {
             const pPos = gsPos.getLedgerPos(p.id);
             const bw = getZlNormalBw(node, peg);
             if (pPos && pPos.length > 0) {
+                const nodeIndex = gsTree.getNodeIndex(node);
                 for (const pp of pPos) {
                     if ((!pp.contract_qty || pp.contract_qty === 0) && (!pp.qc_qty || pp.qc_qty === 0)) { continue }
                     const im = {
@@ -560,6 +565,7 @@ const stageIm = (function () {
                         drawing_code: pp.drawing_code,
                         changes: [],
                         position: pp.position,
+                        lIndex: nodeIndex,
                     };
                     im.calc_memo = '本期计量:' + im.jl + ' ' + im.unit;
                     checkCustomDetail(im);
@@ -585,6 +591,7 @@ const stageIm = (function () {
                     drawing_code: getDrawingCode(p),
                     changes: [],
                     position: '',
+                    lIndex: gsTree.getNodeIndex(node),
                 };
                 im.calc_memo = '本期计量:' + im.jl + ' ' + im.unit;
                 checkCustomDetail(im);
@@ -636,7 +643,8 @@ const stageIm = (function () {
         recursiveBuildImData(gsTree.children);
         if (stage.im_type !== imType.tz.value) {
             ImData.sort(function (x, y) {
-                return compareCode(x.code, y.code);
+                const iCode = compareCode(x.code, y.code);
+                return iCode === 0 ? x.lIndex - y.lIndex : iCode;
             });
         }
         for (const [i, im] of ImData.entries()) {

+ 16 - 9
app/service/stage.js

@@ -72,7 +72,14 @@ module.exports = app => {
                     }
                     stage.readOnly = true;
                     stage.curTimes = stage.status === status.checkNo ? stage.times - 1 : stage.times;
-                    stage.curOrder = stage.status === status.checked ? this._.max(this._.map(stage.auditors, 'order')) : stage.curAuditor.order - 1;
+                    if (stage.status === status.checkNo) {
+                        const audit = await this.service.stageAudit.getDataByCondition({
+                            sid: stage.id, times: stage.times - 1, status: status.checkNo,
+                        });
+                        stage.curOrder = audit.order;
+                    } else {
+                        stage.curOrder = stage.status === status.checked ? this._.max(this._.map(stage.auditors, 'order')) : stage.curAuditor.order - 1;
+                    }
                 }
 
                 this.ctx.stage = stage;
@@ -174,7 +181,7 @@ module.exports = app => {
          */
         async getValidStages(tenderId) {
             const stages = await this.db.select(this.tableName, {
-                where: {tid: tenderId},
+                where: { tid: tenderId },
                 orders: [['order', 'desc']],
             });
             for (const s of stages) {
@@ -216,21 +223,21 @@ module.exports = app => {
          */
         async addStage(tenderId, date, period) {
             const stages = await this.getAllDataByCondition({
-                where: {tid: tenderId},
+                where: { tid: tenderId },
                 order: ['order'],
             });
             const preStage = stages[stages.length - 1];
             if (stages.length > 0 && stages[stages.length - 1].status !== auditConst.status.checked) {
                 throw '上一期未审批通过,请等待上一期审批通过后,再新增数据';
-            };
+            }
             const order = stages.length + 1;
             const newStage = {
                 sid: this.uuid.v4(),
                 tid: tenderId,
-                order: order,
+                order,
                 in_time: new Date(),
                 s_time: date,
-                period: period,
+                period,
                 times: 1,
                 status: auditConst.status.uncheck,
                 user_id: this.ctx.session.sessionUser.accountId,
@@ -300,8 +307,8 @@ module.exports = app => {
         async saveStage(tenderId, order, date, period) {
             await this.db.update(this.tableName, {
                 s_time: date,
-                period: period,
-            }, { where: { tid: tenderId, order: order } });
+                period,
+            }, { where: { tid: tenderId, order } });
         }
 
         /**
@@ -314,7 +321,7 @@ module.exports = app => {
         async buildDetailData(tenderId, order, data) {
             const conn = await this.db.beginTransaction();
             try {
-                await conn.update(this.tableName, { im_type: data.im_type, im_pre: data.im_pre }, { where: { tid: tenderId, order: order } });
+                await conn.update(this.tableName, { im_type: data.im_type, im_pre: data.im_pre }, { where: { tid: tenderId, order } });
                 // to do 生成中间计量数据
                 await conn.commit();
             } catch (err) {

+ 346 - 277
builder_report_index_define.js

@@ -19,8 +19,8 @@ const dataType = {
     time: 'string',
 };
 const tag = {
-    tp: {type: 'tp'},
-    up: {type: 'up'},
+    tp: { type: 'tp' },
+    up: { type: 'up' },
 };
 // 其他台账
 const stage_jgcl = {
@@ -30,29 +30,29 @@ const stage_jgcl = {
     key: 'stage_jgcl',
     prefix: '期-甲供材料',
     cols: [
-        {name: 'id', field: 'id', type: dataType.int},
-        {name: 'uuid', field: 'uuid', type: dataType.str},
-        {name: '名称', field: 'name', type: dataType.str},
-        {name: '单位', field: 'unit', type: dataType.str},
-        {name: '单价', field: 'unit_price', type: dataType.currency, tag: {type: 'up'}},
-        {name: '本期到场-数量', field: 'arrive_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 4}},
-        {name: '本期到场-金额', field: 'arrive_tp', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '本期扣回-数量', field: 'deduct_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 4}},
-        {name: '本期扣回-金额', field: 'deduct_tp', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '材料来源', field: 'source', type: dataType.str},
-        {name: '单据号', field: 'bills_code', type: dataType.str},
-        {name: '检验单编号', field: 'check_code', type: dataType.str},
-        {name: '新增人id', field: 'add_uid', type: dataType.int},
-        {name: '新增期id', field: 'add_sid', type: dataType.int},
-        {name: '所属期id', field: 'sid', type: dataType.int},
-        {name: '期历史记录', field: 'shistory', type: dataType.str},
-        {name: '排序', field: 'order', type: dataType.int},
-        {name: '往期是否已用', field: 'pre_used', type: dataType.int},
-        {name: '截止上期到场-数量', field: 'arrive_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 4}},
-        {name: '截止上期到场-金额', field: 'arrive_tp', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '截止上期扣回-数量', field: 'deduct_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 4}},
-        {name: '截止上期扣回-金额', field: 'deduct_tp', type: dataType.currency, tag: {type: 'tp'}},
-    ]
+        { name: 'id', field: 'id', type: dataType.int },
+        { name: 'uuid', field: 'uuid', type: dataType.str },
+        { name: '名称', field: 'name', type: dataType.str },
+        { name: '单位', field: 'unit', type: dataType.str },
+        { name: '单价', field: 'unit_price', type: dataType.currency, tag: { type: 'up' } },
+        { name: '本期到场-数量', field: 'arrive_qty', type: dataType.currency, tag: { type: 'qty', unitKey: 4 } },
+        { name: '本期到场-金额', field: 'arrive_tp', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '本期扣回-数量', field: 'deduct_qty', type: dataType.currency, tag: { type: 'qty', unitKey: 4 } },
+        { name: '本期扣回-金额', field: 'deduct_tp', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '材料来源', field: 'source', type: dataType.str },
+        { name: '单据号', field: 'bills_code', type: dataType.str },
+        { name: '检验单编号', field: 'check_code', type: dataType.str },
+        { name: '新增人id', field: 'add_uid', type: dataType.int },
+        { name: '新增期id', field: 'add_sid', type: dataType.int },
+        { name: '所属期id', field: 'sid', type: dataType.int },
+        { name: '期历史记录', field: 'shistory', type: dataType.str },
+        { name: '排序', field: 'order', type: dataType.int },
+        { name: '往期是否已用', field: 'pre_used', type: dataType.int },
+        { name: '截止上期到场-数量', field: 'arrive_qty', type: dataType.currency, tag: { type: 'qty', unitKey: 4 } },
+        { name: '截止上期到场-金额', field: 'arrive_tp', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '截止上期扣回-数量', field: 'deduct_qty', type: dataType.currency, tag: { type: 'qty', unitKey: 4 } },
+        { name: '截止上期扣回-金额', field: 'deduct_tp', type: dataType.currency, tag: { type: 'tp' } },
+    ],
 };
 const stage_bonus = {
     name: '期-奖罚金(mem_stage_bonus)',
@@ -61,20 +61,20 @@ const stage_bonus = {
     key: 'stage_bonus',
     prefix: '期-奖罚金',
     cols: [
-        {name: 'id', field: 'id', type: dataType.str},
-        {name: '所属标段id', field: 'tid', type: dataType.int},
-        {name: '所属期id', field: 'sid', type: dataType.int},
-        {name: '所属第几期', field: 'sorder', type: dataType.int},
-        {name: '新增人id', field: 'uid', type: dataType.int},
-        {name: '名称', field: 'name', type: dataType.str},
-        {name: '金额', field: 'tp', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '证明材料', field: 'proof', type: dataType.str},
-        {name: '创建时间', field: 'create_time', type: dataType.time},
-        {name: '时间', field: 'real_time', type: dataType.time},
-        {name: '备注', field: 'memo', type: dataType.str},
-        {name: '期历史记录', field: 'shistory', type: dataType.str},
-        {name: '排序', field: 'order', type: dataType.int},
-    ]
+        { name: 'id', field: 'id', type: dataType.str },
+        { name: '所属标段id', field: 'tid', type: dataType.int },
+        { name: '所属期id', field: 'sid', type: dataType.int },
+        { name: '所属第几期', field: 'sorder', type: dataType.int },
+        { name: '新增人id', field: 'uid', type: dataType.int },
+        { name: '名称', field: 'name', type: dataType.str },
+        { name: '金额', field: 'tp', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '证明材料', field: 'proof', type: dataType.str },
+        { name: '创建时间', field: 'create_time', type: dataType.time },
+        { name: '时间', field: 'real_time', type: dataType.time },
+        { name: '备注', field: 'memo', type: dataType.str },
+        { name: '期历史记录', field: 'shistory', type: dataType.str },
+        { name: '排序', field: 'order', type: dataType.int },
+    ],
 };
 const stage_other = {
     name: '期-其他(mem_stage_other)',
@@ -83,24 +83,24 @@ const stage_other = {
     key: 'stage_other',
     prefix: '期-其他',
     cols: [
-        {name: 'id', field: 'id', type: dataType.int},
-        {name: 'uuid', field: 'uuid', type: dataType.str},
-        {name: '所属标段id', field: 'tid', type: dataType.int},
-        {name: '所属期id', field: 'sid', type: dataType.int},
-        {name: '所属第几期', field: 'sorder', type: dataType.int},
-        {name: '新增人id', field: 'add_uid', type: dataType.int},
-        {name: '新增期id', field: 'add_sid', type: dataType.int},
-        {name: '创建时间', field: 'add_time', type: dataType.time},
-        {name: '名称', field: 'name', type: dataType.str},
-        {name: '金额', field: 'total_price', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '本期金额', field: 'tp', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '时间', field: 'real_time', type: dataType.time},
-        {name: '备注', field: 'memo', type: dataType.str},
-        {name: '期历史记录', field: 'shistory', type: dataType.str},
-        {name: '排序', field: 'order', type: dataType.int},
-        {name: '往期是否已用', field: 'pre_used', type: dataType.int},
-        {name: '截止上期-金额', field: 'pre_tp', type: dataType.currency, tag: {type: 'tp'}},
-    ]
+        { name: 'id', field: 'id', type: dataType.int },
+        { name: 'uuid', field: 'uuid', type: dataType.str },
+        { name: '所属标段id', field: 'tid', type: dataType.int },
+        { name: '所属期id', field: 'sid', type: dataType.int },
+        { name: '所属第几期', field: 'sorder', type: dataType.int },
+        { name: '新增人id', field: 'add_uid', type: dataType.int },
+        { name: '新增期id', field: 'add_sid', type: dataType.int },
+        { name: '创建时间', field: 'add_time', type: dataType.time },
+        { name: '名称', field: 'name', type: dataType.str },
+        { name: '金额', field: 'total_price', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '本期金额', field: 'tp', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '时间', field: 'real_time', type: dataType.time },
+        { name: '备注', field: 'memo', type: dataType.str },
+        { name: '期历史记录', field: 'shistory', type: dataType.str },
+        { name: '排序', field: 'order', type: dataType.int },
+        { name: '往期是否已用', field: 'pre_used', type: dataType.int },
+        { name: '截止上期-金额', field: 'pre_tp', type: dataType.currency, tag: { type: 'tp' } },
+    ],
 };
 // 变更令
 const change = {
@@ -110,39 +110,39 @@ const change = {
     key: 'mem_change',
     prefix: '变更令',
     cols: [
-        {name: '变更令id', field: 'cid', type: dataType.str},
-        {name: '变更令号', field: 'code', type: dataType.str},
-        {name: '批复文号', field: 'w_code', type: dataType.str},
-        {name: '批复编号', field: 'p_code', type: dataType.str},
-        {name: '变更名称', field: 'name', type: dataType.str},
-        {name: '桩号', field: 'peg', type: dataType.str},
-        {name: '原设计图名称', field: 'org_name', type: dataType.str},
-        {name: '原图号', field: 'org_code', type: dataType.str},
-        {name: '变更设计图名称', field: 'new_name', type: dataType.str},
-        {name: '变更图号', field: 'new_code', type: dataType.str},
-        {name: '工程变更理由及内容', field: 'content', type: dataType.str},
-        {name: '工程变更合同依据', field: 'basis', type: dataType.str},
-        {name: '变更工程量数量计算式', field: 'expr', type: dataType.str},
-        {name: '备注', field: 'memo', type: dataType.str},
-        {name: '变更类型', field: 'type', type: dataType.str},
-        {name: '变更类别', field: 'class', type: dataType.int},
-        {name: '变更性质', field: 'quality', type: dataType.int},
-        {name: '变更提出单位', field: 'company', type: dataType.str},
-        {name: '费用承担方', field: 'charge', type: dataType.int},
-        {name: '金额', field: 'total_price', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '变更状态发生时间(时间戳)', field: 'cin_time', type: dataType.str},
-        {name: '完成审批时间(时间戳)', field: 'sin—_ime', type: dataType.str},
-        {name: '金额_1', field: 'tp_1', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '金额_2', field: 'tp_2', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '金额_3', field: 'tp_3', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '金额_4', field: 'tp_4', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '金额_5', field: 'tp_5', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '金额_6', field: 'tp_6', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '金额_7', field: 'tp_7', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '金额_8', field: 'tp_8', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '金额_9', field: 'tp_9', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '附件名称列表', field: 'attNames', type: dataType.currency},
-    ]
+        { name: '变更令id', field: 'cid', type: dataType.str },
+        { name: '变更令号', field: 'code', type: dataType.str },
+        { name: '批复文号', field: 'w_code', type: dataType.str },
+        { name: '批复编号', field: 'p_code', type: dataType.str },
+        { name: '变更名称', field: 'name', type: dataType.str },
+        { name: '桩号', field: 'peg', type: dataType.str },
+        { name: '原设计图名称', field: 'org_name', type: dataType.str },
+        { name: '原图号', field: 'org_code', type: dataType.str },
+        { name: '变更设计图名称', field: 'new_name', type: dataType.str },
+        { name: '变更图号', field: 'new_code', type: dataType.str },
+        { name: '工程变更理由及内容', field: 'content', type: dataType.str },
+        { name: '工程变更合同依据', field: 'basis', type: dataType.str },
+        { name: '变更工程量数量计算式', field: 'expr', type: dataType.str },
+        { name: '备注', field: 'memo', type: dataType.str },
+        { name: '变更类型', field: 'type', type: dataType.str },
+        { name: '变更类别', field: 'class', type: dataType.int },
+        { name: '变更性质', field: 'quality', type: dataType.int },
+        { name: '变更提出单位', field: 'company', type: dataType.str },
+        { name: '费用承担方', field: 'charge', type: dataType.int },
+        { name: '金额', field: 'total_price', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '变更状态发生时间(时间戳)', field: 'cin_time', type: dataType.str },
+        { name: '完成审批时间(时间戳)', field: 'sin—_ime', type: dataType.str },
+        { name: '金额_1', field: 'tp_1', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '金额_2', field: 'tp_2', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '金额_3', field: 'tp_3', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '金额_4', field: 'tp_4', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '金额_5', field: 'tp_5', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '金额_6', field: 'tp_6', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '金额_7', field: 'tp_7', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '金额_8', field: 'tp_8', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '金额_9', field: 'tp_9', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '附件名称列表', field: 'attNames', type: dataType.currency },
+    ],
 };
 const change_bills = {
     name: '变更清单(mem_change_bills)',
@@ -151,40 +151,40 @@ const change_bills = {
     key: 'mem_change_bills',
     prefix: '变更清单',
     cols: [
-        {name: '变更令id', field: 'cid', type: dataType.str},
-        {name: '签约清单id或台账id', field: 'lid', type: dataType.str},
-        {name: '清单编号', field: 'code', type: dataType.str},
-        {name: '名称', field: 'name', type: dataType.str},
-        {name: '单位', field: 'unit', type: dataType.str},
-        {name: '单价', field: 'unit_price', type: dataType.currency, tag: {type: 'up'}},
-        {name: '原-数量', field: 'o_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 5}},
-        {name: '原-金额', field: 'o_tp', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '变更-数量', field: 'c_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 5}},
-        {name: '变更-金额', field: 'c_tp', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '审批变更后-数量', field: 's_qty', type: dataType.currency, tag: {type: 'qty', unitKey: 5}},
-        {name: '审批变更后-金额', field: 's_tp', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '部位明细', field: 'bwmx', type: dataType.str},
-        {name: '变更详情', field: 'detail', type: dataType.str},
-        {name: '数量_1', field: 'qty_1', type: dataType.currency, tag: {type: 'qty', unitKey: 5}},
-        {name: '金额_1', field: 'tp_1', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '数量_2', field: 'qty_2', type: dataType.currency, tag: {type: 'qty', unitKey: 5}},
-        {name: '金额_2', field: 'tp_2', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '数量_3', field: 'qty_3', type: dataType.currency, tag: {type: 'qty', unitKey: 5}},
-        {name: '金额_3', field: 'tp_3', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '数量_4', field: 'qty_4', type: dataType.currency, tag: {type: 'qty', unitKey: 5}},
-        {name: '金额_4', field: 'tp_4', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '数量_5', field: 'qty_5', type: dataType.currency, tag: {type: 'qty', unitKey: 5}},
-        {name: '金额_5', field: 'tp_5', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '数量_6', field: 'qty_6', type: dataType.currency, tag: {type: 'qty', unitKey: 5}},
-        {name: '金额_6', field: 'tp_6', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '数量_7', field: 'qty_7', type: dataType.currency, tag: {type: 'qty', unitKey: 5}},
-        {name: '金额_7', field: 'tp_7', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '数量_8', field: 'qty_8', type: dataType.currency, tag: {type: 'qty', unitKey: 5}},
-        {name: '金额_8', field: 'tp_8', type: dataType.currency, tag: {type: 'tp'}},
-        {name: '数量_9', field: 'qty_9', type: dataType.currency, tag: {type: 'qty', unitKey: 5}},
-        {name: '金额_9', field: 'tp_9', type: dataType.currency, tag: {type: 'tp'}},
+        { name: '变更令id', field: 'cid', type: dataType.str },
+        { name: '签约清单id或台账id', field: 'lid', type: dataType.str },
+        { name: '清单编号', field: 'code', type: dataType.str },
+        { name: '名称', field: 'name', type: dataType.str },
+        { name: '单位', field: 'unit', type: dataType.str },
+        { name: '单价', field: 'unit_price', type: dataType.currency, tag: { type: 'up' } },
+        { name: '原-数量', field: 'o_qty', type: dataType.currency, tag: { type: 'qty', unitKey: 5 } },
+        { name: '原-金额', field: 'o_tp', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '变更-数量', field: 'c_qty', type: dataType.currency, tag: { type: 'qty', unitKey: 5 } },
+        { name: '变更-金额', field: 'c_tp', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '审批变更后-数量', field: 's_qty', type: dataType.currency, tag: { type: 'qty', unitKey: 5 } },
+        { name: '审批变更后-金额', field: 's_tp', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '部位明细', field: 'bwmx', type: dataType.str },
+        { name: '变更详情', field: 'detail', type: dataType.str },
+        { name: '数量_1', field: 'qty_1', type: dataType.currency, tag: { type: 'qty', unitKey: 5 } },
+        { name: '金额_1', field: 'tp_1', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '数量_2', field: 'qty_2', type: dataType.currency, tag: { type: 'qty', unitKey: 5 } },
+        { name: '金额_2', field: 'tp_2', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '数量_3', field: 'qty_3', type: dataType.currency, tag: { type: 'qty', unitKey: 5 } },
+        { name: '金额_3', field: 'tp_3', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '数量_4', field: 'qty_4', type: dataType.currency, tag: { type: 'qty', unitKey: 5 } },
+        { name: '金额_4', field: 'tp_4', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '数量_5', field: 'qty_5', type: dataType.currency, tag: { type: 'qty', unitKey: 5 } },
+        { name: '金额_5', field: 'tp_5', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '数量_6', field: 'qty_6', type: dataType.currency, tag: { type: 'qty', unitKey: 5 } },
+        { name: '金额_6', field: 'tp_6', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '数量_7', field: 'qty_7', type: dataType.currency, tag: { type: 'qty', unitKey: 5 } },
+        { name: '金额_7', field: 'tp_7', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '数量_8', field: 'qty_8', type: dataType.currency, tag: { type: 'qty', unitKey: 5 } },
+        { name: '金额_8', field: 'tp_8', type: dataType.currency, tag: { type: 'tp' } },
+        { name: '数量_9', field: 'qty_9', type: dataType.currency, tag: { type: 'qty', unitKey: 5 } },
+        { name: '金额_9', field: 'tp_9', type: dataType.currency, tag: { type: 'tp' } },
 
-    ]
+    ],
 };
 // 期 - 计量单元
 const stage_pos = {
@@ -194,29 +194,29 @@ const stage_pos = {
     key: 'mem_stage_pos',
     prefix: '期-计量单元',
     cols: [
-        {name: 'id', field: 'id', type: dataType.str},
-        {name: '所属标段id', field: 'tid', type: dataType.int},
-        {name: '所属清单id', field: 'lid', type: dataType.str},
-        {name: '名称', field: 'name', type: dataType.str},
-        {name: '位置', field: 'position', type: dataType.str},
-        {name: '施工复核-数量', field: 'sgfh_qty', type: dataType.currency},
-        {name: '其他错漏-数量', field: 'qtcl_qty', type: dataType.currency},
-        {name: '设计错漏-数量', field: 'sjcl_qty', type: dataType.currency},
-        {name: '台账-数量', field: 'quantity', type: dataType.currency},
-        {name: '图号', field: 'drawing_code', type: dataType.str},
-        {name: '排序', field: 'p_order', type: dataType.str},
-        {name: '本期-合同计量-数量', field: 'contract_qty', type: dataType.currency},
-        {name: '本期-数量变更-数量', field: 'qc_qty', type: dataType.currency},
-        {name: '本期-数量变更-变更令', field: 'qc_bgl_code', type: dataType.str},
-        {name: '本期-完成计量-数量', field: 'gather_qty', type: dataType.currency},
-        {name: '本期批注', field: 'postil', type: dataType.str},
-        {name: '截止上期-合同计量-数量', field: 'pre_contract_qty', type: dataType.currency},
-        {name: '截止上期-数量变更-数量', field: 'pre_qc_qty', type: dataType.currency},
-        {name: '截止上期-完成计量-数量', field: 'pre_gather_qty', type: dataType.currency},
-        {name: '截止本期-合同计量-数量', field: 'end_contract_qty', type: dataType.currency},
-        {name: '截止本期-数量变更-数量', field: 'end_qc_qty', type: dataType.currency},
-        {name: '截止本期-完成计量-数量', field: 'end_gather_qty', type: dataType.currency},
-        {name: '截止本期-完成率', field: 'final_ratio', type: dataType.currency},
+        { name: 'id', field: 'id', type: dataType.str },
+        { name: '所属标段id', field: 'tid', type: dataType.int },
+        { name: '所属清单id', field: 'lid', type: dataType.str },
+        { name: '名称', field: 'name', type: dataType.str },
+        { name: '位置', field: 'position', type: dataType.str },
+        { name: '施工复核-数量', field: 'sgfh_qty', type: dataType.currency },
+        { name: '其他错漏-数量', field: 'qtcl_qty', type: dataType.currency },
+        { name: '设计错漏-数量', field: 'sjcl_qty', type: dataType.currency },
+        { name: '台账-数量', field: 'quantity', type: dataType.currency },
+        { name: '图号', field: 'drawing_code', type: dataType.str },
+        { name: '排序', field: 'p_order', type: dataType.str },
+        { name: '本期-合同计量-数量', field: 'contract_qty', type: dataType.currency },
+        { name: '本期-数量变更-数量', field: 'qc_qty', type: dataType.currency },
+        { name: '本期-数量变更-变更令', field: 'qc_bgl_code', type: dataType.str },
+        { name: '本期-完成计量-数量', field: 'gather_qty', type: dataType.currency },
+        { name: '本期批注', field: 'postil', type: dataType.str },
+        { name: '截止上期-合同计量-数量', field: 'pre_contract_qty', type: dataType.currency },
+        { name: '截止上期-数量变更-数量', field: 'pre_qc_qty', type: dataType.currency },
+        { name: '截止上期-完成计量-数量', field: 'pre_gather_qty', type: dataType.currency },
+        { name: '截止本期-合同计量-数量', field: 'end_contract_qty', type: dataType.currency },
+        { name: '截止本期-数量变更-数量', field: 'end_qc_qty', type: dataType.currency },
+        { name: '截止本期-完成计量-数量', field: 'end_gather_qty', type: dataType.currency },
+        { name: '截止本期-完成率', field: 'final_ratio', type: dataType.currency },
     ],
 };
 const stage_pos_compare = {
@@ -226,135 +226,203 @@ const stage_pos_compare = {
     key: 'mem_stage_pos_compare',
     prefix: '期-计量单元-全参与人',
     cols: [
-        {name: 'id', field: 'id', type: dataType.str},
-        {name: '所属标段id', field: 'tid', type: dataType.int},
-        {name: '所属清单id', field: 'lid', type: dataType.str},
-        {name: '名称', field: 'name', type: dataType.str},
-        {name: '位置', field: 'position', type: dataType.str},
-        {name: '施工复核-数量', field: 'sgfh_qty', type: dataType.currency},
-        {name: '其他错漏-数量', field: 'qtcl_qty', type: dataType.currency},
-        {name: '设计错漏-数量', field: 'sjcl_qty', type: dataType.currency},
-        {name: '台账-数量', field: 'quantity', type: dataType.currency},
-        {name: '图号', field: 'drawing_code', type: dataType.str},
-        {name: '排序', field: 'p_order', type: dataType.str},
-        {name: '截止上期-合同计量-数量', field: 'pre_contract_qty', type: dataType.currency},
-        {name: '截止上期-数量变更-数量', field: 'pre_qc_qty', type: dataType.currency},
-        {name: '截止上期-完成计量-数量', field: 'pre_gather_qty', type: dataType.currency},
-        {name: '本期-合同计量-数量_0', field: 'r0_contract_qty', type: dataType.currency},
-        {name: '本期-数量变更-数量_0', field: 'r0_qc_qty', type: dataType.currency},
-        {name: '本期-完成计量-数量_0', field: 'r0_gather_qty', type: dataType.currency},
-        {name: '本期-合同计量-数量_1', field: 'r1_contract_qty', type: dataType.currency},
-        {name: '本期-数量变更-数量_1', field: 'r1_qc_qty', type: dataType.currency},
-        {name: '本期-完成计量-数量_1', field: 'r1_gather_qty', type: dataType.currency},
-        {name: '本期-合同计量-数量_2', field: 'r2_contract_qty', type: dataType.currency},
-        {name: '本期-数量变更-数量_2', field: 'r2_qc_qty', type: dataType.currency},
-        {name: '本期-完成计量-数量_2', field: 'r2_gather_qty', type: dataType.currency},
-        {name: '本期-合同计量-数量_3', field: 'r3_contract_qty', type: dataType.currency},
-        {name: '本期-数量变更-数量_3', field: 'r3_qc_qty', type: dataType.currency},
-        {name: '本期-完成计量-数量_3', field: 'r3_gather_qty', type: dataType.currency},
-        {name: '本期-合同计量-数量_4', field: 'r4_contract_qty', type: dataType.currency},
-        {name: '本期-数量变更-数量_4', field: 'r4_qc_qty', type: dataType.currency},
-        {name: '本期-完成计量-数量_4', field: 'r4_gather_qty', type: dataType.currency},
-        {name: '本期-合同计量-数量_5', field: 'r5_contract_qty', type: dataType.currency},
-        {name: '本期-数量变更-数量_5', field: 'r5_qc_qty', type: dataType.currency},
-        {name: '本期-完成计量-数量_5', field: 'r5_gather_qty', type: dataType.currency},
-        {name: '本期-合同计量-数量_6', field: 'r6_contract_qty', type: dataType.currency},
-        {name: '本期-数量变更-数量_6', field: 'r6_qc_qty', type: dataType.currency},
-        {name: '本期-完成计量-数量_6', field: 'r6_gather_qty', type: dataType.currency},
-        {name: '本期-合同计量-数量_7', field: 'r7_contract_qty', type: dataType.currency},
-        {name: '本期-数量变更-数量_7', field: 'r7_qc_qty', type: dataType.currency},
-        {name: '本期-完成计量-数量_7', field: 'r7_gather_qty', type: dataType.currency},
-        {name: '本期-合同计量-数量_8', field: 'r8_contract_qty', type: dataType.currency},
-        {name: '本期-数量变更-数量_8', field: 'r8_qc_qty', type: dataType.currency},
-        {name: '本期-完成计量-数量_8', field: 'r8_gather_qty', type: dataType.currency},
-        {name: '本期-合同计量-数量_9', field: 'r9_contract_qty', type: dataType.currency},
-        {name: '本期-数量变更-数量_9', field: 'r9_qc_qty', type: dataType.currency},
-        {name: '本期-完成计量-数量_9', field: 'r9_gather_qty', type: dataType.currency},
+        { name: 'id', field: 'id', type: dataType.str },
+        { name: '所属标段id', field: 'tid', type: dataType.int },
+        { name: '所属清单id', field: 'lid', type: dataType.str },
+        { name: '名称', field: 'name', type: dataType.str },
+        { name: '位置', field: 'position', type: dataType.str },
+        { name: '施工复核-数量', field: 'sgfh_qty', type: dataType.currency },
+        { name: '其他错漏-数量', field: 'qtcl_qty', type: dataType.currency },
+        { name: '设计错漏-数量', field: 'sjcl_qty', type: dataType.currency },
+        { name: '台账-数量', field: 'quantity', type: dataType.currency },
+        { name: '图号', field: 'drawing_code', type: dataType.str },
+        { name: '排序', field: 'p_order', type: dataType.str },
+        { name: '截止上期-合同计量-数量', field: 'pre_contract_qty', type: dataType.currency },
+        { name: '截止上期-数量变更-数量', field: 'pre_qc_qty', type: dataType.currency },
+        { name: '截止上期-完成计量-数量', field: 'pre_gather_qty', type: dataType.currency },
+        { name: '本期-合同计量-数量_0', field: 'r0_contract_qty', type: dataType.currency },
+        { name: '本期-数量变更-数量_0', field: 'r0_qc_qty', type: dataType.currency },
+        { name: '本期-完成计量-数量_0', field: 'r0_gather_qty', type: dataType.currency },
+        { name: '本期-合同计量-数量_1', field: 'r1_contract_qty', type: dataType.currency },
+        { name: '本期-数量变更-数量_1', field: 'r1_qc_qty', type: dataType.currency },
+        { name: '本期-完成计量-数量_1', field: 'r1_gather_qty', type: dataType.currency },
+        { name: '本期-合同计量-数量_2', field: 'r2_contract_qty', type: dataType.currency },
+        { name: '本期-数量变更-数量_2', field: 'r2_qc_qty', type: dataType.currency },
+        { name: '本期-完成计量-数量_2', field: 'r2_gather_qty', type: dataType.currency },
+        { name: '本期-合同计量-数量_3', field: 'r3_contract_qty', type: dataType.currency },
+        { name: '本期-数量变更-数量_3', field: 'r3_qc_qty', type: dataType.currency },
+        { name: '本期-完成计量-数量_3', field: 'r3_gather_qty', type: dataType.currency },
+        { name: '本期-合同计量-数量_4', field: 'r4_contract_qty', type: dataType.currency },
+        { name: '本期-数量变更-数量_4', field: 'r4_qc_qty', type: dataType.currency },
+        { name: '本期-完成计量-数量_4', field: 'r4_gather_qty', type: dataType.currency },
+        { name: '本期-合同计量-数量_5', field: 'r5_contract_qty', type: dataType.currency },
+        { name: '本期-数量变更-数量_5', field: 'r5_qc_qty', type: dataType.currency },
+        { name: '本期-完成计量-数量_5', field: 'r5_gather_qty', type: dataType.currency },
+        { name: '本期-合同计量-数量_6', field: 'r6_contract_qty', type: dataType.currency },
+        { name: '本期-数量变更-数量_6', field: 'r6_qc_qty', type: dataType.currency },
+        { name: '本期-完成计量-数量_6', field: 'r6_gather_qty', type: dataType.currency },
+        { name: '本期-合同计量-数量_7', field: 'r7_contract_qty', type: dataType.currency },
+        { name: '本期-数量变更-数量_7', field: 'r7_qc_qty', type: dataType.currency },
+        { name: '本期-完成计量-数量_7', field: 'r7_gather_qty', type: dataType.currency },
+        { name: '本期-合同计量-数量_8', field: 'r8_contract_qty', type: dataType.currency },
+        { name: '本期-数量变更-数量_8', field: 'r8_qc_qty', type: dataType.currency },
+        { name: '本期-完成计量-数量_8', field: 'r8_gather_qty', type: dataType.currency },
+        { name: '本期-合同计量-数量_9', field: 'r9_contract_qty', type: dataType.currency },
+        { name: '本期-数量变更-数量_9', field: 'r9_qc_qty', type: dataType.currency },
+        { name: '本期-完成计量-数量_9', field: 'r9_gather_qty', type: dataType.currency },
     ],
 };
 
 // 期 - 合同支付
 const stage_pay = {
-    Name: '期-合同支付-数据(mem_stage_pay)',
+    name: '期-合同支付-数据(mem_stage_pay)',
     remark: '',
     id: 27,
     key: 'mem_stage_pay',
     prefix: '期-合同支付',
     cols: [
-        {name: '名称', field: 'name', type: dataType.str},
-        {name: '计算公式', field: 'expr', type: dataType.str},
-        {name: '金额', field: 'tp', type: dataType.currency},
-        {name: '截止上期-金额', field: 'pre_tp', type: dataType.currency},
-        {name: '截止上期-金额', field: 'end_tp', type: dataType.currency},
-        {name: '排序', field: 'order', type: dataType.int},
-        {name: '是否扣款项', field: 'minus', type: dataType.int},
-        {name: '支付类型', field: 'ptype', type: dataType.int},
-        {name: '起扣金额', field: 'sprice', type: dataType.currency},
-        {name: '扣款限额', field: 'rprice', type: dataType.currency},
-        {name: '流程-本期-金额_0', field: 'r0_tp', type: dataType.currency},
-        {name: '流程-本期-金额_1', field: 'r1_tp', type: dataType.currency},
-        {name: '流程-本期-金额_2', field: 'r2_tp', type: dataType.currency},
-        {name: '流程-本期-金额_3', field: 'r3_tp', type: dataType.currency},
-        {name: '流程-本期-金额_4', field: 'r4_tp', type: dataType.currency},
-        {name: '流程-本期-金额_5', field: 'r5_tp', type: dataType.currency},
-        {name: '流程-本期-金额_6', field: 'r6_tp', type: dataType.currency},
-        {name: '流程-本期-金额_7', field: 'r7_tp', type: dataType.currency},
-        {name: '流程-本期-金额_8', field: 'r8_tp', type: dataType.currency},
-        {name: '流程-本期-金额_9', field: 'r9_tp', type: dataType.currency},
-        {name: '第几期开始计量', field: 'start_stage_order', type: dataType.int},
+        { name: '名称', field: 'name', type: dataType.str },
+        { name: '计算公式', field: 'expr', type: dataType.str },
+        { name: '金额', field: 'tp', type: dataType.currency },
+        { name: '截止上期-金额', field: 'pre_tp', type: dataType.currency },
+        { name: '截止上期-金额', field: 'end_tp', type: dataType.currency },
+        { name: '排序', field: 'order', type: dataType.int },
+        { name: '是否扣款项', field: 'minus', type: dataType.int },
+        { name: '支付类型', field: 'ptype', type: dataType.int },
+        { name: '起扣金额', field: 'sprice', type: dataType.currency },
+        { name: '扣款限额', field: 'rprice', type: dataType.currency },
+        { name: '流程-本期-金额_0', field: 'r0_tp', type: dataType.currency },
+        { name: '流程-本期-金额_1', field: 'r1_tp', type: dataType.currency },
+        { name: '流程-本期-金额_2', field: 'r2_tp', type: dataType.currency },
+        { name: '流程-本期-金额_3', field: 'r3_tp', type: dataType.currency },
+        { name: '流程-本期-金额_4', field: 'r4_tp', type: dataType.currency },
+        { name: '流程-本期-金额_5', field: 'r5_tp', type: dataType.currency },
+        { name: '流程-本期-金额_6', field: 'r6_tp', type: dataType.currency },
+        { name: '流程-本期-金额_7', field: 'r7_tp', type: dataType.currency },
+        { name: '流程-本期-金额_8', field: 'r8_tp', type: dataType.currency },
+        { name: '流程-本期-金额_9', field: 'r9_tp', type: dataType.currency },
+        { name: '第几期开始计量', field: 'start_stage_order', type: dataType.int },
     ],
 };
 
 // 期 - 中间计量
 const stage_im_zl = {
-    Name: '期-中间计量-总量-数据(mem_stage_im_zl)',
+    name: '期-中间计量-总量-数据(mem_stage_im_zl)',
     remark: '',
     id: 21,
     key: 'mem_stage_im_zl',
     prefix: '期-中间计量-总量',
     cols: [
-        {name: '台账id', field: 'lid', type: dataType.str},
-        {name: '部位id', field: 'pid', type: dataType.str},
-        {name: '编号', field: 'code', type: dataType.str},
-        {name: '名称', field: 'name', type: dataType.str},
-        {name: '单位', field: 'unit', type: dataType.str},
-        {name: '单价', field: 'unit_price', type: dataType.currency},
-        {name: '本期数量', field: 'jl', type: dataType.currency},
-        {name: '本期合同数量', field: 'contract_jl', type: dataType.currency},
-        {name: '本期变更数量', field: 'qc_jl', type: dataType.currency},
-        {name: '桩号', field: 'peg', type: dataType.str},
-        {name: '图册号', field: 'drawing_code', type: dataType.str},
-        {name: '勾选标记 - 勿用', field: 'check', type: dataType.int},
-        {name: '部位', field: 'bw', type: dataType.str},
-        {name: '细目', field: 'xm', type: dataType.str},
-        {name: '凭证号', field: 'doc_code', type: dataType.str},
-        {name: '计算式说明', field: 'calc_memo', type: dataType.str},
-        {name: '草图', field: 'calc_img', type: dataType.str, isPic: true},
-        {name: '变更令号', field: 'bgl_code', type: dataType.str},
-        {name: '变更图号', field: 'bgl_drawing_code', type: dataType.str},
-        {name: '中间计量表号', field: 'im_code', type: dataType.str},
-        {name: '截止上期 - 本期数量', field: 'pre_jl', type: dataType.currency},
-        {name: '截止上期 - 本期合同数量', field: 'pre_contract_jl', type: dataType.currency},
-        {name: '截止上期 - 本期变更数量', field: 'pre_qc_jl', type: dataType.currency},
-        {name: '截止本期 - 本期数量', field: 'end_jl', type: dataType.currency},
-        {name: '截止本期 - 本期合同数量', field: 'end_contract_jl', type: dataType.currency},
-        {name: '截止本期 - 本期变更数量', field: 'end_qc_jl', type: dataType.currency},
-        {name: '本期金额', field: 'tp', type: dataType.currency},
-        {name: '本期合同金额', field: 'contract_tp', type: dataType.currency},
-        {name: '本期变更金额', field: 'qc_tp', type: dataType.currency},
-        {name: '截止上期 - 本期金额', field: 'pre_tp', type: dataType.currency},
-        {name: '截止上期 - 本期合同金额', field: 'pre_contract_tp', type: dataType.currency},
-        {name: '截止上期 - 本期变更金额', field: 'pre_qc_tp', type: dataType.currency},
-        {name: '截止本期 - 本期金额', field: 'end_tp', type: dataType.currency},
-        {name: '截止本期 - 本期合同金额', field: 'end_contract_tp', type: dataType.currency},
-        {name: '截止本期 - 本期变更金额', field: 'end_qc_tp', type: dataType.currency},
-        {name: '台账数量', field: 'quantity', type: dataType.currency},
-        {name: '台账金额', field: 'total_price', type: dataType.currency},
-
-    ]
+        { name: '台账id', field: 'lid', type: dataType.str },
+        { name: '部位id', field: 'pid', type: dataType.str },
+        { name: '编号', field: 'code', type: dataType.str },
+        { name: '名称', field: 'name', type: dataType.str },
+        { name: '单位', field: 'unit', type: dataType.str },
+        { name: '单价', field: 'unit_price', type: dataType.currency },
+        { name: '本期数量', field: 'jl', type: dataType.currency },
+        { name: '本期合同数量', field: 'contract_jl', type: dataType.currency },
+        { name: '本期变更数量', field: 'qc_jl', type: dataType.currency },
+        { name: '桩号', field: 'peg', type: dataType.str },
+        { name: '图册号', field: 'drawing_code', type: dataType.str },
+        { name: '勾选标记 - 勿用', field: 'check', type: dataType.int },
+        { name: '部位', field: 'bw', type: dataType.str },
+        { name: '细目', field: 'xm', type: dataType.str },
+        { name: '凭证号', field: 'doc_code', type: dataType.str },
+        { name: '计算式说明', field: 'calc_memo', type: dataType.str },
+        { name: '草图', field: 'calc_img', type: dataType.str, isPic: true },
+        { name: '变更令号', field: 'bgl_code', type: dataType.str },
+        { name: '变更图号', field: 'bgl_drawing_code', type: dataType.str },
+        { name: '中间计量表号', field: 'im_code', type: dataType.str },
+        { name: '截止上期 - 数量', field: 'pre_jl', type: dataType.currency },
+        { name: '截止上期 - 合同数量', field: 'pre_contract_jl', type: dataType.currency },
+        { name: '截止上期 - 变更数量', field: 'pre_qc_jl', type: dataType.currency },
+        { name: '截止本期 - 数量', field: 'end_jl', type: dataType.currency },
+        { name: '截止本期 - 合同数量', field: 'end_contract_jl', type: dataType.currency },
+        { name: '截止本期 - 变更数量', field: 'end_qc_jl', type: dataType.currency },
+        { name: '本期金额', field: 'tp', type: dataType.currency },
+        { name: '本期合同金额', field: 'contract_tp', type: dataType.currency },
+        { name: '本期变更金额', field: 'qc_tp', type: dataType.currency },
+        { name: '截止上期 - 金额', field: 'pre_tp', type: dataType.currency },
+        { name: '截止上期 - 合同金额', field: 'pre_contract_tp', type: dataType.currency },
+        { name: '截止上期 - 变更金额', field: 'pre_qc_tp', type: dataType.currency },
+        { name: '截止本期 - 金额', field: 'end_tp', type: dataType.currency },
+        { name: '截止本期 - 合同金额', field: 'end_contract_tp', type: dataType.currency },
+        { name: '截止本期 - 变更金额', field: 'end_qc_tp', type: dataType.currency },
+        { name: '台账数量', field: 'quantity', type: dataType.currency },
+        { name: '台账金额', field: 'total_price', type: dataType.currency },
+    ],
+};
+const stage_im_tz = {
+    name: '期-中间计量-台账-数据(mem_stage_im_tz)',
+    remark: '',
+    id: 19,
+    key: 'mem_stage_im_tz',
+    prefix: '期-中间计量-台账',
+    cols: [
+        { name: 'id', field: 'id', type: dataType.int },
+        { name: '台账id', field: 'lid', type: dataType.str },
+        { name: '部位id', field: 'pid', type: dataType.str },
+        { name: '编号', field: 'code', type: dataType.str },
+        { name: '本期金额', field: 'jl', type: dataType.currency },
+        { name: '本期合同金额', field: 'contract_jl', type: dataType.currency },
+        { name: '本期变更金额', field: 'qc_jl', type: dataType.currency },
+        { name: '桩号', field: 'peg', type: dataType.str },
+        { name: '图册号', field: 'drawing_code', type: dataType.str },
+        { name: '部位', field: 'bw', type: dataType.str },
+        { name: '细目', field: 'xm', type: dataType.str },
+        { name: '勾选标记 - 勿用', field: 'check', type: dataType.int },
+        { name: '计算式说明', field: 'calc_memo', type: dataType.str },
+        { name: '变更令号', field: 'bgl_code', type: dataType.str },
+        { name: '变更图号', field: 'bgl_drawing_code', type: dataType.str },
+        { name: '中间计量表号', field: 'im_code', type: dataType.str },
+        { name: '凭证号', field: 'doc_code', type: dataType.str },
+        { name: '草图', field: 'calc_img', type: dataType.str, isPic: true },
+        { name: '截止上期 - 金额', field: 'pre_jl', type: dataType.currency },
+        { name: '截止上期 - 合同金额', field: 'pre_contract_jl', type: dataType.currency },
+        { name: '截止上期 - 变更金额', field: 'pre_qc_jl', type: dataType.currency },
+        { name: '截止本期 - 金额', field: 'end_jl', type: dataType.currency },
+        { name: '截止本期 - 合同金额', field: 'end_contract_jl', type: dataType.currency },
+        { name: '截止本期 - 变更金额', field: 'end_qc_jl', type: dataType.currency },
+    ],
+};
+const stage_im_tz_bills = {
+    name: '期-中间计量-台账清单-数据(mem_stage_im_tz_bills)',
+    remark: '',
+    id: 20,
+    key: 'mem_stage_im_tz_bills',
+    prefix: '期-中间计量-台账清单',
+    cols: [
+        { name: '中间计量id', field: 'imid', type: dataType.int },
+        { name: '清单id', field: 'bid', type: dataType.str },
+        { name: '清单编号', field: 'b_code', type: dataType.str },
+        { name: '名称', field: 'name', type: dataType.str },
+        { name: '单位', field: 'unit', type: dataType.str },
+        { name: '单价', field: 'unit_price', type: dataType.currency },
+        { name: '本期数量', field: 'jl', type: dataType.currency },
+        { name: '本期合同数量', field: 'contract_jl', type: dataType.currency },
+        { name: '本期变更数量', field: 'qc_jl', type: dataType.currency },
+        { name: '中间计量表号', field: 'im_code', type: dataType.str },
+        { name: '截止上期 - 数量', field: 'pre_jl', type: dataType.currency },
+        { name: '截止上期 - 合同数量', field: 'pre_contract_jl', type: dataType.currency },
+        { name: '截止上期 - 变更数量', field: 'pre_qc_jl', type: dataType.currency },
+        { name: '截止本期 - 数量', field: 'end_jl', type: dataType.currency },
+        { name: '截止本期 - 合同数量', field: 'end_contract_jl', type: dataType.currency },
+        { name: '截止本期 - 变更数量', field: 'end_qc_jl', type: dataType.currency },
+        { name: '本期金额', field: 'tp', type: dataType.currency },
+        { name: '本期合同金额', field: 'contract_tp', type: dataType.currency },
+        { name: '本期变更金额', field: 'qc_tp', type: dataType.currency },
+        { name: '截止上期 - 金额', field: 'pre_tp', type: dataType.currency },
+        { name: '截止上期 - 合同金额', field: 'pre_contract_tp', type: dataType.currency },
+        { name: '截止上期 - 变更金额', field: 'pre_qc_tp', type: dataType.currency },
+        { name: '截止本期 - 金额', field: 'end_tp', type: dataType.currency },
+        { name: '截止本期 - 合同金额', field: 'end_contract_tp', type: dataType.currency },
+        { name: '截止本期 - 变更金额', field: 'end_qc_tp', type: dataType.currency },
+        { name: '台账数量', field: 'quantity', type: dataType.currency },
+        { name: '台账金额', field: 'total_price', type: dataType.currency },
+    ],
 };
 
-const recursiveMkdirSync = async function (pathName) {
+const recursiveMkdirSync = async function(pathName) {
     if (!fs.existsSync(pathName)) {
         const upperPath = path.dirname(pathName);
         if (!fs.existsSync(upperPath)) {
@@ -363,7 +431,7 @@ const recursiveMkdirSync = async function (pathName) {
         await fs.mkdirSync(pathName);
     }
 };
-const saveBufferFile = async function (buffer, fileName) {
+const saveBufferFile = async function(buffer, fileName) {
     // 检查文件夹是否存在,不存在则直接创建文件夹
     const pathName = path.dirname(fileName);
     if (!fs.existsSync(pathName)) {
@@ -373,8 +441,8 @@ const saveBufferFile = async function (buffer, fileName) {
 };
 const addFields = function(table, col) {
     const data = {};
-    data.ID = table.ID * 100 + table.items.length + 1;
-    data.Name = col.name + '(' + col.field + ')';
+    data.ID = table.ID * 100 + (col.id ? Math.max(table.items.length + 1, col.id) : table.items.length + 1);
+    data.Name = col.name + (col.field ? '(' + col.field + ')' : '');
     if (table.prefix && table.prefix !== '') data.Name = table.prefix + '-' + data.Name;
     data.DataType = col.type;
     data.TableName = table.key;
@@ -383,17 +451,17 @@ const addFields = function(table, col) {
     if (col.tag) {
         switch (tag.type) {
             case 'up':
-                data.Precision = { type: "fixed", fixedMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'decimal.up')" };
+                data.Precision = { type: 'fixed', fixedMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'decimal.up')" };
                 break;
             case 'tp':
                 if (col.tag.subType) {
-                    data.Precision = { type: "fixed", fixedMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'decimal." + "_" + col.tag.subType + "_tp')" };
+                    data.Precision = { type: 'fixed', fixedMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'decimal." + '_' + col.tag.subType + "_tp')" };
                 } else {
-                    data.Precision = { type: "fixed", fixedMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'decimal.tp')" };
+                    data.Precision = { type: 'fixed', fixedMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'decimal.tp')" };
                 }
                 break;
             case 'qty':
-                data.Precision = { type: "flexible", flexibleRefFieldID: table.ID * 100 + tag.unitKey, flexibleMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'precision')" };
+                data.Precision = { type: 'flexible', flexibleRefFieldID: table.ID * 100 + tag.unitKey, flexibleMapExpression: "$PROJECT.REPORT.getProperty('tender_info', 'precision')" };
                 break;
         }
     }
@@ -402,25 +470,25 @@ const addFields = function(table, col) {
     }
     table.items.push(data);
 };
-const saveTableDefine = async function (tableDefine, file) {
+const saveTableDefine = async function(tableDefine, file) {
     delete tableDefine.ID;
     delete tableDefine.key;
     delete tableDefine.prefix;
-    let defineStr = JSON.stringify(tableDefine, "", "\t");
+    let defineStr = JSON.stringify(tableDefine, '', '\t');
     const replaceStr = [
-        {match: '"Name":', str: 'Name:'},
-        {match: '"remark":', str: 'remark:'},
-        {match: '"items":', str: 'items:'},
-        {match: '"ID":', str: 'ID:'},
-        {match: '"DataType":', str: 'DataType:'},
-        {match: '"TableName":', str: 'TableName:'},
-        {match: '"descr":', str: 'descr:'},
-        {match: '"mapExpression":', str: 'mapExpression:'},
-        {match: '"Precision":', str: 'Precision:'},
-        {match: '"type":', str: 'type:'},
-        {match: '"flexibleRefFieldID":', str: 'flexibleRefFieldID:'},
-        {match: '"fixedMapExpression":', str: 'fixedMapExpression:'},
-        {match: '"flexibleMapExpression":', str: 'flexibleMapExpression:'},
+        { match: '"Name":', str: 'Name:' },
+        { match: '"remark":', str: 'remark:' },
+        { match: '"items":', str: 'items:' },
+        { match: '"ID":', str: 'ID:' },
+        { match: '"DataType":', str: 'DataType:' },
+        { match: '"TableName":', str: 'TableName:' },
+        { match: '"descr":', str: 'descr:' },
+        { match: '"mapExpression":', str: 'mapExpression:' },
+        { match: '"Precision":', str: 'Precision:' },
+        { match: '"type":', str: 'type:' },
+        { match: '"flexibleRefFieldID":', str: 'flexibleRefFieldID:' },
+        { match: '"fixedMapExpression":', str: 'fixedMapExpression:' },
+        { match: '"flexibleMapExpression":', str: 'flexibleMapExpression:' },
     ];
     for (const rs of replaceStr) {
         const reg = new RegExp(rs.match, 'gm');
@@ -429,7 +497,7 @@ const saveTableDefine = async function (tableDefine, file) {
     await saveBufferFile(defineStr, file);
 };
 
-const exportTableDefine = async function (define) {
+const exportTableDefine = async function(define) {
     const tableDefine = {};
     tableDefine.Name = define.name;// '期-清单-全参与人数据表(mem_stage_bills_compare)';
     tableDefine.remark = define.remark;
@@ -440,6 +508,7 @@ const exportTableDefine = async function (define) {
     for (const col of define.cols) {
         addFields(tableDefine, col);
     }
+    addFields(tableDefine, { id: 99, name: '空白', field: '', type: dataType.str });
     await saveTableDefine(tableDefine, path.join(savePath, define.key + '_define.json'));
 };
 
@@ -447,7 +516,7 @@ const defines = [stage_jgcl, stage_bonus, stage_other,
     change, change_bills,
     stage_pos, stage_pos_compare,
     stage_pay,
-    stage_im_zl
+    stage_im_zl, stage_im_tz, stage_im_tz_bills,
 ];
 for (const d of defines) {
     exportTableDefine(d);