diff --git a/src/pages/08_request-list/RequestListView.vue b/src/pages/08_request-list/RequestListView.vue index 6bc22d10..a13e543a 100644 --- a/src/pages/08_request-list/RequestListView.vue +++ b/src/pages/08_request-list/RequestListView.vue @@ -36,6 +36,7 @@ import { PropOptions, PropString, } from 'src/stores/product-service/types'; +import { computed, nextTick } from 'vue'; const { locale } = useI18n(); @@ -173,6 +174,11 @@ async function triggerChangeStatusWork(step: Step) { res.workStatus; } } + await nextTick(); + + if (successAll.value) { + await requestListStore.editStatusRequestWork(step, !!successAll.value); + } } async function triggerChangeStatusFile(opt: { @@ -247,6 +253,27 @@ async function triggerViewFile(opt: { if (!opt.download) window.open(url, '_blank'); } + +const successAll = computed(() => { + return !!flow.value?.step.every((_, i) => { + return workList.value + ?.filter((v) => { + return v.productService.work?.attributes.workflowStep?.[ + i + ]?.productsId.includes(v.productService.productId); + }) + .every((v) => { + const status = v.stepStatus.find( + ({ step }) => step === i + 1, + )?.workStatus; + + return ( + status === RequestWorkStatus.Completed || + status === RequestWorkStatus.Ended + ); + }); + }); +});