jqGrud树形表格+树形菜单+底部合计+点击列可编辑
树形表格+底部合计+点击列可编辑
<form id="controlNum_sgjf_list_form" class="form-horizontal" method="post" enctype="multipart/form-data">
<table class="bs_table" id="controlNum_sgjf_list_table"></table>
<div id="controlNum_sgjf_list_num_table"></div>
</form>
<script type="text/javascript">
$(function(){
var xmzt='1';
var changeId="";
saveparameters = {
"successfunc" : null,
"url" : 'clientArray',
"extraparam" : {},
"aftersavefunc" : null,
"errorfunc": null,
"afterrestorefunc" : null,
"restoreAfterError" : true,
"mtype" : "POST"
};
var $tableC = $("#controlNum_sgjf_list_table");
$tableC.jqGrid({
url:path+"/xmk/sanGongControlNumController/getSanGongControlNum.do",
ExpandColumn:"INCODE", // 指定某列用于展开表格
height:"auto", //高度自适应
rowNum : "-1",
scrollrows:true,
treeGrid:true,
shrinkToFit : false,
autowidth: true,
treedatatype:"json",
treeGridModel:"adjacency", //treeGrid模式,跟json元数据有关 ,adjacency/nested
loadonce:true,
ExpandColClick:true,
treeReader:{
"parent_id_field":"PARENT_ID",
"level_field":"ORG_LEVEL", // 树的等级根节点为0,依次递增
"leaf_field":"isLeaf", // 是否是子节点
"expanded_field":"expanded", // 是否展开
"loaded":"loaded", //是否异步加载
"icon_field":"icon",
"sort_field":"INCODE" //指定字段排序
},
datatype:"json",
styleUI : 'Bootstrap',
postData:{ywzt:xmzt},
colModel:[
{name:'ID',label:'ID',index:'ID', hidden:true,key:true,frozen: true,editable:true},
{name:"INCODE",label:"单位编码",index:"INCODE"},
{name:"NAME",label:"单位名称",index:"INCODEORNAME",align:'center'},
{name:"XYJE",label:"现有金额",index:"XYJE",align:'center',formatter:function(value,options,row){return formatCurrency(value);}},
{name:"SGJFKZJE",label:"控制金额",index:"SGJFKZJE",align:'center',editable:true,formatter:function(value,options,row){return formatCurrency(value);}},
{name:"YEAR",hidden:true,label:"年度",index:"YEAR",align:'center'},
${ysndlb}
{name:"KZREMARK",label:"控制说明",index:"KZREMARK",align:'center',editable:true},
{name:"BZ",label:"备注",index:"BZ",editable:true,align:'center'},
],
footerrow: true,//是否显示表尾行,表尾是一空白行
gridComplete: completeMethod,//底部合计列
useFooter : true,
// userDataOnFooter: true,//是否将返回来的表尾数据(返回的json对象的userdata数据)放到表尾行
loadComplete:function(data){
},
onSelectRow:function(rowid){//判断点击列可编辑
if(changeId!=""){
formSave();
$tableC.jqGrid('saveRow',changeId,saveparameters);
}
$tableC.jqGrid('editRow', rowid);
changeId=rowid;
}
});
/*统计合计 */
function completeMethod(){
xmzt = $("#controlNum_sgjf_list_ywzt").val();
var nameOrId = $("#controlNum_sgjf_list_nameOrId").val();
$.ajax({
type: 'POST',
dataType: 'json',
url:path+'/xmk/sanGongControlNumController/getControlNumTotal.do',
data:{ywzt:xmzt,'nameOrId':nameOrId},
success: function(data){
$("#controlNum_sgjf_list_table").footerData('set', data);//底部合计
}
});
}
});
//根据条件模糊查找
function refreshTable(){
xmzt = $("#controlNum_sgjf_list_ywzt").val();
var nameOrId = $("#controlNum_sgjf_list_nameOrId").val();
$("#controlNum_sgjf_list_table").jqGrid('setGridParam',{
url:path+"/xmk/sanGongControlNumController/getSanGongControlNum.do",
postData:{'ywzt':xmzt,'nameOrId':nameOrId}, //发送数据
treedatatype:'json',
mtype:'post'
}).trigger("reloadGrid");
}
//金额格式化
function formatCurrency(num) {
if(num==null||num===""){
return "";
}
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + num + '.' + cents);
}
</script>
@RequestMapping(value = "getSanGongControlNum")
@ResponseBody
public List<Map<String, Object>> getSanGongControlNum(HttpServletRequest request,String ywzt,String nameOrId){
String ysnd = sysParamFacade.getParamValue("当前年度");
String jzee = sysParamFacade.getParamValue("基础数据库名");
String sql="select o.ID DWID,o.IN_CODE DWBM,o.NAME DWMC,o.PARENT_ID DWFJID,o.ORG_LEVEL DWLEVEL,o.YEAR,s.* from "+jzee+".sys_org o"+
" left join t_sgjfkzs_controlnum s on o.ID=s.UNITID and s.YSND=? and s.YWZT=? and o.YEAR=? where o.YEAR=?";
List<String> param = new ArrayList<String>();
param.add(ysnd);
param.add(ywzt);
param.add(ysnd);
param.add(ysnd);
if(null!=nameOrId&&!nameOrId.equals("")){
sql+=" and (o.IN_CODE = ? or o.NAME like ? )";
param.add(nameOrId);
param.add("%"+nameOrId+"%");
}
sql+=" order by o.IN_CODE;";
List<Map<String, Object>> list = sanGongControlNumFacade.findListMapBySql(sql, param.toArray());
//现有金额
Map<String, Object> xyjeMap = sanGongControlNumFacade.getUnitSanGongXyje(ywzt, ysnd);
//获取三公字段的列表
List<Map<String, Object>> dataInfos = sanGongControlNumFacade.getSanGongZiDuan();
List<Map<String, Object>> sgControlNumlist = new ArrayList<>();
if(null!=list&&list.size()>0){
for (Map<String, Object> lis : list) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("ID", lis.get("DWID"));
map.put("NAME", lis.get("DWMC"));
map.put("INCODE", lis.get("DWBM"));
map.put("PARENT_ID", lis.get("DWFJID"));
map.put("ORG_LEVEL", lis.get("DWLEVEL"));
if(xyjeMap.containsKey(lis.get("DWID"))){
map.put("XYJE", xyjeMap.get(lis.get("DWID")));
}else{
map.put("XYJE", 0);
}
map.put("expanded", true);// 是否展开
for (Map<String, Object> map2 : dataInfos) {
map.put(map2.get("FIELD_ENAME").toString(),lis.get(map2.get("FIELD_ENAME"))==null?null:lis.get(map2.get("FIELD_ENAME")));
}
map.put("SGJFKZJE",lis.get("SGJFKZJE"));
map.put("KZREMARK",lis.get("KZREMARK"));
map.put("BZ",lis.get("BZ"));
int subCount = sysOrgFacade.findTotalBySql("SELECT COUNT(ID) FROM SYS_ORG E WHERE E.YEAR=? AND E.PARENT_ID=?", ysnd, lis.get("DWID"));
if(subCount>0){
map.put("isLeaf", "false"); //是否子节点
}else{
map.put("isLeaf", "true");
}
sgControlNumlist.add(map);
}
}
return sgControlNumlist;
}
/**
* 合计
* @param ywzt
* @param nameOrId
* @return
*/
@RequestMapping(value = "getControlNumTotal")
@ResponseBody
public Map<Object, Object> getControlNumTotal(String ywzt,String nameOrId){
String ysnd = sysParamFacade.getParamValue("当前年度");
//获取资金来源的列表
List<Map<String, Object>> dataInfos = sanGongControlNumFacade.getSanGongZiDuan();
String zje="SUM(SGJFKZJE) AS SGJFKZJE,";
if(dataInfos==null||dataInfos.size()==0){
}else{
for(Map<String, Object>map:dataInfos){
zje+="SUM("+map.get("FIELD_ENAME").toString()+") AS "+map.get("FIELD_ENAME").toString()+"," ;
}
}
zje=zje.substring(0, zje.length()-1);
String sql="SELECT "+zje+" FROM T_SGJFKZS_CONTROLNUM WHERE YSND=? and YWZT=? ";
List<String> param = new ArrayList<String>();
param.add(ysnd);
param.add(ywzt);
if(null!=nameOrId&&!nameOrId.equals("")){
sql+=" and (UNITNUMBER = ? or UNITNAME like ? )";
param.add(nameOrId);
param.add("%"+nameOrId+"%");
}
//存储总金额
List<Map<String, Object>> sanGongNum=sanGongControlNumFacade.findListMapBySql(sql,param.toArray());
Map<Object, Object> numMap=new HashMap<>();
numMap.put("INCODE", "合计");
if(sanGongNum.get(0).get("SGJFKZJE")!=null &&!sanGongNum.get(0).get("SGJFKZJE").equals("") && !sanGongNum.get(0).get("SGJFKZJE").equals("")){
numMap.put("SGJFKZJE", sanGongNum.get(0).get("SGJFKZJE"));
}else{
numMap.put("SGJFKZJE", "0.00");
}
if(dataInfos==null||dataInfos.size()==0){
}else{
for(Map<String, Object>map:dataInfos){
if(sanGongNum.get(0).get(map.get("FIELD_ENAME"))!=null && !sanGongNum.get(0).get(map.get("FIELD_ENAME")).equals("null") && !sanGongNum.get(0).get(map.get("FIELD_ENAME")).equals("")){
numMap.put(map.get("FIELD_ENAME"), sanGongNum.get(0).get(map.get("FIELD_ENAME")));
}else{
numMap.put(map.get("FIELD_ENAME"), "0.00");
}
}
}
return numMap;
}
树形菜单
项目支出:<input id="controlNum_cost_property_list_xmzc_text" name="" type="text" value="" style="width: 150px;height:30px;" readonly="readonly" onclick="toControlNumCostPropertyXmzc()" />
<input id="controlNum_cost_property_list_xmzc_id" type="hidden" name="xmzc"/>
function toControlNumCostPropertyXmzc(){
// var id = $("#controlNum_cost_property_list_xmzc_id").val();
var id = null;
var controlNumCostPropertyXmzc = $jzee.dialog({
title: '项目支出选择',
hiddenBtn:false,
url : path+'/xmk/control/controlNum_cost_property_xmzc.jsp?xmzcId='+id,
width:400,
height:400,
ok: function () {//确定按钮事件
var dataId=$("#xmzc_id").val();
var datatext=$("#xmzc_text").val();
$("#controlNum_cost_property_list_xmzc_id").val(dataId);
$("#controlNum_cost_property_list_xmzc_text").val(datatext);
controlNumCostPropertyXmzc.modal('hide');
refreshTable();
}
});
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% String path = request.getContextPath(); %>
<div id="controlNum_cost_property_xmzc_tree"></div>
<input id="xmzc_id" type="hidden"/>
<input id="xmzc_text" type="hidden"/>
<script type="text/javascript">
$(function(){
$("#controlNum_cost_property_xmzc_tree").jstree({
"core" : {
"cache": false,
"data" : {
"url" : path+'/xmk/costPropertyControlNumController/getXmzcTree.do?xmzcId=${param.xmzcId}'
}
},
// "plugins" : ["types","checkbox","search"]
"plugins" : ["types","search"]
}).on('loaded.jstree',function(e, data) {
}).on('select_node.jstree',function(e, data) {//绑定选择事件1
$("#xmzc_id").val(data.node['id']);
$("#xmzc_text").val(data.node['text']);
});
});
</script>
@RequestMapping(value = "getXmzcTree")
@ResponseBody
public Object getXmzcTree(String xmzcId) {
List<String> xmzcIdList = Arrays.asList(xmzcId.split(","));
JSONArray fjson = new JSONArray();
//获取口径列表
List<CaliberEntity> caliberList=caliberFacade.getEntityListOrder();
if (caliberList!=null&&caliberList.size()>0) {
for (CaliberEntity map : caliberList) {
JSONObject item = new JSONObject();
item.put("id", map.getId());
item.put("text", "["+map.getShowNo()+"]"+map.getName());
JSONObject stateObject = new JSONObject();
stateObject.put("opened", true);//默认展开子节点
if(xmzcIdList.contains(map.getId())){
stateObject.put("selected", true);//是否勾选
}else{
stateObject.put("selected", false);//是否勾选
}
// stateObject.put("selected", judgeMenuIsChecked(menu, roleMenuMap));//是否勾选
item.put("state", stateObject);
//构建父子节点关系
item.put("parent", "#");//如果是一级菜单必须要赋值"#",这是bootstrap-table的要求
fjson.add(item);
}
}
return fjson;
}