@aochuang/client-sdk 1.0.356 → 1.0.359

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 (159) hide show
  1. package/components/index.js +1 -6
  2. package/components/session-select/session-select-item.vue +9 -8
  3. package/components/wechat-chat-control/image/image.vue +8 -13
  4. package/components/wechat-chat-control/url/url-miniprogram.vue +5 -1
  5. package/components/wework-chat-control/channel-live/channel-live.vue +2 -7
  6. package/components/wework-chat-control/company-card/company-card.vue +1 -1
  7. package/components/wework-chat-control/custom-expression/custom-expression.vue +1 -2
  8. package/components/wework-chat-control/file-url/file-url.vue +16 -34
  9. package/components/wework-chat-control/image/image.vue +2 -137
  10. package/components/wework-chat-control/index.js +7 -10
  11. package/components/wework-chat-control/location/location.vue +3 -3
  12. package/components/wework-chat-control/text/text.vue +144 -24
  13. package/components/wework-chat-control/url/url-miniprogram.vue +7 -6
  14. package/components/wework-chat-control/url/url.vue +2 -26
  15. package/components/wework-chat-control/util.js +19 -22
  16. package/components/wework-chat-control/video/video.vue +2 -10
  17. package/components/wework-chat-control/voice/voice.vue +1 -1
  18. package/components/wework-chat-panel/chat-panel-controls/company-card/company-card.vue +35 -0
  19. package/components/wework-chat-panel/chat-panel-controls/expression/expression.vue +36 -0
  20. package/components/wework-chat-panel/chat-panel-controls/file-url/file-url.vue +35 -0
  21. package/components/wework-chat-panel/chat-panel-controls/image/image.vue +36 -0
  22. package/components/wework-chat-panel/chat-panel-controls/index.js +35 -0
  23. package/components/wework-chat-panel/chat-panel-controls/jx-sys-text/jx-sys-text.vue +28 -0
  24. package/components/wework-chat-panel/chat-panel-controls/link/link.vue +35 -0
  25. package/components/wework-chat-panel/chat-panel-controls/location/location.vue +35 -0
  26. package/components/wework-chat-panel/chat-panel-controls/text/text.vue +43 -0
  27. package/components/wework-chat-panel/chat-panel-controls/unkonw/unkonw.vue +39 -0
  28. package/components/wework-chat-panel/chat-panel-controls/video/video.vue +37 -0
  29. package/components/wework-chat-panel/chat-panel-controls/voice/voice.vue +35 -0
  30. package/components/wework-chat-panel/chat-panel-item.vue +28 -38
  31. package/components/wework-chat-panel/chat-panel.vue +13 -96
  32. package/package.json +3 -10
  33. package/services/client-chat/client-chat-wechat/client-chat-session.js +196 -92
  34. package/services/client-chat/client-chat-wechat/client-chat.js +20 -33
  35. package/services/client-chat/client-chat-wework/client-chat-concats.js +17 -81
  36. package/services/client-chat/client-chat-wework/client-chat-message.js +5 -45
  37. package/services/client-chat/client-chat-wework/client-chat-session.js +2 -50
  38. package/services/client-chat/client-chat-wework/client-chat-socket.js +1 -9
  39. package/services/client-chat/client-chat-wework/client-chat.js +11 -281
  40. package/services/client-chat/client-chat-wework/utils.js +5 -5
  41. package/uni-common/account-portray/account-portray.vue +51 -0
  42. package/uni-common/account-select/account-select-item.vue +172 -0
  43. package/uni-common/account-select/account-select.vue +252 -0
  44. package/uni-common/all-friend-avatar/all-friend-avatar.vue +49 -0
  45. package/uni-common/friend-avatar/default.svg +1 -0
  46. package/uni-common/friend-avatar/friend-avatar.vue +27 -0
  47. package/uni-common/friend-avatar/index.js +3 -0
  48. package/uni-common/friend-loader/friend-loader.vue +53 -0
  49. package/uni-common/friend-portray/friend-portray.vue +56 -0
  50. package/uni-common/group-avatar/default.svg +1 -0
  51. package/uni-common/group-avatar/group-avatar.vue +18 -0
  52. package/uni-common/group-avatar/index.js +3 -0
  53. package/uni-common/room-avatar/default.svg +6 -0
  54. package/uni-common/room-avatar/index.js +3 -0
  55. package/uni-common/room-avatar/room-avatar.vue +27 -0
  56. package/uni-common/room-loader/room-loader.vue +53 -0
  57. package/uni-common/room-portray/room-portray.vue +56 -0
  58. package/uni-components/chat-control/calling/calling.vue +91 -0
  59. package/uni-components/chat-control/calling/phone-fill.svg +1 -0
  60. package/uni-components/chat-control/calling/vidicon-fill.svg +1 -0
  61. package/uni-components/chat-control/channel-video/channel-video.vue +89 -0
  62. package/uni-components/chat-control/channel-video-card/channel-video-card.vue +105 -0
  63. package/uni-components/chat-control/channel-video-live/channel-video-live.vue +92 -0
  64. package/uni-components/chat-control/chat-control-config-item/chat-control-config-item.vue +20 -0
  65. package/uni-components/chat-control/chat-control-config-item/index.js +3 -0
  66. package/uni-components/chat-control/chat-control-config-msg/chat-control-config-msg-app.vue +25 -0
  67. package/uni-components/chat-control/chat-control-config-msg/chat-control-config-msg-h5.vue +21 -0
  68. package/{components/wework-chat-control/wework-chat-control-config.vue → uni-components/chat-control/chat-control-config.vue} +13 -16
  69. package/uni-components/chat-control/chat-control.vue +218 -0
  70. package/uni-components/chat-control/company-card/company-card.vue +123 -0
  71. package/uni-components/chat-control/const.js +28 -0
  72. package/uni-components/chat-control/expression/expression.vue +41 -0
  73. package/uni-components/chat-control/image/image.vue +68 -0
  74. package/uni-components/chat-control/index.js +89 -0
  75. package/uni-components/chat-control/location/location.vue +110 -0
  76. package/uni-components/chat-control/member-change/member-change.vue +32 -0
  77. package/uni-components/chat-control/quote-message/quote-message.vue +216 -0
  78. package/uni-components/chat-control/real-time-position/real-time-position.vue +62 -0
  79. package/uni-components/chat-control/redpacket/red-envelope.svg +1 -0
  80. package/uni-components/chat-control/redpacket/redpacket.vue +75 -0
  81. package/uni-components/chat-control/share-card/share-card.vue +101 -0
  82. package/uni-components/chat-control/system/system.vue +69 -0
  83. package/uni-components/chat-control/system-batch-message/system-batch-message.vue +30 -0
  84. package/uni-components/chat-control/system-text/system-text.vue +32 -0
  85. package/uni-components/chat-control/text/text.vue +67 -0
  86. package/uni-components/chat-control/text-with-at/text-with-at.vue +51 -0
  87. package/uni-components/chat-control/transfer/red-transfer.svg +1 -0
  88. package/uni-components/chat-control/transfer/transfer.vue +80 -0
  89. package/uni-components/chat-control/unkonw/unkonw.vue +37 -0
  90. package/uni-components/chat-control/url/icons/file-excel-line.svg +1 -0
  91. package/uni-components/chat-control/url/icons/file-info-line.svg +1 -0
  92. package/uni-components/chat-control/url/icons/file-music-line.svg +1 -0
  93. package/uni-components/chat-control/url/icons/file-pdf-line.svg +1 -0
  94. package/uni-components/chat-control/url/icons/file-ppt-line.svg +1 -0
  95. package/uni-components/chat-control/url/icons/file-settings-line.svg +1 -0
  96. package/uni-components/chat-control/url/icons/file-text-line.svg +1 -0
  97. package/uni-components/chat-control/url/icons/file-unknow-line.svg +1 -0
  98. package/uni-components/chat-control/url/icons/file-word-line.svg +1 -0
  99. package/uni-components/chat-control/url/icons/file-zip-line.svg +1 -0
  100. package/uni-components/chat-control/url/icons/index.js +24 -0
  101. package/uni-components/chat-control/url/miniprogram.svg +1 -0
  102. package/uni-components/chat-control/url/url-miniprogram.vue +116 -0
  103. package/uni-components/chat-control/url/url.vue +306 -0
  104. package/uni-components/chat-control/url-new/icons/file-excel-line.svg +1 -0
  105. package/uni-components/chat-control/url-new/icons/file-info-line.svg +1 -0
  106. package/uni-components/chat-control/url-new/icons/file-music-line.svg +1 -0
  107. package/uni-components/chat-control/url-new/icons/file-pdf-line.svg +1 -0
  108. package/uni-components/chat-control/url-new/icons/file-ppt-line.svg +1 -0
  109. package/uni-components/chat-control/url-new/icons/file-settings-line.svg +1 -0
  110. package/uni-components/chat-control/url-new/icons/file-text-line.svg +1 -0
  111. package/uni-components/chat-control/url-new/icons/file-unknow-line.svg +1 -0
  112. package/uni-components/chat-control/url-new/icons/file-word-line.svg +1 -0
  113. package/uni-components/chat-control/url-new/icons/file-zip-line.svg +1 -0
  114. package/uni-components/chat-control/url-new/icons/index.js +24 -0
  115. package/uni-components/chat-control/url-new/url-new.vue +110 -0
  116. package/uni-components/chat-control/utils.js +12 -0
  117. package/uni-components/chat-control/video/video.vue +156 -0
  118. package/uni-components/chat-control/voice/voice.vue +166 -0
  119. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet-collect.vue +84 -0
  120. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet-system.vue +28 -0
  121. package/uni-components/chat-editor/chat-editor-chartlet/chat-editor-chartlet.vue +85 -0
  122. package/uni-components/chat-editor/chat-editor-func/chat-editor-func.vue +157 -0
  123. package/uni-components/chat-editor/chat-editor-func-at/chat-editor-func-at-panel.vue +158 -0
  124. package/uni-components/chat-editor/chat-editor-func-at/chat-editor-func-at.vue +61 -0
  125. package/uni-components/chat-editor/chat-editor-func-button/chat-editor-func-button.vue +58 -0
  126. package/uni-components/chat-editor/chat-editor-func-file/chat-editor-func-file.vue +54 -0
  127. package/uni-components/chat-editor/chat-editor-func-image/chat-editor-func-image.vue +42 -0
  128. package/uni-components/chat-editor/chat-editor-func-video/chat-editor-func-video.vue +42 -0
  129. package/uni-components/chat-editor/chat-editor-func-voice/chat-editor-func-voice.vue +25 -0
  130. package/uni-components/chat-editor/chat-editor-message-send/chat-editor-message-send.vue +158 -0
  131. package/uni-components/chat-editor/chat-editor-quote/chat-editor-quote.vue +75 -0
  132. package/uni-components/chat-editor/chat-editor.vue +257 -0
  133. package/uni-components/chat-editor/index.js +10 -0
  134. package/uni-components/chat-editor/util.js +65 -0
  135. package/uni-components/chat-panel/chat-panel-chats-box.vue +238 -0
  136. package/uni-components/chat-panel/chat-panel-chats-forward/chat-panel-chats-forward.vue +273 -0
  137. package/uni-components/chat-panel/chat-panel-chats-item.vue +578 -0
  138. package/uni-components/chat-panel/chat-panel-chats-status/chat-panel-chats-status.vue +71 -0
  139. package/uni-components/chat-panel/chat-panel-chats.vue +368 -0
  140. package/uni-components/chat-panel/chat-panel.vue +227 -0
  141. package/uni-components/contacts-group-select/contacts-group-select-item.vue +85 -0
  142. package/uni-components/contacts-group-select/contacts-group-select-panel.vue +119 -0
  143. package/uni-components/contacts-group-select/contacts-group-select.vue +150 -0
  144. package/components/wechat-chat-control/.DS_Store +0 -0
  145. package/components/wechat-chat-control/transfer/.DS_Store +0 -0
  146. package/components/wechat-chat-control/url/.DS_Store +0 -0
  147. package/components/wechat-chat-control/voice/.DS_Store +0 -0
  148. package/components/wework-chat-control/channel-card/channel-card.vue +0 -144
  149. package/components/wework-chat-control/link/.DS_Store +0 -0
  150. package/components/wework-chat-control/metting/enterprise-wechat.png +0 -0
  151. package/components/wework-chat-control/metting/meeting-video.svg +0 -4
  152. package/components/wework-chat-control/metting/metting.vue +0 -181
  153. package/components/wework-chat-control/text/text-default.vue +0 -99
  154. package/components/wework-chat-control/text/text-quote.vue +0 -105
  155. package/components/wework-chat-control/url/url-channel-live.vue +0 -53
  156. package/components/wework-chat-control/video/.DS_Store +0 -0
  157. package/components/wework-chat-control/wework-chat-control-config-item.vue +0 -24
  158. package/components/wework-chat-control/wework-chat-control-config-msg.vue +0 -25
  159. package/components/wework-chat-panel/chat-panel-chat-status/chat-panel-chat-status.vue +0 -73
