feat: refs #6321 clean ticket lack list
This commit is contained in:
parent
266c3d26ad
commit
21ea6a278d
|
@ -143,6 +143,7 @@ globals:
|
||||||
workCenters: Work centers
|
workCenters: Work centers
|
||||||
modes: Modes
|
modes: Modes
|
||||||
zones: Zones
|
zones: Zones
|
||||||
|
negative: Negative
|
||||||
zonesList: List
|
zonesList: List
|
||||||
deliveryDays: Delivery days
|
deliveryDays: Delivery days
|
||||||
upcomingDeliveries: Upcoming deliveries
|
upcomingDeliveries: Upcoming deliveries
|
||||||
|
@ -150,6 +151,7 @@ globals:
|
||||||
alias: Alias
|
alias: Alias
|
||||||
aliasUsers: Users
|
aliasUsers: Users
|
||||||
subRoles: Subroles
|
subRoles: Subroles
|
||||||
|
myAccount: Mi cuenta
|
||||||
inheritedRoles: Inherited Roles
|
inheritedRoles: Inherited Roles
|
||||||
customers: Customers
|
customers: Customers
|
||||||
list: List
|
list: List
|
||||||
|
|
|
@ -8,7 +8,6 @@ globals:
|
||||||
preview: Vista previa
|
preview: Vista previa
|
||||||
user: Usuario
|
user: Usuario
|
||||||
details: Detalles
|
details: Detalles
|
||||||
preview: Vista previa
|
|
||||||
collapseMenu: Contraer menú lateral
|
collapseMenu: Contraer menú lateral
|
||||||
advancedMenu: Menú avanzado
|
advancedMenu: Menú avanzado
|
||||||
backToDashboard: Volver al tablón
|
backToDashboard: Volver al tablón
|
||||||
|
|
|
@ -2,21 +2,21 @@
|
||||||
import { computed, ref, reactive } from 'vue';
|
import { computed, ref, reactive } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { useStateStore } from 'stores/useStateStore';
|
import { useStateStore } from 'stores/useStateStore';
|
||||||
import NegativeOriginDialog from 'pages/Ticket/Negative/components/NegativeOriginDialog.vue';
|
import VnTable from 'components/VnTable/VnTable.vue';
|
||||||
import { onBeforeMount } from 'vue';
|
import { onBeforeMount } from 'vue';
|
||||||
import { dashIfEmpty, toDate, toHour } from 'src/filters';
|
import { dashIfEmpty, toDate, toHour } from 'src/filters';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
import { useState } from 'src/composables/useState';
|
import { useState } from 'src/composables/useState';
|
||||||
import { useRole } from 'src/composables/useRole';
|
import { useRole } from 'src/composables/useRole';
|
||||||
import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue';
|
import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue';
|
||||||
|
import RightMenu from 'src/components/common/RightMenu.vue';
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
import VnImg from 'src/components/ui/VnImg.vue';
|
||||||
import TicketLackFilter from './TicketLackFilter.vue';
|
import TicketLackFilter from './TicketLackFilter.vue';
|
||||||
import { markRaw } from 'vue';
|
|
||||||
|
|
||||||
const stateStore = useStateStore();
|
const stateStore = useStateStore();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const selectedRows = ref([]);
|
const selectedRows = ref([]);
|
||||||
const showNegativeOriginDialog = ref(false);
|
|
||||||
|
|
||||||
const negativeParams = reactive({
|
const negativeParams = reactive({
|
||||||
days: useRole().likeAny('buyer') ? 2 : 0,
|
days: useRole().likeAny('buyer') ? 2 : 0,
|
||||||
|
@ -25,7 +25,6 @@ const negativeParams = reactive({
|
||||||
const redirectToCreateView = ({ itemFk }) => {
|
const redirectToCreateView = ({ itemFk }) => {
|
||||||
router.push({ name: 'NegativeDetail', params: { id: itemFk } });
|
router.push({ name: 'NegativeDetail', params: { id: itemFk } });
|
||||||
};
|
};
|
||||||
const originDialogRef = ref();
|
|
||||||
const columns = computed(() => [
|
const columns = computed(() => [
|
||||||
{
|
{
|
||||||
name: 'date',
|
name: 'date',
|
||||||
|
@ -145,25 +144,6 @@ onBeforeMount(() => {
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<VnSubToolbar class="bg-vn-dark justify-end">
|
|
||||||
<template #st-actions>
|
|
||||||
<QBtn
|
|
||||||
color="primary"
|
|
||||||
:disable="!selectedRows?.length"
|
|
||||||
@click="showNegativeOriginDialog = true"
|
|
||||||
:label="t('negative.negativeAction')"
|
|
||||||
>
|
|
||||||
<QPopupProxy ref="popupProxyRef" style="max-width: none">
|
|
||||||
<QCard>
|
|
||||||
<NegativeOriginDialog
|
|
||||||
ref="originDialogRef"
|
|
||||||
:selected-rows="selectedRows"
|
|
||||||
/> </QCard
|
|
||||||
></QPopupProxy>
|
|
||||||
<QTooltip>{{ t('negative.negativeAction') }}</QTooltip>
|
|
||||||
</QBtn>
|
|
||||||
</template>
|
|
||||||
</VnSubToolbar>
|
|
||||||
<RightMenu>
|
<RightMenu>
|
||||||
<template #right-panel>
|
<template #right-panel>
|
||||||
<TicketLackFilter data-key="NegativeList" />
|
<TicketLackFilter data-key="NegativeList" />
|
||||||
|
@ -222,7 +202,9 @@ onBeforeMount(() => {
|
||||||
}
|
}
|
||||||
|
|
||||||
.grid-style-transition {
|
.grid-style-transition {
|
||||||
transition: transform 0.28s, background-color 0.28s;
|
transition:
|
||||||
|
transform 0.28s,
|
||||||
|
background-color 0.28s;
|
||||||
}
|
}
|
||||||
|
|
||||||
#true {
|
#true {
|
||||||
|
|
|
@ -1,97 +0,0 @@
|
||||||
<script setup>
|
|
||||||
import { ref } from 'vue';
|
|
||||||
import { useI18n } from 'vue-i18n';
|
|
||||||
import axios from 'axios';
|
|
||||||
import { useDialogPluginComponent } from 'quasar';
|
|
||||||
|
|
||||||
const { t } = useI18n();
|
|
||||||
const showNegativeOriginDialog = ref(false);
|
|
||||||
const reason = ref(null);
|
|
||||||
const { dialogRef } = useDialogPluginComponent();
|
|
||||||
const $props = defineProps({
|
|
||||||
selectedRows: {
|
|
||||||
type: Array,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const update = async () => {
|
|
||||||
showNegativeOriginDialog.value = true;
|
|
||||||
const negativeOrigins = $props.selectedRows.map(({ itemFk, lack }) => ({
|
|
||||||
itemFk,
|
|
||||||
negativeType: reason.value,
|
|
||||||
lack,
|
|
||||||
}));
|
|
||||||
|
|
||||||
try {
|
|
||||||
await axios.post(`Tickets/itemLackOrigin`, negativeOrigins);
|
|
||||||
dialogRef.value.hide();
|
|
||||||
} catch (err) {
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<QCard class="q-pa-sm">
|
|
||||||
<QCardSection class="row items-center q-pb-none">
|
|
||||||
<QAvatar
|
|
||||||
:icon="icon"
|
|
||||||
color="primary"
|
|
||||||
text-color="white"
|
|
||||||
size="xl"
|
|
||||||
v-if="icon"
|
|
||||||
/>
|
|
||||||
<span class="text-h6 text-grey">{{ t('negative.modalOrigin.title') }}</span>
|
|
||||||
<QSpace />
|
|
||||||
<QBtn icon="close" flat round dense v-close-popup />
|
|
||||||
</QCardSection>
|
|
||||||
<QCardSection class="row items-center justify-center column items-stretch">
|
|
||||||
<span>{{ t('negative.modalOrigin.question') }}</span>
|
|
||||||
<QSelect
|
|
||||||
:label="t('globals.reason')"
|
|
||||||
v-model="reason"
|
|
||||||
:options="[
|
|
||||||
'FALTAS',
|
|
||||||
'CONTENEDOR',
|
|
||||||
'ENTRADAS',
|
|
||||||
'OVERBOOKING',
|
|
||||||
'SUSTITUCION',
|
|
||||||
]"
|
|
||||||
/>
|
|
||||||
</QCardSection>
|
|
||||||
<QCardActions align="right">
|
|
||||||
<QBtn :label="t('globals.cancel')" color="primary" flat v-close-popup />
|
|
||||||
<QBtn
|
|
||||||
:label="t('globals.confirm')"
|
|
||||||
color="primary"
|
|
||||||
:disable="!reason"
|
|
||||||
@click="update()"
|
|
||||||
unelevated
|
|
||||||
autofocus
|
|
||||||
/> </QCardActions
|
|
||||||
></QCard>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.list {
|
|
||||||
max-height: 100%;
|
|
||||||
padding: 15px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.grid-style-transition {
|
|
||||||
transition: transform 0.28s, background-color 0.28s;
|
|
||||||
}
|
|
||||||
|
|
||||||
#true {
|
|
||||||
background-color: $positive;
|
|
||||||
}
|
|
||||||
|
|
||||||
#false {
|
|
||||||
background-color: $negative;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.q-dialog__inner > div {
|
|
||||||
max-width: fit-content !important;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,116 +0,0 @@
|
||||||
<script setup>
|
|
||||||
import { computed, ref } from 'vue';
|
|
||||||
import { useI18n } from 'vue-i18n';
|
|
||||||
import VnPaginate from 'components/ui/VnPaginate.vue';
|
|
||||||
|
|
||||||
const { t } = useI18n();
|
|
||||||
const selectedRows = ref([]);
|
|
||||||
const showTotalNegativeOriginDialog = ref(false);
|
|
||||||
|
|
||||||
const columns = computed(() => [
|
|
||||||
{
|
|
||||||
name: 'id',
|
|
||||||
label: t('negative.id'),
|
|
||||||
field: ({ id }) => id,
|
|
||||||
sortable: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'itemFk',
|
|
||||||
label: t('negative.detail.itemFk'),
|
|
||||||
field: ({ itemFk }) => itemFk,
|
|
||||||
sortable: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'type',
|
|
||||||
label: t('negative.type'),
|
|
||||||
field: ({ type }) => type,
|
|
||||||
sortable: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'dated',
|
|
||||||
label: t('negative.detail.shipped'),
|
|
||||||
field: ({ dated }) => dated,
|
|
||||||
sortable: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'quantity',
|
|
||||||
label: t('negative.detail.quantity'),
|
|
||||||
field: ({ quantity }) => quantity,
|
|
||||||
sortable: true,
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<QDialog
|
|
||||||
ref="dialogRef"
|
|
||||||
@hide="onDialogHide"
|
|
||||||
v-model="showTotalNegativeOriginDialog"
|
|
||||||
full-width
|
|
||||||
>
|
|
||||||
<QCard class="q-pa-lg">
|
|
||||||
<QCardSection class="row items-center q-pb-none">
|
|
||||||
<span class="text-h6 text-grey">{{ t('negative.totalNegative') }}</span>
|
|
||||||
<QSpace />
|
|
||||||
<QBtn icon="close" flat round dense v-close-popup />
|
|
||||||
</QCardSection>
|
|
||||||
<QCardSection class="row items-center justify-center column items-stretch">
|
|
||||||
<VnPaginate
|
|
||||||
data-key="NegativeOriginList"
|
|
||||||
:url="`Tickets/negativeOrigin`"
|
|
||||||
auto-load
|
|
||||||
>
|
|
||||||
<template #body="{ rows }">
|
|
||||||
<QTable
|
|
||||||
:columns="columns"
|
|
||||||
:rows="rows"
|
|
||||||
:dense="$q.screen.lt.md"
|
|
||||||
flat
|
|
||||||
row-key="itemFk"
|
|
||||||
selection="multiple"
|
|
||||||
v-model:selected="selectedRows"
|
|
||||||
:grid="$q.screen.lt.md"
|
|
||||||
auto-load
|
|
||||||
:rows-per-page-options="[0]"
|
|
||||||
hide-pagination
|
|
||||||
:pagination="{ rowsPerPage: null }"
|
|
||||||
:no-data-label="t('globals.noResults')"
|
|
||||||
>
|
|
||||||
<template #top>
|
|
||||||
<div style="width: 100%; display: table">
|
|
||||||
<div style="float: right; color: lightgray">
|
|
||||||
{{ `${rows.length} ${t('globals.results')}` }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</QTable>
|
|
||||||
</template>
|
|
||||||
</VnPaginate>
|
|
||||||
</QCardSection>
|
|
||||||
</QCard>
|
|
||||||
</QDialog>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.list {
|
|
||||||
max-height: 100%;
|
|
||||||
padding: 15px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.grid-style-transition {
|
|
||||||
transition: transform 0.28s, background-color 0.28s;
|
|
||||||
}
|
|
||||||
|
|
||||||
#true {
|
|
||||||
background-color: $positive;
|
|
||||||
}
|
|
||||||
|
|
||||||
#false {
|
|
||||||
background-color: $negative;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.q-dialog__inner > div {
|
|
||||||
max-width: fit-content !important;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -5,13 +5,13 @@ describe('Ticket Lack list', () => {
|
||||||
cy.visit(`/#/ticket/negative`);
|
cy.visit(`/#/ticket/negative`);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Origin', () => {
|
|
||||||
it('check as origin reason', () => {});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Filters', () => {});
|
describe('Filters', () => {});
|
||||||
|
|
||||||
describe('Table actions', () => {
|
describe('Table actions', () => {
|
||||||
it('Open record', () => {});
|
it('Open record', () => {
|
||||||
|
cy.get('.q-virtual-scroll__content > :nth-child(1) > .sticky').click();
|
||||||
|
|
||||||
|
cy.location('href').should('contain', '#/ticket/negative/5');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue