| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 | 
							- 'use strict';
 
- /**
 
-  *
 
-  *
 
-  * @author Mai
 
-  * @date
 
-  * @version
 
-  */
 
- const spreadConst = require('../const/spread');
 
- const _ = require('lodash');
 
- const measureType = require('../const/tender').measureType;
 
- const getCtxTender = async function (ctx, tid) {
 
-     if (tid === ctx.tender.id) return ctx.tender;
 
-     const tender = { id: tid };
 
-     tender.data = await ctx.service.tender.getDataById(tid);
 
-     tender.info = await ctx.service.tenderInfo.getTenderInfo(tid);
 
-     return tender;
 
- };
 
- function removeFieldCols(setting, cols) {
 
-     _.remove(setting.cols, function(c) {
 
-         return cols.indexOf(c.field) > -1;
 
-     });
 
- };
 
- function hiddenFieldCols(setting, cols) {
 
-     setting.cols.forEach(x => {
 
-         if (cols.indexOf(x.field) >= 0) {
 
-             x.defaultVisible = false;
 
-             x.visible = false;
 
-         }
 
-     });
 
- };
 
- function refreshSpreadShow(sjsRela, sjsSetting) {
 
-     const sjsSettings = sjsSetting instanceof Array ? sjsSetting : [sjsSetting];
 
-     for (const field of sjsRela) {
 
-         if (field.show) {
 
-             for (const ss of sjsSettings) {
 
-                 const lCol = ss.cols.find(x => {
 
-                     return x.field === field.field;
 
-                 });
 
-                 if (lCol) lCol.title = field.alias || field.name;
 
-             }
 
-         } else {
 
-             for (const ss of sjsSetting) {
 
-                 removeFieldCols(ss, [field.field]);
 
-             }
 
-         }
 
-     }
 
- }
 
- const getLedgerSpreadSetting = async function(ctx, tid, readOnly) {
 
-     let tender = tid ? await getCtxTender(ctx, tid) : ctx.tender;
 
-     const setting = tender.data.measure_type === measureType.tz.value
 
-         ? (tender.info.display.ledger.clQty ? spreadConst.withCl : spreadConst.withoutCl)
 
-         : (tender.info.display.ledger.clQty ? spreadConst.withClGcl : spreadConst.withoutClGcl);
 
-     const ledger = JSON.parse(JSON.stringify(setting.ledger));
 
-     const pos = setting.pos ? JSON.parse(JSON.stringify(setting.pos)) : spreadConst.blank;
 
-     ledger.readOnly = readOnly;
 
-     pos.readOnly = readOnly;
 
-     if (!tender.info.display.ledger.deal) removeFieldCols(ledger, spreadConst.filterCols.dealCols);
 
-     if (!tender.info.display.ledger.dgnQty) removeFieldCols(ledger, spreadConst.filterCols.dgnCols);
 
-     const sjsRela = await ctx.service.project.getTenderSjsRela(ctx.session.sessionProject.id, ctx.tender.info.display.exMemo);
 
-     refreshSpreadShow(sjsRela.ledgerCol, [ledger, pos]);
 
-     return [ledger, pos];
 
- };
 
- const getStageSpreadSetting = async function (ctx, tid, readOnly, funInfo) {
 
-     const tender = tid ? await getCtxTender(ctx, tid) : ctx.tender;
 
-     const stageSetting = tender.data.measure_type === measureType.tz.value
 
-         ? spreadConst.stageTz
 
-         : (tender.info.display.ledger.clQty ? spreadConst.stageCl : spreadConst.stageNoCl);
 
-     const ledger = JSON.parse(JSON.stringify(stageSetting.ledger));
 
-     if (!tender.info.display.ledger.dgnQty) {
 
-         removeFieldCols(ledger, spreadConst.filterCols.stageDgnCols);
 
-     }
 
-     const pos = JSON.parse(JSON.stringify(stageSetting.pos));
 
-     if (!tender.info.display.stage.realComplete) {
 
-         removeFieldCols(pos, spreadConst.filterCols.realCompleteCols);
 
-     }
 
-     if (!ctx.session.sessionProject.gxby) {
 
-         removeFieldCols(ledger, spreadConst.filterCols.thirdPartyCols.gxby);
 
-         removeFieldCols(pos, spreadConst.filterCols.thirdPartyCols.gxby);
 
-     }
 
-     if (!ctx.session.sessionProject.dagl) {
 
-         removeFieldCols(ledger, spreadConst.filterCols.thirdPartyCols.dagl);
 
-         removeFieldCols(pos, spreadConst.filterCols.thirdPartyCols.dagl);
 
-     }
 
-     if (!funInfo.minusNoValue || !tender.info.fun_rela.stage_change.minusNoValue) {
 
-         hiddenFieldCols(ledger, spreadConst.filterCols.minusNoValueCols);
 
-         hiddenFieldCols(pos, spreadConst.filterCols.minusNoValueCols);
 
-     }
 
-     if (!tender.info.display.stage.priceDiff) hiddenFieldCols(ledger, spreadConst.filterCols.priceDiffCols);
 
-     ledger.readOnly = readOnly;
 
-     pos.readOnly = readOnly;
 
-     const sjsRela = await ctx.service.project.getTenderSjsRela(ctx.session.sessionProject.id, ctx.tender.info.display.exMemo);
 
-     refreshSpreadShow(sjsRela.ledgerCol, [ledger, pos]);
 
-     return [ledger, pos];
 
- };
 
- const getStageGatherSpreadSetting = async function (ctx, tid) {
 
-     const tender = tid ? await getCtxTender(ctx, tid) : ctx.tender;
 
-     const gcl = JSON.parse(JSON.stringify(spreadConst.stageGather.gcl));
 
-     const leafXmj = JSON.parse(JSON.stringify(spreadConst.stageGather.leafXmj));
 
-     // if (tender.data.measure_type === measureType.tz.value && !tender.info.display.ledger.deal)
 
-     //     removeFieldCols(gcl, spreadConst.filterCols.dealCols);
 
-     if (!tender.info.display.stage.priceDiff) {
 
-         removeFieldCols(gcl, spreadConst.filterCols.priceDiffCols);
 
-         hiddenFieldCols(leafXmj, spreadConst.filterCols.priceDiffCols);
 
-     }
 
-     if (tender.data.measure_type === measureType.gcl.value) removeFieldCols(leafXmj, ['quantity']);
 
-     return [gcl, leafXmj];
 
- };
 
- module.exports = {
 
-     getLedgerSpreadSetting,
 
-     getStageSpreadSetting,
 
-     getStageGatherSpreadSetting,
 
- };
 
 
  |