(function(a,g){if(typeof module=="object"&&module.exports){module.exports=g(a);return}a.SecurityPages=g(a),a.document&&a.document.addEventListener("DOMContentLoaded",function(){a.SecurityPages.init()})})(typeof globalThis!="undefined"?globalThis:window,function(a){"use strict";function g(e){return a.ProfileUI&&typeof a.ProfileUI.confirmAction=="function"?a.ProfileUI.confirmAction(e):Promise.resolve(!a.confirm||a.confirm(e))}var l=a.document,_={phone:"phone-change",deactivate:"account-deactivate"},U=60,s="";function m(e){return _[e]||""}function L(e){return a.hex_md5?a.hex_md5(e):a.md5?a.md5(e):e}function T(e,t){var r=e||{},n=t||L;return{oldPassword:n(String(r.oldPassword||"").trim()),newPassword:n(String(r.newPassword||"").trim())}}function S(e){var t=e||{};return{phone:String(t.phone||"").trim(),smsCode:String(t.smsCode||"").trim()}}function k(e){var t=e||{};return{smsCode:String(t.smsCode||"").trim()}}function A(e){return String(e||"").trim()==="确认注销"}function f(e){return/^1\d{10}$/.test(String(e||"").trim())}function P(e){return/^\d{4}$/.test(String(e||"").trim())}function c(){return a.GenealogyApi&&a.GenealogyApi.defaultClient}function b(e,t){var r=t&&(t.status||t.code);return!e||!e.getToken||!e.getToken()||Number(r)===401}function B(e){e&&e.clearToken&&e.clearToken(),a.NavigationUtil.open("login.html")}function o(e,t){return b(e,t)?(B(e),!0):!1}async function I(e,t,r){var n=a.CaptchaPages,d=m(t);return d?!n||!n.ensureToken?(u("验证码组件未加载,请刷新后重试"),!1):!!await n.ensureToken(e,{operationCode:d,subject:r||""}):!0}function v(e,t){return(t||l).querySelector(e)}function y(e,t){return Array.prototype.slice.call((t||l).querySelectorAll(e))}function u(e){if(a.layui&&a.layui.layer){a.layui.layer.msg(e);return}a.alert(e)}function h(e){var t={};return y("[name]",e).forEach(function(r){t[r.name]=r.value}),t}function i(e,t,r){var n=v("[data-security-status]",e);if(n){if(a.ProfileUI&&a.ProfileUI.setApiState&&t){a.ProfileUI.setApiState(n,t,r);return}n.textContent=r||""}}function p(e,t){y('button[type="submit"]',e).forEach(function(r){r.dataset.defaultLabel||(r.dataset.defaultLabel=r.textContent),r.disabled=t,r.textContent=t?"提交中…":r.dataset.defaultLabel})}function C(e,t){y("[data-security-bound-phone]").forEach(function(r){if(a.ProfileUI&&a.ProfileUI.setApiState&&e){a.ProfileUI.setApiState(r,e,t);return}r.textContent=t||""})}function E(e){var t=v('input[name="validToken"]',e);t&&(t.value="")}function w(e){var t=v('input[name="validToken"]',e),r=t&&t.value||"";return t&&(t.value=""),r}function x(e){var t,r=U,n;!e||typeof a.setInterval!="function"||(e.__smsCooldownTimer&&typeof a.clearInterval=="function"&&a.clearInterval(e.__smsCooldownTimer),t=e.getAttribute("data-sms-code-label")||e.textContent.trim(),e.setAttribute("data-sms-code-label",t),e.disabled=!0,e.textContent=r+" 秒后重试",n=a.setInterval(function(){if(r-=1,r>0){e.textContent=r+" 秒后重试";return}typeof a.clearInterval=="function"&&a.clearInterval(n),e.__smsCooldownTimer=null,e.disabled=!1,e.textContent=t},1e3),e.__smsCooldownTimer=n)}function D(e){var t=String(e||"").trim();return f(t)?t.slice(0,3)+"****"+t.slice(-4):""}async function O(){var e=c(),t,r;if(!(!e||!l)&&!o(e)){C("loading","正在读取已绑定手机号…");try{t=await e.currentProfile(),s=String(t&&t.phone||"").trim(),r=f(s)?"验证码将发送至 "+D(s):"未获取到已绑定手机号",C("",r)}catch(n){if(o(e,n))return;C("error","读取已绑定手机号失败,请刷新后重试。"),u(n.message||"账号资料加载失败")}}}async function N(e){var t=c(),r=h(e);if(!o(t)){if(!r.oldPassword||!r.newPassword){i(e,"error","请填写当前密码和新密码"),u("请填写原密码和新密码");return}if(String(r.newPassword).length<6){i(e,"error","新密码至少需要 6 位"),u("新密码至少需要 6 位");return}if(r.newPassword!==r.confirmPassword){i(e,"error","两次新密码不一致"),u("两次新密码不一致");return}try{p(e,!0),i(e,"loading","正在修改密码…"),await t.changePassword(T(r)),i(e,"","密码已修改"),u("密码已修改"),e.reset()}catch(n){if(o(t,n))return;i(e,"error","修改失败,请稍后重试。"),u(n.message||"密码修改失败")}finally{p(e,!1)}}}async function q(e){var t=c(),r=S(h(e));if(!o(t)){if(!r.phone||!r.smsCode){i(e,"error","请填写新手机号和验证码"),u("请填写新手机号和验证码");return}if(!f(r.phone)){i(e,"error","请输入正确的新手机号"),u("请输入正确的新手机号");return}if(!P(r.smsCode)){i(e,"error","请输入正确的短信验证码"),u("请输入正确的短信验证码");return}try{p(e,!0),i(e,"loading","正在换绑手机号…"),await t.changePhone(r),s=r.phone,C("","验证码将发送至 "+D(s)),i(e,"","手机号已换绑"),u("手机号已换绑"),e.reset()}catch(n){if(o(t,n))return;i(e,"error","换绑失败,请稍后重试。"),u(n.message||"手机号换绑失败")}finally{p(e,!1)}}}async function R(e){var t=c(),r=v('[data-security-form="phone"]'),n;if(!(!r||o(t))){if(n=h(r),!f(n.phone)){i(r,"error","请输入正确的新手机号"),u("请输入正确的新手机号");return}if(await I(r,"phone",n.phone)){n=h(r),n.validToken=w(r),e.disabled=!0,i(r,"loading","正在发送验证码…");try{await t.sendSmsCode(m("phone"),{phone:n.phone,validToken:n.validToken||""}),i(r,"","验证码已发送,请查收短信。"),u("验证码已发送"),x(e)}catch(d){if(o(t,d))return;i(r,"error","验证码发送失败,请稍后重试。"),u(d.message||"验证码发送失败"),e.disabled=!1}}}}async function M(e){var t=c(),r=v('[data-security-form="deactivate"]'),n;if(!(!r||o(t))){if(!f(s)){i(r,"error","未获取到已绑定手机号,请刷新后重试。"),u("未获取到已绑定手机号,请刷新后重试");return}if(await I(r,"deactivate",s)){n=h(r),n.validToken=w(r),e.disabled=!0,i(r,"loading","正在发送验证码…");try{await t.sendSmsCode(m("deactivate"),{phone:s,validToken:n.validToken||""}),i(r,"","验证码已发送,请查收短信。"),u("验证码已发送"),x(e)}catch(d){if(o(t,d))return;i(r,"error","验证码发送失败,请稍后重试。"),u(d.message||"验证码发送失败"),e.disabled=!1}}}}async function V(e){var t=c(),r=h(e);if(!o(t)){if(!P(r.smsCode)){i(e,"error","请输入正确的短信验证码"),u("请输入正确的短信验证码");return}if(!A(r.confirmText)){i(e,"error","请完整输入“确认注销”"),u("请完整输入“确认注销”");return}if(await g("账号注销后将退出登录,确认继续?"))try{p(e,!0),i(e,"loading","正在提交注销申请…"),await t.deactivateAccount(k(r)),u("账号已提交注销"),a.NavigationUtil.open("index.html")}catch(n){if(o(t,n))return;i(e,"error","注销失败,请稍后重试。"),u(n.message||"账号注销失败")}finally{p(e,!1)}}}async function j(){var e=c();if(await g("确认退出当前账号?"))try{e&&await e.logout()}catch(t){}finally{a.NavigationUtil.open("index.html")}}function G(){l&&(l.addEventListener("submit",function(e){var t=e.target.closest("[data-security-form]"),r;if(t){if(e.preventDefault(),!t.checkValidity()){i(t,"error","请检查表单填写是否正确"),t.reportValidity();return}r=t.getAttribute("data-security-form"),r==="password"&&N(t),r==="phone"&&q(t),r==="deactivate"&&V(t)}}),l.addEventListener("click",function(e){var t=e.target.closest("[data-security-send-code]"),r=e.target.closest("[data-security-send-deactivate-code]"),n=e.target.closest("[data-security-logout]");if(t){e.preventDefault(),R(t);return}if(r){e.preventDefault(),M(r);return}n&&(e.preventDefault(),j())}))}function $(){y('[data-security-form] input[name="phone"]').forEach(function(e){e.addEventListener("input",function(){E(e.closest("[data-security-form]"))})})}function z(){!l||!v("[data-security-page]")||o(c())||(G(),$(),O())}return{buildPasswordChangeBody:T,buildPhoneChangeBody:S,buildDeactivateBody:k,getCaptchaOperation:m,isDangerConfirmed:A,isPhone:f,isSmsCode:P,takeCaptchaToken:w,shouldRedirectToLogin:b,init:z}});