@@ -0,0 +1,51 @@
1
+ <template>
2
+ <bi-portray
3
+ :avatar="accountData && accountData.avatar"
4
+ :name="accountData && (accountData.memo || accountData.nickname)"
5
+ :loading="loading"
6
+ ></bi-portray>
7
+ </template>
8
+
9
+ <script>
10
+ import BiPortray from '@aochuang/common/uni-common/portray/portray.vue'
11
+
12
+ export default {
13
+ name: 'BiAccountPortray',
14
+ components: {
15
+ BiPortray
16
+ },
17
+ props: {
18
+ id: {
19
+ type: String,
20
+ required: true
21
+ }
22
+ },
23
+ data () {
24
+ return {
25
+ loading: false,
26
+ accountData: null
27
+ }
28
+ },
29
+ watch: {
30
+ id () {
31
+ this.loadData()
32
+ }
33
+ },
34
+ created () {
35
+ this.loadData()
36
+ },
37
+ methods: {
38
+ loadData () {
39
+ this.loading = true
40
+ this.$clientChat.account.getAccount(this.id).then(rs => {
41
+ this.accountData = rs.data
42
+ }).finally(() => {
43
+ this.loading = false
44
+ })
45
+ }
46
+ }
47
+ }
48
+ </script>
49
+
50
+ <style>
51
+ </style>
@@ -0,0 +1,172 @@
1
+ <template>
2
+ <view
3
+ class="bi-account-select-item"
4
+ :class="['bi-account-select-item--' + type, {'is-active': selected, 'is-online': isAll ? false : data && data.online, 'is-offline': isAll ? false : data && !data.online}]"
5
+ >
6
+ <view class="bi-account-select-item__icon">
7
+ <template v-if="isAll">
8
+ <bi-all-friend-avatar :size="avatarSize" :round="type === 'simple'"></bi-all-friend-avatar>
9
+ </template>
10
+ <template v-else>
11
+ <bi-avatar :src="data.avatar" :size="avatarSize" :round="type === 'simple'"></bi-avatar>
12
+ </template>
13
+ </view>
14
+ <view class="bi-account-select-item__text">
15
+ <template v-if="isAll">全部好友</template>
16
+ <template v-else>
17
+ {{ data.memo || data.nickname }}
18
+ </template>
19
+ </view>
20
+ <bi-badge class="bi-account-select-item__count" :value="unreadCount" :max="99" v-if="unreadCount"></bi-badge>
21
+ </view>
22
+ </template>
23
+
24
+ <script>
25
+ import BiAvatar from '@aochuang/common/uni-components/avatar/avatar.vue'
26
+ import BiBadge from '@aochuang/common/uni-components/badge/badge.vue'
27
+ import BiAllFriendAvatar from '../all-friend-avatar/all-friend-avatar.vue'
28
+
29
+ export default {
30
+ name: 'BiAccountSelectItem',
31
+ components: {
32
+ BiAvatar,
33
+ BiBadge,
34
+ BiAllFriendAvatar
35
+ },
36
+ props: {
37
+ isAll: {
38
+ type: Boolean
39
+ },
40
+ type: {
41
+ type: String,
42
+ validator (value) {
43
+ return ['default', 'simple'].includes(value)
44
+ }
45
+ },
46
+ selected: {
47
+ type: Boolean
48
+ },
49
+ data: {
50
+ type: Object
51
+ }
52
+ },
53
+ computed: {
54
+ avatarSize () {
55
+ return this.type === 'default' ? 'small' : 'mini'
56
+ },
57
+ accountUnreadMessageNumData () {
58
+ return this.$clientChat.account.accountUnreadMessageNumData || []
59
+ },
60
+ unreadCount () {
61
+ if (this.isAll) {
62
+ return this.accountUnreadMessageNumData.reduce((rs, account) => {
63
+ if (account.num) {
64
+ rs += account.num
65
+ }
66
+ return rs
67
+ }, 0)
68
+ } else {
69
+ const unreadMessageNumItem = this.accountUnreadMessageNumData.find(v => v.id === this.data.id)
70
+ return unreadMessageNumItem ? unreadMessageNumItem.num : 0
71
+ }
72
+ }
73
+ },
74
+ created () {
75
+ if (!this.isAll && !this.data) {
76
+ throw new Error('缺少data数据')
77
+ }
78
+ }
79
+ }
80
+ </script>
81
+
82
+ <style lang="less">
83
+ .bi-account-select-item{
84
+ display: flex;
85
+ flex-direction: row;
86
+ align-items: center;
87
+ position: relative;
88
+ transition: all .25s;
89
+ max-width: 100%;
90
+ &.is-active {
91
+ background: #3c9cff;
92
+ color: #fff;
93
+ &:after {
94
+ border-right-color: #fff;
95
+ border-bottom-color: #fff;
96
+ }
97
+ }
98
+ &.is-online {
99
+ .bi-account-select-item__icon{
100
+ &:after {
101
+ opacity: 1;
102
+ background-color: #40bf48;
103
+ border-color: #fff;
104
+ }
105
+ }
106
+ }
107
+ &.is-offline {
108
+ .bi-account-select-item__icon{
109
+ &:after {
110
+ opacity: 1;
111
+ background-color: #ccc;
112
+ border-color: #fff;
113
+ }
114
+ }
115
+ }
116
+ }
117
+ .bi-account-select-item__icon{
118
+ background-color: #eee;
119
+ margin-right: 6px;
120
+ position: relative;
121
+ line-height: 1em;
122
+ &:after {
123
+ content: '';
124
+ width: 8px;
125
+ height: 8px;
126
+ background-color: transparent;
127
+ border-radius: 50%;
128
+ border: 2px solid transparent;
129
+ position: absolute;
130
+ bottom: -2px;
131
+ right: -2px;
132
+ opacity: 0;
133
+ }
134
+ }
135
+ .bi-account-select-item__text{
136
+ flex: 1;
137
+ min-width: 0;
138
+ overflow: hidden;
139
+ text-overflow: ellipsis;
140
+ white-space: nowrap;
141
+ }
142
+ .bi-account-select-item--default {
143
+ padding: 6px 24px 6px 12px;
144
+ &:after {
145
+ content: '';
146
+ width: 6px;
147
+ height: 6px;
148
+ border: 1px solid #ccc;
149
+ border-left: 0;
150
+ border-top: 0;
151
+ transform: rotate(-45deg) translateY(-50%);
152
+ position: absolute;
153
+ right: 12px;
154
+ top: 50%;
155
+ }
156
+ .bi-account-select-item__icon {
157
+ width: 32px;
158
+ height: 32px;
159
+ border-radius: 3px;
160
+ }
161
+ }
162
+ .bi-account-select-item--simple {
163
+ .bi-account-select-item__icon {
164
+ width: 24px;
165
+ height: 24px;
166
+ border-radius: 50%;
167
+ }
168
+ .bi-account-select-item__count{
169
+ transform: scale(.8);
170
+ }
171
+ }
172
+ </style>
@@ -0,0 +1,252 @@
1
+ <template>
2
+ <view class="bi-account-select">
3
+ <view class="bi-account-select__handle" :class="{'is-online': currentAccount && currentAccount.online, 'is-offline': currentAccount && !currentAccount.online}" @click="handleHandleClick">
4
+ <account-select-item
5
+ type="simple"
6
+ :is-all="!currentAccount"
7
+ :data="currentAccount"
8
+ >
9
+ </account-select-item>
10
+ </view>
11
+ <uv-popup
12
+ ref="popup"
13
+ mode="bottom"
14
+ @change="handlePopupChange"
15
+ >
16
+ <view class="bi-account-select__main">
17
+ <view class="bi-account-select__head">
18
+ <view class="bi-account-select__head-left">
19
+ <uv-button size="small" @click="handleCancelClick">取消</uv-button>
20
+ </view>
21
+ <view class="bi-account-select__head-center">
22
+ <view class="bi-account-select__title">微号({{ accountData ? accountData.length : 0 }})</view>
23
+ </view>
24
+ <view class="bi-account-select__head-right">
25
+ <uv-button size="small" type="primary" @click="handleConfirmClick">确定</uv-button>
26
+ </view>
27
+ </view>
28
+ <view class="bi-account-select__body">
29
+ <scroll-view
30
+ scroll-y
31
+ :scroll-into-view="scrollToAccountId"
32
+ class="bi-account-select__list"
33
+ >
34
+ <uv-swipe-action ref="swipeAction">
35
+ <view
36
+ class="bi-account-select__item"
37
+ :class="{'is-active': !currentSelectAccount}"
38
+ @click="handleAccountClick(null)"
39
+ >
40
+ <account-select-item
41
+ type="default"
42
+ :is-all="true"
43
+ :selected="!currentSelectAccount"
44
+ ></account-select-item>
45
+ </view>
46
+ <template
47
+ v-for="account in accountData"
48
+ >
49
+ <uv-swipe-action-item :options="swipeActionOptions" @click="handleSwipeActionClick(account, $event)">
50
+ <view
51
+ :key="account.id"
52
+ :id="`account-${account.id}`"
53
+ class="bi-account-select__item"
54
+ @click="handleAccountClick(account)"
55
+ >
56
+ <account-select-item
57
+ type="default"
58
+ :data="account"
59
+ :selected="currentSelectAccount && currentSelectAccount.id === account.id"
60
+ ></account-select-item>
61
+ </view>
62
+ </uv-swipe-action-item>
63
+ </template>
64
+ </uv-swipe-action>
65
+ </scroll-view>
66
+ <view class="bi-account-select__loading" v-if="loading">
67
+ <uv-loading-icon></uv-loading-icon>
68
+ </view>
69
+ </view>
70
+ </view>
71
+ </uv-popup>
72
+ </view>
73
+ </template>
74
+ <script>
75
+ import BiAvatar from '@aochuang/common/uni-components/avatar/avatar.vue'
76
+ import BiAllFriendAvatar from '../all-friend-avatar/all-friend-avatar.vue'
77
+ import AccountSelectItem from './account-select-item.vue'
78
+
79
+ export default {
80
+ name: 'BiAccountSelect',
81
+ components: {
82
+ BiAvatar,
83
+ BiAllFriendAvatar,
84
+ AccountSelectItem
85
+ },
86
+ props: {
87
+ allowSelectAll: {
88
+ type: Boolean,
89
+ default: true
90
+ }
91
+ },
92
+ data () {
93
+ return {
94
+ loading: false,
95
+ showPopup: false,
96
+ scrollToAccountId: null,
97
+ currentSelectAccount: null
98
+ }
99
+ },
100
+ computed: {
101
+ accountData () {
102
+ return this.$clientChat.account.accountData || []
103
+ },
104
+ currentAccount () {
105
+ return this.$clientChat.account.currentAccount
106
+ },
107
+ swipeActionOptions () {
108
+ return [{
109
+ text: '一键已读',
110
+ style: {
111
+ backgroundColor: '#16d06f'
112
+ },
113
+ click: (account) => {
114
+ this.$confirm('确定要将此微信号所有会话标记已读吗?', () => {
115
+ return this.$clientChat.account.updateAccountMessageRead({
116
+ wechatAccountId: account.id
117
+ }).then(() => {
118
+ this.$success('操作成功')
119
+ this.$refs.swipeAction.closeOther()
120
+ })
121
+ })
122
+ }
123
+ }, {
124
+ text: '清空会话',
125
+ style: {
126
+ backgroundColor: '#f56c6c'
127
+ },
128
+ click: (account) => {
129
+ this.$confirm('确定要将此微信号所有会话清空吗?', () => {
130
+ return this.$clientChat.account.deleteAccountSession({
131
+ wechatAccountId: account.id
132
+ }).then(() => {
133
+ this.$success('操作成功')
134
+ this.$refs.swipeAction.closeOther()
135
+ })
136
+ })
137
+ }
138
+ }]
139
+ }
140
+ },
141
+ created () {
142
+ this.loading = true
143
+ this.$clientChat.account.loadData().then(() => {
144
+ this.currentSelectAccount = this.currentAccount
145
+ }).finally(() => {
146
+ this.loading = false
147
+ })
148
+ },
149
+ methods: {
150
+ handleSwipeActionClick (account, evt) {
151
+ const item = this.swipeActionOptions[evt.index]
152
+ if (!item) {
153
+ return
154
+ }
155
+ item.click && item.click(account)
156
+ },
157
+ handleHandleClick () {
158
+ if (this.currentAccount) {
159
+ this.scrollToAccountId = 'account-' + this.currentAccount.id
160
+ } else {
161
+ this.scrollToAccountId = null
162
+ }
163
+ this.$refs.popup.open()
164
+ },
165
+ handleCancelClick () {
166
+ this.scrollToAccountId = null
167
+ this.$refs.popup.close()
168
+ },
169
+ handleConfirmClick () {
170
+ const nextAccount = this.currentSelectAccount ? this.currentSelectAccount.id : null
171
+ this.$clientChat.account.setCurrentAccount(nextAccount)
172
+ this.$refs.popup.close()
173
+ this.$nextTick(() => {
174
+ this.$emit('change', {
175
+ value: nextAccount
176
+ })
177
+ })
178
+ },
179
+ handlePopupChange ({ show }) {
180
+ this.showPopup = show
181
+ if (show) {
182
+ uni.hideTabBar()
183
+ } else {
184
+ uni.showTabBar()
185
+ }
186
+ },
187
+ handleAccountClick (account) {
188
+ this.currentSelectAccount = account
189
+ }
190
+ }
191
+ }
192
+ </script>
193
+
194
+ <style lang="less">
195
+ .bi-account-select__head{
196
+ display: flex;
197
+ flex-direction: row;
198
+ align-items: center;
199
+ justify-content: space-between;
200
+ padding: 8px 12px;
201
+ border-bottom: 1px solid #eee;
202
+ }
203
+ .bi-account-select__title{
204
+ font-weight: 500;
205
+ }
206
+ .bi-account-select__body{
207
+ height: 70vh;
208
+ background-color: #fff;
209
+ position: relative;
210
+ display: flex;
211
+ flex-direction: column;
212
+ }
213
+ .bi-account-select__loading{
214
+ position: absolute;
215
+ left: 0;
216
+ top: 0;
217
+ right: 0;
218
+ bottom: 0;
219
+ display: flex;
220
+ flex-direction: column;
221
+ justify-content: center;
222
+ align-items: center;
223
+ }
224
+ .bi-account-select__handle{
225
+ position: relative;
226
+ padding-right: 18px;
227
+ padding-top: 1px;
228
+ padding-bottom: 1px;
229
+ height: 32px;
230
+ line-height: 32px;
231
+ &:after {
232
+ content: '';
233
+ width: 6px;
234
+ height: 6px;
235
+ border: 1px solid #ccc;
236
+ border-left: 0;
237
+ border-top: 0;
238
+ transform: rotate(45deg) translateY(-50%);
239
+ position: absolute;
240
+ right: 6px;
241
+ top: 50%;
242
+ margin-top: -3px;
243
+ }
244
+ }
245
+ .bi-account-select__list{
246
+ flex: 1;
247
+ min-height: 0;
248
+ overflow: auto;
249
+ padding-top: 6px;
250
+ padding-bottom: 6px;
251
+ }
252
+ </style>
@@ -0,0 +1,49 @@
1
+ <template>
2
+ <view class="bi-all-friend-avatar" :class="['bi-all-friend-avatar--' + size, {'is-round': round}]">
3
+ <bi-icon name="all-friend-line" :size="size === 'medium' ? '20px' : ''"></bi-icon>
4
+ </view>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ name: 'BiAllFriendAvatar',
10
+ props: {
11
+ size: {
12
+ type: String,
13
+ default: 'small',
14
+ validator (value) {
15
+ return ['small', 'mini'].includes(value)
16
+ }
17
+ },
18
+ round: {
19
+ type: Boolean,
20
+ default: false
21
+ }
22
+ }
23
+ }
24
+ </script>
25
+
26
+ <style lang="less">
27
+ .bi-all-friend-avatar {
28
+ display: inline-block;
29
+ background-color: #2e2d31;
30
+ color: rgba(255, 255, 255, .9);
31
+ text-align: center;
32
+ &.is-round {
33
+ border-radius: 50%;
34
+ }
35
+ &:not(.is-round) {
36
+ border-radius: 3px;
37
+ }
38
+ }
39
+ .bi-all-friend-avatar--mini {
40
+ width: 24px;
41
+ height: 24px;
42
+ line-height: 22px;
43
+ }
44
+ .bi-all-friend-avatar--small {
45
+ width: 32px;
46
+ height: 32px;
47
+ line-height: 32px;
48
+ }
49
+ </style>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1755860383442" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4771" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M0 0m72.576 0l878.848 0q72.576 0 72.576 72.576l0 878.848q0 72.576-72.576 72.576l-878.848 0q-72.576 0-72.576-72.576l0-878.848q0-72.576 72.576-72.576Z" fill="#EFEFEE" p-id="4772"></path><path d="M508.928 750.976h-220.16c-23.808 0-32.512-9.6-33.408-33.408a62.336 62.336 0 0 1 39.68-64c45.952-21.504 91.392-44.416 136.96-66.944 27.776-13.696 32-34.944 12.8-58.368a162.048 162.048 0 0 1-41.088-112.128 309.76 309.76 0 0 1 2.176-64 106.368 106.368 0 0 1 163.712-62.72 102.4 102.4 0 0 1 46.08 87.04 344.704 344.704 0 0 1-3.072 73.472 192 192 0 0 1-41.984 82.432c-15.36 18.688-12.8 38.4 8.704 50.304 40.448 21.376 82.048 40.576 123.136 60.8 19.2 9.344 39.936 15.872 52.736 36.48a72.576 72.576 0 0 1 7.936 48.256c-2.176 15.36-12.8 22.784-30.976 22.784z" fill="#C2C1C1" p-id="4773"></path></svg>
@@ -0,0 +1,27 @@
1
+ <template>
2
+ <bi-avatar :src="innerSrc" :size="size"></bi-avatar>
3
+ </template>
4
+ <script>
5
+ import BiAvatar from '@aochuang/common/uni-components/avatar/avatar.vue'
6
+
7
+ export default {
8
+ name: 'SdkFriendAvatar',
9
+ components: {
10
+ BiAvatar
11
+ },
12
+ props: {
13
+ src: {
14
+ type: String
15
+ },
16
+ size: {
17
+ type: String,
18
+ default: 'small'
19
+ }
20
+ },
21
+ computed: {
22
+ innerSrc () {
23
+ return this.src || require('./default.svg')
24
+ }
25
+ }
26
+ }
27
+ </script>
@@ -0,0 +1,3 @@
1
+ import FriendAvatar from './friend-avatar.vue'
2
+
3
+ export default FriendAvatar
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <view class="bi-friend-loader">
3
+ <template v-if="loading">
4
+ <slot name="loading">
5
+ 数据加载中...
6
+ </slot>
7
+ </template>
8
+ <template v-else-if="friendData">
9
+ <slot :data="friendData"></slot>
10
+ </template>
11
+ <template v-else>
12
+ <template v-if="allowEmpty">
13
+ <slot></slot>
14
+ </template>
15
+ <template v-else>
16
+ 未找到好友数据
17
+ </template>
18
+ </template>
19
+ </view>
20
+ </template>
21
+
22
+ <script>
23
+
24
+ export default {
25
+ name: 'BiFriendProfile',
26
+ props: {
27
+ id: {
28
+ type: String
29
+ },
30
+ allowEmpty: {
31
+ type: Boolean,
32
+ default: false
33
+ }
34
+ },
35
+ data () {
36
+ return {
37
+ loading: false,
38
+ friendData: null
39
+ }
40
+ },
41
+ created () {
42
+ this.loading = true
43
+ this.$clientChat.contacts.getFriend(this.id).then(rs => {
44
+ this.friendData = rs.data
45
+ }).finally(() => {
46
+ this.loading = false
47
+ })
48
+ }
49
+ }
50
+ </script>
51
+
52
+ <style>
53
+ </style>
@@ -0,0 +1,56 @@
1
+ <template>
2
+ <bi-portray
3
+ :name="friendData && (friendData.conRemark || friendData.nickname)"
4
+ :loading="loading"
5
+ >
6
+ <template slot="avatar">
7
+ <sdk-friend-avatar :src="friendData && friendData.avatar"></sdk-friend-avatar>
8
+ </template>
9
+ </bi-portray>
10
+ </template>
11
+
12
+ <script>
13
+ import SdkFriendAvatar from 'client-sdk/uni-common/friend-avatar'
14
+ import BiPortray from '@aochuang/common/uni-common/portray/portray.vue'
15
+
16
+ export default {
17
+ name: 'BiFriendPortray',
18
+ components: {
19
+ BiPortray,
20
+ SdkFriendAvatar
21
+ },
22
+ props: {
23
+ id: {
24
+ type: String,
25
+ required: true
26
+ }
27
+ },
28
+ data () {
29
+ return {
30
+ loading: false,
31
+ friendData: null
32
+ }
33
+ },
34
+ watch: {
35
+ id () {
36
+ this.loadData()
37
+ }
38
+ },
39
+ created () {
40
+ this.loadData()
41
+ },
42
+ methods: {
43
+ loadData () {
44
+ this.loading = true
45
+ this.$clientChat.contacts.getFriend(this.id).then(rs => {
46
+ this.friendData = rs.data
47
+ }).finally(() => {
48
+ this.loading = false
49
+ })
50
+ }
51
+ }
52
+ }
53
+ </script>
54
+
55
+ <style>
56
+ </style>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1757039867044" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13568" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M904.85 902.05208333H124.1S62 911.78333333 62 828.87083333V158.65208333S63.35 84.23333333 139.4 84.23333333h273.6s33.13125001-6.91875001 60.75 35.83125c26.26875001 41.484375 41.4 67.78125001 41.4 67.78125s9.73125001 10.96875001 31.865625 10.96875h352.35s62.1-6.91875001 62.1 62.1v572.034375c0.084375 0.084375 9.815625 69.3-56.615625 69.3z m-57.965625-524.953125a30.7125 30.7125 0 0 0-30.31875-30.515625H208.5875c-18 0-31.78125001 13.865625-31.78125001 30.515625v2.7c0 18 13.78125001 31.865625 31.78125001 31.865625h607.95a30.965625 30.965625 0 0 0 30.346875-30.965625v-0.84375 0.05625-2.784375z" fill="#bdbaba" p-id="13569"></path></svg>
@@ -0,0 +1,18 @@
1
+ <template>
2
+ <view class="sdk-group-avatar"></view>
3
+ </template>
4
+ <script>
5
+ export default {
6
+ name: 'SdkGroupAvatar'
7
+ }
8
+ </script>
9
+ <style lang="less">
10
+ .sdk-group-avatar{
11
+ display: inline-block;
12
+ width: 18px;
13
+ height: 18px;
14
+ border-radius: 4px;
15
+ background: url('./default.svg') no-repeat 50% 50%;
16
+ background-size: 18px;
17
+ }
18
+ </style>
@@ -0,0 +1,3 @@
1
+ import GroupAvatar from './group-avatar.vue'
2
+
3
+ export default GroupAvatar