yanghao 4 недель назад
Родитель
Сommit
570755323e
6 измененных файлов с 60 добавлено и 8 удалено
  1. 0 3
      components.d.ts
  2. 9 0
      src/api/user.ts
  3. 40 4
      src/components/home/CardItem.vue
  4. 1 1
      src/components/home/header.vue
  5. 3 0
      src/stores/useUserStore.ts
  6. 7 0
      vite.config.ts

+ 0 - 3
components.d.ts

@@ -12,13 +12,11 @@ export {}
 declare module 'vue' {
 declare module 'vue' {
   export interface GlobalComponents {
   export interface GlobalComponents {
     CardItem: typeof import('./src/components/home/CardItem.vue')['default']
     CardItem: typeof import('./src/components/home/CardItem.vue')['default']
-    CodeLogin: typeof import('./src/components/login/codeLogin.vue')['default']
     ElButton: typeof import('element-plus/es')['ElButton']
     ElButton: typeof import('element-plus/es')['ElButton']
     ElCard: typeof import('element-plus/es')['ElCard']
     ElCard: typeof import('element-plus/es')['ElCard']
     ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
     ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
     ElCollapse: typeof import('element-plus/es')['ElCollapse']
     ElCollapse: typeof import('element-plus/es')['ElCollapse']
     ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
     ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
-    ElDialog: typeof import('element-plus/es')['ElDialog']
     ElDrawer: typeof import('element-plus/es')['ElDrawer']
     ElDrawer: typeof import('element-plus/es')['ElDrawer']
     ElDropdown: typeof import('element-plus/es')['ElDropdown']
     ElDropdown: typeof import('element-plus/es')['ElDropdown']
     ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
     ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
@@ -29,7 +27,6 @@ declare module 'vue' {
     ElTag: typeof import('element-plus/es')['ElTag']
     ElTag: typeof import('element-plus/es')['ElTag']
     Footer: typeof import('./src/components/home/Footer.vue')['default']
     Footer: typeof import('./src/components/home/Footer.vue')['default']
     Header: typeof import('./src/components/home/header.vue')['default']
     Header: typeof import('./src/components/home/header.vue')['default']
-    Liu: typeof import('./src/components/liu.vue')['default']
     RouterLink: typeof import('vue-router')['RouterLink']
     RouterLink: typeof import('vue-router')['RouterLink']
     RouterView: typeof import('vue-router')['RouterView']
     RouterView: typeof import('vue-router')['RouterView']
   }
   }

+ 9 - 0
src/api/user.ts

@@ -38,3 +38,12 @@ export const login = (data: UserLoginVO) => {
     data,
     data,
   });
   });
 };
 };
+
+// SSO登录
+export const ssoLogin = (data: any) => {
+  return request.post({
+    url: "/admin-api/system/auth/portal/login",
+
+    data,
+  });
+};

+ 40 - 4
src/components/home/CardItem.vue

@@ -63,7 +63,12 @@
 <script setup lang="ts">
 <script setup lang="ts">
 import { ref } from "vue";
 import { ref } from "vue";
 import { useRouter } from "vue-router";
 import { useRouter } from "vue-router";
-import { motion } from "motion-v";
+import { ssoLogin } from "@/api/user";
+
+import { useUserStore } from "@/stores/useUserStore";
+import { getAccessToken } from "@/utils/auth";
+const userStore = useUserStore();
+import axios from "axios";
 
 
 const router = useRouter();
 const router = useRouter();
 
 
@@ -91,15 +96,46 @@ const goDetail = () => {
 };
 };
 
 
 // 处理查看按钮点击事件
 // 处理查看按钮点击事件
-const handleView = (item: Item) => {
+const handleView = async (item: Item) => {
   console.log("查看", item);
   console.log("查看", item);
   // 如果有自定义路径,则跳转到指定路径
   // 如果有自定义路径,则跳转到指定路径
 
 
   if (item.label === "OA办公系统") {
   if (item.label === "OA办公系统") {
-    window.open("https://yfoa.keruioil.com", "_blank");
+    if (userStore.getUser.username && getAccessToken()) {
+      const res = axios
+        .post(
+          "/api/oa",
+          {
+            appid: "d4a44f9d-e5d7-41d5-a582-fc1efcc936c4",
+            loginid: userStore.getUser.username,
+          },
+          {
+            headers: {
+              "Content-Type": `application/x-www-form-urlencoded`,
+            },
+          }
+        )
+        .then((res) => {
+          if (res.status === 200) {
+            window.open(
+              "https://yfoa.keruioil.com/wui/index.html?ssoToken=" + res.data,
+              "_blank"
+            );
+          }
+        });
+    } else {
+      window.open("https://yfoa.keruioil.com", "_blank");
+    }
   }
   }
   if (item.label === "设备管理系统 (PMS)") {
   if (item.label === "设备管理系统 (PMS)") {
-    window.open("https://aims.deepoil.cc", "_blank");
+    if (userStore.getUser.username && getAccessToken()) {
+      window.open(
+        "http://localhost:8080?sso=1&&username=" + userStore.getUser.username,
+        "_blank"
+      );
+    } else {
+      window.open("http://localhost:8080", "_blank");
+    }
   }
   }
   if (item.label === "中航北斗智慧管理系统") {
   if (item.label === "中航北斗智慧管理系统") {
     window.open("https://zhbdgps.cn", "_blank");
     window.open("https://zhbdgps.cn", "_blank");

+ 1 - 1
src/components/home/header.vue

@@ -147,7 +147,7 @@
           </template>
           </template>
           <template v-else>
           <template v-else>
             <el-button type="primary" class="bg-[#0050b3]!" @click="login"
             <el-button type="primary" class="bg-[#0050b3]!" @click="login"
-              >登录 / 注册</el-button
+              >登录</el-button
             >
             >
           </template>
           </template>
         </div>
         </div>

+ 3 - 0
src/stores/useUserStore.ts

@@ -12,6 +12,7 @@ interface UserVO {
   avatar: string;
   avatar: string;
   nickname: string;
   nickname: string;
   deptId: number;
   deptId: number;
+  username: string;
 }
 }
 
 
 interface UserInfoVO {
 interface UserInfoVO {
@@ -32,6 +33,7 @@ export const useUserStore = defineStore("admin-user", {
       avatar: "",
       avatar: "",
       nickname: "",
       nickname: "",
       deptId: 0,
       deptId: 0,
+      username: "",
     },
     },
   }),
   }),
   getters: {
   getters: {
@@ -94,6 +96,7 @@ export const useUserStore = defineStore("admin-user", {
         avatar: "",
         avatar: "",
         nickname: "",
         nickname: "",
         deptId: 0,
         deptId: 0,
+        username: "",
       };
       };
     },
     },
   },
   },

+ 7 - 0
vite.config.ts

@@ -14,6 +14,13 @@ export default defineConfig({
   server: {
   server: {
     host: "0.0.0.0", // 监听所有网络接口
     host: "0.0.0.0", // 监听所有网络接口
     port: 5173, // 可选:指定端口
     port: 5173, // 可选:指定端口
+    proxy: {
+      "/api/oa": {
+        target: "https://yfoa.keruioil.com/ssologin/getToken",
+        changeOrigin: true,
+        rewrite: (path) => path.replace(/^\/api\/oa/, ""),
+      },
+    },
   },
   },
   base: "./",
   base: "./",
   plugins: [
   plugins: [