forked from kidgrow-microservices-platform

1.修改医院状态,删除医院功能
2.增加字典按分类查询下拉框通用控件
3.增加自动完成控件(未完成)
4.修改字典展示数据的字段
5.部门数据增加按照医院id查询
6.增加全局静态变量类 DictionariesConstants
5 files added
12 files modified
695 ■■■■■ changed files
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDepartment.java 14 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java 12 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysHospitalService.java 14 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java 80 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDepartmentMapper.xml 3 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysHospitalMapper.xml 3 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysHospitalController.java 36 ●●●● patch | view | raw | blame | history
kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/DictionariesConstants.java 24 ●●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js 1 ●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/area.js 2 ●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/complete/autocomplete.css 10 ●●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/complete/autocomplete.js 227 ●●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/dic.js 44 ●●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html 88 ●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html 133 ●●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product.html 2 ●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/sysdictionaries.html 2 ●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/model/SysDepartment.java
@@ -1,18 +1,12 @@
package com.kidgrow.usercenter.model;
import com.kidgrow.common.model.SuperModel;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.kidgrow.common.model.SuperModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.*;
import java.util.Date;
import org.hibernate.validator.constraints.NotEmpty;
/**
 * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
@@ -59,4 +53,8 @@
     * 状态,1启用,0停用
     */
    private Boolean enabled;
    /**
     * 是否删除,1删除,0未删除
     */
    private Boolean isDel;
}
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/HospitalListVo.java
@@ -88,4 +88,16 @@
     * 医院数据创建时间
     */
    private Date createTime;
    /**
     * 状态,1启用,0停用
     */
    private Boolean enabled;
    /**
     * 租户字段
     */
    private String tenantId;
    /**
     * 是否删除,1删除,0未删除
     */
    private Boolean isDel;
}
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysHospitalService.java
@@ -37,5 +37,17 @@
    SysHospital findByObject(SysHospital sysHospital);
    ResultBody<SysHospital> findAll(Map<String, Object> params);
}
    /**
     * 状态变更
     * @param params
     * @return
     */
    ResultBody updateEnabled(Map<String, Object> params);
    /**
     * 逻辑删除数据
     * @param params
     * @return
     */
    ResultBody delete(Map<String, Object> params);
}
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java
@@ -4,14 +4,19 @@
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.service.impl.SuperServiceImpl;
import com.kidgrow.usercenter.mapper.SysDepartmentMapper;
import com.kidgrow.usercenter.mapper.SysHospitalMapper;
import com.kidgrow.usercenter.model.SysDepartment;
import com.kidgrow.usercenter.model.SysHospital;
import com.kidgrow.usercenter.service.ISysHospitalService;
import com.kidgrow.usercenter.vo.HospitalListVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -26,6 +31,8 @@
@Slf4j
@Service
public class SysHospitalServiceImpl extends SuperServiceImpl<SysHospitalMapper, SysHospital> implements ISysHospitalService {
    @Resource
    private SysDepartmentMapper departmentMapper;
    /**
     * 列表
     * @param params
@@ -64,5 +71,78 @@
        List<SysHospital> sysHospitals = baseMapper.selectByMap(params);
        return  ResultBody.ok().data(sysHospitals).msg("查询成功");
    }
    /**
     * 根据id和启用禁用值更新数据
     * @param params
     * @return ResultBody
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public ResultBody updateEnabled(Map<String, Object> params) {
        Long id = MapUtils.getLong(params, "id");
        Long departmentId = MapUtils.getLong(params, "departmentId");
        Boolean enabled = MapUtils.getBoolean(params, "enabled");
        //科室数据
        SysDepartment sysDepartment=departmentMapper.selectById(departmentId);
        //医院数据
        SysHospital sysHospital = baseMapper.selectById(id);
        //医院下的所有数据
        Map<String,Object> columnMap=new HashMap<String,Object>();
        columnMap.put("hospital_id",id);
        columnMap.put("is_del",(boolean)false);
        columnMap.put("enabled",!enabled);
        List<SysDepartment> sysDepartmentList=departmentMapper.selectByMap(columnMap);
        if (sysHospital == null) {
            return ResultBody.failed("医院数据不存在!");
        }
        if (sysDepartment == null) {
            return ResultBody.failed("科室数据不存在!");
        }
        //如果这个医院下有多个科室,禁用只对当前科室有效,否则也要禁用医院
        if(sysDepartmentList.size()==1)
        {
            sysHospital.setEnabled(enabled);
            int i =baseMapper.updateById(sysHospital);
            //Log.info("修改医院状态为:{}",enabled+" "+i);
        }
        sysDepartment.setEnabled(enabled);
        int j=departmentMapper.updateById(sysDepartment);
        return (j > 0) ? ResultBody.ok().data(sysHospital).msg("更新成功") : ResultBody.failed("更新失败");
    }
    /**
     * 删除医院科室信息
     * @param params
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public ResultBody delete(Map<String, Object> params) {
        Long id = MapUtils.getLong(params, "id");
        Long departmentId = MapUtils.getLong(params, "departmentId");
        //科室数据
        SysDepartment sysDepartment=departmentMapper.selectById(departmentId);
        //医院数据
        SysHospital sysHospital = baseMapper.selectById(id);
        //医院下的所有数据
        Map<String,Object> columnMap=new HashMap<String,Object>();
        columnMap.put("hospital_id",id);
        List<SysDepartment> sysDepartmentList=departmentMapper.selectByMap(columnMap);
        if (sysHospital == null) {
            return ResultBody.failed("医院数据不存在!");
        }
        if (sysDepartment == null) {
            return ResultBody.failed("科室数据不存在!");
        }
        //如果这个医院下有多个科室,禁用只对当前科室有效,否则也要禁用医院
        if(sysDepartmentList.size()==1)
        {
            sysHospital.setIsDel(true);
            int i =baseMapper.updateById(sysHospital);
            //Log.info("修改医院状态为:{}",enabled+" "+i);
        }
        sysDepartment.setIsDel(true);
        int j=departmentMapper.updateById(sysDepartment);
        return (j > 0) ? ResultBody.ok().data(sysHospital).msg("删除成功") : ResultBody.failed("删除失败");
    }
}
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDepartmentMapper.xml
@@ -15,6 +15,9 @@
            <if test="p.id != null and p.id !=''">
                and id = #{p.id}
            </if>
            <if test="p.hospitalId != null and p.hospitalId !=''">
                and hospital_id = #{p.hospitalId}
            </if>
            <if test="p.departmentName != null and p.departmentName !=''">
                and department_name = #{p.departmentName}
            </if>
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysHospitalMapper.xml
@@ -163,6 +163,8 @@
        DEP.server_user_name,
        DEP.server_user_id,
        DEP.org_id,
        DEP.is_del,
        DEP.enabled,
        HOS.id hospital_id,
        HOS.hospital_name,
        HOS.hospital_code,
@@ -174,6 +176,7 @@
        HOS.hospital_link,
        HOS.is_screen,
        HOS.is_answer,
        HOS.tenant_id,
        HOS.create_time
        FROM
    sys_department DEP
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysHospitalController.java
@@ -122,14 +122,36 @@
     * 删除
     */
    @ApiOperation(value = "删除")
    @DeleteMapping("/{id}")
    public ResultBody delete(@PathVariable Long id) {
        boolean v= sysHospitalService.removeById(id);
        if(v) {
            return ResultBody.ok().msg("删除成功");
    @GetMapping("/delete")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Integer"),
            @ApiImplicitParam(name = "departmentId", value = "departmentId", required = true, dataType = "Integer")
    })
    public ResultBody delete(@RequestParam Map<String, Object> params) {
        if (params.size()==0)
        {
            return ResultBody.failed().msg("参数异常!");
        }
        else {
            return ResultBody.failed().msg("删除失败");
        return sysHospitalService.delete(params);
    }
    /**
     * 修改状态
     *
     * @param params
     * @return
     */
    @ApiOperation(value = "修改反馈数据状态")
    @GetMapping("/updateEnabled")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Integer"),
            @ApiImplicitParam(name = "departmentId", value = "departmentId", required = true, dataType = "Integer"),
            @ApiImplicitParam(name = "enabled", value = "是否启用", required = true, dataType = "Boolean")
    })
    public ResultBody updateEnabled(@RequestParam Map<String, Object> params) {
        if (params.size()==0)
        {
            return ResultBody.failed().msg("参数异常!");
        }
        return sysHospitalService.updateEnabled(params);
    }
}
kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/DictionariesConstants.java
New file
@@ -0,0 +1,24 @@
package com.kidgrow.common.constant;
/**
 * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
 *
 * @Description: 分类字典key值对定值 自行确保表内唯一<br>
 * @Project: <br>
 * @CreateDate: Created in 2020/4/15 16:16 <br>
 * @Author: <a href="411269194@kidgrow.com">hrj</a>
 */
