Newer
Older
smartwell_front / src / views / home / alarm / history / index.vue
<!--
  Description: 报警管理-历史报警
  Author: 李亚光
  Date: 2023-06-28
 -->
<script lang="ts" setup name="HistoryAlarm">
// 表格数据
const list = ref([
  {
    alarmTypeName: '闸井浓度超限',
    alarmRank: '一级',
    alarmReason: '燃气浓度23%vol',
    position: 'N121422南小街中压',
    deviceType: '燃气智能监测终端',
    deviceNo: '342022010027',
    dept: '第一分公司/运维1所/1班',
    status: '未读',
    alarmTime: '',
  },
  {
    alarmTypeName: '闸井浓度超限',
    alarmRank: '二级',
    alarmReason: '燃气浓度23%vol',
    position: 'N121422南小街中压',
    deviceType: '燃气智能监测终端',
    deviceNo: '342022010027',
    dept: '第一分公司/运维1所/1班',
    status: '未读',
    alarmTime: '',
  },
  {
    alarmTypeName: '疑似第三方破坏',
    alarmRank: '一级',
    alarmReason: '桩倾斜报警',
    position: 'N121422南小街中压',
    deviceType: '智能监测桩',
    deviceNo: '342022010027',
    dept: '第一分公司/运维1所/1班',
    status: '已确认',
    alarmTime: '',
  },
  {
    alarmTypeName: '设备故障',
    alarmRank: '三级',
    alarmReason: '传感器异常',
    position: '422南小街中压',
    deviceType: '管线哨兵',
    deviceNo: '342022010027',
    dept: '第一分公司/运维1所/1班',
    status: '挂起',
    alarmTime: '',
  },
  {
    alarmTypeName: '设备故障',
    alarmRank: '三级',
    alarmReason: '传感器异常',
    position: '422南小街中压',
    deviceType: '管线哨兵',
    deviceNo: '342022010027',
    dept: '第一分公司/运维1所/1班',
    status: '挂起',
    alarmTime: '',
  },
  {
    alarmTypeName: '设备故障',
    alarmRank: '三级',
    alarmReason: '传感器异常',
    position: '422南小街中压',
    deviceType: '管线哨兵',
    deviceNo: '342022010027',
    dept: '第一分公司/运维1所/1班',
    status: '挂起',
    alarmTime: '',
  },
  {
    alarmTypeName: '设备故障',
    alarmRank: '三级',
    alarmReason: '传感器异常',
    position: '422南小街中压',
    deviceType: '管线哨兵',
    deviceNo: '342022010027',
    dept: '第一分公司/运维1所/1班',
    status: '挂起',
    alarmTime: '',
  },
  {
    alarmTypeName: '设备故障',
    alarmRank: '三级',
    alarmReason: '传感器异常',
    position: '422南小街中压',
    deviceType: '管线哨兵',
    deviceNo: '342022010027',
    dept: '第一分公司/运维1所/1班',
    status: '挂起',
    alarmTime: '',
  },
])
const total = ref(0)
// 初始展示列
const columns = ref<any>([
  { text: '报警类型', value: 'alarmTypeName', align: 'center' },
  { text: '报警等级', value: 'alarmRank', align: 'center' },
  { text: '报警原因', value: 'alarmReason', align: 'center' },
  { text: '位置', value: 'position', align: 'center' },
  { text: '设备类型', value: 'deviceType', align: 'center' },
  { text: '设备编号', value: 'deviceNo', align: 'center' },
  { text: '管理单位', value: 'dept', align: 'center' },
  { text: '状态', value: 'status', align: 'center' },
  { text: '报警时间', value: 'alarmTime', align: 'center' },
])
// 最终展示列
const columnsConfig = ref([])
// 修改列
const editColumns = (data: any) => {
  columnsConfig.value = data
}
const loadingTable = ref(true)
//  查询条件
const listQuery = ref({
  limit: 20,
  offset: 1,
})
// 开始结束时间
const datetimerange = ref()
watch(() => datetimerange.value, (newVal) => {
  // listQuery.createTimeStart = ''
  // listQuery.createTimeEnd = ''
  if (Array.isArray(newVal)) {
    if (newVal.length) {
      // listQuery.createTimeStart = `${newVal[0]} 00:00:00`
      // listQuery.createTimeEnd = `${newVal[1]} 23:59:59`
    }
  }
})
// 查询数据
const fetchData = () => {
  setTimeout(() => {
    loadingTable.value = false
  })
}
// 重置查询条件f
const reset = () => {

}
// 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写
const changePage = (val: { size: number; page: number }) => {
  if (val && val.size) {
    listQuery.value.limit = val.size
  }
  if (val && val.page) {
    listQuery.value.offset = val.page
  }
  fetchData()
}

