forked from kidgrow-microservices-platform

houruijun
2020-08-09 92257d291a9d171a15b22c1fc6527b1a909ac3f6
1.增加运营平台首页页面功能
2.修改检查科室名称的问题
23 files modified
709 ■■■■■ changed files
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ProductOrderDetailMapper.java 4 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java 4 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysFeedbackService.java 4 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java 4 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysFeedbackServiceImpl.java 7 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml 8 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java 4 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysFeedbackController.java 1 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysDepartmentMapper.java 8 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysHospitalMapper.java 2 ●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDepartmentService.java 7 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysHospitalService.java 2 ●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDepartmentServiceImpl.java 6 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java 1 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java 2 ●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDepartmentMapper.xml 5 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDoctorMapper.xml 6 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysHospitalMapper.xml 2 ●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDepartmentController.java 32 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysHospitalController.java 5 ●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/config.js 1 ●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/console.html 592 ●●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html 2 ●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ProductOrderDetailMapper.java
@@ -76,12 +76,12 @@
     *    endTime   结束时间
     * @return
     */
    OrderChartVo productOrderChart(@Param("p") Map<String, Object> params);
    List<OrderChartVo> productOrderChart(@Param("p") Map<String, Object> params);
    /**
     * 统计产品的使用数量
     * @return  ccount 是数量
     *          units 是产品名称
     */
    OrderChartVo proCountChart();
    List<OrderChartVo> proCountChart();
}
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderDetailService.java
@@ -105,12 +105,12 @@
     *    endTime   结束时间
     * @return
     */
    OrderChartVo productOrderChart(@Param("p") Map<String, Object> params);
    List<OrderChartVo> productOrderChart(@Param("p") Map<String, Object> params);
    /**
     * 统计产品的使用数量
     * @return  ccount 是数量
     *          units 是产品名称
     */
    OrderChartVo proCountChart();
    List<OrderChartVo> proCountChart();
}
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysFeedbackService.java
@@ -1,10 +1,10 @@
package com.kidgrow.oprationcenter.service;
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.model.SysUser;
import com.kidgrow.oprationcenter.model.SysFeedback;
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.service.ISuperService;
import com.kidgrow.oprationcenter.model.SysFeedback;
import java.util.Map;
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java
@@ -158,7 +158,7 @@
     * @return
             */
    @Override
    public OrderChartVo productOrderChart(Map<String, Object> params) {
    public List<OrderChartVo> productOrderChart(Map<String, Object> params) {
        return baseMapper.productOrderChart(params);
    }
    /**
@@ -167,7 +167,7 @@
     *          units 是产品名称
     */
    @Override
    public OrderChartVo proCountChart() {
    public List<OrderChartVo> proCountChart() {
        return baseMapper.proCountChart();
    }
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysFeedbackServiceImpl.java
@@ -1,8 +1,10 @@
package com.kidgrow.oprationcenter.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kidgrow.common.model.*;
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.model.SysOrganization;
import com.kidgrow.common.model.SysUser;
import com.kidgrow.common.service.impl.SuperServiceImpl;
import com.kidgrow.oprationcenter.mapper.SysFeedbackMapper;
import com.kidgrow.oprationcenter.model.SysFeedback;
@@ -14,7 +16,6 @@
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ProductOrderDetailMapper.xml
@@ -193,7 +193,7 @@
        </if>
        <if test="datatype==1">
            -- 套餐总量
            SELECT count(*) FROM product_order WHERE is_del=0 and enabled=1
            SELECT count(*) FROM sys_product WHERE is_del=0 and enabled=1
        </if>
        <if test="datatype==2">
            -- 未处理用户反馈
@@ -206,7 +206,7 @@
    </select>
    <select id="productOrderChart" resultType="com.kidgrow.oprationcenter.vo.OrderChartVo">
        <if test="p.units==1">
        <if test="p.datatype==1">
            -- 按年统计
            SELECT COUNT(t.id) ccount,t.units FROM
            (select id,DATE_FORMAT(contract_time,'%Y/%m') units,contract_time from product_order
@@ -214,7 +214,7 @@
            ) AS t
            GROUP BY t.units
        </if>
        <if test="p.units==2">
        <if test="p.datatype==2">
            -- 按月统计
            SELECT COUNT(t.id) ccount,t.units FROM
            (select id,DATE_FORMAT(contract_time,'%Y') units,contract_time from product_order
@@ -246,7 +246,7 @@
    pro_id,
    pro_name
ORDER BY
    procount DESC
    ccount DESC
    LIMIT 10
    </select>
</mapper>
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java
@@ -393,7 +393,7 @@
    @ApiOperation(value = "按指定类型统计合同数量")
    @GetMapping("/productOrderChart")
    public ResultBody productOrderChart(@RequestParam  Map<String, Object> params) {
        OrderChartVo orderChartVo=productOrderDetailService.productOrderChart(params);
        List<OrderChartVo> orderChartVo=productOrderDetailService.productOrderChart(params);
        return ResultBody.ok().data(orderChartVo).msg("数据获取成功!") ;
    }
@@ -405,7 +405,7 @@
    @ApiOperation(value = "统计产品的使用数量")
    @GetMapping("/proCountChart")
    public ResultBody proCountChart() {
        OrderChartVo orderChartVo=productOrderDetailService.proCountChart();
        List<OrderChartVo> orderChartVo=productOrderDetailService.proCountChart();
        return ResultBody.ok().data(orderChartVo).msg("数据获取成功!") ;
    }
}
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysFeedbackController.java
@@ -17,7 +17,6 @@
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysDepartmentMapper.java
@@ -31,4 +31,12 @@
     * @return SysDepartment对象
     */
    SysDepartment findByObject(@Param("p") SysDepartment sysDepartment);
    /**
     *检查指定医院下是否已经存在该名称的科室
     * @param hosId
     * @param departmentName
     * @return  如果返回空则视为不存在
     */
    String checkDepartmentName(@Param("hosId") Long hosId,@Param("departmentName") String departmentName);
}
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysHospitalMapper.java
@@ -55,6 +55,6 @@
     *                  11 筛查医院
     * @return
     */
    int chartHospital(@Param("datatype") Integer datatype);
    int chartHospital(@Param("datatype") int datatype);
}
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDepartmentService.java
@@ -33,5 +33,12 @@
    ResultBody findAll(Map<String, Object> params);
    ResultBody findListByHospitalId(Map<String, Object> params);
    /**
     *检查指定医院下是否已经存在该名称的科室
     * @param hosId
     * @param departmentName
     * @return  如果返回空则视为不存在
     */
    String checkDepartmentName(Long hosId,String departmentName);
}
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysHospitalService.java
@@ -74,5 +74,5 @@
     *                  11 筛查医院
     * @return
             */
    ResultBody chartHospital(Integer datatype);
    ResultBody chartHospital(int datatype);
}
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDepartmentServiceImpl.java
@@ -85,4 +85,10 @@
        }
        return ResultBody.ok().data(sysDepartments);
    }
    @Override
    public String checkDepartmentName(Long hosId, String departmentName) {
        String departName=baseMapper.checkDepartmentName(hosId,departmentName);
        return departName;
    }
}
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java
@@ -137,6 +137,7 @@
     *                 2 医答医生
     *                 3 C端医生
     *                 4 H端医生
     *                 5 待审核医生
     * @return
     */
    @Override
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysHospitalServiceImpl.java
@@ -231,7 +231,7 @@
     * @return
     */
    @Override
    public ResultBody chartHospital(Integer datatype) {
    public ResultBody chartHospital(int datatype) {
        int hospitalCount=baseMapper.chartHospital(datatype);
        return ResultBody.ok().data(hospitalCount).msg("获取数据成功");
    }
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDepartmentMapper.xml
@@ -75,4 +75,9 @@
        <include refid="where"/>
        order by id desc
    </select>
    <select id="checkDepartmentName" resultType="string">
        SELECT org_name FROM sys_organization
WHERE org_parent_id =( SELECT org_id FROM sys_hospital WHERE id = #{hosId} )
AND org_name = #{departmentName}
    </select>
</mapper>
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDoctorMapper.xml
@@ -132,7 +132,7 @@
        select count(id) doctorCount from sys_doctor where is_del=0 and enabled=1
        <if test="datatype==0">
            -- 自注册医生
            and (doctor_type=0 or doctor_type=1) and doctor_state=1
            and (doctor_type=0 or doctor_type=1) and doctor_state=0
        </if>
        <if test="datatype==1">
            -- 签约医生
@@ -150,5 +150,9 @@
            -- H端医生
            and (doctor_type=1 or doctor_type=0) and doctor_state=1
        </if>
        <if test="datatype==5">
            -- H端医生
            and (doctor_type=1 or doctor_type=0) and doctor_state=0 and enabled=0
        </if>
    </select>
</mapper>
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysHospitalMapper.xml
@@ -273,7 +273,7 @@
        where is_del=0 and enabled=1 and hospital_name LIKE concat('%',#{hospitalName},'%')
        order by hospital_name desc
    </select>
    <select id="chartHospital" resultType="int" parameterType="integer">
    <select id="chartHospital" resultType="int" parameterType="int">
        SELECT
        count( DISTINCT hospital_name ) hospitalCount
        FROM
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDepartmentController.java
@@ -4,6 +4,7 @@
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.model.SysOrganization;
import com.kidgrow.common.utils.StringUtils;
import com.kidgrow.usercenter.model.SysDepartment;
import com.kidgrow.usercenter.service.ISysDepartmentService;
import com.kidgrow.usercenter.service.ISysOrganizationService;
@@ -20,7 +21,6 @@
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -86,22 +86,31 @@
     */
    @ApiOperation(value = "检查科室名是否存在")
    @GetMapping("/checkName")
    public ResultBody checkDepName(@RequestParam Map<String, Object> params) {
        params.put("page", 1);
        params.put("limit", 1);
        if (sysDepartmentService.findList(params).getData().size() > 0) {
            return ResultBody.failed().msg(String.format("该医院下已经存在科室 %s", params.get("departmentName")));
    public ResultBody checkDepName(Long hospitalId,String departmentName) {
        if (departMentNameIsUsed(hospitalId,departmentName)) {
            return ResultBody.failed().msg(String.format("该医院下已经存在科室 %s", departmentName));
        }
        return ResultBody.ok().msg("");
    }
    /**
     * 检查科室名是否存在
     * @param hosId
     * @param departmentName
     * @return
     */
    private Boolean departMentNameIsUsed(Long hosId,String departmentName)
    {
        String departName=sysDepartmentService.checkDepartmentName(hosId,departmentName);
        return StringUtils.isNotBlank(departName);
    }
    /**
     * 新增or更新
     */
    @ApiOperation(value = "保存")
    @PostMapping
    @PostMapping("/{hosId}")
    @Transactional(rollbackFor = {Exception.class})
    public ResultBody save(@Valid @RequestBody SysDepartment sysDepartment, BindingResult bindingResult) {
    public ResultBody save(@Valid @RequestBody SysDepartment sysDepartment,@PathVariable Long hosId, BindingResult bindingResult) {
        List<String> errMsg = new ArrayList<>();
        if (bindingResult.hasErrors()) {
            for (ObjectError error : bindingResult.getAllErrors()) {
@@ -111,11 +120,8 @@
        } else {
            //先检查该医院该科室是否已经存在
            if (sysDepartment.getId() == null) {
                Map<String, Object> checkDepartment = new HashMap<String, Object>();
                checkDepartment.put("page", 1);
                checkDepartment.put("limit", 1);
                checkDepartment.put("departmentName", sysDepartment.getDepartmentName());
                if (sysDepartmentService.findList(checkDepartment).getData().size() > 0) {
                if (departMentNameIsUsed(hosId,sysDepartment.getDepartmentName())) {
                    return ResultBody.failed().msg(String.format("该医院下已经存在科室 %s", sysDepartment.getDepartmentName()));
                }
            }
kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysHospitalController.java
@@ -8,7 +8,6 @@
import com.kidgrow.common.model.SysOrganization;
import com.kidgrow.common.model.SysUser;
import com.kidgrow.usercenter.model.SysHospital;
import com.kidgrow.usercenter.service.ISysDepartmentService;
import com.kidgrow.usercenter.service.ISysHospitalService;
import com.kidgrow.usercenter.service.ISysOrganizationService;
import com.kidgrow.usercenter.vo.HospitalListVo;
@@ -44,8 +43,6 @@
public class SysHospitalController extends BaseController {
    @Autowired
    private ISysHospitalService sysHospitalService;
    @Autowired
    private ISysDepartmentService departmentService;
    @Autowired
    private ISysOrganizationService organizationService;
@@ -238,7 +235,7 @@
     */
    @ApiOperation(value = "统计医院数量")
    @GetMapping("/chartHospital")
    public ResultBody chartHospital(Integer datatype) {
    public ResultBody chartHospital(int datatype) {
        return sysHospitalService.chartHospital(datatype);
    }
}
kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/config.js
@@ -48,7 +48,6 @@
        // 当前登录的用户
        getUser: function () {
            var u = layui.data(config.tableName).login_user;
            // debugger;
            if (u) {
                return JSON.parse(u);
            }
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/console.html
@@ -3,265 +3,423 @@
<head>
    <title>首页</title>
    <meta charset="utf-8"/>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <script type="text/javascript" src="../assets/libs/echarts.min.js"></script>
    <style>
        .layui-card-header {
            text-align:left;
            text-align: left;
        }
        .layuiadmin-badge {
            float:right;
            margin-top:12px;
            float: right;
            margin-top: 12px;
        }
        .big-font {
            text-align:left;
            text-align: left;
            font-size: 250%;
            height: 30px;
        }
    </style>
</head>
<body>
<div class="layui-card-body" style="text-align: center;">
    <div class="layui-row layui-col-space10">
        <div class="layui-col-sm2 layui-col-md2">
            <div class="layui-card">
                <div class="layui-card-header">在线人数
                    <span class="layui-badge layui-bg-cyan layuiadmin-badge">时</span>
    <div class="layui-card-body" style="text-align: center;">
        <div class="layui-row layui-col-space10">
            <div class="layui-col-sm2 layui-col-md2">
                <div class="layui-card">
                    <div class="layui-card-header">正式医院
                    </div>
                    <div class="layui-card-body layuiadmin-card-list">
                        <a href="/#!syshospital">
                            <p class="big-font" id="h_hospital">无权查看</p>
                        </a>
                    </div>
                </div>
                <div class="layui-card-body layuiadmin-card-list">
                    <p class="big-font" id="userCnt"></p>
            </div>
            <div class="layui-col-sm2 layui-col-md2">
                <div class="layui-card">
                    <div class="layui-card-header">产品/套餐总量
                    </div>
                    <div class="layui-card-body layuiadmin-card-list">
                        <a href="/#!product">
                            <p class="big-font" id="u_product">无权查看</p>
                        </a>
                    </div>
                </div>
            </div>
            <div class="layui-col-sm2 layui-col-md2">
                <div class="layui-card">
                    <div class="layui-card-header">待审核试用套餐
                    </div>
                    <div class="layui-card-body layuiadmin-card-list">
                        <a href="/#!verifyRecharge">
                            <p class="big-font" id="t_product">无权查看</p>
                        </a>
                    </div>
                </div>
            </div>
            <div class="layui-col-sm3 layui-col-md3">
                <div class="layui-card">
                    <div class="layui-card-header">用户反馈
                    </div>
                    <div class="layui-card-body layuiadmin-card-list">
                        <a href="/#!feedback">
                            <p class="big-font" id="u_feedback">无权查看</p>
                        </a>
                    </div>
                </div>
            </div>
            <div class="layui-col-sm3 layui-col-md3">
                <div class="layui-card">
                    <div class="layui-card-header">数据需求
                    </div>
                    <div class="layui-card-body layuiadmin-card-list">
                        <a href="/#!dataneed">
                            <p class="big-font" id="d_dataneed">无权查看</p>
                        </a>
                    </div>
                </div>
            </div>
        </div>
        <div class="layui-col-sm2 layui-col-md2">
            <div class="layui-card">
                <div class="layui-card-header">PV
                    <span class="layui-badge layui-bg-green layuiadmin-badge">天</span>
        <div class="layui-row layui-col-space10">
            <div class="layui-col-sm2 layui-col-md2">
                <div class="layui-card">
                    <div class="layui-card-header">H端医生
                    </div>
                    <div class="layui-card-body layuiadmin-card-list">
                        <a href="/#!doctor">
                            <p class="big-font" id="h_doctor">无权查看</p>
                        </a>
                    </div>
                </div>
                <div class="layui-card-body layuiadmin-card-list">
                    <p class="big-font" id="pv"></p>
            </div>
            <div class="layui-col-sm2 layui-col-md2">
                <div class="layui-card">
                    <div class="layui-card-header">C端医生
                    </div>
                    <div class="layui-card-body layuiadmin-card-list">
                        <a href="/#!doctor">
                            <p class="big-font" id="c_doctor">无权查看</p>
                        </a>
                    </div>
                </div>
            </div>
            <div class="layui-col-sm2 layui-col-md2">
                <div class="layui-card">
                    <div class="layui-card-header">待审核医生
                    </div>
                    <div class="layui-card-body layuiadmin-card-list">
                        <a href="/#!doctor">
                            <p class="big-font" id="ht_doctor">无权查看</p>
                        </a>
                    </div>
                </div>
            </div>
            <div class="layui-col-sm3 layui-col-md3">
                <div class="layui-card">
                    <div class="layui-card-header">签约医生
                    </div>
                    <div class="layui-card-body layuiadmin-card-list">
                        <a href="/#!doctor">
                            <p class="big-font" id="u_signing">无权查看</p>
                        </a>
                    </div>
                </div>
            </div>
            <div class="layui-col-sm3 layui-col-md3">
                <div class="layui-card">
                    <div class="layui-card-header">医答医生
                    </div>
                    <div class="layui-card-body layuiadmin-card-list">
                        <a href="/#!doctor">
                            <p class="big-font" id="d_isanswer">无权查看</p>
                        </a>
                    </div>
                </div>
            </div>
        </div>
        <div class="layui-col-sm2 layui-col-md2">
            <div class="layui-card">
                <div class="layui-card-header">UV
                    <span class="layui-badge layui-bg-green layuiadmin-badge">天</span>
                </div>
                <div class="layui-card-body layuiadmin-card-list">
                    <p class="big-font" id="uv"></p>
        <!-- <div class="layui-row layui-col-space10">
            <div class="layui-col-lg12 layui-col-md12">
                <div class="layui-card">
                    <div class="card-block">
                        <div id="contract" style="height:350px">
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="layui-col-sm3 layui-col-md3">
            <div class="layui-card">
                <div class="layui-card-header">周访问量
                    <span class="layui-badge layui-bg-blue layuiadmin-badge">周</span>
                </div>
                <div class="layui-card-body layuiadmin-card-list">
                    <p class="big-font" id="weekPv"></p>
        </div> -->
        <div class="layui-row layui-col-space10">
            <div class="layui-col-lg6 layui-col-md6">
                <div class="layui-card">
                    <div class="card-block">
                        <div id="products" style="height:300px"></div>
                    </div>
                </div>
            </div>
        </div>
        <div class="layui-col-sm3 layui-col-md3">
            <div class="layui-card">
                <div class="layui-card-header">月访问量
                    <span class="layui-badge layui-bg-orange layuiadmin-badge">月</span>
                </div>
                <div class="layui-card-body layuiadmin-card-list">
                    <p class="big-font" id="monthPv"></p>
            <div class="layui-col-lg6 layui-col-lg6">
                <div class="layui-card">
                    <div class="card-block">
                        <div id="contract" style="height:300px"></div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="layui-row layui-col-space10">
        <div class="layui-col-lg12 layui-col-md12">
            <div class="layui-card">
                <div class="card-block">
                    <div id="week-container" style="height:350px"></div>
                </div>
            </div>
        </div>
    </div>
    <div class="layui-row layui-col-space10">
        <div class="layui-col-lg6 layui-col-md6">
            <div class="layui-card">
                <div class="card-block">
                    <div id="browser-container" style="height:300px"></div>
                </div>
            </div>
        </div>
        <div class="layui-col-lg6 layui-col-lg6">
            <div class="layui-card">
                <div class="card-block">
                    <div id="operatingSystem-container" style="height:300px"></div>
                </div>
            </div>
        </div>
    </div>
</div>
<script type="text/javascript">
    layui.use(['admin'], function () {
        let admin = layui.admin;
        let browserChart = echarts.init(document.getElementById("browser-container"));
        browserChart.setOption({
            title : {
                text: '浏览器分布',
                subtext: '',
                x:'center'
            },
            tooltip : {
                trigger: 'item',
                formatter: "{a} <br/>{b} : {c} ({d}%)"
            },
            legend: {},
            series : []
        });
        browserChart.showLoading();
        let osChart = echarts.init(document.getElementById("operatingSystem-container"));
        osChart.setOption({
            title : {
                text: '系统分布',
                subtext: '',
                x:'center'
            },
            tooltip : {
                trigger: 'item',
                formatter: "{a} <br/>{b} : {c} ({d}%)"
            },
            legend: {},
            series : []
        });
        osChart.showLoading();
        let weekChart = echarts.init(document.getElementById("week-container"));
        weekChart.setOption({
            title: {
                text: '流量趋势'
            },
            tooltip: {
                trigger: 'axis',
                axisPointer: {
                    type: 'cross',
                    label: {
                        backgroundColor: '#6a7985'
    <script type="text/javascript">
        layui.use(['util', 'admin', 'config'], function () {
            let admin = layui.admin;
            let config = layui.config;
            let util = layui.util;
            let $ = layui.jquery;
            var counts = 0;
            // 加载医院统计数据
            var loadHospitalChart = function (datatype) {
                admin.req("api-user/syshospital/chartHospital?datatype=" + datatype, {}, function (data) {
                    if (0 === data.code) {
                        counts = data.data;
                    }
                }
            },
            legend: {
                data: ['访问量(PV)', '独立用户(UV)']
            },
            xAxis: [
                {
                    type: 'category',
                    boundaryGap: false,
                    data: []
                }
            ],
            yAxis: [
                {
                    type: 'value'
                }
            ],
            series: []
        });
        weekChart.showLoading();
        admin.req('api-log/requestStat', {}, function (data) {
            $('#pv').html(data.currDate_pv);
            $('#uv').html(data.currDate_uv);
            $('#weekPv').html(data.currWeek_pv);
            $('#monthPv').html(data.currMonth_pv);
            $('#userCnt').html(data.currHour_uv);
            browserChart.hideLoading()
            browserChart.setOption({
                legend: {
                    orient: 'vertical',
                    left: 'left',
                    data: data.browser_legendData
                },
                series : [
                    {
                        name: '浏览器',
                        type: 'pie',
                        radius : '55%',
                        center: ['50%', '60%'],
                        data: data.browser_datas,
                        itemStyle: {
                            emphasis: {
                                shadowBlur: 10,
                                shadowOffsetX: 0,
                                shadowColor: 'rgba(0, 0, 0, 0.5)'
                }, "get");
            }
            // 加载医生统计数据
            var loadDoctorChart = function (datatype) {
                admin.req("api-user/sysdoctor/chartDoctor?datatype=" + datatype, {}, function (data) {
                    if (0 === data.code) {
                        counts = data.data;
                    }
                }, "get");
            }
            // 加载反馈需求审核统计数据
            var loadOprationChart = function (datatype) {
                admin.req("api-opration/productorderdetail/oprationChart?datatype=" + datatype, {},
                    function (data) {
                        if (0 === data.code) {
                            counts = data.data;
                        }
                    }, "get");
            }
            // 加载合同统计数据
            var loadProductOrderChart = function (params) {
                admin.req("api-opration/productorderdetail/productOrderChart", params, function (data) {
                    if (0 === data.code) {
                        counts = data.data;
                    }
                }, "get");
            }
            // 加载套餐使用量统计数据
            var loadProCountChart = function () {
                admin.req("api-opration/productorderdetail/proCountChart", {}, function (data) {
                    if (0 === data.code) {
                        return data.data;
                    } else {
                        return null;
                    }
                }, "get");
            }
                        //加载套餐使用图表
                        var loadContractChart = function () {
                var chartcontract = echarts.init(document.getElementById('contract'));
                admin.req("api-opration/productorderdetail/proCountChart", {}, function (data) {
                    if (0 === data.code) {
                        var listData = data.data;
                        var Xdata = new Array();
                        var Ydata = new Array();
                        if (listData != null) {
                            for (let index = 0; index < listData.length; index++) {
                                Xdata.push(listData[index].units);
                                Ydata.push(listData[index].ccount);
                            }
                            var optionchart = {
                                title: {
                                    text: '套餐使用数量统计(前10个)'
                                },
                                color: ['#3398DB'],
                                tooltip: {
                                    trigger: 'axis',
                                    axisPointer: { // 坐标轴指示器,坐标轴触发有效
                                        type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
                                    }
                                },
                                xAxis: {
                                    type: 'category',
                                    data: Xdata
                                },
                                yAxis: {
                                    type: 'value'
                                },
                                series: [{
                                    name: '使用数量',
                                    data: Ydata,
                                    type: 'bar',
                                    barWidth: '10%',
                                    showBackground: true
                                }]
                            };
                            chartcontract.setOption(optionchart, true);
                        }
                    }
                ]
            });
                }, "get");
            }
            osChart.hideLoading()
            osChart.setOption({
                legend: {
                    orient: 'vertical',
                    left: 'left',
                    data: data.operatingSystem_legendData
                },
                series : [
                    {
                        name: '操作系统',
                        type: 'pie',
                        radius : '55%',
                        center: ['50%', '60%'],
                        data: data.operatingSystem_datas,
                        itemStyle: {
                            emphasis: {
                                shadowBlur: 10,
                                shadowOffsetX: 0,
                                shadowColor: 'rgba(0, 0, 0, 0.5)'
            //加载合同图表
            var loadProductChart = function () {
                var chartproducts = echarts.init(document.getElementById('products'));
                admin.req("api-opration/productorderdetail/productOrderChart", {
                    datatype: 1,
                    startTime: "",
                    endTime: ""
                }, function (data) {
                    if (0 === data.code) {
                        var listData = data.data;
                        var Xdata = new Array();
                        var Ydata = new Array();
                        if (listData != null) {
                            for (let index = 0; index < listData.length; index++) {
                                Xdata.push(listData[index].units);
                                Ydata.push(listData[index].ccount);
                            }
                            var optionchart = {
                                title: {
                                    text: '合同签订统计'
                                },
                                color: ['#3398DB'],
                                tooltip: {
                                    trigger: 'axis',
                                    axisPointer: { // 坐标轴指示器,坐标轴触发有效
                                        type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
                                    }
                                },
                                xAxis: {
                                    type: 'category',
                                    data: Xdata
                                },
                                yAxis: {
                                    type: 'value'
                                },
                                series: [{
                                    name: '合同数量',
                                    data: Ydata,
                                    type: 'bar',
                                    barWidth: '10%',
                                    showBackground: true
                                }]
                            };
                            chartproducts.setOption(optionchart, true);
                        }
                    }
                ]
            });
                }, "get");
            }
            weekChart.hideLoading()
            weekChart.setOption({
                xAxis: [
                    {
                        type: 'category',
                        boundaryGap: false,
                        data: data.statWeek_items
            //先拿到当前登录用户的信息
            var nowUser = config.getUser();
            if (!strUtil.isEmpty(nowUser)) {
                var userRole = nowUser.roles;
                for (let index = 0; index < userRole.length; index++) {
                    const element = userRole[index];
                    if (element.code == "admin" ||
                        element.code == "dev_admin" ||
                        element.code == "pc_admin" ||
                        element.code == "oprationmanager" ||
                        element.code == "dev_user" ||
                        element.code == "shop_admin" ||
                        element.code == "app_admin") {
                        //正式医院
                        loadHospitalChart(0);
                        $("#h_hospital").html(counts);
                        //产品/套餐总量
                        loadOprationChart(1);
                        $("#u_product").html(counts);
                        //待审核试用套餐
                        loadOprationChart(0);
                        $("#t_product").html(counts);
                        //用户反馈
                        loadOprationChart(2);
                        $("#u_feedback").html(counts);
                        //数据需求
                        loadOprationChart(2);
                        $("#d_dataneed").html(counts);
                        //H端医生
                        loadDoctorChart(4);
                        $("#h_doctor").html(counts);
                        //C端医生
                        loadDoctorChart(3);
                        $("#c_doctor").html(counts);
                        //签约医生
                        loadDoctorChart(1);
                        $("#u_signing").html(counts);
                        //医答医生
                        loadDoctorChart(2);
                        $("#d_isanswer").html(counts);
                        //待审核医生
                        loadDoctorChart(5);
                        $("#ht_doctor").html(counts);
                        loadContractChart();
                        loadProductChart();
                    } else if (element.code == "opration") {
                        //正式医院
                        loadHospitalChart(0);
                        $("#h_hospital").html(counts);
                        //用户反馈
                        loadOprationChart(2);
                        $("#u_feedback").html(counts);
                        //数据需求
                        loadOprationChart(2);
                        $("#d_dataneed").html(counts);
                        //H端医生
                        loadDoctorChart(4);
                        $("#h_doctor").html(counts);
                        //C端医生
                        loadDoctorChart(3);
                        $("#c_doctor").html(counts);
                        //签约医生
                        loadDoctorChart(1);
                        $("#u_signing").html(counts);
                        //医答医生
                        loadDoctorChart(2);
                        $("#d_isanswer").html(counts);
                        //待审核医生
                        loadDoctorChart(5);
                        $("#ht_doctor").html(counts);
                        loadProductChart();
                    } else if (element.code == "sale") {
                        //正式医院
                        loadHospitalChart(0);
                        $("#h_hospital").html(counts);
                        //正式医院
                        loadHospitalChart(0);
                        $("#h_hospital").html(counts);
                        //用户反馈
                        loadOprationChart(2);
                        $("#u_feedback").html(counts);
                        //数据需求
                        loadOprationChart(2);
                        $("#d_dataneed").html(counts);
                        //H端医生
                        loadDoctorChart(4);
                        $("#h_doctor").html(counts);
                        //C端医生
                        loadDoctorChart(3);
                        $("#c_doctor").html(counts);
                        //待审核医生
                        loadDoctorChart(5);
                        $("#ht_doctor").html(counts);
                        //签约医生
                        loadDoctorChart(1);
                        $("#u_signing").html(counts);
                        //医答医生
                        loadDoctorChart(2);
                        loadContractChart();
                        loadProductChart();
                    }
                ],
                series: [
                    {
                        name: '访问量(PV)',
                        type: 'line',
                        areaStyle: {},
                        label: {
                            normal: {
                                show: true,
                                position: 'top'
                            }
                        },
                        data: data.statWeek_pv
                    },
                    {
                        name: '独立用户(UV)',
                        type: 'line',
                        areaStyle: {},
                        data: data.statWeek_uv
                    }
                ]
            });
        }, 'GET');
    });
</script>
                }
            }
        });
    </script>
</body>
</html>
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_form_base.html
@@ -342,7 +342,7 @@
                            saleUserTel: $("#saleUserTel").val(),
                            accountsCount: $("#accountsCount").val()
                        };
                        admin.req('api-user/sysdepartment', JSON.stringify(departmentData),
                        admin.req('api-user/sysdepartment/'+data.data.id, JSON.stringify(departmentData),
                            function (data) {
                                layer.closeAll('loading');
                                if (data.code == 0) {