diff --git a/public/background.jpg b/public/background.jpg new file mode 100644 index 0000000..3081953 Binary files /dev/null and b/public/background.jpg differ diff --git a/src/assets/avatar.jpg b/src/assets/avatar.jpg new file mode 100644 index 0000000..b923af5 Binary files /dev/null and b/src/assets/avatar.jpg differ diff --git a/src/router/authentication.js b/src/router/authentication.js index 7c0f2e7..a099dec 100644 --- a/src/router/authentication.js +++ b/src/router/authentication.js @@ -1,10 +1,36 @@ -// !!!这是一个示例,请根据实际情况修改!!! -// import Login from '../views/authentication/Login.vue' -// import Register from '../views/authentication/Register.vue' -// import Profile from '../views/authentication/Profile.vue' +import Login from '../views/authentication/Login.vue'; +import Register from '../views/authentication/Register.vue'; +import ManageProfile from '../views/authentication/ManageProfile.vue'; +import Profile from '../views/authentication/Profile.vue'; +import store from '../store'; +import {createRouter, createWebHistory} from "vue-router"; -export default [ - // { path: '/login', component: Login }, - // { path: '/register', component: Register }, - // { path: '/profile', component: Profile } -] +const routes = [ + { path: '/login', component: Login }, + { path: '/register', component: Register }, + { path: '/manageProfile', component: ManageProfile }, + { + path: '/profile', + component: Profile, + meta: { requiresAuth: true }, + }, +]; + +const router = createRouter({ + history: createWebHistory(), + routes, +}); + +router.beforeEach((to, from, next) => { + if (to.matched.some(record => record.meta.requiresAuth)) { + if (!store.getters['authentication/isAuthenticated']) { + next('/login'); + } else { + next(); + } + } else { + next(); + } +}); + +export default routes; diff --git a/src/router/meetingManagement.js b/src/router/meetingManagement.js index 0d688a5..236ca5e 100644 --- a/src/router/meetingManagement.js +++ b/src/router/meetingManagement.js @@ -1,7 +1,7 @@ -import { createRouter, createWebHistory } from 'vue-router'; -import MeetingManagement from '../views/meeting-management/MeetingManagement.vue'; -import AddMeeting from '../views/meeting-management/AddMeeting.vue'; -import EditMeeting from '../views/meeting-management/EditMeeting.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"; const routes = [ { @@ -21,9 +21,4 @@ const routes = [ } ]; -const router = createRouter({ - history: createWebHistory(process.env.BASE_URL), - routes -}); - -export default router; \ No newline at end of file +export default routes; \ No newline at end of file diff --git a/src/store/authentication.js b/src/store/authentication.js index 77ff04e..429d1fb 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -1,30 +1,43 @@ +import axios from 'axios'; + const state = { - user: null -} + isAuthenticated: false, + token: null, +}; const mutations = { - setUser(state, user) { - state.user = user - } -} + setUser(state, {token}) { + state.isAuthenticated = true; + state.token = token; + }, + clearUser(state) { + state.isAuthenticated = false; + state.token = null; + }, +}; const actions = { - login({ commit }, user) { - commit('setUser', user) + async login({commit}, credentials) { + const response = await axios.post('/api/login', credentials); + if (response.status === 200) { + commit('setUser', {token: response.data.token}); + } + return response; }, - logout({ commit }) { - commit('setUser', null) - } -} + logout({commit}) { + commit('clearUser'); + }, +}; const getters = { - isAuthenticated: state => !!state.user -} + isAuthenticated: (state) => state.isAuthenticated, + token: (state) => state.token, +}; export default { namespaced: true, state, mutations, actions, - getters -} + getters, +}; diff --git a/src/views/authentication/Login.vue b/src/views/authentication/Login.vue new file mode 100644 index 0000000..143a251 --- /dev/null +++ b/src/views/authentication/Login.vue @@ -0,0 +1,121 @@ + + + + + + 测盟汇管理系统 + + + + 账号 + + + + + + 密码 + + + + + 记住密码 + + + 登录 + + + $router.push('/register')">注册 + + + + + + + diff --git a/src/views/authentication/ManageProfile.vue b/src/views/authentication/ManageProfile.vue new file mode 100644 index 0000000..6dba704 --- /dev/null +++ b/src/views/authentication/ManageProfile.vue @@ -0,0 +1,219 @@ + + + + + + 基本资料 + + + + + + + + + + + + + + + 男 + 女 + + + + + + + + + + + + + + + + 保存 + 取消 + + + + + + + + + + + + + + + + 修改密码 + + + + + $router.push('/profile')">返回 + + + + + + diff --git a/src/views/authentication/Profile.vue b/src/views/authentication/Profile.vue new file mode 100644 index 0000000..807057e --- /dev/null +++ b/src/views/authentication/Profile.vue @@ -0,0 +1,144 @@ + + + + + + + 个人信息 + + + + + + + 用户昵称: + {{ nickname }} + + + + 手机号码: + {{ phoneNumber }} + + + + 用户邮箱: + {{ email }} + + + + 所属部门: + {{ department }} + + + + 所属角色: + {{ role }} + + + + 创建日期: + {{ createdAt }} + + + + $router.push('/manageProfile')">修改信息 + + + + + diff --git a/src/views/authentication/Register.vue b/src/views/authentication/Register.vue new file mode 100644 index 0000000..98f810d --- /dev/null +++ b/src/views/authentication/Register.vue @@ -0,0 +1,161 @@ + + + + + + 企业租户注册 + + + 用户名称 + + + + 手机号码 + + + + 密码 + + + + 验证码 + + + 获取验证码 + + + + + + + + 注册 + + + $router.push('/login')">返回登录 + + + + + + +