一、创建药品数据
大致上和之前供货商一样,Ctrl+C复制粘贴修改
1.1 创建pojo实体类
package com.dh.pojo;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;import org.springframework.format.annotation.DateTimeFormat;import java.io.Serializable;
import java.util.Date;/*** 药品管理*/
@Data
@TableName(value = "druginfo")
public class Druginfo implements Serializable {/*主键*/@TableField(value = "id")@TableId(value = "id", type = IdType.AUTO)private Integer id;/*药品名称*/private String name;/*供应商名称*/private String supplier;/*生产时间*/@DateTimeFormat(pattern = "yyyy-MM-dd")private Date producttime;/*保质期(月)*/private String warrenty;/*药品编码*/private String number;/*价格*/private Float price;/*库存*/private Integer stock;}
1.2 创建mapper接口
DruginfoMapper
package com.dh.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dh.pojo.Druginfo;
import org.apache.ibatis.annotations.Mapper;/*** 药品的增删改查mapper*/
@Mapper
public interface DruginfoMapper extends BaseMapper<Druginfo> {
}
1.3 创建Service业务层
DruginfoService
package com.dh.service;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dh.pojo.Druginfo;import java.util.List;/*** 药品的service接口*/
public interface DruginfoService extends IService<Druginfo> {/*** 分页查询药品数据* @param pageNum 第几页* @param pageSize 每页多少条数据* @param param 查询参数-药品名称* @return*/public IPage<Druginfo> selectDruginfoPage(int pageNum, int pageSize, String param);/*** 新增一条药品信息* @param druginfo*/public int addDruginfo(Druginfo druginfo);/*** 修改一条药品信息* @param druginfo*/public int editDruginfo(Druginfo druginfo);/*** 根据主键id查询一个药品对象* @param id* @return*/public Druginfo queryDruginfoById(Integer id);/*** 根据主键id删除一个药品对象* @param id* @return*/public int delDruginfoById(Integer id);/*** 查询所有药品* @return*/public List<Druginfo> queryDruginfoList();
}
实现类:
package com.dh.service.Impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dh.mapper.DruginfoMapper;
import com.dh.pojo.Druginfo;
import com.dh.service.DruginfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;/*** 药品service实现类*/
@Service
public class DruginfoServiceImpl extends ServiceImpl<DruginfoMapper, Druginfo> implements DruginfoService {@Autowiredprivate DruginfoMapper druginfoMapper;/*** 分页查询药品数据** @param pageNum 第几页* @param pageSize 每页多少条数据* @param param 查询参数-药品名称* @return*/@Overridepublic IPage<Druginfo> selectDruginfoPage(int pageNum, int pageSize, String param) {QueryWrapper<Druginfo> queryWrapper = new QueryWrapper<>();if(StringUtils.isNotBlank(param)){queryWrapper.like("name",param);}Page<Druginfo> page = new Page<>(pageNum,pageSize);return druginfoMapper.selectPage(page,queryWrapper);}/*** 新增一条药品信息** @param druginfo*/@Overridepublic int addDruginfo(Druginfo druginfo) {return druginfoMapper.insert(druginfo);}/*** 修改一条药品信息** @param druginfo*/@Overridepublic int editDruginfo(Druginfo druginfo) {return druginfoMapper.updateById(druginfo);}/*** 根据主键id查询一个药品对象** @param id* @return*/@Overridepublic Druginfo queryDruginfoById(Integer id) {return druginfoMapper.selectById(id);}/*** 根据主键id删除一个药品对象** @param id* @return*/@Overridepublic int delDruginfoById(Integer id) {return druginfoMapper.deleteById(id);}/*** 查询所有药品** @return*/@Overridepublic List<Druginfo> queryDruginfoList() {return druginfoMapper.selectList(null);}
}
1.4 创建controller控制层
package com.dh.controller;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dh.common.ResultMapUtil;
import com.dh.pojo.Druginfo;
import com.dh.service.DruginfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;/*** 药品相关的controller*/
@Controller
@RequestMapping(value = "/druginfo")
public class DruginfoController {@Autowiredprivate DruginfoService druginfoService;/*** 转向药品页面*/@RequestMappingpublic String druginfo(){return "/druginfo";}/*** 分页查询药品列表*/@RequestMapping(value = "/druginfoQueryPage")@ResponseBodypublic Object druginfoQueryPage(String param, @RequestParam(defaultValue = "1")int pageNum,@RequestParam(defaultValue = "10")int pageSize){try{IPage<Druginfo> iPage = druginfoService.selectDruginfoPage(pageNum,pageSize,param);return ResultMapUtil.getHashMapMysqlPage(iPage);} catch (Exception e){return ResultMapUtil.getHashMapException(e);}}/*** 转向药品新增页面*/@RequestMapping(value = "/druginfoPage")public String druginfoPage(){return "/druginfoPage";}/*** 添加一个药品*/@RequestMapping(value = "/druginfoAdd")@ResponseBodypublic Object druginfoAdd(Druginfo druginfo){try{int i = druginfoService.addDruginfo(druginfo);return ResultMapUtil.getHashMapSave(i);} catch (Exception e){return ResultMapUtil.getHashMapException(e);}}/*** 转向药品编辑页面*/@RequestMapping(value = "/druginfoQueryById")public String druginfoQueryById(@RequestParam(name = "id",required = true)Integer id, Model model){Druginfo druginfo = druginfoService.queryDruginfoById(id);model.addAttribute("obj",druginfo);return "/druginfoPage";}/*** 修改一个药品*/@RequestMapping(value = "/druginfoEdit")@ResponseBodypublic Object druginfoEdit(Druginfo druginfo){try{int i = druginfoService.editDruginfo(druginfo);return ResultMapUtil.getHashMapSave(i);} catch (Exception e){return ResultMapUtil.getHashMapException(e);}}/*** 删除一个药品*/@RequestMapping(value = "/druginfoDelById")@ResponseBodypublic Object druginfoDelById(Integer id){try{int i = druginfoService.delDruginfoById(id);return ResultMapUtil.getHashMapDel(i);} catch (Exception e){return ResultMapUtil.getHashMapException(e);}}
}
1.5 创建日期处理类
DateUtil
处理日期相关的操作
package com.dh.common;import java.text.SimpleDateFormat;
import java.util.Date;/*** 日期处理类* 处理日期相关的操作*/
public class DateUtil {/*** 把日期格式转换成年月日(yyyy-MM-dd)的字符串*/public static String dateConvert(Date date){//用java提供的SimpleDateFormat进行转换,传入转换的格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//返回转换的格式return sdf.format(date);}public static void main(String[] args) {//测试转换的结果System.out.println(DateUtil.dateConvert(new Date()));}
}
1.6 在Druginfo中添加时间转换
/*生产时间转换成年月日*/public String getProducttimeStr(){return DateUtil.dateConvert(producttime);}
二、药品后台页面
2.1 编写药品管理页面
druginfo.html
<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>药品信息管理</title><link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all"><link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all"><script type="text/html" id="indexTpl">{{d.LAY_TABLE_INDEX+1}}</script>
</head>
<body class="layui-layout-body"><div class="layui-fluid"><div class="layui-row layui-col-space15"><div class="layui-col-md12"><div class="layui-card"><div class="layui-card-header">药品信息列表</div><div class="layui-card-body"><table class="layui-hide" id="main-table" lay-filter="main-table"></table><script type="text/html" id="toolbarDemo"><span class="layui-inline" lay-event="add"><i class="layui-icon"></i> </span><span class="layui-inline" style="width: 240px;"><input class="layui-input" name="param" id="param" placeholder="根据药品名称查询" autocomplete="off"></span><span class="layui-btn layui-btn-sm layui-bg-red" lay-event="querySearch"><i class="layui-icon"></i>查询</span></script><script type="text/html" id="barDemo"><a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></script></div></div></div></div></div><script th:src="@{/static/layui/layui.js}"></script><script>layui.use(['table','form'],function () {var $ = layui.$;var table = layui.table;table.render({elem: '#main-table',height: 650,url: '/druginfo/druginfoQueryPage',method: 'POST',page: true,id: 'table-load',toolbar: '#toolbarDemo',cols: [[{title: '序号',templet: '#indexTpl',width: 60,align:'center'},{field:'name',title:'药品名称',algin:'center'},{field:'supplier',title:'供应商',algin:'center'},{field:'warrenty',title:'保质期(月)',algin:'center'},{field:'number',title:'药品编码',algin:'center'},{field:'price',title:'药品价格',algin:'center'},{field:'stock',title:'库存',algin:'center'},{field:'producttime',title:'生产时间',algin:'center',templet:"<div>{{layui.util.toDateString(d.producttime,'yyyy-MM-dd')}}</div>"},{title:'操作',align:'center',toolbar:'#barDemo',fixed:'right'}]]});//监听头工具栏事件table.on('toolbar(main-table)',function (obj) {switch (obj.event) {case 'add':layer.open({type: 2,title: '新增药品信息',content: '/druginfo/druginfoPage',shade:[0.8,'#393d49'],area:['600px','530px'],btn:['确定','取消'],yes:function (index,layero) {var iframeWindow = window['layui-layer-iframe'+index];var submit = layero.find('iframe').contents().find("#LAY-front-submit");//监听提交iframeWindow.layui.form.on('submit(LAY-front-submit)',function (data) {var field = data.field;$.ajax({url: '/druginfo/druginfoAdd',data: field,async: false,cache: false,success: function (str) {if(str.code === 0){table.reload('table-load');}layer.msg(str.msg,{icon:str.icon,anim:str.anim});}});layer.close(index); //关闭弹层});submit.trigger('click');},success:function (layero,index) {}});break;case 'querySearch':var param = $('#param').val();table.reload('table-load',{where: {param: param}});$('#param').val(param);break;}});//监听编辑、删除table.on('tool(main-table)',function (obj) {var data = obj.data;switch (obj.event) {case 'edit':layer.open({type: 2,title: '编辑药品信息',content: '/druginfo/druginfoQueryById?id=' +data.id,shade:[0.8,'#393d49'],area:['600px','500px'],btn:['确定','取消'],yes:function (index,layero) {var iframeWindow = window['layui-layer-iframe'+index];var submit = layero.find('iframe').contents().find("#LAY-front-submit");//监听提交iframeWindow.layui.form.on('submit(LAY-front-submit)',function (data) {var field = data.field;$.ajax({url: '/druginfo/druginfoEdit',data: field,async: false,cache: false,success: function (str) {if(str.code === 0){table.reload('table-load');}layer.msg(str.msg,{icon:str.icon,anim:str.anim});}});layer.close(index); //关闭弹层});submit.trigger('click');},success:function (layero,index) {}});break;case 'del':layer.confirm('确认要删除吗?',function (index) {$.ajax({url: '/druginfo/druginfoDelById?id=' +data.id,data: null,async: false,cache: false,success: function (str) {table.reload('table-load');layer.msg(str.msg,{icon:str.icon,anim:str.anim});}});})break;}});});</script>
</body>
</html>
2.2 编写药品编辑页面
druginfoPage.html
<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>药品信息</title><link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all"><link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all">
</head>
<body><div class="layui-fluid"><div class="layui-card"><div class="layui-card-body" style="padding: 15px;"><form class="layui-form layui-form-pane" action=""><input name="id" th:value="${obj?.id}" class="layui-input layui-hide"/><div class="layui-form-item"><label class="layui-form-label">药品名称</label><div class="layui-input-block"><input type="text" name="name" th:value="${obj?.name}" lay-verify="required" placeholder="请输入药品名称" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">药品编码</label><div class="layui-input-block"><input type="text" name="number" th:value="${obj?.number}" lay-verify="required" placeholder="请输入药品编码" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">供应商</label><div class="layui-input-block"><select name="supplier" id="supplier"></select></div></div><div class="layui-form-item"><label class="layui-form-label">生产时间</label><div class="layui-input-block"><input type="text" readonly name="producttime" id="producttime" th:value="${obj?.producttimeStr}" lay-verify="required" placeholder="请输入生产时间" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">保质期(月)</label><div class="layui-input-block"><input type="text" name="warrenty" th:value="${obj?.warrenty}" lay-verify="required" placeholder="请输入保质期(月)" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">价格</label><div class="layui-input-block"><input type="text" name="price" th:value="${obj?.price}" lay-verify="required" placeholder="请输入价格" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">库存</label><div class="layui-input-block"><input type="text" name="stock" th:value="${obj?.stock}" lay-verify="required" placeholder="请输入库存" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item layui-hide"><input type="button" lay-submit lay-filter="LAY-front-submit" id="LAY-front-submit" value="确认"></div></form></div></div></div><script th:src="@{/static/layui/layui.js}"></script><script>layui.use(['form','laydate'],function () {var $ = layui.$;var laydate = layui.laydate;var form = layui.form;//支持日期控件laydate.render({elem: '#producttime',trigger: 'click'});//当前供应商的值var currentSupplier = '[[${obj?.supplier}]]';//获取供应商列表$.ajax({url: '/supplier/supplieList',dataType:'json',type:'post',cache:false,success:function (data) {$('#supplier').prepend("<option value=''>请选择</option>");for(var i=0;i<data.data.length;i++){if(data.data[i].name==currentSupplier){$('#supplier').append("<option selected value='"+data.data[i].name+"'>"+data.data[i].name+"</option>");}else{$('#supplier').append("<option value='"+data.data[i].name+"'>"+data.data[i].name+"</option>");}}form.render(); //下拉列表渲染,把内容加载进去}});});</script>
</body>
</html>
2.3 修改index跳转页面
二级药品菜单的页面跳转
<!--二级菜单-->
<dl class="layui-nav-child"><dd><a href="#" class="site-demo-active" lay-href="/druginfo" data-id="1" data-title="药品信息">药品信息</a> </dd><dd><a href="#" class="site-demo-active" lay-href="/supplier" data-id="2" data-title="供应商信息">供应商信息</a> </dd>
</dl>
2.4 测试
发现无法显示供应商
2.5 List返回格式
编写ResultMapUtil
/*** List返回格式*/public static HashMap<String,Object> getHashMapList(List<?> list){HashMap<String,Object> resultMap = new HashMap<>();resultMap.put("code",0);if(list!=null&&list.size()>0){resultMap.put("msg","");}else {resultMap.put("msg","没有查询到数据!");}resultMap.put("data",list);return resultMap;}
2.6 获取所有供应商
编写SupplierController
/*** 获取所有供应商*/@RequestMapping(value = "/supplierList")@ResponseBodypublic Object supplierList(){List<Supplier> supplierList = supplierService.querySupplierList();return ResultMapUtil.getHashMapList(supplierList);}
2.7 测试:
三、药品出入库管理
3.1 创建pojo实体类
Owinfo
package com.dh.pojo;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;import java.io.Serializable;
import java.util.Date;/*** 药品出入库管理*/
@Data
@TableName(value = "owinfo")
public class Owinfo implements Serializable {/*主键*/@TableField(value = "id")@TableId(value = "id",type = IdType.AUTO)private Integer id;/*药品名称*/private String dname;/*出库/入库*/private String type;/*数量*/private Integer count;/*操作人*/private String operator;/*操作时间*/private Date createtime;
}
3.2 创建mapper接口
package com.dh.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dh.pojo.Owinfo;
import org.apache.ibatis.annotations.Mapper;/*** 药品出入库的增删改查Mapper*/
@Mapper
public interface OwinfoMapper extends BaseMapper<Owinfo> {
}
3.3 创建Service业务层
package com.dh.service;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dh.pojo.Owinfo;/*** 药品出入库的service接口*/
public interface OwinfoService extends IService<Owinfo> {/*** 分页查询药品出入库数据* @param pageNum 第几页* @param pageSize 每页多少条数据* @param param 查询参数-药品出入库名称* @return*/public IPage<Owinfo> selectOwinfoPage(int pageNum, int pageSize, String param);/*** 新增一条药品出入库信息* @param owinfo*/public int addOwinfo(Owinfo owinfo);/*** 修改一条药品出入库信息* @param owinfo*/public int updateOwinfo(Owinfo owinfo);/*** 根据主键id查询一个药品出入库对象* @param id* @return*/public Owinfo queryOwinfoById(Integer id);/*** 根据主键id删除一个药品出入库对象* @param id* @return*/public int delOwinfoById(Integer id);}
实现类
package com.dh.service.Impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dh.mapper.OwinfoMapper;
import com.dh.pojo.Owinfo;
import com.dh.service.OwinfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** 药品出入库service实现类*/
@Service
public class OwinfoServiceImpl extends ServiceImpl<OwinfoMapper, Owinfo> implements OwinfoService {@Autowiredprivate OwinfoMapper owinfoMapper;/*** 分页查询药品出入库数据** @param pageNum 第几页* @param pageSize 每页多少条数据* @param param 查询参数-药品出入库名称* @return*/@Overridepublic IPage<Owinfo> selectOwinfoPage(int pageNum, int pageSize, String param) {QueryWrapper<Owinfo> queryWrapper = new QueryWrapper<>();if(StringUtils.isNotBlank(param)){queryWrapper.like("dname",param);}Page<Owinfo> page = new Page<>(pageNum,pageSize);return owinfoMapper.selectPage(page,queryWrapper);}/*** 新增一条药品出入库信息** @param owinfo*/@Overridepublic int addOwinfo(Owinfo owinfo) {return owinfoMapper.insert(owinfo);}/*** 修改一条药品出入库信息** @param owinfo*/@Overridepublic int updateOwinfo(Owinfo owinfo) {return owinfoMapper.updateById(owinfo);}/*** 根据主键id查询一个药品出入库对象** @param id* @return*/@Overridepublic Owinfo queryOwinfoById(Integer id) {return owinfoMapper.selectById(id);}/*** 根据主键id删除一个药品出入库对象** @param id* @return*/@Overridepublic int delOwinfoById(Integer id) {return owinfoMapper.deleteById(id);}}
3.4 创建controller控制层
package com.dh.controller;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dh.common.ResultMapUtil;
import com.dh.pojo.Owinfo;
import com.dh.service.OwinfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.Date;/*** 药品出入库相关的controller*/
@Controller
@RequestMapping(value = "/owinfo")
public class OwinfoController {@Autowiredprivate OwinfoService owinfoService;/*** 转向药品出入库页面*/@RequestMappingpublic String owinfo(){return "/owinfo";}/*** 分页查询药品出入库列表* value可以指定请求的参数* value = "/xxx",method = RequestMethod.POST* @param param 数据* @param pageNum 起始页数* @param pageSize 每页10行记录* @return*/@RequestMapping(value = "/owinfoQueryPage")@ResponseBodypublic Object owinfoQueryPage(String param, @RequestParam(defaultValue = "1")Integer pageNum,@RequestParam(defaultValue = "10")Integer pageSize){try {//查询对应的数据IPage<Owinfo> iPage = owinfoService.selectOwinfoPage(pageNum, pageSize, param);//获取mysql的分页查询结果return ResultMapUtil.getHashMapMysqlPage(iPage);} catch (Exception e) {//如果出错,把异常信息返回给前端return ResultMapUtil.getHashMapException(e);}}/*** 转向药品出入库新增页面* @return 跳转owinfoPage.html*/@RequestMapping(value = "/owinfoPage")public String owinfoPage(){return "/owinfoPage";}/*** 添加一个药品出入库* @param owinfo* @return*/@RequestMapping(value = "/owinfoAdd")@ResponseBodypublic Object owinfoAdd(Owinfo owinfo){try {//获取创建时间owinfo.setCreatetime(new Date());//新增一条出入库信息int i = owinfoService.addOwinfo(owinfo);//保存,并统一格式返回return ResultMapUtil.getHashMapSave(i);} catch (Exception e) {//如果出错,把异常信息返回给前端return ResultMapUtil.getHashMapException(e);}}/*** 根据查询的id,转向药品出入库编辑页面* @param id 查询的id* @param model* @return*/@RequestMapping(value = "/owinfoQueryById")public String owinfoQueryById(@RequestParam(name = "id",required = true)Integer id, Model model){//根据id查询药品Owinfo owinfo = owinfoService.queryOwinfoById(id);//model调用逻辑处理model.addAttribute("obj", owinfo);//跳转页owinfoPage.htmlreturn "/owinfoPage";}/*** 修改一个药品出入库* @param owinfo 实体类* @return 返回修改的数据*/@RequestMapping(value = "/owinfoEdit")@ResponseBodypublic Object owinfoupdate(Owinfo owinfo){try {//修改一条药品出入库信息int i = owinfoService.updateOwinfo(owinfo);//保存,并统一格式返回return ResultMapUtil.getHashMapSave(i);} catch (Exception e) {//如果出错,把异常信息返回给前端return ResultMapUtil.getHashMapException(e);}}/*** 删除一个药品出入库* @param id 根据id删除* @return 返回删除的数据*/@RequestMapping(value = "/owinfoDelById")@ResponseBodypublic Object owinfoDelById(Integer id){try {//根据id删除数据int i = owinfoService.delOwinfoById(id);//保存,并统一格式返回return ResultMapUtil.getHashMapDel(i);} catch (Exception e) {//如果出错,把异常信息返回给前端return ResultMapUtil.getHashMapException(e);}}
}
3.5 获取所有的药品
DruginfoController
/*** 获取所有药品*/@RequestMapping(value = "/druginfoList")@ResponseBodypublic Object druginfoList(){List<Druginfo> druginfoList = druginfoService.queryDruginfoList();return ResultMapUtil.getHashMapList(druginfoList);}
四、出入库后台页面
4.1 药品管理页面
owinfo.html
<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>药品出入库信息管理</title><link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all"><link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all"><script type="text/html" id="indexTpl">{{d.LAY_TABLE_INDEX+1}}</script>
</head>
<body class="layui-layout-body"><div class="layui-fluid"><div class="layui-row layui-col-space15"><div class="layui-col-md12"><div class="layui-card"><div class="layui-card-header">药品出入库信息列表</div><div class="layui-card-body"><table class="layui-hide" id="main-table" lay-filter="main-table"></table><script type="text/html" id="toolbarDemo"><span class="layui-inline" lay-event="add"><i class="layui-icon"></i> </span><span class="layui-inline" style="width: 240px;"><input class="layui-input" name="param" id="param" placeholder="根据药品名称查询" autocomplete="off"></span><span class="layui-btn layui-btn-sm layui-bg-red" lay-event="querySearch"><i class="layui-icon"></i>查询</span></script><script type="text/html" id="barDemo"><a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></script></div></div></div></div></div><script th:src="@{/static/layui/layui.js}"></script><script>layui.use(['table','form'],function () {var $ = layui.$;var table = layui.table;table.render({elem: '#main-table',height: 650,url: '/owinfo/owinfoQueryPage',method: 'POST',page: true,id: 'table-load',toolbar: '#toolbarDemo',cols: [[{title: '序号',templet: '#indexTpl',width: 60,align:'center'},{field:'dname',title:'药品名称',algin:'center'},{field:'type',title:'出库/入库',algin:'center'},{field:'count',title:'数量',algin:'center'},{field:'operator',title:'操作人',algin:'center'},{field:'createtime',title:'操作时间',algin:'center',templet:"<div>{{layui.util.toDateString(d.createtime,'yyyy-MM-dd HH:mm:ss')}}</div>"},{title:'操作',align:'center',toolbar:'#barDemo',fixed:'right'}]]});//监听头工具栏事件table.on('toolbar(main-table)',function (obj) {switch (obj.event) {case 'add':layer.open({type: 2,title: '新增药品出入库信息',content: '/owinfo/owinfoPage',shade:[0.8,'#393d49'],area:['600px','530px'],btn:['确定','取消'],yes:function (index,layero) {var iframeWindow = window['layui-layer-iframe'+index];var submit = layero.find('iframe').contents().find("#LAY-front-submit");//监听提交iframeWindow.layui.form.on('submit(LAY-front-submit)',function (data) {var field = data.field;$.ajax({url: '/owinfo/owinfoAdd',data: field,async: false,cache: false,success: function (str) {if(str.code === 0){table.reload('table-load');}layer.msg(str.msg,{icon:str.icon,anim:str.anim});}});layer.close(index); //关闭弹层});submit.trigger('click');},success:function (layero,index) {}});break;case 'querySearch':var param = $('#param').val();table.reload('table-load',{where: {param: param}});$('#param').val(param);break;}});//监听编辑、删除table.on('tool(main-table)',function (obj) {var data = obj.data;switch (obj.event) {case 'edit':layer.open({type: 2,title: '编辑药品出入库信息',content: '/owinfo/owinfoQueryById?id=' +data.id,shade:[0.8,'#393d49'],area:['600px','500px'],btn:['确定','取消'],yes:function (index,layero) {var iframeWindow = window['layui-layer-iframe'+index];var submit = layero.find('iframe').contents().find("#LAY-front-submit");//监听提交iframeWindow.layui.form.on('submit(LAY-front-submit)',function (data) {var field = data.field;$.ajax({url: '/owinfo/owinfoEdit',data: field,async: false,cache: false,success: function (str) {if(str.code === 0){table.reload('table-load');}layer.msg(str.msg,{icon:str.icon,anim:str.anim});}});layer.close(index); //关闭弹层});submit.trigger('click');},success:function (layero,index) {}});break;case 'del':layer.confirm('确认要删除吗?',function (index) {$.ajax({url: '/owinfo/owinfoDelById?id=' +data.id,data: null,async: false,cache: false,success: function (str) {table.reload('table-load');layer.msg(str.msg,{icon:str.icon,anim:str.anim});}});})break;}});});</script>
</body>
</html>
4.2 药品编辑页面
owinfoPage.html
<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>药品出入库信息</title><link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all"><link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all">
</head>
<body><div class="layui-fluid"><div class="layui-card"><div class="layui-card-body" style="padding: 15px;"><form class="layui-form layui-form-pane" action=""><input name="id" th:value="${obj?.id}" class="layui-input layui-hide"/><div class="layui-form-item"><label class="layui-form-label">药品名称</label><div class="layui-input-block"><select name="dname" id="dname"></select></div></div><div class="layui-form-item"><label class="layui-form-label">出入库类型</label><div class="layui-input-block" th:style="'display:' + @{(${obj?.type != null} ? 'none' : '')} + ''"><input type="radio" name="type" value="出库" title="出库"><input type="radio" name="type" value="入库" title="入库"></div><div class="layui-input-block" th:style="'display:' + @{(${obj?.type == null} ? 'none' : '')} + ''"><input type="text" th:value="${obj?.type}" class="layui-input" disabled></div></div><div class="layui-form-item"><label class="layui-form-label">数量</label><div class="layui-input-block"><input type="text" name="count" th:value="${obj?.count}" lay-verify="required" placeholder="请输入数量" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">操作人</label><div class="layui-input-block"><input type="text" name="operator" th:value="${obj?.operator}" lay-verify="required" placeholder="请输入操作人" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item layui-hide"><input type="button" lay-submit lay-filter="LAY-front-submit" id="LAY-front-submit" value="确认"></div></form></div></div></div><script th:src="@{/static/layui/layui.js}"></script><script>layui.use(['form'],function () {var $ = layui.$;var form = layui.form;//当前药品的值var currentDname = '[[${obj?.dname}]]';//获取供应商列表$.ajax({url: '/druginfo/druginfoList',dataType:'json',type:'post',cache:false,success:function (data) {$('#dname').prepend("<option value=''>请选择</option>");for(var i=0;i<data.data.length;i++){if(data.data[i].name==currentDname){$('#dname').append("<option selected value='"+data.data[i].name+"'>"+data.data[i].name+"</option>");}else{$('#dname').append("<option value='"+data.data[i].name+"'>"+data.data[i].name+"</option>");}}form.render(); //下拉列表渲染,把内容加载进去}});});</script>
</body>
</html>
4.3 完善index左侧菜单
完善左侧页面代码,为后面提供便利
<!--左侧菜单--><div class="layui-side layui-bg-black"><!--可以滚动--><div class="layui-side-scroll"><!--lay-accordion="true" 菜单可以折叠--><ul class="layui-nav layui-nav-tree" lay-accordion="true"><li class="layui-nav-item"><a href="javascript:;" class="layui-icon layui-icon-set-fill layui-nav-item"> 药品库存管理</a><dl class="layui-nav-child"><dd><a href="#" class="site-demo-active" lay-href="/owinfo" data-id="11" data-title="登记出入库信息">登记出入库信息</a> </dd><dd><a href="#" class="site-demo-active" lay-href="/problem" data-id="12" data-title="问题药品记录">问题药品记录</a> </dd><dd><a href="#" class="site-demo-active" lay-href="/druginfo/warranty" data-id="13" data-title="药品保质期检查">药品保质期检查</a> </dd></dl></li><li class="layui-nav-item"><a href="javascript:;" class="layui-icon layui-icon-chart-screen layui-nav-item"> 药品销售管理</a><dl class="layui-nav-child"><dd><a href="#" class="site-demo-active" lay-href="/saleinfo" data-id="21" data-title="销售记录">销售记录</a> </dd><dd><a href="#" class="site-demo-active" lay-href="/returngoods" data-id="22" data-title="收到退货">收到退货</a> </dd></dl></li><li class="layui-nav-item"><a href="javascript:;" class="layui-icon layui-icon-date layui-nav-item"> 药品明细查询</a><!--二级菜单--><dl class="layui-nav-child"><dd><a href="#" class="site-demo-active" lay-href="/druginfo" data-id="1" data-title="药品信息">药品信息</a> </dd><dd><a href="#" class="site-demo-active" lay-href="/supplier" data-id="2" data-title="供应商信息">供应商信息</a> </dd><dd><a href="#" class="site-demo-active" lay-href="/returnsupplier" data-id="33" data-title="退货给供应商">退货给供应商</a> </dd><dd><a href="#" class="site-demo-active" lay-href="/billinfo" data-id="33" data-title="账单信息">账单信息</a> </dd></dl></li></ul></div></div>
4.4 运行测试
编辑药品出入库
五、药品记录管理
参考入库管理,进行修改
5.1 创建pojo实体类
Problem
package com.dh.pojo;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;import java.io.Serializable;
import java.util.Date;/*** 药品记录管理* 问题药品*/
@Data
@TableName(value = "problem")
public class Problem implements Serializable {/*主键*/@TableField(value = "id")@TableId(value = "id",type = IdType.AUTO)private Integer id;/*药品名称*/private String dname;/*问题药品数量*/private Integer dcount;/*药品单价*/private Float dprice;/*问题原因*/private String reason;/*操作时间*/private Date createtime;
}
5.2 创建mapper接口
package com.dh.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dh.pojo.Problem;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface ProblemMapper extends BaseMapper<Problem> {
}
5.3 创建Service业务层
package com.dh.service;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dh.pojo.Problem;/*** 问题药品的service接口*/
public interface ProblemService extends IService<Problem> {/*** 分页查询问题药品数据* @param pageNum 第几页* @param pageSize 每页多少条数据* @param param 查询参数-问题药品名称* @return*/public IPage<Problem> selectProblemPage(int pageNum, int pageSize, String param);/*** 新增一条问题药品信息* @param problem*/public int addProblem(Problem problem);/*** 修改一条问题药品信息* @param problem*/public int editProblem(Problem problem);/*** 根据主键id查询一个问题药品对象* @param id* @return*/public Problem queryProblemById(Integer id);/*** 根据主键id删除一个问题药品对象* @param id* @return*/public int delProblemById(Integer id);
}
实现类
package com.dh.service.Impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dh.mapper.ProblemMapper;
import com.dh.pojo.Problem;
import com.dh.service.ProblemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** 问题药品service实现类*/
@Service
public class ProblemServiceImpl extends ServiceImpl<ProblemMapper, Problem> implements ProblemService {@Autowiredprivate ProblemMapper problemMapper;/*** 分页查询问题药品数据** @param pageNum 第几页* @param pageSize 每页多少条数据* @param param 查询参数-问题药品名称* @return*/@Overridepublic IPage<Problem> selectProblemPage(int pageNum, int pageSize, String param) {QueryWrapper<Problem> queryWrapper = new QueryWrapper<>();if(StringUtils.isNotBlank(param)){queryWrapper.like("dname",param);}Page<Problem> page = new Page<>(pageNum,pageSize);return problemMapper.selectPage(page,queryWrapper);}/*** 新增一条问题药品信息** @param problem*/@Overridepublic int addProblem(Problem problem) {return problemMapper.insert(problem);}/*** 修改一条问题药品信息** @param problem*/@Overridepublic int editProblem(Problem problem) {return problemMapper.updateById(problem);}/*** 根据主键id查询一个问题药品对象** @param id* @return*/@Overridepublic Problem queryProblemById(Integer id) {return problemMapper.selectById(id);}/*** 根据主键id删除一个问题药品对象** @param id* @return*/@Overridepublic int delProblemById(Integer id) {return problemMapper.deleteById(id);}
}
5.4 创建controller控制层
package com.dh.controller;import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dh.common.ResultMapUtil;
import com.dh.pojo.Problem;
import com.dh.service.ProblemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.Date;/*** 问题药品相关的controller*/
@Controller
@RequestMapping(value = "/problem")
public class ProblemController {@Autowiredprivate ProblemService problemService;/*** 转向问题药品页面*/@RequestMappingpublic String problem(){return "/problem";}/*** 分页查询问题药品列表* value可以指定请求的参数* value = "/xxx",method = RequestMethod.POST* @param param 查询参数* @param pageNum 起始页数* @param pageSize 每页多少条数据* @return*/@RequestMapping(value = "/problemQueryPage")@ResponseBodypublic Object problemQueryPage(String param, @RequestParam(defaultValue = "1")int pageNum,@RequestParam(defaultValue = "10")int pageSize){try{//查询对应的数据IPage<Problem> iPage = problemService.selectProblemPage(pageNum,pageSize,param);//获取mysql的分页查询结果return ResultMapUtil.getHashMapMysqlPage(iPage);} catch (Exception e){//如果出错,把异常信息返回给前端return ResultMapUtil.getHashMapException(e);}}/*** 转向问题药品新增页面* @return 跳转problemPage.html*/@RequestMapping(value = "/problemPage")public String problemPage(){return "/problemPage";}/*** 添加一个问题药品*/@RequestMapping(value = "/problemAdd")@ResponseBodypublic Object problemAdd(Problem problem){try{//获取当前时间problem.setCreatetime(new Date());//新增一条出入库信息int i = problemService.addProblem(problem);//保存,并统一格式返回return ResultMapUtil.getHashMapSave(i);} catch (Exception e){//如果出错,把异常信息返回给前端return ResultMapUtil.getHashMapException(e);}}/*** 转向问题药品编辑页面* @param id 查询的id* @param model* @return*/@RequestMapping(value = "/problemQueryById")public String problemQueryById(@RequestParam(name = "id",required = true)Integer id, Model model){//根据id查询药品Problem problem = problemService.queryProblemById(id);//model调用逻辑处理model.addAttribute("obj",problem);//跳转页problemPage.htmlreturn "/problemPage";}/*** 修改一个问题药品* @param problem 实体类* @return 返回修改的数据*/@RequestMapping(value = "/problemEdit")@ResponseBodypublic Object problemEdit(Problem problem){try{//修改一条药品出入库信息int i = problemService.editProblem(problem);//保存,并统一格式返回return ResultMapUtil.getHashMapSave(i);} catch (Exception e){//如果出错,把异常信息返回给前端return ResultMapUtil.getHashMapException(e);}}/*** 删除一个问题药品* @param id 根据id删除* @return 返回删除的数据*/@RequestMapping(value = "/problemDelById")@ResponseBodypublic Object problemDelById(Integer id){try{//根据id删除数据int i = problemService.delProblemById(id);//保存,并统一格式返回return ResultMapUtil.getHashMapDel(i);} catch (Exception e){//如果出错,把异常信息返回给前端return ResultMapUtil.getHashMapException(e);}}
}
六、问题管理后台页面
6.1 编写问题页面
problem.html
<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>问题药品信息管理</title><link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all"><link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all"><script type="text/html" id="indexTpl">{{d.LAY_TABLE_INDEX+1}}</script>
</head>
<body class="layui-layout-body">
<div class="layui-fluid"><div class="layui-row layui-col-space15"><div class="layui-col-md12"><div class="layui-card"><div class="layui-card-header">问题药品信息列表</div><div class="layui-card-body"><table class="layui-hide" id="main-table" lay-filter="main-table"></table><script type="text/html" id="toolbarDemo"><span class="layui-inline" lay-event="add"><i class="layui-icon"></i> </span><span class="layui-inline" style="width: 240px;"><input class="layui-input" name="param" id="param" placeholder="根据药品名称查询" autocomplete="off"></span><span class="layui-btn layui-btn-sm layui-bg-red" lay-event="querySearch"><i class="layui-icon"></i>查询</span></script><script type="text/html" id="barDemo"><a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></script></div></div></div></div>
</div>
<script th:src="@{/static/layui/layui.js}"></script>
<script>layui.use(['table','form'],function () {var $ = layui.$;var table = layui.table;table.render({elem: '#main-table',height: 650,url: '/problem/problemQueryPage',method: 'POST',page: true,id: 'table-load',toolbar: '#toolbarDemo',cols: [[{title: '序号',templet: '#indexTpl',width: 60,align:'center'},{field:'dname',title:'药品名称',algin:'center'},{field:'dcount',title:'问题药品数量',algin:'center'},{field:'dprice',title:'药品单价',algin:'center'},{field:'createtime',title:'操作时间',algin:'center',templet:"<div>{{layui.util.toDateString(d.createtime,'yyyy-MM-dd HH:mm:ss')}}</div>"},{title:'操作',align:'center',toolbar:'#barDemo',fixed:'right'}]]});//监听头工具栏事件table.on('toolbar(main-table)',function (obj) {switch (obj.event) {case 'add':layer.open({type: 2,title: '新增问题药品信息',content: '/problem/problemPage',shade:[0.8,'#393d49'],area:['600px','530px'],btn:['确定','取消'],yes:function (index,layero) {var iframeWindow = window['layui-layer-iframe'+index];var submit = layero.find('iframe').contents().find("#LAY-front-submit");//监听提交iframeWindow.layui.form.on('submit(LAY-front-submit)',function (data) {var field = data.field;$.ajax({url: '/problem/problemAdd',data: field,async: false,cache: false,success: function (str) {if(str.code === 0){table.reload('table-load');}layer.msg(str.msg,{icon:str.icon,anim:str.anim});}});layer.close(index); //关闭弹层});submit.trigger('click');},success:function (layero,index) {}});break;case 'querySearch':var param = $('#param').val();table.reload('table-load',{where: {param: param}});$('#param').val(param);break;}});//监听编辑、删除table.on('tool(main-table)',function (obj) {var data = obj.data;switch (obj.event) {case 'edit':layer.open({type: 2,title: '编辑问题药品信息',content: '/problem/problemQueryById?id=' +data.id,shade:[0.8,'#393d49'],area:['600px','500px'],btn:['确定','取消'],yes:function (index,layero) {var iframeWindow = window['layui-layer-iframe'+index];var submit = layero.find('iframe').contents().find("#LAY-front-submit");//监听提交iframeWindow.layui.form.on('submit(LAY-front-submit)',function (data) {var field = data.field;$.ajax({url: '/problem/problemEdit',data: field,async: false,cache: false,success: function (str) {if(str.code === 0){table.reload('table-load');}layer.msg(str.msg,{icon:str.icon,anim:str.anim});}});layer.close(index); //关闭弹层});submit.trigger('click');},success:function (layero,index) {}});break;case 'del':layer.confirm('确认要删除吗?',function (index) {$.ajax({url: '/problem/problemDelById?id=' +data.id,data: null,async: false,cache: false,success: function (str) {table.reload('table-load');layer.msg(str.msg,{icon:str.icon,anim:str.anim});}});})break;}});});
</script>
</body>
</html>
6.2 编写问题编辑页面
problemPage.html
<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>问题药品信息</title><link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all"><link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all">
</head>
<body>
<div class="layui-fluid"><div class="layui-card"><div class="layui-card-body" style="padding: 15px;"><form class="layui-form layui-form-pane" action=""><input name="id" th:value="${obj?.id}" class="layui-input layui-hide"/><div class="layui-form-item"><label class="layui-form-label">药品名称</label><div class="layui-input-block"><select name="dname" id="dname"></select></div></div><div class="layui-form-item"><label class="layui-form-label">药品数量</label><div class="layui-input-block"><input type="text" name="dcount" th:value="${obj?.dcount}" lay-verify="required" placeholder="请输入数量" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">药品单价</label><div class="layui-input-block"><input type="text" name="dprice" th:value="${obj?.dprice}" lay-verify="required" placeholder="请输入药品单价" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">问题原因</label><div class="layui-input-block"><textarea name="reason" th:text="${obj?.reason}" lay-verify="required" placeholder="请输入问题原因" autocomplete="off" class="layui-textarea"></textarea></div></div><div class="layui-form-item layui-hide"><input type="button" lay-submit lay-filter="LAY-front-submit" id="LAY-front-submit" value="确认"></div></form></div></div>
</div>
<script th:src="@{/static/layui/layui.js}"></script>
<script>layui.use(['form'],function () {var $ = layui.$;var form = layui.form;//当前药品的值var currentDname = '[[${obj?.dname}]]';//获取供应商列表$.ajax({url: '/druginfo/druginfoList',dataType:'json',type:'post',cache:false,success:function (data) {$('#dname').prepend("<option value=''>请选择</option>");for(var i=0;i<data.data.length;i++){if(data.data[i].name==currentDname){$('#dname').append("<option selected value='"+data.data[i].name+"'>"+data.data[i].name+"</option>");}else{$('#dname').append("<option value='"+data.data[i].name+"'>"+data.data[i].name+"</option>");}}form.render(); //下拉列表渲染,把内容加载进去}});});
</script>
</body>
</html>
6.3 运行测试
七、药品保质期检查
7.1 跳转药品保质期页面
DruginfoController
/*** 转向药品保质期检查页面*/@RequestMapping(value = "/warranty")public String warranty(){return "/warranty";}
7.2 编写药品保质期页面
warranty.html
<!DOCTYPE html>
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>药品保质期检查</title><link rel="stylesheet" th:href="@{/static/layui/css/layui.css}" media="all"><link rel="stylesheet" th:href="@{/static/admin/style.css}" media="all"><script type="text/html" id="indexTpl">{{d.LAY_TABLE_INDEX+1}}</script>
</head>
<body class="layui-layout-body"><div class="layui-fluid"><div class="layui-row layui-col-space15"><div class="layui-col-md12"><div class="layui-card"><div class="layui-card-header">药品保质期检查</div><div class="layui-card-body"><table class="layui-hide" id="main-table" lay-filter="main-table"></table><script type="text/html" id="toolbarDemo"><span class="layui-inline" lay-event="add"><i class="layui-icon"></i> </span><span class="layui-inline" style="width: 240px;"><input class="layui-input" name="param" id="param" placeholder="根据药品名称查询" autocomplete="off"></span><span class="layui-btn layui-btn-sm layui-bg-red" lay-event="querySearch"><i class="layui-icon"></i>查询</span></script></div></div></div></div></div><script th:src="@{/static/layui/layui.js}"></script><script>layui.use(['table','form'],function () {var $ = layui.$;var table = layui.table;table.render({elem: '#main-table',height: 650,url: '/druginfo/druginfoQueryPage',method: 'POST',page: true,id: 'table-load',toolbar: '#toolbarDemo',cols: [[{title: '序号',templet: '#indexTpl',width: 60,align:'center'},{field:'name',title:'药品名称',algin:'center'},{field:'warrenty',title:'保质期(月)',algin:'center'},{field:'producttime',title:'生产时间',algin:'center',templet:"<div>{{layui.util.toDateString(d.producttime,'yyyy-MM-dd')}}</div>"},{field:'createtime',title:'当前时间',algin:'center',templet:"<div>{{layui.util.toDateString(d.createtime,'yyyy-MM-dd')}}</div>"},{title:'是否过期',align:'center',templet: isWarranty}]]});//监听头工具栏事件table.on('toolbar(main-table)',function (obj) {switch (obj.event) {case 'querySearch':var param = $('#param').val();table.reload('table-load',{where: {param: param}});$('#param').val(param);break;}});//计算药品是否过期function isWarranty(d) {//生产日期debuggervar p_time = d.producttime;p_time = p_time.split('-');p_time = parseInt(p_time[0])*12 + parseInt(p_time[1]);//获取当前时间var date = new Date();var year = date.getFullYear();var month = date.getMonth() + 1;var now_year_month = year*12 + month;var m = now_year_month - (p_time + parseInt(d.warrenty));if(m>=1){return "<span style='color:red'>已过期" + m +"个月</span>";}else if(m==0){return "<span style='color:#ffab00'>保质期不满一个月</span>";}else{return "<span style='color:green;'>未过期,剩余" + Math.abs(m) +"个月</span>";}}});</script>
</body>
</html>
7.3运行测试