//loginUser 为当前登录人

//loginUser = '6651';
Ext.onReady(function() {
Ext.QuickTips.init();
//空或零 返回 true
function isNullORZero(value){
return (value == 0 || value == '')?true:false;
}
//将输入分数保存为只有两位小数
function checkFloat(v) {
var rg = /^\d+(\.\d{1,2})?$/;
var value = v;
if ((Number(value) == 0)) {
return formaFloat(value);
} else if (!rg.test(value)) {
value = Math.round(value * Math.pow(10, 2)) / Math.pow(10, 2);
}
return value;
}
// 自动格式化为float类型数据
function formaFloat(s) {
if (/[^0-9\.]/.test(s))
return "0.0";
if (/^[0-9]+$/.test(s))
s += '.';
if (/^[0-9]+\.$/.test(s))
s = s + '0';
if (/^\.[0-9]/.test(s))
s = '0' + s;
return s;
}
var ajaxMask = new Ext.LoadMask(Ext.get('mainfrom'), {
msg : "数据发送中,请稍后..."
});

/*
* 当前打分领导            stepCode                打分                     当前登录人                   
* A             ManAuditEval1           score2           A                
* B             ManAuditEval2           score3           B
* C             ManAuditEval3           score4           C
* D             ManAuditEval4           score            D

* 满足以上条件才能选中
*/
function onRowSelected(o, rowIndex, r) {
var score;
switch(r.get('stepCode')){
case 'ManAuditEval1' : score = r.get('score2'); break;
case 'ManAuditEval2' : score = r.get('score3'); break;
case 'ManAuditEval3' : score = r.get('score4'); break;
default : score = r.get('score');
}
if(r.get('currentUser') != loginUser || isNullORZero(score)){
o.deselectRow(rowIndex);
}
};

function onRowDeSelected(o, rowIndex, r) {
};

var sm = new Ext.grid.CheckboxSelectionModel({
handleMouseDown : Ext.emptyFn,
listeners : {
"rowselect" : onRowSelected,
"rowdeselect" : onRowDeSelected
}
});

var jsonData = {"totalProperty":4,"dataList":[
            {"auditEmpNumber":"48210127","empId":"6528","position":"蜀汉昭烈帝","status":"",
                "score4":"0.0","score3":"0.0","score2":"0.0","score1":"98.0","score":"0.0","stepCode":"ManAuditEval1",
                "empNumber":"48210037","selfScore":"98.0","caseId":"414053","prevAudit":"6651","empName":"刘备","currentUser":"6651"}
                
           ,{"auditEmpNumber":"48210127","empId":"6645","position":"东汉丞相","status":"未确认",
"score4":"0.0","score3":"0.0","score2":"97.0","score1":"98.0","score":"0.0","stepCode":"ManAuditEval2",
"empNumber":"48210121","selfScore":"98.0","caseId":"414078","prevAudit":"6651","empName":"曹操","currentUser":"6651"}

,{"auditEmpNumber":"48210127","empId":"6670","position":"东吴太祖大皇帝","status":"未确认",
"score4":"96.0","score3":"91.0","score2":"94.0","score1":"97.0","score":"0.0","stepCode":"ManAuditEval4",
"empNumber":"48210146","selfScore":"97.0","caseId":"414030","prevAudit":"6651","empName":"孙权","currentUser":"6652"}

,{"auditEmpNumber":"48210127","empId":"8072","position":"曹魏高祖文皇帝","status":"",
"score4":"92.0","score2":"96.0","score1":"95.0","score":"0.0","score3":"90.0","stepCode":"ManAuditEval4",
"empNumber":"48520003","selfScore":"95.0","caseId":"414060","prevAudit":"6651","empName":"曹丕","currentUser":"6651"}]
};
var cm = new Ext.grid.ColumnModel([sm, {
header : 'empId',
dataIndex : 'empId',
hidden : true
}, {

header : 'caseId',
dataIndex : 'caseId',
hidden : true
}, {
header : 'stepCode',
dataIndex : 'stepCode',
hidden : true
}, {
header : '员工编号',
dataIndex : 'empNumber'
}, {
header : '员工姓名',
dataIndex : 'empName',
sortable : true
}, {
header : '员工职位',
dataIndex : 'position',
sortable : true,
width : 180
}, {
id : 'selfScore',
header : '员工自评分',
dataIndex : 'selfScore',
renderer : function(v, c, r, ri, ci, str) {
return checkFloat(v);
}
//多个领导打分,并展示结果 
/*
* 当前打分领导            stepCode                打分                     当前登录人                   
* A             ManAuditEval1           score2           A                
* B             ManAuditEval2           score3           B
* C             ManAuditEval3           score4           C
* D最终                        ManAuditEval4           score            D

* 满足以上条件才能打分
*/
}, {
id : 'score2',
dataIndex : 'score2',
header : '领导打分一',
editable : false,
editor : new Ext.form.TextField({
allowBlank : false,
name : 'score1',
regex : /^(?:\d?\d(\.\d{1,2})?|100|0.0|100.0|0.00|100.00)$/,
regexText : '请输入0~100的数字!'
}),
renderer : function(v, m, r, ri, ci, str) {
var isUser = r.get('currentUser') != loginUser;
if(r.get('stepCode') == 'ManAuditEval1'){
cm.setEditable(ci,true);
if(isUser){
m.css += "x-item-disabled";
}
} else {
m.css += " x-item-disabled";
}
return checkFloat(v);
},
hidden : false
}, {
id : 'score3',
dataIndex : 'score3',
header : '领导打分二',
editable : false,
editor : new Ext.form.TextField({
allowBlank : false,
name : 'score3',
regex : /^(?:\d?\d(\.\d{1,2})?|100|0.0|100.0|0.00|100.00)$/,
regexText : '请输入0~100的数字!'
}),
renderer : function(v, m, r, ri, ci, str) {
var isUser = r.get('currentUser') != loginUser;
if(r.get('stepCode') == 'ManAuditEval2'){
cm.setEditable(ci,true);
if(isUser){
m.css += "x-item-disabled";
}
} else {
m.css += "x-item-disabled";
}
return checkFloat(v);
},
hidden : false
}, {
id : 'score4',
dataIndex : 'score4',
header : '领导打分三',
editable : false,
editor : new Ext.form.TextField({
allowBlank : false,
name : 'score3',
regex : /^(?:\d?\d(\.\d{1,2})?|100|0.0|100.0|0.00|100.00)$/,
regexText : '请输入0~100的数字!'
}),
renderer : function(v, m, r, ri, ci, str) {
var isUser = r.get('currentUser') != loginUser;
if(r.get('stepCode') == 'ManAuditEval3'){
cm.setEditable(ci,true);
if(isUser){
m.css += "x-item-disabled";
}
} else {
m.css += "x-item-disabled";
}
return checkFloat(v);
},
hidden : false
}, {
id : 'score',
header : '部门领导打分',
dataIndex : 'score',
editable : false,
editor : new Ext.form.TextField({
allowBlank : false,
name : 'score',
regex : /^(?:\d?\d(\.\d{1,2})?|100|0.0|100.0|0.00|100.00)$/,
regexText : '请输入0~100的数字!'
}),
renderer : function(v, m, r, ri, ci, str) {
//alert(r.get('stepCode'));
var isUser = r.get('currentUser') != loginUser;
if(r.get('stepCode') == 'ManAuditEval4'){
cm.setEditable(ci,true);
if(isUser){
m.css += "x-item-disabled";
}
} else {
m.css += "x-item-disabled";
}
return checkFloat(v);
},
hidden : false
}, {
header : '考核状态',
dataIndex : 'status',
renderer : function(v, c, r, ri, ci, str) {
var isUser = r.get('currentUser') == loginUser;
//alert(isUser); isNullORZero 
var str;
switch(r.get('stepCode')){
case 'ManAuditEval1' : (isNullORZero(r.get('score2'))&& isUser)?str = '考核尚未打分':str = '考核已打分'; break;
case 'ManAuditEval2' : (isNullORZero(r.get('score3'))&& isUser)?str = '考核尚未打分':str = '考核已打分'; break;
case 'ManAuditEval3' : (isNullORZero(r.get('score4'))&& isUser)?str = '考核尚未打分':str = '考核已打分'; break;
default : (isNullORZero(r.get('score')) && isUser)?str = '考核尚未打分':str = '考核已打分';
}
//alert('考核状态:' + str);
return str;
}
}, {
header : 'auditEmpNumber',
dataIndex : 'auditEmpNumber',
hidden : true
}, {
header : '当前审批人',
dataIndex : 'currentUser',
hidden : true
}]);

// 页面数据加载
var store = new Ext.data.Store({
url : '/gatherEMPAppraisalAction.do?method=gatherAppraisalByMa',
reader : new Ext.data.JsonReader({
totalProperty : 'totalProperty',
root : 'dataList',
fields : ['empId', 'caseId', 'empNumber',
'empName', 'position', {
name : 'selfScore',
type : 'float'
}, {
name : 'score',
type : 'float'
}, 'score1','score2', 'score3', 'score4', 'status','isCellEditable',
'grade', 'auditEmpNumber', 'currentUser',
'stepCode', 'nextStepId', 'nextStepName']
})
});

// 改成可编辑的grid
var grid = new Ext.grid.EditorGridPanel({
//title : '考核汇总打分',
bodyStyle : 'width:100%',
height : document.body.clientHeight - 240,
loadMask : {
msg : '正在加载数据,请稍候!'
},
frame : true,
autoScorll : true,
cm : cm,
sm : sm,
store : store,
renderTo : 'mainfrom',
buttonAlign : 'center',
clicksToEdit : 1,
buttons : [{
cls : 'x-btn-text-icon blist',
icon : '/style/default/images/button_ok.png',
text : '提交审批结果',
handler : submitEval
}],
tbar : [{
text:'结束考核任务',
cls : 'x-btn-text-icon blist',
icon : '/style/default/images/button_ok.png',
tabTip : '全部人员审批完成,才能结束考核任务' ,
handler : finish
}]
});
grid.getStore().loadData(jsonData,true);

//当前单元格是否可以编辑  
/*
* 当前打分领导            stepCode                打分                     当前登录人                   
* A             ManAuditEval1           score2           A                
* B             ManAuditEval2           score3           B
* C             ManAuditEval3           score4           C
* D             ManAuditEval4           score            D

* 满足以上条件才能编辑
*/
grid.on('beforeedit',function(e){
var isUser = e.record.get('currentUser') != loginUser;
//alert(e.record.get('currentUser') != loginUser);
//alert("field: " + e.field + "  ,stepCode: " + e.record.data.stepCode);
   var _field;
switch(e.record.get('stepCode')){
case 'ManAuditEval1' : _field = 'score2'; break;
case 'ManAuditEval2' : _field = 'score3'; break;
case 'ManAuditEval3' : _field = 'score4'; break;
default : _field = 'score';
}
/* alert("_field: " + _field.toString());
alert("e.field: " + e.field.toString());
alert(_field.toString() == e.field.toString());*/
if(_field.toString() != e.field.toString() || isUser){
e.cancel = true;
}
});
function loadCallback(store, rd, op) {
var records = new Array();
var index = 0;
for (var i = 0, j = rd.length; i < j; i++) {
records[index++] = rd[i]
}
}
// 是否可以结束当前汇总任务
/*
*   流程状态stepCode    打分保存字段
*    ManAuditEval1       score2
*    ManAuditEval2       score3
*    ManAuditEval3       score4
*    ManAuditEval4       score
*  说明:提交打分后状态会变,所以要取值为上一个状态的打分值
*/
function finish(){
var o = {};
var m = '';
var count = 0;
for (var i = 0; i < store.getCount(); i++) {
var r = store.getAt(i);
var _score;
var _isUser = r.get('currentUser') == loginUser;
switch(r.get('stepCode')){
case 'ManAuditEval1' : _isUser?_score = r.get('score2'):_score = r.get('score'); break;
case 'ManAuditEval2' : _isUser?_score = r.get('score3'):_score = r.get('score2'); break;
case 'ManAuditEval3' : _isUser?_score = r.get('score4'):_score = r.get('score3'); break;
default : _isUser?_score = r.get('score'):_score = r.get('score4');
   }
   //isNullORZero
   //if (r.get('selfScore') == '' || _score == '' || r.get('selfScore') == 0 || _score == 0) {
   if(isNullORZero(r.get('selfScore')) || isNullORZero(_score)){
o.msg = (o.msg || '') + '、' + r.data['empName'];
}
if ((_score != '' && _score != 0) && r.get('currentUser') == loginUser) {
m = m + '、' + r.data['empName'];
o.msg = (o.msg || '') + '、' + r.data['empName'];
}
}
//alert('o.msg : '+o.msg);
//alert('m :'+m+'@@');
if (m != '') {
o.msg = '员工:' + m.substring(1) + '的考核尚未提交!'
} else {
o.msg = '员工:' + o.msg.substring(1) + '的考核尚未打分!'
}
alert(o.msg);
}

var normal = [];
var tmp = [];
// 提交
function submitEval() {
var canSubmit;
var res = sm.getSelections();
var nextAuditor = [];
var nextStep = [];

if (res.length == 0) {
Ext.Msg.alert("提示", "请选择一条记录进行提交!");
return;
} else {
batchAudit();
}
}
// 提交方法
function batchAudit() {
var loadingCtr = Ext.Msg.wait("数据提交中,请稍等");
var res = sm.getSelections();
var evl = []; // 需要选择提交的Id
for (var i = 0; i < res.length; i++) {
var r = res[i];
var o = {};
o.empId = r.data['empId'];
o.caseId = r.data['caseId'];
o.empNumber = r.data['empNumber'];
o.empName = r.data['empName'];
o.position = r.data['position'];
o.selfScore = checkFloat(r.data['selfScore']);
o.score = checkFloat(r.data['score']);
o.auditEmpNumber = r.data['auditEmpNumber'];
o.grade = r.data['grade'];// add 9-8-26
o.stepCode = r.data['stepCode'];
o.nextStepId = r.data['nextStepId'];
// o.nextStepName = r.data['nextStepName'];
evl.push(o);
}

var json = encodeArray(evl);
ajaxMask.show();
Ext.Ajax.request({
url : '/Action.do?method=method',
method : 'POST',
params : {
periodId : periodId,
json : json
},
success : function(response, options) {
var rst = Ext.decode(response.responseText);
if (rst.success == 'false') {
Ext.Msg.alert('提示', rst.message);
} else {
store.reload();
}

if (nextAuditor_win && nextAuditor_win.isVisible())
nextAuditor_win.hide();
if (nextStep_win && nextStep_win.isVisible())
nextStep_win.hide();
loadingCtr.hide();
ajaxMask.hide();
},
failure : function() {
loadingCtr.hide();
ajaxMask.hide();
}
});
}

var vp = new Ext.Viewport({
layout : 'fit',
items :  [grid]
});

})

