<template>
  <div class="system-settings">
    <!-- 左侧导航栏 -->
    <aside class="sidebar">
      <div class="logo">
        <div class="logo-icon"></div>
        <span>LOGO</span>
      </div>
      <nav class="nav-menu">
        <div class="nav-item" @click="goToDashboard">
          <el-icon><Grid /></el-icon>
          <span>数据仪表台</span>
        </div>
        <div class="nav-item" @click="goToMembers">
          <el-icon><User /></el-icon>
          <span>会员管理</span>
        </div>
        <div class="nav-item" @click="goToOrders">
          <el-icon><ShoppingCart /></el-icon>
          <span>订单管理</span>
        </div>
        <div class="nav-item" @click="goToAPI">
          <el-icon><Document /></el-icon>
          <span>API管理</span>
        </div>
        <div class="nav-item" @click="goToTasks">
          <el-icon><Document /></el-icon>
          <span>生成任务记录</span>
        </div>
        <div class="nav-item active">
          <el-icon><Setting /></el-icon>
          <span>系统设置</span>
        </div>
      </nav>
      <div class="sidebar-footer">
        <div class="online-users">
          当前在线用户: <span class="highlight">87/500</span>
        </div>
        <div class="system-uptime">
          系统运行时间: <span class="highlight">48小时32分</span>
        </div>
      </div>
    </aside>

    <!-- 主内容区域 -->
    <main class="main-content">
      <!-- 顶部搜索栏 -->
      <header class="top-header">
        <div class="search-bar">
          <el-icon class="search-icon"><User /></el-icon>
          <input type="text" placeholder="搜索你想要的内容" class="search-input">
        </div>
        <div class="header-actions">
          <el-icon class="notification-icon"><Bell /></el-icon>
          <div class="user-avatar">
            <div class="avatar-placeholder"></div>
            <el-icon class="dropdown-icon"><ArrowDown /></el-icon>
          </div>
        </div>
      </header>

      <!-- 设置选项卡 -->
      <div class="settings-tabs">
        <div class="tab-nav">
          <div 
            class="tab-item" 
            :class="{ active: activeTab === 'membership' }" 
            @click="activeTab = 'membership'"
          >
            <el-icon><User /></el-icon>
            <span>会员收费标准</span>
          </div>
          <div 
            class="tab-item" 
            :class="{ active: activeTab === 'cleanup' }" 
            @click="activeTab = 'cleanup'"
          >
            <el-icon><Delete /></el-icon>
            <span>任务清理管理</span>
          </div>
        </div>

        <!-- 会员收费标准选项卡 -->
        <div v-if="activeTab === 'membership'" class="tab-content">
          <h2 class="page-title">会员收费标准</h2>
          <div class="membership-cards">
            <el-card v-for="level in membershipLevels" :key="level.id" class="membership-card">
              <div class="card-header">
                <h3>{{ level.name }}</h3>
              </div>
              <div class="card-body">
                <p class="price">${{ level.price }}/月</p>
                <p class="description">{{ level.description }}</p>
              </div>
              <div class="card-footer">
                <el-button type="primary" @click="editLevel(level)">编辑</el-button>
              </div>
            </el-card>
          </div>
        </div>

        <!-- 任务清理管理选项卡 -->
        <div v-if="activeTab === 'cleanup'" class="tab-content">
          <h2 class="page-title">任务清理管理</h2>
          
          <!-- 清理统计信息 -->
          <div class="cleanup-stats">
            <el-card class="stats-card">
              <template #header>
                <div class="card-header">
                  <h3>清理统计信息</h3>
                  <el-button type="primary" @click="refreshStats" :loading="loadingStats">
                    <el-icon><Refresh /></el-icon>
                    刷新
                  </el-button>
                </div>
              </template>
              <div class="stats-content" v-if="cleanupStats">
                <div class="stats-grid">
                  <div class="stat-item">
                    <div class="stat-label">当前任务总数</div>
                    <div class="stat-value">{{ cleanupStats.currentTasks?.textToVideo?.total + cleanupStats.currentTasks?.imageToVideo?.total || 0 }}</div>
                  </div>
                  <div class="stat-item">
                    <div class="stat-label">已完成任务</div>
                    <div class="stat-value">{{ cleanupStats.currentTasks?.textToVideo?.completed + cleanupStats.currentTasks?.imageToVideo?.completed || 0 }}</div>
                  </div>
                  <div class="stat-item">
                    <div class="stat-label">失败任务</div>
                    <div class="stat-value">{{ cleanupStats.currentTasks?.textToVideo?.failed + cleanupStats.currentTasks?.imageToVideo?.failed || 0 }}</div>
                  </div>
                  <div class="stat-item">
                    <div class="stat-label">已归档任务</div>
                    <div class="stat-value">{{ cleanupStats.archives?.completedTasks || 0 }}</div>
                  </div>
                  <div class="stat-item">
                    <div class="stat-label">清理日志数</div>
                    <div class="stat-value">{{ cleanupStats.archives?.cleanupLogs || 0 }}</div>
                  </div>
                  <div class="stat-item">
                    <div class="stat-label">保留天数</div>
                    <div class="stat-value">{{ cleanupStats.config?.retentionDays || 30 }}天</div>
                  </div>
                </div>
              </div>
            </el-card>
          </div>

          <!-- 清理操作 -->
          <div class="cleanup-actions">
            <el-card class="actions-card">
              <template #header>
                <div class="card-header">
                  <h3>清理操作</h3>
                </div>
              </template>
              <div class="actions-content">
                <div class="action-buttons">
                  <el-button 
                    type="primary" 
                    @click="performFullCleanup" 
                    :loading="loadingCleanup"
                    class="action-btn"
                  >
                    <el-icon><Delete /></el-icon>
                    执行完整清理
                  </el-button>
                  <el-button 
                    type="warning" 
                    @click="showUserCleanupDialog = true"
                    class="action-btn"
                  >
                    <el-icon><User /></el-icon>
                    清理指定用户任务
                  </el-button>
                </div>
                <div class="action-description">
                  <p><strong>完整清理：</strong>将成功任务导出到归档表，删除失败任务</p>
                  <p><strong>用户清理：</strong>清理指定用户的所有任务</p>
                </div>
              </div>
            </el-card>
          </div>

          <!-- 清理配置 -->
          <div class="cleanup-config">
            <el-card class="config-card">
              <template #header>
                <div class="card-header">
                  <h3>清理配置</h3>
                </div>
              </template>
              <div class="config-content">
                <el-form :model="cleanupConfig" label-width="120px">
                  <el-form-item label="任务保留天数">
                    <el-input-number 
                      v-model="cleanupConfig.retentionDays" 
                      :min="1" 
                      :max="365"
                      controls-position="right"
                    />
                    <span class="config-tip">任务完成后保留的天数</span>
                  </el-form-item>
                  <el-form-item label="归档保留天数">
                    <el-input-number 
                      v-model="cleanupConfig.archiveRetentionDays" 
                      :min="30" 
                      :max="3650"
                      controls-position="right"
                    />
                    <span class="config-tip">归档数据保留的天数</span>
                  </el-form-item>
                  <el-form-item>
                    <el-button type="primary" @click="saveCleanupConfig" :loading="loadingConfig">
                      保存配置
                    </el-button>
                  </el-form-item>
                </el-form>
              </div>
            </el-card>
          </div>
        </div>
      </div>
    </main>

    <!-- 编辑会员收费标准对话框 -->
    <el-dialog
      v-model="editDialogVisible"
      width="480px"
      :before-close="handleCloseEditDialog"
      class="membership-modal"
      :show-close="false"
    >
      <template #header>
        <div class="modal-header">
          <h2 class="modal-title">会员收费标准</h2>
          <button class="close-btn" @click="handleCloseEditDialog">×</button>
        </div>
      </template>
      
      <div class="modal-content">
        <el-form :model="editForm" :rules="editRules" ref="editFormRef">
          <div class="form-group">
            <label class="form-label">会员等级</label>
            <el-select v-model="editForm.level" placeholder="请选择会员等级" style="width: 100%;">
              <el-option label="免费版会员" value="free"></el-option>
              <el-option label="标准版会员" value="standard"></el-option>
              <el-option label="专业版会员" value="professional"></el-option>
            </el-select>
          </div>
          
          <div class="form-group">
            <label class="form-label">会员价格</label>
            <div class="price-input">
              <span class="price-prefix">$</span>
              <input 
                type="text" 
                v-model="editForm.price" 
                placeholder="0.00" 
                class="form-control"
                @input="handlePriceInput"
              />
            </div>
          </div>
          
          <div class="form-group">
            <label class="form-label">资源点数量</label>
            <input 
              type="number" 
              v-model="editForm.resourcePoints" 
              placeholder="0" 
              min="0"
              class="form-control"
            />
          </div>
          
          <div class="form-group">
            <label class="form-label">会员有效期</label>
            <div class="radio-group">
              <div class="radio-option">
                <input 
                  type="radio" 
                  id="monthly" 
                  v-model="editForm.validityPeriod" 
                  value="monthly" 
                  class="radio-input"
                >
                <label for="monthly" class="radio-label">月付</label>
              </div>
              <div class="radio-option">
                <input 
                  type="radio" 
                  id="quarterly" 
                  v-model="editForm.validityPeriod" 
                  value="quarterly" 
                  class="radio-input"
                >
                <label for="quarterly" class="radio-label">季付</label>
              </div>
              <div class="radio-option">
                <input 
                  type="radio" 
                  id="yearly" 
                  v-model="editForm.validityPeriod" 
                  value="yearly" 
                  class="radio-input"
                >
                <label for="yearly" class="radio-label">年付</label>
              </div>
            </div>
          </div>
        </el-form>
      </div>
      
      <template #footer>
        <div class="modal-footer">
          <button class="btn btn-cancel" @click="handleCloseEditDialog">取消</button>
          <button class="btn btn-save" @click="saveEdit">保存</button>
        </div>
      </template>
    </el-dialog>

    <!-- 用户清理对话框 -->
    <el-dialog
      v-model="showUserCleanupDialog"
      title="清理指定用户任务"
      width="480px"
      :before-close="handleCloseUserCleanupDialog"
    >
      <div class="user-cleanup-content">
        <el-form :model="userCleanupForm" :rules="userCleanupRules" ref="userCleanupFormRef">
          <el-form-item label="用户名" prop="username">
            <el-input 
              v-model="userCleanupForm.username" 
              placeholder="请输入要清理的用户名"
              clearable
            />
          </el-form-item>
          <el-form-item>
            <el-alert
              title="警告"
              type="warning"
              :closable="false"
              show-icon
            >
              <template #default>
                <p>此操作将清理该用户的所有任务，包括：</p>
                <ul>
                  <li>成功任务将导出到归档表</li>
                  <li>失败任务将记录到清理日志</li>
                  <li>原始任务记录将被删除</li>
                </ul>
                <p><strong>此操作不可撤销，请谨慎操作！</strong></p>
              </template>
            </el-alert>
          </el-form-item>
        </el-form>
      </div>
      
      <template #footer>
        <div class="dialog-footer">
          <el-button @click="handleCloseUserCleanupDialog">取消</el-button>
          <el-button 
            type="danger" 
            @click="performUserCleanup" 
            :loading="loadingUserCleanup"
          >
            确认清理
          </el-button>
        </div>
      </template>
    </el-dialog>

