From 48d66a079c307356997fb400d27907ff6d363b7b Mon Sep 17 00:00:00 2001
From: liudl <673013083@qq.com>
Date: 星期一, 20 一月 2025 08:35:37 +0800
Subject: [PATCH] 修改2楼分拣和1楼拆垛时获取拆垛信息接口

---
 Web/src/views/wcs/wcsTask/index.vue |  233 ++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 176 insertions(+), 57 deletions(-)

diff --git a/Web/src/views/wcs/wcsTask/index.vue b/Web/src/views/wcs/wcsTask/index.vue
index eac32a8..91ceda3 100644
--- a/Web/src/views/wcs/wcsTask/index.vue
+++ b/Web/src/views/wcs/wcsTask/index.vue
@@ -1,11 +1,12 @@
 锘�<template>
   <div class="wcsTask-container">
     <el-row :gutter="8" style="width: 100%; height: 100%; flex: 1">
-      <el-col :span="12" :xs="24" style="display: flex; height: 100%; flex: 1">
-        <el-card class="full-table" shadow="hover" ::body-style="{ height: 'calc(100% - 51px)' }">
+      <el-col :span="14" :xs="24" style="display: flex; height: 100%; flex: 1">
+        <el-card class="full-table" shadow="hover" :body-style="{ height: 'calc(100% - 51px)' }">
           <template #header>
-						<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"><ele-Collection /></el-icon>浠诲姟鏃ュ織
-					</template>
+            <el-icon size="16"
+              style="margin-right: 3px; display: inline; vertical-align: middle"><ele-Collection /></el-icon>浠诲姟鏃ュ織
+          </template>
           <el-form :model="queryParams" ref="queryForm" labelWidth="90">
             <el-row>
               <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
@@ -15,7 +16,7 @@
               </el-col>
               <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
                 <el-form-item label="浠诲姟鍙�">
-                  <el-input v-model="queryParams.taskNo" clearable="" placeholder="璇疯緭鍏ヤ换鍔″彿" />
+                  <el-input v-model="queryParams.taskNo" clearable="" placeholder=" " />
                 </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
@@ -32,6 +33,16 @@
                     <el-option v-for="(item, index) in dl('TaskStatusEnum')" :key="index" :value="item.value"
                       :label="`${item.name} (${item.code}) [${item.value}] `" />
                   </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+                <el-form-item label="鎵樼洏鍙�">
+                  <el-input v-model="queryParams.palletNo" clearable="" placeholder="璇疯緭鍏ユ墭鐩樺彿" />
+                </el-form-item>
+              </el-col>
+              <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+                <el-form-item label="鏉ユ簮">
+                  <el-input v-model="queryParams.origin" clearable="" placeholder="璇疯緭鍏ユ潵婧�" />
                 </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
@@ -53,10 +64,11 @@
               </el-col>
             </el-row>
           </el-form>
-          <el-table :data="tableData" style="width: 100%" v-loading="loading" tooltip-effect="light" row-key="id" @row-click="handleClick"
-            @sort-change="sortChange" border="">
+          <el-table :data="tableData" style="width: 100%" v-loading="loading" tooltip-effect="light" row-key="id"
+            @cell-click="handleClick" @sort-change="sortChange" border="">
             <el-table-column type="index" label="搴忓彿" width="55" align="center" />
-            <el-table-column prop="taskNo" label="浠诲姟鍙�" show-overflow-tooltip="" />
+            <el-table-column prop="taskNo" label="浠诲姟鍙�" width="130" show-overflow-tooltip="" />
+            <el-table-column prop="levels" label="浼樺厛绾�" width="55" show-overflow-tooltip="" />
             <el-table-column prop="taskType" width="85" label="浠诲姟绫诲瀷" show-overflow-tooltip="">
               <template #default="scope">
                 <el-tag :type="dv('TaskTypeEnum', scope.row.taskType)?.tagType"> {{ dv('TaskTypeEnum',
@@ -69,27 +81,57 @@
                   scope.row.status)?.name }}</el-tag>
               </template>
             </el-table-column>
+            <el-table-column prop="origin" label="鏉ユ簮" show-overflow-tooltip="" />
             <el-table-column prop="startLocate" label="璧峰浣嶇疆" show-overflow-tooltip="" />
             <el-table-column prop="endLocate" label="缁撴潫浣嶇疆" show-overflow-tooltip="" />
             <el-table-column prop="palletNo" label="鎵樼洏鍙�" show-overflow-tooltip="" />
