mirror of
https://gitee.com/elegant_wings/dbd-meeting-html.git
synced 2025-06-21 06:49:37 +08:00
Merge branch 'shoot-hand-html' of https://gitee.com/elegant_wings/dbd-meeting-html into shoot-hand-html
This commit is contained in:
commit
c251517e24
3
.gitignore
vendored
3
.gitignore
vendored
@ -19,3 +19,6 @@ yarn-error.log*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw*
|
||||
|
||||
vue.config.js
|
||||
.env.development
|
@ -1,6 +1,9 @@
|
||||
<h1 align="center">ICS Ant</h1>
|
||||
|
||||
Overview
|
||||
## 前端文档地址:
|
||||
https://1x.antdv.com/components/
|
||||
|
||||
----
|
||||
项目下载和运行
|
||||
----
|
||||
|
15
src/App.vue
15
src/App.vue
@ -9,18 +9,21 @@
|
||||
<script>
|
||||
import { domTitle, setDocumentTitle } from '@/utils/domUtil'
|
||||
import { i18nRender } from '@/locales'
|
||||
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
locale: zhCN, // 默认ant配置全部为中文
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
locale () {
|
||||
// 只是为了切换语言时,更新标题
|
||||
const { title } = this.$route.meta
|
||||
title && (setDocumentTitle(`${i18nRender(title)} - ${domTitle}`))
|
||||
return this.$i18n.getLocaleMessage(this.$store.getters.lang).antLocale
|
||||
}
|
||||
// 禁止切换语言,默认全部为中文
|
||||
// locale () {
|
||||
// // 只是为了切换语言时,更新标题
|
||||
// const { title } = this.$route.meta
|
||||
// title && (setDocumentTitle(`${i18nRender(title)} - ${domTitle}`))
|
||||
// return this.$i18n.getLocaleMessage(this.$store.getters.lang).antLocale
|
||||
// }
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
93
src/api/admin/meeting/count.js
Normal file
93
src/api/admin/meeting/count.js
Normal file
@ -0,0 +1,93 @@
|
||||
import { axios } from '@/utils/request'
|
||||
|
||||
|
||||
/**
|
||||
* 会议室统计数据
|
||||
* /admin/ms/roomStats
|
||||
* @参数 day 格式:2024-09-30
|
||||
* @返回
|
||||
* alreadyBooking, 已预约会议室数量
|
||||
* noBooking,未预约会议室数量
|
||||
* going,开会中会议室数量
|
||||
* free,空闲中会议室数量
|
||||
* @param parameter
|
||||
* @returns {AxiosPromise}
|
||||
*/
|
||||
export function getNum(parameter) {
|
||||
return axios({
|
||||
url: '/admin/ms/roomStats',
|
||||
method: 'post',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 按日历统计数据
|
||||
* /admin/ms/calendar
|
||||
* @参数 month 月份,格式:2024-09
|
||||
* @返回,月份的每一天 的 预约记录
|
||||
* @param parameter
|
||||
* @returns {AxiosPromise}
|
||||
*/
|
||||
export function getCalendar(parameter) {
|
||||
return axios({
|
||||
url: '/admin/ms/calendar',
|
||||
method: 'post',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 按照会议状态统计
|
||||
* /admin/ms/meetingStats
|
||||
* 无参
|
||||
* @返回
|
||||
* * wait, 待开始会议数量
|
||||
* * going,进行中会议数量
|
||||
* * closed,已结束会议数量
|
||||
* @param parameter
|
||||
* @returns {AxiosPromise}
|
||||
*/
|
||||
export function getStatus(parameter) {
|
||||
return axios({
|
||||
url: '/admin/ms/meetingStats',
|
||||
method: 'post',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 会议待办 (前10条)
|
||||
* /admin/ms/meetingAudit
|
||||
* 无参
|
||||
* @param parameter
|
||||
* @returns {AxiosPromise}
|
||||
*/
|
||||
export function getWait(parameter) {
|
||||
return axios({
|
||||
url: '/admin/ms/meetingAudit',
|
||||
method: 'post',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 图表统计数据
|
||||
*
|
||||
*
|
||||
* @参数 startDate 统计数据开始时间,日期格式示例:2024-08-23
|
||||
* @参数 endDate 统计数据结束时间,日期格式示例:2024-09-23
|
||||
* @返回
|
||||
* roomRank,会议室使用排名
|
||||
* serve,服务情况
|
||||
* roomType,会议室形式统计
|
||||
* orgMeeting,部门开会情况(取前10个部门)
|
||||
* everyDay,开会情况--按天(取前20天)
|
||||
*/
|
||||
export function getChartData(parameter) {
|
||||
return axios({
|
||||
url: '/admin/ms/chartStats',
|
||||
method: 'post',
|
||||
params: parameter
|
||||
})
|
||||
}
|
@ -4,24 +4,33 @@ const api = {
|
||||
roomContent: '/meeting/roomContent'
|
||||
}
|
||||
|
||||
export function getRoomContentList (parameter) {
|
||||
export function getMeetingDict(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/list',
|
||||
method: 'get',
|
||||
url: '/app/mr/getConstData',
|
||||
method: 'post',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
export function get (id) {
|
||||
export function getRoomContentList(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/get/'+id,
|
||||
// url: api.roomContent + '/list',
|
||||
url: '/admin/meetingRoom/list',
|
||||
method: 'post',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
export function get(id) {
|
||||
return axios({
|
||||
url: api.roomContent + '/get/' + id,
|
||||
method: 'get',
|
||||
params: {}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export function selectSearchInfoByType (parameter) {
|
||||
export function selectSearchInfoByType(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/searchInfo/1',
|
||||
method: 'get',
|
||||
@ -29,7 +38,7 @@ export function selectSearchInfoByType (parameter) {
|
||||
})
|
||||
}
|
||||
|
||||
export function selectSearchInfoByCapacity (parameter) {
|
||||
export function selectSearchInfoByCapacity(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/searchInfo/2',
|
||||
method: 'get',
|
||||
@ -37,7 +46,7 @@ export function selectSearchInfoByCapacity (parameter) {
|
||||
})
|
||||
}
|
||||
|
||||
export function selectSearchInfoByShape (parameter) {
|
||||
export function selectSearchInfoByShape(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/searchInfo/4',
|
||||
method: 'get',
|
||||
@ -45,9 +54,23 @@ export function selectSearchInfoByShape (parameter) {
|
||||
})
|
||||
}
|
||||
|
||||
export function saveRoomContent (parameter) {
|
||||
export function saveRoomContent(parameter, files) {
|
||||
return axios({
|
||||
url: api.roomContent + (parameter.id > 0 ? '/update' : '/save'),
|
||||
url: '/admin/meetingRoom' + (parameter.id > 0 ? '/update' : '/save'),
|
||||
method: 'post',
|
||||
data: {
|
||||
room: parameter,
|
||||
files: files
|
||||
},
|
||||
headers: {
|
||||
'Content-Type': 'application/json;charset=UTF-8'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export function getRoomInfo(parameter) {
|
||||
return axios({
|
||||
url: '/app/mr/roomMrs',
|
||||
method: 'post',
|
||||
data: parameter,
|
||||
headers: {
|
||||
@ -56,7 +79,7 @@ export function saveRoomContent (parameter) {
|
||||
})
|
||||
}
|
||||
|
||||
export function addRoomServe (parameter) {
|
||||
export function addRoomServe(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/addRoomServe',
|
||||
method: 'post',
|
||||
@ -67,7 +90,7 @@ export function addRoomServe (parameter) {
|
||||
})
|
||||
}
|
||||
|
||||
export function addRoomItem (parameter) {
|
||||
export function addRoomItem(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/addRoomItem',
|
||||
method: 'post',
|
||||
@ -79,7 +102,7 @@ export function addRoomItem (parameter) {
|
||||
}
|
||||
|
||||
//根据会议室id 获取服务列表
|
||||
export function selectRoomServeByRoom (parameter) {
|
||||
export function selectRoomServeByRoom(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/selectRoomServeByRoom',
|
||||
method: 'post',
|
||||
@ -91,7 +114,7 @@ export function selectRoomServeByRoom (parameter) {
|
||||
}
|
||||
|
||||
|
||||
export function getFloorList (parameter) {
|
||||
export function getFloorList(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/getFloorList',
|
||||
method: 'get',
|
||||
@ -99,7 +122,7 @@ export function getFloorList (parameter) {
|
||||
})
|
||||
}
|
||||
|
||||
export function getCustomerList (parameter) {
|
||||
export function getCustomerList(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/customerList',
|
||||
method: 'get',
|
||||
@ -108,7 +131,7 @@ export function getCustomerList (parameter) {
|
||||
}
|
||||
|
||||
|
||||
export function selectRoomById (parameter) {
|
||||
export function selectRoomById(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/selectRoomById',
|
||||
method: 'get',
|
||||
@ -117,7 +140,7 @@ export function selectRoomById (parameter) {
|
||||
}
|
||||
|
||||
|
||||
export function getRoomListByFloorId (parameter) {
|
||||
export function getRoomListByFloorId(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/getRoomListByFloorId',
|
||||
method: 'get',
|
||||
@ -125,7 +148,7 @@ export function getRoomListByFloorId (parameter) {
|
||||
})
|
||||
}
|
||||
|
||||
export function getRoomListByBuildIdsRq (parameter) {
|
||||
export function getRoomListByBuildIdsRq(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/getRoomListByBuildIds',
|
||||
method: 'post',
|
||||
@ -136,7 +159,7 @@ export function getRoomListByBuildIdsRq (parameter) {
|
||||
})
|
||||
}
|
||||
|
||||
export function selectRoomItemByRoom (parameter) {
|
||||
export function selectRoomItemByRoom(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/selectRoomItemByRoom',
|
||||
method: 'post',
|
||||
@ -148,15 +171,14 @@ export function selectRoomItemByRoom (parameter) {
|
||||
}
|
||||
|
||||
|
||||
export function delRoomContent (parameter) {
|
||||
export function delRoomContent(parameter) {
|
||||
return axios({
|
||||
url: api.roomContent + '/remove',
|
||||
// url: api.roomContent + '/remove',
|
||||
url: '/admin/meetingRoom/remove',
|
||||
method: 'post',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
export const roomContentExport = api.roomContent + '/export'
|
||||
|
34
src/api/admin/meeting/uto.js
Normal file
34
src/api/admin/meeting/uto.js
Normal file
@ -0,0 +1,34 @@
|
||||
import { axios } from '@/utils/request'
|
||||
|
||||
const api = {
|
||||
meetingUto: '/admin/uto'
|
||||
}
|
||||
|
||||
export function getMeetingUtoList (parameter) {
|
||||
return axios({
|
||||
url: api.meetingUto + '/list',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
export function saveMeetingUto (parameter) {
|
||||
return axios({
|
||||
url: api.meetingUto + (parameter.id > 0 ? '/update' : '/save'),
|
||||
method: 'post',
|
||||
data: parameter,
|
||||
headers: {
|
||||
'Content-Type': 'application/json;charset=UTF-8'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export function delMeetingUto (parameter) {
|
||||
return axios({
|
||||
url: api.meetingUto + '/remove',
|
||||
method: 'post',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
export const meetingUtoExport = api.meetingUto + '/export'
|
@ -36,20 +36,39 @@
|
||||
:columns='columns'
|
||||
:data='loadData'
|
||||
>
|
||||
<!-- 数据类型(1.普通用户,3派单员,5 维修人, 7管理员, 9 楼层管理员)-->
|
||||
<span slot='dataType' slot-scope='text,record'>
|
||||
<a-tag v-if='record.dataType == 1' color='pink'>
|
||||
维修员
|
||||
普通用户
|
||||
</a-tag>
|
||||
<a-tag v-if='record.dataType == 2' color='green'>
|
||||
<a-tag v-if='record.dataType == 3' color='green'>
|
||||
派单员
|
||||
</a-tag>
|
||||
<a-tag v-if='record.dataType == 3' color='green'>
|
||||
网格长
|
||||
<a-tag v-if='record.dataType == 5' color='cyan'>
|
||||
维修人
|
||||
</a-tag>
|
||||
<a-tag v-if='record.dataType == 7' color='blue'>
|
||||
管理员
|
||||
</a-tag>
|
||||
<a-tag v-if='record.dataType == 9' color='purple'>
|
||||
楼层管理员
|
||||
</a-tag>
|
||||
</span>
|
||||
<span slot='roomRole' slot-scope='text,record'>
|
||||
<a-tag v-if='record.roomRole == 1' color='pink'>
|
||||
普通用户
|
||||
</a-tag>
|
||||
<a-tag v-if='record.roomRole == 3' color='green'>
|
||||
会议服务人员
|
||||
</a-tag>
|
||||
<a-tag v-if='record.roomRole == 5' color='cyan'>
|
||||
会议管理员
|
||||
</a-tag>
|
||||
|
||||
</span>
|
||||
<span slot='action' slot-scope='text, record'>
|
||||
<!-- <a v-if='editEnabel' @click='handleEdit(record)'>编辑</a>-->
|
||||
<!-- <a-divider type='vertical' />-->
|
||||
<a v-if='editEnabel' @click='handleEdit(record)'>编辑</a>
|
||||
<a-divider type='vertical' />
|
||||
<a v-if='removeEnable' @click='delByIds([record.id])'>删除</a>
|
||||
</span>
|
||||
</s-table>
|
||||
@ -97,10 +116,15 @@ export default {
|
||||
dataIndex: 'mobile'
|
||||
},
|
||||
{
|
||||
title: '角色类型',
|
||||
title: '报修角色类型',
|
||||
dataIndex: 'dataType',
|
||||
scopedSlots: { customRender: 'dataType' }
|
||||
},
|
||||
{
|
||||
title: '会议角色类型',
|
||||
dataIndex: 'roomRole',
|
||||
scopedSlots: { customRender: 'roomRole' }
|
||||
},
|
||||
{
|
||||
title: '创建时间',
|
||||
dataIndex: 'createTime'
|
||||
|
@ -103,6 +103,7 @@
|
||||
size='default'
|
||||
ref='table'
|
||||
rowKey='id'
|
||||
showPagination="true"
|
||||
:rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}'
|
||||
:columns='columns'
|
||||
:data='loadData'
|
||||
|
665
src/views/admin/meeting/MeetingCount.vue
Normal file
665
src/views/admin/meeting/MeetingCount.vue
Normal file
@ -0,0 +1,665 @@
|
||||
<template>
|
||||
<div class='container'>
|
||||
<a-card title='会议室管理'>
|
||||
<a slot='extra'>
|
||||
<a-date-picker @change='onChangeNumCount' :default-value='nowDate' />
|
||||
</a>
|
||||
<a-row>
|
||||
<a-col :span='6'>
|
||||
<div class='eachNum'>
|
||||
<div class='icon' style='background-color: #58A3F7;'>
|
||||
<a-icon type='ordered-list' style='font-size: 50px;color: #FFF' />
|
||||
</div>
|
||||
<div class='des'>
|
||||
<div class='title'>
|
||||
已预约会议室
|
||||
</div>
|
||||
<div class='num'>
|
||||
{{ roomNum.alreadyBooking }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span='6'>
|
||||
<div class='eachNum'>
|
||||
<div class='icon' style='background-color: #52C1F5;'>
|
||||
<a-icon type='unordered-list' style='font-size: 50px;color: #FFF' />
|
||||
</div>
|
||||
<div class='des'>
|
||||
<div class='title'>
|
||||
未预约会议室
|
||||
</div>
|
||||
<div class='num'>
|
||||
{{ roomNum.noBooking }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span='6'>
|
||||
<div class='eachNum'>
|
||||
<div class='icon' style='background-color: #4BCED0;'>
|
||||
<a-icon type='team' style='font-size: 50px;color: #FFF' />
|
||||
</div>
|
||||
<div class='des'>
|
||||
<div class='title'>
|
||||
开会中会议室
|
||||
</div>
|
||||
<div class='num'>
|
||||
{{ roomNum.going }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span='6'>
|
||||
<div class='eachNum'>
|
||||
<div class='icon' style='background-color: #FB6260;'>
|
||||
<a-icon type='profile' style='font-size: 50px;color: #FFF' />
|
||||
</div>
|
||||
<div class='des'>
|
||||
<div class='title'>
|
||||
空闲中会议室
|
||||
</div>
|
||||
<div class='num'>
|
||||
{{ roomNum.free }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-card>
|
||||
<a-row>
|
||||
<a-col :span='18'>
|
||||
<a-card title='会议日历' bodyStyle='height: 780px'>
|
||||
<a-calendar :header-render='headerRender'>
|
||||
<ul slot='dateCellRender' slot-scope='value' class='c_meeting' style='padding: 0'>
|
||||
<a-popover :title='item.title' v-for='item in getListData(value)'>
|
||||
<template slot='content'>
|
||||
<div>预约部门:{{ item.org }}</div>
|
||||
<div>会议时间:{{ item.time }}</div>
|
||||
</template>
|
||||
<li>
|
||||
{{ item.time }}
|
||||
</li>
|
||||
</a-popover>
|
||||
</ul>
|
||||
</a-calendar>
|
||||
</a-card>
|
||||
</a-col>
|
||||
<a-col :span='6'>
|
||||
<a-card title='会议状态'>
|
||||
<a-row>
|
||||
<a-col :span='18'>
|
||||
<a-icon type='message' theme='filled' style='font-size: 24px;color: #E6A23C' />
|
||||
<label style='position: relative;top: -1px;left: 10px;font-size: 20px'>
|
||||
进行中
|
||||
</label>
|
||||
</a-col>
|
||||
<a-col :span='6'>
|
||||
<div style='text-align: right; font-weight: 700;font-size: 20px; position: relative;top: -1px;'>
|
||||
{{ statusNum.going }}
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row style='margin-top: 15px'>
|
||||
<a-col :span='18'>
|
||||
<a-icon type='flag' theme='filled' style='font-size: 24px;color: #409EFF' />
|
||||
<label style='position: relative;top: -1px;left: 10px;font-size: 20px'>
|
||||
未开始
|
||||
</label>
|
||||
</a-col>
|
||||
<a-col :span='6'>
|
||||
<div style='text-align: right; font-weight: 700;font-size: 20px; position: relative;top: -1px;'>
|
||||
{{ statusNum.wait }}
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row style='margin-top: 15px'>
|
||||
<a-col :span='18'>
|
||||
<a-icon type='carry-out' theme='filled' style='font-size: 24px;color: #919399' />
|
||||
<label style='position: relative;top: -1px;left: 10px;font-size: 20px'>
|
||||
已结束
|
||||
</label>
|
||||
</a-col>
|
||||
<a-col :span='6'>
|
||||
<div style='text-align: right; font-weight: 700;font-size: 20px; position: relative;top: -1px;'>
|
||||
{{ statusNum.closed }}
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-card>
|
||||
<a-card title='任务代办(小程序审核)' bodyStyle='height: 554px'>
|
||||
<a-list item-layout='horizontal' :data-source='waitList'>
|
||||
<a-list-item slot='renderItem' slot-scope='item, index'>
|
||||
<!-- <a slot='actions'>审核</a>-->
|
||||
<a-list-item-meta
|
||||
:description="item.time + '(' +item.org + ')'"
|
||||
>
|
||||
<a slot='title'>{{ item.title }}</a>
|
||||
</a-list-item-meta>
|
||||
</a-list-item>
|
||||
</a-list>
|
||||
</a-card>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-card title='数据统计'>
|
||||
<a slot='extra'>
|
||||
<a-range-picker @change='onChangeChartCount' :default-value='[nowMonthStart,nowMonthEnd]' />
|
||||
</a>
|
||||
</a-card>
|
||||
<a-row>
|
||||
<a-col :span='8'>
|
||||
<a-card title='会议室使用排名'>
|
||||
<div id='chartUse' style='width: 100%; height: 500px'></div>
|
||||
</a-card>
|
||||
</a-col>
|
||||
<a-col :span='16'>
|
||||
<a-row>
|
||||
<a-col :span='12'>
|
||||
<a-card title='服务情况'>
|
||||
<div id='chartServe' style='width: 100%; height: 200px'></div>
|
||||
</a-card>
|
||||
</a-col>
|
||||
<a-col :span='12'>
|
||||
<a-card title='形式统计'>
|
||||
<div id='chartType' style='width: 100%; height: 200px'></div>
|
||||
</a-card>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :span='24'>
|
||||
<a-card title='部门开会情况'>
|
||||
<div id='chartDep' style='width: 100%; height: 194px'></div>
|
||||
</a-card>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :span='24'>
|
||||
<a-card title='开会情况'>
|
||||
<div id='chartMeeting' style='width: 100%; height: 300px'></div>
|
||||
</a-card>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</div>
|
||||
</template>
|
||||
<style>
|
||||
.eachNum {
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
.eachNum .icon {
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
float: left;
|
||||
|
||||
text-align: center;
|
||||
border-radius: 10px;
|
||||
padding-top: 18px;
|
||||
}
|
||||
|
||||
.eachNum .des {
|
||||
margin-left: 110px;
|
||||
}
|
||||
|
||||
.eachNum .title {
|
||||
width: 100%;
|
||||
height: 45px;
|
||||
line-height: 45px;
|
||||
font-size: 20px;
|
||||
color: #9D9D9D;
|
||||
}
|
||||
|
||||
.eachNum .num {
|
||||
width: 100%;
|
||||
height: 45px;
|
||||
line-height: 25px;
|
||||
font-size: 30px;
|
||||
color: #666666;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.c_meeting li {
|
||||
background-color: #F0F2F6;
|
||||
margin-bottom: 5px;
|
||||
padding: 2px 5px;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
import * as echarts from 'echarts'
|
||||
import moment from 'moment'
|
||||
import { STable } from '@/components'
|
||||
|
||||
import {
|
||||
getNum,
|
||||
getCalendar,
|
||||
getStatus,
|
||||
getWait,
|
||||
getChartData
|
||||
} from '@/api/admin/meeting/count'
|
||||
|
||||
|
||||
export default {
|
||||
name: 'MeetingCount',
|
||||
components: {
|
||||
STable
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
nowDate: moment().format('YYYY-MM-DD'), // 当前日期
|
||||
nowMonth: moment().format('YYYY-MM'),
|
||||
nowMonthStart: moment().startOf('months').format('YYYY-MM-DD'), // 当月第一天
|
||||
nowMonthEnd: moment().endOf('months').format('YYYY-MM-DD'), // 当月最后一天
|
||||
roomNum: {
|
||||
alreadyBooking: 0, // 已预约
|
||||
noBooking: 0, // 未预约
|
||||
going: 0, // 开会中
|
||||
free: 0 // 空闲中
|
||||
},
|
||||
calendarData: {}, // 日历数据
|
||||
statusNum: {
|
||||
going: 0,
|
||||
closed: 0,
|
||||
wait: 0
|
||||
}, // 会议室状态数据
|
||||
waitList: [] // 待办数据
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getRoomNum()
|
||||
this.getCalendarCount()
|
||||
this.getStatusCount()
|
||||
this.getWaitList()
|
||||
this.getChartCount()
|
||||
// this.drawChart()
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 改变会议室管理统计日期
|
||||
* @param date
|
||||
* @param dateString
|
||||
*/
|
||||
onChangeNumCount(date, dateString) {
|
||||
this.nowDate = dateString
|
||||
this.getRoomNum()
|
||||
},
|
||||
onChangeCalendar(date, dateString) {
|
||||
console.log(date)
|
||||
console.log(dateString)
|
||||
},
|
||||
/**
|
||||
* 获取第一行数据统计
|
||||
*/
|
||||
getRoomNum() {
|
||||
getNum({
|
||||
day: this.nowDate
|
||||
}).then(res => {
|
||||
const data = res.data
|
||||
this.roomNum = {
|
||||
alreadyBooking: data.alreadyBooking, // 已预约
|
||||
noBooking: data.noBooking, // 未预约
|
||||
going: data.going, // 开会中
|
||||
free: data.free // 空闲中
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 日历选择器顶部改写方法
|
||||
* @param value
|
||||
* @param type
|
||||
* @param onChange
|
||||
* @param onTypeChange
|
||||
* @returns {JSX.Element}
|
||||
*/
|
||||
headerRender({ value, type, onChange, onTypeChange }) {
|
||||
const nowMonth = this.nowMonth
|
||||
return (
|
||||
<div slot='extra' style={{ textAlign: 'center', position: 'relative', top: '-88px' }}>
|
||||
<div style={{ position: 'absolute', right: '15px', top: '20px' }}>
|
||||
<a-month-picker onChange={(date, dateString) => {
|
||||
this.onChangeCalendar(date, dateString, value, onChange)
|
||||
}} defaultValue={nowMonth} />
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
},
|
||||
/**
|
||||
*
|
||||
* 改变会议日历日期事件,先获取数据,再改写日期
|
||||
* @param date
|
||||
* @param dateString
|
||||
* @param value
|
||||
* @param onChange
|
||||
*/
|
||||
onChangeCalendar(date, dateString, value, onChange) {
|
||||
let year = date.year()
|
||||
let month = date.month()
|
||||
this.nowMonth = dateString
|
||||
const newValue = value.clone()
|
||||
this.getCalendarCount()
|
||||
newValue.year(year)
|
||||
newValue.month(month)
|
||||
onChange(newValue)
|
||||
},
|
||||
/**
|
||||
* 获取日历统计数据方法
|
||||
*/
|
||||
getCalendarCount() {
|
||||
let calendarData = {}
|
||||
getCalendar({
|
||||
month: this.nowMonth
|
||||
}).then(res => {
|
||||
let data = res.data
|
||||
for (let key in data) {
|
||||
let date = key
|
||||
let meeting = data[key]
|
||||
if (meeting.length > 0) {
|
||||
// 处理一下事件,去掉事件前的年月日
|
||||
let newMeeting = []
|
||||
for (let each in meeting) {
|
||||
let eachM = meeting[each]
|
||||
let timeArr = eachM.time.split(' ')
|
||||
eachM.time = timeArr[1]
|
||||
newMeeting.push(eachM)
|
||||
}
|
||||
calendarData[date] = newMeeting
|
||||
}
|
||||
}
|
||||
this.calendarData = calendarData
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 比对日历日期,返回当日会议方法
|
||||
* @param value
|
||||
* @returns {*[]}
|
||||
*/
|
||||
getListData(value) {
|
||||
let nowDate = moment(value).format('YYYY-MM-DD')
|
||||
let listData
|
||||
let calendarData = this.calendarData
|
||||
if (calendarData[nowDate] && calendarData[nowDate].length > 1) {
|
||||
listData = calendarData[nowDate]
|
||||
}
|
||||
return listData || []
|
||||
},
|
||||
/**
|
||||
* 获取状态统计
|
||||
*/
|
||||
getStatusCount() {
|
||||
getStatus().then(res => {
|
||||
this.statusNum = {
|
||||
going: res.data.going,
|
||||
closed: res.data.closed,
|
||||
wait: res.data.wait
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 获取待办列表
|
||||
*/
|
||||
getWaitList() {
|
||||
getWait().then(res => {
|
||||
let data = res.data
|
||||
if (data.length > 6) {
|
||||
// 取前6个,不要10个
|
||||
data = data.splice(0, 6)
|
||||
}
|
||||
this.waitList = data
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 统计图顶部时间范围选择变化方法
|
||||
* @param date
|
||||
* @param dateStringArr
|
||||
* @param dateString
|
||||
*/
|
||||
onChangeChartCount(date, dateStringArr, dateString) {
|
||||
console.log(dateStringArr)
|
||||
this.nowMonthStart = dateStringArr[0]
|
||||
this.nowMonthEnd = dateStringArr[1]
|
||||
this.getChartCount()
|
||||
},
|
||||
/**
|
||||
* 获取统计图数据
|
||||
*/
|
||||
getChartCount() {
|
||||
getChartData({
|
||||
startDate: this.nowMonthStart,
|
||||
endDate: this.nowMonthEnd
|
||||
}).then(res => {
|
||||
this.drawChart(res.data)
|
||||
})
|
||||
},
|
||||
drawChart(data) {
|
||||
// 会议室使用排名
|
||||
let chartUse = echarts.init(document.getElementById('chartUse'))
|
||||
let useData = data.roomRank
|
||||
let chartUseOp = {
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: useData.y
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
grid: {
|
||||
top: '0',
|
||||
left: '2%',
|
||||
right: '2%',
|
||||
bottom: '1%',
|
||||
containLabel: true
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: useData.total,
|
||||
type: 'bar',
|
||||
label: {
|
||||
show: true, // 显示数值
|
||||
position: 'inside' // 数值显示的位置
|
||||
},
|
||||
barWidth: '20px',
|
||||
itemStyle: {
|
||||
color: '#50B5FF', // 设置柱状图的颜色
|
||||
borderRadius: [0, 5, 5, 0] // 分别设置柱子左上、右上、右下、左下的圆角
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
chartUse.setOption(chartUseOp)
|
||||
// 服务情况
|
||||
let chartServe = echarts.init(document.getElementById('chartServe'))
|
||||
let serveData = data.serve
|
||||
let serveNumAll = 0
|
||||
for (let key in serveData) {
|
||||
let eachNum = serveData[key].value
|
||||
serveNumAll = serveNumAll + eachNum
|
||||
}
|
||||
let chartServeOp = {
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical', // 垂直排列
|
||||
right: 10, // 距离右侧 10px
|
||||
top: 'bottom' // 位于底部
|
||||
}, // 图例配置
|
||||
grid: {
|
||||
top: '0',
|
||||
left: '2%',
|
||||
right: '2%',
|
||||
bottom: '1%',
|
||||
containLabel: true
|
||||
},
|
||||
graphic: {
|
||||
type: 'text',
|
||||
left: 'center',
|
||||
top: 'center',
|
||||
style: {
|
||||
text: serveNumAll, // 这里填写总数
|
||||
textAlign: 'center',
|
||||
fill: '#000', // 文字的颜色
|
||||
fontSize: 20
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '服务情况',
|
||||
type: 'pie',
|
||||
radius: ['50%', '70%'],
|
||||
avoidLabelOverlap: false,
|
||||
label: {
|
||||
show: true
|
||||
},
|
||||
emphasis: {
|
||||
label: {
|
||||
show: true,
|
||||
fontSize: 40,
|
||||
fontWeight: 'bold'
|
||||
}
|
||||
},
|
||||
data: serveData
|
||||
}
|
||||
]
|
||||
}
|
||||
chartServe.setOption(chartServeOp)
|
||||
// 形式统计
|
||||
let chartType = echarts.init(document.getElementById('chartType'))
|
||||
let typeData = data.roomType
|
||||
let typeNumAll = 0
|
||||
for (let key in typeData) {
|
||||
let eachNum = typeData[key].value
|
||||
typeNumAll = typeNumAll + eachNum
|
||||
}
|
||||
let chartTypeOp = {
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical', // 垂直排列
|
||||
right: 10, // 距离右侧 10px
|
||||
top: 'bottom' // 位于底部
|
||||
}, // 图例配置
|
||||
grid: {
|
||||
top: '0',
|
||||
left: '2%',
|
||||
right: '2%',
|
||||
bottom: '1%',
|
||||
containLabel: true
|
||||
},
|
||||
graphic: {
|
||||
type: 'text',
|
||||
left: 'center',
|
||||
top: 'center',
|
||||
style: {
|
||||
text: typeNumAll, // 这里填写总数
|
||||
textAlign: 'center',
|
||||
fill: '#000', // 文字的颜色
|
||||
fontSize: 20
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '会议室形式',
|
||||
type: 'pie',
|
||||
radius: ['50%', '70%'],
|
||||
avoidLabelOverlap: false,
|
||||
label: {
|
||||
show: true
|
||||
},
|
||||
emphasis: {
|
||||
label: {
|
||||
show: true,
|
||||
fontSize: 40,
|
||||
fontWeight: 'bold'
|
||||
}
|
||||
},
|
||||
data: typeData
|
||||
// data: [
|
||||
// { value: 1048, name: 'U形会议室' },
|
||||
// { value: 735, name: '圆形会议室' },
|
||||
// { value: 580, name: '课桌型会议室' },
|
||||
// ]
|
||||
}
|
||||
]
|
||||
}
|
||||
chartType.setOption(chartTypeOp)
|
||||
// 部门开会情况
|
||||
let chartDep = echarts.init(document.getElementById('chartDep'))
|
||||
let depData = data.orgMeeting
|
||||
let chartDepOp = {
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: depData.x
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
grid: {
|
||||
top: '3%',
|
||||
left: '2%',
|
||||
right: '2%',
|
||||
bottom: '0%',
|
||||
containLabel: true
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: depData.total,
|
||||
label: {
|
||||
show: true, // 显示数值
|
||||
position: 'inside' // 数值显示的位置
|
||||
},
|
||||
type: 'bar',
|
||||
barWidth: '20px',
|
||||
itemStyle: {
|
||||
color: '#FFEC6D', // 设置柱状图的颜色
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
chartDep.setOption(chartDepOp)
|
||||
// 开会情况统计
|
||||
let chartMeeting = echarts.init(document.getElementById('chartMeeting'))
|
||||
let meetingData = data.everyDay
|
||||
let chartMeetingOp = {
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: meetingData.x
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
grid: {
|
||||
top: '3%',
|
||||
left: '2%',
|
||||
right: '2%',
|
||||
bottom: '0%',
|
||||
containLabel: true
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: meetingData.total,
|
||||
type: 'line',
|
||||
label: {
|
||||
show: true, // 显示数值
|
||||
position: 'top' // 数值显示的位置
|
||||
},
|
||||
itemStyle: {
|
||||
color: new echarts.graphic.LinearGradient(
|
||||
0, 0, 0, 1, // 这四个参数分别表示渐变的起点 (x1, y1) 与终点 (x2, y2)
|
||||
[
|
||||
{offset: 0, color: '#28A9FF'}, // 0% 处的颜色
|
||||
{offset: 1, color: '#C8E8FE'} // 100% 处的颜色
|
||||
]
|
||||
)
|
||||
},
|
||||
areaStyle: {}
|
||||
}
|
||||
]
|
||||
}
|
||||
chartMeeting.setOption(chartMeetingOp)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
@ -4,36 +4,15 @@
|
||||
<a-form layout='inline'>
|
||||
<a-row :gutter='48'>
|
||||
<a-col :md='5' :sm='15'>
|
||||
<a-form-item label='关键词'>
|
||||
<a-input placeholder='请输入关键词' v-model='queryParam.meetingName' />
|
||||
<a-form-item label='会议室名称'>
|
||||
<a-input placeholder='请输入名称' v-model='queryParam.meetingName' />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :md='5' :sm='15'>
|
||||
<a-form-item label='会议室类型'>
|
||||
<a-select v-model='queryParam.typeName' placeholder='请选择会议室类型'>
|
||||
<a-select-option :value='1'>
|
||||
会议室
|
||||
</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-form-item label='所在楼层'>
|
||||
<a-select v-model='queryParam.typeName'>
|
||||
<a-select-option v-for='item in typeList' :value='item.value'>
|
||||
{{ item.text }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
@ -41,35 +20,29 @@
|
||||
<a-col :md='5' :sm='15'>
|
||||
<a-form-item label='排列形状'>
|
||||
<a-select v-model='queryParam.shape' 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 v-for='item in shapeList' :value='item.value'>
|
||||
{{ item.text }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :md='5' :sm='15'>
|
||||
<a-form-item label='容纳人数'>
|
||||
<a-select v-model='queryParam.capacityNum' placeholder='请选择类型'>
|
||||
<a-select-option v-for='(item,index) in capacityList' :key='item.id' :value='item.capacityNum'>
|
||||
{{ item.capacityNum }}
|
||||
<a-select v-model='queryParam.capacityNum' placeholder='请选择范围'>
|
||||
<a-select-option value=''>
|
||||
全部
|
||||
</a-select-option>
|
||||
<a-select-option value='1'>
|
||||
0-20
|
||||
</a-select-option>
|
||||
<a-select-option value='2'>
|
||||
21-50
|
||||
</a-select-option>
|
||||
<a-select-option value='3'>
|
||||
51-100
|
||||
</a-select-option>
|
||||
<a-select-option value='4'>
|
||||
100以上
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
@ -77,7 +50,7 @@
|
||||
<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='() => (queryParam = {})'>重置</a-button>
|
||||
<a-button style='margin-left: 8px' @click='reset'>重置</a-button>
|
||||
</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
@ -93,6 +66,7 @@
|
||||
size='default'
|
||||
ref='table'
|
||||
rowKey='id'
|
||||
showPagination='true'
|
||||
:rowSelection='{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }'
|
||||
:columns='columns'
|
||||
:data='loadData'
|
||||
@ -107,47 +81,14 @@
|
||||
<a @click='handleServeTable(record)'>{{ record.serveCount }}</a>
|
||||
</span>
|
||||
<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 v-if='removeEnable' @click='deleteShow([record.id])'>删除</a>
|
||||
<a v-if='removeEnable' @click='delByIds([record.id])'>删除</a>
|
||||
</span>
|
||||
</s-table>
|
||||
|
||||
<a-modal
|
||||
title='提示'
|
||||
:visible='deleteVisible'
|
||||
:confirm-loading='deleteLoading'
|
||||
@ok='deleteOk'
|
||||
@cancel='deleteCancel'
|
||||
>
|
||||
<p>是否确认删除?</p>
|
||||
</a-modal>
|
||||
|
||||
|
||||
<roomContent-modal ref='modal' @ok='handleOk' />
|
||||
|
||||
|
||||
<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>
|
||||
<a-modal v-model='visible' title='会议设备' width='600px' @ok='itemHandleOk()'>
|
||||
<s-table
|
||||
size='default'
|
||||
ref='itemTable'
|
||||
@ -158,39 +99,7 @@
|
||||
>
|
||||
</s-table>
|
||||
</a-modal>
|
||||
<a-modal v-model='visible1' title='会议服务' width='1000px' @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>
|
||||
<a-modal v-model='visible1' title='会议服务' width='600px' @ok='serveHandleOk()'>
|
||||
<s-table
|
||||
size='default'
|
||||
ref='serveTable'
|
||||
@ -198,11 +107,7 @@
|
||||
:rowSelection='{ selectedRowKeys: selectedServeRowKeys, onChange: onServeSelectChange }'
|
||||
:columns='serveColumns'
|
||||
:data='serveLoadData'
|
||||
:scroll='{ x: true }'
|
||||
>
|
||||
<span slot='serveType' slot-scope='text'>
|
||||
{{ text | serveTypeFilter }}
|
||||
</span>
|
||||
</s-table>
|
||||
</a-modal>
|
||||
</a-card>
|
||||
@ -216,7 +121,7 @@ import { STable } from '@/components'
|
||||
import {
|
||||
getRoomContentList, delRoomContent, selectSearchInfoByType,
|
||||
selectSearchInfoByShape, selectSearchInfoByCapacity, addRoomServe,
|
||||
selectRoomServeByRoom, selectRoomItemByRoom
|
||||
selectRoomServeByRoom, selectRoomItemByRoom, getMeetingDict
|
||||
} from '@/api/admin/meeting/roomContent'
|
||||
import { getRoomServeList } from '@/api/admin/meeting/roomServe'
|
||||
import { getRoomItemList } from '@/api/admin/meeting/roomItem'
|
||||
@ -224,6 +129,7 @@ import RoomContentModal from './modules/RoomContentModal.vue'
|
||||
import { checkPermission } from '@/utils/permissions'
|
||||
import { getDictArray } from '@/utils/dict'
|
||||
import { addRoomItem } from '../../../api/admin/meeting/roomContent'
|
||||
import { delRepairDevice } from '@/api/admin/repair/repairDevice'
|
||||
|
||||
const typeMap = {}
|
||||
const serveTypeMap = {}
|
||||
@ -235,6 +141,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
parkId: 25,
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 5 }
|
||||
@ -251,9 +158,13 @@ export default {
|
||||
// 高级搜索 展开/关闭
|
||||
advanced: false,
|
||||
// 查询参数
|
||||
queryParam: {},
|
||||
itemQueryParam: {
|
||||
queryParam: {
|
||||
meetingName: '',
|
||||
typeName: '',
|
||||
shape: '',
|
||||
capacityNum: ''
|
||||
},
|
||||
itemQueryParam: {},
|
||||
serveQueryParam: {},
|
||||
capacityList: [],
|
||||
shapeList: [],
|
||||
@ -269,28 +180,21 @@ export default {
|
||||
{
|
||||
title: '服务名称',
|
||||
dataIndex: 'serveName'
|
||||
},
|
||||
{
|
||||
title: '服务类型',
|
||||
dataIndex: 'serveType',
|
||||
scopedSlots: { customRender: 'serveType' }
|
||||
},
|
||||
{
|
||||
title: '金额',
|
||||
dataIndex: 'money'
|
||||
}
|
||||
],
|
||||
|
||||
// 表头
|
||||
columns: [
|
||||
{
|
||||
title: '会议室名称',
|
||||
dataIndex: 'meetingName'
|
||||
dataIndex: 'name'
|
||||
},
|
||||
{
|
||||
title: '会议室类型',
|
||||
dataIndex: 'type',
|
||||
scopedSlots: { customRender: 'type' }
|
||||
title: '所属楼层',
|
||||
dataIndex: 'floor',
|
||||
},
|
||||
{
|
||||
title: '所属房间',
|
||||
dataIndex: 'roomNum'
|
||||
},
|
||||
{
|
||||
title: '容纳人数',
|
||||
@ -298,26 +202,17 @@ export default {
|
||||
},
|
||||
{
|
||||
title: '排列形状',
|
||||
dataIndex: 'shape'
|
||||
dataIndex: 'typeName'
|
||||
},
|
||||
{
|
||||
title: '会议室设备',
|
||||
dataIndex: 'itemCount',
|
||||
scopedSlots: { customRender: 'item' }
|
||||
},
|
||||
{
|
||||
title: '关联服务',
|
||||
dataIndex: 'serveCount',
|
||||
scopedSlots: { customRender: 'serve' }
|
||||
},
|
||||
{
|
||||
title: '金额',
|
||||
dataIndex: 'money'
|
||||
},
|
||||
{
|
||||
title: '负责人',
|
||||
dataIndex: 'headName'
|
||||
dataIndex: 'device',
|
||||
},
|
||||
// {
|
||||
// title: '关联服务',
|
||||
// dataIndex: 'serveCount',
|
||||
// scopedSlots: { customRender: 'serve' }
|
||||
// },
|
||||
{
|
||||
title: '操作',
|
||||
width: '200px',
|
||||
@ -327,19 +222,59 @@ export default {
|
||||
],
|
||||
// 加载数据方法 必须为 Promise 对象
|
||||
loadData: (parameter) => {
|
||||
return getRoomContentList(Object.assign(parameter, this.queryParam))
|
||||
},
|
||||
itemLoadData: (parameter) => {
|
||||
console.log(this.parkId)
|
||||
let param ={
|
||||
parkId:this.parkId
|
||||
let minPerNum = 0
|
||||
let maxPerNum = 1000
|
||||
let perNumValue = this.queryParam.capacityNum
|
||||
if (perNumValue == 1) {
|
||||
// 1-20
|
||||
maxPerNum = 20
|
||||
minPerNum = 1
|
||||
} else if (perNumValue == 2) {
|
||||
// 21-50
|
||||
minPerNum = 21
|
||||
maxPerNum = 50
|
||||
} else if (perNumValue == 3) {
|
||||
// 51-100
|
||||
minPerNum = 51
|
||||
maxPerNum = 100
|
||||
} else if (perNumValue == 4) {
|
||||
// 51-100
|
||||
minPerNum = 101
|
||||
maxPerNum = 1000
|
||||
} else {
|
||||
// 全部
|
||||
minPerNum = 1
|
||||
maxPerNum = 1000
|
||||
}
|
||||
|
||||
const param = {
|
||||
name: this.queryParam.meetingName, // 名称
|
||||
floor: this.queryParam.typeName, // 楼层名称
|
||||
typeName: this.queryParam.shape, // 形状
|
||||
// capacityNum: this.queryParam.capacityNum // 容纳人数
|
||||
min: minPerNum, // 最小容纳人数
|
||||
max: maxPerNum, // 最大容纳人数
|
||||
}
|
||||
// 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) => {
|
||||
let param = {
|
||||
parkId: this.parkId
|
||||
}
|
||||
return getRoomItemList(Object.assign(parameter, param))
|
||||
},
|
||||
serveLoadData: (parameter) => {
|
||||
let param ={
|
||||
parkId:this.parkId
|
||||
let param = {
|
||||
parkId: this.parkId
|
||||
}
|
||||
return getRoomServeList(Object.assign(parameter, param))
|
||||
},
|
||||
@ -358,7 +293,7 @@ export default {
|
||||
// 删除
|
||||
deleteVisible: false,
|
||||
deleteLoading: false,
|
||||
deleteIds : null,
|
||||
deleteIds: null
|
||||
}
|
||||
},
|
||||
filters: {
|
||||
@ -374,18 +309,65 @@ export default {
|
||||
TypeData.map(d => {
|
||||
typeMap[d.dictValue] = { text: d.dictLabel }
|
||||
})
|
||||
console.log(typeMap)
|
||||
// console.log(typeMap)
|
||||
const serveTypeData = await getDictArray('serve_type')
|
||||
serveTypeData.map(d => {
|
||||
serveTypeMap[d.dictValue] = { text: d.dictLabel }
|
||||
})
|
||||
},
|
||||
mounted() {
|
||||
this.selectSearchInfoByType()
|
||||
this.selectSearchInfoByShape()
|
||||
this.selectSearchInfoByCapacity()
|
||||
this.getDict()
|
||||
// this.selectSearchInfoByType()
|
||||
// this.selectSearchInfoByShape()
|
||||
// this.selectSearchInfoByCapacity()
|
||||
},
|
||||
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() {
|
||||
console.log(this.meetingId)
|
||||
let params = {
|
||||
@ -433,9 +415,9 @@ export default {
|
||||
},
|
||||
handleItemTable(record) {
|
||||
let params = {
|
||||
roomContentId: record.id,
|
||||
roomContentId: record.id
|
||||
}
|
||||
this.parkId = record.parkId
|
||||
// this.parkId = record.parkId
|
||||
|
||||
selectRoomItemByRoom(params).then((res) => {
|
||||
this.selectedItemRowKeys = res.data.map(d => d.itemId)
|
||||
@ -447,10 +429,9 @@ export default {
|
||||
},
|
||||
handleServeTable(record) {
|
||||
let params = {
|
||||
romeContentId: record.id,
|
||||
|
||||
romeContentId: record.id
|
||||
}
|
||||
this.parkId = record.parkId
|
||||
// this.parkId = record.parkId
|
||||
selectRoomServeByRoom(params).then((res) => {
|
||||
this.selectedServeRowKeys = res.data.map(d => d.serveId)
|
||||
this.selectedServeRows = res.data
|
||||
@ -461,21 +442,21 @@ export default {
|
||||
},
|
||||
|
||||
// 获取查询条件
|
||||
selectSearchInfoByType() {
|
||||
selectSearchInfoByType().then((res) => {
|
||||
this.typeList = res.roomContents
|
||||
})
|
||||
},
|
||||
selectSearchInfoByShape() {
|
||||
selectSearchInfoByShape().then((res) => {
|
||||
this.shapeList = res.roomContents
|
||||
})
|
||||
},
|
||||
selectSearchInfoByCapacity() {
|
||||
selectSearchInfoByCapacity().then((res) => {
|
||||
this.capacityList = res.roomContents
|
||||
})
|
||||
},
|
||||
// selectSearchInfoByType() {
|
||||
// selectSearchInfoByType().then((res) => {
|
||||
// this.typeList = res.roomContents
|
||||
// })
|
||||
// },
|
||||
// selectSearchInfoByShape() {
|
||||
// selectSearchInfoByShape().then((res) => {
|
||||
// this.shapeList = res.roomContents
|
||||
// })
|
||||
// },
|
||||
// selectSearchInfoByCapacity() {
|
||||
// selectSearchInfoByCapacity().then((res) => {
|
||||
// this.capacityList = res.roomContents
|
||||
// })
|
||||
// },
|
||||
onSelectChange(selectedRowKeys, selectedRows) {
|
||||
this.selectedRowKeys = selectedRowKeys
|
||||
this.selectedRows = selectedRows
|
||||
@ -483,37 +464,43 @@ export default {
|
||||
handleAdd() {
|
||||
this.$refs.modal.add()
|
||||
},
|
||||
handleEdit(record) {
|
||||
this.$refs.modal.edit(record)
|
||||
handleEdit(id) {
|
||||
this.$refs.modal.edit(id)
|
||||
},
|
||||
handleOk() {
|
||||
this.$refs.table.refresh(true)
|
||||
},
|
||||
delByIds(ids) {
|
||||
delRoomContent({ ids: ids.join(',') }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success('删除成功')
|
||||
this.handleOk()
|
||||
} else {
|
||||
this.$message.error(res.msg)
|
||||
const _this = this
|
||||
if (ids === '') {
|
||||
this.$message.error('请选择后删除!')
|
||||
return
|
||||
}
|
||||
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: {
|
||||
/*
|
||||
|
184
src/views/admin/meeting/UtoList.vue
Normal file
184
src/views/admin/meeting/UtoList.vue
Normal file
@ -0,0 +1,184 @@
|
||||
<template>
|
||||
<a-card :bordered="false">
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline">
|
||||
<a-row :gutter="48">
|
||||
<a-col :md="5" :sm="15">
|
||||
<a-form-item label="部门名称">
|
||||
<a-input placeholder="请输入部门名称" v-model="queryParam.orgName"/>
|
||||
</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="reset()">重置</a-button>
|
||||
</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
<div class="table-operator">
|
||||
<a-button v-if="addEnable" type="primary" icon="plus" @click="$refs.modal.add()">新建</a-button>
|
||||
<a-dropdown v-if="removeEnable&&selectedRowKeys.length > 0">
|
||||
<a-button type="danger" icon="delete" @click="delByIds(selectedRowKeys)">删除</a-button>
|
||||
</a-dropdown>
|
||||
</div>
|
||||
<s-table
|
||||
size="default"
|
||||
ref="table"
|
||||
rowKey="id"
|
||||
showPagination="true"
|
||||
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||
:columns="columns"
|
||||
:data="loadData"
|
||||
>
|
||||
<span slot="action" slot-scope="text, record">
|
||||
<a v-if="editEnabel" @click="handleEdit(record)">编辑</a>
|
||||
<a-divider type="vertical" />
|
||||
<a v-if="removeEnable" @click="delByIds([record.id])">删除</a>
|
||||
</span>
|
||||
</s-table>
|
||||
<meetingUto-modal ref="modal" @ok="handleOk"/>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {STable} from '@/components'
|
||||
|
||||
import {getMeetingUtoList,delMeetingUto} from '@/api/admin/meeting/uto'
|
||||
import MeetingUtoModal from './modules/UtoModal.vue'
|
||||
import {checkPermission} from '@/utils/permissions'
|
||||
import { delRoomContent } from '@/api/admin/meeting/roomContent'
|
||||
|
||||
export default {
|
||||
name: 'TableList',
|
||||
components: {
|
||||
STable,
|
||||
MeetingUtoModal
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 5 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 16 }
|
||||
},
|
||||
form: this.$form.createForm(this),
|
||||
mdl: {},
|
||||
// 高级搜索 展开/关闭
|
||||
advanced: false,
|
||||
// 查询参数
|
||||
queryParam: {},
|
||||
// 表头
|
||||
columns: [
|
||||
{
|
||||
title: '部门编号',
|
||||
dataIndex: 'orgId'
|
||||
},
|
||||
{
|
||||
title: '部门名称',
|
||||
dataIndex: 'orgName'
|
||||
},
|
||||
{
|
||||
title: '登录名',
|
||||
dataIndex: 'loginName'
|
||||
},
|
||||
{
|
||||
title: '密码',
|
||||
dataIndex: 'password'
|
||||
},
|
||||
{
|
||||
title: '备注',
|
||||
dataIndex: 'remark'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
width: '200px',
|
||||
dataIndex: 'action',
|
||||
scopedSlots: { customRender: 'action' }
|
||||
}
|
||||
],
|
||||
// 加载数据方法 必须为 Promise 对象
|
||||
loadData: parameter => {
|
||||
return getMeetingUtoList(Object.assign(parameter, this.queryParam))
|
||||
},
|
||||
selectedRowKeys: [],
|
||||
selectedRows: [],
|
||||
// addEnable: checkPermission('admin:meetingUto:add'),
|
||||
// editEnabel: checkPermission('admin:meetingUto:edit'),
|
||||
// removeEnable: checkPermission('admin:meetingUto:remove'),
|
||||
addEnable: true,
|
||||
editEnabel: true,
|
||||
removeEnable: true
|
||||
}
|
||||
},
|
||||
filters: {
|
||||
},
|
||||
created () {
|
||||
},
|
||||
methods: {
|
||||
reset() {
|
||||
this.queryParam = {}
|
||||
this.handleOk()
|
||||
},
|
||||
onSelectChange (selectedRowKeys, selectedRows) {
|
||||
this.selectedRowKeys = selectedRowKeys
|
||||
this.selectedRows = selectedRows
|
||||
},
|
||||
handleAdd () {
|
||||
this.$refs.modal.add()
|
||||
},
|
||||
handleEdit (record) {
|
||||
this.$refs.modal.edit(record)
|
||||
},
|
||||
handleOk () {
|
||||
this.$refs.table.refresh(true)
|
||||
console.log('handleSaveOk')
|
||||
},
|
||||
delByIds (ids) {
|
||||
const _this = this
|
||||
if (ids === '') {
|
||||
this.$message.error('请选择后删除!')
|
||||
return
|
||||
}
|
||||
this.$confirm({
|
||||
title: '警告',
|
||||
content: '删除后不可恢复,是否确认删除?',
|
||||
okText: '是',
|
||||
okType: 'warning',
|
||||
cancelText: '否',
|
||||
onOk() {
|
||||
delMeetingUto({ ids: ids.join(',') }).then(res => {
|
||||
if (res.code === 0) {
|
||||
_this.$message.success('删除成功')
|
||||
_this.handleOk()
|
||||
} else {
|
||||
_this.$message.error(res.msg)
|
||||
}
|
||||
this.selectedRowKeys = []
|
||||
})
|
||||
},
|
||||
onCancel() {
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
/*
|
||||
'selectedRows': function (selectedRows) {
|
||||
this.needTotalList = this.needTotalList.map(item => {
|
||||
return {
|
||||
...item,
|
||||
total: selectedRows.reduce( (sum, val) => {
|
||||
return sum + val[item.dataIndex]
|
||||
}, 0)
|
||||
}
|
||||
})
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
</script>
|
@ -18,235 +18,81 @@
|
||||
|
||||
<a-row>
|
||||
<a-col :span='10'>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='所属地区'>
|
||||
<a-select v-decorator="['tenantId', {rules: [{ required: true, message: '请选择所属地区' }]}]"
|
||||
@change='selectTenant'
|
||||
:disabled='tenantEnable'>
|
||||
<a-select-option v-for='item in tenantList' :key='item.id'>{{ item.name }}</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="['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-form-item label='所属楼层' :labelCol='labelCol' :wrapperCol='wrapperCol'>
|
||||
<a-select v-decorator="['floor',{rules: [{ required: true, message: '选择所属楼层' }]}]"
|
||||
placeholder='所属楼层'>
|
||||
<a-select-option v-for='item in typeList' :value='item.value'>
|
||||
{{ item.text }}
|
||||
</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="['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-form-item label='会议室名称' :labelCol='labelCol' :wrapperCol='wrapperCol'>
|
||||
<a-input placeholder='会议室名称'
|
||||
v-decorator="['meetingName',{rules: [{ required: true, message: '输入会议室名称' }]}]" />
|
||||
v-decorator="['name',{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="['type',{rules: [{ required: true, message: '输入会议室类型' }]}]"
|
||||
placeholder='会议室类型'>
|
||||
<a-select-option :value='1'>
|
||||
会议室
|
||||
</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-form-item label='会议室形式' :labelCol='labelCol' :wrapperCol='wrapperCol'>
|
||||
<a-select v-decorator="['typeName',{rules: [{ required: true, message: '选择会议室形式' }]}]"
|
||||
placeholder='会议室形式'>
|
||||
<a-select-option v-for='item in shapeList' :value='item.value'>
|
||||
{{ item.text }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</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-col :span='10'>
|
||||
<a-form-item label='会议室面积' :labelCol='labelCol' :wrapperCol='wrapperCol'>
|
||||
<a-input placeholder='会议室面积'
|
||||
v-decorator="['area']" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span='10'>
|
||||
<a-form-item label='容纳人数' :labelCol='labelCol' :wrapperCol='wrapperCol'>
|
||||
<a-input placeholder='容纳人数'
|
||||
v-decorator="['capacityNum',{rules: [{ required: true, message: '输入容纳人数' }]}]" />
|
||||
</a-form-item>
|
||||
</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-col :span='10'>
|
||||
<a-form-item label='起租时长' :labelCol='labelCol' :wrapperCol='wrapperCol'>
|
||||
<a-input placeholder='起租时长'
|
||||
v-decorator="['duration',{rules: [{ required: true, message: '请输入起租时长'}]}]" />
|
||||
<a-form-item label='会议室设备' :labelCol='labelCol' :wrapperCol='wrapperCol'>
|
||||
<a-checkbox-group
|
||||
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-col>
|
||||
<a-col :span='10'>
|
||||
<a-form-item label='会议室服务' :labelCol='labelCol' :wrapperCol='wrapperCol'>
|
||||
<a-checkbox-group
|
||||
v-decorator="['service',{rules: [{ required: true, message: '请选择会议室服务' }]}]">
|
||||
<a-checkbox v-for='item in serviceList' :value='item.value'>
|
||||
{{ item.text }}
|
||||
</a-checkbox>
|
||||
</a-checkbox-group>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span='10'>
|
||||
<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='是否启用'>
|
||||
<a-select-option :value='0'>
|
||||
是
|
||||
@ -259,12 +105,6 @@
|
||||
</a-col>
|
||||
</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-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='会议室描述 '>
|
||||
<a-textarea placeholder='会议室描述 ' v-decorator="['content']" style='height: 100px' />
|
||||
@ -275,7 +115,7 @@
|
||||
<a-col :span='10'>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='室内图片'>
|
||||
<a-upload
|
||||
v-decorator="['indoorPicUrl', {rules: [{ required: true, message: '上传室内图片' }]}]"
|
||||
v-decorator="['files', {rules: [{ required: true, message: '上传室内图片' }]}]"
|
||||
list-type='picture-card'
|
||||
class='avatar-uploader'
|
||||
:file-list='fileList'
|
||||
@ -303,7 +143,7 @@
|
||||
import {
|
||||
saveRoomContent,
|
||||
getRoomListByFloorId,
|
||||
selectRoomById
|
||||
selectRoomById, getMeetingDict, getRoomInfo
|
||||
} from '@/api/admin/meeting/roomContent'
|
||||
import pick from 'lodash.pick'
|
||||
import storage from 'store'
|
||||
@ -326,7 +166,8 @@ export default {
|
||||
xs: { span: 24 },
|
||||
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: '',
|
||||
headers: {
|
||||
Authorization: 'Bearer ' + storage.get(ACCESS_TOKEN)
|
||||
@ -341,11 +182,19 @@ export default {
|
||||
typeData: [],
|
||||
form: this.$form.createForm(this),
|
||||
userDetail: {},
|
||||
tenantList: [], // 地区
|
||||
parkList: [], // 园区
|
||||
buildingList: [], // 楼宇
|
||||
buildingDetailList: [], // 楼层
|
||||
roomList: [], // 房间
|
||||
typeList: [],
|
||||
shapeList: [],
|
||||
deviceList: [],
|
||||
serviceList: [],
|
||||
typeMap: {},
|
||||
shapeMap: {},
|
||||
deviceMap: {},
|
||||
serviceMap: {},
|
||||
// tenantList: [], // 地区
|
||||
// parkList: [], // 园区
|
||||
// buildingList: [], // 楼宇
|
||||
// buildingDetailList: [], // 楼层
|
||||
// roomList: [], // 房间
|
||||
tenantEnable: false,
|
||||
parkEnable: false,
|
||||
previewVisible: false,
|
||||
@ -359,153 +208,99 @@ export default {
|
||||
|
||||
},
|
||||
mounted() {
|
||||
this.getDict()
|
||||
},
|
||||
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
|
||||
|
||||
// 设备
|
||||
let _serviceList = []
|
||||
for (let key in dataObj.services) {
|
||||
let eachObj = dataObj.services[key]
|
||||
const keys = Object.keys(eachObj)
|
||||
_serviceList.push({
|
||||
text: keys[0],
|
||||
value: eachObj[keys[0]]
|
||||
})
|
||||
this.serviceMap[keys[0]] = eachObj[keys[0]]
|
||||
}
|
||||
this.serviceList = _serviceList
|
||||
})
|
||||
},
|
||||
// 获取用户详细信息
|
||||
getUserDetail() {
|
||||
getInfo().then(res => {
|
||||
console.log('getUserDetail', res)
|
||||
this.userDetail = res
|
||||
// 园区:5
|
||||
if (this.userDetail.roleIds && this.userDetail.roleIds.length > 0 && this.userDetail.roleIds[0] == 5) {
|
||||
//
|
||||
// 判断:是新增就查询园区
|
||||
let { id } = this.mdl
|
||||
if (!id) {
|
||||
// 选择地区 -> 查询园区
|
||||
this.selectTenant(this.userDetail.tenantId)
|
||||
// 选择园区 -> 查询楼宇
|
||||
this.selectPark(this.userDetail.parkId)
|
||||
}
|
||||
//
|
||||
// 不可编辑
|
||||
this.tenantEnable = true
|
||||
this.parkEnable = true
|
||||
// 关联地区和园区
|
||||
this.mdl.parkId = this.userDetail.parkId
|
||||
this.mdl.tenantId = this.userDetail.tenantId
|
||||
this.form.setFieldsValue({
|
||||
parkId: this.mdl.parkId,
|
||||
tenantId: this.mdl.tenantId
|
||||
})
|
||||
}
|
||||
// if (this.userDetail.roleIds && this.userDetail.roleIds.length > 0 && this.userDetail.roleIds[0] == 5) {
|
||||
// //
|
||||
// // 判断:是新增就查询园区
|
||||
// let { id } = this.mdl
|
||||
// if (!id) {
|
||||
// // 选择地区 -> 查询园区
|
||||
// this.selectTenant(this.userDetail.tenantId)
|
||||
// // 选择园区 -> 查询楼宇
|
||||
// this.selectPark(this.userDetail.parkId)
|
||||
// }
|
||||
// //
|
||||
// // 不可编辑
|
||||
// this.tenantEnable = true
|
||||
// this.parkEnable = true
|
||||
// // 关联地区和园区
|
||||
// this.mdl.parkId = this.userDetail.parkId
|
||||
// this.mdl.tenantId = this.userDetail.tenantId
|
||||
// this.form.setFieldsValue({
|
||||
// parkId: this.mdl.parkId,
|
||||
// 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,
|
||||
//
|
||||
async handlePreview(file) {
|
||||
@ -525,109 +320,142 @@ export default {
|
||||
add() {
|
||||
this.form.resetFields()
|
||||
this.mdl = {}
|
||||
this.edit({ id: 0 })
|
||||
},
|
||||
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.fileList = []
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(
|
||||
pick(
|
||||
this.mdl,
|
||||
'id',
|
||||
'type',
|
||||
'meetingName',
|
||||
'capacityNum',
|
||||
'expandNum',
|
||||
'indoorPicUrl',
|
||||
'startTime',
|
||||
'endDate',
|
||||
'money',
|
||||
'isShow',
|
||||
'shape',
|
||||
'area',
|
||||
'address',
|
||||
'headName',
|
||||
'headPhone',
|
||||
'isTicket',
|
||||
'isToll',
|
||||
'money',
|
||||
'remake',
|
||||
'duration',
|
||||
'content',
|
||||
'tenantId',
|
||||
'parkId',
|
||||
'buildingId',
|
||||
'buildId',
|
||||
'roomId'
|
||||
},
|
||||
edit(id) {
|
||||
this.form.resetFields()
|
||||
this.mdl = {}
|
||||
this.fileList = []
|
||||
getRoomInfo({ roomId: id }).then((res) => {
|
||||
let deviceStr = res.room.device
|
||||
if (deviceStr != '') {
|
||||
deviceStr = deviceStr.replaceAll(' ', '')
|
||||
let deviceArr = deviceStr.split('#')
|
||||
if (deviceArr[0] == '') {
|
||||
deviceArr.shift()
|
||||
}
|
||||
res.room.device = deviceArr
|
||||
}
|
||||
let serviceStr = res.room.ext1
|
||||
if (serviceStr && serviceStr != '') {
|
||||
let serviceArr = serviceStr.split(',')
|
||||
res.room.service = serviceArr
|
||||
}
|
||||
this.mdl = Object.assign(this.mdl, res.room)
|
||||
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(
|
||||
pick(
|
||||
this.mdl,
|
||||
'id',
|
||||
'device',
|
||||
'typeName',
|
||||
'name',
|
||||
'capacityNum',
|
||||
'floor',
|
||||
'files',
|
||||
'startTime',
|
||||
'endDate',
|
||||
'money',
|
||||
'enable',
|
||||
'typeName',
|
||||
'content',
|
||||
'area',
|
||||
'roomNum',
|
||||
'service'
|
||||
)
|
||||
)
|
||||
)
|
||||
})
|
||||
// 图片
|
||||
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) {
|
||||
e.preventDefault()
|
||||
this.form.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
console.log('Received values of form: ', values)
|
||||
this.confirmLoading = true
|
||||
const indoorPicUrl = []
|
||||
this.confirmLoading = false
|
||||
|
||||
// const indoorPicUrl = []
|
||||
const files = []
|
||||
|
||||
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
|
||||
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)
|
||||
saveRoomContent(values)
|
||||
// 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
|
||||
|
||||
let serviceArr = values.service
|
||||
let serviceStr = ''
|
||||
for (let key in serviceArr) {
|
||||
let eachObj = serviceArr[key]
|
||||
serviceStr += eachObj + ','
|
||||
}
|
||||
// 去掉最后一个,号
|
||||
if (serviceStr != '') {
|
||||
serviceStr = serviceStr.substring(0, serviceStr.length - 1)
|
||||
}
|
||||
// 存到ext1里
|
||||
values.ext1 = serviceStr
|
||||
values.floorId = this.typeMap[values.floor]
|
||||
values.typeId = this.shapeMap[values.typeName]
|
||||
saveRoomContent(values, files)
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success('保存成功')
|
||||
|
115
src/views/admin/meeting/modules/UtoModal.vue
Normal file
115
src/views/admin/meeting/modules/UtoModal.vue
Normal file
@ -0,0 +1,115 @@
|
||||
<template>
|
||||
<a-modal
|
||||
title='操作'
|
||||
style='top: 20px;'
|
||||
:width='800'
|
||||
v-model='visible'
|
||||
:confirmLoading='confirmLoading'
|
||||
@ok='handleSubmit'
|
||||
>
|
||||
<a-form :form='form'>
|
||||
<a-form-item style='display:none'>
|
||||
<a-input v-decorator="['id']" />
|
||||
</a-form-item>
|
||||
<a-form-item style='display:none'>
|
||||
<a-input v-decorator="['version']" />
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='部门编号'>
|
||||
<a-input placeholder='部门id' v-decorator="['orgId', {rules: [{required: true, message: '请输入部门编号'}]}]" />
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='部门名称'>
|
||||
<a-input placeholder='部门名称' v-decorator="['orgName', {rules: [{required: true, message: '请输入部门名称'}]}]" />
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='登录名'>
|
||||
<a-input placeholder='登录名'
|
||||
v-decorator="['loginName', {rules: [{required: true, message: '请输入登录名'}]}]" />
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='密码'>
|
||||
<a-input placeholder='密码' v-decorator="['password', {rules: [{required: true, message: '请输入密码'}]}]" />
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='备注'>
|
||||
<a-input placeholder='备注' v-decorator="['remark']" />
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
</template>
|
||||
<script>
|
||||
import { saveMeetingUto } from '@/api/admin/meeting/uto'
|
||||
import pick from 'lodash.pick'
|
||||
|
||||
export default {
|
||||
name: 'MeetingUtoModal',
|
||||
props: {},
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 5 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 16 }
|
||||
},
|
||||
confirmLoading: false,
|
||||
mdl: {},
|
||||
form: this.$form.createForm(this)
|
||||
}
|
||||
},
|
||||
beforeCreate() {
|
||||
},
|
||||
created() {
|
||||
},
|
||||
methods: {
|
||||
add() {
|
||||
this.form.resetFields()
|
||||
this.edit({ id: 0 })
|
||||
},
|
||||
edit(record) {
|
||||
this.mdl = Object.assign(record)
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(pick(this.mdl, 'id', 'orgId', 'orgName', 'loginName', 'password', 'remark'))
|
||||
})
|
||||
},
|
||||
handleSubmit(e) {
|
||||
e.preventDefault()
|
||||
this.form.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
console.log('Received values of form: ', values)
|
||||
// this.confirmLoading = true
|
||||
values.userName = values.orgName
|
||||
saveMeetingUto(values).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success('保存成功')
|
||||
this.$emit('ok')
|
||||
this.visible = false
|
||||
} else {
|
||||
this.$message.error(res.msg)
|
||||
}
|
||||
}).catch(() => {
|
||||
this.$message.error('系统错误,请稍后再试')
|
||||
}).finally(() => {
|
||||
// this.confirmLoading = false
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
/*
|
||||
'selectedRows': function (selectedRows) {
|
||||
this.needTotalList = this.needTotalList.map(item => {
|
||||
return {
|
||||
...item,
|
||||
total: selectedRows.reduce( (sum, val) => {
|
||||
return sum + val[item.dataIndex]
|
||||
}, 0)
|
||||
}
|
||||
})
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
</script>
|
@ -1,89 +1,89 @@
|
||||
<template>
|
||||
<a-modal
|
||||
title='操作'
|
||||
style='top: 20px;'
|
||||
:width='800'
|
||||
v-model='visible'
|
||||
:confirmLoading='confirmLoading'
|
||||
@ok='handleSubmit'
|
||||
title="操作"
|
||||
style="top: 20px;"
|
||||
:width="800"
|
||||
v-model="visible"
|
||||
:confirmLoading="confirmLoading"
|
||||
@ok="handleSubmit"
|
||||
>
|
||||
<a-form :form='form'>
|
||||
<a-form-item style='display:none'>
|
||||
<a-form :form="form">
|
||||
<a-form-item style="display:none">
|
||||
<a-input v-decorator="['id']" />
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='企业'>
|
||||
<a-select v-decorator="['icsCustomerId',{rules: [{ required: true, message: '请选择企业' }]}]"
|
||||
placeholder='企业'>
|
||||
<a-select-option v-for='item in customerList' :key='item.id' :value='item.id'>
|
||||
{{ item.name }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="姓名">
|
||||
<a-input placeholder="姓名" v-decorator="['name', {rules: [{required: true, message: '请输入姓名'}]}]" />
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='姓名'>
|
||||
<a-input placeholder='姓名' v-decorator="['name', {rules: [{required: true, message: '请输入姓名'}]}]" />
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="电话">
|
||||
<a-input placeholder="电话" v-decorator="['mobile', {rules: [{required: true, message: '请输入电话'}]}]" />
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='电话'>
|
||||
<a-input placeholder='电话' v-decorator="['mobile', {rules: [{required: true, message: '请输入电话'}]}]" />
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='用户性别'>
|
||||
<a-radio-group @change='onChange' v-decorator="['gender',{rules: [{required: true, message: '请选择性别'}]}]">
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="用户性别">
|
||||
<a-radio-group @change="onChange" v-decorator="['gender',{rules: [{required: true, message: '请选择性别'}]}]">
|
||||
<a-radio :value="'0'">男</a-radio>
|
||||
<a-radio :value="'1'">女</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='照片'>
|
||||
<a-upload
|
||||
v-decorator="['photo' ,{rules: [{required: true, message: '请上传照片'}]}]"
|
||||
list-type='picture-card'
|
||||
class='avatar-uploader'
|
||||
:show-upload-list='false'
|
||||
:action='uploadUrl'
|
||||
:headers='headers'
|
||||
:before-upload='photoBeforeUpload'
|
||||
@change='photoHandleChange'
|
||||
>
|
||||
<img v-if='photoImageUrl' :src='photoImageUrl' style='width: 102px; height: 102px' />
|
||||
<div v-else>
|
||||
<a-icon :type="photoLoading ? 'loading' : 'plus'" />
|
||||
<div class='ant-upload-text'> 上传</div>
|
||||
</div>
|
||||
</a-upload>
|
||||
<!-- <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='照片'>-->
|
||||
<!-- <a-upload-->
|
||||
<!-- v-decorator="['photo' ,{rules: [{required: true, message: '请上传照片'}]}]"-->
|
||||
<!-- list-type='picture-card'-->
|
||||
<!-- class='avatar-uploader'-->
|
||||
<!-- :show-upload-list='false'-->
|
||||
<!-- :action='uploadUrl'-->
|
||||
<!-- :headers='headers'-->
|
||||
<!-- :before-upload='photoBeforeUpload'-->
|
||||
<!-- @change='photoHandleChange'-->
|
||||
<!-- >-->
|
||||
<!-- <img v-if='photoImageUrl' :src='photoImageUrl' style='width: 102px; height: 102px' />-->
|
||||
<!-- <div v-else>-->
|
||||
<!-- <a-icon :type="photoLoading ? 'loading' : 'plus'" />-->
|
||||
<!-- <div class='ant-upload-text'> 上传</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </a-upload>-->
|
||||
<!-- </a-form-item>-->
|
||||
<!-- <a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='头像'>-->
|
||||
<!-- <a-upload-->
|
||||
<!-- v-decorator="['avatar']"-->
|
||||
<!-- list-type='picture-card'-->
|
||||
<!-- class='avatar-uploader'-->
|
||||
<!-- :show-upload-list='false'-->
|
||||
<!-- :action='uploadUrl'-->
|
||||
<!-- :headers='headers'-->
|
||||
<!-- :before-upload='avatarBeforeUpload'-->
|
||||
<!-- @change='avatarHandleChange'-->
|
||||
<!-- >-->
|
||||
<!-- <img v-if='avatarImageUrl' :src='avatarImageUrl' style='width: 102px; height: 102px' />-->
|
||||
<!-- <div v-else>-->
|
||||
<!-- <a-icon :type="avatarLoading ? 'loading' : 'plus'" />-->
|
||||
<!-- <div class='ant-upload-text'> 上传</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </a-upload>-->
|
||||
<!-- </a-form-item>-->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="随手拍角色">
|
||||
<a-radio-group v-decorator="['dataType',{rules: [{required: true, message: '请选择随手拍角色'}]}]">
|
||||
<a-radio :value="'1'">普通用户</a-radio>
|
||||
<a-radio :value="'3'">派单员</a-radio>
|
||||
<a-radio :value="'5'">维修人</a-radio>
|
||||
<a-radio :value="'7'">管理员</a-radio>
|
||||
<a-radio :value="'9'">楼层管理员</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='头像'>
|
||||
<a-upload
|
||||
v-decorator="['avatar']"
|
||||
list-type='picture-card'
|
||||
class='avatar-uploader'
|
||||
:show-upload-list='false'
|
||||
:action='uploadUrl'
|
||||
:headers='headers'
|
||||
:before-upload='avatarBeforeUpload'
|
||||
@change='avatarHandleChange'
|
||||
>
|
||||
<img v-if='avatarImageUrl' :src='avatarImageUrl' style='width: 102px; height: 102px' />
|
||||
<div v-else>
|
||||
<a-icon :type="avatarLoading ? 'loading' : 'plus'" />
|
||||
<div class='ant-upload-text'> 上传</div>
|
||||
</div>
|
||||
</a-upload>
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="会议室角色">
|
||||
<a-radio-group v-decorator="['roomRole']">
|
||||
<a-radio :value="1">普通用户</a-radio>
|
||||
<a-radio :value="3">会议服务人员</a-radio>
|
||||
<a-radio :value="5">会议管理员</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='昵称'>
|
||||
<a-input placeholder='昵称' v-decorator="['username']" />
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="会议服务组">
|
||||
<a-radio-group v-decorator="['roomRoleType']">
|
||||
<a-radio :value="1">音控组</a-radio>
|
||||
<a-radio :value="3">会务服务组</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='身份证号'>
|
||||
<a-input placeholder='身份证号' v-decorator="['cardNo']" />
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='地址'>
|
||||
<a-input placeholder='地址' v-decorator="['address' ,{rules: [{required: true, message: '请输入地址'}]}]" />
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='邮箱'>
|
||||
<a-input placeholder='邮箱' v-decorator="['email']" />
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='学历'>
|
||||
<a-input placeholder='学历' v-decorator="['degree']" />
|
||||
</a-form-item>
|
||||
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='紧急联系人'>
|
||||
<a-input placeholder='紧急联系人' v-decorator="['urgent']" />
|
||||
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="昵称">
|
||||
<a-input placeholder="昵称" v-decorator="['username']" />
|
||||
</a-form-item>
|
||||
|
||||
</a-form>
|
||||
@ -103,7 +103,7 @@ export default {
|
||||
name: 'IcsCustomerStaffModal',
|
||||
props: {},
|
||||
components: {},
|
||||
data() {
|
||||
data () {
|
||||
return {
|
||||
visible: false,
|
||||
labelCol: {
|
||||
@ -129,13 +129,13 @@ export default {
|
||||
avatarLoading: false
|
||||
}
|
||||
},
|
||||
beforeCreate() {
|
||||
beforeCreate () {
|
||||
},
|
||||
created() {
|
||||
created () {
|
||||
},
|
||||
methods: {
|
||||
// 照片
|
||||
photoBeforeUpload(file) {
|
||||
photoBeforeUpload (file) {
|
||||
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png'
|
||||
if (!isJpgOrPng) {
|
||||
this.$message.error('You can only upload JPG file!')
|
||||
@ -146,7 +146,7 @@ export default {
|
||||
}
|
||||
return isJpgOrPng && isLt2M
|
||||
},
|
||||
photoHandleChange(info) {
|
||||
photoHandleChange (info) {
|
||||
if (info.file.status === 'uploading') {
|
||||
this.photoLoading = true
|
||||
return
|
||||
@ -169,7 +169,7 @@ export default {
|
||||
}
|
||||
},
|
||||
// 头像
|
||||
avatarBeforeUpload(file) {
|
||||
avatarBeforeUpload (file) {
|
||||
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png'
|
||||
if (!isJpgOrPng) {
|
||||
this.$message.error('You can only upload JPG file!')
|
||||
@ -180,7 +180,7 @@ export default {
|
||||
}
|
||||
return isJpgOrPng && isLt2M
|
||||
},
|
||||
avatarHandleChange(info) {
|
||||
avatarHandleChange (info) {
|
||||
if (info.file.status === 'uploading') {
|
||||
this.avatarLoading = true
|
||||
return
|
||||
@ -202,16 +202,17 @@ export default {
|
||||
})
|
||||
}
|
||||
},
|
||||
getBase64(img, callback) {
|
||||
getBase64 (img, callback) {
|
||||
const reader = new FileReader()
|
||||
reader.addEventListener('load', () => callback(reader.result))
|
||||
reader.readAsDataURL(img)
|
||||
},
|
||||
add() {
|
||||
add () {
|
||||
this.form.resetFields()
|
||||
this.edit({ id: 0 })
|
||||
},
|
||||
edit(record) {
|
||||
edit (record) {
|
||||
console.log(record)
|
||||
// 查询企业
|
||||
getCustomerList().then(res => {
|
||||
console.log('getCustomerList', res)
|
||||
@ -220,7 +221,7 @@ export default {
|
||||
this.mdl = Object.assign(record)
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(pick(this.mdl, 'id', 'icsCustomerId', 'name', 'mobile', 'gender', 'photo', 'avatar', 'username', 'cardNo', 'address', 'email', 'degree', 'urgent'))
|
||||
this.form.setFieldsValue(pick(this.mdl, 'id', 'icsCustomerId', 'name', 'mobile', 'gender', 'photo', 'avatar', 'dataType', 'roomRole', 'roomRoleType', 'username', 'cardNo', 'address', 'email', 'degree', 'urgent'))
|
||||
})
|
||||
//
|
||||
if (this.mdl.photo) {
|
||||
@ -234,7 +235,7 @@ export default {
|
||||
this.avatarImageUrl = ''
|
||||
}
|
||||
},
|
||||
handleSubmit(e) {
|
||||
handleSubmit (e) {
|
||||
e.preventDefault()
|
||||
this.form.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
@ -242,6 +243,7 @@ export default {
|
||||
this.confirmLoading = true
|
||||
console.log('Received values of form: ')
|
||||
saveIcsCustomerStaff(values).then(res => {
|
||||
console.log(111)
|
||||
if (res.code === 0) {
|
||||
this.$message.success('保存成功')
|
||||
this.$emit('ok')
|
||||
|
@ -28,6 +28,7 @@
|
||||
size='default'
|
||||
ref='tableFloor'
|
||||
rowKey='id'
|
||||
showPagination="true"
|
||||
:columns='floorColumns'
|
||||
:data='loadFloor'
|
||||
>
|
||||
@ -58,6 +59,7 @@
|
||||
size='default'
|
||||
ref='tableFloorCreate'
|
||||
rowKey='id'
|
||||
showPagination="true"
|
||||
:columns='floorCreateColumns'
|
||||
:data='loadFloorCreate'
|
||||
>
|
||||
@ -88,6 +90,7 @@
|
||||
size='default'
|
||||
ref='tableWorker'
|
||||
rowKey='id'
|
||||
showPagination="true"
|
||||
:columns='columns'
|
||||
:data='loadWorker'
|
||||
>
|
||||
|
@ -22,6 +22,7 @@
|
||||
size="default"
|
||||
ref="table"
|
||||
rowKey="id"
|
||||
showPagination="true"
|
||||
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||
:columns="columns"
|
||||
:data="loadData"
|
||||
|
@ -27,6 +27,7 @@
|
||||
size='default'
|
||||
ref='table'
|
||||
rowKey='id'
|
||||
showPagination="true"
|
||||
:rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}'
|
||||
:columns='columns'
|
||||
:data='loadData'
|
||||
|
@ -28,6 +28,7 @@
|
||||
size='default'
|
||||
ref='table'
|
||||
rowKey='id'
|
||||
showPagination="true"
|
||||
:rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}'
|
||||
:columns='columns'
|
||||
:data='loadData'
|
||||
|
@ -51,6 +51,7 @@
|
||||
size='default'
|
||||
ref='table'
|
||||
rowKey='id'
|
||||
showPagination="true"
|
||||
:columns='columns'
|
||||
:data='loadData'
|
||||
>
|
||||
|
Loading…
x
Reference in New Issue
Block a user