kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrder.java
@@ -11,6 +11,7 @@ import lombok.NoArgsConstructor; import org.hibernate.validator.constraints.NotEmpty; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import java.util.Date; @@ -63,6 +64,10 @@ */ @NotEmpty(message = "合同名称不能为空") private String contractTitle; @NotNull(message = "合同名数量不能为空") @Min(1) private Integer contractNum; /** * 合同开始时间 */ kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrderDetail.java
@@ -50,10 +50,14 @@ @NotEmpty(message = "产品/明细名称不能为空") private String proName; /** * 产品类型 0试用 1正式 * 产品类型 0试用 1正式 3 自定义 */ @NotNull(message = "产品类型不能为空") private Integer proType; /** * 产品使用期限限制 1有限制,0 无限制 */ private Integer termType; /** * 是否共享 0否 1是 */ @@ -66,10 +70,21 @@ @NotEmpty(message = "是否删除,1删除,0未删除不能为空") private Boolean isDel; /** * 产品的读片总量 */ @NotNull(message = "产品的读片总量") private Integer orderAilightCount; /** * 产品的报告总量 */ @NotNull(message = "产品的报告总量") private Integer orderRecordCount; /** * 读片量 */ @NotNull(message = "读片量不能为空") private Integer ailightCount; /** * 报告量 */ kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java
@@ -143,5 +143,6 @@ * @return */ int getUserdProduct(Long hospitalId,Long departmentId); } kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java
@@ -13,8 +13,10 @@ import com.kidgrow.oprationcenter.model.ConsumptionRecord; import com.kidgrow.oprationcenter.model.ProductOrder; import com.kidgrow.oprationcenter.model.ProductOrderDetail; import com.kidgrow.oprationcenter.model.SysProduct; import com.kidgrow.oprationcenter.service.IProductOrderDetailService; import com.kidgrow.oprationcenter.service.IProductOrderService; import com.kidgrow.oprationcenter.service.ISysProductService; import com.kidgrow.oprationcenter.vo.*; import com.kidgrow.redis.util.RedisUtils; import com.kidgrow.usercenter.feign.SysDoctorService; @@ -52,6 +54,8 @@ @Autowired private IProductOrderService iProductOrderService; @Autowired private ISysProductService productService; @Autowired private RedisUtils redisUtils; /** * 列表 @@ -62,6 +66,15 @@ public PageResult<ProductOrderDetail> findList(Map<String, Object> params){ Page<ProductOrderDetail> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit")); List<ProductOrderDetail> list = baseMapper.findList(page, params); for (ProductOrderDetail productOrderDetail : list) { if(productOrderDetail.getOrderAilightCount()==null){ SysProduct byId = productService.getById(productOrderDetail.getProId()); if(byId!=null){ productOrderDetail.setOrderAilightCount(byId.getAilightCount()); productOrderDetail.setOrderRecordCount(byId.getRecordCount()); } } } return PageResult.<ProductOrderDetail>builder().data(list).code(0).count(page.getTotal()).build(); } /** kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java
@@ -4,6 +4,7 @@ import com.kidgrow.common.constant.CommonConstant; import com.kidgrow.common.controller.BaseController; import com.kidgrow.common.model.*; import com.kidgrow.common.utils.DateUtils; import com.kidgrow.oprationcenter.model.HospitalInfo; import com.kidgrow.oprationcenter.model.ProductOrder; import com.kidgrow.oprationcenter.model.ProductOrderDetail; @@ -30,9 +31,7 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.*; /** @@ -440,4 +439,26 @@ List<OrderChartVo> orderChartVo=productOrderDetailService.proCountChart(); return ResultBody.ok().data(orderChartVo).msg("数据获取成功!") ; } /** * 获取软件服务周期 和 读片总量 * */ @ApiOperation(value = "获取软件服务周期") @GetMapping("/getContractBeginEndTimeAndNum") public ResultBody getContractBeginEndTimeAndNum(@RequestParam("departmentId") Long departmentId) { Map<String,Object> map = new HashMap<>(); map.put("department_id",departmentId); map.put("enabled",true); map.put("is_del",false); List<ProductOrder> productOrders = productOrderService.listByMap(map); IntSummaryStatistics intSummaryStatistics = productOrders.stream().filter(a-> a.getContractNum()!=null).mapToInt((x) -> x.getContractNum()).summaryStatistics(); Date minDate = productOrders.stream().map(e -> e.getContractBeginTime()).min((e1, e2) -> e1.compareTo(e2)).get(); Date manDate = productOrders.stream().map(e -> e.getContractEndTime()).max((e1, e2) -> e1.compareTo(e2)).get(); map = new HashMap<>(); map.put("count", intSummaryStatistics.getSum()); map.put("beginTime",DateUtils.formatDate(minDate,"yyyy-MM-dd HH:mm:ss")); map.put("endTime",DateUtils.formatDate(manDate,"yyyy-MM-dd HH:mm:ss")); return ResultBody.ok().data(map); } } kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/controller/OAuth2Controller.java
@@ -120,6 +120,7 @@ oAuth2Authentication.setAuthenticated(true); ResponseUtil.responseSucceed(objectMapper, response, oAuth2AccessToken); } catch (BadCredentialsException | InternalAuthenticationServiceException e) { e.printStackTrace(); exceptionHandler(response, badCredenbtialsMsg); } catch (Exception e) { exceptionHandler(response, e); kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/contract.html
@@ -10,18 +10,23 @@ <div class="layui-form toolbar"> <div class="layui-form-item"> <div class="layui-inline" style="margin-bottom: -25px;">  <input id="hospital-search-value" class="layui-input search-input" type="text" placeholder="按医院名" autocomplete="off" width="400px" /></div>  <button id="contract-btn-search" class="layui-btn icon-btn permissions" permissions="contract-list" style="margin-bottom: -25px;"><i class="layui-icon"></i>搜索</button> <input id="hospital-search-value" class="layui-input search-input" type="text" placeholder="按医院名" autocomplete="off" width="400px" /></div>  <button id="contract-btn-search" class="layui-btn icon-btn permissions" permissions="contract-list" style="margin-bottom: -25px;"><i class="layui-icon"></i>搜索</button> </div> <table class="layui-table" id="contract-table" lay-filter="contract-table"></table> </div></div> </div> </div> </div> </div> <input id="hospitalId" type="hidden" /> <!-- 表格操作列 --> <script type="text/html" id="contract-table-bar"> <a class="layui-btn layui-btn-danger layui-btn-xs permissions" permissions="contract-del" lay-event="del">删除</a> <a class="layui-btn layui-btn-primary layui-btn-xs permissions" permissions="productorderdetail-save" lay-event="detail">查看套餐</a> <!-- <a class="layui-btn layui-btn-danger layui-btn-xs permissions" permissions="contract-del" lay-event="del">删除</a> --> <a class="layui-btn layui-btn-xs permissions" permissions="contract-edit" lay-event="edit"">修改</a> <a class=" layui-btn layui-btn-primary layui-btn-xs permissions" permissions="productorderdetail-save" lay-event="detail">查看套餐</a> </script> <!-- 表格状态列 --> <script type="text/html" id="contract-tpl-state"> @@ -68,23 +73,34 @@ { field: 'departmentName', width: 200, title: '科室名称' }, { field: 'contractNo', width: 150, title: '合同编号' }, { field: 'contractTitle', width: 200, title: '合同名' }, { field: 'contractBeginTime', width: 120, title: '合同生效时间',templet:function(d) { field: 'contractBeginTime', width: 120, title: '合同生效时间', templet: function (d) { return new Date(d.contractBeginTime).dateFormat("yyyy/MM/dd"); } }, { field: 'contractEndTime', width: 120, title: '合同到期时间',templet:function(d){ { field: 'contractEndTime', width: 120, title: '合同到期时间', templet: function (d) { return new Date(d.contractEndTime).dateFormat("yyyy/MM/dd"); } }, { field: 'contractTime', width: 120, title: '合同签订时间',templet:function(d){ } }, { field: 'contractTime', width: 120, title: '合同签订时间', templet: function (d) { if(d.contractTime==null){ return new Date(d.createTime).dateFormat("yyyy/MM/dd"); } return new Date(d.contractTime).dateFormat("yyyy/MM/dd"); } }, } }, // { field: 'enabled', width: 120, templet: '#contract-tpl-state', sort: true, title: '状态' }, { field: 'createTime', width: 160, title: '创建时间' , templet: function (d) { { field: 'createTime', width: 160, title: '创建时间', templet: function (d) { return new Date(d.createTime).dateFormat("yyyy-MM-dd hh:mm"); }}, { align: 'center', width: 150, toolbar: '#contract-table-bar', title: '操作', fixed: 'right'} } }, { align: 'center', width: 150, toolbar: '#contract-table-bar', title: '操作', fixed: 'right' } ]], done:function(res){ permissionsInput(res,config); @@ -107,8 +123,11 @@ }, 'DELETE'); }); } else { else if (obj.event === 'edit') { //修改 updateModel(obj.data); } else if (obj.event === 'detail') { //充值记录列表 showModel(obj.data.id); } }); @@ -116,15 +135,15 @@ // 搜索按钮点击事件 $('#contract-btn-search').click(function () { var hospitalName = $('#hospital-search-value').val(); if(strUtil.isEmpty(hospitalName)) { if (strUtil.isEmpty(hospitalName)) { $("#hospitalId").val(""); } table.reload('contract-table', { where: { hospitalId: $("#hospitalId").val()}, page: { curr: 1 } }); } }); }); var showModel=function(orderId){ @@ -148,25 +167,42 @@ { field: 'proName', width: 300, title: '产品名称' }, { field: 'ailightCount', width: 150, title: '读片量' }, { field: 'recordCount', width: 100, title: '报告量' }, { field: 'isShare', width: 150, title: '是否共享',templet:function(d) { field: 'isShare', width: 150, title: '是否共享', templet: function (d) { if(d.isShare) return '共享' else return '私有' } }, { field: 'proBegintime', width: 150, title: '开始时间',templet:function(d){ { field: 'proBegintime', width: 150, title: '开始时间', templet: function (d) { return new Date(d.proBegintime).dateFormat("yyyy/MM/dd"); } }, { field: 'proEndtime', width: 180, title: '结束时间',templet:function(d){ } }, { field: 'proEndtime', width: 180, title: '结束时间', templet: function (d) { return new Date(d.proEndtime).dateFormat("yyyy/MM/dd"); } }, } }, { field: 'createTime', width: 160, sort: true, title: '创建时间' } ]] }); } }); } var updateModel = function (data) { //修改充值记录 admin.putTempData("t_hospital", data); admin.popupCenter({ title: '修改合同', path: 'pages/opration/rechargeupdate.html', area: '1200px', offset: '0px', finish: function () { $('#hospita-btn-search').click(); } }); } }); </script> kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html
@@ -289,7 +289,6 @@ // 表单提交事件 form.on('submit(user-form-submit)', function (data) { debugger data.field.hospitalId = $("#hospitalId").val(); if (data.field.roleId != null && data.field.roleId != "") { data.field.roles = data.field.roleId.split(','); kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
@@ -223,7 +223,7 @@ } }); } else if(layEvent=="health"){ //充值 //运动处方服务 admin.putTempData("t_hospital", data); admin.popupCenter({ title: '运动处方服务', kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html
@@ -36,7 +36,7 @@ <div class="layui-form-item" style="padding: 0; margin-bottom: 0px;"> <div class="layui-row"> <div class="layui-col-sm5"> <label class="layui-form-label" style="padding: 0 30px 0 0;">地区</label> <label class="layui-form-label" style="padding: 0 20px 0 0;">地区</label> <input name="hospitalAreas" id="hospitalAreas" type="text" style="border: none; width: 250px; margin-top:-10px" readonly class="layui-input" /> </div> @@ -58,42 +58,78 @@ </div> <div class="layui-form-item" style="padding: 0; margin-bottom: 0px;"> <div class="layui-row"> <div class="layui-col-sm4"> <div class="layui-col-sm6"> <label class="layui-form-label" style="padding: 10px 30px 0 0px;">合同名称</label> <div class="layui-input-block"> <input name="contractTitle" id="contractTitle" type="text" class="layui-input" maxlength="50" lay-verify="required" required autocomplete="off" /> maxlength="50" lay-verify="required" required autocomplete="off" style="display: inline-block;width: 80%;" /> </div> </div> <div class="layui-col-sm3"> <div class="layui-col-sm6"> <label class="layui-form-label">合同编号</label> <div class="layui-input-block"> <input name="contractNo" id="contractNo" type="text" class="layui-input" maxlength="50" style="width: 185px;" autocomplete="off" lay-verify="required" required /> maxlength="50" autocomplete="off" lay-verify="required" required style="display: inline-block;width: 80%;" /> </div> </div> </div> </div> <div class="layui-form-item" style="margin: 10px 0px 0px 0px;"> <div class="layui-row"> <div class="layui-col-sm4"> <label class="layui-form-label" style="padding: 10px 30px 0 0px;">开始日期</label> <input autocomplete="off" name="contractBeginTime" id="contractBeginTime" type="text" class="layui-input" style="width: 182px;" maxlength="50" lay-verify="required" required /> </div> <div class="layui-col-sm4"> <label class="layui-form-label">截止日期</label> <div class="layui-col-sm6"> <label class="layui-form-label">当前软件服务周期:</label> <div class="layui-input-block"> <input autocomplete="off" name="contractEndTime" id="contractEndTime" type="text" class="layui-input" maxlength="50" lay-verify="required" required /> <input autocomplete="off" name="contractBeginTime_not" disabled id="contractBeginTime_not" type="text" placeholder="请输开始时间" class="layui-input" maxlength="50" readonly style="border: none; display: inline-block;width: 40%;" /> <input autocomplete="off" name="contractEndTime_not" disabled id="contractEndTime_not" type="text" placeholder="请输入结束时间" class="layui-input" maxlength="50" readonly style="border: none; display: inline-block;width: 40%;" /> </div> </div> <div class="layui-col-sm4"> <div class="layui-col-sm6"> <label class="layui-form-label">当前读片总量:</label> <div class="layui-input-inline"> <input autocomplete="off" name="contractNum_not" id="contractNum_not" disabled type="text" class="layui-input" maxlength="50" readonly style="border: none;" /> </div> </div> <!-- <div class="layui-col-sm6"> <label class="layui-form-label">签订日期</label> <div class="layui-input-block"> <input autocomplete="off" name="contractTime" id="contractTime" type="text" class="layui-input" maxlength="50" lay-verify="required" required /> </div> </div> --> </div> </div> <div class="layui-form-item" style="margin: 10px 0px 0px 0px;"> <div class="layui-row"> <div class="layui-col-sm6"> <label class="layui-form-label">合同服务周期:</label> <!-- <input autocomplete="off" name="contractBeginTime" id="contractBeginTime" type="text" class="layui-input" maxlength="50" lay-verify="required" required /> --> <!-- <input autocomplete="off" name="contractEndTime" id="contractEndTime" type="text" class="layui-input" maxlength="50" lay-verify="required" required /> --> <div class="layui-input-block"> <input autocomplete="off" name="contractBeginTime" id="contractBeginTime" type="text" placeholder="请输开始时间" class="layui-input" maxlength="50" lay-verify="required" required style="display: inline-block;width: 40%;" /> <input autocomplete="off" name="contractEndTime" id="contractEndTime" type="text" placeholder="请输入结束时间" class="layui-input" maxlength="50" lay-verify="required" required style="display: inline-block;width: 40%;" /> </div> </div> <div class="layui-col-sm6"> <label class="layui-form-label">合同读片充值量:</label> <div class="layui-input-inline"> <input autocomplete="off" name="contractNum" id="contractNum" onkeyup="this.value=this.value.replace(/[^\d]/g,'') " type="text" class="layui-input" maxlength="50" lay-verify="required" required /> </div> </div> @@ -105,12 +141,67 @@ <div class="layui-tab" style="margin: 0px;"> <ul class="layui-tab-title"> <li class="layui-this">产品信息</li> <li class="layui-this">套餐列表</li> <li>自定义充值</li> </ul> <div class="layui-tab-content" style="margin: -10px 0px -10px 0px;"> <div class="layui-tab-item layui-show" style="padding-top: 0px;"> <table class="layui-table" id="product-table" lay-filter="product-table" style="margin: 0px;"> </table> </div> <div class="layui-tab-item"> <div class="layui-form-item" style="margin: 10px 0px 0px 0px;"> <div class="layui-row"> <div class="layui-col-sm12"> <label class="layui-form-label">充值名称:</label> <div class="layui-input-inline"> <input autocomplete="off" id="custom_proName" type="text" class="layui-input" maxlength="50" lay-verify="required" required /> </div> </div> </div> </div> <div class="layui-form-item" style="margin: 10px 0px 0px 0px;"> <div class="layui-row"> <div class="layui-col-sm6"> <label class="layui-form-label">读片充值量:</label> <div class="layui-input-inline"> <input autocomplete="off" id="custom_ailightCount" onkeyup="this.value=this.value.replace(/[^\d]/g,'') " type="text" class="layui-input" maxlength="50" lay-verify="required" required /> </div> </div> <div class="layui-col-sm6"> <div class="layui-input-inline"> <input type="radio" id="custom_isShare" name="gongxiang" value="1" title="是否共享" /> </div> </div> </div> </div> <div class="layui-form-item" style="margin: 10px 0px 0px 0px;"> <div class="layui-row"> <div class="layui-col-sm12"> <div class="layui-input-inline" style="width: 160px;text-align: right;"> <input type="radio" id="termType" name="termType" value="true" checked title="期限限制" /> </div> <div class="layui-col-sm4" style="margin-right: 30px;"> <input autocomplete="off" id="custom_beginTime" type="text" placeholder="请输开始时间" class="layui-input" maxlength="50" /> </div> <div class="layui-col-sm4 "> <input autocomplete="off" type="text" placeholder="请输入结束时间" id="custom_endTime" class="layui-input" maxlength="50" /> </div> </div> </div> </div> <div class="layui-form-item"> <div class="layui-input-block" style="text-align: right;padding-right: 100px;padding-top: 50px;"> <input class="layui-btn" type="button" id="custom_submit" value="确定" /> </div> </div> </div> </div> </div> @@ -151,28 +242,106 @@ <input type="checkbox" lay-filter="product-tpl-isShare" value="{{d.id}}" lay-skin="switch" lay-text="共享|不共享" /> </script> <script> layui.use(['form', 'table', 'util', 'config', 'laydate', 'admin'], function () { layui.use(['form', 'table', 'util', 'config', 'laydate', 'jquery', 'admin'], 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; // element=layui.element; var $ = layui.jquery; var laydate = layui.laydate; var contractNum = 0; //充值进行中 var isRun = false; //执行一个laydate实例 laydate.render({ elem: '#contractBeginTime' //指定元素 var contractBeginTime= laydate.render({ elem: '#contractBeginTime', //指定元素 done: function (value, date, endDate) { var startDate = new Date(value).getTime(); var endTime = new Date($('#contractEndTime').val()).getTime(); if (endTime < startDate) { layer.msg('结束时间不能小于开始时间'); $('#contractBeginTime').val($('#contractEndTime').val()); } else { $('#custom_beginTime').val($("#contractBeginTime").val()) custom_beginTimes.config.min = { year: date.year, month: date.month - 1,//关键 date: date.date, hours: date.hours, minutes: date.minutes, seconds: date.seconds } } } }); var contractEndTime = laydate.render({ elem: '#contractEndTime', //指定元素 // min: $("#contractEndTime_not").val(), done: function (value, date, endDate) { var startDate = new Date($('#contractBeginTime').val()).getTime(); var endTime = new Date(value).getTime(); if (endTime < startDate) { layer.msg('结束时间不能小于开始时间'); $('#contractEndTime').val($('#contractBeginTime').val()); } else { $('#custom_endTime').val($("#contractEndTime").val()) custom_endTimes.config.max = { year: date.year, month: date.month - 1,//关键 date: date.date, hours: date.hours, minutes: date.minutes, seconds: date.seconds } var begin = new Date($("#contractBeginTime").val()) custom_endTimes.config.min = { year: layui.util.toDateString(begin, "yyyy"), month: layui.util.toDateString(begin, "MM") - 1,//关键 date: layui.util.toDateString(begin, "dd"), hours: layui.util.toDateString(begin, "HH"), minutes: layui.util.toDateString(begin, "mm"), seconds: layui.util.toDateString(begin, "ss") } } } }); laydate.render({ elem: '#contractEndTime' //指定元素 elem: '#contractBeginTime_not' //指定元素 }); laydate.render({ elem: '#contractTime', //指定元素 value: new Date().dateFormat("yyyy-MM-dd") elem: '#contractEndTime_not' //指定元素 }); var custom_beginTimes = laydate.render({ elem: '#custom_beginTime', //指定元素 // min: $("#contractEndTime").val(), // man: $("#contractBeginTime").val(), done: function (value, date, endDate) { var startDate = new Date(value).getTime(); var endTime = new Date($('#custom_endTime').val()).getTime(); if (endTime < startDate) { layer.msg('结束时间不能小于开始时间'); $('#custom_beginTime').val($('#custom_endTime').val()); } } }); var custom_endTimes = laydate.render({ elem: '#custom_endTime', //指定元素 // min: $("#contractEndTime").val(), // man: $("#contractBeginTime").val(), done: function (value, date, endDate) { var startDate = new Date($('#custom_beginTime').val()).getTime(); var endTime = new Date(value).getTime(); if (endTime < startDate) { layer.msg('结束时间不能小于开始时间'); $('#custom_endTime').val($('#custom_beginTime').val()); } } }); //现将临时数据清理 admin.putTempData("t_tempProduct", ""); @@ -220,6 +389,7 @@ return d.proTime + "年"; break; } return ""; } }, { @@ -271,6 +441,34 @@ ] }); } //获取软件的服务周期 var getCycleTime = function (departmentId) { admin.req('api-opration/productorderdetail/getContractBeginEndTimeAndNum', { departmentId: departmentId }, function (data) { if (data.code == 0) { $("#contractBeginTime_not").val(layui.util.toDateString(data.data.beginTime, "yyyy-MM-dd")); $("#contractEndTime_not").val(layui.util.toDateString(data.data.endTime, "yyyy-MM-dd")); contractBeginTime.config.max = { year: layui.util.toDateString(data.data.beginTime, "yyyy"), month: layui.util.toDateString(data.data.beginTime, "MM") - 1,//关键 date: layui.util.toDateString(data.data.beginTime, "dd"), hours: layui.util.toDateString(data.data.beginTime, "HH"), minutes: layui.util.toDateString(data.data.beginTime, "mm"), seconds: layui.util.toDateString(data.data.beginTime, "ss") } contractEndTime.config.min = { year: layui.util.toDateString(data.data.endTime, "yyyy"), month: layui.util.toDateString(data.data.endTime, "MM") - 1,//关键 date: layui.util.toDateString(data.data.endTime, "dd"), hours: layui.util.toDateString(data.data.endTime, "HH"), minutes: layui.util.toDateString(data.data.endTime, "mm"), seconds: layui.util.toDateString(data.data.endTime, "ss") } $("#contractNum_not").val(data.data.count); } }, "get") } //回显医院基本数据 let hospitalData = admin.getTempData('t_hospital'); @@ -288,9 +486,11 @@ }); } else { form.val('recharge-form', hospitalData); $("#hospitalAreas").val(hospitalData.hospitalProvince + " " + hospitalData .hospitalCity + " " + hospitalData.hospitalArea); var hospitalProvince = hospitalData.hospitalProvince != null ? hospitalData.hospitalProvince : ""; var hospitalCity = hospitalData.hospitalCity != null ? hospitalData.hospitalCity : ""; var hospitalArea = hospitalData.hospitalArea != null ? hospitalData.hospitalArea : ""; // console.log(hospitalProvince + " " + hospitalCity + " " +hospitalArea) $("#hospitalAreas").val(hospitalProvince + " " + hospitalCity + " " + hospitalArea); //装载产品数据 table.render({ @@ -397,8 +597,7 @@ }); } } else { else { admin.finishPopupCenter(); layer.msg("验证医院科室数据异常!", { icon: 2, @@ -406,9 +605,77 @@ }); } }, 'get'); //报告数量事件 $("#contractNum").blur(function () { if ($("#contractNum").val() <= 0) { layer.msg("输入的读片量大于0"); $("#contractNum").val("") return false; } var listData = admin.getTempData("t_tempProduct"); var listNum = 0; if (!strUtil.isEmpty(listData)) { listData.forEach(item => { listNum += item.ailightCount; }) } if ($("#contractNum").val() < listNum) { layer.msg("请先删除待充值套餐"); $("#contractNum").val(contractNum) return false; } else { contractNum = $("#contractNum").val(); } }) //自定义的确定 $("#custom_submit").click(function () { var custom_proName = $("#custom_proName").val() var custom_ailightCount = $("#custom_ailightCount").val() var custom_isShare = $("#custom_isShare").prop("checked") ? 1 : 0; var termType = $("#termType").prop("checked") ? 1 : 0; var custom_beginTime = ""; var custom_endTime = ""; if (termType == 1) { custom_beginTime = $("#custom_beginTime").val(); custom_endTime = $("#custom_endTime").val(); } else { custom_beginTime = $("#contractBeginTime").val(); custom_endTime = $("#contractEndTime").val(); } var listData = admin.getTempData("t_tempProduct"); //添加一个id,删除用 var max = 0; if (strUtil.isEmpty(listData)) { listData = new Array(); } listData.forEach(element => { if (max < element.id) { max = element.id } }); //判断待加入产品的总数是否大于合同的总数 var msg = isthenNum(parseInt(custom_ailightCount)); if (msg != null) { layer.msg(msg); return false; } var data = { id: max + 1, ailightCount: parseInt(custom_ailightCount), beginTime: custom_beginTime, endTime: custom_endTime, isShare: custom_isShare, proName: custom_proName, proTime: "", proType: 1, termType: termType } tempDataList(data); waitRecharge(); }) getCycleTime(hospitalData.departmentId); } //待充值列表功能操作 table.on('tool(product-table-temp)', function (obj) { if (obj.event === "del") { @@ -455,6 +722,15 @@ "td[data-field='endTime'] div").text(); data.isShare = obj.tr.find("td[data-field='isShare'] em").text(); data.isShare = (data.isShare.indexOf("不") == 0) ? 0 : 1; //判断待加入产品的总数是否大于合同的总数 //试用产品不计算总数 if (data.proType == 1) { var msg = isthenNum(data.ailightCount); if (msg != null) { layer.msg(msg); return false; } } if (!strUtil.isEmpty(data.beginTime) && !strUtil.isEmpty(data.endTime)) { if (dateUtil.compareDate(data.endTime, data.beginTime)) { data.id=data.id+''; @@ -470,6 +746,28 @@ } } }); function isthenNum(num) { if (num <= 0) { return "请输入读片量大于0"; } var listData = admin.getTempData("t_tempProduct"); var listNum = 0; if (!strUtil.isEmpty(listData)) { listData.forEach(item => { listNum += item.ailightCount; }) } listNum += num; if ($("#contractNum").val() == undefined || $("#contractNum").val() == "") { return "请输入读片量!"; } else { if ($("#contractNum").val() < listNum) { return "当前产品总数不得大于合同总量"; } else { return null; } } } //监听单元格编辑 判断日期格式 table.on('edit(product-table)', function (obj) { var value = obj.value //得到修改后的值 @@ -515,13 +813,13 @@ if (strUtil.isEmpty(listData)) { listData = new Array(); } $.each(listData, function (index, value) { if (value.id === data.id) { //移除 listData.splice(index, 1); return false; } }) // $.each(listData, function (index, value) { // if (value.id === data.id) { // //移除 // listData.splice(index, 1); // return false; // } // }) listData.push(data); admin.putTempData("t_tempProduct", listData); } else { @@ -556,7 +854,10 @@ " 00:00:00"; data.field.contractEndTime = data.field.contractEndTime + " 23:59:59"; data.field.contractTime = data.field.contractTime + " 00:00:00"; // data.field.contractTime = data.field.contractTime + " 00:00:00"; delete data.field.contractNum_not delete data.field.contractBeginTime_not delete data.field.contractEndTime_not admin.req('api-opration/contract', JSON.stringify(data.field), function (data) { layer.closeAll('loading'); @@ -567,16 +868,19 @@ $.each(listData, function (index, item) { var detailData = { orderId: orderData.id+'', proId: item.id+'', proId: item.termType == null ? item.id + '' : "0", proType: item.proType, proName: item.proName, isShare: item.isShare, ailightCount: item.ailightCount, recordCount: item.recordCount, proBegintime: item.beginTime + ' 00:00:00', proEndtime: item.endTime + ' 23:59:59' ailightCount: item.ailightCount != null ? item.ailightCount : 0, recordCount: item.recordCount != null ? item.recordCount : 0, termType: item.termType, proBegintime: item.beginTime != "" ? item.beginTime + ' 00:00:00' : "", proEndtime: item.endTime != "" ? item.endTime + ' 23:59:59' : "", orderAilightCount: item.ailightCount, orderRecordCount: item.recordCount != null ? item.recordCount : 0, }; listDetailData.push(detailData); }) @@ -642,3 +946,12 @@ }); }); </script> <style> .layui-form-label { width: 140px; } .layui-input-block { margin-left: 160px; } </style> kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/rechargeupdate.html
New file @@ -0,0 +1,1061 @@ <form id="recharge-form" lay-filter="recharge-form" class="layui-form"> <div style="overflow-y: auto; height:700px;"> <div class="layui-tab"> <ul class="layui-tab-title"> <li class="layui-this">合同信息</li> </ul> <div class="layui-tab-content" style="margin: 0px 0px -10px 0px;"> <div class="layui-tab-item layui-show"> <div class="layui-form-item" style="margin-bottom: 10px;"> <div class="layui-row"> <div class="layui-col-sm5"> <label class="layui-form-label" style="padding: 0;">医院名称</label> <div class="layui-input-block"> <input name="hospitalName" id="hospitalName" type="text" class="layui-input" style="border: none; margin-top:-10px" readonly /> </div> </div> <div class="layui-col-sm3"> <label class="layui-form-label" style="padding: 0;">科室名称</label> <div class="layui-input-block"> <input name="departmentName" id="departmentName" style="border: none; margin-top:-10px" readonly class="layui-input" /> </div> </div> <div class="layui-col-sm2"> <label class="layui-form-label" style="padding: 0;">服务人员</label> <div class="layui-input-block"> <input name="serverUserName" id="serverUserName" style="border: none; margin-top:-10px;width: 120px;" readonly class="layui-input" /> </div> </div> </div> </div> <div class="layui-form-item" style="margin-bottom: 10px;"> <div class="layui-row"> <div class="layui-col-sm5"> <label class="layui-form-label" style="padding: 0;">地区</label> <div class="layui-input-block"> <input name="hospitalAreas" id="hospitalAreas" type="text" style="border: none; margin-top:-10px" readonly class="layui-input" /> </div> </div> <div class="layui-col-sm3"> <label class="layui-form-label" style="padding: 0;">联系电话</label> <div class="layui-input-block"> <input name="hospitalTel" id="hospitalTel" type="text" class="layui-input" style="border: none; margin-top:-10px" readonly /> </div> </div> <div class="layui-col-sm2"> <label class="layui-form-label" style="padding: 0;">联系人</label> <div class="layui-input-block"> <input name="hospitalLink" type="text" class="layui-input" style="border: none; margin-top:-10px;" readonly /> </div> </div> </div> </div> <div class="layui-form-item" style="margin-bottom: 10px;"> <div class="layui-row"> <div class="layui-col-sm6"> <label class="layui-form-label" style="padding: 0;">合同名称</label> <div class="layui-input-block"> <input name="contractTitle" id="contractTitle" type="text" class="layui-input" readonly style="border: none; margin-top:-10px" /> </div> </div> <div class="layui-col-sm6"> <label class="layui-form-label" style="padding: 0;">合同编号</label> <div class="layui-input-block"> <input name="contractNo" id="contractNo" type="text" class="layui-input" style="border: none; margin-top:-10px" readonly /> </div> </div> </div> </div> <div class="layui-form-item" style="margin-bottom: 10px;"> <div class="layui-row"> <div class="layui-col-sm6"> <label class="layui-form-label" style="padding: 0;">软件服务周期:</label> <!-- <div class="layui-col-sm3" style="margin-right: 30px;"> <input autocomplete="off" name="contractBeginTime" id="contractBeginTime" type="text" placeholder="请输开始时间" class="layui-input" readonly style="border: none; margin-top:-10px"/> </div> <div class="layui-col-sm3"> <input autocomplete="off" name="contractEndTime" id="contractEndTime" type="text" placeholder="请输入结束时间" class="layui-input" readonly style="border: none; margin-top:-10px" /> </div> --> <div class="layui-input-block"> <input autocomplete="off" name="contractBeginTime" id="contractBeginTime" type="text" placeholder="请输开始时间" disabled class="layui-input" readonly style="border: none; margin-top:-10px;display: inline-block;width: 46%;" /> <input autocomplete="off" name="contractEndTime" disabled id="contractEndTime" type="text" placeholder="请输入结束时间" class="layui-input" readonly style="border: none; margin-top:-10px;display: inline-block;width: 46%;" /> </div> </div> <div class="layui-col-sm3"> <label class="layui-form-label" style="padding: 0;">合同充值总量:</label> <div class="layui-input-block"> <input autocomplete="off" name="contractNum" id="contractNum" onkeyup="this.value=this.value.replace(/[^\d]/g,'') " type="text" class="layui-input" readonly style="border: none; margin-top:-10px" /> </div> </div> <div class="layui-col-sm3"> <label class="layui-form-label" style="padding: 0;">未充值量:</label> <div class="layui-input-block"> <span name="contractNum"></span> <input autocomplete="off" name="contractNum_not" id="contractNum_not" onkeyup="this.value=this.value.replace(/[^\d]/g,'') " type="text" class="layui-input" readonly style="border: none; margin-top:-10px" /> </div> </div> </div> </div> </div> </div> </div> <div class="layui-tab" style="margin: 0px;"> <ul class="layui-tab-title"> <li class="layui-this">已充值产品</li> </ul> <div class="layui-tab-content" style="margin: -10px 0px -10px 0px;"> <div class="layui-tab-item layui-show" style="padding-top: 0px;"> <table class="layui-table" id="product-table-now" lay-filter="product-table-now" style="margin: 0px;"> </table> </div> </div> </div> <div class="layui-tab" style="margin: 0px;"> <ul class="layui-tab-title"> <li class="layui-this">套餐列表</li> <li>自定义充值</li> </ul> <div class="layui-tab-content" style="margin: -10px 0px -10px 0px;"> <div class="layui-tab-item layui-show" style="padding-top: 0px;"> <table class="layui-table" id="product-table" lay-filter="product-table" style="margin: 0px;"> </table> </div> <div class="layui-tab-item"> <div class="layui-form-item" style="margin: 10px 0px 0px 0px;"> <div class="layui-row"> <div class="layui-col-sm12"> <label class="layui-form-label">充值名称:</label> <div class="layui-input-inline"> <input autocomplete="off" id="custom_proName" type="text" class="layui-input" maxlength="50" lay-verify="required" required /> </div> </div> </div> </div> <div class="layui-form-item" style="margin: 10px 0px 0px 0px;"> <div class="layui-row"> <div class="layui-col-sm6"> <label class="layui-form-label">读片充值量:</label> <div class="layui-input-inline"> <input autocomplete="off" id="custom_ailightCount" onkeyup="this.value=this.value.replace(/[^\d]/g,'') " type="text" class="layui-input" maxlength="50" lay-verify="required" required /> </div> </div> <div class="layui-col-sm6"> <div class="layui-input-inline"> <input type="radio" id="custom_isShare" name="gongxiang" value="1" title="是否共享" /> </div> </div> </div> </div> <div class="layui-form-item" style="margin: 10px 0px 0px 0px;"> <div class="layui-row"> <div class="layui-col-sm12"> <div class="layui-input-inline" style="width: 120px;text-align: right;"> <input type="radio" id="termType" name="termType" value="true" checked title="期限限制" /> </div> <div class="layui-col-sm4" style="margin-right: 30px;"> <input autocomplete="off" id="custom_beginTime" type="text" placeholder="请输开始时间" class="layui-input" maxlength="50" /> </div> <div class="layui-col-sm4 "> <input autocomplete="off" type="text" placeholder="请输入结束时间" id="custom_endTime" class="layui-input" maxlength="50" /> </div> </div> </div> </div> <div class="layui-form-item"> <div class="layui-input-block" style="text-align: right;padding-right: 100px;padding-top: 50px;"> <input class="layui-btn" type="button" id="custom_submit" value="确定" /> </div> </div> </div> </div> </div> <div class="layui-tab" style="margin: 0px;"> <ul class="layui-tab-title"> <li class="layui-this">待充值产品</li> </ul> <div class="layui-tab-content" style="margin: -10px 0px -10px 0px;"> <div class="layui-tab-item layui-show" style="padding-top: 0px;"> <table class="layui-table" id="product-table-temp" lay-filter="product-table-temp" style="margin: 0px;"> </table> </div> </div> </div> </div> <div class="layui-form-item model-form-footer" style="margin-right: 20px;"> <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button> <button class="layui-btn permissions" permissions="product-rechage" lay-submit id="submit">确定充值</button> </div> <input type="hidden" value="" id="departmentId" name="departmentId" /> <input type="hidden" value="" id="hospitalId" name="hospitalId" /> <input type="hidden" value="" id="orgId" name="orgId" /> <input type="hidden" value="" id="serverUserId" name="serverUserId" /> </form> <!-- 表格操作列 --> <script type="text/html" id="product-tpl-bar-now"> {{# if (d.ailightCount !=d.orderAilightCount){}} {{# if (d.enabled){}} <a class="layui-btn layui-btn-xs" lay-event="order_detail_enable">禁用</a> {{# } else { }} <a class="layui-btn layui-btn-disabled" >禁用</a> {{#}}} {{# } else { }} <a class="layui-btn layui-btn-xs" lay-event="order_detail_del">删除</a> {{#}}} </script> <!-- 表格状态列 --> <script type="text/html" id="product-tpl-bar-state"> <input type="checkbox" value="{{d.id}}" lay-skin="switch" lay-text="正常|锁定" disabled {{d.enabled==true?'checked':''}} class="permissions" permissions="doctortemplete-enable"/> </script> <!-- 表格操作列 --> <script type="text/html" id="product-tpl-bar"> <a class="layui-btn layui-btn-xs" lay-event="pay">加入待充值</a> </script> <!-- 表格操作列 --> <script type="text/html" id="product-tpl-bar-temp"> <a class="layui-btn layui-btn-danger" lay-event="del">移除</a> </script> <!-- 表格状态列 --> <script type="text/html" id="product-tpl-isShare"> <input type="checkbox" lay-filter="product-tpl-isShare" value="{{d.id}}" lay-skin="switch" lay-text="共享|不共享" /> </script> <script> layui.use(['form', 'table', 'util', 'config', 'laydate', 'jquery', 'admin'], 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; // element=layui.element; var $ = layui.jquery; var laydate = layui.laydate; var contractNum = 0; //充值进行中 var isRun = false; //执行一个laydate实例 var contractBeginTime= laydate.render({ elem: '#contractBeginTime', //指定元素 done: function (value, date, endDate) { var startDate = new Date(value).getTime(); var endTime = new Date($('#contractEndTime').val()).getTime(); if (endTime < startDate) { layer.msg('结束时间不能小于开始时间'); $('#contractBeginTime').val($('#contractEndTime').val()); } else { $('#custom_beginTime').val($("#contractBeginTime").val()) custom_beginTimes.config.min = { year: date.year, month: date.month - 1,//关键 date: date.date, hours: date.hours, minutes: date.minutes, seconds: date.seconds } } } }); var contractEndTime = laydate.render({ elem: '#contractEndTime', //指定元素 // min: $("#contractEndTime_not").val(), done: function (value, date, endDate) { var startDate = new Date($('#contractBeginTime').val()).getTime(); var endTime = new Date(value).getTime(); if (endTime < startDate) { layer.msg('结束时间不能小于开始时间'); $('#contractEndTime').val($('#contractBeginTime').val()); } else { $('#custom_endTime').val($("#contractEndTime").val()) custom_endTimes.config.max = { year: date.year, month: date.month - 1,//关键 date: date.date, hours: date.hours, minutes: date.minutes, seconds: date.seconds } var begin = new Date($("#contractBeginTime").val()) custom_endTimes.config.min = { year: layui.util.toDateString(begin, "yyyy"), month: layui.util.toDateString(begin, "MM") - 1,//关键 date: layui.util.toDateString(begin, "dd"), hours: layui.util.toDateString(begin, "HH"), minutes: layui.util.toDateString(begin, "mm"), seconds: layui.util.toDateString(begin, "ss") } } } }); laydate.render({ elem: '#contractBeginTime_not' //指定元素 }); laydate.render({ elem: '#contractEndTime_not' //指定元素 }); var custom_beginTimes = laydate.render({ elem: '#custom_beginTime', //指定元素 // min: $("#contractEndTime").val(), // man: $("#contractBeginTime").val(), done: function (value, date, endDate) { var startDate = new Date(value).getTime(); var endTime = new Date($('#custom_endTime').val()).getTime(); if (endTime < startDate) { layer.msg('结束时间不能小于开始时间'); $('#custom_beginTime').val($('#custom_endTime').val()); } } }); var custom_endTimes = laydate.render({ elem: '#custom_endTime', //指定元素 // min: $("#contractEndTime").val(), // man: $("#contractBeginTime").val(), done: function (value, date, endDate) { var startDate = new Date($('#custom_beginTime').val()).getTime(); var endTime = new Date(value).getTime(); if (endTime < startDate) { layer.msg('结束时间不能小于开始时间'); $('#custom_endTime').val($('#custom_beginTime').val()); } } }); //现将临时数据清理 admin.putTempData("t_tempProduct", ""); //待充值列表 var waitRecharge = function () { table.render({ elem: '#product-table-temp', data: admin.getTempData("t_tempProduct"), page: false, cellMinWidth: 100, cols: [ [{ field: 'proName', width: 330, title: '产品名称', align: 'center', fixed: 'left' }, { field: 'proType', align: 'center', width: 80, templet: function (d) { if (d.proType === 0) return "试用" else return "正式" }, title: '类型' }, { field: 'proTime', width: 100, title: '时长', align: 'center', templet: function (d) { switch (d.proTimeUnit) { case 0: return d.proTime + "天"; break; case 1: return d.proTime + "月"; break; case 2: return d.proTime + "年"; break; } return ""; } }, { field: 'ailightCount', width: 100, align: 'center', title: '读片量' }, { field: 'recordCount', width: 100, align: 'center', title: '报告量' }, { field: 'beginTime', align: 'center', width: 120, title: '开始日期' }, { field: 'endTime', align: 'center', width: 120, title: '结束日期' }, { field: 'isShare', fixed: 'right', align: 'center', width: 100, templet: function (d) { if (d.isShare == 0) return "不共享" else return "共享" }, title: '共享' }, { field: 'id', fixed: 'right', align: 'center', width: 100, toolbar: '#product-tpl-bar-temp', title: '操作' } ] ] }); } //待充值列表 var nowContract = function () { table.render({ elem: '#product-table-now', data: admin.getTempData("t_tempProduct"), page: false, url: config.base_server + 'api-opration/productorderdetail?orderId=' + admin.getTempData('t_hospital').id, cellMinWidth: 100, headers: { 'Authorization': 'Bearer ' + config.getToken().access_token }, cols: [ [{ field: 'proName', width: 200, title: '产品名称', align: 'center', fixed: 'left' }, { field: 'proType', align: 'center', width: 80, templet: function (d) { if (d.proType === 0) return "试用" else return "正式" }, title: '类型' }, { field: 'createTime', width: 180, title: '充值时间', align: 'center' }, { field: 'ailightCount', width: 100, align: 'center', title: '读片剩余量' }, { field: 'orderAilightCount', width: 100, align: 'center', title: '读片使用量', templet: function (d) { // if(d.orderAilightCount==null){ // return ""; // } return d.orderAilightCount - d.ailightCount; } }, { field: 'proBegintime', align: 'center', width: 180, title: '开始日期', templet: function (d) { return layui.util.toDateString(d.proBegintime, 'yyyy-MM-dd'); } }, { field: 'proEndtime', align: 'center', width: 180, title: '结束日期', templet: function (d) { return layui.util.toDateString(d.proEndtime, 'yyyy-MM-dd'); } }, { field: 'enabled', align: 'center', width: 100, templet: '#product-tpl-bar-state', title: '状态' }, { field: 'isShare', fixed: 'right', align: 'center', width: 100, templet: function (d) { if (d.isShare == 0) return "不共享" else return "共享" }, title: '共享' }, { field: 'id', fixed: 'right', align: 'center', width: 100, toolbar: '#product-tpl-bar-now', title: '操作' } ], ], done: function (res, curr, count) { //如果是异步请求数据方式,res即为你接口返回的信息。 //如果是直接赋值的方式,res即为:{data: [], count: 99} data为当前页数据、count为数据总长度 var num = 0; res.data.forEach(element => { if(element.proType==1){ if (element.enabled) { num += element.orderAilightCount; } else { num += (element.orderAilightCount - element.ailightCount) } } }); $("#contractNum_not").val($("#contractNum").val() - num); } }); } // 产品待充值数据 var tempDataList = function (data) { if (!strUtil.isEmpty(data)) { var listData = admin.getTempData("t_tempProduct"); if (strUtil.isEmpty(listData)) { listData = new Array(); } listData.push(data); admin.putTempData("t_tempProduct", listData); } else { admin.putTempData("t_tempProduct", ""); } } //获取医院的地址 var getHospitalAddress=function(id){ admin.req('api-user/syshospital/' + id, {}, function (data) { if(data.code==0){ var hospitalData=data.data; var hospitalProvince=hospitalData.hospitalProvince!=null ? hospitalData.hospitalProvince: "" var hospitalCity=hospitalData.hospitalCity!=null ? hospitalData.hospitalCity: "" var hospitalArea=hospitalData.hospitalArea!=null ? hospitalData.hospitalArea: "" $("#hospitalAreas").val(hospitalProvince + " " + hospitalCity + " " +hospitalArea); } },"get") } //获取软件的服务周期 var getCycleTime=function(departmentId){ admin.req('api-opration/productorderdetail/getContractBeginEndTimeAndNum' , {departmentId: departmentId}, function (data) { if(data.code==0){ $("#contractBeginTime").val(layui.util.toDateString(data.data.beginTime,"yyyy-MM-dd")); $("#contractEndTime").val( layui.util.toDateString(data.data.endTime,"yyyy-MM-dd")); $("#contractNum").val(data.data.count); contractBeginTime.config.max = { year: layui.util.toDateString(data.data.beginTime, "yyyy"), month: layui.util.toDateString(data.data.beginTime, "MM") - 1,//关键 date: layui.util.toDateString(data.data.beginTime, "dd"), hours: layui.util.toDateString(data.data.beginTime, "HH"), minutes: layui.util.toDateString(data.data.beginTime, "mm"), seconds: layui.util.toDateString(data.data.beginTime, "ss") } contractEndTime.config.min = { year: layui.util.toDateString(data.data.endTime, "yyyy"), month: layui.util.toDateString(data.data.endTime, "MM") - 1,//关键 date: layui.util.toDateString(data.data.endTime, "dd"), hours: layui.util.toDateString(data.data.endTime, "HH"), minutes: layui.util.toDateString(data.data.endTime, "mm"), seconds: layui.util.toDateString(data.data.endTime, "ss") } } },"get") } //回显医院基本数据 let hospitalData = admin.getTempData('t_hospital'); if (hospitalData != null) { nowContract(); admin.req('api-user/sysdepartment/getPayMes?departmentId=' + hospitalData.departmentId, {}, function (data) { layer.closeAll('loading'); if (0 === data.code) { queryData = data.data; if (queryData === true) { admin.finishPopupCenter(); layer.msg("当前科室开通了单次支付功能,不能进行充值业务!", { icon: 3, time: 5000 }); } else { hospitalData.contractBeginTime = layui.util.toDateString(hospitalData.contractBeginTime, 'yyyy-MM-dd') hospitalData.contractEndTime = layui.util.toDateString(hospitalData.contractEndTime, 'yyyy-MM-dd') delete hospitalData.contractBeginTime delete hospitalData.contractEndTime delete hospitalData.contractNum form.val('recharge-form', hospitalData); getHospitalAddress(hospitalData.hospitalId); //装载产品数据 table.render({ elem: '#product-table', url: config.base_server + 'api-opration/product/all', method: 'GET', cellMinWidth: 50, headers: { 'Authorization': 'Bearer ' + config.getToken().access_token }, page: false, where: { is_del: 0, enabled: 1 }, cols: [ [{ field: 'proName', sort: true, width: 330, title: '产品名称', align: 'center', fixed: 'left' }, { field: 'proType', sort: true, align: 'center', width: 80, templet: function (d) { if (d.proType === 0) return "试用" else return "正式" }, title: '类型' }, { field: 'proTime', width: 100, title: '时长', align: 'center', templet: function (d) { switch (d.proTimeUnit) { case 0: return d.proTime + "天"; break; case 1: return d.proTime + "月"; break; case 2: return d.proTime + "年"; break; } } }, { field: 'ailightCount', width: 100, align: 'center', title: '读片量' }, { field: 'recordCount', width: 100, align: 'center', title: '报告量' }, { field: 'beginTime', align: 'center', width: 120, title: '开始日期', event: "date" }, { field: 'endTime', align: 'center', width: 120, title: '结束日期', event: "date" }, { field: 'isShare', fixed: 'right', align: 'center', width: 100, templet: '#product-tpl-isShare', title: '共享' }, { field: 'id', fixed: 'right', align: 'center', width: 100, toolbar: '#product-tpl-bar', title: '操作' } ] ], done: function (res) { permissionsInput(res, config); } }); } } else { admin.finishPopupCenter(); layer.msg("验证医院科室数据异常!", { icon: 2, time: 3000 }); } }, 'get'); //报告数量事件 $("#contractNum").blur(function () { if ($("#contractNum").val() <= 0) { layer.msg("输入的读片量大于0"); $("#contractNum").val("") return false; } var listData = admin.getTempData("t_tempProduct"); var listNum = 0; if (!strUtil.isEmpty(listData)) { listData.forEach(item => { listNum += item.ailightCount; }) } if ($("#contractNum").val() < listNum) { layer.msg("请先删除待充值套餐"); $("#contractNum").val(contractNum) return false; } else { contractNum = $("#contractNum").val(); } }) //自定义的确定 $("#custom_submit").click(function () { var custom_proName = $("#custom_proName").val() var custom_ailightCount = $("#custom_ailightCount").val() var custom_isShare = $("#custom_isShare").prop("checked") ? 1 : 0; var termType = $("#termType").prop("checked") ? 1 : 0; var custom_beginTime = ""; var custom_endTime = ""; if (termType == 1) { custom_beginTime = $("#custom_beginTime").val(); custom_endTime = $("#custom_endTime").val(); } else { custom_beginTime = $("#contractBeginTime").val(); custom_endTime = $("#contractEndTime").val(); } var listData = admin.getTempData("t_tempProduct"); //添加一个id,删除用 var max = 0; if (strUtil.isEmpty(listData)) { listData = new Array(); } listData.forEach(element => { if (max < element.id) { max = element.id } }); //判断待加入产品的总数是否大于合同的总数 var msg = isthenNum(parseInt(custom_ailightCount)); if (msg != null) { layer.msg(msg); return false; } var data = { id: max + 1, ailightCount: parseInt(custom_ailightCount), beginTime: custom_beginTime, endTime: custom_endTime, isShare: custom_isShare, proName: custom_proName, proTime: "", proType: 1, termType: termType } tempDataList(data); waitRecharge(); }) //确定充值按钮 $("#submit").click(function () { submit(); }) getCycleTime(hospitalData.departmentId); } //已充值列表 功能操作 table.on('tool(product-table-now)', function (obj) { if (obj.event === "order_detail_del") { if (!strUtil.isEmpty(obj.data.id)) { admin.req('api-opration/productorderdetail/' + obj.data.id, {}, function (data) { layer.closeAll('loading'); if (data.code == 0) { layer.msg(data.msg, { icon: 1, time: 2000 }); table.reload('product-table-now', {}); } else { layer.msg(data.msg, { icon: 2, time: 2000 }); } }, 'delete'); obj.del(); } } else if (obj.event === "order_detail_enable") { if (!strUtil.isEmpty(obj.data.id)) { admin.req('api-opration/productorderdetail/updateEnabled', { id: obj.data.id, enabled: false }, function (data) { layer.closeAll('loading'); if (data.code == 0) { layer.msg(data.msg, { icon: 1, time: 2000 }); table.reload('product-table-now', {}); } else { layer.msg(data.msg, { icon: 2, time: 2000 }); form.render('checkbox'); } }, 'GET'); obj.del(); } } }); //待充值列表功能操作 table.on('tool(product-table-temp)', function (obj) { if (obj.event === "del") { if (!strUtil.isEmpty(obj.data.id)) { delTempDataById(obj.data.id); obj.del(); } } }); //单元格点击事件 table.on('tool(product-table)', function (obj) { var newdata = {}; var data = obj.data; var selectData = {}; if (obj.event === 'date') { var field = $(this).data('field'); laydate.render({ elem: this.firstChild, format: "yyyy-MM-dd", show: true, done: function (value, date) { var nowTr = obj.tr; if (field === "beginTime") { var endTimes = getNowDate(data.proTime, data.proTimeUnit, value); newdata["beginTime"] = value; newdata["endTime"] = endTimes; } else if (field === "endTime") { newdata["endTime"] = value; var beginTimes = getNowDate((0 - parseInt(data.proTime)), data.proTimeUnit, value); newdata["beginTime"] = beginTimes; } obj.update(newdata); } }); } if (obj.event === "pay") { data.beginTime = obj.tr.find("td[data-field='beginTime'] input").val(); data.endTime = obj.tr.find("td[data-field='endTime'] input").val(); data.beginTime = (!strUtil.isEmpty(data.beginTime)) ? data.beginTime : obj.tr.find( "td[data-field='beginTime'] div").text(); data.endTime = (!strUtil.isEmpty(data.endTime)) ? data.endTime : obj.tr.find( "td[data-field='endTime'] div").text(); data.isShare = obj.tr.find("td[data-field='isShare'] em").text(); data.isShare = (data.isShare.indexOf("不") == 0) ? 0 : 1; //判断待加入产品的总数是否大于合同的总数 //试用产品不计算总数 if(data.proType==1){ var msg = isthenNum(data.ailightCount); if (msg != null) { layer.msg(msg); return false; } } if (!strUtil.isEmpty(data.beginTime) && !strUtil.isEmpty(data.endTime)) { if (dateUtil.compareDate(data.endTime, data.beginTime)) { data.id = data.id + ''; tempDataList(data); waitRecharge(); } else { layer.msg("结束时间必须大于开始时间!"); return false; } } else { layer.msg("时间格式有误!"); return false; } } }); function isthenNum(num) { if (num <= 0) { return "请输入读片量且大于0"; } var listData = admin.getTempData("t_tempProduct"); var listNum = 0; if (!strUtil.isEmpty(listData)) { listData.forEach(item => { listNum += item.ailightCount; }) } listNum += num; if ($("#contractNum_not").val() == undefined || $("#contractNum_not").val() == "") { return "请输入读片量!"; } else { if ($("#contractNum_not").val() < listNum) { return "当前产品总数不得大于合同总量"; } else { return null; } } } //监听单元格编辑 判断日期格式 table.on('edit(product-table)', function (obj) { var value = obj.value //得到修改后的值 , data = obj.data //得到所在行所有键值 , field = obj.field; //得到字段 if (dateUtil.isDate(value)) { } else { layer.msg("输入的日期格式无效!"); } }); //自动计算时间 var getNowDate = function (proTime, proTimeUnit, now) { if (strUtil.isEmpty(now)) { now = new Date(); } else { now = dateUtil.strTurnDate(now); } if (strUtil.isEmpty(proTime) && strUtil.isEmpty(proTimeUnit)) { return now.dateFormat("yyyy-MM-dd"); } else { proTime = strUtil.isEmpty(proTime) ? 0 : proTime; proTimeUnit = strUtil.isEmpty(proTimeUnit) ? 0 : proTimeUnit; switch (proTimeUnit) { case 0: return new Date(now.setDate(now.getDate() + proTime)).dateFormat("yyyy-MM-dd"); break; case 1: return new Date(now.setMonth(now.getMonth() + proTime)).dateFormat( "yyyy-MM-dd"); break; case 2: return new Date(now.setFullYear(now.getFullYear() + proTime)).dateFormat( "yyyy-MM-dd"); break; } } } //移除指定数据 var delTempDataById = function (id) { if (!strUtil.isEmpty(id)) { var listData = admin.getTempData("t_tempProduct"); $.each(listData, function (index, value) { if (value.id === id) { //移除 listData.splice(index, 1); return false; } }) admin.putTempData("t_tempProduct", listData); } } function submit() { console.log(1111111) if (!isRun) { layer.load(2); var listData = admin.getTempData("t_tempProduct"); if (listData != null) { layer.confirm("确定要将待充值列表中的" + listData.length + "个产品充值给当前医院的科室吗?", { btn: ["确定", "返回"] }, function () { isRun = true; layer.closeAll('loading'); //处理订单明细数据 var listDetailData = new Array(); $.each(listData, function (index, item) { var detailData = { orderId: hospitalData.id + '', proId: item.termType == null ? item.id + '' : "0", proType: item.proType, proName: item.proName, isShare: item.isShare, ailightCount: item.ailightCount != null ? item.ailightCount : 0, recordCount: item.recordCount != null ? item.recordCount : 0, termType: item.termType, proBegintime: item.beginTime != "" ? item.beginTime + ' 00:00:00' : "", proEndtime: item.endTime != "" ? item.endTime + ' 23:59:59' : "", orderAilightCount: item.ailightCount, orderRecordCount: item.recordCount != null ? item.recordCount : 0, }; listDetailData.push(detailData); }) if (listDetailData.length > 0) { //提交订单数据 admin.req( 'api-opration/productorderdetail/saveall', JSON.stringify(listDetailData), function (data) { isRun = false; layer.closeAll('loading'); if (data.code === 0) { //现将临时数据清理 admin.putTempData( "t_tempProduct", ""); layer.msg(data.msg, { icon: 1, time: 2000 }, function () { admin .finishPopupCenter(); }); } else { layer.msg(data.msg, { icon: 2, time: 1000 }); } }, 'POST'); } else { layer.msg("充值数据异常为空!", { icon: 2, time: 1000 }); isRun = false; } }) } else { layer.msg("请先将要充值的产品加入待充值!", { icon: 2, time: 2000 }); } layer.closeAll('loading'); return false; } }; }); </script> <style> .layui-form-label { width: 100px; } </style>