From 78921416615f450f4cc29ec4f740fbf1b47d8b00 Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期二, 19 八月 2025 17:18:28 +0800
Subject: [PATCH] 注册登录更改

---
 src/views/login/index.vue            |  296 ++++++-----------
 src/router/modules/item.ts           |   20 +
 src/store/modules/user.ts            |   66 ++-
 src/store/types.ts                   |   12 
 src/api/register/index.ts            |   11 
 src/api/user.ts                      |   70 ---
 src/views/newregister/utils/types.ts |    3 
 src/api/types.ts                     |   68 ++++
 src/views/system/user/index.vue      |   16 
 src/views/home/index.vue             |   44 ++
 src/views/mine/index.vue             |   87 +++-
 src/views/newregister/index.vue      |   10 
 src/api/system.ts                    |   92 +++++
 src/utils/auth.ts                    |    7 
 src/views/system/user/utils/hook.tsx |   88 ++--
 src/views/newregister/utils/hook.tsx |  117 ++++--
 src/layout/hooks/useNav.ts           |    3 
 17 files changed, 577 insertions(+), 433 deletions(-)

diff --git a/src/api/register/index.ts b/src/api/register/index.ts
index 2611df4..6a12e54 100644
--- a/src/api/register/index.ts
+++ b/src/api/register/index.ts
@@ -8,7 +8,7 @@
 
 import { http } from "@/utils/http";
 import { baseUrlApi } from "../util";
-import type { Result, CaptchaResult } from "../types";
+import type { Result, CaptchaResult, RoleData } from "../types";
 
 export const register = (data?: object) => {
   return http.request<Result>(
@@ -24,7 +24,7 @@
 
 //鑾峰彇瑙掕壊
 export const exRole = () => {
-  return http.request<Result>("get", baseUrlApi("/api/customer/exRole"));
+  return http.request<RoleData>("get", baseUrlApi("/api/customer/exRole"));
 };
 
 // 鑾峰彇鎵嬫満楠岃瘉鐮�
@@ -66,3 +66,10 @@
   );
 };
 
+// 鐢宠瑙掕壊
+export const applyRole = params => {
+  return http.request<Result>(
+    "get",
+    baseUrlApi(`/api/customer/createrExRolsInformation/${params.ruleCode}`)
+  );
+};
diff --git a/src/api/system.ts b/src/api/system.ts
new file mode 100644
index 0000000..e29adeb
--- /dev/null
+++ b/src/api/system.ts
@@ -0,0 +1,92 @@
+import { http } from "@/utils/http";
+import { baseUrlApi } from "./util";
+
+type Result = {
+  success: boolean;
+  data?: Array<any>;
+};
+
+type ResultTable = {
+  success: boolean;
+  data?: {
+    /** 鍒楄〃鏁版嵁 */
+    list: Array<any>;
+    /** 鎬绘潯鐩暟 */
+    total?: number;
+    /** 姣忛〉鏄剧ず鏉$洰涓暟 */
+    pageSize?: number;
+    /** 褰撳墠椤垫暟 */
+    currentPage?: number;
+  };
+};
+
+/** 鑾峰彇璐︽埛鍒楄〃 */
+export const getUserList = () => {
+  return http.request<ResultTable>(
+    "get",
+    baseUrlApi("/api/customer/custormerUsersList")
+  );
+};
+
+/** 绯荤粺绠$悊-鐢ㄦ埛绠$悊-鑾峰彇鎵�鏈夎鑹插垪琛� */
+export const getAllRoleList = () => {
+  return http.request<Result>(
+    "get",
+    baseUrlApi("/api/customer/custormerUsersList")
+  );
+};
+
+/** 绯荤粺绠$悊-鐢ㄦ埛绠$悊-鏍规嵁userId锛岃幏鍙栧搴旇鑹瞚d鍒楄〃锛坲serId锛氱敤鎴穒d锛� */
+export const getRoleIds = (data?: object) => {
+  return http.request<Result>("post", "/list-role-ids", { data });
+};
+
+/** 鑾峰彇绯荤粺绠$悊-瑙掕壊绠$悊鍒楄〃 */
+export const getRoleList = (data?: object) => {
+  return http.request<ResultTable>("post", "/role", { data });
+};
+
+/** 鑾峰彇绯荤粺绠$悊-鑿滃崟绠$悊鍒楄〃 */
+export const getMenuList = (data?: object) => {
+  return http.request<Result>("post", "/menu", { data });
+};
+
+/** 鑾峰彇绯荤粺绠$悊-閮ㄩ棬绠$悊鍒楄〃 */
+export const getDeptList = (data?: object) => {
+  return http.request<Result>("post", "/dept", { data });
+};
+
+/** 鑾峰彇绯荤粺鐩戞帶-鍦ㄧ嚎鐢ㄦ埛鍒楄〃 */
+export const getOnlineLogsList = (data?: object) => {
+  return http.request<ResultTable>("post", "/online-logs", { data });
+};
+
+/** 鑾峰彇绯荤粺鐩戞帶-鐧诲綍鏃ュ織鍒楄〃 */
+export const getLoginLogsList = (data?: object) => {
+  return http.request<ResultTable>("post", "/login-logs", { data });
+};
+
+/** 鑾峰彇绯荤粺鐩戞帶-鎿嶄綔鏃ュ織鍒楄〃 */
+export const getOperationLogsList = (data?: object) => {
+  return http.request<ResultTable>("post", "/operation-logs", { data });
+};
+
+/** 鑾峰彇绯荤粺鐩戞帶-绯荤粺鏃ュ織鍒楄〃 */
+export const getSystemLogsList = (data?: object) => {
+  return http.request<ResultTable>("post", "/system-logs", { data });
+};
+
+/** 鑾峰彇绯荤粺鐩戞帶-绯荤粺鏃ュ織-鏍规嵁 id 鏌ユ棩蹇楄鎯� */
+export const getSystemLogsDetail = (data?: object) => {
+  return http.request<Result>("post", "/system-logs-detail", { data });
+};
+
+/** 鑾峰彇瑙掕壊绠$悊-鏉冮檺-鑿滃崟鏉冮檺 */
+export const getRoleMenu = (data?: object) => {
+  return http.request<Result>("post", "/role-menu", { data });
+};
+
+/** 鑾峰彇瑙掕壊绠$悊-鏉冮檺-鑿滃崟鏉冮檺-鏍规嵁瑙掕壊 id 鏌ュ搴旇彍鍗� */
+export const getRoleMenuIds = (data?: object) => {
+  return http.request<Result>("post", "/role-menu-ids", { data });
+};
diff --git a/src/api/types.ts b/src/api/types.ts
index 884a951..7939579 100644
--- a/src/api/types.ts
+++ b/src/api/types.ts
@@ -48,3 +48,71 @@
   result: captchaImg;
   code: string | number;
 };
