diff --git a/src/router/meetingManagement.js b/src/router/meetingManagement.js index 6aac70c..236ca5e 100644 --- a/src/router/meetingManagement.js +++ b/src/router/meetingManagement.js @@ -1,9 +1,24 @@ -// import MeetingList from '../views/meeting-management/MeetingList.vue' -// import MeetingDetail from '../views/meeting-management/MeetingDetail.vue' -// import MeetingEdit from '../views/meeting-management/MeetingEdit.vue' +// meetingManagementRoutes.js +import MeetingManagement from "/src/views/meeting-management/MeetingManagement.vue"; +import AddMeeting from "/src/views/meeting-management/AddMeeting.vue"; +import EditMeeting from "/src/views/meeting-management/EditMeeting.vue"; -export default [ - // { path: '/meetings', component: MeetingList }, - // { path: '/meetings/:id', component: MeetingDetail }, - // { path: '/meetings/:id/edit', component: MeetingEdit } -] +const routes = [ + { + path: '/Meeting', + name: 'MeetingManagement', + component: MeetingManagement + }, + { + path: '/Meeting/add', + name: 'AddMeeting', + component: AddMeeting + }, + { + path: '/Meeting/edit/:id', + name: 'EditMeeting', + component: EditMeeting + } +]; + +export default routes; \ No newline at end of file diff --git a/src/services/meetingService.js b/src/services/meetingService.js index e69de29..07b988e 100644 --- a/src/services/meetingService.js +++ b/src/services/meetingService.js @@ -0,0 +1,42 @@ +import axios from 'axios'; + +class MeetingService { + getAllMeetings() { + return axios.get(`/api/meetings/listAll`); + } + + getMeetingById(id) { + // 使用 POST 方法并传递请求体 + return axios.post(`/api/meetings/getMeetingById`, { id }); + } + + createMeeting(meeting) { + return axios.post(`/api/meetings/addMeeting`, meeting); + } + + updateMeeting(id, meeting) { + // Convert meeting object to a map + const meetingMap = { + id: id, + name: meeting.name, + organizer: meeting.organizer, + startTime: meeting.startTime, + endTime: meeting.endTime, + content: meeting.content, + status: meeting.status + }; + return axios.post(`/api/meetings/updateMeeting`, meetingMap); + } + + deleteMeeting(id) { + // 使用 POST 方法并传递请求体 + return axios.post(`/api/meetings/deleteMeeting`, { id }); + } + + searchMeetings(params) { + // 使用 POST 方法并传递请求体 + return axios.post(`/api/meetings/searchMeetings`, params); + } +} + +export default new MeetingService(); \ No newline at end of file diff --git a/src/store/meetingManagement.js b/src/store/meetingManagement.js index 147e57a..e7dc7fd 100644 --- a/src/store/meetingManagement.js +++ b/src/store/meetingManagement.js @@ -1,27 +1,96 @@ +import MeetingService from '../services/meetingService'; + const state = { - meetings: [] -} + meetings: [], + currentMeeting: null +}; const mutations = { setMeetings(state, meetings) { - state.meetings = meetings + state.meetings = meetings; + }, + setCurrentMeeting(state, meeting) { + state.currentMeeting = meeting; } -} +}; const actions = { - fetchMeetings({ commit }) { - // 模拟API调用 - const meetings = [ - { id: 1, title: 'Meeting 1' }, - { id: 2, title: 'Meeting 2' } - ] - commit('setMeetings', meetings) + async fetchMeetings({ commit }) { + try { + const response = await MeetingService.getAllMeetings(); + commit('setMeetings', response.data); + } catch (error) { + console.error('Failed to fetch meetings:', error); + } + }, + async searchMeetings({ commit }, params) { + try { + const formattedparams = { + name: params.name, + organizer: params.organizer, + startTime: params.startTime, + + }; + const response = await MeetingService.searchMeetings(formattedparams); + commit('setMeetings', response.data); + } catch (error) { + console.error('Failed to search meetings:', error); + } + }, + async fetchMeetingById({ commit }, id) { + try { + const response = await MeetingService.getMeetingById(id); + commit('setCurrentMeeting', response.data); + } catch (error) { + console.error('Failed to fetch meeting:', error); + } + }, + async createMeeting({ dispatch }, meeting) { + try { + const formattedMeeting = { + name: meeting.name, + organizer: meeting.organizer, + startTime: meeting.startTime, + endTime: meeting.endTime, + content: meeting.content, + status: 'Scheduled' // 确保状态为 'Scheduled' + }; + await MeetingService.createMeeting(formattedMeeting); + dispatch('fetchMeetings'); + } catch (error) { + console.error('Failed to create meeting:', error); + } + }, + async editMeeting({ dispatch }, meeting) { + try { + const formattedMeeting = { + name: meeting.name, + organizer: meeting.organizer, + startTime: meeting.startTime, + endTime: meeting.endTime, + content: meeting.content, + status: 'Scheduled' // 确保状态为 'Scheduled' + }; + await MeetingService.updateMeeting(meeting.id, formattedMeeting); + dispatch('fetchMeetings'); + } catch (error) { + console.error('Failed to update meeting:', error); + } + }, + async deleteMeeting({ dispatch }, id) { + try { + await MeetingService.deleteMeeting(id); + dispatch('fetchMeetings'); + } catch (error) { + console.error('Failed to delete meeting:', error); + } } -} +}; const getters = { - allMeetings: state => state.meetings -} + allMeetings: state => state.meetings, + currentMeeting: state => state.currentMeeting +}; export default { namespaced: true, @@ -29,4 +98,4 @@ export default { mutations, actions, getters -} +}; \ No newline at end of file diff --git a/src/views/meeting-management/AddMeeting.vue b/src/views/meeting-management/AddMeeting.vue new file mode 100644 index 0000000..3c2fef0 --- /dev/null +++ b/src/views/meeting-management/AddMeeting.vue @@ -0,0 +1,57 @@ + + + \ No newline at end of file diff --git a/src/views/meeting-management/EditMeeting.vue b/src/views/meeting-management/EditMeeting.vue new file mode 100644 index 0000000..fd9197d --- /dev/null +++ b/src/views/meeting-management/EditMeeting.vue @@ -0,0 +1,61 @@ + + + \ No newline at end of file diff --git a/src/views/meeting-management/MeetingManagement.vue b/src/views/meeting-management/MeetingManagement.vue new file mode 100644 index 0000000..9620372 --- /dev/null +++ b/src/views/meeting-management/MeetingManagement.vue @@ -0,0 +1,162 @@ + + + + + \ No newline at end of file