From 4683c8a19e593e8f999c6f1a145e0bb73eb20dea Mon Sep 17 00:00:00 2001
From: chengsc <Demo@DESKTOP-CPA90BF>
Date: 星期四, 12 九月 2024 08:17:12 +0800
Subject: [PATCH] 解决冲突

---
 Web/src/views/device/sortPallet/index.vue |  391 ++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 239 insertions(+), 152 deletions(-)

diff --git a/Web/src/views/device/sortPallet/index.vue b/Web/src/views/device/sortPallet/index.vue
index db8b0dc..a4aba31 100644
--- a/Web/src/views/device/sortPallet/index.vue
+++ b/Web/src/views/device/sortPallet/index.vue
@@ -1,161 +1,239 @@
 <template>
-    <el-container>
-        <el-card shadow="hover" :body-style="{ paddingBottom: '0', padding: '10px' }" style="width: 100%;display: flex;align-items: center;justify-content: center;">
-            <div class="card-page">
-                <el-button type="primary" :plain="isPlain1" @click="floorTogglePlain(1)">1鍙风爜鍨涙満鍣ㄤ汉</el-button>
-                <el-button type="primary" :plain="isPlain2" @click="floorTogglePlain(2)">2鍙风爜鍨涙満鍣ㄤ汉</el-button>
-                <el-button type="primary" :plain="isPlain3" @click="floorTogglePlain(3)">3鍙风爜鍨涙満鍣ㄤ汉</el-button>
-            </div>
-        </el-card>
-    </el-container>
     <el-container>        
-        <div class="card-container">            
-            <el-card class="other-box-card" v-for="deviceInfo in deviceList" :key="deviceInfo.id">
-                <div slot="header" class="linefix">
-                    <span>{{ deviceInfo.name }}</span>
-                    <div :class="['lineStatus', { 'device-status-0': deviceInfo.status === 0 }, { 'device-status-1': deviceInfo.status === 1 }]"></div>
+        <el-col>
+            <el-row :span="1">
+                <div class="card-page">
+                    <el-button
+                        v-for="device in deviceList"
+                        :key="device.id"
+                        type="primary"
+                        :plain="selectedDeviceId !== device.id"
+                        @click="chooseDevice(device.id)"
+                        >
+                        {{ device.name }}
+                    </el-button>
+                </div>  
+            </el-row>
+            <el-row :span="1">
+                <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']"></div>
+                            <!-- <div :class="['lineStatus', { 'device-status-0': deviceInfo.status === 0 }, { 'device-status-1': deviceInfo.status === 1 }]"></div> -->
+                        </div>
+                        <div class="otherValuefix" >
+                            <el-form label-position="left" label-width="90px">
+                                <el-form-item label="WMS鏄庣粏鍗曞彿">
+                                    <el-input v-model="deviceInfo.orderNo" readonly></el-input>
+                                </el-form-item>
+                                <el-form-item label="浠诲姟鍙�">
+                                    <el-input v-model="deviceInfo.taskNo"></el-input>
+                                </el-form-item>
+                                <el-form-item label="鎵规鍙�">
+                                    <el-input v-model="deviceInfo.lotNo" readonly></el-input>
+                                </el-form-item>
+                                <el-form-item label="鐗╂枡缂栫爜">
+                                    <el-input v-model="deviceInfo.skuNo" readonly></el-input>
+                                </el-form-item>
+                                <el-form-item label="鐗╂枡鍚嶇О">
+                                    <el-input v-model="deviceInfo.skuName" readonly></el-input>
+                                </el-form-item>
+                                <el-form-item label="鍒嗘嫞绾跨紪鍙�">
+                                    <el-input v-model="deviceInfo.lineNo" readonly></el-input>
+                                </el-form-item>
+                                <el-form-item label="缁戝畾鐘舵��">
+                                    <el-input :value="deviceInfo.status === '0' ? '鏈粦瀹�' : '宸茬粦瀹�'" readonly></el-input>
+                                </el-form-item>
+                                <el-form-item label="鎶撶鍝佺">
+                                    <el-input v-model="deviceInfo.pzNo" readonly></el-input>
+                                </el-form-item>
+                                <el-form-item label="鎵樼洏鍙�">
+                                    <el-input readonly></el-input>
+                                </el-form-item>
+                                <el-form-item label="鎻掔爜鏁伴噺">
+                                    <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 v-model="deviceInfo.qty" readonly></el-input>
+                                </el-form-item>
+                            </el-form>
+                        </div>
+                        <div v-if="!deviceInfo.text.includes('鎷嗗灈')" class="otherButtonfix">
+                            <el-form label-position="left">
+                                <el-form-item>
+                                    <el-button type="primary" @click="openBindDialog(deviceInfo.id)">缁戝畾</el-button>
+                                    <el-button @click="closeBindDialog(deviceInfo.lotNo)">缁撴壒</el-button>
+                                </el-form-item>
+                            </el-form>
+                        </div>
+                    </el-card>
                 </div>
