cnhis-design-vue 3.2.2-beta.22 → 3.2.2-beta.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/es/components/biunique-chat/index.d.ts +21 -76
  2. package/es/components/biunique-chat/src/Index.vue.d.ts +22 -76
  3. package/es/components/biunique-chat/src/Index.vue2.js +1 -1
  4. package/es/components/biunique-chat/src/components/ChatFooter.vue.d.ts +2 -13
  5. package/es/components/biunique-chat/src/components/ChatFooter.vue2.js +1 -1
  6. package/es/components/biunique-chat/src/components/ChatHeader.vue.d.ts +3 -36
  7. package/es/components/biunique-chat/src/components/ChatMain.vue.d.ts +1 -12
  8. package/es/components/biunique-chat/src/components/ChatRecord.vue.d.ts +1 -12
  9. package/es/components/biunique-chat/src/components/ChatSet.vue.d.ts +1 -12
  10. package/es/components/biunique-chat/src/components/ChatSet.vue2.js +1 -1
  11. package/es/components/biunique-chat/src/components/SiderList.vue.d.ts +2 -14
  12. package/es/components/biunique-chat/src/components/SiderList.vue2.js +1 -1
  13. package/es/components/biunique-chat/src/hooks/index.d.ts +2 -0
  14. package/es/components/biunique-chat/src/hooks/index.js +1 -0
  15. package/es/components/biunique-chat/src/hooks/useSession.d.ts +6 -0
  16. package/es/components/biunique-chat/src/hooks/useSession.js +1 -0
  17. package/es/components/biunique-chat/src/hooks/useState.d.ts +1 -13
  18. package/es/components/biunique-chat/src/hooks/useState.js +1 -1
  19. package/es/components/biunique-chat/src/types/index.d.ts +1 -2
  20. package/es/components/biunique-chat/style/index.css +1 -1
  21. package/es/components/card-reader-sdk/src/cardReaderSDK.js +1 -1
  22. package/es/components/card-reader-sdk/src/types/index.d.ts +1 -1
  23. package/es/components/field-set/src/FieldColor.vue.d.ts +1 -1
  24. package/es/components/field-set/src/components/edit-dialog.vue.d.ts +1 -1
  25. package/es/components/form-render/src/hooks/useFormEvent.js +1 -1
  26. package/es/components/index.css +1 -1
  27. package/es/shared/package.json.js +1 -1
  28. package/package.json +2 -2
