Merge branch 'dev' into 6425-translationProposal
gitea/salix-front/pipeline/pr-dev This commit looks good Details

This commit is contained in:
Jon Elias 2024-04-12 12:21:41 +00:00
commit 5cd32ec2fe
2 changed files with 105 additions and 57 deletions

View File

@ -1,17 +1,17 @@
<template> <template>
<div id="row" class="q-gutter-md q-mb-md"> <div class="vn-row q-gutter-md q-mb-md">
<slot></slot> <slot></slot>
</div> </div>
</template> </template>
<style lang="scss" scopped> <style lang="scss" scopped>
#row { .vn-row {
display: flex; display: flex;
> * { > * {
flex: 1; flex: 1;
} }
} }
@media screen and (max-width: 800px) { @media screen and (max-width: 800px) {
#row { .vn-row {
flex-direction: column; flex-direction: column;
} }
} }

View File

@ -1,19 +1,19 @@
<script setup> <script setup>
import { ref, onMounted } from 'vue'; import { ref, computed, onMounted } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import FetchData from 'components/FetchData.vue'; import FetchData from 'components/FetchData.vue';
import CrudModel from 'components/CrudModel.vue'; import CrudModel from 'components/CrudModel.vue';
import VnRow from 'components/ui/VnRow.vue';
import VnInput from 'src/components/common/VnInput.vue'; import VnInput from 'src/components/common/VnInput.vue';
import VnSelectFilter from 'src/components/common/VnSelectFilter.vue'; import VnSelectFilter from 'src/components/common/VnSelectFilter.vue';
const route = useRoute(); const { params } = useRoute();
const { t } = useI18n(); const { t } = useI18n();
const entryObservationsRef = ref(null); const entryObservationsRef = ref(null);
const entryObservationsOptions = ref([]); const entryObservationsOptions = ref([]);
const selected = ref([]);
const sortEntryObservationOptions = (data) => { const sortEntryObservationOptions = (data) => {
entryObservationsOptions.value = [...data].sort((a, b) => entryObservationsOptions.value = [...data].sort((a, b) =>
@ -24,6 +24,29 @@ const sortEntryObservationOptions = (data) => {
onMounted(() => { onMounted(() => {
if (entryObservationsRef.value) entryObservationsRef.value.reload(); if (entryObservationsRef.value) entryObservationsRef.value.reload();
}); });
const columns = computed(() => [
{
name: 'observationType',
label: t('entry.notes.observationType'),
field: (row) => row.observationTypeFk,
sortable: true,
options: entryObservationsOptions.value,
required: true,
model: 'observationTypeFk',
optionValue: 'id',
optionLabel: 'description',
tabIndex: 1,
align: 'left',
},
{
name: 'description',
label: t('globals.description'),
field: (row) => row.description,
tabIndex: 2,
align: 'left',
},
]);
</script> </script>
<template> <template>
<FetchData <FetchData
@ -37,65 +60,90 @@ onMounted(() => {
model="EntryAccount" model="EntryAccount"
:filter="{ :filter="{
fields: ['id', 'entryFk', 'observationTypeFk', 'description'], fields: ['id', 'entryFk', 'observationTypeFk', 'description'],
where: { entryFk: route.params.id }, where: { entryFk: params.id },
}" }"
ref="entryObservationsRef" ref="entryObservationsRef"
:default-remove="false" :data-required="{ entryFk: params.id }"
:data-required="{ entryFk: route.params.id }" v-model:selected="selected"
> >
<template #body="{ rows, validate }"> <template #body="{ rows, validate }">
<QCard class="q-pa-md"> <QTable
<VnRow v-model:selected="selected"
v-for="(row, index) in rows" :columns="columns"
:key="index" :rows="rows"
class="row q-gutter-md q-mb-md" :pagination="{ rowsPerPage: 0 }"
row-key="$index"
selection="multiple"
hide-pagination
:grid="$q.screen.lt.md"
table-header-class="text-left"
> >
<template #body-cell-observationType="{ row, col }">
<QTd>
<VnSelectFilter <VnSelectFilter
:label="t('entry.notes.observationType')" v-model="row[col.model]"
v-model="row.observationTypeFk" :options="col.options"
:options="entryObservationsOptions" :option-value="col.optionValue"
:disable="!!row.id" :option-label="col.optionLabel"
option-label="description" :autofocus="col.tabIndex == 1"
option-value="id" input-debounce="0"
hide-selected hide-selected
:required="true"
/> />
</QTd>
</template>
<template #body-cell-description="{ row, col }">
<QTd>
<VnInput <VnInput
:label="t('globals.description')" :label="t('globals.description')"
v-model="row.description" v-model="row[col.name]"
:rules="validate('EntryObservation.description')" :rules="validate('EntryObservation.description')"
/> />
</QTd>
<div class="row justify-center items-center"> </template>
<QIcon <template #item="props">
name="delete" <div class="q-pa-xs col-xs-12 col-sm-6 grid-style-transition">
size="sm" <QCard bordered flat>
class="cursor-pointer" <QCardSection>
color="primary" <QCheckbox v-model="props.selected" dense />
@click="entryObservationsRef.remove([row])" </QCardSection>
> <QSeparator />
<QTooltip> <QList dense>
{{ t('Remove note') }} <QItem>
</QTooltip> <QItemSection>
</QIcon> <VnSelectFilter
</div> v-model="props.row.observationTypeFk"
</VnRow> :options="entryObservationsOptions"
<QIcon option-value="id"
name="add" option-label="description"
size="sm" input-debounce="0"
class="cursor-pointer" hide-selected
color="primary" :required="true"
@click="entryObservationsRef.insert()" />
> </QItemSection>
<QTooltip> </QItem>
{{ t('Add note') }} <QItem>
</QTooltip> <QItemSection>
</QIcon> <VnInput
:label="t('globals.description')"
v-model="props.row.description"
:rules="
validate('EntryObservation.description')
"
/>
</QItemSection>
</QItem>
</QList>
</QCard> </QCard>
</div>
</template>
</QTable>
</template> </template>
</CrudModel> </CrudModel>
<QPageSticky position="bottom-right" :offset="[25, 25]">
<QBtn fab color="primary" icon="add" @click="entryObservationsRef.insert()" />
</QPageSticky>
</template> </template>
<i18n> <i18n>
es: es:
Add note: Añadir nota Add note: Añadir nota