Add 卓米会 mini program and admin server.
Initial commit of the WeChat mini program, Express backend, and admin console. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
const api = require('../../utils/api')
|
||||
const media = require('../../utils/media')
|
||||
const activityUtil = require('../../utils/activity')
|
||||
|
||||
function decorate(item) {
|
||||
const cover = item.cover || item.poster || ''
|
||||
return Object.assign({}, item, { coverUrl: cover ? media.absUrl(cover) : '' })
|
||||
}
|
||||
|
||||
Page({
|
||||
data: {
|
||||
list: [],
|
||||
loaded: false,
|
||||
deleting: false,
|
||||
isAdmin: false
|
||||
},
|
||||
|
||||
onShow() {
|
||||
this.loadPage()
|
||||
},
|
||||
|
||||
onPullDownRefresh() {
|
||||
this.loadPage().then(() => wx.stopPullDownRefresh())
|
||||
},
|
||||
|
||||
loadPage() {
|
||||
const profile = api.profile().catch(() => null)
|
||||
return Promise.all([api.pastActivities(), profile])
|
||||
.then((results) => {
|
||||
const isAdmin = !!(results[1] && results[1].isAdmin)
|
||||
this.setData({
|
||||
list: (results[0] || []).map(decorate),
|
||||
loaded: true,
|
||||
isAdmin: isAdmin,
|
||||
deleting: isAdmin && this.data.deleting
|
||||
})
|
||||
})
|
||||
.catch((error) => {
|
||||
this.setData({ loaded: true })
|
||||
activityUtil.toast(error)
|
||||
})
|
||||
},
|
||||
|
||||
openDetail(event) {
|
||||
if (this.data.deleting) return
|
||||
wx.navigateTo({ url: '/pages/detail/detail?id=' + event.currentTarget.dataset.id })
|
||||
},
|
||||
|
||||
onAdd() {
|
||||
if (!this.data.isAdmin) return
|
||||
wx.navigateTo({ url: '/pages/past-edit/past-edit' })
|
||||
},
|
||||
|
||||
onDelete() {
|
||||
if (!this.data.isAdmin) return
|
||||
if (!this.data.list.length) {
|
||||
wx.showToast({ title: '还没有可以删除的活动', icon: 'none' })
|
||||
return
|
||||
}
|
||||
this.setData({ deleting: !this.data.deleting })
|
||||
},
|
||||
|
||||
remove(event) {
|
||||
if (!this.data.isAdmin) return
|
||||
const id = event.currentTarget.dataset.id
|
||||
wx.showModal({
|
||||
title: '删除这场活动?',
|
||||
content: event.currentTarget.dataset.title,
|
||||
confirmColor: '#DC2626',
|
||||
success: (res) => {
|
||||
if (!res.confirm) return
|
||||
api
|
||||
.removePast(id)
|
||||
.then(() => {
|
||||
const list = this.data.list.filter((item) => item.id !== id)
|
||||
this.setData({ list: list, deleting: list.length > 0 && this.data.deleting })
|
||||
})
|
||||
.catch(activityUtil.toast)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
togglePin(event) {
|
||||
if (!this.data.isAdmin) return
|
||||
const dataset = event.currentTarget.dataset
|
||||
api
|
||||
.pinPast(dataset.id, String(dataset.pinned) !== '1')
|
||||
.then(() => this.loadPage())
|
||||
.catch(activityUtil.toast)
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user