list.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <template>
  2. <view class="video-comment-list-page">
  3. <van-sticky v-if="!id">
  4. <view @click="goSearch">
  5. <van-search :value="key_word" shape="round" placeholder="评论内容" disabled />
  6. </view>
  7. <view class="tabs-box">
  8. <text :class="source===3?'active':''" @click="handleTypeChange(3)">线上路演</text>
  9. <text :class="source===2?'active':''" @click="handleTypeChange(2)">视频社区</text>
  10. </view>
  11. </van-sticky>
  12. <view class="list-wrap">
  13. <view class="question-item" v-for="(item,index) in list" :key="item.CommunityQuestionCommentId">
  14. <view class="cont">
  15. <veiw class="item-title">{{item.Content}}</veiw>
  16. <view class="row">视频分类:{{source===3?'线上路演':'视频社区'}}</view>
  17. <view class="row">视频标题:{{item.QuestionContent}}</view>
  18. <view class="row">所属{{source===3?'品种':'标签'}}{{item.TagName}}</view>
  19. <view class="row">评论人:{{item.UserName}}</view>
  20. <view class="row">客户信息:{{item.CompanyName}} <text v-if="item.CompanyProductStatus">({{item.CompanyProductStatus}})</text> </view>
  21. <view class="row">评论时间:{{item.CreateTime | formatTime}}</view>
  22. </view>
  23. <view class="action-bot flex">
  24. <text class="red-color" @click="delHandle(item,index)">删除</text>
  25. </view>
  26. </view>
  27. </view>
  28. <van-empty description="暂无数据" :image="require('@/static/empty.png')" v-if="finished&&list.length===0"/>
  29. </view>
  30. </template>
  31. <script>
  32. import {apiCommentList,apiDelComment} from '@/api/question/index'
  33. export default {
  34. data() {
  35. return {
  36. id:0,
  37. key_word:'',
  38. page:1,
  39. pageSize:20,
  40. list:[],
  41. finished:false,
  42. source:3
  43. }
  44. },
  45. onLoad(options){
  46. this.id=options.id||0
  47. this.source=Number(options.source)||3
  48. this.getList()
  49. // 搜索返回
  50. uni.$on('videoCommentUpdate',({key_word})=>{
  51. this.key_word = key_word;
  52. this.page = 1;
  53. this.list=[]
  54. this.finished=false
  55. this.getList()
  56. })
  57. },
  58. onUnload() {
  59. uni.$off('videoCommentUpdate')
  60. },
  61. onPullDownRefresh() {
  62. this.page=1
  63. this.finished=false
  64. this.list=[]
  65. this.key_word = ''
  66. this.getList()
  67. setTimeout(()=>{
  68. uni.stopPullDownRefresh()
  69. },1500)
  70. },
  71. onReachBottom() {
  72. if(this.finished) return
  73. this.page++
  74. this.getList()
  75. },
  76. methods: {
  77. async getList(){
  78. const res=await apiCommentList({
  79. Keyword:this.key_word,
  80. CurrentIndex:this.page,
  81. PageSize:this.pageSize,
  82. Source:this.source,
  83. HotStatus:-1,
  84. CommunityQuestionCommentId:Number(this.id)
  85. })
  86. if(res.code===200){
  87. this.finished=res.data.Paging.IsEnd
  88. this.list=[...this.list,...res.data.List]
  89. }
  90. },
  91. /* 删除 */
  92. delHandle(item,index) {
  93. wx.showModal({
  94. title: "",
  95. content: `评论删除后不可恢复,确认删除吗`,
  96. confirmColor: "#EE3636",
  97. cancelColor: '#333',
  98. success: async (res) => {
  99. if(res.cancel) return
  100. const { CommunityQuestionCommentId } = item;
  101. const { code } = await apiDelComment({ CommunityQuestionCommentId: CommunityQuestionCommentId });
  102. if( code !== 200 ) return
  103. wx.showToast({title: '删除成功'})
  104. this.list.splice(index,1)
  105. }
  106. })
  107. },
  108. /* 搜索 */
  109. goSearch() {
  110. uni.navigateTo({
  111. url: `/pages-approve/search/index?type=videoComment`,
  112. })
  113. },
  114. handleTypeChange(e){
  115. this.source=e
  116. // this.key_word = '';
  117. this.page = 1;
  118. this.list=[]
  119. this.finished=false
  120. this.getList()
  121. }
  122. },
  123. }
  124. </script>
  125. <style lang="scss" scoped>
  126. .red-color {
  127. color: #D63535;
  128. }
  129. .list-wrap{
  130. padding: 40rpx 20rpx;
  131. }
  132. .flex {
  133. display: flex;
  134. align-items: center;
  135. }
  136. .question-item {
  137. background: #fff;
  138. padding: 20rpx 0 0;
  139. border-radius: 8rpx;
  140. font-size: 28rpx;
  141. margin-bottom: 20rpx;
  142. color: #666;
  143. .cont {
  144. padding: 0 20rpx;
  145. }
  146. .item-title {
  147. color: #333;
  148. font-size: 32rpx;
  149. }
  150. .row {
  151. margin: 15rpx 0;
  152. }
  153. .item-bottom {
  154. justify-content: space-between;
  155. .select-wrapper {
  156. width: 250rpx;
  157. border: 1px solid #F1F2F6;
  158. padding: 0 40rpx 0 20rpx;
  159. position: relative;
  160. .ipt {
  161. height: 80rpx;
  162. line-height: 80rpx;
  163. }
  164. }
  165. }
  166. .action-bot {
  167. border-top: 1px solid #EAEAEA;
  168. margin-top: 30rpx;
  169. text {
  170. padding: 24rpx 0;
  171. flex: 1;
  172. text-align: center;
  173. border-right: 1px solid #EAEAEA;
  174. &:last-child { border: none; }
  175. }
  176. }
  177. }
  178. .tabs-box{
  179. background-color: #fff;
  180. padding: 10px 12px 0 12px;
  181. text{
  182. display: inline-block;
  183. margin-right: 60rpx;
  184. padding-bottom: 13rpx;
  185. &.active{
  186. border-bottom: 2px solid #3385FF;
  187. }
  188. }
  189. }
  190. </style>