index.ts
3.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import request from '@/utils/request'
import { ADMIN_API_PREFIX } from '@/config'
import type { PageParam, PageResult } from '@/types'
/**
* 系统管理 - 字典
*
* 契约说明(新契约,与后端 parking-module-system 对齐):
* - 前缀 /admin-api,回归 CommonResult{code=0}
* - 标准 CRUD URL 命名:/create /update /delete /delete-list /get /list /page /export-excel
* - 权限标识:**字典类型与字典数据共用** system:dict:create / update / delete / query / export
* (所以这里两个 API 对象看起来权限一样,是刻意为之)
*
* 资源路径有两个:
* - `/system/dict-type` 字典类型
* - `/system/dict-data` 字典数据(挂在某个类型下面)
*
* ⚠️ `/system/dict-data/list?dictType=xxx` 是**字典 store 直接调用的接口**
* (见 `store/modules/dict.ts`),返回字段必须与 `DictDataVO` 一致。
*/
const TYPE_BASE = `${ADMIN_API_PREFIX}/system/dict-type`
const DATA_BASE = `${ADMIN_API_PREFIX}/system/dict-data`
export interface DictTypeVO {
id: number
name: string
type: string
/** 状态:0 启用,1 停用(字典 system_common_status) */
status?: number
remark?: string
/** 创建时间(毫秒时间戳) */
createTime?: number
}
export interface DictTypePageReqVO extends PageParam {
name?: string
type?: string
status?: number
}
export interface DictTypeSaveReqVO {
id?: number
name: string
type: string
status?: number
remark?: string
}
export interface DictDataVO {
id: number
sort?: number
/** 显示文案 */
label: string
/** 字典值(后端按字符串存取,数字/布尔值也以字符串形式返回) */
value: string
dictType: string
status?: number
/** el-tag 的颜色类型:success / info / warning / danger */
colorType?: string
cssClass?: string
remark?: string
}
export interface DictDataPageReqVO extends PageParam {
dictType?: string
label?: string
status?: number
}
export interface DictDataSaveReqVO {
id?: number
sort?: number
label: string
value: string
dictType: string
status?: number
colorType?: string
cssClass?: string
remark?: string
}
export const DictTypeApi = {
getDictTypePage: (params: DictTypePageReqVO) => request.get<PageResult<DictTypeVO>>(`${TYPE_BASE}/page`, { params }),
getDictTypeList: (params?: Partial<DictTypePageReqVO>) => request.get<DictTypeVO[]>(`${TYPE_BASE}/list`, { params }),
getDictType: (id: number) => request.get<DictTypeVO>(`${TYPE_BASE}/get`, { params: { id } }),
createDictType: (data: DictTypeSaveReqVO) => request.post<number>(`${TYPE_BASE}/create`, data),
updateDictType: (data: DictTypeSaveReqVO) => request.put<boolean>(`${TYPE_BASE}/update`, data),
deleteDictType: (id: number) => request.delete<boolean>(`${TYPE_BASE}/delete`, { params: { id } }),
deleteDictTypeList: (ids: number[]) =>
request.delete<boolean>(`${TYPE_BASE}/delete-list`, { params: { ids: ids.join(',') } }),
exportDictType: (params: DictTypePageReqVO) =>
request.download(`${TYPE_BASE}/export-excel`, params, '字典类型列表.xlsx')
}
export const DictDataApi = {
/** 按 dictType 取全部字典数据(字典 store 与下拉框用;不分页) */
getDictDataList: (dictType: string) => request.get<DictDataVO[]>(`${DATA_BASE}/list`, { params: { dictType } }),
getDictDataPage: (params: DictDataPageReqVO) => request.get<PageResult<DictDataVO>>(`${DATA_BASE}/page`, { params }),
getDictData: (id: number) => request.get<DictDataVO>(`${DATA_BASE}/get`, { params: { id } }),
createDictData: (data: DictDataSaveReqVO) => request.post<number>(`${DATA_BASE}/create`, data),
updateDictData: (data: DictDataSaveReqVO) => request.put<boolean>(`${DATA_BASE}/update`, data),
deleteDictData: (id: number) => request.delete<boolean>(`${DATA_BASE}/delete`, { params: { id } }),
deleteDictDataList: (ids: number[]) =>
request.delete<boolean>(`${DATA_BASE}/delete-list`, { params: { ids: ids.join(',') } })
}