<script setup>
import { ref, reactive, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import { serviceApplicationsApi } from '/@/api/business/service-applications/service-applications-api'
import { loginApi } from '/@/api/system/login-api'
import { positionApi } from '/@/api/system/position-api' // 引入职务API
import { categoryApi } from '/@/api/business/category-api' // 引入分类API
import { activityApi } from '/@/api/business/activity-api' // 引入活动API
import { message } from 'ant-design-vue'

const router = useRouter()
const loading = ref(false)
const readonlyMode = ref(false)

// 表单数据（与PC端完全一致）
const form = reactive({
  actualName: '',
  certificateNumber: '',
  firmName: '',
  positionId: '',
  serviceStart: '',
  serviceEnd: '',
  serviceDuration: null,
  activityCategoryId: '',
  activityNameId: '',
  beneficiaryCount: null,
  organizerName: '',
  organizerContact: '',
  organizerPhone: '',
  serviceContent: '',
  proofMaterials: []
})

// 下拉选项数据
const positionList = ref([])
const activityCategoryList = ref([])
const activityList = ref([])
const uploadedFiles = ref([])

// 获取用户信息并填充表单
async function getUserInfo() {
  try {
    const res = await loginApi.getLoginInfo()
    const userInfo = res.data
    
    // 填充用户信息（与PC端逻辑一致）
    form.actualName = userInfo.actualName || ''
    form.certificateNumber = userInfo.licenseNumber || ''
    form.firmName = userInfo.departmentName || ''
  } catch (error) {
    console.error('获取用户信息失败:', error)
  }
}

// 获取下拉选项数据
async function getSelectOptions() {
  try {
    // 获取职务列表 - 使用现有的接口
    const positionRes = await positionApi.getPositionList()
    positionList.value = positionRes.data || []
    
    // 获取活动类型列表 - 使用现有的接口
    const categoryRes = await categoryApi.getCategoryList({
      categoryType: 'ACTIVITY' // 根据实际情况调整
    })
    activityCategoryList.value = categoryRes.data || []
  } catch (error) {
    console.error('获取选项数据失败:', error)

  }
}

// 活动类型改变事件
async function onActivityCategoryChange() {
  if (form.activityCategoryId) {
    try {
      // 根据活动类型获取活动名称列表 - 使用现有的接口
      const activityRes = await activityApi.getActivityList({
        categoryId: form.activityCategoryId
      })
      activityList.value = activityRes.data || []
    } catch (error) {
      console.error('获取活动列表失败:', error)
      activityList.value = []
    }
  } else {
    activityList.value = []
  }
  form.activityNameId = ''
}

// 文件上传处理
function handleFileUpload(event) {
  const files = event.target.files
  if (files.length + uploadedFiles.value.length > 5) {
    message.error('最多只能上传5个文件')
    return
  }
  
  for (let file of files) {
    if (file.size > 10 * 1024 * 1024) {
      message.error(`文件 ${file.name} 超过10MB限制`)
      continue
    }
    
    uploadedFiles.value.push({
      id: Date.now() + Math.random(),
      name: file.name,
      file: file
    })
  }
  
  // 清空input
  event.target.value = ''
}

// 删除文件
function removeFile(fileId) {
  uploadedFiles.value = uploadedFiles.value.filter(file => file.id !== fileId)
}

// 保存草稿
async function handleSave() {
  loading.value = true
  try {
    // 调用保存草稿接口 - 使用现有的接口
    const res = await serviceApplicationsApi.add({
      ...form,
      // 添加必要的参数
      status: 4 // 草稿状态
    })
    
    if (res.code === 0) {
      message.success('保存成功')
      router.push('/mobile/service')
    } else {
      message.error(res.msg || '保存失败')
    }
  } catch (error) {
    console.error('保存失败:', error)
    message.error('保存失败，请稍后重试')
  } finally {
    loading.value = false
  }
}

// 提交申报
async function handleSubmit() {
  // 表单验证（与PC端相同的验证逻辑）
  if (!form.positionId) {
    message.error('请选择职务')
    return
  }
  
  if (!form.serviceStart) {
    message.error('请选择服务开始时间')
    return
  }
  
  if (!form.serviceEnd) {
    message.error('请选择服务结束时间')
    return
  }
  
  if (!form.activityCategoryId) {
    message.error('请选择活动类型')
    return
  }
  
  if (!form.activityNameId) {
    message.error('请选择活动名称')
    return
  }
  
  if (!form.serviceContent) {
    message.error('请输入服务内容描述')
    return
  }
  
  if (uploadedFiles.value.length === 0) {
    message.error('请上传证明材料')
    return
  }
  
  loading.value = true
  
  try {
    // 准备上传的文件
    const formData = new FormData()
    
    // 添加表单数据
    Object.keys(form).forEach(key => {
      if (form[key] !== null && form[key] !== undefined) {
        formData.append(key, form[key])
      }
    })
    
    // 添加文件
    uploadedFiles.value.forEach(file => {
      formData.append('files', file.file)
    })
    
    // 调用提交接口（与PC端相同的接口）
    const res = await serviceApi.add(formData)
    
    if (res.code === 0) {
      message.success('申报提交成功')
      setTimeout(() => {
        router.push('/mobile/service')
      }, 1000)
    } else {
      message.error(res.msg || '提交失败')
    }
  } catch (error) {
    console.error('提交失败:', error)
    message.error('提交失败，请稍后重试')
  } finally {
    loading.value = false
  }
}

// 返回
function handleBack() {
  router.back()
}

onMounted(() => {
  getUserInfo()
  getSelectOptions()
})
</script>