diff --git a/src/components/01_branch-management/FormBranchInformation.vue b/src/components/01_branch-management/FormBranchInformation.vue
index 5a90d3f7..a4041333 100644
--- a/src/components/01_branch-management/FormBranchInformation.vue
+++ b/src/components/01_branch-management/FormBranchInformation.vue
@@ -159,42 +159,6 @@ function formatCode(input: string | undefined, type: 'code' | 'number') {
]"
for="input-name-en"
/>
-
- (virtual = v === 'Virtual')"
- :rules="[(val) => val && val.length > 0]"
- :error-message="$t('form.error.required')"
- >
-
-
-
- {{ $t('general.noData') }}
-
-
-
-
diff --git a/src/components/02_personnel-management/FormByType.vue b/src/components/02_personnel-management/FormByType.vue
index ec3619a1..d1709858 100644
--- a/src/components/02_personnel-management/FormByType.vue
+++ b/src/components/02_personnel-management/FormByType.vue
@@ -262,7 +262,7 @@ function deleteFile(name: string) {
();
defineEmits<{
@@ -117,12 +118,16 @@ defineEmits<{
+import { ref } from 'vue';
+import { useI18n } from 'vue-i18n';
import SelectInput from '../shared/SelectInput.vue';
import useOptionStore from 'src/stores/options';
+import { Icon } from '@iconify/vue/dist/iconify.js';
+import { useInstitution } from 'src/stores/institution';
const optionStore = useOptionStore();
@@ -10,6 +14,11 @@ defineProps<{
readonly?: boolean;
onDrawer?: boolean;
}>();
+const emit = defineEmits<{
+ (e: 'deleteAttachment', name: string): void;
+}>();
+
+const attachmentRef = ref();
const group = defineModel('group', { default: '' });
const name = defineModel('name', { default: '' });
@@ -17,8 +26,19 @@ const nameEn = defineModel('nameEn', { default: '' });
const contactName = defineModel('contactName', { default: '' });
const email = defineModel('email', { default: '' });
const contactTel = defineModel('contactTel', { default: '' });
+const attachment = defineModel('attachment');
+const attachmentList =
+ defineModel<{ name: string; url: string }[]>('attachmentList');
type Options = { label: string; value: string };
+
+function openNewTab(url: string) {
+ window.open(url, '_blank');
+}
+
+function deleteAttachment(name: string) {
+ emit('deleteAttachment', name);
+}
@@ -162,6 +182,78 @@ type Options = { label: string; value: string };
/>
+
+
+
+
+
+
+
+
+ {{ file.file.name }}
+
+
+
+
+
+
+
+
+ openNewTab(item.url)"
+ >
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
diff --git a/src/components/form/AddressForm.vue b/src/components/form/AddressForm.vue
index cbdb0819..83440005 100644
--- a/src/components/form/AddressForm.vue
+++ b/src/components/form/AddressForm.vue
@@ -12,7 +12,7 @@ import { formatAddress } from 'src/utils/address';
import useOptionStore from 'stores/options';
const optionStore = useOptionStore();
-defineProps<{
+const props = defineProps<{
title?: string;
addressTitle?: string;
addressTitleEN?: string;
@@ -30,6 +30,7 @@ defineProps<{
useEmployment?: boolean;
useWorkPlace?: boolean;
+ useForeignAddress?: boolean;
}>();
const addressStore = useAddressStore();
@@ -57,6 +58,25 @@ const subDistrictId = defineModel('subDistrictId');
const zipCode = defineModel('zipCode');
const sameWithEmployer = defineModel('sameWithEmployer');
+const provinceTextEN = defineModel(
+ 'provinceTextEn',
+ {
+ default: '',
+ },
+);
+const districtTextEN = defineModel(
+ 'districtTextEn',
+ {
+ default: '',
+ },
+);
+const subDistrictTextEN = defineModel(
+ 'subDistrictTextEn',
+ {
+ default: '',
+ },
+);
+
const homeCode = defineModel('homeCode');
const employmentOffice = defineModel(
'employmentOffice',
@@ -64,6 +84,7 @@ const employmentOffice = defineModel(
const employmentOfficeEN = defineModel(
'employmentOfficeEn',
);
+const addressForeign = defineModel('addressForeign');
const addrOptions = reactive<{
provinceOps: Province[];
@@ -78,14 +99,18 @@ const addrOptions = reactive<{
const area = ref([]);
const fullAddress = computed(() => {
- const province = provinceOptions.value.find((v) => v.id === provinceId.value);
- const district = districtOptions.value.find((v) => v.id === districtId.value);
- const sDistrict = subDistrictOptions.value.find(
- (v) => v.id === subDistrictId.value,
- );
+ const province = addressForeign.value
+ ? { id: '1', name: provinceId.value }
+ : provinceOptions.value.find((v) => v.id === provinceId.value);
+ const district = addressForeign.value
+ ? { id: '1', name: districtId.value }
+ : districtOptions.value.find((v) => v.id === districtId.value);
+ const sDistrict = addressForeign.value
+ ? { id: '1', name: subDistrictId.value }
+ : subDistrictOptions.value.find((v) => v.id === subDistrictId.value);
- if (province && district && sDistrict) {
- const fullAddress = formatAddress({
+ if (province?.name && district?.name && sDistrict?.name) {
+ const fullAddressText = formatAddress({
address: address.value,
addressEN: addressEN.value,
moo: moo.value ? moo.value : '',
@@ -97,21 +122,26 @@ const fullAddress = computed(() => {
province: province as unknown as Province,
district: district as unknown as District,
subDistrict: sDistrict as unknown as SubDistrict,
+ zipCode: addressForeign.value ? zipCode.value || ' ' : undefined,
});
- return fullAddress;
+ return fullAddressText;
}
return '-';
});
const fullAddressEN = computed(() => {
- const province = provinceOptions.value.find((v) => v.id === provinceId.value);
- const district = districtOptions.value.find((v) => v.id === districtId.value);
- const sDistrict = subDistrictOptions.value.find(
- (v) => v.id === subDistrictId.value,
- );
+ const province = addressForeign.value
+ ? { nameEN: provinceTextEN.value }
+ : provinceOptions.value.find((v) => v.id === provinceId.value);
+ const district = addressForeign.value
+ ? { nameEN: districtTextEN.value }
+ : districtOptions.value.find((v) => v.id === districtId.value);
+ const sDistrict = addressForeign.value
+ ? { nameEN: subDistrictTextEN.value }
+ : subDistrictOptions.value.find((v) => v.id === subDistrictId.value);
- if (province && district && sDistrict) {
- const fullAddress = formatAddress({
+ if (province?.nameEN && district?.nameEN && sDistrict?.nameEN) {
+ const fullAddressText = formatAddress({
address: address.value,
addressEN: addressEN.value,
moo: moo.value ? moo.value : '',
@@ -124,8 +154,9 @@ const fullAddressEN = computed(() => {
district: district as unknown as District,
subDistrict: sDistrict as unknown as SubDistrict,
en: true,
+ zipCode: addressForeign.value ? zipCode.value || ' ' : undefined,
});
- return fullAddress;
+ return fullAddressText;
}
return '-';
});
@@ -149,7 +180,7 @@ async function fetchProvince() {
}
async function fetchDistrict() {
- if (!provinceId.value) return;
+ if (!provinceId.value || addressForeign.value) return;
const result = await addressStore.fetchDistrictByProvinceId(provinceId.value);
if (result) addrOptions.districtOps = result;
@@ -168,7 +199,7 @@ async function fetchDistrict() {
}
async function fetchSubDistrict() {
- if (!districtId.value) return;
+ if (!districtId.value || addressForeign.value) return;
const result = await addressStore.fetchSubDistrictByProvinceId(
districtId.value,
);
@@ -255,6 +286,16 @@ onMounted(async () => {
await fetchSubDistrict();
});
+function clearAddress() {
+ provinceId.value = null;
+ districtId.value = null;
+ subDistrictId.value = null;
+ provinceTextEN.value = null;
+ districtTextEN.value = null;
+ subDistrictTextEN.value = null;
+ zipCode.value = null;
+}
+
watch(provinceId, fetchDistrict);
watch(districtId, fetchSubDistrict);
@@ -313,6 +354,15 @@ watchEffect(async () => {
{{ $t('customerEmployee.form.addressCustom') }}
+
+
+
+ {{ $t('personnel.form.addressForeign') }}
+
@@ -449,7 +499,24 @@ watchEffect(async () => {
(v) => (typeof v === 'string' ? (street = v) : '')
"
/>
+
{
+
{
+
+
{
(zipCode = v.toString())"
+ :rules="
+ !addressForeign
+ ? []
+ : [(val) => (val && val.length > 0) || $t('form.error.required')]
"
/>
{
(v) => (typeof v === 'string' ? (streetEN = v) : '')
"
/>
+
{
+
+
{
+
+
{
(zipCode = v.toString())"
+ :rules="
+ !addressForeign
+ ? []
+ : [(val) => (val && val.length > 0) || $t('form.error.required')]
"
/>
- {{
- (lang ?? $i18n.locale) !== 'eng'
- ? opt.name + ' ' + opt.name
- : opt.nameEN + ' ' + opt.nameEN
- }}
+ {{ (lang ?? $i18n.locale) !== 'eng' ? opt.name : opt.nameEN }}
- {{
- (lang ?? $i18n.locale) !== 'eng'
- ? opt.name + ' ' + opt.name
- : opt.nameEN + ' ' + opt.nameEN
- }}
+ {{ (lang ?? $i18n.locale) !== 'eng' ? opt.name : opt.nameEN }}
diff --git a/src/components/shared/select/select.ts b/src/components/shared/select/select.ts
index 08fd88b2..cf1555cb 100644
--- a/src/components/shared/select/select.ts
+++ b/src/components/shared/select/select.ts
@@ -35,7 +35,13 @@ export const createSelect = >(
let previousSearch = '';
watch(value, (v) => {
- if (!v || (cache && cache.find((opt) => opt[valueField] === v))) return;
+ if (!v) return;
+
+ if (cache && cache.find((opt) => opt[valueField] === v)) {
+ valueOption.value = cache.find((opt) => opt[valueField] === v);
+ return;
+ }
+
getSelectedOption();
});
@@ -63,7 +69,15 @@ export const createSelect = >(
const currentValue = value.value;
if (!currentValue) return;
- if (selectOptions.value.find((v) => v[valueField] === currentValue)) return;
+
+ const option = selectOptions.value.find(
+ (v) => v[valueField] === currentValue,
+ );
+
+ if (option) {
+ valueOption.value = option;
+ return;
+ }
if (valueOption.value && valueOption.value[valueField] === currentValue) {
return selectOptions.value.unshift(valueOption.value);
}
diff --git a/src/i18n/eng.ts b/src/i18n/eng.ts
index d35ab235..39da457e 100644
--- a/src/i18n/eng.ts
+++ b/src/i18n/eng.ts
@@ -476,6 +476,7 @@ export default {
blacklist: 'Black list',
contactName: 'Contact Person',
contactTel: 'Contact Number',
+ addressForeign: 'Use foreign address',
},
},
customer: {
@@ -927,6 +928,7 @@ export default {
contactName: 'Contact Person',
contactTel: 'Contact Number',
bankInfo: 'Bank Information',
+ attachment: 'Attachment',
},
requestList: {
diff --git a/src/i18n/tha.ts b/src/i18n/tha.ts
index 57337ad1..0558bd78 100644
--- a/src/i18n/tha.ts
+++ b/src/i18n/tha.ts
@@ -472,6 +472,7 @@ export default {
blacklist: 'แบล็คลิสต์',
contactName: 'ชื่อผู้ติดต่อ',
contactTel: 'เบอร์โทรศัพท์ผู้ติดต่อ',
+ addressForeign: 'ใช้ที่อยู่ต่างประเทศ',
},
},
customer: {
@@ -798,7 +799,7 @@ export default {
branch: 'สาขาที่ออกใบเสนอราคา',
branchVirtual: 'จุดรับบริการที่ออกใบเสนอราคา',
customer: 'ลูกค้า',
- newCustomer: 'ลูกค้าใหม่',
+ newCustomer: 'แรงงานใหม่',
employeeList: 'รายชื่อแรงงาน',
employee: 'แรงงาน',
employeeName: 'ชื่อ-นามสกุล แรงงาน',
@@ -924,6 +925,7 @@ export default {
contactName: 'ชื่อผู้ติดต่อ',
contactTel: 'เบอร์โทรผู้ติดต่อ',
bankInfo: 'ข้อมูลธนาคาร',
+ attachment: 'เอกสารเพิ่มเติม',
},
requestList: {
diff --git a/src/pages/02_personnel-management/MainPage.vue b/src/pages/02_personnel-management/MainPage.vue
index cdfb0fb3..4c1676fc 100644
--- a/src/pages/02_personnel-management/MainPage.vue
+++ b/src/pages/02_personnel-management/MainPage.vue
@@ -157,6 +157,14 @@ const defaultFormData = {
contactTel: '',
remark: '',
agencyStatus: '',
+ addressForeign: false,
+ provinceText: null,
+ districtText: null,
+ subDistrictText: null,
+ provinceTextEN: null,
+ districtTextEN: null,
+ subDistrictTextEN: null,
+ zipCodeText: null,
};
const formData = ref({
@@ -209,6 +217,14 @@ const formData = ref({
contactTel: '',
remark: '',
agencyStatus: '',
+ addressForeign: false,
+ provinceText: null,
+ districtText: null,
+ subDistrictText: null,
+ provinceTextEN: null,
+ districtTextEN: null,
+ subDistrictTextEN: null,
+ zipCodeText: null,
});
const fieldSelectedOption = ref<{ label: string; value: string }[]>([
@@ -431,6 +447,28 @@ async function onSubmit(excludeDialog?: boolean) {
...formData.value,
checkpointEN: formData.value.checkpoint,
status: !statusToggle.value ? 'INACTIVE' : 'ACTIVE',
+ provinceId: formData.value.addressForeign
+ ? null
+ : formData.value.provinceId,
+ districtId: formData.value.addressForeign
+ ? null
+ : formData.value.districtId,
+ subDistrictId: formData.value.addressForeign
+ ? null
+ : formData.value.subDistrictId,
+
+ provinceText: formData.value.addressForeign
+ ? formData.value.provinceId
+ : null,
+ districtText: formData.value.addressForeign
+ ? formData.value.districtId
+ : null,
+ subDistrictText: formData.value.addressForeign
+ ? formData.value.subDistrictId
+ : null,
+ zipCodeText: formData.value.addressForeign
+ ? formData.value.zipCode
+ : null,
} as const;
await userStore.editById(currentUser.value.id, formDataEdit);
@@ -462,7 +500,31 @@ async function onSubmit(excludeDialog?: boolean) {
: '';
formData.value.checkpointEN = formData.value.checkpoint;
const result = await userStore.create(
- formData.value,
+ {
+ ...formData.value,
+ provinceId: formData.value.addressForeign
+ ? null
+ : formData.value.provinceId,
+ districtId: formData.value.addressForeign
+ ? null
+ : formData.value.districtId,
+ subDistrictId: formData.value.addressForeign
+ ? null
+ : formData.value.subDistrictId,
+
+ provinceText: formData.value.addressForeign
+ ? formData.value.provinceId
+ : null,
+ districtText: formData.value.addressForeign
+ ? formData.value.districtId
+ : null,
+ subDistrictText: formData.value.addressForeign
+ ? formData.value.subDistrictId
+ : null,
+ zipCodeText: formData.value.addressForeign
+ ? formData.value.zipCode
+ : null,
+ },
onCreateImageList.value,
);
@@ -560,12 +622,20 @@ async function assignFormData(idEdit: string) {
currentUser.value = foundUser;
formData.value = {
branchId: foundUser.branch[0]?.id,
- provinceId: foundUser.provinceId,
- districtId: foundUser.districtId,
- subDistrictId: foundUser.subDistrictId,
+ provinceId: foundUser.addressForeign
+ ? foundUser.provinceText
+ : foundUser.provinceId,
+ districtId: foundUser.addressForeign
+ ? foundUser.districtText
+ : foundUser.districtId,
+ subDistrictId: foundUser.addressForeign
+ ? foundUser.subDistrictText
+ : foundUser.subDistrictId,
telephoneNo: foundUser.telephoneNo,
email: foundUser.email,
- zipCode: foundUser.zipCode,
+ zipCode: foundUser.addressForeign
+ ? foundUser.zipCodeText
+ : foundUser.zipCode,
gender: foundUser.gender,
addressEN: foundUser.addressEN,
address: foundUser.address,
@@ -619,6 +689,10 @@ async function assignFormData(idEdit: string) {
(foundUser.citizenExpire && new Date(foundUser.citizenExpire)) || null,
remark: foundUser.remark || '',
agencyStatus: foundUser.agencyStatus || '',
+ addressForeign: foundUser.addressForeign || false,
+ provinceTextEN: foundUser.provinceTextEN,
+ districtTextEN: foundUser.districtTextEN,
+ subDistrictTextEN: foundUser.subDistrictTextEN,
};
formData.value.status === 'ACTIVE' || 'CREATED'
@@ -745,7 +819,17 @@ watch(
watch(
() => formData.value.userType,
- async () => {
+ async (type) => {
+ if (type !== 'AGENCY') {
+ formData.value.addressForeign = false;
+ formData.value.provinceId = null;
+ formData.value.districtId = null;
+ formData.value.subDistrictId = null;
+ formData.value.provinceTextEN = null;
+ formData.value.districtTextEN = null;
+ formData.value.subDistrictTextEN = null;
+ formData.value.zipCodeText = null;
+ }
if (!infoDrawerEdit.value) return;
formData.value.registrationNo = null;
formData.value.startDate = null;
@@ -1813,10 +1897,15 @@ watch(
v-model:district-id="formData.districtId"
v-model:sub-district-id="formData.subDistrictId"
v-model:zip-code="formData.zipCode"
+ v-model:address-foreign="formData.addressForeign"
+ v-model:province-text-en="formData.provinceTextEN"
+ v-model:district-text-en="formData.districtTextEN"
+ v-model:sub-district-text-en="formData.subDistrictTextEN"
:readonly="!infoDrawerEdit"
prefix-id="drawer-info-personnel"
:title="'personnel.form.addressInformation'"
dense
+ :use-foreign-address="formData.userType === 'AGENCY'"
class="q-mb-xl"
/>
{{
- props.row.branch[0].businessType[
- $i18n.locale === 'eng' ? 'nameEN' : 'name'
- ]
+ props.row.branch[0].businessType
+ ? props.row.branch[0].businessType[
+ $i18n.locale === 'eng' ? 'nameEN' : 'name'
+ ]
+ : '-'
}}
{{
- props.row.branch[0].businessType[
- $i18n.locale === 'eng' ? 'nameEN' : 'name'
- ]
+ props.row.branch[0].businessType
+ ? props.row.branch[0].businessType[
+ $i18n.locale === 'eng' ? 'nameEN' : 'name'
+ ]
+ : '-'
}}
diff --git a/src/pages/05_quotation/QuotationForm.vue b/src/pages/05_quotation/QuotationForm.vue
index 50e0afcc..41420441 100644
--- a/src/pages/05_quotation/QuotationForm.vue
+++ b/src/pages/05_quotation/QuotationForm.vue
@@ -2313,6 +2313,7 @@ function covertToNode() {
>
v.value === 'Full')
: payTypeOption
"
- :readonly
+ :readonly="readonly || debitNote"
id="pay-type"
:model-value="payType"
@update:model-value="
diff --git a/src/pages/05_quotation/QuotationFormProductSelect.vue b/src/pages/05_quotation/QuotationFormProductSelect.vue
index 39be19e7..b2e92761 100644
--- a/src/pages/05_quotation/QuotationFormProductSelect.vue
+++ b/src/pages/05_quotation/QuotationFormProductSelect.vue
@@ -51,6 +51,8 @@ const emit = defineEmits<{
const selectedProductGroup = defineModel('selectedProductGroup', {
default: '',
});
+
+const selectedProductGroupOption = ref();
const model = defineModel();
const inputSearch = defineModel('inputSearch');
const productGroup = defineModel('productGroup', {
@@ -569,14 +571,18 @@ watch(
{{
productGroup.find(
(g) => g.id === selectedProductGroup,
- )?.name || '-'
+ )?.name ||
+ selectedProductGroupOption?.name ||
+ '-'
}}
{{
productGroup.find(
(g) => g.id === selectedProductGroup,
- )?.code || '-'
+ )?.code ||
+ selectedProductGroupOption?.code ||
+ '-'
}}
@@ -862,13 +868,13 @@ watch(
{{ $t('productService.group.title') }}
-
{
employeeFormStore.resetFormDataEmployee(true);
+ setCurrentBranchId();
}
"
:before-close="
@@ -1035,6 +1040,7 @@ watch(
();
const data = defineModel('data', {
@@ -121,6 +122,9 @@ const formBankBook = defineModel('formBankBook', {
},
],
});
+const attachment = defineModel('attachment');
+const attachmentList =
+ defineModel<{ name: string; url: string }[]>('attachmentList');
function viewImage() {
imageState.imageDialog = true;
@@ -348,6 +352,7 @@ watch(
v-model:contact-name="data.contactName"
v-model:email="data.contactEmail"
v-model:contact-tel="data.contactTel"
+ v-model:attachment="attachment"
/>
$emit('deleteAttachment', name)"
/>
([]);
+const attachmentList = ref<{ name: string; url: string }[]>([]);
const statusFilter = ref<'all' | 'statusACTIVE' | 'statusINACTIVE'>('all');
const refAgenciesDialog = ref();
const formData = ref(structuredClone(blankFormData));
@@ -145,6 +147,8 @@ function resetForm() {
pageState.addModal = false;
pageState.viewDrawer = false;
currAgenciesData.value = undefined;
+ attachment.value = [];
+ attachmentList.value = [];
formData.value = structuredClone(blankFormData);
}
@@ -154,7 +158,7 @@ function undo() {
pageState.isDrawerEdit = false;
}
-function assignFormData(data: Institution) {
+async function assignFormData(data: Institution) {
currAgenciesData.value = data;
formData.value = {
group: data.group,
@@ -187,6 +191,8 @@ function assignFormData(data: Institution) {
bankUrl: `${baseUrl}/institution/${data.id}/bank-qr/${v.id}?ts=${Date.now()}`,
})),
};
+
+ await fetchAttachment();
}
async function submit(opt?: { selectedImage: string }) {
@@ -228,18 +234,29 @@ async function submit(opt?: { selectedImage: string }) {
);
if (ret) {
+ attachment.value.forEach(async (file) => {
+ await institutionStore.putAttachment({
+ parentId: ret.id || '',
+ name: file.name,
+ file: file,
+ });
+ });
pageState.isDrawerEdit = false;
currAgenciesData.value = ret;
formData.value.selectedImage = ret.selectedImage;
await fetchData($q.screen.xs);
+ attachment.value = [];
if (refAgenciesDialog.value && opt?.selectedImage) {
refAgenciesDialog.value.clearImageState();
}
+ setTimeout(async () => {
+ await fetchAttachment();
+ }, 300);
return;
}
} else {
- await institutionStore.createInstitution(
+ const res = await institutionStore.createInstitution(
{
...payload,
code: formData.value.group || '',
@@ -247,6 +264,16 @@ async function submit(opt?: { selectedImage: string }) {
imageListOnCreate.value,
);
+ if (!res) return;
+
+ attachment.value.forEach(async (file) => {
+ await institutionStore.putAttachment({
+ parentId: res.id || '',
+ name: file.name,
+ file: file,
+ });
+ });
+
await fetchData($q.screen.xs);
pageState.addModal = false;
return;
@@ -346,6 +373,49 @@ async function changeStatus(id?: string) {
}
}
+async function deleteAttachment(attachmentName: string) {
+ dialog({
+ color: 'negative',
+ icon: 'mdi-trash-can-outline',
+ title: t('dialog.title.confirmDelete', {
+ msg: t('personnel.form.attachment'),
+ }),
+ actionText: t('general.delete'),
+ persistent: true,
+ message: t('dialog.message.confirmDelete'),
+ action: async () => {
+ if (!currAgenciesData.value?.id) return;
+ institutionStore.delAttachment({
+ parentId: currAgenciesData.value?.id,
+ name: attachmentName,
+ });
+ setTimeout(async () => {
+ await fetchAttachment();
+ }, 300);
+ },
+ cancel: () => {},
+ });
+}
+
+async function fetchAttachment() {
+ const resAttachment = await institutionStore.listAttachment({
+ parentId: currAgenciesData.value.id,
+ });
+
+ if (!resAttachment) return;
+
+ attachmentList.value = await Promise.all(
+ resAttachment.map(async (f) => ({
+ name: f,
+ url: await institutionStore.getAttachment({
+ parentId: currAgenciesData.value.id,
+ name: f,
+ download: false,
+ }),
+ })),
+ );
+}
+
onMounted(async () => {
navigatorStore.current.title = 'agencies.title';
navigatorStore.current.path = [{ text: 'agencies.caption', i18n: true }];
@@ -976,6 +1046,7 @@ watch(
}
"
@change-status="triggerChangeStatus"
+ @delete-attachment="deleteAttachment"
:readonly="!pageState.isDrawerEdit"
:isEdit="pageState.isDrawerEdit"
:hide-action="!canAccess('agencies', 'edit')"
@@ -985,6 +1056,8 @@ watch(
v-model:form-bank-book="formData.bank"
v-model:image-list-on-create="imageListOnCreate"
v-model:deletes-status-qr-code-bank-imag="deletesStatusQrCodeBankImag"
+ v-model:attachment="attachment"
+ :attachment-list="attachmentList"
/>