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

登陆、跳转、下载等

上级 b34eb124
<template>
<!-- 项目组件列表项 -->
<section>
<div
class="cell-detail"
v-for="(component , index) in projectComponent"
:key="index">
<van-collapse v-model="activeNames" @change="changeCollapse">
<van-collapse-item
v-for="(portalModule, index) in component.portalModuleDTOS"
:key="index"
:title="(parseInt(index) + 1) + '.' + portalModule.moduleName | shortName(19)"
:name="portalModule.expandKey"
:value="portalModule.value"
:disabled="portalModule.disabled"
@click.native="chooseItem(portalModule)"
>
<!-- @click.native="chooseItem(item)" -->
<article @click.stop="deleteFlow()" class="cell-container">
<span class="" v-for="(item, index) in portalModule.contentList" :key="index">
<div v-if="index > 0 && portalModule.contentList[index].templetId!= portalModule.contentList[index-1].templetId" class="bottom-line"></div>
<div class="cell-container-item" >
<div class="name">
<div class="name-img">
<img v-if="item.type == 1 && item.useFlag == 1" class="img-icon" src="../../images/exam.png">
<img v-if="item.type == 1 && item.useFlag == 2" class="img-icon" src="../../images/exam-dark.png">
<img v-if="item.type == 2 && item.useFlag == 1" class="img-icon" src="../../images/learn.png">
<img v-if="item.type == 2 && item.useFlag == 2" class="img-icon" src="../../images/learn-dark.png">
</div>
<p class="name-title" :class="{'name-title-no': item.useFlag == 2}">{{item.name | shortName(30)}}</p>
</div>
<span
v-if="!logged"
@click="gotoExamOrCourse(item)"
class="text-action text-action-no"
>
<!-- :class="{'text-action-no': item.useFlag == 2}" -->
{{getActionText(item.status, item.type)}}
</span>
<span
v-else-if="!hasBindCard && item.type == 2 && cmeType == 2"
@click="gotoExamOrCourse(item)"
class="text-action"
style="background: #f28662;border: none;color: #fff;"
>
<!-- :class="{'text-action-no': item.useFlag == 2}" -->
去试看
</span>
<span
v-else
@click="gotoExamOrCourse(item)"
class="text-action"
:class="{'text-action-no': item.useFlag == 2}"
>
{{getActionText(item.status, item.type)}}
</span>
<!-- <img @click="toastToBuy" class="key" v-show="!hasBindCard" src="../../images/cme/phrase2/key.png" alt=""> -->
<div class="foot-line"
v-if="index+1 < portalModule.contentList.length && portalModule.contentList[index].templetId == portalModule.contentList[index+1].templetId">
</div>
</div>
<span v-if="item.certificateFlag == 2">
<img class="cert-img" :class="{'space2': item.height == 2 }" src="../../images/has-cert-new.png">
</span>
</span>
</article>
</van-collapse-item>
</van-collapse>
</div>
<van-dialog
v-model="dialogState"
title="标题"
>
</van-dialog>
</section>
</template>
<script>
import MergeTitle from "@/components/business/merge-title";
import NoMoreContent from "@/components/business/no-more-content";
import CertShow from "@/components/business/cert-show";
import { Collapse, CollapseItem, Dialog, Toast } from 'vant';
import { mapGetters } from "vuex";
import { getAppVersion, getWebPageUrl } from "@/utils";
import vueFilters from '@/utils/filter';
const actionMap = {
11: "去考试",
12: "再考一次",
13: "已通过",
14: "已完成",
15: "已通过",
16: "未通过",
21: "去学习",
22: "继续学习",
23: "去复习"
};
const sendBuriedDataMap = {
// 11: "8824",
// 12: "211013",
21: "8821",
22: "8822",
23: "8823"
}
export default {
name: "cell-list-item",
data() {
return {
appVersion: "200",
hocImg: require("../../images/has-owner-cert.png"),
activeNames: [1],
dialogState: false,
// projectId: 1
};
},
props: {
hasBindCard: {
type: Boolean,
default: false
},
projectComponent: {
type: Array,
default: () => []
},
actionList: {
type: Array,
default: () => []
},
detailNum: {
type: Number | String,
default: 0
},
courseRequire: {
type: Number | String,
default: 0,
},
limitTimes: {
type: Number | String,
default: 0,
},
cmeType: {
type: Number | String,
default: 0,
},
logged: {
type: Boolean,
default: false
},
projectId: {
type: Number | String,
default: 0
}
},
computed: {
...mapGetters(["userInfo"])
},
components: {
MergeTitle,
CertShow,
NoMoreContent,
Dialog,
},
watch:{
actionList: {
immediate: true,
handler (val) {
this.activeNames = val;
}
}
},
mounted() {
},
created() {
// this.projectId = this.$route.query.id;
},
methods: {
// 跳转到考试或课程 type 1: 考试; 2: 课程
// 如果是考试,将根据appVersion判断是新考试还是老考试,如果是301或之前的,都是老考试
gotoExamOrCourse(item) {
this.$parent.$refs.tcPlayerRef && this.$parent.$refs.tcPlayerRef.pause();
if(!this.logged) {
if(item.type == 1) {
Toast('请前往云鹊医APP参加考试');
} else if(item.type == 2){
Toast('登陆后可学习课程');
}
return;
}
// 埋点:去学习、继续学习、复习、去考试、重考
// let actionCode = sendBuriedDataMap[item.status];
// if(actionCode) {
// this.$sendBuriedData({
// component_tag: `882#${actionCode}#${this.projectId}`
// });
// }
if (item.useFlag == 2) return;
if (item.type == 1) {
this.gotoExam(item.id);
} else if (item.type == 2) {
this.gotoCourse(item.id);
}
},
// 跳转到课程
gotoCourse: function(courseId) {
let token = localStorage.getItem('token');
let jumpUrl = getWebPageUrl(`profexam/#/course-detail?courseId=${courseId}&projectId=${this.projectId}&token=${token}`);
window.location.href = jumpUrl;
},
// 跳转到考试
gotoExam: function(examId) {
Toast('请前往云鹊医APP参加考试');
},
getActionText(status, type) {
let actionText = actionMap[status];
if(!actionText) {
actionText = type == 1 ? '去考试' : '去学习';
}
if(!this.hasBindCard && type == 2) {
actionText = '去试看'
}
return actionText;
},
changeCollapse(activeNames) {
console.log('activeNames',activeNames);
let param = {
expandKeys: activeNames,
setEntry: true,
token: this.userInfo.userToken,
}
this.POST("portal/portalApp/updateExpandStatus?projectId="+this.projectId, param).then(res => {
});
},
deleteFlow() {
},
chooseItem(item) {
let _this = this;
if(item.disabled === true) {
console.log('item',item);
Toast('尚未开始,敬请期待');
}
},
// 弹框提示
toastToBuy() {
Toast('购买后可学习课程');
}
}
};
</script>
<style lang="less">
.van-dialog {
transform: translate(-50%,-50%);
width: 300px;
border-radius: 3px;
.van-dialog__header {
padding-top: 30px;
font-size: 18px;
color: #333333;
}
.van-dialog__content {
.van-dialog__message--has-title {
padding-top: 14px;
text-align: left;
color: #676869;
font-weight:400;
}
}
.van-dialog__footer {
.van-button {
.van-button__text {
color: #449284;
font-size: 17px;
}
}
}
}
.van-toast {
// background: #000000;
div {
font-size:12px;
color: #FFFFFF;
}
}
.van-toast--text {
padding: 7px 8px;
}
.no-more-bottom {
position: relative;
width: 100%;
height: 40px;
}
.cell-detail {
.van-hairline--top::after , .van-hairline--top-bottom::after {
border-width: 0px;
}
.van-collapse-item {
.van-cell {
margin: 9px auto 0 auto;
width: 345px;
min-height: 48px;
border-radius: 6px;
}
.van-collapse-item__title {
background: #F8F9FA;
.van-cell__title {
max-width: 200px;
vertical-align: middle;
line-height: 30px;
flex: auto;
span {
color: #373839;
font-weight:500;
font-size: 15px;
height: 15px;
line-height: 15px;
}
}
.van-cell__value {
// max-width: 80px;
line-height: 30px;
span {
color: #979899;
font-weight:500;
font-size: 14px;
line-height: 14px;
}
}
.van-icon {
margin-top: 3px;
color: #999999;
}
}
.van-collapse-item__title--expanded {
background: #E3EFED;
.van-cell__title {
span {
color: #449284;
font-weight:500;
font-size: 15px;
line-height: 15px;
}
}
.van-cell__value {
span {
color: #449284;
font-weight:500;
font-size: 14px;
line-height: 14px;
}
}
.van-icon {
color: #449284;
}
}
.van-collapse-item__title--disabled {
.van-cell__right-icon {
display: none;
}
.van-cell__title , .van-cell__value{
span {
color: #979899;
}
}
}
.van-collapse-item__content {
padding: 0;
}
}
.line-component {
position: relative;
margin-top: 20px;
margin-left: 0;
width: 373px;
height: 6px;
background: #F8F9FA;
}
}
.cell-container {
display: flex;
flex-direction: column;
margin: 20px 0px -28px 0px;
&-item {
position: relative;
display: flex;
flex-direction: row;
margin-bottom: 39px;
line-height: 51px;
font-size: 15px;
justify-content: space-between;
align-items: center;
.name {
.name-img {
position: relative;
z-index: 9;
margin-right: 6px;
width: 20px;
height: 20px;
float: left;
.img-icon {
position: absolute;
top: 0;
left: 0;
width: 20px;
height: 20px;
}
}
&-logo {
position: relative;
z-index: 9;
margin-right: 6px;
width: 20px;
height: 20px;
text-align: center;
background:rgba(68,146,132,1);
font-size: 12px;
font-weight: 700;
color: #FFFFFF;
border-radius: 50%;
float: left;
line-height: 22px;
// display:table;
// overflow:hidden;
// span {
// color: #FFFFFF;
// font-size: 12px;
// font-weight: 700;
// display: table-cell;
// text-align: center;
// vertical-align: middle;
// line-height: 20px;
// }
// &::before {
// position: absolute;
// top: -6px;
// left: 8px;
// display: inline-block;
// height: 6px;
// width: 4px;
// background: #FFFFFF;
// content: "";
// }
// &::after {
// position: absolute;
// top: 20px;
// left: 8px;
// display: inline-block;
// height: 6px;
// width: 4px;
// background: #FFFFFF;
// content: "";
// }
}
&-learn {
background:rgba(246, 131, 103, 1);
}
&-logo-no {
background:rgba(231, 232, 233, 1);
}
&-title {
// font-family: "PingFangSC-Medium", "PingFangSC", "Microsoft Yahei";
width: 231px;
font-size: 15px;
font-weight: 700;
line-height: 22px;
color: #333333;
float: left;
}
&-title-no {
color: #979899;
}
// &::before {
// position: relative;
// top: 3px;
// display: inline-block;
// width: 4px;
// content: "";
// margin-right: 5px;
// height: 16px;
// background: #449284;
// border-radius: 3px;
// }
// span {
// img {
// margin-top: 4px;
// position: relative;
// top: 2px;
// width: 70px;
// height: 20px;
// }
// }
}
.text-action {
width: 68px;
height: 25px;
line-height: 25px;
text-align: center;
font-size: 12px;
font-weight: 700;
border-radius: 15px;
border: 1px solid rgba(68, 146, 132, 0.6);
color: rgba(68, 146, 132, 1);
img {
position: relative;
left: 2px;
top: 3px;
width: 8px;
height: 12px;
}
&-no {
border: 1px solid #c7c8c9;
color: #c7c8c9;
}
}
.key {
width: 15px;
height: 15px;
}
}
span {
.cert-img {
margin-left: 26px;
position: relative;
top: -34px;
width: 70px;
height: 20px;
}
.space2 {
top: -34px;
}
}
.connect-line {
position: absolute;
// top: 32px;
top: 3px;
left: 8.5px;
height: 42px;
width: 3px;
background: #F8F9FA;
// border: 0.5px dashed rgba(240, 241, 244, 1);
}
.line-complete {
background: #E3EFED;
}
.len4 {
// height: 100px;
height: 106px;
}
.len3 {
// height: 82px;
height: 88px;
}
.len2 {
// height: 82px;
height: 88px;
}
.len1 {
// height: 62px;
height: 68px;
}
.bottom-line {
position: relative;
margin: -19px 0 20px 0;
bottom: 0px;
width: 100%;
height: 6px;
background: #F8F9FA;
border-radius: 2px;
// border-bottom: 0.5px solid #F0F1F2;
}
.foot-line {
position: absolute;
width: 311px;
margin-left: 34.5px;
height: 1px;
background: #E7E8E9;
// border-bottom: 0.5px solid #E7E8E9;
transform: scaleY(0.5);
bottom: -20px;
}
}
.bg-13 {
background: #abcec7;
}
</style>
\ No newline at end of file
...@@ -9,6 +9,7 @@ export default { ...@@ -9,6 +9,7 @@ export default {
name: 'common-title', name: 'common-title',
data() { data() {
return { return {
isWeb: window.__isWeb,
showInfo: { showInfo: {
imageUrl: '', imageUrl: '',
jumpUrl: '' jumpUrl: ''
...@@ -52,6 +53,10 @@ export default { ...@@ -52,6 +53,10 @@ export default {
// 广告位跳转 // 广告位跳转
jumpPage() { jumpPage() {
if(this.isWeb) {
window.location.href = this.showInfo.jumpUrl;
return;
}
let paramList = [ let paramList = [
{ {
key: "pageUrl", key: "pageUrl",
......
<template>
<span class="course-button-wrapper button-default" :class="type" @click="btnClick">{{btnText}}</span>
</template>
<script>
export default {
props: {
btnText: {
type: String,
default: "去云鹊医App"
},
type: {
type: String,
default: "primary"
}
},
data() {
return {};
},
methods: {
btnClick() {
if (this.type == "disabled") return;
this.$emit("btnClick");
}
}
};
</script>
<style lang="less" scoped>
.course-button-wrapper {
display: inline-block;
text-align: center;
margin: 0 5px;
&.button-default {
display: inline-block;
padding: 0 16px;
text-align: center;
height: 30px;
line-height: 30px;
// width: 100%;
border-radius: 15px;
font-size: 12px;
font-weight: 700;
color: #ffffff;
background: #449284;
}
&.primary {
color: #ffffff;
background: #449284;
}
&.plain {
color: #ffffff;
background: none;
border: 1px solid rgba(255, 255, 255, 1);
}
&.disabled {
color: rgba(255, 255, 255, 0.95);
background: rgba(68, 146, 132, 0.4);
}
}
</style>
<template>
<div class="course-covers-wrapper">
<span class="tips" v-html="coverTips"></span>
<div v-if="isShowBtn" class="course-button-group">
<CourseButton v-if="!isSingle" type="plain" @btnClick="btnClick(1)" :btnText="leftBtnText"></CourseButton>
<CourseButton @btnClick="btnClick(2)" :btnText="rightBtnText"></CourseButton>
</div>
</div>
</template>
<script>
import CourseButton from "@/components/course/course-button";
export default {
components: {
CourseButton
},
props: {
coverTips: {
type: String,
default: "上次观看至7分钟,正在续播"
},
isShowBtn: {
type: Boolean,
default: true
},
isSingle: {
type: Boolean,
default: false
},
leftBtnText: {
type: String,
default: "学习下一节"
},
rightBtnText: {
type: String,
default: "去云鹊医App"
}
},
data() {
return {};
},
methods: {
btnClick(index) {
this.$emit("btnClick", index);
}
}
};
</script>
<style lang="less" scoped>
.course-covers-wrapper {
display: flex;
flex-direction: column;
width: 100%;
height: 210px;
background: rgba(0, 0, 0, 0.8);
justify-content: center;
align-content: center;
.tips {
display: inline-block;
margin-bottom: 15px;
color: #fff;
text-align: center;
font-size: 15px;
}
.course-button-group {
display: flex;
align-items: center;
justify-content:center;
}
}
</style>
...@@ -44,14 +44,14 @@ const user = { ...@@ -44,14 +44,14 @@ const user = {
if (picapDoctor.id) { if (picapDoctor.id) {
let avatar = picapDoctor.avatar_image_url || ''; let avatar = picapDoctor.avatar_image_url || '';
let avatarUrl = ''; let avatarUrl = '';
const img1 = await preLoadImg(`https://test-file.yunqueyi.com${avatar}`).catch(err => console.log(err)); // const img1 = await preLoadImg(`https://test-file.yunqueyi.com${avatar}`).catch(err => console.log(err));
const img2 = await preLoadImg(`https://file.yunqueyi.com${avatar}`).catch(err => console.log(err)); // const img2 = await preLoadImg(`https://file.yunqueyi.com${avatar}`).catch(err => console.log(err));
if (img1) { // if (img1) {
avatarUrl = img1.src; // avatarUrl = img1.src;
} // }
if (img2) { // if (img2) {
avatarUrl = img2.src; // avatarUrl = img2.src;
} // }
picapDoctor.avatar = avatarUrl || 'https://file.yunqueyi.com/File/doctor_default.png'; picapDoctor.avatar = avatarUrl || 'https://file.yunqueyi.com/File/doctor_default.png';
commit('SET_USER_INFO', { ...picapDoctor, isExist, certifyDoc }); commit('SET_USER_INFO', { ...picapDoctor, isExist, certifyDoc });
} }
...@@ -65,7 +65,7 @@ const user = { ...@@ -65,7 +65,7 @@ const user = {
// 通过登陆 // 通过登陆
goLogin() { goLogin() {
window.location.href = envConfig[process.env.BUILD_ENV]['phomeDemain'] + "/pica_login?target_url=" + encodeURIComponent(location.href); window.location.href = envConfig[process.env.BUILD_ENV]['webPageUrl'] + "/pica_login?target_url=" + encodeURIComponent(location.href);
}, },
// 登出 // 登出
......
...@@ -14,13 +14,6 @@ export const envConfig = { ...@@ -14,13 +14,6 @@ export const envConfig = {
hactiveUrl: 'https://dev-hactive.yunqueyi.com', hactiveUrl: 'https://dev-hactive.yunqueyi.com',
appId: 'wxf4e66242d31c81c2', // 用于微信授权登录 appId: 'wxf4e66242d31c81c2', // 用于微信授权登录
// baseUrl: 'https://sc.yunqueyi.com/',
// apiUrl: 'https://api.yunqueyi.com/',
// webPageUrl: 'https://phome.yunqueyi.com/',
// hactiveUrl: 'https://hactive.yunqueyi.com',
// appId: 'wx2c577552a2d28550', // 用于微信授权登录
// http://dev-hactive.yunqueyi.com/message_push/#/study-card
// baseUrl: 'https://test1-sc.yunqueyi.com/', // baseUrl: 'https://test1-sc.yunqueyi.com/',
// apiUrl: 'https://test1-api.yunqueyi.com/', // apiUrl: 'https://test1-api.yunqueyi.com/',
// webPageUrl: 'https://test1-phome.yunqueyi.com/' // webPageUrl: 'https://test1-phome.yunqueyi.com/'
...@@ -35,7 +28,7 @@ export const envConfig = { ...@@ -35,7 +28,7 @@ export const envConfig = {
// apiUrl: 'https://api.yunqueyi.com/', // apiUrl: 'https://api.yunqueyi.com/',
// webPageUrl: 'https://phome.yunqueyi.com/', // webPageUrl: 'https://phome.yunqueyi.com/',
// hactiveUrl: 'https://hactive.yunqueyi.com', // hactiveUrl: 'https://hactive.yunqueyi.com',
// appId: 'wx2c577552a2d28550', // 用于微信授权登录
}, },
dev: { dev: {
baseUrl: 'https://dev-sc.yunqueyi.com/', baseUrl: 'https://dev-sc.yunqueyi.com/',
......
...@@ -11,7 +11,6 @@ const service = axios.create({ ...@@ -11,7 +11,6 @@ const service = axios.create({
// request拦截器 // request拦截器
service.interceptors.request.use(config => { service.interceptors.request.use(config => {
// debugger
if (config.data && config.data.setEntry) { if (config.data && config.data.setEntry) {
config.headers['sysCode'] = config.data.sysCode || 10 config.headers['sysCode'] = config.data.sysCode || 10
if(config.data.token){ if(config.data.token){
......
...@@ -109,7 +109,6 @@ module.exports = { ...@@ -109,7 +109,6 @@ module.exports = {
// 通用GET请求 // 通用GET请求
GET(api, para, callback, str) { GET(api, para, callback, str) {
// debugger
para.token = para.token || this.token || '' para.token = para.token || this.token || ''
let url = api + this.getUrlPara(para) let url = api + this.getUrlPara(para)
return fetch({ return fetch({
......
<template>
<span class="course-button-wrapper button-default" :class="type" @click="btnClick">{{btnText}}</span>
</template>
<script>
export default {
props: {
btnText: {
type: String,
default: "去云鹊医App"
},
type: {
type: String,
default: "primary"
}
},
data() {
return {};
},
methods: {
btnClick() {
if (this.type == "disabled") return;
this.$emit("btnClick");
}
}
};
</script>
<style lang="less" scoped>
.course-button-wrapper {
display: inline-block;
text-align: center;
margin: 0 5px;
&.button-default {
display: inline-block;
padding: 0 16px;
text-align: center;
height: 30px;
line-height: 30px;
// width: 100%;
border-radius: 15px;
font-size: 12px;
font-weight: 700;
color: #ffffff;
background: #449284;
}
&.primary {
color: #ffffff;
background: #449284;
}
&.plain {
color: #ffffff;
background: none;
border: 1px solid rgba(255, 255, 255, 1);
}
&.disabled {
color: rgba(255, 255, 255, 0.95);
background: rgba(68, 146, 132, 0.4);
}
}
</style>
...@@ -88,7 +88,7 @@ ...@@ -88,7 +88,7 @@
<CommonSpliteLine></CommonSpliteLine> <CommonSpliteLine></CommonSpliteLine>
<div id="catalogue-content" class="catalogue-content"> <div id="catalogue-content" class="catalogue-content">
<div class="catalogue-title">目录</div> <div class="catalogue-title">目录</div>
<CellListDetail <CellListDetailShare
:projectComponent="projectComponentDTOS" :projectComponent="projectComponentDTOS"
:actionList="actionList" :actionList="actionList"
:detailNum="detailNum" :detailNum="detailNum"
...@@ -96,6 +96,8 @@ ...@@ -96,6 +96,8 @@
:hasBindCard="hasBindCard" :hasBindCard="hasBindCard"
:limitTimes="limitTimes" :limitTimes="limitTimes"
:cmeType="project.cmeType" :cmeType="project.cmeType"
:logged="logged"
:projectId="projectId"
/> />
</div> </div>
</div> </div>
...@@ -164,7 +166,7 @@ ...@@ -164,7 +166,7 @@
></span> ></span>
</div> </div>
<ShiKanCommonDialog <!-- <ShiKanCommonDialog
class="shikan" class="shikan"
needSubContent needSubContent
content="试看结束" content="试看结束"
...@@ -172,7 +174,7 @@ ...@@ -172,7 +174,7 @@
confirmBtnText="去购买" confirmBtnText="去购买"
:isShowDialog="isShowSkDialog" :isShowDialog="isShowSkDialog"
@handlerAction="goBuyKc" @handlerAction="goBuyKc"
/> /> -->
<IOSDownloadDialog <IOSDownloadDialog
class="shikan" class="shikan"
...@@ -183,6 +185,30 @@ ...@@ -183,6 +185,30 @@
@handlerAction="goBack" @handlerAction="goBack"
/> />
<!-- 未登录提示 -->
<div class="course-tips" v-if="!logged">
<CourseCovers isSingle coverTips="登录后马上学习课程" rightBtnText="去登录" @btnClick="btnClick"></CourseCovers>
</div>
<!-- 试看结束 -->
<div class="course-tips" v-if="isShowSkDialog">
<CourseCovers isSingle coverTips="试看结束<br>学习完整版课程,请来云鹊医App购买" rightBtnText="APP购买更优惠" @btnClick="download(1)"></CourseCovers>
</div>
<!-- 播放结束 -->
<div class="course-tips" v-if="isShowEndDialog">
<CourseCovers isSingle coverTips="播放结束<br>更多其他课程,请前往云鹊医APP学习" rightBtnText="APP购买更优惠" @btnClick="download(1)"></CourseCovers>
</div>
<!-- 本课程为付费课程 -->
<div class="course-tips" v-if="isShowFFDialog">
<CourseCovers isSingle coverTips="本课程为付费课程<br>学习完整版课程,请来云鹊医App购买" rightBtnText="APP购买更优惠" @btnClick="download(1)"></CourseCovers>
</div>
<div class="download-abs" @click="download">
<img src="../images/cme/course/pica-icon.png" alt="">
<span :class="{'short': needShort}">{{downloadTips}}</span>
</div>
</div> </div>
</template> </template>
<script> <script>
...@@ -190,7 +216,7 @@ import CommonNavbar from "@/components/common/common-navbar"; ...@@ -190,7 +216,7 @@ import CommonNavbar from "@/components/common/common-navbar";
import CommonDescription from "@/components/common/common-description"; import CommonDescription from "@/components/common/common-description";
import CommonSpliteLine from "@/components/common/common-splite-line"; import CommonSpliteLine from "@/components/common/common-splite-line";
import CellListDetail from "@/components/business/cell-list-detail"; import CellListDetailShare from "@/components/business/cell-list-detail-share";
// import NoPermContent from "@/components/business/no-perm-content"; // import NoPermContent from "@/components/business/no-perm-content";
// import CommonBannerVideo from "@/components/common/common-banner-video"; // import CommonBannerVideo from "@/components/common/common-banner-video";
import CommonTcPlayer from "@/components/common/common-tcplayer"; import CommonTcPlayer from "@/components/common/common-tcplayer";
...@@ -217,6 +243,7 @@ import { Toast } from "vant"; ...@@ -217,6 +243,7 @@ import { Toast } from "vant";
// import CardPopup from "@/components/cme/card-popup"; // import CardPopup from "@/components/cme/card-popup";
import BindCardButtonShare from "@/components/cme/bind-card-button-share"; import BindCardButtonShare from "@/components/cme/bind-card-button-share";
import ChangeCard from "@/components/cme/change-card"; import ChangeCard from "@/components/cme/change-card";
import CourseCovers from "@/components/course/course-covers";
let cataOffsetTop = 0; let cataOffsetTop = 0;
let intorOffsetTop = 0; let intorOffsetTop = 0;
...@@ -226,6 +253,7 @@ export default { ...@@ -226,6 +253,7 @@ export default {
data() { data() {
return { return {
// token: "9B62E5874DA94979A54DB3E9DFC1443F", // token: "9B62E5874DA94979A54DB3E9DFC1443F",
downloadTips: "打开云鹊医APP",
isWeb: window.__isWeb, isWeb: window.__isWeb,
isAndroid: __isAndroid, isAndroid: __isAndroid,
textContent: "", textContent: "",
...@@ -287,7 +315,7 @@ export default { ...@@ -287,7 +315,7 @@ export default {
bannerType: 1, // 1 图片 2视频 bannerType: 1, // 1 图片 2视频
videoOptions: { videoOptions: {
mp4: "", mp4: "",
autoplay: true, //iOS下safari浏览器,以及大部分移动端浏览器是不开放视频自动播放这个能力的 autoplay: false, //iOS下safari浏览器,以及大部分移动端浏览器是不开放视频自动播放这个能力的
coverpic: require("../images/video-cover.png"), coverpic: require("../images/video-cover.png"),
width: "415", //视频的显示宽度,请尽量使用视频分辨率宽度 width: "415", //视频的显示宽度,请尽量使用视频分辨率宽度
height: "210", //视频的显示高度,请尽量使用视频分辨率高度 height: "210", //视频的显示高度,请尽量使用视频分辨率高度
...@@ -321,14 +349,17 @@ export default { ...@@ -321,14 +349,17 @@ export default {
continueStudyType: 0, continueStudyType: 0,
skCourseId: 0, skCourseId: 0,
isShowSkDialog: false, isShowSkDialog: false,
isShowEndDialog: false,
isShowFFDialog: false,
isShowIOSDownloadDialog: false, isShowIOSDownloadDialog: false,
needShort: false
}; };
}, },
components: { components: {
CommonNavbar, CommonNavbar,
CommonDescription, CommonDescription,
CommonSpliteLine, CommonSpliteLine,
CellListDetail, CellListDetailShare,
Loading, Loading,
CommonTcPlayer, CommonTcPlayer,
CmeStep, CmeStep,
...@@ -346,11 +377,12 @@ export default { ...@@ -346,11 +377,12 @@ export default {
BindCardButtonShare, BindCardButtonShare,
ChangeCard, ChangeCard,
ShiKanCommonDialog, ShiKanCommonDialog,
IOSDownloadDialog IOSDownloadDialog,
CourseCovers
}, },
computed: { computed: {
...mapGetters(["userInfo"]) ...mapGetters(["userInfo", "logged"])
}, },
created() { created() {
...@@ -363,6 +395,11 @@ export default { ...@@ -363,6 +395,11 @@ export default {
// TODO 要先解码URL // TODO 要先解码URL
// _this.checkToken(); // _this.checkToken();
// _this.setUserInfo(param); // _this.setUserInfo(param);
const { token, info } = this.$store.state.user;
if (token && !info.id) {
this.$store.dispatch('getUserInfo');
}
_this.getProjectParticularsV2(); _this.getProjectParticularsV2();
// 打开页面埋点 // 打开页面埋点
...@@ -375,12 +412,25 @@ export default { ...@@ -375,12 +412,25 @@ export default {
}, },
mounted() { mounted() {
window.addEventListener("scroll", this.scrollFun); window.addEventListener("scroll", this.scrollFun);
setTimeout(() => {
this.downloadTips = '';
this.needShort = true;
}, 5000);
}, },
beforeDestroyed() { beforeDestroyed() {
window.removeEventListener("scroll", this.scrollFun); window.removeEventListener("scroll", this.scrollFun);
}, },
methods: { methods: {
...mapActions(["setUserInfo"]), ...mapActions(["setUserInfo", "goLogin"]),
btnClick() {
this.goLogin();
},
download() {
window.location.href =
"https://a.app.qq.com/o/simple.jsp?pkgname=com.picahealth.yunque";
},
cancleChangeCard() { cancleChangeCard() {
this.showChangeCard = false; this.showChangeCard = false;
...@@ -698,7 +748,8 @@ export default { ...@@ -698,7 +748,8 @@ export default {
getProjectParticularsV2() { getProjectParticularsV2() {
let _this = this; let _this = this;
let param = { let param = {
token: _this.userInfo.userToken || this.token, // token: _this.userInfo.userToken || this.token,
token: this.$store.state.user.token || this.token,
setEntry: true setEntry: true
}; };
let videoUrl = this.$route.query.videoUrl || ''; let videoUrl = this.$route.query.videoUrl || '';
...@@ -808,19 +859,18 @@ export default { ...@@ -808,19 +859,18 @@ export default {
} }
// let shareUrl = encodeURIComponent(location.href); // let shareUrl = encodeURIComponent(location.href);
this.wxDisabledShare(); this.wechatShare(
// this.wechatShare( {
// { link: location.href,
// link: location.href, title: this.project.projectName,
// title: this.project.projectName, friendtitle: this.project.projectName,
// friendtitle: this.project.projectName, desc: this.project.projectName,
// desc: this.project.projectName, imgUrl: "https://file.yunqueyi.com/logo.png"
// imgUrl: "https://file.yunqueyi.com/logo.png" },
// }, () => {
// () => { console.log("share success...");
// console.log("share success..."); }
// } );
// );
console.log('hasBindCard, limitTimes', _this.hasBindCard, _this.limitTimes); console.log('hasBindCard, limitTimes', _this.hasBindCard, _this.limitTimes);
} }
}); });
...@@ -1109,4 +1159,46 @@ export default { ...@@ -1109,4 +1159,46 @@ export default {
width: 100%; width: 100%;
height: 40px; height: 40px;
} }
.course-tips {
width: 100%;
position: absolute;
z-index: 100;
top: 0;
left: 0;
}
.download-abs {
display: flex;
// width: 100%;
position: absolute;
z-index: 101;
top: 15px;
right: 0;
height: 30px;
align-items: center;
img {
position: relative;
left: 15px;
width: 30px;
height: 30px;
}
span {
display: inline-block;
height: 30px;
line-height: 30px;
padding: 0 8px 0 23px;
font-size: 12px;
font-weight: 700;
color: #5BA99B;
background: #fff;
width: 120px;
&.short {
width: 10px;
transition: width 1s;
-moz-transition: width 1s; /* Firefox 4 */
-webkit-transition: width 1s; /* Safari 和 Chrome */
-o-transition: width 1s; /* Opera */
padding: 0 12px;
}
}
}
</style> </style>
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册