From 88b335cf1352479a5ffdb6305ce42b32e0122622 Mon Sep 17 00:00:00 2001
From: luliqiang <kidgrow>
Date: Tue, 11 Aug 2020 09:45:14 +0800
Subject: [PATCH] Merge branch 'dev' of http://192.168.2.240:7070/r/kidgrow-microservices-platform into dev

---
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html                                              |   75 +++++++-----
 kidgrow-commons/kidgrow-authclient-spring-boot-starter/src/main/java/com/kidgrow/authclient/store/CustomRedisTokenStore.java           |   12 +-
 kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/SecurityConfig.java                                             |   27 ++++
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java |    2 
 kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/handler/SingleTokenServices.java                                       |    9 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/console.html                                                           |  139 ++++++++++++++++++++++
 kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java                                  |   46 ++++++-
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js                                                             |    5 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js                                                          |   15 ++
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/admin.js                                                              |   17 ++
 10 files changed, 287 insertions(+), 60 deletions(-)

diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java
index 341ba3c..08deb28 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java
@@ -327,7 +327,7 @@
             SysUser sysUser = new SysUser();
             sysUser.setUsername(sysDoctor.getUsername());
             sysUser.setPassword(passwordEncoder.encode(sysDoctor.getPassword()));
-            sysUser.setNickname(sysDoctor.getHospitalName());
+            sysUser.setNickname(sysDoctor.getDoctorName());
             sysUser.setHeadImgUrl(sysDoctor.getDoctorLogo());
             sysUser.setMobile(sysDoctor.getDoctorTel());
             sysUser.setType(UserType.DOCTOR.name());
diff --git a/kidgrow-commons/kidgrow-authclient-spring-boot-starter/src/main/java/com/kidgrow/authclient/store/CustomRedisTokenStore.java b/kidgrow-commons/kidgrow-authclient-spring-boot-starter/src/main/java/com/kidgrow/authclient/store/CustomRedisTokenStore.java
index 0976a50..f47a4a9 100644
--- a/kidgrow-commons/kidgrow-authclient-spring-boot-starter/src/main/java/com/kidgrow/authclient/store/CustomRedisTokenStore.java
+++ b/kidgrow-commons/kidgrow-authclient-spring-boot-starter/src/main/java/com/kidgrow/authclient/store/CustomRedisTokenStore.java
@@ -291,12 +291,12 @@
             }
             conn.rPush(clientId, serializedAccessToken);
             if (token.getExpiration() != null) {
-                int seconds = token.getExpiresIn();
-                conn.expire(accessKey, seconds);
-                conn.expire(authKey, seconds);
-                conn.expire(authToAccessKey, seconds);
-                conn.expire(clientId, seconds);
-                conn.expire(approvalKey, seconds);
+//                int seconds = token.getExpiresIn();
+//                conn.expire(accessKey, seconds);
+//                conn.expire(authKey, seconds);
+//                conn.expire(authToAccessKey, seconds);
+//                conn.expire(clientId, seconds);
+//                conn.expire(approvalKey, seconds);
             }
             //关闭Token刷新
 //            OAuth2RefreshToken refreshToken = token.getRefreshToken();
diff --git a/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java b/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java
index aca478e..84121f2 100644
--- a/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java
+++ b/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/AuthorizationServerConfig.java
@@ -3,19 +3,27 @@
 import com.kidgrow.oauth2.handler.SingleTokenServices;
 import com.kidgrow.oauth2.service.impl.RedisClientDetailsService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
 import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.authentication.AuthenticationProvider;
 import org.springframework.security.authentication.ProviderManager;
+import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.AuthenticationException;
 import org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper;
 import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.oauth2.common.exceptions.InvalidTokenException;
 import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
 import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
 import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
 import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
 import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer;
+import org.springframework.security.oauth2.provider.OAuth2Authentication;
 import org.springframework.security.oauth2.provider.code.RandomValueAuthorizationCodeServices;
 import org.springframework.security.oauth2.provider.error.WebResponseExceptionTranslator;
 import org.springframework.security.oauth2.provider.token.TokenEnhancer;
@@ -42,8 +50,9 @@
     /**
      * 注入authenticationManager 来支持 password grant type
      */
-    @Autowired
-    private AuthenticationManager authenticationManager;
+//   @Autowired
+//    private AuthenticationManager authenticationManager;
+
 
     @Resource
     private UserDetailsService userDetailsService;
@@ -69,6 +78,11 @@
 
     @Autowired
     private RandomValueAuthorizationCodeServices authorizationCodeServices;
