cnhis-design-vue 3.2.7-beta.3 → 3.2.7-beta.30

Sign up to get free protection for your applications and to get access to all the features.
Files changed (201) hide show
  1. package/README.md +87 -87
  2. package/es/components/base-search/index.d.ts +2 -0
  3. package/es/components/base-search/src/index.vue.d.ts +2 -0
  4. package/es/components/button-print/index.d.ts +27 -0
  5. package/es/components/button-print/src/ButtonPrint.vue.d.ts +27 -0
  6. package/es/components/button-print/src/ButtonPrint.vue2.js +1 -1
  7. package/es/components/button-print/src/components/NewPrintComponent.vue.d.ts +1 -0
  8. package/es/components/button-print/src/components/NewPrintComponent.vue2.js +1 -1
  9. package/es/components/button-print/src/components/OldPrintComponent.vue.d.ts +9 -0
  10. package/es/components/button-print/src/components/OldPrintComponent.vue2.js +1 -1
  11. package/es/components/button-print/style/index.css +1 -1
  12. package/es/components/callback/src/components/render/popupMaps.d.ts +27 -0
  13. package/es/components/classification/index.d.ts +60 -5
  14. package/es/components/classification/src/components/search-filter/index.vue.d.ts +60 -5
  15. package/es/components/classification/src/components/set-classification/index.vue.d.ts +60 -5
  16. package/es/components/classification/src/index.vue.d.ts +60 -5
  17. package/es/components/date-picker/index.d.ts +13 -0
  18. package/es/components/date-picker/src/DatePicker.vue.d.ts +13 -0
  19. package/es/components/date-picker/src/DatePicker.vue2.js +1 -1
  20. package/es/components/fabric-chart/src/constants/index.d.ts +3 -1
  21. package/es/components/fabric-chart/src/constants/index.js +1 -1
  22. package/es/components/fabric-chart/src/hooks/birthProcess/useBirthProcess.js +1 -1
  23. package/es/components/fabric-chart/src/hooks/birthProcess/useBirthProcessChart.d.ts +8 -3
  24. package/es/components/fabric-chart/src/hooks/birthProcess/useBirthProcessChart.js +1 -1
  25. package/es/components/fabric-chart/src/hooks/electrocardiogram/useElectrocardiogramChart.d.ts +9 -6
  26. package/es/components/fabric-chart/src/hooks/electrocardiogram/useElectrocardiogramChart.js +1 -1
  27. package/es/components/fabric-chart/src/hooks/electrocardiogram/useMeasureInstrument.js +1 -1
  28. package/es/components/fabric-chart/src/hooks/newBirthProcess/useNewBirthProcess.js +1 -1
  29. package/es/components/fabric-chart/src/hooks/newBirthProcess/useNewBirthProcessChart.d.ts +0 -2
  30. package/es/components/fabric-chart/src/hooks/newBirthProcess/useNewBirthProcessChart.js +1 -1
  31. package/es/components/fabric-chart/src/hooks/surgicalAnesthesia/useSurgicalAnesthesiaChart.d.ts +8 -3
  32. package/es/components/fabric-chart/src/hooks/surgicalAnesthesia/useSurgicalAnesthesiaChart.js +1 -1
  33. package/es/components/fabric-chart/src/hooks/temperature/useCenter.js +1 -1
  34. package/es/components/fabric-chart/src/hooks/temperature/useLeft.js +1 -1
  35. package/es/components/fabric-chart/src/hooks/temperature/useTemperatureChart.d.ts +8 -3
  36. package/es/components/fabric-chart/src/hooks/temperature/useTemperatureChart.js +1 -1
  37. package/es/components/fabric-chart/src/hooks/useScaleColumn.d.ts +1 -1
  38. package/es/components/fabric-chart/src/hooks/useScaleColumn.js +1 -1
  39. package/es/components/fabric-chart/src/interface.d.ts +11 -1
  40. package/es/components/field-set/src/FieldColor.vue.d.ts +26 -0
  41. package/es/components/field-set/src/FieldSet.vue.d.ts +1 -1
  42. package/es/components/field-set/src/components/condition.vue.d.ts +13 -0
  43. package/es/components/field-set/src/components/edit-dialog.vue.d.ts +26 -0
  44. package/es/components/field-set/src/components/edit-filter.vue.d.ts +13 -0
  45. package/es/components/form-config/index.d.ts +40 -3
  46. package/es/components/form-config/src/FormConfig.vue.d.ts +40 -3
  47. package/es/components/form-config/src/components/FormConfigCreator.vue.d.ts +14 -0
  48. package/es/components/form-config/src/components/FormConfigEdit.vue.d.ts +23 -3
  49. package/es/components/form-config/src/components/FormConfigEdit.vue2.js +1 -1
  50. package/es/components/form-render/index.d.ts +14 -0
  51. package/es/components/form-render/src/FormRender.vue.d.ts +14 -0
  52. package/es/components/form-render/src/FormRender.vue2.js +1 -1
  53. package/es/components/form-render/src/FormRenderWrapper.vue.d.ts +14 -0
  54. package/es/components/form-render/src/components/renderer/formItem.d.ts +9 -0
  55. package/es/components/form-render/src/components/renderer/formItem.js +1 -1
  56. package/es/components/form-render/src/components/renderer/lineBar/FormCollapse.vue.d.ts +1 -0
  57. package/es/components/form-render/src/components/renderer/lineBar/index.d.ts +1 -0
  58. package/es/components/form-render/src/components/tooltipMessage.vue2.js +1 -1
  59. package/es/components/form-render/src/hooks/useFieldListAdaptor.js +1 -1
  60. package/es/components/form-render/src/hooks/useFieldNormalize.d.ts +2 -0
  61. package/es/components/form-render/src/hooks/useFormValidator.js +1 -1
  62. package/es/components/form-render/src/types/fieldItem.d.ts +3 -1
  63. package/es/components/form-render/src/types/index.d.ts +2 -1
  64. package/es/components/form-render/src/utils/business.js +1 -1
  65. package/es/components/form-render/src/utils/schema.d.ts +1 -1
  66. package/es/components/form-render/src/utils/schema.js +1 -1
  67. package/es/components/iho-chat/index.d.ts +300 -75
  68. package/es/components/iho-chat/src/Index.vue.d.ts +300 -75
  69. package/es/components/iho-chat/src/Index.vue2.js +1 -1
  70. package/es/components/iho-chat/src/components/ChatAdd.vue.d.ts +35 -13
  71. package/es/components/iho-chat/src/components/ChatAdd.vue2.js +1 -1
  72. package/es/components/iho-chat/src/components/ChatFooter.vue.d.ts +41 -14
  73. package/es/components/iho-chat/src/components/ChatFooter.vue2.js +1 -1
  74. package/es/components/iho-chat/src/components/ChatHeader.vue.d.ts +50 -14
  75. package/es/components/iho-chat/src/components/ChatHeader.vue2.js +1 -1
  76. package/es/components/iho-chat/src/components/ChatMain.vue.d.ts +24 -4
  77. package/es/components/iho-chat/src/components/ChatMain.vue2.js +1 -1
  78. package/es/components/iho-chat/src/components/ChatRecord.vue.d.ts +13 -0
  79. package/es/components/iho-chat/src/components/ChatRecord.vue2.js +1 -1
  80. package/es/components/iho-chat/src/components/ChatSearch.vue.d.ts +60 -11
  81. package/es/components/iho-chat/src/components/ChatSearch.vue2.js +1 -1
  82. package/es/components/iho-chat/src/components/ChatSet.vue2.js +1 -1
  83. package/es/components/iho-chat/src/components/ContextMenu.d.ts +15 -2
  84. package/es/components/iho-chat/src/components/ContextMenu.js +1 -1
  85. package/es/components/iho-chat/src/components/MultipleVideo.vue.d.ts +62 -24
  86. package/es/components/iho-chat/src/components/MultipleVideo.vue2.js +1 -1
  87. package/es/components/iho-chat/src/components/PersonProfile.vue2.js +1 -1
  88. package/es/components/iho-chat/src/components/SiderList.vue.d.ts +1 -0
  89. package/es/components/iho-chat/src/components/SiderList.vue2.js +1 -1
  90. package/es/components/iho-chat/src/components/Video.vue.d.ts +14 -2
  91. package/es/components/iho-chat/src/components/Video.vue2.js +1 -1
  92. package/es/components/iho-chat/src/hooks/useScrollLoading.d.ts +1 -1
  93. package/es/components/iho-chat/src/hooks/useScrollLoading.js +1 -1
  94. package/es/components/iho-chat/src/hooks/useSearchUserList.d.ts +11 -0
  95. package/es/components/iho-chat/src/hooks/useSearchUserList.js +1 -0
  96. package/es/components/iho-chat/src/hooks/useSession.js +1 -1
  97. package/es/components/iho-chat/src/hooks/useState.js +1 -1
  98. package/es/components/iho-chat/src/hooks/useVideo.d.ts +11 -0
  99. package/es/components/iho-chat/src/hooks/useVideo.js +1 -1
  100. package/es/components/iho-chat/src/types/index.d.ts +0 -1
  101. package/es/components/iho-chat/src/utils/index.js +1 -1
  102. package/es/components/iho-chat/style/index.css +1 -1
  103. package/es/components/iho-table/index.d.ts +13 -0
  104. package/es/components/iho-table/src/IhoTable.vue.d.ts +13 -0
  105. package/es/components/iho-table/src/IhoTable.vue2.js +1 -1
  106. package/es/components/iho-table/src/plugins/filterDaterangeRenderPlugin/filter.vue.d.ts +13 -0
  107. package/es/components/iho-table/src/plugins/headerPlugin/index.d.ts +1 -0
  108. package/es/components/iho-table/src/plugins/headerPlugin/index.js +1 -0
  109. package/es/components/iho-table/src/plugins/headerPlugin/tooltipMessage.vue.d.ts +13 -0
  110. package/es/components/iho-table/src/plugins/headerPlugin/tooltipMessage.vue.js +1 -0
  111. package/es/components/iho-table/src/plugins/headerPlugin/tooltipMessage.vue2.js +1 -0
  112. package/es/components/iho-table/src/plugins/index.js +1 -1
  113. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/dateRendererPlugin/editDate.vue.d.ts +13 -0
  114. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/timeRendererPlugin/editTime.vue.d.ts +20 -2
  115. package/es/components/iho-table/src/types/index.d.ts +3 -0
  116. package/es/components/iho-table/src/utils/index.d.ts +0 -1
  117. package/es/components/iho-table/src/utils/index.js +1 -1
  118. package/es/components/index.css +1 -1
  119. package/es/components/info-header/index.d.ts +34 -0
  120. package/es/components/info-header/src/InfoHeader.vue.d.ts +34 -0
  121. package/es/components/info-header/src/components/infoDescription/DescriptionItem.vue.d.ts +2 -0
  122. package/es/components/info-header/src/components/infoDescription/DescriptionItem.vue2.js +1 -1
  123. package/es/components/info-header/src/components/infoDescription/DescriptionList.vue.d.ts +2 -0
  124. package/es/components/info-header/src/components/infoDescription/index.vue.d.ts +16 -0
  125. package/es/components/info-header/src/components/infoDescription/index.vue2.js +1 -1
  126. package/es/components/info-header/src/components/patientInfo/index.vue.d.ts +14 -0
  127. package/es/components/quick-search/src/index.vue2.js +1 -1
  128. package/es/components/select-label/src/LabelFormContent.vue2.js +1 -1
  129. package/es/components/shortcut-setter/index.d.ts +16 -1
  130. package/es/components/shortcut-setter/src/ShortcutSetter.vue.d.ts +16 -1
  131. package/es/components/steps-wheel/index.d.ts +1 -1
  132. package/es/components/steps-wheel/src/StepsWheel.vue.d.ts +1 -1
  133. package/es/components/table-filter/src/components/bi-filter/ValueCfg.vue.d.ts +13 -0
  134. package/es/components/table-filter/src/components/bi-filter/components/Date.vue.d.ts +13 -0
  135. package/es/components/table-filter/src/components/bi-filter/components/index.d.ts +13 -0
  136. package/es/components/table-filter/src/components/bi-filter/index.vue.d.ts +13 -0
  137. package/es/components/table-filter/src/components/classify-filter/ValueCfg.vue.d.ts +47 -5
  138. package/es/components/table-filter/src/components/classify-filter/components/Date.vue.d.ts +13 -0
  139. package/es/components/table-filter/src/components/classify-filter/components/DateRange.vue.d.ts +13 -0
  140. package/es/components/table-filter/src/components/classify-filter/components/SelectDynamic.vue.d.ts +37 -19
  141. package/es/components/table-filter/src/components/classify-filter/components/SelectDynamic.vue2.js +1 -1
  142. package/es/components/table-filter/src/components/classify-filter/components/index.d.ts +47 -5
  143. package/es/components/table-filter/src/components/classify-filter/hooks/useFilterConditions.js +1 -1
  144. package/es/components/table-filter/src/components/classify-filter/index.vue.d.ts +47 -5
  145. package/es/components/table-filter/src/components/render-widget/components/DateInner.vue.d.ts +13 -0
  146. package/es/components/table-filter/src/components/render-widget/components/DateOut.vue.d.ts +13 -0
  147. package/es/components/table-filter/src/components/render-widget/components/DateRangeInner.vue.d.ts +13 -0
  148. package/es/components/table-filter/src/components/render-widget/components/DateRangeOut.vue.d.ts +13 -0
  149. package/es/components/table-filter/src/components/render-widget/components/SelectDynamic.vue.d.ts +33 -18
  150. package/es/components/table-filter/src/components/render-widget/components/SelectDynamic.vue2.js +1 -1
  151. package/es/components/table-filter/src/components/render-widget/components/SelectDynamicOption/index.vue.d.ts +13 -0
  152. package/es/components/table-filter/src/components/render-widget/components/SelectDynamicOption/index.vue2.js +1 -1
  153. package/es/components/table-filter/src/components/render-widget/components/index.d.ts +69 -4
  154. package/es/components/table-filter/src/components/render-widget/widgetCfgMaps.d.ts +69 -4
  155. package/es/components/table-filter/src/tool/transformData.js +1 -1
  156. package/es/components/table-filter/src/types/index.d.ts +3 -0
  157. package/es/components/time-line/index.d.ts +4 -4
  158. package/es/components/time-line/src/TimeLine.vue.d.ts +1 -1
  159. package/es/components/time-line/src/TimeLine.vue2.js +1 -1
  160. package/es/components/time-picker/index.d.ts +20 -2
  161. package/es/components/time-picker/src/TimePicker.vue.d.ts +21 -2
  162. package/es/components/time-picker/src/TimePicker.vue2.js +1 -1
  163. package/es/shared/assets/img/defaultCover/10review_successful.png.js +1 -1
  164. package/es/shared/assets/img/defaultCover/11review_fail.png.js +1 -1
  165. package/es/shared/assets/img/defaultCover/12no_setting.png.js +1 -1
  166. package/es/shared/assets/img/defaultCover/13no_menu_setting.png.js +1 -1
  167. package/es/shared/assets/img/defaultCover/14no_call_setting.png.js +1 -1
  168. package/es/shared/assets/img/defaultCover/15no_use_tag.png.js +1 -1
  169. package/es/shared/assets/img/defaultCover/16no_table_data.png.js +1 -1
  170. package/es/shared/assets/img/defaultCover/1location.png.js +1 -1
  171. package/es/shared/assets/img/defaultCover/2notfound.png.js +1 -1
  172. package/es/shared/assets/img/defaultCover/3loading.png.js +1 -1
  173. package/es/shared/assets/img/defaultCover/4no_permission.png.js +1 -1
  174. package/es/shared/assets/img/defaultCover/5no_data.png.js +1 -1
  175. package/es/shared/assets/img/defaultCover/6no_network.png.js +1 -1
  176. package/es/shared/assets/img/defaultCover/7no_doctor.png.js +1 -1
  177. package/es/shared/assets/img/defaultCover/8system_error.png.js +1 -1
  178. package/es/shared/assets/img/defaultCover/9system_upgrade.png.js +1 -1
  179. package/es/shared/assets/img/failure.png.js +1 -1
  180. package/es/shared/assets/img/no-permission.png.js +1 -1
  181. package/es/shared/assets/img/nodata.png.js +1 -1
  182. package/es/shared/assets/img/notfound.png.js +1 -1
  183. package/es/shared/assets/img/qr.png.js +1 -1
  184. package/es/shared/assets/img/success.png.js +1 -1
  185. package/es/shared/assets/img/table_style_2.png.js +1 -1
  186. package/es/shared/assets/img/video.png.js +1 -1
  187. package/es/shared/assets/img/video_default_cover.png.js +1 -1
  188. package/es/shared/assets/img/xb_big.png.js +1 -1
  189. package/es/shared/assets/img/xb_small.png.js +1 -1
  190. package/es/shared/package.json.js +1 -1
  191. package/es/shared/utils/business.js +1 -1
  192. package/package.json +2 -2
  193. package/es/components/bpmn-workflow/src/BpmnWorkflow.d.ts +0 -0
  194. package/es/components/bpmn-workflow/types/BpmnViewer.d.ts +0 -1
  195. package/es/components/bpmn-workflow/types/ModelingModule.d.ts +0 -1
  196. package/es/components/bpmn-workflow/types/MoveCanvasModule.d.ts +0 -1
  197. package/es/components/iho-table/src/plugins/headerPlugin.d.ts +0 -1
  198. package/es/components/iho-table/src/plugins/headerPlugin.js +0 -1
  199. package/es/shared/components/VueDraggable/src/vuedraggable.d.ts +0 -86
  200. package/es/shared/utils/fabricjs/index.d.ts +0 -6823
  201. package/es/shared/utils/tapable/index.d.ts +0 -139
