shared-ritm 1.3.98 → 1.3.100

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 (100) hide show
  1. package/README.md +103 -103
  2. package/dist/index.css +1 -1
  3. package/dist/shared-ritm.es.js +30 -21
  4. package/dist/shared-ritm.umd.js +3 -3
  5. package/dist/types/api/services/GanttService.d.ts +6 -0
  6. package/dist/types/api/services/InstrumentsService.d.ts +2 -1
  7. package/dist/types/api/types/Api_Instruments.d.ts +20 -0
  8. package/package.json +1 -1
  9. package/src/api/services/BrigadesService.ts +32 -32
  10. package/src/api/services/CommentsService.ts +24 -24
  11. package/src/api/services/FileService.ts +17 -17
  12. package/src/api/services/GanttService.ts +58 -47
  13. package/src/api/services/InstrumentsService.ts +5 -1
  14. package/src/api/services/ModulesService.ts +27 -27
  15. package/src/api/services/ProjectsService.ts +83 -83
  16. package/src/api/services/ScheduleService.ts +69 -69
  17. package/src/api/services/SearchService.ts +22 -22
  18. package/src/api/services/TasksService.ts +157 -157
  19. package/src/api/settings/ApiService.ts +184 -184
  20. package/src/api/types/Api_Brigades.ts +36 -36
  21. package/src/api/types/Api_Comment.ts +40 -40
  22. package/src/api/types/Api_Files.ts +7 -7
  23. package/src/api/types/Api_Instruments.ts +22 -1
  24. package/src/api/types/Api_Modules.ts +21 -21
  25. package/src/api/types/Api_Projects.ts +62 -62
  26. package/src/api/types/Api_Schedule.ts +64 -64
  27. package/src/api/types/Api_Service.ts +9 -9
  28. package/src/common/app-button/AppButton.vue +173 -173
  29. package/src/common/app-date-picker/AppDatePicker.vue +81 -81
  30. package/src/common/app-datepicker/AppDatepicker.vue +218 -218
  31. package/src/common/app-dropdown/AppDropdown.vue +37 -37
  32. package/src/common/app-file/AppFile.vue +80 -80
  33. package/src/common/app-input/AppInput.vue +150 -150
  34. package/src/common/app-input-search/AppInputSearch.vue +174 -174
  35. package/src/common/app-layout/AppLayout.vue +84 -84
  36. package/src/common/app-layout/components/AppLayoutPage.vue +16 -16
  37. package/src/common/app-loader/index.vue +43 -43
  38. package/src/common/app-page-layout/AppPageLayout.vue +122 -122
  39. package/src/common/app-sheet/AppSheet.vue +120 -120
  40. package/src/common/app-sheet-new/AppSheetNew.vue +244 -244
  41. package/src/common/app-sidebar/components/SidebarMenu.vue +37 -37
  42. package/src/common/app-sidebar/components/SidebarMenuItem.vue +149 -149
  43. package/src/common/app-table/AppTableLayout.vue +137 -137
  44. package/src/common/app-table/components/TablePagination.vue +152 -152
  45. package/src/common/app-table/components/TableSearch.vue +76 -76
  46. package/src/common/app-table/controllers/useBaseTable.ts +45 -45
  47. package/src/global.d.ts +1 -1
  48. package/src/icons/components/arrow-down-icon.vue +25 -25
  49. package/src/icons/components/arrow-frame-icon.vue +19 -19
  50. package/src/icons/components/arrow-square.vue +22 -22
  51. package/src/icons/components/table-filter-icon.vue +30 -30
  52. package/src/icons/dialogs/RemoveIcon.vue +12 -12
  53. package/src/icons/dialogs/SafetyIcon.vue +12 -12
  54. package/src/icons/header/NotificationIcon.vue +18 -18
  55. package/src/icons/header/PersonIcon.vue +11 -11
  56. package/src/icons/header/SettingIcon.vue +14 -14
  57. package/src/icons/header/flashIcon.vue +24 -24
  58. package/src/icons/header/searchStatusIcon.vue +24 -24
  59. package/src/icons/header/smallCapsIcon.vue +34 -34
  60. package/src/icons/sidebar/assign-module-icon.vue +36 -36
  61. package/src/icons/sidebar/instrument-history-icon.vue +32 -32
  62. package/src/icons/sidebar/instrument-order-icon.vue +38 -38
  63. package/src/icons/sidebar/instrument-work-zone-icon.vue +18 -18
  64. package/src/icons/sidebar/instruments-icon.vue +45 -45
  65. package/src/icons/sidebar/logo-icon.vue +15 -15
  66. package/src/icons/sidebar/logout-icon.vue +13 -13
  67. package/src/icons/sidebar/modules-icon.vue +16 -16
  68. package/src/icons/sidebar/notifications-icon.vue +24 -24
  69. package/src/icons/sidebar/order-icon.vue +44 -44
  70. package/src/icons/sidebar/pass-icon.vue +38 -38
  71. package/src/icons/sidebar/positions-icon.vue +42 -42
  72. package/src/icons/sidebar/preorder-icon.vue +19 -19
  73. package/src/icons/sidebar/projects-icon.vue +31 -31
  74. package/src/icons/sidebar/repair-object-icon.vue +18 -18
  75. package/src/icons/sidebar/repairs-icon.vue +20 -20
  76. package/src/icons/sidebar/roles-icon.vue +26 -26
  77. package/src/icons/sidebar/status-history-icon.vue +24 -24
  78. package/src/icons/sidebar/tasks-icon.vue +28 -28
  79. package/src/icons/sidebar/tasks_tasks-icon.vue +39 -39
  80. package/src/icons/sidebar/tasks_today-icon.vue +27 -27
  81. package/src/icons/sidebar/teams-icon.vue +32 -32
  82. package/src/icons/sidebar/user-icon.vue +18 -18
  83. package/src/icons/sidebar/users-icon.vue +46 -46
  84. package/src/icons/sidebar/videosources-icon.vue +19 -19
  85. package/src/icons/sidebar/videowall-icon.vue +13 -13
  86. package/src/icons/sidebar/videozones-icon.vue +21 -21
  87. package/src/icons/sidebar/warehouses-icon.vue +43 -43
  88. package/src/icons/sidebar/workshop-icon.vue +100 -100
  89. package/src/icons/sidebar/workzones-icon.vue +22 -22
  90. package/src/icons/task/attention-icon.vue +13 -13
  91. package/src/icons/task/clock-icon.vue +10 -10
  92. package/src/icons/task/delete-icon.vue +10 -10
  93. package/src/icons/task/fire-icon.vue +16 -16
  94. package/src/main.ts +28 -28
  95. package/src/quasar-user-options.ts +17 -17
  96. package/src/router/index.ts +10 -10
  97. package/src/shims-vue.d.ts +5 -5
  98. package/src/utils/confirm.ts +12 -12
  99. package/src/utils/faceApiHelper.ts +132 -132
  100. package/src/utils/notification.ts +9 -9
