feat: preview route and trigger preview
This commit is contained in:
parent
b74ff126e3
commit
8f880fd34d
5 changed files with 24 additions and 4 deletions
|
|
@ -28,6 +28,7 @@ defineEmits<{
|
||||||
(e: 'delete'): void;
|
(e: 'delete'): void;
|
||||||
(e: 'changeStatus'): void;
|
(e: 'changeStatus'): void;
|
||||||
(e: 'example'): void;
|
(e: 'example'): void;
|
||||||
|
(e: 'preview'): void;
|
||||||
}>();
|
}>();
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
|
|
@ -121,6 +122,7 @@ defineEmits<{
|
||||||
outline
|
outline
|
||||||
color="primary"
|
color="primary"
|
||||||
class="rounded q-ml-auto"
|
class="rounded q-ml-auto"
|
||||||
|
@click="$emit('preview')"
|
||||||
padding="2px 8px"
|
padding="2px 8px"
|
||||||
>
|
>
|
||||||
<q-icon name="mdi-play-box-outline" size="xs" class="q-mr-xs" />
|
<q-icon name="mdi-play-box-outline" size="xs" class="q-mr-xs" />
|
||||||
|
|
|
||||||
|
|
@ -275,6 +275,17 @@ async function fetchQuotationList() {
|
||||||
}
|
}
|
||||||
|
|
||||||
watch(() => pageState.currentTab, fetchQuotationList);
|
watch(() => pageState.currentTab, fetchQuotationList);
|
||||||
|
|
||||||
|
async function storeDataLocal(id: string) {
|
||||||
|
await quotationFormStore.assignFormData(id, 'assign');
|
||||||
|
|
||||||
|
localStorage.setItem(
|
||||||
|
'quotation-preview',
|
||||||
|
JSON.stringify(quotationFormData.value),
|
||||||
|
);
|
||||||
|
|
||||||
|
window.open('/quotation/document-view', '_blank');
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
@ -538,6 +549,7 @@ watch(() => pageState.currentTab, fetchQuotationList);
|
||||||
: v.createdBy.firstName + ' ' + v.createdBy.lastName
|
: v.createdBy.firstName + ' ' + v.createdBy.lastName
|
||||||
"
|
"
|
||||||
:total-price="v.finalPrice"
|
:total-price="v.finalPrice"
|
||||||
|
@preview="storeDataLocal(v.id)"
|
||||||
@view="
|
@view="
|
||||||
() => {
|
() => {
|
||||||
triggerQuotationDialog({
|
triggerQuotationDialog({
|
||||||
|
|
|
||||||
|
|
@ -621,7 +621,7 @@ function storeDataLocal() {
|
||||||
JSON.stringify(quotationFormData.value),
|
JSON.stringify(quotationFormData.value),
|
||||||
);
|
);
|
||||||
|
|
||||||
window.open('/view', '_blank');
|
window.open('/quotation/document-view', '_blank');
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,10 @@ export const useQuotationForm = defineStore('form-quotation', () => {
|
||||||
currentFormData.value = structuredClone(resetFormData);
|
currentFormData.value = structuredClone(resetFormData);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function assignFormData(id: string, mode: 'info' | 'edit' = 'info') {
|
async function assignFormData(
|
||||||
|
id: string,
|
||||||
|
mode: 'info' | 'edit' | 'assign' = 'info',
|
||||||
|
) {
|
||||||
const data = await quotationStore.getQuotation(id);
|
const data = await quotationStore.getQuotation(id);
|
||||||
|
|
||||||
if (!data) return; // NOTE: Error should be handled globally by axios instance
|
if (!data) return; // NOTE: Error should be handled globally by axios instance
|
||||||
|
|
@ -127,6 +130,9 @@ export const useQuotationForm = defineStore('form-quotation', () => {
|
||||||
locale === 'eng'
|
locale === 'eng'
|
||||||
? data.createdBy.firstNameEN + ' ' + data.createdBy.lastNameEN
|
? data.createdBy.firstNameEN + ' ' + data.createdBy.lastNameEN
|
||||||
: data.createdBy.firstName + ' ' + data.createdBy.lastName;
|
: data.createdBy.firstName + ' ' + data.createdBy.lastName;
|
||||||
|
|
||||||
|
if (mode === 'assign') return;
|
||||||
|
|
||||||
currentFormState.value.mode = mode;
|
currentFormState.value.mode = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -93,8 +93,8 @@ const routes: RouteRecordRaw[] = [
|
||||||
component: () => import('pages/05_quotation/QuotationForm.vue'),
|
component: () => import('pages/05_quotation/QuotationForm.vue'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/view',
|
path: '/quotation/document-view',
|
||||||
name: 'view',
|
name: 'QuotationDocumentView',
|
||||||
component: () => import('pages/05_quotation/peview/ViewForm.vue'),
|
component: () => import('pages/05_quotation/peview/ViewForm.vue'),
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue