import { ref } from 'vue'
import { request } from '@shared/utils/request'

// 通用调用接口方法
const getOptionsByApi = async ({ url, params }) => {
  const res = await request({
    url,
    method: 'get',
    params,
    timeout: 60000
  })

  if (res?.code === '00000') return res.data
  else {
    console.error('接口调用失败', res)
    return []
  }
}

// 公用下拉选项

export function useOptions() {
  const options = ref({})

  // 是否 布尔类型
  options.value['yesNoBool'] = [
    { label: '是', value: true },
    { label: '否', value: false }
  ]

  // 事件类型
  options.value['eventType'] = [
    { label: '水毁事件', value: '水毁事件' },
    { label: '冰雪事件', value: '冰雪事件' }
  ]

  // 抢险进度
  options.value['repairProgress'] = [
    { label: '未抢险', value: '未抢险' },
    { label: '抢险中', value: '抢险中' }
  ]

  // 处理措施
  options.value['disposalMeasures'] = [
    { label: '全幅封闭', value: '全幅封闭' },
    { label: '半幅封闭', value: '半幅封闭' },
    { label: '正常通行', value: '正常通行' },
    { label: '限制通行', value: '限制通行' }
  ]

  // 路线类型
  options.value['roadType'] = [
    { label: '国道', value: 'G' },
    { label: '省道', value: 'S' },
    { label: '县道', value: 'X' },
    { label: '乡道', value: 'Y' },
    { label: '村道', value: 'C' }
  ]

  // 路况类型 水灾 冰灾
  // 雪灾
  options.value['iceRoadConditionType'] = [
    { label: '积雪', value: '积雪' },
    { label: '积冰', value: '积冰' },
  ]
  // 水灾
  options.value['waterRoadConditionType'] = [
    { label: '山体滑坡', value: '山体滑坡' },
    { label: '泥石流', value: '泥石流' },
    { label: '边坡坍塌(上、下)', value: '边坡坍塌(上、下)' },
    { label: '路基沉降(垮塌)', value: '路基沉降(垮塌)' },
    { label: '行道树倒塌', value: '行道树倒塌' },
    { label: '积水', value: '积水' },
    { label: '其他', value: '其他' }
  ]

  // 获取区县
  const getAreaOptions = async (params) => {
    let list = await getOptionsByApi({
      url: '/snow-ops-platform/infrastructure-asset/counties',
      params: {
        xzdm: params?.xzdm // 区县代码 可选
      }
    })
    list = list.filter((item) => {
      return !!item.qxmc
    })
    options.value['area'] = list.map((item) => {
      return {
        label: item.qxmc,
        value: item.xzdm
      }
    })
  }

  return {
    options,
    getAreaOptions,
  }
}