<script setup>
import { ref, reactive } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage } from 'element-plus'
import {
  Grid,
  User,
  ShoppingCart,
  Document,
  Setting,
  User as Search,
  Bell,
  User as ArrowDown,
  Delete,
  Refresh
} from '@element-plus/icons-vue'
import cleanupApi from '@/api/cleanup'

const router = useRouter()

// 选项卡状态
const activeTab = ref('membership')

// 会员收费标准相关
const membershipLevels = ref([
  { id: 1, name: '免费版会员', price: '0', resourcePoints: 200, description: '包含200资源点/月' },
  { id: 2, name: '标准版会员', price: '50', resourcePoints: 500, description: '包含500资源点/月' },
  { id: 3, name: '专业版会员', price: '250', resourcePoints: 2000, description: '包含2000资源点/月' }
])

const editDialogVisible = ref(false)
const editFormRef = ref(null)
const editForm = reactive({
  id: null,
  level: '',
  price: '',
  resourcePoints: 0,
  validityPeriod: 'quarterly'
})

const editRules = reactive({
  level: [{ required: true, message: '请选择会员等级', trigger: 'change' }],
  price: [
    { required: true, message: '请输入价格', trigger: 'blur' },
    { pattern: /^\d+(\.\d+)?$/, message: '请输入有效的数字', trigger: 'blur' }
  ],
  resourcePoints: [{ required: true, message: '请输入资源点数量', trigger: 'blur' }],
  validityPeriod: [{ required: true, message: '请选择有效期', trigger: 'change' }]
})

// 任务清理相关
const cleanupStats = ref(null)
const loadingStats = ref(false)
const loadingCleanup = ref(false)
const loadingUserCleanup = ref(false)
const loadingConfig = ref(false)

const showUserCleanupDialog = ref(false)
const userCleanupFormRef = ref(null)
const userCleanupForm = reactive({
  username: ''
})

const userCleanupRules = reactive({
  username: [
    { required: true, message: '请输入用户名', trigger: 'blur' },
    { min: 2, max: 50, message: '用户名长度在2到50个字符', trigger: 'blur' }
  ]
})

const cleanupConfig = reactive({
  retentionDays: 30,
  archiveRetentionDays: 365
})

const goToDashboard = () => {
  router.push('/home')
}

const goToMembers = () => {
  router.push('/member-management')
}

const goToOrders = () => {
  router.push('/orders')
}

const goToAPI = () => {
  router.push('/api-management')
}

const goToTasks = () => {
  router.push('/generate-task-record')
}

const goToSettings = () => {
  router.push('/system-settings')
}

const editLevel = (level) => {
  Object.assign(editForm, level)
  editDialogVisible.value = true
}

const handleCloseEditDialog = () => {
  editDialogVisible.value = false
  if (editFormRef.value) {
    editFormRef.value.resetFields()
  }
}

