cnhis-design-vue 3.2.7 → 3.2.8-beta.1
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/README.md +87 -87
- package/es/components/button-print/index.d.ts +2 -0
- package/es/components/button-print/src/ButtonPrint.vue.d.ts +2 -0
- package/es/components/button-print/src/components/NewPrintComponent.vue.d.ts +1 -0
- package/es/components/button-print/src/components/NewPrintComponent.vue2.js +1 -1
- package/es/components/button-print/src/components/OldPrintComponent.vue.d.ts +1 -0
- package/es/components/button-print/src/components/OldPrintComponent.vue2.js +1 -1
- package/es/components/button-print/src/utils/print.d.ts +2 -2
- package/es/components/button-print/src/utils/print.js +1 -1
- package/es/components/field-set/src/FieldColor.vue.d.ts +13 -2
- package/es/components/field-set/src/FieldColor.vue2.js +1 -1
- package/es/components/field-set/src/FieldFilter.vue.d.ts +13 -2
- package/es/components/field-set/src/FieldFilter.vue2.js +1 -1
- package/es/components/field-set/src/FieldSet.vue.d.ts +26 -4
- package/es/components/field-set/src/FieldSet.vue2.js +1 -1
- package/es/components/field-set/src/components/{Row.vue.d.ts → table-row.vue.d.ts} +13 -2
- package/es/components/field-set/src/components/table-row.vue.js +1 -0
- package/es/components/field-set/src/components/table-row.vue2.js +1 -0
- package/es/components/form-render/src/components/renderer/searchCascade.js +1 -1
- package/es/components/iho-chat/index.d.ts +133 -21
- package/es/components/iho-chat/src/Index.vue.d.ts +133 -21
- package/es/components/iho-chat/src/Index.vue2.js +1 -1
- package/es/components/iho-chat/src/api/index.d.ts +1 -0
- package/es/components/iho-chat/src/api/index.js +1 -1
- package/es/components/iho-chat/src/components/ChatAdd.vue.d.ts +2 -2
- package/es/components/iho-chat/src/components/ChatAdd.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatFooter.vue.d.ts +3 -7
- package/es/components/iho-chat/src/components/ChatHeader.vue.d.ts +126 -8
- package/es/components/iho-chat/src/components/ChatMain.vue.d.ts +0 -3
- package/es/components/iho-chat/src/components/ChatMain.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatSet.vue.d.ts +125 -3
- package/es/components/iho-chat/src/components/ChatSet.vue2.js +1 -1
- package/es/components/iho-chat/src/components/MultipleVideo.vue.d.ts +2 -2
- package/es/components/iho-chat/src/components/MultipleVideo.vue2.js +1 -1
- package/es/components/iho-chat/src/components/PersonProfile.vue.d.ts +0 -3
- 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/hooks/useSession.js +1 -1
- package/es/components/iho-chat/src/types/index.d.ts +5 -0
- package/es/components/iho-chat/style/index.css +1 -1
- package/es/components/index.css +1 -1
- package/es/components/select-label/src/LabelFormContent.vue2.js +1 -1
- package/es/shared/assets/img/defaultCover/10review_successful.png.js +1 -1
- package/es/shared/assets/img/defaultCover/11review_fail.png.js +1 -1
- package/es/shared/assets/img/defaultCover/12no_setting.png.js +1 -1
- package/es/shared/assets/img/defaultCover/13no_menu_setting.png.js +1 -1
- package/es/shared/assets/img/defaultCover/14no_call_setting.png.js +1 -1
- package/es/shared/assets/img/defaultCover/15no_use_tag.png.js +1 -1
- package/es/shared/assets/img/defaultCover/16no_table_data.png.js +1 -1
- package/es/shared/assets/img/defaultCover/1location.png.js +1 -1
- package/es/shared/assets/img/defaultCover/2notfound.png.js +1 -1
- package/es/shared/assets/img/defaultCover/3loading.png.js +1 -1
- package/es/shared/assets/img/defaultCover/4no_permission.png.js +1 -1
- package/es/shared/assets/img/defaultCover/5no_data.png.js +1 -1
- package/es/shared/assets/img/defaultCover/6no_network.png.js +1 -1
- package/es/shared/assets/img/defaultCover/7no_doctor.png.js +1 -1
- package/es/shared/assets/img/defaultCover/8system_error.png.js +1 -1
- package/es/shared/assets/img/defaultCover/9system_upgrade.png.js +1 -1
- package/es/shared/assets/img/failure.png.js +1 -1
- package/es/shared/assets/img/no-permission.png.js +1 -1
- package/es/shared/assets/img/nodata.png.js +1 -1
- package/es/shared/assets/img/notfound.png.js +1 -1
- package/es/shared/assets/img/qr.png.js +1 -1
- package/es/shared/assets/img/success.png.js +1 -1
- package/es/shared/assets/img/table_style_2.png.js +1 -1
- package/es/shared/assets/img/video.png.js +1 -1
- package/es/shared/assets/img/video_default_cover.png.js +1 -1
- package/es/shared/assets/img/xb_big.png.js +1 -1
- package/es/shared/assets/img/xb_small.png.js +1 -1
- package/es/shared/package.json.js +1 -1
- package/package.json +2 -2
- package/es/components/bpmn-workflow/src/BpmnWorkflow.d.ts +0 -0
- package/es/components/bpmn-workflow/types/BpmnViewer.d.ts +0 -1
- package/es/components/bpmn-workflow/types/ModelingModule.d.ts +0 -1
- package/es/components/bpmn-workflow/types/MoveCanvasModule.d.ts +0 -1
- package/es/components/field-set/src/components/Row.vue.js +0 -1
- package/es/components/field-set/src/components/Row.vue2.js +0 -1
- package/es/shared/components/VueDraggable/src/vuedraggable.d.ts +0 -86
- package/es/shared/utils/fabricjs/index.d.ts +0 -6823
- package/es/shared/utils/tapable/index.d.ts +0 -139
@@ -88,11 +88,8 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
88
88
|
NPopover: any;
|
89
89
|
NButton: any;
|
90
90
|
NIcon: any;
|
91
|
-
NUpload: any;
|
92
|
-
NUploadTrigger: any;
|
93
91
|
ChatbubbleEllipses: 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<{}>>, {}>;
|
94
92
|
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<{}>>, {}>;
|
95
|
-
Camera: 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<{}>>, {}>;
|
96
93
|
EyeOutline: 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<{}>>, {}>;
|
97
94
|
EyeOffOutline: 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<{}>>, {}>;
|
98
95
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "close"[], "close", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
@@ -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
|
1
|
+
import{defineComponent as e,ref as t,computed as n,watch as s,openBlock as o,createElementBlock as i,normalizeClass as a,unref as r,normalizeStyle as c,createVNode as l,withCtx as m,Fragment as u,renderList as p,toDisplayString as d,createCommentVNode as f,createBlock as v,createElementVNode as g,withModifiers as y,nextTick as h}from"vue";import{NImageGroup as T,NAvatar as M,NImage as _,NIcon as k,NSpace as x,NButtonGroup as I,NButton as S}from"naive-ui";import{format as w}from"date-fns";import{getHistoryRecordApi as L,readMessageApi as j}from"../api/index.js";import{useState as E}from"../hooks/useState.js";import{useSession as C}from"../hooks/useSession.js";import{MESSAGE_TYPE as b}from"../constants/index.js";import"trtc-sdk-v5";import{isAudioOrVideoMessage as A,simplifyMessage as z,getAVTime as H}from"../utils/index.js";import{first as D,last as R}from"lodash-es";import N from"./PersonProfile.vue.js";import O from"./MessageTemplate.vue.js";import{emojis as P}from"../utils/emoji.js";import q from"./ContextMenu.js";import{useScrollLoading as B}from"../hooks/useScrollLoading.js";import{CallOutline as U,VideocamOutline as F,DocumentSharp as G,ChatbubbleEllipsesOutline as J,EllipsisHorizontal as K}from"@vicons/ionicons5";const X={key:0,class:"time"},Y={key:2,class:"message-box"},$={key:0,class:"content-box"},Q={class:"name-box"},V=["data-time"],W=["onContextmenu"],Z={key:0,class:"reference-content"},ee=["innerHTML"],te=["innerHTML"],ne=["src"],se={style:{"margin-left":"8px"}},oe={class:"size"};var ie=e({__name:"ChatMain",setup(e){const ie=t(),{state:ae,setMsgList:re}=E(),{setCurrentSessionItem:ce,isGroupChat:le}=C(ae),me=t(),ue=t(!1),pe=t({left:0,top:0}),de=t(),fe={page:0,hasMore:!0,lastSendTime:w(new Date,"yyyy-MM-dd HH:mm:ss")},ve=n((()=>({"--c-tip-top":le.value?"1px":"-20px","--c-tip-gap":le.value?"10px":"0px"})));async function ge(){try{if(!fe.hasMore)return;fe.page++;const e=await L({sessionKey:ae.currentSessionItem.sessionKey,page:fe.page,lastSendTime:fe.lastSendTime});if(!Array.isArray(e)||0===e.length)return fe.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");const t=D(e).id;fe.lastSendTime=R(e).sendTime,re(fe.page>1?[...e,...ae.msgList]:e),1===fe.page&&ae.currentSessionItem.unreadNum&&(await j({chatType:ae.currentSessionItem.chatType,messageIdSet:[t],receiver:ae.userInfo.id,sender:ae.currentSessionItem.receiver}),ce({unreadNum:0}))}catch(e){console.log(e)}}async function ye(e,t){de.value=t,async function(e){var t,n,s,o,i,a;ue.value=!0,await h();const{clientX:r,clientY:c}=e,{width:l=0,height:m=0,left:u=0,top:p=0}=(null==(t=ie.value)?void 0:t.getBoundingClientRect())||{},d=null!=(o=null==(s=null==(n=me.value)?void 0:n.$el)?void 0:s.getBoundingClientRect().height)?o:220,f=null!=(a=null==(i=ie.value)?void 0:i.scrollTop)?a:0,v=5,g={};r<=u+l/2?g.left=r-u+v+"px":g.right=u+l-r-v+"px";c-p<d/2?g.top=f+v+"px":p+m-c<=d/2?g.bottom=Math.abs(f)+v+"px":g.top=f+c-p-d/2+"px";pe.value=g}(e)}function he(e){const{chatMessageType:t,messageTemplate:n}=e.content;return t!==b.TEMPLATE||!!n}function Te(e,t){var n,s;const{chatMessageType:o,messageTemplate:i}=e.content;if(o===b.TEMPLATE)return"system"===t?2==(null==(n=null==i?void 0:i.setting)?void 0:n.style.id):2!=(null==(s=null==i?void 0:i.setting)?void 0:s.style.id)}function Me(e){var t,n;const{chatMessageType:s,messageTemplate:o}=e;return s===b.TEMPLATE&&3==(null==(n=null==(t=null==o?void 0:o.setting)?void 0:t.style)?void 0:n.id)}function _e(e,t){var n;const s=new Date(e.sendTime).getTime(),o=null==(n=ae.msgList[t+1])?void 0:n.sendTime;if(o){return s-new Date(o).getTime()>3e5}return!0}function ke(e){ae.currentReferenceMsg=e,Object.assign(ae.currentReferenceMsg,{chatType:ae.currentSessionItem.chatType,receiver:ae.currentSessionItem.receiver,receiverAvatar:ae.currentSessionItem.avatar,receiverName:ae.currentSessionItem.name})}function xe(e,t){"reply"===e&&ke(t)}return B(ie,(()=>{ge()}),"top",(()=>{ue.value=!1})),s((()=>ae.id),(e=>{e&&(ae.currentReferenceMsg=null,Object.assign(fe,{page:0,hasMore:!0,lastSendTime:w(new Date,"yyyy-MM-dd HH:mm:ss")}),ge())}),{immediate:!0}),s((()=>ae.isAppendMsg),(e=>{e&&(re([...ae.msgList,ae.currentMsg]),ae.isAppendMsg=!1,async function(){var e,t,n;const s=null!=(t=null==(e=ie.value)?void 0:e.scrollHeight)?t:0;null==(n=ie.value)||n.scrollTo({top:s,behavior:"auto"})}())}),{immediate:!0}),(e,t)=>(o(),i("div",{class:a(["chat-main",{"home-bg":!r(ae).id}]),ref_key:"chatMainRef",ref:ie,style:c(r(ve))},[l(r(T),{"show-toolbar-tooltip":""},{default:m((()=>[(o(!0),i(u,null,p(r(ae).msgList,((e,t)=>(o(),i(u,{key:e.id},[he(e)?(o(),i("div",{key:0,class:a(["message-item",{"message-item--mine":e.sender==r(ae).userInfo.id}])},[_e(e,t)?(o(),i("p",X,d(e.__sendTime),1)):f("v-if",!0),Te(e,"system")?(o(),v(O,{key:1,data:e},null,8,["data"])):(o(),i("div",Y,[l(N,{"user-id":e.sender,placement:e.sender==r(ae).userInfo.id?"left":"right"},{trigger:m((()=>[l(r(M),{round:"",size:38,src:e.senderAvatar},null,8,["src"])])),_:2},1032,["user-id","placement"]),e.content?(o(),i("div",$,[g("div",Q,[g("span",{class:"name","data-time":e.__time},d(r(le)?e.senderName:""),9,V)]),g("div",{class:a(["content",{emoji:e.content.chatMessageType===r(b).EMOJI,template:e.content.chatMessageType===r(b).TEMPLATE,"template--3":Me(e.content),"audio-video":r(A)(e.content),file:e.content.chatMessageType===r(b).FILE}]),onContextmenu:y((t=>ye(t,e.id)),["prevent"])},[e.content.chatMessageType===r(b).TEXT?(o(),i(u,{key:0},[e.content.referenceContent?(o(),i("div",Z,[g("span",null,d(e.content.referenceContent.senderName)+":",1),g("pre",{innerHTML:r(z)(e.content.referenceContent.content)},null,8,ee)])):f("v-if",!0),g("pre",null,d(e.__content),1)],64)):f("v-if",!0),e.content.chatMessageType===r(b).BLEND?(o(),i("pre",{key:1,innerHTML:e.__content},null,8,te)):f("v-if",!0),e.content.chatMessageType===r(b).EMOJI?(o(),i("img",{key:2,src:r(P).findEmoji(e.__content)},null,8,ne)):f("v-if",!0),Te(e,"template")?(o(),v(O,{key:3,data:e},null,8,["data"])):f("v-if",!0),e.content.chatMessageType===r(b).IMAGE?(o(),v(r(_),{key:4,width:"240",src:e.__content},null,8,["src"])):f("v-if",!0),r(A)(e.content)?(o(),i(u,{key:5},[l(r(k),{class:a({"is-audio":e.content.chatMessageType===r(b).AUDIO}),component:e.content.chatMessageType===r(b).AUDIO?r(U):r(F)},null,8,["class","component"]),g("span",se,d(r(H)(e.__content)),1)],64)):f("v-if",!0),e.content.chatMessageType===r(b).FILE?(o(),v(r(x),{key:6,"wrap-item":!1},{default:m((()=>[l(r(k),{class:"icon-file",size:"40",component:r(G)},null,8,["component"]),l(r(x),{"wrap-item":!1,vertical:"",justify:"space-between",style:{"row-gap":"0"}},{default:m((()=>[g("span",null,d(e.__content),1),g("span",oe,d(e.__size),1)])),_:2},1024)])),_:2},1024)):f("v-if",!0),l(r(I),{class:"quick-menu"},{default:m((()=>[r(A)(e.content)?f("v-if",!0):(o(),i(u,{key:0},[f(' <n-button quaternary size="tiny">\n\t\t\t\t\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<i class="chat--iconfont chat--icon-face" />\n\t\t\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t\t\t</n-button> '),l(r(S),{quaternary:"",size:"tiny",onClick:()=>ke(e)},{icon:m((()=>[l(r(k),{size:"17",component:r(J)},null,8,["component"])])),_:2},1032,["onClick"])],64)),l(r(S),{quaternary:"",size:"tiny",onClick:t=>ye(t,e.id)},{icon:m((()=>[l(r(k),{size:"14",component:r(K)},null,8,["component"])])),_:2},1032,["onClick"])])),_:2},1024)],42,W)])):f("v-if",!0)]))],2)):f("v-if",!0)],64)))),128))])),_:1}),l(r(q),{ref_key:"contextmenuRef",ref:me,show:ue.value,"onUpdate:show":t[0]||(t[0]=e=>ue.value=e),position:pe.value,"msg-id":de.value,onSelect:xe},null,8,["show","position","msg-id"])],6))}});export{ie as default};
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { AnyObject } from '../../../../shared/types';
|
2
|
+
import { FileOptions } from '../types';
|
2
3
|
declare const _default: import("vue").DefineComponent<{}, {
|
3
4
|
attrs: {
|
4
5
|
[x: string]: unknown;
|
@@ -6,14 +7,30 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
6
7
|
state: import("../types").IState;
|
7
8
|
setCurrentSessionItem: (item: AnyObject) => void;
|
8
9
|
isGroupChat: import("vue").ComputedRef<boolean>;
|
10
|
+
inputRef: import("vue").Ref<any>;
|
11
|
+
groupNameEditing: import("vue").Ref<boolean>;
|
12
|
+
groupName: import("vue").Ref<string>;
|
13
|
+
currentGroupUserIds: import("vue").ComputedRef<any[]>;
|
9
14
|
handleTopping: (value: boolean) => Promise<void>;
|
15
|
+
handleToEdit: () => Promise<void>;
|
16
|
+
submitFormData: (o: AnyObject) => Promise<void>;
|
17
|
+
handleGroupName: () => Promise<void>;
|
18
|
+
handleAvatar: (options: FileOptions) => Promise<void>;
|
10
19
|
closeUserDetail: () => void;
|
11
20
|
NDrawer: any;
|
12
21
|
NDrawerContent: any;
|
13
22
|
NAvatar: any;
|
14
23
|
NIcon: any;
|
15
24
|
NSwitch: any;
|
25
|
+
NInput: any;
|
26
|
+
NSpace: any;
|
27
|
+
NButton: any;
|
28
|
+
NUploadTrigger: any;
|
29
|
+
NUpload: any;
|
16
30
|
ChevronForwardOutline: 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<{}>>, {}>;
|
31
|
+
Pencil: 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<{}>>, {}>;
|
32
|
+
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<{}>>, {}>;
|
33
|
+
RemoveOutline: 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<{}>>, {}>;
|
17
34
|
PersonProfile: import("vue").DefineComponent<{
|
18
35
|
userId: {
|
19
36
|
type: StringConstructor;
|
@@ -63,11 +80,8 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
63
80
|
NPopover: any;
|
64
81
|
NButton: any;
|
65
82
|
NIcon: any;
|
66
|
-
NUpload: any;
|
67
|
-
NUploadTrigger: any;
|
68
83
|
ChatbubbleEllipses: 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<{}>>, {}>;
|
69
84
|
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<{}>>, {}>;
|
70
|
-
Camera: 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<{}>>, {}>;
|
71
85
|
EyeOutline: 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<{}>>, {}>;
|
72
86
|
EyeOffOutline: 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<{}>>, {}>;
|
73
87
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "close"[], "close", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
@@ -84,5 +98,113 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
84
98
|
}, {
|
85
99
|
disabled: boolean;
|
86
100
|
}>;
|
101
|
+
ChatAdd: import("vue").DefineComponent<{
|
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<AnyObject[]>;
|
112
|
+
};
|
113
|
+
disabledIds: {
|
114
|
+
type: import("vue").PropType<string[]>;
|
115
|
+
default: () => never[];
|
116
|
+
};
|
117
|
+
defaultValue: {
|
118
|
+
type: import("vue").PropType<AnyObject[]>;
|
119
|
+
};
|
120
|
+
}, {
|
121
|
+
props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
|
122
|
+
title: {
|
123
|
+
type: StringConstructor;
|
124
|
+
default: string;
|
125
|
+
};
|
126
|
+
mode: {
|
127
|
+
type: StringConstructor;
|
128
|
+
default: string;
|
129
|
+
};
|
130
|
+
options: {
|
131
|
+
type: import("vue").PropType<AnyObject[]>;
|
132
|
+
};
|
133
|
+
disabledIds: {
|
134
|
+
type: import("vue").PropType<string[]>;
|
135
|
+
default: () => never[];
|
136
|
+
};
|
137
|
+
defaultValue: {
|
138
|
+
type: import("vue").PropType<AnyObject[]>;
|
139
|
+
};
|
140
|
+
}>> & {
|
141
|
+
onComfirm?: ((...args: any[]) => any) | undefined;
|
142
|
+
}>>;
|
143
|
+
emit: (event: "comfirm", ...args: any[]) => void;
|
144
|
+
state: import("../types").IState;
|
145
|
+
setCurrentSessionItem: (item: AnyObject) => void;
|
146
|
+
listRef: import("vue").Ref<any>;
|
147
|
+
keyword: import("vue").Ref<string>;
|
148
|
+
showModal: import("vue").Ref<boolean>;
|
149
|
+
checkedOptions: import("vue").Ref<AnyObject[]>;
|
150
|
+
options: import("vue").Ref<AnyObject[]>;
|
151
|
+
groupName: import("vue").Ref<string>;
|
152
|
+
checkedSourceIds: import("vue").Ref<(string | number)[]>;
|
153
|
+
userList: import("vue").Ref<AnyObject[]>;
|
154
|
+
handleInput: () => void;
|
155
|
+
_disabledIds: import("vue").ComputedRef<any[]>;
|
156
|
+
defaultOptions: import("vue").ComputedRef<{
|
157
|
+
id: any;
|
158
|
+
name: any;
|
159
|
+
avatar: any;
|
160
|
+
}[]>;
|
161
|
+
checkedIds: import("vue").ComputedRef<any[]>;
|
162
|
+
btnDisabled: import("vue").ComputedRef<boolean>;
|
163
|
+
allChecked: import("vue").WritableComputedRef<boolean>;
|
164
|
+
handlePositiveClick: () => Promise<void>;
|
165
|
+
updateCheckedSourceIds: () => void;
|
166
|
+
handleSourceIdsUpdate: (value: (string | number)[], meta: {
|
167
|
+
actionType: "check" | "uncheck";
|
168
|
+
value: string | number;
|
169
|
+
}) => void;
|
170
|
+
closeTag: (id: string) => void;
|
171
|
+
NModal: any;
|
172
|
+
NButton: any;
|
173
|
+
NSpace: any;
|
174
|
+
NAvatar: any;
|
175
|
+
NIcon: any;
|
176
|
+
NTag: any;
|
177
|
+
NInput: any;
|
178
|
+
NCheckbox: any;
|
179
|
+
NCheckboxGroup: any;
|
180
|
+
NTooltip: any;
|
181
|
+
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<{}>>, {}>;
|
182
|
+
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<{}>>, {}>;
|
183
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "comfirm"[], "comfirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
184
|
+
title: {
|
185
|
+
type: StringConstructor;
|
186
|
+
default: string;
|
187
|
+
};
|
188
|
+
mode: {
|
189
|
+
type: StringConstructor;
|
190
|
+
default: string;
|
191
|
+
};
|
192
|
+
options: {
|
193
|
+
type: import("vue").PropType<AnyObject[]>;
|
194
|
+
};
|
195
|
+
disabledIds: {
|
196
|
+
type: import("vue").PropType<string[]>;
|
197
|
+
default: () => never[];
|
198
|
+
};
|
199
|
+
defaultValue: {
|
200
|
+
type: import("vue").PropType<AnyObject[]>;
|
201
|
+
};
|
202
|
+
}>> & {
|
203
|
+
onComfirm?: ((...args: any[]) => any) | undefined;
|
204
|
+
}, {
|
205
|
+
mode: string;
|
206
|
+
title: string;
|
207
|
+
disabledIds: string[];
|
208
|
+
}>;
|
87
209
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
88
210
|
export default _default;
|
@@ -1 +1 @@
|
|
1
|
-
import{defineComponent as e,useAttrs as s,openBlock as
|
1
|
+
import{defineComponent as e,useAttrs as t,ref as n,computed as s,watch as o,openBlock as i,createBlock as a,unref as r,withCtx as l,createVNode as c,createElementBlock as u,createElementVNode as m,toDisplayString as p,createCommentVNode as d,Fragment as f,withKeys as v,nextTick as g}from"vue";import{NDrawer as _,NDrawerContent as h,NAvatar as y,NIcon as S,NButton as b,NUpload as k,NUploadTrigger as I,NInput as w,NSpace as C,NSwitch as j}from"naive-ui";import{ChevronForwardOutline as U,AddOutline as x,RemoveOutline as z,Pencil as G}from"@vicons/ionicons5";import{useState as K}from"../hooks/useState.js";import{useSession as R}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import{trim as A,isFunction as D}from"lodash-es";import"../utils/emoji.js";import F from"./PersonProfile.vue.js";import P from"./ChatAdd.vue.js";import{toppingSessionApi as B,groupUpdateApi as L}from"../api/index.js";const N={key:0,class:"chat-set-wrapper"},O={class:"item user-info"},q={class:"name"},E={class:"item"},H=m("span",{class:"label"},"群成员",-1),J={class:"item__right"},M=["onClick"],Q=m("span",{class:"label"},"群头像",-1),T={class:"item"},V=m("span",{class:"label"},"群名称",-1),W={class:"item__right"},X={class:"txt"},Y={class:"item"},Z=m("span",{class:"label"},"置顶聊天",-1);var $=e({__name:"ChatSet",setup(e){const $=t(),{state:ee}=K(),{setCurrentSessionItem:te,isGroupChat:ne}=R(ee),se=n(),oe=n(!1),ie=n(""),ae=s((()=>ee.currentGroupUser.map((e=>e.id))));async function re(e){try{await B({sessionKey:ee.currentSessionItem.sessionKey,id:ee.currentSessionItem.id,topping:e}),te({topping:e})}catch(e){console.log(e)}}async function le(){var e;ie.value=ee.currentSessionItem.name,oe.value=!0,await g(),null==(e=se.value)||e.select()}async function ce(e){const t=new FormData,n=Object.assign({id:ee.currentSessionItem.receiver},e);for(const e in n)t.append(e,n[e]);await L(t)}async function ue(){oe.value=!1;const e=A(ie.value);e&&e!==ee.currentSessionItem.name&&(await ce({name:e}),te({name:e,defaultName:e}))}async function me(e){const{file:t}=e.file,n=new FileReader;n.onload=function(e){var t;(null==(t=e.target)?void 0:t.result)&&te({avatar:e.target.result})},n.readAsDataURL(e.file.file),await ce({file:t})}function pe(){D($["onUpdate:show"])&&$["onUpdate:show"](!1)}return o((()=>ee.id),(e=>{e||pe()})),(e,t)=>(i(),a(r(_),{width:320,"trap-focus":!1,"block-scroll":!1,to:".iho-chat"},{default:l((()=>[c(r(h),{title:r(ne)?"群设置":"聊天设置"},{default:l((()=>[r(ee).id?(i(),u("div",N,[c(F,{"user-id":r(ee).currentSessionItem.receiver,onClose:pe,disabled:!!r(ne),placement:"bottom-end"},{trigger:l((()=>[m("div",O,[c(r(y),{round:"",size:40,src:r(ee).currentSessionItem.avatar},null,8,["src"]),m("span",q,p(r(ee).currentSessionItem.name),1),r(ne)?d("v-if",!0):(i(),a(r(S),{key:0,size:24,component:r(U),class:"item__right"},null,8,["component"]))])])),_:1},8,["user-id","disabled"]),r(ne)?(i(),u(f,{key:0},[m("div",E,[H,m("div",J,[c(P,{mode:"join",disabledIds:r(ae)},{trigger:l((()=>[c(r(b),{strong:"",secondary:"",circle:""},{icon:l((()=>[c(r(S),{component:r(x)},null,8,["component"])])),_:1})])),_:1},8,["disabledIds"]),c(P,{title:"移除成员",mode:"remove",options:r(ee).currentGroupUser},{trigger:l((()=>[c(r(b),{strong:"",secondary:"",circle:""},{icon:l((()=>[c(r(S),{component:r(z)},null,8,["component"])])),_:1})])),_:1},8,["options"])])]),c(r(k),{abstract:"",multiple:"",accept:"image/*",onChange:me},{default:l((()=>[c(r(I),{abstract:""},{default:l((({handleClick:e})=>[m("div",{class:"item",onClick:e},[Q,c(r(S),{size:20,component:r(U),class:"item__right"},null,8,["component"])],8,M)])),_:1})])),_:1}),m("div",T,[V,m("div",W,[oe.value?(i(),a(r(w),{key:0,ref_key:"inputRef",ref:se,value:ie.value,"onUpdate:value":t[0]||(t[0]=e=>ie.value=e),onBlur:ue,onKeydown:t[1]||(t[1]=v((e=>e.target.blur()),["enter"]))},null,8,["value"])):(i(),a(r(C),{key:1,"wrap-item":!1,onClick:le,align:"center"},{default:l((()=>[m("span",X,p(r(ee).currentSessionItem.name),1),c(r(b),{text:"",style:{"font-size":"14px","--n-text-color":"#999"}},{default:l((()=>[c(r(S),{component:r(G)},null,8,["component"])])),_:1})])),_:1}))])])],64)):d("v-if",!0),m("div",Y,[Z,c(r(j),{value:r(ee).currentSessionItem.topping,"onUpdate:value":[t[2]||(t[2]=e=>r(ee).currentSessionItem.topping=e),re],class:"item__right"},null,8,["value"])])])):d("v-if",!0)])),_:1},8,["title"])])),_:1}))}});export{$ as default};
|
@@ -96,8 +96,9 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
96
96
|
}>>;
|
97
97
|
emit: (event: "comfirm", ...args: any[]) => void;
|
98
98
|
state: import("../types").IState;
|
99
|
+
setCurrentSessionItem: (item: AnyObject) => void;
|
99
100
|
listRef: import("vue").Ref<any>;
|
100
|
-
keyword: import("vue").Ref<
|
101
|
+
keyword: import("vue").Ref<string>;
|
101
102
|
showModal: import("vue").Ref<boolean>;
|
102
103
|
checkedOptions: import("vue").Ref<AnyObject[]>;
|
103
104
|
options: import("vue").Ref<AnyObject[]>;
|
@@ -121,7 +122,6 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
121
122
|
value: string | number;
|
122
123
|
}) => void;
|
123
124
|
closeTag: (id: string) => void;
|
124
|
-
renderTargetList: () => JSX.Element[] | null;
|
125
125
|
NModal: any;
|
126
126
|
NButton: any;
|
127
127
|
NSpace: any;
|
@@ -1 +1 @@
|
|
1
|
-
import{defineComponent as e,ref as o,computed as n,onBeforeUnmount as t,openBlock as s,createElementBlock as l,createElementVNode as i,withDirectives as a,toDisplayString as c,unref as r,vShow as d,createVNode as u,withCtx as m,Fragment as p,renderList as v,createCommentVNode as f,createTextVNode as g,nextTick as h}from"vue";import{NButton as
|
1
|
+
import{defineComponent as e,ref as o,computed as n,onBeforeUnmount as t,openBlock as s,createElementBlock as l,createElementVNode as i,withDirectives as a,toDisplayString as c,unref as r,vShow as d,createVNode as u,withCtx as m,Fragment as p,renderList as v,createCommentVNode as f,createTextVNode as g,nextTick as h}from"vue";import{NButton as I,NIcon as k}from"naive-ui";import A from"./ChatAdd.vue.js";import{Close as y,Mic as V,MicOff as b,Videocam as w,VideocamOff as _,Call as M,PersonAdd as R}from"@vicons/ionicons5";import{xorBy as x}from"lodash-es";import"date-fns";import{CHAT_TYPE as E,SUBSCRIBE_MESSAGE_TYPE as T}from"../constants/index.js";import"../utils/emoji.js";import"@vueuse/core";import{getUserDetailApi as C}from"../api/index.js";import{useVideo as S}from"../hooks/useVideo.js";import j from"trtc-sdk-v5";const $={class:"video-wrapper video-wrapper--multiple"},L={class:"video-header"},U={key:0,class:"video-main"},z={class:"video-main__left"},H=["data-name"],N={class:"video-bottom"},D={class:"btn-group"},O={class:"btn"},P=i("span",{class:"text"},"静音",-1),Y={class:"btn"},q=i("span",{class:"text"},"摄像头",-1),G=i("span",{class:"text"},"结束会诊",-1),B={class:"btn"},F=i("span",{class:"text"},"添加参会人",-1),J={class:"video-main__right"},K=["id","data-name"],Q={class:"user"},W={class:"name"},X={key:0,class:"tip"},Z={key:0,class:"calling-box"},ee={class:"btn-box"},oe={key:1,class:"opt-btn"},ne={class:"btn"},te=i("span",null,"拒接",-1),se={class:"btn"},le=i("span",null,"接听",-1);var ie=e({__name:"MultipleVideo",setup(e){const ie=o(),ae=o([]),{state:ce,sendMessage:re,trtc:de,voiceOpen:ue,isAudio:me,isCall:pe,startTimer:ve,resetTimer:fe,toggleAudio:ge,messageTypeText:he,timing:Ie,toggleVideo:ke,videocamOpen:Ae,installEventHandlers:ye,uninstallEventHandlers:Ve}=S(),be=o(!1),we=n((()=>pe.value?ce.userInfo.name:ce.currentAVMsg.sendName)),_e=n((()=>{if(!be.value)return"";const e=pe.value?`(${ae.value.length+1}/${ce.currentAVMsg.checkedIds.length+1})`:"";return`${we.value}发起的${he.value}会诊${e} ${Ie.value}`}));function Me(e){console.log("checkedIds :>> ",e),ce.currentAVMsg.checkedIds.push(...e),Re()}function Re(){var e;(null==(e=ce.currentAVMsg.checkedIds)?void 0:e.length)&&ce.currentAVMsg.checkedIds.forEach((e=>{re({chatType:E.SINGLE,content:{msg:ce.currentAVMsg.chatMessageType+","+ce.currentAVMsg.strRoomId,chatMessageType:T.AV_STATUS},receiver:e})})),be.value||xe()}async function xe(){const e=await j.isSupported();if(!e.result||!e.detail.isH264EncodeSupported||!e.detail.isH264DecodeSupported)return console.log("checkResult :>> ",e),void(ce.showMultipleVideo=!1);try{if(await de.enterRoom({strRoomId:ce.currentAVMsg.strRoomId,sdkAppId:parseInt(ce.userInfo.sdkAppID),userId:ce.userInfo.id,userSig:ce.userInfo.userSig}),be.value=!0,ve(),ye({handleError:Le,handleRemoteUserEnter:Se,handleRemoteAudioAvailable:Ce,handleRemoteUserExit:$e,handleRemoteVideoAvailable:Te}),await de.startLocalAudio(),me.value)return;await de.startLocalVideo({view:ie.value})}catch(e){console.log("error :>> ",e),ce.showMultipleVideo=!1}}async function Ee(){try{if(ce.showMultipleVideo=!1,Ve({handleError:Le,handleRemoteUserEnter:Se,handleRemoteAudioAvailable:Ce,handleRemoteUserExit:$e,handleRemoteVideoAvailable:Te}),await de.exitRoom(),await de.stopLocalAudio(),me.value)return;await de.stopLocalVideo()}catch(e){console.log("error :>> ",e)}}async function Te(e){const{userId:o,streamType:n}=e;try{n===j.TYPE.STREAM_TYPE_MAIN&&(await h(),await de.startRemoteVideo({userId:o,streamType:n,view:o}))}catch(e){console.log("error :>> ",e)}}async function Ce(e){var o;const{userId:n}=e;if(n&&!(null==(o=ae.value.map((e=>e.id)))?void 0:o.includes(n))){const e=await je(n);ae.value.push({id:n,name:e})}}async function Se(e){const{userId:o}=e,n=await je(o);ae.value.push({id:o,name:n}),ve()}async function je(e){const o=await C({userId:e});return(null==o?void 0:o.name)||""}function $e(e){console.log("event :>> 退房",e);const{userId:o}=e;ae.value=x(ae.value,[{id:o,name:""}],"id")}function Le(e){console.log("error :>> ",e),ce.showMultipleVideo=!1}return t((()=>{Ee()})),(e,o)=>(s(),l("div",$,[i("div",L,[a(i("span",{class:"title"},c(r(_e)),513),[[d,be.value]]),u(r(I),{quaternary:"",circle:"",color:"#ffffffcc",onClick:Ee},{icon:m((()=>[u(r(k),{component:r(y)},null,8,["component"])])),_:1})]),be.value?(s(),l("div",U,[i("div",z,[i("div",{ref_key:"selfVideoRef",ref:ie,class:"video-view","data-name":r(ce).userInfo.name},null,8,H),i("div",N,[i("div",D,[i("div",O,[u(r(I),{text:"",color:r(ue)?"#fff":"#000",onClick:r(ge)},{icon:m((()=>[u(r(k),{component:r(ue)?r(V):r(b)},null,8,["component"])])),_:1},8,["color","onClick"]),P]),i("div",Y,[u(r(I),{text:"",color:r(Ae)?"#fff":"#000",disabled:r(me),onClick:r(ke)},{icon:m((()=>[u(r(k),{component:r(Ae)?r(w):r(_)},null,8,["component"])])),_:1},8,["color","disabled","onClick"]),q]),i("div",{class:"btn",onClick:Ee},[u(r(I),{circle:"",color:"#f17568",class:"btn--rotate"},{icon:m((()=>[u(r(k),{component:r(M)},null,8,["component"])])),_:1}),G]),u(A,{onComfirm:Me},{trigger:m((()=>[i("div",B,[u(r(I),{text:"",color:"#fff"},{icon:m((()=>[u(r(k),{component:r(R)},null,8,["component"])])),_:1}),F])])),_:1})])])]),i("div",J,[(s(!0),l(p,null,v(ae.value,(e=>(s(),l("div",{key:e.id,id:e.id,class:"video-view","data-name":e.name},null,8,K)))),128))])])):(s(),l(p,{key:1},[i("div",Q,[i("span",W,c(r(we))+"发起的"+c(r(he))+"会议",1),r(pe)?f("v-if",!0):(s(),l("span",X,"邀请你加入"+c(r(he))+"会议",1))]),r(pe)?(s(),l("div",Z,[u(A,{onComfirm:Me,disabledIds:r(ce).currentAVMsg.checkedIds},{trigger:m((()=>[u(r(I),{size:"large",circle:"",color:"#000"},{icon:m((()=>[u(r(k),{component:r(R)},null,8,["component"])])),_:1})])),_:1},8,["disabledIds"]),i("p",null,"已邀请共"+c(r(ce).currentAVMsg.checkedIds.length)+"人",1),u(r(I),{size:"large",strong:"",round:"",type:"primary",onClick:Re},{default:m((()=>[g("开始会诊")])),_:1}),i("div",ee,[u(r(I),{color:"#000",round:""},{icon:m((()=>[u(r(k),{component:r(V)},null,8,["component"])])),_:1}),u(r(I),{color:"#000",round:""},{icon:m((()=>[u(r(k),{component:r(w)},null,8,["component"])])),_:1})])])):(s(),l("div",oe,[i("div",ne,[u(r(I),{circle:"",color:"#f17568",class:"btn--rotate",onClick:o[0]||(o[0]=()=>r(ce).showMultipleVideo=!1)},{icon:m((()=>[u(r(k),{size:"30",component:r(M)},null,8,["component"])])),_:1}),te]),i("div",se,[u(r(I),{circle:"",color:"#2ac98b",onClick:xe},{icon:m((()=>[u(r(k),{size:"30",component:r(M)},null,8,["component"])])),_:1}),le])]))],64))]))}});export{ie as default};
|
@@ -49,11 +49,8 @@ declare const _default: import("vue").DefineComponent<{
|
|
49
49
|
NPopover: any;
|
50
50
|
NButton: any;
|
51
51
|
NIcon: any;
|
52
|
-
NUpload: any;
|
53
|
-
NUploadTrigger: any;
|
54
52
|
ChatbubbleEllipses: 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<{}>>, {}>;
|
55
53
|
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<{}>>, {}>;
|
56
|
-
Camera: 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<{}>>, {}>;
|
57
54
|
EyeOutline: 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<{}>>, {}>;
|
58
55
|
EyeOffOutline: 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<{}>>, {}>;
|
59
56
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "close"[], "close", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
@@ -1 +1 @@
|
|
1
|
-
import{defineComponent as
|
1
|
+
import{defineComponent as t,ref as e,reactive as a,computed as l,openBlock as n,createBlock as o,unref as s,withCtx as r,renderSlot as i,createElementBlock as c,Fragment as u,withDirectives as p,createElementVNode as d,createVNode as m,createCommentVNode as v,toDisplayString as f,createTextVNode as g,renderList as k,vShow as y}from"vue";import{NPopover as h,NAvatar as b,NButton as w,NIcon as C}from"naive-ui";import{ChatbubbleEllipses as _,EyeOffOutline as I,EyeOutline as j,Close as z}from"@vicons/ionicons5";import{useState as x}from"../hooks/useState.js";import{useSession as N}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import"lodash-es";import"../utils/emoji.js";import{openSessionApi as S,getUserDetailApi as $}from"../api/index.js";const D={class:"person-profile-main"},P={class:"left"},T={class:"profile"},q={class:"profile__text"},B={class:"right"},E={class:"right__content"},O={class:"label"},U={class:"content"};var A=t({__name:"PersonProfile",props:{userId:{type:String,required:!0},disabled:{type:Boolean,default:!1}},emits:["close"],setup(t,{emit:A}){const F=t,{state:G}=x(),{openSession:H}=N(G),J=e(!1),K=e(!1),L=e(!1),M=a({}),Q=[{label:"机构",value:"",key:"orgName"},{label:"姓名",value:"",key:"name"},{label:"归属科室",value:"",key:"deptName"},{label:"业务科室",value:"",key:"businessDeptNames"},{label:"手机号",value:"",key:"phone"},{label:"岗位",value:"",key:"post"},{label:"工号",value:"",key:"jobId"},{label:"性别",value:"",key:"orgName"}],R=l((()=>(M.id&&Q.forEach((t=>{const{key:e}=t;t.value=M[e]})),Q)));async function V(){J.value=!1;const t=await S({chatType:G.currentSessionItem.chatType,receiver:F.userId,sender:G.userInfo.id});H(t),A("close")}async function W(t){if(!t)return;const e=await $({userId:F.userId});(null==e?void 0:e.id)?Object.assign(M,e):M.id=""}function X(t){const{key:e,value:a}=t;return"phone"!==e||L.value?a:(a||"").replace(/(\d{3})\d{4}(\d{4})/,"$1****$2")}return(e,a)=>(n(),o(s(h),{raw:"",class:"person-profile-wrapper",show:J.value,"onUpdate:show":[a[3]||(a[3]=t=>J.value=t),W],trigger:t.disabled?"manual":"click","show-arrow":!1,shift:""},{trigger:r((()=>[i(e.$slots,"trigger")])),default:r((()=>[M.id?(n(),c(u,{key:0},[p(d("div",D,[d("div",P,[d("div",T,[m(s(b),{src:M.avatar,bordered:"",round:"",size:100,onClickCapture:a[0]||(a[0]=t=>K.value=!0)},null,8,["src"]),v(' <n-upload abstract accept="image/*" @change="onChange">\n\t\t\t\t\t\t\t<n-upload-trigger #="{ handleClick }" abstract>\n\t\t\t\t\t\t\t\t<n-button\n\t\t\t\t\t\t\t\t\tcircle\n\t\t\t\t\t\t\t\t\tsecondary\n\t\t\t\t\t\t\t\t\tclass="edit-avatar"\n\t\t\t\t\t\t\t\t\tv-show="userDetail.id === state.userInfo.id"\n\t\t\t\t\t\t\t\t\t@click="handleClick"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t\t\t<n-icon size="16" color="#666666" :component="Camera" />\n\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t</n-button>\n\t\t\t\t\t\t\t</n-upload-trigger>\n\t\t\t\t\t\t</n-upload> '),d("div",q,[d("h4",null,f(M.name),1),d("p",null,f(M.orgName),1)]),m(s(w),{strong:"",secondary:"",onClick:V},{default:r((()=>[m(s(C),{size:"13",color:"#666666",component:s(_),style:{"margin-right":"6px"}},null,8,["component"]),g(" 发消息 ")])),_:1})])]),d("div",B,[d("div",E,[(n(!0),c(u,null,k(s(R),((t,e)=>(n(),c("div",{class:"info-item",key:e},[d("span",O,f(t.label),1),d("div",U,[d("span",null,f(X(t)),1),"phone"===t.key&&X(t)?(n(),o(s(C),{key:0,size:"16",color:"#666666",component:L.value?s(I):s(j),style:{"margin-left":"10px"},onClick:a[1]||(a[1]=t=>L.value=!L.value)},null,8,["component"])):v("v-if",!0)])])))),128))])])],512),[[y,!K.value]]),p(d("div",{class:"large-avatar",onClick:a[2]||(a[2]=t=>K.value=!1)},[m(s(w),{circle:"",size:"small",secondary:""},{icon:r((()=>[m(s(C),{size:24,component:s(z),color:"#fff"},null,8,["component"])])),_:1}),m(s(b),{size:310,round:"",src:M.avatar},null,8,["src"])],512),[[y,K.value]])],64)):v("v-if",!0)])),_:3},8,["show","trigger"]))}});export{A as default};
|
@@ -1 +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 a,withDirectives as t,openBlock as n,createElementBlock as l,normalizeStyle as r,unref as o,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 x,NBadge as b}from"naive-ui";import{useState as M}from"../hooks/useState.js";import{useSession as C}from"../hooks/useSession.js";import"trtc-sdk-v5";import{listSort as L,formatTime as N}from"../utils/index.js";import{vFlexibleResize as j}from"../../../../shared/directive/flexibleResize.js";import{promiseTimeout as w}from"@vueuse/shared";const T={class:"sider-list__filter box-shadow"},R=["onClick"],z={class:"avatar-right"},H={class:"name"},I={class:"msg-tip"},K={class:"msg-tip__content"},U=["innerHTML"];var B=e({__name:"SiderList",setup(e){const B="all",V="unread";let q=[];const A=s(300),D=s(),E=s(!1),F=s([{label:"全部",key:B},{label:"未读",key:V}]),G=s("all"),{state:J,emit:O}=M(),{openSession:P,updateSessionList:Q}=C(J),W=i((()=>Math.min(Math.max(A.value,240),360))),X=i((()=>L(J.sessionList))),Y=i((()=>J.sessionList.reduce(((e,s)=>e+ +s.unreadNum),0)));function Z({distance:e}){A.value=A.value+e}function $(e,s=o(G)){var i;return s===B||(s===V?q.includes(e.sessionKey)||(null!=(i=e.unreadNum)?i:0)>0:void 0)}return a([()=>J.isChangeSession,()=>J.isUpdateSession],(([e,s])=>{e&&(Q(J.currentSessionItem),J.isChangeSession=!1),s&&(Q(J.updateSessionItem),J.isUpdateSession=!1)}),{immediate:!0}),a((()=>Y.value),(e=>{!async function s(i=0){const a=X.value.every((e=>!!e.name));if(!(i>2))if(a){const s=X.value.filter((e=>{var s;return+(null!=(s=e.unreadNum)?s:0)>0}));O("unread-message-update",e,s)}else await w(100),s(++i)}()})),(e,s)=>t((n(),l("section",{class:"sider-list",style:r({width:o(W)+"px"})},[E.value?(n(),u(o(S),{key:0,stroke:"#5585f5"})):d("v-if",!0),d(' <n-input v-else placeholder="输入用户名模糊搜索" v-model:value="keyword" @keyup.enter="handleSearch"></n-input> '),m("div",T,[(n(!0),l(v,null,c(F.value,(e=>(n(),u(o(g),{type:G.value===e.key?"info":"default",round:"",bordered:!1,key:e.key,onClick:()=>{return s=e.key,G.value=s,void(s===V&&(q=(X.value.filter((e=>{var s;return(null!=(s=e.unreadNum)?s:0)>0}))||[]).map((e=>e.sessionKey))));var s}},{default:p((()=>[f(k(e.label)+"("+k(o(Y))+") ",1)])),_:2},1032,["type","onClick"])))),128))]),m("div",{class:"sider-list__box",ref_key:"listBoxRef",ref:D},[(n(!0),l(v,null,c(o(X),(e=>t((n(),l("div",{key:e.id,onClick:()=>o(P)(e),class:y(["sider-list__box__item",{active:e.id===o(J).id},e.topping?"sider-list__box__item--top":""])},[_(o(x),{round:"",size:"large",src:e.avatar},null,8,["src"]),m("div",z,[m("div",H,[m("h4",null,k(e.name),1),m("span",null,k(e.lastMessage?o(N)(e.lastMessageSendTime).siderMsgTime:""),1)]),m("div",I,[m("div",K,[m("div",{innerHTML:e.lastMessageContent},null,8,U)]),_(o(b),{value:e.unreadNum>99?"99+":e.unreadNum},null,8,["value"])])])],10,R)),[[h,$(e)]]))),128))],512)],4)),[[o(j),{mode:"VR",onMove:Z}]])}});export{B as default};
|
@@ -1 +1 @@
|
|
1
|
-
import{computed as e}from"vue";import{simplifyMessage as s}from"../utils/index.js";import{cloneDeep as
|
1
|
+
import{computed as e}from"vue";import{simplifyMessage as s}from"../utils/index.js";import{cloneDeep as t,isArray as n,uniqBy as i}from"lodash-es";import{CHAT_TYPE as o}from"../constants/index.js";import{groupUserApi as r}from"../api/index.js";function a(e){return e.chatType===o.GROUP}function u(e){const{lastMessage:t,lastSenderName:n=""}=e,i=s(t)||"";return a(e)&&n?n+": "+i:i}function c(s){const c=e((()=>a(s.currentSessionItem)));function m(e){Object.assign(s.currentSessionItem,e,{lastMessageContent:Reflect.has(e,"lastMessageContent")?e.lastMessageContent:Reflect.has(e,"lastMessage")?u({...e,chatType:e.chatType||s.currentSessionItem.chatType}):s.currentSessionItem.lastMessageContent}),s.isChangeSession=!0,s.id!==s.currentSessionItem.id&&(s.msgList=[],s.id=s.currentSessionItem.id)}function d(e){s.sessionList=t(i(e,"id")),s.sessionList.forEach((e=>{Object.assign(e,{defaultName:Reflect.has(e,"defaultName")?e.defaultName:e.name||"",lastMessageContent:Reflect.has(e,"lastMessageContent")?e.lastMessageContent:u(e)}),e.receiver===s.userInfo.id&&(e.unreadNum=0),e.chatType!==o.GROUP||e.name||r({id:e.receiver}).then((s=>{n(s)&&(e.name=s.map((e=>e.name)).join(","))}))}))}return{openSession:async function(e){const i=s.currentSessionItem.sessionKey;if(m(e),i!==s.currentSessionItem.sessionKey)if(c.value){const t=await r({id:e.receiver});s.currentGroupUser=n(t)?t:[]}else s.currentGroupUser=[s.userInfo,{...t(e),id:e.receiver}]},closeSession:function(){if(!s.id)return null;const{currentSessionItem:e}=s;return s.currentSessionItem={},s.msgList=[],s.id="",s.currentGroupUser=[],e},getCurrentSession:function(){return s.id?s.currentSessionItem:null},setCurrentSessionItem:m,setUpdateSessionItem:function(e){const n=s.sessionList.find((s=>s.sessionKey===e.sessionKey)),i={...e,lastMessageContent:u({...e,chatType:e.chatType||(null==n?void 0:n.chatType)})};s.updateSessionItem=n?{...t(n),...i}:i,s.isUpdateSession=!0},setSessionList:d,isGroupChat:c,updateSessionList:function(e){!e.id||s.sessionList.map((e=>e.id)).includes(e.id)?s.sessionList.some((t=>{if(t.sessionKey===e.sessionKey){let{unreadNum:n=0}=t;return Object.assign(t,e),e.sessionKey!==s.currentSessionItem.sessionKey&&(t.unreadNum=++n),!0}})):d([...s.sessionList,e])}}}export{c as useSession};
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import { InjectionKey, Ref } from 'vue';
|
2
2
|
import { AnyObject } from '../../../../shared/types';
|
3
3
|
import { ChatSock } from '../utils/chatSock';
|
4
|
+
import { UploadFileInfo } from 'naive-ui';
|
4
5
|
export type IState = {
|
5
6
|
orgId: number | string;
|
6
7
|
currentSessionItem: AnyObject;
|
@@ -19,6 +20,10 @@ export type IState = {
|
|
19
20
|
currentGroupUser: AnyObject[];
|
20
21
|
showMultipleVideo: boolean;
|
21
22
|
};
|
23
|
+
export type FileOptions = {
|
24
|
+
file: UploadFileInfo;
|
25
|
+
fileList: Array<UploadFileInfo>;
|
26
|
+
};
|
22
27
|
export declare const InjectionIChatState: InjectionKey<IState>;
|
23
28
|
export declare const InjectionIChatStompClient: InjectionKey<Ref<ChatSock>>;
|
24
29
|
export declare const InjectionIChatEmits: InjectionKey<(event: string, ...args: any[]) => void>;
|