ZZJ
2021-11-12 2ff4a572df6b098779bc592a0c6e0a90e1b79b2e
src/pages/settings/index/index.vue
@@ -8,7 +8,6 @@
        :key="i"
        @click="openMenu(i)"
      >
        <!-- <span class="icon iconfont">{{ item.icon }}</span> -->
        <img :src="item.blackIcon" class="b" alt="" />
        <img :src="item.whiteIcon" class="w" alt="" />
        <span class="card-text">{{ item.name }}</span>
@@ -17,7 +16,12 @@
    <div class="container-center" v-if="activeIndex == 0">
      <div class="account-left" v-if="activeIndex == 0">
        <div class="account-list">
        <div class="account-list"
        :class="{'account-list-scroll'
        :account_list_scroll}"
        @mouseenter="account_list_scroll = true"
        @mouseleave="account_list_scroll = false"
        >
          <div
            class="account-card"
            :class="activeAccountIndex == index ? 'account-card-active' : ''"
@@ -34,20 +38,25 @@
              />
              <span class="user-name">{{ item.username }}</span>
            </div>
            <el-tag size="mini" v-if="item.id == curUserID">当前登录</el-tag>
            <div class="login-tag" v-if="item.id == curUserID">
              <span>当前登录</span>
            </div>
          </div>
        </div>
        <div class="add-account" v-if="curUserRole != '普通用户'">
          <!-- <span class="icon iconfont" @click="openAdd">&#xe646;</span> -->
          <i
            class="el-icon-circle-plus"
            style="font-size: 38px"
            style="font-size: 40px"
            @click="openAdd"
          ></i>
        </div>
      </div>
    </div>
    <div class="container-right" v-if="activeIndex == 0 || activeIndex == 1">
    <div
      class="container-right"
      v-if="activeIndex == 0 || activeIndex == 1"
      :class="activeIndex == 0 ? 'container-right-for-account' : ''"
    >
      <div class="account-right" v-if="activeIndex == 0">
        <div
          class="account-content"
@@ -57,7 +66,7 @@
            <div
              class="touxiang-big"
              @mouseenter="showChangePic = true"
              @mouseleave="onLeave"
              @mouseleave="showChangePic = false"
            >
              <img
                v-if="activeAccountItem.headpic"
@@ -65,31 +74,23 @@
                alt=""
              />
              <div class="touxiang-mask" v-show="showChangePic">
                <span
                  class="enable"
                  v-if="!showJPGArr"
                  @click="showJPGArr = true"
                  >修改头像</span
                <span class="enable" v-if="!showJPGArr" @click="editHeadPic"
                  >编辑头像</span
                >
                <span
                  class="enable"
                  v-if="addForm.headpic"
                  @click="confirmChangePic"
                  >确认选择</span
                >
                <span class="enable" v-if="showJPGArr" @click="cacelChoosePic">
                  取消</span
                >
              </div>
            </div>
            <div class="user-desc">
              <div class="username">
              <div class="user-name">
                <span
                  class="icon iconfont"
                  style="font-size: 18px; margin-right: 3px"
                  >&#xe6de;</span
                  style="font-size: 19px; margin-right: 4px"
                  >&#xe737;</span
                >
                <span>{{ activeAccountItem.username }}</span>
              </div>
              <div class="user-role">
                {{ activeUserRole }}
              </div>
              <div class="nick-name">
                <span class="nick-text">昵称:</span>
@@ -103,26 +104,22 @@
                ></el-input>
                <span
                  v-show="!showInputNickName"
                  class="icon iconfont"
                  class="icon iconfont edit-icon"
                  @click="editNickName"
                  >&#xe6f0;</span
                  >&#xe60c;</span
                >
                <span
                  v-show="showInputNickName"
                  class="icon iconfont"
                  class="icon iconfont clear-icon"
                  @click="showInputNickName = false"
                  >&#xe61b;</span
                  >&#xe785;</span
                >
                <span
                  v-show="showInputNickName"
                  class="icon iconfont"
                  style="font-size: 21px; font-weight: 600; color: green"
                  class="icon iconfont confirm-icon"
                  @click="hideInputNick"
                  >&#xe62a;</span
                  >&#xe72e;</span
                >
              </div>
              <div class="user-role">
                <el-tag type="info" size="mini">{{ activeUserRole }}</el-tag>
              </div>
            </div>
          </div>
@@ -147,10 +144,16 @@
              </div>
            </div>
          </div>
          <div class="btns" v-if="showJPGArr">
            <div class="cancel" @click="cacelChoosePic">取消</div>
            <div class="ok" @click="confirmChangePic">保存</div>
          </div>
          <div class="list-btn" v-if="showJPGArr == false">
            <div class="item-btn" @click="showChangePassword">修改密码</div>
            <div class="item-btn alt-pw-btn" @click="showChangePassword">
              修改密码
            </div>
            <div
              class="item-btn"
              class="item-btn del-usr-btn"
              v-if="isShowDeleteAccount"
              @click="deleteAccount"
            >
