| | |
| | | <!-- 上片机 --> |
| | | <script setup> |
| | | import request from "@/utils/request"; |
| | | import { ElMessage, ElMessageBox } from "element-plus"; |
| | | import { computed, reactive, ref, onMounted, onBeforeUnmount, onUnmounted } from 'vue' |
| | | import { useI18n } from 'vue-i18n' |
| | | import { WebSocketHost, host } from '@/utils/constants' |
| | | import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import {computed, reactive, ref, onMounted, onBeforeUnmount, onUnmounted} from 'vue' |
| | | import {useI18n} from 'vue-i18n' |
| | | import {WebSocketHost, host} from '@/utils/constants' |
| | | import {initializeWebSocket, closeWebSocket} from '@/utils/WebSocketService'; |
| | | |
| | | let language = ref(localStorage.getItem('lang') || 'zh') |
| | | const { t } = useI18n() |
| | | const {t} = useI18n() |
| | | const requestData = reactive({ |
| | | account: '', |
| | | password: '', |
| | |
| | | const scanCodeOld = ref([]); |
| | | const searchs = ref(); |
| | | |
| | | const userInfo=JSON.parse(window.localStorage.getItem('userInfo')); |
| | | const pageParams=userInfo.user.menus[0].pages[0].params; |
| | | const pageParamsJson=JSON.parse(pageParams); |
| | | const userInfo = JSON.parse(window.localStorage.getItem('userInfo')); |
| | | const pageParams = userInfo.user.menus[0].pages[0].params; |
| | | const pageParamsJson = JSON.parse(pageParams); |
| | | const machineId = pageParamsJson.machineId;//当前页面的设备ID |
| | | console.log(machineId); |
| | | var errorScanId; |
| | | |
| | | // 新增:定时任务ID(用于清除定时器) |
| | | const timerId = ref(null); |
| | | /** |
| | | * 单次接口请求函数 |
| | | * 作用:调用后端接口,获取数据后交给 handleMessage 处理 |
| | | */ |
| | | const fetchMachineData = async () => { |
| | | try { |
| | | // 已领取的任务数据 |
| | | request.post("/deviceInteraction/primitiveTask/findMachineTask",{ |
| | | "id": machineId |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | // 假设后端返回的数据格式与 handleMessage 预期一致 |
| | | const responseData = res.data || {}; |
| | | loadData.value = responseData; |
| | | } |
| | | }); |
| | | // 线下数据 |
| | | } catch (err) { |
| | | console.error('定时请求后端接口【已领取的任务数据】失败:', err); |
| | | } |
| | | try { |
| | | // 可领取的任务数据 |
| | | request.post("/deviceInteraction/primitiveTask/findKBBTJPDrawingBP").then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | // 假设后端返回的数据格式与 handleMessage 预期一致 |
| | | const responseData = res.data || {}; |
| | | findPrimitiveTask.value = responseData; |
| | | } |
| | | }); |
| | | } catch (err) { |
| | | console.error('定时请求后端接口【可领取的任务数据:客户表】失败:', err); |
| | | } |
| | | try { |
| | | // 设备数据 |
| | | request.post("/deviceInteraction/machine/findMachine", { |
| | | "id": machineId |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | // 假设后端返回的数据格式与 handleMessage 预期一致 |
| | | const responseData = res.data || {}; |
| | | findMachine.value = responseData; |
| | | if (Object.keys(findMachine.value).length === 0) { |
| | | if (findMachine.value.mode == "1") { |
| | | modevalue.value = { |
| | | value: '1', |
| | | label: '标准', |
| | | }; |
| | | } else if (findMachine.value.mode == "2") { |
| | | modevalue.value = { |
| | | value: '2', |
| | | label: '定制', |
| | | }; |
| | | } else if (findMachine.value.mode == "3") { |
| | | modevalue.value = { |
| | | value: '3', |
| | | label: '手动', |
| | | }; |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | } catch (err) { |
| | | console.error('定时请求后端接口失败【设备数据】:', err); |
| | | } |
| | | |
| | | }; |
| | | |
| | | /** |
| | | * 启动定时器 |
| | | * @param {number} interval - 定时间隔(毫秒,默认500ms,与后端任务频率对齐) |
| | | */ |
| | | const startTimer = (interval = 500) => { |
| | | // 先清除已有定时器(避免重复创建) |
| | | if (timerId.value) clearInterval(timerId.value); |
| | | // 立即执行一次(避免首次等待间隔) |
| | | fetchMachineData(); |
| | | // 创建新定时器 |
| | | timerId.value = setInterval(() => { |
| | | fetchMachineData(); |
| | | }, interval); |
| | | }; |
| | | |
| | | /** |
| | | * 清除定时器(避免内存泄漏) |
| | | */ |
| | | const clearTimer = () => { |
| | | if (timerId.value) { |
| | | clearInterval(timerId.value); |
| | | timerId.value = null; // 重置ID |
| | | } |
| | | }; |
| | | |
| | | // 组件卸载时清除定时器(关键:避免组件销毁后定时器仍运行) |
| | | onUnmounted(() => { |
| | | clearTimer(); |
| | | }); |
| | | |
| | | onMounted(async () => { |
| | | startTimer(500); // 500ms 间隔(可根据业务调整,如1000ms) |
| | | // //使用WebSocket方式展示数据 |
| | | // socket = initializeWebSocket(socketUrl, handleMessage);// 初始化 WebSocket,并传递消息处理函数 |
| | | // //使用WebSocket方式展示数据 |
| | | // socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 初始化 WebSocket,并传递消息处理函数 |
| | | }); |
| | | |
| | | |
| | | //使用WebSocket方式展示数据 |
| | | let socket = null; |
| | | let socketDownLineTask = null; |
| | |
| | | // 定义消息处理函数,更新 receivedData 变量 |
| | | |
| | | |
| | | |
| | | const handleMessage = (data) => { |
| | | // 更新 tableData 的数据 |
| | | let dataJson = data[""+machineId][0]; |
| | | let dataJson = data["" + machineId][0]; |
| | | |
| | | loadData.value = dataJson.findPrimitiveTasking[0]; |
| | | findPrimitiveTask.value = dataJson.findPrimitiveTask[0]; |
| | | findMachine.value = dataJson.machine[0]; |
| | | if(findMachine.value.mode=="1"){ |
| | | if (findMachine.value.mode == "1") { |
| | | modevalue.value = { |
| | | value: '1', |
| | | label: '标准', |
| | | }; |
| | | }else if(findMachine.value.mode=="2"){ |
| | | value: '1', |
| | | label: '标准', |
| | | }; |
| | | } else if (findMachine.value.mode == "2") { |
| | | modevalue.value = { |
| | | value: '2', |
| | | label: '定制', |
| | | }; |
| | | }else if(findMachine.value.mode=="3"){ |
| | | } else if (findMachine.value.mode == "3") { |
| | | modevalue.value = { |
| | | value: '3', |
| | | label: '手动', |
| | |
| | | socket = initializeWebSocket(socketUrl, handleMessage);// 初始化 WebSocket,并传递消息处理函数 |
| | | //使用WebSocket方式展示数据 |
| | | socketDownLineTask = initializeWebSocket(socketDownLineTaskUrl, handleMessage2);// 初始化 WebSocket,并传递消息处理函数 |
| | | |
| | | |
| | | }); |
| | | //报警提示 |
| | | const errorInfoFuntion = async (info) => { |
| | | let infoScancode = '扫码ID:' + info.scanId + ' ' + info.scanCode; |
| | | ElMessageBox.confirm( |
| | | infoScancode, |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sureStart'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //重新补单 |
| | | request.post("/deviceInteraction/tasking/glassAgainTopLine", |
| | | { |
| | | "scanId": info.scanId, |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | //修改工作状态 【失败/正在工作/完工】 |
| | | const workStatus = async (row, state) => { |
| | | let url; |
| | |
| | | return; |
| | | } |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //开始修改 |
| | | request.post(url, |
| | | { |
| | | "id": machineId |
| | | }).then((res) => { // 替换为你的API端点 |
| | | .then(() => { |
| | | //开始修改 |
| | | request.post(url, |
| | | { |
| | | "id": machineId |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | |
| | | } |
| | | |
| | | //定制/标准 |
| | | const machineMode = async (mode) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/machine/toggleModeMachine", |
| | | { |
| | | "id": machineId, |
| | | "mode": mode |
| | | }).then((res) => { // 替换为你的API端点 |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/machine/toggleModeMachine", |
| | | { |
| | | "id": machineId, |
| | | "mode": mode |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | //开工/暂停 |
| | | const machineStatus = async (state) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/machine/updateMachineState", |
| | | { |
| | | "id": machineId, |
| | | "state": state |
| | | }).then((res) => { // 替换为你的API端点 |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/machine/updateMachineState", |
| | | { |
| | | "id": machineId, |
| | | "state": state |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | //破损 |
| | | const damagedTask = async (row) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/tasking/damagedTask", |
| | | { |
| | | "glassId": row.glassId |
| | | }).then((res) => { // 替换为你的API端点 |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/tasking/damagedTask", |
| | | { |
| | | "glassId": row.glassId |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | //下线(拿走) |
| | | const glassDownLine = async (row) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/tasking/glassDownLine", |
| | | { |
| | | "glassId": row.glassId, |
| | | }).then((res) => { // 替换为你的API端点 |
| | | .then(() => { |
| | | //下线接口 |
| | | request.post("/deviceInteraction/tasking/glassDownLine", |
| | | { |
| | | "glassId": row.glassId, |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | const topLineShow = async () => { |
| | | blind.value = true; |
| | |
| | | //领取任务/结束任务 |
| | | const startOrStopTask = async (row, line, isWorking) => { |
| | | ElMessageBox.confirm( |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | t('functionState.tips'), |
| | | t('delivery.prompt'), |
| | | { |
| | | confirmButtonText: t('functionState.sure'), |
| | | cancelButtonText: t('functionState.cancel'), |
| | | type: 'warning', |
| | | } |
| | | ) |
| | | .then(() => { |
| | | //领取任务 |
| | | request.post("/deviceInteraction/primitiveTask/startOrStopPrimitiveTasking", |
| | | { |
| | | "id": row.id, |
| | | "getLine": line, |
| | | "isWorking": isWorking |
| | | }).then((res) => { // 替换为你的API端点 |
| | | .then(() => { |
| | | //领取任务 |
| | | request.post("/deviceInteraction/primitiveTask/startOrStopPrimitiveTasking", |
| | | { |
| | | "id": row.id, |
| | | "getLine": line, |
| | | "isWorking": isWorking |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | .catch(() => { |
| | | ElMessage({ |
| | | type: 'info', |
| | | message: t('functionState.cancel'), |
| | | }) |
| | | }) |
| | | } |
| | | const handleDialogClose = () => { |
| | | |
| | |
| | | } |
| | | |
| | | const filterTableData = computed(() => |
| | | loadData.value.filter( |
| | | (data) => |
| | | !searchs.value || data.scanId.toLowerCase().includes(searchs.value.toLowerCase()) |
| | | ) |
| | | loadData.value.filter( |
| | | (data) => |
| | | !searchs.value || data.scanId.toLowerCase().includes(searchs.value.toLowerCase()) |
| | | ) |
| | | ) |
| | | |
| | | //下拉框模式选择 |
| | |
| | | |
| | | const modeShow = async () => { |
| | | blindMode.value = true; |
| | | blindModeNumberLocal.value=findMachine.taskCount; |
| | | blindModeNumberLocal.value = findMachine.taskCount; |
| | | } |
| | | //模式选择时进行处理 |
| | | const modeChange = async () => { |
| | | let mode=modevalue.value; |
| | | let mode = modevalue.value; |
| | | request.post("/deviceInteraction/machine/toggleModeMachine", |
| | | { |
| | | "id": machineId, |
| | | "mode": mode |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | if(modevalue.value=='3'){ |
| | | { |
| | | "id": machineId, |
| | | "mode": mode |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | if (modevalue.value == '3') { |
| | | //当是手动模式时弹窗提示 设置上片数量 |
| | | blindMode.value = true; |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | //提交修改手动模式的吸片数量 |
| | | const fetchSubmit = async () => { |
| | | //扫码回车提交 |
| | | request.post("/deviceInteraction/machine/manualOperationTask", |
| | | { |
| | | "id": machineId, |
| | | "taskCount": blindModeNumberLocal.value, |
| | | "finshCount": 0 |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | blindMode.value = false; |
| | | { |
| | | "id": machineId, |
| | | "taskCount": blindModeNumberLocal.value, |
| | | "finshCount": 0 |
| | | }).then((res) => { // 替换为你的API端点 |
| | | if (res.code === 200) { |
| | | ElMessage.success(res.message); |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | }) |
| | | blindMode.value = false; |
| | | } |
| | | </script> |
| | | <template> |
| | |
| | | <!-- 未领取的标准任务 --> |
| | | |
| | | <el-table :data="findPrimitiveTask" stripe style="height:660px" |
| | | :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }" |
| | | :cell-style="{ textAlign: 'center' }"> |
| | | :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }" |
| | | :cell-style="{ textAlign: 'center' }"> |
| | | <!-- <el-table-column type="selection" min-width="30" /> --> |
| | | |
| | | <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30" /> |
| | | <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')" /> |
| | | <el-table-column prop="taskType" :label="$t('glassInfo.taskType')" /> |
| | | <el-table-column prop="scanId" :label="$t('glassInfo.scanId')" /> |
| | | <el-table-column prop="length" :label="$t('glassInfo.length')" /> |
| | | <el-table-column prop="width" :label="$t('glassInfo.width')" /> |
| | | <el-table-column prop="thickness" :label="$t('glassInfo.thickness')" /> |
| | | <el-table-column prop="taskQuantity" :label="$t('glassInfo.taskQuantity')" /> |
| | | <el-table-column prop="reportCount" :label="$t('glassInfo.reportCount')" /> |
| | | <el-table-column prop="workState" :label="$t('glassInfo.workState')" /> |
| | | <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30"/> |
| | | <el-table-column prop="batchNumber" :label="$t('glassInfo.batchNumber')"/> |
| | | <el-table-column prop="taskType" :label="$t('glassInfo.taskType')"/> |
| | | <el-table-column prop="scanId" :label="$t('glassInfo.scanId')"/> |
| | | <el-table-column prop="length" :label="$t('glassInfo.length')"/> |
| | | <el-table-column prop="width" :label="$t('glassInfo.width')"/> |
| | | <el-table-column prop="thickness" :label="$t('glassInfo.thickness')"/> |
| | | <el-table-column prop="taskQuantity" :label="$t('glassInfo.taskQuantity')"/> |
| | | <el-table-column prop="reportCount" :label="$t('glassInfo.reportCount')"/> |
| | | <el-table-column prop="workState" :label="$t('glassInfo.workState')"/> |
| | | <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="70"> |
| | | <template #default="scope"> |
| | | <el-button size="mini" link type="primary" plain @click="startOrStopTask(scope.row, findMachine.id, 1)">{{ |
| | | $t('functionState.getTask') }}</el-button> |
| | | <el-button size="small" link type="primary" plain @click="startOrStopTask(scope.row, findMachine.id, 1)">{{ |
| | | $t('functionState.getTask') |
| | | }} |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </div> |
| | | <div> |
| | | 手动输入上片数量: |
| | | <el-input v-model="blindModeNumberLocal" style="width: 200px;" type="Number" id="blindMode" @keyup.enter="fetchSubmit"></el-input> |
| | | |
| | | <el-input v-model="blindModeNumberLocal" style="width: 200px;" type="Number" id="blindMode" |
| | | @keyup.enter="fetchSubmit"></el-input> |
| | | |
| | | </div> |
| | | <!-- <div> |
| | | <el-button size="mini" link type="primary" plain @click="startOrStopTask(scope.row, 2, 2)">确认</el-button> |
| | | <el-button size="mini" link type="primary" plain @click="startOrStopTask(scope.row, 2, 2)">取消</el-button> |
| | | </div> --> |
| | | </el-dialog> |
| | | <hr /> |
| | | <hr/> |
| | | <br> |
| | | <div id="search"> |
| | | <!-- 功能 --> |
| | |
| | | <div class="flex flex-wrap gap-4 items-center"> |
| | | 上片机运行模式: |
| | | <el-select v-model="modevalue" @change="modeChange" placeholder="请选择模式" size="large" style="width: 220px"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"/> |
| | | </el-select> |
| | | |
| | | |
| | | <span> |
| | | <span @click="modeShow" style="margin-left: 40px;">{{ findMachine.mode=="3"? ("上片数量:"+findMachine.taskCount):"" }}</span> |
| | | <span style="margin-left: 40px;">{{ findMachine.mode=="3"? ("已完成数量:"+findMachine.finshCount):"" }}</span> |
| | | <span @click="modeShow" style="margin-left: 40px;">{{ |
| | | findMachine.mode == "3" ? ("上片数量:" + findMachine.taskCount) : "" |
| | | }}</span> |
| | | <span style="margin-left: 40px;">{{ |
| | | findMachine.mode == "3" ? ("已完成数量:" + findMachine.finshCount) : "" |
| | | }}</span> |
| | | </span> |
| | | |
| | | |
| | | |
| | | |
| | | </div> |
| | | <br> |
| | | <el-button :type="(findMachine['state'] == '暂停' ? 'danger' : 'success')" id="ButtonMachineStatus" |
| | | @click="machineStatus((findMachine['state'] == '暂停' ? '开工' : '暂停'))">{{ findMachine['state'] == '开工' ? |
| | | $t('functionState.start') : $t('functionState.stop') }}</el-button> |
| | | @click="machineStatus((findMachine['state'] == '暂停' ? '开工' : '暂停'))">{{ |
| | | findMachine['state'] == '开工' ? |
| | | $t('functionState.start') : $t('functionState.stop') |
| | | }} |
| | | </el-button> |
| | | <el-button type="primary" id="ButtonTopLine" @click="topLineShow">{{ $t('functionState.getTask') }}</el-button> |
| | | </div> |
| | | |
| | | <div id="main-body" style="min-height:240px;"> |
| | | <!-- 表格内容 --> |
| | | <el-table :data="filterTableData" stripe style="height:260px" |
| | | :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }" |
| | | :cell-style="{ textAlign: 'center' }"> |
| | | :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center' }" |
| | | :cell-style="{ textAlign: 'center' }"> |
| | | |
| | | <!-- <el-table-column type="selection" min-width="30" /> --> |
| | | <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30" /> |
| | | <el-table-column prop="batchNumber" sortable :label="$t('glassInfo.batchNumber')" /> |
| | | <el-table-column prop="taskType" sortable :label="$t('glassInfo.taskType')" /> |
| | | <el-table-column type="index" :label="$t('glassInfo.number')" min-width="30"/> |
| | | <el-table-column prop="batchNumber" sortable :label="$t('glassInfo.batchNumber')"/> |
| | | <el-table-column prop="taskType" sortable :label="$t('glassInfo.taskType')"/> |
| | | <el-table-column prop="scanId" :label="$t('glassInfo.scanId')"> |
| | | <template #header> |
| | | <div> |
| | |
| | | <el-input v-model="searchs" type="primary" id="ReportSubmission" @keyup.enter="fetchData"></el-input> |
| | | <template #reference> |
| | | <el-icon> |
| | | <Filter /> |
| | | <Filter/> |
| | | </el-icon> |
| | | </template> |
| | | </el-popover> |
| | | <el-icon> |
| | | <CaretTop /> |
| | | <CaretTop/> |
| | | </el-icon> |
| | | <el-icon> |
| | | <CaretBottom /> |
| | | <CaretBottom/> |
| | | </el-icon> |
| | | <!-- <el-input v-model="searchs" type="primary" id="ReportSubmission" @keyup.enter="fetchData"></el-input> --> |
| | | <!-- <el-input size="small" placeholder="Type to search" /> --> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="length" sortable :label="$t('glassInfo.length')" /> |
| | | <el-table-column prop="width" sortable :label="$t('glassInfo.width')" /> |
| | | <el-table-column prop="thickness" sortable :label="$t('glassInfo.thickness')" /> |
| | | <el-table-column prop="taskQuantity" sortable :label="$t('glassInfo.taskQuantity')" /> |
| | | <el-table-column prop="isWorking" sortable :label="$t('glassInfo.isWorking')" /> |
| | | <el-table-column prop="length" sortable :label="$t('glassInfo.length')"/> |
| | | <el-table-column prop="width" sortable :label="$t('glassInfo.width')"/> |
| | | <el-table-column prop="thickness" sortable :label="$t('glassInfo.thickness')"/> |
| | | <el-table-column prop="taskQuantity" sortable :label="$t('glassInfo.taskQuantity')"/> |
| | | <el-table-column prop="isWorking" sortable :label="$t('glassInfo.isWorking')"/> |
| | | <el-table-column fixed="right" :label="$t('productStock.operate')" align="center" width="270"> |
| | | <template #default="scope"> |
| | | <el-button size="mini" link type="primary" plain @click="startOrStopTask(scope.row, 2, 2)">{{ |
| | | $t('functionState.stopTask') }}</el-button> |
| | | $t('functionState.stopTask') |
| | | }} |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </div> --> |
| | | <div style="width: 30%;min-width: 300px; height: 460px;float: left;padding: 20px;;"> |
| | | <el-table :data="sendRecords" stripe |
| | | :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center', height: '30px' }" |
| | | :cell-style="{ textAlign: 'center' }"> |
| | | <el-table-column prop="sendContent" :label="$t('glassInfo.sendContent')" /> |
| | | :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129', textAlign: 'center', height: '30px' }" |
| | | :cell-style="{ textAlign: 'center' }"> |
| | | <el-table-column prop="sendContent" :label="$t('glassInfo.sendContent')"/> |
| | | </el-table> |
| | | </div> |
| | | <div style="clear:both"></div> |