[update 海外会议] 对接接口

This commit is contained in:
danshihao
2024-06-25 14:45:11 +08:00
parent 0f886b6df3
commit 1938867db2
8 changed files with 631 additions and 251 deletions
+4 -1
View File
@@ -32,6 +32,8 @@ const getStandardNumberList = (params) => getAction('/meeting/standardsMeeting/g
// 国际研讨会-WASIC-通过会议ID获取关联主题的信息
const getLinkTopics = (params) => getAction('/meeting/internalMeeting/getLinkTopics', params)
// 通过id获取海外会议参会人详细信息
const getSingUpUserInfoOverseas = (params) => getAction('/meeting/overseasSituation/queryById', params)
export {
getUserInfo,
@@ -46,5 +48,6 @@ export {
addGenerateCodeList,
editGenerateCodeList,
getStandardNumberList,
getLinkTopics
getLinkTopics,
getSingUpUserInfoOverseas
}
+1 -1
View File
@@ -73,5 +73,5 @@ export const MeetingTypeEnums = {
committee: { name: '分标委会议', value: '5' },
council: { name: '理事会会议', value: '6' },
draftGroup: { name: '起草会会议', value: '7' },
overseas: { name: '海外会议', value: '9' }
overseas: { name: '海外会议', value: '8' }
}
@@ -1417,8 +1417,8 @@ export default {
// 海外会议
case MeetingTypeEnums.overseas.value:
return {
add: '',
edit: '',
add: '/meeting/overseas/add',
edit: '/meeting/overseas/edit'
}
}
},
@@ -174,7 +174,7 @@
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-row :gutter="24" v-if="!isOverseasMeeting">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="参会单位">
<a-input placeholder="请输入参会单位" v-model="queryParam.companyName" :maxLength='50'></a-input>
@@ -273,6 +273,46 @@
</span>
</a-col>
</a-row>
<!-- 海外会议 -->
<a-row :gutter="24" v-else>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="姓名">
<a-input placeholder="请输入姓名" v-model="queryParam.name" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="职务及单位">
<a-input placeholder="请输入职务及单位" v-model="queryParam.unit" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="国籍">
<a-input placeholder="请输入国籍" v-model="queryParam.nationality" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="地址">
<a-input placeholder="请输入地址" v-model="queryParam.address" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="邮箱">
<a-input placeholder="请输入邮箱" v-model="queryParam.email" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="联系电话">
<a-input placeholder="请输入联系电话" v-model="queryParam.phone" :maxLength='50'></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search"
v-has:[authorCode.search]="'attendance:search'">查询</a-button>
<a-button @click="searchReset" icon="reload" class="reset-button" style="margin-left: 8px">重置</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
@@ -571,6 +611,62 @@ export default {
scopedSlots: { customRender: 'action' }
}
],
// 海外会议表格
overseasMeetingColumns: [
{
title: '序号',
dataIndex: '',
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function (t, r, index) {
return parseInt(index) + 1
}
},
{
title: '姓名',
align: 'center',
dataIndex: 'name',
width: 100
},
{
title: '职务及单位',
align: 'center',
dataIndex: 'unit',
width: 100
},
{
title: '国籍',
align: 'center',
dataIndex: 'nationality',
width: 100
},
{
title: '地址',
align: 'center',
dataIndex: 'address',
width: 300
},
{
title: '邮箱',
align: 'center',
dataIndex: 'email',
width: 200
},
{
title: '联系电话',
align: 'center',
dataIndex: 'phone',
width: 120
},
{
title: '操作',
align: 'center',
fixed: 'right',
width: 300,
scopedSlots: { customRender: 'action' }
}
],
// 权限编码
authorCode: {},
// 其他会议的参会情况的权限编码
@@ -733,13 +829,13 @@ export default {
exportXlsUrl: '/meeting/draftGroupMeetingSituation/exportXls',
importExcelUrl: '/meeting/draftGroupMeetingSituation/importExcel'
},
// 起草组会议的url
// 海外会议的url
overseasMeetingUrl: {
list: '',
delete: '',
deleteBatch: '',
exportXlsUrl: '',
importExcelUrl: ''
list: '/meeting/overseasSituation/page',
delete: '/meeting/overseasSituation/delete',
deleteBatch: '/meeting/overseasSituation/deleteBatch',
exportXlsUrl: '/meeting/overseasSituation/exportXls',
importExcelUrl: '/meeting/overseasSituation/importExcel'
},
// 当前的会议信息详情
currentMeetingInfo: {},
@@ -760,6 +856,10 @@ export default {
},
created() {
// console.log(this.$route,'this.$route this.$route')
// 海外会议处理表格
if (this.isOverseasMeeting) {
this.columns = this.overseasMeetingColumns
}
// 为不同会议的参会情况去设置不同的权限编码
this.setCodeByMeetingType(this.$route.query.meetingType)
// 获取会议详情
@@ -776,7 +876,9 @@ export default {
// 列表表头只有国际研讨会有对接人字段
if (this.currentMeetingInfo.meetingType !== '3') {
let index = this.columns.findIndex(item => item.dataIndex === 'dockName')
this.columns.splice(index, 1)
if (index !== -1) {
this.columns.splice(index, 1)
}
}
// 计算会议费用 会议费用为0 添加参会人不显示邮寄信息与缴费信息 标协会议
if (this.currentMeetingInfo.meetingType === '2' && this.currentMeetingInfo.meetingCostsVip) {
@@ -823,6 +925,10 @@ export default {
this.signInQRCode = await this.generateQRCode(this.signInUrl)
},
computed: {
// 是否海外会议
isOverseasMeeting () {
return this.$route.query.meetingType === MeetingTypeEnums.overseas.value
},
// 标协会议类型
tbMeetingType() {
if (this.currentMeetingInfo.tbMeetingType === '1') {
@@ -956,8 +1062,13 @@ export default {
* 添加参会人
* */
addParticipant() {
let path = '/incomePayments/meetManage/SignUpInfoEdit'
// 海外会议跳转另一个页面
if (this.isOverseasMeeting) {
path = '/incomePayments/meetManage/SignUpInfoEditOverseas'
}
this.$router.push({
path: '/incomePayments/meetManage/SignUpInfoEdit',
path,
query: {
meetingType: this.currentMeetingInfo.meetingType,
meetingId: this.$route.query.id,
@@ -969,8 +1080,13 @@ export default {
* 编辑参会人
* */
handleEdit(record) {
let path = '/incomePayments/meetManage/SignUpInfoEdit'
// 海外会议跳转另一个页面
if (this.isOverseasMeeting) {
path = '/incomePayments/meetManage/SignUpInfoEditOverseas'
}
this.$router.push({
path: '/incomePayments/meetManage/SignUpInfoEdit',
path,
query: {
id: record.id,
meetingId: this.$route.query.id,
@@ -1164,6 +1280,10 @@ export default {
case '7':
this.authorCode = Object.assign({}, this.draftGroupMeetingCode)
break
// 海外会议
case MeetingTypeEnums.overseas.value:
this.authorCode = Object.assign({}, this.overseasMeetingCode)
break
}
}
}
@@ -3,7 +3,7 @@
<page-header-title :is-level-one="false" :level-two-title="title"></page-header-title>
<a-card :bordered="false">
<a-spin :spinning="confirmLoading">
<a-form :form="form" v-if="!isOverseasMeeting">
<a-form :form="form">
<!--个人信息begin-->
<div class="item-title">个人信息</div>
<a-row :gutter="24">
@@ -153,133 +153,6 @@
</a-form-item>
</a-col>
</a-row>
<div class="center">
<a-button class="submit" type="primary" @click="handleOk" v-preventclick>确定</a-button>
<a-button @click="handleCancel">取消</a-button>
</div>
</a-form>
<!-- 海外会议单独的表单 -->
<a-form :form="form" v-else>
<!-- 海外会议的表单 -->
<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-image-upload v-decorator="['photo',overseasRules.photo]" :return-id="true"></j-image-upload>
</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="['name',overseasRules.name]"></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="['unit',overseasRules.unit]"></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="['international',overseasRules.international]"></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="['address',overseasRules.address]"></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="['email',overseasRules.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-input placeholder="请输入联系电话"
:maxLength='50'
v-decorator="['phone',overseasRules.phone]"></a-input>
</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 v-decorator="['needVisa',overseasRules.needVisa]"
:triggerChange="true"
placeholder="请选择是否需要签证"
@change="changeNeedVisa"
type="radio"
dictCode="yn"/>
</a-form-item>
</a-col>
<template v-if="isNeedVisa">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="外文姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入外文姓名"
:maxLength='50'
v-decorator="['foreignName',overseasRules.foreignName]"></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="['sex',overseasRules.sex]"></a-input>
</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="['birthday',overseasRules.birthday]"
: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">
<a-input placeholder="请输入国籍"
:maxLength='50'
v-decorator="['nationality',overseasRules.nationality]"></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="['passportNo',overseasRules.passportNo]"></a-input>
</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="['entryAndExitDate',overseasRules.entryAndExitDate]"
: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">
<a-input placeholder="请输入办理签证使领馆"
:maxLength='50'
v-decorator="['embassiesAndConsulates',overseasRules.embassiesAndConsulates]"></a-input>
</a-form-item>
</a-col>
</template>
</a-row>
<div class="center">
<a-button class="submit" type="primary" @click="handleOk" v-preventclick>确定</a-button>
<a-button @click="handleCancel">取消</a-button>
@@ -304,16 +177,12 @@ import {httpAction} from '@api/manage'
import pick from 'lodash.pick'
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
import { queryCompanyInfoById } from '../../../api/api'
import {LinkTopicsEnums, MeetingTypeEnums, YesOrNoEnums} from '../../../enums/commonEnums'
import {LinkTopicsEnums, MeetingTypeEnums} from '../../../enums/commonEnums'
import WasicTopicData from './modules/wasicStaticData'
import JImageUpload from '@comp/jero/JImageUpload'
import JDate from '@comp/tools/JDate'
export default {
name: 'SignUpInfoEdit',
components: {
JDate,
JImageUpload,
SelectContacts,
SeminarPartnerForm,
// JDictSelectTag,
@@ -434,8 +303,8 @@ export default {
},
// 海外会议的url
overseasMeetingUrl: {
add: '',
edit: ''
add: '/meeting/overseasSituation/add',
edit: '/meeting/overseasSituation/edit'
},
title:'添加参会人',
// 当前参会企业是否是内部企业
@@ -445,74 +314,7 @@ export default {
// 可选会议名称的数组
linkTopicsOptionArr: [],
// WASIC可选会议的数组-前端写死
showTopicsArr: [...WasicTopicData],
/*海外会议start*/
// 是否需要签证
isNeedVisa: false,
// 海外会议表单校验
overseasRules: {
photo: {
rules: [{required: true, message: '请上传照片'}],
validateTrigger: 'change'
},
name: {
rules: [{required: true, message: '请输入姓名'}],
validateTrigger: 'blur'
},
unit: {
rules: [{required: true, message: '请输入职务及单位'}],
validateTrigger: 'blur'
},
international: {
rules: [{required: true, message: '请输入国际'}],
validateTrigger: 'blur'
},
address: {
rules: [{required: true, message: '请输入地址'}],
validateTrigger: 'blur'
},
email: {
rules: [{required: true, message: '请输入邮箱'}],
validateTrigger: 'blur'
},
phone: {
rules: [{required: true, message: '请输入联系电话'}],
validateTrigger: 'blur'
},
needVisa: {
rules: [{required: true, message: '请选择是否需要签证'}],
validateTrigger: 'change'
},
foreignName: {
rules: [{required: true, message: '请输入外文姓名'}],
validateTrigger: 'blur'
},
sex: {
rules: [{required: true, message: '请输入性别'}],
validateTrigger: 'blur'
},
birthday: {
rules: [{required: true, message: '请输入选择日期'}],
validateTrigger: 'change'
},
nationality: {
rules: [{required: true, message: '请输入国籍'}],
validateTrigger: 'blur'
},
passportNo: {
rules: [{required: true, message: '请输入护照号码'}],
validateTrigger: 'blur'
},
entryAndExitDate: {
rules: [{required: true, message: '请选择出入境日期'}],
validateTrigger: 'change'
},
embassiesAndConsulates: {
rules: [{required: true, message: '请输入办理签证使领馆'}],
validateTrigger: 'blur'
},
}
/*海外会议end*/
showTopicsArr: [...WasicTopicData]
}
},
created() {
@@ -538,10 +340,6 @@ export default {
},
computed:{
// 是否海外会议,报名信息调整
isOverseasMeeting () {
return this.meetingType + '' === MeetingTypeEnums.overseas.value
},
// eslint-disable-next-line
url() {
switch (this.$route.query.meetingType) {
@@ -566,14 +364,6 @@ export default {
},
},
methods: {
// 是否需要签证改变
changeNeedVisa (val) {
if (val + '' === YesOrNoEnums.no.value) {
this.isNeedVisa = true
} else {
this.isNeedVisa = false
}
},
// 验证选择会议名称的情况
checkChoiceTopic(rules, value, callback) {
console.log(value)
@@ -675,13 +465,6 @@ export default {
if(this.model.id){
this.title = '编辑参会人'
}
// 海外会议回显单独处理
if (this.isOverseasMeeting) {
this.$nextTick(() => {
this.form.setFieldsValue(this.model)
})
return
}
// 设置编辑的显示隐藏状态
this.identifyType = this.model.identity
this.guestType = this.model.guestType ? this.model.guestType : null
@@ -815,9 +598,7 @@ export default {
if(submitData.companyName) {
submitData.companyName = (submitData.companyName || '').replaceAll(' (未审核)','').replaceAll(' (未审核)','')
}
if (values.companyId) {
submitData.companyId = values.companyId.id
}
submitData.companyId = values.companyId.id
// 会议id
submitData.meetingId = this.$route.query.meetingId
// 会议类型
@@ -0,0 +1,475 @@
<template>
<div>
<page-header-title :is-level-one="false" :level-two-title="title"></page-header-title>
<a-card :bordered="false">
<a-spin :spinning="confirmLoading">
<!-- 海外会议单独的表单 -->
<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">
<j-image-upload v-decorator="['photo',validatorRules.photo]" :return-id="true"></j-image-upload>
</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="['name',validatorRules.name]"></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="['unit',validatorRules.unit]"></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="['nationality',validatorRules.nationality]"></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="['address',validatorRules.address]"></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="['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-input placeholder="请输入联系电话"
:maxLength='50'
v-decorator="['phone',validatorRules.phone]"></a-input>
</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 v-decorator="['needVisa',validatorRules.needVisa]"
:triggerChange="true"
placeholder="请选择是否需要签证"
@change="changeNeedVisa"
type="radio"
dictCode="yn"/>
</a-form-item>
</a-col>
<template v-if="isNeedVisa">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="外文姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入外文姓名"
:maxLength='50'
v-decorator="['foreignName',validatorRules.foreignName]"></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="['sex',validatorRules.sex]"></a-input>
</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="['birthday',validatorRules.birthday]"
: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">
<a-input placeholder="请输入护照号码"
:maxLength='50'
v-decorator="['passportNo',validatorRules.passportNo]"></a-input>
</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="['entryDate',validatorRules.entryDate]"
: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="['exitDate',validatorRules.exitDate]"
: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">
<a-input placeholder="请输入办理签证使领馆"
:maxLength='50'
v-decorator="['embassiesAndConsulates',validatorRules.embassiesAndConsulates]"></a-input>
</a-form-item>
</a-col>
</template>
</a-row>
<div class="center">
<a-button class="submit" type="primary" @click="handleOk" v-preventclick>确定</a-button>
<a-button @click="handleCancel">取消</a-button>
</div>
</a-form>
</a-spin>
</a-card>
</div>
</template>
<script>
import {getMeetInfoById, getSingUpUserInfoOverseas} from '@api/incomeMeetingApi'
import {httpAction} from '@api/manage'
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
import {LinkTopicsEnums, MeetingTypeEnums, YesOrNoEnums} from '../../../enums/commonEnums'
import JImageUpload from '@comp/jero/JImageUpload'
import JDate from '@comp/tools/JDate'
export default {
name: 'SignUpInfoEdit',
components: {
JDate,
JImageUpload,
PageHeaderTitle
},
data() {
return {
MeetingTypeEnums,
description: '海外会议报名信息编辑页',
form: this.$form.createForm(this),
confirmLoading: false,
model: {},
formData:{},
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: {
photo: {
rules: [{required: true, message: '请上传照片'}],
validateTrigger: 'change'
},
name: {
rules: [{required: true, message: '请输入姓名'}],
validateTrigger: 'blur'
},
unit: {
rules: [{required: true, message: '请输入职务及单位'}],
validateTrigger: 'blur'
},
international: {
rules: [{required: true, message: '请输入国际'}],
validateTrigger: 'blur'
},
address: {
rules: [{required: true, message: '请输入地址'}],
validateTrigger: 'blur'
},
email: {
rules: [{required: true, message: '请输入邮箱'}],
validateTrigger: 'blur'
},
phone: {
rules: [{required: true, message: '请输入联系电话'}],
validateTrigger: 'blur'
},
needVisa: {
rules: [{required: true, message: '请选择是否需要签证'}],
validateTrigger: 'change'
},
foreignName: {
rules: [{required: true, message: '请输入外文姓名'}],
validateTrigger: 'blur'
},
sex: {
rules: [{required: true, message: '请输入性别'}],
validateTrigger: 'blur'
},
birthday: {
rules: [{required: true, message: '请输入选择日期'}],
validateTrigger: 'change'
},
nationality: {
rules: [{required: true, message: '请输入国籍'}],
validateTrigger: 'blur'
},
passportNo: {
rules: [{required: true, message: '请输入护照号码'}],
validateTrigger: 'blur'
},
entryDate: {
rules: [{required: true, message: '请选择入境日期'}],
validateTrigger: 'change'
},
exitDate: {
rules: [{required: true, message: '请选择出境日期'}],
validateTrigger: 'change'
},
embassiesAndConsulates: {
rules: [{required: true, message: '请输入办理签证使领馆'}],
validateTrigger: 'blur'
}
},
// 会议类型
meetingType: '',
// 当前会议的信息
currentMeetingInfo:{},
url:{
add: '/meeting/overseasSituation/add',
edit: '/meeting/overseasSituation/edit'
},
title:'添加参会人',
// 是否需要签证
isNeedVisa: false
}
},
created() {
this.meetingType = this.$route.query.meetingType
// 参会情况页面判断的是否会议费用为0 true 为0
if(this.$route.query.costBool === 'true'){
this.meetingCostBool = true
}else if(this.$route.query.costBool === 'false'){
this.meetingCostBool = false
}
if(this.$route.query.id){
getSingUpUserInfoOverseas({id: this.$route.query.id}).then(res => {
if(res.success) {
this.edit(res.result)
}
})
}
//获取 会议信息
if(this.$route.query.meetingId){
this.queryMeetingInfo(this.$route.query.meetingId)
}
},
computed:{
// 是否海外会议,报名信息调整
isOverseasMeeting () {
return this.meetingType + '' === MeetingTypeEnums.overseas.value
},
// eslint-disable-next-line
url() {
switch (this.$route.query.meetingType) {
case '1':
return this.workGroupMeetingUrl
case '2':
return this.standardsMeetingUrl
case '3':
return this.internalMeetingUrl
case '4':
return this.otherMeetingUrl
case '5':
return this.committeeMeetingUrl
case '6':
return this.councilMeetingUrl
case '7':
return this.draftGroupMeetingUrl
// 海外会议
case MeetingTypeEnums.overseas.value:
return this.overseasMeetingUrl
}
},
},
methods: {
// 是否需要签证改变
changeNeedVisa (val) {
if (val + '' === YesOrNoEnums.yes.value) {
this.isNeedVisa = true
} else {
this.isNeedVisa = false
}
},
// 验证选择会议名称的情况
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()
}
}
},
/*
* 编辑
* */
async edit(record){
this.form.resetFields()
this.model = Object.assign({},record)
if(this.model.id){
this.title = '编辑参会人'
}
// 海外会议回显单独处理
this.changeNeedVisa(this.model.needVisa)
this.$nextTick(() => {
this.form.setFieldsValue(this.model)
})
},
/*
* 确定
* */
handleOk() {
const that = this
this.form.validateFields((err, values) => {
if (!err) {
this.confirmLoading = true
let submitData = Object.assign({},values,this.formData)
// 会议id
submitData.meetingId = this.$route.query.meetingId
// 会议类型
submitData.meetingType = this.$route.query.meetingType
console.log(submitData)
let url = ''
if(!this.model.id){
url = this.url.add
}else {
url = this.url.edit
// 编辑的时候需要传入id
submitData.id = this.model.id
}
// that.confirmLoading = false
// return
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)
},
/*
* 取消
* */
handleCancel() {
this.$router.go(-1)
},
/**
* @Description 通过会议id获取会议信息
* @Date 2021-11-29
* @param meetingId 会议id
* @author fac
* */
queryMeetingInfo(meetingId){
this.currentMeetingInfo = {}
getMeetInfoById({id: meetingId}).then(res => {
if(res.success){
this.currentMeetingInfo = res.result
}
})
}
}
}
</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;
}
}
// 国际研讨会-关联会议 多选样式的修改
.meeting-form-multi-select{
.topic-title{
padding: 10px 0;
}
/deep/.ant-checkbox-wrapper + .ant-checkbox-wrapper {
margin-left: 0!important;
}
/deep/ .ant-checkbox-wrapper,
/deep/ .ant-radio-wrapper{
margin-right: 8px;
display: block;
}
}
.radio-div{
border-top: 1px solid rgba(0, 0, 0, 0.2);
padding-top: 10px;
margin-top: 10px;
}
</style>
@@ -61,6 +61,7 @@ import { ACCESS_TOKEN } from '../../../../store/mutation-types'
import { Modal } from 'ant-design-vue'
import store from '@/store'
import { isExternalTerminal } from '../../../../utils/util'
import {MeetingTypeEnums} from '@/enums/commonEnums'
const FILE_TYPE_ALL = 'all'
const columns = [
@@ -208,6 +209,12 @@ export default {
uploadFile: '/meeting/draftGroupMeeting/uploadFile',
uploadCouncilFile: '/meeting/draftGroupMeeting/uploadCouncilFile',
}
// 海外会议
case MeetingTypeEnums.overseas.value:
return {
uploadFile: '/meeting/overseas/uploadFile',
uploadCouncilFile: '/meeting/overseas/uploadCouncilFile',
}
}
},
handleOk() {
@@ -74,7 +74,7 @@
<a-button type="primary" icon="download" @click="handleExportXls('海外会议')" v-has="'overseasMeeting:export'">导出
</a-button>
<a-button type="danger" icon="delete" @click="batchDel" v-has="'overseasMeeting:batchDel'">批量删除</a-button>
<a-button @click="releaseMeeing" type="primary" v-has="'overseasMeeting:release'">发布</a-button>
<a-button @click="releaseMeeing" type="primary" v-has="'overseasMeeting:publish'">发布</a-button>
</div>
<!-- table区域-begin -->
@@ -230,21 +230,15 @@ export default {
endKey: 'meetingEndTime'
},
url: {
list: '/meeting/payMeeting/queryMeetingSummary',
delete: '',
deleteBatch: '',
exportXlsUrl: '',
importExcelUrl: '',
releaseMeeingUrl: ''// 发布会议的接口
list: '/meeting/overseas/page',
delete: '/meeting/overseas/delete',
deleteBatch: '/meeting/overseas/deleteBatch',
exportXlsUrl: '/meeting/overseas/exportXls',
releaseMeeingUrl: '/meeting/overseas/publishReminder'// 发布会议的接口
},
disableMixinCreated: true
}
},
computed: {
importExcelUrl: function () {
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
},
},
created() {
this.filters.meetingType = MeetingTypeEnums.overseas.value
this.loadData(1)