From d3386ce4a4439ee740ca79d33ac7040963a18948 Mon Sep 17 00:00:00 2001
From: zhaoxiaohao <913652501@qq.com>
Date: Fri, 24 Apr 2020 11:31:26 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java         |    5 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/productdetail.html                                                                   |    4 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysProduct.java                           |   13 
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysOrganizationController.java                  |   40 +-
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html                                                                        |   14 
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDepartmentController.java                    |   39 +-
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js                                                                                 |  132 ++++---
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product.html                                                                         |    8 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java |   82 +++-
 /dev/null                                                                                                                                                     |  122 -------
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html                                                              |   31 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html                                                                        |  444 ++++++++++++++++++++++++++
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/contract.html                                                                        |   29 -
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/groupProduct.html                                                                    |    4 
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysAreaServiceImpl.java                          |    1 
 15 files changed, 672 insertions(+), 296 deletions(-)

diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysProduct.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysProduct.java
index a38e4f4..5a804ce 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysProduct.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysProduct.java
@@ -11,6 +11,7 @@
 
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
@@ -73,4 +74,16 @@
      * 状态,1启用,0停用
      */
     private Boolean enabled;
+    /**
+     * 产品结束时间-供前端使用
+     */
+    private Date endTime;
+    /**
+     * 产品结束时间-供前端使用
+     */
+    private Date beginTime;
+    /**
+     * 共享,1是,0不
+     */
+    private Boolean isShare;
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java
index 24444bc..481f979 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java
@@ -1,9 +1,9 @@
 package com.kidgrow.oprationcenter.service;
 
-import com.kidgrow.common.model.ResultBody;
-import com.kidgrow.oprationcenter.model.ProductOrderDetail;
 import com.kidgrow.common.model.PageResult;
+import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.common.service.ISuperService;
+import com.kidgrow.oprationcenter.model.ProductOrderDetail;
 import com.kidgrow.oprationcenter.vo.GroupProductDetail;
 import com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail;
 
@@ -49,6 +49,5 @@
      * @return
      */
     ResultBody updateEnabled(Map<String, Object> params);
-
 }
 
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java
index a4a1d33..81aad5a 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java
@@ -6,6 +6,7 @@
 import com.kidgrow.oprationcenter.model.ProductOrderDetail;
 import com.kidgrow.oprationcenter.service.IBusinessRecordsService;
 import com.kidgrow.oprationcenter.service.IProductOrderDetailService;
+import com.kidgrow.oprationcenter.service.IProductOrderService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -13,6 +14,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.ObjectError;
 import org.springframework.web.bind.annotation.*;
@@ -26,6 +28,7 @@
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
  * @Description: 产品/明显的充值记录
  * @Project: 运营中心
  * @CreateDate: Created in 2020-04-02 18:25:34 <br>
@@ -36,11 +39,13 @@
 @RestController
 @RequestMapping("/productorderdetail")
 @Api(tags = "产品/明显的充值记录")
