yanghao пре 2 недеља
родитељ
комит
d6632ba2af

BIN
src/assets/images/drive.png


BIN
src/assets/images/fileagent.png


BIN
src/assets/images/fm.png


BIN
src/assets/images/qhse.png


BIN
src/assets/images/think.png


BIN
src/assets/images/zhuqi.png


+ 2 - 5
src/components/home/header.vue

@@ -789,17 +789,14 @@ const userName = computed(() => userStore.user?.nickname || "");
 const languageOptions: Array<{ label: string; value: AppLocale }> = [
   { label: "中文", value: "zh" },
   { label: "English", value: "en" },
+  // 俄语
+  { label: "Russian", value: "ru" },
 ];
 const currentLocale = computed(() =>
   SUPPORTED_LOCALES.includes(locale.value as AppLocale)
     ? (locale.value as AppLocale)
     : "zh",
 );
-const currentLanguageLabel = computed(
-  () =>
-    languageOptions.find((item) => item.value === currentLocale.value)?.label ??
-    "中文",
-);
 
 // 是否有未读消息
 const hasUnreadMessages = computed(() => {

+ 4 - 1
src/i18n/index.ts

@@ -1,14 +1,17 @@
 import { createI18n, useI18n } from "vue-i18n";
 import zh from "./lang/zh.json";
 import en from "./lang/en.json";
+import ru from "./lang/ru.json";
 
 export const LOCALE_STORAGE_KEY = "yf-portal-locale";
-export const SUPPORTED_LOCALES = ["zh", "en"] as const;
+export const SUPPORTED_LOCALES = ["zh", "en", "ru"] as const;
 export type AppLocale = (typeof SUPPORTED_LOCALES)[number];
 
 const messages = {
   zh,
   en,
+  // 俄语
+  ru,
 };
 
 const getDefaultLocale = (): AppLocale => {

+ 52 - 2
src/i18n/lang/en.json

@@ -6,7 +6,12 @@
     "more": "More",
     "all": "All Tasks",
     "noMsg": "No new messages",
-     "markAll": "Mark All as Read"
+    "markAll": "Mark All as Read",
+    "loginRequired": "Please login to view",
+    "noNews": "No news available",
+    "loginTip": "Please scan the QR code with DingTalk to login",
+    "refresh": "Refresh",
+    "normal": "Normal"
   },
   "nav": {
     "title": "Smart Operation Platform",
@@ -23,7 +28,8 @@
    "flow": {
     "palceholder": "Please enter the task name to search",
     "todo":"My Pending",
-    "done":"My Completed"
+    "done":"My Completed",
+     "createPerson": "Create Person"
   },
    "home": {
     "red":"Red-headed Docs",
@@ -32,5 +38,49 @@
     "todoCenter":"Pending Tasks",
     "consult":"Consult",
     "consultTip":"Encountering system operation issues, need assistance"
+  },
+   "DigitalOperationPlatform": {
+    "title": "Operation",
+    "subTitle": "Strategic Insight",
+
+    "oa": "OA Office",
+    "crm": "Customer Management",
+    "ehr": "Human Resources",
+     "srm": "Supplier Management",
+     "mc":"Management Dashboard",
+     "pm": "Project Management",
+     "zhanlue": "Decoding&Execution",
+     "fm":"Financial Management",
+     "rd":"R&D Management",
+     "zuzhi":"Organizational Asset",
+     "fengxian":"Risk and Compliance",
+     "kaifa":"Development Requirements",
+     "hongpan":"Hongpan"
+  },
+  "command": {
+    "title": "Command",
+    "subTitle": "Collaboration",
+    "pms": "Equipment Management",
+    "qhse": "QHSE",
+    "zhonghang": "AVIC Beidou",
+    "lianyou":"Smart Connected Oil",
+    "zhuqi":"Smart Injection Gas",
+    "video": "Video Center(VCS)",
+    "zuanjing":"Smart Drilling",
+    "wms": "Warehouse Management",
+    "yalie": "Smart Fracturing",
+    "youcang":"Digital Oil Reservoir"
+  },
+  "ai": {
+    "title": "Chat BI",
+    "subTitle": "Data Intelligence",
+    "dataCenter": "Global Data Governance",
+    "juece": "Intelligent Decision-making",
+    "aimodel": "Industry AI Large Model",
+    "agent": "AI Agent",
+    "file": "Process Document Agent",
+    "rule": "Group System Agent",
+    "ask": "Intelligent Questioning",
+    "person": "Ruixiaozhi"
   }
 }

+ 85 - 0
src/i18n/lang/ru.json

@@ -0,0 +1,85 @@
+{
+  "common": {
+    "login": "Войти",
+    "logout": "Выйти",
+    "person": "",
+    "more": "Ещё",
+    "all": "Все задачи",
+    "noMsg": "Нет сообщений",
+    "markAll": "Все прочитать",
+    "loginRequired": "Войдите",
+    "noNews": "Нет новостей",
+    "loginTip": "Войдите по QR DingTalk",
+    "refresh": "Обновить",
+    "normal": "Ок"
+  },
+  "nav": {
+    "title": "Платформа бизнеса",
+    "home": "Главная",
+    "flow": "Процессы",
+    "drive": "Дашборд",
+    "report": "Отчёты"
+  },
+  "banner": {
+    "banner1": "Цифровизация для роста",
+    "banner2": "К своим целям!",
+    "banner3": "Платформа для совместной работы"
+  },
+  "flow": {
+    "palceholder": "Поиск процессов/приложений",
+    "todo": "Мои задачи",
+    "done": "Выполнено",
+    "createPerson": "Автор"
+  },
+  "home": {
+    "red": "Приказы",
+    "notice": "Объявления",
+    "news": "Новости",
+    "todoCenter": "Задачи",
+    "consult": "Помощь",
+    "consultTip": "Вопросы по работе системы"
+  },
+  "DigitalOperationPlatform": {
+    "title": "Oперации",
+    "subTitle": "Стратегия",
+    "oa": "Офис OA",
+    "crm": "CRM клиенты",
+    "ehr": "Кадры EHR",
+    "srm": "Поставщики SRM",
+    "mc": "Дашборд MC",
+    "pm": "Проекты PM",
+    "zhanlue": "Стратегия",
+    "fm": "Финансы FM",
+    "rd": "Разработки RD",
+    "zuzhi": "Активы компании",
+    "fengxian": "Риски и соответствие",
+    "kaifa": "Запросы на разработку",
+    "hongpan": "Хунпань"
+  },
+  "command": {
+    "title": "Yправления",
+    "subTitle": "Сотрудничество",
+    "pms": "Оборудование",
+    "qhse": "Качество и безопасность",
+    "zhonghang": "Бэйдоу Чжунхан",
+    "lianyou": "Умная нефтесеть",
+    "zhuqi": "Нагнетание газа",
+    "video": "Видео VCS",
+    "zuanjing": "Умное бурение",
+    "wms": "Склад WMS",
+    "yalie": "Гидроразрыв",
+    "youcang": "Цифровое месторождение"
+  },
+  "ai": {
+    "title": "Chat BI",
+    "subTitle": "AI решение",
+    "dataCenter": "Центр данных",
+    "juece": "ИИ-решения",
+    "aimodel": "Отраслевая ИИ-модель",
+    "agent": "ИИ-агенты",
+    "file": "Агент техдокументов",
+    "rule": "Агент регламентов",
+    "ask": "Вопрос по данным",
+    "person": "Руй Сяо Чжи"
+  }
+}

+ 54 - 3
src/i18n/lang/zh.json

@@ -5,8 +5,13 @@
     "person": "个人中心",
     "more": "更多",
     "all": "全部任务",
-     "noMsg": "暂无新消息",
-     "markAll": "全部标为已读"
+    "noMsg": "暂无新消息",
+    "markAll": "全部标为已读",
+    "loginRequired": "登录后查看",
+    "noNews": "暂无新闻",
+    "loginTip": "请使用钉钉扫描二维码登录",
+    "refresh": "刷新",
+    "normal": "正常"
   },
   "nav": {
     "title": "智慧经营平台",
@@ -23,7 +28,8 @@
   "flow": {
     "palceholder": "搜索应用、流程",
     "todo":"我的待办",
-    "done":"我的已办"
+    "done":"我的已办",
+    "createPerson": "创建人"
   },
   "home": {
     "red":"红头文件",
@@ -32,5 +38,50 @@
     "todoCenter":"待办中心",
     "consult":"立即咨询",
     "consultTip":"遇到系统操作问题,需要帮助"
+  },
+  "DigitalOperationPlatform": {
+    "title": "数字化运营平台",
+    "subTitle": "高效协同 · 战略洞察",
+    
+    "oa": "OA办公",
+    "crm": "CRM客户管理",
+    "ehr": "人力资源(EHR)",
+     "srm": "供应商管理(SRM)",
+     "mc":"经营驾驶舱(MC)",
+     "pm": "项目管理(PM)",
+     "zhanlue": "战略解码与执行",
+     "fm":"财务管理(FM)",
+     "rd":"技术研发管理(RD)",
+     "zuzhi":"组织资产管理",
+     "fengxian":"风险合规管理",
+     "kaifa":"开发需求管理",
+     "hongpan":"鸿盘"
+  },
+  "command": {
+    "title": "智慧指挥平台",
+    "subTitle": "高效协同 · 战略洞察",
+    "pms": "设备管理(PMS)",
+    "qhse": "质量安全管理(QHSE)",
+    "zhonghang": "中航北斗",
+    "lianyou":"智慧连油",
+    "zhuqi":"智慧注气",
+    "video": "视频中心(VCS)",
+    "zuanjing":"智能钻井",
+    "wms": "仓储管理(WMS)",
+    "yalie": "智慧压裂",
+    "youcang":"数字油藏"
+  },
+  "ai": {
+    "title": "Chat BI平台",
+    "subTitle": "数据智能 · 决策驱动",
+    "dataCenter": "全局数据治理(数据中台)",
+    "juece": "智能决策",
+    "aimodel": "行业AI大模型",
+    "agent": "AI智能体(智能交互)",
+    "file": "工艺文件智能体",
+    "rule": "集团制度智能体",
+    "ask": "智能问数",
+    "person": "瑞小智(数字人)"
   }
+  
 }

+ 132 - 91
src/views/index.vue

@@ -204,19 +204,19 @@
           >
             <div class="platform-block__header">
               <img
-                v-if="section.title === '数字化运营平台'"
+                v-if="section.code === '数'"
                 src="../assets//images/icon.png"
                 alt=""
                 class="w-20 h-20"
               />
               <img
-                v-if="section.title === '智慧指挥平台'"
+                v-if="section.code === '智'"
                 src="../assets//images/icon2.png"
                 alt=""
                 class="w-20 h-20"
               />
               <img
-                v-if="section.title === 'Chat BI平台'"
+                v-if="section.code === 'AI'"
                 src="../assets//images/icon3.png"
                 alt=""
                 class="w-20 h-20"
@@ -299,14 +299,16 @@
                 v-if="!userStore.getUser.username"
                 class="flex h-full items-center justify-center"
               >
-                <div class="text-[#8a9ab0] pt-5">登录后查看</div>
+                <div class="text-[#8a9ab0] pt-5">
+                  {{ $t("common.loginRequired") }}
+                </div>
               </div>
 
               <div
                 v-if="!currentNoticeList.length && userStore.getUser.username"
                 class="flex h-[120px] items-center justify-center text-[#8a9ab0]"
               >
-                暂无数据
+                {{ $t("common.noMsg") }}
               </div>
               <article
                 v-if="userStore.getUser.username"
@@ -343,14 +345,16 @@
                 v-if="!userStore.getUser.username"
                 class="flex h-full items-center justify-center"
               >
-                <div class="text-[#8a9ab0] pt-10">登录后查看</div>
+                <div class="text-[#8a9ab0] pt-10">
+                  {{ $t("common.loginRequired") }}
+                </div>
               </div>
 
               <div
                 v-if="!oaTasks.length && userStore.getUser.username"
                 class="flex h-full items-center justify-center"
               >
-                <div class="text-[#8a9ab0] pt-10">暂无待办</div>
+                <div class="text-[#8a9ab0] pt-10">{{ $t("common.noMsg") }}</div>
               </div>
 
               <article
@@ -366,7 +370,8 @@
                       {{ task.requestName }}
                     </div>
                     <div class="mt-1 text-[12px] text-[#8a9ab0]">
-                      创建人:{{ task.creatorName }} · {{ task.createTime }}
+                      {{ $t("flow.createPerson") }}:{{ task.creatorName }} ·
+                      {{ task.createTime }}
                     </div>
                   </div>
                   <span
@@ -506,14 +511,18 @@
                 v-if="!userStore.getUser.username"
                 class="flex h-full items-center justify-center"
               >
-                <div class="text-[#8a9ab0] pt-10">登录后查看</div>
+                <div class="text-[#8a9ab0] pt-10">
+                  {{ $t("common.loginRequired") }}
+                </div>
               </div>
 
               <div
                 v-if="!newsList.length && userStore.getUser.username"
                 class="flex h-full items-center justify-center"
               >
-                <div class="text-[#8a9ab0] pt-10">暂无新闻</div>
+                <div class="text-[#8a9ab0] pt-10">
+                  {{ $t("common.noNews") }}
+                </div>
               </div>
               <article
                 v-for="news in newsList"
@@ -651,6 +660,7 @@ import banner2_white from "@/assets/images/banner2_white.png";
 import banner1_white from "@/assets/images/banner1_white.png";
 
 type PortalApp = {
+  key: string;
   label: string;
   icon?: string;
   image?: string;
@@ -693,88 +703,119 @@ const noticeTabs = computed<{ key: NoticeTabKey; label: string }[]>(() => [
   { key: "notice", label: t("home.notice") },
 ]);
 
-const portalSections: PortalSection[] = [
+const portalSections = computed<PortalSection[]>(() => [
   {
     code: "数",
-    title: "数字化运营平台",
-    subtitle: "高效协同 · 战略洞察",
+    title: t("DigitalOperationPlatform.title"),
+    subtitle: t("DigitalOperationPlatform.subTitle"),
     height: "220px",
     apps: [
       {
-        label: "OA办公",
+        key: "oa",
+        label: t("DigitalOperationPlatform.oa"),
         image: oaimage,
         active: true,
       },
-      { label: "客户管理(CRM)", image: crmimage },
-      { label: "人力资源(EHR)", image: ehrimage },
-      { label: "供应商管理(SRM)", image: scmimage },
-      { label: "经营驾驶舱(MC)", image: driveimage },
-      { label: "项目管理(PM)", image: pmimage },
-      { label: "战略解码与执行", image: zhanlueimage },
-      { label: "财务管理(FM)", image: erpimage },
-
-      { label: "技术研发管理(R&D)", image: jishuimage2 },
-
-      { label: "组织资产管理", image: zuzhiimage },
-      { label: "风控合规管理", image: safeimage },
-      { label: "开发需求管理", image: jishuimage2 },
-      { label: "鸿盘", image: hongpan },
+      { key: "crm", label: t("DigitalOperationPlatform.crm"), image: crmimage },
+      { key: "ehr", label: t("DigitalOperationPlatform.ehr"), image: ehrimage },
+      { key: "srm", label: t("DigitalOperationPlatform.srm"), image: scmimage },
+      { key: "mc", label: t("DigitalOperationPlatform.mc"), image: driveimage },
+      { key: "pm", label: t("DigitalOperationPlatform.pm"), image: pmimage },
+      {
+        key: "zhanlue",
+        label: t("DigitalOperationPlatform.zhanlue"),
+        image: zhanlueimage,
+      },
+      { key: "fm", label: t("DigitalOperationPlatform.fm"), image: erpimage },
+      {
+        key: "rd",
+        label: t("DigitalOperationPlatform.rd"),
+        image: jishuimage2,
+      },
+      {
+        key: "zuzhi",
+        label: t("DigitalOperationPlatform.zuzhi"),
+        image: zuzhiimage,
+      },
+      {
+        key: "fengxian",
+        label: t("DigitalOperationPlatform.fengxian"),
+        image: safeimage,
+      },
+      {
+        key: "kaifa",
+        label: t("DigitalOperationPlatform.kaifa"),
+        image: jishuimage2,
+      },
+      {
+        key: "hongpan",
+        label: t("DigitalOperationPlatform.hongpan"),
+        image: hongpan,
+      },
     ],
   },
   {
     code: "智",
-    title: "智慧指挥平台",
-    subtitle: "高效协同 · 战略洞察",
+    title: t("command.title"),
+    subtitle: t("command.subTitle"),
     height: "210px",
     apps: [
-      { label: "设备管理(PMS)", image: pmsimage, active: true },
-      { label: "质量安全管理(QHSE)", image: qhseimage },
-      { label: "中航北斗", image: zhonghangimage },
-
-      { label: "智慧连油", image: lianyouimage },
-      { label: "智慧注气", image: zhuqiimage },
-      { label: "视频中心(VCS)", image: videoimage },
-      { label: "智能钻井", image: zuanjingimage },
-      { label: "仓储管理(WMS)", image: wms },
-      { label: "智慧压裂", image: yalieimage },
-      { label: "数字油藏", image: youimage },
+      { key: "pms", label: t("command.pms"), image: pmsimage, active: true },
+      { key: "qhse", label: t("command.qhse"), image: qhseimage },
+      {
+        key: "zhonghang",
+        label: t("command.zhonghang"),
+        image: zhonghangimage,
+      },
+      { key: "lianyou", label: t("command.lianyou"), image: lianyouimage },
+      { key: "zhuqi", label: t("command.zhuqi"), image: zhuqiimage },
+      { key: "video", label: t("command.video"), image: videoimage },
+      { key: "zuanjing", label: t("command.zuanjing"), image: zuanjingimage },
+      { key: "wms", label: t("command.wms"), image: wms },
+      { key: "yalie", label: t("command.yalie"), image: yalieimage },
+      { key: "youcang", label: t("command.youcang"), image: youimage },
     ],
   },
   {
     code: "AI",
-    title: "Chat BI平台",
-    subtitle: "数据智能 · 决策驱动",
+    title: t("ai.title"),
+    subtitle: t("ai.subTitle"),
     height: "160px",
     apps: [
-      { label: "全局数据治理(数据中台)", image: dataimage, active: true },
-      { label: "智能决策", image: thinkimage },
-      { label: "行业AI大模型", image: aiimage },
-      { label: "AI智能体(智能交互)", image: agentimage },
-      { label: "工艺文件智能体", image: fileagent },
-      { label: "集团制度智能体", image: zhiduagent },
-      { label: "智能问数", image: ask },
-      { label: "瑞小智(数字人)", image: degitial },
+      {
+        key: "dataCenter",
+        label: t("ai.dataCenter"),
+        image: dataimage,
+        active: true,
+      },
+      { key: "juece", label: t("ai.juece"), image: thinkimage },
+      { key: "aimodel", label: t("ai.aimodel"), image: aiimage },
+      { key: "agent", label: t("ai.agent"), image: agentimage },
+      { key: "file", label: t("ai.file"), image: fileagent },
+      { key: "rule", label: t("ai.rule"), image: zhiduagent },
+      { key: "ask", label: t("ai.ask"), image: ask },
+      { key: "person", label: t("ai.person"), image: degitial },
     ],
   },
-];
-
-let boldLabes = ref([
-  "OA办公",
-  "客户管理(CRM)",
-  "设备管理(PMS)",
-  "中航北斗",
-  "智慧连油",
-  "质量安全管理(QHSE)",
-  "智慧注气",
-  "视频中心(VCS)",
-  "开发需求管理",
-  "经营驾驶舱(MC)",
-  "项目管理(PM)",
-  "鸿盘",
-  "智能钻井",
-  "供应商管理(SRM)",
-  "人力资源(EHR)",
-  "战略解码与执行",
+]);
+
+const boldLabes = computed(() => [
+  t("DigitalOperationPlatform.oa"),
+  t("DigitalOperationPlatform.crm"),
+  t("command.pms"),
+  t("command.zhonghang"),
+  t("command.lianyou"),
+  t("command.qhse"),
+  t("command.zhuqi"),
+  t("command.video"),
+  t("DigitalOperationPlatform.kaifa"),
+  t("DigitalOperationPlatform.mc"),
+  t("DigitalOperationPlatform.pm"),
+  t("DigitalOperationPlatform.hongpan"),
+  t("command.zuanjing"),
+  t("DigitalOperationPlatform.srm"),
+  t("DigitalOperationPlatform.ehr"),
+  t("DigitalOperationPlatform.zhanlue"),
 ]);
 
 const searchKeyword = ref("");
@@ -852,11 +893,11 @@ const filteredSections = computed(() => {
 
   // 如果没有关键词,返回原始数据
   if (!keyword) {
-    return portalSections;
+    return portalSections.value;
   }
 
   // 过滤逻辑:遍历每个板块,保留匹配的应用
-  return portalSections
+  return portalSections.value
     .map((section) => {
       if (!section.apps) return { ...section, apps: [] };
 
@@ -1041,15 +1082,15 @@ let ua2 = navigator.userAgent.toLowerCase();
 let isDing = ua2.includes("dingtalk") || ua2.includes("dingtalkwork");
 
 const handlePortalAppClick = async (app: PortalApp) => {
-  if (!app.label) return;
+  if (!app.key) return;
 
-  if (app.label === "项目管理(PM)") {
+  if (app.key === "pm") {
     protectedOpen(
       `${import.meta.env.VITE_PMS_URL}/portalLogin?username=${userStore.getUser.username}&source=yyhy`,
     );
   }
 
-  if (app.label === "OA办公") {
+  if (app.key === "oa") {
     if (userStore.getUser.username && getAccessToken()) {
       const ua = window.navigator.userAgent; // const ua = navigator.userAgent;
       const isDesktop =
@@ -1088,7 +1129,7 @@ const handlePortalAppClick = async (app: PortalApp) => {
     }
   }
 
-  if (app.label === "客户管理(CRM)") {
+  if (app.key === "crm") {
     if (userStore.getUser.username && getAccessToken()) {
       const ua = window.navigator.userAgent; // const ua = navigator.userAgent;
       const isDesktop =
@@ -1128,41 +1169,41 @@ const handlePortalAppClick = async (app: PortalApp) => {
     }
   }
 
-  if (app.label === "设备管理(PMS)") {
+  if (app.key === "pms") {
     protectedOpen(
       `${import.meta.env.VITE_PMS_URL}/portalLogin?username=${userStore.getUser.username}`,
     );
   }
 
-  if (app.label === "中航北斗") {
+  if (app.key === "zhonghang") {
     protectedOpen("https://zhbdgps.cn");
   }
 
-  if (app.label === "智慧连油") {
+  if (app.key === "lianyou") {
     protectedOpen(
       `${import.meta.env.VITE_PMS_URL}/portalLogin?username=${userStore.getUser.username}&source=zhly`,
     );
   }
 
-  if (app.label === "智慧注气") {
+  if (app.key === "zhuqi") {
     protectedOpen(
       `${import.meta.env.VITE_PMS_URL}/portalLogin?username=${userStore.getUser.username}&source=zhzq`,
     );
   }
 
-  if (app.label === "视频中心(VCS)") {
+  if (app.key === "video") {
     protectedOpen(
       `${import.meta.env.VITE_PMS_URL}/portalLogin?username=${userStore.getUser.username}&source=spzx`,
     );
   }
 
-  if (app.label === "质量安全管理(QHSE)") {
+  if (app.key === "qhse") {
     protectedOpen(
       `${import.meta.env.VITE_PMS_URL}/portalLogin?username=${userStore.getUser.username}&source=qhse_nav`,
     );
   }
 
-  if (app.label === "经营驾驶舱(MC)") {
+  if (app.key === "mc") {
     if (userStore.getUser.username && getAccessToken()) {
       const res = await getMCSsoToken();
       if (res) {
@@ -1176,7 +1217,7 @@ const handlePortalAppClick = async (app: PortalApp) => {
     }
   }
 
-  if (app.label === "开发需求管理") {
+  if (app.key === "kaifa") {
     if (userStore.getUser.username && getAccessToken()) {
       const res = await zentaoSsoLogin({
         username: userStore.getUser.username,
@@ -1192,7 +1233,7 @@ const handlePortalAppClick = async (app: PortalApp) => {
     }
   }
 
-  if (app.label === "人力资源(EHR)") {
+  if (app.key === "ehr") {
     if (userStore.getUser.username && getAccessToken()) {
       const res = await ehrLogin({
         username: userStore.getUser.username,
@@ -1230,7 +1271,7 @@ const handlePortalAppClick = async (app: PortalApp) => {
     }
   }
 
-  if (app.label === "供应商管理(SRM)") {
+  if (app.key === "srm") {
     if (userStore.getUser.username && getAccessToken()) {
       const ua = window.navigator.userAgent;
       const isDesktop =
@@ -1275,7 +1316,7 @@ const handlePortalAppClick = async (app: PortalApp) => {
     }
   }
 
-  if (app.label === "智能钻井") {
+  if (app.key === "zuanjing") {
     if (userStore.getUser.username && getAccessToken()) {
       window.open(`http://172.21.0.224:8001/#/login`, "_blank");
     } else {
@@ -1283,7 +1324,7 @@ const handlePortalAppClick = async (app: PortalApp) => {
     }
   }
 
-  if (app.label === "鸿盘") {
+  if (app.key === "hongpan") {
     if (userStore.getUser.username && getAccessToken()) {
       window.open(`https://pan.keruioil.com:52180`, "_blank");
     } else {
@@ -1291,7 +1332,7 @@ const handlePortalAppClick = async (app: PortalApp) => {
     }
   }
 
-  if (app.label === "战略解码与执行") {
+  if (app.key === "zhanlue") {
     if (userStore.getUser.username && getAccessToken()) {
       if (isDing) {
         dd.biz.util.openLink({
@@ -1385,12 +1426,12 @@ const getTagClass = (tag: string) => {
 
 const getTagName = (tag: string) => {
   return tag === "0"
-    ? "正常"
+    ? t("common.normal")
     : tag === "1"
       ? "重要"
       : tag === "2"
         ? "紧急"
-        : "正常";
+        : t("common.normal");
 };
 
 let oaTasks = ref([]);

+ 1 - 1
src/views/login.vue

@@ -11,7 +11,7 @@
       <a href="/" class="flex justify-center gap-2">
         <img :src="logo" alt="logo" class="h-9" />
         <span class="text-white text-lg font-semibold mt-1"
-          >DeepOil智慧经营平台</span
+          >DeepOil {{ $t("nav.title") }}</span
         >
       </a>
     </div>