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>(`${TYPE_BASE}/page`, { params }), getDictTypeList: (params?: Partial) => request.get(`${TYPE_BASE}/list`, { params }), getDictType: (id: number) => request.get(`${TYPE_BASE}/get`, { params: { id } }), createDictType: (data: DictTypeSaveReqVO) => request.post(`${TYPE_BASE}/create`, data), updateDictType: (data: DictTypeSaveReqVO) => request.put(`${TYPE_BASE}/update`, data), deleteDictType: (id: number) => request.delete(`${TYPE_BASE}/delete`, { params: { id } }), deleteDictTypeList: (ids: number[]) => request.delete(`${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(`${DATA_BASE}/list`, { params: { dictType } }), getDictDataPage: (params: DictDataPageReqVO) => request.get>(`${DATA_BASE}/page`, { params }), getDictData: (id: number) => request.get(`${DATA_BASE}/get`, { params: { id } }), createDictData: (data: DictDataSaveReqVO) => request.post(`${DATA_BASE}/create`, data), updateDictData: (data: DictDataSaveReqVO) => request.put(`${DATA_BASE}/update`, data), deleteDictData: (id: number) => request.delete(`${DATA_BASE}/delete`, { params: { id } }), deleteDictDataList: (ids: number[]) => request.delete(`${DATA_BASE}/delete-list`, { params: { ids: ids.join(',') } }) }