新增会议增加验证

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