| | |
| | | </view> |
| | | <view class="xian"></view> |
| | | <view class="pl"> |
| | | <view class="pl-title">评论 {{info.commentCount || 0}}</view> |
| | | <view class="pl-title">评论 {{total}}</view> |
| | | <view class="pl-wu" v-if="commentList.length === 0"> |
| | | <image src="/static/images/default_nocomment@2x.png" mode="widthFix"></image> |
| | | </view> |
| | |
| | | {{item.content}} |
| | | </view> |
| | | <view class="pl-item-info-list" v-if="item.multifileList && item.multifileList.length > 0"> |
| | | <view class="pl-item-info-list-image" v-for="(child, i) in item.multifileList" :key="i" @click="yulan(child.fileFullUrl, item.multifileList)"> |
| | | <view class="pl-item-info-list-image" v-for="(child, i) in item.multifileList" :key="i" @click.stop="yulan(child.fileFullUrl, item.multifileList)"> |
| | | <image :src="child.fileFullUrl" mode="widthFix"></image> |
| | | </view> |
| | | <view style="width: 132rpx; height: 0;"></view> |
| | |
| | | {{child.content}} |
| | | </view> |
| | | <view class="pl-item-info-list" v-if="child.multifileList && child.multifileList.length > 0"> |
| | | <view class="pl-item-info-list-image" v-for="(child1, i) in child.multifileList" :key="i"> |
| | | <view class="pl-item-info-list-image" v-for="(child1, i) in child.multifileList" :key="i" @click.stop="yulan(child1.fileFullUrl, child.multifileList)"> |
| | | <image :src="child1.fileFullUrl" mode="widthFix"></image> |
| | | </view> |
| | | <view style="width: 132rpx; height: 0;"></view> |
| | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="pl-more" v-if="item.childern.length > 0">展开2条回复</view> |
| | | <view class="pl-more" v-if="item.childern.length < item.replyCount" @click.stop="more(index)">展开{{item.replyCount - item.childern.length}}条回复</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | </view> |
| | | </view> |
| | | </u-popup> |
| | | <Login ref="login" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { mapState } from 'vuex' |
| | | import { dateConversion } from '@/utils/utils.js' |
| | | import Login from '@/components/login/login.vue' |
| | | export default { |
| | | components: { Login }, |
| | | computed: { |
| | | ...mapState(['userInfo', 'token']) |
| | | }, |
| | |
| | | info: null, |
| | | content: '', |
| | | commentList: [], |
| | | total: 0, |
| | | page: 1, |
| | | next: true, |
| | | value: '', |
| | |
| | | methods: { |
| | | // 点赞 |
| | | dianzanpl(item) { |
| | | if (!this.userInfo) { |
| | | this.$refs.login.open() |
| | | return; |
| | | } |
| | | if (!item.zanStatus || item.zanStatus == 0) { |
| | | this.$u.api.zanCreate({ |
| | | objId: item.id, |
| | |
| | | this.multifileList = [] |
| | | this.show1 = false |
| | | }, |
| | | // 展开评论 |
| | | more(index) { |
| | | this.$u.api.findActivityReplyCommentDTOPage({ |
| | | capacity: 10, |
| | | page: this.commentList[index].page, |
| | | model: { |
| | | type: 1, |
| | | commentId: this.commentList[index].id |
| | | } |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.commentList[index].page++ |
| | | this.commentList[index].childern = this.uniqueById([ |
| | | ...this.commentList[index].childern, |
| | | ...res.data.records |
| | | ]) |
| | | } |
| | | }) |
| | | }, |
| | | // 数组去重 |
| | | uniqueById(arr) { |
| | | const map = new Map(); |
| | | return arr.filter(item => { |
| | | if (!map.has(item.id)) { |
| | | map.set(item.id, true); |
| | | return true; |
| | | } |
| | | return false; |
| | | }); |
| | | }, |
| | | // 评论 |
| | | sendComment() { |
| | | if (!this.userInfo) { |
| | | this.$refs.login.open() |
| | | return; |
| | | } |
| | | if (!this.value && this.multifileList.length === 0) return uni.showToast({ |
| | | title: '评论内容不能为空', |
| | | icon: 'none' |
| | |
| | | activityId: this.info.id, |
| | | content: this.value, |
| | | multifileList: this.multifileList, |
| | | commentId: this.commentId, |
| | | // commentId: this.commentId, |
| | | replyId: this.item ? this.item.id : null |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | |
| | | if (this.commentId) { |
| | | this.commentList.forEach(item => { |
| | | if (item.id === this.commentId) { |
| | | item.commentList.childern.unshift(res.data) |
| | | item.childern.unshift(res.data) |
| | | } |
| | | }) |
| | | } else { |
| | |
| | | } |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.total = res.data.total |
| | | res.data.records.forEach(item => { |
| | | item.createDate = dateConversion(item.createDate) |
| | | item.page = 1 |
| | | item.childern = [] |
| | | if (item.activityReplyCommentDTO) { |
| | | item.activityReplyCommentDTO.createDate = dateConversion(item.activityReplyCommentDTO.createDate) |
| | |
| | | }) |
| | | }, |
| | | shoucang(type) { |
| | | if (!this.userInfo) { |
| | | this.$refs.login.open() |
| | | return; |
| | | } |
| | | if (type === 1) { |
| | | this.$u.api.cancelbatch({ |
| | | ids: this.info.id, |
| | |
| | | } |
| | | }, |
| | | dianzan(type) { |
| | | if (!this.userInfo) { |
| | | this.$refs.login.open() |
| | | return; |
| | | } |
| | | if (type === 1) { |
| | | this.$u.api.zanCancel({ |
| | | objId: this.info.id, |