const handlePriceInput = (value) => {
  // 确保只输入数字
  editForm.price = value.replace(/[^\d.]/g, '')
}

const saveEdit = async () => {
  const valid = await editFormRef.value.validate()
  if (valid) {
    const index = membershipLevels.value.findIndex(level => level.id === editForm.id)
    if (index !== -1) {
      Object.assign(membershipLevels.value[index], editForm)
      ElMessage.success('会员等级更新成功')
      editDialogVisible.value = false
    }
  }
}

// 任务清理相关方法
const getAuthHeaders = () => {
  const token = sessionStorage.getItem('token')
  return token ? { 'Authorization': `Bearer ${token}` } : {}
}

const refreshStats = async () => {
  loadingStats.value = true
  try {
    const response = await cleanupApi.getCleanupStats()
    cleanupStats.value = response.data
    ElMessage.success('统计信息刷新成功')
  } catch (error) {
    console.error('获取统计信息失败:', error)
    ElMessage.error('获取统计信息失败')
  } finally {
    loadingStats.value = false
  }
}

const performFullCleanup = async () => {
  loadingCleanup.value = true
  try {
    const response = await cleanupApi.performFullCleanup()
    ElMessage.success('完整清理执行成功')
    console.log('清理结果:', response.data)
    // 刷新统计信息
    await refreshStats()
  } catch (error) {
    console.error('执行完整清理失败:', error)
    ElMessage.error('执行完整清理失败')
  } finally {
    loadingCleanup.value = false
  }
}

const handleCloseUserCleanupDialog = () => {
  showUserCleanupDialog.value = false
  if (userCleanupFormRef.value) {
    userCleanupFormRef.value.resetFields()
  }
}

const performUserCleanup = async () => {
  const valid = await userCleanupFormRef.value.validate()
  if (!valid) return
  
  loadingUserCleanup.value = true
  try {
    const response = await cleanupApi.cleanupUserTasks(userCleanupForm.username)
    ElMessage.success('用户任务清理成功')
    console.log('清理结果:', response.data)
    // 刷新统计信息
    await refreshStats()
    // 关闭对话框
    handleCloseUserCleanupDialog()
  } catch (error) {
    console.error('清理用户任务失败:', error)
    ElMessage.error('清理用户任务失败')
  } finally {
    loadingUserCleanup.value = false
  }
}

