refactor: detect unsave and confirmation of employee

This commit is contained in:
Net 2024-08-06 15:47:33 +07:00
parent 9f86229bd2
commit 1164748e1b
2 changed files with 48 additions and 0 deletions

View file

@ -408,6 +408,31 @@ async function editCustomerForm(id: string) {
customerFormState.value.editCustomerId = id;
}
function employeeConfirmUnsave(close = true) {
dialog({
color: 'warning',
icon: 'mdi-alert',
title: t('form.warning.title'),
actionText: t('ok'),
persistent: true,
message: t('form.warning.unsave'),
action: () => {
employeeFormStore.resetFormDataEmployee();
employeeFormState.value.editReadonly = true;
employeeFormState.value.dialogModal = !close;
},
cancel: () => {},
});
}
function employeeFormUndo(close = true) {
if (employeeFormStore.isFormDataDifferent()) {
return employeeConfirmUnsave(close);
}
employeeFormStore.resetFormDataEmployee();
employeeFormState.value.editReadonly = true;
}
function customerConfirmUnsave(close = true) {
dialog({
color: 'warning',
@ -1838,6 +1863,18 @@ function createEmployeeForm() {
<DialogForm
:title="$t('form.title.create', { name: 'Employee' })"
v-model:modal="employeeFormState.dialogModal"
:undo="() => employeeFormUndo(false)"
:before-close="
() => {
console.log('asd');
if (employeeFormStore.isFormDataDifferent()) {
employeeConfirmUnsave();
return true;
}
return false;
}
"
>
<div class="q-mx-lg q-mt-lg">
<ProfileBanner

View file

@ -243,6 +243,7 @@ export const useEmployeeForm = defineStore('form-employee', () => {
isEmployeeEdit: boolean;
profileSubmit: boolean;
formDataEmployeeSameAddr: boolean;
editReadonly: boolean;
infoEmployeePersonCard: {
id: string;
img: string;
@ -275,6 +276,7 @@ export const useEmployeeForm = defineStore('form-employee', () => {
isEmployeeEdit: false,
profileSubmit: false,
formDataEmployeeSameAddr: true,
editReadonly: false,
infoEmployeePersonCard: [],
formDataEmployeeOwner: undefined,
});
@ -367,6 +369,13 @@ export const useEmployeeForm = defineStore('form-employee', () => {
structuredClone(defaultFormData),
);
function isFormDataDifferent() {
return (
JSON.stringify(resetEmployeeData) !==
JSON.stringify(currentFromDataEmployee.value)
);
}
function resetFormDataEmployee(cb?: (...args: any[]) => unknown) {
currentFromDataEmployee.value = structuredClone(resetEmployeeData);
cb?.();
@ -452,5 +461,7 @@ export const useEmployeeForm = defineStore('form-employee', () => {
assignFormDataEmployee,
employeeFilterOwnerBranch,
isFormDataDifferent,
};
});