<template>
  <div class="main mainVueIndex" :class="current_theme" id="defaultpage">
    <div class="oa-header-user" v-if="showIframe">
      <h3 v-show="menuType === '2'" class="oa-user-name" style="color: #fff">
        {{ store.state.userInfo ? store.state.userInfo.userName : "" }}
      </h3>
      <div class="oa-header-upt">
        <a
          ><template>
            <img
              @click="changeMenuType"
              v-if="userInfo.photo"
              class="oa-sign-tul-ui"
              :src="
                'data:image/' + userInfo.photo + ';base64,' + userInfo.photo
              "
              alt="头像"
            />
            <img
              @click="changeMenuType"
              v-else
              class="oa-sign-tul-ui"
              src="../../static/img/photo-default.png"
              alt="头像"
            /> </template
        ></a>
      </div>
      <div class="oa-header-ucon">
        <div class="oa-header-ulist">
          <div class="oa-header-uin">
            <template>
              <img
                v-if="userInfo.photo"
                class="oa-sign-tul-ui"
                :src="
                  'data:image/' + userInfo.photo + ';base64,' + userInfo.photo
                "
                alt="头像"
                @click="photoModal = true"
              />
              <img
                v-else
                class="oa-sign-tul-ui"
                src="../../static/img/photo-default.png"
                alt="头像"
                @click="photoModal = true"
              />
            </template>
            <h3>
              {{ store.state.userInfo ? store.state.userInfo.userName : "" }}
            </h3>
          </div>
          <ul class="oa-header-uul">
            <li @click="showPersonInfo()">
              <span class="st-icons st-icons-user"></span>个人信息
            </li>
            <li @click="pwdModal.show = true">
              <span class="st-icons st-icons-pwd"></span>修改密码
            </li>
            <!-- <li @click="signOut">
                        <span class="st-icons st-icons-out"></span>退出登录
                    </li> -->
            <li @click="signOut">
                <span class="st-icons st-icons-out"></span>退出登录
            </li>
          </ul>
        </div>
      </div>
    </div>
    <div
      v-show="showIframe"
      class="icore-menu-main overFlowSet"
      :class="{ 'icore-menu-main2': menuType === '2' }"
    >
      <div id="menuDrag" v-if="menuType === '2'" class="menuDrag"></div>
      <el-menu
        :default-active="defaultActiveIndex"
        :collapse="menuType === '1'"
        class="el-menu-vertical-demo icore-menu icore-menu-level1"
        v-for="(item, index) in menuData"
        :key="item.id"
        @open="handleOperate"
        @close="handleOperate"
      >
        <el-submenu
          :index="index + ''"
          v-if="item.menuType && Number(item.status)"
        >
          <template slot="title">
            <i
              class="icore-menu-lic icore-menu-icons icore-icons-menu-default"
              :class="item.menuIcon ? item.menuIcon : ''"
            ></i>
            <div class="icore-menu-lit marignL15 nameText">{{ item.name }}</div>
          </template>
          <template v-for="(sitem, sindex) in item.children">
            <el-submenu
              :index="index + '-' + sindex"
              v-if="
                sitem.children &&
                sitem.children.length > 0 &&
                allNoMenu(sitem.children) &&
                Number(sitem.status)
              "
              :key="sitem.id"
              @click.native="
                selectMenu(sitem, [
                  { menuId: 1, menuLabel: item.name },
                  { menuId: 2, menuLabel: sitem.name },
                ])
              "
            >
              <template slot="title">
                <span>{{ sitem.name }}</span>
              </template>
              <template v-for="(ssitem, ssindex) in sitem.children">
                <el-submenu
                  :index="index + '-' + sindex + '-' + ssindex"
                  v-if="
                    ssitem.children &&
                    ssitem.children.length > 0 &&
                    allNoMenu(ssitem.children) &&
                    Number(ssitem.status)
                  "
                  :key="ssitem.id"
                >
                  <template slot="title">
                    <span>{{ ssitem.name }}</span>
                  </template>
                  <template v-for="(sssitem, sssindex) in ssitem.children">
                    <el-menu-item
                      @click.native="
                        selectMenu(sssitem, [
                          { menuId: 1, menuLabel: item.name },
                          { menuId: 2, menuLabel: sitem.name },
                          { menuId: 3, menuLabel: ssitem.name },
                          { menuId: 4, menuLabel: sssitem.name },
                        ])
                      "
                      v-if="
                        (sssitem.menuType === '1' ||
                          sssitem.menuType === '4') &&
                        Number(sssitem.status)
                      "
                      :index="
                        index + '-' + sindex + '-' + ssindex + '-' + sssindex
                      "
                      :key="sssitem.id"
                      >{{ sssitem.name }}</el-menu-item
                    >
                    <!-- 分割线 -->
                    <el-menu-item
                      class="nav_menu"
                      v-if="sssitem.menuType === '3' && Number(sssitem.status)"
                      :index="
                        index + '-' + sindex + '-' + ssindex + '-' + sssindex
                      "
                      :key="sssitem.id"
                    >
                      <template>
                        <div></div>
                      </template>
                    </el-menu-item>
                    <!-- 停用菜单 -->
                    <el-menu-item
                      v-if="Number(sssitem.status) === 0"
                      :index="
                        index + '-' + sindex + '-' + ssindex + '-' + sssindex
                      "
                      :key="sssitem.id"
                      >{{ sssitem.name }}</el-menu-item
                    >
                  </template>
                </el-submenu>
                <!-- 停用菜单 -->
                <el-menu-item
                  :index="index + '-' + sindex + '-' + ssindex"
                  class="closeMenu"
                  v-if="Number(ssitem.status) === 0"
                  :key="ssitem.id"
                >
                  {{ ssitem.name }}
                </el-menu-item>
                <!-- 分割线 -->
                <el-menu-item
                  class="nav_menu"
                  :index="index + '-' + sindex + '-' + ssindex"
                  v-if="
                    (!ssitem.children ||
                      ssitem.children.length === 0 ||
                      !allNoMenu(ssitem.children)) &&
                    ssitem.menuType === '3' &&
                    Number(ssitem.status)
                  "
                  :key="ssitem.id"
                >
                  <template>
                    <div></div>
                  </template>
                </el-menu-item>
                <!-- 分割线 END -->
                <el-menu-item
                  @click.native="
                    selectMenu(ssitem, [
                      { menuId: 1, menuLabel: item.name },
                      { menuId: 2, menuLabel: sitem.name },
                      { menuId: 3, menuLabel: ssitem.name },
                    ])
                  "
                  :index="index + '-' + sindex + '-' + ssindex"
                  v-if="
                    (!ssitem.children ||
                      ssitem.children.length === 0 ||
                      !allNoMenu(ssitem.children)) &&
                    (ssitem.menuType === '1' || ssitem.menuType === '4') &&
                    Number(ssitem.status)
                  "
                  :key="ssitem.id"
                  >{{ ssitem.name }}</el-menu-item
                >
              </template>
            </el-submenu>
            <!-- 停用菜单 -->
            <el-menu-item
              :index="index + '-' + sindex"
              class="closeMenu"
              v-if="Number(sitem.status) === 0"
              :key="sitem.id"
            >
              {{ sitem.name }}
            </el-menu-item>
            <el-menu-item
              @click.native="
                selectMenu(sitem, [
                  { menuId: 1, menuLabel: item.name },
                  { menuId: 2, menuLabel: sitem.name },
                ])
              "
              :index="index + '-' + sindex"
              v-if="
                (!sitem.children ||
                  sitem.children.length === 0 ||
                  !allNoMenu(sitem.children)) &&
                (sitem.menuType === '1' || sitem.menuType === '4') &&
                Number(sitem.status)
              "
              :key="sitem.id"
              >{{ sitem.name }}</el-menu-item
            >
          </template>
        </el-submenu>
      </el-menu>
    </div>
    <section
      class="sl-container"
      :class="{ 'sl-container2': menuType === '2' }"
      id="mainContainer"
    >
      <header class="sl-header">
        <div v-if="showIframe" class="sl-header-ul">
          <!-- <div class="sl-header-li-name">工业互联网平台 ICP-iCore 2.0</div> -->
          <!-- <div class="hnstLogo">
            <img src="../assets/img/logo_1.png" alt="" />
          </div> -->
          <!-- 下拉选择公司 -->
          <div
            class="company-select"
            v-if="companys !== '' && companys.length >= 1"
          >
            <span
              class="ifCompany el-dropdown-link"
              v-if="companys.length === 1">
              {{ companyName }}
              </span
            >
            <el-dropdown trigger="click" @command="selectComPany" v-else>
              <span class="el-dropdown-link">
                {{ companyName}}
                <i class="el-icon-arrow-down el-icon--right"></i>
              </span>
              <el-dropdown-menu slot="dropdown">
                <div v-for="item in companys" :key="item.id">
                  <el-dropdown-item :command="item">
                    {{
                    item.companyName
                  }}
                  </el-dropdown-item>
                </div>
              </el-dropdown-menu>
            </el-dropdown>
            <el-dropdown
              trigger="click"
              @command="selectOrg"
              v-if="orgDutyLinks.length > 0"
              :style="{
                marginLeft: !styleControll ? '50px' : '20px',
                fontSize: '12px',
              }"
            >
              <span class="el-dropdown-link"><!--<i class="el-icon-arrow-down el-icon--right"></i>-->
                {{ orgName }}
              </span>
              <el-dropdown-menu slot="dropdown">
                <div v-for="item in orgDutyLinks" :key="item.orgId">
                  <el-dropdown-item :command="item">{{
                    item.orgName
                  }}</el-dropdown-item>
                </div>
              </el-dropdown-menu>
            </el-dropdown>
            <!-- <span style="margin-left: 20px; font-size: 12px">{{
              dutyName
            }}</span> -->
          </div>
          <div class="sl-header-li-lgbc">
            <span class="icore-icons icore-icons-right-arrow am-xz"></span>
            <span class="sl-breadcrumb-text">当前位置:</span>
            <el-breadcrumb
              separator-class="el-icon-arrow-right"
              class="sl-breadcrumb-list"
            >
              <el-breadcrumb-item
                v-for="item in pageBreadcrumb"
                :key="'bdb' + item.menuId"
                >{{ item.menuLabel }}</el-breadcrumb-item
              >
            </el-breadcrumb>
          </div>
          <div class="sl-header-li-websocket" @mouseenter="updatecss" @mouseleave="leave">
            <el-badge
              :value="taskAllNum"
              :max="99"
              class="item"
              style="margin-right: 20px"
            >
              <el-button type="text" size="small" @click="goMyTaskPage"
                >待办任务</el-button
              >
            </el-badge>
            <div class="Web_Notice" v-show="socketshow">
              <div class="workspace_row-grid_mytask" >
                <div class="workspace_message" v-for="(item, index) in noticedata" :key="index" @click="seeTaskContent(item)">
                  <div class="workspace_message-title">
                    标题: {{ item.noticetitle }}
                  </div>
                  <div class="workspace_message-date">
                    时间:{{ item.inserttime }}
                  </div>
                  <div class="workspace_message-content">
                    内容:{{ item.noticecontent }}
                  </div>
                  <div class="workspace_message-from">
                    来自: {{ item.insertusername }}
                  </div>
                </div>
                <div class="workspace_replace_item"></div>
              </div>
            </div>
          </div>
          <div class="theme-defined">
            <div
              @click="fullScreenEvent"
              :class="fullScreen ? 'icore-return-screen' : 'icore-full-screen'"
              :title="fullScreen ? '退出全屏' : '全屏'"
            ></div>
            <div @click="themeEvent" class="icore-theme" title="主题"></div>
            <div @click="lockEvent" class="icore-lock" title="锁屏"></div>
            <div @click="backMain" class="icore-main" title="主页"></div>
          </div>
        </div>
      </header>
      <div class="sl-content-main">
        <template v-if="showIframe">
          <default-vue
            :menuData="menuData"
            @gotoSetPage="gotoSetPage"
            v-if="tabsData.length === 0"
          ></default-vue>
          <el-tabs
            id="menuTabId"
            v-show="tabsData.length > 0"
            v-model="selectedMenu"
            type="card"
            closable
            @tab-remove="removeTab"
            @tab-click="handleClick"
            style="padding: 10px 0px 0px; height: 100%"
          >
            <el-tab-pane
              :label="item.name"
              :name="item.menuId"
              :key="item.menuId"
              v-for="(item, index) in tabsData"
            >
              <span @contextmenu="rightShow($event, index, item)" slot="label">
                {{ item.name }}
              </span>
              <div class="pageBreadcrumb">
                {{ JSON.stringify(item.pageBreadcrumb) }}
              </div>
              <iframe
                :src="
                  isDev(item.menuUrl)
                    ? getDevUrl(item.menuUrl)
                    : toTrustUrl(item.menuUrl)
                "
                :style="minHeight"
              ></iframe>

            </el-tab-pane>
          </el-tabs>
          <div class="contextmenu">
            <el-dropdown
              trigger="click"
              @visible-change="visibleChange"
              @command="handleCommand"
            >
              <span class="el-dropdown-link" v-show="false">
                下拉菜单<i
                  id="setClick"
                  class="el-icon-arrow-down el-icon--right"
                ></i>
              </span>
              <el-dropdown-menu slot="dropdown">
                <el-dropdown-item command="a">关闭标签页</el-dropdown-item>
                <el-dropdown-item :disabled="tabsData.length === 1" command="b"
                  >关闭其他标签页</el-dropdown-item
                >
                <el-dropdown-item
                  :disabled="tabsData.length - menuTabIndex === 1"
                  command="c"
                  >关闭右侧标签页</el-dropdown-item
                >
                <el-dropdown-item command="d">刷新当前标签页</el-dropdown-item>
              </el-dropdown-menu>
            </el-dropdown>
          </div>
        </template>
        <transition
          enter-active-class="fade-in"
          leave-active-class="leave-immediately"
          :duration="{ enter: 400, leave: 100 }"
          ref="childrenPage"
        >
          <router-view
            @updateTaskNum="updateTaskNum"
            @updateMessageNum="updateMessageNum"
          >
          </router-view>
        </transition>
      </div>
    </section>
    <!--  -->
    <div
      is="usersAddAndEdit"
      v-if="userModal.show"
      :operate="'edit'"
      :operate1="'index'"
      :item="userInfo"
      @on-then="userModalThen"
      @on-close="userModalClose"
      @editFinish="updataUserInfo"
    ></div>
    <!--  -->
    <!-- 修改密码 -->
    <el-dialog
      ref="pwdModal"
      :visible.sync="pwdModal.show"
      class="oa-pwd-modal"
      title="修改密码"
      width="500px"
      @open="openPwd"
    >
      <el-form
        ref="pwdModal"
        :model="pwdModal.form"
        :rules="pwdModal.ruleValidate"
        label-width="120px"
        style="padding-right: 40px"
      >
        <el-form-item label="原密码" prop="userid" v-show="false">
          <el-input
            size="small"
            type="text"
            v-model="pwdModal.form.userid"
            :maxlength="64"
          ></el-input>
        </el-form-item>
        <el-form-item label="原密码" prop="prepassword">
          <el-input
            size="small"
            type="password"
            v-model="pwdModal.form.prepassword"
            :maxlength="64"
          ></el-input>
        </el-form-item>
        <el-form-item label="新密码" prop="newpassword">
          <el-input
            size="small"
            type="password"
            @input="inputThing"
            v-model="pwdModal.form.newpassword"
            :maxlength="64"
          ></el-input>
          <div
            class="strongBox"
            v-show="strongShow"
            :style="{ backgroundColor: strongColor }"
          >
            {{ strongText }}
          </div>
        </el-form-item>
        <el-form-item label="确认密码" prop="againNewpassword">
          <el-input
            size="small"
            type="password"
            v-model="pwdModal.form.againNewpassword"
            :maxlength="64"
          ></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button size="small" @click="pwdModal.show = false">取 消</el-button>
        <el-button
          size="small"
          :loading="pwdModal.loading"
          type="primary"
          @click="pwdSubmit('pwdModal')"
          >确 定</el-button
        >
      </div>
    </el-dialog>

    <!-- 锁屏 -->
    <el-dialog
      title="锁屏"
      v-if="lockEventFlag"
      :visible.sync="lockEventFlag"
      width="500px"
    >
      <el-form
        :model="lockRuleForm"
        :rules="lockRules"
        ref="lockRuleForm"
        label-width="150px"
      >
        <el-form-item label="锁屏密码" prop="pwd">
          <el-input
            :class="checkedByLogin ? 'lockInput' : ''"
            :disabled="checkedByLogin"
            @keyup.enter.native="lockEventSet"
            v-model="lockRuleForm.pwd"
            style="width: 250px"
          ></el-input>
          <el-checkbox v-model="checkedByLogin">使用登录密码</el-checkbox>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="lockEventFlag = false">取 消</el-button>
        <el-button type="primary" @click="lockEventSet">确 定</el-button>
      </div>
    </el-dialog>
    <!-- /修改密码 -->
    <div v-if="lockScreenPwd" class="lock_screen">
      <div
        v-if="lockErrorMsg"
        class="el-message el-message--error"
        style="z-index: 2033"
      >
        <i class="el-message__icon el-icon-error"></i>
        <p class="el-message__content">密码错误!</p>
      </div>
      <div
        style="
          margin: 0 auto;
          width: 300px;
          position: relative;
          top: 45%;
          transform: translateY(-50%);
        "
      >
        <div>
          <el-input
            ref="lockInput"
            class="lockInput"
            placeholder="请输入密码"
            @keyup.enter.native="setLock"
            type="text"
            v-model="inputLockPwd"
          >
            <template slot="append">
              <div @click="setLock" class="lock_route">
                <i class="el-icon-back"></i>
              </div>
            </template>
          </el-input>
        </div>

        <div style="padding: 10px">
          忘记密码?
          <a
            @click="lockSignOut"
            style="text-decoration: underline; color: #409eff; cursor: pointer"
            >退出登录</a
          >
        </div>
      </div>
    </div>
    <!-- 切换主题 -->
    <el-dialog
      title="选择主题"
      v-if="themeSetFlag"
      :visible.sync="themeSetFlag"
      width="30%"
    >
      <el-radio-group v-model="current_theme">
        <el-radio
          :label="theme.label"
          :key="theme.label"
          v-for="theme in theme_group"
          >{{ theme.desc }}</el-radio
        >
      </el-radio-group>
      <div slot="footer" class="dialog-footer"></div>
    </el-dialog>
    <!-- 权限被修改 -->
    <el-dialog
      v-if="privilegeUpdateIfo"
      :visible.sync="privilegeUpdateIfo"
      width="35%"
      top="20vh"
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      :show-close="false"
      class="privilegeArea"
    >
      <span v-if="closeSecond > 0" style="font-size: 18px; color: #333">
        <i class="el-icon-warning"></i>
        {{ " 您的权限已被管理员修改," + closeSecond + "s后将自动退出" }}
      </span>
      <span v-else style="font-size: 20px; color: #f56c6c">
        <i class="el-icon-loading"></i>
        {{ "正在为您退出,请稍后..." }}
      </span>
      <div slot="footer" class="dialog-footer" v-if="closeSecond > 0">
        <el-button type="primary" size="small" @click="closeConfirm"
          >确 定</el-button
        >
      </div>
    </el-dialog>

    <!--通知-->
