diff --git a/src/pages/04_product-service/MainPage.vue b/src/pages/04_product-service/MainPage.vue index fbd59be0..b7310c49 100644 --- a/src/pages/04_product-service/MainPage.vue +++ b/src/pages/04_product-service/MainPage.vue @@ -236,7 +236,7 @@ const productIsAdd = ref<(Product & { type: 'product' })[]>(); const modeViewIsAdd = ref(false); const service = ref<(Service & { type: 'service' })[]>(); -const resultSearchProduct = ref(); +const resultSearchProduct = ref([]); const productAndServiceTab = ref<'product' | 'service'>('service'); const manageWorkNameDialog = ref(false); @@ -518,6 +518,26 @@ const onCreateImageList = ref<{ list: { url: string; imgFile: File | null; name: string }[]; }>({ selectedImage: '', list: [] }); +const isSelectAll = computed(() => { + const tempProduct = !!inputSearchWorkProduct.value + ? resultSearchProduct.value + : productIsAdd.value; + + const activeProducts = tempProduct?.filter((i) => i.status !== 'INACTIVE'); + + if (!!inputSearchWorkProduct.value) { + return tempProduct?.length !== 0 + ? activeProducts?.every((activeProduct) => + selectProduct.value.some( + (product) => product.id === activeProduct.id, + ), + ) + : false; + } + + return selectProduct.value.length === activeProducts?.length; +}); + async function searchProduct(isAdd: boolean = true) { const res = await fetchListProduct({ query: inputSearchWorkProduct.value, @@ -542,6 +562,13 @@ async function searchProduct(isAdd: boolean = true) { flowStore.rotate(); } +function deleteSelectAllAtSearch() { + selectProduct.value = selectProduct.value.filter( + (product) => + !resultSearchProduct.value.some((result) => result.id === product.id), + ); +} + function selectAllProduct(list: Product[]) { list ?.filter((i) => { @@ -3402,43 +3429,13 @@ watch(