public interface DictionariesConstants {
    /**
     * 医院分类
     */
    String HOSPITAL_TYPE = "HOSPITAL_TYPE";
    /**
     * 医院资质
     */
    String HOSPITAL_QUALIFIED = "HOSPITAL_QUALIFIED";
    /**
     * 医生职称
     */
    String DOCTOR_RANK = "DOCTOR_RANK";
}
kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
@@ -5,6 +5,7 @@
    formSelects: 'formSelects/formSelects-v4',
    treetable: 'treetable-lay/treetable',
    treetable2: 'treetable2/TreeTable',
    autocomplete: 'complete/autocomplete',
    step: 'step-lay/step'
}).use(['layer','config', 'index', 'element'], function () {
    var $ = layui.jquery;
kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/area.js
@@ -21,7 +21,7 @@
    var layer = layui.layer;
    var admin = layui.admin;
    var area = {
        //4个参数依次是 下拉控件的id,/区域级别(1.2.3)/上级id/选中id
        //4个参数依次是 下拉控件的id,/区域级别(1.2.3)/上级id/选中值 例如河北省
        areaData: function (domId, levelType, parentId, selectValue) {
            if (levelType == 1) {
                parentId = 100000;
kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/complete/autocomplete.css
New file
@@ -0,0 +1,10 @@
.layui-form-autocomplete {position: relative;}
.layui-form-autocomplete dl {display: none; position: absolute; left: 0; top: 0; padding: 5px 0; z-index: 999; min-width: 100%; border: 1px solid #d2d2d2; max-height: 300px; overflow-y: auto; background-color: #fff; border-radius: 2px; box-shadow: 0 2px 4px rgba(0,0,0,.12); box-sizing: border-box;}
.layui-form-autocomplete dl dd, .layui-form-autocomplete dl dt {padding: 0 10px; line-height: 36px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
.layui-form-autocomplete dl dt {font-size: 12px; color: #999;}
.layui-form-autocomplete dl dd {cursor: pointer;}
.layui-form-autocomplete dl dd:hover {background-color: #f2f2f2;}
.layui-form-autocomplete .layui-autocomplete-group dd {padding-left: 20px;}
.layui-form-autocomplete dl dd.layui-autocomplete-tips {padding-left: 10px!important; color: #999;}
.layui-form-autocomplete dl dd.layui-this {background-color: #5FB878; color: #fff;}
.layui-form-autocomplete-focus dl {display: block;}
kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/complete/autocomplete.js
New file
@@ -0,0 +1,227 @@
if (!Object.keys) {
  Object.keys = (function () {
    var hasOwnProperty = Object.prototype.hasOwnProperty,
        hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
        dontEnums = [
          'toString',
          'toLocaleString',
          'valueOf',
          'hasOwnProperty',
          'isPrototypeOf',
          'propertyIsEnumerable',
          'constructor'
        ],
        dontEnumsLength = dontEnums.length;
    return function (obj) {
      if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object');
      var result = [];
      for (var prop in obj) {
        if (hasOwnProperty.call(obj, prop)) result.push(prop);
      }
      if (hasDontEnumBug) {
        for (var i = 0; i < dontEnumsLength; i++) {
          if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i]);
        }
      }
      return result;
    }
  })()
}
layui.link('/module/complete/autocomplete.css');
layui.define(['jquery', 'laytpl', 'layer'], function (e) {
  "use strict";
  var hint = layui.hint(),
    $ = layui.jquery,
    laytpl = layui.laytpl,
    layer = layui.layer,
    module = 'autocomplete',
    filter = 'layui-autocomplete',
    container = 'layui-form-autocomplete',
    container_focus = 'layui-form-autocomplete-focus',
    system = {
      config: {
        template: ['<div class="layui-form-autocomplete">', '<dl class="layui-anim layui-anim-upbit">', '</dl>', '</div>'].join(''),
        layout: ['<dd data-index="{{d.index}}">{{d.text}}</dd>'].join(''),
        template_txt: '{{d.text}}',
        template_val: '{{d.value}}',
        cache: false
      },
      data: {}
    },
    callback = function () {
      var _self = this,
        _config = _self.config;
      return {
        call: function (handle, params) {
          if (!_self.handles[handle]) return hint.error(handle + " handle is not defined");
          _self.handles[handle].call(_self, params)
        }
      }
    },
    job = function (e) {
      var _self = this;
      _self.config = $.extend({}, _self.config, system.config, e);
      _self.render();
    };
  job.prototype.config = {
    response: {
      code: 'code',
      data: 'data',
      msg: 'msg'
    },
    request: {
      keywords: 'keywords'
    },
    statusCode: 0,
    time_limit: 300,
    pullTimer: null,
    data: {},
    temp_data: {},
    params: {},
    filter: '',
    method: 'get',
    ajaxParams: {}
  }
  job.prototype.render = function () {
    var _self = this, _config = _self.config;
    if (_config.elem = $(_config.elem), _config.where = _config.where || {}, !_config.elem[0]) return _self;
    var _elem = _config.elem,
      _container = _elem.next('.' + container),
      _html = _self.elem = $(laytpl(_config.template).render({}));
    _config.id = _self.id, _container && _container.remove(), _elem.attr('autocomplete', 'off'), _elem.after(_html);
    _self.events()
  }
  job.prototype.pullData = function () {
    var _self = this,
      _config = _self.config,
      _elem = _config.elem,
      _container = _elem.next('.' + container);
    if (!_config.filter) return _self.renderData([]);
    if ((_config.cache || !_config.url) && _config.data instanceof Object && Object.keys(_config.data).length > 0) return _self.renderData(_config.data);
    var keywords = _config.request.keywords
    var params = {
      t: new Date().getTime()
    }
    params[keywords] = _config.filter;
    var $loading = $('<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>');
    $.ajax($.extend({
      type: _config.method,
      url: _config.url,
      data: $.extend(params, _config.params instanceof Function ? _config.params() :_config.params),
      contentType: 'text/json,charset=utf-8',
      dataType: "json",
      beforeSend: function () {
        $loading.attr('style', [
          'position:absolute',
          'left:' + (_elem.offset().left + _elem.outerWidth() - 20) + 'px',
          'top:' + _elem.offset().top + 'px',
          'height:' + _elem.height() + 'px',
          'line-height:' + _elem.height() + 'px'
        ].join(';'));
        $loading.appendTo('body');
      },
      success: function (resp) {
        $loading.remove();
        return _config.statusCode != resp[_config.response.code] ? layer.msg(resp[_config.response.msg]) : _config.data = resp[_config.response.data], _self.renderData(_config.data)
      },
      error: function () {
        hint.error("请求失败")
      }
    }, _config.ajaxParams))
  }
  job.prototype.renderData = function (resp) {
    var _self = this,
      _config = _self.config,
      _elem = _config.elem,
      _container = _elem.next('.' + container),
      _dom = _container.find('dl'),
      _list = [];
    _config.temp_data = [];
    layui.each(resp, function (i, e) {
      if (_config.cache) {
        if (e instanceof Object) {
          layui.each(e, function (_i, _e) {
            if (_e && _e.toString().toLowerCase().indexOf(_config.filter.toLowerCase()) > -1) {
              _config.temp_data.push(e), _list.push(laytpl(_config.layout).render({ index: i, text: laytpl(_config.template_txt).render(e) }));
              return true;
            }
          });
        } else {
          if (e && e.toString().toLowerCase().indexOf(_config.filter.toLowerCase()) > -1) {
            _config.temp_data.push(e), _list.push(laytpl(_config.layout).render({ index: i, text: laytpl(_config.template_txt).render(e) }));
          }
        }
      } else {
        _config.temp_data.push(e), _list.push(laytpl(_config.layout).render({ index: i, text: laytpl(_config.template_txt).render(e) }));
      }
    });
    _dom.html(_list.join('')), _list.length > 0 ? _container.addClass(container_focus) : _container.removeClass(container_focus)
  }
  job.prototype.handles = {
    addData: function (data) {
      var _self = this,
        _config = _self.config;
      if (data instanceof Array) {
        _config.data = _config.data.concat(data)
      } else {
        _config.data.push(data)
      }
    },
    setData: function (data) {
      var _self = this,
        _config = _self.config;
      _config.data = data;
    }
  }
  job.prototype.events = function () {
    var _self = this,
      _config = _self.config,
      _elem = _config.elem,
      _container = _elem.next('.' + container),
      _dom = _container.find('dl');
    _elem.unbind('focus').unbind('input propertychange').on('focus', function () {
      _config.filter = this.value, _self.renderData(_config.data)
    }).on('input propertychange', function (e) {
      var _value = this.value;
      clearTimeout(_config.pullTimer), _config.pullTimer = setTimeout(function () {
        _config.filter = _value, _self.pullData()
      }, _config.time_limit)
    })
    $(document).on('click', function (e) {
      var _target = e.target, _item = _dom.find(_target), _e = _item.length > 0 ? _item.closest('dd') : undefined;
      if (_target === _elem[0]) return false;
      if (_e !== undefined) {
        if (_e.attr('autocomplete-load') !== undefined) return false;
        var curr_data = _config.temp_data[_e.index()]
        _elem.val(laytpl(_config.template_val).render(curr_data)), _config.onselect == undefined || _config.onselect(curr_data)
      }
      _container.removeClass(container_focus);
    })
  }
  system.init = function (e, c) {
    var c = c || {}, _self = this, _elems = $(e ? 'input[lay-filter="' + e + '"]' : 'input[' + filter + ']');
    _elems.each(function (_i, _e) {
      var _elem = $(_e),
        _lay_data = _elem.attr('lay-data');
      try {
        _lay_data = new Function("return " + _lay_data)()
      } catch (ex) {
        return hint.error("autocomplete元素属性lay-data配置项存在语法错误:" + _lay_data)
      }
      var _config = $.extend({ elem: this }, system.config, c, _lay_data);
      _config.url == undefined && (_config.data == undefined || _config.length === 0) && hint.error("autocomplete配置有误,缺少获取数据方式");
      system.render(_config);
    })
  }
  system.render = function (e) {
    var j = new job(e);
    return callback.call(j)
  }
  system.init(), e(module, system);
})
kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/dic.js
New file
@@ -0,0 +1,44 @@
/**
 * 根据字典分类加载字典列表,并装载到指定下拉列表
 *
 */
layui.define([
    'form',
    'config',
    'admin',
    'layer'
], function (exports) {
    //var config = layui.config;
    var form = layui.form;
    var layer = layui.layer;
    var admin = layui.admin;
    var dic={
        //下拉列表id/分类key/选中id
        dicData:function(domId,dicClass,selectValue){
            admin.req('api-user/sysdictionaries/findAll', JSON.stringify({dictionariesClassId: dicClass}), function (data) {
                if (0 === data.code) {
                    $(domId).empty();
                    let selected = "";
                    clientsAll = data.data;
                    if (clientsAll.length > 0) {
                        $(domId).append("<option value='' selected='selected'>请选择</option>");
                        $.each(clientsAll, function (index, item) {
                            if (selectValue == item.dictionariesKey) { selected = "selected='selected'"; }
                            else {
                                selected = "";
                            }
                            //往下拉菜单里添加元素
                            $(domId).append("<option value='" + item.dictionariesKey + "' " + selected + ">" + item.dictionariesName + "</option> ");
                        })
                    }
                    //必须加这个刷新form!
                    form.render();
                } else {
                    layer.msg(data.msg, { icon: 2, time: 1000 });
                }
            }, 'POST');
        }
    }
    exports('dic', dic);
});
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
@@ -35,7 +35,8 @@
            </select>
            &emsp;
            <input id="hospitalName" class="layui-input search-input" type="text" placeholder="按医院名" />&emsp;
            <button id="hospita-btn-search" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>
            <button id="hospita-btn-search" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>&emsp;
            <button id="hospital-btn-add" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>添加</button>
        </div>
        <!-- 数据表格 -->
@@ -48,7 +49,12 @@
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看详情</a>
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-xs" lay-event="pay">充值</a>
    <a class="layui-btn layui-btn-xs" lay-event="del">删除</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
<!-- 表格状态列 -->
<script type="text/html" id="hospital-tpl-state">
    <input type="checkbox" lay-filter="hospital-tpl-state" value="{{d.hospitalId}}" value2="{{d.departmentId}}" lay-skin="switch" lay-text="启用|禁用"
           {{d.enabled==true?'checked':''}}/>
</script>
<script>
    layui.use(['form', 'table', 'laydate', 'util', 'config', 'admin', 'area'], function () {
@@ -72,33 +78,32 @@
                { field: 'departmentName', width: 100, title: '科室' },
                {
                    field: 'hospitalArea', width: 200, title: '所在地区', templet: function (d) {
                        return ((d.hospitalProvince==null)?"":d.hospitalProvince) + " "
                         + ((d.hospitalCity==null)?"":d.hospitalCity) + " " +
                          ((d.hospitalArea==null)?"":d.hospitalArea)
                        return ((d.hospitalProvince == null) ? "" : d.hospitalProvince) + " "
                            + ((d.hospitalCity == null) ? "" : d.hospitalCity) + " " +
                            ((d.hospitalArea == null) ? "" : d.hospitalArea)
                    }
                },
                { field: 'hospitalLink', width: 100, title: '联系人' },
                { field: 'hospitalTel', width: 150, title: '联系方式' },
                {
                    field: 'enabled', width: 100, sort: true, title: '状态', templet: function (d) {
                    field: 'enabled', width: 80, sort: true, title: '状态', templet: function (d) {
                        return d.hospitalState == 0 ? "试用" : "正式"
                    }
                },
                {
                    field: 'isScreen', width: 100, sort: true, title: '筛查', templet: function (d) {
                    field: 'isScreen', width: 80, sort: true, title: '筛查', templet: function (d) {
                        return d.isScreen ? "是" : "否"
                    }
                },
                // { field: 'isAnswer', width: 100, sort: true, title: '医答',templet:function (d) {
                // { field: 'isAnswer', width: 80, sort: true, title: '医答',templet:function (d) {
                //     return d.isScreen?"是":"否"
                // } },
                { field: 'serverUserName', width: 150, title: '服务人员' },
                { field: 'createTime', width: 150, sort: true, title: '创建时间', templet: "<div>{{layui.util.toDateString(d.createTime, 'yyyy/MM/dd')}}</div>" },
                { field: 'hospitalId', width: 250, align: 'center', toolbar: '#businessRecords-table-bar', sort: true, title: '操作' }
            ]],
            done: function () {
            }
                { field: 'serverUserName', width: 100, title: '服务人员' },
                { field: 'createTime', width: 120, sort: true, title: '创建时间', templet: "<div>{{layui.util.toDateString(d.createTime, 'yyyy/MM/dd')}}</div>" },
                { field: 'enabled', width: 100, templet: '#hospital-tpl-state', sort: true, title: '状态' },
                { field: 'hospitalId', width: 300, align: 'center', toolbar: '#businessRecords-table-bar', title: '操作' }
            ]]
        });
        //省份数据加载
        area.areaData("#province", 1, "", "");
@@ -106,8 +111,21 @@
        table.on('tool(hospital-table)', function (obj) {
            var data = obj.data;
            var layEvent = obj.event;
            if (layEvent === 'detail') { // 查看详情
                showEditModel(data);
            if (layEvent === 'del') {
                layer.confirm('确定要删除吗?', function (i) {
                    layer.load(2);
                    var whereModel={
                        id: obj.data.hospitalId,
                departmentId: obj.data.departmentId
            };
                    admin.req('api-user/syshospital/delete', whereModel, function (data) {
                        layer.closeAll('loading');
                        layer.msg(data.msg, { icon: 1, time: 500 }, function () {
                            $('#hospita-btn-search').click();
                        });
                        obj.del();
                    }, 'GET');
                });
            }
        });
        // 搜索按钮点击事件
@@ -117,9 +135,9 @@
            var hospitalstate = $('#hospitalstate').val();
            var hospitalName = $('#hospitalName').val();
            var hospitalProvince = ($("#province").val()!="")?$('#province option:selected').text():"";
            var hospitalCity = ($("#city").val()!="")?$('#city option:selected').text():"";
            var hospitalArea = ($("#areas").val()!="")?$('#areas option:selected').text():"";
            var hospitalProvince = ($("#province").val() != "") ? $('#province option:selected').text() : "";
            var hospitalCity = ($("#city").val() != "") ? $('#city option:selected').text() : "";
            var hospitalArea = ($("#areas").val() != "") ? $('#areas option:selected').text() : "";
            var whereModel = {
                isScreen: isscreen,
@@ -140,15 +158,41 @@
        //装载市区数据
        form.on("select(province)", function (data) {
            $("#city").empty();
            $("#areas").empty();
            area.areasClear("#areas", 3);
            area.areaData("#city", 2, data.value, "");
        });
        //装载区县数据
        form.on("select(city)", function (data) {
            $("#areas").empty();
            area.areaData("#areas", 3, data.value, "");
        });
        // 修改状态
        form.on('switch(hospital-tpl-state)', function (obj) {
            layer.load(2);
            admin.req('api-user/syshospital/updateEnabled', {
                id: obj.elem.value,
                departmentId: obj.elem.getAttribute("value2"),
                enabled: obj.elem.checked ? true : false
            }, function (data) {
                layer.closeAll('loading');
                if (data.code == 0) {
                    layer.msg(data.msg, { icon: 1, time: 500 });
                } else {
                    layer.msg(data.msg, { icon: 2, time: 500 });
                    $(obj.elem).prop('checked', !obj.elem.checked);
                    form.render('checkbox');
                }
            }, 'GET');
        });
        // 添加按钮点击事件
        $('#hospital-btn-add').click(function () {
            admin.popupCenter({
                title: '添加医院',
                path: 'pages/opration/hospital_form_base.html',
                finish: function () {
                    //renderTable();
                }
            })
        });
    });
</script>
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html
New file
@@ -0,0 +1,133 @@
<fieldset class="layui-elem-field layui-field-title">
    <legend>医院基本信息</legend>
</fieldset>
<form id="hospital-form" lay-filter="hospital-form" class="layui-form model-form" method="POST">
    <div class="layui-form-item">
        <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" />
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">医院简称</label>
        <div class="layui-input-block">
            <input name="hospitalShortName" type="text" class="layui-input" maxlength="50" />
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">医院类型</label>
        <div class="layui-input-block">
            <input name="hospitalTypeId" id="hospitalTypeId" type="hidden" />
            <select name="hospitalTypeName" id="hospitalTypeName" lay-filter="hospitalTypeName">
                <option value="">请选择</option>
            </select>
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">医院资质</label>
        <div class="layui-input-block">
            <input name="hospitalQualifiedId" id="hospitalQualifiedId" type="hidden" />
            <select name="hospitalQualifiedName" id="hospitalQualifiedName" lay-filter="hospitalQualifiedName">
                <option value="">请选择</option>
            </select>
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">所在地区</label>
        <div class="layui-input-block">
            <select id="hospitalProvince" placeholder="省份" lay-filter="hospitalProvince">
            </select>
            <select id="hospitalCity" placeholder="市" lay-filter="hospitalCity">
                <option value="">选择市</option>
            </select>
            <select id="hospitalArea" placeholder="区县" lay-filter="hospitalArea">
                <option value="">选择区县</option>
            </select>
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">区号</label>
        <div class="layui-input-block">
            <input name="areaCode" type="text" class="layui-input" maxlength="10" />
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">地址</label>
        <div class="layui-input-block">
            <input name="hospitalAdress" type="text" class="layui-input" maxlength="100" />
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">经度</label>
        <div class="layui-input-block">
            <input name="longitude" 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="latitude" 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="hospital_about" type="text" class="layui-input" maxlength="500" />
        </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="hospital-form-submit" lay-submit>保存</button>
    </div>
</form>
<script>
    layui.use(['form', 'table', 'laydate', 'util', 'config', 'admin', 'area', 'formSelects', '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 formSelects = layui.formSelects;
        var autocomplete = layui.autocomplete;
        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", "");
        //医院类型数据
        dic.dicData("#hospitalTypeName", "HOSPITAL_TYPE", "");
        //省份数据加载
        area.areaData("#hospitalProvince", 1, "", "");
        //装载市区数据
        form.on("select(hospitalProvince)", function (data) {
            area.areasClear("#hospitalArea", 3);
            area.areaData("#hospitalCity", 2, data.value, "");
        });
        //装载区县数据
        form.on("select(hospitalCity)", function (data) {
            area.areaData("#hospitalArea", 3, data.value, "");
        });
        //赋值资质数据ID
        form.on("select(hospitalQualifiedName)", function (data) {
            $("#hospitalQualifiedId").val(data.value);
        });
        //赋值医院类型数据ID
        form.on("select(hospitalTypeName)", function (data) {
            $("#hospitalTypeId").val(data.value);
        });
    });
</script>
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/product.html
@@ -21,7 +21,7 @@
</script>
<!-- 表格状态列 -->
<script type="text/html" id="product-tpl-state">
    <input type="checkbox" lay-filter="product-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="未处理|已处理"
    <input type="checkbox" lay-filter="product-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="禁用|启用"
           {{d.enabled==true?'checked':''}}/>
</script>
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/sysdictionaries.html
@@ -190,7 +190,7 @@
                    $.each(data.data, function (index, item) {
                        //往下拉菜单里添加元素
                        // console.log(JSON.stringify(item))
                        $('#role_clients').append(new Option(item.dictionariesName, item.id, false, selected));
                        $('#role_clients').append(new Option(item.dictionariesName, item.dictionariesKey, false, selected));
                    })
                    form.render();
                } else {