2 lines
11 KiB
JavaScript
2 lines
11 KiB
JavaScript
import{p as pageScrollTo,k as createAnimation$1,a as setNavigationBarTitle,l as previewImage,n as navigateTo,c as createBlock,w as withCtx,m as getSystemInfoSync,i as index$g,o as openBlock,q as renderSlot,g as createCommentVNode,b as createVNode,u as normalizeStyle,v as createBaseVNode,x as getCurrentPages$1,y as navigateBack,z as redirectTo,A as resolveDynamicComponent,S as ScrollView,d as createTextVNode,t as toDisplayString,h as index$x}from"./index-BeUtwrrb.js";import{_ as _export_sfc,a as getContractDetail,r as refreshCurrentWebviewToken}from"./_plugin-vue_export-helper.C77rDQpE.js";const cfg={userAgentStyles:{blockquote:"margin:5px 0;padding:5px 8px;border-left:3px solid #dbdbdb;background:#f8f8f8;",code:"font-family:monospace;background:#f6f6f6;padding:1px 3px;border-radius:2px;",img:"max-width:100%;height:auto;",ol:"margin:0;padding-left:20px;",p:"margin:0;",table:"border-collapse:collapse;width:100%;",td:"border:1px solid #ddd;padding:4px;",th:"border:1px solid #ddd;padding:4px;",ul:"margin:0;padding-left:20px;",video:"max-width:100%;"}};var rpx=getSystemInfoSync().screenWidth/750;const _sfc_main$1={name:"parser",data:()=>({uid:"jyf"+Math.random().toString(36).slice(2),scaleAm:"",showAm:"",imgs:[],nodes:[]}),props:{html:null,autopause:{type:Boolean,default:!0},autosetTitle:{type:Boolean,default:!0},domain:String,gestureZoom:Boolean,lazyLoad:Boolean,selectable:Boolean,tagStyle:Object,showWithAnimation:Boolean,useAnchor:Boolean},watch:{html(t){this.setContent(t)}},mounted(){this.imgList=[],this.imgList.each=function(t){for(var e=0,i=this.length;e<i;e++)this.setItem(e,t(this[e],e,this))},this.imgList.setItem=function(t,e){if(null!=t&&e){if(0==e.indexOf("http")&&this.includes(e)){for(var i,s="",r=0;(i=e[r])&&("/"!=i||"/"==e[r-1]||"/"==e[r+1]);r++)s+=Math.random()>.5?i.toUpperCase():i;return s+=e.substr(r),this[t]=s}if(this[t]=e,e.includes("data:image"))if(!e.match(/data:image\/(\S+?);(\S+?),(.+)/))return}},this.html&&this.setContent(this.html)},beforeDestroy(){this._destroy()},beforeUnmount(){this._destroy()},methods:{_destroy(){this._destroyed||(this._destroyed=!0,this._observer&&this._observer.disconnect(),this.imgList&&this.imgList.each(t=>{}),clearInterval(this._timer))},_Dom2Str(t){var e="";for(var i of t)if("text"==i.type)e+=i.text;else{for(var s in e+="<"+i.name,i.attrs||{})e+=" "+s+'="'+i.attrs[s]+'"';i.children&&i.children.length?e+=">"+this._Dom2Str(i.children)+"</"+i.name+">":e+=">"}return e},_handleHtml(t,e){if("string"!=typeof t&&(t=this._Dom2Str(t.nodes||t)),t.includes("rpx")&&(t=t.replace(/[0-9.]+\s*rpx/g,t=>parseFloat(t)*rpx+"px")),!e){var i="<style>@keyframes show{0%{opacity:0}100%{opacity:1}}";for(var s in cfg.userAgentStyles)i+=`${s}{${cfg.userAgentStyles[s]}}`;for(s in this.tagStyle)i+=`${s}{${this.tagStyle[s]}}`;t=(i+="</style>")+t}return t},setContent(t,e){if(t){var i=document.createElement("div");e?this.rtf?this.rtf.appendChild(i):this.rtf=i:(this.rtf&&this.rtf.parentNode.removeChild(this.rtf),this.rtf=i),i.innerHTML=this._handleHtml(t,e);for(var s,r=this.rtf.getElementsByTagName("style"),a=0;s=r[a++];)s.innerHTML=s.innerHTML.replace(/body/g,"#rtf"+this.uid),s.setAttribute("scoped","true");!this._observer&&this.lazyLoad&&IntersectionObserver&&(this._observer=new IntersectionObserver(t=>{for(let e,i=0;e=t[i++];)e.isIntersecting&&(e.target.src=e.target.getAttribute("data-src"),e.target.removeAttribute("data-src"),this._observer.unobserve(e.target))},{rootMargin:"900px 0px 900px 0px"}));var o=this,n=this.rtf.getElementsByTagName("title");n.length&&this.autosetTitle&&setNavigationBarTitle({title:n[0].innerText}),this.imgList.length=0;var l=this.rtf.getElementsByTagName("img");for(let t,e=0,i=0;t=l[e];e++){t.style.maxWidth="100%";var h=t.getAttribute("src");this.domain&&h&&("/"==h[0]?"/"==h[1]?t.src=(this.domain.includes("://")?this.domain.split("://")[0]:"")+":"+h:t.src=this.domain+h:h.includes("://")||(t.src=this.domain+"/"+h)),t.hasAttribute("ignore")||"A"==t.parentElement.nodeName||(t.i=i++,o.imgList.push(t.src||t.getAttribute("data-src")),t.onclick=function(){var t=!0;this.ignore=()=>t=!1,o.$emit("imgtap",this),t&&previewImage({current:this.i,urls:o.imgList})}),t.onerror=function(){o.$emit("error",{source:"img",target:this})},o.lazyLoad&&this._observer&&t.src&&0!=t.i&&(t.setAttribute("data-src",t.src),t.removeAttribute("src"),this._observer.observe(t))}var c=this.rtf.getElementsByTagName("a");for(var d of c)d.onclick=function(){var t=!0,e=this.getAttribute("href");if(o.$emit("linkpress",{href:e,ignore:()=>t=!1}),t&&e)if("#"==e[0])o.useAnchor&&o.navigateTo({id:e.substr(1)});else{if(0==e.indexOf("http")||0==e.indexOf("//"))return!0;navigateTo({url:e})}return!1};var m=this.rtf.getElementsByTagName("video");o.videoContexts=m;for(let t,e=0;t=m[e++];)t.style.maxWidth="100%",t.style.height="auto",t.onerror=function(){o.$emit("error",{source:"video",target:this})},t.onplay=function(){if(o.autopause)for(let t,e=0;t=o.videoContexts[e++];)t!=this&&t.pause()};var g,f=this.rtf.getElementsByTagName("audios");for(var p of f)p.onerror=function(){o.$emit("error",{source:"audio",target:this})};this.document=this.rtf,e||document.getElementById("rtf"+this.uid).appendChild(this.rtf),this.$nextTick(()=>{this.nodes=[1],this.$emit("load")}),setTimeout(()=>this.showAm="",500),clearInterval(this._timer),this._timer=setInterval(()=>{var t=[this.rtf.getBoundingClientRect()];this.width=t[0].width,t[0].height==g&&(this.$emit("ready",t[0]),clearInterval(this._timer)),g=t[0].height},350),this.showWithAnimation&&!e&&(this.showAm="animation:show .5s")}else this.rtf&&!e&&this.rtf.parentNode.removeChild(this.rtf)},getText(t=this.nodes){return this.rtf.innerText},navigateTo(t){if(!this.useAnchor)return t.fail&&t.fail({errMsg:"Anchor is disabled"});if(!t.id)return window.scrollTo(0,this.rtf.offsetTop),t.success&&t.success({errMsg:"pageScrollTo:ok"});var e=document.getElementById(t.id);if(!e)return t.fail&&t.fail({errMsg:"Label not found"});t.scrollTop=this.rtf.offsetTop+e.offsetTop,pageScrollTo(t)},getVideoContext(t){if(!t)return this.videoContexts;for(var e=this.videoContexts.length;e--;)if(this.videoContexts[e].id==t)return this.videoContexts[e]},preLoad(html,num){html.constructor==Array&&(html=this._Dom2Str(html));var script="var contain=document.createElement('div');contain.innerHTML='"+html.replace(/'/g,"\\'")+"';for(var imgs=contain.querySelectorAll('img'),i=imgs.length-1;i>="+num+";i--)imgs[i].removeAttribute('src');";eval(script)},_tap(t){if(this.gestureZoom&&t.timeStamp-this._lastT<300){var e=t.touches[0].pageY-t.currentTarget.offsetTop;if(this._zoom)this._scaleAm.translateX(0).scale(1).step(),pageScrollTo({scrollTop:(e+this._initY)/2-t.touches[0].clientY,duration:400});else{var i=t.touches[0].pageX-t.currentTarget.offsetLeft;this._initY=e,this._scaleAm=createAnimation$1({transformOrigin:`${i}px ${this._initY}px 0`,timingFunction:"ease-in-out"}),this._scaleAm.scale(2).step(),this._tMax=i/2,this._tMin=(i-this.width)/2,this._tX=0}this._zoom=!this._zoom,this.scaleAm=this._scaleAm.export()}this._lastT=t.timeStamp},_touchstart(t){1==t.touches.length&&(this._initX=this._lastX=t.touches[0].pageX)},_touchmove(t){var e=t.touches[0].pageX-this._lastX;if(this._zoom&&1==t.touches.length&&Math.abs(e)>20){if(this._lastX=t.touches[0].pageX,this._tX<=this._tMin&&e<0||this._tX>=this._tMax&&e>0)return;this._tX+=e*Math.abs(this._lastX-this._initX)*.05,this._tX<this._tMin&&(this._tX=this._tMin),this._tX>this._tMax&&(this._tX=this._tMax),this._scaleAm.translateX(this._tX).step(),this.scaleAm=this._scaleAm.export()}}}};function _sfc_render$1(t,e,i,s,r,a){const o=index$g;return openBlock(),createBlock(o,null,{default:withCtx(()=>[r.nodes.length?createCommentVNode("",!0):renderSlot(t.$slots,"default",{key:0},void 0,!0),createVNode(o,{id:"top",style:normalizeStyle(r.showAm+(i.selectable?";user-select:text;-webkit-user-select:text":"")),animation:r.scaleAm,onClick:a._tap,onTouchstart:a._touchstart,onTouchmove:a._touchmove},{default:withCtx(()=>[createBaseVNode("div",{id:"rtf"+r.uid},null,8,["id"])]),_:1},8,["style","animation","onClick","onTouchstart","onTouchmove"])]),_:3})}const __easycom_1=_export_sfc(_sfc_main$1,[["render",_sfc_render$1],["__scopeId","data-v-a56e95eb"]]);function resolveEasycom(t,e){return"string"==typeof t?e:t}const _sfc_main={components:{"jyf-parser":__easycom_1},data:()=>({id:"",detailHtml:"",loading:!1,errorMessage:"",tagStyle:{p:"margin:0 0 7px 0;line-height:1.42;text-align:justify;font-size:15px;color:#111;",strong:"font-weight:700;",div:"font-size:15px;line-height:1.45;color:#111;",img:"max-width:100%;height:auto;display:block;",table:"width:100%;border-collapse:collapse;",video:"max-width:100%;"}}),computed:{agreementHtml(){return this.detailHtml||"<p>暂无协议内容</p>"}},onLoad(t={}){refreshCurrentWebviewToken(t.token?"?token="+encodeURIComponent(t.token):""),this.id=t.id||"",setNavigationBarTitle({title:"商户协议预览"}),this.loadDetail()},methods:{async loadDetail(){if(this.id){this.loading=!0,this.errorMessage="";try{const t=await getContractDetail({id:this.id}),e=this.unwrapPayload(t);this.detailHtml=this.normalizeDetailHtml(e),this.setPageTitle(e)}catch(t){this.errorMessage=this.getErrorMessage(t,"协议详情加载失败,点击重试")}finally{this.loading=!1}}else this.errorMessage="协议ID为空"},unwrapPayload:t=>t&&"object"==typeof t&&void 0!==t.data?t.data:t,normalizeDetailHtml(t){const e=this.pickDetailContent(t);return e?/<[a-z][\s\S]*>/i.test(e)?e:String(e).split(/\n+/).map(t=>t.trim()).filter(Boolean).map(t=>"<p>"+this.escapeHtml(t)+"</p>").join(""):"<p>暂无协议内容</p>"},pickDetailContent(t){if("string"==typeof t)return t;if(!t||"object"!=typeof t)return"";const e=[t.content,t.contract_content,t.agreement_content,t.html,t.detail,t.body,t.template,t.text,t.data];for(let i=0;i<e.length;i+=1)if("string"==typeof e[i]&&e[i].trim())return e[i];return t.data&&"object"==typeof t.data?this.pickDetailContent(t.data):""},setPageTitle(t){if(!t||"object"!=typeof t)return;const e=t.content_name||t.title||t.name||t.contract_name||t.agreement_name||t.contract_title;e&&setNavigationBarTitle({title:String(e)})},escapeHtml:t=>String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),getErrorMessage:(t,e)=>t&&t.msg?t.msg:t&&t.message?t.message:"string"==typeof t?t:e,handleLinkPress(t){t&&"function"==typeof t.ignore&&t.ignore()},handleBack(){getCurrentPages$1().length>1?navigateBack():redirectTo({url:"/pages/agreement/index"})}}};function _sfc_render(t,e,i,s,r,a){const o=index$g,n=resolveEasycom(resolveDynamicComponent("jyf-parser"),__easycom_1),l=ScrollView,h=index$x;return openBlock(),createBlock(o,{class:"preview-page"},{default:withCtx(()=>[createVNode(l,{class:"preview-scroll","scroll-y":""},{default:withCtx(()=>[createVNode(o,{class:"preview-content"},{default:withCtx(()=>[r.loading?(openBlock(),createBlock(o,{key:0,class:"state-text"},{default:withCtx(()=>[createTextVNode("加载中...")]),_:1})):r.errorMessage?(openBlock(),createBlock(o,{key:1,class:"state-text",onClick:a.loadDetail},{default:withCtx(()=>[createTextVNode(toDisplayString(r.errorMessage),1)]),_:1},8,["onClick"])):(openBlock(),createBlock(n,{key:2,html:a.agreementHtml,"tag-style":r.tagStyle,selectable:"",onLinkpress:a.handleLinkPress},null,8,["html","tag-style","onLinkpress"]))]),_:1})]),_:1}),createVNode(o,{class:"footer-area"},{default:withCtx(()=>[createVNode(h,{class:"return-button","hover-class":"button-hover",onClick:a.handleBack},{default:withCtx(()=>[createTextVNode("返回")]),_:1},8,["onClick"])]),_:1})]),_:1})}const index=_export_sfc(_sfc_main,[["render",_sfc_render],["__scopeId","data-v-0cce1701"]]);export{index as default};
|