描述:会议室回显房间

This commit is contained in:
SelfRidicule 2024-03-26 14:23:04 +08:00
parent 9bc182af56
commit 3a98992638

View File

@ -1,61 +1,64 @@
<template> <template>
<a-modal <a-modal
:title="mdl.id>0?'编辑':'新增'" :title="mdl.id>0?'编辑':'新增'"
style="top: 20px" style='top: 20px'
:width="1000" :width='1000'
v-model="visible" v-model='visible'
:confirmLoading="confirmLoading" :confirmLoading='confirmLoading'
@ok="handleSubmit" @ok='handleSubmit'
> >
<a-form :form="form" > <a-form :form='form'>
<a-form-item style="display: none"> <a-form-item style='display: none'>
<a-input v-decorator="['id']" /> <a-input v-decorator="['id']" />
</a-form-item> </a-form-item>
<a-form-item style="display: none"> <a-form-item style='display: none'>
<a-input v-decorator="['version']" /> <a-input v-decorator="['version']" />
</a-form-item> </a-form-item>
<!-- 一行 --> <!-- 一行 -->
<a-row> <a-row>
<a-col :span="10"> <a-col :span='10'>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="所属建筑"> <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='所属建筑'>
<a-input placeholder="所属建筑" v-decorator="['build']" disabled='disabled' defaultValue='创智大厦' /> <a-input placeholder='所属建筑' v-decorator="['build']" disabled='disabled' defaultValue='创智大厦' />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="10"> <a-col :span='10'>
<a-form-item label="会议名称" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label='会议名称' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-input placeholder="会议名称" v-decorator="['meetingName',{rules: [{ required: true, message: '输入会议名称' }]}]" /> <a-input placeholder='会议名称'
v-decorator="['meetingName',{rules: [{ required: true, message: '输入会议名称' }]}]" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row> <a-row>
<a-col :span="10"> <a-col :span='10'>
<a-form-item label="会议类型" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label='会议类型' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-select v-decorator="['type',{rules: [{ required: true, message: '输入会议类型' }]}]" placeholder="会议类型"> <a-select v-decorator="['type',{rules: [{ required: true, message: '输入会议类型' }]}]"
<a-select-option :value="1"> placeholder='会议类型'>
<a-select-option :value='1'>
会议室 会议室
</a-select-option> </a-select-option>
<a-select-option :value="2"> <a-select-option :value='2'>
路演厅 路演厅
</a-select-option> </a-select-option>
<a-select-option :value="3"> <a-select-option :value='3'>
洽谈室 洽谈室
</a-select-option> </a-select-option>
<a-select-option :value="4"> <a-select-option :value='4'>
直播间 直播间
</a-select-option> </a-select-option>
<a-select-option :value="5"> <a-select-option :value='5'>
茶室 茶室
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="10"> <a-col :span='10'>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="所属楼层"> <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='所属楼层'>
<a-select v-decorator="['buildId',{rules: [{ required: true, message: '请选择所属楼层' }]}]" placeholder="所属楼层" @change='getRoomList' > <a-select v-decorator="['buildId',{rules: [{ required: true, message: '请选择所属楼层' }]}]"
<a-select-option v-for="item in floorList" :key="item.id" :value="item.id" > placeholder='所属楼层' @change='getRoomList'>
<a-select-option v-for='item in floorList' :key='item.id' :value='item.id'>
{{ item.floorName }} {{ item.floorName }}
</a-select-option> </a-select-option>
</a-select> </a-select>
@ -63,105 +66,114 @@
</a-col> </a-col>
</a-row> </a-row>
<a-row> <a-row>
<a-col :span="10"> <a-col :span='10'>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="所属房间"> <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='所属房间'>
<a-select v-decorator="['roomId',{rules: [{ required: true, message: '选择所属房间' }]}]" placeholder="所属房间" @change='getArea' > <a-select v-decorator="['roomId',{rules: [{ required: true, message: '选择所属房间' }]}]"
<a-select-option v-for="item in roomList" :key="item.id" :value="item.id" > placeholder='所属房间' @change='getArea'>
<a-select-option v-for='item in roomList' :key='item.id' :value='item.id'>
{{ item.name }} {{ item.name }}
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="10"> <a-col :span='10'>
<a-form-item label="会议面积" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label='会议面积' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-input placeholder="会议面积" v-decorator="['area',{rules: [{ required: true, message: '请输入会议面积' }]}]" disabled='disabled' /> <a-input placeholder='会议面积'
v-decorator="['area',{rules: [{ required: true, message: '请输入会议面积' }]}]"
disabled='disabled' />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row> <a-row>
<a-col :span="10"> <a-col :span='10'>
<a-form-item label="容纳人数" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label='容纳人数' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-input placeholder="容纳人数" v-decorator="['capacityNum',{rules: [{ required: true, message: '输入容纳人数' }]}]" /> <a-input placeholder='容纳人数'
v-decorator="['capacityNum',{rules: [{ required: true, message: '输入容纳人数' }]}]" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="10"> <a-col :span='10'>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="会议地址 "> <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='会议地址 '>
<a-input placeholder="会议地址" v-decorator="['address',{rules: [{ required: true, message: '输入会议地址' }]}]" /> <a-input placeholder='会议地址'
v-decorator="['address',{rules: [{ required: true, message: '输入会议地址' }]}]" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row> <a-row>
<a-col :span="10"> <a-col :span='10'>
<a-form-item label="排列形状" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label='排列形状' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-select v-decorator="['shape',{rules: [{ required: true, message: '输入排列形状' }]}]" placeholder="排列形状"> <a-select v-decorator="['shape',{rules: [{ required: true, message: '输入排列形状' }]}]"
<a-select-option value="围桌式"> placeholder='排列形状'>
<a-select-option value='围桌式'>
围桌式 围桌式
</a-select-option> </a-select-option>
<a-select-option value="课桌式"> <a-select-option value='课桌式'>
课桌式 课桌式
</a-select-option> </a-select-option>
<a-select-option value="长方形"> <a-select-option value='长方形'>
长方形 长方形
</a-select-option> </a-select-option>
<a-select-option value="U形"> <a-select-option value='U形'>
U形 U形
</a-select-option> </a-select-option>
<a-select-option value="鱼骨形"> <a-select-option value='鱼骨形'>
鱼骨形 鱼骨形
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="10"> <a-col :span='10'>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="负责人"> <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='负责人'>
<a-input placeholder="负责人" v-decorator="['headName',{rules: [{ required: true, message: '输入负责人' }]}]" /> <a-input placeholder='负责人'
v-decorator="['headName',{rules: [{ required: true, message: '输入负责人' }]}]" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row> <a-row>
<a-col :span="10"> <a-col :span='10'>
<a-form-item label="负责人联系方式" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label='负责人联系方式' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-input placeholder="负责人联系方式" v-decorator="['headPhone',{rules: [{ required: true, message: '输入负责人联系方式'}]}]" /> <a-input placeholder='负责人联系方式'
v-decorator="['headPhone',{rules: [{ required: true, message: '输入负责人联系方式'}]}]" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="10"> <a-col :span='10'>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="启用时间"> <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='启用时间'>
<a-date-picker <a-date-picker
format='YYYY-MM-DD HH:mm:ss' format='YYYY-MM-DD HH:mm:ss'
valueFormat='YYYY-MM-DD HH:mm:ss' valueFormat='YYYY-MM-DD HH:mm:ss'
v-decorator="['startTime',{rules: [{ required: true, message: '输入启用时间'}]}]" v-decorator="['startTime',{rules: [{ required: true, message: '输入启用时间'}]}]"
:show-time="{ defaultValue: moment('00:00:00', 'HH:mm:ss') }" :show-time="{ defaultValue: moment('00:00:00', 'HH:mm:ss') }"
type="date" type='date'
placeholder="选择时间" placeholder='选择时间'
style="width: 100%;" style='width: 100%;'
/> />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row> <a-row>
<a-col :span="10"> <a-col :span='10'>
<a-form-item label="结束时间" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label='结束时间' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-date-picker <a-date-picker
format='YYYY-MM-DD HH:mm:ss' format='YYYY-MM-DD HH:mm:ss'
valueFormat='YYYY-MM-DD HH:mm:ss' valueFormat='YYYY-MM-DD HH:mm:ss'
v-decorator="['endDate',{rules: [{ required: true, message: '输入结束时间'}]}]" v-decorator="['endDate',{rules: [{ required: true, message: '输入结束时间'}]}]"
:show-time="{ defaultValue: moment('00:00:00', 'HH:mm:ss') }" :show-time="{ defaultValue: moment('00:00:00', 'HH:mm:ss') }"
type="date" type='date'
placeholder="选择时间结束时间" placeholder='选择时间结束时间'
style="width: 100%;" style='width: 100%;'
/> />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="10"> <a-col :span='10'>
<a-form-item label="是否使用优惠劵" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label='是否使用优惠劵' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-select v-decorator="['isTicket',{rules: [{ required: true, message: '请选择优惠券'}]}]" placeholder="是否收费"> <a-select v-decorator="['isTicket',{rules: [{ required: true, message: '请选择优惠券'}]}]"
<a-select-option :value="0"> placeholder='是否收费'>
<a-select-option :value='0'>
</a-select-option> </a-select-option>
<a-select-option :value="1"> <a-select-option :value='1'>
</a-select-option> </a-select-option>
</a-select> </a-select>
@ -169,75 +181,78 @@
</a-col> </a-col>
</a-row> </a-row>
<a-row> <a-row>
<a-col :span="10"> <a-col :span='10'>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="是否收费"> <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='是否收费'>
<a-select v-decorator="['isToll',{rules: [{ required: true, message: '请选择是否收费'}]}]" <a-select v-decorator="['isToll',{rules: [{ required: true, message: '请选择是否收费'}]}]"
@change='selectChangeIsToll' placeholder="是否收费"> @change='selectChangeIsToll' placeholder='是否收费'>
<a-select-option :value="0"> <a-select-option :value='0'>
</a-select-option> </a-select-option>
<a-select-option :value="1"> <a-select-option :value='1'>
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="10"> <a-col :span='10'>
<a-form-item v-if='mdl.isToll === 0' :labelCol="labelCol" :wrapperCol="wrapperCol" label="收费金额 "> <a-form-item v-if='mdl.isToll === 0' :labelCol='labelCol' :wrapperCol='wrapperCol' label='收费金额 '>
<a-input placeholder="收费金额 " v-decorator="['money',{rules: [{ required: true, message: '请输入收费金额'}]}]" /> <a-input placeholder='收费金额 '
v-decorator="['money',{rules: [{ required: true, message: '请输入收费金额'}]}]" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row> <a-row>
<a-col :span="10"> <a-col :span='10'>
<a-form-item label="是否启用" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label='是否启用' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-select v-decorator="['isShow',{rules: [{ required: true, message: '请选择是否启用'}]}]" placeholder="是否启用"> <a-select v-decorator="['isShow',{rules: [{ required: true, message: '请选择是否启用'}]}]"
<a-select-option :value="0"> placeholder='是否启用'>
<a-select-option :value='0'>
</a-select-option>
<a-select-option :value="1"> </a-select-option>
<a-select-option :value='1'>
</a-select-option>
</a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="10"> <a-col :span='10'>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="金额备注 "> <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='金额备注 '>
<a-input placeholder="金额备注 " v-decorator="['remake']" /> <a-input placeholder='金额备注 ' v-decorator="['remake']" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row> <a-row>
<a-col :span="10"> <a-col :span='10'>
<a-form-item label="起租时长" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label='起租时长' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-input placeholder="起租时长" v-decorator="['duration',{rules: [{ required: true, message: '请输入起租时长'}]}]" /> <a-input placeholder='起租时长'
v-decorator="['duration',{rules: [{ required: true, message: '请输入起租时长'}]}]" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="10"> <a-col :span='10'>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="会议描述 "> <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='会议描述 '>
<a-input placeholder="会议描述 " v-decorator="['content']" /> <a-input placeholder='会议描述 ' v-decorator="['content']" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row> <a-row>
<a-col :span="10"> <a-col :span='10'>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="室内图片url"> <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='室内图片url'>
<!-- <a-input placeholder="室内图片url" v-decorator="['indoorPicUrl']" />--> <!-- <a-input placeholder="室内图片url" v-decorator="['indoorPicUrl']" />-->
<a-upload <a-upload
v-decorator="['indoorPicUrl']" v-decorator="['indoorPicUrl']"
list-type="picture-card" list-type='picture-card'
class="avatar-uploader" class='avatar-uploader'
:show-upload-list="false" :show-upload-list='false'
:action="uploadUrl" :action='uploadUrl'
:headers="headers" :headers='headers'
:before-upload="beforeUpload" :before-upload='beforeUpload'
@change="handleChange" @change='handleChange'
> >
<img v-if="imageUrl" :src="imageUrl" style="width: 102px; height: 102px"/> <img v-if='imageUrl' :src='imageUrl' style='width: 102px; height: 102px' />
<div v-else> <div v-else>
<a-icon :type="loading ? 'loading' : 'plus'" /> <a-icon :type="loading ? 'loading' : 'plus'" />
<div class="ant-upload-text"> 上传 </div> <div class='ant-upload-text'> 上传</div>
</div> </div>
</a-upload> </a-upload>
</a-form-item> </a-form-item>
@ -247,7 +262,13 @@
</a-modal> </a-modal>
</template> </template>
<script> <script>
import { saveRoomContent,getFloorList,getRoomListByFloorId,selectRoomById,get } from '@/api/admin/meeting/roomContent' import {
saveRoomContent,
getFloorList,
getRoomListByFloorId,
selectRoomById,
get
} from '@/api/admin/meeting/roomContent'
import pick from 'lodash.pick' import pick from 'lodash.pick'
import storage from 'store' import storage from 'store'
import moment from 'moment' import moment from 'moment'
@ -257,12 +278,12 @@ export default {
name: 'RoomContentModal', name: 'RoomContentModal',
props: {}, props: {},
components: {}, components: {},
data () { data() {
return { return {
visible: false, visible: false,
labelCol: { labelCol: {
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 5 }, sm: { span: 5 }
}, },
uploadUrl: process.env.VUE_APP_API_BASE_URL + '/api/dfs/upload', uploadUrl: process.env.VUE_APP_API_BASE_URL + '/api/dfs/upload',
imageUrl: '', imageUrl: '',
@ -270,58 +291,60 @@ export default {
Authorization: 'Bearer ' + storage.get(ACCESS_TOKEN) Authorization: 'Bearer ' + storage.get(ACCESS_TOKEN)
}, },
loading: false, loading: false,
floorList:[], floorList: [],
roomList:[], roomList: [],
wrapperCol: { wrapperCol: {
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 16 }, sm: { span: 16 }
}, },
confirmLoading: false, confirmLoading: false,
mdl: {}, mdl: {},
typeData: [], typeData: [],
form: this.$form.createForm(this), form: this.$form.createForm(this)
} }
}, },
beforeCreate () {}, beforeCreate() {
created () {}, },
created() {
},
mounted() { mounted() {
this.getFloorList() this.getFloorList()
}, },
methods: { methods: {
selectChangeIsToll(value){ selectChangeIsToll(value) {
this.mdl.isToll = value this.mdl.isToll = value
}, },
moment, moment,
// //
getArea(value){ getArea(value) {
let param={ let param = {
"id":value 'id': value
} }
selectRoomById(param).then((res )=>{ selectRoomById(param).then((res) => {
this.form.setFieldsValue({ this.form.setFieldsValue({
area: res.data.area area: res.data.area
}) })
}) })
}, },
getFloorList(){ getFloorList() {
getFloorList().then((res) =>{ getFloorList().then((res) => {
this.floorList = res.data this.floorList = res.data
}) })
}, },
getRoomList(value){ getRoomList(value) {
let param={ let param = {
"buildingDetailId":value, 'buildingDetailId': value,
"type":0 'type': 0
} }
getRoomListByFloorId(param).then((res) =>{ getRoomListByFloorId(param).then((res) => {
this.roomList = res.data this.roomList = res.data
}) })
}, },
beforeUpload (file) { beforeUpload(file) {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png' const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png'
if (!isJpgOrPng) { if (!isJpgOrPng) {
this.$message.error('You can only upload JPG file!') this.$message.error('You can only upload JPG file!')
@ -332,7 +355,7 @@ export default {
} }
return isJpgOrPng && isLt2M return isJpgOrPng && isLt2M
}, },
handleChange (info) { handleChange(info) {
if (info.file.status === 'uploading') { if (info.file.status === 'uploading') {
this.loading = true this.loading = true
return return
@ -354,25 +377,30 @@ export default {
}) })
} }
}, },
add () { add() {
this.form.resetFields() this.form.resetFields()
this.edit({ id: 0 }) this.edit({ id: 0 })
}, },
edit (record) { edit(record) {
if (record.id != 0){ if (record.id != 0) {
get(record.id).then((res) =>{ get(record.id).then((res) => {
}) })
} }
this.mdl = Object.assign(record) this.mdl = Object.assign(record)
if (this.mdl.indoorPicUrl) { if (this.mdl.indoorPicUrl) {
this.imageUrl = process.env.VUE_APP_API_BASE_URL + this.mdl.indoorPicUrl this.imageUrl = process.env.VUE_APP_API_BASE_URL + this.mdl.indoorPicUrl
} }
if (this.mdl.roomId) {
this.roomList.push({
id: this.mdl.roomId,
name: this.mdl.roomName
})
}
getRoomListByFloorId({ getRoomListByFloorId({
"buildingDetailId":this.mdl.buildId, 'buildingDetailId': this.mdl.buildId,
"type":0 'type': 0
}).then((res) =>{ }).then((res) => {
this.roomList = res.data this.roomList = res.data
}) })
@ -403,13 +431,12 @@ export default {
'money', 'money',
'remake', 'remake',
'duration', 'duration',
'content', 'content'
) )
) )
}) })
}, },
handleSubmit (e) { handleSubmit(e) {
e.preventDefault() e.preventDefault()
this.form.validateFields((err, values) => { this.form.validateFields((err, values) => {
if (!err) { if (!err) {
@ -433,10 +460,11 @@ export default {
}) })
} }
}) })
}, }
} }
} }
function getBase64 (img, callback) {
function getBase64(img, callback) {
const reader = new FileReader() const reader = new FileReader()
reader.addEventListener('load', () => callback(reader.result)) reader.addEventListener('load', () => callback(reader.result))
reader.readAsDataURL(img) reader.readAsDataURL(img)
@ -444,28 +472,28 @@ function getBase64 (img, callback) {
</script> </script>
<style scoped> <style scoped>
.self-item-cell{ .self-item-cell {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.self-item-cell .self-item{ .self-item-cell .self-item {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
width: 50%; width: 50%;
} }
.self-item-cell .self-item:first-of-type{ .self-item-cell .self-item:first-of-type {
margin-right: 10px; margin-right: 10px;
} }
.self-item-cell .self-item .title{ .self-item-cell .self-item .title {
margin-right: 10px; margin-right: 10px;
} }
.self-item-cell .self-item .input{ .self-item-cell .self-item .input {
flex: 1; flex: 1;
} }