import request from '@/utils/request'
import XEUtils from 'xe-utils'

const 看板对应数据=(type)=>{
  const init=()=>{
    getData().then(res=>{
      const _data=JSON.parse(res.data)

      let begin=XEUtils.toDateString(XEUtils.now(),'yyyy/MM/dd')
      let end=XEUtils.toDateString(XEUtils.getWhatDay(XEUtils.now(), 1),'yyyy/MM/dd')
      const endOfMonth=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'last'),'yyyy/MM/dd')
      switch (type){
        case 'riwc':
          data.options.data= 完成率计算(_data,begin,end,endOfMonth).point
          break
        case 'zhouwc':
          begin=XEUtils.toDateString(XEUtils.getWhatWeek (XEUtils.now(), 0,1,0),'yyyy/MM/dd')
          end=XEUtils.toDateString(XEUtils.getWhatWeek (XEUtils.now(), 1,1,0),'yyyy/MM/dd')
          data.options.data= 完成率计算(_data,begin,end,endOfMonth).point
          break
        case 'yuewc':
          begin=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'first'),'yyyy/MM/dd')
          end=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'last'),'yyyy/MM/dd')
          data.options.data=完成率计算(_data,begin,end,endOfMonth).point
          break
        case 'ricl':
          data.options.data=完成率计算(_data,begin,end,endOfMonth).wc
          break
        case 'zhoucl':
          begin=XEUtils.toDateString(XEUtils.getWhatWeek (XEUtils.now(), 0,1,0),'yyyy/MM/dd')
          end=XEUtils.toDateString(XEUtils.getWhatWeek (XEUtils.now(), 1,1,0),'yyyy/MM/dd')
          data.options.data= 完成率计算(_data,begin,end,endOfMonth).wc
          break
        case 'yuecl':
          begin=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'first'),'yyyy/MM/dd')
          end=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'last'),'yyyy/MM/dd')
          data.options.data= 完成率计算(_data,begin,end,endOfMonth).wc
          break
      }
    })
  }

  const data={
    options:{
      align:'center',
      border: true,
      resizable: true,
      keepSource:true,
      size:'mini',
      showOverflow: true,
      editConfig:{trigger: 'click', mode: 'cell', showStatus: true},
      highlightCurrentRow:true,
      columns:[],
      data:[],
    },
  }

  switch (type){
    case 'riwc':
    case 'zhouwc':
    case 'yuewc':
      data.columns=columns0
      break
    case 'ricl':
    case 'zhoucl':
    case 'yuecl':
      data.columns=columns1
      break
    default:
      data.columns=columns0
  }

  return {data,init}
}

const columns0=[
  { type: 'seq', width: 60, title: '序号' },
  { field: 'kua', title: '跨',},
  { field: 'c', title: '完成',},
  { field: 'n', title: '未完成',},
]

const columns1=[
  { type: 'seq', width: 60, title: '序号' },
  { field: 'dc_ch', title: '船号',},
  { field: 'c', title: '完成',},
  { field: 'n', title: '未完成',},
]

const 完成率计算=(data,date,nextDate,endOfMonth)=>{

  const wc=[],point=[]

  const 一跨完成数据=data.filter(item=> item.qgfkrq >= date && item.qgfkrq < nextDate && item.zyq1 === '二区'&&['7','8'].includes(item.kw))
  const 一跨计划数量=data.filter(item=> item.qgjhrq >= date && item.qgjhrq < endOfMonth && item.zyq1 === '二区'&&['7','8'].includes(item.kw)).length

  let 一跨完成率='100'
  if (一跨计划数量){
    一跨完成率=(一跨完成数据.length/一跨计划数量*100).toFixed(2)
  }

  point.push({kua:'1跨',c:一跨完成率,n:一跨完成率>100?'0':(100-一跨完成率).toFixed(2)})

  wc.push({ label: '1跨', quantity: 一跨完成数据.length, weight: 一跨完成数据.reduce((accumulator, currentValue) => {
      return accumulator + (currentValue?.bcshzl||0)/1000;
    }, 0) },)

  const 二跨完成数据=data.filter(item=> item.qgfkrq >= date && item.qgfkrq < nextDate && item.zyq1 === '三区')
  const 二跨计划数量=data.filter(item=> item.qgjhrq >= date && item.qgjhrq < endOfMonth && item.zyq1 === '三区').length

  let 二跨完成率='100'
  if (二跨计划数量){
    二跨完成率=(二跨完成数据.length/二跨计划数量*100).toFixed(2)
  }

  point.push({kua:'2跨',c:二跨完成率,n:二跨完成率>100?'0':(100-二跨完成率).toFixed(2)})

  wc.push({ label: '2跨', quantity: 二跨完成数据.length, weight: 二跨完成数据.reduce((accumulator, currentValue) => {
      return accumulator + (currentValue.bcshzl||0)/1000;
    }, 0) },)

  const 三跨完成数据=data.filter(item=> item.qgfkrq >= date && item.qgfkrq < nextDate && item.zyq1 === '二区'&&['6','13','14'].includes(item.kw))
  const 三跨计划数量=data.filter(item=> item.qgjhrq >= date && item.qgjhrq < endOfMonth && item.zyq1 === '二区'&&['6','13','14'].includes(item.kw)).length

  let 三跨完成率='100'
  if (三跨计划数量){
    三跨完成率=(三跨完成数据.length/三跨计划数量*100).toFixed(2)
  }

  point.push({kua:'3跨',c:三跨完成率,n:三跨完成率>100?'0':(100-三跨完成率).toFixed(2)})

  wc.push({ label: '3跨', quantity: 三跨完成数据.length, weight: 三跨完成数据.reduce((accumulator, currentValue) => {
      return accumulator + (currentValue.bcshzl||0)/1000;
    }, 0) },)

  const 四跨完成数据=data.filter(item=> item.qgfkrq >= date && item.qgfkrq < nextDate && item.zyq1 === '四区')
  const 四跨计划数量=data.filter(item=> item.qgjhrq >= date && item.qgjhrq < endOfMonth && item.zyq1 === '四区').length

  let 四跨完成率='100'
  if (四跨计划数量){
    四跨完成率=(四跨完成数据.length/四跨计划数量*100).toFixed(2)
  }

  point.push({kua:'4,5,6跨',c:四跨完成率,n:四跨完成率>100?'0':(100-四跨完成率).toFixed(2)})

  wc.push({ label: '4、5、6跨', quantity: 四跨完成数据.length, weight: 四跨完成数据.reduce((accumulator, currentValue) => {
      return accumulator + (currentValue.bcshzl||0)/1000;
    }, 0) },)

  return {point,wc}
}

const getData=()=>{
  return request({url:'/sc/getYdjhByMonth'})
}

export default 看板对应数据
