后台会议室管理开发

This commit is contained in:
471615499@qq.com 2024-09-25 00:22:02 +08:00
parent 441a813e12
commit 5435cbf135
4 changed files with 446 additions and 660 deletions

3
.gitignore vendored
View File

@ -19,3 +19,6 @@ yarn-error.log*
*.njsproj *.njsproj
*.sln *.sln
*.sw* *.sw*
vue.config.js
.env.development

View File

@ -4,24 +4,33 @@ const api = {
roomContent: '/meeting/roomContent' roomContent: '/meeting/roomContent'
} }
export function getRoomContentList (parameter) { export function getMeetingDict(parameter) {
return axios({ return axios({
url: api.roomContent + '/list', url: '/app/mr/getConstData',
method: 'get', method: 'post',
params: parameter params: parameter
}) })
} }
export function get (id) { export function getRoomContentList(parameter) {
return axios({ return axios({
url: api.roomContent + '/get/'+id, // url: api.roomContent + '/list',
url: '/admin/meetingRoom/list?pageNum=',
method: 'post',
params: parameter
})
}
export function get(id) {
return axios({
url: api.roomContent + '/get/' + id,
method: 'get', method: 'get',
params: {} params: {}
}) })
} }
export function selectSearchInfoByType (parameter) { export function selectSearchInfoByType(parameter) {
return axios({ return axios({
url: api.roomContent + '/searchInfo/1', url: api.roomContent + '/searchInfo/1',
method: 'get', method: 'get',
@ -29,7 +38,7 @@ export function selectSearchInfoByType (parameter) {
}) })
} }
export function selectSearchInfoByCapacity (parameter) { export function selectSearchInfoByCapacity(parameter) {
return axios({ return axios({
url: api.roomContent + '/searchInfo/2', url: api.roomContent + '/searchInfo/2',
method: 'get', method: 'get',
@ -37,7 +46,7 @@ export function selectSearchInfoByCapacity (parameter) {
}) })
} }
export function selectSearchInfoByShape (parameter) { export function selectSearchInfoByShape(parameter) {
return axios({ return axios({
url: api.roomContent + '/searchInfo/4', url: api.roomContent + '/searchInfo/4',
method: 'get', method: 'get',
@ -45,9 +54,20 @@ export function selectSearchInfoByShape (parameter) {
}) })
} }
export function saveRoomContent (parameter) { export function saveRoomContent(parameter) {
return axios({ return axios({
url: api.roomContent + (parameter.id > 0 ? '/update' : '/save'), url: '/admin/meetingRoom' + (parameter.id > 0 ? '/update' : '/save'),
method: 'post',
params: parameter,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
export function getRoomInfo(parameter) {
return axios({
url: '/app/mr/roomMrs',
method: 'post', method: 'post',
data: parameter, data: parameter,
headers: { headers: {
@ -56,7 +76,7 @@ export function saveRoomContent (parameter) {
}) })
} }
export function addRoomServe (parameter) { export function addRoomServe(parameter) {
return axios({ return axios({
url: api.roomContent + '/addRoomServe', url: api.roomContent + '/addRoomServe',
method: 'post', method: 'post',
@ -67,7 +87,7 @@ export function addRoomServe (parameter) {
}) })
} }
export function addRoomItem (parameter) { export function addRoomItem(parameter) {
return axios({ return axios({
url: api.roomContent + '/addRoomItem', url: api.roomContent + '/addRoomItem',
method: 'post', method: 'post',
@ -79,7 +99,7 @@ export function addRoomItem (parameter) {
} }
//根据会议室id 获取服务列表 //根据会议室id 获取服务列表
export function selectRoomServeByRoom (parameter) { export function selectRoomServeByRoom(parameter) {
return axios({ return axios({
url: api.roomContent + '/selectRoomServeByRoom', url: api.roomContent + '/selectRoomServeByRoom',
method: 'post', method: 'post',
@ -91,7 +111,7 @@ export function selectRoomServeByRoom (parameter) {
} }
export function getFloorList (parameter) { export function getFloorList(parameter) {
return axios({ return axios({
url: api.roomContent + '/getFloorList', url: api.roomContent + '/getFloorList',
method: 'get', method: 'get',
@ -99,7 +119,7 @@ export function getFloorList (parameter) {
}) })
} }
export function getCustomerList (parameter) { export function getCustomerList(parameter) {
return axios({ return axios({
url: api.roomContent + '/customerList', url: api.roomContent + '/customerList',
method: 'get', method: 'get',
@ -108,7 +128,7 @@ export function getCustomerList (parameter) {
} }
export function selectRoomById (parameter) { export function selectRoomById(parameter) {
return axios({ return axios({
url: api.roomContent + '/selectRoomById', url: api.roomContent + '/selectRoomById',
method: 'get', method: 'get',
@ -117,7 +137,7 @@ export function selectRoomById (parameter) {
} }
export function getRoomListByFloorId (parameter) { export function getRoomListByFloorId(parameter) {
return axios({ return axios({
url: api.roomContent + '/getRoomListByFloorId', url: api.roomContent + '/getRoomListByFloorId',
method: 'get', method: 'get',
@ -125,7 +145,7 @@ export function getRoomListByFloorId (parameter) {
}) })
} }
export function getRoomListByBuildIdsRq (parameter) { export function getRoomListByBuildIdsRq(parameter) {
return axios({ return axios({
url: api.roomContent + '/getRoomListByBuildIds', url: api.roomContent + '/getRoomListByBuildIds',
method: 'post', method: 'post',
@ -136,7 +156,7 @@ export function getRoomListByBuildIdsRq (parameter) {
}) })
} }
export function selectRoomItemByRoom (parameter) { export function selectRoomItemByRoom(parameter) {
return axios({ return axios({
url: api.roomContent + '/selectRoomItemByRoom', url: api.roomContent + '/selectRoomItemByRoom',
method: 'post', method: 'post',
@ -148,15 +168,14 @@ export function selectRoomItemByRoom (parameter) {
} }
export function delRoomContent (parameter) { export function delRoomContent(parameter) {
return axios({ return axios({
url: api.roomContent + '/remove', // url: api.roomContent + '/remove',
url: '/admin/meetingRoom/remove',
method: 'post', method: 'post',
params: parameter params: parameter
}) })
} }
export const roomContentExport = api.roomContent + '/export' export const roomContentExport = api.roomContent + '/export'

View File

@ -4,36 +4,15 @@
<a-form layout='inline'> <a-form layout='inline'>
<a-row :gutter='48'> <a-row :gutter='48'>
<a-col :md='5' :sm='15'> <a-col :md='5' :sm='15'>
<a-form-item label='关键词'> <a-form-item label='会议室名称'>
<a-input placeholder='请输入关键词' v-model='queryParam.meetingName' /> <a-input placeholder='请输入名称' v-model='queryParam.meetingName' />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :md='5' :sm='15'> <a-col :md='5' :sm='15'>
<a-form-item label='会议室类型'> <a-form-item label='所在楼层'>
<a-select v-model='queryParam.typeName' placeholder='请选择会议室类型'> <a-select v-model='queryParam.typeName'>
<a-select-option :value='1'> <a-select-option v-for='item in typeList' :value='item.value'>
会议室 {{ item.text }}
</a-select-option>
<a-select-option :value='2'>
路演厅
</a-select-option>
<a-select-option :value='3'>
洽谈室
</a-select-option>
<a-select-option :value='4'>
直播间
</a-select-option>
<a-select-option :value='5'>
茶室
</a-select-option>
<a-select-option :value='6'>
长阳会客厅
</a-select-option>
<a-select-option :value='7'>
多功能厅
</a-select-option>
<a-select-option :value='8'>
数据要素
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
@ -41,35 +20,38 @@
<a-col :md='5' :sm='15'> <a-col :md='5' :sm='15'>
<a-form-item label='排列形状'> <a-form-item label='排列形状'>
<a-select v-model='queryParam.shape' placeholder='请选择排列形状'> <a-select v-model='queryParam.shape' placeholder='请选择排列形状'>
<a-select-option value='围桌式'> <a-select-option v-for='item in shapeList' :value='item.value'>
围桌式 {{ item.text }}
</a-select-option>
<a-select-option value='课桌式'>
课桌式
</a-select-option>
<a-select-option value='长方形'>
长方形
</a-select-option>
<a-select-option value='U形'>
U形
</a-select-option>
<a-select-option value='鱼骨形'>
鱼骨形
</a-select-option>
<a-select-option value='开放形'>
开放形
</a-select-option>
<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 :md='5' :sm='15'> <a-col :md='5' :sm='15'>
<a-form-item label='容纳人数'> <a-form-item label='容纳人数'>
<a-select v-model='queryParam.capacityNum' placeholder='请选择类型'> <a-select v-model='queryParam.capacityNum' placeholder='请选择范围'>
<a-select-option v-for='(item,index) in capacityList' :key='item.id' :value='item.capacityNum'> <a-select-option value=''>
{{ item.capacityNum }} 全部
</a-select-option>
<a-select-option value='1'>
0-10
</a-select-option>
<a-select-option value='2'>
11-20
</a-select-option>
<a-select-option value='3'>
21-30
</a-select-option>
<a-select-option value='4'>
31-40
</a-select-option>
<a-select-option value='5'>
41-50
</a-select-option>
<a-select-option value='6'>
50-100
</a-select-option>
<a-select-option value='7'>
100以上
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
@ -77,7 +59,7 @@
<a-col :md='8' :sm='24'> <a-col :md='8' :sm='24'>
<span class='table-page-search-submitButtons'> <span class='table-page-search-submitButtons'>
<a-button type='primary' @click='$refs.table.refresh(true)'>查询</a-button> <a-button type='primary' @click='$refs.table.refresh(true)'>查询</a-button>
<a-button style='margin-left: 8px' @click='() => (queryParam = {})'>重置</a-button> <a-button style='margin-left: 8px' @click='reset'>重置</a-button>
</span> </span>
</a-col> </a-col>
</a-row> </a-row>
@ -107,9 +89,9 @@
<a @click='handleServeTable(record)'>{{ record.serveCount }}</a> <a @click='handleServeTable(record)'>{{ record.serveCount }}</a>
</span> </span>
<span slot='action' slot-scope='text, record'> <span slot='action' slot-scope='text, record'>
<a v-if='editEnabel' @click='handleEdit(record)'>编辑</a> <a v-if='editEnabel' @click='handleEdit(record.id)'>编辑</a>
<a-divider type='vertical' /> <a-divider type='vertical' />
<a v-if='removeEnable' @click='deleteShow([record.id])'>删除</a> <a v-if='removeEnable' @click='delByIds([record.id])'>删除</a>
</span> </span>
</s-table> </s-table>
@ -125,29 +107,7 @@
<roomContent-modal ref='modal' @ok='handleOk' /> <roomContent-modal ref='modal' @ok='handleOk' />
<a-modal v-model='visible' title='会议设备' width='600px' @ok='itemHandleOk()'>
<a-modal v-model='visible' title='会议设备' width='500px' @ok='itemHandleOk()'>
<div class='table-page-search-wrapper'>
<a-form layout='inline'>
<a-row :gutter='48'>
<!-- <a-col :md='8' :sm='15'>-->
<!-- <a-form-item label='关键词'>-->
<!-- <a-input placeholder='请输入关键词' v-model='itemQueryParam.itemName' />-->
<!-- </a-form-item>-->
<!-- </a-col>-->
<a-col :md='8' :sm='24'>
<span class='table-page-search-submitButtons'>
<!-- 查询有问题-->
<a-button type='primary' @click='$refs.table.refresh(true)'>查询</a-button>
<a-button style='margin-left: 8px' @click='() => (itemQueryParam = {})'>重置</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<div class='table-operator'>
</div>
<s-table <s-table
size='default' size='default'
ref='itemTable' ref='itemTable'
@ -158,39 +118,7 @@
> >
</s-table> </s-table>
</a-modal> </a-modal>
<a-modal v-model='visible1' title='会议服务' width='1000px' @ok='serveHandleOk()'> <a-modal v-model='visible1' title='会议服务' width='600px' @ok='serveHandleOk()'>
<div class='table-page-search-wrapper'>
<a-form layout='inline'>
<a-row :gutter='48'>
<!-- <a-col :md='8' :sm='15'>-->
<!-- <a-form-item label='关键词'>-->
<!-- <a-input placeholder='请输入关键词' v-model='serveQueryParam.serveName' />-->
<!-- </a-form-item>-->
<!-- </a-col>-->
<a-col :md='8' :sm='30'>
<a-form-item label='服务类型'>
<a-select v-model='serveQueryParam.itemType' placeholder='请选择服务类型'>
<a-select-option value='1'>
免费服务
</a-select-option>
<a-select-option value='2'>
增值服务
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md='8' :sm='24'>
<span class='table-page-search-submitButtons'>
<!-- 查询有问题-->
<a-button type='primary' @click='$refs.table.refresh(true)'>查询</a-button>
<a-button style='margin-left: 8px' @click='() => (serveQueryParam = {})'>重置</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<div class='table-operator'>
</div>
<s-table <s-table
size='default' size='default'
ref='serveTable' ref='serveTable'
@ -198,11 +126,7 @@
:rowSelection='{ selectedRowKeys: selectedServeRowKeys, onChange: onServeSelectChange }' :rowSelection='{ selectedRowKeys: selectedServeRowKeys, onChange: onServeSelectChange }'
:columns='serveColumns' :columns='serveColumns'
:data='serveLoadData' :data='serveLoadData'
:scroll='{ x: true }'
> >
<span slot='serveType' slot-scope='text'>
{{ text | serveTypeFilter }}
</span>
</s-table> </s-table>
</a-modal> </a-modal>
</a-card> </a-card>
@ -216,7 +140,7 @@ import { STable } from '@/components'
import { import {
getRoomContentList, delRoomContent, selectSearchInfoByType, getRoomContentList, delRoomContent, selectSearchInfoByType,
selectSearchInfoByShape, selectSearchInfoByCapacity, addRoomServe, selectSearchInfoByShape, selectSearchInfoByCapacity, addRoomServe,
selectRoomServeByRoom, selectRoomItemByRoom selectRoomServeByRoom, selectRoomItemByRoom, getMeetingDict
} from '@/api/admin/meeting/roomContent' } from '@/api/admin/meeting/roomContent'
import { getRoomServeList } from '@/api/admin/meeting/roomServe' import { getRoomServeList } from '@/api/admin/meeting/roomServe'
import { getRoomItemList } from '@/api/admin/meeting/roomItem' import { getRoomItemList } from '@/api/admin/meeting/roomItem'
@ -224,6 +148,7 @@ import RoomContentModal from './modules/RoomContentModal.vue'
import { checkPermission } from '@/utils/permissions' import { checkPermission } from '@/utils/permissions'
import { getDictArray } from '@/utils/dict' import { getDictArray } from '@/utils/dict'
import { addRoomItem } from '../../../api/admin/meeting/roomContent' import { addRoomItem } from '../../../api/admin/meeting/roomContent'
import { delRepairDevice } from '@/api/admin/repair/repairDevice'
const typeMap = {} const typeMap = {}
const serveTypeMap = {} const serveTypeMap = {}
@ -235,6 +160,7 @@ export default {
}, },
data() { data() {
return { return {
parkId: 25,
labelCol: { labelCol: {
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 5 } sm: { span: 5 }
@ -251,9 +177,13 @@ export default {
// / // /
advanced: false, advanced: false,
// //
queryParam: {}, queryParam: {
itemQueryParam: { meetingName: '',
typeName: '',
shape: '',
capacityNum: ''
}, },
itemQueryParam: {},
serveQueryParam: {}, serveQueryParam: {},
capacityList: [], capacityList: [],
shapeList: [], shapeList: [],
@ -269,28 +199,21 @@ export default {
{ {
title: '服务名称', title: '服务名称',
dataIndex: 'serveName' dataIndex: 'serveName'
},
{
title: '服务类型',
dataIndex: 'serveType',
scopedSlots: { customRender: 'serveType' }
},
{
title: '金额',
dataIndex: 'money'
} }
], ],
// //
columns: [ columns: [
{ {
title: '会议室名称', title: '会议室名称',
dataIndex: 'meetingName' dataIndex: 'name'
}, },
{ {
title: '会议室类型', title: '所属楼层',
dataIndex: 'type', dataIndex: 'floor',
scopedSlots: { customRender: 'type' } },
{
title: '所属房间',
dataIndex: 'roomNum'
}, },
{ {
title: '容纳人数', title: '容纳人数',
@ -298,26 +221,17 @@ export default {
}, },
{ {
title: '排列形状', title: '排列形状',
dataIndex: 'shape' dataIndex: 'typeName'
}, },
{ {
title: '会议室设备', title: '会议室设备',
dataIndex: 'itemCount', dataIndex: 'device',
scopedSlots: { customRender: 'item' }
},
{
title: '关联服务',
dataIndex: 'serveCount',
scopedSlots: { customRender: 'serve' }
},
{
title: '金额',
dataIndex: 'money'
},
{
title: '负责人',
dataIndex: 'headName'
}, },
// {
// title: '',
// dataIndex: 'serveCount',
// scopedSlots: { customRender: 'serve' }
// },
{ {
title: '操作', title: '操作',
width: '200px', width: '200px',
@ -327,19 +241,32 @@ export default {
], ],
// Promise // Promise
loadData: (parameter) => { loadData: (parameter) => {
return getRoomContentList(Object.assign(parameter, this.queryParam)) const param = {
name: this.queryParam.meetingName, //
floor: this.queryParam.typeName, //
typeName: this.queryParam.shape, //
capacityNum: this.queryParam.capacityNum //
}
// if (param.typeName === '') {
// delete param.typeName
// }
// if (param.shape === '') {
// delete param.shape
// }
// if (param.capacityNum === '') {
// delete param.capacityNum
// }
return getRoomContentList(Object.assign(parameter, param))
}, },
itemLoadData: (parameter) => { itemLoadData: (parameter) => {
console.log(this.parkId) let param = {
let param ={ parkId: this.parkId
parkId:this.parkId
} }
return getRoomItemList(Object.assign(parameter, param)) return getRoomItemList(Object.assign(parameter, param))
}, },
serveLoadData: (parameter) => { serveLoadData: (parameter) => {
let param ={ let param = {
parkId:this.parkId parkId: this.parkId
} }
return getRoomServeList(Object.assign(parameter, param)) return getRoomServeList(Object.assign(parameter, param))
}, },
@ -358,7 +285,7 @@ export default {
// //
deleteVisible: false, deleteVisible: false,
deleteLoading: false, deleteLoading: false,
deleteIds : null, deleteIds: null
} }
}, },
filters: { filters: {
@ -374,18 +301,65 @@ export default {
TypeData.map(d => { TypeData.map(d => {
typeMap[d.dictValue] = { text: d.dictLabel } typeMap[d.dictValue] = { text: d.dictLabel }
}) })
console.log(typeMap) // console.log(typeMap)
const serveTypeData = await getDictArray('serve_type') const serveTypeData = await getDictArray('serve_type')
serveTypeData.map(d => { serveTypeData.map(d => {
serveTypeMap[d.dictValue] = { text: d.dictLabel } serveTypeMap[d.dictValue] = { text: d.dictLabel }
}) })
}, },
mounted() { mounted() {
this.selectSearchInfoByType() this.getDict()
this.selectSearchInfoByShape() // this.selectSearchInfoByType()
this.selectSearchInfoByCapacity() // this.selectSearchInfoByShape()
// this.selectSearchInfoByCapacity()
}, },
methods: { methods: {
//
getDict() {
getMeetingDict().then((res) => {
//
let _typeList = []
let dataObj = res.data
for (let key in dataObj.floors) {
let eachObj = dataObj.floors[key]
const keys = Object.keys(eachObj)
_typeList.push({
text: keys[0],
value: keys[0]
})
}
_typeList = [{
text: '全部',
value: ''
}, ..._typeList]
this.typeList = _typeList
//
let _shapeList = []
for (let key in dataObj.types) {
let eachObj = dataObj.types[key]
const keys = Object.keys(eachObj)
_shapeList.push({
text: keys[0],
value: keys[0]
})
}
_shapeList = [{
text: '全部',
value: ''
}, ..._shapeList]
this.shapeList = _shapeList
})
},
reset() {
this.queryParam = {
meetingName: '',
typeName: '',
shape: '',
capacityNum: ''
}
this.$refs.table.refresh(true)
},
itemHandleOk() { itemHandleOk() {
console.log(this.meetingId) console.log(this.meetingId)
let params = { let params = {
@ -433,9 +407,9 @@ export default {
}, },
handleItemTable(record) { handleItemTable(record) {
let params = { let params = {
roomContentId: record.id, roomContentId: record.id
} }
this.parkId = record.parkId // this.parkId = record.parkId
selectRoomItemByRoom(params).then((res) => { selectRoomItemByRoom(params).then((res) => {
this.selectedItemRowKeys = res.data.map(d => d.itemId) this.selectedItemRowKeys = res.data.map(d => d.itemId)
@ -447,10 +421,9 @@ export default {
}, },
handleServeTable(record) { handleServeTable(record) {
let params = { let params = {
romeContentId: record.id, romeContentId: record.id
} }
this.parkId = record.parkId // this.parkId = record.parkId
selectRoomServeByRoom(params).then((res) => { selectRoomServeByRoom(params).then((res) => {
this.selectedServeRowKeys = res.data.map(d => d.serveId) this.selectedServeRowKeys = res.data.map(d => d.serveId)
this.selectedServeRows = res.data this.selectedServeRows = res.data
@ -461,21 +434,21 @@ export default {
}, },
// //
selectSearchInfoByType() { // selectSearchInfoByType() {
selectSearchInfoByType().then((res) => { // selectSearchInfoByType().then((res) => {
this.typeList = res.roomContents // this.typeList = res.roomContents
}) // })
}, // },
selectSearchInfoByShape() { // selectSearchInfoByShape() {
selectSearchInfoByShape().then((res) => { // selectSearchInfoByShape().then((res) => {
this.shapeList = res.roomContents // this.shapeList = res.roomContents
}) // })
}, // },
selectSearchInfoByCapacity() { // selectSearchInfoByCapacity() {
selectSearchInfoByCapacity().then((res) => { // selectSearchInfoByCapacity().then((res) => {
this.capacityList = res.roomContents // this.capacityList = res.roomContents
}) // })
}, // },
onSelectChange(selectedRowKeys, selectedRows) { onSelectChange(selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows this.selectedRows = selectedRows
@ -483,37 +456,43 @@ export default {
handleAdd() { handleAdd() {
this.$refs.modal.add() this.$refs.modal.add()
}, },
handleEdit(record) { handleEdit(id) {
this.$refs.modal.edit(record) this.$refs.modal.edit(id)
}, },
handleOk() { handleOk() {
this.$refs.table.refresh(true) this.$refs.table.refresh(true)
}, },
delByIds(ids) { delByIds(ids) {
delRoomContent({ ids: ids.join(',') }).then((res) => { const _this = this
if (res.code === 0) { if (ids === '') {
this.$message.success('删除成功') this.$message.error('请选择后删除!')
this.handleOk() return
} else { }
this.$message.error(res.msg) this.$confirm({
title: '警告',
content: '删除后不可恢复,是否确认删除?',
okText: '是',
okType: 'warning',
cancelText: '否',
onOk() {
delRoomContent({ ids: ids.join(',') }).then((res) => {
if (res.code === 0) {
_this.$message.success('删除成功')
_this.handleOk()
} else {
_this.$message.error(res.msg)
}
_this.selectedRowKeys = []
//
_this.deleteVisible = false
_this.deleteLoading = false
})
},
onCancel() {
} }
this.selectedRowKeys = []
//
this.deleteVisible = false
this.deleteLoading = false
}) })
}, },
deleteShow(ids) {
this.deleteVisible = true
this.deleteIds = ids
},
deleteOk() {
this.deleteLoading = true;
this.delByIds(this.deleteIds)
},
deleteCancel() {
this.deleteVisible = false
},
}, },
watch: { watch: {
/* /*

View File

@ -18,235 +18,71 @@
<a-row> <a-row>
<a-col :span='10'> <a-col :span='10'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='所属地区'> <a-form-item label='所属楼层' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-select v-decorator="['tenantId', {rules: [{ required: true, message: '请选择所属地区' }]}]" <a-select v-decorator="['floor',{rules: [{ required: true, message: '选择所属楼层' }]}]"
@change='selectTenant' placeholder='所属楼层'>
:disabled='tenantEnable'> <a-select-option v-for='item in typeList' :value='item.value'>
<a-select-option v-for='item in tenantList' :key='item.id'>{{ item.name }}</a-select-option> {{ item.text }}
</a-select>
</a-form-item>
</a-col>
<a-col :span='10'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='所属园区'>
<a-select v-decorator="['parkId', {rules: [{ required: true, message: '请选择所属园区' }]}]"
@change='selectPark'
:disabled='parkEnable'>
<a-select-option v-for='item in parkList' :key='item.id'>{{ item.name }}</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span='10'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='所属楼宇'>
<a-select v-decorator="['buildingId', {rules: [{ required: true, message: '请选择所属楼宇' }]}]"
@change='selectBuilding'>
<a-select-option v-for='item in buildingList' :key='item.id'>{{ item.buildingName }}</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span='10'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='所属楼层'>
<a-select v-decorator="['buildId',{rules: [{ required: true, message: '请选择所属楼层' }]}]"
placeholder='所属楼层'
@change='selectBuildingDetail'>
<a-select-option v-for='item in buildingDetailList' :key='item.id' :value='item.id'>
{{ item.floorName }}
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row>
<a-row>
<a-col :span='10'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='所属房间'>
<a-select v-decorator="['roomId',{rules: [{ required: true, message: '选择所属房间' }]}]"
placeholder='所属房间'
@change='selectRoom'>
<a-select-option v-for='item in roomList' :key='item.id' :value='item.id'>
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span='10'>
<a-form-item label='会议室面积' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-input placeholder='会议室面积'
v-decorator="['area',{rules: [{ required: true, message: '请输入会议室面积' }]}]"
disabled='disabled' />
</a-form-item>
</a-col>
</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='会议室名称' <a-input placeholder='会议室名称'
v-decorator="['meetingName',{rules: [{ required: true, message: '输入会议室名称' }]}]" /> v-decorator="['name',{rules: [{ required: true, message: '输入会议室名称' }]}]" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</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: '输入会议室类型' }]}]" <a-select v-decorator="['typeName',{rules: [{ required: true, message: '选择会议室形式' }]}]"
placeholder='会议室类型'> placeholder='会议室形式'>
<a-select-option :value='1'> <a-select-option v-for='item in shapeList' :value='item.value'>
会议室 {{ item.text }}
</a-select-option>
<a-select-option :value='2'>
路演厅
</a-select-option>
<a-select-option :value='3'>
洽谈室
</a-select-option>
<a-select-option :value='4'>
直播间
</a-select-option>
<a-select-option :value='5'>
茶室
</a-select-option>
<a-select-option :value='6'>
长阳会客厅
</a-select-option>
<a-select-option :value='7'>
多功能厅
</a-select-option>
<a-select-option :value='8'>
数据要素
</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-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='所属房间 '>
<a-input placeholder='所属房间'
v-decorator="['roomNum',{rules: [{ required: true, message: '输入所属房间' }]}]" />
</a-form-item>
</a-col>
</a-row> </a-row>
<a-row> <a-row>
<a-col :span='10'>
<a-form-item label='会议室面积' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-input placeholder='会议室面积'
v-decorator="['area',{rules: [{ required: true, message: '请输入会议室面积' }]}]" />
</a-form-item>
</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='容纳人数' <a-input placeholder='容纳人数'
v-decorator="['capacityNum',{rules: [{ required: true, message: '输入容纳人数' }]}]" /> v-decorator="['capacityNum',{rules: [{ required: true, message: '输入容纳人数' }]}]" />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span='10'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='会议室地址 '>
<a-input placeholder='会议室地址'
v-decorator="['address',{rules: [{ required: true, message: '输入会议室地址' }]}]" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span='10'>
<a-form-item label='排列形状' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-select v-decorator="['shape',{rules: [{ required: true, message: '输入排列形状' }]}]"
placeholder='排列形状'>
<a-select-option value='围桌式'>
围桌式
</a-select-option>
<a-select-option value='课桌式'>
课桌式
</a-select-option>
<a-select-option value='长方形'>
长方形
</a-select-option>
<a-select-option value='U形'>
U形
</a-select-option>
<a-select-option value='鱼骨形'>
鱼骨形
</a-select-option>
<a-select-option value='开放形'>
开放形
</a-select-option>
<a-select-option value='会议形'>
会议形
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span='10'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='负责人'>
<a-input placeholder='负责人'
v-decorator="['headName',{rules: [{ required: true, message: '输入负责人' }]}]" />
</a-form-item>
</a-col>
<a-col :span='10'>
<a-form-item label='负责人联系方式' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-input placeholder='负责人联系方式'
v-decorator="['headPhone',{rules: [{ required: true, message: '输入负责人联系方式'}]}]" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span='10'>
<a-form-item label='预约开始时间' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-time-picker v-decorator="['startTime',{rules: [{ required: true, message: '请选择预约开始时间'}]}]"
format='HH:mm'
valueFormat='YYYY-MM-DD HH:mm:ss'
placeholder='选择时间'
:show-time="{ defaultValue: moment('00:00:00', 'HH:mm:ss') }"
style='width: 100%;' />
</a-form-item>
</a-col>
<a-col :span='10'>
<a-form-item label='预约结束时间' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-time-picker v-decorator="['endDate',{rules: [{ required: true, message: '请选择预约结束时间'}]}]"
format='HH:mm'
valueFormat='YYYY-MM-DD HH:mm:ss'
placeholder='选择时间'
:show-time="{ defaultValue: moment('00:00:00', 'HH:mm:ss') }"
style='width: 100%;' />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span='10'>
<a-form-item label='是否使用优惠劵' :labelCol='labelCol' :wrapperCol='wrapperCol'>
<a-select v-decorator="['isTicket',{rules: [{ required: true, message: '请选择优惠券'}]}]"
placeholder='是否使用优惠劵'>
<a-select-option :value='0'>
</a-select-option>
<a-select-option :value='1'>
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span='10'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='是否收费'>
<a-select v-decorator="['isToll',{rules: [{ required: true, message: '请选择是否收费'}]}]"
@change='selectChangeIsToll' placeholder='是否收费'>
<a-select-option :value='0'>
</a-select-option>
<a-select-option :value='1'>
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span='10'>
<a-form-item v-if='mdl.isToll === 0' :labelCol='labelCol' :wrapperCol='wrapperCol' label='收费金额 '>
<a-input placeholder='收费金额 '
v-decorator="['money',{rules: [{ required: true, message: '请输入收费金额'}]}]" />
</a-form-item>
</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='起租时长' <a-checkbox-group :defaultValue='defaultCheckedList'
v-decorator="['duration',{rules: [{ required: true, message: '请输入起租时长'}]}]" /> v-decorator="['device',{rules: [{ required: true, message: '请选择会议室设备' }]}]">
<a-checkbox v-for='item in deviceList' :value='item.value'>
{{ item.text }}
</a-checkbox>
</a-checkbox-group>
</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="['isShow',{rules: [{ required: true, message: '请选择是否启用'}]}]" <a-select v-decorator="['enable',{rules: [{ required: true, message: '请选择是否启用'}]}]"
placeholder='是否启用'> placeholder='是否启用'>
<a-select-option :value='0'> <a-select-option :value='0'>
@ -259,12 +95,6 @@
</a-col> </a-col>
</a-row> </a-row>
<a-row> <a-row>
<a-col :span='10'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='金额备注 '>
<a-textarea placeholder='如起租时长为x小时,超过x小时后,按照每小时x元计算 ' v-decorator="['remake']"
style='height: 100px' />
</a-form-item>
</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-textarea placeholder='会议室描述 ' v-decorator="['content']" style='height: 100px' /> <a-textarea placeholder='会议室描述 ' v-decorator="['content']" style='height: 100px' />
@ -275,7 +105,7 @@
<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-upload <a-upload
v-decorator="['indoorPicUrl', {rules: [{ required: true, message: '上传室内图片' }]}]" v-decorator="['files', {rules: [{ required: true, message: '上传室内图片' }]}]"
list-type='picture-card' list-type='picture-card'
class='avatar-uploader' class='avatar-uploader'
:file-list='fileList' :file-list='fileList'
@ -303,7 +133,7 @@
import { import {
saveRoomContent, saveRoomContent,
getRoomListByFloorId, getRoomListByFloorId,
selectRoomById selectRoomById, getMeetingDict, getRoomInfo
} from '@/api/admin/meeting/roomContent' } from '@/api/admin/meeting/roomContent'
import pick from 'lodash.pick' import pick from 'lodash.pick'
import storage from 'store' import storage from 'store'
@ -326,7 +156,8 @@ export default {
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 8 } sm: { span: 8 }
}, },
uploadUrl: process.env.VUE_APP_API_BASE_URL + '/api/dfs/upload', // uploadUrl: process.env.VUE_APP_API_BASE_URL + '/api/dfs/upload',
uploadUrl: process.env.VUE_APP_API_BASE_URL + '/admin/meetingRoom/upload',
imageUrl: '', imageUrl: '',
headers: { headers: {
Authorization: 'Bearer ' + storage.get(ACCESS_TOKEN) Authorization: 'Bearer ' + storage.get(ACCESS_TOKEN)
@ -341,11 +172,17 @@ export default {
typeData: [], typeData: [],
form: this.$form.createForm(this), form: this.$form.createForm(this),
userDetail: {}, userDetail: {},
tenantList: [], // typeList: [],
parkList: [], // shapeList: [],
buildingList: [], // deviceList: [],
buildingDetailList: [], // typeMap: {},
roomList: [], // shapeMap: {},
deviceMap: {},
// tenantList: [], //
// parkList: [], //
// buildingList: [], //
// buildingDetailList: [], //
// roomList: [], //
tenantEnable: false, tenantEnable: false,
parkEnable: false, parkEnable: false,
previewVisible: false, previewVisible: false,
@ -359,153 +196,86 @@ export default {
}, },
mounted() { mounted() {
this.getDict()
}, },
methods: { methods: {
getDict() {
getMeetingDict().then((res) => {
//
let _typeList = []
let _typeMap = {}
let dataObj = res.data
for (let key in dataObj.floors) {
let eachObj = dataObj.floors[key]
const keys = Object.keys(eachObj)
_typeList.push({
text: keys[0],
value: keys[0]
})
this.typeMap[keys[0]] = eachObj[keys[0]]
// this.typeMap.keys[0] = eachObj[keys[0]]
}
this.typeList = _typeList
//
let _shapeList = []
for (let key in dataObj.types) {
let eachObj = dataObj.types[key]
const keys = Object.keys(eachObj)
_shapeList.push({
text: keys[0],
value: keys[0]
})
this.shapeMap[keys[0]] = eachObj[keys[0]]
}
this.shapeList = _shapeList
//
let _deviceList = []
for (let key in dataObj.devices) {
let eachObj = dataObj.devices[key]
const keys = Object.keys(eachObj)
_deviceList.push({
text: keys[0],
value: keys[0]
})
this.deviceMap[keys[0]] = eachObj[keys[0]]
}
this.deviceList = _deviceList
})
},
// //
getUserDetail() { getUserDetail() {
getInfo().then(res => { getInfo().then(res => {
console.log('getUserDetail', res) console.log('getUserDetail', res)
this.userDetail = res this.userDetail = res
// 5 // 5
if (this.userDetail.roleIds && this.userDetail.roleIds.length > 0 && this.userDetail.roleIds[0] == 5) { // if (this.userDetail.roleIds && this.userDetail.roleIds.length > 0 && this.userDetail.roleIds[0] == 5) {
// // //
// // //
let { id } = this.mdl // let { id } = this.mdl
if (!id) { // if (!id) {
// -> // // ->
this.selectTenant(this.userDetail.tenantId) // this.selectTenant(this.userDetail.tenantId)
// -> // // ->
this.selectPark(this.userDetail.parkId) // this.selectPark(this.userDetail.parkId)
} // }
// // //
// // //
this.tenantEnable = true // this.tenantEnable = true
this.parkEnable = true // this.parkEnable = true
// // //
this.mdl.parkId = this.userDetail.parkId // this.mdl.parkId = this.userDetail.parkId
this.mdl.tenantId = this.userDetail.tenantId // this.mdl.tenantId = this.userDetail.tenantId
this.form.setFieldsValue({ // this.form.setFieldsValue({
parkId: this.mdl.parkId, // parkId: this.mdl.parkId,
tenantId: this.mdl.tenantId // tenantId: this.mdl.tenantId
}) // })
} // }
console.log(this.mdl)
}) })
}, },
//
getTenantData() {
getTenantList().then(res => {
this.tenantList = res.rows
})
},
// ->
selectTenant(id) {
console.log('selectTenant', id)
//
this.mdl.parkId = null //
this.mdl.buildingId = null //
this.mdl.buildId = null //
this.mdl.roomId = null //
this.mdl.area = null //
this.form.setFieldsValue({
parkId: null, //
buildingId: null, //
buildId: null, //
roomId: null, //
area: null //
})
//
getParkList({
tenantId: id
}).then(res => {
this.parkList = res.rows
})
},
// ->
selectPark(id) {
//
this.mdl.buildingId = null //
this.mdl.buildId = null //
this.mdl.roomId = null //
this.mdl.area = null //
this.form.setFieldsValue({
buildingId: null, //
buildId: null, //
roomId: null, //
area: null //
})
//
getBuildingList({
parkId: id
}).then(res => {
this.buildingList = res.rows
})
},
// ->
selectBuilding(id) {
//
this.mdl.buildId = null //
this.mdl.roomId = null //
this.mdl.area = null //
this.form.setFieldsValue({
buildId: null, //
roomId: null, //
area: null //
})
//
getBuildingDetailList({
buildingId: id
}).then(res => {
this.buildingDetailList = res.rows
})
},
// ->
selectBuildingDetail(buildingDetailId) {
//
this.getRoomListByFloorIdMethod(buildingDetailId)
},
//
getRoomListByFloorIdMethod(buildingDetailId, id) {
//
this.mdl.roomId = null //
this.mdl.area = null //
this.form.setFieldsValue({
roomId: null, //
area: null //
})
//
getRoomListByFloorId({
'id': id,
'buildingDetailId': buildingDetailId,
'type': 0
}).then((res) => {
this.roomList = res.data
})
},
// ->
selectRoom(id) {
//
this.mdl.area = null //
this.form.setFieldsValue({
area: null //
})
//
selectRoomById({
'id': id
}).then((res) => {
this.form.setFieldsValue({
area: res.data.area
})
})
},
//
selectChangeIsToll(value) {
this.mdl.isToll = value
},
moment, moment,
// //
async handlePreview(file) { async handlePreview(file) {
@ -525,108 +295,123 @@ export default {
add() { add() {
this.form.resetFields() this.form.resetFields()
this.mdl = {} this.mdl = {}
this.edit({ id: 0 }) this.fileList = []
},
edit(record) {
this.mdl = Object.assign(this.mdl, record)
let copyMdl = JSON.parse(JSON.stringify(this.mdl))
//
this.getTenantData()
//
if (record.id != 0) { //
// ->
if (copyMdl.tenantId) {
this.mdl = JSON.parse(JSON.stringify(copyMdl))
this.selectTenant(copyMdl.tenantId)
}
// ->
if (copyMdl.parkId) {
this.mdl = JSON.parse(JSON.stringify(copyMdl))
this.selectPark(copyMdl.parkId)
}
// ->
if (copyMdl.buildingId) {
this.mdl = JSON.parse(JSON.stringify(copyMdl))
this.selectBuilding(copyMdl.buildingId)
}
// ->
if (copyMdl.buildId) {
this.mdl = JSON.parse(JSON.stringify(copyMdl))
this.getRoomListByFloorIdMethod(copyMdl.buildId, copyMdl.roomId)
}
//
this.mdl = JSON.parse(JSON.stringify(copyMdl))
} else { //
}
//
this.getUserDetail()
//
if (this.mdl.indoorPicUrl) {
this.mdl.indoorPicUrl = JSON.parse(this.mdl.indoorPicUrl)
this.mdl.indoorPicUrl.forEach((item, i) => {
item.url = process.env.VUE_APP_API_BASE_URL + item.url
})
this.fileList = this.mdl.indoorPicUrl
} else {
this.fileList = []
}
//
this.visible = true this.visible = true
this.$nextTick(() => { },
this.form.setFieldsValue( edit(id) {
pick( this.form.resetFields()
this.mdl, this.mdl = {}
'id', this.fileList = []
'type', getRoomInfo({ roomId: id }).then((res) => {
'meetingName', let deviceStr = res.room.device
'capacityNum', if (deviceStr != '') {
'expandNum', deviceStr = deviceStr.replaceAll(' ', '')
'indoorPicUrl', let deviceArr = deviceStr.split('#')
'startTime', if (deviceArr[0] == '') {
'endDate', deviceArr.shift()
'money', }
'isShow', res.room.device = deviceArr
'shape', }
'area', this.mdl = Object.assign(this.mdl, res.room)
'address',
'headName', this.visible = true
'headPhone', this.$nextTick(() => {
'isTicket', this.form.setFieldsValue(
'isToll', pick(
'money', this.mdl,
'remake', 'id',
'duration', 'device',
'content', 'typeName',
'tenantId', 'name',
'parkId', 'capacityNum',
'buildingId', 'floor',
'buildId', 'files',
'roomId' 'startTime',
'endDate',
'money',
'enable',
'typeName',
'content',
'area',
'roomNum'
)
) )
) })
//
console.log(this.mdl)
if (this.mdl.imgs) {
let files = []
let fileId = []
for (let key in this.mdl.imgs) {
let eachObj = this.mdl.imgs[key]
files.push({
uid: '0',
id: eachObj.id,
url: process.env.VUE_APP_MODEL_BASE_URL + eachObj.url,
status: 'done',
name: eachObj.url
})
fileId.push(eachObj.id)
}
this.fileList = files
this.mdl.files = fileId
} else {
this.fileList = []
}
}) })
// // let copyMdl = JSON.parse(JSON.stringify(this.mdl))
// //
// // this.getTenantData()
// //
// if (record.id != 0) { //
// } else { //
// }
// //
// this.getUserDetail()
// //
}, },
handleSubmit(e) { handleSubmit(e) {
e.preventDefault() e.preventDefault()
this.form.validateFields((err, values) => { this.form.validateFields((err, values) => {
if (!err) { if (!err) {
console.log('Received values of form: ', values) console.log('Received values of form: ', values)
this.confirmLoading = true this.confirmLoading = false
const indoorPicUrl = []
// const indoorPicUrl = []
const files = []
this.fileList.forEach((file, index) => { this.fileList.forEach((file, index) => {
// //
if (file.hasOwnProperty('name') && file.hasOwnProperty('url') && file.hasOwnProperty('uid')) {
indoorPicUrl.push({ 'name': file.name, 'url': file.name, 'uid': index }) if (file.hasOwnProperty('url') && file.hasOwnProperty('id')) {
// indoorPicUrl.push({ 'name': file.name, 'url': file.name, 'id': file.id })
files.push(file.id)
} }
if (file.status === 'done' && file.response.code === 0) { if (file.hasOwnProperty('response') && file.status === 'done' && file.response.code === 0) {
const data = file.response const data = file.response
indoorPicUrl.push({ 'name': data.fileName, 'url': data.fileName, 'uid': index }) // indoorPicUrl.push({ 'name': data.fileName, 'url': data.fileName, 'uid': index })
files.push(file.response.id)
} }
}) })
// //
values.indoorPicUrl = JSON.stringify(indoorPicUrl) // values.indoorPicUrl = JSON.stringify(indoorPicUrl)
values.files = files
let deviceArr = values.device
let deviceStr = ''
for (let key in deviceArr) {
let eachObj = deviceArr[key]
deviceStr += '#' + eachObj + ' '
}
values.device = deviceStr
values.floorId = this.typeMap[values.floor]
values.typeId = this.shapeMap[values.typeName]
saveRoomContent(values) saveRoomContent(values)
.then((res) => { .then((res) => {
if (res.code === 0) { if (res.code === 0) {