shared-ritm 1.1.26 → 1.1.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ import ApiService, { ResponseApi } from '@/api/settings/ApiService';
2
+ import { Api_Files_Responsible_Dto } from '@/api/types/Api_Files';
3
+ declare class FileService extends ApiService {
4
+ uploadFile(data: FormData): Promise<ResponseApi<Api_Files_Responsible_Dto>>;
5
+ }
6
+ export default function useFileService(): FileService;
7
+ export {};
@@ -0,0 +1,3 @@
1
+ export type Api_Files_Responsible_Dto = {
2
+ file: string;
3
+ }[];
@@ -19,9 +19,10 @@ import useProjectsService from '@/api/services/ProjectsService';
19
19
  import useRepairsService from '@/api/services/RepairsService';
20
20
  import useTasksService from '@/api/services/TasksService';
21
21
  import useAuthService from '@/api/services/AuthService';
22
+ import useFileService from '@/api/services/FileService';
22
23
  import ApiService from '@/api/settings/ApiService';
23
24
  export { AppButton, AppCheckbox, AppDatePicker, AppInput, AppInputSearch, AppLayout, AppLayoutHeader, AppLoader, AppSelect, AppSheet, AppSidebar, AppToggle, AppWrapper, AppConfirmDialog, };
24
- export { ApiService, useAuthService, useGanttService, useMetricsService, useProjectsService, useRepairsService, useTasksService, };
25
+ export { ApiService, useAuthService, useGanttService, useMetricsService, useProjectsService, useRepairsService, useTasksService, useFileService, };
25
26
  export type { NotificationType } from './utils/notification';
26
27
  export { notificationSettings } from './utils/notification';
27
28
  export * from './api/types/Api_Tasks';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shared-ritm",
3
- "version": "1.1.26",
3
+ "version": "1.1.28",
4
4
  "private": false,