@@ -1 +1 @@
1
- import{defineComponent as e,ref as s,reactive as o,provide as t,onBeforeUnmount as r,openBlock as n,createElementBlock as i,normalizeStyle as a,unref as c,createVNode as d,withCtx as u,createBlock as l,Fragment as p,createElementVNode as m,renderSlot as h,createCommentVNode as f}from"vue";import{NConfigProvider as g,NSpin as v,NLayout as S,NLayoutContent as y}from"naive-ui";import b from"./components/SiderList.vue.js";import I from"./components/ChatHeader.vue.js";import M from"./components/ChatMain.vue.js";import T from"./components/ChatFooter.vue.js";import k from"./components/ChatSearch.vue.js";import V from"./components/ChatAdd.vue.js";import j from"./components/Video.vue.js";import w from"./components/MultipleVideo.vue.js";import{ChatSock as N}from"./utils/chatSock.js";import{instanceAxios as L,listUserApi as U,readMessageApi as _}from"./api/index.js";import{useTheme as A}from"../../../shared/hooks/useTheme.js";import"@vueuse/core";import"date-fns";import{isArray as C,isNumber as O}from"lodash-es";import"@vue/shared";import"../../../shared/utils/index.js";import"@vueuse/shared";import"../../../shared/hooks/selectHooks/useSearchContent.js";import"@vicons/ionicons5";import{CHAT_TYPE as R,SUBSCRIBE_MESSAGE_TYPE as x,AV_STATUS as G}from"./constants/index.js";import{InjectionIChatState as E,InjectionIChatStompClient as J,InjectionIChatEmits as K}from"./types/index.js";import{isAudioOrVideoMessage as P}from"./utils/index.js";import{useSession as $}from"./hooks/useSession.js";import"trtc-sdk-v5";const q={class:"iho-chat__header"},z={class:"toolbar"};var F=e({__name:"Index",props:{token:{type:String,required:!0},orgId:{type:[String,Number],required:!0},userId:{type:String,required:!0},baseURL:{type:String,default:"/fdp-chat"}},emits:["template-click","unread-message-update"],setup(e,{expose:F,emit:H}){const B=e;L.defaults.baseURL=B.baseURL,L.defaults.headers.Authorization="bearer "+B.token;const D=A(),W=s(!1),Y=s(),Q=o({orgId:B.orgId,currentSessionItem:{},id:"",userInfo:{id:B.userId},msgList:[],currentMsg:{},isAppendMsg:!1,sessionList:[],isChangeSession:!1,updateSessionItem:{},isUpdateSession:!1,currentReferenceMsg:null,showVideo:!1,currentAVMsg:{},userList:[],currentGroupUser:[],showMultipleVideo:!1});t(E,Q),t(J,Y),t(K,H);const{openSession:X,closeSession:Z,getCurrentSession:ee,setSessionList:se,setUpdateSessionItem:oe,setCurrentSessionItem:te}=$(Q),re=[];function ne(){const e={headers:{AccessToken:B.token,UserId:B.userId},heartbeatFn(){try{Y.value.send("test")}catch(e){Y.value.disconnect(),ne()}},connectCb(){console.log("连接成功"),Y.value.subscribe("/user/topic/single",(({body:e})=>ae({body:e,chatType:R.SINGLE}))),Y.value.subscribe("/app/sessionList",(({body:e})=>{try{const s=JSON.parse(e),{authentication:o,currentUser:t,sessionVos:r}=s;if(console.log("body",s),Object.assign(Q.userInfo,t,o),!(null==r?void 0:r.length))return;se(r),re.splice(0,re.length),re.push(...r.filter((e=>e.chatType===R.GROUP))),re.forEach((e=>{Y.value.subscribe(`/topic/group/${e.receiver}`,(({body:e})=>ae({body:e,chatType:R.GROUP})))}))}catch(e){console.log(e)}}))},errorCb(e,s){console.log("断线了,正在重连...")}};Y.value=new N("/fdp-chat/websocket",e)}async function ie(e,s){if(Q.currentMsg=e,e.sessionKey===Q.currentSessionItem.sessionKey)return Q.isAppendMsg=!0,e.sender!==Q.userInfo.id&&await _({chatType:s,messageIdSet:[e.id],receiver:Q.userInfo.id,sender:e.sender}),void te({lastMessageSendTime:e.sendTime,lastMessage:e.content,sortTime:e.sendTime,unreadNum:0,lastSenderName:e.senderName});const o={lastMessageSendTime:e.sendTime,sortTime:e.sendTime,lastMessage:e.content,sessionKey:e.sessionKey,lastSenderName:e.senderName};oe(o)}async function ae({body:e,chatType:s}){try{console.log(JSON.parse(e),"订阅新增消息");const o=JSON.parse(e),{messageVo:t,sessionVo:r,chatAvStatusVo:n}=o;switch(o.event){case x.MESSAGE:P(t.content)?!Q.showVideo&&!Q.showMultipleVideo||t.content.avStatus!==G.IN_CALL?(Q.currentMsg=t,Object.assign(Q.currentAVMsg,{strRoomId:t.sessionKey,chatMessageType:t.content.chatMessageType,callMode:t.sender===Q.userInfo.id?"call":"invite",currentMsg:t}),Q.showVideo||Q.showMultipleVideo?ie(t,s):Q.showVideo=!0):(Y.value.send("/app/chat/send",{},JSON.stringify({chatType:R.SINGLE,receiver:t.sender,content:{chatMessageType:t.content.chatMessageType,avStatus:G.CALL_BUSY}})),console.log("用户忙!")):ie(t,s);break;case x.AV_STATUS:Object.assign(Q.currentAVMsg,n,{callMode:n.sender===Q.userInfo.id?"call":"invite",checkedIds:[]}),Q.showVideo||Q.showMultipleVideo?console.log("用户忙!"):Q.showMultipleVideo=!0;break;case x.NEW_SESSION:if(s===R.GROUP)return;oe(r);break;case x.JOIN:if(s===R.GROUP)return;oe(r),Y.value.subscribe(`/topic/group/${r.receiver}`,(({body:e})=>ae({body:e,chatType:R.GROUP})))}}catch(e){console.log(e)}}return async function(){ne(),async function(){const e=await U({orgId:Q.orgId,keyword:"",page:1,pageSize:1e4});if(!C(e.records))return;Q.userList=e.records}()}(),r((()=>{var e;null==(e=Y.value)||e.disconnect()})),F({getUnreadData:function(){return Q.sessionList.filter((e=>O(e.unreadNum)&&e.unreadNum>0))},openSession:X,closeSession:Z,getCurrentSession:ee}),(e,s)=>(n(),i("div",{class:"iho-chat",style:a(c(D))},[d(c(g),{abstract:"",namespace:"iho-chat__popover"},{default:u((()=>[W.value?(n(),l(c(v),{key:0,stroke:"#5585f5"})):(n(),i(p,{key:1},[m("div",q,[d(k),d(V,{title:"发起群聊",mode:"create","default-value":[Q.userInfo.id]},null,8,["default-value"]),m("div",z,[h(e.$slots,"toolbar")])]),d(c(S),{class:"iho-chat__body","has-sider":""},{default:u((()=>[d(b),d(c(y),{class:"chat-content"},{default:u((()=>[d(I),d(M),d(T)])),_:1}),h(e.$slots,"external")])),_:3}),Q.showVideo?(n(),l(j,{key:0})):f("v-if",!0),Q.showMultipleVideo?(n(),l(w,{key:1})):f("v-if",!0)],64))])),_:3})],4))}});export{F as default};
1
+ import{defineComponent as e,ref as s,reactive as o,provide as t,onBeforeUnmount as n,openBlock as r,createElementBlock as i,normalizeStyle as a,unref as c,createVNode as d,withCtx as u,createBlock as l,Fragment as p,createElementVNode as m,renderSlot as h,createCommentVNode as f}from"vue";import{NConfigProvider as g,NSpin as y,NLayout as v,NLayoutContent as S}from"naive-ui";import b from"./components/SiderList.vue.js";import M from"./components/ChatHeader.vue.js";import I from"./components/ChatMain.vue.js";import k from"./components/ChatFooter.vue.js";import T from"./components/ChatSearch.vue.js";import V from"./components/ChatAdd.vue.js";import j from"./components/Video.vue.js";import N from"./components/MultipleVideo.vue.js";import{ChatSock as w}from"./utils/chatSock.js";import{instanceAxios as L,readMessageApi as U}from"./api/index.js";import{useTheme as _}from"../../../shared/hooks/useTheme.js";import"@vueuse/core";import"date-fns";import{isNumber as A}from"lodash-es";import"@vue/shared";import"../../../shared/utils/index.js";import"@vueuse/shared";import"../../../shared/hooks/selectHooks/useSearchContent.js";import"@vicons/ionicons5";import{CHAT_TYPE as C,SUBSCRIBE_MESSAGE_TYPE as O,AV_STATUS as x}from"./constants/index.js";import{InjectionIChatState as R,InjectionIChatStompClient as G,InjectionIChatEmits as K}from"./types/index.js";import{isAudioOrVideoMessage as E}from"./utils/index.js";import{useSession as B}from"./hooks/useSession.js";import"trtc-sdk-v5";const J={key:0,class:"iho-chat__header"},P={class:"toolbar"};var $=e({__name:"Index",props:{token:{type:String,required:!0},orgId:{type:[String,Number],required:!0},userId:{type:String,required:!0},baseURL:{type:String,default:"/fdp-chat"},chatBox:{type:Boolean,default:!1},defaultSessionKey:{type:String}},emits:["template-click","unread-message-update"],setup(e,{expose:$,emit:q}){const F=e;L.defaults.baseURL=F.baseURL,L.defaults.headers.Authorization="bearer "+F.token;const H=_(),z=s(!1),D=s(),W=o({orgId:F.orgId,currentSessionItem:{},id:"",userInfo:{id:F.userId},msgList:[],currentMsg:{},isAppendMsg:!1,sessionList:[],isChangeSession:!1,updateSessionItem:{},isUpdateSession:!1,currentReferenceMsg:null,showVideo:!1,currentAVMsg:{},currentGroupUser:[],showMultipleVideo:!1});t(R,W),t(G,D),t(K,q);const{openSession:Y,closeSession:Q,getCurrentSession:X,setSessionList:Z,setUpdateSessionItem:ee,setCurrentSessionItem:se}=B(W),oe=[];function te(){const e={headers:{AccessToken:F.token,UserId:F.userId},heartbeatFn(){try{D.value.send("test")}catch(e){D.value.disconnect(),te()}},connectCb(){console.log("连接成功"),D.value.subscribe("/user/topic/single",(({body:e})=>re({body:e,chatType:C.SINGLE}))),D.value.subscribe("/app/sessionList",(({body:e})=>{try{const s=JSON.parse(e),{authentication:o,currentUser:t,sessionVos:n}=s;if(console.log("body",s),Object.assign(W.userInfo,t,o),!(null==n?void 0:n.length))return;Z(n),oe.splice(0,oe.length),oe.push(...n.filter((e=>e.chatType===C.GROUP))),oe.forEach((e=>{D.value.subscribe(`/topic/group/${e.receiver}`,(({body:e})=>re({body:e,chatType:C.GROUP})))})),function(){const e=W.sessionList.find((e=>e.sessionKey===F.defaultSessionKey));e&&Y(e)}()}catch(e){console.log(e)}}))},errorCb(e,s){console.log("断线了,正在重连...")}};D.value=new w("/fdp-chat/websocket",e)}async function ne(e,s){if(W.currentMsg=e,e.sessionKey===W.currentSessionItem.sessionKey)return W.isAppendMsg=!0,e.sender!==W.userInfo.id&&await U({chatType:s,messageIdSet:[e.id],receiver:W.userInfo.id,sender:e.sender}),void se({lastMessageSendTime:e.sendTime,lastMessage:e.content,sortTime:e.sendTime,unreadNum:0,lastSenderName:e.senderName});const o={lastMessageSendTime:e.sendTime,sortTime:e.sendTime,lastMessage:e.content,sessionKey:e.sessionKey,lastSenderName:e.senderName};ee(o)}async function re({body:e,chatType:s}){try{console.log(JSON.parse(e),"订阅新增消息");const o=JSON.parse(e),{messageVo:t,sessionVo:n,chatAvStatusVo:r}=o;switch(o.event){case O.MESSAGE:E(t.content)?!W.showVideo&&!W.showMultipleVideo||t.content.avStatus!==x.IN_CALL?(W.currentMsg=t,Object.assign(W.currentAVMsg,{strRoomId:t.sessionKey,chatMessageType:t.content.chatMessageType,callMode:t.sender===W.userInfo.id?"call":"invite",currentMsg:t}),W.showVideo||W.showMultipleVideo?ne(t,s):W.showVideo=!0):(D.value.send("/app/chat/send",{},JSON.stringify({chatType:C.SINGLE,receiver:t.sender,content:{chatMessageType:t.content.chatMessageType,avStatus:x.CALL_BUSY}})),console.log("用户忙!")):ne(t,s);break;case O.AV_STATUS:Object.assign(W.currentAVMsg,r,{callMode:r.sender===W.userInfo.id?"call":"invite",checkedIds:[]}),W.showVideo||W.showMultipleVideo?console.log("用户忙!"):W.showMultipleVideo=!0;break;case O.NEW_SESSION:if(s===C.GROUP)return;ee(n);break;case O.JOIN:if(s===C.GROUP)return;ee(n),D.value.subscribe(`/topic/group/${n.receiver}`,(({body:e})=>re({body:e,chatType:C.GROUP})))}}catch(e){console.log(e)}}return async function(){te()}(),n((()=>{var e;null==(e=D.value)||e.disconnect()})),$({getUnreadData:function(){return W.sessionList.filter((e=>A(e.unreadNum)&&e.unreadNum>0))},openSession:Y,closeSession:Q,getCurrentSession:X}),(s,o)=>(r(),i("div",{class:"iho-chat",style:a(c(H))},[d(c(g),{abstract:"",namespace:"iho-chat__popover"},{default:u((()=>[z.value?(r(),l(c(y),{key:0,stroke:"#5585f5"})):(r(),i(p,{key:1},[e.chatBox?f("v-if",!0):(r(),i("div",J,[d(T),d(V,{title:"发起群聊",mode:"create","default-value":[W.userInfo]},null,8,["default-value"]),m("div",P,[h(s.$slots,"toolbar")])])),d(c(v),{class:"iho-chat__body","has-sider":""},{default:u((()=>[e.chatBox?f("v-if",!0):(r(),l(b,{key:0})),d(c(S),{class:"chat-content"},{default:u((()=>[d(M),d(I),d(k)])),_:1}),h(s.$slots,"external")])),_:3}),W.showVideo?(r(),l(j,{key:1})):f("v-if",!0),W.showMultipleVideo?(r(),l(N,{key:2})):f("v-if",!0)],64))])),_:3})],4))}});export{$ as default};
@@ -14,9 +14,10 @@ declare const _default: import("vue").DefineComponent<{
14
14
  };
