(function(n,L){if(typeof module=="object"&&module.exports){module.exports=L(n);return}n.VipPages=L(n),n.document&&n.document.addEventListener("DOMContentLoaded",function(){n.VipPages.init()})})(typeof globalThis!="undefined"?globalThis:window,function(n){"use strict";function L(a){return n.ProfileUI&&typeof n.ProfileUI.confirmAction=="function"?n.ProfileUI.confirmAction(a):Promise.resolve(!n.confirm||n.confirm(a))}var j={vip:"会员套餐",storage:"存储扩容"},z={permanent:"永久",day:"天",month:"个月",year:"年"},H={0:"待支付",1:"已支付",2:"已关闭",3:"已退款"};function m(a){return String(a==null?"":a).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function s(a){var e;return typeof a=="number"&&!Number.isSafeInteger(a)||a==null?"":(e=String(a).trim(),/^[1-9][0-9]*$/.test(e)?e:"")}function u(a){return a==null?"":String(a).trim()}function N(a,e){var r;return(a==null||a==="")&&e?"":typeof a=="number"&&(!Number.isFinite(a)||a<0)?null:(r=String(a==null?"":a).trim(),/^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$/.test(r)?r:null)}function O(a){return a==null||Number.isSafeInteger(Number(a))&&Number(a)>=0}function F(a){var e=a||{},r=s(e.packageId),o=u(e.packageName),i=u(e.packageType),y=u(e.durationUnit),I=N(e.price,!1),v=N(e.originalPrice,!0),f=String(e.status===void 0||e.status===null?"":e.status);return!r||!o||!Object.prototype.hasOwnProperty.call(j,i)||!Object.prototype.hasOwnProperty.call(z,y)||I===null||v===null||f!=="0"||!O(e.durationValue)||!O(e.genealogyLimit)||!O(e.memberLimit)||!O(e.storageLimitMb)?null:{packageId:r,packageName:o,packageType:i,packageDesc:u(e.packageDesc),price:I,originalPrice:v,durationValue:e.durationValue===void 0||e.durationValue===null?null:Number(e.durationValue),durationUnit:y,genealogyLimit:e.genealogyLimit===void 0||e.genealogyLimit===null?null:Number(e.genealogyLimit),memberLimit:e.memberLimit===void 0||e.memberLimit===null?null:Number(e.memberLimit),storageLimitMb:e.storageLimitMb===void 0||e.storageLimitMb===null?null:Number(e.storageLimitMb),remark:u(e.remark)}}function Q(a){return Array.isArray(a)?a.map(F).filter(Boolean):[]}function Y(a){var e=a||{},r=s(e.genealogyId),o=u(e.genealogyName);return!r||!o?null:{genealogyId:r,genealogyName:o,surname:u(e.surname)}}function M(a){return Array.isArray(a)?a.map(Y).filter(Boolean):[]}function _(a,e){var r=s(e);return!r||!Array.isArray(a)?"":a.some(function(o){return o.genealogyId===r})?r:""}function W(a){var e=a||{},r={},o=s(e.packageId),i=s(e.genealogyId);return o?r.packageId=o:e.packageId!==void 0&&(r.invalidPackageId=!0),i?r.genealogyId=i:e.genealogyId&&(r.invalidGenealogyId=!0),r}function $(a){return!a||!s(a.packageId)||a.invalidPackageId?"请选择有效会员套餐":a.invalidGenealogyId||a.genealogyId!==void 0&&a.genealogyId!==null&&String(a.genealogyId).trim()!==""&&!s(a.genealogyId)?"家谱选项无效":""}function K(a){var e=a||{},r=Array.isArray(e.paymentMethods)?e.paymentMethods:[],o=r.find(function(i){return i&&i.paymentMethod==="WECHAT"});return{enabled:e.enabled===!0&&!!o&&o.enabled===!0,disabledReason:u(e.disabledReason||o&&o.disabledReason)}}function G(a){var e=a||{},r=s(e.orderId),o=s(e.packageId),i=e.genealogyId===void 0||e.genealogyId===null?"":s(e.genealogyId),y=N(e.orderAmount,!1),I=N(e.payAmount,!1),v=String(e.payStatus===void 0||e.payStatus===null?"":e.payStatus),f=String(e.status===void 0||e.status===null?"":e.status);return!r||!o||!u(e.orderNo)||!u(e.packageName)||e.genealogyId!==void 0&&e.genealogyId!==null&&!i||y===null||I===null||!Object.prototype.hasOwnProperty.call(H,v)||["0","1"].indexOf(f)<0||e.transactionId!==void 0&&e.transactionId!==null&&!s(e.transactionId)?null:{orderId:r,orderNo:u(e.orderNo),packageId:o,packageName:u(e.packageName),genealogyId:i,genealogyNo:u(e.genealogyNo),genealogyName:u(e.genealogyName),orderAmount:y,payAmount:I,payType:u(e.payType),payStatus:v,payTime:u(e.payTime),expireTime:u(e.expireTime),status:f,remark:u(e.remark),transactionId:e.transactionId===void 0||e.transactionId===null?"":s(e.transactionId),canRefreshPayment:e.canRefreshPayment===!0,canClose:e.canClose===!0}}function J(a){var e=a||{},r=G(e.order),o=s(e.transactionId),i=u(e.codeUrl);return!r||!o||!i||e.tradeType!=="NATIVE"||e.paymentMethod!=="WECHAT"?null:{order:r,transactionId:o,codeUrl:i,expiresAt:u(e.expiresAt),completed:e.completed===!0}}function X(a){var e=a||{},r=s(e.transactionId),o=u(e.status);return!r||["CREATED","PAYING","SUCCESS","CLOSED","REFUNDING","REFUNDED"].indexOf(o)<0?null:{transactionId:r,status:o,paidAt:u(e.paidAt)}}function P(a){return Array.isArray(a)?a.map(G).filter(Boolean):[]}function Z(a,e){var r=Array.isArray(a)?a:[],o=s(e);return r.length?r.map(function(i){var y=i.durationUnit==="permanent"?z[i.durationUnit]:(i.durationValue===null?"":i.durationValue)+z[i.durationUnit],I=[i.genealogyLimit===null?"":"家谱 "+i.genealogyLimit+" 部",i.memberLimit===null?"":"成员 "+i.memberLimit+" 人",i.storageLimitMb===null?"":"存储 "+i.storageLimitMb+" MB"].filter(Boolean).join(" · ");return'"}).join(""):'
当前没有可用会员套餐
'}function ee(a){var e=M(a);return''+e.map(function(r){return'"}).join("")}function ae(a){var e=P(a);return e.length?e.map(function(r){var o=[r.orderNo,r.genealogyName,"订单金额 ¥"+r.orderAmount,"应付 ¥"+r.payAmount,r.payType?"支付方式 "+r.payType:"",r.payTime?"支付时间 "+r.payTime:"",r.expireTime?"有效期至 "+r.expireTime:"",r.remark].filter(Boolean).join(" · ");return''+m(r.packageName)+"
"+m(o)+'
'+H[r.payStatus]+""+(r.canRefreshPayment&&r.transactionId?'':"")+(r.canClose&&r.transactionId?'':"")+""}).join(""):'当前没有会员订单
'}function V(a,e){var r=e&&(e.status||e.code);return!a||!a.getToken||!a.getToken()||Number(r)===401}function x(a){a&&a.clearToken&&a.clearToken(),n.NavigationUtil.open("login.html")}async function le(){var a=n.document&&n.document.querySelector("[data-vip-page]"),e=n.document&&n.document.querySelector("[data-vip-package-list]"),r=n.document&&n.document.querySelector("[data-vip-selected-package]"),o=n.document&&n.document.querySelector("[data-vip-genealogy-options]"),i=n.document&&n.document.querySelector("[data-vip-order-form]"),y=n.document&&n.document.querySelector("[data-vip-order-submit]"),I=n.document&&n.document.querySelector("[data-vip-order-status]"),v=n.document&&n.document.querySelector("[data-vip-order-refresh]"),f=n.document&&n.document.querySelector("[data-vip-order-list]"),q=n.document&&n.document.querySelector("[data-vip-payment-panel]"),U=n.document&&n.document.querySelector("[data-vip-payment-qr]"),re=n.document&&n.document.querySelector("[data-vip-payment-text]"),l=n.GenealogyApi&&n.GenealogyApi.defaultClient,A=[],B="",ce=n.ProfileUI&&typeof n.ProfileUI.getGenealogyId=="function"?n.ProfileUI.getGenealogyId():"",S=!1,h=!1;if(!a)return;if(V(l)){x(l);return}if(!e||!r||!o||!i||!f||!l.vipCapability||!l.vipPackages||!l.genealogiesMine||!l.vipOrders||!l.createVipOrder){b(e,"error","会员套餐服务初始化失败,请刷新后重试。"),b(f,"error","会员订单服务初始化失败,请刷新后重试。"),p("error","会员服务接口初始化失败,请刷新后重试。");return}function ne(t,d,c){if(t){if(n.ProfileUI&&n.ProfileUI.setApiState&&d){n.ProfileUI.setApiState(t,d,c);return}t.textContent=c||""}}function p(t,d){ne(I,t,d)}function b(t,d,c){ne(t,d,c)}function C(t,d,c){t&&(t.dataset.defaultLabel||(t.dataset.defaultLabel=t.textContent),t.disabled=d,t.textContent=d?c:t.dataset.defaultLabel)}function te(){if(!A.length){b(e,"empty","当前没有可用会员套餐。");return}e.innerHTML=Z(A,B)}function R(t){var d=P(t);if(!d.length){b(f,"empty","当前没有会员订单。");return}f.innerHTML=ae(d)}async function ie(){var t=P(await l.vipOrders());return R(t),t}function se(t){!q||!U||!re||(q.hidden=!1,U.innerHTML="",typeof n.QRCode=="function"?new n.QRCode(U,{text:t.codeUrl,width:220,height:220}):U.textContent=t.codeUrl,re.textContent="请使用微信扫码支付"+(t.expiresAt?",支付单有效期至 "+t.expiresAt:""),q.setAttribute("data-transaction-id",t.transactionId))}b(e,"loading","正在读取会员套餐…"),b(f,"loading","正在读取会员订单…"),p("loading","正在读取会员服务…");try{var w=await Promise.all([l.vipCapability(),l.vipPackages(),l.genealogiesMine(),l.vipOrders()]),oe=K(w[0]),de=M(w[2]),D=_(de,ce);h=oe.enabled,A=Q(w[1]),te(),o.innerHTML=ee(de),D&&(o.value=D),R(w[3]),y.disabled=!h,p(h?"":"forbidden",h&&A.length?D?"已关联当前家谱,请选择会员套餐":"请选择会员套餐":oe.disabledReason||"当前暂不能使用微信扫码支付")}catch(t){if(V(l,t)){x(l);return}b(e,"error","会员套餐读取失败,请稍后重试。"),b(f,"error","会员订单读取失败,请稍后重试。"),p("error",t.message||"会员服务读取失败,请稍后重试。");return}e.addEventListener("click",function(t){var d=t.target.closest("[data-vip-package-id]"),c,g;!d||!e.contains(d)||(c=s(d.getAttribute("data-vip-package-id")),g=A.find(function(k){return k.packageId===c}),g&&(B=g.packageId,r.textContent="已选择:"+g.packageName+"(¥"+g.price+")",te(),p("","可以创建会员订单")))}),v&&v.addEventListener("click",async function(){if(!S){C(v,!0,"正在刷新…"),p("loading","正在刷新会员订单…");try{await ie(),p("","会员订单已刷新")}catch(t){if(V(l,t)){x(l);return}p("error",t.message||"会员订单刷新失败,请稍后重试。")}finally{C(v,!1,"正在刷新…")}}}),i.addEventListener("submit",async function(t){var d,c,g,k,T,ue;if(t.preventDefault(),!S){if(!h)return p("forbidden","当前暂不能创建支付订单");if(d=W({packageId:B,genealogyId:o.value}),c=$(d),c){p("error",c);return}S=!0,C(y,!0,"正在创建订单…"),p("loading","正在创建会员订单…");try{if(g=J(await l.createVipOrder(d)),!g)throw new Error("创建响应缺少有效微信扫码支付信息");if(k=g.order,se(g),T=P(await l.vipOrders()),ue=T.find(function(E){return E.orderId===k.orderId}),!ue)throw new Error("订单已提交,但重新读取未找到对应记录");R(T),p("","支付单已创建,请使用微信扫码支付。")}catch(E){if(V(l,E)){x(l);return}p("error",E.message||"会员订单创建失败,请稍后重试。")}finally{S=!1,C(y,!1,"正在创建订单…")}}}),f.addEventListener("click",async function(t){var d=t.target.closest("[data-vip-payment-refresh]"),c=t.target.closest("[data-vip-payment-close]"),g,k;if(!(S||!d&&!c)){g=(d||c).getAttribute(d?"data-vip-payment-refresh":"data-vip-payment-close"),S=!0;try{if(c){if(!await L("确认关闭这笔支付吗?"))return;await l.closeVipPayment(g),p("","支付单已关闭")}else{if(k=X(await l.vipPaymentStatus(g)),!k)throw new Error("支付状态响应无效");p("",k.status==="SUCCESS"?"支付成功":"当前支付状态:"+k.status)}await ie()}catch(T){p("error",T.message||"支付状态操作失败")}finally{S=!1}}})}return{normalizeVipPackage:F,normalizeVipPackages:Q,normalizeGenealogyOption:Y,normalizeGenealogyOptions:M,resolveContextGenealogyId:_,buildVipOrderBody:W,validateVipOrderBody:$,normalizeVipCapability:K,normalizeVipOrder:G,normalizeVipOrders:P,normalizePaymentOrder:J,normalizePaymentStatus:X,renderVipPackages:Z,renderGenealogyOptions:ee,renderVipOrders:ae,init:le}});