cnhis-design-vue 3.2.8-beta.1 → 3.2.8-beta.2

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 (25) hide show
  1. package/es/components/classification/src/components/table-modal/index.vue.d.ts +3 -0
  2. package/es/components/field-set/src/FieldColor.vue.d.ts +2 -2
  3. package/es/components/field-set/src/FieldFilter.vue.d.ts +2 -2
  4. package/es/components/field-set/src/FieldSet.vue.d.ts +3 -3
  5. package/es/components/field-set/src/components/table-row.vue.d.ts +2 -2
  6. package/es/components/iho-chat/index.d.ts +2 -1
  7. package/es/components/iho-chat/src/Index.vue.d.ts +2 -1
  8. package/es/components/iho-chat/src/components/ChatFooter.vue.d.ts +2 -1
  9. package/es/components/iho-chat/src/components/ChatFooter.vue2.js +1 -1
  10. package/es/components/iho-chat/src/components/ChatHeader.vue2.js +1 -1
  11. package/es/components/iho-chat/src/components/ChatMain.vue2.js +1 -1
  12. package/es/components/iho-chat/src/components/ChatRecord.vue2.js +1 -1
  13. package/es/components/iho-chat/src/components/ChatSearch.vue2.js +1 -1
  14. package/es/components/iho-chat/src/components/ChatSet.vue2.js +1 -1
  15. package/es/components/iho-chat/src/components/MultipleVideo.vue2.js +1 -1
  16. package/es/components/iho-chat/src/components/PersonProfile.vue2.js +1 -1
  17. package/es/components/iho-chat/src/components/Video.vue2.js +1 -1
  18. package/es/components/iho-chat/src/hooks/useSearchUserList.js +1 -1
  19. package/es/components/iho-chat/src/hooks/useState.js +1 -1
  20. package/es/components/iho-chat/src/utils/index.d.ts +2 -1
  21. package/es/components/iho-chat/src/utils/index.js +1 -1
  22. package/es/components/scale-view/src/ScaleView.vue2.js +1 -1
  23. package/es/env.d.ts +25 -25
  24. package/es/shared/package.json.js +1 -1
  25. package/package.json +2 -2
@@ -175,6 +175,9 @@ declare const _default: import("vue").DefineComponent<{
175
175
  modelValue: unknown[];
176
176
  componentData: Record<string, any>;
177
177
  } & {
178
+ /**
179
+ * 改变弹窗大小
180
+ */
178
181
  itemKey?: string | Function | undefined;
179
182
  }>, {
180
183
  move: Function;
@@ -477,11 +477,11 @@ declare const _default: import("vue").DefineComponent<{
477
477
  }>;
478
478
  developMode: boolean;
479
479
  draggable: boolean;
480
- fieldDescribeMode: "column" | "tooltip";
481
- isFieldSet: boolean;
482
480
  idx: number;
483
481
  isHighlight: boolean;
484
482
  isHighlightRow: boolean;
483
+ isFieldSet: boolean;
484
+ fieldDescribeMode: "column" | "tooltip";
485
485
  }>;
486
486
  EditDialog: import("vue").DefineComponent<{
487
487
  visible: {
@@ -499,11 +499,11 @@ declare const _default: import("vue").DefineComponent<{
499
499
  }>;
500
500
  developMode: boolean;
501
501
  draggable: boolean;
502
- fieldDescribeMode: "column" | "tooltip";
503
- isFieldSet: boolean;
504
502
  idx: number;
505
503
  isHighlight: boolean;
506
504
  isHighlightRow: boolean;
505
+ isFieldSet: boolean;
506
+ fieldDescribeMode: "column" | "tooltip";
507
507
  }>;
508
508
  setStyle: typeof setStyle;
509
509
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("close" | "save" | "reset")[], "close" | "save" | "reset", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
@@ -630,11 +630,11 @@ declare const _default: import("vue").DefineComponent<{
630
630
  }>;
631
631
  developMode: boolean;
632
632
  draggable: boolean;
633
- fieldDescribeMode: "column" | "tooltip";
634
- isFieldSet: boolean;
635
633
  idx: number;
636
634
  isHighlight: boolean;
637
635
  isHighlightRow: boolean;
636
+ isFieldSet: boolean;
637
+ fieldDescribeMode: "column" | "tooltip";
638
638
  }>;
639
639
  isArray: {
640
640
  (value?: any): value is any[];
@@ -746,10 +746,10 @@ declare const _default: import("vue").DefineComponent<{
746
746
  showSeq: boolean;
747
747
  developMode: boolean;
748
748
  footerFlag: boolean;
749
+ fieldDescribeMode: "column" | "tooltip";
749
750
  customColumns: FieldSetColumnItem[];
750
751
  showSearch: boolean;
751
752
  showSortPriority: boolean;
752
753
  showHeadFilter: boolean;
753
- fieldDescribeMode: "column" | "tooltip";
754
754
  }>;
755
755
  export default _default;
@@ -328,10 +328,10 @@ declare const _default: import("vue").DefineComponent<{
328
328
  }>;
329
329
  developMode: boolean;
330
330
  draggable: boolean;
331
- fieldDescribeMode: "column" | "tooltip";
332
- isFieldSet: boolean;
333
331
  idx: number;
334
332
  isHighlight: boolean;
335
333
  isHighlightRow: boolean;
334
+ isFieldSet: boolean;
335
+ fieldDescribeMode: "column" | "tooltip";
336
336
  }>;
337
337
  export default _default;
