Browse Source

备注相关

MaiXinRong 9 months ago
parent
commit
576f8256ff

+ 6 - 0
app/const/spread.js

@@ -790,6 +790,11 @@ const SpreadSpec = {
         ],
     }
 };
+const SpecSpreadColFields = [
+    { key: 'ex_memo1', fields: ['ex_memo1'] },
+    { key: 'ex_memo3', fields: ['ex_memo2'] },
+    { key: 'ex_memo3', fields: ['ex_memo3'] },
+];
 
 const withCl = {
     ledger: {
@@ -1414,6 +1419,7 @@ module.exports = {
     ProjectSpreadTemplate,
     BaseSpreadColSetting,
     SpreadSpec,
+    SpecSpreadColFields,
     withoutClReplace,
     withCl,
     withoutCl,

+ 18 - 14
app/controller/ledger_controller.js

@@ -66,7 +66,7 @@ module.exports = app => {
                 (tender.ledger_status === auditConst.status.checked && upPermission);
         }
 
-        _getLedgerColumn(sjsRela) {
+        async _getLedgerColumn() {
             const tender = this.ctx.tender;
             const ledgerColumn = [
                 'id', 'tender_id', 'ledger_id', 'ledger_pid', 'level', 'order', 'full_path', 'is_leaf',
@@ -77,12 +77,13 @@ module.exports = app => {
             if (tender.info.display.ledger.clQty) ledgerColumn.push('sjcl_qty', 'qtcl_qty', 'sjcl_expr', 'qtcl_expr', 'sjcl_tp', 'qtcl_tp');
             const posColumn = ['id', 'tid', 'lid', 'name', 'position', 'porder', 'sgfh_qty', 'sgfh_expr', 'add_stage_order', 'drawing_code', 'quantity'];
             if (tender.info.display.ledger.clQty) posColumn.push('sjcl_qty', 'qtcl_qty', 'sjcl_expr', 'qtcl_expr');
-            for (const field of sjsRela.ledgerCol) {
-                if (field.show) {
-                    ledgerColumn.push(field.field);
-                    posColumn.push(field.field);
-                }
+
+            const extraFields = await spreadSetting.getExtraFields(this.ctx, tender.id);
+            if (extraFields.length > 0) {
+                ledgerColumn.push(...extraFields);
+                posColumn.push(...extraFields);
             }
+
             return [ledgerColumn, posColumn];
         }
 
@@ -427,15 +428,18 @@ module.exports = app => {
          */
         async loadExplodeData(ctx) {
             try {
-                const sjsRela = await ctx.service.project.getTenderSjsRela(ctx.session.sessionProject.id, ctx.tender.info.display.exMemo);
-                const [ledgerColumn, posColumn] = this._getLedgerColumn(sjsRela);
-                const ledgerData = ctx.tender.ledgerReadOnly && ctx.tender.his
-                    ? await ctx.helper.loadLedgerDataFromOss(ctx.tender.his.bills_file)
-                    : await ctx.service.ledger.getAllDataByCondition({ columns: ledgerColumn, where: { tender_id: ctx.tender.id } });
+                const [ledgerColumn, posColumn] = await this._getLedgerColumn();
+                // const ledgerData = ctx.tender.ledgerReadOnly && ctx.tender.his
+                //     ? await ctx.helper.loadLedgerDataFromOss(ctx.tender.his.bills_file)
+                //     : await ctx.service.ledger.getAllDataByCondition({ columns: ledgerColumn, where: { tender_id: ctx.tender.id } });
+                // const posData = this.ctx.tender.data.measure_type === measureType.tz.value
+                //     ? (ctx.tender.ledgerReadOnly && ctx.tender.his
+                //         ? await ctx.helper.loadLedgerDataFromOss(ctx.tender.his.pos_file)
+                //         : await ctx.service.pos.getPosData({tid: ctx.tender.id}, posColumn))
+                //     : [];
+                const ledgerData = await ctx.service.ledger.getAllDataByCondition({ columns: ledgerColumn, where: { tender_id: ctx.tender.id } });
                 const posData = this.ctx.tender.data.measure_type === measureType.tz.value
-                    ? (ctx.tender.ledgerReadOnly && ctx.tender.his
-                        ? await ctx.helper.loadLedgerDataFromOss(ctx.tender.his.pos_file)
-                        : await ctx.service.pos.getPosData({tid: ctx.tender.id}, posColumn))
+                    ? await ctx.service.pos.getPosData({tid: ctx.tender.id}, posColumn)
                     : [];
                 const ancillaryGclData = this.ctx.tender.data.measure_type === measureType.tz.value
                     ? await ctx.service.ancillaryGcl.getAllDataByCondition({ where: { tid: ctx.tender.id } })

+ 10 - 15
app/controller/stage_controller.js

@@ -215,7 +215,7 @@ module.exports = app => {
             return surplus;
         }
 
-        _getLedgerColumn(sjsRela) {
+        async _getLedgerColumn() {
             const tender = this.ctx.tender;
             this.ledgerColumn = [
                 'id', 'tender_id', 'ledger_id', 'ledger_pid', 'level', 'order', 'full_path', 'is_leaf',
@@ -237,16 +237,12 @@ module.exports = app => {
             if (this.ctx.session.sessionProject.dagl) this.posExtraColumn.push('dagl_status', 'dagl_url', 'dagl_limit');
             this.posMemoColumn = [];
 
-            if (!sjsRela) return;
-            if (sjsRela) {
-                for (const field of sjsRela.ledgerCol) {
-                    if (field.show) {
-                        this.ledgerMemoColumn.push(field.field);
-                        this.ledgerColumn.push(field.field);
-                        this.posColumn.push(field.field);
-                        this.posMemoColumn.push(field.field);
-                    }
-                }
+            const extraFields = await spreadSetting.getExtraFields(this.ctx, tender.id, 'stage');
+            if (extraFields.length > 0) {
+                this.ledgerColumn.push(...extraFields);
+                this.ledgerMemoColumn.push(...extraFields);
+                this.posColumn.push(...extraFields);
+                this.posMemoColumn.push(...extraFields);
             }
         }
 
@@ -362,8 +358,7 @@ module.exports = app => {
                 const filter = data.filter.split(';');
                 const responseData = { err: 0, msg: '', data: {}, hpack: [] };
                 const hpack = true;
-                const sjsRela = await this.ctx.service.project.getTenderSjsRela(ctx.session.sessionProject.id, ctx.tender.info.display.exMemo);
-                this._getLedgerColumn(sjsRela);
+                await this._getLedgerColumn();
                 for (const f of filter) {
                     switch (f) {
                         case 'ledger':
@@ -447,7 +442,7 @@ module.exports = app => {
         async check(ctx) {
             try {
                 const helper = this.ctx.helper;
-                this._getLedgerColumn();
+                await this._getLedgerColumn();
                 const ledgerData = await this._getStageLedgerData(ctx);
                 ledgerData.forEach(x => {
                     x.end_qc_minus_qty = helper.add(x.pre_qc_minus_qty, x.qc_minus_qty);
@@ -1586,7 +1581,7 @@ module.exports = app => {
 
         async loadBwtz(ctx) {
             try {
-                this._getLedgerColumn();
+                await this._getLedgerColumn();
                 const data = ctx.request.body.data ? JSON.parse(ctx.request.body.data) : {};
                 const ledgerData = await this._getStageLedgerData(ctx);
                 const posData = await this._getStagePosData(ctx);

+ 16 - 0
app/lib/spread_setting.js

@@ -159,8 +159,24 @@ const getStageGatherSpreadSetting = async function (ctx, tid) {
     return [gcl, leafXmj, gatherLeafXmj];
 };
 
+const getExtraFields = async function(ctx, tid, type = 'ledger') {
+    let tender = tid ? await getCtxTender(ctx, tid) : ctx.tender;
+
+    const projectSpread = await ctx.service.projectSpread.getProjectSpread(ctx.session.sessionProject.id, tender.info.s_type);
+    const prefix = tender.data.measure_type === measureType.tz.value ? 'tz' : 'gcl';
+    const setting = projectSpread[`${prefix}_${type}_set`];
+
+    const result = [];
+    for (const col of spreadConst.SpecSpreadColFields) {
+        const relaSet = setting.find(x => { return x.key === col.key; });
+        if (relaSet && relaSet.valid) result.push(...col.fields);
+    }
+    return result;
+};
+
 module.exports = {
     getLedgerSpreadSetting,
     getStageSpreadSetting,
     getStageGatherSpreadSetting,
+    getExtraFields,
 };