@nixweb/nixloc-ui 0.0.200 → 0.0.202

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 (31) hide show
  1. package/package.json +1 -1
  2. package/src/component/forms/Button.vue +1 -1
  3. package/src/component/forms/ButtonFilter.vue +5 -10
  4. package/src/component/forms/CheckboxGroup.vue +4 -8
  5. package/src/component/forms/CheckboxSimple.vue +1 -1
  6. package/src/component/forms/Dropdown.vue +19 -36
  7. package/src/component/forms/EditorHtml.vue +4 -10
  8. package/src/component/forms/InputTag.vue +1 -1
  9. package/src/component/forms/SelectStatic.vue +13 -11
  10. package/src/component/layout/Alert.vue +17 -21
  11. package/src/component/layout/HideShow.vue +7 -4
  12. package/src/component/layout/IconMolded.vue +8 -16
  13. package/src/component/layout/Menu.vue +9 -7
  14. package/src/component/layout/Tab.vue +2 -2
  15. package/src/component/layout/Tag.vue +1 -1
  16. package/src/component/rental/DisplayCalculatePeriod.vue +1 -1
  17. package/src/component/rental/DisplayPeriodRent.vue +1 -2
  18. package/src/component/rental/DisplayTotalization.vue +0 -1
  19. package/src/component/shared/HorizontalFilter.vue +18 -1
  20. package/src/component/shared/Pagination.vue +6 -11
  21. package/src/component/shared/Report.vue +1 -1
  22. package/src/component/shared/Search.vue +4 -14
  23. package/src/component/shared/SelectOption.vue +10 -11
  24. package/src/component/shared/TableDraggable.vue +8 -19
  25. package/src/component/shared/TableItem.vue +1 -1
  26. package/src/component/shared/file-manager/FileManager.vue +266 -0
  27. package/src/component/shared/query-builder/DynamicComponent.vue +17 -51
  28. package/src/component/shared/query-builder/SelectRule.vue +3 -3
  29. package/src/component/template/ListViewWithDataHandler.vue +3 -2
  30. package/src/component/template/ViewTemplateReportList.vue +5 -4
  31. package/src/store/modules/generic.js +9 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nixweb/nixloc-ui",
3
- "version": "0.0.200",
3
+ "version": "0.0.202",
4
4
  "description": "Componentes UI",
5
5
  "author": "Fábio Ávila <fabio@nixweb.com.br>",
6
6
  "private": false,
