liudl
2 天以前 70b4bdc6f999c55b75138e013abf436100e9987b
Web/src/views/device/sortPallet/index.vue
@@ -18,54 +18,64 @@
                <div class="card-container">
                    <el-card class="other-box-card" v-for="deviceInfo in devicePointData" :key="deviceInfo.id">
                        <div slot="header" class="linefix">
                            <span>{{ deviceInfo.text }}</span>
                            <div :class="['lineStatus', { 'device-status-0': deviceInfo.status === 0 }, { 'device-status-1': deviceInfo.status === 1 }]"></div>
                            <span>{{ deviceInfo.text }}</span>
                            <div :class="['lineStatus', { 'device-status-0': deviceInfo.plcStatus === true  }, { 'device-status-1': deviceInfo.plcStatus === false }]"></div>
                        </div>
                        <div class="otherValuefix" >
                            <el-form label-position="left" label-width="90px">
                                <el-form-item label="WMS明细单号">
                                    <el-input></el-input>
                                <el-form-item label="WMS明细单号" v-if="deviceInfo.type==5">
                                    <el-input v-model="deviceInfo.orderNo" readonly></el-input>
                                </el-form-item>
                                <el-form-item label="任务号">
                                    <el-input v-model="deviceInfo.taskNumber"></el-input>
                                    <el-input v-model="deviceInfo.taskNo"></el-input>
                                </el-form-item>
                                <el-form-item label="批次号">
                                    <el-input></el-input>
                                    <el-input v-model="deviceInfo.lotNo" readonly></el-input>
                                </el-form-item>
                                <el-form-item label="物料编码">
                                    <el-input></el-input>
                                    <el-input v-model="deviceInfo.skuNo" readonly></el-input>
                                </el-form-item>
                                <el-form-item label="物料名称">
                                    <el-input></el-input>
                                    <el-input v-model="deviceInfo.skuName" readonly></el-input>
                                </el-form-item>
                                <el-form-item label="包装名称">
                                    <el-input></el-input>
                                <el-form-item label="分拣线编号" v-if="deviceInfo.type==5">
                                    <el-input v-model="deviceInfo.lineNo" readonly></el-input>
                                </el-form-item>
                                <el-form-item label="绑定状态">
                                    <el-input></el-input>
                                    <el-input :value="deviceInfo.status === '0' ? '未绑定' : '已绑定'" readonly></el-input>
                                </el-form-item>
                                <el-form-item label="抓箱品种">
                                    <el-input></el-input>
                                    <el-input v-model="deviceInfo.pzNo" readonly></el-input>
                                </el-form-item>
                                <el-form-item label="托盘号">
                                    <el-input></el-input>
                                    <el-input readonly></el-input>
                                </el-form-item>
                                <el-form-item label="插码数量">
                                    <el-input></el-input>
                                </el-form-item>
                                <el-form-item label="托盘上箱数量">
                                    <el-input></el-input>
                                <el-form-item label="插码箱数" v-if="deviceInfo.type==5">
                                    <el-input readonly></el-input>
                                </el-form-item>
                                <el-form-item label="拆垛箱数" v-if="deviceInfo.type==6">
                                    <el-input readonly></el-input>
                                </el-form-item>
                                <el-form-item label="整跺箱数">
                                    <el-input readonly></el-input>
                                </el-form-item>
                                <el-form-item label="WMS下发数量">
                                    <el-input></el-input>
                                <el-form-item label="完成箱数">
                                    <el-input readonly></el-input>
                                </el-form-item>
                                <!-- <el-form-item label="WMS下发数量">
                                    <el-input v-model="deviceInfo.qty" readonly></el-input>
                                </el-form-item> -->
                                <el-form-item label="状态">
                                <el-input :value="deviceInfo.plcStatus ? '在线' : '离线'" readonly></el-input>
                            </el-form-item>
                            </el-form>
                        </div>
                        <div class="otherButtonfix">
                        <!-- 设备类型为码垛机器人 -->
                        <div v-if="deviceInfo.type==5" class="otherButtonfix">
                            <el-form label-position="left">
                                <el-form-item>
                                    <el-button type="primary" @click="openBindDialog()">绑定</el-button>
                                    <el-button>结批</el-button>
                                    <el-button type="primary" @click="openBindDialog(deviceInfo.id)">绑定</el-button>
                                    <el-button @click="closeBindDialog(deviceInfo.lotNo)">结批</el-button>
                                </el-form-item>
                            </el-form>
                        </div>
