91 lines
1.7 KiB
Vue
91 lines
1.7 KiB
Vue
![]() |
<template>
|
|||
|
<view class="goods-comment">
|
|||
|
<cl-row type="flex" justify="space-between" :height="90">
|
|||
|
<cl-text :size="28" bold :value="`商品评论(${total})`"></cl-text>
|
|||
|
|
|||
|
<cl-text :size="24" color="info" @tap="toAll">
|
|||
|
全部
|
|||
|
<text class="cl-icon-arrow-right"></text>
|
|||
|
</cl-text>
|
|||
|
</cl-row>
|
|||
|
|
|||
|
<view class="list">
|
|||
|
<view class="item" v-for="item in list" :key="item.id" @tap="toAll">
|
|||
|
<comment-item :item="item" demo />
|
|||
|
</view>
|
|||
|
|
|||
|
<cl-empty
|
|||
|
text="暂无评论"
|
|||
|
icon="message"
|
|||
|
:icon-size="200"
|
|||
|
:fixed="false"
|
|||
|
:padding="[30, 0, 130, 0]"
|
|||
|
v-if="isEmpty(list)"
|
|||
|
/>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script lang="ts" setup>
|
|||
|
import { onMounted, ref, type PropType } from "vue";
|
|||
|
import { useCool } from "/@/cool";
|
|||
|
import { isEmpty } from "lodash-es";
|
|||
|
import CommentItem from "./comment-item.vue";
|
|||
|
|
|||
|
const props = defineProps({
|
|||
|
info: Object as PropType<Eps.GoodsInfoEntity>,
|
|||
|
});
|
|||
|
|
|||
|
const { service, router } = useCool();
|
|||
|
|
|||
|
const list = ref<Eps.GoodsCommentEntity[]>([]);
|
|||
|
const total = ref(0);
|
|||
|
|
|||
|
function refresh() {
|
|||
|
service.goods.comment
|
|||
|
.page({
|
|||
|
goodsId: router.query.id,
|
|||
|
page: 1,
|
|||
|
size: 2,
|
|||
|
order: "createTime",
|
|||
|
sort: "desc",
|
|||
|
})
|
|||
|
.then((res) => {
|
|||
|
list.value = res.list;
|
|||
|
total.value = res.pagination.total || 0;
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
function toAll() {
|
|||
|
router.push({
|
|||
|
path: "/pages/goods/comment",
|
|||
|
query: {
|
|||
|
goodsId: router.query.id,
|
|||
|
},
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
onMounted(() => {
|
|||
|
refresh();
|
|||
|
});
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss" scoped>
|
|||
|
.goods-comment {
|
|||
|
position: relative;
|
|||
|
background-color: #fff;
|
|||
|
padding: 0 30rpx 24rpx 30rpx;
|
|||
|
margin-bottom: 24rpx;
|
|||
|
|
|||
|
.list {
|
|||
|
.item {
|
|||
|
margin-bottom: 24rpx;
|
|||
|
|
|||
|
&:last-child {
|
|||
|
margin-bottom: 0;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|