feat: 网络层优化
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* Banner 管理 - 接口服务
|
||||
* 该页面使用的所有接口集中管理
|
||||
*/
|
||||
import { get, post } from '@/utils/request';
|
||||
import { USE_MOCK, MOCK_DELAY } from '@/config/mock';
|
||||
import { MOCK_BANNER_LIST } from '@/config/mock/bannerList';
|
||||
import type {
|
||||
BannerListQueryParams,
|
||||
BannerSaveParams,
|
||||
BannerDelParams,
|
||||
BannerActiveParams,
|
||||
TournamentAdminBannerListVO,
|
||||
ApiResult,
|
||||
} from '@/api/banner/types';
|
||||
|
||||
export type {
|
||||
TournamentAdminBannerListVO,
|
||||
BannerListQueryParams,
|
||||
BannerSaveParams,
|
||||
BannerDelParams,
|
||||
BannerActiveParams,
|
||||
ApiResult,
|
||||
} from '@/api/banner/types';
|
||||
|
||||
// ============================================================
|
||||
// URL 常量
|
||||
// ============================================================
|
||||
const bannerList = '/manager/banner/list';
|
||||
const bannerDel = '/manager/banner/del';
|
||||
const bannerSave = '/manager/banner/save';
|
||||
const bannerUpdate = '/manager/banner/update';
|
||||
const bannerActive = '/manager/banner/active';
|
||||
|
||||
const delay = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));
|
||||
|
||||
// ============================================================
|
||||
// API 函数
|
||||
// ============================================================
|
||||
|
||||
/** Banner 列表 */
|
||||
export async function getBannerList(
|
||||
params: BannerListQueryParams,
|
||||
): Promise<ApiResult<TournamentAdminBannerListVO[]>> {
|
||||
if (USE_MOCK) {
|
||||
await delay(MOCK_DELAY);
|
||||
return { code: 200, msg: 'success', data: MOCK_BANNER_LIST };
|
||||
}
|
||||
return get(bannerList, params as Record<string, any>);
|
||||
}
|
||||
|
||||
/** 删除 Banner */
|
||||
export function delBanner(id: string): Promise<ApiResult<Record<string, never>>> {
|
||||
return post(bannerDel, { id });
|
||||
}
|
||||
|
||||
/** 新增 Banner */
|
||||
export function saveBanner(params: BannerSaveParams): Promise<ApiResult<Record<string, never>>> {
|
||||
return post(bannerSave, params);
|
||||
}
|
||||
|
||||
/** 编辑 Banner */
|
||||
export function updateBanner(params: BannerSaveParams): Promise<ApiResult<Record<string, never>>> {
|
||||
return post(bannerUpdate, params);
|
||||
}
|
||||
|
||||
/** 启用/禁用 Banner */
|
||||
export function toggleBannerActive(
|
||||
params: BannerActiveParams,
|
||||
): Promise<ApiResult<Record<string, never>>> {
|
||||
return post(bannerActive, params);
|
||||
}
|
||||
@@ -10,7 +10,7 @@ import {
|
||||
toggleBannerActive,
|
||||
type TournamentAdminBannerListVO,
|
||||
type BannerListQueryParams,
|
||||
} from '@/api/banner';
|
||||
} from './services';
|
||||
import { getProvinceCityOptions } from '@/utils/areaData';
|
||||
|
||||
// ============================================================
|
||||
@@ -138,7 +138,7 @@ export function useBannerModel() {
|
||||
console.log('Banner列表查询参数:', queryParams);
|
||||
const res = await getBannerList(queryParams);
|
||||
|
||||
if (res.code === 200) {
|
||||
if (res.code == 200) {
|
||||
setAllData(res.data);
|
||||
setPagination({ current: 1, pageSize: 10, total: res.data.length });
|
||||
} else {
|
||||
@@ -205,7 +205,7 @@ export function useBannerModel() {
|
||||
const res = isEdit
|
||||
? await updateBanner({ ...params, id: editingRecord.value.id })
|
||||
: await saveBanner(params);
|
||||
if (res.code === 200) {
|
||||
if (res.code == 200) {
|
||||
message.success(isEdit ? '编辑成功' : '新增成功');
|
||||
handleCloseModal();
|
||||
handleSearch();
|
||||
@@ -224,7 +224,7 @@ export function useBannerModel() {
|
||||
setLoading(true);
|
||||
try {
|
||||
const res = await delBanner(record.id);
|
||||
if (res.code === 200) {
|
||||
if (res.code == 200) {
|
||||
message.success('删除成功');
|
||||
handleSearch();
|
||||
} else {
|
||||
@@ -244,7 +244,7 @@ export function useBannerModel() {
|
||||
const newStatus = record.status === '1' ? '0' : '1';
|
||||
const actionText = newStatus === '1' ? '启用' : '禁用';
|
||||
const res = await toggleBannerActive({ id: record.id, status: newStatus });
|
||||
if (res.code === 200) {
|
||||
if (res.code == 200) {
|
||||
message.success(`${actionText}成功`);
|
||||
handleSearch();
|
||||
} else {
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
type TournamentAdminInfoVO,
|
||||
type InnerCategoryVO,
|
||||
type TournamentAdminInfoSignupVO,
|
||||
} from '@/api/events';
|
||||
} from '../model/services';
|
||||
import { useState } from '@/hooks';
|
||||
import styles from './EventDetailModal.module.less';
|
||||
|
||||
@@ -99,7 +99,7 @@ export default defineComponent({
|
||||
page: String(page),
|
||||
limit: String(PAGE_SIZE),
|
||||
});
|
||||
if (res.code === 200) {
|
||||
if (res.code == 200) {
|
||||
categoryPlayers[categoryId] = res.data.list;
|
||||
categoryPlayerTotal[categoryId] = res.data.total;
|
||||
categoryPlayerPage[categoryId] = page;
|
||||
@@ -127,7 +127,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
const res = await getEventDetail(String(id));
|
||||
if (res.code === 200) {
|
||||
if (res.code == 200) {
|
||||
setDetail(res.data);
|
||||
// 为每个组别加载第一页选手
|
||||
for (const cat of res.data.categoryList) {
|
||||
|
||||
@@ -20,7 +20,7 @@ import {
|
||||
ID_CARD_OPTIONS,
|
||||
ID_CARD_IMAGE_OPTIONS,
|
||||
} from './model/useEventListModel';
|
||||
import { toggleEventOnline } from '@/api/events';
|
||||
import { toggleEventOnline } from './model/services';
|
||||
import { regionOptions } from '@/utils/areaData';
|
||||
import { useContainerSize, useState } from '@/hooks';
|
||||
import EventRegulationModal from './components/EventRegulationModal';
|
||||
@@ -152,7 +152,7 @@ export default defineComponent({
|
||||
const online = isRemoved ? '1' : '0';
|
||||
try {
|
||||
const res = await toggleEventOnline({ id: record.id, online });
|
||||
if (res.code === 200) {
|
||||
if (res.code == 200) {
|
||||
message.success(`${actionText}成功`);
|
||||
handleSearch();
|
||||
} else {
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
/**
|
||||
* 赛事列表 - 接口服务
|
||||
* 该页面使用的所有接口集中管理
|
||||
*/
|
||||
import { get, post } from '@/utils/request';
|
||||
import { USE_MOCK, MOCK_DELAY } from '@/config/mock';
|
||||
import { MOCK_EVENT_DETAIL } from '@/config/mock/eventDetail';
|
||||
import { buildMockEventListPage } from '@/config/mock/eventList';
|
||||
import { buildMockSignupListPage } from '@/config/mock/eventSignup';
|
||||
import type {
|
||||
EventListQueryParams,
|
||||
SignupListQueryParams,
|
||||
ToggleOnlineParams,
|
||||
ApiResult,
|
||||
PageData,
|
||||
TournamentAdminVO,
|
||||
TournamentAdminInfoVO,
|
||||
TournamentAdminInfoSignupVO,
|
||||
} from '@/api/events/types';
|
||||
|
||||
export type {
|
||||
TournamentAdminVO,
|
||||
TournamentAdminInfoVO,
|
||||
TournamentAdminInfoSignupVO,
|
||||
InnerCategoryVO,
|
||||
EventListQueryParams,
|
||||
SignupListQueryParams,
|
||||
ToggleOnlineParams,
|
||||
PageData,
|
||||
ApiResult,
|
||||
} from '@/api/events/types';
|
||||
|
||||
// ============================================================
|
||||
// URL 常量
|
||||
// ============================================================
|
||||
const eventList = '/manager/tm/page';
|
||||
const eventDetail = '/manager/tm/info';
|
||||
const signupList = '/manager/tm/info/signupPage';
|
||||
const toggleOnline = '/manager/tm/online';
|
||||
|
||||
const delay = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));
|
||||
|
||||
// ============================================================
|
||||
// API 函数
|
||||
// ============================================================
|
||||
|
||||
/** 赛事列表 - 列表分页 */
|
||||
export async function getEventList(
|
||||
params: EventListQueryParams,
|
||||
): Promise<ApiResult<PageData<TournamentAdminVO>>> {
|
||||
if (USE_MOCK) {
|
||||
await delay(MOCK_DELAY);
|
||||
const page = Number(params.page) || 1;
|
||||
const limit = Number(params.limit) || 10;
|
||||
return {
|
||||
code: 200,
|
||||
msg: 'success',
|
||||
data: buildMockEventListPage(page, limit),
|
||||
};
|
||||
}
|
||||
return get(eventList, params as Record<string, any>);
|
||||
}
|
||||
|
||||
/** 赛事列表 - 赛事详情 */
|
||||
export async function getEventDetail(id: string): Promise<ApiResult<TournamentAdminInfoVO>> {
|
||||
if (USE_MOCK) {
|
||||
await delay(MOCK_DELAY);
|
||||
return {
|
||||
code: 200,
|
||||
msg: 'success',
|
||||
data: { ...MOCK_EVENT_DETAIL },
|
||||
};
|
||||
}
|
||||
return get(eventDetail, { id });
|
||||
}
|
||||
|
||||
/** 赛事列表 - 赛事详情 - 人员列表 */
|
||||
export async function getSignupList(
|
||||
params: SignupListQueryParams,
|
||||
): Promise<ApiResult<PageData<TournamentAdminInfoSignupVO>>> {
|
||||
if (USE_MOCK) {
|
||||
await delay(MOCK_DELAY);
|
||||
return {
|
||||
code: 200,
|
||||
msg: 'success',
|
||||
data: buildMockSignupListPage(params),
|
||||
};
|
||||
}
|
||||
return get(signupList, params as Record<string, any>);
|
||||
}
|
||||
|
||||
/** 赛事上架 / 下架 */
|
||||
export function toggleEventOnline(
|
||||
params: ToggleOnlineParams,
|
||||
): Promise<ApiResult<Record<string, never>>> {
|
||||
return post(toggleOnline, params);
|
||||
}
|
||||
@@ -2,8 +2,8 @@ import { computed, reactive, toRef, Ref, h } from 'vue';
|
||||
import { message } from 'ant-design-vue';
|
||||
import { StatusTag, type StatusTagTone } from '@/components';
|
||||
import { useState, useDebounce, useThrottleFn } from '@/hooks';
|
||||
import type { TournamentAdminVO, EventListQueryParams } from '@/api/events';
|
||||
import { getEventList } from '@/api/events';
|
||||
import type { TournamentAdminVO, EventListQueryParams } from './services';
|
||||
import { getEventList } from './services';
|
||||
|
||||
// ============================================================
|
||||
// 常量
|
||||
@@ -252,7 +252,7 @@ export function useEventListModel() {
|
||||
console.log('赛事列表查询参数:', queryParams);
|
||||
const res = await getEventList(queryParams);
|
||||
|
||||
if (res.code === 200) {
|
||||
if (res.code == 200) {
|
||||
setDataSource(res.data.list);
|
||||
setPagination({ ...pagination.value, total: res.data.total });
|
||||
} else {
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
/**
|
||||
* 赛事操作日志 - 接口服务
|
||||
* 该页面使用的所有接口集中管理
|
||||
*/
|
||||
import { get } from '@/utils/request';
|
||||
import { USE_MOCK, MOCK_DELAY } from '@/config/mock';
|
||||
import { buildMockEventOperationLogPage } from '@/config/mock/eventOperationLogs';
|
||||
import type {
|
||||
OperationLogQueryParams,
|
||||
TournamentAdminOperationPageVO,
|
||||
PageData,
|
||||
ApiResult,
|
||||
} from '@/api/logs/types';
|
||||
|
||||
export type {
|
||||
TournamentAdminOperationPageVO,
|
||||
OperationLogQueryParams,
|
||||
PageData,
|
||||
ApiResult,
|
||||
} from '@/api/logs/types';
|
||||
|
||||
// ============================================================
|
||||
// URL 常量
|
||||
// ============================================================
|
||||
const operationLogs = '/tournament/operation/page';
|
||||
|
||||
const delay = (ms: number) => new Promise<void>((r) => setTimeout(r, ms));
|
||||
|
||||
// ============================================================
|
||||
// API 函数
|
||||
// ============================================================
|
||||
|
||||
function pickFilters(params: OperationLogQueryParams): OperationLogQueryParams {
|
||||
const { page: _page, limit: _limit, ...filters } = params;
|
||||
return filters;
|
||||
}
|
||||
|
||||
/** 赛事操作日志分页 */
|
||||
export async function getOperationLogs(
|
||||
params: OperationLogQueryParams,
|
||||
): Promise<ApiResult<PageData<TournamentAdminOperationPageVO>>> {
|
||||
if (USE_MOCK) {
|
||||
await delay(MOCK_DELAY);
|
||||
const page = Number(params.page) || 1;
|
||||
const limit = Number(params.limit) || 10;
|
||||
return {
|
||||
code: 200,
|
||||
msg: 'success',
|
||||
data: buildMockEventOperationLogPage(page, limit, pickFilters(params)),
|
||||
};
|
||||
}
|
||||
return get(operationLogs, params as Record<string, any>);
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
getOperationLogs,
|
||||
type TournamentAdminOperationPageVO,
|
||||
type OperationLogQueryParams,
|
||||
} from '@/api/logs';
|
||||
} from './services';
|
||||
|
||||
// ============================================================
|
||||
// 常量
|
||||
@@ -110,7 +110,7 @@ export function useLogModel() {
|
||||
const params = buildQueryParams();
|
||||
console.log('操作日志查询参数:', params);
|
||||
const res = await getOperationLogs(params);
|
||||
if (res.code === 200) {
|
||||
if (res.code == 200) {
|
||||
setDataSource(res.data.list);
|
||||
setPagination({ ...pagination.value, total: res.data.total });
|
||||
} else {
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
type TournamentAdminOrderInfoVO,
|
||||
type InnerRefundInfo,
|
||||
type TournamentAdminOrderInfoPageVO,
|
||||
} from '@/api/orders';
|
||||
} from '../model/services';
|
||||
import styles from './OrderDetailModal.module.less';
|
||||
|
||||
interface OrderDetailModalProps {
|
||||
@@ -142,7 +142,7 @@ export default defineComponent({
|
||||
page: String(page),
|
||||
limit: String(playerPageSize),
|
||||
});
|
||||
if (res.code === 200) {
|
||||
if (res.code == 200) {
|
||||
setPlayers(res.data.list);
|
||||
setPlayerTotal(res.data.total);
|
||||
setPlayerPage(page);
|
||||
@@ -176,7 +176,7 @@ export default defineComponent({
|
||||
|
||||
const [detailRes] = await Promise.all([getOrderDetail(params), fetchPlayers(1)]);
|
||||
|
||||
if (detailRes.code === 200) {
|
||||
if (detailRes.code == 200) {
|
||||
setDetail(detailRes.data);
|
||||
}
|
||||
setDetailLoading(false);
|
||||
|
||||
@@ -13,7 +13,7 @@ import {
|
||||
message,
|
||||
} from 'ant-design-vue';
|
||||
import { useOrderModel, ORDER_STATUS_OPTIONS, REFUND_STATUS_OPTIONS } from './model/useOrderModel';
|
||||
import { retryRefundOrder } from '@/api/orders';
|
||||
import { retryRefundOrder } from './model/services';
|
||||
import { useContainerSize, useState } from '@/hooks';
|
||||
import OrderDetailModal from './components/OrderDetailModal';
|
||||
import pageStyles from '@/assets/styles/pageLayout.module.less';
|
||||
@@ -37,7 +37,7 @@ function promptReRefund(record: any) {
|
||||
onOk: async () => {
|
||||
try {
|
||||
const res = await retryRefundOrder({ payOrderNo: record.orderNo });
|
||||
if (res.code === 200) {
|
||||
if (res.code == 200) {
|
||||
message.success('重新退款提交成功');
|
||||
} else {
|
||||
message.error(res.msg || '操作失败');
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
/**
|
||||
* 订单管理 - 接口服务
|
||||
* 该页面使用的所有接口集中管理
|
||||
*/
|
||||
import { get, post } from '@/utils/request';
|
||||
import { USE_MOCK, MOCK_DELAY } from '@/config/mock';
|
||||
import { buildMockOrderListPage } from '@/config/mock/orderList';
|
||||
import { MOCK_ORDER_DETAIL } from '@/config/mock/orderDetail';
|
||||
import { buildMockOrderPlayerListPage } from '@/config/mock/orderPlayerList';
|
||||
import type {
|
||||
OrderListQueryParams,
|
||||
OrderDetailQueryParams,
|
||||
OrderPlayerListQueryParams,
|
||||
RetryRefundParams,
|
||||
TournamentAdminOrderPageVO,
|
||||
TournamentAdminOrderInfoVO,
|
||||
TournamentAdminOrderInfoPageVO,
|
||||
PageData,
|
||||
ApiResult,
|
||||
} from '@/api/orders/types';
|
||||
|
||||
export type {
|
||||
TournamentAdminOrderPageVO,
|
||||
TournamentAdminOrderInfoVO,
|
||||
TournamentAdminOrderInfoPageVO,
|
||||
InnerRefundInfo,
|
||||
OrderListQueryParams,
|
||||
OrderDetailQueryParams,
|
||||
OrderPlayerListQueryParams,
|
||||
RetryRefundParams,
|
||||
PageData,
|
||||
ApiResult,
|
||||
} from '@/api/orders/types';
|
||||
|
||||
// ============================================================
|
||||
// URL 常量
|
||||
// ============================================================
|
||||
const orderList = '/manager/order/page';
|
||||
const orderDetail = '/manager/order/info';
|
||||
const orderPlayerList = '/manager/order/info/page';
|
||||
const retryRefund = '/manager/order/retryRefund';
|
||||
|
||||
const delay = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));
|
||||
|
||||
// ============================================================
|
||||
// API 函数
|
||||
// ============================================================
|
||||
|
||||
/** 订单管理 - 订单分页 */
|
||||
export async function getOrderList(
|
||||
params: OrderListQueryParams,
|
||||
): Promise<ApiResult<PageData<TournamentAdminOrderPageVO>>> {
|
||||
if (USE_MOCK) {
|
||||
await delay(MOCK_DELAY);
|
||||
const page = Number(params.page) || 1;
|
||||
const limit = Number(params.limit) || 10;
|
||||
return {
|
||||
code: 200,
|
||||
msg: 'success',
|
||||
data: buildMockOrderListPage(page, limit),
|
||||
};
|
||||
}
|
||||
return get(orderList, params as Record<string, any>);
|
||||
}
|
||||
|
||||
/** 订单管理 - 订单详情 */
|
||||
export async function getOrderDetail(
|
||||
params: OrderDetailQueryParams,
|
||||
): Promise<ApiResult<TournamentAdminOrderInfoVO>> {
|
||||
if (USE_MOCK) {
|
||||
await delay(MOCK_DELAY);
|
||||
return {
|
||||
code: 200,
|
||||
msg: 'success',
|
||||
data: { ...MOCK_ORDER_DETAIL },
|
||||
};
|
||||
}
|
||||
return get(orderDetail, params as Record<string, any>);
|
||||
}
|
||||
|
||||
/** 订单管理 - 订单详情 - 选手列表 */
|
||||
export async function getOrderPlayerList(
|
||||
params: OrderPlayerListQueryParams,
|
||||
): Promise<ApiResult<PageData<TournamentAdminOrderInfoPageVO>>> {
|
||||
if (USE_MOCK) {
|
||||
await delay(MOCK_DELAY);
|
||||
const page = Number(params.page) || 1;
|
||||
const limit = Number(params.limit) || 10;
|
||||
return {
|
||||
code: 200,
|
||||
msg: 'success',
|
||||
data: buildMockOrderPlayerListPage(page, limit),
|
||||
};
|
||||
}
|
||||
return get(orderPlayerList, params as Record<string, any>);
|
||||
}
|
||||
|
||||
/** 订单管理 - 重新退款 */
|
||||
export function retryRefundOrder(
|
||||
params: RetryRefundParams,
|
||||
): Promise<ApiResult<Record<string, never>>> {
|
||||
return post(retryRefund, params);
|
||||
}
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
getOrderList,
|
||||
type TournamentAdminOrderPageVO,
|
||||
type OrderListQueryParams,
|
||||
} from '@/api/orders';
|
||||
} from './services';
|
||||
import { MOCK_ORDER_SUMMARY } from '@/config/mock/orderList';
|
||||
|
||||
// ============================================================
|
||||
@@ -228,7 +228,7 @@ export function useOrderModel() {
|
||||
console.log('订单列表查询参数:', queryParams);
|
||||
const res = await getOrderList(queryParams);
|
||||
|
||||
if (res.code === 200) {
|
||||
if (res.code == 200) {
|
||||
setDataSource(res.data.list);
|
||||
setPagination({ ...pagination.value, total: res.data.total });
|
||||
} else {
|
||||
|
||||
@@ -11,7 +11,7 @@ import {
|
||||
message,
|
||||
} from 'ant-design-vue';
|
||||
import { useUserModel, USER_STATUS_OPTIONS, ROLE_OPTIONS } from './model/useUserModel';
|
||||
import { toggleUserActive } from '@/api/users';
|
||||
import { toggleUserActive } from './model/services';
|
||||
import { useContainerSize } from '@/hooks';
|
||||
import pageStyles from '@/assets/styles/pageLayout.module.less';
|
||||
|
||||
@@ -41,7 +41,7 @@ export default defineComponent({
|
||||
onOk: async () => {
|
||||
try {
|
||||
const res = await toggleUserActive({ userId: record.id, status: isActive ? '0' : '1' });
|
||||
if (res.code === 200) {
|
||||
if (res.code == 200) {
|
||||
message.success(`${actionText}成���`);
|
||||
handleSearch();
|
||||
} else message.error(res.msg || '操作失败');
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
* 用户列表 - 接口服务
|
||||
* 该页面使用的所有接口集中管理
|
||||
*/
|
||||
import { get, post } from '@/utils/request';
|
||||
import { USE_MOCK, MOCK_DELAY } from '@/config/mock';
|
||||
import { buildMockUserListPage } from '@/config/mock/userList';
|
||||
import type {
|
||||
UserListQueryParams,
|
||||
UserSaveParams,
|
||||
UserUpdateParams,
|
||||
UserActiveParams,
|
||||
UserUpdatePwdParams,
|
||||
TournamentAdminUserVO,
|
||||
PageData,
|
||||
ApiResult,
|
||||
} from '@/api/users/types';
|
||||
|
||||
export type {
|
||||
TournamentAdminUserVO,
|
||||
UserListQueryParams,
|
||||
UserSaveParams,
|
||||
UserUpdateParams,
|
||||
UserActiveParams,
|
||||
UserUpdatePwdParams,
|
||||
PageData,
|
||||
ApiResult,
|
||||
} from '@/api/users/types';
|
||||
|
||||
// ============================================================
|
||||
// URL 常量
|
||||
// ============================================================
|
||||
const userList = '/sys/user/page';
|
||||
const userSave = '/sys/user/save';
|
||||
const userUpdate = '/sys/user/update';
|
||||
const userActive = '/sys/user/active';
|
||||
const userUpdatePwd = '/sys/user/updatepwd';
|
||||
|
||||
const delay = (ms: number) => new Promise<void>((r) => setTimeout(r, ms));
|
||||
|
||||
// ============================================================
|
||||
// API 函数
|
||||
// ============================================================
|
||||
|
||||
/** 用户分页列表 */
|
||||
export async function getUserList(
|
||||
params: UserListQueryParams,
|
||||
): Promise<ApiResult<PageData<TournamentAdminUserVO>>> {
|
||||
if (USE_MOCK) {
|
||||
await delay(MOCK_DELAY);
|
||||
const page = Number(params.page) || 1;
|
||||
const limit = Number(params.limit) || 10;
|
||||
return { code: 200, msg: 'success', data: buildMockUserListPage(page, limit) };
|
||||
}
|
||||
return get(userList, params as Record<string, any>);
|
||||
}
|
||||
|
||||
/** 新增用户 */
|
||||
export function saveUser(params: UserSaveParams): Promise<ApiResult<Record<string, never>>> {
|
||||
if (USE_MOCK) return delay(MOCK_DELAY).then(() => ({ code: 200, msg: 'success', data: {} }));
|
||||
return post(userSave, params);
|
||||
}
|
||||
|
||||
/** 更新用户 */
|
||||
export function updateUser(params: UserUpdateParams): Promise<ApiResult<Record<string, never>>> {
|
||||
if (USE_MOCK) return delay(MOCK_DELAY).then(() => ({ code: 200, msg: 'success', data: {} }));
|
||||
return post(userUpdate, params);
|
||||
}
|
||||
|
||||
/** 启用/禁用用户 */
|
||||
export function toggleUserActive(
|
||||
params: UserActiveParams,
|
||||
): Promise<ApiResult<Record<string, never>>> {
|
||||
return post(userActive, params);
|
||||
}
|
||||
|
||||
/** 修改密码 */
|
||||
export function updateUserPwd(
|
||||
params: UserUpdatePwdParams,
|
||||
): Promise<ApiResult<Record<string, never>>> {
|
||||
return post(userUpdatePwd, params);
|
||||
}
|
||||
@@ -2,7 +2,7 @@ import { computed, reactive, toRef, Ref, h } from 'vue';
|
||||
import { message } from 'ant-design-vue';
|
||||
import { StatusTag, type StatusTagTone } from '@/components';
|
||||
import { useState, useDebounce, useThrottleFn } from '@/hooks';
|
||||
import { getUserList, type TournamentAdminUserVO, type UserListQueryParams } from '@/api/users';
|
||||
import { getUserList, type TournamentAdminUserVO, type UserListQueryParams } from './services';
|
||||
|
||||
// ============================================================
|
||||
// 常量
|
||||
@@ -86,7 +86,7 @@ export function useUserModel() {
|
||||
const params = buildQueryParams();
|
||||
console.log('用户列表查询参数:', params);
|
||||
const res = await getUserList(params);
|
||||
if (res.code === 200) {
|
||||
if (res.code == 200) {
|
||||
setDataSource(res.data.list);
|
||||
setPagination({ ...pagination.value, total: res.data.total });
|
||||
} else message.error(res.msg || '查询失败');
|
||||
|
||||
Reference in New Issue
Block a user