后台登录已经成功
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
@@ -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' // 添加布局信息
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user