detail.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <template>
  2. <div class="system-edit-dic-container">
  3. <!-- 日志详情 -->
  4. <el-dialog :title="$t('message.alarmCenter.dialogTitleLogDetail')" v-model="isShowDialog" width="700">
  5. <el-descriptions
  6. :column="2"
  7. border
  8. >
  9. <!-- 规则名称 -->
  10. <el-descriptions-item :label="$t('message.alarmCenter.labels.ruleName')">{{ ruleForm.ruleName }}</el-descriptions-item>
  11. <!-- 告警类型 -->
  12. <el-descriptions-item :label="$t('message.alarmCenter.labels.alarmType')">
  13. <!-- 规则告警 -->
  14. <span v-if="ruleForm.type == 1">{{$t('message.alarmCenter.ruleAlarm')}}</span>
  15. <!-- 设备自主告警 -->
  16. <span v-else-if="ruleForm.type == 2">{{$t('message.alarmCenter.deviceSelfAlarm')}}</span>
  17. <!-- 规则告警升级 -->
  18. <span v-else-if="ruleForm.type == 3">{{$t('message.alarmCenter.ruleAlarmUpgrade')}}</span>
  19. <!-- 设备告警 -->
  20. <span v-else>{{$t('message.alarmCenter.deviceAlarm')}}</span>
  21. </el-descriptions-item>
  22. <!-- 产品名称 -->
  23. <el-descriptions-item :label="$t('message.alarmCenter.labels.productName')">{{ product_name }}</el-descriptions-item>
  24. <!-- 设备名称 -->
  25. <el-descriptions-item :label="$t('message.alarmCenter.labels.deviceName')">{{ devcie_name }}</el-descriptions-item>
  26. <!-- 告警级别 -->
  27. <el-descriptions-item :label="$t('message.alarmCenter.labels.alarmLevel')">{{ alarmLevel_name }}</el-descriptions-item>
  28. <!-- 告警时间 -->
  29. <el-descriptions-item :label="$t('message.alarmCenter.labels.alarmTime')">{{ ruleForm.createdAt }}</el-descriptions-item>
  30. <!-- 告警数据 -->
  31. <el-descriptions-item :label="$t('message.alarmCenter.labels.alarmData')" span="2">
  32. <JsonViewer style="width:100%;" :value="jsonData" boxed sort theme="jv-dark" />
  33. </el-descriptions-item>
  34. <!-- 处理意见 -->
  35. <el-descriptions-item :label="$t('message.alarmCenter.labels.handleOpinion')" span="2">{{ ruleForm.content }}</el-descriptions-item>
  36. </el-descriptions>
  37. <template #footer>
  38. <span class="dialog-footer">
  39. <!-- 取消 -->
  40. <el-button @click="onCancel">{{ $t('message.alarmCenter.actions.cancel') }}</el-button>
  41. </span>
  42. </template>
  43. </el-dialog>
  44. </div>
  45. </template>
  46. <script lang="ts">
  47. import { reactive, toRefs, defineComponent, computed } from 'vue';
  48. import api from '/@/api/alarm';
  49. import 'vue3-json-viewer/dist/index.css';
  50. import { useI18n } from 'vue-i18n';
  51. interface DicState {
  52. isShowDialog: boolean;
  53. ruleForm: any;
  54. product_name: '';
  55. devcie_name: '';
  56. alarmLevel_name: '';
  57. jsonData: {};
  58. }
  59. export default defineComponent({
  60. name: 'Edit',
  61. setup() {
  62. const { locale, t } = useI18n();
  63. const currentLocale = computed(() => locale.value);
  64. const state = reactive<DicState>({
  65. isShowDialog: false,
  66. product_name: '',
  67. devcie_name: '',
  68. alarmLevel_name: '',
  69. ruleForm: {},
  70. jsonData: {},
  71. });
  72. // 打开弹窗
  73. const openDialog = (row: any) => {
  74. //resetForm();
  75. api.log.detail(row.id).then((res: any) => {
  76. state.ruleForm = res.data;
  77. state.jsonData = JSON.parse(res.data.data);
  78. state.product_name = res.data.product.name;
  79. state.devcie_name = res.data.devcie.name;
  80. state.alarmLevel_name = res.data.alarmLevel.name;
  81. });
  82. state.isShowDialog = true;
  83. };
  84. // const resetForm = () => {
  85. // state.ruleForm = {};
  86. // };
  87. // 关闭弹窗
  88. const closeDialog = () => {
  89. state.isShowDialog = false;
  90. };
  91. // 取消
  92. const onCancel = () => {
  93. closeDialog();
  94. };
  95. return {
  96. currentLocale,
  97. openDialog,
  98. closeDialog,
  99. onCancel,
  100. ...toRefs(state),
  101. };
  102. },
  103. });
  104. </script>
  105. <style scoped lang="scss">
  106. .el-form-item {
  107. margin-bottom: 0;
  108. }
  109. </style>