const performUserCleanup_old = async () => {
  const valid = await userCleanupFormRef.value.validate()
  if (!valid) return
  
  loadingUserCleanup.value = true
  try {
    const response = await fetch(`/api/cleanup/user-tasks/${userCleanupForm.username}`, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        ...getAuthHeaders()
      }
    })
    
    if (response.ok) {
      const result = await response.json()
      ElMessage.success(`用户 ${userCleanupForm.username} 的任务清理完成`)
      console.log('用户清理结果:', result)
      // 关闭对话框并刷新统计信息
      handleCloseUserCleanupDialog()
      await refreshStats()
    } else {
      ElMessage.error('清理用户任务失败')
    }
  } catch (error) {
    console.error('清理用户任务失败:', error)
    ElMessage.error('清理用户任务失败')
  } finally {
    loadingUserCleanup.value = false
  }
}

const saveCleanupConfig = async () => {
  loadingConfig.value = true
  try {
    // 这里可以添加保存配置的API调用
    // 目前只是模拟保存
    await new Promise(resolve => setTimeout(resolve, 1000))
    ElMessage.success('清理配置保存成功')
  } catch (error) {
    console.error('保存清理配置失败:', error)
    ElMessage.error('保存清理配置失败')
  } finally {
    loadingConfig.value = false
  }
}

// 页面加载时获取统计信息
refreshStats()
</script>

<style scoped>
.system-settings {
  display: flex;
  height: 100vh;
  background-color: #f5f7fa;
  font-family: 'Arial', sans-serif;
}

/* 左侧导航栏 */
.sidebar {
  width: 320px;
  background: white;
  border-right: 1px solid #e2e8f0;
  display: flex;
  flex-direction: column;
  padding: 24px 0;
}

.logo {
  display: flex;
  align-items: center;
  padding: 0 28px;
  margin-bottom: 32px;
  font-size: 18px;
  font-weight: 600;
  color: #1e293b;
}

.nav-menu {
  flex: 1;
  padding: 0 24px;
}

.nav-item {
  display: flex;
  align-items: center;
  padding: 18px 24px;
  margin-bottom: 6px;
  border-radius: 10px;
  cursor: pointer;
  transition: all 0.2s ease;
  color: #64748b;
  font-size: 16px;
}

.nav-item:hover {
  background: #f1f5f9;
  color: #334155;
}

.nav-item.active {
  background: #eff6ff;
  color: #3b82f6;
}

.nav-item .el-icon {
  margin-right: 16px;
  font-size: 22px;
}

.nav-item span {
  font-size: 16px;
  font-weight: 500;
}

.sidebar-footer {
  padding: 0 32px 20px;
  margin-top: auto;
}

.online-users,
.system-uptime {
  font-size: 14px;
  color: #64748b;
  margin-bottom: 10px;
  line-height: 1.5;
}

.online-users,
.system-uptime {
  margin-bottom: 5px;
}

.highlight {
  color: #333;
  font-weight: bold;
}

.main-content {
  flex-grow: 1;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
}

.top-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 15px 30px;
  background-color: #fff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
  z-index: 100;
}

.search-bar {
  display: flex;
  align-items: center;
  background-color: #f0f2f5;
  border-radius: 20px;
  padding: 8px 15px;
  width: 300px;
}

.search-icon {
  color: #909399;
  margin-right: 8px;
}

.search-input {
  border: none;
  background: transparent;
  outline: none;
  flex-grow: 1;
  font-size: 14px;
  color: #333;
}

.header-actions {
  display: flex;
  align-items: center;
}

.notification-icon {
  font-size: 20px;
  color: #606266;
  margin-right: 20px;
  cursor: pointer;
}

.user-avatar {
  display: flex;
  align-items: center;
  cursor: pointer;
}

