cnhis-design-vue 3.2.17-release.1 → 3.2.18-beta.10
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/index.d.ts +1 -0
- package/es/components/button-print/src/ButtonPrint.vue.d.ts +1 -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/field-editor/src/fields.js +1 -1
- package/es/components/field-set/index.d.ts +3 -2
- package/es/components/field-set/src/FieldColor.vue.d.ts +2 -0
- package/es/components/field-set/src/FieldFilter.vue.d.ts +2 -0
- package/es/components/field-set/src/FieldSet.vue.d.ts +2 -0
- package/es/components/field-set/src/FieldSet.vue2.js +1 -1
- package/es/components/field-set/src/Index.vue.d.ts +3 -2
- package/es/components/field-set/src/Index.vue2.js +1 -1
- package/es/components/field-set/src/types/index.d.ts +1 -0
- package/es/components/field-set/style/index.css +1 -1
- package/es/components/form-render/src/FormRender.vue2.js +1 -1
- package/es/components/form-render/src/components/renderer/formItem.js +1 -1
- package/es/components/iho-chat/index.d.ts +155 -3
- package/es/components/iho-chat/src/Index.vue.d.ts +155 -3
- 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 +9 -0
- package/es/components/iho-chat/src/components/ChatAdd.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatFile.vue.d.ts +11 -1
- package/es/components/iho-chat/src/components/ChatFile.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatFooter.vue.d.ts +22 -0
- package/es/components/iho-chat/src/components/ChatFooter.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatHeader.vue.d.ts +32 -1
- package/es/components/iho-chat/src/components/ChatMain.vue.d.ts +77 -3
- package/es/components/iho-chat/src/components/ChatMain.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatRecord.vue.d.ts +1 -0
- package/es/components/iho-chat/src/components/ChatRecord.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatSearch.vue.d.ts +1 -0
- package/es/components/iho-chat/src/components/ChatSet.vue.d.ts +10 -0
- package/es/components/iho-chat/src/components/ContextMenu.js +1 -1
- package/es/components/iho-chat/src/components/MessageEvent.vue.d.ts +1 -0
- package/es/components/iho-chat/src/components/MessageMergeForward.vue.d.ts +59 -0
- package/es/components/iho-chat/src/components/MessageMergeForward.vue.js +1 -0
- package/es/components/iho-chat/src/components/MessageMergeForward.vue2.js +1 -0
- package/es/components/iho-chat/src/components/MultipleVideo.vue.d.ts +10 -0
- package/es/components/iho-chat/src/components/PersonProfile.vue.d.ts +1 -0
- package/es/components/iho-chat/src/components/SiderList.vue.d.ts +1 -0
- package/es/components/iho-chat/src/components/Video.vue.d.ts +1 -0
- package/es/components/iho-chat/src/hooks/useData.d.ts +4 -2
- package/es/components/iho-chat/src/hooks/useData.js +1 -1
- package/es/components/iho-chat/src/hooks/useVideo.d.ts +1 -0
- package/es/components/iho-chat/src/types/index.d.ts +1 -0
- package/es/components/iho-chat/src/utils/index.d.ts +1 -0
- package/es/components/iho-chat/src/utils/index.js +1 -1
- package/es/components/iho-chat/style/iconfont.ttf +0 -0
- package/es/components/iho-chat/style/index.css +1 -1
- package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/inputRendererPlugin.js +1 -1
- package/es/components/iho-table/src/types/index.d.ts +5 -0
- package/es/components/index.css +1 -1
- package/es/components/select-label/style/index.css +1 -1
- package/es/components/select-person/src/SelectPerson.vue2.js +1 -1
- package/es/components/select-person/src/index.vue2.js +1 -1
- package/es/components/select-person/style/index.css +1 -1
- package/es/components/shortcut-provider/src/types/index.d.ts +3 -0
- package/es/components/shortcut-setter/src/ShortcutSetter.vue2.js +1 -1
- package/es/shared/package.json.js +1 -1
- package/es/shared/utils/index.js +1 -1
- package/package.json +2 -2
@@ -1,7 +1,7 @@
|
|
1
1
|
import { CSSProperties } from 'vue';
|
2
2
|
import { ImageRenderToolbarProps } from 'naive-ui';
|
3
3
|
import { AnyObject } from '../../../../shared/types';
|
4
|
-
import { simplifyMessage, isAudioOrVideoMessage, getAVTime } from '../utils';
|
4
|
+
import { simplifyMessage, isAudioOrVideoMessage, getAVTime, getForwardTitle } from '../utils';
|
5
5
|
import { MESSAGE_TYPE } from '../constants';
|
6
6
|
declare const _default: import("vue").DefineComponent<{}, {
|
7
7
|
chatMainRef: import("vue").Ref<HTMLElement | undefined>;
|
@@ -32,12 +32,13 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
32
32
|
userId: string;
|
33
33
|
info: AnyObject | null;
|
34
34
|
};
|
35
|
+
isForward: boolean;
|
35
36
|
};
|
36
37
|
setMsgList: (list?: AnyObject[]) => void;
|
37
38
|
relayMessage: (param: {
|
38
39
|
checkedIds: string[];
|
39
40
|
remark: string;
|
40
|
-
|
41
|
+
contents: AnyObject[];
|
41
42
|
}) => Promise<void>;
|
42
43
|
setCurrentSessionItem: (item: AnyObject) => void;
|
43
44
|
setMessageLabel: (params: {
|
@@ -57,6 +58,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
57
58
|
x: number;
|
58
59
|
y: number;
|
59
60
|
};
|
61
|
+
showForwardDetail: import("vue").Ref<boolean>;
|
60
62
|
pageInfo: {
|
61
63
|
page: number;
|
62
64
|
hasMore: boolean;
|
@@ -89,6 +91,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
89
91
|
remark: string;
|
90
92
|
}) => void;
|
91
93
|
reEdit: (item: AnyObject) => void;
|
94
|
+
clickMergeMsg: (item: AnyObject) => void;
|
92
95
|
NAvatar: any;
|
93
96
|
NImageGroup: any;
|
94
97
|
NImage: any;
|
@@ -96,6 +99,11 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
96
99
|
NButtonGroup: any;
|
97
100
|
NButton: any;
|
98
101
|
NSpace: any;
|
102
|
+
NCheckbox: any;
|
103
|
+
isArray: {
|
104
|
+
(value?: any): value is any[];
|
105
|
+
<T>(value?: any): value is any[];
|
106
|
+
};
|
99
107
|
MessageTemplate: import("vue").DefineComponent<{
|
100
108
|
data: {
|
101
109
|
type: import("vue").PropType<AnyObject>;
|
@@ -213,6 +221,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
213
221
|
userId: string;
|
214
222
|
info: AnyObject | null;
|
215
223
|
};
|
224
|
+
isForward: boolean;
|
216
225
|
};
|
217
226
|
setUserDetail: (event: MouseEvent, userDetail: AnyObject) => void;
|
218
227
|
inviter: import("vue").Ref<any>;
|
@@ -227,6 +236,61 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
227
236
|
required: true;
|
228
237
|
};
|
229
238
|
}>>, {}>;
|
239
|
+
MessageMergeForward: import("vue").DefineComponent<{
|
240
|
+
id: {
|
241
|
+
type: StringConstructor;
|
242
|
+
};
|
243
|
+
}, {
|
244
|
+
props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
|
245
|
+
id: {
|
246
|
+
type: StringConstructor;
|
247
|
+
};
|
248
|
+
}>> & {}>>;
|
249
|
+
state: {
|
250
|
+
orgId: string | number;
|
251
|
+
currentSessionItem: AnyObject;
|
252
|
+
id: string;
|
253
|
+
userInfo: AnyObject;
|
254
|
+
msgList: AnyObject[];
|
255
|
+
currentMsg: AnyObject;
|
256
|
+
isAppendMsg: boolean;
|
257
|
+
sessionList: AnyObject[];
|
258
|
+
isChangeSession: boolean;
|
259
|
+
updateSessionItem: AnyObject;
|
260
|
+
isUpdateSession: boolean;
|
261
|
+
currentReferenceMsg: AnyObject | null;
|
262
|
+
currentReEditMsg: AnyObject | null;
|
263
|
+
showVideo: boolean;
|
264
|
+
currentAVMsg: AnyObject;
|
265
|
+
currentGroupUser: AnyObject[];
|
266
|
+
showMultipleVideo: boolean;
|
267
|
+
userDetail: {
|
268
|
+
show: boolean;
|
269
|
+
position: {
|
270
|
+
x: number;
|
271
|
+
y: number;
|
272
|
+
};
|
273
|
+
userId: string;
|
274
|
+
info: AnyObject | null;
|
275
|
+
};
|
276
|
+
isForward: boolean;
|
277
|
+
};
|
278
|
+
msgItem: import("vue").ComputedRef<AnyObject>;
|
279
|
+
msgList: import("vue").ComputedRef<any>;
|
280
|
+
NModal: any;
|
281
|
+
NAvatar: any;
|
282
|
+
formatTime: typeof import("../utils").formatTime;
|
283
|
+
getForwardTitle: typeof getForwardTitle;
|
284
|
+
MESSAGE_TYPE: typeof MESSAGE_TYPE;
|
285
|
+
emojis: {
|
286
|
+
default: string[][];
|
287
|
+
findEmoji(name: string): any;
|
288
|
+
};
|
289
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
290
|
+
id: {
|
291
|
+
type: StringConstructor;
|
292
|
+
};
|
293
|
+
}>>, {}>;
|
230
294
|
SelectLabel: import("vue").DefineComponent<{
|
231
295
|
id: {
|
232
296
|
type: StringConstructor;
|
@@ -351,6 +415,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
351
415
|
key: string;
|
352
416
|
label: string;
|
353
417
|
}[];
|
418
|
+
orgList: AnyObject[];
|
354
419
|
props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
|
355
420
|
title: {
|
356
421
|
type: StringConstructor;
|
@@ -406,6 +471,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
406
471
|
userId: string;
|
407
472
|
info: AnyObject | null;
|
408
473
|
};
|
474
|
+
isForward: boolean;
|
409
475
|
};
|
410
476
|
setCurrentSessionItem: (item: AnyObject) => void;
|
411
477
|
listRef: import("vue").Ref<any>;
|
@@ -442,10 +508,16 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
442
508
|
allChecked: import("vue").WritableComputedRef<boolean>;
|
443
509
|
checkedSourceIds: import("vue").WritableComputedRef<any[]>;
|
444
510
|
currentTabKey: import("vue").ComputedRef<any>;
|
511
|
+
showAllCheckbox: import("vue").ComputedRef<boolean>;
|
512
|
+
getOrgList: () => Promise<void>;
|
513
|
+
setUserTotal: (tree: AnyObject[]) => void;
|
445
514
|
getDisabled: (id: string | number) => boolean;
|
446
515
|
handleClickCheckbox: (option: AnyObject) => Promise<void>;
|
447
516
|
toggleTab: (item: AnyObject) => void;
|
448
517
|
handleTabBack: () => void;
|
518
|
+
openTree: (option: AnyObject, _type?: string | undefined) => void;
|
519
|
+
getOrgDisabled: (option: AnyObject) => boolean;
|
520
|
+
getAllUser: (tree: AnyObject[]) => AnyObject[];
|
449
521
|
handlePositiveClick: () => Promise<void>;
|
450
522
|
closeTag: (id: string) => void;
|
451
523
|
NModal: any;
|
@@ -465,7 +537,8 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
465
537
|
PersonOutline: 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<{}>>, {}>;
|
466
538
|
PeopleOutline: 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<{}>>, {}>;
|
467
539
|
ChevronBackOutline: 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<{}>>, {}>;
|
468
|
-
|
540
|
+
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<{}>>, {}>;
|
541
|
+
last: <T_1>(array: import("lodash").List<T_1> | null | undefined) => T_1 | undefined;
|
469
542
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "comfirm"[], "comfirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
470
543
|
title: {
|
471
544
|
type: StringConstructor;
|
@@ -502,6 +575,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
502
575
|
simplifyMessage: typeof simplifyMessage;
|
503
576
|
isAudioOrVideoMessage: typeof isAudioOrVideoMessage;
|
504
577
|
getAVTime: typeof getAVTime;
|
578
|
+
getForwardTitle: typeof getForwardTitle;
|
505
579
|
MESSAGE_TYPE: typeof MESSAGE_TYPE;
|
506
580
|
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<{}>>, {}>;
|
507
581
|
EllipsisHorizontal: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
|
@@ -1 +1 @@
|
|
1
|
-
import{defineComponent as e,ref as n,reactive as t,computed as o,watch as s,openBlock as i,createElementBlock as a,normalizeClass as l,unref as r,normalizeStyle as c,createVNode as u,withCtx as d,Fragment as m,renderList as p,toDisplayString as y,createCommentVNode as g,createBlock as v,createElementVNode as f,createTextVNode as h,withModifiers as k,nextTick as T}from"vue";import{NImageGroup as M,NButton as w,NAvatar as C,NImage as _,NIcon as x,NSpace as I,NButtonGroup as L,NTooltip as b}from"naive-ui";import{format as j}from"date-fns";import{getHistoryRecordApi as E,readMessageApi as S}from"../api/index.js";import{useData as z}from"../hooks/useData.js";import"stompjs";import"sockjs-client/dist/sockjs.min.js";import{MESSAGE_TYPE as A}from"../constants/index.js";import{isAudioOrVideoMessage as D,simplifyMessage as H,getAVTime as R,downloadFile as N}from"../utils/index.js";import{first as B,last as O,toString as q}from"lodash-es";import"trtc-sdk-v5";import U from"./MessageTemplate.vue.js";import J from"./MessageEvent.vue.js";import P from"./SelectLabel.vue.js";import{emojis as W}from"../utils/emoji.js";import X from"./ContextMenu.js";import F from"./ChatAdd.vue.js";import"../../../../shared/utils/index.js";import"@vueuse/core";import"@vue/shared";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import{CallOutline as G,VideocamOutline as K,DocumentSharp as Y,HappyOutline as V,ChatbubbleEllipsesOutline as $,EllipsisHorizontal as Q,ArrowDownSharp as Z}from"@vicons/ionicons5";import{useScrollLoading as ee}from"../../../../shared/hooks/useScrollLoading.js";const ne={key:0,class:"tip-text"},te={key:1,class:"tip-text"},oe={key:2,class:"message-box"},se={key:0,class:"content-box"},ie={class:"name-box"},ae=["data-time"],le=["onContextmenu"],re={key:0,class:"reference-content"},ce=["innerHTML"],ue=["src"],de=["innerHTML"],me=["innerHTML"],pe={style:{"margin-left":"8px"}},ye={class:"size"},ge=["src"],ve={key:0};var fe=e({__name:"ChatMain",setup(e){const fe=n(),{state:he,setMsgList:ke,relayMessage:Te,setCurrentSessionItem:Me,setMessageLabel:we,setUserDetail:Ce,isGroupChat:_e}=z(),xe=n(),Ie=n(!1),Le=n({left:0,top:0}),be=n(),je=n(),Ee=n(!1),Se=t({x:0,y:0}),ze={page:0,hasMore:!0,lastSendTime:j(new Date,"yyyy-MM-dd HH:mm:ss")},Ae=o((()=>({"--c-tip-top":_e.value?"1px":"-20px","--c-tip-gap":_e.value?"10px":"0px"})));function De({nodes:e}){var n,t;const{_ctx:o}=null==(n=e.download)?void 0:n.children,s=o?null==(t=null==o?void 0:o.proxy)?void 0:t.previewSrc:"";return[e.prev,e.next,e.rotateCounterclockwise,e.rotateClockwise,e.resizeToOriginalSize,e.zoomOut,e.zoomIn,u(b,null,{trigger:()=>u(x,{style:"cursor: pointer",color:"rgba(255, 255, 255, 0.75",size:24,component:Z,onClick:()=>s&&N(s,"img")},null),default:()=>{var e;return(null==(e=window.getLanguageByCode)?void 0:e.call(window,"10010.1.102"))||"下载"}}),e.close]}async function He(){try{if(!ze.hasMore)return;ze.page++;const e=await E({sessionKey:he.currentSessionItem.sessionKey,page:ze.page,lastSendTime:ze.lastSendTime});if(!Array.isArray(e)||0===e.length)return ze.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");const n=B(e).id;ze.lastSendTime=O(e).sendTime,ke(ze.page>1?[...he.msgList,...e]:e),1===ze.page&&he.currentSessionItem.unreadNum&&(await S({chatType:he.currentSessionItem.chatType,messageIdSet:[n],receiver:he.userInfo.id,sender:he.currentSessionItem.receiver}),Me({unreadNum:0}))}catch(e){console.log(e)}}async function Re(e,n){be.value=n,async function(e){var n,t,o,s,i,a;Ie.value=!0,await T();const{clientX:l,clientY:r}=e,{width:c=0,height:u=0,left:d=0,top:m=0}=(null==(n=fe.value)?void 0:n.getBoundingClientRect())||{},p=null!=(s=null==(o=null==(t=xe.value)?void 0:t.$el)?void 0:o.getBoundingClientRect().height)?s:220,y=null!=(a=null==(i=fe.value)?void 0:i.scrollTop)?a:0,g=5,v={};l<=d+c/2?v.left=l-d+g+"px":v.right=d+c-l-g+"px";r-m<p/2?v.top=y+g+"px":m+u-r<=p/2?v.bottom=Math.abs(y)+g+"px":v.top=y+r-m-p/2+"px";Le.value=v}(e)}function Ne(e){const{chatMessageType:n,messageTemplate:t}=e.content;return n!==A.TEMPLATE||!!t}function Be(e){const{chatMessageType:n}=e.content;return e.sender===he.userInfo.id&&Date.now()-new Date(e.sendTime).getTime()<864e5&&[A.TEXT,A.EMOJI].includes(n)}function Oe(e){const{chatMessageType:n,msg:t=""}=e.content;if(n===A.BLEND){const e=q(t).match(/<img[^>]*>/gi);return!e||!e.length}return n&&[A.TEXT,A.EMOJI].includes(n)}function qe(e){const{chatMessageType:n,msg:t=""}=e.content,o=q(t).match(/<img[^>]*>/gi);return n===A.BLEND&&o&&o.length}function Ue(e,n){var t,o;const{chatMessageType:s,messageTemplate:i}=e.content;if(s===A.TEMPLATE)return"system"===n?2==(null==(t=null==i?void 0:i.setting)?void 0:t.style.id):2!=(null==(o=null==i?void 0:i.setting)?void 0:o.style.id)}function Je(e){var n,t;const{chatMessageType:o,messageTemplate:s}=e;return o===A.TEMPLATE&&3==(null==(t=null==(n=null==s?void 0:s.setting)?void 0:n.style)?void 0:t.id)}function Pe(e,n){var t;const o=new Date(e.sendTime).getTime(),s=null==(t=he.msgList[n+1])?void 0:t.sendTime;if(s){return o-new Date(s).getTime()>3e5}return!0}function We(e){he.currentReferenceMsg=e,he.currentReferenceMsg.content.referenceContent=null,Object.assign(he.currentReferenceMsg,{chatType:he.currentSessionItem.chatType,receiver:he.currentSessionItem.receiver,receiverAvatar:he.currentSessionItem.avatar,receiverName:he.currentSessionItem.name})}function Xe(e,n){var t;"reply"!==e?"relay"===e&&(null==(t=je.value)||t.click()):We(n)}function Fe({checkedIds:e,remark:n}){const t=he.msgList.find((e=>e.id===be.value));Te({checkedIds:e,remark:n,content:t.content})}return ee(fe,(()=>{He()}),"top",(()=>{Ee.value=Ie.value=!1})),s((()=>he.id),(e=>{e&&(he.currentReferenceMsg=null,Object.assign(ze,{page:0,hasMore:!0,lastSendTime:j(new Date,"yyyy-MM-dd HH:mm:ss")}),He())}),{immediate:!0}),s((()=>he.isAppendMsg),(e=>{e&&(ke([he.currentMsg,...he.msgList]),async function(){var e;null==(e=fe.value)||e.scrollTo({top:0,behavior:"auto"})}(),he.isAppendMsg=!1)}),{immediate:!0}),(e,n)=>{var t;return i(),a("div",{class:l(["chat-main",{"home-bg":!r(he).id}]),ref_key:"chatMainRef",ref:fe,style:c(r(Ae))},[u(r(M),{"show-toolbar-tooltip":"","render-toolbar":De},{default:d((()=>[(i(!0),a(m,null,p(r(he).msgList,((e,n)=>{var t,o,s;return i(),a(m,{key:e.id},[Ne(e)?(i(),a("div",{key:0,class:l(["message-item",{"message-item--mine":e.sender==r(he).userInfo.id}])},[Pe(e,n)?(i(),a("p",ne,y(e.__sendTime),1)):g("v-if",!0),Ue(e,"system")||"WITHDRAWN"===e.status||(null==(t=e.content)?void 0:t.chatMessageType)===r(A).EVENT?(i(),a(m,{key:1},[Ue(e,"system")?(i(),v(U,{key:0,data:e},null,8,["data"])):g("v-if",!0),"WITHDRAWN"===e.status?(i(),a("p",te,[f("span",null,y(e.sender==r(he).userInfo.id?(null==(o=window.getLanguageByCode)?void 0:o.call(window,"10010.1.67"))||"你":e.senderName)+((null==(s=window.getLanguageByCode)?void 0:s.call(window,"10010.1.68"))||"撤回了一条消息"),1),Be(e)?(i(),v(r(w),{key:0,size:"tiny",style:{color:"var(--c-primary-color)","margin-left":"5px"},text:"",onClick:()=>function(e){he.currentReEditMsg=e}(e)},{default:d((()=>{var e;return[h((null==(e=window.getLanguageByCode)?void 0:e.call(window,"10010.1.69"))||"重新编辑")]})),_:2},1032,["onClick"])):g("v-if",!0)])):(i(),v(J,{key:2,data:e},null,8,["data"]))],64)):(i(),a("div",oe,[u(r(C),{round:"",size:38,src:e.senderAvatar,onClick:n=>r(Ce)(n,{show:!0,userId:e.sender})},null,8,["src","onClick"]),e.content?(i(),a("div",se,[f("div",ie,[f("span",{class:"name","data-time":e.__time},y(r(_e)?e.senderName:""),9,ae)]),f("div",{class:l(["content",{emoji:e.content.chatMessageType===r(A).EMOJI&&!e.content.referenceContent,template:e.content.chatMessageType===r(A).TEMPLATE,"template--3":Je(e.content),"audio-video":r(D)(e.content),file:e.content.chatMessageType===r(A).FILE}]),onContextmenu:k((n=>Re(n,e.id)),["prevent"])},[Oe(e)?(i(),a(m,{key:0},[e.content.referenceContent?(i(),a("div",re,[f("span",null,y(e.content.referenceContent.senderName)+":",1),f("pre",{innerHTML:r(H)(e.content.referenceContent.content)},null,8,ce)])):g("v-if",!0),e.content.chatMessageType===r(A).EMOJI?(i(),a("img",{key:1,class:l([e.content.referenceContent?"emoji--min":"emoji--big"]),src:r(W).findEmoji(e.__content)},null,10,ue)):(i(),a("pre",{key:2,innerHTML:e.__content},null,8,de))],64)):g("v-if",!0),qe(e)?(i(),a("pre",{key:1,innerHTML:e.__content},null,8,me)):g("v-if",!0),Ue(e,"template")?(i(),v(U,{key:2,data:e},null,8,["data"])):g("v-if",!0),e.content.chatMessageType===r(A).IMAGE?(i(),v(r(_),{key:3,width:"240",src:e.__content},null,8,["src"])):g("v-if",!0),r(D)(e.content)?(i(),a(m,{key:4},[u(r(x),{class:l({"is-audio":e.content.chatMessageType===r(A).AUDIO}),component:e.content.chatMessageType===r(A).AUDIO?r(G):r(K)},null,8,["class","component"]),f("span",pe,y(r(R)(e.__content)),1)],64)):g("v-if",!0),e.content.chatMessageType===r(A).FILE?(i(),v(r(I),{key:5,"wrap-item":!1},{default:d((()=>[u(r(x),{class:"icon-file",size:"40",component:r(Y)},null,8,["component"]),u(r(I),{"wrap-item":!1,vertical:"",justify:"space-between",style:{"row-gap":"0"}},{default:d((()=>[f("span",null,y(e.__content),1),f("span",ye,y(e.__size),1)])),_:2},1024)])),_:2},1024)):g("v-if",!0),!r(D)(e.content)&&e.content.labelList?(i(),v(r(I),{key:6,"wrap-item":!1},{default:d((()=>[(i(!0),a(m,null,p(e.content.labelList,((n,t)=>(i(),a("div",{key:t,class:"label-item"},["text"===n.type?(i(),v(r(w),{key:0,type:n.label.type,secondary:"",size:"tiny",onClick:()=>r(we)({type:n.type,labelItem:n.label,msgId:e.id})},{default:d((()=>[h(y(n.label.label),1)])),_:2},1032,["type","onClick"])):(i(),v(r(w),{key:1,quaternary:"",size:"tiny",onClick:()=>r(we)({type:n.type,labelItem:n.label,msgId:e.id})},{icon:d((()=>[f("img",{class:"emoji--min",src:r(W).findEmoji(n.label)},null,8,ge)])),_:2},1032,["onClick"])),(i(!0),a(m,null,p(n.userList,((e,t)=>(i(),a(m,{key:e.id},[u(r(w),{quaternary:"",type:"tertiary",size:"tiny",onClick:n=>r(Ce)(n,{show:!0,info:e})},{default:d((()=>[h(y(e.name),1)])),_:2},1032,["onClick"]),t<n.userList.length-1?(i(),a("span",ve,",")):g("v-if",!0)],64)))),128))])))),128))])),_:2},1024)):g("v-if",!0),u(r(L),{class:"quick-menu"},{default:d((()=>[r(D)(e.content)?g("v-if",!0):(i(),a(m,{key:0},[u(r(w),{quaternary:"",size:"tiny",onClick:n=>function(e,n){Ee.value=!0,Se.x=e.clientX,Se.y=e.clientY,be.value=n}(n,e.id)},{icon:d((()=>[u(r(x),{size:"17",component:r(V)},null,8,["component"])])),_:2},1032,["onClick"]),u(r(w),{quaternary:"",size:"tiny",onClick:()=>We(e)},{icon:d((()=>[u(r(x),{size:"17",component:r($)},null,8,["component"])])),_:2},1032,["onClick"])],64)),u(r(w),{quaternary:"",size:"tiny",onClick:n=>Re(n,e.id)},{icon:d((()=>[u(r(x),{size:"14",component:r(Q)},null,8,["component"])])),_:2},1032,["onClick"])])),_:2},1024)],42,le)])):g("v-if",!0)]))],2)):g("v-if",!0)],64)})),128))])),_:1}),u(r(X),{ref_key:"contextmenuRef",ref:xe,show:Ie.value,"onUpdate:show":n[0]||(n[0]=e=>Ie.value=e),position:Le.value,id:be.value,onSelect:Xe},null,8,["show","position","id"]),u(F,{title:(null==(t=window.getLanguageByCode)?void 0:t.call(window,"10010.1.44"))||"转发消息",mode:"relay",onComfirm:Fe},{trigger:d((()=>{var e;return[f("span",{style:{display:"none"},ref_key:"relayTriggerRef",ref:je},(null==(e=window.getLanguageByCode)?void 0:e.call(window,"10010.1.45"))||"转发",512)]})),_:1}),be.value?(i(),v(P,{key:0,show:Ee.value,"onUpdate:show":n[1]||(n[1]=e=>Ee.value=e),x:Se.x,y:Se.y,id:be.value},null,8,["show","x","y","id"])):g("v-if",!0)],6)}}});export{fe as default};
|
1
|
+
import{defineComponent as e,ref as n,reactive as t,computed as s,watch as o,openBlock as i,createElementBlock as a,normalizeClass as l,unref as r,normalizeStyle as c,createVNode as u,withCtx as d,Fragment as m,renderList as p,toDisplayString as g,createCommentVNode as y,createBlock as v,createElementVNode as f,createTextVNode as h,withModifiers as k,nextTick as w}from"vue";import{NImageGroup as T,NButton as M,NCheckbox as C,NAvatar as _,NImage as x,NIcon as L,NSpace as I,NButtonGroup as b,NTooltip as j}from"naive-ui";import{format as E}from"date-fns";import{getHistoryRecordApi as S,readMessageApi as z}from"../api/index.js";import{useData as A}from"../hooks/useData.js";import"stompjs";import"sockjs-client/dist/sockjs.min.js";import{MESSAGE_TYPE as D}from"../constants/index.js";import{isAudioOrVideoMessage as R,simplifyMessage as H,getForwardTitle as N,getAVTime as O,downloadFile as B}from"../utils/index.js";import{first as F,last as U,isArray as q,toString as W}from"lodash-es";import"trtc-sdk-v5";import P from"./MessageTemplate.vue.js";import J from"./MessageEvent.vue.js";import X from"./MessageMergeForward.vue.js";import G from"./SelectLabel.vue.js";import{emojis as K}from"../utils/emoji.js";import Y from"./ContextMenu.js";import V from"./ChatAdd.vue.js";import"../../../../shared/utils/index.js";import"@vueuse/core";import"@vue/shared";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import{CallOutline as $,VideocamOutline as Q,DocumentSharp as Z,HappyOutline as ee,ChatbubbleEllipsesOutline as ne,EllipsisHorizontal as te,ArrowDownSharp as se}from"@vicons/ionicons5";import{useScrollLoading as oe}from"../../../../shared/hooks/useScrollLoading.js";const ie={key:0,class:"tip-text"},ae={key:1,class:"tip-text"},le=["onClick"],re={class:"message-box"},ce={key:0,class:"content-box"},ue={class:"name-box"},de=["data-time"],me=["onContextmenu"],pe={key:0,class:"reference-content"},ge=["innerHTML"],ye=["src"],ve=["innerHTML"],fe=["innerHTML"],he=["onClick"],ke={class:"merge-msg-contents"},we={style:{"margin-left":"8px"}},Te={class:"size"},Me=["src"],Ce={key:0};var _e=e({__name:"ChatMain",setup(e){const _e=n(),{state:xe,setMsgList:Le,relayMessage:Ie,setCurrentSessionItem:be,setMessageLabel:je,setUserDetail:Ee,isGroupChat:Se}=A(),ze=n(),Ae=n(!1),De=n({left:0,top:0}),Re=n(),He=n(),Ne=n(!1),Oe=t({x:0,y:0}),Be=n(!1),Fe={page:0,hasMore:!0,lastSendTime:E(new Date,"yyyy-MM-dd HH:mm:ss")},Ue=s((()=>({"--c-tip-top":Se.value?"1px":"-20px","--c-tip-gap":Se.value?"10px":"0px"})));function qe({nodes:e}){var n,t;const{_ctx:s}=null==(n=e.download)?void 0:n.children,o=s?null==(t=null==s?void 0:s.proxy)?void 0:t.previewSrc:"";return[e.prev,e.next,e.rotateCounterclockwise,e.rotateClockwise,e.resizeToOriginalSize,e.zoomOut,e.zoomIn,u(j,null,{trigger:()=>u(L,{style:"cursor: pointer",color:"rgba(255, 255, 255, 0.75",size:24,component:se,onClick:()=>o&&B(o,"img")},null),default:()=>{var e;return(null==(e=window.getLanguageByCode)?void 0:e.call(window,"10010.1.102"))||"下载"}}),e.close]}async function We(){try{if(!Fe.hasMore)return;Fe.page++;const e=await S({sessionKey:xe.currentSessionItem.sessionKey,page:Fe.page,lastSendTime:Fe.lastSendTime});if(!Array.isArray(e)||0===e.length)return Fe.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");const n=F(e).id;Fe.lastSendTime=U(e).sendTime,Le(Fe.page>1?[...xe.msgList,...e]:e),1===Fe.page&&xe.currentSessionItem.unreadNum&&(await z({chatType:xe.currentSessionItem.chatType,messageIdSet:[n],receiver:xe.userInfo.id,sender:xe.currentSessionItem.receiver}),be({unreadNum:0}))}catch(e){console.log(e)}}async function Pe(e,n){Re.value=n,async function(e){var n,t,s,o,i,a;Ae.value=!0,await w();const{clientX:l,clientY:r}=e,{width:c=0,height:u=0,left:d=0,top:m=0}=(null==(n=_e.value)?void 0:n.getBoundingClientRect())||{},p=null!=(o=null==(s=null==(t=ze.value)?void 0:t.$el)?void 0:s.getBoundingClientRect().height)?o:220,g=null!=(a=null==(i=_e.value)?void 0:i.scrollTop)?a:0,y=5,v={};l<=d+c/2?v.left=l-d+y+"px":v.right=d+c-l-y+"px";r-m<p/2?v.top=g+y+"px":m+u-r<=p/2?v.bottom=Math.abs(g)+y+"px":v.top=g+r-m-p/2+"px";De.value=v}(e)}function Je(e){const{chatMessageType:n,messageTemplate:t}=e.content;return n!==D.TEMPLATE||!!t}function Xe(e){const{chatMessageType:n}=e.content;return e.sender===xe.userInfo.id&&Date.now()-new Date(e.sendTime).getTime()<864e5&&[D.TEXT,D.EMOJI].includes(n)}function Ge(e){const{chatMessageType:n,msg:t=""}=e.content;if(n===D.BLEND){const e=W(t).match(/<img[^>]*>/gi);return!e||!e.length}return n&&[D.TEXT,D.EMOJI].includes(n)}function Ke(e){const{chatMessageType:n,msg:t=""}=e.content,s=W(t).match(/<img[^>]*>/gi);return n===D.BLEND&&s&&s.length}function Ye(e,n){var t,s;const{chatMessageType:o,messageTemplate:i}=e.content;if(o===D.TEMPLATE)return"system"===n?2==(null==(t=null==i?void 0:i.setting)?void 0:t.style.id):2!=(null==(s=null==i?void 0:i.setting)?void 0:s.style.id)}function Ve(e){var n,t;const{chatMessageType:s,messageTemplate:o}=e;return s===D.TEMPLATE&&3==(null==(t=null==(n=null==o?void 0:o.setting)?void 0:n.style)?void 0:t.id)}function $e(e,n){var t;const s=new Date(e.sendTime).getTime(),o=null==(t=xe.msgList[n+1])?void 0:t.sendTime;if(o){return s-new Date(o).getTime()>3e5}return!0}function Qe(e){xe.currentReferenceMsg=e,xe.currentReferenceMsg.content.referenceContent=null,Object.assign(xe.currentReferenceMsg,{chatType:xe.currentSessionItem.chatType,receiver:xe.currentSessionItem.receiver,receiverAvatar:xe.currentSessionItem.avatar,receiverName:xe.currentSessionItem.name})}function Ze(e,n){var t;"reply"!==e?"relay"===e&&(null==(t=He.value)||t.click()):Qe(n)}function en({checkedIds:e,remark:n}){const t=xe.msgList.find((e=>e.id===Re.value));Ie({checkedIds:e,remark:n,contents:[t.content]})}return oe(_e,(()=>{We()}),"top",(()=>{Ne.value=Ae.value=!1})),o((()=>xe.id),(e=>{e&&(xe.currentReferenceMsg=null,Object.assign(Fe,{page:0,hasMore:!0,lastSendTime:E(new Date,"yyyy-MM-dd HH:mm:ss")}),We())}),{immediate:!0}),o((()=>xe.isAppendMsg),(e=>{e&&(Le([xe.currentMsg,...xe.msgList]),async function(){var e;null==(e=_e.value)||e.scrollTo({top:0,behavior:"auto"})}(),xe.isAppendMsg=!1)}),{immediate:!0}),(e,n)=>{var t;return i(),a("div",{class:l(["chat-main",{"home-bg":!r(xe).id,"chat-main--check":r(xe).isForward}]),ref_key:"chatMainRef",ref:_e,style:c(r(Ue))},[u(r(T),{"show-toolbar-tooltip":"","render-toolbar":qe},{default:d((()=>[(i(!0),a(m,null,p(r(xe).msgList,((e,t)=>{var s,o,c;return i(),a(m,{key:e.id},[Je(e)?(i(),a("div",{key:0,class:l(["message-item",{"message-item--mine":e.sender==r(xe).userInfo.id}])},[$e(e,t)?(i(),a("p",ie,g(e.__sendTime),1)):y("v-if",!0),Ye(e,"system")||"WITHDRAWN"===e.status||(null==(s=e.content)?void 0:s.chatMessageType)===r(D).EVENT?(i(),a(m,{key:1},[Ye(e,"system")?(i(),v(P,{key:0,data:e},null,8,["data"])):y("v-if",!0),"WITHDRAWN"===e.status?(i(),a("p",ae,[f("span",null,g(e.sender==r(xe).userInfo.id?(null==(o=window.getLanguageByCode)?void 0:o.call(window,"10010.1.67"))||"你":e.senderName)+((null==(c=window.getLanguageByCode)?void 0:c.call(window,"10010.1.68"))||"撤回了一条消息"),1),Xe(e)?(i(),v(r(M),{key:0,size:"tiny",style:{color:"var(--c-primary-color)","margin-left":"5px"},text:"",onClick:()=>function(e){xe.currentReEditMsg=e}(e)},{default:d((()=>{var e;return[h((null==(e=window.getLanguageByCode)?void 0:e.call(window,"10010.1.69"))||"重新编辑")]})),_:2},1032,["onClick"])):y("v-if",!0)])):(i(),v(J,{key:2,data:e},null,8,["data"]))],64)):(i(),a("div",{key:2,class:l(["message-wrapper",{checked:e.checked}]),onClick:()=>e.checked=!e.checked},[u(r(C),{checked:e.checked,"onUpdate:checked":n=>e.checked=n,size:"large"},null,8,["checked","onUpdate:checked"]),f("div",re,[u(r(_),{round:"",size:38,src:e.senderAvatar,onClick:k((n=>r(Ee)(n,{show:!0,userId:e.sender})),["stop"])},null,8,["src","onClick"]),e.content?(i(),a("div",ce,[f("div",ue,[f("span",{class:"name","data-time":e.__time},g(r(Se)?e.senderName:""),9,de)]),f("div",{class:l(["content",{emoji:e.content.chatMessageType===r(D).EMOJI&&!e.content.referenceContent,template:e.content.chatMessageType===r(D).TEMPLATE,"template--3":Ve(e.content),"audio-video":r(R)(e.content),file:e.content.chatMessageType===r(D).FILE,"merge-msg":e.content.chatMessageType===r(D).FORWARD&&r(q)(e.content.forwardMessageList)}]),onContextmenu:k((n=>!r(xe).isForward&&Pe(n,e.id)),["prevent"])},[Ge(e)?(i(),a(m,{key:0},[e.content.referenceContent?(i(),a("div",pe,[f("span",null,g(e.content.referenceContent.senderName)+":",1),f("pre",{innerHTML:r(H)(e.content.referenceContent.content)},null,8,ge)])):y("v-if",!0),e.content.chatMessageType===r(D).EMOJI?(i(),a("img",{key:1,class:l([e.content.referenceContent?"emoji--min":"emoji--big"]),src:r(K).findEmoji(e.__content)},null,10,ye)):(i(),a("pre",{key:2,innerHTML:e.__content},null,8,ve))],64)):y("v-if",!0),Ke(e)?(i(),a("pre",{key:1,innerHTML:e.__content},null,8,fe)):y("v-if",!0),Ye(e,"template")?(i(),v(P,{key:2,data:e},null,8,["data"])):y("v-if",!0),e.content.chatMessageType===r(D).FORWARD&&r(q)(e.content.forwardMessageList)?(i(),a("div",{key:3,class:"merge-msg-box",onClick:()=>function(e){xe.isForward||(Re.value=e.id,Be.value=!0)}(e)},[f("h4",null,g(r(N)(e.content)),1),f("div",ke,[(i(!0),a(m,null,p(e.content.forwardMessageList,(e=>(i(),a("div",{key:e.id},g(e.senderName)+":"+g(r(H)(e.content)),1)))),128))])],8,he)):y("v-if",!0),e.content.chatMessageType===r(D).IMAGE?(i(),v(r(x),{key:4,width:"240",src:e.__content,onClick:n[0]||(n[0]=e=>e.stopPropagation())},null,8,["src"])):y("v-if",!0),r(R)(e.content)?(i(),a(m,{key:5},[u(r(L),{class:l({"is-audio":e.content.chatMessageType===r(D).AUDIO}),component:e.content.chatMessageType===r(D).AUDIO?r($):r(Q)},null,8,["class","component"]),f("span",we,g(r(O)(e.__content)),1)],64)):y("v-if",!0),e.content.chatMessageType===r(D).FILE?(i(),v(r(I),{key:6,"wrap-item":!1},{default:d((()=>[u(r(L),{class:"icon-file",size:"40",component:r(Z)},null,8,["component"]),u(r(I),{"wrap-item":!1,vertical:"",justify:"space-between",style:{"row-gap":"0"}},{default:d((()=>[f("span",null,g(e.__content),1),f("span",Te,g(e.__size),1)])),_:2},1024)])),_:2},1024)):y("v-if",!0),!r(R)(e.content)&&e.content.labelList?(i(),v(r(I),{key:7,"wrap-item":!1},{default:d((()=>[(i(!0),a(m,null,p(e.content.labelList,((n,t)=>(i(),a("div",{key:t,class:"label-item"},["text"===n.type?(i(),v(r(M),{key:0,type:n.label.type,secondary:"",size:"tiny",onClick:()=>r(je)({type:n.type,labelItem:n.label,msgId:e.id})},{default:d((()=>[h(g(n.label.label),1)])),_:2},1032,["type","onClick"])):(i(),v(r(M),{key:1,quaternary:"",size:"tiny",onClick:()=>r(je)({type:n.type,labelItem:n.label,msgId:e.id})},{icon:d((()=>[f("img",{class:"emoji--min",src:r(K).findEmoji(n.label)},null,8,Me)])),_:2},1032,["onClick"])),(i(!0),a(m,null,p(n.userList,((e,t)=>(i(),a(m,{key:e.id},[u(r(M),{quaternary:"",type:"tertiary",size:"tiny",onClick:n=>r(Ee)(n,{show:!0,info:e})},{default:d((()=>[h(g(e.name),1)])),_:2},1032,["onClick"]),t<n.userList.length-1?(i(),a("span",Ce,",")):y("v-if",!0)],64)))),128))])))),128))])),_:2},1024)):y("v-if",!0),u(r(b),{class:"quick-menu"},{default:d((()=>[r(R)(e.content)?y("v-if",!0):(i(),a(m,{key:0},[u(r(M),{quaternary:"",size:"tiny",onClick:n=>function(e,n){Ne.value=!0,Oe.x=e.clientX,Oe.y=e.clientY,Re.value=n}(n,e.id)},{icon:d((()=>[u(r(L),{size:"17",component:r(ee)},null,8,["component"])])),_:2},1032,["onClick"]),u(r(M),{quaternary:"",size:"tiny",onClick:()=>Qe(e)},{icon:d((()=>[u(r(L),{size:"17",component:r(ne)},null,8,["component"])])),_:2},1032,["onClick"])],64)),u(r(M),{quaternary:"",size:"tiny",onClick:n=>Pe(n,e.id)},{icon:d((()=>[u(r(L),{size:"14",component:r(te)},null,8,["component"])])),_:2},1032,["onClick"])])),_:2},1024)],42,me)])):y("v-if",!0)])],10,le))],2)):y("v-if",!0)],64)})),128))])),_:1}),u(r(Y),{ref_key:"contextmenuRef",ref:ze,show:Ae.value,"onUpdate:show":n[1]||(n[1]=e=>Ae.value=e),position:De.value,id:Re.value,onSelect:Ze},null,8,["show","position","id"]),u(V,{title:(null==(t=window.getLanguageByCode)?void 0:t.call(window,"10010.1.44"))||"转发消息",mode:"relay",onComfirm:en},{trigger:d((()=>{var e;return[f("span",{style:{display:"none"},ref_key:"relayTriggerRef",ref:He},(null==(e=window.getLanguageByCode)?void 0:e.call(window,"10010.1.45"))||"转发",512)]})),_:1}),Re.value?(i(),v(G,{key:0,show:Ne.value,"onUpdate:show":n[2]||(n[2]=e=>Ne.value=e),x:Oe.x,y:Oe.y,id:Re.value},null,8,["show","x","y","id"])):y("v-if",!0),u(X,{show:Be.value,"onUpdate:show":n[3]||(n[3]=e=>Be.value=e),id:Re.value},null,8,["show","id"])],6)}}});export{_e as default};
|
@@ -1 +1 @@
|
|
1
|
-
import{createElementVNode as e,defineComponent as a,ref as l,watch as t,openBlock as r,createBlock as o,unref as n,withCtx as s,createVNode as i,toDisplayString as u,resolveDynamicComponent as d,createElementBlock as c,Fragment as v,renderList as m,withDirectives as p,createTextVNode as
|
1
|
+
import{createElementVNode as e,defineComponent as a,ref as l,watch as t,openBlock as r,createBlock as o,unref as n,withCtx as s,createVNode as i,toDisplayString as u,resolveDynamicComponent as d,createElementBlock as c,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 w,NInput as b,NSelect as _,NPopover as k,NTag as T,NIcon as j}from"naive-ui";import{SearchOutline as M}from"@vicons/ionicons5";import{useData as x}from"../hooks/useData.js";import"stompjs";import"sockjs-client/dist/sockjs.min.js";import{MESSAGE_TYPE as C}from"../constants/index.js";import{searchChatRecordApi as L}from"../api/index.js";import{transformMessage as I,formatTime as A}from"../utils/index.js";import{last as S}from"lodash-es";import"trtc-sdk-v5";import H from"../../../date-picker/index.js";import{useDebounceFn as B}from"@vueuse/core";import{format as D}from"date-fns";import"../../../../shared/utils/index.js";import"@vue/shared";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import{useScrollLoading as E}from"../../../../shared/hooks/useScrollLoading.js";import{emojis as U}from"../utils/emoji.js";var z,G;const R={class:"iho-chat-dialog__header"},N=e("span",{class:"left"},(null==(z=window.getLanguageByCode)?void 0:z.call(window,"10010.1.65"))||"聊天记录",-1),O={class:"center"},W={class:"iho-chat-dialog__content iho-chat-record-wrapper"},J={class:"chat-record-box"},P={class:"msg-box"},$={class:"name-and-time"},q={class:"content"},F=["src"],K=["src"],Q=["innerHTML"],V={key:1,class:"no-data"},X={class:"chat-record-box__filter"},Y=e("span",{class:"filter-title"},(null==(G=window.getLanguageByCode)?void 0:G.call(window,"10010.1.72"))||"添加筛选条件",-1),Z={class:"filter-item"},ee=e("span",{class:"label"},"成员:",-1),ae={class:"filter-item"},le=e("span",{class:"label"},"日期:",-1),te={class:"time-target"},re={class:"time-target__item"},oe=e("span",null,"开始:",-1),ne={class:"tip"},se={class:"time-target__item"},ie=e("span",null,"结束:",-1),ue={class:"tip"};var de=a({__name:"ChatRecord",props:{visible:{type:Boolean}},setup(a){const z=a,G={color:"#fff",textColor:"#666"},{state:de}=x(),ce=l(),ve=l([]),me=l(),pe=l([]),fe=l(),ge=l(),he=B(be,500),ye={page:0,hasMore:!0,lastSendTime:D(new Date,"yyyy-MM-dd HH:mm:ss")};async function we(){var e;try{if(!ye.hasMore)return;ye.page++;const a=await L({orgId:de.orgId,keyword:me.value,endTime:Te(),startTime:fe.value?fe.value+" 00:00:00":"",lastSendTime:ye.lastSendTime,memberIdSet:pe.value,page:ye.page,recordType:"ALL",receiver:de.currentSessionItem.receiver,userId:de.userInfo.id});Array.isArray(a)&&0!==a.length&&Array.isArray(a[0].recordList)||(ye.hasMore=!1);let l=a||[];Array.isArray(a)&&a.length>0&&(l=a[0].recordList.filter((e=>"WITHDRAWN"!==e.status))),ye.lastSendTime=null==(e=S(l))?void 0:e.sendTime,l.forEach((e=>{var a,l,t;let r="";if(e.content.chatMessageType===C.TEMPLATE)r=null==(t=null==(l=null==(a=e.content)?void 0:a.messageTemplate)?void 0:l.setting)?void 0:t.title;else r=I(e.content);e.__content=r})),ve.value=ye.page>1?ve.value.concat(l):l}catch(e){}}function be(){Object.assign(ye,{page:0,hasMore:!0,lastSendTime:Te()||D(new Date,"yyyy-MM-dd HH:mm:ss")}),we()}function _e(e){return!!ge.value&&e>Date.parse(`${ge.value} 23:59:59`)}function ke(e){return!!fe.value&&e<Date.parse(fe.value)}function Te(){return ge.value?ge.value+" 23:59:59":""}function je(e){switch(e){case"member":pe.value=[];break;case"start":fe.value=null;break;case"end":ge.value=null}}function Me(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 E(ce,(()=>{we()})),t([()=>pe.value,()=>fe.value,()=>ge.value],(()=>{z.visible&&be()}),{deep:!0}),t((()=>z.visible),(e=>{e?be():(me.value="",ge.value=null,fe.value=null,pe.value=[],ve.value=[])})),(a,l)=>(r(),o(n(h),{preset:"dialog",title:"","show-icon":!1,"auto-focus":!1,class:"iho-chat-dialog"},{header:s((()=>[e("div",R,[N,e("div",O,[i(n(y),{round:"",size:30,src:n(de).currentSessionItem.avatar},null,8,["src"]),e("span",null,u(n(de).currentSessionItem.name),1)])])])),default:s((()=>[e("div",W,[i(n(w),null,{default:s((()=>{var e;return[(r(),o(d((()=>[i(j,{component:M,size:18,color:"#6666"},null),pe.value.length>0?i(T,{closable:!0,bordered:!1,color:G,onClose:()=>je("member")},{default:()=>{var e,a;return[f("成员:")," ",pe.value.length>1?pe.value.length+((null==(e=window.getLanguageByCode)?void 0:e.call(window,"10010.1.40"))||"人"):null==(a=de.currentGroupUser.find((e=>e.id===pe.value[0])))?void 0:a.name]}}):null,fe.value?i(T,{closable:!0,bordered:!1,color:G,onClose:()=>je("start")},{default:()=>[f("起始时间: "),fe.value]}):null,ge.value?i(T,{closable:!0,bordered:!1,color:G,onClose:()=>je("end")},{default:()=>[f("结束时间: "),ge.value]}):null])))),i(n(b),{placeholder:(null==(e=window.getLanguageByCode)?void 0:e.call(window,"10010.1.36"))||"搜索",value:me.value,"onUpdate:value":l[0]||(l[0]=e=>me.value=e),valueModifiers:{trim:!0},onInput:n(he)},null,8,["value","onInput"])]})),_:1}),e("div",J,[e("div",{class:"chat-record-box__content",ref_key:"recordRef",ref:ce},[ve.value.length>0?(r(!0),c(v,{key:0},m(ve.value,(a=>(r(),c("div",{class:"content-item",key:a.id},[i(n(y),{round:"",size:38,src:a.senderAvatar},null,8,["src"]),e("div",P,[e("div",$,[e("span",null,u(a.senderName),1),e("span",null,u(n(A)(a.sendTime).recordTime),1)]),e("div",q,[a.content.chatMessageType===n(C).IMAGE?(r(),c("img",{key:0,src:a.__content},null,8,F)):a.content.chatMessageType===n(C).EMOJI?(r(),c("img",{key:1,class:"emoji",src:n(U).findEmoji(a.__content)},null,8,K)):(r(),c("p",{key:2,innerHTML:a.__content},null,8,Q))])])])))),128)):(r(),c("div",V,"没有找到相关记录"))],512),e("div",X,[Y,e("div",Z,[ee,i(n(_),{value:pe.value,"onUpdate:value":l[1]||(l[1]=e=>pe.value=e),multiple:"","max-tag-count":1,"render-label":Me,options:n(de).currentGroupUser,"value-field":"id"},null,8,["value","options"])]),e("div",ae,[le,e("div",te,[i(n(k),{trigger:"click","show-arrow":!1},{trigger:s((()=>{var a;return[e("div",re,[oe,p(i(n(T),{bordered:!1,color:G,closable:"",onClose:l[2]||(l[2]=()=>je("start"))},{default:s((()=>[f(u(fe.value),1)])),_:1},512),[[g,fe.value]]),p(e("span",ne,(null==(a=window.getLanguageByCode)?void 0:a.call(window,"10010.1.76"))||"点击选择",512),[[g,!fe.value]])])]})),default:s((()=>[i(n(H),{"formatted-value":fe.value,"onUpdate:formatted-value":l[3]||(l[3]=e=>fe.value=e),type:"date",panel:"",clearable:"","is-date-disabled":_e},null,8,["formatted-value"])])),_:1}),i(n(k),{trigger:"click","show-arrow":!1},{trigger:s((()=>{var a;return[e("div",se,[ie,p(i(n(T),{bordered:!1,color:G,closable:"",onClose:l[4]||(l[4]=()=>je("end"))},{default:s((()=>[f(u(ge.value),1)])),_:1},512),[[g,ge.value]]),p(e("span",ue,(null==(a=window.getLanguageByCode)?void 0:a.call(window,"10010.1.76"))||"点击选择",512),[[g,!ge.value]])])]})),default:s((()=>[i(n(H),{"formatted-value":ge.value,"onUpdate:formatted-value":l[5]||(l[5]=e=>ge.value=e),type:"date",panel:"",clearable:"","is-date-disabled":ke},null,8,["formatted-value"])])),_:1})])])])])])])),_:1}))}});export{de as default};
|
@@ -31,6 +31,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
31
31
|
userId: string;
|
32
32
|
info: AnyObject | null;
|
33
33
|
};
|
34
|
+
isForward: boolean;
|
34
35
|
};
|
35
36
|
setCurrentSessionItem: (item: AnyObject) => void;
|
36
37
|
setUserDetail: (event: MouseEvent, userDetail: AnyObject) => void;
|
@@ -95,6 +96,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
95
96
|
key: string;
|
96
97
|
label: string;
|
97
98
|
}[];
|
99
|
+
orgList: AnyObject[];
|
98
100
|
props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
|
99
101
|
title: {
|
100
102
|
type: StringConstructor;
|
@@ -150,6 +152,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
150
152
|
userId: string;
|
151
153
|
info: AnyObject | null;
|
152
154
|
};
|
155
|
+
isForward: boolean;
|
153
156
|
};
|
154
157
|
setCurrentSessionItem: (item: AnyObject) => void;
|
155
158
|
listRef: import("vue").Ref<any>;
|
@@ -186,10 +189,16 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
186
189
|
allChecked: import("vue").WritableComputedRef<boolean>;
|
187
190
|
checkedSourceIds: import("vue").WritableComputedRef<any[]>;
|
188
191
|
currentTabKey: import("vue").ComputedRef<any>;
|
192
|
+
showAllCheckbox: import("vue").ComputedRef<boolean>;
|
193
|
+
getOrgList: () => Promise<void>;
|
194
|
+
setUserTotal: (tree: AnyObject[]) => void;
|
189
195
|
getDisabled: (id: string | number) => boolean;
|
190
196
|
handleClickCheckbox: (option: AnyObject) => Promise<void>;
|
191
197
|
toggleTab: (item: AnyObject) => void;
|
192
198
|
handleTabBack: () => void;
|
199
|
+
openTree: (option: AnyObject, _type?: string | undefined) => void;
|
200
|
+
getOrgDisabled: (option: AnyObject) => boolean;
|
201
|
+
getAllUser: (tree: AnyObject[]) => AnyObject[];
|
193
202
|
handlePositiveClick: () => Promise<void>;
|
194
203
|
closeTag: (id: string) => void;
|
195
204
|
NModal: any;
|
@@ -209,6 +218,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
209
218
|
PersonOutline: 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
219
|
PeopleOutline: 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
220
|
ChevronBackOutline: 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<{}>>, {}>;
|
221
|
+
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<{}>>, {}>;
|
212
222
|
last: <T>(array: import("lodash").List<T> | null | undefined) => T | undefined;
|
213
223
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "comfirm"[], "comfirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
214
224
|
title: {
|
@@ -1 +1 @@
|
|
1
|
-
import{defineComponent as e,ref as t,computed as o,withDirectives as i,createVNode as s,vShow as n,isVNode as a}from"vue";import{NButtonGroup as l,NButton as r,NIcon as d}from"naive-ui";import{CopyOutline as c,OpenOutline as u,ChatbubbleEllipsesOutline as p,
|
1
|
+
import{defineComponent as e,ref as t,computed as o,withDirectives as i,createVNode as s,vShow as n,isVNode as a}from"vue";import{NButtonGroup as l,NButton as r,NIcon as d}from"naive-ui";import{CopyOutline as c,OpenOutline as u,ChatbubbleEllipsesOutline as p,ReorderFourOutline as m,ReturnDownBack as w,DownloadOutline as g}from"@vicons/ionicons5";import{onClickOutside as y}from"@vueuse/core";import{useData as f}from"../hooks/useData.js";import"stompjs";import"sockjs-client/dist/sockjs.min.js";import{STATUS as v,MESSAGE_TYPE as h}from"../constants/index.js";import{recallMessageApi as T}from"../api/index.js";import{isAudioOrVideoMessage as b,$message as I,downloadFile as k}from"../utils/index.js";import"lodash-es";import"trtc-sdk-v5";import{emojis as E}from"../utils/emoji.js";import{format as j}from"date-fns";var M=e({name:"PopupMenu",inheritAttrs:!1,props:{type:{type:String,default:"message"},show:{type:Boolean,default:!1},position:{type:Object},id:{type:String}},emits:["update:show","select"],setup(e,{attrs:M,slots:L,emit:S}){var D,x,B,C,A,O;const{state:W,setCurrentSessionItem:$}=f(),H=[{icon:c,label:(null==(D=window.getLanguageByCode)?void 0:D.call(window,"10010.1.97"))||"复制",key:"copy"},{icon:u,label:(null==(x=window.getLanguageByCode)?void 0:x.call(window,"10010.1.45"))||"转发",key:"relay"},{icon:p,label:(null==(B=window.getLanguageByCode)?void 0:B.call(window,"10010.1.99"))||"回复",key:"reply"},{icon:m,label:(null==(C=window.getLanguageByCode)?void 0:C.call(window,"10010.1.100"))||"多选",key:"multiSelect"},{icon:w,label:(null==(A=window.getLanguageByCode)?void 0:A.call(window,"10010.1.101"))||"撤回",key:"withdraw"},{icon:g,label:(null==(O=window.getLanguageByCode)?void 0:O.call(window,"10010.1.102"))||"下载",key:"download"}],J=[{label:"置顶会话",key:"topping"},{label:"移除会话",key:"remove"}],N=t(null),R=o((()=>("message"===e.type?W.msgList:W.sessionList).find((({id:t})=>t===e.id)))),F=o((()=>{var t;if(!e.id)return[];if(!(null==R?void 0:R.value))return[];if("session"===e.type){const e=[...J];return e[0].label=(null==(t=R.value)?void 0:t.topping)?"取消置顶":"置顶会话",R.value.status===v.ENDED&&e.pop(),e}const{content:o={},sendTime:i,sender:s}=R.value,{chatMessageType:n}=o,a=[];return(s!==W.userInfo.id||n===h.TEMPLATE||s===W.userInfo.id&&Date.now()-new Date(i).getTime()>2592e5)&&a.push("withdraw"),[h.TEXT,h.EMOJI,h.BLEND].includes(n)?a.push("download"):b(o)?a.push("copy","relay","reply","download"):n===h.FILE?a.push("copy"):[h.FORWARD,h.TEMPLATE].includes(n)&&a.push("copy","download"),a.length?H.filter((e=>!a.includes(e.key))):H}));return y(N,(e=>{S("update:show",!1)})),()=>{let t;return e.id&&F.value?i(s("div",{class:"contextmenu-wrapper",ref:N,style:e.position},[s(l,{vertical:!0},(o=t=F.value.map((t=>s(r,{key:t.key,onClick:()=>async function(t){S("update:show",!1);const{content:o={},sendTime:i,sender:s}=R.value||{},{chatMessageType:n}=o;switch(t){case"copy":if(!o.msg)return console.log("复制内容为空!");if(!navigator||!("clipboard"in navigator))return console.log("当前浏览器版本不支持复制!");try{if(n===h.TEXT)await navigator.clipboard.writeText(o.msg);else{let e;if([h.EMOJI,h.IMAGE].includes(n)){const t=n===h.EMOJI?E.findEmoji(o.msg):o.msg;e=`<img data-msg=${o.msg} data-type=${n} class=${n===h.EMOJI?"emoji--min":""} src=${t} />`}else e=o.msg;await navigator.clipboard.write([new window.ClipboardItem({"text/html":new Blob([e],{type:"text/html"})})])}}catch(e){console.log("复制失败!")}return;case"download":{let{fileUrl:e,msg:t}=o;return n===h.IMAGE&&(e=t,t=t.match(/\/([^\/?#]+)$/)[1]),void k(e,t)}case"withdraw":try{const t=W.msgList.findIndex((({id:t})=>t===e.id)),o=0===t;if(await T({chatType:W.currentSessionItem.chatType,messageIdSet:[e.id],receiver:W.currentSessionItem.receiver,sender:W.userInfo.id,isLastMessage:o}),W.msgList[t].status="WITHDRAWN",o){const e=j(new Date,"yyyy-MM-dd HH:mm:ss");$({lastMessageStatus:"WITHDRAWN",lastMessageSendTime:e,sortTime:e,updatedTime:e})}}catch(e){I.error("撤回失败")}return;case"multiSelect":W.isForward=!0}S("select",t,R.value)}(t.key),quaternary:!0},{default:()=>t.label,icon:()=>t.icon?s(d,{component:t.icon},null):null}))),"function"==typeof o||"[object Object]"===Object.prototype.toString.call(o)&&!a(o)?t:{default:()=>[t]}))]),[[n,e.show]]):null;var o}}});export{M as default};
|
@@ -0,0 +1,59 @@
|
|
1
|
+
import { AnyObject } from '../../../../shared/types';
|
2
|
+
import { formatTime, getForwardTitle } from '../utils';
|
3
|
+
import { MESSAGE_TYPE } from '../constants';
|
4
|
+
declare const _default: import("vue").DefineComponent<{
|
5
|
+
id: {
|
6
|
+
type: StringConstructor;
|
7
|
+
};
|
8
|
+
}, {
|
9
|
+
props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
|
10
|
+
id: {
|
11
|
+
type: StringConstructor;
|
12
|
+
};
|
13
|
+
}>> & {}>>;
|
14
|
+
state: {
|
15
|
+
orgId: string | number;
|
16
|
+
currentSessionItem: AnyObject;
|
17
|
+
id: string;
|
18
|
+
userInfo: AnyObject;
|
19
|
+
msgList: AnyObject[];
|
20
|
+
currentMsg: AnyObject;
|
21
|
+
isAppendMsg: boolean;
|
22
|
+
sessionList: AnyObject[];
|
23
|
+
isChangeSession: boolean;
|
24
|
+
updateSessionItem: AnyObject;
|
25
|
+
isUpdateSession: boolean;
|
26
|
+
currentReferenceMsg: AnyObject | null;
|
27
|
+
currentReEditMsg: AnyObject | null;
|
28
|
+
showVideo: boolean;
|
29
|
+
currentAVMsg: AnyObject;
|
30
|
+
currentGroupUser: AnyObject[];
|
31
|
+
showMultipleVideo: boolean;
|
32
|
+
userDetail: {
|
33
|
+
show: boolean;
|
34
|
+
position: {
|
35
|
+
x: number;
|
36
|
+
y: number;
|
37
|
+
};
|
38
|
+
userId: string;
|
39
|
+
info: AnyObject | null;
|
40
|
+
};
|
41
|
+
isForward: boolean;
|
42
|
+
};
|
43
|
+
msgItem: import("vue").ComputedRef<AnyObject>;
|
44
|
+
msgList: import("vue").ComputedRef<any>;
|
45
|
+
NModal: any;
|
46
|
+
NAvatar: any;
|
47
|
+
formatTime: typeof formatTime;
|
48
|
+
getForwardTitle: typeof getForwardTitle;
|
49
|
+
MESSAGE_TYPE: typeof MESSAGE_TYPE;
|
50
|
+
emojis: {
|
51
|
+
default: string[][];
|
52
|
+
findEmoji(name: string): any;
|
53
|
+
};
|
54
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
55
|
+
id: {
|
56
|
+
type: StringConstructor;
|
57
|
+
};
|
58
|
+
}>>, {}>;
|
59
|
+
export default _default;
|
@@ -0,0 +1 @@
|
|
1
|
+
import e from"./MessageMergeForward.vue2.js";import r from"../../../../_virtual/_plugin-vue_export-helper.js";var a=r(e,[["__file","MessageMergeForward.vue"]]);export{a as default};
|
@@ -0,0 +1 @@
|
|
1
|
+
import{defineComponent as t,computed as e,openBlock as s,createBlock as o,unref as n,withCtx as i,createElementVNode as r,createElementBlock as a,Fragment as c,renderList as d,createVNode as m,toDisplayString as l}from"vue";import{NModal as p,NAvatar as u}from"naive-ui";import{useData as f}from"../hooks/useData.js";import"stompjs";import"sockjs-client/dist/sockjs.min.js";import{MESSAGE_TYPE as g}from"../constants/index.js";import"../api/index.js";import{transformMessage as h,getForwardTitle as _,formatTime as j}from"../utils/index.js";import{isArray as v}from"lodash-es";import"trtc-sdk-v5";import{emojis as M}from"../utils/emoji.js";const k={class:"iho-chat-dialog__content iho-chat-record-wrapper iho-chat-record-wrapper--forward"},w={class:"msg-box"},y={class:"name-and-time"},T={class:"content"},x=["src"],L=["src"],E=["innerHTML"];var A=t({__name:"MessageMergeForward",props:{id:{type:String}},setup(t){const A=t,{state:H}=f(),I=e((()=>A.id&&H.msgList.find((({id:t})=>t===A.id))||{})),b=e((()=>{if(!I.value)return[];const{content:t={}}=I.value;return v(t.forwardMessageList)?t.forwardMessageList.map((t=>({...t,__content:h(t.content)}))):[]}));return(t,e)=>(s(),o(n(p),{preset:"dialog",title:n(_)(n(I).content),"show-icon":!1,"auto-focus":!1,class:"iho-chat-dialog"},{default:i((()=>[r("div",k,[(s(!0),a(c,null,d(n(b),(t=>(s(),a("div",{class:"content-item",key:t.id},[m(n(u),{round:"",size:38,src:t.senderAvatar},null,8,["src"]),r("div",w,[r("div",y,[r("span",null,l(t.senderName),1),r("span",null,l(n(j)(t.sendTime).recordTime),1)]),r("div",T,[t.content.chatMessageType===n(g).IMAGE?(s(),a("img",{key:0,src:t.__content},null,8,x)):t.content.chatMessageType===n(g).EMOJI?(s(),a("img",{key:1,class:"emoji",src:n(M).findEmoji(t.__content)},null,8,L)):(s(),a("p",{key:2,innerHTML:t.__content},null,8,E))])])])))),128))])])),_:1},8,["title"]))}});export{A as default};
|
@@ -33,6 +33,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
33
33
|
userId: string;
|
34
34
|
info: AnyObject | null;
|
35
35
|
};
|
36
|
+
isForward: boolean;
|
36
37
|
};
|
37
38
|
sendMessage: (message: {
|
38
39
|
chatType?: string | undefined;
|
@@ -113,6 +114,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
113
114
|
key: string;
|
114
115
|
label: string;
|
115
116
|
}[];
|
117
|
+
orgList: AnyObject[];
|
116
118
|
props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
|
117
119
|
title: {
|
118
120
|
type: StringConstructor;
|
@@ -168,6 +170,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
168
170
|
userId: string;
|
169
171
|
info: AnyObject | null;
|
170
172
|
};
|
173
|
+
isForward: boolean;
|
171
174
|
};
|
172
175
|
setCurrentSessionItem: (item: AnyObject) => void;
|
173
176
|
listRef: import("vue").Ref<any>;
|
@@ -204,10 +207,16 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
204
207
|
allChecked: import("vue").WritableComputedRef<boolean>;
|
205
208
|
checkedSourceIds: import("vue").WritableComputedRef<any[]>;
|
206
209
|
currentTabKey: import("vue").ComputedRef<any>;
|
210
|
+
showAllCheckbox: import("vue").ComputedRef<boolean>;
|
211
|
+
getOrgList: () => Promise<void>;
|
212
|
+
setUserTotal: (tree: AnyObject[]) => void;
|
207
213
|
getDisabled: (id: string | number) => boolean;
|
208
214
|
handleClickCheckbox: (option: AnyObject) => Promise<void>;
|
209
215
|
toggleTab: (item: AnyObject) => void;
|
210
216
|
handleTabBack: () => void;
|
217
|
+
openTree: (option: AnyObject, _type?: string | undefined) => void;
|
218
|
+
getOrgDisabled: (option: AnyObject) => boolean;
|
219
|
+
getAllUser: (tree: AnyObject[]) => AnyObject[];
|
211
220
|
handlePositiveClick: () => Promise<void>;
|
212
221
|
closeTag: (id: string) => void;
|
213
222
|
NModal: any;
|
@@ -227,6 +236,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
227
236
|
PersonOutline: 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<{}>>, {}>;
|
228
237
|
PeopleOutline: 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<{}>>, {}>;
|
229
238
|
ChevronBackOutline: 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<{}>>, {}>;
|
239
|
+
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<{}>>, {}>;
|
230
240
|
last: <T>(array: import("lodash").List<T> | null | undefined) => T | undefined;
|
231
241
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "comfirm"[], "comfirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
232
242
|
title: {
|
@@ -34,6 +34,7 @@ export declare function initData(props: AnyObject, emit: (event: 'template-click
|
|
34
34
|
userId: string;
|
35
35
|
info: AnyObject | null;
|
36
36
|
};
|
37
|
+
isForward: boolean;
|
37
38
|
};
|
38
39
|
unreadTotal: import("vue").ComputedRef<number>;
|
39
40
|
isGroupChat: import("vue").ComputedRef<boolean>;
|
@@ -48,7 +49,7 @@ export declare function initData(props: AnyObject, emit: (event: 'template-click
|
|
48
49
|
relayMessage: (param: {
|
49
50
|
checkedIds: string[];
|
50
51
|
remark: string;
|
51
|
-
|
52
|
+
contents: AnyObject[];
|
52
53
|
}) => Promise<void>;
|
53
54
|
setMessageLabel: (params: {
|
54
55
|
type: 'emoji' | 'text';
|
@@ -96,6 +97,7 @@ export declare const useData: () => {
|
|
96
97
|
userId: string;
|
97
98
|
info: AnyObject | null;
|
98
99
|
};
|
100
|
+
isForward: boolean;
|
99
101
|
};
|
100
102
|
unreadTotal: import("vue").ComputedRef<number>;
|
101
103
|
isGroupChat: import("vue").ComputedRef<boolean>;
|
@@ -110,7 +112,7 @@ export declare const useData: () => {
|
|
110
112
|
relayMessage: (param: {
|
111
113
|
checkedIds: string[];
|
112
114
|
remark: string;
|
113
|
-
|
115
|
+
contents: AnyObject[];
|
114
116
|
}) => Promise<void>;
|
115
117
|
setMessageLabel: (params: {
|
116
118
|
type: 'emoji' | 'text';
|
@@ -1 +1 @@
|
|
1
|
-
import{ref as e,reactive as s,computed as t,watch as n,toRef as i,inject as r,toRaw as o}from"vue";import{openSessionApi as a,updateStatusApi as u,groupUserApi as c}from"../api/index.js";import{promiseTimeout as d,useIntervalFn as m}from"@vueuse/core";import{isGroup as l,listSort as p,formatTime as f,transformMessage as g,getFileSize as h,simplifyMessage as
|
1
|
+
import{ref as e,reactive as s,computed as t,watch as n,toRef as i,inject as r,toRaw as o}from"vue";import{openSessionApi as a,updateStatusApi as u,groupUserApi as c}from"../api/index.js";import{promiseTimeout as d,useIntervalFn as m}from"@vueuse/core";import{isGroup as l,listSort as p,formatTime as f,transformMessage as g,getFileSize as h,$message as I,simplifyMessage as S}from"../utils/index.js";import{cloneDeep as y,remove as L,isArray as T,uniqBy as v}from"lodash-es";import{STATUS as M,MESSAGE_TYPE as E,CHAT_TYPE as C}from"../constants/index.js";import{useTheme as b}from"../../../../shared/hooks/useTheme.js";import"date-fns";import"@vue/shared";import"../../../../shared/utils/index.js";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import"@vicons/ionicons5";import"naive-ui";import"../../../../shared/hooks/useScrollLoading.js";const w=Symbol("InjectionIChatData");function D(e){const{lastMessage:s,lastSenderName:t=""}=e,n=S(s)||"";return l(e)&&t?t+": "+n:n}function N(r,S){const w=e(),N=s({orgId:r.orgId,currentSessionItem:{},id:"",userInfo:{id:r.userId},msgList:[],currentMsg:{},isAppendMsg:!1,sessionList:[],isChangeSession:!1,updateSessionItem:{},isUpdateSession:!1,currentReferenceMsg:null,currentReEditMsg:null,showVideo:!1,currentAVMsg:{},currentGroupUser:[],showMultipleVideo:!1,userDetail:{show:!1,position:{x:0,y:0},userId:"",info:null},isForward:!1}),j=b(),U=t((()=>N.sessionList.reduce(((e,s)=>e+ +s.unreadNum),0))),_=t((()=>l(N.currentSessionItem))),x=t((()=>{var e,s,t;return(null==(e=N.userInfo)?void 0:e.id)===(null==(t=null==(s=N.currentGroupUser)?void 0:s[0])?void 0:t.id)})),G=t((()=>{var e;return(null==(e=N.currentSessionItem)?void 0:e.status)===M.ENDED}));n((()=>U.value),(e=>{!async function s(t=0){if(t>2)return;const n=N.sessionList.filter((e=>{var s;return+(null!=(s=e.unreadNum)?s:0)>0}));n.every((e=>!!e.name))?S("unread-message-update",e,p(n)):(await d(300),s(++t))}()})),n([()=>N.isChangeSession,()=>N.isUpdateSession],(([e,s])=>{e&&(F(N.currentSessionItem),N.currentSessionItem.status===M.REMOVED&&P(),N.isChangeSession=!1),s&&(F(N.updateSessionItem),N.isUpdateSession=!1)}),{immediate:!0});const{pause:O,resume:R,isActive:K}=m((()=>{const e=y(N.msgList);e.some((e=>{const{sendTime:s}=e;return!(Date.now()-new Date(s).getTime()>=36e5)&&(e.__sendTime=f(s).recordTime,!0)})),N.msgList=e,k()||O()}),6e4,{immediate:!1});function k(){return!!N.msgList.length&&N.msgList.some((e=>Date.now()-new Date(e.sendTime).getTime()<36e5))}async function A(e){var s;try{null==(s=w.value)||s.send("/app/chat/send",{},JSON.stringify({chatType:N.currentSessionItem.chatType,receiver:N.currentSessionItem.receiver,...e}))}catch(e){}}function V(e){Object.assign(N.currentSessionItem,e,{lastMessageContent:Reflect.has(e,"lastMessageContent")?e.lastMessageContent:Reflect.has(e,"lastMessage")?D({...e,chatType:e.chatType||N.currentSessionItem.chatType}):N.currentSessionItem.lastMessageContent}),N.isChangeSession=!0,N.id!==N.currentSessionItem.id&&(N.msgList=[],N.id=N.currentSessionItem.id)}function B(e){const s=N.sessionList.find((s=>s.sessionKey===e.sessionKey)),t={...e,lastMessageContent:D({...e,chatType:e.chatType||(null==s?void 0:s.chatType)})};N.updateSessionItem=s?{...y(s),...t}:t,N.isUpdateSession=!0}function P(){if(!N.id)return null;const{currentSessionItem:e}=N;return N.currentSessionItem={},N.msgList=[],N.id="",N.currentGroupUser=[],e}function z(e){N.sessionList=y(v(e,"id")),N.sessionList.forEach((e=>{Object.assign(e,{defaultName:Reflect.has(e,"defaultName")?e.defaultName:e.name||"",lastMessageContent:Reflect.has(e,"lastMessageContent")?e.lastMessageContent:D(e)}),e.receiver===N.userInfo.id&&(e.unreadNum=0),e.chatType!==C.GROUP||e.name||c({id:e.receiver}).then((s=>{T(s)&&(e.name=s.map((e=>e.name)).join(","))}))}))}function F(e){!e.id||N.sessionList.map((e=>e.id)).includes(e.id)?N.sessionList.some((s=>{if(s.sessionKey===e.sessionKey){let{unreadNum:t=0}=s;return Object.assign(s,e),e.sessionKey!==N.currentSessionItem.sessionKey&&s.sender&&s.sender!==N.userInfo.id&&(s.unreadNum=++t),!0}})):z([...N.sessionList,e])}return{filterable:i(r,"filterable"),trtcProxy:i(r,"trtcProxy"),cssVars:j,stompClient:w,state:N,unreadTotal:U,isGroupChat:_,isGroupLeader:x,isEnded:G,setMsgList:function(e=[]){O(),N.msgList=y(e).sort(((e,s)=>new Date(s.sendTime).getTime()-new Date(e.sendTime).getTime())),N.msgList.forEach((e=>{Object.assign(e,{__time:f(e.sendTime).msgTime,__content:g(e.content),__sendTime:f(e.sendTime).recordTime}),e.content.chatMessageType!==E.FILE||e.__size||h(e.content.fileUrl).then((s=>{e.__size=s}))})),k()&&R()},sendMessage:A,relayMessage:async function(e){const{checkedIds:s,remark:t,contents:n}=e;for(let e=0;e<s.length;e++)try{const i=s[e],r=N.sessionList.find((e=>e.receiver===i));r||await a({chatType:C.SINGLE,receiver:i,sender:N.userInfo.id});const o=(null==r?void 0:r.chatType)||C.SINGLE;for(let e=0;e<n.length;e++){await d(100);const s=n[e];A({chatType:o,receiver:i,content:s})}t&&(await d(100),A({chatType:o,receiver:i,content:{chatMessageType:E.TEXT,msg:t}})),await d(100)}catch(e){console.log("error ==>",e)}I.success("转发成功")},setMessageLabel:function(e){var s;const{type:t,labelItem:n,msgId:i}=e,r=N.msgList.find((e=>e.id===i));if(!r)return;const{labelList:o=[]}=r.content||{},a=o.findIndex((e=>{const s="emoji"===t?e.label===n:e.label.label===n.label;return e.type===t&&s})),u=o[a];if(u){u.userList.find((e=>e.id===N.userInfo.id))?(L(u.userList,(e=>e.id===N.userInfo.id)),(null==(s=u.userList)?void 0:s.length)||o.splice(a,1)):(u.userList||(u.userList=[]),u.userList.push(N.userInfo))}else o.push({type:t,label:n,userList:[N.userInfo]}),r.content.labelList=o},openSession:async function(e){try{const s="string"==typeof e?N.sessionList.find((s=>s.id===e)):e;if(!s)return;s.status===M.REMOVED&&(await u({id:s.id,status:M.ENABLED}),B({...s,status:M.ENABLED}),s.status=M.ENABLED);const t=N.currentSessionItem.sessionKey;if(V(s),t===N.currentSessionItem.sessionKey)return;if(_.value){const e=await c({id:s.receiver});N.currentGroupUser=T(e)?e:[]}else N.currentGroupUser=v([N.userInfo,{...y(s),id:s.receiver}],"id");S("session-change",{...o(N.currentSessionItem),userList:N.currentGroupUser.map((e=>o(e)))})}catch(e){console.log("error---\x3e",e)}},closeSession:P,getCurrentSession:function(){return N.id?N.currentSessionItem:null},setCurrentSessionItem:V,setUpdateSessionItem:B,setSessionList:z,emit:S,setUserDetail:function(e,s){Object.assign(N.userDetail,s,{position:{x:e.clientX,y:e.clientY}})}}}const j=()=>r(w);export{w as InjectionIChatData,N as initData,j as useData};
|