+            <el-table-column prop="qty" label="鎷嗗灈绠辨暟" show-overflow-tooltip="" />
+            <el-table-column prop="palletQty" 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="unstackingMode" width="100" label="鎷嗗灈鏂瑰紡" show-overflow-tooltip="">
+              <template #default="scope">
+                <span v-if="scope.row.unstackingMode">
+                  <el-tag :type="dv('UnstackingModeEnum', scope.row.unstackingMode)?.tagType"> {{
+                    dv('UnstackingModeEnum',
+                      scope.row.unstackingMode)?.name }}</el-tag>
+                </span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="isBind" width="85" label="鏄惁缁戝畾" show-overflow-tooltip="">
+              <template #default="scope">
+                <span v-if="scope.row.isBind != null">
+                  <el-tag :type="dv('IsBindEnum', scope.row.isBind)?.tagType"> {{ dv('IsBindEnum',
+                    scope.row.isBind)?.name }}</el-tag>
+                </span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="stationNum" label="鎷嗗灈宸ヤ綅鍙�" show-overflow-tooltip="" />
             <el-table-column prop="cancelDate" label="鍙栨秷鏃堕棿" show-overflow-tooltip="" />
             <el-table-column prop="finishDate" label="瀹屾垚鏃堕棿" show-overflow-tooltip="" />
-            <el-table-column label="淇敼璁板綍" width="80" align="center" show-overflow-tooltip>
+            <!-- <el-table-column label="淇敼璁板綍" width="80" align="center" show-overflow-tooltip>
               <template #default="scope">
                 <ModifyRecord :data="scope.row" />
               </template>
-            </el-table-column>
-            <el-table-column label="鎿嶄綔" width="130" align="center" fixed="right" show-overflow-tooltip=""
+            </el-table-column> -->
+            <el-table-column prop="鎿嶄綔" label="鎿嶄綔" width="200" align="center" fixed="right" show-overflow-tooltip=""
               v-if="auth('wcsTask:complete') || auth('wcsTask:cancell')">
               <template #default="scope">
-                <!-- <el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditWcsTask(scope.row)"
-              v-auth="'wcsTask:update'"> 缂栬緫 </el-button>
-            <el-button icon="ele-Delete" size="small" text="" type="primary" @click="delWcsTask(scope.row)"
-              v-auth="'wcsTask:delete'"> 鍒犻櫎 </el-button> -->
-                <el-button icon="ele-Check" size="small" text="" type="primary" @click="completeTask(scope.row)"
-                  v-auth="'wcsTask:complete'"> 瀹屾垚 </el-button>
-                <el-button icon="ele-Close" size="small" text="" type="primary" @click="cancellTask(scope.row)"
-                  v-auth="'wcsTask:cancell'"> 鍙栨秷 </el-button>
+                <template v-if="scope.row.status <= 1">
+                  <el-button icon="ele-Check" size="small" text="" type="primary" @click="completeTask(scope.row)"
+                    v-auth="'wcsTask:complete'"> 瀹屾垚 </el-button>
+                  <el-button icon="ele-Close" size="small" text="" type="primary" @click="cancellTask(scope.row)"
+                    v-auth="'wcsTask:cancell'"> 鍙栨秷 </el-button>
+                </template>
+                <template v-if="scope.row.status == 2 && scope.row.origin == 'WMS'">
+                  <el-button icon="ele-Upload" size="small" text="" type="primary" @click="uploadTask(scope.row)"
+                    v-auth="'wcsTask:cancell'"> 涓婁紶 </el-button>
+                </template>
+                <template v-if="scope.row.status == 0">
+                  <el-button icon="ele-Top" size="small" text="" type="primary" @click="topUpTask(scope.row)"
+                    v-auth="'wcsTask:cancell'"> 缃《 </el-button>
+                </template>
               </template>
             </el-table-column>
           </el-table>
@@ -101,19 +143,20 @@
           <editDialog ref="editDialogRef" :title="editWcsTaskTitle" @reloadTable="handleQuery" />
         </el-card>
       </el-col>
-      <el-col :span="12" :xs="24" style="display: flex; height: 100%; flex: 1">
+      <el-col :span="10" :xs="24" style="display: flex; height: 100%; flex: 1">
         <el-card class="full-table" shadow="hover" :body-style="{ height: 'calc(100% - 51px)' }">
           <template #header>
-						<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"><ele-Collection /></el-icon>浠诲姟璇︽儏
-					</template>
+            <el-icon size="16"
+              style="margin-right: 3px; display: inline; vertical-align: middle"><ele-Collection /></el-icon>浠诲姟璇︽儏
+          </template>
           <el-form :model="queryParams2" ref="queryForm2" labelWidth="90">
             <el-row>
