You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

237 lines
9.3 KiB

4 years ago
define(function (require, exports, module) {
let BaseBiz = require('apps/rht/base/rhtBiz');
let rhtComm = require('apps/rht/comm/rhtComm');
let Service = require('./sku080204service');
let XWindow = require('system/views/pages/xlswindow/import-window');
let IsdsMasterChg = false;
let IsdsDetailChg = false;
/**
* 控制按钮的可用
* @param opCode 按钮编码
* @return [description]
*/
function Biz(vm) {
//继承第一步,构造继承
BaseBiz.call(this, vm);
}
//继承第二步,方法继承
inherits(Biz, BaseBiz);
let SKU_IsCheckPluBar = rhtComm.getRhtOptionValue('*','SKU','SKU_IsCheckPluBar','0');
let Sku_IsVerifyBarCode = rhtComm.getRhtOptionValue('*','SKU','Sku_IsVerifyBarCode','0');
let MaxSerialNo = 1;
//保存前记录日志
Biz.prototype.afterEdit = function () {
return this.super('afterEdit');
};
//保存后记录日志
Biz.prototype.beforeSave = function () {
let masterRow = this.dsMaster.currentRow;
let BarCode = TypeUtil.toString(masterRow['BarCode']);
let PluName = TypeUtil.toString(masterRow['PluName']);
let PluAbbrName = TypeUtil.toString(masterRow['PluAbbrName']);
let PluMN = TypeUtil.toString(masterRow['PluMN']);
let BarType = TypeUtil.toString(masterRow['BarType']);
let TableName="";
if ((PluName.indexOf(";") != -1) || (PluName.indexOf("''") != -1)){
masterRow.setColumnError("PluName", "商品名称含有非法字符;或者''");
return false;
}
if ((PluAbbrName.indexOf(";") != -1) || (PluAbbrName.indexOf("''") != -1)){
masterRow.setColumnError("PluAbbrName", "商品简称含有非法字符;或者''");
return false;
}
if ((PluMN.indexOf(";") != -1) || (PluMN.indexOf("''") != -1)){
masterRow.setColumnError("PluMN", "商品助记符含有非法字符;或者''");
return false;
}
if (BarCode.indexOf(";") != -1){
masterRow.setColumnError("BarCode", "商品条码含有非法字符;"+OldID);
return false;
}
if (this._state == "add") {
if (BarType == "0"){
TableName="tSkuMulBar";
}
else {
TableName="TSKUPLUPACKAGEHEAD";
}
let ret= Service.getSlideMenuData("OnBeforeSave","BarCodeRepeat",TableName,BarCode,"","");
if (ret.result !== 1) {
masterRow.setColumnError("BarCode", ret.message);
return false;
}
if (ret.data.IsExist == "1") {
masterRow.setColumnError("BarCode", ret.message);
return false;
}
}
return this.super('beforeSave');
};
//字段变化触发事件
Biz.prototype.fieldChanged = function (dataSrc, dr, dc) {
if (dataSrc.uiObjCode === this.dsMaster.uiObjCode) {
switch (dc.fieldName) {
case 'BarCode':
this.fieldChangedBarCode(dataSrc, dr, dc);
break;
case 'PluCode':
this.fieldChangedPluCode(dataSrc, dr, dc);
break;
case 'BarType':
this.fieldChangedBarType(dataSrc, dr, dc);
break;
}
}
this.super('fieldChanged');
};
//主表 BarCode 字段变化执行事件
Biz.prototype.fieldChangedBarCode = function (dataSrc, dr, dc) {
let barCode = TypeUtil.toString(dr['BarCode']);
let pluCode = TypeUtil.toString(dr['PluCode']);
let pluId = TypeUtil.toString(dr['PluID']);
if (pluCode.length > 0){
//用正则表达式校验输入内容必须是0-9的数字
let re=/^[0-9]+$/;
if (SKU_IsCheckPluBar == "0"){
re=/^[A-Za-z0-9]+$/;
}
if (!re.test(barCode)) {
dr.setColumnError('BarCode',"条码只能是数字、英版文字母!");
return false;
}
if (barCode !== "") {
let ret= Service.getSlideMenuData("DoOnMasterCalcRule","BarCode",barCode,pluCode,pluId,"","");
if (ret.result !== 1) {
dr.setColumnError(dc.fieldName, ret.message);
return false;
}
};
};
return true;
};
//主表 PluCode 字段变化执行事件
Biz.prototype.fieldChangedPluCode = function (dataSrc, dr, dc) {
let PluCode = dr['PluCode'];
let OldPluCode = TypeUtil.toString(dr.transData['PluCode']);
if ((this._state == "edit") && (OldPluCode !=PluCode)) {
dr.setColumnError('PluCode',"已保存数据不允许变更商品编码!");
dr.setColumnText(dc.fieldName, OldPluCode);
return false;
}
return true;
};
//主表 BarType 字段变化执行事件
Biz.prototype.fieldChangedBarType = function (dataSrc, dr, dc) {
let BarType = dr['BarType'];
let OldBarType = TypeUtil.toString(dr.transData['BarType']);
if ((this._state == "edit") && (BarType !=OldBarType)) {
dr.setColumnError('PluCode',"已保存数据不允许变更条码类型!");
dr.setColumnText(dc.fieldName, OldBarType);
return false;
}
else {
if (BarType !=OldBarType){
dr.setColumnText("PluCode", "");
dr.setColumnText("PluName", "");
dr.setColumnText("PluMN", "");
dr.setColumnText("PluAbbrName", "");
dr.setColumnText("Spec", "");
}
}
return true;
};
//定义按钮事件
Biz.prototype.doOp = function (opCode) {
let self = this;
if (opCode == 'actimport') {
let dhead = self.dsMaster;
this.onimportexcelpl(self, dhead);
}
};
//控制主界面按钮状态(预制信息不允许修改和删除)
Biz.prototype.getOpEnabled = function (opCode) {
let isOk = this.super('getOpEnabled', opCode);
if (!isOk) {
return false;
}
let curRow = this.dsMaster.currentRow;
if (opCode == 'edit') {
let PatternType = curRow ? TypeUtil.toString(curRow['PatternType']) : '';
if ((PatternType == "0"))
return false;
}
if (opCode == 'delete') {
let PatternType = curRow ? TypeUtil.toString(curRow['PatternType']) : '';
if ((PatternType == "0"))
return false;
}
if (opCode == 'actimport') {
if (this.isEdit())
return false;
}
return true;
};
//导入按钮事件(暂时先不做 后期需要再加)
Biz.prototype.onimportexcelpl= function () {
let masterRow = this.dsMaster.currentRow;
let ds = this.dsDetail;
//执行导入
let win = new XWindow({}, function (data) {
(new ExcelHelper(this.biz, data,masterRow)).import(); // 处理返回的excel data数据这里的数据已经是数组包含了读取的所有数据.
});
win.open();
}
//Excel导入处理 增加到当前界面明细表中
function ExcelHelper(biz, data,masterRow) {
let curIndex = 0;
let excelCols = [];
let PluCode="";
let BarCode="";
let BarType="";
this.import = function () {
if (data != null) {
for (let i = 0; i < data.length; i++) {
tmp = data[i];
PluCode = tmp['商品编码'];
BarCode = tmp['条码'];
BarType = tmp['条码类型'];
//用正则表达式校验输入内容必须是0-9的数字
let re=/^[0-9]+$/;
if (SKU_IsCheckPluBar == "0"){
re=/^[A-Za-z0-9]+$/;
}
if (!re.test(BarCode)) {
Store.messager.tip( "条码只能是数字、英版文字母!");
return false;
}
if (BarCode !== "") {
let ret= Service.getSlideMenuData("ImportExecute","UCheckBarCode",BarCode,PluCode,"","");
if (ret.result !== 1) {
Store.messager.tip(ret.message);
return false;
}
}
else {
dr.setColumnError('BarCode',"条码不能为空!");
return false;
}
}
Store.messager.tip( PluCode);
}
};
let ret= Service.getSlideMenuData("ImportExecute","InExcel",data,"","","","");
if (ret.result !== 1) {
masterRow.setColumnError('BarCode', ret.message);
return false;
}
}
return Biz;
});