@aochuang/client-sdk 1.0.359 → 1.0.360

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 (157) hide show
  1. package/components/index.js +6 -1
  2. package/components/session-select/session-select-item.vue +8 -9
  3. package/components/wechat-chat-control/image/image.vue +13 -8
  4. package/components/wechat-chat-control/url/url-miniprogram.vue +1 -5
  5. package/components/wework-chat-control/channel-card/channel-card.vue +144 -0
  6. package/components/wework-chat-control/channel-live/channel-live.vue +7 -2
  7. package/components/wework-chat-control/company-card/company-card.vue +1 -1
  8. package/components/wework-chat-control/custom-expression/custom-expression.vue +2 -1
  9. package/components/wework-chat-control/file-url/file-url.vue +34 -16
  10. package/components/wework-chat-control/image/image.vue +137 -2
  11. package/components/wework-chat-control/index.js +15 -7
  12. package/components/wework-chat-control/location/location.vue +3 -3
  13. package/components/wework-chat-control/merge-message/merge-message-panel.vue +63 -0
  14. package/components/wework-chat-control/merge-message/merge-message.vue +84 -0
  15. package/components/wework-chat-control/merge-message/util.js +59 -0
  16. package/components/wework-chat-control/metting/enterprise-wechat.png +0 -0
  17. package/components/wework-chat-control/metting/meeting-video.svg +4 -0
  18. package/components/wework-chat-control/metting/metting.vue +181 -0
  19. package/components/wework-chat-control/red-envelopes/red-envelopes.vue +3 -2
  20. package/components/wework-chat-control/text/text-default.vue +99 -0
  21. package/components/wework-chat-control/text/text-quote.vue +105 -0
  22. package/components/wework-chat-control/text/text.vue +24 -144
  23. package/components/wework-chat-control/url/url-channel-live.vue +53 -0
  24. package/components/wework-chat-control/url/url-miniprogram.vue +6 -7
  25. package/components/wework-chat-control/url/url.vue +26 -2
  26. package/components/wework-chat-control/util.js +26 -17
  27. package/components/wework-chat-control/video/video.vue +10 -2
  28. package/components/wework-chat-control/voice/voice.vue +9 -2
  29. package/components/wework-chat-control/wework-chat-control-config-item.vue +24 -0
  30. package/components/wework-chat-control/wework-chat-control-config-msg.vue +25 -0
  31. package/{uni-components/chat-control/chat-control-config.vue → components/wework-chat-control/wework-chat-control-config.vue} +16 -13
  32. package/components/wework-chat-panel/chat-panel-chat-status/chat-panel-chat-status.vue +73 -0
  33. package/components/wework-chat-panel/chat-panel-item.vue +56 -25
  34. package/components/wework-chat-panel/chat-panel.vue +96 -13
  35. package/package.json +10 -3
  36. package/services/client-chat/client-chat-wechat/client-chat-session.js +92 -196
  37. package/services/client-chat/client-chat-wechat/client-chat.js +33 -20
  38. package/services/client-chat/client-chat-wework/client-chat-concats.js +81 -17
  39. package/services/client-chat/client-chat-wework/client-chat-message.js +45 -5
  40. package/services/client-chat/client-chat-wework/client-chat-session.js +50 -2
  41. package/services/client-chat/client-chat-wework/client-chat-socket.js +9 -1
  42. package/services/client-chat/client-chat-wework/client-chat.js +281 -11
  43. package/services/client-chat/client-chat-wework/utils.js +5 -5
  44. package/components/wework-chat-panel/chat-panel-controls/company-card/company-card.vue +0 -35
  45. package/components/wework-chat-panel/chat-panel-controls/expression/expression.vue +0 -36
  46. package/components/wework-chat-panel/chat-panel-controls/file-url/file-url.vue +0 -35
  47. package/components/wework-chat-panel/chat-panel-controls/image/image.vue +0 -36
  48. package/components/wework-chat-panel/chat-panel-controls/index.js +0 -35
  49. package/components/wework-chat-panel/chat-panel-controls/jx-sys-text/jx-sys-text.vue +0 -28
  50. package/components/wework-chat-panel/chat-panel-controls/link/link.vue +0 -35
  51. package/components/wework-chat-panel/chat-panel-controls/location/location.vue +0 -35
  52. package/components/wework-chat-panel/chat-panel-controls/text/text.vue +0 -43
  53. package/components/wework-chat-panel/chat-panel-controls/unkonw/unkonw.vue +0 -39
  54. package/components/wework-chat-panel/chat-panel-controls/video/video.vue +0 -37
  55. package/components/wework-chat-panel/chat-panel-controls/voice/voice.vue +0 -35
  56. package/uni-common/account-portray/account-portray.vue +0 -51
  57. package/uni-common/account-select/account-select-item.vue +0 -172
  58. package/uni-common/account-select/account-select.vue +0 -252
  59. package/uni-common/all-friend-avatar/all-friend-avatar.vue +0 -49
  60. package/uni-common/friend-avatar/default.svg +0 -1
  61. package/uni-common/friend-avatar/friend-avatar.vue +0 -27
  62. package/uni-common/friend-avatar/index.js +0 -3
  63. package/uni-common/friend-loader/friend-loader.vue +0 -53
  64. package/uni-common/friend-portray/friend-portray.vue +0 -56
  65. package/uni-common/group-avatar/default.svg +0 -1
  66. package/uni-common/group-avatar/group-avatar.vue +0 -18
  67. package/uni-common/group-avatar/index.js +0 -3
  68. package/uni-common/room-avatar/default.svg +0 -6
  69. package/uni-common/room-avatar/index.js +0 -3
  70. package/uni-common/room-avatar/room-avatar.vue +0 -27
  71. package/uni-common/room-loader/room-loader.vue +0 -53
  72. package/uni-common/room-portray/room-portray.vue +0 -56
  73. package/uni-components/chat-control/calling/calling.vue +0 -91
  74. package/uni-components/chat-control/calling/phone-fill.svg +0 -1
  75. package/uni-components/chat-control/calling/vidicon-fill.svg +0 -1
  76. package/uni-components/chat-control/channel-video/channel-video.vue +0 -89
  77. package/uni-components/chat-control/channel-video-card/channel-video-card.vue +0 -105
  78. package/uni-components/chat-control/channel-video-live/channel-video-live.vue +0 -92
  79. package/uni-components/chat-control/chat-control-config-item/chat-control-config-item.vue +0 -20
  80. package/uni-components/chat-control/chat-control-config-item/index.js +0 -3
  81. package/uni-components/chat-control/chat-control-config-msg/chat-control-config-msg-app.vue +0 -25
  82. package/uni-components/chat-control/chat-control-config-msg/chat-control-config-msg-h5.vue +0 -21
  83. package/uni-components/chat-control/chat-control.vue +0 -218
  84. package/uni-components/chat-control/company-card/company-card.vue +0 -123
  85. package/uni-components/chat-control/const.js +0 -28
  86. package/uni-components/chat-control/expression/expression.vue +0 -41
  87. package/uni-components/chat-control/image/image.vue +0 -68
  88. package/uni-components/chat-control/index.js +0 -89
  89. package/uni-components/chat-control/location/location.vue +0 -110
  90. package/uni-components/chat-control/member-change/member-change.vue +0 -32
  91. package/uni-components/chat-control/quote-message/quote-message.vue +0 -216
  92. package/uni-components/chat-control/real-time-position/real-time-position.vue +0 -62
  93. package/uni-components/chat-control/redpacket/red-envelope.svg +0 -1
  94. package/uni-components/chat-control/redpacket/redpacket.vue +0 -75
  95. package/uni-components/chat-control/share-card/share-card.vue +0 -101
  96. package/uni-components/chat-control/system/system.vue +0 -69
  97. package/uni-components/chat-control/system-batch-message/system-batch-message.vue +0 -30
  98. package/uni-components/chat-control/system-text/system-text.vue +0 -32
  99. package/uni-components/chat-control/text/text.vue +0 -67
  100. package/uni-components/chat-control/text-with-at/text-with-at.vue +0 -51
  101. package/uni-components/chat-control/transfer/red-transfer.svg +0 -1
  102. package/uni-components/chat-control/transfer/transfer.vue +0 -80
  103. package/uni-components/chat-control/unkonw/unkonw.vue +0 -37
  104. package/uni-components/chat-control/url/icons/file-excel-line.svg +0 -1
  105. package/uni-components/chat-control/url/icons/file-info-line.svg +0 -1
  106. package/uni-components/chat-control/url/icons/file-music-line.svg +0 -1
  107. package/uni-components/chat-control/url/icons/file-pdf-line.svg +0 -1
  108. package/uni-components/chat-control/url/icons/file-ppt-line.svg +0 -1
  109. package/uni-components/chat-control/url/icons/file-settings-line.svg +0 -1
  110. package/uni-components/chat-control/url/icons/file-text-line.svg +0 -1
  111. package/uni-components/chat-control/url/icons/file-unknow-line.svg +0 -1
  112. package/uni-components/chat-control/url/icons/file-word-line.svg +0 -1
  113. package/uni-components/chat-control/url/icons/file-zip-line.svg +0 -1
  114. package/uni-components/chat-control/url/icons/index.js +0 -24
  115. package/uni-components/chat-control/url/miniprogram.svg +0 -1
  116. package/uni-components/chat-control/url/url-miniprogram.vue +0 -116
  117. package/uni-components/chat-control/url/url.vue +0 -306
  118. package/uni-components/chat-control/url-new/icons/file-excel-line.svg +0 -1
  119. package/uni-components/chat-control/url-new/icons/file-info-line.svg +0 -1
  120. package/uni-components/chat-control/url-new/icons/file-music-line.svg +0 -1
  121. package/uni-components/chat-control/url-new/icons/file-pdf-line.svg +0 -1
  122. package/uni-components/chat-control/url-new/icons/file-ppt-line.svg +0 -1
  123. package/uni-components/chat-control/url-new/icons/file-settings-line.svg +0 -1
  124. package/uni-components/chat-control/url-new/icons/file-text-line.svg +0 -1
  125. package/uni-components/chat-control/url-new/icons/file-unknow-line.svg +0 -1
  126. package/uni-components/chat-control/url-new/icons/file-word-line.svg +0 -1
  127. package/uni-components/chat-control/url-new/icons/file-zip-line.svg +0 -1
  128. package/uni-components/chat-control/url-new/icons/index.js +0 -24
  129. package/uni-components/chat-control/url-new/url-new.vue +0 -110
  130. package/uni-components/chat-control/utils.js +0 -12
  131. package/uni-components/chat-control/video/video.vue +0 -156
  132. package/uni-components/chat-control/voice/voice.vue +0 -166
  133. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet-collect.vue +0 -84
  134. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet-system.vue +0 -28
  135. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet.vue +0 -85
  136. package/uni-components/chat-editor/chat-editor-func/chat-editor-func.vue +0 -157
  137. package/uni-components/chat-editor/chat-editor-func-at/chat-editor-func-at-panel.vue +0 -158
  138. package/uni-components/chat-editor/chat-editor-func-at/chat-editor-func-at.vue +0 -61
  139. package/uni-components/chat-editor/chat-editor-func-button/chat-editor-func-button.vue +0 -58
  140. package/uni-components/chat-editor/chat-editor-func-file/chat-editor-func-file.vue +0 -54
  141. package/uni-components/chat-editor/chat-editor-func-image/chat-editor-func-image.vue +0 -42
  142. package/uni-components/chat-editor/chat-editor-func-video/chat-editor-func-video.vue +0 -42
  143. package/uni-components/chat-editor/chat-editor-func-voice/chat-editor-func-voice.vue +0 -25
  144. package/uni-components/chat-editor/chat-editor-message-send/chat-editor-message-send.vue +0 -158
  145. package/uni-components/chat-editor/chat-editor-quote/chat-editor-quote.vue +0 -75
  146. package/uni-components/chat-editor/chat-editor.vue +0 -257
  147. package/uni-components/chat-editor/index.js +0 -10
  148. package/uni-components/chat-editor/util.js +0 -65
  149. package/uni-components/chat-panel/chat-panel-chats-box.vue +0 -238
  150. package/uni-components/chat-panel/chat-panel-chats-forward/chat-panel-chats-forward.vue +0 -273
  151. package/uni-components/chat-panel/chat-panel-chats-item.vue +0 -578
  152. package/uni-components/chat-panel/chat-panel-chats-status/chat-panel-chats-status.vue +0 -71
  153. package/uni-components/chat-panel/chat-panel-chats.vue +0 -368
  154. package/uni-components/chat-panel/chat-panel.vue +0 -227
  155. package/uni-components/contacts-group-select/contacts-group-select-item.vue +0 -85
  156. package/uni-components/contacts-group-select/contacts-group-select-panel.vue +0 -119
  157. package/uni-components/contacts-group-select/contacts-group-select.vue +0 -150
