define(function (require, exports, module) { //引入业务类基类 let BaseBiz = require('apps/rht/base/rhtBiz'); let rhtService = require('../../base/rhtService'); let rhtComm = require('apps/rht/comm/rhtComm'); //引入业务服务 let Service = require('./cnt070104service'); /** * 定义业务类对象 * @param vm 界面相关ViewModule */ function Biz(vm) { //继承第一步,构造继承 BaseBiz.call(this, vm); } //继承第二步,方法继承 inherits(Biz, BaseBiz); let orgType = rhtComm.GetOrgType(Store.logOn.orgCode); // Biz.prototype.initCompleted = function () { // this.super('initCompleted'); // this.dsMaster.serverBiz = 'cntLxPeriodBiz' // } //拼装查询条件 Biz.prototype.beforeDataSrcSearch = function (dataSrc, params) { let self = this; self.setServerBiz('cn.qdhezheng.rht.app.cnt.cnt070104.PreProcess'); }; //控制主界面按钮状态 Biz.prototype.getOpEnabled = function (opCode) { let self = this; let isOk = this.super('getOpEnabled', opCode); if (!isOk) return false; let curRow = this.dsMaster.currentRow; let orgCode = curRow ? TypeUtil.toString(curRow.OrgCode) : ''; if (opCode == 'edit') { if (!curRow) return false; if(orgType == '9999') return true; if (orgCode != Store.logOn.orgCode) return false; } if (opCode == 'delete') { if (!curRow) return false; if(orgType == '9999') return true; if (orgCode != Store.logOn.orgCode) return false; } if (opCode == 'auto') { if (!curRow) return false; if(self.getState() === 'edit') { return false } if(orgType == '9999') return true; if (orgCode != Store.logOn.orgCode) return false; } return true; }; /** * @description 数据发生变化时调用 * @param dataSrc 数据集 * @param dr 数据行 * @param dc 数据列 */ Biz.prototype.fieldChanged = function (dataSrc, dr, dc) { let self = this; if (dataSrc.uiObjCode === this.dsMaster.uiObjCode) { let currentRow = self.dsMaster.currentRow; if (currentRow === null) return false; switch (dc.fieldName) { } }else if (dataSrc.uiObjCode === this.dsDetail.uiObjCode) { let currentRow = self.dsMaster.currentRow; if (currentRow === null) return false; this.fieldChangedMx(dataSrc, dr, dc); } return this.super('fieldChanged'); }; Biz.prototype.fieldChangedMx = function (dataSrc, dr, dc) { let isJs = TypeUtil.toString(dr.IsJs); if(isJs == '1') { dr.setColumnError('PeriodCode', '此结算期已对账不能修改!'); return false; } return true; }; //按钮事件控制 Biz.prototype.doOp = function (opCode) { let self = this; if (opCode == 'auto') { let ds = self.dsMaster; this.onAuto(self, ds); } }; Biz.prototype.onAuto = function (biz, ds) { let dsrow=ds.currentRow; let cntId = dsrow ? TypeUtil.toString(dsrow['CntID']) : ''; let htCode = dsrow ? TypeUtil.toString(dsrow['HtCode']) : ''; let htName = dsrow ? TypeUtil.toString(dsrow['HtName']) : ''; if (!Store.confirm('您确认要生成合同' + htCode + '-' + htName + '的联销结算期吗?')) { return false; }else { let actRes= Service.AutoGenLxPeriod(cntId); if (actRes.result !== 1) { Store.messager.err('生成失败!' + actRes.message); return false; }else { Store.messager.tip('生成成功!'); } } return true; }; Biz.prototype.beforeEdit = function () { this.dsMaster.columns.forEach(v => { v.set('isEditable',false); }) return this.super('beforeEdit'); }; //保存前校验 Biz.prototype.beforeSave = function () { if(!this.ChkCntLxTcJsPeriod(false)) { return false; } return this.super('beforeSave'); }; Biz.prototype.ChkCntLxTcJsPeriod = function (onlyChkCurrentRow) { if(this.dsDetail.rows.length < 1) { return true; } let cntStartDate = TypeUtil.toString(this.dsMaster.currentRow.StartDate); let cntEndDate = TypeUtil.toString(this.dsMaster.currentRow.EndDate); let bdDate = TypeUtil.toString(this.dsMaster.currentRow.BdDate); if(bdDate == '') { bdDate = cntStartDate; } if(onlyChkCurrentRow) { if(!this.ChkJsPeriodInput(cntStartDate, cntEndDate, this.dsDetail.currentRow)) { return false; } }else { let minStartDate = TypeUtil.toString(this.dsDetail.rows[0].BgnDate); for(let i = 1; i < this.dsDetail.rows.length; i++) { let bgnDate = TypeUtil.toString(this.dsDetail.rows[i].BgnDate); if(minStartDate > bgnDate) { minStartDate = bgnDate; } if(!this.ChkJsPeriodInput(cntStartDate, cntEndDate, this.dsDetail.rows[i])) { return false; } } if(minStartDate != bdDate) { Store.messager.err('结算期最小开始日期' + minStartDate + '应该与保底开始日期' + bdDate + '一致!'); return false; } this.dsDetail.rows.sort(this.SortJsPeriod); let rowBgnDate; let rowEndDate; let nextDate = ''; for(let i = 0; i < this.dsDetail.rows.length; i++) { if(TypeUtil.toString(this.dsDetail.rows[i].PeriodType) == '1') { continue; } rowBgnDate = TypeUtil.toString(this.dsDetail.rows[i].BgnDate); rowEndDate = TypeUtil.toString(this.dsDetail.rows[i].EndDate); if(nextDate != '' && nextDate != rowBgnDate) { Store.messager.err('结算期' + TypeUtil.toString(this.dsDetail.rows[i].PeriodCode) + '日期不连续'); return false; } nextDate = rhtComm.DateChangeDays(1, rowEndDate); } // 判断多月通算期是否符合要求 for(let i = 0; i < this.dsDetail.rows.length; i++) { if(TypeUtil.toString(this.dsDetail.rows[i].PeriodType) != '1') { continue; } rowBgnDate = TypeUtil.toString(this.dsDetail.rows[i].BgnDate); rowEndDate = TypeUtil.toString(this.dsDetail.rows[i].EndDate); let isBgnDateValid = false; let isEndDateValid = false; for(let j = 0; j < this.dsDetail.rows.length; j++) { if(TypeUtil.toString(this.dsDetail.rows[j].PeriodType) == '1') { continue; } if(TypeUtil.toString(this.dsDetail.rows[j].BgnDate) == rowBgnDate) { isBgnDateValid = true; break; } } if(!isBgnDateValid) { Store.messager.err('结算期' + TypeUtil.toString(this.dsDetail.rows[i].PeriodCode) + '开始日期输入错误(多月结算期的开始日期应该是某个子结算期的开始日期)'); return false; } for(let j = 0; j < this.dsDetail.rows.length; j++) { if(TypeUtil.toString(this.dsDetail.rows[j].PeriodType) == '1') { continue; } if(TypeUtil.toString(this.dsDetail.rows[j].EndDate) == rowEndDate) { isEndDateValid = true; break; } } if(!isEndDateValid) { Store.messager.err('结算期' + TypeUtil.toString(this.dsDetail.rows[i].PeriodCode) + '结束日期输入错误(多月结算期的结束日期应该是某个子结算期的结束日期)'); return false; } } } return true; }; Biz.prototype.SortJsPeriod = function (a, b) { return a.BgnDate - b.BgnDate; }; Biz.prototype.ChkJsPeriodInput = function (cntStartDate, cntEndDate, jsPeriodRow) { let jsBgnDate = TypeUtil.toString(jsPeriodRow.BgnDate); let jsEndDate = TypeUtil.toString(jsPeriodRow.EndDate); if(jsBgnDate > jsEndDate) { Store.messager.err('联销结算期结束日期必须大于等于开始日期!'); return false; } if(jsBgnDate < cntStartDate || jsBgnDate > cntEndDate) { Store.messager.err('联销结算期的开始日期应在合同有效期内!'); return false; } if(jsEndDate < cntStartDate || jsEndDate > cntEndDate) { Store.messager.err('联销结算期的结束日期应在合同有效期内!'); return false; } return true; }; return Biz; });