Browse Source

feat(monitor): unable to go online

Casper Dai 2 năm trước cách đây
mục cha
commit
b50fc3b4ae

+ 3 - 1
src/api/asset.js

@@ -46,7 +46,9 @@ export function getAssetsByQuery (query) {
     })
   }).then(({ data, totalCount }) => {
     data.forEach(asset => {
-      if (asset.status !== State.DRAFT) {
+      if (asset.status === State.DRAFT) {
+        asset.draft = '解析中'
+      } else {
         const tag = asset.tag
         asset.file = {
           type: asset.type,

+ 1 - 1
src/components/table/Table/Column.vue

@@ -75,7 +75,7 @@ export default {
       if (!value) {
         return this.$createElement('div', {
           staticClass: 'o-thumbnail u-font-size--sm'
-        }, '-')
+        }, data.draft || '-')
       }
       const { on } = this.schema
       const thumb = value.thumb || (value.type === AssetType.IMAGE ? value.url : null)

+ 16 - 0
src/views/realm/settings/api.js

@@ -90,3 +90,19 @@ export function updateOnlineRefreshInterval (data) {
     data
   })
 }
+
+export function getExceptionOfflineConfig () {
+  return send({
+    url: '/deviceOnlineInfoDetail/getExceptionOfflineConfig',
+    method: 'GET',
+    params: addTenant({})
+  })
+}
+
+export function updateExceptionOfflineConfig (data) {
+  return update({
+    url: '/deviceOnlineInfoDetail/updateExceptionOfflineConfig',
+    method: 'POST',
+    data
+  })
+}

+ 135 - 0
src/views/realm/settings/components/ErrorOfflineAlarmConfigDialog.vue

@@ -0,0 +1,135 @@
+<template>
+  <confirm-dialog
+    ref="configDialog"
+    :title="title"
+    @confirm="onSave"
+  >
+    <div class="u-align-self--center">
+      <div
+        v-if="type === 'exception_continued_seconds'"
+        class="c-sibling-item--v far"
+      >
+        <div class="l-flex--row c-sibling-item--v">
+          <div class="c-sibling-item far">网络通畅但持续</div>
+          <el-input-number
+            v-model="config.paramValue"
+            class="c-sibling-item far u-width--xs"
+            controls-position="right"
+            :min="30"
+            step-strictly
+          />
+          <div class="c-sibling-item far">秒未上线则判定为异常状态</div>
+        </div>
+      </div>
+      <div
+        v-if="type === 'exception_again_trigger_seconds'"
+        class="c-sibling-item--v far"
+      >
+        <div class="l-flex--row c-sibling-item--v u-line-height--md">
+          <div class="c-sibling-item far">
+            <el-radio
+              v-model="enabled"
+              :label="false"
+            >
+              方式1:
+            </el-radio>
+          </div>
+          <div class="c-sibling-item far">仅初次检测到时预警,不重复预警</div>
+        </div>
+        <div class="l-flex--row c-sibling-item--v u-line-height--md">
+          <div class="c-sibling-item far">
+            <el-radio
+              v-model="enabled"
+              :label="true"
+            >
+              方式2:
+            </el-radio>
+          </div>
+          <div class="c-sibling-item far">持续预警,间隔</div>
+          <el-input-number
+            v-model="config.paramValue"
+            class="c-sibling-item far u-width--xs"
+            controls-position="right"
+            :min="60"
+            step-strictly
+            :disabled="!enabled"
+          />
+          <div class="c-sibling-item far">秒后再次预警</div>
+        </div>
+      </div>
+      <div
+        v-if="type === 'exception_intervene_seconds'"
+        class="c-sibling-item--v far"
+      >
+        <div class="l-flex--row c-sibling-item--v">
+          <span class="c-grid-form__label c-sibling-item">开启</span>
+
+          <el-switch
+            v-model="enabled"
+            class="c-sibling-item"
+            active-color="#13ce66"
+            inactive-color="#ff4949"
+          />
+        </div>
+        <div
+          :style="{ visibility: enabled ? 'visible' : 'hidden' }"
+          class="l-flex--row c-sibling-item--v"
+        >
+          <div class="c-sibling-item far">持续</div>
+          <div class="c-sibling-item far">
+            <el-input-number
+              v-model="config.paramValue"
+              controls-position="right"
+              :min="60"
+              step-strictly
+            />
+          </div>
+          <div class="c-sibling-item far">秒后触发重启</div>
+        </div>
+      </div>
+    </div>
+  </confirm-dialog>
+</template>
+
+<script>
+import {
+  getExceptionOfflineConfig,
+  updateExceptionOfflineConfig
+} from '../api'
+
+export default {
+  name: 'ErrorOfflineAlarmConfigDialog',
+  data () {
+    return {
+      type: '',
+      title: '',
+      config: {},
+      enabled: false
+    }
+  },
+  methods: {
+    show (type, title) {
+      this.type = type
+      this.title = title
+      getExceptionOfflineConfig().then(({ data }) => {
+        this.config = data?.filter(i => i.paramKey === type)[0] || {}
+        this.$refs.configDialog.show()
+        if (this.config.paramValue === '-1') {
+          this.enabled = false
+          this.config.paramValue = '0'
+        } else {
+          this.enabled = true
+        }
+      })
+    },
+    onSave (done) {
+      updateExceptionOfflineConfig({
+        id: this.config.id,
+        paramValue: this.enabled ? `${this.config.paramValue}` : '-1'
+      }).then(() => {
+        done()
+      })
+    }
+  }
+}
+</script>

+ 28 - 1
src/views/realm/settings/index.vue

@@ -62,6 +62,27 @@
         视频缓冲垫片
       </button>
     </div>
+    <span class="c-sibling-item--v u-font-size--sm u-bold">播控器状态监测</span>
+    <div class="c-sibling-item--v l-grid--info mini">
+      <button
+        class="o-button"
+        @click="onErrorOfflineAlarmConfig('exception_continued_seconds', '监测条件')"
+      >
+        监测条件
+      </button>
+      <button
+        class="o-button"
+        @click="onErrorOfflineAlarmConfig('exception_again_trigger_seconds', '预警方式')"
+      >
+        预警方式
+      </button>
+      <!-- <button
+        class="o-button"
+        @click="onErrorOfflineAlarmConfig('exception_intervene_seconds', '干预措施')"
+      >
+        干预措施
+      </button> -->
+    </div>
     <alarm-strat-config-dialog ref="alarmStratConfigDialog" />
     <auto-restart-config-dialog ref="autoRestartConfigDialog" />
     <online-refresh-config-dialog ref="onlineRefreshConfigDialog" />
@@ -70,6 +91,7 @@
     <temperature-Threshold-config-dialog ref="temperatureThresholdConfigDialog" />
     <deviation-Threshold-config-dialog ref="deviationThresholdConfigDialog" />
     <spacer-config-dialog ref="spacerConfigDialog" />
+    <error-offline-alarm-configDialog ref="errorOfflineAlarmConfigDialog" />
   </wrapper>
 </template>
 
@@ -82,6 +104,7 @@ import UnattendConfigDialog from './components/UnattendConfigDialog.vue'
 import TemperatureThresholdConfigDialog from './components/TemperatureThresholdConfigDialog.vue'
 import DeviationThresholdConfigDialog from './components/DeviationThresholdConfigDialog.vue'
 import SpacerConfigDialog from './components/SpacerConfigDialog.vue'
+import ErrorOfflineAlarmConfigDialog from './components/ErrorOfflineAlarmConfigDialog.vue'
 
 export default {
   name: 'TenantSettings',
@@ -93,7 +116,8 @@ export default {
     UnattendConfigDialog,
     TemperatureThresholdConfigDialog,
     DeviationThresholdConfigDialog,
-    SpacerConfigDialog
+    SpacerConfigDialog,
+    ErrorOfflineAlarmConfigDialog
   },
   methods: {
     onAlarmStratConfig () {
@@ -119,6 +143,9 @@ export default {
     },
     onSpacerConfig () {
       this.$refs.spacerConfigDialog.show()
+    },
+    onErrorOfflineAlarmConfig (type, title) {
+      this.$refs.errorOfflineAlarmConfigDialog.show(type, title)
     }
   }
 }

+ 4 - 4
src/views/screen/material/media/index.vue

@@ -106,13 +106,13 @@ export default {
               },
               on: { edit: val => this.onEdit(data, val) }
             })
-            : data.originalName, 'class-name': 'c-edit-column', 'min-width': 100 },
+            : data.originalName, 'class-name': 'c-edit-column', 'min-width': 120 },
           { prop: 'ai', label: 'AI审核', type: 'tag' },
-          { prop: 'statusTag', type: 'tag' },
+          // { prop: 'statusTag', type: 'tag' },
           { prop: 'size', label: '资源大小', 'align': 'right' },
           { prop: 'diff', label: '其他', 'align': 'right' },
           { prop: 'userName', label: '上传人', 'align': 'right' },
-          { prop: 'createTime', label: '上传时间', 'align': 'right' },
+          // { prop: 'createTime', label: '上传时间', 'align': 'right' },
           { type: 'invoke', render: [
             { label: '查看', allow: ({ file }) => !!file, on: this.onView },
             { label: '删除', allow: this.canDel, on: this.onDel }
@@ -146,7 +146,7 @@ export default {
       asset.typeInfo = AssetTypeInfo[asset.type]
       asset.size = parseByte(asset.size)
       asset.ai = getAIState(asset)
-      asset.statusTag = this.getStatusTag(asset)
+      // asset.statusTag = this.getStatusTag(asset)
       return asset
     },
     getStatusTag ({ status, remark }) {