diff --git a/public/shop-add-image.png b/public/shop-add-image.png new file mode 100644 index 00000000..5fee166f Binary files /dev/null and b/public/shop-add-image.png differ diff --git a/src/components/04_product-service/PriceDataComponent.vue b/src/components/04_product-service/PriceDataComponent.vue new file mode 100644 index 00000000..8ebd4e4c --- /dev/null +++ b/src/components/04_product-service/PriceDataComponent.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/components/04_product-service/ฺBasicInfoProduct.vue b/src/components/04_product-service/ฺBasicInfoProduct.vue new file mode 100644 index 00000000..35b62717 --- /dev/null +++ b/src/components/04_product-service/ฺBasicInfoProduct.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/ProfileUpload.vue b/src/components/ProfileUpload.vue index 1f0aa0bf..b96234a7 100644 --- a/src/components/ProfileUpload.vue +++ b/src/components/ProfileUpload.vue @@ -5,6 +5,10 @@ const urlProfile = defineModel('urlProfile', { const profileSubmit = defineModel('profileSubmit'); const statusToggle = defineModel('statusToggle'); +defineProps<{ + isProduct?: boolean; +}>(); + defineEmits<{ (e: 'inputFile'): void; }>(); @@ -18,6 +22,11 @@ defineEmits<{ :src="urlProfile" style="object-fit: cover; width: 100%; height: 100%" /> + (''); const drawerInfo = ref(false); const isEdit = ref(false); const dialogInputForm = ref(false); +const dialogProduct = ref(false); +const statusToggle = ref(false); +const profileSubmit = ref(false); +const profileFile = ref(undefined); +const profileUrl = ref(''); const groupName = ref('งาน MOU'); const dialogProductServiceType = ref(false); @@ -83,6 +91,26 @@ const resultSearchType = ref<(Product & { productGroupId: string })[]>(); const currentStatus = ref('All'); +const inputFile = (() => { + const element = document.createElement('input'); + element.type = 'file'; + element.accept = 'image/*'; + + const reader = new FileReader(); + reader.addEventListener('load', () => { + if (typeof reader.result === 'string') profileUrl.value = reader.result; + }); + + element.addEventListener('change', () => { + profileFile.value = element.files?.[0]; + if (profileFile.value) { + reader.readAsDataURL(profileFile.value); + } + }); + + return element; +})(); + async function searchGroup() { const resultList = await fetchListProductService({ query: inputSearch.value, @@ -273,6 +301,35 @@ watch(currentStatus, async () => { } " > + +
@@ -734,6 +791,38 @@ watch(currentStatus, async () => { + + + + + + + + +