Merge branch 'development' into dev
1 files added
10 files modified
| | |
| | | import lombok.NoArgsConstructor; |
| | | import org.hibernate.validator.constraints.NotEmpty; |
| | | |
| | | import javax.validation.constraints.Min; |
| | | import javax.validation.constraints.NotNull; |
| | | import java.util.Date; |
| | | |
| | |
| | | */ |
| | | @NotEmpty(message = "合同名称不能为空") |
| | | private String contractTitle; |
| | | |
| | | @NotNull(message = "合同名数量不能为空") |
| | | @Min(1) |
| | | private Integer contractNum; |
| | | /** |
| | | * 合同开始时间 |
| | | */ |
| | |
| | | @NotEmpty(message = "产品/明细名称不能为空") |
| | | private String proName; |
| | | /** |
| | | * 产品类型 0试用 1正式 |
| | | * 产品类型 0试用 1正式 3 自定义 |
| | | */ |
| | | @NotNull(message = "产品类型不能为空") |
| | | private Integer proType; |
| | | /** |
| | | * 产品使用期限限制 1有限制,0 无限制 |
| | | */ |
| | | private Integer termType; |
| | | /** |
| | | * 是否共享 0否 1是 |
| | | */ |
| | |
| | | @NotEmpty(message = "是否删除,1删除,0未删除不能为空") |
| | | private Boolean isDel; |
| | | /** |
| | | * 产品的读片总量 |
| | | */ |
| | | @NotNull(message = "产品的读片总量") |
| | | private Integer orderAilightCount; |
| | | /** |
| | | * 产品的报告总量 |
| | | */ |
| | | @NotNull(message = "产品的报告总量") |
| | | private Integer orderRecordCount; |
| | | /** |
| | | * 读片量 |
| | | */ |
| | | @NotNull(message = "读片量不能为空") |
| | | private Integer ailightCount; |
| | | |
| | | /** |
| | | * 报告量 |
| | | */ |
| | |
| | | * @return |
| | | */ |
| | | int getUserdProduct(Long hospitalId,Long departmentId); |
| | | |
| | | } |
| | | |
| | |
| | | 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; |
| | |
| | | @Autowired |
| | | private IProductOrderService iProductOrderService; |
| | | @Autowired |
| | | private ISysProductService productService; |
| | | @Autowired |
| | | private RedisUtils redisUtils; |
| | | /** |
| | | * 列表 |
| | |
| | | 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(); |
| | | } |
| | | /** |
| | |
| | | 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; |
| | |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.validation.Valid; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | |
| | | |
| | | /** |
| | |
| | | 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); |
| | | } |
| | | } |
| | |
| | | oAuth2Authentication.setAuthenticated(true); |
| | | ResponseUtil.responseSucceed(objectMapper, response, oAuth2AccessToken); |
| | | } catch (BadCredentialsException | InternalAuthenticationServiceException e) { |
| | | e.printStackTrace(); |
| | | exceptionHandler(response, badCredenbtialsMsg); |
| | | } catch (Exception e) { |
| | | exceptionHandler(response, e); |
| | |
| | | <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> |
| | | <table class="layui-table" id="contract-table" lay-filter="contract-table"></table> |
| | | </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"> |
| | |
| | | { field: 'departmentName', width: 200, title: '科室名称' }, |
| | | { field: 'contractNo', width: 150, title: '合同编号' }, |
| | | { field: 'contractTitle', width: 200, title: '合同名' }, |
| | | { field: 'contractBeginTime', width: 120, title: '合同生效时间',templet:function(d) |
| | | { |
| | | return new Date(d.contractBeginTime).dateFormat("yyyy/MM/dd"); |
| | | } |
| | | 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){ |
| | | return new Date(d.contractEndTime).dateFormat("yyyy/MM/dd"); |
| | | } }, |
| | | { field: 'contractTime', width: 120, title: '合同签订时间',templet:function(d){ |
| | | return new Date(d.contractTime).dateFormat("yyyy/MM/dd"); |
| | | } }, |
| | | { |
| | | 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) { |
| | | 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) { |
| | | return new Date(d.createTime).dateFormat("yyyy-MM-dd hh:mm"); |
| | | }}, |
| | | { align: 'center', width: 150, toolbar: '#contract-table-bar', title: '操作', |
| | | fixed: 'right'} |
| | | { |
| | | 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' |
| | | } |
| | | ]], |
| | | done:function(res){ |
| | | permissionsInput(res,config); |
| | | done: function (res) { |
| | | permissionsInput(res, config); |
| | | } |
| | | }); |
| | | } |
| | |
| | | }, 'DELETE'); |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | else if (obj.event === 'edit') { |
| | | //修改 |
| | | updateModel(obj.data); |
| | | } else if (obj.event === 'detail') { |
| | | //充值记录列表 |
| | | showModel(obj.data.id); |
| | | } |
| | | }); |
| | |
| | | // 搜索按钮点击事件 |
| | | $('#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()}, |
| | | table.reload('contract-table', { |
| | | where: { hospitalId: $("#hospitalId").val() }, |
| | | page: { |
| | | curr: 1 |
| | | } }); |
| | | curr: 1 |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | var showModel=function(orderId){ |
| | | layer.open({ |
| | | type:1, |
| | | title:'查看产品', |
| | | area: '1200px', |
| | | offset: '100px', |
| | | content: $('#contract-model').html(), |
| | | success:function(){ |
| | | table.render({ |
| | | elem: '#contract-table-detail', |
| | | url: config.base_server + 'api-opration/productorderrecord', |
| | | method: 'GET', |
| | | where:{'orderId':orderId}, |
| | | headers: { 'Authorization': 'Bearer ' + config.getToken().access_token }, |
| | | page: true, |
| | | limit:10, |
| | | limits:[5,10], |
| | | cols: [[ |
| | | { field: 'proName', width: 300, title: '产品名称' }, |
| | | { field: 'ailightCount', width: 150, title: '读片量' }, |
| | | { field: 'recordCount', width: 100, title: '报告量' }, |
| | | { field: 'isShare', width: 150, title: '是否共享',templet:function(d) |
| | | { |
| | | if(d.isShare) |
| | | return '共享' |
| | | else |
| | | return '私有' |
| | | } |
| | | }, |
| | | { 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){ |
| | | return new Date(d.proEndtime).dateFormat("yyyy/MM/dd"); |
| | | } }, |
| | | { field: 'createTime', width: 160, sort: true, title: '创建时间' } |
| | | ]] |
| | | var showModel = function (orderId) { |
| | | layer.open({ |
| | | type: 1, |
| | | title: '查看产品', |
| | | area: '1200px', |
| | | offset: '100px', |
| | | content: $('#contract-model').html(), |
| | | success: function () { |
| | | table.render({ |
| | | elem: '#contract-table-detail', |
| | | url: config.base_server + 'api-opration/productorderrecord', |
| | | method: 'GET', |
| | | where: { 'orderId': orderId }, |
| | | headers: { 'Authorization': 'Bearer ' + config.getToken().access_token }, |
| | | page: true, |
| | | limit: 10, |
| | | limits: [5, 10], |
| | | cols: [[ |
| | | { field: 'proName', width: 300, title: '产品名称' }, |
| | | { field: 'ailightCount', width: 150, title: '读片量' }, |
| | | { field: 'recordCount', width: 100, title: '报告量' }, |
| | | { |
| | | field: 'isShare', width: 150, title: '是否共享', templet: function (d) { |
| | | if (d.isShare) |
| | | return '共享' |
| | | else |
| | | return '私有' |
| | | } |
| | | }, |
| | | { |
| | | 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) { |
| | | 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> |
| | |
| | | |
| | | // 表单提交事件 |
| | | 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(','); |
| | |
| | | } |
| | | }); |
| | | } else if(layEvent=="health"){ |
| | | //充值 |
| | | //运动处方服务 |
| | | admin.putTempData("t_hospital", data); |
| | | admin.popupCenter({ |
| | | title: '运动处方服务', |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | |
| | | <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> |
| | |
| | | <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", ""); |
| | |
| | | cellMinWidth: 100, |
| | | cols: [ |
| | | [{ |
| | | field: 'proName', |
| | | width: 330, |
| | | title: '产品名称', |
| | | align: 'center', |
| | | fixed: 'left' |
| | | 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 "正式" |
| | | }, |
| | | { |
| | | 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; |
| | | } |
| | | 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: '开始日期' |
| | | }, |
| | | { |
| | | 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: '操作' |
| | | 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 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") |
| | | } |
| | | |
| | | //回显医院基本数据 |
| | |
| | | if (0 === data.code) { |
| | | queryData = data.data; |
| | | if (queryData === true) { |
| | | admin.finishPopupCenter(); |
| | | admin.finishPopupCenter(); |
| | | layer.msg("当前科室开通了单次支付功能,不能进行充值业务!", { |
| | | icon: 3, |
| | | time: 5000 |
| | | }); |
| | | } 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({ |
| | |
| | | }, |
| | | cols: [ |
| | | [{ |
| | | field: 'proName', |
| | | sort: true, |
| | | width: 330, |
| | | title: '产品名称', |
| | | align: 'center', |
| | | fixed: 'left' |
| | | 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 "正式" |
| | | }, |
| | | { |
| | | 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; |
| | | } |
| | | 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: '操作' |
| | | } |
| | | }, |
| | | { |
| | | 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) { |
| | |
| | | }); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | else { |
| | | admin.finishPopupCenter(); |
| | | layer.msg("验证医院科室数据异常!", { |
| | | icon: 2, |
| | | time: 3000 |
| | | }); |
| | | 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(); |
| | | }) |
| | | getCycleTime(hospitalData.departmentId); |
| | | } |
| | | |
| | | //待充值列表功能操作 |
| | | table.on('tool(product-table-temp)', function (obj) { |
| | | if (obj.event === "del") { |
| | |
| | | "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+''; |
| | | data.id = data.id + ''; |
| | | tempDataList(data); |
| | | waitRecharge(); |
| | | } else { |
| | |
| | | } |
| | | } |
| | | }); |
| | | 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 //得到修改后的值 |
| | |
| | | data = obj.data //得到所在行所有键值 |
| | | , |
| | | field = obj.field; //得到字段 |
| | | if (dateUtil.isDate(value)) {} else { |
| | | if (dateUtil.isDate(value)) { } else { |
| | | layer.msg("输入的日期格式无效!"); |
| | | } |
| | | }); |
| | |
| | | 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 { |
| | |
| | | " 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'); |
| | |
| | | var listDetailData = new Array(); |
| | | $.each(listData, function (index, item) { |
| | | var detailData = { |
| | | orderId: orderData.id+'', |
| | | proId: item.id+'', |
| | | orderId: orderData.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); |
| | | }) |
| | |
| | | } |
| | | }); |
| | | }); |
| | | </script> |
| | | </script> |
| | | <style> |
| | | .layui-form-label { |
| | | width: 140px; |
| | | } |
| | | |
| | | .layui-input-block { |
| | | margin-left: 160px; |
| | | } |
| | | </style> |
New file |
| | |
| | | <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> |