From 4157b22112dd8d87e907d9cb6d14f74b5d454b7a Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期三, 23 七月 2025 16:59:09 +0800
Subject: [PATCH] '个人中心修改企业资料完善'

---
 src/layout/components/lay-navbar/index.vue |    6 +
 src/views/register/registernav.vue         |   30 ++++++----
 src/views/mine/index.vue                   |   31 ++++++----
 src/utils/auth.ts                          |   12 ++++
 src/views/login/index.vue                  |    2 
 src/store/modules/user.ts                  |   43 ++++++++++++-
 src/store/types.ts                         |    1 
 src/layout/hooks/useNav.ts                 |    4 -
 8 files changed, 93 insertions(+), 36 deletions(-)

diff --git a/src/layout/components/lay-navbar/index.vue b/src/layout/components/lay-navbar/index.vue
index 339f84c..b9df6c4 100644
--- a/src/layout/components/lay-navbar/index.vue
+++ b/src/layout/components/lay-navbar/index.vue
@@ -19,6 +19,7 @@
   username,
   userAvatar,
   avatarsStyle,
+  userRoles,
   toggleSideBar
 } = useNav();
 </script>
@@ -52,6 +53,7 @@
           <!-- <img :src="userAvatar" :style="avatarsStyle" /> -->
           <p class="dark:text-white">
             {{ username || "璇峰畬鍠勮祫鏂�" }}
+            <el-tag effect="plain">{{ userRoles.name }}</el-tag>
           </p>
         </span>
         <template #dropdown>
@@ -66,13 +68,13 @@
           </el-dropdown-menu>
         </template>
       </el-dropdown>
-      <span
+      <!-- <span
         class="set-icon navbar-bg-hover"
         title="鎵撳紑绯荤粺閰嶇疆"
         @click="onPanel"
       >
         <IconifyIconOffline :icon="Setting" />
-      </span>
+      </span> -->
     </div>
   </div>
 </template>
diff --git a/src/layout/hooks/useNav.ts b/src/layout/hooks/useNav.ts
index 0937a9e..56cd593 100644
--- a/src/layout/hooks/useNav.ts
+++ b/src/layout/hooks/useNav.ts
@@ -53,9 +53,7 @@
 
   /** 瑙掕壊 */
   const userRoles = computed(() => {
-    return isAllEmpty(useUserStoreHook()?.exRoles)
-      ? useUserStoreHook()?.exRoles
-      : {};
+    return useUserStoreHook()?.exRoles[0];
   });
 
   const avatarsStyle = computed(() => {
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 1912e18..2be8954 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -14,7 +14,14 @@
   refreshTokenApi
 } from "@/api/user";
 import { useMultiTagsStoreHook } from "./multiTags";
-import { type DataInfo, setToken, removeToken, userKey } from "@/utils/auth";
+import {
+  type DataInfo,
+  setToken,
+  removeToken,
+  userKey,
+  setEnterpriseInfo
+} from "@/utils/auth";
+import { cusExtendInfo } from "@/api/mine";
 
 export const useUserStore = defineStore("pure-user", {
   state: (): userType => ({
@@ -32,7 +39,10 @@
     // 鏄惁鍕鹃�変簡鐧诲綍椤电殑鍏嶇櫥褰�
     isRemembered: false,
     // 鐧诲綍椤电殑鍏嶇櫥褰曞瓨鍌ㄥ嚑澶╋紝榛樿7澶�
-    loginDay: 7
+    loginDay: 1,
+    // 浼佷笟璧勬枡
+    enterpriseInfo:
+      storageLocal().getItem<DataInfo<number>>("enterpriseInfo") ?? {}
   }),
   actions: {
     /** 瀛樺偍澶村儚 */
@@ -63,6 +73,10 @@
     SET_LOGINDAY(value: number) {
       this.loginDay = Number(value);
     },
+    // 璁剧疆浼佷笟璧勬枡
+    SET_ENTERPRISEINFO(value: object) {
+      this.loginDay = Number(value);
+    },
     /** 鐧诲叆 */
     async loginByUsername(data) {
       return new Promise<LoginResult>((resolve, reject) => {
@@ -76,15 +90,34 @@
           });
       });
     },
+    async getCusExtendInfo() {
+      return new Promise<LoginResult>((resolve, reject) => {
+        cusExtendInfo()
+          .then(data => {
+            data.result.username = data.result.enterpriseName;
+            if (data?.code == 200) {
+              setEnterpriseInfo(data.result);
+              resolve(data);
+            }
+          })
+          .catch(error => {
+            reject(error);
+          });
+      });
+    },
     /** 鍓嶇鐧诲嚭锛堜笉璋冪敤鎺ュ彛锛� */
     logOut() {
       this.username = "";
-      this.exRoles = [];
       this.permissions = [];
-      removeToken();
       useMultiTagsStoreHook().handleTags("equal", [...routerArrays]);
       resetRouter();
-      router.push("/login");
+      if (this.exRoles && this.exRoles.length == 1) {
+        router.push({ name: "Login", query: this.exRoles[0] });
+      } else {
+        router.push({ name: "Login" });
+      }
+      removeToken();
+      this.exRoles = [];
     },
     /** 鍒锋柊`token` */
     async handRefreshToken(data) {
diff --git a/src/store/types.ts b/src/store/types.ts
index 73a1f57..0054a66 100644
--- a/src/store/types.ts
+++ b/src/store/types.ts
@@ -44,4 +44,5 @@
   permissions?: Array<string>;
   isRemembered?: boolean;
   loginDay?: number;
+  enterpriseInfo: object;
 };
diff --git a/src/utils/auth.ts b/src/utils/auth.ts
index fd8a4cc..37cda2f 100644
--- a/src/utils/auth.ts
+++ b/src/utils/auth.ts
@@ -115,6 +115,18 @@
   }
 }
 
