feat: add function submit

This commit is contained in:
Methapon Metanipat 2024-10-03 14:57:14 +07:00
parent 9c34172422
commit 84f5a06874
2 changed files with 36 additions and 4 deletions

View file

@ -7,7 +7,7 @@ import { QuotationPayload, EmployeeWorker } from 'src/stores/quotations/types';
// NOTE: Import stores // NOTE: Import stores
import { useQuotationStore } from 'stores/quotations'; import { useQuotationStore } from 'stores/quotations';
const DEFAULT_DATA: QuotationPayload & { id?: string } = { const DEFAULT_DATA: QuotationPayload = {
productServiceList: [], productServiceList: [],
urgent: false, urgent: false,
customerBranchId: '', customerBranchId: '',
@ -32,7 +32,9 @@ export const useQuotationForm = defineStore('form-quotation', () => {
let resetFormData = structuredClone(DEFAULT_DATA); let resetFormData = structuredClone(DEFAULT_DATA);
const currentTreeData = ref(); const currentTreeData = ref();
const currentFormData = ref<QuotationPayload>(structuredClone(resetFormData)); const currentFormData = ref<QuotationPayload & { id?: string }>(
structuredClone(resetFormData),
);
const currentFormState = ref<{ const currentFormState = ref<{
mode: null | 'info' | 'create' | 'edit'; mode: null | 'info' | 'create' | 'edit';
}>({ }>({
@ -77,7 +79,17 @@ export const useQuotationForm = defineStore('form-quotation', () => {
currentFormState.value.mode = mode; currentFormState.value.mode = mode;
} }
function submitQuotation() { async function submitQuotation() {
if (currentFormState.value.mode === 'create') {
// await quotationStore.createQuotation();
}
if (currentFormState.value.mode === 'edit' && currentFormData.value.id) {
// await quotationStore.editQuotation({
// id: currentFormData.value.id,
// ...currentFormData.value,
// });
}
currentFormState.value.mode = 'info'; currentFormState.value.mode = 'info';
} }

View file

@ -41,7 +41,18 @@ export const useQuotationStore = defineStore('quotation-store', () => {
} }
async function createQuotation(payload: QuotationPayload) { async function createQuotation(payload: QuotationPayload) {
const res = await api.post('/quotation', payload); const res = await api.post('/quotation', {
...payload,
productServiceList: payload.productServiceList.map((v) => ({
vat: v.vat,
amount: v.amount,
pricePerUnit: v.pricePerUnit,
discount: v.discount,
productId: v.product.id,
workId: v.work?.id,
serviceId: v.service?.id,
})),
});
if (res.status < 400) { if (res.status < 400) {
return res.data; return res.data;
} }
@ -51,6 +62,15 @@ export const useQuotationStore = defineStore('quotation-store', () => {
async function editQuotation(payload: QuotationPayload & { id: string }) { async function editQuotation(payload: QuotationPayload & { id: string }) {
const res = await api.put(`/quotation/${payload.id}`, { const res = await api.put(`/quotation/${payload.id}`, {
...payload, ...payload,
productServiceList: payload.productServiceList.map((v) => ({
vat: v.vat,
amount: v.amount,
pricePerUnit: v.pricePerUnit,
discount: v.discount,
productId: v.product.id,
workId: v.work?.id,
serviceId: v.service?.id,
})),
id: undefined, id: undefined,
}); });
if (res.status < 400) { if (res.status < 400) {