Преглед изворни кода

Merge branch 'master' of http://182.92.126.35:3000/hrx/mky-vent-base

lxh пре 8 месеци
родитељ
комит
b2311011c4

+ 4 - 2
public/js/config.js

@@ -11,5 +11,7 @@ const History_Type = {
 const VENT_PARAM = {
   // simulatedPassword: '123456', //(simulatedPassword 为空时有密码输入框弹出,不为空时不弹出密码输入框,无需输入密码)
   simulatedPassword: '',
-  showReport: true
-}
+  showReport: true,
+  isoOpenSso: 'false'
+}
+// export { VUE_APP_URL, History_Type, VENT_PARAM }

+ 3 - 1
src/hooks/setting/index.ts

@@ -1,4 +1,5 @@
 import type { GlobConfig } from '/#/config';
+// import { VENT_PARAM } from '../../../public/js/config';
 
 import { getAppEnvConfig, getHomePath } from '/@/utils/env';
 // 读取ip地址
@@ -86,7 +87,8 @@ export const useGlobSetting = (): Readonly<GlobConfig> => {
     domainUrl: domainUrl,
     apiUrl: VITE_GLOB_API_URL,
     shortName: VITE_GLOB_APP_SHORT_NAME,
-    openSso: VITE_GLOB_APP_OPEN_SSO,
+    // openSso: VITE_GLOB_APP_OPEN_SSO,
+    openSso: VENT_PARAM.isoOpenSso || 'false',
     openQianKun: VITE_GLOB_APP_OPEN_QIANKUN,
     casBaseUrl: VITE_GLOB_APP_CAS_BASE_URL,
     urlPrefix: VITE_GLOB_API_URL_PREFIX,

+ 7 - 1
src/hooks/web/useSso.ts

@@ -9,9 +9,10 @@ const openSso = globSetting.openSso;
 export function useSso() {
   const locationUrl = 'http://' + window.location.host + '/';
   /**
-   * 单点登录
+   * 单点登录,返回是否需要跳转到单点登录页
    */
   async function ssoLogin() {
+    let redirect = false;
     if (openSso == 'true') {
       const token = getToken();
       const ticket = getUrlParam('ticket');
@@ -22,21 +23,26 @@ export function useSso() {
             service: locationUrl,
           })
             .then((res) => {
+              redirect = false;
               const userStore = useUserStore();
               userStore.setToken(res.token);
               return userStore.afterLoginAction(true, {});
             })
             .catch(() => {
+              redirect = true;
               window.location.href = globSetting.casBaseUrl + '/login?service=' + encodeURIComponent(locationUrl);
             });
         } else {
           if (window.location.search == '?type=noCas') {
+            redirect = false;
           } else {
             window.location.href = globSetting.casBaseUrl + '/login?service=' + encodeURIComponent(locationUrl);
+            redirect = true;
           }
         }
       }
     }
+    return redirect;
   }
 
   /**

+ 3 - 3
src/layouts/default/header/components/user-dropdown/DepartSelect.vue

@@ -151,7 +151,7 @@
    * 提交数据
    */
   async function handleSubmit() {
-    if (unref(isMultiTenant) && unref(tenantSelected)==null) {
+    if (unref(isMultiTenant) && unref(tenantSelected) == null) {
       validate_status.value = 'error';
       return false;
     }
@@ -165,7 +165,7 @@
           userStore.setTenant(unref(tenantSelected));
         }
         createMessage.success('切换成功');
-        
+
         //切换租户后要刷新首页
         window.location.reload();
       })