@@ -158,7 +161,7 @@
            </div>
            <div
              v-if="isShowPermitBtn"
              class="item-btn"
              class="item-btn auth-set-btn"
              @click="openPermission"
            >
              权限设置
@@ -167,7 +170,10 @@
        </div>
        <div class="change-pw" v-if="inAccountDetail && isChangePw">
          <div class="title">修改密码</div>
          <div class="title">
            <span class="icon iconfont">&#xe738;</span>
            <span>修改密码</span>
          </div>
          <el-form
            :model="passwordForm"
            :rules="pwRules"
@@ -178,7 +184,7 @@
              prop="curPassword"
              v-if="activeAccountItem.id == curUserID"
            >
              <div class="p-title">当前密码:</div>
              <div class="p-title">当前密码</div>
              <el-input
                placeholder="必填"
@@ -187,7 +193,7 @@
              ></el-input>
            </el-form-item>
            <el-form-item prop="newPassword">
              <div class="p-title">新密码:</div>
              <div class="p-title">新密码</div>
              <el-input
                placeholder="必填"
                v-model="passwordForm.newPassword"
@@ -195,7 +201,7 @@
              ></el-input>
            </el-form-item>
            <el-form-item prop="confirmPassword">
              <div class="p-title">确认密码:</div>
              <div class="p-title">确认密码</div>
              <el-input
                placeholder="必填"
                v-model="passwordForm.confirmPassword"
@@ -212,7 +218,7 @@
        <div class="permission" v-if="inAccountDetail && isSetPermission">
          <div class="title">权限管理</div>
          <div class="line-wrap" v-for="item in sysMenus" :key="item.id">
          <!-- <div class="line-wrap" v-for="item in sysMenus" :key="item.id">
            <div class="line">
              <div class="name">{{ item.name }}</div>
              <el-switch
@@ -238,6 +244,19 @@
                </el-switch>
              </div>
            </div>
          </div> -->
          <!--    -->
          <div class="tree-window">
            <el-tree
              ref="treeMenus"
              :data="sysMenus"
              :props="props"
              node-key="id"
              :default-checked-keys="checkedArr"
              show-checkbox
              check-on-click-node
              default-expand-all
            ></el-tree>
          </div>
          <div class="btns">
            <div class="cancel" @click="cancelSet">取消</div>
@@ -274,15 +293,19 @@
              class="add-form"
            >
              <el-form-item prop="userName">
                <div class="p-title">用户名:</div>
                <div class="p-title">用户名</div>
                <el-input
                  placeholder="必填,长度为 2 ~ 10 位字符,不能以数字开头,不允许包含汉字"
                  placeholder="2~10 位字符,不能以数字开头,不可包含汉字"
                  v-model="addForm.userName"
                ></el-input>
              </el-form-item>
              <el-form-item prop="roleId" v-if="curUserRole != '普通用户'">
                <div class="p-title">角色:</div>
                <el-select v-model="addForm.roleId" placeholder="请选择角色">
                <div class="p-title">角色</div>
                <el-select
                  v-model="addForm.roleId"
                  placeholder="请选择角色"
                  :popper-append-to-body="false"
                >
                  <el-option
                    v-for="(item, i) in roleList"
                    :key="i"
@@ -292,14 +315,14 @@
                </el-select>
              </el-form-item>
              <el-form-item prop="nickName">
                <div class="p-title">昵称:</div>
                <div class="p-title">昵称</div>
                <el-input
                  placeholder="选填,长度为 2 ~ 10 位字符"
                  placeholder="选填,2~10 位字符"
                  v-model="addForm.nickName"
                ></el-input>
              </el-form-item>
              <el-form-item prop="password">
                <div class="p-title">密码:</div>
                <div class="p-title">密码</div>
                <el-input
                  placeholder="必填,至少为 6 位"
                  v-model="addForm.password"
@@ -307,7 +330,7 @@
                ></el-input>
              </el-form-item>
              <el-form-item prop="confirmPassword">
                <div class="p-title">确认密码:</div>
                <div class="p-title">确认密码</div>
                <el-input
                  placeholder="必填"
                  v-model="addForm.confirmPassword"
@@ -338,12 +361,6 @@
          </div>
          <div class="adjust-zone">
            <!-- <el-radio-group v-model="ajustType"
            fill="#4E94FF"
            >
                  <el-radio-button label="手动校时"></el-radio-button>
                  <el-radio-button label=""></el-radio-button>
                </el-radio-group> -->
            <div class="two-radio">
              <div
                class="radio"
@@ -590,13 +607,12 @@
      ref="view_6"
    ></deviceInfo>
  </div>
  <div class="welcome-page" v-else ref="curPage">
  <div class="welcome-page" v-else ref="curPage" @mouseup="mouseDownIndex = ''">
    <div
      class="search-box"
      :class="showRecomand ? 'border-change' : ''"
      @click.stop
    >
      <!-- @blur="showRecomand = false" -->
      <el-input
        class="search-input"
        placeholder="查找设置"