+
+export type UserResult = {
+  success: boolean;
+  data: {
+    /** 澶村儚 */
+    avatar: string;
+    /** 鐢ㄦ埛鍚� */
+    username: string;
+    /** 鏄电О */
+    nickname: string;
+    /** 褰撳墠鐧诲綍鐢ㄦ埛鐨勮鑹� */
+    roles: Array<string>;
+    /** 鎸夐挳绾у埆鏉冮檺 */
+    permissions: Array<string>;
+    /** `token` */
+    accessToken: string;
+    /** 鐢ㄤ簬璋冪敤鍒锋柊`accessToken`鐨勬帴鍙f椂鎵�闇�鐨刞token` */
+    refreshToken: string;
+    /** `accessToken`鐨勮繃鏈熸椂闂达紙鏍煎紡'xxxx/xx/xx xx:xx:xx'锛� */
+    expires: Date;
+  };
+};
+// 浼佷笟淇℃伅椤圭被鍨�
+interface CustomerEx {
+  customerUserID: number;
+  enterpriseName: string;
+  isManger: boolean; // 娉ㄦ剰锛氬師鏁版嵁涓彲鑳藉瓨鍦ㄦ嫾鍐欓敊璇紙搴斾负isManager锛夛紝姝ゅ淇濇寔涓庡師鏁版嵁涓�鑷�
+  unifiedSocialCreditCode: string;
+}
+
+// 鏁翠綋缁撴灉绫诲瀷
+export interface LoginResult {
+  theLastLogo: boolean;
+  accessToken: string | null;
+  refreshToken: string | null;
+  exRoles: any | null; // exRoles涓簄ull锛屽叿浣撶被鍨嬪彲鏍规嵁瀹為檯涓氬姟鍦烘櫙缁嗗寲
+  code: string;
+  customerExs: CustomerEx[];
+  expires: string;
+  roles: [];
+  username: string;
+  avatar: string;
+  nickname: string;
+  permissions: [];
+}
+
+export type LoginData = {
+  message: string;
+  success: boolean;
+  code: string | number;
+  result: LoginResult;
+};
+export interface RoleItem {
+  id: number;
+  name: string;
+  code: string;
+  orderNo: number;
+  dataScope: number;
+  remark: string | null; // 鍙兘涓簄ull鎴栧瓧绗︿覆
+  status: number;
+}
+// 瑙掕壊鍒楄〃
+export type RoleData = {
+  message: string;
+  success: boolean;
+  code: string | number;
+  result: RoleItem[];
+};
diff --git a/src/api/user.ts b/src/api/user.ts
index f0e6242..2882580 100644
--- a/src/api/user.ts
+++ b/src/api/user.ts
@@ -1,79 +1,23 @@
 import { http } from "@/utils/http";
 import { baseUrlApi } from "./util";
-
-export type UserResult = {
-  success: boolean;
-  data: {
-    /** 澶村儚 */
-    avatar: string;
-    /** 鐢ㄦ埛鍚� */
-    username: string;
-    /** 鏄电О */
-    nickname: string;
-    /** 褰撳墠鐧诲綍鐢ㄦ埛鐨勮鑹� */
-    roles: Array<string>;
-    /** 鎸夐挳绾у埆鏉冮檺 */
-    permissions: Array<string>;
-    /** `token` */
-    accessToken: string;
-    /** 鐢ㄤ簬璋冪敤鍒锋柊`accessToken`鐨勬帴鍙f椂鎵�闇�鐨刞token` */
-    refreshToken: string;
-    /** `accessToken`鐨勮繃鏈熸椂闂达紙鏍煎紡'xxxx/xx/xx xx:xx:xx'锛� */
-    expires: Date;
-  };
-};
-
-export type LoginResult = {
-  success: boolean;
-  code: string | number;
-  result: {
-    /** 澶村儚 */
-    avatar: string;
-    /** 鐢ㄦ埛鍚� */
-    username: string;
-    /** 鏄电О */
-    nickname: string;
-    /** 褰撳墠鐧诲綍鐢ㄦ埛鐨勮鑹� */
-    exRoles: Array<string>;
-    /** 鎸夐挳绾у埆鏉冮檺 */
-    permissions: Array<string>;
-    /** `token` */
-    accessToken: string;
-    /** 鐢ㄤ簬璋冪敤鍒锋柊`accessToken`鐨勬帴鍙f椂鎵�闇�鐨刞token` */
-    refreshToken: string;
-    /** `accessToken`鐨勮繃鏈熸椂闂达紙鏍煎紡'xxxx/xx/xx xx:xx:xx'锛� */
-    expires: Date;
-  };
-};
-
-export type RefreshTokenResult = {
-  success: boolean;
-  data: {
-    /** `token` */
-    accessToken: string;
-    /** 鐢ㄤ簬璋冪敤鍒锋柊`accessToken`鐨勬帴鍙f椂鎵�闇�鐨刞token` */
-    refreshToken: string;
-    /** `accessToken`鐨勮繃鏈熸椂闂达紙鏍煎紡'xxxx/xx/xx xx:xx:xx'锛� */
-    expires: Date;
-  };
-};
+import type { LoginData } from "./types";
 
 /** 鐧诲綍 */
 export const getLogin = (data?: object) => {
-  return http.request<LoginResult>("post", baseUrlApi("/api/auth/loginPhone"), {
+  return http.request<LoginData>("post", baseUrlApi("/api/auth/loginPhone"), {
     data
   });
   // return http.request<UserResult>("post", "/login", { data });
 };
 
-/** 鍒锋柊`token` */
-export const refreshTokenApi = (data?: object) => {
-  return http.request<RefreshTokenResult>("post", "/refresh-token1", { data });
-};
+// /** 鍒锋柊`token` */
+// export const refreshTokenApi = (data?: object) => {
+//   return http.request<RefreshTokenResult>("post", "/refresh-token1", { data });
+// };
 
 // 鍒囨崲瑙掕壊
 export const getChangeLogoInExRule = params => {
-  return http.request<LoginResult>(
+  return http.request<LoginData>(
     "post",
     baseUrlApi(`/api/auth/changeLogoInExRule/${params.ruleCode}`)
   );
diff --git a/src/layout/hooks/useNav.ts b/src/layout/hooks/useNav.ts
index 17745d4..88ff49c 100644
--- a/src/layout/hooks/useNav.ts
+++ b/src/layout/hooks/useNav.ts
@@ -15,6 +15,7 @@
 import ExitFullscreen from "~icons/ri/fullscreen-exit-fill";
 import Fullscreen from "~icons/ri/fullscreen-fill";
 import { unref } from "vue";
+import { message } from "@/utils/message";
 
 const errorInfo =
   "The current routing configuration is incorrect, please check the configuration";
@@ -109,6 +110,8 @@
           // 鑾峰彇鍚庣璺敱
           initRouter();
           onFresh();
+        } else {
+          message(res?.message, { type: "warning" });
         }
       });
   };
