chore: 初始化前端仓库并迁移 admin-ui

- 创建 rui-frontend 前端仓库
- 迁移 admin-ui 管理后台
- 创建 cashier-mobile 和 customer-mobile 占位项目
- 配置 pnpm workspace
This commit is contained in:
2026-06-04 05:14:11 +08:00
commit 82a19101a8
153 changed files with 21561 additions and 0 deletions
+163
View File
@@ -0,0 +1,163 @@
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
}
}