<!--    <div class="Web_Notice">
      <span class="margin_R10">
        <i class="el-icon-message iconImg"></i>
        <el-badge :value="taskAllNum" :max="99" :hidden="taskAllNum < 1"></el-badge>
      </span>
    </div>-->
  </div>
</template>

<script>
import element_css_json_import from "../assets/json/element_css.js";
import objectAssign from "object-assign";
import generateColors from "./utils/color";
import usersAddAndEdit from "@/views/systemConfig/components/usersAddAndEdit.vue";
import { getCookie } from "@/utils/util.js";
import { checkCharLength } from "@/utils/validator.js";
import store from "@/store/index.js";
//  字典数据
import dataDictionary from "@/store/dataDictionary.js";
// import defaultVue from "./defaultVue.vue";
import defaultVue from '@/views/homepage/components/homepage.vue'
import { proPath } from "@/config/config.js";
import draggable from "vuedraggable";
export default {
  components: {
    usersAddAndEdit,
    defaultVue,
  },
  data() {
    const validateLockPass = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请输入锁屏密码"));
      } else {
        let reg = /^[A-Za-z0-9]+$/;
        if (!reg.test(value)) {
          return callback(new Error("请输入英文和数字"));
        }
        callback();
      }
    };
    const validatePass = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请输入新密码"));
      } else {
        if (this.regular !== "") {
          let reg = eval("/" + this.regular + "/");
          if (!reg.test(value)) {
            let message =
              this.regularType === 1
                ? "至少包含英文、数字、特殊符号中的两种!"
                : "";
            message +=
              "长度需在" + this.minLength + "-" + this.maxLength + "之间";
            return callback(new Error(message));
          }
        } else {
          this.getPwdValid();
          this.$refs.pwdModal.validateField("newpassword");
        }
        // let reg = /^[A-Za-z0-9]+$/
        // if (!reg.test(value)) {
        //   return callback(new Error('请输入英文和数字'));
        // }
        if (this.pwdModal.form.againNewpassword !== "") {
          // 对第二个密码框单独验证
          this.$refs.pwdModal.validateField("againNewpassword");
        }
        callback();
      }
    };
    const validatePassCheck = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请再次输入新密码"));
      } else if (value !== this.pwdModal.form.newpassword) {
        callback(new Error("两次输入密码不一致"));
      } else {
        callback();
      }
    };
    return {
      dutyName: "",
      regular: "", // 密码策略校验正则表达式
      regularType: "",
      minLength: 0,
      maxLength: 0,
      websocket: "",
      interval: "",
      companys: [], // 用户公司列表
      companyId: "", // 选择公司Id
      companyName: "", // 选择公司名称
      checkedByLogin: false,
      strongShow: false,
      digit: false,
      strongText: "",
      strongColor: "",
      originalStyle: "",
      colors: {
        primary: "#20a0ff",
      },
      theme_color: "#409EFF",
      current_theme: "deepBlue_theme",
      theme_group: [
        {
          label: "basic_theme",
          desc: "默认主题",
        },
        {
          label: "green_theme",
          desc: "护眼主题",
        },
        {
          label: "deepBlue_theme",
          desc: "深蓝色主题",
        },
        {
          label: "dark_theme",
          desc: "黑色主题",
        },
        {
          label: "red_theme",
          desc: "红色主题",
        },
        {
          label: "Cyan_theme",
          desc: "青色主题",
        },
        {
          label: "yellow_theme",
          desc: "黄色主题",
        },
      ],
      theme_origin_color: {
        basic_theme: "#409EFF",
        deepBlue_theme: "#072ec5",
        dark_theme: "#000000",
        red_theme: "#F20808",
        green_theme: "#008000",
        Cyan_theme:"#00ffff",
        yellow_theme:"#FFFF00"
      },
      themeSetFlag: false,
      lockErrorMsg: false,
      inputLockPwd: "",
      lockScreenPwd: window.top.localStorage.getItem("lockpwd"),
      lockEventFlag: false,
      lockRuleForm: {
        pwd: "",
      },
      lockRules: {
        pwd: [
          {
            required: true,
            message: "请输入锁屏密码",
            trigger: "blur",
          },
          {
            min: 1,
            max: 128,
            message: "长度在 1 到 128 个字符",
            trigger: "change",
          },
          {
            validator: validateLockPass,
            trigger: "change",
          },
        ],
      },
      fullScreen: false,
      minHeight: "width: 100%;height: 100%;border: 0px;min-height: 777px",
      menuTabIndex: 0,
      pageBreadcrumb: [
        {
          menuId: 1,
          menuLabel: "首页",
        },
      ],
      widthLog: "",
      leftLog: "",
      dragFlag: false,
      store,
      dataDictionary,
      showIframe: false,
      selectedMenu: "",
      menuType: "2",
      menuData: store.state.routes,
      tabsData: [],
      userInfo: {},
      userModal: {
        show: false,
      },
      //  修改密码
      pwdModal: {
        loading: false,
        show: false,
        form: {
          userid: "",
          prepassword: "",
          newpassword: "",
          //  重复密码
          againNewpassword: "",
        },
        ruleValidate: {
          prepassword: [
            {
              required: true,
              message: "原密码不能为空",
              trigger: "blur",
            },
          ],
          newpassword: [
            {
              required: true,
              message: "新密码不能为空",
              trigger: "blur",
            },
            // { type: 'string', max: 64, message: '密码不能多于64个字符', trigger: 'blur' },
            {
              validator: validatePass,
              trigger: "blur",
            },
          ],
          againNewpassword: [
            {
              required: true,
              message: "确认密码不能为空",
              trigger: "blur",
            },
            // { type: 'string', max: 64, message: '密码不能多于64个字符', trigger: 'blur' },
            {
              validator: validatePassCheck,
              trigger: "blur",
            },
          ],
        },
      },
      inter: undefined,
      task1Num: 0, // 我的待办任务
      task2Num: 0, // 委托待办任务
      myMessageLength: 0, // 我收到的公告
      privilegeUpdateIfo: false, // 权限被修改后退出提示框
      closeSecond: 5, // 系统退出倒计时
      mainPageList: [], //设为主页的菜单页面
      orgName: "",
      orgId: "",
      orgCode: "",
      orgDutyLinks: [],
      styleControll: false,
      dutyId: "",
      appId: '',
      defaultActiveIndex: '',
      taskAllNum: '',//任务数目
      socketshow: false,//通知框的显示
      orgcodezs: '',//cookie中的orgcode
      noticedata: [],//通知的数据
    };
  },
  created() {
    this.current_theme = window.top.localStorage.getItem("current_theme")
      ? window.top.localStorage.getItem("current_theme")
      : "deepBlue_theme";
    this.theme_color = this.theme_origin_color[this.current_theme];
    this.getIndexStyle();
    let w = document.documentElement.clientWidth || document.body.clientWidth;
    let h = document.documentElement.clientHeight || document.body.clientHeight;
    if (w <= 1500) {
      this.styleControll = true;
    } else {
      this.styleControll = false;
    }
    this.getinformation();
  },
  destroyed() {
    // 销毁浏览器返回监听
    // window.removeEventListener('popstate', this.goBack, false);
    clearInterval(this.inter);
    // 销毁websocket监听
    // this.websocket.onclose = this.close();
  },
  computed: {},
  beforeCreate() {
    let userId = getCookie("userId");
    this.appId = getCookie("appId");
    this.orgcodezs=getCookie("orgCode");
    let menuId = window.top.localStorage.getItem("activeMenu");
    let companyId = window.top.localStorage.getItem("companyId");
  },
  watch: {
    checkedByLogin: function (n) {
      if (n) {
        try {
          this.lockRuleForm.pwd = JSON.parse(getCookie("userInfo")).password;
        } catch (error) {
          this.lockRuleForm.pwd = "";
        }
      } else {
        this.lockRuleForm.pwd = "";
      }
    },
    theme_color: function (newV, oldV) {
      let that = this;
      that.colors.primary = newV;
      console.log(newV);
      console.log($(document.getElementsByTagName("iframe")));
      window.colorVal = newV;
      that.primaryColor = this.colors.primary;
      that.colors = objectAssign(
        {},
        that.colors,
        generateColors(that.colors.primary)
      );
      let theme_style = that.originalStyle;
      Object.keys(that.colors).forEach((key) => {
        theme_style = theme_style.replace(
          new RegExp("(:|\\s+)" + key, "g"),
          "$1" + that.colors[key]
        );
      });
      that.loadNewStyle(document, theme_style);
      for (let i = 0; i < document.getElementsByTagName("iframe").length; i++) {
        try {
          that.loadNewStyle(
            document.getElementsByTagName("iframe")[i].contentDocument,
            theme_style
          );
        } catch (err) {}
      }
    },
    current_theme: function (n) {
      let that = this;
      window.top.localStorage.setItem("current_theme", n);
      that.theme_color = that.theme_origin_color[n];
      console.log(that.theme_color)
      console.log('这是')
      for (let i = 0; i < document.getElementsByTagName("iframe").length; i++) {
         console.log(document
            .getElementsByTagName("iframe")
            [i].contentDocument.getElementsByClassName(
              "mainVueIndex"
            )[0].className)
        try {
          document
            .getElementsByTagName("iframe")
            [i].contentDocument.getElementsByClassName(
              "mainVueIndex"
            )[0].className = "main mainVueIndex " + n;
        } catch (err) {}
      }
    },
    menuType: function (newV, oldV) {
      let that = this;
      if (newV === "2") {
        that.$nextTick(function () {
          $(".icore-menu-main2").css({
            width: that.widthLog,
          });
          $(".sl-container2").css({
            "padding-left": that.leftLog,
          });
          $(".oa-header-user").css({
            width: that.widthLog,
          });
          $(".oa-header-upt").css({
            width: "",
          });
          that.setDrag();
        });
      } else {
        that.widthLog = $(".icore-menu-main2").css("width");
        that.leftLog = $(".sl-container2").css("padding-left");
        $(".icore-menu-main2").css({
          width: "",
        });
        $(".sl-container2").css({
          "padding-left": "",
        });
        $(".oa-header-user").css({
          width: "80px",
        });
        $(".oa-header-upt").css({
          width: "80px",
        });
      }
    },
    selectedMenu: function(menuId){
      var currentMenu = this.getMenuIndexByMenuId(this.menuData,  null, menuId);
      currentMenu && window.top.localStorage.setItem("currentMenuIndex", currentMenu.menuIndex);
    }
  },
  mounted() {
    let that = this;
    window.onresize = function () {
      let isFull =
        document.fullscreen ||
        document.webkitIsFullScreen ||
        document.msFullscreenEnabled;
      isFull = isFull ? true : false;
      if (that.fullScreen !== isFull) {
        //要执行的动作
        that.fullScreen = isFull;
      }
    };
    // // 监控浏览器返回
    // if (window.history && window.history.pushState) {
    //     history.pushState(null, null, document.URL);
    //     window.addEventListener('popstate', this.goBack, false);
    // }

    //  取字典(用处不明,且加入租户id后报错!!!!!暂时注释掉!!!!!!!!!!)
    // this.dataDictionary.dispatch('list').then(() => {
    //   // console.log(this.dataDictionary.state.dict)
    // });
    this.showIframeEvent();
    this.$nextTick(() => {
      this.minHeight =
        "width: 100%;height: 100%;border: 0px;min-height: " +
        ($("#menuTabId").height() - 91) +
        "px";
      that.checkedByLogin = true;
    });

    // 获取公司信息
    this.companyId = window.top.localStorage.getItem("companyId");
    this.companys = JSON.parse(window.top.localStorage.getItem("companys"));
    if (this.companyId !== "" && this.companyId !== null) {
      this.companyName = this.companys.find(
        (x) => x.id === this.companyId
      ).companyName;
    }
    setTimeout(() => {
      this.current_theme = window.top.localStorage.getItem("current_theme")
        ? window.top.localStorage.getItem("current_theme")
        : "deepBlue_theme";
    }, 1000);
    // 获取我的待办任务
    var arr = ["#/authManage"];
    if($.inArray(location.hash, arr) == -1){
        //that.getMyToDoDelegateTask();
        //that.getMyToDoTask();
    }

    that.getMyMessage();
    // 直接关闭浏览器窗口或者标签页时,关闭websocket连接
    // window.onbeforeunload = function () {
    //     // that.send("closesocket:");
    //     that.close();
    // }
    // 获取当前密码策略校验
    that.getPwdValid();
    // 获取机构职级
    that.getOrgDutyList();
  },
  methods: {
    // 判断是否为公司其他平台模块且处于开发模式
    isDev(url) {
      let isDevModule = false;
      if (
        url.indexOf("steerinfo.com") !== -1 &&
        document.domain.indexOf("steerinfo.com") === -1
      ) {
        isDevModule = true;
      }
      return isDevModule;
    },
    // 根据当前模式更改菜单跳转url
    getDevUrl(url) {
      let newUrl = "";
      let index = url.indexOf("steerinfo.com");
      return (newUrl = url
        .substring(index)
        .replace("steerinfo.com/views", "."));
    },
    // 根据https/http跳转
    toTrustUrl(url) {
      let newUrl = "";
      if (url.indexOf("https:") === -1 && url.indexOf("http:") > -1) {
        newUrl = url.replace("http:", window.top.location.protocol);
      } else if (url.indexOf("https:") > -1) {
        newUrl = url.replace("https:", window.top.location.protocol);
      } else {
        newUrl = url;
      }
      return newUrl;
    },
    // 获取当前密码策略
    getPwdValid() {
      this.axios
        .get("pass/v1/syspwdpolicys/getExecutingPwdPolicy")
        .then((res) => {
          if (res.code === "0") {
            this.regular = res.data.regular;
            this.regularType = res.data.regularType;
            this.minLength = res.data.minLength;
            this.maxLength = res.data.maxLength;
          } else {
            this.$message.error(res.message);
          }
        })
        .catch((err) => {
          console.log(err);
        });
    },
    /**
     * 样式加载
     *
     */
    loadNewStyle(doc, theme_style) {
      let child = doc.getElementById("theme");
      if (child !== null) {
        doc.getElementsByTagName("head")[0].removeChild(child);
      }
      let a = document.createElement("style");
      a.setAttribute("id", "theme");
      a.innerHTML = theme_style;
      doc.getElementsByTagName("head")[0].appendChild(a);
    },
    // 验证密码强度的事件
    inputThing(val) {
      let _this = this;
      let arr = [];
      let i = 0;
      arr[0] = /[^a-zA-Z0-9_]/g;
      arr[1] = /[a-z]/g;
      arr[2] = /[0-9]/g;
      arr[3] = /[A-Z]/g;
      if (val.length >= 6) {
        arr.forEach((res) => {
          if (val.match(res)) {
            i++;
          }
        });
        switch (i) {
          case 0:
            _this.strongShow = false;
            break;
          case 1:
            _this.strongShow = true;
            _this.strongText = "弱";
            _this.strongColor = "#F26299";
            _this.digit = true;
            break;
          case 2:
            _this.strongShow = true;
            _this.strongText = "中";
            _this.strongColor = "#F29E55";
            break;
          case 3:
            _this.strongShow = true;
            _this.strongText = "强";
            _this.strongColor = "#4CD995";
            break;
        }
      } else if (!val) {
        _this.strongShow = false;
      } else {
        _this.strongShow = true;
        _this.strongText = "弱";
        _this.strongColor = "#F26299";
        _this.digit = false;
      }
    },
    /**
     * 加载全局样式;
     */
    getStyleTemplate(data) {
      const colorMap = {
        "#3a8ee6": "shade-1",
        "#409eff": "primary",
        "#53a8ff": "light-1",
        "#66b1ff": "light-2",
        "#79bbff": "light-3",
        "#8cc5ff": "light-4",
        "#a0cfff": "light-5",
        "#b3d8ff": "light-6",
        "#c6e2ff": "light-7",
        "#d9ecff": "light-8",
        "#ecf5ff": "light-9",
      };
      Object.keys(colorMap).forEach((key) => {
        const value = colorMap[key];
        data = data.replace(new RegExp(key, "ig"), value);
      });
      return data;
    },

    getIndexStyle() {
      let data = `@charset "UTF-8"; ${element_css_json_import.element_css}`;
      this.originalStyle = this.getStyleTemplate(data);
    },
    /**
     * 解除锁屏
     *
     */
    setLock() {
      let that = this;
      let crypto = require("crypto");
      if (
        that.lockScreenPwd === that.inputLockPwd ||
        that.lockScreenPwd ===
          crypto.createHash("sha1").update(that.inputLockPwd).digest("hex")
      ) {
        window.top.localStorage.setItem("lockpwd", "");
        that.lockScreenPwd = "";
        that.inputLockPwd = "";
      } else {
        that.inputLockPwd = "";
        that.lockErrorMsg = true;
        setTimeout(() => {
          that.lockErrorMsg = false;
        }, 1000);
      }
    },
    /**
     * 锁屏退出登录
     */
    lockSignOut() {
      let that = this;
      that.store
        .dispatch("loginOut")
        .then(function (res) {
          window.location.href = "./index.html";
        })
        .catch(function () {
          // TODO
        });
    },
    /**
     *打开主页
     */
    backMain() {
      this.$message.success('跳转主页');
      // window.open(
      //   window.location.protocol + "//portal.steerinfo.com",
      //   "_blank"
      // );
    },
    /**
     * 主题
     */
    themeEvent() {
      let that = this;
      that.themeSetFlag = true;
    },
    /**
     * 锁屏
     */
    lockEvent() {
      let that = this;
      if (!that.checkedByLogin) {
        that.lockRuleForm.pwd = "";
      }
      that.lockEventFlag = true;
    },
    lockEventSet() {
      let that = this;
      this.$refs.lockRuleForm.validate((valid) => {
        if (valid) {
          window.top.localStorage.setItem("lockpwd", that.lockRuleForm.pwd);
          that.lockScreenPwd = that.lockRuleForm.pwd;
          that.lockEventFlag = false;
          that.$nextTick(() => {
            that.$refs.lockInput.focus();
          });
        } else {
          return false;
        }
      });
    },
    /*
        全屏
        */
    fullScreenEvent() {
      let that = this;
      let main = document.documentElement;
      if (that.fullScreen) {
        if (document.exitFullscreen) {
          document.exitFullscreen();
        } else if (document.mozCancelFullScreen) {
          document.mozCancelFullScreen();
        } else if (document.webkitCancelFullScreen) {
          document.webkitCancelFullScreen();
        } else if (document.msExitFullscreen) {
          document.msExitFullscreen();
        }
      } else {
        if (main.requestFullscreen) {
          main.requestFullscreen();
        } else if (main.mozRequestFullScreen) {
          main.mozRequestFullScreen();
        } else if (main.webkitRequestFullScreen) {
          main.webkitRequestFullScreen();
        } else if (main.msRequestFullscreen) {
          main.msRequestFullscreen();
        }
      }
      that.fullScreen = !that.fullScreen;
    },
    // 下拉选择公司
    selectComPany(command) {
      this.$confirm("此操作将刷新系统页面, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.companyId = command.id;
          this.companyName = command.companyName;
          //  查询列表
          this.store
            .dispatch("generateRoutes", {
              companyId: command.id,
              appId: this.appId
            })
            .then((res) => {
              if (res.code === "0") {
                this.store.commit("addRouters", res.data);
              } else {
                this.$message({
                  message: res.message,
                  type: "error",
                });
              }
            });
          window.top.localStorage.setItem("companyId", command.id);
          window.location.reload();
          this.$message({
            type: "success",
            message: "正在为您更新数据...",
          });
        })
        .catch((error) => {
          console.log(error);
          this.$message({
            type: "info",
            message: "已取消操作",
          });
        });
    },
    selectOrg(command) {
      this.$confirm("此操作将切换用户所在机构及职级, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.orgName = command.orgName;
          this.orgId = command.orgId;
          this.dutyName = command.dutys ? command.dutys[0].dutyName : "";
          this.dutyId = command.dutys ? command.dutys[0].dutyId : "";
          window.top.localStorage.setItem("dutyName", this.dutyName);
          window.top.localStorage.setItem("dutyId", this.dutyId);
          window.top.localStorage.setItem("orgId", command.orgId);
          window.top.localStorage.setItem("orgCode", command.orgCode);
          window.location.reload();
          this.$message({
            type: "success",
            message: "正在为您更新数据...",
          });
          this.updateUserInfo();
        })
        .catch((error) => {
          console.log(error);
          this.$message({
            type: "info",
            message: "已取消操作",
          });
        });
    },
    // 更新用户当前机构及职级
    async updateUserInfo() {
      // do
    },
    getOrgDutyList() {
      let that = this;
      that.axios
        .get("pass/v1/sysorgs/findOrgs?companyId=" + this.companyId)
        .then((res) => {
          if (res.code === "0") {
            this.orgDutyLinks = res.data;
            if (this.orgDutyLinks.length > 0) {
              let orgId = window.top.localStorage.getItem("orgId");
              if (orgId && orgId !== "" && orgId !== null) {
                let obj = this.orgDutyLinks.find((x) => x.orgId === orgId);
                if (obj) {
                  this.orgId = orgId;
                  this.orgName = obj.orgName;
                  this.orgCode = obj.orgCode;
                  this.dutyName = obj.dutys ? obj.dutys[0].dutyName : "";
                  this.dutyId = obj.dutys ? obj.dutys[0].dutyId : "";
                } else {
                  this.orgName = res.data[0].orgName;
                  this.orgId = res.data[0].orgId;
                  this.orgCode = res.data[0].orgCode;
                  this.dutyName = res.data[0].dutys
                    ? res.data[0].dutys[0].dutyName
                    : "";
                  this.dutyId = res.data[0].dutys
                    ? res.data[0].dutys.dutyId
                    : "";
                }
              } else {
                this.orgName = res.data[0].orgName;
                this.orgId = res.data[0].orgId;
                this.orgCode = res.data[0].orgCode;
                this.dutyName = res.data[0].dutys
                  ? res.data[0].dutys[0].dutyName
                  : "";
                this.dutyId = res.data[0].dutys
                  ? res.data[0].dutys[0].dutyId
                  : "";
                this.updateUserInfo();
              }
              window.top.localStorage.setItem("orgId", this.orgId);
              window.top.localStorage.setItem("orgCode", this.orgCode);
              window.top.localStorage.setItem("dutyName", this.dutyName);
              window.top.localStorage.setItem("dutyId", this.dutyId);
            }
          } else {
            this.$message.error(res.message);
          }
        })
        .catch((err) => {
          console.log(err);
        });
    },
    visibleChange(f) {
      let that = this;
      if (!f) {
        $(".contextmenu").css({
          display: "none",
        });
      }
    },
    handleCommand(command) {
      let that = this;
      switch (command) {
        case "a": //关闭当前标签
          $("#menuTabId .el-icon-close").eq(that.menuTabIndex).click();
          break;
        case "b": //关闭其他标签
          var removeTarget = [];
          var len = that.tabsData.length - that.menuTabIndex - 1;
          for (let i = 0; i < len; i++) {
            removeTarget.push(
              $("#menuTabId .el-icon-close").eq(that.menuTabIndex + i + 1)
            );
          }
          for (let i = 0; i < that.menuTabIndex; i++) {
            removeTarget.push($("#menuTabId .el-icon-close").eq(i));
          }
          for (let i = 0; i < removeTarget.length; i++) {
            $(removeTarget[i]).click();
          }
          break;
        case "c": //关闭右侧标签
          var removeTarget = [];
          var len = that.tabsData.length - that.menuTabIndex - 1;
          for (let i = 0; i < len; i++) {
            removeTarget.push(
              $("#menuTabId .el-icon-close").eq(that.menuTabIndex + i + 1)
            );
          }
          for (let i = 0; i < removeTarget.length; i++) {
            $(removeTarget[i]).click();
          }
          break;
        case "d": // 刷新当前标签页
          $("#menuTabId .el-tabs__item").eq(that.menuTabIndex).click();
          $("#menuTabId iframe")
            .eq(that.menuTabIndex)[0]
            .contentWindow.location.reload(true);
          break;
      }
    },
    // 右键菜单
    rightShow($event, index, item) {
      let that = this;
      that.menuTabIndex = index;
      $(".contextmenu").css({
        left: $event.pageX + 120 + "px",
        top: $event.pageY + "px",
        display: "block",
      });
      $("#setClick").click();
      $event.preventDefault();
    },

    gotoSetPage(item) {
      let that = this;
      let menuData = item.preTarget;
      if (!menuData) {
        return;
      }
      that.tabsData.push(menuData);
      that.selectedMenu = menuData.menuId;
      that.pageBreadcrumb = item.pageBreadcrumb;
      that.axios
        .post(proPath + "v1/sysmenus/accessOwnAdd", {
          userId: that.$store.state.userInfo.userId,
          menuId: menuData.menuId,
        })
        .then(function (response) {})
        .catch(function () {});
    },
    //  判断是否在iframe下
    showIframeEvent() {
      var that = this;
      var thisDocument = document;
      try {
        var topDocument = window.top.document;
      } catch (err) {
        thisDocument.getElementsByClassName(
          "icore-menu-main"
        )[0].style.display = "none";
        thisDocument.getElementsByClassName("sl-header")[0].style.display =
          "none";
        thisDocument.getElementById("mainContainer").style.padding = "0px";
        return;
      }
      var routerCover = this.$router.history.current.query;
      var routerParams = this.$router.history.current.params;
      var routerFlag = 0;
      var routerFlagP = 0;
      for (var i in routerCover) {
        routerFlag = routerFlag + 1;
      }
      for (var j in routerParams) {
        routerFlagP = routerFlagP + 1;
      }

      that.showIframe =
        thisDocument === topDocument && routerFlag === 0 && routerFlagP === 0;

      if (that.showIframe) {
        that.getUserInfo();
        thisDocument.getElementById("mainContainer").style["padding-left"] =
          "179px";
        // websocket初始化
        let token = getCookie("accessToken");
        if (token) {
          this.init(token);
        }
        // 打开设为主页的菜单
        // that.openMainPage();

        // 自动打开上一次访问页面
        that.autoOpenLatestPage();
      }

      if (routerFlag > 0 || routerFlagP > 0) {
        that.menuType = "1";
      }
      var setShowIframe = setInterval(function () {
        for (
          let i = 0;
          i < window.top.document.getElementsByTagName("iframe").length;
          i++
        ) {
          if (
            window.top.document.getElementsByTagName("iframe")[i]
              .contentDocument !== null &&
            window.top.document
              .getElementsByTagName("iframe")
              [i].contentDocument.getElementsByClassName("icore-menu-main")
              .length > 0
          ) {
            $(
              window.top.document.getElementsByTagName("iframe")[i].parentNode
                .parentNode
            ).css({
              height: "calc(100% - 31px)",
            });
            $(
              window.top.document.getElementsByTagName("iframe")[i].parentNode
            ).css({
              height: "100%",
            });
            window.top.document
              .getElementsByTagName("iframe")
              [i].contentDocument.getElementsByClassName(
                "icore-menu-main"
              )[0].style.display = "none";
            window.top.document
              .getElementsByTagName("iframe")
              [i].contentDocument.getElementsByClassName(
                "sl-header"
              )[0].style.display = "none";
            window.top.document
              .getElementsByTagName("iframe")
              [i].contentDocument.getElementsByClassName(
                "sl-content-main"
              )[0].style.height = "100%";
            window.top.document
              .getElementsByTagName("iframe")
              [i].contentDocument.getElementById(
                "mainContainer"
              ).style.padding = "0px";
            if (
              i ===
              window.top.document.getElementsByTagName("iframe").length - 1
            ) {
              clearInterval(setShowIframe);
            }
          }
        }
        if (window.top.document.getElementsByTagName("iframe").length === 0) {
          if (!that.showIframe) {
            thisDocument.getElementById("mainContainer").style["padding-left"] =
              "0px";
            thisDocument.getElementsByClassName(
              "sl-content-main"
            )[0].style.height = "100%";
          }
          clearInterval(setShowIframe);
        }
      }, 20);
      that.setDrag();
    },
    handleOperate() {
      setTimeout(() => {
        this.$nextTick(() => {
          let heightOld = $(".icore-menu-main")[0].clientHeight;
          let height = $(".icore-menu-main")[0].scrollHeight;
          if (height !== 0) {
            // 菜单收缩后scrollHeight复原
            window.top.document.getElementsByClassName(
              "menuDrag"
            )[0].style.height = heightOld + "px";
            // 再次赋值
            let heightNew = $(".icore-menu-main")[0].scrollHeight;
            window.top.document.getElementsByClassName(
              "menuDrag"
            )[0].style.height = heightNew + "px";
          }
        });
      }, 500);
    },
    setDrag() {
      let that = this;
      if (that.showIframe) {
        that.$nextTick(() => {
          window.top.document.getElementsByClassName(
            "menuDrag"
          )[0].style.height = $(".icore-menu-main")[0].scrollHeight + "px";
        });
      }
      $("#menuDrag").unbind();
      $("#menuDrag").mousedown(function (event) {
        that.dragFlag = true;
        $(event.target).data("dragStart", event.pageX);
        $(event.target).data("dragWidth", $(".icore-menu-main2").outerWidth());
        $("body").css({
          cursor: "col-resize",
        });
        let _html =
          '<div id="dragsc" style="height: 100%;width: 100%;position: absolute;top: 0;z-index: 888;"></div>';
        $("body").append(_html);
        $("body").mousemove(function (e) {
          if (!that.dragFlag) {
            $(this).css({
              cursor: "",
            });
            $("#dragsc").remove();
            $(this).unbind(e);
          } else {
            var startX = $("#menuDrag").data("dragStart");
            var endX = e.pageX;
            var change = endX - startX;
            var containerWidth = $("#menuDrag").data("dragWidth");
            // console.log('containerWidth + change = ' + (containerWidth + change))
            if (containerWidth + change < 180) {
              $(".icore-menu-main2").css({
                width: "180px",
              });
              $(".oa-header-user").css({
                width: "",
              });
              $(".sl-container2").css({
                "padding-left": "179px",
              });
            } else if (containerWidth + change <= 800) {
              $(".icore-menu-main2").css({
                width: containerWidth + change + "px",
              });
              $(".sl-container2").css({
                "padding-left": containerWidth + change - 1 + "px",
              });
              $(".oa-header-user").css({
                width: containerWidth + change + "px",
              });
            }
          }
        });
        $("body").mouseup(function (ev) {
          that.dragFlag = false;
          $(this).unbind(ev);
        });
      });
    },
    //  tabs选项选择
    handleClick(tab, event) {
      let that = this;
      let pageBreadcrumb = $($(".pageBreadcrumb")[parseInt(tab.index)]).html();
      that.pageBreadcrumb = JSON.parse(pageBreadcrumb);
      window.top.localStorage.setItem("activeMenu", tab.name);
      that.menuTabIndex = that.getTabIndex(tab.name);
      for (let i = 0; i < this.mainPageList.length - 1; i++) {
        if (
          tab.name === this.mainPageList[i].menuId &&
          this.mainPageList[i].mainPageLoading === true
        ) {
          $("#menuTabId iframe")
            .eq(that.menuTabIndex)[0]
            .contentWindow.location.reload(true);
          this.mainPageList[i].mainPageLoading = false;
        }
      }
    },
    removeTab(targetName) {
      var that = this;
      var spliceIndex = null;
      var temp = [];
      for (let i = 0; i < this.mainPageList.length - 1; i++) {
        if (targetName === this.mainPageList[i].menuId) {
          this.mainPageList[i].mainPageLoading = false;
        }
      }
      for (var i = 0; i < that.tabsData.length; i++) {
        temp.push(that.tabsData[i]);
        if (targetName === that.tabsData[i].menuId) {
          spliceIndex = i;
        }
      }
      if (spliceIndex !== null) {
        temp.splice(spliceIndex, 1);
      }
      if (that.selectedMenu === that.tabsData[spliceIndex].menuId) {
        if (temp.length !== 0) {
          var showIndex = spliceIndex;
          if (showIndex > temp.length - 1) {
            showIndex = temp.length - 1;
          }
          that.selectedMenu = temp[showIndex].menuId;
          window.top.localStorage.setItem("activeMenu", that.selectedMenu);
          that.pageBreadcrumb = temp[showIndex].pageBreadcrumb;
        } else {
          that.pageBreadcrumb = [
            {
              menuId: 1,
              menuLabel: "首页",
            },
          ];
          window.top.localStorage.setItem("currentMenuIndex","");
        }
      }
      that.tabsData = temp;
    },
    //  菜单选择
    selectMenu(menuData, pageBreadcrumb) {
      console.log('menuData')
      console.log(menuData);
      // console.log(pageBreadcrumb)
      var that = this;
      if (
        menuData.menuUrl !== null &&
        menuData.menuUrl !== "" &&
        typeof menuData.menuUrl !== "undefined"
      ) {
        window.top.localStorage.setItem("activeMenu", menuData.menuId);
        var temp = [];
        menuData.pageBreadcrumb = pageBreadcrumb;
        var setTabsFlag = true;
        for (var i = 0; i < that.tabsData.length; i++) {
          if (menuData.menuId === that.tabsData[i].menuId) {
            setTabsFlag = false;
            break;
          }
        }
        if (setTabsFlag) {
          for (var j = 0; j < that.tabsData.length; j++) {
            temp.push(that.tabsData[j]);
          }
          temp.push(menuData);
          that.tabsData.push(menuData);
        }
        that.selectedMenu = menuData.menuId;
        that.pageBreadcrumb = pageBreadcrumb;
        that.axios
          .post(proPath + "v1/sysmenus/accessOwnAdd", {
            userId: that.$store.state.userInfo.userId,
            menuId: menuData.menuId,
          })
          .then(function (response) {})
          .catch(function () {});
        this.$nextTick(() => {
          console.log($(document.getElementsByTagName("iframe")));
        });
      }
      //   console.log('目录', that.selectedMenu, that.tabsData)
      // 左侧菜单点击切换的时候需要重新加载页面
      that.menuTabIndex = that.getTabIndex(menuData.menuId);
      $("#menuTabId iframe").eq(that.menuTabIndex).length && $("#menuTabId iframe").eq(that.menuTabIndex)[0].contentWindow.location.reload(true);
    },
    //  是否合部都不是菜单就不用显示
    allNoMenu(items) {
      let bol = false;
      for (let item of items) {
        if (item.menuType === "1" || item.menuType === "4") {
          //  有菜单
          bol = true;
          break;
        }
      }
      return bol;
    },
    //
    signOut() {
      let _this = this;
      _this
        .$msgbox({
          title: "退出提示",
          message: "确定退出登录吗?",
          showCancelButton: true,
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          beforeClose: (action, instance, done) => {
            if (action === "confirm") {
              instance.confirmButtonLoading = true;
              instance.confirmButtonText = "执行中...";
              // ajax
              let res = this.axios.get('pass/logout', {
                  params: {
                    authorization: getCookie('accessToken')
                  }
                });
              res.then(function (res) {
                console.log(111)
                  instance.confirmButtonText = "确定";
                  instance.confirmButtonLoading = false;
                  done();
                  window.location.href = "./index.html";
                })
                .catch(function () {
                  instance.confirmButtonText = "确定";
                  instance.confirmButtonLoading = false;
                  done();
                });
            } else {
              done();
            }
          },
        })
        .then((action) => {});
    },
    //  查看个人信息
    showPersonInfo() {
      //  打开查看
      this.userModal.show = true;
      let userId = this.$store.state.userInfo.userId;
    },
    getUserInfo() {
      let that = this;
      if (that.$store.state.userInfo) {
        that.axios
          .get(proPath + "v1/sysusers/" + that.$store.state.userInfo.userId)
          .then(function (response) {
            if (response) {
              that.userInfo = response.data;
              top.globalUserInfo = response.data;
            }
          });
      }
    },
    //  隐藏侧边栏
    changeMenuType() {
      if (this.menuType === "2") {
        this.menuType = "1";
      } else {
        this.menuType = "2";
      }
    },
    //  菜单选中
    thisMenu(item) {
      for (let b of this.pageBreadcrumb) {
        if (b.menuId === item.menuId) {
          return true;
        }
      }
      return false;
    },
    //  弹窗完成
    userModalThen(str, item) {
      //   console.log('代码执行了')
      switch (str) {
        case "close":
          this.userModal.show = false;
          break;
        case "success":
          this.userModal.show = false;
          //  刷新
          this.store.dispatch("getUserInfo");
          break;
      }
    },
    //  修改密码
    pwdSubmit() {
      // if (this.strongText === '弱' && this.digit) {
      //   this.$message.warning('密码安全等级太弱')
      //   return
      // } else if (this.strongText === '弱' && !this.digit) {
      //   this.$message.warning('密码不能小于六位数')
      //   return
      // }
      this.$refs["pwdModal"].validate((valid) => {
        if (valid) {
          // if (this.pwdModal.form.newpassword.length > 16) {
          //   this.$message.warning('密码最长为16个字符')
          //   return
          // }
          this.pwdModal.loading = true;
          this.pwdModal.form.userid = this.store.state.userInfo.id;
          this.store
            .dispatch("system/usersManage/updpsw", this.pwdModal.form)
            .then((res) => {
              this.pwdModal.loading = false;
              if (res.code === "0") {
                this.$message.success("设置成功");
                this.strongShow = false;
                this.pwdModal.show = false;
              } else {
                this.$message.error(res.message);
              }
            });
        }
      });
    },
    //  打开修改密码弹窗
    openPwd() {
      this.$refs["pwdModal"].resetFields &&
        this.$refs["pwdModal"].resetFields();
      this.strongShow = false;
    },
    //  弹窗完成
    userModalThen(str, item) {
      let that = this;
      switch (str) {
        case "close":
          that.userModal.show = false;
          break;
        case "success":
          that.userModal.show = false;
          //  刷新
          that.getUser(that.tableParams.form);
          break;
      }
    },
    //  关闭弹窗
    userModalClose() {},
    // 修改完毕重新请求数据
    updataUserInfo(data) {
      this.getUserInfo();
      this.$store.commit("userInfo", data);
    },
    init: function (token) {
      let that = this;
      // 192.168.10.231:9008本地
      let path = "";
      if (
        window.top.document.location.origin.indexOf("icore-paas-test") !== -1 ||
        window.top.document.location.origin.indexOf("localhost") !== -1
      ) {
        path =
          "wss://websocket-dev.steerinfo.com/websocket?type=pass&token=" +
          token;
      } else {
        path =
          "wss://websocket.steerinfo.com/websocket?type=pass&token=" + token;
      }
      if ("WebSocket" in window) {
        // 实例化websocket
        this.websocket = new WebSocket(path);
        // 监听websocket连接
        this.websocket.onopen = this.open;
        // 监听websocket错误信息
        this.websocket.onerror = this.error;
        // 监听websocket消息
        this.websocket.onmessage = this.getMessage;
        //每隔30秒钟发送一次心跳,避免websocket连接因超时而自动断开
        // this.interval = window.setInterval(function(){
        //     if(that.websocket !== null){
        //         if (that.websocket.readyState !== that.websocket.OPEN) {
        //             let token = getCookie('accessToken');
        //             if (token) {
        //                 that.init(token);
        //             }
        //         }
        //         // } else {
        //         //     that.websocket.send('HeartBeat');
        //         //     // console.log("发送心跳包:HeartBeat");
        //         // }
        //     }
        // },30000);
      } else {
        alert("您当前浏览器不支持WebSocket");
        // 每隔30秒钟发送一次心跳,避免websocket连接因超时而自动断开
        // forgeWebSocket这个方法是在不支持websocket的浏览器中去执行,这个方法作用是作为最早得轮询方式去保持长连接。这样不管浏览器支不支持websocket都能保持长连接的功能作用
        // this.interval = window.setInterval(function(){
        //     that.forgeWebSocket();
        // },30000);
      }
    },
    open: function () {
      console.log("websocket连接成功");
    },
    error: function () {
      console.log("连接错误");
    },
    getTabIndex(menuId) {
      let index = 0;
      for (let i = 0; i < this.tabsData.length; i++) {
        if (this.tabsData[i].menuId === menuId) {
          index = i;
        }
      }
      return index;
    },
    getMessage: function (msg) {
      let that = this;
      // console.log(msg.data);
      let newMsg = JSON.parse(msg.data);
      let message = "";
      if (Object.prototype.toString.call(newMsg) === "[object Object]") {
        message = newMsg;
      } else if (Object.prototype.toString.call(newMsg) === "[object Array]") {
        message = JSON.parse(msg.data).find((item) => item.offline === false);
      }
      if (message.hasOwnProperty("type")) {
        let activeMenu = window.top.localStorage.getItem("activeMenu");
        let obj = this.getTreeAll(
          this.menuData,
          "./workFlow.html#/coverTask",
          1,
          []
        );
        let taskObj = this.getTreeAll(
          this.menuData,
          "./workFlow.html#/personalInitiatedTask",
          1,
          []
        );
        let msgObj = this.getTreeAll(
          this.menuData,
          "./systemConfig.html#/noticeUser",
          1,
          []
        );
        switch (message.type) {
          case "ACT_TO_DO_TASK": // 待办任务;
            this.$message.info("您收到一条新的待办任务,请前往待办任务中查看!");
            if (activeMenu === obj.menuData.menuId) {
              that.menuTabIndex = that.getTabIndex(obj.menuData.menuId);
              $("#menuTabId .el-tabs__item").eq(that.menuTabIndex).click();
              $("#menuTabId iframe")
                .eq(that.menuTabIndex)[0]
                .contentWindow.location.reload(true);
            }
            this.getMyToDoTask();
            this.getMyToDoDelegateTask();
            break;
          case "ACT_TO_DO_DELEGATETASK": // 委托待办任务;
            this.$message.info(
              "您收到一条新的委托待办任务,请前往待办任务中查看!"
            );
            if (activeMenu === obj.menuData.menuId) {
              that.menuTabIndex = that.getTabIndex(obj.menuData.menuId);
              $("#menuTabId .el-tabs__item").eq(that.menuTabIndex).click();
              $("#menuTabId iframe")
                .eq(that.menuTabIndex)[0]
                .contentWindow.location.reload(true);
            }
            this.getMyToDoTask();
            this.getMyToDoDelegateTask();
            break;
          case "ACT_MY_APPLY_TASK": // 申请完成任务;
            this.$message.info("您有一条申请审批已完成,请前往流程跟踪中查看!");
            if (activeMenu === taskObj.menuData.menuId) {
              that.menuTabIndex = that.getTabIndex(taskObj.menuData.menuId);
              $("#menuTabId .el-tabs__item").eq(that.menuTabIndex).click();
              $("#menuTabId iframe")
                .eq(that.menuTabIndex)[0]
                .contentWindow.location.reload(true);
            }
            break;
          case "SSO_NOTICE": // 公告;
            this.$message.info("您收到一条新的公告:" + message.payload.title);
            if (activeMenu === msgObj.menuData.menuId) {
              that.menuTabIndex = that.getTabIndex(msgObj.menuData.menuId);
              $("#menuTabId .el-tabs__item").eq(that.menuTabIndex).click();
              $("#menuTabId iframe")
                .eq(that.menuTabIndex)[0]
                .contentWindow.location.reload(true);
            }
            this.getMyMessage();
            break;
          case "SSO_ROLE": // 权限已被管理员修改
          case "SSO_MENU":
          case "SSO_ORG":
            let userId = this.$store.state.userInfo.userId;
            if (userId !== "admin") {
              this.privilegeUpdateIfo = true;
              this.coutTime(5);
            } else {
              if (message.type === "SSO_MENU") {
                store
                  .dispatch("generateRoutes", {
                    companyId: this.companyId,
                    appId: this.appId
                  })
                  .then((res) => {
                    if (res.code === "0") {
                      this.menuData = res.data;
                    }
                  })
                  .catch((err) => {
                    console.log(err);
                  });
              }
            }
            break;
          case "UPDATE_NUM":
            this.getMyToDoTask();
            this.getMyToDoDelegateTask();
            this.getMyMessage();
            if (
              message.payload === "updateMessageNumOfAuth" &&
              activeMenu === msgObj.menuData.menuId
            ) {
              that.menuTabIndex = that.getTabIndex(msgObj.menuData.menuId);
              $("#menuTabId .el-tabs__item").eq(that.menuTabIndex).click();
              $("#menuTabId iframe")
                .eq(that.menuTabIndex)[0]
                .contentWindow.location.reload(true);
            }
            break;
        }
      }
    },
    send: function (params) {
      this.websocket.send(params);
    },
    close: function () {
      console.log("websocket已经关闭");
      if (this.interval) {
        window.clearInterval(this.interval);
        // console.log("清除定时器");
      }
    },
    // 倒计时函数
    coutTime(index) {
      let that = this;
      that.closeSecond = index;
      setTimeout(function () {
        if (index == 0) {
          that.store
            .dispatch("loginOut")
            .then(function (res) {
              window.location.href = "./index.html";
            })
            .catch(function (err) {
              console.log(err);
            });
        } else {
          that.coutTime(--index);
        }
      }, 1000);
    },
    closeConfirm() {
      this.closeSecond = 0;
      this.store
        .dispatch("loginOut")
        .then(function (res) {
          window.location.href = "./index.html";
        })
        .catch(function (err) {
          console.log(err);
        });
    },
    // 遍历树获取指定url菜单相关
    // tree 整体树
    // url 需要跳转的页面url
    // num 递归层级,初始值传1,用于返回页面线性层级
    // list 包括页面&页面父级&父级的父级...直到最外层
    getTreeAll(tree, url, num, list) {
      let menuObj = {};
      if (!!tree && tree.length !== 0) {
        for (let item of tree) {
          menuObj["pageBreadcrumb"] = list;
          if (item.menuUrl === url) {
            menuObj["menuData"] = item;
            let obj = {
              menuId: num,
              menuLabel: item.menuLabel,
            };
            menuObj.pageBreadcrumb.push(obj);
            return menuObj;
          } else {
            let obj = {
              menuId: num,
              menuLabel: item.menuLabel,
            };
            let a = [];
            a.push(obj);
            let newList = list.concat(a);
            if (
              item.hasOwnProperty("children") &&
              item.children !== null &&
              item.children.length > 0
            ) {
              menuObj = this.getTreeAll(item.children, url, num + 1, newList);
              if (menuObj.hasOwnProperty("menuData")) {
                return menuObj;
              }
            }
          }
        }
      }
      return menuObj;
    },
    // 前往我的待办任务
    goMyTaskPage() {
      let that = this;
      let updateStatus = false;
      for (let item of this.tabsData) {
        if (item.menuUrl === "./workFlow.html#/coverTask") {
          updateStatus = true;
        }
      }
      let obj = this.getTreeAll(
        this.menuData,
        "./workFlow.html#/coverTask",
        1,
        []
      );
      this.selectMenu(obj.menuData, obj.pageBreadcrumb);
      if (updateStatus === true) {
        that.menuTabIndex = that.getTabIndex(obj.menuData.menuId);
        $("#menuTabId .el-tabs__item").eq(that.menuTabIndex).click();
        $("#menuTabId iframe")
          .eq(that.menuTabIndex)[0]
          .contentWindow.location.reload(true);
      }
    },
    // 前往公告页面
    goNoticePage() {
      let that = this;
      let updateStatus = false;
      for (let item of this.tabsData) {
        if (item.menuUrl === "./systemConfig.html#/noticeUser") {
          updateStatus = true;
        }
      }
      let obj = this.getTreeAll(
        this.menuData,
        "./systemConfig.html#/noticeUser",
        1,
        []
      );
      this.selectMenu(obj.menuData, obj.pageBreadcrumb);
      if (updateStatus === true) {
        that.menuTabIndex = that.getTabIndex(obj.menuData.menuId);
        $("#menuTabId .el-tabs__item").eq(that.menuTabIndex).click();
        $("#menuTabId iframe")
          .eq(that.menuTabIndex)[0]
          .contentWindow.location.reload(true);
      }
    },
    updateTaskNum() {
      let userId = getCookie("userId");
      let messageType = {
        payload: "updateTaskNum",
        type: "UPDATE_NUM",
        userId: userId,
      };
      this.axios
        .post("pass/websocket/socket/frontSendMessage", messageType, {
          individualType: "json",
        })
        .then((res) => {
          if (res.code === "0") {
            // do
          } else {
            this.$message.error(res.message);
          }
        })
        .catch((error) => {
          console.log(error.message);
        });
    },
    updateMessageNum() {
      let userId = getCookie("userId");
      let messageType = {
        payload: "updateTaskNum",
        type: "UPDATE_NUM",
        userId: userId,
      };
      this.axios
        .post("pass/websocket/socket/frontSendMessage", messageType, {
          individualType: "json",
        })
        .then((res) => {
          if (res.code === "0") {
            // do
          } else {
            this.$message.error(res.message);
          }
        })
        .catch((error) => {
          console.log(error.message);
        });
    },
    // 获取我的待办任务个数
    getMyToDoTask() {
      // 获取当前用户
      let userId = getCookie("userId");
      this.axios
        .get(
          "pass/act/v1/actusertasks/findMyToDoTask?userId=" +
            userId +
            "&companyId=" +
            this.companyId +
            "&pageNum=1&pageSize=1000000"
        )
        .then((res) => {
          if (res.code === "0") {
            this.task1Num = res.data.list.length;
          } else {
            this.$message.error(res.message);
          }
        })
        .catch((error) => {
          console.log(error.message);
        });
    },
    // 获取委托我代办的任务
    getMyToDoDelegateTask() {
      // 获取当前用户
      let userId = getCookie("userId");
      this.axios
        .get(
          "pass/act/v1/actusertasks/findMyToDoDelegateTask?userId=" +
            userId +
            "&companyId=" +
            this.companyId +
            "&pageNum=1&pageSize=1000000"
        )
        .then((res) => {
          if (res.code === "0") {
            this.task2Num = res.data.list.length;
          } else {
            this.$message.error(res.message);
          }
        })
        .catch((error) => {
          console.log(error.message);
        });
    },
    // 获取我的公告信息
    getMyMessage() {
      // 获取当前用户
      let userId = getCookie("userId");
      this.axios
        .get(
          "pass/v1/sysnotices/getUserNoticelike?status=0&pageNum=1&pageSize=1000000&companyId=" +
            this.companyId
        )
        .then((res) => {
          if (res.code === "0") {
            this.myMessageLength = res.data.list.length;
          } else {
            this.$message.error(res.message);
          }
        })
        .catch((error) => {
          console.log(error.message);
        });
    },
    // 获取主页页面
    getMainPage(tree, index, list) {
      list = list ? list : [];
      if (!!tree && tree.length !== 0) {
        for (let i = 0; i < tree.length; i++) {
          let menuIndex = index ? index + "-" + i.toString() : i;
          if (
            tree[i].loginDispaly &&
            tree[i].loginDispaly === "1" &&
            tree[i].status === "1"
          ) {
            tree[i]["menuIndex"] = menuIndex;
            tree[i]["mainPageLoading"] = true;
            list.push(tree[i]);
          } else {
            if (
              tree[i].hasOwnProperty("children") &&
              tree[i].children !== null &&
              tree[i].children.length > 0
            ) {
              this.getMainPage(tree[i].children, menuIndex, list);
            }
          }
        }
      }
      return list;
    },
    getMenuIndexByMenuId(tree, index, menuId) {
      if (!!tree && tree.length !== 0) {
        for (let i = 0; i < tree.length; i++) {
          let menuIndex = index ? (index + "-" + i.toString()) : i.toString();
          if (tree[i].menuId == menuId){
            tree[i]["menuIndex"] = menuIndex;
            return tree[i];
          }

            if (
              tree[i].hasOwnProperty("children") &&
              tree[i].children !== null &&
              tree[i].children.length > 0
            ) {
              var result = this.getMenuIndexByMenuId(tree[i].children, menuIndex, menuId);
              if(result){
                return result;
              }
            }
        }
      }
    },
    autoOpenLatestPage() {
      var that = this;
      var currentMenuIndex = window.top.localStorage.getItem("currentMenuIndex");
      let menuList = window.top.document.getElementsByClassName("el-menu-item");
      for (let i = 0; i < menuList.length; i++) {
        if(menuList[i].__vue__.index === currentMenuIndex){
            setTimeout(function(){
                that.defaultActiveIndex = currentMenuIndex;
                menuList[i].click();
            }, 20);
        }
      }
    },
    // 打开设为主页菜单页面
    openMainPage() {
      this.mainPageList = this.getMainPage(this.menuData);
      // console.log(this.mainPageList)
      let menuList = window.top.document.getElementsByClassName("el-menu-item");
      let s = 0;
      for (let item of this.mainPageList) {
        for (let i = 0; i < menuList.length; i++) {
          if (
            menuList[i].innerHTML === item.menuLabel &&
            menuList[i].__vue__.index === item.menuIndex
          ) {
            s++;
            setTimeout(() => {
              menuList[i].click();
              // console.log('点击行为')
            }, 200);
          }
        }
      }
    },
    // 浏览器返回操作
    goBack() {
      this.$router.replace({
        path: "/",
      });
    },
    updatecss () {
      this.socketshow=true;
      let height = document.body.clientHeight - 125;
      this.$nextTick(() => {
        $('.Web_Notice')[0].style.height = height + 'px;'
      })
    },
    leave(){
      this.socketshow=false;
    },
    getinformation(){
      this.axios.post("/api/v1/ams/getNotice",{orgcodezs:this.orgcodezs}).then((res)=>{
         this.noticedata=res.data.data;
         this.taskAllNum=res.data.data[0].taskAllNum
         console.log(this.noticedata)
        console.log(this.taskAllNum)
      })
    },
    // 查看待办任务详情
    seeTaskContent (item) {
      this.$refs.defaultpage.seeTaskContent(item);
      // // this.dialogVisible = true;
      // this.itemTask = item;
    },
  },
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->

