金诚优选前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

162 lines
4.2 KiB

  1. <template>
  2. <!--<import src="../../../component/rater/rater.wxml"></import>-->
  3. <view id="comments">
  4. <view class="content">
  5. <view class="no-list" v-if="!list[0].length && init">
  6. 暂无数据
  7. </view>
  8. <view v-for="(items, idx) in list" :key="idx">
  9. <view class="comment_list mx-1px-bottom" v-for="(item, index) in list[idx]" :key="index">
  10. <view class="comment_user">
  11. <view class="img-box">
  12. <image :src="item.user.avatar"></image>
  13. <view class="user_name">{{item.user.nick_name}}</view>
  14. </view>
  15. <view class="rater">
  16. <!--<template is="rater" data="{{ ...$vlc.rater[item.id] }}"/>-->
  17. <uni-rate size="18" disabled="true" active-color="red" :value="item.point"></uni-rate>
  18. </view>
  19. </view>
  20. <view class="comment_time">
  21. <view class="time">
  22. {{item.updated_at}}
  23. </view>
  24. <view class="model">
  25. {{item.item_meta.specs_text!=undefined?item.item_meta.specs_text:''}}
  26. </view>
  27. </view>
  28. <view class="comment_content">
  29. {{item.contents}}
  30. </view>
  31. <view class="comment-img">
  32. <image :src="item" mode="widthFix" alt v-for="(item, index) in item.pic_list" :key="index"></image>
  33. </view>
  34. </view>
  35. </view>
  36. </view>
  37. </view>
  38. </template>
  39. <script>
  40. import {pageLogin, getUrl,config,is} from '@/common/js/utils.js';
  41. import uniRate from "@/components/score/uni-rate/uni-rate.vue"
  42. export default {
  43. data() {
  44. return {
  45. hasMore: true,
  46. init: false,
  47. list: [],
  48. page: '',
  49. id: ''
  50. };
  51. },
  52. components: {
  53. uniRate
  54. },
  55. // 加载更多
  56. onReachBottom() {
  57. if (this.hasMore) {
  58. var page = this.page + 1;
  59. this.queryCommodityComments(this.id, page);
  60. } else {
  61. wx.showToast({
  62. image: '../../../static/error.png',
  63. title: '再拉也没有啦'
  64. });
  65. }
  66. },
  67. onLoad(e) {
  68. wx.showLoading({
  69. title: "加载中",
  70. mask: true
  71. });
  72. this.queryCommodityComments(e.id, 1);
  73. this.setData({
  74. id: e.id
  75. });
  76. },
  77. components: {},
  78. props: {},
  79. methods: {
  80. // 请求评论列表
  81. queryCommodityComments(id, page = 1) {
  82. this.$http.get({
  83. api: 'api/store/detail/' + id + '/comments',
  84. data: {
  85. page: page
  86. }
  87. }).then(res => {
  88. if (res.statusCode == 200) {
  89. res = res.data;
  90. if (res.status) {
  91. var pages = res.meta.pagination;
  92. var current_page = pages.current_page;
  93. var total_pages = pages.total_pages;
  94. this.setData({
  95. // [`list[${page - 1}]`]: res.data,
  96. init: true,
  97. page: current_page,
  98. hasMore: current_page < total_pages
  99. });
  100. this.list[[page-1]]=res.data;
  101. } else {
  102. wx.showModal({
  103. title: '',
  104. content: '请求失败',
  105. showCancel: false
  106. });
  107. }
  108. } else {
  109. wx.showModal({
  110. title: '',
  111. content: '请求失败',
  112. showCancel: false
  113. });
  114. }
  115. wx.hideLoading();
  116. this.show=false;
  117. }, err => {
  118. wx.hideLoading();
  119. // this.setData({
  120. // show: false
  121. // });
  122. this.show=false;
  123. });
  124. },
  125. setData: function (obj) {
  126. let that = this;
  127. let keys = [];
  128. let val, data;
  129. Object.keys(obj).forEach(function (key) {
  130. keys = key.split('.');
  131. val = obj[key];
  132. data = that.$data;
  133. keys.forEach(function (key2, index) {
  134. if (index + 1 == keys.length) {
  135. that.$set(data, key2, val);
  136. } else {
  137. if (!data[key2]) {
  138. that.$set(data, key2, {});
  139. }
  140. }
  141. data = data[key2];
  142. });
  143. });
  144. }
  145. },
  146. computed: {},
  147. watch: {}
  148. };
  149. </script>
  150. <style rel="stylesheet/less" lang="less">
  151. @import "comment";
  152. </style>