This commit is contained in:
2026-04-14 17:38:46 +08:00
commit b71e6d6bae
2848 changed files with 237896 additions and 0 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,11 @@
{
"navigationBarTitleText": "",
"disableScroll": true,
"usingComponents": {
"u-loading": "/components/uview-ui/components/u-loading/u-loading",
"price-format": "/components/price-format/price-format",
"emoji": "/components/emoji/emoji",
"u-icon": "/components/uview-ui/components/u-icon/u-icon",
"u-image": "/components/uview-ui/components/u-image/u-image"
}
}

View File

@ -0,0 +1 @@
<view class="chat flex-col"><view data-event-opts="{{[['tap',[['e0',['$event']]]]]}}" class="content" bindtap="__e"><scroll-view style="height:100%;" scroll-y="{{true}}" scroll-top="{{scrollTop}}" scroll-into-view="{{intoView}}" data-event-opts="{{[['scrolltoupper',[['scrollToupper',['$event']]]]]}}" bindscrolltoupper="__e"><block wx:if="{{pageStatus=='loading'}}"><view class="loading flex row-center"><u-loading vue-id="b7ba5afe-1" mode="flower" size="40" bind:__l="__l"></u-loading></view></block><view class="chat-lists"><block wx:for="{{$root.l0}}" wx:for-item="item" wx:for-index="index" wx:key="id"><view class="{{['chat-item',(item.$orig.from_type=='user')?'right':'',(item.$orig.from_type=='kefu')?'left':'',(showIndex>index)?'visibility':'']}}" id="{{'chat-item_'+item.$orig.id}}"><block wx:if="{{item.$orig.type==1}}"><block wx:if="{{item.m0}}"><view class="text-center m-b-30 white"><view class="chat-tips xs">{{item.m1}}</view></view></block><view class="chat-info"><image class="avatar" src="{{item.m2}}"></image><block wx:if="{{item.$orig.msg_type==1}}"><view class="text-box"><rich-text nodes="{{item.m3}}" space="nbsp"></rich-text></view></block><block wx:if="{{item.$orig.msg_type==2}}"><view class="image-box"><image class="image" mode="widthFix" src="{{item.m4}}" data-event-opts="{{[['tap',[['previewImage',[item.m5]]]]]}}" bindtap="__e"></image></view></block><block wx:if="{{item.$orig.msg_type==3}}"><view class="goods m-r-20 goods-box"><view class="goods-img m-r-20"><image style="width:140rpx;height:140rpx;" src="{{item.m6}}"></image></view><view class="goods-info flex-1"><view class="line-2">{{''+item.$orig.goods.name+''}}</view><view class="flex m-t-10 row-between"><price-format vue-id="{{'b7ba5afe-2-'+index}}" color="{{colorConfig.primary}}" subscript-size="{{26}}" first-size="{{38}}" second-size="{{26}}" price="{{item.$orig.goods.min_price}}" bind:__l="__l"></price-format></view></view></view></block></view></block><block wx:else><view class="text-center white"><view class="muted xs">{{item.$orig.msg}}</view></view></block></view></block></view><block wx:if="{{isError}}"><view class="error"><view class="error-msg text-center xs">{{errorMsg}}</view></view></block><view id="bottom"></view></scroll-view></view><view data-event-opts="{{[['tap',[['e1',['$event']]]]]}}" class="footer" bindtap="__e"><view class="footer-input flex"><view data-event-opts="{{[['tap',[['uploadFile',['$event']]]]]}}" class="album" bindtap="__e"><image class="icon" src="/static/images/icon_album.png"></image></view><view class="input-contain flex"><input class="text-area" confirm-type="send" maxlength="-1" data-event-opts="{{[['focus',[['scrollToBottom',['$event']]]],['confirm',[['sendText',['$event']]]],['input',[['__set_model',['','msg','$event',[]]]]]]}}" value="{{msg}}" bindfocus="__e" bindconfirm="__e" bindinput="__e"/><image class="icon" src="/static/images/icon_emoji.png" data-event-opts="{{[['tap',[['handleEmojiShow',['$event']]]]]}}" bindtap="__e"></image></view><button class="send-btn" size="sm" data-event-opts="{{[['tap',[['sendText',['$event']]]]]}}" bindtap="__e">发送</button></view><view class="{{['emoji-wrap',(showEmoji)?'emoji-show':'']}}"><scroll-view style="height:100%;" scroll-y="true"><emoji bind:input="__e" vue-id="b7ba5afe-3" data-event-opts="{{[['^input',[['handleEmojiInput']]]]}}" bind:__l="__l"></emoji></scroll-view></view></view><block wx:if="{{showGoods}}"><view class="goods"><view data-event-opts="{{[['tap',[['e2',['$event']]]]]}}" class="close" bindtap="__e"><u-icon vue-id="b7ba5afe-4" name="close-circle-fill" color="#ccc" size="40" bind:__l="__l"></u-icon></view><view class="goods-img m-r-20"><u-image vue-id="b7ba5afe-5" width="140rpx" height="140rpx" src="{{goodsInfo.image}}" bind:__l="__l"></u-image></view><view class="goods-info flex-1"><view class="line-2">{{''+goodsInfo.name+''}}</view><view class="flex m-t-10 row-between"><price-format vue-id="b7ba5afe-6" color="{{colorConfig.primary}}" subscript-size="{{26}}" first-size="{{38}}" second-size="{{26}}" price="{{goodsInfo.min_price}}" bind:__l="__l"></price-format><view data-event-opts="{{[['tap',[['sendGoods',['$event']]]]]}}" class="send-btn" bindtap="__e">发送链接</view></view></view></view></block></view>

