import type { RouteMeta } from 'vue-router'; import type { TransformData, TransformList, TransformRecord } from '#/api'; import { http } from '#/api'; import { fromRole, fromUser, toRole, toUser } from '#/api/model'; import { fromMenus } from '#/api/model/menu'; export namespace SystemModel { export interface Role extends TransformRecord { [key: string]: any; id: string; name: string; code?: string; permissions: string[]; remark?: string; status: 0 | 1; } export interface User extends TransformRecord { id: string; access: string; name: string; worker?: string; mobile?: string; roles?: Array; password?: string; } export interface Menu { type: 'button' | 'catalog' | 'menu'; id: string; pid?: string; name: string; path: string; component?: string; meta: Partial; children?: Menu[]; } } export function listRolesMethod(page = 1, size = 20, query?: TransformData) { return http.post, TransformList>( `/admin/right_RoleMgr/listPain`, query, { params: { page, limit: size }, transform({ items, ...data }) { return { ...data, items: items.map((item) => fromRole(item)) }; }, }, ); } export function optionsRoleMethod() { return http.get( `/admin/right_RoleMgr/optionselect`, { transform(data) { return data.map((item) => fromRole(item)); }, }, ); } export function editRoleMethod(data: Partial) { return http.post( data.id ? `/admin/right_RoleMgr/update` : `/admin/right_RoleMgr/Add`, toRole(data), ); } export function updateRoleStatusMethod( id: string, data: Partial>, ) { const { pid, stateSel } = toRole({ ...data, id }); return http.put(`/admin/right_RoleMgr/changeStatus`, { pid, stateSel }); } export function deleteRoleMethod(data: Pick) { return deleteRolesMethod([data]); } export function deleteRolesMethod(params: Pick[]) { return http.post(`/admin/right_RoleMgr/BatchDelete`, void 0, { params: { ids: params.map((item) => item.id).join(',') }, }); } export function listUsersMethod(page = 1, size = 20, query?: SystemModel.User) { return http.post, TransformList>( `/portal/userMgr/listPain`, toUser(query), { params: { page, limit: size }, transform({ items, ...data }) { return { ...data, items: items.map((item) => fromUser(item)) }; }, }, ); } export function editUserMethod(data: Partial) { return http.post( data?.id ? `/portal/userMgr/update` : `/portal/userMgr/Add`, toUser(data), ); } export function getUserMethod(id: string) { return http.get(`/portal/userMgr/${id}`, { transform(data) { return fromUser(data); }, }); } export function deleteUserMethod(data: Pick) { return deleteUsersMethod([data]); } export function deleteUsersMethod(params: Pick[]) { return http.post(`/portal/userMgr/BatchDelete`, void 0, { params: { ids: params.map((item) => item.id).join(',') }, }); } export function getMenusMethod() { return http.post( `/admin/right_RoleMgr/allMenu`, void 0, { transform(data) { return fromMenus(data); }, }, ); }