新增会议增加验证

This commit is contained in:
fengachen
2021-09-03 15:01:10 +08:00
parent b06dbd233a
commit 41dbcc58de
4 changed files with 215 additions and 40 deletions
+4 -1
View File
@@ -2,7 +2,10 @@ import {getAction} from "@api/manage";
// 通过用户id获取用户信息 // 通过用户id获取用户信息
const getUserInfo = (params) => getAction('/sys/user/queryById',params) const getUserInfo = (params) => getAction('/sys/user/queryById',params)
// 通过会议id获取会议的详细信息
const getMeetInfoById = (params) => getAction('/meeting/payMeeting/queryById',params)
export { export {
getUserInfo getUserInfo,
getMeetInfoById
} }
@@ -15,12 +15,12 @@
<a-input placeholder="请输入会议名称" <a-input placeholder="请输入会议名称"
:maxLength='50' :maxLength='50'
@change="event => event.target.value = event.target.value.trim()" @change="event => event.target.value = event.target.value.trim()"
v-decorator="['meetingName']"></a-input> v-decorator="['meetingName',validatorRules.meetingName]"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xl="6" :md="8" :sm="24"> <a-col :xl="6" :md="8" :sm="24">
<a-form-item label="会议类型" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="会议类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag style="width: 100%" v-decorator="['meetingType']" @change="changeMeetingType" <j-dict-select-tag style="width: 100%" v-decorator="['meetingType',validatorRules.meetingType]" @change="changeMeetingType"
:trigger-change="true" dict-code="meeting_type" :trigger-change="true" dict-code="meeting_type"
placeholder="请选择会议类型"></j-dict-select-tag> placeholder="请选择会议类型"></j-dict-select-tag>
</a-form-item> </a-form-item>
@@ -28,7 +28,7 @@
<a-col :xl="6" :md="8" :sm="24" v-if="meetingType === '2' "> <a-col :xl="6" :md="8" :sm="24" v-if="meetingType === '2' ">
<a-form-item label="标协会议类型" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="标协会议类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag v-decorator="['tbMeetingType']" :trigger-change="true" style="width: 100%" <j-dict-select-tag v-decorator="['tbMeetingType',validatorRules.tbMeetingType]" :trigger-change="true" style="width: 100%" dict-code="standard_meeting_type"
placeholder="请选择标协会议类型"></j-dict-select-tag> placeholder="请选择标协会议类型"></j-dict-select-tag>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -39,7 +39,7 @@
@change="changeConvokeTime" @change="changeConvokeTime"
format="YYYY-MM-DD HH:mm:00" format="YYYY-MM-DD HH:mm:00"
:show-time="{ format: 'HH:mm' }" :show-time="{ format: 'HH:mm' }"
v-decorator="['convokeTime']" v-decorator="['convokeTime',validatorRules.convokeTime]"
:trigger-change="true" :trigger-change="true"
style="width: 100%"/> style="width: 100%"/>
</a-form-item> </a-form-item>
@@ -47,7 +47,7 @@
<a-col :xl="6" :md="8" :sm="24"> <a-col :xl="6" :md="8" :sm="24">
<a-form-item label="年份" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="年份" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-year-date v-decorator="['particularYear']" placeholder="请选择年份" style="width: 100%"></j-year-date> <j-year-date v-decorator="['particularYear',validatorRules.particularYear]" placeholder="请选择年份" style="width: 100%"></j-year-date>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xl="6" :md="8" :sm="24"> <a-col :xl="6" :md="8" :sm="24">
@@ -62,9 +62,10 @@
<a-col :xl="12" :md="8" :sm="24" v-if="meetingType === '2' "> <a-col :xl="12" :md="8" :sm="24" v-if="meetingType === '2' ">
<a-form-item label="注册签到" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="注册签到" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-range-picker <a-range-picker
@change="changeSignTime"
format="YYYY-MM-DD HH:mm:00" format="YYYY-MM-DD HH:mm:00"
:show-time="{ format: 'HH:mm' }" :show-time="{ format: 'HH:mm' }"
v-decorator="['startSignInTime']" v-decorator="['signInTime',validatorRules.signInTime]"
:trigger-change="true" :trigger-change="true"
style="width: 100%"/> style="width: 100%"/>
</a-form-item> </a-form-item>
@@ -78,7 +79,7 @@
<a-col :xl="6" :md="8" :sm="24"> <a-col :xl="6" :md="8" :sm="24">
<a-form-item label="报名截止时间" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="报名截止时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date placeholder="请选择报名截止时间" style="width: 100%;" v-decorator="['registerDeadline']" :trigger-change="true" <j-date placeholder="请选择报名截止时间" style="width: 100%;" v-decorator="['registerDeadline',validatorRules.registerDeadline]" :trigger-change="true"
date-format="YYYY-MM-DD HH:mm:ss" :show-time="true" /> date-format="YYYY-MM-DD HH:mm:ss" :show-time="true" />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -88,7 +89,7 @@
<a-textarea <a-textarea
placeholder="请输入会议内容" placeholder="请输入会议内容"
:auto-size="{ minRows: 3, maxRows: 6 }" :auto-size="{ minRows: 3, maxRows: 6 }"
v-decorator="['meetingContent']" v-decorator="['meetingContent',validatorRules.meetingContent]"
:maxLength='200' :maxLength='200'
@change="e => {e.target.value = (e.target.value + '').trim()}"/> @change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item> </a-form-item>
@@ -102,14 +103,14 @@
<j-area-linkage <j-area-linkage
type="cascader" type="cascader"
placeholder="请选择省市" placeholder="请选择省市"
v-decorator="['convokeLocale']" v-decorator="['convokeLocale',validatorRules.convokeLocale]"
></j-area-linkage> ></j-area-linkage>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xl="6" :md="8" :sm="24"> <a-col :xl="6" :md="8" :sm="24">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入详细地址" <a-input placeholder="请输入详细地址"
v-model="address" v-decorator="['address',validatorRules.address]"
@change="event => event.target.value = event.target.value.trim()" @change="event => event.target.value = event.target.value.trim()"
:maxLength='50' :maxLength='50'
></a-input> ></a-input>
@@ -127,32 +128,36 @@
<a-col :xl="6" :md="8" :sm="24"> <a-col :xl="6" :md="8" :sm="24">
<a-form-item label="VIP" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="VIP" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入邀请码" <a-input placeholder="请输入邀请码"
@change="event => event.target.value = event.target.value.trim()"
:maxLength='50' :maxLength='50'
v-decorator="[ 'vipInvitationCode']"></a-input> v-decorator="['vipInvitationCode',validatorRules.invitationCode]"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xl="6" :md="8" :sm="24"> <a-col :xl="6" :md="8" :sm="24">
<a-form-item label="演讲嘉宾" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="演讲嘉宾" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入邀请码" <a-input placeholder="请输入邀请码"
@change="event => event.target.value = event.target.value.trim()"
:maxLength='50' :maxLength='50'
v-decorator="[ 'speakerInvitationCode']"></a-input> v-decorator="[ 'speakerInvitationCode',validatorRules.invitationCode]"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xl="6" :md="8" :sm="24"> <a-col :xl="6" :md="8" :sm="24">
<a-form-item label="特邀嘉宾" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="特邀嘉宾" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入邀请码" <a-input placeholder="请输入邀请码"
@change="event => event.target.value = event.target.value.trim()"
:maxLength='50' :maxLength='50'
v-decorator="[ 'guestInvitationCode']"></a-input> v-decorator="[ 'guestInvitationCode',validatorRules.invitationCode]"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xl="6" :md="8" :sm="24"> <a-col :xl="6" :md="8" :sm="24">
<a-form-item label="合作伙伴" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="合作伙伴" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入邀请码" <a-input placeholder="请输入邀请码"
@change="event => event.target.value = event.target.value.trim()"
:maxLength='50' :maxLength='50'
v-decorator="[ 'cooperativeInvitationCode']"></a-input> v-decorator="[ 'cooperativeInvitationCode',validatorRules.invitationCode]"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@@ -167,7 +172,8 @@
<a-form-item label="会议费用" :labelCol="labelCol" :wrapperCol="{ xs: {span: 24},sm: {span: 16}}"> <a-form-item label="会议费用" :labelCol="labelCol" :wrapperCol="{ xs: {span: 24},sm: {span: 16}}">
<a-input placeholder="请输入会议费用" <a-input placeholder="请输入会议费用"
:maxLength='50' :maxLength='50'
v-decorator="[ 'meetingCosts']"></a-input> @change="(e) => {e.target.value = e.target.value.replace(/[^0-9.]/g,'')}"
v-decorator="[ 'meetingCosts',validatorRules.meetingCosts]"></a-input>
<span class="yuan">元/人</span> <span class="yuan">元/人</span>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -176,7 +182,8 @@
<a-form-item label="会议费用(标协会员)" :labelCol="labelCol" :wrapperCol="{ xs: {span: 24},sm: {span: 16}}"> <a-form-item label="会议费用(标协会员)" :labelCol="labelCol" :wrapperCol="{ xs: {span: 24},sm: {span: 16}}">
<a-input placeholder="请输入会议费用" <a-input placeholder="请输入会议费用"
:maxLength='50' :maxLength='50'
v-decorator="[ 'meetingCostsVip']"></a-input> @change="(e) => {e.target.value = e.target.value.replace(/[^0-9.]/g,'')}"
v-decorator="[ 'meetingCostsVip',validatorRules.meetingCostsVip]"></a-input>
<span class="yuan">元/人</span> <span class="yuan">元/人</span>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -197,7 +204,8 @@
<a-form-item label="手机号" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="手机号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入手机号" <a-input placeholder="请输入手机号"
disabled disabled
:maxLength='50' :maxLength='11'
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9.]/g,'')}"
v-decorator="['directorPhone']"></a-input> v-decorator="['directorPhone']"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -206,7 +214,8 @@
<a-form-item label="酒店名称" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="酒店名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入酒店名称" <a-input placeholder="请输入酒店名称"
:maxLength='50' :maxLength='50'
v-decorator="['hotelName']"></a-input> @change="event => event.target.value = event.target.value.trim()"
v-decorator="['hotelName',validatorRules.hotelName]"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<!--标协会议才有--> <!--标协会议才有-->
@@ -214,7 +223,8 @@
<a-form-item label="酒店地址" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="酒店地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入酒店地址" <a-input placeholder="请输入酒店地址"
:maxLength='50' :maxLength='50'
v-decorator="[ 'hotelAddress']"></a-input> @change="event => event.target.value = event.target.value.trim()"
v-decorator="[ 'hotelAddress',validatorRules.hotelAddress]"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@@ -233,10 +243,10 @@
<a-col :xl="6" :md="8" :sm="24"> <a-col :xl="6" :md="8" :sm="24">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input <a-input
@change="event => event.target.value = event.target.value.trim()" @change="(e) => {e.target.value = e.target.value.replace(/[^0-9.]/g,'')}"
:maxLength="15" :maxLength="15"
v-decorator="['hotelList['+index+'].telephoneNumber']" v-decorator="['hotelList['+index+'].telephoneNumber',validatorRules.telephoneNumber]"
placeholder="请输入酒店电话"></a-input> placeholder="请输入联系人手机号"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xl="2" :md="2" > <a-col :xl="2" :md="2" >
@@ -269,7 +279,7 @@
</a-form> </a-form>
<div class="footer"> <div class="footer">
<a-button type="primary" @click="handleOk" class="submit">发布</a-button> <a-button type="primary" @click="handleOk" class="submit" v-preventclick>发布</a-button>
<a-button @click="handleCancel">取消</a-button> <a-button @click="handleCancel">取消</a-button>
</div> </div>
</a-spin> </a-spin>
@@ -277,7 +287,7 @@
</template> </template>
<script> <script>
import {getUserInfo} from "@api/inconmeMeetingApi"; import {getUserInfo,getMeetInfoById} from "@api/inconmeMeetingApi";
import {httpAction} from "@api/manage"; import {httpAction} from "@api/manage";
import JDictSelectTag from "@comp/dict/JDictSelectTag"; import JDictSelectTag from "@comp/dict/JDictSelectTag";
import JYearDate from "@comp/jero/JYearDate"; import JYearDate from "@comp/jero/JYearDate";
@@ -288,6 +298,8 @@ import SelectPrincipal from "@comp/company/SelectPrincipal";
import JAreaLinkage from "@comp/jero/JAreaLinkagePca"; import JAreaLinkage from "@comp/jero/JAreaLinkagePca";
import AreaPca from "@comp/_util/AreaPca"; import AreaPca from "@comp/_util/AreaPca";
import moment from 'moment' import moment from 'moment'
import pick from "lodash.pick";
import meetingValidate from "@views/incomePayments/meetManage/meetingValidate";
export default { export default {
name: "AddOrDetailMeet", name: "AddOrDetailMeet",
@@ -327,21 +339,48 @@ export default {
address: '', address: '',
// 会议类型 新增时默认为其他会议 // 会议类型 新增时默认为其他会议
meetingType:"4", meetingType:"4",
validatorRules: {}, validatorRules: meetingValidate,
url: { url: {
add: "/meeting/payMeeting/add", add: "/meeting/payMeeting/add",
edit: "/meeting/payMeeting/edit", edit: "/meeting/payMeeting/edit",
}, },
// 召开时间 // 召开时间
newConvokeTime:'', newConvokeTime:'',
// 注册召开时间
newSignInTime:'',
} }
}, },
created() { created() {
this.pcaData = new AreaPca() this.pcaData = new AreaPca();
// 编辑获取会议信息
if(this.$route.query.id){
getMeetInfoById({id:this.$route.query.id}).then(res => {
if(res.success){
this.edit(res.result)
}
})
}
}, },
methods: { methods: {
moment, moment,
/* /*
* 新增
* */
add(){
this.edit({})
},
/*
* 编辑
* */
edit(record){
this.form.resetFields()
this.model = Object.assign({},record)
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model,'meetingName','meetingType'))
})
},
/*
* 发布会议 * 发布会议
* */ * */
handleOk() { handleOk() {
@@ -352,15 +391,20 @@ export default {
let method = 'post' let method = 'post'
httpurl = this.url.add httpurl = this.url.add
let placeName = values.convokeLocale let placeName = values.convokeLocale
const formData = Object.assign(this.model, values,{ placeName: this.getPcaText(placeName) }) const formData = Object.assign(this.model, values,{ venue: this.getPcaText(placeName) })
formData.beginTime = this.newConvokeTime[0] // 转换召开时间
formData.startTime = this.newConvokeTime[0]
formData.endTime = this.newConvokeTime[1] formData.endTime = this.newConvokeTime[1]
// 转换注册签到时间
if(values.signInTime){
formData.startSignInTime = this.newSignInTime[0]
formData.endSignInTime = this.newSignInTime[1]
}
console.log('表单提交数据', formData) console.log('表单提交数据', formData)
httpAction(httpurl, formData, method).then((res) => { httpAction(httpurl, formData, method).then((res) => {
if (res.success) { if (res.success) {
that.$message.success(res.message) that.$message.success(res.message)
that.$emit('ok') that.handleCancel()
that.close()
} else { } else {
that.$message.warning(res.message) that.$message.warning(res.message)
} }
@@ -465,6 +509,12 @@ export default {
* */ * */
changeConvokeTime(date,dateString){ changeConvokeTime(date,dateString){
this.newConvokeTime = dateString this.newConvokeTime = dateString
},
/*
* 注册签到时间转化
* */
changeSignTime(date,dateString){
this.newSignInTime = dateString
} }
} }
} }
@@ -73,7 +73,7 @@
@change="handleTableChange"> @change="handleTableChange">
<template slot="htmlSlot" slot-scope="text,record"> <template slot="htmlSlot" slot-scope="text,record">
<div class="primary-color" @click="toAttendance">会议名称</div> <div class="primary-color" @click="toAttendance">{{ text }}</div>
</template> </template>
<template slot="text" slot-scope="text"> <template slot="text" slot-scope="text">
@@ -101,6 +101,7 @@ import JYearDate from "@comp/jero/JYearDate";
import UploadMeetFileModal from "@views/incomePayments/meetManage/modules/UploadMeetFileModal"; import UploadMeetFileModal from "@views/incomePayments/meetManage/modules/UploadMeetFileModal";
import PageHeaderTitle from "@comp/layouts/PageHeaderTitle"; import PageHeaderTitle from "@comp/layouts/PageHeaderTitle";
import IconImg from '@/assets/imgs/icon/icon_company_management.png' import IconImg from '@/assets/imgs/icon/icon_company_management.png'
import "@/assets/less/TableExpand.less";
export default { export default {
name: "MeetManageList", name: "MeetManageList",
@@ -129,44 +130,52 @@ export default {
title: '会议名称', title: '会议名称',
align: "center", align: "center",
dataIndex: 'meetingName', dataIndex: 'meetingName',
scopedSlots: {customRender: 'htmlSlot'} scopedSlots: {customRender: 'htmlSlot'},
width: 160,
}, },
{ {
title: '会议类型', title: '会议类型',
align: "center", align: "center",
dataIndex: 'tbMeetingType', dataIndex: 'meetingType_dictText',
width: 100,
}, },
{ {
title: '负责人', title: '负责人',
align: "center", align: "center",
dataIndex: 'directorName' dataIndex: 'directorName',
width: 160,
}, },
{ {
title: '召开时间', title: '召开时间',
align: "center", align: "center",
dataIndex: 'startTime', dataIndex: 'startTime',
customRender:function (text) { width: 160,
return !text?"":(text.length> 10?text.substr(0,10):text) customRender:function (text,record) {
return `${record.startTime}~${record.endTime}`
} }
}, },
{ {
title: '召开地点', title: '召开地点',
align: "center", align: "center",
dataIndex: 'venue' dataIndex: 'venue',
width: 160,
}, },
{ {
title: '年份', title: '年份',
align: "center", align: "center",
dataIndex: 'particularYear' dataIndex: 'particularYear',
width: 60,
}, },
{ {
title: '创建时间', title: '创建时间',
align: "center", align: "center",
dataIndex: 'createTime' dataIndex: 'createTime',
width: 160,
}, },
{ {
title: '操作', title: '操作',
align: "center", align: "center",
fixed:'right',
scopedSlots: {customRender: 'action'} scopedSlots: {customRender: 'action'}
}, },
], ],
@@ -206,6 +215,9 @@ export default {
handleEdit(record) { handleEdit(record) {
this.$router.push({ this.$router.push({
path: '/incomePayments/meetManage/AddOrDetailMeet', path: '/incomePayments/meetManage/AddOrDetailMeet',
query:{
id:record.id
}
}) })
}, },
/* /*
@@ -0,0 +1,110 @@
export default {
meetingName: {
rules: [
{ required: true, message: '请输入会议名称!' },
],
validateTrigger: 'blur'
},
meetingType: {
rules: [
{ required: true, message: '请选择会议类型!' },
],
validateTrigger:['blur','change']
},
convokeTime: {
rules: [
{ required: true, message: '请选择召开时间!' },
],
validateTrigger:['change']
},
particularYear: {
rules: [
{ required: true, message: '请选择年份!' },
],
validateTrigger:['blur','change']
},
meetingContent:{
rules: [
{ required: true, message: '请输入会议内容!' },
],
validateTrigger:['blur']
},
registerDeadline:{
rules: [
{ required: true, message: '请选择报名截止时间!' },
],
validateTrigger:['blur','change']
},
convokeLocale: {
rules: [
{ required: true, message: '请选择省市!' },
],
validateTrigger:['blur','change']
},
address:{
rules: [
{ required: true, message: '请输入详细地址!' },
],
validateTrigger:['blur']
},
meetingCosts:{
rules: [
{ required: true, message: '请输入会议费用' },
],
validateTrigger:['blur']
},
directorId:{
rules: [
{ required: true, message: '请选择会议负责人' },
],
validateTrigger:['blur','change']
},
tbMeetingType:{
rules: [
{ required: true, message: '请选择标协会议类型!' },
],
validateTrigger:['blur','change']
},
signInTime:{
rules: [
{ required: true, message: '请选择注册签到时间!' },
],
validateTrigger:['change']
},
meetingCostsVip:{
rules: [
{ required: true, message: '请输入会议费用!' },
],
validateTrigger:['blur','change']
},
hotelName:{
rules: [
{ required: true, message: '请输入酒店名称!' },
],
validateTrigger:['blur']
},
hotelAddress:{
rules: [
{ required: true, message: '请输入酒店地址!' },
],
validateTrigger:['blur']
},
contactPerson:{
rules: [
{ required: true, message: '请输入酒店联系人!' },
],
validateTrigger:['blur']
},
telephoneNumber:{
rules: [
{ required: true, message: '请输入联系人手机号!' },
],
validateTrigger:['blur']
},
invitationCode:{
rules: [
{ required: true, message: '请输入邀请码!' },
],
validateTrigger:['blur']
}
}