提交 9c84bbb7 编写于 作者: guangjun.yang's avatar guangjun.yang

Merge branch 'dev-question-bank-0916' of...

Merge branch 'dev-question-bank-0916' of http://192.168.110.53/com.pica.cloud.education.frontend/pica-professional-exam into dev-question-bank-0916

* 'dev-question-bank-0916' of http://192.168.110.53/com.pica.cloud.education.frontend/pica-professional-exam:
  学科详情页样式调整2
  学科详情页样式调整
  题库详情页接口联调及处理
...@@ -232,6 +232,12 @@ export default { ...@@ -232,6 +232,12 @@ export default {
font-weight: 700; font-weight: 700;
color: rgba(51, 51, 51, 1); color: rgba(51, 51, 51, 1);
line-height: 26px; line-height: 26px;
display: inline-block;
max-width: 230px;
height: 36px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
} }
} }
.nav-part { .nav-part {
......
<template> <template>
<div class="question-bank-wrap"> <div class="question-bank-wrap">
<CommonNavbar <CommonNavbar
ref="navBarCom"
:bgColor="bgColor" :bgColor="bgColor"
v-show="isShowNavbar" v-if="isShowNavbar"
:title="navTitle" :title="navTitle"
:isFixNavbar="isFixNavbar" :isFixNavbar="isFixNavbar"
borderStyle="1px solid #fff" borderStyle="1px solid #fff"
></CommonNavbar> ></CommonNavbar>
<div class="question-bank-content"> <div class="fixed-qb-header">
<div class="header-info"> <div class="header-info" :class="!isWeb ? 'top-set' : ''">
<div class="info-first"> <div class="info-first">
<img v-if="directoryInfo.avatarImageUrl" :src="directoryInfo.avatarImageUrl"> <img v-if="directoryInfo.avatarImageUrl" :src="directoryInfo.avatarImageUrl">
<img v-if="!directoryInfo.avatarImageUrl" src="../images/question/portrait.png"> <img v-if="!directoryInfo.avatarImageUrl" src="../images/question/portrait.png">
...@@ -22,6 +23,8 @@ ...@@ -22,6 +23,8 @@
<div class="item" @click="collectBook"><img src="../images/question/heart-h.png">收藏<span v-if="directoryInfo.collectTitleBook">({{directoryInfo.collectTitleBook}})</span></div> <div class="item" @click="collectBook"><img src="../images/question/heart-h.png">收藏<span v-if="directoryInfo.collectTitleBook">({{directoryInfo.collectTitleBook}})</span></div>
</div> </div>
</div> </div>
</div>
<div class="question-bank-content" :class="!isWeb ? 'add-padding' : ''">
<div class="question-intro" v-if="directoryInfo.directoryImageUrl || directoryInfo.directoryIntro"> <div class="question-intro" v-if="directoryInfo.directoryImageUrl || directoryInfo.directoryIntro">
<img v-if="directoryInfo.directoryImageUrl" :src="directoryInfo.directoryImageUrl"> <img v-if="directoryInfo.directoryImageUrl" :src="directoryInfo.directoryImageUrl">
<p v-if="directoryInfo.directoryIntro">{{directoryInfo.directoryIntro}}</p> <p v-if="directoryInfo.directoryIntro">{{directoryInfo.directoryIntro}}</p>
...@@ -31,32 +34,33 @@ ...@@ -31,32 +34,33 @@
<div class="course-item" v-for="(item, index) in subDirectoryModelList" :key="index"> <div class="course-item" v-for="(item, index) in subDirectoryModelList" :key="index">
<div class="left-c"> <div class="left-c">
<p class="title-c">{{item.directoryName}}</p> <p class="title-c">{{item.directoryName}}</p>
<p class="join-c" v-if="!cardStatus">{{item.joinUserNum}}人已参与</p> <p class="join-c" v-if="!bindStatus">{{item.joinUserNum}}人已参与</p>
<div class="progress-course" v-else> <div class="progress-course" v-else>
<div class="progress-w"><van-progress :percentage="item.finishedRatio" :stroke-width="6" color="#449284" :show-pivot="false"/></div> <div class="progress-w"><van-progress :percentage="item.finishedRatio" :stroke-width="6" color="#449284" :show-pivot="false"/></div>
<span class="mg-set">{{item.finishedRatio}}%</span><span>{{item.sumTitle}}</span> <span class="mg-set">{{item.finishedRatio}}%</span><span>{{item.sumTitle}}</span>
</div> </div>
</div> </div>
<div class="right-btn"> <div class="right-btn">
<span v-if="!cardStatus && (item.freeFlag == 0)" @click="freeStudy(item)">免费练习</span> <span v-if="!bindStatus && (item.freeFlag == 0)" @click="goStudy(item)">开始练习</span>
<img v-if="!cardStatus && (item.freeFlag == 1)" src="../images/question/lock.png" @click="unlockHand"> <span v-if="!bindStatus && (item.freeFlag == 1) && (item.freePractice > 0)" @click="freeStudy(item)">免费练习</span>
<span v-if="cardStatus == 1" @click="goStudy(item)">{{setTxt(item.finishedRatio)}}</span> <img v-if="!bindStatus && (item.freeFlag == 1) && (item.freePractice == 0)" src="../images/question/lock.png" @click="unlockHand">
<span v-if="bindStatus == 1" @click="goStudy(item)">{{setTxt(item.finishedRatio)}}</span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<BindCardButton <BindCardButton
v-if="!cardStatus" v-if="!bindStatus && !isWeb"
:cardInfo="cardInfo" :cardInfo="cardInfo"
@changeClick="changeClick" @changeClick="changeClick"
@gotoBuy="confirm" @gotoBuy="confirm"
></BindCardButton> ></BindCardButton>
<!--<ChangeCard <ChangeCard
:changeErrorMsg="changeCardErrorMsg" :changeErrorMsg="changeCardErrorMsg"
:isShow="showChangeCard" :isShow="showChangeCard"
@cancle="cancleChangeCard" @cancle="cancleChangeCard"
@confirm="changeCardAction"> @confirm="beforeChangeCardAction">
</ChangeCard>--> </ChangeCard>
<CourseDialog <CourseDialog
:subContent="subContent" :subContent="subContent"
confirmBtnText="激活并去学习" confirmBtnText="激活并去学习"
...@@ -71,8 +75,9 @@ ...@@ -71,8 +75,9 @@
import BindCardButton from "@/components/cme/bind-card-button"; import BindCardButton from "@/components/cme/bind-card-button";
import ChangeCard from "@/components/cme/change-card"; import ChangeCard from "@/components/cme/change-card";
import CourseDialog from "@/components/course/course-dialog"; import CourseDialog from "@/components/course/course-dialog";
import { Progress } from 'vant'; import {Progress, Toast} from 'vant';
import { mapGetters, mapActions } from "vuex"; import { mapGetters, mapActions } from "vuex";
import { getWebPageUrl } from "@/utils/index";
export default { export default {
components: { components: {
CommonNavbar, CommonNavbar,
...@@ -85,32 +90,39 @@ export default { ...@@ -85,32 +90,39 @@ export default {
return { return {
token: '', token: '',
isWeb: window.__isWeb, isWeb: window.__isWeb,
// isWeb: false,
isInfresh: false, isInfresh: false,
bgColor: "#fff", bgColor: "#fff",
isShowNavbar: true, isShowNavbar: true,
navTitle: '中级-内科', navTitle: '中级-内科',
isFixNavbar: true, isFixNavbar: false,
firstSubjectId: 66, secondSubjectId: null,
directoryInfo: {}, directoryInfo: {
finishedNum: 0,
wrongTitle: 0,
correctRatio: 0,
},
subDirectoryModelList: [], subDirectoryModelList: [],
userId: null, userId: null,
cardStatus: 0, bindStatus: 0,
cardInfo: { cardInfo: {
id: 0 id: 0
}, },
subContent: '', subContent: '',
cmeCardModels: {}, cmeCardModels: {},
showBindCardTips: false, showBindCardTips: false,
showChangeCard: false,
changeCardErrorMsg: "",
} }
}, },
created() { created() {
let _this = this; let _this = this;
_this.secondSubjectId = _this.$route.query.secondSubjectId || 106;
window.__getUserInfoQB = function(param) { window.__getUserInfoQB = function(param) {
console.log("__getUserInfoQB", param); console.log("__getUserInfoQB", param);
_this.token = param.userToken; _this.token = param.userToken;
_this.userMobile = param.userMobile; _this.userMobile = param.userMobile;
_this.setUserInfo(param); _this.setUserInfo(param);
// _this.checkToken();
_this.initData(); _this.initData();
}; };
...@@ -132,6 +144,7 @@ export default { ...@@ -132,6 +144,7 @@ export default {
}, },
mounted() { mounted() {
}, },
computed: { computed: {
...mapGetters(["userInfo"]), ...mapGetters(["userInfo"]),
...@@ -162,17 +175,18 @@ export default { ...@@ -162,17 +175,18 @@ export default {
token: this.token, token: this.token,
setEntry: true setEntry: true
}; };
this.GET(`portal/titleTest/user/getBrushTitleInfo/${this.firstSubjectId}`, param).then(res => { this.GET(`portal/titleTest/user/getBrushTitleInfo/${this.secondSubjectId}`, param).then(res => {
console.log('详情结果',res.data.data)
if (res.code == "000000") { if (res.code == "000000") {
this.directoryInfo = JSON.parse(JSON.stringify(res.data.data)); this.directoryInfo = JSON.parse(JSON.stringify(res.data));
const { subDirectoryModelList, userId, cardType, goodsType, organizationId, provinceId } = this.directoryInfo; const { subDirectoryModelList, userId, cardType, goodsType, organizationId, provinceId, bindStatus, firstSubjectCodeName, secondSubjectName, secondSubjectCode } = this.directoryInfo;
this.subDirectoryModelList = subDirectoryModelList; this.subDirectoryModelList = subDirectoryModelList;
this.userId = userId; this.userId = userId;
this.bindStatus = bindStatus;
this.navTitle = `${firstSubjectCodeName}-${secondSubjectName}${secondSubjectCode}`
//获取底部卡信息 //获取底部卡信息
// 如果 hasBindCard 为false,则获取卡信息 0:未绑卡 1:已绑卡 // 如果 bindStatus 为false,则获取卡信息 0:未绑卡 1:已绑卡
if (!this.cardStatus) { if (!this.bindStatus) {
this.preJumper(); this.preJumper();
// 查询有无已买未激活的卡 // 查询有无已买未激活的卡
this.hasNoUsedCard(); this.hasNoUsedCard();
...@@ -191,13 +205,13 @@ export default { ...@@ -191,13 +205,13 @@ export default {
this.GET("campaign/admin/task/checkToken", param).then(res => { this.GET("campaign/admin/task/checkToken", param).then(res => {
if (res.code !== "000000") { if (res.code !== "000000") {
//未登录 跳转登录页 //未登录 跳转登录页
console.log("跳登录", _this.isInfresh); console.log("跳登录", this.isInfresh);
if(_this.isInfresh) { if(this.isInfresh) {
rocNative.goBack(); rocNative.goBack();
} else { } else {
rocNative.gotoLogin(); rocNative.gotoLogin();
} }
_this.isInfresh = false; this.isInfresh = false;
}else { }else {
} }
...@@ -252,7 +266,7 @@ export default { ...@@ -252,7 +266,7 @@ export default {
} }
); );
}, },
// 查询是否买过类似的卡,但还没有激活 // 查询是否买过类似的卡,但还没有绑定激活
hasNoUsedCard() { hasNoUsedCard() {
let param = { let param = {
setEntry: true setEntry: true
...@@ -277,18 +291,17 @@ export default { ...@@ -277,18 +291,17 @@ export default {
this.$sendBuriedData({ this.$sendBuriedData({
component_tag: `882#88218` component_tag: `882#88218`
}); });
this.changeCardAction(this.cmeCardModels.cardKey, true) this.beforeChangeCardAction(this.cmeCardModels.cardKey, true)
} }
}, },
//错题集 //错题集
wrongBook() { wrongBook() {
this.checkTokenForNative(() => { this.checkTokenForNative(() => {
// this.changeCardAction(cardKey, isInTips);
this.$router.push({ this.$router.push({
path: '/question-detail', path: '/question-detail',
query: { query: {
directoryId: 0, directoryId: 0,
secondSubjectId: this.firstSubjectId,//需跟后端确认 secondSubjectId: this.secondSubjectId,
cardType: this.directoryInfo.cardType, cardType: this.directoryInfo.cardType,
goodsType : this.directoryInfo.goodsType, goodsType : this.directoryInfo.goodsType,
commitKind : 1, commitKind : 1,
...@@ -301,12 +314,11 @@ export default { ...@@ -301,12 +314,11 @@ export default {
//收藏 //收藏
collectBook() { collectBook() {
this.checkTokenForNative(() => { this.checkTokenForNative(() => {
// this.changeCardAction(cardKey, isInTips);
this.$router.push({ this.$router.push({
path: '/question-detail', path: '/question-detail',
query: { query: {
directoryId: 0, directoryId: 0,
secondSubjectId: this.firstSubjectId,//需跟后端确认 secondSubjectId: this.secondSubjectId,
cardType: this.directoryInfo.cardType, cardType: this.directoryInfo.cardType,
goodsType : this.directoryInfo.goodsType, goodsType : this.directoryInfo.goodsType,
commitKind : 2, commitKind : 2,
...@@ -316,17 +328,120 @@ export default { ...@@ -316,17 +328,120 @@ export default {
}) })
}); });
}, },
changeClick() {}, changeClick() {
confirm() {}, this.checkTokenForNative(() => {
this.showChangeCard = true;
});
this.$sendBuriedData({
component_tag: `882#88202`
});
},
//去购买操作-先校验登录
confirm() {
this.checkTokenForNative(() => {
this.confirmGoBuy();
})
},
confirmGoBuy() {
this.$sendBuriedData({
component_tag: `882#88203`
});
let appVersion = this.userInfo.appVersion || "";
let appVersionNum = appVersion.split(".").join("");
if (appVersionNum < 344) {
this.$toast("请您下载新版本App");
return;
}
// 直接传入职称考项目ID(projectId)
let pageUrl = getWebPageUrl(
`/profexam/#/question-bank?id=${this.secondSubjectId}&secondSubjectId=${this.secondSubjectId}`
);
let paramList = [
{
key: "className",
value:
"com.picahealth.yunque.activitys.studycard.StudyCardDetailActivity###PicaDo.LearningCardVC",
type: 4,
seqNo: 1
},
{
key: "goodId",
value: this.cardInfo.id,
type: 4,
seqNo: 1
},
{
key: "courseUrl",
value: encodeURIComponent(pageUrl),
// value: projectId,
type: 4,
seqNo: 1
}
];
rocNative.dispatchEventByModuleCode({
modeCode: "M200",
jsonString: paramList
});
},
//确认激活操作-先校验登录
beforeChangeCardAction(cardKey, isInTips) {
this.checkTokenForNative(() => {
this.changeCardAction(cardKey, isInTips);
});
},
changeCardAction(cardKey, isInTips) {
let param = {
idType: 2,
cardKey: cardKey,
cardType: this.directoryInfo.cardType,
goodsType: this.directoryInfo.goodsType,
channel: 1,
portalProjectId: this.secondSubjectId,
setEntry: true
};
this.changeCardErrorMsg = "";
this.POST("cme/projectCard/bind", param).then(res => {
isInTips && (this.showBindCardTips = false);
if (res.code == "000000") {
if(res.data == 0) {
if(isInTips) {
Toast(res.message);
} else {
this.changeCardErrorMsg = "请输入正确的激活码";
}
} else {
this.showChangeCard = false;
Toast("激活成功,开始学习");
this.initData();
}
} else {
Toast(res.message);
}
}).catch( e => {
console.log('in catch', isInTips);
if(isInTips) {
Toast("无效的激活码");
this.showBindCardTips = false;
} else {
this.changeCardErrorMsg = "请输入正确的激活码";
}
});
},
//关闭激活弹层
cancleChangeCard() {
this.showChangeCard = false;
},
//免费练习 //免费练习
freeStudy(obj) { freeStudy(obj) {
this.checkTokenForNative(() => { this.checkTokenForNative(() => {
// this.changeCardAction(cardKey, isInTips);
this.$router.push({ this.$router.push({
path: '/question-detail', path: '/question-detail',
query: { query: {
directoryId: obj.directoryId, directoryId: obj.directoryId,
secondSubjectId: this.firstSubjectId,//需跟后端确认 secondSubjectId: this.secondSubjectId,
cardType: this.directoryInfo.cardType, cardType: this.directoryInfo.cardType,
goodsType : this.directoryInfo.goodsType, goodsType : this.directoryInfo.goodsType,
commitKind : 3, commitKind : 3,
...@@ -341,7 +456,20 @@ export default { ...@@ -341,7 +456,20 @@ export default {
this.$toast('购买后可练习') this.$toast('购买后可练习')
}, },
//开始练习 //开始练习
goStudy(obj) {}, goStudy(obj) {
this.$router.push({
path: '/question-detail',
query: {
directoryId: obj.directoryId,
secondSubjectId: this.secondSubjectId,
cardType: this.directoryInfo.cardType,
goodsType : this.directoryInfo.goodsType,
commitKind : 3,
freeFlag: obj.freeFlag,
currentTitle: obj.directoryName
}
})
},
}, },
} }
</script> </script>
...@@ -351,10 +479,18 @@ export default { ...@@ -351,10 +479,18 @@ export default {
width: 100%; width: 100%;
padding-bottom: 60px; padding-bottom: 60px;
box-sizing: border-box; box-sizing: border-box;
.question-bank-content{ .fixed-qb-header{
position: relative;
.header-info{
position: fixed;
z-index: 200;
background-color: #FFFFFF;
padding: 0 16px; padding: 0 16px;
box-sizing: border-box; box-sizing: border-box;
.header-info{ width: 100%;
&.top-set{
top: 78px;
}
.info-first{ .info-first{
display: flex; display: flex;
padding: 20px 0; padding: 20px 0;
...@@ -419,6 +555,17 @@ export default { ...@@ -419,6 +555,17 @@ export default {
} }
} }
} }
}
.question-bank-content{
padding: 0 16px;
box-sizing: border-box;
position: relative;
/*margin-top: 155px;*/
padding-top: 128px;
&.add-padding{
padding-top: 143px;
}
.question-intro{ .question-intro{
margin-top: 15px; margin-top: 15px;
background-color: #FFFFFF; background-color: #FFFFFF;
...@@ -429,7 +576,7 @@ export default { ...@@ -429,7 +576,7 @@ export default {
width: 100%; width: 100%;
border-radius: 6px 6px 0 0; border-radius: 6px 6px 0 0;
display: block; display: block;
height: 160px; max-height: 80px;
} }
p{ p{
color: #676869; color: #676869;
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册