Files
xingque/pages/cs-chat/cs-chat.wxml

109 lines
5.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<view class="chat-page">
<scroll-view class="msg-list" scroll-y="true"
scroll-into-view="{{scrollToView}}"
refresher-enabled="{{true}}"
refresher-triggered="{{isRefreshing}}"
bindrefresherrefresh="onPullDownRefresh"
style="top: 20rpx; bottom: calc({{bottomSafeHeight}}rpx + {{keyboardHeight}}px + env(safe-area-inset-bottom) + 20rpx);">
<view class="loading-more" wx:if="{{loadingHistory}}">加载更早消息...</view>
<block wx:for="{{messages}}" wx:key="messageId">
<view class="msg-wrapper" data-messageid="{{item.messageId}}" bindlongpress="showAction">
<view class="time-tag" wx:if="{{item.showTime}}">{{item.formattedTime}}</view>
<view class="msg-row {{item.senderId === currentUser.id ? 'right' : 'left'}}">
<!-- 对方头像(客服) -->
<image wx:if="{{item.senderId !== currentUser.id}}" class="avatar" src="{{teamAvatar}}" mode="aspectFill" />
<view class="bubble {{item.senderId === currentUser.id ? 'bubble-right' : 'bubble-left'}}"
data-messageid="{{item.messageId}}"
data-text="{{item.type==='text' ? item.payload.text : ''}}"
bindtap="{{item.type==='text' ? 'onBubbleTap' : (item.type==='image' ? 'previewImage' : '')}}"
data-url="{{item.type==='image' ? item.payload.url : ''}}">
<text wx:if="{{item.type === 'text'}}" class="msg-text">{{item.payload.text}}</text>
<image wx:elif="{{item.type === 'image'}}" class="msg-image" src="{{item.payload.url}}" mode="widthFix" data-url="{{item.payload.url}}" bindtap="previewImage"/>
<view wx:elif="{{item.type === 'order'}}" class="order-bubble">
<text class="order-label">📋 订单消息</text>
<view class="order-brief">
<text>订单号:{{item.payload.dingdan_id || '无'}}</text>
<text>服务:{{item.payload.jieshao || ''}}</text>
<text class="order-price">¥{{item.payload.jine}}</text>
</view>
<button class="order-detail-btn" catchtap="showOrderDetailPopup" data-order="{{item.payload}}" size="mini">查看详情</button>
</view>
<text wx:else class="msg-text">{{item.payload.text || '[未知消息]'}}</text>
</view>
<!-- 自己头像 -->
<image wx:if="{{item.senderId === currentUser.id}}" class="avatar" src="{{currentUser.avatar}}" mode="aspectFill" />
</view>
<!-- 🔥 已读/未读标签已彻底移除 -->
</view>
</block>
<view id="msg-bottom" style="height:20rpx;"></view>
</scroll-view>
<!-- 底部输入区域(保持不变) -->
<view class="input-area" style="bottom: {{keyboardHeight}}px; padding-bottom: calc(10rpx + env(safe-area-inset-bottom));">
<view class="plus-panel {{showPlusPanel ? 'show' : ''}}" catchtap="closePlusPanel">
<view class="plus-grid">
<view class="plus-item" catchtap="openEmojiFromPlus">
<text class="plus-icon">😀</text>
<text class="plus-label">表情</text>
</view>
<view class="plus-item" catchtap="chooseImage">
<text class="plus-icon">📷</text>
<text class="plus-label">图片</text>
</view>
<view class="plus-item" catchtap="openOrderSender">
<text class="plus-icon">📋</text>
<text class="plus-label">订单</text>
</view>
</view>
</view>
<view class="emoji-mask" wx:if="{{showEmojiPanel}}" catchtap="closeEmojiPanel"></view>
<view class="emoji-panel {{showEmojiPanel ? 'show' : ''}}">
<scroll-view scroll-y="true" class="emoji-scroll">
<view class="emoji-grid">
<block wx:for="{{emojiList}}" wx:key="*this">
<view class="emoji-item" data-emoji="{{item}}" catchtap="insertEmoji">{{item}}</view>
</block>
</view>
</scroll-view>
</view>
<view class="pending-image" wx:if="{{pendingImage}}">
<image class="pending-thumb" src="{{pendingImage}}" mode="aspectFill" />
<view class="pending-remove" catchtap="clearPendingImage">✕</view>
</view>
<view class="write-row">
<input class="text-input" placeholder="消息" value="{{inputText}}" bindinput="onInput" adjust-position="{{false}}" bindkeyboardheightchange="onKeyboardHeightChange" cursor-spacing="10"/>
<view class="send-btn" bindtap="sendMessage">发送</view>
<view class="plus-btn" bindtap="togglePlusPanel">
<text class="plus-icon-single"></text>
</view>
</view>
</view>
<!-- 文本双击放大弹窗 -->
<view class="detail-modal" wx:if="{{showDetailModal}}" catchtap="hideDetail">
<view class="detail-content" catchtap="noop">
<text class="detail-text" user-select="true">{{detailText}}</text>
<button class="copy-btn" bindtap="copyDetail">复制</button>
</view>
</view>
<!-- 订单详情弹窗 -->
<view class="order-detail-mask" wx:if="{{showOrderDetail}}" catchtap="hideOrderDetail">
<view class="order-detail-panel" catchtap="noop">
<view class="order-detail-title">订单详情</view>
<view class="order-detail-item">订单号:{{detailOrder.dingdan_id}}</view>
<view class="order-detail-item">服务描述:{{detailOrder.jieshao}}</view>
<view class="order-detail-item">金额:¥{{detailOrder.jine}}</view>
<view class="order-detail-item">类型:{{detailOrder.leixing || '无'}}</view>
<view class="order-detail-item">时间:{{detailOrder.shijian || '无'}}</view>
<button class="order-detail-close-btn" catchtap="hideOrderDetail">关闭</button>
</view>
</view>
<!-- 订单发送组件 -->
<order-sender visible="{{showOrderSender}}" bind:send="onSendOrder" bind:close="closeOrderSender" />
</view>