【开发】新增会议 增加会议联系人

This commit is contained in:
fengachen
2022-01-05 13:34:23 +08:00
parent a3363d0700
commit bcabc24c34
3 changed files with 170 additions and 6 deletions
@@ -23,6 +23,10 @@ export default {
type: String,
required: false,
default: undefined
},
index:{
type:[String,Number],
required: false
}
},
data() {
@@ -239,6 +239,43 @@
v-decorator="['directorPhone']"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<section>
<a-row :gutter="24" v-for="(item, index) in model.meetingContactsList" :key="index">
<a-col :xxl="8" :xl="10" :md="12">
<a-form-item label="会议联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<!-- @change="selectPerson"-->
<!-- 绑定 index 是因为 没法通过 selectMeetingContact 方法 去传递这个索引 只能绑定在组件上 通过change 方法的第二个参数 去获取这个 index 然后去做对应的表单复赋值 -->
<select-principal placeholder="请选择会议联系人"
:index="index"
@change="selectMeetingContact"
v-decorator="['meetingContactsList['+index+'].meetingContactsId',validateInviteCode.meetingContactsId]">
</select-principal>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="10" :md="12">
<a-form-item label="联系人手机号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9]/g,'')}"
:maxLength="11"
disabled
v-decorator="['meetingContactsList['+index+'].meetingContactsPhone']"
placeholder="请输入联系人手机号"></a-input>
</a-form-item>
</a-col>
<!-- style="transform: translateX(-130px);"-->
<a-col :xxl="2" :xl="4" :sm="6">
<a-form-item>
<a-button icon="plus" @click="addMeetingContacts"></a-button>
<a-button icon="minus" @click="removeMeetingContacts(index)" style="margin-left: 8px;"></a-button>
</a-form-item>
</a-col>
</a-row>
</section>
</a-row>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
@@ -354,6 +391,7 @@ import {checkMeetingName} from '@/utils/validateOnly'
import {addZero} from '@/utils/util'
import {money, phoneReg} from '@/utils/validate'
export default {
name: 'AddOrDetailMeet',
components: {
@@ -406,6 +444,12 @@ export default {
],
validateTrigger: ['blur']
},
meetingContactsId: {
rules: [
{required: true, validator: this.validateMeetingContact}
],
validateTrigger: ['change']
},
meetingName: {
rules: [
{required: true, validator: this.validaeMeetingName}
@@ -431,13 +475,14 @@ export default {
],
validateTrigger: ['blur']
},
directorPhone:{
directorPhone: {
rules: [
{required: true, validator: this.validateDirectorPhone}
],
validateTrigger: ['blur']
}
},
userList: [],// 会议联系人下拉框集合
url: {
add: '/meeting/payMeeting/add',
edit: '/meeting/payMeeting/edit'
@@ -531,6 +576,11 @@ export default {
hotelContacts: '',
hotelContactsPhone: ''
}]
// 会议联系人
this.model.meetingContactsList = [{
meetingContactsId: '',
meetingContactsPhone: ''
}]
// 新增取路由参数
this.meetingType = this.$route.query.meetingType
// 新增根据路由参数 会议类型更换不同的接口
@@ -553,12 +603,12 @@ export default {
this.$nextTick(() => {
// 加定时器是因为有可能赋值不成功
setTimeout(() => {
this.form.setFieldsValue(pick(this.model, 'notice','hotelContactsList','hotelName', 'hotelAddress' ,'paymentQrCode', 'meetingName', 'meetingType', 'convokeTime', 'particularYear', 'estimatedNumber', 'meetingFiles', 'registerDeadline', 'meetingContent', 'convokeLocale', 'address', 'meetingCosts', 'directorId', 'remark', 'directorPhone')), 200
this.form.setFieldsValue(pick(this.model, 'notice', 'hotelContactsList', 'hotelName', 'hotelAddress', 'paymentQrCode', 'meetingName', 'meetingType', 'convokeTime', 'particularYear', 'estimatedNumber', 'meetingFiles', 'registerDeadline', 'meetingContent', 'convokeLocale', 'address', 'meetingCosts', 'directorId', 'remark', 'directorPhone')), 200
})
// 如果是标协会议则回显 标协会议的字段
if (this.meetingType === '2') {
console.log('this.model', this.model)
this.form.setFieldsValue(pick(this.model, 'signInTime', 'tbMeetingType', 'meetingCostsVip' ))
this.form.setFieldsValue(pick(this.model, 'signInTime', 'tbMeetingType', 'meetingCostsVip'))
}
// 如果是工作组会议 赋值工作组
if (this.meetingType === '1') {
@@ -733,6 +783,82 @@ export default {
})
},
/*
* 添加会议联系人
* */
addMeetingContacts(index) {
if (this.model.meetingContactsList.length >= 5) {
this.$message.warning('最多添加5个酒店联系人')
return
}
const {form} = this
const obj = {
meetingContactsId: '',
meetingContactsPhone: ''
}
const keys = form.getFieldValue('meetingContactsList')
// 增加数据后重新赋值
this.model.meetingContactsList.splice(index + 1, 0, obj)
// keys.splice(index , 0, obj)
this.$nextTick(() => {
form.setFieldsValue({
meetingContactsList: keys
})
})
},
/*
* 删除会议联系人
* */
removeMeetingContacts(k) {
// 如果长度是1的话则不进行删除操作
if (this.model.meetingContactsList.length === 1) {
return
}
const {form} = this
// // can use data-binding to get
const meetingContactsList = form.getFieldValue('meetingContactsList')
// 把循环的dom元素删除
this.model.meetingContactsList.splice(k, 1)
// 把绑定在dom里面的值删除
meetingContactsList.splice(k, 1)
this.$nextTick(() => {
// 重新赋值
form.setFieldsValue({
meetingContactsList: meetingContactsList
})
})
},
/**
* 选择会议联系人
* */
selectMeetingContact(val, VNode) {
console.log(val)
console.log(VNode)
if (val) {
// 索引 我不知道怎么去拿这个对应的索引 我只能把这个绑到这个组件上 通过这种方法 去拿索引
let idx = VNode.context.index
// 要设置表单值的数组
const keys = this.form.getFieldValue('meetingContactsList')
getUserInfo({id: val}).then(res => {
if (res.success) {
this.$nextTick(() => {
keys.forEach((item, index) => {
// 为数组索引为index 的赋值
if (index === idx) {
keys.splice(index, 1, {
meetingContactsId: val,
meetingContactsPhone: res.result.phone
})
}
})
this.form.setFieldsValue({meetingContactsList: keys})
})
}
})
}
},
/*
* 召开地点吗转换
* */
getPcaText(code) {
@@ -811,6 +937,34 @@ export default {
}
},
/*
* 校验会议联系人
* */
validateMeetingContact(rule, value, callback) {
// let meetingContactList = this.form.getFieldValue('meetingContactsList')
// meetingContactList.forEach((item,index) => {
// if ( item.meetingContactsId === value && !item.meetingContactsPhone){
// meetingContactList.splice(index,1)
// }
// })
// let flag = meetingContactList.some(item => {
// return item.meetingContactsId === value
// })
// if (meetingContactList.length === 1) {
// flag = false
// }
if (value === '' || value === undefined || value === null) {
callback('请选择会议联系人')
}else {
callback()
}
// if (value && flag) {
// callback('请选择不同的会议联系人')
// } else {
// callback()
// }
},
/*
* 会议名称唯一校验
* */
validaeMeetingName(rule, value, callback) {
@@ -872,17 +1026,17 @@ export default {
callback('请输入合法的金额数字,最多2位小数,10位整数')
}
},
validateDirectorPhone(rule, value, callback){
validateDirectorPhone(rule, value, callback) {
if (value && value !== '') {
if (phoneReg(value)) {
// 是否编辑
callback()
}else {
} else {
callback('请输入正确的手机号')
}
}else {
} else {
callback()
}
}
@@ -23,6 +23,12 @@ export default {
],
validateTrigger:['blur']
},
meetingContactsList:{
rules: [
{ required: true, message: '请选择会议联系人' },
],
validateTrigger:['change']
},
registerDeadline:{
rules: [
{ required: true, message: '请选择报名截止时间' },