Files
jiapu/dist/public/js/vip-pages.js
T

2 lines
12 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
(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,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}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'<button class="module-card'+(i.packageId===o?" is-selected":"")+'" type="button" data-vip-package-id="'+m(i.packageId)+'" data-vip-package-name="'+m(i.packageName)+'"><span class="icon">会</span><h3>'+m(i.packageName)+"</h3><p>"+m([j[i.packageType],i.packageDesc,y,I].filter(Boolean).join(" · "))+"</p><strong>¥"+m(i.price)+"</strong></button>"}).join(""):'<div class="api-empty">当前没有可用会员套餐</div>'}function ee(a){var e=M(a);return'<option value="">不关联具体家谱</option>'+e.map(function(r){return'<option value="'+m(r.genealogyId)+'">'+m(r.genealogyName+(r.surname?" · "+r.surname+"氏":""))+"</option>"}).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'<article class="module-row"><div><h3>'+m(r.packageName)+"</h3><p>"+m(o)+'</p></div><span class="pill">'+H[r.payStatus]+"</span>"+(r.canRefreshPayment&&r.transactionId?'<button class="btn outline" type="button" data-vip-payment-refresh="'+m(r.transactionId)+'">查询支付</button>':"")+(r.canClose&&r.transactionId?'<button class="btn outline" type="button" data-vip-payment-close="'+m(r.transactionId)+'">关闭支付</button>':"")+"</article>"}).join(""):'<div class="api-empty">当前没有会员订单</div>'}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}});