|
@@ -35,6 +35,33 @@ module.exports = app => {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 获取SpreadSetting
|
|
|
+ * @private
|
|
|
+ */
|
|
|
+ _getSpreadSetting() {
|
|
|
+ const _ = this.app._;
|
|
|
+ function removeFieldCols(setting, cols) {
|
|
|
+ _.remove(setting.cols, function (c) {
|
|
|
+ return cols.indexOf(c.field) > -1;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ const ledger = JSON.parse(JSON.stringify(spreadConst.ledgerSpread));
|
|
|
+ const pos = JSON.parse(JSON.stringify(spreadConst.ledgerPosSpread));
|
|
|
+ const tender = this.ctx.tender;
|
|
|
+ if (this._ledgerReadOnly(tender.data)) {
|
|
|
+ ledger.readOnly = true;
|
|
|
+ pos.readOnly = true;
|
|
|
+ }
|
|
|
+ if (tender.data.measure_type === measureType.tz.value) {
|
|
|
+ removeFieldCols(ledger, spreadConst.filterCols.tzWithoutCols);
|
|
|
+ }
|
|
|
+ if (!tender.info.display.ledger.dgnQty) {
|
|
|
+ removeFieldCols(ledger, spreadConst.filterCols.dgnCols);
|
|
|
+ }
|
|
|
+ return [ledger, pos];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 台账分解页面 (Get)
|
|
|
*
|
|
|
* @param {Object} ctx - egg全局变量
|
|
@@ -42,35 +69,28 @@ module.exports = app => {
|
|
|
*/
|
|
|
async explode(ctx) {
|
|
|
try {
|
|
|
- const tenderId = ctx.params.id;
|
|
|
- const tender = await this.service.tender.getTender(tenderId);
|
|
|
- const tenderInfo = await this.service.tenderInfo.getTenderInfo(tenderId);
|
|
|
+ const tender = ctx.tender;
|
|
|
+ const [ledgerSpread, posSpread] = this._getSpreadSetting();
|
|
|
|
|
|
- if (!tender.ledger_status) {
|
|
|
- tender.ledger_status = auditConst.status.uncheck;
|
|
|
- }
|
|
|
- if (!tender.ledger_times) {
|
|
|
- tender.ledger_times = 1;
|
|
|
- }
|
|
|
- const curAuditor = await ctx.service.ledgerAudit.getCurAuditor(tenderId, tender.ledger_times);
|
|
|
- const times = tender.ledger_status === auditConst.status.checkNo ? tender.ledger_times - 1 : tender.ledger_times;
|
|
|
- const auditors = await ctx.service.ledgerAudit.getAuditors(tenderId, times);
|
|
|
+ const curAuditor = await ctx.service.ledgerAudit.getCurAuditor(tender.id, tender.data.ledger_times);
|
|
|
+ const times = tender.data.ledger_status === auditConst.status.checkNo ? tender.data.ledger_times - 1 : tender.data.ledger_times;
|
|
|
+ const auditors = await ctx.service.ledgerAudit.getAuditors(tender.id, times);
|
|
|
const content = auditors.length > 0 ? await ctx.service.ledgerAuditContent.getAllDataByCondition({
|
|
|
- where: {tender_id: tenderId, times: times, audit_id: auditors[0].audit_id}
|
|
|
+ where: {tender_id: tender.id, times: times, audit_id: auditors[0].audit_id}
|
|
|
}) : null;
|
|
|
- const ledgerData = await ctx.service.ledger.getDataByTenderId(tenderId, -1);
|
|
|
+ const ledgerData = await ctx.service.ledger.getDataByTenderId(tender.id, -1);
|
|
|
const renderData = {
|
|
|
- tender,
|
|
|
- tenderInfo,
|
|
|
+ tender: tender.data,
|
|
|
+ tenderInfo: tender.info,
|
|
|
auditConst,
|
|
|
auditors,
|
|
|
curAuditor,
|
|
|
content,
|
|
|
ledger: JSON.stringify(ledgerData),
|
|
|
- ledgerSpreadSetting: JSON.stringify(spreadConst.ledgerSpread),
|
|
|
- posSpreadSetting: JSON.stringify(spreadConst.ledgerPosSpread),
|
|
|
+ ledgerSpreadSetting: JSON.stringify(ledgerSpread),
|
|
|
+ posSpreadSetting: JSON.stringify(posSpread),
|
|
|
tenderMenu,
|
|
|
- preUrl: '/tender/' + tenderId,
|
|
|
+ preUrl: '/tender/' + tender.id,
|
|
|
measureType,
|
|
|
};
|
|
|
await this.layout('ledger/explode.ejs', renderData, 'ledger/explode_modal.ejs');
|
|
@@ -86,8 +106,9 @@ module.exports = app => {
|
|
|
* @returns {boolean}
|
|
|
* @private
|
|
|
*/
|
|
|
- _ledgerReadOnly (tenderData) {
|
|
|
- return tenderData.ledger_status === auditConst.status.checking || tenderData.ledger_status === auditConst.status.checked;
|
|
|
+ _ledgerReadOnly () {
|
|
|
+ const tender = this.ctx.tender.data;
|
|
|
+ return tender.ledger_status === auditConst.status.checking || tender.ledger_status === auditConst.status.checked;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -102,17 +123,13 @@ module.exports = app => {
|
|
|
data: [],
|
|
|
};
|
|
|
try {
|
|
|
- const tenderId = ctx.params.id;
|
|
|
- if (!tenderId) {
|
|
|
- throw '当前未打开标段';
|
|
|
- }
|
|
|
const data = JSON.parse(ctx.request.body.data);
|
|
|
const id = data.ledger_id;
|
|
|
if (isNaN(id) || id <= 0) {
|
|
|
throw '参数错误';
|
|
|
}
|
|
|
|
|
|
- responseData.data = await ctx.service.ledger.getChildrenByParentId(tenderId, id);
|
|
|
+ responseData.data = await ctx.service.ledger.getChildrenByParentId(ctx.tender.id, id);
|
|
|
} catch (err) {
|
|
|
responseData.err = 1;
|
|
|
responseData.msg = err;
|
|
@@ -133,37 +150,28 @@ module.exports = app => {
|
|
|
data: [],
|
|
|
};
|
|
|
try {
|
|
|
- const tenderId = ctx.params.id;
|
|
|
- if (!tenderId) {
|
|
|
- throw '当前未打开标段';
|
|
|
- }
|
|
|
- const tenderData = await ctx.service.tender.getDataById(tenderId);
|
|
|
- if (!tenderData || tenderData.user_id !== ctx.session.sessionUser.accountId || this._ledgerReadOnly(tenderData)) {
|
|
|
+ if (!ctx.tender.data || ctx.tender.data.user_id !== ctx.session.sessionUser.accountId || this._ledgerReadOnly()) {
|
|
|
throw '标段数据错误';
|
|
|
}
|
|
|
- const data = JSON.parse(ctx.request.body.data);
|
|
|
- if ((isNaN(data.id) || data.id <= 0) || (!data.postType)) {
|
|
|
- throw '参数错误';
|
|
|
- }
|
|
|
|
|
|
switch (data.postType) {
|
|
|
case 'add':
|
|
|
- responseData.data = await ctx.service.ledger.addNode(tenderId, data.id);
|
|
|
+ responseData.data = await ctx.service.ledger.addNode(ctx.tender.id, data.id);
|
|
|
break;
|
|
|
case 'delete':
|
|
|
- responseData.data = await ctx.service.ledger.deleteNode(tenderId, data.id);
|
|
|
+ responseData.data = await ctx.service.ledger.deleteNode(ctx.tender.id, data.id);
|
|
|
break;
|
|
|
case 'up-move':
|
|
|
- responseData.data = await ctx.service.ledger.upMoveNode(tenderId, data.id);
|
|
|
+ responseData.data = await ctx.service.ledger.upMoveNode(ctx.tender.id, data.id);
|
|
|
break;
|
|
|
case 'down-move':
|
|
|
- responseData.data = await ctx.service.ledger.downMoveNode(tenderId, data.id);
|
|
|
+ responseData.data = await ctx.service.ledger.downMoveNode(ctx.tender.id, data.id);
|
|
|
break;
|
|
|
case 'up-level':
|
|
|
- responseData.data = await ctx.service.ledger.upLevelNode(tenderId, data.id);
|
|
|
+ responseData.data = await ctx.service.ledger.upLevelNode(ctx.tender.id, data.id);
|
|
|
break;
|
|
|
case 'down-level':
|
|
|
- responseData.data = await ctx.service.ledger.downLevelNode(tenderId, data.id);
|
|
|
+ responseData.data = await ctx.service.ledger.downLevelNode(ctx.tender.id, data.id);
|
|
|
break;
|
|
|
default:
|
|
|
throw '未知操作';
|
|
@@ -189,19 +197,14 @@ module.exports = app => {
|
|
|
data: [],
|
|
|
};
|
|
|
try {
|
|
|
- const tenderId = ctx.params.id;
|
|
|
- if (!tenderId) {
|
|
|
- throw '当前未打开标段';
|
|
|
- }
|
|
|
- const tenderData = await ctx.service.tender.getDataById(tenderId);
|
|
|
- if (!tenderData || tenderData.user_id !== ctx.session.sessionUser.accountId || this._ledgerReadOnly(tenderData)) {
|
|
|
+ if (!ctx.tender.data || ctx.tender.data.user_id !== ctx.session.sessionUser.accountId || this._ledgerReadOnly()) {
|
|
|
throw '标段数据错误';
|
|
|
}
|
|
|
const data = JSON.parse(ctx.request.body.data);
|
|
|
if (data instanceof Array) {
|
|
|
- responseData.data = await ctx.service.ledger.updateInfos(tenderId, data);
|
|
|
+ responseData.data = await ctx.service.ledger.updateInfos(ctx.tender.id, data);
|
|
|
} else {
|
|
|
- responseData.data = await ctx.service.ledger.updateInfo(tenderId, data);
|
|
|
+ responseData.data = await ctx.service.ledger.updateInfo(ctx.tender.id, data);
|
|
|
}
|
|
|
} catch (err) {
|
|
|
responseData.err = 1;
|
|
@@ -227,7 +230,7 @@ module.exports = app => {
|
|
|
throw '标段数据错误';
|
|
|
}
|
|
|
const data = JSON.parse(ctx.request.body.data);
|
|
|
- responseData.data = await ctx.service.ledger.updateCalc(tenderId, data);
|
|
|
+ responseData.data = await ctx.service.ledger.updateCalc(ctx.tender.id, data);
|
|
|
} catch (err) {
|
|
|
this.log(err);
|
|
|
responseData.err = 1;
|
|
@@ -250,12 +253,7 @@ module.exports = app => {
|
|
|
data: [],
|
|
|
};
|
|
|
try {
|
|
|
- const tenderId = ctx.params.id;
|
|
|
- if (!tenderId) {
|
|
|
- throw '当前未打开标段';
|
|
|
- }
|
|
|
- const tenderData = await ctx.service.tender.getDataById(tenderId);
|
|
|
- if (!tenderData || tenderData.user_id !== ctx.session.sessionUser.accountId || this._ledgerReadOnly(tenderData)) {
|
|
|
+ if (!ctx.tender.data || ctx.tender.data.user_id !== ctx.session.sessionUser.accountId || this._ledgerReadOnly()) {
|
|
|
throw '标段数据错误';
|
|
|
}
|
|
|
const data = JSON.parse(ctx.request.body.data);
|
|
@@ -263,7 +261,7 @@ module.exports = app => {
|
|
|
throw '参数错误';
|
|
|
}
|
|
|
|
|
|
- responseData.data = await ctx.service.ledger.pasteBlock(tenderId, data.id, data.block);
|
|
|
+ responseData.data = await ctx.service.ledger.pasteBlock(ctx.tender.id, data.id, data.block);
|
|
|
} catch (err) {
|
|
|
responseData.err = 1;
|
|
|
responseData.msg = err;
|
|
@@ -284,12 +282,7 @@ module.exports = app => {
|
|
|
data: [],
|
|
|
};
|
|
|
try {
|
|
|
- const tenderId = ctx.params.id;
|
|
|
- if (!tenderId) {
|
|
|
- throw '当前未打开标段';
|
|
|
- }
|
|
|
- const tenderData = await ctx.service.tender.getDataById(tenderId);
|
|
|
- if (!tenderData || tenderData.user_id !== ctx.session.sessionUser.accountId || this._ledgerReadOnly(tenderData)) {
|
|
|
+ if (!ctx.tender.data || ctx.tender.data.user_id !== ctx.session.sessionUser.accountId || this._ledgerReadOnly()) {
|
|
|
throw '标段数据错误';
|
|
|
}
|
|
|
const data = JSON.parse(ctx.request.body.data);
|
|
@@ -313,10 +306,10 @@ module.exports = app => {
|
|
|
const addType = stdDataAddType.withParent;
|
|
|
switch (addType) {
|
|
|
case stdDataAddType.self:
|
|
|
- responseData.data = await ctx.service.ledger.addStdNode(tenderId, data.id, stdData);
|
|
|
+ responseData.data = await ctx.service.ledger.addStdNode(ctx.tender.id, data.id, stdData);
|
|
|
break;
|
|
|
case stdDataAddType.withParent:
|
|
|
- responseData.data = await ctx.service.ledger.addStdNodeWithParent(tenderId, stdData, stdLib);
|
|
|
+ responseData.data = await ctx.service.ledger.addStdNodeWithParent(ctx.tender.id, stdData, stdLib);
|
|
|
break;
|
|
|
default:
|
|
|
throw '未知添加方法';
|
|
@@ -347,12 +340,7 @@ module.exports = app => {
|
|
|
data: [],
|
|
|
};
|
|
|
try {
|
|
|
- const tenderId = ctx.params.id;
|
|
|
- if (!tenderId) {
|
|
|
- throw '当前未打开标段';
|
|
|
- }
|
|
|
- const tenderData = await ctx.service.tender.getDataById(tenderId);
|
|
|
- if (!tenderData || tenderData.user_id !== ctx.session.sessionUser.accountId || this._ledgerReadOnly(tenderData)) {
|
|
|
+ if (!ctx.tender.data || ctx.tender.data.user_id !== ctx.session.sessionUser.accountId || this._ledgerReadOnly()) {
|
|
|
throw '标段数据错误';
|
|
|
}
|
|
|
const data = JSON.parse(ctx.request.body.data);
|
|
@@ -362,10 +350,10 @@ module.exports = app => {
|
|
|
|
|
|
switch (data.batchType) {
|
|
|
case 'child':
|
|
|
- responseData.data = await ctx.service.ledger.batchInsertChild(tenderId, data.id, data.batchData);
|
|
|
+ responseData.data = await ctx.service.ledger.batchInsertChild(ctx.tender.id, data.id, data.batchData);
|
|
|
break;
|
|
|
case 'next':
|
|
|
- responseData.data = await ctx.service.ledger.batchInsertNext(tenderId, data.id, data.batchData);
|
|
|
+ responseData.data = await ctx.service.ledger.batchInsertNext(ctx.tender.id, data.id, data.batchData);
|
|
|
break;
|
|
|
default:
|
|
|
throw '参数错误';
|
|
@@ -484,13 +472,9 @@ module.exports = app => {
|
|
|
*/
|
|
|
async pos(ctx) {
|
|
|
try {
|
|
|
- const tenderId = ctx.params.id;
|
|
|
- if (!tenderId) {
|
|
|
- throw '当前未打开标段';
|
|
|
- }
|
|
|
- await this.checkMeasureType(tenderId, measureType.tz.value);
|
|
|
+ await this.checkMeasureType(measureType.tz.value);
|
|
|
const condition = JSON.parse(ctx.request.body.data) || {};
|
|
|
- condition.tid = tenderId;
|
|
|
+ condition.tid = ctx.tender.id;
|
|
|
|
|
|
const posData = await ctx.service.pos.getPosData(condition);
|
|
|
ctx.body = {err: 0, msg: '', data: posData};
|
|
@@ -508,13 +492,9 @@ module.exports = app => {
|
|
|
*/
|
|
|
async posUpdate(ctx) {
|
|
|
try {
|
|
|
- const tenderId = ctx.params.id;
|
|
|
- if (!tenderId) {
|
|
|
- throw '当前未打开标段';
|
|
|
- }
|
|
|
- await this.checkMeasureType(tenderId, measureType.tz.value);
|
|
|
+ await this.checkMeasureType(measureType.tz.value);
|
|
|
const data = JSON.parse(ctx.request.body.data);
|
|
|
- const responseData = await ctx.service.pos.savePosData(data, tenderId);
|
|
|
+ const responseData = await ctx.service.pos.savePosData(data, ctx.tender.id);
|
|
|
ctx.body = { err: 0, msg: '', data: responseData };
|
|
|
} catch(err) {
|
|
|
this.log(err);
|
|
@@ -530,7 +510,11 @@ module.exports = app => {
|
|
|
*/
|
|
|
async change(ctx) {
|
|
|
try {
|
|
|
- const renderData = await this.getCommonRenderData(ctx);
|
|
|
+ const renderData = {
|
|
|
+ tender: ctx.tender.data,
|
|
|
+ tenderMenu: this.menu.tenderMenu,
|
|
|
+ preUrl: '/tender/' + ctx.tender.id,
|
|
|
+ };
|
|
|
await this.layout('ledger/change.ejs', renderData, 'ledger/change_modal.ejs');
|
|
|
} catch(err) {
|
|
|
this.log(err);
|