From e80adff2cfff2fa9d29aff9e5a7f2feb52681ef8 Mon Sep 17 00:00:00 2001
From: liuke <123456>
Date: Fri, 11 Dec 2020 18:34:00 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java                                                       |    4 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ProductOrderDetailMapper.java                           |    2 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysProductServiceImpl.java                        |    1 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml                                                  |    7 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/HospitalScreeningController.java                 |   52 
 kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java                                                                        |    9 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js                                                                                                |    2 
 kidgrow-config/src/main/resources/application-dev.properties                                                                                                                 |    4 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java                |   29 
 kidgrow-business/kidgrow-opration-center/pom.xml                                                                                                                             |    5 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/SreeningOrganizationService.java                         |   20 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/DiagnosticServiceFallbackFactory.java           |    5 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java                      |    2 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/HospitalScreeningServiceImpl.java                 |   95 +
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ProductOrderService.java                                 |    8 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/diagnosisRecord.html                                                                                |   27 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IScreeningOrganizationInfoService.java                 |   15 
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java                                        |    6 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java                        |    3 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderRecordController.java                |   11 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ScreeningOrganizationInfoMapper.java                    |   14 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/DiagnosticService.java                                   |    8 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ScreeningOrganizatonServiceFallbackFactory.java |   13 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ScreeningOrganizationInfoMapper.xml                                           |   19 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java                |    9 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderRecordService.java                        |    5 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/rechargeupdate.html                                                                                 | 1093 ++++++++++++++++++++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ScreeningHospitalDataExcel.java                          |   68 +
 kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml                                                                                              |    2 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml                                                   |   13 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital.html                                                                               |   23 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ScreeningOrganizationInfoController.java         |   30 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrderDetail.java                                  |   17 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrder.java                                        |    3 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/exportScreeningHospital.html                                                                         |  108 ++
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html                                                                                       |   26 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital_form.html                                                                          |    6 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/HospitalScreeningMapper.java                            |   13 
 kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/controller/OAuth2Controller.java                                                                             |    4 
 pom.xml                                                                                                                                                                      |   22 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IHospitalScreeningService.java                         |   35 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ScreeningHospitalService.java                            |   39 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html                                                                                       |  931 +++++++++++++----
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/saasClientPay.html                                                                                  |    3 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ScreeningOrganizationInfoServiceImpl.java         |   17 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java                                   |    7 
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java                                       |   15 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/admin.js                                                                                                    |    2 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html                                                                                    |    1 
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java                                     |   13 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/ProductOrderDetailVo.java                                   |    4 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/config/RedisStartupRunner.java                              |   19 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ScreeningHospitalServiceFallbackFactory.java    |   38 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/equipmentDocking.html                                                                               |    1 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ProductOrderFallbackFactory.java                |    6 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/contract.html                                                                                       |  180 ++-
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java                 |   10 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js                                                                                                   |    2 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java                |   41 
 59 files changed, 2,759 insertions(+), 408 deletions(-)

diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java
index c490b1f..4d30ebc 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java
@@ -149,7 +149,11 @@
                     fileFolder += "HospitalLogo/";
                 } else if (imgType.toLowerCase().equals("doctor")) {
                     fileFolder += "DoctorImage/";
-                } else {
+                } else if (imgType.toLowerCase().equals("customerhospital")) {
+                    fileFolder += "Customer/Hospital/" + folderByDate + "/";
+                } else if (imgType.toLowerCase().equals("customerhead")) {
+                    fileFolder += "Customer/HeadImg/" + folderByDate + "/";
+                }else {
                     fileFolder += "OtherImage/" + folderByDate + "/";
                 }
             } else {
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/DiagnosticService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/DiagnosticService.java
index d853939..fe8379d 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/DiagnosticService.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/DiagnosticService.java
@@ -7,6 +7,8 @@
 import com.kidgrow.ribbon.config.FeignHttpInterceptorConfig;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.Map;
@@ -26,4 +28,10 @@
      */
     @GetMapping(value = "/diagnostic/diagnosticitem")
     ResultBody<PageResult> getDiagnosticItemList(@RequestParam Map<String, Object> params);
+
+    /**
+     * feign rpc访问远程 接口
+     */
+    @PostMapping(value = "/ReportRecord/operation/pdfname/{diagnosticId}/{reportType}/{hospitalId}/{departId}")
+    ResultBody getPdfPathForOperation(@PathVariable("diagnosticId") String diagnosticId,@PathVariable("reportType") Integer reportType,@PathVariable("hospitalId") Long hospitalId,@PathVariable("departId") Long departId);
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ProductOrderService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ProductOrderService.java
index b3ba0c6..ad4e281 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ProductOrderService.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ProductOrderService.java
@@ -3,6 +3,7 @@
 import com.kidgrow.common.constant.ServiceNameConstants;
 import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.oprationcenter.feign.fallback.ProductOrderFallbackFactory;
+import com.kidgrow.oprationcenter.model.ProductOrder;
 import com.kidgrow.ribbon.config.FeignHttpInterceptorConfig;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -26,4 +27,11 @@
      */
     @PostMapping(value = "contract/saveTemp")
     ResultBody saveProductDetail(@RequestBody Map<String,Object> params);
+    /**
+     *
+     * @param productOrder
+     * @return
+     */
+    @PostMapping(value = "/contract/getStatus")
+    ResultBody getStatus(@RequestBody ProductOrder productOrder);
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ScreeningHospitalService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ScreeningHospitalService.java
new file mode 100644
index 0000000..d3ace94
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ScreeningHospitalService.java
@@ -0,0 +1,39 @@
+package com.kidgrow.oprationcenter.feign;
+
+import com.kidgrow.common.constant.ServiceNameConstants;
+import com.kidgrow.common.model.PageResult;
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.feign.fallback.ScreeningHospitalServiceFallbackFactory;
+import com.kidgrow.oprationcenter.model.HospitalScreening;
+import com.kidgrow.ribbon.config.FeignHttpInterceptorConfig;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Map;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2020/11/16 15:54 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+@FeignClient(value = ServiceNameConstants.OPRATION_SERVER,configuration= FeignHttpInterceptorConfig.class,
+        fallbackFactory = ScreeningHospitalServiceFallbackFactory.class, decode404 = true)
+public interface ScreeningHospitalService {
+    /**
+     *
+     * @param hospitalScreening
+     * @return
+     */
+    @PostMapping(value = "/hospitalscreening/query")
+    ResultBody findByObject(@RequestBody HospitalScreening hospitalScreening);
+
+    @GetMapping(value = "/hospitalscreening")
+    PageResult<HospitalScreening> list(@RequestParam Map<String, Object> params);
+
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/SreeningOrganizationService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/SreeningOrganizationService.java
index 8816ab1..3d83c10 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/SreeningOrganizationService.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/SreeningOrganizationService.java
@@ -1,6 +1,7 @@
 package com.kidgrow.oprationcenter.feign;
 
 import com.kidgrow.common.constant.ServiceNameConstants;
+import com.kidgrow.common.model.PageResult;
 import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.oprationcenter.feign.fallback.ScreeningOrganizatonServiceFallbackFactory;
 import com.kidgrow.oprationcenter.model.ScreeningOrganizationInfo;
@@ -8,6 +9,9 @@
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Map;
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
@@ -25,4 +29,20 @@
      */
     @PostMapping(value = "/screeningorganizationinfo/query")
     ResultBody findByObject(@RequestBody ScreeningOrganizationInfo organizationInfo);
+
+    /**
+     *
+     * @param id
+     * @return
+     */
+    @PostMapping(value = "/screeningorganizationinfo/getOrganizationListByHospitalId")
+    ResultBody getOrganizationListByHospitalId(@RequestBody String id);
+
+    /**
+     * 通过医院关键字查询机构
+     * @param params
+     * @return
+     */
+    @PostMapping(value = "/screeningorganizationinfo/listByKeyWord")
+    PageResult<ScreeningOrganizationInfo> listByKeyWord(@RequestParam Map<String, Object> params);
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/DiagnosticServiceFallbackFactory.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/DiagnosticServiceFallbackFactory.java
index c610c2a..6edc94f 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/DiagnosticServiceFallbackFactory.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/DiagnosticServiceFallbackFactory.java
@@ -18,6 +18,11 @@
            public ResultBody<PageResult> getDiagnosticItemList(Map<String, Object> params) {
                return ResultBody.failed().msg("getDiagnosticItemList的FeignClient调用参数传递测试失败");
            }
+
+           @Override
+           public ResultBody getPdfPathForOperation(String diagnosticId, Integer reportType, Long hospitalId,  Long departId) {
+               return ResultBody.failed().msg("getPdfPathForOperation的FeignClient调用参数传递测试失败");
+           }
        };
     }
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ProductOrderFallbackFactory.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ProductOrderFallbackFactory.java
index 9f68d19..7f1bfce 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ProductOrderFallbackFactory.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ProductOrderFallbackFactory.java
@@ -2,6 +2,7 @@
 
 import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.oprationcenter.feign.ProductOrderService;
+import com.kidgrow.oprationcenter.model.ProductOrder;
 import feign.hystrix.FallbackFactory;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
@@ -17,6 +18,11 @@
             public ResultBody saveProductDetail(Map<String, Object> params) {
                 return ResultBody.failed().msg("saveProductDetail的FeignClient调用失败");
             }
+
+            @Override
+            public ResultBody getStatus(ProductOrder productOrder) {
+                return ResultBody.failed().msg("获取正式和试用的的FeignClient接口失败");
+            }
         };
     }
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ScreeningHospitalServiceFallbackFactory.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ScreeningHospitalServiceFallbackFactory.java
new file mode 100644
index 0000000..1c1f76f
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ScreeningHospitalServiceFallbackFactory.java
@@ -0,0 +1,38 @@
+package com.kidgrow.oprationcenter.feign.fallback;
+
+
+import com.kidgrow.common.model.PageResult;
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.feign.ScreeningHospitalService;
+import com.kidgrow.oprationcenter.model.HospitalScreening;
+import feign.hystrix.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2020/11/16 15:58 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+@Component
+public class ScreeningHospitalServiceFallbackFactory implements FallbackFactory<ScreeningHospitalService> {
+
+    @Override
+    public ScreeningHospitalService create(Throwable throwable) {
+        return new ScreeningHospitalService(){
+            @Override
+            public ResultBody findByObject(HospitalScreening hospitalScreening) {
+                return ResultBody.failed().msg("分客户端,获取医院失败");
+            }
+
+            @Override
+            public PageResult<HospitalScreening> list(Map<String, Object> params) {
+                return PageResult.<HospitalScreening>builder().code(1000).build();
+            }
+        };
+    }
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ScreeningOrganizatonServiceFallbackFactory.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ScreeningOrganizatonServiceFallbackFactory.java
index c618ec2..4f77d71 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ScreeningOrganizatonServiceFallbackFactory.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ScreeningOrganizatonServiceFallbackFactory.java
@@ -1,11 +1,14 @@
 package com.kidgrow.oprationcenter.feign.fallback;
 
 
+import com.kidgrow.common.model.PageResult;
 import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.oprationcenter.feign.SreeningOrganizationService;
 import com.kidgrow.oprationcenter.model.ScreeningOrganizationInfo;
 import feign.hystrix.FallbackFactory;
 import org.springframework.stereotype.Component;
+
+import java.util.Map;
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
@@ -26,6 +29,16 @@
             public ResultBody findByObject(ScreeningOrganizationInfo organizationInfo) {
                 return ResultBody.failed().msg("saveProductDetail的FeignClient调用失败");
             }
+
+            @Override
+            public ResultBody getOrganizationListByHospitalId(String id) {
+                return ResultBody.failed().msg("getOrganizationListByHospitalId的FeignClient调用失败");
+            }
+
+            @Override
+            public PageResult<ScreeningOrganizationInfo> listByKeyWord(Map<String, Object> params) {
+                return PageResult.<ScreeningOrganizationInfo>builder().code(1000).build();
+            }
         };
     }
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java
index 380586f..d03f898 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/HospitalScreening.java
@@ -1,5 +1,6 @@
 package com.kidgrow.oprationcenter.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -79,4 +80,10 @@
      * 微站首页中间位置图片
      */
     private String homePage;
