react-app-shell
Version:
react打包脚本和example, 这里的版本请忽略
99 lines (91 loc) • 3.49 kB
JavaScript
// 功能方法>>>引用:
import { observable, action } from 'mobx';
import moment from 'moment';
// 公用方法 配置项 接口 枚举>>>引用:
import { appConfig } from '../config';
import { rabbitPageService } from '../service';
import { RABBIT_BUY_STATUS } from '../constants';
// 公用方法>>>引用:
import { message, myToast } from '../utils';
// 跳转页面常量赋值
const urlByAgain = `${appConfig.basename}/rabbit/again`;
/**
* 魔小兔购买活动页仓库
*/
class RabbitStore {
/**
* 数据源
*/
state = {
serviceError: false, // 获取信息时 接口是否发生异常或者超时
id: '',
productId: '',
processStatus: '', // 活动状态
startTimeMonth: '', // 按钮的开始时间(月)
startTimeDay: '', // 按钮的开始时间(日)
purchaseStartTimeMonth: '', // 活动未开始(月) -- 文案展示
purchaseStartTimeDay: '', // 活动未开始(日) -- 文案展示
purchaseEndTime: '', // 活动进行中 -- 倒计时结束时间
nowTime: '', // 倒计时现在时间
balancePeople: '', // 剩余人数
detailImgList: [], // 详情页一组图
campType: '' // 按钮文案
};
// 初始化页面数据方法
initData = async (id) => {
try {
// 展示loading
message.showLoading('加载中');
const rabbitPageConfig = await rabbitPageService.getRabbitPageInfo(id);
if (rabbitPageConfig) {
this.state = {
...this.state,
serviceError: false,
id: rabbitPageConfig.id,
productId: rabbitPageConfig.productId,
processStatus: rabbitPageConfig.processStatus,
startTimeMonth: moment(rabbitPageConfig.startTime).format('M'),
startTimeDay: moment(rabbitPageConfig.startTime).format('DD'),
nowTime: Date.parse(rabbitPageConfig.nowTime.replace(/-/g, '/')),
purchaseEndTime: Date.parse(rabbitPageConfig.purchaseEndTime.replace(/-/g, '/')),
purchaseStartTimeMonth: moment(rabbitPageConfig.purchaseStartTime).format('M'),
purchaseStartTimeDay: moment(rabbitPageConfig.purchaseStartTime).format('DD'),
balancePeople: rabbitPageConfig.balancePeople,
detailImgList: rabbitPageConfig.detailImgList,
campType: rabbitPageConfig.campType
};
// 初始化时判断是否登陆,已登陆YES:检验是否付费 / 未登陆NO:不做处理
if (rabbitPageConfig.loginFlag === 'YES') {
await rabbitPageService.getRabbitPageCheck(rabbitPageConfig.id);
}
} else {
this.state = {
serviceError: true
};
}
} catch (error) {
switch (error.code) {
case RABBIT_BUY_STATUS.BIZ_BUNNY_IS_JOINING_CAMP:
// 付费用户跳转页面
window.location.href = urlByAgain;
break;
case RABBIT_BUY_STATUS.BIZ_BUNNY_CAMP_JOIN_FULL:
myToast.warning('对不起,您来晚了,本期魔小兔营期已经爆满了哦~');
break;
case RABBIT_BUY_STATUS.BIZ_BUNNY_IS_JOINING_OTHER_CAMP:
break;
case RABBIT_BUY_STATUS.BIZ_BUNNY_IS_JOINING_FORMAL_CAMP:
myToast.warning('您已购买过正式课程,无法参与体验');
break;
default:
this.state = {
serviceError: true
};
}
} finally {
// 关闭loading
message.closeLoading();
}
};
}
export default new RabbitStore();