Forráskód Böngészése

Merge branch 'master' into debug

Karsa 5 hónapja
szülő
commit
ae82f3a33b

+ 8 - 0
src/api/http.js

@@ -2,6 +2,9 @@
 import axios from "axios";
 import bus from "./bus.js";
 import {router} from '../main'
+import storage from '@/utils/storage'
+import { setLoginCookieInfo } from '@/utils/loginTransfer'
+
 let store=null
 // 异步加载store模块 不异步加载的话,@/api/modules/oldApi.js的导入导出写法会有问题
 import('@/vuex/index.js')
@@ -21,6 +24,9 @@ axios.interceptors.request.use(
     if (auth) {
       config.headers.Authorization = auth;
     }
+    if(storage.getCookie('ai_token')) {
+      config.headers.CookieVal = storage.getCookie('ai_token')
+    }
     const uuid = localStorage.getItem("uuid") || "";
     config.headers.Uuid = uuid;
     config.headers.AccessToken = uuid + "--zheshiyigename";
@@ -92,6 +98,8 @@ function checkStatus(response,closableErrMsg) {
       loginOutCount++
       // localStorage.setItem("auth", "")
       
+    }else if(res.Ret === 4014) {
+      return setLoginCookieInfo(res.Data)
     }
     return res;
   } else {

+ 5 - 0
src/api/modules/oldApi.js

@@ -346,6 +346,11 @@ const report2PdfImg=params=>{
 	return http.post('/smart_report/get_pdf_url',params)
 }
 
+/* 据cookie ai_token静默登录 */
+export const loginTransferByCookie = params => {
+	return http.post('/user_login/username_login',params)
+}
+
 export {
 	userLogin,
 	modifyPwd,

+ 9 - 0
src/main.js

@@ -6,6 +6,7 @@ import VueRouter from "vue-router";
 import stores from "./vuex";
 import Vuex from "vuex";
 import routes from "./routes/routes";
+import storage from '@/utils/storage'
 
 import "font-awesome/css/font-awesome.min.css";
 import "@/utils/dialog.js";
@@ -143,6 +144,9 @@ Vue.use(VueMasonryPlugin);
 import * as permissionBtn from "@/utils/buttonConfig";
 Vue.prototype.permissionBtn = permissionBtn
 
+
+import { transferLoginByCookie } from '@/utils/loginTransfer'
+
 // flat
 Array.prototype.flat = function (count) {
   let c = count || 1;
@@ -201,6 +205,11 @@ router.beforeEach(async(to, from, next) => {
   } */
 
   let auth = localStorage.getItem("auth") || false;
+  if(!auth && storage.getCookie('ai_token')) {
+    transferLoginByCookie();
+    return
+  }
+
   if (to.path != "/login" && to.path!='/temppage' &&to.path!='/fogetpassword' && !auth) {
     next('/login')
     return false;

+ 32 - 0
src/utils/loginTransfer.js

@@ -0,0 +1,32 @@
+/* 各个子系统cookie共享实现免登录 */
+import storage from '@/utils/storage'
+import { loginTransferByCookie } from '@/api/modules/oldApi'
+import {router} from '../main'
+
+// 有cookie换token免登录
+export async function transferLoginByCookie() {
+  const res = await loginTransferByCookie({AdminName: storage.getCookie('ai_token')})
+  if(res.Ret !== 200) return
+  setLoginCookieInfo(res.Data)
+}
+
+export function setLoginCookieInfo(data) {
+  const {  Authorization,RealName,RoleTypeCode,SysRoleTypeCode,ProductName,Authority,AdminId,AdminName } = data;
+  localStorage.setItem("auth", Authorization);
+  localStorage.setItem("userName", RealName);
+  localStorage.setItem("Role", RoleTypeCode);
+  localStorage.setItem("RoleIdentity", SysRoleTypeCode);
+  localStorage.setItem("RoleType", ProductName);
+  localStorage.setItem("ManageType", Authority);
+  localStorage.setItem("AdminId", AdminId);
+  localStorage.setItem("AdminName", AdminName);
+  localStorage.setItem("loginTime",new Date())
+  storage.setCookie('ai_token',AdminName)
+
+  if(['/login','/fogetpassword'].includes(location.pathname)) {
+    router.replace({path:'/home'})
+  }else {
+    window.location.reload();
+  }
+  
+}

+ 26 - 1
src/utils/storage.js

@@ -17,5 +17,30 @@ export default {
 
 			return JSON.parse(value);
 		}
-	}
+	},
+
+	setCookie: function(key,value,hours=8) {
+		let expires = '';
+    if (hours) {
+        let date = new Date();
+        date.setTime(date.getTime() + (hours * 60 * 60 * 1000));
+        expires = ';expires=' + date.toUTCString();
+    }
+    document.cookie = key + '=' + value + expires + (';path=/');
+	},
+
+	getCookie: function(name) {
+			var cookieArr = document.cookie.split(';');
+			for (var i = 0; i < cookieArr.length; i++) {
+					var cookiePair = cookieArr[i].split('=');
+					// 去掉前后空格
+					var cookieName = cookiePair[0].trim();
+					var cookieValue = cookiePair[1];
+					if (cookieName === name) {
+							return cookieValue;
+					}
+			}
+			// 没有找到对应的Cookie
+			return null;
+	},
 }

+ 2 - 1
src/views/Home.vue

@@ -434,7 +434,7 @@ import PwdDlg from "@/components/pwdDlg.vue";
 import questionMsgDia from "@/components/questionMsgDia.vue";
 import questionnaireDia from "../components/questionnaireDia.vue";
 import EventBus from "@/api/bus.js";
-
+import storage from '@/utils/storage'
 import { recordActiveLoginFun, loginEndCalc } from "@/utils/TimeOnPage.js"
 import NotificationMsg from "../components/notificationMsg.vue";
 export default {
@@ -973,6 +973,7 @@ export default {
           localStorage.setItem("ManageType", "");
           localStorage.setItem("RoleIdentity", "");
           localStorage.setItem("loginTime", "");
+          storage.setCookie('ai_token','',-1)
         }, 10);
 
       }).catch(() => { });

+ 2 - 1
src/views/Login.vue

@@ -164,7 +164,7 @@
 import { userLogin, departInterence,recordActiveLogin } from "@/api/api.js";
 import http from "@/api/http.js";
 import md5 from "@/utils/md5.js";
-
+import storage from '@/utils/storage'
 import EmailModel from "./login_manage/EmailModel.vue";
 import ForgetPassModel from "./login_manage/ForgetPassModel.vue";
 import MobileModel from "./login_manage/MobileModel.vue";
@@ -604,6 +604,7 @@ export default {
             localStorage.setItem("AdminId", res.Data.AdminId);
             localStorage.setItem("AdminName", res.Data.AdminName);
             localStorage.setItem("loginTime",new Date())
+            storage.setCookie('ai_token',res.Data.AdminName)
             // 清除最近登录时长
             recordActiveLogin({ActiveTime:0}).then(res=>{
                 if(res.Ret!==200) return

+ 1 - 1
src/views/dataEntry_manage/databaseComponents/openDialog.vue

@@ -228,7 +228,7 @@ export default {
 		
 		/* 获取目录结构 */
 		getMenu() {
-			dataBaseInterface.menuListV3().then(res => {
+			dataBaseInterface.menuListV3({ClassifyType: this.isBasicBase?0:2}).then(res => {
 				if(res.Ret === 200) {
 					this.filterNodes(res.Data.AllNodes||[]);
 					this.options = res.Data.AllNodes || [];