shared-ritm 1.3.71 → 1.3.73
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.
- package/dist/index.css +1 -1
- package/dist/shared-ritm.es.js +10774 -10718
- package/dist/shared-ritm.umd.js +244 -244
- package/dist/types/api/services/MetricsService.d.ts +2 -1
- package/dist/types/api/services/UserIssueService.d.ts +15 -0
- package/dist/types/api/types/Api_Metrics.d.ts +7 -0
- package/dist/types/api/types/Api_User_Issue.d.ts +33 -0
- package/dist/types/index.d.ts +3 -1
- package/dist/types/utils/files.d.ts +2 -0
- package/package.json +1 -1
- package/src/api/services/MetricsService.ts +13 -2
- package/src/api/services/UserIssueService.ts +32 -0
- package/src/api/types/Api_Metrics.ts +9 -0
- package/src/api/types/Api_User_Issue.ts +36 -0
- package/src/common/app-icon/AppIcon.vue +2 -0
- package/src/common/app-input-new/AppInputNew.vue +181 -179
- package/src/icons/sidebar/user-requests-icon.vue +23 -0
- package/src/index.ts +3 -0
- package/src/utils/files.ts +38 -19
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import ApiService from '../settings/ApiService';
|
|
2
2
|
import { ResponseApi } from '../types/Api_Service';
|
|
3
|
-
import { Api_Metrics_Personnel_Plan, Api_Metrics_Unused_Personnel } from '@/api/types/Api_Metrics';
|
|
3
|
+
import { Api_Metrics_Personnel_Plan, Api_Metrics_Personnel_Plan_Project, Api_Metrics_Personnel_Plan_Project_Body, Api_Metrics_Unused_Personnel } from '@/api/types/Api_Metrics';
|
|
4
4
|
declare class MetricsService extends ApiService {
|
|
5
5
|
fetchPieProjects(queryString: string): Promise<ResponseApi<any>>;
|
|
6
6
|
fetchPieTasks(queryString: string): Promise<ResponseApi<any>>;
|
|
@@ -31,6 +31,7 @@ declare class MetricsService extends ApiService {
|
|
|
31
31
|
fetchPieAllTasks(queryString: string): Promise<any>;
|
|
32
32
|
fetchPieAllTasksInfo(queryString: string): Promise<any>;
|
|
33
33
|
fetchPersonnelPlan(params: any): Promise<Api_Metrics_Personnel_Plan>;
|
|
34
|
+
fetchPersonnelPlanProjects(body: Api_Metrics_Personnel_Plan_Project_Body): Promise<Api_Metrics_Personnel_Plan_Project[]>;
|
|
34
35
|
}
|
|
35
36
|
export default function useMetricsService(): MetricsService;
|
|
36
37
|
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import ApiService from '../settings/ApiService';
|
|
2
|
+
import { Api_User_Issue, Api_User_Issue_List_Item, Api_User_Issue_Properties } from '@/api/types/Api_User_Issue';
|
|
3
|
+
import { ResponseApi } from '@/api/types/Api_Service';
|
|
4
|
+
declare class UserIssueService extends ApiService {
|
|
5
|
+
createUserIssue(body: any): Promise<Api_User_Issue_List_Item>;
|
|
6
|
+
getUserIssue(id: string): Promise<Api_User_Issue>;
|
|
7
|
+
getUserIssueList(params: any): Promise<ResponseApi<Api_User_Issue_List_Item>>;
|
|
8
|
+
getProperties(): Promise<Api_User_Issue_Properties>;
|
|
9
|
+
deleteUserIssue(id: string): Promise<{
|
|
10
|
+
data: boolean;
|
|
11
|
+
status: number;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
export default function useUserIssueService(): UserIssueService;
|
|
15
|
+
export {};
|
|
@@ -21,3 +21,10 @@ export type Api_Metrics_Personnel_Plan = {
|
|
|
21
21
|
fixed_repair: Api_Metrics_Personnel_Plan_Position[];
|
|
22
22
|
ready: Api_Metrics_Personnel_Plan_User[];
|
|
23
23
|
};
|
|
24
|
+
export type Api_Metrics_Personnel_Plan_Project = {
|
|
25
|
+
id: string;
|
|
26
|
+
name: string;
|
|
27
|
+
};
|
|
28
|
+
export type Api_Metrics_Personnel_Plan_Project_Body = {
|
|
29
|
+
repairs: string[];
|
|
30
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type Api_User_Issue_List_Item = {
|
|
2
|
+
id: string;
|
|
3
|
+
section: string;
|
|
4
|
+
status: string;
|
|
5
|
+
type: string;
|
|
6
|
+
topic: string;
|
|
7
|
+
created_at: string;
|
|
8
|
+
number: number;
|
|
9
|
+
};
|
|
10
|
+
export type Api_User_Issue_Msg = {
|
|
11
|
+
id: string;
|
|
12
|
+
message: string;
|
|
13
|
+
thread_id: string;
|
|
14
|
+
files: unknown[];
|
|
15
|
+
user: {
|
|
16
|
+
id: string;
|
|
17
|
+
full_name: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export type Api_User_Issue = {
|
|
21
|
+
id: string;
|
|
22
|
+
section: string;
|
|
23
|
+
status: string;
|
|
24
|
+
type: string;
|
|
25
|
+
topic: string;
|
|
26
|
+
number: number;
|
|
27
|
+
messages: Api_User_Issue_Msg[];
|
|
28
|
+
};
|
|
29
|
+
export type Api_User_Issue_Properties = {
|
|
30
|
+
section: Record<string, string>;
|
|
31
|
+
status: Record<string, string>;
|
|
32
|
+
type: Record<string, string>;
|
|
33
|
+
};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -44,9 +44,10 @@ import useCommentsService from './api/services/CommentsService';
|
|
|
44
44
|
import useEquipmentService from './api/services/EquipmentService';
|
|
45
45
|
import useBrigadesService from './api/services/BrigadesService';
|
|
46
46
|
import useScheduleService from './api/services/ScheduleService';
|
|
47
|
+
import useUserIssueService from './api/services/UserIssueService';
|
|
47
48
|
import useFaceApiHelper from './utils/faceApiHelper';
|
|
48
49
|
export { AppButton, AppCheckbox, AppDatepicker, AppDatePicker, AppInput, AppInputNew, AppInputSearch, AppLayout, AppLayoutHeader, AppLayoutPage, AppLoader, AppSelect, AppSheet, AppSheetNew, AppSidebar, AppToggle, AppWrapper, AppConfirmDialog, AppDropdown, AppTablePagination, AppTableSearch, AppTableModal, AppTable, AppTableLayout, AppModalSelect, AppModal, AppFile, };
|
|
49
|
-
export { ApiService, useAuthService, useGanttService, useMetricsService, useProjectsService, useRepairsService, useTasksService, useFileService, useControlsService, useVideoService, useUserService, useInstrumentsService, useSearchService, useModulesService, useCommentsService, useFaceApiHelper, useEquipmentService, useBrigadesService, useScheduleService, };
|
|
50
|
+
export { ApiService, useAuthService, useGanttService, useMetricsService, useProjectsService, useRepairsService, useTasksService, useFileService, useControlsService, useVideoService, useUserService, useInstrumentsService, useSearchService, useModulesService, useCommentsService, useFaceApiHelper, useEquipmentService, useBrigadesService, useScheduleService, useUserIssueService, };
|
|
50
51
|
export { useBaseTable } from './common/app-table/controllers/useBaseTable';
|
|
51
52
|
export { useTableModel } from './common/app-table/controllers/useTableModel';
|
|
52
53
|
export { useColumnSelector } from './common/app-table/controllers/useColumnSelector';
|
|
@@ -72,3 +73,4 @@ export * from './api/types/Api_Brigades';
|
|
|
72
73
|
export * from './api/types/Api_Modules';
|
|
73
74
|
export * from './api/types/Api_Schedule';
|
|
74
75
|
export * from './api/types/Api_Metrics';
|
|
76
|
+
export * from './api/types/Api_User_Issue';
|
package/package.json
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import ApiService from '../settings/ApiService'
|
|
2
2
|
import { ResponseApi } from '../types/Api_Service'
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
Api_Metrics_Personnel_Plan,
|
|
5
|
+
Api_Metrics_Personnel_Plan_Project,
|
|
6
|
+
Api_Metrics_Personnel_Plan_Project_Body,
|
|
7
|
+
Api_Metrics_Unused_Personnel,
|
|
8
|
+
} from '@/api/types/Api_Metrics'
|
|
4
9
|
|
|
5
10
|
class MetricsService extends ApiService {
|
|
6
11
|
public async fetchPieProjects(queryString: string): Promise<ResponseApi<any>> {
|
|
@@ -115,7 +120,13 @@ class MetricsService extends ApiService {
|
|
|
115
120
|
}
|
|
116
121
|
|
|
117
122
|
public fetchPersonnelPlan(params: any): Promise<Api_Metrics_Personnel_Plan> {
|
|
118
|
-
return this.get(
|
|
123
|
+
return this.get('repairs/metrics/personnel_plan', { params })
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
public fetchPersonnelPlanProjects(
|
|
127
|
+
body: Api_Metrics_Personnel_Plan_Project_Body,
|
|
128
|
+
): Promise<Api_Metrics_Personnel_Plan_Project[]> {
|
|
129
|
+
return this.post('repairs/metrics/projects_with_personnel_plan', body)
|
|
119
130
|
}
|
|
120
131
|
}
|
|
121
132
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import ApiService from '../settings/ApiService'
|
|
2
|
+
import { Api_User_Issue, Api_User_Issue_List_Item, Api_User_Issue_Properties } from '@/api/types/Api_User_Issue'
|
|
3
|
+
import { ResponseApi } from '@/api/types/Api_Service'
|
|
4
|
+
|
|
5
|
+
class UserIssueService extends ApiService {
|
|
6
|
+
public createUserIssue(body: any): Promise<Api_User_Issue_List_Item> {
|
|
7
|
+
return this.post('user_issue', body, { headers: { 'Content-Type': 'multipart/form-data' } })
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
public getUserIssue(id: string): Promise<Api_User_Issue> {
|
|
11
|
+
return this.get(`user_issue/${id}`)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public getUserIssueList(params: any): Promise<ResponseApi<Api_User_Issue_List_Item>> {
|
|
15
|
+
return this.get('user_issue/list', { params })
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
public getProperties(): Promise<Api_User_Issue_Properties> {
|
|
19
|
+
return this.get('user_issue/properties')
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public deleteUserIssue(id: string): Promise<{ data: boolean; status: number }> {
|
|
23
|
+
return this.delete(`user_issue/${id}`)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
let api: UserIssueService
|
|
28
|
+
|
|
29
|
+
export default function useUserIssueService() {
|
|
30
|
+
if (!api) api = new UserIssueService()
|
|
31
|
+
return api
|
|
32
|
+
}
|
|
@@ -24,3 +24,12 @@ export type Api_Metrics_Personnel_Plan = {
|
|
|
24
24
|
fixed_repair: Api_Metrics_Personnel_Plan_Position[]
|
|
25
25
|
ready: Api_Metrics_Personnel_Plan_User[]
|
|
26
26
|
}
|
|
27
|
+
|
|
28
|
+
export type Api_Metrics_Personnel_Plan_Project = {
|
|
29
|
+
id: string
|
|
30
|
+
name: string
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type Api_Metrics_Personnel_Plan_Project_Body = {
|
|
34
|
+
repairs: string[]
|
|
35
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export type Api_User_Issue_List_Item = {
|
|
2
|
+
id: string
|
|
3
|
+
section: string
|
|
4
|
+
status: string
|
|
5
|
+
type: string
|
|
6
|
+
topic: string
|
|
7
|
+
created_at: string
|
|
8
|
+
number: number
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export type Api_User_Issue_Msg = {
|
|
12
|
+
id: string
|
|
13
|
+
message: string
|
|
14
|
+
thread_id: string
|
|
15
|
+
files: unknown[]
|
|
16
|
+
user: {
|
|
17
|
+
id: string
|
|
18
|
+
full_name: string
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type Api_User_Issue = {
|
|
23
|
+
id: string
|
|
24
|
+
section: string
|
|
25
|
+
status: string
|
|
26
|
+
type: string
|
|
27
|
+
topic: string
|
|
28
|
+
number: number
|
|
29
|
+
messages: Api_User_Issue_Msg[]
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export type Api_User_Issue_Properties = {
|
|
33
|
+
section: Record<string, string>
|
|
34
|
+
status: Record<string, string>
|
|
35
|
+
type: Record<string, string>
|
|
36
|
+
}
|
|
@@ -13,6 +13,7 @@ import PassIcon from '@/icons/sidebar/pass-icon.vue'
|
|
|
13
13
|
import AssignModuleIcon from '@/icons/sidebar/assign-module-icon.vue'
|
|
14
14
|
import UsersIcon from '@/icons/sidebar/users-icon.vue'
|
|
15
15
|
import UserIcon from '@/icons/sidebar/user-icon.vue'
|
|
16
|
+
import UserRequestsIcon from '@/icons/sidebar/user-requests-icon.vue'
|
|
16
17
|
import WorkzonesIcon from '@/icons/sidebar/workzones-icon.vue'
|
|
17
18
|
import LogoutIcon from '@/icons/sidebar/logout-icon.vue'
|
|
18
19
|
import LogoIcon from '@/icons/sidebar/logo-icon.vue'
|
|
@@ -71,6 +72,7 @@ const sideBarIcon = computed(
|
|
|
71
72
|
AssignModuleIcon,
|
|
72
73
|
UsersIcon,
|
|
73
74
|
UserIcon,
|
|
75
|
+
UserRequestsIcon,
|
|
74
76
|
WorkzonesIcon,
|
|
75
77
|
LogoutIcon,
|
|
76
78
|
LogoIcon,
|
|
@@ -1,179 +1,181 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="app-input-new">
|
|
3
|
-
<label v-if="label" class="app-input-new__label">
|
|
4
|
-
{{ label }}
|
|
5
|
-
<span v-if="required" class="required">*</span>
|
|
6
|
-
</label>
|
|
7
|
-
|
|
8
|
-
<q-input
|
|
9
|
-
v-model="model"
|
|
10
|
-
filled
|
|
11
|
-
:type="inputType"
|
|
12
|
-
:rules="rules"
|
|
13
|
-
:placeholder="placeholder"
|
|
14
|
-
:disable="disable"
|
|
15
|
-
:readonly="readonly"
|
|
16
|
-
:class="inputClass"
|
|
17
|
-
:error="error"
|
|
18
|
-
:autocomplete="autocomplete"
|
|
19
|
-
:debounce="debounce"
|
|
20
|
-
:loading="loading"
|
|
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
|
-
import {
|
|
65
|
-
import {
|
|
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
|
-
const
|
|
95
|
-
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
return value
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
:
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
1
|
+
<template>
|
|
2
|
+
<div class="app-input-new">
|
|
3
|
+
<label v-if="label" class="app-input-new__label">
|
|
4
|
+
{{ label }}
|
|
5
|
+
<span v-if="required" class="required">*</span>
|
|
6
|
+
</label>
|
|
7
|
+
|
|
8
|
+
<q-input
|
|
9
|
+
v-model="model"
|
|
10
|
+
filled
|
|
11
|
+
:type="inputType"
|
|
12
|
+
:rules="rules"
|
|
13
|
+
:placeholder="placeholder"
|
|
14
|
+
:disable="disable"
|
|
15
|
+
:readonly="readonly"
|
|
16
|
+
:class="inputClass"
|
|
17
|
+
:error="error"
|
|
18
|
+
:autocomplete="autocomplete"
|
|
19
|
+
:debounce="debounce"
|
|
20
|
+
:loading="loading"
|
|
21
|
+
:maxlength="maxlength"
|
|
22
|
+
:counter="counter"
|
|
23
|
+
@blur="emit('blur')"
|
|
24
|
+
>
|
|
25
|
+
<slot />
|
|
26
|
+
<template #append>
|
|
27
|
+
<slot name="append" />
|
|
28
|
+
<q-icon
|
|
29
|
+
v-if="type === 'password'"
|
|
30
|
+
:name="isVisiblePass ? 'visibility' : 'visibility_off'"
|
|
31
|
+
color="primary"
|
|
32
|
+
class="cursor-pointer"
|
|
33
|
+
@click="isVisiblePass = !isVisiblePass"
|
|
34
|
+
/>
|
|
35
|
+
<q-icon
|
|
36
|
+
v-if="clearable && (model || model === 0)"
|
|
37
|
+
name="close"
|
|
38
|
+
class="cursor-pointer clear-input"
|
|
39
|
+
@click="model = null"
|
|
40
|
+
/>
|
|
41
|
+
<q-btn
|
|
42
|
+
v-if="uuid && !disable && !readonly"
|
|
43
|
+
flat
|
|
44
|
+
no-caps
|
|
45
|
+
label="UUID"
|
|
46
|
+
size="sm"
|
|
47
|
+
class="q-ml-sm uuid-btn"
|
|
48
|
+
@click="model = uuidv4()"
|
|
49
|
+
/>
|
|
50
|
+
<q-icon
|
|
51
|
+
v-if="copyable"
|
|
52
|
+
name="content_copy"
|
|
53
|
+
class="cursor-pointer q-ml-sm copy-icon"
|
|
54
|
+
color="primary"
|
|
55
|
+
:disable="!model"
|
|
56
|
+
@click="copyToClipboard"
|
|
57
|
+
/>
|
|
58
|
+
</template>
|
|
59
|
+
</q-input>
|
|
60
|
+
</div>
|
|
61
|
+
</template>
|
|
62
|
+
|
|
63
|
+
<script setup lang="ts">
|
|
64
|
+
import { defineEmits, defineProps, computed, ref } from 'vue'
|
|
65
|
+
import { uuidv4 } from '@/utils/helpers'
|
|
66
|
+
import { notificationSettings } from '@/utils/notification'
|
|
67
|
+
import { QInputProps, useQuasar } from 'quasar'
|
|
68
|
+
|
|
69
|
+
const props = defineProps<
|
|
70
|
+
QInputProps & {
|
|
71
|
+
modelValue?: string | number | null
|
|
72
|
+
label?: string
|
|
73
|
+
placeholder?: string
|
|
74
|
+
rules?: ((val: string | number | null | undefined) => boolean | string)[]
|
|
75
|
+
inputClass?: string
|
|
76
|
+
required?: boolean
|
|
77
|
+
readonly?: boolean
|
|
78
|
+
disable?: boolean
|
|
79
|
+
uuid?: boolean
|
|
80
|
+
clearable?: boolean
|
|
81
|
+
copyable?: boolean
|
|
82
|
+
error?: boolean
|
|
83
|
+
autocomplete?: string
|
|
84
|
+
debounce?: number
|
|
85
|
+
loading?: boolean
|
|
86
|
+
}
|
|
87
|
+
>()
|
|
88
|
+
|
|
89
|
+
const emit = defineEmits<{
|
|
90
|
+
(e: 'update:modelValue', val?: string | number | null): void
|
|
91
|
+
(e: 'blur', val?: string | number | null): void
|
|
92
|
+
}>()
|
|
93
|
+
|
|
94
|
+
const $q = useQuasar()
|
|
95
|
+
|
|
96
|
+
const isVisiblePass = ref(false)
|
|
97
|
+
|
|
98
|
+
const model = computed({
|
|
99
|
+
get: () => getValue(props.modelValue),
|
|
100
|
+
set: (newValue?: string | number | null) => emit('update:modelValue', getValue(newValue)),
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
const inputType = computed(() => (props.type === 'password' && isVisiblePass.value ? 'text' : props.type))
|
|
104
|
+
|
|
105
|
+
const getValue = (value?: string | number | null) => {
|
|
106
|
+
if (props.type === 'number') return value ? +value : value
|
|
107
|
+
|
|
108
|
+
return value
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const copyToClipboard = () => {
|
|
112
|
+
if (!model.value && model.value !== 0) return
|
|
113
|
+
|
|
114
|
+
navigator.clipboard.writeText(model.value.toString()).then(() => {
|
|
115
|
+
$q.notify(notificationSettings('success', 'Данные скопированы'))
|
|
116
|
+
})
|
|
117
|
+
}
|
|
118
|
+
</script>
|
|
119
|
+
|
|
120
|
+
<style scoped lang="scss">
|
|
121
|
+
.app-input-new {
|
|
122
|
+
display: flex;
|
|
123
|
+
flex-direction: column;
|
|
124
|
+
margin-bottom: 15px;
|
|
125
|
+
|
|
126
|
+
&__label {
|
|
127
|
+
font-size: 14px;
|
|
128
|
+
font-weight: 700;
|
|
129
|
+
color: #7d8592;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.required {
|
|
133
|
+
color: #f65160;
|
|
134
|
+
font-weight: bold;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.clear-input {
|
|
138
|
+
color: #d8e0f0;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.uuid-btn {
|
|
142
|
+
height: 32px;
|
|
143
|
+
padding: 0 10px;
|
|
144
|
+
border: 1px solid #3f8cff;
|
|
145
|
+
color: #3f8cff;
|
|
146
|
+
font-weight: 700;
|
|
147
|
+
font-size: 14px;
|
|
148
|
+
background: white;
|
|
149
|
+
border-radius: 6px;
|
|
150
|
+
|
|
151
|
+
:deep(.block) {
|
|
152
|
+
line-height: normal;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
:deep(.q-placeholder) {
|
|
157
|
+
color: #7d8592;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
:deep(.q-field__control) {
|
|
161
|
+
min-height: 58px;
|
|
162
|
+
border-radius: 8px;
|
|
163
|
+
border: 1px solid #d8e0f0;
|
|
164
|
+
background: #fff;
|
|
165
|
+
box-shadow: 0 1px 2px 0 rgba(184, 200, 224, 0.22);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
:deep(.q-field--filled .q-field__control:before) {
|
|
169
|
+
background: #fff !important;
|
|
170
|
+
border: none;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
:deep(.q-field--with-bottom) {
|
|
174
|
+
padding-bottom: 0;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
:deep(.q-field__bottom) {
|
|
178
|
+
padding: 0;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
</style>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
+
<path
|
|
4
|
+
d="M17.98 10.79V14.79C17.98 15.05 17.97 15.3 17.94 15.54C17.71 18.24 16.12 19.58 13.19 19.58H12.79C12.54 19.58 12.3 19.7 12.15 19.9L10.95 21.5C10.42 22.21 9.56 22.21 9.03 21.5L7.82999 19.9C7.69999 19.73 7.41 19.58 7.19 19.58H6.79001C3.60001 19.58 2 18.79 2 14.79V10.79C2 7.86001 3.35001 6.27001 6.04001 6.04001C6.28001 6.01001 6.53001 6 6.79001 6H13.19C16.38 6 17.98 7.60001 17.98 10.79Z"
|
|
5
|
+
stroke="white"
|
|
6
|
+
stroke-width="1.5"
|
|
7
|
+
stroke-miterlimit="10"
|
|
8
|
+
stroke-linecap="round"
|
|
9
|
+
stroke-linejoin="round"
|
|
10
|
+
/>
|
|
11
|
+
<path
|
|
12
|
+
d="M21.98 6.79001V10.79C21.98 13.73 20.63 15.31 17.94 15.54C17.97 15.3 17.98 15.05 17.98 14.79V10.79C17.98 7.60001 16.38 6 13.19 6H6.79004C6.53004 6 6.28004 6.01001 6.04004 6.04001C6.27004 3.35001 7.86004 2 10.79 2H17.19C20.38 2 21.98 3.60001 21.98 6.79001Z"
|
|
13
|
+
stroke="white"
|
|
14
|
+
stroke-width="1.5"
|
|
15
|
+
stroke-miterlimit="10"
|
|
16
|
+
stroke-linecap="round"
|
|
17
|
+
stroke-linejoin="round"
|
|
18
|
+
/>
|
|
19
|
+
<path d="M13.4955 13.25H13.5045" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
|
20
|
+
<path d="M9.99561 13.25H10.0046" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
|
21
|
+
<path d="M6.4955 13.25H6.5045" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
|
22
|
+
</svg>
|
|
23
|
+
</template>
|
package/src/index.ts
CHANGED
|
@@ -45,6 +45,7 @@ import useCommentsService from './api/services/CommentsService'
|
|
|
45
45
|
import useEquipmentService from './api/services/EquipmentService'
|
|
46
46
|
import useBrigadesService from './api/services/BrigadesService'
|
|
47
47
|
import useScheduleService from './api/services/ScheduleService'
|
|
48
|
+
import useUserIssueService from './api/services/UserIssueService'
|
|
48
49
|
|
|
49
50
|
import useFaceApiHelper from './utils/faceApiHelper'
|
|
50
51
|
|
|
@@ -98,6 +99,7 @@ export {
|
|
|
98
99
|
useEquipmentService,
|
|
99
100
|
useBrigadesService,
|
|
100
101
|
useScheduleService,
|
|
102
|
+
useUserIssueService,
|
|
101
103
|
}
|
|
102
104
|
|
|
103
105
|
export { useBaseTable } from './common/app-table/controllers/useBaseTable'
|
|
@@ -129,3 +131,4 @@ export * from './api/types/Api_Brigades'
|
|
|
129
131
|
export * from './api/types/Api_Modules'
|
|
130
132
|
export * from './api/types/Api_Schedule'
|
|
131
133
|
export * from './api/types/Api_Metrics'
|
|
134
|
+
export * from './api/types/Api_User_Issue'
|