82a19101a8
- 创建 rui-frontend 前端仓库 - 迁移 admin-ui 管理后台 - 创建 cashier-mobile 和 customer-mobile 占位项目 - 配置 pnpm workspace
164 lines
3.2 KiB
TypeScript
164 lines
3.2 KiB
TypeScript
import { request } from '@/utils/request'
|
|
|
|
/**
|
|
* 分页查询结果
|
|
*/
|
|
export interface PageResult<T = any> {
|
|
/** 列表数据 */
|
|
list: T[]
|
|
/** 总记录数 */
|
|
total: number
|
|
}
|
|
|
|
/**
|
|
* 分页参数
|
|
*/
|
|
export interface PageParams {
|
|
page: number
|
|
size: number
|
|
}
|
|
|
|
/**
|
|
* 通用 Service 基类
|
|
*
|
|
* <p>封装标准 CRUD 操作,子类只需传入 baseUrl 即可使用:</p>
|
|
*
|
|
* <pre>
|
|
* class UserService extends BaseService {
|
|
* constructor() {
|
|
* super('/user/admin/user')
|
|
* }
|
|
* }
|
|
* </pre>
|
|
*/
|
|
export class BaseService<T = any> {
|
|
/** 接口基础路径 */
|
|
protected baseUrl: string
|
|
|
|
constructor(baseUrl: string) {
|
|
this.baseUrl = baseUrl
|
|
}
|
|
|
|
/**
|
|
* 分页查询
|
|
*
|
|
* @param params 分页参数 + 查询条件
|
|
* @returns 分页结果
|
|
*/
|
|
async page(params: PageParams & Record<string, any>): Promise<PageResult<T>> {
|
|
const res: any = await request({
|
|
url: `${this.baseUrl}/page`,
|
|
method: 'get',
|
|
params,
|
|
})
|
|
return {
|
|
list: res.data?.records || [],
|
|
total: res.data?.total || 0,
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 列表查询
|
|
*
|
|
* @param params 查询条件
|
|
* @returns 数据列表
|
|
*/
|
|
async list(params?: Record<string, any>): Promise<T[]> {
|
|
const res: any = await request({
|
|
url: `${this.baseUrl}/list`,
|
|
method: 'get',
|
|
params,
|
|
})
|
|
return res.data || []
|
|
}
|
|
|
|
/**
|
|
* 根据 ID 查询详情
|
|
*
|
|
* @param id 主键 ID
|
|
* @returns 实体数据
|
|
*/
|
|
async getById(id: number | string): Promise<T> {
|
|
const res: any = await request({
|
|
url: `${this.baseUrl}/${id}`,
|
|
method: 'get',
|
|
})
|
|
return res.data
|
|
}
|
|
|
|
/**
|
|
* 新增
|
|
*
|
|
* @param data 实体数据
|
|
* @returns 新增后的实体(包含生成的ID)
|
|
*/
|
|
async add(data: Partial<T>): Promise<T> {
|
|
const res: any = await request({
|
|
url: this.baseUrl,
|
|
method: 'post',
|
|
data,
|
|
})
|
|
return res.data
|
|
}
|
|
|
|
/**
|
|
* 修改
|
|
*
|
|
* @param data 实体数据(必须包含 id)
|
|
* @returns 是否成功
|
|
*/
|
|
async update(data: Partial<T> & { id: number | string }): Promise<boolean> {
|
|
const res: any = await request({
|
|
url: this.baseUrl,
|
|
method: 'put',
|
|
data,
|
|
})
|
|
return res.data === true
|
|
}
|
|
|
|
/**
|
|
* 删除
|
|
*
|
|
* @param id 主键 ID
|
|
* @returns 是否成功
|
|
*/
|
|
async remove(id: number | string): Promise<boolean> {
|
|
const res: any = await request({
|
|
url: `${this.baseUrl}/${id}`,
|
|
method: 'delete',
|
|
})
|
|
return res.data === true
|
|
}
|
|
|
|
/**
|
|
* 批量删除(调用后端批量删除接口)
|
|
*
|
|
* @param ids 主键 ID 列表
|
|
* @returns 是否成功
|
|
*/
|
|
async batchRemove(ids: (number | string)[]): Promise<boolean> {
|
|
const res: any = await request({
|
|
url: `${this.baseUrl}/batch`,
|
|
method: 'delete',
|
|
data: ids,
|
|
})
|
|
return res.data === true
|
|
}
|
|
|
|
/**
|
|
* 状态切换(启用/禁用)
|
|
*
|
|
* @param id 主键 ID
|
|
* @param status 状态值(0禁用 1启用)
|
|
* @returns 是否成功
|
|
*/
|
|
async changeStatus(id: number | string, status: number): Promise<boolean> {
|
|
const res: any = await request({
|
|
url: `${this.baseUrl}/status`,
|
|
method: 'put',
|
|
params: { id, status },
|
|
})
|
|
return res.data === true
|
|
}
|
|
}
|