| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | '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) {    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 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.data.measure_type === measureType.tz.value) removeFieldCols(ledger, spreadConst.filterCols.tzWithoutCols);    if (!tender.info.display.ledger.dgnQty) removeFieldCols(ledger, spreadConst.filterCols.dgnCols);    const sjsRela = await ctx.service.project.getSjsRela(ctx.session.sessionProject.id);    refreshSpreadShow(sjsRela.ledgerCol, [ledger, pos]);    return [ledger, pos];};const getStageSpreadSetting = async function (ctx, tid, readOnly) {    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);    }    ledger.readOnly = readOnly;    pos.readOnly = readOnly;    const sjsRela = await ctx.service.project.getSjsRela(ctx.session.sessionProject.id);    refreshSpreadShow(sjsRela.ledgerCol, [ledger, pos]);    return [ledger, pos];};module.exports = {    getLedgerSpreadSetting,    getStageSpreadSetting,};
 |