diff --git a/components/calendar-widget/calendar-widget.vue b/components/calendar-widget/calendar-widget.vue index e41237d..01ffaca 100644 --- a/components/calendar-widget/calendar-widget.vue +++ b/components/calendar-widget/calendar-widget.vue @@ -158,7 +158,9 @@ export default { // 课程 if (type === 1) { if (ev.course_id) { - uni.navigateTo({ url: `/packages/course/detail?id=${ev.course_id}&newsUrl=${ev.url}` }) + uni.navigateTo({ + url: `/packages/course/detail?id=${ev.course_id}&newsUrl=${encodeURIComponent(ev.url || '')}` + }) return } // 无 course_id → 需要有开始时间或地点才弹窗 diff --git a/packages/course/detail.vue b/packages/course/detail.vue index e5c18d9..79de55b 100644 --- a/packages/course/detail.vue +++ b/packages/course/detail.vue @@ -21,20 +21,19 @@ - + 我要报名 - - - - - - 查看精彩回顾 - - + + + + + + + 查看精彩回顾 @@ -85,6 +84,15 @@ newsUrl: '' } }, + computed: { + showRecapBtn() { + // 报名进行中(10)不显示 + if (Number(this.info.sign_status) === 10) return false + if (!this.base.isNull(this.newsUrl)) return true + if (!this.base.isNull(this.info.url) && !this.base.isNull(this.info.url_title)) return true + return false + }, + }, onShareAppMessage(res) { return { @@ -102,7 +110,7 @@ }, onLoad(options) { this.course_id = options.id - this.newsUrl = options.newsUrl?options.newsUrl:'' + this.newsUrl = this.parseNewsUrl(options) let token = uni.getStorageSync('stbc1_lifeData') ? uni.getStorageSync('stbc1_lifeData').vuex_token : '' if (this.base.isNull(token)) { this.getToken() @@ -120,6 +128,16 @@ this.showRegister = false }, methods: { + parseNewsUrl(options) { + if (!options) return '' + const raw = options.newsUrl || options.newsurl || '' + if (this.base.isNull(raw)) return '' + try { + return decodeURIComponent(raw) + } catch (e) { + return raw + } + }, async getToken() { let that = this const loginResult = await new Promise((resolve, reject) => { @@ -259,17 +277,11 @@ // 打开webview页面 openWebview() { - if (this.newsUrl) { - uni.navigateTo({ - url: `/packages/webview/index?type=3&url=${this.newsUrl}` - }) - return - } - if (this.info.url) { - uni.navigateTo({ - url: `/packages/webview/index?type=3&url=${this.info.url}` - }) - } + const targetUrl = !this.base.isNull(this.newsUrl) ? this.newsUrl : this.info.url + if (this.base.isNull(targetUrl)) return + uni.navigateTo({ + url: `/packages/webview/index?type=3&url=${encodeURIComponent(targetUrl)}` + }) }, } diff --git a/packages/webview/index.vue b/packages/webview/index.vue index f94e26b..c4b1edf 100644 --- a/packages/webview/index.vue +++ b/packages/webview/index.vue @@ -21,7 +21,8 @@ this.link = this.baseUrl+`/news/?from=wx` }else if(options.type==3){ // 资讯详情 - this.link = this.baseUrl+`${options.url}?from=wx` + const path = options.url ? decodeURIComponent(options.url) : '' + this.link = this.baseUrl + `${path}?from=wx` }else if(options.type==4){ // 联系我们 this.link = this.baseUrl+`/contact/?from=wx`