diff --git a/src/components/common/VnInputDate.vue b/src/components/common/VnInputDate.vue index fe0866292..a2ad54eda 100644 --- a/src/components/common/VnInputDate.vue +++ b/src/components/common/VnInputDate.vue @@ -1,5 +1,6 @@ <script setup> import { computed, ref } from 'vue'; +import { useI18n } from 'vue-i18n'; import isValidDate from 'filters/isValidDate'; const props = defineProps({ @@ -24,6 +25,9 @@ const hover = ref(false); const emit = defineEmits(['update:modelValue']); +const { t } = useI18n(); +const requiredFieldRule = (val) => !!val || t('globals.fieldRequired'); + const joinDateAndTime = (date, time) => { if (!date) { return null; @@ -91,6 +95,8 @@ const styleAttrs = computed(() => { readonly :model-value="displayDate(value)" v-bind="{ ...$attrs, ...styleAttrs }" + :class="{ required: $attrs.required }" + :rules="$attrs.required ? [requiredFieldRule] : null" @click="isPopupOpen = true" > <template #append> diff --git a/src/components/common/VnInputTime.vue b/src/components/common/VnInputTime.vue index 4b436c136..5c84951cb 100644 --- a/src/components/common/VnInputTime.vue +++ b/src/components/common/VnInputTime.vue @@ -17,8 +17,9 @@ const props = defineProps({ default: false, }, }); -const { t } = useI18n(); const emit = defineEmits(['update:modelValue']); +const { t } = useI18n(); +const requiredFieldRule = (val) => !!val || t('globals.fieldRequired'); const value = computed({ get() { @@ -71,6 +72,8 @@ const styleAttrs = computed(() => { readonly :model-value="formatTime(value)" v-bind="{ ...$attrs, ...styleAttrs }" + :class="{ required: $attrs.required }" + :rules="$attrs.required ? [requiredFieldRule] : null" @click="isPopupOpen = true" > <template #append> diff --git a/src/pages/Ticket/Card/BasicData/TicketBasicDataForm.vue b/src/pages/Ticket/Card/BasicData/TicketBasicDataForm.vue index 678cbdf30..f7e5f6836 100644 --- a/src/pages/Ticket/Card/BasicData/TicketBasicDataForm.vue +++ b/src/pages/Ticket/Card/BasicData/TicketBasicDataForm.vue @@ -396,7 +396,11 @@ onMounted(() => onFormModelInit()); </QIcon> </template> </VnSelect> - <VnInput :label="t('basicData.alias')" v-model="_formData.nickname" /> + <VnInput + :label="t('basicData.alias')" + v-model="_formData.nickname" + :required="true" + /> </VnRow> <VnRow class="row q-gutter-md q-mb-md no-wrap"> <VnSelect @@ -417,7 +421,6 @@ onMounted(() => onFormModelInit()); :options="agenciesOptions" hide-selected map-options - :required="true" @focus="agencyFetchRef.fetch()" /> <VnSelect @@ -453,6 +456,7 @@ onMounted(() => onFormModelInit()); <VnInputTime :label="t('basicData.shippedHour')" v-model="_formData.shipped" + :required="true" /> <VnInputDate :label="t('basicData.landed')"