onMounted(() => {
  fetchData()
})
</script>

<template>
  <!-- 布局 -->
  <app-container>
    <!-- 筛选条件 -->
    <search-area :need-clear="true" @search="fetchData" @clear="reset">
      <search-item>
        <el-select v-model="listQuery.keywords" placeholder="报警类别" clearable class="select" style="width: 192px;" />
      </search-item>
      <search-item>
        <el-select v-model="listQuery.keywords" placeholder="报警类型" clearable class="select" style="width: 192px;" />
      </search-item>
      <search-item>
        <el-select v-model="listQuery.keywords" placeholder="报警等级" clearable class="select" style="width: 192px;" />
      </search-item>
      <search-item>
        <el-select v-model="listQuery.keywords" placeholder="设备类型" clearable class="select" style="width: 192px;" />
      </search-item>
      <search-item>
        <el-select v-model="listQuery.keywords" placeholder="报警状态" clearable class="select" style="width: 192px;" />
      </search-item>
      <search-item>
        <el-input v-model.trim="listQuery.keywords" placeholder="位置" clearable />
      </search-item>
      <search-item>
        <el-input v-model.trim="listQuery.keywords" placeholder="设备编号" clearable />
      </search-item>
      <search-item>
        <dept-select v-model="listQuery.keywords" placeholder="管理单位" :clearable="true" class="select" style="width: 192px;" />
      </search-item>
      <search-item>
        <el-date-picker
          v-model="datetimerange" type="datetimerange" format="YYYY-MM-DD HH:mm:ss"
          value-format="YYYY-MM-DD HH:mm:ss" range-separator="至" start-placeholder="报警开始时间" end-placeholder="报警结束时间"
          clearable
        />
      </search-item>
    </search-area>
    <!-- 表头标题 -->
    <table-container
      :is-config="true" config-title="history-alarm" :columns="columns" :config-columns="columnsConfig"
      :edit="editColumns"
    >
      <template #btns-right>
        <!-- 操作 -->
        <div>
          <el-button type="primary">
            导出
          </el-button>
        </div>
      </template>
      <!-- 查询结果Table显示 -->
      <normal-table
        :data="list" :total="total" :columns="columnsConfig" :query="listQuery" :list-loading="loadingTable"
        @change="changePage"
      >
        <template #preColumns>
          <!-- <el-table-column label="选择" width="55" align="center">
             <template #default="scope">
               <el-radio v-model="select" :label="scope.$index + 1" class="radio" />
             </template>
  </el-table-column> -->
          <el-table-column label="序号" width="55" align="center">
            <template #default="scope">
              {{ (listQuery.offset - 1) * listQuery.limit + scope.$index + 1 }}
            </template>
          </el-table-column>
        </template>
        <template #columns>
          <el-table-column label="操作" align="center" width="80">
            <template #default="scope">
              <el-button type="primary" link size="small" @click="detail(scope.row)">
                查看
              </el-button>
            </template>
          </el-table-column>
        </template>
      </normal-table>
    </table-container>
  </app-container>
</template>