usePage增加许多配置项,另外增加一些回调函数、插槽等等,修改逻辑增强配置灵活性
zk authored at 2023-11-21 17:42:23
2.12 KiB
NewLife.QuickVue
import { PageProps } from '../model/api/common';
import { Column } from '../model/api/page';
import request from '/@/utils/request';

export enum ColumnKind {
	LIST = 1,
	DETAIL,
	ADD,
	EDIT,
	SEARCH
}
/**
 * (不建议写成 request.post(xxx),因为这样 post 时,无法 params 与 data 同时传参)
 *
 * 登录api接口集合
 * @method signIn 用户登录
 * @method signOut 用户退出登录
 */
export function usePageApi() {
	return {
    getColumns: (type: string, kind: ColumnKind) => {
			return request<Column[]>({
				url: `${type}/GetFields`,
				method: 'get',
				params: {
					kind
				}
			});
		},
		getTableData: <T extends {}>(type: string, params: EmptyObjectType & PageProps) => {
			return request<T[]>({
				url: type,
				method: 'get',
				params
			});
		},
		getTableDetail: <T extends {}>(type: string, id: number, data?: EmptyObjectType) => {
			return request<T>({
				url: type + '/Detail',
				method: 'get',
				params: {
					id,
					...data
				}
			});
		},
		getTableDetailByUrl: <T extends {}>(url: string, id: number, data?: EmptyObjectType) => {
			return request<T>({
				url: url,
				method: 'get',
				params: {
					id,
					...data
				}
			});
		},
		setTableItem: (type: string, data: EmptyObjectType) => {
			return request({
				url: type,
				method: 'put',
				data
			});
		},
		addTableItem: (type: string, data: EmptyObjectType) => {
			return request({
				url: type,
				method: 'post',
				data
			});
		},
		delTableItem: (type: string, id: number) => {
			return request({
				url: type,
				method: 'delete',
				params: {
					id
				}
			});
		},
		lookUp: (codes: string) => {
			return request<{ [k in string]: EmptyObjectType[] }>({
				url: '/Cube/Lookup',
				method: 'get',
				params: {
					codes
				}
			});
		},
		upload: (data: { r: string, file: File }) => {
			const formData = new FormData();
			formData.append('file', data.file);
			return request<{ [k in string]: EmptyObjectType[] }>({
				url: '/Admin/File/UploadLayui',
				method: 'post',
				headers: {
					"Content-Type": 'multipart/form-data'
				},
				data: formData,
				params: {
					r: 'user'
				}
			});
		}
	};
}