@@ -71,7 +71,7 @@ export default {
71
71
  cursor: pointer;
72
72
  border: none;
73
73
  min-width: 33px;
74
- border-radius: 40px !important;
74
+ border-radius: 30px !important;
75
75
  font-size: 13px !important;
76
76
  font-weight: 400;
77
77
  letter-spacing: 1px !important;
@@ -1,13 +1,8 @@
1
1
  <template>
2
2
  <div>
3
3
  <div class="btn-container side-by-side text-center">
4
- <div
5
- v-for="option in options"
6
- class="btn-item side-by-side"
7
- :class="{ selected: option.value == selected }"
8
- @click="execute(option)"
9
- :key="option.title"
10
- >
4
+ <div v-for="option in options" class="btn-item-button-filter side-by-side"
5
+ :class="{ 'selected-button-filter': option.value == selected }" @click="execute(option)" :key="option.title">
11
6
  <i :class="option.classIcon"></i>
12
7
  <span class="btn-title">{{ option.title }}</span>
13
8
  </div>
@@ -61,7 +56,7 @@ export default {
61
56
  margin-left: 10px;
62
57
  }
63
58
 
64
- .btn-item {
59
+ .btn-item-button-filter {
65
60
  margin-top: 5px;
66
61
  margin-left: 10px;
67
62
  margin-right: 10px;
@@ -70,9 +65,9 @@ export default {
70
65
  cursor: pointer;
71
66
  }
72
67
 
73
- .selected {
68
+ .selected-button-filter {
74
69
  background-color: #4BB4E2;
75
- color:white;
70
+ color: white;
76
71
  padding-left: 10px;
77
72
  padding-right: 10px;
78
73
  border-radius: 15px;
@@ -1,13 +1,9 @@
1
1
  <template>
2
2
  <div>
3
- <b-form-group :label="title">
4
- <b-form-checkbox-group
5
- v-model="selected"
6
- :options="options"
7
- :stacked="stacked"
8
- disabled-field="disabled"
9
- @click.native="execute"
10
- ></b-form-checkbox-group>
3
+ <span class="title">{{ title }}</span>
4
+ <b-form-group>
5
+ <b-form-checkbox-group v-model="selected" :options="options" :stacked="stacked" disabled-field="disabled"
6
+ @click.native="execute"></b-form-checkbox-group>
11
7
  </b-form-group>
12
8
  </div>
13
9
  </template>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div>
3
3
  <b-form-checkbox v-model="valueLocal" :value="true" :unchecked-value="false">
4
- {{ title }}
4
+ <span class="title">{{ title }}</span>
5
5
  <Tip :field="field" :formName="formName" />
6
6
  </b-form-checkbox>
7
7
  </div>
@@ -1,53 +1,36 @@
1
1
  <template>
2
2
  <div class="side-by-side main-dropdown">
3
3
  <div class="dropdown">
4
- <button
5
- class="button dropbtn"
6
- :class="{
7
- small: size === 'small',
8
- medium: size === 'medium',
9
- large: size === 'large',
10
- primary: type === 'primary',
11
- success: type === 'success',
12
- warning: type === 'warning',
13
- info: type === 'info',
14
- edit: type === 'edit',
15
- danger: type === 'danger',
16
- disabled: disabled,
17
- }"
18
- :disabled="disabled"
19
- @click="toggle()"
20
- >
4
+ <button class="button dropbtn" :class="{
5
+ small: size === 'small',
6
+ medium: size === 'medium',
7
+ large: size === 'large',
8
+ primary: type === 'primary',
9
+ success: type === 'success',
10
+ warning: type === 'warning',
11
+ info: type === 'info',
12
+ edit: type === 'edit',
13
+ danger: type === 'danger',
14
+ disabled: disabled,
15
+ }" :disabled="disabled" @click="toggle()">
21
16
  {{ title }}
22
17
  <span class="icon-dropdown"><i :class="classIcon"></i></span>
23
18
  </button>
24
- <div
25
- v-show="show"
26
- class="text-left dropdown-content"
27
- :style="'right:' + right"
28
- @mouseleave="show = false"
29
- >
19
+ <div v-show="show" class="text-left dropdown-content" :style="'right:' + right" @mouseleave="show = false">
30
20
  <Molded :borderRadius="15">
31
21
  <div v-for="item in items" :key="item.eventName">
32
- <div
33
- v-if="isVisible(item.conditionVisibility)"
34
- :style="item.style"
35
- class="item"
36
- @click="execute(item.eventName)"
37
- >
22
+ <div v-if="isVisible(item.conditionVisibility)" :style="item.style" class="item-dropdown"
23
+ @click="execute(item.eventName)">
38
24
  <b-row>
39
25
  <b-col sm="2">
40
- <i :class="item.classIcon"></i>
26
+ <i class="icon-dropdown" :class="item.classIcon"></i>
41
27
  </b-col>
42
28
  <b-col sm="10">
43
29
  <span class="title"> {{ item.title }}</span>
44
30
  </b-col>
45
31
  </b-row>
46
32
  </div>
47
- <hr
48
- v-if="item.hr && isVisible(item.conditionVisibility)"
49
- class="hr-dropdown"
50
- />
33
+ <hr v-if="item.hr && isVisible(item.conditionVisibility)" class="hr-dropdown" />
51
34
  </div>
52
35
  </Molded>
53
36
  </div>
@@ -114,7 +97,7 @@ export default {
114
97
  margin: 0px !important;
115
98
  }
116
99
 
117
- .item {
100
+ .item-dropdown {
118
101
  cursor: pointer;
119
102
  padding-bottom: 5px;
120
103
  }
@@ -123,7 +106,7 @@ export default {
123
106
  margin-left: 5px;
124
107
  }
125
108
 
126
- .item:hover {
109
+ .item-dropdown:hover {
127
110
  background-color: #fafafc;
128
111
  }
129
112
 
@@ -6,16 +6,9 @@
6
6
  <Tip :field="field" :formName="formName" />
7
7
  </label>
8
8
  <div class="inner-addon right-addon">
9
- <i
10
- v-if="notifications.length > 0 && formDirty"
11
- class="required glyphicon fas fa-exclamation-triangle"
12
- ></i>
13
- <vue-editor
14
- v-model.trim="value"
15
- :editorToolbar="customToolbar"
16
- :disabled="disabled"
17
- :class="{ disabled: disabled }"
18
- ></vue-editor>
9
+ <i v-if="notifications.length > 0 && formDirty" class="required glyphicon fas fa-exclamation-triangle"></i>
10
+ <vue-editor v-model.trim="value" :editorToolbar="customToolbar" :disabled="disabled"
11
+ :class="{ disabled: disabled }"></vue-editor>
19
12
  </div>
20
13
 
21
14
  <div v-if="formDirty">
@@ -127,6 +120,7 @@ export default {
127
120
  color: #94aa2a;
128
121
  font-size: 14px;
129
122
  }
123
+
130
124
  .invalid {
131
125
  color: #f0134d;
132
126
  font-size: 14px;
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div>
3
- <div>{{ title }}
3
+ <div><span class="title">{{ title }}</span>
4
4
  <span class="required" v-if="required">*</span>
5
5
  </div>
6
6
  <div class="email-input-container">
@@ -4,15 +4,17 @@
4
4
  <span class="title">{{ title }} </span>
5
5
  <span class="required" v-if="required">*</span>
6
6
  </label>
7
- <div class="select" :class="{ border: showBorder }">
8
- <multiselect @open="onOpen" @select="onSelected" @search-change="onSearch" :options="data"
9
- v-model.trim="currentValue" :custom-label="label" :disabled="disabled" placeholder :showLabels="true"
10
- :noResult="false" ref="multiselect" selectLabel deselectLabel selectedLabel>
11
- <div slot="beforeList" class="after-list">
12
- <Button v-if="showBtnClean" key="cleanSelect" title="Limpar" type="warning" classIcon="fas fa-broom"
13
- size="small" :clicked="cleanSelectStatic" />
14
- </div>
15
- </multiselect>
7
+ <div>
8
+ <div class="select" :class="{ border: showBorder, classCss }">
9
+ <multiselect @open="onOpen" @select="onSelected" @search-change="onSearch" :options="data"
10
+ v-model.trim="currentValue" :custom-label="label" :disabled="disabled" placeholder :showLabels="true"
11
+ :noResult="false" ref="multiselect" selectLabel deselectLabel selectedLabel>
12
+ <div slot="beforeList" class="after-list">
13
+ <Button v-if="showBtnClean" key="cleanSelect" title="Limpar" type="warning" classIcon="fas fa-broom"
14
+ size="small" :clicked="cleanSelectStatic" />
15
+ </div>
16
+ </multiselect>
17
+ </div>
16
18
  </div>
17
19
  </div>
18
20
  </template>
@@ -27,6 +29,7 @@ export default {
27
29
  props: {
28
30
  title: String,
29
31
  formName: String,
32
+ classCss: String,
30
33
  field: String,
31
34
  initialFieldTarget: Object,
32
35
  fieldTarget: String,
@@ -97,7 +100,7 @@ export default {
97
100
  this.$emit("input", value);
98
101
  let obj = { fieldTarget: this.fieldTarget, value: value.id };
99
102
  if (!this.onlyQuery) this.addFilter(obj);
100
- if (this.fieldTarget) {
103
+ if (this.fieldTarget && this.fieldTarget != "totalPerPage") {
101
104
  let obj = { tag: `${this.title}: ${value.content}`, fieldTarget: this.fieldTarget, value: value.id };
102
105
  this.addFilter(obj);
103
106
  }
@@ -132,7 +135,6 @@ export default {
132
135
  watch: {
133
136
  event: {
134
137
  handler(event) {
135
-
136
138
  if (event.name == "tagRemoved") {
137
139
  if (this.fieldTarget == event.data) this.cleanSelectStatic();
138
140
  }
@@ -1,28 +1,24 @@
1
1
  <template>
2
2
  <div>
3
- <div
4
- class="warning"
5
- :class="{
6
- primary: type === 'primary',
7
- success: type === 'success',
8
- warning: type === 'warning',
9
- info: type === 'info',
10
- danger: type === 'danger',
11
- }"
12
- >
3
+ <div class="warning" :class="{
4
+ 'alert-primary': type === 'primary',
5
+ 'alert-success': type === 'success',
6
+ 'alert-warning': type === 'warning',
7
+ 'alert-info': type === 'info',
8
+ 'alert-danger': type === 'danger',
9
+ }">
13
10
  <span v-if="type === 'success'" class="success-icon">
14
11
  <i class="fas fa-check-circle"></i>
15
12
  </span>
16
13
  <span v-if="type === 'danger'" class="danger-icon">
17
- <i class="fas fa-times-circle"></i
18
- ></span>
14
+ <i class="fas fa-times-circle"></i></span>
19
15
  <span v-if="type === 'warning'" class="warning-icon">
20
- <i class="fas fa-exclamation-triangle"></i
21
- ></span>
16
+ <i class="fas fa-exclamation-triangle"></i></span>
22
17
  <span v-if="type === 'info'" class="info-icon">
23
- <i class="fas fa-exclamation-circle"></i
24
- ></span>
25
- <span class="message"><slot></slot></span>
18
+ <i class="fas fa-exclamation-circle"></i></span>
19
+ <span class="message">
20
+ <slot></slot>
21
+ </span>
26
22
  </div>
27
23
  </div>
28
24
  </template>
@@ -54,22 +50,22 @@ export default {
54
50
  margin-left: 5px;
55
51
  }
56
52
 
57
- .success {
53
+ .alert-success {
58
54
  background-color: #f6ffed !important;
59
55
  border: 1px solid #b7eb8f !important;
60
56
  }
61
57
 
62
- .warning {
58
+ .alert-warning {
63
59
  background-color: #fffbe6;
64
60
  border: 1px solid #ffe58f;
65
61
  }
66
62
 
67
- .info {
63
+ .alert-info {
68
64
  background-color: #e6f7ff;
69
65
  border: 1px solid #91d5ff;
70
66
  }
71
67
 
72
- .danger {
68
+ .alert-danger {
73
69
  background-color: #fff1f0;
74
70
  border: 1px solid #ffa39e;
75
71
  }
@@ -2,9 +2,9 @@
2
2
  <div>
3
3
  <div class="div-icon" :class="classCss" :style="'font-size:' + iconSize + 'px'" v-if="!show">
4
4
  <div class="icon-eye" @click="show = true">
5
- <i class="fa-solid fa-circle-small"></i>
6
- <i class="fa-solid fa-circle-small"></i>
7
- <i class="fa-solid fa-circle-small"></i>
5
+ <i class="icon-separate fa-solid fa-circle-small"></i>
6
+ <i class="icon-separate fa-solid fa-circle-small"></i>
7
+ <i class="icon-separate fa-solid fa-circle-small"></i>
8
8
  </div>
9
9
  </div>
10
10
  <div class="div-icon" v-if="show" @click="show = false">
@@ -52,8 +52,11 @@ export default {
52
52
  cursor: pointer;
53
53
  }
54
54
 
55
- .icon-eye{
55
+ .icon-eye {
56
56
  color: #dce3e9;
57
57
  }
58
58
 
59
+ .icon-separate {
60
+ padding: 3px;
61
+ }
59
62
  </style>
@@ -1,19 +1,11 @@
1
1
  <template>
2
2
  <div>
3
- <div
4
- v-for="icon in icons"
5
- class="molded side-by-side"
6
- @click="executeEvent(icon.eventName)"
7
- v-b-tooltip.hover
8
- :title="icon.tooltip"
9
- >
10
- <div
11
- class="icon-molded"
12
- :class="{
13
- 'icon-active-top': menuActive == icon.module,
14
- 'icon-normal-top': menuActive != icon.module,
15
- }"
16
- >
3
+ <div v-for="icon in icons" class="molded-icon side-by-side" @click="executeEvent(icon.eventName)" v-b-tooltip.hover
4
+ :title="icon.tooltip">
5
+ <div class="icon-molded-icon" :class="{
6
+ 'icon-active-top': menuActive == icon.module,
7
+ 'icon-normal-top': menuActive != icon.module,
8
+ }">
17
9
  <i :class="icon.icon"></i>
18
10
  </div>
19
11
  </div>
@@ -51,7 +43,7 @@ export default {
51
43
  </script>
52
44
 
53
45
  <style scoped>
54
- .molded {
46
+ .molded-icon {
55
47
  height: 38px;
56
48
  width: 38px;
57
49
  margin-left: 10px;
@@ -59,7 +51,7 @@ export default {
59
51
  cursor: pointer;
60
52
  }
61
53
 
62
- .icon-molded {
54
+ .icon-molded-icon {
63
55
  font-size: 20px;
64
56
  margin-left: 10px;
65
57
  color: white;
@@ -6,7 +6,7 @@
6
6
  <img :src="urlImage" />
7
7
  </div>
8
8
  </li>
9
- <li class="molded">
9
+ <li class="molded-menu">
10
10
  <div class="text-center div-photo" @click="editProfile">
11
11
  <img class="photo" :src="urlPhoto" />
12
12
  </div>
@@ -20,14 +20,14 @@
20
20
  <b-col sm="12">
21
21
  <div class="box-icon text-center">
22
22
  <i :class="item.icon"></i><br />
23
- <div class="div-title">{{ item.title }}</div>
23
+ <div class="div-title-menu">{{ item.title }}</div>
24
24
  </div>
25
25
  </b-col>
26
26
  </b-row>
27
27
 
28
28
  <!-- <b-row v-if="false">
29
29
  <b-col sm="12">
30
- <div class="div-title text-center">
30
+ <div class="div-title-menu text-center">
31
31
  <span
32
32
  :class="{
33
33
  'title-active': menuActive == item.module,
@@ -62,7 +62,7 @@
62
62
  <i class="menu-icon" :style="'color:' + item.iconColor" :class="item.icon"></i>
63
63
  </b-col>
64
64
  <b-col sm="10">
65
- <span class="title-sub"> {{ item.title }}</span>
65
+ <span class="title-sub"> {{ item.title }} </span>
66
66
  </b-col>
67
67
  </b-row>
68
68
  </a>
@@ -213,9 +213,11 @@ export default {
213
213
  border-radius: 18px;
214
214
  }
215
215
 
216
- .div-title {
216
+ .div-title-menu {
217
217
  margin-top: -10px;
218
218
  font-size: 12.5px;
219
+ font-weight: 300;
220
+ color: black;
219
221
  }
220
222
 
221
223
  .title-sub {
@@ -241,12 +243,12 @@ img {
241
243
  font-size: 15px;
242
244
  }
243
245
 
244
- .molded {
246
+ .molded-menu {
245
247
  margin-top: 5px;
246
248
  margin-left: 8px;
247
249
  padding: 5px;
248
250
  padding-bottom: 1px !important;
249
- background-color: white !important;
251
+ background-color: white;
250
252
  border: 1px solid #e8eaed;
251
253
  border-radius: 12px !important;
252
254
  }
@@ -89,13 +89,13 @@ export default {
89
89
  <style>
90
90
  .arrow-left {
91
91
  position: absolute;
92
- margin-top: 28px;
92
+ margin-top: 40px;
93
93
  left: 50%;
94
94
  }
95
95
 
96
96
  .arrow-right {
97
97
  position: absolute;
98
- margin-top: 28px;
98
+ margin-top: 40px;
99
99
  left: 53%;
100
100
  }
101
101
 
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div class="div-tag">
3
3
  <div class="tag" :class="{ 'tag-disabled': disabled }">
4
- <span @click="execute()">{{ title }} <span v-if="value">:</span> {{ value }}</span>
4
+ <span class="title-tag" @click="execute()">{{ title }} <span v-if="value">:</span> {{ value }}</span>
5
5
  <i v-if="showButtonClose && !disabled" @click="remove()" class="icon-tag fas fa-times-circle"></i>
6
6
  </div>
7
7
  </div>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <span>
2
+ <span class="title">
3
3
  <span> (</span>
4
4
 
5
5
  <span :style="'font-size:' + fontSize + 'px'" v-if="periodRent.year > 0">
@@ -3,8 +3,7 @@
3
3
  <span>
4
4
  <slot name="start"></slot>
5
5
  </span>
6
- <span class="title-delivery" v-if="showDeliveryDevolution"
7
- >{{ periodRent.deliveryDateHour }}
6
+ <span class="title-delivery" v-if="showDeliveryDevolution">{{ periodRent.deliveryDateHour }}
8
7
  </span>
9
8
 
10
9
  <span v-show="!showOnlyDeliveryDevolution">
@@ -51,7 +51,6 @@ export default {
51
51
 
52
52
  .title {
53
53
  padding-left: 10px;
54
- color: black !important;
55
54
  font-weight: 500;
56
55
  }
57
56
 
@@ -19,7 +19,7 @@
19
19
  { content: '30', id: 30 },
20
20
  { content: '50', id: 50 },
21
21
  { content: '100', id: 100 },
22
- ]" />
22
+ ]" v-model="totalPerPage" />
23
23
  </b-col>
24
24
  </b-row>
25
25
  </Collapse>
@@ -31,6 +31,8 @@ import Collapse from "./Collapse.vue";
31
31
  import SelectStatic from "../forms/SelectStatic.vue";
32
32
  import Select from "../forms/Select";
33
33
 
34
+ import { mapMutations } from "vuex";
35
+
34
36
  export default {
35
37
  name: "ListViewWithHandlerData",
36
38
  components: { Select, SelectStatic, Collapse },
@@ -40,6 +42,21 @@ export default {
40
42
  default: true,
41
43
  },
42
44
  },
45
+ computed: {
46
+ totalPerPage: {
47
+ get() {
48
+ return this.$store.state.generic.totalPerPage;
49
+ },
50
+ set(value) {
51
+ this.updateTotalPerPage(value);
52
+ },
53
+ },
54
+ },
55
+ methods: {
56
+ ...mapMutations("generic", [
57
+ "updateTotalPerPage",
58
+ ]),
59
+ }
43
60
  };
44
61
  </script>
45
62
 
@@ -1,12 +1,7 @@
1
1
  <template>
2
2
  <div>
3
- <b-pagination
4
- v-model="pagination(_key).currentPage"
5
- align="right"
6
- :hide-goto-end-buttons="true"
7
- :per-page="pagination(_key).totalPerPage"
8
- :total-rows="totalRecords"
9
- >
3
+ <b-pagination v-model="pagination(_key).currentPage" align="right" :hide-goto-end-buttons="true"
4
+ :per-page="totalPerPage.id" :total-rows="totalRecords">
10
5
  <template #first-text>
11
6
  <i class="fa-regular fa-chevron-left"></i>
12
7
  </template>
@@ -14,7 +9,7 @@
14
9
  <i class="fa-regular fa-chevron-left"></i>
15
10
  </template>
16
11
  <template #next-text>
17
- <i class="fa-regular fa-chevron-right"></i>
12
+ <i class="fa-regular fa-chevron-right"></i>
18
13
  </template>
19
14
  <template #last-text>
20
15
  <i class="fa-regular fa-chevron-right"></i>
@@ -24,7 +19,7 @@
24
19
  </template>
25
20
 
26
21
  <script>
27
- import { mapGetters, mapMutations } from "vuex";
22
+ import { mapGetters, mapMutations, mapState } from "vuex";
28
23
 
29
24
  export default {
30
25
  name: "Pagination",
@@ -41,6 +36,7 @@ export default {
41
36
  },
42
37
  computed: {
43
38
  ...mapGetters("generic", ["pagination"]),
39
+ ...mapState("generic", ["totalPerPage"]),
44
40
  },
45
41
  methods: {
46
42
  ...mapMutations("generic", ["addPagination"]),
@@ -69,8 +65,7 @@ export default {
69
65
  color: #6c757d !important;
70
66
  border: 0px solid #dee2e6 !important;
71
67
  border-radius: 50px !important;
72
- width: 37px !important;
68
+ width: 37px !important;
73
69
  height: 37px !important;
74
70
  }
75
-
76
71
  </style>
@@ -12,7 +12,7 @@
12
12
  <br />
13
13
  <div id="printMe" class="a4 footer">
14
14
  <HeaderReport />
15
- <table class="table table-responsive-xs">
15
+ <table class="table table-responsive-md">
16
16
  <thead>
17
17
  <tr>
18
18
  <th v-for="(obj, ind) in header" :key="ind">
@@ -5,12 +5,12 @@
5
5
  <div class="molded">
6
6
  <b-row>
7
7
  <b-col sm="9">
8
- <input type="text" name="search" placeholder="Pesquisar ..." @keyup="verifyCleanSearch()"
9
- @keyup.enter.prevent="executeSearch()" v-model="search.content" /></b-col>
8
+ <input class="input-search" type="text" name="search" placeholder="Pesquisar ..."
9
+ @keyup="verifyCleanSearch()" @keyup.enter.prevent="executeSearch()" v-model="search.content" /></b-col>
10
10
  <b-col sm="3">
11
11
  <div class="div-select">
12
- <SelectStatic fieldTarget="filter" :onlyQuery="true" :initialValue="{ content: 'Contém', id: 'contains' }"
13
- v-model="search.filter" :showBorder="false" :data="[
12
+ <SelectStatic classCss="select-search" fieldTarget="filter" :onlyQuery="true"
13
+ :initialValue="{ content: 'Contém', id: 'contains' }" v-model="search.filter" :showBorder="false" :data="[
14
14
  { content: 'Contém', id: 'contains' },
15
15
  { content: 'Igual', id: 'equal' },
16
16
  ]" />
@@ -72,16 +72,6 @@ export default {
72
72
  </script>
73
73
 
74
74
  <style scoped>
75
- .icon-search {
76
- font-size: 20px;
77
- color: #577696;
78
- display: inline-block;
79
- }
80
-
81
- .input {
82
- display: inline-block;
83
- }
84
-
85
75
  .margin {
86
76
  padding-top: 28px;
87
77
  }
@@ -4,10 +4,10 @@
4
4
  {{ title }}
5
5
  </div>
6
6
  <div class="alignment" v-for="option in options">
7
- <div class="option" :style="'width:' + width + 'px; height:' + height + 'px'"
8
- :class="{ selected: option.value == selected }" @click="optionSelected(option.value)">
7
+ <div class="select-option" :style="'width:' + width + 'px; height:' + height + 'px'"
8
+ :class="{ 'selected-option': option.value == selected }" @click="optionSelected(option.value)">
9
9
  <div class="text-center">
10
- <span :class="{ disabled: disabled }" :style="'font-size:' + option.titleSize + 'px;'">
10
+ <span class="title" :class="{ disabled: disabled }" :style="'font-size:' + option.titleSize + 'px;'">
11
11
  <i v-if="size === 'small'" :class="option.icon" :style="option.iconStyle"></i>
12
12
  {{ option.title }}
13
13
  </span>
@@ -95,7 +95,7 @@ export default {
95
95
  padding: 0px;
96
96
  }
97
97
 
98
- .option {
98
+ .select-option {
99
99
  cursor: pointer;
100
100
  border: 1px solid #e5e4e8;
101
101
  background-color: white;
@@ -112,15 +112,15 @@ export default {
112
112
  box-shadow: 0px 10px 20px -6px rgb(0 0 0 / 2%);
113
113
  }
114
114
 
115
- .alignment {
116
- display: inline-block;
115
+ .select-option:hover {
116
+ background-color: white;
117
117
  }
118
118
 
119
- .option:hover {
120
- background-color: white;
119
+ .alignment {
120
+ display: inline-block;
121
121
  }
122
122
 
123
- .selected {
123
+ .selected-option {
124
124
  background-color: white;
125
125
  border-color: #4680a5;
126
126
  }
@@ -148,8 +148,7 @@ export default {
148
148
  opacity: 0.5;
149
149
  }
150
150
 
151
- .div-icon{
151
+ .div-icon {
152
152
  margin-right: 10px;
153
153
  }
154
-
155
154
  </style>
@@ -1,23 +1,13 @@
1
1
  <template>
2
2
  <div>
3
3
  <div class="margin">
4
- <Button
5
- _key="btnCancelTableDraggable"
6
- title="Cancelar"
7
- type="danger"
8
- size="small"
9
- :clicked="cancel"
10
- />
11
- <Button
12
- _key="btnCheckMoveTableDraggable"
13
- title="Confirmar"
14
- type="success"
15
- size="small"
16
- :clicked="checkMove"
17
- />
4
+ <Button _key="btnCancelTableDraggable" title="Cancelar" type="danger" size="small" :clicked="cancel" />
5
+ <Button _key="btnCheckMoveTableDraggable" title="Confirmar" type="success" size="small" :clicked="checkMove" />
18
6
  </div>
19
- <i class="fa-regular fa-maximize icon-order"></i> Clique e arraste para
20
- ordenar
7
+ <i class="fa-regular fa-maximize icon-order"></i>
8
+ <span class="title">
9
+ Clique e arraste para ordenar
10
+ </span>
21
11
  <table class="table table-responsive-xs">
22
12
  <thead>
23
13
  <tr>
@@ -28,7 +18,7 @@
28
18
  </thead>
29
19
  <draggable v-model="dataLocal" tag="tbody">
30
20
  <tr v-for="item in dataLocal">
31
- <td class="item">
21
+ <td class="item-draggable">
32
22
  <i class="fa-solid fa-grip-lines icon-order"></i>
33
23
  <span v-if="item.name"> {{ item.name }}</span>
34
24
  <span class="without-group" v-else> Sem grupo</span>
@@ -111,8 +101,7 @@ export default {
111
101
  text-transform: uppercase;
112
102
  }
113
103
 
114
- .item {
115
- background-color: #f1f4f9;
104
+ .item-draggable {
116
105
  cursor: move;
117
106
  }
118
107
 
@@ -105,7 +105,7 @@ export default {
105
105
  </script>
106
106
  <style scoped>
107
107
  .field-second {
108
- color: rgb(83, 82, 82) !important;
108
+ color: rgb(83, 82, 82);
109
109
  }
110
110
 
111
111
  .table-currency {
@@ -0,0 +1,266 @@
1
+ <template>
2
+ <div>
3
+ <b-row>
4
+ <b-col sm="3">
5
+ <div class="file">
6
+ <button class="button small primary" @click="openCamera">
7
+ <span><i class="fa-regular fa-camera-web"></i> Câmera</span>
8
+ </button>
9
+ </div>
10
+ <div class="file">
11
+ <button class="button small primary">
12
+ <span><i class="fa-solid fa-upload"></i> Carregar arquivos</span>
13
+ </button>
14
+ <input type="file" name="myfile" ref="file" @change="handleFileChange" multiple />
15
+ </div>
16
+ </b-col>
17
+ <b-col sm="9">
18
+ <div class="side-by-side" v-for="attachment in attachments">
19
+ <div class="text-center box-file">
20
+ <div v-if="attachment.extension == 'png' || attachment.extension == 'jpg'">
21
+ <img class="img" :src="urlBase + attachment.fileName">
22
+ </div>
23
+ <div class="icon-generic" v-else>
24
+ <i class="fa-light fa-file"></i>
25
+ <div><span class="name">{{ attachment.name }}</span></div>
26
+ </div>
27
+ <div class="icon side-by-side">
28
+ <i class="fa-solid fa-download"></i>
29
+ </div>
30
+ <div class="icon icon-close side-by-side">
31
+ <i class="fa-solid fa-circle-xmark"></i>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ </b-col>
36
+ </b-row>
37
+ <Modal title="Câmera" :width="600" :height="750" v-if="showModal('webcam')" :onHideModal="stopCamera">
38
+ <div class="text-center">
39
+ <WebCam ref="webcam" :autoplay="false" width="400" height="100%"></WebCam>
40
+ <br>
41
+ <div class="side-by-side">
42
+ <button class="button primary" @click="captureImage">
43
+ <i class="fa-solid fa-camera"></i>
44
+ Capturar
45
+ </button>
46
+ </div>
47
+ </div>
48
+ </Modal>
49
+ </div>
50
+ </template>
51
+ <script>
52
+
53
+ import Modal from "@nixweb/nixloc-ui/src/component/forms/Modal";
54
+
55
+ import { WebCam } from 'vue-cam-vision'
56
+
57
+ import { mapState, mapGetters, mapMutations } from "vuex";
58
+
59
+ export default {
60
+ components: {
61
+ WebCam,
62
+ Modal
63
+ },
64
+ props: {
65
+ baseUrl: {
66
+ type: String,
67
+ default: "https://espaco.blob.core.windows.net",
68
+ },
69
+ container: {
70
+ type: String,
71
+ default: "nixloc-attachment",
72
+ }
73
+ },
74
+ data() {
75
+ return {
76
+ files: [],
77
+ attachments: [
78
+ {
79
+ fileName: "T7I300FDB9_3.png",
80
+ extension: "png",
81
+ },
82
+ {
83
+ fileName: "T7I300FDB9_3.png",
84
+ extension: "png",
85
+ },
86
+ {
87
+ fileName: "T7I300FDB9_3.png",
88
+ extension: "png",
89
+ },
90
+ {
91
+ fileName: "T7I300FDB9_3.png",
92
+ extension: "png",
93
+ },
94
+ {
95
+ name: "screensh...",
96
+ fileName: "T7I300FDB9_3.png",
97
+ extension: "txt",
98
+ },
99
+ {
100
+ fileName: "T7I300FDB9_3.png",
101
+ extension: "png",
102
+ },
103
+ {
104
+ fileName: "T7I300FDB9_3.png",
105
+ extension: "png",
106
+ },
107
+ {
108
+ fileName: "T7I300FDB9_3.png",
109
+ extension: "png",
110
+ },
111
+ {
112
+ fileName: "T7I300FDB9_3.png",
113
+ extension: "png",
114
+ },
115
+ {
116
+ name: "screensh...",
117
+ fileName: "T7I300FDB9_3.png",
118
+ extension: "txt",
119
+ },
120
+ {
121
+ fileName: "T7I300FDB9_3.png",
122
+ extension: "png",
123
+ },
124
+ {
125
+ fileName: "T7I300FDB9_3.png",
126
+ extension: "png",
127
+ },
128
+ {
129
+ fileName: "T7I300FDB9_3.png",
130
+ extension: "png",
131
+ },
132
+ {
133
+ fileName: "T7I300FDB9_3.png",
134
+ extension: "png",
135
+ },
136
+ {
137
+ name: "screensh...",
138
+ fileName: "T7I300FDB9_3.png",
139
+ extension: "txt",
140
+ },
141
+ ],
142
+ captures: [],
143
+ imgReport: [],
144
+ };
145
+ },
146
+ methods: {
147
+ ...mapMutations("generic", ["openModal", "hideModal"]),
148
+ handleFileChange() {
149
+ this.files = this.$refs.file.files;
150
+ },
151
+ openCamera() {
152
+ this.openModal("webcam");
153
+ this.startCamera();
154
+ },
155
+ startCamera() {
156
+ if (this.$refs.webcam) {
157
+ this.$refs.webcam.start();
158
+ }
159
+ },
160
+ stopCamera() {
161
+ if (this.$refs.webcam) {
162
+ this.$refs.webcam.stop();
163
+ this.hideModal();
164
+ }
165
+ },
166
+ captureImage() {
167
+ if (this.$refs.webcam) {
168
+ this.$refs.webcam.capture().then((base64String) => {
169
+ console.log(base64String);
170
+ });
171
+ }
172
+ },
173
+ },
174
+ computed: {
175
+ ...mapGetters("generic", ["showModal"]),
176
+ },
177
+ };
178
+ </script>
179
+
180
+ <style scoped>
181
+ .file {
182
+ position: relative;
183
+ overflow: hidden;
184
+ display: inline-block;
185
+ cursor: pointer;
186
+ }
187
+
188
+ .button {
189
+ padding: 8px 12px;
190
+ cursor: pointer;
191
+ border: none;
192
+ border-radius: 40px !important;
193
+ font-size: 14px;
194
+ font-weight: 400;
195
+ margin-left: 10px;
196
+ }
197
+
198
+ .primary {
199
+ background: #577696;
200
+ border-color: #577696;
201
+ color: #fff;
202
+ }
203
+
204
+ .primary:hover {
205
+ background: #355472;
206
+ }
207
+
208
+ .danger {
209
+ background: red;
210
+ border-color: red;
211
+ color: #fff;
212
+ }
213
+
214
+ .file input[type="file"] {
215
+ font-size: 100px;
216
+ position: absolute;
217
+ left: 0;
218
+ top: 0;
219
+ opacity: 0;
220
+ }
221
+
222
+ .small {
223
+ padding: 3px 8px;
224
+ font-size: 13px;
225
+ }
226
+
227
+ .box-file {
228
+ width: 120px !important;
229
+ height: 110px !important;
230
+ border: 1px solid #e8eaed;
231
+ background-color: #fff;
232
+ border-radius: 13px;
233
+ margin: 10px;
234
+ font-size: 23px;
235
+ font-weight: 400;
236
+ align-items: center;
237
+ justify-content: center;
238
+ }
239
+
240
+ .img {
241
+ margin: 10px;
242
+ width: 45px;
243
+ height: 45px;
244
+ }
245
+
246
+ .icon-generic {
247
+ font-size: 16px;
248
+ }
249
+
250
+ .name {
251
+ font-size: 14px;
252
+ }
253
+
254
+ .icon {
255
+ font-size: 20px;
256
+ cursor: pointer;
257
+ }
258
+
259
+ .icon-close {
260
+ color: red;
261
+ }
262
+
263
+ .btn-webcam {}
264
+ </style>
265
+
266
+
@@ -2,77 +2,43 @@
2
2
  <div class="vqb-rule card move">
3
3
  <div class="form-inline">
4
4
  <label :class="rule.classCss" class="mr-5">
5
- <i :class="rule.icon"></i>
6
- <span style="margin-left: 10px">{{ rule.title }} </span>
5
+ <i class="icon-query-builder" :class="rule.icon"></i>
6
+ <span class="title" style="margin-left: 10px">{{ rule.title }} </span>
7
7
  </label>
8
8
  <div style="margin-right: 20px">
9
- <RadioGroup
10
- v-if="index > 0"
11
- :options="[
12
- { text: 'e', value: 'and' },
13
- { text: 'ou', value: 'or' },
14
- ]"
15
- v-model="rule.andOr"
16
- />
9
+ <RadioGroup v-if="index > 0" :options="[
10
+ { text: 'e', value: 'and' },
11
+ { text: 'ou', value: 'or' },
12
+ ]" v-model="rule.andOr" />
17
13
  </div>
18
- <select
19
- v-if="rule.typeField == 'text' || rule.typeField == 'numeric'"
20
- v-model="rule.operator"
21
- class="form-control mr-2"
22
- >
14
+ <select v-if="rule.typeField == 'text' || rule.typeField == 'numeric'" v-model="rule.operator"
15
+ class="select-query-builder form-control mr-2">
23
16
  <option v-for="operator in rule.operators" :key="operator">
24
- {{ operator }}
17
+ <span>{{ operator }}</span>
25
18
  </option>
26
19
  </select>
27
- <input
28
- v-if="rule.typeField == 'text' || rule.typeField == 'numeric'"
29
- class="form-control"
30
- :type="rule.typeField == 'text' ? 'text' : 'number'"
31
- placeholder="Valor"
32
- v-model="rule.value"
33
- />
34
- <CheckboxGroup
35
- v-if="rule.typeField == 'checkbox'"
36
- :options="options"
37
- :initialValue="rule.value"
38
- v-model="rule.value"
39
- />
20
+ <input v-if="rule.typeField == 'text' || rule.typeField == 'numeric'" class="form-control"
21
+ :type="rule.typeField == 'text' ? 'text' : 'number'" placeholder="Valor" v-model="rule.value" />
22
+ <CheckboxGroup v-if="rule.typeField == 'checkbox'" :options="options" :initialValue="rule.value"
23
+ v-model="rule.value" />
40
24
  <div v-if="rule.typeField == 'dateTime'">
41
25
  <div class="side-by-side">
42
- <DateTime
43
- :format="rule.props.format"
44
- :type="rule.props.type"
45
- :range="rule.props.range"
46
- v-model="rule.value"
47
- />
26
+ <DateTime :format="rule.props.format" :type="rule.props.type" :range="rule.props.range" v-model="rule.value" />
48
27
  </div>
49
28
  <div class="side-by-side margin">ou</div>
50
29
  <div class="side-by-side margin">
51
- <select
52
- @change="verifyCalculate"
53
- v-model="rule.value[2]"
54
- class="form-control mr-2"
55
- >
30
+ <select @change="verifyCalculate" v-model="rule.value[2]" class="form-control mr-2">
56
31
  <option v-for="period in optionsPeriodCustom" :key="period">
57
32
  {{ period }}
58
33
  </option>
59
34
  </select>
60
35
  </div>
61
36
  <div v-if="rule.props.filterByField">
62
- <RadioGroup
63
- v-if="rule.props.filterByField"
64
- :options="rule.props.filterByField"
65
- v-model="rule.name"
66
- />
37
+ <RadioGroup v-if="rule.props.filterByField" :options="rule.props.filterByField" v-model="rule.name" />
67
38
  </div>
68
39
  </div>
69
40
 
70
- <Select
71
- v-if="rule.typeField == 'select'"
72
- :showNewRegister="false"
73
- :url="rule.props.url"
74
- v-model="rule.value"
75
- />
41
+ <Select v-if="rule.typeField == 'select'" :showNewRegister="false" :url="rule.props.url" v-model="rule.value" />
76
42
  <div @click="removeRule" class="ml-auto btn-remove">
77
43
  <i class="fas fa-times"></i>
78
44
  </div>
@@ -1,14 +1,14 @@
1
1
  <template>
2
2
  <div class="selected-filter" @blur="open = false">
3
3
  <div class="selected" :class="{ open: open }" @click="open = !open">
4
- {{ selected }}
4
+ <span class="title">{{ selected }}</span>
5
5
  </div>
6
6
  <div class="items" :class="{ hide: !open }">
7
7
  <div v-for="(options, i) of options" :key="i">
8
8
  <div @click="select(options)">
9
9
  <span :class="options.classCss">
10
- <i :class="options.icon"></i>
11
- <span> {{ options.title }}</span>
10
+ <i class="icon-query-builder" :class="options.icon"></i>
11
+ <span class="title"> {{ options.title }}</span>
12
12
  </span>
13
13
  </div>
14
14
  </div>
@@ -121,7 +121,7 @@ export default {
121
121
  mounted() {
122
122
  this.updatePagination({
123
123
  key: "templateList",
124
- totalPerPage: this.baseParams.totalPerPage,
124
+ totalPerPage: this.totalPerPage.id,
125
125
  });
126
126
  },
127
127
  beforeDestroy() {
@@ -161,6 +161,8 @@ export default {
161
161
  "hideModal"
162
162
  ]),
163
163
  getAll() {
164
+ this.baseParams.totalPerPage = this.totalPerPage.id
165
+
164
166
  let obj = {
165
167
  ...this.baseParams,
166
168
  ...this.dynamicFilter,
@@ -189,7 +191,6 @@ export default {
189
191
  }
190
192
  },
191
193
  selectFilter(value) {
192
-
193
194
  let fieldTarget = value.fieldTarget;
194
195
  let obj = { tag: value.tag, key: fieldTarget, value: value.value };
195
196
 
@@ -5,7 +5,8 @@
5
5
  <div slot="content-main">
6
6
  <b-row>
7
7
  <b-col xs="12" sm="12" md="12" lg="6" xl="6" v-if="allReports.saved.length > 0">
8
- <div><i class="fas fa-file-alt icon-saved"></i> Personalizado</div>
8
+ <div><i class="fas fa-file-alt icon-report-title icon-saved"></i> <span class="title">Personalizado</span>
9
+ </div>
9
10
  <hr class="hr" />
10
11
  <div class="div-molded" v-for="report in allReports.saved">
11
12
  <div>
@@ -15,7 +16,7 @@
15
16
  <i class="fas fa-file-alt icon-report"></i>
16
17
  </b-col>
17
18
  <b-col sm="10" @click="navegateTo(report)">
18
- <div>{{ report.name }}</div>
19
+ <div class="title-report">{{ report.name }}</div>
19
20
  </b-col>
20
21
  <b-col sm="1">
21
22
  <Confirmation title="Deseja excluir?" type="danger" :data="report" :confirmed="confirmDelete">
@@ -31,7 +32,7 @@
31
32
  </b-col>
32
33
  <b-col xs="12" sm="12" md="12" lg="6" xl="6">
33
34
  <div>
34
- <i class="fas fa-file-chart-line icon-default"></i> Padrão
35
+ <i class="fas fa-file-chart-line icon-report-title icon-default"></i> <span class="title">Padrão</span>
35
36
  </div>
36
37
  <hr class="hr" />
37
38
  <div class="div-molded" v-for="report in allReports.default">
@@ -42,7 +43,7 @@
42
43
  <i class="fas fa-file-alt icon-report"></i>
43
44
  </b-col>
44
45
  <b-col sm="11" @click="navegateTo(report)">
45
- <div class="side-by-side">{{ report.name }}</div>
46
+ <div class="title-report side-by-side">{{ report.name }}</div>
46
47
  </b-col>
47
48
  </b-row>
48
49
  </Molded>
@@ -19,6 +19,7 @@ export default {
19
19
  },
20
20
  notifications: [],
21
21
  pagination: [],
22
+ totalPerPage: { "content": "10", "id": 10 },
22
23
  selected: [],
23
24
  loading: [],
24
25
  event: {
@@ -112,6 +113,7 @@ export default {
112
113
  let isMoviment = th.innerText.includes("t.produtoMovimentacao");
113
114
  let isCustumerAddress = th.innerText.includes("t.enderecoCliente");
114
115
  let isAddressRent = th.innerText.includes("t.saidaRetornoLocacao");
116
+ let isTeamRent = th.innerText.includes("t.equipeLocacao");
115
117
 
116
118
 
117
119
  if (isProduct) {
@@ -126,6 +128,9 @@ export default {
126
128
  } else if (isPayment) {
127
129
  obj.vForSimple = "v-for='pagamento in d.pagamentoLocacao'";
128
130
  config.push(obj);
131
+ } else if (isTeamRent) {
132
+ obj.vForSimple = "v-for='equipe in d.equipeLocacao'";
133
+ config.push(obj);
129
134
  } else if (isGrouped) {
130
135
  obj.vForGrouped = "v-for='(itensLocacao, grupo) in produtoAgrupado'";
131
136
  obj.vForSimple = "v-for='produto in itensLocacao'";
@@ -181,6 +186,7 @@ export default {
181
186
  .replaceAll("t.produtoMovimentacao", "")
182
187
  .replaceAll("t.enderecoCliente", "")
183
188
  .replaceAll("t.saidaRetornoLocacao", "")
189
+ .replaceAll("t.equipeLocacao", "")
184
190
  .replaceAll("<p>&nbsp!important;</p>", "<p>&nbsp</p>");
185
191
  }
186
192
 
@@ -237,6 +243,9 @@ export default {
237
243
  clearedSearch: (state) => {
238
244
  state.clearedSearch = state.clearedSearch = !state.clearedSearch
239
245
  },
246
+ updateTotalPerPage: (state, value) => {
247
+ state.totalPerPage = value;
248
+ },
240
249
  addSelected: (state, selected) => {
241
250
  state.selected = selected;
242
251
  },