参会情况修改

This commit is contained in:
fengachen
2021-09-08 19:25:10 +08:00
parent dff860c5be
commit d59b1c1c02
13 changed files with 1031 additions and 347 deletions
+2 -1
View File
@@ -7,8 +7,9 @@ const getMeetInfoById = (params) => getAction('/meeting/payMeeting/queryById',pa
// 获取所有工作组项目
const getAllWorkProjects = () => getAction('/project/payWorkingGroup/listAll')
export {
getUserInfo,
getMeetInfoById,
getAllWorkProjects
getAllWorkProjects,
}
@@ -0,0 +1,85 @@
<template>
<div>
<a-row :gutter=10>
<a-col :span="20">
<a-input autocomplete="off" @click="chooseBusiness" :value="value[valueKey]" v-bind="$attrs"></a-input>
</a-col>
<a-col :span="4">
<a-button icon="plus" @click="addCompany"></a-button>
</a-col>
</a-row>
<business-select ref="businessSelect" @ok="setCompanyVal" v-bind="$attrs"></business-select>
<business-management-module ref="businessModal" @ok="setCompanyVal"></business-management-module>
</div>
</template>
<script>
import BusinessSelect from '@comp/company/BusinessSelect'
import BusinessManagementModule from '@views/businessManagement/modules/BusinessManagementModule'
export default {
name: 'AddMeetingCompany',
props: {
// 是否可以选择
isCompanyDisabled: {
type: Boolean,
required: false,
default: false
},
value: {
type: Object,
default: () => {
return {}
}
},
// 回显数据的key
valueKey: {
type: String,
default: 'companyName'
}
},
components: {
BusinessSelect,
BusinessManagementModule
},
data() {
return {
reallyValue:''
}
},
methods: {
/*
* 打开选择企业弹窗
* */
chooseBusiness() {
if (this.isCompanyDisabled) {
return
}
this.$refs.businessSelect.searchReset()
this.$refs.businessSelect.visible = true
},
/*
* 添加企业
* */
addCompany() {
this.$refs.businessModal.title='新增'
this.$refs.businessModal.add({})
},
/*
* 接受值和抛出
* */
setCompanyVal(selectedVal) {
let {id, companyName} = selectedVal
this.$emit('change', {id, companyName})
}
},
model: {
prop: 'value',
event: 'change'
}
}
</script>
<style scoped>
</style>
+21 -1
View File
@@ -33,6 +33,7 @@
import Vue from 'vue'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import { getFileAccessHttpUrl } from '@/api/manage'
import {getFileInfo} from '@api/api'
// eslint-disable-next-line
const Base64 = require('js-base64').Base64
@@ -67,6 +68,11 @@
type:[String,Array],
required:false
},
/* 返回文件id*/
returnId:{
type:Boolean,
default:false
},
disabled:{
type:Boolean,
required:false,
@@ -152,7 +158,11 @@
this.picUrl = true
fileList = fileList.map((file) => {
if (file.response) {
file.url = `${file.response.result.id}?token=${Vue.ls.get(ACCESS_TOKEN)}&fullfilename=${file.response.result.fileName}`
if(this.returnId){
file.url = `${file.response.result.id}`
}else {
file.url = `${file.response.result.id}?token=${Vue.ls.get(ACCESS_TOKEN)}&fullfilename=${file.response.result.fileName}`
}
}
return file
})
@@ -217,6 +227,16 @@
close () {
},
getImgUrl(id,name){
return `${id}?token=${Vue.ls.get(ACCESS_TOKEN)}&fullfilename=${name}`
},
getFileInfos(ids){
return new Promise(resolve => {
getFileInfo({id:ids}).then(res => {
resolve(res.result)
})
})
}
},
model: {
prop: 'value',
@@ -222,7 +222,7 @@ export default {
httpAction(httpurl, formData, method).then((res) => {
if (res.success) {
that.$message.success(res.message)
that.$emit('ok')
that.$emit('ok',formData)
that.close()
} else {
that.$message.warning(res.message)
@@ -492,6 +492,7 @@ export default {
* */
handleOk() {
const that = this
that.confirmLoading = true
this.form.validateFields((err, values) => {
if (!err) {
let httpurl = ''
@@ -520,12 +521,12 @@ export default {
httpAction(httpurl, formData, method).then((res) => {
if (res.success) {
that.$message.success(res.message)
that.confirmLoading = false
that.handleCancel()
} else {
that.$message.warning(res.message)
}
}).finally(() => {
that.confirmLoading = false
})
}
})
@@ -64,7 +64,7 @@
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('工作组会议维护')">导出</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('会议管理')">导出</a-button>
<a-button type="danger" icon="delete" @click="batchDel">批量删除</a-button>
</div>
@@ -201,7 +201,7 @@ export default {
],
dateKeyObj: {
beginKey: 'meetingStartTime',
endKey: 'meetingEndtTime'
endKey: 'meetingEndTime'
},
url: {
list: '/meeting/payMeeting/page',
@@ -0,0 +1,227 @@
<template>
<a-form :form="form">
<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 v-decorator="['checkInHotel']">
<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">
<a-form-item label="抵达时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择抵达时间" style="width: 100%;" v-decorator="['arrivalTime']" :trigger-change="true"
date-format="YYYY-MM-DD"/>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="离开时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择离开时间" :disabled-date="disabledEndDate" style="width: 100%;" v-decorator="['departureTime']" :trigger-change="true"
date-format="YYYY-MM-DD"/>
</a-form-item>
</a-col>
</a-row>
<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">
<select-contacts :selected-company="selectedCompany"
placeholder="请选择邮寄联系人"
v-decorator="['postContactId',validatorRules.postContactId]"
:maxLength='50'
ref="selectMailContacts"
@ok="addContactsOk"></select-contacts>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入地址"
:maxLength='50'
v-decorator="[ 'postContactAddress']"></a-input>
</a-form-item>
</a-col>
</a-row>
<div class="item-title">缴费信息</div>
<!-- 选择嘉宾和内部企业不显示缴费方式-->
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24" v-if="identifyType === 2 ">
<a-form-item label="缴费方式" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['payMode',validatorRules.payMode]">
<a-radio :value="1">汇款</a-radio>
<a-radio :value="2">现场</a-radio>
<a-radio :value="2">打包</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="需要发票" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag style="width: 100%" dict-code="invoice_type"
v-decorator="['needInvoice',validatorRules.needInvoice]"
:trigger-change="true"
placeholder="请选择发票类型"></j-dict-select-tag>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="付款凭证" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-image-upload v-decorator="['paymentRecord']" :return-id="true"></j-image-upload>
</a-form-item>
</a-col>
</a-row>
</a-form>
</template>
<script>
import JDate from '@comp/jero/JDate'
import JImageUpload from '@comp/jero/JImageUpload'
import SelectContacts from '@comp/company/SelectContacts'
import pick from 'lodash.pick'
import JDictSelectTag from '@comp/dict/JDictSelectTag'
import moment from 'moment'
export default {
name: 'OtherMeetingForm',
components: {
JDate,
JImageUpload,
SelectContacts,
JDictSelectTag
},
props: {
selectedCompany: {
type: Object
},
// 会议类型
meetingType: {
type: String,
required: false
},
// 身份类型
identifyType: {
type: Number,
required: false,
// 默认为参会人
default: 2
},
// 嘉宾类型
guestType: {
type: Number,
required: false
}
},
data() {
return {
desription: '其他会议的参会情况的表单',
form: this.$form.createForm(this),
labelCol: {
xs: {span: 24},
sm: {span: 6}
},
wrapperCol: {
xs: {span: 24},
sm: {span: 18}
},
remarksLabelCol: {
xs: {span: 24},
sm: {span: 3}
},
remarksWrapperCol: {
xs: {span: 24},
sm: {span: 21}
},
validatorRules: {
postContactId: {
rules: [{required: true, message: '请选择邮寄联系人'}],
validateTrigger: 'change'
},
payMode: {
rules: [{required: true, message: '请选择缴费方式'}],
validateTrigger: 'change'
},
needInvoice: {
rules: [{required: true, message: '请选择发票类型'}],
validateTrigger: 'change'
}
}
}
},
methods: {
moment,
handleOk() {
this.form.validateFields((err, values) => {
if (!err) {
this.$emit('formData', values)
}else {
this.$emit('formData', {stop:true})
}
})
},
/*
* 选择了联系人后给邮寄联系人和地址赋值
* */
setAddressVal(val) {
val = Object.assign({}, {postContactId: val.id, postContactAddress: val.contactAddress})
this.$nextTick(() => {
this.form.setFieldsValue(pick(val, 'postContactId', 'postContactAddress'))
})
},
/*
* 抵达时间禁用
* */
disabledEndDate(endValue) {
const startValueTemp = this.form.getFieldValue('arrivalTime')
const startValue = startValueTemp && moment(startValueTemp ,'YYYY-MM-DD')
if (!endValue || !startValue) {
return false
}
return startValue.valueOf() > endValue.valueOf()
},
addContactsOk() {
}
}
}
</script>
<style scoped lang="less">
@import '~@assets/less/common.less';
.center {
text-align: center;
.submit {
margin-right: 8px;
}
}
.item-title {
padding-left: 40px;
box-sizing: border-box;
height: 46px;
line-height: 46px;
color: #333;
position: relative;
font-size: 16px;
&::before {
position: absolute;
content: "";
width: 10px;
height: 10px;
border-radius: 50%;
background: #069f99;
top: 50%;
margin-top: -5px;
left: 15px;
}
}
</style>
@@ -8,10 +8,10 @@
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="参会企业" :labelCol="labelCol" :wrapperCol="wrapperCol">
<company-select placeholder="请选择参会企业"
v-decorator="['companyId']"
:maxLength='50'>
</company-select>
<add-meeting-company @change="changeCompany" v-decorator="['companyId',validatorRules.companyId]"
placeholder="请选择参会企业"
:maxLength='50'>
</add-meeting-company>
</a-form-item>
</a-col>
</a-row>
@@ -19,21 +19,23 @@
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
<select-contacts :selected-company="selectedCompany"
placeholder="请选择"
v-decorator="['companyContactId']"
placeholder="请选择参会人"
v-decorator="['companyContactId',validatorRules.companyContactId]"
:maxLength='50'
@change="changeContact"
ref="selectMailContacts"
@ok="addContactsOk"></select-contacts>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="手机号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入手机号"
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9]/g,'')}"
:maxLength='11'
disabled
v-decorator="['phone']"></a-input>
v-decorator="['phone',validatorRules.phone]"></a-input>
</a-form-item>
</a-col>
@@ -49,15 +51,16 @@
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="邮箱" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入邮箱"
:maxLength='11'
:maxLength='50'
disabled
v-decorator="[ 'email']"></a-input>
v-decorator="[ 'email',
validatorRules.email]"></a-input>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="身份" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['identify']" @change="changeIdentify">
<a-radio-group v-decorator="['identify',validatorRules.identify]" @change="changeIdentify">
<a-radio :value="1">嘉宾</a-radio>
<a-radio :value="2">参会人</a-radio>
<a-radio :value="3">内部企业</a-radio>
@@ -65,10 +68,10 @@
</a-form-item>
</a-col>
<!--身份选择嘉宾出现且必填-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="identifyType === 1 ">
<!--身份选择嘉宾并且是研讨会议出现且必填-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="identifyType === 1 && meetingType === '3' ">
<a-form-item label="嘉宾类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['guestType']">
<a-radio-group v-decorator="['guestType',validatorRules.guestType]" @change="changeGuestType">
<a-radio :value="1">VIP</a-radio>
<a-radio :value="2">演讲嘉宾</a-radio>
<a-radio :value="3">特邀嘉宾</a-radio>
@@ -78,313 +81,36 @@
</a-col>
</a-row>
<!--个人信息end-->
<div class="center">
<a-button type="primary" @click="nextStep">保存</a-button>
</div>
<!--演讲信息begin-->
<!-- 嘉宾类型是VIP和演讲嘉宾显示-->
<section v-if="meetingType === '3' && (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-input placeholder="请输入演讲题目"
:maxLength='50'
v-decorator="['speechTopic']"></a-input>
</a-form-item>
</a-col>
<!--除开国际研讨会的其他会议的显示-->
<template v-if="meetingType !== '3' ">
<other-meeting-form ref="formother" :selected-company="selectedCompany"
:identify-type="identifyType" @formData="getFormData"></other-meeting-form>
</template>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="演讲ppt" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-upload v-decorator="['speech_ppt']"></j-upload>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="照片" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-image-upload v-decorator="['photo']"></j-image-upload>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :xxl="18" :xl="18" :sm="24">
<a-form-item label="个人简介" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea
placeholder="请输入个人简介"
:auto-size="{ minRows: 3, maxRows: 6 }"
v-decorator="['profile']"
:maxLength='200'
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-col>
</a-row>
</section>
<!--演讲信息end-->
<!--用餐信息begin-->
<!-- 合作伙伴不需要用餐信息 -->
<section v-if="meetingType === '3' && guestType !== 4">
<div class="item-title">用餐信息</div>
<a-row :gutter="24">
<a-col :xl="6" :md="8" :sm="24">
<a-form-item label="是否用餐" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['haveMeals']">
<a-radio :value="1"></a-radio>
<a-radio :value="0"></a-radio>
</a-radio-group>
</a-form-item>
</a-col>
<a-col :xl="6" :md="8" :sm="24">
<a-form-item label="是否回民" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['huiPeople']">
<a-radio :value="1"></a-radio>
<a-radio :value="0"></a-radio>
</a-radio-group>
</a-form-item>
</a-col>
</a-row>
</section>
<!--用餐信息end-->
<!--住店信息begin-->
<section v-if="meetingType === '3' && guestType === 1 ">
<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 v-decorator="['checkInHotel']">
<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">
<a-form-item label="入住酒店时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date v-decorator="['inHotelTime']" placeholder="请选择入住酒店时间"></j-date>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="离店时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date v-decorator="['outHotelTime']" placeholder="请选择离店时间"></j-date>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="房型" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input @change="event => event.target.value = event.target.value.trim()" :maxLength="50" v-decorator="['roomLayout']"
placeholder="请输入房型"></a-input>
</a-form-item>
</a-col>
</a-row>
</section>
<!--住店信息end-->
<!--VIP行程信息begin-->
<!--合作伙伴不显示这个行程信息-->
<section v-if="meetingType === '3' && guestType !== 4 ">
<div class="item-title">VIP行程信息</div>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="是否需要接站" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['pickUp']">
<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">
<a-form-item label="抵达时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择抵达时间" style="width: 100%;" v-decorator="['arrivalTime']" :trigger-change="true"
date-format="YYYY-MM-DD"/>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="到达站" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入到达站"
:maxLength='50'
v-decorator="[ 'destination']"></a-input>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="到达班次" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入到达班次"
:maxLength='50'
v-decorator="[ 'arrivalShift']"></a-input>
</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-radio-group v-decorator="['deliveryStation']">
<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">
<a-form-item label="离开时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择离开时间" style="width: 100%;" v-decorator="['departureTime']" :trigger-change="true"
date-format="YYYY-MM-DD"/>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="离开站" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入离开站"
:maxLength='50'
v-decorator="[ 'departureStation']"></a-input>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="离开班次" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入离开班次"
:maxLength='50'
v-decorator="[ 'departureShift']"></a-input>
</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'
v-decorator="[ 'peer']"></a-input>
</a-form-item>
</a-col>
</a-row>
<!--特邀嘉宾没有备注-->
<a-row :gutter="24" v-if="guestType !== 3">
<a-col :xxl="18" :xl="18" :sm="24">
<a-form-item label="备注" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea
placeholder="请输入备注"
:auto-size="{ minRows: 3, maxRows: 6 }"
v-decorator="['remark']"
:maxLength='200'
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-col>
</a-row>
</section>
<!--VIP行程信息end-->
<!--合作伙伴显示的企业信息begin-->
<section v-if="meetingType === '3' && guestType === 4 ">
<div class="item-title">VIP行程信息</div>
<a-row :gutter="24">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="抵达时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择抵达时间" style="width: 100%;" v-decorator="['arrivalTime']" :trigger-change="true"
date-format="YYYY-MM-DD"/>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="离开时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择离开时间" style="width: 100%;" v-decorator="['departureTime']" :trigger-change="true"
date-format="YYYY-MM-DD"/>
</a-form-item>
</a-col>
</a-row>
</section>
<!--合作伙伴显示的企业信息end-->
<!--除去国际研讨会的行程信息begin-->
<section v-if="identifyType !== 1">
<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 v-decorator="['checkInHotel']">
<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">
<a-form-item label="抵达时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择抵达时间" style="width: 100%;" v-decorator="['arrivalTime']" :trigger-change="true"
date-format="YYYY-MM-DD"/>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="离开时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择离开时间" style="width: 100%;" v-decorator="['departureTime']" :trigger-change="true"
date-format="YYYY-MM-DD"/>
</a-form-item>
</a-col>
</a-row>
</section>
<!--除去国际研讨会的行程信息begin-->
<!--除去国际研讨会的邮寄信息begin-->
<section v-if="identifyType !== 1">
<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">
<select-contacts :selected-company="selectedCompany"
placeholder="请选择"
v-decorator="['postContactId']"
:maxLength='50'
ref="selectMailContacts"
@ok="addContactsOk"></select-contacts>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入地址"
:maxLength='50'
v-decorator="[ 'postContactAddress']"></a-input>
</a-form-item>
</a-col>
</a-row>
</section>
<!--除去国际研讨会的邮寄信息end-->
<!--除去国际研讨会的缴费信息begin-->
<section v-if="identifyType !== 1">
<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 v-decorator="['payMode']">
<a-radio :value="1">汇款</a-radio>
<a-radio :value="2">现场</a-radio>
<a-radio :value="2">打包</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="需要发票" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag style="width: 100%" dict-code="invoice_type" v-decorator="['needInvoice']"
placeholder="请选择发票类型"></j-dict-select-tag>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="付款凭证" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-image-upload v-decorator="['paymentRecord']"></j-image-upload>
</a-form-item>
</a-col>
</a-row>
</section>
<!--除去国际研讨会的缴费信息end-->
<!--国际研讨会参会人与内部企业的显示 默认不展示 -->
<template v-if="meetingType === '3' && identifyType !== 1 && identifyType !== null ">
<other-meeting-form ref="formother" :meeting-type="meetingType" :selected-company="selectedCompany"
:identify-type="identifyType" @formData="getFormData"></other-meeting-form>
</template>
<!-- 国际研讨会身份选择嘉宾 并且是VIP-->
<template v-if="identifyType === 1 && guestType === 1">
<seminar-vip-form ref="seminarVipForm" @formData="getFormData" :identify-type="identifyType" :guest-type="guestType"></seminar-vip-form>
</template>
<!-- 国际研讨会身份选择嘉宾 并且是演讲嘉宾-->
<template v-if="identifyType === 1 && guestType === 2">
<seminar-vip-form ref="seminarVipForm" @formData="getFormData" :guest-type="guestType"></seminar-vip-form>
</template>
<!-- 国际研讨会身份选择嘉宾 并且是特邀嘉宾-->
<template v-if="identifyType === 1 && guestType === 3">
<seminar-vip-form ref="seminarVipForm" @formData="getFormData" :guest-type="guestType"></seminar-vip-form>
</template>
<!-- 国际研讨会身份选择嘉宾 并且是合作伙伴-->
<template v-if="identifyType === 1 && guestType === 4">
<seminar-partner-form ref="seminarPartnerForm" @formData="getFormData"></seminar-partner-form>
</template>
<div class="center">
<a-button class="submit" type="primary" @click="handleOk">确定</a-button>
<a-button class="submit" type="primary" @click="handleOk" v-preventclick>确定</a-button>
<a-button @click="handleCancel">取消</a-button>
</div>
</a-form>
@@ -395,23 +121,24 @@
</template>
<script>
import CompanySelect from '@comp/company/CompanySelect'
import SelectContacts from '@comp/company/SelectContacts'
import JDate from '@comp/jero/JDate'
import JImageUpload from '@comp/jero/JImageUpload'
import JDictSelectTag from '@comp/dict/JDictSelectTag'
import JUpload from '@comp/jero/JUpload'
import OtherMeetingForm from '@views/incomePayments/meetManage/OtherMeetingForm'
import SeminarVipForm from '@views/incomePayments/meetManage/modules/SeminarVipForm'
import SeminarPartnerForm from '@views/incomePayments/meetManage/modules/SeminarPartnerForm'
import AddMeetingCompany from '@comp/company/AddMeetingCompany'
import {getContactsById} from '@api/api'
import {httpAction} from '@api/manage'
import pick from 'lodash.pick'
export default {
name: 'SignUpInfoEdit',
components: {
CompanySelect,
SelectContacts,
JImageUpload,
JDictSelectTag,
JDate,
JUpload
SeminarPartnerForm,
// JDictSelectTag,
OtherMeetingForm,
SeminarVipForm,
AddMeetingCompany
},
data() {
return {
@@ -420,6 +147,7 @@ export default {
confirmLoading: false,
selectedCompany: null,
model: {},
formData:{},
labelCol: {
xs: {span: 24},
sm: {span: 6}
@@ -436,12 +164,43 @@ export default {
xs: {span: 24},
sm: {span: 21}
},
validatorRules: {
companyId: {
rules: [{required: true, message: '请选择参会企业'}],
validateTrigger: 'change'
},
companyContactId: {
rules: [{required: true, message: '请选择参会人'}],
validateTrigger: 'change'
},
phone: {
rules: [{required: true, message: '请输入手机号'}],
validateTrigger: 'blur'
},
email: {
rules: [{required: true, message: '请输入邮箱'}],
validateTrigger: 'blur'
},
identify: {
rules: [{required: true, message: '请选择身份'}],
validateTrigger: 'change'
},
guestType:{
rules: [{required: true, message: '请选择嘉宾类型'}],
validateTrigger: 'change'
}
},
// 身份类型
identifyType: '',
identifyType: null,
// 嘉宾类型
guestType: '',
guestType: null,
// 会议类型
meetingType: ''
meetingType: '',
url:{
add:'/meeting/payMeetingSituation/add',
edit:''
}
}
},
created() {
@@ -452,17 +211,58 @@ export default {
this.$refs.selectContacts.getContactsList()
},
/*
* 保存
* */
nextStep() {
// 保存身份类型 1是VIP 2是演讲嘉宾 3是特邀嘉宾 4是合作伙伴
this.guestType = this.form.getFieldValue('guestType')
},
/*
* 确定
* */
handleOk() {
const that = this
// 其他会议的表单验证
if( this.$refs.formother !== undefined ){
this.$refs.formother.handleOk()
}
// 国际研讨会 VIP 演讲嘉宾 特邀嘉宾 的表单验证
if( this.$refs.seminarVipForm !== undefined ){
this.$refs.seminarVipForm.handleOk()
}
// 国际研讨会的合作伙伴的表单验证
if( this.$refs.seminarPartnerForm !== undefined ){
this.$refs.seminarPartnerForm.handleOk()
}
if(this.formData.stop){
return
}
this.form.validateFields((err, values) => {
if (!err) {
this.confirmLoading = true
let submitData = Object.assign({},values,this.formData)
submitData.companyId = values.companyId.id
console.log(submitData)
let url = ''
if(!this.model.id){
url = this.url.add
}else {
url = this.url.edit
}
let method = 'post'
httpAction(url,submitData,method).then(res => {
if(res.success){
that.$emit('ok')
that.handleCancel()
that.$message.success(res.message)
that.confirmLoading = false
}else {
that.$message.warn(res.message)
}
}).finally( () => {
that.confirmLoading = false
})
}
})
},
/*
* 获取表单的值
* */
getFormData(value){
this.formData = Object.assign({},value)
},
/*
* 取消
@@ -475,7 +275,40 @@ export default {
* */
changeIdentify(e) {
this.identifyType = e.target.value
}
// 切换身份清除上次选择的值
if (e.target.value !== 1) {
this.guestType = null
}
},
/*
* 选择嘉宾类型
* */
changeGuestType(e) {
this.guestType = e.target.value
},
/*
* 选择参会企业
* */
changeCompany(value) {
this.selectedCompany = value
},
/*
* 选择联系人获取信息
* */
changeContact(val) {
const that = this
getContactsById({id: val}).then(res => {
const model = Object.assign({}, res.result)
// 设置手机 邮箱 职务
if (res.success) {
that.form.setFieldsValue(pick(model, 'phone', 'email', 'post'))
}
// 设置邮寄联系人和地址
if(this.$refs.formother !== undefined){
this.$refs.formother.setAddressVal(res.result)
}
})
},
}
}
</script>
@@ -63,6 +63,7 @@
<script>
import SelectContacts from '@comp/company/SelectContacts'
import {httpAction} from '@api/manage'
export default {
name: 'BatchInvocieModal',
@@ -28,6 +28,8 @@
<script>
import SelectPrincipal from '@comp/company/SelectPrincipal'
import {httpAction} from '@api/manage'
export default {
name: 'BatchSetDockerModal',
components:{
@@ -0,0 +1,122 @@
<template>
<a-form :form="form">
<!--合作伙伴显示的企业信息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">
<j-date placeholder="请选择抵达时间" style="width: 100%;" v-decorator="['arrivalTime']"
:trigger-change="true"
show-type="day"
date-format="YYYY-MM-DD"/>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="离开时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择离开时间" style="width: 100%;" v-decorator="['departureTime']"
:disabled-date="disabledEndDate"
:trigger-change="true"
show-type="day"
date-format="YYYY-MM-DD"/>
</a-form-item>
</a-col>
</a-row>
<!--合作伙伴显示的企业信息end-->
</a-form>
</template>
<script>
import JDate from '@comp/jero/JDate'
import moment from 'moment'
export default {
name: 'SeminarPartnerForm',
data() {
return {
desription: '其他会议的参会情况的表单',
form: this.$form.createForm(this),
labelCol: {
xs: {span: 24},
sm: {span: 6}
},
wrapperCol: {
xs: {span: 24},
sm: {span: 18}
},
remarksLabelCol: {
xs: {span: 24},
sm: {span: 3}
},
remarksWrapperCol: {
xs: {span: 24},
sm: {span: 21}
},
selectedCompany: null,
}
},
components: {
JDate,
},
methods:{
moment,
handleOk() {
this.form.validateFields((err, values) => {
if (!err) {
this.$emit('formData', values)
}else {
this.$emit('formData', {stop:true})
}
})
},
/*
* 离开时间禁用
* */
disabledEndDate(endValue) {
const startValueTemp = this.form.getFieldValue('arrivalTime')
const startValue = startValueTemp && moment(startValueTemp ,'YYYY-MM-DD')
if (!endValue || !startValue) {
return false
}
return startValue.valueOf() > endValue.valueOf()
},
}
}
</script>
<style scoped lang="less">
@import '~@assets/less/common.less';
.center {
text-align: center;
.submit {
margin-right: 8px;
}
}
.item-title {
padding-left: 40px;
box-sizing: border-box;
height: 46px;
line-height: 46px;
color: #333;
position: relative;
font-size: 16px;
&::before {
position: absolute;
content: "";
width: 10px;
height: 10px;
border-radius: 50%;
background: #069f99;
top: 50%;
margin-top: -5px;
left: 15px;
}
}
</style>>
@@ -0,0 +1,392 @@
<template>
<a-form :form="form">
<!--演讲信息begin-->
<!-- 特邀嘉宾没有用餐信息-->
<template v-if="guestType !== 3 ">
<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-input placeholder="请输入演讲题目"
:maxLength='50'
v-decorator="['speechTopic']"></a-input>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="演讲ppt" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-upload v-decorator="['speech_ppt']" :return-id="true"></j-upload>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="照片" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-image-upload v-decorator="['photo']" :return-id="true"></j-image-upload>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :xxl="18" :xl="18" :sm="24">
<a-form-item label="个人简介" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea
placeholder="请输入个人简介"
:auto-size="{ minRows: 3, maxRows: 6 }"
v-decorator="['profile']"
:maxLength='200'
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-col>
</a-row>
</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 v-decorator="['haveMealBools',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>
</a-col>
</a-row>
<!--用餐信息end-->
<!--住店信息begin-->
<!-- 特邀嘉宾 演讲嘉宾没有住店信息-->
<template v-if="guestType === 1">
<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 v-decorator="['checkinHotel',validatorRules.checkinHotel]" @change="changeHotel">
<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="inHotelBool">
<a-form-item label="入住酒店时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date v-decorator="['inHotelTime']" :trigger-change="true" show-type="day"
placeholder="请选择入住酒店时间"></j-date>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24" v-if="inHotelBool">
<a-form-item label="离店时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date :disabled-date="disabledEndDate" :trigger-change="true" show-type="day"
v-decorator="['outHotelTime']" placeholder="请选择离店时间"></j-date>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24" v-if="inHotelBool">
<a-form-item label="房型" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input @change="event => event.target.value = event.target.value.trim()" :maxLength="50"
v-decorator="['roomLayout']"
placeholder="请输入房型"></a-input>
</a-form-item>
</a-col>
</a-row>
</template>
<!--住店信息end-->
<!--VIP行程信息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 v-decorator="['pickUp',validatorRules.pickUp]" @change="changePickup">
<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="pickUpBool">
<a-form-item label="抵达时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择抵达时间" style="width: 100%;" v-decorator="['arrivalTime']"
:trigger-change="true"
show-type="day"
date-format="YYYY-MM-DD"/>
</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 placeholder="请输入到达站"
:maxLength='50'
v-decorator="[ 'destination']"></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 placeholder="请输入到达班次"
:maxLength='50'
v-decorator="[ 'arrivalShift']"></a-input>
</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-radio-group v-decorator="['deliveryStation',validatorRules.deliveryStation]" @change="changeSend">
<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="sendBool">
<a-form-item label="离开时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择离开时间" style="width: 100%;" v-decorator="['departureTime']"
:trigger-change="true"
show-type="day"
date-format="YYYY-MM-DD"/>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24" v-if="sendBool">
<a-form-item label="离开站" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入离开站"
:maxLength='50'
v-decorator="[ 'departureStation']"></a-input>
</a-form-item>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24" v-if="sendBool">
<a-form-item label="离开班次" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入离开班次"
:maxLength='50'
v-decorator="[ 'departureShift']"></a-input>
</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'
v-decorator="[ 'peer']"></a-input>
</a-form-item>
</a-col>
</a-row>
<!--特邀嘉宾没有备注-->
<a-row :gutter="24" v-if="guestType!== 3">
<a-col :xxl="18" :xl="18" :sm="24">
<a-form-item label="备注" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea
placeholder="请输入备注"
:auto-size="{ minRows: 3, maxRows: 6 }"
v-decorator="['remark']"
:maxLength='200'
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-col>
</a-row>
<!--VIP行程信息end-->
</a-form>
</template>
<script>
import JDate from '@comp/jero/JDate'
import JImageUpload from '@comp/jero/JImageUpload'
import JUpload from '@comp/jero/JUpload'
import moment from 'moment'
export default {
name: 'SeminarVipForm',
data() {
return {
desription: '其他会议的参会情况的表单',
form: this.$form.createForm(this),
labelCol: {
xs: {span: 24},
sm: {span: 6}
},
wrapperCol: {
xs: {span: 24},
sm: {span: 18}
},
remarksLabelCol: {
xs: {span: 24},
sm: {span: 3}
},
remarksWrapperCol: {
xs: {span: 24},
sm: {span: 21}
},
selectedCompany: null,
// 是否用餐
haveMealBool: false,
// 是否入住酒店
inHotelBool: false,
// 是否送站
sendBool: false,
// 是否接站
pickUpBool: false,
validatorRules: {
haveMealBools: {
rules: [{required: true, message: '请选择是否用餐'}],
validateTrigger: 'change'
},
huiPeople: {
rules: [{required: true, message: '请选择是否回民'}],
validateTrigger: 'change'
},
checkinHotel: {
rules: [{required: true, message: '请选择是否入住酒店'}],
validateTrigger: 'change'
},
pickUp: {
rules: [{required: true, message: '请选择是否接站'}],
validateTrigger: 'change'
},
deliveryStation: {
rules: [{required: true, message: '请选择是否送站'}],
validateTrigger: 'change'
}
}
}
},
props: {
// 会议类型
meetingType: {
type: String,
required: false
},
// 身份类型
identifyType: {
type: Number,
required: false,
// 默认为参会人
default: 2
},
// 嘉宾类型
guestType: {
type: Number,
required: false
}
},
components: {
JDate,
JImageUpload,
JUpload
},
methods: {
moment,
handleOk() {
this.form.validateFields((err, values) => {
if (!err) {
this.$emit('formData', values)
} else {
this.$emit('formData', {stop: true})
}
})
},
/*
* 选择是否用餐
* */
selecthaveMealBools(e) {
if (e.target.value === 1) {
this.haveMealBool = true
} else {
this.haveMealBool = false
}
},
/*
* 选择是否入住酒店
* */
changeHotel(e) {
if (e.target.value === 1) {
this.inHotelBool = true
} else {
this.inHotelBool = false
}
},
/*
* 选择是否送站
* */
changeSend(e) {
if (e.target.value === 1) {
this.sendBool = true
} else {
this.sendBool = false
}
},
/*
* 选择是否接站
* */
changePickup(e) {
if (e.target.value === 1) {
this.pickUpBool = true
} else {
this.pickUpBool = false
}
},
/*
* 离开酒店时间禁用
* */
disabledEndDate(endValue) {
const startValueTemp = this.form.getFieldValue('inHotelTime')
const startValue = startValueTemp && moment(startValueTemp, 'YYYY-MM-DD')
if (!endValue || !startValue) {
return false
}
return startValue.valueOf() > endValue.valueOf()
}
}
}
</script>
<style scoped lang="less">
@import '~@assets/less/common.less';
.center {
text-align: center;
.submit {
margin-right: 8px;
}
}
.item-title {
padding-left: 40px;
box-sizing: border-box;
height: 46px;
line-height: 46px;
color: #333;
position: relative;
font-size: 16px;
&::before {
position: absolute;
content: "";
width: 10px;
height: 10px;
border-radius: 50%;
background: #069f99;
top: 50%;
margin-top: -5px;
left: 15px;
}
}
</style>
@@ -77,7 +77,7 @@
<!-- 操作按钮区域-->
<div class="table-operator">
<a-button type="primary" icon="plus" @click="handleAdd">新增</a-button>
<a-button type="primary" icon="export" @click="handleExportXls('企业管理')">导出</a-button>
<a-button type="primary" icon="export" @click="handleExportXls('工作组会议维护')">导出</a-button>
<a-button type="danger" icon="delete" @click="batchDel">批量删除</a-button>
<a-button type="primary" @click="publishRemind">发布-提醒</a-button>
</div>