project.ts
3.28 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
import { AttributeData, QueryForParams, ServiceResponse } from '@/types/global';
import axios, { AxiosRequestConfig } from 'axios';
import FileSaver from 'file-saver';
import { Project, User, UserDynamics } from '@/utils/model';
type ProjectList = Project & {
activity_count: number;
activity_up_count: number;
activity_match_count: number;
activity_down_count: number;
activity_send_count: number;
manage_count: number;
};
export default class useProjectApi {
static promoteStatusOption = [
{ label: '否', value: 0 },
{ label: '是', value: 1 },
];
static publicStatusOption = [
{ label: '否', value: 1 },
{ label: '是', value: 0 },
];
static applyStatusOption = [
{ label: '否', value: 0 },
{ label: '是', value: 1 },
];
static manageStatusOption = [
{ label: '否', value: 0 },
{ label: '是', value: 1 },
];
static statusOption = [
{ label: '启用', value: 1 },
{ label: '禁用', value: 0 },
];
static get(params?: QueryForParams): Promise<ServiceResponse<ProjectList[]>> {
return axios.get('audition/projects', { params });
}
static async getExport(fileName: string, params?: QueryForParams) {
const config = { params: { ...params, fetchType: 'excel' }, timeout: 60000, responseType: 'blob' } as AxiosRequestConfig;
return axios.get('audition/projects', config).then(({ data }) => FileSaver.saveAs(data, `${fileName}.xlsx`));
}
static async create(data: Omit<Project, 'id'>): Promise<Project> {
return axios.post('audition/projects', data).then((res) => Promise.resolve(res.data));
}
static async show(id: number): Promise<Project> {
return axios.get(`/audition/projects/${id}`).then((res) => Promise.resolve(res.data));
}
static async update(id: number, data: AttributeData): Promise<Project> {
return axios.put(`audition/projects/${id}`, data).then((res) => Promise.resolve(res.data));
}
static async changeStatus(id: number, status: 1 | 0) {
return axios.put(`audition/projects/${id}/change-status`, { status });
}
static destroy(id: number) {
return axios.delete(`audition/projects/${id}`);
}
static manageUsers(projectId: number, params?: QueryForParams): Promise<ServiceResponse<User[]>> {
return axios.get(`/audition/projects/${projectId}/managers`, { params });
}
static memberUsers(projectId: number, params?: QueryForParams): Promise<ServiceResponse<User[]>> {
return axios.get(`/audition/projects/${projectId}/members`, { params });
}
static outManageUsers(projectId: number, params?: QueryForParams): Promise<ServiceResponse<User[]>> {
return axios.get(`/audition/projects/${projectId}/out-managers`, { params });
}
static destroyOutManageUsers(projectId: number, data = {}) {
return axios.post(`/audition/projects/${projectId}/out-managers`, data);
}
static dynamics(id: number, params?: QueryForParams): Promise<ServiceResponse<UserDynamics[]>> {
return axios.get(`/audition/projects/${id}/dynamics`, { params });
}
}
export class useManagerApi {
static async create(data: { user_id: number; project_id: number }): Promise<Project> {
return axios.post('audition/project-managers', data).then((res) => Promise.resolve(res.data));
}
static destroy(id: number) {
return axios.delete(`audition/project-managers/${id}`);
}
}