@@ -622,17 +638,18 @@
          没有找到与 {{ searchText }} 相关的结果
        </div>
      </div>
      <div class="dummy-end" v-if="showRecomand" style="height: 15px"></div>
      <div class="dummy-end" v-if="showRecomand" style="height: 14px"></div>
    </div>
    <div class="nav-items">
      <div
        class="nav-child"
        @click="openWelcome(i)"
        @mousedown="mouseDownIndex = i"
        :class="mouseDownIndex === i? 'nav-child-active':''"
        v-for="(item, i) in menuArr"
        :key="i"
      >
        <div class="child-info">
          <!-- <span class="icon iconfont welcome-icon">{{ item.icon }}</span> -->
          <img :src="item.imgUrl" alt="" />
          <span class="welcome-title">{{ item.name }}</span>
        </div>
@@ -724,7 +741,6 @@
      browserTimer: null,
      timezone: "",
      showRecomand: false,
      searchArr: [
        { name: "账户", addr: [0] },
        { name: "通用设置", addr: [5] },
@@ -758,7 +774,6 @@
      isSetPermission: false,
      timeInterval: 10,
      ntpServer: "",
      syncType: "1",
      equipmentTime: "",
      equipmentDate: "",
      roleList: [],
@@ -819,13 +834,13 @@
      ],
      accountArr: [],
      jpgArr: [],
      isManual: true,
      isNtp: false,
      activeIndex: 0,
      clockTimer: null,
      inputHour: "",
      inputMin: "",
      inputSec: "",
      mouseDownIndex:'',
      inputYrs: "",
      showInputNickName: false,
      inputMonth: "",
