cnhis-design-vue 3.2.8-beta.11 → 3.2.8-beta.13

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 (27) hide show
  1. package/es/components/ai-chat/index.d.ts +9 -0
  2. package/es/components/ai-chat/src/Index.vue.d.ts +9 -0
  3. package/es/components/ai-chat/src/Index.vue2.js +1 -1
  4. package/es/components/ai-chat/src/components/ChatFooter.vue2.js +1 -1
  5. package/es/components/ai-chat/src/components/ChatMain.js +1 -1
  6. package/es/components/ai-chat/style/index.css +1 -1
  7. package/es/components/field-set/src/FieldColor.vue.d.ts +1 -1
  8. package/es/components/field-set/src/FieldFilter.vue.d.ts +1 -1
  9. package/es/components/field-set/src/FieldSet.vue.d.ts +1 -1
  10. package/es/components/field-set/src/components/table-row.vue.d.ts +1 -1
  11. package/es/components/iho-chat/index.d.ts +2 -1
  12. package/es/components/iho-chat/src/Index.vue.d.ts +2 -1
  13. package/es/components/iho-chat/src/components/ChatAdd.vue2.js +1 -1
  14. package/es/components/iho-chat/src/components/ChatFile.vue.d.ts +1 -1
  15. package/es/components/iho-chat/src/components/ChatFile.vue2.js +1 -1
  16. package/es/components/iho-chat/src/components/ChatFooter.vue2.js +1 -1
  17. package/es/components/iho-chat/src/components/ChatHeader.vue.d.ts +2 -1
  18. package/es/components/iho-chat/src/components/ChatHeader.vue2.js +1 -1
  19. package/es/components/iho-chat/src/components/ChatMain.vue2.js +1 -1
  20. package/es/components/iho-chat/src/components/ChatRecord.vue.d.ts +1 -0
  21. package/es/components/iho-chat/src/components/ChatRecord.vue2.js +1 -1
  22. package/es/components/iho-chat/style/index.css +1 -1
  23. package/es/components/index.css +1 -1
  24. package/es/components/index.d.ts +1 -0
  25. package/es/components/info-header/index.d.ts +1 -0
  26. package/es/shared/package.json.js +1 -1
  27. package/package.json +2 -2
@@ -4,6 +4,9 @@ declare const AiChat: SFCWithInstall<import("vue").DefineComponent<{
4
4
  type: StringConstructor;
5
5
  required: true;
6
6
  };
7
+ defaultShortcutList: {
8
+ type: import("vue").PropType<string[]>;
9
+ };
7
10
  shortcutList: {
8
11
  type: import("vue").PropType<string[]>;
9
12
  };
@@ -22,6 +25,9 @@ declare const AiChat: SFCWithInstall<import("vue").DefineComponent<{
22
25
  type: StringConstructor;
23
26
  required: true;
24
27
  };
28
+ defaultShortcutList: {
29
+ type: import("vue").PropType<string[]>;
30
+ };
25
31
  shortcutList: {
26
32
  type: import("vue").PropType<string[]>;
27
33
  };
@@ -60,6 +66,9 @@ declare const AiChat: SFCWithInstall<import("vue").DefineComponent<{
60
66
  type: StringConstructor;
61
67
  required: true;
62
68
  };
69
+ defaultShortcutList: {
70
+ type: import("vue").PropType<string[]>;
71
+ };
63
72
  shortcutList: {
64
73
  type: import("vue").PropType<string[]>;
65
74
  };
@@ -6,6 +6,9 @@ declare const _default: import("vue").DefineComponent<{
6
6
  type: StringConstructor;
7
7
  required: true;
8
8
  };
9
+ defaultShortcutList: {
10
+ type: PropType<string[]>;
11
+ };
9
12
  shortcutList: {
10
13
  type: PropType<string[]>;
11
14
  };
@@ -24,6 +27,9 @@ declare const _default: import("vue").DefineComponent<{
24
27
  type: StringConstructor;
25
28
  required: true;
26
29
  };
30
+ defaultShortcutList: {
31
+ type: PropType<string[]>;
32
+ };
27
33
  shortcutList: {
28
34
  type: PropType<string[]>;
29
35
  };
@@ -62,6 +68,9 @@ declare const _default: import("vue").DefineComponent<{
62
68
  type: StringConstructor;
63
69
  required: true;
64
70
  };
71
+ defaultShortcutList: {
72
+ type: PropType<string[]>;
73
+ };
65
74
  shortcutList: {
66
75
  type: PropType<string[]>;
67
76
  };
