From c06965849f7f85fac75746845004647b629c47fb Mon Sep 17 00:00:00 2001
From: songshankun <songshankun@foxmail.com>
Date: 星期一, 27 十一月 2023 14:42:55 +0800
Subject: [PATCH] feat: 报工列表弹窗/对接上报接口/报工弹窗回显

---
 src/views/dashboard/components/TaskControl.vue |   49 +++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 45 insertions(+), 4 deletions(-)

diff --git a/src/views/dashboard/components/TaskControl.vue b/src/views/dashboard/components/TaskControl.vue
index 03c17b4..755a2d9 100644
--- a/src/views/dashboard/components/TaskControl.vue
+++ b/src/views/dashboard/components/TaskControl.vue
@@ -47,25 +47,29 @@
   <TaskControlModal v-model="showTaskControlModal" :task="task" @produce-start="onProduceStart"></TaskControlModal>
   <ReportProductionModal
     v-model="showReportModal"
+    :amount="plcInfo?.finishNumber ?? 0"
     @close="showReportModal = false"
-    @submit="showReportModal = false"
+    @submit="onReportProduction"
   ></ReportProductionModal>
 </template>
 <script setup lang="ts">
-import type { Task } from '@/api/task'
+import type { Task, Worker } from '@/api/task'
 import { ref, toRefs } 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 { finishTask } from '@/api'
+import { apiReportWork, finishTask } from '@/api'
 import { ElMessage } from 'element-plus'
 import ReportProductionModal from '@/views/dashboard/components/ReportProductionModal.vue'
+import { usePLCStore } from '@/stores/plc'
+import { storeToRefs } from 'pinia'
 
 const props = defineProps<{
   task?: Task
+  workers: Worker[]
 }>()
-const { task } = toRefs(props)
+const { task, workers } = toRefs(props)
 
 const emit = defineEmits<{
   shouldReload: [task: Task]
@@ -124,11 +128,48 @@
   const time = useDateFormat(timestamp * 1000, 'YYYY-MM-DD HH:mm:ss', { locales: 'zh-cn' })
   return time.value
 }
+
+const plcStore = usePLCStore()
+const { plcInfo } = storeToRefs(plcStore)
 // 鎶ュ伐
 const showReportModal = ref(false)
 function openReportModal() {
   showReportModal.value = true
 }
+
+/**
+ * 涓婃姤鍔犲伐鏁�
+ * @param amount 鍔犲伐鏁�
+ */
+function onReportProduction(amount: number) {
+  if (!task?.value) {
+    return
+  }
+  apiReportWork({
+    procedureId: task.value?.Procedure.ID,
+    reportAmount: amount,
+    workerID: workers.value[0].workerId
+  })
+    .then((res) => {
+      if (res.code === 200) {
+        ElMessage({
+          message: '鎶ュ伐鎴愬姛',
+          type: 'success',
+          duration: 2000
+        })
+        showReportModal.value = false
+      } else {
+        ElMessage({
+          message: '鎶ュ伐澶辫触',
+          type: 'error',
+          duration: 3000
+        })
+      }
+    })
+    .catch((err) => {
+      console.error(err)
+    })
+}
 </script>
 <style scoped lang="scss">
 $title-text-color: #9599af;

--
Gitblit v1.8.0