cnhis-design-vue 3.2.6-release.2 → 3.2.6
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.
- package/es/components/button-print/src/utils/print.d.ts +4 -2
- package/es/components/button-print/src/utils/print.js +1 -1
- package/es/components/fabric-chart/src/constants/index.js +1 -1
- package/es/components/fabric-chart/src/hooks/temperature/useCenter.d.ts +1 -0
- package/es/components/fabric-chart/src/hooks/temperature/useCenter.js +1 -1
- package/es/components/fabric-chart/src/hooks/temperature/useOther.d.ts +2 -2
- package/es/components/fabric-chart/src/hooks/temperature/useOther.js +1 -1
- package/es/components/fabric-chart/src/hooks/temperature/useTemperatureChart.js +1 -1
- package/es/components/fabric-chart/src/hooks/useDraw.js +1 -1
- package/es/components/form-render/index.js +1 -1
- package/es/components/form-render/src/hooks/useFormEvent.js +1 -1
- package/es/components/form-render/src/utils/index.d.ts +1 -0
- package/es/components/form-render/src/utils/index.js +1 -1
- package/es/components/iho-chat/index.d.ts +497 -19
- package/es/components/iho-chat/src/Index.vue.d.ts +502 -24
- package/es/components/iho-chat/src/Index.vue2.js +1 -1
- package/es/components/iho-chat/src/api/index.d.ts +5 -0
- package/es/components/iho-chat/src/api/index.js +1 -1
- package/es/components/iho-chat/src/components/ChatAdd.vue.d.ts +89 -0
- package/es/components/iho-chat/src/components/ChatAdd.vue.js +1 -0
- package/es/components/iho-chat/src/components/ChatAdd.vue2.js +1 -0
- package/es/components/iho-chat/src/components/ChatFile.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatFooter.vue.d.ts +94 -4
- package/es/components/iho-chat/src/components/ChatFooter.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatHeader.vue.d.ts +129 -3
- package/es/components/iho-chat/src/components/ChatHeader.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatMain.vue.d.ts +24 -2
- package/es/components/iho-chat/src/components/ChatMain.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatRecord.vue.d.ts +0 -1
- package/es/components/iho-chat/src/components/ChatRecord.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatSearch.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatSet.vue.d.ts +16 -1
- package/es/components/iho-chat/src/components/ChatSet.vue2.js +1 -1
- package/es/components/iho-chat/src/components/MultipleVideo.vue.d.ts +133 -0
- package/es/components/iho-chat/src/components/MultipleVideo.vue.js +1 -0
- package/es/components/iho-chat/src/components/MultipleVideo.vue2.js +1 -0
- package/es/components/iho-chat/src/components/PersonProfile.vue.d.ts +15 -1
- package/es/components/iho-chat/src/components/PersonProfile.vue2.js +1 -1
- package/es/components/iho-chat/src/components/SiderList.vue2.js +1 -1
- package/es/components/iho-chat/src/components/Video.vue.d.ts +24 -13
- package/es/components/iho-chat/src/components/Video.vue2.js +1 -1
- package/es/components/iho-chat/src/constants/index.d.ts +10 -1
- package/es/components/iho-chat/src/constants/index.js +1 -1
- package/es/components/iho-chat/src/hooks/index.d.ts +1 -0
- package/es/components/iho-chat/src/hooks/index.js +1 -1
- package/es/components/iho-chat/src/hooks/useSession.d.ts +1 -0
- package/es/components/iho-chat/src/hooks/useSession.js +1 -1
- package/es/components/iho-chat/src/hooks/useState.d.ts +5 -0
- package/es/components/iho-chat/src/hooks/useState.js +1 -1
- package/es/components/iho-chat/src/hooks/useVideo.d.ts +24 -0
- package/es/components/iho-chat/src/hooks/useVideo.js +1 -0
- package/es/components/iho-chat/src/types/index.d.ts +3 -0
- package/es/components/iho-chat/src/utils/index.d.ts +2 -1
- package/es/components/iho-chat/src/utils/index.js +1 -1
- package/es/components/iho-chat/style/index.css +1 -1
- package/es/components/index.css +1 -1
- package/es/components/index.js +1 -1
- package/es/shared/package.json.js +1 -1
- package/package.json +2 -2
@@ -1,17 +1,22 @@
|
|
1
1
|
import { AnyObject } from '../../../../shared/types';
|
2
|
-
import { formatTime, downloadFile, simplifyMessage, isAudioOrVideoMessage } from '../utils';
|
2
|
+
import { formatTime, downloadFile, simplifyMessage, isAudioOrVideoMessage, getAVTime } from '../utils';
|
3
3
|
import { MESSAGE_TYPE } from '../constants';
|
4
4
|
declare const _default: import("vue").DefineComponent<{}, {
|
5
5
|
chatMainRef: import("vue").Ref<HTMLElement | undefined>;
|
6
6
|
state: import("../types").IState;
|
7
7
|
setMsgList: (list?: AnyObject[]) => void;
|
8
8
|
setCurrentSessionItem: (item: AnyObject) => void;
|
9
|
+
isGroupChat: import("vue").ComputedRef<boolean>;
|
9
10
|
showMenu: import("vue").Ref<boolean>;
|
10
11
|
pageInfo: {
|
11
12
|
page: number;
|
12
13
|
hasMore: boolean;
|
13
14
|
lastSendTime: string;
|
14
15
|
};
|
16
|
+
styleProps: import("vue").ComputedRef<{
|
17
|
+
'--c-tip-top': string;
|
18
|
+
'--c-tip-gap': string;
|
19
|
+
}>;
|
15
20
|
getHistoryRecord: () => Promise<void>;
|
16
21
|
showMessage: (item: AnyObject) => boolean;
|
17
22
|
showTemplateMsg: (item: AnyObject, type: 'system' | 'template') => boolean | undefined;
|
@@ -31,12 +36,20 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
31
36
|
type: StringConstructor;
|
32
37
|
required: true;
|
33
38
|
};
|
39
|
+
disabled: {
|
40
|
+
type: BooleanConstructor;
|
41
|
+
default: boolean;
|
42
|
+
};
|
34
43
|
}, {
|
35
44
|
props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
|
36
45
|
userId: {
|
37
46
|
type: StringConstructor;
|
38
47
|
required: true;
|
39
48
|
};
|
49
|
+
disabled: {
|
50
|
+
type: BooleanConstructor;
|
51
|
+
default: boolean;
|
52
|
+
};
|
40
53
|
}>> & {
|
41
54
|
onClose?: ((...args: any[]) => any) | undefined;
|
42
55
|
}>>;
|
@@ -79,9 +92,15 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
79
92
|
type: StringConstructor;
|
80
93
|
required: true;
|
81
94
|
};
|
95
|
+
disabled: {
|
96
|
+
type: BooleanConstructor;
|
97
|
+
default: boolean;
|
98
|
+
};
|
82
99
|
}>> & {
|
83
100
|
onClose?: ((...args: any[]) => any) | undefined;
|
84
|
-
}, {
|
101
|
+
}, {
|
102
|
+
disabled: boolean;
|
103
|
+
}>;
|
85
104
|
MessageTemplate: import("vue").DefineComponent<{
|
86
105
|
data: {
|
87
106
|
type: import("vue").PropType<AnyObject>;
|
@@ -184,8 +203,11 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
184
203
|
downloadFile: typeof downloadFile;
|
185
204
|
simplifyMessage: typeof simplifyMessage;
|
186
205
|
isAudioOrVideoMessage: typeof isAudioOrVideoMessage;
|
206
|
+
getAVTime: typeof getAVTime;
|
187
207
|
MESSAGE_TYPE: typeof MESSAGE_TYPE;
|
188
208
|
ChatbubbleEllipsesOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
189
209
|
EllipsisHorizontal: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
210
|
+
CallOutline: 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<{}>>, {}>;
|
211
|
+
VideocamOutline: 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<{}>>, {}>;
|
190
212
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
191
213
|
export default _default;
|
@@ -1 +1 @@
|
|
1
|
-
import{defineComponent as e,ref as t,
|
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 v,createBlock as f,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 E,readMessageApi as j}from"../api/index.js";import{useState as L}from"../hooks/useState.js";import{useSession as x}from"../hooks/useSession.js";import{MESSAGE_TYPE as A}from"../constants/index.js";import"trtc-sdk-v5";import{formatTime as C,isAudioOrVideoMessage as b,simplifyMessage as H,getAVTime as w,downloadFile as O}from"../utils/index.js";import{first as z,last as D,isNumber as P}from"lodash-es";import q from"./PersonProfile.vue.js";import N from"./MessageTemplate.vue.js";import{emojis as U}from"../utils/emoji.js";import R from"./ContextMenu.js";import{useScrollLoading as G}from"../hooks/useScrollLoading.js";import{CallOutline as J,VideocamOutline as K,ChatbubbleEllipsesOutline as F,EllipsisHorizontal as X}from"@vicons/ionicons5";const B={key:0,class:"time"},Q={key:2,class:"message-box"},V={key:0,class:"content-box"},W={class:"name-box"},Y=["data-time"],Z={key:0,class:"reference-content"},$=["innerHTML"],ee=["innerHTML"],te=["src"],ne={style:{"margin-left":"8px"}},se=["href","onClick"],oe=y("i",{class:"chat--iconfont chat--icon-face"},null,-1);var ie=e({__name:"ChatMain",setup(e){const ie=t(),{state:ae,setMsgList:re}=L(),{setCurrentSessionItem:ce,isGroupChat:le}=x(ae),me=t(!1),ue={page:0,hasMore:!0,lastSendTime:S(new Date,"yyyy-MM-dd HH:mm:ss")},pe=n((()=>({"--c-tip-top":le.value?"1px":"-20px","--c-tip-gap":le.value?"10px":"0px"})));async function de(){try{if(!ue.hasMore)return;ue.page++;const e=await E({sessionKey:ae.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,re(ue.page>1?[...e,...ae.msgList]:e),1===ue.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)}}function ve(e){const{chatMessageType:t,messageTemplate:n}=e.content;return t!==A.TEMPLATE||!!n}function fe(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=P(e.sendTime)?e.sendTime:Date.parse(e.sendTime),o=null==(n=ae.msgList[t-1])?void 0:n.sendTime;return s-(0===t?0:P(o)?o:Date.parse(o))>3e5}return G(ie,(()=>{de()}),"top"),s((()=>ae.id),(e=>{e&&(Object.assign(ue,{page:0,hasMore:!0,lastSendTime:S(new Date,"yyyy-MM-dd HH:mm:ss")}),de())}),{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(pe))},[l(r(T),{"show-toolbar-tooltip":""},{default:m((()=>[(o(!0),i(u,null,p(r(ae).msgList,((e,n)=>(o(),i(u,{key:n},[ve(e)?(o(),i("div",{key:0,class:a(["message-item",{"message-item--mine":e.sender==r(ae).userInfo.id}])},[ge(e,n)?(o(),i("p",B,d(r(C)(e.sendTime).recordTime),1)):v("v-if",!0),fe(e,"system")?(o(),f(N,{key:1,data:e},null,8,["data"])):(o(),i("div",Q,[l(q,{"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",V,[y("div",W,[y("span",{class:"name","data-time":e.__time},d(r(le)?e.senderName:""),9,Y)]),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(b)(e.content)}]),onContextmenu:t[0]||(t[0]=g((e=>me.value=!0),["prevent"]))},[e.content.chatMessageType===r(A).TEXT?(o(),i(u,{key:0},[e.content.referenceContent?(o(),i("div",Z,[y("span",null,d(e.content.referenceContent.senderName)+":",1),y("pre",{innerHTML:r(H)(e.content.referenceContent.content)},null,8,$)])):v("v-if",!0),y("pre",{innerHTML:e.__content},null,8,ee)],64)):v("v-if",!0),e.content.chatMessageType===r(A).EMOJI?(o(),i("img",{key:1,src:r(U).findEmoji(e.__content)},null,8,te)):v("v-if",!0),fe(e,"template")?(o(),f(N,{key:2,data:e},null,8,["data"])):v("v-if",!0),e.content.chatMessageType===r(A).IMAGE?(o(),f(r(M),{key:3,width:"240",src:e.__content},null,8,["src"])):v("v-if",!0),r(b)(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(J):r(K)},null,8,["class","component"]),y("span",ne,d(r(w)(e.__content)),1)],64)):v("v-if",!0),e.content.chatMessageType===r(A).FILE?(o(),i("a",{key:5,href:e.content.fileUrl,onClick:g((()=>r(O)(e.content.fileUrl,e.__content)),["prevent"])},d(e.__content),9,se)):v("v-if",!0),v(' <div class="quick-menu">\n\t\t\t\t\t\t\t\t\t<n-icon :component="AddCircleOutline" />\n\t\t\t\t\t\t\t\t\t<n-icon :component="ChatbubbleEllipsesOutline" @click="() => setReferenceMsg(item)" />\n\t\t\t\t\t\t\t\t\t<n-icon :component="EllipsisHorizontal" />\n\t\t\t\t\t\t\t\t</div> '),l(r(_),{class:"quick-menu"},{default:m((()=>[l(r(I),{quaternary:"",size:"tiny"},{icon:m((()=>[oe])),_:1}),l(r(I),{quaternary:"",size:"tiny",onClick:()=>{return t=e,ae.currentReferenceMsg=t,void Object.assign(ae.currentReferenceMsg,{chatType:ae.currentSessionItem.chatType,receiver:ae.currentSessionItem.receiver,receiverAvatar:ae.currentSessionItem.avatar,receiverName:ae.currentSessionItem.name});var t}},{icon:m((()=>[l(r(k),{size:"17",component:r(F)},null,8,["component"])])),_:2},1032,["onClick"]),l(r(I),{quaternary:"",size:"tiny"},{icon:m((()=>[l(r(k),{component:r(X)},null,8,["component"])])),_:1})])),_:2},1024)],34)])):v("v-if",!0)]))],2)):v("v-if",!0)],64)))),128))])),_:1}),l(r(R),{show:me.value,"onUpdate:show":t[1]||(t[1]=e=>me.value=e)},null,8,["show"])],6))}});export{ie as default};
|
@@ -30,7 +30,6 @@ declare const _default: import("vue").DefineComponent<{
|
|
30
30
|
lastSendTime: string;
|
31
31
|
};
|
32
32
|
handleSearch: () => Promise<void>;
|
33
|
-
options: import("vue").ComputedRef<AnyObject[]>;
|
34
33
|
resetAndSearch: () => void;
|
35
34
|
startDateDisabled: (ts: number) => boolean;
|
36
35
|
endDateDisabled: (ts: number) => boolean;
|
@@ -1 +1 @@
|
|
1
|
-
import{defineComponent as e,ref as a,
|
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:"no-data"},re={class:"time-target__item"},oe=n("span",null,"结束:",-1),ne={class:"no-data"};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: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 +1 @@
|
|
1
|
-
import{defineComponent as e,ref as o,watch as s,nextTick as
|
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};
|
@@ -5,6 +5,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
5
5
|
};
|
6
6
|
state: import("../types").IState;
|
7
7
|
setCurrentSessionItem: (item: AnyObject) => void;
|
8
|
+
isGroupChat: import("vue").ComputedRef<boolean>;
|
8
9
|
handleTopping: (value: boolean) => Promise<void>;
|
9
10
|
closeUserDetail: () => void;
|
10
11
|
NDrawer: any;
|
@@ -18,12 +19,20 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
18
19
|
type: StringConstructor;
|
19
20
|
required: true;
|
20
21
|
};
|
22
|
+
disabled: {
|
23
|
+
type: BooleanConstructor;
|
24
|
+
default: boolean;
|
25
|
+
};
|
21
26
|
}, {
|
22
27
|
props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
|
23
28
|
userId: {
|
24
29
|
type: StringConstructor;
|
25
30
|
required: true;
|
26
31
|
};
|
32
|
+
disabled: {
|
33
|
+
type: BooleanConstructor;
|
34
|
+
default: boolean;
|
35
|
+
};
|
27
36
|
}>> & {
|
28
37
|
onClose?: ((...args: any[]) => any) | undefined;
|
29
38
|
}>>;
|
@@ -66,8 +75,14 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
66
75
|
type: StringConstructor;
|
67
76
|
required: true;
|
68
77
|
};
|
78
|
+
disabled: {
|
79
|
+
type: BooleanConstructor;
|
80
|
+
default: boolean;
|
81
|
+
};
|
69
82
|
}>> & {
|
70
83
|
onClose?: ((...args: any[]) => any) | undefined;
|
71
|
-
}, {
|
84
|
+
}, {
|
85
|
+
disabled: boolean;
|
86
|
+
}>;
|
72
87
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
73
88
|
export default _default;
|
@@ -1 +1 @@
|
|
1
|
-
import{defineComponent as e,useAttrs as s,openBlock as t,createBlock as o,unref as
|
1
|
+
import{defineComponent as e,useAttrs as s,openBlock as t,createBlock as o,unref as i,withCtx as r,createVNode as n,createElementVNode as a,toDisplayString as m}from"vue";import{NDrawer as c,NDrawerContent as l,NAvatar as u,NIcon as p,NSwitch as d}from"naive-ui";import{ChevronForwardOutline as f}from"@vicons/ionicons5";import{useState as h}from"../hooks/useState.js";import{useSession as v}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import{isFunction as S}from"lodash-es";import"../utils/emoji.js";import g from"./PersonProfile.vue.js";import{toppingSessionApi as _}from"../api/index.js";const I={class:"chat-set-wrapper"},j={class:"item user-info"},w={class:"item"},b=a("span",{class:"label"},"置顶聊天",-1);var k=e({__name:"ChatSet",setup(e){const k=s(),{state:y}=h(),{setCurrentSessionItem:C,isGroupChat:U}=v(y);async function x(e){try{await _({sessionKey:y.currentSessionItem.sessionKey,id:y.currentSessionItem.id,topping:e}),C({topping:e})}catch(e){console.log(e)}}function z(){S(k["onUpdate:show"])&&k["onUpdate:show"](!1)}return(e,s)=>(t(),o(i(c),{width:320,"trap-focus":!1,"block-scroll":!1,to:".iho-chat"},{default:r((()=>[n(i(l),{title:"聊天设置"},{default:r((()=>[a("div",I,[n(g,{"user-id":i(y).currentSessionItem.receiver,onClose:z,disabled:!!i(U)},{trigger:r((()=>[a("div",j,[n(i(u),{round:"",size:40,src:i(y).currentSessionItem.avatar},null,8,["src"]),a("span",null,m(i(y).currentSessionItem.name),1),n(i(p),{size:24,component:i(f),class:"item__right"},null,8,["component"])])])),_:1},8,["user-id","disabled"]),a("div",w,[b,n(i(d),{value:i(y).currentSessionItem.topping,"onUpdate:value":[s[0]||(s[0]=e=>i(y).currentSessionItem.topping=e),x],class:"item__right"},null,8,["value"])])])])),_:1})])),_:1}))}});export{k as default};
|
@@ -0,0 +1,133 @@
|
|
1
|
+
import TRTC from 'trtc-sdk-v5';
|
2
|
+
declare const _default: import("vue").DefineComponent<{}, {
|
3
|
+
selfVideoRef: import("vue").Ref<any>;
|
4
|
+
remoteUsers: import("vue").Ref<string[]>;
|
5
|
+
state: import("../types").IState;
|
6
|
+
sendMessage: (message: {
|
7
|
+
chatType?: string | undefined;
|
8
|
+
content: import("../../../../shared/types").AnyObject;
|
9
|
+
receiver?: string | undefined;
|
10
|
+
}) => Promise<void>;
|
11
|
+
trtc: TRTC;
|
12
|
+
voiceOpen: import("vue").Ref<boolean>;
|
13
|
+
isAudio: import("vue").ComputedRef<boolean>;
|
14
|
+
isCall: import("vue").ComputedRef<boolean>;
|
15
|
+
startTimer: () => void;
|
16
|
+
resetTimer: () => void;
|
17
|
+
toggleAudio: () => Promise<void>;
|
18
|
+
messageTypeText: import("vue").ComputedRef<"语音" | "视频">;
|
19
|
+
timing: import("vue").Ref<string>;
|
20
|
+
toggleVideo: () => Promise<void>;
|
21
|
+
videocamOpen: import("vue").Ref<boolean>;
|
22
|
+
isConnect: import("vue").Ref<boolean>;
|
23
|
+
callUser: import("vue").ComputedRef<any>;
|
24
|
+
title: import("vue").ComputedRef<string>;
|
25
|
+
handleAddPerson: (checkedIds: string[]) => void;
|
26
|
+
handleCall: () => void;
|
27
|
+
handleEnter: () => Promise<void>;
|
28
|
+
handleExit: () => Promise<void>;
|
29
|
+
installEventHandlers: () => void;
|
30
|
+
uninstallEventHandlers: () => void;
|
31
|
+
handleRemoteVideoAvailable: (event: any) => Promise<void>;
|
32
|
+
handleRemoteAudioAvailable: (event: any) => void;
|
33
|
+
handleRemoteUserEnter: (event: any) => void;
|
34
|
+
handleRemoteUserExit: (event: any) => void;
|
35
|
+
handleError: (error: any) => void;
|
36
|
+
getName: (id: string) => any;
|
37
|
+
NButton: any;
|
38
|
+
NIcon: any;
|
39
|
+
ChatAdd: import("vue").DefineComponent<{
|
40
|
+
title: {
|
41
|
+
type: StringConstructor;
|
42
|
+
default: string;
|
43
|
+
};
|
44
|
+
mode: {
|
45
|
+
type: StringConstructor;
|
46
|
+
default: string;
|
47
|
+
};
|
48
|
+
options: {
|
49
|
+
type: import("vue").PropType<import("../../../../shared/types").AnyObject[]>;
|
50
|
+
};
|
51
|
+
disabledIds: {
|
52
|
+
type: import("vue").PropType<string[]>;
|
53
|
+
};
|
54
|
+
defaultValue: {
|
55
|
+
type: import("vue").PropType<string[]>;
|
56
|
+
};
|
57
|
+
}, {
|
58
|
+
props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
|
59
|
+
title: {
|
60
|
+
type: StringConstructor;
|
61
|
+
default: string;
|
62
|
+
};
|
63
|
+
mode: {
|
64
|
+
type: StringConstructor;
|
65
|
+
default: string;
|
66
|
+
};
|
67
|
+
options: {
|
68
|
+
type: import("vue").PropType<import("../../../../shared/types").AnyObject[]>;
|
69
|
+
};
|
70
|
+
disabledIds: {
|
71
|
+
type: import("vue").PropType<string[]>;
|
72
|
+
};
|
73
|
+
defaultValue: {
|
74
|
+
type: import("vue").PropType<string[]>;
|
75
|
+
};
|
76
|
+
}>> & {
|
77
|
+
onComfirm?: ((...args: any[]) => any) | undefined;
|
78
|
+
}>>;
|
79
|
+
emit: (event: "comfirm", ...args: any[]) => void;
|
80
|
+
state: import("../types").IState;
|
81
|
+
showModal: import("vue").Ref<boolean>;
|
82
|
+
checkedIds: import("vue").Ref<(string | number)[]>;
|
83
|
+
options: import("vue").Ref<import("../../../../shared/types").AnyObject[]>;
|
84
|
+
groupName: import("vue").Ref<string>;
|
85
|
+
btnDisabled: import("vue").ComputedRef<boolean>;
|
86
|
+
handlePositiveClick: () => Promise<void>;
|
87
|
+
renderSourceLabel: ({ option }: {
|
88
|
+
option: import("../../../../shared/types").AnyObject;
|
89
|
+
}) => JSX.Element;
|
90
|
+
renderTargetList: (props: {
|
91
|
+
onCheck: (checkedValueList: (string | number)[]) => void;
|
92
|
+
checkedOptions: import("../../../../shared/types").AnyObject[];
|
93
|
+
pattern: string;
|
94
|
+
}) => JSX.Element | null;
|
95
|
+
NModal: any;
|
96
|
+
NButton: any;
|
97
|
+
NTransfer: any;
|
98
|
+
NIcon: any;
|
99
|
+
NInput: any;
|
100
|
+
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<{}>>, {}>;
|
101
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "comfirm"[], "comfirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
102
|
+
title: {
|
103
|
+
type: StringConstructor;
|
104
|
+
default: string;
|
105
|
+
};
|
106
|
+
mode: {
|
107
|
+
type: StringConstructor;
|
108
|
+
default: string;
|
109
|
+
};
|
110
|
+
options: {
|
111
|
+
type: import("vue").PropType<import("../../../../shared/types").AnyObject[]>;
|
112
|
+
};
|
113
|
+
disabledIds: {
|
114
|
+
type: import("vue").PropType<string[]>;
|
115
|
+
};
|
116
|
+
defaultValue: {
|
117
|
+
type: import("vue").PropType<string[]>;
|
118
|
+
};
|
119
|
+
}>> & {
|
120
|
+
onComfirm?: ((...args: any[]) => any) | undefined;
|
121
|
+
}, {
|
122
|
+
mode: string;
|
123
|
+
title: string;
|
124
|
+
}>;
|
125
|
+
Call: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
126
|
+
Videocam: 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<{}>>, {}>;
|
127
|
+
VideocamOff: 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<{}>>, {}>;
|
128
|
+
Mic: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
129
|
+
PersonAdd: 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<{}>>, {}>;
|
130
|
+
MicOff: 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<{}>>, {}>;
|
131
|
+
Close: 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<{}>>, {}>;
|
132
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
133
|
+
export default _default;
|
@@ -0,0 +1 @@
|
|
1
|
+
import e from"./MultipleVideo.vue2.js";import i from"../../../../_virtual/_plugin-vue_export-helper.js";var l=i(e,[["__file","MultipleVideo.vue"]]);export{l as default};
|
@@ -0,0 +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 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 T,Mic as I,MicOff as A,Videocam as h,VideocamOff as R,Call as M,PersonAdd as k}from"@vicons/ionicons5";import"date-fns";import{xor as y}from"lodash-es";import{CHAT_TYPE as w,SUBSCRIBE_MESSAGE_TYPE as b}from"../constants/index.js";import"../utils/emoji.js";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:fe,messageTypeText:ve,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}发起的${ve.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(fe)},{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(ve))+"会议",1),r(de)?f("v-if",!0):(t(),s("span",K,"邀请你加入"+l(r(ve))+"会议",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((()=>[v("开始会诊")])),_: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};
|
@@ -5,12 +5,20 @@ declare const _default: import("vue").DefineComponent<{
|
|
5
5
|
type: StringConstructor;
|
6
6
|
required: true;
|
7
7
|
};
|
8
|
+
disabled: {
|
9
|
+
type: BooleanConstructor;
|
10
|
+
default: boolean;
|
11
|
+
};
|
8
12
|
}, {
|
9
13
|
props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
|
10
14
|
userId: {
|
11
15
|
type: StringConstructor;
|
12
16
|
required: true;
|
13
17
|
};
|
18
|
+
disabled: {
|
19
|
+
type: BooleanConstructor;
|
20
|
+
default: boolean;
|
21
|
+
};
|
14
22
|
}>> & {
|
15
23
|
onClose?: ((...args: any[]) => any) | undefined;
|
16
24
|
}>>;
|
@@ -53,7 +61,13 @@ declare const _default: import("vue").DefineComponent<{
|
|
53
61
|
type: StringConstructor;
|
54
62
|
required: true;
|
55
63
|
};
|
64
|
+
disabled: {
|
65
|
+
type: BooleanConstructor;
|
66
|
+
default: boolean;
|
67
|
+
};
|
56
68
|
}>> & {
|
57
69
|
onClose?: ((...args: any[]) => any) | undefined;
|
58
|
-
}, {
|
70
|
+
}, {
|
71
|
+
disabled: boolean;
|
72
|
+
}>;
|
59
73
|
export default _default;
|
@@ -1 +1 @@
|
|
1
|
-
import{defineComponent as e,ref as o,reactive as
|
1
|
+
import{defineComponent as e,ref as o,reactive as a,computed as l,openBlock as n,createBlock as s,unref as r,createSlots as t,withCtx as i,createElementBlock as c,Fragment as u,withDirectives as p,createElementVNode as d,createVNode as v,vShow as m,toDisplayString as f,createTextVNode as y,renderList as k,createCommentVNode as b,renderSlot as g}from"vue";import{NPopover as h,NAvatar as _,NUpload as w,NUploadTrigger as C,NButton as I,NIcon as j}from"naive-ui";import{Camera as z,ChatbubbleEllipses as x,EyeOffOutline as N,EyeOutline as S,Close as $}from"@vicons/ionicons5";import{useState as D}from"../hooks/useState.js";import{useSession as P}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import"lodash-es";import"../utils/emoji.js";import{openSessionApi as T,getUserDetailApi as q,uploadFileApi as B}from"../api/index.js";const E={class:"popover-person"},F={class:"popover-person__left"},O={class:"profile"},U={class:"profile__text"},A={class:"popover-person__right"},G={class:"label"},H={class:"content"};var J=e({__name:"PersonProfile",props:{userId:{type:String,required:!0},disabled:{type:Boolean,default:!1}},emits:["close"],setup(e,{emit:J}){const K=e,{state:L}=D(),{openSession:M}=P(L),Q=o(!1),R=o(!1),V=o(!1),W=a({}),X=[{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"}],Y=l((()=>(W.id&&X.forEach((e=>{const{key:o}=e;e.value=W[o]})),X)));async function Z(){Q.value=!1;const e=await T({chatType:L.currentSessionItem.chatType,receiver:K.userId,sender:L.userInfo.id});M(e),J("close")}async function ee(e){if(!e)return;const o=await q({userId:K.userId});(null==o?void 0:o.id)?Object.assign(W,o):W.id=""}function oe(e){const{key:o,value:a}=e;return"phone"!==o||V.value?a:(a||"").replace(/(\d{3})\d{4}(\d{4})/,"$1****$2")}async function ae(e){const{file:o,name:a}=e.file,l=new FormData;l.append("sender",L.userInfo.id),l.append("file",o);const n=await B(l);if(W.avatar=n,!n)return console.log("上传失败")}return(o,a)=>(n(),s(r(h),{show:Q.value,"onUpdate:show":[a[3]||(a[3]=e=>Q.value=e),ee],trigger:e.disabled?"manual":"click","show-arrow":!1,scrollable:"",delay:0},t({default:i((()=>[W.id?(n(),c(u,{key:0},[p(d("div",E,[d("div",F,[d("div",O,[v(r(_),{src:W.avatar,bordered:"",round:"",size:100,onClickCapture:a[0]||(a[0]=e=>R.value=!0)},null,8,["src"]),v(r(w),{abstract:"",accept:"image/*",onChange:ae},{default:i((()=>[v(r(C),{abstract:""},{default:i((({handleClick:e})=>[p(v(r(I),{circle:"",secondary:"",class:"edit-avatar",onClick:e},{icon:i((()=>[v(r(j),{size:"16",color:"#666666",component:r(z)},null,8,["component"])])),_:2},1032,["onClick"]),[[m,W.id===r(L).userInfo.id]])])),_:1})])),_:1}),d("div",U,[d("h4",null,f(W.name),1),d("p",null,f(W.orgName),1)]),v(r(I),{strong:"",secondary:"",onClick:Z},{default:i((()=>[v(r(j),{size:"13",color:"#666666",component:r(x),style:{"margin-right":"6px"}},null,8,["component"]),y(" 发消息 ")])),_:1})])]),d("div",A,[(n(!0),c(u,null,k(r(Y),((e,o)=>(n(),c("div",{class:"info-item",key:o},[d("span",G,f(e.label),1),d("div",H,[d("span",null,f(oe(e)),1),"phone"===e.key&&oe(e)?(n(),s(r(j),{key:0,size:"16",color:"#666666",component:V.value?r(N):r(S),style:{"margin-left":"10px"},onClick:a[1]||(a[1]=e=>V.value=!V.value)},null,8,["component"])):b("v-if",!0)])])))),128))])],512),[[m,!R.value]]),p(d("div",{class:"large-avatar",onClick:a[2]||(a[2]=e=>R.value=!1)},[v(r(I),{circle:"",size:"small",secondary:""},{icon:i((()=>[v(r(j),{size:24,component:r($),color:"#fff"},null,8,["component"])])),_:1}),v(r(_),{size:310,round:"",src:W.avatar},null,8,["src"])],512),[[m,R.value]])],64)):b("v-if",!0)])),_:2},[k(o.$slots,((e,a)=>({name:a,fn:i((()=>[g(o.$slots,a)]))})))]),1032,["show","trigger"]))}});export{J as default};
|
@@ -1 +1 @@
|
|
1
|
-
import{defineComponent as e,ref as s,computed as i,watch as
|
1
|
+
import{defineComponent as e,ref as s,computed as i,watch as t,withDirectives as n,openBlock as a,createElementBlock as l,normalizeStyle as o,unref as r,createBlock as u,createCommentVNode as d,createElementVNode as m,Fragment as v,renderList as c,withCtx as p,createTextVNode as f,toDisplayString as k,normalizeClass as y,createVNode as _,vShow as h}from"vue";import{NSpin as S,NTag as g,NAvatar as b,NBadge as x}from"naive-ui";import{useState as M}from"../hooks/useState.js";import{useSession as L}from"../hooks/useSession.js";import"trtc-sdk-v5";import{listSort as C,formatTime as j}from"../utils/index.js";import{vFlexibleResize as N}from"../../../../shared/directive/flexibleResize.js";const T={class:"sider-list__filter box-shadow"},K=["onClick"],w={class:"avatar-right"},I={class:"name"},R={class:"msg-tip"},z={class:"msg-tip__content"},H=["innerHTML"];var U=e({__name:"SiderList",setup(e){const U="all",B="unread",E=s(300),O=s(),V=s(!1),q=s([{label:"全部",key:U},{label:"未读",key:B}]),A=s("all"),{state:D,emit:F}=M(),{openSession:G,unreadTotal:J,setSessionList:P}=L(D),Q=i((()=>Math.min(Math.max(E.value,240),360))),W=i((()=>C(D.sessionList)));function X(e){!e.id||D.sessionList.map((e=>e.id)).includes(e.id)?D.sessionList.forEach((s=>{if(s.sessionKey===e.sessionKey){let{unreadNum:i=0}=s;Object.assign(s,e),e.sessionKey!==D.currentSessionItem.sessionKey&&(s.unreadNum=++i)}})):P([...D.sessionList,e])}function Y({distance:e}){E.value=E.value+e}function Z(e,s=r(A)){var i;return s===U||(s===B?(null!=(i=e.unreadNum)?i:0)>0:void 0)}return t([()=>D.isChangeSession,()=>D.isUpdateSession],(([e,s])=>{e&&(X(D.currentSessionItem),D.isChangeSession=!1),s&&(X(D.updateSessionItem),D.isUpdateSession=!1)}),{immediate:!0}),t((()=>J.value),(e=>{const s=W.value.filter((e=>Z(e,B)));F("unread-message-update",e,s)})),(e,s)=>n((a(),l("section",{class:"sider-list",style:o({width:r(Q)+"px"})},[V.value?(a(),u(r(S),{key:0,stroke:"#5585f5"})):d("v-if",!0),d(' <n-input v-else placeholder="输入用户名模糊搜索" v-model:value="keyword" @keyup.enter="handleSearch"></n-input> '),m("div",T,[(a(!0),l(v,null,c(q.value,(e=>(a(),u(r(g),{type:A.value===e.key?"info":"default",round:"",bordered:!1,key:e.key,onClick:()=>{return s=e.key,void(A.value=s);var s}},{default:p((()=>[f(k(e.label)+"("+k(r(J))+") ",1)])),_:2},1032,["type","onClick"])))),128))]),m("div",{class:"sider-list__box",ref_key:"listBoxRef",ref:O},[(a(!0),l(v,null,c(r(W),(e=>n((a(),l("div",{key:e.id,onClick:()=>r(G)(e),class:y(["sider-list__box__item",{active:e.id===r(D).id},e.topping?"sider-list__box__item--top":""])},[_(r(b),{round:"",size:"large",src:e.avatar},null,8,["src"]),m("div",w,[m("div",I,[m("h4",null,k(e.name),1),m("span",null,k(e.lastMessage?r(j)(e.lastMessageSendTime).siderMsgTime:""),1)]),m("div",R,[m("div",z,[m("div",{innerHTML:e.lastMessageContent},null,8,H)]),_(r(x),{value:e.unreadNum>99?"99+":e.unreadNum},null,8,["value"])])])],10,K)),[[h,Z(e)]]))),128))],512)],4)),[[r(N),{mode:"VR",onMove:Y}]])}});export{U as default};
|
@@ -1,26 +1,40 @@
|
|
1
1
|
import TRTC from 'trtc-sdk-v5';
|
2
|
-
import {
|
2
|
+
import { AV_STATUS } from '../constants';
|
3
3
|
declare const _default: import("vue").DefineComponent<{}, {
|
4
|
+
sendMessage: (message: {
|
5
|
+
chatType?: string | undefined;
|
6
|
+
content: import("../../../../shared/types").AnyObject;
|
7
|
+
receiver?: string | undefined;
|
8
|
+
}) => Promise<void>;
|
9
|
+
state: import("../types").IState;
|
10
|
+
trtc: TRTC;
|
11
|
+
timing: import("vue").Ref<string>;
|
12
|
+
voiceOpen: import("vue").Ref<boolean>;
|
13
|
+
isAudio: import("vue").ComputedRef<boolean>;
|
14
|
+
isCall: import("vue").ComputedRef<boolean>;
|
15
|
+
startTimer: () => void;
|
16
|
+
resetTimer: () => void;
|
17
|
+
toggleAudio: () => Promise<void>;
|
18
|
+
messageTypeText: import("vue").ComputedRef<"语音" | "视频">;
|
4
19
|
time: {
|
5
20
|
timer: any;
|
6
21
|
seconds: number;
|
7
22
|
};
|
8
|
-
state: import("../types").IState;
|
9
23
|
videoRef: import("vue").Ref<any>;
|
10
24
|
selfVideoRef: import("vue").Ref<any>;
|
11
|
-
tipContent: import("vue").Ref<any>;
|
12
25
|
isConnect: import("vue").Ref<boolean>;
|
13
|
-
|
14
|
-
messageType: import("vue").ComputedRef<any>;
|
15
|
-
callMode: import("vue").ComputedRef<any>;
|
26
|
+
timeout: any;
|
16
27
|
info: import("vue").ComputedRef<{
|
17
|
-
sessionKey: any;
|
18
28
|
avatar: any;
|
19
29
|
name: any;
|
20
30
|
userId: any;
|
21
31
|
}>;
|
22
|
-
|
32
|
+
tipContent: import("vue").ComputedRef<string>;
|
33
|
+
status: import("vue").ComputedRef<any>;
|
34
|
+
handleStatus: (status?: AV_STATUS) => Promise<void>;
|
35
|
+
init: () => Promise<void>;
|
23
36
|
handleEnter: () => Promise<void>;
|
37
|
+
handleFinish: () => void;
|
24
38
|
handleExit: () => Promise<void>;
|
25
39
|
installEventHandlers: () => void;
|
26
40
|
uninstallEventHandlers: () => void;
|
@@ -28,16 +42,13 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
28
42
|
handleRemoteAudioAvailable: (event: any) => void;
|
29
43
|
handleRemoteUserEnter: () => void;
|
30
44
|
handleRemoteUserExit: (event: any) => void;
|
31
|
-
|
32
|
-
resetTimer: () => void;
|
33
|
-
formatSeconds: (seconds: number) => string;
|
34
|
-
toggleAudio: () => Promise<void>;
|
45
|
+
handleError: (error: any) => void;
|
35
46
|
NButton: any;
|
36
47
|
NAvatar: any;
|
37
48
|
NIcon: any;
|
38
49
|
Call: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
39
50
|
MicOffCircle: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
40
51
|
Mic: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
41
|
-
|
52
|
+
AV_STATUS: typeof AV_STATUS;
|
42
53
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
43
54
|
export default _default;
|