heyujie
2021-07-04 85da22c4861736f7b0cabbc75daecbe4fea1bf80
周天更改
2个文件已修改
229 ■■■■■ 已修改文件
src/api/user.ts 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/systemSettings/index/App.vue 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/user.ts
@@ -71,3 +71,11 @@
    data: params
  });
};
export const defHeadPics = () => {
  return request({
    url: "/data/api-u/users/defHeadPics",
    method: "get"
  });
};
src/pages/systemSettings/index/App.vue
@@ -28,12 +28,20 @@
            @click="openAccount(item, index)"
          >
            <div class="touxiang">
              <img :src="item.headpic" alt="" />
              <img
                v-if="item.headpic"
                :src="
                  item.headpic.indexOf('http') > -1
                    ? item.headpic
                    : 'http://' + item.headpic
                "
                alt=""
              />
            </div>
            <span class="user-name">{{ item.username }}</span>
          </div>
        </div>
        <div class="add-account" >
        <div class="add-account">
          <span class="icon iconfont" @click="showAddAccount">&#xe646;</span>
        </div>
      </div>
@@ -82,7 +90,15 @@
        >
          <div class="content-top">
            <div class="touxiang-big">
              <img :src="activeAccountItem.headpic" alt="" />
              <img
                v-if="activeAccountItem.headpic"
                :src="
                  activeAccountItem.headpic.indexOf('http') > -1
                    ? activeAccountItem.headpic
                    : 'http://' + activeAccountItem.headpic
                "
                alt=""
              />
            </div>
            <div class="user-desc">
              <div class="username">
@@ -109,7 +125,13 @@
                  >&#xe60c;</span
                >
              </div>
              <div class="user-role">{{activeAccountItem.sysRoles.length?activeAccountItem.sysRoles[0].name:""}}</div>
              <div class="user-role">
                {{
                  activeAccountItem.sysRoles.length
                    ? activeAccountItem.sysRoles[0].name
                    : ""
                }}
              </div>
            </div>
          </div>
          <div class="list-btn">
@@ -156,7 +178,7 @@
          </el-form>
          <div class="btns">
            <div class="cancel" @click="cancelChangePassword">取消</div>
            <div class="ok">保存</div>
            <div class="ok" @click="SaveNewPassword('passwordForm')">保存</div>
          </div>
        </div>
@@ -201,9 +223,15 @@
          <div class="upload-group">
            <div
              class="upload-jpg"
              v-for="(item, index) in jpgArr"
              :class="
                selectedPic == index && url !== '' ? 'upload-jpg-mask' : ''
              "
              v-for="(url, index) in jpgArr"
              :key="index"
            ></div>
              @click="pickHeadDefPic(url, index)"
            >
              <img v-if="url !== ''" :src="url" alt="" srcset="" />
            </div>
            <el-upload
              class="upload-demo"
@@ -469,7 +497,7 @@
  updatePassword,
  deleteUser,
  getUserMenus,
  getSysMenus,
  defHeadPics,
} from "@/api/user";
import switchBar from "../components/switchBar";
import ipInput from "@/components/subComponents/IPInput";
@@ -488,16 +516,6 @@
    generalSettings,
  },
  data() {
    var validatePass = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请输入密码"));
      } else {
        if (this.addForm.checkPass !== "") {
          this.$refs.addForm.validateField("checkPassword");
        }
        callback();
      }
    };
    var validatePass2 = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请再次输入密码"));
@@ -507,30 +525,10 @@
        callback();
      }
    };
    var validatePass3 = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请输入密码"));
      } else {
        if (this.passwordForm.password !== "") {
          this.$refs.passwordForm.validateField("pw");
        }
        callback();
      }
    };
    var validatePass5 = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请输入密码"));
      } else {
        if (this.passwordForm.newPassword !== "") {
          this.$refs.passwordForm.validateField("newPw");
        }
        callback();
      }
    };
    var validatePass4 = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请再次输入密码"));
      } else if (value !== this.passwordForm.confirmPassword) {
      } else if (value !== this.passwordForm.newPassword) {
        callback(new Error("两次输入密码不一致!"));
      } else {
        callback();
@@ -559,6 +557,7 @@
      showSecInput: false,
      showYrsInput: false,
      showMonthInput: false,
      selectedPic: null,
      showDayInput: false,
      cameraInfo: false,
      dependentScene: false,
@@ -583,7 +582,7 @@
        { name: "通用设置" },
      ],
      accountArr: [],
      jpgArr: [{}, {}, {}, {}, {}, {}, {}, {}, {}],
      jpgArr: ["", "", "", "", "", "", "", "", ""],
      isManual: false,
      isNtp: true,
      activePage: "账户",