@@ -11,6 +11,7 @@ import ChatLayout from './chat-layout'
11
11
  import ChatFriendProfile from './chat-friend-profile'
12
12
  import ChatRoomProfile from './chat-room-profile'
13
13
  import { chatControls as WechatChatControls, WechatChatControlConfig, WechatChatControlConfigMsg, WechatChatControlConfigItem } from './wechat-chat-control'
14
+ import { chatControls as WeworkChatControls, WeworkChatControlConfig, WeworkChatControlConfigMsg, WeworkChatControlConfigItem } from './wework-chat-control'
14
15
  import { MESSAGE_TYPE, formatShortMessage, formatShortSessionMessage } from './wechat-chat-control/util'
15
16
  import { MESSAGE_TYPE as MESSAGE_TYPE_W } from './wework-chat-control/util'
16
17
 
@@ -21,6 +22,10 @@ export default {
21
22
  WechatChatControlConfig,
22
23
  WechatChatControlConfigMsg,
23
24
  WechatChatControlConfigItem,
25
+ WeworkChatControls,
26
+ WeworkChatControlConfig,
27
+ WeworkChatControlConfigMsg,
28
+ WeworkChatControlConfigItem,
24
29
  MESSAGE_TYPE,
25
30
  MESSAGE_TYPE_W,
26
31
  AccountSelect,
@@ -40,4 +45,4 @@ export default {
40
45
  ChatRoomProfile,
41
46
  WechatChatPanel,
42
47
  WeworkChatPanel
43
- }
48
+ }
@@ -5,14 +5,13 @@
5
5
  <div class="sdk-session-item__avatar-image">