5
5
  "files": [
6
6
  "dist",
@@ -0,0 +1,15 @@
1
+ import ApiService, { ResponseApi } from '@/api/settings/ApiService'
2
+ import { Api_Files_Responsible_Dto } from '@/api/types/Api_Files'
3
+
4
+ class FileService extends ApiService {
5
+ public async uploadFile(data: FormData): Promise<ResponseApi<Api_Files_Responsible_Dto>> {
6
+ return await this.post<FormData, any>(`/upload-file`, data)
7
+ }
8
+ }
9
+
10
+ let api: FileService
11
+
12
+ export default function useFileService() {
13
+ if (!api) api = new FileService()
14
+ return api
15
+ }
@@ -1,82 +1,94 @@
1
- import ApiService, { ResponseApi } from '@/api/settings/ApiService'
2
- import {
3
- Api_Create_Repair_With_Equipments,
4
- Api_Equipment_Full_Dto,
5
- Api_Repair_Dto,
6
- Api_Update_Repair,
7
- OptionFilters,
8
- } from '@/api/types/Api_Repairs'
9
-
10
- class RepairsService extends ApiService {
11
- public fetchFilters(fullParams: string): Promise<OptionFilters> {
12
- return this.get(`get_list_repair?smart=1&${fullParams}`)
13
- }
14
- public fetchRepairs(
15
- isQuery: boolean,
16
- queries?: string,
17
- hasTeams?: boolean | string,
18
- teamsFilter?: string,
19
- typeFilter?: string,
20
- ): Promise<ResponseApi<Api_Repair_Dto[]>> {
21
- return this.get(
22
- 'get_list_repair' +
23
- (isQuery
24
- ? `${queries}&per_page=100000${typeFilter ? '&' + typeFilter : ''}&${!hasTeams ? teamsFilter : ''}`
25
- : `?per_page=100000${typeFilter ? '&' + typeFilter : ''}&${teamsFilter}`),
26
- )
27
- }
28
- public fetchEquipment(): Promise<ResponseApi<Api_Equipment_Full_Dto[]>> {
29
- return this.get('repairs/equipment/list?per_page=100000')
30
- }
31
- public createRepair(payload: Api_Create_Repair_With_Equipments) {
32
- return this.post<Api_Create_Repair_With_Equipments, any>('/repairs/equipments', payload)
33
- }
34
- public startRepair(id: string): Promise<void> {
35
- return this.post<null, void>(`/repairs/${id}/start`, null)
36
- }
37
- public finishRepair(id: string) {
38
- return this.post<null, void>(`/repairs/${id}/finish`, null)
39
- }
40
- public finishPreparationProject(id: string) {
41
- return this.post<null, void>(`/repairs/${id}/finish_preparation`, null)
42
- }
43
-
44
- public moveRepairToCurrent(id: string) {
45
- return this.post<any, void>(`/repairs/transfer_repair_plan_to_current`, {
46
- repairs: [id],
47
- })
48
- }
49
- public moveArchiveToCurrent(id: string) {
50
- return this.post<any, void>(`/repairs/transfer_repair_archive_to_current`, {
51
- repairs_ids: [id],
52
- })
53
- }
54
- public moveRepairToApr(id: string) {
55
- return this.post<any, void>(`/repairs/transfer_repair_current_to_plan`, {
56
- repairs: [id],
57
- })
58
- }
59
- public moveRepairToArchive(id: string) {
60
- return this.post<any, void>(`/repairs/transfer_repair_current_to_archive`, {
61
- repairs_ids: [id],
62
- })
63
- }
64
- public restoreRepair(id: string) {
65
- return this.post<any, void>(`/restore_repair`, {
66
- repairs_ids: [id],
67
- })
68
- }
69
- public updateRepair(payload: Api_Update_Repair, id: string) {
70
- return this.put<Api_Update_Repair, void>(`/repairs/${id}`, payload)
71
- }
72
- public deleteRepair(id: string) {
73
- return this.delete<any>(`/repairs/${id}`)
74
- }
75
- }
76
-
77
- let api: RepairsService
78
-
79
- export default function useRepairsService() {
80
- if (!api) api = new RepairsService()
81
- return api
82
- }
1
+ import ApiService, { ResponseApi } from '@/api/settings/ApiService'
2
+ import {
3
+ Api_Create_Repair_With_Equipments,
4
+ Api_Equipment_Full_Dto,
5
+ Api_Repair_Dto,
6
+ Api_Update_Repair,
7
+ OptionFilters,
8
+ } from '@/api/types/Api_Repairs'
9
+
10
+ class RepairsService extends ApiService {
11
+ public fetchFilters(fullParams: string): Promise<OptionFilters> {
12
+ return this.get(`get_list_repair?smart=1&${fullParams}`)
13
+ }
14
+
15
+ public fetchRepairs(
16
+ isQuery: boolean,
17
+ queries?: string,
18
+ hasTeams?: boolean | string,
19
+ teamsFilter?: string,
20
+ typeFilter?: string,
21
+ ): Promise<ResponseApi<Api_Repair_Dto[]>> {
22
+ return this.get(
23
+ 'get_list_repair' +
24
+ (isQuery
25
+ ? `${queries}&per_page=100000${typeFilter ? '&' + typeFilter : ''}&${!hasTeams ? teamsFilter : ''}`
26
+ : `?per_page=100000${typeFilter ? '&' + typeFilter : ''}&${teamsFilter}`),
27
+ )
28
+ }
29
+
30
+ public fetchEquipment(): Promise<ResponseApi<Api_Equipment_Full_Dto[]>> {
31
+ return this.get('repairs/equipment/list?per_page=100000')
32
+ }
33
+
34
+ public createRepair(payload: Api_Create_Repair_With_Equipments) {
35
+ return this.post<Api_Create_Repair_With_Equipments, any>('/repairs/equipments', payload)
36
+ }
37
+
38
+ public startRepair(id: string): Promise<void> {
39
+ return this.post<null, void>(`/repairs/${id}/start`, null)
40
+ }
41
+
42
+ public finishRepair(id: string) {
43
+ return this.post<null, void>(`/repairs/${id}/finish`, null)
44
+ }
45
+
46
+ public finishPreparationProject(id: string) {
47
+ return this.post<null, void>(`/repairs/${id}/finish_preparation`, null)
48
+ }
49
+
50
+ public moveRepairToCurrent(id: string) {
51
+ return this.post<any, void>(`/repairs/transfer_repair_plan_to_current`, {
52
+ repairs: [id],
53
+ })
54
+ }
55
+
56
+ public moveArchiveToCurrent(id: string) {
57
+ return this.post<any, void>(`/repairs/transfer_repair_archive_to_current`, {
58
+ repairs_ids: [id],
59
+ })
60
+ }
61
+
62
+ public moveRepairToApr(id: string) {
63
+ return this.post<any, void>(`/repairs/transfer_repair_current_to_plan`, {
64
+ repairs: [id],
65
+ })
66
+ }
67
+
68
+ public moveRepairToArchive(id: string) {
69
+ return this.post<any, void>(`/repairs/transfer_repair_current_to_archive`, {
70
+ repairs_ids: [id],
71
+ })
72
+ }
73
+
74
+ public restoreRepair(id: string) {
75
+ return this.post<any, void>(`/restore_repair`, {
76
+ repairs_ids: [id],
77
+ })
78
+ }
79
+
80
+ public updateRepair(payload: Api_Update_Repair, id: string) {
81
+ return this.put<Api_Update_Repair, void>(`/repairs/${id}`, payload)
82
+ }
83
+
84
+ public deleteRepair(id: string) {
85
+ return this.delete<any>(`/repairs/${id}`)
86
+ }
87
+ }
88
+
89
+ let api: RepairsService
90
+
91
+ export default function useRepairsService() {
92
+ if (!api) api = new RepairsService()
93
+ return api
94
+ }
@@ -1,124 +1,125 @@
1
- import axios, { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios'
2
-
3
- export enum ApiServiceType {
4
- SERVICE_AUTH = 'SERVICE_AUTH',
5
- }
6
-
7
- export type ResponseApi<T> = {
8
- count: number
9
- current_page: number
10
- data: T
11
- per_page: number
12
- total: number
13
- total_pages: number
14
- }
15
-
16
- export default class ApiService {
17
- private axiosInstance: AxiosInstance
18
-
19
- constructor() {
20
- this.axiosInstance = axios.create({
21
- baseURL: process.env.VUE_APP_BACKEND,
22
- headers: {
23
- 'Content-Type': 'application/json',
24
- },
25
- })
26
-
27
- this.axiosInstance.interceptors.request.use(
28
- (config: InternalAxiosRequestConfig) => {
29
- const token = this.getToken()
30
- if (token && config.headers) {
31
- config.headers.Authorization = `Bearer ${token}`
32
- }
33
- return config
34
- },
35
- (error: AxiosError) => {
36
- return Promise.reject(error)
37
- },
38
- )
39
-
40
- this.axiosInstance.interceptors.response.use(
41
- (response: AxiosResponse) => {
42
- return response.data
43
- },
44
- (error: AxiosError) => {
45
- if (error.response?.status === 401 || error.response?.status === 403) {
46
- this.logout()
47
- }
48
- return Promise.reject(error)
49
- },
50
- )
51
- }
52
- private getToken() {
53
- return localStorage.getItem('token')
54
- }
55
-
56
- private removeToken() {
57
- localStorage.removeItem('token')
58
- }
59
-
60
- public logout(): void {
61
- this.removeToken()
62
- window.location.href = '/sign-in'
63
- }
64
-
65
- private handleError(error: AxiosError): void {
66
- if (error.response) {
67
- console.error('API Error:', error.response.status, error.response.data)
68
- } else if (error.request) {
69
- console.error('No response received:', error.request)
70
- } else {
71
- console.error('Error during request setup:', error.message)
72
- }
73
- }
74
-
75
- protected async get<T>(url: string, options?: AxiosRequestConfig) {
76
- try {
77
- const response: AxiosResponse<T> = await this.axiosInstance.get<T>(url, options)
78
- return response?.data ?? (response as unknown as T)
79
- } catch (error) {
80
- const axiosError = error as AxiosError
81
- this.handleError(axiosError)
82
- throw error
83
- }
84
- }
85
-
86
- protected async delete<T>(url: string, options?: AxiosRequestConfig) {
87
- try {
88
- return await this.axiosInstance.delete<T>(url, options)
89
- } catch (error) {
90
- const axiosError = error as AxiosError
91
- this.handleError(axiosError)
92
- throw error
93
- }
94
- }
95
-
96
- protected async post<T1, T2>(url: string, payload: T1, options?: AxiosRequestConfig) {
97
- try {
98
- const response: AxiosResponse<T2> = await this.axiosInstance.post<T1, AxiosResponse<T2>>(url, payload, options)
99
- return response.data
100
- } catch (error) {
101
- const axiosError = error as AxiosError
102
- this.handleError(axiosError)
103
- throw error
104
- }
105
- }
106
-
107
- // protected patch<T1, T2>(url: string, payload: T1, type: ApiServiceType, options?: AxiosRequestConfig): Promise<T2> {
108
- // return axios
109
- // .patch<T1, AxiosResponse<T2>>(apiServiceUrls[type] + url, payload, options)
110
- // .catch((err: AxiosError) => processError401<T2>(err))
111
- // .then(extractData)
112
- // }
113
- //
114
- protected async put<T1, T2>(url: string, payload: T1, options?: AxiosRequestConfig) {
115
- try {
116
- const response: AxiosResponse<T2> = await this.axiosInstance.put<T1, AxiosResponse<T2>>(url, payload, options)
117
- return response.data
118
- } catch (error) {
119
- const axiosError = error as AxiosError
120
- this.handleError(axiosError)
121
- throw error
122
- }
123
- }
124
- }
1
+ import axios, { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios'
2
+
3
+ export enum ApiServiceType {
4
+ SERVICE_AUTH = 'SERVICE_AUTH',
5
+ }
6
+
7
+ export type ResponseApi<T> = {
8
+ count: number
9
+ current_page: number
10
+ data: T
11
+ per_page: number
12
+ total: number
13
+ total_pages: number
14
+ }
15
+
16
+ export default class ApiService {
17
+ private axiosInstance: AxiosInstance
18
+
19
+ constructor() {
20
+ this.axiosInstance = axios.create({
21
+ baseURL: process.env.VUE_APP_BACKEND,
22
+ headers: {
23
+ 'Content-Type': 'application/json',
24
+ },
25
+ })
26
+
27
+ this.axiosInstance.interceptors.request.use(
28
+ (config: InternalAxiosRequestConfig) => {
29
+ const token = this.getToken()
30
+ if (token && config.headers) {
31
+ config.headers.Authorization = `Bearer ${token}`
32
+ }
33
+ return config
34
+ },
35
+ (error: AxiosError) => {
36
+ return Promise.reject(error)
37
+ },
38
+ )
39
+
40
+ this.axiosInstance.interceptors.response.use(
41
+ (response: AxiosResponse) => {
42
+ return response.data
43
+ },
44
+ (error: AxiosError) => {
45
+ if (error.response?.status === 401 || error.response?.status === 403) {
46
+ this.logout()
47
+ }
48
+ return Promise.reject(error)
49
+ },
50
+ )
51
+ }
52
+
53
+ private getToken() {
54
+ return localStorage.getItem('token')
55
+ }
56
+
57
+ private removeToken() {
58
+ localStorage.removeItem('token')
59
+ }
60
+
61
+ public logout(): void {
62
+ this.removeToken()
63
+ window.location.href = '/sign-in'
64
+ }
65
+
66
+ private handleError(error: AxiosError): void {
67
+ if (error.response) {
68
+ console.error('API Error:', error.response.status, error.response.data)
69
+ } else if (error.request) {
70
+ console.error('No response received:', error.request)
71
+ } else {
72
+ console.error('Error during request setup:', error.message)
73
+ }
74
+ }
75
+
76
+ protected async get<T>(url: string, options?: AxiosRequestConfig) {
77
+ try {
78
+ const response: AxiosResponse<T> = await this.axiosInstance.get<T>(url, options)
79
+ return response?.data ?? (response as unknown as T)
80
+ } catch (error) {
81
+ const axiosError = error as AxiosError
82
+ this.handleError(axiosError)
83
+ throw error
84
+ }
85
+ }
86
+
87
+ protected async delete<T>(url: string, options?: AxiosRequestConfig) {
88
+ try {
89
+ return await this.axiosInstance.delete<T>(url, options)
90
+ } catch (error) {
91
+ const axiosError = error as AxiosError
92
+ this.handleError(axiosError)
93
+ throw error
94
+ }
95
+ }
96
+
97
+ protected async post<T1, T2>(url: string, payload: T1, options?: AxiosRequestConfig) {
98
+ try {
99
+ const response: AxiosResponse<T2> = await this.axiosInstance.post<T1, AxiosResponse<T2>>(url, payload, options)
100
+ return response.data
101
+ } catch (error) {
102
+ const axiosError = error as AxiosError
103
+ this.handleError(axiosError)
104
+ throw error
105
+ }
106
+ }
107
+
108
+ // protected patch<T1, T2>(url: string, payload: T1, type: ApiServiceType, options?: AxiosRequestConfig): Promise<T2> {
109
+ // return axios
110
+ // .patch<T1, AxiosResponse<T2>>(apiServiceUrls[type] + url, payload, options)
111
+ // .catch((err: AxiosError) => processError401<T2>(err))
112
+ // .then(extractData)
113
+ // }
114
+ //
115
+ protected async put<T1, T2>(url: string, payload: T1, options?: AxiosRequestConfig) {
116
+ try {
117
+ const response: AxiosResponse<T2> = await this.axiosInstance.put<T1, AxiosResponse<T2>>(url, payload, options)
118
+ return response.data
119
+ } catch (error) {
120
+ const axiosError = error as AxiosError
121
+ this.handleError(axiosError)
122
+ throw error
123
+ }
124
+ }
125
+ }
@@ -0,0 +1 @@
1
+ export type Api_Files_Responsible_Dto = { file: string }[]
package/src/index.ts CHANGED
@@ -1,58 +1,60 @@
1
- import '@/shared/styles/general.css'
2
- import AppButton from '@/common/app-button/AppButton.vue'
3
- import AppCheckbox from '@/common/app-checkbox/AppCheckbox.vue'
4
- import AppDatePicker from '@/common/app-date-picker/AppDatePicker.vue'
5
- import AppInput from '@/common/app-input/AppInput.vue'
6
- import AppInputSearch from '@/common/app-input-search/AppInputSearch.vue'
7
- import AppLayout from '@/common/app-layout/AppLayout.vue'
8
- import AppLayoutHeader from '@/common/app-layout/components/AppLayoutHeader.vue'
9
- import AppLoader from '@/common/app-loader/index.vue'
10
- import AppSelect from '@/common/app-select/AppSelect.vue'
11
- import AppSheet from '@/common/app-sheet/AppSheet.vue'
12
- import AppSidebar from '@/common/app-sidebar/AppSidebar.vue'
13
- import AppToggle from '@/common/app-toggle/AppToggle.vue'
14
- import AppWrapper from '@/common/app-wrapper/AppWrapper.vue'
15
- import AppConfirmDialog from '@/common/app-dialogs/AppConfirmDialog.vue'
16
-
17
- import useGanttService from '@/api/services/GanttService'
18
- import useMetricsService from '@/api/services/MetricsService'
19
- import useProjectsService from '@/api/services/ProjectsService'
20
- import useRepairsService from '@/api/services/RepairsService'
21
- import useTasksService from '@/api/services/TasksService'
22
- import useAuthService from '@/api/services/AuthService'
23
- import ApiService from '@/api/settings/ApiService'
24
-
25
- export {
26
- AppButton,
27
- AppCheckbox,
28
- AppDatePicker,
29
- AppInput,
30
- AppInputSearch,
31
- AppLayout,
32
- AppLayoutHeader,
33
- AppLoader,
34
- AppSelect,
35
- AppSheet,
36
- AppSidebar,
37
- AppToggle,
38
- AppWrapper,
39
- AppConfirmDialog,
40
- }
41
-
42
- export {
43
- ApiService,
44
- useAuthService,
45
- useGanttService,
46
- useMetricsService,
47
- useProjectsService,
48
- useRepairsService,
49
- useTasksService,
50
- }
51
-
52
- export type { NotificationType } from './utils/notification'
53
- export { notificationSettings } from './utils/notification'
54
-
55
- export * from './api/types/Api_Tasks'
56
- export * from './api/types/Api_Repairs'
57
- export * from './api/types/Api_Projects'
58
- // export * from '@/api/types/Api_Metrics'
1
+ import '@/shared/styles/general.css'
2
+ import AppButton from '@/common/app-button/AppButton.vue'
3
+ import AppCheckbox from '@/common/app-checkbox/AppCheckbox.vue'
4
+ import AppDatePicker from '@/common/app-date-picker/AppDatePicker.vue'
5
+ import AppInput from '@/common/app-input/AppInput.vue'
6
+ import AppInputSearch from '@/common/app-input-search/AppInputSearch.vue'
7
+ import AppLayout from '@/common/app-layout/AppLayout.vue'
8
+ import AppLayoutHeader from '@/common/app-layout/components/AppLayoutHeader.vue'
9
+ import AppLoader from '@/common/app-loader/index.vue'
10
+ import AppSelect from '@/common/app-select/AppSelect.vue'
11
+ import AppSheet from '@/common/app-sheet/AppSheet.vue'
12
+ import AppSidebar from '@/common/app-sidebar/AppSidebar.vue'
13
+ import AppToggle from '@/common/app-toggle/AppToggle.vue'
14
+ import AppWrapper from '@/common/app-wrapper/AppWrapper.vue'
15
+ import AppConfirmDialog from '@/common/app-dialogs/AppConfirmDialog.vue'
16
+
17
+ import useGanttService from '@/api/services/GanttService'
18
+ import useMetricsService from '@/api/services/MetricsService'
19
+ import useProjectsService from '@/api/services/ProjectsService'
20
+ import useRepairsService from '@/api/services/RepairsService'
21
+ import useTasksService from '@/api/services/TasksService'
22
+ import useAuthService from '@/api/services/AuthService'
23
+ import useFileService from '@/api/services/FileService'
24
+ import ApiService from '@/api/settings/ApiService'
25
+
26
+ export {
27
+ AppButton,
28
+ AppCheckbox,
29
+ AppDatePicker,
30
+ AppInput,
31
+ AppInputSearch,
32
+ AppLayout,
33
+ AppLayoutHeader,
34
+ AppLoader,
35
+ AppSelect,
36
+ AppSheet,
37
+ AppSidebar,
38
+ AppToggle,
39
+ AppWrapper,
40
+ AppConfirmDialog,
41
+ }
42
+
43
+ export {
44
+ ApiService,
45
+ useAuthService,
46
+ useGanttService,
47
+ useMetricsService,
48
+ useProjectsService,
49
+ useRepairsService,
50
+ useTasksService,
51
+ useFileService,
52
+ }
53
+
54
+ export type { NotificationType } from './utils/notification'
55
+ export { notificationSettings } from './utils/notification'
56
+
57
+ export * from './api/types/Api_Tasks'
58
+ export * from './api/types/Api_Repairs'
59
+ export * from './api/types/Api_Projects'
60
+ // export * from '@/api/types/Api_Metrics'