@@ -190,7 +190,7 @@
         const result = await selectDepart({
           username: userStore.getUserInfo.username,
           orgCode: unref(departSelected),
-          loginTenantId: unref(tenantSelected),
+          // loginTenantId: unref(tenantSelected),
         });
         if (result.userInfo) {
           const userInfo = result.userInfo;

+ 0 - 4
src/main.ts

@@ -19,7 +19,6 @@ import { setupGlobDirectives } from '/@/directives';
 import { setupI18n } from '/@/locales/setupI18n';
 import { registerGlobComp } from '/@/components/registerGlobComp';
 import { registerThirdComp } from '/@/settings/registerThirdComp';
-import { useSso } from '/@/hooks/web/useSso';
 // 注册online模块lib
 // import { registerPackages } from '/@/utils/monorepo/registerPackages';
 import { initModalWorker, initTHREE } from '/@/utils/threejs/main.worker';
@@ -52,9 +51,6 @@ async function bootstrap() {
   // 注册全局组件
   registerGlobComp(app);
 
-  //CAS单点登录
-  await useSso().ssoLogin();
-
   // 配置路由
   setupRouter(app);
 

+ 2 - 0
src/router/constant.ts

@@ -10,6 +10,8 @@ export const QIANKUN_ROUTE_OUTER_NAME = 'MicroAppOuter';
 
 export const AUTO_LOGIN_URL_QUERY = { key: 'auto-login', val: '1' };
 
+export const SKIP_SSO_URL_QUERY = { key: 'skipsso', val: '1' };
+
 // 暂时修改
 export const EXCEPTION_COMPONENT = () => import('/@/views/sys/exception/Exception.vue');
 // export const EXCEPTION_COMPONENT = () => import('/@/views/vent/monitorManager/mainFanMonitor/index.vue');

+ 15 - 7
src/router/guard/permissionGuard.ts

@@ -15,7 +15,8 @@ import { OAUTH2_THIRD_LOGIN_TENANT_ID } from '/@/enums/cacheEnum';
 import { useGlobSetting } from '/@/hooks/setting';
 
 import _ from 'lodash';
-import { AUTO_LOGIN_URL_QUERY } from '../constant';
+import { AUTO_LOGIN_URL_QUERY, SKIP_SSO_URL_QUERY } from '../constant';
+import { useSso } from '/@/hooks/web/useSso';
 
 const LOGIN_PATH = PageEnum.BASE_LOGIN;
 //auth2登录路由
@@ -82,17 +83,19 @@ export function createPermissionGuard(router: Router) {
         //退出登录进入此逻辑
         //如果进入的页面是login页面并且当前是OAuth2app环境,并且token为空,就进入OAuth2登录页面
         //update-begin---author:wangshuai ---date:20230224  for:[QQYUN-3440]新建企业微信和钉钉配置表,通过租户模式隔离------------
-        if (to.query.tenantId) {
-          setAuthCache(OAUTH2_THIRD_LOGIN_TENANT_ID, to.query.tenantId);
-        }
+        // if (to.query.tenantId) {
+        //   setAuthCache(OAUTH2_THIRD_LOGIN_TENANT_ID, to.query.tenantId);
+        // }
         next({ path: OAUTH2_LOGIN_PAGE_PATH });
         document.title = '登录';
+        ///
+
         //update-end---author:wangshuai ---date:20230224  for:[QQYUN-3440]新建企业微信和钉钉配置表,通过租户模式隔离------------
         return;
         //update-end---author:wangshuai ---date:20220629  for:[issues/I5BG1I]vue3不支持auth2登录------------
       }
-      // mountMicroApp(to.path);
       next();
+
       document.title = to.meta.title;
       return;
     }
@@ -101,12 +104,17 @@ export function createPermissionGuard(router: Router) {
     if (!token) {
       // You can access without permission. You need to set the routing meta.ignoreAuth to true
       if (to.meta.ignoreAuth) {
-        // mountMicroApp(to.path);
         next();
         document.title = to.meta.title;
         return;
       }
-      // query中要求自动登录的执行登录逻辑
+      // query如果没有明确要求跳过sso则执行sso登录
+      if (to.query[SKIP_SSO_URL_QUERY.key] !== SKIP_SSO_URL_QUERY.val) {
+        const redirectSso = await useSso().ssoLogin();
+        // 如果需要重定向到sso页面则取消路由导航
+        if (redirectSso) return;
+      }
+      // query中要求自动登录的执行自动登录
       if (to.query[AUTO_LOGIN_URL_QUERY.key] === AUTO_LOGIN_URL_QUERY.val) {
         const userStore = useUserStoreWithOut();
         await userStore.autoLogin({

+ 6 - 5
src/views/sys/login/LoginSelect.vue

@@ -138,11 +138,11 @@
        */
       function bizDepart(loginResult) {
         //如果登录接口返回了用户上次登录租户ID,则不需要重新选择
-        if(loginResult.userInfo?.orgCode && loginResult.userInfo?.orgCode!==''){
+        if (loginResult.userInfo?.orgCode && loginResult.userInfo?.orgCode !== '') {
           isMultiDepart.value = false;
           return;
         }
-        
+
         let multi_depart = loginResult.multi_depart;
         //0:无部门 1:一个部门 2:多个部门
         if (multi_depart == 0) {
@@ -165,11 +165,11 @@
        */
       function bizTenantList(loginResult) {
         //如果登录接口返回了用户上次登录租户ID,则不需要重新选择
-        if(loginResult.userInfo?.loginTenantId && loginResult.userInfo?.loginTenantId!==0){
+        if (loginResult.userInfo?.loginTenantId && loginResult.userInfo?.loginTenantId !== 0) {
           isMultiTenant.value = false;
           return;
         }
-        
+
         let tenantArr = loginResult.tenantList;
         if (Array.isArray(tenantArr)) {
           if (tenantArr.length === 0) {
@@ -225,7 +225,8 @@
           if (!unref(isMultiDepart) && !unref(isMultiTenant)) {
             resolve();
           } else {
-            let params = { orgCode: formState.orgCode,loginTenantId: formState.tenantId, username: unref(username) };
+            // let params = { orgCode: formState.orgCode, loginTenantId: formState.tenantId, username: unref(username) };
+            let params = { orgCode: formState.orgCode, username: unref(username) };
             defHttp.put({ url: '/sys/selectDepart', params }).then((res) => {
               if (res.userInfo) {
                 userStore.setUserInfo(res.userInfo);

+ 2 - 2
src/views/vent/home/configurable/configurable.api.ts

@@ -2,6 +2,7 @@ import { defHttp } from '/@/utils/http/axios';
 
 enum Api {
   list = '/ventanaly-device/safety/ventanalyDevice/homedata2',
+  getHomeData = '/ventanaly-device/safety/ventanalyDevice/homedata',
 }
 /**
  * 列表接口
@@ -9,5 +10,4 @@ enum Api {
  */
 export const list = (params) => defHttp.post({ url: Api.list, params });
 
-
-
+export const getHomeData = (params) => defHttp.post({ url: Api.getHomeData, params });