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.
100 lines
2.3 KiB
100 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', |
|
}) |
|
}) |
|
}, |
|
// 点赞(多次点赞只增加点赞数) |
|
handleLike() { |
|
trackClick('click_doctor_article_detail_like') |
|
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, |
|
likeCount: (articleDetail.likeCount || 0) + 1, |
|
}, |
|
isLiked: true, |
|
}) |
|
|
|
wx.showToast({ |
|
title: '点赞成功', |
|
icon: 'none', |
|
}) |
|
}) |
|
.catch(() => { |
|
wx.showToast({ |
|
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 {}
|
|
|