123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- 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>
- )
- }
|