import React, { useState, useEffect } from 'react'; import Taro from '@tarojs/taro'; import { View, RadioGroup, Radio, Button, Image, Input, Picker } from '@tarojs/components'; import { AtButton, AtTextarea, AtImagePicker } from 'taro-ui'; import InputPicker from '../components/inputPicker'; import request from '@/services/request'; import { postReport } from '@/services/api'; import './index.scss'; import arrowIcon from '../../static/img/patrol/arrow-down.svg'; const Index = () => { const [reportType, setReportType] = useState('patrol') // 上报类型 const [projectType, setProjectType] = useState('') // 工程类型 const [road, setRoad] = useState('') // 所在道路 const [roadSectionStart, setRoadSectionStart] = useState('') // 路段 Start const [roadSectionEnd, setRoadSectionEnd] = useState('') // 路段 End const [address, setAddress] = useState('') // 具体位置 const [content, setContent] = useState('') // 巡查内容 const [scenePic, setScenePic] = useState([]) // 现场图片 const [conserveBeforePic, setConserveBeforePic] = useState([]) // 养护前图片 const [conserveUnderwayPic, setConserveUnderwayPic] = useState([]) // 养护中图片 const [conserveAfterPic, setConserveAfterPic] = useState([]) // 养护后图片 const [roadStartSelector, setRoadStartSelector] = useState([]) const [roadEndSelector, setRoadEndSelector] = useState([]) const rPrjTypeSelector = ['道路', '桥梁', '涵洞', '其他'] const rRoadSelector = ['富山一路', '金沙大道', '玉湖路'] const rRoadStartSelector = ['一段', '二段', '三段'] const rRoadEndSelector = ['一段', '二段', '三段'] useEffect(() => { setRoadStartSelector(rRoadStartSelector) setRoadEndSelector(rRoadEndSelector) }, []) function report() { let data = { reportType, projectType, road, roadSectionStart, roadSectionEnd, address, content, longitude: 37.000000000000, latitude: 69.000000000000 } if (reportType === 'patrol') { data['scenePic'] = scenePic.length > 0 && scenePic.map(item => item.url) } else { data['conserveBeforePic'] = conserveBeforePic.length > 0 && conserveBeforePic.map(item => item.url) data['conserveUnderwayPic'] = conserveUnderwayPic.length > 0 && conserveUnderwayPic.map(item => item.url) data['conserveAfterPic'] = conserveAfterPic.length > 0 && conserveAfterPic.map(item => item.url) } for (var key in data) { if (!data[key]) { Taro.showToast({ title: '请完善信息', icon: 'none' }) return } } if (rPrjTypeSelector.indexOf(data.projectType) === -1) { Taro.showToast({ title: '工程类型错误', icon: 'none' }) return } request.post(postReport(), data).then(res => { if (res.statusCode == 200 || res.statusCode == 204) { Taro.showToast({ title: '上报成功', icon: 'none' }) } else { Taro.showToast({ title: res.data.message || '请求出错', icon: 'none' }) } }, err => { Taro.showToast({ title: err.message || '请求出错', icon: 'none' }) }) } function handleInput({ detail: { value } }, type) { switch (type) { case 'roadSectionStart': setRoadSectionStart(value) if (value) { setRoadStartSelector(rRoadStartSelector.filter(item => item.includes(value))) } else { setRoadStartSelector(rRoadStartSelector) } break; case 'roadSectionEnd': setRoadSectionEnd(value) if (value) { setRoadEndSelector(rRoadEndSelector.filter(item => item.includes(value))) } else { setRoadEndSelector(rRoadEndSelector) } break; case 'address': setAddress(value) break; case 'content': setContent(value) default: break; } } function handleTypeChange(e) { setReportType(e.detail.value) } function handleImgChange(files, type) { switch (type) { case 'scenePic': setScenePic(files) break; case 'conserveBeforePic': setConserveBeforePic(files) break; case 'conserveUnderwayPic': setConserveUnderwayPic(files) break; case 'conserveAfterPic': setConserveAfterPic(files) break; default: break; } } function handleImgClick(index, file) { Taro.previewImage({ urls: [file.url] // 需要预览的图片http链接列表 }) } const typeList = [ { value: 'patrol', text: '巡查', checked: true }, { value: 'conserve', text: '养护', checked: false } ] return ( 上报类型 { typeList.map((item, i) => { return ( {item.text} ) }) } 所属路段: handleInput(e, 'roadSectionStart')} /> setRoadSectionStart(roadStartSelector[e.detail.value])} > 至  handleInput(e, 'roadSectionEnd')} /> setRoadSectionEnd(roadEndSelector[e.detail.value])} > 具体位置: handleInput(e, 'address')} /> handleInput(e, 'content')} /> { reportType === 'patrol' ? 现场图片: = 3 ? false : true} files={scenePic} onChange={files => handleImgChange(files, 'scenePic')} onImageClick={handleImgClick} /> : 养护图片: 养护前 = 3 ? false : true} files={conserveBeforePic} onChange={files => handleImgChange(files, 'conserveBeforePic')} onImageClick={handleImgClick} /> 养护中 = 3 ? false : true} files={conserveUnderwayPic} onChange={files => handleImgChange(files, 'conserveUnderwayPic')} onImageClick={handleImgClick} /> 养护后 = 3 ? false : true} files={conserveAfterPic} onChange={files => handleImgChange(files, 'conserveAfterPic')} onImageClick={handleImgClick} /> } 上报 ) } export default Index