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

2 lines
8.8 KiB
JavaScript

(function(n,S){if(typeof module=="object"&&module.exports){module.exports=S(n);return}n.FeedbackPages=S(n),n.document&&n.document.addEventListener("DOMContentLoaded",function(){n.FeedbackPages.init()})})(typeof globalThis!="undefined"?globalThis:window,function(n){"use strict";var S=["ACTIVE","DISABLED","UNKNOWN"],I={0:"待处理",1:"处理中",2:"已处理",3:"已关闭"};function f(a){return String(a==null?"":a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function T(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 O(a){var e=new URLSearchParams(String(a===void 0&&n.location?n.location.search:a||"").replace(/^\?/,""));return T(e.get("feedbackId"))}function D(a){var e=a||{},t={},r=u(e.feedbackType),d=u(e.feedbackContent),i=u(e.contactInfo);return r&&(t.feedbackType=r),d&&(t.feedbackContent=d),i&&(t.contactInfo=i),t}function U(a,e){var t=a||{},r=Array.isArray(e)?e:[];return u(t.feedbackContent)?t.feedbackType&&r.length&&r.indexOf(t.feedbackType)<0?"反馈类型无效":"":"请填写反馈内容"}function x(a){return Array.isArray(a)?a.reduce(function(e,t){var r=t||{},d=u(r.value),i=u(r.label);return d&&i&&r.enabled===!0&&e.push({value:d,label:i}),e},[]):[]}function F(a){var e=a||{},t=T(e.feedbackId),r=u(e.feedbackType),d=u(e.feedbackTypeLabel)||r,i=u(e.feedbackTypeOptionState),y=u(e.feedbackContent),h=String(e.handleStatus===void 0||e.handleStatus===null?"":e.handleStatus),v=String(e.status===void 0||e.status===null?"":e.status);return!t||!y||!r||!d||S.indexOf(i)<0||!Object.prototype.hasOwnProperty.call(I,h)||["0","1"].indexOf(v)<0?null:{feedbackId:t,feedbackType:r,feedbackTypeLabel:d,feedbackTypeOptionState:i,feedbackContent:y,contactInfo:u(e.contactInfo),handleStatus:h,handleResult:u(e.handleResult),handleTime:u(e.handleTime),status:v,remark:u(e.remark)}}function L(a){var e;return Array.isArray(a)?(e=a.map(F),e.some(function(t){return!t})?[]:e):[]}function B(a,e){var t=T(e),r=L(a),d;return t?(d=r.find(function(i){return i.feedbackId===t}),d||null):null}function A(a,e){var t=T(a),r;return t?(r=new URLSearchParams,r.set("feedbackId",t),(e||"ticket-detail.html")+"?"+r.toString()):""}function N(a,e){var t=e||{},r=L(a),d=t.detailPage||"ticket-detail.html";return r.length?r.map(function(i){return'<a class="module-row" href="'+f(A(i.feedbackId,d))+'"><div><h3>'+f(i.feedbackTypeLabel)+"</h3><p>"+f(i.feedbackContent)+'</p></div><span class="pill">'+I[i.handleStatus]+"</span></a>"}).join(""):'<div class="api-empty">当前没有反馈记录</div>'}function z(a){var e=F(a),t;return e?(t=[e.contactInfo?"<dt>提交联系方式</dt><dd>"+f(e.contactInfo)+"</dd>":"","<dt>处理状态</dt><dd>"+I[e.handleStatus]+"</dd>",e.handleResult?"<dt>处理结果</dt><dd>"+f(e.handleResult)+"</dd>":"",e.handleTime?"<dt>处理时间</dt><dd>"+f(e.handleTime)+"</dd>":"",e.remark?"<dt>备注</dt><dd>"+f(e.remark)+"</dd>":""].filter(Boolean).join(""),'<article class="module-panel"><div class="module-kicker">'+f(e.feedbackTypeLabel)+"</div><h2>问题说明</h2><p>"+f(e.feedbackContent)+'</p><dl class="detail-list">'+t+"</dl></article>"):'<div class="api-empty">反馈记录不存在或无权查看</div>'}function k(a,e){var t=e&&(e.status||e.code);return!a||!a.getToken||!a.getToken()||Number(t)===401}function m(a){a&&a.clearToken&&a.clearToken(),n.NavigationUtil.open("login.html")}function c(a){return Number(a&&(a.status||a.code))===403}function _(a){var e={};return Array.prototype.forEach.call(a.querySelectorAll("[name]"),function(t){e[t.name]=t.value}),e}function o(a,e,t){if(a){if(n.ProfileUI&&n.ProfileUI.setApiState&&e){n.ProfileUI.setApiState(a,e,t);return}a.textContent=t||""}}function l(a,e){var t=n.document&&n.document.querySelector("[data-feedback-status]");o(t,a,e)}function P(a,e,t){if(a){if(!e.length){o(a,"empty","当前没有反馈记录。");return}a.innerHTML=N(e,{detailPage:t||"ticket-detail.html"})}}function p(a,e,t){a&&(a.dataset.defaultLabel||(a.dataset.defaultLabel=a.textContent),a.disabled=e,a.textContent=e?t:a.dataset.defaultLabel)}async function K(a,e){var t=x(await a.businessDictionary("gen_feedback_type"));if(!t.length)throw new Error("反馈类型选项响应无效");return e&&(e.innerHTML='<option value="">请选择反馈类型(可选)</option>'+t.map(function(r){return'<option value="'+f(r.value)+'">'+f(r.label)+"</option>"}).join("")),t}async function C(a){var e=await a.myFeedback(),t=L(e);if(!Array.isArray(e)||t.length!==e.length)throw new Error("反馈列表响应无效");return t}async function M(){var a=n.document&&n.document.querySelector("[data-feedback-form]"),e=n.document&&n.document.querySelector("[data-feedback-list]"),t=n.document&&n.document.querySelector("[data-feedback-refresh]"),r=n.document&&n.document.querySelector("[data-feedback-page]"),d=n.GenealogyApi&&n.GenealogyApi.defaultClient,i=r&&r.getAttribute("data-feedback-page"),y=a&&a.querySelector("[data-feedback-type-options]"),h=[],v=!1;if(!a)return;if(k(d)){m(d);return}try{h=(await K(d,y)).map(function(b){return b.value})}catch(b){y&&(y.innerHTML='<option value="">暂不选择反馈类型</option>')}async function H(){var b;if(!e)return[];o(e,"loading","正在读取反馈记录…"),l("loading","正在读取反馈记录…");try{return b=await C(d),P(e,b,"ticket-detail.html"),l("",""),b}catch(s){return k(d,s)?(m(d),[]):(o(e,c(s)?"forbidden":"error",c(s)?"暂无权限查看反馈记录。":"读取反馈记录失败,请稍后重试。"),l(c(s)?"forbidden":"error",c(s)?"暂无权限查看反馈记录。":s.message||"读取反馈记录失败,请稍后重试。"),[])}}t&&t.addEventListener("click",async function(){p(t,!0,"正在刷新…");try{await H()}finally{p(t,!1,"正在刷新…")}}),a.addEventListener("submit",async function(b){var s,q,w,E,j=a.querySelector("[data-feedback-submit]");if(b.preventDefault(),!v){if(s=D(_(a)),q=U(s,h),q){l("error",q);return}v=!0,p(j,!0,"正在提交…"),l("loading","正在提交反馈…");try{if(w=F(await d.submitFeedback(s)),!w)throw new Error("提交响应缺少有效反馈信息");if(E=await C(d),!E.some(function(g){return g.feedbackId===w.feedbackId}))throw new Error("提交后无法读取同一反馈记录");if(i==="ticket"){n.NavigationUtil.open(A(w.feedbackId));return}P(e,E,"ticket-detail.html"),a.reset(),l("","反馈已提交")}catch(g){if(k(d,g)){m(d);return}l(c(g)?"forbidden":"error",c(g)?"暂无权限提交反馈。":g.message||"提交反馈失败,请稍后重试。")}finally{v=!1,p(j,!1,"正在提交…")}}}),await H()}async function R(){var a=n.document&&n.document.querySelector("[data-feedback-list-page]"),e=n.document&&n.document.querySelector("[data-feedback-list]"),t=n.document&&n.document.querySelector("[data-feedback-refresh]"),r=n.GenealogyApi&&n.GenealogyApi.defaultClient;if(!a||!e)return;if(k(r)){m(r);return}async function d(){try{o(e,"loading","正在读取反馈记录…"),l("loading","正在读取反馈记录…"),P(e,await C(r),"ticket-detail.html"),l("","")}catch(i){if(k(r,i)){m(r);return}o(e,c(i)?"forbidden":"error",c(i)?"暂无权限查看反馈记录。":"读取反馈记录失败,请稍后重试。"),l(c(i)?"forbidden":"error",c(i)?"暂无权限查看反馈记录。":i.message||"读取反馈记录失败,请稍后重试。")}}t&&t.addEventListener("click",async function(){p(t,!0,"正在刷新…");try{await d()}finally{p(t,!1,"正在刷新…")}}),await d()}async function G(){var a=n.document&&n.document.querySelector("[data-feedback-detail-page]"),e=n.document&&n.document.querySelector("[data-feedback-detail]"),t=n.GenealogyApi&&n.GenealogyApi.defaultClient,r=O(),d;if(!(!a||!e)){if(!r){o(e,"empty","反馈记录不存在或无权查看。");return}if(k(t)){m(t);return}try{o(e,"loading","正在读取反馈详情…"),l("loading","正在读取反馈详情…"),d=B(await t.myFeedback(),r),d?e.innerHTML=z(d):o(e,"empty","反馈记录不存在或无权查看。"),l("",d?"":"反馈记录不存在或无权查看。")}catch(i){if(k(t,i)){m(t);return}o(e,c(i)?"forbidden":"error",c(i)?"暂无权限查看该反馈详情。":"反馈详情读取失败,请稍后重试。"),l(c(i)?"forbidden":"error",c(i)?"暂无权限查看该反馈详情。":i.message||"反馈详情读取失败,请稍后重试。")}}}async function V(){if(n.document&&n.document.querySelector("[data-feedback-form]")){await M();return}if(n.document&&n.document.querySelector("[data-feedback-list-page]")){await R();return}n.document&&n.document.querySelector("[data-feedback-detail-page]")&&await G()}return{getFeedbackId:O,buildFeedbackBody:D,validateFeedbackBody:U,normalizeFeedbackTypeOptions:x,normalizeFeedback:F,normalizeFeedbackList:L,findFeedbackById:B,buildFeedbackDetailUrl:A,renderFeedbackList:N,renderFeedbackDetail:z,isForbidden:c,initFeedbackFormPage:M,initFeedbackListPage:R,initFeedbackDetailPage:G,init:V}});