评论组件
This commit is contained in:
		
							
								
								
									
										207
									
								
								src/components/AiComment.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										207
									
								
								src/components/AiComment.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,207 @@ | ||||
| <template> | ||||
|   <div class="AiComment"> | ||||
|     <div class="comments flex-row"> | ||||
|       <div class="comments-box" @click="showCommentBox">{{ boxContent }}</div> | ||||
|       <img src="AiComment/comment.svg" @click="showCommentList" alt=""/> | ||||
|       <text>{{ commentCount || 0 }}</text> | ||||
|     </div> | ||||
|     <div class="modalWrapper" v-if="commentBoxPopup" :class="{clickClose:!modelClickClose}" | ||||
|          @click="commentBoxPopup=false"/> | ||||
|     <div class="commentBox" v-if="commentBoxPopup" :style="{bottom:marginBottom+ 'px'}"> | ||||
|       <textarea v-model="content" placeholder="写下你的想法…" maxlength="300" :focus="focus" @focus="getMarginBottom" | ||||
|                 @blur="marginBottom=0" :adjust-position="false" fixed/> | ||||
|       <view class="flex-row form-submit"> | ||||
|         <div>{{ `字数 ${wordCount || 0} / 300` }}</div> | ||||
|         <button @click="submitComment" :disabled="wordCount == 0">发布</button> | ||||
|       </view> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
|  | ||||
| export default { | ||||
|   name: "AiComment", | ||||
|   props: { | ||||
|     needLogin: Boolean, | ||||
|     customLogin: Boolean, | ||||
|     commentCount: Number, | ||||
|     modelClickClose: {type: Boolean, default: true} | ||||
|   }, | ||||
|   computed: { | ||||
|     wordCount() { | ||||
|       return this.content.length || 0 | ||||
|     }, | ||||
|     boxContent() { | ||||
|       return this.content || "我也说两句..." | ||||
|     }, | ||||
|     isLogin() { | ||||
|       return Boolean(uni.getStorageSync('token')) | ||||
|     }, | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       content: "", | ||||
|       marginBottom: 0, | ||||
|       commentBoxPopup: false, | ||||
|       focus: false | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     showCommentBox() { | ||||
|       if (this.customLogin) { | ||||
|         this.$emit("login", flag => this.commentBoxPopup = flag) | ||||
|       } else if (this.needLogin) { | ||||
|         if (this.isLogin) { | ||||
|           this.commentBoxPopup = true | ||||
|         } else { | ||||
|           this.$dialog.confirm({ | ||||
|             content: '您还未登陆', | ||||
|             confirmText: '去登录' | ||||
|           }).then(() => { | ||||
|             uni.switchTab({url: '/pages/mine/mine'}) | ||||
|           }).catch(() => { | ||||
|           }) | ||||
|         } | ||||
|       } else { | ||||
|         this.commentBoxPopup = true | ||||
|       } | ||||
|     }, | ||||
|     submitComment() { | ||||
|       this.commentBoxPopup = false | ||||
|       this.$emit("submitComment", this.content) | ||||
|       this.content = "" | ||||
|     }, | ||||
|     showCommentList() { | ||||
|       this.commentBoxPopup = false | ||||
|       this.$emit("showCommentList") | ||||
|     }, | ||||
|     getMarginBottom({detail}) { | ||||
|       this.marginBottom = detail.height | ||||
|       this.focus = true | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
|  | ||||
| .AiComment { | ||||
|   .comments { | ||||
|     width: 100%; | ||||
|     height: 112px; | ||||
|     padding: 24px 32px; | ||||
|     box-sizing: border-box; | ||||
|     position: fixed; | ||||
|     bottom: 0; | ||||
|     background: #f7f7f7; | ||||
|  | ||||
|     .comments-box { | ||||
|       width: 580px; | ||||
|       height: 64px; | ||||
|       line-height: 64px; | ||||
|       background-color: #fff; | ||||
|       color: #666; | ||||
|       font-size: 26px; | ||||
|       padding-left: 16px; | ||||
|       white-space: nowrap; | ||||
|       text-overflow: ellipsis; | ||||
|       overflow: hidden; | ||||
|     } | ||||
|  | ||||
|     image { | ||||
|       width: 52px; | ||||
|       height: 52px; | ||||
|       margin-left: 16px; | ||||
|       vertical-align: middle; | ||||
|     } | ||||
|  | ||||
|     text { | ||||
|       color: #666666; | ||||
|       font-size: 28px; | ||||
|       line-height: 60px; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .modalWrapper { | ||||
|     position: fixed; | ||||
|     top: 0; | ||||
|     left: 0; | ||||
|     right: 0; | ||||
|     bottom: 0; | ||||
|     background: rgba(0, 0, 0, .6); | ||||
|     z-index: 9; | ||||
|  | ||||
|     &.clickClose { | ||||
|       pointer-events: none; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .commentBox { | ||||
|     width: 100%; | ||||
|     height: 288px; | ||||
|     background-color: #fff; | ||||
|     padding: 32px 32px 24px 26px; | ||||
|     box-sizing: border-box; | ||||
|     position: fixed; | ||||
|     bottom: 0; | ||||
|     z-index: 99; | ||||
|  | ||||
|     textarea { | ||||
|       width: 100%; | ||||
|       height: 144px; | ||||
|       color: #666; | ||||
|       font-size: 26px; | ||||
|       background: #F7F7F7; | ||||
|       border-radius: 16px; | ||||
|       padding: 16px; | ||||
|       box-sizing: border-box; | ||||
|  | ||||
|       &::placeholder { | ||||
|         font-size: inherit; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     .form-submit { | ||||
|       margin-top: 24px; | ||||
|       height: 64px; | ||||
|       justify-content: space-between; | ||||
|       align-items: center; | ||||
|       color: #999; | ||||
|       font-size: 24px; | ||||
|  | ||||
|       button { | ||||
|         width: 144px; | ||||
|         height: 64px; | ||||
|         background-color: #135AB8; | ||||
|         color: #fff; | ||||
|         font-size: 24px; | ||||
|         border-radius: 32px; | ||||
|         line-height: 64px; | ||||
|         text-align: center; | ||||
|         margin: unset; | ||||
|  | ||||
|         &[disabled] { | ||||
|           color: #999; | ||||
|           background-color: #f7f7f7; | ||||
|           font-size: 28px; | ||||
|           border: 0; | ||||
|         } | ||||
|  | ||||
|         &:active { | ||||
|           opacity: .8; | ||||
|         } | ||||
|  | ||||
|         &:after { | ||||
|           border: none; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .flex-row { | ||||
|     display: flex; | ||||
|     flex-direction: row; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										11
									
								
								src/components/AiComment/comment.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/components/AiComment/comment.svg
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <svg width="26px" height="26px" viewBox="0 0 26 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||||
|     <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com --> | ||||
|     <title>icon/tab_bar/Comment</title> | ||||
|     <desc>Created with Sketch.</desc> | ||||
|     <g id="icon/tab_bar/Comment" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> | ||||
|         <path d="M4.75,21.7864745 L9.45344419,19.4347524 C9.6964412,19.3132539 9.96438906,19.25 10.236068,19.25 L20,19.25 C20.6903559,19.25 21.25,18.6903559 21.25,18 L21.25,8 C21.25,7.30964406 20.6903559,6.75 20,6.75 L6,6.75 C5.30964406,6.75 4.75,7.30964406 4.75,8 L4.75,21.7864745 Z" id="矩形" stroke="#333333" stroke-width="1.5"></path> | ||||
|         <rect id="矩形" fill="#999999" x="8" y="10.5" width="10" height="1.5" rx="0.75"></rect> | ||||
|         <rect id="矩形备份" fill="#999999" x="8" y="14" width="10" height="1.5" rx="0.75"></rect> | ||||
|     </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 984 B | 
		Reference in New Issue
	
	Block a user