@@ -620,13 +619,23 @@
            trigger: "blur",
          },
        ],
        password: [{ validator: validatePass, trigger: "blur" }],
        password: [
            { required: true, message: '请输入密码', trigger: 'blur' },
            { min: 6, message: '长度至少为 6 位', trigger: 'blur' }
          ],
        confirmPassword: [{ validator: validatePass2, trigger: "blur" }],
      },
      pwRules: {
        pw: [{ validator: validatePass3, trigger: "blur" }],
        newPw: [{ validator: validatePass5, trigger: "blur" }],
        confirmNewPw: [{ validator: validatePass4, trigger: "blur" }],
        // pw: [{ validator: validatePass3, trigger: "blur" }],
         curPassword: [
            { required: true, message: '请输入密码', trigger: 'blur' },
            { min: 6, message: '长度至少为 6 位', trigger: 'blur' }
          ],
        newPassword: [
            { required: true, message: '请输入密码', trigger: 'blur' },
            { min: 6, message: '长度至少为 6 位', trigger: 'blur' }
          ],
        confirmPassword: [{ validator: validatePass4, trigger: "blur" }],
      },
    };
  },
@@ -636,13 +645,27 @@
  },
  mounted() {
    this.fetchUserList();
    this.fetchDefHeadPic();
  },
  methods: {
    fetchUserList() {
    fetchDefHeadPic() {
      defHeadPics().then((res) => {
        res.data.slice(0, 5).forEach((x, i) => {
          this.jpgArr[i] = x;
        });
      });
    },
    fetchUserList(showLast = false) {
      getUsers().then((res) => {
        this.accountArr = res.data;
        if (this.accountArr.length) {
          this.activeAccountItem = this.accountArr[0];
        }
        if (showLast) {
          this.cancelAdd();
          const lastIdx = this.accountArr.length - 1;
          this.openAccount(this.accountArr[lastIdx], lastIdx);
        }
      });
    },
@@ -661,7 +684,7 @@
        nickname: this.inputNickName,
      }).then((res) => {
        this.$message.success(res.msg);
        this.fetchUserList();
        this.fetchUserList(true);
      });
    },
    openAccount(item, i) {
@@ -790,7 +813,7 @@
    },
    submitClock() {
      if (this.syncType === "1") {
        if (this.ntpServer === ""||this.ntpServer === "...") {
        if (this.ntpServer === "" || this.ntpServer === "...") {
          this.$notify({
            type: "error",
            message: "NTP 服务器地址不能为空",
@@ -870,7 +893,8 @@
      let param = new FormData();
      param.append("file", params.file);
      uploadHeadPic(param).then((res) => {
        this.addForm.headpic = res.data;
        let index = this.jpgArr.findIndex((x) => x == "");
        this.$set(this.jpgArr, index, res.data);
      });
    },
    initClockConf(ntpTest = false) {
@@ -879,8 +903,8 @@
          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
            this.isNtp = rsp.data.ntp;
            this.isManual = !rsp.data.ntp;
          }
          if (rsp.data.ntp) {
            this.ntpServer = rsp.data.ntp_server;
@@ -889,7 +913,7 @@
          this.timestamp = rsp.data.local_time;
          if (this.clockTimer === null) {
            this.runClock();
            if(this.isManual)this.parseTime()
            if (this.isManual) this.parseTime();
          }
        }
      });
@@ -939,8 +963,25 @@
    cancelChangePassword() {
      this.isChangePw = false;
      this.inAccountDetail = false;
      this.$refs['passwordForm'].resetFields()
    },
    SaveNewPassword(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          updatePassword({
            oldPwd: this.passwordForm.curPassword,
            newPwd: this.passwordForm.newPassword,
          }).then(
            (res) => {
              this.$message.success(res.data);
            },
            (err) => {
              this.$message.warning("保存失败," + err.msg);
            }
          );
        }
      });
    },
    saveAddAccount(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
@@ -953,6 +994,7 @@
          addUser(data).then(
            (res) => {
              this.$message.success(res.data);
              this.fetchUserList(true);
            },
            (err) => {
              this.$message.warning("保存失败," + err.msg);
@@ -963,6 +1005,10 @@
          return false;
        }
      });
    },
    pickHeadDefPic(url, i) {
      this.addForm.headpic = url;
      this.selectedPic = i;
    },
    testNTP() {
      this.ntpTestLoading = true;
@@ -1011,9 +1057,10 @@
        cancelButtonText: "取消",
      })
        .then(() => {
          deleteUser({
          let obj = {
            ids: [this.activeAccountItem.id],
          }).then((res) => {
          };
          deleteUser(obj).then((res) => {
            if (res.success) {
              this.fetchUserList();
              this.$message({
@@ -1041,10 +1088,14 @@
      this.isSetPermission = true;
      this.fetchMenu();
    },
    parseTime(){
    parseTime() {
      debugger;
      [this.syncYrs, this.syncMonth, this.syncDay] = this.equipmentDate.split("-");
      [this.syncHour, this.syncMin, this.syncSec] = this.equipmentTime.split(":");
      [this.syncYrs, this.syncMonth, this.syncDay] = this.equipmentDate.split(
        "-"
      );
      [this.syncHour, this.syncMin, this.syncSec] = this.equipmentTime.split(
        ":"
      );
    },
    changeSwitch(str) {
      if (str == "isNtp") {
@@ -1053,28 +1104,15 @@
        this.isNtp = !this[str];
      }
      this.syncType = this.isNtp ? "1" : "2";
      if (this.isManual) this.parseTime()
      if (this.isManual) this.parseTime();
    },
  },
  computed: {
    isShowAddAccount(){
      const info = JSON.parse(sessionStorage.getItem('userInfo'))
      return true
    }
    isShowAddAccount() {
      const info = JSON.parse(sessionStorage.getItem("userInfo"));
      return true;
    },
  },
  // watch: {
  //   isManual(v) {
  //     this.isNtp = !v;
  //     v && (this.syncType = "2");
  //     if (v) {
  //     }
  //   },
  //   isNtp(v) {
  //     this.isManual = !v;
  //     v && (this.syncType = "1");
  //   },
  // },
};
</script>
<style lang="scss">
@@ -1279,9 +1317,9 @@
                cursor: pointer;
              }
            }
            .user-role{
                  margin: 5px 0 0 15px;
    font-size: 14px;
            .user-role {
              margin: 5px 0 0 15px;
              font-size: 14px;
            }
          }
        }
@@ -1362,22 +1400,31 @@
      .add-account-page {
        .upload-group {
          height: 120px;
          width: 350px;
          height: 130px;
          width: 360px;
          margin: 0 auto;
          overflow: hidden;
          .upload-jpg {
            height: 50px;
            width: 50px;
            height: 46px;
            width: 46px;
            float: left;
            margin: 0 10px;
            background-color: antiquewhite;
            margin-bottom: 20px;
            border-radius: 25px;
            background-color: rgba(242, 242, 242, 1);
            border: 3px solid transparent;
            border-radius: 50%;
            cursor: pointer;
            img {
              height: 46px;
              width: 46px;
            }
          }
          .upload-jpg-mask {
            border: 3px solid blue;
          }
          .upload-jpg-up {
            height: 50px;
            width: 50px;
            height: 52px;
            width: 52px;
            float: left;
            display: flex;
            background-color: rgba(242, 242, 242, 1);
@@ -1389,6 +1436,8 @@
            font-size: 12px;
            cursor: pointer;
          }
          .loaded-Pic {
          }
        }
        .fill-group {
          .p-title {