From f6d390988b1c9b5695338214e95ff0d6da70b300 Mon Sep 17 00:00:00 2001
From: zhaoxiaohao <279049017@qq.com>
Date: Wed, 25 Nov 2020 16:34:41 +0800
Subject: [PATCH] 完善功能

---
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html | 1029 ++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 766 insertions(+), 263 deletions(-)

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 7d5cc44..3dd58bb 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
@@ -1,130 +1,228 @@
 <form id="recharge-form" lay-filter="recharge-form" class="layui-form">
-    <div class="layui-tab" style="margin-top: 5px;">
-        <ul class="layui-tab-title">
-            <li class="layui-this">合同信息</li>
-        </ul>
-        <div class="layui-tab-content" style="margin: 0px;">
-            <div class="layui-tab-item layui-show">
-                <div class="layui-form-item" style="padding: 0; margin-bottom: 0px;">
-                    <div class="layui-row">
-                        <div class="layui-col-sm5">
-                            <label class="layui-form-label" style="padding: 0;">医院名称</label>
-                            <div class="layui-input-block">
-                                <input name="hospitalName" id="hospitalName" type="text" class="layui-input"
-                                    style="border: none; margin-top:-10px" readonly />
+    <div 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="padding: 0; margin-bottom: 0px;">
+                        <div class="layui-row">
+                            <div class="layui-col-sm5">
+                                <label class="layui-form-label" style="padding: 0;">医院名称</label>
+                                <div class="layui-input-block">
+                                    <input name="hospitalName" id="hospitalName" type="text" class="layui-input"
+                                        style="border: none; margin-top:-10px" readonly />
+                                </div>
                             </div>
-                        </div>
-                        <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 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>
-                        <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 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>
 
-                <div class="layui-form-item" style="padding: 0; margin-bottom: 0px;">
-                    <div class="layui-row">
-                        <div class="layui-col-sm5">
-                            <label class="layui-form-label" style="padding: 0 30px 0 0;">地区</label>
-                            <input name="hospitalAreas" id="hospitalAreas" type="text"
-                                style="border: none; width: 250px; margin-top:-10px" readonly class="layui-input" />
-                        </div>
-                        <div class="layui-col-sm3">
-                            <label class="layui-form-label" style="padding: 0;">联系电话</label>
-                            <div class="layui-input-block">
-                                <input name="hospitalTel" id="hospitalTel" type="text" class="layui-input"
-                                    style="border: none; margin-top:-10px" readonly />
+                    <div 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 20px 0 0;">地区</label>
+                                <input name="hospitalAreas" id="hospitalAreas" type="text"
+                                    style="border: none; width: 250px; margin-top:-10px" readonly class="layui-input" />
                             </div>
-                        </div>
-                        <div class="layui-col-sm2">
-                            <label class="layui-form-label" style="padding: 0;">联系人</label>
-                            <div class="layui-input-block">
-                                <input name="hospitalLink" type="text" class="layui-input"
-                                    style="border: none; margin-top:-10px;width: 120px;" readonly />
+                            <div class="layui-col-sm3">
+                                <label class="layui-form-label" style="padding: 0;">联系电话</label>
+                                <div class="layui-input-block">
+                                    <input name="hospitalTel" id="hospitalTel" type="text" class="layui-input"
+                                        style="border: none; margin-top:-10px" readonly />
+                                </div>
+                            </div>
+                            <div class="layui-col-sm2">
+                                <label class="layui-form-label" style="padding: 0;">联系人</label>
+                                <div class="layui-input-block">
+                                    <input name="hospitalLink" type="text" class="layui-input"
+                                        style="border: none; margin-top:-10px;width: 120px;" readonly />
+                                </div>
                             </div>
                         </div>
                     </div>
-                </div>
-                <div class="layui-form-item" style="padding: 0; margin-bottom: 0px;">
-                    <div class="layui-row">
-                        <div class="layui-col-sm4">
-                            <label class="layui-form-label" style="padding: 10px 30px 0 0px;">合同名称</label>
-                            <div class="layui-input-block">
-                                <input name="contractTitle" id="contractTitle" type="text" class="layui-input"
-                                    maxlength="50" lay-verify="required" required autocomplete="off" />
+                    <div class="layui-form-item" style="padding: 0; margin-bottom: 0px;">
+                        <div class="layui-row">
+                            <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"
+                                        style="display: inline-block;width: 80%;" />
+                                </div>
                             </div>
