From daa697719eb0ddfd170f1ab94c5422a4f5b93951 Mon Sep 17 00:00:00 2001
From: zhaoxiaohao <279049017@qq.com>
Date: Fri, 18 Sep 2020 14:36:54 +0800
Subject: [PATCH] Merge branch 'dev'

---
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html |  616 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 616 insertions(+), 0 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
new file mode 100644
index 0000000..a5eb861
--- /dev/null
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html
@@ -0,0 +1,616 @@
+<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="padding: 0; margin-bottom: 0px;">
+                        <div class="layui-row">
+                            <div class="layui-col-sm5">
+                                <label class="layui-form-label" style="padding: 0;">医院名称</label>
+                                <div class="layui-input-block">
+                                    <input name="hospitalName" id="hospitalName" type="text" class="layui-input"
+                                        style="border: none; margin-top:-10px" readonly />
+                                </div>
+                            </div>
+                            <div class="layui-col-sm3">
+                                <label class="layui-form-label" style="padding: 0;">科室名称</label>
+                                <div class="layui-input-block">
+                                    <input name="departmentName" id="departmentName"
+                                        style="border: none;  margin-top:-10px" readonly class="layui-input" />
+                                </div>
+                            </div>
+                            <div class="layui-col-sm2">
+                                <label class="layui-form-label" style="padding: 0;">服务人员</label>
+                                <div class="layui-input-block">
+                                    <input name="serverUserName" id="serverUserName"
+                                        style="border: none; margin-top:-10px;width: 120px;" readonly
+                                        class="layui-input" />
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="layui-form-item" style="padding: 0; margin-bottom: 0px;">
+                        <div class="layui-row">
+                            <div class="layui-col-sm5">
+                                <label class="layui-form-label" style="padding: 0 30px 0 0;">地区</label>
+                                <input name="hospitalAreas" id="hospitalAreas" type="text"
+                                    style="border: none; width: 250px; margin-top:-10px" readonly class="layui-input" />
+                            </div>
+                            <div class="layui-col-sm3">
+                                <label class="layui-form-label" style="padding: 0;">联系电话</label>
+                                <div class="layui-input-block">
+                                    <input name="hospitalTel" id="hospitalTel" type="text" class="layui-input"
+                                        style="border: none; margin-top:-10px" readonly />
+                                </div>
+                            </div>
+                            <div class="layui-col-sm2">
+                                <label class="layui-form-label" style="padding: 0;">联系人</label>
+                                <div class="layui-input-block">
+                                    <input name="hospitalLink" type="text" class="layui-input"
+                                        style="border: none; margin-top:-10px;width: 120px;" readonly />
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-form-item" style="padding: 0; margin-bottom: 0px;">
+                        <div class="layui-row">
+                            <div class="layui-col-sm4">
+                                <label class="layui-form-label" style="padding: 10px 30px 0 0px;">合同名称</label>
+                                <div class="layui-input-block">
+                                    <input name="contractTitle" id="contractTitle" type="text" class="layui-input"
+                                        maxlength="50" lay-verify="required" required autocomplete="off" />
+                                </div>
+                            </div>
+                            <div class="layui-col-sm3">
+                                <label class="layui-form-label">合同编号</label>
+                                <div class="layui-input-block">
+                                    <input name="contractNo" id="contractNo" type="text" class="layui-input"
+                                        maxlength="50" style="width: 185px;" autocomplete="off" 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-sm4">
+                                <label class="layui-form-label" style="padding: 10px 30px 0 0px;">开始日期</label>
+                                <input autocomplete="off" name="contractBeginTime" id="contractBeginTime" type="text"
+                                    class="layui-input" style="width: 182px;" maxlength="50" lay-verify="required"
+                                    required />
+                            </div>
+                            <div class="layui-col-sm4">
+                                <label class="layui-form-label">截止日期</label>
+                                <div class="layui-input-block">
+                                    <input autocomplete="off" name="contractEndTime" id="contractEndTime" type="text"
+                                        class="layui-input" maxlength="50" lay-verify="required" required />
+                                </div>
+                            </div>
+                            <div class="layui-col-sm4">
+                                <label class="layui-form-label">签订日期</label>
+                                <div class="layui-input-block">
+                                    <input autocomplete="off" name="contractTime" id="contractTime" type="text"
+                                        class="layui-input" maxlength="50" lay-verify="required" required />
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div class="layui-tab" style="margin: 0px;">
+            <ul class="layui-tab-title">
+                <li class="layui-this">产品信息</li>
+            </ul>
+            <div class="layui-tab-content" style="margin: -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>
+        </div>
+
+        <div class="layui-tab" style="margin: 0px;">
+            <ul class="layui-tab-title">
+                <li class="layui-this">待充值产品</li>
+            </ul>
+            <div class="layui-tab-content" style="margin: -10px 0px -10px 0px;">
+                <div class="layui-tab-item layui-show" style="padding-top: 0px;">
+                    <table class="layui-table" id="product-table-temp" lay-filter="product-table-temp"
+                        style="margin: 0px;">
+                    </table>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="layui-form-item model-form-footer" style="margin-right: 20px;">
+        <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button>
+        <button class="layui-btn permissions" permissions="product-rechage" lay-filter="recharge-form-submit"
+            lay-submit>确定充值</button>
+    </div>
+    <input type="hidden" value="" id="departmentId" name="departmentId" />
+    <input type="hidden" value="" id="hospitalId" name="hospitalId" />
+    <input type="hidden" value="" id="orgId" name="orgId" />
+    <input type="hidden" value="" id="serverUserId" name="serverUserId" />
+</form>
+<!-- 表格操作列 -->
+<script type="text/html" id="product-tpl-bar">
+    <a class="layui-btn layui-btn-xs" lay-event="pay">加入待充值</a>
+</script>
+<!-- 表格操作列 -->
+<script type="text/html" id="product-tpl-bar-temp">
+    <a class="layui-btn layui-btn-danger" lay-event="del">移除</a>
+</script>
+<!-- 表格状态列 -->
+<script type="text/html" id="product-tpl-isShare">
+    <input type="checkbox" lay-filter="product-tpl-isShare" value="{{d.id}}" lay-skin="switch" lay-text="共享|不共享" />
+</script>
+<script>
+    layui.use(['form', 'table', 'util', 'config', 'laydate', 'admin'], function () {
+        var form = layui.form;
+        var table = layui.table;
+        var config = layui.config;
+        var layer = layui.layer;
+        var util = layui.util;
+        var admin = layui.admin;
+        var $ = layui.jquery;
+        var laydate = layui.laydate;
+
+        //充值进行中
+        var isRun = false;
+        //执行一个laydate实例
+        laydate.render({
+            elem: '#contractBeginTime' //指定元素
+        });
+        laydate.render({
+            elem: '#contractEndTime' //指定元素
+        });
+        laydate.render({
+            elem: '#contractTime', //指定元素
+            value: new Date().dateFormat("yyyy-MM-dd")
+        });
+        //现将临时数据清理
+        admin.putTempData("t_tempProduct", "");
+        //待充值列表
+        var waitRecharge = function () {
+            table.render({
+                elem: '#product-table-temp',
+                data: admin.getTempData("t_tempProduct"),
+                page: false,
+                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;
+                                }
+                            }
+                        },
+                        {
+                            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: '操作'
+                        }
+                    ]
+                ]
+            });
+        }
+
+        //回显医院基本数据
+        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/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);
+            }
+        });
+        //待充值列表功能操作
+        table.on('tool(product-table-temp)', function (obj) {
+            if (obj.event === "del") {
+                if (!strUtil.isEmpty(obj.data.id)) {
+                    delTempDataById(obj.data.id);
+                    obj.del();
+                }
+            }
+        });
+        //单元格点击事件
+        table.on('tool(product-table)', function (obj) {
+            var newdata = {};
+            var data = obj.data;
+            var selectData = {};
+            if (obj.event === 'date') {
+                var field = $(this).data('field');
+                laydate.render({
+                    elem: this.firstChild,
+                    format: "yyyy-MM-dd",
+                    show: true,
+                    done: function (value, date) {
+                        var nowTr=obj.tr;
+                        if (field === "beginTime") {
+                            var endTimes = getNowDate(data.proTime, data.proTimeUnit,
+                                value);
+                            newdata["beginTime"] = value;
+                            newdata["endTime"] = endTimes;
+                        } else if (field === "endTime") {
+                            newdata["endTime"] = value;
+                            var beginTimes = getNowDate((0 - parseInt(data.proTime)),
+                                data.proTimeUnit, value);
+                            newdata["beginTime"] = beginTimes;
+                        }
+                        obj.update(newdata);
+                    }
+                });
+            }
+            if (obj.event === "pay") {
+                data.beginTime = obj.tr.find("td[data-field='beginTime'] input").val();
+                data.endTime = obj.tr.find("td[data-field='endTime'] input").val();
+                data.beginTime = (!strUtil.isEmpty(data.beginTime)) ? data.beginTime : obj.tr.find(
+                    "td[data-field='beginTime'] div").text();
+                data.endTime = (!strUtil.isEmpty(data.endTime)) ? data.endTime : obj.tr.find(
+                    "td[data-field='endTime'] div").text();
+                data.isShare = obj.tr.find("td[data-field='isShare'] em").text();
+                data.isShare = (data.isShare.indexOf("不") == 0) ? 0 : 1;
+                if (!strUtil.isEmpty(data.beginTime) && !strUtil.isEmpty(data.endTime)) {
+                    if (dateUtil.compareDate(data.endTime, data.beginTime)) {
+                        tempDataList(data);
+                        waitRecharge();
+                    } else {
+                        layer.msg("结束时间必须大于开始时间!");
+                        return false;
+                    }
+                } else {
+                    layer.msg("时间格式有误!");
+                    return false;
+                }
+            }
+        });
+        //监听单元格编辑 判断日期格式
+        table.on('edit(product-table)', function (obj) {
+            var value = obj.value //得到修改后的值
+                ,
+                data = obj.data //得到所在行所有键值
+                ,
+                field = obj.field; //得到字段
+            if (dateUtil.isDate(value)) {} else {
+                layer.msg("输入的日期格式无效!");
+            }
+        });
+        //自动计算时间
+        var getNowDate = function (proTime, proTimeUnit, 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 tempDataList = function (data) {
+            if (!strUtil.isEmpty(data)) {
+                var listData = admin.getTempData("t_tempProduct");
+                if (strUtil.isEmpty(listData)) {
+                    listData = new Array();
+                }
+                $.each(listData, function (index, value) {
+                    if (value.id === data.id) {
+                        //移除
+                        listData.splice(index, 1);
+                        return false;
+                    }
+                })
+                listData.push(data);
+                admin.putTempData("t_tempProduct", listData);
+            } else {
+                admin.putTempData("t_tempProduct", "");
+            }
+        }
+        //移除指定数据
+        var delTempDataById = function (id) {
+            if (!strUtil.isEmpty(id)) {
+                var listData = admin.getTempData("t_tempProduct");
+                $.each(listData, function (index, value) {
+                    if (value.id === id) {
+                        //移除
+                        listData.splice(index, 1);
+                        return false;
+                    }
+                })
+                admin.putTempData("t_tempProduct", listData);
+            }
+        }
+        form.on('submit(recharge-form-submit)', function (data) {
+            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";
+                            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) {
+                                                    isRun = false;
+                                                    layer.closeAll('loading');
+                                                    if (data.code === 0) {
+                                                        //现将临时数据清理
+                                                        admin.putTempData(
+                                                            "t_tempProduct",
+                                                            "");
+                                                        layer.msg(data.msg, {
+                                                            icon: 1,
+                                                            time: 3000
+                                                        }, 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
+                                        });
+                                        isRun = false;
+                                    }
+                                }, 'POST');
+                        })
+                    } else {
+                        layer.msg("数据异常!", {
+                            icon: 2,
+                            time: 1000
+                        });
+                    }
+                } else {
+                    layer.msg("请先将要充值的产品加入待充值!", {
+                        icon: 2,
+                        time: 2000
+                    });
+                }
+                layer.closeAll('loading');
+                return false;
+            }
+        });
+    });
+</script>
\ No newline at end of file

--
Gitblit v1.8.0