cnhis-design-vue 3.2.7-beta.13 → 3.2.7-beta.15

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 (79) hide show
  1. package/README.md +87 -87
  2. package/es/components/classification/index.d.ts +21 -6
  3. package/es/components/classification/src/components/search-filter/index.vue.d.ts +21 -6
  4. package/es/components/classification/src/components/set-classification/index.vue.d.ts +21 -6
  5. package/es/components/classification/src/components/table-modal/index.vue.d.ts +3 -0
  6. package/es/components/classification/src/index.vue.d.ts +21 -6
  7. package/es/components/fabric-chart/src/hooks/temperature/useCenter.js +1 -1
  8. package/es/components/field-set/src/FieldColor.vue.d.ts +2 -2
  9. package/es/components/field-set/src/FieldFilter.vue.d.ts +2 -2
  10. package/es/components/field-set/src/FieldSet.vue.d.ts +3 -3
  11. package/es/components/field-set/src/components/Row.vue.d.ts +2 -2
  12. package/es/components/iho-chat/index.d.ts +48 -29
  13. package/es/components/iho-chat/src/Index.vue.d.ts +48 -29
  14. package/es/components/iho-chat/src/Index.vue2.js +1 -1
  15. package/es/components/iho-chat/src/components/ChatAdd.vue.d.ts +10 -4
  16. package/es/components/iho-chat/src/components/ChatAdd.vue2.js +1 -1
  17. package/es/components/iho-chat/src/components/ChatFooter.vue.d.ts +10 -4
  18. package/es/components/iho-chat/src/components/ChatFooter.vue2.js +1 -1
  19. package/es/components/iho-chat/src/components/ChatHeader.vue.d.ts +10 -4
  20. package/es/components/iho-chat/src/components/ChatMain.vue2.js +1 -1
  21. package/es/components/iho-chat/src/components/ChatSearch.vue.d.ts +3 -10
  22. package/es/components/iho-chat/src/components/ChatSearch.vue2.js +1 -1
  23. package/es/components/iho-chat/src/components/MultipleVideo.vue.d.ts +27 -17
  24. package/es/components/iho-chat/src/components/MultipleVideo.vue2.js +1 -1
  25. package/es/components/iho-chat/src/hooks/useSearchUserList.d.ts +11 -0
  26. package/es/components/iho-chat/src/hooks/useSearchUserList.js +1 -0
  27. package/es/components/iho-chat/src/types/index.d.ts +0 -1
  28. package/es/components/iho-chat/style/index.css +1 -1
  29. package/es/components/index.css +1 -1
  30. package/es/components/scale-view/src/ScaleView.vue2.js +1 -1
  31. package/es/components/select-label/src/LabelFormContent.vue2.js +1 -1
  32. package/es/components/table-filter/src/components/classify-filter/ValueCfg.vue.d.ts +21 -6
  33. package/es/components/table-filter/src/components/classify-filter/components/SelectDynamic.vue.d.ts +37 -20
  34. package/es/components/table-filter/src/components/classify-filter/components/SelectDynamic.vue2.js +1 -1
  35. package/es/components/table-filter/src/components/classify-filter/components/index.d.ts +21 -6
  36. package/es/components/table-filter/src/components/classify-filter/index.vue.d.ts +21 -6
  37. package/es/components/table-filter/src/components/render-widget/components/SelectDynamic.vue.d.ts +33 -18
  38. package/es/components/table-filter/src/components/render-widget/components/SelectDynamic.vue2.js +1 -1
  39. package/es/components/table-filter/src/components/render-widget/components/SelectDynamicOption/index.vue.d.ts +13 -0
  40. package/es/components/table-filter/src/components/render-widget/components/SelectDynamicOption/index.vue2.js +1 -1
  41. package/es/components/table-filter/src/components/render-widget/components/index.d.ts +17 -4
  42. package/es/components/table-filter/src/components/render-widget/widgetCfgMaps.d.ts +17 -4
  43. package/es/env.d.ts +25 -25
  44. package/es/shared/assets/img/defaultCover/10review_successful.png.js +1 -1
  45. package/es/shared/assets/img/defaultCover/11review_fail.png.js +1 -1
  46. package/es/shared/assets/img/defaultCover/12no_setting.png.js +1 -1
  47. package/es/shared/assets/img/defaultCover/13no_menu_setting.png.js +1 -1
  48. package/es/shared/assets/img/defaultCover/14no_call_setting.png.js +1 -1
  49. package/es/shared/assets/img/defaultCover/15no_use_tag.png.js +1 -1
  50. package/es/shared/assets/img/defaultCover/16no_table_data.png.js +1 -1
  51. package/es/shared/assets/img/defaultCover/1location.png.js +1 -1
  52. package/es/shared/assets/img/defaultCover/2notfound.png.js +1 -1
  53. package/es/shared/assets/img/defaultCover/3loading.png.js +1 -1
  54. package/es/shared/assets/img/defaultCover/4no_permission.png.js +1 -1
  55. package/es/shared/assets/img/defaultCover/5no_data.png.js +1 -1
  56. package/es/shared/assets/img/defaultCover/6no_network.png.js +1 -1
  57. package/es/shared/assets/img/defaultCover/7no_doctor.png.js +1 -1
  58. package/es/shared/assets/img/defaultCover/8system_error.png.js +1 -1
  59. package/es/shared/assets/img/defaultCover/9system_upgrade.png.js +1 -1
  60. package/es/shared/assets/img/failure.png.js +1 -1
  61. package/es/shared/assets/img/no-permission.png.js +1 -1
  62. package/es/shared/assets/img/nodata.png.js +1 -1
  63. package/es/shared/assets/img/notfound.png.js +1 -1
  64. package/es/shared/assets/img/qr.png.js +1 -1
  65. package/es/shared/assets/img/success.png.js +1 -1
  66. package/es/shared/assets/img/table_style_2.png.js +1 -1
  67. package/es/shared/assets/img/video.png.js +1 -1
  68. package/es/shared/assets/img/video_default_cover.png.js +1 -1
  69. package/es/shared/assets/img/xb_big.png.js +1 -1
  70. package/es/shared/assets/img/xb_small.png.js +1 -1
  71. package/es/shared/package.json.js +1 -1
  72. package/package.json +2 -2
  73. package/es/components/bpmn-workflow/src/BpmnWorkflow.d.ts +0 -0
  74. package/es/components/bpmn-workflow/types/BpmnViewer.d.ts +0 -1
  75. package/es/components/bpmn-workflow/types/ModelingModule.d.ts +0 -1
  76. package/es/components/bpmn-workflow/types/MoveCanvasModule.d.ts +0 -1
  77. package/es/shared/components/VueDraggable/src/vuedraggable.d.ts +0 -86
  78. package/es/shared/utils/fabricjs/index.d.ts +0 -6823
  79. package/es/shared/utils/tapable/index.d.ts +0 -139
