From b95cf940af8e01e4eca30b2599b029c2f645bd1e Mon Sep 17 00:00:00 2001 From: charles <981744753@qq.com> Date: 星期一, 29 四月 2024 10:44:26 +0800 Subject: [PATCH] feat:创建新分支 --- src/views/dashboard/components/TaskControl.vue | 160 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 152 insertions(+), 8 deletions(-) diff --git a/src/views/dashboard/components/TaskControl.vue b/src/views/dashboard/components/TaskControl.vue index ea82cb1..b44dfea 100644 --- a/src/views/dashboard/components/TaskControl.vue +++ b/src/views/dashboard/components/TaskControl.vue @@ -22,7 +22,20 @@ </BigButton> <template v-if="task?.Procedure.Status === 2 || task?.Procedure.Status === 3"> <BigButton class="btn" bg-color="#ff9933" :disabled="task?.Procedure.Status === 3">鎵撳嵃</BigButton> - <BigButton class="btn" bg-color="#00cc33" :disabled="task?.Procedure.Status === 3" @click="openReportModal"> + <BigButton + v-if="task?.ShowCheck" + class="btn" + bg-color="#00cc33" + :disabled="task?.Procedure.Status === 3" + @click="openQualityModal" + >璐ㄦ</BigButton + > + <BigButton + class="btn" + :bg-color="task?.ShowCheck ? '#0066ff' : '#00cc33'" + :disabled="task?.Procedure.Status === 3" + @click="openReportModal" + > 鎶ュ伐 </BigButton> <el-popconfirm @@ -33,7 +46,7 @@ icon-color="red" :hide-after="0" :teleported="false" - title="璇风‘璁ゆ槸鍚﹀凡瀹屾垚姝ょ敓浜т换鍔�?" + :title="Number(processingPercent) < 100 ? '杩涘害鏈畬鎴愶紝鏄惁鎻愬墠瀹屾垚浠诲姟锛�' : '璇风‘璁ゆ槸鍚﹀凡瀹屾垚姝ょ敓浜т换鍔�?'" placement="top" @confirm="finishTaskProduce" > @@ -47,21 +60,33 @@ <TaskControlModal v-model="showTaskControlModal" :task="task" @produce-start="onProduceStart"></TaskControlModal> <ReportProductionModal v-model="showReportModal" + :model-title="modelTitle" :amount="plcInfo?.finishNumber ?? 0" @close="showReportModal = false" @submit="onReportProduction" ></ReportProductionModal> + <ReportProductionModal1 + v-model="showReportModal1" + :model-title="modelTitle" + :amount="plcInfo?.finishNumber ?? 0" + :pass-amount="passAmount" + :rework-amount="reworkAmount" + :scrapped-amount="scrappedAmount" + @close="showReportModal1 = false" + @submit="onReportCheck" + ></ReportProductionModal1> </template> <script setup lang="ts"> import type { Task, Worker } from '@/api/task' -import { ref, toRefs } from 'vue' +import { ref, toRefs, computed } from 'vue' import BigButton from '@/views/dashboard/components/BigButton.vue' import { useDateFormat } from '@vueuse/core' import TaskControlModal from '@/views/dashboard/components/TaskControlModal.vue' import { CircleCloseFilled } from '@element-plus/icons-vue' -import { apiReportWork, procedureUpdate } from '@/api' +import { apiReportWork, procedureUpdate, bulletinReport, bulletinQualityInspection, getQualityInspection } from '@/api' import { ElMessage } from 'element-plus' import ReportProductionModal from '@/views/dashboard/components/ReportProductionModal.vue' +import ReportProductionModal1 from '@/views/dashboard/components/ReportProductionModal1.vue' import { usePLCStore } from '@/stores/plc' import { storeToRefs } from 'pinia' @@ -76,6 +101,10 @@ }>() const showTaskControlModal = ref(false) +const modelTitle = ref('') +const passAmount = ref(0) +const reworkAmount = ref(0) +const scrappedAmount = ref(0) /** * 寮�濮嬬敓浜� @@ -108,7 +137,7 @@ isProcessing: false, workOrderProcedureID: Number(task!.value.Procedure.ID) }).then( - (res) => { + (res: any) => { ElMessage({ message: '鎿嶄綔鎴愬姛锛�', type: 'success' @@ -151,6 +180,10 @@ const { plcInfo } = storeToRefs(plcStore) // 鎶ュ伐 const showReportModal = ref(false) +// 鎶ュ伐 +const showReportModal1 = ref(false) +const reprotIds = ref([]) +const passCount = ref(0) function openReportModal() { // 鏈変汉鍛樻墠鍙互鎶ュ伐 if (!workers.value || workers.value.length == 0) { @@ -179,6 +212,39 @@ } if (workers.value[0].workerId) { + modelTitle.value = '鐢熶骇鎶ュ伐' + if (task?.value?.ShowCheck) { + getQualityInspection({ + procedureId: task.value?.Procedure?.procedure.procedureId, + workOrderId: task.value?.Order.workOrderId + }).then((res: any) => { + console.log(res, '999999') + passAmount.value = res.data.passAmount + passCount.value = res.data.passAmount + reworkAmount.value = res.data.reworkAmount + scrappedAmount.value = res.data.scrappedAmount + reprotIds.value = res.data.ids || [] + showReportModal1.value = true + }) + } else { + showReportModal.value = true + } + } +} + +// 璐ㄦ +function openQualityModal() { + // 鏈変汉鍛樻墠鍙互鎶ュ伐 + if (!workers.value || workers.value.length == 0) { + ElMessage({ + message: '娌℃湁浜哄憳淇℃伅涓嶅厑璁歌川妫�锛�', + type: 'error', + duration: 3000 + }) + return true + } + if (workers.value[0].workerId) { + modelTitle.value = '鎻愪氦璐ㄦ' showReportModal.value = true } } @@ -193,20 +259,60 @@ } // 鏈変汉鍛樻墠鍙互鎶ュ伐 if (workers.value[0].workerId) { - apiReportWork({ + let requestUrl = task?.value.ShowCheck ? bulletinQualityInspection : apiReportWork + let tipStr = task?.value.ShowCheck ? '璐ㄦ' : '鎶ュ伐' + requestUrl({ workOrderProcedureID: Number(task.value?.Procedure.ID), reportAmount: amount, workerID: workers.value[0].workerId, workerName: workers.value[0].workerName }) - .then((res) => { + .then((res: any) => { + if (res.code === 200) { + ElMessage({ + message: `${tipStr}鎴愬姛`, + type: 'success', + duration: 2000 + }) + showReportModal.value = false + } else { + ElMessage({ + message: `${tipStr}澶辫触`, + type: 'error', + duration: 3000 + }) + } + }) + .catch((err) => { + console.error(err) + }) + } +} +/** + * 璐ㄦ鍚庣殑涓婃姤鍔犲伐鏁� + * @param amount 鍔犲伐鏁� + */ +function onReportCheck(amount: number) { + if (!task?.value) { + return + } + // 鏈変汉鍛樻墠鍙互鎶ュ伐 + if (workers.value[0].workerId) { + bulletinReport({ + workOrderProcedureID: Number(task.value?.Procedure.ID), + reportAmount: passCount.value, + workerID: workers.value[0].workerId, + workerName: workers.value[0].workerName, + ids: reprotIds.value + }) + .then((res: any) => { if (res.code === 200) { ElMessage({ message: '鎶ュ伐鎴愬姛', type: 'success', duration: 2000 }) - showReportModal.value = false + showReportModal1.value = false } else { ElMessage({ message: '鎶ュ伐澶辫触', @@ -220,6 +326,44 @@ }) } } +export interface Statistics { + totalNumber: number + finishNumber: number +} +/** + * 璁$畻鐢熶骇杩涘害 + * @param statistics + * @return 杩涘害,0~100 + */ +function calculateProgress(statistics: Statistics): number { + if (!statistics) { + return 0 + } + + if (statistics.finishNumber === 0) { + return 0 + } + if (statistics.finishNumber === statistics.totalNumber) { + return 100 + } + + const result = Math.floor((statistics.finishNumber / statistics.totalNumber) * 100) + return result > 100 ? 100 : result +} +const processingPercent = computed(() => { + // if (task?.value?.Procedure?.Status === 1) { + // return 0 + // } + + if (task?.value?.Procedure?.Status === 3) { + return 100 + } + // if (task?.value?.Procedure?.Status === 2 || task?.value?.Procedure?.Status === 1) { + // return calculateProgress(plcStore.plcInfo as Statistics) + // } + + return calculateProgress(plcStore.plcInfo as Statistics) +}) </script> <style scoped lang="scss"> $title-text-color: #9599af; -- Gitblit v1.8.0