diff --git a/src/pages/09_task-order/document_view/MainPage.vue b/src/pages/09_task-order/document_view/MainPage.vue index 7e91b4a2..b3ae7ce5 100644 --- a/src/pages/09_task-order/document_view/MainPage.vue +++ b/src/pages/09_task-order/document_view/MainPage.vue @@ -28,6 +28,7 @@ const route = useRoute(); const taskOrder = useTaskOrderStore(); const configStore = useConfigStore(); const config = storeToRefs(configStore).data; +const viewType = ref<'docOrder' | 'docReceive'>('docOrder'); type Data = TaskOrder; @@ -106,6 +107,7 @@ const STORAGE_KEY = 'task-order-preview'; onMounted(async () => { if (route.params['id'] && typeof route.params['id'] === 'string') { + viewType.value = route.name as 'docOrder' | 'docReceive'; const jsonObject = await taskOrder.getTaskOrderById(route.params['id']); if (!jsonObject) return; @@ -133,7 +135,7 @@ onMounted(async () => { const taskListGroup = data.value?.taskList.reduce< { product: RequestWork['productService']['product']; - list: RequestWork[]; + list: (RequestWork & { _status: TaskStatus })[]; }[] >((acc, curr) => { if ( @@ -143,21 +145,25 @@ onMounted(async () => { return acc; } - const task = curr.requestWorkStep; + const step = curr.requestWorkStep; - if (!task) return acc; + if (!step) return acc; - if (task.requestWork) { + if (step.requestWork) { let exist = acc.find( - (item) => task.requestWork.productService.productId == item.product.id, + (item) => step.requestWork.productService.productId == item.product.id, ); + const requestWork = Object.assign(step.requestWork, { + _status: curr.taskStatus, + }); + if (exist) { - exist.list.push(task.requestWork); + exist.list.push(requestWork); } else { acc.push({ - product: task.requestWork.productService.product, - list: [task.requestWork], + product: step.requestWork.productService.product, + list: [requestWork], }); } } @@ -167,15 +173,23 @@ onMounted(async () => { product.value = []; summaryPrice.value = taskListGroup - .map((v) => ({ - product: v.product, - pricePerUnit: v.product.serviceCharge, - discount: - data.value?.taskProduct.find( - ({ productId }) => productId === v.product.id, - )?.discount || 0, - amount: v.list.length, - })) + .flatMap((v) => { + const list = v.list.filter( + (item) => item._status === TaskStatus.Complete, + ); + if (viewType.value === 'docReceive' && list.length === 0) { + return []; + } + return { + product: v.product, + pricePerUnit: v.product.serviceCharge, + discount: + data.value?.taskProduct.find( + ({ productId }) => productId === v.product.id, + )?.discount || 0, + amount: list.length, + }; + }) .reduce( (a, c) => { const priceNoVat = c.product.vatIncluded @@ -225,10 +239,17 @@ function print() {
-