You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3 lines
6.7 KiB
JavaScript

var G=Object.defineProperty,H=Object.defineProperties;var j=Object.getOwnPropertyDescriptors;var I=Object.getOwnPropertySymbols;var W=Object.prototype.hasOwnProperty,X=Object.prototype.propertyIsEnumerable;var B=(e,s,t)=>s in e?G(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,w=(e,s)=>{for(var t in s||(s={}))W.call(s,t)&&B(e,t,s[t]);if(I)for(var t of I(s))X.call(s,t)&&B(e,t,s[t]);return e},T=(e,s)=>H(e,j(s));import{p as R,_ as F,bG as m,a8 as P,e as J,bH as Z,h as O,bz as q}from"./entry/index-CwTXVJ2d-1723001953242.js";import{aD as A,am as N,bm as M,a6 as K,aC as Q,n as ee,aa as te,bn as se,N as z,a1 as ae}from"./antd-BY-1PcYE.js";import{d as x,f as E,c as L,u as p,w as ne,_ as d,a8 as _,a9 as u,a2 as V,$ as k,ab as Y,k as f,a0 as D,G as S,a1 as v,ac as $,F as U,V as oe,an as le,aa as b}from"./vue-aEZWZQSa.js";const ie={class:"title"},re={key:0,class:"extra"},ce={key:1},ue={key:0,class:"description"},de={class:"datetime"},pe=x({__name:"NoticeList",props:{list:{type:Array,default:()=>[]},pageSize:{type:[Boolean,Number],default:5},currentPage:{type:Number,default:1},titleRows:{type:Number,default:1},descRows:{type:Number,default:2},onTitleClick:{type:Function}},emits:["update:currentPage"],setup(e,{emit:s}){const t=e,o=s,{prefixCls:a}=R("header-notify-list"),l=E(t.currentPage||1),r=L(()=>{const{pageSize:i,list:c}=t;if(i===!1)return[];let n=A(i)?i:5;return c.slice(n*(p(l)-1),n*p(l))});ne(()=>t.currentPage,i=>{l.value=i});const h=L(()=>{const{list:i,pageSize:c}=t,n=A(c)?c:Number(c)&&5;return n>0&&i&&i.length>n?{total:i.length,pageSize:n,current:p(l),onChange(C){l.value=C,o("update:currentPage",C)}}:!1});function g(i){t.onTitleClick&&t.onTitleClick(i)}return(i,c)=>(d(),_(p(N),{class:V(p(a)),bordered:"",pagination:h.value},{default:u(()=>[(d(!0),k(U,null,Y(r.value,n=>(d(),_(p(N).Item,{key:n.id,class:"list-item"},{default:u(()=>[f(p(N).Item.Meta,null,{title:u(()=>[D("div",ie,[f(p(M).Paragraph,{onClick:C=>g(n),delete:!!n.titleDelete,ellipsis:e.titleRows&&e.titleRows>0?{rows:e.titleRows,tooltip:!!n.title}:!1,content:n.title},null,8,["onClick","delete","ellipsis","content"]),n.extra?(d(),k("div",re,[f(p(K),{class:"tag",color:n.color},{default:u(()=>[S(v(n.extra),1)]),_:2},1032,["color"])])):$("",!0)])]),avatar:u(()=>[n.avatar?(d(),_(p(Q),{key:0,class:"avatar",src:n.avatar},null,8,["src"])):(d(),k("span",ce,v(n.avatar),1))]),description:u(()=>[D("div",null,[n.description?(d(),k("div",ue,[f(p(M).Paragraph,{ellipsis:e.descRows&&e.descRows>0?{rows:e.descRows,tooltip:!!n.description}:!1,content:n.description},null,8,["ellipsis","content"])])):$("",!0),D("div",de,v(n.datetime),1)])]),_:2},1024)]),_:2},1024))),128))]),_:1},8,["class","pagination"]))}}),fe=F(pe,[["__scopeId","data-v-3d9c14d4"]]),ge=[{key:"1",name:"通知",list:[]},{key:"2",name:"消息",list:[]}],{notification:he}=O(),ye=oe("notify",{state:()=>({listData:ge}),getters:{count(e){var a;const t=((a=m().userInfo)==null?void 0:a.userId)||0;let o=0;for(let l=0;l<e.listData.length;l++)o+=e.listData[l].list.filter(r=>r.uid===t).length;return o},unreadCount(e){var a;const t=((a=m().userInfo)==null?void 0:a.userId)||0;let o=0;for(let l=0;l<e.listData.length;l++)o+=e.listData[l].list.filter(r=>r.uid===t&&!r.titleDelete).length;return o},userMessageList(e){var o;const t=((o=m().userInfo)==null?void 0:o.userId)||0;return e.listData.map(a=>T(w({},a),{list:a.list.filter(l=>l.uid===t)}))}},actions:{listeningMessage(){const{websocketEnable:e}=P();if(!e)return;const{apiUrl:s,clientId:t}=P();let o=String(s);q(s)||(o=`${window.location.protocol}//${window.location.host}${s}`);let a=`${o}/resource/websocket?clientId=${t}&Authorization=Bearer ${J()}`;window.location.protocol.includes("https")?a=a.replace("https://","wss://"):a=a.replace("http://","ws://"),Z(a,{autoReconnect:{retries:3,delay:1e3,onFailed(){}},heartbeat:{message:JSON.stringify({type:"ping"}),interval:1e4,pongTimeout:2e3},onConnected(){},onDisconnected(){},onMessage:(l,r)=>{var i;const h="notify-"+this.listData[0].list.length,g=((i=m().userInfo)==null?void 0:i.userId)||0;this.listData[0].list.unshift({id:h,uid:g,avatar:"https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png",title:r.data,description:"",datetime:ee().format("YYYY-MM-DD HH:mm:ss"),type:"1"}),setTimeout(()=>{he.info({message:"收到新消息",description:r.data,duration:3})},500)}})},clearAll(){var t;const s=((t=m().userInfo)==null?void 0:t.userId)||0;this.listData=this.listData.map(o=>T(w({},o),{list:o.list.filter(a=>a.uid!==s)}))},readAll(){var t;const s=((t=m().userInfo)==null?void 0:t.userId)||0;for(let o=0;o<this.listData.length;o++)this.listData[o].list.forEach(a=>{a.uid===s&&(a.read=!0,a.titleDelete=!0)})}},persist:!0}),be=x({components:{Popover:te,BellOutlined:se,Tabs:z,TabPane:z.TabPane,Badge:ae,NoticeList:fe},setup(){const{prefixCls:e}=R("header-notify"),{createConfirm:s}=O(),t=ye(),{count:o,unreadCount:a,userMessageList:l}=le(t);t.listeningMessage();const r=E(null);function h(c){r.value&&r.value.destroy(),r.value=s({iconType:"info",title:"消息通知",content:`${c.title}<br/>
${c.datetime}`,okText:"已读",okButtonProps:{disabled:c.titleDelete},onOk(){c.titleDelete||(c.titleDelete=!0)}})}function g(){s({iconType:"warning",title:"提示",content:"确定要清空所有消息吗?",onOk(){t.clearAll()}})}function i(){s({iconType:"warning",title:"提示",content:"确定要已读所有消息吗?",onOk(){t.readAll()}})}return{prefixCls:e,userMessageList:l,count:o,unreadCount:a,onNoticeClick:h,numberStyle:{fontSize:"10px"},clearAllMessage:g,readAllMessage:i}}}),ke={key:0},me={class:"w-full"};function _e(e,s,t,o,a,l){const r=b("BellOutlined"),h=b("Badge"),g=b("NoticeList"),i=b("TabPane"),c=b("Tabs"),n=b("a-button"),C=b("Popover");return d(),k("div",{class:V(e.prefixCls)},[f(C,{title:"",trigger:"click",overlayClassName:`${e.prefixCls}__overlay`},{content:u(()=>[f(c,{centered:""},{default:u(()=>[(d(!0),k(U,null,Y(e.userMessageList,y=>(d(),_(i,{key:y.key},{tab:u(()=>[S(v(y.name)+" ",1),y.list.length!==0?(d(),k("span",ke,"("+v(y.list.length)+")",1)):$("",!0)]),default:u(()=>[y.key==="1"?(d(),_(g,{key:0,list:y.list,onTitleClick:e.onNoticeClick},null,8,["list","onTitleClick"])):(d(),_(g,{key:1,list:y.list},null,8,["list"]))]),_:2},1024))),128))]),_:1}),D("div",me,[f(n,{type:"success",block:"",class:"btn-clear-all",onClick:e.readAllMessage,disabled:e.unreadCount===0},{default:u(()=>[S("已读全部消息")]),_:1},8,["onClick","disabled"]),f(n,{type:"error",block:"",class:"btn-clear-all",onClick:e.clearAllMessage,disabled:e.count===0},{default:u(()=>[S("清空全部消息")]),_:1},8,["onClick","disabled"])])]),default:u(()=>[f(h,{count:e.unreadCount,offset:[0,15],size:"small",numberStyle:e.numberStyle},{default:u(()=>[f(r)]),_:1},8,["count","numberStyle"])]),_:1},8,["overlayClassName"])],2)}const we=F(be,[["render",_e]]);export{we as default};