<script setup lang="ts">
import { ref } from 'vue'

interface MajorInfo {
  college: string
  majors: {
    name: string
    degree: string
    duration: number
    category: string
    description: string
    tags: string[]
  }[]
}

const searchKeyword = ref('')
const selectedCollege = ref('全部')
const selectedCategory = ref('全部')

const colleges = ['全部', '地球科学与技术学院', '石油工程学院', '化学化工学院', '机电工程学院', '储运与建筑工程学院']
const categories = ['全部', '工学', '理学', '管理学', '文学']

const majorsData: MajorInfo[] = [
  {
    college: '地球科学与技术学院',
    majors: [
      {
        name: '勘查技术与工程',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备地质学、地球物理学等方面的基本理论和基本知识，能在资源勘查、工程勘察等部门从事勘查、设计、施工、管理等方面工作的高级工程技术人才。',
        tags: ['国家级特色专业', '双一流学科'],
      },
      {
        name: '地质学',
        degree: '理学学士',
        duration: 4,
        category: '理学',
        description: '培养具备地质学基本理论、基本知识，掌握地质调查、矿产资源勘查、地质工程设计等基本技能的专门人才。',
        tags: ['省级重点学科'],
      },
      {
        name: '资源勘查工程',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备扎实的地质学基础，掌握矿产资源勘查与评价的基本方法和技能，能在资源勘查、开发等领域从事技术和管理工作的复合型人才。',
        tags: ['国家特色专业'],
      },
      {
        name: '地球物理学',
        degree: '理学学士',
        duration: 4,
        category: '理学',
        description: '培养具备地球物理学的基础理论和基本技能，能在地球物理勘查、地震监测、工程物探等领域从事技术工作的专门人才。',
        tags: ['省级特色专业'],
      },
    ],
  },
  {
    college: '石油工程学院',
    majors: [
      {
        name: '海洋油气工程',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备海洋油气工程领域的专业知识，能在海洋油气田开发、海洋工程设计等方面工作的高级工程技术人才。',
        tags: ['新兴专业', '国家战略专业'],
      },
      {
        name: '石油工程',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备石油工程领域的基本理论和专业知识，能在油气田开发、钻井工程、采油工程等领域从事技术和管理工作的复合型人才。',
        tags: ['国家级特色专业', '双一流学科'],
      },
      {
        name: '碳储科学与工程',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备碳捕集、利用与封存(CCUS)领域的专业知识，能在碳减排、碳交易、碳中和等领域工作的创新型工程技术人才。',
        tags: ['新兴专业', '绿色低碳'],
      },
    ],
  },
  {
    college: '化学化工学院',
    majors: [
      {
        name: '化学',
        degree: '理学学士',
        duration: 4,
        category: '理学',
        description: '培养具备化学的基本理论、基本知识和基本技能，能在化学及相关领域从事科研、教学、技术等工作的高级专门人才。',
        tags: ['省级重点学科'],
      },
      {
        name: '化学工程与工艺',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备化学工程与工艺方面的基本理论和基本知识，能在化工、炼油、冶金、能源等部门从事工程设计、技术开发、生产管理等工作的高级工程技术人才。',
        tags: ['国家级特色专业'],
      },
      {
        name: '应用化学',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备应用化学方面的基本理论和基本知识，能在化工、材料、医药、环保等领域从事技术开发、生产管理等工作的高级工程技术人才。',
        tags: ['省级特色专业'],
      },
      {
        name: '环境工程',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备环境工程领域的基本理论和专业知识，能在环境污染防治、环境监测、环境规划等领域从事技术和管理工作的复合型人才。',
        tags: ['绿色低碳', '新兴专业'],
      },
      {
        name: '能源化学工程',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备能源化学工程领域的专业知识，能在新能源、清洁能源、能源转化等领域从事技术开发和工程设计工作的高级工程技术人才。',
        tags: ['新兴专业', '国家战略专业'],
      },
    ],
  },
  {
    college: '机电工程学院',
    majors: [
      {
        name: '安全工程',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备安全工程领域的专业知识，能在安全监察、安全管理、安全评价、安全设计等领域从事技术和管理工作的复合型人才。',
        tags: ['国家级特色专业'],
      },
      {
        name: '工业设计',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备工业设计的基本理论和基本技能，能在产品造型设计、视觉传达设计、环境设计等领域从事设计工作的复合型人才。',
        tags: ['省级特色专业'],
      },
      {
        name: '智能制造工程',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备智能制造领域的基本理论和专业知识，能在智能制造系统设计、智能装备开发、工业互联网等领域从事技术工作的复合型人才。',
        tags: ['新兴专业', '国家战略专业'],
      },
      {
        name: '机械设计制造及其自动化',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备机械设计制造及其自动化方面的基本理论和基本知识，能在机械制造、自动化控制等领域从事设计、制造、运行管理等工作的高级工程技术人才。',
        tags: ['国家级特色专业'],
      },
    ],
  },
  {
    college: '储运与建筑工程学院',
    majors: [
      {
        name: '土木工程',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备土木工程领域的基本理论和专业知识，能在房屋建筑、地下建筑、桥梁隧道等领域从事设计、施工、管理等工作的高级工程技术人才。',
        tags: ['省级特色专业'],
      },
      {
        name: '工程力学',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备工程力学的基本理论和基本技能，能在工程结构分析、强度计算、优化设计等领域从事技术工作的专门人才。',
        tags: ['省级重点学科'],
      },
      {
        name: '建筑环境与能源应用工程',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备建筑环境与能源应用工程领域的专业知识，能在暖通空调、燃气供应、建筑节能等领域从事设计、施工、管理等工作的高级工程技术人才。',
        tags: ['省级特色专业', '绿色低碳'],
      },
      {
        name: '油气储运工程',
        degree: '工学学士',
        duration: 4,
        category: '工学',
        description: '培养具备油气储运工程方面的基本理论和基本知识，能在油气储存、运输、配送等领域从事设计、施工、管理等工作的高级工程技术人才。',
        tags: ['国家级特色专业', '双一流学科'],
      },
    ],
  },
]