ExtJS EditorGridPanel 控制每一个单元格是否可以编辑相关推荐

  1. java jtable 复选框_java swing如何在JTable一个单元格添加多个复选框

    展开全部 java swing中在jTable中添加多个复选框的方32313133353236313431303231363533e59b9ee7ad9431333337616566式如下:impor ...

  2. 关于.net Microsoft.Office.Interop.Word组建操作word的问题,如何控制word表格单元格内部段落的样式。...

    控制word表格单元格内部文字样式.我要将数据导出到word当中,对于word表格一个单元格中的一段文字,要设置不同的样式,比如第一行文字作为标题要居中,加粗,第二行为正常的正文. 代码如下 publ ...

  3. delphi dbgrideh 遍历每一个单元格_真香!我用Python 制作了一个迷宫游戏

    相信大家都玩过迷宫的游戏,对于简单的迷宫,我们可以一眼就看出通路,但是对于复杂的迷宫,可能要仔细寻找好久,甚至耗费数天,然后可能还要分别从入口和出口两头寻找才能找的到通路,甚至也可能找不到通路. 虽然 ...

  4. datagridview java_仅更新datagridview中的一个单元格

    我正在编写一个Watch Window,它从 Serial Port 获取数据,并在 DataGridView 中显示变量info / value . 我有一个 Timer Event ,每隔500毫 ...

  5. ios 获取最后一个cell_关于ios:向UICollectionView的第一个和最后一个单元格添加填充...

    我子类化UICollectionViewFlowLayout以获取具有分页行为的水平UICollectionView. 只要UICollectionViewCell不是最后一个单元格,它就可以很好地工 ...

  6. html 点击按钮js自增,JS实现点击按钮自动增加一个单元格的方法

    本文实例讲述了JS实现点击按钮自动增加一个单元格的方法.分享给大家供大家参考.具体分析如下: 这是一个网页在线自助生成表格的特效代码. 核心功能代码是JS实现,点击网页中的添加按钮,网页中自动增加一个 ...

  7. 如何用Apache POI操作Excel文件-----如何对一个单元格加注解?

    有的时候,我们需要通过操作Apache POI,在生成Cell数据的同时,能对其生成的Cell,加上注解(comments),类似于下面的. 那么对于这种情况,我们的代码应该如何写呢? 借花献佛,我就 ...

  8. 2022-01-19:青蛙过河。 一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。 给你石子的位置列

    2022-01-19:青蛙过河. 一只青蛙想要过河. 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有). 青蛙可以跳上石子,但是不可以跳入水中. 给你石子的位置列 ...

  9. Excel - 如何在 Excel 表格的一个单元格内换行?

    Excel表格是我们经常使用的一个办公软件.我们在使用excel表格时,有时候会需要在一个单元格内进行换行.如果我们直接敲击回车,那么会直接切换至另一个单元格.接下来,小编来和大家分享下如何在一个单元 ...