+    @Autowired
+    private AuthenticationProvider daoAuhthenticationOauthProvider;
+    @Autowired
+    private SingleTokenServices tokenServices;
+
 
     /**
      * 配置身份认证器,配置认证方式,TokenStore,TokenGranter,OAuth2RequestFactory
@@ -88,15 +102,35 @@
         }
         endpoints
                 //扩展tokenServices
-//                .tokenServices(tokenServices(endpoints))
                 .tokenServices(KidgrowTokenServices())
-                .authenticationManager(authenticationManager)
+                .authenticationManager(new AuthenticationManager(){
+                    @Override
+                    public Authentication authenticate(Authentication authentication) throws AuthenticationException {
+                        String token = (String) authentication.getPrincipal();
+                        OAuth2Authentication auth = tokenServices.loadAuthentication(token);
+                        if (auth == null) {
+                            throw new InvalidTokenException("Invalid token: " + token);
+                        }
+                        return daoAuhthenticationOauthProvider.authenticate(authentication);
+                    }
+                })
                 .userDetailsService(userDetailsService)
-//                .tokenStore(tokenStore)
                 .authorizationCodeServices(authorizationCodeServices)
                 .exceptionTranslator(webResponseExceptionTranslator);
-    }
 
+    }
+    @Bean
+    DaoAuthenticationProvider daoAuthenticationProvider(){
+
+        DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
+
+        daoAuthenticationProvider.setPasswordEncoder(new BCryptPasswordEncoder());
+
+        daoAuthenticationProvider.setUserDetailsService(userDetailsService);
+
+        return daoAuthenticationProvider;
+
+    }
 
     @Bean
     @Primary
diff --git a/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/SecurityConfig.java b/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/SecurityConfig.java
index 105d3ff..03c15b8 100644
--- a/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/SecurityConfig.java
+++ b/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/config/SecurityConfig.java
@@ -1,6 +1,7 @@
 package com.kidgrow.oauth2.config;
 
 import com.kidgrow.common.constant.SecurityConstants;
+//import com.kidgrow.oauth2.handler.InMemoryAuthenticationProvider;
 import com.kidgrow.oauth2.mobile.MobileAuthenticationSecurityConfig;
 import com.kidgrow.oauth2.openid.OpenIdAuthenticationSecurityConfig;
 import com.kidgrow.common.config.DefaultPasswordConfig;
@@ -9,19 +10,26 @@
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.authentication.ProviderManager;
+import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
 import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 import org.springframework.security.config.http.SessionCreationPolicy;
 import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.web.AuthenticationEntryPoint;
+import org.springframework.security.web.access.intercept.FilterSecurityInterceptor;
 import org.springframework.security.web.authentication.AuthenticationFailureHandler;
 import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
 import org.springframework.security.web.authentication.logout.HttpStatusReturningLogoutSuccessHandler;
 import org.springframework.security.web.authentication.logout.LogoutHandler;
+import org.springframework.security.web.header.HeaderWriterFilter;
+import org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter;
 
 import javax.annotation.Resource;
+import java.util.Arrays;
 
 
 /**
@@ -63,6 +71,9 @@
 	@Autowired
 	private MobileAuthenticationSecurityConfig mobileAuthenticationSecurityConfig;
 
+//	@Autowired
+//	InMemoryAuthenticationProvider inMemoryAuthenticationProvider;
+
 	/**
 	 * 这一步的配置是必不可少的,否则SpringBoot会自动配置一个AuthenticationManager,覆盖掉内存中的用户
 	 * @return 认证管理对象
@@ -72,6 +83,22 @@
 	public AuthenticationManager authenticationManagerBean() throws Exception {
 		return super.authenticationManagerBean();
 	}
+//	@Bean
+//    @Override
+//	public AuthenticationManager authenticationManagerBean() throws Exception {
+//		// 认证管理器中只提供我需要的两个第一个是自定义认证,第二个是数据库认证,需要经过两层认证才能通过,默认的
+//
+//		// 构造函数不提供自定义认证Provider,那么默认提供DaoAuthenticationProvider
+//
+//		ProviderManager authenticationManager = new ProviderManager(Arrays.asList(inMemoryAuthenticationProvider, daoAuthenticationProvider()));
+//
+//		// 不擦除认证密码,擦除会导致TokenBasedRememberMeServices因为找不到Credentials再调用UserDetailsService而抛出UsernameNotFoundException
+//
+//		authenticationManager.setEraseCredentialsAfterAuthentication(false);
+//
+//		return authenticationManager;
+//	}
+
 
 	@Override
 	protected void configure(HttpSecurity http) throws Exception {
diff --git a/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/handler/SingleTokenServices.java b/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/handler/SingleTokenServices.java
index 1c97969..4fe6897 100644
--- a/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/handler/SingleTokenServices.java
+++ b/kidgrow-uaa/kidgrow-uaa-server/src/main/java/com/kidgrow/oauth2/handler/SingleTokenServices.java
@@ -19,6 +19,7 @@
 import org.springframework.security.oauth2.provider.*;
 import org.springframework.security.oauth2.provider.token.*;
 import org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken;
+//import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
 
@@ -30,7 +31,7 @@
 @Deprecated
 public class SingleTokenServices implements AuthorizationServerTokenServices, ResourceServerTokenServices, ConsumerTokenServices, InitializingBean {
     private int refreshTokenValiditySeconds = 2592000;
-    private int accessTokenValiditySeconds = 3600;//43200
+    private int accessTokenValiditySeconds = 10800;//43200   //登录时,给的默认值;一段时间后,用的查询数据库中的oauth_client_details的表的access_token_validity;
     private boolean supportRefreshToken = false;
     private boolean reuseRefreshToken = true;
     private TokenStore tokenStore;
@@ -166,14 +167,14 @@
     public OAuth2Authentication loadAuthentication(String accessTokenValue) throws AuthenticationException, InvalidTokenException {
         OAuth2AccessToken accessToken = this.tokenStore.readAccessToken(accessTokenValue);
         if (accessToken == null) {
-            throw new InvalidTokenException("Invalid access token: " + accessTokenValue);
+            throw new InvalidTokenException("Invalid access token:1 " + accessTokenValue);
         } else if (accessToken.isExpired()) {
             this.tokenStore.removeAccessToken(accessToken);
             throw new InvalidTokenException("Access token expired: " + accessTokenValue);
         } else {
             OAuth2Authentication result = this.tokenStore.readAuthentication(accessToken);
             if (result == null) {
-                throw new InvalidTokenException("Invalid access token: " + accessTokenValue);
+                throw new InvalidTokenException("Invalid access token:2 " + accessTokenValue);
             } else {
                 if (this.clientDetailsService != null) {
                     String clientId = result.getOAuth2Request().getClientId();
@@ -193,7 +194,7 @@
     public String getClientId(String tokenValue) {
         OAuth2Authentication authentication = this.tokenStore.readAuthentication(tokenValue);
         if (authentication == null) {
-            throw new InvalidTokenException("Invalid access token: " + tokenValue);
+            throw new InvalidTokenException("Invalid access token:3 " + tokenValue);
         } else {
             OAuth2Request clientAuth = authentication.getOAuth2Request();
             if (clientAuth == null) {
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
index 5ffbfdb..cbad2c2 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
@@ -294,9 +294,18 @@
 function permissionsInput(res,config) {
     if(!strUtil.isEmpty(res)&&res.code==401){
         config.removeToken();
-        layer.msg('登录过期', {icon: 2, time: 1500}, function () {
-            location.replace('/login.html');
-        }, 1000);
+        console.log(res);
+        debugger
+        if(res.msg.includes("Access token expired")){
+            layer.msg('登录过期11', {icon: 2, time: 1500}, function () {
+                location.replace('/login.html');
+            }, 5000);
+        }else{
+            layer.msg('您的账号在其他地方登陆,请重新登录或修改密码', {icon: 2, time: 1500}, function () {
+                location.replace('/login.html');
+            }, 5000);
+        }
+        
         return;
     }
     var needpPermissions = $(".permissions");
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/admin.js b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/admin.js
index 46ba519..4f39373 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/admin.js
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/admin.js
@@ -128,9 +128,20 @@
                 if (jsonRs) {
                     if (jsonRs.code == 401) {
                         config.removeToken();
-                        layer.msg('登录过期', {icon: 2, time: 1500}, function () {
-                            location.replace('/login.html');
-                        }, 1000);
+                        // var json=JSON.stringify(jsonRs)
+                        // console.log(json,"jsonjsonjsonjsonjsonjsonjson")
+                        debugger
+                        var msg=jsonRs.msg;
+                        if(msg.includes("Access token expired")){
+                            layer.msg('登录过期', {icon: 2, time: 1500}, function () {
+                                location.replace('/login.html');
+                            }, 5000);
+                        }else if(msg.includes("Invalid access token")){
+                            layer.msg('您的账号在其他地方登陆,请重新登录或修改密码', {icon: 2, time: 1500}, function () {
+                                location.replace('/login.html');
+                            }, 5000);
+                        }
+                        
                         return;
                     } else if (jsonRs.code == 403) {
                         layer.msg('没有权限', {icon: 2});
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js
index cbd2e25..01f71bd 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/module/apiUrl.js
@@ -1,6 +1,7 @@
 // var my_api_server_url = 'http://zuul.kidgrow.com/';
-  // var my_api_server_url = 'http://192.168.2.240:8888/';
-var my_api_server_url = 'http://127.0.0.1:8888/';
+  var my_api_server_url = 'http://192.168.2.240:8888/';
+// var my_api_server_url = 'http://127.0.0.1:8888/';
 // var my_api_server_url = 'http://uat-zuul.kidgrow.cloud/';
+// var my_api_server_url = 'https://zuul.kidgrow.cloud/';
 //var my_api_server_url = 'http://123.57.164.62:8888/';
 
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/console.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/console.html
index efeaf5b..0f9a8ef 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/console.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/console.html
@@ -168,6 +168,22 @@
                 </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="aiphoto" 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="report" style="height:300px"></div>
+                    </div>
+                </div>
+            </div>
+        </div>
     </div>
 
     <script type="text/javascript">
@@ -220,8 +236,8 @@
                     }
                 }, "get");
             }
-                        //加载套餐使用图表
-                        var loadContractChart = function () {
+            //加载套餐使用图表
+            var loadContractChart = function () {
                 var chartcontract = echarts.init(document.getElementById('contract'));
                 admin.req("api-opration/productorderdetail/proCountChart", {}, function (data) {
                     if (0 === data.code) {
@@ -314,6 +330,121 @@
                 }, "get");
             }
 
+            //加载报告图表
+            var loadreportChart = function (dataType) {
+                var nowYear = new Date().getFullYear();
+                var apiUrl =
+                    "api-bicenter/statisticalmonthlydata/findList?itemCode=3201&page=1&limit=12&startYearMonth=" +
+                    nowYear + "01&endYearMonth=" + nowYear + "12";
+                if (dataType == "1") {
+                    apiUrl =
+                        "api-bicenter/statisticalyearlydata/findList?itemCode=3201&page=1&limit=10&startYear=" +
+                        nowYear - 5 + "&endYear=" + nowYear;
+                }
+                var chartreport = echarts.init(document.getElementById('report'));
+                admin.req(apiUrl, {}, 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].itemName);
+                                if (dataType == "1") {
+                                    Ydata.push(listData[index].collectYear);
+                                } else if (dataType == "0") {
+                                    Ydata.push(listData[index].collectYearMonth);
+                                }
+                            }
+                            var optionchart = {
+                                title: {
+                                    text: 'H端报告量'
+                                },
+                                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
+                                }]
+                            };
+                            chartreport.setOption(optionchart, true);
+                        }
+                    }
+                }, "get");
+            }
+            //加载读片图表
+            var loadaiphotoChart = function (dataType) {
+                var nowYear = new Date().getFullYear();
+                var apiUrl =
+                    "api-bicenter/statisticalmonthlydata/findList?itemCode=1301&page=1&limit=12&startYearMonth=" +
+                    nowYear + "01&endYearMonth=" + nowYear + "12";
+                if (dataType == "1") {
+                    apiUrl =
+                        "api-bicenter/statisticalyearlydata/findList?itemCode=1301&page=1&limit=10&startYear=" +
+                        nowYear - 5 + "&endYear=" + nowYear;
+                }
+                var chartaiphoto = echarts.init(document.getElementById('aiphoto'));
+                admin.req(apiUrl, {}, 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].itemName);
+                                if (dataType == "1") {
+                                    Ydata.push(listData[index].collectYear);
+                                } else if (dataType == "0") {
+                                    Ydata.push(listData[index].collectYearMonth);
+                                }
+                            }
+                            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
+                                }]
+                            };
+                            chartaiphoto.setOption(optionchart, true);
+                        }
+                    }
+                }, "get");
+            }
+
             //先拿到当前登录用户的信息
             var nowUser = config.getUser();
             if (!strUtil.isEmpty(nowUser)) {
@@ -360,6 +491,8 @@
                         $("#ht_doctor").html(counts);
                         loadContractChart();
                         loadProductChart();
+                        loadreportChart(0);
+                        loadaiphotoChart(0);
                     } else if (element.code == "opration") {
                         //正式医院
                         loadHospitalChart(0);
@@ -415,6 +548,8 @@
                         loadDoctorChart(2);
                         loadContractChart();
                         loadProductChart();
+                        loadreportChart(0);
+                        loadaiphotoChart(0);
                     }
                 }
             }
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html
index ba26922..f1f730f 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html
@@ -233,7 +233,7 @@
                     });
                     // 回显user数据
                     var doctor = admin.getTempData('t_doctor');
-                    if (doctor.roles) {
+                    if (doctor!=null&&doctor.roles) {
                         formSelects.value('roleId', doctor.roles);
                     }
 
@@ -252,7 +252,7 @@
 
             // 正则验证格式
             eval("var reg = /^1[34578]\\d{9}$/;");
-            var flag=RegExp(reg).test(content)
+            var flag = RegExp(reg).test(content)
             return flag;
         }
         //判断用户名是否被使用
@@ -282,7 +282,6 @@
         // 表单提交事件
         form.on('submit(user-form-submit)', function (data) {
             layer.load(2);
-            debugger
             data.field.hospitalId = $("#hospitalId").val();
             if (data.field.roleId != null && data.field.roleId != "") {
                 data.field.roles = data.field.roleId.split(',');
@@ -367,7 +366,7 @@
         //职称添加数据
         var getZhiCheng = function () {
             admin.req('api-user/sysdictionaries/findAll', JSON.stringify({
-                dictionariesClassId: "1248150699682988034"
+                dictionariesClassId: "DOCTOR_RANK"
             }), function (data) {
                 layer.closeAll('loading');
                 if (0 === data.code) {
@@ -459,7 +458,7 @@
             $("#username").blur(function () {
                 username_is_usered("username");
             })
-           
+
             //医生类型的选择事件
             // form.on('select(doctorType)', function (data) {
             //     // console.log("eeeeeeeeeeeeeeeee");
@@ -476,14 +475,13 @@
             // })
         };
         $("#doctorTel-add").blur(function () {
-                $("#username").val($("#doctorTel-add").val())
-                var doctorTel_add = $("#doctorTel-add").val();
-                debugger
-                if (!validatorTel(doctorTel_add)) {
-                    layer.msg("请输入正确的手机号");
-                }
-                username_is_usered("username");
-            })
+            $("#username").val($("#doctorTel-add").val())
+            var doctorTel_add = $("#doctorTel-add").val();
+            if (!validatorTel(doctorTel_add)) {
+                layer.msg("请输入正确的手机号");
+            }
+            username_is_usered("username");
+        })
         //自动完成-医院名称
         autocomplete.render({
             elem: $('#hospitalName')[0],
@@ -502,28 +500,39 @@
         form.on('select(doctorType)', function (data) {
             var doctor = admin.getTempData('t_doctor');
             var doctorType = $('#doctorType').val();
-            if (doctor.doctorType == 2 && doctorType == 2) {
-                $(".account").hide();
-                $("#roleId_div").hide()
-            } else if (doctor.doctorType == 2 && doctorType != 2) {
-                $(".account").show();
-                $("#password_div").show();
-                $("#passwordSure_div").show();
-                $("#roleId_div").show()
-                if (doctor.username == null) {
-                    $("#username").val(doctor.doctorTel);
-                    form.render();
+            if (doctor == null) {
+                if (doctorType != 2) {
+                    $(".account").show();
+                    $("#password_div").show();
+                    $("#passwordSure_div").show();
+                    $("#roleId_div").show()
+                }else{
+                    $(".account").hide();
+                    $("#roleId_div").hide()
                 }
-            } else if (doctor.doctorType != 2 && doctorType != 2) {
-                $(".account").show();
-                $("#password_div").hide();
-                $("#passwordSure_div").hide();
-                $("#roleId_div").show()
-            } else if (doctor.doctorType != 2 && doctorType == 2) {
-                $(".account").hide();
-                $("#roleId_div").hide()
+            } else {
+                if (doctor.doctorType == 2 && doctorType == 2) {
+                    $(".account").hide();
+                    $("#roleId_div").hide()
+                } else if (doctor.doctorType == 2 && doctorType != 2) {
+                    $(".account").show();
+                    $("#password_div").show();
+                    $("#passwordSure_div").show();
+                    $("#roleId_div").show()
+                    if (doctor.username == null) {
+                        $("#username").val(doctor.doctorTel);
+                        form.render();
+                    }
+                } else if (doctor.doctorType != 2 && doctorType != 2) {
+                    $(".account").show();
+                    $("#password_div").hide();
+                    $("#passwordSure_div").hide();
+                    $("#roleId_div").show()
+                } else if (doctor.doctorType != 2 && doctorType == 2) {
+                    $(".account").hide();
+                    $("#roleId_div").hide()
+                }
             }
-
         })
         //数据的回显
         var doctor = admin.getTempData('t_doctor');

--
Gitblit v1.8.0