From c91fc12c8d24830ab083e9fd6ac8e79c2bf24f51 Mon Sep 17 00:00:00 2001
From: zuojincheng <lf_zuo@163.com>
Date: 星期四, 24 十月 2024 11:30:48 +0800
Subject: [PATCH] 自动化测试模块新增功能:预置指令添加到队列、全部添加到队列、任意状态下调整指令间隔参数、开始和停止发送队列、清空队列、任意状态下删除队列项、自动监听通信日志并滚动到最新。

---
 src/views/autoTest.vue |  159 +++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 137 insertions(+), 22 deletions(-)

diff --git a/src/views/autoTest.vue b/src/views/autoTest.vue
index 32920e0..ded6e07 100644
--- a/src/views/autoTest.vue
+++ b/src/views/autoTest.vue
@@ -34,7 +34,8 @@
             <el-button size="mini" @click="handleFormDataAdd"><i class="iconfont icon-zidonghuaceshi"
                 style="font-size: 12px;"></i>
               鏂板缓鎸囦护</el-button>
-            <el-button size="mini"><i class="iconfont icon-duilie" style="font-size: 12px;"></i> 鍏ㄩ儴娣诲姞鍒伴槦鍒�</el-button>
+            <el-button size="mini" @click="allAddSendList"><i class="iconfont icon-duilie" style="font-size: 12px;"></i>
+              鍏ㄩ儴娣诲姞鍒伴槦鍒�</el-button>
           </div>
         </div>
         <!-- 鏁版嵁琛ㄦ牸鍖� -->
@@ -54,7 +55,8 @@
               <el-button type="text" size="mini" :disabled="!connStatus" @click="sendMessage(scope.row.value)"><i
                   class="iconfont icon-fasong" style="font-size: 12px;"></i>
                 鍙戦��</el-button>
-              <el-button type="text" size="mini"><i class="iconfont icon-duilie" style="font-size: 12px;"></i>
+              <el-button type="text" size="mini" @click="addSendList(scope.row)"><i class="iconfont icon-duilie"
+                  style="font-size: 12px;"></i>
                 闃熷垪</el-button>
             </template>
           </el-table-column>
@@ -112,7 +114,7 @@
           </div>
         </div>
         <!-- 娑堟伅鍒楄〃 -->
-        <div class="messages">
+        <div class="messages" id="messages">
           <div v-for="item, index in messageList" :key="index" :class="`messageItem ${item.type}`">
             <span class="name" v-if="item.type == 'receive'">鎺ユ敹</span>
             <span :class="`content ${item.type}`">{{ item.content }}</span>
@@ -125,7 +127,7 @@
           <button @click="sendInputMessage" :disabled="!connStatus"><i class="iconfont icon-fasong"
               style="font-size: 12px;"></i> 鍙戦��</button>
           <button @click="inputValue = null" class="clearButton"><i class="iconfont icon-qingkong"
-              style="font-size: 12px;"></i> 娓呴櫎</button>
+              style="font-size: 12px;"></i> 娓呯┖</button>
         </div>
         <!-- 妯″潡鏍囬鍙婂姛鑳芥寜閽� -->
         <div class="title" style="padding-top: 20px;">
@@ -134,9 +136,15 @@
             <span style="font-size: 12px; font-weight: normal; margin-right: 5px;">鎸囦护闂撮殧</span>
             <el-input-number size="mini" v-model="timeOutNum" style="margin-right: 5px;"></el-input-number>
             <span style="font-size: 12px; font-weight: normal; margin-right: 20px;">绉�</span>
-            <el-button size="mini" :disabled="!connStatus"><i class="iconfont icon-kaishi" style="font-size: 12px;"></i>
+            <el-button size="mini" :disabled="!connStatus || !sendList.length" v-if="!sending" @click="sending = true"><i
+                class="iconfont icon-kaishi" style="font-size: 12px;"></i>
               寮�濮嬪彂閫�</el-button>
-            <el-button size="mini"><i class="iconfont icon-qingkong" style="font-size: 12px;"></i> 娓呯┖闃熷垪</el-button>
+            <el-button size="mini" v-if="sending" @click="sending = false"><i class="iconfont icon-jieshu"
+                style="font-size: 12px;"></i>
+              鍋滄鍙戦��</el-button>
+            <el-button size="mini" @click="clearSendList"><i class="iconfont icon-qingkong"
+                style="font-size: 12px;"></i>
+              娓呯┖闃熷垪</el-button>
             <el-button size="mini" v-if="showSendList" @click="showSendList = false"><i class="iconfont icon-zuixiaohua"
                 style="font-size: 12px;"></i> 鍒楄〃缂╁皬</el-button>
             <el-button size="mini" v-if="!showSendList" @click="showSendList = true"><i class="iconfont icon-zuidahua"
@@ -144,7 +152,25 @@
           </div>
         </div>
         <!-- 闃熷垪 -->
-        <div class="sendList" v-show="showSendList"></div>
+        <div class="sendList" v-show="showSendList">
+          <div class="sendListItem" v-for="item, index in sendList">
+            <div class="index">{{ index+1 }}</div>
+            <div class="name">{{ item.name }}</div>
+            <div class="value">{{ item.value }}</div>
+            <div class="sendStatus">
+              <el-tag size="mini" type="warning" v-if="!item.sendStatus">寰呭彂閫�</el-tag>
+              <el-tag size="mini" type="success" v-if="item.sendStatus">宸插彂閫�</el-tag>
+            </div>
+            <div class="function">
+              <el-button size="mini" @click.native.prevent="sendList.splice(index, 1)">
+                <i class="iconfont icon-quxiao" style="font-size: 12px;"></i> 鍙栨秷
+              </el-button>
+              <!-- <el-button size="mini" @click.native.prevent="item.sendStatus = false" :disabled="!item.sendStatus">
+                <i class="iconfont icon-chongshi" style="font-size: 12px;"></i> 閲嶈瘯
+              </el-button> -->
+            </div>
+          </div>
+        </div>
       </div>
     </div>
   </div>
@@ -281,6 +307,37 @@
 
       .sendList {
         height: 220px;
+        overflow: auto;
+
+        .sendListItem {
+          display: flex;
+          justify-content: space-between;
+          align-items: center;
+          padding: 10px 10px;
+          box-sizing: border-box;
+          border-bottom: 1px solid #EBEEF5;
+
+          .index {
+            width: 50px;
+          }
+
+          .name {
+            width: 200px;
+          }
+
+          .value {
+            flex-grow: 1;
+          }
+
+          .sendStatus {
+            width: 100px;
+          }
+        }
+
+        .sendListItem:nth-child(even) {
+          background-color: #FAFAFA;
+        }
+
       }
 
       .input {
@@ -361,20 +418,10 @@
         name: [{ required: true, message: "蹇呭~椤�", trigger: "blur" }],
         value: [{ required: true, message: "蹇呭~椤�", trigger: "blur" }],
       },
-      messageList: [
-        {
-          type: 'system',
-          content: '1234567890'
-        },
-        {
-          type: 'send',
-          content: '1234567890'
-        },
-        {
-          type: 'receive',
-          content: '1234567890'
-        },
-      ],
+      messageList: [],
+      sendList: [],
+      timer: null,
+      sending: false,
     };
   },
   computed: {},
@@ -385,11 +432,24 @@
     activeListIndex: function () {
       this.onGetTableData();
     },
+    timeOutNum: function () {
+      this.setTimer()
+    },
+    messageList: {
+      deep: true,
+      handler: function (newVal, oldVal) {
+        setTimeout(() => {
+          var div = document.getElementById('messages')
+          div.scrollTop = div.scrollHeight
+        },100)
+      }
+    }
   },
   mounted() {
     this.onGetSelectData()
     this.onGetTableData()
     this.setWebSocketConn()
+    this.setTimer()
   },
   methods: {
     // 鏄剧ず浜у搧鍒楄〃
@@ -630,11 +690,18 @@
             type: 'system',
             content: '缃戜覆涓棿浠跺凡鏂紑'
           },)
+          if (that.sending) {
+            that.sending = false
+            that.messageList.push({
+              type: 'system',
+              content: '宸插仠姝㈤槦鍒楀彂閫�'
+            },)
+          }
         }
         this.webSocketConn.onerror = function () {
           that.messageList.push({
             type: 'system',
-            content: '涓棿浠惰繛鎺ュ紓甯�'
+            content: '缃戜覆涓棿浠惰繛鎺ュ紓甯�'
           },)
         }
       } else {
@@ -676,6 +743,54 @@
         content: message
       },)
     },
+    // 鍔犲叆闃熷垪
+    addSendList: function (row) {
+      var obj = JSON.parse(JSON.stringify(row))
+      obj.sendStatus = false
+      this.sendList.push(obj)
+    },
+    // 娓呯┖闃熷垪
+    clearSendList: function () {
+      this.sendList.splice(0, this.sendList.length)
+    },
+    // 鍏ㄩ儴鍔犲叆闃熷垪
+    allAddSendList: function () {
+      this.tableData.forEach(item => {
+        var obj = JSON.parse(JSON.stringify(item))
+        obj.sendStatus = false
+        this.sendList.push(obj)
+      })
+    },
+    // 璁剧疆鑷姩鍙戦�佷换鍔�
+    setTimer: function () {
+      if (this.timer) {
+        clearInterval(this.timer)
+      }
+      this.timer = setInterval(() => {
+        
+        if (!this.sending) {
+          return
+        }
+        if (this.sendList.length > 0) {
+          this.sendMessage(this.sendList[0].value)
+          this.sendList[0].sendStatus = true
+          this.sendList.shift()
+          if (this.sendList.length == 0) {
+            this.sending = false
+            this.messageList.push({
+              type:'system',
+              content: '宸插仠姝㈤槦鍒楀彂閫�'
+            },)
+          }
+        } else {
+          this.sending = false
+          this.messageList.push({
+            type:'system',
+            content: '宸插仠姝㈤槦鍒楀彂閫�'
+          },)
+        }
+      }, this.timeOutNum * 1000)
+    },
   },
   destroyed() {
     this.closeWebSocketConn()

--
Gitblit v1.8.0