From 83af3dd309889489f541fc8e21894c9f79e5788c Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期五, 22 八月 2025 16:09:58 +0800
Subject: [PATCH] 用户管理

---
 src/store/modules/user.ts |  172 ++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 144 insertions(+), 28 deletions(-)

diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 3afc5e6..0f59a5f 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -8,13 +8,28 @@
   storageLocal
 } from "../utils";
 import {
-  type UserResult,
-  type RefreshTokenResult,
   getLogin,
-  refreshTokenApi
+  // refreshTokenApi,
+  getChangeLogoInExRule
 } from "@/api/user";
+import type { LoginData, RoleData, RoleItem } from "@/api/types";
 import { useMultiTagsStoreHook } from "./multiTags";
-import { type DataInfo, setToken, removeToken, userKey } from "@/utils/auth";
+import {
+  type DataInfo,
+  type ResponseEnterprise,
+  type CusExtendDto,
+  setToken,
+  setRoleListInfo,
+  setNowRole,
+  removeToken,
+  userKey,
+  setEnterpriseInfo
+} from "@/utils/auth";
+import { exRole } from "@/api/register/index";
+import { cusExtendInfo } from "@/api/mine";
+import type { nowRoleType } from "@/store/types";
+import { cloneDeep } from "@pureadmin/utils";
+import { message } from "@/utils/message";
 
 export const useUserStore = defineStore("pure-user", {
   state: (): userType => ({
@@ -24,7 +39,7 @@
     username: storageLocal().getItem<DataInfo<number>>(userKey)?.username ?? "",
     // 鏄电О
     nickname: storageLocal().getItem<DataInfo<number>>(userKey)?.nickname ?? "",
-    // 椤甸潰绾у埆鏉冮檺
+    // 褰撳墠瑙掕壊鍒楄〃
     exRoles: storageLocal().getItem<DataInfo<number>>(userKey)?.exRoles ?? [],
     // 鎸夐挳绾у埆鏉冮檺
     permissions:
@@ -32,7 +47,16 @@
     // 鏄惁鍕鹃�変簡鐧诲綍椤电殑鍏嶇櫥褰�
     isRemembered: false,
     // 鐧诲綍椤电殑鍏嶇櫥褰曞瓨鍌ㄥ嚑澶╋紝榛樿7澶�
-    loginDay: 7
+    loginDay: 1,
+    // 浼佷笟璧勬枡
+    enterpriseInfo:
+      storageLocal().getItem<CusExtendDto>("enterpriseInfo") ?? {},
+    nowRole: storageLocal().getItem<nowRoleType>("nowRole") ?? {},
+    rolesList: storageLocal().getItem<RoleItem[]>("rolesList") ?? [],
+    // 椤甸潰绾у埆鏉冮檺
+    roles: storageLocal().getItem<DataInfo<number>>(userKey)?.roles ?? [],
+    isManager:
+      storageLocal().getItem<DataInfo<number>>(userKey)?.isManager ?? false
   }),
   actions: {
     /** 瀛樺偍澶村儚 */
@@ -47,9 +71,21 @@
     SET_NICKNAME(nickname: string) {
       this.nickname = nickname;
     },
-    /** 瀛樺偍瑙掕壊 */
-    SET_ROLES(exRoles: Array<string>) {
+    /** 瀛樺偍鐢ㄦ埛瑙掕壊 */
+    SET_EXROLES(exRoles: RoleItem[]) {
       this.exRoles = exRoles;
+    },
+    /** 瀛樺偍瑙掕壊 */
+    SET_ROLES(roles: Array<string>) {
+      this.roles = roles;
+    },
+    /** 瀛樺偍瑙掕壊褰撳墠瑙掕壊 */
+    SET_NOW_ROLE(nowRole: nowRoleType) {
+      this.nowRole = nowRole;
+    },
+    /** 瀛樺偍瑙掕壊鍒楄〃 */
+    SET_EXROLES_LIST(rolesList: RoleItem[]) {
+      this.rolesList = rolesList;
     },
     /** 瀛樺偍鎸夐挳绾у埆鏉冮檺 */
     SET_PERMS(permissions: Array<string>) {
@@ -63,15 +99,94 @@
     SET_LOGINDAY(value: number) {
       this.loginDay = Number(value);
     },
+    // 璁剧疆浼佷笟璧勬枡
+    SET_ENTERPRISEINFO(enterpriseInfo: CusExtendDto) {
+      this.enterpriseInfo = enterpriseInfo;
+    },
+    SET_ISMANAGER(isManager: boolean) {
+      this.isManager = isManager;
+    },
     /** 鐧诲叆 */
-    async loginByUsername(data) {
-      return new Promise<UserResult>((resolve, reject) => {
-        getLogin(data)
+    async loginByUsername(obj) {
+      return new Promise<LoginData>((resolve, reject) => {
+        getLogin(obj)
           .then(data => {
-            console.log(data, "杩欐槸浠�涔堬紵");
-
-            if (data?.code == 200) setToken(data.result);
+            if (data?.code == 200) {
+              if (data.result.theLastLogo) {
+                const resObj = cloneDeep(data.result);
+                resObj.roles = [obj.exRuleCode];
+                setToken(resObj);
+                this.getNowRole(obj.exRuleCode);
+              }
+            }
             resolve(data);
+          })
+          .catch(error => {
+            reject(error);
+          });
+      });
+    },
+    /** 鑾峰彇瑙掕壊鍒楄〃 */
+    async getRoleList() {
+      return new Promise<RoleData>((resolve, reject) => {
+        exRole()
+          .then(data => {
+            if (data?.code == 200) {
+              setRoleListInfo(data.result);
+              if (this.nowRole.code) {
+                this.getNowRole(this.nowRole.code);
+              }
+            }
+            resolve(data);
+          })
+          .catch(error => {
+            reject(error);
+          });
+      });
+    },
+    /** 鑾峰彇褰撳墠瑙掕壊 */
+    async getNowRole(code) {
+      return new Promise(resolve => {
+        const data = this.rolesList.find(item => {
+          return item.code == code;
+        });
+        if (data?.code) {
+          setNowRole(data);
+          resolve(data);
+        }
+      });
+    },
+    /** 鍒囨崲瑙掕壊 */
+    async changeLogoInExRule(obj) {
+      return new Promise<LoginData>((resolve, reject) => {
+        getChangeLogoInExRule(obj)
+          .then(async data => {
+            if (data?.code == 200) {
+              const resObj = cloneDeep(data.result);
+              resObj.roles = [obj.ruleCode];
+              setToken(resObj);
+              this.getNowRole(obj.ruleCode);
+              await this.getCusExtendInfo();
+              resolve(data);
+            } else {
+              message(data?.message, { type: "warning" });
+            }
+          })
+          .catch(error => {
+            reject(error);
+          });
+      });
+    },
+    async getCusExtendInfo() {
+      return new Promise<ResponseEnterprise>((resolve, reject) => {
+        cusExtendInfo()
+          .then(data => {
+            setEnterpriseInfo(data.result);
+            if (data?.code == 200) {
+              const resData = cloneDeep(data);
+              resData.result.username = data.result?.enterpriseName;
+              resolve(resData);
+            }
           })
           .catch(error => {
             reject(error);
@@ -82,26 +197,27 @@
     logOut() {
       this.username = "";
       this.exRoles = [];
+      this.roles = [];
       this.permissions = [];
       removeToken();
       useMultiTagsStoreHook().handleTags("equal", [...routerArrays]);
       resetRouter();
-      router.push("/login");
+      router.push("/index");
     },
     /** 鍒锋柊`token` */
-    async handRefreshToken(data) {
-      return new Promise<RefreshTokenResult>((resolve, reject) => {
-        refreshTokenApi(data)
-          .then(data => {
-            if (data) {
-              setToken(data.data);
-              resolve(data);
-            }
-          })
-          .catch(error => {
-            reject(error);
-          });
-      });
+    async handRefreshToken() {
+      // return new Promise<RefreshTokenResult>((resolve, reject) => {
+      //   refreshTokenApi(data)
+      //     .then(data => {
+      //       if (data) {
+      //         setToken(data.data);
+      //         resolve(data);
+      //       }
+      //     })
+      //     .catch(error => {
+      //       reject(error);
+      //     });
+      // });
     }
   }
 });

--
Gitblit v1.9.1