15
15
  disabledIds: {
16
16
  type: PropType<string[]>;
17
+ default: () => never[];
17
18
  };
18
19
  defaultValue: {
19
- type: PropType<string[]>;
20
+ type: PropType<AnyObject[]>;
20
21
  };
21
22
  }, {
22
23
  props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
@@ -33,34 +34,53 @@ declare const _default: import("vue").DefineComponent<{
33
34
  };
34
35
  disabledIds: {
35
36
  type: PropType<string[]>;
37
+ default: () => never[];
36
38
  };
37
39
  defaultValue: {
38
- type: PropType<string[]>;
40
+ type: PropType<AnyObject[]>;
39
41
  };
40
42
  }>> & {
41
43
  onComfirm?: ((...args: any[]) => any) | undefined;
42
44
  }>>;
43
45
  emit: (event: "comfirm", ...args: any[]) => void;
44
46
  state: import("../types").IState;
47
+ listRef: import("vue").Ref<any>;
48
+ keyword: import("vue").Ref<any>;
45
49
  showModal: import("vue").Ref<boolean>;
46
- checkedIds: import("vue").Ref<(string | number)[]>;
50
+ checkedOptions: import("vue").Ref<AnyObject[]>;
47
51
  options: import("vue").Ref<AnyObject[]>;
