Files
2025-06-11 10:21:51 +08:00

199 lines
4.7 KiB
Plaintext

<template>
<view v-if="popupVisible" class="popup-footer">
<view class="pop__ui_panel">
<view class="pop__ui_mask" @tap="close"></view>
<view class="pop__ui_child anim-footer" @tap.stop="">
<view class="pop__ui_body">
<view class="wrap_commentPanel">
<view class="wrap_cmtFoot" :style="'bottom:' +inputBottom+'px;'">
<view class="wrap__editorPanel uni_borT uni__editorPanel">
<view class="wrap_editor uni_editor">
<input class="editor" auto-focus="true" value="" v-model="content" :adjust-position="false" confirm-type="send"
@confirm="sendTextMsg()" placeholder="说点什么..." @focus="inputFocus" @blur="inputBlur" />
</view>
<view class="uni_editor_btn" @tap="emojiShow=!emojiShow;">
<text class="icon iconfont icon-biaoqing"></text>
</view>
<view class="uni_editor_btn btn_submit uni__btn-primary bg_linear2" @tap="sendTextMsg">
<text class="icon iconfont icon-fasong"></text>
</view>
</view>
<view class="bc-white" v-show="emojiShow">
<swiper class="slider">
<swiper-item v-for="(item, key) in emojiData" :key="key" class="slider-emoji" :class="[key==emojiData.length-1?'lastbox':'']">
<text v-for="(emoji, index) in item" :key="index" @click="selemoji(emoji)" class="slider-emoji-icon">{{ emoji }}</text>
</swiper-item>
</swiper>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
const emoji = require('./emoji.js');
import uniLoadMore from '@/components/uni-load-more.vue';
import utils from '@/common/utils.js'
export default {
components: {
uniLoadMore
},
data() {
return {
popupVisible: false,
emojiShow:false,
inputBottom: 0,
inputheight:0,
content:''
}
},
beforeCreate() {
// #ifdef APP-PLUS
const domModule = weex.requireModule('dom')
domModule.addRule('fontFace', {
fontFamily: "nvueIcon",
'src': "url('../../../static/fonts/iconfont.ttf')"
});
// #endif
},
props:['emojiData'],
methods: {
selemoji(m) {
console.log(m);
this.content+=m;
},
show() {
this.popupVisible = true;
},
close() {
this.popupVisible = false;
},
/*评论*/
sendTextMsg() {
uni.hideKeyboard();
this.$emit('closeMsg', this.content);
this.content = '';
this.emojiShow=false;
this.popupVisible = false;
},
inputFocus(e) {
this.inputBottom= e.detail.height;
this.emojiShow=false;
console.log(e)
},
inputBlur() {
this.inputBottom = 0;
},
}
}
</script>
<style lang="scss" scoped>
.pop__ui_mask {
background-color: #000;
opacity: .1;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 1000;
}
.pop__ui_child {
background-color: #fbfbfb;
border-top-left-radius: 12px;
border-top-right-radius: 12px;
font-size: 14px;
overflow: hidden;
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 1001;
}
.pop__ui_head {
border-style: solid;
border-color: #ebebeb;
border-bottom-width: 1upx;
font-size: 28upx;
font-weight: 700;
padding: 30upx;
text-align: center;
}
.iconfont {
font-family: nvueIcon;
}
.wrap_commentPanel {
flex-direction: column;
height: 11upx;
}
.uni_borT {
border-color: #dbdbdb;
border-style: solid;
border-top-width: 1upx;
}
.wrap__editorPanel {
flex-direction: row;
align-items: flex-end;
background-color: #fff;
padding: 20upx 30upx;
}
.wrap_editor {
flex: 1;
overflow: hidden;
}
.editor {
font-size: 14px;
line-height: 1.2;
}
.wrap_cmtFoot {
position: fixed;
left: 0;
right: 0;
z-index: 201911;
}
.uni__editorPanel .uni_editor {box-sizing: border-box; overflow: hidden;}
.uni_editor .editor {caret-color: #41a863; font-size: 28rpx; max-height: 200rpx; max-width: 100%; line-height: 1.2;}
.uni__editorPanel .uni_editor_btn {align-self: flex-end; justify-content: center; padding: 0 8rpx; height: 56rpx;}
.uni__editorPanel .uni_editor_btn .iconfont {color: #999; font-size: 50rpx;}
.uni__editorPanel .btn_submit {border-radius: 40rpx; font-size: 28rpx; margin-left: 10rpx; padding: 0 24rpx; line-height: 56rpx;}
.uni__editorPanel .btn_submit .iconfont {color: #999; font-size: 48rpx;}
.bc-white{
background-color: #FFFFFF;
}
.slider {
width: 750rpx;
height: 256rpx;
}
.slider-emoji {
width: 750rpx;
direction:ltr;
flex-direction: row;
flex-wrap: wrap;
justify-content:center;
align-content: flex-start;
align-items: stretch;
}
.slider-emoji-icon {
width: 105rpx;
text-align: center;
padding: 21rpx 0;
}
.lastbox{
justify-content: flex-start;
}
</style>