-                        </div>
-                        <div class="layui-col-sm3">
-                            <label class="layui-form-label">合同编号</label>
-                            <div class="layui-input-block">
-                                <input name="contractNo" id="contractNo" type="text" class="layui-input" maxlength="50"
-                                    style="width: 185px;" autocomplete="off" />
+                            <div 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" autocomplete="off" lay-verify="required" required
+                                        style="display: inline-block;width: 80%;" />
+                                </div>
                             </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-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-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: 40%;" />
+                                    <input autocomplete="off" name="contractEndTime_not" disabled
+                                        id="contractEndTime_not" type="text" placeholder="请输入结束时间" class="layui-input"
+                                        maxlength="50" readonly
+                                        style="border: none; display: inline-block;width: 40%;" />
+                                </div>
                             </div>
+                            <div class="layui-col-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 class="layui-col-sm4">
-                            <label class="layui-form-label">签订日期</label>
-                            <div class="layui-input-block">
-                                <input autocomplete="off" name="contractTime" id="contractTime" type="text"
-                                    class="layui-input" maxlength="50" lay-verify="required" required />
+                    </div>
+                    <div class="layui-form-item" style="margin: 10px 0px 0px 0px;">
+                        <div class="layui-row">
+                            <div class="layui-col-sm6">
+                                <label class="layui-form-label">合同服务周期:</label>
+                                <!-- <input autocomplete="off" name="contractBeginTime" id="contractBeginTime" type="text"
+                                    class="layui-input"  maxlength="50" lay-verify="required"
+                                    required /> -->
+                                <!-- <input autocomplete="off" name="contractEndTime" id="contractEndTime" type="text"
+                                    class="layui-input" maxlength="50" lay-verify="required" required /> -->
+                                <div class="layui-input-block">
+                                    <input autocomplete="off" name="contractBeginTime" id="contractBeginTime"
+                                        type="text" placeholder="请输开始时间" class="layui-input" maxlength="50"
+                                        lay-verify="required" required style="display: inline-block;width: 40%;" />
+                                    <input autocomplete="off" name="contractEndTime" id="contractEndTime" type="text"
+                                        placeholder="请输入结束时间" class="layui-input" maxlength="50" lay-verify="required"
+                                        required style="display: inline-block;width: 40%;" />
+                                </div>
+                            </div>
+                            <div class="layui-col-sm6">
+                                <label class="layui-form-label">合同读片充值量:</label>
+                                <div class="layui-input-inline">
+                                    <input autocomplete="off" name="contractNum" id="contractNum"
+                                        onkeyup="this.value=this.value.replace(/[^\d]/g,'') " type="text"
+                                        class="layui-input" maxlength="50" lay-verify="required" required />
+                                </div>
                             </div>
                         </div>
                     </div>
                 </div>
             </div>
         </div>
-    </div>
 
-    <div class="layui-tab" style="margin: 0px;">
-        <ul class="layui-tab-title">
-            <li class="layui-this">产品信息</li>
-        </ul>
-        <div class="layui-tab-content" style="margin: 0px;">
-            <div class="layui-tab-item layui-show" style="padding-top: 0px;">
-                <table class="layui-table" id="product-table" lay-filter="product-table" style="margin: 0px;"></table>
+        <div class="layui-tab" style="margin: 0px;">
+            <ul class="layui-tab-title">
+                <li class="layui-this">套餐列表</li>
+                <li>自定义充值</li>
+            </ul>
+            <div class="layui-tab-content" style="margin: -10px 0px -10px 0px;">
+                <div class="layui-tab-item layui-show" style="padding-top: 0px;">
+                    <table class="layui-table" id="product-table" lay-filter="product-table" style="margin: 0px;">
+                    </table>
+                </div>
+                <div class="layui-tab-item">
+                    <div class="layui-form-item" style="margin: 10px 0px 0px 0px;">
+                        <div class="layui-row">
+                            <div class="layui-col-sm12">
+                                <label class="layui-form-label">充值名称:</label>
+                                <div class="layui-input-inline">
+                                    <input autocomplete="off" id="custom_proName" type="text" class="layui-input"
+                                        maxlength="50" lay-verify="required" required />
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-form-item" style="margin: 10px 0px 0px 0px;">
+                        <div class="layui-row">
+                            <div class="layui-col-sm6">
+                                <label class="layui-form-label">读片充值量:</label>
+                                <div class="layui-input-inline">
+                                    <input autocomplete="off" id="custom_ailightCount"
+                                        onkeyup="this.value=this.value.replace(/[^\d]/g,'') " type="text"
+                                        class="layui-input" maxlength="50" lay-verify="required" required />
+                                </div>
+                            </div>
+                            <div class="layui-col-sm6">
+                                <div class="layui-input-inline">
+                                    <input type="radio" id="custom_isShare" name="gongxiang" value="1" title="是否共享" />
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-form-item" style="margin: 10px 0px 0px 0px;">
+                        <div class="layui-row">
+                            <div class="layui-col-sm12">
+                                <div class="layui-input-inline" style="width: 160px;text-align: right;">
+                                    <input type="radio" id="termType" name="termType" value="true" checked
+                                        title="期限限制" />
+                                </div>
+                                <div class="layui-col-sm4" style="margin-right: 30px;">
+                                    <input autocomplete="off" id="custom_beginTime" type="text" placeholder="请输开始时间"
+                                        class="layui-input" maxlength="50" />
+                                </div>
+                                <div class="layui-col-sm4 ">
+                                    <input autocomplete="off" type="text" placeholder="请输入结束时间" id="custom_endTime"
+                                        class="layui-input" maxlength="50" />
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <div class="layui-input-block"
+                            style="text-align: right;padding-right: 100px;padding-top: 50px;">
+                            <input class="layui-btn" type="button" id="custom_submit" value="确定" />
+                        </div>
+                    </div>
+                </div>
             </div>
         </div>