.avatar-placeholder {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  margin-right: 8px;
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-size: 14px;
  font-weight: bold;
}

.dropdown-icon {
  font-size: 12px;
  color: #909399;
}

.content-section {
  flex-grow: 1;
  padding: 30px;
  background-color: #f5f7fa;
}

/* 设置选项卡样式 */
.settings-tabs {
  flex-grow: 1;
  display: flex;
  flex-direction: column;
}

.tab-nav {
  display: flex;
  background: white;
  border-bottom: 1px solid #e2e8f0;
  padding: 0 30px;
}

.tab-item {
  display: flex;
  align-items: center;
  padding: 20px 24px;
  margin-right: 8px;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all 0.2s ease;
  color: #64748b;
  font-size: 16px;
  font-weight: 500;
}

.tab-item:hover {
  color: #334155;
  background: #f8fafc;
}

.tab-item.active {
  color: #3b82f6;
  border-bottom-color: #3b82f6;
  background: #eff6ff;
}

.tab-item .el-icon {
  margin-right: 8px;
  font-size: 18px;
}

.tab-content {
  flex-grow: 1;
  padding: 30px;
  background-color: #f5f7fa;
}

/* 清理功能样式 */
.cleanup-stats,
.cleanup-actions,
.cleanup-config {
  margin-bottom: 24px;
}

.stats-card,
.actions-card,
.config-card {
  border-radius: 12px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}

.card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0;
}

.card-header h3 {
  margin: 0;
  font-size: 18px;
  font-weight: 600;
  color: #1e293b;
}

.stats-content {
  padding: 20px 0;
}

.stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 20px;
}

.stat-item {
  text-align: center;
  padding: 20px;
  background: #f8fafc;
  border-radius: 8px;
  border: 1px solid #e2e8f0;
}

.stat-label {
  font-size: 14px;
  color: #64748b;
  margin-bottom: 8px;
}

.stat-value {
  font-size: 24px;
  font-weight: 700;
  color: #1e293b;
}

.actions-content {
  padding: 20px 0;
}

.action-buttons {
  display: flex;
  gap: 16px;
  margin-bottom: 20px;
}

.action-btn {
  min-width: 160px;
}

.action-description {
  padding: 16px;
  background: #f8fafc;
  border-radius: 8px;
  border-left: 4px solid #3b82f6;
}

.action-description p {
  margin: 0 0 8px 0;
  font-size: 14px;
  color: #64748b;
  line-height: 1.5;
}

.action-description p:last-child {
  margin-bottom: 0;
}

.config-content {
  padding: 20px 0;
}

.config-tip {
  margin-left: 12px;
  font-size: 12px;
  color: #94a3b8;
}

/* 用户清理对话框样式 */
.user-cleanup-content {
  padding: 20px 0;
}

.dialog-footer {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
}

.page-title {
  font-size: 24px;
  color: #333;
  margin-bottom: 25px;
  font-weight: bold;
}

.membership-cards {
  display: flex;
  gap: 25px;
  flex-wrap: wrap;
}

.membership-card {
  flex: 1;
  min-width: 280px;
  max-width: 350px;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.08);
  transition: all 0.3s ease;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.membership-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
}

.card-header {
  padding: 20px;
  text-align: center;
  border-bottom: 1px solid #eee;
}

.card-header h3 {
  font-size: 22px;
  color: #333;
  margin: 0;
}

.card-body {
  padding: 25px 20px;
  text-align: center;
  flex-grow: 1;
}

.card-body .price {
  font-size: 36px;
  font-weight: bold;
  color: #409eff;
  margin-bottom: 10px;
}

.card-body .description {
  font-size: 15px;
  color: #606266;
  line-height: 1.6;
}

.card-footer {
  padding: 20px;
  text-align: center;
  border-top: 1px solid #eee;
}

.el-button {
  width: 80%;
  padding: 12px 0;
  font-size: 16px;
  border-radius: 8px;
}

/* 会员收费标准模态框样式 - 完全匹配HTML代码 */
.membership-modal {
  border-radius: 12px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
  border: 1px solid #e1e5eb;
  overflow: hidden;
}

.membership-modal .el-dialog__body {
  padding: 0;
}

