import Config from '../../../../utils/config'; import { uploadImg, save, mapApi } from '../../services/index'; import { Toast } from 'antd-mobile'; import router from 'umi/router'; import { isMobileNumber } from '../../../../utils/helper'; export default { state: {}, 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 { } }, *save({ payload }, { call, put, select }) { const info = yield select(state => state.info); const form = { ...info, ...payload, }; if (!form.referee || form.referee === '') { Toast.info('请输入推荐人'); return; } if (!form.dogOwnerName || form.dogOwnerName === '') { Toast.info('请输入姓名'); return; } if (!form.mobile || form.mobile === '') { Toast.info('请输入手机号码'); return; } if (form.mobile && !isMobileNumber(form.mobile)) { Toast.info('请输入正确的手机号码'); return; } if (!form.wxcard || form.wxcard === '') { 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.image1 || form.image1 === '') { Toast.info('请上传头部-正面照片'); return; } if (!form.image2 || form.image2 === '') { Toast.info('请上传头部-侧面照片'); return; } if (!form.image3 || form.image3 === '') { Toast.info('请上传头部-额顶照片'); return; } if (!form.image4 || form.image4 === '') { Toast.info('请上传头部-牙齿照片'); return; } if (!form.image5 || form.image5 === '') { Toast.info('请上传身体-正面照片'); return; } if (!form.image6 || form.image6 === '') { Toast.info('请上传身体-侧面照片'); return; } if (!form.image7 || form.image7 === '') { Toast.info('请上传身体-前爪垫照片'); return; } if (!form.image8 || form.image8 === '') { Toast.info('请上传身体-后爪垫照片'); return; } if (!form.image9 || form.image9 === '') { Toast.info('请上传身体-尾巴照片'); return; } if (!form.image10 || form.image10 === '') { Toast.info('请上传身体-腹部照片'); return; } if (!form.image11 || form.image11 === '') { Toast.info('请上传毛发-背部照片'); return; } if (!form.image12 || form.image12 === '') { 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, name: form.dogOwnerName, address: form.province + form.city + form.area + form.address, }; sessionStorage.setItem('payinfo', JSON.stringify(obj)); router.replace('/catAppraisals/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(); } }, }, subscriptions: { // setupHistory({ dispatch, history }) { // history.listen(location => {}); // }, }, };