先上效果图
jsp页面代码:
<html>
<head>
<base href="<%=basePath%>">
<link href="<%=request.getContextPath() %>/js/bootstrap/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="<%=request.getContextPath() %>/btjs/css/bootstrap-table.min.css" rel="stylesheet" type="text/css">
<link href="<%=request.getContextPath() %>/btjs/css/bootstrap-responsive.css" rel="stylesheet" type="text/css">
<link href="<%=request.getContextPath() %>/btjs/css/bootstrap-select.css" rel="stylesheet" type="text/css">
</head>
<body>
<div style="width:800px;margin: 2% 0 0 30%">
<font size="5em;">单机订单--价格评审签批人维度维护</font>
<a href="javascript:window.opener=null;window.open('','_self');window.close();"><<返回</a>
<div id="toolbar" class="btn-group" style="float:right;">
<button id="btn_add" type="button" class="btn btn-default" onclick="addApprove()">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>新增
</button>
<button id="btn_edit" type="button" class="btn btn-default" onclick="editApprove()">
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>修改
</button>
<button id="btn_delete" type="button" class="btn btn-default" onclick="deleteApprove()">
<span class="glyphicon glyphicon-minus" aria-hidden="true"></span>删除
</button>
</div>
<table id="approver"></table>
</div>
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">修改审核人</h4>
</div>
<form class="form-horizontal" role="form">
<div class="modal-body">
<div class="form-group" id="corpDiv">
<label class="col-sm-2 control-label">公司</label>
<div class="col-sm-10">
<select class="form-control" id="selectList" onchange="selectChange()"></select>
</div>
</div>
<div class="form-group" id="editCorpDiv">
<label class="col-sm-2 control-label">公司</label>
<div class="col-sm-10">
<input class="form-control" id="editCorpDivName" type="text" value="" disabled/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">维度</label>
<div class="col-sm-10">
<input class="form-control" id="weidu" type="text" value="" onblur="onblurEvent()" oninput="value=value.replace(/[^\d]/g,'')"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">维度名称</label>
<div class="col-sm-10">
<input class="form-control" id="weiduName" type="text" value=""/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">审核人</label>
<div class="col-sm-10">
<input class="form-control" id="approveName" type="text" value="" list="ide" onKeyUp="keyUpEvent(event)">
<datalist id="ide"></datalist>
</div>
</div>
<input id="editId" name="editId" style="display:none"/>
<input id="editUserId" name="editUserId" style="display:none"/>
<input id="flag" style="display:none">
<input id="editCorpId" type="text" style="display:none;">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary" onclick="submitEdit()">保存</button>
</div>
</form>
</div><!-- /.modal-content -->
</div><!-- /.modal -->
</div>
<div class="modal fade" id="delModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel1" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">删除审核人</h4>
</div>
<div class="modal-body">
确认要删除此审核人吗?
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary" onclick="submitDel()">删除</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal -->
</div>
<script src="<%=request.getContextPath() %>/js/jquery-3.4.0.js"></script>
<script src="<%=request.getContextPath() %>/btjs/js/bootstrap-table.min.js"></script>
<script src="<%=request.getContextPath() %>/js/bootstrap/bootstrap.min.js"></script>
<script src="<%=request.getContextPath() %>/js/includes-extjs/order/finance/orderPriceApprover.js"></script>
</body>
</html>
js代码
$('#approver').bootstrapTable({
url: 'order!getOrderPriceApproverLists.action', //请求后台的URL(*)
method: 'get', //请求方式(*)
toolbar: '#toolbar',
singleSelect : true,
cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
clickToSelect: true, //是否启用点击选中行
columns: [
{
checkbox: true
},{
field: 'id',
title: 'ID'
},
{
field: 'index',
title: '维度'
},
{
field: 'indexName',
title: '维度名称'
},
{
field: 'userName',
title: '姓名'
},
{
field: 'userId',
title: 'userId'
},
{
field: 'corpName',
title: '公司'
},
{
field: 'corpId',
title: 'corpId'
}
]
});
//隐藏两列
$('#approver').bootstrapTable('hideColumn', 'id');
$('#approver').bootstrapTable('hideColumn', 'userId');
$('#approver').bootstrapTable('hideColumn', 'corpId');
//修改审核人
function editApprove(){
var row = $('#approver').bootstrapTable('getSelections')[0];
if(row==undefined){
alert("请先选择要编辑的行!")
return false;
}else{
$('#weidu').val(row.index);
$('#weiduName').val(row.indexName);
$('#approveName').val(row.userName);
$('#editId').val(row.id);
$('#editUserId').val(row.userId);
$('#flag').val("edit");
$('#editCorpId').val(row.corpId);
$('#corpDiv').hide();
$('#editCorpDiv').show();
$('#editCorpDivName').val(row.corpName)
$('#myModalLabel').html("修改审核人");
$('#editModal').modal('show');
}
}
//新增审核人
function addApprove(){
$('#weidu').val("");
$('#weiduName').val("");
$('#approveName').val("");
$('#editId').val("");
$('#editUserId').val("");
$('#flag').val("save");
$('#myModalLabel').html("新增审核人");
$('#corpDiv').show();
$('#editCorpDiv').hide();
//获取所有有效的公司
$.ajax({
url:"order!getCorpList.action",
type:"post",
dataType:'json',
success:function(result){
var data = result;
$.each(data,function(key,value){
$('#selectList').append('<option value="'+value.corpId+'">'+value.corp+'</option>');
}) ;
}
});
$('#editCorpId').val("1");
$('#editModal').modal('show');
}
//键盘弹起时查询输入的人名
function keyUpEvent(){
var flag = $('#flag').val();
var username = $('#approveName').val();
var corpId = $('#editCorpId').val();
if(username.length>1){//有两个字符时再查询
$('#ide').empty();
$.ajax({
url:"order!getUsersByName.action",
type:"post",
dataType:'json',
data: {"username":encodeURIComponent(username),"corpId":corpId},
success:function(result){
if(result==null||result==""){
alert("没有您要找的人!");
}
var data = result;
$.each(data,function(key,value){
$('#ide').append('<option value="'+value.user+'"></option>');
}) ;
$('#approveName').val("");
$('#approveName').focus();
}
});
}
}
/**
* 查看维度是否有重复
*/
function onblurEvent(){
var weidu = $('#weidu').val();
var flag = $('#flag').val();
var corpId = $('#editCorpId').val();
var row = $('#approver').bootstrapTable('getSelections')[0];
var checkIndex="-99";
if(row!=undefined){
checkIndex = row.index;
}
if(weidu==""){
return;
}
if(weidu==checkIndex&&flag=="edit"){
return;
}
$.ajax({
url:"order!getPriceWeiDu.action",
type:"post",
data: {"weidu":weidu,"corpId":corpId},
success:function(result){
if(result=="exist"){
alert("此维度已存在!");
$('#weidu').val("");
}
}
});
}
/**
* 提交修改维度
*/
function submitEdit(){
var weidu = $('#weidu').val();
if(weidu==""){
alert("维度不能为空!");
return;
}
var weiduName = $('#weiduName').val();
if(weiduName==""){
alert("维度名称不能为空!");
return;
}
var username = $('#approveName').val();
if(username==""||username.length<2){
alert("请输入正确的审核人!");
return;
}
var flag = $('#flag').val();
var id="";
if(flag=="edit"){
var row = $('#approver').bootstrapTable('getSelections')[0];
id=row.id;
}
var corpId = $('#editCorpId').val();
$.ajax({
url:"order!saveOrUpdatePriceApprove.action",
type:"post",
data: {"id":id,"weidu":weidu,"weiduName":encodeURIComponent(weiduName),"username":encodeURIComponent(username),"corpId":corpId},
success:function(result){
$('#editModal').modal('hide');
window.location.reload();
}
});
}
//删除维度
function deleteApprove(){
var row = $('#approver').bootstrapTable('getSelections')[0];
if(row==undefined){
alert("请先选择要编辑的行!")
return false;
}else{
$('#delModal').modal('show');
}
}
//删除
function submitDel(){
var row = $('#approver').bootstrapTable('getSelections')[0];
$.ajax({
url:"order!deletePriceApprove.action",
type:"post",
data: {"id":row.id},
success:function(result){
$('#delModal').modal('hide');
window.location.reload();
}
});
}
function selectChange(){
var opt=$("#selectList").val();
$('#editCorpId').val(opt);
$('#approveName').val("");
$('#weidu').val("");
$('#weiduName').val("");
$('#ide').empty();
}
action方法
//价格评审审批人列表
private List<OrderPriceApprover> orderPriceApproverList = new ArrayList<OrderPriceApprover>();
/**
* 价格评审,审批人维度列表
* @time 2019年6月25日
*/
public void getOrderPriceApproverLists(){
HttpServletResponse res = ServletActionContext.getResponse();
HttpServletRequest req = ServletActionContext.getRequest();
String corpId = req.getParameter("corpId");
JSONArray jsonArray = new JSONArray();
if(corpId==null){
orderPriceApproverList = orderBO.getOrderBasicDAO().searchByHQL("from OrderPriceApprover where validity=1 order by corpId,index");
}else{
int corp = Integer.parseInt(corpId);
orderPriceApproverList = orderBO.getOrderBasicDAO().searchByHQL("from OrderPriceApprover where validity=1 and corpId="+corp+" order by corpId,index");
}
for(OrderPriceApprover approver:orderPriceApproverList){
List<String> userNames = orderBO.getOrderBasicDAO().searchByHQL("select userName from UserT where userId="+approver.getUserId());
List<String> corpNames = orderBO.getOrderBasicDAO().searchByHQL("select shortName from Corporation where id="+approver.getCorpId());
String userName = userNames.get(0);
String corpName = corpNames.get(0);
Map<Object, Object> map = new HashMap<Object, Object>();
map.put("id", approver.getId());
map.put("index", approver.getIndex());
map.put("indexName", approver.getIndexName());
map.put("userId",approver.getUserId());
map.put("userName", userName);
map.put("corpId", approver.getCorpId());
map.put("corpName", corpName);
jsonArray.add(map);
}
try {
PrintWriter pw = res.getWriter();
pw.write(jsonArray.toString());
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 新增或修改维度价格评审人维度
* 没id就是新增
* 有id就是更新
* @time 2019年6月25日
*/
public void saveOrUpdatePriceApprove(){
HttpServletRequest req = ServletActionContext.getRequest();
String id = req.getParameter("id");
String wd = req.getParameter("weidu");
String wdName = req.getParameter("weiduName");
String username = req.getParameter("username");
String corpId = req.getParameter("corpId");
try {
req.setCharacterEncoding("UTF-8");
username = URLDecoder.decode(username, "UTF-8");
wdName = URLDecoder.decode(wdName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String hql = "select userId from UserT where userName ='"+username+"' and userValidity=1";
List<Integer> users = orderBO.getOrderBasicDAO().searchByHQL(hql);
if(id.equals("")){//没id就是新增
OrderPriceApprover app = new OrderPriceApprover();
app.setIndex(Integer.parseInt(wd));
app.setIndexName(wdName);
app.setUserId(users.get(0));
app.setValidity(1);
app.setCorpId(Integer.parseInt(corpId));
orderBO.getOrderBasicDAO().saveObject(app);
}else{//有id就是更新
String hql1 = "update OrderPriceApprover c set c.index="+Integer.parseInt(wd)+",c.userId="+users.get(0)+",c.indexName='"+wdName+"' where c.id="+Integer.parseInt(id);
orderBO.getOrderBasicDAO().updateByHql(hql1);
}
}
/**
* 验证新增价格评审维度时,该公司是否存在此维度
* @time 2019年6月25日
*/
public void getPriceWeiDu(){
HttpServletResponse res = ServletActionContext.getResponse();
HttpServletRequest req = ServletActionContext.getRequest();
String weidu = req.getParameter("weidu");
String corpId = req.getParameter("corpId");
String msg="ok";
String hql = "select id from OrderPriceApprover where index ="+weidu+" and corpId="+corpId+" and validity=1";
List<Integer> ids = orderBO.getOrderBasicDAO().searchByHQL(hql);
if(ids.size()>0){
msg="exist";
}
try {
PrintWriter pw = res.getWriter();
pw.write(msg);
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 删除价格评审维度
* @time 2019年6月25日
*/
public void deletePriceApprove(){
HttpServletRequest req = ServletActionContext.getRequest();
String id = req.getParameter("id");
String hql1 = "update OrderPriceApprover c set c.validity=0 where c.id="+Integer.parseInt(id);
orderBO.getOrderBasicDAO().updateByHql(hql1);
}