Files
income_payments_client/src/views/incomePayments/meetManage/Attendance.vue
T
2021-09-07 14:46:20 +08:00

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>