<%@ page language="java" pageEncoding="UTF-8"%>
<%
String dir=request.getParameter("dir");//指标区间方向 1为正向,-1为负向,0为其它
if(dir==null||dir.equals("")) dir="1";//测试用
String relparentids=request.getParameter("objid");//主表对象编号
String jfk=request.getParameter("bscsbh");//计分卡
String zbid=request.getParameter("measuresbh");//指标编号
String currnodeid=request.getParameter("currnodeid");//当前节点
String nodeid=request.getParameter("nodeid");//节点字符串
String src=request.getParameter("src");//是否查看
boolean isNode = false;//当前节点能否编辑
boolean isView = false;//查看
if(nodeid.indexOf(currnodeid)!=-1){
isNode = true;
}
if(currnodeid.equals("-1") || nodeid.equals("-1")){
isNode = false;
}
if(src.equals("view")){
isView = true;
}
String qj="",qjid="", valueA="", valueB="", valueC="", valueA2="", valueB2="";//期间名称、期间编号、原A值、原B值、实际值、更新A值、更新B值
/*
//该计分卡当前期间
int jfkQj = 0;
String sql = "select bsc_qj from obj_bsc_development where singletextbox1="+jfk;
rs.executeSql(sql);
if(rs.next()){
jfkQj = rs.getInt("bsc_qj");
}
*/
int jfkQj=201302;
String tempQj = "";
tempQj = String.valueOf(jfkQj);
if(tempQj.trim().substring(4,6).equals("00")){
tempQj = tempQj.trim().substring(0,4) + "05";
}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>指标更新明细</title>
<script type="text/javascript" src="../js/jquery.js"></script>
<link rel="stylesheet" type="text/css" href="../js/extjs/resources/css/ext-all.css"/>
<script type="text/javascript" src="../js/extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../js/extjs/ext-all.js"></script>
</head>
<script type="text/javascript">
function updateA2(qj,A,B,C,vA2,B2){
if(!B2){
B2 = -1;
}
if( vA2==null){
vA2 = 0;
return;
}else{
$.get('/BSC/ajax/measureModifyDetailUpdate.jsp?utype=a2&relparentids='+<%=relparentids%>+'&qj='+qj+'&a='+A+'&b='+B+'&c='+C+'&a2='+encodeURI(vA2)+'&b2='+encodeURI(B2)+'&jfk='+<%=jfk%>+'&zb='+<%=zbid%>
,{Action:"get"},function (data, textStatus){});
}
}
function updateB2(qj,A,B,C,A2,vB2){
if(!A2){
A2 = "-1";
}
if( vB2==null){
vB2 = 0;
return;
}else{
$.get('/BSC/ajax/measureModifyDetailUpdate.jsp?utype=b2&relparentids='+<%=relparentids%>+'&qj='+qj+'&a='+A+'&b='+B+'&c='+C+'&a2='+encodeURI(A2)+'&b2='+encodeURI(vB2)+'&jfk='+<%=jfk%>+'&zb='+<%=zbid%>
,{Action:"get"},function (data, textStatus){});
}
}
Ext.onReady(function () {
//数据源定义
var store = new Ext.data.Store({
proxy : new Ext.data.HttpProxy({url : 'date.jsp'}),
autoLoad: true,
baseParams : {'bscsbh':'<%=jfk%>','measuresbh':'<%=zbid%>'},
reader : new Ext.data.JsonReader({
totalProperty : 'totalProperty',//总页数
root : 'root'//数据
},[{name:'qj'},{name:'qjid'},{name:'valueA'},{name:'valueB'},{name:'valueC'},{name:'valueA2'},{name:'valueB2'},{name:'jfk'},{name:'zb'}]
)
});
var cm = new Ext.grid.ColumnModel([
{
header: "期间",
dataIndex: "qj",
align:"center",
menuDisabled : true,
width: 95
},
{
header: "qjid",
dataIndex: "qjid",
hidden:true
},
{
header: "原A值",
dataIndex: "valueA",
menuDisabled : true,
align:"center",
width: 125
},
{
header: "原B值",
dataIndex: "valueB",
menuDisabled : true,
align:"center",
width: 125
},
{
header: "实际值",
dataIndex: "valueC",
align:"center",
menuDisabled : true,
width:115
},
{
header: "更新A值",
dataIndex: "valueA2",
align:"center",
menuDisabled : true,
width: 110,
<%if(dir.equals("1")||dir.equals("-1")){%>
editor: new Ext.grid.GridEditor(new Ext.form.NumberField())
<%}else{%>
editor: new Ext.grid.GridEditor(new Ext.form.TextField())
<%}%>
},
{
header: "更新B值",
dataIndex: "valueB2",
align:"center",
menuDisabled : true,
width: 110,
<%if(dir.equals("1")||dir.equals("-1")){%>
editor: new Ext.grid.GridEditor(new Ext.form.NumberField())
<%}else{%>
editor: new Ext.grid.GridEditor(new Ext.form.TextField())
<%}%>
}
]);
//定义EditGridPanel
var grid = new Ext.grid.EditorGridPanel({
store: store,
cm: cm,
stripeRows:true,
border:true,
width: 680,
autoHeight: true,
renderTo:Ext.getBody(),
autoEncode: true, //提交时是否自动编码
clicksToEdit: 1,
listeners:{
beforeedit: function(e){
var currRecord = e.record;
e.cancel = true;
if(<%=!isView%>&&<%=isNode%>&&(currRecord.get("qjid") > <%=tempQj%>||currRecord.get("qjid").substring(4,6)=="05"))
e.cancel=false;
},
afteredit: function(e){
aRow = e.grid.getView().getCell(e.row,5);
aRow2=e.grid.getView().getCell(e.row,6);
aRow.style.background="#99FFFF";
aRow.style.border="1px solid #cccccc";
aRow2.style.background="#99FFFF";
aRow2.style.border="1px solid #cccccc";
}
},
tbar: [ {
text: "保存",
cls: "x-btn-text-icon",
handler: function () {
var store = grid.getStore();
//得到修改过的Recored的集合
var modified = store.modified.slice(0);
//将数据放到另一个数组中
var jsonArray = [];
Ext.each(modified, function (m) {
// alert(m.data.valueB2);
//m.data 中保存的是当前Recored的所有字段的值(json),不包含结构信息
jsonArray.push(m.data);
});
var r = checkBlank(modified);
if (!r) {
return;
} else {
Ext.each(modified, function (m) {
updateA2(m.data.qjid,m.data.valueA,m.data.valueB,m.data.valueC,m.data.valueA2,m.data.valueB2);
updateB2(m.data.qjid,m.data.valueA,m.data.valueB,m.data.valueC,m.data.valueA2,m.data.valueB2);
Ext.Msg.alert("成功","更新数据成功");
});
}
}
}]
});
//验证输入的数据是否有效
var checkBlank = function (modified /*所有编辑过的和新增的Record*/ ) {
var result = true;
var dir=<%=dir%>;
Ext.each(modified, function (record) {
//根据名称获取对应的值
var a2 = record.data.valueA2;
var b2 = record.data.valueB2;
var qj=record.data.qj;
if(dir=="1"&&a2<b2)
{
Ext.MessageBox.alert("验证", '指标区间方向为正向时,期间"'+qj+'"更新A值必须大于或等于更新B值');
result = false;
return;
}
if(dir=="-1"&&a2>b2)
{
Ext.MessageBox.alert("验证", '指标区间方向为负向时,期间"'+qj+'"更新A值必须小于或等于更新B值');
result = false;
return;
}
});
return result;
}
store.on("load",function(){
for(i = 0; i < grid.getStore().getCount(); i ++){
for(j = 5; j < grid.getColumnModel().getColumnCount(); j ++){
var Record=grid.getStore().getAt(i);
if(<%=!isView%>&&<%=isNode%>&&(Record.get("qjid") > <%=tempQj%>||Record.get("qjid").substring(4,6)=="05")){
aRow = grid.getView().getCell(i,j);
aRow.style.background="#99FFFF";
aRow.style.border="1px solid #cccccc";
}
}
}
});
});
</script>
后台json数据:
{'root':[{'qj':'201301','qjid':'201301','valueA':'98.59','valueB':'98.09','valueC':'98.12','valueA2'
:'','valueB2':'','jfk':'1043','zb':'10541'},{'qj':'201302','qjid':'201302','valueA':'98.59','valueB'
:'98.09','valueC':'99.41','valueA2':'','valueB2':'','jfk':'1043','zb':'10541'},{'qj':'201303','qjid'
:'201303','valueA':'98.59','valueB':'98.09','valueC':'','valueA2':'5254245','valueB2':'366','jfk':'1043'
,'zb':'10541'},{'qj':'201304','qjid':'201304','valueA':'98.59','valueB':'98.09','valueC':'','valueA2'
:'2124','valueB2':'333','jfk':'1043','zb':'10541'},{'qj':'2013年','qjid':'201305','valueA':'98.59','valueB'
:'98.09','valueC':'','valueA2':'','valueB2':'','jfk':'1043','zb':'10541'}]}
访问参数为?src=add&objid=520002203&bscsbh=1043&measuresbh=10541&currnodeid=5005&nodeid=5005,5006,5008