import Taro, { Component } from '@tarojs/taro'
import { View } from '@tarojs/components'
import { AtImagePicker,AtButton } from 'taro-ui'
import { get } from '../../../utils/global_data'
import './index.scss'
export default class UploadProof extends Component {
constructor () {
super(...arguments)
this.state = {
files: [],
showUploadBtn:true,
upLoadImg:[]
}
}
setFatherUploadSrc = () =>{
let {upLoadImg} = this.state
let str = upLoadImg.join(',');
let item ={}
item.evidence_url = str
this.props.onGetUpload(str)
}
componentWillMount () {
}
componentDidMount () { }
componentDidShow () { }
componentDidHide () { }
onChange (v,doType,index) {
if(doType==='remove'){
this.setState((prevState)=>{
let oldSendImg = prevState.upLoadImg
oldSendImg.splice(oldSendImg[index],1)
return ({
files:v,
upLoadImg:oldSendImg
})
},()=>{
const {files} = this.state
this.setFatherUploadSrc()
if(files.length===3){
this.setState({
showUploadBtn:false
})
}else if(files.length===0){
this.setState({
upLoadImg:[]
})
}else{
this.setState({
showUploadBtn:true
})
}
})
}else{
this.setState(()=>{
return ({
files:v
})
},()=>{
const {files} = this.state
if(files.length===3){
this.setState({
showUploadBtn:false
})
}else{
this.setState({
showUploadBtn:true
})
}
})
}
}
onFail (mes) {
console.log(mes)
}
onImageClick (index, file) {
console.log(index, file)
}
toUpload = () => {
const { files } = this.state
if(files.length>0){
const rootUrl = get('rootUrl')
const cookieData = Taro.getStorageSync('token')
this.uploadLoader({rootUrl,cookieData,path:files})
}else{
Taro.showToast({
title: '请先点击+号选择图片',
icon: 'none',
duration: 2000
})
}
}
uploadLoader = (data)=>{
let that = this
let i = data.i ? data.i : 0
let success=data.success?data.success:0
let fail=data.fail?data.fail:0;
Taro.showLoading({
title: `正在上传第${i+1}张`
})
Taro.uploadFile({
url:data.rootUrl+'/app/index/uploadFile',
header:{
'content-type': 'multipart/form-data',
'cookie':'token='+data.cookieData
},
name:'file',
filePath:data.path[i].url,
success: (resp) => {
let resultData= JSON.parse(resp.data)
if(resultData.code === "0"){
success++;
this.setState((prevState)=>{
let oldUpload = prevState.upLoadImg
oldUpload.push(resultData.data)
return({
upLoadImg:oldUpload
})
},()=>{
this.setFatherUploadSrc()
})
}else{
fail++;
}
},
fail: () => {
fail++;
},
complete: () => {
Taro.hideLoading()
i++;
if(i==data.path.length){
Taro.showToast({
title: '上传成功',
icon: 'success',
duration: 2000
})
console.log('成功:'+success+" 失败:"+fail);
}else{
data.i=i;
data.success=success;
data.fail=fail;
that.uploadLoader(data);
}
}
})
}
render () {
const { showUploadBtn } =this.state
return (
<View className='poof_box'>
<AtImagePicker
multiple={false}
length={3}
files={this.state.files}
onChange={this.onChange.bind(this)}
onFail={this.onFail.bind(this)}
onImageClick={this.onImageClick.bind(this)}
showAddBtn={showUploadBtn}
/>
<AtButton type='primary' className='poof_submit_btn' onClick={this.toUpload}>上传佐证</AtButton>
</View>
)
}
}