cnhis-design-vue 3.2.7-beta.3 → 3.2.7-beta.5
Sign up to get free protection for your applications and to get access to all the features.
- package/es/components/fabric-chart/src/constants/index.d.ts +3 -1
- package/es/components/fabric-chart/src/constants/index.js +1 -1
- package/es/components/fabric-chart/src/hooks/birthProcess/useBirthProcessChart.d.ts +8 -3
- package/es/components/fabric-chart/src/hooks/birthProcess/useBirthProcessChart.js +1 -1
- package/es/components/fabric-chart/src/hooks/electrocardiogram/useElectrocardiogramChart.d.ts +9 -6
- package/es/components/fabric-chart/src/hooks/electrocardiogram/useElectrocardiogramChart.js +1 -1
- package/es/components/fabric-chart/src/hooks/newBirthProcess/useNewBirthProcessChart.d.ts +0 -2
- package/es/components/fabric-chart/src/hooks/newBirthProcess/useNewBirthProcessChart.js +1 -1
- package/es/components/fabric-chart/src/hooks/surgicalAnesthesia/useSurgicalAnesthesiaChart.d.ts +8 -3
- package/es/components/fabric-chart/src/hooks/surgicalAnesthesia/useSurgicalAnesthesiaChart.js +1 -1
- package/es/components/fabric-chart/src/hooks/temperature/useCenter.js +1 -1
- package/es/components/fabric-chart/src/hooks/temperature/useTemperatureChart.d.ts +8 -3
- package/es/components/fabric-chart/src/hooks/temperature/useTemperatureChart.js +1 -1
- package/es/components/fabric-chart/src/interface.d.ts +11 -1
- package/es/components/form-config/index.d.ts +3 -3
- package/es/components/form-config/src/FormConfig.vue.d.ts +3 -3
- package/es/components/form-config/src/components/FormConfigEdit.vue.d.ts +3 -3
- package/es/components/form-render/src/hooks/useFormValidator.js +1 -1
- package/es/components/form-render/src/types/fieldItem.d.ts +2 -1
- package/es/components/iho-chat/index.d.ts +51 -2
- package/es/components/iho-chat/src/Index.vue.d.ts +51 -2
- package/es/components/iho-chat/src/Index.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatMain.vue.d.ts +29 -2
- package/es/components/iho-chat/src/components/ChatMain.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ChatRecord.vue2.js +1 -1
- package/es/components/iho-chat/src/components/ContextMenu.d.ts +15 -2
- package/es/components/iho-chat/src/components/ContextMenu.js +1 -1
- package/es/components/iho-chat/src/hooks/useScrollLoading.d.ts +1 -1
- package/es/components/iho-chat/src/hooks/useScrollLoading.js +1 -1
- package/es/components/iho-chat/style/index.css +1 -1
- package/es/components/index.css +1 -1
- package/es/components/shortcut-setter/index.d.ts +1 -1
- package/es/components/shortcut-setter/src/ShortcutSetter.vue.d.ts +1 -1
- package/es/shared/package.json.js +1 -1
- package/package.json +2 -2
@@ -21,6 +21,13 @@ declare const _default: import("vue").DefineComponent<{
|
|
21
21
|
type: StringConstructor;
|
22
22
|
default: string;
|
23
23
|
};
|
24
|
+
chatBox: {
|
25
|
+
type: BooleanConstructor;
|
26
|
+
default: boolean;
|
27
|
+
};
|
28
|
+
defaultSessionKey: {
|
29
|
+
type: StringConstructor;
|
30
|
+
};
|
24
31
|
}, {
|
25
32
|
props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
|
26
33
|
token: {
|
@@ -39,6 +46,13 @@ declare const _default: import("vue").DefineComponent<{
|
|
39
46
|
type: StringConstructor;
|
40
47
|
default: string;
|
41
48
|
};
|
49
|
+
chatBox: {
|
50
|
+
type: BooleanConstructor;
|
51
|
+
default: boolean;
|
52
|
+
};
|
53
|
+
defaultSessionKey: {
|
54
|
+
type: StringConstructor;
|
55
|
+
};
|
42
56
|
}>> & {
|
43
57
|
"onTemplate-click"?: ((...args: any[]) => any) | undefined;
|
44
58
|
"onUnread-message-update"?: ((...args: any[]) => any) | undefined;
|
@@ -78,6 +92,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
78
92
|
handleUserSearch: () => Promise<void>;
|
79
93
|
initWebSocket: () => void;
|
80
94
|
subscribeSessionList: () => void;
|
95
|
+
handleDefaultSession: () => void;
|
81
96
|
subscribeGroupMessage: () => void;
|
82
97
|
subscribeMessage: () => void;
|
83
98
|
handleMessage: (messageVo: AnyObject, chatType: string) => Promise<void>;
|
@@ -587,7 +602,9 @@ declare const _default: import("vue").DefineComponent<{
|
|
587
602
|
setMsgList: (list?: AnyObject[]) => void;
|
588
603
|
setCurrentSessionItem: (item: AnyObject) => void;
|
589
604
|
isGroupChat: import("vue").ComputedRef<boolean>;
|
605
|
+
contextmenuRef: import("vue").Ref<any>;
|
590
606
|
showMenu: import("vue").Ref<boolean>;
|
607
|
+
contextmenuPosition: import("vue").Ref<AnyObject>;
|
591
608
|
pageInfo: {
|
592
609
|
page: number;
|
593
610
|
hasMore: boolean;
|
@@ -597,7 +614,19 @@ declare const _default: import("vue").DefineComponent<{
|
|
597
614
|
'--c-tip-top': string;
|
598
615
|
'--c-tip-gap': string;
|
599
616
|
}>;
|
617
|
+
chatMainBounding: import("vue").ComputedRef<{
|
618
|
+
height: import("vue").Ref<number>;
|
619
|
+
bottom: import("vue").Ref<number>;
|
620
|
+
left: import("vue").Ref<number>;
|
621
|
+
right: import("vue").Ref<number>;
|
622
|
+
top: import("vue").Ref<number>;
|
623
|
+
width: import("vue").Ref<number>;
|
624
|
+
x: import("vue").Ref<number>;
|
625
|
+
y: import("vue").Ref<number>;
|
626
|
+
update: () => void;
|
627
|
+
}>;
|
600
628
|
getHistoryRecord: () => Promise<void>;
|
629
|
+
handleContextmenu: (event: MouseEvent) => Promise<void>;
|
601
630
|
showMessage: (item: AnyObject) => boolean;
|
602
631
|
showTemplateMsg: (item: AnyObject, type: "template" | "system") => boolean | undefined;
|
603
632
|
isTemplate3: (content: AnyObject) => boolean;
|
@@ -768,13 +797,25 @@ declare const _default: import("vue").DefineComponent<{
|
|
768
797
|
type: BooleanConstructor;
|
769
798
|
default: boolean;
|
770
799
|
};
|
771
|
-
|
800
|
+
position: {
|
801
|
+
type: PropType<import("vue").CSSProperties>;
|
802
|
+
};
|
803
|
+
exclude: {
|
804
|
+
type: PropType<string[]>;
|
805
|
+
};
|
806
|
+
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("select" | "update:show")[], "select" | "update:show", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
772
807
|
show: {
|
773
808
|
type: BooleanConstructor;
|
774
809
|
default: boolean;
|
775
810
|
};
|
811
|
+
position: {
|
812
|
+
type: PropType<import("vue").CSSProperties>;
|
813
|
+
};
|
814
|
+
exclude: {
|
815
|
+
type: PropType<string[]>;
|
816
|
+
};
|
776
817
|
}>> & {
|
777
|
-
|
818
|
+
onSelect?: ((...args: any[]) => any) | undefined;
|
778
819
|
"onUpdate:show"?: ((...args: any[]) => any) | undefined;
|
779
820
|
}, {
|
780
821
|
show: boolean;
|
@@ -1222,10 +1263,18 @@ declare const _default: import("vue").DefineComponent<{
|
|
1222
1263
|
type: StringConstructor;
|
1223
1264
|
default: string;
|
1224
1265
|
};
|
1266
|
+
chatBox: {
|
1267
|
+
type: BooleanConstructor;
|
1268
|
+
default: boolean;
|
1269
|
+
};
|
1270
|
+
defaultSessionKey: {
|
1271
|
+
type: StringConstructor;
|
1272
|
+
};
|
1225
1273
|
}>> & {
|
1226
1274
|
"onTemplate-click"?: ((...args: any[]) => any) | undefined;
|
1227
1275
|
"onUnread-message-update"?: ((...args: any[]) => any) | undefined;
|
1228
1276
|
}, {
|
1229
1277
|
baseURL: string;
|
1278
|
+
chatBox: boolean;
|
1230
1279
|
}>;
|
1231
1280
|
export default _default;
|
@@ -1 +1 @@
|
|
1
|
-
import{defineComponent as e,ref as s,reactive as o,provide as t,onBeforeUnmount as
|
1
|
+
import{defineComponent as e,ref as s,reactive as o,provide as t,onBeforeUnmount as n,openBlock as r,createElementBlock as i,normalizeStyle as a,unref as c,createVNode as d,withCtx as u,createBlock as l,Fragment as p,createElementVNode as m,renderSlot as h,createCommentVNode as f}from"vue";import{NConfigProvider as g,NSpin as y,NLayout as v,NLayoutContent as S}from"naive-ui";import b from"./components/SiderList.vue.js";import I from"./components/ChatHeader.vue.js";import M from"./components/ChatMain.vue.js";import k from"./components/ChatFooter.vue.js";import T from"./components/ChatSearch.vue.js";import V from"./components/ChatAdd.vue.js";import j from"./components/Video.vue.js";import w from"./components/MultipleVideo.vue.js";import{ChatSock as L}from"./utils/chatSock.js";import{instanceAxios as N,listUserApi as U,readMessageApi as _}from"./api/index.js";import{useTheme as A}from"../../../shared/hooks/useTheme.js";import"@vueuse/core";import"date-fns";import{isArray as C,isNumber as O}from"lodash-es";import"@vue/shared";import"../../../shared/utils/index.js";import"@vueuse/shared";import"../../../shared/hooks/selectHooks/useSearchContent.js";import"@vicons/ionicons5";import{CHAT_TYPE as x,SUBSCRIBE_MESSAGE_TYPE as R,AV_STATUS as G}from"./constants/index.js";import{InjectionIChatState as K,InjectionIChatStompClient as E,InjectionIChatEmits as B}from"./types/index.js";import{isAudioOrVideoMessage as J}from"./utils/index.js";import{useSession as P}from"./hooks/useSession.js";import"trtc-sdk-v5";const $={key:0,class:"iho-chat__header"},q={class:"toolbar"};var z=e({__name:"Index",props:{token:{type:String,required:!0},orgId:{type:[String,Number],required:!0},userId:{type:String,required:!0},baseURL:{type:String,default:"/fdp-chat"},chatBox:{type:Boolean,default:!1},defaultSessionKey:{type:String}},emits:["template-click","unread-message-update"],setup(e,{expose:z,emit:F}){const H=e;N.defaults.baseURL=H.baseURL,N.defaults.headers.Authorization="bearer "+H.token;const D=A(),W=s(!1),Y=s(),Q=o({orgId:H.orgId,currentSessionItem:{},id:"",userInfo:{id:H.userId},msgList:[],currentMsg:{},isAppendMsg:!1,sessionList:[],isChangeSession:!1,updateSessionItem:{},isUpdateSession:!1,currentReferenceMsg:null,showVideo:!1,currentAVMsg:{},userList:[],currentGroupUser:[],showMultipleVideo:!1});t(K,Q),t(E,Y),t(B,F);const{openSession:X,closeSession:Z,getCurrentSession:ee,setSessionList:se,setUpdateSessionItem:oe,setCurrentSessionItem:te}=P(Q),ne=[];function re(){const e={headers:{AccessToken:H.token,UserId:H.userId},heartbeatFn(){try{Y.value.send("test")}catch(e){Y.value.disconnect(),re()}},connectCb(){console.log("连接成功"),Y.value.subscribe("/user/topic/single",(({body:e})=>ae({body:e,chatType:x.SINGLE}))),Y.value.subscribe("/app/sessionList",(({body:e})=>{try{const s=JSON.parse(e),{authentication:o,currentUser:t,sessionVos:n}=s;if(console.log("body",s),Object.assign(Q.userInfo,t,o),!(null==n?void 0:n.length))return;se(n),ne.splice(0,ne.length),ne.push(...n.filter((e=>e.chatType===x.GROUP))),ne.forEach((e=>{Y.value.subscribe(`/topic/group/${e.receiver}`,(({body:e})=>ae({body:e,chatType:x.GROUP})))})),function(){const e=Q.sessionList.find((e=>e.sessionKey===H.defaultSessionKey));e&&X(e)}()}catch(e){console.log(e)}}))},errorCb(e,s){console.log("断线了,正在重连...")}};Y.value=new L("/fdp-chat/websocket",e)}async function ie(e,s){if(Q.currentMsg=e,e.sessionKey===Q.currentSessionItem.sessionKey)return Q.isAppendMsg=!0,e.sender!==Q.userInfo.id&&await _({chatType:s,messageIdSet:[e.id],receiver:Q.userInfo.id,sender:e.sender}),void te({lastMessageSendTime:e.sendTime,lastMessage:e.content,sortTime:e.sendTime,unreadNum:0,lastSenderName:e.senderName});const o={lastMessageSendTime:e.sendTime,sortTime:e.sendTime,lastMessage:e.content,sessionKey:e.sessionKey,lastSenderName:e.senderName};oe(o)}async function ae({body:e,chatType:s}){try{console.log(JSON.parse(e),"订阅新增消息");const o=JSON.parse(e),{messageVo:t,sessionVo:n,chatAvStatusVo:r}=o;switch(o.event){case R.MESSAGE:J(t.content)?!Q.showVideo&&!Q.showMultipleVideo||t.content.avStatus!==G.IN_CALL?(Q.currentMsg=t,Object.assign(Q.currentAVMsg,{strRoomId:t.sessionKey,chatMessageType:t.content.chatMessageType,callMode:t.sender===Q.userInfo.id?"call":"invite",currentMsg:t}),Q.showVideo||Q.showMultipleVideo?ie(t,s):Q.showVideo=!0):(Y.value.send("/app/chat/send",{},JSON.stringify({chatType:x.SINGLE,receiver:t.sender,content:{chatMessageType:t.content.chatMessageType,avStatus:G.CALL_BUSY}})),console.log("用户忙!")):ie(t,s);break;case R.AV_STATUS:Object.assign(Q.currentAVMsg,r,{callMode:r.sender===Q.userInfo.id?"call":"invite",checkedIds:[]}),Q.showVideo||Q.showMultipleVideo?console.log("用户忙!"):Q.showMultipleVideo=!0;break;case R.NEW_SESSION:if(s===x.GROUP)return;oe(n);break;case R.JOIN:if(s===x.GROUP)return;oe(n),Y.value.subscribe(`/topic/group/${n.receiver}`,(({body:e})=>ae({body:e,chatType:x.GROUP})))}}catch(e){console.log(e)}}return async function(){re(),async function(){const e=await U({orgId:Q.orgId,keyword:"",page:1,pageSize:50});if(!C(e.records))return;Q.userList=e.records}()}(),n((()=>{var e;null==(e=Y.value)||e.disconnect()})),z({getUnreadData:function(){return Q.sessionList.filter((e=>O(e.unreadNum)&&e.unreadNum>0))},openSession:X,closeSession:Z,getCurrentSession:ee}),(s,o)=>(r(),i("div",{class:"iho-chat",style:a(c(D))},[d(c(g),{abstract:"",namespace:"iho-chat__popover"},{default:u((()=>[W.value?(r(),l(c(y),{key:0,stroke:"#5585f5"})):(r(),i(p,{key:1},[e.chatBox?f("v-if",!0):(r(),i("div",$,[d(T),d(V,{title:"发起群聊",mode:"create","default-value":[Q.userInfo.id]},null,8,["default-value"]),m("div",q,[h(s.$slots,"toolbar")])])),d(c(v),{class:"iho-chat__body","has-sider":""},{default:u((()=>[e.chatBox?f("v-if",!0):(r(),l(b,{key:0})),d(c(S),{class:"chat-content"},{default:u((()=>[d(I),d(M),d(k)])),_:1}),h(s.$slots,"external")])),_:3}),Q.showVideo?(r(),l(j,{key:1})):f("v-if",!0),Q.showMultipleVideo?(r(),l(w,{key:2})):f("v-if",!0)],64))])),_:3})],4))}});export{z as default};
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { CSSProperties } from 'vue';
|
1
2
|
import { AnyObject } from '../../../../shared/types';
|
2
3
|
import { downloadFile, simplifyMessage, isAudioOrVideoMessage, getAVTime } from '../utils';
|
3
4
|
import { MESSAGE_TYPE } from '../constants';
|
@@ -7,7 +8,9 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
7
8
|
setMsgList: (list?: AnyObject[]) => void;
|
8
9
|
setCurrentSessionItem: (item: AnyObject) => void;
|
9
10
|
isGroupChat: import("vue").ComputedRef<boolean>;
|
11
|
+
contextmenuRef: import("vue").Ref<any>;
|
10
12
|
showMenu: import("vue").Ref<boolean>;
|
13
|
+
contextmenuPosition: import("vue").Ref<AnyObject>;
|
11
14
|
pageInfo: {
|
12
15
|
page: number;
|
13
16
|
hasMore: boolean;
|
@@ -17,7 +20,19 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
17
20
|
'--c-tip-top': string;
|
18
21
|
'--c-tip-gap': string;
|
19
22
|
}>;
|
23
|
+
chatMainBounding: import("vue").ComputedRef<{
|
24
|
+
height: import("vue").Ref<number>;
|
25
|
+
bottom: import("vue").Ref<number>;
|
26
|
+
left: import("vue").Ref<number>;
|
27
|
+
right: import("vue").Ref<number>;
|
28
|
+
top: import("vue").Ref<number>;
|
29
|
+
width: import("vue").Ref<number>;
|
30
|
+
x: import("vue").Ref<number>;
|
31
|
+
y: import("vue").Ref<number>;
|
32
|
+
update: () => void;
|
33
|
+
}>;
|
20
34
|
getHistoryRecord: () => Promise<void>;
|
35
|
+
handleContextmenu: (event: MouseEvent) => Promise<void>;
|
21
36
|
showMessage: (item: AnyObject) => boolean;
|
22
37
|
showTemplateMsg: (item: AnyObject, type: 'system' | 'template') => boolean | undefined;
|
23
38
|
isTemplate3: (content: AnyObject) => boolean;
|
@@ -188,13 +203,25 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
188
203
|
type: BooleanConstructor;
|
189
204
|
default: boolean;
|
190
205
|
};
|
191
|
-
|
206
|
+
position: {
|
207
|
+
type: import("vue").PropType<CSSProperties>;
|
208
|
+
};
|
209
|
+
exclude: {
|
210
|
+
type: import("vue").PropType<string[]>;
|
211
|
+
};
|
212
|
+
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("select" | "update:show")[], "select" | "update:show", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
192
213
|
show: {
|
193
214
|
type: BooleanConstructor;
|
194
215
|
default: boolean;
|
195
216
|
};
|
217
|
+
position: {
|
218
|
+
type: import("vue").PropType<CSSProperties>;
|
219
|
+
};
|
220
|
+
exclude: {
|
221
|
+
type: import("vue").PropType<string[]>;
|
222
|
+
};
|
196
223
|
}>> & {
|
197
|
-
|
224
|
+
onSelect?: ((...args: any[]) => any) | undefined;
|
198
225
|
"onUpdate:show"?: ((...args: any[]) => any) | undefined;
|
199
226
|
}, {
|
200
227
|
show: boolean;
|
@@ -1 +1 @@
|
|
1
|
-
import{defineComponent as e,ref as t,computed as n,watch as s,openBlock 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 l,createVNode as c,withCtx as u,Fragment as m,renderList as p,toDisplayString as d,createCommentVNode as v,createBlock as f,createElementVNode as g,withModifiers as y,nextTick as h}from"vue";import{NImageGroup as T,NAvatar as M,NImage as _,NIcon as k,NButtonGroup as x,NButton as I}from"naive-ui";import{useElementBounding as S}from"@vueuse/core";import{format as j}from"date-fns";import{getHistoryRecordApi as L,readMessageApi as C}from"../api/index.js";import{useState as E}from"../hooks/useState.js";import{useSession as w}from"../hooks/useSession.js";import{MESSAGE_TYPE as A}from"../constants/index.js";import"trtc-sdk-v5";import{isAudioOrVideoMessage as b,simplifyMessage as H,getAVTime as D,downloadFile as O}from"../utils/index.js";import{first as P,last as z}from"lodash-es";import N from"./PersonProfile.vue.js";import R from"./MessageTemplate.vue.js";import{emojis as U}from"../utils/emoji.js";import q from"./ContextMenu.js";import{useScrollLoading as G}from"../hooks/useScrollLoading.js";import{CallOutline as J,VideocamOutline as K,ChatbubbleEllipsesOutline as X,EllipsisHorizontal as B}from"@vicons/ionicons5";const F={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=["href","onClick"],ie=g("i",{class:"chat--iconfont chat--icon-face"},null,-1);var ae=e({__name:"ChatMain",setup(e){const ae=t(),{state:re,setMsgList:le}=E(),{setCurrentSessionItem:ce,isGroupChat:ue}=w(re),me=t(),pe=t(!1),de=t({left:0,top:0}),ve={page:0,hasMore:!0,lastSendTime:j(new Date,"yyyy-MM-dd HH:mm:ss")},fe=n((()=>({"--c-tip-top":ue.value?"1px":"-20px","--c-tip-gap":ue.value?"10px":"0px"}))),ge=n((()=>S(ae.value)));async function ye(){try{if(!ve.hasMore)return;ve.page++;const e=await L({sessionKey:re.currentSessionItem.sessionKey,page:ve.page,lastSendTime:ve.lastSendTime});if(!Array.isArray(e)||0===e.length)return ve.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");const t=P(e).id;ve.lastSendTime=z(e).sendTime,le(ve.page>1?[...e,...re.msgList]:e),1===ve.page&&re.currentSessionItem.unreadNum&&(await C({chatType:re.currentSessionItem.chatType,messageIdSet:[t],receiver:re.userInfo.id,sender:re.currentSessionItem.receiver}),ce({unreadNum:0}))}catch(e){console.log(e)}}async function he(e){var t,n,s,o,i;pe.value=!0,await h();const{clientX:a,clientY:r}=e,{width:l,height:c,left:u,top:m}=ge.value,p=null!=(s=null==(n=null==(t=me.value)?void 0:t.$el)?void 0:n.getBoundingClientRect().height)?s:220,d=null!=(i=null==(o=ae.value)?void 0:o.scrollTop)?i:0,v={};a<=u.value+l.value/2?v.left=a-u.value+5+"px":v.right=u.value+l.value-a-5+"px",r-m.value<p/2?v.top=d+5+"px":m.value+c.value-r<=p/2?v.bottom=Math.abs(d)+5+"px":v.top=d+r-m.value-p/2+"px",de.value=v}function Te(e){const{chatMessageType:t,messageTemplate:n}=e.content;return t!==A.TEMPLATE||!!n}function Me(e,t){var n,s;const{chatMessageType:o,messageTemplate:i}=e.content;if(o===A.TEMPLATE)return"system"===t?2==(null==(n=null==i?void 0:i.setting)?void 0:n.style.id):2!=(null==(s=null==i?void 0:i.setting)?void 0:s.style.id)}function _e(e){var t,n;const{chatMessageType:s,messageTemplate:o}=e;return s===A.TEMPLATE&&3==(null==(n=null==(t=null==o?void 0:o.setting)?void 0:t.style)?void 0:n.id)}function ke(e,t){var n;const s=new Date(e.sendTime).getTime(),o=null==(n=re.msgList[t+1])?void 0:n.sendTime;if(o){return s-new Date(o).getTime()>3e5}return!0}return G(ae,(()=>{ye()}),"top",(()=>{pe.value=!1})),s((()=>re.id),(e=>{e&&(Object.assign(ve,{page:0,hasMore:!0,lastSendTime:j(new Date,"yyyy-MM-dd HH:mm:ss")}),ye())}),{immediate:!0}),s((()=>re.isAppendMsg),(e=>{e&&(le([...re.msgList,re.currentMsg]),re.isAppendMsg=!1,async function(){var e,t,n;const s=null!=(t=null==(e=ae.value)?void 0:e.scrollHeight)?t:0;null==(n=ae.value)||n.scrollTo({top:s,behavior:"auto"})}())}),{immediate:!0}),(e,t)=>(o(),i("div",{class:a(["chat-main",{"home-bg":!r(re).id}]),ref_key:"chatMainRef",ref:ae,style:l(r(fe))},[c(r(T),{"show-toolbar-tooltip":""},{default:u((()=>[(o(!0),i(m,null,p(r(re).msgList,((e,t)=>(o(),i(m,{key:e.id},[Te(e)?(o(),i("div",{key:0,class:a(["message-item",{"message-item--mine":e.sender==r(re).userInfo.id}])},[ke(e,t)?(o(),i("p",F,d(e.__sendTime),1)):v("v-if",!0),Me(e,"system")?(o(),f(R,{key:1,data:e},null,8,["data"])):(o(),i("div",Y,[c(N,{"user-id":e.sender},{trigger:u((()=>[c(r(M),{round:"",size:38,src:e.senderAvatar},null,8,["src"])])),_:2},1032,["user-id"]),e.content?(o(),i("div",$,[g("div",Q,[g("span",{class:"name","data-time":e.__time},d(r(ue)?e.senderName:""),9,V)]),g("div",{class:a(["content",{emoji:e.content.chatMessageType===r(A).EMOJI,template:e.content.chatMessageType===r(A).TEMPLATE,"template--3":_e(e.content),"audio-video":r(b)(e.content)}]),onContextmenu:y(he,["prevent"])},[e.content.chatMessageType===r(A).TEXT?(o(),i(m,{key:0},[e.content.referenceContent?(o(),i("div",Z,[g("span",null,d(e.content.referenceContent.senderName)+":",1),g("pre",{innerHTML:r(H)(e.content.referenceContent.content)},null,8,ee)])):v("v-if",!0),g("pre",{innerHTML:e.__content},null,8,te)],64)):v("v-if",!0),e.content.chatMessageType===r(A).EMOJI?(o(),i("img",{key:1,src:r(U).findEmoji(e.__content)},null,8,ne)):v("v-if",!0),Me(e,"template")?(o(),f(R,{key:2,data:e},null,8,["data"])):v("v-if",!0),e.content.chatMessageType===r(A).IMAGE?(o(),f(r(_),{key:3,width:"240",src:e.__content},null,8,["src"])):v("v-if",!0),r(b)(e.content)?(o(),i(m,{key:4},[c(r(k),{class:a({"is-audio":e.content.chatMessageType===r(A).AUDIO}),component:e.content.chatMessageType===r(A).AUDIO?r(J):r(K)},null,8,["class","component"]),g("span",se,d(r(D)(e.__content)),1)],64)):v("v-if",!0),e.content.chatMessageType===r(A).FILE?(o(),i("a",{key:5,href:e.content.fileUrl,onClick:y((()=>r(O)(e.content.fileUrl,e.__content)),["prevent"])},d(e.__content),9,oe)):v("v-if",!0),c(r(x),{class:"quick-menu"},{default:u((()=>[c(r(I),{quaternary:"",size:"tiny"},{icon:u((()=>[ie])),_:1}),c(r(I),{quaternary:"",size:"tiny",onClick:()=>{return t=e,re.currentReferenceMsg=t,void Object.assign(re.currentReferenceMsg,{chatType:re.currentSessionItem.chatType,receiver:re.currentSessionItem.receiver,receiverAvatar:re.currentSessionItem.avatar,receiverName:re.currentSessionItem.name});var t}},{icon:u((()=>[c(r(k),{size:"17",component:r(X)},null,8,["component"])])),_:2},1032,["onClick"]),c(r(I),{quaternary:"",size:"tiny"},{icon:u((()=>[c(r(k),{component:r(B)},null,8,["component"])])),_:1})])),_:2},1024)],42,W)])):v("v-if",!0)]))],2)):v("v-if",!0)],64)))),128))])),_:1}),c(r(q),{ref_key:"contextmenuRef",ref:me,show:pe.value,"onUpdate:show":t[0]||(t[0]=e=>pe.value=e),position:de.value},null,8,["show","position"])],6))}});export{ae as default};
|
@@ -1 +1 @@
|
|
1
|
-
import{defineComponent as e,ref as a,watch as l,openBlock as t,createBlock as s,unref as r,withCtx as o,createElementVNode as n,createVNode as i,toDisplayString as u,resolveDynamicComponent as c,createElementBlock as d,Fragment as v,renderList as m,withDirectives as p,createTextVNode as f,vShow as g}from"vue";import{NModal as h,NAvatar as y,NInputGroup as b,NInput as _,NSelect as T,NPopover as k,NTag as M,NIcon as x}from"naive-ui";import{SearchOutline as w}from"@vicons/ionicons5";import{useState as I}from"../hooks/useState.js";import{transformMessage as j,formatTime as S}from"../utils/index.js";import{last as A}from"lodash-es";import{MESSAGE_TYPE as L}from"../constants/index.js";import{searchChatRecordApi as C}from"../api/index.js";import"trtc-sdk-v5";import E from"../../../date-picker/index.js";import{useDebounceFn as H}from"@vueuse/core";import{format as U}from"date-fns";import{useScrollLoading as z}from"../hooks/useScrollLoading.js";import{emojis as D}from"../utils/emoji.js";const G={class:"iho-chat-dialog__header"},K=n("span",{class:"left"},"聊天记录",-1),O={class:"center"},R={class:"iho-chat-dialog__content iho-chat-record-wrapper"},B={class:"chat-record-box"},J={class:"msg-box"},N={class:"name-and-time"},P={class:"content"},X=["src"],$=["src"],q=["innerHTML"],F={key:1,class:"no-data"},Q={class:"chat-record-box__filter"},V=n("span",{class:"filter-title"},"添加筛选条件",-1),W={class:"filter-item"},Y=n("span",{class:"label"},"成员:",-1),Z={class:"filter-item"},ee=n("span",{class:"label"},"日期:",-1),ae={class:"time-target"},le={class:"time-target__item"},te=n("span",null,"开始:",-1),se={class:"no-data"},re={class:"time-target__item"},oe=n("span",null,"结束:",-1),ne={class:"no-data"};var ie=e({__name:"ChatRecord",props:{visible:{type:Boolean}},setup(e){const ie=e,ue={color:"#fff",textColor:"#666"},{state:ce}=I(),de=a(),ve=a([]),me=a(),pe=a([]),fe=a(),ge=a(),he=H(_e,500),ye={page:0,hasMore:!0,lastSendTime:U(new Date,"yyyy-MM-dd HH:mm:ss")};async function be(){var e;try{if(!ye.hasMore)return;ye.page++;const a=await C({orgId:ce.orgId,keyword:me.value,endTime:ge.value?ge.value+" 23:59:59":"",startTime:fe.value?fe.value+" 00:00:00":"",lastSendTime:ye.lastSendTime,memberIdSet:pe.value,page:ye.page,recordType:"ALL",sessionKey:ce.currentSessionItem.sessionKey,userId:ce.userInfo.id});Array.isArray(a)&&0!==a.length&&Array.isArray(a[0].recordList)||(ye.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了"));let l=a||[];Array.isArray(a)&&a.length>0&&(l=a[0].recordList),ye.lastSendTime=null==(e=A(l))?void 0:e.sendTime,l.forEach((e=>{var a,l,t,s,r;let o="";switch(e.content.chatMessageType){case L.TEXT:o=j(null==(a=e.content)?void 0:a.msg);break;case L.TEMPLATE:o=null==(s=null==(t=null==(l=e.content)?void 0:l.messageTemplate)?void 0:t.setting)?void 0:s.title;break;default:o=null==(r=e.content)?void 0:r.msg}e.__content=o})),ve.value=ye.page>1?ve.value.concat(l):l}catch(e){console.log(e)}}function _e(){Object.assign(ye,{page:0,hasMore:!0,lastSendTime:U(new Date,"yyyy-MM-dd HH:mm:ss")}),be()}function Te(e){return!!ge.value&&e>Date.parse(`${ge.value} 23:59:59`)}function ke(e){return!!fe.value&&e<Date.parse(fe.value)}function Me(e){switch(e){case"member":pe.value=[];break;case"start":fe.value=null;break;case"end":ge.value=null}}function xe(e){return i(v,null,[i("div",{style:"display: flex;align-items: center"},[i(y,{src:e.avatar,round:!0,size:"small"},null),i("span",{style:"margin-left: 10px"},[e.name])])])}return z(de,(()=>{be()})),l([()=>pe.value,()=>fe.value,()=>ge.value],(()=>{ie.visible&&_e()}),{deep:!0}),l((()=>ie.visible),(e=>{e?_e():(me.value="",ge.value=null,fe.value=null,pe.value=[],ve.value=[])})),(e,a)=>(t(),s(r(h),{preset:"dialog",title:"","show-icon":!1,"auto-focus":!1,class:"iho-chat-dialog"},{header:o((()=>[n("div",G,[K,n("div",O,[i(r(y),{round:"",size:30,src:r(ce).currentSessionItem.avatar},null,8,["src"]),n("span",null,u(r(ce).currentSessionItem.name),1)])])])),default:o((()=>[n("div",R,[i(r(b),null,{default:o((()=>[(t(),s(c((()=>[i(x,{component:w,size:18,color:"#6666"},null),pe.value.length>0?i(M,{closable:!0,bordered:!1,color:ue,onClose:()=>Me("member")},{default:()=>{var e;return[f("成员:")," ",pe.value.length>1?pe.value.length+"人":null==(e=ce.currentGroupUser.find((e=>e.id===pe.value[0])))?void 0:e.name]}}):null,fe.value?i(M,{closable:!0,bordered:!1,color:ue,onClose:()=>Me("start")},{default:()=>[f("起始时间: "),fe.value]}):null,ge.value?i(M,{closable:!0,bordered:!1,color:ue,onClose:()=>Me("end")},{default:()=>[f("结束时间: "),ge.value]}):null])))),i(r(_),{placeholder:"搜索",value:me.value,"onUpdate:value":a[0]||(a[0]=e=>me.value=e),valueModifiers:{trim:!0},onInput:r(he)},null,8,["value","onInput"])])),_:1}),n("div",B,[n("div",{class:"chat-record-box__content",ref_key:"recordRef",ref:de},[ve.value.length>0?(t(!0),d(v,{key:0},m(ve.value,(e=>(t(),d("div",{class:"content-item",key:e.id},[i(r(y),{round:"",size:38,src:e.senderAvatar},null,8,["src"]),n("div",J,[n("div",N,[n("span",null,u(e.senderName),1),n("span",null,u(r(S)(e.sendTime).recordTime),1)]),n("div",P,[e.content.chatMessageType===r(L).IMAGE?(t(),d("img",{key:0,class:"img",src:e.__content},null,8,X)):e.content.chatMessageType===r(L).EMOJI?(t(),d("img",{key:1,class:"emoji",src:r(D).findEmoji(e.__content)},null,8,$)):(t(),d("p",{key:2,innerHTML:e.__content},null,8,q))])])])))),128)):(t(),d("div",F,"没有找到相关记录"))],512),n("div",Q,[V,n("div",W,[Y,i(r(T),{value:pe.value,"onUpdate:value":a[1]||(a[1]=e=>pe.value=e),multiple:"","max-tag-count":1,"render-label":xe,options:r(ce).currentGroupUser,"value-field":"id"},null,8,["value","options"])]),n("div",Z,[ee,n("div",ae,[i(r(k),{trigger:"click","show-arrow":!1},{trigger:o((()=>[n("div",le,[te,p(i(r(M),{bordered:!1,color:ue,closable:"",onClose:a[2]||(a[2]=()=>Me("start"))},{default:o((()=>[f(u(fe.value),1)])),_:1},512),[[g,fe.value]]),p(n("span",se,"点击选择",512),[[g,!fe.value]])])])),default:o((()=>[i(r(E),{"formatted-value":fe.value,"onUpdate:formatted-value":a[3]||(a[3]=e=>fe.value=e),type:"date",panel:"",clearable:"","is-date-disabled":Te},null,8,["formatted-value"])])),_:1}),i(r(k),{trigger:"click","show-arrow":!1},{trigger:o((()=>[n("div",re,[oe,p(i(r(M),{bordered:!1,color:ue,closable:"",onClose:a[4]||(a[4]=()=>Me("end"))},{default:o((()=>[f(u(ge.value),1)])),_:1},512),[[g,ge.value]]),p(n("span",ne,"点击选择",512),[[g,!ge.value]])])])),default:o((()=>[i(r(E),{"formatted-value":ge.value,"onUpdate:formatted-value":a[5]||(a[5]=e=>ge.value=e),type:"date",panel:"",clearable:"","is-date-disabled":ke},null,8,["formatted-value"])])),_:1})])])])])])])),_:1}))}});export{ie as default};
|
1
|
+
import{defineComponent as e,ref as a,watch as l,openBlock as t,createBlock as s,unref as r,withCtx as o,createElementVNode as n,createVNode as i,toDisplayString as u,resolveDynamicComponent as c,createElementBlock as d,Fragment as v,renderList as m,withDirectives as p,createTextVNode as f,vShow as g}from"vue";import{NModal as h,NAvatar as y,NInputGroup as b,NInput as _,NSelect as T,NPopover as k,NTag as M,NIcon as x}from"naive-ui";import{SearchOutline as w}from"@vicons/ionicons5";import{useState as I}from"../hooks/useState.js";import{transformMessage as j,formatTime as S}from"../utils/index.js";import{last as A}from"lodash-es";import{MESSAGE_TYPE as L}from"../constants/index.js";import{searchChatRecordApi as C}from"../api/index.js";import"trtc-sdk-v5";import E from"../../../date-picker/index.js";import{useDebounceFn as H}from"@vueuse/core";import{format as U}from"date-fns";import{useScrollLoading as z}from"../hooks/useScrollLoading.js";import{emojis as D}from"../utils/emoji.js";const G={class:"iho-chat-dialog__header"},K=n("span",{class:"left"},"聊天记录",-1),O={class:"center"},R={class:"iho-chat-dialog__content iho-chat-record-wrapper"},B={class:"chat-record-box"},J={class:"msg-box"},N={class:"name-and-time"},P={class:"content"},X=["src"],$=["src"],q=["innerHTML"],F={key:1,class:"no-data"},Q={class:"chat-record-box__filter"},V=n("span",{class:"filter-title"},"添加筛选条件",-1),W={class:"filter-item"},Y=n("span",{class:"label"},"成员:",-1),Z={class:"filter-item"},ee=n("span",{class:"label"},"日期:",-1),ae={class:"time-target"},le={class:"time-target__item"},te=n("span",null,"开始:",-1),se={class:"no-data"},re={class:"time-target__item"},oe=n("span",null,"结束:",-1),ne={class:"no-data"};var ie=e({__name:"ChatRecord",props:{visible:{type:Boolean}},setup(e){const ie=e,ue={color:"#fff",textColor:"#666"},{state:ce}=I(),de=a(),ve=a([]),me=a(),pe=a([]),fe=a(),ge=a(),he=H(_e,500),ye={page:0,hasMore:!0,lastSendTime:U(new Date,"yyyy-MM-dd HH:mm:ss")};async function be(){var e;try{if(!ye.hasMore)return;ye.page++;const a=await C({orgId:ce.orgId,keyword:me.value,endTime:ge.value?ge.value+" 23:59:59":"",startTime:fe.value?fe.value+" 00:00:00":"",lastSendTime:ye.lastSendTime,memberIdSet:pe.value,page:ye.page,recordType:"ALL",sessionKey:ce.currentSessionItem.sessionKey,userId:ce.userInfo.id});Array.isArray(a)&&0!==a.length&&Array.isArray(a[0].recordList)||(ye.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了"));let l=a||[];Array.isArray(a)&&a.length>0&&(l=a[0].recordList),ye.lastSendTime=null==(e=A(l))?void 0:e.sendTime,l.forEach((e=>{var a,l,t,s,r;let o="";switch(e.content.chatMessageType){case L.TEXT:o=j(null==(a=e.content)?void 0:a.msg);break;case L.TEMPLATE:o=null==(s=null==(t=null==(l=e.content)?void 0:l.messageTemplate)?void 0:t.setting)?void 0:s.title;break;default:o=null==(r=e.content)?void 0:r.msg}e.__content=o})),ve.value=ye.page>1?ve.value.concat(l):l}catch(e){console.log(e)}}function _e(){Object.assign(ye,{page:0,hasMore:!0,lastSendTime:ge.value||U(new Date,"yyyy-MM-dd HH:mm:ss")}),be()}function Te(e){return!!ge.value&&e>Date.parse(`${ge.value} 23:59:59`)}function ke(e){return!!fe.value&&e<Date.parse(fe.value)}function Me(e){switch(e){case"member":pe.value=[];break;case"start":fe.value=null;break;case"end":ge.value=null}}function xe(e){return i(v,null,[i("div",{style:"display: flex;align-items: center"},[i(y,{src:e.avatar,round:!0,size:"small"},null),i("span",{style:"margin-left: 10px"},[e.name])])])}return z(de,(()=>{be()})),l([()=>pe.value,()=>fe.value,()=>ge.value],(()=>{ie.visible&&_e()}),{deep:!0}),l((()=>ie.visible),(e=>{e?_e():(me.value="",ge.value=null,fe.value=null,pe.value=[],ve.value=[])})),(e,a)=>(t(),s(r(h),{preset:"dialog",title:"","show-icon":!1,"auto-focus":!1,class:"iho-chat-dialog"},{header:o((()=>[n("div",G,[K,n("div",O,[i(r(y),{round:"",size:30,src:r(ce).currentSessionItem.avatar},null,8,["src"]),n("span",null,u(r(ce).currentSessionItem.name),1)])])])),default:o((()=>[n("div",R,[i(r(b),null,{default:o((()=>[(t(),s(c((()=>[i(x,{component:w,size:18,color:"#6666"},null),pe.value.length>0?i(M,{closable:!0,bordered:!1,color:ue,onClose:()=>Me("member")},{default:()=>{var e;return[f("成员:")," ",pe.value.length>1?pe.value.length+"人":null==(e=ce.currentGroupUser.find((e=>e.id===pe.value[0])))?void 0:e.name]}}):null,fe.value?i(M,{closable:!0,bordered:!1,color:ue,onClose:()=>Me("start")},{default:()=>[f("起始时间: "),fe.value]}):null,ge.value?i(M,{closable:!0,bordered:!1,color:ue,onClose:()=>Me("end")},{default:()=>[f("结束时间: "),ge.value]}):null])))),i(r(_),{placeholder:"搜索",value:me.value,"onUpdate:value":a[0]||(a[0]=e=>me.value=e),valueModifiers:{trim:!0},onInput:r(he)},null,8,["value","onInput"])])),_:1}),n("div",B,[n("div",{class:"chat-record-box__content",ref_key:"recordRef",ref:de},[ve.value.length>0?(t(!0),d(v,{key:0},m(ve.value,(e=>(t(),d("div",{class:"content-item",key:e.id},[i(r(y),{round:"",size:38,src:e.senderAvatar},null,8,["src"]),n("div",J,[n("div",N,[n("span",null,u(e.senderName),1),n("span",null,u(r(S)(e.sendTime).recordTime),1)]),n("div",P,[e.content.chatMessageType===r(L).IMAGE?(t(),d("img",{key:0,class:"img",src:e.__content},null,8,X)):e.content.chatMessageType===r(L).EMOJI?(t(),d("img",{key:1,class:"emoji",src:r(D).findEmoji(e.__content)},null,8,$)):(t(),d("p",{key:2,innerHTML:e.__content},null,8,q))])])])))),128)):(t(),d("div",F,"没有找到相关记录"))],512),n("div",Q,[V,n("div",W,[Y,i(r(T),{value:pe.value,"onUpdate:value":a[1]||(a[1]=e=>pe.value=e),multiple:"","max-tag-count":1,"render-label":xe,options:r(ce).currentGroupUser,"value-field":"id"},null,8,["value","options"])]),n("div",Z,[ee,n("div",ae,[i(r(k),{trigger:"click","show-arrow":!1},{trigger:o((()=>[n("div",le,[te,p(i(r(M),{bordered:!1,color:ue,closable:"",onClose:a[2]||(a[2]=()=>Me("start"))},{default:o((()=>[f(u(fe.value),1)])),_:1},512),[[g,fe.value]]),p(n("span",se,"点击选择",512),[[g,!fe.value]])])])),default:o((()=>[i(r(E),{"formatted-value":fe.value,"onUpdate:formatted-value":a[3]||(a[3]=e=>fe.value=e),type:"date",panel:"",clearable:"","is-date-disabled":Te},null,8,["formatted-value"])])),_:1}),i(r(k),{trigger:"click","show-arrow":!1},{trigger:o((()=>[n("div",re,[oe,p(i(r(M),{bordered:!1,color:ue,closable:"",onClose:a[4]||(a[4]=()=>Me("end"))},{default:o((()=>[f(u(ge.value),1)])),_:1},512),[[g,ge.value]]),p(n("span",ne,"点击选择",512),[[g,!ge.value]])])])),default:o((()=>[i(r(E),{"formatted-value":ge.value,"onUpdate:formatted-value":a[5]||(a[5]=e=>ge.value=e),type:"date",panel:"",clearable:"","is-date-disabled":ke},null,8,["formatted-value"])])),_:1})])])])])])])),_:1}))}});export{ie as default};
|
@@ -1,15 +1,28 @@
|
|
1
|
+
import { PropType, CSSProperties } from 'vue';
|
1
2
|
declare const _default: import("vue").DefineComponent<{
|
2
3
|
show: {
|
3
4
|
type: BooleanConstructor;
|
4
5
|
default: boolean;
|
5
6
|
};
|
6
|
-
|
7
|
+
position: {
|
8
|
+
type: PropType<CSSProperties>;
|
9
|
+
};
|
10
|
+
exclude: {
|
11
|
+
type: PropType<string[]>;
|
12
|
+
};
|
13
|
+
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("select" | "update:show")[], "select" | "update:show", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
7
14
|
show: {
|
8
15
|
type: BooleanConstructor;
|
9
16
|
default: boolean;
|
10
17
|
};
|
18
|
+
position: {
|
19
|
+
type: PropType<CSSProperties>;
|
20
|
+
};
|
21
|
+
exclude: {
|
22
|
+
type: PropType<string[]>;
|
23
|
+
};
|
11
24
|
}>> & {
|
12
|
-
|
25
|
+
onSelect?: ((...args: any[]) => any) | undefined;
|
13
26
|
"onUpdate:show"?: ((...args: any[]) => any) | undefined;
|
14
27
|
}, {
|
15
28
|
show: boolean;
|
@@ -1 +1 @@
|
|
1
|
-
import{defineComponent as e,ref as o,withDirectives as
|
1
|
+
import{defineComponent as e,ref as t,computed as o,withDirectives as l,createVNode as r,vShow as n,isVNode as i}from"vue";import{NButtonGroup as a,NButton as c,NIcon as u}from"naive-ui";import{CopyOutline as p,OpenOutline as s,ChatbubbleEllipsesOutline as y,ReorderFourOutline as d,ReturnDownBack as m,DownloadOutline as v}from"@vicons/ionicons5";import{onClickOutside as f}from"@vueuse/core";var b=e({name:"PopupMenu",inheritAttrs:!1,props:{show:{type:Boolean,default:!1},position:{type:Object},exclude:{type:Array}},emits:["update:show","select"],setup(e,{attrs:b,slots:k,emit:w}){const h=[{icon:p,label:"复制",key:"copy"},{icon:s,label:"转发",key:"relay"},{icon:y,label:"回复",key:"reply"},{icon:d,label:"多选",key:"multiSelect"},{icon:m,label:"撤回",key:"withdraw"},{icon:v,label:"下载",key:"download"}],x=t(null),j=o((()=>{var t;return(null==(t=e.exclude)?void 0:t.length)?h.filter((t=>{var o;return!(null==(o=e.exclude)?void 0:o.includes(t.key))})):h}));return f(x,(e=>{w("update:show",!1)})),()=>{let t;return l(r("div",{class:"contextmenu-wrapper",ref:x,style:e.position},[r(a,{vertical:!0},(o=t=j.value.map((e=>{return r(c,{onClick:(t=e.key,void w("select",t)),quaternary:!0},{default:()=>e.label,icon:()=>r(u,{component:e.icon},null)});var t})),"function"==typeof o||"[object Object]"===Object.prototype.toString.call(o)&&!i(o)?t:{default:()=>[t]}))]),[[n,e.show]]);var o}}});export{b as default};
|
@@ -1,2 +1,2 @@
|
|
1
1
|
import { Ref } from 'vue';
|
2
|
-
export declare function useScrollLoading(wrapperEl: Ref<HTMLElement | undefined | null>, callback: () => void, direction?: 'top' | 'bottom' | undefined): void;
|
2
|
+
export declare function useScrollLoading(wrapperEl: Ref<HTMLElement | undefined | null>, callback: () => void, direction?: 'top' | 'bottom' | undefined, afterScroll?: () => void): void;
|
@@ -1 +1 @@
|
|
1
|
-
import{useThrottleFn as o,useEventListener as t}from"@vueuse/core";const e=o((({target:o},t,e)=>{const{clientHeight:r,scrollTop:c,scrollHeight:
|
1
|
+
import{useThrottleFn as o,useEventListener as t}from"@vueuse/core";const e=o((({target:o},t,e,l)=>{null==l||l();const{clientHeight:r,scrollTop:c,scrollHeight:i}=o;if("top"===e){if(0===c)return;r-c>=i-5&&t()}else r+c>=i-10&&t()}),500);function l(o,l,r="bottom",c){t(o,"scroll",(o=>e(o,l,r,c)),!0)}export{l as useScrollLoading};
|