180 lines
3.9 KiB
JavaScript
180 lines
3.9 KiB
JavaScript
const app = getApp()
|
|
const db = wx.cloud.database()
|
|
|
|
Page({
|
|
data: {
|
|
name: '',
|
|
keywords: ['咖啡馆', '餐厅', '公园', '商场', '电影院', 'KTV', '酒吧', '火锅', '烧烤', '其他'],
|
|
keyword: '咖啡馆',
|
|
meetTime: '',
|
|
meetDate: '',
|
|
meetTimeOnly: '',
|
|
requirements: '',
|
|
userInfo: {
|
|
avatarUrl: '',
|
|
nickName: ''
|
|
}
|
|
},
|
|
|
|
onLoad() {
|
|
// 生成默认聚会名称
|
|
const randomNum = Math.floor(Math.random() * 9000) + 1000
|
|
this.setData({
|
|
name: `聚会-${randomNum}`
|
|
})
|
|
},
|
|
|
|
onNameInput(e) {
|
|
this.setData({
|
|
name: e.detail.value
|
|
})
|
|
},
|
|
|
|
onSelectKeyword(e) {
|
|
this.setData({
|
|
keyword: e.currentTarget.dataset.keyword
|
|
})
|
|
},
|
|
|
|
onTimeInput(e) {
|
|
this.setData({
|
|
meetTime: e.detail.value
|
|
})
|
|
},
|
|
|
|
onDateChange(e) {
|
|
const date = e.detail.value
|
|
this.setData({
|
|
meetDate: date
|
|
})
|
|
this.updateMeetTime()
|
|
},
|
|
|
|
onTimeChange(e) {
|
|
const time = e.detail.value
|
|
this.setData({
|
|
meetTimeOnly: time
|
|
})
|
|
this.updateMeetTime()
|
|
},
|
|
|
|
updateMeetTime() {
|
|
const { meetDate, meetTimeOnly } = this.data
|
|
if (meetDate && meetTimeOnly) {
|
|
this.setData({
|
|
meetTime: `${meetDate} ${meetTimeOnly}`
|
|
})
|
|
} else if (meetDate) {
|
|
this.setData({
|
|
meetTime: meetDate
|
|
})
|
|
}
|
|
},
|
|
|
|
onRequirementsInput(e) {
|
|
this.setData({
|
|
requirements: e.detail.value
|
|
})
|
|
},
|
|
|
|
onChooseAvatar(e) {
|
|
const { avatarUrl } = e.detail
|
|
this.setData({
|
|
'userInfo.avatarUrl': avatarUrl
|
|
})
|
|
},
|
|
|
|
onNicknameChange(e) {
|
|
const nickName = e.detail.value
|
|
this.setData({
|
|
'userInfo.nickName': nickName
|
|
})
|
|
},
|
|
|
|
onSubmit() {
|
|
const { name, keyword, meetTime, requirements, userInfo } = this.data
|
|
|
|
if (!name.trim()) {
|
|
wx.showToast({
|
|
title: '请输入聚会名称',
|
|
icon: 'none'
|
|
})
|
|
return
|
|
}
|
|
|
|
// 检查是否填写了昵称
|
|
if (!userInfo.nickName || !userInfo.nickName.trim()) {
|
|
wx.showToast({
|
|
title: '请输入你的昵称',
|
|
icon: 'none'
|
|
})
|
|
return
|
|
}
|
|
|
|
this.createRoom(name, keyword, meetTime, requirements)
|
|
},
|
|
|
|
onCancel() {
|
|
wx.navigateBack()
|
|
},
|
|
|
|
createRoom(name, keywords, meetTime, requirements) {
|
|
wx.showLoading({ title: '创建中...', mask: true })
|
|
wx.cloud.callFunction({
|
|
name: 'createRoom',
|
|
data: {
|
|
name,
|
|
meetTime,
|
|
keywords,
|
|
requirements: requirements || '',
|
|
userInfo: this.data.userInfo
|
|
},
|
|
success: res => {
|
|
wx.hideLoading()
|
|
if (res.result.success) {
|
|
const roomId = res.result.roomId
|
|
|
|
// 保存到本地存储
|
|
let myRooms = wx.getStorageSync('myRooms') || []
|
|
myRooms = myRooms.filter(item => item.roomId !== roomId)
|
|
myRooms.unshift({
|
|
roomId,
|
|
name,
|
|
meetTime,
|
|
keywords
|
|
})
|
|
if (myRooms.length > 2) {
|
|
myRooms = myRooms.slice(0, 2)
|
|
}
|
|
wx.setStorageSync('myRooms', myRooms)
|
|
|
|
// 更新全局roomList
|
|
let roomList = wx.getStorageSync('roomList') || []
|
|
roomList = roomList.filter(item => item.roomId !== roomId)
|
|
roomList.unshift({
|
|
roomId,
|
|
name,
|
|
meetTime,
|
|
keywords
|
|
})
|
|
if (roomList.length > 5) {
|
|
roomList = roomList.slice(0, 5)
|
|
}
|
|
wx.setStorageSync('roomList', roomList)
|
|
|
|
wx.redirectTo({
|
|
url: `/pages/room/room?roomId=${roomId}&isCreator=true`
|
|
})
|
|
} else {
|
|
wx.showToast({ title: res.result.msg || '创建失败', icon: 'none' })
|
|
}
|
|
},
|
|
fail: err => {
|
|
wx.hideLoading()
|
|
console.error('云函数调用失败', err)
|
|
wx.showToast({ title: '网络错误', icon: 'none' })
|
|
}
|
|
})
|
|
}
|
|
})
|