123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- <template>
- <view @touchmove.stop.prevent="moveHandle('touchmove')" @click="moveHandle('click')" v-if="isActive">
- <view class="main-action-menu" :animation="animationData" :style="{ top: height + 'px' }">
- <view class="main-action-menu-top-arrow"></view>
- <view class="menu-list">
- <view class="menu-item" @click="go2CreateGroup">
- <view class="menu-item-icon">
- <view class="wxfont message2"></view>
- </view>
- <view class="text">发起群聊</view>
- </view>
- <view class="menu-item" @click="go2SearchFriend">
- <view class="menu-item-icon">
- <view class="wxfont add2"></view>
- </view>
- <view class="text">添加朋友</view>
- </view>
- <view class="menu-item" @click="go2ScanQrCode">
- <view class="menu-item-icon">
- <view class="wxfont qr_code"></view>
- </view>
- <view class="text">扫一扫</view>
- </view>
- </view>
- </view>
- <view class="main-action-menu-background-model"></view>
- </view>
- </template>
- <script>
- import Config from "../../config";
- import store from "../../store";
- export default {
- data() {
- return {
- height: 0,//距离顶部高度oo
- isActive: false,
- animationData: {}
- };
- },
- props: {
- list: {
- type: Array,
- default() {
- return [{}];
- }
- }
- },
- onShow() {
- },
- mounted() {
- this.getstatusBarHeight();
- let animation = uni.createAnimation({
- duration: 300,
- timingFunction: 'linear'
- });
- this.animation = animation;
- },
- methods: {
- go2CreateGroup() {
- let sharedContactState = store.state.contact;
- let users = sharedContactState.favContactList.concat(sharedContactState.friendList);
- users = users.filter(u => {
- return u.uid !== Config.FILE_HELPER_ID
- });
- this.$pickUser({
- users: users,
- successCB: users => {
- // TODO 创建群聊会比较慢,可以在这儿加一个 loading 页面
- store.createConversation(users, (conversation) => {
- // 不加延时的话,不能正常切换页面,会报莫名其妙的错误
- setTimeout(() => {
- this.$go2ConversationPage();
- }, 50)
- }, err => {
- })
- }
- });
- },
- go2SearchFriend() {
- uni.navigateTo({
- url: '/pages/contact/SearchUserPage',
- fail: err => {
- }
- })
- },
- go2ScanQrCode() {
- uni.scanCode({
- success: function (res) {
- console.log('条码类型:' + res.scanType);
- console.log('条码内容:' + res.result);
- if (res.result){
- // TODO
- // wildfirechat://pcsession/xxxx
- uni.showToast({
- title: '扫码成功: ' + res.result,
- icon: 'none',
- });
- }
- }
- });
- },
- showAnimation() {
- this.animation.opacity(1).step();
- this.animationData = this.animation.export();
- },
- hideAnimation() {
- this.animation.opacity(0).step();
- this.animationData = this.animation.export();
- },
- moveHandle(e) {
- this.hide()
- },
- show() {
- this.isActive = true
- setTimeout(() => {
- this.showAnimation()
- }, 30)
- },
- hide() {
- this.isActive = false
- this.hideAnimation()
- },
- getstatusBarHeight() {
- let SystemInfo = uni.getSystemInfoSync();
- // #ifdef H5
- this.height = SystemInfo.safeArea.top + SystemInfo.windowTop;
- // #endif
- }
- }
- };
- </script>
- <style scoped>
- .main-action-menu {
- width: 300rpx;
- position: fixed;
- z-index: 9999;
- top: -10px;
- right: 16rpx;
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- opacity: 0;
- }
- .main-action-menu-background-model {
- background-color: rgba(0, 0, 0, 0);
- position: fixed;
- top: 0;
- bottom: 0;
- right: 0;
- left: 0;
- z-index: 9998;
- }
- .main-action-menu-top-arrow {
- width: 0px;
- height: 0px;
- border: 10px solid transparent;
- border-bottom-color: #4C4C4C;
- margin-left: auto;
- margin-right: 20rpx;
- }
- .menu-list {
- width: 100%;
- background-color: #4C4C4C;
- border-radius: 10rpx;
- }
- .menu-item {
- display: flex;
- flex-direction: row;
- align-items: center;
- padding: 0rpx 36rpx;
- padding-right: 0;
- }
- .menu-item-icon {
- width: 38rpx;
- height: 38rpx;
- margin-right: 28rpx;
- color: #fff;
- }
- .menu-item-icon .wxfont {
- font-size: 40rpx;
- }
- .menu-item .text {
- color: #fff;
- font-size: 32rpx;
- border-bottom: 1px #535353 solid;
- padding: 30rpx 0rpx;
- flex: 1;
- }
- .menu-item:nth-last-child(1) .text {
- border: none;
- }
- </style>
|