const app = getApp() 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 {}