@@ -1 +1 @@
1
- import{defineComponent as e,ref as s,reactive as o,provide as t,onBeforeUnmount as n,openBlock as r,createElementBlock as i,normalizeStyle as a,unref as c,createVNode as d,withCtx as u,createBlock as l,Fragment as p,createElementVNode as m,renderSlot as h,createCommentVNode as f}from"vue";import{NConfigProvider as g,NSpin as y,NLayout as v,NLayoutContent as S}from"naive-ui";import b from"./components/SiderList.vue.js";import I from"./components/ChatHeader.vue.js";import M from"./components/ChatMain.vue.js";import k from"./components/ChatFooter.vue.js";import T from"./components/ChatSearch.vue.js";import V from"./components/ChatAdd.vue.js";import j from"./components/Video.vue.js";import w from"./components/MultipleVideo.vue.js";import{ChatSock as L}from"./utils/chatSock.js";import{instanceAxios as N,listUserApi as U,readMessageApi as _}from"./api/index.js";import{useTheme as A}from"../../../shared/hooks/useTheme.js";import"@vueuse/core";import"date-fns";import{isArray as C,isNumber as O}from"lodash-es";import"@vue/shared";import"../../../shared/utils/index.js";import"@vueuse/shared";import"../../../shared/hooks/selectHooks/useSearchContent.js";import"@vicons/ionicons5";import{CHAT_TYPE as x,SUBSCRIBE_MESSAGE_TYPE as R,AV_STATUS as G}from"./constants/index.js";import{InjectionIChatState as K,InjectionIChatStompClient as E,InjectionIChatEmits as B}from"./types/index.js";import{isAudioOrVideoMessage as J}from"./utils/index.js";import{useSession as P}from"./hooks/useSession.js";import"trtc-sdk-v5";const $={key:0,class:"iho-chat__header"},q={class:"toolbar"};var z=e({__name:"Index",props:{token:{type:String,required:!0},orgId:{type:[String,Number],required:!0},userId:{type:String,required:!0},baseURL:{type:String,default:"/fdp-chat"},chatBox:{type:Boolean,default:!1},defaultSessionKey:{type:String}},emits:["template-click","unread-message-update"],setup(e,{expose:z,emit:F}){const H=e;N.defaults.baseURL=H.baseURL,N.defaults.headers.Authorization="bearer "+H.token;const D=A(),W=s(!1),Y=s(),Q=o({orgId:H.orgId,currentSessionItem:{},id:"",userInfo:{id:H.userId},msgList:[],currentMsg:{},isAppendMsg:!1,sessionList:[],isChangeSession:!1,updateSessionItem:{},isUpdateSession:!1,currentReferenceMsg:null,showVideo:!1,currentAVMsg:{},userList:[],currentGroupUser:[],showMultipleVideo:!1});t(K,Q),t(E,Y),t(B,F);const{openSession:X,closeSession:Z,getCurrentSession:ee,setSessionList:se,setUpdateSessionItem:oe,setCurrentSessionItem:te}=P(Q),ne=[];function re(){const e={headers:{AccessToken:H.token,UserId:H.userId},heartbeatFn(){try{Y.value.send("test")}catch(e){Y.value.disconnect(),re()}},connectCb(){console.log("连接成功"),Y.value.subscribe("/user/topic/single",(({body:e})=>ae({body:e,chatType:x.SINGLE}))),Y.value.subscribe("/app/sessionList",(({body:e})=>{try{const s=JSON.parse(e),{authentication:o,currentUser:t,sessionVos:n}=s;if(console.log("body",s),Object.assign(Q.userInfo,t,o),!(null==n?void 0:n.length))return;se(n),ne.splice(0,ne.length),ne.push(...n.filter((e=>e.chatType===x.GROUP))),ne.forEach((e=>{Y.value.subscribe(`/topic/group/${e.receiver}`,(({body:e})=>ae({body:e,chatType:x.GROUP})))})),function(){const e=Q.sessionList.find((e=>e.sessionKey===H.defaultSessionKey));e&&X(e)}()}catch(e){console.log(e)}}))},errorCb(e,s){console.log("断线了,正在重连...")}};Y.value=new L("/fdp-chat/websocket",e)}async function ie(e,s){if(Q.currentMsg=e,e.sessionKey===Q.currentSessionItem.sessionKey)return Q.isAppendMsg=!0,e.sender!==Q.userInfo.id&&await _({chatType:s,messageIdSet:[e.id],receiver:Q.userInfo.id,sender:e.sender}),void te({lastMessageSendTime:e.sendTime,lastMessage:e.content,sortTime:e.sendTime,unreadNum:0,lastSenderName:e.senderName});const o={lastMessageSendTime:e.sendTime,sortTime:e.sendTime,lastMessage:e.content,sessionKey:e.sessionKey,lastSenderName:e.senderName};oe(o)}async function ae({body:e,chatType:s}){try{console.log(JSON.parse(e),"订阅新增消息");const o=JSON.parse(e),{messageVo:t,sessionVo:n,chatAvStatusVo:r}=o;switch(o.event){case R.MESSAGE:J(t.content)?!Q.showVideo&&!Q.showMultipleVideo||t.content.avStatus!==G.IN_CALL?(Q.currentMsg=t,Object.assign(Q.currentAVMsg,{strRoomId:t.sessionKey,chatMessageType:t.content.chatMessageType,callMode:t.sender===Q.userInfo.id?"call":"invite",currentMsg:t}),Q.showVideo||Q.showMultipleVideo?ie(t,s):Q.showVideo=!0):(Y.value.send("/app/chat/send",{},JSON.stringify({chatType:x.SINGLE,receiver:t.sender,content:{chatMessageType:t.content.chatMessageType,avStatus:G.CALL_BUSY}})),console.log("用户忙!")):ie(t,s);break;case R.AV_STATUS:Object.assign(Q.currentAVMsg,r,{callMode:r.sender===Q.userInfo.id?"call":"invite",checkedIds:[]}),Q.showVideo||Q.showMultipleVideo?console.log("用户忙!"):Q.showMultipleVideo=!0;break;case R.NEW_SESSION:if(s===x.GROUP)return;oe(n);break;case R.JOIN:if(s===x.GROUP)return;oe(n),Y.value.subscribe(`/topic/group/${n.receiver}`,(({body:e})=>ae({body:e,chatType:x.GROUP})))}}catch(e){console.log(e)}}return async function(){re(),async function(){const e=await U({orgId:Q.orgId,keyword:"",page:1,pageSize:50});if(!C(e.records))return;Q.userList=e.records}()}(),n((()=>{var e;null==(e=Y.value)||e.disconnect()})),z({getUnreadData:function(){return Q.sessionList.filter((e=>O(e.unreadNum)&&e.unreadNum>0))},openSession:X,closeSession:Z,getCurrentSession:ee}),(s,o)=>(r(),i("div",{class:"iho-chat",style:a(c(D))},[d(c(g),{abstract:"",namespace:"iho-chat__popover"},{default:u((()=>[W.value?(r(),l(c(y),{key:0,stroke:"#5585f5"})):(r(),i(p,{key:1},[e.chatBox?f("v-if",!0):(r(),i("div",$,[d(T),d(V,{title:"发起群聊",mode:"create","default-value":[Q.userInfo]},null,8,["default-value"]),m("div",q,[h(s.$slots,"toolbar")])])),d(c(v),{class:"iho-chat__body","has-sider":""},{default:u((()=>[e.chatBox?f("v-if",!0):(r(),l(b,{key:0})),d(c(S),{class:"chat-content"},{default:u((()=>[d(I),d(M),d(k)])),_:1}),h(s.$slots,"external")])),_:3}),Q.showVideo?(r(),l(j,{key:1})):f("v-if",!0),Q.showMultipleVideo?(r(),l(w,{key:2})):f("v-if",!0)],64))])),_:3})],4))}});export{z as default};
1
+ import{defineComponent as e,ref as s,reactive as o,provide as t,onBeforeUnmount as n,openBlock as r,createElementBlock as i,normalizeStyle as a,unref as c,createVNode as d,withCtx as u,createBlock as l,Fragment as p,createElementVNode as m,renderSlot as h,createCommentVNode as f}from"vue";import{NConfigProvider as g,NSpin as y,NLayout as v,NLayoutContent as S}from"naive-ui";import b from"./components/SiderList.vue.js";import M from"./components/ChatHeader.vue.js";import I from"./components/ChatMain.vue.js";import k from"./components/ChatFooter.vue.js";import T from"./components/ChatSearch.vue.js";import V from"./components/ChatAdd.vue.js";import j from"./components/Video.vue.js";import N from"./components/MultipleVideo.vue.js";import{ChatSock as w}from"./utils/chatSock.js";import{instanceAxios as L,readMessageApi as U}from"./api/index.js";import{useTheme as _}from"../../../shared/hooks/useTheme.js";import"@vueuse/core";import"date-fns";import{isNumber as A}from"lodash-es";import"@vue/shared";import"../../../shared/utils/index.js";import"@vueuse/shared";import"../../../shared/hooks/selectHooks/useSearchContent.js";import"@vicons/ionicons5";import{CHAT_TYPE as C,SUBSCRIBE_MESSAGE_TYPE as O,AV_STATUS as x}from"./constants/index.js";import{InjectionIChatState as R,InjectionIChatStompClient as G,InjectionIChatEmits as K}from"./types/index.js";import{isAudioOrVideoMessage as E}from"./utils/index.js";import{useSession as B}from"./hooks/useSession.js";import"trtc-sdk-v5";const J={key:0,class:"iho-chat__header"},P={class:"toolbar"};var $=e({__name:"Index",props:{token:{type:String,required:!0},orgId:{type:[String,Number],required:!0},userId:{type:String,required:!0},baseURL:{type:String,default:"/fdp-chat"},chatBox:{type:Boolean,default:!1},defaultSessionKey:{type:String}},emits:["template-click","unread-message-update"],setup(e,{expose:$,emit:q}){const F=e;L.defaults.baseURL=F.baseURL,L.defaults.headers.Authorization="bearer "+F.token;const H=_(),z=s(!1),D=s(),W=o({orgId:F.orgId,currentSessionItem:{},id:"",userInfo:{id:F.userId},msgList:[],currentMsg:{},isAppendMsg:!1,sessionList:[],isChangeSession:!1,updateSessionItem:{},isUpdateSession:!1,currentReferenceMsg:null,showVideo:!1,currentAVMsg:{},currentGroupUser:[],showMultipleVideo:!1});t(R,W),t(G,D),t(K,q);const{openSession:Y,closeSession:Q,getCurrentSession:X,setSessionList:Z,setUpdateSessionItem:ee,setCurrentSessionItem:se}=B(W),oe=[];function te(){const e={headers:{AccessToken:F.token,UserId:F.userId},heartbeatFn(){try{D.value.send("test")}catch(e){D.value.disconnect(),te()}},connectCb(){console.log("连接成功"),D.value.subscribe("/user/topic/single",(({body:e})=>re({body:e,chatType:C.SINGLE}))),D.value.subscribe("/app/sessionList",(({body:e})=>{try{const s=JSON.parse(e),{authentication:o,currentUser:t,sessionVos:n}=s;if(console.log("body",s),Object.assign(W.userInfo,t,o),!(null==n?void 0:n.length))return;Z(n),oe.splice(0,oe.length),oe.push(...n.filter((e=>e.chatType===C.GROUP))),oe.forEach((e=>{D.value.subscribe(`/topic/group/${e.receiver}`,(({body:e})=>re({body:e,chatType:C.GROUP})))})),function(){const e=W.sessionList.find((e=>e.sessionKey===F.defaultSessionKey));e&&Y(e)}()}catch(e){console.log(e)}}))},errorCb(e,s){console.log("断线了,正在重连...")}};D.value=new w("/fdp-chat/websocket",e)}async function ne(e,s){if(W.currentMsg=e,e.sessionKey===W.currentSessionItem.sessionKey)return W.isAppendMsg=!0,e.sender!==W.userInfo.id&&await U({chatType:s,messageIdSet:[e.id],receiver:W.userInfo.id,sender:e.sender}),void se({lastMessageSendTime:e.sendTime,lastMessage:e.content,sortTime:e.sendTime,unreadNum:0,lastSenderName:e.senderName});const o={lastMessageSendTime:e.sendTime,sortTime:e.sendTime,lastMessage:e.content,sessionKey:e.sessionKey,lastSenderName:e.senderName};ee(o)}async function re({body:e,chatType:s}){try{console.log(JSON.parse(e),"订阅新增消息");const o=JSON.parse(e),{messageVo:t,sessionVo:n,chatAvStatusVo:r}=o;switch(o.event){case O.MESSAGE:E(t.content)?!W.showVideo&&!W.showMultipleVideo||t.content.avStatus!==x.IN_CALL?(W.currentMsg=t,Object.assign(W.currentAVMsg,{strRoomId:t.sessionKey,chatMessageType:t.content.chatMessageType,callMode:t.sender===W.userInfo.id?"call":"invite",currentMsg:t}),W.showVideo||W.showMultipleVideo?ne(t,s):W.showVideo=!0):(D.value.send("/app/chat/send",{},JSON.stringify({chatType:C.SINGLE,receiver:t.sender,content:{chatMessageType:t.content.chatMessageType,avStatus:x.CALL_BUSY}})),console.log("用户忙!")):ne(t,s);break;case O.AV_STATUS:Object.assign(W.currentAVMsg,r,{callMode:r.sender===W.userInfo.id?"call":"invite",checkedIds:[]}),W.showVideo||W.showMultipleVideo?console.log("用户忙!"):W.showMultipleVideo=!0;break;case O.NEW_SESSION:if(s===C.GROUP)return;ee(n);break;case O.JOIN:if(s===C.GROUP)return;ee(n),D.value.subscribe(`/topic/group/${n.receiver}`,(({body:e})=>re({body:e,chatType:C.GROUP})))}}catch(e){console.log(e)}}return async function(){te()}(),n((()=>{var e;null==(e=D.value)||e.disconnect()})),$({getUnreadData:function(){return W.sessionList.filter((e=>A(e.unreadNum)&&e.unreadNum>0))},openSession:Y,closeSession:Q,getCurrentSession:X}),(s,o)=>(r(),i("div",{class:"iho-chat",style:a(c(H))},[d(c(g),{abstract:"",namespace:"iho-chat__popover"},{default:u((()=>[z.value?(r(),l(c(y),{key:0,stroke:"#5585f5"})):(r(),i(p,{key:1},[e.chatBox?f("v-if",!0):(r(),i("div",J,[d(T),d(V,{title:"发起群聊",mode:"create","default-value":[W.userInfo]},null,8,["default-value"]),m("div",P,[h(s.$slots,"toolbar")])])),d(c(v),{class:"iho-chat__body","has-sider":""},{default:u((()=>[e.chatBox?f("v-if",!0):(r(),l(b,{key:0})),d(c(S),{class:"chat-content"},{default:u((()=>[d(M),d(I),d(k)])),_:1}),h(s.$slots,"external")])),_:3}),W.showVideo?(r(),l(j,{key:1})):f("v-if",!0),W.showMultipleVideo?(r(),l(N,{key:2})):f("v-if",!0)],64))])),_:3})],4))}});export{$ as default};
@@ -44,11 +44,15 @@ declare const _default: import("vue").DefineComponent<{
44
44
  }>>;
45
45
  emit: (event: "comfirm", ...args: any[]) => void;
46
46
  state: import("../types").IState;
47
+ listRef: import("vue").Ref<any>;
48
+ keyword: import("vue").Ref<any>;
47
49
  showModal: import("vue").Ref<boolean>;
48
50
  checkedOptions: import("vue").Ref<AnyObject[]>;
49
51
  options: import("vue").Ref<AnyObject[]>;
50
52
  groupName: import("vue").Ref<string>;
51
53
  checkedSourceIds: import("vue").Ref<(string | number)[]>;
54
+ userList: import("vue").Ref<AnyObject[]>;
55
+ handleInput: () => void;
52
56
  _disabledIds: import("vue").ComputedRef<any[]>;