@@ -1 +1 @@
1
- import{defineComponent as e,reactive as o,provide as r,toRefs as t,openBlock as s,createElementBlock as i,normalizeStyle as n,unref as a,createVNode as p}from"vue";import m from"./components/ChatMain.js";import u from"./components/ChatFooter.vue.js";import{useTheme as d}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"naive-ui";import"../../../shared/hooks/useScrollLoading.js";import{InjectionAIChat as h}from"./types/index.js";var c=e({__name:"Index",props:{userAvatar:{type:String,required:!0},shortcutList:{type:Array},queryData:{type:Function,reuired:!0},queryRecord:{type:Function,reuired:!0}},setup(e){const c=e,v=d(),y=o({beingSent:!1,sendContent:""});return r(h,{...t(c),state:y}),(e,o)=>(s(),i("div",{class:"ai-chat",style:n(a(v))},[p(a(m)),p(u)],4))}});export{c as default};
1
+ import{defineComponent as e,reactive as t,provide as r,toRefs as o,openBlock as s,createElementBlock as i,normalizeStyle as a,unref as n,createVNode as p}from"vue";import u from"./components/ChatMain.js";import m from"./components/ChatFooter.vue.js";import{useTheme as d}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"naive-ui";import"../../../shared/hooks/useScrollLoading.js";import{InjectionAIChat as h}from"./types/index.js";var c=e({__name:"Index",props:{userAvatar:{type:String,required:!0},defaultShortcutList:{type:Array},shortcutList:{type:Array},queryData:{type:Function,reuired:!0},queryRecord:{type:Function,reuired:!0}},setup(e){const c=e,y=d(),v=t({beingSent:!1,sendContent:""});return r(h,{...o(c),state:v}),(e,t)=>(s(),i("div",{class:"ai-chat",style:a(n(y))},[p(n(u)),p(m)],4))}});export{c as default};
@@ -1 +1 @@
1
- import{defineComponent as e,inject as t,ref as n,computed as l,openBlock as a,createElementBlock as s,normalizeClass as i,unref as o,Fragment as r,renderList as u,createBlock as d,withCtx as c,createTextVNode as f,toDisplayString as p,createCommentVNode as v,createElementVNode as b,createVNode as m}from"vue";import{NButton as y,NInput as h,NIcon as x}from"naive-ui";import{PaperPlane as g}from"@vicons/ionicons5";import{InjectionAIChat as K}from"../types/index.js";const k={key:0,class:"menu-box fillet-8"},w={class:"input-wrapper fillet-10"},S={class:"input-box"},z={class:"btn-box"},C=["disabled"];var _=e({__name:"ChatFooter",setup(e){const{shortcutList:_,state:E}=t(K),R=n(""),j=l((()=>!R.value.replace(/(&nbsp;|\s|<br>)+/g,"")));function D(e){["Enter"].includes(e.key)&&(function(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}(e)||(e.preventDefault(),F()))}function F(){j.value||(E.beingSent=!0,E.sendContent=R.value,R.value="")}return(e,t)=>(a(),s("section",{class:i(["chat-footer",o(E).beingSent?"disabled":""])},[o(_)&&o(_).length>0?(a(),s("div",k,[(a(!0),s(r,null,u(o(_),(e=>(a(),d(o(y),{secondary:"",size:"small",key:e},{default:c((()=>[f(p(e),1)])),_:2},1024)))),128))])):v("v-if",!0),b("div",w,[b("div",S,[m(o(h),{type:"textarea",placeholder:"请向我提问,Shift+Enter换行",disabled:o(E).beingSent,autosize:{minRows:2,maxRows:7},value:R.value,"onUpdate:value":t[0]||(t[0]=e=>R.value=e),onKeydown:D},null,8,["disabled","value"])]),b("div",z,[b("span",{class:i(["btn-send","fillet-8",o(j)?"disabled":""]),disabled:o(j),onClick:F},[m(o(x),{color:"#fff",size:"22",component:o(g)},null,8,["component"])],10,C)])])],2))}});export{_ as default};
1
+ import{defineComponent as e,inject as n,ref as t,computed as l,watch as a,openBlock as i,createElementBlock as o,normalizeClass as s,unref as u,Fragment as r,renderList as c,createBlock as d,withCtx as v,createTextVNode as f,toDisplayString as p,createCommentVNode as b,createElementVNode as m,createVNode as y}from"vue";import{NButton as h,NInput as x,NIcon as g}from"naive-ui";import{PaperPlane as k}from"@vicons/ionicons5";import{InjectionAIChat as C}from"../types/index.js";const K={key:0,class:"menu-box fillet-8"},S={class:"input-wrapper fillet-10"},w={class:"input-box"},z={class:"btn-box"},_=["disabled"];var E=e({__name:"ChatFooter",setup(e){const{shortcutList:E,state:R}=n(C),j=t(""),D=l((()=>!j.value.replace(/(&nbsp;|\s|<br>)+/g,"")));function F(e){["Enter"].includes(e.key)&&(function(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}(e)||(e.preventDefault(),L()))}function L(){D.value||(R.beingSent=!0,R.sendContent=j.value,j.value="")}return a((()=>R.sendContent),(e=>{e&&!R.beingSent&&(j.value=e)})),(e,n)=>(i(),o("section",{class:s(["chat-footer",u(R).beingSent?"disabled":""])},[u(E)&&u(E).length>0?(i(),o("div",K,[(i(!0),o(r,null,c(u(E),(e=>(i(),d(u(h),{secondary:"",size:"small",key:e,onClick:n=>j.value=e},{default:v((()=>[f(p(e),1)])),_:2},1032,["onClick"])))),128))])):b("v-if",!0),m("div",S,[m("div",w,[y(u(x),{type:"textarea",placeholder:"请向我提问,Shift+Enter换行",disabled:u(R).beingSent,autosize:{minRows:2,maxRows:7},value:j.value,"onUpdate:value":n[0]||(n[0]=e=>j.value=e),onKeydown:F},null,8,["disabled","value"])]),m("div",z,[m("span",{class:s(["btn-send","fillet-8",u(D)?"disabled":""]),disabled:u(D),onClick:L},[y(u(g),{color:"#fff",size:"22",component:u(k)},null,8,["component"])],10,_)])])],2))}});export{E as default};
@@ -1 +1 @@
1
- import{defineComponent as e,inject as t,ref as n,watch as s,createVNode as r,createTextVNode as o}from"vue";import{NAvatar as a,NSpin as i}from"naive-ui";import{InjectionAIChat as l}from"../types/index.js";import u from"../../../../shared/assets/img/ai__avatar.png.js";import{isArray as c,isFunction as m}from"lodash";import"../../../../shared/utils/index.js";import"@vueuse/core";import"date-fns";import"lodash-es";import"@vue/shared";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import"@vicons/ionicons5";import{useScrollLoading as p}from"../../../../shared/hooks/useScrollLoading.js";var d=e({name:"ChatMain",inheritAttrs:!1,props:{},emits:[],setup(e,{attrs:d,slots:h,emit:v}){const{userAvatar:f,queryData:g,state:y,queryRecord:b}=t(l),j=n(null),C=n([]),S={page:0,hasMore:!0};async function k(){if(!S.hasMore)return;S.page++;const e=await b.value({page:S.page});if(!Array.isArray(e)||0===e.length)return S.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");C.value=S.page>1?[...e,...C.value]:e}function x({content:e=""}){return e.replace(/\\n|\n|\r/g,"<br>").split("<br>").map(((e,t,n)=>[e,t===n.length-1?null:r("br",null,null)]))}function A({role:e=""}){return"user"===e}return p(j,(()=>{k()}),"top"),k(),s((()=>y.beingSent),(async e=>{if(e){C.value.unshift({role:"user",content:y.sendContent});const e=await g.value({content:y.sendContent,contentType:"text"});c(e)&&C.value.unshift(...e),y.beingSent=!1,y.sendContent=""}})),()=>r("section",{class:"chat-main",ref:j},[[y.beingSent?r("div",{class:"message-item"},[r(a,{round:!0,size:40,src:u},null),r("div",{class:"content fillet-10 loading"},[r(i,{size:22,stroke:"#4170EE"},null),r("span",null,[o("正在加载中,请稍等...")])])]):null,C.value.map((e=>r("div",{class:"message-item"},[r(a,{round:!0,size:40,src:A(e)?f.value:u},null),r("div",{class:["content",A(e)?"fillet-8 mine":"fillet-10"]},[m(e.render)?e.render():x(e)])])))]])}});export{d as default};
1
+ import{defineComponent as e,inject as t,ref as n,watch as s,createVNode as r,createTextVNode as l,isVNode as a}from"vue";import{NAvatar as o,NSpin as i,NSpace as u,NButton as c}from"naive-ui";import{InjectionAIChat as p}from"../types/index.js";import d from"../../../../shared/assets/img/ai__avatar.png.js";import{isArray as m,isFunction as f}from"lodash";import"../../../../shared/utils/index.js";import"@vueuse/core";import"date-fns";import"lodash-es";import"@vue/shared";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import"@vicons/ionicons5";import{useScrollLoading as v}from"../../../../shared/hooks/useScrollLoading.js";function g(e){return"function"==typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!a(e)}var h=e({name:"ChatMain",inheritAttrs:!1,props:{},emits:[],setup(e,{attrs:a,slots:h,emit:b}){const{userAvatar:y,queryData:j,state:S,queryRecord:C,defaultShortcutList:x=[]}=t(p),k=n(null),z=n([]),A=n(!1),M={page:0,hasMore:!0};async function w(e=!1){if(!M.hasMore)return;M.page++;const t=await C.value({page:M.page});if(!Array.isArray(t)||0===t.length)return e&&(A.value=!0),M.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");z.value=M.page>1?[...t,...z.value]:t}function q({content:e=""}){return e.replace(/\\n|\n|\r/g,"<br>").split("<br>").map(((e,t,n)=>[e,t===n.length-1?null:r("br",null,null)]))}function E({role:e=""}){return"user"===e}function H(){let e;return r("div",{class:"message-item"},[r(o,{round:!0,size:40,src:d},null),r("div",{class:"content fillet-10 default"},[r("h2",null,[l("Hi,我是你的AI助理")]),r("p",null,[l("我汇集了医生站/护士站各项智能服务,可以像我进行提问哦 ~ "),r("br",null,null),l("你的反馈助我成长,期待我们一起探索未来!下次可以在首页和应用页找到我~")]),x.value.length>0?[r("p",{style:"margin: 5px 0 5px"},[l("你可以试着问我:")]),r(u,{"wrap-item":!1},g(e=x.value.map((e=>r(c,{size:"large",secondary:!0,onClick:()=>S.sendContent=e,disabled:S.beingSent},g(e)?e:{default:()=>[e]}))))?e:{default:()=>[e]})]:null])])}return v(k,(()=>{w()}),"top"),w(!0),s((()=>S.beingSent),(async e=>{if(e){z.value.unshift({role:"user",content:S.sendContent});const e=await j.value({content:S.sendContent,contentType:"text"});m(e)&&z.value.unshift(...e),S.beingSent=!1,S.sendContent=""}})),()=>r("section",{class:"chat-main",ref:k},[[S.beingSent?r("div",{class:"message-item"},[r(o,{round:!0,size:40,src:d},null),r("div",{class:"content fillet-10 loading"},[r(i,{size:22,stroke:"#4170EE"},null),r("span",null,[l("正在加载中,请稍等...")])])]):null,z.value.map((e=>r("div",{class:"message-item"},[r(o,{round:!0,size:40,src:E(e)?y.value:d},null),r("div",{class:["content",E(e)?"fillet-8 mine":"fillet-10"]},[f(e.render)?e.render():q(e)])]))),A.value?H():null]])}});export{h as default};
@@ -1 +1 @@
1
- .ai-chat{background:linear-gradient(135deg,#c9dbfb,#c9dbfb 20%,rgba(237,237,253,.5) 70%,rgba(151,97,251,.2));display:flex;flex-flow:column nowrap;height:100%;padding:45px 0 60px;width:100%}.ai-chat,.ai-chat *{box-sizing:border-box}.ai-chat .fillet-10{border-radius:10px}.ai-chat .fillet-8{border-radius:8px}.ai-chat .n-avatar{background-color:var(--c-primary-color)}.ai-chat .chat-main{display:flex;flex:1;flex-flow:column-reverse nowrap;overflow-y:scroll;padding:0 130px 0 82px;row-gap:16px}.ai-chat .chat-main::-webkit-scrollbar{width:5px}.ai-chat .chat-main::-webkit-scrollbar-thumb{background:rgba(0,0,0,.25);border-radius:5px}.ai-chat .chat-main .message-item{column-gap:8px;display:flex;flex-flow:row nowrap}.ai-chat .chat-main .message-item .n-avatar{flex-shrink:0}.ai-chat .chat-main .message-item .content{background:#fff;padding:10px 12px}.ai-chat .chat-main .message-item .content.mine{background:hsla(0,0%,100%,.48)}.ai-chat .chat-main .message-item .content.loading{align-items:center;color:#999;column-gap:10px;display:flex}.ai-chat .chat-footer{padding:30px 130px 0}.ai-chat .chat-footer.disabled{cursor:not-allowed}.ai-chat .chat-footer .menu-box{background:#fff;column-gap:8px;display:flex;margin-bottom:8px;padding:10px}.ai-chat .chat-footer .input-wrapper{background:#fff;box-shadow:0 3px 4px 0 rgba(0,0,0,.1);padding:15px 20px}.ai-chat .chat-footer .input-wrapper .n-input__border,.ai-chat .chat-footer .input-wrapper .n-input__state-border{border:none}.ai-chat .chat-footer .input-wrapper .n-input:not(.n-input--disabled).n-input--focus .n-input__state-border{box-shadow:unset}.ai-chat .chat-footer .input-wrapper .btn-box{display:flex;justify-content:flex-end}.ai-chat .chat-footer .input-wrapper .btn-box .btn-send{align-items:center;background:linear-gradient(178deg,#8f66f7,#4170ee);cursor:pointer;display:flex;height:46px;justify-content:center;width:58px}.ai-chat .chat-footer .input-wrapper .btn-box .btn-send.disabled{cursor:not-allowed}
1
+ .ai-chat{background:linear-gradient(135deg,#c9dbfb,#c9dbfb 20%,rgba(237,237,253,.5) 70%,rgba(151,97,251,.2));display:flex;flex-flow:column nowrap;height:100%;padding:45px 0 60px;width:100%}.ai-chat,.ai-chat *{box-sizing:border-box}.ai-chat .fillet-10{border-radius:10px}.ai-chat .fillet-8{border-radius:8px}.ai-chat .n-avatar{background-color:var(--c-primary-color)}.ai-chat .chat-main{display:flex;flex:1;flex-flow:column-reverse nowrap;overflow-y:scroll;padding:0 130px 0 82px;row-gap:16px}.ai-chat .chat-main::-webkit-scrollbar{width:5px}.ai-chat .chat-main::-webkit-scrollbar-thumb{background:rgba(0,0,0,.25);border-radius:5px}.ai-chat .chat-main .message-item{column-gap:8px;display:flex;flex-flow:row nowrap}.ai-chat .chat-main .message-item:first-child{margin-bottom:auto}.ai-chat .chat-main .message-item .n-avatar{flex-shrink:0}.ai-chat .chat-main .message-item .content{background:#fff;padding:10px 12px}.ai-chat .chat-main .message-item .content.default h2{font-size:22px;font-weight:500;margin:10px 0}.ai-chat .chat-main .message-item .content.mine{background:hsla(0,0%,100%,.48)}.ai-chat .chat-main .message-item .content.loading{align-items:center;color:#999;column-gap:10px;display:flex}.ai-chat .chat-footer{padding:30px 130px 0}.ai-chat .chat-footer.disabled{cursor:not-allowed}.ai-chat .chat-footer .menu-box{background:#fff;column-gap:8px;display:flex;margin-bottom:8px;padding:10px}.ai-chat .chat-footer .input-wrapper{background:#fff;box-shadow:0 3px 4px 0 rgba(0,0,0,.1);padding:15px 20px}.ai-chat .chat-footer .input-wrapper .n-input__border,.ai-chat .chat-footer .input-wrapper .n-input__state-border{border:none}.ai-chat .chat-footer .input-wrapper .n-input:not(.n-input--disabled).n-input--focus .n-input__state-border{box-shadow:unset}.ai-chat .chat-footer .input-wrapper .btn-box{display:flex;justify-content:flex-end}.ai-chat .chat-footer .input-wrapper .btn-box .btn-send{align-items:center;background:linear-gradient(178deg,#8f66f7,#4170ee);cursor:pointer;display:flex;height:46px;justify-content:center;width:58px}.ai-chat .chat-footer .input-wrapper .btn-box .btn-send.disabled{cursor:not-allowed}
@@ -486,9 +486,9 @@ declare const _default: import("vue").DefineComponent<{
486
486
  }>;
487
487
  developMode: boolean;
488
488
  draggable: boolean;
489
- isHighlightRow: boolean;
490
489
  idx: number;
491
490
  isHighlight: boolean;
491
+ isHighlightRow: boolean;
492
492
  isFieldSet: boolean;
493
493
  fieldDescribeMode: "column" | "tooltip";
494
494
  }>;
@@ -508,9 +508,9 @@ declare const _default: import("vue").DefineComponent<{
508
508
  }>;
509
509
  developMode: boolean;
510
510
  draggable: boolean;
511
- isHighlightRow: boolean;
512
511
  idx: number;
513
512
  isHighlight: boolean;
513
+ isHighlightRow: boolean;
514
514
  isFieldSet: boolean;
515
515
  fieldDescribeMode: "column" | "tooltip";
516
516
  }>;
@@ -646,9 +646,9 @@ declare const _default: import("vue").DefineComponent<{
646
646
  }>;
647
647
  developMode: boolean;
648
648
  draggable: boolean;
649
- isHighlightRow: boolean;
650
649
  idx: number;
651
650
  isHighlight: boolean;
651
+ isHighlightRow: boolean;
652
652
  isFieldSet: boolean;
653
653
  fieldDescribeMode: "column" | "tooltip";
654
654
  }>;
@@ -337,9 +337,9 @@ declare const _default: import("vue").DefineComponent<{
337
337
  }>;
338
338
  developMode: boolean;
339
339
  draggable: boolean;
340
- isHighlightRow: boolean;
341
340
  idx: number;
342
341
  isHighlight: boolean;
342
+ isHighlightRow: boolean;
343
343
  isFieldSet: boolean;
344
344
  fieldDescribeMode: "column" | "tooltip";
345
345
  }>;
@@ -478,8 +478,8 @@ declare const IhoChat: SFCWithInstall<import("vue").DefineComponent<{
478
478
  NImage: any;
479
479
  NInput: any;
480
480
  NIcon: any;
481
+ NTooltip: any;
481
482
  SearchOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
482
- OpenOutline: 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<{}>>, {}>;
483
483
  DownloadOutline: 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<{}>>, {}>;
484
484
  downloadFile: typeof import("./src/utils").downloadFile;
485
485
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
@@ -526,6 +526,7 @@ declare const IhoChat: SFCWithInstall<import("vue").DefineComponent<{
526
526
  startDateDisabled: (ts: number) => boolean;
527
527
  endDateDisabled: (ts: number) => boolean;
528
528
  resetInfo: () => void;
529
+ formatEndTime: () => string;
529
530
  handleCloseTag: (type: "start" | "end" | "member") => void;
530
531
  getPrefixCondition: () => (JSX.Element | null)[];
531
532
  renderLabel: (option: import("../../shared/types").AnyObject) => JSX.Element;
@@ -483,8 +483,8 @@ declare const _default: import("vue").DefineComponent<{
483
483
  NImage: any;
484
484
  NInput: any;
485
485
  NIcon: any;
486
+ NTooltip: any;
486
487
  SearchOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
487
- OpenOutline: 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<{}>>, {}>;
488
488
  DownloadOutline: 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<{}>>, {}>;
489
489
  downloadFile: typeof import("./utils").downloadFile;
490
490
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
@@ -531,6 +531,7 @@ declare const _default: import("vue").DefineComponent<{
531
531
  startDateDisabled: (ts: number) => boolean;
532
532
  endDateDisabled: (ts: number) => boolean;
533
533
  resetInfo: () => void;
534
+ formatEndTime: () => string;
534
535
  handleCloseTag: (type: "start" | "end" | "member") => void;
535
536
  getPrefixCondition: () => (JSX.Element | null)[];
536
537
  renderLabel: (option: AnyObject) => JSX.Element;
@@ -1 +1 @@
1
- import{defineComponent as e,ref as a,computed as l,watch as t,openBlock as i,createElementBlock as r,Fragment as o,createVNode as s,unref as u,withCtx as n,createElementVNode as d,createCommentVNode as v,isRef as c,renderList as p,createBlock as m,toDisplayString as f,createTextVNode as h,renderSlot as b}from"vue";import{NModal as g,NInput as I,NIcon as k,NCheckbox as y,NCheckboxGroup as w,NSpace as _,NAvatar as S,NTag as x,NTooltip as j,NButton as U}from"naive-ui";import{SearchOutline as C,AddOutline as L}from"@vicons/ionicons5";import{useState as A}from"../hooks/useState.js";import{useSession as R}from"../hooks/useSession.js";import{CHAT_TYPE as V}from"../constants/index.js";import"trtc-sdk-v5";import{listSort as E}from"../utils/index.js";import{groupLeaveApi as G,groupJoinApi as N,groupCreateApi as $}from"../api/index.js";import{cloneDeep as M,union as T,unionBy as z,remove as D,isArray as P,uniqBy as q,trim as B}from"lodash-es";import{useSearchUserList as F}from"../hooks/useSearchUserList.js";const H={class:"iho-chat-dialog__content iho-chat-add-wrapper"},J={key:0,class:"input-box"},K=d("span",null,"群名称:",-1),O={class:"transfer-box"},Q={class:"transfer-box__left"},W={class:"user-list-box"},X={key:1,class:"no-data"},Y={class:"transfer-box__right"},Z={class:"checked-tag-box"};var ee=e({__name:"ChatAdd",props:{title:{type:String,default:"添加新成员"},mode:{type:String,default:"select"},options:{type:Array},disabledIds:{type:Array,default:()=>[]},defaultValue:{type:Array}},emits:["comfirm"],setup(e,{emit:ee}){const ae=e,{state:le}=A(),{setCurrentSessionItem:te}=R(le),ie=a(),re=a(""),oe=a(!1),se=a([]),ue=a([]),ne=a(""),de=a([]),{userList:ve,handleInput:ce}=F({wrapperRef:ie,keywordRef:re,before:()=>{ve.value=M(ue.value),Ie()},after:()=>{ve.value.forEach((e=>{var a;e.disabled=null==(a=pe.value)?void 0:a.includes(e.id)})),Ie()}}),pe=l((()=>T(ae.disabledIds,[le.userInfo.id]))),me=l((()=>{var e,a;return(null==(e=le.sessionList)?void 0:e.length)?null==(a=E(le.sessionList).filter((e=>e.chatType===V.SINGLE)))?void 0:a.map((e=>({id:e.receiver,name:e.name,avatar:e.avatar}))):[]})),fe=l((()=>se.value.length?se.value.map((e=>e.id)):[])),he=l((()=>"create"===ae.mode?fe.value.length<3:fe.value.length<1)),be=l({get:()=>de.value.length===ve.value.filter((e=>!e.disabled)).length,set(e){const a=ve.value.filter((e=>!e.disabled));de.value=e?a.map((e=>e.id)):[],e?se.value=z(se.value,a,"id"):D(se.value,(e=>a.map((e=>e.id)).includes(e.id)))}});async function ge(){switch(ae.mode){case"create":await $({creator:le.userInfo.id,memberIdSet:fe.value,name:B(ne.value),orgId:le.orgId});break;case"join":if(await N({groupId:le.currentSessionItem.receiver,operator:le.userInfo.id,memberIdSet:fe.value}),!le.currentSessionItem.defaultName){const e=se.value.map((e=>e.name)).join(",");te({name:`${le.currentSessionItem.name},${e}`})}le.currentGroupUser.push(...ve.value.filter((e=>fe.value.includes(e.id))));break;case"remove":if(await G({dissolution:!1,groupId:le.currentSessionItem.receiver,operator:le.userInfo.id,memberIdSet:fe.value}),!le.currentSessionItem.defaultName){const e=se.value.map((e=>e.name)).join(","),a=new RegExp(e,"g");te({name:le.currentSessionItem.name.replace(a,"")})}D(le.currentGroupUser,(e=>fe.value.includes(e.id)));break;default:ee("comfirm",fe.value)}oe.value=!1}function Ie(){var e,a;de.value=null!=(a=null==(e=ve.value.filter((e=>fe.value.includes(e.id))))?void 0:e.map((e=>e.id)))?a:[]}function ke(e,a){if("check"===a.actionType){const e=ve.value.find((e=>e.id===a.value));se.value.push(e)}else D(se.value,(e=>e.id===a.value))}return t((()=>oe.value),(e=>{if(!e)return;re.value="",ne.value="";const a=P(ae.options)&&ae.options.length?ae.options:me.value;ue.value=q(a,"id").map((e=>{var a;return{...e,disabled:null==(a=pe.value)?void 0:a.includes(e.id)}})),ve.value=M(ue.value),P(ae.defaultValue)&&ae.defaultValue.length?(se.value=M(ae.defaultValue),Ie()):(se.value=[],de.value=[])})),(a,l)=>(i(),r(o,null,[s(u(g),{preset:"dialog",title:e.title,"show-icon":!1,"auto-focus":!1,"trap-focus":!1,class:"iho-chat-dialog",show:oe.value,"onUpdate:show":l[4]||(l[4]=e=>oe.value=e),"negative-text":"取消","positive-text":"确定","display-directive":"show","positive-button-props":{disabled:u(he)},onPositiveClick:ge},{default:n((()=>[d("div",H,["create"===e.mode?(i(),r("div",J,[K,s(u(I),{clearable:"",placeholder:"取个群名称方便后续搜索",value:ne.value,"onUpdate:value":l[0]||(l[0]=e=>ne.value=e),valueModifiers:{trim:!0}},null,8,["value"])])):v("v-if",!0),d("div",O,[d("div",Q,[s(u(I),{placeholder:"搜索",clearable:"",value:re.value,"onUpdate:value":[l[1]||(l[1]=e=>re.value=e),u(ce)],valueModifiers:{trim:!0}},{prefix:n((()=>[s(u(k),{component:u(C)},null,8,["component"])])),_:1},8,["value","onUpdate:value"]),d("div",W,[u(ve).length>0?(i(),r(o,{key:0},[s(u(y),{label:"全选",checked:u(be),"onUpdate:checked":l[2]||(l[2]=e=>c(be)?be.value=e:null)},null,8,["checked"]),s(u(w),{ref_key:"listRef",ref:ie,value:de.value,"onUpdate:value":[l[3]||(l[3]=e=>de.value=e),ke]},{default:n((()=>[(i(!0),r(o,null,p(u(ve),(e=>(i(),m(u(y),{key:e.id,value:e.id,disabled:e.disabled},{default:n((()=>[s(u(_),{align:"center","wrap-item":!1},{default:n((()=>[s(u(S),{src:e.avatar,round:"",size:32},null,8,["src"]),d("span",null,f(e.name),1)])),_:2},1024)])),_:2},1032,["value","disabled"])))),128))])),_:1},8,["value"])],64)):(i(),r("div",X,"找不到相关结果"))])]),d("div",Y,[d("span",null,"已选择 "+f(u(fe).length)+" 人",1),d("div",Z,[(i(!0),r(o,null,p(se.value,(e=>(i(),m(u(x),{key:e.id,bordered:!1,closable:e.id!==u(le).userInfo.id,disabled:u(pe).includes(e.id),onClose:()=>{return a=e.id,D(se.value,(e=>e.id===a)),void D(de.value,(e=>e===a));var a}},{avatar:n((()=>[s(u(S),{round:"",src:e.avatar},null,8,["src"])])),default:n((()=>[h(" "+f(e.name),1)])),_:2},1032,["closable","disabled","onClose"])))),128))])])])])])),_:1},8,["title","show","positive-button-props"]),d("span",{class:"btn-wrapper",onClick:l[5]||(l[5]=e=>oe.value=!0)},[b(a.$slots,"trigger",{},(()=>[s(u(j),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:n((()=>[s(u(U),{color:"#ffffff4D",class:"add-btn"},{icon:n((()=>[s(u(k),{component:u(L),color:"#fff"},null,8,["component"])])),_:1})])),default:n((()=>[h(" "+f(e.title),1)])),_:1})]))])],64))}});export{ee as default};
1
+ import{defineComponent as e,ref as a,computed as l,watch as t,openBlock as i,createElementBlock as o,Fragment as r,createVNode as s,unref as u,withCtx as n,createElementVNode as d,createCommentVNode as v,isRef as c,renderList as p,createBlock as m,toDisplayString as f,createTextVNode as h,renderSlot as b}from"vue";import{NModal as g,NInput as I,NIcon as k,NCheckbox as y,NCheckboxGroup as w,NSpace as _,NAvatar as S,NTag as x,NTooltip as j,NButton as U}from"naive-ui";import{SearchOutline as C,AddOutline as L}from"@vicons/ionicons5";import{useState as A}from"../hooks/useState.js";import{useSession as R}from"../hooks/useSession.js";import{CHAT_TYPE as V}from"../constants/index.js";import"trtc-sdk-v5";import{listSort as E}from"../utils/index.js";import{groupLeaveApi as G,groupJoinApi as N,groupCreateApi as $}from"../api/index.js";import{cloneDeep as M,union as T,unionBy as z,remove as D,isArray as P,uniqBy as q,trim as B}from"lodash-es";import{useSearchUserList as F}from"../hooks/useSearchUserList.js";const H={class:"iho-chat-dialog__content iho-chat-add-wrapper"},J={key:0,class:"input-box"},K=d("span",null,"群名称:",-1),O={class:"transfer-box"},Q={class:"transfer-box__left"},W={class:"user-list-box"},X={key:1,class:"no-data"},Y={class:"transfer-box__right"},Z={class:"checked-tag-box"};var ee=e({__name:"ChatAdd",props:{title:{type:String,default:"添加新成员"},mode:{type:String,default:"select"},options:{type:Array},disabledIds:{type:Array,default:()=>[]},defaultValue:{type:Array}},emits:["comfirm"],setup(e,{emit:ee}){const ae=e,{state:le}=A(),{setCurrentSessionItem:te}=R(le),ie=a(),oe=a(""),re=a(!1),se=a([]),ue=a([]),ne=a(""),de=a([]),{userList:ve,handleInput:ce}=F({wrapperRef:ie,keywordRef:oe,before:()=>{ve.value=M(ue.value),Ie()},after:()=>{ve.value.forEach((e=>{var a;e.disabled=null==(a=pe.value)?void 0:a.includes(e.id)})),Ie()}}),pe=l((()=>T(ae.disabledIds,[le.userInfo.id]))),me=l((()=>{var e,a;return(null==(e=le.sessionList)?void 0:e.length)?null==(a=E(le.sessionList).filter((e=>e.chatType===V.SINGLE)))?void 0:a.map((e=>({id:e.receiver,name:e.name,avatar:e.avatar}))):[]})),fe=l((()=>se.value.length?se.value.map((e=>e.id)):[])),he=l((()=>"create"===ae.mode?fe.value.length<3:fe.value.length<1)),be=l({get:()=>de.value.length===ve.value.filter((e=>!e.disabled)).length,set(e){const a=ve.value.filter((e=>!e.disabled));de.value=e?a.map((e=>e.id)):[],e?se.value=z(se.value,a,"id"):D(se.value,(e=>a.map((e=>e.id)).includes(e.id)))}});async function ge(){switch(ae.mode){case"create":await $({creator:le.userInfo.id,memberIdSet:fe.value,name:B(ne.value),orgId:le.orgId});break;case"join":if(await N({groupId:le.currentSessionItem.receiver,operator:le.userInfo.id,memberIdSet:fe.value}),!le.currentSessionItem.defaultName){const e=se.value.map((e=>e.name)).join(",");te({name:`${le.currentSessionItem.name},${e}`})}le.currentGroupUser.push(...ve.value.filter((e=>fe.value.includes(e.id))));break;case"remove":if(await G({dissolution:!1,groupId:le.currentSessionItem.receiver,operator:le.userInfo.id,memberIdSet:fe.value}),!le.currentSessionItem.defaultName){const e=se.value.map((e=>e.name)).join(","),a=new RegExp(e,"g");te({name:le.currentSessionItem.name.replace(a,"")})}D(le.currentGroupUser,(e=>fe.value.includes(e.id)));break;default:ee("comfirm",fe.value)}re.value=!1}function Ie(){var e,a;de.value=null!=(a=null==(e=ve.value.filter((e=>fe.value.includes(e.id))))?void 0:e.map((e=>e.id)))?a:[]}function ke(e,a){if("check"===a.actionType){const e=ve.value.find((e=>e.id===a.value));se.value.push(e)}else D(se.value,(e=>e.id===a.value))}return t((()=>re.value),(e=>{if(!e)return;oe.value="",ne.value="";const a=P(ae.options)&&ae.options.length?ae.options:me.value;ue.value=q(a,"id").map((e=>{var a;return{...e,disabled:null==(a=pe.value)?void 0:a.includes(e.id)}})),ve.value=M(ue.value),P(ae.defaultValue)&&ae.defaultValue.length?(se.value=M(ae.defaultValue),Ie()):(se.value=[],de.value=[])})),(a,l)=>(i(),o(r,null,[s(u(g),{preset:"dialog",title:e.title,"show-icon":!1,"auto-focus":!1,"trap-focus":!1,class:"iho-chat-dialog",show:re.value,"onUpdate:show":l[4]||(l[4]=e=>re.value=e),"negative-text":"取消","positive-text":"确定","display-directive":"show","positive-button-props":{disabled:u(he)},onPositiveClick:ge},{default:n((()=>[d("div",H,["create"===e.mode?(i(),o("div",J,[K,s(u(I),{clearable:"",placeholder:"取个群名称方便后续搜索",value:ne.value,"onUpdate:value":l[0]||(l[0]=e=>ne.value=e),valueModifiers:{trim:!0}},null,8,["value"])])):v("v-if",!0),d("div",O,[d("div",Q,[s(u(I),{placeholder:"搜索",clearable:"",value:oe.value,"onUpdate:value":[l[1]||(l[1]=e=>oe.value=e),u(ce)],valueModifiers:{trim:!0}},{prefix:n((()=>[s(u(k),{component:u(C)},null,8,["component"])])),_:1},8,["value","onUpdate:value"]),d("div",W,[u(ve).length>0?(i(),o(r,{key:0},[s(u(y),{label:"全选",checked:u(be),"onUpdate:checked":l[2]||(l[2]=e=>c(be)?be.value=e:null)},null,8,["checked"]),s(u(w),{ref_key:"listRef",ref:ie,value:de.value,"onUpdate:value":[l[3]||(l[3]=e=>de.value=e),ke]},{default:n((()=>[(i(!0),o(r,null,p(u(ve),(e=>(i(),m(u(y),{key:e.id,value:e.id,disabled:e.disabled},{default:n((()=>[s(u(_),{align:"center","wrap-item":!1},{default:n((()=>[s(u(S),{src:e.avatar,round:"",size:32},null,8,["src"]),d("span",null,f(e.name),1)])),_:2},1024)])),_:2},1032,["value","disabled"])))),128))])),_:1},8,["value"])],64)):(i(),o("div",X,"找不到相关结果"))])]),d("div",Y,[d("span",null,"已选择 "+f(u(fe).length)+" 人",1),d("div",Z,[(i(!0),o(r,null,p(se.value,(e=>(i(),m(u(x),{key:e.id,bordered:!1,closable:e.id!==u(le).userInfo.id,disabled:u(pe).includes(e.id),onClose:()=>{return a=e.id,D(se.value,(e=>e.id===a)),void D(de.value,(e=>e===a));var a}},{avatar:n((()=>[s(u(S),{round:"",src:e.avatar},null,8,["src"])])),default:n((()=>[h(" "+f(e.name),1)])),_:2},1032,["closable","disabled","onClose"])))),128))])])])])])),_:1},8,["title","show","positive-button-props"]),d("span",{class:"btn-wrapper",onClick:l[5]||(l[5]=e=>re.value=!0)},[b(a.$slots,"trigger",{},(()=>[s(u(j),{"show-arrow":!1,placement:"bottom"},{trigger:n((()=>[s(u(U),{color:"#ffffff4D",class:"add-btn"},{icon:n((()=>[s(u(k),{component:u(L),color:"#fff"},null,8,["component"])])),_:1})])),default:n((()=>[h(" "+f(e.title),1)])),_:1})]))])],64))}});export{ee as default};
@@ -45,8 +45,8 @@ declare const _default: import("vue").DefineComponent<{
45
45
  NImage: any;
46
46
  NInput: any;
47
47
  NIcon: any;
48
+ NTooltip: any;
48
49
  SearchOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
49
- OpenOutline: 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<{}>>, {}>;
50
50
  DownloadOutline: 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<{}>>, {}>;
51
51
  downloadFile: typeof downloadFile;
52
52
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
@@ -1 +1 @@
1
- import{defineComponent as e,ref as t,computed as s,watch as o,openBlock as a,createBlock as i,unref as n,withCtx as r,withDirectives as l,createElementVNode as c,createVNode as m,createElementBlock as p,Fragment as d,renderList as u,toDisplayString as y,vShow as f,normalizeStyle as h}from"vue";import{NModal as v,NImageGroup as g,NImage as w,NInput as b,NIcon as k}from"naive-ui";import{SearchOutline as M,OpenOutline as T,DownloadOutline as I}from"@vicons/ionicons5";import{searchChatRecordApi as S}from"../api/index.js";import{useTheme as _}from"../../../../shared/hooks/useTheme.js";import{useDebounceFn as x}from"@vueuse/core";import{format as j,isSameWeek as A,isSameMonth as H}from"date-fns";import{last as D}from"lodash-es";import"@vue/shared";import"../../../../shared/utils/index.js";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import{useScrollLoading as C}from"../../../../shared/hooks/useScrollLoading.js";import{useState as z}from"../hooks/useState.js";import{getFileSize as L,downloadFile as U}from"../utils/index.js";import"trtc-sdk-v5";const E={class:"label"},O={class:"image-box"},$={class:"file-type"},F={class:"text"},K={class:"name"},P={class:"detail"},R={class:"opt-box"};var B=e({__name:"ChatFile",props:{type:{type:String,default:"image"},visible:{type:Boolean}},setup(e){const B=e,G=_(),{state:N}=z(),q=t([]),J=t([]),Q=t(),V=t(),W=t(),X=x(ee,500),Y={page:0,hasMore:!0,lastSendTime:j(new Date,"yyyy-MM-dd HH:mm:ss")};async function Z(){var e;try{if(!Y.hasMore)return;Y.page++;const t=await S({orgId:N.orgId,keyword:W.value,endTime:"",startTime:"",lastSendTime:Y.lastSendTime,memberIdSet:[],page:Y.page,recordType:"image"===B.type?"IMAGE":"FILE",sessionKey:N.currentSessionItem.sessionKey,userId:N.userInfo.id});Array.isArray(t)&&0!==t.length&&Array.isArray(t[0].recordList)||(Y.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了"));let s=t||[];if(Array.isArray(t)&&t.length>0&&(s=t[0].recordList),Y.lastSendTime=null==(e=D(s))?void 0:e.sendTime,"image"===B.type){const e=function(e){const t={};e.forEach((e=>{const s=new Date(e.sendTime);let o=j(s,"yyyy年MM月");A(s,new Date)?o="本周":H(s,new Date)&&(o="本月"),t[o]||(t[o]=[]),t[o].push(e.content.msg)}));return Object.entries(t).map((([e,t])=>({label:e,list:t})))}(s);q.value=Y.page>1?q.value.concat(e):e}else{const e=s.map((e=>new Promise((async t=>{const s=await L(e.content.fileUrl);t({...e,size:s})})))),t=await Promise.all(e);J.value=Y.page>1?J.value.concat(t):t}}catch(e){console.log(e)}}function ee(){Object.assign(Y,{page:0,hasMore:!0,lastSendTime:j(new Date,"yyyy-MM-dd HH:mm:ss")}),Z()}C(Q,(()=>{Z()})),C(V,(()=>{Z()}));const te=s((()=>"image"===B.type?"聊天图片":"聊天文件"));function se(e){const{size:t,sendTime:s,senderName:o}=e;return`${t} · ${j(new Date(s),"yyyy/MM/dd HH:mm")} ${o}`}function oe(e){var t;const s=(null==(t=e.content)?void 0:t.msg)||"",o=s.lastIndexOf(".");if(-1!==o){return s.charAt(o+1).toUpperCase()}return"?"}return o((()=>B.visible),(e=>{e?ee():W.value=""})),(t,s)=>(a(),i(n(v),{preset:"dialog",title:n(te),"show-icon":!1,"auto-focus":!1,class:"iho-chat-dialog"},{default:r((()=>[l(c("div",{class:"iho-chat-dialog__content iho-chat-image-wrapper",ref_key:"imageRef",ref:Q},[m(n(g),{"show-toolbar-tooltip":""},{default:r((()=>[(a(!0),p(d,null,u(q.value,(e=>(a(),p("div",{class:"image-item",key:e.label},[c("span",E,y(e.label),1),c("div",O,[(a(!0),p(d,null,u(e.list,(e=>(a(),i(n(w),{key:e,width:"80",height:"80",src:e},null,8,["src"])))),128))])])))),128))])),_:1})],512),[[f,"image"===e.type]]),l(c("div",{class:"iho-chat-dialog__content iho-chat-file-wrapper",style:h(n(G))},[m(n(b),{clearable:"",placeholder:"搜索文件",value:W.value,"onUpdate:value":s[0]||(s[0]=e=>W.value=e),valueModifiers:{trim:!0},onInput:n(X)},{prefix:r((()=>[m(n(k),{component:n(M)},null,8,["component"])])),_:1},8,["value","onInput"]),c("div",{class:"file-list-box",ref_key:"fileRef",ref:V},[(a(!0),p(d,null,u(J.value,((e,t)=>(a(),p("div",{class:"file-item",key:t},[c("span",$,y(oe(e)),1),c("div",F,[c("span",K,y(e.content.msg),1),c("span",P,y(se(e)),1)]),c("div",R,[m(n(k),{size:16,component:n(T)},null,8,["component"]),m(n(k),{size:16,component:n(I),onClick:()=>n(U)(e.content.fileUr,e.content.msg)},null,8,["component","onClick"])])])))),128))],512)],4),[[f,"image"!==e.type]])])),_:1},8,["title"]))}});export{B as default};
1
+ import{defineComponent as e,ref as t,computed as o,watch as s,openBlock as a,createBlock as i,unref as n,withCtx as r,withDirectives as l,createElementVNode as c,createVNode as m,createElementBlock as p,Fragment as d,renderList as u,toDisplayString as f,vShow as y,normalizeStyle as h,createCommentVNode as g,createTextVNode as v}from"vue";import{NModal as w,NImageGroup as b,NImage as k,NInput as M,NIcon as T,NTooltip as _}from"naive-ui";import{SearchOutline as I,DownloadOutline as S}from"@vicons/ionicons5";import{searchChatRecordApi as x}from"../api/index.js";import{useTheme as j}from"../../../../shared/hooks/useTheme.js";import{useDebounceFn as A}from"@vueuse/core";import{format as H,isSameWeek as D,isSameMonth as C}from"date-fns";import{last as O}from"lodash-es";import"@vue/shared";import"../../../../shared/utils/index.js";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import{useScrollLoading as z}from"../../../../shared/hooks/useScrollLoading.js";import{useState as L}from"../hooks/useState.js";import{getFileSize as U,downloadFile as E}from"../utils/index.js";import"trtc-sdk-v5";const $={class:"label"},F={class:"image-box"},K={class:"file-type"},P={class:"text"},R={class:"name"},B={class:"detail"},G={class:"opt-box"};var N=e({__name:"ChatFile",props:{type:{type:String,default:"image"},visible:{type:Boolean}},setup(e){const N=e,q=j(),{state:J}=L(),Q=t([]),V=t([]),W=t(),X=t(),Y=t(),Z=A(oe,500),ee={page:0,hasMore:!0,lastSendTime:H(new Date,"yyyy-MM-dd HH:mm:ss")};async function te(){var e;try{if(!ee.hasMore)return;ee.page++;const t=await x({orgId:J.orgId,keyword:Y.value,endTime:"",startTime:"",lastSendTime:ee.lastSendTime,memberIdSet:[],page:ee.page,recordType:"image"===N.type?"IMAGE":"FILE",sessionKey:J.currentSessionItem.sessionKey,userId:J.userInfo.id});Array.isArray(t)&&0!==t.length&&Array.isArray(t[0].recordList)||(ee.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了"));let o=t||[];if(Array.isArray(t)&&t.length>0&&(o=t[0].recordList),ee.lastSendTime=null==(e=O(o))?void 0:e.sendTime,"image"===N.type){const e=function(e){const t={};e.forEach((e=>{const o=new Date(e.sendTime);let s=H(o,"yyyy年MM月");D(o,new Date)?s="本周":C(o,new Date)&&(s="本月"),t[s]||(t[s]=[]),t[s].push(e.content.msg)}));return Object.entries(t).map((([e,t])=>({label:e,list:t})))}(o);Q.value=ee.page>1?Q.value.concat(e):e}else{const e=o.map((e=>new Promise((async t=>{const o=await U(e.content.fileUrl);t({...e,size:o})})))),t=await Promise.all(e);V.value=ee.page>1?V.value.concat(t):t}}catch(e){console.log(e)}}function oe(){Object.assign(ee,{page:0,hasMore:!0,lastSendTime:H(new Date,"yyyy-MM-dd HH:mm:ss")}),te()}z(W,(()=>{te()})),z(X,(()=>{te()}));const se=o((()=>"image"===N.type?"聊天图片":"聊天文件"));function ae(e){const{size:t,sendTime:o,senderName:s}=e;return`${t} · ${H(new Date(o),"yyyy/MM/dd HH:mm")} ${s}`}function ie(e){var t;const o=(null==(t=e.content)?void 0:t.msg)||"",s=o.lastIndexOf(".");if(-1!==s){return o.charAt(s+1).toUpperCase()}return"?"}return s((()=>N.visible),(e=>{e?oe():Y.value=""})),(t,o)=>(a(),i(n(w),{preset:"dialog",title:n(se),"show-icon":!1,"auto-focus":!1,class:"iho-chat-dialog"},{default:r((()=>[l(c("div",{class:"iho-chat-dialog__content iho-chat-image-wrapper",ref_key:"imageRef",ref:W},[m(n(b),{"show-toolbar-tooltip":""},{default:r((()=>[(a(!0),p(d,null,u(Q.value,(e=>(a(),p("div",{class:"image-item",key:e.label},[c("span",$,f(e.label),1),c("div",F,[(a(!0),p(d,null,u(e.list,(e=>(a(),i(n(k),{key:e,width:"80",height:"80",src:e},null,8,["src"])))),128))])])))),128))])),_:1})],512),[[y,"image"===e.type]]),l(c("div",{class:"iho-chat-dialog__content iho-chat-file-wrapper",style:h(n(q))},[m(n(M),{clearable:"",placeholder:"搜索文件",value:Y.value,"onUpdate:value":o[0]||(o[0]=e=>Y.value=e),valueModifiers:{trim:!0},onInput:n(Z)},{prefix:r((()=>[m(n(T),{component:n(I)},null,8,["component"])])),_:1},8,["value","onInput"]),c("div",{class:"file-list-box",ref_key:"fileRef",ref:X},[(a(!0),p(d,null,u(V.value,((e,t)=>(a(),p("div",{class:"file-item",key:t},[c("span",K,f(ie(e)),1),c("div",P,[c("span",R,f(e.content.msg),1),c("span",B,f(ae(e)),1)]),c("div",G,[g(' <n-tooltip :show-arrow="false">\r\n\t\t\t\t\t\t\t<template #trigger>\r\n\t\t\t\t\t\t\t\t<n-icon :size="16" :component="OpenOutline" />\r\n\t\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t\t转发\r\n\t\t\t\t\t\t</n-tooltip> '),m(n(_),{"show-arrow":!1},{trigger:r((()=>[m(n(T),{size:16,component:n(S),onClick:()=>n(E)(e.content.fileUr,e.content.msg)},null,8,["component","onClick"])])),default:r((()=>[v(" 下载 ")])),_:2},1024)])])))),128))],512)],4),[[y,"image"!==e.type]])])),_:1},8,["title"]))}});export{N as default};
@@ -1 +1 @@
1
- import{defineComponent as e,ref as t,computed as n,watch as o,withDirectives as r,openBlock as i,createElementBlock as s,normalizeStyle as a,unref as c,createElementVNode as l,toDisplayString as u,createVNode as g,createCommentVNode as f,withCtx as p,Fragment as d,renderList as m,createBlock as h,createTextVNode as y,mergeProps as v,vShow as w}from"vue";import{NIcon as M,NTooltip as _,NPopover as k,NButton as C,NUpload as I,NUploadTrigger as T}from"naive-ui";import E from"./ChatAdd.vue.js";import{useState as b}from"../hooks/useState.js";import{useSession as x}from"../hooks/useSession.js";import{MESSAGE_TYPE as z,AV_STATUS as j}from"../constants/index.js";import"trtc-sdk-v5";import{simplifyMessage as L,base64ToFile as O}from"../utils/index.js";import{emojis as R}from"../utils/emoji.js";import{uploadFileApi as q}from"../api/index.js";import{CloseCircleOutline as D,CallOutline as A,VideocamOutline as V}from"@vicons/ionicons5";import{xor as K,trim as F,cloneDeep as H}from"lodash-es";import{uuidGenerator as J}from"../../../../shared/utils/index.js";const U={key:0,class:"reference-content-box"},G={class:"reference-content"},N=["innerHTML"],S={class:"tool-box"},X=l("i",{class:"chat--iconfont chat--icon-face"},null,-1),B=l("span",null,"默认表情",-1),$={class:"list-box"},P=["src"],Q=l("i",{class:"chat--iconfont chat--icon-good"},null,-1),W=l("i",{class:"chat--iconfont chat--icon-image"},null,-1),Y=l("i",{class:"chat--iconfont chat--icon-folder"},null,-1),Z={class:"btn-box"},ee=l("span",{class:"tip"},"Enter 发送, Ctrl + Enter 换行",-1);var te=e({__name:"ChatFooter",setup(e){const te=t(),{state:ne,sendMessage:oe}=b(),{isGroupChat:re}=x(ne),ie=t(!1),se=t(""),ae=n((()=>({options:ne.currentGroupUser,defaultValue:[ne.userInfo]}))),ce=n((()=>!se.value.replace(/(&nbsp;|\s|<br>)+/g,"")));function le(e,t=[]){const n=J(),o=[],r=t.length>0;ne.showVideo||ne.showMultipleVideo||(r?(o.push(...K(t,[ne.userInfo.id])),Object.assign(ne.currentAVMsg,{callMode:"call",checkedIds:o,strRoomId:n,chatMessageType:e}),ne.showMultipleVideo=!0):oe({content:{chatMessageType:e,msg:"",avStatus:j.IN_CALL}}))}function ue(e){["Enter"].includes(e.key)&&(e.ctrlKey&&(e.preventDefault(),document.execCommand("InsertLineBreak")),function(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}(e)||(e.preventDefault(),de()))}function ge(){var e;se.value=(null==(e=te.value)?void 0:e.innerHTML)||""}async function fe(e){const t=new FormData;return t.append("sender",ne.userInfo.id),t.append("file",e),await q(t)}async function pe(e,t){const{file:n,name:o}=e.file,r=await fe(n);if(!r)return console.log("上传失败");me({chatMessageType:t,msg:t===z.FILE?o:r,url:r})}async function de(){const{innerHTML:e="",innerText:t="",outerText:n=""}=te.value||{};if(ce.value)return console.log("请输入内容");let o=z.TEXT,r="";if(e){const n=e.match(/<img[^>]*>/gi),i=(n||[]).length;if(t&&0===i)r=t;else if(t||1!==i){if(o=z.BLEND,r=e,null==n?void 0:n.length)for(let e=0;e<i;e++)if(n[e].includes(`data-type="${z.EMOJI}"`)){const t=n[e].match(/data-msg="(.*?)"/);t&&t.length>1&&(r=r.replace(n[e],`[${t[1]}]`))}else{const t=n[e].match(/src\s*=\s*"([^"]*)"/);if(t&&t.length>1){const e=O(t[1]);if(e){const n=await fe(e);r=r.replace(t[1],n||"")}}}}else if(e.includes(z.EMOJI)){o=z.EMOJI;const t=e.match(/data-msg\s*=\s*"([^"]*)"/);t&&(r=t[1])}else{o=z.IMAGE;const t=e.match(/src\s*=\s*"([^"]*)"/);if(t){const e=O(t[1]);if(e){const t=await fe(e);t&&(r=t)}}}}else r=F(t);r&&me({msg:r,chatMessageType:o,origin:"btn"})}async function me(e){const{chatMessageType:t=z.TEXT,msg:n,url:o,origin:r=""}=e,i={msg:n,chatMessageType:t};t===z.FILE&&(i.fileUrl=o),"btn"===r&&(te.value.innerHTML="",se.value=""),ne.currentReferenceMsg&&(t===z.TEXT&&(i.referenceContent=H(ne.currentReferenceMsg)),ne.currentReferenceMsg=null),oe({content:i})}return o((()=>ne.currentReferenceMsg),(e=>{var t;e&&(null==(t=te.value)||t.focus())})),(e,t)=>r((i(),s("section",{class:"chat-footer",style:a({cursor:c(ne).id?"default":"not-allowed"})},[c(ne).currentReferenceMsg?(i(),s("div",U,[l("div",G,[l("span",null,u(c(ne).currentReferenceMsg.senderName)+":",1),l("pre",{innerHTML:c(L)(c(ne).currentReferenceMsg.content)},null,8,N)]),g(c(M),{component:c(D),onClick:t[0]||(t[0]=()=>c(ne).currentReferenceMsg=null)},null,8,["component"])])):f("v-if",!0),l("div",S,[g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(k),{"content-class":"emoji-content",class:"emoji-wrapper",show:ie.value,"onUpdate:show":t[1]||(t[1]=e=>ie.value=e),placement:"top",trigger:"click","show-arrow":!1,"display-directive":"show",delay:0},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny"},{icon:p((()=>[X])),_:1})])),default:p((()=>[B,l("div",$,[(i(!0),s(d,null,m(c(R).default,(([e,t])=>(i(),h(c(_),{key:e,"show-arrow":!1,trigger:"hover"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny",onClick:()=>function(e){ie.value=!1,me({chatMessageType:z.EMOJI,msg:e})}(e)},{icon:p((()=>[l("img",{src:t},null,8,P)])),_:2},1032,["onClick"])])),default:p((()=>[y(" "+u(e),1)])),_:2},1024)))),128))])])),_:1},8,["show"])])),default:p((()=>[y(" 表情 ")])),_:1}),g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny",onClick:t[2]||(t[2]=()=>me({chatMessageType:c(z).EMOJI,msg:0}))},{icon:p((()=>[Q])),_:1})])),default:p((()=>[y(" 点赞 ")])),_:1}),g(c(I),{abstract:"",multiple:"",accept:"image/*",onChange:t[3]||(t[3]=e=>pe(e,c(z).IMAGE))},{default:p((()=>[g(c(T),{abstract:""},{default:p((({handleClick:e})=>[g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny",onClick:e},{icon:p((()=>[W])),_:2},1032,["onClick"])])),default:p((()=>[y(" 上传图片 ")])),_:2},1024)])),_:1})])),_:1}),g(c(I),{abstract:"",multiple:"",accept:"video/*,.pdf,.doc.docx,,.zip,.xlsx,.txt",onChange:t[4]||(t[4]=e=>pe(e,c(z).FILE))},{default:p((()=>[g(c(T),{abstract:""},{default:p((({handleClick:e})=>[g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny",onClick:e},{icon:p((()=>[Y])),_:2},1032,["onClick"])])),default:p((()=>[y(" 上传文件 ")])),_:2},1024)])),_:1})])),_:1}),c(re)?(i(),s(d,{key:0},[g(E,v(c(ae),{onComfirm:t[5]||(t[5]=e=>le(c(z).AUDIO,e))}),{trigger:p((()=>[g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny"},{icon:p((()=>[g(c(M),{size:"18",component:c(A)},null,8,["component"])])),_:1})])),default:p((()=>[y(" 语音通话 ")])),_:1})])),_:1},16),g(E,v(c(ae),{onComfirm:t[6]||(t[6]=e=>le(c(z).VIDEO,e))}),{trigger:p((()=>[g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny"},{icon:p((()=>[g(c(M),{size:"20",component:c(V)},null,8,["component"])])),_:1})])),default:p((()=>[y(" 视频会议 ")])),_:1})])),_:1},16)],64)):(i(),s(d,{key:1},[g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny",onClick:t[7]||(t[7]=()=>le(c(z).AUDIO))},{icon:p((()=>[g(c(M),{size:"18",component:c(A)},null,8,["component"])])),_:1})])),default:p((()=>[y(" 语音通话 ")])),_:1}),g(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:p((()=>[g(c(C),{quaternary:"",size:"tiny",onClick:t[8]||(t[8]=()=>le(c(z).VIDEO))},{icon:p((()=>[g(c(M),{size:"20",component:c(V)},null,8,["component"])])),_:1})])),default:p((()=>[y(" 视频通话 ")])),_:1})],64))]),r(l("div",{ref_key:"inputRef",ref:te,class:"input-box",contenteditable:"",onKeydown:ue,onInput:ge},null,544),[[w,c(ne).id]]),l("div",Z,[ee,g(c(C),{type:"primary",round:"",disabled:c(ce),onClick:de},{default:p((()=>[y("发送")])),_:1},8,["disabled"])])],4)),[[w,c(ne).id]])}});export{te as default};
1
+ import{defineComponent as e,ref as n,computed as t,watch as o,withDirectives as r,openBlock as s,createElementBlock as i,normalizeStyle as a,unref as c,createElementVNode as l,toDisplayString as u,createVNode as f,createCommentVNode as d,withCtx as m,Fragment as p,renderList as g,createBlock as h,createTextVNode as y,mergeProps as w,vShow as v}from"vue";import{NIcon as M,NTooltip as _,NPopover as k,NButton as C,NUpload as I,NUploadTrigger as T}from"naive-ui";import E from"./ChatAdd.vue.js";import{useState as b}from"../hooks/useState.js";import{useSession as x}from"../hooks/useSession.js";import{MESSAGE_TYPE as z,AV_STATUS as j}from"../constants/index.js";import"trtc-sdk-v5";import{simplifyMessage as L,base64ToFile as O}from"../utils/index.js";import{emojis as R}from"../utils/emoji.js";import{uploadFileApi as q}from"../api/index.js";import{CloseCircleOutline as D,CallOutline as A,VideocamOutline as V}from"@vicons/ionicons5";import{xor as K,trim as F,cloneDeep as H}from"lodash-es";import{uuidGenerator as J}from"../../../../shared/utils/index.js";const U={key:0,class:"reference-content-box"},G={class:"reference-content"},N=["innerHTML"],S={class:"tool-box"},X=l("i",{class:"chat--iconfont chat--icon-face"},null,-1),B=l("span",null,"默认表情",-1),$={class:"list-box"},P=["src"],Q=l("i",{class:"chat--iconfont chat--icon-good"},null,-1),W=l("i",{class:"chat--iconfont chat--icon-image"},null,-1),Y=l("i",{class:"chat--iconfont chat--icon-folder"},null,-1),Z={class:"btn-box"},ee=l("span",{class:"tip"},"Enter 发送, Ctrl + Enter 换行",-1);var ne=e({__name:"ChatFooter",setup(e){const ne=n(),{state:te,sendMessage:oe}=b(),{isGroupChat:re}=x(te),se=n(!1),ie=n(""),ae=t((()=>({options:te.currentGroupUser,defaultValue:[te.userInfo]}))),ce=t((()=>!ie.value.replace(/(&nbsp;|\s|<br>)+/g,"")));function le(e,n=[]){const t=J(),o=[],r=n.length>0;te.showVideo||te.showMultipleVideo||(r?(o.push(...K(n,[te.userInfo.id])),Object.assign(te.currentAVMsg,{callMode:"call",checkedIds:o,strRoomId:t,chatMessageType:e}),te.showMultipleVideo=!0):oe({content:{chatMessageType:e,msg:"",avStatus:j.IN_CALL}}))}function ue(e){["Enter"].includes(e.key)&&(e.ctrlKey&&(e.preventDefault(),document.execCommand("InsertLineBreak")),function(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}(e)||(e.preventDefault(),pe()))}function fe(){var e;ie.value=(null==(e=ne.value)?void 0:e.innerHTML)||""}async function de(e){const n=new FormData;return n.append("sender",te.userInfo.id),n.append("file",e),await q(n)}async function me(e,n){const{file:t,name:o}=e.file,r=await de(t);if(!r)return console.log("上传失败");ge({chatMessageType:n,msg:n===z.FILE?o:r,url:r})}async function pe(){const{innerHTML:e="",innerText:n="",outerText:t=""}=ne.value||{};if(ce.value)return console.log("请输入内容");let o=z.TEXT,r="";if(e){const t=e.match(/<img[^>]*>/gi),s=(t||[]).length;if(n&&0===s)r=n;else if(n||1!==s){if(o=z.BLEND,r=e,null==t?void 0:t.length)for(let e=0;e<s;e++)if(t[e].includes(`data-type="${z.EMOJI}"`)){const n=t[e].match(/data-msg="(.*?)"/);n&&n.length>1&&(r=r.replace(t[e],`[${n[1]}]`))}else{const n=t[e].match(/src\s*=\s*"([^"]*)"/);if(n&&n.length>1){const e=O(n[1]);if(e){const t=await de(e);r=r.replace(n[1],t||"")}}}}else if(e.includes(z.EMOJI)){o=z.EMOJI;const n=e.match(/data-msg\s*=\s*"([^"]*)"/);n&&(r=n[1])}else{o=z.IMAGE;const n=e.match(/src\s*=\s*"([^"]*)"/);if(n){const e=O(n[1]);if(e){const n=await de(e);n&&(r=n)}}}}else r=F(n);r&&ge({msg:r,chatMessageType:o,origin:"btn"})}async function ge(e){const{chatMessageType:n=z.TEXT,msg:t,url:o,origin:r=""}=e,s={msg:t,chatMessageType:n};n===z.FILE&&(s.fileUrl=o),"btn"===r&&(ne.value.innerHTML="",ie.value=""),te.currentReferenceMsg&&(n===z.TEXT&&(s.referenceContent=H(te.currentReferenceMsg)),te.currentReferenceMsg=null),oe({content:s})}return o((()=>te.currentReferenceMsg),(e=>{var n;e&&(null==(n=ne.value)||n.focus())})),(e,n)=>r((s(),i("section",{class:"chat-footer",style:a({cursor:c(te).id?"default":"not-allowed"})},[c(te).currentReferenceMsg?(s(),i("div",U,[l("div",G,[l("span",null,u(c(te).currentReferenceMsg.senderName)+":",1),l("pre",{innerHTML:c(L)(c(te).currentReferenceMsg.content)},null,8,N)]),f(c(M),{component:c(D),onClick:n[0]||(n[0]=()=>c(te).currentReferenceMsg=null)},null,8,["component"])])):d("v-if",!0),l("div",S,[f(c(_),{"show-arrow":!1},{trigger:m((()=>[f(c(k),{"content-class":"emoji-content",class:"emoji-wrapper",show:se.value,"onUpdate:show":n[1]||(n[1]=e=>se.value=e),placement:"top",trigger:"click","show-arrow":!1,"display-directive":"show",delay:0},{trigger:m((()=>[f(c(C),{quaternary:"",size:"tiny"},{icon:m((()=>[X])),_:1})])),default:m((()=>[B,l("div",$,[(s(!0),i(p,null,g(c(R).default,(([e,n])=>(s(),h(c(_),{key:e,"show-arrow":!1},{trigger:m((()=>[f(c(C),{quaternary:"",size:"tiny",onClick:()=>function(e){se.value=!1,ge({chatMessageType:z.EMOJI,msg:e})}(e)},{icon:m((()=>[l("img",{src:n},null,8,P)])),_:2},1032,["onClick"])])),default:m((()=>[y(" "+u(e),1)])),_:2},1024)))),128))])])),_:1},8,["show"])])),default:m((()=>[y(" 表情 ")])),_:1}),f(c(_),{"show-arrow":!1},{trigger:m((()=>[f(c(C),{quaternary:"",size:"tiny",onClick:n[2]||(n[2]=()=>ge({chatMessageType:c(z).EMOJI,msg:0}))},{icon:m((()=>[Q])),_:1})])),default:m((()=>[y(" 点赞 ")])),_:1}),f(c(I),{abstract:"",multiple:"",accept:"image/*",onChange:n[3]||(n[3]=e=>me(e,c(z).IMAGE))},{default:m((()=>[f(c(T),{abstract:""},{default:m((({handleClick:e})=>[f(c(_),{"show-arrow":!1},{trigger:m((()=>[f(c(C),{quaternary:"",size:"tiny",onClick:e},{icon:m((()=>[W])),_:2},1032,["onClick"])])),default:m((()=>[y(" 上传图片 ")])),_:2},1024)])),_:1})])),_:1}),f(c(I),{abstract:"",multiple:"",accept:"video/*,.pdf,.doc.docx,,.zip,.xlsx,.txt",onChange:n[4]||(n[4]=e=>me(e,c(z).FILE))},{default:m((()=>[f(c(T),{abstract:""},{default:m((({handleClick:e})=>[f(c(_),{"show-arrow":!1},{trigger:m((()=>[f(c(C),{quaternary:"",size:"tiny",onClick:e},{icon:m((()=>[Y])),_:2},1032,["onClick"])])),default:m((()=>[y(" 上传文件 ")])),_:2},1024)])),_:1})])),_:1}),c(re)?(s(),i(p,{key:0},[f(E,w(c(ae),{onComfirm:n[5]||(n[5]=e=>le(c(z).AUDIO,e))}),{trigger:m((()=>[f(c(_),{"show-arrow":!1},{trigger:m((()=>[f(c(C),{quaternary:"",size:"tiny"},{icon:m((()=>[f(c(M),{size:"18",component:c(A)},null,8,["component"])])),_:1})])),default:m((()=>[y(" 语音通话 ")])),_:1})])),_:1},16),f(E,w(c(ae),{onComfirm:n[6]||(n[6]=e=>le(c(z).VIDEO,e))}),{trigger:m((()=>[f(c(_),{"show-arrow":!1},{trigger:m((()=>[f(c(C),{quaternary:"",size:"tiny"},{icon:m((()=>[f(c(M),{size:"20",component:c(V)},null,8,["component"])])),_:1})])),default:m((()=>[y(" 视频会议 ")])),_:1})])),_:1},16)],64)):(s(),i(p,{key:1},[f(c(_),{"show-arrow":!1},{trigger:m((()=>[f(c(C),{quaternary:"",size:"tiny",onClick:n[7]||(n[7]=()=>le(c(z).AUDIO))},{icon:m((()=>[f(c(M),{size:"18",component:c(A)},null,8,["component"])])),_:1})])),default:m((()=>[y(" 语音通话 ")])),_:1}),f(c(_),{"show-arrow":!1},{trigger:m((()=>[f(c(C),{quaternary:"",size:"tiny",onClick:n[8]||(n[8]=()=>le(c(z).VIDEO))},{icon:m((()=>[f(c(M),{size:"20",component:c(V)},null,8,["component"])])),_:1})])),default:m((()=>[y(" 视频通话 ")])),_:1})],64))]),r(l("div",{ref_key:"inputRef",ref:ne,class:"input-box",contenteditable:"",onKeydown:ue,onInput:fe},null,544),[[v,c(te).id]]),l("div",Z,[ee,f(c(C),{type:"primary",round:"",disabled:c(ce),onClick:pe},{default:m((()=>[y("发送")])),_:1},8,["disabled"])])],4)),[[v,c(te).id]])}});export{ne as default};
@@ -345,8 +345,8 @@ declare const _default: import("vue").DefineComponent<{}, {
345
345
  NImage: any;
346
346
  NInput: any;
347
347
  NIcon: any;
348
+ NTooltip: any;
348
349
  SearchOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
349
- OpenOutline: 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<{}>>, {}>;
350
350
  DownloadOutline: 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<{}>>, {}>;
351
351
  downloadFile: typeof import("../utils").downloadFile;
352
352
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
@@ -393,6 +393,7 @@ declare const _default: import("vue").DefineComponent<{}, {
393
393
  startDateDisabled: (ts: number) => boolean;
394
394
  endDateDisabled: (ts: number) => boolean;
395
395
  resetInfo: () => void;
396
+ formatEndTime: () => string;
396
397
  handleCloseTag: (type: "start" | "end" | "member") => void;
397
398
  getPrefixCondition: () => (JSX.Element | null)[];
398
399
  renderLabel: (option: AnyObject) => JSX.Element;
@@ -1 +1 @@
1
- import{defineComponent as e,ref as t,computed as o,openBlock as r,createElementBlock as i,Fragment as a,unref as s,createElementVNode as n,createVNode as l,withCtx as c,toDisplayString as u,createTextVNode as m,normalizeProps as h,guardReactiveProps as d,createCommentVNode as v}from"vue";import{NAvatar as p,NTooltip as f,NButton as g,NIcon as w}from"naive-ui";import{useState as _}from"../hooks/useState.js";import{useSession as b}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import"lodash-es";import"../utils/emoji.js";import"../../../../shared/utils/index.js";import y from"./PersonProfile.vue.js";import j from"./ChatSet.vue.js";import C from"./ChatFile.vue.js";import k from"./ChatRecord.vue.js";import z from"./ChatAdd.vue.js";import{PersonAddOutline as S}from"@vicons/ionicons5";const q={key:0,class:"chat-header box-shadow"},U={class:"chat-header__left"},I={class:"name"},x={class:"chat-header__right"},G=n("i",{class:"chat--iconfont chat--icon-image"},null,-1),P=n("i",{class:"chat--iconfont chat--icon-folder"},null,-1),A=n("i",{class:"chat--iconfont chat--icon-list-search"},null,-1),F=n("i",{class:"chat--iconfont chat--icon-set"},null,-1);var H=e({__name:"ChatHeader",setup(e){const{state:H}=_(),{isGroupChat:R}=b(H),V=t(!1),B=t(!1),D=t("image"),E=t(!1),J=o((()=>{const e=H.currentGroupUser.map((e=>e.id));return R.value?{mode:"join",disabledIds:e}:{mode:"create",defaultValue:H.currentGroupUser}}));function K(e){D.value=e,B.value=!0}return(e,t)=>(r(),i(a,null,[s(H).id?(r(),i("section",q,[n("div",U,[l(y,{"user-id":s(H).currentSessionItem.receiver,disabled:s(R),placement:"bottom"},{trigger:c((()=>[l(s(p),{round:"",size:30,src:s(H).currentSessionItem.avatar},null,8,["src"])])),_:1},8,["user-id","disabled"]),n("span",I,u(s(H).currentSessionItem.name),1)]),n("div",x,[l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny",onClick:t[0]||(t[0]=()=>K("image"))},{icon:c((()=>[G])),_:1})])),default:c((()=>[m(" 图片 ")])),_:1}),l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny",onClick:t[1]||(t[1]=()=>K("file"))},{icon:c((()=>[P])),_:1})])),default:c((()=>[m(" 文件 ")])),_:1}),l(z,h(d(s(J))),{trigger:c((()=>[l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny"},{icon:c((()=>[l(s(w),{size:"18",component:s(S)},null,8,["component"])])),_:1})])),default:c((()=>[m(" 添加成员 ")])),_:1})])),_:1},16),l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny",onClick:t[2]||(t[2]=()=>E.value=!0)},{icon:c((()=>[A])),_:1})])),default:c((()=>[m(" 聊天记录 ")])),_:1}),l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny",onClick:t[3]||(t[3]=()=>V.value=!0)},{icon:c((()=>[F])),_:1})])),default:c((()=>[m(" 聊天设置 ")])),_:1})])])):v("v-if",!0),l(j,{show:V.value,"onUpdate:show":t[4]||(t[4]=e=>V.value=e)},null,8,["show"]),l(C,{show:B.value,"onUpdate:show":t[5]||(t[5]=e=>B.value=e),type:D.value,visible:B.value},null,8,["show","type","visible"]),l(k,{show:E.value,"onUpdate:show":t[6]||(t[6]=e=>E.value=e),visible:E.value},null,8,["show","visible"])],64))}});export{H as default};
1
+ import{defineComponent as e,ref as t,computed as o,openBlock as r,createElementBlock as a,Fragment as i,unref as s,createElementVNode as n,createVNode as l,withCtx as c,toDisplayString as u,createTextVNode as m,normalizeProps as h,guardReactiveProps as d,createCommentVNode as p}from"vue";import{NAvatar as v,NTooltip as f,NButton as w,NIcon as g}from"naive-ui";import{useState as _}from"../hooks/useState.js";import{useSession as b}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import"lodash-es";import"../utils/emoji.js";import"../../../../shared/utils/index.js";import y from"./PersonProfile.vue.js";import j from"./ChatSet.vue.js";import C from"./ChatFile.vue.js";import k from"./ChatRecord.vue.js";import z from"./ChatAdd.vue.js";import{PersonAddOutline as S}from"@vicons/ionicons5";const q={key:0,class:"chat-header box-shadow"},U={class:"chat-header__left"},I={class:"name"},x={class:"chat-header__right"},G=n("i",{class:"chat--iconfont chat--icon-image"},null,-1),P=n("i",{class:"chat--iconfont chat--icon-folder"},null,-1),A=n("i",{class:"chat--iconfont chat--icon-list-search"},null,-1),F=n("i",{class:"chat--iconfont chat--icon-set"},null,-1);var H=e({__name:"ChatHeader",setup(e){const{state:H}=_(),{isGroupChat:R}=b(H),V=t(!1),B=t(!1),D=t("image"),E=t(!1),J=o((()=>{const e=H.currentGroupUser.map((e=>e.id));return R.value?{mode:"join",disabledIds:e}:{mode:"create",defaultValue:H.currentGroupUser}}));function K(e){D.value=e,B.value=!0}return(e,t)=>(r(),a(i,null,[s(H).id?(r(),a("section",q,[n("div",U,[l(y,{"user-id":s(H).currentSessionItem.receiver,disabled:s(R),placement:"bottom"},{trigger:c((()=>[l(s(v),{round:"",size:30,src:s(H).currentSessionItem.avatar},null,8,["src"])])),_:1},8,["user-id","disabled"]),n("span",I,u(s(H).currentSessionItem.name),1)]),n("div",x,[l(s(f),{"show-arrow":!1,placement:"bottom"},{trigger:c((()=>[l(s(w),{quaternary:"",size:"tiny",onClick:t[0]||(t[0]=()=>K("image"))},{icon:c((()=>[G])),_:1})])),default:c((()=>[m(" 图片 ")])),_:1}),l(s(f),{"show-arrow":!1,placement:"bottom"},{trigger:c((()=>[l(s(w),{quaternary:"",size:"tiny",onClick:t[1]||(t[1]=()=>K("file"))},{icon:c((()=>[P])),_:1})])),default:c((()=>[m(" 文件 ")])),_:1}),l(z,h(d(s(J))),{trigger:c((()=>[l(s(f),{"show-arrow":!1,placement:"bottom"},{trigger:c((()=>[l(s(w),{quaternary:"",size:"tiny"},{icon:c((()=>[l(s(g),{size:"18",component:s(S)},null,8,["component"])])),_:1})])),default:c((()=>[m(" 添加成员 ")])),_:1})])),_:1},16),l(s(f),{"show-arrow":!1,placement:"bottom"},{trigger:c((()=>[l(s(w),{quaternary:"",size:"tiny",onClick:t[2]||(t[2]=()=>E.value=!0)},{icon:c((()=>[A])),_:1})])),default:c((()=>[m(" 聊天记录 ")])),_:1}),l(s(f),{"show-arrow":!1,placement:"bottom"},{trigger:c((()=>[l(s(w),{quaternary:"",size:"tiny",onClick:t[3]||(t[3]=()=>V.value=!0)},{icon:c((()=>[F])),_:1})])),default:c((()=>[m(" 聊天设置 ")])),_:1})])])):p("v-if",!0),l(j,{show:V.value,"onUpdate:show":t[4]||(t[4]=e=>V.value=e)},null,8,["show"]),l(C,{show:B.value,"onUpdate:show":t[5]||(t[5]=e=>B.value=e),type:D.value,visible:B.value},null,8,["show","type","visible"]),l(k,{show:E.value,"onUpdate:show":t[6]||(t[6]=e=>E.value=e),visible:E.value},null,8,["show","visible"])],64))}});export{H as default};
@@ -1 +1 @@
1
- import{defineComponent as e,ref as t,computed as n,watch as s,openBlock as o,createElementBlock as i,normalizeClass as r,unref as a,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 k,NIcon as _,NSpace as x,NButtonGroup as S,NButton as w,NTooltip as I}from"naive-ui";import{format as C}from"date-fns";import{getHistoryRecordApi as L,readMessageApi as j}from"../api/index.js";import{useState as E}from"../hooks/useState.js";import{useSession as b}from"../hooks/useSession.js";import{MESSAGE_TYPE as z}from"../constants/index.js";import"trtc-sdk-v5";import{isAudioOrVideoMessage as A,simplifyMessage as H,getAVTime as O,downloadFile as D}from"../utils/index.js";import{first as R,last as N}from"lodash-es";import P from"./PersonProfile.vue.js";import q from"./MessageTemplate.vue.js";import{emojis as B}from"../utils/emoji.js";import U from"./ContextMenu.js";import"../../../../shared/utils/index.js";import"@vueuse/core";import"@vue/shared";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import{CallOutline as F,VideocamOutline as G,DocumentSharp as J,ChatbubbleEllipsesOutline as K,EllipsisHorizontal as X,ArrowDownSharp as Y}from"@vicons/ionicons5";import{useScrollLoading as $}from"../../../../shared/hooks/useScrollLoading.js";const Q={key:0,class:"time"},V={key:2,class:"message-box"},W={key:0,class:"content-box"},Z={class:"name-box"},ee=["data-time"],te=["onContextmenu"],ne={key:0,class:"reference-content"},se=["innerHTML"],oe=["innerHTML"],ie=["innerHTML"],re=["src"],ae={style:{"margin-left":"8px"}},le={class:"size"};var ce=e({__name:"ChatMain",setup(e){const ce=t(),{state:ue,setMsgList:me}=E(),{setCurrentSessionItem:pe,isGroupChat:de}=b(ue),ve=t(),fe=t(!1),ge=t({left:0,top:0}),ye=t(),he={page:0,hasMore:!0,lastSendTime:C(new Date,"yyyy-MM-dd HH:mm:ss")},Te=n((()=>({"--c-tip-top":de.value?"1px":"-20px","--c-tip-gap":de.value?"10px":"0px"})));function Me({nodes:e}){var t,n;const{_ctx:s}=null==(t=e.download)?void 0:t.children,o=s?null==(n=null==s?void 0:s.proxy)?void 0:n.previewSrc:"";return[e.prev,e.next,e.rotateCounterclockwise,e.rotateClockwise,e.resizeToOriginalSize,e.zoomOut,e.zoomIn,c(I,null,{trigger:()=>c(_,{style:"cursor: pointer",color:"rgba(255, 255, 255, 0.75",size:24,component:Y,onClick:()=>o&&D(o,"img")},null),default:()=>"下载"}),e.close]}async function ke(){try{if(!he.hasMore)return;he.page++;const e=await L({sessionKey:ue.currentSessionItem.sessionKey,page:he.page,lastSendTime:he.lastSendTime});if(!Array.isArray(e)||0===e.length)return he.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");const t=R(e).id;he.lastSendTime=N(e).sendTime,me(he.page>1?[...e,...ue.msgList]:e),1===he.page&&ue.currentSessionItem.unreadNum&&(await j({chatType:ue.currentSessionItem.chatType,messageIdSet:[t],receiver:ue.userInfo.id,sender:ue.currentSessionItem.receiver}),pe({unreadNum:0}))}catch(e){console.log(e)}}async function _e(e,t){ye.value=t,async function(e){var t,n,s,o,i,r;fe.value=!0,await h();const{clientX:a,clientY:l}=e,{width:c=0,height:u=0,left:m=0,top:p=0}=(null==(t=ce.value)?void 0:t.getBoundingClientRect())||{},d=null!=(o=null==(s=null==(n=ve.value)?void 0:n.$el)?void 0:s.getBoundingClientRect().height)?o:220,v=null!=(r=null==(i=ce.value)?void 0:i.scrollTop)?r:0,f=5,g={};a<=m+c/2?g.left=a-m+f+"px":g.right=m+c-a-f+"px";l-p<d/2?g.top=v+f+"px":p+u-l<=d/2?g.bottom=Math.abs(v)+f+"px":g.top=v+l-p-d/2+"px";ge.value=g}(e)}function xe(e){const{chatMessageType:t,messageTemplate:n}=e.content;return t!==z.TEMPLATE||!!n}function Se(e,t){var n,s;const{chatMessageType:o,messageTemplate:i}=e.content;if(o===z.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 we(e){var t,n;const{chatMessageType:s,messageTemplate:o}=e;return s===z.TEMPLATE&&3==(null==(n=null==(t=null==o?void 0:o.setting)?void 0:t.style)?void 0:n.id)}function Ie(e,t){var n;const s=new Date(e.sendTime).getTime(),o=null==(n=ue.msgList[t+1])?void 0:n.sendTime;if(o){return s-new Date(o).getTime()>3e5}return!0}function Ce(e){ue.currentReferenceMsg=e,Object.assign(ue.currentReferenceMsg,{chatType:ue.currentSessionItem.chatType,receiver:ue.currentSessionItem.receiver,receiverAvatar:ue.currentSessionItem.avatar,receiverName:ue.currentSessionItem.name})}function Le(e,t){"reply"===e&&Ce(t)}return $(ce,(()=>{ke()}),"top",(()=>{fe.value=!1})),s((()=>ue.id),(e=>{e&&(ue.currentReferenceMsg=null,Object.assign(he,{page:0,hasMore:!0,lastSendTime:C(new Date,"yyyy-MM-dd HH:mm:ss")}),ke())}),{immediate:!0}),s((()=>ue.isAppendMsg),(e=>{e&&(me([...ue.msgList,ue.currentMsg]),ue.isAppendMsg=!1,async function(){var e,t,n;const s=null!=(t=null==(e=ce.value)?void 0:e.scrollHeight)?t:0;null==(n=ce.value)||n.scrollTo({top:s,behavior:"auto"})}())}),{immediate:!0}),(e,t)=>(o(),i("div",{class:r(["chat-main",{"home-bg":!a(ue).id}]),ref_key:"chatMainRef",ref:ce,style:l(a(Te))},[c(a(T),{"show-toolbar-tooltip":"","render-toolbar":Me},{default:u((()=>[(o(!0),i(m,null,p(a(ue).msgList,((e,t)=>(o(),i(m,{key:e.id},[xe(e)?(o(),i("div",{key:0,class:r(["message-item",{"message-item--mine":e.sender==a(ue).userInfo.id}])},[Ie(e,t)?(o(),i("p",Q,d(e.__sendTime),1)):v("v-if",!0),Se(e,"system")?(o(),f(q,{key:1,data:e},null,8,["data"])):(o(),i("div",V,[c(P,{"user-id":e.sender,placement:e.sender==a(ue).userInfo.id?"left":"right"},{trigger:u((()=>[c(a(M),{round:"",size:38,src:e.senderAvatar},null,8,["src"])])),_:2},1032,["user-id","placement"]),e.content?(o(),i("div",W,[g("div",Z,[g("span",{class:"name","data-time":e.__time},d(a(de)?e.senderName:""),9,ee)]),g("div",{class:r(["content",{emoji:e.content.chatMessageType===a(z).EMOJI,template:e.content.chatMessageType===a(z).TEMPLATE,"template--3":we(e.content),"audio-video":a(A)(e.content),file:e.content.chatMessageType===a(z).FILE}]),onContextmenu:y((t=>_e(t,e.id)),["prevent"])},[e.content.chatMessageType===a(z).TEXT?(o(),i(m,{key:0},[e.content.referenceContent?(o(),i("div",ne,[g("span",null,d(e.content.referenceContent.senderName)+":",1),g("pre",{innerHTML:a(H)(e.content.referenceContent.content)},null,8,se)])):v("v-if",!0),g("pre",{innerHTML:e.__content},null,8,oe)],64)):v("v-if",!0),e.content.chatMessageType===a(z).BLEND?(o(),i("pre",{key:1,innerHTML:e.__content},null,8,ie)):v("v-if",!0),e.content.chatMessageType===a(z).EMOJI?(o(),i("img",{key:2,src:a(B).findEmoji(e.__content)},null,8,re)):v("v-if",!0),Se(e,"template")?(o(),f(q,{key:3,data:e},null,8,["data"])):v("v-if",!0),e.content.chatMessageType===a(z).IMAGE?(o(),f(a(k),{key:4,width:"240",src:e.__content},null,8,["src"])):v("v-if",!0),a(A)(e.content)?(o(),i(m,{key:5},[c(a(_),{class:r({"is-audio":e.content.chatMessageType===a(z).AUDIO}),component:e.content.chatMessageType===a(z).AUDIO?a(F):a(G)},null,8,["class","component"]),g("span",ae,d(a(O)(e.__content)),1)],64)):v("v-if",!0),e.content.chatMessageType===a(z).FILE?(o(),f(a(x),{key:6,"wrap-item":!1},{default:u((()=>[c(a(_),{class:"icon-file",size:"40",component:a(J)},null,8,["component"]),c(a(x),{"wrap-item":!1,vertical:"",justify:"space-between",style:{"row-gap":"0"}},{default:u((()=>[g("span",null,d(e.__content),1),g("span",le,d(e.__size),1)])),_:2},1024)])),_:2},1024)):v("v-if",!0),c(a(S),{class:"quick-menu"},{default:u((()=>[a(A)(e.content)?v("v-if",!0):(o(),i(m,{key:0},[v(' <n-button quaternary size="tiny">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<template #icon>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<i class="chat--iconfont chat--icon-face" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t\t\t\t\t\t</n-button> '),c(a(w),{quaternary:"",size:"tiny",onClick:()=>Ce(e)},{icon:u((()=>[c(a(_),{size:"17",component:a(K)},null,8,["component"])])),_:2},1032,["onClick"])],64)),c(a(w),{quaternary:"",size:"tiny",onClick:t=>_e(t,e.id)},{icon:u((()=>[c(a(_),{size:"14",component:a(X)},null,8,["component"])])),_:2},1032,["onClick"])])),_:2},1024)],42,te)])):v("v-if",!0)]))],2)):v("v-if",!0)],64)))),128))])),_:1}),c(a(U),{ref_key:"contextmenuRef",ref:ve,show:fe.value,"onUpdate:show":t[0]||(t[0]=e=>fe.value=e),position:ge.value,"msg-id":ye.value,onSelect:Le},null,8,["show","position","msg-id"])],6))}});export{ce as default};
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 k,NIcon as _,NSpace as x,NButtonGroup as w,NButton as S,NTooltip as I}from"naive-ui";import{format as C}from"date-fns";import{getHistoryRecordApi as L,readMessageApi as j}from"../api/index.js";import{useState as E}from"../hooks/useState.js";import{useSession as b}from"../hooks/useSession.js";import{MESSAGE_TYPE as z}from"../constants/index.js";import"trtc-sdk-v5";import{isAudioOrVideoMessage as A,simplifyMessage as H,getAVTime as O,downloadFile as D}from"../utils/index.js";import{first as R,last as N}from"lodash-es";import P from"./PersonProfile.vue.js";import q from"./MessageTemplate.vue.js";import{emojis as B}from"../utils/emoji.js";import U from"./ContextMenu.js";import"../../../../shared/utils/index.js";import"@vueuse/core";import"@vue/shared";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import{CallOutline as F,VideocamOutline as G,DocumentSharp as J,ChatbubbleEllipsesOutline as K,EllipsisHorizontal as X,ArrowDownSharp as Y}from"@vicons/ionicons5";import{useScrollLoading as $}from"../../../../shared/hooks/useScrollLoading.js";const Q={key:0,class:"time"},V={key:2,class:"message-box"},W={key:0,class:"content-box"},Z={class:"name-box"},ee=["data-time"],te=["onContextmenu"],ne={key:0,class:"reference-content"},se=["innerHTML"],oe=["innerHTML"],ie=["innerHTML"],ae=["src"],re={style:{"margin-left":"8px"}},le={class:"size"};var ce=e({__name:"ChatMain",setup(e){const ce=t(),{state:ue,setMsgList:me}=E(),{setCurrentSessionItem:pe,isGroupChat:de}=b(ue),ve=t(),fe=t(!1),ge=t({left:0,top:0}),ye=t(),he={page:0,hasMore:!0,lastSendTime:C(new Date,"yyyy-MM-dd HH:mm:ss")},Te=n((()=>({"--c-tip-top":de.value?"1px":"-20px","--c-tip-gap":de.value?"10px":"0px"})));function Me({nodes:e}){var t,n;const{_ctx:s}=null==(t=e.download)?void 0:t.children,o=s?null==(n=null==s?void 0:s.proxy)?void 0:n.previewSrc:"";return[e.prev,e.next,e.rotateCounterclockwise,e.rotateClockwise,e.resizeToOriginalSize,e.zoomOut,e.zoomIn,c(I,null,{trigger:()=>c(_,{style:"cursor: pointer",color:"rgba(255, 255, 255, 0.75",size:24,component:Y,onClick:()=>o&&D(o,"img")},null),default:()=>"下载"}),e.close]}async function ke(){try{if(!he.hasMore)return;he.page++;const e=await L({sessionKey:ue.currentSessionItem.sessionKey,page:he.page,lastSendTime:he.lastSendTime});if(!Array.isArray(e)||0===e.length)return he.hasMore=!1,console.log("接口返回不是一个数组,或者没有更多消息了");const t=R(e).id;he.lastSendTime=N(e).sendTime,me(he.page>1?[...e,...ue.msgList]:e),1===he.page&&ue.currentSessionItem.unreadNum&&(await j({chatType:ue.currentSessionItem.chatType,messageIdSet:[t],receiver:ue.userInfo.id,sender:ue.currentSessionItem.receiver}),pe({unreadNum:0}))}catch(e){console.log(e)}}async function _e(e,t){ye.value=t,async function(e){var t,n,s,o,i,a;fe.value=!0,await h();const{clientX:r,clientY:l}=e,{width:c=0,height:u=0,left:m=0,top:p=0}=(null==(t=ce.value)?void 0:t.getBoundingClientRect())||{},d=null!=(o=null==(s=null==(n=ve.value)?void 0:n.$el)?void 0:s.getBoundingClientRect().height)?o:220,v=null!=(a=null==(i=ce.value)?void 0:i.scrollTop)?a:0,f=5,g={};r<=m+c/2?g.left=r-m+f+"px":g.right=m+c-r-f+"px";l-p<d/2?g.top=v+f+"px":p+u-l<=d/2?g.bottom=Math.abs(v)+f+"px":g.top=v+l-p-d/2+"px";ge.value=g}(e)}function xe(e){const{chatMessageType:t,messageTemplate:n}=e.content;return t!==z.TEMPLATE||!!n}function we(e,t){var n,s;const{chatMessageType:o,messageTemplate:i}=e.content;if(o===z.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 Se(e){var t,n;const{chatMessageType:s,messageTemplate:o}=e;return s===z.TEMPLATE&&3==(null==(n=null==(t=null==o?void 0:o.setting)?void 0:t.style)?void 0:n.id)}function Ie(e,t){var n;const s=new Date(e.sendTime).getTime(),o=null==(n=ue.msgList[t+1])?void 0:n.sendTime;if(o){return s-new Date(o).getTime()>3e5}return!0}function Ce(e){ue.currentReferenceMsg=e,Object.assign(ue.currentReferenceMsg,{chatType:ue.currentSessionItem.chatType,receiver:ue.currentSessionItem.receiver,receiverAvatar:ue.currentSessionItem.avatar,receiverName:ue.currentSessionItem.name})}function Le(e,t){"reply"===e&&Ce(t)}return $(ce,(()=>{ke()}),"top",(()=>{fe.value=!1})),s((()=>ue.id),(e=>{e&&(ue.currentReferenceMsg=null,Object.assign(he,{page:0,hasMore:!0,lastSendTime:C(new Date,"yyyy-MM-dd HH:mm:ss")}),ke())}),{immediate:!0}),s((()=>ue.isAppendMsg),(e=>{e&&(me([...ue.msgList,ue.currentMsg]),async function(){var e,t,n;await h();const s=null!=(t=null==(e=ce.value)?void 0:e.scrollHeight)?t:0;null==(n=ce.value)||n.scrollTo({top:s,behavior:"auto"})}(),ue.isAppendMsg=!1)}),{immediate:!0}),(e,t)=>(o(),i("div",{class:a(["chat-main",{"home-bg":!r(ue).id}]),ref_key:"chatMainRef",ref:ce,style:l(r(Te))},[c(r(T),{"show-toolbar-tooltip":"","render-toolbar":Me},{default:u((()=>[(o(!0),i(m,null,p(r(ue).msgList,((e,t)=>(o(),i(m,{key:e.id},[xe(e)?(o(),i("div",{key:0,class:a(["message-item",{"message-item--mine":e.sender==r(ue).userInfo.id}])},[Ie(e,t)?(o(),i("p",Q,d(e.__sendTime),1)):v("v-if",!0),we(e,"system")?(o(),f(q,{key:1,data:e},null,8,["data"])):(o(),i("div",V,[c(P,{"user-id":e.sender,placement:e.sender==r(ue).userInfo.id?"left":"right"},{trigger:u((()=>[c(r(M),{round:"",size:38,src:e.senderAvatar},null,8,["src"])])),_:2},1032,["user-id","placement"]),e.content?(o(),i("div",W,[g("div",Z,[g("span",{class:"name","data-time":e.__time},d(r(de)?e.senderName:""),9,ee)]),g("div",{class:a(["content",{emoji:e.content.chatMessageType===r(z).EMOJI,template:e.content.chatMessageType===r(z).TEMPLATE,"template--3":Se(e.content),"audio-video":r(A)(e.content),file:e.content.chatMessageType===r(z).FILE}]),onContextmenu:y((t=>_e(t,e.id)),["prevent"])},[e.content.chatMessageType===r(z).TEXT?(o(),i(m,{key:0},[e.content.referenceContent?(o(),i("div",ne,[g("span",null,d(e.content.referenceContent.senderName)+":",1),g("pre",{innerHTML:r(H)(e.content.referenceContent.content)},null,8,se)])):v("v-if",!0),g("pre",{innerHTML:e.__content},null,8,oe)],64)):v("v-if",!0),e.content.chatMessageType===r(z).BLEND?(o(),i("pre",{key:1,innerHTML:e.__content},null,8,ie)):v("v-if",!0),e.content.chatMessageType===r(z).EMOJI?(o(),i("img",{key:2,src:r(B).findEmoji(e.__content)},null,8,ae)):v("v-if",!0),we(e,"template")?(o(),f(q,{key:3,data:e},null,8,["data"])):v("v-if",!0),e.content.chatMessageType===r(z).IMAGE?(o(),f(r(k),{key:4,width:"240",src:e.__content},null,8,["src"])):v("v-if",!0),r(A)(e.content)?(o(),i(m,{key:5},[c(r(_),{class:a({"is-audio":e.content.chatMessageType===r(z).AUDIO}),component:e.content.chatMessageType===r(z).AUDIO?r(F):r(G)},null,8,["class","component"]),g("span",re,d(r(O)(e.__content)),1)],64)):v("v-if",!0),e.content.chatMessageType===r(z).FILE?(o(),f(r(x),{key:6,"wrap-item":!1},{default:u((()=>[c(r(_),{class:"icon-file",size:"40",component:r(J)},null,8,["component"]),c(r(x),{"wrap-item":!1,vertical:"",justify:"space-between",style:{"row-gap":"0"}},{default:u((()=>[g("span",null,d(e.__content),1),g("span",le,d(e.__size),1)])),_:2},1024)])),_:2},1024)):v("v-if",!0),c(r(w),{class:"quick-menu"},{default:u((()=>[r(A)(e.content)?v("v-if",!0):(o(),i(m,{key:0},[v(' <n-button quaternary size="tiny">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<template #icon>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<i class="chat--iconfont chat--icon-face" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t\t\t\t\t\t</n-button> '),c(r(S),{quaternary:"",size:"tiny",onClick:()=>Ce(e)},{icon:u((()=>[c(r(_),{size:"17",component:r(K)},null,8,["component"])])),_:2},1032,["onClick"])],64)),c(r(S),{quaternary:"",size:"tiny",onClick:t=>_e(t,e.id)},{icon:u((()=>[c(r(_),{size:"14",component:r(X)},null,8,["component"])])),_:2},1032,["onClick"])])),_:2},1024)],42,te)])):v("v-if",!0)]))],2)):v("v-if",!0)],64)))),128))])),_:1}),c(r(U),{ref_key:"contextmenuRef",ref:ve,show:fe.value,"onUpdate:show":t[0]||(t[0]=e=>fe.value=e),position:ge.value,"msg-id":ye.value,onSelect:Le},null,8,["show","position","msg-id"])],6))}});export{ce as default};
@@ -34,6 +34,7 @@ declare const _default: import("vue").DefineComponent<{
34
34
  startDateDisabled: (ts: number) => boolean;
35
35
  endDateDisabled: (ts: number) => boolean;
36
36
  resetInfo: () => void;
37
+ formatEndTime: () => string;
37
38
  handleCloseTag: (type: 'member' | 'start' | 'end') => void;
38
39
  getPrefixCondition: () => (JSX.Element | null)[];
39
40
  renderLabel: (option: AnyObject) => JSX.Element;
@@ -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 j}from"@vicons/ionicons5";import{useState as w}from"../hooks/useState.js";import{transformMessage as I,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"../../../../shared/utils/index.js";import"@vue/shared";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import{useScrollLoading as D}from"../../../../shared/hooks/useScrollLoading.js";import{emojis as z}from"../utils/emoji.js";const G={class:"iho-chat-dialog__header"},B=n("span",{class:"left"},"聊天记录",-1),K={class:"center"},N={class:"iho-chat-dialog__content iho-chat-record-wrapper"},O={class:"chat-record-box"},R={class:"msg-box"},J={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:"tip"},re={class:"time-target__item"},oe=n("span",null,"结束:",-1),ne={class:"tip"};var ie=e({__name:"ChatRecord",props:{visible:{type:Boolean}},setup(e){const ie=e,ue={color:"#fff",textColor:"#666"},{state:ce}=w(),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;let r="";switch(e.content.chatMessageType){case L.TEXT:case L.BLEND:r=I(e.content);break;case L.TEMPLATE:r=null==(t=null==(l=null==(a=e.content)?void 0:a.messageTemplate)?void 0:l.setting)?void 0:t.title;break;default:r=null==(s=e.content)?void 0:s.msg}e.__content=r})),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 D(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,[B,n("div",K,[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",N,[i(r(b),null,{default:o((()=>[(t(),s(c((()=>[i(x,{component:j,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",O,[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",R,[n("div",J,[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(z).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 j}from"@vicons/ionicons5";import{useState as w}from"../hooks/useState.js";import{transformMessage as I,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"../../../../shared/utils/index.js";import"@vue/shared";import"@vueuse/shared";import"../../../../shared/hooks/selectHooks/useSearchContent.js";import{useScrollLoading as D}from"../../../../shared/hooks/useScrollLoading.js";import{emojis as z}from"../utils/emoji.js";const G={class:"iho-chat-dialog__header"},B=n("span",{class:"left"},"聊天记录",-1),K={class:"center"},N={class:"iho-chat-dialog__content iho-chat-record-wrapper"},O={class:"chat-record-box"},R={class:"msg-box"},J={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:"tip"},re={class:"time-target__item"},oe=n("span",null,"结束:",-1),ne={class:"tip"};var ie=e({__name:"ChatRecord",props:{visible:{type:Boolean}},setup(e){const ie=e,ue={color:"#fff",textColor:"#666"},{state:ce}=w(),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:Me(),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;let r="";switch(e.content.chatMessageType){case L.TEXT:case L.BLEND:r=I(e.content);break;case L.TEMPLATE:r=null==(t=null==(l=null==(a=e.content)?void 0:a.messageTemplate)?void 0:l.setting)?void 0:t.title;break;default:r=null==(s=e.content)?void 0:s.msg}e.__content=r})),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:Me()||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(){return ge.value?ge.value+" 23:59:59":""}function xe(e){switch(e){case"member":pe.value=[];break;case"start":fe.value=null;break;case"end":ge.value=null}}function je(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 D(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,[B,n("div",K,[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",N,[i(r(b),null,{default:o((()=>[(t(),s(c((()=>[i(x,{component:j,size:18,color:"#6666"},null),pe.value.length>0?i(M,{closable:!0,bordered:!1,color:ue,onClose:()=>xe("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:()=>xe("start")},{default:()=>[f("起始时间: "),fe.value]}):null,ge.value?i(M,{closable:!0,bordered:!1,color:ue,onClose:()=>xe("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",O,[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",R,[n("div",J,[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,src:e.__content},null,8,X)):e.content.chatMessageType===r(L).EMOJI?(t(),d("img",{key:1,class:"emoji",src:r(z).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":je,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]=()=>xe("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]=()=>xe("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};