@@ -988,8 +988,9 @@ declare const IhoChat: SFCWithInstall<import("vue").DefineComponent<{
988
988
  isWrap: (event: KeyboardEvent) => boolean;
989
989
  handleInput: () => void;
990
990
  selectEmoji: (name: string) => void;
991
+ doUpdateFile: (file: File) => Promise<string>;
991
992
  fileChange: (options: import("./src/types").FileOptions, chatMessageType: import("./src/constants").MESSAGE_TYPE) => Promise<void>;
992
- handleMsgSend: () => void;
993
+ handleMsgSend: () => Promise<void>;
993
994
  doSendMessage: (contentInfo: import("../../shared/types").AnyObject) => Promise<void>;
994
995
  NButton: any;
995
996
  NPopover: any;
@@ -993,8 +993,9 @@ declare const _default: import("vue").DefineComponent<{
993
993
  isWrap: (event: KeyboardEvent) => boolean;
994
994
  handleInput: () => void;
995
995
  selectEmoji: (name: string) => void;
996
+ doUpdateFile: (file: File) => Promise<string>;
996
997
  fileChange: (options: import("./types").FileOptions, chatMessageType: import("./constants").MESSAGE_TYPE) => Promise<void>;
997
- handleMsgSend: () => void;
998
+ handleMsgSend: () => Promise<void>;
998
999
  doSendMessage: (contentInfo: AnyObject) => Promise<void>;
999
1000
  NButton: any;
1000
1001
  NPopover: any;
@@ -23,8 +23,9 @@ declare const _default: import("vue").DefineComponent<{}, {
23
23
  isWrap: (event: KeyboardEvent) => boolean;
24
24
  handleInput: () => void;
25
25
  selectEmoji: (name: string) => void;
26
+ doUpdateFile: (file: File) => Promise<string>;
26
27
  fileChange: (options: FileOptions, chatMessageType: MESSAGE_TYPE) => Promise<void>;
27
- handleMsgSend: () => void;
28
+ handleMsgSend: () => Promise<void>;
28
29
  doSendMessage: (contentInfo: AnyObject) => Promise<void>;
29
30
  NButton: any;
30
31
  NPopover: any;
@@ -1 +1 @@
1
- import{defineComponent as e,ref as t,computed as n,watch as r,withDirectives as o,openBlock as i,createElementBlock as s,normalizeStyle as a,unref as c,createElementVNode as l,toDisplayString as u,createVNode as p,createCommentVNode as g,withCtx as f,Fragment as m,renderList as d,createBlock as h,createTextVNode as y,mergeProps as v,vShow as w}from"vue";import{NIcon as M,NTooltip as _,NPopover as k,NButton as C,NUpload as I,NUploadTrigger as T}from"naive-ui";import b from"./ChatAdd.vue.js";import{useState as E}from"../hooks/useState.js";import{useSession as x}from"../hooks/useSession.js";import{MESSAGE_TYPE as z,AV_STATUS as j}from"../constants/index.js";import"trtc-sdk-v5";import{simplifyMessage as L}from"../utils/index.js";import{emojis as R}from"../utils/emoji.js";import{uploadFileApi as q}from"../api/index.js";import{CloseCircleOutline as O,CallOutline as D,VideocamOutline as A}from"@vicons/ionicons5";import{xor as V,cloneDeep as K}from"lodash-es";import{uuidGenerator as F}from"../../../../shared/utils/index.js";const H={key:0,class:"reference-content-box"},U={class:"reference-content"},G=["innerHTML"],J={class:"tool-box"},N=l("i",{class:"chat--iconfont chat--icon-face"},null,-1),S=l("span",null,"默认表情",-1),X={class:"list-box"},B=["src"],$=l("i",{class:"chat--iconfont chat--icon-good"},null,-1),P=l("i",{class:"chat--iconfont chat--icon-image"},null,-1),Q=l("i",{class:"chat--iconfont chat--icon-folder"},null,-1),W={class:"btn-box"},Y=l("span",{class:"tip"},"Enter 发送, Ctrl + Enter 换行",-1);var Z=e({__name:"ChatFooter",setup(e){const Z=t(),{state:ee,sendMessage:te}=E(),{isGroupChat:ne}=x(ee),re=t(!1),oe=t(""),ie=n((()=>({options:ee.currentGroupUser,defaultValue:[ee.userInfo]}))),se=n((()=>!oe.value.replace(/(&nbsp;|\s|<br>)+/g,"")));function ae(e,t=[]){const n=F(),r=[],o=t.length>0;ee.showVideo||ee.showMultipleVideo||(o?(r.push(...V(t,[ee.userInfo.id])),Object.assign(ee.currentAVMsg,{callMode:"call",checkedIds:r,strRoomId:n,chatMessageType:e}),ee.showMultipleVideo=!0):te({content:{chatMessageType:e,msg:"",avStatus:j.IN_CALL}}))}function ce(e){["Enter"].includes(e.key)&&(e.ctrlKey&&(e.preventDefault(),document.execCommand("InsertLineBreak")),function(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}(e)||(e.preventDefault(),pe()))}function le(){var e;oe.value=(null==(e=Z.value)?void 0:e.innerHTML)||""}async function ue(e,t){const{file:n,name:r}=e.file,o=new FormData;o.append("sender",ee.userInfo.id),o.append("file",n);const i=await q(o);if(!i)return console.log("上传失败");ge({chatMessageType:t,msg:t===z.FILE?r:i,url:i})}function pe(){const{innerHTML:e="",innerText:t=""}=Z.value||{};if(se.value)return console.log("请输入内容");const n=e.split(t).find((e=>!!e));let r=z.TEXT,o="";if(n){if(t.replace(/\n$/,"")||(e.match(/<img[^>]*>/gi)||[]).length>1)r=z.BLEND,o=e;else if(e.includes(z.EMOJI)){r=z.EMOJI;const t=e.match(/data-msg\s*=\s*"([^"]*)"/);t&&(o=t[1])}else{r=z.IMAGE;const t=e.match(/src\s*=\s*"([^"]*)"/);t&&(o=t[1])}}else o=t.trim();o&&ge({msg:o,chatMessageType:r,origin:"btn"})}async function ge(e){const{chatMessageType:t=z.TEXT,msg:n,url:r,origin:o=""}=e,i={msg:n,chatMessageType:t};t===z.FILE&&(i.fileUrl=r),"btn"===o&&(Z.value.innerHTML="",oe.value=""),ee.currentReferenceMsg&&(t===z.TEXT&&(i.referenceContent=K(ee.currentReferenceMsg)),ee.currentReferenceMsg=null),te({content:i})}return r((()=>ee.currentReferenceMsg),(e=>{var t;e&&(null==(t=Z.value)||t.focus())})),(e,t)=>o((i(),s("section",{class:"chat-footer",style:a({cursor:c(ee).id?"default":"not-allowed"})},[c(ee).currentReferenceMsg?(i(),s("div",H,[l("div",U,[l("span",null,u(c(ee).currentReferenceMsg.senderName)+":",1),l("pre",{innerHTML:c(L)(c(ee).currentReferenceMsg.content)},null,8,G)]),p(c(M),{component:c(O),onClick:t[0]||(t[0]=()=>c(ee).currentReferenceMsg=null)},null,8,["component"])])):g("v-if",!0),l("div",J,[p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(k),{"content-class":"emoji-content",class:"emoji-wrapper",show:re.value,"onUpdate:show":t[1]||(t[1]=e=>re.value=e),placement:"top",trigger:"click","show-arrow":!1,"display-directive":"show",delay:0},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny"},{icon:f((()=>[N])),_:1})])),default:f((()=>[S,l("div",X,[(i(!0),s(m,null,d(c(R).default,(([e,t])=>(i(),h(c(_),{key:e,"show-arrow":!1,trigger:"hover"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny",onClick:()=>function(e){re.value=!1,ge({chatMessageType:z.EMOJI,msg:e})}(e)},{icon:f((()=>[l("img",{src:t},null,8,B)])),_:2},1032,["onClick"])])),default:f((()=>[y(" "+u(e),1)])),_:2},1024)))),128))])])),_:1},8,["show"])])),default:f((()=>[y(" 表情 ")])),_:1}),p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny",onClick:t[2]||(t[2]=()=>ge({chatMessageType:c(z).EMOJI,msg:0}))},{icon:f((()=>[$])),_:1})])),default:f((()=>[y(" 点赞 ")])),_:1}),p(c(I),{abstract:"",multiple:"",accept:"image/*",onChange:t[3]||(t[3]=e=>ue(e,c(z).IMAGE))},{default:f((()=>[p(c(T),{abstract:""},{default:f((({handleClick:e})=>[p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny",onClick:e},{icon:f((()=>[P])),_:2},1032,["onClick"])])),default:f((()=>[y(" 上传图片 ")])),_:2},1024)])),_:1})])),_:1}),p(c(I),{abstract:"",multiple:"",accept:"video/*,.pdf,.doc.docx,,.zip,.xlsx,.txt",onChange:t[4]||(t[4]=e=>ue(e,c(z).FILE))},{default:f((()=>[p(c(T),{abstract:""},{default:f((({handleClick:e})=>[p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny",onClick:e},{icon:f((()=>[Q])),_:2},1032,["onClick"])])),default:f((()=>[y(" 上传文件 ")])),_:2},1024)])),_:1})])),_:1}),c(ne)?(i(),s(m,{key:0},[p(b,v(c(ie),{onComfirm:t[5]||(t[5]=e=>ae(c(z).AUDIO,e))}),{trigger:f((()=>[p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny"},{icon:f((()=>[p(c(M),{size:"18",component:c(D)},null,8,["component"])])),_:1})])),default:f((()=>[y(" 语音通话 ")])),_:1})])),_:1},16),p(b,v(c(ie),{onComfirm:t[6]||(t[6]=e=>ae(c(z).VIDEO,e))}),{trigger:f((()=>[p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny"},{icon:f((()=>[p(c(M),{size:"20",component:c(A)},null,8,["component"])])),_:1})])),default:f((()=>[y(" 视频会议 ")])),_:1})])),_:1},16)],64)):(i(),s(m,{key:1},[p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny",onClick:t[7]||(t[7]=()=>ae(c(z).AUDIO))},{icon:f((()=>[p(c(M),{size:"18",component:c(D)},null,8,["component"])])),_:1})])),default:f((()=>[y(" 语音通话 ")])),_:1}),p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny",onClick:t[8]||(t[8]=()=>ae(c(z).VIDEO))},{icon:f((()=>[p(c(M),{size:"20",component:c(A)},null,8,["component"])])),_:1})])),default:f((()=>[y(" 视频通话 ")])),_:1})],64))]),o(l("div",{ref_key:"inputRef",ref:Z,class:"input-box",contenteditable:"",onKeydown:ce,onInput:le},null,544),[[w,c(ee).id]]),l("div",W,[Y,p(c(C),{type:"primary",round:"",disabled:c(se),onClick:pe},{default:f((()=>[y("发送")])),_:1},8,["disabled"])])],4)),[[w,c(ee).id]])}});export{Z as default};
1
+ import{defineComponent as e,ref as t,computed as n,watch as o,withDirectives as r,openBlock as i,createElementBlock as s,normalizeStyle as a,unref as c,createElementVNode as l,toDisplayString as u,createVNode as g,createCommentVNode as f,withCtx as p,Fragment as d,renderList as m,createBlock as h,createTextVNode as y,mergeProps as v,vShow as w}from"vue";import{NIcon as M,NTooltip as _,NPopover as k,NButton as C,NUpload as I,NUploadTrigger as T}from"naive-ui";import E from"./ChatAdd.vue.js";import{useState as b}from"../hooks/useState.js";import{useSession as x}from"../hooks/useSession.js";import{MESSAGE_TYPE as z,AV_STATUS as j}from"../constants/index.js";import"trtc-sdk-v5";import{simplifyMessage as L,base64ToFile as O}from"../utils/index.js";import{emojis as R}from"../utils/emoji.js";import{uploadFileApi as q}from"../api/index.js";import{CloseCircleOutline as D,CallOutline as A,VideocamOutline as V}from"@vicons/ionicons5";import{xor as K,trim as F,cloneDeep as H}from"lodash-es";import{uuidGenerator as J}from"../../../../shared/utils/index.js";const U={key:0,class:"reference-content-box"},G={class:"reference-content"},N=["innerHTML"],S={class:"tool-box"},X=l("i",{class:"chat--iconfont chat--icon-face"},null,-1),B=l("span",null,"默认表情",-1),$={class:"list-box"},P=["src"],Q=l("i",{class:"chat--iconfont chat--icon-good"},null,-1),W=l("i",{class:"chat--iconfont chat--icon-image"},null,-1),Y=l("i",{class:"chat--iconfont chat--icon-folder"},null,-1),Z={class:"btn-box"},ee=l("span",{class:"tip"},"Enter 发送, Ctrl + Enter 换行",-1);var te=e({__name:"ChatFooter",setup(e){const te=t(),{state:ne,sendMessage:oe}=b(),{isGroupChat:re}=x(ne),ie=t(!1),se=t(""),ae=n((()=>({options:ne.currentGroupUser,defaultValue:[ne.userInfo]}))),ce=n((()=>!se.value.replace(/(&nbsp;|\s|<br>)+/g,"")));function le(e,t=[]){const n=J(),o=[],r=t.length>0;ne.showVideo||ne.showMultipleVideo||(r?(o.push(...K(t,[ne.userInfo.id])),Object.assign(ne.currentAVMsg,{callMode:"call",checkedIds:o,strRoomId:n,chatMessageType:e}),ne.showMultipleVideo=!0):oe({content:{chatMessageType:e,msg:"",avStatus:j.IN_CALL}}))}function ue(e){["Enter"].includes(e.key)&&(e.ctrlKey&&(e.preventDefault(),document.execCommand("InsertLineBreak")),function(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}(e)||(e.preventDefault(),de()))}function ge(){var e;se.value=(null==(e=te.value)?void 0:e.innerHTML)||""}async function fe(e){const t=new FormData;return t.append("sender",ne.userInfo.id),t.append("file",e),await q(t)}async function pe(e,t){const{file:n,name:o}=e.file,r=await fe(n);if(!r)return console.log("上传失败");me({chatMessageType:t,msg:t===z.FILE?o:r,url:r})}async function de(){const{innerHTML:e="",innerText:t="",outerText:n=""}=te.value||{};if(ce.value)return console.log("请输入内容");let o=z.TEXT,r="";if(e){const n=e.match(/<img[^>]*>/gi),i=(n||[]).length;if(t&&0===i)r=t;else if(t||1!==i){if(o=z.BLEND,r=e,null==n?void 0:n.length)for(let e=0;e<i;e++)if(n[e].includes(`data-type="${z.EMOJI}"`)){const t=n[e].match(/data-msg="(.*?)"/);t&&t.length>1&&(r=r.replace(n[e],`[${t[1]}]`))}else{const t=n[e].match(/src\s*=\s*"([^"]*)"/);if(t&&t.length>1){const e=O(t[1]);if(e){const n=await fe(e);r=r.replace(t[1],n||"")}}}}else if(e.includes(z.EMOJI)){o=z.EMOJI;const t=e.match(/data-msg\s*=\s*"([^"]*)"/);t&&(r=t[1])}else{o=z.IMAGE;const t=e.match(/src\s*=\s*"([^"]*)"/);if(t){const e=O(t[1]);if(e){const t=await fe(e);t&&(r=t)}}}}else r=F(t);r&&me({msg:r,chatMessageType:o,origin:"btn"})}async function me(e){const{chatMessageType:t=z.TEXT,msg:n,url:o,origin:r=""}=e,i={msg:n,chatMessageType:t};t===z.FILE&&(i.fileUrl=o),"btn"===r&&(te.value.innerHTML="",se.value=""),ne.currentReferenceMsg&&(t===z.TEXT&&(i.referenceContent=H(ne.currentReferenceMsg)),ne.currentReferenceMsg=null),oe({content:i})}return o((()=>ne.currentReferenceMsg),(e=>{var t;e&&(null==(t=te.value)||t.focus())})),(e,t)=>r((i(),s("section",{class:"chat-footer",style:a({cursor:c(ne).id?"default":"not-allowed"})},[c(ne).currentReferenceMsg?(i(),s("div",U,[l("div",G,[l("span",null,u(c(ne).currentReferenceMsg.senderName)+":",1),l("pre",{innerHTML:c(L)(c(ne).currentReferenceMsg.content)},null,8,N)]),g(c(M),{component:c(D),onClick:t[0]||(t[0]=()=>c(ne).currentReferenceMsg=null)},null,8,["component"])])):f("v-if",!0),l("div",S,[g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(k),{"content-class":"emoji-content",class:"emoji-wrapper",show:ie.value,"onUpdate:show":t[1]||(t[1]=e=>ie.value=e),placement:"top",trigger:"click","show-arrow":!1,"display-directive":"show",delay:0},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny"},{icon:p((()=>[X])),_:1})])),default:p((()=>[B,l("div",$,[(i(!0),s(d,null,m(c(R).default,(([e,t])=>(i(),h(c(_),{key:e,"show-arrow":!1,trigger:"hover"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny",onClick:()=>function(e){ie.value=!1,me({chatMessageType:z.EMOJI,msg:e})}(e)},{icon:p((()=>[l("img",{src:t},null,8,P)])),_:2},1032,["onClick"])])),default:p((()=>[y(" "+u(e),1)])),_:2},1024)))),128))])])),_:1},8,["show"])])),default:p((()=>[y(" 表情 ")])),_:1}),g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny",onClick:t[2]||(t[2]=()=>me({chatMessageType:c(z).EMOJI,msg:0}))},{icon:p((()=>[Q])),_:1})])),default:p((()=>[y(" 点赞 ")])),_:1}),g(c(I),{abstract:"",multiple:"",accept:"image/*",onChange:t[3]||(t[3]=e=>pe(e,c(z).IMAGE))},{default:p((()=>[g(c(T),{abstract:""},{default:p((({handleClick:e})=>[g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny",onClick:e},{icon:p((()=>[W])),_:2},1032,["onClick"])])),default:p((()=>[y(" 上传图片 ")])),_:2},1024)])),_:1})])),_:1}),g(c(I),{abstract:"",multiple:"",accept:"video/*,.pdf,.doc.docx,,.zip,.xlsx,.txt",onChange:t[4]||(t[4]=e=>pe(e,c(z).FILE))},{default:p((()=>[g(c(T),{abstract:""},{default:p((({handleClick:e})=>[g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny",onClick:e},{icon:p((()=>[Y])),_:2},1032,["onClick"])])),default:p((()=>[y(" 上传文件 ")])),_:2},1024)])),_:1})])),_:1}),c(re)?(i(),s(d,{key:0},[g(E,v(c(ae),{onComfirm:t[5]||(t[5]=e=>le(c(z).AUDIO,e))}),{trigger:p((()=>[g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny"},{icon:p((()=>[g(c(M),{size:"18",component:c(A)},null,8,["component"])])),_:1})])),default:p((()=>[y(" 语音通话 ")])),_:1})])),_:1},16),g(E,v(c(ae),{onComfirm:t[6]||(t[6]=e=>le(c(z).VIDEO,e))}),{trigger:p((()=>[g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny"},{icon:p((()=>[g(c(M),{size:"20",component:c(V)},null,8,["component"])])),_:1})])),default:p((()=>[y(" 视频会议 ")])),_:1})])),_:1},16)],64)):(i(),s(d,{key:1},[g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny",onClick:t[7]||(t[7]=()=>le(c(z).AUDIO))},{icon:p((()=>[g(c(M),{size:"18",component:c(A)},null,8,["component"])])),_:1})])),default:p((()=>[y(" 语音通话 ")])),_:1}),g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny",onClick:t[8]||(t[8]=()=>le(c(z).VIDEO))},{icon:p((()=>[g(c(M),{size:"20",component:c(V)},null,8,["component"])])),_:1})])),default:p((()=>[y(" 视频通话 ")])),_:1})],64))]),r(l("div",{ref_key:"inputRef",ref:te,class:"input-box",contenteditable:"",onKeydown:ue,onInput:ge},null,544),[[w,c(ne).id]]),l("div",Z,[ee,g(c(C),{type:"primary",round:"",disabled:c(ce),onClick:de},{default:p((()=>[y("发送")])),_:1},8,["disabled"])])],4)),[[w,c(ne).id]])}});export{te as default};
@@ -1 +1 @@
1
- import{defineComponent as e,ref as t,computed as o,openBlock as r,createElementBlock as i,Fragment as a,unref as s,createElementVNode as n,createVNode as l,withCtx as c,toDisplayString as u,createTextVNode as m,normalizeProps as h,guardReactiveProps as d,createCommentVNode as v}from"vue";import{NAvatar as p,NTooltip as f,NButton as g,NIcon as w}from"naive-ui";import{useState as _}from"../hooks/useState.js";import{useSession as b}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import"lodash-es";import"../utils/emoji.js";import y from"./PersonProfile.vue.js";import j from"./ChatSet.vue.js";import C from"./ChatFile.vue.js";import k from"./ChatRecord.vue.js";import z from"./ChatAdd.vue.js";import{PersonAddOutline as S}from"@vicons/ionicons5";const q={key:0,class:"chat-header box-shadow"},U={class:"chat-header__left"},I={class:"name"},G={class:"chat-header__right"},x=n("i",{class:"chat--iconfont chat--icon-image"},null,-1),P=n("i",{class:"chat--iconfont chat--icon-folder"},null,-1),A=n("i",{class:"chat--iconfont chat--icon-list-search"},null,-1),F=n("i",{class:"chat--iconfont chat--icon-set"},null,-1);var H=e({__name:"ChatHeader",setup(e){const{state:H}=_(),{isGroupChat:R}=b(H),V=t(!1),B=t(!1),D=t("image"),E=t(!1),J=o((()=>{const e=H.currentGroupUser.map((e=>e.id));return R.value?{mode:"join",disabledIds:e}:{mode:"create",defaultValue:H.currentGroupUser}}));function K(e){D.value=e,B.value=!0}return(e,t)=>(r(),i(a,null,[s(H).id?(r(),i("section",q,[n("div",U,[l(y,{"user-id":s(H).currentSessionItem.receiver,disabled:s(R),placement:"bottom"},{trigger:c((()=>[l(s(p),{round:"",size:30,src:s(H).currentSessionItem.avatar},null,8,["src"])])),_:1},8,["user-id","disabled"]),n("span",I,u(s(H).currentSessionItem.name),1)]),n("div",G,[l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny",onClick:t[0]||(t[0]=()=>K("image"))},{icon:c((()=>[x])),_:1})])),default:c((()=>[m(" 图片 ")])),_:1}),l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny",onClick:t[1]||(t[1]=()=>K("file"))},{icon:c((()=>[P])),_:1})])),default:c((()=>[m(" 文件 ")])),_:1}),l(z,h(d(s(J))),{trigger:c((()=>[l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny"},{icon:c((()=>[l(s(w),{size:"18",component:s(S)},null,8,["component"])])),_:1})])),default:c((()=>[m(" 添加成员 ")])),_:1})])),_:1},16),l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny",onClick:t[2]||(t[2]=()=>E.value=!0)},{icon:c((()=>[A])),_:1})])),default:c((()=>[m(" 聊天记录 ")])),_:1}),l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny",onClick:t[3]||(t[3]=()=>V.value=!0)},{icon:c((()=>[F])),_:1})])),default:c((()=>[m(" 聊天设置 ")])),_:1})])])):v("v-if",!0),l(j,{show:V.value,"onUpdate:show":t[4]||(t[4]=e=>V.value=e)},null,8,["show"]),l(C,{show:B.value,"onUpdate:show":t[5]||(t[5]=e=>B.value=e),type:D.value,visible:B.value},null,8,["show","type","visible"]),l(k,{show:E.value,"onUpdate:show":t[6]||(t[6]=e=>E.value=e),visible:E.value},null,8,["show","visible"])],64))}});export{H as default};
1
+ import{defineComponent as e,ref as t,computed as o,openBlock as r,createElementBlock as i,Fragment as a,unref as s,createElementVNode as n,createVNode as l,withCtx as c,toDisplayString as u,createTextVNode as m,normalizeProps as h,guardReactiveProps as d,createCommentVNode as v}from"vue";import{NAvatar as p,NTooltip as f,NButton as g,NIcon as w}from"naive-ui";import{useState as _}from"../hooks/useState.js";import{useSession as b}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import"lodash-es";import"../utils/emoji.js";import"../../../../shared/utils/index.js";import y from"./PersonProfile.vue.js";import j from"./ChatSet.vue.js";import C from"./ChatFile.vue.js";import k from"./ChatRecord.vue.js";import z from"./ChatAdd.vue.js";import{PersonAddOutline as S}from"@vicons/ionicons5";const q={key:0,class:"chat-header box-shadow"},U={class:"chat-header__left"},I={class:"name"},x={class:"chat-header__right"},G=n("i",{class:"chat--iconfont chat--icon-image"},null,-1),P=n("i",{class:"chat--iconfont chat--icon-folder"},null,-1),A=n("i",{class:"chat--iconfont chat--icon-list-search"},null,-1),F=n("i",{class:"chat--iconfont chat--icon-set"},null,-1);var H=e({__name:"ChatHeader",setup(e){const{state:H}=_(),{isGroupChat:R}=b(H),V=t(!1),B=t(!1),D=t("image"),E=t(!1),J=o((()=>{const e=H.currentGroupUser.map((e=>e.id));return R.value?{mode:"join",disabledIds:e}:{mode:"create",defaultValue:H.currentGroupUser}}));function K(e){D.value=e,B.value=!0}return(e,t)=>(r(),i(a,null,[s(H).id?(r(),i("section",q,[n("div",U,[l(y,{"user-id":s(H).currentSessionItem.receiver,disabled:s(R),placement:"bottom"},{trigger:c((()=>[l(s(p),{round:"",size:30,src:s(H).currentSessionItem.avatar},null,8,["src"])])),_:1},8,["user-id","disabled"]),n("span",I,u(s(H).currentSessionItem.name),1)]),n("div",x,[l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny",onClick:t[0]||(t[0]=()=>K("image"))},{icon:c((()=>[G])),_:1})])),default:c((()=>[m(" 图片 ")])),_:1}),l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny",onClick:t[1]||(t[1]=()=>K("file"))},{icon:c((()=>[P])),_:1})])),default:c((()=>[m(" 文件 ")])),_:1}),l(z,h(d(s(J))),{trigger:c((()=>[l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny"},{icon:c((()=>[l(s(w),{size:"18",component:s(S)},null,8,["component"])])),_:1})])),default:c((()=>[m(" 添加成员 ")])),_:1})])),_:1},16),l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny",onClick:t[2]||(t[2]=()=>E.value=!0)},{icon:c((()=>[A])),_:1})])),default:c((()=>[m(" 聊天记录 ")])),_:1}),l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny",onClick:t[3]||(t[3]=()=>V.value=!0)},{icon:c((()=>[F])),_:1})])),default:c((()=>[m(" 聊天设置 ")])),_:1})])])):v("v-if",!0),l(j,{show:V.value,"onUpdate:show":t[4]||(t[4]=e=>V.value=e)},null,8,["show"]),l(C,{show:B.value,"onUpdate:show":t[5]||(t[5]=e=>B.value=e),type:D.value,visible:B.value},null,8,["show","type","visible"]),l(k,{show:E.value,"onUpdate:show":t[6]||(t[6]=e=>E.value=e),visible:E.value},null,8,["show","visible"])],64))}});export{H as default};
@@ -1 +1 @@
1
- import{defineComponent as e,ref as t,computed as n,watch as s,openBlock as o,createElementBlock as i,normalizeClass as a,unref as r,normalizeStyle as c,createVNode as l,withCtx as m,Fragment as u,renderList as p,toDisplayString as d,createCommentVNode as f,createBlock as v,createElementVNode as g,withModifiers as y,nextTick as h}from"vue";import{NImageGroup as T,NAvatar as M,NImage as _,NIcon as k,NSpace as x,NButtonGroup as I,NButton as S}from"naive-ui";import{format as w}from"date-fns";import{getHistoryRecordApi as L,readMessageApi as j}from"../api/index.js";import{useState as E}from"../hooks/useState.js";import{useSession as C}from"../hooks/useSession.js";import{MESSAGE_TYPE as b}from"../constants/index.js";import"trtc-sdk-v5";import{isAudioOrVideoMessage as A,simplifyMessage as z,getAVTime as H}from"../utils/index.js";import{first as D,last as R}from"lodash-es";import N from"./PersonProfile.vue.js";import O from"./MessageTemplate.vue.js";import{emojis as P}from"../utils/emoji.js";import q from"./ContextMenu.js";import{useScrollLoading as B}from"../hooks/useScrollLoading.js";import{CallOutline as U,VideocamOutline as F,DocumentSharp as G,ChatbubbleEllipsesOutline as J,EllipsisHorizontal as K}from"@vicons/ionicons5";const X={key:0,class:"time"},Y={key:2,class:"message-box"},$={key:0,class:"content-box"},Q={class:"name-box"},V=["data-time"],W=["onContextmenu"],Z={key:0,class:"reference-content"},ee=["innerHTML"],te=["innerHTML"],ne=["src"],se={style:{"margin-left":"8px"}},oe={class:"size"};var ie=e({__name:"ChatMain",setup(e){const ie=t(),{state:ae,setMsgList:re}=E(),{setCurrentSessionItem:ce,isGroupChat:le}=C(ae),me=t(),ue=t(!1),pe=t({left:0,top:0}),de=t(),fe={page:0,hasMore:!0,lastSendTime:w(new Date,"yyyy-MM-dd HH:mm:ss")},ve=n((()=>({"--c-tip-top":le.value?"1px":"-20px","--c-tip-gap":le.value?"10px":"0px"})));async function ge(){try{if(!fe.hasMore)return;fe.page++;const e=await L({sessionKey:ae.currentSessionItem.sessionKey,page:fe.page,lastSendTime:fe.lastSendTime});if(!Array.isArray(e)||0===e.length)return fe.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");const t=D(e).id;fe.lastSendTime=R(e).sendTime,re(fe.page>1?[...e,...ae.msgList]:e),1===fe.page&&ae.currentSessionItem.unreadNum&&(await j({chatType:ae.currentSessionItem.chatType,messageIdSet:[t],receiver:ae.userInfo.id,sender:ae.currentSessionItem.receiver}),ce({unreadNum:0}))}catch(e){console.log(e)}}async function ye(e,t){de.value=t,async function(e){var t,n,s,o,i,a;ue.value=!0,await h();const{clientX:r,clientY:c}=e,{width:l=0,height:m=0,left:u=0,top:p=0}=(null==(t=ie.value)?void 0:t.getBoundingClientRect())||{},d=null!=(o=null==(s=null==(n=me.value)?void 0:n.$el)?void 0:s.getBoundingClientRect().height)?o:220,f=null!=(a=null==(i=ie.value)?void 0:i.scrollTop)?a:0,v=5,g={};r<=u+l/2?g.left=r-u+v+"px":g.right=u+l-r-v+"px";c-p<d/2?g.top=f+v+"px":p+m-c<=d/2?g.bottom=Math.abs(f)+v+"px":g.top=f+c-p-d/2+"px";pe.value=g}(e)}function he(e){const{chatMessageType:t,messageTemplate:n}=e.content;return t!==b.TEMPLATE||!!n}function Te(e,t){var n,s;const{chatMessageType:o,messageTemplate:i}=e.content;if(o===b.TEMPLATE)return"system"===t?2==(null==(n=null==i?void 0:i.setting)?void 0:n.style.id):2!=(null==(s=null==i?void 0:i.setting)?void 0:s.style.id)}function Me(e){var t,n;const{chatMessageType:s,messageTemplate:o}=e;return s===b.TEMPLATE&&3==(null==(n=null==(t=null==o?void 0:o.setting)?void 0:t.style)?void 0:n.id)}function _e(e,t){var n;const s=new Date(e.sendTime).getTime(),o=null==(n=ae.msgList[t+1])?void 0:n.sendTime;if(o){return s-new Date(o).getTime()>3e5}return!0}function ke(e){ae.currentReferenceMsg=e,Object.assign(ae.currentReferenceMsg,{chatType:ae.currentSessionItem.chatType,receiver:ae.currentSessionItem.receiver,receiverAvatar:ae.currentSessionItem.avatar,receiverName:ae.currentSessionItem.name})}function xe(e,t){"reply"===e&&ke(t)}return B(ie,(()=>{ge()}),"top",(()=>{ue.value=!1})),s((()=>ae.id),(e=>{e&&(ae.currentReferenceMsg=null,Object.assign(fe,{page:0,hasMore:!0,lastSendTime:w(new Date,"yyyy-MM-dd HH:mm:ss")}),ge())}),{immediate:!0}),s((()=>ae.isAppendMsg),(e=>{e&&(re([...ae.msgList,ae.currentMsg]),ae.isAppendMsg=!1,async function(){var e,t,n;const s=null!=(t=null==(e=ie.value)?void 0:e.scrollHeight)?t:0;null==(n=ie.value)||n.scrollTo({top:s,behavior:"auto"})}())}),{immediate:!0}),(e,t)=>(o(),i("div",{class:a(["chat-main",{"home-bg":!r(ae).id}]),ref_key:"chatMainRef",ref:ie,style:c(r(ve))},[l(r(T),{"show-toolbar-tooltip":""},{default:m((()=>[(o(!0),i(u,null,p(r(ae).msgList,((e,t)=>(o(),i(u,{key:e.id},[he(e)?(o(),i("div",{key:0,class:a(["message-item",{"message-item--mine":e.sender==r(ae).userInfo.id}])},[_e(e,t)?(o(),i("p",X,d(e.__sendTime),1)):f("v-if",!0),Te(e,"system")?(o(),v(O,{key:1,data:e},null,8,["data"])):(o(),i("div",Y,[l(N,{"user-id":e.sender,placement:e.sender==r(ae).userInfo.id?"left":"right"},{trigger:m((()=>[l(r(M),{round:"",size:38,src:e.senderAvatar},null,8,["src"])])),_:2},1032,["user-id","placement"]),e.content?(o(),i("div",$,[g("div",Q,[g("span",{class:"name","data-time":e.__time},d(r(le)?e.senderName:""),9,V)]),g("div",{class:a(["content",{emoji:e.content.chatMessageType===r(b).EMOJI,template:e.content.chatMessageType===r(b).TEMPLATE,"template--3":Me(e.content),"audio-video":r(A)(e.content),file:e.content.chatMessageType===r(b).FILE}]),onContextmenu:y((t=>ye(t,e.id)),["prevent"])},[e.content.chatMessageType===r(b).TEXT?(o(),i(u,{key:0},[e.content.referenceContent?(o(),i("div",Z,[g("span",null,d(e.content.referenceContent.senderName)+":",1),g("pre",{innerHTML:r(z)(e.content.referenceContent.content)},null,8,ee)])):f("v-if",!0),g("pre",null,d(e.__content),1)],64)):f("v-if",!0),e.content.chatMessageType===r(b).BLEND?(o(),i("pre",{key:1,innerHTML:e.__content},null,8,te)):f("v-if",!0),e.content.chatMessageType===r(b).EMOJI?(o(),i("img",{key:2,src:r(P).findEmoji(e.__content)},null,8,ne)):f("v-if",!0),Te(e,"template")?(o(),v(O,{key:3,data:e},null,8,["data"])):f("v-if",!0),e.content.chatMessageType===r(b).IMAGE?(o(),v(r(_),{key:4,width:"240",src:e.__content},null,8,["src"])):f("v-if",!0),r(A)(e.content)?(o(),i(u,{key:5},[l(r(k),{class:a({"is-audio":e.content.chatMessageType===r(b).AUDIO}),component:e.content.chatMessageType===r(b).AUDIO?r(U):r(F)},null,8,["class","component"]),g("span",se,d(r(H)(e.__content)),1)],64)):f("v-if",!0),e.content.chatMessageType===r(b).FILE?(o(),v(r(x),{key:6,"wrap-item":!1},{default:m((()=>[l(r(k),{class:"icon-file",size:"40",component:r(G)},null,8,["component"]),l(r(x),{"wrap-item":!1,vertical:"",justify:"space-between",style:{"row-gap":"0"}},{default:m((()=>[g("span",null,d(e.__content),1),g("span",oe,d(e.__size),1)])),_:2},1024)])),_:2},1024)):f("v-if",!0),l(r(I),{class:"quick-menu"},{default:m((()=>[r(A)(e.content)?f("v-if",!0):(o(),i(u,{key:0},[f(' <n-button quaternary size="tiny">\n\t\t\t\t\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<i class="chat--iconfont chat--icon-face" />\n\t\t\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t\t\t</n-button> '),l(r(S),{quaternary:"",size:"tiny",onClick:()=>ke(e)},{icon:m((()=>[l(r(k),{size:"17",component:r(J)},null,8,["component"])])),_:2},1032,["onClick"])],64)),l(r(S),{quaternary:"",size:"tiny",onClick:t=>ye(t,e.id)},{icon:m((()=>[l(r(k),{size:"14",component:r(K)},null,8,["component"])])),_:2},1032,["onClick"])])),_:2},1024)],42,W)])):f("v-if",!0)]))],2)):f("v-if",!0)],64)))),128))])),_:1}),l(r(q),{ref_key:"contextmenuRef",ref:me,show:ue.value,"onUpdate:show":t[0]||(t[0]=e=>ue.value=e),position:pe.value,"msg-id":de.value,onSelect:xe},null,8,["show","position","msg-id"])],6))}});export{ie as default};
1
+ import{defineComponent as e,ref as t,computed as n,watch as s,openBlock as i,createElementBlock as o,normalizeClass as a,unref as r,normalizeStyle as c,createVNode as l,withCtx as m,Fragment as u,renderList as p,toDisplayString as d,createCommentVNode as f,createBlock as v,createElementVNode as g,withModifiers as y,nextTick as T}from"vue";import{NImageGroup as h,NAvatar as M,NImage as _,NIcon as k,NSpace as x,NButtonGroup as I,NButton as L}from"naive-ui";import{format as S}from"date-fns";import{getHistoryRecordApi as w,readMessageApi as j}from"../api/index.js";import{useState as E}from"../hooks/useState.js";import{useSession as C}from"../hooks/useSession.js";import{MESSAGE_TYPE as b}from"../constants/index.js";import"trtc-sdk-v5";import{isAudioOrVideoMessage as A,simplifyMessage as H,getAVTime as z}from"../utils/index.js";import{first as D,last as R}from"lodash-es";import N from"./PersonProfile.vue.js";import O from"./MessageTemplate.vue.js";import{emojis as P}from"../utils/emoji.js";import q from"./ContextMenu.js";import{useScrollLoading as B}from"../hooks/useScrollLoading.js";import{CallOutline as U,VideocamOutline as F,DocumentSharp as G,ChatbubbleEllipsesOutline as J,EllipsisHorizontal as K}from"@vicons/ionicons5";const X={key:0,class:"time"},Y={key:2,class:"message-box"},$={key:0,class:"content-box"},Q={class:"name-box"},V=["data-time"],W=["onContextmenu"],Z={key:0,class:"reference-content"},ee=["innerHTML"],te=["innerHTML"],ne=["innerHTML"],se=["src"],ie={style:{"margin-left":"8px"}},oe={class:"size"};var ae=e({__name:"ChatMain",setup(e){const ae=t(),{state:re,setMsgList:ce}=E(),{setCurrentSessionItem:le,isGroupChat:me}=C(re),ue=t(),pe=t(!1),de=t({left:0,top:0}),fe=t(),ve={page:0,hasMore:!0,lastSendTime:S(new Date,"yyyy-MM-dd HH:mm:ss")},ge=n((()=>({"--c-tip-top":me.value?"1px":"-20px","--c-tip-gap":me.value?"10px":"0px"})));async function ye(){try{if(!ve.hasMore)return;ve.page++;const e=await w({sessionKey:re.currentSessionItem.sessionKey,page:ve.page,lastSendTime:ve.lastSendTime});if(!Array.isArray(e)||0===e.length)return ve.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");const t=D(e).id;ve.lastSendTime=R(e).sendTime,ce(ve.page>1?[...e,...re.msgList]:e),1===ve.page&&re.currentSessionItem.unreadNum&&(await j({chatType:re.currentSessionItem.chatType,messageIdSet:[t],receiver:re.userInfo.id,sender:re.currentSessionItem.receiver}),le({unreadNum:0}))}catch(e){console.log(e)}}async function Te(e,t){fe.value=t,async function(e){var t,n,s,i,o,a;pe.value=!0,await T();const{clientX:r,clientY:c}=e,{width:l=0,height:m=0,left:u=0,top:p=0}=(null==(t=ae.value)?void 0:t.getBoundingClientRect())||{},d=null!=(i=null==(s=null==(n=ue.value)?void 0:n.$el)?void 0:s.getBoundingClientRect().height)?i:220,f=null!=(a=null==(o=ae.value)?void 0:o.scrollTop)?a:0,v=5,g={};r<=u+l/2?g.left=r-u+v+"px":g.right=u+l-r-v+"px";c-p<d/2?g.top=f+v+"px":p+m-c<=d/2?g.bottom=Math.abs(f)+v+"px":g.top=f+c-p-d/2+"px";de.value=g}(e)}function he(e){const{chatMessageType:t,messageTemplate:n}=e.content;return t!==b.TEMPLATE||!!n}function Me(e,t){var n,s;const{chatMessageType:i,messageTemplate:o}=e.content;if(i===b.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 _e(e){var t,n;const{chatMessageType:s,messageTemplate:i}=e;return s===b.TEMPLATE&&3==(null==(n=null==(t=null==i?void 0:i.setting)?void 0:t.style)?void 0:n.id)}function ke(e,t){var n;const s=new Date(e.sendTime).getTime(),i=null==(n=re.msgList[t+1])?void 0:n.sendTime;if(i){return s-new Date(i).getTime()>3e5}return!0}function xe(e){re.currentReferenceMsg=e,Object.assign(re.currentReferenceMsg,{chatType:re.currentSessionItem.chatType,receiver:re.currentSessionItem.receiver,receiverAvatar:re.currentSessionItem.avatar,receiverName:re.currentSessionItem.name})}function Ie(e,t){"reply"===e&&xe(t)}return B(ae,(()=>{ye()}),"top",(()=>{pe.value=!1})),s((()=>re.id),(e=>{e&&(re.currentReferenceMsg=null,Object.assign(ve,{page:0,hasMore:!0,lastSendTime:S(new Date,"yyyy-MM-dd HH:mm:ss")}),ye())}),{immediate:!0}),s((()=>re.isAppendMsg),(e=>{e&&(ce([...re.msgList,re.currentMsg]),re.isAppendMsg=!1,async function(){var e,t,n;const s=null!=(t=null==(e=ae.value)?void 0:e.scrollHeight)?t:0;null==(n=ae.value)||n.scrollTo({top:s,behavior:"auto"})}())}),{immediate:!0}),(e,t)=>(i(),o("div",{class:a(["chat-main",{"home-bg":!r(re).id}]),ref_key:"chatMainRef",ref:ae,style:c(r(ge))},[l(r(h),{"show-toolbar-tooltip":""},{default:m((()=>[(i(!0),o(u,null,p(r(re).msgList,((e,t)=>(i(),o(u,{key:e.id},[he(e)?(i(),o("div",{key:0,class:a(["message-item",{"message-item--mine":e.sender==r(re).userInfo.id}])},[ke(e,t)?(i(),o("p",X,d(e.__sendTime),1)):f("v-if",!0),Me(e,"system")?(i(),v(O,{key:1,data:e},null,8,["data"])):(i(),o("div",Y,[l(N,{"user-id":e.sender,placement:e.sender==r(re).userInfo.id?"left":"right"},{trigger:m((()=>[l(r(M),{round:"",size:38,src:e.senderAvatar},null,8,["src"])])),_:2},1032,["user-id","placement"]),e.content?(i(),o("div",$,[g("div",Q,[g("span",{class:"name","data-time":e.__time},d(r(me)?e.senderName:""),9,V)]),g("div",{class:a(["content",{emoji:e.content.chatMessageType===r(b).EMOJI,template:e.content.chatMessageType===r(b).TEMPLATE,"template--3":_e(e.content),"audio-video":r(A)(e.content),file:e.content.chatMessageType===r(b).FILE}]),onContextmenu:y((t=>Te(t,e.id)),["prevent"])},[e.content.chatMessageType===r(b).TEXT?(i(),o(u,{key:0},[e.content.referenceContent?(i(),o("div",Z,[g("span",null,d(e.content.referenceContent.senderName)+":",1),g("pre",{innerHTML:r(H)(e.content.referenceContent.content)},null,8,ee)])):f("v-if",!0),g("pre",{innerHTML:e.__content},null,8,te)],64)):f("v-if",!0),e.content.chatMessageType===r(b).BLEND?(i(),o("pre",{key:1,innerHTML:e.__content},null,8,ne)):f("v-if",!0),e.content.chatMessageType===r(b).EMOJI?(i(),o("img",{key:2,src:r(P).findEmoji(e.__content)},null,8,se)):f("v-if",!0),Me(e,"template")?(i(),v(O,{key:3,data:e},null,8,["data"])):f("v-if",!0),e.content.chatMessageType===r(b).IMAGE?(i(),v(r(_),{key:4,width:"240",src:e.__content},null,8,["src"])):f("v-if",!0),r(A)(e.content)?(i(),o(u,{key:5},[l(r(k),{class:a({"is-audio":e.content.chatMessageType===r(b).AUDIO}),component:e.content.chatMessageType===r(b).AUDIO?r(U):r(F)},null,8,["class","component"]),g("span",ie,d(r(z)(e.__content)),1)],64)):f("v-if",!0),e.content.chatMessageType===r(b).FILE?(i(),v(r(x),{key:6,"wrap-item":!1},{default:m((()=>[l(r(k),{class:"icon-file",size:"40",component:r(G)},null,8,["component"]),l(r(x),{"wrap-item":!1,vertical:"",justify:"space-between",style:{"row-gap":"0"}},{default:m((()=>[g("span",null,d(e.__content),1),g("span",oe,d(e.__size),1)])),_:2},1024)])),_:2},1024)):f("v-if",!0),l(r(I),{class:"quick-menu"},{default:m((()=>[r(A)(e.content)?f("v-if",!0):(i(),o(u,{key:0},[f(' <n-button quaternary size="tiny">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<template #icon>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<i class="chat--iconfont chat--icon-face" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t\t\t\t\t\t</n-button> '),l(r(L),{quaternary:"",size:"tiny",onClick:()=>xe(e)},{icon:m((()=>[l(r(k),{size:"17",component:r(J)},null,8,["component"])])),_:2},1032,["onClick"])],64)),l(r(L),{quaternary:"",size:"tiny",onClick:t=>Te(t,e.id)},{icon:m((()=>[l(r(k),{size:"14",component:r(K)},null,8,["component"])])),_:2},1032,["onClick"])])),_:2},1024)],42,W)])):f("v-if",!0)]))],2)):f("v-if",!0)],64)))),128))])),_:1}),l(r(q),{ref_key:"contextmenuRef",ref:ue,show:pe.value,"onUpdate:show":t[0]||(t[0]=e=>pe.value=e),position:de.value,"msg-id":fe.value,onSelect:Ie},null,8,["show","position","msg-id"])],6))}});export{ae as default};
@@ -1 +1 @@
1
- import{defineComponent as e,ref as a,watch as l,openBlock as t,createBlock as s,unref as r,withCtx as o,createElementVNode as n,createVNode as i,toDisplayString as u,resolveDynamicComponent as c,createElementBlock as d,Fragment as v,renderList as m,withDirectives as p,createTextVNode as f,vShow as g}from"vue";import{NModal as h,NAvatar as y,NInputGroup as b,NInput as _,NSelect as T,NPopover as k,NTag as M,NIcon as x}from"naive-ui";import{SearchOutline as w}from"@vicons/ionicons5";import{useState as I}from"../hooks/useState.js";import{transformMessage as j,formatTime as S}from"../utils/index.js";import{last as A}from"lodash-es";import{MESSAGE_TYPE as L}from"../constants/index.js";import{searchChatRecordApi as C}from"../api/index.js";import"trtc-sdk-v5";import E from"../../../date-picker/index.js";import{useDebounceFn as H}from"@vueuse/core";import{format as U}from"date-fns";import{useScrollLoading as z}from"../hooks/useScrollLoading.js";import{emojis as D}from"../utils/emoji.js";const G={class:"iho-chat-dialog__header"},K=n("span",{class:"left"},"聊天记录",-1),O={class:"center"},R={class:"iho-chat-dialog__content iho-chat-record-wrapper"},B={class:"chat-record-box"},J={class:"msg-box"},N={class:"name-and-time"},P={class:"content"},X=["src"],$=["src"],q=["innerHTML"],F={key:1,class:"no-data"},Q={class:"chat-record-box__filter"},V=n("span",{class:"filter-title"},"添加筛选条件",-1),W={class:"filter-item"},Y=n("span",{class:"label"},"成员:",-1),Z={class:"filter-item"},ee=n("span",{class:"label"},"日期:",-1),ae={class:"time-target"},le={class:"time-target__item"},te=n("span",null,"开始:",-1),se={class:"tip"},re={class:"time-target__item"},oe=n("span",null,"结束:",-1),ne={class:"tip"};var ie=e({__name:"ChatRecord",props:{visible:{type:Boolean}},setup(e){const ie=e,ue={color:"#fff",textColor:"#666"},{state:ce}=I(),de=a(),ve=a([]),me=a(),pe=a([]),fe=a(),ge=a(),he=H(_e,500),ye={page:0,hasMore:!0,lastSendTime:U(new Date,"yyyy-MM-dd HH:mm:ss")};async function be(){var e;try{if(!ye.hasMore)return;ye.page++;const a=await C({orgId:ce.orgId,keyword:me.value,endTime:ge.value?ge.value+" 23:59:59":"",startTime:fe.value?fe.value+" 00:00:00":"",lastSendTime:ye.lastSendTime,memberIdSet:pe.value,page:ye.page,recordType:"ALL",sessionKey:ce.currentSessionItem.sessionKey,userId:ce.userInfo.id});Array.isArray(a)&&0!==a.length&&Array.isArray(a[0].recordList)||(ye.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了"));let l=a||[];Array.isArray(a)&&a.length>0&&(l=a[0].recordList),ye.lastSendTime=null==(e=A(l))?void 0:e.sendTime,l.forEach((e=>{var a,l,t,s,r;let o="";switch(e.content.chatMessageType){case L.TEXT:o=j(null==(a=e.content)?void 0:a.msg);break;case L.TEMPLATE:o=null==(s=null==(t=null==(l=e.content)?void 0:l.messageTemplate)?void 0:t.setting)?void 0:s.title;break;default:o=null==(r=e.content)?void 0:r.msg}e.__content=o})),ve.value=ye.page>1?ve.value.concat(l):l}catch(e){console.log(e)}}function _e(){Object.assign(ye,{page:0,hasMore:!0,lastSendTime:ge.value||U(new Date,"yyyy-MM-dd HH:mm:ss")}),be()}function Te(e){return!!ge.value&&e>Date.parse(`${ge.value} 23:59:59`)}function ke(e){return!!fe.value&&e<Date.parse(fe.value)}function Me(e){switch(e){case"member":pe.value=[];break;case"start":fe.value=null;break;case"end":ge.value=null}}function xe(e){return i(v,null,[i("div",{style:"display: flex;align-items: center"},[i(y,{src:e.avatar,round:!0,size:"small"},null),i("span",{style:"margin-left: 10px"},[e.name])])])}return z(de,(()=>{be()})),l([()=>pe.value,()=>fe.value,()=>ge.value],(()=>{ie.visible&&_e()}),{deep:!0}),l((()=>ie.visible),(e=>{e?_e():(me.value="",ge.value=null,fe.value=null,pe.value=[],ve.value=[])})),(e,a)=>(t(),s(r(h),{preset:"dialog",title:"","show-icon":!1,"auto-focus":!1,class:"iho-chat-dialog"},{header:o((()=>[n("div",G,[K,n("div",O,[i(r(y),{round:"",size:30,src:r(ce).currentSessionItem.avatar},null,8,["src"]),n("span",null,u(r(ce).currentSessionItem.name),1)])])])),default:o((()=>[n("div",R,[i(r(b),null,{default:o((()=>[(t(),s(c((()=>[i(x,{component:w,size:18,color:"#6666"},null),pe.value.length>0?i(M,{closable:!0,bordered:!1,color:ue,onClose:()=>Me("member")},{default:()=>{var e;return[f("成员:")," ",pe.value.length>1?pe.value.length+"人":null==(e=ce.currentGroupUser.find((e=>e.id===pe.value[0])))?void 0:e.name]}}):null,fe.value?i(M,{closable:!0,bordered:!1,color:ue,onClose:()=>Me("start")},{default:()=>[f("起始时间: "),fe.value]}):null,ge.value?i(M,{closable:!0,bordered:!1,color:ue,onClose:()=>Me("end")},{default:()=>[f("结束时间: "),ge.value]}):null])))),i(r(_),{placeholder:"搜索",value:me.value,"onUpdate:value":a[0]||(a[0]=e=>me.value=e),valueModifiers:{trim:!0},onInput:r(he)},null,8,["value","onInput"])])),_:1}),n("div",B,[n("div",{class:"chat-record-box__content",ref_key:"recordRef",ref:de},[ve.value.length>0?(t(!0),d(v,{key:0},m(ve.value,(e=>(t(),d("div",{class:"content-item",key:e.id},[i(r(y),{round:"",size:38,src:e.senderAvatar},null,8,["src"]),n("div",J,[n("div",N,[n("span",null,u(e.senderName),1),n("span",null,u(r(S)(e.sendTime).recordTime),1)]),n("div",P,[e.content.chatMessageType===r(L).IMAGE?(t(),d("img",{key:0,class:"img",src:e.__content},null,8,X)):e.content.chatMessageType===r(L).EMOJI?(t(),d("img",{key:1,class:"emoji",src:r(D).findEmoji(e.__content)},null,8,$)):(t(),d("p",{key:2,innerHTML:e.__content},null,8,q))])])])))),128)):(t(),d("div",F,"没有找到相关记录"))],512),n("div",Q,[V,n("div",W,[Y,i(r(T),{value:pe.value,"onUpdate:value":a[1]||(a[1]=e=>pe.value=e),multiple:"","max-tag-count":1,"render-label":xe,options:r(ce).currentGroupUser,"value-field":"id"},null,8,["value","options"])]),n("div",Z,[ee,n("div",ae,[i(r(k),{trigger:"click","show-arrow":!1},{trigger:o((()=>[n("div",le,[te,p(i(r(M),{bordered:!1,color:ue,closable:"",onClose:a[2]||(a[2]=()=>Me("start"))},{default:o((()=>[f(u(fe.value),1)])),_:1},512),[[g,fe.value]]),p(n("span",se,"点击选择",512),[[g,!fe.value]])])])),default:o((()=>[i(r(E),{"formatted-value":fe.value,"onUpdate:formatted-value":a[3]||(a[3]=e=>fe.value=e),type:"date",panel:"",clearable:"","is-date-disabled":Te},null,8,["formatted-value"])])),_:1}),i(r(k),{trigger:"click","show-arrow":!1},{trigger:o((()=>[n("div",re,[oe,p(i(r(M),{bordered:!1,color:ue,closable:"",onClose:a[4]||(a[4]=()=>Me("end"))},{default:o((()=>[f(u(ge.value),1)])),_:1},512),[[g,ge.value]]),p(n("span",ne,"点击选择",512),[[g,!ge.value]])])])),default:o((()=>[i(r(E),{"formatted-value":ge.value,"onUpdate:formatted-value":a[5]||(a[5]=e=>ge.value=e),type:"date",panel:"",clearable:"","is-date-disabled":ke},null,8,["formatted-value"])])),_:1})])])])])])])),_:1}))}});export{ie as default};
1
+ import{defineComponent as e,ref as a,watch as l,openBlock as t,createBlock as s,unref as r,withCtx as o,createElementVNode as n,createVNode as i,toDisplayString as u,resolveDynamicComponent as c,createElementBlock as d,Fragment as v,renderList as m,withDirectives as p,createTextVNode as f,vShow as g}from"vue";import{NModal as h,NAvatar as y,NInputGroup as b,NInput as _,NSelect as T,NPopover as k,NTag as M,NIcon as x}from"naive-ui";import{SearchOutline as w}from"@vicons/ionicons5";import{useState as I}from"../hooks/useState.js";import{transformMessage as j,formatTime as S}from"../utils/index.js";import{last as A}from"lodash-es";import{MESSAGE_TYPE as L}from"../constants/index.js";import{searchChatRecordApi as E}from"../api/index.js";import"trtc-sdk-v5";import C from"../../../date-picker/index.js";import{useDebounceFn as H}from"@vueuse/core";import{format as U}from"date-fns";import{useScrollLoading as D}from"../hooks/useScrollLoading.js";import{emojis as z}from"../utils/emoji.js";const G={class:"iho-chat-dialog__header"},B=n("span",{class:"left"},"聊天记录",-1),K={class:"center"},N={class:"iho-chat-dialog__content iho-chat-record-wrapper"},O={class:"chat-record-box"},R={class:"msg-box"},J={class:"name-and-time"},P={class:"content"},X=["src"],$=["src"],q=["innerHTML"],F={key:1,class:"no-data"},Q={class:"chat-record-box__filter"},V=n("span",{class:"filter-title"},"添加筛选条件",-1),W={class:"filter-item"},Y=n("span",{class:"label"},"成员:",-1),Z={class:"filter-item"},ee=n("span",{class:"label"},"日期:",-1),ae={class:"time-target"},le={class:"time-target__item"},te=n("span",null,"开始:",-1),se={class:"tip"},re={class:"time-target__item"},oe=n("span",null,"结束:",-1),ne={class:"tip"};var ie=e({__name:"ChatRecord",props:{visible:{type:Boolean}},setup(e){const ie=e,ue={color:"#fff",textColor:"#666"},{state:ce}=I(),de=a(),ve=a([]),me=a(),pe=a([]),fe=a(),ge=a(),he=H(_e,500),ye={page:0,hasMore:!0,lastSendTime:U(new Date,"yyyy-MM-dd HH:mm:ss")};async function be(){var e;try{if(!ye.hasMore)return;ye.page++;const a=await E({orgId:ce.orgId,keyword:me.value,endTime:ge.value?ge.value+" 23:59:59":"",startTime:fe.value?fe.value+" 00:00:00":"",lastSendTime:ye.lastSendTime,memberIdSet:pe.value,page:ye.page,recordType:"ALL",sessionKey:ce.currentSessionItem.sessionKey,userId:ce.userInfo.id});Array.isArray(a)&&0!==a.length&&Array.isArray(a[0].recordList)||(ye.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了"));let l=a||[];Array.isArray(a)&&a.length>0&&(l=a[0].recordList),ye.lastSendTime=null==(e=A(l))?void 0:e.sendTime,l.forEach((e=>{var a,l,t,s;let r="";switch(e.content.chatMessageType){case L.TEXT:case L.BLEND:r=j(e.content);break;case L.TEMPLATE:r=null==(t=null==(l=null==(a=e.content)?void 0:a.messageTemplate)?void 0:l.setting)?void 0:t.title;break;default:r=null==(s=e.content)?void 0:s.msg}e.__content=r})),ve.value=ye.page>1?ve.value.concat(l):l}catch(e){console.log(e)}}function _e(){Object.assign(ye,{page:0,hasMore:!0,lastSendTime:ge.value||U(new Date,"yyyy-MM-dd HH:mm:ss")}),be()}function Te(e){return!!ge.value&&e>Date.parse(`${ge.value} 23:59:59`)}function ke(e){return!!fe.value&&e<Date.parse(fe.value)}function Me(e){switch(e){case"member":pe.value=[];break;case"start":fe.value=null;break;case"end":ge.value=null}}function xe(e){return i(v,null,[i("div",{style:"display: flex;align-items: center"},[i(y,{src:e.avatar,round:!0,size:"small"},null),i("span",{style:"margin-left: 10px"},[e.name])])])}return D(de,(()=>{be()})),l([()=>pe.value,()=>fe.value,()=>ge.value],(()=>{ie.visible&&_e()}),{deep:!0}),l((()=>ie.visible),(e=>{e?_e():(me.value="",ge.value=null,fe.value=null,pe.value=[],ve.value=[])})),(e,a)=>(t(),s(r(h),{preset:"dialog",title:"","show-icon":!1,"auto-focus":!1,class:"iho-chat-dialog"},{header:o((()=>[n("div",G,[B,n("div",K,[i(r(y),{round:"",size:30,src:r(ce).currentSessionItem.avatar},null,8,["src"]),n("span",null,u(r(ce).currentSessionItem.name),1)])])])),default:o((()=>[n("div",N,[i(r(b),null,{default:o((()=>[(t(),s(c((()=>[i(x,{component:w,size:18,color:"#6666"},null),pe.value.length>0?i(M,{closable:!0,bordered:!1,color:ue,onClose:()=>Me("member")},{default:()=>{var e;return[f("成员:")," ",pe.value.length>1?pe.value.length+"人":null==(e=ce.currentGroupUser.find((e=>e.id===pe.value[0])))?void 0:e.name]}}):null,fe.value?i(M,{closable:!0,bordered:!1,color:ue,onClose:()=>Me("start")},{default:()=>[f("起始时间: "),fe.value]}):null,ge.value?i(M,{closable:!0,bordered:!1,color:ue,onClose:()=>Me("end")},{default:()=>[f("结束时间: "),ge.value]}):null])))),i(r(_),{placeholder:"搜索",value:me.value,"onUpdate:value":a[0]||(a[0]=e=>me.value=e),valueModifiers:{trim:!0},onInput:r(he)},null,8,["value","onInput"])])),_:1}),n("div",O,[n("div",{class:"chat-record-box__content",ref_key:"recordRef",ref:de},[ve.value.length>0?(t(!0),d(v,{key:0},m(ve.value,(e=>(t(),d("div",{class:"content-item",key:e.id},[i(r(y),{round:"",size:38,src:e.senderAvatar},null,8,["src"]),n("div",R,[n("div",J,[n("span",null,u(e.senderName),1),n("span",null,u(r(S)(e.sendTime).recordTime),1)]),n("div",P,[e.content.chatMessageType===r(L).IMAGE?(t(),d("img",{key:0,class:"img",src:e.__content},null,8,X)):e.content.chatMessageType===r(L).EMOJI?(t(),d("img",{key:1,class:"emoji",src:r(z).findEmoji(e.__content)},null,8,$)):(t(),d("p",{key:2,innerHTML:e.__content},null,8,q))])])])))),128)):(t(),d("div",F,"没有找到相关记录"))],512),n("div",Q,[V,n("div",W,[Y,i(r(T),{value:pe.value,"onUpdate:value":a[1]||(a[1]=e=>pe.value=e),multiple:"","max-tag-count":1,"render-label":xe,options:r(ce).currentGroupUser,"value-field":"id"},null,8,["value","options"])]),n("div",Z,[ee,n("div",ae,[i(r(k),{trigger:"click","show-arrow":!1},{trigger:o((()=>[n("div",le,[te,p(i(r(M),{bordered:!1,color:ue,closable:"",onClose:a[2]||(a[2]=()=>Me("start"))},{default:o((()=>[f(u(fe.value),1)])),_:1},512),[[g,fe.value]]),p(n("span",se,"点击选择",512),[[g,!fe.value]])])])),default:o((()=>[i(r(C),{"formatted-value":fe.value,"onUpdate:formatted-value":a[3]||(a[3]=e=>fe.value=e),type:"date",panel:"",clearable:"","is-date-disabled":Te},null,8,["formatted-value"])])),_:1}),i(r(k),{trigger:"click","show-arrow":!1},{trigger:o((()=>[n("div",re,[oe,p(i(r(M),{bordered:!1,color:ue,closable:"",onClose:a[4]||(a[4]=()=>Me("end"))},{default:o((()=>[f(u(ge.value),1)])),_:1},512),[[g,ge.value]]),p(n("span",ne,"点击选择",512),[[g,!ge.value]])])])),default:o((()=>[i(r(C),{"formatted-value":ge.value,"onUpdate:formatted-value":a[5]||(a[5]=e=>ge.value=e),type:"date",panel:"",clearable:"","is-date-disabled":ke},null,8,["formatted-value"])])),_:1})])])])])])])),_:1}))}});export{ie as default};
@@ -1 +1 @@
1
- import{defineComponent as e,ref as s,computed as o,watch as r,nextTick as t,openBlock as a,createBlock as l,unref as n,normalizeStyle as i,withCtx as u,createVNode as p,createTextVNode as c,createElementVNode as f,createElementBlock as m,Fragment as d,renderList as v,toDisplayString as h,withDirectives as k,vShow as w}from"vue";import{NPopover as y,NButton as g,NIcon as j,NInput as S,NAvatar as _}from"naive-ui";import{SearchOutline as x}from"@vicons/ionicons5";import{useState as C}from"../hooks/useState.js";import{useSession as R}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import"lodash-es";import"../utils/emoji.js";import{openSessionApi as U}from"../api/index.js";import{useTheme as I}from"../../../../shared/hooks/useTheme.js";import"@vueuse/core";import"@vue/shared";import"../../../../shared/utils/index.js";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import{useSearchUserList as L}from"../hooks/useSearchUserList.js";import b from"../../../default-page/index.js";const z=["onClick"],N={class:"user-info"};var T=e({__name:"ChatSearch",setup(e){const T=I(),D=s(),E=s(),G=s(!1),H=s(""),{state:$}=C(),{openSession:q}=R($),{userList:A,handleInput:B}=L({wrapperRef:D,keywordRef:H}),F=o((()=>!A.value.length&&!!(H.value||"").replace(/^\s+|\s+$/g,"")));return r((()=>G.value),(async e=>{var s;e&&(await t(),null==(s=E.value)||s.focus())})),(e,s)=>(a(),l(n(y),{raw:"","content-class":"search-content",class:"search-wrapper",style:i(n(T)),show:G.value,"onUpdate:show":s[1]||(s[1]=e=>G.value=e),placement:"top",trigger:"click","display-directive":"show","show-arrow":!1,delay:0,overlap:""},{trigger:u((()=>[p(n(g),{color:"#ffffff4D",class:"search-trigger-btn"},{icon:u((()=>[p(n(j),{component:n(x),color:"#ffffff80"},null,8,["component"])])),default:u((()=>[c(" 搜索联系人 ")])),_:1})])),default:u((()=>[p(n(S),{ref_key:"inputRef",ref:E,size:"small",clearable:"",autofocus:"",value:H.value,"onUpdate:value":[s[0]||(s[0]=e=>H.value=e),n(B)]},{prefix:u((()=>[p(n(j),{color:"#ffffff80",component:n(x)},null,8,["component"])])),_:1},8,["value","onUpdate:value"]),f("div",{class:"user-list-wrapper",ref_key:"listRef",ref:D},[(a(!0),m(d,null,v(n(A),(e=>(a(),m("div",{class:"user-item",key:e.id,onClick:()=>async function(e){G.value=!1;const s=await U({chatType:"SINGLE",receiver:e,sender:$.userInfo.id});q(s)}(e.id)},[p(n(_),{round:"",size:32,src:e.avatar},null,8,["src"]),f("div",N,[f("span",null,h(e.name),1),f("span",null,h(e.deptName),1),f("span",null,h(e.post),1)])],8,z)))),128)),k(p(n(b),{config:{title:" ",content:"找不到相关的结果"},type:"5"},null,512),[[w,n(F)]])],512)])),_:1},8,["style","show"]))}});export{T as default};
1
+ import{defineComponent as e,ref as s,computed as o,watch as r,nextTick as t,openBlock as a,createBlock as l,unref as n,normalizeStyle as i,withCtx as u,createVNode as p,createTextVNode as c,createElementVNode as f,createElementBlock as m,Fragment as d,renderList as v,toDisplayString as h,withDirectives as k,vShow as w}from"vue";import{NPopover as y,NButton as g,NIcon as j,NInput as S,NAvatar as _}from"naive-ui";import{SearchOutline as x}from"@vicons/ionicons5";import{useState as C}from"../hooks/useState.js";import{useSession as R}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import"lodash-es";import"../utils/emoji.js";import"../../../../shared/utils/index.js";import{openSessionApi as U}from"../api/index.js";import{useTheme as I}from"../../../../shared/hooks/useTheme.js";import"@vueuse/core";import"@vue/shared";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import{useSearchUserList as L}from"../hooks/useSearchUserList.js";import b from"../../../default-page/index.js";const z=["onClick"],N={class:"user-info"};var T=e({__name:"ChatSearch",setup(e){const T=I(),D=s(),E=s(),G=s(!1),H=s(""),{state:$}=C(),{openSession:q}=R($),{userList:A,handleInput:B}=L({wrapperRef:D,keywordRef:H}),F=o((()=>!A.value.length&&!!(H.value||"").replace(/^\s+|\s+$/g,"")));return r((()=>G.value),(async e=>{var s;e&&(await t(),null==(s=E.value)||s.focus())})),(e,s)=>(a(),l(n(y),{raw:"","content-class":"search-content",class:"search-wrapper",style:i(n(T)),show:G.value,"onUpdate:show":s[1]||(s[1]=e=>G.value=e),placement:"top",trigger:"click","display-directive":"show","show-arrow":!1,delay:0,overlap:""},{trigger:u((()=>[p(n(g),{color:"#ffffff4D",class:"search-trigger-btn"},{icon:u((()=>[p(n(j),{component:n(x),color:"#ffffff80"},null,8,["component"])])),default:u((()=>[c(" 搜索联系人 ")])),_:1})])),default:u((()=>[p(n(S),{ref_key:"inputRef",ref:E,size:"small",clearable:"",autofocus:"",value:H.value,"onUpdate:value":[s[0]||(s[0]=e=>H.value=e),n(B)]},{prefix:u((()=>[p(n(j),{color:"#ffffff80",component:n(x)},null,8,["component"])])),_:1},8,["value","onUpdate:value"]),f("div",{class:"user-list-wrapper",ref_key:"listRef",ref:D},[(a(!0),m(d,null,v(n(A),(e=>(a(),m("div",{class:"user-item",key:e.id,onClick:()=>async function(e){G.value=!1;const s=await U({chatType:"SINGLE",receiver:e,sender:$.userInfo.id});q(s)}(e.id)},[p(n(_),{round:"",size:32,src:e.avatar},null,8,["src"]),f("div",N,[f("span",null,h(e.name),1),f("span",null,h(e.deptName),1),f("span",null,h(e.post),1)])],8,z)))),128)),k(p(n(b),{config:{title:" ",content:"找不到相关的结果"},type:"5"},null,512),[[w,n(F)]])],512)])),_:1},8,["style","show"]))}});export{T as default};
@@ -1 +1 @@
1
- import{defineComponent as e,useAttrs as t,ref as n,computed as s,watch as o,openBlock as i,createBlock as a,unref as r,withCtx as l,createVNode as c,createElementBlock as u,createElementVNode as m,toDisplayString as p,createCommentVNode as d,Fragment as f,withKeys as v,nextTick as g}from"vue";import{NDrawer as _,NDrawerContent as h,NAvatar as y,NIcon as S,NButton as b,NUpload as k,NUploadTrigger as I,NInput as w,NSpace as C,NSwitch as j}from"naive-ui";import{ChevronForwardOutline as U,AddOutline as x,RemoveOutline as z,Pencil as G}from"@vicons/ionicons5";import{useState as K}from"../hooks/useState.js";import{useSession as R}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import{trim as A,isFunction as D}from"lodash-es";import"../utils/emoji.js";import F from"./PersonProfile.vue.js";import P from"./ChatAdd.vue.js";import{toppingSessionApi as B,groupUpdateApi as L}from"../api/index.js";const N={key:0,class:"chat-set-wrapper"},O={class:"item user-info"},q={class:"name"},E={class:"item"},H=m("span",{class:"label"},"群成员",-1),J={class:"item__right"},M=["onClick"],Q=m("span",{class:"label"},"群头像",-1),T={class:"item"},V=m("span",{class:"label"},"群名称",-1),W={class:"item__right"},X={class:"txt"},Y={class:"item"},Z=m("span",{class:"label"},"置顶聊天",-1);var $=e({__name:"ChatSet",setup(e){const $=t(),{state:ee}=K(),{setCurrentSessionItem:te,isGroupChat:ne}=R(ee),se=n(),oe=n(!1),ie=n(""),ae=s((()=>ee.currentGroupUser.map((e=>e.id))));async function re(e){try{await B({sessionKey:ee.currentSessionItem.sessionKey,id:ee.currentSessionItem.id,topping:e}),te({topping:e})}catch(e){console.log(e)}}async function le(){var e;ie.value=ee.currentSessionItem.name,oe.value=!0,await g(),null==(e=se.value)||e.select()}async function ce(e){const t=new FormData,n=Object.assign({id:ee.currentSessionItem.receiver},e);for(const e in n)t.append(e,n[e]);await L(t)}async function ue(){oe.value=!1;const e=A(ie.value);e&&e!==ee.currentSessionItem.name&&(await ce({name:e}),te({name:e,defaultName:e}))}async function me(e){const{file:t}=e.file,n=new FileReader;n.onload=function(e){var t;(null==(t=e.target)?void 0:t.result)&&te({avatar:e.target.result})},n.readAsDataURL(e.file.file),await ce({file:t})}function pe(){D($["onUpdate:show"])&&$["onUpdate:show"](!1)}return o((()=>ee.id),(e=>{e||pe()})),(e,t)=>(i(),a(r(_),{width:320,"trap-focus":!1,"block-scroll":!1,to:".iho-chat"},{default:l((()=>[c(r(h),{title:r(ne)?"群设置":"聊天设置"},{default:l((()=>[r(ee).id?(i(),u("div",N,[c(F,{"user-id":r(ee).currentSessionItem.receiver,onClose:pe,disabled:!!r(ne),placement:"bottom-end"},{trigger:l((()=>[m("div",O,[c(r(y),{round:"",size:40,src:r(ee).currentSessionItem.avatar},null,8,["src"]),m("span",q,p(r(ee).currentSessionItem.name),1),r(ne)?d("v-if",!0):(i(),a(r(S),{key:0,size:24,component:r(U),class:"item__right"},null,8,["component"]))])])),_:1},8,["user-id","disabled"]),r(ne)?(i(),u(f,{key:0},[m("div",E,[H,m("div",J,[c(P,{mode:"join",disabledIds:r(ae)},{trigger:l((()=>[c(r(b),{strong:"",secondary:"",circle:""},{icon:l((()=>[c(r(S),{component:r(x)},null,8,["component"])])),_:1})])),_:1},8,["disabledIds"]),c(P,{title:"移除成员",mode:"remove",options:r(ee).currentGroupUser},{trigger:l((()=>[c(r(b),{strong:"",secondary:"",circle:""},{icon:l((()=>[c(r(S),{component:r(z)},null,8,["component"])])),_:1})])),_:1},8,["options"])])]),c(r(k),{abstract:"",multiple:"",accept:"image/*",onChange:me},{default:l((()=>[c(r(I),{abstract:""},{default:l((({handleClick:e})=>[m("div",{class:"item",onClick:e},[Q,c(r(S),{size:20,component:r(U),class:"item__right"},null,8,["component"])],8,M)])),_:1})])),_:1}),m("div",T,[V,m("div",W,[oe.value?(i(),a(r(w),{key:0,ref_key:"inputRef",ref:se,value:ie.value,"onUpdate:value":t[0]||(t[0]=e=>ie.value=e),onBlur:ue,onKeydown:t[1]||(t[1]=v((e=>e.target.blur()),["enter"]))},null,8,["value"])):(i(),a(r(C),{key:1,"wrap-item":!1,onClick:le,align:"center"},{default:l((()=>[m("span",X,p(r(ee).currentSessionItem.name),1),c(r(b),{text:"",style:{"font-size":"14px","--n-text-color":"#999"}},{default:l((()=>[c(r(S),{component:r(G)},null,8,["component"])])),_:1})])),_:1}))])])],64)):d("v-if",!0),m("div",Y,[Z,c(r(j),{value:r(ee).currentSessionItem.topping,"onUpdate:value":[t[2]||(t[2]=e=>r(ee).currentSessionItem.topping=e),re],class:"item__right"},null,8,["value"])])])):d("v-if",!0)])),_:1},8,["title"])])),_:1}))}});export{$ as default};
1
+ import{defineComponent as e,useAttrs as t,ref as n,computed as s,watch as o,openBlock as i,createBlock as a,unref as r,withCtx as l,createVNode as c,createElementBlock as u,createElementVNode as m,toDisplayString as p,createCommentVNode as d,Fragment as f,withKeys as v,nextTick as g}from"vue";import{NDrawer as _,NDrawerContent as h,NAvatar as y,NIcon as S,NButton as b,NUpload as k,NUploadTrigger as I,NInput as w,NSpace as j,NSwitch as C}from"naive-ui";import{ChevronForwardOutline as x,AddOutline as U,RemoveOutline as z,Pencil as G}from"@vicons/ionicons5";import{useState as K}from"../hooks/useState.js";import{useSession as R}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import{trim as A,isFunction as D}from"lodash-es";import"../utils/emoji.js";import"../../../../shared/utils/index.js";import F from"./PersonProfile.vue.js";import P from"./ChatAdd.vue.js";import{toppingSessionApi as B,groupUpdateApi as L}from"../api/index.js";const N={key:0,class:"chat-set-wrapper"},O={class:"item user-info"},q={class:"name"},E={class:"item"},H=m("span",{class:"label"},"群成员",-1),J={class:"item__right"},M=["onClick"],Q=m("span",{class:"label"},"群头像",-1),T={class:"item"},V=m("span",{class:"label"},"群名称",-1),W={class:"item__right"},X={class:"txt"},Y={class:"item"},Z=m("span",{class:"label"},"置顶聊天",-1);var $=e({__name:"ChatSet",setup(e){const $=t(),{state:ee}=K(),{setCurrentSessionItem:te,isGroupChat:ne}=R(ee),se=n(),oe=n(!1),ie=n(""),ae=s((()=>ee.currentGroupUser.map((e=>e.id))));async function re(e){try{await B({sessionKey:ee.currentSessionItem.sessionKey,id:ee.currentSessionItem.id,topping:e}),te({topping:e})}catch(e){console.log(e)}}async function le(){var e;ie.value=ee.currentSessionItem.name,oe.value=!0,await g(),null==(e=se.value)||e.select()}async function ce(e){const t=new FormData,n=Object.assign({id:ee.currentSessionItem.receiver},e);for(const e in n)t.append(e,n[e]);await L(t)}async function ue(){oe.value=!1;const e=A(ie.value);e&&e!==ee.currentSessionItem.name&&(await ce({name:e}),te({name:e,defaultName:e}))}async function me(e){const{file:t}=e.file,n=new FileReader;n.onload=function(e){var t;(null==(t=e.target)?void 0:t.result)&&te({avatar:e.target.result})},n.readAsDataURL(e.file.file),await ce({file:t})}function pe(){D($["onUpdate:show"])&&$["onUpdate:show"](!1)}return o((()=>ee.id),(e=>{e||pe()})),(e,t)=>(i(),a(r(_),{width:320,"trap-focus":!1,"block-scroll":!1,to:".iho-chat"},{default:l((()=>[c(r(h),{title:r(ne)?"群设置":"聊天设置"},{default:l((()=>[r(ee).id?(i(),u("div",N,[c(F,{"user-id":r(ee).currentSessionItem.receiver,onClose:pe,disabled:!!r(ne),placement:"bottom-end"},{trigger:l((()=>[m("div",O,[c(r(y),{round:"",size:40,src:r(ee).currentSessionItem.avatar},null,8,["src"]),m("span",q,p(r(ee).currentSessionItem.name),1),r(ne)?d("v-if",!0):(i(),a(r(S),{key:0,size:24,component:r(x),class:"item__right"},null,8,["component"]))])])),_:1},8,["user-id","disabled"]),r(ne)?(i(),u(f,{key:0},[m("div",E,[H,m("div",J,[c(P,{mode:"join",disabledIds:r(ae)},{trigger:l((()=>[c(r(b),{strong:"",secondary:"",circle:""},{icon:l((()=>[c(r(S),{component:r(U)},null,8,["component"])])),_:1})])),_:1},8,["disabledIds"]),c(P,{title:"移除成员",mode:"remove",options:r(ee).currentGroupUser},{trigger:l((()=>[c(r(b),{strong:"",secondary:"",circle:""},{icon:l((()=>[c(r(S),{component:r(z)},null,8,["component"])])),_:1})])),_:1},8,["options"])])]),c(r(k),{abstract:"",multiple:"",accept:"image/*",onChange:me},{default:l((()=>[c(r(I),{abstract:""},{default:l((({handleClick:e})=>[m("div",{class:"item",onClick:e},[Q,c(r(S),{size:20,component:r(x),class:"item__right"},null,8,["component"])],8,M)])),_:1})])),_:1}),m("div",T,[V,m("div",W,[oe.value?(i(),a(r(w),{key:0,ref_key:"inputRef",ref:se,value:ie.value,"onUpdate:value":t[0]||(t[0]=e=>ie.value=e),onBlur:ue,onKeydown:t[1]||(t[1]=v((e=>e.target.blur()),["enter"]))},null,8,["value"])):(i(),a(r(j),{key:1,"wrap-item":!1,onClick:le,align:"center"},{default:l((()=>[m("span",X,p(r(ee).currentSessionItem.name),1),c(r(b),{text:"",style:{"font-size":"14px","--n-text-color":"#999"}},{default:l((()=>[c(r(S),{component:r(G)},null,8,["component"])])),_:1})])),_:1}))])])],64)):d("v-if",!0),m("div",Y,[Z,c(r(C),{value:r(ee).currentSessionItem.topping,"onUpdate:value":[t[2]||(t[2]=e=>r(ee).currentSessionItem.topping=e),re],class:"item__right"},null,8,["value"])])])):d("v-if",!0)])),_:1},8,["title"])])),_:1}))}});export{$ as default};
@@ -1 +1 @@
1
- import{defineComponent as e,ref as o,computed as n,onBeforeUnmount as t,openBlock as s,createElementBlock as l,createElementVNode as i,withDirectives as a,toDisplayString as c,unref as r,vShow as d,createVNode as u,withCtx as m,Fragment as p,renderList as v,createCommentVNode as f,createTextVNode as g,nextTick as h}from"vue";import{NButton as I,NIcon as k}from"naive-ui";import A from"./ChatAdd.vue.js";import{Close as y,Mic as V,MicOff as b,Videocam as w,VideocamOff as _,Call as M,PersonAdd as R}from"@vicons/ionicons5";import{xorBy as x}from"lodash-es";import"date-fns";import{CHAT_TYPE as E,SUBSCRIBE_MESSAGE_TYPE as T}from"../constants/index.js";import"../utils/emoji.js";import"@vueuse/core";import{getUserDetailApi as C}from"../api/index.js";import{useVideo as S}from"../hooks/useVideo.js";import j from"trtc-sdk-v5";const $={class:"video-wrapper video-wrapper--multiple"},L={class:"video-header"},U={key:0,class:"video-main"},z={class:"video-main__left"},H=["data-name"],N={class:"video-bottom"},D={class:"btn-group"},O={class:"btn"},P=i("span",{class:"text"},"静音",-1),Y={class:"btn"},q=i("span",{class:"text"},"摄像头",-1),G=i("span",{class:"text"},"结束会诊",-1),B={class:"btn"},F=i("span",{class:"text"},"添加参会人",-1),J={class:"video-main__right"},K=["id","data-name"],Q={class:"user"},W={class:"name"},X={key:0,class:"tip"},Z={key:0,class:"calling-box"},ee={class:"btn-box"},oe={key:1,class:"opt-btn"},ne={class:"btn"},te=i("span",null,"拒接",-1),se={class:"btn"},le=i("span",null,"接听",-1);var ie=e({__name:"MultipleVideo",setup(e){const ie=o(),ae=o([]),{state:ce,sendMessage:re,trtc:de,voiceOpen:ue,isAudio:me,isCall:pe,startTimer:ve,resetTimer:fe,toggleAudio:ge,messageTypeText:he,timing:Ie,toggleVideo:ke,videocamOpen:Ae,installEventHandlers:ye,uninstallEventHandlers:Ve}=S(),be=o(!1),we=n((()=>pe.value?ce.userInfo.name:ce.currentAVMsg.sendName)),_e=n((()=>{if(!be.value)return"";const e=pe.value?`(${ae.value.length+1}/${ce.currentAVMsg.checkedIds.length+1})`:"";return`${we.value}发起的${he.value}会诊${e} ${Ie.value}`}));function Me(e){console.log("checkedIds :>> ",e),ce.currentAVMsg.checkedIds.push(...e),Re()}function Re(){var e;(null==(e=ce.currentAVMsg.checkedIds)?void 0:e.length)&&ce.currentAVMsg.checkedIds.forEach((e=>{re({chatType:E.SINGLE,content:{msg:ce.currentAVMsg.chatMessageType+","+ce.currentAVMsg.strRoomId,chatMessageType:T.AV_STATUS},receiver:e})})),be.value||xe()}async function xe(){const e=await j.isSupported();if(!e.result||!e.detail.isH264EncodeSupported||!e.detail.isH264DecodeSupported)return console.log("checkResult :>> ",e),void(ce.showMultipleVideo=!1);try{if(await de.enterRoom({strRoomId:ce.currentAVMsg.strRoomId,sdkAppId:parseInt(ce.userInfo.sdkAppID),userId:ce.userInfo.id,userSig:ce.userInfo.userSig}),be.value=!0,ve(),ye({handleError:Le,handleRemoteUserEnter:Se,handleRemoteAudioAvailable:Ce,handleRemoteUserExit:$e,handleRemoteVideoAvailable:Te}),await de.startLocalAudio(),me.value)return;await de.startLocalVideo({view:ie.value})}catch(e){console.log("error :>> ",e),ce.showMultipleVideo=!1}}async function Ee(){try{if(ce.showMultipleVideo=!1,Ve({handleError:Le,handleRemoteUserEnter:Se,handleRemoteAudioAvailable:Ce,handleRemoteUserExit:$e,handleRemoteVideoAvailable:Te}),await de.exitRoom(),await de.stopLocalAudio(),me.value)return;await de.stopLocalVideo()}catch(e){console.log("error :>> ",e)}}async function Te(e){const{userId:o,streamType:n}=e;try{n===j.TYPE.STREAM_TYPE_MAIN&&(await h(),await de.startRemoteVideo({userId:o,streamType:n,view:o}))}catch(e){console.log("error :>> ",e)}}async function Ce(e){var o;const{userId:n}=e;if(n&&!(null==(o=ae.value.map((e=>e.id)))?void 0:o.includes(n))){const e=await je(n);ae.value.push({id:n,name:e})}}async function Se(e){const{userId:o}=e,n=await je(o);ae.value.push({id:o,name:n}),ve()}async function je(e){const o=await C({userId:e});return(null==o?void 0:o.name)||""}function $e(e){console.log("event :>> 退房",e);const{userId:o}=e;ae.value=x(ae.value,[{id:o,name:""}],"id")}function Le(e){console.log("error :>> ",e),ce.showMultipleVideo=!1}return t((()=>{Ee()})),(e,o)=>(s(),l("div",$,[i("div",L,[a(i("span",{class:"title"},c(r(_e)),513),[[d,be.value]]),u(r(I),{quaternary:"",circle:"",color:"#ffffffcc",onClick:Ee},{icon:m((()=>[u(r(k),{component:r(y)},null,8,["component"])])),_:1})]),be.value?(s(),l("div",U,[i("div",z,[i("div",{ref_key:"selfVideoRef",ref:ie,class:"video-view","data-name":r(ce).userInfo.name},null,8,H),i("div",N,[i("div",D,[i("div",O,[u(r(I),{text:"",color:r(ue)?"#fff":"#000",onClick:r(ge)},{icon:m((()=>[u(r(k),{component:r(ue)?r(V):r(b)},null,8,["component"])])),_:1},8,["color","onClick"]),P]),i("div",Y,[u(r(I),{text:"",color:r(Ae)?"#fff":"#000",disabled:r(me),onClick:r(ke)},{icon:m((()=>[u(r(k),{component:r(Ae)?r(w):r(_)},null,8,["component"])])),_:1},8,["color","disabled","onClick"]),q]),i("div",{class:"btn",onClick:Ee},[u(r(I),{circle:"",color:"#f17568",class:"btn--rotate"},{icon:m((()=>[u(r(k),{component:r(M)},null,8,["component"])])),_:1}),G]),u(A,{onComfirm:Me},{trigger:m((()=>[i("div",B,[u(r(I),{text:"",color:"#fff"},{icon:m((()=>[u(r(k),{component:r(R)},null,8,["component"])])),_:1}),F])])),_:1})])])]),i("div",J,[(s(!0),l(p,null,v(ae.value,(e=>(s(),l("div",{key:e.id,id:e.id,class:"video-view","data-name":e.name},null,8,K)))),128))])])):(s(),l(p,{key:1},[i("div",Q,[i("span",W,c(r(we))+"发起的"+c(r(he))+"会议",1),r(pe)?f("v-if",!0):(s(),l("span",X,"邀请你加入"+c(r(he))+"会议",1))]),r(pe)?(s(),l("div",Z,[u(A,{onComfirm:Me,disabledIds:r(ce).currentAVMsg.checkedIds},{trigger:m((()=>[u(r(I),{size:"large",circle:"",color:"#000"},{icon:m((()=>[u(r(k),{component:r(R)},null,8,["component"])])),_:1})])),_:1},8,["disabledIds"]),i("p",null,"已邀请共"+c(r(ce).currentAVMsg.checkedIds.length)+"人",1),u(r(I),{size:"large",strong:"",round:"",type:"primary",onClick:Re},{default:m((()=>[g("开始会诊")])),_:1}),i("div",ee,[u(r(I),{color:"#000",round:""},{icon:m((()=>[u(r(k),{component:r(V)},null,8,["component"])])),_:1}),u(r(I),{color:"#000",round:""},{icon:m((()=>[u(r(k),{component:r(w)},null,8,["component"])])),_:1})])])):(s(),l("div",oe,[i("div",ne,[u(r(I),{circle:"",color:"#f17568",class:"btn--rotate",onClick:o[0]||(o[0]=()=>r(ce).showMultipleVideo=!1)},{icon:m((()=>[u(r(k),{size:"30",component:r(M)},null,8,["component"])])),_:1}),te]),i("div",se,[u(r(I),{circle:"",color:"#2ac98b",onClick:xe},{icon:m((()=>[u(r(k),{size:"30",component:r(M)},null,8,["component"])])),_:1}),le])]))],64))]))}});export{ie as default};
1
+ import{defineComponent as e,ref as o,computed as n,onBeforeUnmount as t,openBlock as s,createElementBlock as l,createElementVNode as i,withDirectives as a,toDisplayString as c,unref as r,vShow as d,createVNode as u,withCtx as m,Fragment as p,renderList as v,createCommentVNode as f,createTextVNode as g,nextTick as h}from"vue";import{NButton as I,NIcon as k}from"naive-ui";import A from"./ChatAdd.vue.js";import{Close as y,Mic as V,MicOff as b,Videocam as w,VideocamOff as _,Call as M,PersonAdd as x}from"@vicons/ionicons5";import{xorBy as R}from"lodash-es";import"date-fns";import{CHAT_TYPE as E,SUBSCRIBE_MESSAGE_TYPE as T}from"../constants/index.js";import"../utils/emoji.js";import"../../../../shared/utils/index.js";import"@vueuse/core";import{getUserDetailApi as C}from"../api/index.js";import{useVideo as S}from"../hooks/useVideo.js";import j from"trtc-sdk-v5";const $={class:"video-wrapper video-wrapper--multiple"},L={class:"video-header"},U={key:0,class:"video-main"},z={class:"video-main__left"},H=["data-name"],N={class:"video-bottom"},D={class:"btn-group"},O={class:"btn"},P=i("span",{class:"text"},"静音",-1),Y={class:"btn"},q=i("span",{class:"text"},"摄像头",-1),G=i("span",{class:"text"},"结束会诊",-1),B={class:"btn"},F=i("span",{class:"text"},"添加参会人",-1),J={class:"video-main__right"},K=["id","data-name"],Q={class:"user"},W={class:"name"},X={key:0,class:"tip"},Z={key:0,class:"calling-box"},ee={class:"btn-box"},oe={key:1,class:"opt-btn"},ne={class:"btn"},te=i("span",null,"拒接",-1),se={class:"btn"},le=i("span",null,"接听",-1);var ie=e({__name:"MultipleVideo",setup(e){const ie=o(),ae=o([]),{state:ce,sendMessage:re,trtc:de,voiceOpen:ue,isAudio:me,isCall:pe,startTimer:ve,resetTimer:fe,toggleAudio:ge,messageTypeText:he,timing:Ie,toggleVideo:ke,videocamOpen:Ae,installEventHandlers:ye,uninstallEventHandlers:Ve}=S(),be=o(!1),we=n((()=>pe.value?ce.userInfo.name:ce.currentAVMsg.sendName)),_e=n((()=>{if(!be.value)return"";const e=pe.value?`(${ae.value.length+1}/${ce.currentAVMsg.checkedIds.length+1})`:"";return`${we.value}发起的${he.value}会诊${e} ${Ie.value}`}));function Me(e){console.log("checkedIds :>> ",e),ce.currentAVMsg.checkedIds.push(...e),xe()}function xe(){var e;(null==(e=ce.currentAVMsg.checkedIds)?void 0:e.length)&&ce.currentAVMsg.checkedIds.forEach((e=>{re({chatType:E.SINGLE,content:{msg:ce.currentAVMsg.chatMessageType+","+ce.currentAVMsg.strRoomId,chatMessageType:T.AV_STATUS},receiver:e})})),be.value||Re()}async function Re(){const e=await j.isSupported();if(!e.result||!e.detail.isH264EncodeSupported||!e.detail.isH264DecodeSupported)return console.log("checkResult :>> ",e),void(ce.showMultipleVideo=!1);try{if(await de.enterRoom({strRoomId:ce.currentAVMsg.strRoomId,sdkAppId:parseInt(ce.userInfo.sdkAppID),userId:ce.userInfo.id,userSig:ce.userInfo.userSig}),be.value=!0,ve(),ye({handleError:Le,handleRemoteUserEnter:Se,handleRemoteAudioAvailable:Ce,handleRemoteUserExit:$e,handleRemoteVideoAvailable:Te}),await de.startLocalAudio(),me.value)return;await de.startLocalVideo({view:ie.value})}catch(e){console.log("error :>> ",e),ce.showMultipleVideo=!1}}async function Ee(){try{if(ce.showMultipleVideo=!1,Ve({handleError:Le,handleRemoteUserEnter:Se,handleRemoteAudioAvailable:Ce,handleRemoteUserExit:$e,handleRemoteVideoAvailable:Te}),await de.exitRoom(),await de.stopLocalAudio(),me.value)return;await de.stopLocalVideo()}catch(e){console.log("error :>> ",e)}}async function Te(e){const{userId:o,streamType:n}=e;try{n===j.TYPE.STREAM_TYPE_MAIN&&(await h(),await de.startRemoteVideo({userId:o,streamType:n,view:o}))}catch(e){console.log("error :>> ",e)}}async function Ce(e){var o;const{userId:n}=e;if(n&&!(null==(o=ae.value.map((e=>e.id)))?void 0:o.includes(n))){const e=await je(n);ae.value.push({id:n,name:e})}}async function Se(e){const{userId:o}=e,n=await je(o);ae.value.push({id:o,name:n}),ve()}async function je(e){const o=await C({userId:e});return(null==o?void 0:o.name)||""}function $e(e){console.log("event :>> 退房",e);const{userId:o}=e;ae.value=R(ae.value,[{id:o,name:""}],"id")}function Le(e){console.log("error :>> ",e),ce.showMultipleVideo=!1}return t((()=>{Ee()})),(e,o)=>(s(),l("div",$,[i("div",L,[a(i("span",{class:"title"},c(r(_e)),513),[[d,be.value]]),u(r(I),{quaternary:"",circle:"",color:"#ffffffcc",onClick:Ee},{icon:m((()=>[u(r(k),{component:r(y)},null,8,["component"])])),_:1})]),be.value?(s(),l("div",U,[i("div",z,[i("div",{ref_key:"selfVideoRef",ref:ie,class:"video-view","data-name":r(ce).userInfo.name},null,8,H),i("div",N,[i("div",D,[i("div",O,[u(r(I),{text:"",color:r(ue)?"#fff":"#000",onClick:r(ge)},{icon:m((()=>[u(r(k),{component:r(ue)?r(V):r(b)},null,8,["component"])])),_:1},8,["color","onClick"]),P]),i("div",Y,[u(r(I),{text:"",color:r(Ae)?"#fff":"#000",disabled:r(me),onClick:r(ke)},{icon:m((()=>[u(r(k),{component:r(Ae)?r(w):r(_)},null,8,["component"])])),_:1},8,["color","disabled","onClick"]),q]),i("div",{class:"btn",onClick:Ee},[u(r(I),{circle:"",color:"#f17568",class:"btn--rotate"},{icon:m((()=>[u(r(k),{component:r(M)},null,8,["component"])])),_:1}),G]),u(A,{onComfirm:Me},{trigger:m((()=>[i("div",B,[u(r(I),{text:"",color:"#fff"},{icon:m((()=>[u(r(k),{component:r(x)},null,8,["component"])])),_:1}),F])])),_:1})])])]),i("div",J,[(s(!0),l(p,null,v(ae.value,(e=>(s(),l("div",{key:e.id,id:e.id,class:"video-view","data-name":e.name},null,8,K)))),128))])])):(s(),l(p,{key:1},[i("div",Q,[i("span",W,c(r(we))+"发起的"+c(r(he))+"会议",1),r(pe)?f("v-if",!0):(s(),l("span",X,"邀请你加入"+c(r(he))+"会议",1))]),r(pe)?(s(),l("div",Z,[u(A,{onComfirm:Me,disabledIds:r(ce).currentAVMsg.checkedIds},{trigger:m((()=>[u(r(I),{size:"large",circle:"",color:"#000"},{icon:m((()=>[u(r(k),{component:r(x)},null,8,["component"])])),_:1})])),_:1},8,["disabledIds"]),i("p",null,"已邀请共"+c(r(ce).currentAVMsg.checkedIds.length)+"人",1),u(r(I),{size:"large",strong:"",round:"",type:"primary",onClick:xe},{default:m((()=>[g("开始会诊")])),_:1}),i("div",ee,[u(r(I),{color:"#000",round:""},{icon:m((()=>[u(r(k),{component:r(V)},null,8,["component"])])),_:1}),u(r(I),{color:"#000",round:""},{icon:m((()=>[u(r(k),{component:r(w)},null,8,["component"])])),_:1})])])):(s(),l("div",oe,[i("div",ne,[u(r(I),{circle:"",color:"#f17568",class:"btn--rotate",onClick:o[0]||(o[0]=()=>r(ce).showMultipleVideo=!1)},{icon:m((()=>[u(r(k),{size:"30",component:r(M)},null,8,["component"])])),_:1}),te]),i("div",se,[u(r(I),{circle:"",color:"#2ac98b",onClick:Re},{icon:m((()=>[u(r(k),{size:"30",component:r(M)},null,8,["component"])])),_:1}),le])]))],64))]))}});export{ie as default};
@@ -1 +1 @@
1
- import{defineComponent as t,ref as e,reactive as a,computed as l,openBlock as n,createBlock as o,unref as s,withCtx as r,renderSlot as i,createElementBlock as c,Fragment as u,withDirectives as p,createElementVNode as d,createVNode as m,createCommentVNode as v,toDisplayString as f,createTextVNode as g,renderList as k,vShow as y}from"vue";import{NPopover as h,NAvatar as b,NButton as w,NIcon as C}from"naive-ui";import{ChatbubbleEllipses as _,EyeOffOutline as I,EyeOutline as j,Close as z}from"@vicons/ionicons5";import{useState as x}from"../hooks/useState.js";import{useSession as N}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import"lodash-es";import"../utils/emoji.js";import{openSessionApi as S,getUserDetailApi as $}from"../api/index.js";const D={class:"person-profile-main"},P={class:"left"},T={class:"profile"},q={class:"profile__text"},B={class:"right"},E={class:"right__content"},O={class:"label"},U={class:"content"};var A=t({__name:"PersonProfile",props:{userId:{type:String,required:!0},disabled:{type:Boolean,default:!1}},emits:["close"],setup(t,{emit:A}){const F=t,{state:G}=x(),{openSession:H}=N(G),J=e(!1),K=e(!1),L=e(!1),M=a({}),Q=[{label:"机构",value:"",key:"orgName"},{label:"姓名",value:"",key:"name"},{label:"归属科室",value:"",key:"deptName"},{label:"业务科室",value:"",key:"businessDeptNames"},{label:"手机号",value:"",key:"phone"},{label:"岗位",value:"",key:"post"},{label:"工号",value:"",key:"jobId"},{label:"性别",value:"",key:"orgName"}],R=l((()=>(M.id&&Q.forEach((t=>{const{key:e}=t;t.value=M[e]})),Q)));async function V(){J.value=!1;const t=await S({chatType:G.currentSessionItem.chatType,receiver:F.userId,sender:G.userInfo.id});H(t),A("close")}async function W(t){if(!t)return;const e=await $({userId:F.userId});(null==e?void 0:e.id)?Object.assign(M,e):M.id=""}function X(t){const{key:e,value:a}=t;return"phone"!==e||L.value?a:(a||"").replace(/(\d{3})\d{4}(\d{4})/,"$1****$2")}return(e,a)=>(n(),o(s(h),{raw:"",class:"person-profile-wrapper",show:J.value,"onUpdate:show":[a[3]||(a[3]=t=>J.value=t),W],trigger:t.disabled?"manual":"click","show-arrow":!1,shift:""},{trigger:r((()=>[i(e.$slots,"trigger")])),default:r((()=>[M.id?(n(),c(u,{key:0},[p(d("div",D,[d("div",P,[d("div",T,[m(s(b),{src:M.avatar,bordered:"",round:"",size:100,onClickCapture:a[0]||(a[0]=t=>K.value=!0)},null,8,["src"]),v(' <n-upload abstract accept="image/*" @change="onChange">\n\t\t\t\t\t\t\t<n-upload-trigger #="{ handleClick }" abstract>\n\t\t\t\t\t\t\t\t<n-button\n\t\t\t\t\t\t\t\t\tcircle\n\t\t\t\t\t\t\t\t\tsecondary\n\t\t\t\t\t\t\t\t\tclass="edit-avatar"\n\t\t\t\t\t\t\t\t\tv-show="userDetail.id === state.userInfo.id"\n\t\t\t\t\t\t\t\t\t@click="handleClick"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t\t<n-icon size="16" color="#666666" :component="Camera" />\n\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t</n-button>\n\t\t\t\t\t\t\t</n-upload-trigger>\n\t\t\t\t\t\t</n-upload> '),d("div",q,[d("h4",null,f(M.name),1),d("p",null,f(M.orgName),1)]),m(s(w),{strong:"",secondary:"",onClick:V},{default:r((()=>[m(s(C),{size:"13",color:"#666666",component:s(_),style:{"margin-right":"6px"}},null,8,["component"]),g(" 发消息 ")])),_:1})])]),d("div",B,[d("div",E,[(n(!0),c(u,null,k(s(R),((t,e)=>(n(),c("div",{class:"info-item",key:e},[d("span",O,f(t.label),1),d("div",U,[d("span",null,f(X(t)),1),"phone"===t.key&&X(t)?(n(),o(s(C),{key:0,size:"16",color:"#666666",component:L.value?s(I):s(j),style:{"margin-left":"10px"},onClick:a[1]||(a[1]=t=>L.value=!L.value)},null,8,["component"])):v("v-if",!0)])])))),128))])])],512),[[y,!K.value]]),p(d("div",{class:"large-avatar",onClick:a[2]||(a[2]=t=>K.value=!1)},[m(s(w),{circle:"",size:"small",secondary:""},{icon:r((()=>[m(s(C),{size:24,component:s(z),color:"#fff"},null,8,["component"])])),_:1}),m(s(b),{size:310,round:"",src:M.avatar},null,8,["src"])],512),[[y,K.value]])],64)):v("v-if",!0)])),_:3},8,["show","trigger"]))}});export{A as default};
1
+ import{defineComponent as t,ref as e,reactive as a,computed as l,openBlock as n,createBlock as o,unref as r,withCtx as s,renderSlot as i,createElementBlock as c,Fragment as u,withDirectives as d,createElementVNode as p,createVNode as m,createCommentVNode as v,toDisplayString as f,createTextVNode as g,renderList as k,vShow as y}from"vue";import{NPopover as h,NAvatar as b,NButton as w,NIcon as C}from"naive-ui";import{ChatbubbleEllipses as _,EyeOffOutline as j,EyeOutline as I,Close as z}from"@vicons/ionicons5";import{useState as x}from"../hooks/useState.js";import{useSession as N}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import"lodash-es";import"../utils/emoji.js";import"../../../../shared/utils/index.js";import{openSessionApi as S,getUserDetailApi as $}from"../api/index.js";const D={class:"person-profile-main"},P={class:"left"},T={class:"profile"},q={class:"profile__text"},B={class:"right"},E={class:"right__content"},O={class:"label"},U={class:"content"};var A=t({__name:"PersonProfile",props:{userId:{type:String,required:!0},disabled:{type:Boolean,default:!1}},emits:["close"],setup(t,{emit:A}){const F=t,{state:G}=x(),{openSession:H}=N(G),J=e(!1),K=e(!1),L=e(!1),M=a({}),Q=[{label:"机构",value:"",key:"orgName"},{label:"姓名",value:"",key:"name"},{label:"归属科室",value:"",key:"deptName"},{label:"业务科室",value:"",key:"businessDeptNames"},{label:"手机号",value:"",key:"phone"},{label:"岗位",value:"",key:"post"},{label:"工号",value:"",key:"jobId"},{label:"性别",value:"",key:"orgName"}],R=l((()=>(M.id&&Q.forEach((t=>{const{key:e}=t;t.value=M[e]})),Q)));async function V(){J.value=!1;const t=await S({chatType:G.currentSessionItem.chatType,receiver:F.userId,sender:G.userInfo.id});H(t),A("close")}async function W(t){if(!t)return;const e=await $({userId:F.userId});(null==e?void 0:e.id)?Object.assign(M,e):M.id=""}function X(t){const{key:e,value:a}=t;return"phone"!==e||L.value?a:(a||"").replace(/(\d{3})\d{4}(\d{4})/,"$1****$2")}return(e,a)=>(n(),o(r(h),{raw:"",class:"person-profile-wrapper",show:J.value,"onUpdate:show":[a[3]||(a[3]=t=>J.value=t),W],trigger:t.disabled?"manual":"click","show-arrow":!1,shift:""},{trigger:s((()=>[i(e.$slots,"trigger")])),default:s((()=>[M.id?(n(),c(u,{key:0},[d(p("div",D,[p("div",P,[p("div",T,[m(r(b),{src:M.avatar,bordered:"",round:"",size:100,onClickCapture:a[0]||(a[0]=t=>K.value=!0)},null,8,["src"]),v(' <n-upload abstract accept="image/*" @change="onChange">\r\n\t\t\t\t\t\t\t<n-upload-trigger #="{ handleClick }" abstract>\r\n\t\t\t\t\t\t\t\t<n-button\r\n\t\t\t\t\t\t\t\t\tcircle\r\n\t\t\t\t\t\t\t\t\tsecondary\r\n\t\t\t\t\t\t\t\t\tclass="edit-avatar"\r\n\t\t\t\t\t\t\t\t\tv-show="userDetail.id === state.userInfo.id"\r\n\t\t\t\t\t\t\t\t\t@click="handleClick"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<template #icon>\r\n\t\t\t\t\t\t\t\t\t\t<n-icon size="16" color="#666666" :component="Camera" />\r\n\t\t\t\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t\t\t</n-button>\r\n\t\t\t\t\t\t\t</n-upload-trigger>\r\n\t\t\t\t\t\t</n-upload> '),p("div",q,[p("h4",null,f(M.name),1),p("p",null,f(M.orgName),1)]),m(r(w),{strong:"",secondary:"",onClick:V},{default:s((()=>[m(r(C),{size:"13",color:"#666666",component:r(_),style:{"margin-right":"6px"}},null,8,["component"]),g(" 发消息 ")])),_:1})])]),p("div",B,[p("div",E,[(n(!0),c(u,null,k(r(R),((t,e)=>(n(),c("div",{class:"info-item",key:e},[p("span",O,f(t.label),1),p("div",U,[p("span",null,f(X(t)),1),"phone"===t.key&&X(t)?(n(),o(r(C),{key:0,size:"16",color:"#666666",component:L.value?r(j):r(I),style:{"margin-left":"10px"},onClick:a[1]||(a[1]=t=>L.value=!L.value)},null,8,["component"])):v("v-if",!0)])])))),128))])])],512),[[y,!K.value]]),d(p("div",{class:"large-avatar",onClick:a[2]||(a[2]=t=>K.value=!1)},[m(r(w),{circle:"",size:"small",secondary:""},{icon:s((()=>[m(r(C),{size:24,component:r(z),color:"#fff"},null,8,["component"])])),_:1}),m(r(b),{size:310,round:"",src:M.avatar},null,8,["src"])],512),[[y,K.value]])],64)):v("v-if",!0)])),_:3},8,["show","trigger"]))}});export{A as default};
@@ -1 +1 @@
1
- import{defineComponent as e,ref as o,computed as n,watch as t,onBeforeUnmount as s,openBlock as r,createElementBlock as a,withDirectives as l,createElementVNode as i,vShow as c,createVNode as u,unref as d,toDisplayString as v,Fragment as m,normalizeClass as p,withCtx as f}from"vue";import{NAvatar as g,NButton as I,NIcon as h}from"naive-ui";import{Mic as A,MicOffCircle as y,Call as E}from"@vicons/ionicons5";import"lodash-es";import"date-fns";import{AV_STATUS as V,CHAT_TYPE as R}from"../constants/index.js";import"../utils/emoji.js";import"@vueuse/core";import{avFinishApi as w}from"../api/index.js";import{useVideo as k}from"../hooks/useVideo.js";import S from"trtc-sdk-v5";const M={class:"video-wrapper"},b={class:"user"},T={class:"name"},C={class:"tip"},_={class:"opt-btn"},x={class:"btn"},N=i("span",null,"静音",-1),L=i("span",null,"拒接",-1),D={class:"btn"},H=i("span",null,"挂断",-1),j=i("span",null,"接听",-1);var z=e({__name:"Video",setup(e){const{sendMessage:z,state:U,trtc:F,timing:O,voiceOpen:G,isAudio:J,isCall:P,startTimer:$,resetTimer:q,toggleAudio:B,messageTypeText:K,time:Q,installEventHandlers:W,uninstallEventHandlers:X}=k(),Y=o(),Z=o(),ee=o(!1);let oe=null;const ne=n((()=>{var e,o,n;return P.value?{avatar:U.currentSessionItem.avatar,name:U.currentSessionItem.name,userId:U.currentSessionItem.receiver}:{avatar:null==(e=U.currentAVMsg.currentMsg)?void 0:e.senderAvatar,name:null==(o=U.currentAVMsg.currentMsg)?void 0:o.senderName,userId:null==(n=U.currentAVMsg.currentMsg)?void 0:n.sender}})),te=n((()=>ee.value?J.value?O.value:"":P.value?"正在呼叫...":`邀请你${K.value}问诊...`)),se=n((()=>{var e,o;return null==(o=null==(e=U.currentAVMsg.currentMsg)?void 0:e.content)?void 0:o.avStatus}));async function re(e=V.FINISHED){z({chatType:R.SINGLE,content:{msg:e===V.FINISHED?""+Q.seconds:"s",chatMessageType:U.currentAVMsg.chatMessageType,avStatus:e},receiver:ne.value.userId}),await w({recordId:U.currentAVMsg.currentMsg.id,status:e,duration:e===V.FINISHED?Q.seconds:0})}async function ae(){const e=await S.isSupported();if(!e.result||!e.detail.isH264EncodeSupported||!e.detail.isH264DecodeSupported)return console.log("checkResult :>> ",e),void(U.showVideo=!1);try{if(await F.enterRoom({strRoomId:U.currentAVMsg.strRoomId,sdkAppId:parseInt(U.userInfo.sdkAppID),userId:U.userInfo.id,userSig:U.userInfo.userSig}),P.value||(ee.value=!0,$()),W({handleError:me,handleRemoteUserEnter:de,handleRemoteAudioAvailable:ue,handleRemoteUserExit:ve,handleRemoteVideoAvailable:ce}),await F.startLocalAudio(),J.value)return;await F.startLocalVideo({view:Z.value})}catch(e){console.log("error :>> ",e),U.showVideo=!1}}function le(){P.value&&!ee.value?re(V.CANCELED):re()}async function ie(){try{if(U.showVideo=!1,X({handleError:me,handleRemoteUserEnter:de,handleRemoteAudioAvailable:ue,handleRemoteUserExit:ve,handleRemoteVideoAvailable:ce}),await F.exitRoom(),await F.stopLocalAudio(),J.value)return;await F.stopLocalVideo()}catch(e){console.log("error :>> ",e)}}async function ce(e){const{userId:o,streamType:n}=e;try{await F.startRemoteVideo({userId:o,streamType:n,view:Y.value})}catch(e){console.log("error :>> ",e)}}function ue(e){}function de(){ee.value=!0,$()}function ve(e){console.log("event :>> 对方已挂断",e),ie()}function me(e){console.log("error :>> ",e),U.showVideo=!1}return t((()=>se.value),(e=>{U.showVideo&&(e===V.IN_CALL?async function(){P.value?ae():(oe&&clearTimeout(oe),oe=setTimeout((async()=>{ee.value||re(V.NO_RESPONSE)}),6e4))}():ie())}),{immediate:!0}),s((()=>{ie()})),(e,o)=>(r(),a("div",M,[l(i("div",{class:"video-box",ref_key:"videoRef",ref:Y},null,512),[[c,ee.value]]),l(i("div",{class:"video-box--self",ref_key:"selfVideoRef",ref:Z},null,512),[[c,ee.value]]),l(i("div",b,[u(d(g),{size:58,round:"",src:d(ne).avatar},null,8,["src"]),i("span",T,v(d(ne).name),1),i("span",C,v(d(te)),1)],512),[[c,d(J)||!ee.value]]),i("div",_,[i("div",x,[d(P)&&!ee.value||ee.value?(r(),a(m,{key:0},[u(d(I),{circle:"",onClick:d(B),class:p({bordered:d(G)})},{icon:f((()=>[u(d(h),{size:"30",color:d(G)?"#fff":"#626262",component:d(G)?d(A):d(y)},null,8,["color","component"])])),_:1},8,["onClick","class"]),N],64)):(r(),a(m,{key:1},[u(d(I),{circle:"",color:"#f17568",class:"btn--rotate",onClick:o[0]||(o[0]=()=>re(d(V).REJECTED))},{icon:f((()=>[u(d(h),{size:"30",component:d(E)},null,8,["component"])])),_:1}),L],64))]),i("div",D,[d(P)&&!ee.value||ee.value?(r(),a(m,{key:0},[u(d(I),{circle:"",color:"#f17568",class:"btn--rotate",onClick:le},{icon:f((()=>[u(d(h),{size:"30",component:d(E)},null,8,["component"])])),_:1}),H],64)):(r(),a(m,{key:1},[u(d(I),{circle:"",color:"#2ac98b",onClick:ae},{icon:f((()=>[u(d(h),{size:"30",component:d(E)},null,8,["component"])])),_:1}),j],64))])])]))}});export{z as default};
1
+ import{defineComponent as e,ref as o,computed as n,watch as t,onBeforeUnmount as s,openBlock as r,createElementBlock as a,withDirectives as l,createElementVNode as i,vShow as c,createVNode as u,unref as d,toDisplayString as v,Fragment as m,normalizeClass as p,withCtx as f}from"vue";import{NAvatar as g,NButton as I,NIcon as h}from"naive-ui";import{Mic as A,MicOffCircle as y,Call as E}from"@vicons/ionicons5";import"lodash-es";import"date-fns";import{AV_STATUS as V,CHAT_TYPE as R}from"../constants/index.js";import"../utils/emoji.js";import"../../../../shared/utils/index.js";import"@vueuse/core";import{avFinishApi as w}from"../api/index.js";import{useVideo as k}from"../hooks/useVideo.js";import S from"trtc-sdk-v5";const M={class:"video-wrapper"},b={class:"user"},T={class:"name"},x={class:"tip"},C={class:"opt-btn"},_={class:"btn"},N=i("span",null,"静音",-1),L=i("span",null,"拒接",-1),D={class:"btn"},H=i("span",null,"挂断",-1),j=i("span",null,"接听",-1);var z=e({__name:"Video",setup(e){const{sendMessage:z,state:U,trtc:F,timing:O,voiceOpen:G,isAudio:J,isCall:P,startTimer:$,resetTimer:q,toggleAudio:B,messageTypeText:K,time:Q,installEventHandlers:W,uninstallEventHandlers:X}=k(),Y=o(),Z=o(),ee=o(!1);let oe=null;const ne=n((()=>{var e,o,n;return P.value?{avatar:U.currentSessionItem.avatar,name:U.currentSessionItem.name,userId:U.currentSessionItem.receiver}:{avatar:null==(e=U.currentAVMsg.currentMsg)?void 0:e.senderAvatar,name:null==(o=U.currentAVMsg.currentMsg)?void 0:o.senderName,userId:null==(n=U.currentAVMsg.currentMsg)?void 0:n.sender}})),te=n((()=>ee.value?J.value?O.value:"":P.value?"正在呼叫...":`邀请你${K.value}问诊...`)),se=n((()=>{var e,o;return null==(o=null==(e=U.currentAVMsg.currentMsg)?void 0:e.content)?void 0:o.avStatus}));async function re(e=V.FINISHED){z({chatType:R.SINGLE,content:{msg:e===V.FINISHED?""+Q.seconds:"s",chatMessageType:U.currentAVMsg.chatMessageType,avStatus:e},receiver:ne.value.userId}),await w({recordId:U.currentAVMsg.currentMsg.id,status:e,duration:e===V.FINISHED?Q.seconds:0})}async function ae(){const e=await S.isSupported();if(!e.result||!e.detail.isH264EncodeSupported||!e.detail.isH264DecodeSupported)return console.log("checkResult :>> ",e),void(U.showVideo=!1);try{if(await F.enterRoom({strRoomId:U.currentAVMsg.strRoomId,sdkAppId:parseInt(U.userInfo.sdkAppID),userId:U.userInfo.id,userSig:U.userInfo.userSig}),P.value||(ee.value=!0,$()),W({handleError:me,handleRemoteUserEnter:de,handleRemoteAudioAvailable:ue,handleRemoteUserExit:ve,handleRemoteVideoAvailable:ce}),await F.startLocalAudio(),J.value)return;await F.startLocalVideo({view:Z.value})}catch(e){console.log("error :>> ",e),U.showVideo=!1}}function le(){P.value&&!ee.value?re(V.CANCELED):re()}async function ie(){try{if(U.showVideo=!1,X({handleError:me,handleRemoteUserEnter:de,handleRemoteAudioAvailable:ue,handleRemoteUserExit:ve,handleRemoteVideoAvailable:ce}),await F.exitRoom(),await F.stopLocalAudio(),J.value)return;await F.stopLocalVideo()}catch(e){console.log("error :>> ",e)}}async function ce(e){const{userId:o,streamType:n}=e;try{await F.startRemoteVideo({userId:o,streamType:n,view:Y.value})}catch(e){console.log("error :>> ",e)}}function ue(e){}function de(){ee.value=!0,$()}function ve(e){console.log("event :>> 对方已挂断",e),ie()}function me(e){console.log("error :>> ",e),U.showVideo=!1}return t((()=>se.value),(e=>{U.showVideo&&(e===V.IN_CALL?async function(){P.value?ae():(oe&&clearTimeout(oe),oe=setTimeout((async()=>{ee.value||re(V.NO_RESPONSE)}),6e4))}():ie())}),{immediate:!0}),s((()=>{ie()})),(e,o)=>(r(),a("div",M,[l(i("div",{class:"video-box",ref_key:"videoRef",ref:Y},null,512),[[c,ee.value]]),l(i("div",{class:"video-box--self",ref_key:"selfVideoRef",ref:Z},null,512),[[c,ee.value]]),l(i("div",b,[u(d(g),{size:58,round:"",src:d(ne).avatar},null,8,["src"]),i("span",T,v(d(ne).name),1),i("span",x,v(d(te)),1)],512),[[c,d(J)||!ee.value]]),i("div",C,[i("div",_,[d(P)&&!ee.value||ee.value?(r(),a(m,{key:0},[u(d(I),{circle:"",onClick:d(B),class:p({bordered:d(G)})},{icon:f((()=>[u(d(h),{size:"30",color:d(G)?"#fff":"#626262",component:d(G)?d(A):d(y)},null,8,["color","component"])])),_:1},8,["onClick","class"]),N],64)):(r(),a(m,{key:1},[u(d(I),{circle:"",color:"#f17568",class:"btn--rotate",onClick:o[0]||(o[0]=()=>re(d(V).REJECTED))},{icon:f((()=>[u(d(h),{size:"30",component:d(E)},null,8,["component"])])),_:1}),L],64))]),i("div",D,[d(P)&&!ee.value||ee.value?(r(),a(m,{key:0},[u(d(I),{circle:"",color:"#f17568",class:"btn--rotate",onClick:le},{icon:f((()=>[u(d(h),{size:"30",component:d(E)},null,8,["component"])])),_:1}),H],64)):(r(),a(m,{key:1},[u(d(I),{circle:"",color:"#2ac98b",onClick:ae},{icon:f((()=>[u(d(h),{size:"30",component:d(E)},null,8,["component"])])),_:1}),j],64))])])]))}});export{z as default};
@@ -1 +1 @@
1
- import{ref as e}from"vue";import{isArray as o}from"lodash-es";import{listUserApi as r}from"../api/index.js";import{useDebounceFn as t}from"@vueuse/core";import{useScrollLoading as a}from"./useScrollLoading.js";import{useState as s}from"./useState.js";import"date-fns";import"../utils/emoji.js";import"trtc-sdk-v5";function i({wrapperRef:i,keywordRef:n,before:p,after:u}){const l={page:0,hasMore:!0},{state:c}=s(),f=e([]),g=t((function(){Object.assign(l,{page:0,hasMore:!0}),m()}),300);async function m(){const e=(n.value||"").replace(/^\s+|\s+$/g,"");if(!e)return void(p?p():f.value=[]);if(!l.hasMore)return;l.page++,1==l.page&&(f.value=[]);const t=await r({orgId:c.orgId,keyword:e,page:l.page,pageSize:10});o(t.records)&&f.value.length<=+t.total&&(f.value=l.page>1?f.value.concat(t.records):t.records,null==u||u(),f.value.length>=+t.total&&(l.hasMore=!1,console.log("没有更多消息了")))}return a(i,(()=>{m()})),{userList:f,handleInput:g}}export{i as useSearchUserList};
1
+ import{ref as e}from"vue";import{isArray as o}from"lodash-es";import{listUserApi as r}from"../api/index.js";import{useDebounceFn as t}from"@vueuse/core";import{useScrollLoading as a}from"./useScrollLoading.js";import{useState as s}from"./useState.js";import"date-fns";import"../utils/emoji.js";import"../../../../shared/utils/index.js";import"trtc-sdk-v5";function i({wrapperRef:i,keywordRef:n,before:p,after:u}){const l={page:0,hasMore:!0},{state:c}=s(),m=e([]),d=t((function(){Object.assign(l,{page:0,hasMore:!0}),f()}),300);async function f(){const e=(n.value||"").replace(/^\s+|\s+$/g,"");if(!e)return void(p?p():m.value=[]);if(!l.hasMore)return;l.page++,1==l.page&&(m.value=[]);const t=await r({orgId:c.orgId,keyword:e,page:l.page,pageSize:10});o(t.records)&&m.value.length<=+t.total&&(m.value=l.page>1?m.value.concat(t.records):t.records,null==u||u(),m.value.length>=+t.total&&(l.hasMore=!1,console.log("没有更多消息了")))}return a(i,(()=>{f()})),{userList:m,handleInput:d}}export{i as useSearchUserList};
@@ -1 +1 @@
1
- import{inject as e}from"vue";import{cloneDeep as t}from"lodash-es";import{formatTime as s,transformMessage as n,getFileSize as i}from"../utils/index.js";import{InjectionIChatState as m,InjectionIChatStompClient as o,InjectionIChatEmits as r}from"../types/index.js";import{MESSAGE_TYPE as c}from"../constants/index.js";import{useIntervalFn as a}from"@vueuse/core";function T(){const T=e(m),d=e(o),g=e(r),{pause:u,resume:p,isActive:l}=a((()=>{const e=t(T.msgList);e.some((e=>{const{sendTime:t}=e;return!(Date.now()-new Date(t).getTime()>=36e5)&&(e.__sendTime=s(t).recordTime,!0)})),T.msgList=e,f()||u()}),6e4,{immediate:!1});function f(){return!!T.msgList.length&&T.msgList.some((e=>Date.now()-new Date(e.sendTime).getTime()<36e5))}return{state:T,setMsgList:function(e=[]){u(),T.msgList=t(e).sort(((e,t)=>new Date(t.sendTime).getTime()-new Date(e.sendTime).getTime())),T.msgList.forEach((e=>{var t,m,o;Object.assign(e,{__time:s(e.sendTime).msgTime,__content:(o=e.content.chatMessageType,[c.TEXT,c.TEXT].includes(o)?n(null==(t=e.content)?void 0:t.msg):null==(m=e.content)?void 0:m.msg),__sendTime:s(e.sendTime).recordTime}),e.content.chatMessageType!==c.FILE||e.__size||i(e.content.fileUrl).then((t=>{e.__size=t}))})),f()&&p()},stompClient:d,emit:g,sendMessage:async function(e){try{d.value.send("/app/chat/send",{},JSON.stringify({chatType:T.currentSessionItem.chatType,receiver:T.currentSessionItem.receiver,...e}))}catch(e){console.log("error :>> ",e)}}}}export{T as useState};
1
+ import{inject as e}from"vue";import{cloneDeep as t}from"lodash-es";import{formatTime as s,transformMessage as n,getFileSize as i}from"../utils/index.js";import{InjectionIChatState as m,InjectionIChatStompClient as o,InjectionIChatEmits as r}from"../types/index.js";import{MESSAGE_TYPE as c}from"../constants/index.js";import{useIntervalFn as a}from"@vueuse/core";function T(){const T=e(m),d=e(o),g=e(r),{pause:u,resume:p,isActive:f}=a((()=>{const e=t(T.msgList);e.some((e=>{const{sendTime:t}=e;return!(Date.now()-new Date(t).getTime()>=36e5)&&(e.__sendTime=s(t).recordTime,!0)})),T.msgList=e,l()||u()}),6e4,{immediate:!1});function l(){return!!T.msgList.length&&T.msgList.some((e=>Date.now()-new Date(e.sendTime).getTime()<36e5))}return{state:T,setMsgList:function(e=[]){u(),T.msgList=t(e).sort(((e,t)=>new Date(t.sendTime).getTime()-new Date(e.sendTime).getTime())),T.msgList.forEach((e=>{var t,m;Object.assign(e,{__time:s(e.sendTime).msgTime,__content:(m=e.content.chatMessageType,[c.TEXT,c.TEXT,c.BLEND].includes(m)?n(e.content):null==(t=e.content)?void 0:t.msg),__sendTime:s(e.sendTime).recordTime}),e.content.chatMessageType!==c.FILE||e.__size||i(e.content.fileUrl).then((t=>{e.__size=t}))})),l()&&p()},stompClient:d,emit:g,sendMessage:async function(e){try{d.value.send("/app/chat/send",{},JSON.stringify({chatType:T.currentSessionItem.chatType,receiver:T.currentSessionItem.receiver,...e}))}catch(e){console.log("error :>> ",e)}}}}export{T as useState};
@@ -5,10 +5,11 @@ export declare function formatTime(dateStr: string): {
5
5
  recordTime: string;
6
6
  };
7
7
  export declare function listSort(list: AnyObject[]): AnyObject[];
8
- export declare function transformMessage(content: string): string;
8
+ export declare function transformMessage(content: AnyObject): any;
9
9
  export declare function getAVTime(msg: string): string;
10
10
  export declare function simplifyMessage(lastMessage: AnyObject): any;
11
11
  export declare function downloadFile(url: string, filename: string): void;
12
12
  export declare function getFileSize(url: string): Promise<unknown>;
13
+ export declare function base64ToFile(base64: string): File | undefined;
13
14
  export declare function isAudioOrVideoMessage(message: AnyObject): boolean;
14
15
  export declare function formatSeconds(seconds: number): string;
@@ -1 +1 @@
1
- import{isToday as e,format as t,isYesterday as n,startOfDay as r}from"date-fns";import{cloneDeep as o,isNumber as s,isNaN as a}from"lodash-es";import{MESSAGE_TYPE as i}from"../constants/index.js";import{emojis as c}from"./emoji.js";function u(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 l(e){return o(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 m(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 p(e){if(e&&s(+e)&&!a(+e)){const t=w(+e),n=t.split(":");let r=t;return 3===n.length&&"00"===n[0]&&(r=`${n[1]}:${n[2]}`),"通话时长 "+r}return"已取消"}function d(e){var t;if(!e)return"";const{chatMessageType:n,msg:r,messageTemplate:o}=e,s=H(e)?p(r):"";switch(n){case i.TEXT:return m(r);case i.IMAGE:return"[图片]";case i.FILE:return"[文件]";case i.EMOJI:return`<img alt=${r} src=${c.findEmoji(r)}>`;case i.TEMPLATE:return null==(t=null==o?void 0:o.setting)?void 0:t.title;case i.VIDEO:return`[视频通话]${s}`;case i.AUDIO:return`[语音通话]${s}`;default:return"[消息]"}}function g(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 f(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 H(e){return e&&[i.AUDIO,i.VIDEO].includes(e.chatMessageType)}function w(e){const n=r(new Date);return n.setSeconds(e),t(n,"HH:mm:ss")}export{g as downloadFile,w as formatSeconds,u as formatTime,p as getAVTime,f as getFileSize,H as isAudioOrVideoMessage,l as listSort,d as simplifyMessage,m as transformMessage};
1
+ import{isToday as e,format as t,isYesterday as n,startOfDay as r}from"date-fns";import{cloneDeep as o,isNumber as s,isNaN as a,isArray as i}from"lodash-es";import{MESSAGE_TYPE as c}from"../constants/index.js";import{emojis as l}from"./emoji.js";import{uuidGenerator as u}from"../../../../shared/utils/index.js";function m(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 d(e){return o(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 p(e){if(!(null==e?void 0:e.msg))return"";const{chatMessageType:t="",msg:n=""}=e;let r=n.toString();if(t===c.BLEND){const e=r.match(/\[([^\]]+)\]/g);return null==e||e.forEach((e=>{const n=e.match(/\[([^\]]+)\]/);if(n&&n.length>1){const o=l.findEmoji(n[1]);o&&(r=r.replace(e,`<img data-msg=${n[1]} data-type=${t} style="width: 24px;" src=${o} />`))}})),r}const o=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 r=r.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(o(),"<$1 $2>").replace(o("/"),"</$1>").replace(/\n/g,"<br>"),r}function g(e){if(e&&s(+e)&&!a(+e)){const t=E(+e),n=t.split(":");let r=t;return 3===n.length&&"00"===n[0]&&(r=`${n[1]}:${n[2]}`),"通话时长 "+r}return"已取消"}function f(e){var t;if(!e)return"";const{chatMessageType:n,msg:r,messageTemplate:o}=e,s=y(e)?g(r):"";switch(n){case c.TEXT:return p(e);case c.IMAGE:return"[图片]";case c.FILE:return"[文件]";case c.EMOJI:return`<img alt=${r} src=${l.findEmoji(r)}>`;case c.TEMPLATE:return null==(t=null==o?void 0:o.setting)?void 0:t.title;case c.VIDEO:return`[视频通话]${s}`;case c.AUDIO:return`[语音通话]${s}`;default:return"[消息]"}}function h(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 w(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 H(e){const t=e.split(",");if(!i(t)||!t[0]||!t[1])return;const n=window.atob(t[1]);let r=n.length;const o=new Uint8Array(r);for(;r--;)o[r]=n.charCodeAt(r);return new File([o],u(),{type:"image/png"})}function y(e){return e&&[c.AUDIO,c.VIDEO].includes(e.chatMessageType)}function E(e){const n=r(new Date);return n.setSeconds(e),t(n,"HH:mm:ss")}export{H as base64ToFile,h as downloadFile,E as formatSeconds,m as formatTime,g as getAVTime,w as getFileSize,y as isAudioOrVideoMessage,d as listSort,f as simplifyMessage,p as transformMessage};
@@ -1 +1 @@
1
- import{defineComponent as e,reactive as o,ref as t,watch as a,nextTick as n,openBlock as s,createElementBlock as i,normalizeClass as l,unref as r,createCommentVNode as m,Fragment as c,createBlock as u,mergeProps as d,createElementVNode as p,normalizeStyle as f,createVNode as v,withCtx as g,renderList as h,toDisplayString as k,createTextVNode as y,resolveDynamicComponent as w,renderSlot as S}from"vue";import b from"./hooks/use-noData.js";import{ScaleViewProps as C}from"./hooks/scaleview-props.js";import{getScaleViewState as D}from"./hooks/scaleview-state.js";import{ScaleViewComputed as E}from"./hooks/scaleview-computed.js";import{ScaleViewInit as j}from"./hooks/scaleview-init.js";import{ScaleViewSubmit as _}from"./hooks/scaleview-submit.js";import{ScaleViewMethods as x}from"./hooks/scaleview-methods.js";import{handleQueryParams as F,isCollection as P}from"./utils/judge-types.js";import{useEvent as q}from"./hooks/use-event.js";import"xe-utils";import"moment";import L from"../../../shared/utils/vexutilsExpand.js";import N from"./components/NoData.vue.js";import R from"./components/EvaluateCountdown.vue.js";import A from"./components/EvaluatePage.vue.js";import M from"./components/AnswerParse.vue.js";import O from"./components/ScaleScore.js";import T from"./components/DescribeContent.vue.js";import{NForm as V,NFormItem as I,NButton as B}from"naive-ui";const J=["innerHTML"],G={key:0,class:"required-text"},W={key:1,class:"evalute-label"},H=["onClick"],Q=p("i",{class:"scale-view-iconfont icon-scale-view-dengpao"},null,-1),$={key:1,class:"footer"};var z=e({__name:"ScaleView",props:C,emits:["onCloseSetting","submitNoRequest","onSubmit","startWriteScale"],setup(e,{expose:C,emit:z}){const K=e,{ScaleViewState:U}=D(),X=o(U),Y=t(null),Z=t(null),ee=t(null),{noDataState:oe,setNoData:te,resetNodata:ae}=b(),ne=F(),{showEvatip:se,isFormBoldOpen:ie,scaleStyle:le,handlePageClass:re,isShowItem:me,handleShowQuestionNumber:ce,hasScore:ue,isPreviewScale:de,showEvaluateEntry:pe,showEvaluateCoundownPage:fe,showScaleFooter:ve,isCancelBtn:ge,isSaveBtn:he,showEvaluateLabel:ke,showAnswerParse:ye,propsConfig:we,evaluatePageProps:Se,evaluateCountdownProps:be,isEvaluetaResSituation:Ce,disableEdit:De,desStart:Ee,desEnd:je,desContent:_e}=E(K,X,{query:ne,scaleViewDom:Y}),{initForm:xe}=j(K,X,z,{query:ne}),{submitMethod:Fe,onSubmitData:Pe,onSubmitForm:qe,handleScoreJson:Le}=_(K,X,z,{query:ne,formRef:ee,countdownDom:Z}),{nextLogicEvent:Ne,handleDynamicDataRelation:Re}=q(K,X),{scaleChange:Ae,labelChange:Me,vodFileList:Oe,writeGuage:Te,closeEvaluateCountdown:Ve,showEvaTipModal:Ie}=x(K,X,z,{nextLogicEvent:Ne,handleDynamicDataRelation:Re,isPreviewScale:de,submitMethod:Fe,isEvaluetaResSituation:Ce,handleScoreJson:Le,disableEdit:De});(()=>{let{id:e}=ne;e&&(X.shareId=e)})();const Be=e=>{try{ae(),xe(e)}catch(e){console.log(e,"--error"),X.spinning=!1,X.hasFrontAddress=!1,te(!0,null==e?void 0:e.resultMsg,null==e?void 0:e.result)}};a((()=>K.ids),((e,o)=>{o?e.guage_id&&e.guage_id!=o.guage_id&&Be(e):e.guage_id&&Be(e)}),{immediate:!0}),a((()=>K.guageData),(e=>{if(!e||!Object.keys(e||{}).length)return;X.form={},X.formArray=[];const o=JSON.parse(JSON.stringify(e));n((()=>{xe(o)}))}),{immediate:!0});const Je=L.debounce(Pe,300),Ge=()=>{z("onCloseSetting")};return C({getScaleData:()=>({...X}),onSubmitForm:qe,cancel:Ge}),(e,o)=>(s(),i("div",{class:l(["c-scale-view-block",{"c-scale-view-block-hasfooter":r(ve)}]),ref_key:"scaleViewDom",ref:Y},[m(' <template v-if="state.spinning">\n <n-spin :show="state.spinning" description="加载中"></n-spin>\n </template> '),X.spinning||X.hasFrontAddress?m("v-if",!0):(s(),i(c,{key:0},[r(oe).noData?(s(),u(N,{key:0,noDataImg:r(oe).noDataImg,noDataTip:r(oe).noDataTip},null,8,["noDataImg","noDataTip"])):(s(),i(c,{key:1},[r(pe)?(s(),u(A,d({key:0},r(Se),{onWriteGuage:r(Te)}),null,16,["onWriteGuage"])):(s(),i(c,{key:1},[r(fe)?(s(),u(R,d({key:0,ref_key:"countdownDom",ref:Z},r(be),{onCloseEvaluateCountdown:r(Ve)}),null,16,["onCloseEvaluateCountdown"])):m("v-if",!0),p("div",{class:l(["scale-container",{"scale-container-nopadding":r(re),"scale-container-hasfooter":r(ve)}]),style:f(r(le))},[r(ue)?(s(),u(r(O),{key:0,config:X.config,maxScore:X.maxScore},null,8,["config","maxScore"])):m("v-if",!0),r(Ee)?(s(),u(T,{key:1,content:r(_e)},null,8,["content"])):m("v-if",!0),v(r(V),{ref_key:"formRef",ref:ee,model:X.form,rules:X.rules,"require-mark-placement":"left",class:"main"},{default:g((()=>[(s(!0),i(c,null,h(X.formArray,((e,o)=>(s(),i(c,{key:(e.id||e.seq)+o},[r(me)(e)?(s(),u(r(I),{key:0,path:e.val_key,"show-label":!r(P)(e.type),class:"c-scle-form-item"},{label:g((()=>[p("span",{class:l({"scale-label-required":r(ie)(e)}),innerHTML:r(ce)(e)},null,10,J),r(ie)(e)?(s(),i("span",G,"(必填)")):m("v-if",!0),r(ke)(e)?(s(),i("span",W,k(r(ke)(e)),1)):m("v-if",!0),r(se)(e)?(s(),i("span",{key:2,class:"evalute-tip",onClick:o=>r(Ie)(e)},[Q,y(" 查看提示 ")],8,H)):m("v-if",!0)])),default:g((()=>[(s(),u(w(e.renderCom),d(r(we)(e,o),{key:(e.id||e.seq)+o,onScaleChange:r(Ae),onOnChange:o=>r(Me)(o,e),onVodFileList:r(Oe)}),null,16,["onScaleChange","onOnChange","onVodFileList"])),r(ye)(e)?(s(),u(M,{key:0,item:e},null,8,["item"])):m("v-if",!0)])),_:2},1032,["path","show-label"])):m("v-if",!0)],64)))),128))])),_:1},8,["model","rules"]),r(je)?(s(),u(T,{key:2,content:r(_e)},null,8,["content"])):m("v-if",!0)],6),r(ve)?(s(),i("div",$,[m(" 分享的链接 隐藏取消按钮 "),r(ge)?(s(),u(r(B),{key:0,onClick:Ge},{default:g((()=>[y("取消")])),_:1})):m("v-if",!0),r(he)?(s(),u(r(B),{key:1,onClick:r(Je),disabled:X.banSubmit,type:"primary"},{default:g((()=>[y(" 保存 ")])),_:1},8,["onClick","disabled"])):m("v-if",!0),S(e.$slots,"extendBtn")])):m("v-if",!0)],64))],64))],64))],2))}});export{z as default};
1
+ import{defineComponent as e,reactive as o,ref as t,watch as a,nextTick as n,openBlock as s,createElementBlock as i,normalizeClass as l,unref as r,createCommentVNode as m,Fragment as c,createBlock as u,mergeProps as d,createElementVNode as p,normalizeStyle as f,createVNode as v,withCtx as g,renderList as h,toDisplayString as k,createTextVNode as y,resolveDynamicComponent as w,renderSlot as S}from"vue";import b from"./hooks/use-noData.js";import{ScaleViewProps as C}from"./hooks/scaleview-props.js";import{getScaleViewState as D}from"./hooks/scaleview-state.js";import{ScaleViewComputed as E}from"./hooks/scaleview-computed.js";import{ScaleViewInit as j}from"./hooks/scaleview-init.js";import{ScaleViewSubmit as _}from"./hooks/scaleview-submit.js";import{ScaleViewMethods as x}from"./hooks/scaleview-methods.js";import{handleQueryParams as F,isCollection as P}from"./utils/judge-types.js";import{useEvent as q}from"./hooks/use-event.js";import"xe-utils";import"moment";import L from"../../../shared/utils/vexutilsExpand.js";import N from"./components/NoData.vue.js";import R from"./components/EvaluateCountdown.vue.js";import A from"./components/EvaluatePage.vue.js";import M from"./components/AnswerParse.vue.js";import O from"./components/ScaleScore.js";import T from"./components/DescribeContent.vue.js";import{NForm as V,NFormItem as I,NButton as B}from"naive-ui";const J=["innerHTML"],G={key:0,class:"required-text"},W={key:1,class:"evalute-label"},H=["onClick"],Q=p("i",{class:"scale-view-iconfont icon-scale-view-dengpao"},null,-1),$={key:1,class:"footer"};var z=e({__name:"ScaleView",props:C,emits:["onCloseSetting","submitNoRequest","onSubmit","startWriteScale"],setup(e,{expose:C,emit:z}){const K=e,{ScaleViewState:U}=D(),X=o(U),Y=t(null),Z=t(null),ee=t(null),{noDataState:oe,setNoData:te,resetNodata:ae}=b(),ne=F(),{showEvatip:se,isFormBoldOpen:ie,scaleStyle:le,handlePageClass:re,isShowItem:me,handleShowQuestionNumber:ce,hasScore:ue,isPreviewScale:de,showEvaluateEntry:pe,showEvaluateCoundownPage:fe,showScaleFooter:ve,isCancelBtn:ge,isSaveBtn:he,showEvaluateLabel:ke,showAnswerParse:ye,propsConfig:we,evaluatePageProps:Se,evaluateCountdownProps:be,isEvaluetaResSituation:Ce,disableEdit:De,desStart:Ee,desEnd:je,desContent:_e}=E(K,X,{query:ne,scaleViewDom:Y}),{initForm:xe}=j(K,X,z,{query:ne}),{submitMethod:Fe,onSubmitData:Pe,onSubmitForm:qe,handleScoreJson:Le}=_(K,X,z,{query:ne,formRef:ee,countdownDom:Z}),{nextLogicEvent:Ne,handleDynamicDataRelation:Re}=q(K,X),{scaleChange:Ae,labelChange:Me,vodFileList:Oe,writeGuage:Te,closeEvaluateCountdown:Ve,showEvaTipModal:Ie}=x(K,X,z,{nextLogicEvent:Ne,handleDynamicDataRelation:Re,isPreviewScale:de,submitMethod:Fe,isEvaluetaResSituation:Ce,handleScoreJson:Le,disableEdit:De});(()=>{let{id:e}=ne;e&&(X.shareId=e)})();const Be=e=>{try{ae(),xe(e)}catch(e){console.log(e,"--error"),X.spinning=!1,X.hasFrontAddress=!1,te(!0,null==e?void 0:e.resultMsg,null==e?void 0:e.result)}};a((()=>K.ids),((e,o)=>{o?e.guage_id&&e.guage_id!=o.guage_id&&Be(e):e.guage_id&&Be(e)}),{immediate:!0}),a((()=>K.guageData),(e=>{if(!e||!Object.keys(e||{}).length)return;X.form={},X.formArray=[];const o=JSON.parse(JSON.stringify(e));n((()=>{xe(o)}))}),{immediate:!0});const Je=L.debounce(Pe,300),Ge=()=>{z("onCloseSetting")};return C({getScaleData:()=>({...X}),onSubmitForm:qe,cancel:Ge}),(e,o)=>(s(),i("div",{class:l(["c-scale-view-block",{"c-scale-view-block-hasfooter":r(ve)}]),ref_key:"scaleViewDom",ref:Y},[m(' <template v-if="state.spinning">\r\n <n-spin :show="state.spinning" description="加载中"></n-spin>\r\n </template> '),X.spinning||X.hasFrontAddress?m("v-if",!0):(s(),i(c,{key:0},[r(oe).noData?(s(),u(N,{key:0,noDataImg:r(oe).noDataImg,noDataTip:r(oe).noDataTip},null,8,["noDataImg","noDataTip"])):(s(),i(c,{key:1},[r(pe)?(s(),u(A,d({key:0},r(Se),{onWriteGuage:r(Te)}),null,16,["onWriteGuage"])):(s(),i(c,{key:1},[r(fe)?(s(),u(R,d({key:0,ref_key:"countdownDom",ref:Z},r(be),{onCloseEvaluateCountdown:r(Ve)}),null,16,["onCloseEvaluateCountdown"])):m("v-if",!0),p("div",{class:l(["scale-container",{"scale-container-nopadding":r(re),"scale-container-hasfooter":r(ve)}]),style:f(r(le))},[r(ue)?(s(),u(r(O),{key:0,config:X.config,maxScore:X.maxScore},null,8,["config","maxScore"])):m("v-if",!0),r(Ee)?(s(),u(T,{key:1,content:r(_e)},null,8,["content"])):m("v-if",!0),v(r(V),{ref_key:"formRef",ref:ee,model:X.form,rules:X.rules,"require-mark-placement":"left",class:"main"},{default:g((()=>[(s(!0),i(c,null,h(X.formArray,((e,o)=>(s(),i(c,{key:(e.id||e.seq)+o},[r(me)(e)?(s(),u(r(I),{key:0,path:e.val_key,"show-label":!r(P)(e.type),class:"c-scle-form-item"},{label:g((()=>[p("span",{class:l({"scale-label-required":r(ie)(e)}),innerHTML:r(ce)(e)},null,10,J),r(ie)(e)?(s(),i("span",G,"(必填)")):m("v-if",!0),r(ke)(e)?(s(),i("span",W,k(r(ke)(e)),1)):m("v-if",!0),r(se)(e)?(s(),i("span",{key:2,class:"evalute-tip",onClick:o=>r(Ie)(e)},[Q,y(" 查看提示 ")],8,H)):m("v-if",!0)])),default:g((()=>[(s(),u(w(e.renderCom),d(r(we)(e,o),{key:(e.id||e.seq)+o,onScaleChange:r(Ae),onOnChange:o=>r(Me)(o,e),onVodFileList:r(Oe)}),null,16,["onScaleChange","onOnChange","onVodFileList"])),r(ye)(e)?(s(),u(M,{key:0,item:e},null,8,["item"])):m("v-if",!0)])),_:2},1032,["path","show-label"])):m("v-if",!0)],64)))),128))])),_:1},8,["model","rules"]),r(je)?(s(),u(T,{key:2,content:r(_e)},null,8,["content"])):m("v-if",!0)],6),r(ve)?(s(),i("div",$,[m(" 分享的链接 隐藏取消按钮 "),r(ge)?(s(),u(r(B),{key:0,onClick:Ge},{default:g((()=>[y("取消")])),_:1})):m("v-if",!0),r(he)?(s(),u(r(B),{key:1,onClick:r(Je),disabled:X.banSubmit,type:"primary"},{default:g((()=>[y(" 保存 ")])),_:1},8,["onClick","disabled"])):m("v-if",!0),S(e.$slots,"extendBtn")])):m("v-if",!0)],64))],64))],64))],2))}});export{z as default};
package/es/env.d.ts CHANGED
@@ -1,25 +1,25 @@
1
- /// <reference types="vite/client" />
2
-
3
- interface ImportMetaEnv {
4
- readonly VITE_APP_TYPE: string;
5
- // 更多环境变量...
6
- }
7
-
8
- interface ImportMeta {
9
- readonly env: ImportMetaEnv;
10
- }
11
-
12
- declare module '*.vue' {
13
- // @ts-ignore
14
- import type { App, defineComponent } from 'vue';
15
- // // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
16
- // // const component: DefineComponent<{}, {}, any>
17
- const component: ReturnType<typeof defineComponent> & {
18
- install(app: App): void;
19
- };
20
- // @ts-ignore
21
- export default component;
22
- }
23
-
24
- declare module '*.js';
25
-
1
+ /// <reference types="vite/client" />
2
+
3
+ interface ImportMetaEnv {
4
+ readonly VITE_APP_TYPE: string;
5
+ // 更多环境变量...
6
+ }
7
+
8
+ interface ImportMeta {
9
+ readonly env: ImportMetaEnv;
10
+ }
11
+
12
+ declare module '*.vue' {
13
+ // @ts-ignore
14
+ import type { App, defineComponent } from 'vue';
15
+ // // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
16
+ // // const component: DefineComponent<{}, {}, any>
17
+ const component: ReturnType<typeof defineComponent> & {
18
+ install(app: App): void;
19
+ };
20
+ // @ts-ignore
21
+ export default component;
22
+ }
23
+
24
+ declare module '*.js';
25
+
@@ -1 +1 @@
1
- var e="@cnhis-design-vue/shared",i="3.2.8-beta.1",s="index.ts",n={"naive-ui":"^2.30.0",vue:"^3.2.0"},a={"@vicons/ionicons5":"^0.12.0","lodash-es":"^4.17.21",moment:"^2.29.1","video.js":"^7.19.2","videojs-contrib-hls":"^5.15.0",viewerjs:"^1.10.5","xe-utils":"^3.5.4"},d={name:e,version:"3.2.8-beta.1",private:!0,main:"index.ts",peerDependencies:n,dependencies:a};export{d as default,a as dependencies,s as main,e as name,n as peerDependencies,i as version};
1
+ var e="@cnhis-design-vue/shared",i="3.2.8-beta.2",s="index.ts",n={"naive-ui":"^2.30.0",vue:"^3.2.0"},a={"@vicons/ionicons5":"^0.12.0","lodash-es":"^4.17.21",moment:"^2.29.1","video.js":"^7.19.2","videojs-contrib-hls":"^5.15.0",viewerjs:"^1.10.5","xe-utils":"^3.5.4"},d={name:e,version:"3.2.8-beta.2",private:!0,main:"index.ts",peerDependencies:n,dependencies:a};export{d as default,a as dependencies,s as main,e as name,n as peerDependencies,i as version};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cnhis-design-vue",
3
- "version": "3.2.8-beta.1",
3
+ "version": "3.2.8-beta.2",
4
4
  "license": "ISC",
5
5
  "module": "./es/components/index.js",
6
6
  "main": "./es/components/index.js",
@@ -72,5 +72,5 @@
72
72
  "iOS 7",
73
73
  "last 3 iOS versions"
74
74
  ],
75
- "gitHead": "03ace254b35a06f1ae3c32b5659601a52f45e392"
75
+ "gitHead": "4f4e3f2c7da803de9c9a0f6450b22ca9e037fdee"
76
76
  }