|
@@ -61,14 +61,22 @@ module.exports = app => {
|
|
|
const tp = await ctx.service.change.getTp(tender.id, status);
|
|
|
if (changes !== null) {
|
|
|
for (const c of changes) {
|
|
|
- c.curAuditors = await ctx.service.changeAudit.getAuditorsByStatus(c.cid, c.status, c.times);
|
|
|
- if (c.status === audit.change.status.checkNoPre) {
|
|
|
- c.curAuditors2 = await ctx.service.stageAudit.getAuditorsByStatus(c.cid, audit.change.status.checking, c.times);
|
|
|
- }
|
|
|
- if (c.status === audit.change.status.checkNo || c.status === audit.change.status.revise) {
|
|
|
- const changeUsedData = await ctx.service.stageChange.getAllFinalUsedData(ctx.tender.id, c.cid);
|
|
|
- c.stageChangeNum = this.ctx.helper.sum(changeUsedData.map(x => { return Math.abs(x.qty); }));
|
|
|
- c.isSettle = await ctx.service.changeSettleList.isSettle(c.cid);
|
|
|
+ if (c.status !== audit.change.status.checked || !c.final_auditor_str) {
|
|
|
+ c.curAuditors = await ctx.service.changeAudit.getAuditorsByStatus(c.cid, c.status, c.times);
|
|
|
+ if (c.status === audit.change.status.checkNoPre) {
|
|
|
+ c.curAuditors2 = await ctx.service.stageAudit.getAuditorsByStatus(c.cid, audit.change.status.checking, c.times);
|
|
|
+ }
|
|
|
+ if (c.status === audit.change.status.checkNo || c.status === audit.change.status.revise) {
|
|
|
+ const changeUsedData = await ctx.service.stageChange.getAllFinalUsedData(ctx.tender.id, c.cid);
|
|
|
+ c.stageChangeNum = this.ctx.helper.sum(changeUsedData.map(x => { return Math.abs(x.qty); }));
|
|
|
+ c.isSettle = await ctx.service.changeSettleList.isSettle(c.cid);
|
|
|
+ }
|
|
|
+ if (c.status === audit.change.status.checked && c.curAuditors.length > 0) {
|
|
|
+ const final_auditor_str = c.curAuditors[0].audit_type === auditType.key.common
|
|
|
+ ? c.curAuditors[0].name + (c.curAuditors[0].role ? '-' + c.curAuditors[0].role : '')
|
|
|
+ : ctx.helper.transFormToChinese(c.curAuditors[0].audit_order) + '审';
|
|
|
+ await ctx.service.change.defaultUpdate({ final_auditor_str }, { where: { cid: c.cid } });
|
|
|
+ }
|
|
|
}
|
|
|
page_total = ctx.helper.add(page_total, c.total_price);
|
|
|
}
|
|
@@ -1711,7 +1719,15 @@ module.exports = app => {
|
|
|
const changes = await ctx.service.changeProject.getListByStatus(tender.id, status, 1, sorts, orders);
|
|
|
const total = await ctx.service.changeProject.getCountByStatus(tender.id, status);
|
|
|
for (const c of changes) {
|
|
|
- c.curAuditors = await ctx.service.changeProjectAudit.getAuditorsByStatus(c.id, c.status, c.times);
|
|
|
+ if (c.status !== audit.change.status.checked || !c.final_auditor_str) {
|
|
|
+ c.curAuditors = await ctx.service.changeProjectAudit.getAuditorsByStatus(c.id, c.status, c.times);
|
|
|
+ if (c.status === audit.change.status.checked && c.curAuditors.length > 0) {
|
|
|
+ const final_auditor_str = c.curAuditors[0].audit_type === auditType.key.common
|
|
|
+ ? c.curAuditors[0].name + (c.curAuditors[0].role ? '-' + c.curAuditors[0].role : '')
|
|
|
+ : ctx.helper.transFormToChinese(c.curAuditors[0].audit_order) + '审';
|
|
|
+ await ctx.service.changeProject.defaultUpdate({ final_auditor_str }, { where: { id: c.id } });
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
const accountInfo = await this.ctx.service.projectAccount.getDataById(this.ctx.session.sessionUser.accountId);
|
|
|
const userPermission = accountInfo !== undefined && accountInfo.permission !== ''
|
|
@@ -2418,10 +2434,14 @@ module.exports = app => {
|
|
|
throw '验证码不正确!';
|
|
|
}
|
|
|
}
|
|
|
- // 重新审批
|
|
|
- const result = await ctx.service.changeProjectAudit.checkAgain(ctx.change);
|
|
|
- if (!result) {
|
|
|
- throw '重新审批失败';
|
|
|
+ if ((ctx.change.finalAuditorIds.indexOf(ctx.session.sessionUser.accountId) >= 0) && ctx.change.status === audit.changeProject.status.checked) {
|
|
|
+ // 重新审批
|
|
|
+ const result = await ctx.service.changeProjectAudit.checkAgain(ctx.change);
|
|
|
+ if (!result) {
|
|
|
+ throw '重新审批失败';
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw '您无权进行该操作';
|
|
|
}
|
|
|
// ctx.redirect('/tender/' + changeData.tid + '/change/' + changeData.cid + '/info');
|
|
|
ctx.body = {
|
|
@@ -2536,7 +2556,15 @@ module.exports = app => {
|
|
|
let page_total = 0;
|
|
|
const tp = await ctx.service.changeApply.getTp(tender.id, status);
|
|
|
for (const c of changes) {
|
|
|
- c.curAuditors = await ctx.service.changeApplyAudit.getAuditorsByStatus(c.id, c.status, c.times);
|
|
|
+ if (c.status !== audit.change.status.checked || !c.final_auditor_str) {
|
|
|
+ c.curAuditors = await ctx.service.changeApplyAudit.getAuditorsByStatus(c.id, c.status, c.times);
|
|
|
+ if (c.status === audit.change.status.checked && c.curAuditors.length > 0) {
|
|
|
+ const final_auditor_str = c.curAuditors[0].audit_type === auditType.key.common
|
|
|
+ ? c.curAuditors[0].name + (c.curAuditors[0].role ? '-' + c.curAuditors[0].role : '')
|
|
|
+ : ctx.helper.transFormToChinese(c.curAuditors[0].audit_order) + '审';
|
|
|
+ await ctx.service.changeApply.defaultUpdate({ final_auditor_str }, { where: { id: c.id } });
|
|
|
+ }
|
|
|
+ }
|
|
|
page_total = ctx.helper.add(page_total, c.total_price);
|
|
|
}
|
|
|
const tender_userInfo = await ctx.service.projectAccount.getDataById(ctx.tender.data.user_id);
|
|
@@ -3215,23 +3243,6 @@ module.exports = app => {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 撤回审批
|
|
|
- * @param ctx
|
|
|
- * @return {Promise<void>}
|
|
|
- */
|
|
|
- async checkApplyAuditCancel(ctx) {
|
|
|
- try {
|
|
|
- if (!ctx.change.cancancel) throw '您无权进行该操作';
|
|
|
-
|
|
|
- await ctx.service.changeApplyAudit.checkCancel(ctx.change);
|
|
|
- ctx.body = { err: 0, url: ctx.request.header.referer, msg: '' };
|
|
|
- } catch (err) {
|
|
|
- this.log(err);
|
|
|
- ctx.body = { err: 1, msg: err };
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
* 变更申请重新审批
|
|
|
* @param {Object} ctx - egg全局变量
|
|
|
* @return {void}
|
|
@@ -3239,8 +3250,8 @@ module.exports = app => {
|
|
|
async checkApplyAgain(ctx) {
|
|
|
try {
|
|
|
// 获取终审
|
|
|
- const auditInfo = await this.ctx.service.changeApplyAudit.getAuditorByStatus(ctx.change.id, audit.changeApply.status.checked);
|
|
|
- if (ctx.change.status !== audit.changeApply.status.checked || ctx.session.sessionUser.accountId !== auditInfo.aid) {
|
|
|
+ // const auditInfo = await this.ctx.service.changeApplyAudit.getAuditorByStatus(ctx.change.id, audit.changeApply.status.checked);
|
|
|
+ if (ctx.change.status !== audit.changeApply.status.checked) {
|
|
|
throw '您无权进行该操作';
|
|
|
}
|
|
|
// 判断是否被变更申请调用了,是则无法发起修订
|
|
@@ -3261,10 +3272,14 @@ module.exports = app => {
|
|
|
throw '验证码不正确!';
|
|
|
}
|
|
|
}
|
|
|
- // 重新审批
|
|
|
- const result = await ctx.service.changeApplyAudit.checkAgain(ctx.change);
|
|
|
- if (!result) {
|
|
|
- throw '重新审批失败';
|
|
|
+ if ((ctx.change.finalAuditorIds.indexOf(ctx.session.sessionUser.accountId) >= 0) && ctx.change.status === audit.changeApply.status.checked) {
|
|
|
+ // 重新审批
|
|
|
+ const result = await ctx.service.changeApplyAudit.checkAgain(ctx.change);
|
|
|
+ if (!result) {
|
|
|
+ throw '重新审批失败';
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw '您无权进行该操作';
|
|
|
}
|
|
|
// ctx.redirect('/tender/' + changeData.tid + '/change/' + changeData.cid + '/info');
|
|
|
ctx.body = {
|
|
@@ -3379,7 +3394,18 @@ module.exports = app => {
|
|
|
let page_total = 0;
|
|
|
const tp = await ctx.service.changePlan.getTp(tender.id, status);
|
|
|
for (const c of changes) {
|
|
|
- c.curAuditor = await ctx.service.changePlanAudit.getAuditorByStatus(c.id, c.status, c.times);
|
|
|
+ if (c.status !== audit.change.status.checked || !c.final_auditor_str) {
|
|
|
+ c.curAuditors = await ctx.service.changePlanAudit.getAuditorsByStatus(c.id, c.status, c.times);
|
|
|
+ // if (c.status === audit.changePlan.status.checkNoPre) {
|
|
|
+ // c.curAuditors2 = await ctx.service.changePlanAudit.getAuditorsByStatus(c.id, audit.changePlan.status.checking, c.times);
|
|
|
+ // }
|
|
|
+ if (c.status === audit.change.status.checked && c.curAuditors.length > 0) {
|
|
|
+ const final_auditor_str = c.curAuditors[0].audit_type === auditType.key.common
|
|
|
+ ? c.curAuditors[0].name + (c.curAuditors[0].role ? '-' + c.curAuditors[0].role : '')
|
|
|
+ : ctx.helper.transFormToChinese(c.curAuditors[0].audit_order) + '审';
|
|
|
+ await ctx.service.changePlan.defaultUpdate({ final_auditor_str }, { where: { id: c.id } });
|
|
|
+ }
|
|
|
+ }
|
|
|
page_total = ctx.helper.add(page_total, c.total_price);
|
|
|
}
|
|
|
const tender_userInfo = await ctx.service.projectAccount.getDataById(ctx.tender.data.user_id);
|
|
@@ -3456,6 +3482,7 @@ module.exports = app => {
|
|
|
auditConst: audit.changePlan,
|
|
|
ruleConst: codeRuleConst.measure,
|
|
|
changeConst,
|
|
|
+ auditType,
|
|
|
changeApplyList,
|
|
|
acLists,
|
|
|
page_total,
|
|
@@ -3498,6 +3525,25 @@ module.exports = app => {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 审批流程(Get)
|
|
|
+ * @param ctx
|
|
|
+ * @return {Promise<void>}
|
|
|
+ */
|
|
|
+ async changePlanAuditors(ctx) {
|
|
|
+ try {
|
|
|
+ const id = JSON.parse(ctx.request.body.data).id;
|
|
|
+ const tenderId = ctx.params.id;
|
|
|
+ const changeInfo = await ctx.service.changePlan.getDataById(id);
|
|
|
+ await ctx.service.changePlan.loadChangeUser(changeInfo);
|
|
|
+ await ctx.service.changePlan.loadChangeAuditViewData(changeInfo);
|
|
|
+ ctx.body = { err: 0, msg: '', data: changeInfo };
|
|
|
+ } catch (error) {
|
|
|
+ this.log(error);
|
|
|
+ ctx.body = { err: 1, msg: error.toString(), data: null };
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 新增变更方案 (Post)
|
|
|
*
|
|
|
* @param {Object} ctx - egg全局变量
|
|
@@ -3551,22 +3597,7 @@ module.exports = app => {
|
|
|
* @private
|
|
|
*/
|
|
|
async _getChangePlanAuditViewData(ctx) {
|
|
|
- const auditConst = audit.changePlan;
|
|
|
- const times = ctx.change.status === auditConst.status.checkNo || ctx.change.status === auditConst.status.revise ? ctx.change.times - 1 : ctx.change.times;
|
|
|
- ctx.change.user = await ctx.service.projectAccount.getAccountInfoById(ctx.change.uid);
|
|
|
- ctx.change.auditHistory = [];
|
|
|
- if (times >= 1) {
|
|
|
- for (let i = 1; i <= times; i++) {
|
|
|
- ctx.change.auditHistory.push(await ctx.service.changePlanAudit.getAuditors(ctx.change.id, i));
|
|
|
- }
|
|
|
- }
|
|
|
- // 获取审批流程中左边列表
|
|
|
- ctx.change.auditors2 = (ctx.change.status === auditConst.status.checkNo || ctx.change.status === auditConst.status.revise) && ctx.change.uid !== ctx.session.sessionUser.accountId ?
|
|
|
- await ctx.service.changePlanAudit.getAuditorsWithOwner(ctx.change.id, times) :
|
|
|
- await ctx.service.changePlanAudit.getAuditorsWithOwner(ctx.change.id, ctx.change.times);
|
|
|
- if (ctx.change.status === auditConst.status.uncheck || ctx.change.status === auditConst.status.checkNo || ctx.change.status === auditConst.status.revise) {
|
|
|
- ctx.change.auditorList = await ctx.service.changePlanAudit.getAuditors(ctx.change.id, ctx.change.times);
|
|
|
- }
|
|
|
+ await ctx.service.changePlan.loadChangeAuditViewData(ctx.change);
|
|
|
}
|
|
|
|
|
|
async planInformation(ctx) {
|
|
@@ -3579,13 +3610,19 @@ module.exports = app => {
|
|
|
// 获取清单列表
|
|
|
const changeList = await ctx.service.changePlanList.getList(ctx.change.id);
|
|
|
if (ctx.change.status === audit.changePlan.status.checking || ctx.change.status === audit.changePlan.status.checked) {
|
|
|
- const listAudits = await ctx.service.changePlanAudit.getAuditGroupByList(ctx.change.id, ctx.change.times);
|
|
|
- ctx.change.listAudits = listAudits;
|
|
|
+ // const listAudits = await ctx.service.changePlanAudit.getAuditGroupByList(ctx.change.id, ctx.change.times);
|
|
|
+ // ctx.change.listAudits = listAudits;
|
|
|
for (const cl of changeList) {
|
|
|
const audit_amount = cl.audit_amount !== null && cl.audit_amount !== '' ? cl.audit_amount.split(',') : '';
|
|
|
// 清单表页赋值
|
|
|
- for (const [index, au] of listAudits.entries()) {
|
|
|
- cl['audit_amount_' + au.aid] = ctx.change.shenpiPower && au.aid === ctx.session.sessionUser.accountId ? cl.spamount : (audit_amount[index] ? parseFloat(audit_amount[index]) : null);
|
|
|
+ for (const au in ctx.change.userGroups) {
|
|
|
+ if (ctx.change.userGroups[au][0].audit_order !== 0) {
|
|
|
+ cl['audit_amount_' + ctx.change.userGroups[au][0].audit_order] =
|
|
|
+ (ctx.change.userGroups[au][0].audit_type === auditType.key.and &&
|
|
|
+ ctx.helper._.findIndex(ctx.change.userGroups[au], { aid: ctx.session.sessionUser.accountId, status: audit.changePlan.status.checked }) !== -1) ||
|
|
|
+ (ctx.change.shenpiPower && ctx.helper._.findIndex(ctx.change.userGroups[au], { aid: ctx.session.sessionUser.accountId }) !== -1) ?
|
|
|
+ cl.spamount : (audit_amount[au - 1] !== undefined ? parseFloat(audit_amount[au - 1]) : null);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -3604,6 +3641,8 @@ module.exports = app => {
|
|
|
fileList,
|
|
|
whiteList,
|
|
|
authMobile: auth_mobile,
|
|
|
+ auditType,
|
|
|
+ shenpiConst,
|
|
|
tpUnit: ctx.change.decimal ? ctx.change.decimal.tp : ctx.tender.info.decimal.tp,
|
|
|
upUnit: ctx.change.decimal ? ctx.change.decimal.up : ctx.tender.info.decimal.up,
|
|
|
changeUnits: changeConst.units,
|
|
@@ -3612,20 +3651,24 @@ module.exports = app => {
|
|
|
jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.change.plan_information),
|
|
|
preUrl: '/tender/' + ctx.tender.id + '/change/plan/' + ctx.change.id + '/information',
|
|
|
};
|
|
|
- if ((ctx.change.status === audit.changePlan.status.uncheck || ctx.change.status === audit.changePlan.status.checkNo || ctx.change.status === audit.changePlan.status.revise) && (ctx.session.sessionUser.accountId === ctx.change.uid || ctx.tender.isTourist)) {
|
|
|
+ // if ((ctx.change.status === audit.changePlan.status.uncheck || ctx.change.status === audit.changePlan.status.checkNo || ctx.change.status === audit.changePlan.status.revise) && (ctx.session.sessionUser.accountId === ctx.change.uid || ctx.tender.isTourist)) {
|
|
|
// data.accountGroup = accountGroup;
|
|
|
// 获取所有项目参与者
|
|
|
- const accountList = await ctx.service.projectAccount.getAllDataByCondition({
|
|
|
- where: { project_id: ctx.session.sessionProject.id, enable: 1 },
|
|
|
- columns: ['id', 'name', 'company', 'role', 'enable', 'is_admin', 'account_group', 'mobile'],
|
|
|
- });
|
|
|
- renderData.accountList = accountList;
|
|
|
- const unitList = await ctx.service.constructionUnit.getAllDataByCondition({ where: { pid: ctx.session.sessionProject.id } });
|
|
|
- renderData.accountGroup = unitList.map(item => {
|
|
|
- const groupList = accountList.filter(item1 => item1.company === item.name);
|
|
|
- return { groupName: item.name, groupList };
|
|
|
- });
|
|
|
+ const accountList = await ctx.service.projectAccount.getAllDataByCondition({
|
|
|
+ where: { project_id: ctx.session.sessionProject.id, enable: 1 },
|
|
|
+ columns: ['id', 'name', 'company', 'role', 'enable', 'is_admin', 'account_group', 'mobile'],
|
|
|
+ });
|
|
|
+ renderData.accountList = accountList;
|
|
|
+ const unitList = await ctx.service.constructionUnit.getAllDataByCondition({ where: { pid: ctx.session.sessionProject.id } });
|
|
|
+ renderData.accountGroup = unitList.map(item => {
|
|
|
+ const groupList = accountList.filter(item1 => item1.company === item.name);
|
|
|
+ return { groupName: item.name, groupList };
|
|
|
+ });
|
|
|
+ // 获取固定审批流列表
|
|
|
+ if (ctx.tender.info.shenpi.change === shenpiConst.sp_status.gdspl) {
|
|
|
+ renderData.spGroupList = await ctx.service.shenpiGroup.getGroupListByChangeType(ctx.tender.id, shenpiConst.sp_type.change, 'changePlan');
|
|
|
}
|
|
|
+ // }
|
|
|
await this.layout('change/plan_information.ejs', renderData, 'change/plan_information_modal.ejs');
|
|
|
} catch (err) {
|
|
|
this.log(err);
|
|
@@ -3633,6 +3676,20 @@ module.exports = app => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ async changePlanSpGroup(ctx) {
|
|
|
+ try {
|
|
|
+ const data = JSON.parse(ctx.request.body.data);
|
|
|
+ const result = await ctx.service.changePlanAudit.changeSpGroup(ctx.change, data.sp_group);
|
|
|
+ if (!result) {
|
|
|
+ throw '切换审批组失败';
|
|
|
+ }
|
|
|
+ const auditors = await ctx.service.changePlanAudit.getUserGroup(ctx.change.id, ctx.change.times);
|
|
|
+ ctx.body = { err: 0, msg: '', data: auditors };
|
|
|
+ } catch (err) {
|
|
|
+ ctx.body = { err: 1, msg: err.toString(), data: null };
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 审批相关
|
|
|
/**
|
|
|
* 添加审批人
|
|
@@ -3668,7 +3725,7 @@ module.exports = app => {
|
|
|
throw '添加审核人失败';
|
|
|
}
|
|
|
|
|
|
- const auditors = await ctx.service.changePlanAudit.getAuditorsWithOwner(ctx.change.id, ctx.change.times);
|
|
|
+ const auditors = await ctx.service.changePlanAudit.getUserGroup(ctx.change.id, ctx.change.times);
|
|
|
ctx.body = { err: 0, msg: '', data: auditors };
|
|
|
} catch (err) {
|
|
|
this.log(err);
|
|
@@ -3701,6 +3758,31 @@ module.exports = app => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ async savePlanAudit(ctx) {
|
|
|
+ try {
|
|
|
+ // if (ctx.change.revising) {
|
|
|
+ // throw '台账修订中,请勿修改提交期数据';
|
|
|
+ // }
|
|
|
+ const data = JSON.parse(ctx.request.body.data);
|
|
|
+ if (ctx.session.sessionUser.is_admin && ctx.change.status !== audit.change.status.checked) {
|
|
|
+ await ctx.service.changePlanAudit.saveAudit(ctx.change.id, ctx.change.times, ctx.change.sp_group, data);
|
|
|
+ const auditors = await ctx.service.changePlanAudit.getUniqUserGroup(ctx.change.id, ctx.change.times);
|
|
|
+ ctx.body = { err: 0, msg: '', data: auditors };
|
|
|
+ } else {
|
|
|
+ throw '您无权进行该操作';
|
|
|
+ }
|
|
|
+ } catch (err) {
|
|
|
+ this.log(err);
|
|
|
+ // ctx.session.postError = err.toString();
|
|
|
+ // ctx.redirect(ctx.request.header.referer);
|
|
|
+ ctx.body = {
|
|
|
+ err: 1,
|
|
|
+ // url: ctx.request.header.referer,
|
|
|
+ msg: err,
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 上传附件
|
|
|
* @param {*} ctx 上下文
|
|
@@ -3886,9 +3968,9 @@ module.exports = app => {
|
|
|
try {
|
|
|
const auditConst = audit.changePlan;
|
|
|
if (!ctx.change || ctx.change.status !== auditConst.status.checking) {
|
|
|
- throw '当前材料调差期数据有误';
|
|
|
+ throw '当前变更方案数据有误';
|
|
|
}
|
|
|
- if (!ctx.change.curAuditor || ctx.change.curAuditor.aid !== ctx.session.sessionUser.accountId) {
|
|
|
+ if (ctx.change.curAuditorIds.length === 0 || ctx.change.curAuditorIds.indexOf(ctx.session.sessionUser.accountId) === -1) {
|
|
|
throw '您无权进行该操作';
|
|
|
}
|
|
|
const data = {
|
|
@@ -4019,8 +4101,8 @@ module.exports = app => {
|
|
|
async checkPlanAgain(ctx) {
|
|
|
try {
|
|
|
// 获取终审
|
|
|
- const auditInfo = await this.ctx.service.changePlanAudit.getAuditorByStatus(ctx.change.id, audit.changePlan.status.checked);
|
|
|
- if (ctx.change.status !== audit.changePlan.status.checked || ctx.session.sessionUser.accountId !== auditInfo.aid) {
|
|
|
+ // const auditInfo = await this.ctx.service.changePlanAudit.getAuditorByStatus(ctx.change.id, audit.changePlan.status.checked);
|
|
|
+ if (ctx.change.status !== audit.changePlan.status.checked) {
|
|
|
throw '您无权进行该操作';
|
|
|
}
|
|
|
// 判断是否被变更申请调用了,是则无法发起修订
|
|
@@ -4041,10 +4123,14 @@ module.exports = app => {
|
|
|
throw '验证码不正确!';
|
|
|
}
|
|
|
}
|
|
|
- // 重新审批
|
|
|
- const result = await ctx.service.changePlanAudit.checkAgain(ctx.change);
|
|
|
- if (!result) {
|
|
|
- throw '重新审批失败';
|
|
|
+ if ((ctx.change.finalAuditorIds.indexOf(ctx.session.sessionUser.accountId) >= 0) && ctx.change.status === audit.changePlan.status.checked) {
|
|
|
+ // 重新审批
|
|
|
+ const result = await ctx.service.changePlanAudit.checkAgain(ctx.change);
|
|
|
+ if (!result) {
|
|
|
+ throw '重新审批失败';
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw '您无权进行该操作';
|
|
|
}
|
|
|
// ctx.redirect('/tender/' + changeData.tid + '/change/' + changeData.cid + '/info');
|
|
|
ctx.body = {
|