48
52
  groupName: import("vue").Ref<string>;
53
+ checkedSourceIds: import("vue").Ref<(string | number)[]>;
54
+ userList: import("vue").Ref<AnyObject[]>;
55
+ handleInput: () => void;
56
+ _disabledIds: import("vue").ComputedRef<any[]>;
57
+ defaultOptions: import("vue").ComputedRef<{
58
+ id: any;
59
+ name: any;
60
+ avatar: any;
61
+ }[]>;
62
+ checkedIds: import("vue").ComputedRef<any[]>;
49
63
  btnDisabled: import("vue").ComputedRef<boolean>;
64
+ allChecked: import("vue").WritableComputedRef<boolean>;
50
65
  handlePositiveClick: () => Promise<void>;
51
- renderSourceLabel: ({ option }: {
52
- option: AnyObject;
53
- }) => JSX.Element;
54
- renderTargetList: (props: {
55
- onCheck: (checkedValueList: Array<string | number>) => void;
56
- checkedOptions: AnyObject[];
57
- pattern: string;
58
- }) => JSX.Element | null;
66
+ updateCheckedSourceIds: () => void;
67
+ handleSourceIdsUpdate: (value: (string | number)[], meta: {
68
+ actionType: 'check' | 'uncheck';
69
+ value: string | number;
70
+ }) => void;
71
+ closeTag: (id: string) => void;
72
+ renderTargetList: () => JSX.Element[] | null;
59
73
  NModal: any;
60
74
  NButton: any;
61
- NTransfer: any;
75
+ NSpace: any;
76
+ NAvatar: any;
62
77
  NIcon: any;
78
+ NTag: any;
63
79
  NInput: any;
80
+ NCheckbox: any;
81
+ NCheckboxGroup: any;
82
+ NTooltip: any;
83
+ 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<{}>>, {}>;
64
84
  AddOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
65
85
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "comfirm"[], "comfirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
66
86
  title: {
@@ -76,14 +96,16 @@ declare const _default: import("vue").DefineComponent<{
76
96
  };
77
97
  disabledIds: {
78
98
  type: PropType<string[]>;
99
+ default: () => never[];
79
100
  };
80
101
  defaultValue: {
81
- type: PropType<string[]>;
102
+ type: PropType<AnyObject[]>;
82
103
  };
83
104
  }>> & {
84
105
  onComfirm?: ((...args: any[]) => any) | undefined;
85
106
  }, {
86
107
  mode: string;
87
108
  title: string;
109
+ disabledIds: string[];
88
110
  }>;
89
111
  export default _default;
@@ -1 +1 @@
1
- import{defineComponent as e,ref as t,computed as a,watch as l,openBlock as o,createElementBlock as r,Fragment as i,createVNode as s,unref as n,withCtx as u,createElementVNode as d,createCommentVNode as c,renderSlot as p}from"vue";import{NModal as v,NInput as f,NTransfer as m,NButton as h,NIcon as b,NAvatar as g,NTag as y}from"naive-ui";import{AddOutline as I}from"@vicons/ionicons5";import{useState as k}from"../hooks/useState.js";import"date-fns";import{isArray as w,uniqBy as x,xorBy as S}from"lodash-es";import"../utils/emoji.js";import{groupJoinApi as _,groupCreateApi as j}from"../api/index.js";import"trtc-sdk-v5";const C={class:"iho-chat-dialog__content iho-chat-add-wrapper"},A={key:0,class:"input-box"},U=d("span",null,"群名称:",-1),V={class:"transfer-box"};var z=e({__name:"ChatAdd",props:{title:{type:String,default:"添加新成员"},mode:{type:String,default:"select"},options:{type:Array},disabledIds:{type:Array},defaultValue:{type:Array}},emits:["comfirm"],setup(e,{emit:z}){const D=e,{state:G}=k(),L=t(!1),M=t([]),O=t([]),P=t(""),$=a((()=>"create"===D.mode?M.value.length<3:M.value.length<1));async function q(){switch(D.mode){case"create":await j({creator:G.userInfo.id,memberIdSet:M.value,name:P.value,orgId:G.orgId});break;case"join":await _({groupId:G.currentSessionItem.receiver,operator:G.userInfo.id,memberIdSet:M.value}),G.currentGroupUser.push(O.value.filter((e=>M.value.includes(e.value))));break;default:z("comfirm",M.value)}L.value=!1}function B({option:e}){return s("div",{style:"display: flex;align-items: center"},[s(g,{src:e.avatar,round:!0,size:32},null),s("span",{style:"margin-left: 10px"},[e.name])])}function E(e){const{onCheck:t,checkedOptions:a,pattern:l}=e;return a.length>0?s("div",{class:"checked-tag-box"},[a.map((e=>s(y,{bordered:!1,closable:e.id!==G.userInfo.id,onClose:()=>t(S(a,[e],"id").map((e=>e.id)))},{avatar:()=>s(g,{round:!0,src:e.avatar},null),default:()=>e.name})))]):null}return l((()=>L.value),(e=>{if(!e)return;const t=w(D.options)&&D.options.length?D.options:G.userList;O.value=x(t,"id").map((e=>{var t;return{...e,label:e.name,value:e.id,disabled:e.id===G.userInfo.id||(null==(t=D.disabledIds)?void 0:t.includes(e.id))}})),w(D.defaultValue)&&D.defaultValue.length?M.value=D.defaultValue:M.value=[]})),(t,a)=>(o(),r(i,null,[s(n(v),{preset:"dialog",title:e.title,"show-icon":!1,"auto-focus":!1,class:"iho-chat-dialog",show:L.value,"onUpdate:show":a[2]||(a[2]=e=>L.value=e),"negative-text":"取消","positive-text":"确定","positive-button-props":{disabled:n($)},onPositiveClick:q},{default:u((()=>[d("div",C,["create"===e.mode?(o(),r("div",A,[U,s(n(f),{clearable:"",placeholder:"取个群名称方便后续搜索",value:P.value,"onUpdate:value":a[0]||(a[0]=e=>P.value=e),valueModifiers:{trim:!0}},null,8,["value"])])):c("v-if",!0),d("div",V,[s(n(m),{size:"large",value:M.value,"onUpdate:value":a[1]||(a[1]=e=>M.value=e),"virtual-scroll":"",options:O.value,"render-source-label":B,"render-target-list":E,"source-filterable":""},null,8,["value","options"])])])])),_:1},8,["title","show","positive-button-props"]),d("span",{class:"btn-wrapper",onClick:a[3]||(a[3]=e=>L.value=!0)},[p(t.$slots,"trigger",{},(()=>[s(n(h),{color:"#ffffff4D",class:"add-btn"},{icon:u((()=>[s(n(b),{component:n(I),color:"#fff"},null,8,["component"])])),_:1})]))])],64))}});export{z as default};
1
+ import{defineComponent as e,ref as a,computed as l,watch as t,openBlock as i,createElementBlock as o,Fragment as u,createVNode as r,unref as s,withCtx as d,createElementVNode as n,createCommentVNode as v,isRef as c,renderList as p,createBlock as f,toDisplayString as m,createTextVNode as h,renderSlot as b}from"vue";import{NModal as g,NInput as k,NIcon as y,NCheckbox as _,NCheckboxGroup as w,NSpace as I,NAvatar as x,NTag as S,NTooltip as U,NButton as j}from"naive-ui";import{SearchOutline as C,AddOutline as L}from"@vicons/ionicons5";import{useState as A}from"../hooks/useState.js";import{listSort as V}from"../utils/index.js";import{cloneDeep as R,union as E,unionBy as G,remove as M,isArray as T,uniqBy as z}from"lodash-es";import{CHAT_TYPE as D}from"../constants/index.js";import{groupJoinApi as N,groupCreateApi as P}from"../api/index.js";import"trtc-sdk-v5";import{useSearchUserList as $}from"../hooks/useSearchUserList.js";const q={class:"iho-chat-dialog__content iho-chat-add-wrapper"},B={key:0,class:"input-box"},F=n("span",null,"群名称:",-1),H={class:"transfer-box"},J={class:"transfer-box__left"},K={class:"user-list-box"},O={key:1,class:"no-data"},Q={class:"transfer-box__right"},W={class:"checked-tag-box"};var X=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:X}){const Y=e,{state:Z}=A(),ee=a(),ae=a(),le=a(!1),te=a([]),ie=a([]),oe=a(""),ue=a([]),{userList:re,handleInput:se}=$({wrapperRef:ee,keywordRef:ae,before:()=>{re.value=R(ie.value),me()},after:()=>{re.value.forEach((e=>{var a;e.disabled=null==(a=de.value)?void 0:a.includes(e.id)})),me()}}),de=l((()=>E(Y.disabledIds,[Z.userInfo.id]))),ne=l((()=>{var e,a;return(null==(e=Z.sessionList)?void 0:e.length)?null==(a=V(Z.sessionList).filter((e=>e.chatType===D.SINGLE)))?void 0:a.map((e=>({id:e.receiver,name:e.name,avatar:e.avatar}))):[]})),ve=l((()=>te.value.length?te.value.map((e=>e.id)):[])),ce=l((()=>"create"===Y.mode?ve.value.length<3:ve.value.length<1)),pe=l({get:()=>ue.value.length===re.value.filter((e=>!e.disabled)).length,set(e){const a=re.value.filter((e=>!e.disabled));ue.value=e?a.map((e=>e.id)):[],e?te.value=G(te.value,a,"id"):M(te.value,(e=>a.map((e=>e.id)).includes(e.id)))}});async function fe(){switch(Y.mode){case"create":await P({creator:Z.userInfo.id,memberIdSet:ve.value,name:oe.value,orgId:Z.orgId});break;case"join":await N({groupId:Z.currentSessionItem.receiver,operator:Z.userInfo.id,memberIdSet:ve.value}),Z.currentGroupUser.push(re.value.filter((e=>ve.value.includes(e.value))));break;default:X("comfirm",ve.value)}le.value=!1}function me(){var e,a;ue.value=null!=(a=null==(e=re.value.filter((e=>ve.value.includes(e.id))))?void 0:e.map((e=>e.id)))?a:[]}function he(e,a){if("check"===a.actionType){const e=re.value.find((e=>e.id===a.value));te.value.push(e)}else M(te.value,(e=>e.id===a.value))}return t((()=>le.value),(e=>{if(!e)return;const a=T(Y.options)&&Y.options.length?Y.options:ne.value;ie.value=z(a,"id").map((e=>{var a;return{...e,disabled:null==(a=de.value)?void 0:a.includes(e.id)}})),re.value=R(ie.value),T(Y.defaultValue)&&Y.defaultValue.length?(te.value=R(Y.defaultValue),me()):(te.value=[],ue.value=[])})),(a,l)=>(i(),o(u,null,[r(s(g),{preset:"dialog",title:e.title,"show-icon":!1,"auto-focus":!1,"trap-focus":!1,class:"iho-chat-dialog",show:le.value,"onUpdate:show":l[4]||(l[4]=e=>le.value=e),"negative-text":"取消","positive-text":"确定","positive-button-props":{disabled:s(ce)},onPositiveClick:fe},{default:d((()=>[n("div",q,["create"===e.mode?(i(),o("div",B,[F,r(s(k),{clearable:"",placeholder:"取个群名称方便后续搜索",value:oe.value,"onUpdate:value":l[0]||(l[0]=e=>oe.value=e),valueModifiers:{trim:!0}},null,8,["value"])])):v("v-if",!0),n("div",H,[n("div",J,[r(s(k),{placeholder:"搜索",clearable:"",value:ae.value,"onUpdate:value":[l[1]||(l[1]=e=>ae.value=e),s(se)],valueModifiers:{trim:!0}},{prefix:d((()=>[r(s(y),{component:s(C)},null,8,["component"])])),_:1},8,["value","onUpdate:value"]),n("div",K,[s(re).length>0?(i(),o(u,{key:0},[r(s(_),{label:"全选",checked:s(pe),"onUpdate:checked":l[2]||(l[2]=e=>c(pe)?pe.value=e:null)},null,8,["checked"]),r(s(w),{ref_key:"listRef",ref:ee,value:ue.value,"onUpdate:value":[l[3]||(l[3]=e=>ue.value=e),he]},{default:d((()=>[(i(!0),o(u,null,p(s(re),(e=>(i(),f(s(_),{key:e.id,value:e.id,disabled:e.disabled},{default:d((()=>[r(s(I),{align:"center","wrap-item":!1},{default:d((()=>[r(s(x),{src:e.avatar,round:"",size:32},null,8,["src"]),n("span",null,m(e.name),1)])),_:2},1024)])),_:2},1032,["value","disabled"])))),128))])),_:1},8,["value"])],64)):(i(),o("div",O,"找不到相关结果"))])]),n("div",Q,[n("span",null,"已选择 "+m(s(ve).length)+" 人",1),n("div",W,[(i(!0),o(u,null,p(te.value,(e=>(i(),f(s(S),{key:e.id,bordered:!1,closable:e.id!==s(Z).userInfo.id,disabled:s(de).includes(e.id),onClose:()=>{return a=e.id,M(te.value,(e=>e.id===a)),void M(ue.value,(e=>e===a));var a}},{avatar:d((()=>[r(s(x),{round:"",src:e.avatar},null,8,["src"])])),default:d((()=>[h(" "+m(e.name),1)])),_:2},1032,["closable","disabled","onClose"])))),128))])])])])])),_:1},8,["title","show","positive-button-props"]),n("span",{class:"btn-wrapper",onClick:l[5]||(l[5]=e=>le.value=!0)},[b(a.$slots,"trigger",{},(()=>[r(s(U),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:d((()=>[r(s(j),{color:"#ffffff4D",class:"add-btn"},{icon:d((()=>[r(s(y),{component:s(L),color:"#fff"},null,8,["component"])])),_:1})])),default:d((()=>[h(" "+m(e.title),1)])),_:1})]))])],64))}});export{X as default};
@@ -8,7 +8,6 @@ type FileOptions = {
8
8
  };