-    </div>
 
-    <div class="layui-tab" style="margin: 0px;">
-        <ul class="layui-tab-title">
-            <li class="layui-this">待充值产品</li>
-        </ul>
-        <div class="layui-tab-content">
-            <div class="layui-tab-item layui-show" style="padding-top: 0px;">
-                <table class="layui-table" id="product-table-temp" lay-filter="product-table-temp" style="margin: 0px;">
-                </table>
+        <div class="layui-tab" style="margin: 0px;">
+            <ul class="layui-tab-title">
+                <li class="layui-this">待充值产品</li>
+            </ul>
+            <div class="layui-tab-content" style="margin: -10px 0px -10px 0px;">
+                <div class="layui-tab-item layui-show" style="padding-top: 0px;">
+                    <table class="layui-table" id="product-table-temp" lay-filter="product-table-temp"
+                        style="margin: 0px;">
+                    </table>
+                </div>
             </div>
         </div>
     </div>
     <div class="layui-form-item model-form-footer" style="margin-right: 20px;">
         <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button>
-        <button class="layui-btn permissions" permissions="product-rechage" lay-filter="recharge-form-submit" lay-submit>确定充值</button>
+        <button class="layui-btn permissions" permissions="product-rechage" lay-filter="recharge-form-submit"
+            lay-submit>确定充值</button>
     </div>
     <input type="hidden" value="" id="departmentId" name="departmentId" />
     <input type="hidden" value="" id="hospitalId" name="hospitalId" />
@@ -141,29 +239,109 @@
 </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="共享|不共享"/>
+    <input type="checkbox" lay-filter="product-tpl-isShare" value="{{d.id}}" lay-skin="switch" lay-text="共享|不共享" />
 </script>
 <script>
