import React, { useState, useEffect } from "react"
import Taro from "@tarojs/taro";
import { View, Input, Swiper, Image, SwiperItem, Text, ScrollView, Button } from "@tarojs/components"
import { Popup } from "@antmjs/vantui";
import Footer from "@/components/Footer";
import MyCard from "@/components/MyCard";
import NullCard from "@/components/NullCard";
import { useModel } from "@/store";
import { getBannerList } from "@/services/banner";
import { getJobList, toggleJob, overJob } from '@/services/job'
import positionImg from '@/assets/comm/position.png'
import searchImg from '@/assets/comm/search.png'
import orderImg from '@/assets/comm/orderList.png'
import PositionImg from '@/assets/job/positionImg.png'
import OverPop from '../OverPop'
import './style.less'


export default (props) => {
  const [imgList, setImgList] = useState([])
  const [jobList, setJobList] = useState([])
  const [currentPage, setCurrentPage] = useState(1)
  const [isMore, setIsMore] = useState(false)
  const { address } = useModel('location')
  const [show, setShow] = useState(false)
  const [area, setArea] = useState()
  const [showOver, setShowOver] = useState(false)
  const [job, setJob] = useState()

  const handleSearch = (e) => {
    Taro.navigateTo({ url: `/pages/index/index?tab=1` });
  }
  const handleDetail = (val) => {
    Taro.navigateTo({ url: `/pages/orderDetail/index?id=${val}&job=1` });
  }
  // 上拉加载
  const handleScrollToLower = () => {
    setCurrentPage(currentPage + 1)
  }
  const handleWork = (val) => {
    setJob(val)
    if (val.status == 0) {
      setShow(true)
    } else {
      setShowOver(true)
    }
  }
  const onClose = () => {
    setShow(false)
    setJob()
  }
  const handleOk = () => {
    toggleJob(job.jobId, { mode: true }).then(() => {
      //目测有bug
      getJobList({ pageNum: currentPage }).then(res => {
        const lst = currentPage === 1 ? res.records || [] : jobList.concat(res.records || [])
        //长列表加载当下一页没有数据时
        if (res.records.length == 0 && currentPage != 1) {
          setIsMore(true)
          return
        }
        setJobList(lst)
        onClose()
      })
    })
  }
  const onOverClose = () => {
    setShowOver(false)
    setArea()
  }
  const handleOverOk = () => {
    //正整数或两位小数
    if (!isNaN(area)) {
      overJob(job.jobId, { ...job, area: area }).then(res => {
        Taro.showToast({
          title: '恭喜完成作业',
          icon: 'none',
        })
        getJobList({ pageNum: currentPage }).then(res2 => {
          const lst = currentPage === 1 ? res2.records || [] : jobList.concat(res2.records || [])
          //长列表加载当下一页没有数据时
          if (res2.records.length == 0 && currentPage != 1) {
            setIsMore(true)
            return
          }
          setJobList(lst)
          onOverClose()
        })
      })
    }
    else {
      Taro.showToast({
        title: '请输入正确的面积整数或最多两位小数',
        icon: 'none',
      })
    }
  }
  useEffect(() => {
    getJobList({ pageNum: currentPage }).then(res => {
      const lst = currentPage === 1 ? res.records || [] : jobList.concat(res.records || [])
      //长列表加载当下一页没有数据时
      if (res.records.length == 0 && currentPage != 1) {
        setIsMore(true)
        return
      }
      setJobList(lst)
    })
  }, [currentPage])
  useEffect(() => {
    getBannerList({ position: 'bannerWorker' })
      .then(res => {
        setImgList(res)
      }).catch(err => {
        Taro.showToast({
          title: '网络异常, 请刷新小程序重试',
          icon: 'none',
        })
      })
  }, [])
  return (
    <View className='orderIndex'>
      <View className='top'>
        <View className='left'>
          <Image src={positionImg} className='pImg' />
          <Text>邓州市</Text>
          <View className='icon' />
        </View>
        <View className='searchClass' onClick={handleSearch}>
          <Input type='text' disabled className='searchInput' placeholder='搜索关键字查询订单' />
          <Image src={searchImg} className='searchImg' />
        </View>
      </View>
      <ScrollView
        scrollY
        enhanced
        onScrollToLower={isMore ? '' : handleScrollToLower}
        style={{ height: 'calc(100% - 68px)' }}
      >
        <Swiper
          circular
          autoplay
          className='swiper'
        >
          {imgList.map((item, inx) => (
            <SwiperItem key={inx}>
              <Image src={item.thumb} mode='widthFix' className='storeImage' />
            </SwiperItem>
          ))}
        </Swiper>
        <View className='orderList'>
          <View className='head'>
            <Image className='headIcon' src={orderImg} />
            <Text className='title'>作业列表</Text>
          </View>
          {
            jobList.length === 0 ? <NullCard value='您还没有新的作业订单!' /> :
              jobList.map((item) => {
                return <MyCard job value={item} key={item.JobId} onClick={() => handleWork(item)} goDetail={() => handleDetail(item.jobId)} />
              })
          }
          {
            isMore && <Footer />
          }
        </View>
        <Popup
          show={show}
          onClose={onClose}
          className='tanchuang'
        >
          <Image src={PositionImg} className='pImg' />
          <View>当前位置在</View>
          <View>{address}</View>
          <Button className='btn' onClick={handleOk}>确认</Button>
        </Popup>
        
        <OverPop showOver={showOver} onOverClose={onOverClose} area={area} setArea={setArea} handleOverOk={handleOverOk} />
      </ScrollView>
    </View>
  )
}