View File

@ -0,0 +1 @@
page{pading:0;height:100%}.chat{height:100%}.chat .goods{display:flex;position:fixed;width:600rpx;right:20rpx;bottom:calc(120rpx + env(safe-area-inset-bottom));border-radius:14rpx;background:#fff;padding:20rpx}.chat .goods .close{position:absolute;left:-20rpx;top:-20rpx}.chat .goods .send-btn{padding:8rpx 22rpx}.chat .content{transition:all .3s;flex:1;min-height:0}.chat .content .loading{padding:20rpx;height:40px}.chat .content .chat-lists{padding:0 20rpx 30rpx;overflow:hidden;position:relative}.chat .content .chat-lists .chat-tips{padding:4rpx 20rpx;border-radius:21rpx;display:inline-block;text-align:center;background-color:rgba(0,0,0,.2)}.chat .content .chat-lists .chat-item{padding-top:30rpx}.chat .content .chat-lists .chat-item.visibility{visibility:hidden}.chat .content .chat-lists .chat-item .chat-info{display:flex;align-items:flex-start}.chat .content .chat-lists .chat-item.right .chat-info{flex-direction:row-reverse}.chat .content .chat-lists .chat-item.right .chat-info .text-box{background-color:#ed5349;color:#fff}.chat .content .chat-lists .chat-item .avatar{width:78rpx;height:78rpx;border-radius:14rpx;flex:none}.chat .content .chat-lists .chat-item .text-box{max-width:500rpx;min-width:80rpx;background-color:#fff;border-radius:14rpx;padding:16rpx 20rpx;margin:0 20rpx;word-break:break-word;line-height:40rpx}.chat .content .chat-lists .chat-item .image-box{max-width:300rpx;margin:0 20rpx}.chat .content .chat-lists .chat-item .image-box .image{max-width:100%}.chat .content .chat-lists .chat-item .goods-box{position:static;width:510rpx}.chat .error{padding:0 30rpx 30rpx}.chat .error .error-msg{color:#bbb;word-break:break-word}.chat .footer{background:#f2f2f2;padding-bottom:env(safe-area-inset-bottom)}.chat .footer .footer-input{height:100rpx;padding:0 20rpx}.chat .footer .footer-input .icon{width:52rpx;height:52rpx}.chat .footer .footer-input .input-contain{margin:0 20rpx;background-color:#fff;height:68rpx;border-radius:60rpx;flex:1;overflow:hidden;padding:0 10rpx 0 30rpx}.chat .footer .footer-input .input-contain .text-area{flex:1;height:100rpx;word-break:break-all}.chat .emoji-wrap{height:0;transition:all .3s}.chat .emoji-wrap.emoji-show{height:200px}.chat .send-btn{padding:0 25rpx;color:#fff;background-color:#ed5349;border-radius:60rpx}