@aochuang/client-sdk 1.0.376 → 1.0.378

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 (170) hide show
  1. package/components/chat-editor/chat-editor-suggestions/chat-editor-suggestions.vue +40 -4
  2. package/components/chat-editor/chat-editor.vue +75 -5
  3. package/components/index.js +1 -6
  4. package/components/session-select/session-select-item.vue +9 -8
  5. package/components/wechat-chat-control/location/location.vue +3 -3
  6. package/components/wework-chat-control/channel-live/channel-live.vue +2 -7
  7. package/components/wework-chat-control/company-card/company-card.vue +1 -1
  8. package/components/wework-chat-control/custom-expression/custom-expression.vue +1 -2
  9. package/components/wework-chat-control/file-url/file-url.vue +16 -34
  10. package/components/wework-chat-control/image/image.vue +2 -137
  11. package/components/wework-chat-control/index.js +7 -15
  12. package/components/wework-chat-control/location/location.vue +3 -3
  13. package/components/wework-chat-control/red-envelopes/red-envelopes.vue +2 -3
  14. package/components/wework-chat-control/text/text.vue +144 -24
  15. package/components/wework-chat-control/url/url-miniprogram.vue +7 -6
  16. package/components/wework-chat-control/url/url.vue +2 -26
  17. package/components/wework-chat-control/util.js +17 -26
  18. package/components/wework-chat-control/video/video.vue +2 -10
  19. package/components/wework-chat-control/voice/voice.vue +2 -9
  20. package/components/wework-chat-panel/chat-panel-controls/company-card/company-card.vue +35 -0
  21. package/components/wework-chat-panel/chat-panel-controls/expression/expression.vue +36 -0
  22. package/components/wework-chat-panel/chat-panel-controls/file-url/file-url.vue +35 -0
  23. package/components/wework-chat-panel/chat-panel-controls/image/image.vue +36 -0
  24. package/components/wework-chat-panel/chat-panel-controls/index.js +35 -0
  25. package/components/wework-chat-panel/chat-panel-controls/jx-sys-text/jx-sys-text.vue +28 -0
  26. package/components/wework-chat-panel/chat-panel-controls/link/link.vue +35 -0
  27. package/components/wework-chat-panel/chat-panel-controls/location/location.vue +35 -0
  28. package/components/wework-chat-panel/chat-panel-controls/text/text.vue +43 -0
  29. package/components/wework-chat-panel/chat-panel-controls/unkonw/unkonw.vue +39 -0
  30. package/components/wework-chat-panel/chat-panel-controls/video/video.vue +37 -0
  31. package/components/wework-chat-panel/chat-panel-controls/voice/voice.vue +35 -0
  32. package/components/wework-chat-panel/chat-panel-item.vue +25 -56
  33. package/components/wework-chat-panel/chat-panel.vue +13 -96
  34. package/package.json +3 -10
  35. package/services/client-chat/client-chat-wechat/client-chat-message.js +15 -5
  36. package/services/client-chat/client-chat-wechat/client-chat-session.js +13 -50
  37. package/services/client-chat/client-chat-wechat/client-chat.js +4 -48
  38. package/services/client-chat/client-chat-wechat/docs//350/264/246/345/217/267/346/234/252/350/257/273/346/225/260/351/207/217/344/270/216/344/274/232/350/257/235/346/234/252/350/257/273/346/225/260/351/207/217/344/270/215/344/270/200/350/207/264/351/227/256/351/242/230/344/277/256/345/244/215.md +4 -2
  39. package/services/client-chat/client-chat-wework/client-chat-account.js +1 -84
  40. package/services/client-chat/client-chat-wework/client-chat-concats.js +17 -81
  41. package/services/client-chat/client-chat-wework/client-chat-message.js +5 -45
  42. package/services/client-chat/client-chat-wework/client-chat-session.js +4 -59
  43. package/services/client-chat/client-chat-wework/client-chat-socket.js +1 -13
  44. package/services/client-chat/client-chat-wework/client-chat.js +11 -320
  45. package/services/client-chat/client-chat-wework/utils.js +5 -5
  46. package/uni-common/account-portray/account-portray.vue +51 -0
  47. package/uni-common/account-select/account-select-item.vue +172 -0
  48. package/uni-common/account-select/account-select.vue +252 -0
  49. package/uni-common/all-friend-avatar/all-friend-avatar.vue +49 -0
  50. package/uni-common/friend-avatar/default.svg +1 -0
  51. package/uni-common/friend-avatar/friend-avatar.vue +27 -0
  52. package/uni-common/friend-avatar/index.js +3 -0
  53. package/uni-common/friend-loader/friend-loader.vue +53 -0
  54. package/uni-common/friend-portray/friend-portray.vue +56 -0
  55. package/uni-common/group-avatar/default.svg +1 -0
  56. package/uni-common/group-avatar/group-avatar.vue +18 -0
  57. package/uni-common/group-avatar/index.js +3 -0
  58. package/uni-common/room-avatar/default.svg +6 -0
  59. package/uni-common/room-avatar/index.js +3 -0
  60. package/uni-common/room-avatar/room-avatar.vue +27 -0
  61. package/uni-common/room-loader/room-loader.vue +53 -0
  62. package/uni-common/room-portray/room-portray.vue +56 -0
  63. package/uni-components/chat-control/calling/calling.vue +91 -0
  64. package/uni-components/chat-control/calling/phone-fill.svg +1 -0
  65. package/uni-components/chat-control/calling/vidicon-fill.svg +1 -0
  66. package/uni-components/chat-control/channel-video/channel-video.vue +89 -0
  67. package/uni-components/chat-control/channel-video-card/channel-video-card.vue +105 -0
  68. package/uni-components/chat-control/channel-video-live/channel-video-live.vue +92 -0
  69. package/uni-components/chat-control/chat-control-config-item/chat-control-config-item.vue +20 -0
  70. package/uni-components/chat-control/chat-control-config-item/index.js +3 -0
  71. package/uni-components/chat-control/chat-control-config-msg/chat-control-config-msg-app.vue +25 -0
  72. package/uni-components/chat-control/chat-control-config-msg/chat-control-config-msg-h5.vue +21 -0
  73. package/{components/wework-chat-control/wework-chat-control-config.vue → uni-components/chat-control/chat-control-config.vue} +13 -16
  74. package/uni-components/chat-control/chat-control.vue +218 -0
  75. package/uni-components/chat-control/company-card/company-card.vue +123 -0
  76. package/uni-components/chat-control/const.js +28 -0
  77. package/uni-components/chat-control/expression/expression.vue +41 -0
  78. package/uni-components/chat-control/image/image.vue +68 -0
  79. package/uni-components/chat-control/index.js +89 -0
  80. package/uni-components/chat-control/location/location.vue +110 -0
  81. package/uni-components/chat-control/member-change/member-change.vue +32 -0
  82. package/uni-components/chat-control/quote-message/quote-message.vue +216 -0
  83. package/uni-components/chat-control/real-time-position/real-time-position.vue +62 -0
  84. package/uni-components/chat-control/redpacket/red-envelope.svg +1 -0
  85. package/uni-components/chat-control/redpacket/redpacket.vue +75 -0
  86. package/uni-components/chat-control/share-card/share-card.vue +101 -0
  87. package/uni-components/chat-control/system/system.vue +69 -0
  88. package/uni-components/chat-control/system-batch-message/system-batch-message.vue +30 -0
  89. package/uni-components/chat-control/system-text/system-text.vue +32 -0
  90. package/uni-components/chat-control/text/text.vue +67 -0
  91. package/uni-components/chat-control/text-with-at/text-with-at.vue +51 -0
  92. package/uni-components/chat-control/transfer/red-transfer.svg +1 -0
  93. package/uni-components/chat-control/transfer/transfer.vue +80 -0
  94. package/uni-components/chat-control/unkonw/unkonw.vue +37 -0
  95. package/uni-components/chat-control/url/icons/file-excel-line.svg +1 -0
  96. package/uni-components/chat-control/url/icons/file-info-line.svg +1 -0
  97. package/uni-components/chat-control/url/icons/file-music-line.svg +1 -0
  98. package/uni-components/chat-control/url/icons/file-pdf-line.svg +1 -0
  99. package/uni-components/chat-control/url/icons/file-ppt-line.svg +1 -0
  100. package/uni-components/chat-control/url/icons/file-settings-line.svg +1 -0
  101. package/uni-components/chat-control/url/icons/file-text-line.svg +1 -0
  102. package/uni-components/chat-control/url/icons/file-unknow-line.svg +1 -0
  103. package/uni-components/chat-control/url/icons/file-word-line.svg +1 -0
  104. package/uni-components/chat-control/url/icons/file-zip-line.svg +1 -0
  105. package/uni-components/chat-control/url/icons/index.js +24 -0
  106. package/uni-components/chat-control/url/miniprogram.svg +1 -0
  107. package/uni-components/chat-control/url/url-miniprogram.vue +116 -0
  108. package/uni-components/chat-control/url/url.vue +306 -0
  109. package/uni-components/chat-control/url-new/icons/file-excel-line.svg +1 -0
  110. package/uni-components/chat-control/url-new/icons/file-info-line.svg +1 -0
  111. package/uni-components/chat-control/url-new/icons/file-music-line.svg +1 -0
  112. package/uni-components/chat-control/url-new/icons/file-pdf-line.svg +1 -0
  113. package/uni-components/chat-control/url-new/icons/file-ppt-line.svg +1 -0
  114. package/uni-components/chat-control/url-new/icons/file-settings-line.svg +1 -0
  115. package/uni-components/chat-control/url-new/icons/file-text-line.svg +1 -0
  116. package/uni-components/chat-control/url-new/icons/file-unknow-line.svg +1 -0
  117. package/uni-components/chat-control/url-new/icons/file-word-line.svg +1 -0
  118. package/uni-components/chat-control/url-new/icons/file-zip-line.svg +1 -0
  119. package/uni-components/chat-control/url-new/icons/index.js +24 -0
  120. package/uni-components/chat-control/url-new/url-new.vue +110 -0
  121. package/uni-components/chat-control/utils.js +12 -0
  122. package/uni-components/chat-control/video/video.vue +156 -0
  123. package/uni-components/chat-control/voice/voice.vue +166 -0
  124. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet-collect.vue +84 -0
  125. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet-system.vue +28 -0
  126. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet.vue +85 -0
  127. package/uni-components/chat-editor/chat-editor-func/chat-editor-func.vue +157 -0
  128. package/uni-components/chat-editor/chat-editor-func-at/chat-editor-func-at-panel.vue +158 -0
  129. package/uni-components/chat-editor/chat-editor-func-at/chat-editor-func-at.vue +61 -0
  130. package/uni-components/chat-editor/chat-editor-func-button/chat-editor-func-button.vue +58 -0
  131. package/uni-components/chat-editor/chat-editor-func-file/chat-editor-func-file.vue +54 -0
  132. package/uni-components/chat-editor/chat-editor-func-image/chat-editor-func-image.vue +42 -0
  133. package/uni-components/chat-editor/chat-editor-func-video/chat-editor-func-video.vue +42 -0
  134. package/uni-components/chat-editor/chat-editor-func-voice/chat-editor-func-voice.vue +25 -0
  135. package/uni-components/chat-editor/chat-editor-message-send/chat-editor-message-send.vue +158 -0
  136. package/uni-components/chat-editor/chat-editor-quote/chat-editor-quote.vue +75 -0
  137. package/uni-components/chat-editor/chat-editor.vue +257 -0
  138. package/uni-components/chat-editor/index.js +10 -0
  139. package/uni-components/chat-editor/util.js +65 -0
  140. package/uni-components/chat-panel/chat-panel-chats-box.vue +238 -0
  141. package/uni-components/chat-panel/chat-panel-chats-forward/chat-panel-chats-forward.vue +273 -0
  142. package/uni-components/chat-panel/chat-panel-chats-item.vue +578 -0
  143. package/uni-components/chat-panel/chat-panel-chats-status/chat-panel-chats-status.vue +71 -0
  144. package/uni-components/chat-panel/chat-panel-chats.vue +368 -0
  145. package/uni-components/chat-panel/chat-panel.vue +227 -0
  146. package/uni-components/contacts-group-select/contacts-group-select-item.vue +85 -0
  147. package/uni-components/contacts-group-select/contacts-group-select-panel.vue +119 -0
  148. package/uni-components/contacts-group-select/contacts-group-select.vue +150 -0
  149. package/common/.DS_Store +0 -0
  150. package/components/.DS_Store +0 -0
  151. package/components/wechat-chat-control/.DS_Store +0 -0
  152. package/components/wechat-chat-control/transfer/.DS_Store +0 -0
  153. package/components/wechat-chat-control/url/.DS_Store +0 -0
  154. package/components/wechat-chat-control/voice/.DS_Store +0 -0
  155. package/components/wework-chat-control/channel-card/channel-card.vue +0 -144
  156. package/components/wework-chat-control/link/.DS_Store +0 -0
  157. package/components/wework-chat-control/merge-message/merge-message-panel.vue +0 -63
  158. package/components/wework-chat-control/merge-message/merge-message.vue +0 -84
  159. package/components/wework-chat-control/merge-message/util.js +0 -59
  160. package/components/wework-chat-control/metting/enterprise-wechat.png +0 -0
  161. package/components/wework-chat-control/metting/meeting-video.svg +0 -4
  162. package/components/wework-chat-control/metting/metting.vue +0 -181
  163. package/components/wework-chat-control/text/text-default.vue +0 -99
  164. package/components/wework-chat-control/text/text-quote.vue +0 -105
  165. package/components/wework-chat-control/url/url-channel-live.vue +0 -53
  166. package/components/wework-chat-control/video/.DS_Store +0 -0
  167. package/components/wework-chat-control/wework-chat-control-config-item.vue +0 -24
  168. package/components/wework-chat-control/wework-chat-control-config-msg.vue +0 -25
  169. package/components/wework-chat-panel/chat-panel-chat-status/chat-panel-chat-status.vue +0 -73
  170. package/services/.DS_Store +0 -0
