| | |
| | | <template> |
| | | <!-- 头部 --> |
| | | <el-header> |
| | | <el-header v-if="show"> |
| | | <!-- 左侧菜单 --> |
| | | <div class="header-left"> |
| | | <div class="menu-left__item" v-for="(item,index) in menuLeftList" :key="item.id" @click="changeActive(index)"> |
| | | <span :class="item.checked ? 'my-active':''">{{item.label}}</span> |
| | | <div class="menu-left__item" v-for="(item, index) in menuLeftList" :key="item.id" @click="changeActive(index)"> |
| | | <span :class="item.checked ? 'my-active' : ''">{{ item.label }}</span> |
| | | </div> |
| | | </div> |
| | | <!-- 右侧菜单 --> |
| | |
| | | <el-input suffix-icon="el-icon-search" v-model="keyword" placeholder="请输入搜索内容"></el-input> |
| | | </div> |
| | | <!-- 登录用户 --> |
| | | <div class="menu-right__item user" @mousemove="flag.user=true" @mouseleave="flag.user=false"> |
| | | <el-avatar :size="20" :src="user.icon" v-if="user.icon"></el-avatar> |
| | | <div class="menu-right__item user" @mousemove="flag.user = true" @mouseleave="flag.user = false"> |
| | | <el-avatar :size="20" :src="user.user.icon" v-if="user.user.icon"></el-avatar> |
| | | <el-avatar :size="20" src="https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png" v-else> |
| | | </el-avatar> |
| | | <span style="padding: 0 5px;">{{user.username? user.username:'Admin'}}</span> |
| | | <span style="padding: 0 5px;">{{ user.user.username}}</span> |
| | | <i class="el-icon-arrow-down"></i> |
| | | <!-- 用户操作 --> |
| | | <div class="user-card" v-if="flag.user" @mouseleave="flag.user = false"> |
| | | <el-card class="box-card"> |
| | | <div class="user-card__item">修改密码</div> |
| | | <div style="margin-top: 10px;" class="user-card__item">基本信息</div> |
| | | <div class="user-card__item" @click="updatePassword()">修改密码</div> |
| | | <div style="margin-top: 10px;" class="user-card__item" @click="baseInfo()">基本信息</div> |
| | | </el-card> |
| | | </div> |
| | | </div> |
| | | <!-- 消息 --> |
| | | <div class="menu-right__item btn" @mousemove="flag.message = true" @mouseleave=" flag.message = false "> |
| | | <div class="menu-right__item btn" @mousemove="flag.message = true" @mouseleave="flag.message = false"> |
| | | <el-tooltip effect="dark" content="消息中心" placement="bottom-end" :hide-after="600"> |
| | | <el-badge :value="50" :max="99" class="item"> |
| | | <i class="el-icon-message-solid"></i> |
| | | </el-badge> |
| | | </el-tooltip> |
| | | <!-- 消息操作 --> |
| | | <div class="message-card" v-if="flag.message" @mouseleave=" flag.message = false "> |
| | | <div class="message-card" v-if="flag.message" @mouseleave="flag.message = false"> |
| | | <el-card class="box-card"> |
| | | <div class="card-header"> |
| | | <span>消息中心</span> |
| | | <el-button type="text">接收设置</el-button> |
| | | </div> |
| | | <div v-for="item in menuMessageList" :key="item.id" class="message-card__item"> |
| | | <span class="label">{{item.label}}</span> |
| | | <span>({{item.num}})</span> |
| | | <router-link to='/home/operate/message/messageIndex'> |
| | | <span @click="" class="label">{{ item.label }}</span> |
| | | </router-link> |
| | | <span>({{ item.num }})</span> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | </div> |
| | | <!-- 设置 --> |
| | | <div class="menu-right__item btn"> |
| | | <!-- <div class="menu-right__item btn"> |
| | | <el-tooltip effect="dark" content="账户设置" placement="bottom-end" :hide-after="1000"> |
| | | <i class="el-icon-s-tools"></i> |
| | | </el-tooltip> |
| | | </div> |
| | | </div> --> |
| | | <!-- 退出登录 --> |
| | | <div class="menu-right__item btn" @click="loginout"> |
| | | <el-tooltip effect="dark" content="退出登录" placement="bottom-end" :hide-after="1000"> |
| | | <i class="el-icon-switch-button"></i> |
| | | </el-tooltip> |
| | | </div> |
| | | <el-dialog :visible.sync="updatePasswordDialog" width="40%" title="修改密码" v-if="updatePasswordDialog" |
| | | :before-close="handleClose"> |
| | | <updatePassword /> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="baseInformationVisible" width="35%" title="基本信息" v-if="baseInformationVisible" |
| | | :before-close="handleClose"> |
| | | <el-form :model="info" class="info" label-width="6vw"> |
| | | <el-form-item label="用户ID" min-width="6"> |
| | | <el-input v-model="info.id"></el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="nickName" label="用户名称" min-width="10"> |
| | | <el-input v-model="info.nickName"></el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="nickName" label="所属姓名" min-width="8"> |
| | | <el-input v-model="info.username"></el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="mobile" label="联系方式" min-width="7"> |
| | | <el-input v-model="info.mobile"></el-input> |
| | | </el-form-item> |
| | | <!-- <el-form-item prop="departName" label="所属部门" min-width="8"> |
| | | <el-input v-model="user.mobile"></el-input> |
| | | </el-form-item> --> |
| | | <el-form-item prop="jobTitle" label="所属职务" min-width="8"> |
| | | <el-input v-model="info.jobTitle"></el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="createTime" label="创建时间" min-width="10"> |
| | | <el-input v-model="info.createTime"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | </el-dialog> |
| | | </div> |
| | | </el-header> |
| | | </template> |
| | | |
| | | <script> |
| | | import updatePassword from "./updatePassword"; |
| | | export default { |
| | | components: { |
| | | updatePassword |
| | | }, |
| | | data() { |
| | | return { |
| | | baseInformationVisible: false, |
| | | updatePasswordDialog: false, |
| | | menuLeftList: [ |
| | | { |
| | | label: '驾驶舱', |
| | |
| | | }, |
| | | ], |
| | | keyword: '', |
| | | info:null, |
| | | show:false |
| | | }; |
| | | }, |
| | | created() { |
| | | this.getLoginInfo(); |
| | | this.setLoginInfo() |
| | | console.log(this.user) |
| | | }, |
| | | methods: { |
| | | baseInfo() { |
| | | this.baseInformationVisible = true; |
| | | const name = sessionStorage.getItem('name'); |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/admin/info?name=' + name, |
| | | }) |
| | | .then(res => { |
| | | sessionStorage.setItem('user', JSON.stringify(res.data)); |
| | | this.info = res.data.user; |
| | | }) |
| | | }, |
| | | handleClose(done) { |
| | | this.$confirm("确认关闭?") |
| | | .then((_) => { |
| | | this.dialogUpload = false; |
| | | // this.dialogUpdate = false; |
| | | done(); |
| | | }) |
| | | .catch((_) => { }); |
| | | }, |
| | | //修改密码 |
| | | updatePassword() { |
| | | this.updatePasswordDialog = true; |
| | | }, |
| | | // 退出功能 |
| | | loginout() { |
| | | this.$confirm('退出系统确认', '确认提示', { |
| | |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | sessionStorage.removeItem('token'); |
| | | sessionStorage.removeItem('tokenHead'); |
| | | sessionStorage.clear(); |
| | | this.$router.push({ path: "/login" }) |
| | | }).catch(err => { |
| | | console.log(err); |
| | |
| | | } |
| | | }) |
| | | }, |
| | | // 获取登录用户信息 |
| | | getLoginInfo() { |
| | | // 设置用户基本信息 |
| | | async setLoginInfo() { |
| | | const info = JSON.parse(sessionStorage.getItem('user')); |
| | | if (info) { |
| | | this.user = info; |
| | | console.log(info) |
| | | this.user = info; |
| | | } else { |
| | | this.user = await this.getLoginInfo(); |
| | | console.log(this.user) |
| | | } |
| | | this.show = true |
| | | }, |
| | | // 获取登录用户信息 |
| | | async getLoginInfo(){ |
| | | const name = sessionStorage.getItem('name'); |
| | | this.$axios({ |
| | | let res = await this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/admin/info?name=' + name, |
| | | }) |
| | | .then(res => { |
| | | sessionStorage.setItem('user', JSON.stringify(res.data)); |
| | | this.user = res.data; |
| | | }) |
| | | } |
| | | sessionStorage.setItem('user', JSON.stringify(res.data)); |
| | | return res.data |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | ::v-deep .el-form{ |
| | | padding: 3vh 5vw; |
| | | .el-form-item__label{ |
| | | color: #4b9bb7; |
| | | } |
| | | } |
| | | .el-header { |
| | | background-color: #071a38; |
| | | color: #333; |
| | |
| | | top: 60px; |
| | | width: 120px; |
| | | z-index: 3000; |
| | | |
| | | .user-card__item { |
| | | padding: 5px 0; |
| | | |
| | |
| | | width: 180px; |
| | | left: -50px; |
| | | z-index: 3000; |
| | | |
| | | :deep(.el-card__body) { |
| | | padding: 0; |
| | | } |