const filteredMajors = computed(() => {
  let result = majorsData

  // 按学院筛选
  if (selectedCollege.value !== '全部') {
    result = result.filter(item => item.college === selectedCollege.value)
  }

  // 展开所有专业
  let allMajors: { college: string, major: any }[] = []
  result.forEach(item => {
    item.majors.forEach(major => {
      allMajors.push({ college: item.college, major })
    })
  })

  // 按类别筛选
  if (selectedCategory.value !== '全部') {
    allMajors = allMajors.filter(item => item.major.category === selectedCategory.value)
  }

  // 按关键词搜索
  if (searchKeyword.value) {
    const keyword = searchKeyword.value.toLowerCase()
    allMajors = allMajors.filter(item =>
      item.major.name.toLowerCase().includes(keyword) ||
      item.major.description.toLowerCase().includes(keyword),
    )
  }

  return allMajors
})
</script>

<template>
  <div class="rounded-lg bg-white p-5 shadow-sm dark:bg-slate-800">
    <div class="mb-4 flex items-center justify-between">
      <h2 class="border-l-4 border-orange-500 pl-3 text-lg text-gray-900 font-bold dark:text-white">
        开设专业
      </h2>
    </div>

    <!-- 搜索和筛选 -->
    <div class="mb-5 space-y-3">
      <!-- 搜索框 -->
      <div class="relative">
        <input
          v-model="searchKeyword"
          type="text"
          placeholder="搜索专业名称或描述..."
          class="w-full rounded border border-gray-200 bg-white px-4 py-2 pl-10 text-sm dark:border-slate-600 dark:bg-slate-700 dark:text-white"
        >
        <span class="absolute left-3 top-2.5 text-gray-400">🔍</span>
      </div>

      <!-- 筛选条件 -->
      <div class="flex flex-wrap gap-3">
        <select
          v-model="selectedCollege"
          class="rounded border border-gray-200 bg-white px-3 py-2 text-sm dark:border-slate-600 dark:bg-slate-700 dark:text-white"
        >
          <option v-for="college in colleges" :key="college" :value="college">
            {{ college }}
          </option>
        </select>
        <select
          v-model="selectedCategory"
          class="rounded border border-gray-200 bg-white px-3 py-2 text-sm dark:border-slate-600 dark:bg-slate-700 dark:text-white"
        >
          <option v-for="category in categories" :key="category" :value="category">
            {{ category }}
          </option>
        </select>
        <div class="ml-auto text-sm text-gray-500 dark:text-gray-400">
          共找到 <span class="font-bold text-orange-600 dark:text-orange-400">{{ filteredMajors.length }}</span> 个专业
        </div>
      </div>
    </div>

    <!-- 专业列表 -->
    <div v-if="filteredMajors.length > 0" class="space-y-4">
      <div
        v-for="(item, idx) in filteredMajors"
        :key="idx"
        class="overflow-hidden rounded-lg border border-gray-200 dark:border-slate-700"
      >
        <div class="bg-gray-50 px-4 py-2 text-sm font-medium text-gray-700 dark:bg-slate-700 dark:text-gray-200">
          {{ item.college }}
        </div>
        <div class="p-4">
          <div class="mb-2 flex items-start justify-between">
            <h3 class="text-base font-bold text-gray-900 dark:text-white">
              {{ item.major.name }}
            </h3>
            <span class="flex-shrink-0 rounded bg-blue-100 px-2 py-1 text-xs text-blue-700 dark:bg-blue-900/30 dark:text-blue-300">
              {{ item.major.degree }}
            </span>
          </div>
          <div class="mb-3 flex gap-2 text-sm text-gray-500 dark:text-gray-400">
            <span>学制：{{ item.major.duration }}年</span>
            <span>类别：{{ item.major.category }}</span>
          </div>
          <p class="mb-3 text-sm text-gray-600 leading-relaxed dark:text-gray-300">
            {{ item.major.description }}
          </p>
          <div class="flex flex-wrap gap-2">
            <span
              v-for="(tag, tagIdx) in item.major.tags"
              :key="tagIdx"
              class="rounded bg-orange-100 px-2 py-0.5 text-xs text-orange-700 dark:bg-orange-900/30 dark:text-orange-300"
            >
              {{ tag }}
            </span>
          </div>
        </div>
      </div>
    </div>

    <!-- 数据为空提示 -->
    <div v-else class="py-12 text-center text-gray-500 dark:text-gray-400">
      <div class="mb-2 text-4xl">
        📚
      </div>
      <p>未找到符合条件的专业</p>
      <p class="text-xs">
        请尝试调整筛选条件或搜索关键词
      </p>
    </div>

    <!-- 说明 -->
    <div class="mt-4 rounded-lg bg-orange-50 p-4 text-xs text-gray-600 dark:bg-slate-700/30 dark:text-gray-300">
      <p class="mb-1 font-bold">
        💡 专业说明：
      </p>
      <ul class="list-inside list-disc space-y-1">
        <li>专业设置以教育部最新公布为准</li>
        <li>点击专业标签可查看详细信息</li>
        <li>建议结合个人兴趣和就业前景选择专业</li>
      </ul>
    </div>
  </div>
</template>