From 5b34a1458e74f8902d01ebd844c2954f554c9e74 Mon Sep 17 00:00:00 2001
From: xiazhengtongxue <133085197+xiazhengtongxue@users.noreply.github.com>
Date: 星期四, 30 四月 2026 11:05:37 +0800
Subject: [PATCH] 1

---
 Code/WCS/WIDESEAWCS_Client/src/extension/taskinfo/extend/AddRobotTask.vue |  196 +++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 158 insertions(+), 38 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_Client/src/extension/taskinfo/extend/AddRobotTask.vue b/Code/WCS/WIDESEAWCS_Client/src/extension/taskinfo/extend/AddRobotTask.vue
index 0146166..aecaf06 100644
--- a/Code/WCS/WIDESEAWCS_Client/src/extension/taskinfo/extend/AddRobotTask.vue
+++ b/Code/WCS/WIDESEAWCS_Client/src/extension/taskinfo/extend/AddRobotTask.vue
@@ -1,26 +1,61 @@
 <template>
   <div>
-    <!-- 鎵嬪姩鍒涘缓鎹㈢洏鏈烘鎵嬩换鍔″脊绐� -->
-    <vol-box v-model="showManualCreate" :lazy="true" width="500px" :padding="15" title="鎵嬪姩鍒涘缓鎹㈢洏鏈烘鎵嬩换鍔�">
+    <!-- 鎵嬪姩鍒涘缓鏈哄櫒浜轰换鍔″脊绐� -->
+    <vol-box v-model="showManualCreate" :lazy="true" width="550px" :padding="15" title="鎵嬪姩鍒涘缓鏈哄櫒浜轰换鍔�">
       <el-form :model="manualFormData" ref="form" label-width="120px">
-        <el-form-item label="鏉ユ簮鍦板潃鎵樼洏鐮�" prop="robotSourceAddressPalletCode" required>
-          <el-input v-model="manualFormData.robotSourceAddressPalletCode" placeholder="璇疯緭鍏ユ潵婧愬湴鍧�鎵樼洏鐮�"></el-input>
+        <!-- 浠诲姟绫诲瀷閫夋嫨 -->
+        <el-form-item label="浠诲姟绫诲瀷" prop="robotRoadway" required>
+          <el-select v-model="manualFormData.robotRoadway" placeholder="璇烽�夋嫨浠诲姟绫诲瀷" @change="onTaskTypeChange">
+            <el-option label="缁勭洏浠诲姟" value="GroupPallet"></el-option>
+            <el-option label="鎹㈢洏浠诲姟" value="ChangePallet"></el-option>
+            <el-option label="鎷嗙洏浠诲姟" value="SplitPallet"></el-option>
+          </el-select>
         </el-form-item>
-        <el-form-item label="鐩爣鍦板潃鎵樼洏鐮�" prop="robotTargetAddressPalletCode" required>
-          <el-input v-model="manualFormData.robotTargetAddressPalletCode" placeholder="璇疯緭鍏ョ洰鏍囧湴鍧�鎵樼洏鐮�"></el-input>
-        </el-form-item>
-        <el-form-item label="鏂瑰悜" prop="forward" required>
-          <el-radio-group v-model="manualFormData.forward">
-            <el-radio :label="1">鍘诲寲鎴�(婧�:1鈫掔洰鏍�:3)</el-radio>
-            <el-radio :label="2">鍘诲寲鎴�(婧�:2鈫掔洰鏍�:4)</el-radio>
-            <el-radio :label="3">鍥為珮娓�(婧�:3鈫掔洰鏍�:1)</el-radio>
-            <el-radio :label="4">鍥為珮娓�(婧�:4鈫掔洰鏍�:2)</el-radio>
-          </el-radio-group>
-        </el-form-item>
+
+        <!-- 缁勭洏浠诲姟锛氫粎闇�鐩爣鍦板潃鎵樼洏鐮佸拰浠诲姟鎬绘暟 -->
+        <template v-if="manualFormData.robotRoadway === 'GroupPallet'">
+          <el-form-item label="鐩爣鍦板潃鎵樼洏鐮�" prop="robotTargetAddressPalletCode" required>
+            <el-input v-model="manualFormData.robotTargetAddressPalletCode" placeholder="璇疯緭鍏ョ洰鏍囧湴鍧�鎵樼洏鐮�"></el-input>
+          </el-form-item>
+          <el-form-item label="浠诲姟鎬绘暟" prop="robotTaskTotalNum" required>
+            <el-input-number v-model="manualFormData.robotTaskTotalNum" :min="1" :max="999" label="浠诲姟鎬绘暟"></el-input-number>
+          </el-form-item>
+        </template>
+
+        <!-- 鎹㈢洏浠诲姟锛氶渶鏉ユ簮銆佺洰鏍囨墭鐩樼爜鍜�4涓柟鍚� -->
+        <template v-if="manualFormData.robotRoadway === 'ChangePallet'">
+          <el-form-item label="鏉ユ簮鍦板潃鎵樼洏鐮�" prop="robotSourceAddressPalletCode" required>
+            <el-input v-model="manualFormData.robotSourceAddressPalletCode" placeholder="璇疯緭鍏ユ潵婧愬湴鍧�鎵樼洏鐮�"></el-input>
+          </el-form-item>
+          <el-form-item label="鐩爣鍦板潃鎵樼洏鐮�" prop="robotTargetAddressPalletCode" required>
+            <el-input v-model="manualFormData.robotTargetAddressPalletCode" placeholder="璇疯緭鍏ョ洰鏍囧湴鍧�鎵樼洏鐮�"></el-input>
+          </el-form-item>
+          <el-form-item label="鏂瑰悜" prop="forward" required>
+            <el-radio-group v-model="manualFormData.forward">
+              <el-radio :label="1">鍘诲寲鎴�1: 婧�:1(11010) 鈫� 鐩爣:3(2103)</el-radio>
+              <el-radio :label="2">鍘诲寲鎴�2: 婧�:2(11001) 鈫� 鐩爣:4(2101)</el-radio>
+              <el-radio :label="3">鍥為珮娓�3: 婧�:4(2103) 鈫� 鐩爣:2(11010)</el-radio>
+              <el-radio :label="4">鍥為珮娓�4: 婧�:4(2101) 鈫� 鐩爣:2(11001)</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <el-form-item label="浠诲姟鎬绘暟" prop="robotTaskTotalNum" required>
+            <el-input-number v-model="manualFormData.robotTaskTotalNum" :min="1" :max="999" label="浠诲姟鎬绘暟"></el-input-number>
+          </el-form-item>
+        </template>
+
+        <!-- 鎷嗙洏浠诲姟锛氫粎闇�鏉ユ簮鍦板潃鎵樼洏鐮佸拰浠诲姟鎬绘暟 -->
+        <template v-if="manualFormData.robotRoadway === 'SplitPallet'">
+          <el-form-item label="鏉ユ簮鍦板潃鎵樼洏鐮�" prop="robotSourceAddressPalletCode" required>
+            <el-input v-model="manualFormData.robotSourceAddressPalletCode" placeholder="璇疯緭鍏ユ潵婧愬湴鍧�鎵樼洏鐮�"></el-input>
+          </el-form-item>
+          <el-form-item label="浠诲姟鎬绘暟" prop="robotTaskTotalNum" required>
+            <el-input-number v-model="manualFormData.robotTaskTotalNum" :min="1" :max="999" label="浠诲姟鎬绘暟"></el-input-number>
+          </el-form-item>
+        </template>
       </el-form>
       <template #footer>
         <el-button type="primary" size="small" @click="submitManualCreate">纭畾</el-button>
-        <el-button type="danger" size="small" @click="showManualCreate = false">鍏抽棴</el-button>
+        <el-button type="danger" size="small" @click="closeDialog">鍏抽棴</el-button>
       </template>
     </vol-box>
   </div>
@@ -35,10 +70,25 @@
   data() {
     return {
       showManualCreate: false,
+      // 浠诲姟绫诲瀷鏄犲皠锛堢敤浜庢樉绀轰腑鏂囧悕绉帮級
+      taskTypeMap: {
+        GroupPallet: "缁勭洏浠诲姟",
+        ChangePallet: "鎹㈢洏浠诲姟",
+        SplitPallet: "鎷嗙洏浠诲姟",
+      },
+      // 鏂瑰悜鎻忚堪鏄犲皠
+      directionMap: {
+        1: "鍘诲寲鎴�1: 婧�:1(11010) 鈫� 鐩爣:3(2103)",
+        2: "鍘诲寲鎴�2: 婧�:2(11001) 鈫� 鐩爣:4(2101)",
+        3: "鍥為珮娓�3: 婧�:4(2103) 鈫� 鐩爣:2(11010)",
+        4: "鍥為珮娓�4: 婧�:4(2101) 鈫� 鐩爣:2(11001)",
+      },
       manualFormData: {
-        robotSourceAddressPalletCode: "",
-        robotTargetAddressPalletCode: "",
-        forward: 1, // 1=鍘诲寲鎴�(1鈫�3), 2=鍘诲寲鎴�(2鈫�4), 3=鍥為珮娓�(3鈫�1), 4=鍥為珮娓�(4鈫�2)
+        robotRoadway: "",               // 鏈哄櫒浜哄悕绉�/浠诲姟绫诲瀷
+        robotSourceAddressPalletCode: "", // 鏉ユ簮鍦板潃鎵樼洏鐮�
+        robotTargetAddressPalletCode: "", // 鐩爣鍦板潃鎵樼洏鐮�
+        forward: 1,                     // 鏂瑰悜锛堟崲鐩樹换鍔′娇鐢紝1-4锛�
+        robotTaskTotalNum: 1,           // 浠诲姟鎬绘暟
       },
     };
   },
@@ -48,41 +98,111 @@
       this.showManualCreate = true;
       this.resetManualForm();
     },
-    
+
+    // 鍏抽棴寮圭獥
+    closeDialog() {
+      this.showManualCreate = false;
+    },
+
     // 閲嶇疆琛ㄥ崟
     resetManualForm() {
       this.manualFormData = {
+        robotRoadway: "",
         robotSourceAddressPalletCode: "",
         robotTargetAddressPalletCode: "",
         forward: 1,
+        robotTaskTotalNum: 1,
       };
     },
-    
+
+    // 浠诲姟绫诲瀷鍒囨崲鏃堕噸缃浉鍏冲瓧娈�
+    onTaskTypeChange(value) {
+      this.manualFormData.robotSourceAddressPalletCode = "";
+      this.manualFormData.robotTargetAddressPalletCode = "";
+      this.manualFormData.forward = 1;
+    },
+
+    // 琛ㄥ崟楠岃瘉
+    validateForm() {
+      const data = this.manualFormData;
+
+      // 1. 蹇呴�変换鍔$被鍨�
+      if (!data.robotRoadway) {
+        this.$message.error("璇烽�夋嫨浠诲姟绫诲瀷");
+        return false;
+      }
+
+      // 2. 鏍规嵁浠诲姟绫诲瀷楠岃瘉蹇呭~瀛楁
+      const taskType = data.robotRoadway;
+
+      if (taskType === "GroupPallet") {
+        if (!data.robotTargetAddressPalletCode) {
+          this.$message.error("缁勭洏浠诲姟锛氳杈撳叆鐩爣鍦板潃鎵樼洏鐮�");
+          return false;
+        }
+      } else if (taskType === "ChangePallet") {
+        if (!data.robotSourceAddressPalletCode) {
+          this.$message.error("鎹㈢洏浠诲姟锛氳杈撳叆鏉ユ簮鍦板潃鎵樼洏鐮�");
+          return false;
+        }
+        if (!data.robotTargetAddressPalletCode) {
+          this.$message.error("鎹㈢洏浠诲姟锛氳杈撳叆鐩爣鍦板潃鎵樼洏鐮�");
+          return false;
+        }
+        // 楠岃瘉鏂瑰悜 1-4
+        if (![1, 2, 3, 4].includes(data.forward)) {
+          this.$message.error("鎹㈢洏浠诲姟锛氳閫夋嫨鏈夋晥鐨勬柟鍚�(1-4)");
+          return false;
+        }
+      } else if (taskType === "SplitPallet") {
+        if (!data.robotSourceAddressPalletCode) {
+          this.$message.error("鎷嗙洏浠诲姟锛氳杈撳叆鏉ユ簮鍦板潃鎵樼洏鐮�");
+          return false;
+        }
+      }
+
+      // 3. 楠岃瘉浠诲姟鎬绘暟
+      if (data.robotTaskTotalNum < 1) {
+        this.$message.error("浠诲姟鎬绘暟涓嶈兘灏忎簬1");
+        return false;
+      }
+
+      return true;
+    },
+
     // 鎻愪氦鎵嬪姩鍒涘缓浠诲姟
     submitManualCreate() {
       // 琛ㄥ崟楠岃瘉
-      if (!this.manualFormData.robotSourceAddressPalletCode) {
-        return this.$message.error("璇疯緭鍏ユ潵婧愬湴鍧�鎵樼洏鐮�");
-      }
-      if (!this.manualFormData.robotTargetAddressPalletCode) {
-        return this.$message.error("璇疯緭鍏ョ洰鏍囧湴鍧�鎵樼洏鐮�");
-      }
-      if (this.manualFormData.forward === undefined || this.manualFormData.forward === null) {
-        return this.$message.error("璇烽�夋嫨鏂瑰悜");
+      if (!this.validateForm()) {
+        return;
       }
 
-      // 璋冪敤鍚庣API鍒涘缓鎹㈢洏鏈烘鎵嬩换鍔�
+      // 鏋勫缓璇锋眰鍙傛暟锛堜笌鍚庣 ManualRobotTaskDto 瀵瑰簲锛�
+      const params = {
+        robotRoadway: this.manualFormData.robotRoadway,
+        robotSourceAddressPalletCode: this.manualFormData.robotSourceAddressPalletCode,
+        robotTargetAddressPalletCode: this.manualFormData.robotTargetAddressPalletCode,
+        robotTaskTotalNum: this.manualFormData.robotTaskTotalNum,
+        forward: this.manualFormData.forward,  // 鏂瑰悜锛屾暣鍨� 1-4
+      };
+
+      // 鑾峰彇浠诲姟绫诲瀷涓枃鍚嶇О鐢ㄤ簬鎻愮ず
+      const taskTypeName = this.taskTypeMap[params.robotRoadway] || "鏈哄櫒浜�";
+
+      // 鑾峰彇鏂瑰悜鎻忚堪锛堜粎鎹㈢洏浠诲姟锛�
+      let directionDesc = "";
+      if (params.robotRoadway === "ChangePallet") {
+        directionDesc = this.directionMap[params.forward] || "";
+      }
+
+      // 璋冪敤鍚庣API鍒涘缓鏈哄櫒浜轰换鍔�
       this.http
-        .post("api/RobotTask/AddRobotTask", {
-          robotSourceAddressPalletCode: this.manualFormData.robotSourceAddressPalletCode,
-          robotTargetAddressPalletCode: this.manualFormData.robotTargetAddressPalletCode,
-          forward: this.manualFormData.forward,  // 娉ㄦ剰瀛楁鍚嶆敼涓篺orward锛岀被鍨嬩负鏁存暟
-        }, "鍒涘缓鎹㈢洏鏈烘鎵嬩换鍔′腑...")
+        .post("api/RobotTask/CreateRobotTaskManually", params, `鍒涘缓${taskTypeName}${directionDesc ? ' - ' + directionDesc : ''}涓�...`)
         .then((res) => {
           if (!res.status) {
             return this.$message.error(res.message);
           }
-          this.$message.success("鎹㈢洏鏈烘鎵嬩换鍔″垱寤烘垚鍔�");
+          this.$message.success(`${taskTypeName}${directionDesc ? ' - ' + directionDesc : ''}鍒涘缓鎴愬姛`);
           this.showManualCreate = false;
           // 鍒锋柊鐖堕〉闈㈡暟鎹�
           this.$emit("parentCall", ($vue) => {
@@ -90,9 +210,9 @@
           });
         })
         .catch((err) => {
-          this.$message.error("鍒涘缓鎹㈢洏鏈烘鎵嬩换鍔″け璐ワ細" + (err.message || "鏈煡閿欒"));
+          this.$message.error(`鍒涘缓${taskTypeName}澶辫触锛歚 + (err.message || "鏈煡閿欒"));
         });
     },
   },
 };
-</script>
\ No newline at end of file
+</script>

--
Gitblit v1.9.3