@@ -80,9 +90,7 @@
                :data="bindData" 
                highlight-current-row 
                @row-click="handleRowClick"                
                >
                <el-table-column type="selection" width="55"/>
                >
                <el-table-column prop="orderNo" label="WMS下发单号"  show-overflow-tooltip="" />
                <el-table-column prop="taskNo" label="任务号"  show-overflow-tooltip="" />
                <el-table-column prop="lotNo" label="批次号"  show-overflow-tooltip="" />
@@ -100,9 +108,25 @@
</template>
  
<script lang="ts" setup>
import { ref } from 'vue';
import { GetWcsPackPlcList,GetWcsPackStationPlcList } from '/@/api/wcs/wcsDevice';
import { ref, onMounted  } from 'vue';
import { GetWcsPackPlcList,GetWcsPackStationPlcList,BindTaskForPLC,CloseTaskForPLC } from '/@/api/wcs/wcsDevice';
import { pageWcsOderTask } from '/@/api/device/wcsOderTask';
import { ElMessageBox,ElMessage } from 'element-plus';
import { signalR,stopConnection } from './signalR';
//连接signalR 监听变更
onMounted(async () => {
    signalR.off('PublicCheckTask');
    signalR.on('PublicCheckTask', (data: any) => {
        //todo 需要测试
        // if (data.type == 0) {
        // }
        var index = devicePointData.value.findIndex(s => s.id == data.id);
        if (index !== -1) {
            devicePointData.value.splice(index, 1, data);
        }
    });
});
//设备数据
const deviceList=ref<any>([]);
@@ -110,6 +134,8 @@
const devicePointData = ref<any>([]);
//选中设备ID
const selectedDeviceId=ref<any>();
//选中工位ID
const selectedStationId=ref<any>();
const bindDialogVisible = ref(false);
const bindData = ref<any>([]);
@@ -117,7 +143,7 @@
const queryParams = ref<any>({});
const tableParams = ref({
    page: 1,
    pageSize: 10,
    pageSize: 20,
    total: 0,
});
@@ -141,7 +167,7 @@
//切换设备
function chooseDevice(id) {
    selectedDeviceId.value = id;
    fetchStationData(id);
    fetchStationData(selectedDeviceId.value);
}
const handleQuery = async () => {
@@ -150,9 +176,13 @@
    tableParams.value.total = res.data.result?.total;
  };
//打开绑定弹框
function openBindDialog() {
function openBindDialog(id) {
    selectedStationId.value=null;
    selectedRow.value=null;
    selectedStationId.value=id;
    bindDialogVisible.value = true;
    // Mock data for binding
    handleQuery();
}
//点击行时设置选中行
@@ -163,13 +193,46 @@
//确认绑定操作
function confirmBinding() {
    if (selectedRow.value) {
        console.log('Selected Row:', selectedRow.value);
        // Do binding logic here
        //手动绑定任务到PLC
        bindTaskForPLC(selectedStationId.value,selectedRow.value.id);
        bindDialogVisible.value = false;
    } else {
        console.error('No row selected');
        ElMessage.error('请选择要绑定的任务!');
    }
}
const bindTaskForPLC = async (deviceId: any,oderTaskId:any) => {
    const res = await BindTaskForPLC({ deviceId,oderTaskId });
    if(res.status==200){
        ElMessage.success('绑定成功!');
        // 刷新
        fetchStationData(selectedDeviceId.value);
    }
}
//结批操作
function closeBindDialog(lotNo){
    // if(lotNo==''){
    //     ElMessage.error('该工位未绑定任务!');
    //     return;
    // }
    ElMessageBox.confirm(`确定对该批次任务结批吗?`, '提示', {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning',
   })
    .then(async () => {
        closeTaskForPLC(lotNo);
    })
    .catch(() => {});
}
const closeTaskForPLC = async (lotNo: string) => {
    const res = await CloseTaskForPLC({ lotNo });
    if(res.status==200){
        ElMessage.success('结批成功!');
        // 刷新
        fetchStationData(selectedDeviceId.value);
    }
}
</script>
@@ -238,5 +301,8 @@
        justify-content: flex-end;
        margin-top: 20px;
    }
    .divDisplay{
        display:none
    }
</style>