hb-comment.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518
  1. <template>
  2. <view class="hb-comment">
  3. <!-- 评论主体-start -->
  4. <view class="comment-list" v-if="commentData.comment.length != 0">
  5. <!-- 评论主体-顶部数量及发表评论按钮-start -->
  6. <view class="comment-num">
  7. <view>共 {{commentData.commentSize}} 条评论</view>
  8. <view class="add-btn">
  9. <button type="primary" size="mini" @click="commentInput">发表评论</button>
  10. </view>
  11. </view>
  12. <!-- 评论主体-顶部数量及发表评论按钮-end -->
  13. <!-- 评论列表-start -->
  14. <view class="comment-box" v-for="(item, index) in commentData.comment" :key="index">
  15. <view class="comment-box-item">
  16. <view>
  17. <image :src="item.avatarUrl || emptyAvatar" mode="aspectFill" class="avatar"></image>
  18. </view>
  19. <view class="comment-main">
  20. <!-- 父评论体-start -->
  21. <view class="comment-main-top">
  22. <view class="nick-name-box">
  23. <view class="nick-name">{{item.nickName}}</view>
  24. </view>
  25. <!-- <view class="zan-box" @click="like(item.id)">
  26. <span
  27. :class="item.hasLike ? 'isLike' : 'notLike'">{{item.likeNum == 0 ? '抢首赞' : item.likeNum}}</span>
  28. <img style="width: 14px; height: 14px;" v-if="!item.hasLike"
  29. src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAApVJREFUWEfFlz9oFEEUxr93SWEhFkIaBUljo4WgATEaiI0GwVLBQg2EzLd3hSBqLI2lRgWLY+ftSSQgggoWNv5pImLUwjQBg1goqCCIIBqwueSeTLg7Ln9Mcmdub7vdnZnvN9+8fe+toMWXtFgfDQGMjo52zM7OHgMwIyLTg4ODk41upG4A7/0OEbkPYGdFVEQuOOeuNQJRN4CqBvGw+3dm9kZEBsrCPSRf1gvRCIAFETPrjqLodZIkY2Z2SkQmnHMHUgMgOQ8fx3FvJpMZB/CDZEfqACEgi8XidwA/SW5uKkCN2AzJTYscmCTZ1VQA7/2AiNwSkefOuYNBLEmSnJnlATwgebypAKr6CMBRANdJng9i3vu8iORE5Mrc3NyTlQDM7HMul/tYO2bNX0GhUDhRKpXumtlvAPuiKJouOzBuZr117HyBU6sCqOpeAH0AhssiwyQvVwTjOO5va2s7vRaAGtCrJC+GOVUAVb1UTjDVDLd4URHJOuf8WsSWG5MkSbeZTYR3lc+4CpAkyUpWht3fI/m+UfEwL5/Pb2xvb59ZFkBV5zNchazsSBBeYPn/ABQKhZ5SqfQCwBTJXYuPoOkAqnoGwE0Ad0ieTB3Ae39bRPoBDJEcSR1AVd8C2CMifc65p6kCmJkkSfIHwAYAW0h+SxVAVXcDmDSzL1EUbasEc20eaGoQVuoIgMckj6QOoKo3AJwFMEJyqBUAIegOAegnOdYKgK8AtmYyma7aLjqVGPDebxeRDwB+AeggWUzVAVV1ABTAK5L7l+0HVPUTgM7Q7VQGhPJZe99oHagpw4dJPvsXQPixONeoyErzRGTKzB7W9hFLjiA8iOO4M7iw3hDZbLbq6pIeY73F6l1v1Zas3gXrHf8XhhNvMGSmtPYAAAAASUVORK5CYII=" />
  30. <img style="width: 14px; height: 14px;" v-else
  31. src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAfVJREFUWEfFl79LHEEUx7/vclr4g51TLFQQW9FNDFhFBDvjtcF0gXSp5eYuWJlUAW9NIP9BIFUEOxFtTKF2FrezKFgkkEBS3h4SAtHbJ6vu5W5d1F3cm20WZt+b7+e9mTfzlqD5Ic36SATw+OPJQP2ft+ABJwQ+VFIcJA0kEYBpVfcAehKIMqHoFISVBCI2wOS76mi9g76HxTLwZiqybzcuRGwAc7WWB/NGWIhBu440ZlIHmFitLRPzm+tC9EtJY1gjAP9VMtelEQC2kuJR6gCm5X4BsBAWImDdluJZqgBjH/4MZr3TYzB6IoRWmHnzJgDK0g+1KL4128SqgnD9x432yn5NSfE88L0VYPx9rS/jYR6EJTCPJxQNu60oKV77gw2Ai/Ly1/ZKRElx8c20XL4n0ZZpgvkbAKbl7gCYDax0ALREmjJAo2SbM9A+AKLPqmC8aNkD4bVOMwPEKNlFUdYGkAE9rUhjSxvA2YOOoaPF7t+6AH4qKUauHURt3AObSoq8NgAGyo4UJW0ABH5py9wnbQAAppq76HYfRLXOXmPg4BWdasoA7yuZm47sB0zL9Vvt0TQvI/bqc06pfzsS4KHlWgwUUgKwmWjdKRhvI1q5/0P+T8dZ9jILTjH31X9PlKuNKzppXxDMFeV/a0eUVPSuftoBzgHKR/ohZwAugwAAAABJRU5ErkJggg==" />
  32. </view> -->
  33. </view>
  34. <view class="comment-main-content">
  35. {{item.content.length > 60 ? item.content.slice(0, 59) : item.content}}
  36. <span v-if="item.content.length > 60">
  37. {{item.hasShowMore ? item.content.slice(59) : '...'}}
  38. <span class="foot-btn" @click="showMore(item.id)">
  39. {{item.hasShowMore ? '收起' : '展开'}}
  40. </span>
  41. </span>
  42. </view>
  43. <view class="comment-main-foot">
  44. <uni-dateformat class="foot-time" :date="item.createTime"
  45. :threshold="[60000,3600000 * 24 * 365]">
  46. </uni-dateformat>
  47. <view class="foot-btn" @click="reply(item.nickName,item.nickName,item.id)">回复</view>
  48. <!-- <view class="foot-btn" v-if="item.owner" @click="confirmDelete(item.id)">删除</view> -->
  49. </view>
  50. <!-- 父评论体-end -->
  51. <!-- 子评论列表-start -->
  52. <view class="comment-sub-box">
  53. <view class="comment-sub-item" v-for="each in item.children" :key="index">
  54. <view>
  55. <image :src="each.avatarUrl || emptyAvatar" mode="aspectFill" class="avatar">
  56. </image>
  57. </view>
  58. <view class="comment-main">
  59. <view class="sub-comment-main-top">
  60. <view class="nick-name">{{each.nickName}}</view>
  61. <!-- <view class="zan-box" @click="like(each.id)">
  62. <span
  63. :class="each.hasLike ? 'isLike' : 'notLike'">{{each.likeNum == 0 ? '抢首赞' : each.likeNum}}</span>
  64. <img style="width: 14px; height: 14px;" v-if="!each.hasLike"
  65. src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAApVJREFUWEfFlz9oFEEUxr93SWEhFkIaBUljo4WgATEaiI0GwVLBQg2EzLd3hSBqLI2lRgWLY+ftSSQgggoWNv5pImLUwjQBg1goqCCIIBqwueSeTLg7Ln9Mcmdub7vdnZnvN9+8fe+toMWXtFgfDQGMjo52zM7OHgMwIyLTg4ODk41upG4A7/0OEbkPYGdFVEQuOOeuNQJRN4CqBvGw+3dm9kZEBsrCPSRf1gvRCIAFETPrjqLodZIkY2Z2SkQmnHMHUgMgOQ8fx3FvJpMZB/CDZEfqACEgi8XidwA/SW5uKkCN2AzJTYscmCTZ1VQA7/2AiNwSkefOuYNBLEmSnJnlATwgebypAKr6CMBRANdJng9i3vu8iORE5Mrc3NyTlQDM7HMul/tYO2bNX0GhUDhRKpXumtlvAPuiKJouOzBuZr117HyBU6sCqOpeAH0AhssiwyQvVwTjOO5va2s7vRaAGtCrJC+GOVUAVb1UTjDVDLd4URHJOuf8WsSWG5MkSbeZTYR3lc+4CpAkyUpWht3fI/m+UfEwL5/Pb2xvb59ZFkBV5zNchazsSBBeYPn/ABQKhZ5SqfQCwBTJXYuPoOkAqnoGwE0Ad0ieTB3Ae39bRPoBDJEcSR1AVd8C2CMifc65p6kCmJkkSfIHwAYAW0h+SxVAVXcDmDSzL1EUbasEc20eaGoQVuoIgMckj6QOoKo3AJwFMEJyqBUAIegOAegnOdYKgK8AtmYyma7aLjqVGPDebxeRDwB+AeggWUzVAVV1ABTAK5L7l+0HVPUTgM7Q7VQGhPJZe99oHagpw4dJPvsXQPixONeoyErzRGTKzB7W9hFLjiA8iOO4M7iw3hDZbLbq6pIeY73F6l1v1Zas3gXrHf8XhhNvMGSmtPYAAAAASUVORK5CYII=" />
  66. <img style="width: 14px; height: 14px;" v-else
  67. src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAfVJREFUWEfFl79LHEEUx7/vclr4g51TLFQQW9FNDFhFBDvjtcF0gXSp5eYuWJlUAW9NIP9BIFUEOxFtTKF2FrezKFgkkEBS3h4SAtHbJ6vu5W5d1F3cm20WZt+b7+e9mTfzlqD5Ic36SATw+OPJQP2ft+ABJwQ+VFIcJA0kEYBpVfcAehKIMqHoFISVBCI2wOS76mi9g76HxTLwZiqybzcuRGwAc7WWB/NGWIhBu440ZlIHmFitLRPzm+tC9EtJY1gjAP9VMtelEQC2kuJR6gCm5X4BsBAWImDdluJZqgBjH/4MZr3TYzB6IoRWmHnzJgDK0g+1KL4128SqgnD9x432yn5NSfE88L0VYPx9rS/jYR6EJTCPJxQNu60oKV77gw2Ai/Ly1/ZKRElx8c20XL4n0ZZpgvkbAKbl7gCYDax0ALREmjJAo2SbM9A+AKLPqmC8aNkD4bVOMwPEKNlFUdYGkAE9rUhjSxvA2YOOoaPF7t+6AH4qKUauHURt3AObSoq8NgAGyo4UJW0ABH5py9wnbQAAppq76HYfRLXOXmPg4BWdasoA7yuZm47sB0zL9Vvt0TQvI/bqc06pfzsS4KHlWgwUUgKwmWjdKRhvI1q5/0P+T8dZ9jILTjH31X9PlKuNKzppXxDMFeV/a0eUVPSuftoBzgHKR/ohZwAugwAAAABJRU5ErkJggg==" />
  68. </view> -->
  69. </view>
  70. <view class="comment-main-content">
  71. {{each.content.length > 60 ? each.content.slice(0, 59) : each.content}}
  72. <span v-if="each.content.length > 60">
  73. {{each.hasShowMore ? each.content.slice(59) : '...'}}
  74. <span class="foot-btn" @click="showMore(each.id)">
  75. {{each.hasShowMore ? '收起' : '展开'}}
  76. </span>
  77. </span>
  78. </view>
  79. <view class="comment-main-foot">
  80. <uni-dateformat class="foot-time" :date="each.createTime"
  81. :threshold="[60000,3600000 * 24 * 365]">
  82. </uni-dateformat>
  83. <view class="foot-btn" @click="reply(item.nickName,each.nickName,item.id)">
  84. 回复</view>
  85. <!-- <view class="foot-btn" v-if="each.owner" @click="confirmDelete(each.id)">删除
  86. </view> -->
  87. </view>
  88. </view>
  89. </view>
  90. </view>
  91. <!-- 子评论列表-end -->
  92. </view>
  93. </view>
  94. </view>
  95. <!-- 评论列表-end -->
  96. </view>
  97. <!-- 评论主体-end -->
  98. <!-- 无评论-start -->
  99. <view class="comment-none" v-else>
  100. 暂无评论,<text @click="commentInput" class="toEvaluate">去评论</text>
  101. </view>
  102. <!-- 无评论-end -->
  103. <!-- 新增评论-start -->
  104. <view class="comment-submit-box" v-if="submit" @click="closeInput">
  105. <!-- 下边的click.stop.prevent用于让上边的click不传下去,以防点到下边的空白处触发closeInput方法 -->
  106. <view class="comment-add" @click.stop.prevent="stopPrevent" :style="'bottom:' + KeyboardHeight + 'px'">
  107. <view class="comment-submit">
  108. <view class="btn-click cancel" @click="closeInput">取消</view>
  109. <view>
  110. <view class="btn-click" @click="add">发布</view>
  111. </view>
  112. </view>
  113. <textarea class="textarea" v-model="commentReq.content" :placeholder="placeholder"
  114. :adjust-position="false" :show-confirm-bar="false" @blur="blur" @focus="focusOn" :focus="focus"
  115. maxlength="800">
  116. </textarea>
  117. </view>
  118. </view>
  119. <!-- 新增评论-end -->
  120. </view>
  121. </template>
  122. <script>
  123. export default {
  124. name: 'hb-comment',
  125. props: {
  126. cmData: {
  127. type: Object,
  128. default: () => {
  129. return null;
  130. }
  131. },
  132. deleteTip: {
  133. type: String,
  134. default: () => {
  135. return '操作不可逆,如果评论下有子评论,也将被一并删除,确认?';
  136. }
  137. },
  138. },
  139. watch: {
  140. cmData: {
  141. handler: function(newVal, oldVal) {
  142. this.init(newVal);
  143. },
  144. immediate: true
  145. }
  146. },
  147. data() {
  148. return {
  149. "emptyAvatar": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAABF5JREFUWEfFl11oHFUUx//nbmKwxdJ9qFL7YPEhRJC2gljjF60WG0WsoNkWfSnZ7Jy7FVPF0AoKpmBFqyIG3Jk7G1iIQXHbBz+KbbGtRfBbMe2LseKjiVDoiqIhwZ0jV3fb3cnM7kQCuU+7M+ec/+9+nHPPEJZ50DLrY1EApVJp9fz8/BYRuZ2INgDYWJvAWRE5R0RnZmZmPh4ZGZlPOrFEAMVi8e4gCPYSUZ+IXGGFgiCYIaJpKyQi1yql1orIFgAXARxRSvm5XO67diBtAYwxRQCDAE4RUUkpdWxwcNCKLBiu665TSj0kIpqIbgTgMzO3gmgJYIz5CMB9AIaZ+bXGQMVi8RoRuZeI/lZKHc1ms3/U34+Pj6+cnZ3dC+AggGPMfH8cRCyAMUZqThlmPlwPUCgU0qlUyq7Kww1BrbjHzPsahYwx/QDK9hkzR2pFPjTGnAWwIexkjOkRkRIR3Rozo5Miskdr/VMIxE7mHDPXD+2l1wsA6nseBMHmfD7/dSjQOwB2tTlYC/bddd1blFJfARhj5lyjfxNA7bSfitpz3/d3iYgFaDuUUjeHM8AY8zSAV5VS9+RyudP1IE0Axpj3Aaxk5m1hFc/zPiWiO9uq/2dwiJn3h22NMScB/MnMOxYAjI6Orurq6rpgU0hrXYpw/hFAd0KAD5n5wbCt7/t7ROT1ubm5NUNDQ7/b95dWwHXd7Uqp452dnVcPDAxciACwDlclAbAFynGcdRGr2EtEnwdB0JfP5080ARhjDhLRbY7jbI0SMcZUAKxOAgDgN2ZOx8SxGfEiMz/bBOD7/lgQBCu01o/GOH4PYFNCgElmvinK1vf9X2xxchzHVtfLW2CMOQpgipmHYwBeBtBUaOJgRKSgtX48Js63AH5l5geaADzPe1cpddFxnHyM42YAXyZYAXt+epn557iVFJHzWuudYYDnlFJ9juPcESfi+35JRHa3gdjPzIfibIwxNtPe0Fq/EAZ4hIhcZl4T5+y67nql1CcA1kfZENFnrSZQ6ycqItKvtT4SBthIRJMdHR092WzW5nzk8H1/WEReiQHY4TjOB3G+nuf9qyEim7TW9r65fAjL5fKVlUrlPICXmPnNFquwWym1oFBZ+yAItubz+TMtAJ4gon3pdLo7k8nMNgHYP7ZeE5EWkbuYeaYx0NjY2HXValUDeApAV4zIJIADzPxe+H2hULg+lUp9U6sBl3qLprugXC6nKpXKF0R02nGcZ2wQ3/e3ichOEckQ0aoEWQDbsgF4a3p6eqLeH3qeN0FE3el0ujeTyVTrcaKuY1uIjIg8CaCfiLYnEW1hY4WPi8gEgMeY+e1G27iGxHYxtptZynGYmTPhgK1asqWEiBRfcAjDdMaYpYCIFW8LUMuM54nIsb3/YvbDXskiYtuzA6382n4X1CDWAnCSgNSFa98ETakcWbwWMytjzAoAPUEQ3JBKpXrs75r/VLVanVJK/VC7Uf9KGjfRCiQN9n/slh3gHz9i4jC+FVL5AAAAAElFTkSuQmCC",
  150. "commentData": null,
  151. "placeholder": "请输入评论",
  152. "commentReq": {
  153. "pId": null, // 评论父id
  154. "content": null // 评论内容
  155. },
  156. "pUser": null, // 标签-回复人
  157. "showTag": false, // 标签展示与否
  158. "focus": false, // 输入框自动聚焦
  159. "submit": false, // 弹出评论
  160. "KeyboardHeight": 0 // 键盘高度
  161. };
  162. },
  163. mounted: function() {
  164. uni.onKeyboardHeightChange(res => {
  165. this.KeyboardHeight = res.height;
  166. })
  167. },
  168. methods: {
  169. // 初始化评论
  170. init(cmData) {
  171. // for (var i in cmData.comment) {
  172. // cmData.comment[i].hasShowMore = false;
  173. // for (var j in cmData.comment[i].children) {
  174. // cmData.comment[i].children[j].hasShowMore = false;
  175. // }
  176. // }
  177. this.commentData = cmData;
  178. },
  179. // 没用的方法,但不要删
  180. stopPrevent() {},
  181. // 回复评论
  182. reply(pUser, reUser, pId) {
  183. this.pUser = pUser;
  184. this.commentReq.pId = pId;
  185. this.showTag = true;
  186. this.commentInput();
  187. },
  188. // 删除评论前确认
  189. confirmDelete(commentId) {
  190. var that = this;
  191. uni.showModal({
  192. title: '警告',
  193. content: that.deleteTip,
  194. confirmText: '确认删除',
  195. success: function(res) {
  196. if (res.confirm) {
  197. that.$emit('del', commentId);
  198. }
  199. }
  200. });
  201. },
  202. // 新增评论
  203. add() {
  204. if (this.commentReq.content == null || this.commentReq.content.length < 2) {
  205. this.$toast('评论内容过短')
  206. return
  207. }
  208. console.log(this.commentReq);
  209. this.$emit('add', this.commentReq);
  210. },
  211. // 点赞评论
  212. like(commentId) {
  213. this.$emit('like', commentId);
  214. },
  215. // 新增完成
  216. addComplete() {
  217. this.commentReq.content = null;
  218. this.tagClose();
  219. this.closeInput();
  220. },
  221. // 点赞完成-本地修改点赞结果
  222. likeComplete(commentId) {
  223. for (var i in this.commentData.comment) {
  224. if (this.commentData.comment[i].id == commentId) {
  225. this.commentData.comment[i].hasLike ? this.commentData.comment[i].likeNum-- : this.commentData
  226. .comment[i].likeNum++;
  227. this.commentData.comment[i].hasLike = !this.commentData.comment[i].hasLike;
  228. return
  229. }
  230. for (var j in this.commentData.comment[i].children) {
  231. if (this.commentData.comment[i].children[j].id == commentId) {
  232. this.commentData.comment[i].children[j].hasLike ? this.commentData.comment[i].children[j]
  233. .likeNum-- : this.commentData.comment[i].children[j].likeNum++;
  234. this.commentData.comment[i].children[j].hasLike = !this.commentData.comment[i].children[j]
  235. .hasLike;
  236. return
  237. }
  238. }
  239. }
  240. },
  241. // 删除完成-本地删除评论
  242. deleteComplete(commentId) {
  243. for (var i in this.commentData.comment) {
  244. for (var j in this.commentData.comment[i].children) {
  245. if (this.commentData.comment[i].children[j].id == commentId) {
  246. this.commentData.comment[i].children.splice(Number(j), 1);
  247. return
  248. }
  249. }
  250. if (this.commentData.comment[i].id == commentId) {
  251. this.commentData.comment.splice(Number(i), 1);
  252. return
  253. }
  254. }
  255. },
  256. // 展开评论
  257. showMore(commentId) {
  258. for (var i in this.commentData.comment) {
  259. if (this.commentData.comment[i].id == commentId) {
  260. this.commentData.comment[i].hasShowMore = !this.commentData.comment[i].hasShowMore;
  261. this.$forceUpdate();
  262. return
  263. }
  264. for (var j in this.commentData.comment[i].children) {
  265. if (this.commentData.comment[i].children[j].id == commentId) {
  266. this.commentData.comment[i].children[j].hasShowMore = !this.commentData.comment[i].children[j]
  267. .hasShowMore;
  268. this.$forceUpdate();
  269. return
  270. }
  271. }
  272. }
  273. },
  274. // 输入框失去焦点
  275. blur() {
  276. this.focus = false;
  277. },
  278. // 输入框聚焦
  279. focusOn() {
  280. this.$emit('focusOn');
  281. },
  282. // 标签关闭
  283. tagClose() {
  284. this.showTag = false;
  285. this.pUser = null;
  286. this.commentReq.pId = null;
  287. },
  288. // 输入评论
  289. commentInput() {
  290. // TODO 调起键盘方法
  291. this.submit = true;
  292. setTimeout(() => {
  293. this.focus = true;
  294. }, 50)
  295. },
  296. // 关闭输入评论
  297. closeInput() {
  298. this.focus = false;
  299. this.submit = false;
  300. }
  301. }
  302. };
  303. </script>
  304. <style lang="scss" scoped>
  305. .toEvaluate {
  306. color: $uni-primary;
  307. }
  308. .top-read {
  309. font-size: 28rpx;
  310. padding-left: 10rpx;
  311. color: #999999;
  312. }
  313. .seg_line_box {
  314. display: flex;
  315. height: 5rpx;
  316. justify-content: space-between;
  317. margin: 5rpx 0;
  318. }
  319. .seg_line {
  320. width: 45%;
  321. border-bottom: 1rpx solid $uni-border-1;
  322. }
  323. .seg_dot {
  324. width: 8%;
  325. border-bottom: 5rpx dotted $uni-border-1;
  326. }
  327. .comment-num {
  328. display: flex;
  329. justify-content: space-between;
  330. align-items: center;
  331. padding: 20rpx 0;
  332. padding-top: 0;
  333. }
  334. .comment-box {
  335. padding: 10rpx 0;
  336. }
  337. .comment-box-item {
  338. display: flex;
  339. }
  340. .comment-main {
  341. padding-left: 20rpx;
  342. }
  343. .comment-main-top {
  344. width: 600rpx;
  345. padding-top: 6rpx;
  346. display: flex;
  347. justify-content: space-between;
  348. }
  349. .sub-comment-main-top {
  350. width: 510rpx;
  351. padding-top: 6rpx;
  352. display: flex;
  353. justify-content: space-between;
  354. }
  355. .avatar {
  356. width: 70rpx;
  357. height: 70rpx;
  358. border-radius: 50%;
  359. }
  360. .nick-name-box {
  361. display: flex;
  362. align-items: center;
  363. }
  364. .comLogo {
  365. margin-right: 18rpx;
  366. font-size: 22rpx;
  367. border-radius: 10rpx;
  368. padding: 5rpx 15rpx;
  369. color: #FFFFFF;
  370. }
  371. .com1 {
  372. background-color: #d218b1;
  373. }
  374. .com2 {
  375. background-color: #f19c0b;
  376. }
  377. .com3 {
  378. background-color: #c8da85;
  379. }
  380. .com4 {
  381. background-color: $uni-primary;
  382. }
  383. .nick-name {
  384. font-size: 32rpx;
  385. font-weight: bold;
  386. }
  387. .isLike {
  388. font-size: 28rpx;
  389. padding-right: 10rpx;
  390. color: $uni-primary;
  391. }
  392. .notLike {
  393. font-size: 28rpx;
  394. padding-right: 10rpx;
  395. color: #999999;
  396. }
  397. .comment-main-content {
  398. padding: 10rpx 10rpx 10rpx 0;
  399. color: $uni-base-color;
  400. }
  401. .comment-main-foot {
  402. display: flex;
  403. font-size: 22rpx;
  404. }
  405. .foot-time {
  406. color: $uni-secondary-color;
  407. }
  408. .replayTag {
  409. color: #909399;
  410. margin-bottom: 5px;
  411. border: 1px solid #c8c9cc;
  412. background-color: #f4f4f5;
  413. border-radius: 3px;
  414. display: flex;
  415. justify-content: space-between;
  416. align-items: center;
  417. font-size: 16rpx;
  418. padding: 5px 10px;
  419. }
  420. .replyTagClose {
  421. font-size: 20px;
  422. line-height: 12px;
  423. padding: 0 0 2px 5px;
  424. }
  425. .foot-btn {
  426. padding-left: 10rpx;
  427. color: $uni-primary;
  428. }
  429. .comment-sub-box {
  430. padding: 20rpx 0;
  431. }
  432. .comment-sub-item {
  433. display: flex;
  434. }
  435. .comment-none {
  436. padding: 20rpx;
  437. width: 100%;
  438. text-align: center;
  439. color: #999999;
  440. }
  441. .comment-submit-box {
  442. position: fixed;
  443. display: flex;
  444. align-items: flex-end;
  445. z-index: 9900;
  446. left: 0;
  447. top: var(--window-top);
  448. bottom: 0;
  449. background-color: rgba($color: #000000, $alpha: 0.5);
  450. width: 100%;
  451. }
  452. .comment-add {
  453. position: fixed;
  454. background-color: #FFFFFF;
  455. width: 100%;
  456. border: 1px solid $uni-border-1;
  457. transition: .3s;
  458. -webkit-transition: .3s;
  459. }
  460. .btn-click {
  461. color: $uni-primary;
  462. width: 100rpx;
  463. text-align: center;
  464. }
  465. .cancel {
  466. color: #606266;
  467. }
  468. .textarea {
  469. height: 100px;
  470. padding: 16rpx;
  471. width: 100%;
  472. }
  473. .comment-submit {
  474. height: 68rpx;
  475. border-bottom: 1px solid $uni-border-1;
  476. width: 100%;
  477. display: flex;
  478. justify-content: space-between;
  479. align-items: center;
  480. }
  481. </style>