6
6
  <slot name="avatar"></slot>
7
7
  </div>
8
- <sdk-badge
9
- class="sdk-session-item__avatar-badge"
10
- :class="{'is-mute': data[muteField]}"
11
- v-if="data[unreadMsgCountField]"
12
- :is-dot="data[muteField]"
13
- :value="data[unreadMsgCountField]"
14
- :max="99"
15
- ></sdk-badge>
8
+ <span v-if="data[unreadMsgCountField]" class="sdk-session-item__avatar-badge" :class="{'is-mute': data[muteField]}">
9
+ <sdk-badge
10
+ :is-dot="data[muteField]"
11
+ :value="data[unreadMsgCountField]"
12
+ :max="99"
13
+ ></sdk-badge>
14
+ </span>
16
15
  </div>
17
16
  <div class="sdk-session-item__main">
18
17
  <div class="sdk-session-item__row">
@@ -142,7 +141,7 @@ export default {
142
141
  border-radius: 3px;
143
142
  }
144
143
  .sdk-session-item__avatar-badge{
145
- position: absolute;
144
+ position: absolute;
146
145
  &.is-mute {
147
146
  left: calc(~'100% - 7px');
148
147
  top: -6px;
@@ -92,6 +92,7 @@
92
92
  </template>
93
93
  <script>
94
94
  import { Image as UiImage, Button as UiButton, Icon as UiIcon } from '@aochuang/common/components'
95
+ import { formatOssPath } from '@aochuang/common/utils/oss'
95
96
  import { isOriginImage, getNewImageSrc, isNewImage } from './util'
96
97
  import BiTooltip from '@aochuang/common/common/tooltip'
97
98
  import ImageDragableConfirm from './image-dragable-confirm.vue'
@@ -259,6 +260,12 @@ export default {
259
260
  isOriginImage () {
260
261
  return isOriginImage(this.src)
261
262
  },
263
+ isPrivateOssImage () {
264
+ if (!this.src) {
265
+ return false
266
+ }
267
+ return formatOssPath(this.src) !== this.src
268
+ },
262
269
  allowDefrost () {
263
270
  return !!this.defrostMethod
264
271
  }
@@ -276,14 +283,12 @@ export default {
276
283
  this.imageClickMethod && this.imageClickMethod()
277
284
  },
278
285
  handleImageDragStart (event) {
279
- // 先去掉这个逻辑,私有的oss或者大图先不管了,还是以前的逻辑,私有的我这里是可以的,黄哒哒电脑不行,这里逻辑都是和老的一样的,可能和系统有关系吧
280
- // 先保持和以前一样的逻辑,不做这样的弹出交互了,客户不接受
281
- // if (!(this.enableDragOriginImage && this.isOriginImage)) {
282
- // return
283
- // }
284
- // event.preventDefault()
285
- // event.stopPropagation()
286
- // this.showDragOriginConfirm = true
286
+ if (!(this.enableDragOriginImage && this.isOriginImage) && !this.isPrivateOssImage) {
287
+ return
288
+ }
289
+ event.preventDefault()
290
+ event.stopPropagation()
291
+ this.showDragOriginConfirm = true
287
292
  },
288
293
  handleDragOriginConfirmClosed () {
289
294
  this.showDragOriginConfirm = false
@@ -13,7 +13,7 @@
13
13
  {{title}}
14
14
  </div>
15
15
  <div class="sdk-chat-panel-control-url-miniprogram__content">
16
- <ui-image v-if="cover" :style="{width: '100%', height: '100%'}" :src="cover"></ui-image>
16
+ <div v-if="cover" :style="{width: '100%', height: '100%', 'background-image': 'url('+ cover +')'}"></div>
17
17
  </div>
18
18
  </div>
19
19
  <div class="sdk-chat-panel-control-url-miniprogram__foot">小程序</div>
@@ -50,15 +50,11 @@
50
50
  </div>
51
51
  </template>
52
52
  <script>
53
- import { Image as UiImage } from '@aochuang/common/components'
54
53
  import { parse, parseXml } from '../../../utils/json'
55
54
  import { formatOssPath } from '@aochuang/common/utils/oss'
56
55
 
57
56
  export default {
58
57
  name: 'SdkChatPanelControlUrlMiniprogram',
59
- components: {
60
- UiImage
61
- },
62
58
  props: {
63
59
  id: {
64
60
  type: String
@@ -0,0 +1,144 @@
1
+ <template>
2
+ <div class="sdk-chat-control-channel-card" :class="['sdk-chat-control-channel-card--' + type]">
3
+ <template v-if="type === 'default' || type === 'thumb'">
4
+ <div class="sdk-chat-control-channel-card__main">
5
+ <div class="sdk-chat-control-channel-card__avatar">
6
+ <sdk-avatar :src="avatar" :radius="false" size="medium"></sdk-avatar>
7
+ </div>
8
+ <div class="sdk-chat-control-channel-card__fields">
9
+ <div class="sdk-chat-control-channel-card__title">{{name}}</div>
10
+ <div class="sdk-chat-control-channel-card__summary">{{description}}</div>
11
+ </div>
12
+ </div>
13
+ <div class="sdk-chat-control-channel-card__foot">
14
+ <span class="sdk-chat-control-channel-card__category">视频号名片</span>
15
+ </div>
16
+ </template>
17
+ <template v-else-if="type === 'quote'">
18
+ <div class="sdk-chat-control-channel-card__icon"></div>
19
+ <div class="sdk-chat-control-channel-card__title">{{name}}</div>
20
+ <div class="sdk-chat-control-channel-card__avatar">
21
+ <sdk-avatar :src="avatar" :radius="false" size="medium"></sdk-avatar>
22
+ </div>
23
+ </template>
24
+ </div>
25
+ </template>
26
+ <script>
27
+ import { parse } from '../../../utils/json'
28
+ import SdkAvatar from '../../../common/avatar'
29
+ import { formatOssPath } from '@aochuang/common/utils/oss'
30
+
31
+ export default {
32
+ name: 'SdkChatControlChannelCard',
33
+ components: {
34
+ SdkAvatar
35
+ },
36
+ props: {
37
+ id: {
38
+ type: String
39
+ },
40
+ content: {
41
+ type: [String, Object]
42
+ },
43
+ type: {
44
+ type: String,
45
+ default: 'default',
46
+ validator (value) {
47
+ return ['quote', 'default', 'thumb'].includes(value)
48
+ }
49
+ },
50
+ updateChatBoxProp: {
51
+ type: Function
52
+ }
53
+ },
54
+ computed: {
55
+ nextContent () {
56
+ return parse(this.content) || {}
57
+ },
58
+ description () {
59
+ return this.nextContent.desc || ''
60
+ },
61
+ name () {
62
+ return (this.nextContent.title || '').replace(/^\[视频号名片\]\s*/, '')
63
+ },
64
+ avatar () {
65
+ return formatOssPath(this.nextContent.imageUrl)
66
+ },
67
+ url () {
68
+ return this.nextContent.url
69
+ }
70
+ },
71
+ created () {
72
+ if (this.url && this.updateChatBoxProp) {
73
+ this.updateChatBoxProp('href', this.url)
74
+ }
75
+ }
76
+ }
77
+ </script>
78
+ <style lang="less">
79
+ .sdk-chat-control-channel-card--default,
80
+ .sdk-chat-control-channel-card--thumb{
81
+ width: 248px;
82
+ max-width: 100%;
83
+ line-height: 1.5em;
84
+ .sdk-chat-control-channel-card__main{
85
+ display: flex;
86
+ flex-direction: row;
87
+ padding: 10px;
88
+ }
89
+ .sdk-chat-control-channel-card__fields{
90
+ flex: 1;
91
+ min-width: 0;
92
+ padding-left: 10px;
93
+ }
94
+ .sdk-chat-control-channel-card__title{
95
+ font-size: 14px;
96
+ overflow: hidden;
97
+ text-overflow: ellipsis;
98
+ white-space: nowrap;
99
+ }
100
+ .sdk-chat-control-channel-card__summary{
101
+ color: #888;
102
+ font-size: 12px;
103
+ overflow: hidden;
104
+ text-overflow: ellipsis;
105
+ white-space: nowrap;
106
+ margin-top: 6px;
107
+ }
108
+ .sdk-chat-control-channel-card__foot{
109
+ border-top: 1px solid #eee;
110
+ height: 24px;
111
+ line-height: 24px;
112
+ padding: 0 10px;
113
+ box-sizing: content-box;
114
+ }
115
+ .sdk-chat-control-channel-card__category{
116
+ color: #999;
117
+ font-size: 12px;
118
+ }
119
+ }
120
+ .sdk-chat-control-channel-card--thumb{
121
+ border: 1px solid #eee;
122
+ background-color: #fff;
123
+ border-radius: 4px;
124
+ }
125
+ .sdk-chat-control-channel-card--quote {
126
+ display: flex;
127
+ flex-direction: row;
128
+ .sdk-chat-control-channel-card__icon {
129
+ display: inline-block;
130
+ width: 18px;
131
+ height: 18px;
132
+ margin-right: 4px;
133
+ min-width: 18px;
134
+ vertical-align: top;
135
+ margin-top: 2px;
136
+ color: #999;
137
+ background: url('../company-card/quote-icon.svg') no-repeat 50% 50%;
138
+ background-size: cover;
139
+ }
140
+ .sdk-chat-control-channel-card__title{
141
+ margin-right: 6px;
142
+ }
143
+ }
144
+ </style>
@@ -78,7 +78,7 @@ export default {
78
78
  return formatOssPath(this.nextContent.coverUrl)
79
79
  },
80
80
  avatar () {
81
- return formatOssPath(this.nextContent.avatar)
81
+ return formatOssPath(this.nextContent.headUrl || this.nextContent.avatar)
82
82
  },
83
83
  nickname () {
84
84
  return this.nextContent.nickname
@@ -104,6 +104,12 @@ export default {
104
104
  border-radius: 4px;
105
105
  }
106
106
  }
107
+ .sdk-chat-wework-panel-control-channel-live__cover {
108
+ background-color: #000;
109
+ }
110
+ .sdk-chat-wework-panel-control-channel-live--default {
111
+ width: 248px;
112
+ }
107
113
  .sdk-chat-wework-panel-control-channel-live--default,
108
114
  .sdk-chat-wework-panel-control-channel-live--thumb {
109
115
  max-width: 280px;
@@ -113,7 +119,6 @@ export default {
113
119
  }
114
120
  .sdk-chat-wework-panel-control-channel-live__cover{
115
121
  height: 200px;
116
- background-color: #eee;
117
122
  }
118
123
  .sdk-chat-wework-panel-control-channel-live__row{
119
124
  line-height: 1.5em;
@@ -62,7 +62,7 @@ export default {
62
62
  return formatOssPath(this.nextContent.bigheadimgurl)
63
63
  },
64
64
  category () {
65
- return '企业微名片'
65
+ return '微名片'
66
66
  }
67
67
  }
68
68
  }
@@ -21,9 +21,10 @@ export default {
21
21
  }
22
22
  },
23
23
  render (h, c) {
24
+ const content = parse(c.props.content) || {}
24
25
  return h(Image, {
25
26
  props: {
26
- src: parse(c.props.content).linkUrl,
27
+ src: content.url,
27
28
  width: c.props.type === 'quote' ? '60px' : null,
28
29
  height: c.props.type === 'quote' ? '60px' : '120px',
29
30
  fit: 'contain'
@@ -7,9 +7,11 @@
7
7
  </div>
8
8
  <div class="sdk-chat-wework-control-file-url__toolbar">
9
9
  <span class="sdk-chat-wework-control-file-url__size" v-if="fileSize">{{fileSize}}</span>
10
- <!-- <span class="sdk-chat-wework-control-file-url__download" v-if="innerAllowDownload" @click.stop.prevent>
11
- <ui-button type="primary" link :click="handleDownloadClick">下载</ui-button>
12
- </span> -->
10
+ <span class="sdk-chat-wework-control-file-url__download" v-if="canDownload" @click.stop.prevent>
11
+ <ui-button type="primary" link :loading="downloading" icon="download-line" :click="handleDownloadClick">
12
+ 下载
13
+ </ui-button>
14
+ </span>
13
15
  </div>
14
16
  </span>
15
17
  <span v-if="fileIcon" class="sdk-chat-wework-control-file-url__icon">
@@ -28,6 +30,7 @@
28
30
  import FileIcon from './icons'
29
31
  import { parse } from '../../../utils/json'
30
32
  import { formatFileSize } from '../../../utils/file'
33
+ import { formatOssPath } from '@aochuang/common/utils/oss'
31
34
 
32
35
  export default {
33
36
  name: 'SdkChatControlFileUrl',
@@ -66,18 +69,17 @@ export default {
66
69
  },
67
70
  data () {
68
71
  return {
69
- nextContent: {}
72
+ nextContent: {},
73
+ downloading: false
70
74
  }
71
75
  },
72
76
  computed: {
73
77
  url () {
74
- return this.nextContent.url || this.nextContent.resUrl
78
+ const url = this.nextContent.resPath || this.nextContent.url || this.nextContent.resUrl
79
+ return url ? formatOssPath(url) : url
75
80
  },
76
81
  name () {
77
- if (!this.nextContent.title) {
78
- return this.url
79
- }
80
- return this.nextContent.title
82
+ return this.nextContent.fileName || this.nextContent.title || this.url
81
83
  },
82
84
  size () {
83
85
  return this.nextContent.totalLen
@@ -106,6 +108,9 @@ export default {
106
108
  }
107
109
  return this.allowDownload
108
110
  },
111
+ canDownload () {
112
+ return this.type !== 'quote' && this.innerAllowDownload && typeof this.downloadMethod === 'function'
113
+ },
109
114
  border () {
110
115
  if (this.type === 'quote') {
111
116
  return false
@@ -115,24 +120,37 @@ export default {
115
120
  },
116
121
  created () {
117
122
  this.nextContent = parse(this.content) || {}
118
- if (this.url && this.updateChatBoxProp) {
119
- this.updateChatBoxProp('href', this.url)
120
- }
121
123
  },
122
124
  methods: {
123
125
  handleDownloadClick () {
124
- if (!this.downloadMethod) {
126
+ if (!this.canDownload || this.downloading) {
125
127
  return
126
128
  }
127
- return this.downloadMethod({
129
+ const updateContent = data => {
130
+ if (!data || typeof data !== 'object' || Array.isArray(data)) {
131
+ throw new Error('updateContentProps只支持更新数据对象')
132
+ }
133
+ this.nextContent = data
134
+ this.$emit('content-update', data)
135
+ }
136
+ const result = this.downloadMethod({
128
137
  content: this.nextContent,
129
138
  updateContentProp: (prop, value) => {
130
- if (!['url'].includes(prop)) {
139
+ if (!['resPath', 'url'].includes(prop)) {
131
140
  throw new Error('不支持的更新属性' + prop)
132
141
  }
133
142
  this.$set(this.nextContent, prop, value)
134
- }
143
+ this.$emit('content-update', this.nextContent)
144
+ },
145
+ updateContentProps: updateContent
135
146
  })
147
+ if (result && result.finally) {
148
+ this.downloading = true
149
+ result.finally(() => {
150
+ this.downloading = false
151
+ })
152
+ }
153
+ return result
136
154
  }
137
155
  },
138
156
  beforeDestroy () {
@@ -1,7 +1,24 @@
1
1
  <template>
2
2
  <div class="sdk-chat-control-image" @click="handleClick">
3
3
  <div class="sdk-chat-control-image__main" :style="{'height': innerHeight, 'max-height': innerMaxHeight + 'px'}">
4
- <template v-if="allowDefrost">
4
+ <template v-if="showDownloadBox">
5
+ <div class="sdk-chat-control-image__download" :class="{'is-downloading': downloading}" @click.stop="handleDownloadClick">
6
+ <template v-if="downloading">
7
+ <div class="sdk-chat-control-image__download-icon">
8
+ <ui-loading size="mini"></ui-loading>
9
+ </div>
10
+ <div class="sdk-chat-control-image__download-text">下载中...</div>
11
+ </template>
12
+ <template v-else>
13
+ <div class="sdk-chat-control-image__download-icon">
14
+ <ui-icon name="download-line"></ui-icon>
15
+ </div>
16
+ <div class="sdk-chat-control-image__download-text">下载</div>
17
+ </template>
18
+ </div>
19
+ <div class="sdk-chat-control-image__download-placeholder"></div>
20
+ </template>
21
+ <template v-else-if="allowDefrost">
5
22
  <template v-if="defrostMsg">
6
23
  <div class="sdk-chat-control-image__defrost">
7
24
  <div class="sdk-chat-control-image__defrost-icon">
@@ -76,6 +93,7 @@
76
93
  </template>
77
94
  <script>
78
95
  import { Image as UiImage, Button as UiButton, Icon as UiIcon, Loading as UiLoading } from '@aochuang/common/components'
96
+ import { parse } from '../../../utils/json'
79
97
  import { isOriginImage, getNewImageSrc} from './util'
80
98
 
81
99
  export default {
@@ -98,7 +116,17 @@ export default {
98
116
  }
99
117
  },
100
118
  content: {
101
- type: String
119
+ type: [String, Object]
120
+ },
121
+ allowDownload: {
122
+ type: [Boolean, Function],
123
+ default: false
124
+ },
125
+ downloadMethod: {
126
+ type: Function
127
+ },
128
+ cancelDownloadMethod: {
129
+ type: Function
102
130
  },
103
131
  maxWidth: {
104
132
  type: Number,
@@ -150,12 +178,35 @@ export default {
150
178
  },
151
179
  data () {
152
180
  return {
181
+ downloading: false,
182
+ downloaded: false,
183
+ nextContent: null,
153
184
  defrostMsg: null,
154
185
  errorMsg: null
155
186
  }
156
187
  },
157
188
  computed: {
189
+ isDownloadContent () {
190
+ return !!(this.nextContent && typeof this.nextContent === 'object' && !Array.isArray(this.nextContent))
191
+ },
192
+ innerAllowDownload () {
193
+ if (typeof this.allowDownload === 'function') {
194
+ return this.allowDownload({
195
+ content: this.nextContent
196
+ })
197
+ }
198
+ return this.allowDownload
199
+ },
200
+ showDownloadBox () {
201
+ return this.type === 'default' && this.innerAllowDownload && this.isDownloadContent && !this.nextContent.resPath && !this.downloaded
202
+ },
158
203
  src () {
204
+ if (typeof this.nextContent === 'string') {
205
+ return this.nextContent
206
+ }
207
+ if (this.nextContent && typeof this.nextContent === 'object') {
208
+ return this.nextContent.resPath || this.nextContent.url || this.nextContent.thumbnailPath || this.nextContent.midThumbnailPath || ''
209
+ }
159
210
  return this.content
160
211
  },
161
212
  innerWidth () {
@@ -210,6 +261,9 @@ export default {
210
261
  return !!this.defrostMethod
211
262
  }
212
263
  },
264
+ created () {
265
+ this.syncContentState()
266
+ },
213
267
  methods: {
214
268
  handleClick () {
215
269
  this.$emit('click')
@@ -217,6 +271,39 @@ export default {
217
271
  handleImageClick () {
218
272
  this.imageClickMethod && this.imageClickMethod()
219
273
  },
274
+ handleDownloadClick () {
275
+ if (this.downloading) {
276
+ return
277
+ }
278
+ if (!this.downloadMethod) {
279
+ return
280
+ }
281
+ const rs = this.downloadMethod({
282
+ content: this.nextContent,
283
+ updateContentProp: (prop, value) => {
284
+ if (!['url'].includes(prop)) {
285
+ throw new Error('不支持的更新属性' + prop)
286
+ }
287
+ this.$set(this.nextContent, prop, value)
288
+ },
289
+ updateContentProps: (data) => {
290
+ if (!data || typeof data !== 'object' || Array.isArray(data)) {
291
+ throw new Error('updateContentProps只支持更新数据对象')
292
+ }
293
+ this.nextContent = data
294
+ }
295
+ })
296
+ if (rs && rs.finally) {
297
+ this.downloading = true
298
+ rs.then(() => {
299
+ this.downloaded = true
300
+ }).finally(() => {
301
+ this.downloading = false
302
+ })
303
+ } else {
304
+ this.downloaded = true
305
+ }
306
+ },
220
307
  handleError () {
221
308
  if (!this.defrostMethod) {
222
309
  return
@@ -236,7 +323,22 @@ export default {
236
323
  handleRefreshClick () {
237
324
  this.errorMsg = null
238
325
  this.defrostMsg = null
326
+ },
327
+ syncContentState () {
328
+ this.nextContent = parse(this.content)
329
+ this.downloaded = false
330
+ this.downloading = false
331
+ this.errorMsg = null
332
+ this.defrostMsg = null
239
333
  }
334
+ },
335
+ watch: {
336
+ content () {
337
+ this.syncContentState()
338
+ }
339
+ },
340
+ beforeDestroy () {
341
+ this.cancelDownloadMethod && this.cancelDownloadMethod()
240
342
  }
241
343
  }
242
344
  </script>
@@ -277,6 +379,39 @@ export default {
277
379
  display: inline-block;
278
380
  line-height: 1em;
279
381
  vertical-align: top;
382
+ position: relative;
383
+ }
384
+ .sdk-chat-control-image__download{
385
+ position: absolute;
386
+ left: 0;
387
+ top: 0;
388
+ z-index: 10;
389
+ width: 100%;
390
+ height: 100%;
391
+ background: #000;
392
+ display: flex;
393
+ flex-direction: column;
394
+ align-items: center;
395
+ justify-content: center;
396
+ color: #ccc;
397
+ cursor: pointer;
398
+ &:not(.is-downloading):hover {
399
+ color: #fff;
400
+ }
401
+ }
402
+ .sdk-chat-control-image__download.is-downloading{
403
+ cursor: default;
404
+ }
405
+ .sdk-chat-control-image__download-icon{
406
+ line-height: 1;
407
+ margin-bottom: 6px;
408
+ }
409
+ .sdk-chat-control-image__download-text{
410
+ font-size: 12px;
411
+ }
412
+ .sdk-chat-control-image__download-placeholder{
413
+ width: 100%;
414
+ height: 100%;
280
415
  }
281
416
  .sdk-chat-control-image__hd{
282
417
  position: absolute;
@@ -19,6 +19,9 @@ import jxSysText from './jx-sys-text/jx-sys-text.vue'
19
19
  // import textWithAt from './text-with-at/text-with-at.vue'
20
20
  import channelVideo from './channel-video/channel-video.vue'
21
21
  import channelLive from './channel-live/channel-live.vue'
22
+ import metting from './metting/metting.vue'
23
+ import mergeMessage from './merge-message/merge-message.vue'
24
+ import mergeMessagePanel from './merge-message/merge-message-panel.vue'
22
25
  // import channelVideoCard from './channel-video-card/channel-video-card.vue'
23
26
  // import music from './music/music.vue'
24
27
  // import transfer from './transfer/transfer.vue'
@@ -26,9 +29,9 @@ import url from './url/url.vue'
26
29
  // import quoteMessage from './quote-message/quote-message.vue'
27
30
  import empty from './empty/empty.vue'
28
31
  import unknow from './unknow/unknow.vue'
29
- // import WechatChatControlConfig from './wechat-chat-control-config.vue'
30
- // import WechatChatControlConfigMsg from './wechat-chat-control-config-msg.vue'
31
- // import WechatChatControlConfigItem from './wechat-chat-control-config-item.vue'
32
+ import WeworkChatControlConfig from './wework-chat-control-config.vue'
33
+ import WeworkChatControlConfigMsg from './wework-chat-control-config-msg.vue'
34
+ import WeworkChatControlConfigItem from './wework-chat-control-config-item.vue'
32
35
  // import revokeMeMessage from './revoke-me-message/revoke-me-message.vue'
33
36
  // import revokeOtherMessage from './revoke-other-message/revoke-other-message.vue'
34
37
  // import revokeYouMessage from './revoke-you-message/revoke-you-message.vue'
@@ -45,8 +48,8 @@ export const chatControls = {
45
48
  [MESSAGE_TYPE.COMPANY_CARD]: companyCard,
46
49
  [MESSAGE_TYPE.VIDEO]: video,
47
50
  [MESSAGE_TYPE.CUSTOM_EXPRESSION]: customExpression,
48
- [MESSAGE_TYPE.CUSTOM_EXPRESSION_W]: customExpression,
49
51
  [MESSAGE_TYPE.LOCATION]: location,
52
+ [MESSAGE_TYPE.URLFile]: fileUrl,
50
53
  [MESSAGE_TYPE.URL]: url,
51
54
  [MESSAGE_TYPE.URLNew]: fileUrl,
52
55
  // [MESSAGE_TYPE.CALLING]: calling,
@@ -62,6 +65,8 @@ export const chatControls = {
62
65
  [MESSAGE_TYPE.CHANNEL_VIDEO]: channelVideo,
63
66
  // [MESSAGE_TYPE.CHANNEL_VIDEO_CARD]: channelVideoCard, // 视频号名片
64
67
  [MESSAGE_TYPE.CHANNEL_VIDEO_LIVE]: channelLive, // 视频号直播
68
+ [MESSAGE_TYPE.MEETING]: metting,
69
+ [MESSAGE_TYPE.MERGE_MESSAGE]: mergeMessage,
65
70
  // [MESSAGE_TYPE.SYSTEM_BATCH_MESSAGE]: systemBatchMessage,
66
71
  // [MESSAGE_TYPE.REVOKE_ME_MESSAGE]: revokeMeMessage,
67
72
  // [MESSAGE_TYPE.REVOKE_OTHER_MESSAGE]: revokeOtherMessage,
@@ -93,6 +98,9 @@ export {
93
98
  channelVideo, // 视频号
94
99
  // channelVideoCard,
95
100
  channelLive, // 视频号直播
101
+ metting,
102
+ mergeMessage,
103
+ mergeMessagePanel,
96
104
  // music,
97
105
  // transfer,
98
106
  empty,
@@ -100,7 +108,7 @@ export {
100
108
  // revokeMeMessage,
101
109
  // revokeOtherMessage,
102
110
  // revokeYouMessage,
103
- // WechatChatControlConfig,
104
- // WechatChatControlConfigMsg,
105
- // WechatChatControlConfigItem
111
+ WeworkChatControlConfig,
112
+ WeworkChatControlConfigMsg,
113
+ WeworkChatControlConfigItem
106
114
  }