From 985befd1aacce206d49925399aba85a51c50ea6e Mon Sep 17 00:00:00 2001
From: songshankun <songshankun@foxmail.com>
Date: 星期二, 28 十一月 2023 17:20:03 +0800
Subject: [PATCH] feat: 下发后重连plc
---
src/views/dashboard/components/TaskControl.vue | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 51 insertions(+), 9 deletions(-)
diff --git a/src/views/dashboard/components/TaskControl.vue b/src/views/dashboard/components/TaskControl.vue
index e8e60e1..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,10 +128,47 @@
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">
@@ -139,10 +180,12 @@
align-items: start;
width: 100%;
}
-.task-info,
-.produce-btn {
- width: 50%;
+.task-info {
flex: 1;
+ height: 100%;
+}
+.produce-btn {
+ flex-shrink: 0;
height: 100%;
}
.produce-btn {
@@ -157,7 +200,6 @@
.task-info-item {
padding: 10px 20px;
- margin-bottom: 6px;
}
.task-info-title {
font-size: 18px;
@@ -167,7 +209,7 @@
font-size: 19px;
color: $content-text-color;
font-weight: 600;
- margin-top: 12px;
+ margin-top: 4px;
}
.produce-btn {
display: flex;
--
Gitblit v1.8.0