-public class ProductOrderDetailController  extends BaseController{
+public class ProductOrderDetailController extends BaseController {
     @Autowired
     private IProductOrderDetailService productOrderDetailService;
     @Autowired
     private IBusinessRecordsService businessRecordsService;
+    @Autowired
+    private IProductOrderService productOrderService;
 
     /**
      * 列表
@@ -52,9 +57,9 @@
     })
     @GetMapping
     public PageResult list(@RequestParam Map<String, Object> params) {
-        if(params.size()==0){
-            params.put("page",1);
-            params.put("limit",10);
+        if (params.size() == 0) {
+            params.put("page", 1);
+            params.put("limit", 10);
         }
         return productOrderDetailService.findList(params);
     }
@@ -69,9 +74,9 @@
     })
     @GetMapping("/all")
     public PageResult findAllList(@RequestParam Map<String, Object> params) {
-        if(params.size()==0){
-            params.put("page",1);
-            params.put("limit",10);
+        if (params.size() == 0) {
+            params.put("page", 1);
+            params.put("limit", 10);
         }
         return productOrderDetailService.findAllList(params);
     }
@@ -86,9 +91,9 @@
     })
     @GetMapping("/group")
     public PageResult groupList(@RequestParam Map<String, Object> params) {
-        if(params.size()==0){
-            params.put("page",1);
-            params.put("limit",10);
+        if (params.size() == 0) {
+            params.put("page", 1);
+            params.put("limit", 10);
         }
         return productOrderDetailService.groupList(params);
     }
@@ -119,19 +124,46 @@
     @ApiOperation(value = "保存")
     @PostMapping
     public ResultBody save(@Valid @RequestBody ProductOrderDetail productOrderDetail, BindingResult bindingResult) {
-        List<String> errMsg= new ArrayList<>();
+        List<String> errMsg = new ArrayList<>();
         if (bindingResult.hasErrors()) {
             for (ObjectError error : bindingResult.getAllErrors()) {
                 errMsg.add(error.getDefaultMessage());
             }
             return ResultBody.failed().msg(errMsg.toString());
-        }  else {
-            boolean v= productOrderDetailService.saveOrUpdate(productOrderDetail);
-            if(v) {
+        } else {
+            boolean v = productOrderDetailService.saveOrUpdate(productOrderDetail);
+            if (v) {
                 return ResultBody.ok().data(productOrderDetail).msg("保存成功");
-            }
-            else {
+            } else {
                 return ResultBody.failed().msg("保存失败");
+            }
+        }
+    }
+
+    /**
+     * 新增or更新
+     */
+    @ApiOperation(value = "保存")
+    @PostMapping("/saveall")
+    @Transactional(rollbackFor = Exception.class)
+    public ResultBody batchInsert(@Valid @RequestBody List<ProductOrderDetail> list, BindingResult bindingResult) {
+        List<String> errMsg = new ArrayList<>();
+        if (bindingResult.hasErrors()) {
+            for (ObjectError error : bindingResult.getAllErrors()) {
+                errMsg.add(error.getDefaultMessage());
+            }
+            return ResultBody.failed().msg(errMsg.toString());
+        } else {
+            Boolean v = productOrderDetailService.saveBatch(list);
+            if (v) {
+                return ResultBody.ok().data(list.size()).msg("产品充值成功");
+            } else {
+                //写入订单明细失败,则删除订单记录数据
+                Boolean e = productOrderService.removeById(list.get(0).getOrderId());
+                if (e)
+                    return ResultBody.failed().msg("充值数据保存失败,订单已撤回!");
+                else
+                    return ResultBody.failed().msg("充值数据保存失败,订单撤回失败!");
             }
         }
     }
@@ -142,17 +174,17 @@
     @ApiOperation(value = "删除")
     @DeleteMapping("/{id}")
     public ResultBody delete(@PathVariable Long id) {
-        boolean v= productOrderDetailService.removeById(id);
-        if(v) {
-            if (!businessRecordsService.recordBusinessData("删除订单明细:"+id,id.toString())) {
+        boolean v = productOrderDetailService.removeById(id);
+        if (v) {
+            if (!businessRecordsService.recordBusinessData("删除订单明细:" + id, id.toString())) {
                 //log.error(String.format("删除订单明细id为:{1}",id));
             }
             return ResultBody.ok().msg("删除成功");
-        }
-        else {
+        } else {
             return ResultBody.failed().msg("删除失败");
         }
     }
+
     /**
      * 修改状态
      *
@@ -169,11 +201,11 @@
         if (params.size() == 0) {
             return ResultBody.failed().msg("参数异常!");
         }
-        ResultBody resultBody=productOrderDetailService.updateEnabled(params);
+        ResultBody resultBody = productOrderDetailService.updateEnabled(params);
         //记录业务日志
-        if (resultBody.getCode()==0) {
-            String enablad=(MapUtils.getBoolean(params, "enabled"))?"启用":"禁用";
-            if (!businessRecordsService.recordBusinessData("修改订单明细状态为:"+enablad,enablad)) {
+        if (resultBody.getCode() == 0) {
+            String enablad = (MapUtils.getBoolean(params, "enabled")) ? "启用" : "禁用";
+            if (!businessRecordsService.recordBusinessData("修改订单明细状态为:" + enablad, enablad)) {
                 //log.error(String.format("修改合同状态为:{0},写入业务日志失败!合同管理id为:{1}",enablad,MapUtils.getString(params,"id")));
             }
         }
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysAreaServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysAreaServiceImpl.java
index a93657a..a6e6b6e 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysAreaServiceImpl.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysAreaServiceImpl.java
@@ -42,6 +42,7 @@
    */
     @Override
     public SysArea findByObject(SysArea sysArea){
+        
         return baseMapper.findByObject(sysArea);
     }
     /**
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDepartmentController.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDepartmentController.java
index 08b11d1..15d2364 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDepartmentController.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDepartmentController.java
@@ -88,7 +88,7 @@
     public ResultBody checkDepName(@RequestParam Map<String, Object> params) {
         params.put("page", 1);
         params.put("limit", 1);
-        if (sysDepartmentService.findList(params).getData().size()>0) {
+        if (sysDepartmentService.findList(params).getData().size() > 0) {
             return ResultBody.failed().msg(String.format("该医院下已经存在科室 %s", params.get("departmentName")));
         }
         return ResultBody.ok().msg("");
@@ -108,39 +108,38 @@
             return ResultBody.failed().msg(errMsg.toString());
         } else {
             //先检查该医院该科室是否已经存在
-            Map<String, Object> checkDepartment=new HashMap<String,Object>();
-            checkDepartment.put("page", 1);
-            checkDepartment.put("limit", 1);
-            checkDepartment.put("hospitalId",sysDepartment.getHospitalId());
-            checkDepartment.put("departmentName",sysDepartment.getDepartmentName());
-            if (sysDepartmentService.findList(checkDepartment).getData().size()>0) {
-                return ResultBody.failed().msg(String.format("该医院下已经存在科室 %s", sysDepartment.getDepartmentName()));
+            if (sysDepartment.getId() == null) {
+                Map<String, Object> checkDepartment = new HashMap<String, Object>();
+                checkDepartment.put("page", 1);
+                checkDepartment.put("limit", 1);
+                checkDepartment.put("hospitalId", sysDepartment.getHospitalId());
+                checkDepartment.put("departmentName", sysDepartment.getDepartmentName());
+                if (sysDepartmentService.findList(checkDepartment).getData().size() > 0) {
+                    return ResultBody.failed().msg(String.format("该医院下已经存在科室 %s", sysDepartment.getDepartmentName()));
+                }
             }
             //先检查是否存在组织信息
-            SysOrganization sysOrganization=new SysOrganization();
-            if(sysDepartment.getOrgId()!=null){
-                sysOrganization.setId(sysDepartment.getOrgId());}
-            else{
+            SysOrganization sysOrganization = new SysOrganization();
+            if (sysDepartment.getOrgId() != null) {
+                sysOrganization.setId(sysDepartment.getOrgId());
+            } else {
                 sysOrganization.setOrgName(sysDepartment.getDepartmentName());
                 //临时暂用其它字段承载数据
                 sysOrganization.setOrgParentId(sysDepartment.getUpdateUserId());
             }
-            sysOrganization=sysOrganizationService.findByObject(sysOrganization);
-            if(sysOrganization==null)
-            {
+            sysOrganization = sysOrganizationService.findByObject(sysOrganization);
+            if (sysOrganization == null) {
                 //创建一个组织
-                sysOrganization=new SysOrganization();
+                sysOrganization = new SysOrganization();
                 sysOrganization.setOrgName(sysDepartment.getDepartmentName());
                 sysOrganization.setOrgAttr(2);
                 sysOrganization.setOrgLevel(2);
                 //临时暂用其它字段承载数据
                 sysOrganization.setOrgParentId(sysDepartment.getUpdateUserId());
-            }
-            else
-            {
+            } else {
                 sysOrganization.setOrgName(sysDepartment.getDepartmentName());
             }
-            boolean org=sysOrganizationService.saveOrUpdate(sysOrganization);
+            boolean org = sysOrganizationService.saveOrUpdate(sysOrganization);
             sysDepartment.setOrgId(sysOrganization.getId());
             boolean v = sysDepartmentService.saveOrUpdate(sysDepartment);
             if (v) {
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysOrganizationController.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysOrganizationController.java
index d0d2124..0bffee9 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysOrganizationController.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysOrganizationController.java
@@ -23,6 +23,7 @@
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
  * @Description: 组织架构表
  * @Project: 用户中心
  * @CreateDate: Created in 2020-04-10 15:21:10 <br>
@@ -33,7 +34,7 @@
 @RestController
 @RequestMapping("/sysorganization")
 @Api(tags = "组织架构表")
-public class SysOrganizationController  extends BaseController{
+public class SysOrganizationController extends BaseController {
     @Autowired
     private ISysOrganizationService sysOrganizationService;
 
@@ -47,12 +48,13 @@
     })
     @GetMapping
     public ResultBody<PageResult> list(@RequestParam Map<String, Object> params) {
-        if(params.size()==0){
-            params.put("page",1);
-            params.put("limit",10);
+        if (params.size() == 0) {
+            params.put("page", 1);
+            params.put("limit", 10);
         }
         return ResultBody.ok().data(sysOrganizationService.findList(params));
     }
+
     /**
      * 列表
      */
@@ -63,18 +65,17 @@
     })
     @GetMapping("/listByName")
     public ResultBody listByName(@RequestParam Map<String, Object> params) {
-        if(params.size()==0){
-            params.put("page",1);
-            params.put("limit",10);
+        if (params.size() == 0) {
+            params.put("page", 1);
+            params.put("limit", 10);
         }
-        if (params.get("orgName")!=null) {
+        if (params.get("orgName") != null) {
             return ResultBody.ok().data(sysOrganizationService.findList(params).getData());
-        }
-        else
-        {
+        } else {
             return ResultBody.ok().data(null);
         }
     }
+
     @ApiOperation(value = "查询列表by MAP")
     @GetMapping("getListByMap")
     public ResultBody getListByMap(@RequestParam Map<String, Object> params) {
@@ -86,6 +87,7 @@
     public ResultBody getTree(@RequestParam Map<String, Object> params) {
         return sysOrganizationService.getTree(params);
     }
+
     @ApiOperation(value = "更新状态")
     @GetMapping("updateEnabled")
     public ResultBody updateEnabled(@RequestParam Map<String, Object> params) {
@@ -118,18 +120,17 @@
     @ApiOperation(value = "保存")
     @PostMapping
     public ResultBody save(@Valid @RequestBody SysOrganization sysOrganization, BindingResult bindingResult) {
-        List<String> errMsg= new ArrayList<>();
+        List<String> errMsg = new ArrayList<>();
         if (bindingResult.hasErrors()) {
             for (ObjectError error : bindingResult.getAllErrors()) {
                 errMsg.add(error.getDefaultMessage());
             }
             return ResultBody.failed().msg(errMsg.toString());
         } else {
-            boolean v= sysOrganizationService.saveOrUpdate(sysOrganization);
-            if(v) {
+            boolean v = sysOrganizationService.saveOrUpdate(sysOrganization);
+            if (v) {
                 return ResultBody.ok().data(sysOrganization).msg("保存成功");
-            }
-            else {
+            } else {
                 return ResultBody.failed().msg("保存失败");
             }
         }
@@ -141,11 +142,10 @@
     @ApiOperation(value = "删除")
     @DeleteMapping("/{id}")
     public ResultBody delete(@PathVariable Long id) {
-        boolean v= sysOrganizationService.removeById(id);
-        if(v) {
+        boolean v = sysOrganizationService.removeById(id);
+        if (v) {
             return ResultBody.ok().msg("删除成功");
-        }
-        else {
+        } else {
             return ResultBody.failed().msg("删除失败");
         }
     }
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
index f8e6a4f..54eec96 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
@@ -7,7 +7,7 @@
     treetable2: 'treetable2/TreeTable',
     autocomplete: 'complete/autocomplete',
     step: 'step-lay/step'
-}).use(['layer','config', 'index', 'element'], function () {
+}).use(['layer', 'config', 'index', 'element'], function () {
     var $ = layui.jquery;
     var layer = layui.layer;
     let config = layui.config;
@@ -67,22 +67,22 @@
  * @param format {date} 传入要格式化的日期类型
  * @returns {2015-01-31 16:30:00}
  */
-Date.prototype.dateFormat = function (format){
+Date.prototype.dateFormat = function (format) {
     var o = {
-        "M+" : this.getMonth()+1, //month
-        "d+" : this.getDate(), //day
-        "h+" : this.getHours(), //hour
-        "m+" : this.getMinutes(), //minute
-        "s+" : this.getSeconds(), //second
-        "q+" : Math.floor((this.getMonth()+3)/3), //quarter
-        "S" : this.getMilliseconds() //millisecond
+        "M+": this.getMonth() + 1, //month
+        "d+": this.getDate(), //day
+        "h+": this.getHours(), //hour
+        "m+": this.getMinutes(), //minute
+        "s+": this.getSeconds(), //second
+        "q+": Math.floor((this.getMonth() + 3) / 3), //quarter
+        "S": this.getMilliseconds() //millisecond
     }
-    if(/(y+)/.test(format)) {
-        format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
+    if (/(y+)/.test(format)) {
+        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
     }
-    for(var k in o) {
-        if(new RegExp("("+ k +")").test(format)) {
-            format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
+    for (var k in o) {
+        if (new RegExp("(" + k + ")").test(format)) {
+            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
         }
     }
     return format;
@@ -98,35 +98,33 @@
      * @param date{date} 传入日期类型
      * @returns {星期四,...}
      */
-    nowFewWeeks:function(date){
-        if(date instanceof Date){
-            var dayNames = new Array("星期天","星期一","星期二","星期三","星期四","星期五","星期六");
+    nowFewWeeks: function (date) {
+        if (date instanceof Date) {
+            var dayNames = new Array("星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
             return dayNames[date.getDay()];
-        } else{
+        } else {
             return "Param error,date type!";
         }
     },
     /**
      * 比较第一个时间值和第二个时间值的大小  如果第一个大 返回true  否则返回false
      * **/
-    compareDate:function(datebegin,dateend)
-    {
-        var datebegindate=dateUtil.strTurnDate(datebegin);
-        var dateenddate=dateUtil.strTurnDate(dateend);
+    compareDate: function (datebegin, dateend) {
+        var datebegindate = dateUtil.strTurnDate(datebegin);
+        var dateenddate = dateUtil.strTurnDate(dateend);
         if (datebegindate > dateenddate) {
-            return false;
-        } else {
             return true;
+        } else {
+            return false;
         }
     },
     /***
      * 获取今天的时间字符串
      */
-    getNowDate:function()
-    {
+    getNowDate: function () {
         var dayTime = new Date();
         dayTime.setTime(dayTime.getTime());
-        return dayTime.getFullYear()+"-" + (dayTime.getMonth()+1) + "-" + dayTime.getDate();
+        return dayTime.getFullYear() + "-" + (dayTime.getMonth() + 1) + "-" + dayTime.getDate();
     },
     /*
      * 方法作用:【字符串转换成日期】
@@ -134,11 +132,11 @@
      * @param str {String}字符串格式的日期,传入格式:yyyy-mm-dd(2015-01-31)
      * @return {Date}由字符串转换成的日期
      */
-    strTurnDate:function(str){
-        var   re   =   /^(\d{4})\S(\d{1,2})\S(\d{1,2})$/;
-        var   dt;
-        if   (re.test(str)){
-            dt   =   new   Date(RegExp.$1,RegExp.$2   -   1,RegExp.$3);
+    strTurnDate: function (str) {
+        var re = /^(\d{4})\S(\d{1,2})\S(\d{1,2})$/;
+        var dt;
+        if (re.test(str)) {
+            dt = new Date(RegExp.$1, RegExp.$2 - 1, RegExp.$3);
         }
         return dt;
     },
@@ -150,13 +148,23 @@
      * @endDate {Date}结束日期
      * @return endDate - startDate的天数差
      */
-    dayMinus:function(startDate, endDate){
-        if(startDate instanceof Date && endDate instanceof Date){
-            var days = Math.floor((endDate-startDate)/(1000 * 60 * 60 * 24));
+    dayMinus: function (startDate, endDate) {
+        if (startDate instanceof Date && endDate instanceof Date) {
+            var days = Math.floor((endDate - startDate) / (1000 * 60 * 60 * 24));
             return days;
-        }else{
+        } else {
             return "Param error,date type!";
         }
+    },
+    /**
+     * 判断一个字符串是否日期
+     * @param {字符串} strDate 
+     */
+    isDate: function (strDate) {
+        if (!strUtil.isEmpty(strDate) && !isNaN(Date.parse(strDate))) {
+            return true;
+        }
+        return false;
     }
 };
 
@@ -171,21 +179,21 @@
      * @param fileurl 文件路径,
      * @param filetype 文件类型,支持传入类型,js、css
      */
-    loadjscssfile:function(fileurl,filetype){
-        if(filetype == "js"){
+    loadjscssfile: function (fileurl, filetype) {
+        if (filetype == "js") {
             var fileref = document.createElement('script');
-            fileref.setAttribute("type","text/javascript");
-            fileref.setAttribute("src",fileurl);
-        }else if(filetype == "css"){
+            fileref.setAttribute("type", "text/javascript");
+            fileref.setAttribute("src", fileurl);
+        } else if (filetype == "css") {
 
             var fileref = document.createElement('link');
-            fileref.setAttribute("rel","stylesheet");
-            fileref.setAttribute("type","text/css");
-            fileref.setAttribute("href",fileurl);
+            fileref.setAttribute("rel", "stylesheet");
+            fileref.setAttribute("type", "text/css");
+            fileref.setAttribute("href", fileurl);
         }
-        if(typeof fileref != "undefined"){
+        if (typeof fileref != "undefined") {
             document.getElementsByTagName("head")[0].appendChild(fileref);
-        }else{
+        } else {
             alert("loadjscssfile method error!");
         }
     }
@@ -201,10 +209,10 @@
      * @param str 传入的字符串
      * @returns {}
      */
-    isEmpty:function(str){
-        if(str != '' && str != undefined && str != null){
+    isEmpty: function (str) {
+        if (str != '' && str != undefined && str != null) {
             return false;
-        }else{
+        } else {
             return true;
         }
     },
@@ -214,10 +222,10 @@
      * @param str2
      * @returns {Boolean}
      */
-    isEquals:function(str1,str2){
-        if(str1==str2){
+    isEquals: function (str1, str2) {
+        if (str1 == str2) {
             return true;
-        }else{
+        } else {
             return false;
         }
     },
@@ -227,10 +235,10 @@
      * @param str2
      * @returns {Boolean}
      */
-    isEqualsIgnorecase:function(str1,str2){
-        if(str1.toUpperCase() == str2.toUpperCase()){
+    isEqualsIgnorecase: function (str1, str2) {
+        if (str1.toUpperCase() == str2.toUpperCase()) {
             return true;
-        }else{
+        } else {
             return false;
         }
     },
@@ -239,10 +247,10 @@
      * @param value
      * @returns {Boolean}
      */
-    isNum:function (value){
-        if( value != null && value.length>0 && isNaN(value) == false){
+    isNum: function (value) {
+        if (value != null && value.length > 0 && isNaN(value) == false) {
             return true;
-        }else{
+        } else {
             return false;
         }
     },
@@ -251,9 +259,9 @@
      * @param str
      * @returns {Boolean}
      */
-    isChine:function(str){
+    isChine: function (str) {
         var reg = /^([u4E00-u9FA5]|[uFE30-uFFA0])*$/;
-        if(reg.test(str)){
+        if (reg.test(str)) {
             return false;
         }
         return true;
@@ -264,10 +272,10 @@
     debugger
     var url = location.search; //获取url中"?"符后的字串
     var theRequest = new Object();
-    if(url.indexOf("?") != -1) {
+    if (url.indexOf("?") != -1) {
         var str = url.substr(1);
         strs = str.split("&");
-        for(var i = 0; i < strs.length; i++) {
+        for (var i = 0; i < strs.length; i++) {
             theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
         }
     }
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/contract.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/contract.html
index b30cde1..ae3a65a 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/contract.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/contract.html
@@ -49,7 +49,7 @@
                     { field: 'hospitalName', width: 300, title: '医院名称' },
                     { field: 'departmentName', width: 100, title: '科室名称' },
                     { field: 'contractNo', width: 150, title: '合同编号' },
-                    { field: 'contractTitle', width: 150, title: '合同名' },
+                    { field: 'contractTitle', width: 260, title: '合同名' },
                     { field: 'contractBeginTime', width: 150, title: '合同生效时间',templet:function(d)
                     {
                         return new Date(d.contractBeginTime).dateFormat("yyyy/MM/dd");
@@ -59,34 +59,15 @@
                         return new Date(d.contractEndTime).dateFormat("yyyy/MM/dd");
                     } },
                     { field: 'contractTime', width: 180, title: '合同签订时间',templet:function(d){
-                        return new Date(d.contractTime).dateFormat("yyyy/MM/dd hh:mm:ss");
+                        return new Date(d.contractTime).dateFormat("yyyy/MM/dd");
                     } },
-                    { field: 'enabled', width: 120, templet: '#contract-tpl-state', sort: true, title: '状态' },
+                    // { field: 'enabled', width: 120, templet: '#contract-tpl-state', sort: true, title: '状态' },
                     { field: 'createTime', width: 160, sort: true, title: '创建时间' },
                     { align: 'center', width: 150, toolbar: '#contract-table-bar', title: '操作' }
                 ]]
             });
         }
         renderTable();
-
-        // 修改状态
-        form.on('switch(contract-tpl-state)', function (obj) {
-            layer.load(2);
-            admin.req('api-opration/contract/updateEnabled', {
-                id: obj.elem.value,
-                enabled: obj.elem.checked ? true : false
-            }, function (data) {
-                layer.closeAll('loading');
-                if (data.code == 0) {
-                    layer.msg(data.msg, { icon: 1, time: 500 });
-                } else {
-                    layer.msg(data.msg, { icon: 2, time: 500 });
-                    $(obj.elem).prop('checked', !obj.elem.checked);
-                    form.render('checkbox');
-                }
-            }, 'GET');
-        });
-
         // 工具条点击事件
         table.on('tool(contract-table)', function (obj) {
             if (obj.event === 'del') { // 删除
@@ -130,7 +111,7 @@
                 where:{'orderId':orderId},
                 headers: { 'Authorization': 'Bearer ' + config.getToken().access_token },
                 page: true,
-                limit:5,
+                limit:10,
                 limits:[5,10],
                 cols: [[
                     { field: 'proName', width: 300, title: '产品名称' },
@@ -148,7 +129,7 @@
                         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 hh:mm:ss");
+                        return new Date(d.proEndtime).dateFormat("yyyy/MM/dd");
                     } },
                     { field: 'createTime', width: 160, sort: true, title: '创建时间' }
                 ]]
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/department_form.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/department_form.html
deleted file mode 100644
index 8a25bcc..0000000
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/department_form.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<form id="department-form" lay-filter="department-form" class="layui-form model-form" method="POST">
-    <div class="layui-form-item">
-        <div class="layui-row">
-            <div class="layui-col-sm4">
-                <label class="layui-form-label">医院名称</label>
-                <div class="layui-input-block">
-                    <input id="hospitalName" name="hospitalName" type="text" class="layui-input" maxlength="50"
-                        lay-verify="required" required style="width: 200px;" value="" readonly />
-                    &emsp;</div>
-            </div>
-            <div class="layui-col-sm4">
-                <label class="layui-form-label">科室名称</label>
-                <div class="layui-input-block">
-                    <input name="departmentName" id="departmentName" placeholder="科室名称" type="text" class="layui-input"
-                        maxlength="50" lay-verify="required" required style="width: 150px;" />
-                    &emsp;</div>
-            </div>
-            <div class="layui-col-sm4">
-                <label class="layui-form-label">服务人员</label>
-                <div class="layui-input-block">
-                    <input name="serverUserId" id="serverUserId" type="hidden" value="" />
-                    <select name="serverUserName" id="serverUserName" lay-filter="serverUserName" style="width: 150px;">
-                    </select>
-                </div>
-            </div>
-        </div>
-    </div>
-    <div class="layui-form-item">
-        <label class="layui-form-label">科室简介</label>
-        <div class="layui-input-block">
-            <textarea name="departmentAbout" class="layui-textarea" maxlength="500"></textarea>
-        </div>
-    </div>
-    <div class="layui-form-item model-form-footer">
-        <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button>
-        <button class="layui-btn" lay-filter="department-form-submit" lay-submit>保存</button>
-    </div>
-    <input type="hidden" id="orgId" name="orgId" value="" />
-    <input type="hidden" id="hospitalId" name="hospitalId" value="" />
-</form>
-
-<script>
-    parent.layui.use(['form', 'table', 'util', 'config', 'admin', 'formSelects'], function () {
-        var form = parent.layui.form;
-        var table = parent.layui.table;
-        var config = parent.layui.config;
-        var layer = parent.layui.layer;
-        var util = parent.layui.util;
-        var admin = parent.layui.admin;
-        var formSelects = parent.layui.formSelects;
-        var $ = parent.layui.jquery;
-        debugger
-        // 回显组织数据
-        let hospitals = admin.getTempData('t_hospital');
-        if (hospitals != null) {
-            $('input[name="hospitalName"]').val(hospitals.hospitalName);
-            $('input[name="orgId"]').val(hospitals.orgId);
-            if (!strUtil.isEmpty(hospitals.id)) {
-                $('input[name="hospitalId"]').val(hospitals.id);
-            }
-            else {
-                $('input[name="hospitalId"]').val(hospitals.hospitalId);
-            }
-        }
-        //加载当前所在部门的在职员工
-        admin.req('api-user/users/getThisUserOrganizationUser', {}, function (data) {
-            layer.closeAll('loading');
-            if (0 === data.code) {
-                if (data.data.length > 0) {
-                    $.each(data.data, function (index, item) {
-                        //往下拉菜单里添加元素
-                        console.log(item.nickname)
-                        $('#serverUserName').append(new Option(item.nickname, item.id, false, false));
-                    })
-                    $('#serverUserName').val(config.getUser().id);
-                    $('#serverUserId').val(config.getUser().id);
-                }
-            } else {
-                layer.msg(data.msg, { icon: 2, time: 500 });
-            }
-        }, 'get');
-        // 表单提交事件
-        form.on('submit(department-form-submit)', function (data) {
-            layer.load(2);
-            if (data.field != null) {
-                data.field.serverUserId = data.field.serverUserName;
-                data.field.serverUserName = $("#serverUserName option:selected").text();
-                admin.req('api-user/sysdepartment', JSON.stringify(data.field), function (data) {
-                    layer.closeAll('loading');
-                    if (data.code == 0) {
-                        layer.msg(data.msg, { icon: 1, time: 1000 }, function () {
-                            admin.finishPopupCenter();
-                        });
-                    } else {
-                        layer.msg(data.msg, { icon: 2, time: 1000 });
-                    }
-                }, "POST");
-            }
-            else {
-                layer.msg("数据异常!", { icon: 2, time: 1000 });
-            }
-            return false;
-        });
-        form.render();
-    });
-</script>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/groupProduct.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/groupProduct.html
index 09e5bf6..7eb5f0f 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/groupProduct.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/groupProduct.html
@@ -8,10 +8,10 @@
     </div>
     <div class="layui-card-body">
         <div class="layui-form toolbar">&emsp;
-            <input type="text" name="date" id="datebegin" lay-verify="date" placeholder="yyyy-MM-dd" autocomplete="off"
+            <input type="text" name="date" id="datebegin" lay-verify="date"  autocomplete="off"
                 class="layui-input search-input">
             至
-            <input type="text" name="date" id="dateend" lay-verify="date" placeholder="yyyy-MM-dd" autocomplete="off"
+            <input type="text" name="date" id="dateend" lay-verify="date"  autocomplete="off"
                 class="layui-input search-input"> &emsp;
             <button id="product-btn-search" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>
         </div>
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
index 809efd5..1cc5e0c 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
@@ -133,6 +133,20 @@
                 admin.putTempData("t_hospital", data);
                 showEditModel("edit");
             }
+            else if(layEvent==="pay")
+            {
+                //充值
+                admin.putTempData("t_hospital", data);
+                admin.popupCenter({
+                title: '医院充值',
+                path: 'pages/opration/recharge.html',
+                area: '1200px',
+                offset:'10px',
+                finish: function () {
+                    $('#hospita-btn-search').click();
+                }
+            });
+            }
         });
         // 搜索按钮点击事件
         $('#hospita-btn-search').click(function () {
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html
index 07d3f1f..593a308 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html
@@ -127,7 +127,7 @@
     <div class="layui-form-item">
         <label class="layui-form-label">医院简介</label>
         <div class="layui-input-block">
-            <textarea name="hospital_about" class="layui-textarea" maxlength="500"></textarea>
+            <textarea name="hospitalAbout" class="layui-textarea" maxlength="500"></textarea>
         </div>
     </div>
     <div class="layui-form-item model-form-footer">
@@ -168,14 +168,14 @@
         form.on("select(hospitalCity)", function (data) {
             area.areaData("#hospitalArea", 3, data.value, "");
             //区号,金纬度自动赋值
-            let cityData = admin.getTempData("t_city");
-            if (cityData != null) {
-                cityData.forEach(function (item) {
+            var cityDataFor = admin.getTempData("t_city");
+            if (cityDataFor != null) {
+                cityDataFor.forEach(function (item) {
                     if (data.value == item.id) {
                         $("#areaCode").val(item.areaCitycode);
                         $("#longitude").val(item.areaLng);
                         $("#latitude").val(item.areaLat);
-                        break;
+                        return;
                     }
                 })
             }
@@ -200,7 +200,6 @@
                 data.field.hospitalArea = $("#hospitalArea option:selected").text() != "选择区县" ? $("#hospitalArea option:selected").text() : "";
 
                 admin.req('api-user/syshospital', JSON.stringify(data.field), function (data) {
-                    layer.closeAll('loading');
                     if (data.code === 0) {
                         //存储科室数据
                         var departmentData = {
@@ -270,16 +269,16 @@
                     return false;
                 }
             }
-                let hosIdForDep = $("#id").val();
-                if (!strUtil.isEmpty($("#departmentName").val()) && !strUtil.isEmpty(hosIdForDep)) {
-                    admin.req('api-user/sysdepartment/checkName', { hospitalId: hosIdForDep, departmentName: $("#departmentName").val() }, function (data) {
-                        layer.closeAll('loading');
-                        if (0 != data.code) {
-                            layer.msg(data.msg, { icon: 2, time: 1000 });
-                            return false;
-                        }
-                    }, 'get');
-                }
+            let hosIdForDep = $("#id").val();
+            if (!strUtil.isEmpty($("#departmentName").val()) && !strUtil.isEmpty(hosIdForDep)) {
+                admin.req('api-user/sysdepartment/checkName', { hospitalId: hosIdForDep, departmentName: $("#departmentName").val() }, function (data) {
+                    layer.closeAll('loading');
+                    if (0 != data.code) {
+                        layer.msg(data.msg, { icon: 2, time: 1000 });
+                        return false;
+                    }
+                }, 'get');
+            }
         })
         //按照ID装载数据
         var loadDatas = function (hosId) {
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_tab.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_tab.html
deleted file mode 100644
index 9fe1bea..0000000
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_tab.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<div class="layui-tab">
-    <ul class="layui-tab-title">
-      <li class="layui-this">组织信息</li>
-      <li>基本信息</li>
-    </ul>
-    <div class="layui-tab-content">
-      <div class="layui-tab-item layui-show">
-        <form id="app-form" lay-filter="app-form" class="layui-form model-form">
-          <input name="id" type="hidden" />
-          <div class="layui-form-item">
-              <label class="layui-form-label">上级组织</label>
-              <div class="layui-input-block">
-                  <input name="orgParentId" id="orgParentId" type="hidden" value="-1"/>
-                  <input  placeholder="输入上级组织名称..." pname="orgParentName" id="orgParentName" type="text" class="layui-input" maxlength="50"  />
-              </div>
-          </div>
-          <div class="layui-form-item">
-              <label class="layui-form-label">组织类型</label>
-              <div class="layui-input-block">
-                  <select id="orgAttr" name="orgAttr" placeholder="选择一个类型">
-                      <option value="0" selected='selected'>集团</option>
-                      <option value="1">公司/医院</option>
-                      <option value="2">部门/科室</option>
-                      <option value="3">子部门/子科室</option>
-                  </select>
-              </div>
-          </div>
-          <div class="layui-form-item">
-              <label class="layui-form-label">组织层级</label>
-              <div class="layui-input-block">
-                  <select name="orgLevel" id='orgLevel' placeholder="选择一个层级">
-                      <option value="0" selected='selected'>1级</option>
-                      <option value="1">2级</option>
-                      <option value="2">3级</option>
-                      <option value="3">4级</option>
-                      <option value="4">5级</option>
-                      <option value="5">6级</option>
-                      <option value="6">7级</option>
-                      <option value="7">8级</option>
-                      <option value="8">9级</option>
-                  </select>
-              </div>
-          </div>
-          <div class="layui-form-item">
-              <label class="layui-form-label">组织名称</label>
-              <div class="layui-input-block">
-                  <input name="orgName" id="orgName" type="text" class="layui-input" maxlength="20" />
-              </div>
-          </div>
-          <div class="layui-form-item model-form-footer">
-              <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button>
-              <button class="layui-btn" id="sure" lay-filter="org-form-submit" lay-submit>保存</button>
-          </div>
-          <input name="id" id="id" type="hidden" value=""/>
-      </form>
-      </div>
-      <div class="layui-tab-item">
-    </div>
-  </div>
-  <script>
-  layui.use(['form', 'table', 'laydate', 'util','config', 'admin','element','autocomplete'], 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;
-        //树形插件
-        var tree = layui.tree;
-        var $ = layui.jquery;
-        var element = layui.element;
-        var autocomplete=layui.autocomplete;
-        //自动完成-上级组织
-        autocomplete.render({
-            elem: $('#orgParentName')[0],
-            keywordsName:'orgName',//查询关键字名称
-            url: config.base_server +'api-user/sysorganization/listByName?page=1&limit=9999999',
-            template_val: '{{d.orgName}}',//选择后文本框显示的数据字段
-            template_txt: "<div class='layui-table-cell'>{{d.orgName}}</div>",//下拉列表模板
-            onselect: function (resp) {
-              $("#orgParentId").val(resp.id);
-              $("#orgLevel").val(resp.orgLevel+1);
-              $("#orgAttr").val(resp.orgLevel+1);
-              form.render();
-            }
-        })
-
-        //自动完成-医院名称
-        autocomplete.render({
-            elem: $('#orgName')[0],
-            keywordsName:'orgName',//查询关键字名称
-            url: config.base_server +'api-user/sysorganization/listByName?page=1&limit=9999999',
-            template_val: '{{d.orgName}}',//选择后文本框显示的数据字段
-            template_txt: "<div class='layui-table-cell'>{{d.orgName}}</div>",//下拉列表模板
-            onselect: function (resp) {
-              $("#id").val(resp.id);
-              form.render();
-            }
-        })
-
-        // 表单提交事件
-        form.on('submit(org-form-submit)', function (data) {
-            layer.load(2);
-            admin.req('api-user/sysorganization', JSON.stringify(data.field), function (data) {
-                layer.closeAll('loading');
-                if (data.code == 0) {
-                    //将组织数据存入本地
-                    admin.putTempData('t_org', data.data);
-                    //组织数据维护成功后,进入医院基本信息页面
-                    layer.msg("组织数据编辑成功,继续编辑基本数据...", { icon: 1, time: 1000 },function(){
-                        //admin.finishPopupCenter();
-                    });
-                } else {
-                    layer.msg(data.msg, { icon: 2, time: 1000 });
-                }
-            }, "POST");
-            return false;
-        });
-        form.render();
-        getData();
-    });
-  </script>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product.html
index 7dd3ce8..175e7ce 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product.html
@@ -45,6 +45,14 @@
                 cols: [[
                     { field: 'proName', width: 300, title: '产品名称' },
                     {
+                        field: 'proType',align: 'center', width: 100, templet: function (d) {
+                            if (d.proType === 0)
+                                return "试用"
+                            else
+                                return "正式"
+                        }, title: '类型'
+                    },
+                    {
                         field: 'proTime', width: 150, title: '有效时长', templet: function (d) {
                             switch (d.proTimeUnit) {
                                 case 0:
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/productdetail.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/productdetail.html
index 89896c5..268629e 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/productdetail.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/productdetail.html
@@ -21,7 +21,7 @@
 </script>
 <!-- 表格状态列 -->
 <script type="text/html" id="product-tpl-state">
-    <input type="checkbox" lay-filter="product-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="未处理|已处理"
+    <input type="checkbox" lay-filter="product-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="启用|已禁用"
            {{d.enabled==true?'checked':''}}/>
 </script>
 
@@ -64,7 +64,7 @@
                     { field: 'createTime', width: 160, sort: true, title: '创建时间',templet:function(d){
                         return new Date(d.createTime).dateFormat("yyyy/MM/dd hh:mm:ss");
                     } },
-                    { field: 'enabled', width: 150, templet: '#product-tpl-state', sort: true, title: '状态' },
+                    { field: 'enabled', width: 100, templet: '#product-tpl-state', sort: true, title: '状态' },
                     { align: 'center', width: 100, toolbar: '#product-table-bar', title: '操作' }
                 ]]
             });
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html
new file mode 100644
index 0000000..8e45cfb
--- /dev/null
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html
@@ -0,0 +1,444 @@
+<form id="recharge-form" lay-filter="recharge-form" class="layui-form">
+    <div class="layui-tab" style="margin-top: 5px;">
+        <ul class="layui-tab-title">
+            <li class="layui-this">合同信息</li>
+        </ul>
+        <div class="layui-tab-content" style="margin: 0px;">
+            <div class="layui-tab-item layui-show">
+                <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;">医院名称</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="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>
+                            <input name="hospitalAreas" id="hospitalAreas" type="text"
+                                style="border: none; width: 250px; margin-top:-10px" readonly class="layui-input" />
+                        </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;width: 120px;" readonly />
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item" style="padding: 0; margin-bottom: 0px;">
+                    <div class="layui-row">
+                        <div class="layui-col-sm4">
+                            <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" />
+                            </div>
+                        </div>
+                        <div class="layui-col-sm3">
+                            <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"/>
+                            </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-input-block">
+                                <input autocomplete="off" name="contractEndTime" id="contractEndTime" type="text" class="layui-input"
+                                    maxlength="50" lay-verify="required" required />
+                            </div>
+                        </div>
+                        <div class="layui-col-sm4">
+                            <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>
+        </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: 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>
+    </div>
+
+    <div class="layui-tab" style="margin: 0px;">
+        <ul class="layui-tab-title">
+            <li class="layui-this">待充值产品</li>
+        </ul>
+        <div class="layui-tab-content">
+            <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 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" lay-filter="recharge-form-submit" lay-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">
+    <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', '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;
+        var $ = layui.jquery;
+        var laydate = layui.laydate;
+
+        //执行一个laydate实例
+        laydate.render({
+            elem: '#contractBeginTime'//指定元素
+        });
+        laydate.render({
+            elem: '#contractEndTime' //指定元素
+        });
+        laydate.render({
+            elem: '#contractTime', //指定元素
+            value: new Date().dateFormat("yyyy-MM-dd")
+        });
+        //现将临时数据清理
+        admin.putTempData("t_tempProduct", "");
+        //待充值列表
+        var waitRecharge = function () {
+            table.render({
+                elem: '#product-table-temp',
+                data: admin.getTempData("t_tempProduct"),
+                page: false,
+                height: '120px',
+                cols: [[
+                    { field: 'proName', width: 320, title: '产品名称', align: 'center', fixed: 'left' },
+                    {
+                        field: 'proType', align: 'center', width: 100, 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: 'recordCount', width: 110, align: 'center', title: '报告数' },
+                    { field: 'ailightCount', 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: 80, toolbar: '#product-tpl-bar-temp', title: '操作' }
+                ]]
+            });
+        }
+
+        //回显医院基本数据
+        let hospitalData = admin.getTempData('t_hospital');
+        if (hospitalData != null) {
+            form.val('recharge-form', hospitalData);
+            $("#hospitalAreas").val(hospitalData.hospitalProvince + " " + hospitalData.hospitalCity + " " + hospitalData.hospitalArea);
+        }
+        //装载产品数据
+        table.render({
+            elem: '#product-table',
+            url: config.base_server + 'api-opration/product',
+            method: 'GET',
+            headers: { 'Authorization': 'Bearer ' + config.getToken().access_token },
+            page: false,
+            height: '300px',
+            where: { enabled: 1 },
+            cols: [[
+                { field: 'proName', sort: true, width: 300, 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: 'recordCount', width: 100, align: 'center', title: '报告数' },
+                { field: 'ailightCount', width: 100, align: 'center', title: '读片量' },
+                {
+                    field: 'beginTime', align: 'center', width: 130, title: '开始日期', templet: function (d) {
+                        return getNowDate();
+                    }, event: "date", edit: 'text'
+                },
+                {
+                    field: 'endTime', align: 'center', width: 130, title: '结束日期', templet: function (d) {
+                        return getNowDate(d.proTime, d.proTimeUnit);
+                    }, event: "date", edit: 'text'
+                },
+                { 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: '操作' }
+            ]]
+        });
+        //待充值列表功能操作
+        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 data = obj.data;
+            var selectData = {};
+            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 (!strUtil.isEmpty(data.beginTime) && !strUtil.isEmpty(data.endTime)) {
+                    if (dateUtil.compareDate(data.endTime, data.beginTime)) {
+                        tempDataList(data);
+                        waitRecharge();
+                    }
+                    else {
+                        layer.msg("结束时间必须大于开始时间!");
+                        return false;
+                    }
+                }
+                else {
+                    layer.msg("时间格式有误!");
+                    return false;
+                }
+            }
+        });
+        //监听单元格编辑 判断日期格式
+        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) {
+            var now = new Date();
+            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 + 1)).dateFormat("yyyy-MM-dd");
+                        break;
+                    case 2:
+                        return new Date(now.setFullYear(now.getFullYear() + proTime)).dateFormat("yyyy-MM-dd");
+                        break;
+                }
+            }
+        }
+        // 产品待充值数据
+        var tempDataList = function (data) {
+            if (!strUtil.isEmpty(data)) {
+                var listData = admin.getTempData("t_tempProduct");
+                if (strUtil.isEmpty(listData)) {
+                    listData = new Array();
+                }
+                $.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 {
+                admin.putTempData("t_tempProduct", "");
+            }
+        }
+        //移除指定数据
+        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);
+            }
+        }
+        form.on('submit(recharge-form-submit)', function (data) {
+            layer.load(2);
+            var listData = admin.getTempData("t_tempProduct");
+            if (listData != null) {
+                if (data.field != null) {
+                    admin.req('api-opration/contract', JSON.stringify(data.field), function (data) {
+                        layer.closeAll('loading');
+                        if (data.code === 0) {
+                            var orderData = data.data;
+                            //处理订单明细数据
+                            var listDetailData = new Array();
+                            $.each(listData, function (index, item) {
+                                var detailData = {
+                                    orderId: orderData.id,
+                                    proId: item.id,
+                                    proType: item.proType,
+                                    proName: item.proName,
+                                    isShare: item.isShare,
+                                    ailightCount: item.ailightCount,
+                                    recordCount: item.recordCount,
+                                    proBegintime: new Date(item.beginTime+' 00:00:00'),
+                                    proEndtime: new Date(item.endTime+' 23:59:59')
+                                };
+                                listDetailData.push(detailData);
+                            })
+                            if (listDetailData.length > 0) {
+                                //提交订单数据
+                                admin.req('api-opration/productorderdetail/saveall', JSON.stringify(listDetailData), function (data) {
+                                    layer.closeAll('loading');
+                                    if (data.code === 0) {
+                                        //现将临时数据清理
+                                        admin.putTempData("t_tempProduct", "");
+                                        layer.msg(data.msg, { icon: 1, time: 1000 }, function () {
+                                            admin.finishPopupCenter();
+                                        });
+                                    }
+                                    else {
+                                        layer.msg(data.msg, { icon: 2, time: 1000 });
+                                    }
+                                }, 'POST');
+                            }
+                            else {
+                                layer.msg("充值数据异常为空!", { icon: 2, time: 1000 });
+                            }
+                        }
+                        else {
+                            layer.msg(data.msg, { icon: 2, time: 1000 });
+                        }
+                    }, 'POST');
+                }
+                else {
+                    layer.msg("数据异常!", { icon: 2, time: 1000 });
+                }
+            }
+            else {
+                layer.msg("请先将要充值的产品加入待充值!", { icon: 2, time: 2000 });
+            }
+            layer.closeAll('loading');
+            return false;
+        });
+    });
+</script>
\ No newline at end of file

--
Gitblit v1.8.0