| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- import type {
- TransformBlob,
- TransformBody,
- TransformData,
- TransformList,
- TransformRecord,
- } from '#/api';
- import { downloadFileFromBlob } from '@vben/utils';
- import { http } from '#/api';
- import {
- fromDepartment,
- fromDoctor,
- toDepartment,
- toDoctor,
- } from '#/api/model';
- export namespace BusinessModel {
- export interface Department extends TransformRecord {
- id: string;
- name: string;
- code?: string;
- description?: string;
- organization?: { name: string };
- parent?: Department;
- children?: Department[];
- registerLink?: string;
- }
- export interface Doctor extends TransformRecord {
- id: string;
- name: string;
- code?: string;
- avatar?: string;
- description?: string;
- worker?: string;
- department?: Department;
- titleOfClinical?: string;
- titleOfTeach?: string;
- titleOf?: string;
- adeptAt?: string;
- registerLink?: string;
- }
- }
- export function listDepartmentsMethod(
- page = 1,
- size = 20,
- query?: Partial<BusinessModel.Department>,
- ) {
- return http.post<TransformList<BusinessModel.Department>, TransformList>(
- `/basis/department/listPage`,
- toDepartment(query),
- {
- params: { page, limit: size },
- transform({ items, ...data }) {
- return { ...data, items: items.map((item) => fromDepartment(item)) };
- },
- },
- );
- }
- export function treeDepartmentsMethod() {
- return http.post<BusinessModel.Department[], TransformData[]>(
- `/basis/department/list`,
- void 0,
- {
- transform(data) {
- return data.map((item) => fromDepartment(item));
- },
- },
- );
- }
- export function editDepartmentMethod(data: Partial<BusinessModel.Department>) {
- return http.post(
- data?.id ? `/basis/department/update` : `/basis/department/add`,
- toDepartment(data),
- );
- }
- export function deleteDepartmentMethod(
- data: Pick<BusinessModel.Department, 'id'>,
- ) {
- return deleteDepartmentsMethod([data]);
- }
- export function deleteDepartmentsMethod(
- params: Pick<BusinessModel.Department, 'id'>[],
- ) {
- return http.post(`/basis/department/batchDelete`, void 0, {
- params: { ids: params.map((item) => item.id).join(',') },
- });
- }
- export function downloadDepartmentTemplateMethod(filename = '科室模板.xlsx') {
- return http.get(`/basis/department/downExcel`, {
- params: { fileName: filename },
- transform(data: TransformBlob) {
- downloadFileFromBlob(data);
- return data;
- },
- });
- }
- export function uploadDepartmentFileMethod(file: File) {
- const data = new FormData();
- data.append('file', file);
- return http.post(`/basis/department/importExcel`, data, {
- meta: { notParseResponseBody: true },
- transform(data: TransformBody<unknown>) {
- if (data.code === 0) {
- const [_, count = ''] = data.message?.match(/入库成功(\d+)条/) ?? [];
- if (+count > 0)
- return { count: +count, message: data.message ?? `导入成功` };
- }
- // eslint-disable-next-line no-throw-literal
- throw { message: data.message ?? `导入失败` };
- },
- });
- }
- export function listDoctorsMethod(
- page = 1,
- size = 20,
- query?: Partial<BusinessModel.Doctor>,
- ) {
- return http.post<TransformList<BusinessModel.Doctor>, TransformList>(
- `/basis/doctor/listPage`,
- toDoctor(query),
- {
- params: { page, limit: size },
- transform({ items, ...data }) {
- return { ...data, items: items.map((item) => fromDoctor(item)) };
- },
- },
- );
- }
- export function editDoctorMethod(data: Partial<BusinessModel.Doctor>) {
- return http.post(
- data?.id ? `/basis/doctor/update` : `/basis/doctor/add`,
- toDoctor(data),
- );
- }
- export function deleteDoctorMethod(data: Pick<BusinessModel.Doctor, 'id'>) {
- return deleteDoctorsMethod([data]);
- }
- export function deleteDoctorsMethod(
- params: Pick<BusinessModel.Doctor, 'id'>[],
- ) {
- return http.post(`/basis/doctor/batchDelete`, void 0, {
- params: { ids: params.map((item) => item.id).join(',') },
- });
- }
- export function downloadDoctorTemplateMethod(filename = '医生模板.xlsx') {
- return http.get(`/basis/doctor/downExcel`, {
- params: { fileName: filename },
- transform(data: TransformBlob) {
- downloadFileFromBlob(data);
- return data;
- },
- });
- }
- export function uploadDoctorFileMethod(file: File) {
- const data = new FormData();
- data.append('file', file);
- return http.post(`/basis/doctor/importExcel`, data, {
- meta: { notParseResponseBody: true },
- transform(data: TransformBody<unknown>) {
- if (data.code === 0) {
- const [_, count = ''] = data.message?.match(/入库成功(\d+)条/) ?? [];
- if (+count > 0)
- return { count: +count, message: data.message ?? `导入成功` };
- }
- // eslint-disable-next-line no-throw-literal
- throw { message: data.message ?? `导入失败` };
- },
- });
- }
|