-                <div class="otherValuefix" >
-                    <el-form label-position="left" label-width="90px">
-                        <el-form-item label="WMS鏄庣粏鍗曞彿">
-                            <el-input></el-input>
-                        </el-form-item>
-                        <el-form-item label="浠诲姟鍙�">
-                            <el-input v-model="deviceInfo.taskNumber"></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>
-                        <el-form-item label="鍖呰鍚嶇О">
-                            <el-input></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>
-                        <el-form-item label="DB璁板綍绠辨暟">
-                            <el-input></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>
-                        <el-form-item label="WMS涓嬪彂鏁伴噺">
-                            <el-input></el-input>
-                        </el-form-item>
-                    </el-form>
-                </div>
-                <div class="otherButtonfix">
-                    <el-form label-position="left">
-                        <el-form-item>
-                            <el-button type="primary">缁戝畾</el-button>
-                            <el-button>缁撴壒</el-button>
-                        </el-form-item>
-                    </el-form>
-                </div>
-            </el-card>
-        </div>
-    </el-container>    
+            </el-row>
+        </el-col>   
+        
+         <!-- 缁戝畾浠诲姟寮规 -->
+         <el-dialog v-model="bindDialogVisible" title="閫夋嫨鏁版嵁">
+            <el-table
+                :data="bindData" 
+                highlight-current-row 
+                @row-click="handleRowClick"                
+                >                
+                <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="" />
+                <el-table-column prop="skuNo" label="鐗╂枡缂栫爜"  show-overflow-tooltip="" />
+                <el-table-column prop="skuName" label="鐗╂枡鍚嶇О"  show-overflow-tooltip="" />
+                <el-table-column prop="boxType" label="瑙勬牸"  show-overflow-tooltip="" />
+                <el-table-column prop="qty" label="鎬荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟"  show-overflow-tooltip="" />
+            </el-table>
+            <div slot="footer" class="dialog-footer">
+                <el-button @click="bindDialogVisible = false">鍙栨秷</el-button>
+                <el-button type="primary" @click="confirmBinding">纭</el-button>
+            </div>
+        </el-dialog>
+    </el-container>  
 </template>
   
-  <script lang="ts" setup>
-  import { ref, reactive } from 'vue';
+<script lang="ts" setup>
+import { ref } from 'vue';
+import { GetWcsPackPlcList,GetWcsPackStationPlcList,BindTaskForPLC,CloseTaskForPLC } from '/@/api/wcs/wcsDevice';
+import { pageWcsOderTask } from '/@/api/device/wcsOderTask';
+import { ElMessageBox,ElMessage } from 'element-plus';
 
