(function () { function resolveParentLayer() { if (window.parent && window.parent.layer) { return window.parent.layer; } if (window.top && window.top.layer) { return window.top.layer; } return null; } function parentInputValue(id) { if (!window.parent || !window.parent.document) { return ""; } var el = window.parent.document.getElementById(id); return el ? (el.value || "") : ""; } function closeCurrentDialog() { var layer = resolveParentLayer(); if (!layer) { window.close(); return; } var frameIndex = typeof layer.getFrameIndex === "function" ? layer.getFrameIndex(window.name) : null; if (frameIndex !== null && frameIndex !== undefined && frameIndex !== -1) { layer.close(frameIndex); return; } if (typeof layer.closeAll === "function") { layer.closeAll(); } } function handleForbidden(res) { if (res && Number(res.code) === 403) { top.location.href = baseUrl + "/"; return true; } return false; } new Vue({ el: "#passwordApp", data: function () { var vm = this; return { saving: false, form: { oldPassword: "", password: "", rePassword: "" }, rules: { oldPassword: [ { required: true, message: "请输入当前密码", trigger: "blur" }, { validator: function (rule, value, callback) { var currentPassword = parentInputValue("password"); if (!currentPassword) { callback(new Error("未读取到当前用户密码")); return; } if (hex_md5(value || "") !== currentPassword) { callback(new Error("密码不匹配")); return; } callback(); }, trigger: "blur" } ], password: [ { required: true, message: "请输入新密码", trigger: "blur" }, { validator: function (rule, value, callback) { if (!value) { callback(new Error("请输入新密码")); return; } if (String(value).length < 4) { callback(new Error("不能少于4个字符")); return; } if (hex_md5(value) === parentInputValue("password")) { callback(new Error("与旧密码不能相同")); return; } callback(); }, trigger: "blur" } ], rePassword: [ { required: true, message: "请再次输入新密码", trigger: "blur" }, { validator: function (rule, value, callback) { if (value !== vm.form.password) { callback(new Error("密码不一致")); return; } callback(); }, trigger: "blur" } ] } }; }, methods: { closeDialog: function () { closeCurrentDialog(); }, handleSave: function () { var vm = this; vm.$refs.passwordForm.validate(function (valid) { if (!valid) { return false; } vm.submitSave(); return true; }); }, submitSave: function () { var vm = this; vm.saving = true; $.ajax({ url: baseUrl + "/user/update/auth", headers: { token: localStorage.getItem("token") }, data: { id: parentInputValue("id"), password: hex_md5(vm.form.password) }, method: "POST", success: function (res) { if (handleForbidden(res)) { return; } if (Number(res.code) !== 200) { vm.$message.error(res.msg || "密码修改失败"); return; } if (window.parent && window.parent.document) { var passwordInput = window.parent.document.getElementById("password"); if (passwordInput) { passwordInput.value = hex_md5(vm.form.password); } } closeCurrentDialog(); vm.$alert("密码修改成功,请重新登录", "提示", { confirmButtonText: "确定", callback: function () { localStorage.removeItem("token"); top.location.href = baseUrl + "/"; } }); }, error: function () { vm.$message.error("密码修改失败"); }, complete: function () { vm.saving = false; } }); } } }); })();