核心提示:span style=font-family: Arial, Helvetica, sans-serif;%@ page language=javaimport=java.util.*contentT...
<span style="font-family: Arial, Helvetica, sans-serif;"><%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%></span>
<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>药品图片添加</title> <link href="../../style/css.css" rel="stylesheet" /> <link rel="stylesheet" type="text/css" media="screen" href="/resources/style/jquery-ui.css" /> <link rel="stylesheet" type="text/css" media="screen" href="/resources/style/ui.multiselect.css" /> <link rel="stylesheet" type="text/css" media="screen" href="/resources/style/ui.jqgrid.css" /> <link rel="stylesheet" type="text/css" href="/resources/style/jquery-ui-timepicker-addon.css" /> <script type="text/javascript" src="/resources/scripts/jquery-1.9.0.js"></script> <script type="text/javascript" src="/resources/scripts/jquery-ui.js"></script> <script type="text/javascript" src="/resources/scripts/ui.multiselect.js"></script> <script type="text/javascript" src="/resources/scripts/jquery.jqGrid.src.js"></script> <script type="text/javascript" src="/resources/scripts/i18n/grid.locale-cn.js"></script> <script type="text/javascript" src="/resources/scripts/fufang.grid.src.js"></script> <script type="text/javascript" src="/resources/scripts/jquery.ui.datepicker-zh-CN.js"></script> <script type="text/javascript" src="../../scripts/jquery-ui-timepicker-addon.js"></script> <script src="/resources/scripts/jquery.ui.note.js"></script> </head> <body> <p id="addmaterialNext" title="选择要添加和修改的图片" style="display:none">//要弹出添加框,此处先定义为隐藏 <form id="addmaterialNextForm" name="addmaterialNextForm" enctype="multipart/form-data" method="post"> <table width="99%" border="1" class="grid" id="table_supp"> <tbody class="addimg"> <!-- <tr>/*如果选择用单行的操作则取消次注释,多行操作要有次注释,保障弹出页面的统一性*/ <th>选择图片</th> <td> <input type="file" id="imageUrls" name="imageUrls"/> <input type="text" id="ids" name="ids"/> </td> </tr> --> </tbody> </table> <p align="center" ><input type="button" onclick="saveData()" value="上传图片"/></p> </form> </p> <span class="tit_text">药品名称:</span> <input type="text" class="input_text" id="taskCode" placeholder="药品名"/> <input type="button" value="查询" onclick="findData();"/> <input type="button" value="添加图片" onclick="addimg();"/> <table id="_materialNextJqGrid" class="grid" width="100%"></table>/*此列用于显示主体*/ <p id="_materialNextJqGridPager"></p>//此列用于分页,这两行很重要,下边的方法要用到这两个id </body> <script type="text/javascript"> $(document).ready(function () { String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); }; $(document).note({isFloat: true,delay:3000,speed:1000}); </span>
<%
<span style="white-space:pre"> </span>String msg = (String) session.getAttribute("msg");
<span style="white-space:pre"> </span>if (null != msg && msg.equals("success")) {
<span style="white-space:pre"> </span> %>
<span style="white-space:pre"> </span>$(document).note("add", {
<span style="white-space:pre"> </span>type : "success",
<span style="white-space:pre"> </span>message : "操作成功!"
<span style="white-space:pre"> </span>});
<span style="white-space:pre"> </span><%}
<span style="white-space:pre"> </span> if (null != msg && msg.equals("error")) {%>
<span style="white-space:pre"> </span>$(document).note("add", {
<span style="white-space:pre"> </span>type : "error",
<span style="white-space:pre"> </span>message : "操作失败!"
<span style="white-space:pre"> </span>});
<span style="white-space:pre"> </span><%}
<span style="white-space:pre"> </span>session.removeAttribute("msg");
<span style="white-space:pre"> </span>%><span style="font-size:18px;">
$("#addmaterialNext").dialog({/*c此功能是要让隐藏的弹出框显示出来,可在其中调节样式*/
autoOpen : false,
width : 800,
modal : true,
position : ['center','top']
});
$("#_materialNextJqGrid").jqGrid({
regional: 'cn',
viewrecords: true,//此行是设置jqgrid拥有复选框
autowidth: true,
shrinkToFit: true,
multiselect: true,
url: 'findMaterialNextByName',/*f访问后台的URL地址此处注意没有controller上的map,也没有“/”*/
mtype: "post",
datatype: "json",
page: 1,
colNames: ['药品名', '通用名','规格','剂型','国药准字','厂家','rduCode','图片','ID','操作'],
colModel: [
{ name: 'name',width: '40px'},//此处的列名就是后台bean的属性名,拼写要一致
{ name: 'commonName',align:'center',width: '40px'},
{ name: 'spec',align:'center',width: '50px'},
{ name: 'dosage',align:'center',width: '30px'},
{ name: 'licenseNum',align:'center',width: '30px',hidden:true},
{ name: 'manufName',align:'center',width:'40px'},
{ name: 'rduCode',align:'center',width: '30px'},
{ name: 'smallimg',align:'center',width: '40px',formatter:showlink},/*格式化本列为超链接*/
{ name: 'id', hidden:true},
{
name: 'look',
align: 'center',
sortable: false,
formatter: formatLook,/*格式化列方法,就是再次添加单列后的操作属性功能,对应同名jq方法*/
hidedlg: true
}
],
height: 580,
rowNum: 20,
pager: "#_materialNextJqGridPager",
rownumbers: true
});
});
function showlink(cellValue, options, rowObject) {
<span style="white-space:pre"> </span> var html ="";
<span style="white-space:pre"> </span> html += "<a title='rowObject.smallimg' href='"+rowObject.smallimg+"' target='_blank'>";
<span style="white-space:pre"> </span> html += "<span style='color:#CE0000'>"+rowObject.smallimg+"</span></a> ";
<span style="white-space:pre"> </span> return html; }
function formatLook(cellValue, options, rowObject) {
var html ="";
html = "<a title='上传图片' href='#' onclick='storeShowJspData("+rowObject.id+");'>";//如果点击调用显示方法
html += "<span style='color:#CE0000'>上传图片</span></a> ";//格式化列
return html;
}
function storeShowJspData(id){//显示弹出框方法
$("#addmaterialNextForm #ids").val(id);
$("#addmaterialNext").dialog("open");
}
function saveData(){//弹出框内的保存修改方法,此处用的是表单提交,也可以ajax请求
var name=$("#imageUrls").val();
if(name.trim()==""){
return message("提示:请选择图片");
}
var msgStr="您确定要保存图片吗?";
var result=window.confirm(msgStr);
if(result){
addmaterialNextForm.action="updateMaterialNextImage";//提交到后台处理接口的链接
addmaterialNextForm.submit();
}
}
function message(msg){
$(document).note("add", {
type : "error",
message : msg
});
}
function addimg(){//多行操作时调用的方法
var selectedIds = $("#_materialNextJqGrid").jqGrid("getGridParam", "selarrrow");//获取选中行的所有ids
storeShowJspData(selectedIds);
$(".addimg").append('<tr><th>药品名称</th><th>规格</th><th>厂家</th><th>操作</th></tr>');
for (var i = 0, max = selectedIds.length; i < max; i++) {
var rowData = $("#_materialNextJqGrid").jqGrid('getRowData',selectedIds[i]);//遍历id获取整行属性
var name = rowData.name//属性从行对象中获取
var spec = rowData.spec
var manufName=rowData.manufName
var id=rowData.id;//拼接要弹出的添加修改框
var content='<tr><td>'+name+'</td> <td>'+spec+' </td><td>'+manufName+'</td>';
content+='<td><input type=\"file\" id=\"imageUrls\" name=\"imageUrls\" value=\"selectedIds[i]\" />';
content+='<input type=\"text\" id=\"ids\" name=\"ids\" value='+id+'></td></tr>';
$(".addimg").append(content)
}
}</span><span style="font-size:18px;"> function findData(){/*查询操作*/
<span style="white-space:pre"> </span>var name=$("#name").val();
<span style="white-space:pre"> </span>var postDataParam= {"name":name};/*获取name文本框中的内容作为参数*/
<span style="white-space:pre"> </span>$("#_materialNextJqGrid").jqGrid('setGridParam',{datatype:'json',postData:postDataParam,page:1,rows:20}).trigger('reloadGrid');
<span style="white-space:pre"> </span>}
</script>
</html></span></span>
后台:
<span style="font-size:18px;">@Controller
@RequestMapping(value = "/mat")
public class MaterialController { </span><span style="font-size:18px;"><span style="font-size:18px;">/**
* 修改药品图片
* @param
* @return
* updateMaterialNextImage(int id, String smallimg)
*/
@RequestMapping(value="/updateMaterialNextImage")
public String updateMaterialNextImage(HttpServletRequest request,@RequestParam("imageUrls") MultipartFile[] imageUrls){
String imageUrl="";
String[] matIds = request.getParameterValues("ids");
Map<String,String> imgData=new HashMap<String, String>();
if(null!=imageUrls && imageUrls.length>0){
for (int j = 0; j < matIds.length; j++) {
imageUrl=uploadImage(imageUrls[j]);
imgData.put(matIds[j], imageUrl);
}
}
boolean result=this.materialService.updateMaterialNextImage(imgData);
<span style="white-space:pre"> </span>if (result) {
<span style="white-space:pre"> </span>request.getSession().setAttribute("msg", "success");//添加返回值用于前台判断是否保存成功
<span style="white-space:pre"> </span>}else{
<span style="white-space:pre"> </span>request.getSession().setAttribute("msg", "error");
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>return "redirect:/mat/findMaterialNextJsp";
}
/**
* 查询药品图片
* @param
* @return
* List<MaterialNext> findMaterialNextByName(String name);
*/
@RequestMapping(value="/findMaterialNextJsp")
public String findMaterialNextJsp(HttpServletRequest request){
return "groupImage/materialNextDef";
}
/**
* 查询药品图片
* @param
* @return
* List<MaterialNext> findMaterialNextByName(String name);
*/
@RequestMapping(value="/findMaterialNextByName")
@ResponseBody
public Map<String, Object> findMaterialNextByName(HttpServletRequest request,String name){
Map<String, Object> mapData = new HashMap<String, Object>();
Map<String, Object> mapWhere = new HashMap<String, Object>();
mapWhere.put("name", name);
//解析jqGrid的参数
JqGridParams params = JqGridUtils.send(request);
// 总行数
int records=this.materialService.getMaterialNextCount(mapWhere);
// 总页数
int total = records / params.getRows() + (records % params.getRows() == 0 ? 0 : 1);
// 启始数
int start = (params.getPage() - 1) * params.getRows();
//排序规则
if(null!=params.getSidx() && !"".equals(params.getSidx())){
mapWhere.put("orderPro", params.getSidx()+","+params.getSord());
}
List<MaterialNext> materialNextList=this.materialService.findMaterialNextByName(start, params.getRows(), mapWhere);
//将数据返回给客户端
JqGridReturnedData returnedData = new JqGridReturnedData();
returnedData.setPage(params.getPage());
returnedData.setRecords(records);
returnedData.setTotal(total);
returnedData.setRows(materialNextList);
//返回
JqGridUtils.returnData(mapData, returnedData);
return mapData;
// List<MaterialNext> materialNextList=this.materialService.findMaterialNextByName(name);
// return materialNextList;
}</span></span><span style="font-size:18px;"><span style="font-size:18px;">}</span></span>
<span style="font-size:18px;">dao:</span>
<span style="font-size:18px;">@SuppressWarnings("unchecked")
@Override
public List<MaterialNext> findMaterialNextByName(int page, int pageSize,Map<String, Object> mapWhere) {
boolean defaultOrder=true;
Map<String,Object> sqlParam=new HashMap<String, Object>();
String sql="select top 30 g.id,g.name, g.commonName,g.spec, g.dosage, g.licenseNum,g.manufName, g.rduCode, g.smallimg"+
" from dbo.t_material_next g where 1=1 ";
if (null != mapWhere) {
if(null!=mapWhere.get("name") && !"".equals(mapWhere.get("name"))){
sql +=" and g.name like '%'+name+'%'";
sqlParam.put("name", mapWhere.get("name"));
}
//这个排序判断必须放到最后
if(null!=mapWhere.get("orderPro") && !"".equals(mapWhere.get("orderPro"))){
String[] orderPro=mapWhere.get("orderPro").toString().split(",");
sql+=" order by "+orderPro[0]+" "+orderPro[1];
defaultOrder=false;
}
}
if(defaultOrder)
sql+=" order by g.id";
SQLQuery query=this.getSessionFactory().getCurrentSession().createSQLQuery(sql);
query.setProperties(sqlParam);
return query.setResultTransformer(Transformers.aliasToBean(MaterialNext.class)).list();
/*String sql="select g.id,g.name, g.commonName,g.spec, g.dosage, g.licenseNum,g.manufName, g.rduCode, g.smallimg"+
"from wit_selection.t_material_next g ";
if(name != ""){
sql+="where g.name like name";
}
SQLQuery query=this.getSessionFactory().getCurrentSession().createSQLQuery(sql);
query.setParameter("name", "%"+name+"%");
List<MaterialNext> list=query.setResultTransformer(Transformers.aliasToBean(TgGroupType.class)).list();
return list;*/
}
@Override
public boolean updateMaterialNextImage(Map<String,String> imgData) {
try{
StringBuffer sql = new StringBuffer();
for (String key : imgData.keySet()) {
sql.append("update t_material_next ");
sql.append("set smallimg= ");
sql.append("'"+imgData.get(key)+"'");
sql.append(" where id="+key+";");
}
this.sessionFactory.getCurrentSession().createSQLQuery(sql.toString()).executeUpdate();
return true;
} catch (HibernateException e) {
e.printStackTrace();
return false;
}
/*try {
String sql="update wit_selection.t_material_next set smallimg=:smallimg where id=:id";
SQLQuery query=this.getSessionFactory().getCurrentSession().createSQLQuery(sql);
query.setParameter("id", id);
query.setParameter("smallimg", smallimg);
query.executeUpdate();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}*/
}
@Override
public int getMaterialNextCount(Map<String, Object> map) {
int count = 0;
Map<String, Object> sqlMap = new HashMap<String, Object>();
String sql = "select count(t1.id) from dbo.t_material_next t1 "
+ "where 1=1 ";
if (null != map) {
if (null != map.get("name") && !"".equals(map.get("name"))) {
sql += " AND t1.name like '%'+name+'%' ";
sqlMap.put("name", map.get("name"));
}
}
SQLQuery query = getSessionFactory().getCurrentSession().createSQLQuery(sql);
query.setProperties(sqlMap);
List list = query.list();
if (null != list && list.size() > 0) {
count = Integer.valueOf(list.get(0).toString());
}
return count;
}</span>查询操作:
<span style="font-size:18px;"><span style="font-size:18px;">function findData(){
var name=$("#name").val();
var postDataParam= {"name":name};
$("#_materialNextJqGrid").jqGrid('setGridParam',{datatype:'json',postData:postDataParam,page:1,rows:20}).trigger('reloadGrid');
}//重定向</span></span>

