You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
2.3 KiB

import { trackClick, trackPageView } from '@/utils/tracking'
const app = getApp<IAppOption>()
Page({
data: {
// 文章ID
articleId: 0,
// 文章详情
articleDetail: {} as any,
// 是否已点赞
isLiked: false,
},
onLoad(option: { id?: string }) {
// 药店端文章详情页面,仅允许药店人员访问
app.waitLogin({ types: [4] }).then(() => {
trackPageView('doctor_article_detail_view')
const articleId = option.id ? Number.parseInt(option.id) : 0
this.setData({ articleId })
if (articleId) {
this.getArticleDetail(articleId)
}
})
},
// 获取文章详情
getArticleDetail(articleId: number) {
wx.ajax({
method: 'GET',
url: '/app/pharmacist/pharmacist/edu-article-detail',
data: {
articleId,
},
})
.then((res: any) => {
this.setData({
articleDetail: {
...res,
updateTimeFormatted: res.updateTime ? this.formatDate(res.updateTime) : '',
},
isLiked: res.isLiked || false,
})
})
.catch(() => {
wx.showToast({
title: '获取文章详情失败',
icon: 'none',
})
})
},
1 week ago
// 点赞(多次点赞只增加点赞数)
handleLike() {
trackClick('click_doctor_article_detail_like')
1 week ago
const { articleId, articleDetail } = this.data
if (!articleId) return
wx.ajax({
method: 'POST',
url: '/app/pharmacist/pharmacist/edu-article-like',
data: {
articleId,
},
})
.then(() => {
this.setData({
articleDetail: {
...articleDetail,
1 week ago
likeCount: (articleDetail.likeCount || 0) + 1,
},
1 week ago
isLiked: true,
})
wx.showToast({
1 week ago
title: '点赞成功',
icon: 'none',
})
})
.catch(() => {
wx.showToast({
1 week ago
title: '点赞失败',
icon: 'none',
})
})
},
// 格式化日期
formatDate(timestamp: number): string {
const date = new Date(timestamp * 1000)
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0')
const day = String(date.getDate()).padStart(2, '0')
return `${year}-${month}-${day}`
},
handleBack() {
wx.navigateBack()
},
})
export {}