Переглянути джерело

handle facility detail request failures

Kazerin 1 тиждень тому
батько
коміт
593e29bc22

+ 4 - 0
src/views/subSystem/basic/pipeInfo/index.vue

@@ -418,9 +418,13 @@ export default {
     },
     /** 详情按钮操作 */
     handleDetail(row) {
+      this.errorMessage = ''
+      this.retryAction = () => this.handleDetail(row)
       getPipeInfo(row.id).then(response => {
         this.detailData = response.data
         this.detailVisible = true
+      }).catch(error => {
+        this.errorMessage = getRequestErrorMessage(error, '管网详情查询失败,请稍后重试')
       })
     },
     /** 提交按钮 */

+ 4 - 0
src/views/subSystem/basic/pumpStation/index.vue

@@ -354,9 +354,13 @@ export default {
       })
     },
     handleDetail(row) {
+      this.errorMessage = ''
+      this.retryAction = () => this.handleDetail(row)
       getPumpStation(row.id).then(response => {
         this.detailData = response.data
         this.detailVisible = true
+      }).catch(error => {
+        this.errorMessage = getRequestErrorMessage(error, '泵站详情查询失败,请稍后重试')
       })
     },
     submitForm() {

+ 4 - 0
src/views/subSystem/basic/waterPlant/index.vue

@@ -359,9 +359,13 @@ export default {
       })
     },
     handleDetail(row) {
+      this.errorMessage = ''
+      this.retryAction = () => this.handleDetail(row)
       getWaterPlant(row.id).then(response => {
         this.detailData = response.data
         this.detailVisible = true
+      }).catch(error => {
+        this.errorMessage = getRequestErrorMessage(error, '水厂详情查询失败,请稍后重试')
       })
     },
     submitForm() {

+ 4 - 0
src/views/subSystem/basic/waterSource/index.vue

@@ -364,9 +364,13 @@ export default {
       })
     },
     handleDetail(row) {
+      this.errorMessage = ''
+      this.retryAction = () => this.handleDetail(row)
       getWaterSource(row.id).then(response => {
         this.detailData = response.data
         this.detailVisible = true
+      }).catch(error => {
+        this.errorMessage = getRequestErrorMessage(error, '水源地详情查询失败,请稍后重试')
       })
     },
     submitForm() {

+ 4 - 0
src/views/subSystem/basic/waterUserInfo/index.vue

@@ -365,9 +365,13 @@ export default {
       })
     },
     handleDetail(row) {
+      this.errorMessage = ''
+      this.retryAction = () => this.handleDetail(row)
       getWaterUser(row.id).then(response => {
         this.detailData = response.data
         this.detailVisible = true
+      }).catch(error => {
+        this.errorMessage = getRequestErrorMessage(error, '用水户详情查询失败,请稍后重试')
       })
     },
     submitForm() {

+ 13 - 0
tests/waterFacilityQuery.test.mjs

@@ -1,5 +1,7 @@
 import test from 'node:test'
 import assert from 'node:assert/strict'
+import fs from 'node:fs'
+import path from 'node:path'
 
 import {
   buildWaterFacilityQuery,
@@ -42,3 +44,14 @@ test('getRequestErrorMessage exposes a useful server error', () => {
   assert.equal(getRequestErrorMessage(new Error('网络断开'), '查询失败'), '网络断开')
   assert.equal(getRequestErrorMessage({}, '查询失败'), '查询失败')
 })
+
+test('facility detail requests retain a retryable error state', () => {
+  const pages = ['pipeInfo', 'waterPlant', 'pumpStation', 'waterSource', 'waterUserInfo']
+  for (const page of pages) {
+    const file = path.resolve('src/views/subSystem/basic', page, 'index.vue')
+    const source = fs.readFileSync(file, 'utf8')
+    const detailMethod = source.match(/handleDetail\(row\)\s*\{([\s\S]*?)\n\s*\},/)
+    assert.ok(detailMethod, `${page} detail method should exist`)
+    assert.match(detailMethod[1], /\.catch\(error => \{[\s\S]*?this\.errorMessage = getRequestErrorMessage\(/, page)
+  }
+})