Files
learning-system-portal/src/layout/components/TopNav/Index.vue

981 lines
27 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div>
<div class="xtop">
<div class="xtop-content">
<div class="xtop-left">
<div class="xtop-logo">
<router-link class="routerLink" to="/index"
><img
src="../../../assets/logo/logo-white.png"
style="width: 161px; height: 27px"
/></router-link>
</div>
<div class="xtop-nav" v-if="userInfo.role === 1">
<div class="xtop-nav-item">
<a :href="`${webBaseUrl}/index`">首页</a>
</div>
<div class="xtop-nav-item">
<a :href="`${webBaseUrl}/course`">课程</a>
</div>
<div class="xtop-nav-item">
<a :href="`${webBaseUrl}/case`">案例</a>
</div>
<div class="xtop-nav-item">
<a :href="`${webBaseUrl}/article`">文章</a>
</div>
<div class="xtop-nav-item">
<a :href="`${webBaseUrl}/qa`">问答</a>
</div>
<div class="xtop-nav-item">
<el-dropdown placement="bottom" @command="handleCommand">
<span
class="el-dropdown-link"
style="color: #fff; font-size: 16px; cursor: pointer"
>专区</span
>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="one"
>BOE系列公开课</el-dropdown-item
>
<el-dropdown-item command="two" divided
>Grow180</el-dropdown-item
>
<el-dropdown-item command="three" divided
>管理者进阶</el-dropdown-item
>
<el-dropdown-item command="for" divided
>U选小课堂</el-dropdown-item
>
<el-dropdown-item command="five" divided
>社招新员工</el-dropdown-item
>
<el-dropdown-item command="seven" divided
>教师专区</el-dropdown-item
>
</el-dropdown-menu>
</el-dropdown>
</div>
<div class="xtop-nav-item">
<a :href="`${webBaseUrl}/follow`">我的关注</a>
</div>
</div>
</div>
<div class="xtop-right">
<!-- <div style="margin-left:250px;margin-right:50px;"> -->
<!-- <el-input placeholder="搜索" style="width: 260px;border-radius: 20px !important;" @keyup.enter.native="searchJump()" clearable maxlength="50" v-model="keyword" class="input-with-select">
<el-select v-model="findType" style="width: 75px;" slot="prepend" placeholder="请选择">
<el-option label="课程" value="1"></el-option>
<el-option label="案例" value="2"></el-option>
<el-option label="文章" value="3"></el-option>
<el-option label="问答" value="4"></el-option>
</el-select>
<el-button slot="append" icon="el-icon-search" @click="searchJump()" class="input-with-select-btn"></el-button>
</el-input> -->
<!-- </div> -->
<div>
<el-badge
:value="userMsg"
:hidden="userMsg == 0"
class="message-count"
>
<el-link
type="primary"
:href="`${webBaseUrl}/message/center/index`"
:underline="false"
>
<svg-icon
style="margin-right: 0; font-size: 22px"
icon-class="messfff"
></svg-icon>
</el-link>
</el-badge>
</div>
<div>
<el-dropdown class="person-action-index" style="margin-left: 44px">
<span class="el-dropdown-link">
<span v-if="current == 'qa'" style="color: #333">{{
curIdentity == 3
? "管理员"
: curIdentity == 2
? "教师"
: "学员"
}}</span>
<span v-else style="color: #fff">{{
curIdentity == 3
? "管理员"
: curIdentity == 2
? "教师"
: "学员"
}}</span
><i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item
><router-link to="/index">学员</router-link></el-dropdown-item
>
<el-dropdown-item
v-if="identity == 2 || identity == 5"
@click.native="setCurIdentity(2)"
><router-link to="/need/waitaudit"
>教师</router-link
></el-dropdown-item
>
<el-dropdown-item
v-if="identity == 3 || identity == 5"
@click.native="setCurIdentity(3)"
><a :href="managerPath + '/learningpath'"
>管理员</a
></el-dropdown-item
>
</el-dropdown-menu>
</el-dropdown>
</div>
<div>
<el-dropdown>
<div
style="
margin-left: 50px;
color: #fff;
font-size: 14px;
cursor: pointer;
"
>
<el-avatar
v-if="userInfo.avatar !== ''"
:src="userInfo.avatar"
style="
vertical-align: middle;
width: 40px;
height: 40px;
margin-right: 10px;
"
></el-avatar>
<span v-else style="display: inline-block">
<img
v-if="userInfo.sex === 1"
src="../../../../public/images/Avatarman.png"
alt=""
style="width: 30px; height: 30px; vertical-align: middle"
/>
<img
v-else
src="../../../../public/images/Avatarwoman.png"
alt=""
style="width: 30px; height: 30px; vertical-align: middle"
/>
</span>
{{ userInfo.name }}
</div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="setCurIdentity(1)"
><a
:href="`${webBaseUrl}${
isTiao ? '/uc/study/task' : '/uc/study/courses'
}`"
>个人中心</a
></el-dropdown-item
>
<el-dropdown-item
><router-link :to="'/home/' + userInfo.aid"
>个人主页</router-link
></el-dropdown-item
>
</el-dropdown-menu>
</el-dropdown>
</div>
<!-- <div style="margin-left: 5px;">
<el-dropdown @command="handleUcCommand">
<span class="el-dropdown-link">
{{userInfo.name}}<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="logout">退出</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div> -->
<div class="person-action">
<el-button @click="logout()" type="text"
><svg-icon
style="margin-right: 4px; font-size: 16px"
icon-class="white-out"
></svg-icon
>登出</el-button
>
</div>
</div>
</div>
</div>
<el-dialog
title="修改登录密码"
:close-on-click-modal="false"
:visible.sync="pwdDlg.show"
width="600px"
custom-class="g-dialog"
>
<el-form :model="pwdDlg" size="medium" label-width="100px">
<el-form-item label="当前密码"
><el-input
v-model="pwdDlg.nowPwd"
type="password"
placeholder="当前的登录密码"
:style="{ width: '100%' }"
></el-input
></el-form-item>
<el-form-item label="新密码">
<el-input
v-model="pwdDlg.newPwd"
type="password"
placeholder="新的密码"
:maxlength="20"
clearable
:style="{ width: '100%' }"
></el-input>
</el-form-item>
<el-form-item label="密码确认">
<el-input
v-model="pwdDlg.rePwd"
type="password"
placeholder="和上面新密码一致"
:maxlength="20"
clearable
:style="{ width: '100%' }"
></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="pwdDlg.show = false"> </el-button>
<el-button type="primary" @click="submitPwd">提交修改</el-button>
</span>
</el-dialog>
<el-dialog
custom-class="dialog-signin"
:show-close="false"
:visible.sync="signInShow"
:close-on-click-modal="false"
width="520px"
top="8vh"
>
<div>
<img
usemap="#HotMap"
src="/pc/ad/dlg.png"
style="width: 416px; height: 576px"
/>
<map name="HotMap" id="HotMap">
<area
shape="circle"
name="link1"
coords="380,40,30"
@click="closeSignDlg"
href="javascript:;"
/>
<area
shape="rectangle"
name="link2"
coords="150,400,300,500"
target="_blank"
href="https://boehrsurvey.wjx.cn/vm/PmreuFN.aspx"
/>
</map>
</div>
</el-dialog>
<gonggao></gonggao>
<div class="u-class">
<el-dialog :visible.sync="uClassShow" width="833px">
<div class="ClassBoxContent">
<img src="../../../assets/images/u_class.png" alt="" class="img" />
<div class="ContentBox">
<div class="left">
<div class="title">U选小课堂</div>
<div class="jy">项目简介</div>
<div class="msg">
于22年首推是一个面向全集团员工开放的职业通识类数字化培养项目旨在帮助员工开阔眼界加厚职业素养在原有外部精选通用力课程基础上2023年引入创新专区以新鲜的话题新颖的形式带给全员丰富有趣的学习体验
</div>
<div class="bottom"></div>
</div>
<div class="right">
<div class="tyl" @click="tylClick">
<div class="tyl_title">
<img
src="../../../assets/images/dc.png"
alt=""
class="tyl_title_img"
/>
<span class="tyl_title_msg">通用力专区</span>
</div>
<div class="tyl_jy">加厚职业素养轻学习快成长</div>
<div class="tyl_msg">
内容涵盖领导力市场营销职场技能财务知识法律常识人力资源经典国学人文社科
</div>
</div>
<div class="text_msg">创新力专区课程版权已到期</div>
<!-- <div class="cyl" @click="cylClick">
<div class="tyl_title">
<img
src="../../../assets/images/cyl.png"
alt=""
class="tyl_title_img"
/>
<span class="tyl_title_msg">创新力专区</span>
</div>
<div class="tyl_jy">激发创新潜力拓视野促思考</div>
<div class="tyl_msg">
内容涵盖组合创新单点破局错位竞争分形创新第二曲线数字化元宇宙<br/>
创新力专区课程版权将于2024年4月16日到期逾期将无法继续访问请尽快完成学习
</div>
</div> -->
</div>
</div>
</div>
</el-dialog>
</div>
</div>
</template>
<script>
import { mapGetters } from "vuex";
import desk from "@/api/console.js";
import { getWelcomeData } from "@/api/new-employee/newEmployee";
import Cookies from "vue-cookies";
import InterestCollection from "@/components/Portal/interestCollection.vue";
import GuideBox from "@/components/Portal/guideBox.vue";
import gonggao from "@/components/Gonggao.vue";
export default {
components: { InterestCollection, GuideBox, gonggao },
data() {
return {
uClassShow: false,
isTiao: false,
managerPath: process.env.VUE_APP_MANAGER_PATH,
interestShow: false,
checked: true,
signInShow: false,
signLocalTimesKey: "xboe_sign_dlg_times",
keyword: "",
findType: "1",
mouseIndex: 0,
activeIndex: "",
msg: { num: 0 },
user: { name: "" },
pwdDlg: { show: false, newPwd: "", nowPwd: "", rePwd: "" },
current: 1,
};
},
computed: {
...mapGetters(["userInfo", "userMsg", "curIdentity", "identity"]),
showName: function () {
//console.log('name='+this.name);
//console.log('loginName='+this.loginName);
if (this.userInfo.name != "") {
return this.userInfo.name;
} else {
return this.userInfo.userName;
}
},
},
mounted() {
this.interestShow = true;
//控制弹出窗口的代码
// let now = new Date() //当前时间
// let end = new Date('2022/08/14 00:00:00') //对比时间
// if(now.getTime() < end.getTime()){
// let times = localStorage.getItem(this.signLocalTimesKey);
// let isNewLogin=localStorage.getItem(this.$xpage.constants.newLoginKey);
// //let isNewLogin='1';
// if(isNewLogin && isNewLogin=='1'){
// if(!times){
// this.signInShow = true;//显示
// localStorage.setItem(this.signLocalTimesKey,1);
// }else{
// let intTimes=parseInt(times);
// if(intTimes<2){
// this.signInShow = true;//显示
// intTimes++;
// localStorage.setItem(this.signLocalTimesKey,intTimes);
// }
// }
// localStorage.setItem(this.$xpage.constants.newLoginKey,0);
// }
// }
this.$store.dispatch("refrashMsg");
},
methods: {
tylClick() {
window.open("https://m.qingxuetang.com/x/?appId=qxtcorp306130");
},
cylClick() {
window.open("https://u.boe.com/pc/course?keyword=创新力专区");
},
setCurIdentity(iden) {
this.$store.dispatch("SetCurIdentity", iden);
},
closeSignDlg() {
this.signInShow = false;
},
async handleCommand(val) {
// let obj = {
// one: process.env.VUE_APP_BOE_WEB_URL+'/web/teacherLesson',
// two: process.env.VUE_APP_BOE_WEB_URL+'/grow180/login',
// three: this.webBaseUrl + '/study/index',
// four: 'https://m.qingxuetang.com/x/?appId=qxtcorp306130',
// five: process.env.VUE_APP_BOE_WEB_URL+'/boe/new-employee/index.html'
// };
if (val === "five") {
// 从后端获取用户信息和报名状态
const res = await getWelcomeData();
if (res.status === 200 && res.data) {
if (res.data?.approvalResults && res.data?.approvalResults != 1) {
this.$router.push("/new-employee/study");
return;
}
}
}
if (val === "for") {
this.uClassShow = true;
} else {
let urlPre = window.location.protocol + "//" + window.location.host;
// process.env.VUE_APP_BOE_WEB_URL
let obj = {
one: urlPre + "/web/teacherLesson",
two: urlPre + "/grow180/login",
three: this.webBaseUrl + "/study/index?study=1",
// four: 'https://m.qingxuetang.com/x/?appId=qxtcorp306130',
five: this.webBaseUrl + "/new-employee/welcome",
seven: this.webBaseUrl + "/grateful/index",
};
window.open(obj[val]);
}
},
handleUcCommand(val) {
if (val == "logout") {
this.logout();
}
},
handleSelect(key, keyPath) {
//console.log(key, keyPath);
},
showPwd() {
this.pwdDlg.show = true;
},
submitPwd() {
if (
this.pwdDlg.nowPwd == "" ||
(this.pwdDlg.newPwd == "") | (this.pwdDlg.rePwd == "")
) {
return;
}
let params = {
loginName: this.loginName,
old: this.pwdDlg.nowPwd,
newPassword: this.pwdDlg.newPwd,
rePassword: this.pwdDlg.rePwd,
};
desk.updatePassword(params).then((res) => {
if (res.status == 200) {
this.$message({ message: "修改成功,请重新登录", type: "success" });
} else {
this.$message({ message: "修改失败,请检查输入", type: "error" });
}
});
},
logout() {
this.$confirm("确定退出系统吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
this.$store.dispatch("LogOut").then(() => {
//location.href = this.webBaseUrl + '/login';
location.href = process.env.VUE_APP_LOGIN_URL;
});
});
},
},
};
</script>
<style lang="scss" scoped>
.u-class {
::v-deep .el-dialog {
border-radius: 15px;
.el-dialog__headerbtn .el-dialog__close {
color: white;
position: absolute;
z-index: 99;
right: 15px;
}
}
::v-deep .el-dialog__body {
padding: 0px;
}
.ClassBoxContent {
width: 100%;
height: 396px;
// background: red;
border-radius: 15px;
.ContentBox {
width: 100%;
height: 100%;
position: absolute;
z-index: 9;
display: flex;
.left,
.right {
height: calc(100% - 30px);
}
.left {
padding-left: 30px;
width: 48%;
margin-top: -32px;
.title {
width: 200px;
height: 59px;
line-height: 59px;
text-align: center;
margin-left: -8px;
font-size: 38px;
color: white;
margin-top: 42.97px;
padding-top: 5px;
text-shadow: 0 6px 3px rgba(96, 85, 243, 0.4);
}
.jy {
color: white;
font-size: 20px;
margin-top: 87.53px;
font-weight: 400;
}
.msg {
margin-top: 5px;
color: rgba(255, 255, 255, 0.85);
width: 326px;
text-align: justify;
line-height: 20px;
}
.bottom {
width: 100px;
height: 1px;
background: rgba(255, 255, 255, 0.85);
margin-top: 40px;
}
}
.right {
// padding-left: 10px;
width: 50%;
.tyl {
cursor: pointer;
width: calc(100% - 20px);
background: rgba(255, 255, 255, 0.95);
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
border-radius: 4px;
height: 160px;
margin-top: 163px;
.tyl_title {
width: 100%;
padding-left: 20px;
padding-top: 20px;
.tyl_title_img {
width: 18px;
height: 18px;
}
.tyl_title_msg {
font-size: 20px;
margin-left: 10px;
color: #333333;
font-weight: 600;
}
}
.tyl_jy {
margin-top: 6.5px;
font-size: 14px;
font-weight: 600;
padding-left: 20px;
color: #333333;
}
.tyl_msg {
width: 350.36px;
margin-top: 13px;
margin-left: 20px;
font-size: 14px;
color: #666666;
font-weight: 400;
letter-spacing: 0;
text-align: justify;
}
}
.tyl:hover {
border: 0.96px solid rgba(140, 105, 242, 1);
box-shadow: 7px 5px 6px 0px rgba(76, 31, 221, 0.3);
}
.text_msg {
margin: 43px 0 0 222px;
font-size: 14px;
color: #000;
}
.cyl {
cursor: pointer;
width: calc(100% - 20px);
background: rgba(255, 255, 255, 0.95);
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
border-radius: 4px;
height: 180px;
margin-top: 10px;
.tyl_title {
width: 100%;
padding-left: 20px;
padding-top: 20px;
.tyl_title_img {
width: 18px;
height: 18px;
}
.tyl_title_msg {
font-size: 20px;
margin-left: 10px;
color: #333333;
font-weight: 600;
}
}
.tyl_jy {
margin-top: 6.5px;
font-size: 14px;
font-weight: 600;
padding-left: 20px;
color: #333333;
}
.tyl_msg {
width: 350.36px;
margin-top: 13px;
margin-left: 20px;
font-size: 14px;
color: #666666;
font-weight: 400;
letter-spacing: 0;
text-align: justify;
}
}
.cyl:hover {
border: 0.96px solid rgba(140, 105, 242, 1);
box-shadow: 7px 5px 6px 0px rgba(76, 31, 221, 0.24);
}
}
}
.img {
width: 835px;
height: 428px;
margin-left: -1px;
margin-top: -1px;
position: absolute;
top: 0px;
}
}
}
::v-deep .el-dropdown-menu__item:not(.is-disabled):hover {
background-color: #fff !important;
color: #0059ff !important;
}
::v-deep.el-dropdown-menu {
text-align: center;
border: none !important;
}
::v-deep .el-avatar {
margin-right: 8px;
img {
width: 100% !important;
}
}
::v-deep.xtop .xtop-right .person-action[data-v-5bcef51e] .message-count i {
color: #fff !important;
}
.el-button--text {
color: #fff;
}
img {
}
::v-deep .dialog-signin {
background: transparent;
box-shadow: none;
.el-dialog__header {
padding: 0;
}
.el-dialog__body {
padding: 0;
}
.el-dialog__footer {
padding: 0;
}
.signin-bg {
position: relative;
.el-icon-close {
position: absolute;
top: 20px;
right: 10px;
color: #fff;
font-size: 16px;
}
}
.signin-box2 {
margin-left: 100px;
font-size: 12px;
.signin-checkbox {
display: flex;
align-items: center;
color: #ffffff;
margin-top: 10px;
.el-checkbox {
margin-right: 5px;
}
}
.signin-text {
font-family: Alibaba PuHuiTi;
font-style: italic;
cursor: pointer;
margin-left: 20px;
color: #003eb7;
font-weight: bolder;
}
}
.signin-box {
margin: 0 70px;
p {
line-height: 28px;
}
.signin-text {
font-size: 12px;
font-weight: bold;
color: #ffffff;
.ti-yan {
border-bottom: 1px solid #ffffff;
margin-left: 10px;
cursor: pointer;
}
img {
width: 14px;
height: 14px;
margin-left: 6px;
vertical-align: middle;
margin-bottom: 4px;
}
}
.signin-a {
font-size: 12px;
font-family: Alibaba PuHuiTi;
font-weight: 600;
color: #ffffff;
span {
border-bottom: 1px solid #ffffff;
}
}
.signin-b {
font-size: 12px;
color: #ffffff;
text-align: right;
.el-checkbox__inner {
//background-color: #588AFC;
border-color: #ffffff;
}
.el-checkbox__input.is-checked .el-checkbox__inner {
background-color: #588afc;
}
}
}
}
.dialog-footer-signin {
display: flex;
justify-content: space-between;
}
.xtop {
height: 72px;
line-height: 72px;
min-width: 1280px;
background-color: #0078fc;
position: fixed;
top: 0px;
left: 0px;
right: 0px;
width: 100%;
display: flex;
justify-content: space-between;
border-bottom: 1px solid #e9e9e9;
z-index: 9999;
.xtop-content {
width: 100%;
display: flex;
justify-content: space-between;
margin: 0 40px;
.xtop-left {
display: flex;
justify-content: flex-start;
.xtop-logo {
padding-top: 20px;
padding-right: 50px;
display: flex;
justify-content: center;
align-items: center;
}
}
}
}
.xtop-nav {
display: flex;
// justify-content: flex-start;
a {
display: inline-block;
}
}
.xtop-nav-item {
line-height: 72px;
color: #fff;
}
@media screen and (max-width: 1366px) {
.xtop-nav-item {
padding: 0px 10px;
}
}
@media screen and (min-width: 1366px) {
.xtop-nav-item {
padding: 0px 24px;
}
}
.xtop .xtop-right {
display: flex;
justify-content: flex-end;
align-items: center;
.person-action {
display: flex;
justify-content: flex-end;
align-items: center;
margin-left: 44px;
::v-deep .message-count {
margin-right: 30px;
i {
font-size: 26px;
color: #409eff;
}
}
.el-button {
margin-top: 1px;
// margin-left: 20px;
}
}
}
.xtop .xtop-right > ul {
list-style: none;
margin: 0px;
}
.xtop .xtop-right > ul > li {
list-style: none;
display: inline-block;
margin: 0px 2px;
padding: 0px 15px;
font-size: 14px;
}
.xtop .arrow-down {
content: "";
width: 0;
height: 0;
border-style: solid dashed dashed;
border-color: #000000 transparent transparent;
overflow: hidden;
cursor: pointer;
transition: all 0.2s;
-webkit-transition: all 0.2s;
position: absolute;
top: 50%;
margin-top: -3px;
border-width: 6px;
border-top-color: #000000;
}
.xtop .arrow-up {
margin-top: -9px;
border-style: dashed dashed solid;
border-color: transparent transparent #000000;
}
.xtop-user {
width: 110px;
}
.xtop-user-img {
width: 20px;
height: 20px;
border: none;
display: inline-block;
vertical-align: middle;
border-radius: 50%;
}
.xtop-user-menu {
right: 0px;
top: 40px;
background-color: #f4f4f4;
color: #202020;
position: absolute;
width: 140px;
z-index: 1000;
padding: 15px 0px;
}
.xtop-user-menu > ul {
padding: 0px;
list-style: none;
}
.xtop-user-menu > ul > li {
display: block;
text-align: left;
}
.xtop-user-menu > ul > li.divider {
height: 1px;
margin: 5px 0px;
border-bottom: 1px solid #989898;
}
.xtop-user-menu > ul > li > a {
display: block;
padding-left: 30px;
line-height: 30px;
font-size: 14px;
}
.xtop-user-menu > ul > li > a:hover {
background-color: #cccccc;
}
.xtop-find {
border: 1px solid #c9c9c9;
background-color: #f3f3f3;
border-radius: 5px;
line-height: 25px;
height: 25px;
display: inline-block;
padding: 0px 5px;
input {
background-color: transparent;
border: 0px;
line-height: 25px;
height: 25px;
}
input:focus {
outline: none;
}
}
.message-count a {
color: #fff;
font-size: 28px;
margin-top: 0 !important;
}
::v-deep .el-badge {
margin-top: 0 !important;
.el-badge__content {
top: 20px;
}
}
::v-deep .el-link.el-link--primary:hover {
color: #588afc;
}
.el-dropdown-link {
cursor: pointer;
color: #fff;
}
</style>