diff --git a/src/router/modules/item.ts b/src/router/modules/item.ts
index bf042d2..2c2d0ee 100644
--- a/src/router/modules/item.ts
+++ b/src/router/modules/item.ts
@@ -21,6 +21,26 @@
     ]
   },
   {
+    path: "/user",
+    meta: {
+      title: "鐢ㄦ埛绠$悊",
+      icon: "mdi:chart-timeline"
+    },
+    children: [
+      {
+        // path闅忎究鍐欙紝浣嗗墠闈㈠繀椤绘湁涓� `/`
+        path: "/user",
+        // component瀵瑰簲鐨勫�煎墠涓嶉渶瑕佸姞 / 鍊煎搴旂殑鏄疄闄呬笟鍔� `.vue` 鎴� `.tsx` 浠g爜璺緞
+        component: () => import("@/views/system/user/index.vue"),
+        name: "user",
+        meta: {
+          title: "鐢ㄦ埛绠$悊"
+          // showLink:false
+        }
+      }
+    ]
+  },
+  {
     path: "/aboutItem",
     meta: {
       title: "鍏虫敞椤圭洰",
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index fabcc62..8dc7ec3 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -8,12 +8,11 @@
   storageLocal
 } from "../utils";
 import {
-  type LoginResult,
-  type RefreshTokenResult,
   getLogin,
-  refreshTokenApi,
+  // refreshTokenApi,
   getChangeLogoInExRule
 } from "@/api/user";
+import type { LoginData, RoleData, RoleItem } from "@/api/types";
 import { useMultiTagsStoreHook } from "./multiTags";
 import {
   type DataInfo,
@@ -29,6 +28,8 @@
 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 => ({
@@ -51,7 +52,7 @@
     enterpriseInfo:
       storageLocal().getItem<CusExtendDto>("enterpriseInfo") ?? {},
     nowRole: storageLocal().getItem<nowRoleType>("nowRole") ?? {},
-    rolesList: storageLocal().getItem<DataInfo<number>>("rolesList") ?? [],
+    rolesList: storageLocal().getItem<RoleItem[]>("rolesList") ?? [],
     // 椤甸潰绾у埆鏉冮檺
     roles: storageLocal().getItem<DataInfo<number>>(userKey)?.roles ?? []
   }),
@@ -81,7 +82,7 @@
       this.nowRole = nowRole;
     },
     /** 瀛樺偍瑙掕壊鍒楄〃 */
-    SET_EXROLES_LIST(rolesList: Array<string>) {
+    SET_EXROLES_LIST(rolesList: RoleItem[]) {
       this.rolesList = rolesList;
     },
     /** 瀛樺偍鎸夐挳绾у埆鏉冮檺 */
@@ -102,13 +103,16 @@
     },
     /** 鐧诲叆 */
     async loginByUsername(obj) {
-      return new Promise<LoginResult>((resolve, reject) => {
+      return new Promise<LoginData>((resolve, reject) => {
         getLogin(obj)
           .then(data => {
             if (data?.code == 200) {
-              data.result.roles = [obj.exRuleCode];
-              setToken(data.result);
-              this.getNowRole(obj.exRuleCode);
+              if (data.result.theLastLogo) {
+                const resObj = cloneDeep(data.result);
+                resObj.roles = [obj.exRuleCode];
+                setToken(resObj);
+                this.getNowRole(obj.exRuleCode);
+              }
             }
             resolve(data);
           })
@@ -119,7 +123,7 @@
     },
     /** 鑾峰彇瑙掕壊鍒楄〃 */
     async getRoleList() {
-      return new Promise<LoginResult>((resolve, reject) => {
+      return new Promise<RoleData>((resolve, reject) => {
         exRole()
           .then(data => {
             if (data?.code == 200) {
@@ -137,7 +141,7 @@
     },
     /** 鑾峰彇褰撳墠瑙掕壊 */
     async getNowRole(code) {
-      return new Promise<LoginResult>((resolve, reject) => {
+      return new Promise(resolve => {
         const data = this.rolesList.find(item => {
           return item.code == code;
         });
@@ -147,15 +151,18 @@
     },
     /** 鍒囨崲瑙掕壊 */
     async changeLogoInExRule(obj) {
-      return new Promise<LoginResult>((resolve, reject) => {
+      return new Promise<LoginData>((resolve, reject) => {
         getChangeLogoInExRule(obj)
           .then(async data => {
             if (data?.code == 200) {
-              data.result.roles = [obj.ruleCode];
-              setToken(data.result);
+              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 => {
@@ -169,8 +176,9 @@
           .then(data => {
             setEnterpriseInfo(data.result);
             if (data?.code == 200) {
-              data.result.username = data.result?.enterpriseName;
-              resolve(data);
+              const resData = cloneDeep(data);
+              resData.result.username = data.result?.enterpriseName;
+              resolve(resData);
             }
           })
           .catch(error => {
@@ -190,19 +198,19 @@
       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);
+      //     });
+      // });
     }
   }
 });
diff --git a/src/store/types.ts b/src/store/types.ts
index f80f533..8e89122 100644
--- a/src/store/types.ts
+++ b/src/store/types.ts
@@ -1,5 +1,5 @@
 import type { RouteRecordName } from "vue-router";
-
+import type { RoleItem } from "@/api/types";
 export type cacheType = {
   mode: string;
   name?: RouteRecordName;
@@ -37,21 +37,21 @@
 };
 
 export type nowRoleType = {
-  code: string;
-  name: string;
-  hasFlsh: boolean;
+  code?: string;
+  name?: string;
+  hasFlsh?: boolean;
 };
 
 export type userType = {
   avatar?: string;
   username?: string;
   nickname?: string;
-  exRoles?: Array<string>;
+  exRoles?: RoleItem[];
   roles?: Array<string>;
   permissions?: Array<string>;
   isRemembered?: boolean;
   loginDay?: number;
   enterpriseInfo: object;
   nowRole: nowRoleType;
-  rolesList: object;
+  rolesList: RoleItem[];
 };
diff --git a/src/utils/auth.ts b/src/utils/auth.ts
index 65b67b0..69ae036 100644
--- a/src/utils/auth.ts
+++ b/src/utils/auth.ts
@@ -2,6 +2,7 @@
 import { useUserStoreHook } from "@/store/modules/user";
 import { storageLocal, isString, isIncludeAllChildren } from "@pureadmin/utils";
 import type { nowRoleType } from "@/store/types";
+import type { LoginResult, RoleItem } from "@/api/types";
 
 export interface DataInfo<T> {
   /** token */
@@ -172,7 +173,7 @@
  * 灏哷accessToken`銆乣expires`銆乣refreshToken`杩欎笁鏉′俊鎭斁鍦╧ey鍊间负authorized-token鐨刢ookie閲岋紙杩囨湡鑷姩閿�姣侊級
  * 灏哷avatar`銆乣username`銆乣nickname`銆乣exRoles`銆乣permissions`銆乣refreshToken`銆乣expires`杩欎竷鏉′俊鎭斁鍦╧ey鍊间负`user-info`鐨刲ocalStorage閲岋紙鍒╃敤`multipleTabsKey`褰撴祻瑙堝櫒瀹屽叏鍏抽棴鍚庤嚜鍔ㄩ攢姣侊級
  */
-export function setToken(data: DataInfo<Date>) {
+export function setToken(data: LoginResult) {
   let expires = 0;
   const { accessToken, refreshToken } = data;
   const { isRemembered, loginDay } = useUserStoreHook();
@@ -264,7 +265,7 @@
   storageLocal().setItem(userKey, obj);
 }
 
-export function setRoleListInfo(data: DataInfo<string>) {
+export function setRoleListInfo(data: RoleItem[]) {
   useUserStoreHook().SET_EXROLES_LIST(data);
   storageLocal().setItem("rolesList", data);
 }
@@ -275,7 +276,7 @@
     const obj = list.find(item => {
       return item.code == data.code;
     });
-    data = { ...obj, ...data };
+    data = Object.assign(obj, data);
   }
   useUserStoreHook().SET_ROLES([data.name]);
   useUserStoreHook().SET_NOW_ROLE(data);
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index 402fc9e..c2b05ca 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -378,18 +378,24 @@
   <my-footer />
 </template>
 
-<script lang="ts" setup>
+<script lang="tsx" setup>
 import { onMounted, ref, computed, reactive } from "vue";
 import MyFooter from "./component/myFooter.vue";
 import MyHeader from "./component/myHeader.vue";
 import { useUserStoreHook } from "@/store/modules/user";
 import { exRole } from "@/api/register/index";
 import { storageLocal, isString, isIncludeAllChildren } from "@pureadmin/utils";
+import { initRouter, getTopMenu } from "@/router/utils";
 
 import { getToken } from "@/utils/auth";
 import { useRoute, useRouter } from "vue-router";
 const router = useRouter();
 import { useUserStore } from "@/store/modules/user";
+import { addDialog } from "@/components/ReDialog";
+import { applyRole } from "@/api/register/index";
+import { message } from "@/utils/message";
+import type { userType } from "@/store/types";
+import type { RoleItem } from "@/api/types";
 
 const userStore = useUserStore();
 
@@ -402,14 +408,14 @@
 /** 瑙掕壊锛堝鏋滄樀绉颁负绌哄垯鏄剧ず鐢ㄦ埛鍚嶏級 */
 const getUseRoles = () => {
   state.userInfo = storageLocal().getItem("user-info");
-  state.userInfo?.exRoles.forEach(element => {
+  state.userInfo?.exRoles.forEach((element: RoleItem) => {
     state.rolesCode.push(element.code);
   });
 };
 const state = reactive({
   roleList: [],
   rolesCode: [],
-  userInfo: {},
+  userInfo: {} as userType,
   accessToken: ""
 });
 onMounted(() => {
@@ -432,20 +438,42 @@
 };
 // 鐢宠
 const toApply = item => {
-  router.push({ name: "RegisterNav", query: { code: item.code } });
+  addDialog({
+    width: "20%",
+    title: "纭淇℃伅",
+    contentRenderer: () => <p>鏄惁鐢宠涓簕item.name}锛�</p>, // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶锛岄渶瑕佸湪script寮�鍚痩ang="tsx"锛�
+    closeCallBack: ({ options, args }) => {
+      if (args?.command === "cancel") {
+        // 鎮ㄧ偣鍑讳簡鍙栨秷鎸夐挳
+      } else if (args?.command === "sure") {
+        applyRole({ ruleCode: item.code }).then(res => {
+          if (res.code == 200) {
+            message("鐢宠鎴愬姛锛�", { type: "success" });
+          } else {
+            message(res?.message || "鐢宠澶辫触锛�", { type: "error" });
+          }
+        });
+      } else {
+      }
+    }
+  });
+  // router.push({ name: "RegisterNav", query: { code: item.code } });
 };
 // 鍘婚椤�
 const toWelcome = async item => {
   if (useUserStoreHook().nowRole.code !== item.code) {
-    await useUserStoreHook().changeLogoInExRule({
-      ruleCode: item.code
+    // 鑾峰彇鍚庣璺敱
+    initRouter().then(() => {
+      useUserStoreHook().changeLogoInExRule({
+        ruleCode: item.code
+      });
     });
   }
-  router.push({ name: "Mine" });
+  router.push({ name: "Welcome" });
 };
 // 鍘荤櫥褰�
 const toLogin = item => {
-  router.push({ name: "Login", query: item });
+  router.push({ name: "Login" });
 };
 </script>
 
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 53092d3..6f87bd5 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -7,13 +7,14 @@
   reactive,
   computed,
   ref,
+  Ref,
   h,
   onMounted,
   defineAsyncComponent,
   onUnmounted,
   watch
 } from "vue";
-import { debounce } from "@pureadmin/utils";
+import { debounce, storageLocal } from "@pureadmin/utils";
 import { useNav } from "@/layout/hooks/useNav";
 import { useEventListener } from "@vueuse/core";
 import type { FormInstance } from "element-plus";
@@ -120,6 +121,8 @@
   myEnterpriseList: [],
   nowRole: {}
 });
+let secondCode = "";
+let secondId: Ref<string | number | boolean> = ref("");
 // 楠岃瘉鐮佽繃鏈熻鏃跺櫒
 let timer: any = null;
 let phonetimer: any = null;
@@ -127,18 +130,6 @@
 // 椤甸潰鍒濆鍖�
 onMounted(async () => {
   getCaptcha();
-  exRole().then(res => {
-    state.roleList = res.result;
-    const role = route.query;
-    if (role.code) {
-      state.nowRole = state.roleList.find(item => {
-        return item.code == role.code;
-      });
-    } else {
-      state.nowRole = state.roleList[0];
-    }
-    state.ruleForm.exRoleCode = state.nowRole.code;
-  });
   // 娉ㄥ唽楠岃瘉鐮佽繃鏈熻鏃跺櫒
   timer = setInterval(() => {
     if (state.expirySeconds > 0) state.expirySeconds -= 1;
@@ -157,131 +148,104 @@
     width: "30%",
     title: "閫夋嫨鐧诲綍鍏徃",
     contentRenderer: () =>
-    h(ElForm, {
-      ref: ruleFormRef,
-      model: state.ruleForm,
-      rules: loginRules,
-      size: 'large'
-    }, [
-      h(Motion, { delay: 150 }, [
-        h(ElFormItem, {
-          prop: 'exRoleCode',
-          label: '涓讳綋瑙掕壊' // 鍙坊鍔犺〃鍗曢」鏍囩
-        }, [
-          // 鍗曢�夋缁� - 鐖跺鍣ㄦ坊鍔犳牱寮忔帶鍒�
-          h(ElRadioGroup, {
-            modelValue: state.ruleForm.exRoleCode,
-            'onUpdate:modelValue': (val) => {
-              state.ruleForm.exRoleCode = val
-            },
-            style: {
-              display: 'flex',
-              flexDirection: 'column',
-              gap: '8px' // 鍗曢�夋涔嬮棿鐨勯棿璺�
-            }
-          }, [
-            // 寰幆娓叉煋鍗曢�夋 - 姣忎釜鍗曢�夋鍗曠嫭鍗犱竴琛�
-            state.myEnterpriseList.map(item => h(ElRadio, {
-              key: item.id,
-              value: item.code,
-              style: {
-                display: 'block', // 璁╂瘡涓崟閫夋鍒嗚鏄剧ず
-                padding: '4px 0'
-              }
-            }, item.name),)
-          ]),
-
-          // 绠$悊鍛樻爣绛� - 鏄剧ず鍦ㄥ崟閫夋鍚庨潰
-          
-        ])
-      ])
-    ])
-      // <>
-      //   <el-form
-      //     ref="ruleFormRef"
-      //     model={state.ruleForm}
-      //     rules={loginRules}
-      //     size="large"
-      //   >
-      //     <Motion delay={150}>
-      //       <el-form-item prop="exRoleCode">
-      //         <el-radio-group v-model={state.ruleForm.exRoleCode}>
-      //           <el-radio
-      //             v-for={item in state.myEnterpriseList}
-      //             key={item.id}
-      //             value={item.code}
-      //           >
-      //             {item.name}
-      //           </el-radio>
-      //         </el-radio-group>
-      //       </el-form-item>
-      //     </Motion>
-      //   </el-form>
-      // </>
-      // h(
-      //   ElForm,
-      //   {
-      //     ref: ruleFormRef,
-      //     model: state.ruleForm,
-      //     rules: loginRules,
-      //     size: "large"
-      //   },
-      //   [
-      //     h(Motion, { delay: 150 }, [
-      //       h(ElFormItem, { prop: "exRoleCode" }, [
-      //         h(
-      //           ElRadioGroup,
-      //           {
-      //             modelValue: state.ruleForm.exRoleCode,
-      //             "onUpdate:modelValue": val => {
-      //               state.ruleForm.exRoleCode = val;
-      //             }
-      //           },
-      //           [
-      //             // 鐢╩ap瀹炵幇v-for寰幆
-      //             state.myEnterpriseList.map(item =>
-      //               h(ElRow, {}, [
-      //                 h(
-      //                   ElRadio,
-      //                   {
-      //                     key: item.customerUserID,
-      //                     value: item.customerUserID
-      //                   },
-      //                   item.enterpriseName
-      //                 ),
-      //                 item.isManager ? 444 : "" // 鏍囩鍐呭
-      //               ])
-      //             )
-      //           ]
-      //         )
-      //       ])
-      //     ])
-      //   ]
-      // ),
-      // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶锛岄渶瑕佸湪script寮�鍚痩ang="tsx"锛�
+      h(
+        ElForm,
+        {
+          ref: ruleFormRef,
+          model: state.ruleForm,
+          rules: loginRules,
+          size: "large"
+        },
+        [
+          h(Motion, { delay: 150 }, [
+            h(
+              ElFormItem,
+              {
+                prop: "exRoleCode",
+                label: ""
+              },
+              [
+                // 鍗曢�夋缁� - 绾靛悜鎺掑垪
+                h(
+                  ElRadioGroup,
+                  {
+                    modelValue: secondId.value,
+                    "onUpdate:modelValue": val => {
+                      secondId.value = val;
+                    }
+                  },
+                  [
+                    // 寰幆娓叉煋鍗曢�夋 - 鏍规嵁姣忛」鐨刬sManager鏄剧ず鏍囩
+                    state.myEnterpriseList.map(item =>
+                      h(
+                        "el-row",
+                        {
+                          style: {
+                            width: "100%"
+                          }
+                        },
+                        [
+                          h(
+                            "el-col",
+                            {
+                              span: 24
+                            },
+                            [
+                              h(
+                                ElRadio,
+                                {
+                                  key: item.customerUserID,
+                                  value: item.customerUserID,
+                                  label: item.enterpriseName
+                                },
+                                [
+                                  // 鍗曢�夋鏂囨湰
+                                  // 鏍规嵁褰撳墠椤圭殑isManager鏄剧ず鏍囩锛堟斁鍦ㄦ枃鏈悗闈級
+                                  item.isManger
+                                    ? h(
+                                        ElTag,
+                                        {
+                                          type: "primary",
+                                          size: "small",
+                                          style: {
+                                            marginLeft: "8px",
+                                            alignSelf: "center"
+                                          }
+                                        },
+                                        "绠$悊鍛�"
+                                      )
+                                    : null
+                                ]
+                              )
+                            ]
+                          )
+                        ]
+                      )
+                    )
+                  ]
+                )
+              ]
+            )
+          ])
+        ]
+      ),
+    // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶锛岄渶瑕佸湪script寮�鍚痩ang="tsx"锛�
     closeCallBack: ({ options, args }) => {
-      // options.props 鏄搷搴斿紡鐨�
-      // const { formInline } = options.props as FormProps;
-      // const text = `濮撳悕锛�${formInline.user} 鍩庡競锛�${formInline.region}`;
       if (args?.command === "cancel") {
         // 鎮ㄧ偣鍑讳簡鍙栨秷鎸夐挳
-        // active.value -= 1;
       } else if (args?.command === "sure") {
         let obj = {
           phone: state.ruleForm.phone,
-          code: state.ruleForm.phoneVCode,
-          exRuleCode: state.ruleForm.exRoleCode
+          code: secondCode,
+          id: secondId.value
         };
         useUserStoreHook()
           .loginByUsername(obj)
           .then(res => {
             if (res?.code == 200) {
-              message("娉ㄥ唽鎴愬姛锛�", { type: "success" });
+              message("鐧诲綍鎴愬姛锛�", { type: "success" });
               router.replace({
-                path: "/RegisterSucess",
-                query: {
-                  code: obj.exRoleCode
-                }
+                path: "/Index"
               });
             } else {
               message(res?.message, { type: "warning" });
@@ -292,6 +256,8 @@
     }
   });
 };
+
+// 鐐瑰嚮鐧诲綍
 const onLogin = async (formEl: FormInstance | undefined) => {
   if (!formEl) return;
   await formEl.validate(valid => {
@@ -320,45 +286,23 @@
                   .finally(() => (disabled.value = false));
               } else {
                 state.myEnterpriseList = obj.customerExs;
+                secondCode = obj.code;
                 openDialog();
               }
-              if (res.result.exRoles.length == 0) {
-                disabled.value = true;
-                router
-                  .replace({
-                    name: "RegisterNav",
-                    query: { code: state.ruleForm.exRoleCode }
-                  })
-                  .then(() => {
-                    message("鐧诲綍鎴愬姛", { type: "success" });
-                  })
-                  .finally(() => (disabled.value = false));
-              } else if (res.result.exRoles.length > 0) {
-                let data = res.result.exRoles.find(item => {
-                  return item.code == state.ruleForm.exRoleCode;
-                });
-
-                if (!data) {
-                  router.replace({
-                    name: "RegisterNav",
-                    query: { code: state.ruleForm.exRoleCode }
-                  });
-                } else if (data?.hasFlsh) {
-                  router.replace("index");
-                } else {
-                  router.replace("mine");
-                }
-              }
-              useUserStoreHook().getCusExtendInfo();
             });
           } else {
             message(res?.message || "鐧诲綍澶辫触", { type: "error" });
           }
         })
-        .finally(() => (loading.value = false));
+        .finally(() => {
+          loading.value = false;
+          disabled.value = false;
+        });
     }
   });
 };
+
+// 鍙戦�佹墜鏈洪獙璇佺爜
 const sendValidationCode = async () => {
   if (!state.ruleForm.phone) {
     return message("璇峰厛杈撳叆鎵嬫満鍙�", { type: "warning" });
@@ -396,26 +340,12 @@
     <div class="wave">
       <img width="400px" :src="logo1" class="logo1" />
     </div>
-    <!-- <img :src="bg" class="wave" /> -->
-    <!-- <div class="flex-c absolute right-5 top-3"> -->
-    <!-- 涓婚 -->
-    <!-- <el-switch
-        v-model="dataTheme"
-        inline-prompt
-        :active-icon="dayIcon"
-        :inactive-icon="darkIcon"
-        @change="dataThemeChange"
-      />
-    </div> -->
     <div class="login-container">
-      <div class="img">
-        <!-- <component :is="toRaw(illustration)" /> -->
-      </div>
+      <div class="img" />
       <div class="login-box">
         <div class="login-form">
-          <!-- <avatar class="avatar" /> -->
           <Motion>
-            <h2 class="logintitle">{{ state.nowRole.name }}鐧诲綍</h2>
+            <h2 class="logintitle">鐧诲綍</h2>
           </Motion>
 
           <el-form
@@ -424,18 +354,6 @@
             :rules="loginRules"
             size="large"
           >
-            <!-- <Motion :delay="150">
-              <el-form-item prop="exRoleCode">
-                <el-radio-group v-model="state.ruleForm.exRoleCode">
-                  <el-radio
-                    v-for="item in state.roleList"
-                    :key="item.id"
-                    :value="item.code"
-                    >{{ item.name }}</el-radio
-                  >
-                </el-radio-group>
-              </el-form-item>
-            </Motion> -->
             <Motion :delay="100">
               <el-form-item
                 :rules="[
@@ -488,16 +406,6 @@
                   </div>
                 </el-col>
               </el-form-item>
-
-              <!-- <el-form-item prop="password">
-                <el-input
-                  v-model="ruleForm.password"
-                  clearable
-                  show-password
-                  placeholder="瀵嗙爜"
-                  :prefix-icon="useRenderIcon(Lock)"
-                />
-              </el-form-item> -->
             </Motion>
             <Motion :delay="150">
               <el-form-item prop="phoneVCode">
@@ -511,7 +419,7 @@
                       <span
                         id="suffix-span-2"
                         ref="spanRef"
-                        @click="sendValidationCode(state.ruleForm.phone)"
+                        @click="sendValidationCode"
                       >
                         鑾峰彇楠岃瘉鐮�
                       </span>
diff --git a/src/views/mine/index.vue b/src/views/mine/index.vue
index 91d9e6e..ae9cac0 100644
--- a/src/views/mine/index.vue
+++ b/src/views/mine/index.vue
@@ -78,7 +78,8 @@
     // 浼佷笟寮�鎴疯
     bankName: null, // string锛屽彲绌�
     // 浼佷笟閾惰璐﹀彿
-    bankAccount: null // string锛屽彲绌�
+    bankAccount: null, // string锛屽彲绌�
+    bankAccountIMG: null
   },
   enterpriseList: [],
   type: "",
@@ -338,6 +339,22 @@
     });
   }
 };
+
+const handlebankAccountIMG: UploadProps["onSuccess"] = (
+  response,
+  uploadFile
+) => {
+  if (response.code == "200") {
+    // state.ruleForm.businessLicense = URL.createObjectURL(uploadFile.raw!);
+    state.ruleForm.bankAccountIMG = response.result;
+  } else {
+    message(response.message, {
+      type: "error"
+    });
+  }
+  isLoading.value = false;
+};
+
 defineOptions({
   name: "mine"
 });
@@ -348,7 +365,7 @@
     <el-descriptions
       v-if="state.userInfo.enterpriseName"
       class="margin-top"
-      title=""
+      title="浼佷笟璧勬枡"
       :column="3"
       border
     >
@@ -404,7 +421,7 @@
         <template #label>
           <div class="cell-item">鑱旂郴鐢佃瘽</div>
         </template>
-        {{ userInfo.legalRepresentativePhone }}
+        {{ userInfo.enterprisePhone }}
       </el-descriptions-item>
       <el-descriptions-item>
         <template #label>
@@ -478,6 +495,14 @@
           <div class="cell-item">閾惰璐﹀彿</div>
         </template>
         {{ userInfo.bankAccount }}
+      </el-descriptions-item>
+      <el-descriptions-item>
+        <template #label>
+          <div class="cell-item">閾惰鏀舵浜岀淮鐮�</div>
+        </template>
+        <span style="margin-right: auto" @click="showImg('bankAccountIMG')">
+          <el-link type="primary" underline>鏌ョ湅浜岀淮鐮�</el-link>
+        </span>
       </el-descriptions-item>
     </el-descriptions>
     <div class="m-5">
@@ -556,8 +581,8 @@
                   <img
                     v-if="state.ruleForm.businessLicense"
                     :src="state.ruleForm.businessLicense"
-                    width="200px"
-                    height="150px"
+                    width="80px"
+                    height="50px"
                   />
                   <el-button v-else type="primary">涓婁紶</el-button>
                 </el-upload>
@@ -652,7 +677,43 @@
                 />
               </el-form-item>
             </el-col>
+            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
+              <el-form-item label="寮�鎴疯" prop="bankName">
+                <el-input
+                  v-model="state.ruleForm.bankName"
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="24" :lg="16" :xl="16">
+              <el-form-item label="閾惰璐﹀彿" prop="bankAccount">
+                <el-input
+                  v-model="state.ruleForm.bankAccount"
+                  placeholder="璇疯緭鍏�"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+              <el-form-item label="寮�鎴疯鏀舵浜岀淮鐮�" prop="bankAccountIMG">
+                <el-upload
+                  :action="`${baseUrlApi('/api/upFile/file')}`"
+                  :show-file-list="false"
+                  :on-success="handlebankAccountIMG"
+                  :before-upload="beforeAvatarUpload"
+                  :headers="state.headers"
+                >
+                  <img
+                    v-if="state.ruleForm.bankAccountIMG"
+                    :src="state.ruleForm.bankAccountIMG"
+                    width="85.6px"
+                    height="5.4px"
+                  />
+                  <el-button v-else type="primary">涓婁紶</el-button>
+                </el-upload>
+              </el-form-item>
+            </el-col>
           </el-row>
+
           <el-row>
             <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
               <el-form-item label="娉曞畾浠h〃浜�" prop="legalRepresentativeIdCard">
@@ -746,22 +807,6 @@
               <el-form-item label="鑱旂郴鐢佃瘽" prop="operatorPhone">
                 <el-input
                   v-model="state.ruleForm.operatorPhone"
-                  placeholder="璇疯緭鍏�"
-                />
-              </el-form-item>
-            </el-col>
-            <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-              <el-form-item label="寮�鎴疯" prop="bankName">
-                <el-input
-                  v-model="state.ruleForm.bankName"
-                  placeholder="璇疯緭鍏�"
-                />
-              </el-form-item>
-            </el-col>
-            <el-col :xs="24" :sm="24" :md="24" :lg="16" :xl="16">
-              <el-form-item label="閾惰璐﹀彿" prop="bankAccount">
-                <el-input
-                  v-model="state.ruleForm.bankAccount"
                   placeholder="璇疯緭鍏�"
                 />
               </el-form-item>
diff --git a/src/views/newregister/index.vue b/src/views/newregister/index.vue
index e908128..89ec5e5 100644
--- a/src/views/newregister/index.vue
+++ b/src/views/newregister/index.vue
@@ -14,7 +14,7 @@
           >
         </div>
         <el-divider />
-        <div class="formContent">
+        <div v-loading="isLoading" class="formContent">
           <el-form
             ref="ruleFormRef"
             style="width: 95%"
@@ -234,6 +234,7 @@
               <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
                 <el-form-item label="韬唤璇�" prop="legalRepresentativeIdCard">
                   <el-upload
+                    :ref="uploadSFZ"
                     :action="`${baseUrlApi('/api/upFile/uploadIdCord?PageName=FRONT')}`"
                     :show-file-list="false"
                     :on-success="handleAvatarSuccessLegalRepresentative"
@@ -400,7 +401,7 @@
                 v-model="state.checkedAgree"
                 name="type"
               />鎴戝凡闃呰骞跺悓鎰�
-              <el-link type="primary" :underline="false"
+              <el-link type="primary" :underline="false" @click="openAgreement"
                 >銆婇潪鏀块噰鎷涙爣閲囪喘浜ゆ槗骞冲彴鐢ㄦ埛鍗忚銆�</el-link
               >
             </el-form-item>
@@ -437,7 +438,10 @@
   sumbitData,
   handleAvatarSuccess,
   loadNode,
-  handlebankAccountIMG
+  handlebankAccountIMG,
+  isLoading,
+  uploadSFZ,
+  openAgreement
 } = useRegister();
 
 defineOptions({
diff --git a/src/views/newregister/utils/hook.tsx b/src/views/newregister/utils/hook.tsx
index 83102f4..ba79b67 100644
--- a/src/views/newregister/utils/hook.tsx
+++ b/src/views/newregister/utils/hook.tsx
@@ -2,6 +2,7 @@
   reactive,
   computed,
   ref,
+  h,
   onMounted,
   defineAsyncComponent,
   onUnmounted,
@@ -33,7 +34,7 @@
 } from "@/api/register/index";
 import { cloneDeep } from "@pureadmin/utils";
 import { changeCusExtend } from "@/api/mine";
-
+import agreement from "../component/agreement.vue";
 const route = useRoute();
 export function useRegister() {
   const isLoading = ref(false);
@@ -45,7 +46,7 @@
     isShowPassword: false,
     ruleForm: {
       id: null, // 涓婚敭Id锛屽彲涓虹┖
-      enterpriseType: "", // 浼佷笟绫诲瀷锛屼笉鍙┖锛屾渶灏忛暱搴�1
+      enterpriseType: [], // 浼佷笟绫诲瀷锛屼笉鍙┖锛屾渶灏忛暱搴�1
       exRoleCode: "", // 涓讳綋瑙掕壊浠g爜锛屼笉鍙┖锛屾渶灏忛暱搴�1
       transactionCode: "", // 浜ゆ槗涓讳綋浠g爜锛堝悓瑙掕壊浠g爜exRoleCode锛屼笉鍙┖锛屾渶灏忛暱搴�1锛�
       businessLicense: "", // 钀ヤ笟鎵х収鏂囦欢璺緞锛屼笉鍙┖锛屾渶灏忛暱搴�1
@@ -327,7 +328,7 @@
 
   // 楠岃瘉鐮佸尯鍩熸枃瀛楄鏄�
   const spanRef = ref();
-
+  const uploadSFZ = ref();
   async function sendValidationCode() {
     if (!state.ruleForm.operatorPhone) {
       return message("璇峰厛杈撳叆涓氬姟缁忓姙浜鸿仈绯荤數璇�", { type: "warning" });
@@ -359,51 +360,52 @@
   async function sumbitData(formEl: FormInstance | undefined) {
     if (!formEl) return;
     await formEl.validate((valid, fields) => {
-      router.replace({
-        path: "/RegisterSucess",
-        query: {
-          code: state.ruleForm.exRoleCode
-        }
-      });
-      if (valid && state.checkedAgree) {
-        addDialog({
-          width: "20%",
-          title: "纭淇℃伅",
-          contentRenderer: () => (
-            <p>
-              璇锋偍璁ょ湡鏍稿濉姤鐨勮祫鏂欐槸鍚︽纭紝濡傚洜濉姤閿欒褰卞搷鍚庣画鎶曟爣绛夋搷浣滐紝骞冲彴涓嶆壙鎷呬换浣曡矗浠伙紝鎵�鏈夊悗鏋滈渶瑕佽嚜琛屾壙鎷咃紝璇锋偍璋ㄦ厧濉啓锛�
-            </p>
-          ), // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶锛岄渶瑕佸湪script寮�鍚痩ang="tsx"锛�
-          closeCallBack: ({ options, args }) => {
-            // options.props 鏄搷搴斿紡鐨�
-            // const { formInline } = options.props as FormProps;
-            // const text = `濮撳悕锛�${formInline.user} 鍩庡競锛�${formInline.region}`;
-            if (args?.command === "cancel") {
-              // 鎮ㄧ偣鍑讳簡鍙栨秷鎸夐挳
-              // active.value -= 1;
-            } else if (args?.command === "sure") {
-              state.ruleForm.account = state.ruleForm.operatorPhone;
-              const obj = cloneDeep(state.ruleForm);
-              obj.enterpriseType = state.ruleForm.enterpriseType.join(",");
-              register(obj).then(res => {
-                if (res?.code == 200) {
-                  message("娉ㄥ唽鎴愬姛锛�", { type: "success" });
-                  router.replace({
-                    path: "/RegisterSucess",
-                    query: {
-                      code: obj.exRoleCode
-                    }
-                  });
-                } else {
-                  message(res?.message, { type: "warning" });
-                }
-              });
-            } else {
+      if (valid) {
+        if (state.checkedAgree) {
+          addDialog({
+            width: "20%",
+            title: "纭淇℃伅",
+            contentRenderer: () => (
+              <p>
+                璇锋偍璁ょ湡鏍稿濉姤鐨勮祫鏂欐槸鍚︽纭紝濡傚洜濉姤閿欒褰卞搷鍚庣画鎶曟爣绛夋搷浣滐紝骞冲彴涓嶆壙鎷呬换浣曡矗浠伙紝鎵�鏈夊悗鏋滈渶瑕佽嚜琛屾壙鎷咃紝璇锋偍璋ㄦ厧濉啓锛�
+              </p>
+            ), // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶锛岄渶瑕佸湪script寮�鍚痩ang="tsx"锛�
+            closeCallBack: ({ options, args }) => {
+              if (args?.command === "cancel") {
+                // 鎮ㄧ偣鍑讳簡鍙栨秷鎸夐挳
+              } else if (args?.command === "sure") {
+                state.ruleForm.account = state.ruleForm.operatorPhone;
+                const obj = cloneDeep(state.ruleForm);
+                obj.enterpriseType = state.ruleForm.enterpriseType.join(",");
+                register(obj).then(res => {
+                  if (res?.code == 200) {
+                    message("娉ㄥ唽鎴愬姛锛�", { type: "success" });
+                    router.replace({
+                      path: "/RegisterSucess",
+                      query: {
+                        code: obj.exRoleCode
+                      }
+                    });
+                  } else {
+                    message(res?.message, { type: "warning" });
+                  }
+                });
+              } else {
+              }
             }
-          }
+          });
+        } else {
+          message("璇峰嬀閫夌敤鎴峰崗璁�", { type: "warning" });
+        }
+      } else {
+        const fail = [];
+        for (const key in fields) {
+          fail.push(fields[key][0].message);
+        }
+        message(fail[0], {
+          type: "warning"
         });
-        return;
-      } else message("璇峰嬀閫夌敤鎴峰崗璁�", { type: "warning" });
+      }
     });
   }
   function handleAvatarSuccess(
@@ -437,8 +439,12 @@
     if (response.code == "200") {
       // state.ruleForm.businessLicense = URL.createObjectURL(uploadFile.raw!);
       const res = response.result;
+      // if (res.info.Name !== state.ruleForm.enterpriseName) {
+      //   message("璇蜂笂浼犳硶瀹氫唬琛ㄤ汉韬唤璇侊紒", { type: "error" });
+      // } else {
       state.ruleForm.legalRepresentativeIdCard = res.url; // 娉曞畾浠h〃浜鸿韩浠借瘉鏂囦欢璺緞
       state.ruleForm.legalRepresentativeIdNumber = res.info.IdNum; // 娉曞畾浠h〃浜鸿韩浠借瘉鍙风爜
+      // }
     } else {
       message(response.message, {
         type: "error"
@@ -513,6 +519,20 @@
       return resolve([]);
     }
   }
+  function openAgreement() {
+    addDialog({
+      width: "40%",
+      title: "纭淇℃伅",
+      contentRenderer: () => h(agreement), // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶锛岄渶瑕佸湪script寮�鍚痩ang="tsx"锛�
+      closeCallBack: ({ options, args }) => {
+        if (args?.command === "cancel") {
+          // 鎮ㄧ偣鍑讳簡鍙栨秷鎸夐挳
+        } else if (args?.command === "sure") {
+        } else {
+        }
+      }
+    });
+  }
   return {
     state,
     resetForm,
@@ -520,12 +540,15 @@
     getCaptcha,
     ruleFormRef,
     spanRef,
+    uploadSFZ,
+    isLoading,
     beforeAvatarUpload,
     handleAvatarSuccessOperator,
     handleAvatarSuccessLegalRepresentative,
     sumbitData,
     handleAvatarSuccess,
     loadNode,
-    handlebankAccountIMG
+    handlebankAccountIMG,
+    openAgreement
   };
 }
diff --git a/src/views/newregister/utils/types.ts b/src/views/newregister/utils/types.ts
index d96ef2c..a4315c5 100644
--- a/src/views/newregister/utils/types.ts
+++ b/src/views/newregister/utils/types.ts
@@ -4,7 +4,7 @@
   /** 涓婚敭Id */
   id?: number | null;
   /** 浼佷笟绫诲瀷锛堜笉鍙┖锛� */
-  enterpriseType: string;
+  enterpriseType: [];
   /** 涓讳綋瑙掕壊浠g爜锛堜笉鍙┖锛屽師瀛楁TransactionCode锛� */
   exRoleCode: string;
   /** 浜ゆ槗涓讳綋浠g爜锛堝悓瑙掕壊浠g爜锛屼笉鍙┖锛� */
@@ -50,6 +50,7 @@
   /** 鐢佃瘽鍙风爜鏍¢獙鐮侊紙涓嶅彲绌猴級 */
   phoneVCode: string;
   bankAccountIMG: string;
+  account?: string;
 }
 interface RoleInfo {
   /** 瑙掕壊缂栫爜 */
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index f1841d7..29d5e4c 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -40,7 +40,6 @@
   onTreeSelect,
   handleUpdate,
   handleDelete,
-  handleUpload,
   handleReset,
   handleRole,
   handleSizeChange,
@@ -52,16 +51,14 @@
 
 <template>
   <div :class="['flex', 'justify-between', deviceDetection() && 'flex-wrap']">
-    <tree
+    <!-- <tree
       ref="treeRef"
       :class="['mr-2', deviceDetection() ? 'w-full' : 'min-w-[200px]']"
       :treeData="treeData"
       :treeLoading="treeLoading"
       @tree-select="onTreeSelect"
-    />
-    <div
-      :class="[deviceDetection() ? ['w-full', 'mt-2'] : 'w-[calc(100%-200px)]']"
-    >
+    /> -->
+    <div class="w-full mt-2">
       <el-form
         ref="formRef"
         :inline="true"
@@ -110,11 +107,7 @@
         </el-form-item>
       </el-form>
 
-      <PureTableBar
-        title="鐢ㄦ埛绠$悊锛堜粎婕旂ず锛屾搷浣滃悗涓嶇敓鏁堬級"
-        :columns="columns"
-        @refresh="onSearch"
-      >
+      <PureTableBar title="" :columns="columns" @refresh="onSearch">
         <template #buttons>
           <el-button
             type="primary"
@@ -160,7 +153,6 @@
             :size="size"
             :data="dataList"
             :columns="dynamicColumns"
-            :pagination="{ ...pagination, size }"
             :header-cell-style="{
               background: 'var(--el-fill-color-light)',
               color: 'var(--el-text-color-primary)'
diff --git a/src/views/system/user/utils/hook.tsx b/src/views/system/user/utils/hook.tsx
index ba17db1..1a1a03c 100644
--- a/src/views/system/user/utils/hook.tsx
+++ b/src/views/system/user/utils/hook.tsx
@@ -2,14 +2,14 @@
 import dayjs from "dayjs";
 import roleForm from "../form/role.vue";
 import editForm from "../form/index.vue";
-import { zxcvbn } from "@zxcvbn-ts/core";
+// import { zxcvbn } from "@zxcvbn-ts/core";
 import { handleTree } from "@/utils/tree";
 import { message } from "@/utils/message";
 import userAvatar from "@/assets/user.jpg";
 import { usePublicHooks } from "../../hooks";
 import { addDialog } from "@/components/ReDialog";
 import type { PaginationProps } from "@pureadmin/table";
-import ReCropperPreview from "@/components/ReCropperPreview";
+// import ReCropperPreview from "@/components/ReCropperPreview";
 import type { FormItemProps, RoleFormItemProps } from "../utils/types";
 import {
   getKeyList,
@@ -95,7 +95,7 @@
     },
     {
       label: "鐢ㄦ埛鍚嶇О",
-      prop: "username",
+      prop: "name",
       minWidth: 130
     },
     {
@@ -104,16 +104,16 @@
       minWidth: 130
     },
     {
-      label: "鎬у埆",
-      prop: "sex",
+      label: "瑙掕壊",
+      prop: "isManager",
       minWidth: 90,
       cellRenderer: ({ row, props }) => (
         <el-tag
           size={props.size}
-          type={row.sex === 1 ? "danger" : null}
+          type={row.isManager ? "danger" : null}
           effect="plain"
         >
-          {row.sex === 1 ? "濂�" : "鐢�"}
+          {row.isManager ? "绠$悊鍛�" : "鍛樺伐"}
         </el-tag>
       )
     },
@@ -124,9 +124,10 @@
     },
     {
       label: "鎵嬫満鍙风爜",
-      prop: "phone",
+      prop: "phoneNumber",
       minWidth: 90,
-      formatter: ({ phone }) => hideTextAtIndex(phone, { start: 3, end: 6 })
+      formatter: ({ phoneNumber }) =>
+        hideTextAtIndex(phoneNumber, { start: 3, end: 6 })
     },
     {
       label: "鐘舵��",
@@ -272,15 +273,15 @@
 
   async function onSearch() {
     loading.value = true;
-    const { data } = await getUserList(toRaw(form));
-    dataList.value = data.list;
-    pagination.total = data.total;
-    pagination.pageSize = data.pageSize;
-    pagination.currentPage = data.currentPage;
+    const { result } = await getUserList(toRaw(form));
+    dataList.value = result;
+    // pagination.total = data.total;
+    // pagination.pageSize = data.pageSize;
+    // pagination.currentPage = data.currentPage;
 
-    setTimeout(() => {
-      loading.value = false;
-    }, 500);
+    // setTimeout(() => {
+    loading.value = false;
+    // }, 500);
   }
 
   const resetForm = formEl => {
@@ -361,33 +362,32 @@
 
   const cropRef = ref();
   /** 涓婁紶澶村儚 */
-  function handleUpload(row) {
-    addDialog({
-      title: "瑁佸壀銆佷笂浼犲ご鍍�",
-      width: "40%",
-      closeOnClickModal: false,
-      fullscreen: deviceDetection(),
-      contentRenderer: () =>
-        h(ReCropperPreview, {
-          ref: cropRef,
-          imgSrc: row.avatar || userAvatar,
-          onCropper: info => (avatarInfo.value = info)
-        }),
-      beforeSure: done => {
-        console.log("瑁佸壀鍚庣殑鍥剧墖淇℃伅锛�", avatarInfo.value);
-        // 鏍规嵁瀹為檯涓氬姟浣跨敤avatarInfo.value鍜宺ow閲岀殑鏌愪簺瀛楁鍘昏皟鐢ㄤ笂浼犲ご鍍忔帴鍙e嵆鍙�
-        done(); // 鍏抽棴寮规
-        onSearch(); // 鍒锋柊琛ㄦ牸鏁版嵁
-      },
-      closeCallBack: () => cropRef.value.hidePopover()
-    });
-  }
+  // function handleUpload(row) {
+  //   addDialog({
+  //     title: "瑁佸壀銆佷笂浼犲ご鍍�",
+  //     width: "40%",
+  //     closeOnClickModal: false,
+  //     fullscreen: deviceDetection(),
+  //     contentRenderer: () =>
+  //       h(ReCropperPreview, {
+  //         ref: cropRef,
+  //         imgSrc: row.avatar || userAvatar,
+  //         onCropper: info => (avatarInfo.value = info)
+  //       }),
+  //     beforeSure: done => {
+  //       console.log("瑁佸壀鍚庣殑鍥剧墖淇℃伅锛�", avatarInfo.value);
+  //       // 鏍规嵁瀹為檯涓氬姟浣跨敤avatarInfo.value鍜宺ow閲岀殑鏌愪簺瀛楁鍘昏皟鐢ㄤ笂浼犲ご鍍忔帴鍙e嵆鍙�
+  //       done(); // 鍏抽棴寮规
+  //       onSearch(); // 鍒锋柊琛ㄦ牸鏁版嵁
+  //     },
+  //     closeCallBack: () => cropRef.value.hidePopover()
+  //   });
+  // }
 
-  watch(
-    pwdForm,
-    ({ newPwd }) =>
-      (curScore.value = isAllEmpty(newPwd) ? -1 : zxcvbn(newPwd).score)
-  );
+  watch();
+  // pwdForm
+  // ({ newPwd }) =>
+  //   (curScore.value = isAllEmpty(newPwd) ? -1 : zxcvbn(newPwd).score)
 
   /** 閲嶇疆瀵嗙爜 */
   function handleReset(row) {
@@ -524,7 +524,7 @@
     onTreeSelect,
     handleUpdate,
     handleDelete,
-    handleUpload,
+    // handleUpload,
     handleReset,
     handleRole,
     handleSizeChange,

--
Gitblit v1.9.1