@@ -837,6 +852,7 @@
      },
      activeAccountIndex: 0,
      sysMenus: [],
      checkedArr: [],
      addForm: {
        userName: "",
        nickName: "",
@@ -844,6 +860,9 @@
        headpic: "",
        confirmPassword: "",
        roleId: "",
      },
      props: {
        label: "name",
      },
      addRules: {
        userName: [{ validator: v1, trigger: "blur" }],
@@ -867,16 +886,28 @@
        ],
        confirmPassword: [{ validator: v4, trigger: "blur" }],
      },
      account_list_scroll: false
    };
  },
  created(){
  let color = localStorage.getItem('--colorCard')
    if(color) {
      document.documentElement.style.setProperty('--colorCard',`${color}`)
    }
  },
  beforeDestroy() {
    clearTimeout(this.clockTimer);
    clearInterval(this.browserTimer);
    if (this.$refs.curPage) {
      this.$refs.curPage.removeEventListener("click");
    }
    // if (this.$refs.curPage) {
    //   this.$refs.curPage.removeEventListener("click");
    // }
  },
  mounted() {
    window.addEventListener("message",(e)=>{
     if(e.data.msg === '返回系统设置') {
     this.showWelcome = true
       }
     })
    const menu = getUrlKey("menu");
    if (menu) {
      this.showWelcome = false;
@@ -985,7 +1016,6 @@
        case "hrs":
          num = +this.syncHour - 1;
          if (num == -1) {
            有线网络有线网络;
            num = 23;
          }
          this.syncHour = pad0(+num);
@@ -1093,8 +1123,16 @@
          break;
      }
    },
    editHeadPic() {
      this.showJPGArr = true;
      this.jpgArr.forEach((item, index) => {
        if (this.activeAccountItem.headpic == item.path) {
          this.selectedPic = index;
        }
      });
    },
    submitClock() {
      if (this.syncType === "1") {
      if (this.isNtp) {
        if (this.ntpServer === "" || this.ntpServer === "...") {
          this.$notify.error("NTP 服务器地址不能为空");
          return false;
@@ -1119,7 +1157,7 @@
      }
      saveClockInfo({
        timeZone: this.timezone,
        ntp: this.syncType === "1",
        ntp: this.isNtp,
        ntpServer: this.ntpServer,
        interval: this.timeInterval,
        newTime: this.settime,
@@ -1135,18 +1173,18 @@
        }
      );
    },
    flatGetArr(arr, res) {
      for (const item of arr) {
        if (item.selected) res.push(item.id);
        if (item.children) this.flatGetArr(item.children, res);
      }
    },
    // flatCheckedArr(arr, res) {
    //   for (const item of arr) {
    //     if (item.selected) res.push(item.id);
    //     if (item.children) this.flatCheckedArr(item.children, res);
    //   }
    // },
    saveAuth() {
      let arr = [];
      this.flatGetArr(this.sysMenus, arr);
      // let arr = [];
      // this.flatCheckedArr(this.sysMenus, arr);
      updataUser({
        id: this.activeAccountItem.id,
        menuIds: arr,
        menuIds: this.$refs.treeMenus.getCheckedKeys(),
      }).then((res) => {
        if (res.success) {
          this.$message.success(res.msg);
@@ -1173,15 +1211,12 @@
      }
      return format;
    },
    initClockConf(ntpTest = false) {
      getClockInfo().then((rsp) => {
        if (rsp && rsp.success) {
          this.timezone = rsp.data.time_zone;
          if (!ntpTest) {
            this.syncType = rsp.data.ntp ? "1" : "2";
            this.isNtp = rsp.data.ntp;
            this.isManual = !rsp.data.ntp;
          }
          if (rsp.data.ntp) {
            this.ntpServer = rsp.data.ntp_server;
@@ -1193,7 +1228,7 @@
            "日一二三四五六".charAt(new Date(+this.timestamp * 1000).getDay());
          if (this.clockTimer === null) {
            this.runClock();
            if (this.isManual) this.parseTime();
            if (!this.isNtp) this.parseTime();
          }
        }
      });
@@ -1226,12 +1261,6 @@
          this.syncDay = max + "";
        }
      }
    },
    onLeave() {
      if (this.showJPGArr) {
        return;
      }
      this.showChangePic = false;
    },
    cancelSetTime() {
      this.parseTime();
@@ -1280,9 +1309,6 @@
        this.openWelcome(addr[0]);
        this.$nextTick(() => {
          if (addr[0] == 1) {
            // addr[1] == 0
            //   ? this.changeSwitch("isNtp")
            //   : this.changeSwitch("isManual");
            return;
          }
          this.$refs[`view_${addr[0]}`].openRight(addr[1]);
@@ -1347,7 +1373,6 @@
            }
          );
        } else {
          console.log("error submit!!");
          return false;
        }
      });
@@ -1405,9 +1430,26 @@
      }, 1000);
    },
    deleteAccount() {
      this.$confirm("您是否确认删除账户?", "删除账户", {
      const h = this.$createElement;
      this.$msgbox({
        title: "",
        message: h(
          "div",
          {
            style:
              "display: flex;  flex-direction: column; justify-content: center; align-items: center;",
          },
          [
            h("span", { class: "icon iconfont warn-icon" }, "\ue71c"),
            h("span", { class: "warn-title" }, "删除账户"),
            h("span", { class: "warn-dec" }, "您是否确认删除账户?"),
          ]
        ),
        showCancelButton: true,
        showClose: true,
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        customClass: "del-account-message-box",
      })
        .then(() => {
          let obj = {
@@ -1416,10 +1458,7 @@
          deleteUser(obj).then((res) => {
            if (res.success) {
              this.fetchUserList();
              this.$message({
                type: "success",
                message: "删除成功!",
              });
              this.$message.success("删除成功!");
            } else {
              this.$message.error("删除失败");
            }
@@ -1433,8 +1472,17 @@
      }).then((res) => {
        if (res && res.success) {
          this.sysMenus = res.data;
          let arr = [];
          this.drawChecked(this.sysMenus, arr);
          this.checkedArr = arr;
        }
      });
    },
    drawChecked(arr, res) {
      for (const item of arr) {
        if (item.selected && !item.children) res.push(item.id);
        if (item.children) this.drawChecked(item.children, res);
      }
    },
    openPermission() {
      this.inAccountDetail = true;
@@ -1451,15 +1499,15 @@
        ":"
      );
    },
    changeSwitch(str) {
      if (str == "isNtp") {
        this.isManual = !this[str];
      } else {
        this.isNtp = !this[str];
      }
      this.syncType = this.isNtp ? "1" : "2";
      if (this.isManual) this.parseTime();
    },
    // changeSwitch(str) {
    //   if (str == "isNtp") {
    //     this.isManual = !this[str];
    //   } else {
    //     this.isNtp = !this[str];
    //   }
    //   this.syncType = this.isNtp ? "1" : "2";
    //   if (this.isManual) this.parseTime();
    // },
  },
  computed: {
    activeUserRole() {
@@ -1475,28 +1523,18 @@
    },
    isShowDeleteAccount() {
      if (this.curUserRole == "超级管理员") {
        if (this.activeUserRole == "超级管理员") {
          return false;
        }
        return true;
        return this.activeUserRole != "超级管理员";
      } else if (this.curUserRole == "管理员") {
        if (this.activeUserRole == "普通用户") {
          return true;
        }
        return false;
        return this.activeUserRole == "普通用户";
      }
      return false;
    },
    isShowPermitBtn() {
      if (this.curUserRole == "管理员") {
        if (this.activeUserRole == "普通用户") {
          return true;
        }
        return false;
      } else if (this.curUserRole == "普通用户") {
        return false;
        return this.activeUserRole == "普通用户";
      } else {
        return this.curUserRole != "普通用户";
      }
      return true;
    },
    searchArrForShow() {
      if (this.searchText == "") {
@@ -1520,21 +1558,23 @@
  background-color: rgba(255, 255, 255, 0.9);
  backdrop-filter: blur(4px);
  .border-change {
    border-radius: 20px !important;
    border-radius: 15px !important;
  }
  .search-box {
    width: 332px;
    z-index: 999;
    // margin: 55px auto;
    position: fixed;
    left: calc(50% - 166px);
    top: 50px;
    background: rgba(255, 255, 255, 0.8);
    border: 2px solid #4e94ff;
    border: 2px solid var(--colorCard);
    box-sizing: border-box;
    backdrop-filter: blur(4px);
    border-radius: 40px;
    .search-res {
      background-color: rgba(255,255,255,.5);
    }
    .search-input {
      font-size: 14px;
      .el-input--mini .el-input__inner {
@@ -1562,6 +1602,30 @@
        transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
        width: 100%;
        font-weight: bold;
        &::-webkit-input-placeholder { /* WebKit browsers */
        color: #828282;
        font-weight: normal;
        font-size: 14px;
        }
        &:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
        color: #828282;
        font-weight: normal;
        font-size: 14px;
        }
        &::-moz-placeholder { /* Mozilla Firefox 19+ */
        color: #828282;
        font-weight: normal;
        font-size: 14px;
        }
        &:-ms-input-placeholder { /* Internet Explorer 10+ */
        color: #828282;
        font-weight: normal;
        font-size: 14px;
      }
      }
      .el-input__suffix {
        display: flex;
@@ -1590,7 +1654,7 @@
        text-align: left;
        box-sizing: border-box;
        padding: 0 20px;
        color: #333333;
        color: #4F4F4F;
        font-size: 14px;
        cursor: pointer;
      }
@@ -1600,20 +1664,19 @@
        text-align: left;
        box-sizing: border-box;
        padding: 0 20px;
        color: #333333;
        color: #4F4F4F;
        font-size: 14px;
      }
      .res-bar:hover {
        background: #f5f5f6 10%;
        font-weight: bold;
        color: #4e94ff;
        color: var(--colorCard);
      }
      // .res-bar:last-child {
      //   border-radius: 0 0 20px 20px;
      // }
    }
  }
  .nav-items {
    max-width: 960px;
    margin: 0 auto;
    .nav-child {
      box-sizing: border-box;
      background-color: rgba(251, 251, 255, 0.1);
@@ -1628,12 +1691,19 @@
      justify-content: center;
      align-items: center;
      cursor: pointer;
      border: 2px solid #F2F2F7;
      // box-shadow: 2px 2px 4px rgb(226, 226, 226);
      &-active {
        border: 2px solid #4E94FF;
      }
      &:hover {
        background: #F2F2F7;
      }
      .child-info {
        display: flex;
        flex-direction: column;
        // justify-content: space-around;
        height: 100%;
        .welcome-icon {
          font-size: 72px;
@@ -1641,22 +1711,18 @@
        img {
          width: 64px;
          margin: 0 auto;
          margin-top: 65px;
          margin-top: 61px;
          height: 50px;
        }
        .welcome-title {
          font-size: 16px;
          font-weight: bold;
          margin-top: 24px;
          color: #333333;
          color: #4F4F4F;
        }
      }
    }
    .nav-child:hover {
      // box-shadow: 4px 4px 12px rgb(218, 218, 218);
      // transform: translate3d(0, -1px, 0);
      // transition: all 0.3s;
    }
  }
}
.container {
@@ -1667,8 +1733,9 @@
  flex-basis: auto;
  box-sizing: border-box;
  background-color: #fff;
  border-top: 1px solid #e1e0e6;
  color: #4F4F4F;
  border-top: 2px solid #E1E0E6;
  overflow-x: hidden;
  .container-left {
    height: 100%;
    width: 244px;
@@ -1676,32 +1743,27 @@
    box-sizing: border-box;
    flex-shrink: 0;
    padding: 10px;
    // border-right: 5px solid rgba(248, 248, 248, 1);
    box-sizing: border-box;
    .left-card {
      height: 56px;
      cursor: pointer;
      border-radius: 8px;
      margin-bottom: 10px;
      margin-bottom: 4px;
      display: flex;
      align-items: center;
      padding: 0 20px;
      // .iconfont {
      //   margin-left: 25px;
      //   margin-right: 10px;
      //   font-size: 24px;
      // }
      .card-text {
        margin-left: 20px;
        color: #333333;
        color: #4F4F4F;
        font-weight: bold;
        font-size: 16px;
        line-height: 22px;
        height: 22px;
      }
      img {
        height: 40px;
        width: 40px;
        height: 30px;
        width: 30px;
      }
      .w {
        display: none;
@@ -1711,7 +1773,7 @@
      }
    }
    .left-card-active {
      background-color: #4e94ff !important;
      background-color: var(--colorCard) !important;
      .card-text {
        color: #fff !important;
      }
@@ -1728,52 +1790,80 @@
  }
  .container-center {
    height: 100%;
    width: 280px;
    width: 300px;
    overflow: auto;
    flex-shrink: 0;
    padding: 10px;
    border-right: 5px solid rgba(248, 248, 248, 1);
    padding-top: 6px;
    padding-right: 5px;
    border-top: 4px solid #f2f2f7;
    border-left: 4px solid #f2f2f7;
    box-sizing: border-box;
    background-color: #fbfaff;
    .account-left {
      height: 100%;
      .account-list {
        height: calc(85%);
        overflow: auto;
        padding-right: 5px;
       &::-webkit-scrollbar-track, &::-webkit-scrollbar-thumb { visibility: hidden; }
       &::-webkit-scrollbar {
         background-color: #fff;
       }
        &.account-list-scroll::-webkit-scrollbar-thumb, &.account-list-scroll::-webkit-scrollbar-track {
          visibility: visible;
        }
        &.account-list-scroll::-webkit-scrollbar {
        background-color: #f5f5f5;
       }
      }
      .add-account {
        color: rgba(61, 104, 225, 1);
        margin-top: 15px;
        color: var(--colorCard);
        margin-top: 30px;
        .el-icon-circle-plus {
          cursor: pointer;
          font-size: 38px;
        }
      }
      .account-card {
        height: 50px;
        background-color: rgba(248, 248, 248, 1);
        margin-bottom: 10px;
        height: 60px;
        background-color: #f2f2f7;
        margin-bottom: 4px;
        display: flex;
        align-items: center;
        padding: 0 20px;
        padding: 0 5px 0 20px;
        box-sizing: border-box;
        border-radius: 10px;
        border-radius: 8px;
        cursor: pointer;
        justify-content: space-between;
        .touxiang {
          display: flex;
          align-items: center;
          img {
            border: none;
            height: 35px;
            width: 35px;
            border-radius: 17.5px;
            height: 44px;
            width: 44px;
            border-radius: 50%;
          }
        }
        .login-tag {
          width: 72px;
          height: 19.21px;
          background: #ffffff;
          border-radius: 20px;
          color: #4F4F4F;
          transform: scale(0.833333);
          line-height: 22.21px;
          span {
            font-size: 13px;
          }
        }
        .user-name {
          margin-left: 10px;
          margin-left: 20px;
          font-size: 14px;
          font-weight: bold;
        }
      }
@@ -1791,21 +1881,23 @@
    position: relative;
    padding: 30px 40px;
    background: #f2f2f7;
    border-left: 4px solid #f2f2f7;
    border-top: 4px solid #f2f2f7;
    .account-right {
      height: 100%;
      .account-content {
        margin-top: 40px;
        .content-top {
          height: 120px;
          width: 350px;
          margin: 0 auto;
          display: flex;
          flex-direction: column;
          align-items: center;
          justify-content: center;
          margin-bottom: 20px;
          .touxiang-big {
            width: 100px;
            height: 100px;
            position: relative;
            border-radius: 50px;
            margin-bottom: 20px;
            img {
              border: none;
              width: 100px;
@@ -1833,10 +1925,9 @@
                border-radius: 3px;
                border: 1px solid transparent;
                font-size: 14px;
                font-weight: bold;
              }
              .enable:hover {
                color: orangered;
                font-size: 15px;
                transition: all 0.2s;
              }
              .selected {
@@ -1848,83 +1939,193 @@
            height: 100px;
            display: flex;
            flex-direction: column;
            align-items: baseline;
            align-items: center;
            color: #4F4F4F;
            min-width: 200px;
            .username {
              margin: 0 15px;
            .user-name {
              margin-bottom: 10px;
              height: 28px;
              line-height: 28px;
              text-align: left;
              font-size: 16px;
              display: flex;
              align-items: center;
              font-weight: bold;
              font-size: 16px;
            }
            .nick-name {
              margin: 5px 15px;
              font-size: 14px;
              display: flex;
              font-weight: bold;
              height: 30px;
              align-items: center;
              .nick-text {
                width: fit-content;
                text-align: left;
              }
              .edit-icon {
                font-size: 13px;
                margin-left: 10px;
              }
              .confirm-icon {
                color: var(--colorCard);
                font-size: 18px;
                margin-left: 10px;
              }
              .clear-icon {
                margin-left: 10px;
                font-size: 18px;
              }
              .iconfont {
                font-size: 14px;
                margin-left: 5px;
                cursor: pointer;
                font-weight: normal;
              }
              .el-input--mini {
                font-size: 14px;
                width: 83px;
                width: 82px;
                .el-input__inner {
                  padding: 0 5px;
                  padding: 0 8px;
                  height: 20px;
                  line-height: 20px;
                  /* border: 1px solid; */
                  border: 1px solid var(--colorCard);
                  border-radius: 20px;
                  background: #f2f2f7;
                }
              }
            }
            .user-role {
              margin: 5px 0 0 15px;
              font-size: 14px;
              color: skyblue;
              width: 75px;
              height: 18px;
              border: 1px solid #333333;
              box-sizing: border-box;
              border-radius: 20px;
              font-weight: bold;
              font-size: 12px;
              margin-bottom: 20px;
            }
          }
        }
        .chang-pic-arr {
          margin-top: 40px;
        }
        .list-btn {
          display: flex;
          flex-direction: column;
          align-items: center;
          .item-btn {
            width: 500px;
            height: 45px;
            background-color: #f0f0f0;
            margin-bottom: 15px;
            border-radius: 10px;
            line-height: 45px;
            font-size: 15px;
            cursor: pointer;
          margin-top: 80px;
          .alt-pw-btn {
            background: rgba(78, 148, 255, 0.1);
            border: 1px solid var(--colorCard);
          }
          .item-btn:hover {
            color: rgba(255, 153, 102, 1);
          .del-usr-btn {
            background: #e0e0e0;
            color: #fc4958;
          }
          .auth-set-btn {
            background: var(--colorCard);
            color: #ffffff;
          }
          .item-btn {
            width: 212px;
            height: 40px;
            margin-bottom: 15px;
            line-height: 40px;
            border-radius: 25px;
            font-size: 16px;
            font-weight: bold;
            cursor: pointer;
          }
        }
      }
      .title {
        height: 30px;
        line-height: 30px;
        margin-bottom: 10px;
        font-size: 16px;
        font-weight: 600;
      }
      .change-pw {
        padding: 40px 10px;
        max-width: 600px;
        margin: 0 auto;
        .title {
          font-weight: bold;
          font-size: 16px;
          line-height: 22px;
          color: #4F4F4F;
          margin-bottom: 40px;
          height: 28px;
          display: flex;
          align-items: center;
          justify-content: center;
          .icon {
            font-size: 28px;
            font-weight: normal;
            margin-right: 10px;
          }
        }
        .el-form-item__content {
          line-height: 48px;
          display: flex;
          align-items: center;
          background: #f2f2f7;
          border-radius: 8px;
          padding: 0 15px 0 20px;
          .el-select-dropdown__item {
            color: #4F4F4F;
            height: 32px;
            font-size: 12px;
            line-height: 32px;
            text-align: center;
          }
          .el-popper {
            margin-top: 0;
            background: #fbfaff;
            box-shadow: 0px 2px 6px rgb(0 0 0 / 18%);
            border-radius: 2px;
            .el-select-dropdown__item.hover,
            .el-select-dropdown__item:hover {
              background-color: #f2f2f7;
              color: var(--colorCard);
            }
          }
        }
        .el-form-item__error {
          line-height: 0.7;
          left: 20px;
        }
        .el-form-item {
          .el-input__inner {
            background-color: #ffffff;
            border: 2px solid transparent;
            border-radius: 20px;
            height: 32px;
          line-height: 32px;
            padding: 0 15px;
            font-size: 14px;
            font-weight: bold;
          }
          .el-input__inner:focus{
            border: 2px solid var(--colorCard);
          }
          .el-input__inner::placeholder {
            color: #c0c4cc;
            font-size: 12px;
            font-weight: normal;
          }
          .el-select {
            width: 100%;
          }
          .el-select .el-input .el-select__caret {
            color: #4F4F4F;
            font-size: 14px;
            font-weight: 600;
          }
        }
        .p-title {
          height: 48px;
          text-align: left;
          font-size: 15px;
          margin-top: 5px;
          line-height: 48px;
          width: 90px;
          font-weight: 600;
        }
      }
      .el-form-item {
        margin-bottom: 0;
        margin-bottom: 15px;
        .el-input__inner {
          background-color: rgba(240, 240, 240, 1);
          border: none;
@@ -1934,9 +2135,9 @@
          font-size: 15px;
        }
        .el-input__clear {
          color: dimgray;
          font-size: 17px;
          line-height: 45px;
          color: #4F4F4F;
          font-size: 16px;
          line-height: 48px;
        }
        .el-input__suffix {
          right: 1px;
@@ -1946,80 +2147,190 @@
        }
      }
      .permission {
        .line {
          display: flex;
          align-items: center;
          height: 50px;
          padding: 0 25px;
          background-color: rgba(248, 248, 248, 1);
          justify-content: space-between;
          border-radius: 12px;
          margin-bottom: 10px;
          .name {
            font-size: 14px;
        height: 100%;
        .title {
          height: 22px;
          line-height: 48px;
          font-size: 16px;
          font-weight: 600;
          color: #4F4F4F;
          height: 48px;
          background: #fbfaff;
          border-bottom: 2px solid #f2f2f7;
        }
        .tree-window {
          padding: 10px 15px;
          height: calc(100% - 155px);
          border-bottom: 2px solid #f2f2f7;
          .el-tree {
            background: initial;
            color: #333;
            height: 100%;
            overflow: auto;
            max-width: 600px;
            margin: 0 auto;
            .el-tree-node {
              background: initial;
              .el-tree-node__content {
                height: 30px;
                background: #f2f2f7;
                margin-bottom: 4px;
                border-radius: 4px;
                box-sizing: border-box;
                border: 2px solid transparent;
                .el-tree-node__content > .el-tree-node__expand-icon {
                  padding: 6px 18px;
                  font-size: 16px;
                }
                .el-checkbox__input.is-checked .el-checkbox__inner,
                .el-checkbox__input.is-indeterminate .el-checkbox__inner {
                  background-color: var(--colorCard);
                  border-color: var(--colorCard);
                }
                .el-checkbox__inner {
                  border-radius: 1px;
                  border: 1px solid var(--colorCard);
                }
                .el-tree-node__label {
                  font-size: 13px;
                  font-weight: 600;
                }
              }
              .el-tree-node__content:hover {
                border: 2px solid var(--colorCard);
              }
            }
          }
        }
        .btns {
          margin-top: 19px;
        }
      }
      .upload-group {
        height: 120px;
        width: 360px;
        width: 340px;
        margin: 0 auto;
        overflow: hidden;
        .upload-jpg {
          position: relative;
          height: 48px;
          width: 48px;
          height: 44px;
          width: 44px;
          float: left;
          margin: 0 10px;
          margin-bottom: 10px;
          margin-bottom: 20px;
          background-color: rgba(242, 242, 242, 1);
          border: 2px solid transparent;
          border-radius: 50%;
          cursor: pointer;
          img {
            height: 48px;
            width: 48px;
            height: 44px;
            width: 44px;
            border-radius: 50%;
          }
          .img-mask {
            position: absolute;
            left: 0;
            top: 0;
            height: 48px;
            width: 48px;
            height: 44px;
            width: 44px;
            background-color: rgba(0, 0, 0, 0.3);
            color: white;
            border-radius: 50%;
            display: flex;
            justify-content: center;
            align-items: center;
            .icon {
              font-size: 20px;
            }
            .selected {
              font-size: 22px;
            }
          }
        }
        .upload-jpg-border {
          border: 2px solid cornflowerblue;
          border: 2px solid var(--colorCard);
        }
      }
      .add-account-page {
        margin-top: 20px;
        padding: 0 10px;
        .title {
          height: 22px;
          margin-bottom: 20px;
          font-weight: bold;
          font-size: 16px;
          line-height: 22px;
        }
        .fill-group {
          max-width: 450px;
          margin-top: 10px;
          margin: 0 auto;
          .el-form-item__content {
            line-height: 44px;
            line-height: 48px;
            display: flex;
            align-items: center;
            background: #f2f2f7;
            border-radius: 8px;
            padding: 0 15px 0 20px;
            .el-select-dropdown__item {
              color: #4F4F4F;
              height: 32px;
              font-size: 12px;
              line-height: 32px;
              text-align: center;
            }
            .el-popper {
              margin-top: 0;
              background: #fbfaff;
              box-shadow: 0px 2px 6px rgb(0 0 0 / 18%);
              border-radius: 2px;
              .el-select-dropdown__item.hover,
              .el-select-dropdown__item:hover {
                background-color: #f2f2f7;
                color: var(--colorCard);
              }
            }
          }
          .p-title {
            height: 34px;
            height: 48px;
            text-align: left;
            line-height: 50px;
            line-height: 48px;
            width: 90px;
            font-weight: 600;
          }
          .el-form-item__error {
            line-height: 0.8;
            left: 3.3%;
            line-height: 0.7;
            left: 20px;
          }
          .el-form-item {
            .el-input__inner {
            background-color: #ffffff;
            border: 2px solid transparent;
            border-radius: 20px;
            height: 32px;
          line-height: 32px;
            padding: 0 15px;
            font-size: 14px;
            font-weight: bold;
          }
          .el-input__inner:focus{
            border: 2px solid var(--colorCard);
          }
            .el-input__inner::placeholder {
              color: #c0c4cc;
              font-size: 12px;
              font-weight: normal;
            }
            .el-select {
              width: 100%;
            }
            .el-select .el-input .el-select__caret {
              color: #4F4F4F;
              font-size: 14px;
              font-weight: 600;
            }
          }
        }
@@ -2028,7 +2339,7 @@
    .datetime-right {
      .datetime-left {
        .device-time {
          color: #333333;
          color: #4F4F4F;
          .title {
            display: flex;
            justify-content: center;
@@ -2098,7 +2409,7 @@
              letter-spacing: 0.5px;
            }
            .highlight-radio {
              background: #4e94ff;
              background: var(--colorCard);
              color: #ffffff;
            }
          }
@@ -2235,7 +2546,7 @@
            }
            .right {
              display: flex;
              align-items: baseline;
              align-items: center;
              .desc-min {
                font-size: 12px;
                font-weight: bold;
@@ -2251,22 +2562,20 @@
                  background: #f2f2f7;
                }
                .el-input__inner:focus {
                  border: 2px solid #4e94ff;
                  border: 2px solid var(--colorCard);
                }
              }
              .el-button--text {
                margin-left: 42px;
                color: #409eff;
                /* background: 0 0; */
                padding-left: 0;
                padding-right: 0;
                background: rgba(78, 148, 255, 0.1);
                border: 1px solid #4e94ff;
                border: 1px solid var(--colorCard);
                box-sizing: border-box;
                border-radius: 20px;
                width: 68px;
                color: #333;
                font-weight: bold;
                padding: 6px 20px;
              }
            }
          }
@@ -2305,7 +2614,6 @@
      }
      .ip-input-container {
        max-width: none !important;
        display: inline-block;
        width: 336px;
        height: 34px;
        line-height: normal;
@@ -2317,9 +2625,11 @@
        border: 2px solid transparent;
      }
    }
    .btns {
  }
      .btns {
      margin: 0 auto;
      margin-top: 30px;
      margin-top: 40px;
      width: fit-content;
      display: flex;
      .cancel {
@@ -2338,13 +2648,16 @@
        height: 40px;
        cursor: pointer;
        border-radius: 25px;
        background-color: #4e94ff;
        background-color: var(--colorCard);
        color: #fff;
        line-height: 40px;
        font-weight: bold;
        font-size: 16px;
      }
    }
  .container-right-for-account {
    background: #fbfaff;
    padding: 0;
  }
}
</style>