Ext4 的排班规则列表, 需要在选中一个规则时, 判断是否与已经选中的规则存在冲突。
在Ext 的 ruleModel 中增加字段 ruleMutexs, 接收从后台传来的互斥规则代码列表。因为一个规则的互斥规则有可能多个,
有些担心 Ext.data.Model 中的字段是否能接收数组类型。试试再说。
?
?
//排班规则 Ext.define('ruleModel',{ extend:'Ext.data.Model', fields:[ {name:'ruleCode',type:'string'}, {name:'ruleName',type:'string'}, {name:'ruleTypeName',type:'string'}, {name:'ruleSelected'}, {name:'ruleMutexs'} ] });
?
后台, 在 ScheduleRuleDto? 中增加对应的数据字段
//互斥规则 public String[] ruleMutexs; public String[] getRuleMutexs() { return ruleMutexs; } public void setRuleMutexs(String[] ruleMutexs) { this.ruleMutexs = ruleMutexs; }
跑起, 页面中打印 slct[i].data.ruleMutexs.length 得到 1 , 说明数组成功得到。
?
在选中事件中增加判断, 如果存在冲突, 那么取消选中。
?
airportGrid.on('select',function( rm, record, index, eOpts ){ if(!conflictChk){ return; } var slct = airportGrid.getSelectionModel().getSelection(); for(var i=0;i<slct.length; i++){ if(slct[i].data.ruleCode != record.data.ruleCode){//排除自己 var mutexs = slct[i].data.ruleMutexs; for(var j=0;j<mutexs.length;j++){ //alert(mutexs[j]); if(mutexs[j] == record.data.ruleCode){ alert("该规则与已选的规则:" + slct[i].data.ruleName + "冲突!"); airportGrid.getSelectionModel().deselect(record,true,false); } } } } //判断当前选中的规则是否与已经选中的规则存在冲突 //alert(record.data.ruleCode); });
?
?
?