提交 baa32ba2 编写于 作者: chengxiang.li's avatar chengxiang.li

更新二期活动主页模块逻辑

上级 5baef239
......@@ -2,23 +2,6 @@
<div class="in-activity-wrap">
<!-- 顶部的四个阶段 进度条 -->
<ul class="top-process-bar">
<!-- <li class="over">
<p class="title">高血压学习</p>
<p class="date">12月16至19日</p>
</li>
<li class="active">
<p class="title">糖尿病学习</p>
<p class="date">12月20至24日</p>
</li>
<li>
<p class="title">中医科学习</p>
<p class="date">12月24至27日</p>
</li>
<li>
<p class="title">全科学习</p>
<p class="date">12月27至30日</p>
</li> -->
<li v-for="(item, index) in stageDateList" :class="returnStageClass(item, index)">
<p class="title">{{ item.title }}</p>
<p class="date">{{ item.date }}</p>
......@@ -101,17 +84,12 @@
</ul>
</div>
</div>
</div>
<!-- 邀请医生好友学课程 -->
<div class="invite-doctor-wrap">
<img class="top-head-icon" src="../assets/img/stage-two/invite-doctor-top.png" alt="">
<p class="invite-tips">每邀请1位医生好友领取课程,+20勤奋分 +20云鹊豆</p>
<p class="invite-tips">每邀请1位医生好友领取课程,+{{ eachInviteAward.mark }}勤奋分 +{{ eachInviteAward.bean }}云鹊豆</p>
<div class="invite-list-wrap">
<ul class="invite-list">
<template v-if="!isLogin || !isJoin">
......@@ -172,29 +150,14 @@
<div class="daily-task">
<div class="top-center-bar">每日任务</div>
<ul class="task-list">
<li>
<img class="left-icon" src="../assets/img/task-icon/daily-clock-icon.png" alt="">
<div class="center-wrap">
<p class="title">每日打卡</p>
<p class="detail-text">+5勤奋分 +5云鹊豆</p>
</div>
<div @click="handleClock" class="right-btn done">已打卡</div>
</li>
<li>
<img class="left-icon" src="../assets/img/task-icon/lesson-icon.png" alt="">
<div class="center-wrap">
<p class="title">高血压课程学习</p>
<p class="detail-text">+5勤奋分 +5云鹊豆</p>
</div>
<div @click="handleTaskClick" class="right-btn">去学习</div>
</li>
<li>
<img class="left-icon" src="../assets/img/task-icon/smo-icon.png" alt="">
<!-- taskList -->
<li v-for="item in taskList">
<img class="left-icon" :src="returnEachTaskIcon(item)" alt="">
<div class="center-wrap">
<p class="title">高血压SMO项目任务</p>
<p class="detail-text">奖励xxx勤奋分</p>
<p class="title">{{ item.ruleName }}</p>
<p class="detail-text">{{returnUnderAwardTips(item)}}</p>
</div>
<div @click="handleTaskClick" class="right-btn">去完成</div>
<div @click="goToFinish(item)" :class="returnEachTaskStatus(item)">{{ returnIconText(item) }}</div>
</li>
</ul>
</div>
......@@ -212,8 +175,8 @@
<!-- <img class="back-image" src="../assets/img/stage-two/win-award-bg.png" alt=""> -->
<!-- <img class="back-image" src="../assets/img/stage-two/award-cup-bg.png" alt=""> -->
<p class="title">打卡成功</p>
<p class="message">已获得: 5勤奋分, 5云鹊豆</p>
<div class="bottom-btn">我知道了</div>
<p class="message">已获得: {{vm.clockAward.mark}}勤奋分, {{vm.clockAward.bean}}云鹊豆</p>
<div @click="hideClockModal" class="bottom-btn">我知道了</div>
<div class="close-btn"></div>
</div>
</div>
......@@ -234,7 +197,7 @@
</template>
<script>
import { getInviteList } from '@/service/activityMainpage';
import { getUserScoreInfo, getInviteList, getClockStatus, goToUpdateClock } from '@/service/activityMainpage';
import { checkHospitalStatus } from '@/service';
import { getShareUrl } from '@/utils/index';
import { Toast } from 'vant';
......@@ -270,9 +233,9 @@
// appVersion: '',
// systemType: '',
},
eachInviteAward: { // 每邀请1位医生好友领取课程,+??勤奋分 +??云鹊豆
mark: 0, // 勤奋分
bean: 0, // 云鹊豆
eachInviteAward: { // 每邀请1位医生好友领取课程,+??勤奋分 +??云鹊豆 (默认均为20)
mark: 20, // 勤奋分
bean: 20, // 云鹊豆
},
doctorInfo: {
name: '', // 接口返回用户名字或者手机号带遮掩
......@@ -295,6 +258,16 @@
notInviteShowList: [], // 未邀请的默认显示
taskList: [], // 打卡、课程、SMO
taskObj: {
clock: null, // 打卡
lesson: null, // 课程
smo: null, // 患者招募
},
isClockFinish: false, // 是否打卡
clockAward: { // 打卡的奖励 默认都是5
mark: 5,
bean: 5,
},
}
},
......@@ -338,6 +311,9 @@
},
mounted() {
vm.getTasks(); // 放到登录后或其他************************
vm.$rocNative.appInit();
vm.getUserInfo(); // 判断是否登录
......@@ -355,6 +331,9 @@
let serverTime = 11111;
},
hideClockModal() {
vm.clockSuccessVisible = false;
},
returnStageText() {
if(vm.currentStage == 0){
return '';
......@@ -418,10 +397,16 @@
},
// 登陆ok后 回调: 获取邀请的医生列表等。。
loginCallback() {
vm.getUserActivityInfo();
vm.goToCheckJoin();
},
getUserActivityInfo() { // 获取用户及参加活动的具体信息
getUserScoreInfo().then(res => {
alert('获取用户及分数信息。。。');
alert(JSON.stringify(res))
});
// 请求接口
vm.doctorInfo = {
name: '云鹊医', // 接口返回用户名字或者手机号带遮掩
......@@ -447,6 +432,7 @@
if (status && status == 1) { // 机构状态正常
vm.isJoin = true;
vm.joinStatus = 1;
vm.getTaskStatus(vm.clockAward);
vm.handleGetInviteList(); //登录且已加入机构才获取医生邀请了的列表
}else if (status && status == 15) { // 15创建机构审核中
vm.isJoin = false;
......@@ -652,12 +638,39 @@
},
// 去打卡 按钮
handleClock() {
let cb = this.goToClock;
goToFinish(item) {
let cb = () => {
vm.goToFinishCB(item);
};
this.handleLoginCheck(cb);
},
goToClock() {
console.log('执行打卡逻辑');
goToFinishCB(item) {
// resourceType 业务类型 1.课程 2.考试 3.调查问卷 4.患者招募 5.宣教漫画 6.打卡 7.邀请
if( item.resourceType == 6 ){
// 执行打卡接口
if( vm.isClockFinish ){ // 已打卡,不执行,未打卡,去调用打卡接口
// 已打卡,不处理
}else{ // 未打卡,去打卡
let params = {
activityId: item.activityId,
taskId: item.id,
};
goToUpdateClock(params).then(res => {
alert(JSON.stringify('goTO 更新去打卡状态'));
alert(JSON.stringify(res));
if(res && res.code == '000000'){
if(res.data){ // 打卡成功
vm.clockSuccessVisible = true;
}else{
vm.$toast(res.message);
}
}else{
vm.$toast(res.message);
}
})
}
}
},
// 每个任务的跳转点击
......@@ -670,7 +683,7 @@
},
// 获取每日任务 及 邀请医生好友学课程里的 邀请1位医生的勤奋分及云鹊豆个数
getTasks() {
// debugger;
let res = {
"data": {
"loginStatus": 2,
......@@ -678,8 +691,8 @@
{
"id": 14,
"activityId": 2,
"resourceType": 7,
"resourceId": "2",
"resourceType": 7, // 业务类型 1.课程 2.考试 3.调查问卷 4.患者招募 5.宣教漫画 6.打卡 7.邀请
"resourceId": "1",
"resourceChildId": null,
"defaultBackgroundImage": "https://test1-file.yunqueyi.com/image/png/common/2019112809513020.png",
"finishBackgroundImage": null,
......@@ -690,7 +703,7 @@
"beginTime": "2019-11-26 00:00:00",
"endTime": "2019-11-27 23:59:59",
"linkId": 1703,
"rewardJsonInfo": "[{\"rewardType\":2,\"rewardQuantity\":\"100\"}]",
"rewardJsonInfo": [{rewardType:3,rewardQuantity:"100"},{rewardType:1,rewardQuantity:"200"}],
"pushType": 1,
"pushLinkUrl": "",
"hideEndFlag": 2,
......@@ -705,12 +718,76 @@
"nowCumulativeFrequency": 0,
"isFinish": 0,
"doctorFinishFrequency": null,
"timeStatus": 2
"timeStatus": 1 // 项目时间状态 1.进行中 2.结束 3.未开始
},
{
"id": 15,
"activityId": 2,
"resourceType": 6, // 业务类型 1.课程 2.考试 3.调查问卷 4.患者招募 5.宣教漫画 6.打卡 7.邀请
"resourceId": "2",
"resourceChildId": null,
"defaultBackgroundImage": "https://test1-file.yunqueyi.com/image/png/common/2019112809513020.png",
"finishBackgroundImage": null,
"taskFrequency": 1,
"finishFrequency": 1,
"cumulativeFrequency": null,
"ruleName": "每日打卡test",
"beginTime": "2019-11-26 00:00:00",
"endTime": "2019-11-27 23:59:59",
"linkId": 1703,
"rewardJsonInfo": [{rewardType:3,rewardQuantity: 111},{rewardType:1,rewardQuantity:0}],
"pushType": 1,
"pushLinkUrl": "",
"hideEndFlag": 2,
"seqNo": 2,
"deleteFlag": 1,
"createdId": 161,
"createdTime": "2019-11-28 09:51:58",
"modifiedId": 161,
"modifiedTime": "2019-11-29 15:30:54",
"beginTimeStr": null,
"endTimeStr": null,
"nowCumulativeFrequency": 0,
"isFinish": 0,
"doctorFinishFrequency": null,
"timeStatus": 1
},
{
"id": 15,
"activityId": 2,
"resourceType": 1, // 业务类型 1.课程 2.考试 3.调查问卷 4.患者招募 5.宣教漫画 6.打卡 7.邀请
"resourceId": "2",
"resourceChildId": null,
"defaultBackgroundImage": "https://test1-file.yunqueyi.com/image/png/common/2019112809513020.png",
"finishBackgroundImage": null,
"taskFrequency": 1,
"finishFrequency": 1,
"cumulativeFrequency": null,
"ruleName": "高血压课程",
"beginTime": "2019-11-26 00:00:00",
"endTime": "2019-11-27 23:59:59",
"linkId": 1703,
"rewardJsonInfo": [{rewardType:3,rewardQuantity: 222},{rewardType:1,rewardQuantity:0}],
"pushType": 1,
"pushLinkUrl": "",
"hideEndFlag": 2,
"seqNo": 2,
"deleteFlag": 1,
"createdId": 161,
"createdTime": "2019-11-28 09:51:58",
"modifiedId": 161,
"modifiedTime": "2019-11-29 15:30:54",
"beginTimeStr": null,
"endTimeStr": null,
"nowCumulativeFrequency": 0,
"isFinish": 1,
"doctorFinishFrequency": null,
"timeStatus": 1
},
{
"id": 15,
"activityId": 2,
"resourceType": 7,
"resourceType": 4, // 业务类型 1.课程 2.考试 3.调查问卷 4.患者招募 5.宣教漫画 6.打卡 7.邀请
"resourceId": "2",
"resourceChildId": null,
"defaultBackgroundImage": "https://test1-file.yunqueyi.com/image/png/common/2019112809513020.png",
......@@ -718,11 +795,11 @@
"taskFrequency": 1,
"finishFrequency": 1,
"cumulativeFrequency": null,
"ruleName": "邀请好友测试",
"ruleName": "SMO患者招募",
"beginTime": "2019-11-26 00:00:00",
"endTime": "2019-11-27 23:59:59",
"linkId": 1703,
"rewardJsonInfo": "[{\"rewardType\":3,\"rewardQuantity\":\"100\"},{\"rewardType\":4,\"rewardQuantity\":\"15\"}]",
"rewardJsonInfo": [{rewardType:3,rewardQuantity: 0},{rewardType:1,rewardQuantity:99}],
"pushType": 1,
"pushLinkUrl": "",
"hideEndFlag": 2,
......@@ -737,7 +814,7 @@
"nowCumulativeFrequency": 0,
"isFinish": 0,
"doctorFinishFrequency": null,
"timeStatus": 2
"timeStatus": 1
}
],
"activityData": {
......@@ -763,13 +840,17 @@
"message": "成功"
};
let data = res.data;
let taskRuleData = res.taskRuleData || [];
// 获取 邀请节点,此时获取邀请1个医生对应的 分数 和 豆子
let taskRuleData = data.taskRuleData || [];
for(let i=0; i<taskRuleData.length; i++){
let item = taskRuleData[i];
if( item.resourceType == 7 && resourceId == 1 ){
let rewardList = item.rewardJsonInfo || [];
let rewardList = [];
// 获取 邀请节点,进行中 此时获取邀请1个医生对应的 分数 和 豆子
if( item.resourceType == 7 && item.resourceId == 1 && item.timeStatus == 1){
rewardList = item.rewardJsonInfo || [];
for( let j=0; j<rewardList.length; j++ ){
if( rewardList[j].rewardType == 3 ){ // 勤奋分
vm.eachInviteAward.mark = rewardList[j].rewardQuantity;
......@@ -777,14 +858,110 @@
vm.eachInviteAward.bean = rewardList[j].rewardQuantity;
}
}
}else if( item.resourceType == 6 && item.timeStatus == 1 ){ // 打卡 默认奖励 5分 5豆
item.eachInviteAwardMark = 5;
item.eachInviteAwardBean = 5;
item = vm.formatEachTaskAward(item);
vm.clockAward = {
mark: item.eachInviteAwardMark,
bean: item.eachInviteAwardBean,
activityId: item.activityId,
id: item.id,
};
vm.taskObj.clock = item;
}else if( item.resourceType == 1 && item.timeStatus == 1 ){ // 课程 默认奖励 20分 20豆
item.eachInviteAwardMark = 20;
item.eachInviteAwardBean = 20;
item = vm.formatEachTaskAward(item);
vm.taskObj.lesson = item;
}else if( item.resourceType == 4 && item.timeStatus == 1 ){ // smo 没奖励分 默认奖励100豆
item.eachInviteAwardBean = 100;
item = vm.formatEachTaskAward(item);
vm.taskObj.smo = item;
}
};
vm.taskList = [];
if( vm.taskObj.clock ){
vm.taskList.push( vm.taskObj.clock );
}
if( vm.taskObj.lesson ){
vm.taskList.push( vm.taskObj.lesson );
}
if( vm.taskObj.smo ){
vm.taskList.push( vm.taskObj.smo );
}
// 过滤出 活动主页需要的任务数据
},
getTaskStatus(params) {
vm.isClockFinish = false;
getClockStatus(params).then(res => {
alert(JSON.stringify('GET GET 打卡状态获取 OK'));
if(res && res.code == '000000'){
text = !!res.data ? '已打卡' : '去打卡';
vm.isClockFinish = !!res.data;
}else{
vm.$toast(res.message);
}
})
},
returnUnderAwardTips(item) {
if( typeof item.eachInviteAwardMark != 'undefined' && item.eachInviteAwardMark != '0' ){
return `+${item.eachInviteAwardMark}勤奋分 +${item.eachInviteAwardBean}云鹊豆`;
}else{
return `+${item.eachInviteAwardBean}云鹊豆`;
}
},
// 格式化数据
formatEachTaskAward(item) {
let rewardList = item.rewardJsonInfo || [];
for( let j=0; j<rewardList.length; j++ ){
if( rewardList[j].rewardType == 3 ){ // 勤奋分
item.eachInviteAwardMark = rewardList[j].rewardQuantity;
}else if( rewardList[j].rewardType == 1 ){ // 云鹊豆
item.eachInviteAwardBean = rewardList[j].rewardQuantity;
}
};
return item;
},
// ddd
// 返回每个任务 icon
returnEachTaskIcon(item) { // resourceType 业务类型 1.课程 2.考试 3.调查问卷 4.患者招募 5.宣教漫画 6.打卡 7.邀请
if( item.resourceType == 6 ){
return require('../assets/img/task-icon/daily-clock-icon.png');
}else if( item.resourceType == 1 ) {
return require('../assets/img/task-icon/lesson-icon.png');
}else if( item.resourceType == 4 ){
return require('../assets/img/task-icon/smo-icon.png');
}else{
return require('../assets/img/task-icon/daily-clock-icon.png');
}
},
returnEachTaskStatus(item) {
if( item.resourceType == 6 ){
return vm.isClockFinish ? 'right-btn done' : 'right-btn'
}else{
return item.isFinish == 0 ? 'right-btn done' : 'right-btn'
}
},
// 返回任务右边的按钮文案
returnIconText(item) {
let text = '去完成';
if( item.resourceType == 6 ){
return vm.isClockFinish ? '已打卡' : '去打卡';
}
if( item.resourceType == 1 ){ // 1-课程
text = item.isFinish == 0 ? '已完成' : '去学习';
}else if( item.resourceType == 4 ){ // 4-smo
text = item.isFinish == 0 ? '已完成' : '去完成';
}
return text;
},
},
......
......@@ -2,8 +2,21 @@
import request from './api';
// 获取已邀请的医生列表
// 获取用户信息
// /ranking/user_info
export const getUserScoreInfo = () => {
return request({
url: `campaign/ranking/user_info`,
method: 'post',
withCredentials: true,
// headers: {
// token: token
// }
})
}
// 获取已邀请的医生列表
export const getInviteList = () => {
return request({
url: `campaign/inviteDetail/oneList?pageNo=1&pageSize=10`,
......@@ -13,4 +26,26 @@ export const getInviteList = () => {
// token: token
// }
})
}
\ No newline at end of file
}
// 获取打卡状态
export const getClockStatus = (params) => {
return request({
url: `campaign/clock/${params.activityId}/status/${params.id}`,
method: 'get',
withCredentials: true,
})
}
// 去打卡状态
export const goToUpdateClock = (params) => {
return request({
url: `campaign/clock/clock`,
method: 'post',
data: params,
withCredentials: true,
})
}
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册