53
57
  defaultOptions: import("vue").ComputedRef<{
54
58
  id: any;
@@ -59,21 +63,23 @@ declare const _default: import("vue").DefineComponent<{
59
63
  btnDisabled: import("vue").ComputedRef<boolean>;
60
64
  allChecked: import("vue").WritableComputedRef<boolean>;
61
65
  handlePositiveClick: () => Promise<void>;
62
- updateSourceIds: (value: (string | number)[], meta: {
66
+ updateCheckedSourceIds: () => void;
67
+ handleSourceIdsUpdate: (value: (string | number)[], meta: {
63
68
  actionType: 'check' | 'uncheck';
64
69
  value: string | number;
65
70
  }) => void;
66
- renderSourceLabel: ({ option }: {
67
- option: AnyObject;
68
- }) => JSX.Element;
69
71
  closeTag: (id: string) => void;
70
72
  renderTargetList: () => JSX.Element[] | null;
71
73
  NModal: any;
72
74
  NButton: any;
75
+ NSpace: any;
76
+ NAvatar: any;
73
77
  NIcon: any;
78
+ NTag: any;
74
79
  NInput: any;
75
80
  NCheckbox: any;
76
81
  NCheckboxGroup: any;
82
+ SearchOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
77
83
  AddOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
78
84
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "comfirm"[], "comfirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
79
85
  title: {
@@ -1 +1 @@
1
- import{defineComponent as e,ref as t,computed as a,watch as l,openBlock as i,createElementBlock as n,Fragment as o,createVNode as u,unref as r,withCtx as s,createElementVNode as d,createCommentVNode as v,isRef as c,renderList as p,createBlock as f,resolveDynamicComponent as m,toDisplayString as h,renderSlot as b}from"vue";import{NModal as g,NInput as I,NCheckbox as k,NCheckboxGroup as x,NButton as y,NIcon as _,NSpace as w,NAvatar as S,NTag as j}from"naive-ui";import{AddOutline as U}from"@vicons/ionicons5";import{useState as A}from"../hooks/useState.js";import{listSort as C}from"../utils/index.js";import{union as V,unionBy as L,remove as G,isArray as T,uniqBy as z,cloneDeep as D}from"lodash-es";import{CHAT_TYPE as E}from"../constants/index.js";import{groupJoinApi as M,groupCreateApi as N}from"../api/index.js";import"trtc-sdk-v5";const O={class:"iho-chat-dialog__content iho-chat-add-wrapper"},P={key:0,class:"input-box"},$=d("span",null,"群名称:",-1),q={class:"transfer-box"},B={class:"transfer-box__left"},F={class:"user-list-box"},H={class:"transfer-box__right"},J={class:"checked-tag-box"};var K=e({__name:"ChatAdd",props:{title:{type:String,default:"添加新成员"},mode:{type:String,default:"select"},options:{type:Array},disabledIds:{type:Array,default:()=>[]},defaultValue:{type:Array}},emits:["comfirm"],setup(e,{emit:K}){const Q=e,{state:R}=A(),W=t(!1),X=t([]),Y=t([]),Z=t(""),ee=t([]),te=a((()=>V(Q.disabledIds,[R.userInfo.id]))),ae=a((()=>{var e,t;return(null==(e=R.sessionList)?void 0:e.length)?null==(t=C(R.sessionList).filter((e=>e.chatType===E.SINGLE)))?void 0:t.map((e=>({id:e.receiver,name:e.name,avatar:e.avatar}))):[]})),le=a((()=>X.value.length?X.value.map((e=>e.id)):[])),ie=a((()=>"create"===Q.mode?le.value.length<3:le.value.length<1)),ne=a({get:()=>ee.value.length===Y.value.filter((e=>!e.disabled)).length,set(e){const t=Y.value.filter((e=>!e.disabled));ee.value=e?t.map((e=>e.id)):[],e?X.value=L(X.value,t,"id"):G(X.value,(e=>t.map((e=>e.id)).includes(e.id)))}});async function oe(){switch(Q.mode){case"create":await N({creator:R.userInfo.id,memberIdSet:le.value,name:Z.value,orgId:R.orgId});break;case"join":await M({groupId:R.currentSessionItem.receiver,operator:R.userInfo.id,memberIdSet:le.value}),R.currentGroupUser.push(Y.value.filter((e=>le.value.includes(e.value))));break;default:K("comfirm",le.value)}W.value=!1}function ue(e,t){if("check"===t.actionType){const e=Y.value.find((e=>e.id===t.value));X.value.push(e)}else G(X.value,(e=>e.id===t.value))}function re(){return X.value.length>0?X.value.map((e=>u(j,{bordered:!1,closable:e.id!==R.userInfo.id,disabled:te.value.includes(e.id),onClose:()=>{return t=e.id,G(X.value,(e=>e.id===t)),void G(ee.value,(e=>e===t));var t}},{avatar:()=>u(S,{round:!0,src:e.avatar},null),default:()=>e.name}))):null}return l((()=>W.value),(e=>{if(!e)return;const t=T(Q.options)&&Q.options.length?Q.options:ae.value;Y.value=z(t,"id").map((e=>{var t;return{...e,disabled:null==(t=te.value)?void 0:t.includes(e.id)}})),T(Q.defaultValue)&&Q.defaultValue.length?X.value=D(Q.defaultValue):X.value=[]})),(t,a)=>(i(),n(o,null,[u(r(g),{preset:"dialog",title:e.title,"show-icon":!1,"auto-focus":!1,class:"iho-chat-dialog",show:W.value,"onUpdate:show":a[3]||(a[3]=e=>W.value=e),"negative-text":"取消","positive-text":"确定","positive-button-props":{disabled:r(ie)},onPositiveClick:oe},{default:s((()=>[d("div",O,["create"===e.mode?(i(),n("div",P,[$,u(r(I),{clearable:"",placeholder:"取个群名称方便后续搜索",value:Z.value,"onUpdate:value":a[0]||(a[0]=e=>Z.value=e),valueModifiers:{trim:!0}},null,8,["value"])])):v("v-if",!0),d("div",q,[d("div",B,[v(' <n-input placeholder="搜索">\n\t\t\t\t\t\t<template #prefix>\n\t\t\t\t\t\t\t<n-icon :component="SearchOutline" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</n-input> '),d("div",F,[u(r(k),{label:"全选",checked:r(ne),"onUpdate:checked":a[1]||(a[1]=e=>c(ne)?ne.value=e:null)},null,8,["checked"]),u(r(x),{value:ee.value,"onUpdate:value":[a[2]||(a[2]=e=>ee.value=e),ue]},{default:s((()=>[(i(!0),n(o,null,p(Y.value,(e=>(i(),f(r(k),{key:e.id,value:e.id,disabled:e.disabled},{default:s((()=>[(i(),f(m((()=>function({option:e}){return u(w,{align:"center",wrapItem:!1},{default:()=>[u(S,{src:e.avatar,round:!0,size:32},null),u("span",null,[e.name])]})}({option:e})))))])),_:2},1032,["value","disabled"])))),128))])),_:1},8,["value"])])]),d("div",H,[d("span",null,"已选择 "+h(r(le).length)+" 人",1),d("div",J,[(i(),f(m((()=>re()))))])])])])])),_:1},8,["title","show","positive-button-props"]),d("span",{class:"btn-wrapper",onClick:a[4]||(a[4]=e=>W.value=!0)},[b(t.$slots,"trigger",{},(()=>[u(r(y),{color:"#ffffff4D",class:"add-btn"},{icon:s((()=>[u(r(_),{component:r(U),color:"#fff"},null,8,["component"])])),_:1})]))])],64))}});export{K as default};
1
+ import{defineComponent as e,ref as a,computed as l,watch as t,openBlock as i,createElementBlock as u,Fragment as o,createVNode as s,unref as r,withCtx as d,createElementVNode as n,createCommentVNode as v,isRef as c,renderList as p,createBlock as f,toDisplayString as m,createTextVNode as h,renderSlot as b}from"vue";import{NModal as g,NInput as k,NIcon as y,NCheckbox as _,NCheckboxGroup as I,NSpace as x,NAvatar as w,NTag as S,NButton as U}from"naive-ui";import{SearchOutline as j,AddOutline as C}from"@vicons/ionicons5";import{useState as L}from"../hooks/useState.js";import{listSort as A}from"../utils/index.js";import{cloneDeep as V,union as R,unionBy as E,remove as G,isArray as M,uniqBy as T}from"lodash-es";import{CHAT_TYPE as z}from"../constants/index.js";import{groupJoinApi as D,groupCreateApi as N}from"../api/index.js";import"trtc-sdk-v5";import{useSearchUserList as P}from"../hooks/useSearchUserList.js";const $={class:"iho-chat-dialog__content iho-chat-add-wrapper"},q={key:0,class:"input-box"},B=n("span",null,"群名称:",-1),F={class:"transfer-box"},H={class:"transfer-box__left"},J={class:"user-list-box"},K={key:1,class:"no-data"},O={class:"transfer-box__right"},Q={class:"checked-tag-box"};var W=e({__name:"ChatAdd",props:{title:{type:String,default:"添加新成员"},mode:{type:String,default:"select"},options:{type:Array},disabledIds:{type:Array,default:()=>[]},defaultValue:{type:Array}},emits:["comfirm"],setup(e,{emit:W}){const X=e,{state:Y}=L(),Z=a(),ee=a(),ae=a(!1),le=a([]),te=a([]),ie=a(""),ue=a([]),{userList:oe,handleInput:se}=P({wrapperRef:Z,keywordRef:ee,before:()=>{oe.value=V(te.value),fe()},after:()=>{oe.value.forEach((e=>{var a;e.disabled=null==(a=re.value)?void 0:a.includes(e.id)})),fe()}}),re=l((()=>R(X.disabledIds,[Y.userInfo.id]))),de=l((()=>{var e,a;return(null==(e=Y.sessionList)?void 0:e.length)?null==(a=A(Y.sessionList).filter((e=>e.chatType===z.SINGLE)))?void 0:a.map((e=>({id:e.receiver,name:e.name,avatar:e.avatar}))):[]})),ne=l((()=>le.value.length?le.value.map((e=>e.id)):[])),ve=l((()=>"create"===X.mode?ne.value.length<3:ne.value.length<1)),ce=l({get:()=>ue.value.length===oe.value.filter((e=>!e.disabled)).length,set(e){const a=oe.value.filter((e=>!e.disabled));ue.value=e?a.map((e=>e.id)):[],e?le.value=E(le.value,a,"id"):G(le.value,(e=>a.map((e=>e.id)).includes(e.id)))}});async function pe(){switch(X.mode){case"create":await N({creator:Y.userInfo.id,memberIdSet:ne.value,name:ie.value,orgId:Y.orgId});break;case"join":await D({groupId:Y.currentSessionItem.receiver,operator:Y.userInfo.id,memberIdSet:ne.value}),Y.currentGroupUser.push(oe.value.filter((e=>ne.value.includes(e.value))));break;default:W("comfirm",ne.value)}ae.value=!1}function fe(){var e,a;ue.value=null!=(a=null==(e=oe.value.filter((e=>ne.value.includes(e.id))))?void 0:e.map((e=>e.id)))?a:[]}function me(e,a){if("check"===a.actionType){const e=oe.value.find((e=>e.id===a.value));le.value.push(e)}else G(le.value,(e=>e.id===a.value))}return t((()=>ae.value),(e=>{if(!e)return;const a=M(X.options)&&X.options.length?X.options:de.value;te.value=T(a,"id").map((e=>{var a;return{...e,disabled:null==(a=re.value)?void 0:a.includes(e.id)}})),oe.value=V(te.value),M(X.defaultValue)&&X.defaultValue.length?(le.value=V(X.defaultValue),fe()):(le.value=[],ue.value=[])})),(a,l)=>(i(),u(o,null,[s(r(g),{preset:"dialog",title:e.title,"show-icon":!1,"auto-focus":!1,"trap-focus":!1,class:"iho-chat-dialog",show:ae.value,"onUpdate:show":l[4]||(l[4]=e=>ae.value=e),"negative-text":"取消","positive-text":"确定","positive-button-props":{disabled:r(ve)},onPositiveClick:pe},{default:d((()=>[n("div",$,["create"===e.mode?(i(),u("div",q,[B,s(r(k),{clearable:"",placeholder:"取个群名称方便后续搜索",value:ie.value,"onUpdate:value":l[0]||(l[0]=e=>ie.value=e),valueModifiers:{trim:!0}},null,8,["value"])])):v("v-if",!0),n("div",F,[n("div",H,[s(r(k),{placeholder:"搜索",clearable:"",value:ee.value,"onUpdate:value":[l[1]||(l[1]=e=>ee.value=e),r(se)],valueModifiers:{trim:!0}},{prefix:d((()=>[s(r(y),{component:r(j)},null,8,["component"])])),_:1},8,["value","onUpdate:value"]),n("div",J,[r(oe).length>0?(i(),u(o,{key:0},[s(r(_),{label:"全选",checked:r(ce),"onUpdate:checked":l[2]||(l[2]=e=>c(ce)?ce.value=e:null)},null,8,["checked"]),s(r(I),{ref_key:"listRef",ref:Z,value:ue.value,"onUpdate:value":[l[3]||(l[3]=e=>ue.value=e),me]},{default:d((()=>[(i(!0),u(o,null,p(r(oe),(e=>(i(),f(r(_),{key:e.id,value:e.id,disabled:e.disabled},{default:d((()=>[s(r(x),{align:"center","wrap-item":!1},{default:d((()=>[s(r(w),{src:e.avatar,round:"",size:32},null,8,["src"]),n("span",null,m(e.name),1)])),_:2},1024)])),_:2},1032,["value","disabled"])))),128))])),_:1},8,["value"])],64)):(i(),u("div",K,"找不到相关结果"))])]),n("div",O,[n("span",null,"已选择 "+m(r(ne).length)+" 人",1),n("div",Q,[(i(!0),u(o,null,p(le.value,(e=>(i(),f(r(S),{key:e.id,bordered:!1,closable:e.id!==r(Y).userInfo.id,disabled:r(re).includes(e.id),onClose:()=>{return a=e.id,G(le.value,(e=>e.id===a)),void G(ue.value,(e=>e===a));var a}},{avatar:d((()=>[s(r(w),{round:"",src:e.avatar},null,8,["src"])])),default:d((()=>[h(" "+m(e.name),1)])),_:2},1032,["closable","disabled","onClose"])))),128))])])])])])),_:1},8,["title","show","positive-button-props"]),n("span",{class:"btn-wrapper",onClick:l[5]||(l[5]=e=>ae.value=!0)},[b(a.$slots,"trigger",{},(()=>[s(r(U),{color:"#ffffff4D",class:"add-btn"},{icon:d((()=>[s(r(y),{component:r(C),color:"#fff"},null,8,["component"])])),_:1})]))])],64))}});export{W as default};
@@ -79,11 +79,15 @@ declare const _default: import("vue").DefineComponent<{}, {
79
79
  }>>;
80
80
  emit: (event: "comfirm", ...args: any[]) => void;
81
81
  state: import("../types").IState;
82
+ listRef: import("vue").Ref<any>;
83
+ keyword: import("vue").Ref<any>;
82
84
  showModal: import("vue").Ref<boolean>;
83
85
  checkedOptions: import("vue").Ref<AnyObject[]>;
84
86
  options: import("vue").Ref<AnyObject[]>;
85
87
  groupName: import("vue").Ref<string>;
86
88
  checkedSourceIds: import("vue").Ref<(string | number)[]>;
89
+ userList: import("vue").Ref<AnyObject[]>;
90
+ handleInput: () => void;
87
91
  _disabledIds: import("vue").ComputedRef<any[]>;
88
92
  defaultOptions: import("vue").ComputedRef<{
89
93
  id: any;
@@ -94,21 +98,23 @@ declare const _default: import("vue").DefineComponent<{}, {
94
98
  btnDisabled: import("vue").ComputedRef<boolean>;
95
99
  allChecked: import("vue").WritableComputedRef<boolean>;
96
100
  handlePositiveClick: () => Promise<void>;
97
- updateSourceIds: (value: (string | number)[], meta: {
101
+ updateCheckedSourceIds: () => void;
102
+ handleSourceIdsUpdate: (value: (string | number)[], meta: {
98
103
  actionType: "check" | "uncheck";
99
104
  value: string | number;
100
105
  }) => void;
101
- renderSourceLabel: ({ option }: {
102
- option: AnyObject;
103
- }) => JSX.Element;
104
106
  closeTag: (id: string) => void;
105
107
  renderTargetList: () => JSX.Element[] | null;
106
108
  NModal: any;
107
109
  NButton: any;
110
+ NSpace: any;
111
+ NAvatar: any;
108
112
  NIcon: any;
113
+ NTag: any;
109
114
  NInput: any;
110
115
  NCheckbox: any;
111
116
  NCheckboxGroup: any;
117
+ SearchOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
112
118
  AddOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
113
119
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "comfirm"[], "comfirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
114
120
  title: {
@@ -1 +1 @@
1
- import{defineComponent as e,ref as t,computed as n,watch as o,withDirectives as i,openBlock as s,createElementBlock as r,normalizeStyle as a,unref as c,createElementVNode as l,toDisplayString as u,createVNode as d,createCommentVNode as f,withCtx as m,Fragment as p,renderList as g,createBlock as y,createTextVNode as h,mergeProps as v,vShow as M}from"vue";import{NIcon as k,NPopover as C,NButton as _,NTooltip as x,NUpload as I,NUploadTrigger as b}from"naive-ui";import w from"./ChatAdd.vue.js";import{useState as T}from"../hooks/useState.js";import{useSession as z}from"../hooks/useSession.js";import{MESSAGE_TYPE as E,AV_STATUS as j}from"../constants/index.js";import"trtc-sdk-v5";import{simplifyMessage as R}from"../utils/index.js";import{emojis as q}from"../utils/emoji.js";import{uploadFileApi as L}from"../api/index.js";import{CloseCircleOutline as D,CallOutline as O,VideocamOutline as V}from"@vicons/ionicons5";import{xor as A,cloneDeep as F}from"lodash-es";import{uuidGenerator as K}from"../../../../shared/utils/index.js";const U={key:0,class:"reference-content-box"},S={class:"reference-content"},G=["innerHTML"],H={class:"tool-box"},N=l("i",{class:"chat--iconfont chat--icon-face"},null,-1),J={class:"emoji-box"},X=l("span",null,"默认表情",-1),B={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"},$=l("span",{class:"tip"},"Enter 发送, Shift + Enter 换行",-1);var ee=e({__name:"ChatFooter",setup(e){const ee=t(),te=t(""),{state:ne,sendMessage:oe}=T(),{isGroupChat:ie}=z(ne),se=t(!1),re=n((()=>({options:ne.currentGroupUser,defaultValue:[ne.userInfo]})));function ae(e,t=[]){const n=K(),o=[],i=t.length>0;ne.showVideo||ne.showMultipleVideo||(i?(o.push(...A(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 ce(e){["Enter"].includes(e.key)&&(function(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}(e)||(e.preventDefault(),de()))}function le(){var e,t;te.value=(null==(t=null==(e=ee.value)?void 0:e.innerText)?void 0:t.trim())||""}async function ue(e,t){const{file:n,name:o}=e.file,i=new FormData;i.append("sender",ne.userInfo.id),i.append("file",n);const s=await L(i);if(!s)return console.log("上传失败");fe({chatMessageType:t,msg:t===E.FILE?o:s,url:s})}function de(){if(!(te.value.length>2e3))return te.value?void fe({msg:te.value}):console.log("请输入内容");console.log("请控制在2000字以内")}async function fe(e){const{chatMessageType:t=E.TEXT,msg:n,url:o}=e,i={msg:n,chatMessageType:t};t===E.FILE&&(i.fileUrl=o),[E.TEXT,E.BLEND].includes(t)&&(ee.value.innerHTML="",te.value=""),ne.currentReferenceMsg&&(i.referenceContent=F(ne.currentReferenceMsg),ne.currentReferenceMsg=null),oe({content:i})}return o((()=>ne.currentReferenceMsg),(e=>{var t;e&&(null==(t=ee.value)||t.focus())})),(e,t)=>i((s(),r("section",{class:"chat-footer",style:a({cursor:c(ne).id?"default":"not-allowed"})},[c(ne).currentReferenceMsg?(s(),r("div",U,[l("div",S,[l("span",null,u(c(ne).currentReferenceMsg.senderName)+":",1),l("pre",{innerHTML:c(R)(c(ne).currentReferenceMsg.content)},null,8,G)]),d(c(k),{component:c(D),onClick:t[0]||(t[0]=()=>c(ne).currentReferenceMsg=null)},null,8,["component"])])):f("v-if",!0),l("div",H,[d(c(C),{show:se.value,"onUpdate:show":t[1]||(t[1]=e=>se.value=e),placement:"top",trigger:"click","show-arrow":!1,"display-directive":"show",delay:0},{trigger:m((()=>[d(c(_),{quaternary:"",size:"tiny"},{icon:m((()=>[N])),_:1})])),default:m((()=>[l("div",J,[f(' <span>最近使用</span>\n\t\t\t\t\t<div class="list-box">\n\t\t\t\t\t\t<template v-for="(img, index) in images" :key="index">\n\t\t\t\t\t\t\t<i>\n\t\t\t\t\t\t\t\t<img :src="img" />\n\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div> '),X,l("div",B,[(s(!0),r(p,null,g(c(q).default,(([e,t])=>(s(),y(c(x),{key:e,"show-arrow":!1,trigger:"hover"},{trigger:m((()=>[d(c(_),{quaternary:"",size:"tiny",onClick:()=>function(e){se.value=!1,fe({chatMessageType:E.EMOJI,msg:e})}(e)},{icon:m((()=>[l("img",{src:t},null,8,P)])),_:2},1032,["onClick"])])),default:m((()=>[h(" "+u(e),1)])),_:2},1024)))),128))])])])),_:1},8,["show"]),d(c(_),{quaternary:"",size:"tiny",onClick:t[2]||(t[2]=()=>fe({chatMessageType:c(E).EMOJI,msg:0}))},{icon:m((()=>[Q])),_:1}),d(c(I),{abstract:"",multiple:"",accept:"image/*",onChange:t[3]||(t[3]=e=>ue(e,c(E).IMAGE))},{default:m((()=>[d(c(b),{abstract:""},{default:m((({handleClick:e})=>[d(c(_),{quaternary:"",size:"tiny",onClick:e},{icon:m((()=>[W])),_:2},1032,["onClick"])])),_:1})])),_:1}),d(c(I),{abstract:"",multiple:"",accept:"video/*,.pdf,.doc.docx,,.zip,.xlsx,.txt",onChange:t[4]||(t[4]=e=>ue(e,c(E).FILE))},{default:m((()=>[d(c(b),{abstract:""},{default:m((({handleClick:e})=>[d(c(_),{quaternary:"",size:"tiny",onClick:e},{icon:m((()=>[Y])),_:2},1032,["onClick"])])),_:1})])),_:1}),c(ie)?(s(),r(p,{key:0},[d(w,v(c(re),{onComfirm:t[5]||(t[5]=e=>ae(c(E).AUDIO,e))}),{trigger:m((()=>[d(c(_),{quaternary:"",size:"tiny"},{icon:m((()=>[d(c(k),{size:"18",component:c(O)},null,8,["component"])])),_:1})])),_:1},16),d(w,v(c(re),{onComfirm:t[6]||(t[6]=e=>ae(c(E).VIDEO,e))}),{trigger:m((()=>[d(c(_),{quaternary:"",size:"tiny"},{icon:m((()=>[d(c(k),{size:"20",component:c(V)},null,8,["component"])])),_:1})])),_:1},16)],64)):(s(),r(p,{key:1},[d(c(_),{quaternary:"",size:"tiny",onClick:t[7]||(t[7]=()=>ae(c(E).AUDIO))},{icon:m((()=>[d(c(k),{size:"18",component:c(O)},null,8,["component"])])),_:1}),d(c(_),{quaternary:"",size:"tiny",onClick:t[8]||(t[8]=()=>ae(c(E).VIDEO))},{icon:m((()=>[d(c(k),{size:"20",component:c(V)},null,8,["component"])])),_:1})],64))]),i(l("div",{ref_key:"inputRef",ref:ee,class:"input-box",contenteditable:"",onKeydown:ce,onInput:le},null,544),[[M,c(ne).id]]),l("div",Z,[$,d(c(_),{type:"primary",round:"",disabled:!te.value,onClick:de},{default:m((()=>[h("发送")])),_:1},8,["disabled"])])],4)),[[M,c(ne).id]])}});export{ee as default};
1
+ import{defineComponent as e,ref as t,computed as n,watch as o,withDirectives as i,openBlock as s,createElementBlock as r,normalizeStyle as a,unref as c,createElementVNode as l,toDisplayString as u,createVNode as d,createCommentVNode as f,withCtx as m,Fragment as p,renderList as g,createBlock as y,createTextVNode as h,mergeProps as v,vShow as M}from"vue";import{NIcon as k,NPopover as C,NButton as _,NTooltip as x,NUpload as I,NUploadTrigger as b}from"naive-ui";import w from"./ChatAdd.vue.js";import{useState as T}from"../hooks/useState.js";import{useSession as z}from"../hooks/useSession.js";import{MESSAGE_TYPE as E,AV_STATUS as j}from"../constants/index.js";import"trtc-sdk-v5";import{simplifyMessage as R}from"../utils/index.js";import{emojis as q}from"../utils/emoji.js";import{uploadFileApi as L}from"../api/index.js";import{CloseCircleOutline as D,CallOutline as O,VideocamOutline as V}from"@vicons/ionicons5";import{xor as A,cloneDeep as F}from"lodash-es";import{uuidGenerator as K}from"../../../../shared/utils/index.js";const U={key:0,class:"reference-content-box"},S={class:"reference-content"},G=["innerHTML"],H={class:"tool-box"},N=l("i",{class:"chat--iconfont chat--icon-face"},null,-1),J={class:"emoji-box"},X=l("span",null,"默认表情",-1),B={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"},$=l("span",{class:"tip"},"Enter 发送, Shift + Enter 换行",-1);var ee=e({__name:"ChatFooter",setup(e){const ee=t(),te=t(""),{state:ne,sendMessage:oe}=T(),{isGroupChat:ie}=z(ne),se=t(!1),re=n((()=>({options:ne.currentGroupUser,defaultValue:[ne.userInfo]})));function ae(e,t=[]){const n=K(),o=[],i=t.length>0;ne.showVideo||ne.showMultipleVideo||(i?(o.push(...A(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 ce(e){["Enter"].includes(e.key)&&(function(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}(e)||(e.preventDefault(),de()))}function le(){var e,t;te.value=(null==(t=null==(e=ee.value)?void 0:e.innerText)?void 0:t.trim())||""}async function ue(e,t){const{file:n,name:o}=e.file,i=new FormData;i.append("sender",ne.userInfo.id),i.append("file",n);const s=await L(i);if(!s)return console.log("上传失败");fe({chatMessageType:t,msg:t===E.FILE?o:s,url:s})}function de(){if(!(te.value.length>2e3))return te.value?void fe({msg:te.value}):console.log("请输入内容");console.log("请控制在2000字以内")}async function fe(e){const{chatMessageType:t=E.TEXT,msg:n,url:o}=e,i={msg:n,chatMessageType:t};t===E.FILE&&(i.fileUrl=o),[E.TEXT,E.BLEND].includes(t)&&(ee.value.innerHTML="",te.value=""),ne.currentReferenceMsg&&(i.referenceContent=F(ne.currentReferenceMsg),ne.currentReferenceMsg=null),oe({content:i})}return o((()=>ne.currentReferenceMsg),(e=>{var t;e&&(null==(t=ee.value)||t.focus())})),(e,t)=>i((s(),r("section",{class:"chat-footer",style:a({cursor:c(ne).id?"default":"not-allowed"})},[c(ne).currentReferenceMsg?(s(),r("div",U,[l("div",S,[l("span",null,u(c(ne).currentReferenceMsg.senderName)+":",1),l("pre",{innerHTML:c(R)(c(ne).currentReferenceMsg.content)},null,8,G)]),d(c(k),{component:c(D),onClick:t[0]||(t[0]=()=>c(ne).currentReferenceMsg=null)},null,8,["component"])])):f("v-if",!0),l("div",H,[d(c(C),{show:se.value,"onUpdate:show":t[1]||(t[1]=e=>se.value=e),placement:"top",trigger:"click","show-arrow":!1,"display-directive":"show",delay:0},{trigger:m((()=>[d(c(_),{quaternary:"",size:"tiny"},{icon:m((()=>[N])),_:1})])),default:m((()=>[l("div",J,[f(' <span>最近使用</span>\r\n\t\t\t\t\t<div class="list-box">\r\n\t\t\t\t\t\t<template v-for="(img, index) in images" :key="index">\r\n\t\t\t\t\t\t\t<i>\r\n\t\t\t\t\t\t\t\t<img :src="img" />\r\n\t\t\t\t\t\t\t</i>\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</div> '),X,l("div",B,[(s(!0),r(p,null,g(c(q).default,(([e,t])=>(s(),y(c(x),{key:e,"show-arrow":!1,trigger:"hover"},{trigger:m((()=>[d(c(_),{quaternary:"",size:"tiny",onClick:()=>function(e){se.value=!1,fe({chatMessageType:E.EMOJI,msg:e})}(e)},{icon:m((()=>[l("img",{src:t},null,8,P)])),_:2},1032,["onClick"])])),default:m((()=>[h(" "+u(e),1)])),_:2},1024)))),128))])])])),_:1},8,["show"]),d(c(_),{quaternary:"",size:"tiny",onClick:t[2]||(t[2]=()=>fe({chatMessageType:c(E).EMOJI,msg:0}))},{icon:m((()=>[Q])),_:1}),d(c(I),{abstract:"",multiple:"",accept:"image/*",onChange:t[3]||(t[3]=e=>ue(e,c(E).IMAGE))},{default:m((()=>[d(c(b),{abstract:""},{default:m((({handleClick:e})=>[d(c(_),{quaternary:"",size:"tiny",onClick:e},{icon:m((()=>[W])),_:2},1032,["onClick"])])),_:1})])),_:1}),d(c(I),{abstract:"",multiple:"",accept:"video/*,.pdf,.doc.docx,,.zip,.xlsx,.txt",onChange:t[4]||(t[4]=e=>ue(e,c(E).FILE))},{default:m((()=>[d(c(b),{abstract:""},{default:m((({handleClick:e})=>[d(c(_),{quaternary:"",size:"tiny",onClick:e},{icon:m((()=>[Y])),_:2},1032,["onClick"])])),_:1})])),_:1}),c(ie)?(s(),r(p,{key:0},[d(w,v(c(re),{onComfirm:t[5]||(t[5]=e=>ae(c(E).AUDIO,e))}),{trigger:m((()=>[d(c(_),{quaternary:"",size:"tiny"},{icon:m((()=>[d(c(k),{size:"18",component:c(O)},null,8,["component"])])),_:1})])),_:1},16),d(w,v(c(re),{onComfirm:t[6]||(t[6]=e=>ae(c(E).VIDEO,e))}),{trigger:m((()=>[d(c(_),{quaternary:"",size:"tiny"},{icon:m((()=>[d(c(k),{size:"20",component:c(V)},null,8,["component"])])),_:1})])),_:1},16)],64)):(s(),r(p,{key:1},[d(c(_),{quaternary:"",size:"tiny",onClick:t[7]||(t[7]=()=>ae(c(E).AUDIO))},{icon:m((()=>[d(c(k),{size:"18",component:c(O)},null,8,["component"])])),_:1}),d(c(_),{quaternary:"",size:"tiny",onClick:t[8]||(t[8]=()=>ae(c(E).VIDEO))},{icon:m((()=>[d(c(k),{size:"20",component:c(V)},null,8,["component"])])),_:1})],64))]),i(l("div",{ref_key:"inputRef",ref:ee,class:"input-box",contenteditable:"",onKeydown:ce,onInput:le},null,544),[[M,c(ne).id]]),l("div",Z,[$,d(c(_),{type:"primary",round:"",disabled:!te.value,onClick:de},{default:m((()=>[h("发送")])),_:1},8,["disabled"])])],4)),[[M,c(ne).id]])}});export{ee as default};
@@ -425,11 +425,15 @@ declare const _default: import("vue").DefineComponent<{}, {
425
425
  }>>;
426
426
  emit: (event: "comfirm", ...args: any[]) => void;
427
427
  state: import("../types").IState;
428
+ listRef: import("vue").Ref<any>;
429
+ keyword: import("vue").Ref<any>;
428
430
  showModal: import("vue").Ref<boolean>;
429
431
  checkedOptions: import("vue").Ref<AnyObject[]>;
430
432
  options: import("vue").Ref<AnyObject[]>;
431
433
  groupName: import("vue").Ref<string>;
432
434
  checkedSourceIds: import("vue").Ref<(string | number)[]>;
435
+ userList: import("vue").Ref<AnyObject[]>;
436
+ handleInput: () => void;
433
437
  _disabledIds: import("vue").ComputedRef<any[]>;
434
438
  defaultOptions: import("vue").ComputedRef<{
435
439
  id: any;
@@ -440,21 +444,23 @@ declare const _default: import("vue").DefineComponent<{}, {
440
444
  btnDisabled: import("vue").ComputedRef<boolean>;
441
445
  allChecked: import("vue").WritableComputedRef<boolean>;
442
446
  handlePositiveClick: () => Promise<void>;
443
- updateSourceIds: (value: (string | number)[], meta: {
447
+ updateCheckedSourceIds: () => void;
448
+ handleSourceIdsUpdate: (value: (string | number)[], meta: {
444
449
  actionType: "check" | "uncheck";
445
450
  value: string | number;
446
451
  }) => void;
447
- renderSourceLabel: ({ option }: {
448
- option: AnyObject;
449
- }) => JSX.Element;
450
452
  closeTag: (id: string) => void;
451
453
  renderTargetList: () => JSX.Element[] | null;
452
454
  NModal: any;
453
455
  NButton: any;
456
+ NSpace: any;
457
+ NAvatar: any;
454
458
  NIcon: any;
459
+ NTag: any;
455
460
  NInput: any;
456
461
  NCheckbox: any;
457
462
  NCheckboxGroup: any;
463
+ SearchOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
458
464
  AddOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
459
465
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "comfirm"[], "comfirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
460
466
  title: {
@@ -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 y,withModifiers as g}from"vue";import{NImageGroup as T,NAvatar as h,NImage as M,NIcon as k,NButtonGroup as _,NButton as I}from"naive-ui";import{format as S}from"date-fns";import{getHistoryRecordApi as x,readMessageApi as j}from"../api/index.js";import{useState as E}from"../hooks/useState.js";import{useSession as L}from"../hooks/useSession.js";import{MESSAGE_TYPE as A}from"../constants/index.js";import"trtc-sdk-v5";import{isAudioOrVideoMessage as C,simplifyMessage as b,getAVTime as w,downloadFile as H}from"../utils/index.js";import{first as z,last as D}from"lodash-es";import O from"./PersonProfile.vue.js";import P from"./MessageTemplate.vue.js";import{emojis as N}from"../utils/emoji.js";import U from"./ContextMenu.js";import{useScrollLoading as q}from"../hooks/useScrollLoading.js";import{CallOutline as R,VideocamOutline as G,ChatbubbleEllipsesOutline as J}from"@vicons/ionicons5";const K={key:0,class:"time"},F={key:2,class:"message-box"},X={key:0,class:"content-box"},B={class:"name-box"},Q=["data-time"],V=["onContextmenu"],W={key:0,class:"reference-content"},Y=["innerHTML"],Z=["innerHTML"],$=["src"],ee={style:{"margin-left":"8px"}},te=["href","onClick"];var ne=e({__name:"ChatMain",setup(e){const ne=t(),{state:se,setMsgList:oe}=E(),{setCurrentSessionItem:ie,isGroupChat:ae}=L(se),re=t(),ce=t(!1),le=t({left:0,top:0}),me=t(),ue={page:0,hasMore:!0,lastSendTime:S(new Date,"yyyy-MM-dd HH:mm:ss")},pe=n((()=>({"--c-tip-top":ae.value?"1px":"-20px","--c-tip-gap":ae.value?"10px":"0px"})));async function de(){try{if(!ue.hasMore)return;ue.page++;const e=await x({sessionKey:se.currentSessionItem.sessionKey,page:ue.page,lastSendTime:ue.lastSendTime});if(!Array.isArray(e)||0===e.length)return ue.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");const t=z(e).id;ue.lastSendTime=D(e).sendTime,oe(ue.page>1?[...e,...se.msgList]:e),1===ue.page&&se.currentSessionItem.unreadNum&&(await j({chatType:se.currentSessionItem.chatType,messageIdSet:[t],receiver:se.userInfo.id,sender:se.currentSessionItem.receiver}),ie({unreadNum:0}))}catch(e){console.log(e)}}function fe(e){const{chatMessageType:t,messageTemplate:n}=e.content;return t!==A.TEMPLATE||!!n}function ve(e,t){var n,s;const{chatMessageType:o,messageTemplate:i}=e.content;if(o===A.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 ye(e){var t,n;const{chatMessageType:s,messageTemplate:o}=e;return s===A.TEMPLATE&&3==(null==(n=null==(t=null==o?void 0:o.setting)?void 0:t.style)?void 0:n.id)}function ge(e,t){var n;const s=new Date(e.sendTime).getTime(),o=null==(n=se.msgList[t+1])?void 0:n.sendTime;if(o){return s-new Date(o).getTime()>3e5}return!0}return q(ne,(()=>{de()}),"top",(()=>{ce.value=!1})),s((()=>se.id),(e=>{e&&(Object.assign(ue,{page:0,hasMore:!0,lastSendTime:S(new Date,"yyyy-MM-dd HH:mm:ss")}),de())}),{immediate:!0}),s((()=>se.isAppendMsg),(e=>{e&&(oe([...se.msgList,se.currentMsg]),se.isAppendMsg=!1,async function(){var e,t,n;const s=null!=(t=null==(e=ne.value)?void 0:e.scrollHeight)?t:0;null==(n=ne.value)||n.scrollTo({top:s,behavior:"auto"})}())}),{immediate:!0}),(e,t)=>(o(),i("div",{class:a(["chat-main",{"home-bg":!r(se).id}]),ref_key:"chatMainRef",ref:ne,style:c(r(pe))},[l(r(T),{"show-toolbar-tooltip":""},{default:m((()=>[(o(!0),i(u,null,p(r(se).msgList,((e,t)=>(o(),i(u,{key:e.id},[fe(e)?(o(),i("div",{key:0,class:a(["message-item",{"message-item--mine":e.sender==r(se).userInfo.id}])},[ge(e,t)?(o(),i("p",K,d(e.__sendTime),1)):f("v-if",!0),ve(e,"system")?(o(),v(P,{key:1,data:e},null,8,["data"])):(o(),i("div",F,[l(O,{"user-id":e.sender},{trigger:m((()=>[l(r(h),{round:"",size:38,src:e.senderAvatar},null,8,["src"])])),_:2},1032,["user-id"]),e.content?(o(),i("div",X,[y("div",B,[y("span",{class:"name","data-time":e.__time},d(r(ae)?e.senderName:""),9,Q)]),y("div",{class:a(["content",{emoji:e.content.chatMessageType===r(A).EMOJI,template:e.content.chatMessageType===r(A).TEMPLATE,"template--3":ye(e.content),"audio-video":r(C)(e.content)}]),onContextmenu:g((t=>async function(e,t){}(0,e.id)),["prevent"])},[e.content.chatMessageType===r(A).TEXT?(o(),i(u,{key:0},[e.content.referenceContent?(o(),i("div",W,[y("span",null,d(e.content.referenceContent.senderName)+":",1),y("pre",{innerHTML:r(b)(e.content.referenceContent.content)},null,8,Y)])):f("v-if",!0),y("pre",{innerHTML:e.__content},null,8,Z)],64)):f("v-if",!0),e.content.chatMessageType===r(A).EMOJI?(o(),i("img",{key:1,src:r(N).findEmoji(e.__content)},null,8,$)):f("v-if",!0),ve(e,"template")?(o(),v(P,{key:2,data:e},null,8,["data"])):f("v-if",!0),e.content.chatMessageType===r(A).IMAGE?(o(),v(r(M),{key:3,width:"240",src:e.__content},null,8,["src"])):f("v-if",!0),r(C)(e.content)?(o(),i(u,{key:4},[l(r(k),{class:a({"is-audio":e.content.chatMessageType===r(A).AUDIO}),component:e.content.chatMessageType===r(A).AUDIO?r(R):r(G)},null,8,["class","component"]),y("span",ee,d(r(w)(e.__content)),1)],64)):f("v-if",!0),e.content.chatMessageType===r(A).FILE?(o(),i("a",{key:5,href:e.content.fileUrl,onClick:g((()=>r(H)(e.content.fileUrl,e.__content)),["prevent"])},d(e.__content),9,te)):f("v-if",!0),l(r(_),{class:"quick-menu"},{default:m((()=>[f(' <n-button quaternary size="tiny">\n\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<i class="chat--iconfont chat--icon-face" />\n\t\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t\t</n-button> '),l(r(I),{quaternary:"",size:"tiny",onClick:()=>{return t=e,se.currentReferenceMsg=t,void Object.assign(se.currentReferenceMsg,{chatType:se.currentSessionItem.chatType,receiver:se.currentSessionItem.receiver,receiverAvatar:se.currentSessionItem.avatar,receiverName:se.currentSessionItem.name});var t}},{icon:m((()=>[l(r(k),{size:"17",component:r(J)},null,8,["component"])])),_:2},1032,["onClick"]),f(' <n-button quaternary size="tiny">\n\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<n-icon :component="EllipsisHorizontal" />\n\t\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t\t</n-button> ')])),_:2},1024)],42,V)])):f("v-if",!0)]))],2)):f("v-if",!0)],64)))),128))])),_:1}),l(r(U),{ref_key:"contextmenuRef",ref:re,show:ce.value,"onUpdate:show":t[0]||(t[0]=e=>ce.value=e),position:le.value,"msg-id":me.value},null,8,["show","position","msg-id"])],6))}});export{ne as default};
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 y,withModifiers as g}from"vue";import{NImageGroup as T,NAvatar as h,NImage as M,NIcon as k,NButtonGroup as _,NButton as I}from"naive-ui";import{format as S}from"date-fns";import{getHistoryRecordApi as x,readMessageApi as j}from"../api/index.js";import{useState as E}from"../hooks/useState.js";import{useSession as L}from"../hooks/useSession.js";import{MESSAGE_TYPE as A}from"../constants/index.js";import"trtc-sdk-v5";import{isAudioOrVideoMessage as C,simplifyMessage as b,getAVTime as w,downloadFile as H}from"../utils/index.js";import{first as z,last as D}from"lodash-es";import O from"./PersonProfile.vue.js";import P from"./MessageTemplate.vue.js";import{emojis as N}from"../utils/emoji.js";import U from"./ContextMenu.js";import{useScrollLoading as q}from"../hooks/useScrollLoading.js";import{CallOutline as R,VideocamOutline as G,ChatbubbleEllipsesOutline as J}from"@vicons/ionicons5";const K={key:0,class:"time"},F={key:2,class:"message-box"},X={key:0,class:"content-box"},B={class:"name-box"},Q=["data-time"],V=["onContextmenu"],W={key:0,class:"reference-content"},Y=["innerHTML"],Z=["innerHTML"],$=["src"],ee={style:{"margin-left":"8px"}},te=["href","onClick"];var ne=e({__name:"ChatMain",setup(e){const ne=t(),{state:se,setMsgList:oe}=E(),{setCurrentSessionItem:ie,isGroupChat:ae}=L(se),re=t(),ce=t(!1),le=t({left:0,top:0}),me=t(),ue={page:0,hasMore:!0,lastSendTime:S(new Date,"yyyy-MM-dd HH:mm:ss")},pe=n((()=>({"--c-tip-top":ae.value?"1px":"-20px","--c-tip-gap":ae.value?"10px":"0px"})));async function de(){try{if(!ue.hasMore)return;ue.page++;const e=await x({sessionKey:se.currentSessionItem.sessionKey,page:ue.page,lastSendTime:ue.lastSendTime});if(!Array.isArray(e)||0===e.length)return ue.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");const t=z(e).id;ue.lastSendTime=D(e).sendTime,oe(ue.page>1?[...e,...se.msgList]:e),1===ue.page&&se.currentSessionItem.unreadNum&&(await j({chatType:se.currentSessionItem.chatType,messageIdSet:[t],receiver:se.userInfo.id,sender:se.currentSessionItem.receiver}),ie({unreadNum:0}))}catch(e){console.log(e)}}function fe(e){const{chatMessageType:t,messageTemplate:n}=e.content;return t!==A.TEMPLATE||!!n}function ve(e,t){var n,s;const{chatMessageType:o,messageTemplate:i}=e.content;if(o===A.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 ye(e){var t,n;const{chatMessageType:s,messageTemplate:o}=e;return s===A.TEMPLATE&&3==(null==(n=null==(t=null==o?void 0:o.setting)?void 0:t.style)?void 0:n.id)}function ge(e,t){var n;const s=new Date(e.sendTime).getTime(),o=null==(n=se.msgList[t+1])?void 0:n.sendTime;if(o){return s-new Date(o).getTime()>3e5}return!0}return q(ne,(()=>{de()}),"top",(()=>{ce.value=!1})),s((()=>se.id),(e=>{e&&(Object.assign(ue,{page:0,hasMore:!0,lastSendTime:S(new Date,"yyyy-MM-dd HH:mm:ss")}),de())}),{immediate:!0}),s((()=>se.isAppendMsg),(e=>{e&&(oe([...se.msgList,se.currentMsg]),se.isAppendMsg=!1,async function(){var e,t,n;const s=null!=(t=null==(e=ne.value)?void 0:e.scrollHeight)?t:0;null==(n=ne.value)||n.scrollTo({top:s,behavior:"auto"})}())}),{immediate:!0}),(e,t)=>(o(),i("div",{class:a(["chat-main",{"home-bg":!r(se).id}]),ref_key:"chatMainRef",ref:ne,style:c(r(pe))},[l(r(T),{"show-toolbar-tooltip":""},{default:m((()=>[(o(!0),i(u,null,p(r(se).msgList,((e,t)=>(o(),i(u,{key:e.id},[fe(e)?(o(),i("div",{key:0,class:a(["message-item",{"message-item--mine":e.sender==r(se).userInfo.id}])},[ge(e,t)?(o(),i("p",K,d(e.__sendTime),1)):f("v-if",!0),ve(e,"system")?(o(),v(P,{key:1,data:e},null,8,["data"])):(o(),i("div",F,[l(O,{"user-id":e.sender},{trigger:m((()=>[l(r(h),{round:"",size:38,src:e.senderAvatar},null,8,["src"])])),_:2},1032,["user-id"]),e.content?(o(),i("div",X,[y("div",B,[y("span",{class:"name","data-time":e.__time},d(r(ae)?e.senderName:""),9,Q)]),y("div",{class:a(["content",{emoji:e.content.chatMessageType===r(A).EMOJI,template:e.content.chatMessageType===r(A).TEMPLATE,"template--3":ye(e.content),"audio-video":r(C)(e.content)}]),onContextmenu:g((t=>async function(e,t){}(0,e.id)),["prevent"])},[e.content.chatMessageType===r(A).TEXT?(o(),i(u,{key:0},[e.content.referenceContent?(o(),i("div",W,[y("span",null,d(e.content.referenceContent.senderName)+":",1),y("pre",{innerHTML:r(b)(e.content.referenceContent.content)},null,8,Y)])):f("v-if",!0),y("pre",{innerHTML:e.__content},null,8,Z)],64)):f("v-if",!0),e.content.chatMessageType===r(A).EMOJI?(o(),i("img",{key:1,src:r(N).findEmoji(e.__content)},null,8,$)):f("v-if",!0),ve(e,"template")?(o(),v(P,{key:2,data:e},null,8,["data"])):f("v-if",!0),e.content.chatMessageType===r(A).IMAGE?(o(),v(r(M),{key:3,width:"240",src:e.__content},null,8,["src"])):f("v-if",!0),r(C)(e.content)?(o(),i(u,{key:4},[l(r(k),{class:a({"is-audio":e.content.chatMessageType===r(A).AUDIO}),component:e.content.chatMessageType===r(A).AUDIO?r(R):r(G)},null,8,["class","component"]),y("span",ee,d(r(w)(e.__content)),1)],64)):f("v-if",!0),e.content.chatMessageType===r(A).FILE?(o(),i("a",{key:5,href:e.content.fileUrl,onClick:g((()=>r(H)(e.content.fileUrl,e.__content)),["prevent"])},d(e.__content),9,te)):f("v-if",!0),l(r(_),{class:"quick-menu"},{default:m((()=>[f(' <n-button quaternary size="tiny">\r\n\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<i class="chat--iconfont chat--icon-face" />\r\n\t\t\t\t\t\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t\t\t\t\t</n-button> '),l(r(I),{quaternary:"",size:"tiny",onClick:()=>{return t=e,se.currentReferenceMsg=t,void Object.assign(se.currentReferenceMsg,{chatType:se.currentSessionItem.chatType,receiver:se.currentSessionItem.receiver,receiverAvatar:se.currentSessionItem.avatar,receiverName:se.currentSessionItem.name});var t}},{icon:m((()=>[l(r(k),{size:"17",component:r(J)},null,8,["component"])])),_:2},1032,["onClick"]),f(' <n-button quaternary size="tiny">\r\n\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<n-icon :component="EllipsisHorizontal" />\r\n\t\t\t\t\t\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t\t\t\t\t</n-button> ')])),_:2},1024)],42,V)])):f("v-if",!0)]))],2)):f("v-if",!0)],64)))),128))])),_:1}),l(r(U),{ref_key:"contextmenuRef",ref:re,show:ce.value,"onUpdate:show":t[0]||(t[0]=e=>ce.value=e),position:le.value,"msg-id":me.value},null,8,["show","position","msg-id"])],6))}});export{ne as default};
@@ -1,20 +1,13 @@
1
- import { AnyObject } from '../../../../shared/types';
2
1
  declare const _default: import("vue").DefineComponent<{}, {
3
- cssVars: import("vue").ComputedRef<AnyObject>;
2
+ cssVars: import("vue").ComputedRef<import("../../../../shared/types").AnyObject>;
4
3
  listRef: import("vue").Ref<any>;
5
4
  inputRef: import("vue").Ref<any>;
6
5
  showSearch: import("vue").Ref<boolean>;
7
6
  keyword: import("vue").Ref<any>;
8
- userList: import("vue").Ref<any>;
9
7
  state: import("../types").IState;
10
- openSession: (item: AnyObject) => Promise<void>;
11
- pageInfo: {
12
- page: number;
13
- hasMore: boolean;
14
- };
8
+ openSession: (item: import("../../../../shared/types").AnyObject) => Promise<void>;
9
+ userList: import("vue").Ref<import("../../../../shared/types").AnyObject[]>;
15
10
  handleInput: () => void;
16
- handleSearch: () => Promise<void>;
17
- resetAndSearch: () => void;
18
11
  addSession: (userId: string) => Promise<void>;
19
12
  NPopover: any;
20
13
  NButton: any;
@@ -1 +1 @@
1
- import{defineComponent as e,ref as o,watch as s,nextTick as r,openBlock as a,createBlock as t,unref as i,withCtx as n,createVNode as l,createTextVNode as u,createElementVNode as p,normalizeStyle as c,createElementBlock as f,Fragment as m,renderList as d,toDisplayString as v}from"vue";import{NPopover as h,NButton as g,NIcon as k,NInput as w,NAvatar as y}from"naive-ui";import{SearchOutline as j}from"@vicons/ionicons5";import{useState as S}from"../hooks/useState.js";import{useSession as _}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import{isArray as I}from"lodash-es";import"../utils/emoji.js";import{listUserApi as M,openSessionApi as x}from"../api/index.js";import{useDebounceFn as C}from"@vueuse/core";import{useTheme as b}from"../../../../shared/hooks/useTheme.js";import"@vue/shared";import"../../../../shared/utils/index.js";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import{useScrollLoading as z}from"../hooks/useScrollLoading.js";const L=["onClick"],N={class:"user-info"};var R=e({__name:"ChatSearch",setup(e){const R=b(),T=o(),U=o(),D=o(!1),E=o(),G=o(),{state:H}=S(),{openSession:O}=_(H),q={page:0,hasMore:!0},A=C((function(){Object.assign(q,{page:0,hasMore:!0}),B()}),300);async function B(){if(!E.value)return void(G.value=[]);if(!q.hasMore)return;q.page++;const e=await M({orgId:H.orgId,keyword:E.value,page:q.page,pageSize:10});I(e.records)&&q.page<=+e.total&&(G.value=q.page>1?G.value.concat(e.records):e.records,q.page==e.total&&(q.hasMore=!1,console.log("没有更多消息了")))}return z(T,(()=>{B()})),s((()=>D.value),(async e=>{var o;e&&(await r(),null==(o=U.value)||o.focus())})),(e,o)=>(a(),t(i(h),{show:D.value,"onUpdate:show":o[1]||(o[1]=e=>D.value=e),placement:"top",trigger:"click","display-directive":"show","show-arrow":!1,delay:0,overlap:""},{trigger:n((()=>[l(i(g),{color:"#ffffff4D",class:"search-trigger-btn"},{icon:n((()=>[l(i(k),{component:i(j),color:"#ffffff80"},null,8,["component"])])),default:n((()=>[u(" 搜索联系人 ")])),_:1})])),default:n((()=>[p("div",{class:"popover-search",style:c(i(R))},[l(i(w),{ref_key:"inputRef",ref:U,size:"small",clearable:"",autofocus:"",value:E.value,"onUpdate:value":o[0]||(o[0]=e=>E.value=e),valueModifiers:{trim:!0},onInput:i(A)},{prefix:n((()=>[l(i(k),{color:"#ffffff80",component:i(j)},null,8,["component"])])),_:1},8,["value","onInput"]),p("div",{class:"user-list-wrapper",ref_key:"listRef",ref:T},[(a(!0),f(m,null,d(G.value,(e=>(a(),f("div",{class:"user-item",key:e.id,onClick:()=>async function(e){D.value=!1;const o=await x({chatType:"SINGLE",receiver:e,sender:H.userInfo.id});O(o)}(e.id)},[l(i(y),{round:"",size:32,src:e.avatar},null,8,["src"]),p("div",N,[p("span",null,v(e.name),1),p("span",null,v(e.deptName),1),p("span",null,v(e.post),1)])],8,L)))),128))],512)],4)])),_:1},8,["show"]))}});export{R as default};
1
+ import{defineComponent as e,ref as o,watch as s,nextTick as r,openBlock as a,createBlock as t,unref as i,withCtx as l,createVNode as n,createTextVNode as u,createElementVNode as p,normalizeStyle as f,createElementBlock as c,Fragment as m,renderList as d,toDisplayString as v}from"vue";import{NPopover as h,NButton as k,NIcon as w,NInput as y,NAvatar as j}from"naive-ui";import{SearchOutline as S}from"@vicons/ionicons5";import{useState as _}from"../hooks/useState.js";import{useSession as g}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import"lodash-es";import"../utils/emoji.js";import{openSessionApi as x}from"../api/index.js";import{useTheme as C}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 R}from"../hooks/useSearchUserList.js";const U=["onClick"],I={class:"user-info"};var L=e({__name:"ChatSearch",setup(e){const L=C(),b=o(),z=o(),N=o(!1),T=o(),{state:D}=_(),{openSession:E}=g(D),{userList:G,handleInput:H}=R({wrapperRef:b,keywordRef:T});return s((()=>N.value),(async e=>{var o;e&&(await r(),null==(o=z.value)||o.focus())})),(e,o)=>(a(),t(i(h),{show:N.value,"onUpdate:show":o[1]||(o[1]=e=>N.value=e),placement:"top",trigger:"click","display-directive":"show","show-arrow":!1,delay:0,overlap:""},{trigger:l((()=>[n(i(k),{color:"#ffffff4D",class:"search-trigger-btn"},{icon:l((()=>[n(i(w),{component:i(S),color:"#ffffff80"},null,8,["component"])])),default:l((()=>[u(" 搜索联系人 ")])),_:1})])),default:l((()=>[p("div",{class:"popover-search",style:f(i(L))},[n(i(y),{ref_key:"inputRef",ref:z,size:"small",clearable:"",autofocus:"",value:T.value,"onUpdate:value":[o[0]||(o[0]=e=>T.value=e),i(H)],valueModifiers:{trim:!0}},{prefix:l((()=>[n(i(w),{color:"#ffffff80",component:i(S)},null,8,["component"])])),_:1},8,["value","onUpdate:value"]),p("div",{class:"user-list-wrapper",ref_key:"listRef",ref:b},[(a(!0),c(m,null,d(i(G),(e=>(a(),c("div",{class:"user-item",key:e.id,onClick:()=>async function(e){N.value=!1;const o=await x({chatType:"SINGLE",receiver:e,sender:D.userInfo.id});E(o)}(e.id)},[n(i(j),{round:"",size:32,src:e.avatar},null,8,["src"]),p("div",I,[p("span",null,v(e.name),1),p("span",null,v(e.deptName),1),p("span",null,v(e.post),1)])],8,U)))),128))],512)],4)])),_:1},8,["show"]))}});export{L as default};
@@ -1,11 +1,15 @@
1
1
  import TRTC from 'trtc-sdk-v5';
2
+ import { AnyObject } from '../../../../shared/types';
2
3
  declare const _default: import("vue").DefineComponent<{}, {
3
4
  selfVideoRef: import("vue").Ref<any>;
4
- remoteUsers: import("vue").Ref<string[]>;
5
+ remoteUsers: import("vue").Ref<{
6
+ id: string;
7
+ name: string;
8
+ }[]>;
5
9
  state: import("../types").IState;
6
10
  sendMessage: (message: {
7
11
  chatType?: string | undefined;
8
- content: import("../../../../shared/types").AnyObject;
12
+ content: AnyObject;
9
13
  receiver?: string | undefined;
10
14
  }) => Promise<void>;
11
15
  trtc: TRTC;
@@ -29,11 +33,11 @@ declare const _default: import("vue").DefineComponent<{}, {
29
33
  installEventHandlers: () => void;
30
34
  uninstallEventHandlers: () => void;
31
35
  handleRemoteVideoAvailable: (event: any) => Promise<void>;
32
- handleRemoteAudioAvailable: (event: any) => void;
33
- handleRemoteUserEnter: (event: any) => void;
36
+ handleRemoteAudioAvailable: (event: any) => Promise<void>;
37
+ handleRemoteUserEnter: (event: any) => Promise<void>;
38
+ getUserName: (userId: string) => Promise<any>;
34
39
  handleRemoteUserExit: (event: any) => void;
35
40
  handleError: (error: any) => void;
36
- getName: (id: string) => any;
37
41
  NButton: any;
38
42
  NIcon: any;
39
43
  ChatAdd: import("vue").DefineComponent<{
@@ -46,14 +50,14 @@ declare const _default: import("vue").DefineComponent<{}, {
46
50
  default: string;
47
51
  };
48
52
  options: {
49
- type: import("vue").PropType<import("../../../../shared/types").AnyObject[]>;
53
+ type: import("vue").PropType<AnyObject[]>;
50
54
  };
51
55
  disabledIds: {
52
56
  type: import("vue").PropType<string[]>;
53
57
  default: () => never[];
54
58
  };
55
59
  defaultValue: {
56
- type: import("vue").PropType<import("../../../../shared/types").AnyObject[]>;
60
+ type: import("vue").PropType<AnyObject[]>;
57
61
  };
58
62
  }, {
59
63
  props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
@@ -66,25 +70,29 @@ declare const _default: import("vue").DefineComponent<{}, {
66
70
  default: string;
67
71
  };
68
72
  options: {
69
- type: import("vue").PropType<import("../../../../shared/types").AnyObject[]>;
73
+ type: import("vue").PropType<AnyObject[]>;
70
74
  };
71
75
  disabledIds: {
72
76
  type: import("vue").PropType<string[]>;
73
77
  default: () => never[];
74
78
  };
75
79
  defaultValue: {
76
- type: import("vue").PropType<import("../../../../shared/types").AnyObject[]>;
80
+ type: import("vue").PropType<AnyObject[]>;
77
81
  };
78
82
  }>> & {
79
83
  onComfirm?: ((...args: any[]) => any) | undefined;
80
84
  }>>;
81
85
  emit: (event: "comfirm", ...args: any[]) => void;
82
86
  state: import("../types").IState;
87
+ listRef: import("vue").Ref<any>;
88
+ keyword: import("vue").Ref<any>;
83
89
  showModal: import("vue").Ref<boolean>;
84
- checkedOptions: import("vue").Ref<import("../../../../shared/types").AnyObject[]>;
85
- options: import("vue").Ref<import("../../../../shared/types").AnyObject[]>;
90
+ checkedOptions: import("vue").Ref<AnyObject[]>;
91
+ options: import("vue").Ref<AnyObject[]>;
86
92
  groupName: import("vue").Ref<string>;
87
93
  checkedSourceIds: import("vue").Ref<(string | number)[]>;
94
+ userList: import("vue").Ref<AnyObject[]>;
95
+ handleInput: () => void;
88
96
  _disabledIds: import("vue").ComputedRef<any[]>;
89
97
  defaultOptions: import("vue").ComputedRef<{
90
98
  id: any;
@@ -95,21 +103,23 @@ declare const _default: import("vue").DefineComponent<{}, {
95
103
  btnDisabled: import("vue").ComputedRef<boolean>;
96
104
  allChecked: import("vue").WritableComputedRef<boolean>;
97
105
  handlePositiveClick: () => Promise<void>;
98
- updateSourceIds: (value: (string | number)[], meta: {
106
+ updateCheckedSourceIds: () => void;
107
+ handleSourceIdsUpdate: (value: (string | number)[], meta: {
99
108
  actionType: "check" | "uncheck";
100
109
  value: string | number;
101
110
  }) => void;
102
- renderSourceLabel: ({ option }: {
103
- option: import("../../../../shared/types").AnyObject;
104
- }) => JSX.Element;
105
111
  closeTag: (id: string) => void;
106
112
  renderTargetList: () => JSX.Element[] | null;
107
113
  NModal: any;
108
114
  NButton: any;
115
+ NSpace: any;
116
+ NAvatar: any;
109
117
  NIcon: any;
118
+ NTag: any;
110
119
  NInput: any;
111
120
  NCheckbox: any;
112
121
  NCheckboxGroup: any;
122
+ SearchOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
113
123
  AddOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
114
124
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "comfirm"[], "comfirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
115
125
  title: {
@@ -121,14 +131,14 @@ declare const _default: import("vue").DefineComponent<{}, {
121
131
  default: string;
122
132
  };
123
133
  options: {
124
- type: import("vue").PropType<import("../../../../shared/types").AnyObject[]>;
134
+ type: import("vue").PropType<AnyObject[]>;
125
135
  };
126
136
  disabledIds: {
127
137
  type: import("vue").PropType<string[]>;
128
138
  default: () => never[];
129
139
  };
130
140
  defaultValue: {
131
- type: import("vue").PropType<import("../../../../shared/types").AnyObject[]>;
141
+ type: import("vue").PropType<AnyObject[]>;
132
142
  };
133
143
  }>> & {
134
144
  onComfirm?: ((...args: any[]) => any) | undefined;
@@ -1 +1 @@
1
- import{defineComponent as e,ref as o,computed as n,openBlock as t,createElementBlock as s,createElementVNode as i,withDirectives as c,toDisplayString as l,unref as r,vShow as a,createVNode as u,withCtx as d,Fragment as p,renderList as m,createCommentVNode as v,createTextVNode as f,nextTick as E}from"vue";import{NButton as g,NIcon as _}from"naive-ui";import V from"./ChatAdd.vue.js";import{Close as T,Mic as I,MicOff as A,Videocam as h,VideocamOff as R,Call as M,PersonAdd as k}from"@vicons/ionicons5";import{xor as y}from"lodash-es";import"date-fns";import{CHAT_TYPE as w,SUBSCRIBE_MESSAGE_TYPE as b}from"../constants/index.js";import"../utils/emoji.js";import"@vueuse/core";import"../api/index.js";import{useVideo as O}from"../hooks/useVideo.js";import N from"trtc-sdk-v5";const x={class:"video-wrapper video-wrapper--multiple"},L={class:"video-header"},C={key:0,class:"video-main"},S={class:"video-main__left"},U=["data-name"],j={class:"video-bottom"},D={class:"btn-group"},$={class:"btn"},z=i("span",{class:"text"},"静音",-1),B={class:"btn"},H=i("span",{class:"text"},"摄像头",-1),P=i("span",{class:"text"},"结束会诊",-1),X={class:"btn"},Y=i("span",{class:"text"},"添加参会人",-1),q={class:"video-main__right"},G=["id","data-name"],F={class:"user"},J={class:"name"},K={key:0,class:"tip"},Q={key:0,class:"calling-box"},W={class:"btn-box"},Z={key:1,class:"opt-btn"},ee={class:"btn"},oe=i("span",null,"拒接",-1),ne={class:"btn"},te=i("span",null,"接听",-1);var se=e({__name:"MultipleVideo",setup(e){const se=o(),ie=o([]),{state:ce,sendMessage:le,trtc:re,voiceOpen:ae,isAudio:ue,isCall:de,startTimer:pe,resetTimer:me,toggleAudio:ve,messageTypeText:fe,timing:Ee,toggleVideo:ge,videocamOpen:_e}=O(),Ve=o(!1),Te=n((()=>de.value?ce.userInfo.name:ce.currentAVMsg.sendName)),Ie=n((()=>{if(!Ve.value)return"";const e=de.value?`(${ie.value.length+1}/${ce.currentAVMsg.checkedIds.length+1})`:"";return`${Te.value}发起的${fe.value}会诊${e} ${Ee.value}`}));function Ae(e){console.log("checkedIds :>> ",e),ce.currentAVMsg.checkedIds.push(...e),he()}function he(){var e;(null==(e=ce.currentAVMsg.checkedIds)?void 0:e.length)&&ce.currentAVMsg.checkedIds.forEach((e=>{le({chatType:w.SINGLE,content:{msg:ce.currentAVMsg.chatMessageType+","+ce.currentAVMsg.strRoomId,chatMessageType:b.AV_STATUS},receiver:e})})),Ve.value||Re()}async function Re(){const e=await N.isSupported();if(!e.result||!e.detail.isH264EncodeSupported||!e.detail.isH264DecodeSupported)return console.log("checkResult :>> ",e),void(ce.showMultipleVideo=!1);try{if(await re.enterRoom({strRoomId:ce.currentAVMsg.strRoomId,sdkAppId:parseInt(ce.userInfo.sdkAppID),userId:ce.userInfo.id,userSig:ce.userInfo.userSig}),Ve.value=!0,pe(),function(){if(re.on(N.EVENT.ERROR,Oe),re.on(N.EVENT.REMOTE_USER_ENTER,we),re.on(N.EVENT.REMOTE_AUDIO_AVAILABLE,ye),re.on(N.EVENT.REMOTE_USER_EXIT,be),ue.value)return;re.on(N.EVENT.REMOTE_VIDEO_AVAILABLE,ke)}(),await re.startLocalAudio(),ue.value)return;await re.startLocalVideo({view:se.value})}catch(e){console.log("error :>> ",e),ce.showMultipleVideo=!1}}async function Me(){try{if(ce.showMultipleVideo=!1,function(){if(re.off(N.EVENT.ERROR,Oe),re.off(N.EVENT.REMOTE_USER_ENTER,we),re.off(N.EVENT.REMOTE_AUDIO_AVAILABLE,ye),re.off(N.EVENT.REMOTE_USER_EXIT,be),ue.value)return;re.off(N.EVENT.REMOTE_VIDEO_AVAILABLE,ke)}(),await re.exitRoom(),await re.stopLocalAudio(),ue.value)return;await re.stopLocalVideo()}catch(e){console.log("error :>> ",e)}}async function ke(e){const{userId:o,streamType:n}=e;try{n===N.TYPE.STREAM_TYPE_MAIN&&(await E(),await re.startRemoteVideo({userId:o,streamType:n,view:o}))}catch(e){console.log("error :>> ",e)}}function ye(e){const{userId:o}=e;ie.value.includes(o)||ie.value.push(o)}function we(e){const{userId:o}=e;ie.value.push(o),pe()}function be(e){console.log("event :>> 退房",e);const{userId:o}=e;ie.value=y(ie.value,[o])}function Oe(e){console.log("error :>> ",e),ce.showMultipleVideo=!1}return(e,o)=>(t(),s("div",x,[i("div",L,[c(i("span",{class:"title"},l(r(Ie)),513),[[a,Ve.value]]),u(r(g),{quaternary:"",circle:"",color:"#ffffffcc",onClick:Me},{icon:d((()=>[u(r(_),{component:r(T)},null,8,["component"])])),_:1})]),Ve.value?(t(),s("div",C,[i("div",S,[i("div",{ref_key:"selfVideoRef",ref:se,class:"video-view","data-name":r(ce).userInfo.name},null,8,U),i("div",j,[i("div",D,[i("div",$,[u(r(g),{text:"",color:r(ae)?"#fff":"#000",onClick:r(ve)},{icon:d((()=>[u(r(_),{component:r(ae)?r(I):r(A)},null,8,["component"])])),_:1},8,["color","onClick"]),z]),i("div",B,[u(r(g),{text:"",color:r(_e)?"#fff":"#000",disabled:r(ue),onClick:r(ge)},{icon:d((()=>[u(r(_),{component:r(_e)?r(h):r(R)},null,8,["component"])])),_:1},8,["color","disabled","onClick"]),H]),i("div",{class:"btn",onClick:Me},[u(r(g),{circle:"",color:"#f17568",class:"btn--rotate"},{icon:d((()=>[u(r(_),{component:r(M)},null,8,["component"])])),_:1}),P]),u(V,{onComfirm:Ae},{trigger:d((()=>[i("div",X,[u(r(g),{text:"",color:"#fff"},{icon:d((()=>[u(r(_),{component:r(k)},null,8,["component"])])),_:1}),Y])])),_:1})])])]),i("div",q,[(t(!0),s(p,null,m(ie.value,(e=>{return t(),s("div",{key:e,id:e,class:"video-view","data-name":(o=e,(null==(n=ce.userList.find((e=>e.id===o)))?void 0:n.name)||"二狗子")},null,8,G);var o,n})),128))])])):(t(),s(p,{key:1},[i("div",F,[i("span",J,l(r(Te))+"发起的"+l(r(fe))+"会议",1),r(de)?v("v-if",!0):(t(),s("span",K,"邀请你加入"+l(r(fe))+"会议",1))]),r(de)?(t(),s("div",Q,[u(V,{onComfirm:Ae},{trigger:d((()=>[u(r(g),{size:"large",circle:"",color:"#000"},{icon:d((()=>[u(r(_),{component:r(k)},null,8,["component"])])),_:1})])),_:1}),i("p",null,"已邀请共"+l(r(ce).currentAVMsg.checkedIds.length)+"人",1),u(r(g),{size:"large",strong:"",round:"",type:"primary",onClick:he},{default:d((()=>[f("开始会诊")])),_:1}),i("div",W,[u(r(g),{color:"#000",round:""},{icon:d((()=>[u(r(_),{component:r(I)},null,8,["component"])])),_:1}),u(r(g),{color:"#000",round:""},{icon:d((()=>[u(r(_),{component:r(h)},null,8,["component"])])),_:1})])])):(t(),s("div",Z,[i("div",ee,[u(r(g),{circle:"",color:"#f17568",class:"btn--rotate",onClick:o[0]||(o[0]=()=>r(ce).showMultipleVideo=!1)},{icon:d((()=>[u(r(_),{size:"30",component:r(M)},null,8,["component"])])),_:1}),oe]),i("div",ne,[u(r(g),{circle:"",color:"#2ac98b",onClick:Re},{icon:d((()=>[u(r(_),{size:"30",component:r(M)},null,8,["component"])])),_:1}),te])]))],64))]))}});export{se as default};
1
+ import{defineComponent as e,ref as o,computed as n,openBlock as t,createElementBlock as s,createElementVNode as i,withDirectives as c,toDisplayString as l,unref as a,vShow as r,createVNode as u,withCtx as d,Fragment as p,renderList as m,createCommentVNode as f,createTextVNode as v,nextTick as E}from"vue";import{NButton as g,NIcon as _}from"naive-ui";import V from"./ChatAdd.vue.js";import{Close as I,Mic as T,MicOff as A,Videocam as h,VideocamOff as R,Call as M,PersonAdd as k}from"@vicons/ionicons5";import{xorBy as y}from"lodash-es";import"date-fns";import{CHAT_TYPE as w,SUBSCRIBE_MESSAGE_TYPE as b}from"../constants/index.js";import"../utils/emoji.js";import"@vueuse/core";import{getUserDetailApi as O}from"../api/index.js";import{useVideo as N}from"../hooks/useVideo.js";import x from"trtc-sdk-v5";const C={class:"video-wrapper video-wrapper--multiple"},L={class:"video-header"},S={key:0,class:"video-main"},U={class:"video-main__left"},j=["data-name"],D={class:"video-bottom"},$={class:"btn-group"},z={class:"btn"},B=i("span",{class:"text"},"静音",-1),H={class:"btn"},P=i("span",{class:"text"},"摄像头",-1),X=i("span",{class:"text"},"结束会诊",-1),Y={class:"btn"},q=i("span",{class:"text"},"添加参会人",-1),G={class:"video-main__right"},F=["id","data-name"],J={class:"user"},K={class:"name"},Q={key:0,class:"tip"},W={key:0,class:"calling-box"},Z={class:"btn-box"},ee={key:1,class:"opt-btn"},oe={class:"btn"},ne=i("span",null,"拒接",-1),te={class:"btn"},se=i("span",null,"接听",-1);var ie=e({__name:"MultipleVideo",setup(e){const ie=o(),ce=o([]),{state:le,sendMessage:ae,trtc:re,voiceOpen:ue,isAudio:de,isCall:pe,startTimer:me,resetTimer:fe,toggleAudio:ve,messageTypeText:Ee,timing:ge,toggleVideo:_e,videocamOpen:Ve}=N(),Ie=o(!1),Te=n((()=>pe.value?le.userInfo.name:le.currentAVMsg.sendName)),Ae=n((()=>{if(!Ie.value)return"";const e=pe.value?`(${ce.value.length+1}/${le.currentAVMsg.checkedIds.length+1})`:"";return`${Te.value}发起的${Ee.value}会诊${e} ${ge.value}`}));function he(e){console.log("checkedIds :>> ",e),le.currentAVMsg.checkedIds.push(...e),Re()}function Re(){var e;(null==(e=le.currentAVMsg.checkedIds)?void 0:e.length)&&le.currentAVMsg.checkedIds.forEach((e=>{ae({chatType:w.SINGLE,content:{msg:le.currentAVMsg.chatMessageType+","+le.currentAVMsg.strRoomId,chatMessageType:b.AV_STATUS},receiver:e})})),Ie.value||Me()}async function Me(){const e=await x.isSupported();if(!e.result||!e.detail.isH264EncodeSupported||!e.detail.isH264DecodeSupported)return console.log("checkResult :>> ",e),void(le.showMultipleVideo=!1);try{if(await re.enterRoom({strRoomId:le.currentAVMsg.strRoomId,sdkAppId:parseInt(le.userInfo.sdkAppID),userId:le.userInfo.id,userSig:le.userInfo.userSig}),Ie.value=!0,me(),function(){if(re.on(x.EVENT.ERROR,xe),re.on(x.EVENT.REMOTE_USER_ENTER,be),re.on(x.EVENT.REMOTE_AUDIO_AVAILABLE,we),re.on(x.EVENT.REMOTE_USER_EXIT,Ne),de.value)return;re.on(x.EVENT.REMOTE_VIDEO_AVAILABLE,ye)}(),await re.startLocalAudio(),de.value)return;await re.startLocalVideo({view:ie.value})}catch(e){console.log("error :>> ",e),le.showMultipleVideo=!1}}async function ke(){try{if(le.showMultipleVideo=!1,function(){if(re.off(x.EVENT.ERROR,xe),re.off(x.EVENT.REMOTE_USER_ENTER,be),re.off(x.EVENT.REMOTE_AUDIO_AVAILABLE,we),re.off(x.EVENT.REMOTE_USER_EXIT,Ne),de.value)return;re.off(x.EVENT.REMOTE_VIDEO_AVAILABLE,ye)}(),await re.exitRoom(),await re.stopLocalAudio(),de.value)return;await re.stopLocalVideo()}catch(e){console.log("error :>> ",e)}}async function ye(e){const{userId:o,streamType:n}=e;try{n===x.TYPE.STREAM_TYPE_MAIN&&(await E(),await re.startRemoteVideo({userId:o,streamType:n,view:o}))}catch(e){console.log("error :>> ",e)}}async function we(e){var o;const{userId:n}=e;if(n&&!(null==(o=ce.value.map((e=>e.id)))?void 0:o.includes(n))){const e=await Oe(n);ce.value.push({id:n,name:e})}}async function be(e){const{userId:o}=e,n=await Oe(o);ce.value.push({id:o,name:n}),me()}async function Oe(e){const o=await O({userId:e});return(null==o?void 0:o.name)||""}function Ne(e){console.log("event :>> 退房",e);const{userId:o}=e;ce.value=y(ce.value,[{id:o,name:""}],"id")}function xe(e){console.log("error :>> ",e),le.showMultipleVideo=!1}return(e,o)=>(t(),s("div",C,[i("div",L,[c(i("span",{class:"title"},l(a(Ae)),513),[[r,Ie.value]]),u(a(g),{quaternary:"",circle:"",color:"#ffffffcc",onClick:ke},{icon:d((()=>[u(a(_),{component:a(I)},null,8,["component"])])),_:1})]),Ie.value?(t(),s("div",S,[i("div",U,[i("div",{ref_key:"selfVideoRef",ref:ie,class:"video-view","data-name":a(le).userInfo.name},null,8,j),i("div",D,[i("div",$,[i("div",z,[u(a(g),{text:"",color:a(ue)?"#fff":"#000",onClick:a(ve)},{icon:d((()=>[u(a(_),{component:a(ue)?a(T):a(A)},null,8,["component"])])),_:1},8,["color","onClick"]),B]),i("div",H,[u(a(g),{text:"",color:a(Ve)?"#fff":"#000",disabled:a(de),onClick:a(_e)},{icon:d((()=>[u(a(_),{component:a(Ve)?a(h):a(R)},null,8,["component"])])),_:1},8,["color","disabled","onClick"]),P]),i("div",{class:"btn",onClick:ke},[u(a(g),{circle:"",color:"#f17568",class:"btn--rotate"},{icon:d((()=>[u(a(_),{component:a(M)},null,8,["component"])])),_:1}),X]),u(V,{onComfirm:he},{trigger:d((()=>[i("div",Y,[u(a(g),{text:"",color:"#fff"},{icon:d((()=>[u(a(_),{component:a(k)},null,8,["component"])])),_:1}),q])])),_:1})])])]),i("div",G,[(t(!0),s(p,null,m(ce.value,(e=>(t(),s("div",{key:e.id,id:e.id,class:"video-view","data-name":e.name},null,8,F)))),128))])])):(t(),s(p,{key:1},[i("div",J,[i("span",K,l(a(Te))+"发起的"+l(a(Ee))+"会议",1),a(pe)?f("v-if",!0):(t(),s("span",Q,"邀请你加入"+l(a(Ee))+"会议",1))]),a(pe)?(t(),s("div",W,[u(V,{onComfirm:he},{trigger:d((()=>[u(a(g),{size:"large",circle:"",color:"#000"},{icon:d((()=>[u(a(_),{component:a(k)},null,8,["component"])])),_:1})])),_:1}),i("p",null,"已邀请共"+l(a(le).currentAVMsg.checkedIds.length)+"人",1),u(a(g),{size:"large",strong:"",round:"",type:"primary",onClick:Re},{default:d((()=>[v("开始会诊")])),_:1}),i("div",Z,[u(a(g),{color:"#000",round:""},{icon:d((()=>[u(a(_),{component:a(T)},null,8,["component"])])),_:1}),u(a(g),{color:"#000",round:""},{icon:d((()=>[u(a(_),{component:a(h)},null,8,["component"])])),_:1})])])):(t(),s("div",ee,[i("div",oe,[u(a(g),{circle:"",color:"#f17568",class:"btn--rotate",onClick:o[0]||(o[0]=()=>a(le).showMultipleVideo=!1)},{icon:d((()=>[u(a(_),{size:"30",component:a(M)},null,8,["component"])])),_:1}),ne]),i("div",te,[u(a(g),{circle:"",color:"#2ac98b",onClick:Me},{icon:d((()=>[u(a(_),{size:"30",component:a(M)},null,8,["component"])])),_:1}),se])]))],64))]))}});export{ie as default};
@@ -0,0 +1,11 @@
1
+ import { Ref } from 'vue';
2
+ import { AnyFn, AnyObject } from '../../../../shared/types';
3
+ export declare function useSearchUserList({ wrapperRef, keywordRef, before, after }: {
4
+ wrapperRef: Ref<HTMLElement>;
5
+ keywordRef: Ref<string>;
6
+ before?: AnyFn;
7
+ after?: AnyFn;
8
+ }): {
9
+ userList: Ref<AnyObject[]>;
10
+ handleInput: () => void;
11
+ };
@@ -0,0 +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:u,after:p}){const l={page:0,hasMore:!0},{state:c}=s(),f=e([]),m=t((function(){Object.assign(l,{page:0,hasMore:!0}),g()}),300);async function g(){if(!n.value)return void(u?u():f.value=[]);if(!l.hasMore)return;l.page++,1==l.page&&(f.value=[]);const e=await r({orgId:c.orgId,keyword:n.value,page:l.page,pageSize:10});o(e.records)&&f.value.length<=+e.total&&(f.value=l.page>1?f.value.concat(e.records):e.records,null==p||p(),f.value.length>=+e.total&&(l.hasMore=!1,console.log("没有更多消息了")))}return a(i,(()=>{g()})),{userList:f,handleInput:m}}export{i as useSearchUserList};
@@ -16,7 +16,6 @@ export type IState = {
16
16
  currentReferenceMsg: null | AnyObject;
17
17
  showVideo: boolean;
18
18
  currentAVMsg: AnyObject;
19
- userList: AnyObject[];
20
19
  currentGroupUser: AnyObject[];
21
20
  showMultipleVideo: boolean;
22
21
  };