From ec0f2528f83ee7c6ec64537d561a697ffff5b5c3 Mon Sep 17 00:00:00 2001
From: 侯瑞军 <411269194@kidgrow.com>
Date: Tue, 21 Apr 2020 15:27:04 +0800
Subject: [PATCH] 1.组织,医院,科室的编辑业务调整,增加了联动编辑功能(创建医院自动创建组织数据,修改同理) 2.重新优化,调整了医院/科室编辑过程中对名称的检查,数据间依赖关系的调整 3.调整优化了区域联动插件,自动完成插件的通用性

---
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html |  269 ++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 202 insertions(+), 67 deletions(-)

diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html
index 1eaca5e..07d3f1f 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html
@@ -5,7 +5,7 @@
                 <label class="layui-form-label">医院名称</label>
                 <div class="layui-input-block">
                     <input name="hospitalName" id="hospitalName" placeholder="请输入医院名称" type="text" class="layui-input"
-                        maxlength="50" lay-verify="required" required autocomplete="on" style="width: 390px;" />
+                        maxlength="50" lay-verify="required" required style="width: 390px;" />
                 </div>
             </div>
             <div class="layui-col-sm3">
@@ -19,11 +19,17 @@
     </div>
     <div class="layui-form-item">
         <div class="layui-row">
-            <div class="layui-col-sm7">
+            <div class="layui-col-sm4">
+                <label class="layui-form-label">科室名称</label>
+                <div class="layui-input-block">
+                    <input name="departmentName" id="departmentName" placeholder="科室名称" type="text" class="layui-input"
+                        maxlength="50" lay-verify="required" required style="width: 150px;" />
+                    &emsp;</div>
+            </div>
+            <div class="layui-col-sm3">
                 <label class="layui-form-label">联系电话</label>
                 <div class="layui-input-block">
-                    <input name="hospitalTel" id="hospitalTel" type="text" class="layui-input" maxlength="50"
-                        style="width: 390px;" />
+                    <input name="hospitalTel" id="hospitalTel" type="text" class="layui-input" maxlength="50" />
                 </div>
             </div>
             <div class="layui-col-sm3">
@@ -39,7 +45,7 @@
             <div class="layui-col-sm7">
                 <label class="layui-form-label">医院类型</label>
                 <div class="layui-input-block">
-                    <input name="hospitalTypeId" id="hospitalTypeId" type="hidden"  value=""/>
+                    <input name="hospitalTypeId" id="hospitalTypeId" type="hidden" value="" />
                     <select name="hospitalTypeName" id="hospitalTypeName" lay-filter="hospitalTypeName"
                         style="width: 300px;">
                         <option value="">请选择</option>
@@ -49,7 +55,7 @@
             <div class="layui-col-sm3">
                 <label class="layui-form-label">医院资质</label>
                 <div class="layui-input-block">
-                    <input name="hospitalQualifiedId" id="hospitalQualifiedId" type="hidden"  value=""/>
+                    <input name="hospitalQualifiedId" id="hospitalQualifiedId" type="hidden" value="" />
                     <select name="hospitalQualifiedName" id="hospitalQualifiedName" lay-filter="hospitalQualifiedName"
                         style="width: 300px;">
                         <option value="">请选择</option>
@@ -63,14 +69,17 @@
             <label class="layui-form-label">所在地区</label>
             <div class="layui-input-block">
                 <div class="layui-col-sm4">
-                    <select id="hospitalProvince" placeholder="省份" lay-filter="hospitalProvince" style="width: 400px;">
+                    <select lay-verify="required" required id="hospitalProvince" placeholder="省份"
+                        lay-filter="hospitalProvince" style="width: 400px;">
                     </select></div>
                 <div class="layui-col-sm4">
-                    <select id="hospitalCity" placeholder="市" lay-filter="hospitalCity" style="width: 350px;">
+                    <select id="hospitalCity" lay-verify="required" required placeholder="市" lay-filter="hospitalCity"
+                        style="width: 350px;">
                         <option value="">选择市</option>
                     </select></div>
                 <div class="layui-col-sm4">
-                    <select id="hospitalArea" placeholder="区县" lay-filter="hospitalArea" style="width: 350px;">
+                    <select id="hospitalArea" lay-verify="required" required placeholder="区县" lay-filter="hospitalArea"
+                        style="width: 350px;">
                         <option value="">选择区县</option>
                     </select>
                 </div>
