|
@@ -37,7 +37,7 @@ module.exports = app => {
|
|
|
/**
|
|
|
* 是否可以新增修订
|
|
|
* @param ctx
|
|
|
- * @returns {Promise<boolean>}
|
|
|
+ * @return {Promise<boolean>}
|
|
|
* @private
|
|
|
*/
|
|
|
async _getAddReviseValid(ctx) {
|
|
@@ -58,7 +58,7 @@ module.exports = app => {
|
|
|
async index(ctx) {
|
|
|
try {
|
|
|
// 分页相关
|
|
|
- const count = await ctx.service.ledgerRevise.count({tid: ctx.tender.id});
|
|
|
+ const count = await ctx.service.ledgerRevise.count({ tid: ctx.tender.id });
|
|
|
const ledgerRevise = await ctx.service.ledgerRevise.getReviseList(ctx.tender.id);
|
|
|
if (ledgerRevise.length > 0) {
|
|
|
const revise = ledgerRevise[0];
|
|
@@ -85,7 +85,7 @@ module.exports = app => {
|
|
|
preUrl: '/tender/' + ctx.tender.id,
|
|
|
pageInfo: {
|
|
|
page: ctx.page,
|
|
|
- total: Math.ceil(count/app.config.pageSize),
|
|
|
+ total: Math.ceil(count / app.config.pageSize),
|
|
|
queryData: JSON.stringify(ctx.urlInfo.query),
|
|
|
},
|
|
|
ledgerRevise,
|
|
@@ -105,7 +105,7 @@ module.exports = app => {
|
|
|
/**
|
|
|
* 修订审批流程(Get)
|
|
|
* @param ctx
|
|
|
- * @returns {Promise<void>}
|
|
|
+ * @return {Promise<void>}
|
|
|
*/
|
|
|
async reviseAuditors(ctx) {
|
|
|
try {
|
|
@@ -124,7 +124,7 @@ module.exports = app => {
|
|
|
}
|
|
|
responseData.data.auditHistory = auditHistory;
|
|
|
// 获取审批流程中左边列表
|
|
|
- responseData.data.auditors = await ctx.service.reviseAudit.getAuditGroupByList(reviseInfo.id, times);
|
|
|
+ responseData.data.auditors = await ctx.service.reviseAudit.getAuditorsWithOwner(reviseInfo.id, times);
|
|
|
// 获取原报信息
|
|
|
const reviseAuditor = await ctx.service.projectAccount.getAccountInfoById(reviseInfo.uid);
|
|
|
responseData.data.reviseAuditor = reviseAuditor;
|
|
@@ -138,7 +138,7 @@ module.exports = app => {
|
|
|
/**
|
|
|
* 新增 修订 (Post)
|
|
|
* @param ctx
|
|
|
- * @returns {Promise<void>}
|
|
|
+ * @return {Promise<void>}
|
|
|
*/
|
|
|
async add(ctx) {
|
|
|
try {
|
|
@@ -149,7 +149,7 @@ module.exports = app => {
|
|
|
const revise = await ctx.service.ledgerRevise.add(ctx.tender.id, ctx.session.sessionUser.accountId);
|
|
|
|
|
|
ctx.redirect('/tender/' + ctx.tender.id + '/revise/info');
|
|
|
- } catch(err) {
|
|
|
+ } catch (err) {
|
|
|
this.log(err);
|
|
|
ctx.redirect(ctx.request.header.referer);
|
|
|
}
|
|
@@ -158,7 +158,7 @@ module.exports = app => {
|
|
|
/**
|
|
|
* 作废 修订 (Post)
|
|
|
* @param ctx
|
|
|
- * @returns {Promise<void>}
|
|
|
+ * @return {Promise<void>}
|
|
|
*/
|
|
|
async cancel(ctx) {
|
|
|
try {
|
|
@@ -176,7 +176,7 @@ module.exports = app => {
|
|
|
}
|
|
|
|
|
|
ctx.redirect('/tender/' + ctx.tender.id + '/revise/');
|
|
|
- } catch(err) {
|
|
|
+ } catch (err) {
|
|
|
this.log(err);
|
|
|
ctx.redirect(ctx.request.header.referer);
|
|
|
}
|
|
@@ -185,7 +185,7 @@ module.exports = app => {
|
|
|
/**
|
|
|
* 保存 修订详情 (Ajax-post)
|
|
|
* @param ctx
|
|
|
- * @returns {Promise<void>}
|
|
|
+ * @return {Promise<void>}
|
|
|
*/
|
|
|
async save(ctx) {
|
|
|
try {
|
|
@@ -203,14 +203,14 @@ module.exports = app => {
|
|
|
}
|
|
|
const data = JSON.parse(ctx.request.body.data);
|
|
|
if (data.content === undefined) {
|
|
|
- throw '保存数据有误'
|
|
|
+ throw '保存数据有误';
|
|
|
}
|
|
|
- const result = await ctx.service.ledgerRevise.defaultUpdate({id: revise.id, content: data.content});
|
|
|
+ const result = await ctx.service.ledgerRevise.defaultUpdate({ id: revise.id, content: data.content });
|
|
|
if (result.affectedRows !== 1) {
|
|
|
throw '保存数据失败,请重试';
|
|
|
}
|
|
|
- ctx.body = {err: 0, msg: '', data: null};
|
|
|
- } catch(err) {
|
|
|
+ ctx.body = { err: 0, msg: '', data: null };
|
|
|
+ } catch (err) {
|
|
|
this.log(err);
|
|
|
ctx.body = this.ajaxErrorBody(err, '保存数据失败,请重试');
|
|
|
}
|
|
@@ -259,22 +259,24 @@ module.exports = app => {
|
|
|
const [stdBills, stdChapters] = await this.ctx.service.valuation.getValuationStdList(
|
|
|
ctx.tender.data.valuation, ctx.tender.data.measure_type);
|
|
|
const curAuditor = await ctx.service.reviseAudit.getCurAuditor(revise.id, revise.times);
|
|
|
- const auditors = await ctx.service.reviseAudit.getAuditors(revise.id, revise.times);
|
|
|
+ const auditors = await ctx.service.reviseAudit.getAuditorsWithOwner(revise.id, revise.times);
|
|
|
const user = await ctx.service.projectAccount.getAccountInfoById(revise.uid);
|
|
|
+ const times = revise.status === audit.revise.status.checkNo ? revise.times - 1 : revise.times;
|
|
|
const auditHistory = [];
|
|
|
- if (revise.times > 1) {
|
|
|
- for (let i = 1; i < revise.times; i++) {
|
|
|
+ if (times >= 1) {
|
|
|
+ for (let i = 1; i <= times; i++) {
|
|
|
auditHistory.push(await ctx.service.reviseAudit.getAuditors(revise.id, i));
|
|
|
}
|
|
|
}
|
|
|
return {
|
|
|
- revise: revise, tender: ctx.tender.data,
|
|
|
- //reviseBills, revisePos,
|
|
|
+ revise, tender: ctx.tender.data,
|
|
|
+ // reviseBills, revisePos,
|
|
|
ledgerSpread, posSpread, tenderMenu, measureType,
|
|
|
preUrl: '/tender/' + ctx.tender.id,
|
|
|
audit: audit.revise,
|
|
|
jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.revise.info),
|
|
|
stdBills,
|
|
|
+ auditConst: audit.revise,
|
|
|
stdChapters,
|
|
|
curAuditor,
|
|
|
auditors,
|
|
@@ -287,7 +289,7 @@ module.exports = app => {
|
|
|
* 历史修订页面(修订完成后,用于查看)
|
|
|
* @param ctx
|
|
|
* @param revise
|
|
|
- * @returns {Promise<void>}
|
|
|
+ * @return {Promise<void>}
|
|
|
* @private
|
|
|
*/
|
|
|
async _getHistoryReviseInfo(ctx, revise) {
|
|
@@ -304,7 +306,7 @@ module.exports = app => {
|
|
|
* 修订页面(草稿,审批中)
|
|
|
* @param ctx
|
|
|
* @param revise
|
|
|
- * @returns {Promise<void>}
|
|
|
+ * @return {Promise<void>}
|
|
|
* @private
|
|
|
*/
|
|
|
async _getAuditReviseInfo(ctx, revise) {
|
|
@@ -350,10 +352,14 @@ module.exports = app => {
|
|
|
renderData.history = false;
|
|
|
renderData.historyRevise = [];
|
|
|
// 添加审批人相关
|
|
|
- renderData.accountGroup = accountGroup;
|
|
|
+ // renderData.accountGroup = accountGroup;
|
|
|
renderData.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'],
|
|
|
+ columns: ['id', 'name', 'company', 'role', 'enable', 'is_admin', 'account_group', 'mobile'],
|
|
|
+ });
|
|
|
+ renderData.accountGroup = accountGroup.map((item, idx) => {
|
|
|
+ const groupList = renderData.accountList.filter(item => item.account_group === idx);
|
|
|
+ return { groupName: item, groupList };
|
|
|
});
|
|
|
renderData.auditorList = await ctx.service.reviseAudit.getAuditors(revise.id, revise.times);
|
|
|
renderData.curAuditor = await ctx.service.reviseAudit.getCurAuditor(revise.id, revise.times);
|
|
@@ -363,7 +369,7 @@ module.exports = app => {
|
|
|
/**
|
|
|
* 修订 详细页面(Get)
|
|
|
* @param ctx
|
|
|
- * @returns {Promise<void>}
|
|
|
+ * @return {Promise<void>}
|
|
|
*/
|
|
|
async info(ctx) {
|
|
|
try {
|
|
@@ -430,8 +436,8 @@ module.exports = app => {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- ctx.body = {err: 0, msg: '', data: {bills: reviseBills, pos: revisePos}};
|
|
|
- } catch(err) {
|
|
|
+ ctx.body = { err: 0, msg: '', data: { bills: reviseBills, pos: revisePos } };
|
|
|
+ } catch (err) {
|
|
|
ctx.helper.log(err);
|
|
|
this.ajaxErrorBody(err, '加载台账修订数据错误');
|
|
|
}
|
|
@@ -454,7 +460,7 @@ module.exports = app => {
|
|
|
|
|
|
const data = ctx.helper.checkBillsWithPos(reviseBills, revisePos,
|
|
|
['sgfh_qty', 'qtcl_qty', 'sjcl_qty', 'quantity']);
|
|
|
- ctx.body = { err: 0, msg: '', data: data };
|
|
|
+ ctx.body = { err: 0, msg: '', data };
|
|
|
} catch (err) {
|
|
|
this.log(err);
|
|
|
ctx.body = this.ajaxErrorBody(err, '检查数据错误');
|
|
@@ -466,8 +472,8 @@ module.exports = app => {
|
|
|
const revise = await ctx.service.ledgerRevise.getLastestRevise(ctx.tender.id, false);
|
|
|
if (!revise) throw '台账修订数据有误';
|
|
|
|
|
|
- //const reviseBills = await ctx.service.ledger.getData(ctx.tender.id);
|
|
|
- //const revisePos = await ctx.service.pos.getPosData({tid: ctx.tender.id});
|
|
|
+ // const reviseBills = await ctx.service.ledger.getData(ctx.tender.id);
|
|
|
+ // const revisePos = await ctx.service.pos.getPosData({tid: ctx.tender.id});
|
|
|
const [ledgerSpread, posSpread] = this._getSpreadSetting(revise);
|
|
|
ledgerSpread.readOnly = true;
|
|
|
posSpread.readOnly = true;
|
|
@@ -475,7 +481,7 @@ module.exports = app => {
|
|
|
const renderData = {
|
|
|
measureType, audit, revise,
|
|
|
ledgerSpread, posSpread,
|
|
|
- //reviseBills, revisePos,
|
|
|
+ // reviseBills, revisePos,
|
|
|
readOnly: true,
|
|
|
historyRevise,
|
|
|
jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.revise.history),
|
|
@@ -494,7 +500,7 @@ module.exports = app => {
|
|
|
const reviseInfo = await ctx.service.ledgerRevise.getRevise(ctx.tender.id, data.rid);
|
|
|
reviseInfo.end_time_str = reviseInfo.end_time ? reviseInfo.end_time.toLocaleString() : '';
|
|
|
ctx.body = { err: 0, msg: '', data: reviseInfo };
|
|
|
- } catch(err) {
|
|
|
+ } catch (err) {
|
|
|
this.log(err);
|
|
|
ctx.body = this.ajaxErrorBody(err, '获取台账修订历史数据错误');
|
|
|
}
|
|
@@ -510,8 +516,8 @@ module.exports = app => {
|
|
|
if (!revise) throw '台账修订数据有误';
|
|
|
|
|
|
const reviseBills = await ctx.service.ledger.getData(ctx.tender.id);
|
|
|
- const revisePos = await ctx.service.pos.getPosData({tid: ctx.tender.id});
|
|
|
- ctx.body = {err: 0, msg: '', data: {bills: reviseBills, pos: revisePos}};
|
|
|
+ const revisePos = await ctx.service.pos.getPosData({ tid: ctx.tender.id });
|
|
|
+ ctx.body = { err: 0, msg: '', data: { bills: reviseBills, pos: revisePos } };
|
|
|
} catch (error) {
|
|
|
ctx.helper.log(error);
|
|
|
this.ajaxErrorBody(error, '获取台账修订数据错误,请刷新页面');
|
|
@@ -567,13 +573,14 @@ module.exports = app => {
|
|
|
if ((isNaN(data.id) || data.id <= 0) ||
|
|
|
(!data.tid && data.tid <= 0) ||
|
|
|
(!data.block || data.block.length <= 0)) throw '参数错误';
|
|
|
- return await this.ctx.service.reviseBills.pasteBlockData(this.ctx.tender.id, data.id, data.block, {crid: revise.id});
|
|
|
+ return await this.ctx.service.reviseBills.pasteBlockData(this.ctx.tender.id, data.id, data.block, { crid: revise.id });
|
|
|
}
|
|
|
async _addStd(revise, data) {
|
|
|
if ((isNaN(data.id) || data.id <= 0) || !data.stdType || !data.stdNode) throw '参数错误';
|
|
|
// todo 校验项目是否使用该库的权限
|
|
|
|
|
|
- let stdLib, addType;
|
|
|
+ let stdLib,
|
|
|
+ addType;
|
|
|
switch (data.stdType) {
|
|
|
case 'xmj':
|
|
|
stdLib = this.ctx.service.stdXmj;
|
|
@@ -594,7 +601,6 @@ module.exports = app => {
|
|
|
const stdData = await stdLib.getDataByDataId(data.stdLibId, data.stdNode);
|
|
|
switch (addType) {
|
|
|
case stdDataAddType.child:
|
|
|
- return await this.ctx.service.reviseBills.addStdNodeAsChild(revise.tid, data.id, stdData, revise.id);
|
|
|
break;
|
|
|
case stdDataAddType.next:
|
|
|
return await this.ctx.service.reviseBills.addStdNode(revise.tid, data.id, stdData, revise.id);
|
|
@@ -611,9 +617,9 @@ module.exports = app => {
|
|
|
return await this.ctx.service.reviseBills.addChild(revise.tid, data.id, data.dealBills, revise.id);
|
|
|
} else if (data.type === 'next') {
|
|
|
return await this.ctx.service.reviseBills.addBillsNode(revise.tid, data.id, data.dealBills, revise.id);
|
|
|
- } else {
|
|
|
- throw '数据错误';
|
|
|
}
|
|
|
+ throw '数据错误';
|
|
|
+
|
|
|
}
|
|
|
async _addBg(revise, data) {
|
|
|
if (!data.type || !data.bgBills) throw '数据错误';
|
|
@@ -622,9 +628,9 @@ module.exports = app => {
|
|
|
return await this.ctx.service.reviseBills.addChild(revise.tid, data.id, data.bgBills, revise.id);
|
|
|
} else if (data.type === 'next') {
|
|
|
return await this.ctx.service.reviseBills.addBillsNode(revise.tid, data.id, data.bgBills, revise.id);
|
|
|
- } else {
|
|
|
- throw '数据错误';
|
|
|
}
|
|
|
+ throw '数据错误';
|
|
|
+
|
|
|
}
|
|
|
async _updatePos(revise, data) {
|
|
|
await this.checkMeasureType(measureType.tz.value);
|
|
@@ -635,9 +641,9 @@ module.exports = app => {
|
|
|
case 'update':
|
|
|
if (data.postData instanceof Array) {
|
|
|
return await this.ctx.service.revisePos.updatePosArr(revise.tid, data.postData);
|
|
|
- } else {
|
|
|
- return await this.ctx.service.revisePos.updatePos(revise.tid, data.postData);
|
|
|
}
|
|
|
+ return await this.ctx.service.revisePos.updatePos(revise.tid, data.postData);
|
|
|
+
|
|
|
case 'delete':
|
|
|
return await this.ctx.service.revisePos.deletePos(revise.tid, data.postData);
|
|
|
case 'paste':
|
|
@@ -651,7 +657,7 @@ module.exports = app => {
|
|
|
if (!ctx.tender.data) throw '标段数据错误';
|
|
|
const data = JSON.parse(ctx.request.body.data);
|
|
|
if (!data.postType || !data.postData) throw '数据错误';
|
|
|
- const responseData = {err: 0, msg: '', data: {}};
|
|
|
+ const responseData = { err: 0, msg: '', data: {} };
|
|
|
|
|
|
const revise = await this.checkRevise(ctx);
|
|
|
|
|
@@ -707,10 +713,10 @@ module.exports = app => {
|
|
|
const ueType = ctx.params.ueType;
|
|
|
const compressData = ctx.request.body.data;
|
|
|
const data = JSON.parse(LzString.decompressFromUTF16(compressData));
|
|
|
- const responseData = { err: 0, msg: '', data: {}, };
|
|
|
+ const responseData = { err: 0, msg: '', data: {} };
|
|
|
switch (ueType) {
|
|
|
case 'gcl2xmj':
|
|
|
- responseData.data = await ctx.service.reviseBills.importGclExcel(data.id, data.sheet, {crid: revise.id});
|
|
|
+ responseData.data = await ctx.service.reviseBills.importGclExcel(data.id, data.sheet, { crid: revise.id });
|
|
|
break;
|
|
|
}
|
|
|
ctx.body = responseData;
|
|
@@ -725,7 +731,7 @@ module.exports = app => {
|
|
|
* 填设计量(Ajax)
|
|
|
*
|
|
|
* @param ctx
|
|
|
- * @returns {Promise<void>}
|
|
|
+ * @return {Promise<void>}
|
|
|
*/
|
|
|
async deal2sgfh(ctx) {
|
|
|
try {
|
|
@@ -734,7 +740,7 @@ module.exports = app => {
|
|
|
|
|
|
await this.ctx.service.revise.deal2sgfh(ctx.tender.id);
|
|
|
const ledgerData = await ctx.service.revise.getData(ctx.tender.id);
|
|
|
- ctx.body = {err: 0, msg: '', data: {bills: ledgerData}};
|
|
|
+ ctx.body = { err: 0, msg: '', data: { bills: ledgerData } };
|
|
|
} catch (err) {
|
|
|
this.log(err);
|
|
|
ctx.body = { err: 1, msg: err.toString(), data: null };
|
|
@@ -769,7 +775,7 @@ module.exports = app => {
|
|
|
if (!result) throw '添加审核人失败';
|
|
|
|
|
|
const resultData = await ctx.service.reviseAudit.getAuditor(revise.id, id, revise.times);
|
|
|
- ctx.body = {err: 0, msg: '', data: resultData};
|
|
|
+ ctx.body = { err: 0, msg: '', data: resultData };
|
|
|
} catch (err) {
|
|
|
this.log(err, '数据错误');
|
|
|
ctx.body = this.ajaxErrorBody(err);
|
|
@@ -797,7 +803,7 @@ module.exports = app => {
|
|
|
}
|
|
|
|
|
|
const resultData = await ctx.service.reviseAudit.getAuditors(revise.id, revise.times);
|
|
|
- ctx.body = {err: 0, msg: '', data: resultData};
|
|
|
+ ctx.body = { err: 0, msg: '', data: resultData };
|
|
|
} catch (err) {
|
|
|
this.log(err, '数据错误');
|
|
|
ctx.body = this.ajaxErrorBody(err);
|
|
@@ -821,11 +827,13 @@ module.exports = app => {
|
|
|
if (revise.uid !== ctx.session.sessionUser.accountId) throw '上报失败';
|
|
|
|
|
|
await ctx.service.reviseAudit.start(revise, revise.times);
|
|
|
-
|
|
|
- ctx.body = {err: 0, msg: '', data: {}};
|
|
|
+ ctx.redirect('/tender/' + ctx.tender.id + '/revise/info');
|
|
|
+ // ctx.body = { err: 0, msg: '', data: {} };
|
|
|
} catch (err) {
|
|
|
this.log(err);
|
|
|
- ctx.body = this.ajaxErrorBody(err, '上报失败');
|
|
|
+ // ctx.body = this.ajaxErrorBody(err, '上报失败');
|
|
|
+ this.postError(err, '审批失败');
|
|
|
+ ctx.redirect('/tender/' + ctx.tender.id + '/revise/info');
|
|
|
}
|
|
|
}
|
|
|
/**
|