cnhis-design-vue 3.2.6-beta.7 → 3.2.6-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +87 -87
  2. package/es/components/classification/src/components/table-modal/index.vue.d.ts +3 -0
  3. package/es/components/field-set/src/FieldSet.vue.d.ts +1 -1
  4. package/es/components/iho-chat/index.d.ts +57 -27
  5. package/es/components/iho-chat/src/Index.vue.d.ts +58 -27
  6. package/es/components/iho-chat/src/Index.vue2.js +1 -1
  7. package/es/components/iho-chat/src/api/index.js +1 -1
  8. package/es/components/iho-chat/src/components/ChatFile.vue.d.ts +1 -1
  9. package/es/components/iho-chat/src/components/ChatFooter.vue.d.ts +9 -26
  10. package/es/components/iho-chat/src/components/ChatFooter.vue2.js +1 -1
  11. package/es/components/iho-chat/src/components/ChatHeader.vue.d.ts +2 -2
  12. package/es/components/iho-chat/src/components/ChatHeader.vue2.js +1 -1
  13. package/es/components/iho-chat/src/components/ChatMain.vue.d.ts +3 -2
  14. package/es/components/iho-chat/src/components/ChatMain.vue2.js +1 -1
  15. package/es/components/iho-chat/src/components/ChatRecord.vue.d.ts +1 -1
  16. package/es/components/iho-chat/src/components/ChatSearch.vue.d.ts +10 -3
  17. package/es/components/iho-chat/src/components/ChatSearch.vue2.js +1 -1
  18. package/es/components/iho-chat/src/components/SiderList.vue2.js +1 -1
  19. package/es/components/iho-chat/src/components/Video.vue.d.ts +30 -25
  20. package/es/components/iho-chat/src/components/Video.vue.js +1 -0
  21. package/es/components/iho-chat/src/components/Video.vue2.js +1 -0
  22. package/es/components/iho-chat/src/hooks/useSession.js +1 -1
  23. package/es/components/iho-chat/src/types/index.d.ts +2 -0
  24. package/es/components/iho-chat/src/utils/index.d.ts +1 -1
  25. package/es/components/iho-chat/src/utils/index.js +1 -1
  26. package/es/components/iho-chat/style/index.css +1 -1
  27. package/es/components/index.css +1 -1
  28. package/es/components/scale-view/src/ScaleView.vue2.js +1 -1
  29. package/es/components/select-label/src/LabelFormContent.vue2.js +1 -1
  30. package/es/env.d.ts +25 -25
  31. package/es/shared/assets/img/defaultCover/10review_successful.png.js +1 -1
  32. package/es/shared/assets/img/defaultCover/11review_fail.png.js +1 -1
  33. package/es/shared/assets/img/defaultCover/12no_setting.png.js +1 -1
  34. package/es/shared/assets/img/defaultCover/13no_menu_setting.png.js +1 -1
  35. package/es/shared/assets/img/defaultCover/14no_call_setting.png.js +1 -1
  36. package/es/shared/assets/img/defaultCover/15no_use_tag.png.js +1 -1
  37. package/es/shared/assets/img/defaultCover/16no_table_data.png.js +1 -1
  38. package/es/shared/assets/img/defaultCover/1location.png.js +1 -1
  39. package/es/shared/assets/img/defaultCover/2notfound.png.js +1 -1
  40. package/es/shared/assets/img/defaultCover/3loading.png.js +1 -1
  41. package/es/shared/assets/img/defaultCover/4no_permission.png.js +1 -1
  42. package/es/shared/assets/img/defaultCover/5no_data.png.js +1 -1
  43. package/es/shared/assets/img/defaultCover/6no_network.png.js +1 -1
  44. package/es/shared/assets/img/defaultCover/7no_doctor.png.js +1 -1
  45. package/es/shared/assets/img/defaultCover/8system_error.png.js +1 -1
  46. package/es/shared/assets/img/defaultCover/9system_upgrade.png.js +1 -1
  47. package/es/shared/assets/img/failure.png.js +1 -1
  48. package/es/shared/assets/img/no-permission.png.js +1 -1
  49. package/es/shared/assets/img/nodata.png.js +1 -1
  50. package/es/shared/assets/img/notfound.png.js +1 -1
  51. package/es/shared/assets/img/qr.png.js +1 -1
  52. package/es/shared/assets/img/success.png.js +1 -1
  53. package/es/shared/assets/img/table_style_2.png.js +1 -1
  54. package/es/shared/assets/img/video.png.js +1 -1
  55. package/es/shared/assets/img/video_default_cover.png.js +1 -1
  56. package/es/shared/assets/img/xb_big.png.js +1 -1
  57. package/es/shared/assets/img/xb_small.png.js +1 -1
  58. package/es/shared/package.json.js +1 -1
  59. package/package.json +2 -2
  60. package/es/components/bpmn-workflow/src/BpmnWorkflow.d.ts +0 -0
  61. package/es/components/bpmn-workflow/types/BpmnViewer.d.ts +0 -1
  62. package/es/components/bpmn-workflow/types/ModelingModule.d.ts +0 -1
  63. package/es/components/bpmn-workflow/types/MoveCanvasModule.d.ts +0 -1
  64. package/es/shared/components/VueDraggable/src/vuedraggable.d.ts +0 -86
  65. package/es/shared/utils/fabricjs/index.d.ts +0 -6823
  66. package/es/shared/utils/tapable/index.d.ts +0 -139