-  const stackList=[
+//璁惧鏁版嵁
+const deviceList=ref<any>([]);
+//璁惧瀵瑰簲宸ヤ綅鏁版嵁
+const devicePointData = ref<any>([]);
+//閫変腑璁惧ID
+const selectedDeviceId=ref<any>();
+//閫変腑宸ヤ綅ID
+const selectedStationId=ref<any>();
 
-  ];
-  const isPlain1 = ref(false);//涓�灞�
-  const isPlain2 = ref(true);//浜屽眰
-  const isPlain3 = ref(true);//涓夊眰
-  //鍒囨崲灞傚钩闈�
-  function floorTogglePlain(buttonNumber) {
-	if (buttonNumber === 1) {
-		isPlain1.value = !isPlain1.value;
-		isPlain2.value =true;
-		isPlain3.value =true;
+const bindDialogVisible = ref(false);
+const bindData = ref<any>([]);
+const selectedRow = ref<any>(null);
+const queryParams = ref<any>({});
+const tableParams = ref({
+    page: 1,
+    pageSize: 10,
+    total: 0,
+});
 
-	} else if (buttonNumber === 2) {
-		isPlain2.value = !isPlain2.value;
-		isPlain1.value =true;
-		isPlain3.value =true;
+//鑾峰彇璁惧瀵瑰簲鐨勫伐浣嶆暟鎹�
+const fetchStationData = async (plcId: any) => {
+    const res2 = await GetWcsPackStationPlcList({ plcId });
+    devicePointData.value = res2.data.result;
+};
+// 鑾峰彇璁惧鏁版嵁
+const fetchPLCDeviceData = async () => {
+    var res = await GetWcsPackPlcList();
+    deviceList.value = res.data.result;
 
-	} else if (buttonNumber === 3) {
-		isPlain3.value = !isPlain3.value;
-		isPlain1.value =true;
-		isPlain2.value =true;
-	}
-  }
-
-  const deviceList=[
-        {
-          id: 1,
-          name: '1鍙风爜鍨涙満鍣ㄤ汉',
-          taskNumber: 'T000001',
-          taskType: '',
-          plc: '',
-          wcs: '',
-          status: 0
-        },
-        {
-          id: 2,
-          name: '2鍙风爜鍨涙満鍣ㄤ汉',
-          taskNumber: '',
-          taskType: '',
-          plc: '',
-          wcs: '',
-          status: 1
-        },
-        {
-          id: 3,
-          name: '3鍙风爜鍨涙満鍣ㄤ汉',
-          taskNumber: '',
-          taskType: '',
-          plc: '',
-          wcs: '',
-          status: 0
-        },{
-          id: 4,
-          name: '4鍙风爜鍨涙満鍣ㄤ汉',
-          taskNumber: '',
-          taskType: '',
-          plc: '',
-          wcs: '',
-          status: 1
-        },{
-          id: 5,
-          name: '5鍙风爜鍨涙満鍣ㄤ汉',
-          taskNumber: '',
-          taskType: '',
-          plc: '',
-          wcs: '',
-          status: 0
-        },{
-          id: 6,
-          name: '6鍙风爜鍨涙満鍣ㄤ汉',
-          taskNumber: '',
-          taskType: '',
-          plc: '',
-          wcs: '',
-          status: 0
-        }
-      ]
-  </script>
-  
-  <style scoped>
-    .card-container {
-          display: grid;
-          grid-template-columns: repeat(6, 1fr);
-          gap: 10px;
+    if (deviceList.value.length > 0) {
+      selectedDeviceId.value = deviceList.value[0].id;
+      await fetchStationData(selectedDeviceId.value);
     }
-    .other-box-card {
-          box-sizing: border-box;
+};
+fetchPLCDeviceData();
+
+//鍒囨崲璁惧
+function chooseDevice(id) {
+    selectedDeviceId.value = id;
+    fetchStationData(selectedDeviceId.value);
+}
+
+const handleQuery = async () => {
+    var res = await pageWcsOderTask(Object.assign(queryParams.value, tableParams.value));
+    bindData.value = res.data.result?.items ?? [];
+    tableParams.value.total = res.data.result?.total;
+  };
+//鎵撳紑缁戝畾寮规
+function openBindDialog(id) {
+    selectedStationId.value=null;
+    selectedRow.value=null;
+    
+    selectedStationId.value=id;
+    bindDialogVisible.value = true;
+
+    handleQuery();
+}
+//鐐瑰嚮琛屾椂璁剧疆閫変腑琛�
+function handleRowClick(row) {
+    selectedRow.value = row;
+}
+
+//纭缁戝畾鎿嶄綔
+function confirmBinding() {
+    if (selectedRow.value) {
+        //鎵嬪姩缁戝畾浠诲姟鍒癙LC
+        bindTaskForPLC(selectedStationId.value,selectedRow.value.id);
+
+        bindDialogVisible.value = false;
+    } else {
+        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>
+
+<style scoped>
+    .card-page {
+        width: 100%;
+        height: 50px;
+        display: flex;
+        text-align: center;
+        justify-content: center;
+        align-items: center;
+        text-align: center;
+    }
+    .card-page>button {
+        width: 150px;
+        height: 30px;
+    }
+    .card-container {
+            display: grid;
+            grid-template-columns: repeat(6, 1fr);
+            gap: 10px;
+    }
+    .other-box-card {            
+            box-sizing: border-box;
+            background: linear-gradient(135deg, #66ccff, #3399ff);
     }
     .lineStatus{
         position: absolute;
@@ -172,26 +250,35 @@
         align-items: center;
         height: 40px;
         position: relative;
+        color: #fff;
     }
     .otherValuefix{
         width: 100%;
-        height: 550px;
+        height: 540px;
         padding: 10px;
         border-bottom: 1px solid rgb(197, 195, 195);
     }
     .otherButtonfix{
         width: 100%;
-        height: 100px;
+        height: 60px;
         display: flex;
         align-items: center;
         justify-content: center;
         padding: 0;
     }
     .device-status-0{
-        background-color: #67C23A;
+        background-color: #58f709;
     }
     .device-status-1{
         background-color: red;
     }
-  </style>
+    .dialog-footer {
+        display: flex;
+        justify-content: flex-end;
+        margin-top: 20px;
+    }
+    .divDisplay{
+        display:none
+    }
+</style>
   
\ No newline at end of file

--
Gitblit v1.8.0