import Config from '../../../../utils/config'; import { uploadImg, uploadVod, save, dogtype, mapApi } from '../../services/index'; import { Toast } from 'antd-mobile'; import router from 'umi/router'; import { isMobileNumber, idCardValidate } from '../../../../utils/helper'; export default { state: { frontPic: null, frontPicUrl: null, frontPicValue: '', leftSidePic: null, leftSidePicUrl: null, leftSidePicValue: '', rightSidePic: null, rightSidePicUrl: null, rightSidePicValue: '', backPic: null, backPicUrl: null, backPicValue: '', runVideo: null, runVideoUrl: null, runVideoValue: '', noseVideo: null, noseVideoUrl: null, noseVideoValue: '', dogTypeList: [], }, reducers: { updateState(state, { payload }) { return { ...state, ...payload, }; }, }, effects: { *uploadImgs({ payload, progress, callback }, { call, put }) { const { name, files } = payload; if (files.length === 0) { if (typeof callback === 'function') { callback(); } return; } const formData = new FormData(); formData.append('file', files[0]); try { const { rc, msg, data } = yield call(uploadImg, formData, progress); if (typeof callback === 'function') { callback(); } if (rc === Config.constant.codeSuccess) { yield put({ type: 'updateState', payload: { [name]: data.id, [name + 'Url']: data.url, }, }); } else { Toast.fail(msg); } } catch (e) { if (typeof callback === 'function') { callback(); } yield put({ type: 'updateState', payload: { [name + 'Value']: '', }, }); } finally { } }, *uploadVod({ payload, progress, callback }, { call, put }) { const { name, files } = payload; if (files.length === 0) { if (typeof callback === 'function') { callback(); } return; } if (files[0].size > 200 * 1024 * 1024) { if (typeof callback === 'function') { callback('toBig'); } return; } const formData = new FormData(); formData.append('file', files[0]); try { const { rc, msg, data } = yield call(uploadVod, formData, progress); if (typeof callback === 'function') { callback(); } if (rc === Config.constant.codeSuccess) { yield put({ type: 'updateState', payload: { [name]: data.id, [name + 'Url']: data.url, }, }); } else { Toast.fail(msg); } } catch (e) { if (typeof callback === 'function') { callback(); } yield put({ type: 'updateState', payload: { [name + 'Value']: '', }, }); } finally { } }, *save({ payload }, { call, put, select }) { // var sessionStorage = window.sessionStorage; // var obj = { // orderId: '0acd5fb23ffe4d759ce3b303bf0c899f', // price: '100', // mobile: '234234524', // address: 'wertwertwe', // }; // sessionStorage.setItem('payinfo', JSON.stringify(obj)); // router.replace('/dogAppraisals/pay'); // return; const info = yield select(state => state.info); const form = { ...info, ...payload, dogTypeList: [], }; if (!form.referee || form.referee === '') { Toast.info('请输入推荐人'); return; } if (!form.dogOwnerName || form.dogOwnerName === '') { Toast.info('请输入姓名'); return; } if ((!form.gender && form.gender !== 0) || form.gender === '') { Toast.info('请选择性别'); return; } if (!form.mobile || form.mobile === '') { Toast.info('请输入手机号码'); return; } if (form.mobile && !isMobileNumber(form.mobile)) { Toast.info('请输入正确的手机号码'); return; } if (!form.cardNo || form.cardNo === '') { Toast.info('请输入身份证号'); return; } if (form.cardNo && !idCardValidate(form.cardNo)) { Toast.info('请输入正确的身份证号'); return; } if (!form.province || form.province === '') { Toast.info('请在地图选择地址'); return; } if (!form.address || form.address === '') { Toast.info('请输入详细地址'); return; } if (!form.dogBreed || form.dogBreed === '') { Toast.info('请输入犬种'); return; } if (!form.dogColor || form.dogColor === '') { Toast.info('请输入毛色'); return; } if ((!form.dogGender && form.dogGender !== 0) || form.dogGender === '') { Toast.info('请选择犬只性别'); return; } if (!form.dogName || form.dogName === '') { Toast.info('请输入犬名'); return; } if (!form.dogBirthdate || form.dogBirthdate === '') { Toast.info('请选择出生日期'); return; } if (!form.frontPic || form.frontPic === '') { Toast.info('请上传正面照片'); return; } if (!form.leftSidePic || form.leftSidePic === '') { Toast.info('请上传左侧面照片'); return; } if (!form.rightSidePic || form.rightSidePic === '') { Toast.info('请上传右侧面照片'); return; } if (!form.backPic || form.backPic === '') { Toast.info('请上传背面照片'); return; } if (!form.runVideo || form.runVideo === '') { Toast.info('请上传奔跑视频'); return; } if (!form.noseVideo || form.noseVideo === '') { Toast.info('请上传鼻纹视频'); return; } Toast.loading('保存中', 0, null, true); try { const { rc, msg, data } = yield call(save, { ...form }); Toast.hide(); if (rc === Config.constant.codeSuccess) { Toast.success('保存成功'); var sessionStorage = window.sessionStorage; var obj = { orderId: data.data.orderId, price: data.data.price, mobile: form.mobile, address: form.province + form.city + form.area + form.address, }; sessionStorage.setItem('payinfo', JSON.stringify(obj)); router.replace('/dogAppraisals/pay'); } else { Toast.fail(msg); } } catch (e) { Toast.hide(); Toast.fail('保存失败'); } finally { } }, *geocoder({ payload }, { call, put }) { const { location, poiname } = payload; const { status, result } = yield call(mapApi, { key: '457BZ-TES6V-JS7P2-UJQAQ-IJSSO-RIFBA', location: `${location.lat},${location.lng}`, }); if (status === Config.constant.codeSuccess) { yield put({ type: 'updateState', payload: { address: result.address_component.street_number + poiname, province: result.address_component.province, city: result.address_component.city, area: result.address_component.district, }, }); router.goBack(); } }, *dogtype({ payload }, { call, put }) { const { rc, msg, data } = yield call(dogtype, { ...payload }); if (rc === Config.constant.codeSuccess) { const dogTypeList = []; data.list.forEach(item => { dogTypeList.push({ value: item.id, label: item.breedCnName, }); }); yield put({ type: 'updateState', payload: { dogTypeList, }, }); } else { Toast.fail(msg); } }, }, subscriptions: { // setupHistory({ dispatch, history }) { // history.listen(location => {}); // }, }, };