@@ -0,0 +1,158 @@
1
+ <template>
2
+ <view class="bi-chat-editor-message-send" @click.stop>
3
+ <view class="bi-chat-editor-message-send__target">
4
+ <view class="bi-chat-editor-message-send__target-label">发送给:</view>
5
+ <view class="bi-chat-editor-message-send__target-object">
6
+ <template v-if="sendTarget">
7
+ <template v-if="sendTarget.chatroomId">
8
+ <bi-portray :name="sendTarget.nickname" :avatar="sendTarget.chatroomAvatar"></bi-portray>
9
+ </template>
10
+ <template v-else>
11
+ <bi-portray :name="sendTarget.nickname" :avatar="sendTarget.avatar"></bi-portray>
12
+ </template>
13
+ </template>
14
+ </view>
15
+ </view>
16
+ <view class="bi-chat-editor-message-send__content">
17
+ <template v-if="messageType === MESSAGE_TYPE.IMAGE">
18
+ <chat-control-image :data="innerMessageContent"></chat-control-image>
19
+ </template>
20
+ <template v-else-if="messageType === MESSAGE_TYPE.VIDEO">
21
+ <chat-control-video :data="innerMessageContent"></chat-control-video>
22
+ </template>
23
+ <template v-else-if="messageType === MESSAGE_TYPE.URL">
24
+ <chat-control-url :data="innerMessageContent"></chat-control-url>
25
+ </template>
26
+ </view>
27
+ <view class="bi-chat-editor-message-send__toolbar">
28
+ <view class="bi-chat-editor-message-send__toolbar-item">
29
+ <uv-button size="small" @click="handleCancelClick">取消</uv-button>
30
+ </view>
31
+ <view class="bi-chat-editor-message-send__toolbar-item">
32
+ <uv-button size="small" type="primary" :disabled="uploading" :loading="sending" @click="handleSendClick">发送</uv-button>
33
+ </view>
34
+ </view>
35
+ </view>
36
+ </template>
37
+
38
+ <script>
39
+ import BiPortray from '@aochuang/common/uni-common/portray/portray.vue'
40
+ import BiUpload from '@/common/upload/upload.vue'
41
+ import ChatControlImage from 'client-sdk/uni-components/chat-control/image/image.vue'
42
+ import ChatControlVideo from 'client-sdk/uni-components/chat-control/video/video.vue'
43
+ import ChatControlUrl from 'client-sdk/uni-components/chat-control/url/url.vue'
44
+ import { MESSAGE_TYPE } from 'client-sdk/uni-components/chat-control/index.js'
45
+
46
+ export default {
47
+ name: 'BiChatEditorMessageSend',
48
+ components: {
49
+ BiPortray,
50
+ BiUpload,
51
+ ChatControlImage,
52
+ ChatControlUrl,
53
+ ChatControlVideo
54
+ },
55
+ props: {
56
+ sendTarget: {
57
+ type: Object,
58
+ required: true
59
+ },
60
+ submitMethod: {
61
+ type: Function,
62
+ required: true
63
+ },
64
+ messageType: {
65
+ type: [String, Number],
66
+ validator (value) {
67
+ return [MESSAGE_TYPE.IMAGE, MESSAGE_TYPE.VIDEO, MESSAGE_TYPE.URL].includes(value)
68
+ }
69
+ },
70
+ messageContent: {
71
+ type: [String, Object]
72
+ }
73
+ },
74
+ data () {
75
+ return {
76
+ MESSAGE_TYPE,
77
+ uploading: false,
78
+ sending: false,
79
+ innerMessageContent: this.messageContent
80
+ }
81
+ },
82
+ computed: {
83
+ previewFileData () {
84
+ if (this.MESSAGE_TYPE.URL !== this.messageType) {
85
+ return
86
+ }
87
+ return this.messageContent
88
+ }
89
+ },
90
+ methods: {
91
+ handleCancelClick () {
92
+ this.$emit('cancel')
93
+ },
94
+ handleUploading () {
95
+ this.uploading = true
96
+ },
97
+ handleUploadComplete () {
98
+ this.uploading = false
99
+ },
100
+ handleSendClick () {
101
+ this.sending = true
102
+ let content = this.innerMessageContent
103
+ if (this.messageType === MESSAGE_TYPE.URL) {
104
+ if (this.messageFile) {
105
+ content = JSON.stringify({
106
+ type: 'file',
107
+ totalLen: this.messageFile.size,
108
+ title: this.messageFile.name,
109
+ url: this.innerMessageContent
110
+ })
111
+ }
112
+ }
113
+ this.submitMethod({
114
+ data: {
115
+ content,
116
+ messageType: this.messageType
117
+ }
118
+ }).finally(() => {
119
+ this.sending = false
120
+ })
121
+ }
122
+ }
123
+ }
124
+ </script>
125
+
126
+ <style lang="less">
127
+ .bi-chat-editor-message-send{
128
+ background-color: #fff;
129
+ width: 80vw;
130
+ max-width: 420px;
131
+ max-height: 80vh;
132
+ border-radius: 4px;
133
+ }
134
+ .bi-chat-editor-message-send__target{
135
+ padding: 12px 0;
136
+ margin: 0 12px;
137
+ border-bottom: 1px solid #eee;
138
+ }
139
+ .bi-chat-editor-message-send__target-label{
140
+ margin-bottom: 6px;
141
+ }
142
+ .bi-chat-editor-message-send__content{
143
+ padding: 12px;
144
+ border-bottom: 1px solid #eee;
145
+ max-height: 300px;
146
+ overflow: auto;
147
+ }
148
+ .bi-chat-editor-message-send__toolbar{
149
+ display: flex;
150
+ flex-direction: row;
151
+ align-items: center;
152
+ justify-content: flex-end;
153
+ padding: 12px;
154
+ }
155
+ .bi-chat-editor-message-send__toolbar-item{
156
+ margin-left: 12px;
157
+ }
158
+ </style>
@@ -0,0 +1,75 @@
1
+ <template>
2
+ <view class="bi-chat-eidtor-quote">
3
+ <sdk-chat-control
4
+ type="quote"
5
+ :msg-type="quoteChat.msgType"
6
+ :content="quotaChatContent"
7
+ ></sdk-chat-control>
8
+ <view class="bi-chat-eidtor-quote__remove" @click="handleRemoveClick"></view>
9
+ </view>
10
+ </template>
11
+
12
+ <script>
13
+ import SdkChatControl from 'client-sdk/uni-components/chat-control/chat-control.vue'
14
+
15
+ export default {
16
+ name: 'BiChatEditorQuote',
17
+ components: {
18
+ SdkChatControl
19
+ },
20
+ props: {
21
+ quoteChat: {
22
+ type: Object,
23
+ required: true
24
+ }
25
+ },
26
+ computed: {
27
+ quotaChatContent () {
28
+ return this.quoteChat.content
29
+ }
30
+ },
31
+ methods: {
32
+ handleRemoveClick () {
33
+ this.$emit('remove')
34
+ }
35
+ }
36
+ }
37
+ </script>
38
+
39
+ <style lang="less">
40
+ .bi-chat-eidtor-quote{
41
+ display: block;
42
+ background-color: rgba(0,0,0,.1);
43
+ border-radius: 4px;
44
+ padding: 6px 30px 6px 6px;
45
+ position: relative;
46
+ }
47
+ .bi-chat-eidtor-quote__remove{
48
+ position: absolute;
49
+ width: 16px;
50
+ height: 16px;
51
+ background-color: #999;
52
+ top: 50%;
53
+ right: 12px;
54
+ border-radius: 50%;
55
+ transform: rotate(45deg) translateY(-50%);
56
+ cursor: pointer;
57
+ transition: all .25s;
58
+ &:before, &:after {
59
+ content: '';
60
+ position: absolute;
61
+ left: 50%;
62
+ top: 50%;
63
+ transform: translate(-50%, -50%);
64
+ background-color: #fff;
65
+ }
66
+ &:before {
67
+ width: 10px;
68
+ height: 1px;
69
+ }
70
+ &:after {
71
+ width: 1px;
72
+ height: 10px;
73
+ }
74
+ }
75
+ </style>
@@ -0,0 +1,257 @@
1
+ <template>
2
+ <view class="bi-chat-editor">
3
+ <view class="bi-chat-editor__inner">
4
+ <view class="bi-chat-editor__tools" v-if="false">
5
+ <view class="bi-chat-editor__tools-item">
6
+ <view class="bi-chat-editor__button" @click.stop="handleAtMemberClick">
7
+ <bi-icon name="at-line" size="24px"></bi-icon>
8
+ </view>
9
+ </view>
10
+ </view>
11
+ <view class="bi-chat-editor__main">
12
+ <view class="bi-chat-editor__input" @click.stop="handleInputClick">
13
+ <uv-textarea
14
+ v-model="formData.content"
15
+ :focus="inputFocus"
16
+ :cursor="inputCursor"
17
+ :maxlength="2000"
18
+ border="none"
19
+ autoHeight
20
+ placeholder="输入消息内容"
21
+ @blur="handleInputBlur"
22
+ @focus="handleInputFocus"
23
+ ></uv-textarea>
24
+ </view>
25
+ <template v-if="$slots.addon">
26
+ <view class="bi-chat-eidtor__addon">
27
+ <slot name="addon"></slot>
28
+ </view>
29
+ </template>
30
+ </view>
31
+ <view class="bi-chat-editor__tools">
32
+ <view class="bi-chat-editor__tools-item" @click.stop>
33
+ <template v-if="extendName != 'chartlet'">
34
+ <view class="bi-chat-editor__button" @click="handleChartletClick">
35
+ <bi-icon name="face-1-line" size="24px"></bi-icon>
36
+ </view>
37
+ </template>
38
+ <template v-else>
39
+ <view class="bi-chat-editor__button" @click="handleKeyboardClick">
40
+ <bi-icon name="keyboard-1-line" size="24px"></bi-icon>
41
+ </view>
42
+ </template>
43
+ </view>
44
+ <view class="bi-chat-editor__tools-item" v-if="hasContent">
45
+ <view class="bi-chat-editor__button is-primary" shape="circle" @click="handleSendClick">
46
+ <bi-icon name="send-plane-fill" color="#fff"></bi-icon>
47
+ </view>
48
+ </view>
49
+ <view class="bi-chat-editor__tools-item" v-else @click.stop>
50
+ <view class="bi-chat-editor__button" @click="handleFunctionClick">
51
+ <bi-icon name="plus-1-line" size="24px"></bi-icon>
52
+ </view>
53
+ </view>
54
+ </view>
55
+ </view>
56
+ <view class="bi-chat-editor__extend" v-if="!!extendName" @click.stop>
57
+ <template v-if="extendName === 'function'">
58
+ <view class="bi-chat-editor__function">
59
+ <chat-editor-func
60
+ :upload-root-directory="uploadRootDirectory"
61
+ :send-target="sendTarget"
62
+ :submit-method="submitMethod"
63
+ >
64
+ <template slot="atmember">
65
+ <slot name="atmember"></slot>
66
+ </template>
67
+ <template slot="notread">
68
+ <slot name="notread"></slot>
69
+ </template>
70
+ <template slot="reply">
71
+ <slot name="reply"></slot>
72
+ </template>
73
+ <template slot="material">
74
+ <slot name="material"></slot>
75
+ </template>
76
+ </chat-editor-func>
77
+ </view>
78
+ </template>
79
+ <template v-else-if="extendName === 'chartlet'">
80
+ <view class="bi-chat-editor__chartlet">
81
+ <chat-editor-chartlet
82
+ :submit-method="submitMethod"
83
+ :insert-text-method="insertInputText"
84
+ ></chat-editor-chartlet>
85
+ </view>
86
+ </template>
87
+ </view>
88
+ <view class="bi-chat-editor__safe"></view>
89
+ </view>
90
+ </template>
91
+
92
+ <script>
93
+ import ChatEditorFunc from './chat-editor-func/chat-editor-func.vue'
94
+ import ChatEditorChartlet from './chat-editor-chartlet/chat-editor-chartlet.vue'
95
+ import { MESSAGE_TYPE } from 'client-sdk/uni-components/chat-control/index.js'
96
+
97
+ export default {
98
+ name: 'BiChatEditor',
99
+ components: {
100
+ ChatEditorFunc,
101
+ ChatEditorChartlet
102
+ },
103
+ props: {
104
+ uploadRootDirectory: {
105
+ type: String,
106
+ required: true
107
+ },
108
+ allowAtMember: {
109
+ type: Boolean,
110
+ default: false
111
+ },
112
+ sendTarget: {
113
+ type: Object,
114
+ required: true
115
+ },
116
+ submitMethod: {
117
+ type: Function
118
+ }
119
+ },
120
+ data () {
121
+ return {
122
+ inputMode: 'text', // 输入方式,text文本,voice录音
123
+ extendName: 'keyboard',
124
+ inputFocus: false,
125
+ inputCursor: null,
126
+ inputLastCursor: null,
127
+ formData: {
128
+ content: ''
129
+ }
130
+ }
131
+ },
132
+ computed: {
133
+ hasContent () {
134
+ return !!this.formData.content
135
+ }
136
+ },
137
+ methods: {
138
+ handleChartletClick () {
139
+ this.extendName = 'chartlet'
140
+ },
141
+ handleKeyboardClick () {
142
+ this.extendName = 'keyboard'
143
+ this.inputFocus = true
144
+ },
145
+ handleFunctionClick () {
146
+ this.extendName = 'function'
147
+ },
148
+ handleInputClick (evt) {
149
+ this.extendName = 'keyboard'
150
+ },
151
+ handleInputBlur (evt) {
152
+ this.inputLastCursor = evt.detail.cursor
153
+ this.inputFocus = false
154
+ },
155
+ handleInputFocus () {
156
+ this.inputFocus = true
157
+ },
158
+ handleSendClick () {
159
+ if (this.submitMethod) {
160
+ this.submitMethod({
161
+ data: {
162
+ content: this.formData.content,
163
+ messageType: MESSAGE_TYPE.TEXT
164
+ }
165
+ }).then(() => {
166
+ this.formData.content = ''
167
+ })
168
+ }
169
+ },
170
+ insertInputText (text) {
171
+ this.inputFocus = true
172
+ this.inputCursor = this.inputLastCursor
173
+ const prependText = this.formData.content.substr(0, this.inputCursor || 0)
174
+ const appendText = this.formData.content.substr(this.inputCursor || 0)
175
+ this.formData.content = prependText + (text || '') + appendText
176
+ },
177
+ collapsePanel () {
178
+ this.extendName = 'keyboard'
179
+ }
180
+ }
181
+ }
182
+ </script>
183
+
184
+ <style lang="less">
185
+ .bi-chat-editor{
186
+ background-color: #f7f7f7;
187
+ border-top: 1px solid rgba(0,0,0,.03);
188
+ box-shadow: 0 -3px 6px rgba(0,0,0,.03);
189
+ }
190
+ .bi-chat-editor__inner{
191
+ display: flex;
192
+ flex-direction: row;
193
+ align-items: flex-end;
194
+ padding: 6px 12px;
195
+ }
196
+ .bi-chat-editor__main{
197
+ flex: 1;
198
+ min-width: 0;
199
+ margin: 0 12px 0 0;
200
+ }
201
+ .bi-chat-editor__input{
202
+ max-height: 240px;
203
+ overflow: auto;
204
+ background-color: #fff;
205
+ border-radius: 3px;
206
+ }
207
+ .bi-chat-eidtor__addon{
208
+ margin-top: 12px;
209
+ }
210
+ .bi-chat-editor__tools{
211
+ display: flex;
212
+ flex-direction: row;
213
+ + .bi-chat-editor__main{
214
+ margin-left: 12px;
215
+ }
216
+ }
217
+ .bi-chat-editor__tools-item {
218
+ height: 39px;
219
+ display: flex;
220
+ flex-direction: column;
221
+ align-items: center;
222
+ justify-content: center;
223
+ &:not(:last-child) {
224
+ margin-right: 12px;
225
+ }
226
+ }
227
+ .bi-chat-editor__extend{
228
+ border-top: 1px solid rgba(0,0,0,.03);
229
+ }
230
+ .bi-chat-editor__function{
231
+ height: 240px;
232
+ padding: 12px;
233
+ box-sizing: border-box;
234
+ }
235
+ .bi-chat-editor__chartlet{
236
+ height: 240px;
237
+ }
238
+ .bi-chat-editor__atmember{
239
+ height: 240px;
240
+ }
241
+ .bi-chat-editor__button{
242
+ width: 24px;
243
+ height: 24px;
244
+ text-align: center;
245
+ line-height: 24px;
246
+ border-radius: 50%;
247
+ &.is-primary {
248
+ background-color: #244ac0;
249
+ border-color: #244ac0;
250
+ color: #fff;
251
+ }
252
+ }
253
+ .bi-chat-editor__safe{
254
+ padding-bottom: calc(constant(safe-area-inset-bottom)); /* window-bottom + 适配 iPhoneX */
255
+ padding-bottom: calc(env(safe-area-inset-bottom));
256
+ }
257
+ </style>
@@ -0,0 +1,10 @@
1
+ import SdkChatEditor from './chat-editor.vue'
2
+ import SdkChatEditorFuncButton from './chat-editor-func-button/chat-editor-func-button.vue'
3
+ import { parseAtMemberMessage } from './util'
4
+
5
+ export {
6
+ parseAtMemberMessage,
7
+ SdkChatEditorFuncButton
8
+ }
9
+
10
+ export default SdkChatEditor
@@ -0,0 +1,65 @@
1
+ import { encodeRegexpString } from '../../utils/regexp'
2
+
3
+ /**
4
+ * 解析@成员消息
5
+ * @param { String } content - 消息文本内容
6
+ * @param { Array } memberData - 群成员数据
7
+ * @return
8
+ * {
9
+ * deleteAtItem // 删除@成员项
10
+ * insertAtItem // 插入@成员项
11
+ * getAtItem // 获取@成员项
12
+ * getAllAtItem // 判断是否有@成员项
13
+ * toString // 转位字符串
14
+ * }
15
+ * // 成员项结构
16
+ * {
17
+ * startIndex: 0, // 相对content的起始位置
18
+ * endIndex: 0, // 相对content的截止位置
19
+ * id: null // 成员id
20
+ * }
21
+ */
22
+ export function parseAtMemberMessage (content, memberData) {
23
+ if (!content || !memberData || !memberData.length) {
24
+ return content
25
+ }
26
+ let entity = []
27
+ function refreshEntiry () {
28
+ entity.splice(0, entity.length)
29
+ memberData.forEach(member => {
30
+ const regrex = new RegExp('@' + encodeRegexpString(member.nickname) + '(\\s+|$)')
31
+ const match = content.match(regrex)
32
+ if (match) {
33
+ entity.push({
34
+ id: member.id,
35
+ wechatId: member.wechatId,
36
+ startIndex: match[1],
37
+ endIndex: match[1] + match[0].length
38
+ })
39
+ }
40
+ })
41
+ }
42
+ function deleteAtItem (id) {
43
+
44
+ }
45
+ function insertAtItem () {
46
+
47
+ }
48
+ function getAtItem () {
49
+
50
+ }
51
+ function getAllAtItem () {
52
+ return entity || []
53
+ }
54
+ function toString () {
55
+ return content
56
+ }
57
+ refreshEntiry()
58
+ return {
59
+ deleteAtItem,
60
+ insertAtItem,
61
+ getAtItem,
62
+ getAllAtItem,
63
+ toString
64
+ }
65
+ }