<style lang="less" scoped>

.Web_Notice{
  width: 300px;
  position: absolute;
  left: -100px;
  background-color: #f1f6fd;
}
/deep/ .privilegeArea {
  .el-dialog {
    min-width: 400px;
    min-height: 120px;
    padding-bottom: 10px;
  }
}

.contextmenu {
  width: 150px;
  height: 150px;
  top: 0px;
  position: absolute;
  display: none;
}

/deep/.lockInput .el-input__inner {
  -webkit-text-security: disc !important;
}

.theme-defined {
  position: absolute;
  right: 20px;
  top: 20px;
  width: 150px;
}

.theme-defined > div {
  float: right;
  margin-right: 10px;
}

.company-select {
  position: absolute;
  left: 225px;
  // top: 20px;
  // float: left;
  height: 60px;
  line-height: 60px;
  margin-left: 20px;
  color: #fff;
  font-size: 20px;
}

.el-dropdown {
  font-size: 16px;
  color: #ffffff;
  cursor: pointer;
}

.ifCompany {
  font-size: 16px;
  color: #ffffff;
}

.lock_route {
  transform: rotateY(180deg);
  cursor: pointer;
  position: absolute;
  width: 40px;
  height: 39px;
  top: 0px;
  right: 0px;
  text-align: center;
  line-height: 40px;
  background-color: #ccc;
  color: #fff;
}