@@ -34,13 +34,25 @@ declare const BiuniqueChat: SFCWithInstall<import("vue").DefineComponent<{
34
34
  cssVars: import("vue").ComputedRef<import("vue").CSSProperties>;
35
35
  loading: import("vue").Ref<boolean>;
36
36
  stompClient: import("vue").Ref<import("./src/utils/chatSock").ChatSock | undefined>;
37
- state: import("../../shared/types").AnyObject;
37
+ state: {
38
+ currentSessionItem: import("../../shared/types").AnyObject;
39
+ sessionKey: string;
40
+ userInfo: import("../../shared/types").AnyObject;
41
+ msgList: import("../../shared/types").AnyObject[];
42
+ currentMsg: import("../../shared/types").AnyObject;
43
+ isAppendMsg: boolean;
44
+ sessionList: import("../../shared/types").AnyObject[];
45
+ isChangeSession: boolean;
46
+ updateSessionItem: import("../../shared/types").AnyObject;
47
+ isUpdateSession: boolean;
48
+ };
38
49
  reConnention: number;
39
50
  init: () => Promise<void>;
40
51
  initWebSocket: () => void;
41
52
  subscribeSessionList: () => void;
42
53
  subscribeSession: () => void;
43
54
  subscribeMessage: () => void;
55
+ getUnreadData: () => import("../../shared/types").AnyObject[];
44
56
  NLayout: any;
45
57
  NLayoutContent: import("vue").DefineComponent<{
46
58
  embedded: BooleanConstructor;
@@ -456,22 +468,10 @@ declare const BiuniqueChat: SFCWithInstall<import("vue").DefineComponent<{
456
468
  number: number;
457
469
  }[]>;
458
470
  currentFilterKey: import("vue").Ref<string>;
459
- state: {
460
- currentSessionItem: import("../../shared/types").AnyObject;
461
- sessionKey: string;
462
- userInfo: import("../../shared/types").AnyObject;
463
- msgList: import("../../shared/types").AnyObject[];
464
- currentMsg: import("../../shared/types").AnyObject;
465
- isAppendMsg: boolean;
466
- sessionList: import("../../shared/types").AnyObject[];
467
- isChangeSession: boolean;
468
- updateSessionItem: import("../../shared/types").AnyObject;
469
- isUpdateSession: boolean;
470
- };
471
- setCurrentSessionItem: (item: import("../../shared/types").AnyObject) => void;
471
+ state: import("./src/types").IState;
472
+ entrySession: (item: import("../../shared/types").AnyObject) => void;
472
473
  currentWidth: import("vue").ComputedRef<number>;
473
474
  handleSearch: () => void;
474
- entrySession: (item: import("../../shared/types").AnyObject) => void;
475
475
  sessionChange: (sessionItem: import("../../shared/types").AnyObject) => void;
476
476
  changeWidth: ({ distance }: import("../../shared/types").AnyObject) => void;
477
477
  handleFilter: (key: string) => void;
@@ -486,18 +486,7 @@ declare const BiuniqueChat: SFCWithInstall<import("vue").DefineComponent<{
486
486
  formatTime: typeof import("./src/utils").formatTime;
487
487
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
488
488
  ChatHeader: import("vue").DefineComponent<{}, {
489
- state: {
490
- currentSessionItem: import("../../shared/types").AnyObject;
491
- sessionKey: string;
492
- userInfo: import("../../shared/types").AnyObject;
493
- msgList: import("../../shared/types").AnyObject[];
494
- currentMsg: import("../../shared/types").AnyObject;
495
- isAppendMsg: boolean;
496
- sessionList: import("../../shared/types").AnyObject[];
497
- isChangeSession: boolean;
498
- updateSessionItem: import("../../shared/types").AnyObject;
499
- isUpdateSession: boolean;
500
- };
489
+ state: import("./src/types").IState;
501
490
  showChatSet: import("vue").Ref<boolean>;
502
491
  showChatFile: import("vue").Ref<boolean>;
503
492
  chatFileType: import("vue").Ref<string>;
@@ -561,18 +550,7 @@ declare const BiuniqueChat: SFCWithInstall<import("vue").DefineComponent<{
561
550
  };
562
551
  }>>, {}>;
563
552
  ChatSet: import("vue").DefineComponent<{}, {
564
- state: {
565
- currentSessionItem: import("../../shared/types").AnyObject;
566
- sessionKey: string;
567
- userInfo: import("../../shared/types").AnyObject;
568
- msgList: import("../../shared/types").AnyObject[];
569
- currentMsg: import("../../shared/types").AnyObject;
570
- isAppendMsg: boolean;
571
- sessionList: import("../../shared/types").AnyObject[];
572
- isChangeSession: boolean;
573
- updateSessionItem: import("../../shared/types").AnyObject;
574
- isUpdateSession: boolean;
575
- };
553
+ state: import("./src/types").IState;
576
554
  setCurrentSessionItem: (item: import("../../shared/types").AnyObject) => void;
577
555
  handleTopping: (value: boolean) => Promise<void>;
578
556
  NDrawer: any;
@@ -1057,18 +1035,7 @@ declare const BiuniqueChat: SFCWithInstall<import("vue").DefineComponent<{
1057
1035
  color: string;
1058
1036
  textColor: string;
1059
1037
  };
1060
- state: {
1061
- currentSessionItem: import("../../shared/types").AnyObject;
1062
- sessionKey: string;
1063
- userInfo: import("../../shared/types").AnyObject;
1064
- msgList: import("../../shared/types").AnyObject[];
1065
- currentMsg: import("../../shared/types").AnyObject;
1066
- isAppendMsg: boolean;
1067
- sessionList: import("../../shared/types").AnyObject[];
1068
- isChangeSession: boolean;
1069
- updateSessionItem: import("../../shared/types").AnyObject;
1070
- isUpdateSession: boolean;
1071
- };
1038
+ state: import("./src/types").IState;
1072
1039
  options: {
1073
1040
  label: any;
1074
1041
  value: any;
@@ -1164,18 +1131,7 @@ declare const BiuniqueChat: SFCWithInstall<import("vue").DefineComponent<{
1164
1131
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
1165
1132
  ChatMain: import("vue").DefineComponent<{}, {
1166
1133
  chatMainRef: import("vue").Ref<HTMLElement | undefined>;
1167
- state: {
1168
- currentSessionItem: import("../../shared/types").AnyObject;
1169
- sessionKey: string;
1170
- userInfo: import("../../shared/types").AnyObject;
1171
- msgList: import("../../shared/types").AnyObject[];
1172
- currentMsg: import("../../shared/types").AnyObject;
1173
- isAppendMsg: boolean;
1174
- sessionList: import("../../shared/types").AnyObject[];
1175
- isChangeSession: boolean;
1176
- updateSessionItem: import("../../shared/types").AnyObject;
1177
- isUpdateSession: boolean;
1178
- };
1134
+ state: import("./src/types").IState;
1179
1135
  setMsgList: (list?: import("../../shared/types").AnyObject[]) => void;
1180
1136
  page: number;
1181
1137
  getHistoryRecord: () => Promise<void>;
@@ -1320,20 +1276,9 @@ declare const BiuniqueChat: SFCWithInstall<import("vue").DefineComponent<{
1320
1276
  ChatFooter: import("vue").DefineComponent<{}, {
1321
1277
  inputRef: import("vue").Ref<HTMLDivElement | undefined>;
1322
1278
  content: import("vue").Ref<string>;
1323
- state: {
1324
- currentSessionItem: import("../../shared/types").AnyObject;
1325
- sessionKey: string;
1326
- userInfo: import("../../shared/types").AnyObject;
1327
- msgList: import("../../shared/types").AnyObject[];
1328
- currentMsg: import("../../shared/types").AnyObject;
1329
- isAppendMsg: boolean;
1330
- sessionList: import("../../shared/types").AnyObject[];
1331
- isChangeSession: boolean;
1332
- updateSessionItem: import("../../shared/types").AnyObject;
1333
- isUpdateSession: boolean;
1334
- };
1335
- setCurrentSessionItem: (item: import("../../shared/types").AnyObject) => void;
1279
+ state: import("./src/types").IState;
1336
1280
  stompClient: import("vue").Ref<import("./src/utils/chatSock").ChatSock>;
1281
+ setCurrentSessionItem: (item: import("../../shared/types").AnyObject) => void;
1337
1282
  handleKeyDown: (event: KeyboardEvent) => void;
1338
1283
  isWrap: (event: KeyboardEvent) => boolean;
1339
1284
  handleInput: () => void;
@@ -1,6 +1,7 @@
1
1
  import { type PropType } from 'vue';
2
2
  import { ChatSock } from './utils/chatSock';
3
3
  import { AnyObject } from '../../../shared/types';
4
+ import { IState } from './types';
4
5
  declare const _default: import("vue").DefineComponent<{
5
6
  token: {
6
7
  type: StringConstructor;
@@ -36,13 +37,25 @@ declare const _default: import("vue").DefineComponent<{
36
37
  cssVars: import("vue").ComputedRef<import("vue").CSSProperties>;
37
38
  loading: import("vue").Ref<boolean>;
38
39
  stompClient: import("vue").Ref<ChatSock | undefined>;
39
- state: AnyObject;
40
+ state: {
41
+ currentSessionItem: AnyObject;
42
+ sessionKey: string;
43
+ userInfo: AnyObject;
44
+ msgList: AnyObject[];
45
+ currentMsg: AnyObject;
46
+ isAppendMsg: boolean;
47
+ sessionList: AnyObject[];
48
+ isChangeSession: boolean;
49
+ updateSessionItem: AnyObject;
50
+ isUpdateSession: boolean;
51
+ };
40
52
  reConnention: number;
41
53
  init: () => Promise<void>;
42
54
  initWebSocket: () => void;
43
55
  subscribeSessionList: () => void;
44
56
  subscribeSession: () => void;
45
57
  subscribeMessage: () => void;
58
+ getUnreadData: () => AnyObject[];
46
59
  NLayout: any;
47
60
  NLayoutContent: import("vue").DefineComponent<{
48
61
  embedded: BooleanConstructor;
@@ -458,22 +471,10 @@ declare const _default: import("vue").DefineComponent<{
458
471
  number: number;
459
472
  }[]>;
460
473
  currentFilterKey: import("vue").Ref<string>;
461
- state: {
462
- currentSessionItem: AnyObject;
463
- sessionKey: string;
464
- userInfo: AnyObject;
465
- msgList: AnyObject[];
466
- currentMsg: AnyObject;
467
- isAppendMsg: boolean;
468
- sessionList: AnyObject[];
469
- isChangeSession: boolean;
470
- updateSessionItem: AnyObject;
471
- isUpdateSession: boolean;
472
- };
473
- setCurrentSessionItem: (item: AnyObject) => void;
474
+ state: IState;
475
+ entrySession: (item: AnyObject) => void;
474
476
  currentWidth: import("vue").ComputedRef<number>;
475
477
  handleSearch: () => void;
476
- entrySession: (item: AnyObject) => void;
477
478
  sessionChange: (sessionItem: AnyObject) => void;
478
479
  changeWidth: ({ distance }: AnyObject) => void;
479
480
  handleFilter: (key: string) => void;
@@ -488,18 +489,7 @@ declare const _default: import("vue").DefineComponent<{
488
489
  formatTime: typeof import("./utils").formatTime;
489
490
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
490
491
  ChatHeader: import("vue").DefineComponent<{}, {
491
- state: {
492
- currentSessionItem: AnyObject;
493
- sessionKey: string;
494
- userInfo: AnyObject;
495
- msgList: AnyObject[];
496
- currentMsg: AnyObject;
497
- isAppendMsg: boolean;
498
- sessionList: AnyObject[];
499
- isChangeSession: boolean;
500
- updateSessionItem: AnyObject;
501
- isUpdateSession: boolean;
502
- };
492
+ state: IState;
503
493
  showChatSet: import("vue").Ref<boolean>;
504
494
  showChatFile: import("vue").Ref<boolean>;
505
495
  chatFileType: import("vue").Ref<string>;
@@ -563,18 +553,7 @@ declare const _default: import("vue").DefineComponent<{
563
553
  };
564
554
  }>>, {}>;
565
555
  ChatSet: import("vue").DefineComponent<{}, {
566
- state: {
567
- currentSessionItem: AnyObject;
568
- sessionKey: string;
569
- userInfo: AnyObject;
570
- msgList: AnyObject[];
571
- currentMsg: AnyObject;
572
- isAppendMsg: boolean;
573
- sessionList: AnyObject[];
574
- isChangeSession: boolean;
575
- updateSessionItem: AnyObject;
576
- isUpdateSession: boolean;
577
- };
556
+ state: IState;
578
557
  setCurrentSessionItem: (item: AnyObject) => void;
579
558
  handleTopping: (value: boolean) => Promise<void>;
580
559
  NDrawer: any;
@@ -1059,18 +1038,7 @@ declare const _default: import("vue").DefineComponent<{
1059
1038
  color: string;
1060
1039
  textColor: string;
1061
1040
  };
1062
- state: {
1063
- currentSessionItem: AnyObject;
1064
- sessionKey: string;
1065
- userInfo: AnyObject;
1066
- msgList: AnyObject[];
1067
- currentMsg: AnyObject;
1068
- isAppendMsg: boolean;
1069
- sessionList: AnyObject[];
1070
- isChangeSession: boolean;
1071
- updateSessionItem: AnyObject;
1072
- isUpdateSession: boolean;
1073
- };
1041
+ state: IState;
1074
1042
  options: {
1075
1043
  label: any;
1076
1044
  value: any;
@@ -1166,18 +1134,7 @@ declare const _default: import("vue").DefineComponent<{
1166
1134
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
1167
1135
  ChatMain: import("vue").DefineComponent<{}, {
1168
1136
  chatMainRef: import("vue").Ref<HTMLElement | undefined>;
1169
- state: {
1170
- currentSessionItem: AnyObject;
1171
- sessionKey: string;
1172
- userInfo: AnyObject;
1173
- msgList: AnyObject[];
1174
- currentMsg: AnyObject;
1175
- isAppendMsg: boolean;
1176
- sessionList: AnyObject[];
1177
- isChangeSession: boolean;
1178
- updateSessionItem: AnyObject;
1179
- isUpdateSession: boolean;
1180
- };
1137
+ state: IState;
1181
1138
  setMsgList: (list?: AnyObject[]) => void;
1182
1139
  page: number;
1183
1140
  getHistoryRecord: () => Promise<void>;
@@ -1322,20 +1279,9 @@ declare const _default: import("vue").DefineComponent<{
1322
1279
  ChatFooter: import("vue").DefineComponent<{}, {
1323
1280
  inputRef: import("vue").Ref<HTMLDivElement | undefined>;
1324
1281
  content: import("vue").Ref<string>;
1325
- state: {
1326
- currentSessionItem: AnyObject;
1327
- sessionKey: string;
1328
- userInfo: AnyObject;
1329
- msgList: AnyObject[];
1330
- currentMsg: AnyObject;
1331
- isAppendMsg: boolean;
1332
- sessionList: AnyObject[];
1333
- isChangeSession: boolean;
1334
- updateSessionItem: AnyObject;
1335
- isUpdateSession: boolean;
1336
- };
1337
- setCurrentSessionItem: (item: AnyObject) => void;
1282
+ state: IState;
1338
1283
  stompClient: import("vue").Ref<ChatSock>;
1284
+ setCurrentSessionItem: (item: AnyObject) => void;
1339
1285
  handleKeyDown: (event: KeyboardEvent) => void;
1340
1286
  isWrap: (event: KeyboardEvent) => boolean;
1341
1287
  handleInput: () => void;
@@ -1 +1 @@
1
- import{defineComponent as e,ref as s,reactive as t,provide as o,onBeforeUnmount as r,openBlock as n,createBlock as i,unref as a,withCtx as c,normalizeStyle as u,createVNode as p,renderSlot as m}from"vue";import{NConfigProvider as d,NSpin as l,NLayout as h,NLayoutContent as f}from"naive-ui";import g from"./components/SiderList.vue.js";import b from"./components/ChatHeader.vue.js";import v from"./components/ChatMain.vue.js";import S from"./components/ChatFooter.vue.js";import{ChatSock as y}from"./utils/chatSock.js";import{instanceAxios as I}from"./api/index.js";import{useTheme as j}from"../../../shared/hooks/useTheme.js";import"@vueuse/core";import"date-fns";import"lodash-es";import"@vue/shared";import"../../../shared/utils/index.js";import"@vueuse/shared";import"../../../shared/hooks/selectHooks/useSearchContent.js";import"@vicons/ionicons5";import{SUBSCRIBE_MESSAGE_TYPE as k}from"./constants/index.js";import{InjectionIChatState as M,InjectionIChatStompClient as L,InjectionIChatEmits as _}from"./types/index.js";var x=e({__name:"Index",props:{token:{type:String,required:!0},userId:{type:String,required:!0},baseURL:{type:String,default:"/fdp-chat"}},emits:["template-click","message-subscribe"],setup(e,{emit:x}){const C=e;I.defaults.baseURL=C.baseURL+"/chat";const T=j(),U=s(!1),N=s(),q=t({currentSessionItem:{},sessionKey:"",userInfo:{},msgList:[],currentMsg:{},isAppendMsg:!1,sessionList:[],isChangeSession:!1,updateSessionItem:{},isUpdateSession:!1});function w(){const e={headers:{UserId:C.userId},heartbeatFn:()=>{try{N.value.send("test")}catch(e){N.value.disconnect(),w()}},connectCb:()=>{console.log("连接成功"),N.value.subscribe("/user/topic/single",(({body:e})=>{try{console.log(JSON.parse(e),"订阅新增消息");const s=JSON.parse(e);switch(s.event){case k.MESSAGE:{if(s.messageVo.sender===q.userInfo.id)return;const{messageVo:e}=s;e.sender===q.currentSessionItem.receiver&&(q.currentMsg=e,q.isAppendMsg=!0),q.updateSessionItem={receiver:e.sender,lastMessageSendTime:e.sendTime,sortTime:e.sendTime,lastMessage:e.content.msg,chatMessageType:e.content.chatMessageType},q.isUpdateSession=!0,x("message-subscribe",s);break}case k.NEW_SESSION:x("message-subscribe",s)}}catch(e){console.log(e)}})),N.value.subscribe("/app/sessionList",(({body:e})=>{try{const s=JSON.parse(e),{currentUser:t,sessionVos:o}=s;if(console.log("body",s),q.userInfo=t,!(null==o?void 0:o.length))return;q.sessionList=o}catch(e){console.log(e)}}))},errorCb:(e,s)=>{console.log("断线了,正在重连...")}};N.value=new y("/fdp-chat/websocket",e)}return o(M,q),o(L,N),o(_,x),async function(){w()}(),r((()=>{var e;null==(e=N.value)||e.disconnect()})),(e,s)=>(n(),i(a(d),{abstract:"",namespace:"c-biunique-chat__popover"},{default:c((()=>[U.value?(n(),i(a(l),{key:0,stroke:"#5585f5"})):(n(),i(a(h),{key:1,class:"c-biunique-chat","has-sider":"",style:u(a(T))},{default:c((()=>[p(g),p(a(f),{class:"chat-wrapper"},{default:c((()=>[p(b),p(v),p(S)])),_:1}),m(e.$slots,"external")])),_:3},8,["style"]))])),_:3}))}});export{x as default};
1
+ import{defineComponent as e,ref as s,reactive as t,provide as o,onBeforeUnmount as r,openBlock as n,createElementBlock as i,normalizeStyle as a,unref as c,createVNode as u,withCtx as m,createBlock as d,Fragment as p,createElementVNode as l,renderSlot as h}from"vue";import{NConfigProvider as f,NSpin as b,NLayout as g,NLayoutContent as v}from"naive-ui";import S from"./components/SiderList.vue.js";import y from"./components/ChatHeader.vue.js";import j from"./components/ChatMain.vue.js";import k from"./components/ChatFooter.vue.js";import{ChatSock as I}from"./utils/chatSock.js";import{instanceAxios as _}from"./api/index.js";import{useTheme as M}from"../../../shared/hooks/useTheme.js";import"@vueuse/core";import"date-fns";import{isNumber as L}from"lodash-es";import"@vue/shared";import"../../../shared/utils/index.js";import"@vueuse/shared";import"../../../shared/hooks/selectHooks/useSearchContent.js";import"@vicons/ionicons5";import{SUBSCRIBE_MESSAGE_TYPE as x}from"./constants/index.js";import{InjectionIChatState as U,InjectionIChatStompClient as C,InjectionIChatEmits as N}from"./types/index.js";import"./utils/emoji.js";import{useSession as T}from"./hooks/useSession.js";const q={class:"c-biunique-chat__header"},E={class:"toolbar"};var O=e({__name:"Index",props:{token:{type:String,required:!0},userId:{type:String,required:!0},baseURL:{type:String,default:"/fdp-chat"}},emits:["template-click","message-subscribe"],setup(e,{expose:O,emit:w}){const A=e;_.defaults.baseURL=A.baseURL+"/chat";const J=M(),R=s(!1),V=s(),F=t({currentSessionItem:{},sessionKey:"",userInfo:{},msgList:[],currentMsg:{},isAppendMsg:!1,sessionList:[],isChangeSession:!1,updateSessionItem:{},isUpdateSession:!1});function H(){const e={headers:{UserId:A.userId},heartbeatFn:()=>{try{V.value.send("test")}catch(e){V.value.disconnect(),H()}},connectCb:()=>{console.log("连接成功"),V.value.subscribe("/user/topic/single",(({body:e})=>{try{console.log(JSON.parse(e),"订阅新增消息");const s=JSON.parse(e);switch(s.event){case x.MESSAGE:{if(s.messageVo.sender===F.userInfo.id)return;const{messageVo:e}=s;e.sender===F.currentSessionItem.receiver&&(F.currentMsg=e,F.isAppendMsg=!0),F.updateSessionItem={receiver:e.sender,lastMessageSendTime:e.sendTime,sortTime:e.sendTime,lastMessage:e.content.msg,chatMessageType:e.content.chatMessageType},F.isUpdateSession=!0,w("message-subscribe",s);break}case x.NEW_SESSION:w("message-subscribe",s)}}catch(e){console.log(e)}})),V.value.subscribe("/app/sessionList",(({body:e})=>{try{const s=JSON.parse(e),{currentUser:t,sessionVos:o}=s;if(console.log("body",s),F.userInfo=t,!(null==o?void 0:o.length))return;F.sessionList=o}catch(e){console.log(e)}}))},errorCb:(e,s)=>{console.log("断线了,正在重连...")}};V.value=new I("/fdp-chat/websocket",e)}return o(U,F),o(C,V),o(N,w),async function(){H()}(),r((()=>{var e;null==(e=V.value)||e.disconnect()})),O({getUnreadData:function(){return F.sessionList.filter((e=>L(e.unreadNum)&&e.unreadNum>0))},entrySession:T(F).entrySession}),(e,s)=>(n(),i("div",{class:"c-biunique-chat",style:a(c(J))},[u(c(f),{abstract:"",namespace:"c-biunique-chat__popover"},{default:m((()=>[R.value?(n(),d(c(b),{key:0,stroke:"#5585f5"})):(n(),i(p,{key:1},[l("div",q,[l("div",E,[h(e.$slots,"toolbar")])]),u(c(g),{class:"c-biunique-chat__body","has-sider":""},{default:m((()=>[u(S),u(c(v),{class:"chat-content"},{default:m((()=>[u(y),u(j),u(k)])),_:1}),h(e.$slots,"external")])),_:3})],64))])),_:3})],4))}});export{O as default};
@@ -3,20 +3,9 @@ import { MESSAGE_TYPE } from '../constants';
3
3
  declare const _default: import("vue").DefineComponent<{}, {
4
4
  inputRef: import("vue").Ref<HTMLDivElement | undefined>;
5
5
  content: import("vue").Ref<string>;
6
- state: {
7
- currentSessionItem: AnyObject;
8
- sessionKey: string;
9
- userInfo: AnyObject;
10
- msgList: AnyObject[];
11
- currentMsg: AnyObject;
12
- isAppendMsg: boolean;
13
- sessionList: AnyObject[];
14
- isChangeSession: boolean;
15
- updateSessionItem: AnyObject;
16
- isUpdateSession: boolean;
17
- };
18
- setCurrentSessionItem: (item: AnyObject) => void;
6
+ state: import("../types").IState;
19
7
  stompClient: import("vue").Ref<import("../utils/chatSock").ChatSock>;
8
+ setCurrentSessionItem: (item: AnyObject) => void;
20
9
  handleKeyDown: (event: KeyboardEvent) => void;
21
10
  isWrap: (event: KeyboardEvent) => boolean;
22
11
  handleInput: () => void;
@@ -1 +1 @@
1
- import{defineComponent as t,ref as e,openBlock as s,createElementBlock as n,normalizeStyle as i,unref as a,createElementVNode as o,createVNode as r,withCtx as l,createCommentVNode as c,Fragment as u,renderList as g,createBlock as d,createTextVNode as m,toDisplayString as p,withDirectives as f,vShow as y}from"vue";import{NPopover as v,NTooltip as h,NButton as M}from"naive-ui";import{format as T}from"date-fns";import{useState as x}from"../hooks/useState.js";import{images as b,alt as k}from"../utils/emoji.js";import{MESSAGE_TYPE as w}from"../constants/index.js";const E={class:"tool-box"},S=o("span",null,[o("i",{class:"chat--iconfont chat--icon-face"})],-1),C={class:"emoji-box"},K=o("span",null,"默认表情",-1),I={class:"list-box"},_=["onClick"],j=["src"],D=o("span",null,[o("i",{class:"chat--iconfont chat--icon-good"})],-1),H=o("span",null,[o("i",{class:"chat--iconfont chat--icon-image"})],-1),L=o("span",null,[o("i",{class:"chat--iconfont chat--icon-folder"})],-1),N={class:"btn-box"},J=o("span",{class:"tip"},"Enter 发送, Shift + Enter 换行",-1);var O=t({__name:"ChatFooter",setup(t){const O=e(),X=e(""),{state:A,setCurrentSessionItem:B,stompClient:F}=x();function G(t){["Enter"].includes(t.key)&&(function(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}(t)||(t.preventDefault(),q()))}function R(){var t,e;X.value=(null==(e=null==(t=O.value)?void 0:t.innerText)?void 0:e.trim())||""}function q(){if(!(X.value.length>2e3))return X.value?void z({msg:X.value}):console.log("请输入内容");console.log("请控制在2000字以内")}async function z(t){const{chatMessageType:e=w.TEXT,msg:s}=t,n={msg:s,chatMessageType:e};[w.TEXT,w.BLEND].includes(e)&&(O.value.innerHTML="",X.value="");const i=T(new Date,"yyyy-MM-dd HH:mm:ss");A.currentMsg={content:n,sender:A.userInfo.id,id:"",sendTime:i,sending:!0,fail:!1},A.isAppendMsg=!0,B({lastMessageSendTime:i,lastMessage:n.msg,sortTime:i,chatMessageType:n.chatMessageType}),A.isChangeSession=!0;try{F.value.send("/app/chat/send",{},JSON.stringify({chatType:"SINGLE",content:{chatMessageType:n.chatMessageType,msg:n.msg},receiver:A.currentSessionItem.receiver})),A.currentMsg={...A.currentMsg,fail:!1}}catch(t){A.currentMsg={...A.currentMsg,fail:!0}}finally{A.currentMsg={...A.currentMsg,sending:!1}}}return(t,e)=>(s(),n("section",{class:"chat-footer",style:i({cursor:a(A).sessionKey?"default":"not-allowed"})},[o("div",E,[r(a(v),{placement:"top",trigger:"click","show-arrow":!1,"display-directive":"show"},{trigger:l((()=>[S])),default:l((()=>[o("div",C,[c(' <span>最近使用</span>\n\t\t\t\t\t<div class="list-box">\n\t\t\t\t\t\t<template v-for="(img, index) in images" :key="index">\n\t\t\t\t\t\t\t<i>\n\t\t\t\t\t\t\t\t<img :src="img" />\n\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div> '),K,o("div",I,[(s(!0),n(u,null,g(a(b),((t,e)=>(s(),n(u,{key:e},[e>0?(s(),d(a(h),{key:0,"show-arrow":!1,trigger:"hover"},{trigger:l((()=>[o("i",{onClick:()=>z({chatMessageType:a(w).EMOJI,msg:e})},[o("img",{src:t},null,8,j)],8,_)])),default:l((()=>[m(" "+p(a(k)[e-1]||"微笑"),1)])),_:2},1024)):c("v-if",!0)],64)))),128))])])])),_:1}),D,H,L]),f(o("div",{ref_key:"inputRef",ref:O,class:"input-box",contenteditable:"",onKeydown:G,onInput:R},null,544),[[y,a(A).sessionKey]]),o("div",N,[J,r(a(M),{type:"primary",round:"",disabled:!X.value,onClick:q},{default:l((()=>[m("发送")])),_:1},8,["disabled"])])],4))}});export{O as default};
1
+ import{defineComponent as t,ref as e,openBlock as s,createElementBlock as n,normalizeStyle as i,unref as a,createElementVNode as o,createVNode as r,withCtx as l,createCommentVNode as c,Fragment as u,renderList as g,createBlock as d,createTextVNode as m,toDisplayString as p,withDirectives as f,vShow as y}from"vue";import{NPopover as h,NTooltip as v,NButton as M}from"naive-ui";import{format as T}from"date-fns";import{useState as k}from"../hooks/useState.js";import{useSession as x}from"../hooks/useSession.js";import{images as b,alt as S}from"../utils/emoji.js";import{MESSAGE_TYPE as w}from"../constants/index.js";const E={class:"tool-box"},C=o("span",null,[o("i",{class:"chat--iconfont chat--icon-face"})],-1),K={class:"emoji-box"},j=o("span",null,"默认表情",-1),I={class:"list-box"},_=["onClick"],D=["src"],H=o("span",null,[o("i",{class:"chat--iconfont chat--icon-good"})],-1),L=o("span",null,[o("i",{class:"chat--iconfont chat--icon-image"})],-1),N=o("span",null,[o("i",{class:"chat--iconfont chat--icon-folder"})],-1),J={class:"btn-box"},O=o("span",{class:"tip"},"Enter 发送, Shift + Enter 换行",-1);var X=t({__name:"ChatFooter",setup(t){const X=e(),A=e(""),{state:B,stompClient:F}=k(),{setCurrentSessionItem:G}=x(B);function R(t){["Enter"].includes(t.key)&&(function(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}(t)||(t.preventDefault(),z()))}function q(){var t,e;A.value=(null==(e=null==(t=X.value)?void 0:t.innerText)?void 0:e.trim())||""}function z(){if(!(A.value.length>2e3))return A.value?void P({msg:A.value}):console.log("请输入内容");console.log("请控制在2000字以内")}async function P(t){const{chatMessageType:e=w.TEXT,msg:s}=t,n={msg:s,chatMessageType:e};[w.TEXT,w.BLEND].includes(e)&&(X.value.innerHTML="",A.value="");const i=T(new Date,"yyyy-MM-dd HH:mm:ss");B.currentMsg={content:n,sender:B.userInfo.id,id:"",sendTime:i,sending:!0,fail:!1},B.isAppendMsg=!0,G({lastMessageSendTime:i,lastMessage:n.msg,sortTime:i,chatMessageType:n.chatMessageType}),B.isChangeSession=!0;try{F.value.send("/app/chat/send",{},JSON.stringify({chatType:"SINGLE",content:{chatMessageType:n.chatMessageType,msg:n.msg},receiver:B.currentSessionItem.receiver})),B.currentMsg={...B.currentMsg,fail:!1}}catch(t){B.currentMsg={...B.currentMsg,fail:!0}}finally{B.currentMsg={...B.currentMsg,sending:!1}}}return(t,e)=>(s(),n("section",{class:"chat-footer",style:i({cursor:a(B).sessionKey?"default":"not-allowed"})},[o("div",E,[r(a(h),{placement:"top",trigger:"click","show-arrow":!1,"display-directive":"show"},{trigger:l((()=>[C])),default:l((()=>[o("div",K,[c(' <span>最近使用</span>\n\t\t\t\t\t<div class="list-box">\n\t\t\t\t\t\t<template v-for="(img, index) in images" :key="index">\n\t\t\t\t\t\t\t<i>\n\t\t\t\t\t\t\t\t<img :src="img" />\n\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div> '),j,o("div",I,[(s(!0),n(u,null,g(a(b),((t,e)=>(s(),n(u,{key:e},[e>0?(s(),d(a(v),{key:0,"show-arrow":!1,trigger:"hover"},{trigger:l((()=>[o("i",{onClick:()=>P({chatMessageType:a(w).EMOJI,msg:e})},[o("img",{src:t},null,8,D)],8,_)])),default:l((()=>[m(" "+p(a(S)[e-1]||"微笑"),1)])),_:2},1024)):c("v-if",!0)],64)))),128))])])])),_:1}),H,L,N]),f(o("div",{ref_key:"inputRef",ref:X,class:"input-box",contenteditable:"",onKeydown:R,onInput:q},null,544),[[y,a(B).sessionKey]]),o("div",J,[O,r(a(M),{type:"primary",round:"",disabled:!A.value,onClick:z},{default:l((()=>[m("发送")])),_:1},8,["disabled"])])],4))}});export{X as default};
@@ -1,17 +1,6 @@
1
1
  import { AnyObject } from '../../../../shared/types';
2
2
  declare const _default: import("vue").DefineComponent<{}, {
3
- state: {
4
- currentSessionItem: AnyObject;
5
- sessionKey: string;
6
- userInfo: AnyObject;
7
- msgList: AnyObject[];
8
- currentMsg: AnyObject;
9
- isAppendMsg: boolean;
10
- sessionList: AnyObject[];
11
- isChangeSession: boolean;
12
- updateSessionItem: AnyObject;
13
- isUpdateSession: boolean;
14
- };
3
+ state: import("../types").IState;
15
4
  showChatSet: import("vue").Ref<boolean>;
16
5
  showChatFile: import("vue").Ref<boolean>;
17
6
  chatFileType: import("vue").Ref<string>;
@@ -75,18 +64,7 @@ declare const _default: import("vue").DefineComponent<{}, {
75
64
  };
76
65
  }>>, {}>;
77
66
  ChatSet: import("vue").DefineComponent<{}, {
78
- state: {
79
- currentSessionItem: AnyObject;
80
- sessionKey: string;
81
- userInfo: AnyObject;
82
- msgList: AnyObject[];
83
- currentMsg: AnyObject;
84
- isAppendMsg: boolean;
85
- sessionList: AnyObject[];
86
- isChangeSession: boolean;
87
- updateSessionItem: AnyObject;
88
- isUpdateSession: boolean;
89
- };
67
+ state: import("../types").IState;
90
68
  setCurrentSessionItem: (item: AnyObject) => void;
91
69
  handleTopping: (value: boolean) => Promise<void>;
92
70
  NDrawer: any;
@@ -571,18 +549,7 @@ declare const _default: import("vue").DefineComponent<{}, {
571
549
  color: string;
572
550
  textColor: string;
573
551
  };
574
- state: {
575
- currentSessionItem: AnyObject;
576
- sessionKey: string;
577
- userInfo: AnyObject;
578
- msgList: AnyObject[];
579
- currentMsg: AnyObject;
580
- isAppendMsg: boolean;
581
- sessionList: AnyObject[];
582
- isChangeSession: boolean;
583
- updateSessionItem: AnyObject;
584
- isUpdateSession: boolean;
585
- };
552
+ state: import("../types").IState;
586
553
  options: {
587
554
  label: any;
588
555
  value: any;
@@ -2,18 +2,7 @@ import { AnyObject } from '../../../../shared/types';
2
2
  import { MESSAGE_TYPE } from '../constants';
3
3
  declare const _default: import("vue").DefineComponent<{}, {
4
4
  chatMainRef: import("vue").Ref<HTMLElement | undefined>;
5
- state: {
6
- currentSessionItem: AnyObject;
7
- sessionKey: string;
8
- userInfo: AnyObject;
9
- msgList: AnyObject[];
10
- currentMsg: AnyObject;
11
- isAppendMsg: boolean;
12
- sessionList: AnyObject[];
13
- isChangeSession: boolean;
14
- updateSessionItem: AnyObject;
15
- isUpdateSession: boolean;
16
- };
5
+ state: import("../types").IState;
17
6
  setMsgList: (list?: AnyObject[]) => void;
18
7
  page: number;
19
8
  getHistoryRecord: () => Promise<void>;
@@ -5,18 +5,7 @@ declare const _default: import("vue").DefineComponent<{}, {
5
5
  color: string;
6
6
  textColor: string;
7
7
  };
8
- state: {
9
- currentSessionItem: AnyObject;
10
- sessionKey: string;
11
- userInfo: AnyObject;
12
- msgList: AnyObject[];
13
- currentMsg: AnyObject;
14
- isAppendMsg: boolean;
15
- sessionList: AnyObject[];
16
- isChangeSession: boolean;
17
- updateSessionItem: AnyObject;
18
- isUpdateSession: boolean;
19
- };
8
+ state: import("../types").IState;
20
9
  options: {
21
10
  label: any;
22
11
  value: any;
@@ -1,18 +1,7 @@
1
1
  import { PropType } from 'vue';
2
2
  import { AnyObject } from '../../../../shared/types';
3
3
  declare const _default: import("vue").DefineComponent<{}, {
4
- state: {
5
- currentSessionItem: AnyObject;
6
- sessionKey: string;
7
- userInfo: AnyObject;
8
- msgList: AnyObject[];
9
- currentMsg: AnyObject;
10
- isAppendMsg: boolean;
11
- sessionList: AnyObject[];
12
- isChangeSession: boolean;
13
- updateSessionItem: AnyObject;
14
- isUpdateSession: boolean;
15
- };
4
+ state: import("../types").IState;
16
5
  setCurrentSessionItem: (item: AnyObject) => void;
17
6
  handleTopping: (value: boolean) => Promise<void>;
18
7
  NDrawer: any;
@@ -1 +1 @@
1
- import{defineComponent as e,openBlock as s,createBlock as t,unref as o,withCtx as n,createVNode as i,createElementVNode as r,toDisplayString as a}from"vue";import{NDrawer as u,NDrawerContent as l,NAvatar as c,NIcon as p,NSwitch as m}from"naive-ui";import{ChevronForwardOutline as f}from"@vicons/ionicons5";import{useState as d}from"../hooks/useState.js";import v from"./PersonProfile.vue.js";import{toppingSessionApi as g}from"../api/index.js";const h={class:"chat-set-wrapper"},_={class:"item user-info"},I={class:"item"},S=r("span",{class:"label"},"置顶聊天",-1);var y=e({__name:"ChatSet",setup(e){const{state:y,setCurrentSessionItem:b}=d();async function j(e){try{await g({sessionKey:y.currentSessionItem.sessionKey,id:y.currentSessionItem.id,topping:e}),b({topping:e}),y.isChangeSession=!0}catch(e){console.log(e)}}return(e,d)=>(s(),t(o(u),{width:320,"trap-focus":!1,"block-scroll":!1,to:".c-biunique-chat"},{default:n((()=>[i(o(l),{title:"聊天设置"},{default:n((()=>[r("div",h,[i(v,{"user-info":o(y).userInfo},{trigger:n((()=>[r("div",_,[i(o(c),{round:"",size:40,src:o(y).currentSessionItem.avatar},null,8,["src"]),r("span",null,a(o(y).userInfo.name),1),i(o(p),{size:24,component:o(f),class:"item__right"},null,8,["component"])])])),_:1},8,["user-info"]),r("div",I,[S,i(o(m),{value:o(y).userInfo.topping,"onUpdate:value":[d[0]||(d[0]=e=>o(y).userInfo.topping=e),j],class:"item__right"},null,8,["value"])])])])),_:1})])),_:1}))}});export{y as default};
1
+ import{defineComponent as s,openBlock as e,createBlock as o,unref as t,withCtx as n,createVNode as i,createElementVNode as r,toDisplayString as a}from"vue";import{NDrawer as u,NDrawerContent as l,NAvatar as c,NIcon as m,NSwitch as p}from"naive-ui";import{ChevronForwardOutline as f}from"@vicons/ionicons5";import{useState as d}from"../hooks/useState.js";import{useSession as v}from"../hooks/useSession.js";import g from"./PersonProfile.vue.js";import{toppingSessionApi as h}from"../api/index.js";const _={class:"chat-set-wrapper"},I={class:"item user-info"},S={class:"item"},j=r("span",{class:"label"},"置顶聊天",-1);var y=s({__name:"ChatSet",setup(s){const{state:y}=d(),{setCurrentSessionItem:b}=v(y);async function k(s){try{await h({sessionKey:y.currentSessionItem.sessionKey,id:y.currentSessionItem.id,topping:s}),b({topping:s}),y.isChangeSession=!0}catch(s){console.log(s)}}return(s,d)=>(e(),o(t(u),{width:320,"trap-focus":!1,"block-scroll":!1,to:".c-biunique-chat"},{default:n((()=>[i(t(l),{title:"聊天设置"},{default:n((()=>[r("div",_,[i(g,{"user-info":t(y).userInfo},{trigger:n((()=>[r("div",I,[i(t(c),{round:"",size:40,src:t(y).currentSessionItem.avatar},null,8,["src"]),r("span",null,a(t(y).userInfo.name),1),i(t(m),{size:24,component:t(f),class:"item__right"},null,8,["component"])])])),_:1},8,["user-info"]),r("div",S,[j,i(t(p),{value:t(y).userInfo.topping,"onUpdate:value":[d[0]||(d[0]=s=>t(y).userInfo.topping=s),k],class:"item__right"},null,8,["value"])])])])),_:1})])),_:1}))}});export{y as default};
@@ -12,22 +12,10 @@ declare const _default: import("vue").DefineComponent<{}, {
12
12
  number: number;
13
13
  }[]>;
14
14
  currentFilterKey: import("vue").Ref<string>;
15
- state: {
16
- currentSessionItem: AnyObject;
17
- sessionKey: 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
- };
27
- setCurrentSessionItem: (item: AnyObject) => void;
15
+ state: import("../types").IState;
16
+ entrySession: (item: AnyObject) => void;
28
17
  currentWidth: import("vue").ComputedRef<number>;
29
18
  handleSearch: () => void;
30
- entrySession: (item: AnyObject) => void;
31
19
  sessionChange: (sessionItem: AnyObject) => void;
32
20
  changeWidth: ({ distance }: AnyObject) => void;
33
21
  handleFilter: (key: string) => void;
@@ -1 +1 @@
1
- import{defineComponent as e,ref as s,computed as i,watch as n,withDirectives as a,openBlock as t,createElementBlock as l,normalizeStyle as r,unref as u,createBlock as o,createCommentVNode as d,createElementVNode as v,Fragment as m,renderList as c,withCtx as f,createTextVNode as p,toDisplayString as y,normalizeClass as k,createVNode as h}from"vue";import{NSpin as _,NTag as g,NAvatar as b,NBadge as S}from"naive-ui";import{useState as x}from"../hooks/useState.js";import{vFlexibleResize as L}from"../../../../shared/directive/flexibleResize.js";import{formatTime as M,listSort as T}from"../utils/index.js";const C={class:"sider-list__filter box-shadow"},w=["onClick"],I={class:"avatar-right"},K={class:"name"},N={class:"msg-tip"},j={class:"msg-tip__content"},R=["innerHTML"];var z=e({__name:"SiderList",setup(e){const z=s(300),D=s(),H=s(""),U=s([]),B=s(!1),V=s([{label:"全部",key:"all",number:0},{label:"未读",key:"unread",number:0}]),q=s("all"),{state:A,setCurrentSessionItem:E}=x(),F=i((()=>Math.min(Math.max(z.value,240),360)));function G(e){e.unreadNum=0,E(e)}function J(e){const s=A.sessionList.map((s=>(e.receiver!==A.currentSessionItem.receiver&&s.unreadNum++,e.receiver===s.receiver?{...s,...e}:s)));A.sessionList=s,U.value=T(s)}function O({distance:e}){z.value=z.value+e}return n([()=>A.isChangeSession,()=>A.isUpdateSession],(([e,s])=>{e&&(J(A.currentSessionItem),A.isChangeSession=!1),s&&(J(A.updateSessionItem),A.isUpdateSession=!1)}),{immediate:!0}),n((()=>A.sessionList.length),(()=>{!function(){U.value=A.sessionList.sort(((e,s)=>new Date(s.updatedTime).getTime()-new Date(e.updatedTime).getTime())).filter((e=>e.name.includes(H.value)||!H.value)),V.value[0].number=U.value.length;const e=U.value.find((e=>e.sessionKey===A.sessionKey));e&&G(e),T(U.value)}()})),(e,s)=>a((t(),l("section",{class:"sider-list",style:r({width:u(F)+"px"})},[B.value?(t(),o(u(_),{key:0,stroke:"#5585f5"})):d("v-if",!0),d(' <n-input v-else placeholder="输入用户名模糊搜索" v-model:value="keyword" @keyup.enter="handleSearch"></n-input> '),v("div",C,[(t(!0),l(m,null,c(V.value,(e=>(t(),o(u(g),{type:q.value===e.key?"info":"default",round:"",bordered:!1,key:e.key,onClick:()=>function(e){q.value=e,U.value="unread"===e?A.sessionList.filter((e=>+e.unreadNum>0)):A.sessionList;U.value=T(U.value)}(e.key)},{default:f((()=>[p(y(e.label)+"("+y(e.number)+") ",1)])),_:2},1032,["type","onClick"])))),128))]),v("div",{class:"sider-list__box",ref_key:"listBoxRef",ref:D},[(t(!0),l(m,null,c(U.value,((e,s)=>(t(),l("div",{key:s,onClick:()=>G(e),class:k(["sider-list__box__item",{active:e.sessionKey===u(A).sessionKey}])},[h(u(b),{round:"",size:"large",src:e.avatar},null,8,["src"]),v("div",I,[v("div",K,[v("h4",null,y(e.name),1),v("span",null,y(u(M)(e.lastMessageSendTime).siderMsgTime),1)]),v("div",N,[v("div",j,[v("div",{innerHTML:e.lastMessage},null,8,R)]),h(u(S),{value:e.unreadNum},null,8,["value"])])])],10,w)))),128))],512)],4)),[[u(L),{mode:"VR",onMove:O}]])}});export{z as default};
1
+ import{defineComponent as e,ref as s,computed as i,watch as n,withDirectives as a,openBlock as l,createElementBlock as t,normalizeStyle as o,unref as r,createBlock as u,createCommentVNode as d,createElementVNode as v,Fragment as m,renderList as c,withCtx as p,createTextVNode as f,toDisplayString as y,normalizeClass as k,createVNode as h}from"vue";import{NSpin as _,NTag as g,NAvatar as S,NBadge as b}from"naive-ui";import{useState as L}from"../hooks/useState.js";import{useSession as x}from"../hooks/useSession.js";import{vFlexibleResize as M}from"../../../../shared/directive/flexibleResize.js";import{formatTime as T,listSort as C}from"../utils/index.js";const K={class:"sider-list__filter box-shadow"},w=["onClick"],j={class:"avatar-right"},I={class:"name"},N={class:"msg-tip"},R={class:"msg-tip__content"},z=["innerHTML"];var D=e({__name:"SiderList",setup(e){const D=s(300),H=s(),U=s(""),B=s([]),V=s(!1),q=s([{label:"全部",key:"all",number:0},{label:"未读",key:"unread",number:0}]),A=s("all"),{state:E}=L(),{entrySession:F}=x(E),G=i((()=>Math.min(Math.max(D.value,240),360)));function J(e){E.sessionList.map((e=>e.sessionKey)).includes(e.sessionKey)||E.sessionList.push(e);const s=E.sessionList.map((s=>(e.receiver!==E.currentSessionItem.receiver&&s.unreadNum++,e.receiver===s.receiver?{...s,...e}:s)));E.sessionList=s,P(A.value)}function O({distance:e}){D.value=D.value+e}function P(e){if(A.value=e,"unread"===e)B.value=E.sessionList.filter((e=>+e.unreadNum>0));else B.value=E.sessionList;B.value=C(B.value)}return n([()=>E.isChangeSession,()=>E.isUpdateSession],(([e,s])=>{e&&(J(E.currentSessionItem),E.isChangeSession=!1),s&&(J(E.updateSessionItem),E.isUpdateSession=!1)}),{immediate:!0}),n((()=>E.sessionList.length),(()=>{!function(){B.value=E.sessionList.sort(((e,s)=>new Date(s.updatedTime).getTime()-new Date(e.updatedTime).getTime())).filter((e=>e.name.includes(U.value)||!U.value)),q.value[0].number=B.value.length;const e=B.value.find((e=>e.sessionKey===E.sessionKey));e&&F(e),C(B.value)}()})),(e,s)=>a((l(),t("section",{class:"sider-list",style:o({width:r(G)+"px"})},[V.value?(l(),u(r(_),{key:0,stroke:"#5585f5"})):d("v-if",!0),d(' <n-input v-else placeholder="输入用户名模糊搜索" v-model:value="keyword" @keyup.enter="handleSearch"></n-input> '),v("div",K,[(l(!0),t(m,null,c(q.value,(e=>(l(),u(r(g),{type:A.value===e.key?"info":"default",round:"",bordered:!1,key:e.key,onClick:()=>P(e.key)},{default:p((()=>[f(y(e.label)+"("+y(e.number)+") ",1)])),_:2},1032,["type","onClick"])))),128))]),v("div",{class:"sider-list__box",ref_key:"listBoxRef",ref:H},[(l(!0),t(m,null,c(B.value,((e,s)=>(l(),t("div",{key:s,onClick:()=>r(F)(e),class:k(["sider-list__box__item",{active:e.sessionKey===r(E).sessionKey}])},[h(r(S),{round:"",size:"large",src:e.avatar},null,8,["src"]),v("div",j,[v("div",I,[v("h4",null,y(e.name),1),v("span",null,y(r(T)(e.lastMessageSendTime).siderMsgTime),1)]),v("div",N,[v("div",R,[v("div",{innerHTML:e.lastMessage},null,8,z)]),h(r(b),{value:e.unreadNum},null,8,["value"])])])],10,w)))),128))],512)],4)),[[r(M),{mode:"VR",onMove:O}]])}});export{D as default};
@@ -0,0 +1,2 @@
1
+ export * from './useState';
2
+ export * from './useSession';
@@ -0,0 +1 @@
1
+ export{useState}from"./useState.js";export{useSession}from"./useSession.js";
@@ -0,0 +1,6 @@
1
+ import { AnyObject } from '../../../../shared/types';
2
+ import { IState } from '../types';
3
+ export declare function useSession(state: IState): {
4
+ entrySession: (item: AnyObject) => void;
5
+ setCurrentSessionItem: (item: AnyObject) => void;
6
+ };
@@ -0,0 +1 @@
1
+ import{transformLastMessage as s}from"../utils/index.js";function e(e){function n(n){Object.assign(e.currentSessionItem,n,n.lastMessage?{lastMessage:s(n)}:{}),e.sessionKey!==e.currentSessionItem.sessionKey&&(e.sessionKey=e.currentSessionItem.sessionKey,e.msgList=[])}return{entrySession:function(s){s.unreadNum=0,n(s),e.isChangeSession=!0},setCurrentSessionItem:n}}export{e as useSession};
@@ -1,18 +1,6 @@
1
1
  import { AnyObject } from '../../../../shared/types';
2
2
  export declare function useState(): {
3
- state: {
4
- currentSessionItem: AnyObject;
5
- sessionKey: string;
6
- userInfo: AnyObject;
7
- msgList: AnyObject[];
8
- currentMsg: AnyObject;
9
- isAppendMsg: boolean;
10
- sessionList: AnyObject[];
11
- isChangeSession: boolean;
12
- updateSessionItem: AnyObject;
13
- isUpdateSession: boolean;
14
- };
15
- setCurrentSessionItem: (item: AnyObject) => void;
3
+ state: import("../types").IState;
16
4
  setMsgList: (list?: AnyObject[]) => void;
17
5
  stompClient: import("vue").Ref<import("../utils/chatSock").ChatSock>;
18
6
  emit: (event: string, ...args: any[]) => void;
@@ -1 +1 @@
1
- import{inject as s}from"vue";import{transformLastMessage as e,formatTime as t,transformMessage as n}from"../utils/index.js";import{InjectionIChatState as i,InjectionIChatStompClient as o,InjectionIChatEmits as m}from"../types/index.js";function r(){const r=s(i),u=s(o),c=s(m);return{state:r,setCurrentSessionItem:function(s){Object.assign(r.currentSessionItem,s,s.lastMessage?{lastMessage:e(s)}:{}),r.sessionKey!==r.currentSessionItem.sessionKey&&(r.sessionKey=r.currentSessionItem.sessionKey,r.msgList=[])},setMsgList:function(s=[]){r.msgList=s.map((s=>{var e;return{...s,__time:t(s.sendTime).msgTime,__content:n(null==(e=s.content)?void 0:e.msg)}}))},stompClient:u,emit:c}}export{r as useState};
1
+ import{inject as t}from"vue";import{formatTime as e,transformMessage as i}from"../utils/index.js";import{InjectionIChatState as n,InjectionIChatStompClient as m,InjectionIChatEmits as s}from"../types/index.js";function o(){const o=t(n),r=t(m),p=t(s);return{state:o,setMsgList:function(t=[]){o.msgList=t.map((t=>{var n;return{...t,__time:e(t.sendTime).msgTime,__content:i(null==(n=t.content)?void 0:n.msg)}}))},stompClient:r,emit:p}}export{o as useState};
@@ -1,7 +1,7 @@
1
1
  import { InjectionKey, Ref } from 'vue';
2
2
  import { AnyObject } from '../../../../shared/types';
3
3
  import { ChatSock } from '../utils/chatSock';
4
- declare type IState = {
4
+ export declare type IState = {
5
5
  currentSessionItem: AnyObject;
6
6
  sessionKey: string;
7
7
  userInfo: AnyObject;
@@ -16,4 +16,3 @@ declare type IState = {
16
16
  export declare const InjectionIChatState: InjectionKey<IState>;
17
17
  export declare const InjectionIChatStompClient: InjectionKey<Ref<ChatSock>>;
18
18
  export declare const InjectionIChatEmits: InjectionKey<(event: string, ...args: any[]) => void>;
19
- export {};