123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- '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 lColIndex = ss.cols.findIndex(x => {
- return x.field === field.field;
- });
- const lCol = ss.cols[lColIndex];
- if (lCol) {
- lCol.title = field.alias || field.name;
- if (field.pos) {
- const preColIndex = ss.cols.findIndex(x => {
- return x.field === field.pos;
- });
- const preCol = ss.cols[preColIndex];
- if (preCol && preColIndex !== lColIndex - 1) {
- ss.cols.splice(lColIndex, 1);
- ss.cols.splice(preColIndex + 1, 0, lCol);
- }
- }
- }
- }
- } 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 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 ledger = projectSpread[`${prefix}_ledger_bills_spread`];
- const pos = projectSpread[`${prefix}_ledger_pos_spread`];
- if (!tender.info.display.ledger.clQty) {
- const billsColIndex = ledger.cols.findIndex(x => { return x.field === spreadConst.withoutClReplace.indexField; });
- if (billsColIndex >= 0) {
- removeFieldCols(ledger, spreadConst.withoutClReplace.remove);
- ledger.cols.splice(billsColIndex, 0, ...spreadConst.withoutClReplace.billsCols);
- }
- const posColIndex = pos.cols.findIndex(x => { return x.field === spreadConst.withoutClReplace.indexField; });
- if (posColIndex >= 0) {
- removeFieldCols(pos, spreadConst.withoutClReplace.remove);
- pos.cols.splice(posColIndex, 0, ...spreadConst.withoutClReplace.posCols);
- }
- }
- // 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 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 ledger = projectSpread[`${prefix}_stage_bills_spread`];
- const pos = projectSpread[`${prefix}_stage_pos_spread`];
- if (!tender.info.display.ledger.dgnQty) {
- removeFieldCols(ledger, spreadConst.filterCols.stageDgnCols);
- }
- 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));
- const gatherLeafXmj = JSON.parse(JSON.stringify(spreadConst.stageGather.gatherLeafXmj));
- // 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);
- hiddenFieldCols(gatherLeafXmj, spreadConst.filterCols.priceDiffCols);
- }
- if (tender.data.measure_type === measureType.gcl.value) {
- removeFieldCols(leafXmj, ['quantity']);
- removeFieldCols(gatherLeafXmj, ['quantity']);
- }
- return [gcl, leafXmj, gatherLeafXmj];
- };
- module.exports = {
- getLedgerSpreadSetting,
- getStageSpreadSetting,
- getStageGatherSpreadSetting,
- };
|