shared-ritm 1.2.98 → 1.2.99

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.
Files changed (126) hide show
  1. package/README.md +103 -103
  2. package/dist/index.css +1 -1
  3. package/dist/shared-ritm.es.js +1330 -1357
  4. package/dist/shared-ritm.umd.js +6 -6
  5. package/dist/types/api/services/UserService.d.ts +7 -0
  6. package/dist/types/api/services/VideoService.d.ts +0 -24
  7. package/dist/types/api/types/Api_Tasks.d.ts +1 -1
  8. package/dist/types/index.d.ts +0 -1
  9. package/package.json +64 -64
  10. package/src/App.vue +2461 -2461
  11. package/src/api/services/AuthService.ts +64 -64
  12. package/src/api/services/CommentsService.ts +24 -24
  13. package/src/api/services/ControlsService.ts +65 -65
  14. package/src/api/services/FileService.ts +17 -17
  15. package/src/api/services/GanttService.ts +17 -17
  16. package/src/api/services/InstrumentsService.ts +22 -22
  17. package/src/api/services/MetricsService.ts +110 -110
  18. package/src/api/services/ProjectsService.ts +68 -68
  19. package/src/api/services/RepairsService.ts +119 -119
  20. package/src/api/services/SearchService.ts +16 -16
  21. package/src/api/services/TasksService.ts +145 -145
  22. package/src/api/services/UserService.ts +14 -0
  23. package/src/api/services/VideoService.ts +17 -62
  24. package/src/api/settings/ApiService.ts +123 -123
  25. package/src/api/types/Api_Comment.ts +40 -40
  26. package/src/api/types/Api_Controls.ts +72 -72
  27. package/src/api/types/Api_Files.ts +7 -7
  28. package/src/api/types/Api_Instruments.ts +98 -98
  29. package/src/api/types/Api_Projects.ts +55 -55
  30. package/src/api/types/Api_Repairs.ts +115 -115
  31. package/src/api/types/Api_Search.ts +48 -48
  32. package/src/api/types/Api_Service.ts +9 -9
  33. package/src/api/types/Api_Tasks.ts +315 -315
  34. package/src/api/types/Api_User.ts +117 -117
  35. package/src/common/app-button/AppButton.vue +173 -173
  36. package/src/common/app-checkbox/AppCheckbox.vue +26 -26
  37. package/src/common/app-date-picker/AppDatePicker.vue +81 -81
  38. package/src/common/app-datepicker/AppDatepicker.vue +165 -165
  39. package/src/common/app-dialogs/AppConfirmDialog.vue +99 -99
  40. package/src/common/app-dropdown/AppDropdown.vue +31 -31
  41. package/src/common/app-icon/AppIcon.vue +108 -108
  42. package/src/common/app-input/AppInput.vue +148 -148
  43. package/src/common/app-input-new/AppInputNew.vue +152 -167
  44. package/src/common/app-input-search/AppInputSearch.vue +174 -174
  45. package/src/common/app-layout/AppLayout.vue +84 -84
  46. package/src/common/app-layout/components/AppLayoutHeader.vue +251 -250
  47. package/src/common/app-layout/components/AppLayoutPage.vue +16 -16
  48. package/src/common/app-loader/index.vue +43 -43
  49. package/src/common/app-page-layout/AppPageLayout.vue +122 -122
  50. package/src/common/app-select/AppSelect.vue +157 -157
  51. package/src/common/app-sheet/AppSheet.vue +120 -120
  52. package/src/common/app-sheet-new/AppSheetNew.vue +246 -246
  53. package/src/common/app-sidebar/AppSidebar.vue +168 -168
  54. package/src/common/app-sidebar/components/SidebarMenu.vue +37 -37
  55. package/src/common/app-sidebar/components/SidebarMenuItem.vue +148 -148
  56. package/src/common/app-table/AppTable.vue +305 -312
  57. package/src/common/app-table/AppTableLayout.vue +136 -137
  58. package/src/common/app-table/components/ModalSelect.vue +270 -270
  59. package/src/common/app-table/components/TableModal.vue +331 -331
  60. package/src/common/app-table/components/TablePagination.vue +152 -152
  61. package/src/common/app-table/controllers/useBaseTable.ts +45 -45
  62. package/src/common/app-table/controllers/useColumnSelector.ts +38 -38
  63. package/src/common/app-table/controllers/useTableModel.ts +93 -93
  64. package/src/common/app-toggle/AppToggle.vue +24 -24
  65. package/src/common/app-wrapper/AppWrapper.vue +28 -28
  66. package/src/global.d.ts +1 -1
  67. package/src/icons/components/arrow-down-icon.vue +25 -25
  68. package/src/icons/components/arrow-frame-icon.vue +19 -19
  69. package/src/icons/components/arrow-square.vue +22 -22
  70. package/src/icons/components/table-filter-icon.vue +30 -30
  71. package/src/icons/dialogs/RemoveIcon.vue +12 -12
  72. package/src/icons/dialogs/SafetyIcon.vue +12 -12
  73. package/src/icons/header/NotificationIcon.vue +18 -18
  74. package/src/icons/header/PersonIcon.vue +11 -11
  75. package/src/icons/header/SettingIcon.vue +14 -14
  76. package/src/icons/header/flashIcon.vue +24 -24
  77. package/src/icons/header/searchStatusIcon.vue +24 -24
  78. package/src/icons/header/smallCapsIcon.vue +34 -34
  79. package/src/icons/sidebar/assign-module-icon.vue +36 -36
  80. package/src/icons/sidebar/instrument-history-icon.vue +32 -32
  81. package/src/icons/sidebar/instrument-order-icon.vue +38 -38
  82. package/src/icons/sidebar/instrument-work-zone-icon.vue +18 -18
  83. package/src/icons/sidebar/instruments-icon.vue +45 -45
  84. package/src/icons/sidebar/logo-icon.vue +15 -15
  85. package/src/icons/sidebar/logout-icon.vue +13 -13
  86. package/src/icons/sidebar/modules-icon.vue +16 -16
  87. package/src/icons/sidebar/notifications-icon.vue +24 -24
  88. package/src/icons/sidebar/order-icon.vue +44 -44
  89. package/src/icons/sidebar/pass-icon.vue +38 -38
  90. package/src/icons/sidebar/positions-icon.vue +42 -42
  91. package/src/icons/sidebar/preorder-icon.vue +19 -19
  92. package/src/icons/sidebar/projects-icon.vue +31 -31
  93. package/src/icons/sidebar/repair-object-icon.vue +18 -18
  94. package/src/icons/sidebar/repairs-icon.vue +20 -20
  95. package/src/icons/sidebar/roles-icon.vue +26 -26
  96. package/src/icons/sidebar/status-history-icon.vue +24 -24
  97. package/src/icons/sidebar/tasks-icon.vue +28 -28
  98. package/src/icons/sidebar/tasks_tasks-icon.vue +39 -39
  99. package/src/icons/sidebar/tasks_today-icon.vue +27 -27
  100. package/src/icons/sidebar/teams-icon.vue +32 -32
  101. package/src/icons/sidebar/user-icon.vue +18 -18
  102. package/src/icons/sidebar/users-icon.vue +46 -46
  103. package/src/icons/sidebar/videosources-icon.vue +19 -19
  104. package/src/icons/sidebar/videowall-icon.vue +13 -13
  105. package/src/icons/sidebar/videozones-icon.vue +21 -21
  106. package/src/icons/sidebar/warehouses-icon.vue +43 -43
  107. package/src/icons/sidebar/workshop-icon.vue +100 -100
  108. package/src/icons/sidebar/workzones-icon.vue +22 -22
  109. package/src/icons/task/attention-icon.vue +13 -13
  110. package/src/icons/task/clock-icon.vue +10 -10
  111. package/src/icons/task/delete-icon.vue +10 -10
  112. package/src/icons/task/fire-icon.vue +16 -16
  113. package/src/index.ts +112 -113
  114. package/src/main.ts +28 -28
  115. package/src/quasar-user-options.ts +17 -17
  116. package/src/router/index.ts +10 -10
  117. package/src/shared/styles/general.css +124 -124
  118. package/src/shims-vue.d.ts +5 -5
  119. package/src/styles/variables.sass +12 -12
  120. package/src/utils/confirm.ts +12 -12
  121. package/src/utils/faceApiHelper.ts +137 -137
  122. package/src/utils/helpers.ts +59 -59
  123. package/src/utils/notification.ts +9 -9
  124. package/dist/types/api/services/PhotoService.d.ts +0 -40
  125. package/dist/types/api/types/Api_Video.d.ts +0 -118
  126. package/src/api/types/Api_Video.ts +0 -123