最新文章

  1. 目标检测之Faster-RCNN的pytorch代码详解(数据预处理篇)
  2. 找到二叉树中的最大搜索子树
  3. 关于hibernate的查询
  4. 深度学习二(Pytorch物体检测实战)
  5. PHP生成海报 文字描边,php实现图片添加描边字和马赛克的方法
  6. IPSec隧道配置案例(手动模式)
  7. github提交代码403
  8. php接收vb post数据,VB Post方式提取网页数据
  9. 数学归纳法证明求和公式
  10. Objective-C写出Json文件(可作配置文件)
  11. 纯福利文章、送5本Java核心技术(不定期送福利)
  12. SRS学习-配置DVR
  13. 曲线运动与万有引力公式_干货|曲线运动与万有引力定律相关解题技巧
  14. 2020.11.9--AE--文字的文本属性、文字动画效果、内置动画预设
  15. 华为申请区块链产权管理专利
  16. mysql悲观群_谈谈mysql的悲观和乐观锁
  17. Acme Cad Dwg 转换 设置字体
  18. iOS SDK详解之视频播放(AVPlayer)附Demo
  19. html表单 access,【Access基础】OpenForm打开窗体方法详解
  20. python 掷骰子游戏

热门文章

  1. python判断字典是否为空
  2. The Square Root of Three 孤独的根号三 David B. Feinberg 大卫·范伯格
  3. Android 模拟器下载应用(APK)到 PC 研究
  4. 怎么免费批量将JPG转WEPB
  5. 关机状态下启动微型计算机叫什么,微机的冷启动方式是什么?
  6. #学习笔记#Excel#Power Query 提取特定字段
  7. 几张视觉图,很有意思
  8. Spark之cache ,persist ,checkpoint ,广播变量及其案例 : 根据IP地址(浏览器访问日志获取) / 经度纬度定位地理位置案例(7)
  9. 【codevs 3287】货车运输
  10. 解决Visual Studio的IIS与无法启动调试器问题