yanghao 1 неделя назад
Родитель
Сommit
46969a3457

+ 8 - 0
src/api/user.ts

@@ -48,6 +48,14 @@ export const ssoLogin = (data: any) => {
   });
 };
 
+export const zentaoSsoLogin = (data: any) => {
+  return request.post({
+    url: "/admin-api/system/auth/zentaoSsoToken",
+    headers: { "Content-Type": "application/json" },
+    data,
+  });
+};
+
 export const getUnreadNotifyMessageCount = async () => {
   return await request.get({
     url: "/admin-api/system/notify-message/get-unread-count",

BIN
src/assets/images/jishuimage.png


+ 22 - 1
src/components/home/CardItem.vue

@@ -75,7 +75,7 @@
 <script setup lang="ts">
 import { ref } from "vue";
 import { useRouter } from "vue-router";
-import { ssoLogin, getMCSsoToken } from "@/api/user";
+import { ssoLogin, getMCSsoToken, zentaoSsoLogin } from "@/api/user";
 import { useUserStore } from "@/stores/useUserStore";
 import { getAccessToken } from "@/utils/auth";
 
@@ -106,6 +106,7 @@ import videoimage from "@/assets/images/video.png"; // ai智能体
 import youimage from "@/assets/images/youcnag.png"; // ai智能体
 import fileagent from "@/assets/images/fileagent.png";
 import zhiduagent from "@/assets/images/zhiduagent.png";
+import jishuimage2 from "@/assets/images/jishuimage.png";
 
 const userStore = useUserStore();
 const router = useRouter();
@@ -160,6 +161,7 @@ const iconMap: Record<string, string> = {
   数字油藏: youimage,
   工艺文件智能体: fileagent,
   集团制度智能体: zhiduagent,
+  研发需求管理: jishuimage2,
 };
 const isSpecialSystem = (label: string) => {
   const specialSystems = [
@@ -318,6 +320,25 @@ const handleView = async (item: Item) => {
       router.push({ path: "/login" });
     }
   }
+
+  if (item.label === "研发需求管理") {
+    if (userStore.getUser.username && getAccessToken()) {
+      const res = await zentaoSsoLogin({
+        username: userStore.getUser.username,
+      });
+
+      console.log("禅道sso登录结果:", res);
+
+      if (res) {
+        window.open(
+          `http://project.deepoil.cc/zentao/api.php?m=user&f=apilogin&account=${res.jobNumber}&code=${res.code}&time=${res.timestamp}&token=${res.token}`,
+          "_blank",
+        );
+      }
+    } else {
+      router.push({ path: "/login" });
+    }
+  }
 };
 </script>
 

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

@@ -246,7 +246,35 @@
           <li><a class="block py-2">开源社区</a></li>
         </ul>
         <div class="flex items-center gap-3 mt-3">
-          <el-button type="primary" class="flex-1 bg-[#0050b3]!" @click="login"
+          <template v-if="isLoggedIn">
+            <el-dropdown @command="onUserCommand" trigger="click">
+              <span class="flex items-center gap-2 cursor-pointer pr-2">
+                <div class="avatar-wrapper">
+                  <img
+                    :src="userAvatar || person"
+                    alt="avatar"
+                    class="w-8 h-8 rounded-full avatar-image"
+                  />
+                </div>
+                <span class="text-sm text-[#303133]">{{ userName }}</span>
+              </span>
+              <template #dropdown>
+                <el-dropdown-menu>
+                  <el-dropdown-item command="profile">
+                    <span class="pl-2">个人中心</span>
+                  </el-dropdown-item>
+                  <el-dropdown-item command="logout">
+                    <span class="pl-2">退出登录</span>
+                  </el-dropdown-item>
+                </el-dropdown-menu>
+              </template>
+            </el-dropdown>
+          </template>
+          <el-button
+            v-else
+            type="primary"
+            class="flex-1 bg-[#0050b3]!"
+            @click="login"
             >登录</el-button
           >
         </div>

+ 1 - 0
src/views/index.vue

@@ -124,6 +124,7 @@ const cards: Card[] = [
       { label: "组织资产管理" },
       { label: "风控合规管理" },
       { label: "战略解码与执行" },
+      { label: "研发需求管理" },
     ],
   },
   {