| New file |
| | |
| | | <template> |
| | | <view class="modifybox" :animation="animationData"> |
| | | <view class="mask" :animation="animationData2"></view> |
| | | <view class="content"> |
| | | <view class="m_title">{{ type }}</view> |
| | | <view class="close" @tap="show"><image src="../../../static/images/group/close.png" mode="widthFix"></image></view> |
| | | <view class="name" v-if="type == '群名'"> |
| | | <view class="namebox"><input type="text" v-model="name" /></view> |
| | | <view class="notice-btn"><view class="modify-btn" @tap="modifyInfo('name')">修改</view></view> |
| | | </view> |
| | | <view class="notice" v-if="type == '公告'"> |
| | | <view class="notice-content" v-show="!isModify">{{ notice }}</view> |
| | | <view class="notice-text" v-show="isModify"><textarea auto-height="true" v-model="notice" placeholder="" /></view> |
| | | <view class="notice-btn"> |
| | | <view class="modify-btn" @tap="modifyNotice" v-show="!isModify && isManager">修改</view> |
| | | <view class="confirm-btn" @tap="modifyInfo('notice')" v-show="isModify">确定</view> |
| | | </view> |
| | | </view> |
| | | <view class="nickName" v-if="type == '昵称'"> |
| | | <view class="nickbox"><input type="text" v-model="nickName" /></view> |
| | | <view class="notice-btn"><view class="modify-btn" @tap="modifyInfo('nickName')">修改</view></view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | isModify: false, |
| | | animationData: {}, |
| | | animationData2: {}, |
| | | isShow: false, |
| | | name: '', |
| | | notice: '', |
| | | nickName: '' |
| | | }; |
| | | }, |
| | | props: ['isManager', 'groupInfo', 'n_Name', 'type'], |
| | | created() { |
| | | setTimeout(() => { |
| | | this.name = this.groupInfo.name; |
| | | this.notice = this.groupInfo.notice; |
| | | this.nickName = this.n_Name; |
| | | }, 100); |
| | | }, |
| | | methods: { |
| | | show() { |
| | | this.isShow = !this.isShow; |
| | | var animation = uni.createAnimation({ |
| | | duration: 600, |
| | | timingFunction: 'ease' |
| | | }); |
| | | var animation2 = uni.createAnimation({ |
| | | duration: 400, |
| | | timingFunction: 'ease' |
| | | }); |
| | | if (this.isShow) { |
| | | animation.bottom(0).step(); |
| | | this.animationData = animation.export(); |
| | | setTimeout( |
| | | function() { |
| | | animation2.opacity(1).step(); |
| | | this.animationData2 = animation2.export(); |
| | | }.bind(this), |
| | | 600 |
| | | ); |
| | | } else { |
| | | animation2.opacity(0).step(); |
| | | this.animationData2 = animation2.export(); |
| | | setTimeout( |
| | | function() { |
| | | animation.bottom('-100vh').step(); |
| | | this.animationData = animation.export(); |
| | | setTimeout(() => { |
| | | this.isModify = false; |
| | | }, 500); |
| | | }.bind(this), |
| | | 400 |
| | | ); |
| | | } |
| | | }, |
| | | modifyNotice() { |
| | | this.isModify = !this.isModify; |
| | | }, |
| | | modifyInfo(type) { |
| | | let key = null; |
| | | let value = null; |
| | | if (type == 'name') { |
| | | key = 'name'; |
| | | value = this.name; |
| | | } else if (type == 'notice') { |
| | | key = 'notice'; |
| | | value = this.notice; |
| | | this.isModify = !this.isModify; |
| | | } else if(type =="nickName"){ |
| | | key = 'nickName'; |
| | | value = this.nickName; |
| | | } |
| | | this.$emit('modify', { [key]: value }); |
| | | this.show() |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .modifybox { |
| | | position: fixed; |
| | | bottom: -100vh; |
| | | left: 0rpx; |
| | | right: 0rpx; |
| | | height: 100vh; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | z-index: 1000; |
| | | .mask { |
| | | position: absolute; |
| | | bottom: 0rpx; |
| | | left: 0rpx; |
| | | right: 0rpx; |
| | | height: 100vh; |
| | | background: rgba(0, 0, 0, 0.5); |
| | | opacity: 0; |
| | | } |
| | | .content { |
| | | background: white; |
| | | width: 80vw; |
| | | height: auto; |
| | | padding-bottom: 20rpx; |
| | | box-sizing: border-box; |
| | | position: relative; |
| | | display: block; |
| | | .m_title { |
| | | height: 80rpx; |
| | | line-height: 80rpx; |
| | | width: 100%; |
| | | border-bottom: 2rpx solid #ccc; |
| | | text-align: center; |
| | | // background: red; |
| | | } |
| | | .close { |
| | | position: absolute; |
| | | top: 0rpx; |
| | | right: 0; |
| | | width: 80rpx; |
| | | height: 80rpx; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | image { |
| | | height: 50rpx; |
| | | width: 50rpx; |
| | | } |
| | | } |
| | | } |
| | | .name { |
| | | margin: 30rpx; |
| | | margin-top: 40rpx; |
| | | width: calc(100% - 60rpx); |
| | | font-size: 32rpx; |
| | | .namebox { |
| | | border: 2rpx solid #ccc; |
| | | input { |
| | | padding: 10rpx 5%; |
| | | text-align: center; |
| | | } |
| | | } |
| | | } |
| | | .notice-btn { |
| | | margin-top: 30rpx; |
| | | display: flex; |
| | | justify-content: center; |
| | | .modify-btn { |
| | | padding: 10rpx; |
| | | background: red; |
| | | color: white; |
| | | width: 100rpx; |
| | | text-align: center; |
| | | } |
| | | .confirm-btn { |
| | | padding: 10rpx; |
| | | background: #5a9bec; |
| | | color: white; |
| | | width: 100rpx; |
| | | text-align: center; |
| | | } |
| | | } |
| | | .notice { |
| | | margin: 0rpx 30rpx; |
| | | width: calc(100% - 60rpx); |
| | | font-size: 32rpx; |
| | | .notice-content { |
| | | margin-top: 40rpx; |
| | | } |
| | | .notice-text { |
| | | margin-top: 40rpx; |
| | | // height: 80rpx; |
| | | border: 2rpx solid #ccc; |
| | | textarea { |
| | | max-height: 300rpx; |
| | | width: 90%; |
| | | padding: 10rpx 5%; |
| | | } |
| | | } |
| | | } |
| | | .nickName { |
| | | margin: 30rpx; |
| | | margin-top: 40rpx; |
| | | width: calc(100% - 60rpx); |
| | | font-size: 32rpx; |
| | | .nickbox { |
| | | border: 2rpx solid #ccc; |
| | | input { |
| | | padding: 10rpx 5%; |
| | | text-align: center; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |