【update】嘉宾报名成功后可以修改报名信息相关功能的增加;VIP去掉同行人;接站增加目的地

This commit is contained in:
fengchenchen
2023-11-04 20:57:06 +08:00
parent e203646ed6
commit 39f206a928
6 changed files with 472 additions and 127 deletions
+46 -36
View File
@@ -1,8 +1,8 @@
<template>
<a-form :form="form">
<!--演讲信息begin-->
<!-- 特邀嘉宾没有用餐信息-->
<template v-if="guestType !== 3 ">
<!-- 特邀嘉宾没有用餐信息; VIP || 演讲嘉宾 有 -->
<template v-if="guestType === 1 || guestType === 2">
<div class="item-title">演讲信息</div>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
@@ -45,31 +45,33 @@
</template>
<!--演讲信息end-->
<!--用餐信息begin-->
<!-- 合作伙伴不需要用餐信息 -->
<div class="item-title">用餐信息</div>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="是否用餐" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group :disabled="isEditBool" v-decorator="['haveMeals',validatorRules.haveMealBools]"
@change="selecthaveMealBools">
<a-radio :value="1">是</a-radio>
<a-radio :value="0">否</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
<!--选择了用餐才会出现-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="haveMealBool">
<a-form-item label="是否回民" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group :disabled="isEditBool" v-decorator="['huiPeople',validatorRules.huiPeople]">
<a-radio :value="1">是</a-radio>
<a-radio :value="0">否</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
</a-row>
<!-- VIP || 演讲嘉宾 有 用餐信息-->
<template v-if="guestType === 1 || guestType === 2">
<div class="item-title">用餐信息</div>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="是否用餐" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group :disabled="isEditBool" v-decorator="['haveMeals',validatorRules.haveMealBools]"
@change="selecthaveMealBools">
<a-radio :value="1">是</a-radio>
<a-radio :value="0">否</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
<!--选择了用餐才会出现-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="haveMealBool">
<a-form-item label="是否回民" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group :disabled="isEditBool" v-decorator="['huiPeople',validatorRules.huiPeople]">
<a-radio :value="1">是</a-radio>
<a-radio :value="0">否</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
</a-row>
</template>
<!--用餐信息end-->
<!--住店信息begin-->
<!-- 特邀嘉宾 演讲嘉宾没有住店信息-->
<!-- 只有VIP嘉宾有住店信息 特邀嘉宾 演讲嘉宾没有住店信息-->
<template v-if="guestType === 1">
<div class="item-title">住店信息</div>
<a-row :gutter="24">
@@ -147,6 +149,14 @@
v-decorator="[ 'arrivalShift',validatorRules.arrivalShift]"></a-input>
</a-form-item>
</a-col>
<!--需要做判断 增加 目的地 字段,目的记录入住的酒店 演讲嘉宾 || 特邀嘉宾 存在-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="pickUpBool && (guestType === 2 || guestType === 3)">
<a-form-item label="目的地" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :disabled="isEditBool" placeholder="请输入目的地"
@change="event => event.target.value = event.target.value.trim()" :maxLength="50"
v-decorator="['destinationHotel']"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
@@ -188,18 +198,18 @@
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="同行人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入同行人"
:maxLength='50'
:disabled="isEditBool"
@change="event => event.target.value = event.target.value.trim()"
v-decorator="[ 'peer']"></a-input>
</a-form-item>
</a-col>
<!--<a-row :gutter="24">-->
<!-- <a-col :xxl="8" :xl="12" :sm="24">-->
<!-- <a-form-item label="同行人" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
<!-- <a-input placeholder="请输入同行人"-->
<!-- :maxLength='50'-->
<!-- :disabled="isEditBool"-->
<!-- @change="event => event.target.value = event.target.value.trim()"-->
<!-- v-decorator="[ 'peer']"></a-input>-->
<!-- </a-form-item>-->
<!-- </a-col>-->
</a-row>
<!--</a-row>-->
<!--特邀嘉宾没有备注-->
<a-row v-if="guestType!== 3" :gutter="24" style="transform: translateX(-4px)">
<a-col>
+41 -30
View File
@@ -223,9 +223,9 @@
<span><j-ellipsis :value="situationInfo.identity_dictText" :length="20"></j-ellipsis></span>
</a-col>
</a-row>
<a-row :gutter="24" class="flex-col">
<a-row :gutter="24" class="flex-col" v-if="model.isWasic">
<!--是否为WASIC字段判断-->
<a-col :span="12" v-if="model.isWasic">
<a-col :span="12" >
<label>会议名称:</label>
<div>
<div class="word-beak block-span" v-for="item in wasicChoiceTopics" :key="item.name">
@@ -233,10 +233,9 @@
<div v-for="innerItem in item.children" :key="'a_checked_'+ innerItem.value">{{ innerItem.text }}</div>
</div>
</div>
<!--<span>-->
<!-- <span class="block-span" v-for="item in (situationInfo.choiceTopic_dictText || '').split(',')" :key="item">{{item}}</span>-->
<!--</span>-->
</a-col>
</a-row>
<a-row :gutter="24" class="flex-col">
<a-col :span="12">
<label>手机号:</label>
<span><j-ellipsis :value="situationInfo.phone" :length="20"></j-ellipsis></span>
@@ -385,6 +384,18 @@
<span><j-ellipsis :value="situationInfo.identity_dictText" :length="20"></j-ellipsis></span>
</a-col>
</a-row>
<a-row :gutter="24" class="flex-col" v-if="model.isWasic">
<a-col :span="12">
<label>会议名称:</label>
<div>
<div class="word-beak block-span" v-for="item in wasicChoiceTopics" :key="item.name">
<div class="topic-title">{{ item.name }}</div>
<div v-for="innerItem in item.children" :key="'a_checked_'+ innerItem.value">{{ innerItem.text }}</div>
</div>
</div>
</a-col>
</a-row>
<a-row :gutter="24" class="flex-col">
<a-col :span="12">
<label>手机号:</label>
@@ -488,10 +499,10 @@
</a-col>
</a-row>
<a-row :gutter="24" class="flex-col">
<a-col :span="12" v-show="situationInfo.peer">
<label>同行人:</label>
<span>{{ situationInfo.peer }}</span>
</a-col>
<!--<a-col :span="12" v-show="situationInfo.peer">-->
<!-- <label>同行人:</label>-->
<!-- <span>{{ situationInfo.peer }}</span>-->
<!--</a-col>-->
<a-col :span="12" v-show="situationInfo.remark">
<label>备注:</label>
<span> {{ situationInfo.remark }}</span>
@@ -553,6 +564,12 @@
<span> {{ situationInfo.arrivalShift }}</span>
</a-col>
</a-row>
<a-row :gutter="24" class="flex-col" v-show="situationInfo.pickUp === 1">
<a-col :span="12">
<label>目的地:</label>
<span>{{ situationInfo.destinationHotel }}</span>
</a-col>
</a-row>
<a-row :gutter="24" class="flex-col">
<a-col :span="12">
<label>是否需要送站:</label>
@@ -574,10 +591,6 @@
</a-col>
</a-row>
<a-row :gutter="24" class="flex-col">
<a-col :span="12" v-show="situationInfo.peer">
<label>同行人:</label>
<span>{{ situationInfo.peer }}</span>
</a-col>
<a-col :span="12" v-show="situationInfo.remark">
<label>备注:</label>
<span> {{ situationInfo.remark }}</span>
@@ -586,16 +599,6 @@
</section>
<!-- 特邀嘉宾显示-->
<section v-show="situationInfo.guestType == 3 ">
<a-row :gutter="24" class="flex-col">
<a-col :span="12">
<label>是否用餐:</label>
<span>{{ situationInfo.haveMeals_dictText }}</span>
</a-col>
<a-col :span="12" v-show="situationInfo.haveMeals === 1">
<label>是否回民:</label>
<span> {{ situationInfo.huiPeople_dictText }}</span>
</a-col>
</a-row>
<a-row :gutter="24" class="flex-col">
<a-col :span="12">
<label>是否需要接站:</label>
@@ -616,6 +619,12 @@
<span> {{ situationInfo.arrivalShift }}</span>
</a-col>
</a-row>
<a-row :gutter="24" class="flex-col" v-show="situationInfo.pickUp === 1">
<a-col :span="12">
<label>目的地:</label>
<span>{{ situationInfo.destinationHotel }}</span>
</a-col>
</a-row>
<a-row :gutter="24" class="flex-col">
<a-col :span="12">
<label>是否需要送站:</label>
@@ -636,12 +645,6 @@
<span> {{ situationInfo.departureShift }}</span>
</a-col>
</a-row>
<a-row :gutter="24" class="flex-col">
<a-col :span="12" v-show="situationInfo.peer">
<label>同行人:</label>
<span>{{ situationInfo.peer }}</span>
</a-col>
</a-row>
</section>
<!--合作伙伴或者参展商身份显示 -->
<a-row :gutter="24" class="flex-col" v-show="situationInfo.guestType == 4 || situationInfo.guestType == 5 ">
@@ -732,7 +735,7 @@
<template slot="footer">
<a-button @click="handleCancel">关闭</a-button>
</template>
<edit-sign-up-info ref="editSignUpInfoForm"></edit-sign-up-info>
<edit-sign-up-info ref="editSignUpInfoForm" @ok="updateSignUpInfo"></edit-sign-up-info>
<file-upload-modal ref="fileUploadModal" :meeting-id="model.id" @ok="refreshData"></file-upload-modal>
@@ -1137,6 +1140,14 @@ export default {
refreshData() {
console.log('---------refreshData--------')
this.$emit('refresh-data', this.model.situationId)
},
// 国际研讨会-嘉宾-修改完报名信息后更新页面上显示的数据
async updateSignUpInfo() {
console.log('------updateSignUpInfo--------')
// 会议进来的查询参会人信息
await this.getSingUpUserInfoFunc(this.model)
this.wasicLinkTopics = this.handleWasicLinkTopics(this.model)
this.$emit('refresh-data', this.model.situationId)
}
}
@@ -8,10 +8,10 @@
@ok="handleOk"
@cancel="handleCancel"
cancelText="关闭">
<vip-form ref="vipForm" v-if="model.guestType === 1" @ok="handleCancel"></vip-form>
<speak-guest-form ref="speakGuestForm" @ok="handleCancel" v-if="model.guestType === 2"></speak-guest-form>
<teyao-guest-form ref="teyaoGuestForm" @ok="handleCancel" v-if="model.guestType === 3"></teyao-guest-form>
<cooperative-form ref="cooperativeForm" @ok="handleCancel" v-if="(model.guestType === 4 ||model.guestType === 5)"></cooperative-form>
<vip-form ref="vipForm" v-if="model.guestType === 1" @ok="handleEditOk"></vip-form>
<speak-guest-form ref="speakGuestForm" @ok="handleEditOk" v-if="model.guestType === 2"></speak-guest-form>
<teyao-guest-form ref="teyaoGuestForm" @ok="handleEditOk" v-if="model.guestType === 3"></teyao-guest-form>
<cooperative-form ref="cooperativeForm" @ok="handleEditOk" v-if="(model.guestType === 4 ||model.guestType === 5)"></cooperative-form>
</j-modal>
</template>
@@ -117,6 +117,11 @@ export default {
}
this.visible = true
},
// 子表单保存完毕
handleEditOk() {
this.$emit('ok')
this.close()
},
handleCancel() {
this.close()
}
@@ -126,5 +131,29 @@ export default {
</script>
<style scoped lang="less">
// 国际研讨会-关联会议 多选样式的修改
/deep/ .meeting-form-multi-select {
.topic-title {
padding: 10px 0;
}
.ant-checkbox-wrapper + .ant-checkbox-wrapper {
margin-left: 0 !important;
}
.ant-checkbox-wrapper,
.ant-radio-wrapper {
margin-right: 8px;
display: block;
}
}
/deep/ .clear-topic-btn{
display: block;
}
/deep/.radio-div {
border-top: 1px solid rgba(0, 0, 0, 0.2);
padding-top: 10px;
margin-top: 10px;
}
</style>
@@ -67,6 +67,28 @@
</a-row>
<a-row :gutter="24" v-if="model.choiceTopic">
<!-- 国际研讨会 WASIC 增加会议名称的选择--已经到账的信息不能修改-->
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="会议名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-checkbox-group class="meeting-form-multi-select" @change="choiceTopicChange" v-decorator="['choiceTopic',validatorRules.choiceTopic]">
<div v-for="(item, index) in showTopicsArr" :key="'showTopicTitle_'+ index">
<div class="topic-title">{{item.name}}</div>
<div>
<a-checkbox v-for="item in item.children" :key="'a_checkbox_'+ item.value" :value="item.value" :disabled="item.disabled">{{ item.text }}</a-checkbox>
</div>
<div class="radio-div" v-if="item.radioChildren">
<a-radio-group v-decorator="[item.radioKey]" @change="changeRadioTopic">
<a-radio v-for="item in item.radioChildren" :key="'a_radio_'+ item.value" :value="item.value" :disabled="item.disabled">{{ item.text }}</a-radio>
</a-radio-group>
</div>
</div>
</a-checkbox-group>
<a-button class="clear-topic-btn" @click="cancelChoiceTopic">清空会议信息</a-button>
</a-form-item>
</a-col>
</a-row>
<a-row class="item-title">演讲信息</a-row>
<a-row :gutter="24">
@@ -167,6 +189,14 @@
v-decorator="[ 'arrivalShift',validatorRules.arrivalShift]"></a-input>
</a-form-item>
</a-col>
<!--需要做判断 增加 目的地 字段,目的记录入住的酒店 演讲嘉宾 || 特邀嘉宾 存在-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="pickUpBool">
<a-form-item label="目的地" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :disabled="isEditBool" placeholder="请输入目的地"
@change="event => event.target.value = event.target.value.trim()" :maxLength="50"
v-decorator="['destinationHotel']"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
@@ -208,17 +238,6 @@
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="同行人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入同行人"
:maxLength='50'
@change="event => event.target.value = event.target.value.trim()"
v-decorator="[ 'peer']"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24" style="transform: translateX(-4px)">
<a-col>
<a-form-item label="备注" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
@@ -245,6 +264,8 @@ import JDate from '@comp/jero/JDate'
import moment from 'moment'
import pick from 'lodash.pick'
import {httpAction} from '@api/manage'
import WasicTopicData from "../../MessagePage/modules/wasicStaticData";
import {LinkTopicsEnums} from "../../../enums/commonEnum";
export default {
name: 'SpeakGuestForm',
@@ -260,6 +281,7 @@ export default {
haveMealBool:false,
pickUpBool:false,
sendBool:false,
model: {},
labelCol: {
xxl:{span: 9},
xl:{span: 8},
@@ -281,6 +303,12 @@ export default {
sm:{span: 20}
},
validatorRules: {
choiceTopic: {
rules: [
{required: true, validator: this.checkChoiceTopic},
],
validateTrigger: ['change']
},
haveMealBools: {
rules: [{ required: true, message: '请选择是否用餐' }],
validateTrigger: 'change'
@@ -325,10 +353,48 @@ export default {
},
url:{
edit:'/meeting/payMeetingSituation/editGuestInfo'
}
},
// WASIC可选会议的数组-前端写死
showTopicsArr: [...WasicTopicData]
}
},
methods:{
// 验证选择会议名称的情况
checkChoiceTopic(rules, value, callback) {
console.log(value)
let arr = []
if (value && value.length > 0) {
arr = [...value]
}
let radioKey = this.form.getFieldValue('radioKey')
let radioKeyTwo = this.form.getFieldValue('radioKeyTwo')
if(radioKey || radioKeyTwo) {
callback()
} else {
arr = arr.filter(tt => tt !== LinkTopicsEnums.freeTwo.index + '')
if(arr.length === 0) {
callback('请至少选择一个非参观类会议')
} else {
callback()
}
}
},
choiceTopicChange() {
},
changeRadioTopic() {
this.$nextTick(() => {
this.form.validateFields(['choiceTopic'])
})
},
// 取消会议名称的选中
cancelChoiceTopic() {
this.form.setFieldsValue({
choiceTopic: [],
radioKey: undefined,
radioKeyTwo: undefined,
})
},
moment,
handleOk() {
const that = this
@@ -337,6 +403,19 @@ export default {
that.confirmLoading = true
let url = this.url.edit
const formData = Object.assign({}, values)
// 国际研讨会 且为WASIC 会议(有choiceTopic的才是WASIC)
if (this.model.choiceTopic) {
let choiceTopicArr = formData.choiceTopic
//11月27日 单选会议的处理
if(formData.radioKey) {
choiceTopicArr.push(formData.radioKey)
}
//11月28日 单选会议的处理
if(formData.radioKeyTwo) {
choiceTopicArr.push(formData.radioKeyTwo)
}
formData.choiceTopic = choiceTopicArr.join(',')
}
formData.id = this.model.id
httpAction(url, formData, 'post').then(res => {
if (res.success) {
@@ -355,6 +434,36 @@ export default {
initForm(record){
this.model = Object.assign({},record)
this.form.resetFields()
// 如果存在所选择的课题,则对课题数据进行处理
if (this.model.choiceTopic) {
let choiceTopicArr = this.model.choiceTopic.split(',')
this.showTopicsArr = JSON.parse(JSON.stringify(WasicTopicData))
let checkboxArr = [], radioObj = {}
choiceTopicArr.map(checkedItem => {
this.showTopicsArr.map(tt => {
let index = tt.children.findIndex(inner => inner.value === checkedItem)
if(index > -1) {
tt.children[index].checked = true
checkboxArr.push(checkedItem)
}
if(tt.radioChildren) {
let radioIndex = tt.radioChildren.findIndex(inner => inner.value === checkedItem)
if(radioIndex > -1) {
tt.radioChildren[radioIndex].checked = true
radioObj[tt.radioKey] = checkedItem
}
}
})
})
this.$nextTick(() => {
this.form.setFieldsValue({
...radioObj,
'choiceTopic': checkboxArr
})
})
}
this.form.setFieldsValue({
'companyName':record.companyName,
'companyContactName':record.companyContactName,
@@ -382,6 +491,7 @@ export default {
this.form.setFieldsValue(pick(record,
'arrivalTime',
'destination',
'destinationHotel',
'arrivalShift'
))
})
@@ -66,26 +66,24 @@
</a-col>
</a-row>
<a-row class="item-title">用餐信息</a-row>
<a-row :gutter="24">
<a-row :gutter="24" v-if="model.choiceTopic">
<!-- 国际研讨会 WASIC 增加会议名称的选择--已经到账的信息不能修改-->
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="是否用餐" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['haveMeals',validatorRules.haveMealBools]"
@change="selecthaveMealBools">
<a-radio :value="1">是</a-radio>
<a-radio :value="0">否</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
<!--选择了用餐才会出现-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="haveMealBool">
<a-form-item label="是否回民" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['huiPeople',validatorRules.huiPeople]">
<a-radio :value="1">是</a-radio>
<a-radio :value="0">否</a-radio>
</a-radio-group>
<a-form-item label="会议名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-checkbox-group class="meeting-form-multi-select" @change="choiceTopicChange" v-decorator="['choiceTopic',validatorRules.choiceTopic]">
<div v-for="(item, index) in showTopicsArr" :key="'showTopicTitle_'+ index">
<div class="topic-title">{{item.name}}</div>
<div>
<a-checkbox v-for="item in item.children" :key="'a_checkbox_'+ item.value" :value="item.value" :disabled="item.disabled">{{ item.text }}</a-checkbox>
</div>
<div class="radio-div" v-if="item.radioChildren">
<a-radio-group v-decorator="[item.radioKey]" @change="changeRadioTopic">
<a-radio v-for="item in item.radioChildren" :key="'a_radio_'+ item.value" :value="item.value" :disabled="item.disabled">{{ item.text }}</a-radio>
</a-radio-group>
</div>
</div>
</a-checkbox-group>
<a-button class="clear-topic-btn" @click="cancelChoiceTopic">清空会议信息</a-button>
</a-form-item>
</a-col>
</a-row>
@@ -128,6 +126,14 @@
v-decorator="[ 'arrivalShift',validatorRules.arrivalShift]"></a-input>
</a-form-item>
</a-col>
<!--需要做判断 增加 目的地 字段,目的记录入住的酒店 演讲嘉宾 || 特邀嘉宾 存在-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="pickUpBool">
<a-form-item label="目的地" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :disabled="isEditBool" placeholder="请输入目的地"
@change="event => event.target.value = event.target.value.trim()" :maxLength="50"
v-decorator="['destinationHotel']"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
@@ -169,17 +175,6 @@
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="同行人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入同行人"
:maxLength='50'
@change="event => event.target.value = event.target.value.trim()"
v-decorator="[ 'peer']"></a-input>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-spin>
@@ -191,6 +186,8 @@ import JDate from '@comp/jero/JDate'
import moment from 'moment'
import pick from 'lodash.pick'
import {httpAction} from '@api/manage'
import WasicTopicData from "../../MessagePage/modules/wasicStaticData";
import {LinkTopicsEnums} from "../../../enums/commonEnum";
export default {
name: 'TeyaoGuestForm',
@@ -204,6 +201,7 @@ export default {
haveMealBool:false,
pickUpBool:false,
sendBool:false,
model: {},
labelCol: {
xxl:{span: 9},
xl:{span: 8},
@@ -225,6 +223,12 @@ export default {
sm:{span: 20}
},
validatorRules: {
choiceTopic: {
rules: [
{required: true, validator: this.checkChoiceTopic},
],
validateTrigger: ['change']
},
haveMealBools: {
rules: [{ required: true, message: '请选择是否用餐' }],
validateTrigger: 'change'
@@ -285,10 +289,48 @@ export default {
},
url:{
edit:'/meeting/payMeetingSituation/editGuestInfo'
}
},
// WASIC可选会议的数组-前端写死
showTopicsArr: [...WasicTopicData]
}
},
methods:{
// 验证选择会议名称的情况
checkChoiceTopic(rules, value, callback) {
console.log(value)
let arr = []
if (value && value.length > 0) {
arr = [...value]
}
let radioKey = this.form.getFieldValue('radioKey')
let radioKeyTwo = this.form.getFieldValue('radioKeyTwo')
if(radioKey || radioKeyTwo) {
callback()
} else {
arr = arr.filter(tt => tt !== LinkTopicsEnums.freeTwo.index + '')
if(arr.length === 0) {
callback('请至少选择一个非参观类会议')
} else {
callback()
}
}
},
choiceTopicChange() {
},
changeRadioTopic() {
this.$nextTick(() => {
this.form.validateFields(['choiceTopic'])
})
},
// 取消会议名称的选中
cancelChoiceTopic() {
this.form.setFieldsValue({
choiceTopic: [],
radioKey: undefined,
radioKeyTwo: undefined,
})
},
moment,
handleOk() {
const that = this
@@ -297,6 +339,19 @@ export default {
that.confirmLoading = true
let url = this.url.edit
const formData = Object.assign({}, values)
// 国际研讨会 且为WASIC 会议(有choiceTopic的才是WASIC)
if (this.model.choiceTopic) {
let choiceTopicArr = formData.choiceTopic
//11月27日 单选会议的处理
if(formData.radioKey) {
choiceTopicArr.push(formData.radioKey)
}
//11月28日 单选会议的处理
if(formData.radioKeyTwo) {
choiceTopicArr.push(formData.radioKeyTwo)
}
formData.choiceTopic = choiceTopicArr.join(',')
}
formData.id = this.model.id
httpAction(url, formData, 'post').then(res => {
if (res.success) {
@@ -315,6 +370,36 @@ export default {
initForm(record){
this.model = Object.assign({},record)
this.form.resetFields()
// 如果存在所选择的课题,则对课题数据进行处理
if (this.model.choiceTopic) {
let choiceTopicArr = this.model.choiceTopic.split(',')
this.showTopicsArr = JSON.parse(JSON.stringify(WasicTopicData))
let checkboxArr = [], radioObj = {}
choiceTopicArr.map(checkedItem => {
this.showTopicsArr.map(tt => {
let index = tt.children.findIndex(inner => inner.value === checkedItem)
if(index > -1) {
tt.children[index].checked = true
checkboxArr.push(checkedItem)
}
if(tt.radioChildren) {
let radioIndex = tt.radioChildren.findIndex(inner => inner.value === checkedItem)
if(radioIndex > -1) {
tt.radioChildren[radioIndex].checked = true
radioObj[tt.radioKey] = checkedItem
}
}
})
})
this.$nextTick(() => {
this.form.setFieldsValue({
...radioObj,
'choiceTopic': checkboxArr
})
})
}
this.form.setFieldsValue({
'companyName':record.companyName,
'companyContactName':record.companyContactName,
@@ -357,6 +442,7 @@ export default {
this.form.setFieldsValue(pick(record,
'arrivalTime',
'destination',
'destinationHotel',
'arrivalShift'
))
})
+113 -14
View File
@@ -66,7 +66,27 @@
</a-col>
</a-row>
<a-row :gutter="24" v-if="model.choiceTopic">
<!-- 国际研讨会 WASIC 增加会议名称的选择--已经到账的信息不能修改-->
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="会议名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-checkbox-group class="meeting-form-multi-select" @change="choiceTopicChange" v-decorator="['choiceTopic',validatorRules.choiceTopic]">
<div v-for="(item, index) in showTopicsArr" :key="'showTopicTitle_'+ index">
<div class="topic-title">{{item.name}}</div>
<div>
<a-checkbox v-for="item in item.children" :key="'a_checkbox_'+ item.value" :value="item.value" :disabled="item.disabled">{{ item.text }}</a-checkbox>
</div>
<div class="radio-div" v-if="item.radioChildren">
<a-radio-group v-decorator="[item.radioKey]" @change="changeRadioTopic">
<a-radio v-for="item in item.radioChildren" :key="'a_radio_'+ item.value" :value="item.value" :disabled="item.disabled">{{ item.text }}</a-radio>
</a-radio-group>
</div>
</div>
</a-checkbox-group>
<a-button class="clear-topic-btn" @click="cancelChoiceTopic">清空会议信息</a-button>
</a-form-item>
</a-col>
</a-row>
<a-row class="item-title">演讲信息</a-row>
<a-row :gutter="24">
@@ -245,17 +265,6 @@
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="同行人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入同行人"
:maxLength='50'
@change="event => event.target.value = event.target.value.trim()"
v-decorator="[ 'peer']"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24" style="transform: translateX(-4px)">
<a-col>
<a-form-item label="备注" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
@@ -282,6 +291,8 @@ import JDate from '@comp/jero/JDate'
import moment from 'moment'
import pick from 'lodash.pick'
import {httpAction} from '@api/manage'
import WasicTopicData from '../../MessagePage/modules/wasicStaticData'
import {LinkTopicsEnums} from '../../../enums/commonEnum'
export default {
name: 'VIPForm',
@@ -298,6 +309,7 @@ export default {
inHotelBool:false,
pickUpBool:false,
sendBool:false,
model: {},
labelCol: {
xxl:{span: 9},
xl:{span: 8},
@@ -319,6 +331,12 @@ export default {
sm:{span: 20}
},
validatorRules: {
choiceTopic: {
rules: [
{required: true, validator: this.checkChoiceTopic},
],
validateTrigger: ['change']
},
haveMealBools: {
rules: [{ required: true, message: '请选择是否用餐' }],
validateTrigger: 'change'
@@ -379,10 +397,48 @@ export default {
},
url:{
edit:'/meeting/payMeetingSituation/editGuestInfo'
}
},
// WASIC可选会议的数组-前端写死
showTopicsArr: [...WasicTopicData]
}
},
methods:{
// 验证选择会议名称的情况
checkChoiceTopic(rules, value, callback) {
console.log(value)
let arr = []
if (value && value.length > 0) {
arr = [...value]
}
let radioKey = this.form.getFieldValue('radioKey')
let radioKeyTwo = this.form.getFieldValue('radioKeyTwo')
if(radioKey || radioKeyTwo) {
callback()
} else {
arr = arr.filter(tt => tt !== LinkTopicsEnums.freeTwo.index + '')
if(arr.length === 0) {
callback('请至少选择一个非参观类会议')
} else {
callback()
}
}
},
choiceTopicChange() {
},
changeRadioTopic() {
this.$nextTick(() => {
this.form.validateFields(['choiceTopic'])
})
},
// 取消会议名称的选中
cancelChoiceTopic() {
this.form.setFieldsValue({
choiceTopic: [],
radioKey: undefined,
radioKeyTwo: undefined,
})
},
moment,
handleOk() {
const that = this
@@ -390,7 +446,20 @@ export default {
if (!err) {
that.confirmLoading = true
let url = this.url.edit
const formData = Object.assign({}, values)
let formData = Object.assign({}, values)
// 国际研讨会 且为WASIC 会议(有choiceTopic的才是WASIC)
if (this.model.choiceTopic) {
let choiceTopicArr = formData.choiceTopic
//11月27日 单选会议的处理
if(formData.radioKey) {
choiceTopicArr.push(formData.radioKey)
}
//11月28日 单选会议的处理
if(formData.radioKeyTwo) {
choiceTopicArr.push(formData.radioKeyTwo)
}
formData.choiceTopic = choiceTopicArr.join(',')
}
formData.id = this.model.id
httpAction(url, formData, 'post').then(res => {
if (res.success) {
@@ -409,6 +478,36 @@ export default {
initForm(record){
this.model = Object.assign({},record)
this.form.resetFields()
// 如果存在所选择的课题,则对课题数据进行处理
if (this.model.choiceTopic) {
let choiceTopicArr = this.model.choiceTopic.split(',')
this.showTopicsArr = JSON.parse(JSON.stringify(WasicTopicData))
let checkboxArr = [], radioObj = {}
choiceTopicArr.map(checkedItem => {
this.showTopicsArr.map(tt => {
let index = tt.children.findIndex(inner => inner.value === checkedItem)
if(index > -1) {
tt.children[index].checked = true
checkboxArr.push(checkedItem)
}
if(tt.radioChildren) {
let radioIndex = tt.radioChildren.findIndex(inner => inner.value === checkedItem)
if(radioIndex > -1) {
tt.radioChildren[radioIndex].checked = true
radioObj[tt.radioKey] = checkedItem
}
}
})
})
this.$nextTick(() => {
this.form.setFieldsValue({
...radioObj,
'choiceTopic': checkboxArr
})
})
}
this.form.setFieldsValue({
'companyName':record.companyName,
'companyContactName':record.companyContactName,