-    layui.use(['form', 'table', 'util', 'config', 'laydate', 'admin'], function () {
+    layui.use(['form', 'table', 'util', 'config', 'laydate', 'jquery', 'admin'], function () {
         var form = layui.form;
         var table = layui.table;
         var config = layui.config;
         var layer = layui.layer;
         var util = layui.util;
         var admin = layui.admin;
+        // element=layui.element;
         var $ = layui.jquery;
         var laydate = layui.laydate;
 
+        var contractNum = 0;
+
+        //充值进行中
+        var isRun = false;
         //执行一个laydate实例
-        laydate.render({
-            elem: '#contractBeginTime'//指定元素
+        var contractBeginTime= laydate.render({
+            elem: '#contractBeginTime', //指定元素
+            done: function (value, date, endDate) {
+                var startDate = new Date(value).getTime();
+                var endTime = new Date($('#contractEndTime').val()).getTime();
+                if (endTime < startDate) {
+                    layer.msg('结束时间不能小于开始时间');
+                    $('#contractBeginTime').val($('#contractEndTime').val());
+                } else {
+                    $('#custom_beginTime').val($("#contractBeginTime").val())
+                    custom_beginTimes.config.min = {
+                        year: date.year,
+                        month: date.month - 1,//关键
+                        date: date.date,
+                        hours: date.hours,
+                        minutes: date.minutes,
+                        seconds: date.seconds
+                    }
+                }
+            }
+        });
+        var contractEndTime = laydate.render({
+            elem: '#contractEndTime', //指定元素
+            // min: $("#contractEndTime_not").val(),
+            done: function (value, date, endDate) {
+                var startDate = new Date($('#contractBeginTime').val()).getTime();
+                var endTime = new Date(value).getTime();
+                if (endTime < startDate) {
+                    layer.msg('结束时间不能小于开始时间');
+                    $('#contractEndTime').val($('#contractBeginTime').val());
+                } else {
+                    $('#custom_endTime').val($("#contractEndTime").val())
+                    custom_endTimes.config.max = {
+                        year: date.year,
+                        month: date.month - 1,//关键
+                        date: date.date,
+                        hours: date.hours,
+                        minutes: date.minutes,
+                        seconds: date.seconds
+                    }
+                    var begin = new Date($("#contractBeginTime").val())
+                    custom_endTimes.config.min = {
+                        year: layui.util.toDateString(begin, "yyyy"),
+                        month: layui.util.toDateString(begin, "MM") - 1,//关键
+                        date: layui.util.toDateString(begin, "dd"),
+                        hours: layui.util.toDateString(begin, "HH"),
+                        minutes: layui.util.toDateString(begin, "mm"),
+                        seconds: layui.util.toDateString(begin, "ss")
+                    }
+
+                }
+            }
         });
         laydate.render({
-            elem: '#contractEndTime' //指定元素
+            elem: '#contractBeginTime_not' //指定元素
         });
         laydate.render({
-            elem: '#contractTime', //指定元素
-            value: new Date().dateFormat("yyyy-MM-dd")
+            elem: '#contractEndTime_not' //指定元素
+        });
+        var custom_beginTimes = laydate.render({
+            elem: '#custom_beginTime', //指定元素
+            // min: $("#contractEndTime").val(),
+            // man: $("#contractBeginTime").val(),
+            done: function (value, date, endDate) {
+                var startDate = new Date(value).getTime();
+                var endTime = new Date($('#custom_endTime').val()).getTime();
+                if (endTime < startDate) {
+                    layer.msg('结束时间不能小于开始时间');
+                    $('#custom_beginTime').val($('#custom_endTime').val());
+                }
+            }
+        });
+        var custom_endTimes = laydate.render({
+            elem: '#custom_endTime', //指定元素
+            // min: $("#contractEndTime").val(),
+            // man: $("#contractBeginTime").val(),
+            done: function (value, date, endDate) {
+                var startDate = new Date($('#custom_beginTime').val()).getTime();
+                var endTime = new Date(value).getTime();
+                if (endTime < startDate) {
+                    layer.msg('结束时间不能小于开始时间');
+                    $('#custom_endTime').val($('#custom_beginTime').val());
+                }
+            }
         });
         //现将临时数据清理
         admin.putTempData("t_tempProduct", "");
@@ -173,19 +351,33 @@
                 elem: '#product-table-temp',
                 data: admin.getTempData("t_tempProduct"),
                 page: false,
-                height: '120px',
-                cols: [[
-                    { field: 'proName', width: 320, title: '产品名称', align: 'center', fixed: 'left' },
+                cellMinWidth: 100,
+                cols: [
+                    [{
+                        field: 'proName',
+                        width: 330,
+                        title: '产品名称',
+                        align: 'center',
+                        fixed: 'left'
+                    },
                     {
-                        field: 'proType', align: 'center', width: 100, templet: function (d) {
+                        field: 'proType',
+                        align: 'center',
+                        width: 80,
+                        templet: function (d) {
                             if (d.proType === 0)
                                 return "试用"
                             else
                                 return "正式"
-                        }, title: '类型'
+                        },
+                        title: '类型'
                     },
                     {
-                        field: 'proTime', width: 100, title: '时长', align: 'center', templet: function (d) {
+                        field: 'proTime',
+                        width: 100,
+                        title: '时长',
+                        align: 'center',
+                        templet: function (d) {
                             switch (d.proTimeUnit) {
                                 case 0:
                                     return d.proTime + "天";
@@ -197,88 +389,293 @@
                                     return d.proTime + "年";
                                     break;
                             }
+                            return "";
                         }
                     },
-                    { field: 'recordCount', width: 110, align: 'center', title: '报告数' },
-                    { field: 'ailightCount', width: 100, align: 'center', title: '读片量' },
                     {
-                        field: 'beginTime', align: 'center', width: 120, title: '开始日期'
+                        field: 'ailightCount',
+                        width: 100,
+                        align: 'center',
+                        title: '读片量'
                     },
                     {
-                        field: 'endTime', align: 'center', width: 120, title: '结束日期'
+                        field: 'recordCount',
+                        width: 100,
+                        align: 'center',
+                        title: '报告量'
                     },
                     {
-                        field: 'isShare', fixed: 'right', align: 'center', width: 100, templet: function (d) {
+                        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: '共享'
+                        },
+                        title: '共享'
                     },
-                    { field: 'id', fixed: 'right', align: 'center', width: 80, toolbar: '#product-tpl-bar-temp', title: '操作' }
-                ]]
+                    {
+                        field: 'id',
+                        fixed: 'right',
+                        align: 'center',
+                        width: 100,
+                        toolbar: '#product-tpl-bar-temp',
+                        title: '操作'
+                    }
+                    ]
+                ]
             });
+        }
+        //获取软件的服务周期
+        var getCycleTime = function (departmentId) {
+            admin.req('api-opration/productorderdetail/getContractBeginEndTimeAndNum', { departmentId: departmentId },
+                function (data) {
+                    if (data.code == 0) {
+                        $("#contractBeginTime_not").val(layui.util.toDateString(data.data.beginTime, "yyyy-MM-dd"));
+                        $("#contractEndTime_not").val(layui.util.toDateString(data.data.endTime, "yyyy-MM-dd"));
+                        contractBeginTime.config.max = {
+                            year: layui.util.toDateString(data.data.beginTime, "yyyy"),
+                            month: layui.util.toDateString(data.data.beginTime, "MM") - 1,//关键
+                            date: layui.util.toDateString(data.data.beginTime, "dd"),
+                            hours: layui.util.toDateString(data.data.beginTime, "HH"),
+                            minutes: layui.util.toDateString(data.data.beginTime, "mm"),
+                            seconds: layui.util.toDateString(data.data.beginTime, "ss")
+                        }
+                        contractEndTime.config.min = {
+                            year: layui.util.toDateString(data.data.endTime, "yyyy"),
+                            month: layui.util.toDateString(data.data.endTime, "MM") - 1,//关键
+                            date: layui.util.toDateString(data.data.endTime, "dd"),
+                            hours: layui.util.toDateString(data.data.endTime, "HH"),
+                            minutes: layui.util.toDateString(data.data.endTime, "mm"),
+                            seconds: layui.util.toDateString(data.data.endTime, "ss")
+                        }
+                        $("#contractNum_not").val(data.data.count);
+                    }
+
+                }, "get")
         }
 
         //回显医院基本数据
         let hospitalData = admin.getTempData('t_hospital');
         if (hospitalData != null) {
-            form.val('recharge-form', hospitalData);
-            $("#hospitalAreas").val(hospitalData.hospitalProvince + " " + hospitalData.hospitalCity + " " + hospitalData.hospitalArea);
-        }
-        //装载产品数据
-        table.render({
-            elem: '#product-table',
-            url: config.base_server + 'api-opration/product',
-            method: 'GET',
-            headers: { 'Authorization': 'Bearer ' + config.getToken().access_token },
-            page: false,
-            height: '300px',
-            where: { enabled: 1 },
-            cols: [[
-                { field: 'proName', sort: true, width: 300, title: '产品名称', align: 'center', fixed: 'left' },
-                {
-                    field: 'proType', sort: true, align: 'center', width: 80, templet: function (d) {
-                        if (d.proType === 0)
-                            return "试用"
-                        else
-                            return "正式"
-                    }, title: '类型'
-                },
-                {
-                    field: 'proTime', width: 100, title: '时长', align: 'center', templet: function (d) {
-                        switch (d.proTimeUnit) {
-                            case 0:
-                                return d.proTime + "天";
-                                break;
-                            case 1:
-                                return d.proTime + "月";
-                                break;
-                            case 2:
-                                return d.proTime + "年";
-                                break;
+            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 {
+                            form.val('recharge-form', hospitalData);
+                            var hospitalProvince = hospitalData.hospitalProvince != null ? hospitalData.hospitalProvince : "";
+                            var hospitalCity = hospitalData.hospitalCity != null ? hospitalData.hospitalCity : "";
+                            var hospitalArea = hospitalData.hospitalArea != null ? hospitalData.hospitalArea : "";
+                            // console.log(hospitalProvince + " " + hospitalCity + " " +hospitalArea)
+                            $("#hospitalAreas").val(hospitalProvince + " " + hospitalCity + " " + hospitalArea);
+
+                            //装载产品数据
+                            table.render({
+                                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);
+                                }
+                            });
                         }
                     }
-                },
-                { field: 'recordCount', width: 100, align: 'center', title: '报告数' },
-                { field: 'ailightCount', width: 100, align: 'center', title: '读片量' },
-                {
-                    field: 'beginTime', align: 'center', width: 130, title: '开始日期', templet: function (d) {
-                        return getNowDate();
-                    }, event: "date", edit: 'text'
-                },
-                {
-                    field: 'endTime', align: 'center', width: 130, title: '结束日期', templet: function (d) {
-                        return getNowDate(d.proTime, d.proTimeUnit);
-                    }, event: "date", edit: 'text'
-                },
-                { field: 'isShare', fixed: 'right', align: 'center', width: 100, templet: '#product-tpl-isShare', title: '共享' },
-                { field: 'id', fixed: 'right', align: 'center', width: 100, toolbar: '#product-tpl-bar', title: '操作' }
-            ]],
-            done:function(res){
-                permissionsInput(res,config);
-            }
-        });
+                    else {
+                        admin.finishPopupCenter();
+                        layer.msg("验证医院科室数据异常!", {
+                            icon: 2,
+                            time: 3000
+                        });
+                    }
+                }, 'get');
+            //报告数量事件
+            $("#contractNum").blur(function () {
+                if ($("#contractNum").val() <= 0) {
+                    layer.msg("输入的读片量大于0");
+                    $("#contractNum").val("")
+                    return false;
+                }
+                var listData = admin.getTempData("t_tempProduct");
+                var listNum = 0;
+                if (!strUtil.isEmpty(listData)) {
+                    listData.forEach(item => {
+                        listNum += item.ailightCount;
+                    })
+                }
+                if ($("#contractNum").val() < listNum) {
+                    layer.msg("请先删除待充值套餐");
+                    $("#contractNum").val(contractNum)
+                    return false;
+                } else {
+                    contractNum = $("#contractNum").val();
+                }
+            })
+            //自定义的确定
+            $("#custom_submit").click(function () {
+                var custom_proName = $("#custom_proName").val()
+                var custom_ailightCount = $("#custom_ailightCount").val()
+                var custom_isShare = $("#custom_isShare").prop("checked") ? 1 : 0;
+                var termType = $("#termType").prop("checked") ? 1 : 0;
+                var custom_beginTime = "";
+                var custom_endTime = "";
+                if (termType == 1) {
+                    custom_beginTime = $("#custom_beginTime").val();
+                    custom_endTime = $("#custom_endTime").val();
+                } else {
+                    custom_beginTime = $("#contractBeginTime").val();
+                    custom_endTime = $("#contractEndTime").val();
+                }
+                var listData = admin.getTempData("t_tempProduct");
+                //添加一个id,删除用
+                var max = 0;
+                if (strUtil.isEmpty(listData)) {
+                    listData = new Array();
+                }
+                listData.forEach(element => {
+                    if (max < element.id) {
+                        max = element.id
+                    }
+                });
+                //判断待加入产品的总数是否大于合同的总数
+                var msg = isthenNum(parseInt(custom_ailightCount));
+                if (msg != null) {
+                    layer.msg(msg);
+                    return false;
+                }
+
+                var data = {
+                    id: max + 1,
+                    ailightCount: parseInt(custom_ailightCount),
+                    beginTime: custom_beginTime,
+                    endTime: custom_endTime,
+                    isShare: custom_isShare,
+                    proName: custom_proName,
+                    proTime: "",
+                    proType: 1,
+                    termType: termType
+                }
+                tempDataList(data);
+                waitRecharge();
+            })
+            getCycleTime(hospitalData.departmentId);
+        }
         //待充值列表功能操作
         table.on('tool(product-table-temp)', function (obj) {
             if (obj.event === "del") {
@@ -290,50 +687,108 @@
         });
         //单元格点击事件
         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.beginTime = (!strUtil.isEmpty(data.beginTime)) ? data.beginTime : obj.tr.find(
+                    "td[data-field='beginTime'] div").text();
+                data.endTime = (!strUtil.isEmpty(data.endTime)) ? data.endTime : obj.tr.find(
+                    "td[data-field='endTime'] div").text();
                 data.isShare = obj.tr.find("td[data-field='isShare'] em").text();
-                data.isShare = (data.isShare.indexOf("不") == 0) ? 0 : 1
-                    ;
-                if (!strUtil.isEmpty(data.beginTime) && !strUtil.isEmpty(data.endTime)) {
-                    if (dateUtil.compareDate(data.endTime, data.beginTime)) {
-                        tempDataList(data);
-                        waitRecharge();
-                    }
-                    else {
-                        layer.msg("结束时间必须大于开始时间!");
+                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;
                     }
                 }
-                else {
+                if (!strUtil.isEmpty(data.beginTime) && !strUtil.isEmpty(data.endTime)) {
+                    if (dateUtil.compareDate(data.endTime, data.beginTime)) {
+                        data.id = data.id + '';
+                        tempDataList(data);
+                        waitRecharge();
+                    } else {
+                        layer.msg("结束时间必须大于开始时间!");
+                        return false;
+                    }
+                } else {
                     layer.msg("时间格式有误!");
                     return false;
                 }
             }
         });
+        function isthenNum(num) {
+            if (num <= 0) {
+                return "请输入读片量大于0";
+            }
+            var listData = admin.getTempData("t_tempProduct");
+            var listNum = 0;
+            if (!strUtil.isEmpty(listData)) {
+                listData.forEach(item => {
+                    listNum += item.ailightCount;
+                })
+            }
+            listNum += num;
+            if ($("#contractNum").val() == undefined || $("#contractNum").val() == "") {
+                return "请输入读片量!";
+            } else {
+                if ($("#contractNum").val() < listNum) {
+                    return "当前产品总数不得大于合同总量";
+                } else {
+                    return null;
+                }
+            }
+        }
         //监听单元格编辑 判断日期格式
         table.on('edit(product-table)', function (obj) {
             var value = obj.value //得到修改后的值
-                , data = obj.data //得到所在行所有键值
-                , field = obj.field; //得到字段
-            if (dateUtil.isDate(value)) {
-            }
-            else {
+                ,
+                data = obj.data //得到所在行所有键值
+                ,
+                field = obj.field; //得到字段
+            if (dateUtil.isDate(value)) { } else {
                 layer.msg("输入的日期格式无效!");
             }
         });
         //自动计算时间
-        var getNowDate = function (proTime, proTimeUnit) {
-            var now = new Date();
+        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 {
+            } else {
                 proTime = strUtil.isEmpty(proTime) ? 0 : proTime;
                 proTimeUnit = strUtil.isEmpty(proTimeUnit) ? 0 : proTimeUnit;
                 switch (proTimeUnit) {
@@ -341,10 +796,12 @@
                         return new Date(now.setDate(now.getDate() + proTime)).dateFormat("yyyy-MM-dd");
                         break;
                     case 1:
-                        return new Date(now.setMonth(now.getMonth() + proTime + 1)).dateFormat("yyyy-MM-dd");
+                        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");
+                        return new Date(now.setFullYear(now.getFullYear() + proTime)).dateFormat(
+                            "yyyy-MM-dd");
                         break;
                 }
             }
@@ -356,17 +813,16 @@
                 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 {
+            } else {
                 admin.putTempData("t_tempProduct", "");
             }
         }
@@ -385,70 +841,117 @@
             }
         }
         form.on('submit(recharge-form-submit)', function (data) {
-            layer.load(2);
-            var listData = admin.getTempData("t_tempProduct");
-            if (listData != null) {
-                if (data.field != null) {
-                    layer.confirm("确定要将待充值列表中的" + listData.length + "个产品充值给当前医院吗?", { btn: ["确定", "返回"] }, function () {
-                        data.field.contractBeginTime=data.field.contractBeginTime+" 00:00:00";
-                        data.field.contractEndTime=data.field.contractEndTime+" 23:59:59";
-                        data.field.contractTime=data.field.contractTime+" 00:00:00";
-                        admin.req('api-opration/contract', JSON.stringify(data.field), function (data) {
-                            layer.closeAll('loading');
-                            if (data.code === 0) {
-                                var orderData = data.data;
-                                //处理订单明细数据
-                                var listDetailData = new Array();
-                                $.each(listData, function (index, item) {
-                                    var detailData = {
-                                        orderId: orderData.id,
-                                        proId: item.id,
-                                        proType: item.proType,
-                                        proName: item.proName,
-                                        isShare: item.isShare,
-                                        ailightCount: item.ailightCount,
-                                        recordCount: item.recordCount,
-                                        proBegintime: item.beginTime + ' 00:00:00',
-                                        proEndtime: item.endTime + ' 23:59:59'
-                                    };
-                                    listDetailData.push(detailData);
-                                })
-                                
-                                if (listDetailData.length > 0) {
-                                    //提交订单数据
-                                    admin.req('api-opration/productorderdetail/saveall', JSON.stringify(listDetailData), function (data) {
-                                        layer.closeAll('loading');
-                                        if (data.code === 0) {
-                                            //现将临时数据清理
-                                            admin.putTempData("t_tempProduct", "");
-                                            layer.msg(data.msg, { icon: 1, time: 3000 }, function () {
-                                                admin.finishPopupCenter();
+            if (!isRun) {
+                layer.load(2);
+                var listData = admin.getTempData("t_tempProduct");
+                if (listData != null) {
+                    if (data.field != null) {
+                        layer.confirm("确定要将待充值列表中的" + listData.length + "个产品充值给当前医院的科室吗?", {
+                            btn: ["确定", "返回"]
+                        }, function () {
+                            isRun = true;
+                            data.field.contractBeginTime = data.field.contractBeginTime +
+                                " 00:00:00";
+                            data.field.contractEndTime = data.field.contractEndTime +
+                                " 23:59:59";
+                            // 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');
+                                    if (data.code === 0) {
+                                        var orderData = data.data;
+                                        //处理订单明细数据
+                                        var listDetailData = new Array();
+                                        $.each(listData, function (index, item) {
+                                            var detailData = {
+                                                orderId: orderData.id + '',
+                                                proId: item.termType == null ? item.id + '' : "0",
+                                                proType: item.proType,
+                                                proName: item.proName,
+                                                isShare: item.isShare,
+                                                ailightCount: item.ailightCount != null ? item.ailightCount : 0,
+                                                recordCount: item.recordCount != null ? item.recordCount : 0,
+                                                termType: item.termType,
+                                                proBegintime: item.beginTime != "" ? item.beginTime +
+                                                    ' 00:00:00' : "",
+                                                proEndtime: item.endTime != "" ? item.endTime +
+                                                    ' 23:59:59' : "",
+                                                orderAilightCount: item.ailightCount,
+                                                orderRecordCount: item.recordCount != null ? item.recordCount : 0,
+                                            };
+                                            listDetailData.push(detailData);
+                                        })
+
+                                        if (listDetailData.length > 0) {
+                                            //提交订单数据
+                                            admin.req(
+                                                'api-opration/productorderdetail/saveall',
+                                                JSON.stringify(listDetailData),
+                                                function (data) {
+                                                    isRun = false;
+                                                    layer.closeAll('loading');
+                                                    if (data.code === 0) {
+                                                        //现将临时数据清理
+                                                        admin.putTempData(
+                                                            "t_tempProduct",
+                                                            "");
+                                                        layer.msg(data.msg, {
+                                                            icon: 1,
+                                                            time: 2000
+                                                        }, function () {
+                                                            admin
+                                                                .finishPopupCenter();
+                                                        });
+                                                    } else {
+                                                        layer.msg(data.msg, {
+                                                            icon: 2,
+                                                            time: 1000
+                                                        });
+                                                    }
+                                                }, 'POST');
+                                        } else {
+                                            layer.msg("充值数据异常为空!", {
+                                                icon: 2,
+                                                time: 1000
                                             });
+                                            isRun = false;
                                         }
-                                        else {
-                                            layer.msg(data.msg, { icon: 2, time: 1000 });
-                                        }
-                                    }, 'POST');
-                                }
-                                else {
-                                    layer.msg("充值数据异常为空!", { icon: 2, time: 1000 });
-                                }
-                            }
-                            else {
-                                layer.msg(data.msg, { icon: 2, time: 1000 });
-                            }
-                        }, 'POST');
-                    })
+                                    } else {
+                                        layer.msg(data.msg, {
+                                            icon: 2,
+                                            time: 1000
+                                        });
+                                        isRun = false;
+                                    }
+                                }, 'POST');
+                        })
+                    } else {
+                        layer.msg("数据异常!", {
+                            icon: 2,
+                            time: 1000
+                        });
+                    }
+                } else {
+                    layer.msg("请先将要充值的产品加入待充值!", {
+                        icon: 2,
+                        time: 2000
+                    });
                 }
-                else {
-                    layer.msg("数据异常!", { icon: 2, time: 1000 });
-                }
+                layer.closeAll('loading');
+                return false;
             }
-            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

--
Gitblit v1.8.0