+export function setEnterpriseInfo(data: DataInfo<Date>) {
+  useUserStoreHook().SET_ENTERPRISEINFO(data);
+  useUserStoreHook().SET_USERNAME(data.enterpriseName);
+  storageLocal().setItem("enterpriseInfo", data);
+  const obj = storageLocal().getItem(userKey);
+  obj.username = data.enterpriseName;
+  storageLocal().setItem(userKey, obj);
+}
+export function removeEnterpriseInfo() {
+  storageLocal().removeItem("enterpriseInfo");
+}
+
 /** 鍒犻櫎`token`浠ュ強key鍊间负`user-info`鐨刲ocalStorage淇℃伅 */
 export function removeToken() {
   Cookies.remove(TokenKey);
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 6fdd381..95a00b3 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -176,7 +176,6 @@
           if (res.code == 200) {
             // 鑾峰彇鍚庣璺敱
             return initRouter().then(() => {
-              console.log(res, "=-=-=-=", res.result.exRoles[0].hasFlsh);
               if (!res.result.exRoles[0].hasFlsh) {
                 disabled.value = true;
                 router
@@ -191,6 +190,7 @@
               } else {
                 router.replace("welcome");
               }
+              useUserStoreHook().getCusExtendInfo();
             });
           } else {
             message(res?.message || "鐧诲綍澶辫触", { type: "error" });
diff --git a/src/views/mine/index.vue b/src/views/mine/index.vue
index f3643bf..b19de87 100644
--- a/src/views/mine/index.vue
+++ b/src/views/mine/index.vue
@@ -23,7 +23,7 @@
 const isLoading = ref(false);
 const showDialog = ref(false);
 const state = reactive({
-  userInfo: {},
+  userInfo: useUserStoreHook().enterpriseInfo,
   headers: {
     // Accept: "application/json, text/plain, */*",
     // "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
@@ -188,17 +188,21 @@
   showDialog: false
 });
 onMounted(async () => {
-  let res = await cusExtendInfo();
-  if (res.code == 200) {
-    state.userInfo = res.result;
-    state.userInfo.enterpriseTypeName = res.result.enterpriseType;
-    state.ruleForm = res.result;
-    state.ruleForm.enterpriseType = state.ruleForm.enterpriseType.split(",");
-  } else {
-    message(res.message, {
-      type: "error"
-    });
-  }
+  // let res = await useUserStoreHook().getCusExtendInfo();
+  // if (res.code == 200) {
+  //   state.userInfo = res.result;
+  //   state.userInfo.enterpriseTypeName = res.result.enterpriseType;
+  //   state.ruleForm = res.result;
+  //   state.ruleForm.enterpriseType = state.ruleForm.enterpriseType.split(",");
+  // } else {
+  //   message(res.message, {
+  //     type: "error"
+  //   });
+  // }
+  state.ruleForm = cloneDeep(state.userInfo);
+  console.log(state.userInfo);
+
+  state.ruleForm.enterpriseType = state.ruleForm.enterpriseType.split(",");
   let nowRole = useUserStoreHook()?.exRoles;
   if (nowRole.length >= 1 && !route.query.code) {
     state.ruleForm.transactionCode = nowRole[0].code;
@@ -328,6 +332,7 @@
   let res = await changeCusExtend(obj);
   if (res.code == "200") {
     showDialog.value = false;
+    await useUserStoreHook().getCusExtendInfo();
     message("淇敼鎴愬姛锛�", {
       type: "success"
     });
@@ -379,7 +384,7 @@
       <template #label>
         <div class="cell-item">浼佷笟绫诲瀷</div>
       </template>
-      {{ state.userInfo.enterpriseTypeName }}
+      {{ state.userInfo.enterpriseType }}
     </el-descriptions-item>
     <el-descriptions-item>
       <template #label>
diff --git a/src/views/register/registernav.vue b/src/views/register/registernav.vue
index c7ea3e5..5159c0a 100644
--- a/src/views/register/registernav.vue
+++ b/src/views/register/registernav.vue
@@ -612,18 +612,23 @@
 };
 // 椤甸潰鍒濆鍖�
 onMounted(async () => {
-  let res = await cusExtendInfo();
-  if (res.code == 200) {
-    state.ruleForm = res.result;
-    if (res.result.enterpriseType) {
-      isFirst.value = false;
-    }
-    state.ruleForm.enterpriseType = state.ruleForm.enterpriseType.split(",");
-    console.log(state.ruleForm.enterpriseType, "state.ruleForm.enterpriseType");
-  } else {
-    message(res.message, {
-      type: "error"
-    });
+  // let res = await useUserStoreHook().getCusExtendInfo();
+  // if (res.code == 200) {
+  //   state.ruleForm = res.result;
+  //   if (res.result.enterpriseType) {
+  //     isFirst.value = false;
+  //   }
+  //   state.ruleForm.enterpriseType = state.ruleForm.enterpriseType.split(",");
+  //   console.log(state.ruleForm.enterpriseType, "state.ruleForm.enterpriseType");
+  // } else {
+  //   message(res.message, {
+  //     type: "error"
+  //   });
+  // }
+  state.ruleForm = cloneDeep(useUserStoreHook().enterpriseInfo);
+  state.ruleForm.enterpriseType = state.ruleForm.enterpriseType.split(",");
+  if (state.ruleForm.enterpriseType) {
+    isFirst.value = false;
   }
   let nowRole = useUserStoreHook()?.exRoles;
   if (nowRole.length >= 1 && !route.query.code) {
@@ -698,6 +703,7 @@
     ? await createrExRolsInformation(obj)
     : await changeCusExtend(obj);
   if (res.code == "200") {
+    await useUserStoreHook().getCusExtendInfo();
     active.value = 3;
   } else {
     message(res.message, {

--
Gitblit v1.9.1