|
|
|
|
const app = getApp<IAppOption>()
|
|
|
|
|
|
|
|
|
|
interface AgendaItem {
|
|
|
|
|
id: number
|
|
|
|
|
time: string
|
|
|
|
|
title: string
|
|
|
|
|
desc: string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Page({
|
|
|
|
|
data: {
|
|
|
|
|
currentStep: 1,
|
|
|
|
|
steps: [
|
|
|
|
|
{ label: '基本信息', field: 'basic' },
|
|
|
|
|
{ label: '报名签到设置', field: 'signup' },
|
|
|
|
|
{ label: '活动议程', field: 'agenda' },
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
// 步骤1 基本信息
|
|
|
|
|
coverImageList: [] as Array<{ uid: string, url: string, type: string, name: string, size: number }>,
|
|
|
|
|
title: '',
|
|
|
|
|
startTime: '',
|
|
|
|
|
endTime: '',
|
|
|
|
|
detail: '',
|
|
|
|
|
level: '',
|
|
|
|
|
levels: ['校级', '院级', '系级', '班级', '其他'],
|
|
|
|
|
category: '',
|
|
|
|
|
categories: ['讲座', '比赛', '社团活动', '志愿服务', '文体活动', '学术交流', '其他'],
|
|
|
|
|
location: '',
|
|
|
|
|
organizer: '',
|
|
|
|
|
contactName: '',
|
|
|
|
|
contactPhone: '',
|
|
|
|
|
|
|
|
|
|
// 步骤2 活动议程
|
|
|
|
|
agendas: [{ id: 1, time: '', title: '', desc: '' }] as AgendaItem[],
|
|
|
|
|
nextAgendaId: 2,
|
|
|
|
|
|
|
|
|
|
// 步骤3 报名签到设置
|
|
|
|
|
needRegister: true,
|
|
|
|
|
registerStartTime: '',
|
|
|
|
|
registerEndTime: '',
|
|
|
|
|
registerLimit: 'unlimited',
|
|
|
|
|
registerLimitCount: '',
|
|
|
|
|
registerCondition: '',
|
|
|
|
|
|
|
|
|
|
checkinWay: 'dynamic',
|
|
|
|
|
checkinStartTime: '',
|
|
|
|
|
checkinEndTime: '',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onLoad() {
|
|
|
|
|
app.waitLogin()
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ========== 步骤切换 ==========
|
|
|
|
|
goStep(step: number) {
|
|
|
|
|
if (step < 1 || step > 4) return
|
|
|
|
|
this.setData({ currentStep: step })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onNextStep() {
|
|
|
|
|
const next = this.data.currentStep + 1
|
|
|
|
|
if (next <= 4) this.setData({ currentStep: next })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onPrevStep() {
|
|
|
|
|
const prev = this.data.currentStep - 1
|
|
|
|
|
if (prev >= 1) this.setData({ currentStep: prev })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ========== 图片上传 ==========
|
|
|
|
|
onCoverUploadSuccess(e: WechatMiniprogram.CustomEvent) {
|
|
|
|
|
const { file } = e.detail
|
|
|
|
|
this.setData({ coverImageList: [file] })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onCoverRemove(_e: WechatMiniprogram.CustomEvent) {
|
|
|
|
|
this.setData({ coverImageList: [] })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ========== 输入绑定 ==========
|
|
|
|
|
onInputChange(e: WechatMiniprogram.Input) {
|
|
|
|
|
const { field } = e.currentTarget.dataset
|
|
|
|
|
this.setData({ [field]: e.detail.value })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onTextareaChange(e: WechatMiniprogram.TextareaInput) {
|
|
|
|
|
const { field } = e.currentTarget.dataset
|
|
|
|
|
this.setData({ [field]: e.detail.value })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ========== 时间选择 ==========
|
|
|
|
|
onPickTime(e: WechatMiniprogram.PickerChange) {
|
|
|
|
|
const { field } = e.currentTarget.dataset
|
|
|
|
|
this.setData({ [field]: e.detail.value })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ========== 标签选择 ==========
|
|
|
|
|
onSelectLevel(e: WechatMiniprogram.TouchEvent) {
|
|
|
|
|
const { value } = e.currentTarget.dataset
|
|
|
|
|
this.setData({ level: value })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onSelectCategory(e: WechatMiniprogram.TouchEvent) {
|
|
|
|
|
const { value } = e.currentTarget.dataset
|
|
|
|
|
this.setData({ category: value })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ========== 议程管理 ==========
|
|
|
|
|
onAddAgenda() {
|
|
|
|
|
const agendas = this.data.agendas
|
|
|
|
|
agendas.push({
|
|
|
|
|
id: this.data.nextAgendaId,
|
|
|
|
|
time: '',
|
|
|
|
|
title: '',
|
|
|
|
|
desc: '',
|
|
|
|
|
})
|
|
|
|
|
this.setData({
|
|
|
|
|
agendas,
|
|
|
|
|
nextAgendaId: this.data.nextAgendaId + 1,
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onRemoveAgenda(e: WechatMiniprogram.TouchEvent) {
|
|
|
|
|
const { index } = e.currentTarget.dataset
|
|
|
|
|
const agendas = this.data.agendas.filter((_, i) => i !== index)
|
|
|
|
|
this.setData({ agendas })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onAgendaInput(e: WechatMiniprogram.Input | WechatMiniprogram.TextareaInput) {
|
|
|
|
|
const { index, field } = e.currentTarget.dataset
|
|
|
|
|
const agendas = this.data.agendas
|
|
|
|
|
agendas[index][field] = e.detail.value
|
|
|
|
|
this.setData({ agendas })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onAgendaTime(e: WechatMiniprogram.PickerChange) {
|
|
|
|
|
const { index } = e.currentTarget.dataset
|
|
|
|
|
const agendas = this.data.agendas
|
|
|
|
|
agendas[index].time = e.detail.value as string
|
|
|
|
|
this.setData({ agendas })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ========== 报名签到设置 ==========
|
|
|
|
|
onToggleRegister(e: WechatMiniprogram.TouchEvent) {
|
|
|
|
|
const { value } = e.currentTarget.dataset
|
|
|
|
|
this.setData({ needRegister: value === 'yes' })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onToggleRegisterLimit(e: WechatMiniprogram.TouchEvent) {
|
|
|
|
|
const { value } = e.currentTarget.dataset
|
|
|
|
|
this.setData({ registerLimit: value })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onSelectCheckinWay(e: WechatMiniprogram.TouchEvent) {
|
|
|
|
|
const { value } = e.currentTarget.dataset
|
|
|
|
|
this.setData({ checkinWay: value })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// ========== 底部操作 ==========
|
|
|
|
|
onSaveDraft() {
|
|
|
|
|
wx.showToast({ title: '已保存草稿', icon: 'success' })
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onSubmit() {
|
|
|
|
|
wx.showModal({
|
|
|
|
|
title: '确认提交',
|
|
|
|
|
content: '提交后将进入审核流程,是否继续?',
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if (res.confirm) {
|
|
|
|
|
this.setData({ currentStep: 4 })
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onGoHome() {
|
|
|
|
|
wx.switchTab({ url: '/pages/index/index' })
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
export {}
|