forked from kidgrow-microservices-platform

luliqiang
2020-12-31 6fb14149d62199cfcc0448c82eb2f51f9c5181de
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/dataNeed.html
@@ -1,19 +1,19 @@
<div class="layui-card">
    <div class="layui-card-header">
        <h2 class="header-title">应用管理</h2>
        <h2 class="header-title">数据需求</h2>
        <span class="layui-breadcrumb pull-right">
            <a href="#!home_console">首页</a>
            <a><cite>应用管理</cite></a>
            <a><cite>数据需求</cite></a>
        </span>
    </div>
    <div class="layui-card-body">
        <div class="layui-form toolbar">
            <input id="app-edit-search" class="layui-input search-input" type="text" placeholder="输入医生姓名" />&emsp;
            <input type="text" class="layui-input search-input" id="test1"> 至 <input type="text"
                class="layui-input search-input" id="test2"> &emsp;
            <button id="app-btn-search" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>
            <input id="app-edit-search" class="layui-input search-input" type="text" placeholder="按医生姓名" />&emsp;
            <input type="text" class="layui-input search-input" id="test1" placeholder="开始时间" > 至 <input type="text"
                class="layui-input search-input" id="test2" placeholder="结束时间" > &emsp;
            <button id="app-btn-search" class="layui-btn icon-btn permissions"  permissions="diagnostic-get"><i class="layui-icon">&#xe615;</i>搜索</button>
            <!-- <button id="app-btn-add" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>添加</button> -->
            <button id="app-btn-export" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>导出</button>
            <button id="app-btn-export" class="layui-btn icon-btn permissions"  permissions="dataneed-export"><i class="layui-icon">&#xe654;</i>导出</button>
        </div>
        <!-- 数据表格 -->
