kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java
New file @@ -0,0 +1,91 @@ package com.kidgrow.usercenter.vo; import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> * * @Description: <br> * @Project: <br> * @CreateDate: Created in 2020/04/14 11:06 <br> * @Author: <a href="411269194@kidgrow.com">liuke</a> */ @Data @NoArgsConstructor @AllArgsConstructor public class HospitalListVo extends Model<HospitalListVo> { private static final long serialVersionUID = 1L; /** * 医院id */ private Long hospitalId; /** * 医院名称 同组织名字 */ private String hospitalName; /** * 组织ID */ private Long orgId; /** * 区号 */ private String hospitalCode; /** * 医院电话 */ private String hospitalTel; /** * 医院联系人 */ private String hospitalLink; /** * 所在省 */ private String hospitalProvince; /** * 所在城市 */ private String hospitalCity; /** * 所在区域 */ private String hospitalArea; /** * 负责的销售代表 */ private Long serverUserId; /** * 销售代表的名字 */ private String serverUserName; /** * 科室id */ private Long departmentId; /** * 科室/部门名称 同组织名称 */ private String departmentName; /** * 医院状态 */ private Integer hospitalState; /** * 是否筛查医院 */ private Integer isScreen; /** * 是否医医院 */ private Integer isAnswer; /** * 医院数据创建时间 */ private Date createTime; } kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysHospitalMapper.java
@@ -1,8 +1,9 @@ package com.kidgrow.usercenter.mapper; import com.kidgrow.usercenter.model.SysHospital; import com.kidgrow.db.mapper.SuperMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.db.mapper.SuperMapper; import com.kidgrow.usercenter.model.SysHospital; import com.kidgrow.usercenter.vo.HospitalListVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -26,9 +27,18 @@ List<SysHospital> findList(Page<SysHospital> page, @Param("p") Map<String, Object> params); /** * 医院信息列表 * @param page * @param params * @return */ List<HospitalListVo> findHospitalList(Page<HospitalListVo> page, @Param("p") Map<String, Object> params); /** * 根据SysHospital对象当做查询条件进行查询 * @param * @return SysHospital对象 */ SysHospital findByObject(@Param("p") SysHospital sysHospital); } kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysHospitalService.java
@@ -4,6 +4,7 @@ import com.kidgrow.usercenter.model.SysHospital; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.service.ISuperService; import com.kidgrow.usercenter.vo.HospitalListVo; import java.util.Map; @@ -22,8 +23,12 @@ * @return */ PageResult<SysHospital> findList(Map<String, Object> params); /** * 列表 * @param params * @return */ PageResult<HospitalListVo> findHospitalList(Map<String, Object> params); /** * 根据SysHospital对象当做查询条件进行查询 * @param sysHospital kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java
@@ -1,19 +1,19 @@ package com.kidgrow.usercenter.service.impl; import com.kidgrow.common.model.ResultBody; import org.springframework.stereotype.Service; import com.kidgrow.common.model.PageResult; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.model.ResultBody; import com.kidgrow.common.service.impl.SuperServiceImpl; import com.kidgrow.usercenter.mapper.SysHospitalMapper; import com.kidgrow.usercenter.model.SysHospital; import com.kidgrow.usercenter.service.ISysHospitalService; import com.kidgrow.usercenter.vo.HospitalListVo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; import org.apache.commons.collections4.MapUtils; import lombok.extern.slf4j.Slf4j; import com.kidgrow.usercenter.model.SysHospital; import com.kidgrow.usercenter.mapper.SysHospitalMapper; import com.kidgrow.usercenter.service.ISysHospitalService; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> @@ -37,6 +37,17 @@ List<SysHospital> list = baseMapper.findList(page, params); return PageResult.<SysHospital>builder().data(list).code(0).count(page.getTotal()).build(); } /** * 列表 * @param params * @return */ @Override public PageResult<HospitalListVo> findHospitalList(Map<String, Object> params) { Page<HospitalListVo> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit")); List<HospitalListVo> list = baseMapper.findHospitalList(page, params); return PageResult.<HospitalListVo>builder().data(list).code(0).count(page.getTotal()).build(); } /** * 根据SysHospital对象当做查询条件进行查询 @@ -53,4 +64,5 @@ List<SysHospital> sysHospitals = baseMapper.selectByMap(params); return ResultBody.ok().data(sysHospitals).msg("查询成功"); } } kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysHospitalMapper.xml
@@ -129,4 +129,56 @@ <include refid="where"/> order by id desc </select> <sql id="whereList"> <where> DEP.is_del = 0 AND HOS.is_del = 0 <if test="p.isScreen != null and p.isScreen !=''"> and is_screen = #{p.isScreen} </if> <if test="p.isAnswer != null and p.isAnswer !=''"> and is_answer = #{p.isAnswer} </if> <if test="p.hospitalState != null and p.hospitalState !=''"> and hospital_state = #{p.hospitalState} </if> <if test="p.hospitalProvince != null and p.hospitalProvince !=''"> and hospital_province = #{p.hospitalProvince} </if> <if test="p.hospitalCity != null and p.hospitalCity !=''"> and hospital_city = #{p.hospitalCity} </if> <if test="p.hospitalArea != null and p.hospitalArea !=''"> and hospital_area = #{p.hospitalArea} </if> <if test="p.hospitalName != null and p.hospitalName !=''"> and hospital_name LIKE concat('%',#{p.hospitalName},'%') </if> </where> </sql> <select id="findHospitalList" resultType="com.kidgrow.usercenter.vo.HospitalListVo"> SELECT DEP.department_name, DEP.id department_id, DEP.server_user_name, DEP.server_user_id, DEP.org_id, HOS.id hospital_id, HOS.hospital_name, HOS.hospital_code, HOS.hospital_province, HOS.hospital_city, HOS.hospital_area, HOS.hospital_tel, HOS.hospital_state, HOS.hospital_link, HOS.is_screen, HOS.is_answer, HOS.create_time FROM sys_department DEP LEFT JOIN sys_hospital HOS ON DEP.hospital_id = HOS.id <include refid="whereList"/> order by create_time desc </select> </mapper> kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysHospitalController.java
@@ -1,28 +1,25 @@ package com.kidgrow.usercenter.controller; import java.util.Map; import com.kidgrow.common.controller.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.*; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.model.ResultBody; import com.kidgrow.usercenter.model.SysHospital; import com.kidgrow.usercenter.service.ISysHospitalService; import com.kidgrow.usercenter.vo.HospitalListVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import com.kidgrow.usercenter.model.SysHospital; import com.kidgrow.usercenter.service.ISysHospitalService; import com.kidgrow.common.model.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; /** @@ -44,18 +41,34 @@ /** * 列表 */ @ApiOperation(value = "查询列表/单表") @ApiImplicitParams({ @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"), @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") }) @GetMapping("/findOne") public PageResult<SysHospital> listOne(@RequestParam Map<String, Object> params) { if(params.size()==0){ params.put("page",1); params.put("limit",10); } return sysHospitalService.findList(params); } /** * 列表 */ @ApiOperation(value = "查询列表") @ApiImplicitParams({ @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"), @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") }) @GetMapping public PageResult<SysHospital> list(@RequestParam Map<String, Object> params) { public PageResult<HospitalListVo> list(@RequestParam Map<String, Object> params) { if(params.size()==0){ params.put("page",1); params.put("limit",10); } return sysHospitalService.findList(params); return sysHospitalService.findHospitalList(params); } @PostMapping("findAll") @ApiOperation(value = "查询所有列表") kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/area.js
New file @@ -0,0 +1,64 @@ /** * 省市区3级联动使用说明: * 1.在页面的layui.use中装载模块 area * 2,定义调用变量 var area=layui.area; * 3.装载省数据 area.areaData("#province",1,"",""); * 4.省联动装载市区: * //装载市区数据 form.on("select(province)",function(data){ area.areaData("#city",2,data.value,""); }); * 5.市联动装载区县 //装载区县数据 form.on("select(city)",function(data){ area.areaData("#areas",3,data.value,""); }); 具体使用见 system/hospital.html */ layui.define(['form', 'config', 'admin', 'layer'], function (exports) { //var config = layui.config; var form = layui.form; var layer = layui.layer; var admin = layui.admin; var area = { //4个参数依次是 下拉控件的id,/区域级别(1.2.3)/上级id/选中id areaData: function (domId, levelType, parentId, selectValue) { if (levelType == 1) { parentId = 100000; } admin.req('api-user/sysarea/getListByMap', { area_leveltype: levelType, area_parent_id: parentId }, function (data) { if (0 === data.code) { $(domId).empty(); let selected = ""; clientsAll = data.data; if (clientsAll.length > 0) { switch (levelType) { case 1: $(domId).append("<option value='' selected='selected'>选择省</option>"); break; case 2: $(domId).append("<option value='' selected='selected'>选择市</option>"); break; case 3: $(domId).append("<option value='' selected='selected'>选择区县</option>"); break; } $.each(clientsAll, function (index, item) { if (selectValue == item.id) { selected = "selected='selected'"; } else { selected = ""; } //往下拉菜单里添加元素 $(domId).append("<option value='" + item.id + "' " + selected + ">" + item.areaName + "</option> "); }) } //必须加这个刷新form! form.render(); } else { layer.msg(data.msg, { icon: 2, time: 1000 }); } }, 'GET'); } } exports('area', area); }) kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/feedback.html
@@ -148,6 +148,5 @@ } table.reload('feedback-table', { where: { doctorName: doctorName, createTime: datebegin, updateTime: dateend } }); }); }); </script> kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
@@ -8,229 +8,147 @@ </div> <div class="layui-card-body"> <div class="layui-form toolbar"> <input id="app-edit-search" class="layui-input search-input" type="text" placeholder="请输入标题" />  <input type="text" class="layui-input search-input" id="test1"> 至 <input type="text" class="layui-input search-input" id="test2">   <select id="role_clients" placeholder="选择一个应用" lay-filter="role_clients"> <option value="">-请选择-</option> <select id="province" placeholder="省份" lay-filter="province"> </select> <button id="app-btn-search" class="layui-btn icon-btn"><i class="layui-icon"></i>搜索</button> <select id="city" placeholder="市" lay-filter="city"> <option value="">选择市</option> </select> <select id="areas" placeholder="区县" lay-filter="areas"> <option value="">选择区县</option> </select> <select id="isscreen" placeholder="选择筛查状态" lay-filter="isscreen"> <option value="">-是否筛查-</option> <option value="1">-是-</option> <option value="0">-否-</option> </select>   <!-- <select id="isanswer" placeholder="选择医答状态" lay-filter="isanswer"> <option value="">-是否医答-</option> <option value="1">-是-</option> <option value="0">-否-</option> </select>   --> <select id="hospitalstate" placeholder="选择医院状态" lay-filter="hospitalstate"> <option value="">-医院状态-</option> <option value="0">试用</option> <option value="1">正式</option> </select>   <input id="hospitalName" class="layui-input search-input" type="text" placeholder="按医院名" />  <button id="hospita-btn-search" class="layui-btn icon-btn"><i class="layui-icon"></i>搜索</button> </div> <!-- 数据表格 --> <table class="layui-table" id="app-table" lay-filter="app-table"></table> <table class="layui-table" id="hospital-table" lay-filter="hospital-table"></table> </div> </div> <!-- 表格操作列 --> <script type="text/html" id="businessRecords-table-bar"> <select> <option></option </select> <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看详情</a> <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a> <a class="layui-btn layui-btn-xs" lay-event="reset">重置密码</a> <a class="layui-btn layui-btn-xs" lay-event="pay">充值</a> <a class="layui-btn layui-btn-xs" lay-event="del">删除</a> </script> <!-- 表单弹窗 --> <script type="text/html" id="app-model"> <form id="app-form" lay-filter="app-form" class="layui-form model-form"> <input name="id" type="hidden"/> <div class="layui-form-item"> <label class="layui-form-label">记录标题</label> <div class="layui-input-block"> <input name="recordTitle" disabled="true" type="text" class="layui-input" maxlength="20" lay-verify="required" required/> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">操作人姓名</label> <div class="layui-input-block"> <input name="userName" disabled="true" placeholder="请输入应用名称" type="text" class="layui-input" maxlength="20"/> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">应用名称</label> <div class="layui-input-block"> <input name="appName" disabled="true" type="text" class="layui-input" maxlength="20" lay-verify="required" required /> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">ip</label> <div class="layui-input-block"> <input name="recordIp" disabled="true" type="text" class="layui-input" maxlength="20"/> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">业务操作记录</label> <div class="layui-input-block"> <input name="recordDetail" disabled="true" type="text" class="layui-input" maxlength="20"/> </div> </div> <div class="layui-form-item model-form-footer"> <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">确定</button> </div> </form> </script> <script> layui.use(['form', 'table', 'laydate', 'util', 'config', 'admin'], function () { layui.use(['form', 'table', 'laydate', 'util', 'config', 'admin', 'area'], function () { var form = layui.form; var table = layui.table; var config = layui.config; var layer = layui.layer; var util = layui.util; var admin = layui.admin; // 获取应用列表 // layer.load(2); admin.req('api-user/users/findAll', {}, function (data) { layer.closeAll('loading'); if (0 === data.code) { let selected = false; clientsAll = data.data; $.each(data.data, function (index, item) { if (config.clientId === item.clientId) { selected = true; } else { selected = false; } //往下拉菜单里添加元素 $('#role_clients').append(new Option(item.username, item.id, false, selected)); }) form.render(); } else { layer.msg(data.msg, { icon: 2, time: 500 }); } }, 'Post'); //时间格式 var laydate = layui.laydate; //执行一个laydate实例 laydate.render({ elem: '#test1' //指定元素 }); laydate.render({ elem: '#test2' //指定元素 }); var area = layui.area; // 渲染表格 table.render({ elem: '#app-table', elem: '#hospital-table', url: config.base_server + 'api-user/syshospital', method: 'GET', headers: { 'Authorization': 'Bearer ' + config.getToken().access_token }, page: true, cols: [[ { type: 'numbers' }, { field: 'hospitalName', width: 180, sort: true, title: '医院名称' }, { field: 'hospitalTypeName', width: 200, sort: true, title: '科室' }, { field: 'serverUserName', width: 180, sort: true, title: '联系人' }, { field: 'hospitalTel', width: 300, sort: true, title: '联系方式' }, { field: 'time', width: 300, sort: true, title: '服务到期时间' }, { field: 'enabled', width: 300, sort: true, title: '状态' ,templet:function (d) { return d.hospitalState==0?"试用":"正式" }}, { field: 'isScreen', width: 300, sort: true, title: '筛查',templet:function (d) { return d.isScreen?"是":"否" } }, { field: 'createTime', width: 300, sort: true, title: '创建时间', templet: "<div>{{layui.util.toDateString(d.createTime, 'yyyy/MM/dd')}}</div>" }, { field: 'id', width: 250, align: 'center', toolbar: '#businessRecords-table-bar', sort: true, title: '操作' },// 0就诊数据 1筛查 ]] }); { field: 'hospitalName', width: 250, title: '医院名称' }, { field: 'departmentName', width: 100, title: '科室' }, { field: 'hospitalArea', width: 200, title: '所在地区', templet: function (d) { return ((d.hospitalProvince==null)?"":d.hospitalProvince) + " " + ((d.hospitalCity==null)?"":d.hospitalCity) + " " + ((d.hospitalArea==null)?"":d.hospitalArea) } }, { field: 'hospitalLink', width: 100, title: '联系人' }, { field: 'hospitalTel', width: 150, title: '联系方式' }, { field: 'enabled', width: 100, sort: true, title: '状态', templet: function (d) { return d.hospitalState == 0 ? "试用" : "正式" } }, { field: 'isScreen', width: 100, sort: true, title: '筛查', templet: function (d) { return d.isScreen ? "是" : "否" } }, // { field: 'isAnswer', width: 100, sort: true, title: '医答',templet:function (d) { // return d.isScreen?"是":"否" // } }, { field: 'serverUserName', width: 150, title: '服务人员' }, { field: 'createTime', width: 150, sort: true, title: '创建时间', templet: "<div>{{layui.util.toDateString(d.createTime, 'yyyy/MM/dd')}}</div>" }, { field: 'hospitalId', width: 250, align: 'center', toolbar: '#businessRecords-table-bar', sort: true, title: '操作' } ]], done: function () { } }); //省份数据加载 area.areaData("#province", 1, "", ""); // 工具条点击事件 table.on('tool(app-table)', function (obj) { table.on('tool(hospital-table)', function (obj) { var data = obj.data; var layEvent = obj.event; if (layEvent === 'detail') { // 查看详情 showEditModel(data); } }); // 搜索按钮点击事件 $('#app-btn-search').click(function () { var userId = $('#role_clients').val(); var key = $('#app-edit-search').val(); var startTime = $('#test1').val(); var endTime = $('#test2').val(); if (startTime != null && endTime != null) { var flag = compareDate(startTime, endTime); if (!flag) { layer.msg('结束时间不得小于开始时间'); return; } } $('#hospita-btn-search').click(function () { var isscreen = $('#isscreen').val(); var isanswer = $('#isanswer').val(); var hospitalstate = $('#hospitalstate').val(); var hospitalName = $('#hospitalName').val(); table.reload('app-table', { where: { recordTitle: key, startTime: startTime, endTime: endTime, userId: userId } }); }); //比较日期大小 function compareDate(logintime, logouttime) { var arys1 = new Array(); var arys2 = new Array(); if (logintime != null && logouttime != null) { arys1 = logintime.split('-'); var logindate = new Date(arys1[0], parseInt(arys1[1] - 1), arys1[2]); arys2 = logouttime.split('-'); var logoutdate = new Date(arys2[0], parseInt(arys2[1] - 1), arys2[2]); if (logindate > logoutdate) { return false; } else { return true; } } } // 导出 $('#app-btn-export').click(function () { var url = config.base_server + 'api-user/dataneed/export'; var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); xhr.responseType = "blob"; xhr.setRequestHeader("client_type", "DESKTOP_WEB"); xhr.setRequestHeader("Authorization", "Bearer " + config.getToken().access_token); xhr.onload = function () { if (this.status == 200) { var fileName = "user.xlsx"; var blob = this.response; var a = document.createElement('a'); a.innerHTML = fileName; // 指定生成的文件名 a.download = fileName; a.href = URL.createObjectURL(blob); document.body.appendChild(a); var evt = document.createEvent("MouseEvents"); evt.initEvent("click", false, false); a.dispatchEvent(evt); document.body.removeChild(a); } } xhr.send(); var hospitalProvince = ($("#province").val()!="")?$('#province option:selected').text():""; var hospitalCity = ($("#city").val()!="")?$('#city option:selected').text():""; var hospitalArea = ($("#areas").val()!="")?$('#areas option:selected').text():""; var whereModel = { isScreen: isscreen, isAnswer: isanswer, hospitalState: hospitalstate, hospitalName: hospitalName, hospitalProvince: hospitalProvince, hospitalCity: hospitalCity, hospitalArea: hospitalArea }; table.reload('hospital-table', { where: whereModel }); }); // // 显示编辑弹窗 var showEditModel = function (data) { layer.open({ type: 1, title: '查看详情', area: '450px', offset: '120px', content: $('#app-model').html(), success: function () { $('#app-form')[0].reset(); $('#app-form').attr('method', 'POST'); if (data) { $("input[name='clientId']").attr('disabled', true); $("input[name='clientId']").attr('class', "layui-input layui-disabled"); $("input[name='webServerRedirectUri']").attr('disabled', true); $("input[name='webServerRedirectUri']").attr('class', "layui-input layui-disabled"); form.val('app-form', data); // $('#app-form').attr('method', 'POST'); } } }); }; //装载市区数据 form.on("select(province)", function (data) { $("#city").empty(); $("#areas").empty(); area.areaData("#city", 2, data.value, ""); }); //装载区县数据 form.on("select(city)", function (data) { $("#areas").empty(); area.areaData("#areas", 3, data.value, ""); }); }); </script>