diff --git a/pages/guestEditSignUpinfo/guestEditSignUpInfo.js b/pages/guestEditSignUpinfo/guestEditSignUpInfo.js index 9b175de..51514f7 100644 --- a/pages/guestEditSignUpinfo/guestEditSignUpInfo.js +++ b/pages/guestEditSignUpinfo/guestEditSignUpInfo.js @@ -7,6 +7,18 @@ import { baseUrl, URL_CONFIG } from '../../assets/js/project.config.js' + +import WasicTopicData from '../../assets/js/wasicStaticData.js' +const LinkTopicsEnums = { + free: { + name: '免费专题', + index: 6 + }, + freeTwo: { + name: '免费专题', + index: 8 + } +} Page({ /** @@ -14,6 +26,11 @@ Page({ */ data: { info: {}, // 参会人的信息 + isWasic: false, // 是否是WASIC + // 可选课题名称的数组 + linkTopicsOptionArr: [], + // WASIC可选会议的数组-前端写死 + showTopicsArr: [...WasicTopicData], guestType_dictText: '', // 嘉宾类型 // 抵达时间 arrivalTime: '请选择抵达时间', @@ -74,7 +91,7 @@ Page({ 'guestType_dictText': '合作伙伴' }); break - case 5: + case 5: this.setData({ 'guestType_dictText': '参展商' }); @@ -83,45 +100,43 @@ Page({ }, // 表单的显示隐藏 initForm(record) { - if(record.guestType === 1 && record.speechPpt){ + // 存储所有需要更新的字段 + let updateObj = {} + + if (record.guestType === 1 && record.speechPpt) { this.setData({ - 'info.speechPpt':record.speechPpt + 'info.speechPpt': record.speechPpt }) } + // 不是合作伙伴和参展商 let isCoopOrExint = record.guestType !== 4 && record.guestType !== 5 - // 是否用餐 - if (isCoopOrExint && record.haveMeals !== null) { - this.setData({ - haveMeal: record.haveMeals - }) + // 是否用餐-vip\演讲嘉宾 管吃饭 + if ((record.guestType === 1 || record.guestType === 2) && record.haveMeals !== null) { + updateObj.haveMeal = record.haveMeals } - // 是否住酒店 - if (isCoopOrExint && record.checkInHotel !== null) { - this.setData({ - needHotel: record.checkInHotel - }) - if(record.checkInHotel === 1 && record.inHotelTime){ - this.setData({ - 'inHotelTime':record.inHotelTime - }) + // 是否住酒店-只有VIP管 + if (record.guestType === 1 && record.checkInHotel !== null) { + updateObj.needHotel = record.checkInHotel + if (record.checkInHotel === 1 && record.inHotelTime) { + updateObj.inHotelTime = record.inHotelTime } - if(record.checkInHotel === 1 && record.outHotelTime){ - this.setData({ - 'outHotelTime':record.outHotelTime - }) + if (record.checkInHotel === 1 && record.outHotelTime) { + updateObj.outHotelTime = record.outHotelTime } - + } // 是否接站 if (isCoopOrExint && record.pickUp !== null) { - this.setData({ - needPick: record.pickUp - }) - if(record.pickUp === 1 && record.arrivalTime){ - this.setData({ - 'arrivalTime':record.arrivalTime - }) + // this.setData({ + // needPick: record.pickUp + // }) + updateObj.needPick = record.pickUp + if (record.pickUp === 1 && record.arrivalTime) { + // this.setData({ + // 'arrivalTime':record.arrivalTime + // }) + updateObj.arrivalTime = record.arrivalTime } } // 是否送站 @@ -129,14 +144,19 @@ Page({ this.setData({ needSend: record.deliveryStation }) + updateObj.needSend = record.deliveryStation - if(record.deliveryStation === 1 && record.departureTime){ + if (record.deliveryStation === 1 && record.departureTime) { this.setData({ - 'departureTime':record.departureTime + 'departureTime': record.departureTime }) + updateObj.departureTime = record.departureTime } - + } + this.setData({ + ...updateObj + }) }, formSubmit(e) { const formData = JSON.parse(JSON.stringify(e.detail.value)) @@ -146,32 +166,59 @@ Page({ formData.arrivalTime = this.data.info.arrivalTime formData.departureTime = this.data.info.departureTime formData.id = this.data.info.id - if(this.data.info.guestType === 1 || this.data.info.guestType === 2){ + if (this.data.info.guestType === 1 || this.data.info.guestType === 2) { formData.photo = this.data.info.photo formData.speechPpt = this.data.info.speechPpt } - console.log(formData) - if(this.data.info.guestType !== 4 && this.data.info.guestType !== 5){ - // 不是合作伙伴的需要校验 - if(!formData.haveMeals){ + // 如果会议是WASIC 需要对是否选择会议名称做校验 + if (this.data.isWasic) { + let choiceArr = formData.choiceTopic + if (formData.radioKey) { + choiceArr.push(formData.radioKey) + delete formData.radioKey + } + if (formData.radioKeyTwo) { + choiceArr.push(formData.radioKeyTwo) + delete formData.radioKeyTwo + } + // 只选择一个免费参观的不能报名成功 + let judgeFlag = choiceArr.filter(tt => tt !== LinkTopicsEnums.freeTwo.index + '') + if (judgeFlag.length === 0) { wx.showToast({ - title: '请选择是否用餐', + title: '请至少选择一个非参观类会议', icon: 'none', duration: 2000 }) return } + formData.choiceTopic = choiceArr.join(',') + } + console.log(formData) + // VIP || 演讲嘉宾 || 特邀嘉宾的校验 + if (this.data.info.guestType === 1 || this.data.info.guestType === 2 || this.data.info.guestType === 3) { + if(this.data.info.guestType === 1 || this.data.info.guestType === 2) { + if (!formData.haveMeals) { + wx.showToast({ + title: '请选择是否用餐', + icon: 'none', + duration: 2000 + }) + return + } + + if (formData.haveMeals === "1" && !formData.huiPeople) { + wx.showToast({ + title: '请选择是否回民', + icon: 'none', + duration: 2000 + }) + return + } + } - if(formData.haveMeals === "1" && !formData.huiPeople){ - wx.showToast({ - title: '请选择是否回民', - icon: 'none', - duration: 2000 - }) - return - } - if(formData.checkInHotel && formData.checkInHotel === "1" ){ - if(!formData.inHotelTime){ + + if (this.data.info.guestType === 1 && formData.checkInHotel && formData.checkInHotel === "1") { + if (!formData.inHotelTime) { wx.showToast({ title: '请选择入住酒店时间', icon: 'none', @@ -179,7 +226,7 @@ Page({ }) return } - if(!formData.outHotelTime){ + if (!formData.outHotelTime) { wx.showToast({ title: '请选择离店时间', icon: 'none', @@ -187,9 +234,9 @@ Page({ }) return } - if(formData.inHotelTime && formData.outHotelTime){ - let flag = compareDate(formData.inHotelTime,formData.outHotelTime) - if(flag){ + if (formData.inHotelTime && formData.outHotelTime) { + let flag = compareDate(formData.inHotelTime, formData.outHotelTime) + if (flag) { wx.showToast({ title: '入住酒店时间不能大于离店时间', icon: 'none', @@ -199,7 +246,7 @@ Page({ } } - if(!formData.roomLayout){ + if (!formData.roomLayout) { wx.showToast({ title: '请输入房型', icon: 'none', @@ -209,7 +256,7 @@ Page({ } } - if(!formData.pickUp){ + if (!formData.pickUp) { wx.showToast({ title: '请选择是否接站', icon: 'none', @@ -217,8 +264,8 @@ Page({ }) return } - - if(formData.pickUp === "1" && !formData.arrivalTime){ + + if (formData.pickUp === "1" && !formData.arrivalTime) { wx.showToast({ title: '请选择抵达时间', icon: 'none', @@ -227,7 +274,7 @@ Page({ return } - if(formData.pickUp === "1" && !formData.destination){ + if (formData.pickUp === "1" && !formData.destination) { wx.showToast({ title: '请选择抵达站', icon: 'none', @@ -236,7 +283,7 @@ Page({ return } - if(formData.pickUp === "1" && !formData.arrivalShift){ + if (formData.pickUp === "1" && !formData.arrivalShift) { wx.showToast({ title: '请输入到达班次', icon: 'none', @@ -245,7 +292,7 @@ Page({ return } - if(!formData.deliveryStation){ + if (!formData.deliveryStation) { wx.showToast({ title: '请选择是否送站', icon: 'none', @@ -253,8 +300,8 @@ Page({ }) return } - - if(formData.deliveryStation === "1" && !formData.departureTime){ + + if (formData.deliveryStation === "1" && !formData.departureTime) { wx.showToast({ title: '请选择离开时间', icon: 'none', @@ -263,9 +310,9 @@ Page({ return } - if(formData.arrivalTime && formData.departureTime){ - let flag = compareDate(formData.arrivalTime,formData.departureTime) - if(flag){ + if (formData.arrivalTime && formData.departureTime) { + let flag = compareDate(formData.arrivalTime, formData.departureTime) + if (flag) { wx.showToast({ title: '抵达时间不能大于离开时间', icon: 'none', @@ -275,7 +322,7 @@ Page({ } } - if(formData.deliveryStation === "1" && !formData.departureStation){ + if (formData.deliveryStation === "1" && !formData.departureStation) { wx.showToast({ title: '请输入离开站', icon: 'none', @@ -284,7 +331,7 @@ Page({ return } - if(formData.deliveryStation === "1" && !formData.departureShift){ + if (formData.deliveryStation === "1" && !formData.departureShift) { wx.showToast({ title: '请输入离开班次', icon: 'none', @@ -294,7 +341,7 @@ Page({ } MeetingApi.editSignUpInfo(formData).then(res => { - if(res.success){ + if (res.success) { wx.showToast({ title: '编辑成功', icon: 'none', @@ -306,7 +353,7 @@ Page({ wx.navigateBack({ delta: 1, }) - }else{ + } else { wx.showToast({ title: res.message, icon: 'none', @@ -315,10 +362,10 @@ Page({ } }) - }else{ - if(this.data.info.arrivalTime && this.data.info.departureTime){ - let flag = compareDate(this.data.info.arrivalTime,this.data.info.departureTime) - if(flag){ + } else { + if (this.data.info.arrivalTime && this.data.info.departureTime) { + let flag = compareDate(this.data.info.arrivalTime, this.data.info.departureTime) + if (flag) { wx.showToast({ title: '抵达时间不能大于离开时间', icon: 'none', @@ -328,14 +375,15 @@ Page({ } } const param = { - arriveTime:this.data.info.arrivalTime, - departureTime:this.data.info.departureTime, - id:this.data.info.id, - guestType: 4 + arrivalTime: this.data.info.arrivalTime, + departureTime: this.data.info.departureTime, + id: this.data.info.id, + guestType: this.data.info.guestType, + choiceTopic: formData.choiceTopic } // 合作伙伴不需要校验 MeetingApi.editSignUpInfo(param).then(res => { - if(res.success){ + if (res.success) { wx.showToast({ title: '编辑成功', icon: 'none', @@ -347,7 +395,7 @@ Page({ wx.navigateBack({ delta: 1, }) - }else{ + } else { wx.showToast({ title: res.message, icon: 'none', @@ -362,28 +410,28 @@ Page({ bindDateChangeArriveTime(e) { this.setData({ arrivalTime: e.detail.value, - 'info.arrivalTime':e.detail.value + 'info.arrivalTime': e.detail.value }) }, // 离开时间选择 bindDateChangeLeaveTime(e) { this.setData({ departureTime: e.detail.value, - 'info.departureTime':e.detail.value + 'info.departureTime': e.detail.value }) }, // 入住酒店时间 bindDateChangeInHotelTime(e) { this.setData({ inHotelTime: e.detail.value, - 'info.inHotelTime':e.detail.value + 'info.inHotelTime': e.detail.value }) }, // 离店时间选择 bindDateChangeOutHotelTime(e) { this.setData({ outHotelTime: e.detail.value, - 'info.outHotelTime':e.detail.value + 'info.outHotelTime': e.detail.value }) }, // 是否用餐 @@ -431,11 +479,15 @@ Page({ info: res.result, }) this.initForm(this.data.info) + if(this.data.isWasic) { + // 会议id查询当前绑定的课题信息 + this.getLinkTopicsOptionArr(res.result.meetingId) + } // 演讲ppt、 if (res.result.speechPpt) { this.initFileList(res.result.speechPpt).then(res => { this.setData({ - speechPptList: res + speechPptList: res }) }) } @@ -485,11 +537,14 @@ Page({ backPdfArr.push(fileBackDa) wx.hideLoading(); //隐藏提示框 //上传成功, - const fileList = [{name:name,id:'fileBackDa.result.id'}] + const fileList = [{ + name: name, + id: 'fileBackDa.result.id' + }] that.setData({ tempFiles: name, 'info.speechPpt': fileBackDa.result.id, - speechPptList:fileList + speechPptList: fileList }); } }) @@ -528,12 +583,121 @@ Page({ return fileList } }, + // 取消会议名称的选中 + cancelChoiceTopic() { + let updateObj = {} + this.updateCheckboxArr(this.data.showTopicsArr, [], 'all') + updateObj.showTopicsArr = this.data.showTopicsArr + this.setData({ + ...updateObj + }) + + }, + // 获取国际研讨会-能选择课题的数据字典数据 + getLinkTopicsOptionArr(meetingId) { + MeetingApi.getLinkTopics({ + id: meetingId + }).then(res => { + if (res.success) { + let arr = res.result || [] + this.data.showTopicsArr.map(tt => { + tt.children.map(item => { + let ele = arr.find(a => a.value + '' === item.value) + if (ele) { + item.text = ele.text + item.title = ele.title + } + }) + tt.radioChildren && tt.radioChildren.map(item => { + let ele = arr.find(a => a.value + '' === item.value) + if (ele) { + item.text = ele.text + item.title = ele.title + } + }) + }) + const updateObj = { + showTopicsArr: this.data.showTopicsArr + } + // 选中的主题 + const choiceTopic = (this.data.info.choiceTopic || '').split(',') + this.updateCheckboxArr(this.data.showTopicsArr, choiceTopic, 'all') + updateObj.showTopicsArr = this.data.showTopicsArr + + this.setData({ + ...updateObj + }) + + } + }) + }, + // 选择的课题发生改变 + changeChoiceTopic(e) { + const values = e.detail.value // 是一个数组 ['1', '2'] + this.updateCheckboxArr(this.data.showTopicsArr, values, 'check') + let updateObj = { + showTopicsArr: this.data.showTopicsArr + } + this.setData({ + ...updateObj + }) + }, + changeRadioTopic(e) { + const value = e.detail.value + let keyName = e.currentTarget.dataset.name + this[keyName] = value + let pIndex = this.data.showTopicsArr.findIndex(tt => tt.radioKey === keyName) + if (pIndex > -1) { + this.data.showTopicsArr[pIndex].radioChildren.map(radioItem => { + radioItem.checked = false + if (radioItem.value === value) { + radioItem.checked = true + } + }) + } + let updateObj = { + showTopicsArr: this.data.showTopicsArr + } + this.setData({ + ...updateObj + }) + }, + /** + * 更新Checkbox对应的选中状态 + * @param arr-Checkbox对应的数组 和 showTopicsArr 对应的数据格式一致 + * @param valueArr-选中的值-数组 + * @param type-类型 ‘all’ 单选多选全都匹配; ‘check’-匹配多选 ‘radio’匹配单选 + */ + updateCheckboxArr(arr, valueArr, type) { + arr.map(tt => { + if (type === 'all' || type === 'check') { + tt.children.map(item => { + item.checked = false + if (valueArr.indexOf(item.value) > -1) { + item.checked = true + } + }) + } + if (type === 'all' || type === 'radio') { + tt.radioChildren && tt.radioChildren.map(item => { + item.checked = false + if (valueArr.indexOf(item.value) > -1) { + item.checked = true + } + }) + } + }) + }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { this.queryPeronInfo(options.situationId) + this.data.isWasic = !!options.isWasic + this.setData({ + isWasic: this.data.isWasic + }) // this.queryPeronInfo('1526466713801809921') }, @@ -585,4 +749,4 @@ Page({ onShareAppMessage: function () { } -}) \ No newline at end of file +}) diff --git a/pages/guestEditSignUpinfo/guestEditSignUpInfo.wxml b/pages/guestEditSignUpinfo/guestEditSignUpInfo.wxml index 9f14836..3e1ae95 100644 --- a/pages/guestEditSignUpinfo/guestEditSignUpInfo.wxml +++ b/pages/guestEditSignUpinfo/guestEditSignUpInfo.wxml @@ -1,10 +1,7 @@ -
- - - + 参会单位: @@ -29,13 +26,46 @@ 嘉宾类型: + + + + 会议名称: + + + + + {{item.name}} + + + + + + + + + + - + + + + + + + + + + + 演讲题目: - + 演讲PPT: @@ -50,19 +80,21 @@ - + 照片: - - + 个人简介: