2 lines
14 KiB
JavaScript
2 lines
14 KiB
JavaScript
import{d as e,u as a,G as l,r as t,b as s,c as n,w as i,M as c,k as r,P as u,o as d,l as o,S as _,am as p,p as m,q as v,t as f,v as g,D as h,x as y,F as b,y as k,an as x,ae as w,z as $,ao as S,Q as T,N as C,e as I,j as A,_ as z}from"./index-BWVkHanF.js";import{S as L}from"./share-popup.CP9kroF_.js";import{G as N}from"./global-popup.Bm2SKaFu.js";import{b as j,c as V,d as q,e as M,f as B,h as F}from"./news.BLguShW9.js";import"./share.BTikiDhv.js";const U=z(e({__name:"news_detail",setup(e){const z=a(),U=l(()=>{var e;return(null==(e=z.userInfo)?void 0:e.vip_info)||{}}),D=l(()=>!!U.value.is_vip),E=l(()=>U.value.vip_level_name||"会员"),H=l(()=>U.value.vip_expire_time||""),G=l(()=>U.value.ai_free_count??3),P=t({}),J=t([]),O=t(0);let Q="";const R=t([]),W=t(0),X=t(1),Y=t(!1),K=t(""),Z=t(!1),ee=l(()=>(e=>{if(!e)return"";if(e.translated_content)return e.translated_content;const a=e.ext;if(!a)return"";if("string"==typeof a)try{const e=JSON.parse(a);return(null==e?void 0:e.translated_content)||""}catch(l){return""}return a.translated_content||""})(P.value)),ae=l(()=>{var e,a,l;const t=(ee.value||"").replace(/\r\n/g,"\n").split("\n").map(e=>e.trim()).filter(Boolean),s={title:"",abstract:"",body:[]};let n="body";for(const i of t){const t=i.match(/^标题[::]\s*(.*)$/),c=i.match(/^摘要[::]\s*(.*)$/),r=i.match(/^正文[::]\s*(.*)$/);if(t)s.title=(null==(e=t[1])?void 0:e.trim())||"",n="title";else if(c)s.abstract=(null==(a=c[1])?void 0:a.trim())||"",n="abstract";else{if(r){n="body";const e=null==(l=r[1])?void 0:l.trim();e&&s.body.push(e);continue}"body"===n?s.body.push(i):"title"!==n||s.title?"abstract"!==n||s.abstract||(s.abstract=i):s.title=i}}return s}),le=l(()=>ae.value.title),te=l(()=>ae.value.abstract),se=l(()=>ae.value.body),ne=e=>e?String(e).replace(/<img\s+([^>]*)>/gi,'<img $1 referrerpolicy="no-referrer" style="max-width:100%;height:auto;display:block;margin:10px 0;">'):"",ie=e=>{var a;const l=String(e||"").replace(/\r\n/g,"\n").replace(/\r/g,"\n").trim();if(!l)return[];const t=l.split("\n").map(e=>e.replace(/\s+/g," ").trim()).filter(Boolean);if(t.length>1)return t;const s=null==(a=l.replace(/\s+/g," ").match(/[^。!?.!?]+[。!?.!?]?/g))?void 0:a.map(e=>e.trim()).filter(Boolean);return(null==s?void 0:s.length)?s:[l]},ce=e=>String(e||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),re=e=>{const a=/<[^>]+>/.test(e)?e:`<p>${e}</p>`,l=a.trim(),t=l.match(/^<(ul|ol)\b/i);if(t){const e=t[1].toLowerCase(),a=Array.from(l.matchAll(/<li\b[^>]*>[\s\S]*?<\/li>/gi)).map(e=>e[0]);if(a.length)return a.map(a=>`<${e}>${a}</${e}>`)}const s=Array.from(l.matchAll(/<(p|div|blockquote|li|figcaption|section|article)\b[^>]*>[\s\S]*?<\/\1>/gi)).map(e=>e[0]).filter(e=>e.trim()!==l);return s.length>1?s.flatMap(e=>re(e)):[a]},ue=e=>{const a=String(e||"").trim();if(!a)return[];const l=Array.from(a.matchAll(/<(p|h[1-6]|blockquote|ul|ol|figure|div|figcaption|section|article)\b[^>]*>[\s\S]*?<\/\1>/gi)).map(e=>e[0]);return(l.length?l:a.split(/\n{2,}/).map(e=>e.trim()).filter(Boolean)).reduce((e,a)=>(re(a).forEach(a=>{var l,t;const s=(e=>e?String(e).replace(/<img[^>]*>/gi," ").replace(/<br\s*\/?>/gi,"\n").replace(/<\/p>/gi,"\n").replace(/<\/li>/gi,"\n").replace(/<\/div>/gi,"\n").replace(/<\/blockquote>/gi,"\n").replace(/<\/figcaption>/gi,"\n").replace(/<\/section>/gi,"\n").replace(/<\/article>/gi,"\n").replace(/<[^>]+>/g," ").replace(/ /g," ").replace(/&/g,"&").replace(/"/g,'"').replace(/'|'/gi,"'").replace(///gi,"/").replace(/`/gi,"`").replace(/=/gi,"=").replace(/'/g,"'").replace(/\s+/g," ").trim():"")(a),n=/<img\b/i.test(a),i=/^<h[1-6]\b/i.test(a.trim()),c=/^<(ul|ol)\b/i.test(a.trim())||/^<li\b/i.test(a.trim()),r=(null==(t=null==(l=a.trim().match(/^<(ul|ol)\b/i))?void 0:l[1])?void 0:t.toLowerCase())||"ul";!s||n||i?e.push({html:ne(a),text:s,isText:!1,isListItem:!1,listTag:""}):e.push({html:ne(a),text:s,isText:!0,isListItem:c,listTag:r})}),e),[])},de=l(()=>{var e;const a=ue((null==(e=P.value)?void 0:e.content)||"").reduce((e,a)=>{if(!a.isText)return e.push({html:a.html,isText:!1}),e;const l=ie(a.text);return l.length<=1?(e.push({html:a.html,isText:!0}),e):(l.forEach(l=>{e.push({html:a.isListItem?`<${a.listTag} style="margin:0;padding-left:1.2em;"><li>${ce(l)}</li></${a.listTag}>`:`<p>${ce(l)}</p>`,isText:!0})}),e)},[]),l=[];se.value.map(e=>e.trim()).filter(Boolean).forEach(e=>{l.push(...ie(e))});let t=0;return a.map(e=>{if(!e.isText)return{html:e.html,translated:""};const a=l[t]||"";return t+=1,{html:e.html,translated:a}})}),oe=async()=>{var e;try{const a=null==(e=P.value)?void 0:e.cid;if(!a)return;const l=await c.get({url:"/article/lists",data:{cid:a,page_no:1,page_size:4}},{withToken:!1});J.value=((null==l?void 0:l.lists)||[]).filter(e=>e.id!==P.value.id).slice(0,3)}catch(a){}},_e=async(e=!1)=>{e&&(X.value=1,R.value=[]);try{const a=await V({article_id:Q,page_no:X.value,page_size:15});W.value=a.count||0,R.value=e?a.lists||[]:[...R.value,...a.lists||[]]}catch(a){}},pe=()=>{X.value++,_e()},me=()=>{z.isLogin?(K.value="",Y.value=!0):C({title:"提示",content:"登录后才能评论,是否前往登录?",confirmText:"去登录",cancelText:"取消",success:e=>{e.confirm&&I({url:"/pages/login/login"})}})},ve=async()=>{const e=K.value.trim();if(e)try{await q({article_id:Q,content:e}),A({title:"评论成功",icon:"success"}),Y.value=!1,K.value="",_e(!0)}catch(a){/token|登录/.test(String(a))||uni.$u.toast(a||"评论失败,请重试")}},fe=async()=>{try{const e=await M({article_id:Number(Q),vote_type:1});O.value="cancel"===e.action?0:1,P.value.like_count=e.like_count,P.value.dislike_count=e.dislike_count}catch(e){}},ge=async()=>{try{const e=await M({article_id:Number(Q),vote_type:2});O.value="cancel"===e.action?0:2,P.value.like_count=e.like_count,P.value.dislike_count=e.dislike_count}catch(e){}},he=async()=>{try{P.value.collect?(await B({id:Number(Q)}),P.value.collect=0,A({title:"已取消收藏",icon:"none"})):(await F({id:Number(Q)}),P.value.collect=1,A({title:"收藏成功",icon:"success"}))}catch(e){}},ye=()=>{if(!Q)return;const e=encodeURIComponent(P.value.title||"");I({url:`/pages/ai_analysis/ai_analysis?type=article&id=${Q}&title=${e}`})},be=()=>{Z.value=!0},ke=e=>{if(!e)return"";const a=new Date(e.replace(/-/g,"/"));return isNaN(a.getTime())?e:`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")} ${String(a.getHours()).padStart(2,"0")}:${String(a.getMinutes()).padStart(2,"0")}`};return s(e=>{Q=e.id,(async e=>{P.value=await j({id:e}),O.value=P.value.vote_status||0,oe(),_e(!0)})(Q)}),(e,a)=>{const l=p,t=r,s=m,c=v,C=w,I=_,A=u("u-icon"),z=S,j=u("u-popup");return d(),n(t,{class:"nd-page"},{default:i(()=>[o(I,{"scroll-y":"",class:"nd-scroll",style:{height:"calc(100vh - 100rpx)"}},{default:i(()=>[P.value.is_video&&P.value.video_url?(d(),n(t,{key:0,class:"nd-video"},{default:i(()=>[o(l,{src:P.value.video_url,poster:P.value.image,class:"nd-video__player",controls:"","object-fit":"cover"},null,8,["src","poster"])]),_:1})):P.value.is_video&&P.value.image?(d(),n(t,{key:1,class:"nd-video"},{default:i(()=>[o(t,{class:"nd-video__cover"},{default:i(()=>[o(s,{src:P.value.image,mode:"aspectFill",class:"nd-video__img"},null,8,["src"]),o(t,{class:"nd-video__play"},{default:i(()=>[o(t,{class:"nd-video__play-btn"},{default:i(()=>[o(c,{class:"nd-video__play-icon"},{default:i(()=>[f("▶")]),_:1})]),_:1})]),_:1}),P.value.duration?(d(),n(t,{key:0,class:"nd-video__duration"},{default:i(()=>[f(g(P.value.duration),1)]),_:1})):h("",!0)]),_:1})]),_:1})):h("",!0),o(t,{class:"nd-header"},{default:i(()=>[o(c,{class:"nd-header__title"},{default:i(()=>[f(g(P.value.title),1)]),_:1}),le.value?(d(),n(c,{key:0,class:"nd-translation-line nd-translation-line--title"},{default:i(()=>[f(g(le.value),1)]),_:1})):h("",!0),o(t,{class:"nd-header__meta"},{default:i(()=>[o(c,{class:"nd-header__author"},{default:i(()=>[f(g(P.value.author||"体育小编"),1)]),_:1}),o(c,{class:"nd-header__time"},{default:i(()=>[f(g(ke(P.value.create_time)),1)]),_:1}),o(c,{class:"nd-header__views"},{default:i(()=>[f(g(P.value.click||0)+"阅读",1)]),_:1})]),_:1})]),_:1}),P.value.abstract||te.value?(d(),n(t,{key:2,class:"nd-abstract"},{default:i(()=>[o(c,{class:"nd-abstract__label"},{default:i(()=>[f("摘要")]),_:1}),P.value.abstract?(d(),n(c,{key:0,class:"nd-abstract__text"},{default:i(()=>[f(g(P.value.abstract),1)]),_:1})):h("",!0),te.value?(d(),n(c,{key:1,class:"nd-abstract__translate"},{default:i(()=>[f(g(te.value),1)]),_:1})):h("",!0)]),_:1})):h("",!0),o(t,{class:"nd-content"},{default:i(()=>[(d(!0),y(b,null,k(de.value,(e,a)=>(d(),n(t,{key:`content-block-${a}`,class:"nd-content__block"},{default:i(()=>[x("div",{class:"nd-content__inner",innerHTML:e.html},null,8,["innerHTML"]),e.translated?(d(),n(c,{key:0,class:"nd-content__translate"},{default:i(()=>[f(g(e.translated),1)]),_:2},1024)):h("",!0)]),_:2},1024))),128))]),_:1}),o(t,{class:"nd-ai-wrap"},{default:i(()=>[o(t,{class:"nd-ai-entry",onClick:ye},{default:i(()=>[o(t,{class:"nd-ai-entry__badge"},{default:i(()=>[f("AI")]),_:1}),o(t,{class:"nd-ai-entry__content"},{default:i(()=>[o(c,{class:"nd-ai-entry__title"},{default:i(()=>[f("获取AI深度解读")]),_:1}),o(c,{class:"nd-ai-entry__desc"},{default:i(()=>[f("智能提炼核心观点与风险分析")]),_:1})]),_:1}),o(t,{class:"nd-ai-entry__arrow"},{default:i(()=>[o(c,null,{default:i(()=>[f("›")]),_:1})]),_:1})]),_:1}),o(t,{class:"nd-ai-vip"},{default:i(()=>[D.value?(d(),n(c,{key:0,class:"nd-ai-vip__tag nd-ai-vip__tag--vip"},{default:i(()=>[f("VIP")]),_:1})):h("",!0),D.value?(d(),n(c,{key:1,class:"nd-ai-vip__text"},{default:i(()=>[f("尊贵的"+g(E.value)+",到期时间"+g(H.value),1)]),_:1})):h("",!0),D.value?h("",!0):(d(),n(c,{key:2,class:"nd-ai-vip__tag"},{default:i(()=>[f("免费")]),_:1})),D.value?h("",!0):(d(),n(c,{key:3,class:"nd-ai-vip__text"},{default:i(()=>[f("每日免费3次AI分析,今日剩余"+g(G.value)+"次",1)]),_:1}))]),_:1})]),_:1}),o(t,{class:"nd-comments"},{default:i(()=>[o(t,{class:"nd-comments__header"},{default:i(()=>[o(c,{class:"nd-comments__title"},{default:i(()=>[f("评论 ("+g(W.value)+")",1)]),_:1})]),_:1}),0===R.value.length?(d(),n(t,{key:0,class:"nd-comments__empty"},{default:i(()=>[o(c,null,{default:i(()=>[f("暂无评论,快来发表你的看法吧")]),_:1})]),_:1})):h("",!0),(d(!0),y(b,null,k(R.value,e=>(d(),n(t,{key:e.id,class:"nd-comment"},{default:i(()=>[o(s,{src:e.avatar||"/static/images/avatar.png",class:"nd-comment__avatar",mode:"aspectFill"},null,8,["src"]),o(t,{class:"nd-comment__body"},{default:i(()=>[o(c,{class:"nd-comment__name"},{default:i(()=>[f(g(e.nickname),1)]),_:2},1024),o(c,{class:"nd-comment__text"},{default:i(()=>[f(g(e.content),1)]),_:2},1024),o(c,{class:"nd-comment__time"},{default:i(()=>[f(g(ke(e.create_time)),1)]),_:2},1024),e.reply_list&&e.reply_list.length?(d(),n(t,{key:0,class:"nd-comment__replies"},{default:i(()=>[(d(!0),y(b,null,k(e.reply_list,e=>(d(),n(t,{key:e.id,class:"nd-comment__reply"},{default:i(()=>[o(c,{class:"nd-comment__reply-name"},{default:i(()=>[f(g(e.nickname),1)]),_:2},1024),e.reply_nickname?(d(),n(c,{key:0,class:"nd-comment__reply-to"},{default:i(()=>[f("回复 "+g(e.reply_nickname),1)]),_:2},1024)):h("",!0),o(c,{class:"nd-comment__reply-text"},{default:i(()=>[f(g(e.content),1)]),_:2},1024)]),_:2},1024))),128))]),_:2},1024)):h("",!0)]),_:2},1024)]),_:2},1024))),128)),R.value.length>0&&R.value.length<W.value?(d(),n(t,{key:1,class:"nd-comments__more",onClick:pe},{default:i(()=>[o(c,null,{default:i(()=>[f("加载更多评论")]),_:1})]),_:1})):h("",!0)]),_:1}),J.value.length>0?(d(),n(t,{key:3,class:"nd-related"},{default:i(()=>[o(c,{class:"nd-related__title"},{default:i(()=>[f("相关推荐")]),_:1}),(d(!0),y(b,null,k(J.value,e=>(d(),n(C,{key:e.id,url:`/pages/news_detail/news_detail?id=${e.id}`,class:"nd-related__item"},{default:i(()=>[o(t,{class:"nd-related__info"},{default:i(()=>[o(c,{class:"nd-related__name"},{default:i(()=>[f(g(e.title),1)]),_:2},1024),o(c,{class:"nd-related__meta"},{default:i(()=>[f(g(e.click||0)+"阅读",1)]),_:2},1024)]),_:2},1024),e.image?(d(),n(s,{key:0,src:e.image,class:"nd-related__img",mode:"aspectFill"},null,8,["src"])):h("",!0)]),_:2},1032,["url"]))),128))]),_:1})):h("",!0),o(t,{style:{height:"120rpx"}})]),_:1}),o(t,{class:"nd-bar"},{default:i(()=>[o(t,{class:"nd-bar__input",onClick:me},{default:i(()=>[o(A,{name:"edit-pen",size:28,color:"#999"}),o(c,{class:"nd-bar__placeholder"},{default:i(()=>[f("写评论...")]),_:1})]),_:1}),o(t,{class:"nd-bar__actions"},{default:i(()=>[o(t,{class:"nd-bar__item",onClick:fe},{default:i(()=>[o(A,{name:"thumb-up",size:36,color:1===O.value?"#185dff":"#666"},null,8,["color"]),o(c,{class:$({"nd-bar__active":1===O.value})},{default:i(()=>[f(g(P.value.like_count||0),1)]),_:1},8,["class"])]),_:1}),o(t,{class:"nd-bar__item",onClick:ge},{default:i(()=>[o(A,{name:"thumb-down",size:36,color:2===O.value?"#666":"#999"},null,8,["color"]),o(c,{class:$({"nd-bar__active":2===O.value})},{default:i(()=>[f(g(P.value.dislike_count||0),1)]),_:1},8,["class"])]),_:1}),o(t,{class:"nd-bar__item",onClick:he},{default:i(()=>[o(A,{name:P.value.collect?"star-fill":"star",size:36,color:P.value.collect?"#f0ad4e":"#666"},null,8,["name","color"]),o(c,{class:$({"nd-bar__active":P.value.collect})},{default:i(()=>[f(g(P.value.collect?"已藏":"收藏"),1)]),_:1},8,["class"])]),_:1}),o(t,{class:"nd-bar__item",onClick:be},{default:i(()=>[o(A,{name:"share",size:36,color:"#666"}),o(c,null,{default:i(()=>[f("分享")]),_:1})]),_:1})]),_:1})]),_:1}),o(j,{modelValue:Y.value,"onUpdate:modelValue":a[2]||(a[2]=e=>Y.value=e),mode:"bottom"},{default:i(()=>[o(t,{class:"nd-cpop"},{default:i(()=>[o(t,{class:"nd-cpop__header"},{default:i(()=>[o(c,{class:"nd-cpop__title"},{default:i(()=>[f("发表评论")]),_:1}),o(c,{class:"nd-cpop__close",onClick:a[0]||(a[0]=e=>Y.value=!1)},{default:i(()=>[f("×")]),_:1})]),_:1}),o(z,{modelValue:K.value,"onUpdate:modelValue":a[1]||(a[1]=e=>K.value=e),class:"nd-cpop__textarea",placeholder:"说说你的看法...",maxlength:500,"auto-height":!0,focus:Y.value},null,8,["modelValue","focus"]),o(t,{class:"nd-cpop__footer"},{default:i(()=>[o(c,{class:"nd-cpop__count"},{default:i(()=>[f(g(K.value.length)+"/500",1)]),_:1}),o(t,{class:$(["nd-cpop__btn",{"nd-cpop__btn--disabled":!K.value.trim()}]),onClick:ve},{default:i(()=>[o(c,null,{default:i(()=>[f("发布")]),_:1})]),_:1},8,["class"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),Z.value?(d(),n(L,{key:0,show:Z.value,"onUpdate:show":a[3]||(a[3]=e=>Z.value=e),"page-type":"news","page-id":T(Q),path:`/pages/news_detail/news_detail?id=${T(Q)}`,title:P.value.title||""},null,8,["show","page-id","path","title"])):h("",!0),o(N)]),_:1})}}}),[["__scopeId","data-v-b3deb0a7"]]);export{U as default};
|