|
@@ -50,7 +50,37 @@ module.exports = app => {
|
|
|
(!revise || !revise.valid || revise.status === audit.revise.status.checked);
|
|
|
const addValid = addVisible && (!lastStage || lastStage.status === audit.stage.status.uncheck ||
|
|
|
lastStage.status === audit.stage.status.checkNo || lastStage.status === audit.stage.status.checked);
|
|
|
- return [addVisible, addValid];
|
|
|
+ let changeValid = true;
|
|
|
+ // 判断变更是否存在审批中,有则可能无法新增修订
|
|
|
+ const changeList = await ctx.service.change.getAllDataByCondition({
|
|
|
+ where: {
|
|
|
+ tid: ctx.tender.id,
|
|
|
+ status: [audit.flow.status.checking, audit.flow.status.backnew],
|
|
|
+ },
|
|
|
+ });
|
|
|
+ if (changeList.length > 0) {
|
|
|
+ // 判断是否已存在新增部位,有则可能无法新增修订
|
|
|
+ const changeLedgerList = await ctx.service.changeLedger.getAllDataByCondition({ where: { tender_id: ctx.tender.id, is_leaf: 1 } });
|
|
|
+ const changePosList = await ctx.service.changePos.getAllDataByCondition({ where: { tid: ctx.tender.id } });
|
|
|
+ // 判断变更是否已添加新增部位,有则可能无法新增修订
|
|
|
+ if (changeLedgerList.length > 0 || changePosList.length > 0) {
|
|
|
+ // 判断审批中的变更令是否有调用了新增部位,有则无法新增修订,都没有则可新增修订
|
|
|
+ for (const c of changeList) {
|
|
|
+ const caList = await ctx.service.changeAuditList.getList(c.cid);
|
|
|
+ const gclIdList = ctx.helper._.uniq(ctx.helper._.map(caList, 'gcl_id'));
|
|
|
+ for (const gcl of gclIdList) {
|
|
|
+ if (gcl && (ctx.helper._.findIndex(changeLedgerList, { id: gcl }) !== -1 || ctx.helper._.findIndex(changePosList, { lid: gcl }) !== -1)) {
|
|
|
+ changeValid = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!changeValid) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return [addVisible, addValid, changeValid];
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -82,8 +112,7 @@ module.exports = app => {
|
|
|
lr.curAuditor = await ctx.service.reviseAudit.getAuditorByStatus(lr.id, lr.status, lr.times);
|
|
|
}
|
|
|
}
|
|
|
- const [addVisible, addValid] = await this._getAddReviseValid(ctx);
|
|
|
- console.log(addVisible, addValid);
|
|
|
+ const [addVisible, addValid, changeValid] = await this._getAddReviseValid(ctx);
|
|
|
const [stdBills, stdChapters] = await this.ctx.service.valuation.getValuationStdList(
|
|
|
ctx.tender.data.valuation, ctx.tender.data.measure_type);
|
|
|
const renderData = {
|
|
@@ -98,6 +127,7 @@ module.exports = app => {
|
|
|
ledgerRevise,
|
|
|
addVisible,
|
|
|
addValid,
|
|
|
+ changeValid,
|
|
|
auditConst: audit.revise,
|
|
|
auditConst2: JSON.stringify(audit.revise),
|
|
|
stdBills,
|
|
@@ -151,12 +181,14 @@ module.exports = app => {
|
|
|
*/
|
|
|
async add(ctx) {
|
|
|
try {
|
|
|
- const addValid = await this._getAddReviseValid(ctx);
|
|
|
+ const [addValid, changeValid] = await this._getAddReviseValid(ctx);
|
|
|
if (!addValid) {
|
|
|
throw '无法新增修订';
|
|
|
}
|
|
|
+ if (!changeValid) {
|
|
|
+ throw '台账修订会影响审批中的变更令(包含新增部位),请审批完成后再创建台账修订';
|
|
|
+ }
|
|
|
const revise = await ctx.service.ledgerRevise.add(ctx.tender.id, ctx.session.sessionUser.accountId);
|
|
|
-
|
|
|
ctx.redirect('/tender/' + ctx.tender.id + '/revise/info');
|
|
|
} catch (err) {
|
|
|
this.log(err);
|