|
|
@@ -57,10 +57,8 @@
|
|
|
<!-- 顶部信息栏 -->
|
|
|
<view class="top-info-bar" :class="liveItem.showType == 1 ? 'horizontal-top' : ''">
|
|
|
<view class="user-info-section">
|
|
|
- <image v-if="!scene&&liveItem.showType==2" @click="goBack" class="back-icon mr4"
|
|
|
+ <image v-if="!scene" @click="goBack" class="back-icon mr4"
|
|
|
src="https://bjzmky-1323137866.cos.ap-chongqing.myqcloud.com/userapp/images/return3.png" />
|
|
|
- <image v-if="!scene&&liveItem.showType==1" @click="goBack" class="w42 h42 mr4"
|
|
|
- src="/static/images/return_black.png" />
|
|
|
<view class="user-avatar-container">
|
|
|
<u-avatar
|
|
|
:src="liveItem.liveImgUrl || 'https://bjzmky-1323137866.cos.ap-chongqing.myqcloud.com/userapp/images/avatar.png'"
|
|
|
@@ -75,11 +73,11 @@
|
|
|
<!-- @click="toggleViewerList" -->
|
|
|
<view v-if="Array.isArray(filteredViewers)" class="viewers-section">
|
|
|
<view v-for="(item, index) in (filteredViewers ||[])" :key="index">
|
|
|
- <image v-if="item" class="viewer-avatar mr4" :src="item" />
|
|
|
- <!-- <view v-else class="viewer-avatar-placeholder mr4"
|
|
|
+ <image v-if="item.avatar" class="viewer-avatar mr4" :src="item.avatar" />
|
|
|
+ <view v-else class="viewer-avatar-placeholder mr4"
|
|
|
:style="{ backgroundColor: getUserRandomColor(item.userId) }">
|
|
|
<text class="avatar-initial">{{ getNicknameInitial(item.nickName) }}</text>
|
|
|
- </view> -->
|
|
|
+ </view>
|
|
|
</view>
|
|
|
<view class="viewer-count ">{{formattedWatchCount || 0 }}</view>
|
|
|
</view>
|
|
|
@@ -162,7 +160,7 @@
|
|
|
</view>
|
|
|
<scroll-view id="msgScroll" v-if="Array.isArray(talklist)" enable-flex scroll-y="true"
|
|
|
:enhanced="true" :bounces="false" :show-scrollbar="false" :fast-deceleration="false"
|
|
|
- :enable-back-to-top="false" class="message-scroll-view" :class="liveItem.status == 1 ? 'message-scroll2' : ''" :scroll-top="scrollTop"
|
|
|
+ :enable-back-to-top="false" class="message-scroll-view" :scroll-top="scrollTop"
|
|
|
:scroll-into-view="scrollIntoView" @scroll="onScroll" ref="scrollView">
|
|
|
<view class="message-list" v-for="(item, talkIndex) in (talklist || [])"
|
|
|
:key="item.uniqueId " :id="`list_${item.uniqueId }`" v-show="item.cmd != 'red' ">
|
|
|
@@ -196,8 +194,7 @@
|
|
|
:class="{ 'input-focused': isFocus }" @focus="inputFocus" @blur="inputBlur"
|
|
|
cursor-spacing="100" :adjust-position="false" :disabled="isEnd" />
|
|
|
<!-- v-if="isFocus&&!isIOS" -->
|
|
|
- <view class="send-button" :class="liveItem.showType == 1 ? 'send2' : ''" @click="sendMsg()">
|
|
|
- 发送</view>
|
|
|
+ <view class="send-button" :class="liveItem.showType == 1 ? 'send2' : ''" @click="sendMsg()">发送</view>
|
|
|
</view>
|
|
|
<!-- :class="{ 'action-buttons-hidden': isFocus }" -->
|
|
|
<view class="action-buttons" v-if="!isFocus">
|
|
|
@@ -557,16 +554,16 @@
|
|
|
<input placeholder="请搜索商品" v-model="inputInfo" @input="handleSearchInput" />
|
|
|
</view>
|
|
|
<view class="x-f">
|
|
|
- <view class="shopping-action-button mr30" @click="navgetTo('/pages_shopping/live/order')">
|
|
|
- <image class="action-button-icon"
|
|
|
- src="https://bjzmky-1323137866.cos.ap-chongqing.myqcloud.com/userapp/images/carts.png" />
|
|
|
- <view class="action-button-label">订单</view>
|
|
|
- </view>
|
|
|
- <view class="shopping-action-button" @click="(isMore = true), (shopping = false)">
|
|
|
- <image class="action-button-icon"
|
|
|
- src="https://bjzmky-1323137866.cos.ap-chongqing.myqcloud.com/userapp/images/search2.png" />
|
|
|
- <view class="action-button-label">更多</view>
|
|
|
- </view>
|
|
|
+ <view class="shopping-action-button mr30" @click="navgetTo('/pages_shopping/live/order')">
|
|
|
+ <image class="action-button-icon"
|
|
|
+ src="https://bjzmky-1323137866.cos.ap-chongqing.myqcloud.com/userapp/images/carts.png" />
|
|
|
+ <view class="action-button-label">订单</view>
|
|
|
+ </view>
|
|
|
+ <view class="shopping-action-button" @click="(isMore = true), (shopping = false)">
|
|
|
+ <image class="action-button-icon"
|
|
|
+ src="https://bjzmky-1323137866.cos.ap-chongqing.myqcloud.com/userapp/images/search2.png" />
|
|
|
+ <view class="action-button-label">更多</view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
|
@@ -689,12 +686,6 @@
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
- isNow: false,
|
|
|
- fakeAvatar: Array.from({
|
|
|
- length: 11
|
|
|
- }, (_, i) =>
|
|
|
- `https://bjzmky-1323137866.cos.ap-chongqing.myqcloud.com/userapp/images/avatar${i + 1}.jpg`),
|
|
|
- virtualHuman: null,
|
|
|
userlogo: false,
|
|
|
listTabs: [{
|
|
|
name: '讨论',
|
|
|
@@ -930,6 +921,7 @@
|
|
|
}
|
|
|
} else {
|
|
|
console.log("手机型号是>>>>", this.systemInfo.model)
|
|
|
+ console.log("手机高度是>>>>", this.systemInfo.model)
|
|
|
// Android处理保持原有逻辑
|
|
|
if (res.height > 0) {
|
|
|
this.isKeyboardShow = true;
|
|
|
@@ -956,7 +948,7 @@
|
|
|
},
|
|
|
onPullDownRefresh() {
|
|
|
this.getLiveMsg(this.liveItem);
|
|
|
- // this.getliveUser();
|
|
|
+ this.getliveUser();
|
|
|
setTimeout(() => {
|
|
|
uni.stopPullDownRefresh();
|
|
|
}, 1000);
|
|
|
@@ -1038,9 +1030,6 @@
|
|
|
this.totalTraffic = 0;
|
|
|
}
|
|
|
this.startTimer();
|
|
|
- if (!this.isNow) {
|
|
|
- this.userlogo = true
|
|
|
- }
|
|
|
},
|
|
|
|
|
|
//分享给好友
|
|
|
@@ -1070,43 +1059,16 @@
|
|
|
},
|
|
|
// 观看人数
|
|
|
formattedWatchCount() {
|
|
|
- return this.formatNumber(this.virtualHuman || 0);
|
|
|
+ return this.formatNumber(this.liveUserTotal || 0);
|
|
|
},
|
|
|
//点赞人数
|
|
|
formattedLikeCount() {
|
|
|
return this.formatNumber(this.liveViewData.like || 0);
|
|
|
},
|
|
|
filteredViewers() {
|
|
|
- // 获取3个随机假头像,而不是显示真实观众
|
|
|
- const avatarCount = 3; // 需要显示的假头像数量
|
|
|
-
|
|
|
- // 如果fakeAvatar数组为空或不存在,返回空数组
|
|
|
- if (!this.fakeAvatar || !Array.isArray(this.fakeAvatar) || this.fakeAvatar.length === 0) {
|
|
|
- return [];
|
|
|
- }
|
|
|
-
|
|
|
- // 从fakeAvatar中随机选择3个不同的头像
|
|
|
- const randomAvatars = [];
|
|
|
- const availableAvatars = [...this.fakeAvatar]; // 创建副本避免修改原数组
|
|
|
-
|
|
|
- // 确保有足够的头像可选
|
|
|
- if (availableAvatars.length < avatarCount) {
|
|
|
- // 如果头像数量不足,可以重复使用
|
|
|
- for (let i = 0; i < avatarCount; i++) {
|
|
|
- const randomIndex = Math.floor(Math.random() * availableAvatars.length);
|
|
|
- randomAvatars.push(availableAvatars[randomIndex]);
|
|
|
- }
|
|
|
- } else {
|
|
|
- // 随机选择不重复的头像
|
|
|
- for (let i = 0; i < avatarCount; i++) {
|
|
|
- const randomIndex = Math.floor(Math.random() * availableAvatars.length);
|
|
|
- randomAvatars.push(availableAvatars[randomIndex]);
|
|
|
- availableAvatars.splice(randomIndex, 1); // 移除已选的头像,避免重复
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- console.log("随机选择的头像:", randomAvatars);
|
|
|
- return randomAvatars;
|
|
|
+ const safeLiveViewers = Array.isArray(this.liveViewersData) ? this.liveViewersData : [];
|
|
|
+ // 截取前3项
|
|
|
+ return safeLiveViewers.slice(0, 3);
|
|
|
},
|
|
|
isCurrentUserWon() {
|
|
|
if (!Array.isArray(this.prizeInfo) || !this.userInfo?.userId) {
|
|
|
@@ -1129,10 +1091,10 @@
|
|
|
return userPrize ? userPrize.productId : null;
|
|
|
},
|
|
|
getCurrentUserPrizeRecordId() {
|
|
|
- // console.log('=== getCurrentUserPrizeRecordId 调试信息 ===');
|
|
|
- // console.log('this.prizeInfo:', this.prizeInfo);
|
|
|
- // console.log('this.userInfo:', this.userInfo);
|
|
|
- // console.log('this.userInfo.userId:', this.userInfo?.userId);
|
|
|
+ console.log('=== getCurrentUserPrizeRecordId 调试信息 ===');
|
|
|
+ console.log('this.prizeInfo:', this.prizeInfo);
|
|
|
+ console.log('this.userInfo:', this.userInfo);
|
|
|
+ console.log('this.userInfo.userId:', this.userInfo?.userId);
|
|
|
|
|
|
if (!Array.isArray(this.prizeInfo) || !this.userInfo?.userId) {
|
|
|
console.log('条件不满足,返回null');
|
|
|
@@ -1150,8 +1112,8 @@
|
|
|
return match;
|
|
|
});
|
|
|
|
|
|
- // console.log('找到的用户奖品:', userPrize);
|
|
|
- // console.log('最终返回的recordId:', userPrize ? userPrize.recordId : null);
|
|
|
+ console.log('找到的用户奖品:', userPrize);
|
|
|
+ console.log('最终返回的recordId:', userPrize ? userPrize.recordId : null);
|
|
|
|
|
|
return userPrize ? userPrize.recordId : null;
|
|
|
},
|
|
|
@@ -1315,10 +1277,8 @@
|
|
|
},
|
|
|
async haveLogin() {
|
|
|
this.userInfo = uni.getStorageSync('userInfo');
|
|
|
- if (this.userInfo) {
|
|
|
- await this.getUserInfo();
|
|
|
- }
|
|
|
-
|
|
|
+ // this.userData = uni.getStorageSync('userData');
|
|
|
+ await this.getUserInfo();
|
|
|
// this.initTime();
|
|
|
if (this.liveId) {
|
|
|
// 先获取直播间信息
|
|
|
@@ -1344,7 +1304,7 @@
|
|
|
// await this.getUserInfo();
|
|
|
// }
|
|
|
// },
|
|
|
-
|
|
|
+
|
|
|
// 静默登录
|
|
|
goLogin(data) {
|
|
|
let provider = 'weixin'
|
|
|
@@ -1651,9 +1611,9 @@
|
|
|
this.talklist = this.talklist.slice(-50);
|
|
|
}
|
|
|
// 清理观众数据
|
|
|
- // if (this.liveViewersData.length > 100) {
|
|
|
- // this.liveViewersData = this.liveViewersData.slice(-100);
|
|
|
- // }
|
|
|
+ if (this.liveViewersData.length > 100) {
|
|
|
+ this.liveViewersData = this.liveViewersData.slice(-100);
|
|
|
+ }
|
|
|
|
|
|
// 清理虚拟数据
|
|
|
if (this.liveViewers.length > 100) {
|
|
|
@@ -1681,7 +1641,7 @@
|
|
|
|
|
|
// 强制滚动到底部(备用方案)
|
|
|
forceScrollToBottom() {
|
|
|
- // console.log('执行强制滚动到底部');
|
|
|
+ console.log('执行强制滚动到底部');
|
|
|
|
|
|
// 方案1:直接设置一个很大的scrollTop值
|
|
|
this.scrollTop = 999999;
|
|
|
@@ -1758,7 +1718,7 @@
|
|
|
|
|
|
// 强制滚动到底部(用于发送消息,绕过防抖限制)
|
|
|
forceScrollToBottomOnSend() {
|
|
|
- // console.log('执行强制滚动到底部(发送消息专用)');
|
|
|
+ console.log('执行强制滚动到底部(发送消息专用)');
|
|
|
|
|
|
// 清理之前的定时器
|
|
|
if (this.scrollTimer) {
|
|
|
@@ -2122,6 +2082,7 @@
|
|
|
const now = Date.now();
|
|
|
// 防抖检查:如果距离上次滚动时间太短,则忽略
|
|
|
if (now - this.lastScrollTime < this.scrollDebounceDelay) {
|
|
|
+ console.log('滚动防抖:忽略频繁调用');
|
|
|
return;
|
|
|
}
|
|
|
this.lastScrollTime = now;
|
|
|
@@ -2261,7 +2222,6 @@
|
|
|
(res) => {
|
|
|
if (res.code == 200) {
|
|
|
this.userInfo = res.user;
|
|
|
- this.isNow = dayjs(this.userInfo.updateTime).isSame(dayjs(), 'day')
|
|
|
} else {
|
|
|
uni.showToast({
|
|
|
icon: 'none',
|
|
|
@@ -2987,8 +2947,10 @@
|
|
|
this.isShowLottery = this.lotteryInfo && this.lotteryInfo.lotteryStatus == 1;
|
|
|
|
|
|
if (this.notice.msg) {
|
|
|
+ console.log("有》》》》")
|
|
|
this.noticeTimer = setInterval(() => {
|
|
|
const noticeCountdown = this.handleTime(this.notice.endTime, 0);
|
|
|
+ console.log("出现1>>>", noticeCountdown)
|
|
|
if (!noticeCountdown) {
|
|
|
this.isShowNotice = false;
|
|
|
clearInterval(this.noticeTimer);
|
|
|
@@ -3113,6 +3075,7 @@
|
|
|
},
|
|
|
|
|
|
pauseVideo() {
|
|
|
+ console.log("暂停了")
|
|
|
if (!this.liveItem) return;
|
|
|
|
|
|
try {
|
|
|
@@ -3246,48 +3209,48 @@
|
|
|
},
|
|
|
|
|
|
// 获取直播间用户
|
|
|
- // async getliveUser(isLoadMore = false) {
|
|
|
- // this.viewLoading = true;
|
|
|
-
|
|
|
- // try {
|
|
|
- // const res = await watchUserList(this.liveId, this.viewPageSize, this.viewPageNum, false);
|
|
|
- // console.log("getliveUser", res);
|
|
|
- // if (res.code === 200) {
|
|
|
- // const userRows = Array.isArray(res.rows) ? res.rows : [];
|
|
|
-
|
|
|
- // let array = userRows.map((item) => ({
|
|
|
- // avatar: item.avatar || '',
|
|
|
- // userId: item.userId || '',
|
|
|
- // nickName: item.nickName || '未命名'
|
|
|
- // }));
|
|
|
-
|
|
|
- // // 虚拟数据
|
|
|
- // let virtualData = [];
|
|
|
- // let virtualTotal = res.total * 10;
|
|
|
- // this.liveUserTotal = virtualTotal;
|
|
|
- // for (let i = 0; i < virtualTotal; i++) {
|
|
|
- // let data = {
|
|
|
- // avatar: '',
|
|
|
- // userId: '8565' + i,
|
|
|
- // nickName: '微信用户'
|
|
|
- // };
|
|
|
- // virtualData.push(data);
|
|
|
- // }
|
|
|
- // this.liveViewersData = [...array, ...virtualData];
|
|
|
-
|
|
|
- // const newRows = Array.isArray(res.rows) ? res.rows : [];
|
|
|
- // const currentViewers = Array.isArray(this.liveViewers) ? this.liveViewers : [];
|
|
|
-
|
|
|
- // let viewlist = isLoadMore ? [...currentViewers, ...newRows] : newRows;
|
|
|
- // this.liveViewers = [...viewlist, ...virtualData];
|
|
|
- // this.viewPageNum++;
|
|
|
- // }
|
|
|
- // } catch (error) {
|
|
|
- // console.error('获取观众列表失败:', error);
|
|
|
- // } finally {
|
|
|
- // this.viewLoading = false;
|
|
|
- // }
|
|
|
- // },
|
|
|
+ async getliveUser(isLoadMore = false) {
|
|
|
+ this.viewLoading = true;
|
|
|
+
|
|
|
+ try {
|
|
|
+ const res = await watchUserList(this.liveId, this.viewPageSize, this.viewPageNum, false);
|
|
|
+ console.log("getliveUser",res);
|
|
|
+ if (res.code === 200) {
|
|
|
+ const userRows = Array.isArray(res.rows) ? res.rows : [];
|
|
|
+
|
|
|
+ let array = userRows.map((item) => ({
|
|
|
+ avatar: item.avatar || '',
|
|
|
+ userId: item.userId || '',
|
|
|
+ nickName: item.nickName || '未命名'
|
|
|
+ }));
|
|
|
+
|
|
|
+ // 虚拟数据
|
|
|
+ let virtualData = [];
|
|
|
+ let virtualTotal = res.total * 10;
|
|
|
+ this.liveUserTotal = virtualTotal;
|
|
|
+ for (let i = 0; i < virtualTotal; i++) {
|
|
|
+ let data = {
|
|
|
+ avatar: '',
|
|
|
+ userId: '8565' + i,
|
|
|
+ nickName: '微信用户'
|
|
|
+ };
|
|
|
+ virtualData.push(data);
|
|
|
+ }
|
|
|
+ this.liveViewersData = [...array, ...virtualData];
|
|
|
+
|
|
|
+ const newRows = Array.isArray(res.rows) ? res.rows : [];
|
|
|
+ const currentViewers = Array.isArray(this.liveViewers) ? this.liveViewers : [];
|
|
|
+
|
|
|
+ let viewlist = isLoadMore ? [...currentViewers, ...newRows] : newRows;
|
|
|
+ this.liveViewers = [...viewlist, ...virtualData];
|
|
|
+ this.viewPageNum++;
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('获取观众列表失败:', error);
|
|
|
+ } finally {
|
|
|
+ this.viewLoading = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
|
|
|
//小黄车搜索商品
|
|
|
handleSearchInput() {
|
|
|
@@ -3642,6 +3605,7 @@
|
|
|
this.createWebSocketConnection();
|
|
|
},
|
|
|
createWebSocketConnection() {
|
|
|
+
|
|
|
// 校验必要参数
|
|
|
if (!this.liveId) {
|
|
|
console.error('缺失直播间ID,无法初始化WebSocket');
|
|
|
@@ -3662,6 +3626,10 @@
|
|
|
// 清除之前的重连定时器
|
|
|
this.resetReconnectState();
|
|
|
|
|
|
+ setTimeout(() => {
|
|
|
+ this.getliveUser(false);
|
|
|
+ }, 1000);
|
|
|
+
|
|
|
const now = new Date();
|
|
|
this.timestamp = now.getTime(); // 生成签名
|
|
|
const signature = CryptoJS.HmacSHA256(
|
|
|
@@ -3682,7 +3650,7 @@
|
|
|
wsUrl += this.qrFrom;
|
|
|
}
|
|
|
// if(this.address){
|
|
|
- // console.log("this.address是什么>>>", this.address)
|
|
|
+ console.log("this.address是什么>>>", this.address)
|
|
|
wsUrl += `&location=${this.address}`;
|
|
|
// wsUrl += `&location=${encodeURIComponent(liveWatchUser)}`;
|
|
|
// }
|
|
|
@@ -3984,17 +3952,21 @@
|
|
|
}
|
|
|
} else if (socketMessage.cmd == 'globalVisible' || socketMessage.cmd == 'singleVisible') {
|
|
|
// status = 1的时候,用户消息自可见,其他消息丢失}
|
|
|
+ console.log("可见性>>>>>", socketMessage)
|
|
|
if (socketMessage.status == 1) {
|
|
|
+ console.log("不可见性")
|
|
|
this.myselfFlag = true;
|
|
|
} else {
|
|
|
this.myselfFlag = false;
|
|
|
}
|
|
|
|
|
|
} else if (socketMessage.cmd == 'sendPopMsg') {
|
|
|
+ console.log("弹窗消息>>>>", socketMessage)
|
|
|
this.popMsg = socketMessage.msg
|
|
|
this.isShowPopMsg = true
|
|
|
} else if (socketMessage.cmd == 'sendTopMsg') {
|
|
|
clearInterval(this.noticeTimer);
|
|
|
+ console.log("公告消息>>>>", socketMessage)
|
|
|
const noticeData = socketMessage.data ? JSON.parse(socketMessage.data) : {};
|
|
|
this.notice = noticeData || {};
|
|
|
this.isShowNotice = true
|
|
|
@@ -4011,6 +3983,7 @@
|
|
|
} else if (socketMessage.cmd == 'entry') {
|
|
|
try {
|
|
|
if (!this.liveUserCalled) {
|
|
|
+ await this.getliveUser(false);
|
|
|
this.liveUserCalled = true;
|
|
|
}
|
|
|
const userIdToEntry = socketMessage.userId;
|
|
|
@@ -4067,6 +4040,7 @@
|
|
|
this.showWelcomeMessage = false;
|
|
|
}, 3000);
|
|
|
} else if (socketMessage.cmd == 'live_start' || socketMessage.cmd == 'live_end') {
|
|
|
+ console.log("直播关闭在这里>>>>>>关闭")
|
|
|
// 开始直播,关闭直播
|
|
|
if (this.liveStartTimer) {
|
|
|
clearInterval(this.liveStartTimer);
|
|
|
@@ -4085,10 +4059,6 @@
|
|
|
msg: socketMessage.msg,
|
|
|
status: true
|
|
|
};
|
|
|
- } else if (socketMessage.cmd == 'userCount') {
|
|
|
- // 广播在线人数
|
|
|
- this.virtualHuman = socketMessage.data * 10
|
|
|
-
|
|
|
} else if (socketMessage.cmd == 'deleteMsg') {
|
|
|
const index = this.talklist.findIndex(item => item.msgId == socketMessage.msg);
|
|
|
if (index !== -1) {
|
|
|
@@ -4601,7 +4571,6 @@
|
|
|
transform: translateZ(0);
|
|
|
will-change: transform;
|
|
|
backface-visibility: hidden;
|
|
|
-
|
|
|
&.chat-area-container2 {
|
|
|
flex: 1;
|
|
|
min-height: 0; // 重要:允许收缩到0
|
|
|
@@ -4613,7 +4582,7 @@
|
|
|
}
|
|
|
|
|
|
&.chat-area-container3 {
|
|
|
-
|
|
|
+
|
|
|
max-height: 40%;
|
|
|
flex: 1;
|
|
|
min-height: 0; // 重要:允许收缩到0
|
|
|
@@ -4645,7 +4614,7 @@
|
|
|
position: relative;
|
|
|
|
|
|
&.chat-content-focused {
|
|
|
- height: 100rpx;
|
|
|
+ height: 64rpx;
|
|
|
}
|
|
|
|
|
|
.notice-message {
|
|
|
@@ -4674,9 +4643,6 @@
|
|
|
flex: 1;
|
|
|
flex-direction: column;
|
|
|
-webkit-overflow-scrolling: touch;
|
|
|
- &.message-scroll2{
|
|
|
- height: 368rpx;
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
.message-list {
|
|
|
@@ -4786,13 +4752,12 @@
|
|
|
min-width: 80rpx;
|
|
|
text-align: center;
|
|
|
flex-shrink: 0;
|
|
|
-
|
|
|
&.send2 {
|
|
|
background-color: #2fa9f1;
|
|
|
color: #ffffff;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
.action-buttons {
|