-              <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
+              <el-col :xs="24" :sm="12" :md="12" :lg="10" :xl="8" class="mb10">
                 <el-form-item label="浠诲姟鍙�">
-                  <el-input v-model="queryParams2.taskNo" clearable="" placeholder="璇疯緭鍏ヤ换鍔″彿" />
+                  <el-input v-model="queryParams2.taskNo" clearable="" placeholder="璇疯緭鍏ヤ换鍔″彿" style="width: 130px;" />
                 </el-form-item>
               </el-col>
-              <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
+              <el-col :xs="24" :sm="12" :md="12" :lg="10" :xl="8" class="mb10" style="margin-left: 20px;">
                 <el-form-item>
                   <el-button type="primary" icon="ele-Search" @click="handleQuery2"> 鏌ヨ
                   </el-button>
@@ -122,17 +165,19 @@
               </el-col>
             </el-row>
           </el-form>
-          <el-table :data="tableData2" style="width: 100%" v-loading="loading" tooltip-effect="light" row-key="id" border="">
+          <el-table :data="tableData2" style="width: 100%" v-loading="loading" tooltip-effect="light" row-key="id"
+            border="">
             <el-table-column type="index" label="搴忓彿" width="55" align="center" />
             <el-table-column prop="taskNo" label="浠诲姟鍙�" show-overflow-tooltip="" />
-            <el-table-column prop="plcId" label="浜や簰宸ヤ綅鍙�" show-overflow-tooltip="" />
+            <!-- <el-table-column prop="plcId" label="浜や簰宸ヤ綅鍙�" show-overflow-tooltip="" /> -->
             <el-table-column prop="plcName" label="浜や簰浣嶇疆" show-overflow-tooltip="" />
             <el-table-column prop="interactiveMsg" label="浜や簰淇℃伅" show-overflow-tooltip="" />
-            <el-table-column label="淇敼璁板綍" width="80" align="center" show-overflow-tooltip>
+            <el-table-column prop="createTime" label="浜や簰鏃堕棿" show-overflow-tooltip="" />
+            <!-- <el-table-column label="淇敼璁板綍" width="80" align="center" show-overflow-tooltip>
               <template #default="scope">
                 <ModifyRecord :data="scope.row" />
               </template>
-            </el-table-column>
+            </el-table-column> -->
           </el-table>
           <el-pagination v-model:currentPage="tableParams2.page" v-model:page-size="tableParams2.pageSize"
             :total="tableParams2.total" :page-sizes="[10, 20, 50, 100, 200, 500]" size="small" background=""
@@ -146,22 +191,18 @@
 
 <script lang="ts" setup="" name="wcsTask">
 import ModifyRecord from '/@/components/table/modifyRecord.vue';
-import { ref } from "vue";
+import { onMounted, reactive, ref } from 'vue';
 import { ElMessageBox, ElMessage } from "element-plus";
 import { auth } from '/@/utils/authFunction';
 
 import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
 import { getDictLabelByVal as dv } from '/@/utils/dict-utils';
-import { formatDate } from '/@/utils/formatTime';
-
 
 import printDialog from '/@/views/system/print/component/hiprint/preview.vue'
 import editDialog from '/@/views/wcs/wcsTask/component/editDialog.vue'
-import { pageWcsTask, deleteWcsTask } from '/@/api/wcs/wcsTask';
+import { pageWcsTask, finshWcsTask, uploadWcsTask,topUpWcsTask } from '/@/api/wcs/wcsTask';
 import { pageWcsMonitorTask } from '/@/api/wcs/wcsTaskMonitor';
-import { getAPI } from '/@/utils/axios-utils';
-import { SysEnumApi } from '/@/api-services/api';
-import commonFunction from '/@/utils/commonFunction';
+import { signalR } from './signalR';
 
 const showAdvanceQueryUI = ref(false);
 const printDialogRef = ref();
@@ -173,17 +214,41 @@
 const queryParams2 = ref<any>({});
 const tableParams = ref({
   page: 1,
-  pageSize: 10,
+  pageSize: 20,
   total: 0,
 });
 const tableParams2 = ref({
   page: 1,
-  pageSize: 10,
+  pageSize: 20,
   total: 0,
 });
 const printWcsTaskTitle = ref("");
 const editWcsTaskTitle = ref("");