.lock_screen {
  position: absolute;
  z-index: 9999999999;
  background-color: #fff;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  min-width: 1600px;
  background: url(../assets/img/default-bg.png) center bottom no-repeat;
}

.main {
  height: 100%;
}

.sl-header {
  /* position: fixed; */
  top: 0;
  left: 0;
  z-index: 1002;
  width: 100%;
  /* min-width: 1150px; */
  background-color: #fff;
  background-color: rgba(255, 255, 255, 0.9);
}

.sl-container {
  height: 100%;
  position: relative;
  /* padding-top: 60px; */
  padding-left: 79px;
  /* transition: padding-left .3s ease-out; */
}

.sl-container2 {
  padding-left: 0px;
}

.sl-content-main {
  width: 100%;
  //   min-width: 1200px;
  height: calc(100% - 60px);
  overflow: auto;
}

.icore-menu-main {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1001;
  width: 80px;
  height: calc(100% - 60px);
  margin-top: 60px;
  border-right: 1px solid #efefef;
  background-color: #fff;
  /* transition: width .25s ease-out;*/
}

.icore-menu-main2 {
  width: 180px;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.sl-content {
  transition: margin-left 0.2s linear;
}

.sl-header-li-logo {
  float: left;
  margin-top: 13px;
  margin-left: 20px;
}

.sl-header-li-name {
  float: left;
  height: 60px;
  line-height: 60px;
  margin-left: 20px;
  color: #fff;
  font-size: 20px;
}

.sl-header-li-line {
  float: left;
  margin-top: 5px;
  height: 26px;
}

.sl-header-li-lgo {
  float: right;
  margin-top: 21px;
  width: 120px;
}

.sl-header-li-lgob {
  display: inline-block;
  padding-left: 25px;
  position: relative;
  color: white;
  height: 20px;
  line-height: 20px;
  vertical-align: middle;
}

.sl-header-li-lgob > .xs-icons {
  position: absolute;
  top: -8px;
  left: -18px;
}

.icore-menu-ops {
  font-size: 16px;
  color: #666;
  transition: transform 0.3s ease-out;
}

.icore-menu-main2 .icore-menu-ops {
  transform: rotate(180deg);
}

/* header menu style --> begin */
.icore-menu {
  border-right: solid 0px #e6e6e6;
}

.icore-menu-a {
  position: relative;
  display: inline-block;
  width: 100%;
  padding-left: 54px;
  -webkit-transition: color 0.3s;
  transition: color 0.3s;
  cursor: pointer;
  border-right: 2px solid #fff;
}

.icore-menu-tip-cover {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.icore-menu-a-noc {
  padding-right: 2px;
}

.icore-menu-lit {
  opacity: 0;
  display: inline-block;
  margin-top: 4px;
  height: 36px;
  line-height: 36px;
  vertical-align: middle;
  overflow: hidden;
  transition: opacity 0.3s ease-out;
}

.nameText {
  max-width: 85%;
  text-overflow: ellipsis;
}

.icore-menu-main2 .icore-menu-lit {
  opacity: 1;
}

.icore-menu-main2 .icore-menu-tip-cover {
  display: none;
}

.icore-menu-lic {
  position: absolute;
  top: 50%;
  left: 10px;
  margin-top: -11px;
}

.icore-menu-ric {
  position: absolute;
  top: 50%;
  right: 4px;
  margin-top: -3px;
  font-family: element-icons !important;
  speak: none;
  font-style: normal;
  font-weight: 400;
  font-variant: normal;
  color: #999;
  text-transform: none;
  line-height: 1;
  vertical-align: baseline;
  display: inline-block;
  -webkit-font-smoothing: antialiased;
  font-smoothing: antialiased;
  -webkit-transition: transform 0.3s;
  transition: transform 0.3s;
}

/* .icore-menu-ric:before{
     content: "\E603";
   }*/
.icore-menu-ricr {
  color: #999;
}

.icore-menu-s {
  position: absolute;
  top: -7px;
  left: 100%;
  z-index: 1004;
  border: 1px solid #ccc;
  box-shadow: 0 2px 8px #999;
  border-radius: 2px;
  background-color: #fff;
  min-width: 130px;
  padding: 10px 0;
}

.icore-menu-sham {
  -webkit-transform: scaleY(0);
  transform: scaleY(0);
  -webkit-transition: transform, display 0.4s;
  transition: transform 0.4s;
  -webkit-transform-origin: center top;
  transform-origin: center top;
}

.icore-menu-a:hover > .icore-menu-sham,
.icore-menu-sa:hover > .icore-menu-sham {
  opacity: 1;
  -webkit-transform: scaleY(1);
  transform: scaleY(1);
}

.icore-menu-s.icore-menu-s-right {
  left: auto;
  right: 15px;
}

.main-upload_text_logo {
  display: block;
  text-align: center;
  position: relative;
  margin: 0px -20px;
  top: -35px;
  border-bottom: 1px solid #cccccc;
}

.main-file_upload {
  width: 100%;
  text-align: center;
  position: relative;
  display: inline-block;
  vertical-align: top;
}

.main-file_con .hide {
  width: 120px;
  position: absolute;
  height: 30px;
  left: 58px;
  margin-top: -8px;
  opacity: 0;
  filter: alpha(opacity=0);
  z-index: 22;
}

.main-file_con .main-file_uploader,
.upload_bt {
  left: 0;
  top: -5px;
  position: relative;
  color: #fff;
  display: inline-block;
  padding: 0px 20px;
  background: #2ecc71;
  text-align: center;
  z-index: 11;
  border-radius: 15px;
  cursor: pointer;
}

.upload_bt {
  left: 130px;
}

.main-file_con .hide:hover {
  box-shadow: 1px 2px #44795b;
}

.main-img_holder,
.m_main-img_holder {
  height: 100px;
  line-height: 70px;
}

.main-img_holder img,
.m_main-img_holder img {
  max-width: 200px;
}

.main-file_btn_upload {
  margin-top: -20px;
  margin-bottom: 20px;
}

.icore-menu-sa {
  display: block;
  min-width: 120px;
  white-space: nowrap;
  padding: 0 20px;
  line-height: 32px;
  position: relative;
}

.icore-menu-a:hover {
  color: #2391e5;
  background-color: #e2f1fc;
  border-right-color: #e2f1fc;
}

.icore-menu-a:hover > .icore-menu-ric {
  color: #2391e5;
  -webkit-transform: rotate(180deg);
  transform: rotate(180deg);
}

.icore-menu-sa:hover {
  background-color: #e2f1fc;
  color: #2391e5;
}

.icore-menu-sa:hover > .icore-menu-ricr {
  color: #2391e5;
}

.icore-menu-ss {
  opacity: 0;
  position: absolute;
  left: 100%;
  top: -11px;
  z-index: 1005;
  padding: 10px 0;
  border: 1px solid #ccc;
  box-shadow: 0 2px 8px #999;
  border-radius: 2px;
  background-color: #fff;
}

.icore-menu-sed {
  border-right-color: #2391e5;
}

.icore-menu-sed,
.icore-menu-ssed,
.icore-menu-sssed {
  color: #2391e5;
}

.icore-menu-sed > .icore-menu-ricr,
.icore-menu-ssed > .icore-menu-ricr,
.icore-menu-sed > .icore-menu-ric {
  color: #2391e5;
}

.icore-menu-sdis {
  cursor: default !important;
  cursor: not-allowed !important;
  color: #999 !important;
  background-color: #fff !important;
}

.icore-menu-reverse > .icore-menu-s,
.icore-menu-reverse > .icore-menu-ss {
  top: auto;
  bottom: -11px;
  -webkit-transform-origin: center bottom;
  transform-origin: center bottom;
}

/* header menu style --> end */
.sl-breadcrumb {
  overflow: hidden;
  background-color: #fff;
  height: 30px;
  padding: 7px 0 0 20px;
}

.sl-header-li-lgbc {
  position: absolute;
  right: 40%;
  top: 20px;
}

.sl-header-li-websocket {
  position: absolute;
  right: 210px;
  top: 17px;

  .el-button--text {
    color: white;
  }
}

.sl-breadcrumb-text {
  float: left;
  color: white;
}

.sl-breadcrumb-list {
  float: left;
  padding-left: 10px;
  font-size: 12px;
  position: relative;
  top: 6px;
}

.sl-footer {
  padding: 20px 0 0px;
}

.sl-footer > p {
  text-align: center;
  height: 20px;
  line-height: 20px;
  vertical-align: middle;
}

.am-xz {
  float: left;
  margin-right: 7px;
  margin-top: 2px;
  animation: amXuanzhuan 4s linear infinite;
}

@keyframes amXuanzhuan {
  0% {
    transform: rotate3d(1, 0, 0, 360deg);
  }

  100% {
    transform: rotate3d(1, 0, 0, 0);
  }
}

.oa-header-photo-uld {
  width: 200px;
  height: 200px;
  line-height: 200px;
  vertical-align: middle;
  margin: 0 auto;
  overflow: hidden;
  cursor: pointer;
}

.oa-header-photo-uld > img {
  max-width: 100%;
  max-height: 100%;
  vertical-align: middle;
}

/*.oa-header-content {*/
/*background: url("../../static/img/top_bgimg.png") left center no-repeat rgb(60,207,255);*/
/*height: 60px;*/
/*}*/

.oa-header-logo {
  float: left;
  padding: 15px 0 0 30px;
  height: 50px;
  overflow: hidden;
}

.oa-header-logo > img {
  animation: fadeInLeft 0.5s ease-out 0s both;
}

.oa-header-upt {
  position: absolute;
  left: 0;
  top: 0;
  width: 100px;
  height: 60px;
  overflow: hidden;
  text-align: center;
}

.oa-header-upt > a {
  display: inline-block;
  width: 40px;
  height: 40px;
  margin-top: 10px;
  animation: fadeInRight 0.5s ease-out 0s both;
}

.oa-header-upt > a > img {
  width: 40px;
  height: 40px;
  line-height: 40px;
  vertical-align: middle;
  color: #333;
  border-radius: 20px;
  box-shadow: 0 0 10px #333;
}

.oa-header-user:hover .oa-header-upt > a > img {
  animation: circle 4s linear 0s infinite;
}

.oa-header-ucon {
  display: none;
  overflow: hidden;
  position: absolute;
  top: 50px;
  left: 10px;
  z-index: 18000;
  padding: 10px 0 10px 10px;
  font-size: 15px;
}

.oa-header-ulist {
  position: relative;
  width: 215px;
  border: 1px solid #ddd;
  box-shadow: 0 0 8px #999;
  background-color: #fff;
  background-color: rgba(255, 255, 255, 0.95);
}

.oa-header-user:hover .oa-header-ucon {
  display: block;
}

.oa-header-user:hover .oa-header-ulist {
  animation: fadeInRight 0.4s ease-out 0s both;
}

.oa-header-uin {
  text-align: center;
  overflow: hidden;
  padding: 20px 0 15px 0;
}

.oa-header-uin > img {
  width: 60px;
  height: 60px;
  border-radius: 30px;
  cursor: pointer;
}

.oa-header-uin > img:hover {
  animation: largen2 0.6s ease-out 0s both;
}

.oa-header-uin > h3 {
  padding-top: 10px;
  color: #666;
}

.oa-header-uul {
  padding-bottom: 10px;
}

.oa-header-uul > li {
  height: 40px;
  line-height: 40px;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  transition: background-color 0.3s linear 0s;
}

.oa-header-uul .st-icons {
  position: relative;
  top: 6px;
  margin-right: 8px;
  transition: all 0.3s linear;
}

.st-icons-out {
  margin-right: 4px;
}

.oa-header-uul > li:hover {
  background-color: #ebebeb;
}

.oa-header-uul::before,
.oa-header-uul::after {
  border-bottom-color: rgba(0, 0, 0, 0.2);
  content: "";
  display: inline-block;
  position: absolute;
}

.oa-header-uul::after {
  left: 41px;
  top: -6px;
  border-bottom: 6px solid #fff;
  border-left: 6px solid transparent;
  border-right: 6px solid transparent;
}

.oa-header-uul::before {
  left: 40px;
  top: -7px;
  border-bottom: 7px solid #ccc;
  border-left: 7px solid transparent;
  border-right: 7px solid transparent;
}

.hnstLogo {
  position: absolute;
  left: 190px;
  top: 14px;
}

.hnstLogo > img {
  height: 32px;
}

.marignL15 {
  margin-left: 15px;
}

.menuDrag {
  height: calc(100% - 120px);
  width: 18px;
  position: absolute;
  right: -6px;
  cursor: col-resize;
  z-index: 22;
}

.pageBreadcrumb {
  display: none;
}

.oa-user-name {
  position: absolute;
  top: 21px;
  left: 100px;
  max-width: 44%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.strongBox {
  position: absolute;
  right: 0;
  top: 0;
  width: 28px;
  height: 28px;
  line-height: 28px;
  text-align: center;
  color: white;
  background: red;
  border-radius: 5px;
  font-size: 14px;
}
</style>