|
@@ -626,6 +626,143 @@ module.exports = app => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ async indexForStageSafe(ctx) {
|
|
|
|
|
+ // 安全计量入口
|
|
|
|
|
+ try {
|
|
|
|
|
+ await this._getStageAuditViewData(ctx);
|
|
|
|
|
+ const pageShow = ctx.session.sessionProject.page_show;
|
|
|
|
|
+ pageShow.showArchive = 0;
|
|
|
|
|
+ pageShow.closeShowAllCustomized = 0;
|
|
|
|
|
+ const tenderId = ctx.params.tid;
|
|
|
|
|
+ const sp_id = ctx.params.id;
|
|
|
|
|
+ // const paymentAuditorList = await ctx.service.paymentDetailAudit.getAuditors(paymentDetail_id);
|
|
|
|
|
+ const tender = ctx.paymentTender;
|
|
|
|
|
+ const { treeNodes, commonArrs, custCfg } = await this._createNodes(ctx, sourceTypeConst.sourceType.safe_stage, tender.pid);
|
|
|
|
|
+ const stageList = [];
|
|
|
|
|
+ const unitList = await ctx.service.constructionUnit.getAllDataByCondition({ where: { pid: tender.pid } }); // 找公司章用的
|
|
|
|
|
+ const isAdmin = ctx.session.sessionUser.is_admin;
|
|
|
|
|
+ const lastAuditor = null;
|
|
|
|
|
+ const archiveList = [];
|
|
|
|
|
+ const roleList = await ctx.service.signatureRole.getSignatureRolesByTenderId(tender.id);
|
|
|
|
|
+ const usedList = await ctx.service.signatureUsed.getSignatureUsedByTenderId(tender.id);
|
|
|
|
|
+ const prjAccList = await this._getPrjAccList(ctx, pageShow);
|
|
|
|
|
+ // 分类列表 todo 支付审批 目前没有所属子项目,自定义分类暂无法按所属子项目取值
|
|
|
|
|
+ const categoryData = await this.ctx.service.category.getAllCategory(this.ctx.subProject.id);
|
|
|
|
|
+ // 获取用户权限
|
|
|
|
|
+ const accountInfo = await this.ctx.service.projectAccount.getDataById(this.ctx.session.sessionUser.accountId);
|
|
|
|
|
+ const tenderList = [];
|
|
|
|
|
+ const cid = this.ctx.helper._.map(treeNodes, 'id');
|
|
|
|
|
+ const customSelects = null;
|
|
|
|
|
+ const dataSelects = {};
|
|
|
|
|
+ dataSelects.material_select = await ctx.service.rptCustomDefine.getDataSelectByRpt(cid,
|
|
|
|
|
+ reportConst.rptDataType[JV.NODE_CUS_MATERIAL_SELECT]);
|
|
|
|
|
+
|
|
|
|
|
+ const materialList = await ctx.service.material.getValidMaterials();
|
|
|
|
|
+ /*
|
|
|
|
|
+
|
|
|
|
|
+ const stage_id = -100;
|
|
|
|
|
+ let stage_order = -1;
|
|
|
|
|
+ let sorder = -1;
|
|
|
|
|
+ let stage_times = -1;
|
|
|
|
|
+ let stage_status = -1;
|
|
|
|
|
+
|
|
|
|
|
+ const paymentDetailList = await ctx.service.paymentDetail.getDetail(paymentDetail_id);
|
|
|
|
|
+ if (paymentDetailList && paymentDetailList.length > 0) {
|
|
|
|
|
+ const payment = paymentDetailList[0];
|
|
|
|
|
+ stage_status = payment.status;
|
|
|
|
|
+ stage_order = payment.order;
|
|
|
|
|
+ sorder = stage_order;
|
|
|
|
|
+ stage_times = payment.times;
|
|
|
|
|
+ stageList.push({ id: stage_id, user_id: payment.uid, status: payment.status });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ for (const prjAcc of prjAccList) {
|
|
|
|
|
+ prjAcc.account_group = prjAcc.company;
|
|
|
|
|
+ }
|
|
|
|
|
+ const cust_select_keys = JSON.stringify(['common_safe', 'customize_safe']); // 因其他地方也有可能保存用户报表的显示选择项,因当初设计问题,不好改数据库结构了,但可以调节内部json来满足需求,安全生产费没有这个,就过了
|
|
|
|
|
+ const rpt_tpl_items = { customize: [], common: [] };
|
|
|
|
|
+ commonArrs.forEach(item => {
|
|
|
|
|
+ rpt_tpl_items.common.push(item.name);
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // 获取所有项目参与者
|
|
|
|
|
+ const { accountList, newAccountGroup, advance } = await this._getInvolveAcc(ctx, tenderId);
|
|
|
|
|
+ let sp_id = -1;
|
|
|
|
|
+ if (this.ctx.subProject) sp_id = this.ctx.subProject.id;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ const renderData = {
|
|
|
|
|
+ accountGroup: newAccountGroup,
|
|
|
|
|
+ accountList,
|
|
|
|
|
+ unitList: JSON.stringify(unitList),
|
|
|
|
|
+ tender: null,
|
|
|
|
|
+ tenderInfo: null,
|
|
|
|
|
+ rpt_tpl_data: JSON.stringify(treeNodes),
|
|
|
|
|
+ cust_tpl_data: JSON.stringify(rpt_tpl_items),
|
|
|
|
|
+ all_common_tpl_data: JSON.stringify([]),
|
|
|
|
|
+ all_indivi_tpl_data: JSON.stringify([]),
|
|
|
|
|
+ cust_select_keys,
|
|
|
|
|
+ cust_cfg: JSON.stringify(custCfg),
|
|
|
|
|
+ project_id: tender.pid,
|
|
|
|
|
+ tender_id: tenderId,
|
|
|
|
|
+ tender_name: tender.name,
|
|
|
|
|
+ detail_id: -1,
|
|
|
|
|
+ stg_id: stage_id,
|
|
|
|
|
+ budget_id: -1,
|
|
|
|
|
+ // sp_id: -1,
|
|
|
|
|
+ sp_id,
|
|
|
|
|
+ stg_order: stage_order,
|
|
|
|
|
+ cur_order: sorder,
|
|
|
|
|
+ stg_times: stage_times,
|
|
|
|
|
+ stg_status: stage_status,
|
|
|
|
|
+ stage_list: JSON.stringify(stageList),
|
|
|
|
|
+ prj_account_list: JSON.stringify(prjAccList),
|
|
|
|
|
+ role_list: JSON.stringify(roleList),
|
|
|
|
|
+ used_list: JSON.stringify(usedList),
|
|
|
|
|
+ tenderMenu,
|
|
|
|
|
+ preUrl: '/tender/' + tenderId + '/measure/stage/' + ctx.params.order,
|
|
|
|
|
+ measureType,
|
|
|
|
|
+ categoryData,
|
|
|
|
|
+ tenderList,
|
|
|
|
|
+ auditConst: auditConst.stage,
|
|
|
|
|
+ ledgerAuditConst: auditConst.ledger,
|
|
|
|
|
+ jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.report.main),
|
|
|
|
|
+ customSelects,
|
|
|
|
|
+ rptCustomType: reportConst.rptCustomType,
|
|
|
|
|
+ advanceList: JSON.stringify([]),
|
|
|
|
|
+ advanceAuditList: JSON.stringify([]),
|
|
|
|
|
+ materialAdjList: JSON.stringify(materialList),
|
|
|
|
|
+ materialAdjAuditList: JSON.stringify([]),
|
|
|
|
|
+ materialList,
|
|
|
|
|
+ stages: stageList,
|
|
|
|
|
+ dataSelects,
|
|
|
|
|
+ pageShow,
|
|
|
|
|
+ authMobile: accountInfo.auth_mobile,
|
|
|
|
|
+ shenpiConst,
|
|
|
|
|
+ archiveList,
|
|
|
|
|
+ lastAuditor,
|
|
|
|
|
+ rpt_id: ctx.query.rpt_id,
|
|
|
|
|
+ isAdmin,
|
|
|
|
|
+ prePay: JSON.stringify(advance),
|
|
|
|
|
+ OSS_PATH: ctx.app.config.fujianOssPath,
|
|
|
|
|
+ viewPmData: PermissionCheck.viewPmData(this.ctx.session.sessionUser.permission),
|
|
|
|
|
+ source_type: 101,
|
|
|
|
|
+ bglObj: 'null',
|
|
|
|
|
+ changes: 'null',
|
|
|
|
|
+ otherChangeList: 'null',
|
|
|
|
|
+ otherHintName: '',
|
|
|
|
|
+ permissions: '[]',
|
|
|
|
|
+ };
|
|
|
|
|
+ */
|
|
|
|
|
+ /*
|
|
|
|
|
+ //*/
|
|
|
|
|
+ // await this.layout('report/index.ejs', renderData, 'report/rpt_all_popup.ejs');
|
|
|
|
|
+ } catch (err) {
|
|
|
|
|
+ this.log(err);
|
|
|
|
|
+ // ctx.redirect('/tender/' + ctx.tender.id + '/measure/stage');
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
async indexForDynamicGrandTotal(ctx) {
|
|
async indexForDynamicGrandTotal(ctx) {
|
|
|
// 动态决算(动态投资)入口 (以独立报表为蓝本(index入口))
|
|
// 动态决算(动态投资)入口 (以独立报表为蓝本(index入口))
|
|
|
try {
|
|
try {
|