UNPKG

h5-cli

Version:

hello

149 lines (137 loc) 4.72 kB
/* * @Author: saohui * @Date: 2017-09-26 09:41:30 * @Last Modified by: saohui * @Last Modified time: 2017-10-13 17:07:10 */ import util from '../lib/util' import UserCenter from '../module/UserCenter' import Alert from '../component/alert/alert' export default { namespace: 'myFollow' ,state: { success: true ,loading: true ,successCode: 1 // 1:只显示关注列表&上拉刷新;2:关注列表&曾挂号医生列表;3:给按钮去挂号; ,errorMsg: '' ,unionId: null ,followList: [] ,currentPage: 0 ,totalRecordNum: 999 ,totalPageNum: 999 ,isFinished: false ,registeredDoctList: [] ,showRegisteredDoct: false } ,reducers: { setUnionId ( state, { unionId } ) { return { ...state ,unionId } } ,setFollowList ( state, { records, totalPageNum, totalRecordNum, currentPage }) { return { ...state ,totalPageNum ,totalRecordNum ,currentPage ,followList: state.followList.concat( records || [] ) } } ,setFinished ( state ) { return { ...state ,isFinished: true } } ,setSuccess ( state, { success, successCode, errorMsg }) { return { ...state ,success ,loading: false ,successCode ,errorMsg: errorMsg || '' } } ,setRegisteredDoctList ( state, { records }) { return { ...state ,registeredDoctList: state.registeredDoctList.concat(( records || [] ).slice( 0, 5 )) } } } ,effects: { async getMyFollowList ({ unionId, onSuccess }, { put, select }) { // console.log('--> getPageList start') try { const { currentPage } = await select( async state => state['myFollow'] ) const result = await UserCenter.getMyFollowList( currentPage + 1, 20 ) // .mock('http://rap.yuantutech.com/mockjsdata/4/restapi/myDoctor/getFollowDeptAndDoct?currentPage=') .fetch() const data = result.data await put({ type: 'setFollowList', ...data }) if ( data.totalPageNum <= data.currentPage ) { await put({ type: 'setFinished'}) if ( data.totalRecordNum < 4 ) { await put({ type: 'getRegisteredDoctList'}) onSuccess({ success: true, data: { isFinished: true } }) return } onSuccess({ success: true, data: { isFinished: true } }) } else { onSuccess({ success: true, data: { isFinished: false } }) } await put({ type: 'setSuccess', success: true, successCode: 1 }) } catch (e) { console.error(e) if ( e.msg ) { await put({ type: 'setSuccess', success: false, errorMsg: e.msg }) } if ( e.resultCode == 202 ) { util.goLogin() } } // console.log('--> getPageList end') } ,async getRegisteredDoctList ({}, { put, select }) { const result = await UserCenter.getRegisteredDoctList() // .mock('http://rap.yuantutech.com/mockjsdata/4/restapi/myDoctor/getRegisterDoctList?') .fetch() // console.log('getRegisteredDoctList', result ) const { totalRecordNum } = await select( async state => state['myFollow'] ) if ( totalRecordNum == 0 && result.data.length == 0 ) { await put({ type: 'setSuccess', success: true, successCode: 3 }) return } if ( result.data.length > 0 ) { await put({ type: 'setRegisteredDoctList', records: result.data }) await put({ type: 'setSuccess', success: true, successCode: 2 }) } else { await put({ type: 'setSuccess', success: true, successCode: 1 }) } } ,async alterFollow ({ index }, { put, select }) { const { unionId, registeredDoctList } = await select( async state => state['myFollow'] ) const { deptCode, doctCode, state, corpId } = registeredDoctList[index] if ( state == 1 ) { Alert.show('取消关注请到医生/科室首页进行操作', 2500 ) return } const result = await UserCenter.alterFollowState( deptCode, doctCode, 1, corpId, unionId ) .fetch() if ( result.data ) { Alert.show('关注成功', 2500 ) } registeredDoctList[index].state = 1 await put({ type: 'setRegisteredDoctList', records: [] }) } } ,subscriptions: { getQuery ({ dispatch }) { const query = util.query() const unionId = query.unionId dispatch({ type: 'myFollow/setUnionId', unionId }) } } }