sunlupeng пре 1 година
родитељ
комит
25318a22ab

+ 2 - 2
.env.dev

@@ -6,9 +6,9 @@ VUE_APP_TITLE = 爱思系统
 
 # 爱思系统/开发环境
 # 赵培清
-VUE_APP_BASE_API = 'http://192.168.100.213:48080'
+# VUE_APP_BASE_API = 'http://192.168.100.213:48080'
 # 王东坡
-# VUE_APP_BASE_API = 'http://192.168.100.64:48081'
+VUE_APP_BASE_API = 'http://192.168.100.64:48081'
 # 测试
 # VUE_APP_BASE_API = 'http://47.103.79.143:48081'
 

+ 21 - 29
src/api/meeting.js

@@ -1,68 +1,60 @@
 import request from '@/utils/request'
-//会议室预定情况
-export function reserveInfo(query) {
-    return request({
-      url: '/system/post/page',
-      method: 'get',
-      params: query
-    })
-  }
 
-// 查询岗位列表
-export function listPost(query) {
+// 查询会议室列表
+export function listMeeting(query) {
   return request({
-    url: '/system/post/page',
+    url: '/bpm/oa-meeting-room/page',
     method: 'get',
     params: query
   })
 }
 
-// 获取岗位精简信息列表
-export function listSimplePosts() {
+// 获取会议室精简信息列表
+export function listSimpleMeetings() {
   return request({
-    url: '/system/post/list-all-simple',
+    url: '/bpm/oa-meeting-room/list',
     method: 'get'
   })
 }
 
-// 查询岗位详细
-export function getPost(postId) {
+// 查询会议室详细
+export function getMeeting(postId) {
   return request({
-    url: '/system/post/get?id=' + postId,
+    url: '/bpm/oa-meeting-room/get?id=' + postId,
     method: 'get'
   })
 }
 
-// 新增岗位
-export function addPost(data) {
+// 新增会议室
+export function addMeeting(data) {
   return request({
-    url: '/system/post/create',
+    url: '/bpm/oa-meeting-room/create',
     method: 'post',
     data: data
   })
 }
 
-// 修改岗位
-export function updatePost(data) {
+// 修改会议室
+export function updateMeeting(data) {
   return request({
-    url: '/system/post/update',
+    url: '/bpm/oa-meeting-room/update',
     method: 'put',
     data: data
   })
 }
 
-// 删除岗位
-export function delPost(postId) {
+// 删除会议室
+export function delMeeting(postId) {
   return request({
-    url: '/system/post/delete?id=' + postId,
+    url: '/bpm/oa-meeting-room/delete?id=' + postId,
     method: 'delete'
   })
 }
 
-// 导出岗位
-export function exportPost(query) {
+// 导出会议室
+export function exportMeeting(query) {
   return request({
-    url: '/system/post/export',
+    url: '/bpm/oa-meeting-room/export-excel',
     method: 'get',
     params: query,
     responseType: 'blob'

+ 79 - 0
src/api/reserveMeeting.js

@@ -0,0 +1,79 @@
+import request from '@/utils/request'
+
+// 查询列表
+export function listReserveMeeting(query) {
+  return request({
+    url: '/bpm/oa-meeting-reserve/page',
+    method: 'get',
+    params: query
+  })
+}
+
+// 获取精简信息列表
+export function listSimpleReserveMeetings(query) {
+  return request({
+    url: '/bpm/oa-meeting-reserve/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询详细
+export function getReserveMeeting(postId) {
+  return request({
+    url: '/bpm/oa-meeting-reserve/get?id=' + postId,
+    method: 'get'
+  })
+}
+
+// 新增
+export function addReserveMeeting(data) {
+  return request({
+    url: '/bpm/oa-meeting-reserve/create',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改
+export function updateReserveMeeting(data) {
+  return request({
+    url: '/bpm/oa-meeting-reserve/update',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除
+export function delReserveMeeting(postId) {
+  return request({
+    url: '/bpm/oa-meeting-reserve/delete?id=' + postId,
+    method: 'delete'
+  })
+}
+
+// 取消
+export function cancelReserveMeeting(postId) {
+  return request({
+    url: '/bpm/oa-meeting-reserve/cancel?id=' + postId,
+    method: 'get'
+  })
+}
+
+// 结束
+export function endReserveMeeting(postId) {
+  return request({
+    url: '/bpm/oa-meeting-reserve/end?id=' + postId,
+    method: 'get'
+  })
+}
+
+// 导出
+export function exportReserveMeeting(query) {
+  return request({
+    url: '/bpm/oa-meeting-reserve/export-excel',
+    method: 'get',
+    params: query,
+    responseType: 'blob'
+  })
+}

+ 1 - 0
src/store/getters.js

@@ -4,6 +4,7 @@ const getters = {
   device: state => state.app.device,
   visitedViews: state => state.tagsView.visitedViews,
   cachedViews: state => state.tagsView.cachedViews,
+  userInfo: state => state.user.userInfo,
   userId: state => state.user.id,
   token: state => state.user.token,
   avatar: state => state.user.avatar,

+ 5 - 0
src/store/modules/user.js

@@ -4,6 +4,7 @@ import { changeTenant } from '@/api/system/tenant'
 
 const user = {
   state: {
+    userInfo: {},
     id: 0, // 用户编号
     name: '',
     avatar: '',
@@ -15,6 +16,9 @@ const user = {
   },
 
   mutations: {
+    SET_USERINFO: (state, user) => {
+      state.userInfo = JSON.stringify(user)
+    },
     SET_ID: (state, id) => {
       state.id = id
     },
@@ -174,6 +178,7 @@ const user = {
           } else {
             commit('SET_ROLES', ['ROLE_DEFAULT'])
           }
+          commit('SET_USERINFO', user)
           commit('SET_ID', user.id)
           commit('SET_NAME', user.userName)
           commit('SET_NICKNAME', user.nickname)

+ 1 - 1
src/views/login.vue

@@ -210,7 +210,7 @@ export default {
             removePassword()
             removeRememberMe()
           }
-          // setTenantId(1)
+          setTenantId(1)
           this.$store.dispatch(this.loginForm.loginType === "sms" ? "SmsLogin" : "Login", this.loginForm).then(() => {
             this.$router.push({path: "/"}).catch(() => {
             });

+ 33 - 33
src/views/meeting/list/index.vue

@@ -1,8 +1,8 @@
 <template>
     <div class="app-container">
       <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
-        <el-form-item label="会议室名称" prop="groomName">
-          <el-input v-model="queryParams.groomName" placeholder="请输入会议室名称" clearable @keyup.enter.native="handleQuery"/>
+        <el-form-item label="会议室名称" prop="name">
+          <el-input v-model="queryParams.name" placeholder="请输入会议室名称" clearable @keyup.enter.native="handleQuery"/>
         </el-form-item>
         <el-form-item>
           <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
@@ -15,17 +15,17 @@
           <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
                      v-hasPermi="['meeting:list:create']">新增</el-button>
         </el-col>
-        <!-- <el-col :span="1.5">
+        <el-col :span="1.5">
           <el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
-                     v-hasPermi="['system:post:export']">导出</el-button>
-        </el-col> -->
+                     v-hasPermi="['meeting:list:export']">导出</el-button>
+        </el-col>
         <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
       </el-row>
   
       <el-table v-loading="loading" :data="postList">
-        <el-table-column label="会议室名称" align="center" prop="groomName" />
-        <el-table-column label="容纳人数" align="center" prop="groomSize" />
-        <el-table-column label="管理员" align="center" prop="administratorName" />
+        <el-table-column label="会议室名称" align="center" prop="name" />
+        <el-table-column label="容纳人数" align="center" prop="size" />
+        <el-table-column label="管理员" align="center" prop="managerName" />
         <el-table-column label="添加时间" align="center" prop="createTime" width="180">
           <template v-slot="scope">
             <span>{{ parseTime(scope.row.createTime) }}</span>
@@ -45,17 +45,17 @@
                   @pagination="getList"/>
   
       <!-- 添加或修改岗位对话框 -->
-      <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
+      <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
         <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-          <el-form-item label="名称" prop="groomName">
-            <el-input v-model="form.groomName" placeholder="请输入会议室名称" />
+          <el-form-item label="名称" prop="name">
+            <el-input v-model="form.name" placeholder="请输入会议室名称" />
           </el-form-item>
-          <el-form-item label="容纳人数" prop="groomSize">
-            <el-input-number v-model="form.groomSize" controls-position="right" :min="0" />
+          <el-form-item label="容纳人数" prop="size">
+            <el-input-number v-model="form.size" controls-position="right" :min="0" style="width: 100%;"/>
             
           </el-form-item>
-          <el-form-item label="管理员" prop="administratorName">
-            <el-input v-model="form.administratorName" placeholder="请选择管理员" readonly @click.native="openSingle" />
+          <el-form-item label="管理员" prop="managerName">
+            <el-input v-model="form.managerName" placeholder="请选择管理员" readonly @click.native="openSingle" />
           </el-form-item>
         </el-form>
         <div slot="footer" class="dialog-footer">
@@ -69,13 +69,13 @@
   </template>
   
   <script>
-  import { listPost, getPost, delPost, addPost, updatePost, exportPost } from "@/api/meeting";
+  import { listMeeting, getMeeting, delMeeting, addMeeting, updateMeeting, exportMeeting } from "@/api/meeting";
   import PeopleSelect from "@/components/PeopleSelect/index.vue";
   import {CommonStatusEnum} from '@/utils/constants'
   import { getDictDatas, DICT_TYPE } from '@/utils/dict'
   
   export default {
-    name: "SystemPost",
+    name: "SystemMeeting",
     components: {
     PeopleSelect,
   },
@@ -100,19 +100,19 @@
         queryParams: {
           pageNo: 1,
           pageSize: 10,
-          groomName: undefined,
+          name: undefined,
         },
         // 表单参数
         form: {},
         // 表单校验
         rules: {
-          groomName: [
+          name: [
             { required: true, message: "会议室名称不能为空", trigger: "blur" }
           ],
-          groomSize: [
+          size: [
             { required: true, message: "容纳人数不能为空", trigger: "blur" }
           ],
-          administratorName: [
+          managerName: [
             { required: true, message: "管理员不能为空", trigger: "blur" }
           ]
         },
@@ -134,14 +134,14 @@
     submitSingle(peopleList,nikeNamelist,userIdList) {
       console.log(peopleList);
       console.log(nikeNamelist);
-      this.form.administratorId = userIdList.join();
-      this.form.administratorName = nikeNamelist.join();
+      this.form.managerId = userIdList.join();
+      this.form.managerName = nikeNamelist.join();
       this.singlePeopleOpen = false;
     },
       /** 查询岗位列表 */
       getList() {
         this.loading = true;
-        listPost(this.queryParams).then(response => {
+        listMeeting(this.queryParams).then(response => {
           this.postList = response.data.list;
           this.total = response.data.total;
           this.loading = false;
@@ -155,10 +155,10 @@
       // 表单重置
       reset() {
         this.form = {
-          groomName: undefined,
-          groomSize: 0,
-          administratorName: undefined,
-          administratorId: undefined
+          name: undefined,
+          size: 0,
+          managerName: undefined,
+          managerId: undefined
         };
         this.resetForm("form");
       },
@@ -182,7 +182,7 @@
       handleUpdate(row) {
         this.reset();
         const id = row.id
-        getPost(id).then(response => {
+        getMeeting(id).then(response => {
           this.form = response.data;
           this.open = true;
           this.title = "修改会议室";
@@ -193,13 +193,13 @@
         this.$refs["form"].validate(valid => {
           if (valid) {
             if (this.form.id !== undefined) {
-              updatePost(this.form).then(response => {
+              updateMeeting(this.form).then(response => {
                 this.$modal.msgSuccess("修改成功");
                 this.open = false;
                 this.getList();
               });
             } else {
-              addPost(this.form).then(response => {
+              addMeeting(this.form).then(response => {
                 this.$modal.msgSuccess("新增成功");
                 this.open = false;
                 this.getList();
@@ -212,7 +212,7 @@
       handleDelete(row) {
         const ids = row.id;
         this.$modal.confirm('是否确认删除会议室编号为"' + ids + '"的数据项?').then(function() {
-            return delPost(ids);
+            return delMeeting(ids);
           }).then(() => {
             this.getList();
             this.$modal.msgSuccess("删除成功");
@@ -223,7 +223,7 @@
         const queryParams = this.queryParams;
         this.$modal.confirm('是否确认导出所有会议室数据项?').then(() => {
             this.exportLoading = true;
-            return exportPost(queryParams);
+            return exportMeeting(queryParams);
           }).then(response => {
             this.$download.excel(response, '会议室数据.xls');
             this.exportLoading = false;

+ 59 - 65
src/views/meeting/reserve/index.vue

@@ -1,10 +1,9 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" label-position="left" :inline="true">
-      <el-form-item label="会议室" prop="status">
-        <el-select v-model="queryParams.status" placeholder="岗位状态" clearable>
-          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" :key="parseInt(dict.value)"
-            :label="dict.label" :value="parseInt(dict.value)" />
+      <el-form-item label="会议室" prop="roomId">
+        <el-select v-model="queryParams.roomId" placeholder="会议室" clearable>
+          <el-option v-for="dict in meetingRoomList" :key="dict.id" :label="dict.name" :value="dict.id" />
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -15,7 +14,8 @@
     <FullCalendar class="fullCalendar" ref="fullCalendar" :options="calendarOptions">
       <template v-slot:eventContent="arg">
         <div style="width: 100%;font-size: 14px;">
-          <span>{{ arg.event.extendedProps.startTieme }} ~ {{ arg.event.extendedProps.endTieme }}</span>
+          <!-- {{ arg.event }} -->
+          <span>{{ arg.event.extendedProps.start_time }} ~ {{ arg.event.extendedProps.end_time }}</span>
           <div>{{ arg.event.title }}</div>
         </div>
       </template>
@@ -25,7 +25,8 @@
 
 
 <script>
-import { reserveInfo } from "@/api/meeting";
+import { listSimpleMeetings } from "@/api/meeting";
+import { listSimpleReserveMeetings } from "@/api/reserveMeeting";
 import FullCalendar from '@fullcalendar/vue'
 import dayGridPlugin from '@fullcalendar/daygrid'
 import interactionPlugin from '@fullcalendar/interaction'
@@ -37,10 +38,11 @@ export default {
   },
   data() {
     return {
+      meetingRoomList: [],
       // 查询参数
       queryParams: {
-        status: 1,
-        strDate: this.nowDate(),
+        roomId: undefined,
+        month: this.nowDate(),
       },
       calendarApi: null,
       calendarOptions: {
@@ -68,57 +70,7 @@ export default {
           minute: '2-digit',
           hour12: false
         },
-        events: [
-          {
-            state: '1',
-            title: '会议状态 : 未开始',
-            startTieme: '12:00:00',
-            endTieme: '15:00:00',
-            start: '2024-07-10',
-            end: '2024-07-10',
-            allDay: true, // 是否为全天事件
-            backgroundColor: '#f8ac59', // 该事件的背景颜色
-            borderColor: '#f8ac59', // 该事件的边框颜色
-            textColor: '#fff' // 该事件的文字颜色
-          },
-          {
-            state: '2',
-            title: '会议状态 : 进行中',
-            startTieme: '12:00:00',
-            endTieme: '15:00:00',
-            start: '2024-07-10 12:00:00',
-            end: '2024-07-10 15:00:00',
-            allDay: true, // 是否为全天事件
-            backgroundColor: '#1ab394', // 该事件的背景颜色
-            borderColor: '#1ab394', // 该事件的边框颜色
-            textColor: '#fff' // 该事件的文字颜色
-          },
-          {
-            state: '3',
-            title: '会议状态 : 已结束',
-            startTieme: '12:00:00',
-            endTieme: '15:00:00',
-            start: '2024-07-17',
-            end: '2024-07-17',
-            allDay: true, // 是否为全天事件
-            backgroundColor: '#ed5565', // 该事件的背景颜色
-            borderColor: '#ed5565', // 该事件的边框颜色
-            textColor: '#fff' // 该事件的文字颜色
-          },
-          {
-            state: '4',
-            title: '会议状态 : 已取消',
-            startTieme: '12:00:00',
-            endTieme: '15:00:00',
-            start: '2024-07-17',
-            end: '2024-07-17',
-            allDay: true, // 是否为全天事件
-            backgroundColor: '#ccc', // 该事件的背景颜色
-            borderColor: '#ccc', // 该事件的边框颜色
-            textColor: '#fff' // 该事件的文字颜色
-          },
-
-        ],
+        events: [],
         customButtons: { // 定义可在headerToolbar / footerToolbar中使用的自定义按钮
           today: {
             text: '今天', // 按钮的展示文本
@@ -144,9 +96,16 @@ export default {
     this.calendarApi = this.$refs.fullCalendar.getApi()
   },
   created() {
-    // this.getEvents();
+    this.getMeetingList();
+    this.getList();
   },
   methods: {
+    /** 查询会议室列表 */
+    getMeetingList() {
+      listSimpleMeetings().then(response => {
+        this.meetingRoomList = response.data;
+      });
+    },
     // 获取当前年月
     nowDate() {
       var d = new Date();
@@ -160,12 +119,41 @@ export default {
       var str = d.getFullYear() + '-' + month;
       return str;
     },
-    getEvents() {
-      reserveInfo(this.queryParams).then(response => {
+    getList() {
+      this.calendarOptions.events = [];
+      listSimpleReserveMeetings(this.queryParams).then(response => {
         const event = response.data // 拿到返回的数据
-        for (var i = 0; i < event.length; i++) {
-          this.calendarOptions.events.push(event[i]) // 使用push方法将事件逐一添加,
-        }
+        event.forEach(item => {
+          let obj = {};
+          if (item.status == '1') {
+            obj.backgroundColor = '#f8ac59'; // 该事件的背景颜色
+            obj.borderColor = '#f8ac59'; // 该事件的边框颜色
+            obj.textColor = '#fff'; // 该事件的文字颜色
+          }
+          if (item.status == '2') {
+            obj.backgroundColor = '#1ab394'; // 该事件的背景颜色
+            obj.borderColor = '#1ab394'; // 该事件的边框颜色
+            obj.textColor = '#fff'; // 该事件的文字颜色
+          }
+          if (item.status == '3') {
+            obj.backgroundColor = '#ed5565'; // 该事件的背景颜色
+            obj.borderColor = '#ed5565'; // 该事件的边框颜色
+            obj.textColor = '#fff'; // 该事件的文字颜色
+          }
+          if (item.status == '4') {
+            obj.backgroundColor = '#ccc'; // 该事件的背景颜色
+            obj.borderColor  = '#ccc'; // 该事件的边框颜色
+            obj.textColor = '#fff'; // 该事件的文字颜色
+          }
+          obj.state = item.status
+          obj.title = '会议状态 : ' + item.statusDesc
+          obj.start_time = item.startTime.substring(11, item.startTime.length)
+          obj.end_time = item.endTime.substring(11, item.endTime.length)
+          obj.start = item.startTime
+          obj.end = item.endTime
+          obj.allDay = true // 是否为全天事件
+          this.calendarOptions.events.push(obj) // 使用push方法将事件逐一添加,
+        });
         console.log(this.calendarOptions.events)
         this.calendarApi.refetchEvents()
         // 重新抓取所有的日程事件源上的日程事件并渲染它们。
@@ -208,6 +196,8 @@ export default {
       this.calendarApi.getDate() // 返回日期的日历的当前日期
       const formattedDate = this.formatDate(this.calendarApi.view.title);//获取当前月份
       console.log(formattedDate); // 输出: 2024-08
+      this.queryParams.month = formattedDate;
+      this.getList();
     },
     nextClick(mouseEvent, htmlElement) {
       this.calendarApi.next() // 将日历向前移动一步(例如,一个月或一周)。
@@ -216,6 +206,8 @@ export default {
       // 如果日历位于dayGridDay或中timeGridDay,则将日历向前移动一天。
       const formattedDate = this.formatDate(this.calendarApi.view.title);//获取当前月份
       console.log(formattedDate);
+      this.queryParams.month = formattedDate;
+      this.getList();
     },
     prevClick(mouseEvent, htmlElement) {
       this.calendarApi.prev() // 将日历后退一步(例如,一个月或一周)。
@@ -224,6 +216,8 @@ export default {
       // 如果日历位于dayGridDay或中timeGridDay,则将日历移回一天。
       const formattedDate = this.formatDate(this.calendarApi.view.title);//获取当前月份
       console.log(formattedDate); // 输出: 2024-08
+      this.queryParams.month = formattedDate;
+      this.getList();
     }
   }
 }

+ 122 - 96
src/views/meeting/reserveList/index.vue

@@ -1,18 +1,25 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="会议ID" prop="reserveId">
-        <el-input v-model="queryParams.reserveId" placeholder="请输入会议ID" clearable @keyup.enter.native="handleQuery" />
-      </el-form-item>
       <el-form-item label="会议名称" prop="name">
         <el-input v-model="queryParams.name" placeholder="请输入会议名称" clearable @keyup.enter.native="handleQuery" />
       </el-form-item>
-      <el-form-item label="会议地点" prop="groomId">
-        <el-select v-model="queryParams.groomId" placeholder="会议地点" clearable>
-          <el-option v-for="dict in statusDictDatas" :key="parseInt(dict.value)" :label="dict.label"
-            :value="parseInt(dict.value)" />
+      <el-form-item label="会议地点" prop="roomId">
+        <el-select v-model="queryParams.roomId" placeholder="会议地点" clearable>
+          <el-option v-for="dict in meetingRoomList" :key="dict.id" :label="dict.name"
+            :value="dict.id" />
         </el-select>
       </el-form-item>
+      <el-form-item label="会议开始" prop="startTime">
+        <el-date-picker v-model="queryParams.startTime" style="width: 250px" value-format="yyyy-MM-dd HH:mm:ss"
+          type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
+          :default-time="['00:00:00', '23:59:59']" />
+      </el-form-item>
+      <el-form-item label="会议结束" prop="endTime">
+        <el-date-picker v-model="queryParams.endTime" style="width: 250px" value-format="yyyy-MM-dd HH:mm:ss"
+          type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
+          :default-time="['00:00:00', '23:59:59']" />
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
@@ -21,43 +28,34 @@
 
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
-          v-hasPermi="['meeting:reserveList:create']">新增</el-button>
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
       </el-col>
-      <!-- <el-col :span="1.5">
-          <el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
-                     v-hasPermi="['meeting:reserveList:export']">导出</el-button>
-        </el-col> -->
+      <el-col :span="1.5">
+          <el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading">导出</el-button>
+        </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="postList">
-      <el-table-column label="会议ID" align="center" prop="reserveId" />
-      <el-table-column label="会议名称" align="center" prop="name" />
-      <el-table-column label="会议地点" align="center" prop="groomName" />
-      <el-table-column label="会议开始时间" align="center" prop="startTime" />
-      <el-table-column label="会议结束时间" align="center" prop="endTime" />
-      <el-table-column label="申请人" align="center" prop="applyUser" />
-      <el-table-column label="申请部门" align="center" prop="deptName" />
-      <el-table-column label="参会人数" align="center" prop="num" />
-      <el-table-column label="状态" align="center" prop="status">
-        <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
-        </template>
-      </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column label="会议名称" align="center" prop="meetingName" />
+      <el-table-column label="会议地点" align="center" prop="roomName" />
+      <el-table-column label="会议开始时间" align="center" prop="startTime" min-width="150"/>
+      <el-table-column label="会议结束时间" align="center" prop="endTime" min-width="150"/>
+      <el-table-column label="申请人" align="center" prop="applyEmployeeName" />
+      <el-table-column label="申请部门" align="center" prop="depName" />
+      <el-table-column label="参会人数" align="center" prop="number" />
+      <el-table-column label="状态" align="center" prop="statusDesc"/>
+      <el-table-column label="创建时间" align="center" prop="createTime" width="150">
       <template v-slot="scope">
             <span>{{ parseTime(scope.row.createTime) }}</span>
           </template>
       </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180">
         <template v-slot="scope">
-          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
-            v-hasPermi="['meeting:reserveList:update']">修改</el-button>
-          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
-            v-hasPermi="['meeting:reserveList:delete']">删除</el-button>
-          <el-button size="mini" type="text" icon="el-icon-detail" @click="handleDetail(scope.row)"
-            v-hasPermi="['meeting:reserveList:detail']">详情</el-button>
+          <el-button v-if="scope.row.statusDesc=='未开始'" size="mini" type="text" @click="handleUpdate(scope.row)">修改</el-button>
+          <el-button v-if="scope.row.statusDesc=='未开始'" size="mini" type="text" @click="handleCancel(scope.row)">取消</el-button>
+          <el-button v-if="scope.row.statusDesc=='进行中'" size="mini" type="text" @click="handleEnd(scope.row)">结束</el-button>
+          <el-button size="mini" type="text" @click="handleDetail(scope.row)">详情</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -68,36 +66,35 @@
     <!-- 添加或修改对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="会议名称" prop="name">
-          <el-input v-model="form.name" placeholder="请输入会议名称" />
+        <el-form-item label="会议名称" prop="meetingName">
+          <el-input v-model="form.meetingName" placeholder="请输入会议名称" />
         </el-form-item>
-        <el-form-item label="会议地点" prop="groomId">
-          <el-radio-group v-model="form.groomId">
-            <el-radio v-for="dict in statusDictDatas" :key="parseInt(dict.value)" :label="parseInt(dict.value)">
-              {{ dict.label }}</el-radio>
-          </el-radio-group>
+        <el-form-item label="会议地点" prop="roomId">
+          <el-select v-model="form.roomId" placeholder="会议地点" clearable style="width: 100%;">
+            <el-option v-for="dict in meetingRoomList" :key="dict.id" :label="dict.name"
+              :value="dict.id" />
+          </el-select>
         </el-form-item>
         <el-form-item label="开始时间" prop="startTime">
           <el-date-picker v-model="form.startTime" style="width: 100%" type="datetime"
-            value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择会议开始时间">
+            value-format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm" placeholder="选择会议开始时间">
           </el-date-picker>
         </el-form-item>
         <el-form-item label="结束时间" prop="endTime">
-          <el-date-picker v-model="form.endTime" style="width: 100%" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
+          <el-date-picker v-model="form.endTime" style="width: 100%" type="datetime" value-format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm"
             placeholder="选择会议结束时间">
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="申请人" prop="applyUser">
-          <el-input v-model="form.applyUser" placeholder="申请人" />
+        <el-form-item label="申请人" prop="endTime">
+          <el-input v-model="form.applyEmployeeName" placeholder="申请人" disabled/>
         </el-form-item>
-        <el-form-item label="申请部门" prop="deptName">
-          <el-input v-model="form.deptName" placeholder="申请部门" />
+        <el-form-item label="申请部门" prop="depName">
+          <el-input v-model="form.depName" placeholder="申请部门" disabled/>
         </el-form-item>
         <el-form-item label="参会人员" prop="peopleList">
           <el-input type="textarea" v-model="form.peopleList" style="display: none;" />
           <el-button class="button-new-tag" @click="openPS" size="small">+ 添加</el-button>
           <span v-for="(tag, index) in nikeNamelist" :key="index">
-            <!-- <i class="el-icon-arrow-right"></i> -->
             &nbsp;
             <el-tag type="info" closable :disable-transitions="false" @close="handleClose(index)">
               <span class="user-avatar">{{ tag.substring(0, 1) || 'U' }}</span>
@@ -108,7 +105,7 @@
         </el-form-item>
 
         <el-form-item label="会议内容">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+          <el-input v-model="form.meetingContent" type="textarea" placeholder="请输入内容" />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -126,7 +123,7 @@
               <div class="field-name">会议名称</div>
             </div>
             <div class="field-component">
-              <span :title="form.name">{{ form.name }}</span>
+              <span :title="form.meetingName">{{ form.meetingName }}</span>
             </div>
           </div>
           <div class="fx-field x-grid-col-12">
@@ -154,7 +151,7 @@
               <div class="field-name">申请人</div>
             </div>
             <div class="field-component">
-              <span :title="form.applyUser">{{ form.applyUser }}</span>
+              <span :title="form.applyEmployeeName">{{ form.applyEmployeeName }}</span>
             </div>
           </div>
           <div class="fx-field x-grid-col-12">
@@ -163,7 +160,7 @@
               <div class="field-name">申请部门</div>
             </div>
             <div class="field-component">
-              <span :title="form.deptName">{{ form.deptName }}</span>
+              <span :title="form.depName">{{ form.depName }}</span>
             </div>
           </div>
 
@@ -174,13 +171,8 @@
               <div class="field-name">参会人员</div>
             </div>
             <div class="field-component">
-              <span v-for="(tag, index) in form.nikeNamelist" :key="index">
-            &nbsp;
-            <el-tag type="info" :disable-transitions="false">
-              <span class="user-avatar">{{ tag.substring(0, 1) || 'U' }}</span>
-              {{ tag }}
-            </el-tag>
-          </span>
+              <span :title="form.participantsName">{{ form.participantsName }}</span>
+              
             </div>
           </div>
           <div class="fx-field x-grid-col-12">
@@ -188,7 +180,7 @@
               <div class="field-name">会议内容</div>
             </div>
             <div class="field-component">
-              <span :title="form.remark">{{ form.remark }}</span>
+              <span :title="form.meetingContent">{{ form.meetingContent }}</span>
             </div>
           </div>
         </div>
@@ -200,16 +192,21 @@
 </template>
 
 <script>
-import { listPost, getPost, delPost, addPost, updatePost, exportPost } from "@/api/meeting";
+import { listReserveMeeting, getReserveMeeting, delReserveMeeting,cancelReserveMeeting, addReserveMeeting, updateReserveMeeting, exportReserveMeeting } from "@/api/reserveMeeting";
+import { listSimpleMeetings } from "@/api/meeting";
 import PeopleSelect from "@/components/PeopleSelect/index.vue";
-import { CommonStatusEnum } from '@/utils/constants'
 import { getDictDatas, DICT_TYPE } from '@/utils/dict'
 
 export default {
-  name: "SystemPost",
+  name: "SystemReserveMeeting",
   components: {
     PeopleSelect,
   },
+  computed: {
+  userInfo() {
+      return JSON.parse(this.$store.getters.userInfo);
+    }
+  },
   data() {
     return {
       nikeNamelist: [],
@@ -223,8 +220,9 @@ export default {
       showSearch: true,
       // 总条数
       total: 0,
-      // 岗位表格数据
+      // 表格数据
       postList: [],
+      meetingRoomList: [],
       // 弹出层标题
       title: "",
       // 是否显示弹出层
@@ -234,18 +232,19 @@ export default {
       queryParams: {
         pageNo: 1,
         pageSize: 10,
-        reserveId: undefined,
-        name: undefined,
-        groomId: undefined
+        meetingName: undefined,
+        roomId: undefined,
+        startTime:[],
+        endTime:[],
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
-        name: [
+        meetingName: [
           { required: true, message: "会议名称不能为空", trigger: "blur" }
         ],
-        groomId: [
+        roomId: [
           { required: true, message: "会议室不能为空", trigger: "blur" }
         ],
         startTime: [
@@ -254,31 +253,35 @@ export default {
         endTime: [
           { required: true, message: "会议结束时间不能为空", trigger: "blur" }
         ],
-        applyUser: [
+        applyEmployeeName: [
           { required: true, message: "申请人不能为空", trigger: "blur" }
         ],
-        deptName: [
+        depName: [
           { required: true, message: "申请人部门不能为空", trigger: "blur" }
         ],
         peopleList: [
           { required: true, message: '参会人员不能为空', }
         ]
       },
-
-      // 枚举
-      CommonStatusEnum: CommonStatusEnum,
-      // 数据字典
-      statusDictDatas: getDictDatas(DICT_TYPE.COMMON_STATUS)
     };
   },
   created() {
     this.getList();
+    this.getMeetingList();
   },
   methods: {
-    // 关闭标签
-    handleClose(index) {
-      this.form.peopleList.splice(index, 1);
+     /** 查询会议室列表 */
+     getMeetingList() {
+      listSimpleMeetings().then(response => {
+        this.meetingRoomList = response.data;
+      });
+    },
+   // 关闭标签
+   handleClose(index) {
       this.nikeNamelist.splice(index, 1);
+      let peopleList = this.form.peopleList.split(',');
+      peopleList.splice(index, 1);
+      this.form.peopleList = peopleList.join(',');
     },
     //打开选人弹窗
     openPS() {
@@ -288,13 +291,13 @@ export default {
     submitPeople(userNamelist, nikeNamelist, userIdList) {
       console.log(userNamelist);
       this.nikeNamelist = nikeNamelist;
-      this.form.peopleList = userIdList;
+      this.form.peopleList = userIdList.join(',');
       this.peopleOpen = false;
     },
-    /** 查询岗位列表 */
+    /** 查询列表 */
     getList() {
       this.loading = true;
-      listPost(this.queryParams).then(response => {
+      listReserveMeeting(this.queryParams).then(response => {
         this.postList = response.data.list;
         this.total = response.data.total;
         this.loading = false;
@@ -309,13 +312,13 @@ export default {
     reset() {
       this.form = {
         name: undefined,
-        groomId: undefined,
+        roomId: undefined,
         startTime: undefined,
         endTime: undefined,
-        applyUser: undefined,
-        deptName: undefined,
+        applyEmployeeName: this.userInfo.nickname,
+        depName: this.userInfo.depName,
         peopleList: undefined,
-        remark: undefined
+        meetingContent: undefined
       };
       this.resetForm("form");
     },
@@ -333,23 +336,25 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加岗位";
+      this.title = "添加";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
       const id = row.id
-      getPost(id).then(response => {
+      getReserveMeeting(id).then(response => {
         this.form = response.data;
+        this.nikeNamelist = response.data.participantsName.split(',');
+        this.$set(this.form, 'peopleList', response.data.participants.join(','));
         this.open = true;
-        this.title = "修改岗位";
+        this.title = "修改";
       });
     },
     /** 详情按钮操作 */
     handleDetail(row) {
       this.reset();
       const id = row.id
-      getPost(id).then(response => {
+      getReserveMeeting(id).then(response => {
         this.form = response.data;
         this.openDetail = true;
         this.title = "详情";
@@ -361,14 +366,15 @@ export default {
       console.log(this.form);
       this.$refs["form"].validate(valid => {
         if (valid) {
+          this.form.participants = this.form.peopleList.split(',');
           if (this.form.id !== undefined) {
-            updatePost(this.form).then(response => {
+            updateReserveMeeting(this.form).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
-            addPost(this.form).then(response => {
+            addReserveMeeting(this.form).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -380,21 +386,41 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id;
-      this.$modal.confirm('是否确认删除岗位编号为"' + ids + '"的数据项?').then(function () {
-        return delPost(ids);
+      this.$modal.confirm('是否确认删除编号为"' + ids + '"的数据项?').then(function () {
+        return delReserveMeeting(ids);
       }).then(() => {
         this.getList();
         this.$modal.msgSuccess("删除成功");
       }).catch(() => { });
     },
+    /** 取消按钮操作 */
+    handleCancel(row) {
+      const ids = row.id;
+      this.$modal.confirm('是否确认取消"' +  row.meetingName + '"会议?').then(function () {
+        return cancelReserveMeeting(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("取消会议成功");
+      }).catch(() => { });
+    },
+    /** 结束按钮操作 */
+    handleEnd(row) {
+      const ids = row.id;
+      this.$modal.confirm('是否确认结束"' +  row.meetingName + '"会议?').then(function () {
+        return endReserveMeeting(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("结束会议成功");
+      }).catch(() => { });
+    },
     /** 导出按钮操作 */
     handleExport() {
       const queryParams = this.queryParams;
-      this.$modal.confirm('是否确认导出所有岗位数据项?').then(() => {
+      this.$modal.confirm('是否确认导出所有数据项?').then(() => {
         this.exportLoading = true;
-        return exportPost(queryParams);
+        return exportReserveMeeting(queryParams);
       }).then(response => {
-        this.$download.excel(response, '岗位数据.xls');
+        this.$download.excel(response, '数据.xls');
         this.exportLoading = false;
       }).catch(() => { });
     }