|
@@ -57,10 +57,36 @@ module.exports = app => {
|
|
|
} catch (err) {
|
|
|
console.log(err);
|
|
|
this.log(err);
|
|
|
+ ctx.session.postError = err.toString();
|
|
|
ctx.redirect(this.menu.menu.dashboard.url);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ async setting(ctx) {
|
|
|
+ try {
|
|
|
+ if (!ctx.session.sessionUser.is_admin) {
|
|
|
+ throw '您无权打开此页';
|
|
|
+ }
|
|
|
+ const projectInfo = await ctx.service.project.getDataById(ctx.session.sessionProject.id);
|
|
|
+ const modes = projectInfo.payment_setting ? JSON.parse(projectInfo.payment_setting) : ctx.helper._.cloneDeep(paymentConst.setting_modes);
|
|
|
+ for (const m in modes) {
|
|
|
+ const detailCount = await ctx.service.paymentDetail.getCountByPidType(ctx.session.sessionProject.id, modes[m].value);
|
|
|
+ modes[m].can_check = !detailCount;
|
|
|
+ }
|
|
|
+ const renderData = {
|
|
|
+ setting_modes: paymentConst.setting_modes,
|
|
|
+ modes,
|
|
|
+ jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.payment.setting),
|
|
|
+ };
|
|
|
+ await this.layout('payment/setting.ejs', renderData);
|
|
|
+ } catch (err) {
|
|
|
+ console.log(err);
|
|
|
+ this.log(err);
|
|
|
+ ctx.session.postError = err.toString();
|
|
|
+ ctx.redirect('/payment');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
async listLoad(ctx) {
|
|
|
const responseData = {
|
|
|
err: 0, msg: '', data: {},
|
|
@@ -191,6 +217,31 @@ module.exports = app => {
|
|
|
await ctx.service.paymentFolder.deleteFolder(data.postData.id);
|
|
|
}
|
|
|
break;
|
|
|
+ case 'mode-setting':
|
|
|
+ if (!ctx.session.sessionUser.is_admin) {
|
|
|
+ throw '您无权操作';
|
|
|
+ }
|
|
|
+ const projectInfo = await ctx.service.project.getDataById(ctx.session.sessionProject.id);
|
|
|
+ const modes = projectInfo.payment_setting ? JSON.parse(projectInfo.payment_setting) : ctx.helper._.cloneDeep(paymentConst.setting_modes);
|
|
|
+ const checked = data.checked;
|
|
|
+ if (modes[data.mode_type]) {
|
|
|
+ const detailCount = await ctx.service.paymentDetail.getCountByPidType(ctx.session.sessionProject.id, modes[data.mode_type].value);
|
|
|
+ if (detailCount > 0 && !checked) {
|
|
|
+ throw '已存在对应模块的详情,无法关闭该模块';
|
|
|
+ }
|
|
|
+ const mode = modes[data.mode_type];
|
|
|
+ if (mode.checked === checked) {
|
|
|
+ throw '已选中该模块,无须重复选中';
|
|
|
+ }
|
|
|
+ mode.checked = checked;
|
|
|
+ } else if (paymentConst.setting_modes[data.mode_type]) {
|
|
|
+ modes[data.mode_type] = ctx.helper._.cloneDeep(paymentConst.setting_modes[data.mode_type]);
|
|
|
+ modes[data.mode_type].checked = checked;
|
|
|
+ } else {
|
|
|
+ throw '该模块不存在';
|
|
|
+ }
|
|
|
+ await ctx.service.project.defaultUpdate({ id: ctx.session.sessionProject.id, payment_setting: JSON.stringify(modes) });
|
|
|
+ break;
|
|
|
default: throw '参数有误';
|
|
|
}
|
|
|
// 先获取你创建的标段及参与的标段
|
|
@@ -319,6 +370,10 @@ module.exports = app => {
|
|
|
} catch (err) {
|
|
|
console.log(err);
|
|
|
this.log(err);
|
|
|
+ ctx.session.postError = err.toString();
|
|
|
+ if (ctx.detail.tender_id && ctx.detail.tr_id) {
|
|
|
+ ctx.redirect('/payment' + ctx.detail.tender_id + '/list/' + ctx.detail.tr_id);
|
|
|
+ }
|
|
|
ctx.redirect(this.menu.menu.dashboard.url);
|
|
|
}
|
|
|
}
|
|
@@ -410,6 +465,7 @@ module.exports = app => {
|
|
|
ctx.redirect('/payment/' + ctx.tender.id + '/list/' + detailInfo.tr_id);
|
|
|
} catch (err) {
|
|
|
this.log(err);
|
|
|
+ ctx.session.postError = err.toString();
|
|
|
ctx.redirect(ctx.request.header.referer);
|
|
|
}
|
|
|
}
|
|
@@ -450,7 +506,7 @@ module.exports = app => {
|
|
|
async _returnRptProjectList(ctx, formProcess = false) {
|
|
|
// 获取报表表单列表
|
|
|
if (ctx.tender.uid === ctx.session.sessionUser.accountId || formProcess) {
|
|
|
- const rptProject = await ctx.service.rptTreeNode.getDataByCondition({ name: '01.支付审批报表' });
|
|
|
+ const rptProject = await ctx.service.rptTreeNode.getDataByCondition({ pid: ctx.session.sessionProject.id, name: '01.支付审批报表' });
|
|
|
const rptProjectList = rptProject.items ? JSON.parse(rptProject.items) : [];
|
|
|
const tenderRptList = await ctx.service.paymentTenderRpt.getProcessList(ctx.tender.id);
|
|
|
return await ctx.service.paymentTenderRpt.checkAndUpdateList(tenderRptList, rptProjectList, formProcess);
|
|
@@ -465,7 +521,7 @@ module.exports = app => {
|
|
|
throw '权限不足';
|
|
|
}
|
|
|
let [tenderRptList, rptProjectList] = await this._returnRptProjectList(ctx, true);
|
|
|
- tenderRptList = ctx.helper._.filter(tenderRptList, { is_const: 0, is_del: 0 });
|
|
|
+ tenderRptList = ctx.helper._.filter(tenderRptList, { type: 0, is_del: 0 });
|
|
|
// for (const tr of tenderRptList) {
|
|
|
// if (tr.status === shenpiConst.sp_status.gdspl) {
|
|
|
// tr.auditList = await ctx.service.paymentShenpiAudit.getAuditList(ctx.tender.id, tr.id, tr.sp_status);
|
|
@@ -495,7 +551,8 @@ module.exports = app => {
|
|
|
} catch (err) {
|
|
|
console.log(err);
|
|
|
this.log(err);
|
|
|
- ctx.redirect(this.request.headers.referer ? this.request.headers.referer : this.menu.menu.dashboard.url);
|
|
|
+ ctx.session.postError = err.toString();
|
|
|
+ ctx.redirect(this.request.headers.referer ? this.request.headers.referer : '/payment');
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -542,13 +599,17 @@ module.exports = app => {
|
|
|
try {
|
|
|
const tenderRptList = await this._returnRptProjectList(ctx);
|
|
|
if (tenderRptList.length === 0) {
|
|
|
- throw '当前报表表单您无权打开';
|
|
|
+ throw '当前报表表单您无权打开或还没进行模块或表单审批设置';
|
|
|
}
|
|
|
for (const tr of tenderRptList) {
|
|
|
tr.have_notice = await ctx.service.paymentDetail.haveNotice2TenderRpt(tr.id, ctx.session.sessionUser.accountId);
|
|
|
}
|
|
|
const trid = ctx.params.trid ? parseInt(ctx.params.trid) : 0;
|
|
|
const trInfo = trid ? ctx.helper._.find(tenderRptList, { id: trid }) : tenderRptList[0];
|
|
|
+ if (!trInfo) {
|
|
|
+ throw '该模块已关闭或未进行表单审批设置';
|
|
|
+ }
|
|
|
+
|
|
|
// 获取列表
|
|
|
const trDetailList = await ctx.service.paymentDetail.getValidDetails(trInfo.id);
|
|
|
for (const s of trDetailList) {
|
|
@@ -566,6 +627,7 @@ module.exports = app => {
|
|
|
auditConst,
|
|
|
accountGroup: [],
|
|
|
accountList: [],
|
|
|
+ paymentConst,
|
|
|
preUrl: '/payment/' + ctx.tender.id + '/list/' + trInfo.id,
|
|
|
};
|
|
|
// 获取报表信息,新增时及设置报表角色时使用
|
|
@@ -638,7 +700,8 @@ module.exports = app => {
|
|
|
} catch (err) {
|
|
|
console.log(err);
|
|
|
this.log(err);
|
|
|
- ctx.redirect(this.request && this.request.headers && this.request.headers.referer ? this.request.headers.referer : this.menu.menu.dashboard.url);
|
|
|
+ ctx.session.postError = err.toString();
|
|
|
+ ctx.redirect(this.request && this.request.headers && this.request.headers.referer ? this.request.headers.referer : '/payment');
|
|
|
}
|
|
|
}
|
|
|
|