@nixweb/nixloc-ui 0.0.92 → 0.0.95
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/package.json +3 -2
- package/src/component/forms/EscolherEstatico.vue +0 -3
- package/src/component/layout/BarraRolagem.vue +9 -2
- package/src/component/layout/Menu.vue +16 -9
- package/src/component/layout/Moldura.vue +8 -3
- package/src/component/layout/Tag.vue +66 -0
- package/src/component/shared/FiltroHorizontal.vue +8 -2
- package/src/component/shared/Progresso.vue +14 -1
- package/src/component/shared/Tabela.vue +2 -12
- package/src/component/shared/query-builder/Campo.vue +116 -0
- package/src/component/shared/query-builder/ConverteParaOdata.js +73 -0
- package/src/component/shared/query-builder/Filtro.vue +85 -0
- package/src/component/shared/query-builder/QueryBuilder.vue +164 -0
- package/src/component/shared/query-builder/Rodape.vue +38 -0
- package/src/component/shared/query-builder/Tags.vue +84 -0
- package/src/component/shared/query-builder/components/CustomSelect.vue +115 -0
- package/src/component/shared/query-builder/components/QueryBuilderChildren.vue +46 -0
- package/src/component/shared/query-builder/components/QueryBuilderGroup.vue +151 -0
- package/src/component/shared/query-builder/components/QueryBuilderRule.vue +81 -0
- package/src/component/shared/query-builder/layouts/Bootstrap/BootstrapGroup.vue +120 -0
- package/src/component/shared/query-builder/layouts/Bootstrap/BootstrapRule.vue +171 -0
- package/src/component/shared/query-builder/main.js +81 -0
- package/src/component/shared/query-builder/utilities.js +22 -0
- package/src/component/template/ModeloRelatorioView.vue +455 -0
- package/src/store/modulos/generic.js +11 -0
- package/src/store/modulos/relatorio.js +149 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nixweb/nixloc-ui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.95",
|
|
4
4
|
"description": "Componentes UI",
|
|
5
5
|
"author": "Fábio Ávila <fabio@nixweb.com.br>",
|
|
6
6
|
"private": false,
|
|
@@ -15,13 +15,14 @@
|
|
|
15
15
|
"sass-loader": "^12.4.0",
|
|
16
16
|
"vodal": "^2.4.0",
|
|
17
17
|
"vue-color": "^2.7.0",
|
|
18
|
+
"vue-currency-filter": "^3.3.0",
|
|
18
19
|
"vue-js-toggle-button": "^1.3.0",
|
|
19
20
|
"vue-loading-template": "^1.3.0",
|
|
20
21
|
"vue-moment": "^4.0.0",
|
|
21
22
|
"vue-multiselect": "^2.1.0",
|
|
22
23
|
"vue-numeric": "^2.4.1",
|
|
23
24
|
"vue-the-mask": "^0.11.1",
|
|
24
|
-
"vue-
|
|
25
|
+
"vue-simple-progress": "^1.1.1",
|
|
25
26
|
"vue-toasted": "^1.1.28",
|
|
26
27
|
"vue-toggles": "^1.1.4",
|
|
27
28
|
"vue-upload-file": "^1.1.0",
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
2
|
+
<div
|
|
3
|
+
:id="id"
|
|
4
|
+
class="barra-rolagem div"
|
|
5
|
+
:style="
|
|
6
|
+
'max-height:' + alturaMaxima + 'px' + ';' + 'min-height:' + alturaMinima + 'px'
|
|
7
|
+
"
|
|
8
|
+
>
|
|
3
9
|
<slot></slot>
|
|
4
10
|
</div>
|
|
5
11
|
</template>
|
|
@@ -11,7 +17,8 @@ export default {
|
|
|
11
17
|
name: "BarraRolagem",
|
|
12
18
|
props: {
|
|
13
19
|
id: String,
|
|
14
|
-
|
|
20
|
+
alturaMaxima: Number,
|
|
21
|
+
alturaMinima: Number,
|
|
15
22
|
},
|
|
16
23
|
mounted() {
|
|
17
24
|
const listElm = document.querySelector("#" + this.id);
|
|
@@ -14,7 +14,13 @@
|
|
|
14
14
|
:class="sessaoDestaque('home')"
|
|
15
15
|
>
|
|
16
16
|
<div class="div-icone lado-a-lado">
|
|
17
|
-
<i
|
|
17
|
+
<i
|
|
18
|
+
:class="{
|
|
19
|
+
'icone-ativo': menuAtivo == 'Dashboard',
|
|
20
|
+
'icone-normal': menuAtivo != 'Dashboard',
|
|
21
|
+
}"
|
|
22
|
+
class="fas fa-chart-area icone-dash"
|
|
23
|
+
></i>
|
|
18
24
|
</div>
|
|
19
25
|
<div class="titulo">Dashboard</div>
|
|
20
26
|
</a>
|
|
@@ -28,7 +34,14 @@
|
|
|
28
34
|
:class="sessaoDestaque(item.modulo)"
|
|
29
35
|
>
|
|
30
36
|
<div class="div-icone lado-a-lado">
|
|
31
|
-
<
|
|
37
|
+
<span
|
|
38
|
+
:class="{
|
|
39
|
+
'icone-ativo': menuAtivo == item.modulo,
|
|
40
|
+
'icone-normal': menuAtivo != item.modulo
|
|
41
|
+
}"
|
|
42
|
+
> <i :class="item.icone"></i>
|
|
43
|
+
</span>
|
|
44
|
+
|
|
32
45
|
</div>
|
|
33
46
|
<div class="titulo">{{ item.titulo }}</div>
|
|
34
47
|
</a>
|
|
@@ -83,7 +96,7 @@ export default {
|
|
|
83
96
|
},
|
|
84
97
|
corBaseAtivo: {
|
|
85
98
|
type: String,
|
|
86
|
-
default: "#
|
|
99
|
+
default: "#3F529B",
|
|
87
100
|
},
|
|
88
101
|
urlImagem: String,
|
|
89
102
|
},
|
|
@@ -157,12 +170,6 @@ export default {
|
|
|
157
170
|
z-index: 1000;
|
|
158
171
|
}
|
|
159
172
|
|
|
160
|
-
.menu-ativo {
|
|
161
|
-
border-left: 3px solid #d98621;
|
|
162
|
-
color: #d98621 ;
|
|
163
|
-
background-color: #FAFAFC;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
173
|
.div-logo {
|
|
167
174
|
padding-top: 5px;
|
|
168
175
|
padding-bottom: 15px;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="moldura">
|
|
2
|
+
<div class="moldura" :style="'border-radius:' + bordaArredondada + 'px'">
|
|
3
3
|
<slot></slot>
|
|
4
4
|
</div>
|
|
5
5
|
</template>
|
|
@@ -7,13 +7,18 @@
|
|
|
7
7
|
<script>
|
|
8
8
|
export default {
|
|
9
9
|
name: "Moldura",
|
|
10
|
+
props: {
|
|
11
|
+
bordaArredondada: {
|
|
12
|
+
type: Number,
|
|
13
|
+
default: 3,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
10
16
|
};
|
|
11
17
|
</script>
|
|
12
18
|
<style scoped>
|
|
13
19
|
.moldura {
|
|
14
20
|
border: 1px solid #dbdfe9;
|
|
15
|
-
background-color:
|
|
16
|
-
border-radius: 3px;
|
|
21
|
+
background-color: transparent;
|
|
17
22
|
padding: 15px;
|
|
18
23
|
}
|
|
19
24
|
</style>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="div-tag">
|
|
3
|
+
<div class="tag">
|
|
4
|
+
<span @click="executar()">{{ titulo }}: {{ valor }}</span>
|
|
5
|
+
<i @click="remover()" class="icone fas fa-times-circle"></i>
|
|
6
|
+
</div>
|
|
7
|
+
</div>
|
|
8
|
+
</template>
|
|
9
|
+
|
|
10
|
+
<script>
|
|
11
|
+
import { mapMutations } from "vuex";
|
|
12
|
+
|
|
13
|
+
export default {
|
|
14
|
+
name: "Tag",
|
|
15
|
+
props: {
|
|
16
|
+
titulo: String,
|
|
17
|
+
valor: String,
|
|
18
|
+
nomeEvento: String,
|
|
19
|
+
dadosEvento: Object,
|
|
20
|
+
},
|
|
21
|
+
methods: {
|
|
22
|
+
...mapMutations("generic", ["insereEvento"]),
|
|
23
|
+
executar() {
|
|
24
|
+
if (this.nomeEvento)
|
|
25
|
+
this.insereEvento({
|
|
26
|
+
nome: this.nomeEvento,
|
|
27
|
+
dados: this.dadosEvento,
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
remover() {
|
|
31
|
+
this.insereEvento({
|
|
32
|
+
nome: "tagRemovida",
|
|
33
|
+
dados: this.dadosEvento,
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
<style scoped>
|
|
41
|
+
.tag {
|
|
42
|
+
align-items: center;
|
|
43
|
+
background: #e0e0e0;
|
|
44
|
+
border-radius: 32px;
|
|
45
|
+
box-sizing: border-box;
|
|
46
|
+
display: flex;
|
|
47
|
+
font-size: 13px;
|
|
48
|
+
height: 32px;
|
|
49
|
+
margin: 4px 8px 4px 0;
|
|
50
|
+
width: 100%;
|
|
51
|
+
outline: none;
|
|
52
|
+
padding: 0 6px 0 16px;
|
|
53
|
+
position: relative;
|
|
54
|
+
white-space: nowrap;
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.div-tag {
|
|
59
|
+
margin-right: 10px;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.icone {
|
|
63
|
+
color: #9e9e9e;
|
|
64
|
+
padding-left: 5px;
|
|
65
|
+
}
|
|
66
|
+
</style>
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
}"
|
|
14
14
|
>
|
|
15
15
|
<b-row>
|
|
16
|
-
<b-col sm="10">
|
|
16
|
+
<b-col :sm="mostrarTotalPorPagina ? 10 : 12">
|
|
17
17
|
<slot name="conteudo-filtro-horizontal"></slot>
|
|
18
18
|
</b-col>
|
|
19
|
-
<b-col xs="12" sm="12" md="12" lg="2" xl="2">
|
|
19
|
+
<b-col xs="12" sm="12" md="12" lg="2" xl="2" v-if="mostrarTotalPorPagina">
|
|
20
20
|
<EscolherEstatico
|
|
21
21
|
titulo="Mostrar"
|
|
22
22
|
campoAlvo="totalPorPagina"
|
|
@@ -43,6 +43,12 @@ import Escolher from "../forms/Escolher";
|
|
|
43
43
|
export default {
|
|
44
44
|
name: "ModeloLista",
|
|
45
45
|
components: { Escolher, EscolherEstatico, EsconderMostrar },
|
|
46
|
+
props: {
|
|
47
|
+
mostrarTotalPorPagina: {
|
|
48
|
+
type: Boolean,
|
|
49
|
+
default: true,
|
|
50
|
+
},
|
|
51
|
+
},
|
|
46
52
|
};
|
|
47
53
|
</script>
|
|
48
54
|
|
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div>
|
|
2
|
+
<div>
|
|
3
|
+
<progress-bar :size="tamanho" :text="texto" :val="valor" :max="maximo"></progress-bar>
|
|
4
|
+
</div>
|
|
3
5
|
</template>
|
|
4
6
|
<script>
|
|
7
|
+
import ProgressBar from "vue-simple-progress";
|
|
8
|
+
|
|
5
9
|
export default {
|
|
6
10
|
name: "Progresso",
|
|
11
|
+
components: {
|
|
12
|
+
ProgressBar,
|
|
13
|
+
},
|
|
14
|
+
props: {
|
|
15
|
+
texto: String,
|
|
16
|
+
valor: Number,
|
|
17
|
+
maximo: Number,
|
|
18
|
+
tamanho: String,
|
|
19
|
+
},
|
|
7
20
|
};
|
|
8
21
|
</script>
|
|
@@ -243,7 +243,7 @@ tr:hover {
|
|
|
243
243
|
}
|
|
244
244
|
|
|
245
245
|
.tabela-numero {
|
|
246
|
-
font-size:
|
|
246
|
+
font-size: 15px;
|
|
247
247
|
font-weight: bold;
|
|
248
248
|
}
|
|
249
249
|
|
|
@@ -253,7 +253,7 @@ tr:hover {
|
|
|
253
253
|
}
|
|
254
254
|
|
|
255
255
|
.tabela-valor {
|
|
256
|
-
font-size:
|
|
256
|
+
font-size: 15px;
|
|
257
257
|
min-width: 100px;
|
|
258
258
|
}
|
|
259
259
|
|
|
@@ -272,14 +272,4 @@ tr:hover {
|
|
|
272
272
|
.icone-link:hover {
|
|
273
273
|
font-size: 12.5px;
|
|
274
274
|
}
|
|
275
|
-
|
|
276
|
-
.receita {
|
|
277
|
-
font-size: 14px;
|
|
278
|
-
color: darkblue;
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
.despesa {
|
|
282
|
-
font-size: 14px;
|
|
283
|
-
color: red;
|
|
284
|
-
}
|
|
285
275
|
</style>
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<b-row>
|
|
4
|
+
<b-col sm="6">
|
|
5
|
+
<BarraRolagem :alturaMinima="200" :alturaMaxima="250">
|
|
6
|
+
<div class="div-opcoes">
|
|
7
|
+
<CheckboxMultiplo
|
|
8
|
+
:empilhado="true"
|
|
9
|
+
:valorInicial="opcoes.valorInicial"
|
|
10
|
+
:opcoes="opcoes.opcoes"
|
|
11
|
+
v-model="campoSelecionado"
|
|
12
|
+
/>
|
|
13
|
+
</div>
|
|
14
|
+
</BarraRolagem>
|
|
15
|
+
</b-col>
|
|
16
|
+
<b-col sm="6">
|
|
17
|
+
<Opcoes
|
|
18
|
+
:opcoes="[
|
|
19
|
+
{ text: 'Crescente', value: 'asc' },
|
|
20
|
+
{ text: 'Decrescente', value: 'desc' },
|
|
21
|
+
]"
|
|
22
|
+
v-model="ordenar"
|
|
23
|
+
/>
|
|
24
|
+
<EscolherEstatico
|
|
25
|
+
titulo="Ordenar"
|
|
26
|
+
campoAlvo="ordenar"
|
|
27
|
+
:valorInicial="valorInicial"
|
|
28
|
+
:dados="ordenacao"
|
|
29
|
+
v-model="campoOrdenado"
|
|
30
|
+
/>
|
|
31
|
+
</b-col>
|
|
32
|
+
</b-row>
|
|
33
|
+
</div>
|
|
34
|
+
</template>
|
|
35
|
+
<script>
|
|
36
|
+
import EscolherEstatico from "@nixweb/nixloc-ui/src/component/forms/EscolherEstatico";
|
|
37
|
+
import Opcoes from "@nixweb/nixloc-ui/src/component/forms/Opcoes";
|
|
38
|
+
import CheckboxMultiplo from "@nixweb/nixloc-ui/src/component/forms/CheckboxMultiplo";
|
|
39
|
+
import BarraRolagem from "@nixweb/nixloc-ui/src/component/layout/BarraRolagem.vue";
|
|
40
|
+
|
|
41
|
+
import { mapMutations, mapGetters } from "vuex";
|
|
42
|
+
|
|
43
|
+
export default {
|
|
44
|
+
name: "CampoRelatorio",
|
|
45
|
+
components: {
|
|
46
|
+
CheckboxMultiplo,
|
|
47
|
+
EscolherEstatico,
|
|
48
|
+
BarraRolagem,
|
|
49
|
+
Opcoes,
|
|
50
|
+
},
|
|
51
|
+
data() {
|
|
52
|
+
return {
|
|
53
|
+
ordenar: "asc",
|
|
54
|
+
valorInicial: {},
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
created() {
|
|
58
|
+
this.valorInicial = this.ordenacao[0];
|
|
59
|
+
let obj = {
|
|
60
|
+
conteudo: this.valorInicial.conteudo,
|
|
61
|
+
id: this.valorInicial.id,
|
|
62
|
+
ordenar: this.ordenar,
|
|
63
|
+
};
|
|
64
|
+
this.atualizaCampoOrdenado(obj);
|
|
65
|
+
},
|
|
66
|
+
computed: {
|
|
67
|
+
...mapGetters("relatorio", ["opcoes"]),
|
|
68
|
+
campoSelecionado: {
|
|
69
|
+
get() {
|
|
70
|
+
return this.$store.state.relatorio.campoSelecionado;
|
|
71
|
+
},
|
|
72
|
+
set(value) {
|
|
73
|
+
this.atualizaCampoSelecionado(value);
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
campoOrdenado: {
|
|
77
|
+
get() {
|
|
78
|
+
return this.$store.state.relatorio.campoOrdenado;
|
|
79
|
+
},
|
|
80
|
+
set(value) {
|
|
81
|
+
let obj = { conteudo: value.conteudo, id: value.id, ordenar: this.ordenar };
|
|
82
|
+
this.atualizaCampoOrdenado(obj);
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
ordenacao() {
|
|
86
|
+
let ordenacao = [];
|
|
87
|
+
this.opcoes.opcoes.forEach((opcao) => {
|
|
88
|
+
let obj = { conteudo: opcao.text, id: opcao.value };
|
|
89
|
+
ordenacao.push(obj);
|
|
90
|
+
});
|
|
91
|
+
return ordenacao;
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
methods: {
|
|
95
|
+
...mapMutations("relatorio", ["atualizaCampoSelecionado", "atualizaCampoOrdenado"]),
|
|
96
|
+
},
|
|
97
|
+
watch: {
|
|
98
|
+
ordenar: {
|
|
99
|
+
handler(value) {
|
|
100
|
+
let obj = {
|
|
101
|
+
conteudo: this.campoOrdenado.conteudo,
|
|
102
|
+
id: this.campoOrdenado.id,
|
|
103
|
+
ordenar: this.ordenar,
|
|
104
|
+
};
|
|
105
|
+
this.atualizaCampoOrdenado(obj);
|
|
106
|
+
},
|
|
107
|
+
deep: true,
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
</script>
|
|
112
|
+
<style scoped>
|
|
113
|
+
.div-opcoes {
|
|
114
|
+
margin-left: 10px;
|
|
115
|
+
}
|
|
116
|
+
</style>
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export default class ConverteParaOdata {
|
|
2
|
+
converteFiltro(query) {
|
|
3
|
+
let campo = query.rule;
|
|
4
|
+
let valor = query.value;
|
|
5
|
+
let tipo = query.tipo;
|
|
6
|
+
let label = query.label;
|
|
7
|
+
|
|
8
|
+
if (query.operator === "igual") return `${campo} eq '${valor}'`;
|
|
9
|
+
if (query.operator === "diferente") return `${campo} ne '${valor}'`;
|
|
10
|
+
if (query.operator === "contem") return `contains(${campo},'${valor}')`;
|
|
11
|
+
if (query.operator === "periodo") return this.convertePeriodo(valor);
|
|
12
|
+
if (query.operator === "checkbox") return this.converteCheckbox(campo, valor, tipo, label);
|
|
13
|
+
if (query.operator === "=") return `${campo} eq ${valor}`;
|
|
14
|
+
if (query.operator === "!=") return `${campo} ne ${valor}`;
|
|
15
|
+
if (query.operator === "<") return `${campo} lt ${valor}`;
|
|
16
|
+
if (query.operator === "<=") return `${campo} le ${valor}`;
|
|
17
|
+
if (query.operator === ">") return `${campo} gt ${valor}`;
|
|
18
|
+
if (query.operator === ">=") return `${campo} ge ${valor}`;
|
|
19
|
+
}
|
|
20
|
+
convertePeriodo(valor) {
|
|
21
|
+
let inicio = this.converteData(valor[0]);
|
|
22
|
+
let fim = this.converteData(valor[1]);
|
|
23
|
+
return `data ge ${inicio} and data le ${fim}`;
|
|
24
|
+
}
|
|
25
|
+
converteCheckbox(campo, valor, tipo, label) {
|
|
26
|
+
let consulta = "";
|
|
27
|
+
let sequencia = 0;
|
|
28
|
+
var tamanho = valor.length;
|
|
29
|
+
let self = this;
|
|
30
|
+
valor.forEach(function (value) {
|
|
31
|
+
if (tipo == "campo") {
|
|
32
|
+
consulta += `${campo} eq ${value}`;
|
|
33
|
+
if (sequencia + 1 != tamanho) consulta += ` or `;
|
|
34
|
+
}
|
|
35
|
+
if (tipo == "resumo") {
|
|
36
|
+
let nome = self.converteNome(value);
|
|
37
|
+
consulta += `${campo} with ${value} as ${nome}${label}`;
|
|
38
|
+
if (sequencia + 1 != tamanho) consulta += `,`;
|
|
39
|
+
}
|
|
40
|
+
sequencia++;
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
if (tamanho > 1 && tipo == "campo") return `(${consulta})`;
|
|
44
|
+
return `${consulta}`;
|
|
45
|
+
}
|
|
46
|
+
converteData(data) {
|
|
47
|
+
let str = data.replace("/", "").replace("/", "");
|
|
48
|
+
|
|
49
|
+
let date = {
|
|
50
|
+
dia: str.substr(0, 2),
|
|
51
|
+
mes: str.substr(2, 2),
|
|
52
|
+
ano: str.substr(4, 4),
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
var iso = date.ano + "-" + date.mes + "-" + date.dia;
|
|
56
|
+
|
|
57
|
+
/*
|
|
58
|
+
iso += date.dia + "T";
|
|
59
|
+
iso += "00:00:00.000Z";
|
|
60
|
+
iso += d.getHours().toString().padStart(2, "0") + ":";
|
|
61
|
+
iso += d.getMinutes().toString().padStart(2, "0") + ":";
|
|
62
|
+
iso += d.getSeconds().toString().padStart(2, "0");
|
|
63
|
+
*/
|
|
64
|
+
|
|
65
|
+
return iso;
|
|
66
|
+
}
|
|
67
|
+
converteNome(value) {
|
|
68
|
+
if (value === "sum") return "soma";
|
|
69
|
+
if (value === "average") return "media";
|
|
70
|
+
if (value === "max") return "maximo";
|
|
71
|
+
if (value === "minimo") return "minimo";
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<BarraRolagem :alturaMinima="450" :alturaMaxima="600">
|
|
4
|
+
<QueryBuilder :rules="relatorio.filtro" v-model="filtroSelecionado" />
|
|
5
|
+
</BarraRolagem>
|
|
6
|
+
</div>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script>
|
|
10
|
+
import QueryBuilder from "./QueryBuilder.vue";
|
|
11
|
+
import BarraRolagem from "@nixweb/nixloc-ui/src/component/layout/BarraRolagem.vue";
|
|
12
|
+
|
|
13
|
+
import { mapMutations, mapState } from "vuex";
|
|
14
|
+
|
|
15
|
+
export default {
|
|
16
|
+
name: "Filtro",
|
|
17
|
+
components: { BarraRolagem, QueryBuilder },
|
|
18
|
+
computed: {
|
|
19
|
+
...mapState("relatorio", ["relatorio"]),
|
|
20
|
+
filtroSelecionado: {
|
|
21
|
+
get() {
|
|
22
|
+
return this.$store.state.relatorio.filtroSelecionado;
|
|
23
|
+
},
|
|
24
|
+
set(value) {
|
|
25
|
+
this.atualizaFiltroSelecionado(value);
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
methods: {
|
|
30
|
+
...mapMutations("relatorio", ["atualizaFiltroSelecionado"]),
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<style>
|
|
36
|
+
.btn-secondary {
|
|
37
|
+
background-color: #4ab4e2 !important;
|
|
38
|
+
border: 0px !important;
|
|
39
|
+
font-size: 14px !important;
|
|
40
|
+
border-radius: 20px !important;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.vue-query-builder .vqb-group.depth-1 .vqb-rule,
|
|
44
|
+
.vue-query-builder .vqb-group.depth-2 {
|
|
45
|
+
border-left: 2px solid #577696 !important;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.vue-query-builder .vqb-rule {
|
|
49
|
+
background-color: #fafafc !important;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.form-i nline label {
|
|
53
|
+
font-size: 14px !important;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.card-header {
|
|
57
|
+
padding: 5px !important;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.card {
|
|
61
|
+
padding: 10px !important;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.vqb-rule {
|
|
65
|
+
margin-bottom: 10px !important;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.rule-actions {
|
|
69
|
+
margin-bottom: 10px !important;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.mr-2 {
|
|
73
|
+
font-size: 14px !important;
|
|
74
|
+
margin-left: 10px !important;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.form-inline .form-control {
|
|
78
|
+
min-width: 200px !important;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
option {
|
|
82
|
+
font-size: 14px !important;
|
|
83
|
+
padding: 5px !important;
|
|
84
|
+
}
|
|
85
|
+
</style>
|