@@ -23,65 +23,133 @@
<!-- 表格操作列 -->
<script type="text/html" id="app-table-bar">
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看详情</a>
</script>
<script type="text/html" id="app-table-bar1">
    {{# if (d.enabled ==0&&d.dataFile==null){}}
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="upload">待上传数据</a>
    {{#  } else { }}
    <p>已上传</p>
    {{#}}}
</script>
<!-- 表单弹窗 -->
<!-- <script type="text/html" id="app-model">
<script type="text/html" id="app-model">
    <form id="app-form" lay-filter="app-form" class="layui-form model-form">
        <input name="id" type="hidden"/>
        <div class="layui-form-item">
            <label class="layui-form-label">应用标识</label>
            <label class="layui-form-label">需求类型</label>
            <div class="layui-input-block">
                <input name="clientId" placeholder="请输入应用标识" type="text" class="layui-input" maxlength="20"
                       lay-verify="required" required/>
                <input name="needTypeName" id="needTypeName" placeholder="请输入应用标识" type="text" class="layui-input" maxlength="20"/>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">应用名称</label>
            <label class="layui-form-label">医生姓名</label>
            <div class="layui-input-block">
                <input name="clientName" placeholder="请输入应用名称" type="text" class="layui-input" maxlength="20"/>
                <input name="doctorName" placeholder="请输入应用名称" type="text" class="layui-input" maxlength="20"/>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">应用密钥</label>
            <label class="layui-form-label">医院名称</label>
            <div class="layui-input-block">
                <input name="clientSecretStr" placeholder="请输入应用密钥" type="text" class="layui-input" maxlength="20"
                <input name="hospitalName" placeholder="请输入应用密钥" type="text" class="layui-input" maxlength="20"
                       lay-verify="required" required />
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">回调地址</label>
            <label class="layui-form-label">科室名称</label>
            <div class="layui-input-block">
                <input name="webServerRedirectUri" placeholder="请输入回调地址" type="text" class="layui-input" maxlength="20"/>
                <input name="departmentName"  type="text" class="layui-input" maxlength="20"/>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">医生联系方式</label>
            <div class="layui-input-block">
                <input name="doctorTel"  type="text" class="layui-input" maxlength="20"/>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">需求数据的开始时间</label>
            <div class="layui-input-block">
                <input name="needBegintime"  type="text" class="layui-input" maxlength="20"/>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">需求数据的结束时间</label>
            <div class="layui-input-block">
                <input name="needEndtime"  type="text" class="layui-input" maxlength="20"/>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">需求标签</label>
            <div class="layui-input-block">
                <textarea name="needTags"  class="layui-input" style="height:200px;overflow:auto" maxlength="20"> </textarea>
            </div>
        </div>
        <div class="layui-form-item model-form-footer">
            <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button>
            <button class="layui-btn" lay-filter="app-form-submit" lay-submit>保存</button>
            <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">确定</button>
        </div>
    </form>
</script> -->
</script>
<script type="text/html" id="app-upload">
    <form id="app-form-upload" lay-filter="app-form-upload" class="layui-form model-form">
        <input name="id" id="upload-id"  type="hidden"/>
        <div class="layui-form-item">
            <label class="layui-form-label">上传文件</label>
            <div class="layui-input-block" id="demo">
                <button type="button" class="layui-btn" id="phonto">
                    <i class="layui-icon">&#xe67c;</i>上传文件
                  </button>
                <input name="dataFile" id="dataFile"  type="hidden" class="layui-input" maxlength="20"/>
                <input name="enabled" id="enabled"  type="hidden" value="0" class="layui-input" maxlength="20"/>
            </div>
        </div>
    </form>
</script>
<script>
    layui.use(['form', 'table', 'laydate', 'util', 'config', 'admin'], function () {
    layui.use(['form', 'table', 'laydate', 'util', 'upload', 'config', '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 upload = layui.upload;
        //时间格式
        var laydate = layui.laydate;
        //执行一个laydate实例
        laydate.render({
            elem: '#test1' //指定元素
            elem: '#test1', //指定元素
            done: function (value, date, endDate) {
                var startDate = new Date(value).getTime();
                var endTime = new Date($('#test2').val()).getTime();
                if (endTime < startDate) {
                    layer.msg('结束时间不能小于开始时间');
                    $('#test1').val($('#test2').val());
                } else {
                    $('#custom_beginTime').val($("#test1").val())
                }
            }
        });
        laydate.render({
            elem: '#test2' //指定元素
            elem: '#test2', //指定元素
            done: function (value, date, endDate) {
                var startDate = new Date($('#test1').val()).getTime();
                var endTime = new Date(value).getTime();
                if (endTime < startDate) {
                    layer.msg('结束时间不能小于开始时间');
                    $('#test2').val($('#test1').val());
                } else {
                    $('#custom_endTime').val($("#test2").val())
                }
            }
        });
        // 渲染表格
@@ -93,15 +161,18 @@
            page: true,
            cols: [[
                { type: 'numbers' },
                { field: 'doctorName', width: 180, sort: true, title: '医生姓名' },
                { field: 'doctorTel', width: 200, sort: true, title: '联系电话' },
                { field: 'hospitalName', width: 180, sort: true, title: '所在医院' },
                { field: 'needBegintime',width: 300, sort: true, title: '时间段', templet: "<div>{{layui.util.toDateString(d.needBegintime, 'yyyy年MM月dd日 HH:mm:ss')}}至{{layui.util.toDateString(d.needEndtime, 'yyyy年MM月dd日 HH:mm:ss')}}</div>" },
                { field: 'needType', width: 250, sort: true, title: '数据类型', templet: function (d) { if (d.needType == 1) { return '筛查' } else { return '就诊' } } },// 0就诊数据 1筛查
                { field: 'needTags', width: 250, sort: true, title: '需求标签' },
                { field: 'enabled', width: 250, sort: true, title: '处理状态', templet: function (d) { if (d.enabled == 1) { return '已上传' } else { return '未处理' } } },
                { field: 'downTime', width: 250, sort: true, title: '时间', templet: "<div>{{layui.util.toDateString(d.downTime, 'yyyy年MM月dd日 HH:mm:ss')}}</div>" }
            ]]
                { field: 'doctorName',align:'center', width: 100, title: '医生姓名' },
                { field: 'doctorTel',align:'center', width: 150, title: '联系电话' },
                { field: 'hospitalName',align:'center', width: 300, title: '所在医院' },
                { field: 'needBegintime',align:'center', width: 240, title: '时间段', templet: "<div>{{layui.util.toDateString(d.needBegintime, 'yyyy-MM-dd')}} &nbsp;&nbsp;至 &nbsp;&nbsp;{{layui.util.toDateString(d.needEndtime, 'yyyy-MM-dd')}}</div>" },
                { field: 'needType',align:'center', width: 100, title: '数据类型', templet: function (d) { if (d.needType == 1) { return '筛查' } else { return '就诊' } } },// 0就诊数据 1筛查
                { field: 'needTags',align:'center', width: 100, align: 'center', toolbar: '#app-table-bar', title: '需求标签' },
                { field: 'enabled',align:'center', width: 200, toolbar: '#app-table-bar1', title: '处理状态', },
                { field: 'downTime',align:'center', width: 250, title: '下载时间', templet: "<div>{{layui.util.toDateString(d.downTime, 'yyyy-MM-dd HH:mm')}}</div>" },
                { field: 'creatTime',align:'center', width: 250, title: '创建时间', templet: "<div>{{layui.util.toDateString(d.creatTime, 'yyyy-MM-dd')}}</div>" }
            ]],done:function(res){
                permissionsInput(res,config);
            }
        });
        // 工具条点击事件
@@ -109,41 +180,70 @@
            var data = obj.data;
            var layEvent = obj.event;
            if (layEvent === 'del') { // 删除
                doDelete(obj);
            } else if (layEvent === 'edit') { //修改
            if (layEvent === 'detail') { // 显示详情
                showEditModel(data);
            } else if (layEvent === 'upload') { // 上传
                layer.open({
                    type: 1,
                    title: '上传数据',
                    area: ["500px", "150px"],
                    content: $('#app-upload').html(),
                    success: function () {
                        $("#upload-id").val(data.id)
                        var upload = layui.upload;
                        //执行实例
                        upload.render({
                            elem: '#phonto',
                            url: config.base_server + 'api-file/files-anon',
                            accept: 'file',
                            auto: true,
                            headers: { "Authorization": "Bearer " + config.getToken().access_token },
                            before: function (obj) {
                                layer.load(); //上传loading
                            },
                            done: function (data) {
                                layer.closeAll('loading');
                                // $("#dataFile").val(data.url);
                                updateEnabled(data.url, false);
                            },
                            error: function (data) {
                                layer.closeAll('loading');
                            }
                        });
                    }
                });
            }
        });
        // // 删除
        // var doDelete = function (obj) {
        //     layer.confirm('确定要删除吗?', function (i) {
        //         layer.close(i);
        //         layer.load(2);
        //         admin.req('api-opration/dataneed/' + obj.data.id, {}, function (data) {
        //             layer.closeAll('loading');
        //             layer.msg('成功', { icon: 1, time: 500 });
        //             obj.del();
        //         }, 'DELETE');
        //     });
        // };
        //更新上传的状态
        var updateEnabled = function (dataFile, enabled) {
            admin.req('api-opration/dataneed/updateEnabled', {
                id: $("#upload-id").val(),
                enabled: enabled,
                dataFile: dataFile
            }, function (data) {
                layer.closeAll('loading');
                if (data.code == 0) {
                    layer.closeAll();
                    table.reload('app-table', { where: {} });
                } else {
                    layer.msg(data.msg, { icon: 2, time: 2000 });
                }
            }, 'GET');
        }
        // 搜索按钮点击事件
        $('#app-btn-search').click(function () {
            var key = $('#app-edit-search').val();
            var needBegintime = $('#test1').val();
            var needEndtime = $('#test2').val();
            if (needBegintime != null && needEndtime != null) {
                var flag=compareDate(needBegintime, needEndtime);
                if(!flag){
            var createTimeBegin = $('#test1').val();
            var createTimeEnd = $('#test2').val();
            if (createTimeBegin != null && createTimeEnd != null) {
                var flag = compareDate(createTimeBegin, createTimeEnd);
                if (!flag) {
                    layer.msg('结束时间不得小于开始时间');
                    return;
                }
            }
            table.reload('app-table', { where: { doctorName: key,needBegintime:needBegintime, needEndtime:needEndtime} });
            table.reload('app-table', { where: { doctorName: key, createTimeBegin: createTimeBegin, createTimeEnd: createTimeEnd },page: {curr: 1  }  });
        });
        //比较日期大小
        function compareDate(logintime, logouttime) {
@@ -161,51 +261,88 @@
                }
            }
        }
        // 导出
        $('#app-btn-export').click(function () {
            var key = $('#app-edit-search').val();
            var needBegintime = $('#test1').val();
            var needEndtime = $('#test2').val();
            if (needBegintime != null && needEndtime != null) {
                var flag = compareDate(needBegintime, needEndtime);
                if (!flag) {
                    layer.msg('结束时间不得小于开始时间');
                    return;
                }
            }
            //获取
            var url = config.base_server + 'api-opration/dataneed/export';
            var xhr = new XMLHttpRequest();
            xhr.open('POST', url, true);
            xhr.responseType = "blob";
             var form = new FormData();
            // Add selected file to form
            form.append("doctor_name", key);
            form.append('need_begintime',needBegintime);
            form.append('need_endtime',needEndtime);
        // 添加按钮点击事件
        $('#app-btn-add').click(function () {
            showEditModel();
            xhr.setRequestHeader("client_type", "DESKTOP_WEB");
            xhr.setRequestHeader("Authorization", "Bearer " + config.getToken().access_token);
            xhr.onload = function () {
                if (this.status == 200) {
                    var fileName = "数据需求.xlsx";
                    var blob = this.response;
                    var a = document.createElement('a');
                    a.innerHTML = fileName;
                    // 指定生成的文件名
                    a.download = fileName;
                    a.href = URL.createObjectURL(blob);
                    document.body.appendChild(a);
                    var evt = document.createEvent("MouseEvents");
                    evt.initEvent("click", false, false);
                    a.dispatchEvent(evt);
                    document.body.removeChild(a);
                }
            }
            xhr.send(form);
        });
        // // 显示编辑弹窗
        // var showEditModel = function (data) {
        //     layer.open({
        //         type: 1,
        //         title: data ? '修改应用' : '添加应用',
        //         area: '450px',
        //         offset: '120px',
        //         content: $('#app-model').html(),
        //         success: function () {
        //             $('#app-form')[0].reset();
        //             $('#app-form').attr('method', 'POST');
        //             if (data) {
        //                 $("input[name='clientId']").attr('disabled', true);
        //                 $("input[name='clientId']").attr('class', "layui-input layui-disabled");
        //                 $("input[name='webServerRedirectUri']").attr('disabled', true);
        //                 $("input[name='webServerRedirectUri']").attr('class', "layui-input layui-disabled");
        //                 form.val('app-form', data);
        //                 $('#app-form').attr('method', 'POST');
        //             }
        //         }
        //     });
        // };
        // 显示编辑弹窗
        var showEditModel = function (data) {
            layer.open({
                type: 1,
                title: '详情',
                area: '700px',
                offset: '0px',
                content: $('#app-model').html(),
                success: function () {
                    $('#app-form')[0].reset();
                    $('#app-form').attr('method', 'POST');
                    if (data) {
                        if (data.needBegintime) {
                            var needBegintime = layui.util.toDateString(data.needBegintime, 'yyyy年MM月dd日');
                            data.needBegintime = needBegintime
                        }
                        if (data.needEndtime) {
                            var needEndtime = layui.util.toDateString(data.needEndtime, 'yyyy年MM月dd日');
                            data.needEndtime = needEndtime
                        }
                        $("input[name='clientId']").attr('disabled', true);
                        $("input[name='clientId']").attr('class', "layui-input layui-disabled");
                        $("input[name='webServerRedirectUri']").attr('disabled', true);
                        $("input[name='webServerRedirectUri']").attr('class', "layui-input layui-disabled");
                        if(data.needType===1)
                        {
                            $("#needTypeName").val("筛查");
                        }
                        else{
                            $("#needTypeName").val("就诊");
                        }
                        form.val('app-form', data);
                        $('#app-form').find('input,textarea').prop('readonly', true);
                        $('#app-form').attr('method', 'POST');
                    }
                }
            });
        };
        // // 表单提交事件
        // form.on('submit(app-form-submit)', function (data) {
        //     layer.load(2);
        //     admin.req('api-opration/dataneed/saveOrUpdate', JSON.stringify(data.field), function (data) {
        //         layer.closeAll('loading');
        //         console.log(data);
        //         if (data.code == 0) {
        //             layer.msg(data.msg, { icon: 1, time: 500 });
        //             table.reload('app-table');
        //             layer.closeAll('page');
        //         } else {
        //             layer.msg(data.msg, { icon: 2, time: 500 });
        //         }
        //     }, $('#app-form').attr('method'));
        //     return false;
        // });
    });
</script>