/* 弹窗头部 */
.modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px 24px;
  border-bottom: 1px solid #f0f2f5;
}

.modal-title {
  font-size: 18px;
  font-weight: 600;
  color: #1a1a1a;
  margin: 0;
}

.close-btn {
  width: 32px;
  height: 32px;
  border: none;
  background: #f5f7fa;
  border-radius: 6px;
  font-size: 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #666;
  transition: all 0.2s;
}

.close-btn:hover {
  background: #e6f3ff;
  color: #1890ff;
}

/* 表单内容区域 */
.modal-content {
  padding: 24px;
}

.form-group {
  margin-bottom: 20px;
}

.form-label {
  display: block;
  margin-bottom: 8px;
  font-size: 14px;
  color: #333;
  font-weight: 500;
}

/* 输入框和下拉框样式 */
.form-control {
  width: 100%;
  height: 40px;
  padding: 0 12px;
  border: 1px solid #d9d9d9;
  border-radius: 6px;
  font-size: 14px;
  color: #333;
  transition: all 0.2s;
  background-color: white;
}

.form-control:focus {
  outline: none;
  border-color: #1890ff;
  box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
}

.form-control::placeholder {
  color: #bfbfbf;
}

/* 价格输入框特殊样式 */
.price-input {
  position: relative;
}

.price-prefix {
  position: absolute;
  left: 12px;
  top: 50%;
  transform: translateY(-50%);
  color: #666;
  z-index: 10;
}

.price-input .form-control {
  padding-left: 30px;
}

/* 单选按钮组 */
.radio-group {
  display: flex;
  gap: 16px;
}

.radio-option {
  display: flex;
  align-items: center;
}

.radio-input {
  display: none;
}

.radio-label {
  display: flex;
  align-items: center;
  cursor: pointer;
  font-size: 14px;
  color: #666;
  padding: 8px 16px;
  border: 1px solid #d9d9d9;
  border-radius: 6px;
  transition: all 0.2s;
}

.radio-input:checked + .radio-label {
  border-color: #1890ff;
  background-color: #e6f7ff;
  color: #1890ff;
}

/* 按钮区域 */
.modal-footer {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
  padding: 20px 24px;
  border-top: 1px solid #f0f2f5;
}

.btn {
  padding: 0 20px;
  height: 36px;
  border: 1px solid;
  border-radius: 6px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s;
}

.btn-cancel {
  background: white;
  border-color: #d9d9d9;
  color: #666;
}

.btn-cancel:hover {
  border-color: #1890ff;
  color: #1890ff;
}

.btn-save {
  background: #1890ff;
  border-color: #1890ff;
  color: white;
}

.btn-save:hover {
  background: #40a9ff;
  border-color: #40a9ff;
}

/* 响应式调整 */
@media (max-width: 480px) {
  .membership-modal {
    border-radius: 0;
  }
  
  .modal-content {
    padding: 16px;
  }
  
  .radio-group {
    flex-direction: column;
    gap: 8px;
  }
}

/* Responsive adjustments */
@media (max-width: 1200px) {
  .membership-card {
    max-width: none;
  }
}

@media (max-width: 768px) {
  .sidebar {
    width: 60px;
    padding: 15px 0;
  }

  .sidebar .logo span,
  .sidebar .nav-item span,
  .sidebar-footer {
    display: none;
  }

  .sidebar .logo {
    padding: 0 10px 20px;
  }

  .sidebar .logo-icon {
    margin-right: 0;
  }

  .nav-menu {
    padding: 0 10px;
  }

  .nav-item {
    justify-content: center;
    padding: 10px;
  }

  .nav-item .el-icon {
    margin-right: 0;
  }

  .top-header {
    padding: 10px 20px;
  }

  .search-bar {
    width: 200px;
    padding: 6px 10px;
  }

  .content-section {
    padding: 20px;
  }

  .page-title {
    font-size: 20px;
    margin-bottom: 20px;
  }

  .membership-cards {
    flex-direction: column;
    align-items: center;
  }

  .membership-card {
    width: 90%;
    max-width: 400px;
  }
}
</style>