<template>
  <div class="hazard-view">
    <header class="page-header">
      <h1>隐患识别</h1>
      <p>智能识别城市生命线潜在安全隐患，提供预警和处置建议</p>
    </header>

    <div class="stats-section">
      <div class="stat-card" v-for="stat in stats" :key="stat.label">
        <div class="stat-value" :style="{ color: stat.color }">{{ stat.value }}</div>
        <div class="stat-label">{{ stat.label }}</div>
      </div>
    </div>

    <div class="hazard-list">
      <div class="list-header">
        <h2>隐患列表</h2>
        <el-button type="primary" size="small">
          <el-icon><Plus /></el-icon>
          上报隐患
        </el-button>
      </div>
      
      <div class="hazard-table">
        <div class="table-header">
          <span class="col-type">类型</span>
          <span class="col-desc">描述</span>
          <span class="col-location">位置</span>
          <span class="col-level">等级</span>
          <span class="col-status">状态</span>
          <span class="col-action">操作</span>
        </div>
        <div v-for="item in hazardList" :key="item.id" class="table-row">
          <span class="col-type">{{ item.type }}</span>
          <span class="col-desc">{{ item.description }}</span>
          <span class="col-location">{{ item.location }}</span>
          <span class="col-level">
            <el-tag :type="getLevelType(item.level)" size="small">{{ item.level }}</el-tag>
          </span>
          <span class="col-status">
            <el-tag :type="getStatusType(item.status)" size="small">{{ item.status }}</el-tag>
          </span>
          <span class="col-action">
            <el-button type="primary" link size="small">查看</el-button>
            <el-button type="primary" link size="small">处理</el-button>
          </span>
        </div>
      </div>
    </div>
  </div>
</template>

<script setup>
import { ref } from 'vue'
import { Plus } from '@element-plus/icons-vue'

const stats = [
  { label: '待处理隐患', value: 12, color: '#ef4444' },
  { label: '处理中', value: 8, color: '#f59e0b' },
  { label: '本月已处理', value: 45, color: '#10b981' },
  { label: '累计识别', value: 328, color: '#7c3aed' }
]

const hazardList = ref([
  { id: 1, type: '供水管网', description: '管道老化存在渗漏风险', location: '红谷滩区丰和大道', level: '高', status: '待处理' },
  { id: 2, type: '燃气管道', description: '阀门锈蚀需要更换', location: '东湖区八一大道', level: '中', status: '处理中' },
  { id: 3, type: '电力设施', description: '变压器负荷过高', location: '西湖区朝阳路', level: '高', status: '待处理' },
  { id: 4, type: '排水系统', description: '雨水井堵塞', location: '青山湖区北京路', level: '低', status: '已处理' }
])

const getLevelType = (level) => {
  const map = { '高': 'danger', '中': 'warning', '低': 'info' }
  return map[level] || 'info'
}

const getStatusType = (status) => {
  const map = { '待处理': 'danger', '处理中': 'warning', '已处理': 'success' }
  return map[status] || 'info'
}
</script>

<style lang="scss" scoped>
.hazard-view {
  padding: 32px 48px;
  height: 100%;
  overflow-y: auto;
}

.page-header {
  margin-bottom: 32px;
  
  h1 {
    font-size: 24px;
    color: #1f2937;
    margin-bottom: 8px;
  }
  
  p {
    color: #6b7280;
    font-size: 14px;
  }
}

.stats-section {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin-bottom: 32px;
  
  .stat-card {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    padding: 24px;
    text-align: center;
    
    .stat-value {
      font-size: 32px;
      font-weight: 600;
      margin-bottom: 8px;
    }
    
    .stat-label {
      color: #6b7280;
      font-size: 14px;
    }
  }
}

.hazard-list {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  padding: 24px;
  
  .list-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
    
    h2 {
      font-size: 18px;
      color: #1f2937;
    }
  }
}

.hazard-table {
  .table-header, .table-row {
    display: grid;
    grid-template-columns: 100px 1fr 180px 80px 80px 120px;
    gap: 16px;
    padding: 12px 16px;
    align-items: center;
  }
  
  .table-header {
    background: #f9fafb;
    border-radius: 8px;
    font-weight: 500;
    color: #6b7280;
    font-size: 13px;
  }
  
  .table-row {
    border-bottom: 1px solid #f3f4f6;
    font-size: 14px;
    color: #374151;
    
    &:last-child {
      border-bottom: none;
    }
    
    &:hover {
      background: #f9fafb;
    }
  }
}
</style>
