From 5435cbf135579dac7db98db1bd0a9295692b6e2f Mon Sep 17 00:00:00 2001 From: "471615499@qq.com" Date: Wed, 25 Sep 2024 00:22:02 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E4=BC=9A=E8=AE=AE?= =?UTF-8?q?=E5=AE=A4=E7=AE=A1=E7=90=86=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 + src/api/admin/meeting/roomContent.js | 65 +- src/views/admin/meeting/RoomContentList.vue | 381 +++++----- .../meeting/modules/RoomContentModal.vue | 657 ++++++------------ 4 files changed, 446 insertions(+), 660 deletions(-) diff --git a/.gitignore b/.gitignore index 185e663..56c5d5b 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,6 @@ yarn-error.log* *.njsproj *.sln *.sw* + +vue.config.js +.env.development \ No newline at end of file diff --git a/src/api/admin/meeting/roomContent.js b/src/api/admin/meeting/roomContent.js index 9c62f3f..4694b3b 100644 --- a/src/api/admin/meeting/roomContent.js +++ b/src/api/admin/meeting/roomContent.js @@ -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?pageNum=', + 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,20 @@ export function selectSearchInfoByShape (parameter) { }) } -export function saveRoomContent (parameter) { +export function saveRoomContent(parameter) { return axios({ - url: api.roomContent + (parameter.id > 0 ? '/update' : '/save'), + url: '/admin/meetingRoom' + (parameter.id > 0 ? '/update' : '/save'), + method: 'post', + params: parameter, + headers: { + 'Content-Type': 'application/json;charset=UTF-8' + } + }) +} + +export function getRoomInfo(parameter) { + return axios({ + url: '/app/mr/roomMrs', method: 'post', data: parameter, headers: { @@ -56,7 +76,7 @@ export function saveRoomContent (parameter) { }) } -export function addRoomServe (parameter) { +export function addRoomServe(parameter) { return axios({ url: api.roomContent + '/addRoomServe', method: 'post', @@ -67,7 +87,7 @@ export function addRoomServe (parameter) { }) } -export function addRoomItem (parameter) { +export function addRoomItem(parameter) { return axios({ url: api.roomContent + '/addRoomItem', method: 'post', @@ -79,7 +99,7 @@ export function addRoomItem (parameter) { } //根据会议室id 获取服务列表 -export function selectRoomServeByRoom (parameter) { +export function selectRoomServeByRoom(parameter) { return axios({ url: api.roomContent + '/selectRoomServeByRoom', method: 'post', @@ -91,7 +111,7 @@ export function selectRoomServeByRoom (parameter) { } -export function getFloorList (parameter) { +export function getFloorList(parameter) { return axios({ url: api.roomContent + '/getFloorList', method: 'get', @@ -99,7 +119,7 @@ export function getFloorList (parameter) { }) } -export function getCustomerList (parameter) { +export function getCustomerList(parameter) { return axios({ url: api.roomContent + '/customerList', method: 'get', @@ -108,7 +128,7 @@ export function getCustomerList (parameter) { } -export function selectRoomById (parameter) { +export function selectRoomById(parameter) { return axios({ url: api.roomContent + '/selectRoomById', method: 'get', @@ -117,7 +137,7 @@ export function selectRoomById (parameter) { } -export function getRoomListByFloorId (parameter) { +export function getRoomListByFloorId(parameter) { return axios({ url: api.roomContent + '/getRoomListByFloorId', method: 'get', @@ -125,7 +145,7 @@ export function getRoomListByFloorId (parameter) { }) } -export function getRoomListByBuildIdsRq (parameter) { +export function getRoomListByBuildIdsRq(parameter) { return axios({ url: api.roomContent + '/getRoomListByBuildIds', method: 'post', @@ -136,7 +156,7 @@ export function getRoomListByBuildIdsRq (parameter) { }) } -export function selectRoomItemByRoom (parameter) { +export function selectRoomItemByRoom(parameter) { return axios({ url: api.roomContent + '/selectRoomItemByRoom', method: 'post', @@ -148,15 +168,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' diff --git a/src/views/admin/meeting/RoomContentList.vue b/src/views/admin/meeting/RoomContentList.vue index 0799964..649234c 100644 --- a/src/views/admin/meeting/RoomContentList.vue +++ b/src/views/admin/meeting/RoomContentList.vue @@ -4,36 +4,15 @@ - - + + - - - - 会议室 - - - 路演厅 - - - 洽谈室 - - - 直播间 - - - 茶室 - - - 长阳会客厅 - - - 多功能厅 - - - 数据要素 + + + + {{ item.text }} @@ -41,35 +20,38 @@ - - 围桌式 - - - 课桌式 - - - 长方形 - - - U形 - - - 鱼骨形 - - - 开放形 - - - 会议形 + + {{ item.text }} - - - {{ item.capacityNum }} + + + 全部 + + + 0-10 + + + 11-20 + + + 21-30 + + + 31-40 + + + 41-50 + + + 50-100 + + + 100以上 @@ -77,7 +59,7 @@ 查询 - 重置 + 重置 @@ -107,9 +89,9 @@ {{ record.serveCount }} - 编辑 + 编辑 - 删除 + 删除 @@ -125,29 +107,7 @@ - - - -
- - - - - - - - - - - 查询 - 重置 - - - - -
-
-
+ - -
- - - - - - - - - - - - 免费服务 - - - 增值服务 - - - - - - - - 查询 - 重置 - - - - -
-
-
+ - - {{ text | serveTypeFilter }} - @@ -216,7 +140,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 +148,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 +160,7 @@ export default { }, data() { return { + parkId: 25, labelCol: { xs: { span: 24 }, sm: { span: 5 } @@ -251,9 +177,13 @@ export default { // 高级搜索 展开/关闭 advanced: false, // 查询参数 - queryParam: {}, - itemQueryParam: { + queryParam: { + meetingName: '', + typeName: '', + shape: '', + capacityNum: '' }, + itemQueryParam: {}, serveQueryParam: {}, capacityList: [], shapeList: [], @@ -269,28 +199,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 +221,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 +241,32 @@ export default { ], // 加载数据方法 必须为 Promise 对象 loadData: (parameter) => { - return getRoomContentList(Object.assign(parameter, this.queryParam)) + const param = { + name: this.queryParam.meetingName, // 名称 + floor: this.queryParam.typeName, // 楼层名称 + typeName: this.queryParam.shape, // 形状 + capacityNum: this.queryParam.capacityNum // 容纳人数 + } + // if (param.typeName === '') { + // delete param.typeName + // } + // if (param.shape === '') { + // delete param.shape + // } + // if (param.capacityNum === '') { + // delete param.capacityNum + // } + return getRoomContentList(Object.assign(parameter, param)) }, itemLoadData: (parameter) => { - console.log(this.parkId) - let param ={ - parkId:this.parkId + 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 +285,7 @@ export default { // 删除 deleteVisible: false, deleteLoading: false, - deleteIds : null, + deleteIds: null } }, filters: { @@ -374,18 +301,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 +407,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 +421,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 +434,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 +456,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: { /* diff --git a/src/views/admin/meeting/modules/RoomContentModal.vue b/src/views/admin/meeting/modules/RoomContentModal.vue index cfe2831..76dfac8 100644 --- a/src/views/admin/meeting/modules/RoomContentModal.vue +++ b/src/views/admin/meeting/modules/RoomContentModal.vue @@ -18,235 +18,71 @@ - - - {{ item.name }} - - - - - - - {{ item.name }} - - - - - - - - - - {{ item.buildingName }} - - - - - - - - {{ item.floorName }} + + + + {{ item.text }} - - - - - - - - {{ item.name }} - - - - - - - - - - - - + v-decorator="['name',{rules: [{ required: true, message: '输入会议室名称' }]}]" /> + + + - - - - 会议室 - - - 路演厅 - - - 洽谈室 - - - 直播间 - - - 茶室 - - - 长阳会客厅 - - - 多功能厅 - - - 数据要素 + + + + {{ item.text }} + + + + + + + + + + + - - - - - - - - - - - - 围桌式 - - - 课桌式 - - - 长方形 - - - U形 - - - 鱼骨形 - - - 开放形 - - - 会议形 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 是 - - - 否 - - - - - - - - - - - - 是 - - - 否 - - - - - - - - - - - + + + + {{ item.text }} + + - 是 @@ -259,12 +95,6 @@ - - - - - @@ -275,7 +105,7 @@ { + // 楼层 + let _typeList = [] + let _typeMap = {} + let dataObj = res.data + for (let key in dataObj.floors) { + let eachObj = dataObj.floors[key] + const keys = Object.keys(eachObj) + _typeList.push({ + text: keys[0], + value: keys[0] + }) + this.typeMap[keys[0]] = eachObj[keys[0]] + // this.typeMap.keys[0] = eachObj[keys[0]] + } + + this.typeList = _typeList + + // 形状 + let _shapeList = [] + for (let key in dataObj.types) { + let eachObj = dataObj.types[key] + const keys = Object.keys(eachObj) + _shapeList.push({ + text: keys[0], + value: keys[0] + }) + this.shapeMap[keys[0]] = eachObj[keys[0]] + } + this.shapeList = _shapeList + + // 设备 + let _deviceList = [] + for (let key in dataObj.devices) { + let eachObj = dataObj.devices[key] + const keys = Object.keys(eachObj) + _deviceList.push({ + text: keys[0], + value: keys[0] + }) + this.deviceMap[keys[0]] = eachObj[keys[0]] + } + this.deviceList = _deviceList + }) + }, // 获取用户详细信息 getUserDetail() { 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,108 +295,123 @@ 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 + } + 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' + ) ) - ) + }) + // 图片 + 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) + // values.indoorPicUrl = JSON.stringify(indoorPicUrl) + values.files = files + let deviceArr = values.device + let deviceStr = '' + for (let key in deviceArr) { + let eachObj = deviceArr[key] + deviceStr += '#' + eachObj + ' ' + } + values.device = deviceStr + values.floorId = this.typeMap[values.floor] + values.typeId = this.shapeMap[values.typeName] + saveRoomContent(values) .then((res) => { if (res.code === 0) { From a2c1482afee702c3041629093128dbdc7722ec87 Mon Sep 17 00:00:00 2001 From: "471615499@qq.com" Date: Wed, 25 Sep 2024 22:13:53 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E3=80=81=E4=BC=9A=E8=AE=AE=E5=AE=A4=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=8A=9F=E8=83=BD=20=E5=8A=A0=E5=85=A5=E6=89=80?= =?UTF-8?q?=E6=9C=89=E9=A1=B5=E9=9D=A2=E7=9A=84=E5=BC=BA=E5=88=B6=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/admin/meeting/roomContent.js | 7 +- src/api/admin/meeting/uto.js | 34 ++++ src/views/admin/RepairList.vue | 1 + src/views/admin/meeting/RoomContentList.vue | 12 +- src/views/admin/meeting/UtoList.vue | 184 ++++++++++++++++++ .../meeting/modules/RoomContentModal.vue | 5 +- src/views/admin/meeting/modules/UtoModal.vue | 115 +++++++++++ src/views/admin/repair/PerformanceList.vue | 3 + src/views/admin/repair/RepairAddressList.vue | 1 + src/views/admin/repair/RepairDeviceList.vue | 1 + .../admin/repair/RepairDeviceTypeList.vue | 1 + src/views/admin/repair/RepairHistory.vue | 1 + 12 files changed, 349 insertions(+), 16 deletions(-) create mode 100644 src/api/admin/meeting/uto.js create mode 100644 src/views/admin/meeting/UtoList.vue create mode 100644 src/views/admin/meeting/modules/UtoModal.vue diff --git a/src/api/admin/meeting/roomContent.js b/src/api/admin/meeting/roomContent.js index 4694b3b..18b877e 100644 --- a/src/api/admin/meeting/roomContent.js +++ b/src/api/admin/meeting/roomContent.js @@ -54,11 +54,14 @@ export function selectSearchInfoByShape(parameter) { }) } -export function saveRoomContent(parameter) { +export function saveRoomContent(parameter, files) { return axios({ url: '/admin/meetingRoom' + (parameter.id > 0 ? '/update' : '/save'), method: 'post', - params: parameter, + data: { + room: parameter, + files: files + }, headers: { 'Content-Type': 'application/json;charset=UTF-8' } diff --git a/src/api/admin/meeting/uto.js b/src/api/admin/meeting/uto.js new file mode 100644 index 0000000..bfe642a --- /dev/null +++ b/src/api/admin/meeting/uto.js @@ -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' diff --git a/src/views/admin/RepairList.vue b/src/views/admin/RepairList.vue index 63b341a..e9d3b18 100644 --- a/src/views/admin/RepairList.vue +++ b/src/views/admin/RepairList.vue @@ -103,6 +103,7 @@ size='default' ref='table' rowKey='id' + showPagination="true" :rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}' :columns='columns' :data='loadData' diff --git a/src/views/admin/meeting/RoomContentList.vue b/src/views/admin/meeting/RoomContentList.vue index 649234c..2ee61bf 100644 --- a/src/views/admin/meeting/RoomContentList.vue +++ b/src/views/admin/meeting/RoomContentList.vue @@ -75,6 +75,7 @@ size='default' ref='table' rowKey='id' + showPagination='true' :rowSelection='{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }' :columns='columns' :data='loadData' @@ -95,17 +96,6 @@ - -

是否确认删除?

-
- - + +
+ + + + + + + + + + 查询 + 重置 + + + + +
+
+ 新建 + + 删除 + +
+ + + 编辑 + + 删除 + + + +
+ + + diff --git a/src/views/admin/meeting/modules/RoomContentModal.vue b/src/views/admin/meeting/modules/RoomContentModal.vue index 76dfac8..b422ae5 100644 --- a/src/views/admin/meeting/modules/RoomContentModal.vue +++ b/src/views/admin/meeting/modules/RoomContentModal.vue @@ -401,7 +401,7 @@ export default { // 多个图片 // values.indoorPicUrl = JSON.stringify(indoorPicUrl) - values.files = files + // values.files = files let deviceArr = values.device let deviceStr = '' for (let key in deviceArr) { @@ -411,8 +411,7 @@ export default { values.device = deviceStr values.floorId = this.typeMap[values.floor] values.typeId = this.shapeMap[values.typeName] - - saveRoomContent(values) + saveRoomContent(values, files) .then((res) => { if (res.code === 0) { this.$message.success('保存成功') diff --git a/src/views/admin/meeting/modules/UtoModal.vue b/src/views/admin/meeting/modules/UtoModal.vue new file mode 100644 index 0000000..9fe658e --- /dev/null +++ b/src/views/admin/meeting/modules/UtoModal.vue @@ -0,0 +1,115 @@ + + diff --git a/src/views/admin/repair/PerformanceList.vue b/src/views/admin/repair/PerformanceList.vue index 7718f72..8ea947a 100644 --- a/src/views/admin/repair/PerformanceList.vue +++ b/src/views/admin/repair/PerformanceList.vue @@ -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' > diff --git a/src/views/admin/repair/RepairAddressList.vue b/src/views/admin/repair/RepairAddressList.vue index 1b2266a..d2e6874 100644 --- a/src/views/admin/repair/RepairAddressList.vue +++ b/src/views/admin/repair/RepairAddressList.vue @@ -22,6 +22,7 @@ size="default" ref="table" rowKey="id" + showPagination="true" :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" :columns="columns" :data="loadData" diff --git a/src/views/admin/repair/RepairDeviceList.vue b/src/views/admin/repair/RepairDeviceList.vue index eb51409..cb5e468 100644 --- a/src/views/admin/repair/RepairDeviceList.vue +++ b/src/views/admin/repair/RepairDeviceList.vue @@ -27,6 +27,7 @@ size='default' ref='table' rowKey='id' + showPagination="true" :rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}' :columns='columns' :data='loadData' diff --git a/src/views/admin/repair/RepairDeviceTypeList.vue b/src/views/admin/repair/RepairDeviceTypeList.vue index 676d6f0..c7e1c36 100644 --- a/src/views/admin/repair/RepairDeviceTypeList.vue +++ b/src/views/admin/repair/RepairDeviceTypeList.vue @@ -28,6 +28,7 @@ size='default' ref='table' rowKey='id' + showPagination="true" :rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}' :columns='columns' :data='loadData' diff --git a/src/views/admin/repair/RepairHistory.vue b/src/views/admin/repair/RepairHistory.vue index c30562f..666a4d0 100644 --- a/src/views/admin/repair/RepairHistory.vue +++ b/src/views/admin/repair/RepairHistory.vue @@ -51,6 +51,7 @@ size='default' ref='table' rowKey='id' + showPagination="true" :columns='columns' :data='loadData' > From 1259f068a8779c77a7f588767355d8cc84999ae7 Mon Sep 17 00:00:00 2001 From: "471615499@qq.com" Date: Fri, 4 Oct 2024 17:25:18 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=20=E5=8A=A0=E5=85=A5=E4=BC=9A=E8=AE=AE?= =?UTF-8?q?=E5=AE=A4=E6=9C=8D=E5=8A=A1=E7=BB=91=E5=AE=9A=20=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E4=BC=9A=E8=AE=AE=E5=AE=A4=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 + src/App.vue | 15 +- src/api/admin/meeting/count.js | 93 +++ src/api/admin/meeting/roomContent.js | 2 +- src/views/admin/meeting/MeetingCount.vue | 665 ++++++++++++++++++ src/views/admin/meeting/RoomContentList.vue | 27 +- .../meeting/modules/RoomContentModal.vue | 50 +- 7 files changed, 843 insertions(+), 12 deletions(-) create mode 100644 src/api/admin/meeting/count.js create mode 100644 src/views/admin/meeting/MeetingCount.vue diff --git a/README.md b/README.md index 5253c16..dd95bb7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@

ICS Ant

Overview +## 前端文档地址: +https://1x.antdv.com/components/ + ---- 项目下载和运行 ---- diff --git a/src/App.vue b/src/App.vue index ec4784d..c24c654 100644 --- a/src/App.vue +++ b/src/App.vue @@ -9,18 +9,21 @@ diff --git a/src/api/admin/meeting/count.js b/src/api/admin/meeting/count.js new file mode 100644 index 0000000..897c61a --- /dev/null +++ b/src/api/admin/meeting/count.js @@ -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 + }) +} \ No newline at end of file diff --git a/src/api/admin/meeting/roomContent.js b/src/api/admin/meeting/roomContent.js index 18b877e..7619b59 100644 --- a/src/api/admin/meeting/roomContent.js +++ b/src/api/admin/meeting/roomContent.js @@ -15,7 +15,7 @@ export function getMeetingDict(parameter) { export function getRoomContentList(parameter) { return axios({ // url: api.roomContent + '/list', - url: '/admin/meetingRoom/list?pageNum=', + url: '/admin/meetingRoom/list', method: 'post', params: parameter }) diff --git a/src/views/admin/meeting/MeetingCount.vue b/src/views/admin/meeting/MeetingCount.vue new file mode 100644 index 0000000..4b3c961 --- /dev/null +++ b/src/views/admin/meeting/MeetingCount.vue @@ -0,0 +1,665 @@ + + + diff --git a/src/views/admin/meeting/RoomContentList.vue b/src/views/admin/meeting/RoomContentList.vue index 2ee61bf..63a41e3 100644 --- a/src/views/admin/meeting/RoomContentList.vue +++ b/src/views/admin/meeting/RoomContentList.vue @@ -48,7 +48,7 @@ 41-50 - 50-100 + 51-100 100以上 @@ -231,11 +231,34 @@ export default { ], // 加载数据方法 必须为 Promise 对象 loadData: (parameter) => { + let minPerNum = 0 + let maxPerNum = 1000 + let perNumValue = this.queryParam.capacityNum + if (perNumValue == 6) { + // 51-100 + maxPerNum = 100 + minPerNum = 51 + } else if (perNumValue == 7) { + // 100以上 + minPerNum = 101 + maxPerNum = 1000 + } else if (perNumValue == '') { + // 全部 + minPerNum = 1 + maxPerNum = 1000 + } else { + // 其余,符合规则即可 + // perNumValue * 10 - 9 ~ perNumValue * 10 + maxPerNum = parseInt(perNumValue) * 10 + minPerNum = maxPerNum - 9 + } const param = { name: this.queryParam.meetingName, // 名称 floor: this.queryParam.typeName, // 楼层名称 typeName: this.queryParam.shape, // 形状 - capacityNum: this.queryParam.capacityNum // 容纳人数 + // capacityNum: this.queryParam.capacityNum // 容纳人数 + min: minPerNum, // 最小容纳人数 + max: maxPerNum, // 最大容纳人数 } // if (param.typeName === '') { // delete param.typeName diff --git a/src/views/admin/meeting/modules/RoomContentModal.vue b/src/views/admin/meeting/modules/RoomContentModal.vue index b422ae5..2417ea4 100644 --- a/src/views/admin/meeting/modules/RoomContentModal.vue +++ b/src/views/admin/meeting/modules/RoomContentModal.vue @@ -58,7 +58,7 @@ + v-decorator="['area']" /> @@ -72,7 +72,7 @@ - {{ item.text }} @@ -80,6 +80,16 @@ + + + + + {{ item.text }} + + + + Date: Tue, 8 Oct 2024 16:51:42 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E7=94=A8=E6=88=B7=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/admin/IcsCustomerStaffList.vue | 38 +++- .../admin/modules/IcsCustomerStaffModal.vue | 170 +++++++++--------- 2 files changed, 117 insertions(+), 91 deletions(-) diff --git a/src/views/admin/IcsCustomerStaffList.vue b/src/views/admin/IcsCustomerStaffList.vue index beacb5d..648a5a6 100644 --- a/src/views/admin/IcsCustomerStaffList.vue +++ b/src/views/admin/IcsCustomerStaffList.vue @@ -36,20 +36,39 @@ :columns='columns' :data='loadData' > + - 维修员 + 普通用户 - + 派单员 - - 网格长 + + 维修人 + + + 管理员 + + + 楼层管理员 + + + + 普通用户 + + + 派单员 + + + 维修人 + + - - + 编辑 + 删除
@@ -97,10 +116,15 @@ export default { dataIndex: 'mobile' }, { - title: '角色类型', + title: '报修角色类型', dataIndex: 'dataType', scopedSlots: { customRender: 'dataType' } }, + { + title: '会议角色类型', + dataIndex: 'roomRole', + scopedSlots: { customRender: 'roomRole' } + }, { title: '创建时间', dataIndex: 'createTime' diff --git a/src/views/admin/modules/IcsCustomerStaffModal.vue b/src/views/admin/modules/IcsCustomerStaffModal.vue index f2b6fc6..c6a152a 100644 --- a/src/views/admin/modules/IcsCustomerStaffModal.vue +++ b/src/views/admin/modules/IcsCustomerStaffModal.vue @@ -1,89 +1,89 @@