-
+//杩炴帴signalR 鐩戝惉鍚庡彴浠诲姟鏃ュ織鍙樻洿
+onMounted(async () => {
+  signalR.off('PublicTask');
+  signalR.on('PublicTask', (data: any) => {
+    console.log(data)
+    var listTask = tableData.value.filter(t => t.id == data.id);
+    if (listTask.length == 0) {
+      tableData.value.unshift(data)
+    }
+    else {
+      //濡傛灉宸茬粡瀛樺湪灏辨洿鏂版暟鎹�
+      const index = tableData.value.findIndex(t => t.id == data.id);
+      tableData.value.splice(index, 1, data);
+    }
+  });
+  signalR.off('PublicTaskMonitor');
+  signalR.on('PublicTaskMonitor', async (data: any) => {
+    console.log(data);
+    if (queryParams2.value.taskNo == undefined || queryParams2.value.taskNo == data.taskNo) {
+      if (tableData2.value.filter(t => t.id == data.id).length == 0) {
+        tableData2.value.unshift(data)
+      }
+    }
+  });
+});
 // 鏀瑰彉楂樼骇鏌ヨ鐨勬帶浠舵樉绀虹姸鎬�
 const changeAdvanceQueryUI = () => {
   showAdvanceQueryUI.value = !showAdvanceQueryUI.value;
@@ -230,33 +295,82 @@
   editDialogRef.value.openDialog(row);
 };
 //瀹屾垚浠诲姟
-const completeTask = (row: any) => {
-
-}
-//鍙栨秷浠诲姟
-const cancellTask = (row: any) => {
-
-}
-// 鐐瑰嚮琛ㄦ牸
-const handleClick = (row: any, event: any, column: any) => {
-	queryParams2.value.taskNo = row.taskNo;
-	handleQuery2();
-};
-// 鍒犻櫎
-const delWcsTask = (row: any) => {
-  ElMessageBox.confirm(`纭畾瑕佸垹闄ゅ悧?`, "鎻愮ず", {
+const completeTask = async (row: any) => {
+  ElMessageBox.confirm(`纭畾瑕佸畬鎴愪换鍔″悧?`, "鎻愮ず", {
     confirmButtonText: "纭畾",
     cancelButtonText: "鍙栨秷",
     type: "warning",
   })
     .then(async () => {
-      await deleteWcsTask(row);
+      var param = Object.assign(row);
+      param.status = 2;
+      await finshWcsTask(param);
       handleQuery();
-      ElMessage.success("鍒犻櫎鎴愬姛");
+      handleQuery2();
+      ElMessage.success("瀹屾垚浠诲姟鎴愬姛");
     })
     .catch(() => { });
-};
+}
+//鍙栨秷浠诲姟
+const cancellTask = async (row: any) => {
+  ElMessageBox.confirm(`纭畾瑕佸彇娑堜换鍔″悧?`, "鎻愮ず", {
+    confirmButtonText: "纭畾",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+    .then(async () => {
+      var param = Object.assign(row);
+      param.status = 4;
+      await finshWcsTask(param);
+      handleQuery();
+      handleQuery2();
+      ElMessage.success("鍙栨秷浠诲姟鎴愬姛");
+    })
+    .catch(() => { });
 
+}
+//涓婁紶浠诲姟
+const uploadTask = async (row: any) => {
+  ElMessageBox.confirm(`纭畾瑕佷笂浼犱换鍔″悧?`, "鎻愮ず", {
+    confirmButtonText: "纭畾",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+    .then(async () => {
+      var param = Object.assign(row);
+      await topUpTask(param);
+      handleQuery();
+      handleQuery2();
+      ElMessage.success("涓婁紶浠诲姟鎴愬姛锛�");
+    })
+    .catch(() => { });
+
+}
+//缃《浠诲姟
+const topUpTask = async (row: any) => {
+  ElMessageBox.confirm(`纭畾瑕佺疆椤朵换鍔″悧?`, "鎻愮ず", {
+    confirmButtonText: "纭畾",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
+    .then(async () => {
+      var param = Object.assign(row);
+      await topUpWcsTask(param);
+      handleQuery();
+      handleQuery2();
+      ElMessage.success("缃《浠诲姟鎴愬姛");
+    })
+    .catch(() => { });
+
+}
+// 鐐瑰嚮琛ㄦ牸
+const handleClick = (row, column, cell, event) => {
+  if (column.property === '鎿嶄綔') {
+    return;
+  }
+  queryParams2.value.taskNo = row.taskNo;
+  handleQuery2();
+};
 // 鏀瑰彉椤甸潰瀹归噺
 const handleSizeChange = (val: number) => {
   tableParams.value.pageSize = val;
@@ -288,4 +402,9 @@
 :deep(.el-input-number) {
   width: 100%;
 }
+
+/* :deep(.el-input__inner)
+{
+  width: 50%;
+} */
 </style>

--
Gitblit v1.8.0