comment-video.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551
  1. <template>
  2. <view class="hb-comment">
  3. <!-- 阅读数-start -->
  4. <!-- <view>
  5. <img style="width: 14px; height: 14px;"
  6. src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA0tJREFUWEftVk2IHUUQ/qp311NOksRT8JBDkARCfrxEDyLK+pe/DQkmJpBlZ7ofDwQ15iRocjYSSWAzU/OWd4hCMJiQH43xBz2YXCRivIgHQQ8SRPGUU/btfNLPnuU5O7OZlWz2kobh8aq/qvq6qrq6BEu8ZIn94wGBBUWg3W6v6vV62wFsILlGRNYA6AH4AcCPJH8mebPT6dxomtpGBJxz4wD2kny2oWHN81ybEJmXQKvVWpfn+VsAXi45vgPgj/D5rUfC91AJ54m83el0PLZy1RKw1u4GkAB4OGj+LSJXRORMkiSXq6xFUfSUiHi93SKyImB+BeBU9fMqnUoCcRy/IiIfFAoicp7kYVX9pUkKrLWrReRdkjsLvNfPsuxYWX8OAWvtOwCODACPqOrRJo7LmApbe1T17CDuPwSccy2SpwZYj2VZdr7K+fj4+IqRkZFVIjJD8ndV/asKdzcSswTiON4iIlcBLPOGROTFNE0/rTHqQ3motHdWVffU1YYx5utizxjzXJIk3te/nbDdbi/r9XpesCWAasNureV86VDVurqKRUSD7k8zMzPPT01N/dYHW2uPA3gtnDxL09TWnPwjX+F+j+Q1EfkCwC0ALwHYGnTeU9U3q/Sdc0oyDnvnVHWXOOdeIPlJEN4E8ExVPq21ywH8GXCXVHXboJM4jr8VkSe8bHp6emW32y2ws7Bg40sA68NhD3gCXZIHA2q07r4659aT9C3XL3+vi3D2BaVi26Sq31dFIY7jgyLSDXs3xFp7rci9MebJJEn8/zlrMQj00+ic20/ydAjJhTRNd9Tk/56ngOT2ogg/BjAWHB9X1TfuQxG+r6qv9wlMTEw8OjQ0dAXAY8HxYl/D68PDw6OTk5O3Z+9sq9UazfP8s+Lki9iIbpMczbLsej/tg6F2zr1K8kQhI3n/WnHhdDEfI5L7syz7cPDQlW2zHIl78RwDqCzu2oEkiqKnjTFfDbD9vwOJb9vHsiw7XHWz5h3JoijaZIzxz/PjJeVGIxnJb4wxJ9M0PVflfE4R1oGcc2Mk9wHYVYcpyS8BuKiqnbvhG03FhRHn3GaSG0muM8as9b8AjB/HRcR/35G8oKr+hWy0FkSgkcUFgh4QWPII/ANy0cUvD9WbkgAAAABJRU5ErkJggg==" />
  7. <span class="top-read">{{commentData.readNumer}}</span>
  8. </view> -->
  9. <!-- 阅读数-end -->
  10. <!-- 阅读数下边那条线-start -->
  11. <!-- <view class="seg_line_box">
  12. <view class="seg_line"></view>
  13. <view class="seg_dot"></view>
  14. <view class="seg_line"></view>
  15. </view> -->
  16. <!-- 阅读数下边那条线-end -->
  17. <!-- 评论主体-start -->
  18. <view class="comment-list" v-if="commentData.comment.length != 0">
  19. <!-- 评论主体-顶部数量及发表评论按钮-start -->
  20. <view class="comment-num">
  21. <view>{{ $t('common.allComments') }} ({{commentData.commentSize}})</view>
  22. <!-- <view class="add-btn">
  23. <button type="primary" size="mini" @click="commentInput">发表评论</button>
  24. </view> -->
  25. </view>
  26. <!-- 评论主体-顶部数量及发表评论按钮-end -->
  27. <!-- 评论列表-start -->
  28. <view class="comment-box" v-for="(item, index) in commentData.comment" :key="index">
  29. <view class="comment-box-item">
  30. <view>
  31. <image :src="item.avatar || emptyAvatar" mode="aspectFill" class="avatar"></image>
  32. </view>
  33. <view class="comment-main">
  34. <!-- 父评论体-start -->
  35. <view class="comment-main-top">
  36. <view class="nick-name-box">
  37. <!-- <view class="comLogo com1" v-if="index == 0">沙发</view>
  38. <view class="comLogo com2" v-if="index == 1">板凳</view>
  39. <view class="comLogo com3" v-if="index == 2">地板</view> -->
  40. <!-- <view class="comLogo com4" v-if="index > 2">{{index + 1}}楼</view> -->
  41. <view class="nick-name">{{item.user_nickname}}</view>
  42. </view>
  43. <view class="zan-box flex-center" @click="like(item.id)">
  44. <span :class="item.is_likes == 1 ? 'isLike' : 'notLike'">{{item.like == 0 ? '' : item.like}}</span>
  45. <img style="width: 48rpx; height: 48rpx;" v-if="item.is_likes == 0" src="/static/image/news/zan-false.png" />
  46. <img style="width: 48rpx; height: 48rpx;" v-else src="/static/image/news/zan.png" />
  47. </view>
  48. </view>
  49. <view class="comment-main-content">
  50. {{item.content.length > 60 ? item.content.slice(0, 59) : item.content}}
  51. <span v-if="item.content.length > 60">
  52. {{item.hasShowMore ? item.content.slice(59) : '...'}}
  53. <span class="foot-btn" @click="showMore(item.id)">
  54. <!-- 收起 展开 -->
  55. {{item.hasShowMore ? $t('common.retract') : $t('common.expand')}}
  56. </span>
  57. </span>
  58. </view>
  59. <view class="comment-main-foot">
  60. <view class="foot-time">{{item.addtime}}</view>
  61. <!-- <view class="foot-btn" @click="reply(item.user_nickname,item.user_nickname,item.id)">回复</view>
  62. <view class="foot-btn" v-if="item.owner" @click="confirmDelete(item.id)">删除</view> -->
  63. </view>
  64. <!-- 父评论体-end -->
  65. <!-- 子评论列表-start -->
  66. <view class="comment-sub-box">
  67. <view class="comment-sub-item" v-for="(each,index) in item.children" :key="index">
  68. <view>
  69. <image :src="each.avatar || emptyAvatar" mode="aspectFill" class="avatar">
  70. </image>
  71. </view>
  72. <view class="comment-main">
  73. <view class="sub-comment-main-top">
  74. <view class="nick-name">{{each.user_nickname}}</view>
  75. <view class="zan-box flex-center" @click="like(each.id)">
  76. <span :class="each.is_likes == 1 ? 'isLike' : 'notLike'">{{each.like == 0 ? '' : each.like}}</span>
  77. <img style="width: 48rpx; height: 48rpx;" v-if="each.is_likes == 0" src="/static/image/news/zan-false.png" />
  78. <img style="width: 48rpx; height: 48rpx;" v-else src="/static/image/news/zan.png" />
  79. </view>
  80. </view>
  81. <view class="comment-main-content">
  82. {{each.content.length > 60 ? each.content.slice(0, 59) : each.content}}
  83. <span v-if="each.content.length > 60">
  84. {{each.hasShowMore ? each.content.slice(59) : '...'}}
  85. <span class="foot-btn" @click="showMore(each.id)">
  86. <!-- 收起 展开 -->
  87. {{each.hasShowMore ? $t('common.retract') : $t('common.expand')}}
  88. </span>
  89. </span>
  90. </view>
  91. <view class="comment-main-foot">
  92. <!-- <view class="foot-time">{{each.addtime}}</view> -->
  93. <!-- <view class="foot-btn" @click="reply(item.user_nickname,each.user_nickname,item.id)">
  94. 回复</view> -->
  95. <!-- <view class="foot-btn" v-if="each.owner" @click="confirmDelete(each.id)">删除
  96. </view> -->
  97. </view>
  98. </view>
  99. </view>
  100. </view>
  101. <!-- 子评论列表-end -->
  102. </view>
  103. </view>
  104. </view>
  105. <!-- 评论列表-end -->
  106. </view>
  107. <!-- 评论主体-end -->
  108. <!-- 无评论-start -->
  109. <view class="comment-none font24" v-else>
  110. <!-- No comments, Click on the comments-->
  111. {{$t('common.noComments')}},<span @click="commentInput" style="color: #DC3C23;">{{$t('common.COTComments')}}</span>
  112. </view>
  113. <!-- 无评论-end -->
  114. <!-- 新增评论-start -->
  115. <view class="comment-submit-box" v-if="submit" @click="closeInput">
  116. <!-- 下边的click.stop.prevent用于让上边的click不传下去,以防点到下边的空白处触发closeInput方法 -->
  117. <view class="comment-add" @click.stop.prevent="stopPrevent" :style="'bottom:' + KeyboardHeight + 'px'">
  118. <view class="comment-submit">
  119. <view class="btn-click cancel" @click="closeInput">{{$t('news.cancel')}}</view>
  120. <view>
  121. <view class="replayTag" v-show="showTag">
  122. <!-- 回复在 {{pUser}} 的评论下 -->
  123. <view>{{ $t('common.reUnder').replace('{params}', pUser) }}</view>
  124. <view @click="tagClose" class="replyTagClose">×</view>
  125. </view>
  126. </view>
  127. <view>
  128. <view class="btn-click" @click="add">{{$t('news.confirm')}}</view>
  129. </view>
  130. </view>
  131. <textarea class="textarea" v-model="commentReq.content" :placeholder="placeholder" :adjust-position="false" :show-confirm-bar="false"
  132. @blur="blur" @focus="focusOn" :focus="focus" maxlength="800"></textarea>
  133. </view>
  134. </view>
  135. <!-- 新增评论-end -->
  136. </view>
  137. </template>
  138. <script>
  139. export default {
  140. name: 'hb-comment',
  141. props: {
  142. cmData: {
  143. type: Object,
  144. default: () => {
  145. return null;
  146. }
  147. },
  148. deleteTip: {
  149. type: String,
  150. default: () => {
  151. // 操作不可逆,如果评论下有子评论,也将被一并删除,确认?
  152. return this.$t('common.operationNot');
  153. }
  154. },
  155. },
  156. watch: {
  157. cmData: {
  158. handler: function(newVal, oldVal) {
  159. this.init(newVal);
  160. },
  161. immediate: true
  162. }
  163. },
  164. data() {
  165. return {
  166. "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",
  167. "commentData": null,
  168. "placeholder": this.$t('news.input'),
  169. "commentReq": {
  170. "pId": null, // 评论父id
  171. "content": null // 评论内容
  172. },
  173. "pUser": null, // 标签-回复人
  174. "showTag": false, // 标签展示与否
  175. "focus": false, // 输入框自动聚焦
  176. "submit": false, // 弹出评论
  177. "KeyboardHeight": 0 // 键盘高度
  178. };
  179. },
  180. mounted: function() {
  181. uni.onKeyboardHeightChange(res => {
  182. this.KeyboardHeight = res.height;
  183. })
  184. },
  185. methods: {
  186. // 初始化评论
  187. init(cmData) {
  188. // for (var i in cmData.comment) {
  189. // cmData.comment[i].hasShowMore = false;
  190. // for (var j in cmData.comment[i].children) {
  191. // cmData.comment[i].children[j].hasShowMore = false;
  192. // }
  193. // }
  194. this.commentData = cmData;
  195. },
  196. // 没用的方法,但不要删
  197. stopPrevent() {},
  198. // 回复评论
  199. reply(pUser, reUser, pId) {
  200. if (this.$store.state.isLogin != 1) {
  201. this.$toUrl('/pages/login/login')
  202. return
  203. }
  204. this.pUser = pUser;
  205. this.commentReq.pId = pId;
  206. if (reUser) {
  207. this.commentReq.content = '@' + reUser + ' ';
  208. } else {
  209. this.commentReq.content = '';
  210. }
  211. this.showTag = true;
  212. this.commentInput();
  213. },
  214. // 删除评论前确认
  215. confirmDelete(commentId) {
  216. var that = this;
  217. uni.showModal({
  218. // 警告
  219. title: this.$t('common.warn'),
  220. content: that.deleteTip,
  221. confirmText: this.$t('common.delete1'),
  222. success: function(res) {
  223. if (res.confirm) {
  224. that.$emit('del', commentId);
  225. }
  226. }
  227. });
  228. },
  229. // 新增评论
  230. add() {
  231. if (this.$store.state.isLogin != 1) {
  232. this.$toUrl('/pages/login/login')
  233. return
  234. }
  235. if (this.commentReq.content == null || this.commentReq.content.length < 2) {
  236. // Please enter content
  237. this.$toast(this.$t('common.PEContent'))
  238. return
  239. }
  240. this.$emit('add', this.commentReq);
  241. },
  242. // 点赞评论
  243. like(commentId) {
  244. if (this.$store.state.isLogin != 1) {
  245. this.$toUrl('/pages/login/login')
  246. return
  247. }
  248. this.$emit('like', commentId);
  249. },
  250. // 新增完成
  251. addComplete() {
  252. this.commentReq.content = null;
  253. this.tagClose();
  254. this.closeInput();
  255. },
  256. // 点赞完成-本地修改点赞结果
  257. likeComplete(commentId) {
  258. for (var i in this.commentData.comment) {
  259. if (this.commentData.comment[i].id == commentId) {
  260. this.commentData.comment[i].is_likes == 1 ? this.commentData.comment[i].like-- : this.commentData
  261. .comment[i].like++;
  262. this.commentData.comment[i].is_likes == 1?this.commentData.comment[i].is_likes = 0 : this.commentData.comment[i].is_likes = 1;
  263. return
  264. }
  265. for (var j in this.commentData.comment[i].children) {
  266. if (this.commentData.comment[i].children[j].id == commentId) {
  267. this.commentData.comment[i].children[j].is_likes == 1 ? this.commentData.comment[i].children[j].like-- : this.commentData.comment[i].children[j].like++;
  268. this.commentData.comment[i].children[j].is_likes == 1 ? this.commentData.comment[i].children[j].is_likes = 0 : this.commentData.comment[i].children[j].is_likes= 1;
  269. return
  270. }
  271. }
  272. }
  273. },
  274. // 删除完成-本地删除评论
  275. deleteComplete(commentId) {
  276. for (var i in this.commentData.comment) {
  277. for (var j in this.commentData.comment[i].children) {
  278. if (this.commentData.comment[i].children[j].id == commentId) {
  279. this.commentData.comment[i].children.splice(Number(j), 1);
  280. return
  281. }
  282. }
  283. if (this.commentData.comment[i].id == commentId) {
  284. this.commentData.comment.splice(Number(i), 1);
  285. return
  286. }
  287. }
  288. },
  289. // 展开评论
  290. showMore(commentId) {
  291. for (var i in this.commentData.comment) {
  292. if (this.commentData.comment[i].id == commentId) {
  293. this.commentData.comment[i].hasShowMore = !this.commentData.comment[i].hasShowMore;
  294. this.$forceUpdate();
  295. return
  296. }
  297. for (var j in this.commentData.comment[i].children) {
  298. if (this.commentData.comment[i].children[j].id == commentId) {
  299. this.commentData.comment[i].children[j].hasShowMore = !this.commentData.comment[i].children[j]
  300. .hasShowMore;
  301. this.$forceUpdate();
  302. return
  303. }
  304. }
  305. }
  306. },
  307. // 输入框失去焦点
  308. blur() {
  309. this.focus = false;
  310. },
  311. // 输入框聚焦
  312. focusOn() {
  313. this.$emit('focusOn');
  314. },
  315. // 标签关闭
  316. tagClose() {
  317. this.showTag = false;
  318. this.pUser = null;
  319. this.commentReq.pId = null;
  320. },
  321. // 输入评论
  322. commentInput() {
  323. // TODO 调起键盘方法
  324. this.submit = true;
  325. setTimeout(() => {
  326. this.focus = true;
  327. }, 50)
  328. },
  329. // 关闭输入评论
  330. closeInput() {
  331. this.focus = false;
  332. this.submit = false;
  333. }
  334. }
  335. };
  336. </script>
  337. <style lang="scss" scoped>
  338. .hb-comment {
  339. padding: 24rpx;
  340. height: 100%;
  341. overflow-y:auto;
  342. // border-top: 20rpx solid #F3F3F7;
  343. }
  344. .top-read {
  345. font-size: 28rpx;
  346. padding-left: 10rpx;
  347. color: #999999;
  348. }
  349. .seg_line_box {
  350. display: flex;
  351. height: 5rpx;
  352. justify-content: space-between;
  353. margin: 5rpx 0;
  354. }
  355. .seg_line {
  356. width: 45%;
  357. border-bottom: 1rpx solid #e1e1e1;
  358. }
  359. .seg_dot {
  360. width: 8%;
  361. border-bottom: 5rpx dotted #dbdbdb;
  362. }
  363. .comment-num {
  364. display: flex;
  365. justify-content: space-between;
  366. align-items: center;
  367. padding: 20rpx 0;
  368. }
  369. .comment-box {
  370. padding: 24rpx 0;
  371. border-bottom: 2rpx solid #E9E9E9;
  372. }
  373. .comment-box-item {
  374. display: flex;
  375. }
  376. .comment-main {
  377. padding-left: 20rpx;
  378. }
  379. .comment-main-top {
  380. width: 600rpx;
  381. padding-top: 6rpx;
  382. display: flex;
  383. justify-content: space-between;
  384. }
  385. .sub-comment-main-top {
  386. width: 510rpx;
  387. padding-top: 6rpx;
  388. display: flex;
  389. justify-content: space-between;
  390. }
  391. .avatar {
  392. width: 70rpx;
  393. height: 70rpx;
  394. border-radius: 50%;
  395. }
  396. .nick-name-box {
  397. display: flex;
  398. align-items: center;
  399. }
  400. .comLogo {
  401. margin-right: 18rpx;
  402. font-size: 22rpx;
  403. border-radius: 10rpx;
  404. padding: 5rpx 15rpx;
  405. color: #FFFFFF;
  406. }
  407. .com1 {
  408. background-color: #d218b1;
  409. }
  410. .com2 {
  411. background-color: #f19c0b;
  412. }
  413. .com3 {
  414. background-color: #c8da85;
  415. }
  416. .com4 {
  417. background-color: #bfd0da;
  418. }
  419. .nick-name {
  420. font-size: 32rpx;
  421. color: #333;
  422. }
  423. .isLike {
  424. font-size: 28rpx;
  425. padding-right: 10rpx;
  426. color: #DC3C23;
  427. }
  428. .notLike {
  429. font-size: 28rpx;
  430. padding-right: 10rpx;
  431. color: #999999;
  432. }
  433. .comment-main-content {
  434. font-size: 28rpx;
  435. padding: 10rpx 10rpx 10rpx 0;
  436. }
  437. .comment-main-foot {
  438. display: flex;
  439. font-size: 22rpx;
  440. }
  441. .replayTag {
  442. color: #909399;
  443. margin-bottom: 5px;
  444. border: 1px solid #c8c9cc;
  445. background-color: #f4f4f5;
  446. border-radius: 3px;
  447. display: flex;
  448. justify-content: space-between;
  449. align-items: center;
  450. font-size: 16rpx;
  451. padding: 5px 10px;
  452. }
  453. .replyTagClose {
  454. font-size: 20px;
  455. line-height: 12px;
  456. padding: 0 0 2px 5px;
  457. }
  458. .foot-btn {
  459. padding-left: 10rpx;
  460. color: #007AFF;
  461. }
  462. .comment-sub-box {
  463. padding: 20rpx 0;
  464. }
  465. .comment-sub-item {
  466. display: flex;
  467. }
  468. .comment-none {
  469. padding: 20rpx;
  470. width: 100%;
  471. text-align: center;
  472. color: #999999;
  473. }
  474. .comment-submit-box {
  475. position: fixed;
  476. display: flex;
  477. align-items: flex-end;
  478. z-index: 9900;
  479. left: 0;
  480. top: var(--window-top);
  481. bottom: 0;
  482. background-color: rgba($color: #000000, $alpha: 0.5);
  483. width: 100%;
  484. }
  485. .comment-add {
  486. position: fixed;
  487. background-color: #FFFFFF;
  488. width: 100%;
  489. padding: 5rpx;
  490. border: 1px solid #ddd;
  491. transition: .3s;
  492. -webkit-transition: .3s;
  493. }
  494. .btn-click {
  495. color: $color2;
  496. font-size: 28rpx;
  497. padding: 10rpx;
  498. }
  499. .cancel {
  500. color: #606266;
  501. }
  502. .textarea {
  503. height: 100px;
  504. padding: 16rpx;
  505. width: 100%;
  506. }
  507. .comment-submit {
  508. padding: 5rpx 20rpx 0 20rpx;
  509. border-bottom: 1px dashed #ddd;
  510. width: calc(100% - 40rpx);
  511. display: flex;
  512. justify-content: space-between;
  513. align-items: center;
  514. }
  515. </style>