From 882feaf3ff8b0ff1967565dbec1d07d9fe8623b9 Mon Sep 17 00:00:00 2001 From: sexygoat <1538832180@qq.com> Date: Sat, 31 Jan 2026 18:12:58 +0800 Subject: [PATCH] =?UTF-8?q?fetch(modify):=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/composables/useLogin.ts | 24 +- src/router/guards/beforeEach.ts | 9 + src/types/api/device.ts | 5 +- src/types/api/permission.ts | 18 +- src/views/auth/login/index.vue | 28 +- .../order-management/order-list/index.vue | 84 +++- src/views/system/permission/index.vue | 193 ++++----- src/views/system/role/index.vue | 396 ++++++++++++------ 8 files changed, 452 insertions(+), 305 deletions(-) diff --git a/src/composables/useLogin.ts b/src/composables/useLogin.ts index 680eaa6..192f47e 100644 --- a/src/composables/useLogin.ts +++ b/src/composables/useLogin.ts @@ -42,10 +42,6 @@ export function useLogin() { // 加载状态 const loading = ref(false) - // 拖拽验证 - const isPassing = ref(false) - const isClickPass = ref(false) - // 表单数据 const formData = reactive({ account: '', @@ -115,13 +111,6 @@ export function useLogin() { const valid = await formRef.value.validate() if (!valid) return - // 检查拖拽验证 - if (!isPassing.value) { - isClickPass.value = true - ElMessage.warning(t('login.placeholder[2]')) - return - } - loading.value = true // 判断使用 Mock 还是真实 API @@ -248,14 +237,6 @@ export function useLogin() { }, 150) } - /** - * 重置拖拽验证 - */ - const resetDragVerify = () => { - isPassing.value = false - isClickPass.value = false - } - // 组件挂载时初始化 onMounted(() => { initForm() @@ -266,11 +247,8 @@ export function useLogin() { formData, rules, loading, - isPassing, - isClickPass, mockAccounts, setupAccount, - handleLogin, - resetDragVerify + handleLogin } } diff --git a/src/router/guards/beforeEach.ts b/src/router/guards/beforeEach.ts index 733418c..c20ab15 100644 --- a/src/router/guards/beforeEach.ts +++ b/src/router/guards/beforeEach.ts @@ -239,6 +239,15 @@ async function processBackendMenu(router: Router): Promise { try { const userStore = useUserStore() + + // 如果是超级管理员(user_type === 1),直接使用所有 asyncRoutes + if (userStore.isSuperAdmin) { + const menuList = asyncRoutes.map((route) => menuDataToRouter(route)) + await registerAndStoreMenu(router, menuList, closeLoading) + return + } + + // 普通用户:使用后端返回的菜单 const backendMenus = userStore.menus || [] const routeMap = buildRouteMap(asyncRoutes) diff --git a/src/types/api/device.ts b/src/types/api/device.ts index 1e9b411..0fc31e2 100644 --- a/src/types/api/device.ts +++ b/src/types/api/device.ts @@ -51,11 +51,10 @@ export interface DeviceQueryParams extends PaginationParams { // 设备列表响应 export interface DeviceListResponse { - list: Device[] | null // 设备列表 + items: Device[] | null // 设备列表 page: number // 当前页码 - page_size: number // 每页数量 + size: number // 每页数量 total: number // 总数 - total_pages: number // 总页数 } // ========== 设备卡绑定相关 ========== diff --git a/src/types/api/permission.ts b/src/types/api/permission.ts index d18cab7..c76e278 100644 --- a/src/types/api/permission.ts +++ b/src/types/api/permission.ts @@ -36,15 +36,17 @@ export interface Permission { children?: Permission[] // 子权限列表(树形结构) } -// 权限树节点 +// 权限树节点(匹配后端 DtoPermissionTreeNode) export interface PermissionTreeNode { - id: string | number - label: string - value: string - permissionCode: string - permissionType: PermissionType - parentId?: string | number - children?: PermissionTreeNode[] + id: number // 权限ID + perm_code: string // 权限编码 + perm_name: string // 权限名称 + perm_type: number // 权限类型 (1:菜单, 2:按钮) + url?: string // 请求路径 + platform?: string // 适用端口 (all:全部, web:Web后台, h5:H5端) + sort?: number // 排序值 + available_for_role_types?: string // 可用角色类型 (1:平台角色, 2:客户角色) + children?: PermissionTreeNode[] // 子权限列表 } // 权限查询参数 diff --git a/src/views/auth/login/index.vue b/src/views/auth/login/index.vue index b420f0c..534b139 100644 --- a/src/views/auth/login/index.vue +++ b/src/views/auth/login/index.vue @@ -69,30 +69,12 @@ autocomplete="off" /> -
-
- -
-

{{ - $t('login.placeholder[2]') - }}

-
{{ $t('login.rememberPwd') }} - {{ $t('login.forgetPwd') }} +
@@ -138,24 +120,16 @@ formData, rules, loading, - isPassing, - isClickPass, mockAccounts, setupAccount, handleLogin } = useLogin() - const dragVerify = ref() const systemName = AppConfig.systemInfo.name - const { width } = useWindowSize() // 处理提交 const handleSubmit = async () => { await handleLogin() - // 重置拖拽验证 - if (dragVerify.value) { - dragVerify.value.reset() - } } // 切换语言 diff --git a/src/views/order-management/order-list/index.vue b/src/views/order-management/order-list/index.vue index 6a28a5d..4a2854d 100644 --- a/src/views/order-management/order-list/index.vue +++ b/src/views/order-management/order-list/index.vue @@ -105,11 +105,31 @@ :label="t('orderManagement.createForm.deviceId')" prop="device_id" > - + clearable + > + +
+ {{ device.device_no }} + + {{ device.device_name }} + +
+
+