You've already forked reloading-manager
happy monday _ bleh _ #9
@@ -67,7 +67,7 @@
|
|||||||
COL
|
COL
|
||||||
</div>
|
</div>
|
||||||
<div class="w-full mt-3">
|
<div class="w-full mt-3">
|
||||||
<InputMask placeholder="0.000" v-model="load.col" mask="9.999" class="w-full" />
|
<InputMask :unmask="loading" :value="load.col" placeholder="0.000" v-model="load.col" mask="9.999" class="w-full" />
|
||||||
<Message v-if="v$.$dirty && v$.col.$invalid" :value="false" size="small" severity="error"
|
<Message v-if="v$.$dirty && v$.col.$invalid" :value="false" size="small" severity="error"
|
||||||
variant="simple">COL Required
|
variant="simple">COL Required
|
||||||
</Message>
|
</Message>
|
||||||
@@ -75,15 +75,20 @@
|
|||||||
|
|
||||||
<div class="w-full mt-5">
|
<div class="w-full mt-5">
|
||||||
<label>Picture</label>
|
<label>Picture</label>
|
||||||
<Message v-if="v$.$dirty && !file" :value="false" size="small" severity="error"
|
<Message v-if="v$.$dirty && (!route.params.id && !file)" :value="false" size="small" severity="error"
|
||||||
variant="simple">Picture Required
|
variant="simple">Picture Required
|
||||||
</Message>
|
</Message>
|
||||||
|
<div class="w-1/2">
|
||||||
|
<img v-if="pictureUrl && route.params.id && !loading" :src="pictureUrl" alt="picture" />
|
||||||
|
</div>
|
||||||
<FileUpload v-model="file" mode="basic" @select="fileSelected" customUpload />
|
<FileUpload v-model="file" mode="basic" @select="fileSelected" customUpload />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<Button label="Add" :icon="icons.add" @click="add" />
|
<Button v-if="!route.params.id" label="Add" :icon="icons.add" @click="add" />
|
||||||
|
<Button v-else label="Save" :icon="icons.edit" @click="add" />
|
||||||
|
<Button class="ml-3" severity="danger" v-if="route.params.id" label="Delete" :icon="icons.delete" @click="deleteLoad" />
|
||||||
</template>
|
</template>
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
@@ -161,6 +166,12 @@ const fileSelected = (e: FileUploadSelectEvent) => {
|
|||||||
file.value = e.files[0]
|
file.value = e.files[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const pictureUrl = ref<string | null>(null)
|
||||||
|
const calcUrl = () => {
|
||||||
|
const cache = new Date().getMilliseconds()
|
||||||
|
pictureUrl.value = import.meta.env.VITE_API + `/load/${route.params.id}/photo?cache=${cache}`
|
||||||
|
}
|
||||||
|
|
||||||
const load = ref({
|
const load = ref({
|
||||||
bullet: '',
|
bullet: '',
|
||||||
cartridge: '',
|
cartridge: '',
|
||||||
@@ -243,7 +254,7 @@ const addCartridgeName = async () => {
|
|||||||
const add = async () => {
|
const add = async () => {
|
||||||
v$.value.$touch()
|
v$.value.$touch()
|
||||||
|
|
||||||
if (v$.value.$invalid || !file.value) {
|
if (v$.value.$invalid || (!route.params.id && !file.value)) {
|
||||||
toast.add({
|
toast.add({
|
||||||
severity: 'error',
|
severity: 'error',
|
||||||
summary: 'Error',
|
summary: 'Error',
|
||||||
@@ -254,6 +265,12 @@ const add = async () => {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let id = ""
|
||||||
|
|
||||||
|
if (route.params.id) {
|
||||||
|
id = "/" + route.params.id.toString()
|
||||||
|
}
|
||||||
|
|
||||||
const formData = new FormData()
|
const formData = new FormData()
|
||||||
formData.append('bullet_id', load.value.bullet)
|
formData.append('bullet_id', load.value.bullet)
|
||||||
formData.append('cartridge_id', load.value.cartridge)
|
formData.append('cartridge_id', load.value.cartridge)
|
||||||
@@ -261,22 +278,43 @@ const add = async () => {
|
|||||||
formData.append('powder_gr', load.value.powderGrs.toString())
|
formData.append('powder_gr', load.value.powderGrs.toString())
|
||||||
formData.append('primer_id', load.value.primer)
|
formData.append('primer_id', load.value.primer)
|
||||||
formData.append('col', load.value.col)
|
formData.append('col', load.value.col)
|
||||||
|
if (file.value) {
|
||||||
formData.append('photo', file.value)
|
formData.append('photo', file.value)
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await axios.post<any, Response<string>>(`${import.meta.env.VITE_API}/load`, formData, {
|
const response = await axios.post<any, Response<string>>(`${import.meta.env.VITE_API}/load${id}`, formData, {
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'multipart/form-data',
|
'Content-Type': 'multipart/form-data',
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const message = route.params.id ? 'Load updated' : 'Load added'
|
||||||
|
|
||||||
toast.add({
|
toast.add({
|
||||||
severity: 'success',
|
severity: 'success',
|
||||||
summary: 'Success',
|
summary: 'Success',
|
||||||
detail: 'Load added',
|
detail: message,
|
||||||
life: 3000,
|
life: 3000,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if (route.params.id) {
|
||||||
|
load.value = {
|
||||||
|
bullet: '',
|
||||||
|
cartridge: '',
|
||||||
|
powder: '',
|
||||||
|
powderGrs: 0,
|
||||||
|
primer: '',
|
||||||
|
col: '',
|
||||||
|
}
|
||||||
|
file.value = null
|
||||||
|
|
||||||
|
v$.value.$reset()
|
||||||
|
await fetchLoad()
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
await router.push(`/loads/edit/${response.data.payload}`)
|
await router.push(`/loads/edit/${response.data.payload}`)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
toast.add({
|
toast.add({
|
||||||
@@ -287,6 +325,31 @@ const add = async () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const deleteLoad = async () => {
|
||||||
|
if (!route.params.id) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await axios.delete(`${import.meta.env.VITE_API}/load/${route.params.id}`)
|
||||||
|
|
||||||
|
toast.add({
|
||||||
|
severity: 'success',
|
||||||
|
summary: 'Success',
|
||||||
|
detail: 'Load deleted',
|
||||||
|
life: 3000,
|
||||||
|
})
|
||||||
|
|
||||||
|
await router.push('/loads/search')
|
||||||
|
} catch (error) {
|
||||||
|
toast.add({
|
||||||
|
severity: 'error',
|
||||||
|
summary: 'Error',
|
||||||
|
detail: 'Error deleting load',
|
||||||
|
life: 3000,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const fetchLoad = async () => {
|
const fetchLoad = async () => {
|
||||||
if (!route.params.id) {
|
if (!route.params.id) {
|
||||||
@@ -302,6 +365,18 @@ const fetchLoad = async () => {
|
|||||||
load.value.powder = response.data.payload.powder.id
|
load.value.powder = response.data.payload.powder.id
|
||||||
load.value.powderGrs = response.data.payload.powder_gr
|
load.value.powderGrs = response.data.payload.powder_gr
|
||||||
load.value.primer = response.data.payload.primer.id
|
load.value.primer = response.data.payload.primer.id
|
||||||
|
load.value.col = response.data.payload.col.toString()
|
||||||
|
|
||||||
|
if (!load.value.col.includes('.')) {
|
||||||
|
load.value.col = `${load.value.col}.000`
|
||||||
|
} else {
|
||||||
|
const parts = load.value.col.split('.')
|
||||||
|
if (parts[1].length < 3) {
|
||||||
|
load.value.col = `${parts[0]}.${parts[1].padEnd(3, '0')}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
calcUrl()
|
||||||
} else {
|
} else {
|
||||||
toast.add({
|
toast.add({
|
||||||
severity: 'error',
|
severity: 'error',
|
||||||
@@ -324,7 +399,9 @@ onMounted(() => {
|
|||||||
fetchCartridges()
|
fetchCartridges()
|
||||||
|
|
||||||
if (route.params.id) {
|
if (route.params.id) {
|
||||||
|
setTimeout(() => {
|
||||||
fetchLoad()
|
fetchLoad()
|
||||||
|
}, 100)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user