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

2 lines
6.3 KiB
JavaScript

(function(r,l){if(typeof module=="object"&&module.exports){module.exports=l(r);return}r.CeremonyPages=l(r),r.document&&r.document.addEventListener("DOMContentLoaded",function(){r.CeremonyPages.init()})})(typeof globalThis!="undefined"?globalThis:window,function(r){"use strict";var l=r.document,m=Object.create(null),g="",N=!1,x=["PENDING","ACCEPTED","DECLINED","CANCELED"],G=["ACCEPTED","DECLINED"],L={PENDING:"待响应",ACCEPTED:"已接受",DECLINED:"已拒绝",CANCELED:"已取消"};function h(){return r.GenealogyApi&&r.GenealogyApi.defaultClient}function y(n,e){return l?(e||l).querySelector(n):null}function P(n,e){var t=e&&(e.status||e.code);return!n||!n.getToken||!n.getToken()||Number(t)===401}function f(n){return Number(n&&(n.status||n.code))===403}function I(n,e){return P(n,e)?(n&&n.clearToken&&n.clearToken(),r.NavigationUtil.open("login.html"),!0):!1}function p(n){return n==null||n===""||typeof n=="number"&&!Number.isSafeInteger(n)?"":/^[1-9][0-9]*$/.test(String(n))?String(n):""}function s(n){return n==null?"":String(n)}function V(n){var e;if(!(n==null||n===""))return e=Number(n),Number.isSafeInteger(e)?e:void 0}function R(n){var e;if(!(n==null||n===""))return e=Number(n),Number.isFinite(e)?e:void 0}function w(n){var e=p(n&&n.invitationId),t=p(n&&n.genealogyId),i=p(n&&n.ceremonyId),a=p(n&&n.inviteeUserId),c=s(n&&n.inviteStatus),u,C,A,S;return!e||!t||!i||x.indexOf(c)<0?null:(u={invitationId:e,genealogyId:t,ceremonyId:i,inviteStatus:c,deliveredTime:s(n.deliveredTime),readTime:s(n.readTime),responseTime:s(n.responseTime),ceremonyTitle:s(n.ceremonyTitle),ceremonyTime:s(n.ceremonyTime),location:s(n.location),locationAddress:s(n.locationAddress)},a&&(u.inviteeUserId=a),C=V(n.inviteVersion),A=R(n.longitude),S=R(n.latitude),C!==void 0&&(u.inviteVersion=C),A!==void 0&&(u.longitude=A),S!==void 0&&(u.latitude=S),u)}function U(n){return Array.isArray(n)?n:[]}function k(n){return{inviteStatus:s(n&&n.inviteStatus)}}function B(n){return!n||G.indexOf(n.inviteStatus)<0?"邀请只能选择接受或拒绝":""}function b(n){return!!(n&&n.inviteStatus==="PENDING")}function o(n){return s(n).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function T(n){return n.ceremonyTitle||"未命名贺礼活动"}function z(n){var e='<button class="pill" type="button" data-invitation-detail="'+o(n.invitationId)+'">查看详情</button>';return b(n)&&(e+='<button class="pill" type="button" data-invitation-response="ACCEPTED" data-invitation-id="'+o(n.invitationId)+'">接受邀请</button><button class="pill is-danger" type="button" data-invitation-response="DECLINED" data-invitation-id="'+o(n.invitationId)+'">拒绝邀请</button>'),'<article class="module-row ceremony-invitation-row" data-invitation-row="'+o(n.invitationId)+'"><div><h3>'+o(T(n))+"</h3><p>"+o(L[n.inviteStatus])+(n.ceremonyTime?" · "+o(n.ceremonyTime):"")+(n.location?" · "+o(n.location):"")+'</p></div><div class="row-actions">'+e+"</div></article>"}function v(n,e){return"<p><span>"+o(n)+"</span><b>"+o(e||"未提供")+"</b></p>"}function O(n){var e="";return n?(n.longitude!==void 0&&n.latitude!==void 0&&(e=' <a class="pill" target="_blank" rel="noopener noreferrer" href="https://uri.amap.com/marker?position='+encodeURIComponent(n.longitude+","+n.latitude)+"&amp;name="+encodeURIComponent(n.location||n.locationAddress||T(n))+'">打开地图</a>'),'<div class="form-like invitation-detail">'+v("活动标题",T(n))+v("邀请状态",L[n.inviteStatus])+v("活动时间",n.ceremonyTime)+v("地点",n.location)+"<p><span>详细地址</span><b>"+o(n.locationAddress||"未提供")+e+"</b></p>"+v("投递时间",n.deliveredTime)+v("阅读时间",n.readTime)+v("响应时间",n.responseTime)+"</div>"):""}function D(n){var e=y("[data-my-invitation-detail]");if(g=n?n.invitationId:"",!!e){if(!n){d("[data-my-invitation-detail]","empty","请选择一条邀请查看详情");return}e.innerHTML=O(n)}}function j(n){var e=y("[data-my-invitation-list]"),t=U(n).map(w),i=t.filter(function(c){return!c}).length,a=t.filter(Boolean);return m=Object.create(null),a.forEach(function(c){m[c.invitationId]=c}),e?i?(d("[data-my-invitation-list]","error","邀请响应缺少稳定 ID 或合法状态,请联系后端核对 DTO。"),d("[data-my-invitation-detail]","error","邀请详情暂不可用,请联系后端核对 DTO。"),[]):a.length?(e.innerHTML=a.map(z).join(""),D(m[g]||a[0]),a):(d("[data-my-invitation-list]","empty","暂无贺礼邀请"),D(null),[]):a}function M(n){var e;N=n,l&&(e=l.querySelectorAll("[data-invitation-response]"),Array.prototype.forEach.call(e,function(t){t.disabled=n}))}function d(n,e,t){var i=y(n);if(i){if(!t){i.innerHTML="";return}if(e&&r.ProfileUI&&r.ProfileUI.setApiState){r.ProfileUI.setApiState(i,e,t);return}i.textContent=t}}async function E(){var n=h();if(!I(n)){d("[data-my-invitation-list]","loading","正在加载我的邀请…"),d("[data-my-invitation-detail]","loading","正在加载邀请详情…");try{j(await n.myCeremonyInvitations())}catch(e){if(I(n,e))return;d("[data-my-invitation-list]",f(e)?"forbidden":"error",f(e)?"当前账号无权查看邀请。":e.message||"邀请加载失败"),d("[data-my-invitation-detail]",f(e)?"forbidden":"error",f(e)?"当前账号无权查看邀请。":"邀请详情加载失败,请稍后重试。")}}}async function q(n,e){var t=h(),i=m[p(n)],a=k({inviteStatus:e}),c=B(a);if(!(N||I(t)||!i||!b(i))&&!c){M(!0),d("[data-my-invitation-status]","loading","正在更新邀请状态…");try{await t.respondCeremonyInvitation(i.genealogyId,i.ceremonyId,a),g=i.invitationId,await E(),d("[data-my-invitation-status]","","邀请状态已更新。")}catch(u){if(I(t,u))return;d("[data-my-invitation-status]",f(u)?"forbidden":"error",f(u)?"当前账号无权响应该邀请。":u.message||"邀请响应失败")}finally{M(!1)}}}function H(){l&&l.addEventListener("click",function(n){var e=n.target.closest("[data-invitation-detail]"),t=n.target.closest("[data-invitation-response]");if(e){n.preventDefault(),D(m[e.getAttribute("data-invitation-detail")]||null);return}t&&(n.preventDefault(),q(t.getAttribute("data-invitation-id"),t.getAttribute("data-invitation-response")))})}function F(){!l||!y("[data-ceremony-page]")||(H(),E())}return{normalizeInvitation:w,normalizeList:U,buildInvitationResponseBody:k,validateInvitationResponseBody:B,canRespondToInvitation:b,renderInvitationRow:z,renderInvitationDetail:O,shouldRedirectToLogin:P,isForbidden:f,loadMyInvitations:E,init:F}});