后台登录已经成功

This commit is contained in:
2025-08-31 21:06:52 +08:00
parent 5b12c6c163
commit c658033023
10 changed files with 1098 additions and 518 deletions

View File

@@ -1,25 +1,40 @@
<template>
<a-config-provider :locale="zhCN">
<router-view />
<component :is="layout">
<router-view />
</component>
</a-config-provider>
</template>
<script setup lang="ts">
import zhCN from 'ant-design-vue/es/locale/zh_CN'
import { onMounted } from 'vue'
import { computed } from 'vue'
import { useRoute } from 'vue-router'
import { useAppStore } from '@/stores/app'
import MainLayout from '@/layouts/MainLayout.vue'
import zhCN from 'ant-design-vue/es/locale/zh_CN'
const route = useRoute()
const appStore = useAppStore()
onMounted(() => {
// 初始化应用
appStore.initialize()
// 根据路由元信息确定使用的布局
const layout = computed(() => {
const layoutName = route.meta?.layout || 'default'
// 开发环境调试信息
if (import.meta.env.DEV) {
console.log('🎯 应用组件挂载完成')
if (layoutName === 'main') {
return MainLayout
}
// 默认布局(如登录页)
return 'div'
})
// 初始化应用
appStore.initialize()
// 开发环境调试信息
if (import.meta.env.DEV) {
console.log('🎯 应用组件挂载完成')
}
</script>
<style scoped>

View File

@@ -78,11 +78,31 @@ export const deleteMerchant = (id: number) =>
export const updateMerchantStatus = (id: number, status: string) =>
request.put<{ success: boolean; code: number; message: string }>(`/merchants/${id}/status`, { status })
// 审核通过商家
export const approveMerchant = (id: number) =>
request.put<{ success: boolean; code: number; message: string }>(`/merchants/${id}/approve`)
// 审核拒绝商家
export const rejectMerchant = (id: number, reason: string) =>
request.put<{ success: boolean; code: number; message: string }>(`/merchants/${id}/reject`, { reason })
// 禁用商家
export const disableMerchant = (id: number) =>
request.put<{ success: boolean; code: number; message: string }>(`/merchants/${id}/disable`)
// 启用商家
export const enableMerchant = (id: number) =>
request.put<{ success: boolean; code: number; message: string }>(`/merchants/${id}/enable`)
export default {
getMerchants,
getMerchant,
createMerchant,
updateMerchant,
deleteMerchant,
updateMerchantStatus
updateMerchantStatus,
approveMerchant,
rejectMerchant,
disableMerchant,
enableMerchant
}

View File

@@ -8,7 +8,7 @@ export interface User {
email: string
phone: string
avatar: string
gender: string
gender: number
birthday: string
points: number
level: number
@@ -25,13 +25,10 @@ export interface User {
export interface UserQueryParams {
page?: number
limit?: number
username?: string
nickname?: string
phone?: string
pageSize?: number
keyword?: string
userType?: string
status?: string
start_date?: string
end_date?: string
}
export interface UserCreateData {
@@ -65,9 +62,19 @@ export interface ApiResponse<T = any> {
data: T
}
export interface UserListResponse {
users: User[]
pagination: {
page: number
pageSize: number
total: number
totalPages: number
}
}
// 获取用户列表
export const getUsers = (params?: UserQueryParams) =>
request.get<ApiResponse<{ users: User[]; pagination: any }>>('/users', { params })
request.get<ApiResponse<UserListResponse>>('/users', { params })
// 获取用户详情
export const getUser = (id: number) =>
@@ -85,17 +92,14 @@ export const updateUser = (id: number, data: UserUpdateData) =>
export const deleteUser = (id: number) =>
request.delete<ApiResponse<void>>(`/users/${id}`)
// 批量删除用户
export const batchDeleteUsers = (ids: number[]) =>
request.post<ApiResponse<void>>('/users/batch-delete', { ids })
// 批量更新用户状态
export const batchUpdateUserStatus = (userIds: number[], status: string) =>
request.post<ApiResponse<{ message: string; affectedRows: number }>>('/users/batch-status', { userIds, status })
// 更新用户状态
export const updateUserStatus = (id: number, status: string) =>
request.put<ApiResponse<User>>(`/users/${id}/status`, { status })
// 重置用户密码
export const resetUserPassword = (id: number, password: string) =>
request.put<ApiResponse<User>>(`/users/${id}/password`, { password })
export default {
getUsers,
@@ -103,7 +107,5 @@ export default {
createUser,
updateUser,
deleteUser,
batchDeleteUsers,
updateUserStatus,
resetUserPassword
batchUpdateUserStatus
}

File diff suppressed because it is too large Load Diff

View File

@@ -21,7 +21,8 @@ const routes: RouteRecordRaw[] = [
meta: {
requiresAuth: true,
title: '仪表板',
icon: 'DashboardOutlined'
icon: 'DashboardOutlined',
layout: 'main' // 添加布局信息
}
},
{
@@ -32,7 +33,8 @@ const routes: RouteRecordRaw[] = [
requiresAuth: true,
title: '用户管理',
icon: 'UserOutlined',
permissions: ['user:read']
permissions: ['user:read'],
layout: 'main' // 添加布局信息
}
},
{
@@ -43,7 +45,8 @@ const routes: RouteRecordRaw[] = [
requiresAuth: true,
title: '商家管理',
icon: 'ShopOutlined',
permissions: ['merchant:read']
permissions: ['merchant:read'],
layout: 'main' // 添加布局信息
}
},
{
@@ -54,7 +57,8 @@ const routes: RouteRecordRaw[] = [
requiresAuth: true,
title: '旅行管理',
icon: 'CompassOutlined',
permissions: ['travel:read']
permissions: ['travel:read'],
layout: 'main' // 添加布局信息
}
},
{
@@ -65,7 +69,8 @@ const routes: RouteRecordRaw[] = [
requiresAuth: true,
title: '动物管理',
icon: 'HeartOutlined',
permissions: ['animal:read']
permissions: ['animal:read'],
layout: 'main' // 添加布局信息
}
},
{
@@ -76,7 +81,8 @@ const routes: RouteRecordRaw[] = [
requiresAuth: true,
title: '订单管理',
icon: 'ShoppingCartOutlined',
permissions: ['order:read']
permissions: ['order:read'],
layout: 'main' // 添加布局信息
}
},
{
@@ -87,7 +93,8 @@ const routes: RouteRecordRaw[] = [
requiresAuth: true,
title: '推广管理',
icon: 'GiftOutlined',
permissions: ['promotion:read']
permissions: ['promotion:read'],
layout: 'main' // 添加布局信息
}
},
{
@@ -98,7 +105,8 @@ const routes: RouteRecordRaw[] = [
requiresAuth: true,
title: '系统设置',
icon: 'SettingOutlined',
permissions: ['system:read']
permissions: ['system:read'],
layout: 'main' // 添加布局信息
}
},
{