123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959 |
- <template>
- <div class="navbar">
- <!-- <hamburger :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" /> -->
- <router-link
- key="collapse"
- style="display: flex; align-items: center; padding-left: 30px"
- to="/"
- >
- <img
- v-if="tenantLogo"
- :src="tenantLogo"
- class="sidebar-logo"
- style="width: 36px; height: 36px"
- />
- <img
- v-else
- src="@/assets/images/base/smallLogo.png"
- class="sidebar-logo"
- style="width: 36px; height: 36px"
- />
- <span class="tenantName" :title="tenantName">{{ tenantName }}</span>
- </router-link>
- <!-- <breadcrumb class="breadcrumb-container" /> -->
- <div class="indexlayout-top-menu">
- <!-- :class="{'active': getTopMenuActive === route.path}" -->
- <!-- el-scrollbar -->
- <el-scrollbar class="horizontal-scrollbar" style="overflow: hidden; height: 100%">
- <template v-for="route in permission_routes">
- <app-link
- v-if="!route.hidden"
- :to="route.path"
- :key="route.id"
- class="indexlayout-top-menu-li"
- :class="{ active: getTopMenuActive === route.path }"
- >
- <div
- style="
- display: flex;
- align-items: center;
- justify-content: center;
- flex-direction: column;
- height: 76px;
- "
- >
- <i :class="[route.meta.icon, 'menuSize']"></i>
- <span style="line-height: 1.2">{{ route.meta.title }}</span>
- </div>
- </app-link>
- </template>
- </el-scrollbar>
- </div>
- <div class="right-menu">
- <el-tooltip
- style="display: flex"
- effect="dark"
- v-if="tenantForm.tenantId == 1"
- content="点击进入商城系统"
- placement="bottom"
- >
- <div class="msginfo right-position" @click="gotoMall">
- <i class="icon_admin_mall operationSize"></i>
- </div>
- </el-tooltip>
- <el-tooltip
- style="display: flex"
- effect="dark"
- v-if="tenantForm.tenantId == 1"
- content="点击进入OA系统"
- placement="bottom"
- >
- <div class="msginfo right-position" @click="gotoOa">
- <i class="icon_admin_oa operationSize"></i>
- </div>
- </el-tooltip>
- <!-- <el-popover
- placement="bottom"
- trigger="hover"
- style="display: flex;"
- v-if="tenantForm.tenantId == 1"
- >
- <div class="popover-container" style="text-align: center">OA审批</div>
- <div
- class="msginfo right-position"
- @click="gotoOa"
- slot="reference"
- >
- <i class="icon_admin_oa operationSize"></i>
- </div>
- </el-popover> -->
- <!-- <el-popover
- v-if="isShowIns"
- placement="bottom"
- trigger="hover"
- style="display: flex;"
- >
- <div class="popover-container" style="text-align: center">操作手册</div>
- <div
- class="msginfo right-position"
- @click="openIns"
- slot="reference"
- >
- <i class="icon_admin_book operationSize"></i>
- </div>
- </el-popover> -->
- <!-- <el-popover
- placement="bottom"
- trigger="hover"
- style="display: flex;"
- >
- <div class="popover-container" style="text-align: center">系统日志</div>
- <div
- class="msginfo right-position"
- v-permission="'/journal'"
- @click="gotoRecode"
- slot="reference"
- >
- <i class="icon_admin_message operationSize"></i>
- </div>
- </el-popover> -->
- <el-tooltip
- style="display: flex"
- effect="dark"
- content="点击查看系统日志"
- placement="bottom"
- >
- <div class="msginfo right-position" v-permission="'/journal'" @click="gotoRecode">
- <i class="icon_admin_message operationSize"></i>
- </div>
- </el-tooltip>
- <el-tooltip
- style="display: flex"
- effect="dark"
- content="点击打开聊天"
- placement="bottom"
- >
- <el-badge :is-dot="noReadNum > 0 ? true : false" class="item">
- <div class="msginfo right-position" @click="gotoChart">
- <i class="icon_admin_chart operationSize"></i>
- </div>
- </el-badge>
- </el-tooltip>
- <div class="left-menu" v-if="organNameList && organNameList.length > 0">
- <el-popover
- placement="top-start"
- width="300"
- trigger="hover"
- style="display: flex"
- >
- <div class="popover-container">
- <el-tag
- class="navbar_tag"
- type="info"
- v-for="item in organNameList"
- :key="item"
- >{{ item }}</el-tag
- >
- </div>
- <span slot="reference" class="msginfo right-position">
- <i class="icon_admin_orgin operationSize"></i>
- </span>
- </el-popover>
- </div>
- <el-dropdown class="avatar-container" trigger="hover" style="margin-left: 12px">
- <div class="avatar-wrapper">
- <img
- v-if="$store.getters.avatar"
- :src="$store.getters.avatar"
- class="user-avatar"
- />
- <img
- v-else
- class="user-avatar"
- src="@/assets/images/base/placehorder-icon.png"
- />
- <span>{{ name }}</span>
- </div>
- <el-dropdown-menu slot="dropdown" class="user-dropdown">
- <div class="drop_userInfo">
- <div class="avatar-wrapper">
- <img
- v-if="$store.getters.avatar"
- :src="$store.getters.avatar"
- class="user-avatar"
- />
- <img
- v-else
- class="user-avatar"
- src="@/assets/images/base/placehorder-icon.png"
- />
- <div>
- <span>{{ name }}</span>
- <p class="positionName" :title="positionName">
- {{ positionName }}
- </p>
- </div>
- </div>
- </div>
- <div class="tenantService" v-if="!tenantStatus">
- <div class="serviceName">
- <p class="name">{{ tenantInfo.serverName }}</p>
- <div
- class="serviceRenew"
- @click="onRenew"
- v-if="
- $helpers.permission('/ productService') &&
- $helpers.permission('/serviceRenew')
- "
- >
- 立即续费
- </div>
- </div>
- <div class="serviceTime" v-if="tenantInfo.validRemaining > 0">
- 剩余{{ tenantInfo.validRemaining }}天({{ tenantInfo.expiryDateEnd }})到期
- </div>
- <div class="serviceTime" v-else>已过期</div>
- </div>
- <!-- divided -->
- <el-dropdown-item v-if="tenantStatus" @click.native="onTenantChange">
- <i class="icon_admin_tenant userSize"></i>
- <span class="dropdown-text">{{ tenantName }}</span>
- <i style="margin-left: 3px" class="icon_admin_change userSize"></i>
- </el-dropdown-item>
- <el-dropdown-item
- @click.native="
- () => {
- this.nocloseable = false;
- resetPassWord();
- }
- "
- >
- <i class="icon_admin_edit userSize"></i>
- <span class="dropdown-text">修改密码</span>
- </el-dropdown-item>
- <el-dropdown-item
- @click.native="accountStatus = true"
- v-if="$helpers.permission('employee/simpleUpdate')"
- >
- <i class="icon_admin_account userSize"></i>
- <span class="dropdown-text">账号设置</span>
- </el-dropdown-item>
- <el-dropdown-item style="border-top: 1px solid #e5e5e5" @click.native="logout">
- <i class="icon_admin_exit userSize"></i>
- <span class="dropdown-text">安全退出</span>
- </el-dropdown-item>
- </el-dropdown-menu>
- </el-dropdown>
- </div>
- <el-dialog
- title="修改密码"
- width="500px"
- append-to-body
- :visible.sync="resetVisible"
- :show-close="!nocloseable"
- :close-on-press-escape="false"
- :close-on-click-modal="false"
- >
- <el-form
- :model="resetForm"
- label-position="right"
- label-width="100px"
- ref="pwdForm"
- >
- <el-form-item label="手机号" prop="phone">
- <div>{{ this.$store.getters.phone }}</div>
- </el-form-item>
- <el-form-item
- label="新密码"
- :rules="[
- { required: true, message: '密码不能为空', trigger: 'blur' },
- {
- pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/,
- message: '密码为6-20位数字和字母组合',
- trigger: 'blur',
- },
- ]"
- prop="password"
- >
- <el-input
- v-model.trim="resetForm.password"
- type="password"
- style="width: 180px"
- autocomplete="off"
- ></el-input>
- </el-form-item>
- <el-form-item
- label="再次输入"
- :rules="[
- { required: true, message: '密码不能为空', trigger: 'blur' },
- {
- pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/,
- message: '密码为6-20位数字和字母组合',
- trigger: 'blur',
- },
- ]"
- prop="password2"
- >
- <el-input
- v-model.trim="resetForm.password2"
- type="password"
- style="width: 180px"
- autocomplete="off"
- ></el-input>
- </el-form-item>
- <el-form-item
- label="验证码"
- :rules="[{ required: true, message: '验证码不能为空', trigger: 'blur' }]"
- prop="authCode"
- style=""
- >
- <el-input
- v-model.trim="resetForm.authCode"
- style="width: 180px"
- autocomplete="off"
- ></el-input>
- <el-button :disabled="isDisable" @click="getCode">{{ btnName }}</el-button>
- </el-form-item>
- </el-form>
- <div slot="footer" class="dialog-footer">
- <el-button @click="resetVisible = false" v-if="!nocloseable">取 消</el-button>
- <el-button type="primary" @click="submitResetPassWord">确 定</el-button>
- </div>
- </el-dialog>
- <el-dialog
- title="切换机构"
- width="500px"
- append-to-body
- v-if="tenantVisible"
- :visible.sync="tenantVisible"
- >
- <el-form
- :model="tenantForm"
- label-position="right"
- label-width="100px"
- ref="tenantForm"
- >
- <el-form-item
- label="选择机构"
- :rules="[{ required: true, message: '请选择机构', trigger: 'change' }]"
- prop="tenantId"
- >
- <el-select
- v-model.trim="tenantForm.tenantId"
- filterable
- placeholder="请选择机构"
- clearable
- style="width: 100% !important"
- >
- <el-option
- v-for="(item, index) in tenantList"
- :key="index"
- :label="item.name"
- :value="item.id"
- ></el-option>
- </el-select>
- </el-form-item>
- </el-form>
- <div slot="footer" class="dialog-footer">
- <el-button @click="tenantVisible = false">取 消</el-button>
- <el-button type="primary" @click="submitTenant">确 定</el-button>
- </div>
- </el-dialog>
- <el-dialog
- title="账号设置"
- append-to-body
- :visible.sync="accountStatus"
- v-if="accountStatus"
- width="650px"
- >
- <user-model @close="accountStatus = false"></user-model>
- </el-dialog>
- <!-- <portal-target name="AppMain" ref="target">
- <instructions ref="instructions" @checkShow="checkShow" />
- </portal-target> -->
- </div>
- </template>
- <script>
- import qs from "qs";
- import Logo from "./Sidebar/Logo";
- import { mapGetters } from "vuex";
- // import Breadcrumb from '@/components/Breadcrumb'
- // import Hamburger from '@/components/Hamburger'
- import { resetPassword } from "@/api/buildTeam";
- import AppLink from "./Sidebar/Link";
- import { getBelongTopMenuPath } from "@/utils/permission";
- // import instructions from "./instructions";
- import { validOaUrl, validMallUrl } from "@/utils/validate";
- import { tenantInfoQueryPage } from "@/views/organManager/api";
- import Cookies from "js-cookie";
- import axios from "axios";
- import userModel from "./modal/userModal";
- export default {
- data() {
- let tenantConfig = sessionStorage.getItem("tenantConfig");
- tenantConfig = tenantConfig ? JSON.parse(tenantConfig) : {};
- return {
- accountStatus: false,
- organName: this.$store.getters.organName,
- organNameList: [],
- resetVisible: false,
- resetForm: {
- phone: "",
- authCode: "",
- password: "",
- password2: "",
- },
- isDisable: false, // 是否允许发送验证码
- timerCount: 60,
- btnName: "获取验证码",
- isShowIns: false,
- tenantVisible: false,
- tenantName: tenantConfig.tenantName || null,
- tenantForm: {
- tenantId: Number(tenantConfig.tenantId) || null,
- },
- tenantList: [],
- tenantLogo: tenantConfig.tenantLogo || null,
- noReadNum: 0,
- nocloseable: false,
- };
- },
- components: {
- AppLink,
- userModel,
- // instructions,
- // Breadcrumb,
- // Hamburger
- },
- computed: {
- ...mapGetters([
- "sidebar",
- "avatar",
- "name",
- "positionName",
- "permission_routes",
- "tenantInfo",
- ]),
- getTopMenuActive() {
- let route = this.$route;
- // (route, getBelongTopMenuPath(route))
- return getBelongTopMenuPath(route);
- },
- tenantStatus() {
- // 判断是否是平台账号 true 是
- const baseTenantId = sessionStorage.getItem("baseTenantId");
- return baseTenantId < 0 ? true : false;
- },
- },
- mounted() {
- // this.$bus.$on("resetPwd", () => {
- // this.resetPassWord();
- // });
- console.log(this.$store.getters.pwdflag, "getpwdflag");
- if (this.$store.getters.pwdflag) {
- // this.$confirm("当前账号存在安全风险是否修改密码", "提示", {
- // confirmButtonText: "确定",
- // cancelButtonText: "取消",
- // type: "warning",
- // })
- // .then(() => {
- // })
- // .catch(() => {});
- this.nocloseable = true;
- this.resetPassWord();
- }
- this.$bus.$on("getShowNums", (obj) => {
- this.noReadNum = obj;
- });
- // 手动加入
- this.toggleSideBar();
- this.organNameList = this.organName ? this.organName.split(",") : [];
- },
- methods: {
- toggleSideBar() {
- this.$store.dispatch("app/toggleSideBar");
- },
- async logout() {
- await this.$store.dispatch("user/logout");
- localStorage.removeItem("firstMenuUrl");
- // await this.$store.dispatch("permission/removePermission")
- this.$router.push(`/login`);
- window.location.reload();
- },
- async onTenantChange() {
- try {
- const res = await tenantInfoQueryPage({
- page: 1,
- rows: 999,
- payState: 1,
- state: 1,
- });
- this.tenantList = res.data?.rows || [];
- this.tenantVisible = true;
- } catch (e) {}
- },
- onRenew() {
- this.$router.push("/productService");
- },
- submitTenant() {
- this.$refs["tenantForm"].validate((res) => {
- if (res) {
- const tenantForm = this.tenantForm;
- let tenantName = null;
- let tenantLogo = null;
- this.tenantList.forEach((item) => {
- if (item.id == tenantForm.tenantId) {
- tenantName = item.name;
- tenantLogo = item.logo;
- this.tenantName = item.name;
- this.tenantLogo = item.logo;
- }
- });
- let tenantConfig = sessionStorage.getItem("tenantConfig");
- tenantConfig = tenantConfig ? JSON.parse(tenantConfig) : {};
- if (tenantConfig.tenantId != tenantForm.tenantId) {
- //判断是否是当前路由
- // if(url == this.$route.path) {
- tenantConfig.tenantId = tenantForm.tenantId;
- tenantConfig.tenantName = tenantName;
- tenantConfig.tenantLogo = tenantLogo;
- sessionStorage.setItem("tenantConfig", JSON.stringify(tenantConfig));
- this.$router.push({
- path: "/redirect",
- query: this.$route.fullPath,
- });
- // } else {
- // this.$router.push({
- // path: url
- // })
- // }
- // 需要重置数据
- this.$store.commit("commit_branchs", []);
- this.$store.commit("commit_subjects", []);
- this.$store.commit("commit_teachers", []);
- this.$store.commit("commit_schools", []);
- this.$store.commit("commit_vip_group_category", []);
- this.$store.commit("commit_educations", []);
- this.$store.commit("commit_technician", []);
- this.$store.commit("commit_roles", []);
- this.$store.commit("commit_employs", []);
- // 移除
- localStorage.removeItem("searchs");
- }
- }
- });
- },
- gotoRecode() {
- this.$router.push("/journal/journal");
- },
- resetPassWord() {
- this.resetVisible = true;
- },
- submitResetPassWord() {
- if (this.resetForm.password !== this.resetForm.password2) {
- this.$message.error("两次密码必须相同");
- return;
- }
- this.$refs["pwdForm"].validate((res) => {
- if (res) {
- // 发请求
- resetPassword({
- authCode: this.resetForm.authCode,
- mobile: this.$store.getters.phone,
- newPassword: this.resetForm.password,
- }).then((res) => {
- if (res.code == 200) {
- // 修改成功
- this.$message.success("修改成功");
- this.logout();
- }
- });
- }
- });
- },
- getCode() {
- // 获取验证码
- if (!this.$store.getters.phone) {
- this.$message.error("请输入正确的手机号");
- return;
- }
- if (!this.isDisable) {
- this.isDisable = true;
- // 发请求成功后开启定时器
- // 发送验证码
- axios
- .post(
- "/api-web/code/sendSms",
- qs.stringify({ mobile: this.$store.getters.phone })
- )
- .then((res) => {
- if (res.data.code == 200) {
- let timer = setInterval((res) => {
- if (this.timerCount <= 0) {
- clearInterval(timer);
- this.isDisable = false;
- this.btnName = "获取验证码";
- this.timerCount = 60;
- } else {
- this.timerCount--;
- this.btnName = `${this.timerCount}s后重试`;
- }
- }, 1000);
- }
- });
- }
- },
- openIns() {
- // this.$refs.instructions.showInstructions();
- },
- checkShow(val) {
- this.isShowIns = val;
- },
- gotoOa() {
- // console.log(validOaUrl())
- // const Token = Cookies.get('cross-Token')
- // console.log(Token, validOaUrl().split('//')[1])
- // Cookies.set('Admin-Token', Token, { domain: `.${validOaUrl().split('//')[1]}`, path: '/' })
- // document.cookie = `Adminoken=${Token};domain=oadev.dayaedu.com;`
- window.open(validOaUrl());
- },
- gotoMall() {
- window.open(validMallUrl());
- },
- gotoChart() {
- // 初始化未读数
- this.$bus.$emit("openChart", true);
- },
- },
- watch: {
- resetVisible(val) {
- if (!val) {
- this.resetForm = {
- phone: "",
- authCode: "",
- password: "",
- password2: "",
- };
- }
- },
- },
- };
- </script>
- <style lang="scss" scoped>
- .navbar_tag {
- margin: 0 5px 8px;
- }
- ::v-deep .el-scrollbar__thumb {
- background-color: rgba(255, 255, 255, 0.3);
- &:hover {
- background-color: rgba(255, 255, 255, 0.3);
- }
- }
- .indexlayout-top-menu {
- padding-left: 57px;
- height: 76px;
- line-height: 76px;
- flex: 1;
- display: flex;
- overflow: hidden;
- /* overflow-x: auto; */
- .indexlayout-top-menu-li {
- display: table-cell;
- padding: 0 5px;
- height: 76px;
- text-decoration: none;
- color: #f2f2f2;
- font-size: 16px;
- transition: all 0.3s ease;
- span {
- // display: block;
- transition: all 0.3s ease;
- // padding: 10px 20px;
- padding: 8px 20px 3px;
- }
- &:hover,
- &.active {
- span {
- font-weight: 500;
- // border-radius: 6px;
- }
- }
- // &.active span {
- // font-weight: bold;
- // }
- }
- .breadcrumb {
- line-height: 76px;
- margin-left: 10px;
- .el-breadcrumb__item {
- display: inline-block;
- float: none;
- }
- }
- }
- .popover-container {
- max-height: 350px;
- overflow-y: scroll;
- }
- .navbar {
- display: flex;
- flex-direction: row;
- justify-content: space-between;
- height: 76px;
- overflow: hidden;
- position: relative;
- z-index: 2000;
- box-shadow: 0px 8px 20px 0px rgba(0, 0, 0, 0.1);
- h2 {
- font-size: 18px;
- line-height: 76px;
- margin: 0 0 0 30px;
- display: inline-block;
- }
- .hamburger-container {
- line-height: 76px;
- height: 100%;
- float: left;
- cursor: pointer;
- transition: background 0.3s;
- -webkit-tap-highlight-color: transparent;
- &:hover {
- background: rgba(0, 0, 0, 0.025);
- }
- }
- .breadcrumb-container {
- float: left;
- }
- .left-menu {
- line-height: 76px;
- // padding-right: 22px;
- font-size: 16px;
- .topIcon {
- width: 20px;
- height: 25px;
- }
- }
- .right-menu {
- min-width: 154px;
- float: right;
- height: 100%;
- line-height: 76px;
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
- &:focus {
- outline: none;
- }
- .msginfo.ins {
- img {
- width: 18px;
- height: 23px;
- }
- }
- .msginfo {
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
- align-items: center;
- padding: 0 12px;
- position: relative;
- cursor: pointer;
- img {
- width: 24px;
- height: 24px;
- }
- .active {
- position: absolute;
- width: 7px;
- height: 7px;
- background-color: #f97215;
- border-radius: 50%;
- top: 20px;
- right: -4px;
- }
- }
- .right-menu-item {
- display: inline-block;
- padding: 0 8px;
- height: 100%;
- font-size: 14px;
- color: #5a5e66;
- vertical-align: text-bottom;
- &.hover-effect {
- cursor: pointer;
- transition: background 0.3s;
- &:hover {
- background: rgba(0, 0, 0, 0.025);
- }
- }
- }
- .avatar-container {
- height: 76px;
- margin-right: 42px;
- cursor: pointer;
- .avatar-wrapper {
- position: relative;
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
- align-items: center;
- span {
- margin-left: 8px;
- font-size: 14px;
- font-weight: 500;
- // color: rgba(68, 68, 68, 1);
- color: #fff;
- }
- .user-avatar {
- cursor: pointer;
- width: 32px;
- height: 32px;
- border: 2px solid #f0f2f5;
- border-radius: 50%;
- }
- .el-icon-caret-bottom {
- cursor: pointer;
- position: absolute;
- right: -20px;
- top: 25px;
- font-size: 14px;
- }
- }
- }
- }
- }
- .user-dropdown {
- width: 258px;
- padding-top: 0 !important;
- box-shadow: 0px 2px 13px 0px rgba(0, 0, 0, 0.05);
- ::v-deep .popper__arrow {
- border-bottom-color: var(--color-primary) !important;
- &::after {
- border-bottom-color: var(--color-primary) !important;
- }
- }
- .drop_userInfo {
- background-color: var(--color-primary);
- height: 64px;
- color: #fff;
- padding: 0 12px;
- border-radius: 4px 4px 0 0;
- display: flex;
- align-items: center;
- .avatar-wrapper {
- display: flex;
- align-items: center;
- background: url("../../assets/images/user_tips.png") no-repeat right center;
- background-size: 45%;
- width: 100%;
- .user-avatar {
- width: 38px;
- height: 38px;
- border-radius: 50%;
- margin-right: 10px;
- }
- }
- }
- .tenantService {
- border-bottom: 1px solid #e5e5e5;
- padding: 18px 17px 12px;
- .serviceName {
- display: flex;
- align-items: center;
- justify-content: space-between;
- .name {
- font-size: 18px;
- font-weight: 600;
- color: var(--color-primary);
- line-height: 25px;
- width: 160px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- .serviceRenew {
- width: 63px;
- height: 22px;
- background: linear-gradient(270deg, #ffc65e 0%, #ffe8a6 100%);
- border-radius: 11px;
- line-height: 22px;
- font-size: 11px;
- font-weight: 400;
- color: #981e13;
- text-align: center;
- cursor: pointer;
- }
- }
- .serviceTime {
- margin-top: 15px;
- font-size: 13px;
- font-weight: 400;
- color: #333333;
- line-height: 18px;
- }
- }
- .el-dropdown-menu__item {
- display: flex;
- align-items: center;
- // margin: 3px 17px;
- padding: 7px 17px;
- }
- .dropdown-text {
- display: block;
- width: 180px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- }
- .right-position {
- display: flex;
- align-items: center;
- justify-content: center;
- height: 75px;
- }
- .sidebar-logo {
- margin-right: 8px;
- }
- .tenantName {
- font-size: 20px;
- font-family: PingFangSC-Semibold, PingFang SC;
- font-weight: 600;
- color: #ffffff;
- line-height: 28px;
- max-width: 150px;
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
- }
- .positionName {
- padding-top: 5px;
- font-size: 12px;
- width: 145px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- }
- /deep/.el-badge__content.is-fixed.is-dot {
- top: 28px !important;
- }
- </style>
|