@@ -88,23 +97,32 @@
             <div class="layui-col-sm3">
                 <label class="layui-form-label">区号</label>
                 <div class="layui-input-block">
-                    <input name="areaCode" type="text" class="layui-input" maxlength="10" />
+                    <input name="areaCode" id="areaCode" lay-verify="required" required type="text" class="layui-input"
+                        maxlength="10" />
                 </div>
             </div>
             <div class="layui-col-sm3">
                 <label class="layui-form-label">经度</label>
                 <div class="layui-input-block">
-                    <input name="longitude" type="text" class="layui-input" maxlength="20" />
+                    <input name="longitude" id="longitude" type="text" class="layui-input" maxlength="20" />
                 </div>
             </div>
             <div class="layui-col-sm3">
                 <label class="layui-form-label">纬度</label>
                 <div class="layui-input-block">
-                    <input name="latitude" type="text" class="layui-input" maxlength="20" />
+                    <input name="latitude" id="latitude" type="text" class="layui-input" maxlength="20" />
+                </div>
+            </div>
+            <div class="layui-col-sm3">
+                <label class="layui-form-label">服务人员</label>
+                <div class="layui-input-block">
+                    <input name="serverUserId" id="serverUserId" type="hidden" value="" />
+                    <select lay-verify="required" required name="serverUserName" id="serverUserName"
+                        style="width: 150px;">
+                    </select>
                 </div>
             </div>
         </div>
-    </div>
     </div>
     <div class="layui-form-item">
         <label class="layui-form-label">医院简介</label>
@@ -116,34 +134,25 @@
         <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button>
         <button class="layui-btn" lay-filter="hospital-form-submit" lay-submit>保存</button>
     </div>
-    <input type="hidden" id="orgId" name="orgId" value=""/>
+    <input type="hidden" name="departmentId" id="departmentId" value="" />
+    <input type="hidden" name="orgId" id="orgId" value="" />
+    <input type="hidden" name="departmentOrgId" id="departmentOrgId" value="" />
+    <input type="hidden" name="id" id="id" value="" />
 </form>
 
 <script>