@@ -1,81 +1,81 @@
1
- <template>
2
- <div class="date-picker">
3
- <app-button
4
- class="button"
5
- outline
6
- size="20px"
7
- padding="10px"
8
- border-radius="8px"
9
- border-width="2px"
10
- rounded
11
- :disabled="disabled"
12
- text-color="primary"
13
- icon="event"
14
- >
15
- <q-popup-proxy anchor="top left" self="top left" transition-show="scale-up" transition-hide="scale-down">
16
- <q-date v-model="model" mask="YYYY-MM-DD" minimal :options="disablePastDates" />
17
- </q-popup-proxy>
18
- </app-button>
19
- <div class="date-picker__content">
20
- <p>{{ label }}<span> * </span></p>
21
- <span>{{ model || 'Выберите дату' }}</span>
22
- </div>
23
- </div>
24
- </template>
25
-
26
- <script setup lang="ts">
27
- import { computed } from 'vue'
28
- import AppButton from '@/common/app-button/AppButton.vue'
29
-
30
- interface Props {
31
- label: string
32
- disabled?: boolean
33
- modelValue: string
34
- disableRuleDates?: string
35
- }
36
- const emits = defineEmits(['update:modelValue'])
37
- const props = defineProps<Props>()
38
-
39
- const model = computed({
40
- get() {
41
- return props.modelValue
42
- },
43
- set(value: string) {
44
- emits('update:modelValue', value)
45
- },
46
- })
47
-
48
- function disablePastDates(date) {
49
- const today = new Date()
50
- const [year, month, day] = date.split('/')
51
- const currentDate = new Date(year, month - 1, day)
52
- const todayDate = new Date(today.getFullYear(), today.getMonth(), today.getDate())
53
- if (props?.disableRuleDates) {
54
- const firstDate = new Date(props.disableRuleDates)
55
- return currentDate >= firstDate
56
- }
57
- return currentDate >= todayDate
58
- }
59
- </script>
60
-
61
- <style scoped lang="scss">
62
- .date-picker {
63
- display: flex;
64
- gap: 14px;
65
- &__content {
66
- color: #7d8592;
67
- font-weight: 500;
68
- p {
69
- margin: 0;
70
- font-weight: 700;
71
- span {
72
- color: red;
73
- }
74
- }
75
- span {
76
- }
77
- }
78
- }
79
- .button {
80
- }
81
- </style>
1
+ <template>
2
+ <div class="date-picker">
3
+ <app-button
4
+ class="button"
5
+ outline
6
+ size="20px"
7
+ padding="10px"
8
+ border-radius="8px"
9
+ border-width="2px"
10
+ rounded
11
+ :disabled="disabled"
12
+ text-color="primary"
13
+ icon="event"
14
+ >
15
+ <q-popup-proxy anchor="top left" self="top left" transition-show="scale-up" transition-hide="scale-down">
16
+ <q-date v-model="model" mask="YYYY-MM-DD" minimal :options="disablePastDates" />
17
+ </q-popup-proxy>
18
+ </app-button>
19
+ <div class="date-picker__content">
20
+ <p>{{ label }}<span> * </span></p>
21
+ <span>{{ model || 'Выберите дату' }}</span>
22
+ </div>
23
+ </div>
24
+ </template>
25
+
26
+ <script setup lang="ts">
27
+ import { computed } from 'vue'
28
+ import AppButton from '@/common/app-button/AppButton.vue'
29
+
30
+ interface Props {
31
+ label: string
32
+ disabled?: boolean
33
+ modelValue: string
34
+ disableRuleDates?: string
35
+ }
36
+ const emits = defineEmits(['update:modelValue'])
37
+ const props = defineProps<Props>()
38
+
39
+ const model = computed({
40
+ get() {
41
+ return props.modelValue
42
+ },
43
+ set(value: string) {
44
+ emits('update:modelValue', value)
45
+ },
46
+ })
47
+
48
+ function disablePastDates(date) {
49
+ const today = new Date()
50
+ const [year, month, day] = date.split('/')
51
+ const currentDate = new Date(year, month - 1, day)
52
+ const todayDate = new Date(today.getFullYear(), today.getMonth(), today.getDate())
53
+ if (props?.disableRuleDates) {
54
+ const firstDate = new Date(props.disableRuleDates)
55
+ return currentDate >= firstDate
56
+ }
57
+ return currentDate >= todayDate
58
+ }
59
+ </script>
60
+
61
+ <style scoped lang="scss">
62
+ .date-picker {
63
+ display: flex;
64
+ gap: 14px;
65
+ &__content {
66
+ color: #7d8592;
67
+ font-weight: 500;
68
+ p {
69
+ margin: 0;
70
+ font-weight: 700;
71
+ span {
72
+ color: red;
73
+ }
74
+ }
75
+ span {
76
+ }
77
+ }
78
+ }
79
+ .button {
80
+ }
81
+ </style>
@@ -1,165 +1,165 @@
1
- <template>
2
- <div class="datepicker">
3
- <app-input-new
4
- v-model="model"
5
- readonly
6
- input-class="cursor-pointer"
7
- :label="label"
8
- :required="required"
9
- :rules="rules"
10
- :error="error"
11
- :disable="disabled"
12
- placeholder="Выберите дату"
13
- >
14
- <q-popup-proxy v-if="!disabled" class="datepicker__wrapper" @update:model-value="updateError">
15
- <q-date
16
- v-model="model"
17
- :mask="`DD.MM.YYYY ${timeFormat}`"
18
- :options="disablePastDates"
19
- @update:model-value="error = false"
20
- />
21
- <q-time
22
- v-if="time"
23
- v-model="model"
24
- :mask="`DD.MM.YYYY ${timeFormat}`"
25
- format24h
26
- :hour-options="hourOptions()"
27
- :minute-options="minuteOptions()"
28
- />
29
- </q-popup-proxy>
30
- <template #append>
31
- <q-icon name="event" class="cursor-pointer"></q-icon>
32
- </template>
33
- </app-input-new>
34
- </div>
35
- </template>
36
-
37
- <script setup lang="ts">
38
- import AppInputNew from '@/common/app-input-new/AppInputNew.vue'
39
- import { ref, withDefaults, defineEmits, defineProps, defineModel } from 'vue'
40
-
41
- interface Props {
42
- label: string
43
- modelValue?: string
44
- rules?: ((val?: string | number | null) => boolean | string)[]
45
- disableRuleDates?: string
46
- time?: boolean
47
- noPastDates?: boolean
48
- disabled?: boolean
49
- required?: boolean
50
- timeFormat?: string
51
- }
52
- const props = withDefaults(defineProps<Props>(), {
53
- timeFormat: 'HH:mm',
54
- rules: () => [],
55
- disableRuleDates: undefined,
56
- modelValue: undefined,
57
- })
58
-
59
- defineEmits(['update:modelValue'])
60
-
61
- const model = defineModel<string | null | undefined>()
62
-
63
- const error = ref(false)
64
-
65
- const updateError = (state: boolean) => {
66
- if (!error.value && !model.value && !state) {
67
- error.value = true
68
- }
69
- }
70
-
71
- const disablePastDates = (date: string) => {
72
- if (!props.noPastDates && !props.disableRuleDates) return true
73
-
74
- const [year, month, day] = date.split('/')
75
- const currentDate = new Date(Number(year), Number(month) - 1, Number(day))
76
-
77
- if (props.disableRuleDates) {
78
- const firstDate = new Date(props.disableRuleDates)
79
- return currentDate >= firstDate
80
- }
81
-
82
- const today = new Date()
83
- const todayDate = new Date(today.getFullYear(), today.getMonth(), today.getDate())
84
-
85
- return currentDate >= todayDate
86
- }
87
-
88
- function getSelectedDate() {
89
- if (!model.value) return null
90
-
91
- return model.value.toString().substring(0, 10)
92
- }
93
-
94
- function getSelectedHour() {
95
- if (!model.value) return null
96
-
97
- const timePart = model.value.toString().split(' ')[1]
98
- return timePart ? Number(timePart.split(':')[0]) : null
99
- }
100
-
101
- function hourOptions(): number[] {
102
- const today = new Date()
103
- const selectedDate = getSelectedDate()
104
- const todayStr = today.toISOString().slice(0, 10)
105
-
106
- if (selectedDate !== todayStr) {
107
- return Array.from({ length: 24 }, (_, i) => i)
108
- }
109
-
110
- const currentHour = today.getHours()
111
- return Array.from({ length: 24 - currentHour }, (_, i) => currentHour + i)
112
- }
113
-
114
- function minuteOptions(): number[] {
115
- const today = new Date()
116
- const selectedDate = getSelectedDate()
117
- const todayStr = today.toISOString().slice(0, 10)
118
- const selectedHour = getSelectedHour()
119
-
120
- if (selectedDate !== todayStr) {
121
- return Array.from({ length: 60 }, (_, i) => i)
122
- }
123
-
124
- if (selectedHour === today.getHours()) {
125
- const currentMinutes = today.getMinutes()
126
- return Array.from({ length: 60 - currentMinutes }, (_, i) => currentMinutes + i)
127
- }
128
-
129
- return Array.from({ length: 60 }, (_, i) => i)
130
- }
131
- </script>
132
-
133
- <style scoped lang="scss">
134
- .datepicker {
135
- :deep(input),
136
- :deep(.q-field--readonly.q-field--float .q-field__native) {
137
- cursor: pointer;
138
- }
139
-
140
- &__label {
141
- font-size: 14px;
142
- font-weight: 700;
143
- color: #7d8592;
144
-
145
- .required {
146
- color: #f65160;
147
- font-weight: bold;
148
- }
149
- }
150
- }
151
- </style>
152
-
153
- <style lang="scss">
154
- .datepicker {
155
- &__wrapper {
156
- display: flex;
157
-
158
- .q-time,
159
- .q-date {
160
- box-shadow: none;
161
- border-radius: 0;
162
- }
163
- }
164
- }
165
- </style>
1
+ <template>
2
+ <div class="datepicker">
3
+ <app-input-new
4
+ v-model="model"
5
+ readonly
6
+ input-class="cursor-pointer"
7
+ :label="label"
8
+ :required="required"
9
+ :rules="rules"
10
+ :error="error"
11
+ :disable="disabled"
12
+ placeholder="Выберите дату"
13
+ >
14
+ <q-popup-proxy v-if="!disabled" class="datepicker__wrapper" @update:model-value="updateError">
15
+ <q-date
16
+ v-model="model"
17
+ :mask="`DD.MM.YYYY ${timeFormat}`"
18
+ :options="disablePastDates"
19
+ @update:model-value="error = false"
20
+ />
21
+ <q-time
22
+ v-if="time"
23
+ v-model="model"
24
+ :mask="`DD.MM.YYYY ${timeFormat}`"
25
+ format24h
26
+ :hour-options="hourOptions()"
27
+ :minute-options="minuteOptions()"
28
+ />
29
+ </q-popup-proxy>
30
+ <template #append>
31
+ <q-icon name="event" class="cursor-pointer"></q-icon>
32
+ </template>
33
+ </app-input-new>
34
+ </div>
35
+ </template>
36
+
37
+ <script setup lang="ts">
38
+ import AppInputNew from '@/common/app-input-new/AppInputNew.vue'
39
+ import { ref, withDefaults, defineEmits, defineProps, defineModel } from 'vue'
40
+
41
+ interface Props {
42
+ label: string
43
+ modelValue?: string
44
+ rules?: ((val?: string | number | null) => boolean | string)[]
45
+ disableRuleDates?: string
46
+ time?: boolean
47
+ noPastDates?: boolean
48
+ disabled?: boolean
49
+ required?: boolean
50
+ timeFormat?: string
51
+ }
52
+ const props = withDefaults(defineProps<Props>(), {
53
+ timeFormat: 'HH:mm',
54
+ rules: () => [],
55
+ disableRuleDates: undefined,
56
+ modelValue: undefined,
57
+ })
58
+
59
+ defineEmits(['update:modelValue'])
60
+
61
+ const model = defineModel<string | null | undefined>()
62
+
63
+ const error = ref(false)
64
+
65
+ const updateError = (state: boolean) => {
66
+ if (!error.value && !model.value && !state) {
67
+ error.value = true
68
+ }
69
+ }
70
+
71
+ const disablePastDates = (date: string) => {
72
+ if (!props.noPastDates && !props.disableRuleDates) return true
73
+
74
+ const [year, month, day] = date.split('/')
75
+ const currentDate = new Date(Number(year), Number(month) - 1, Number(day))
76
+
77
+ if (props.disableRuleDates) {
78
+ const firstDate = new Date(props.disableRuleDates)
79
+ return currentDate >= firstDate
80
+ }
81
+
82
+ const today = new Date()
83
+ const todayDate = new Date(today.getFullYear(), today.getMonth(), today.getDate())
84
+
85
+ return currentDate >= todayDate
86
+ }
87
+
88
+ function getSelectedDate() {
89
+ if (!model.value) return null
90
+
91
+ return model.value.toString().substring(0, 10)
92
+ }
93
+
94
+ function getSelectedHour() {
95
+ if (!model.value) return null
96
+
97
+ const timePart = model.value.toString().split(' ')[1]
98
+ return timePart ? Number(timePart.split(':')[0]) : null
99
+ }
100
+
101
+ function hourOptions(): number[] {
102
+ const today = new Date()
103
+ const selectedDate = getSelectedDate()
104
+ const todayStr = today.toISOString().slice(0, 10)
105
+
106
+ if (selectedDate !== todayStr) {
107
+ return Array.from({ length: 24 }, (_, i) => i)
108
+ }
109
+
110
+ const currentHour = today.getHours()
111
+ return Array.from({ length: 24 - currentHour }, (_, i) => currentHour + i)
112
+ }
113
+
114
+ function minuteOptions(): number[] {
115
+ const today = new Date()
116
+ const selectedDate = getSelectedDate()
117
+ const todayStr = today.toISOString().slice(0, 10)
118
+ const selectedHour = getSelectedHour()
119
+
120
+ if (selectedDate !== todayStr) {
121
+ return Array.from({ length: 60 }, (_, i) => i)
122
+ }
123
+
124
+ if (selectedHour === today.getHours()) {
125
+ const currentMinutes = today.getMinutes()
126
+ return Array.from({ length: 60 - currentMinutes }, (_, i) => currentMinutes + i)
127
+ }
128
+
129
+ return Array.from({ length: 60 }, (_, i) => i)
130
+ }
131
+ </script>
132
+
133
+ <style scoped lang="scss">
134
+ .datepicker {
135
+ :deep(input),
136
+ :deep(.q-field--readonly.q-field--float .q-field__native) {
137
+ cursor: pointer;
138
+ }
139
+
140
+ &__label {
141
+ font-size: 14px;
142
+ font-weight: 700;
143
+ color: #7d8592;
144
+
145
+ .required {
146
+ color: #f65160;
147
+ font-weight: bold;
148
+ }
149
+ }
150
+ }
151
+ </style>
152
+
153
+ <style lang="scss">
154
+ .datepicker {
155
+ &__wrapper {
156
+ display: flex;
157
+
158
+ .q-time,
159
+ .q-date {
160
+ box-shadow: none;
161
+ border-radius: 0;
162
+ }
163
+ }
164
+ }
165
+ </style>