-- bug 登出

This commit is contained in:
yuping
2022-12-03 18:53:38 +08:00
parent 16aec52764
commit db610d81c1
4 changed files with 151 additions and 119 deletions

View File

@@ -1,27 +1,27 @@
<template> <template>
<div id="container" v-if="!isLogin"> <div id="container" v-if="!isLogin">
<nav-top /> <nav-top/>
<div style="display: flex"> <div style="display: flex">
<nav-left /> <nav-left/>
<div style="flex: 1; display: flex; flex-direction: column; width: 0"> <div style="flex: 1; display: flex; flex-direction: column; width: 0">
<open-pages /> <open-pages/>
<bread-crumb /> <bread-crumb/>
<main> <main>
<a-config-provider :locale="zhCN"> <a-config-provider :locale="zhCN">
<router-view /> <router-view/>
</a-config-provider> </a-config-provider>
</main> </main>
</div> </div>
</div> </div>
</div> </div>
<div id="container" v-if="isLogin"> <div id="container" v-if="isLogin">
<router-view /> <router-view/>
</div> </div>
</template> </template>
<script> <script>
import { computed, defineComponent, ref, watch } from "vue"; import {computed, defineComponent, ref, watch} from "vue";
import { useRouter, useRoute } from "vue-router"; import {useRouter, useRoute} from "vue-router";
import { useStore } from "vuex"; import {useStore} from "vuex";
import NavLeft from "@/components/NavLeft"; import NavLeft from "@/components/NavLeft";
import NavTop from "@/components/NavTop"; import NavTop from "@/components/NavTop";
import OpenPages from "@/components/OpenPages"; import OpenPages from "@/components/OpenPages";
@@ -29,6 +29,7 @@ import BreadCrumb from "@/components/BreadCrumb";
import zhCN from "ant-design-vue/es/locale/zh_CN"; import zhCN from "ant-design-vue/es/locale/zh_CN";
import * as api from "./api/index1"; import * as api from "./api/index1";
import * as api1 from "@/api/index1"; import * as api1 from "@/api/index1";
import * as api2 from "@/api/index";
export default defineComponent({ export default defineComponent({
components: { components: {
@@ -49,16 +50,17 @@ export default defineComponent({
}); });
watch( watch(
() => route.path, () => route.path,
() => { () => {
route.path === "/login" && (isLogin.value = true); route.path === "/login" && (isLogin.value = true);
} }
); );
const currentRouteName = computed(() => route.name); const currentRouteName = computed(() => route.name);
function init() { function init() {
console.log(store); console.log(store);
getUserInfo();
initDict("faceclassPic"); initDict("faceclassPic");
initDict("faceclassClass"); initDict("faceclassClass");
initDict("faceclassScene"); initDict("faceclassScene");
@@ -70,25 +72,30 @@ export default defineComponent({
getOrgTree(); getOrgTree();
} }
async function getUserInfo() {
const userInfo = await api2.userInfo()
store.commit("SET_USER", userInfo);
}
async function initDict(key) { async function initDict(key) {
let list = localStorage.getItem(key); let list = localStorage.getItem(key);
if (list) { if (list) {
store.commit("SET_DICT", { key, data: JSON.parse(list) }); store.commit("SET_DICT", {key, data: JSON.parse(list)});
return; return;
} }
list = await getDictList(key); list = await getDictList(key);
localStorage.setItem(key, JSON.stringify(list)); localStorage.setItem(key, JSON.stringify(list));
store.commit("SET_DICT", { key, data: list }); store.commit("SET_DICT", {key, data: list});
} }
const getDictList = (param) => const getDictList = (param) =>
api1 api1
.getDict({ .getDict({
pageNo: 1, pageNo: 1,
pageSize: 20, pageSize: 20,
setCode: param, setCode: param,
}) })
.then((res) => res.data.data.rows); .then((res) => res.data.data.rows);
//获取组织树 //获取组织树
const getOrgTree = () => { const getOrgTree = () => {
@@ -104,18 +111,18 @@ export default defineComponent({
pageSize: 20, pageSize: 20,
}; };
api api
.getOrgInfo(obj) .getOrgInfo(obj)
.then((res) => { .then((res) => {
console.log("组织树获取成功", res); console.log("组织树获取成功", res);
if (res.data.code === 200) { if (res.data.code === 200) {
// state.treeData = res.data.data; // state.treeData = res.data.data;
localStorage.setItem("orgtreeList", JSON.stringify(res.data.data)); localStorage.setItem("orgtreeList", JSON.stringify(res.data.data));
store.commit("getOrgtreeList", res.data.data); store.commit("getOrgtreeList", res.data.data);
} }
}) })
.catch((err) => { .catch((err) => {
console.log("组织树获取失败", err); console.log("组织树获取失败", err);
}); });
}; };
init(); init();
@@ -134,7 +141,7 @@ export default defineComponent({
// font-family: MicrosoftYaHei, Microsoft YaHei, Avenir, Helvetica, Arial, // font-family: MicrosoftYaHei, Microsoft YaHei, Avenir, Helvetica, Arial,
// sans-serif; // sans-serif;
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB,
Microsoft YaHei, Arial, sans-serif; Microsoft YaHei, Arial, sans-serif;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
color: #2c3e50; color: #2c3e50;

View File

@@ -18,28 +18,28 @@ import http from "./config";
* name: user * name: user
* } * }
* }).then(res => console.log(res)) * }).then(res => console.log(res))
* *
* 接口传参三种方式post/put/patch * 接口传参三种方式post/put/patch
* *
* 1.'Content-Type'= 'multipart/form-data',传参格式为 formData。 * 1.'Content-Type'= 'multipart/form-data',传参格式为 formData。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded' * (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'multipart/form-data' * request的Header:'Content-Type'= 'multipart/form-data'
* var formData=new FormData(); * var formData=new FormData();
* formData.append('user',123456);formData.append('pass',12345678); * formData.append('user',123456);formData.append('pass',12345678);
* axios.post("/notice",formData).then() * axios.post("/notice",formData).then()
* *
* 2.'Content-Type'= 'application/x-www-form-urlencoded',传参格式为 query 形式,使用$qs.stringify。 * 2.'Content-Type'= 'application/x-www-form-urlencoded',传参格式为 query 形式,使用$qs.stringify。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded' * (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'application/x-www-form-urlencoded' * request的Header:'Content-Type'= 'application/x-www-form-urlencoded'
* let data = {"code":"1234","name":"yyyy"}; * let data = {"code":"1234","name":"yyyy"};
* axios.post(`${this.$url}/test/testRequest`,qs.stringify({data})).then() * axios.post(`${this.$url}/test/testRequest`,qs.stringify({data})).then()
* *
* 3.'Content-Type'= 'application/json传参格式为 raw (JSON格式)。 * 3.'Content-Type'= 'application/json传参格式为 raw (JSON格式)。
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded' * (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded'
* request的Header:'Content-Type'= 'application/json;charset=UTF-8' * request的Header:'Content-Type'= 'application/json;charset=UTF-8'
* let data = {"code":"1234","name":"yyyy"} * let data = {"code":"1234","name":"yyyy"}
* axios.post(`${this.$url}/test/testRequest`,data).then() * axios.post(`${this.$url}/test/testRequest`,data).then()
* *
*/ */
@@ -52,7 +52,7 @@ export const createProject = (obj) => http.post('/admin/project/edit', obj)
export const getProjectList = (obj) => http.post('/admin/project/list', obj) export const getProjectList = (obj) => http.post('/admin/project/list', obj)
// 获取项目详情信息(包含阶段及任务列表) // 获取项目详情信息(包含阶段及任务列表)
export const getProjectDetail = (obj) => http.get('/admin/project/detail', { params: obj }) export const getProjectDetail = (obj) => http.get('/admin/project/detail', {params: obj})
//发布项目 //发布项目
export const releaseProject = (obj) => http.post('/admin/project/publish', obj) export const releaseProject = (obj) => http.post('/admin/project/publish', obj)
//获取项目学员 //获取项目学员
@@ -70,10 +70,11 @@ export const getDiscussDetail = (obj) => http.post('/discuss/getDiscussDetail',
//获取模版列表 //获取模版列表
export const getTemplate = (obj) => http.post('/admin/project/template/list', obj) export const getTemplate = (obj) => http.post('/admin/project/template/list', obj)
//获取模版详细信息 //获取模版详细信息
export const getTemplateDetail = (obj) => http.get('/admin/project/template/detail', { params: obj }) export const getTemplateDetail = (obj) => http.get('/admin/project/template/detail', {params: obj})
//获取项目统计 //获取项目统计
export const getProjectCount = (projectId) => http.get('/admin/project/projectCount', { params: { projectId: projectId } }) export const getProjectCount = (projectId) => http.get('/admin/project/projectCount', {params: {projectId: projectId}})
export const login = (obj) => http.post('/admin/CheckUser/userLogin', obj) export const login = (obj) => http.post('/admin/CheckUser/userLogin', obj)
export const userInfo = () => http.get('/admin/CheckUser/userInfo')

View File

@@ -2,8 +2,8 @@
<div class="navTop"> <div class="navTop">
<div class="navTopMain"> <div class="navTopMain">
<img <img
style="width: 205px; height: 29px; margin-left: 37px; margin-top: 22px" style="width: 205px; height: 29px; margin-left: 37px; margin-top: 22px"
src="../assets/images/navtop/logo.png" src="../assets/images/navtop/logo.png"
/> />
<div class="navTopRight"> <div class="navTopRight">
<div class="role"> <div class="role">
@@ -11,10 +11,10 @@
<div class="roleArrow"></div> <div class="roleArrow"></div>
<div class="roleItems"> <div class="roleItems">
<div <div
v-for="(value, index) in roleList" v-for="(value, index) in roleList"
:key="index" :key="index"
class="roleItem" class="roleItem"
@click="changeRole(value)" @click="changeRole(value)"
> >
{{ value.name }} {{ value.name }}
</div> </div>
@@ -22,14 +22,14 @@
</div> </div>
<div class="user"> <div class="user">
<img <img
style=" style="
width: 40px; width: 40px;
height: 40px; height: 40px;
margin-left: 8px; margin-left: 8px;
border-radius: 15px; border-radius: 15px;
margin-right: 10px; margin-right: 10px;
" "
:src="avatar" :src="avatar"
/> />
<div style="margin-right: 20px">{{ username }}</div> <div style="margin-right: 20px">{{ username }}</div>
</div> </div>
@@ -47,20 +47,21 @@
</div> --> </div> -->
<div class="signOutMain" @click="logOut"> <div class="signOutMain" @click="logOut">
<img <img
style="width: 27px; height: 27px" style="width: 27px; height: 27px"
src="../assets/images/navtop/signout.png" src="../assets/images/navtop/signout.png"
/> />
<span class="signOut">登出</span> <span class="signOut">登出</span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<down-load v-model:downloadVisible="visible" /> <down-load v-model:downloadVisible="visible"/>
</template> </template>
<script> <script>
import { reactive, toRefs } from "vue"; import {reactive, toRefs} from "vue";
import DownLoad from "../components/drawers/DownLoad"; import DownLoad from "../components/drawers/DownLoad";
import * as api from "../api/index1"; import * as api from "../api/index1";
export default { export default {
name: "NavTop", name: "NavTop",
components: { components: {
@@ -100,24 +101,32 @@ export default {
}; };
const getUser = () => { const getUser = () => {
api api
.getUser() .getUser()
.then((res) => { .then((res) => {
console.log("获取登录信息成功", res); console.log("获取登录信息成功", res);
if (res.data.code === 200) { if (res.data.code === 200) {
state.username = res.data.data.realName; state.username = res.data.data.realName;
// state.avatar = res.data.data.avatar // state.avatar = res.data.data.avatar
// ? res.data.data.avatar // ? res.data.data.avatar
// : require("../assets/images/avatar.png"); // : require("../assets/images/avatar.png");
state.avatar = require("../assets/images/avatar.png"); state.avatar = require("../assets/images/avatar.png");
} }
}) })
.catch((err) => { .catch((err) => {
console.log("获取登录信息失败", err); console.log("获取登录信息失败", err);
}); });
}; };
getUser(); getUser();
const logOut = () => { const logOut = () => {
localStorage.removeItem('faceclassPic');
localStorage.removeItem('faceclassClass');
localStorage.removeItem('faceclassScene');
localStorage.removeItem('projectLevel');
localStorage.removeItem('projectSys');
localStorage.removeItem('pathmapPic');
localStorage.removeItem('projectClass');
localStorage.removeItem('projectPic');
window.open("https://u-pre.boe.com/web/", "_self"); window.open("https://u-pre.boe.com/web/", "_self");
}; };
return { return {
@@ -142,9 +151,11 @@ export default {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
background-color: rgba(255, 255, 255, 1); background-color: rgba(255, 255, 255, 1);
.navTopRight { .navTopRight {
display: flex; display: flex;
} }
.role { .role {
display: flex; display: flex;
align-items: center; align-items: center;
@@ -154,6 +165,7 @@ export default {
line-height: 36px; line-height: 36px;
cursor: pointer; cursor: pointer;
position: relative; position: relative;
.roleArrow { .roleArrow {
width: 13px; width: 13px;
height: 7px; height: 7px;
@@ -161,6 +173,7 @@ export default {
background-image: url(../assets/images/navtop/down.png); background-image: url(../assets/images/navtop/down.png);
background-size: 100%; background-size: 100%;
} }
.roleItems { .roleItems {
width: 109px; width: 109px;
height: 90px; height: 90px;
@@ -174,22 +187,27 @@ export default {
display: none; display: none;
z-index: 100; z-index: 100;
} }
.roleItem { .roleItem {
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400;
color: rgba(79, 81, 86, 1); color: rgba(79, 81, 86, 1);
line-height: 36px; line-height: 36px;
} }
.roleItem:hover { .roleItem:hover {
color: #4ea6ff; color: #4ea6ff;
} }
} }
.role:hover .roleItems { .role:hover .roleItems {
display: block; display: block;
} }
.role:hover .roleArrow { .role:hover .roleArrow {
background-image: url(../assets/images/navtop/up.png); background-image: url(../assets/images/navtop/up.png);
} }
.user { .user {
margin-left: 37px; margin-left: 37px;
display: flex; display: flex;
@@ -199,12 +217,14 @@ export default {
color: #b3bdc4; color: #b3bdc4;
line-height: 36px; line-height: 36px;
} }
.signOutMain { .signOutMain {
cursor: pointer; cursor: pointer;
margin-right: 29px; margin-right: 29px;
display: flex; display: flex;
align-items: center; align-items: center;
} }
.signOut { .signOut {
font-size: 16px; font-size: 16px;
font-weight: 400; font-weight: 400;

View File

@@ -6,60 +6,64 @@
* @FilePath: /fe-manage/src/store/index.js * @FilePath: /fe-manage/src/store/index.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
import { createStore } from "vuex"; import {createStore} from "vuex";
// import * as api from '../api/index1' // import * as api from '../api/index1'
export default createStore({ export default createStore({
state: { state: {
openpages: localStorage.getItem("openpages") openpages: localStorage.getItem("openpages")
? JSON.parse(localStorage.getItem("openpages")) ? JSON.parse(localStorage.getItem("openpages"))
: [ : [
{ {
pagename: "学习路径图", pagename: "学习路径图",
href: "/learningpath", href: "/learningpath",
active: true, active: true,
},
],
assessmentName: "",
routerId: null,
projectTemplateId: null,
userInfo: {},
orgtreeList: [],
faceclassPic: null,
faceclassClass: [],
faceclassScene: [],
projectLevel: [],//项目级别
projectSys: [],//培训分类
pathmapPic: [],//学习路径背景图
},
getters: {},
mutations: {
chengeOpenpages(state, list) {
// console.log('list', list)
state.openpages = list;
},
chengeRouterId(state, routerId) {
// console.log('list', list)
state.routerId = routerId;
}, },
],
assessmentName: "", SET_assessmentName(state, name) {
routerId: null, state.assessmentName = name;
projectTemplateId: null, console.log("state.assessmentName");
orgtreeList: [], console.log(state.assessmentName);
faceclassPic: null, },
faceclassClass: [], //获取组织树
faceclassScene: [], getOrgtreeList(state, data) {
projectLevel: [],//项目级别 state.orgtreeList = data
projectSys: [],//培训分类 },
pathmapPic: [],//学习路径背景图 SET_DICT(state, {key, data}) {
}, state[key] = data
getters: {}, },
mutations: { SET_USER(state, userInfo) {
chengeOpenpages(state, list) { state.userInfo = userInfo
// console.log('list', list) },
state.openpages = list; SET_projectTemplateId(state, projectTemplateId) {
}, state.projectTemplateId = projectTemplateId;
chengeRouterId(state, routerId) { }
// console.log('list', list)
state.routerId = routerId;
},
SET_assessmentName(state, name) {
state.assessmentName = name;
console.log("state.assessmentName");
console.log(state.assessmentName);
},
//获取组织树
getOrgtreeList(state, data) {
state.orgtreeList = data
},
SET_DICT(state, { key, data }) {
state[key] = data
},
SET_projectTemplateId(state, projectTemplateId) {
state.projectTemplateId = projectTemplateId;
}
}, },
actions: {}, actions: {},
modules: {}, modules: {},
}); });