diff --git a/src/api/question.js b/src/api/question.js new file mode 100644 index 0000000..4af1e91 --- /dev/null +++ b/src/api/question.js @@ -0,0 +1,11 @@ +import requset from '@/utils/request' + +export const useGetTypeList = (encoding) => + requset.get('question/get_typeList', { + params: { + encoding: encoding + } + }) + +export const useAddTypeName = (typeName, encoding, userId) => + requset.post('question/add_typeName', { typeName, encoding, userId }) diff --git a/src/api/user.js b/src/api/user.js index 5909375..6927216 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -1,8 +1,15 @@ -import request from "@/utils/request.js" +import request from '@/utils/request.js' -export const adminLogin=({phone,encoding,password})=>request.post("admin/login",{ +export const adminLogin = ({ phone, encoding, password }) => + request.post('admin/login', { + phone, + encoding, + password + }) - phone, - encoding, - password -}) \ No newline at end of file +export const useGetUserInfo = (token) => + request.get('admin/get_userInfo', { + params: { + token: token + } + }) diff --git a/src/assets/login_title.png b/src/assets/login_title.png new file mode 100644 index 0000000..da720db Binary files /dev/null and b/src/assets/login_title.png differ diff --git a/src/assets/main.scss b/src/assets/main.scss new file mode 100644 index 0000000..4609bd0 --- /dev/null +++ b/src/assets/main.scss @@ -0,0 +1,20 @@ +body { + margin: 0; + background-color: #f5f5f5; +} + +/* fade-slide */ +.fade-slide-leave-active, +.fade-slide-enter-active { + transition: all 0.3s; +} + +.fade-slide-enter-from { + transform: translateX(-30px); + opacity: 0; +} + +.fade-slide-leave-to { + transform: translateX(30px); + opacity: 0; +} \ No newline at end of file diff --git a/src/components/PageContainer.vue b/src/components/PageContainer.vue new file mode 100644 index 0000000..caaa2b6 --- /dev/null +++ b/src/components/PageContainer.vue @@ -0,0 +1,34 @@ + + + + + + + {{ title }} + + + + + + + + + + diff --git a/src/main.js b/src/main.js index 94fda1e..7b23c2c 100644 --- a/src/main.js +++ b/src/main.js @@ -1,10 +1,9 @@ - import { createApp } from 'vue' -import pinia from "@/stores"; +import pinia from '@/stores' import App from './App.vue' import router from './router' - +import './assets/main.scss' const app = createApp(App) app.use(pinia) diff --git a/src/router/index.js b/src/router/index.js index 71c5112..7dd44a5 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,11 +1,25 @@ import { createRouter, createWebHistory } from 'vue-router' -import { useUserStore } from "@/stores"; +import { useUserStore } from '@/stores' const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ { path: '/login', component: () => import('@/views/login/LoginPage.vue') }, - { path: '/', component: () => import('@/views/layout/LayoutContainer.vue') } + { + path: '/', + component: () => import('@/views/layout/LayoutContainer.vue'), + + children: [ + { + path: '/question/type', + component: () => import('@/views/question/QuestionTypePage.vue') + }, + { + path: '/question/manager', + component: () => import('@/views/question/QuestionManager.vue') + } + ] + } ] }) router.beforeEach((to) => { diff --git a/src/stores/index.js b/src/stores/index.js index 4eb507d..e87bc2c 100644 --- a/src/stores/index.js +++ b/src/stores/index.js @@ -6,5 +6,5 @@ pinia.use(persist) export default pinia - -export * from "@/stores/modules/userStore.js" \ No newline at end of file +export * from '@/stores/modules/userStore.js' +export * from '@/stores/modules/companyStore.js' diff --git a/src/stores/modules/companyStore.js b/src/stores/modules/companyStore.js new file mode 100644 index 0000000..7b989b9 --- /dev/null +++ b/src/stores/modules/companyStore.js @@ -0,0 +1,28 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' + +export const useCompanyStore = defineStore( + 'interviewer-company', + () => { + const encoding = ref('') + + const setEncoding = (newEncoding) => { + encoding.value = newEncoding + } + + const removeEncoding = () => { + encoding.value = '' + } + + return { + encoding, + setEncoding, + removeEncoding + } + }, + { + persist: { + paths: ['encoding'] + } + } +) diff --git a/src/stores/modules/userStore.js b/src/stores/modules/userStore.js index 7f83b37..8042947 100644 --- a/src/stores/modules/userStore.js +++ b/src/stores/modules/userStore.js @@ -1,30 +1,39 @@ -import { defineStore } from "pinia" -import { ref } from "vue"; +import { defineStore } from 'pinia' +import { ref } from 'vue' +export const useUserStore = defineStore( + 'interviewer-user', + () => { + const token = ref('') -export const useUserStore=defineStore('interviewer-user',()=>{ + const setToken = (newToken) => { + token.value = newToken + } + const removeToken = () => { + token.value = '' + } - const token = ref('') + const userInfo = ref({}) - const setToken = (newToken) => { - token.value = newToken + const setUserInfo = (newUserInfo) => { + userInfo.value = newUserInfo + } + const removeUserInfo = () => { + userInfo.value = {} + } + return { + token, + setToken, + removeToken, + userInfo, + setUserInfo, + removeUserInfo + } + }, + { + persist: { + paths: ['token', 'userInfo'] + } } - - const removeToken = () => { - token.value = '' - } - - - return { - - token, - setToken, - removeToken - - } -},{ - persist: { - paths: ['token'] - } -}) \ No newline at end of file +) diff --git a/src/views/layout/LayoutContainer.vue b/src/views/layout/LayoutContainer.vue index 1d0ebfd..80bd71c 100644 --- a/src/views/layout/LayoutContainer.vue +++ b/src/views/layout/LayoutContainer.vue @@ -1,15 +1,25 @@ @@ -25,35 +35,48 @@ import avatar from '@/assets/default.png' > - 文章分类 + 员工管理 - - - 文章管理 - - + - - 个人中心 + + 个性化面试 - - - 基本资料 + + + 形象管理 - - - 更换头像 - - + - 重置密码 + 背景管理 + + + + Logo管理 + + + + + + + 个性化题库 + + + + 题库类型 + + + + 题目管理 - 黑马程序员:小帅鹏 + + 欢迎您:{{ userStore.userInfo.username }} + @@ -80,7 +103,7 @@ import avatar from '@/assets/default.png' - 大事件 ©2023 Created by 黑马程序员 + Ai-面试 ©2023 Created by 扬州大学开发团队 @@ -92,7 +115,7 @@ import avatar from '@/assets/default.png' background-color: #232323; &__logo { height: 120px; - background: url('@/assets/logo.png') no-repeat center / 120px auto; + background: url('@/assets/login_title.png') no-repeat center / 120px auto; } .el-menu { border-right: none; diff --git a/src/views/login/LoginPage.vue b/src/views/login/LoginPage.vue index 308424b..0e64acd 100644 --- a/src/views/login/LoginPage.vue +++ b/src/views/login/LoginPage.vue @@ -2,7 +2,7 @@ import { Lock, User } from '@element-plus/icons-vue' import { ref } from 'vue' import { adminLogin } from '@/api/user.js' -import { useUserStore } from '@/stores' +import { useUserStore, useCompanyStore } from '@/stores' import { useRouter } from 'vue-router' const form = ref() @@ -37,11 +37,13 @@ const rules = { const userStore = useUserStore() const router = useRouter() +const companyStore = useCompanyStore() const goLogin = async () => { await form.value.validate() const res = await adminLogin(formModel.value) console.log(res) userStore.setToken(res.data.data.token) + companyStore.setEncoding(res.data.data.encoding) ElMessage.success('登录成功') router.push('/') } diff --git a/src/views/question/QuestionManager.vue b/src/views/question/QuestionManager.vue new file mode 100644 index 0000000..6b1afa6 --- /dev/null +++ b/src/views/question/QuestionManager.vue @@ -0,0 +1,43 @@ + + + + + + 添加题目 + + + + + + + + + + + + + + + + + + diff --git a/src/views/question/QuestionTypePage.vue b/src/views/question/QuestionTypePage.vue new file mode 100644 index 0000000..497ad1c --- /dev/null +++ b/src/views/question/QuestionTypePage.vue @@ -0,0 +1,77 @@ + + + + + + 添加类型 + + + + + + + + + + + + + + + + + + + diff --git a/src/views/question/components/QuestionTypeEdit.vue b/src/views/question/components/QuestionTypeEdit.vue new file mode 100644 index 0000000..6d4699b --- /dev/null +++ b/src/views/question/components/QuestionTypeEdit.vue @@ -0,0 +1,67 @@ + + + + + + + + + + + + 取消 + 确认 + + + +