@@ -1,122 +1,122 @@
1
- <template lang="pug">
2
- q-page#content(:class="$style['page-container']")
3
- q-toolbar(:class="$style['toolbar']")
4
- q-toolbar-title(:class="$style.title") {{ title }}
5
- div(:class="$style['action-buttons']")
6
- app-button(
7
- rounded
8
- :class="$style['button-new']"
9
- :label="'Новый ремонт'"
10
- @click="emits('create-repair')"
11
- color="#fff"
12
- icon="add"
13
- )
14
- app-button(rounded :class="$style['button-video-wall']" @click="emits('routing-to-video-wall')")
15
- video-wall-icon
16
- span Видеостена
17
- app-button(rounded :class="$style.button" @click="openFullScreenWidgets")
18
- q-tooltip на весь экран
19
- q-icon(name="open_in_full")
20
- //app-button(rounded :class="$style.button")
21
- // graph-icon
22
- //app-button(rounded :class="$style.button")
23
- // time-line-icon
24
- slot
25
- </template>
26
-
27
- <script setup lang="ts">
28
- import { defineProps, defineEmits, defineAsyncComponent } from 'vue'
29
- import AppButton from '@/common/app-button/AppButton.vue'
30
- import { useQuasar } from 'quasar'
31
- import VideoWallIcon from '@/icons/page-header/videoWallIcon.vue'
32
-
33
- const $q = useQuasar()
34
-
35
- const FullScreenDialog = defineAsyncComponent(() => import('@/components/dialogs/full-screen-widgets/index.vue'))
36
- // import GraphIcon from '@/icons/page-header/graphIcon.vue'
37
- // import TimeLineIcon from '@/icons/page-header/timeLineIcon.vue'
38
- interface Props {
39
- title: string
40
- }
41
- const props = defineProps<Props>()
42
- const emits = defineEmits(['create-repair', ''])
43
-
44
- const openFullScreenWidgets = () => {
45
- $q.dialog({
46
- component: FullScreenDialog,
47
- })
48
- }
49
- </script>
50
- <style module lang="scss">
51
- .toolbar {
52
- padding: 0;
53
- margin-top: 16px;
54
- }
55
- .page-container {
56
- padding: 0 4px 0 0;
57
- max-width: 1300px;
58
- margin: 0 auto;
59
- max-height: 600px;
60
- overflow: auto;
61
- &::-webkit-scrollbar-thumb {
62
- height: 88px;
63
- background-color: #d3dbeb;
64
- border-radius: 6px;
65
- }
66
- }
67
- .button {
68
- padding: 12px;
69
- background: white;
70
- }
71
-
72
- .button-new {
73
- padding: 12px 18px;
74
- background: #3f8cff;
75
- }
76
- .button-video-wall {
77
- padding: 10px 18px;
78
- background: white;
79
- span {
80
- color: #3f8cff;
81
- margin-left: 8px;
82
- font-size: 16px;
83
- font-weight: 700;
84
- }
85
- }
86
- .title {
87
- color: #fff;
88
- font-family: Montserrat, sans-serif;
89
- font-size: 32px;
90
- font-style: normal;
91
- font-weight: 700;
92
- line-height: normal;
93
- }
94
-
95
- .action-buttons {
96
- position: relative;
97
- display: flex;
98
- align-items: center;
99
- column-gap: 16px;
100
- }
101
-
102
- @media (max-width: 1440px) {
103
- .page-container {
104
- max-width: 874px;
105
- }
106
- .action-buttons {
107
- column-gap: 8px;
108
- }
109
- .title {
110
- font-size: 24px;
111
- line-height: normal;
112
- }
113
- .button {
114
- padding: 10px;
115
- background: white;
116
- }
117
- .button-new {
118
- padding: 10px 12px;
119
- background: #3f8cff;
120
- }
121
- }
122
- </style>
1
+ <template lang="pug">
2
+ q-page#content(:class="$style['page-container']")
3
+ q-toolbar(:class="$style['toolbar']")
4
+ q-toolbar-title(:class="$style.title") {{ title }}
5
+ div(:class="$style['action-buttons']")
6
+ app-button(
7
+ rounded
8
+ :class="$style['button-new']"
9
+ :label="'Новый ремонт'"
10
+ @click="emits('create-repair')"
11
+ color="#fff"
12
+ icon="add"
13
+ )
14
+ app-button(rounded :class="$style['button-video-wall']" @click="emits('routing-to-video-wall')")
15
+ video-wall-icon
16
+ span Видеостена
17
+ app-button(rounded :class="$style.button" @click="openFullScreenWidgets")
18
+ q-tooltip на весь экран
19
+ q-icon(name="open_in_full")
20
+ //app-button(rounded :class="$style.button")
21
+ // graph-icon
22
+ //app-button(rounded :class="$style.button")
23
+ // time-line-icon
24
+ slot
25
+ </template>
26
+
27
+ <script setup lang="ts">
28
+ import { defineProps, defineEmits, defineAsyncComponent } from 'vue'
29
+ import AppButton from '@/common/app-button/AppButton.vue'
30
+ import { useQuasar } from 'quasar'
31
+ import VideoWallIcon from '@/icons/page-header/videoWallIcon.vue'
32
+
33
+ const $q = useQuasar()
34
+
35
+ const FullScreenDialog = defineAsyncComponent(() => import('@/components/dialogs/full-screen-widgets/index.vue'))
36
+ // import GraphIcon from '@/icons/page-header/graphIcon.vue'
37
+ // import TimeLineIcon from '@/icons/page-header/timeLineIcon.vue'
38
+ interface Props {
39
+ title: string
40
+ }
41
+ const props = defineProps<Props>()
42
+ const emits = defineEmits(['create-repair', ''])
43
+
44
+ const openFullScreenWidgets = () => {
45
+ $q.dialog({
46
+ component: FullScreenDialog,
47
+ })
48
+ }
49
+ </script>
50
+ <style module lang="scss">
51
+ .toolbar {
52
+ padding: 0;
53
+ margin-top: 16px;
54
+ }
55
+ .page-container {
56
+ padding: 0 4px 0 0;
57
+ max-width: 1300px;
58
+ margin: 0 auto;
59
+ max-height: 600px;
60
+ overflow: auto;
61
+ &::-webkit-scrollbar-thumb {
62
+ height: 88px;
63
+ background-color: #d3dbeb;
64
+ border-radius: 6px;
65
+ }
66
+ }
67
+ .button {
68
+ padding: 12px;
69
+ background: white;
70
+ }
71
+
72
+ .button-new {
73
+ padding: 12px 18px;
74
+ background: #3f8cff;
75
+ }
76
+ .button-video-wall {
77
+ padding: 10px 18px;
78
+ background: white;
79
+ span {
80
+ color: #3f8cff;
81
+ margin-left: 8px;
82
+ font-size: 16px;
83
+ font-weight: 700;
84
+ }
85
+ }
86
+ .title {
87
+ color: #fff;
88
+ font-family: Montserrat, sans-serif;
89
+ font-size: 32px;
90
+ font-style: normal;
91
+ font-weight: 700;
92
+ line-height: normal;
93
+ }
94
+
95
+ .action-buttons {
96
+ position: relative;
97
+ display: flex;
98
+ align-items: center;
99
+ column-gap: 16px;
100
+ }
101
+
102
+ @media (max-width: 1440px) {
103
+ .page-container {
104
+ max-width: 874px;
105
+ }
106
+ .action-buttons {
107
+ column-gap: 8px;
108
+ }
109
+ .title {
110
+ font-size: 24px;
111
+ line-height: normal;
112
+ }
113
+ .button {
114
+ padding: 10px;
115
+ background: white;
116
+ }
117
+ .button-new {
118
+ padding: 10px 12px;
119
+ background: #3f8cff;
120
+ }
121
+ }
122
+ </style>
@@ -1,120 +1,120 @@
1
- <template>
2
- <q-dialog
3
- ref="DialogRef"
4
- :model-value="true"
5
- :position="'right'"
6
- :class="$style['sheet-dialog']"
7
- no-shake
8
- persistent
9
- full-height
10
- full-width
11
- >
12
- <template v-if="type === 'details'">
13
- <q-card>
14
- <div class="wrapper">
15
- <div class="sheet-header">
16
- <h2>{{ title }}</h2>
17
- <div class="close-button">
18
- <q-btn v-close-popup dense flat icon="close" />
19
- </div>
20
- </div>
21
- <div v-if="loading" class="loader">
22
- <q-spinner-audio v-if="loading" class="loader-spinner" size="md" :thickness="3" color="primary" />
23
- </div>
24
- <slot v-else />
25
- </div>
26
- </q-card>
27
- </template>
28
- <template v-if="type === 'custom'">
29
- <div v-if="loading" class="custom-wrapper">
30
- <div class="loader">
31
- <q-spinner-audio v-if="loading" class="loader-spinner" size="md" :thickness="3" color="primary" />
32
- </div>
33
- </div>
34
- <slot v-else />
35
- </template>
36
- </q-dialog>
37
- </template>
38
-
39
- <script setup lang="ts">
40
- import { computed, defineEmits, defineProps, withDefaults } from 'vue'
41
-
42
- interface DialogProps {
43
- dialogRef: any
44
- loading?: boolean
45
- title?: string
46
- width?: string
47
- type?: 'details' | 'custom'
48
- tabs?: any[]
49
- currentTabName?: string
50
- }
51
-
52
- const props = withDefaults(defineProps<DialogProps>(), {
53
- title: '',
54
- width: '976px',
55
- type: 'details',
56
- loading: false,
57
- tabs: () => [],
58
- currentTabName: '',
59
- })
60
-
61
- const emit = defineEmits(['update:dialogRef', 'update:currentTabName'])
62
-
63
- const DialogRef = computed({
64
- get() {
65
- return props.dialogRef
66
- },
67
- set(value) {
68
- emit('update:dialogRef', value)
69
- },
70
- })
71
- </script>
72
-
73
- <style lang="scss" scoped>
74
- .custom-wrapper {
75
- width: v-bind(width);
76
- background-color: white;
77
- }
78
-
79
- .wrapper {
80
- display: flex;
81
- flex-direction: column;
82
- gap: 1rem;
83
- width: v-bind(width);
84
- height: 100vh;
85
- min-height: 100vh;
86
- position: relative;
87
- padding: 2rem 2rem 4rem 2rem;
88
- background-color: #7991ad32;
89
- font-family: 'NunitoSansFont', sans-serif;
90
- }
91
-
92
- .sheet-header {
93
- display: flex;
94
- justify-content: space-between;
95
- align-items: center;
96
-
97
- h2 {
98
- font-size: 36px;
99
- }
100
- }
101
-
102
- .loader {
103
- min-width: 976px;
104
-
105
- &-spinner {
106
- position: absolute;
107
- top: 50%;
108
- left: 50%;
109
- z-index: 4;
110
- }
111
- }
112
- </style>
113
-
114
- <style lang="scss" module>
115
- .sheet-dialog {
116
- :global(.q-dialog__inner--minimized) {
117
- padding: 0;
118
- }
119
- }
120
- </style>
1
+ <template>
2
+ <q-dialog
3
+ ref="DialogRef"
4
+ :model-value="true"
5
+ :position="'right'"
6
+ :class="$style['sheet-dialog']"
7
+ no-shake
8
+ persistent
9
+ full-height
10
+ full-width
11
+ >
12
+ <template v-if="type === 'details'">
13
+ <q-card>
14
+ <div class="wrapper">
15
+ <div class="sheet-header">
16
+ <h2>{{ title }}</h2>
17
+ <div class="close-button">
18
+ <q-btn v-close-popup dense flat icon="close" />
19
+ </div>
20
+ </div>
21
+ <div v-if="loading" class="loader">
22
+ <q-spinner-audio v-if="loading" class="loader-spinner" size="md" :thickness="3" color="primary" />
23
+ </div>
24
+ <slot v-else />
25
+ </div>
26
+ </q-card>
27
+ </template>
28
+ <template v-if="type === 'custom'">
29
+ <div v-if="loading" class="custom-wrapper">
30
+ <div class="loader">
31
+ <q-spinner-audio v-if="loading" class="loader-spinner" size="md" :thickness="3" color="primary" />
32
+ </div>
33
+ </div>
34
+ <slot v-else />
35
+ </template>
36
+ </q-dialog>
37
+ </template>
38
+
39
+ <script setup lang="ts">
40
+ import { computed, defineEmits, defineProps, withDefaults } from 'vue'
41
+
42
+ interface DialogProps {
43
+ dialogRef: any
44
+ loading?: boolean
45
+ title?: string
46
+ width?: string
47
+ type?: 'details' | 'custom'
48
+ tabs?: any[]
49
+ currentTabName?: string
50
+ }
51
+
52
+ const props = withDefaults(defineProps<DialogProps>(), {
53
+ title: '',
54
+ width: '976px',
55
+ type: 'details',
56
+ loading: false,
57
+ tabs: () => [],
58
+ currentTabName: '',
59
+ })
60
+
61
+ const emit = defineEmits(['update:dialogRef', 'update:currentTabName'])
62
+
63
+ const DialogRef = computed({
64
+ get() {
65
+ return props.dialogRef
66
+ },
67
+ set(value) {
68
+ emit('update:dialogRef', value)
69
+ },
70
+ })
71
+ </script>
72
+
73
+ <style lang="scss" scoped>
74
+ .custom-wrapper {
75
+ width: v-bind(width);
76
+ background-color: white;
77
+ }
78
+
79
+ .wrapper {
80
+ display: flex;
81
+ flex-direction: column;
82
+ gap: 1rem;
83
+ width: v-bind(width);
84
+ height: 100vh;
85
+ min-height: 100vh;
86
+ position: relative;
87
+ padding: 2rem 2rem 4rem 2rem;
88
+ background-color: #7991ad32;
89
+ font-family: 'NunitoSansFont', sans-serif;
90
+ }
91
+
92
+ .sheet-header {
93
+ display: flex;
94
+ justify-content: space-between;
95
+ align-items: center;
96
+
97
+ h2 {
98
+ font-size: 36px;
99
+ }
100
+ }
101
+
102
+ .loader {
103
+ min-width: 976px;
104
+
105
+ &-spinner {
106
+ position: absolute;
107
+ top: 50%;
108
+ left: 50%;
109
+ z-index: 4;
110
+ }
111
+ }
112
+ </style>
113
+
114
+ <style lang="scss" module>
115
+ .sheet-dialog {
116
+ :global(.q-dialog__inner--minimized) {
117
+ padding: 0;
118
+ }
119
+ }
120
+ </style>