<script>
import baseDrawer from '@/components/tui-drawer/tui-drawer.vue';
import emptyPage from '@/components/emptyPage.vue';
import tuiModal from "@/components/tui-modal/index.vue"
import { mapGetters } from "vuex";
import { 
	communityReplySaveApi, 
	communityReplyListApi, 
	communityReplyLikeApi,
	communityReplyDeleteApi,
} from "@/api/community.js";
export default {
    props: {
        visible: {
            type: Boolean,
            default: false
        },
		community_id:{
			type: Number | String,
			default: ''
		},
		comment_num:{
			type: Number | String,
			default: 0
		},
        ensureInfo: {
            type: Object,
            default: () => {}
        },
		showFooter:{
			type: Boolean,
			default: false
		},
		addReply:{
			type: Number,
			default: 1
		}
    },
	data(){
		return {
			comment:'',
			comment_reply_id:'',
			replyIndex:'',
			replyList:[],
			placeholder:'快来说点儿什么吧...',
			showModal:false,
			reduceNum:0,
			focus:false,
		}
	},
	watch:{
		community_id(val){
			if(val){
				this.getReply()
			}
		}
	},
    components: {
        baseDrawer,
		emptyPage,
		tuiModal
    },
	computed:{
		...mapGetters(['isLogin','uid']),
	},
    methods: {
        closeDrawer() {
            this.$emit('closeDrawer');
        },
		getReply(){
			let params = {
				community_id:this.community_id,
				reply_id:'',
			};
			communityReplyListApi(params).then(res=>{
				if(res.data.list.length){
					res.data.list.map(item=>{
						this.$set(item,'show',false);
					})
					this.replyList = res.data.list;
				}else{
					this.replyList = [];
				}
			}).catch(err => {
				return this.$util.Tips({
					title: err
				});
			});
		},
		sendText(){
			if(!this.isLogin) return this.$util.Tips({
				title: '请登录'
			});
			if(this.comment == '') return this.$util.Tips({
				title: '请输入评论内容'
			}); 
			let data = {
				community_id:this.community_id,
				comment_reply_id:this.comment_reply_id,
				content:this.comment
			};
			communityReplySaveApi(data).then(res=>{
				this.comment_reply_id = '';
				this.comment = '';
				this.placeholder = '快来说点儿什么吧...';
				this.$emit('onCommentAdd',{type:1,num:1});
				this.getReply();
				this.hide();
				return this.$util.Tips({
					title: res.msg
				}); 
			}).catch(err => {
				return this.$util.Tips({
					title: err
				});
			});
		},
		showReply(id,author){
			this.comment_reply_id = id;
			this.placeholder = `回复：${author}`;
		},
		showMore(item,index,type){
			this.replyIndex = index;
			if(type){
				let params = {
					community_id:this.community_id,
					reply_id:item.id,
				};
				communityReplyListApi(params).then(res=>{
					this.$set(this.replyList[index],'children',res.data.list);
					this.$set(item,'show',true);
					his.$util.Tips({
						title: res.msg
					});
				}).catch(err => {
					return this.$util.Tips({
						title: err
					});
				});
			}else{
				this.$set(item,'show',false);
			}
		},
		authTo(url){
			uni.navigateTo({
				url: url
			});
		},
		replyLike(item){
			if(!this.isLogin) return this.$util.Tips({
				title: '请登录'
			});
			let id = item.id;
			let status = item.isLike == 1 ? 0 : 1;
			let that = this;
			communityReplyLikeApi(id,{status}).then(res=>{
				item.isLike = status;
				if(status == 1){
					item.like_num++
				}else{
					item.like_num--
				}
				return that.$util.Tips({
					title: res.msg
				});
			}).catch(err=>{
				return that.$util.Tips({
					title: err
				});
			})
		},
		delReply(id, num){
			this.comment_reply_id = id;
			this.reduceNum = num;
			this.showModal = true;
		},
		handleClick(e){
			let index = e.index;
			let that = this;
			if(index == 1){
				communityReplyDeleteApi(this.comment_reply_id).then(res=>{
					this.showModal = false;
					this.replyList = [];
					this.comment_reply_id = '';
					this.$emit('commentAdd',{type:2,num:1 + this.reduceNum});
					this.getReply();
				}).catch(err => {
					this.showModal = false;
					return this.$util.Tips({
						title: err
					});
				});
			}else{
				this.showModal = false;
			}
		},
    }
};
</script>
<template> 
    <view>
        <base-drawer 
			mode="bottom" 
			:visible="visible" 
			zIndex="3000"
			background-color="transparent" 
			mask maskClosable 
			@close="closeDrawer">
            <view class="w-full bg--w111-fff relative rd-t-40rpx pt-32">
                <view class="text-center fs-32 text--w111-333 fw-500 mb-30">评论 {{comment_num}}</view>
				<view class="close-btn flex-center" @tap="closeDrawer()">
					<text class="iconfont icon-ic_close text--w111-666 fs-24"></text>
				</view>
                <scroll-view scroll-y="true" class="scroll-content" v-show="!focus">
                    <view class="px-30">
                    	<view class="reply-list" v-if="replyList.length">
                    		<view class="flex mt-22" v-for="(item,index) in replyList" :key="index"
								v-show="(item.uid == uid && item.is_show == 0) || item.is_show == 1">
                    			<image class="w-74 h-74 rd-50-p111-" :src="item.author_image"
									@tap="authTo('/pages/discover/discoverUser/index?id=' + item.uid)"></image>
                    			<view class="flex-1 ml-20">
                    				<view class="w-full">
                    					<view class="fs-26 text--w111-999">{{item.author}}</view>
                    					<view class="fs-28 lh-42rpx text--w111-333" @tap="showReply(item.id,item.author,item.is_show)">{{item.content}}
											<text class="pl-8 text--w111-999" v-show="!item.is_show && item.uid == uid">(该评论已被屏蔽)</text> 
										</view>
                    					<view class="lh-36rpx flex-between-center pt-4">
                    						<view class="flex-y-center fs-24">
                    							<text class="text--w111-ccc">{{item.time_text}}</text>
                    							<text class="pl-24 text--w111-999" @tap="delReply(item.id,item.comment_num)" 
                    							v-show="isLogin && uid == item.uid">删除</text>
                    						</view>
                    						<view class="flex-y-center text--w111-999" @tap="replyLike(item)">
                    							<text class="iconfont fs-30" :class="item.isLike ? 'icon-icon_Like_2' : 'icon-ic_Like'"></text>
                    							<text class="fs-24 lh-36rpx pl-10">{{item.like_num}}</text>
                    						</view>
                    					</view>
                    				</view>
                    				<view class="mt-12 w-full" v-if="item.show">
                    					<view class="child-reply flex justify-between" v-for="(reply,i) in item.children" :key="i"
											v-show="(reply.uid == uid && reply.is_show == 0) || reply.is_show == 1">
                    						<view class="flex w-full" >
                    							<image :src="reply.author_image" class="w-36 h-36 rd-50-p111-"
													@tap="authTo('/pages/discover/discoverUser/index?id=' + reply.uid)"></image>
                    							<view class="ml-20 flex-1">
                    								<view class="text--w111-999 fs-26 lh-40rpx">{{reply.author}}</view>
                    								<view class="w-full fs-26 lh-42 flex-y-center flex-wrap text--w111-333" @tap="showReply(reply.id, reply.author)">
                    									<view v-if="reply.comment_author">
                    										回复<text class="comment-author"
                    										@tap="authTo('/pages/discover/discoverUser/index?id=' + reply.comment_reply_uid)">@{{reply.comment_author}}</text>
                    									</view>
                    									{{reply.content}}<text class="pl-8 text--w111-999" v-show="!item.is_show && item.uid == uid">(该评论已被屏蔽)</text> 
                    								</view>
                    								<view class="flex-between-center pt-4">
                    									<view class="fs-24 text--w111-ccc lh-36rpx flex-y-center">
                    										<text>{{reply.time_text}}</text>
                    										<text class="pl-24 text--w111-999" @tap="delReply(reply.id,reply.comment_num)" 
                    											v-show="isLogin && uid == reply.uid">删除</text>
                    									</view>
                    									<view class="flex-y-center text--w111-999" @tap.stop="replyLike(reply)">
                    										<text class="iconfont fs-30" :class="reply.isLike ? 'icon-icon_Like_2' : 'icon-ic_Like'"></text>
                    										<text class="fs-24 lh-36rpx pl-10">{{reply.like_num}}</text>
                    									</view>
                    								</view>
                    							</view>
                    						</view>
                    					</view>
                    				</view>
                    				<view class="mt-14 flex-y-center text--w111-666 fs-26" 
                    					v-if="item.comment_num > 0 && !item.show" @tap="showMore(item,index,1)">
                    					<text class="more-line"></text>
                    					<text class="pl-16">展开{{item.comment_num}}条回复</text>
                    					<text class="iconfont icon-ic_downarrow fs-28"></text>
                    				</view>
                    				<view class="mt-14 flex-y-center text--w111-666 fs-26"
                    					v-if="item.comment_num > 0 && item.show" @tap="showMore(item,index,0)">
                    					<text class="more-line"></text>
                    					<text class="pl-16">收起回复</text>
                    					<text class="iconfont icon-ic_uparrow fs-28"></text>
                    				</view>
                    			</view>
                    		</view>
                    	</view>
						<view v-else>
							<emptyPage title="暂无评论，快去抢沙发吧~" src="/statics/images/noActivity.gif"></emptyPage>
						</view>
                    </view>
                </scroll-view>
				<view class="h-100" v-if="addReply"></view>
                <view class="fixed-lb w-full pb-safe" :class="{'hide-bar': showFooter}" v-if="addReply">
                   <view class="h-100 px-30 flex-between-center bg--w111-fff">
					   <input type="text" v-model="comment" :placeholder="placeholder" 
					   :focus="focus"
					   placeholder-class="text--w111-999"
						class="flex-1 h-64 rd-32rpx bg--w111-f5f5f5 pl-30 fs-26 text--w111-333" />
					   <view class="w-112 h-64 rd-32rpx bg-gradient flex-center fs-24 text--w111-fff ml-20" @tap="sendText">发送</view>
				   </view>
                </view>
            </view>
        </base-drawer>
		<!-- 确认框 -->
		<tuiModal
			:show="showModal"
			title="确认删除该评论"
			:maskClosable="false"
			@click="handleClick"></tuiModal>
    </view>
</template>
<style>
.scroll-content{
	height: 900rpx;
}
.hide-bar{
	bottom: 100rpx;
}
.mb-54{
	margin-bottom: 54rpx;
}
.child-reply ~ .child-reply{
	margin-top: 22rpx;
}
.more-line{
	width: 40rpx;
	height: 2rpx;
	background: #D8D8D8;
}
.comment-author{
	color: #4A8AC9;
	padding: 0 4rpx;
}
.icon-icon_Like_2{
	color: #e93323;
}
.close-btn{
	position: absolute;
	right: 28rpx;
	top: 28rpx;
	width: 36rpx;
	height: 36rpx;
	border-radius: 50%;
	background-color: #eee;
	
}
</style>
