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