feat: refs #7119 add VehicleBasicData
gitea/salix-front/pipeline/pr-dev This commit looks good Details

This commit is contained in:
Jorge Penadés 2024-12-27 12:21:21 +01:00
parent 3807e74fe4
commit 062c306cf4
3 changed files with 98 additions and 12 deletions

View File

@ -107,7 +107,7 @@ const isLoading = ref(false);
const isResetting = ref(false); const isResetting = ref(false);
const hasChanges = ref(!$props.observeFormChanges); const hasChanges = ref(!$props.observeFormChanges);
const originalData = ref({}); const originalData = ref({});
const formData = computed(() => state.get(modelValue)); const formData = computed(() => getValue(state.get(modelValue)));
const defaultButtons = computed(() => ({ const defaultButtons = computed(() => ({
save: { save: {
dataCy: 'saveDefaultBtn', dataCy: 'saveDefaultBtn',
@ -193,7 +193,7 @@ async function fetch() {
let { data } = await axios.get($props.url, { let { data } = await axios.get($props.url, {
params: { filter: JSON.stringify($props.filter) }, params: { filter: JSON.stringify($props.filter) },
}); });
if (Array.isArray(data)) data = data[0] ?? {}; data = getValue(data);
updateAndEmit('onFetch', data); updateAndEmit('onFetch', data);
} catch (e) { } catch (e) {
@ -274,6 +274,10 @@ function trimData(data) {
return data; return data;
} }
function getValue(data) {
return Array.isArray(data) ? data[0] : data ?? {};
}
defineExpose({ defineExpose({
save, save,
isLoading, isLoading,

View File

@ -0,0 +1,81 @@
<script setup>
import { ref } from 'vue';
import FormModel from 'components/FormModel.vue';
import FetchData from 'src/components/FetchData.vue';
import VnSelect from 'src/components/common/VnSelect.vue';
import VnRow from 'components/ui/VnRow.vue';
import VnInput from 'src/components/common/VnInput.vue';
const warehouses = ref([]);
const companies = ref([]);
const countries = ref([]);
</script>
<template>
<FetchData
url="Warehouses"
:filter="{ fields: ['id', 'name'] }"
@on-fetch="(data) => (warehouses = data)"
auto-load
/>
<FetchData
url="Companies"
:filter="{ fields: ['id', 'code'] }"
@on-fetch="(data) => (companies = data)"
auto-load
/>
<FetchData
url="Countries"
:filter="{ fields: ['code'] }"
@on-fetch="(data) => (countries = data)"
auto-load
/>
<FormModel
model="Vehicle"
:url-update="`Vehicles/${$route.params.id}`"
v-if="isLoaded"
>
<template #form="{ data }">
<VnRow>
<VnInput v-model="data.numberPlate" :label="$t('vehicle.numberPlate')" />
<VnInput v-model="data.description" :label="$t('globals.description')" />
</VnRow>
<VnRow>
<VnInput v-model="data.tradeMark" :label="$t('vehicle.tradeMark')" />
<VnSelect
v-model="data.companyFk"
:label="$t('globals.company')"
:options="companies"
option-label="code"
/>
</VnRow>
<VnRow>
<VnInput v-model="data.chassis" :label="$t('vehicle.chassis')" />
<VnInput v-model="data.leasing" :label="$t('vehicle.leasing')" />
</VnRow>
<VnRow>
<VnSelect
v-model="data.warehouseFk"
:label="$t('globals.warehouse')"
:options="warehouses"
/>
<VnSelect
v-model="data.countryFk"
:label="$t('globals.country')"
:options="countries"
option-label="code"
/>
</VnRow>
<VnRow>
<span>
<QCheckbox
v-model="data.isKmTruckRate"
:label="$t('vehicle.isKmTruckRate')"
:false-value="0"
:true-value="1"
padding="0"
/>
</span>
</VnRow>
</template>
</FormModel>
</template>

View File

@ -12,7 +12,7 @@ export default {
redirect: { name: 'VehicleCard' }, redirect: { name: 'VehicleCard' },
menus: { menus: {
main: [], main: [],
card: ['VehicleBasicData', 'VehicleLog'], card: ['VehicleBasicData'],
}, },
children: [ children: [
{ {
@ -31,15 +31,16 @@ export default {
component: () => component: () =>
import('src/pages/Route/Vehicle/Card/VehicleSummary.vue'), import('src/pages/Route/Vehicle/Card/VehicleSummary.vue'),
}, },
// { {
// name: 'VehicleBasicData', name: 'VehicleBasicData',
// path: 'basic-data', path: 'basic-data',
// meta: { meta: {
// title: 'basicData', title: 'basicData',
// icon: 'vn:settings', icon: 'vn:settings',
// }, },
// component: () => import('pages/Route/Vehicle/Card/VehicleBasicData.vue'), component: () =>
// }, import('pages/Route/Vehicle/Card/VehicleBasicData.vue'),
},
], ],
}, },
], ],