@@ -1 +1 @@
1
- import{defineComponent as e,ref as t,watch as n,withDirectives as i,openBlock as o,createElementBlock as s,normalizeStyle as a,unref as r,createElementVNode as l,toDisplayString as c,createVNode as u,createCommentVNode as d,withCtx as f,Fragment as m,renderList as p,createBlock as g,createTextVNode as v,vShow as y}from"vue";import{NIcon as h,NPopover as M,NButton as k,NTooltip as E,NUpload as C,NUploadTrigger as b}from"naive-ui";import{format as T}from"date-fns";import{useState as x}from"../hooks/useState.js";import{useSession as I}from"../hooks/useSession.js";import{emojis as w}from"../utils/emoji.js";import{MESSAGE_TYPE as _}from"../constants/index.js";import{uploadFileApi as S}from"../api/index.js";import{CloseCircleOutline as z}from"@vicons/ionicons5";import{cloneDeep as A}from"lodash-es";import{simplifyMessage as O}from"../utils/index.js";const R={key:0,class:"reference-content-box"},j={class:"reference-content"},D=["innerHTML"],L={class:"tool-box"},q=l("i",{class:"chat--iconfont chat--icon-face"},null,-1),F={class:"emoji-box"},H=l("span",null,"默认表情",-1),K={class:"list-box"},N=["src"],V=l("i",{class:"chat--iconfont chat--icon-good"},null,-1),G=l("i",{class:"chat--iconfont chat--icon-image"},null,-1),U=l("i",{class:"chat--iconfont chat--icon-folder"},null,-1),J={class:"btn-box"},B=l("span",{class:"tip"},"Enter 发送, Shift + Enter 换行",-1);var P=e({__name:"ChatFooter",props:{showAv:{type:Boolean,default:!1}},setup(e){const P=e,X=t(),Y=t(""),{state:Q,stompClient:W}=x(),{setCurrentSessionItem:Z}=I(Q),$=t(!1),ee=t(!1);function te(e){["Enter"].includes(e.key)&&(function(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}(e)||(e.preventDefault(),oe()))}function ne(){var e,t;Y.value=(null==(t=null==(e=X.value)?void 0:e.innerText)?void 0:t.trim())||""}async function ie(e,t){const{file:n,name:i}=e.file,o=new FormData;o.append("sender",Q.userInfo.id),o.append("file",n);const s=await S(o);if(!s)return console.log("上传失败");se({chatMessageType:t,msg:t===_.FILE?i:s,url:s})}function oe(){if(!(Y.value.length>2e3))return Y.value?void se({msg:Y.value}):console.log("请输入内容");console.log("请控制在2000字以内")}async function se(e){const{chatMessageType:t=_.TEXT,msg:n,url:i}=e,o={msg:n,chatMessageType:t};t===_.FILE&&(o.fileUrl=i),[_.TEXT,_.BLEND].includes(t)&&(X.value.innerHTML="",Y.value=""),Q.currentReferenceMsg&&(o.referenceContent=A(Q.currentReferenceMsg),Q.currentReferenceMsg=null);const s=T(new Date,"yyyy-MM-dd HH:mm:ss");Q.currentMsg={content:o,sender:Q.userInfo.id,senderName:Q.userInfo.name,senderAvatar:Q.userInfo.avatar,id:"",sendTime:s,sending:!0,fail:!1},[_.AUDIO,_.VIDEO].includes(t)||(Q.isAppendMsg=!0),Z({lastMessageSendTime:s,lastMessage:o,sortTime:s});try{W.value.send("/app/chat/send",{},JSON.stringify({chatType:"SINGLE",content:o,receiver:Q.currentSessionItem.receiver})),Q.currentMsg={...Q.currentMsg,fail:!1}}catch(e){Q.currentMsg={...Q.currentMsg,fail:!0}}finally{Q.currentMsg={...Q.currentMsg,sending:!1}}}return t(""),n((()=>Q.currentReferenceMsg),(e=>{var t;e&&(null==(t=X.value)||t.focus())})),n((()=>P.showAv),(e=>{e&&(ee.value=!0)})),(e,t)=>i((o(),s("section",{class:"chat-footer",style:a({cursor:r(Q).id?"default":"not-allowed"})},[r(Q).currentReferenceMsg?(o(),s("div",R,[l("div",j,[l("span",null,c(r(Q).currentReferenceMsg.senderName)+":",1),l("pre",{innerHTML:r(O)(r(Q).currentReferenceMsg.content)},null,8,D)]),u(r(h),{component:r(z),onClick:t[0]||(t[0]=()=>r(Q).currentReferenceMsg=null)},null,8,["component"])])):d("v-if",!0),l("div",L,[u(r(M),{show:$.value,"onUpdate:show":t[1]||(t[1]=e=>$.value=e),placement:"top",trigger:"click","show-arrow":!1,"display-directive":"show",delay:0},{trigger:f((()=>[u(r(k),{quaternary:"",size:"tiny"},{icon:f((()=>[q])),_:1})])),default:f((()=>[l("div",F,[d(' <span>最近使用</span>\n\t\t\t\t\t<div class="list-box">\n\t\t\t\t\t\t<template v-for="(img, index) in images" :key="index">\n\t\t\t\t\t\t\t<i>\n\t\t\t\t\t\t\t\t<img :src="img" />\n\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div> '),H,l("div",K,[(o(!0),s(m,null,p(r(w).default,(([e,t])=>(o(),g(r(E),{key:e,"show-arrow":!1,trigger:"hover"},{trigger:f((()=>[u(r(k),{quaternary:"",size:"tiny",onClick:()=>function(e){$.value=!1,se({chatMessageType:_.EMOJI,msg:e})}(e)},{icon:f((()=>[l("img",{src:t},null,8,N)])),_:2},1032,["onClick"])])),default:f((()=>[v(" "+c(e),1)])),_:2},1024)))),128))])])])),_:1},8,["show"]),u(r(k),{quaternary:"",size:"tiny",onClick:t[2]||(t[2]=()=>se({chatMessageType:r(_).EMOJI,msg:0}))},{icon:f((()=>[V])),_:1}),u(r(C),{abstract:"",multiple:"",accept:"image/*",onChange:t[3]||(t[3]=e=>ie(e,r(_).IMAGE))},{default:f((()=>[u(r(b),{abstract:""},{default:f((({handleClick:e})=>[u(r(k),{quaternary:"",size:"tiny",onClick:e},{icon:f((()=>[G])),_:2},1032,["onClick"])])),_:1})])),_:1}),u(r(C),{abstract:"",multiple:"",accept:"video/*,.pdf,.doc.docx,,.zip,.xlsx,.txt",onChange:t[4]||(t[4]=e=>ie(e,r(_).FILE))},{default:f((()=>[u(r(b),{abstract:""},{default:f((({handleClick:e})=>[u(r(k),{quaternary:"",size:"tiny",onClick:e},{icon:f((()=>[U])),_:2},1032,["onClick"])])),_:1})])),_:1}),d(' <n-button quaternary size="tiny" @click="() => handleCall(MESSAGE_TYPE.AUDIO)">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<n-icon size="18" :component="CallOutline" />\n\t\t\t\t</template>\n\t\t\t</n-button>\n\t\t\t<n-button quaternary size="tiny" @click="() => handleCall(MESSAGE_TYPE.VIDEO)">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<n-icon size="20" :component="VideocamOutline" />\n\t\t\t\t</template>\n\t\t\t</n-button> ')]),i(l("div",{ref_key:"inputRef",ref:X,class:"input-box",contenteditable:"",onKeydown:te,onInput:ne},null,544),[[y,r(Q).id]]),l("div",J,[B,u(r(k),{type:"primary",round:"",disabled:!Y.value,onClick:oe},{default:f((()=>[v("发送")])),_:1},8,["disabled"])]),d(' <Video v-model:show="showVideo" :call-mode="callMode" /> ')],4)),[[y,r(Q).id]])}});export{P as default};
1
+ import{defineComponent as e,ref as n,watch as t,withDirectives as s,openBlock as r,createElementBlock as i,normalizeStyle as o,unref as a,createElementVNode as c,toDisplayString as l,createVNode as u,createCommentVNode as d,withCtx as f,Fragment as m,renderList as p,createBlock as g,createTextVNode as y,vShow as v}from"vue";import{NIcon as h,NPopover as M,NButton as k,NTooltip as C,NUpload as T,NUploadTrigger as x}from"naive-ui";import{format as I}from"date-fns";import{useState as _}from"../hooks/useState.js";import{useSession as b}from"../hooks/useSession.js";import{emojis as E}from"../utils/emoji.js";import{MESSAGE_TYPE as w}from"../constants/index.js";import{uploadFileApi as z}from"../api/index.js";import{CloseCircleOutline as R,CallOutline as j,VideocamOutline as D}from"@vicons/ionicons5";import{cloneDeep as L}from"lodash-es";import{simplifyMessage as S}from"../utils/index.js";const q={key:0,class:"reference-content-box"},A={class:"reference-content"},O=["innerHTML"],F={class:"tool-box"},H=c("i",{class:"chat--iconfont chat--icon-face"},null,-1),K={class:"emoji-box"},N=c("span",null,"默认表情",-1),V={class:"list-box"},U=["src"],J=c("i",{class:"chat--iconfont chat--icon-good"},null,-1),G=c("i",{class:"chat--iconfont chat--icon-image"},null,-1),X=c("i",{class:"chat--iconfont chat--icon-folder"},null,-1),B={class:"btn-box"},P=c("span",{class:"tip"},"Enter 发送, Shift + Enter 换行",-1);var Q=e({__name:"ChatFooter",setup(e){const Q=n(),W=n(""),{state:Y,stompClient:Z}=_(),{setCurrentSessionItem:$}=b(Y),ee=n(!1);function ne(e){Y.currentAVMsg.messageType=e,Y.currentAVMsg.callMode="call",Y.showVideo=!0,oe({chatMessageType:e,msg:""})}function te(e){["Enter"].includes(e.key)&&(function(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}(e)||(e.preventDefault(),ie()))}function se(){var e,n;W.value=(null==(n=null==(e=Q.value)?void 0:e.innerText)?void 0:n.trim())||""}async function re(e,n){const{file:t,name:s}=e.file,r=new FormData;r.append("sender",Y.userInfo.id),r.append("file",t);const i=await z(r);if(!i)return console.log("上传失败");oe({chatMessageType:n,msg:n===w.FILE?s:i,url:i})}function ie(){if(!(W.value.length>2e3))return W.value?void oe({msg:W.value}):console.log("请输入内容");console.log("请控制在2000字以内")}async function oe(e){const{chatMessageType:n=w.TEXT,msg:t,url:s}=e,r={msg:t,chatMessageType:n};n===w.FILE&&(r.fileUrl=s),[w.TEXT,w.BLEND].includes(n)&&(Q.value.innerHTML="",W.value=""),Y.currentReferenceMsg&&(r.referenceContent=L(Y.currentReferenceMsg),Y.currentReferenceMsg=null);const i=I(new Date,"yyyy-MM-dd HH:mm:ss");Y.currentMsg={content:r,sender:Y.userInfo.id,senderName:Y.userInfo.name,senderAvatar:Y.userInfo.avatar,id:"",sendTime:i,sending:!0,fail:!1},[w.AUDIO,w.VIDEO].includes(n)||(Y.isAppendMsg=!0),$({lastMessageSendTime:i,lastMessage:r,sortTime:i});try{Z.value.send("/app/chat/send",{},JSON.stringify({chatType:"SINGLE",content:r,receiver:Y.currentSessionItem.receiver})),Y.currentMsg={...Y.currentMsg,fail:!1}}catch(e){Y.currentMsg={...Y.currentMsg,fail:!0}}finally{Y.currentMsg={...Y.currentMsg,sending:!1}}}return t((()=>Y.currentReferenceMsg),(e=>{var n;e&&(null==(n=Q.value)||n.focus())})),(e,n)=>s((r(),i("section",{class:"chat-footer",style:o({cursor:a(Y).id?"default":"not-allowed"})},[a(Y).currentReferenceMsg?(r(),i("div",q,[c("div",A,[c("span",null,l(a(Y).currentReferenceMsg.senderName)+":",1),c("pre",{innerHTML:a(S)(a(Y).currentReferenceMsg.content)},null,8,O)]),u(a(h),{component:a(R),onClick:n[0]||(n[0]=()=>a(Y).currentReferenceMsg=null)},null,8,["component"])])):d("v-if",!0),c("div",F,[u(a(M),{show:ee.value,"onUpdate:show":n[1]||(n[1]=e=>ee.value=e),placement:"top",trigger:"click","show-arrow":!1,"display-directive":"show",delay:0},{trigger:f((()=>[u(a(k),{quaternary:"",size:"tiny"},{icon:f((()=>[H])),_:1})])),default:f((()=>[c("div",K,[d(' <span>最近使用</span>\r\n\t\t\t\t\t<div class="list-box">\r\n\t\t\t\t\t\t<template v-for="(img, index) in images" :key="index">\r\n\t\t\t\t\t\t\t<i>\r\n\t\t\t\t\t\t\t\t<img :src="img" />\r\n\t\t\t\t\t\t\t</i>\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</div> '),N,c("div",V,[(r(!0),i(m,null,p(a(E).default,(([e,n])=>(r(),g(a(C),{key:e,"show-arrow":!1,trigger:"hover"},{trigger:f((()=>[u(a(k),{quaternary:"",size:"tiny",onClick:()=>function(e){ee.value=!1,oe({chatMessageType:w.EMOJI,msg:e})}(e)},{icon:f((()=>[c("img",{src:n},null,8,U)])),_:2},1032,["onClick"])])),default:f((()=>[y(" "+l(e),1)])),_:2},1024)))),128))])])])),_:1},8,["show"]),u(a(k),{quaternary:"",size:"tiny",onClick:n[2]||(n[2]=()=>oe({chatMessageType:a(w).EMOJI,msg:0}))},{icon:f((()=>[J])),_:1}),u(a(T),{abstract:"",multiple:"",accept:"image/*",onChange:n[3]||(n[3]=e=>re(e,a(w).IMAGE))},{default:f((()=>[u(a(x),{abstract:""},{default:f((({handleClick:e})=>[u(a(k),{quaternary:"",size:"tiny",onClick:e},{icon:f((()=>[G])),_:2},1032,["onClick"])])),_:1})])),_:1}),u(a(T),{abstract:"",multiple:"",accept:"video/*,.pdf,.doc.docx,,.zip,.xlsx,.txt",onChange:n[4]||(n[4]=e=>re(e,a(w).FILE))},{default:f((()=>[u(a(x),{abstract:""},{default:f((({handleClick:e})=>[u(a(k),{quaternary:"",size:"tiny",onClick:e},{icon:f((()=>[X])),_:2},1032,["onClick"])])),_:1})])),_:1}),u(a(k),{quaternary:"",size:"tiny",onClick:n[5]||(n[5]=()=>ne(a(w).AUDIO))},{icon:f((()=>[u(a(h),{size:"18",component:a(j)},null,8,["component"])])),_:1}),u(a(k),{quaternary:"",size:"tiny",onClick:n[6]||(n[6]=()=>ne(a(w).VIDEO))},{icon:f((()=>[u(a(h),{size:"20",component:a(D)},null,8,["component"])])),_:1})]),s(c("div",{ref_key:"inputRef",ref:Q,class:"input-box",contenteditable:"",onKeydown:te,onInput:se},null,544),[[v,a(Y).id]]),c("div",B,[P,u(a(k),{type:"primary",round:"",disabled:!W.value,onClick:ie},{default:f((()=>[y("发送")])),_:1},8,["disabled"])])],4)),[[v,a(Y).id]])}});export{Q as default};
@@ -161,7 +161,7 @@ declare const _default: import("vue").DefineComponent<{}, {
161
161
  fileRef: import("vue").Ref<any>;
162
162
  keyword: import("vue").Ref<any>;
163
163
  handleInput: () => void;
164
- currentInfo: {
164
+ pageInfo: {
165
165
  page: number;
166
166
  hasMore: boolean;
167
167
  lastSendTime: string;
@@ -218,7 +218,7 @@ declare const _default: import("vue").DefineComponent<{}, {
218
218
  startTime: import("vue").Ref<any>;
219
219
  endTime: import("vue").Ref<any>;
220
220
  handleInput: () => void;
221
- currentInfo: {
221
+ pageInfo: {
222
222
  page: number;
223
223
  hasMore: boolean;
224
224
  lastSendTime: string;
@@ -1 +1 @@
1
- import{defineComponent as e,ref as t,openBlock as a,createElementBlock as i,Fragment as o,unref as s,createElementVNode as n,createVNode as c,withCtx as l,toDisplayString as r,createCommentVNode as u}from"vue";import{NAvatar as h,NButton as v}from"naive-ui";import{useState as f}from"../hooks/useState.js";import m from"./PersonProfile.vue.js";import d from"./ChatSet.vue.js";import p from"./ChatFile.vue.js";import w from"./ChatRecord.vue.js";const y={key:0,class:"chat-header box-shadow"},C={class:"chat-header__left"},_={class:"name"},k={class:"chat-header__right"},g=n("i",{class:"chat--iconfont chat--icon-image"},null,-1),S=n("i",{class:"chat--iconfont chat--icon-folder"},null,-1),b=n("i",{class:"chat--iconfont chat--icon-list-search"},null,-1),j=n("i",{class:"chat--iconfont chat--icon-set"},null,-1);var z=e({__name:"ChatHeader",setup(e){const{state:z}=f(),q=t(!1),I=t(!1),U=t("image"),x=t(!1);function F(e){U.value=e,I.value=!0}return(e,t)=>(a(),i(o,null,[s(z).id?(a(),i("section",y,[n("div",C,[c(m,{"user-id":s(z).currentSessionItem.receiver},{trigger:l((()=>[c(s(h),{round:"",size:30,src:s(z).currentSessionItem.avatar},null,8,["src"])])),_:1},8,["user-id"]),n("span",_,r(s(z).currentSessionItem.name),1)]),n("div",k,[c(s(v),{quaternary:"",size:"tiny",onClick:t[0]||(t[0]=()=>F("image"))},{icon:l((()=>[g])),_:1}),c(s(v),{quaternary:"",size:"tiny",onClick:t[1]||(t[1]=()=>F("file"))},{icon:l((()=>[S])),_:1}),c(s(v),{quaternary:"",size:"tiny",onClick:t[2]||(t[2]=()=>x.value=!0)},{icon:l((()=>[b])),_:1}),c(s(v),{quaternary:"",size:"tiny",onClick:t[3]||(t[3]=()=>q.value=!0)},{icon:l((()=>[j])),_:1}),u(' <i class="chat--iconfont chat--icon-folder" @click="() => handleOpenChatFile(\'file\')" />\n\t\t\t<i class="chat--iconfont chat--icon-list-search" @click="showChatRecord = true" />\n\t\t\t<i class="chat--iconfont chat--icon-set" @click="showChatSet = true" /> ')])])):u("v-if",!0),c(d,{show:q.value,"onUpdate:show":t[4]||(t[4]=e=>q.value=e)},null,8,["show"]),c(p,{show:I.value,"onUpdate:show":t[5]||(t[5]=e=>I.value=e),type:U.value,visible:I.value},null,8,["show","type","visible"]),c(w,{show:x.value,"onUpdate:show":t[6]||(t[6]=e=>x.value=e),visible:x.value},null,8,["show","visible"])],64))}});export{z as default};
1
+ import{defineComponent as e,ref as t,openBlock as a,createElementBlock as i,Fragment as o,unref as s,createElementVNode as n,createVNode as c,withCtx as l,toDisplayString as r,createCommentVNode as u}from"vue";import{NAvatar as h,NButton as v}from"naive-ui";import{useState as f}from"../hooks/useState.js";import m from"./PersonProfile.vue.js";import d from"./ChatSet.vue.js";import p from"./ChatFile.vue.js";import w from"./ChatRecord.vue.js";const y={key:0,class:"chat-header box-shadow"},C={class:"chat-header__left"},_={class:"name"},k={class:"chat-header__right"},g=n("i",{class:"chat--iconfont chat--icon-image"},null,-1),S=n("i",{class:"chat--iconfont chat--icon-folder"},null,-1),b=n("i",{class:"chat--iconfont chat--icon-list-search"},null,-1),j=n("i",{class:"chat--iconfont chat--icon-set"},null,-1);var z=e({__name:"ChatHeader",setup(e){const{state:z}=f(),q=t(!1),I=t(!1),U=t("image"),x=t(!1);function F(e){U.value=e,I.value=!0}return(e,t)=>(a(),i(o,null,[s(z).id?(a(),i("section",y,[n("div",C,[c(m,{"user-id":s(z).currentSessionItem.receiver},{trigger:l((()=>[c(s(h),{round:"",size:30,src:s(z).currentSessionItem.avatar},null,8,["src"])])),_:1},8,["user-id"]),n("span",_,r(s(z).currentSessionItem.name),1)]),n("div",k,[c(s(v),{quaternary:"",size:"tiny",onClick:t[0]||(t[0]=()=>F("image"))},{icon:l((()=>[g])),_:1}),c(s(v),{quaternary:"",size:"tiny",onClick:t[1]||(t[1]=()=>F("file"))},{icon:l((()=>[S])),_:1}),c(s(v),{quaternary:"",size:"tiny",onClick:t[2]||(t[2]=()=>x.value=!0)},{icon:l((()=>[b])),_:1}),c(s(v),{quaternary:"",size:"tiny",onClick:t[3]||(t[3]=()=>q.value=!0)},{icon:l((()=>[j])),_:1}),u(' <i class="chat--iconfont chat--icon-folder" @click="() => handleOpenChatFile(\'file\')" />\r\n\t\t\t<i class="chat--iconfont chat--icon-list-search" @click="showChatRecord = true" />\r\n\t\t\t<i class="chat--iconfont chat--icon-set" @click="showChatSet = true" /> ')])])):u("v-if",!0),c(d,{show:q.value,"onUpdate:show":t[4]||(t[4]=e=>q.value=e)},null,8,["show"]),c(p,{show:I.value,"onUpdate:show":t[5]||(t[5]=e=>I.value=e),type:U.value,visible:I.value},null,8,["show","type","visible"]),c(w,{show:x.value,"onUpdate:show":t[6]||(t[6]=e=>x.value=e),visible:x.value},null,8,["show","visible"])],64))}});export{z as default};
@@ -1,5 +1,5 @@
1
1
  import { AnyObject } from '../../../../shared/types';
2
- import { formatTime, downloadFile, simplifyMessage } from '../utils';
2
+ import { formatTime, downloadFile, simplifyMessage, isAudioOrVideoMessage } from '../utils';
3
3
  import { MESSAGE_TYPE } from '../constants';
4
4
  declare const _default: import("vue").DefineComponent<{}, {
5
5
  chatMainRef: import("vue").Ref<HTMLElement | undefined>;
@@ -7,7 +7,7 @@ declare const _default: import("vue").DefineComponent<{}, {
7
7
  setMsgList: (list?: AnyObject[]) => void;
8
8
  setCurrentSessionItem: (item: AnyObject) => void;
9
9
  showMenu: import("vue").Ref<boolean>;
10
- currentInfo: {
10
+ pageInfo: {
11
11
  page: number;
12
12
  hasMore: boolean;
13
13
  lastSendTime: string;
@@ -183,6 +183,7 @@ declare const _default: import("vue").DefineComponent<{}, {
183
183
  formatTime: typeof formatTime;
184
184
  downloadFile: typeof downloadFile;
185
185
  simplifyMessage: typeof simplifyMessage;
186
+ isAudioOrVideoMessage: typeof isAudioOrVideoMessage;
186
187
  MESSAGE_TYPE: typeof MESSAGE_TYPE;
187
188
  ChatbubbleEllipsesOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
188
189
  EllipsisHorizontal: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
@@ -1 +1 @@
1
- import{defineComponent as e,ref as t,watch as n,openBlock as s,createElementBlock as i,normalizeClass as o,unref as r,createVNode as a,withCtx as c,Fragment as l,renderList as m,toDisplayString as u,createCommentVNode as d,createBlock as p,withModifiers as f,createElementVNode as v}from"vue";import{NImageGroup as y,NAvatar as g,NImage as T,NButtonGroup as M,NButton as h,NIcon as k}from"naive-ui";import{format as _}from"date-fns";import{getHistoryRecordApi as E,readMessageApi as S}from"../api/index.js";import{useState as L}from"../hooks/useState.js";import{useSession as I}from"../hooks/useSession.js";import{first as j,last as C,isNumber as A}from"lodash-es";import H from"./PersonProfile.vue.js";import b from"./MessageTemplate.vue.js";import{emojis as w}from"../utils/emoji.js";import x from"./ContextMenu.js";import{formatTime as z,simplifyMessage as N,downloadFile as O}from"../utils/index.js";import{MESSAGE_TYPE as P}from"../constants/index.js";import{useScrollLoading as q}from"../hooks/useScrollLoading.js";import{ChatbubbleEllipsesOutline as D,EllipsisHorizontal as R}from"@vicons/ionicons5";const G={key:0,class:"time"},U={key:2,class:"message-box"},J=["data-time"],K={key:0,class:"reference-content"},F=["innerHTML"],X=["innerHTML"],B=["src"],Q=["href","onClick"],V=v("i",{class:"chat--iconfont chat--icon-face"},null,-1);var W=e({__name:"ChatMain",setup(e){const W=t(),{state:Y,setMsgList:Z}=L(),{setCurrentSessionItem:$}=I(Y),ee=t(!1),te={page:0,hasMore:!0,lastSendTime:_(new Date,"yyyy-MM-dd HH:mm:ss")};async function ne(){try{if(!te.hasMore)return;te.page++;const e=await E({sessionKey:Y.currentSessionItem.sessionKey,page:te.page,lastSendTime:te.lastSendTime});if(!Array.isArray(e)||0===e.length)return te.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");const t=j(e).id;te.lastSendTime=C(e).sendTime,Z(te.page>1?[...e,...Y.msgList]:e),1===te.page&&Y.currentSessionItem.unreadNum&&(await S({chatType:"SINGLE",messageIdSet:[t],receiver:Y.userInfo.id,sender:Y.currentSessionItem.receiver}),$({unreadNum:0}))}catch(e){console.log(e)}}function se(e){const{chatMessageType:t,messageTemplate:n}=e.content;return t!==P.TEMPLATE||!!n}function ie(e,t){var n,s;const{chatMessageType:i,messageTemplate:o}=e.content;if(i===P.TEMPLATE)return"system"===t?2==(null==(n=null==o?void 0:o.setting)?void 0:n.style.id):2!=(null==(s=null==o?void 0:o.setting)?void 0:s.style.id)}function oe(e){var t,n;const{chatMessageType:s,messageTemplate:i}=e;return s===P.TEMPLATE&&3==(null==(n=null==(t=null==i?void 0:i.setting)?void 0:t.style)?void 0:n.id)}function re(e,t){var n;const s=A(e.sendTime)?e.sendTime:Date.parse(e.sendTime),i=null==(n=Y.msgList[t-1])?void 0:n.sendTime;return s-(0===t?0:A(i)?i:Date.parse(i))>3e5}return q(W,(()=>{ne()}),"top"),n((()=>Y.id),(e=>{e&&(Object.assign(te,{page:0,hasMore:!0,lastSendTime:_(new Date,"yyyy-MM-dd HH:mm:ss")}),ne())}),{immediate:!0}),n((()=>Y.isAppendMsg),(e=>{e&&(Z([...Y.msgList,Y.currentMsg]),Y.isAppendMsg=!1,async function(){var e,t,n;const s=null!=(t=null==(e=W.value)?void 0:e.scrollHeight)?t:0;null==(n=W.value)||n.scrollTo({top:s,behavior:"auto"})}())}),{immediate:!0}),(e,t)=>(s(),i("div",{class:o(["chat-main",{"home-bg":!r(Y).id}]),ref_key:"chatMainRef",ref:W},[a(r(y),{"show-toolbar-tooltip":""},{default:c((()=>[(s(!0),i(l,null,m(r(Y).msgList,((e,n)=>(s(),i(l,{key:n},[se(e)?(s(),i("div",{key:0,class:o(["message-item",{"message-item--mine":e.sender==r(Y).userInfo.id}])},[re(e,n)?(s(),i("p",G,u(r(z)(e.sendTime).recordTime),1)):d("v-if",!0),ie(e,"system")?(s(),p(b,{key:1,data:e},null,8,["data"])):(s(),i("div",U,[a(H,{"user-id":e.sender},{trigger:c((()=>[a(r(g),{round:"",size:38,src:e.senderAvatar},null,8,["src"])])),_:2},1032,["user-id"]),e.content?(s(),i("div",{key:0,class:o(["content",{emoji:e.content.chatMessageType===r(P).EMOJI,template:e.content.chatMessageType===r(P).TEMPLATE,"template--3":oe(e.content)}]),"data-time":e.__time,onContextmenu:t[0]||(t[0]=f((e=>ee.value=!0),["prevent"]))},[e.content.chatMessageType===r(P).TEXT?(s(),i(l,{key:0},[e.content.referenceContent?(s(),i("div",K,[v("span",null,u(e.content.referenceContent.senderName)+":",1),v("pre",{innerHTML:r(N)(e.content.referenceContent.content)},null,8,F)])):d("v-if",!0),v("pre",{innerHTML:e.__content},null,8,X)],64)):d("v-if",!0),e.content.chatMessageType===r(P).EMOJI?(s(),i("img",{key:1,src:r(w).findEmoji(e.__content)},null,8,B)):d("v-if",!0),ie(e,"template")?(s(),p(b,{key:2,data:e},null,8,["data"])):d("v-if",!0),e.content.chatMessageType===r(P).IMAGE?(s(),p(r(T),{key:3,width:"240",src:e.__content},null,8,["src"])):d("v-if",!0),e.content.chatMessageType===r(P).FILE?(s(),i("a",{key:4,href:e.content.fileUrl,onClick:f((()=>r(O)(e.content.fileUrl,e.__content)),["prevent"])},u(e.__content),9,Q)):d("v-if",!0),d(' <div class="quick-menu">\n\t\t\t\t\t\t\t\t\t<n-icon :component="AddCircleOutline" />\n\t\t\t\t\t\t\t\t\t<n-icon :component="ChatbubbleEllipsesOutline" @click="() => setReferenceMsg(item)" />\n\t\t\t\t\t\t\t\t\t<n-icon :component="EllipsisHorizontal" />\n\t\t\t\t\t\t\t\t</div> '),a(r(M),{class:"quick-menu"},{default:c((()=>[a(r(h),{quaternary:"",size:"tiny"},{icon:c((()=>[V])),_:1}),a(r(h),{quaternary:"",size:"tiny",onClick:()=>{return t=e,Y.currentReferenceMsg=t,void Object.assign(Y.currentReferenceMsg,{chatType:"SINGLE",receiver:Y.currentSessionItem.receiver,receiverAvatar:Y.currentSessionItem.avatar,receiverName:Y.currentSessionItem.name});var t}},{icon:c((()=>[a(r(k),{size:"17",component:r(D)},null,8,["component"])])),_:2},1032,["onClick"]),a(r(h),{quaternary:"",size:"tiny"},{icon:c((()=>[a(r(k),{component:r(R)},null,8,["component"])])),_:1})])),_:2},1024)],42,J)):d("v-if",!0)]))],2)):d("v-if",!0)],64)))),128))])),_:1}),a(r(x),{show:ee.value,"onUpdate:show":t[1]||(t[1]=e=>ee.value=e)},null,8,["show"])],2))}});export{W as default};
1
+ import{defineComponent as e,ref as t,watch as n,openBlock as s,createElementBlock as i,normalizeClass as o,unref as r,createVNode as a,withCtx as c,Fragment as l,renderList as m,toDisplayString as u,createCommentVNode as d,createBlock as p,withModifiers as f,createElementVNode as v}from"vue";import{NImageGroup as y,NAvatar as g,NImage as T,NButtonGroup as M,NButton as h,NIcon as k}from"naive-ui";import{format as _}from"date-fns";import{getHistoryRecordApi as E,readMessageApi as S}from"../api/index.js";import{useState as L}from"../hooks/useState.js";import{useSession as I}from"../hooks/useSession.js";import{first as j,last as C,isNumber as A}from"lodash-es";import H from"./PersonProfile.vue.js";import b from"./MessageTemplate.vue.js";import{emojis as w}from"../utils/emoji.js";import x from"./ContextMenu.js";import{formatTime as z,simplifyMessage as N,isAudioOrVideoMessage as O,downloadFile as P}from"../utils/index.js";import{MESSAGE_TYPE as q}from"../constants/index.js";import{useScrollLoading as D}from"../hooks/useScrollLoading.js";import{ChatbubbleEllipsesOutline as R,EllipsisHorizontal as G}from"@vicons/ionicons5";const U={key:0,class:"time"},J={key:2,class:"message-box"},K=["data-time"],F={key:0,class:"reference-content"},X=["innerHTML"],B=["innerHTML"],Q=["src"],V={key:4},W=["href","onClick"],Y=v("i",{class:"chat--iconfont chat--icon-face"},null,-1);var Z=e({__name:"ChatMain",setup(e){const Z=t(),{state:$,setMsgList:ee}=L(),{setCurrentSessionItem:te}=I($),ne=t(!1),se={page:0,hasMore:!0,lastSendTime:_(new Date,"yyyy-MM-dd HH:mm:ss")};async function ie(){try{if(!se.hasMore)return;se.page++;const e=await E({sessionKey:$.currentSessionItem.sessionKey,page:se.page,lastSendTime:se.lastSendTime});if(!Array.isArray(e)||0===e.length)return se.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");const t=j(e).id;se.lastSendTime=C(e).sendTime,ee(se.page>1?[...e,...$.msgList]:e),1===se.page&&$.currentSessionItem.unreadNum&&(await S({chatType:"SINGLE",messageIdSet:[t],receiver:$.userInfo.id,sender:$.currentSessionItem.receiver}),te({unreadNum:0}))}catch(e){console.log(e)}}function oe(e){const{chatMessageType:t,messageTemplate:n}=e.content;return t!==q.TEMPLATE||!!n}function re(e,t){var n,s;const{chatMessageType:i,messageTemplate:o}=e.content;if(i===q.TEMPLATE)return"system"===t?2==(null==(n=null==o?void 0:o.setting)?void 0:n.style.id):2!=(null==(s=null==o?void 0:o.setting)?void 0:s.style.id)}function ae(e){var t,n;const{chatMessageType:s,messageTemplate:i}=e;return s===q.TEMPLATE&&3==(null==(n=null==(t=null==i?void 0:i.setting)?void 0:t.style)?void 0:n.id)}function ce(e,t){var n;const s=A(e.sendTime)?e.sendTime:Date.parse(e.sendTime),i=null==(n=$.msgList[t-1])?void 0:n.sendTime;return s-(0===t?0:A(i)?i:Date.parse(i))>3e5}return D(Z,(()=>{ie()}),"top"),n((()=>$.id),(e=>{e&&(Object.assign(se,{page:0,hasMore:!0,lastSendTime:_(new Date,"yyyy-MM-dd HH:mm:ss")}),ie())}),{immediate:!0}),n((()=>$.isAppendMsg),(e=>{e&&(ee([...$.msgList,$.currentMsg]),$.isAppendMsg=!1,async function(){var e,t,n;const s=null!=(t=null==(e=Z.value)?void 0:e.scrollHeight)?t:0;null==(n=Z.value)||n.scrollTo({top:s,behavior:"auto"})}())}),{immediate:!0}),(e,t)=>(s(),i("div",{class:o(["chat-main",{"home-bg":!r($).id}]),ref_key:"chatMainRef",ref:Z},[a(r(y),{"show-toolbar-tooltip":""},{default:c((()=>[(s(!0),i(l,null,m(r($).msgList,((e,n)=>(s(),i(l,{key:n},[oe(e)?(s(),i("div",{key:0,class:o(["message-item",{"message-item--mine":e.sender==r($).userInfo.id}])},[ce(e,n)?(s(),i("p",U,u(r(z)(e.sendTime).recordTime),1)):d("v-if",!0),re(e,"system")?(s(),p(b,{key:1,data:e},null,8,["data"])):(s(),i("div",J,[a(H,{"user-id":e.sender},{trigger:c((()=>[a(r(g),{round:"",size:38,src:e.senderAvatar},null,8,["src"])])),_:2},1032,["user-id"]),e.content?(s(),i("div",{key:0,class:o(["content",{emoji:e.content.chatMessageType===r(q).EMOJI,template:e.content.chatMessageType===r(q).TEMPLATE,"template--3":ae(e.content)}]),"data-time":e.__time,onContextmenu:t[0]||(t[0]=f((e=>ne.value=!0),["prevent"]))},[e.content.chatMessageType===r(q).TEXT?(s(),i(l,{key:0},[e.content.referenceContent?(s(),i("div",F,[v("span",null,u(e.content.referenceContent.senderName)+":",1),v("pre",{innerHTML:r(N)(e.content.referenceContent.content)},null,8,X)])):d("v-if",!0),v("pre",{innerHTML:e.__content},null,8,B)],64)):d("v-if",!0),e.content.chatMessageType===r(q).EMOJI?(s(),i("img",{key:1,src:r(w).findEmoji(e.__content)},null,8,Q)):d("v-if",!0),re(e,"template")?(s(),p(b,{key:2,data:e},null,8,["data"])):d("v-if",!0),e.content.chatMessageType===r(q).IMAGE?(s(),p(r(T),{key:3,width:"240",src:e.__content},null,8,["src"])):d("v-if",!0),r(O)(e.content)?(s(),i("span",V,"音视频通话")):d("v-if",!0),e.content.chatMessageType===r(q).FILE?(s(),i("a",{key:5,href:e.content.fileUrl,onClick:f((()=>r(P)(e.content.fileUrl,e.__content)),["prevent"])},u(e.__content),9,W)):d("v-if",!0),d(' <div class="quick-menu">\r\n\t\t\t\t\t\t\t\t\t<n-icon :component="AddCircleOutline" />\r\n\t\t\t\t\t\t\t\t\t<n-icon :component="ChatbubbleEllipsesOutline" @click="() => setReferenceMsg(item)" />\r\n\t\t\t\t\t\t\t\t\t<n-icon :component="EllipsisHorizontal" />\r\n\t\t\t\t\t\t\t\t</div> '),a(r(M),{class:"quick-menu"},{default:c((()=>[a(r(h),{quaternary:"",size:"tiny"},{icon:c((()=>[Y])),_:1}),a(r(h),{quaternary:"",size:"tiny",onClick:()=>{return t=e,$.currentReferenceMsg=t,void Object.assign($.currentReferenceMsg,{chatType:"SINGLE",receiver:$.currentSessionItem.receiver,receiverAvatar:$.currentSessionItem.avatar,receiverName:$.currentSessionItem.name});var t}},{icon:c((()=>[a(r(k),{size:"17",component:r(R)},null,8,["component"])])),_:2},1032,["onClick"]),a(r(h),{quaternary:"",size:"tiny"},{icon:c((()=>[a(r(k),{component:r(G)},null,8,["component"])])),_:1})])),_:2},1024)],42,K)):d("v-if",!0)]))],2)):d("v-if",!0)],64)))),128))])),_:1}),a(r(x),{show:ne.value,"onUpdate:show":t[1]||(t[1]=e=>ne.value=e)},null,8,["show"])],2))}});export{Z as default};
@@ -24,7 +24,7 @@ declare const _default: import("vue").DefineComponent<{
24
24
  startTime: import("vue").Ref<any>;
25
25
  endTime: import("vue").Ref<any>;
26
26
  handleInput: () => void;
27
- currentInfo: {
27
+ pageInfo: {
28
28
  page: number;
29
29
  hasMore: boolean;
30
30
  lastSendTime: string;
@@ -1,13 +1,20 @@
1
+ import { AnyObject } from '../../../../shared/types';
1
2
  declare const _default: import("vue").DefineComponent<{}, {
2
- cssVars: import("vue").ComputedRef<import("../../../../shared/types").AnyObject>;
3
+ cssVars: import("vue").ComputedRef<AnyObject>;
4
+ listRef: import("vue").Ref<any>;
3
5
  inputRef: import("vue").Ref<any>;
4
6
  showSearch: import("vue").Ref<boolean>;
5
7
  keyword: import("vue").Ref<any>;
6
8
  userList: import("vue").Ref<any>;
7
9
  state: import("../types").IState;
8
- openSession: (item: import("../../../../shared/types").AnyObject) => Promise<void>;
9
- handleInput: () => Promise<void>;
10
+ openSession: (item: AnyObject) => Promise<void>;
11
+ pageInfo: {
12
+ page: number;
13
+ hasMore: boolean;
14
+ };
15
+ handleInput: () => void;
10
16
  handleSearch: () => Promise<void>;
17
+ resetAndSearch: () => void;
11
18
  addSession: (userId: string) => Promise<void>;
12
19
  NPopover: any;
13
20
  NButton: any;
@@ -1 +1 @@
1
- import{defineComponent as e,ref as o,watch as s,nextTick as r,openBlock as a,createBlock as t,unref as n,withCtx as i,createVNode as l,createTextVNode as u,createElementVNode as f,normalizeStyle as c,createElementBlock as p,Fragment as m,renderList as v,toDisplayString as d}from"vue";import{NPopover as h,NButton as k,NIcon as w,NInput as y,NAvatar as g}from"naive-ui";import{SearchOutline as j}from"@vicons/ionicons5";import{useState as I}from"../hooks/useState.js";import{useSession as S}from"../hooks/useSession.js";import{listUserApi as _,openSessionApi as x}from"../api/index.js";import{isArray as C}from"lodash-es";import{useDebounceFn as b}from"@vueuse/core";import{useTheme as z}from"../../../../shared/hooks/useTheme.js";import"date-fns";import"@vue/shared";import"../../../../shared/utils/index.js";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";const T={class:"user-list-wrapper"},U=["onClick"],D={class:"user-info"},E=f("span",null,"职务",-1),G=f("span",null,"部门",-1);var H=e({__name:"ChatSearch",setup(e){const H=z(),L=o(),M=o(!1),N=o(),R=o(),{state:q}=I(),{openSession:A}=S(q),B=b((async function(){if(!N.value)return void(R.value=[]);const e=await _({orgId:q.orgId,keyword:N.value});if(!C(e))return;R.value=e}),300);return s((()=>M.value),(async e=>{var o;e&&(await r(),null==(o=L.value)||o.focus())})),(e,o)=>(a(),t(n(h),{show:M.value,"onUpdate:show":o[1]||(o[1]=e=>M.value=e),placement:"top",trigger:"click","display-directive":"show","show-arrow":!1,delay:0,overlap:""},{trigger:i((()=>[l(n(k),{color:"#ffffff4D",class:"search-trigger-btn"},{icon:i((()=>[l(n(w),{component:n(j),color:"#ffffff80"},null,8,["component"])])),default:i((()=>[u(" 搜索联系人 ")])),_:1})])),default:i((()=>[f("div",{class:"popover-search",style:c(n(H))},[l(n(y),{ref_key:"inputRef",ref:L,size:"small",clearable:"",autofocus:"",value:N.value,"onUpdate:value":o[0]||(o[0]=e=>N.value=e),valueModifiers:{trim:!0},onInput:n(B)},{prefix:i((()=>[l(n(w),{color:"#ffffff80",component:n(j)},null,8,["component"])])),_:1},8,["value","onInput"]),f("div",T,[(a(!0),p(m,null,v(R.value,(e=>(a(),p("div",{class:"user-item",key:e.id,onClick:()=>async function(e){M.value=!1;const o=await x({chatType:"SINGLE",receiver:e,sender:q.userInfo.id});A(o)}(e.id)},[l(n(g),{round:"",size:32,src:e.avatar},null,8,["src"]),f("div",D,[f("span",null,d(e.name),1),E,G])],8,U)))),128))])],4)])),_:1},8,["show"]))}});export{H as default};
1
+ import{defineComponent as e,ref as o,watch as s,nextTick as a,openBlock as r,createBlock as t,unref as n,withCtx as i,createVNode as l,createTextVNode as u,createElementVNode as c,normalizeStyle as p,createElementBlock as f,Fragment as m,renderList as d,toDisplayString as v}from"vue";import{NPopover as h,NButton as g,NIcon as k,NInput as w,NAvatar as y}from"naive-ui";import{SearchOutline as j}from"@vicons/ionicons5";import{useState as S}from"../hooks/useState.js";import{useSession as _}from"../hooks/useSession.js";import{listUserApi as I,openSessionApi as M}from"../api/index.js";import{isArray as x}from"lodash-es";import{useDebounceFn as C}from"@vueuse/core";import{useTheme as b}from"../../../../shared/hooks/useTheme.js";import"date-fns";import"@vue/shared";import"../../../../shared/utils/index.js";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import{useScrollLoading as z}from"../hooks/useScrollLoading.js";const L=["onClick"],N={class:"user-info"};var R=e({__name:"ChatSearch",setup(e){const R=b(),T=o(),U=o(),D=o(!1),E=o(),G=o(),{state:H}=S(),{openSession:O}=_(H),q={page:0,hasMore:!0},A=C((function(){Object.assign(q,{page:0,hasMore:!0}),B()}),300);async function B(){if(!E.value)return void(G.value=[]);if(!q.hasMore)return;q.page++;const e=await I({orgId:H.orgId,keyword:E.value,page:q.page,pageSize:10});x(e.records)&&q.page<=+e.total&&(G.value=q.page>1?G.value.concat(e.records):e.records,q.page==e.total&&(q.hasMore=!1,console.log("没有更多消息了")))}return z(T,(()=>{B()})),s((()=>D.value),(async e=>{var o;e&&(await a(),null==(o=U.value)||o.focus())})),(e,o)=>(r(),t(n(h),{show:D.value,"onUpdate:show":o[1]||(o[1]=e=>D.value=e),placement:"top",trigger:"click","display-directive":"show","show-arrow":!1,delay:0,overlap:""},{trigger:i((()=>[l(n(g),{color:"#ffffff4D",class:"search-trigger-btn"},{icon:i((()=>[l(n(k),{component:n(j),color:"#ffffff80"},null,8,["component"])])),default:i((()=>[u(" 搜索联系人 ")])),_:1})])),default:i((()=>[c("div",{class:"popover-search",style:p(n(R))},[l(n(w),{ref_key:"inputRef",ref:U,size:"small",clearable:"",autofocus:"",value:E.value,"onUpdate:value":o[0]||(o[0]=e=>E.value=e),valueModifiers:{trim:!0},onInput:n(A)},{prefix:i((()=>[l(n(k),{color:"#ffffff80",component:n(j)},null,8,["component"])])),_:1},8,["value","onInput"]),c("div",{class:"user-list-wrapper",ref_key:"listRef",ref:T},[(r(!0),f(m,null,d(G.value,(e=>(r(),f("div",{class:"user-item",key:e.id,onClick:()=>async function(e){D.value=!1;const o=await M({chatType:"SINGLE",receiver:e,sender:H.userInfo.id});O(o)}(e.id)},[l(n(y),{round:"",size:32,src:e.avatar},null,8,["src"]),c("div",N,[c("span",null,v(e.name),1),c("span",null,v(e.deptName),1),c("span",null,v(e.post),1)])],8,L)))),128))],512)],4)])),_:1},8,["show"]))}});export{R as default};
@@ -1 +1 @@
1
- import{defineComponent as e,ref as s,computed as i,watch as t,withDirectives as a,openBlock as n,createElementBlock as l,normalizeStyle as r,unref as o,createBlock as u,createCommentVNode as d,createElementVNode as v,Fragment as m,renderList as c,withCtx as p,createTextVNode as f,toDisplayString as k,normalizeClass as _,createVNode as h,vShow as y}from"vue";import{NSpin as S,NTag as g,NAvatar as b,NBadge as x}from"naive-ui";import{useState as M}from"../hooks/useState.js";import{useSession as L}from"../hooks/useSession.js";import{vFlexibleResize as C}from"../../../../shared/directive/flexibleResize.js";import{listSort as j,formatTime as N}from"../utils/index.js";const T={class:"sider-list__filter box-shadow"},w=["onClick"],I={class:"avatar-right"},R={class:"name"},z={class:"msg-tip"},H={class:"msg-tip__content"},U=["innerHTML"];var B=e({__name:"SiderList",setup(e){const B="all",E="unread",O=s(300),V=s(),q=s(!1),A=s([{label:"全部",key:B},{label:"未读",key:E}]),D=s("all"),{state:F,emit:G}=M(),{openSession:J,unreadTotal:K,setSessionList:P}=L(F),Q=i((()=>Math.min(Math.max(O.value,240),360))),W=i((()=>j(F.sessionList)));function X(e){!e.id||F.sessionList.map((e=>e.id)).includes(e.id)?F.sessionList.forEach((s=>{if(s.receiver===e.receiver){let{unreadNum:i=0}=s;Object.assign(s,e),e.receiver!==F.currentSessionItem.receiver&&(s.unreadNum=++i)}})):P([...F.sessionList,e])}function Y({distance:e}){O.value=O.value+e}function Z(e,s=o(D)){var i;return s===B||(s===E?(null!=(i=e.unreadNum)?i:0)>0:void 0)}return t([()=>F.isChangeSession,()=>F.isUpdateSession],(([e,s])=>{e&&(X(F.currentSessionItem),F.isChangeSession=!1),s&&(X(F.updateSessionItem),F.isUpdateSession=!1)}),{immediate:!0}),t((()=>K.value),(e=>{const s=W.value.filter((e=>Z(e,E)));G("unread-message-update",e,s)})),(e,s)=>a((n(),l("section",{class:"sider-list",style:r({width:o(Q)+"px"})},[q.value?(n(),u(o(S),{key:0,stroke:"#5585f5"})):d("v-if",!0),d(' <n-input v-else placeholder="输入用户名模糊搜索" v-model:value="keyword" @keyup.enter="handleSearch"></n-input> '),v("div",T,[(n(!0),l(m,null,c(A.value,(e=>(n(),u(o(g),{type:D.value===e.key?"info":"default",round:"",bordered:!1,key:e.key,onClick:()=>{return s=e.key,void(D.value=s);var s}},{default:p((()=>[f(k(e.label)+"("+k(o(K))+") ",1)])),_:2},1032,["type","onClick"])))),128))]),v("div",{class:"sider-list__box",ref_key:"listBoxRef",ref:V},[(n(!0),l(m,null,c(o(W),(e=>a((n(),l("div",{key:e.id,onClick:()=>o(J)(e),class:_(["sider-list__box__item",{active:e.id===o(F).id},e.topping?"sider-list__box__item--top":""])},[h(o(b),{round:"",size:"large",src:e.avatar},null,8,["src"]),v("div",I,[v("div",R,[v("h4",null,k(e.name),1),v("span",null,k(e.lastMessage?o(N)(e.lastMessageSendTime).siderMsgTime:""),1)]),v("div",z,[v("div",H,[v("div",{innerHTML:e.lastMessageContent},null,8,U)]),h(o(x),{value:e.unreadNum>99?"99+":e.unreadNum},null,8,["value"])])])],10,w)),[[y,Z(e)]]))),128))],512)],4)),[[o(C),{mode:"VR",onMove:Y}]])}});export{B as default};
1
+ import{defineComponent as e,ref as s,computed as i,watch as n,withDirectives as t,openBlock as a,createElementBlock as l,normalizeStyle as o,unref as r,createBlock as u,createCommentVNode as d,createElementVNode as m,Fragment as v,renderList as c,withCtx as p,createTextVNode as f,toDisplayString as k,normalizeClass as _,createVNode as y,vShow as h}from"vue";import{NSpin as S,NTag as g,NAvatar as b,NBadge as x}from"naive-ui";import{useState as M}from"../hooks/useState.js";import{useSession as L}from"../hooks/useSession.js";import{vFlexibleResize as C}from"../../../../shared/directive/flexibleResize.js";import{listSort as j,formatTime as N}from"../utils/index.js";const T={class:"sider-list__filter box-shadow"},w=["onClick"],I={class:"avatar-right"},R={class:"name"},z={class:"msg-tip"},H={class:"msg-tip__content"},K=["innerHTML"];var U=e({__name:"SiderList",setup(e){const U="all",B="unread",E=s(300),O=s(),V=s(!1),q=s([{label:"全部",key:U},{label:"未读",key:B}]),A=s("all"),{state:D,emit:F}=M(),{openSession:G,unreadTotal:J,setSessionList:P}=L(D),Q=i((()=>Math.min(Math.max(E.value,240),360))),W=i((()=>j(D.sessionList)));function X(e){!e.id||D.sessionList.map((e=>e.id)).includes(e.id)?D.sessionList.forEach((s=>{if(s.receiver===e.receiver){let{unreadNum:i=0}=s;Object.assign(s,e),e.sessionKey!==D.currentSessionItem.sessionKey&&(s.unreadNum=++i)}})):P([...D.sessionList,e])}function Y({distance:e}){E.value=E.value+e}function Z(e,s=r(A)){var i;return s===U||(s===B?(null!=(i=e.unreadNum)?i:0)>0:void 0)}return n([()=>D.isChangeSession,()=>D.isUpdateSession],(([e,s])=>{e&&(X(D.currentSessionItem),D.isChangeSession=!1),s&&(X(D.updateSessionItem),D.isUpdateSession=!1)}),{immediate:!0}),n((()=>J.value),(e=>{const s=W.value.filter((e=>Z(e,B)));F("unread-message-update",e,s)})),(e,s)=>t((a(),l("section",{class:"sider-list",style:o({width:r(Q)+"px"})},[V.value?(a(),u(r(S),{key:0,stroke:"#5585f5"})):d("v-if",!0),d(' <n-input v-else placeholder="输入用户名模糊搜索" v-model:value="keyword" @keyup.enter="handleSearch"></n-input> '),m("div",T,[(a(!0),l(v,null,c(q.value,(e=>(a(),u(r(g),{type:A.value===e.key?"info":"default",round:"",bordered:!1,key:e.key,onClick:()=>{return s=e.key,void(A.value=s);var s}},{default:p((()=>[f(k(e.label)+"("+k(r(J))+") ",1)])),_:2},1032,["type","onClick"])))),128))]),m("div",{class:"sider-list__box",ref_key:"listBoxRef",ref:O},[(a(!0),l(v,null,c(r(W),(e=>t((a(),l("div",{key:e.id,onClick:()=>r(G)(e),class:_(["sider-list__box__item",{active:e.id===r(D).id},e.topping?"sider-list__box__item--top":""])},[y(r(b),{round:"",size:"large",src:e.avatar},null,8,["src"]),m("div",I,[m("div",R,[m("h4",null,k(e.name),1),m("span",null,k(e.lastMessage?r(N)(e.lastMessageSendTime).siderMsgTime:""),1)]),m("div",z,[m("div",H,[m("div",{innerHTML:e.lastMessageContent},null,8,K)]),y(r(x),{value:e.unreadNum>99?"99+":e.unreadNum},null,8,["value"])])])],10,w)),[[h,Z(e)]]))),128))],512)],4)),[[r(C),{mode:"VR",onMove:Y}]])}});export{U as default};
@@ -1,38 +1,43 @@
1
1
  import TRTC from 'trtc-sdk-v5';
2
- declare const _default: import("vue").DefineComponent<{
3
- show: {
4
- type: BooleanConstructor;
5
- default: boolean;
2
+ import { MESSAGE_TYPE } from '../constants';
3
+ declare const _default: import("vue").DefineComponent<{}, {
4
+ time: {
5
+ timer: any;
6
+ seconds: number;
6
7
  };
7
- }, {
8
- props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
9
- show: {
10
- type: BooleanConstructor;
11
- default: boolean;
12
- };
13
- }>> & {
14
- "onUpdate:show"?: ((...args: any[]) => any) | undefined;
15
- }>>;
16
- emit: (event: "update:show", ...args: any[]) => void;
17
8
  state: import("../types").IState;
18
9
  videoRef: import("vue").Ref<any>;
19
10
  selfVideoRef: import("vue").Ref<any>;
11
+ tipContent: import("vue").Ref<any>;
12
+ isConnect: import("vue").Ref<boolean>;
13
+ voiceOpen: import("vue").Ref<boolean>;
14
+ messageType: import("vue").ComputedRef<any>;
15
+ callMode: import("vue").ComputedRef<any>;
16
+ info: import("vue").ComputedRef<{
17
+ sessionKey: any;
18
+ avatar: any;
19
+ name: any;
20
+ userId: any;
21
+ }>;
20
22
  trtc: TRTC;
21
23
  handleEnter: () => Promise<void>;
24
+ handleExit: () => Promise<void>;
22
25
  installEventHandlers: () => void;
26
+ uninstallEventHandlers: () => void;
27
+ handleRemoteVideoAvailable: (event: any) => Promise<void>;
28
+ handleRemoteAudioAvailable: (event: any) => void;
29
+ handleRemoteUserEnter: () => void;
30
+ handleRemoteUserExit: (event: any) => void;
31
+ startTimer: () => void;
32
+ resetTimer: () => void;
33
+ formatSeconds: (seconds: number) => string;
34
+ toggleAudio: () => Promise<void>;
23
35
  NButton: any;
24
36
  NAvatar: any;
25
37
  NIcon: any;
26
- Mic: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
27
38
  Call: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
28
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:show"[], "update:show", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
29
- show: {
30
- type: BooleanConstructor;
31
- default: boolean;
32
- };
33
- }>> & {
34
- "onUpdate:show"?: ((...args: any[]) => any) | undefined;
35
- }, {
36
- show: boolean;
37
- }>;
39
+ MicOffCircle: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
40
+ Mic: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
41
+ MESSAGE_TYPE: typeof MESSAGE_TYPE;
42
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
38
43
  export default _default;
@@ -0,0 +1 @@
1
+ import e from"./Video.vue2.js";import r from"../../../../_virtual/_plugin-vue_export-helper.js";var o=r(e,[["__file","Video.vue"]]);export{o as default};
@@ -0,0 +1 @@
1
+ import{defineComponent as e,ref as o,computed as s,watch as n,withDirectives as a,openBlock as t,createElementBlock as l,createElementVNode as r,vShow as i,createVNode as c,unref as u,toDisplayString as v,Fragment as d,normalizeClass as m,withCtx as f}from"vue";import{NAvatar as p,NButton as E,NIcon as I}from"naive-ui";import{Mic as A,MicOffCircle as V,Call as _}from"@vicons/ionicons5";import{useState as T}from"../hooks/useState.js";import{startOfDay as y,format as R}from"date-fns";import"lodash-es";import{MESSAGE_TYPE as O}from"../constants/index.js";import"../utils/emoji.js";import S from"trtc-sdk-v5";const w={class:"video-wrapper"},k={class:"user"},D={class:"name"},L={class:"tip"},U={class:"opt-btn"},g={class:"btn"},h=r("span",null,"静音",-1),M=r("span",null,"拒接",-1),N={class:"btn"},b=r("span",null,"挂断",-1),x=r("span",null,"接听",-1);var z=e({__name:"Video",setup(e){const z={timer:null,seconds:0},{state:K}=T(),j=o(),B=o(),H=o(),C=o(!1),X=o(!0),q=s((()=>K.currentAVMsg.messageType)),F=s((()=>K.currentAVMsg.callMode)),G=s((()=>"call"===F.value?{sessionKey:K.currentSessionItem.sessionKey,avatar:K.currentSessionItem.avatar,name:K.currentSessionItem.name,userId:K.currentSessionItem.receiver}:{sessionKey:K.updateSessionItem.sessionKey,avatar:K.updateSessionItem.avatar,name:K.updateSessionItem.name,userId:K.updateSessionItem.receiver})),J=S.create();async function P(){const e=await S.isSupported();if(!e.result||!e.detail.isH264EncodeSupported||!e.detail.isH264DecodeSupported)return console.log("checkResult :>> ",e),void(K.showVideo=!1);try{if(await J.enterRoom({strRoomId:G.value.sessionKey,sdkAppId:parseInt(K.userInfo.sdkAppID),userId:K.userInfo.id,userSig:K.userInfo.userSig}),"invite"===F.value&&(C.value=!0,ee()),function(){if(J.on(S.EVENT.REMOTE_USER_ENTER,Z),J.on(S.EVENT.REMOTE_AUDIO_AVAILABLE,Y),J.on(S.EVENT.REMOTE_USER_EXIT,$),q.value===O.AUDIO)return;J.on(S.EVENT.REMOTE_VIDEO_AVAILABLE,W)}(),await J.startLocalAudio(),q.value===O.AUDIO)return;await J.startLocalVideo({view:B.value})}catch(e){console.log("error :>> ",e),K.showVideo=!1}}async function Q(){try{if(K.showVideo=!1,function(){if(J.off(S.EVENT.REMOTE_USER_ENTER,Z),J.off(S.EVENT.REMOTE_AUDIO_AVAILABLE,Y),J.off(S.EVENT.REMOTE_USER_EXIT,$),q.value===O.AUDIO)return;J.off(S.EVENT.REMOTE_VIDEO_AVAILABLE,W)}(),await J.exitRoom(),await J.stopLocalAudio(),q.value===O.AUDIO)return;await J.stopLocalVideo()}catch(e){console.log("error :>> ",e)}}async function W(e){const{userId:o,streamType:s}=e;try{await J.startRemoteVideo({userId:o,streamType:s,view:j.value})}catch(e){console.log("error :>> ",e)}}function Y(e){C.value=!0}function Z(){ee()}function $(e){console.log("event :>> 对方已挂断",e),Q()}function ee(){oe(),z.timer=setInterval((()=>{console.log("time.seconds :>> ",z.seconds),z.seconds++,q.value===O.AUDIO&&(H.value=function(e){const o=y(new Date);return o.setSeconds(e),R(o,"HH:mm:ss")}(z.seconds))}),1e3)}function oe(){H.value="00:00:00",z.timer&&clearInterval(z.timer),z.timer=null,z.seconds=0}async function se(){await J.updateLocalAudio({mute:!X.value}),X.value=!X.value}return n((()=>K.showVideo),(e=>{e?"call"===F.value?(P(),H.value="正在呼叫..."):q.value===O.AUDIO?H.value="邀请你语音问诊...":H.value="邀请你视频问诊...":(C.value=!1,oe())})),(e,o)=>a((t(),l("div",w,[a(r("div",{class:"video-box",ref_key:"videoRef",ref:j},null,512),[[i,C.value]]),a(r("div",{class:"video-box--self",ref_key:"selfVideoRef",ref:B},null,512),[[i,C.value]]),a(r("div",k,[c(u(p),{size:58,round:"",src:u(G).avatar},null,8,["src"]),r("span",D,v(u(G).name),1),r("span",L,v(H.value),1)],512),[[i,u(q)===u(O).AUDIO||!C.value]]),r("div",U,[r("div",g,["call"===u(F)&&!C.value||C.value?(t(),l(d,{key:0},[c(u(E),{circle:"",onClick:se,class:m({bordered:X.value})},{icon:f((()=>[c(u(I),{size:"30",color:X.value?"#fff":"#626262",component:X.value?u(A):u(V)},null,8,["color","component"])])),_:1},8,["class"]),h],64)):(t(),l(d,{key:1},[c(u(E),{circle:"",color:"#f17568",class:"btn--rotate"},{icon:f((()=>[c(u(I),{size:"30",component:u(_)},null,8,["component"])])),_:1}),M],64))]),r("div",N,["call"===u(F)&&!C.value||C.value?(t(),l(d,{key:0},[c(u(E),{circle:"",color:"#f17568",class:"btn--rotate",onClick:Q},{icon:f((()=>[c(u(I),{size:"30",component:u(_)},null,8,["component"])])),_:1}),b],64)):(t(),l(d,{key:1},[c(u(E),{circle:"",color:"#2ac98b",onClick:P},{icon:f((()=>[c(u(I),{size:"30",component:u(_)},null,8,["component"])])),_:1}),x],64))])])],512)),[[i,u(K).showVideo]])}});export{z as default};
@@ -1 +1 @@
1
- import{computed as s}from"vue";import{simplifyMessage as e,isAudioOrVideo as t}from"../utils/index.js";import{uniqBy as n}from"lodash-es";function i(i){function o(s){Object.assign(i.currentSessionItem,s,{lastMessageContent:s.lastMessage?e(s.lastMessage):i.currentSessionItem.lastMessageContent||""}),i.isChangeSession=!0,i.id!==i.currentSessionItem.id&&(i.msgList=[],i.id=i.currentSessionItem.id)}return{openSession:async function(s){o(s)},closeSession:function(){if(!i.id)return null;const{currentSessionItem:s}=i;return i.currentSessionItem={},i.msgList=[],i.id="",s},getCurrentSession:function(){return i.id?i.currentSessionItem:null},setCurrentSessionItem:o,setUpdateSessionItem:function(s){Object.assign(i.updateSessionItem,s,{lastMessageContent:s.lastMessage?e(s.lastMessage):""}),t(s.lastMessage)||(i.isUpdateSession=!0)},unreadTotal:s((()=>i.sessionList.reduce(((s,e)=>s+ +e.unreadNum),0))),setSessionList:function(s){i.sessionList=n(s.map((s=>{const{lastMessage:t}=s;return{...s,lastMessageContent:Reflect.has(s,"lastMessageContent")?s.lastMessageContent:t?e(t):""}})),"id")}}}export{i as useSession};
1
+ import{computed as s}from"vue";import{simplifyMessage as e,isAudioOrVideoMessage as t}from"../utils/index.js";import{uniqBy as n}from"lodash-es";function i(i){function o(s){Object.assign(i.currentSessionItem,s,{lastMessageContent:s.lastMessage?e(s.lastMessage):i.currentSessionItem.lastMessageContent||""}),i.isChangeSession=!0,i.id!==i.currentSessionItem.id&&(i.msgList=[],i.id=i.currentSessionItem.id)}return{openSession:async function(s){o(s)},closeSession:function(){if(!i.id)return null;const{currentSessionItem:s}=i;return i.currentSessionItem={},i.msgList=[],i.id="",s},getCurrentSession:function(){return i.id?i.currentSessionItem:null},setCurrentSessionItem:o,setUpdateSessionItem:function(s){Object.assign(i.updateSessionItem,s,{lastMessageContent:s.lastMessage?e(s.lastMessage):""}),t(s.lastMessage)||(i.isUpdateSession=!0)},unreadTotal:s((()=>i.sessionList.reduce(((s,e)=>s+ +e.unreadNum),0))),setSessionList:function(s){i.sessionList=n(s.map((s=>{const{lastMessage:t}=s;return{...s,lastMessageContent:Reflect.has(s,"lastMessageContent")?s.lastMessageContent:t?e(t):""}})),"id")}}}export{i as useSession};
@@ -14,6 +14,8 @@ export type IState = {
14
14
  updateSessionItem: AnyObject;
15
15
  isUpdateSession: boolean;
16
16
  currentReferenceMsg: null | AnyObject;
17
+ showVideo: boolean;
18
+ currentAVMsg: AnyObject;
17
19
  };
18
20
  export declare const InjectionIChatState: InjectionKey<IState>;
19
21
  export declare const InjectionIChatStompClient: InjectionKey<Ref<ChatSock>>;
@@ -10,4 +10,4 @@ export declare function simplifyMessage(lastMessage: AnyObject): any;
10
10
  export declare function downloadFile(url: string, filename: string): void;
11
11
  export declare function getFileSize(url: string): Promise<unknown>;
12
12
  export declare function genTestUserSig(sdkAppId: number, userId: string, sdkSecretKey: string): any;
13
- export declare function isAudioOrVideo(message: AnyObject): boolean;
13
+ export declare function isAudioOrVideoMessage(message: AnyObject): boolean;
@@ -1 +1 @@
1
- import{isToday as e,format as t,isYesterday as n}from"date-fns";import{cloneDeep as r}from"lodash-es";import{MESSAGE_TYPE as o}from"../constants/index.js";import{emojis as s}from"./emoji.js";function a(r){const o=new Date(r);let s,a;if(e(o))s=a=t(o,"HH:mm");else{s=n(o)?"昨天":t(o,"MM-dd");const e=o.getFullYear(),r=(new Date).getFullYear();a=t(o,e<r?"yyyy年M月d日 HH:mm":"M月d日 HH:mm")}return{siderMsgTime:s,msgTime:a,recordTime:function(r){const o=new Date(r),s=Date.now()-o.getTime();if(s<6e4)return"刚刚";if(s<36e5)return Math.ceil(s/1e3/60)+"分钟前";if(e(o))return"今天 "+t(o,"HH:mm");if(n(o))return"昨天 "+t(o,"HH:mm");{const e=o.getFullYear(),n=(new Date).getFullYear();return t(o,e<n?"yyyy年M月d日 HH:mm":"M月d日 HH:mm")}}(r)}}function i(e){return r(e).sort(((e,t)=>e.topping&&!t.topping?-1:!e.topping&&t.topping?1:new Date(t.sortTime).getTime()-new Date(e.sortTime).getTime()))}function c(e){if(!e)return"";const t=e=>new RegExp("\\n*\\["+(e||"")+"(code|pre|div|span|p|table|thead|th|tbody|tr|td|ul|li|ol|li|dl|dt|dd|h2|h3|h4|h5)([\\s\\S]*?)]\\n*","g");return e=e.toString().replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;").replace(/@(\S+)(\s+?|$)/g,'@<a href="javascript:;">$1</a>$2').replace(t(),"<$1 $2>").replace(t("/"),"</$1>").replace(/\n/g,"<br>")}function l(e){var t;const{chatMessageType:n,msg:r,messageTemplate:a}=e;switch(n){case o.TEXT:return c(r);case o.IMAGE:return"[图片]";case o.FILE:return"[文件]";case o.EMOJI:return`<img alt=${r} src=${s.findEmoji(r)}>`;case o.TEMPLATE:return null==(t=null==a?void 0:a.setting)?void 0:t.title;default:return"其他消息"}}function u(e,t){const n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="blob",n.onload=function(r){if(200===n.status){const r=window.URL.createObjectURL(n.response),o=document.createElement("a");o.href=r,o.download=t,o.dispatchEvent(new MouseEvent("click")),window.URL.revokeObjectURL(e)}},n.send()}function d(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("HEAD",e,!0),r.onreadystatechange=()=>{var e;if(4===r.readyState&&200===r.status){let n=null!=(e=r.getResponseHeader("Content-Length"))?e:0;const o=+n;o>1048576?n=(o/1048576).toFixed(2)+"M":o>1024?n=(o/1024).toFixed(2)+"K":n+="B",t(n)}},r.send()}))}function m(e,t,n){const r=e,o=n;null!=r&&""!==o||alert("请先配置好您的账号信息: SDKAPPID 及 SDKSECRETKEY \r\n\r\nPlease configure your SDKAPPID/SDKSECRETKEY in js/debug/GenerateTestUserSig.js");return new window.LibGenerateTestUserSig(r,o,604800).genTestUserSig(t)}function p(e){return[o.AUDIO,o.VIDEO].includes(e.chatMessageType)}export{u as downloadFile,a as formatTime,m as genTestUserSig,d as getFileSize,p as isAudioOrVideo,i as listSort,l as simplifyMessage,c as transformMessage};
1
+ import{isToday as e,format as t,isYesterday as n}from"date-fns";import{cloneDeep as r}from"lodash-es";import{MESSAGE_TYPE as s}from"../constants/index.js";import{emojis as o}from"./emoji.js";function a(r){const s=new Date(r);let o,a;if(e(s))o=a=t(s,"HH:mm");else{o=n(s)?"昨天":t(s,"MM-dd");const e=s.getFullYear(),r=(new Date).getFullYear();a=t(s,e<r?"yyyy年M月d日 HH:mm":"M月d日 HH:mm")}return{siderMsgTime:o,msgTime:a,recordTime:function(r){const s=new Date(r),o=Date.now()-s.getTime();if(o<6e4)return"刚刚";if(o<36e5)return Math.ceil(o/1e3/60)+"分钟前";if(e(s))return"今天 "+t(s,"HH:mm");if(n(s))return"昨天 "+t(s,"HH:mm");{const e=s.getFullYear(),n=(new Date).getFullYear();return t(s,e<n?"yyyy年M月d日 HH:mm":"M月d日 HH:mm")}}(r)}}function i(e){return r(e).sort(((e,t)=>e.topping&&!t.topping?-1:!e.topping&&t.topping?1:new Date(t.sortTime).getTime()-new Date(e.sortTime).getTime()))}function c(e){if(!e)return"";const t=e=>new RegExp("\\n*\\["+(e||"")+"(code|pre|div|span|p|table|thead|th|tbody|tr|td|ul|li|ol|li|dl|dt|dd|h2|h3|h4|h5)([\\s\\S]*?)]\\n*","g");return e=e.toString().replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&#39;").replace(/"/g,"&quot;").replace(/@(\S+)(\s+?|$)/g,'@<a href="javascript:;">$1</a>$2').replace(t(),"<$1 $2>").replace(t("/"),"</$1>").replace(/\n/g,"<br>")}function u(e){var t;const{chatMessageType:n,msg:r,messageTemplate:a}=e;switch(n){case s.TEXT:return c(r);case s.IMAGE:return"[图片]";case s.FILE:return"[文件]";case s.EMOJI:return`<img alt=${r} src=${o.findEmoji(r)}>`;case s.TEMPLATE:return null==(t=null==a?void 0:a.setting)?void 0:t.title;case s.VIDEO:return"[视频通话]";case s.AUDIO:return"[语音通话]";default:return"其他消息"}}function l(e,t){const n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="blob",n.onload=function(r){if(200===n.status){const r=window.URL.createObjectURL(n.response),s=document.createElement("a");s.href=r,s.download=t,s.dispatchEvent(new MouseEvent("click")),window.URL.revokeObjectURL(e)}},n.send()}function d(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("HEAD",e,!0),r.onreadystatechange=()=>{var e;if(4===r.readyState&&200===r.status){let n=null!=(e=r.getResponseHeader("Content-Length"))?e:0;const s=+n;s>1048576?n=(s/1048576).toFixed(2)+"M":s>1024?n=(s/1024).toFixed(2)+"K":n+="B",t(n)}},r.send()}))}function m(e,t,n){const r=e,s=n;null!=r&&""!==s||alert("请先配置好您的账号信息: SDKAPPID 及 SDKSECRETKEY \r\n\r\nPlease configure your SDKAPPID/SDKSECRETKEY in js/debug/GenerateTestUserSig.js");return new window.LibGenerateTestUserSig(r,s,604800).genTestUserSig(t)}function p(e){return[s.AUDIO,s.VIDEO].includes(e.chatMessageType)}export{l as downloadFile,a as formatTime,m as genTestUserSig,d as getFileSize,p as isAudioOrVideoMessage,i as listSort,u as simplifyMessage,c as transformMessage};