-    parent.layui.use(['form', 'table','util', 'config', 'admin', 'area', 'formSelects', 'dic', 'autocomplete'], function () {
-        var form = parent.layui.form;
-        var table = parent.layui.table;
-        var config = parent.layui.config;
-        var layer = parent.layui.layer;
-        var util = parent.layui.util;
-        var admin = parent.layui.admin;
-        var area = parent.layui.area;
-        var dic = parent.layui.dic;
-        var formSelects = parent.layui.formSelects;
-        var autocomplete = parent.layui.autocomplete;
-        var $ = parent.layui.jquery;
+    layui.use(['form', 'table', 'util', 'config', 'admin', 'area', 'dic', 'autocomplete'], function () {
+        var form = layui.form;
+        var table = layui.table;
+        var config = layui.config;
+        var layer = layui.layer;
+        var util = layui.util;
+        var admin = layui.admin;
+        var area = layui.area;
+        var dic = layui.dic;
+        var autocomplete = layui.autocomplete;
+        var $ = layui.jquery;
 
-        autocomplete.render({
-            elem: $('#hospitalName'),
-            cache: true,
-            url: config.base_server + 'api-user/syshospital',
-            response: { code: 'code', data: 'data' },
-            template_val: '{{d.hospitalName}}',
-            template_txt: '{{d.hospitalName}} <span class=\'layui-badge layui-bg-gray\'>{{d.id}}</span>',
-            onselect: function (resp) {
-                //$('#content1').html("NEW RENDER: " + JSON.stringify(resp));
-            }
-        })
         //医院资质数据
         dic.dicData("#hospitalQualifiedName", "HOSPITAL_QUALIFIED", "");
         //医院类型数据
@@ -158,6 +167,18 @@
         //装载区县数据
         form.on("select(hospitalCity)", function (data) {
             area.areaData("#hospitalArea", 3, data.value, "");
+            //区号,金纬度自动赋值
+            let cityData = admin.getTempData("t_city");
+            if (cityData != null) {
+                cityData.forEach(function (item) {
+                    if (data.value == item.id) {
+                        $("#areaCode").val(item.areaCitycode);
+                        $("#longitude").val(item.areaLng);
+                        $("#latitude").val(item.areaLat);
+                        break;
+                    }
+                })
+            }
         });
         //赋值资质数据ID
         form.on("select(hospitalQualifiedName)", function (data) {
@@ -167,42 +188,156 @@
         form.on("select(hospitalTypeName)", function (data) {
             $("#hospitalTypeId").val(data.value);
         });
-
-        // 回显组织数据
-        let orgs = admin.getTempData('t_org');
-        if (orgs != null) {
-            $('input[name="hospitalName"]').val(orgs.orgName);
-            $('input[name="orgId"]').val(orgs.id);
-            form.render();
-        }
         // 表单提交事件
         form.on('submit(hospital-form-submit)', function (data) {
             layer.load(2);
-            if(data.field!=null){
-                
-                data.field.hospitalTypeName=$("#hospitalTypeName option:selected").text();
-                data.field.hospitalQualifiedName=$("#hospitalQualifiedName option:selected").text();
-                data.field.hospitalProvince=$("#hospitalProvince option:selected").text();
-                data.field.hospitalCity=$("#hospitalCity option:selected").text();
-                data.field.hospitalArea=$("#hospitalArea option:selected").text();
+            if (data.field != null) {
 
-            admin.req('api-user/syshospital', JSON.stringify(data.field), function (data) {
-                layer.closeAll('loading');
-                if (data.code == 0) {
-                    //将医院数据存入本地
-                    admin.putTempData('t_hospital', data.data);
-                    layer.msg(data.msg, { icon: 1, time: 1000 }, function () {
-                        //清理组织数据
-                        admin.putTempData('t_org','');
-                    });
-                } else {
-                    layer.msg(data.msg, { icon: 2, time: 1000 });
-                }
-            }, "POST");}
-            else{
-                    layer.msg("数据异常!", { icon: 2, time: 1000 });
+                data.field.hospitalTypeName = $("#hospitalTypeName option:selected").text() != "请选择" ? $("#hospitalTypeName option:selected").text() : "";
+                data.field.hospitalQualifiedName = $("#hospitalQualifiedName option:selected").text() != "请选择" ? $("#hospitalQualifiedName option:selected").text() : "";
+                data.field.hospitalProvince = $("#hospitalProvince option:selected").text() != "选择省" ? $("#hospitalProvince option:selected").text() : "";
+                data.field.hospitalCity = $("#hospitalCity option:selected").text() != "选择市" ? $("#hospitalCity option:selected").text() : "";
+                data.field.hospitalArea = $("#hospitalArea option:selected").text() != "选择区县" ? $("#hospitalArea option:selected").text() : "";
+
+                admin.req('api-user/syshospital', JSON.stringify(data.field), function (data) {
+                    layer.closeAll('loading');
+                    if (data.code === 0) {
+                        //存储科室数据
+                        var departmentData = {
+                            serverUserId: $("#serverUserName").val(),
+                            serverUserName: $("#serverUserName option:selected").text(),
+                            departmentName: $("#departmentName").val(),
+                            id: $("#departmentId").val(),
+                            orgId: $("#departmentOrgId").val(),
+                            updateUserId: data.data.orgId,
+                            hospitalId: data.data.id
+                        };
+                        admin.req('api-user/sysdepartment', JSON.stringify(departmentData), function (data) {
+                            layer.closeAll('loading');
+                            if (data.code == 0) {
+                                layer.msg(data.msg, { icon: 1, time: 1000 }, function () {
+                                    admin.finishPopupCenter();
+                                });
+                                admin.putTempData("t_hospital", "");
+                                admin.putTempData("t_city", "");
+                            } else {
+                                layer.msg(data.msg, { icon: 2, time: 1000 });
+                            }
+                        }, "POST");
+                    } else {
+                        layer.msg(data.msg, { icon: 2, time: 1000 });
+                    }
+                }, "POST");
+            }
+            else {
+                layer.msg("数据异常!", { icon: 2, time: 1000 });
             }
             return false;
         });
+        //自动完成-医院名称
+        autocomplete.render({
+            elem: $('#hospitalName')[0],
+            keywordsName: 'hospitalName',//查询关键字名称
+            url: config.base_server + 'api-user/syshospital/findByName',
+            template_val: '{{d.hospitalName}}',//选择后文本框显示的数据字段
+            template_txt: "<div class='layui-table-cell'>{{d.hospitalName}}</div>",//下拉列表模板
+            onselect: function (resp) {
+                loadDatas(resp.id);
+            }
+        });
+        //加载当前所在部门的在职员工
+        admin.req('api-user/users/getThisUserOrganizationUser', {}, function (data) {
+            layer.closeAll('loading');
+            if (0 === data.code) {
+                if (data.data.length > 0) {
+                    $.each(data.data, function (index, item) {
+                        //往下拉菜单里添加元素
+                        $('#serverUserName').append(new Option(item.nickname, item.id, false, false));
+                    })
+                    $('#serverUserName').val(config.getUser().id);
+                    $('#serverUserId').val(config.getUser().id);
+                    form.render('select');
+                }
+            } else {
+                layer.msg(data.msg, { icon: 2, time: 500 });
+            }
+        }, 'get');
+        //检查科室名是否存在
+        $("#departmentName").blur(function () {
+            debugger
+            if (edithospitalData != null) {
+                if (edithospitalData.departmentName == $("#departmentName").val()) {
+                    return false;
+                }
+            }
+                let hosIdForDep = $("#id").val();
+                if (!strUtil.isEmpty($("#departmentName").val()) && !strUtil.isEmpty(hosIdForDep)) {
+                    admin.req('api-user/sysdepartment/checkName', { hospitalId: hosIdForDep, departmentName: $("#departmentName").val() }, function (data) {
+                        layer.closeAll('loading');
+                        if (0 != data.code) {
+                            layer.msg(data.msg, { icon: 2, time: 1000 });
+                            return false;
+                        }
+                    }, 'get');
+                }
+        })
+        //按照ID装载数据
+        var loadDatas = function (hosId) {
+            if (!strUtil.isEmpty(hosId)) {
+                //用ID获取实体
+                admin.req('api-user/syshospital/' + hosId, {}, function (data) {
+                    layer.closeAll('loading');
+                    if (0 === data.code) {
+                        //装载基本数据
+                        let hosData = data.data;
+                        form.val("hospital-form", hosData);
+                        //装载省市区数据
+                        if (!strUtil.isEmpty(hosData.hospitalProvince))
+                            area.areaData("#hospitalProvince", 1, "", hosData.hospitalProvince);
+                        if (!strUtil.isEmpty(hosData.hospitalCity))
+                            area.areaData("#hospitalCity", 2, $("#hospitalProvince").val(), hosData.hospitalCity);
+
+                        if (!strUtil.isEmpty(hosData.hospitalArea))
+                            area.areaData("#hospitalArea", 3, $("#hospitalCity").val(), hosData.hospitalArea);
+                        //装载资质 类型  
+                        $("#hospitalQualifiedName").val(hosData.hospitalQualifiedId);
+                        $("#hospitalTypeName").val(hosData.hospitalTypeId);
+
+                        //装载科室数据
+                        admin.req('api-user/sysdepartment', { hospitalId: hosId, isDel: 0, page: 1, limit: 20 }, function (data) {
+                            if (data.code == 0) {
+                                let departData = data.data.data;
+                                if (departData.length > 0) {
+                                    if (departData.length > 1) {
+                                        layer.msg("该医院下有多个科室,默认显示第一个", { icon: 1, time: 2000 });
+                                    }
+                                    $("#serverUserId").val(departData[0].serverUserId);
+                                    $("#serverUserName").val(departData[0].serverUserId);
+                                    $("#departmentName").val(departData[0].departmentName);
+                                    $("#departmentId").val(departData[0].id);
+                                    $("#departmentOrgId").val(departData[0].orgId);
+                                    form.render();
+                                }
+                            }
+                            else {
+                                layer.msg(data.msg, { icon: 2, time: 500 });
+                            }
+                        }, 'get');
+                        form.render();
+
+                    } else {
+                        layer.msg(data.msg, { icon: 2, time: 500 });
+                    }
+                }, 'get');
+            }
+        }
+        //回显组织数据
+        let edithospitalData = admin.getTempData('t_hospital');
+        var hosIdForEdit = "";
+        if (edithospitalData != null) {
+            hosIdForEdit = edithospitalData.hospitalId;
+            if (!strUtil.isEmpty(hosIdForEdit))
+                loadDatas(hosIdForEdit);
+        }
     });
 </script>
\ No newline at end of file

--
Gitblit v1.8.0