【开发】五种会议的上传会议纪要

This commit is contained in:
fengachen
2021-12-14 16:41:01 +08:00
parent f1a10730cf
commit ea8fd99479
9 changed files with 169 additions and 113 deletions
+2 -2
View File
@@ -1,9 +1,9 @@
<template>
<div class="main">
<keep-alive :include="includedComponents">
<router-view v-if="keepAlive" />
<router-view v-if="keepAlive" />
</keep-alive>
<router-view v-if="!keepAlive" />
<router-view :key="$route.fullPath" v-if="!keepAlive" />
</div>
</template>
+2 -2
View File
@@ -22,10 +22,10 @@
<div style="margin: 12px 12px 0; overflow-x: auto">
<!-- update-begin-author:taoyan date:20201221 for:此处删掉transition标签 不知道为什么加上后 页面路由切换的时候即1及菜单切到2及菜单的时候 两个菜单页面会同时出现300-500秒左右 -->
<keep-alive v-if="multipage">
<router-view v-if="reloadFlag"/>
<router-view :key="$route.fullPath" v-if="reloadFlag"/>
</keep-alive>
<template v-else>
<router-view v-if="reloadFlag"/>
<router-view :key="$route.fullPath" v-if="reloadFlag"/>
</template>
<!-- update-end-author:taoyan date:20201221 for:此处删掉transition标签 不知道为什么加上后 页面路由切换的时候即1及菜单切到2及菜单的时候 两个菜单页面会同时出现300-500秒左右 -->
</div>
@@ -239,8 +239,7 @@
v-decorator="['directorPhone']"></a-input>
</a-form-item>
</a-col>
<!--标协会议才有-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="meetingType === '2' ">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="酒店名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入酒店名称"
:maxLength='50'
@@ -249,7 +248,7 @@
</a-form-item>
</a-col>
<!--标协会议才有-->
<a-col :xxl="8" :xl="12" :sm="24" v-if="meetingType === '2' ">
<a-col :xxl="8" :xl="12" :sm="24">
<a-form-item label="酒店地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入酒店地址"
:maxLength='50'
@@ -259,7 +258,8 @@
</a-col>
</a-row>
<!--标协会议-->
<section v-if="meetingType === '2'">
<!--变更后所有的会议都有酒店信息管理了-->
<section>
<a-row :gutter="24" v-for="(hotel, index) in model.hotelContactsList" :key="index">
<a-col :xxl="8" :xl="10" :md="12">
<a-form-item label="酒店联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -333,9 +333,9 @@
</template>
<script>
import { getUserInfo, getMeetInfoById } from '@api/incomeMeetingApi'
import { isRepeat } from '@/utils/util'
import { httpAction } from '@api/manage'
import {getUserInfo, getMeetInfoById} from '@api/incomeMeetingApi'
import {isRepeat} from '@/utils/util'
import {httpAction} from '@api/manage'
import JDictSelectTag from '@comp/dict/JDictSelectTag'
import JYearDate from '@comp/jero/JYearDate'
import JUpload from '@comp/jero/JUpload'
@@ -348,9 +348,9 @@ import pick from 'lodash.pick'
import meetingValidate from '@views/incomePayments/meetManage/meetingValidate'
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
import JImageUpload from '@comp/jero/JImageUpload'
import { checkMeetingName } from '@/utils/validateOnly'
import { addZero } from '@/utils/util'
import { money } from '@/utils/validate'
import {checkMeetingName} from '@/utils/validateOnly'
import {addZero} from '@/utils/util'
import {money} from '@/utils/validate'
export default {
name: 'AddOrDetailMeet',
@@ -373,26 +373,26 @@ export default {
form: this.$form.createForm(this),
model: {},
labelCol: {
xxl: { span: 7 },
xs: { span: 24 },
sm: { span: 6 }
xxl: {span: 7},
xs: {span: 24},
sm: {span: 6}
},
wrapperCol: {
xxl: { span: 17 },
xs: { span: 24 },
sm: { span: 18 }
xxl: {span: 17},
xs: {span: 24},
sm: {span: 18}
},
remarksLabelCol: {
xxl: { span: 3 },
xl: { span: 4 },
xs: { span: 24 },
sm: { span: 3 }
xxl: {span: 3},
xl: {span: 4},
xs: {span: 24},
sm: {span: 3}
},
remarksWrapperCol: {
xxl: { span: 21 },
xl: { span: 20 },
xs: { span: 24 },
sm: { span: 21 }
xxl: {span: 21},
xl: {span: 20},
xs: {span: 24},
sm: {span: 21}
},
// 详细地址
address: '',
@@ -400,32 +400,32 @@ export default {
validateInviteCode: {
invitationCode: {
rules: [
{ required: true, validator: this.validateCode }
{required: true, validator: this.validateCode}
],
validateTrigger: ['blur']
},
meetingName: {
rules: [
{ required: true, validator: this.validaeMeetingName }
{required: true, validator: this.validaeMeetingName}
],
validateTrigger: ['blur']
},
particularYear: {
rules: [
{ required: true, validator: this.validateYear }
{required: true, validator: this.validateYear}
],
validateTrigger: ['blur', 'change'],
initialValue: this.$store.getters.currentYear
},
meetingCosts: {
rules: [
{ required: true, validator: this.validateMeetingCosts }
{required: true, validator: this.validateMeetingCosts}
],
validateTrigger: ['blur']
},
meetingCostsVip: {
rules: [
{ required: true, validator: this.validateMeetingCostsVip }
{required: true, validator: this.validateMeetingCostsVip}
],
validateTrigger: ['blur']
}
@@ -470,7 +470,7 @@ export default {
this.pcaData = new AreaPca()
// 编辑获取会议信息 有id就是编辑走编辑
if (this.$route.query.id) {
getMeetInfoById({ id: this.$route.query.id }).then(res => {
getMeetInfoById({id: this.$route.query.id}).then(res => {
if (res.success) {
this.edit(res.result)
}
@@ -503,20 +503,18 @@ export default {
// 编辑根据接口返回的会议类型获取不同的会议url
this.url = this.createUrlByMeetingType(this.meetingType)
// 判断会议费用是否为 0 缴费二维码显示
if(this.model.meetingCosts === '0.00' ){
if (this.model.meetingCosts === '0.00') {
this.QRcodeBool = false
}else {
} else {
this.QRcodeBool = true
}
} else {
this.title = '新增会议'
// 如果是标协会会议需要显示酒店联系人
if (this.$route.query.meetingType && this.$route.query.meetingType === '2') {
this.model.hotelContactsList = [{
hotelContacts: '',
hotelContactsPhone: ''
}]
}
// 所有的会议都显示酒店联系人
this.model.hotelContactsList = [{
hotelContacts: '',
hotelContactsPhone: ''
}]
// 新增取路由参数
this.meetingType = this.$route.query.meetingType
// 新增根据路由参数 会议类型更换不同的接口
@@ -539,12 +537,12 @@ export default {
this.$nextTick(() => {
// 加定时器是因为有可能赋值不成功
setTimeout(() => {
this.form.setFieldsValue(pick(this.model, 'notice', 'paymentQrCode', 'meetingName', 'meetingType', 'convokeTime', 'particularYear', 'estimatedNumber', 'meetingFiles', 'registerDeadline', 'meetingContent', 'convokeLocale', 'address', 'meetingCosts', 'directorId', 'remark', 'directorPhone')), 200
this.form.setFieldsValue(pick(this.model, 'notice','hotelContactsList', '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', 'hotelContactsList', 'tbMeetingType', 'meetingCostsVip', 'hotelName', 'hotelAddress'))
this.form.setFieldsValue(pick(this.model, 'signInTime', 'tbMeetingType', 'meetingCostsVip', 'hotelName', 'hotelAddress'))
}
// 如果是工作组会议 赋值工作组
if (this.meetingType === '1') {
@@ -578,7 +576,7 @@ export default {
httpurl = this.url.add
}
let placeName = values.convokeLocale
const formData = Object.assign(this.model, values, { venue: this.getPcaText(placeName) })
const formData = Object.assign(this.model, values, {venue: this.getPcaText(placeName)})
// 如果会议的费用未为0 不能上传缴费凭证
if (values.meetingCosts === '0.00') {
delete formData.paymentQrCode
@@ -635,6 +633,7 @@ export default {
},
/*
* 监听会议类型变化
* 这个没用了
* */
changeMeetingType(val) {
this.meetingType = val
@@ -658,10 +657,10 @@ export default {
* 会议负责人
* */
selectPerson(val) {
getUserInfo({ id: val }).then(res => {
getUserInfo({id: val}).then(res => {
if (res.success) {
this.$nextTick(() => {
this.form.setFieldsValue({ directorPhone: res.result.phone })
this.form.setFieldsValue({directorPhone: res.result.phone})
})
}
})
@@ -674,7 +673,7 @@ export default {
this.$message.warning('最多添加5个酒店联系人')
return
}
const { form } = this
const {form} = this
const obj = {
hotelContacts: '',
hotelContactsPhone: ''
@@ -697,7 +696,7 @@ export default {
if (this.model.hotelContactsList.length === 1) {
return
}
const { form } = this
const {form} = this
// // can use data-binding to get
const hotelContactsList = form.getFieldValue('hotelContactsList')
// 把循环的dom元素删除
@@ -806,7 +805,7 @@ export default {
}
const year = new Date().getFullYear()
if (Number(value) < year) {
callback(`请选择${ year }年或之后的年份`)
callback(`请选择${year}年或之后的年份`)
} else {
callback()
}
@@ -47,12 +47,19 @@
<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' ">
<a-col :xxl="8" :xl="12" :sm="24">
<label>酒店名称</label><span>{{ currentMeetingInfo.hotelName }}</span>
</a-col>
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType === '2' ">
<a-col :xxl="8" :xl="12" :sm="24">
<label>酒店地址</label><span>{{ currentMeetingInfo.hotelAddress }}</span>
</a-col>
<a-row class="flex-col">
<label class="label">酒店联系人及手机号</label>
<span class="content"
v-for="(item,index) of currentMeetingInfo.hotelContactsList"
:key="index">
{{ item.hotelContacts + ':' + item.hotelContactsPhone + ' ' }}</span>
</a-row>
<!-- 国际研讨会的邀请码-->
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType ==='3' ">
<label>VIP邀请码</label><span>{{ currentMeetingInfo.vipInvitationCode }}</span>
@@ -102,13 +109,6 @@
v-model="currentMeetingInfo.paymentQrCode" disabled></j-image-upload>
</a-col>
</a-row>
<a-row v-show="currentMeetingInfo.meetingType === '2' " class="flex-col">
<label class="label">酒店联系人及手机号</label>
<span class="content"
v-for="(item,index) of currentMeetingInfo.hotelContactsList"
:key="index">
{{ item.hotelContacts + ':' + item.hotelContactsPhone + ' ' }}</span>
</a-row>
<div class="part-title">
<div class="part-title-text">参会人员信息</div>
</div>
@@ -580,7 +580,10 @@ export default {
}
})
this.filters.meetingId = this.$route.query.id
this.loadData(1)
if(this.disableMixinCreated){
this.loadData(1)
}
},
async mounted() {
// 生成会议报名二维码
@@ -613,6 +616,8 @@ export default {
return this.otherMeetingUrl
case '5':
return this.committeeMeetingUrl
// 为了解决控制台报错写的
default:return this.workGroupMeetingUrl
}
},
// 报名链接
@@ -1,22 +1,30 @@
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
:confirmLoading="confirmLoading"
@ok="handleOk"
@cancel="handleCancel"
cancelText="关闭">
:title="title"
:width="width"
:visible="visible"
:confirmLoading="confirmLoading"
@ok="handleOk"
@cancel="handleCancel"
cancelText="关闭">
<a-spin :spinning="confirmLoading">
<a-form :form="form">
<a-row>
<a-col :span="24">
<a-form-item label="会议文件" :labelCol="labelCol" :wrapperCol="wrapperCol">
<!--上传会议资料显示 -->
<a-form-item label="会议文件" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="type === '2' ">
<j-upload file-type-error-message="请上传会议文件" :multiple="true"
:return-id="true"
v-decorator="['fileIds']"
:trigger-change="true"></j-upload>
</a-form-item>
<!--上传会议纪要显示 -->
<a-form-item label="会议纪要" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="type === '1' ">
<j-upload file-type-error-message="请上传会议纪要" :multiple="true"
:return-id="true"
v-decorator="['fileIds']"
:trigger-change="true"></j-upload>
</a-form-item>
</a-col>
</a-row>
</a-form>
@@ -30,7 +38,7 @@ import {httpAction} from '@api/manage'
export default {
name: 'UploadMeetFileModal',
components:{
components: {
JUpload
},
data() {
@@ -40,6 +48,7 @@ export default {
visible: false,
confirmLoading: false,
form: this.$form.createForm(this),
type: '', // 上传会议纪要还是上传会议资料
model: {},
labelCol: {
xs: {span: 24},
@@ -50,63 +59,88 @@ export default {
sm: {span: 18}
},
// 会议id
meetingId:'',
meetingId: '',
// 已经上传的会议文件
meetingFileIds:'',
validatorRules: {
},
url:{}
meetingFileIds: '',
validatorRules: {},
url: {}
}
},
methods: {
add() {
this.edit({})
},
edit(record) {
this.form.resetFields()
this.model = Object.assign({},record)
// 根据会议类型返回不同的url
this.url = Object.assign({},this.createUrlByMeetingType(record.meetingType +''))
this.meetingId = record.id
// type 1上传会议纪要 2上传会议资料
edit(record, type) {
this.visible = true
// 拿到已经上传的会议文件进行回显
this.meetingFileIds = this.model.meetingData ? this.model.meetingData : ''
if(this.meetingFileIds && this.meetingFileIds !== ''){
this.$nextTick( () => {
this.form.setFieldsValue({'fileIds':this.meetingFileIds})
})
this.type = type
this.form.resetFields()
this.model = Object.assign({}, record)
// 根据会议类型返回不同的url
this.url = Object.assign({}, this.createUrlByMeetingType(record.meetingType + ''))
this.meetingId = record.id
// 会议资料与会议纪要的回显
if (type === '1') {
this.meetingFileIds = this.model.meetingMinute ? this.model.meetingMinute : ''
if (this.meetingFileIds && this.meetingFileIds !== '') {
this.$nextTick(() => {
this.form.setFieldsValue({'fileIds': this.meetingFileIds})
})
}
} else if (type === '2') {
this.meetingFileIds = this.model.meetingData ? this.model.meetingData : ''
if (this.meetingFileIds && this.meetingFileIds !== '') {
this.$nextTick(() => {
this.form.setFieldsValue({'fileIds': this.meetingFileIds})
})
}
}
},
close() {
this.$emit('close')
this.meetingFileIds = ''
this.type = ''
this.visible = false
},
// uplodFile 上传会议资料的接口 uploadCouncilFile 上传会议纪要的接口
createUrlByMeetingType(meetingType) {
switch (String(meetingType)) {
// 工作组会议
case '1':
return {
uploadFile: '/meeting/workGroupMeeting/uploadFile',
uploadCouncilFile: '/meeting/workGroupMeeting/uploadCouncilFile',
}
// 标协会议
case '2':
return {
uploadFile: '/meeting/standardsMeeting/uploadFile',
uploadCouncilFile: '/meeting/standardsMeeting/uploadCouncilFile',
}
// 国际研讨会
case '3':
return {
uploadFile: '/meeting/internalMeeting/uploadFile',
uploadCouncilFile: '/meeting/internalMeeting/uploadCouncilFile',
}
// 其他会议
case '4':
return {
uploadFile: '/meeting/otherMeeting/uploadFile',
uploadCouncilFile: '/meeting/otherMeeting/uploadCouncilFile'
}
// 分标委会议
case '5':
return {
uploadFile: '/meeting/committeeMeeting/uploadFile',
uploadCouncilFile: '/meeting/committeeMeeting/uploadCouncilFile',
}
// 理事会会议
case '6':
return {
uploadFile: '/meeting/committeeMeeting/uploadFile',
uploadCouncilFile: '/councilMeeting/uploadCouncilFile',
}
}
},
@@ -118,29 +152,36 @@ export default {
this.confirmLoading = true
// 触发表单验证
this.form.validateFields((err, values) => {
if(!err && values.fileIds !== undefined){
if (!err && values.fileIds !== undefined) {
const params = {
fileIds:values.fileIds,
id:that.meetingId
fileIds: values.fileIds,
id: that.meetingId
}
httpAction(this.url.uploadFile,params,'post').then(res => {
if(res.success){
let url
if (this.type === '1') {
// 上传会议纪要用会议纪要的接口
url = this.url.uploadCouncilFile
} else if (this.type === '2') {
url = this.url.uploadFile
}
httpAction(url, params, 'post').then(res => {
if (res.success) {
that.$message.success(res.message)
that.$emit('ok')
this.confirmLoading = false
that.close()
}else {
} else {
this.$message.warn(res.message)
this.confirmLoading = false
}
}).catch((err) => {
console.log(err,'err')
console.log(err, 'err')
}).finally(() => {
setTimeout(() => {
this.confirmLoading = false
}, 1000)
})
}else {
} else {
that.close()
}
})
@@ -117,7 +117,8 @@
</template>
<span slot="action" class="action-span-cell" slot-scope="text, record">
<a @click="uploadFile(record)" v-has:[authorCode.upload]="'committeeMeeting:upload'">上传文件</a>
<a @click="uploadFile(record,'1')" v-has:[authorCode.uploadCouncil]="'committeeMeeting:upload'">会议纪要</a>
<a @click="uploadFile(record,'2')" v-has:[authorCode.upload]="'committeeMeeting:upload'">上传文件</a>
<!-- <a @click="applyMsg">报名信息</a>-->
<a @click="handleEdit(record)" v-has:[authorCode.edit]="'committeeMeeting:edit'">编辑</a>
<a @click="handleDelete(record.id)" v-has:[authorCode.delete]="'committeeMeeting:delete'">删除</a>
@@ -245,6 +246,7 @@ export default {
},
],
newColumns: [],
// 权限编码
authorCode: {},
// 分标委的权限编码
@@ -255,7 +257,8 @@ export default {
batchDel: 'committeeMeeting:batchDel',
upload: 'committeeMeeting:upload',
edit: 'committeeMeeting:edit',
delete: 'committeeMeeting:delete'
delete: 'committeeMeeting:delete',
uploadCouncil:'committeeMeeting:uploadCouncil'
},
// 标协会议的权限编码
standardsMeetingAuthorCode: {
@@ -265,7 +268,8 @@ export default {
batchDel: 'standardsMeeting:batchDel',
upload: 'standardsMeeting:upload',
edit: 'standardsMeeting:edit',
delete: 'standardsMeeting:delete'
delete: 'standardsMeeting:delete',
uploadCouncil:'standardsMeeting:uploadCouncil'
}
}
},
@@ -281,7 +285,9 @@ export default {
if (this.meetingType === '2') {
this.authorCode = Object.assign({}, this.standardsMeetingAuthorCode)
}
this.loadData(1)
if(this.disableMixinCreated){
this.loadData(1)
}
// 不是分标委会议去掉提醒字段
if (this.meetingType !== '5') {
this.newColumns = [...this.columns]
@@ -402,8 +408,8 @@ export default {
/*
* 上传文件
* */
uploadFile(record) {
this.$refs.modalForm.edit(record)
uploadFile(record,type) {
this.$refs.modalForm.edit(record,type)
},
/*
* 报名信息
@@ -114,7 +114,8 @@
</template>
<span slot="action" class="action-span-cell" slot-scope="text, record" v-if="canOperate">
<a @click="uploadFile(record)" v-has="'workGroupMeeting:upload'">上传文件</a>
<a @click="uploadFile(record,'1')" v-has="'workGroupMeeting:uploadCouncil'">会议纪要</a>
<a @click="uploadFile(record,'2')" v-has="'workGroupMeeting:upload'">上传文件</a>
<!-- <a @click="applyMsg">报名信息</a>-->
<a @click="handleEdit(record)" v-has="'workGroupMeeting:edit'">编辑</a>
<a @click="handleDelete(record.id)" v-has="'workGroupMeeting:delete'">删除</a>
@@ -315,8 +316,8 @@ export default {
/*
* 上传文件
* */
uploadFile(record) {
this.$refs.modalForm.edit(record)
uploadFile(record,type) {
this.$refs.modalForm.edit(record,type)
},
/*
* 报名信息
@@ -96,7 +96,8 @@
</template>
<span slot="action" slot-scope="text, record" class="action-span-cell">
<a @click="handleUploadFile(record)" v-has="'internalMeeting:upload'">上传文件</a>
<a @click="handleUploadFile(record,'1')" v-has=" 'internalMeeting:uploadCouncil' ">会议纪要</a>
<a @click="handleUploadFile(record,'2')" v-has="'internalMeeting:upload'">上传文件</a>
<!-- <a @click="handleSignup(record)">报名信息</a>-->
<a @click="handleEdit(record)" v-has="'internalMeeting:edit'">编辑</a>
<a @click="handleDelete(record.id)" v-has="'internalMeeting:delete'">删除</a>
@@ -225,11 +226,13 @@ export default {
},
},
methods: {
/*
* 上传会议文件
* */
handleUploadFile(record) {
this.$refs.modalForm.edit(record)
/**
* @description: 会议纪要的上传 或者会议资料的上传
* @param:record 表格行数据
* @paramtype 1上传会议纪要 2上传会议资料
* */
handleUploadFile(record,type) {
this.$refs.modalForm.edit(record,type)
},
/*
* 修改查询条件
+4 -3
View File
@@ -95,7 +95,8 @@
<span v-else></span>
</template>
<span slot="action" slot-scope="text, record" class="action-span-cell">
<a @click="handleUploadFile(record)" v-has="'otherMeeting:upload'">上传文件</a>
<a @click="handleUploadFile(record,'1')" v-has="'otherMeeting:uploadCouncil'">会议纪要</a>
<a @click="handleUploadFile(record,'2')" v-has="'otherMeeting:upload'">上传文件</a>
<!-- <a @click="handleSignup(record)">报名信息</a>-->
<a @click="handleEdit(record)" v-has="'otherMeeting:edit'">编辑</a>
<a @click="handleDelete(record.id)" v-has="'otherMeeting:delete'">删除</a>
@@ -226,8 +227,8 @@ name: 'OtherMeeting',
/*
* 上传会议文件
* */
handleUploadFile(record) {
this.$refs.modalForm.edit(record)
handleUploadFile(record,type) {
this.$refs.modalForm.edit(record,type)
},
/*
* 报名信息