+
+    /**
+     * 查询关键字
+     */
+    @TableField(exist = false)
+    private String keyWord;
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrder.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrder.java
index d6bf227..1e9aa55 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrder.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrder.java
@@ -63,6 +63,9 @@
      */
     @NotEmpty(message = "合同名称不能为空")
     private String contractTitle;
+
+    @NotNull(message = "合同名数量不能为空")
+    private Integer contractNum;
     /**
      * 合同开始时间
      */
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrderDetail.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrderDetail.java
index 46ac6c3..633d2fa 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrderDetail.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ProductOrderDetail.java
@@ -50,10 +50,14 @@
     @NotEmpty(message = "产品/明细名称不能为空")
     private String proName;
     /**
-     * 产品类型 0试用 1正式
+     * 产品类型 0试用 1正式 3 自定义
      */
     @NotNull(message = "产品类型不能为空")
     private Integer proType;
+    /**
+     * 产品使用期限限制   1有限制,0 无限制
+     */
+    private Integer termType;
     /**
      * 是否共享 0否 1是
      */
@@ -66,10 +70,21 @@
     @NotEmpty(message = "是否删除,1删除,0未删除不能为空")
     private Boolean isDel;
     /**
+     * 产品的读片总量
+     */
+    @NotNull(message = "产品的读片总量")
+    private Integer orderAilightCount;
+    /**
+     * 产品的报告总量
+     */
+    @NotNull(message = "产品的报告总量")
+    private Integer orderRecordCount;
+    /**
      * 读片量
      */
     @NotNull(message = "读片量不能为空")
     private Integer ailightCount;
+
     /**
      * 报告量
      */
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ScreeningHospitalDataExcel.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ScreeningHospitalDataExcel.java
new file mode 100644
index 0000000..75b3441
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ScreeningHospitalDataExcel.java
@@ -0,0 +1,68 @@
+package com.kidgrow.oprationcenter.model;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2020/11/20 09:56 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+@Data
+public class ScreeningHospitalDataExcel implements Serializable {
+
+    private static final long serialVersionUID = -5886012896705137070L;
+
+    @Excel(name = "机构编码", height = 20, width = 30, isImportField = "true_st")
+    private String organizationNo;
+
+    @Excel(name = "机构名称", height = 20, width = 30, isImportField = "true_st")
+    private String organizationName;
+
+    @Excel(name = "儿童ID", height = 20, width = 30, isImportField = "true_st")
+    private String childId;
+
+    @Excel(name = "儿童名称", height = 20, width = 30, isImportField = "true_st")
+    private String childName;
+
+    @Excel(name = "性别", replace = { "男_0", "女_1" }, isImportField = "true_st")
+    private String childSex;
+
+    @Excel(name = "出生日期", isImportField = "true_st", width = 20)
+    private String childBirthday;
+
+    @Excel(name = "联系方式", height = 20, width = 30, isImportField = "true_st")
+    private String phoneNum;
+
+    @Excel(name = "年龄", height = 20, width = 30, isImportField = "true_st")
+    private String age;
+
+    @Excel(name = "身高百分位", height = 20, width = 30, isImportField = "true_st")
+    private String heightPer;
+
+    @Excel(name = "体重", height = 20, width = 30, isImportField = "true_st")
+    private String weight;
+
+    @Excel(name = "体重状态", height = 20, width = 30, isImportField = "true_st")
+    private String fatState;
+
+    @Excel(name = "bmi", height = 20, width = 30, isImportField = "true_st")
+    private String bmi;
+
+    @Excel(name = "诊断时间",  isImportField = "true_st", width = 20)
+    private String diagnoseTime;
+
+    @Excel(name = "靶身高", height = 20, width = 30, isImportField = "true_st")
+    private String targetHeight;
+
+    @Excel(name = "预测身高", height = 20, width = 30, isImportField = "true_st")
+    private String foreastHeight;
+
+    @Excel(name = "预测身高百分位", height = 20, width = 30, isImportField = "true_st")
+    private String foreastHeightPer;
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/ProductOrderDetailVo.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/ProductOrderDetailVo.java
index a019c10..b0430f5 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/ProductOrderDetailVo.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/ProductOrderDetailVo.java
@@ -9,4 +9,8 @@
     private Long hospitalId;
     private String departmentName;
     private Long departmentId;
+    /**
+     * 使用状态
+     */
+    private String useType;
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/HospitalScreeningMapper.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/HospitalScreeningMapper.java
index 1ca7145..9ddb567 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/HospitalScreeningMapper.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/HospitalScreeningMapper.java
@@ -10,15 +10,17 @@
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @version 1.0
  * @Description: 筛查医院信息表-未完待续<br>
  * @Project: 用户中心<br>
  * @CreateDate: Created in 2020-04-01 09:37:05 <br>
  * @Author: <a href="4345453@kidgrow.com">liuke</a>
- * @version 1.0
  */
 public interface HospitalScreeningMapper extends SuperMapper<HospitalScreening> {
     /**
      * 分页查询筛查医院信息表-未完待续列表
+     *
      * @param page
      * @param params
      * @return
@@ -27,6 +29,7 @@
 
     /**
      * 根据HospitalScreening对象当做查询条件进行查询
+     *
      * @param
      * @return HospitalScreening对象
      */
@@ -34,8 +37,16 @@
 
     /**
      * 根据医院名称模糊查询医院数据列表
+     *
      * @param hospitalName
      * @return
      */
     List<HospitalScreening> findByName(@Param("hospitalName") String hospitalName);
+
+    /**
+     * 查询所有有效医院,放入redis中
+     *
+     * @return
+     */
+    List<HospitalScreening> findAll();
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ProductOrderDetailMapper.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ProductOrderDetailMapper.java
index 6408ac2..fba1503 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ProductOrderDetailMapper.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ProductOrderDetailMapper.java
@@ -109,5 +109,5 @@
      * @param departmentId
      * @return
      */
-    List<ProductOrderDetail> departmentProductDetail(Page<ProductOrderDetail> page,@Param("hospitalId") Long hospitalId,@Param("departmentId") Long departmentId);
+    List<ProductOrderDetail> departmentProductDetail(Page<ProductOrderDetail> page,@Param("hospitalId") Long hospitalId,@Param("departmentId") Long departmentId,@Param("enabled") Boolean enabled);
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ScreeningOrganizationInfoMapper.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ScreeningOrganizationInfoMapper.java
index 2de1e28..004c801 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ScreeningOrganizationInfoMapper.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ScreeningOrganizationInfoMapper.java
@@ -31,4 +31,18 @@
      * @return OrganizationInfo对象
      */
     ScreeningOrganizationInfo findByObject(@Param("p") ScreeningOrganizationInfo organizationInfo);
+
+    /**
+     * 通过医院ID查询机构列表
+     * @param id
+     * @return
+     */
+    List<ScreeningOrganizationInfo> findByHospitalId(@Param("t") Long id);
+
+    /**
+     * 通过医院名称查询机构
+     * @param params
+     * @return
+     */
+    List<ScreeningOrganizationInfo> findByKeyWord(Page<ScreeningOrganizationInfo> page, @Param("p") Map<String, Object> params);
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IHospitalScreeningService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IHospitalScreeningService.java
index 2dcd39a..dced664 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IHospitalScreeningService.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IHospitalScreeningService.java
@@ -4,20 +4,24 @@
 import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.common.service.ISuperService;
 import com.kidgrow.oprationcenter.model.HospitalScreening;
+import com.kidgrow.oprationcenter.model.ScreeningHospitalDataExcel;
 
+import java.util.List;
 import java.util.Map;
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @version 1.0
  * @Description: 筛查医院信息表-未完待续<br>
  * @Project: 用户中心<br>
  * @CreateDate: Created in 2020-04-01 09:37:05 <br>
  * @Author: <a href="4345453@kidgrow.com">liuke</a>
- * @version 1.0
  */
 public interface IHospitalScreeningService extends ISuperService<HospitalScreening> {
     /**
      * 列表
+     *
      * @param params
      * @return
      */
@@ -25,14 +29,16 @@
 
 
     /**
-    * 根据HospitalScreening对象当做查询条件进行查询
-    * @param hospitalScreening
-    * @return HospitalScreening对象
-    */
+     * 根据HospitalScreening对象当做查询条件进行查询
+     *
+     * @param hospitalScreening
+     * @return HospitalScreening对象
+     */
     HospitalScreening findByObject(HospitalScreening hospitalScreening);
 
     /**
      * 状态变更
+     *
      * @param params
      * @return
      */
@@ -40,10 +46,29 @@
 
     /**
      * 根据医院名称模糊查询医院数据列表
+     *
      * @param hospitalName
      * @return
      */
     ResultBody<HospitalScreening> findByName(String hospitalName);
 
+    /**
+     * 导出医院数据
+     *
+     * @param param 参数
+     * @return
+     */
+    List<ScreeningHospitalDataExcel> export(Map<String, Object> param);
+
+    /**
+     * 医院数据放到redis
+     */
+    void tableToRedis();
+
+    /**
+     * @param hospitalScreening
+     */
+    void updateRedisById(HospitalScreening hospitalScreening);
+
 }
 
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 57353ef..066ea2b 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
@@ -130,7 +130,7 @@
      * @param params
      * @return
      */
-    PageResult<ProductOrderDetail> departmentProductDetail(Map<String, Object> params);
+    PageResult<ProductOrderDetailVo> departmentProductDetail(Map<String, Object> params);
     /**
      * 获取最近即将到期的套餐
      * @return
@@ -143,5 +143,6 @@
      * @return
      */
     int getUserdProduct(Long hospitalId,Long departmentId);
+
 }
 
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderRecordService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderRecordService.java
index d3a859d..fbf164c 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderRecordService.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderRecordService.java
@@ -59,5 +59,10 @@
      * @return
      */
     PageResult<GroupProductDetail> groupList(Map<String, Object> params);
+
+    /**
+     * 查看报告
+     */
+    ResultBody getPdfPathForOperation(String diagnosticId, Integer reportType, Long hospitalId,  Long departId);
 }
 
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IScreeningOrganizationInfoService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IScreeningOrganizationInfoService.java
index 64b47fb..3b98928 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IScreeningOrganizationInfoService.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IScreeningOrganizationInfoService.java
@@ -4,6 +4,7 @@
 import com.kidgrow.common.service.ISuperService;
 import com.kidgrow.oprationcenter.model.ScreeningOrganizationInfo;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -29,5 +30,19 @@
     * @return OrganizationInfo对象
     */
     ScreeningOrganizationInfo findByObject(ScreeningOrganizationInfo organizationInfo);
+
+    /**
+     * 通过医院ID查询机构列表
+     * @param id
+     * @return
+     */
+    List<ScreeningOrganizationInfo> findByHospitalId(Long id);
+
+    /**
+     * 通过医院名称查询机构
+     * @param params
+     * @return
+     */
+    PageResult<ScreeningOrganizationInfo> findByKeyWord(Map<String, Object> params);
 }
 
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java
index 20b935b..6ffcdd0 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java
@@ -663,13 +663,17 @@
     private ProductOrderDetail deductionDepartmentProduct(int consumCount, Long hospitalId, Long departmentId) {
         UserProductDetail userProductDetail = productOrderDetailService.getUserProductDetail(hospitalId, departmentId);
         //合并集合
-        userProductDetail.getProductOrderJoinDetailListShare().addAll(userProductDetail.getProductOrderJoinDetailsListDep());
+        userProductDetail.getProductOrderJoinDetailListShare()
+                .addAll(userProductDetail.getProductOrderJoinDetailsListDep());
         List<ProductOrderJoinDetail> productOrderJoinDetailList = userProductDetail.getProductOrderJoinDetailListShare();
         if (productOrderJoinDetailList.size() > 0) {
             //合并后按id排序并筛除已用完的套餐
-            List<ProductOrderJoinDetail> productOrderJoinDetailsNewList = productOrderJoinDetailList.stream().filter(f -> f.getAilightCount() >= consumCount).sorted(Comparator.comparing(ProductOrderJoinDetail::getId)).collect(Collectors.toList());
+            List<ProductOrderJoinDetail> productOrderJoinDetailsNewList = productOrderJoinDetailList
+                    .stream().filter(f -> f.getAilightCount() >= consumCount).collect(Collectors.toList());
             //要使用的套餐信息
-            ProductOrderDetail productOrderDetail = productOrderDetailService.getById(productOrderJoinDetailsNewList.get(0).getId());
+            Long firstId=productOrderJoinDetailsNewList.get(0).getId();
+            logger.info("扣费要使用的套餐ID是id:【{}】", firstId);
+            ProductOrderDetail productOrderDetail = productOrderDetailService.getById(firstId);
             return productOrderDetail;
         }
         return null;
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/HospitalScreeningServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/HospitalScreeningServiceImpl.java
index 79d5fbe..313eaff 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/HospitalScreeningServiceImpl.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/HospitalScreeningServiceImpl.java
@@ -1,14 +1,19 @@
 package com.kidgrow.oprationcenter.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.kidgrow.common.model.PageResult;
 import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.common.service.impl.SuperServiceImpl;
 import com.kidgrow.oprationcenter.mapper.HospitalScreeningMapper;
 import com.kidgrow.oprationcenter.model.HospitalScreening;
+import com.kidgrow.oprationcenter.model.ScreeningHospitalDataExcel;
 import com.kidgrow.oprationcenter.service.IHospitalScreeningService;
+import com.kidgrow.redis.util.RedisUtils;
+import com.kidgrow.report.feign.ReportService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -16,57 +21,69 @@
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @version 1.0
  * @Description: 筛查医院信息表-未完待续<br>
  * @Project: 用户中心<br>
  * @CreateDate: Created in 2020-04-01 09:37:05 <br>
  * @Author: <a href="4345453@kidgrow.com">liuke</a>
- * @version 1.0
  */
 @Slf4j
 @Service
 public class HospitalScreeningServiceImpl extends SuperServiceImpl<HospitalScreeningMapper, HospitalScreening> implements IHospitalScreeningService {
+
+    @Autowired
+    private ReportService reportService;
+    @Autowired
+    private RedisUtils redisUtils;
+
+    private static final String CUSOTMERHOSPITAL = "CUSOTMER_HOSPITAL";
+
     /**
      * 列表
+     *
      * @param params
      * @return
      */
     @Override
-    public PageResult<HospitalScreening> findList(Map<String, Object> params){
+    public PageResult<HospitalScreening> findList(Map<String, Object> params) {
         Page<HospitalScreening> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
-        List<HospitalScreening> list  =  baseMapper.findList(page, params);
+        List<HospitalScreening> list = baseMapper.findList(page, params);
         return PageResult.<HospitalScreening>builder().data(list).code(0).count(page.getTotal()).build();
     }
 
     /**
-   * 根据HospitalScreening对象当做查询条件进行查询
-   * @param hospitalScreening
-   * @return HospitalScreening
-   */
+     * 根据HospitalScreening对象当做查询条件进行查询
+     *
+     * @param hospitalScreening
+     * @return HospitalScreening
+     */
     @Override
-    public HospitalScreening findByObject(HospitalScreening hospitalScreening){
+    public HospitalScreening findByObject(HospitalScreening hospitalScreening) {
         return baseMapper.findByObject(hospitalScreening);
     }
 
     /**
      * 更新状态:推送装填,启停状态
+     *
      * @param params 包含:1、type:0推送,1启停
-     *                     2、ID :ID
-     *                     3、val:对用的值
+     *               2、ID :ID
+     *               3、val:对用的值
      * @return
      */
     @Override
     public ResultBody updateEnabled(Map<String, Object> params) {
-        int type =  MapUtils.getInteger(params,"type");
-        int val =  MapUtils.getInteger(params,"objVal");
-        long id =  MapUtils.getLong(params,"objId");
+        int type = MapUtils.getInteger(params, "type");
+        int val = MapUtils.getInteger(params, "objVal");
+        long id = MapUtils.getLong(params, "objId");
 
         HospitalScreening hospitalScreening = baseMapper.selectById(id);
 
-        if(hospitalScreening == null){
+        if (hospitalScreening == null) {
             return ResultBody.failed("医院数据不存在!");
         }
 
-        switch (type){
+        switch (type) {
             case 0:
                 hospitalScreening.setIsScreeningPush(val);
                 break;
@@ -79,11 +96,14 @@
 
         int count = baseMapper.updateById(hospitalScreening);
 
+        updateRedisById(hospitalScreening);
+
         return count > 0 ? ResultBody.ok().msg("更新成功") : ResultBody.failed("更新失败");
     }
 
     /**
      * 根据医院名称模糊查询医院数据列表
+     *
      * @param hospitalName
      * @return
      */
@@ -91,4 +111,49 @@
     public ResultBody<HospitalScreening> findByName(String hospitalName) {
         return ResultBody.ok().data(baseMapper.findByName(hospitalName)).msg("查询成功");
     }
+
+    /**
+     * 医院数据导出
+     *
+     * @param param 参数
+     * @return
+     */
+    @Override
+    public List<ScreeningHospitalDataExcel> export(Map<String, Object> param) {
+        List<ScreeningHospitalDataExcel> list = null;
+        ResultBody resultBody = reportService.exportData(param);
+        if (resultBody.getCode() == 0 && resultBody.getData() != null) {
+            list = JSONArray.parseArray(JSONArray.toJSONString(resultBody.getData()), ScreeningHospitalDataExcel.class);
+        }
+        return list;
+    }
+
+    /**
+     * 初始化,将表中的数据放入redis中
+     */
+    @Override
+    public void tableToRedis() {
+        List<HospitalScreening> list = baseMapper.findAll();
+        if (list.size() > 0) {
+            if (redisUtils.hasKey(CUSOTMERHOSPITAL)) {
+                redisUtils.del(CUSOTMERHOSPITAL);
+            }
+
+            for (HospitalScreening hs : list) {
+                redisUtils.hset(CUSOTMERHOSPITAL, String.valueOf(hs.getId()), hs);
+            }
+        }
+    }
+
+    /**
+     * 更新redis
+     *
+     * @param hospitalScreening
+     */
+    @Override
+    public void updateRedisById(HospitalScreening hospitalScreening) {
+        if (redisUtils.hasKey(CUSOTMERHOSPITAL)) {
+            redisUtils.hset(CUSOTMERHOSPITAL, String.valueOf(hospitalScreening.getId()), hospitalScreening);
+        }
+    }
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java
index b58b730..82410ab 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java
@@ -13,8 +13,10 @@
 import com.kidgrow.oprationcenter.model.ConsumptionRecord;
 import com.kidgrow.oprationcenter.model.ProductOrder;
 import com.kidgrow.oprationcenter.model.ProductOrderDetail;
+import com.kidgrow.oprationcenter.model.SysProduct;
 import com.kidgrow.oprationcenter.service.IProductOrderDetailService;
 import com.kidgrow.oprationcenter.service.IProductOrderService;
+import com.kidgrow.oprationcenter.service.ISysProductService;
 import com.kidgrow.oprationcenter.vo.*;
 import com.kidgrow.redis.util.RedisUtils;
 import com.kidgrow.usercenter.feign.SysDoctorService;
@@ -52,6 +54,8 @@
     @Autowired
     private IProductOrderService iProductOrderService;
     @Autowired
+    private ISysProductService productService;
+    @Autowired
     private RedisUtils redisUtils;
     /**
      * 列表
@@ -62,6 +66,15 @@
     public PageResult<ProductOrderDetail> findList(Map<String, Object> params){
         Page<ProductOrderDetail> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
         List<ProductOrderDetail> list  =  baseMapper.findList(page, params);
+        for (ProductOrderDetail productOrderDetail : list) {
+            if(productOrderDetail.getOrderAilightCount()==null){
+                SysProduct byId = productService.getById(productOrderDetail.getProId());
+                if(byId!=null){
+                    productOrderDetail.setOrderAilightCount(byId.getAilightCount());
+                    productOrderDetail.setOrderRecordCount(byId.getRecordCount());
+                }
+            }
+        }
         return PageResult.<ProductOrderDetail>builder().data(list).code(0).count(page.getTotal()).build();
     }
     /**
@@ -211,11 +224,33 @@
      * @return
      */
     @Override
-    public PageResult<ProductOrderDetail> departmentProductDetail(Map<String, Object> params) {
+    public PageResult<ProductOrderDetailVo> departmentProductDetail(Map<String, Object> params) {
         Page<ProductOrderDetail> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
+        Boolean enabled = MapUtils.getBoolean(params, "enabled");
         List<ProductOrderDetail> list  =
-                baseMapper.departmentProductDetail(page, Long.parseLong(params.get("hospitalId").toString()),Long.parseLong(params.get("departmentId").toString()));
-        return PageResult.<ProductOrderDetail>builder().data(list).code(0).count(page.getTotal()).build();
+                baseMapper.departmentProductDetail(page, Long.parseLong(params.get("hospitalId").toString()),Long.parseLong(params.get("departmentId").toString()),enabled);
+        List<ProductOrderDetailVo> listvo = new ArrayList<>();
+        for (ProductOrderDetail productOrderDetail : list) {
+            ProductOrderDetailVo productOrderDetailVo=new ProductOrderDetailVo();
+            BeanCopier beanCopier = BeanCopier.create(ProductOrderDetail.class, ProductOrderDetailVo.class, false);
+            beanCopier.copy(productOrderDetail,productOrderDetailVo,null);
+            Date proBegintime = productOrderDetailVo.getProBegintime();
+            Date proEndtime = productOrderDetailVo.getProEndtime();
+            Date nowDate = new Date();
+            if(productOrderDetailVo.getEnabled()){
+                if(nowDate.getTime()<proBegintime.getTime()){
+                    productOrderDetailVo.setUseType("未使用");
+                }else if (proBegintime.getTime()<=nowDate.getTime()&&nowDate.getTime()<proEndtime.getTime()){
+                    productOrderDetailVo.setUseType("使用中");
+                }else if(nowDate.getTime()>=proEndtime.getTime()){
+                    productOrderDetailVo.setUseType("已结束");
+                }
+            }else {
+                productOrderDetailVo.setUseType("禁用");
+            }
+            listvo.add(productOrderDetailVo);
+        }
+        return PageResult.<ProductOrderDetailVo>builder().data(listvo).code(0).count(page.getTotal()).build();
     }
 
     @Override
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java
index 775c24e..3a39e96 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java
@@ -72,6 +72,15 @@
     }
 
     /**
+     * 查看报告
+     */
+    @Override
+    public ResultBody getPdfPathForOperation(String diagnosticId, Integer reportType, Long hospitalId,  Long departId) {
+        ResultBody pdfPathForOperation = diagnosticService.getPdfPathForOperation(diagnosticId, reportType, hospitalId, departId);
+        return pdfPathForOperation;
+    }
+
+    /**
      * 列表
      *
      * @param params
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ScreeningOrganizationInfoServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ScreeningOrganizationInfoServiceImpl.java
index b25b2a9..3538f36 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ScreeningOrganizationInfoServiceImpl.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ScreeningOrganizationInfoServiceImpl.java
@@ -46,4 +46,21 @@
         return baseMapper.findByObject(organizationInfo);
     }
 
+    /**
+     * 根据OrganizationInfo对象当做查询条件进行查询
+     * @param id
+     * @return OrganizationInfo
+     */
+    @Override
+    public List<ScreeningOrganizationInfo> findByHospitalId(Long id){
+        return baseMapper.findByHospitalId(id);
+    }
+
+    @Override
+    public PageResult<ScreeningOrganizationInfo> findByKeyWord(Map<String, Object> params) {
+        Page<ScreeningOrganizationInfo> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
+        List<ScreeningOrganizationInfo> list  =  baseMapper.findByKeyWord(page, params);
+        return PageResult.<ScreeningOrganizationInfo>builder().data(list).code(0).count(page.getTotal()).build();
+    }
+
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysProductServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysProductServiceImpl.java
index 8ba559b..afa10d7 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysProductServiceImpl.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysProductServiceImpl.java
@@ -60,6 +60,7 @@
      */
     @Override
     public PageResult<ProductAllVo> findAllList(Map<String, Object> params, SysUser sysUser){
+        params.put("idNotIn",Arrays.asList(CommonConstant.PAY_USER_PRODUCT_ID, CommonConstant.REG_USER_PRODUCT_ID));
         List<ProductAllVo> list  =  baseMapper.findAllList(params);
         if (list != null) {
             for (int i = 0; i <list.size() ; i++) {
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml
index a501e7e..efb5878 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml
@@ -12,6 +12,9 @@
         <where>
             <!--查询条件自行添加-->
             is_del=0
+            <if test="p.id != null and p.id !=''">
+                and id = #{p.id}
+            </if>
             <if test="p.hospitalId != null and p.hospitalId !=''">
                 and hospital_id = #{p.hospitalId}
             </if>
@@ -63,6 +66,9 @@
             <if test="p.homePage != null and p.homePage !=''">
                 and home_page = #{p.homePage}
             </if>
+             <if test="p.keyWord != null and p.keyWord !=''">
+                and hospital_name like concat('%', #{p.keyWord}, '%')
+            </if>
         </where>
     </sql>
 
@@ -92,4 +98,11 @@
         where is_del=0 and enabled=1 and hospital_name LIKE concat('%',#{hospitalName},'%')
         order by hospital_name desc,id desc
     </select>
+
+    <select id="findAll" resultType="com.kidgrow.oprationcenter.model.HospitalScreening">
+        select
+        <include refid="Column_List"/>
+        from hospital_screening
+        where  is_del=0
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml
index c419e42..d70c2e3 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml
@@ -170,8 +170,9 @@
         <include refid="whereforall"/>
         order by
         DE.pro_endtime ASC,
+        DE.ailight_count ASC,
         DE.pro_begintime ASC,
-        DE.id asc
+        DE.id ASC
     </select>
 
     <select id="getEnabledCount" resultType="int" parameterType="long">
@@ -260,7 +261,9 @@
 WHERE
 	order_id IN ( SELECT id FROM product_order WHERE hospital_id = #{hospitalId} AND department_id = #{departmentId} AND is_del = 0 AND enabled = 1 )
 	AND is_del = 0
-	AND enabled = 1
+        <if test="enabled!=null">
+            and enabled=#{enabled}
+        </if>
 ORDER BY id DESC
     </select>
 	<select id="getUserdProduct" resultType="int">
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ScreeningOrganizationInfoMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ScreeningOrganizationInfoMapper.xml
index 2bf20e9..b7901ce 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ScreeningOrganizationInfoMapper.xml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ScreeningOrganizationInfoMapper.xml
@@ -98,4 +98,23 @@
         <include refid="where"/>
         order by id desc
     </select>
+
+    <select id="findByHospitalId" resultType="com.kidgrow.oprationcenter.model.ScreeningOrganizationInfo" parameterType="java.lang.Long">
+        select
+        <include refid="Column_List"/>
+        from screening_organization_info
+        where source_hospital_id=#{t}
+    </select>
+
+    <select id="findByKeyWord" resultType="com.kidgrow.oprationcenter.model.ScreeningOrganizationInfo" parameterType="java.util.Map" >
+        SELECT
+            *
+        FROM
+            screening_organization_info
+        WHERE
+            source_hospital_id=${p.id}
+            <if test="p.keyword != null and p.keyword != ''">
+             and organization_name LIKE '%${p.keyword}%'
+            </if>
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/config/RedisStartupRunner.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/config/RedisStartupRunner.java
new file mode 100644
index 0000000..c849ba8
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/config/RedisStartupRunner.java
@@ -0,0 +1,19 @@
+package com.kidgrow.oprationcenter.config;
+
+import com.kidgrow.oprationcenter.service.IHospitalScreeningService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+@Component //作为bean加入spring
+@Order(value = 2)//多个启动任务的执行顺序
+public class RedisStartupRunner implements CommandLineRunner {
+    @Autowired
+    IHospitalScreeningService hospitalScreeningService;
+
+    @Override
+    public void run(String... args) throws Exception {
+        hospitalScreeningService.tableToRedis();
+    }
+}
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/HospitalScreeningController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/HospitalScreeningController.java
index 79aa3f8..d0918cd 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/HospitalScreeningController.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/HospitalScreeningController.java
@@ -3,19 +3,24 @@
 import com.kidgrow.common.controller.BaseController;
 import com.kidgrow.common.model.PageResult;
 import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.common.utils.ExcelUtil;
 import com.kidgrow.oprationcenter.model.HospitalScreening;
+import com.kidgrow.oprationcenter.model.ScreeningHospitalDataExcel;
 import com.kidgrow.oprationcenter.service.IHospitalScreeningService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.ObjectError;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -23,6 +28,7 @@
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
  * @Description: 筛查医院信息表-未完待续
  * @Project: 运营中心
  * @CreateDate: Created in 2020-04-02 18:25:34 <br>
@@ -33,7 +39,7 @@
 @RestController
 @RequestMapping("/hospitalscreening")
 @Api(tags = "筛查医院信息表-未完待续")
-public class HospitalScreeningController  extends BaseController{
+public class HospitalScreeningController extends BaseController {
     @Autowired
     private IHospitalScreeningService hospitalScreeningService;
 
@@ -46,10 +52,10 @@
             @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer")
     })
     @GetMapping
-    public  PageResult<HospitalScreening> list(@RequestParam Map<String, Object> params) {
-        if(params.size()==0){
-            params.put("page",1);
-            params.put("limit",10);
+    public PageResult<HospitalScreening> list(@RequestParam Map<String, Object> params) {
+        if (params.size() == 0) {
+            params.put("page", 1);
+            params.put("limit", 10);
         }
         return hospitalScreeningService.findList(params);
     }
@@ -80,26 +86,28 @@
     @ApiOperation(value = "保存")
     @PostMapping
     public ResultBody save(@Valid @RequestBody HospitalScreening hospitalScreening, 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 {
-            if(hospitalScreening.getId() == null){
+        } else {
+            if (hospitalScreening.getId() == null) {
                 HospitalScreening hs = new HospitalScreening();
                 hs.setHospitalId(hospitalScreening.getHospitalId());
                 HospitalScreening byObject = hospitalScreeningService.findByObject(hs);
-                if(byObject != null){
+                if (byObject != null) {
                     return ResultBody.failed().msg("该医院已添加");
                 }
             }
-            boolean v= hospitalScreeningService.saveOrUpdate(hospitalScreening);
-            if(v) {
+            boolean v = hospitalScreeningService.saveOrUpdate(hospitalScreening);
+            //更新redis
+            hospitalScreeningService.updateRedisById(hospitalScreening);
+
+            if (v) {
                 return ResultBody.ok().data(hospitalScreening).msg("保存成功");
-            }
-            else {
+            } else {
                 return ResultBody.failed().msg("保存失败");
             }
         }
@@ -111,11 +119,10 @@
     @ApiOperation(value = "删除")
     @DeleteMapping("/{id}")
     public ResultBody delete(@PathVariable Long id) {
-        boolean v= hospitalScreeningService.removeById(id);
-        if(v) {
+        boolean v = hospitalScreeningService.removeById(id);
+        if (v) {
             return ResultBody.ok().msg("删除成功");
-        }
-        else {
+        } else {
             return ResultBody.failed().msg("删除失败");
         }
     }
@@ -147,4 +154,15 @@
             return ResultBody.ok().data(null).msg("");
         }
     }
+
+    @ApiOperation(value = "导出")
+    @PostMapping("/export")
+    public void export(@RequestParam Map<String, Object> params, HttpServletResponse response) throws IOException {
+        List<ScreeningHospitalDataExcel> list = hospitalScreeningService.export(params);
+        //导出操作
+        if (list != null && list.size() > 0) {
+            String name = MapUtils.getString(params, "hospitalName");
+            ExcelUtil.exportExcel(list, null, name, ScreeningHospitalDataExcel.class, name, response);
+        }
+    }
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java
index ba6faad..b1996c0 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java
@@ -103,7 +103,7 @@
                 productOrder.setCreateUserOrgCode(organizations.get(organizations.size()-1).getOrgCode());
             }
             //默认添加的合同视为无效合同,在充值完成后,会将对应合同启用
-            productOrder.setIsDel(true);
+//            productOrder.setIsDel(true);
             boolean v = productOrderService.saveOrUpdate(productOrder);
             if (v) {
                 return ResultBody.ok().data(productOrder).msg("保存成功");
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 f02a54b..e6311d1 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
@@ -4,6 +4,7 @@
 import com.kidgrow.common.constant.CommonConstant;
 import com.kidgrow.common.controller.BaseController;
 import com.kidgrow.common.model.*;
+import com.kidgrow.common.utils.DateUtils;
 import com.kidgrow.oprationcenter.model.HospitalInfo;
 import com.kidgrow.oprationcenter.model.ProductOrder;
 import com.kidgrow.oprationcenter.model.ProductOrderDetail;
@@ -30,9 +31,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 /**
@@ -440,4 +439,28 @@
         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);
+        map = new HashMap<>();
+        if(productOrders!=null&&productOrders.size()>0){
+            IntSummaryStatistics intSummaryStatistics = productOrders.stream().filter(a-> a.getContractNum()!=null&&a.getEnabled()).mapToInt((x) -> x.getContractNum()).summaryStatistics();
+            Date minDate = productOrders.stream().filter(a->a.getEnabled()).map(e -> e.getContractBeginTime()).min((e1, e2) -> e1.compareTo(e2)).get();
+            Date manDate = productOrders.stream().filter(a->a.getEnabled()).map(e -> e.getContractEndTime()).max((e1, e2) -> e1.compareTo(e2)).get();
+            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);
+    }
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderRecordController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderRecordController.java
index fedef3d..26c9d2f 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderRecordController.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderRecordController.java
@@ -113,6 +113,17 @@
             return PageResult.<ProductOrderJoinDetail>builder().data(null).code(0).count(0L).build();
         return productOrderRecordService.findAllDataList(params);
     }
+    /**
+     * 查看报告
+     */
+    @ApiOperation(value = "查看报告")
+    @PostMapping("/pdfname/{diagnosticId}/{reportType}/{hospitalId}/{departId}")
+    public ResultBody getPdfPathForOperation(@PathVariable("diagnosticId") String diagnosticId,@PathVariable("reportType") Integer reportType,@PathVariable("hospitalId") Long hospitalId,@PathVariable("departId") Long departId) {
+        if (StringUtils.isBlank(diagnosticId)) {
+            return ResultBody.failed("请输入diagnosticId");
+        }
+        return productOrderRecordService.getPdfPathForOperation(diagnosticId,reportType,hospitalId,departId);
+    }
 
     /**
      * 列表
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ScreeningOrganizationInfoController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ScreeningOrganizationInfoController.java
index 0a12b38..9169434 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ScreeningOrganizationInfoController.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ScreeningOrganizationInfoController.java
@@ -266,4 +266,34 @@
             e.printStackTrace();
         }
     }
+
+    /**
+     * 通过医院ID查询机构列表
+     */
+    @ApiOperation(value = "通过医院ID查询机构列表")
+    @PostMapping("/getOrganizationListByHospitalId")
+    public ResultBody getOrganizationListByHospitalId(@RequestBody String id) {
+        List<ScreeningOrganizationInfo> byHospitalId = organizationInfoService.findByHospitalId(Long.valueOf(id));
+        if(byHospitalId != null && byHospitalId.size() > 0){
+            return ResultBody.ok().data(byHospitalId).msg("查询成功");
+        }
+        return ResultBody.failed().msg("查询失败");
+    }
+
+    /**
+     * 关键字查询列表
+     */
+    @ApiOperation(value = "关键字查询列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer")
+    })
+    @PostMapping(value = "/listByKeyWord")
+    public PageResult<ScreeningOrganizationInfo> listByKeyWord(@RequestParam Map<String, Object> params) {
+        if (params.size() == 0) {
+            params.put("page", 1);
+            params.put("limit", 10);
+        }
+        return organizationInfoService.findByKeyWord(params);
+    }
 }
diff --git a/kidgrow-business/kidgrow-opration-center/pom.xml b/kidgrow-business/kidgrow-opration-center/pom.xml
index 9fb3c1b..adc2dc1 100644
--- a/kidgrow-business/kidgrow-opration-center/pom.xml
+++ b/kidgrow-business/kidgrow-opration-center/pom.xml
@@ -52,5 +52,10 @@
             <artifactId>kidgrow-usercenter-api</artifactId>
             <version>1.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.kidgrow</groupId>
+            <artifactId>kidgrow-report-center-api</artifactId>
+            <version>1.0</version>
+        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java
index ce17542..b4a11b6 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java
@@ -110,4 +110,8 @@
      * 是否删除,1删除,0未删除
      */
     private Boolean isDel;
+    /**
+     * 是否试用,true正式,false试用
+     */
+    private Boolean OrderType;
 }
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java
index f5a92fc..ce57544 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java
@@ -190,17 +190,16 @@
                     return ResultBody.failed("选择一个角色");
                 }
             }
-
-            /**
-             * 限制只有创建医生的个数
-             *
-             */
-            if (sysUserServiceImpl.departmetAccountsCount(sysDoctor.getDepartmentId()) <= 0) {
-                return ResultBody.failed("该部门创建人数已经达到上限");
-            }
             SysHospital sysHospital = sysHospitalMapper.selectById(sysDoctor.getHospitalId());
             SysDepartment sysDepartment = sysDepartmentMapper.selectById(sysDoctor.getDepartmentId());
             if (sysDoctor.getId() == null) {
+                /**
+                 * 限制只有创建医生的个数
+                 *
+                 */
+                if (sysUserServiceImpl.departmetAccountsCount(sysDoctor.getDepartmentId()) <= 0) {
+                    return ResultBody.failed("该部门创建人数已经达到上限");
+                }
                 Long sysUserId = null;
                 //保存部门信息
                 ResultBody resultBody = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment, null);
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java
index 799c9b4..7cf6c17 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java
@@ -7,6 +7,8 @@
 import com.kidgrow.common.model.SysUser;
 import com.kidgrow.common.service.impl.SuperServiceImpl;
 import com.kidgrow.common.utils.StringUtils;
+import com.kidgrow.oprationcenter.feign.ProductOrderService;
+import com.kidgrow.oprationcenter.model.ProductOrder;
 import com.kidgrow.usercenter.mapper.SysDepartmentMapper;
 import com.kidgrow.usercenter.mapper.SysHospitalMapper;
 import com.kidgrow.usercenter.mapper.SysOrganizationMapper;
@@ -42,6 +44,8 @@
     private SysRoleOrganizationServiceImpl SysRoleOrganizationServiceImpl;
     @Autowired
     private SysOrganizationMapper sysOrganizationMapper;
+    @Autowired
+    private ProductOrderService productOrderService;
     /**
      * 列表
      * @param params
@@ -67,6 +71,15 @@
             return PageResult.<HospitalListVo>builder().data(null).code(0).count(page.getTotal()).build();
         }
         List<HospitalListVo> list  =  baseMapper.findHospitalList(page, params);
+        for (HospitalListVo hospitalListVo : list) {
+            ProductOrder productOrder = new ProductOrder();
+            productOrder.setHospitalId(hospitalListVo.getHospitalId());
+            productOrder.setDepartmentId(hospitalListVo.getDepartmentId());
+            ResultBody status = productOrderService.getStatus(productOrder);
+            if (status.getCode()==0) {
+                hospitalListVo.setOrderType(status.getData() instanceof Boolean ? ((Boolean) status.getData()) : null);
+            }
+        }
         return PageResult.<HospitalListVo>builder().data(list).code(0).count(page.getTotal()).build();
     }
 
diff --git a/kidgrow-config/src/main/resources/application-dev.properties b/kidgrow-config/src/main/resources/application-dev.properties
index 3cc4fbb..bb73239 100644
--- a/kidgrow-config/src/main/resources/application-dev.properties
+++ b/kidgrow-config/src/main/resources/application-dev.properties
@@ -50,9 +50,9 @@
 ####\u963F\u91CCOSS\u914D\u7F6E
 kidgrow.oss.access-key=LTAI4FennfcwZupz3B6hkK3N
 kidgrow.oss.accessKeySecret=NzBBGe8SS41qJlp0nA3tlJ3t74lBZM
-kidgrow.oss.endpoint=123.kidgrow.cloud
+kidgrow.oss.endpoint=open.oss.kidgrow.cloud
 kidgrow.oss.bucketName=kidgrow
-kidgrow.oss.domain=http://123.kidgrow.cloud/
+kidgrow.oss.domain=https://open.oss.kidgrow.cloud/
 
 ##### \u65E5\u5FD7\u94FE\u8DEF\u8FFD\u8E2A
 kidgrow.trace.enable=true
diff --git a/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml b/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml
index 14cb753..a6da7f1 100644
--- a/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml
+++ b/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml
@@ -226,6 +226,7 @@
       - /api-evaluation/evaluationxrayinfo/appUpload
       - /api-evaluation/evaluationxrayinfo/appSave
       - /api-file/baseUplaod
+      - /api-file/feignUploadHosIdAndDepId
       - /api-user/users/python
       - /api-evaluation/evaluationxrayinfo/checkQRCode
       - /api-opration/wxController/callback
@@ -262,6 +263,7 @@
         /api-file/smsChangLan/send,
         /api-user/users/doctorUserReg,
         /api-file/files-upload,
+        /api-file/feignUploadHosIdAndDepId,
         /api-user/users/isRegUser,
         /api-user/users/passwordByPhone,
         /api-evaluation/evaluationxrayinfo/appUpload,
diff --git a/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java b/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java
index 84121f2..70df892 100644
--- a/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java
+++ b/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java
@@ -3,10 +3,10 @@
 import com.kidgrow.oauth2.handler.SingleTokenServices;
 import com.kidgrow.oauth2.service.impl.RedisClientDetailsService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Primary;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.AuthenticationProvider;
@@ -80,8 +80,8 @@
     private RandomValueAuthorizationCodeServices authorizationCodeServices;
     @Autowired
     private AuthenticationProvider daoAuhthenticationOauthProvider;
-    @Autowired
-    private SingleTokenServices tokenServices;
+//    @Autowired
+//    private SingleTokenServices tokenServices;
 
 
     /**
@@ -107,7 +107,7 @@
                     @Override
                     public Authentication authenticate(Authentication authentication) throws AuthenticationException {
                         String token = (String) authentication.getPrincipal();
-                        OAuth2Authentication auth = tokenServices.loadAuthentication(token);
+                        OAuth2Authentication auth = KidgrowTokenServices().loadAuthentication(token);
                         if (auth == null) {
                             throw new InvalidTokenException("Invalid token: " + token);
                         }
@@ -134,6 +134,7 @@
 
     @Bean
     @Primary
+    @Lazy
     public SingleTokenServices KidgrowTokenServices(){
         SingleTokenServices tokenServices = new SingleTokenServices();
         tokenServices.setTokenStore(tokenStore);
diff --git a/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/controller/OAuth2Controller.java b/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/controller/OAuth2Controller.java
index 9478d1a..9f796c2 100644
--- a/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/controller/OAuth2Controller.java
+++ b/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/controller/OAuth2Controller.java
@@ -67,7 +67,8 @@
         //先解密
         String decryptName = AesUtils.desEncrypt(username).trim();
         String decryptPwd = AesUtils.desEncrypt(password).trim();
-
+        log.error("user+++++++++"+decryptName+"+++++++++++");
+        log.error("password+++++++++"+decryptPwd+"+++++++++++");
         UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(decryptName, decryptPwd);
         writerToken(request, response, token, "用户名或密码错误");
     }
@@ -120,6 +121,7 @@
             oAuth2Authentication.setAuthenticated(true);
             ResponseUtil.responseSucceed(objectMapper, response, oAuth2AccessToken);
         } catch (BadCredentialsException | InternalAuthenticationServiceException e) {
+            e.printStackTrace();
             exceptionHandler(response, badCredenbtialsMsg);
         } catch (Exception e) {
             exceptionHandler(response, e);
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 e1908dc..8c93db6 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
@@ -297,7 +297,7 @@
             layer.msg('登录过期', {icon: 2, time: 1500}, function () {
                 location.replace('/login.html');
             }, 5000);
-        }else if(msg.includes("Invalid access token")){
+        }else if(res.msg.includes("Invalid access token")){
             layer.msg('您的账号在其他地方登陆,请重新登录或修改密码', {icon: 2, time: 1500}, function () {
                 location.replace('/login.html');
             }, 5000);
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/admin.js b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/admin.js
index f26bf3e..66bc9a0 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/admin.js
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/admin.js
@@ -128,8 +128,6 @@
                 if (jsonRs) {
                     if (jsonRs.code == 401) {
                         config.removeToken();
-                        // var json=JSON.stringify(jsonRs)
-                        // console.log(json,"jsonjsonjsonjsonjsonjsonjson")
                         var msg=jsonRs.msg;
                         if(msg.includes("Access token expired")){
                             layer.msg('登录过期', {icon: 2, time: 1500}, function () {
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js
index 6da8e9d..dbb5291 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js
@@ -1,6 +1,6 @@
  var my_api_server_url = 'http://127.0.0.1:8888/';
 // var my_api_server_url = 'http://192.168.2.240:8888/';
-//var my_api_server_url = 'http://open.zuul.kidgrow.cloud/';
+// var my_api_server_url = 'http://open.zuul.kidgrow.cloud/';
  // var my_api_server_url = 'zuul.kidgrow.cloud/';
 //var my_api_server_url = 'https://zuul.kidgrow.cloud/';
 
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/exportScreeningHospital.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/exportScreeningHospital.html
new file mode 100644
index 0000000..8cd7f50
--- /dev/null
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/exportScreeningHospital.html
@@ -0,0 +1,108 @@
+<form id="app-form-add" lay-filter="app-form-add" class="layui-form model-form">
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 75px;">时间范围</label>
+                <div class="layui-input-block" style="width: 500px;">
+                    <input type="text" class="layui-input search-input" id="beginTime" autocomplete="off" placeholder="开始时间"> 至
+                    <input type="text"  class="layui-input search-input" id="endTime" autocomplete="off" placeholder="结束时间"> &emsp;
+                </div>
+                <input type="hidden" id="hospitalIds"/>
+                <input type="hidden" id="hospitalNames"/>
+            </div>
+        </div>
+    </div>
+
+    <div class="layui-form-item model-form-footer">
+        <button class="layui-btn" id="export"  type="button">导出
+        </button>
+        <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button>
+    </div>
+</form>
+
+<script>
+    layui.use(['form', 'laydate', 'util', 'config', 'admin'], function () {
+        var form = layui.form;
+        var config = layui.config;
+        var $ = layui.jquery;
+        var admin = layui.admin;
+        var laydate = layui.laydate;
+
+        form.render();
+
+        //执行一个laydate实例
+        laydate.render({
+            elem: '#beginTime' //指定元素
+        });
+        laydate.render({
+            elem: '#endTime' //指定元素
+        });
+
+        $('#export').click(function () {
+            var startTime = $('#beginTime').val();
+            var endTime = $('#endTime').val();
+            if (startTime != null && endTime != null) {
+                var flag = compareDate(startTime, endTime);
+                if (!flag) {
+                    layer.msg('结束时间不得小于开始时间');
+                    return;
+                }
+            }
+            var url = config.base_server + 'api-opration/hospitalscreening/export';
+            var xhr = new XMLHttpRequest();
+            xhr.open('POST', url, true);
+            xhr.responseType = "blob";
+            var form = new FormData();
+            // Add selected file to form
+            form.append("hospitalId", $("#hospitalIds").val());
+            form.append('hospitalName', $("#hospitalName").val());
+            form.append('beginTime', $("#beginTime").val());
+            form.append('endTime', endTime);
+            form.append('hospitalName', $("#hospitalNames").val());
+
+            xhr.setRequestHeader("client_type", "DESKTOP_WEB");
+            xhr.setRequestHeader("Authorization", "Bearer " + config.getToken().access_token);
+            xhr.onload = function () {
+                if (this.status == 200) {
+                    var fileName = $("#hospitalNames").val() + ".xlsx";
+                    var blob = this.response;
+                    var a = document.createElement('a');
+                    a.innerHTML = fileName;
+                    // 指定生成的文件名
+                    a.download = fileName;
+                    a.href = URL.createObjectURL(blob);
+                    document.body.appendChild(a);
+                    var evt = document.createEvent("MouseEvents");
+                    evt.initEvent("click", false, false);
+                    a.dispatchEvent(evt);
+                    document.body.removeChild(a);
+                }
+            }
+            xhr.send(form);
+        });
+
+        var hospital = admin.getTempData('t_hospital');
+        if(hospital){
+            $("#hospitalIds").val(hospital.hospitalId)
+            $("#hospitalNames").val(hospital.hospitalName);
+        }
+        form.render();
+
+        //比较日期大小
+        function compareDate(logintime, logouttime) {
+            var arys1 = new Array();
+            var arys2 = new Array();
+            if (logintime != null && logouttime != null) {
+                arys1 = logintime.split('-');
+                var logindate = new Date(arys1[0], parseInt(arys1[1] - 1), arys1[2]);
+                arys2 = logouttime.split('-');
+                var logoutdate = new Date(arys2[0], parseInt(arys2[1] - 1), arys2[2]);
+                if (logindate > logoutdate) {
+                    return false;
+                } else {
+                    return true;
+                }
+            }
+        }
+    });
+</script>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital.html
index 282f27f..174dd22 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital.html
@@ -43,6 +43,9 @@
     <button class="layui-btn layui-btn-xs" lay-event="downLoad">
         下载二维码
     </button>
+    <button class="layui-btn layui-btn-xs" lay-event="export">
+        导出
+    </button>
 </script>
 
 <script type="text/html" id="hospital-push-state">
@@ -91,9 +94,9 @@
                 page: true,
                 cols: [
                     [{
-                        field: 'hospitalId',
-                        width: "150",
-                        title: '医院ID',
+                        field: 'id',
+                        width: "200",
+                        title: '筛查医院ID',
                         fixed: 'left'
                     }, {
                         field: 'hospitalName',
@@ -229,6 +232,8 @@
                     downLoad(data.hospitalQrImage);
                 } else if (layEvent === 'edit') {
                     showEditModel_add("编辑", data);
+                }else if(layEvent === 'export'){
+                    showEditModel_import("导出",data);
                 }
             });
 
@@ -236,5 +241,17 @@
                 window.open(url);
             }
 
+            var showEditModel_import = function (title, data) {
+                admin.putTempData('t_hospital', data);
+                admin.popupCenter({
+                    title: title,
+                    path: 'pages/keaigao/exportScreeningHospital.html',
+                    area: '500px',
+                    offset: '0px',
+                    finish: function () {
+                    }
+                });
+            };
+
         });
 </script>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital_form.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital_form.html
index 591f5f0..f1df902 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital_form.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/screeningHospital_form.html
@@ -133,12 +133,13 @@
         //上传二维码
         upload.render({
             elem: '#qr',
-            url: config.base_server + 'api-file/files-anon',
+            url: config.base_server + 'api-file/files-upload',
             accept: 'file',
             auto: true,
             headers: {
                 "Authorization": "Bearer " + config.getToken().access_token
             },
+            data:{"imgType":"customerhospital"},
             before: function (obj) {
                 layer.load(); //上传loading
                 //预读本地文件示例,不支持ie8
@@ -160,12 +161,13 @@
         //微站首页图片
         upload.render({
             elem: '#phonto',
-            url: config.base_server + 'api-file/files-anon',
+            url: config.base_server + 'api-file/files-upload',
             accept: 'file',
             auto: true,
             headers: {
                 "Authorization": "Bearer " + config.getToken().access_token
             },
+            data:{"imgType":"customerhospital"},
             before: function (obj) {
                 layer.load(); //上传loading
                 //预读本地文件示例,不支持ie8
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 ecba5e1..7a650b2 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
@@ -10,18 +10,23 @@
         <div class="layui-form toolbar">
             <div class="layui-form-item">
                 <div class="layui-inline" style="margin-bottom: -25px;">&emsp;
-            <input id="hospital-search-value" class="layui-input  search-input" type="text" placeholder="按医院名" autocomplete="off" width="400px" /></div>&emsp;
-            <button id="contract-btn-search" class="layui-btn icon-btn permissions" permissions="contract-list" style="margin-bottom: -25px;"><i class="layui-icon">&#xe615;</i>搜索</button>
+                    <input id="hospital-search-value" class="layui-input  search-input" type="text" placeholder="按医院名"
+                        autocomplete="off" width="400px" /></div>&emsp;
+                <button id="contract-btn-search" class="layui-btn icon-btn permissions" permissions="contract-list"
+                    style="margin-bottom: -25px;"><i class="layui-icon">&#xe615;</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">
@@ -68,26 +73,37 @@
                     { 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);
                 }
             });
         }
@@ -107,66 +123,90 @@
                     }, 'DELETE');
                 });
             }
-            else
-            {
-                showModel(obj.data.id);
+            else if (obj.event === 'edit') {
+                //修改
+                updateModel(obj.data);
+            } else if (obj.event === 'detail') {
+                //充值记录列表
+                showModel(obj.data);
             }
         });
 
         // 搜索按钮点击事件
         $('#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 (data) {
+            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/productorderdetail/all',
+                        method: 'GET',
+                        where: { orderId: data.id,enabled: 1},
+                        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: 'ailightCount', width: 150, title: '读片使用量' ,templet: function (d) {
+                                    return d.orderAilightCount-d.ailightCount;
+                                }
+                            },
+                            { 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>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/diagnosisRecord.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/diagnosisRecord.html
index dc6173c..789a050 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/diagnosisRecord.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/diagnosisRecord.html
@@ -131,24 +131,31 @@
                     endTime: dateend
                 };
                 table.reload('diagnostic-table', { where: whereData,page: {curr: 1  }});
+            }else{
+                layer.msg('请输入医院');
+                return false;
             }
         });
+        //获取软件的服务周期
+        var getCycleTime = function (departmentId) {
+            
+        }
         // 工具条点击事件
         table.on('tool(diagnostic-table)', function (obj) {
             var data = obj.data;
             var layEvent = obj.event;
             if (layEvent === "select") {
-                //查看报告  报告列数据缓存起来
-                admin.putTempData("t_diagnosis", data);
-                admin.popupCenter({
-                    title: '查看报告',
-                    path: 'pages/opration/recordNote.html',
-                    area: '1200px',
-                    offset: '10px',
-                    finish: function () {
-                        admin.putTempData("t_diagnosis", "");
+                admin.req('api-opration/productorderrecord/pdfname/'+data.diagnosticId+"/0/"+data.diagnosticHospitalId+"/"+data.diagnosticDepartId, {},
+                function (data) {
+                    if (data.code == 0) {
+                        //打开新的窗口
+                       window.open(data.data)
+                    }else{
+                        layer.msg("查询报告失败")
                     }
-                });
+
+                }, "post")
+                admin.re
             }
         });
     });
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html
index e02b7a9..96ee3fa 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html
@@ -289,7 +289,6 @@
 
         // 表单提交事件
         form.on('submit(user-form-submit)', function (data) {
-            debugger
             data.field.hospitalId = $("#hospitalId").val();
             if (data.field.roleId != null && data.field.roleId != "") {
                 data.field.roles = data.field.roleId.split(',');
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/equipmentDocking.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/equipmentDocking.html
index 12c196e..c803a5b 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/equipmentDocking.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/equipmentDocking.html
@@ -315,7 +315,6 @@
                             $('#sure').hide();
                         }
                         form.val('app-form', data);
-                        console.log(data,"1111111111111")
                          //重新装载科室
                         getdepartment(data.hospitalId);
                         form.render();
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 9e6699a..aa1b656 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
@@ -114,11 +114,14 @@
                         width: "8%",
                         title: '联系方式'
                     },
-                    // {
-                    //     field: 'enabled', width: 80,  title: '状态', templet: function (d) {
-                    //         return d.hospitalState == 0 ? "试用" : "正式"
-                    //     }
-                    // },
+                    {
+                        field: 'orderType', width: 80,  title: '状态', templet: function (d) {
+                            if(d.orderType==null){
+                                return "";
+                            }
+                            return d.orderType ? "正式" : "试用"
+                        }
+                    },
                     {
                         field: 'isScreen',
                         width: "4%",
@@ -223,7 +226,7 @@
                     }
                 });
             } else if(layEvent=="health"){
-                //充值
+                //运动处方服务
                 admin.putTempData("t_hospital", data);
                 admin.popupCenter({
                     title: '运动处方服务',
@@ -337,7 +340,8 @@
                         method: 'GET',
                         where: {
                             'hospitalId': data.hospitalId,
-                            'departmentId': data.departmentId
+                            'departmentId': data.departmentId,
+                            'enabled': true
                         },
                         headers: {
                             'Authorization': 'Bearer ' + config.getToken().access_token
@@ -357,6 +361,14 @@
                                     title: '读片量(剩余)'
                                 },
                                 {
+                                    field: 'ailightCount',
+                                    width: 150,
+                                    title: '读片使用量',
+                                    templet: function (d) {
+                                        return d.orderAilightCount-d.ailightCount;
+                                    }
+                                },
+                                {
                                     field: 'recordCount',
                                     width: 150,
                                     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
index 23df499..129af3e 100644
--- 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
@@ -36,7 +36,7 @@
                     <div class="layui-form-item" style="padding: 0; margin-bottom: 0px;">
                         <div class="layui-row">
                             <div class="layui-col-sm5">
-                                <label class="layui-form-label" style="padding: 0 30px 0 0;">地区</label>
+                                <label class="layui-form-label" style="padding: 0 20px 0 0;">地区</label>
                                 <input name="hospitalAreas" id="hospitalAreas" type="text"
                                     style="border: none; width: 250px; margin-top:-10px" readonly class="layui-input" />
                             </div>
@@ -58,42 +58,80 @@
                     </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-input-block">
-                                    <input autocomplete="off" name="contractEndTime" id="contractEndTime" type="text"
-                                        class="layui-input" maxlength="50" lay-verify="required" required />
+                            <div class="layui-col-sm6">
+                                <label class="layui-form-label">当前软件服务周期:</label>
+                                <div class="layui-input-block" >
+                                    <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: 30%;" />
+                                       <span id="contractBeginTime_not_heng"> 至 </span>
+                                    <input autocomplete="off" name="contractEndTime_not" disabled
+                                        id="contractEndTime_not" type="text" placeholder="请输入结束时间" class="layui-input"
+                                        maxlength="50" readonly
+                                        style="border: none; margin-left: 10%;display: inline-block;width: 30%;" />
                                 </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,'0') " type="text" value="0"
                                         class="layui-input" maxlength="50" lay-verify="required" required />
                                 </div>
                             </div>
@@ -105,12 +143,67 @@
 
         <div class="layui-tab" style="margin: 0px;">
             <ul class="layui-tab-title">
-                <li class="layui-this">产品信息</li>
+                <li class="layui-this">套餐列表</li>
+                <li>自定义充值</li>
             </ul>
             <div class="layui-tab-content" style="margin: -10px 0px -10px 0px;">
                 <div class="layui-tab-item layui-show" style="padding-top: 0px;">
                     <table class="layui-table" id="product-table" lay-filter="product-table" style="margin: 0px;">
                     </table>
+                </div>
+                <div class="layui-tab-item">
+                    <div class="layui-form-item" style="margin: 10px 0px 0px 0px;">
+                        <div class="layui-row">
+                            <div class="layui-col-sm12">
+                                <label class="layui-form-label">充值名称:</label>
+                                <div class="layui-input-inline">
+                                    <input autocomplete="off" id="custom_proName" type="text" class="layui-input"
+                                        maxlength="50" />
+                                </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" />
+                                </div>
+                            </div>
+                            <div class="layui-col-sm6">
+                                <div class="layui-input-inline">
+                                    <input type="checkbox" id="custom_isShare" name="gongxiang" value="1" lay-skin="primary" 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="checkbox" id="termType" lay-skin="primary" name="termType" value="true" checked
+                                        title="期限限制" />
+                                </div>
+                                <div class="layui-col-sm4" style="margin-right: 30px;">
+                                    <input autocomplete="off" id="custom_beginTime" type="text" placeholder="请输开始时间"
+                                        class="layui-input" maxlength="50" />
+                                </div>
+                                <div class="layui-col-sm4 ">
+                                    <input autocomplete="off" type="text" placeholder="请输入结束时间" id="custom_endTime"
+                                        class="layui-input" maxlength="50" />
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <div class="layui-input-block"
+                            style="text-align: right;padding-right: 100px;padding-top: 50px;">
+                            <input class="layui-btn" type="button" id="custom_submit" value="确定" />
+                        </div>
+                    </div>
                 </div>
             </div>
         </div>
@@ -151,28 +244,158 @@
     <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 contractBeginTime_cheng = "";
+        var contractEndTime_cheng = "";
 
         //充值进行中
         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('结束时间不能小于或等于开始时间');
+                    var end = new Date($('#contractEndTime').val())
+                    end.setDate(end.getDate()-1)
+                    $('#contractBeginTime').val(util.toDateString(end, "yyyy-MM-dd"));
+                } else {
+                    var flag=termTypeTime();
+                    if(!false){
+                        return false;
+                    }
+                    $('#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('结束时间不能小于或等于开始时间');
+                    var begin = new Date($('#contractBeginTime').val())
+                    begin.setDate(begin.getDate()+1)
+                    $('#contractEndTime').val(util.toDateString(begin, "yyyy-MM-dd"));
+                    // $('#contractEndTime').val($('#contractBeginTime').val());
+                } else {
+                    var flag=termTypeTime();
+                    if(!false){
+                        return false;
+                    }
+                    $('#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")
+                    }
+
+                }
+            }
+        });
+        function termTypeTime(){
+            var listData = admin.getTempData("t_tempProduct");
+            var max= "";
+            var min= '';
+            if(listData!=null&&listData.length>0){
+               
+                listData.forEach((element,index) => {
+                    if(index==0){
+                        max=element.endTime;
+                        min=element.beginTime;
+                    }else{
+                        if (dateUtil.compareDate(min, element.beginTime)) {
+                        min=element.beginTime;
+                        }
+                        if (dateUtil.compareDate( element.endTime,max)) {
+                            max=element.endTime;
+                        }
+                    }
+                    
+                });
+            }
+            if(dateUtil.compareDate( $('#contractBeginTime').val(),min)){
+                layer.msg("合同的时间必须小于待充值的开始时间")
+                $('#contractBeginTime').val(contractBeginTime_cheng);
+                return false;
+            }else{
+                contractBeginTime_cheng=$('#contractBeginTime').val()
+            }
+            if(dateUtil.compareDate(max, $('#contractEndTime').val())){
+                layer.msg("合同的时间必须小于待充值的开始时间")
+                $('#contractEndTime').val(contractEndTime_cheng);
+                return false;
+            }else{
+                contractEndTime_cheng=$('#contractEndTime').val()
+            }
+
+        }
         laydate.render({
-            elem: '#contractBeginTime' //指定元素
+            elem: '#contractBeginTime_not' //指定元素
         });
         laydate.render({
-            elem: '#contractEndTime' //指定元素
+            elem: '#contractEndTime_not' //指定元素
         });
-        laydate.render({
-            elem: '#contractTime', //指定元素
-            value: new Date().dateFormat("yyyy-MM-dd")
+        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", "");
@@ -185,91 +408,166 @@
                 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) {
+                        if(data.data.beginTime==undefined){
+                            $("#contractBeginTime_not").hide();
+                            $("#contractEndTime_not").hide();
+                            $("#contractBeginTime_not_heng").hide();
+                            $("#contractNum_not").hide();
+                            form.render();
+                        }else{
+                            $("#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").val(layui.util.toDateString(data.data.beginTime, "yyyy-MM-dd"));
+                            $("#contractEndTime").val(layui.util.toDateString(data.data.endTime, "yyyy-MM-dd"));
+                            $("#custom_beginTime").val(layui.util.toDateString(data.data.beginTime, "yyyy-MM-dd"));
+                            $("#custom_endTime").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")
+                            }
+                            //自定义的时间段  开始时间进行限制
+                            custom_beginTimes.config.min = {
+                                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")
+                            }
+                            custom_beginTimes.config.max = {
+                                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")
+                            }
+                            //自定义的时间段  结束时间进行限制
+                            custom_endTimes.config.min = {
+                                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")
+                            }
+                            custom_endTimes.config.max = {
+                                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")
         }
 
         //回显医院基本数据
@@ -281,16 +579,17 @@
                     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 : "";
+                            $("#hospitalAreas").val(hospitalProvince + " " + hospitalCity + " " + hospitalArea);
 
                             //装载产品数据
                             table.render({
@@ -308,87 +607,87 @@
                                 },
                                 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) {
@@ -397,24 +696,98 @@
                             });
                         }
                     }
-                    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(0)
+                    return false;
+                }
+                var listData = admin.getTempData("t_tempProduct");
+                var listNum = 0;
+                if (!strUtil.isEmpty(listData)) {
+                    listData.forEach(item => {
+                        if(item.proType==1){
+                            listNum += item.ailightCount;
+                        }
+                    })
+                }
+                if ($("#contractNum").val() < listNum) {
+                    layer.msg("请先删除待充值套餐");
+                    $("#contractNum").val(contractNum)
+                    return false;
+                } else {
+                    contractNum = $("#contractNum").val();
+                    //将自定义的读片量赋值
+                    $("#custom_ailightCount").val($("#contractNum").val()-listNum);
+                }
+            })
+            //自定义的确定
+            $("#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,
+                    type: 1
+                }
+                tempDataList(data);
+                waitRecharge();
+            })
+            getCycleTime(hospitalData.departmentId);
         }
-
         //待充值列表功能操作
         table.on('tool(product-table-temp)', function (obj) {
             if (obj.event === "del") {
                 if (!strUtil.isEmpty(obj.data.id)) {
                     delTempDataById(obj.data.id);
                     obj.del();
+                    //将自定义的数量赋值
+                    zidingyiNum()
                 }
             }
         });
@@ -455,11 +828,38 @@
                     "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;
+                    }
+                }
+                //将所选的时间不得大于  合同的时间
+                var contractBeginTime = $("#contractBeginTime").val();
+                var contractEndTime = $("#contractEndTime").val();
+                if (!strUtil.isEmpty(data.beginTime)){
+                    if (dateUtil.compareDate( contractBeginTime,data.beginTime)) {
+                        layer.msg("开始时间必须大于合同的开始时间!");
+                        return false;
+                    }
+                }
+                if (!strUtil.isEmpty(data.endTime)){
+                    if (dateUtil.compareDate(data.endTime,contractEndTime)) {
+                        layer.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();
+                        //将自定义的数量赋值
+                        zidingyiNum()
                     } else {
                         layer.msg("结束时间必须大于开始时间!");
                         return false;
@@ -470,6 +870,43 @@
                 }
             }
         });
+        //将自定义的数量重新赋值
+        function zidingyiNum(){
+            var listData = admin.getTempData("t_tempProduct");
+            var listNum = 0;
+            if (!strUtil.isEmpty(listData)) {
+                listData.forEach(item => {
+                    if(item.proType==1){
+                        listNum += item.ailightCount;
+                    }
+                })
+            }
+            $("#custom_ailightCount").val($("#contractNum").val()-listNum);     
+        }
+        function isthenNum(num) {
+            if (num <= 0) {
+                return "请输入合同读片充值量大于0";
+            }
+            var listData = admin.getTempData("t_tempProduct");
+            var listNum = 0;
+            if (!strUtil.isEmpty(listData)) {
+                listData.forEach(item => {
+                    if(item.proType==1){
+                        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 //得到修改后的值
@@ -477,7 +914,7 @@
                 data = obj.data //得到所在行所有键值
                 ,
                 field = obj.field; //得到字段
-            if (dateUtil.isDate(value)) {} else {
+            if (dateUtil.isDate(value)) { } else {
                 layer.msg("输入的日期格式无效!");
             }
         });
@@ -515,13 +952,13 @@
                 if (strUtil.isEmpty(listData)) {
                     listData = new Array();
                 }
-                $.each(listData, function (index, value) {
-                    if (value.id === data.id) {
-                        //移除
-                        listData.splice(index, 1);
-                        return false;
-                    }
-                })
+                // $.each(listData, function (index, value) {
+                //     if (value.id === data.id) {
+                //         //移除
+                //         listData.splice(index, 1);
+                //         return false;
+                //     }
+                // })
                 listData.push(data);
                 admin.putTempData("t_tempProduct", listData);
             } else {
@@ -546,9 +983,23 @@
             if (!isRun) {
                 layer.load(2);
                 var listData = admin.getTempData("t_tempProduct");
-                if (listData != null) {
+                // if (listData != null) {
+                    var count= 0;
+                    if(listData!=null){
+                        listData.forEach(element => {
+                            if(element.proType==1){
+                                count+=element.ailightCount;
+                            }
+                        });
+                    }
+                    if(count!=data.field.contractNum){
+                        layer.closeAll('loading');
+                        layer.msg("合同读片充值量与套餐充值量不一致")
+                        return false;
+                    }
                     if (data.field != null) {
-                        layer.confirm("确定要将待充值列表中的" + listData.length + "个产品充值给当前医院的科室吗?", {
+                        var len=listData!=null&&listData.length>0 ? listData.length : 0
+                        layer.confirm("确定要将待充值列表中的" + len + "个产品充值给当前医院的科室吗?", {
                             btn: ["确定", "返回"]
                         }, function () {
                             isRun = true;
@@ -556,7 +1007,10 @@
                                 " 00:00:00";
                             data.field.contractEndTime = data.field.contractEndTime +
                                 " 23:59:59";
-                            data.field.contractTime = data.field.contractTime + " 00:00:00";
+                            // data.field.contractTime = data.field.contractTime + " 00:00:00";
+                            delete data.field.contractNum_not
+                            delete data.field.contractBeginTime_not
+                            delete data.field.contractEndTime_not
                             admin.req('api-opration/contract', JSON.stringify(data.field),
                                 function (data) {
                                     layer.closeAll('loading');
@@ -566,22 +1020,40 @@
                                         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 +
+                                                    ' 00:00:00' : "",
+                                                orderAilightCount: item.ailightCount,
+                                                orderRecordCount: item.recordCount != null ? item.recordCount : 0,
                                             };
                                             listDetailData.push(detailData);
                                         })
 
-                                        if (listDetailData.length > 0) {
+                                        if (listDetailData.length <=0) {
+                                            var detailData = {
+                                                orderId: orderData.id + '',
+                                                proId:  "0",
+                                                proType: 1,
+                                                proName: "软件服务周期",
+                                                isShare: 0,
+                                                ailightCount:  0,
+                                                recordCount: 0,
+                                                proBegintime: $("#contractBeginTime").val()+' 00:00:00' ,
+                                                proEndtime: $("#contractEndTime").val()+' 00:00:00' ,
+                                                orderAilightCount: 0,
+                                                orderRecordCount: 0,
+                                            };
+                                            listDetailData.push(detailData)
+                                        } 
                                             //提交订单数据
                                             admin.req(
                                                 'api-opration/productorderdetail/saveall',
@@ -608,13 +1080,9 @@
                                                         });
                                                     }
                                                 }, 'POST');
-                                        } else {
-                                            layer.msg("充值数据异常为空!", {
-                                                icon: 2,
-                                                time: 1000
-                                            });
-                                            isRun = false;
-                                        }
+                                            // layer.closeAll();
+                                            // layer.msg("充值数据成功!");
+                                            // isRun = false;
                                     } else {
                                         layer.msg(data.msg, {
                                             icon: 2,
@@ -630,15 +1098,24 @@
                             time: 1000
                         });
                     }
-                } else {
-                    layer.msg("请先将要充值的产品加入待充值!", {
-                        icon: 2,
-                        time: 2000
-                    });
-                }
+                // } else {
+                //     layer.msg("请先将要充值的产品加入待充值!", {
+                //         icon: 2,
+                //         time: 2000
+                //     });
+                // }
                 layer.closeAll('loading');
                 return false;
             }
         });
     });
-</script>
\ No newline at end of file
+</script>
+<style>
+    .layui-form-label {
+        width: 140px;
+    }
+
+    .layui-input-block {
+        margin-left: 160px;
+    }
+</style>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/rechargeupdate.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/rechargeupdate.html
new file mode 100644
index 0000000..52ba677
--- /dev/null
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/rechargeupdate.html
@@ -0,0 +1,1093 @@
+<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: 30%;" />
+                                    --
+                                    <input autocomplete="off" name="contractEndTime" disabled id="contractEndTime"
+                                        type="text" placeholder="请输入结束时间" class="layui-input" readonly
+                                        style="border: none; margin-top:-10px;margin-left: 10%;display: inline-block;width: 30%;" />
+                                </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" />
+                                </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" />
+                                </div>
+                            </div>
+                            <div class="layui-col-sm6">
+                                <div class="layui-input-inline">
+                                    <input type="checkbox" lay-skin="primary" 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="checkbox" lay-skin="primary" 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" type="button" 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 && d.ailightCount>0){}}
+            <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;
+        var contractBeginTimeVVV = "";
+        var contractEndTimeVVV = "";
+        //执行一个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())
+                }
+            }
+        });
+        var contractEndTime = laydate.render({
+            elem: '#contractEndTime', //指定元素
+            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())
+
+
+                }
+            }
+        });
+        laydate.render({
+            elem: '#contractBeginTime_not' //指定元素
+        });
+        laydate.render({
+            elem: '#contractEndTime_not' //指定元素
+        });
+
+        //现将临时数据清理
+        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: '操作'
+                    }
+                    ]
+                ]
+            });
+        }
+        //将自定义的数量重新赋值
+        function zidingyiNum() {
+            var listData = admin.getTempData("t_tempProduct");
+            var listNum = 0;
+            if (!strUtil.isEmpty(listData)) {
+                listData.forEach(item => {
+                    if (item.proType == 1) {
+                        listNum += item.ailightCount;
+                    }
+                })
+            }
+            $("#custom_ailightCount").val($("#contractNum_not").val() - listNum);
+        }
+        //待充值列表
+        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;
+                    //已经充值的套餐
+                    admin.putTempData("t_nowProduct", "");
+                    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);
+                    //将自定义的数量赋值
+                    zidingyiNum();
+                }
+            });
+        }
+        // 产品待充值数据
+        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")
+        }
+        //限制自定义的时间
+        function xianzhi() {
+            var custom_beginTimesd = laydate.render({
+                elem: '#custom_beginTime', //指定元素
+                min: $("#contractBeginTime").val(),
+                max: $("#contractEndTime").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: $("#contractBeginTime").val(),
+                max: $("#contractEndTime").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());
+                    }
+                }
+            });
+        }
+        //获取软件的服务周期
+        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"));
+                    }
+
+                }, "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')
+                            contractBeginTimeVVV = hospitalData.contractBeginTime
+                            contractEndTimeVVV = hospitalData.contractEndTime
+                            form.val('recharge-form', hospitalData);
+                            $("#custom_beginTime").val(hospitalData.contractBeginTime)
+                            $("#custom_endTime").val(hospitalData.contractEndTime)
+                            //限制时间
+                            xianzhi();
+                            getCycleTime(hospitalData.departmentId);
+                            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 => {
+                        if (item.proType == 1) {
+                            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 = contractBeginTimeVVV
+                    custom_endTime = contractEndTimeVVV
+                }
+                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();
+            })
+        }
+        //已充值列表 功能操作
+        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();
+                    //将自定义的数量赋值
+                    zidingyiNum();
+                }
+            }
+        });
+        //单元格点击事件
+        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(parseInt(data.ailightCount));
+                    if (msg != null) {
+                        layer.msg(msg);
+                        return false;
+                    }
+                }
+                //将所选的时间不得大于  合同的时间
+                var contractBeginTime = $("#contractBeginTime").val();
+                var contractEndTime = $("#contractEndTime").val();
+                if (!strUtil.isEmpty(data.beginTime)) {
+                    if (dateUtil.compareDate(contractBeginTime, data.beginTime)) {
+                        layer.msg("开始时间必须大于合同的开始时间!");
+                        return false;
+                    }
+                }
+                if (!strUtil.isEmpty(data.endTime)) {
+                    if (dateUtil.compareDate(data.endTime, contractEndTime)) {
+                        layer.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();
+                        //将自定义的数量赋值
+                        zidingyiNum()
+                    } else {
+                        layer.msg("结束时间必须大于开始时间!");
+                        return false;
+                    }
+                } else {
+                    layer.msg("时间格式有误!");
+                    return false;
+                }
+            }
+        });
+
+        // $("#contractNum_not").val($("#contractNum").val() - num);
+        function isthenNum(num) {
+            if (num <= 0) {
+                return "请输入合同读片充值量大于0";
+            }
+            var listData = admin.getTempData("t_tempProduct");
+            var listNum = 0;
+            if (!strUtil.isEmpty(listData)) {
+                listData.forEach(item => {
+                    if (item.proType == 1) {
+                        listNum += item.ailightCount;
+                    }
+                })
+            }
+            listNum += num;
+            if ($("#contractNum_not").val() == undefined || $("#contractNum_not").val() == "") {
+                return "请输入合同读片充值量!";
+            } else {
+                if (parseInt($("#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() {
+            if (!isRun) {
+                layer.load(2);
+                var listData = admin.getTempData("t_tempProduct");
+                var len = listData != null && listData.length > 0 ? listData.length : 0;
+                var count= 0;
+                if (listData != null) {
+                    listData.forEach(element => {
+                        if (element.proType == 1) {
+                            count += element.ailightCount;
+                        }
+                    });
+                }
+                if (count != $("#contractNum_not").val()) {
+                    layer.closeAll('loading');
+                    layer.msg("合同未充值量与套餐充值量不一致")
+                    return false;
+                }
+                if (listData != null && listData.length > 0) {
+                    layer.confirm("确定要将待充值列表中的" + len + "个产品充值给当前医院的科室吗?", {
+                        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 +
+                                    ' 00:00:00' : "",
+                                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
+                                        });
+                                        layer.closeAll();
+                                        layer.closeAll('loading');
+                                        return false;
+                                    }
+                                }, 'POST');
+                        } else {
+                            layer.msg("充值数据异常为空!", {
+                                icon: 2,
+                                time: 1000
+                            });
+                            isRun = false;
+                        }
+                    })
+                } else {
+                    layer.msg("请先将要充值的产品加入待充值!", {
+                        icon: 2,
+                        time: 2000
+                    });
+                    layer.closeAll('loading');
+                    return false;
+                }
+                layer.closeAll('loading');
+                return false;
+            }
+        };
+    });
+</script>
+<style>
+    .layui-form-label {
+        width: 100px;
+    }
+</style>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/saasClientPay.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/saasClientPay.html
index ddfee6d..92bd631 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/saasClientPay.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/saasClientPay.html
@@ -106,7 +106,6 @@
                 layer.closeAll('loading');
                 if (0 === data.code) {
                     let selected = false;
-                    console.log(data.data)
                     let id = 0;
                     $("#departmentId").empty();
                     $.each(data.data, function (index, item) {
@@ -143,7 +142,6 @@
                 layer.closeAll('loading');
                 if (0 === data.code) {
                     let selected = false;
-                    console.log(data.data)
                     $("#doctorId").empty();
                     $.each(data.data, function (index, item) {
                         //往下拉菜单里添加元素
@@ -152,7 +150,6 @@
                         } else {
                             selected = false
                         }
-                        console.log(item)
                         $('#doctorId').append(new Option(item.doctorName, item.id,
                             false, selected));
                         form.render('select', 'doctor_clients');
diff --git a/pom.xml b/pom.xml
index e62b831..b4fcfd1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -566,17 +566,17 @@
     </dependencyManagement>
 
     <repositories>
-<!--        <repository>-->
-<!--            <id>nexus-releases</id>-->
-<!--            <name>team repository</name>-->
-<!--            <url>http://192.168.2.240:8091/repository/maven-releases/</url>-->
-<!--            <releases>-->
-<!--                <enabled>true</enabled>-->
-<!--            </releases>-->
-<!--            <snapshots>-->
-<!--                <enabled>false</enabled>-->
-<!--            </snapshots>-->
-<!--        </repository>-->
+        <repository>
+            <id>nexus-releases</id>
+            <name>team repository</name>
+            <url>http://192.168.2.240:8091/repository/maven-releases/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
         <repository>
             <id>alimaven</id>
             <name>aliyun maven</name>

--
Gitblit v1.8.0