472 lines
16 KiB
Vue
472 lines
16 KiB
Vue
<template>
|
|
<div>
|
|
<page-header-title :is-level-one="false" :level-two-title="$route.query.meetingName"></page-header-title>
|
|
<a-card :bordered="false">
|
|
<div class="part-title">
|
|
<div class="part-title-text">会议信息</div>
|
|
</div>
|
|
<a-row>
|
|
<a-col :xxl="8" :xl="12" :sm="24">
|
|
<label class="label">会议名称:</label><span> {{ currentMeetingInfo.meetingName }}</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24">
|
|
<label>会议类型:</label><span> {{ meetingType }}</span>
|
|
</a-col>
|
|
<!--标协会议类型-->
|
|
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType === '2' ">
|
|
<label>标协会议类型:</label><span> {{ tbMeetingType }}</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24">
|
|
<label>负责人:</label><span> {{ currentMeetingInfo.directorName }}</span>
|
|
</a-col>
|
|
<!--工作组会议-->
|
|
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType === '1' ">
|
|
<label>工作组:</label><span> {{ currentMeetingInfo.workingGroupName }}</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24">
|
|
<label>手机号:</label><span> {{ currentMeetingInfo.directorPhone }}</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24">
|
|
<label>召开时间:</label><span> {{ currentMeetingInfo.startTime + '~' + currentMeetingInfo.endTime }}</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24">
|
|
<label>年份:</label><span> {{ currentMeetingInfo.particularYear }}</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24">
|
|
<label>报名截止时间:</label><span> {{ currentMeetingInfo.registerDeadline }}</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24">
|
|
<label>召开地点:</label><span> {{ currentMeetingInfo.venue + '/' + currentMeetingInfo.address }}</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24">
|
|
<label>会议费用:</label><span> {{ currentMeetingInfo.meetingCosts }} 元/人</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType === '2' ">
|
|
<label>会议费用(标协会员):</label><span> {{ currentMeetingInfo.meetingCostsVip }} 元/人</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24">
|
|
<label>预计参加人数:</label><span> {{ currentMeetingInfo.estimatedNumber }}</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType === '2' ">
|
|
<label>酒店名称:</label><span> {{ currentMeetingInfo.hotelName }}</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType === '2' ">
|
|
<label>酒店地址:</label><span> {{ currentMeetingInfo.hotelAddress }}</span>
|
|
</a-col>
|
|
<!-- 国际研讨会的邀请码-->
|
|
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType ==='3' ">
|
|
<label>VIP邀请码:</label><span> {{ currentMeetingInfo.vipInvitationCode }}</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType ==='3' ">
|
|
<label>演讲嘉宾邀请码:</label><span> {{ currentMeetingInfo.speakerInvitationCode }}</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType ==='3' ">
|
|
<label>特邀嘉宾邀请码:</label><span> {{ currentMeetingInfo.guestInvitationCode }}</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType ==='3' ">
|
|
<label>合作伙伴邀请码:</label><span> {{ currentMeetingInfo.cooperativeInvitationCode }}</span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24">
|
|
<label>会议通知:</label><span></span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24">
|
|
<label>报名链接:</label><span></span>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24">
|
|
<label>报名二维码:</label><img alt="报名二维码"/>
|
|
</a-col>
|
|
<a-col :xxl="8" :xl="12" :sm="24">
|
|
<label>签到二维码:</label><img alt="签到二维码"/>
|
|
</a-col>
|
|
</a-row>
|
|
<a-row v-show="currentMeetingInfo.meetingType === '2' ">
|
|
<label class="label">酒店联系人及手机号: </label><span class="content" v-for="(item,index) of currentMeetingInfo.hotelContactsList" :key="index">{{item.hotelContacts+':' + item.hotelContactsPhone + ' '}}</span>
|
|
</a-row>
|
|
<a-row>
|
|
<label class="label">会议内容: </label><span class="content"> {{ currentMeetingInfo.meetingContent }}</span>
|
|
</a-row>
|
|
<a-row>
|
|
<label class="label">备注: </label><span class="content"> {{ currentMeetingInfo.remark }}</span>
|
|
</a-row>
|
|
<div class="part-title">
|
|
<div class="part-title-text">参会人员信息</div>
|
|
</div>
|
|
<!-- 查询区域 -->
|
|
<div class="table-page-search-wrapper">
|
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
|
<a-row :gutter="24">
|
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
|
<a-form-item label="参会单位">
|
|
<a-input placeholder="请输入参会单位" v-model="queryParam.projectName"></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.projectName"></a-input>
|
|
</a-form-item>
|
|
</a-col>
|
|
|
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
|
<a-form-item label="审核">
|
|
<j-dict-select-tag v-model="queryParam.audit" placeholder="请选择"
|
|
dictCode="signup_status"/>
|
|
</a-form-item>
|
|
</a-col>
|
|
|
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
|
<a-form-item label="签到">
|
|
<j-dict-select-tag v-model="queryParam.audit" placeholder="请选择"
|
|
dictCode="signin_status"/>
|
|
</a-form-item>
|
|
</a-col>
|
|
|
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
|
<a-form-item label="来款年份">
|
|
<j-year-date style="width:100%" placeholder="请选择来款年份" v-model="queryParam.particularYear"></j-year-date>
|
|
</a-form-item>
|
|
</a-col>
|
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
|
<a-form-item label="身份">
|
|
<j-dict-select-tag v-model="queryParam.identify" placeholder="请选择身份"
|
|
dictCode="meet_identify_type"/>
|
|
</a-form-item>
|
|
</a-col>
|
|
|
|
<a-col :xl="6" :lg="7" :md="8" :sm="24" v-if="queryParam.identify === '1' ">
|
|
<a-form-item label="嘉宾类型">
|
|
<j-dict-select-tag v-model="queryParam.guest" placeholder="请选择身份"
|
|
dictCode="guest_type"/>
|
|
</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">查询</a-button>
|
|
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
|
|
</span>
|
|
</a-col>
|
|
</a-row>
|
|
</a-form>
|
|
</div>
|
|
<!-- 查询区域-END -->
|
|
|
|
<!-- 操作按钮区域 -->
|
|
<div class="table-operator">
|
|
<a-button type="primary" icon="import" @click="importParticipant">导入参会人</a-button>
|
|
<a-button type="primary" icon="plus" @click="addParticipant">添加参会人</a-button>
|
|
<a-button type="primary" icon="download" @click="handleExportXls('会员项目')">导出</a-button>
|
|
<a-button type="danger" icon="delete" @click="batchDel">批量删除</a-button>
|
|
<a-button type="primary" @click="batchInvoice">合并开票</a-button>
|
|
<a-button type="primary" @click="batchSetDocker">设置对接人</a-button>
|
|
</div>
|
|
|
|
<!-- table区域-begin -->
|
|
<div>
|
|
<a-table
|
|
ref="table"
|
|
size="middle"
|
|
bordered
|
|
rowKey="id"
|
|
:columns="columns"
|
|
:dataSource="dataSource"
|
|
:pagination="ipagination"
|
|
:loading="loading"
|
|
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
|
class="j-table-force-nowrap"
|
|
@change="handleTableChange">
|
|
|
|
<template slot="htmlSlot" slot-scope="text,record">
|
|
<div class="primary-color" @click="openDetailModal(record)">参会单位</div>
|
|
</template>
|
|
|
|
<template slot="text" slot-scope="text">
|
|
<j-ellipsis v-if="text" :value="text" :length="20"></j-ellipsis>
|
|
<span v-else></span>
|
|
</template>
|
|
<span slot="action" slot-scope="text, record" class="action-span-cell">
|
|
<a @click="handleAudit(record)">审核</a>
|
|
<a @click="handleEdit(record)">编辑</a>
|
|
<a @click="handleDelete(record.id)">删除</a>
|
|
</span>
|
|
</a-table>
|
|
</div>
|
|
<import-participant-modal ref="importParticipantModal" @ok="modalFormOk"></import-participant-modal>
|
|
<batch-invocie-modal ref="batchInvoiceModal" @ok="modalFormOk"></batch-invocie-modal>
|
|
<batch-set-docker-modal ref="batchSetDockerModal" @ok="modalFormOk"></batch-set-docker-modal>
|
|
<project-detail-modal ref="projectDetailModal"></project-detail-modal>
|
|
<audit-modal ref="auditModal" @ok="modalFormOk"></audit-modal>
|
|
</a-card>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import {JeroListMixin} from '@/mixins/JeroListMixin'
|
|
import {mixinDevice} from '@/utils/mixin'
|
|
import {getMeetInfoById} from '@api/incomeMeetingApi'
|
|
import JYearDate from '@comp/jero/JYearDate'
|
|
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
|
import ImportParticipantModal from '@views/incomePayments/meetManage/modules/ImportParticipantModal'
|
|
import BatchInvocieModal from '@views/incomePayments/meetManage/modules/BatchInvocieModal'
|
|
import BatchSetDockerModal from '@views/incomePayments/meetManage/modules/BatchSetDockerModal'
|
|
import ProjectDetailModal from '@comp/ProjectDetailModal'
|
|
import AuditModal from '@views/incomePayments/meetManage/modules/AuditModal'
|
|
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
|
|
|
|
|
export default {
|
|
name: 'Attendance',
|
|
mixins: [JeroListMixin, mixinDevice],
|
|
components: {
|
|
JYearDate,
|
|
JDictSelectTag,
|
|
ImportParticipantModal,
|
|
BatchInvocieModal,
|
|
BatchSetDockerModal,
|
|
ProjectDetailModal,
|
|
AuditModal,
|
|
PageHeaderTitle
|
|
},
|
|
data() {
|
|
return {
|
|
description: '参会情况',
|
|
columns: [
|
|
{
|
|
title: '序号',
|
|
dataIndex: '',
|
|
key: 'rowIndex',
|
|
width: 60,
|
|
align: 'center',
|
|
customRender: function (t, r, index) {
|
|
return parseInt(index) + 1
|
|
}
|
|
},
|
|
{
|
|
title: '参会单位',
|
|
align: 'center',
|
|
dataIndex: '',
|
|
scopedSlots: {customRender: 'htmlSlot'}
|
|
},
|
|
{
|
|
title: '参会人员',
|
|
align: 'center',
|
|
dataIndex: '',
|
|
},
|
|
{
|
|
title: '应收金额',
|
|
align: 'center',
|
|
dataIndex: ''
|
|
},
|
|
{
|
|
title: '实收金额',
|
|
align: 'center',
|
|
dataIndex: ''
|
|
},
|
|
{
|
|
title: '缴费方式',
|
|
align: 'center',
|
|
dataIndex: ''
|
|
},
|
|
{
|
|
title: '是否签到',
|
|
align: 'center',
|
|
dataIndex: ''
|
|
},
|
|
{
|
|
title: '打包',
|
|
align: 'center',
|
|
dataIndex: ''
|
|
},
|
|
{
|
|
title: '需要发票',
|
|
align: 'center',
|
|
dataIndex: ''
|
|
},
|
|
{
|
|
title: '到账',
|
|
align: 'center',
|
|
dataIndex: ''
|
|
},
|
|
{
|
|
title: '开票',
|
|
align: 'center',
|
|
dataIndex: ''
|
|
},
|
|
{
|
|
title: '邮寄',
|
|
align: 'center',
|
|
dataIndex: ''
|
|
},
|
|
{
|
|
title: '对接人',
|
|
align: 'center',
|
|
dataIndex: ''
|
|
},
|
|
{
|
|
title: '操作',
|
|
align: 'center',
|
|
scopedSlots: {customRender: 'action'}
|
|
},
|
|
],
|
|
url: {
|
|
list: '/jero/memberProject/page',
|
|
delete: '/jero/memberProject/delete',
|
|
deleteBatch: '/jero/memberProject/deleteBatch',
|
|
exportXlsUrl: '/jero/memberProject/exportXls',
|
|
importExcelUrl: 'jero/memberProject/importExcel',
|
|
},
|
|
// 当前的会议信息详情
|
|
currentMeetingInfo: {},
|
|
meetingType: '',
|
|
}
|
|
},
|
|
created() {
|
|
// 获取会议详情
|
|
const param = {
|
|
id: this.$route.query.id
|
|
}
|
|
getMeetInfoById(param).then(res => {
|
|
if (res.success) {
|
|
console.log(res.result)
|
|
this.currentMeetingInfo = Object.assign({}, res.result)
|
|
// 转化会议类型
|
|
this.meetingType = this.generateMeetingType(this.currentMeetingInfo.meetingType)
|
|
}
|
|
})
|
|
},
|
|
computed:{
|
|
tbMeetingType() {
|
|
if(this.currentMeetingInfo.tbMeetingType === '1'){
|
|
return '标准宣贯'
|
|
}
|
|
if(this.currentMeetingInfo.tbMeetingType === '2'){
|
|
return '学习培训'
|
|
}else {
|
|
return ''
|
|
}
|
|
}
|
|
},
|
|
methods: {
|
|
/*
|
|
* 审核
|
|
* */
|
|
handleAudit(record) {
|
|
this.$refs.auditModal.open(record)
|
|
},
|
|
/*
|
|
* 导入参会人
|
|
* */
|
|
importParticipant() {
|
|
this.$refs.importParticipantModal.open()
|
|
this.$refs.importParticipantModal.title = '导入参会人'
|
|
},
|
|
/*
|
|
* 添加参会人
|
|
* */
|
|
addParticipant() {
|
|
this.$router.push({
|
|
path: '/incomePayments/meetManage/SignUpInfoEdit'
|
|
})
|
|
},
|
|
/*
|
|
* 合并开票
|
|
* */
|
|
batchInvoice() {
|
|
if (this.selectionRows.length === 0) {
|
|
this.$message.warn('请选择一条记录')
|
|
return
|
|
}
|
|
// 只能选择相同的单位进行合并开票
|
|
if (this.selectionRows.length > 0) {
|
|
// 一个数据不做判断
|
|
if (this.selectionRows.length === 1) {
|
|
// 打开模态框
|
|
this.$refs.batchInvoiceModal.open()
|
|
} else {
|
|
let initName = this.selectionRows[0].name
|
|
// 单位判重
|
|
let flag = this.selectionRows.some(item => {
|
|
return item.name !== initName
|
|
})
|
|
if (flag) {
|
|
// flag为true 说明有单位不一样
|
|
this.$message.warn('请选择同一企业的参会人进行开票')
|
|
return
|
|
} else {
|
|
// 打开模态框 要传一个参数
|
|
this.$refs.batchInvoiceModal.open()
|
|
}
|
|
}
|
|
}
|
|
},
|
|
/*
|
|
* 设置对接人 只有研讨会 会议才可以设置
|
|
* */
|
|
batchSetDocker() {
|
|
if (this.selectionRows.length === 0) {
|
|
this.$message.warn('请选择一条记录')
|
|
return
|
|
}
|
|
let flag = this.selectionRows.some(item => {
|
|
return item.meetingType !== 3
|
|
})
|
|
if (flag) {
|
|
this.$message.warn('只有研讨会议才可设置对接人')
|
|
return
|
|
} else {
|
|
// 打开模态框
|
|
this.$refs.batchSetDockerModal.open()
|
|
}
|
|
},
|
|
/*
|
|
* 打开项目详情
|
|
* */
|
|
openDetailModal(record) {
|
|
this.$refs.projectDetailModal.open(record)
|
|
},
|
|
/*
|
|
* 会议类型 1 工作组会议 2 标协会议 3国际研讨会 4 其他会议
|
|
* */
|
|
generateMeetingType(val) {
|
|
switch (val) {
|
|
case '1':
|
|
return '工作组会议'
|
|
case '2':
|
|
return '标协会议'
|
|
case '3':
|
|
return '国际研讨会'
|
|
case '4':
|
|
return '其他会议'
|
|
default:
|
|
return '其他会议'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="less">
|
|
@import '~@assets/less/common.less';
|
|
|
|
.ant-row {
|
|
line-height: 3;
|
|
|
|
.ant-col {
|
|
label {
|
|
color: #999;
|
|
}
|
|
|
|
span {
|
|
color: black;
|
|
}
|
|
}
|
|
}
|
|
|
|
.label {
|
|
color: #999999;
|
|
}
|
|
|
|
.content {
|
|
color: black;
|
|
}
|
|
|
|
</style>
|