feat:留言板组件封装
This commit is contained in:
		
							parent
							
								
									be14015565
								
							
						
					
					
						commit
						0f23391c74
					
				|  | @ -1,67 +1,65 @@ | |||
| <template> | ||||
|   <view class="message-wrapper"> | ||||
|     <u-swipe-action> | ||||
|       <u-swipe-action-item | ||||
|         :options="swipeOptions" | ||||
|         :show="item.show" | ||||
|         :index="itemIndex" | ||||
|         @click="handleSwipeClick" | ||||
|         @open="(e) => handleSwipeOpen(e)" | ||||
|         @close="(e) => handleSwipeClose(e)" | ||||
|         @content-click="closeSwipe" | ||||
|         :btn-width="80" | ||||
|         :disabled="false" | ||||
|       > | ||||
|         <view class="message-item"> | ||||
|           <view class="message-header"> | ||||
|             <view class="user-info"> | ||||
|               <image class="avatar" :src="item.avatar || defaultAvatar"></image> | ||||
|               <text class="username">{{ item.username }}</text> | ||||
|             </view> | ||||
|             <view class="message-time">{{ item.time }}</view> | ||||
|     <u-swipe-action | ||||
|       :index="itemIndex" | ||||
|       :show="item.show" | ||||
|       :options="swipeOptions" | ||||
|       @click="handleSwipeClick" | ||||
|       @open="handleSwipeOpen" | ||||
|       @close="handleSwipeClose" | ||||
|       @content-click="closeSwipe" | ||||
|       :btn-width="80" | ||||
|       :disabled="false" | ||||
|     > | ||||
|       <view class="message-item"> | ||||
|         <view class="message-header"> | ||||
|           <view class="user-info"> | ||||
|             <image class="avatar" :src="item.avatar || defaultAvatar"></image> | ||||
|             <text class="username">{{ item.username }}</text> | ||||
|           </view> | ||||
|           <view class="message-time">{{ item.time }}</view> | ||||
|         </view> | ||||
| 
 | ||||
|         <view class="message-content"> | ||||
|           <view class="question"> | ||||
|             <view class="question-icon">问</view> | ||||
|             <view class="question-text">{{ item.question }}</view> | ||||
|           </view> | ||||
| 
 | ||||
|           <view class="message-content"> | ||||
|             <view class="question"> | ||||
|               <view class="question-icon">问</view> | ||||
|               <view class="question-text">{{ item.question }}</view> | ||||
|             </view> | ||||
|           <view class="reply-button" @click.stop="onReply" v-if="!item.reply"> | ||||
|             <u-icon name="chat" color="#4a6cf7" size="16"></u-icon> | ||||
|             <text>回复</text> | ||||
|           </view> | ||||
| 
 | ||||
|             <view class="reply-button" @click.stop="onReply" v-if="!item.reply"> | ||||
|               <u-icon name="chat" color="#4a6cf7" size="16"></u-icon> | ||||
|               <text>回复</text> | ||||
|             </view> | ||||
| 
 | ||||
|             <view class="reply-content" v-if="item.reply"> | ||||
|               <view class="reply-header"> | ||||
|                 <view class="reply-icon">答</view> | ||||
|                 <view class="reply-info"> | ||||
|                   <text>{{ item.replyUser }}</text> | ||||
|                 </view> | ||||
|               </view> | ||||
|               <view class="reply-text" :class="{ expanded: item.expanded }">{{ | ||||
|                 item.reply | ||||
|               }}</view> | ||||
|               <view | ||||
|                 class="expand-button" | ||||
|                 v-if="item.reply.length > 100" | ||||
|                 @click.stop="toggleExpand" | ||||
|               > | ||||
|                 {{ item.expanded ? "收起" : "展开" }} | ||||
|                 <u-icon | ||||
|                   :name="item.expanded ? 'arrow-up' : 'arrow-down'" | ||||
|                   size="12" | ||||
|                 ></u-icon> | ||||
|           <view class="reply-content" v-if="item.reply"> | ||||
|             <view class="reply-header"> | ||||
|               <view class="reply-icon">答</view> | ||||
|               <view class="reply-info"> | ||||
|                 <text>{{ item.replyUser }}</text> | ||||
|               </view> | ||||
|             </view> | ||||
| 
 | ||||
|             <view class="reply-button" @click.stop="onReply" v-if="item.reply"> | ||||
|               <u-icon name="chat" color="#4a6cf7" size="16"></u-icon> | ||||
|               <text>回复</text> | ||||
|             <view class="reply-text" :class="{ expanded: item.expanded }">{{ | ||||
|               item.reply | ||||
|             }}</view> | ||||
|             <view | ||||
|               class="expand-button" | ||||
|               v-if="item.reply.length > 100" | ||||
|               @click.stop="toggleExpand" | ||||
|             > | ||||
|               {{ item.expanded ? "收起" : "展开" }} | ||||
|               <u-icon | ||||
|                 :name="item.expanded ? 'arrow-up' : 'arrow-down'" | ||||
|                 size="12" | ||||
|               ></u-icon> | ||||
|             </view> | ||||
|           </view> | ||||
|         </view></u-swipe-action-item | ||||
|       > | ||||
| 
 | ||||
|           <view class="reply-button" @click.stop="onReply" v-if="item.reply"> | ||||
|             <u-icon name="chat" color="#4a6cf7" size="16"></u-icon> | ||||
|             <text>回复</text> | ||||
|           </view> | ||||
|         </view> | ||||
|       </view> | ||||
|     </u-swipe-action> | ||||
|   </view> | ||||
| </template> | ||||
|  | @ -100,15 +98,18 @@ export default { | |||
|   methods: { | ||||
|     handleSwipeClick(e) { | ||||
|       const { index } = e; // 点击的按钮索引 | ||||
| 
 | ||||
|       if (index === 0) { | ||||
|         // 删除按钮 | ||||
|         this.$emit("delete", this.itemIndex); | ||||
|       } | ||||
|     }, | ||||
|     handleSwipeOpen(e) { | ||||
|       // uView 1.x的事件参数格式与2.x不同 | ||||
|       this.$emit("open-swipe", this.itemIndex); | ||||
|     }, | ||||
|     handleSwipeClose(e) { | ||||
|       // uView 1.x的事件参数格式与2.x不同 | ||||
|       this.item.show = false; | ||||
|     }, | ||||
|     closeSwipe() { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue