Ver Fonte

fix:修复xlog消息发送失败后一直转圈的问题

Jerry Liang há 1 mês atrás
pai
commit
3c7fccba27
1 ficheiros alterados com 27 adições e 10 exclusões
  1. 27 10
      src/views/xlog/component/xlogCommand.vue

+ 27 - 10
src/views/xlog/component/xlogCommand.vue

@@ -51,7 +51,7 @@
 
 <script setup lang="ts">
 import type { VNodeChild } from 'vue'
-import { NButton, NInput, NLog, NButtonGroup, NSelect, NAutoComplete, NTag } from 'naive-ui'
+import { NButton, NInput, NLog, NButtonGroup, NSelect, NAutoComplete, NTag, useMessage } from 'naive-ui'
 import type { AutoCompleteGroupOption, AutoCompleteOption, SelectOption } from 'naive-ui'
 import { sendXlogCmd } from '@/service/xlog'
 import { useXlogViewsStateStore } from '@/stores/modules/views/xlogViewsState'
@@ -64,6 +64,7 @@ const { uuid, sn, version } = defineProps<{
 }>()
 
 const xlogViewsStateStore = useXlogViewsStateStore()
+const message = useMessage()
 
 let inputCmdIndex = -1
 let inputCmdTemp = ''
@@ -210,21 +211,37 @@ const inputCmdOptionsRenderLabel = (option: SelectOption): VNodeChild => {
 
 const disabledSendCmd = ref<boolean>(true)
 const loadingSendCmd = ref<boolean>(false)
-const handleSendCmd = async () => {
+const handleSendCmd = () => {
   loadingSendCmd.value = true
   const cmdString = inputCmd.value
   let sendCmdString = cmdString
   if (cmdType.value === 'bash_c') {
     sendCmdString = toBashC(cmdString)
   }
-  const res = await sendXlogCmd(uuid, sendCmdString)
-  cmdList.value.push({
-    send: cmdString,
-    recv: res,
-    cmdType: cmdType.value,
-  })
-  loadingSendCmd.value = false
-  logStr.value = res
+  sendXlogCmd(uuid, sendCmdString)
+    .then((res) => {
+      cmdList.value.push({
+        send: cmdString,
+        recv: res,
+        cmdType: cmdType.value,
+      })
+      logStr.value = res
+    })
+    .catch((err) => {
+      // 请求失败(如 500 / 超时)时,提示错误并把失败信息记入命令历史。
+      const errMsg = err instanceof Error ? err.message : String(err)
+      message.error(`命令执行失败:${errMsg}`)
+      cmdList.value.push({
+        send: cmdString,
+        recv: `[执行失败] ${errMsg}`,
+        cmdType: cmdType.value,
+      })
+      logStr.value = `[执行失败] ${errMsg}`
+    })
+    .finally(() => {
+      // 无论成功失败都复位 loading,避免一直转圈。
+      loadingSendCmd.value = false
+    })
 }
 
 const handleInputChange = (value: string) => {