_ViewCompany_Alarm.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <script setup lang="ts">
  2. import moment from "moment"
  3. import { ref, withDefaults, onMounted, watch } from "vue"
  4. import { useRoute } from "vue-router"
  5. const route = useRoute()
  6. const props = withDefaults(defineProps<{ id: string }>(), { id: "" })
  7. const cols = ref([
  8. {
  9. name: "设备名称",
  10. field: "device_name",
  11. },
  12. {
  13. name: "告警类型",
  14. field: "warn_type_name",
  15. },
  16. {
  17. name: "告警数据",
  18. field: "warn_value",
  19. },
  20. {
  21. name: "发生时间",
  22. field: "warn_starttime",
  23. },
  24. {
  25. name: "恢复时间",
  26. field: "warn_endtime",
  27. },
  28. {
  29. name: "持续时间",
  30. field: "stay_time",
  31. },
  32. ])
  33. const date = ref<[Date, Date]>([new Date(), new Date()])
  34. const warnType = ref<string | undefined>()
  35. const queryParams = ref({
  36. id: props.id,
  37. begin: moment(date.value[0]).format("YYYYMMDD"),
  38. end: moment(date.value[1]).format("YYYYMMDD"),
  39. //warn_type: warnType.value && warnType.value != "undefined" ? warnType.value : "",
  40. })
  41. function init() {
  42. //
  43. warnType.value = route.query.type as string
  44. }
  45. function query() {
  46. const params: any = {
  47. id: props.id,
  48. begin: moment(date.value[0]).format("YYYYMMDD"),
  49. end: moment(date.value[1]).format("YYYYMMDD"),
  50. }
  51. if (warnType.value) {
  52. params.warn_type = warnType.value
  53. }
  54. queryParams.value = params
  55. }
  56. watch(() => props.id, init)
  57. onMounted(() => {
  58. init()
  59. })
  60. </script>
  61. <template>
  62. <VbDataTable
  63. :header="cols"
  64. url="sys/onlineData/warnTable"
  65. :query-params="queryParams"
  66. method="post"
  67. :has-checkbox="false"
  68. >
  69. <template v-slot:table-tool>
  70. <el-form class="align-items-center" :inline="true">
  71. <el-form-item class="mb-0 me-5 align-items-center" label="日期:">
  72. <el-date-picker
  73. v-model="date"
  74. type="daterange"
  75. range-separator="~"
  76. start-placeholder="开始时间"
  77. end-placeholder="结束时间"
  78. size="default"
  79. />
  80. </el-form-item>
  81. <el-form-item class="mb-0 me-5 align-items-center" label="告警类型:">
  82. <DySelect
  83. v-model:value="warnType"
  84. url="sys/dict/getList?code=000100001&key=temp"
  85. method="get"
  86. :formatRemoteData="(v:any)=>{return v?.list}"
  87. ></DySelect>
  88. </el-form-item>
  89. <el-form-item class="mb-0 me-0 align-items-center">
  90. <el-button class="ms-3 mt-0 btn btn-sm btn-primary" @click="query">查询</el-button>
  91. </el-form-item>
  92. </el-form>
  93. </template>
  94. <template #warn_starttime="{ row }">
  95. {{ moment(row.warn_starttime, "YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") }}
  96. </template>
  97. <template #warn_endtime="{ row }">
  98. {{ moment(row.warn_endtime, "YYYYMMDDHHmmss").format("YYYY-MM-DD HH:mm:ss") }}
  99. </template>
  100. <template #stay_time="{ row }">
  101. {{ moment(row.warn_endtime, "YYYYMMDDHHmmss").diff(moment(row.warn_starttime, "YYYYMMDDHHmmss"), "m") }} 分钟
  102. </template>
  103. </VbDataTable>
  104. </template>