|
@@ -934,11 +934,31 @@ module.exports = app => {
|
|
|
|
|
|
async defaultBills(ctx) {
|
|
|
try {
|
|
|
+ // 判断是否台账修订中,修订中则不获取changeLedger及changePos值
|
|
|
+ const lastRevise = await ctx.service.ledgerRevise.getLastestRevise(ctx.tender.id);
|
|
|
+ const data = JSON.parse(ctx.request.body.data);
|
|
|
const ledgerData = await ctx.service.ledger.getData(ctx.tender.id);
|
|
|
- const changeLedgerData = await ctx.service.changeLedger.getData(ctx.tender.id);
|
|
|
+ const changeLedgerData = lastRevise && lastRevise.status !== audit.revise.status.checked && data.from !== 'revise' ? [] : await ctx.service.changeLedger.getData(ctx.tender.id);
|
|
|
const posData = await ctx.service.pos.getPosData({ tid: ctx.tender.id });
|
|
|
- const changePosData = await ctx.service.changePos.getPosData({ tid: ctx.tender.id });
|
|
|
+ const changePosData = lastRevise && lastRevise.status !== audit.revise.status.checked && data.from !== 'revise' ? [] : await ctx.service.changePos.getPosData({ tid: ctx.tender.id });
|
|
|
const dealBills = await ctx.service.dealBills.getAllDataByCondition({ where: { tender_id: ctx.tender.id } });
|
|
|
+ // 标记ledger,搜索需求
|
|
|
+ if (changePosData.length > 0) {
|
|
|
+ const cplIdList = ctx.helper._.uniq(ctx.helper._.map(changePosData, 'lid'));
|
|
|
+ const cLIdList = ctx.helper._.map(changeLedgerData, 'id');
|
|
|
+ const ledgerIdList = [];
|
|
|
+ for (const cp of cplIdList) {
|
|
|
+ if (ctx.helper._.indexOf(cLIdList, cp) === -1) {
|
|
|
+ ledgerIdList.push(cp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ledgerIdList.length > 0) {
|
|
|
+ for (const lid of ledgerIdList) {
|
|
|
+ const data = ctx.helper._.find(ledgerData, { id: lid });
|
|
|
+ data.cid = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
ctx.body = { err: 0, msg: '', data: { bills: ctx.helper._.concat(ledgerData, changeLedgerData), pos: ctx.helper._.concat(posData, changePosData), dealBills } };
|
|
|
} catch (err) {
|
|
|
this.log(err);
|
|
@@ -1503,21 +1523,25 @@ module.exports = app => {
|
|
|
try {
|
|
|
const change = ctx.change;
|
|
|
let edit = true;
|
|
|
- if (change.status !== audit.flow.status.uncheck && change.status !== audit.flow.status.backnew) {
|
|
|
+ let changing = false;
|
|
|
+ if (change.status !== audit.flow.status.uncheck && change.status !== audit.flow.status.back && change.status !== audit.flow.status.revise) {
|
|
|
// throw '本条变更审批中或已完成,无法操作台账数据';
|
|
|
edit = false;
|
|
|
+ changing = true;
|
|
|
}
|
|
|
+ let revising = false;
|
|
|
// 判断是否在修订中,是则无法操作本页
|
|
|
const lastRevise = await ctx.service.ledgerRevise.getLastestRevise(ctx.tender.id);
|
|
|
if (lastRevise && lastRevise.status !== audit.revise.status.checked) {
|
|
|
// throw '台账修订中,无法操作台账数据';
|
|
|
edit = false;
|
|
|
+ revising = true;
|
|
|
}
|
|
|
- const renderData = await this._getDefaultReviseInfoData(ctx, change);
|
|
|
- // console.log(edit);
|
|
|
+ const renderData = await this._getDefaultReviseInfoData(ctx, change, edit);
|
|
|
// 台账只读、使用数据
|
|
|
- // renderData.readOnly = edit;
|
|
|
- renderData.readOnly = false;
|
|
|
+ renderData.readOnly = !edit;
|
|
|
+ renderData.changing = changing;
|
|
|
+ renderData.revising = revising;
|
|
|
await this.layout('change/revise.ejs', renderData, 'change/revise_modal.ejs');
|
|
|
} catch (err) {
|
|
|
this.log(err);
|
|
@@ -1525,8 +1549,8 @@ module.exports = app => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- async _getDefaultReviseInfoData(ctx, change) {
|
|
|
- const [ledgerSpread, posSpread] = this._getSpreadSetting(change);
|
|
|
+ async _getDefaultReviseInfoData(ctx, change, edit) {
|
|
|
+ const [ledgerSpread, posSpread] = this._getSpreadSetting(change, edit);
|
|
|
const sjsRela = await this.ctx.service.project.getSjsRela(ctx.session.sessionProject.id);
|
|
|
this.ctx.helper.refreshSpreadShow(sjsRela.ledgerCol, [ledgerSpread, posSpread]);
|
|
|
const [stdBills, stdChapters] = await this.ctx.service.valuation.getValuationStdList(
|
|
@@ -1548,7 +1572,7 @@ module.exports = app => {
|
|
|
* 获取SpreadSetting
|
|
|
* @private
|
|
|
*/
|
|
|
- _getSpreadSetting(change) {
|
|
|
+ _getSpreadSetting(change, edit) {
|
|
|
const _ = this.app._;
|
|
|
function removeFieldCols(setting, cols) {
|
|
|
_.remove(setting.cols, function(c) {
|
|
@@ -1562,7 +1586,11 @@ module.exports = app => {
|
|
|
const ledger = JSON.parse(JSON.stringify(setting.ledger));
|
|
|
const pos = setting.pos ? JSON.parse(JSON.stringify(setting.pos)) : spreadConst.blank;
|
|
|
|
|
|
- if (change.status === audit.flow.status.checking || change.status === audit.flow.status.checked) {
|
|
|
+ // if (change.status === audit.flow.status.checking || change.status === audit.flow.status.checked) {
|
|
|
+ // ledger.readOnly = true;
|
|
|
+ // pos.readOnly = true;
|
|
|
+ // }
|
|
|
+ if (!edit) {
|
|
|
ledger.readOnly = true;
|
|
|
pos.readOnly = true;
|
|
|
}
|
|
@@ -1581,7 +1609,15 @@ module.exports = app => {
|
|
|
const data = JSON.parse(ctx.request.body.data);
|
|
|
if (!data.postType || !data.postData) throw '数据错误';
|
|
|
const responseData = { err: 0, msg: '', data: {} };
|
|
|
- console.log(data);
|
|
|
+ const change = ctx.change;
|
|
|
+ if (change.status !== audit.flow.status.uncheck && change.status !== audit.flow.status.back && change.status !== audit.flow.status.revise) {
|
|
|
+ throw '该变更令正在审批中或已完成,无法操作新增部位数据';
|
|
|
+ }
|
|
|
+ // 判断是否在修订中,是则无法操作本页
|
|
|
+ const lastRevise = await ctx.service.ledgerRevise.getLastestRevise(ctx.tender.id);
|
|
|
+ if (lastRevise && lastRevise.status !== audit.revise.status.checked) {
|
|
|
+ throw '台账修订中,无法操作新增部位数据';
|
|
|
+ }
|
|
|
|
|
|
// const revise = await this.checkRevise(ctx);
|
|
|
//
|