9
9
  declare const _default: import("vue").DefineComponent<{}, {
10
10
  inputRef: import("vue").Ref<HTMLDivElement | undefined>;
11
- content: import("vue").Ref<string>;
12
11
  state: import("../types").IState;
13
12
  sendMessage: (message: {
14
13
  chatType?: string | undefined;
@@ -17,6 +16,12 @@ declare const _default: import("vue").DefineComponent<{}, {
17
16
  }) => Promise<void>;
18
17
  isGroupChat: import("vue").ComputedRef<boolean>;
19
18
  showEmoji: import("vue").Ref<boolean>;
19
+ content: import("vue").Ref<string>;
20
+ chatAddProps: import("vue").ComputedRef<{
21
+ options: AnyObject[];
22
+ defaultValue: AnyObject[];
23
+ }>;
24
+ btnDisabled: import("vue").ComputedRef<boolean>;
20
25
  handleCall: (chatMessageType: string, checkedIds?: never[]) => void;
21
26
  handleKeyDown: (event: KeyboardEvent) => void;
22
27
  isWrap: (event: KeyboardEvent) => boolean;
@@ -45,9 +50,10 @@ declare const _default: import("vue").DefineComponent<{}, {
45
50
  };
46
51
  disabledIds: {
47
52
  type: import("vue").PropType<string[]>;
53
+ default: () => never[];
48
54
  };
49
55
  defaultValue: {
50
- type: import("vue").PropType<string[]>;
56
+ type: import("vue").PropType<AnyObject[]>;
51
57
  };
52
58
  }, {
53
59
  props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
@@ -64,34 +70,53 @@ declare const _default: import("vue").DefineComponent<{}, {
64
70
  };
65
71
  disabledIds: {
66
72
  type: import("vue").PropType<string[]>;
73
+ default: () => never[];
67
74
  };
68
75
  defaultValue: {
69
- type: import("vue").PropType<string[]>;
76
+ type: import("vue").PropType<AnyObject[]>;
70
77
  };
71
78
  }>> & {
72
79
  onComfirm?: ((...args: any[]) => any) | undefined;
73
80
  }>>;
74
81
  emit: (event: "comfirm", ...args: any[]) => void;
75
82
  state: import("../types").IState;
83
+ listRef: import("vue").Ref<any>;
84
+ keyword: import("vue").Ref<any>;
76
85
  showModal: import("vue").Ref<boolean>;
77
- checkedIds: import("vue").Ref<(string | number)[]>;
86
+ checkedOptions: import("vue").Ref<AnyObject[]>;
78
87
  options: import("vue").Ref<AnyObject[]>;
79
88
  groupName: import("vue").Ref<string>;
89
+ checkedSourceIds: import("vue").Ref<(string | number)[]>;
90
+ userList: import("vue").Ref<AnyObject[]>;
91
+ handleInput: () => void;
92
+ _disabledIds: import("vue").ComputedRef<any[]>;
93
+ defaultOptions: import("vue").ComputedRef<{
94
+ id: any;
95
+ name: any;
96
+ avatar: any;
97
+ }[]>;
98
+ checkedIds: import("vue").ComputedRef<any[]>;
80
99
  btnDisabled: import("vue").ComputedRef<boolean>;
100
+ allChecked: import("vue").WritableComputedRef<boolean>;
81
101
  handlePositiveClick: () => Promise<void>;
82
- renderSourceLabel: ({ option }: {
83
- option: AnyObject;
84
- }) => JSX.Element;
85
- renderTargetList: (props: {
86
- onCheck: (checkedValueList: (string | number)[]) => void;
87
- checkedOptions: AnyObject[];
88
- pattern: string;
89
- }) => JSX.Element | null;
102
+ updateCheckedSourceIds: () => void;
103
+ handleSourceIdsUpdate: (value: (string | number)[], meta: {
104
+ actionType: "check" | "uncheck";
105
+ value: string | number;
106
+ }) => void;
107
+ closeTag: (id: string) => void;
108
+ renderTargetList: () => JSX.Element[] | null;
90
109
  NModal: any;
91
110
  NButton: any;
92
- NTransfer: any;
111
+ NSpace: any;
112
+ NAvatar: any;
93
113
  NIcon: any;
114
+ NTag: any;
94
115
  NInput: any;
116
+ NCheckbox: any;
117
+ NCheckboxGroup: any;
118
+ NTooltip: any;
119
+ 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<{}>>, {}>;
95
120
  AddOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
96
121
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "comfirm"[], "comfirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
97
122
  title: {
@@ -107,15 +132,17 @@ declare const _default: import("vue").DefineComponent<{}, {
107
132
  };
108
133
  disabledIds: {
109
134
  type: import("vue").PropType<string[]>;
135
+ default: () => never[];
110
136
  };
111
137
  defaultValue: {
112
- type: import("vue").PropType<string[]>;
138
+ type: import("vue").PropType<AnyObject[]>;
113
139
  };
114
140
  }>> & {
115
141
  onComfirm?: ((...args: any[]) => any) | undefined;
116
142
  }, {
117
143
  mode: string;
118
144
  title: string;
145
+ disabledIds: string[];
119
146
  }>;
120
147
  emojis: {
121
148
  default: string[][];
@@ -1 +1 @@
1
- import{defineComponent as e,ref as t,watch as n,withDirectives as o,openBlock as i,createElementBlock as s,normalizeStyle as r,unref as a,createElementVNode as l,toDisplayString as c,createVNode as u,createCommentVNode as d,withCtx as f,Fragment as p,renderList as m,createBlock as g,createTextVNode as y,vShow as h}from"vue";import{NIcon as v,NPopover as M,NButton as k,NTooltip as C,NUpload as _,NUploadTrigger as x}from"naive-ui";import I from"./ChatAdd.vue.js";import{useState as b}from"../hooks/useState.js";import{useSession as w}from"../hooks/useSession.js";import{MESSAGE_TYPE as T,AV_STATUS as z}from"../constants/index.js";import"trtc-sdk-v5";import{simplifyMessage as E}from"../utils/index.js";import{emojis as j}from"../utils/emoji.js";import{uploadFileApi as R}from"../api/index.js";import{CloseCircleOutline as q,CallOutline as L,VideocamOutline as D}from"@vicons/ionicons5";import{xor as O,cloneDeep as A}from"lodash-es";import{uuidGenerator as U}from"../../../../shared/utils/index.js";const V={key:0,class:"reference-content-box"},F={class:"reference-content"},K=["innerHTML"],G={class:"tool-box"},S=l("i",{class:"chat--iconfont chat--icon-face"},null,-1),H={class:"emoji-box"},N=l("span",null,"默认表情",-1),J={class:"list-box"},X=["src"],B=l("i",{class:"chat--iconfont chat--icon-good"},null,-1),P=l("i",{class:"chat--iconfont chat--icon-image"},null,-1),Q=l("i",{class:"chat--iconfont chat--icon-folder"},null,-1),W={class:"btn-box"},Y=l("span",{class:"tip"},"Enter 发送, Shift + Enter 换行",-1);var Z=e({__name:"ChatFooter",setup(e){const Z=t(),$=t(""),{state:ee,sendMessage:te}=b(),{isGroupChat:ne}=w(ee),oe=t(!1);function ie(e,t=[]){const n=U(),o=[],i=t.length>0;ee.showVideo||ee.showMultipleVideo||(i?(o.push(...O(t,[ee.userInfo.id])),Object.assign(ee.currentAVMsg,{callMode:"call",checkedIds:o,strRoomId:n,chatMessageType:e}),ee.showMultipleVideo=!0):te({content:{chatMessageType:e,msg:"",avStatus:z.IN_CALL}}))}function se(e){["Enter"].includes(e.key)&&(function(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}(e)||(e.preventDefault(),le()))}function re(){var e,t;$.value=(null==(t=null==(e=Z.value)?void 0:e.innerText)?void 0:t.trim())||""}async function ae(e,t){const{file:n,name:o}=e.file,i=new FormData;i.append("sender",ee.userInfo.id),i.append("file",n);const s=await R(i);if(!s)return console.log("上传失败");ce({chatMessageType:t,msg:t===T.FILE?o:s,url:s})}function le(){if(!($.value.length>2e3))return $.value?void ce({msg:$.value}):console.log("请输入内容");console.log("请控制在2000字以内")}async function ce(e){const{chatMessageType:t=T.TEXT,msg:n,url:o}=e,i={msg:n,chatMessageType:t};t===T.FILE&&(i.fileUrl=o),[T.TEXT,T.BLEND].includes(t)&&(Z.value.innerHTML="",$.value=""),ee.currentReferenceMsg&&(i.referenceContent=A(ee.currentReferenceMsg),ee.currentReferenceMsg=null),te({content:i})}return n((()=>ee.currentReferenceMsg),(e=>{var t;e&&(null==(t=Z.value)||t.focus())})),(e,t)=>o((i(),s("section",{class:"chat-footer",style:r({cursor:a(ee).id?"default":"not-allowed"})},[a(ee).currentReferenceMsg?(i(),s("div",V,[l("div",F,[l("span",null,c(a(ee).currentReferenceMsg.senderName)+":",1),l("pre",{innerHTML:a(E)(a(ee).currentReferenceMsg.content)},null,8,K)]),u(a(v),{component:a(q),onClick:t[0]||(t[0]=()=>a(ee).currentReferenceMsg=null)},null,8,["component"])])):d("v-if",!0),l("div",G,[u(a(M),{show:oe.value,"onUpdate:show":t[1]||(t[1]=e=>oe.value=e),placement:"top",trigger:"click","show-arrow":!1,"display-directive":"show",delay:0},{trigger:f((()=>[u(a(k),{quaternary:"",size:"tiny"},{icon:f((()=>[S])),_:1})])),default:f((()=>[l("div",H,[d(' <span>最近使用</span>\n\t\t\t\t\t<div class="list-box">\n\t\t\t\t\t\t<template v-for="(img, index) in images" :key="index">\n\t\t\t\t\t\t\t<i>\n\t\t\t\t\t\t\t\t<img :src="img" />\n\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div> '),N,l("div",J,[(i(!0),s(p,null,m(a(j).default,(([e,t])=>(i(),g(a(C),{key:e,"show-arrow":!1,trigger:"hover"},{trigger:f((()=>[u(a(k),{quaternary:"",size:"tiny",onClick:()=>function(e){oe.value=!1,ce({chatMessageType:T.EMOJI,msg:e})}(e)},{icon:f((()=>[l("img",{src:t},null,8,X)])),_:2},1032,["onClick"])])),default:f((()=>[y(" "+c(e),1)])),_:2},1024)))),128))])])])),_:1},8,["show"]),u(a(k),{quaternary:"",size:"tiny",onClick:t[2]||(t[2]=()=>ce({chatMessageType:a(T).EMOJI,msg:0}))},{icon:f((()=>[B])),_:1}),u(a(_),{abstract:"",multiple:"",accept:"image/*",onChange:t[3]||(t[3]=e=>ae(e,a(T).IMAGE))},{default:f((()=>[u(a(x),{abstract:""},{default:f((({handleClick:e})=>[u(a(k),{quaternary:"",size:"tiny",onClick:e},{icon:f((()=>[P])),_:2},1032,["onClick"])])),_:1})])),_:1}),u(a(_),{abstract:"",multiple:"",accept:"video/*,.pdf,.doc.docx,,.zip,.xlsx,.txt",onChange:t[4]||(t[4]=e=>ae(e,a(T).FILE))},{default:f((()=>[u(a(x),{abstract:""},{default:f((({handleClick:e})=>[u(a(k),{quaternary:"",size:"tiny",onClick:e},{icon:f((()=>[Q])),_:2},1032,["onClick"])])),_:1})])),_:1}),a(ne)?(i(),s(p,{key:0},[u(I,{options:a(ee).currentGroupUser,"default-value":[a(ee).userInfo.id],onComfirm:t[5]||(t[5]=e=>ie(a(T).AUDIO,e))},{trigger:f((()=>[u(a(k),{quaternary:"",size:"tiny"},{icon:f((()=>[u(a(v),{size:"18",component:a(L)},null,8,["component"])])),_:1})])),_:1},8,["options","default-value"]),u(I,{options:a(ee).currentGroupUser,"default-value":[a(ee).userInfo.id],onComfirm:t[6]||(t[6]=e=>ie(a(T).VIDEO,e))},{trigger:f((()=>[u(a(k),{quaternary:"",size:"tiny"},{icon:f((()=>[u(a(v),{size:"20",component:a(D)},null,8,["component"])])),_:1})])),_:1},8,["options","default-value"])],64)):(i(),s(p,{key:1},[u(a(k),{quaternary:"",size:"tiny",onClick:t[7]||(t[7]=()=>ie(a(T).AUDIO))},{icon:f((()=>[u(a(v),{size:"18",component:a(L)},null,8,["component"])])),_:1}),u(a(k),{quaternary:"",size:"tiny",onClick:t[8]||(t[8]=()=>ie(a(T).VIDEO))},{icon:f((()=>[u(a(v),{size:"20",component:a(D)},null,8,["component"])])),_:1})],64))]),o(l("div",{ref_key:"inputRef",ref:Z,class:"input-box",contenteditable:"",onKeydown:se,onInput:re},null,544),[[h,a(ee).id]]),l("div",W,[Y,u(a(k),{type:"primary",round:"",disabled:!$.value,onClick:le},{default:f((()=>[y("发送")])),_:1},8,["disabled"])])],4)),[[h,a(ee).id]])}});export{Z as default};
1
+ import{defineComponent as e,ref as t,computed as n,watch as r,withDirectives as o,openBlock as i,createElementBlock as s,normalizeStyle as a,unref as c,createElementVNode as l,toDisplayString as u,createVNode as p,createCommentVNode as g,withCtx as f,Fragment as m,renderList as d,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 b from"./ChatAdd.vue.js";import{useState as E}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}from"../utils/index.js";import{emojis as R}from"../utils/emoji.js";import{uploadFileApi as q}from"../api/index.js";import{CloseCircleOutline as O,CallOutline as D,VideocamOutline as A}from"@vicons/ionicons5";import{xor as V,cloneDeep as K}from"lodash-es";import{uuidGenerator as F}from"../../../../shared/utils/index.js";const H={key:0,class:"reference-content-box"},U={class:"reference-content"},G=["innerHTML"],J={class:"tool-box"},N=l("i",{class:"chat--iconfont chat--icon-face"},null,-1),S=l("span",null,"默认表情",-1),X={class:"list-box"},B=["src"],$=l("i",{class:"chat--iconfont chat--icon-good"},null,-1),P=l("i",{class:"chat--iconfont chat--icon-image"},null,-1),Q=l("i",{class:"chat--iconfont chat--icon-folder"},null,-1),W={class:"btn-box"},Y=l("span",{class:"tip"},"Enter 发送, Ctrl + Enter 换行",-1);var Z=e({__name:"ChatFooter",setup(e){const Z=t(),{state:ee,sendMessage:te}=E(),{isGroupChat:ne}=x(ee),re=t(!1),oe=t(""),ie=n((()=>({options:ee.currentGroupUser,defaultValue:[ee.userInfo]}))),se=n((()=>!oe.value.replace(/(&nbsp;|\s|<br>)+/g,"")));function ae(e,t=[]){const n=F(),r=[],o=t.length>0;ee.showVideo||ee.showMultipleVideo||(o?(r.push(...V(t,[ee.userInfo.id])),Object.assign(ee.currentAVMsg,{callMode:"call",checkedIds:r,strRoomId:n,chatMessageType:e}),ee.showMultipleVideo=!0):te({content:{chatMessageType:e,msg:"",avStatus:j.IN_CALL}}))}function ce(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 le(){var e;oe.value=(null==(e=Z.value)?void 0:e.innerHTML)||""}async function ue(e,t){const{file:n,name:r}=e.file,o=new FormData;o.append("sender",ee.userInfo.id),o.append("file",n);const i=await q(o);if(!i)return console.log("上传失败");ge({chatMessageType:t,msg:t===z.FILE?r:i,url:i})}function pe(){const{innerHTML:e="",innerText:t=""}=Z.value||{};if(se.value)return console.log("请输入内容");const n=e.split(t).find((e=>!!e));let r=z.TEXT,o="";if(n){if(t.replace(/\n$/,"")||(e.match(/<img[^>]*>/gi)||[]).length>1)r=z.BLEND,o=e;else if(e.includes(z.EMOJI)){r=z.EMOJI;const t=e.match(/data-msg\s*=\s*"([^"]*)"/);t&&(o=t[1])}else{r=z.IMAGE;const t=e.match(/src\s*=\s*"([^"]*)"/);t&&(o=t[1])}}else o=t.trim();o&&ge({msg:o,chatMessageType:r,origin:"btn"})}async function ge(e){const{chatMessageType:t=z.TEXT,msg:n,url:r,origin:o=""}=e,i={msg:n,chatMessageType:t};t===z.FILE&&(i.fileUrl=r),"btn"===o&&(Z.value.innerHTML="",oe.value=""),ee.currentReferenceMsg&&(t===z.TEXT&&(i.referenceContent=K(ee.currentReferenceMsg)),ee.currentReferenceMsg=null),te({content:i})}return r((()=>ee.currentReferenceMsg),(e=>{var t;e&&(null==(t=Z.value)||t.focus())})),(e,t)=>o((i(),s("section",{class:"chat-footer",style:a({cursor:c(ee).id?"default":"not-allowed"})},[c(ee).currentReferenceMsg?(i(),s("div",H,[l("div",U,[l("span",null,u(c(ee).currentReferenceMsg.senderName)+":",1),l("pre",{innerHTML:c(L)(c(ee).currentReferenceMsg.content)},null,8,G)]),p(c(M),{component:c(O),onClick:t[0]||(t[0]=()=>c(ee).currentReferenceMsg=null)},null,8,["component"])])):g("v-if",!0),l("div",J,[p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(k),{"content-class":"emoji-content",class:"emoji-wrapper",show:re.value,"onUpdate:show":t[1]||(t[1]=e=>re.value=e),placement:"top",trigger:"click","show-arrow":!1,"display-directive":"show",delay:0},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny"},{icon:f((()=>[N])),_:1})])),default:f((()=>[S,l("div",X,[(i(!0),s(m,null,d(c(R).default,(([e,t])=>(i(),h(c(_),{key:e,"show-arrow":!1,trigger:"hover"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny",onClick:()=>function(e){re.value=!1,ge({chatMessageType:z.EMOJI,msg:e})}(e)},{icon:f((()=>[l("img",{src:t},null,8,B)])),_:2},1032,["onClick"])])),default:f((()=>[y(" "+u(e),1)])),_:2},1024)))),128))])])),_:1},8,["show"])])),default:f((()=>[y(" 表情 ")])),_:1}),p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny",onClick:t[2]||(t[2]=()=>ge({chatMessageType:c(z).EMOJI,msg:0}))},{icon:f((()=>[$])),_:1})])),default:f((()=>[y(" 点赞 ")])),_:1}),p(c(I),{abstract:"",multiple:"",accept:"image/*",onChange:t[3]||(t[3]=e=>ue(e,c(z).IMAGE))},{default:f((()=>[p(c(T),{abstract:""},{default:f((({handleClick:e})=>[p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny",onClick:e},{icon:f((()=>[P])),_:2},1032,["onClick"])])),default:f((()=>[y(" 上传图片 ")])),_:2},1024)])),_:1})])),_:1}),p(c(I),{abstract:"",multiple:"",accept:"video/*,.pdf,.doc.docx,,.zip,.xlsx,.txt",onChange:t[4]||(t[4]=e=>ue(e,c(z).FILE))},{default:f((()=>[p(c(T),{abstract:""},{default:f((({handleClick:e})=>[p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny",onClick:e},{icon:f((()=>[Q])),_:2},1032,["onClick"])])),default:f((()=>[y(" 上传文件 ")])),_:2},1024)])),_:1})])),_:1}),c(ne)?(i(),s(m,{key:0},[p(b,v(c(ie),{onComfirm:t[5]||(t[5]=e=>ae(c(z).AUDIO,e))}),{trigger:f((()=>[p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny"},{icon:f((()=>[p(c(M),{size:"18",component:c(D)},null,8,["component"])])),_:1})])),default:f((()=>[y(" 语音通话 ")])),_:1})])),_:1},16),p(b,v(c(ie),{onComfirm:t[6]||(t[6]=e=>ae(c(z).VIDEO,e))}),{trigger:f((()=>[p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny"},{icon:f((()=>[p(c(M),{size:"20",component:c(A)},null,8,["component"])])),_:1})])),default:f((()=>[y(" 视频会议 ")])),_:1})])),_:1},16)],64)):(i(),s(m,{key:1},[p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny",onClick:t[7]||(t[7]=()=>ae(c(z).AUDIO))},{icon:f((()=>[p(c(M),{size:"18",component:c(D)},null,8,["component"])])),_:1})])),default:f((()=>[y(" 语音通话 ")])),_:1}),p(c(_),{"show-arrow":!1,trigger:"hover",placement:"top"},{trigger:f((()=>[p(c(C),{quaternary:"",size:"tiny",onClick:t[8]||(t[8]=()=>ae(c(z).VIDEO))},{icon:f((()=>[p(c(M),{size:"20",component:c(A)},null,8,["component"])])),_:1})])),default:f((()=>[y(" 视频通话 ")])),_:1})],64))]),o(l("div",{ref_key:"inputRef",ref:Z,class:"input-box",contenteditable:"",onKeydown:ce,onInput:le},null,544),[[w,c(ee).id]]),l("div",W,[Y,p(c(C),{type:"primary",round:"",disabled:c(se),onClick:pe},{default:f((()=>[y("发送")])),_:1},8,["disabled"])])],4)),[[w,c(ee).id]])}});export{Z as default};
@@ -12,13 +12,14 @@ declare const _default: import("vue").DefineComponent<{}, {
12
12
  defaultValue?: undefined;
13
13
  } | {
14
14
  mode: string;
15
- defaultValue: any[];
15
+ defaultValue: AnyObject[];
16
16
  disabledIds?: undefined;
17
17
  }>;
18
18
  handleOpenChatFile: (type: string) => void;
19
19
  NAvatar: any;
20
20
  NIcon: any;
21
21
  NButton: any;
22
+ NTooltip: any;
22
23
  PersonProfile: import("vue").DefineComponent<{
23
24
  userId: {
24
25
  type: StringConstructor;
@@ -294,6 +295,10 @@ declare const _default: import("vue").DefineComponent<{}, {
294
295
  allowedInvalidValue: {
295
296
  type: StringConstructor;
296
297
  };
298
+ to: {
299
+ type: import("vue").PropType<string | false | HTMLElement>;
300
+ default: string;
301
+ };
297
302
  }, {
298
303
  attrs: {
299
304
  [x: string]: unknown;
@@ -314,6 +319,10 @@ declare const _default: import("vue").DefineComponent<{}, {
314
319
  allowedInvalidValue: {
315
320
  type: StringConstructor;
316
321
  };
322
+ to: {
323
+ type: import("vue").PropType<string | false | HTMLElement>;
324
+ default: string;
325
+ };
317
326
  }>> & {
318
327
  "onUpdate:formatted-value"?: ((...args: any[]) => any) | undefined;
319
328
  }>>;
@@ -350,10 +359,15 @@ declare const _default: import("vue").DefineComponent<{}, {
350
359
  allowedInvalidValue: {
351
360
  type: StringConstructor;
352
361
  };
362
+ to: {
363
+ type: import("vue").PropType<string | false | HTMLElement>;
364
+ default: string;
365
+ };
353
366
  }>> & {
354
367
  "onUpdate:formatted-value"?: ((...args: any[]) => any) | undefined;
355
368
  }, {
356
369
  updateUnchangedValue: boolean;
370
+ to: string | false | HTMLElement;
357
371
  }>>;
358
372
  formatTime: typeof import("../utils").formatTime;
359
373
  MESSAGE_TYPE: typeof import("../constants").MESSAGE_TYPE;
@@ -382,9 +396,10 @@ declare const _default: import("vue").DefineComponent<{}, {
382
396
  };
383
397
  disabledIds: {
384
398
  type: import("vue").PropType<string[]>;
399
+ default: () => never[];
385
400
  };
386
401
  defaultValue: {
387
- type: import("vue").PropType<string[]>;
402
+ type: import("vue").PropType<AnyObject[]>;
388
403
  };
389
404
  }, {
390
405
  props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
@@ -401,34 +416,53 @@ declare const _default: import("vue").DefineComponent<{}, {
401
416
  };
402
417
  disabledIds: {
403
418
  type: import("vue").PropType<string[]>;
419
+ default: () => never[];
404
420
  };
405
421
  defaultValue: {
406
- type: import("vue").PropType<string[]>;
422
+ type: import("vue").PropType<AnyObject[]>;
407
423
  };
408
424
  }>> & {
409
425
  onComfirm?: ((...args: any[]) => any) | undefined;
410
426
  }>>;
411
427
  emit: (event: "comfirm", ...args: any[]) => void;
412
428
  state: import("../types").IState;
429
+ listRef: import("vue").Ref<any>;
430
+ keyword: import("vue").Ref<any>;
413
431
  showModal: import("vue").Ref<boolean>;
414
- checkedIds: import("vue").Ref<(string | number)[]>;
432
+ checkedOptions: import("vue").Ref<AnyObject[]>;
415
433
  options: import("vue").Ref<AnyObject[]>;
416
434
  groupName: import("vue").Ref<string>;
435
+ checkedSourceIds: import("vue").Ref<(string | number)[]>;
436
+ userList: import("vue").Ref<AnyObject[]>;
437
+ handleInput: () => void;
438
+ _disabledIds: import("vue").ComputedRef<any[]>;
439
+ defaultOptions: import("vue").ComputedRef<{
440
+ id: any;
441
+ name: any;
442
+ avatar: any;
443
+ }[]>;
444
+ checkedIds: import("vue").ComputedRef<any[]>;
417
445
  btnDisabled: import("vue").ComputedRef<boolean>;
446
+ allChecked: import("vue").WritableComputedRef<boolean>;
418
447
  handlePositiveClick: () => Promise<void>;
419
- renderSourceLabel: ({ option }: {
420
- option: AnyObject;
421
- }) => JSX.Element;
422
- renderTargetList: (props: {
423
- onCheck: (checkedValueList: (string | number)[]) => void;
424
- checkedOptions: AnyObject[];
425
- pattern: string;
426
- }) => JSX.Element | null;
448
+ updateCheckedSourceIds: () => void;
449
+ handleSourceIdsUpdate: (value: (string | number)[], meta: {
450
+ actionType: "check" | "uncheck";
451
+ value: string | number;
452
+ }) => void;
453
+ closeTag: (id: string) => void;
454
+ renderTargetList: () => JSX.Element[] | null;
427
455
  NModal: any;
428
456
  NButton: any;
429
- NTransfer: any;
457
+ NSpace: any;
458
+ NAvatar: any;
430
459
  NIcon: any;
460
+ NTag: any;
431
461
  NInput: any;
462
+ NCheckbox: any;
463
+ NCheckboxGroup: any;
464
+ NTooltip: any;
465
+ 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<{}>>, {}>;
432
466
  AddOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
433
467
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "comfirm"[], "comfirm", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
434
468
  title: {
@@ -444,15 +478,17 @@ declare const _default: import("vue").DefineComponent<{}, {
444
478
  };
445
479
  disabledIds: {
446
480
  type: import("vue").PropType<string[]>;
481
+ default: () => never[];
447
482
  };
448
483
  defaultValue: {
449
- type: import("vue").PropType<string[]>;
484
+ type: import("vue").PropType<AnyObject[]>;
450
485
  };
451
486
  }>> & {
452
487
  onComfirm?: ((...args: any[]) => any) | undefined;
453
488
  }, {
454
489
  mode: string;
455
490
  title: string;
491
+ disabledIds: string[];
456
492
  }>;
457
493
  PersonAddOutline: 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<{}>>, {}>;
458
494
  }, {}, {}, {}, 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 o,computed as i,openBlock as t,createElementBlock as s,Fragment as a,unref as n,createElementVNode as r,createVNode as l,withCtx as c,toDisplayString as u,normalizeProps as m,guardReactiveProps as h,createCommentVNode as d}from"vue";import{NAvatar as v,NButton as p,NIcon as f}from"naive-ui";import{useState as y}from"../hooks/useState.js";import{useSession as _}from"../hooks/useSession.js";import"trtc-sdk-v5";import"date-fns";import"lodash-es";import"../utils/emoji.js";import j from"./PersonProfile.vue.js";import w from"./ChatSet.vue.js";import C from"./ChatFile.vue.js";import b from"./ChatRecord.vue.js";import g from"./ChatAdd.vue.js";import{PersonAddOutline as k}from"@vicons/ionicons5";const z={key:0,class:"chat-header box-shadow"},S={class:"chat-header__left"},q={class:"name"},I={class:"chat-header__right"},U=r("i",{class:"chat--iconfont chat--icon-image"},null,-1),x=r("i",{class:"chat--iconfont chat--icon-folder"},null,-1),G=r("i",{class:"chat--iconfont chat--icon-list-search"},null,-1),P=r("i",{class:"chat--iconfont chat--icon-set"},null,-1);var A=e({__name:"ChatHeader",setup(e){const{state:A}=y(),{isGroupChat:F}=_(A),H=o(!1),R=o(!1),V=o("image"),B=o(!1),D=i((()=>{const e=A.currentGroupUser.map((e=>e.id));return F.value?{mode:"join",disabledIds:e}:{mode:"create",defaultValue:e}}));function E(e){V.value=e,R.value=!0}return(e,o)=>(t(),s(a,null,[n(A).id?(t(),s("section",z,[r("div",S,[l(j,{"user-id":n(A).currentSessionItem.receiver,disabled:n(F)},{trigger:c((()=>[l(n(v),{round:"",size:30,src:n(A).currentSessionItem.avatar},null,8,["src"])])),_:1},8,["user-id","disabled"]),r("span",q,u(n(A).currentSessionItem.name),1)]),r("div",I,[l(n(p),{quaternary:"",size:"tiny",onClick:o[0]||(o[0]=()=>E("image"))},{icon:c((()=>[U])),_:1}),l(n(p),{quaternary:"",size:"tiny",onClick:o[1]||(o[1]=()=>E("file"))},{icon:c((()=>[x])),_:1}),l(g,m(h(n(D))),{trigger:c((()=>[l(n(p),{quaternary:"",size:"tiny"},{icon:c((()=>[l(n(f),{size:"18",component:n(k)},null,8,["component"])])),_:1})])),_:1},16),l(n(p),{quaternary:"",size:"tiny",onClick:o[2]||(o[2]=()=>B.value=!0)},{icon:c((()=>[G])),_:1}),l(n(p),{quaternary:"",size:"tiny",onClick:o[3]||(o[3]=()=>H.value=!0)},{icon:c((()=>[P])),_:1})])])):d("v-if",!0),l(w,{show:H.value,"onUpdate:show":o[4]||(o[4]=e=>H.value=e)},null,8,["show"]),l(C,{show:R.value,"onUpdate:show":o[5]||(o[5]=e=>R.value=e),type:V.value,visible:R.value},null,8,["show","type","visible"]),l(b,{show:B.value,"onUpdate:show":o[6]||(o[6]=e=>B.value=e),visible:B.value},null,8,["show","visible"])],64))}});export{A as default};
1
+ import{defineComponent as e,ref as o,computed as t,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 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"},G={class:"chat-header__right"},x=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=o(!1),B=o(!1),D=o("image"),E=o(!1),J=t((()=>{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,o)=>(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)},{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",G,[l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny",onClick:o[0]||(o[0]=()=>K("image"))},{icon:c((()=>[x])),_:1})])),default:c((()=>[m(" 图片 ")])),_:1}),l(s(f),{"show-arrow":!1,trigger:"hover",placement:"bottom"},{trigger:c((()=>[l(s(g),{quaternary:"",size:"tiny",onClick:o[1]||(o[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:o[2]||(o[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:o[3]||(o[3]=()=>V.value=!0)},{icon:c((()=>[F])),_:1})])),default:c((()=>[m(" 聊天设置 ")])),_:1})])])):v("v-if",!0),l(j,{show:V.value,"onUpdate:show":o[4]||(o[4]=e=>V.value=e)},null,8,["show"]),l(C,{show:B.value,"onUpdate:show":o[5]||(o[5]=e=>B.value=e),type:D.value,visible:B.value},null,8,["show","type","visible"]),l(k,{show:E.value,"onUpdate:show":o[6]||(o[6]=e=>E.value=e),visible:E.value},null,8,["show","visible"])],64))}});export{H as default};
@@ -1,5 +1,6 @@
1
+ import { CSSProperties } from 'vue';
1
2
  import { AnyObject } from '../../../../shared/types';
2
- import { downloadFile, simplifyMessage, isAudioOrVideoMessage, getAVTime } from '../utils';
3
+ import { simplifyMessage, isAudioOrVideoMessage, getAVTime } from '../utils';
3
4
  import { MESSAGE_TYPE } from '../constants';
4
5
  declare const _default: import("vue").DefineComponent<{}, {
5
6
  chatMainRef: import("vue").Ref<HTMLElement | undefined>;
@@ -7,7 +8,10 @@ declare const _default: import("vue").DefineComponent<{}, {
7
8
  setMsgList: (list?: AnyObject[]) => void;
8
9
  setCurrentSessionItem: (item: AnyObject) => void;
9
10
  isGroupChat: import("vue").ComputedRef<boolean>;
11
+ contextmenuRef: import("vue").Ref<any>;
10
12
  showMenu: import("vue").Ref<boolean>;
13
+ menuPosition: any;
14
+ menuMsgId: import("vue").Ref<any>;
11
15
  pageInfo: {
12
16
  page: number;
13
17
  hasMore: boolean;
@@ -18,6 +22,8 @@ declare const _default: import("vue").DefineComponent<{}, {
18
22
  '--c-tip-gap': string;
19
23
  }>;
20
24
  getHistoryRecord: () => Promise<void>;
25
+ handleContextmenu: (event: MouseEvent, msgId: string) => Promise<void>;
26
+ setMenuPosition: (event: MouseEvent) => Promise<void>;
21
27
  showMessage: (item: AnyObject) => boolean;
22
28
  showTemplateMsg: (item: AnyObject, type: 'system' | 'template') => boolean | undefined;
23
29
  isTemplate3: (content: AnyObject) => boolean;
@@ -25,12 +31,14 @@ declare const _default: import("vue").DefineComponent<{}, {
25
31
  setScrollToButtom: () => Promise<void>;
26
32
  resetInfo: () => void;
27
33
  setReferenceMsg: (msgItem: AnyObject) => void;
34
+ handleSelect: (key: string, msgItem: AnyObject) => void;
28
35
  NAvatar: any;
29
36
  NImageGroup: any;
30
37
  NImage: any;
31
38
  NIcon: any;
32
39
  NButtonGroup: any;
33
40
  NButton: any;
41
+ NSpace: any;
34
42
  PersonProfile: import("vue").DefineComponent<{
35
43
  userId: {
36
44
  type: StringConstructor;
@@ -188,18 +196,29 @@ declare const _default: import("vue").DefineComponent<{}, {
188
196
  type: BooleanConstructor;
189
197
  default: boolean;
190
198
  };
191
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("clickMenu" | "update:show")[], "clickMenu" | "update:show", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
199
+ position: {
200
+ type: import("vue").PropType<CSSProperties>;
201
+ };
202
+ msgId: {
203
+ type: StringConstructor;
204
+ };
205
+ }, () => JSX.Element | null, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("select" | "update:show")[], "select" | "update:show", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
192
206
  show: {
193
207
  type: BooleanConstructor;
194
208
  default: boolean;
195
209
  };
210
+ position: {
211
+ type: import("vue").PropType<CSSProperties>;
212
+ };
213
+ msgId: {
214
+ type: StringConstructor;
215
+ };
196
216
  }>> & {
197
- onClickMenu?: ((...args: any[]) => any) | undefined;
217
+ onSelect?: ((...args: any[]) => any) | undefined;
198
218
  "onUpdate:show"?: ((...args: any[]) => any) | undefined;
199
219
  }, {
200
220
  show: boolean;
201
221
  }>;
202
- downloadFile: typeof downloadFile;
203
222
  simplifyMessage: typeof simplifyMessage;
204
223
  isAudioOrVideoMessage: typeof isAudioOrVideoMessage;
205
224
  getAVTime: typeof getAVTime;
@@ -208,5 +227,6 @@ declare const _default: import("vue").DefineComponent<{}, {
208
227
  EllipsisHorizontal: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
209
228
  CallOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
210
229
  VideocamOutline: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
230
+ DocumentSharp: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, import("vue").EmitsOptions, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
211
231
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}>;
212
232
  export default _default;