| | |
| | | @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"></span> |
| | | </div> |
| | | </div> |
| | |
| | | > |
| | | <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"> |
| | |
| | | ></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"> |
| | |
| | | </el-form> |
| | | <div class="btns"> |
| | | <div class="cancel" @click="cancelChangePassword">取消</div> |
| | | <div class="ok">保存</div> |
| | | <div class="ok" @click="SaveNewPassword('passwordForm')">保存</div> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | <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" |
| | |
| | | updatePassword, |
| | | deleteUser, |
| | | getUserMenus, |
| | | getSysMenus, |
| | | defHeadPics, |
| | | } from "@/api/user"; |
| | | import switchBar from "../components/switchBar"; |
| | | import ipInput from "@/components/subComponents/IPInput"; |
| | |
| | | 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("请再次输入密码")); |
| | |
| | | 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(); |
| | |
| | | showSecInput: false, |
| | | showYrsInput: false, |
| | | showMonthInput: false, |
| | | selectedPic: null, |
| | | showDayInput: false, |
| | | cameraInfo: false, |
| | | dependentScene: false, |
| | |
| | | { name: "通用设置" }, |
| | | ], |
| | | accountArr: [], |
| | | jpgArr: [{}, {}, {}, {}, {}, {}, {}, {}, {}], |
| | | jpgArr: ["", "", "", "", "", "", "", "", ""], |
| | | isManual: false, |
| | | isNtp: true, |
| | | activePage: "账户", |
| | |
| | | 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" }], |
| | | }, |
| | | }; |
| | | }, |
| | |
| | | }, |
| | | 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); |
| | | |
| | | } |
| | | }); |
| | | }, |
| | |
| | | nickname: this.inputNickName, |
| | | }).then((res) => { |
| | | this.$message.success(res.msg); |
| | | this.fetchUserList(); |
| | | this.fetchUserList(true); |
| | | }); |
| | | }, |
| | | openAccount(item, i) { |
| | |
| | | }, |
| | | submitClock() { |
| | | if (this.syncType === "1") { |
| | | if (this.ntpServer === ""||this.ntpServer === "...") { |
| | | if (this.ntpServer === "" || this.ntpServer === "...") { |
| | | this.$notify({ |
| | | type: "error", |
| | | message: "NTP 服务器地址不能为空", |
| | |
| | | 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) { |
| | |
| | | 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; |
| | |
| | | this.timestamp = rsp.data.local_time; |
| | | if (this.clockTimer === null) { |
| | | this.runClock(); |
| | | if(this.isManual)this.parseTime() |
| | | if (this.isManual) this.parseTime(); |
| | | } |
| | | } |
| | | }); |
| | |
| | | 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) { |
| | |
| | | addUser(data).then( |
| | | (res) => { |
| | | this.$message.success(res.data); |
| | | this.fetchUserList(true); |
| | | }, |
| | | (err) => { |
| | | this.$message.warning("保存失败," + err.msg); |
| | |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | pickHeadDefPic(url, i) { |
| | | this.addForm.headpic = url; |
| | | this.selectedPic = i; |
| | | }, |
| | | testNTP() { |
| | | this.ntpTestLoading = true; |
| | |
| | | cancelButtonText: "取消", |
| | | }) |
| | | .then(() => { |
| | | deleteUser({ |
| | | let obj = { |
| | | ids: [this.activeAccountItem.id], |
| | | }).then((res) => { |
| | | }; |
| | | deleteUser(obj).then((res) => { |
| | | if (res.success) { |
| | | this.fetchUserList(); |
| | | this.$message({ |
| | |
| | | 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") { |
| | |
| | | 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"> |
| | |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | .user-role{ |
| | | margin: 5px 0 0 15px; |
| | | font-size: 14px; |
| | | .user-role { |
| | | margin: 5px 0 0 15px; |
| | | font-size: 14px; |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | .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); |
| | |
| | | font-size: 12px; |
| | | cursor: pointer; |
| | | } |
| | | .loaded-Pic { |
| | | } |
| | | } |
| | | .fill-group { |
| | | .p-title { |