消息修改,回话bug修改

This commit is contained in:
1154079537 2024-05-06 17:51:33 +08:00
parent 613742e706
commit 9b6befad9c
5 changed files with 259 additions and 179 deletions

View File

@ -53,7 +53,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.product.cart_info.product.store_name}}</div>
{{val.product.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{ item.refundOrder.refund_price }}
</div>
@ -89,7 +90,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.cart_info.product.store_name}}</div>
{{val.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{ item.orderInfo.pay_price }}
</div>
@ -101,7 +103,7 @@
<!--商品链接-->
<div class="conter acea-row row-middle"
v-if="item.msn_type === 4 && item.product">
<div class=" noPad">
<div class="noPad">
<navigator class="acea-row row-column-around noPad"
v-if="item.product.product_id"
:url="`/pages/goods_details/index?id=${item.product.product_id}`"
@ -114,7 +116,8 @@
{{ item.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.product.store_name}}</div>
{{item.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -135,7 +138,8 @@
{{ item.presell.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.presell.store_name}}</div>
{{item.presell.store_name}}
</div>
</div>
</navigator>
</div>
@ -156,7 +160,8 @@
{{ item.productGroup.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.productGroup.product.store_name}}</div>
{{item.productGroup.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -207,7 +212,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.product.cart_info.product.store_name}}</div>
{{val.product.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{ item.refundOrder.refund_price }}
</div>
@ -243,7 +249,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.cart_info.product.store_name}}</div>
{{val.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{ item.orderInfo.pay_price }}
</div>
@ -267,7 +274,8 @@
{{ item.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.product.store_name}}</div>
{{item.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -288,7 +296,8 @@
{{ item.presell.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.presell.store_name}}</div>
{{item.presell.store_name}}
</div>
</div>
</navigator>
</div>
@ -309,7 +318,8 @@
{{ item.productGroup.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.productGroup.product.store_name}}</div>
{{item.productGroup.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -388,7 +398,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.product.cart_info.product.store_name}}</div>
{{val.product.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{ val.product.cart_info.productAttr.price }}
</div>
@ -425,7 +436,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.cart_info.product.store_name}}</div>
{{val.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{ item.orderInfo.pay_price }}
</div>
@ -450,7 +462,8 @@
{{ item.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.product.store_name}}</div>
{{item.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -471,7 +484,8 @@
{{ item.presell.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.presell.store_name}}</div>
{{item.presell.store_name}}
</div>
</div>
</navigator>
</div>
@ -492,7 +506,8 @@
{{ item.productGroup.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.productGroup.product.store_name}}</div>
{{item.productGroup.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -534,7 +549,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.product.cart_info.product.store_name}}</div>
{{val.product.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{item.refundOrder.refund_num}}件商品
合计 {{ item.refundOrder.refund_price }}
@ -571,7 +587,8 @@
</div>
<div class="broadcast_details_picBox noPad">
<div class="broadcast_details_tit">
{{val.cart_info.product.store_name}}</div>
{{val.cart_info.product.store_name}}
</div>
<div class="broadcast_details_pic">
{{ item.orderInfo.pay_price }}
</div>
@ -596,7 +613,8 @@
{{ item.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.product.store_name}}</div>
{{item.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -617,7 +635,8 @@
{{ item.presell.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.presell.store_name}}</div>
{{item.presell.store_name}}
</div>
</div>
</navigator>
</div>
@ -638,7 +657,8 @@
{{ item.productGroup.product.price }}
</div>
<div class="broadcast_details_tit_no line1">
{{item.productGroup.product.store_name}}</div>
{{item.productGroup.product.store_name}}
</div>
</div>
</navigator>
</div>
@ -758,7 +778,7 @@
</div>
</div>
<div :style=" active === true ? 'height:' + footerConH + 'rem;' : 'height:' + footerH + 'rem;'"></div>
<div :style=" active === true ? 'height: 0;' : 'height: 2rem;'"></div>
<div :style=" active === true ? 'height: 0;' : 'height: 2rem;'"></div>
</scroll-view>
</view>
<view style="height: 100rpx;"></view>
@ -772,9 +792,9 @@
{{ speak }}
</div>
<view class="input_count">
<input type="text" placeholder-class='placeholder' :disabled="active" placeholder="输入内容" class="input" ref="input"
v-show="!voice" @input="bindInput" @keyup="keyup" @focus="focus" cursor-spacing="20"
v-model="textCon" @click="handleClick">
<input type="text" placeholder-class='placeholder' :disabled="active" placeholder="输入内容"
class="input" ref="input" v-show="!voice" @input="bindInput" @keyup="keyup" @focus="focus"
cursor-spacing="20" v-model="textCon" @click="handleClick">
<div class="send iconfont icon-fasong" :style="'color:'+iconColor" @click="sendTest"></div>
</view>
</div>
@ -817,7 +837,8 @@
getChatRecord,
getMerHistory,
chatReverstApi,
hasServiceApi
hasServiceApi,
getUserInfo
} from "@/api/user";
import {
getProductDetail,
@ -1213,8 +1234,7 @@
let self = this
self.$util.uploadImageOne('upload/image', function(res) {
if (res.status == 200) {
self.sendMsg(res.data.path, 3
)
self.sendMsg(res.data.path, 3)
}
});
},
@ -1383,11 +1403,11 @@
focus: function() {
this.active = false;
},
handleClick(){
if(this.active){
this.active = false;
}
},
handleClick() {
if (this.active) {
this.active = false;
}
},
keyup: function() {
if (this.$refs.input.value.length > 0) {
this.sendColor = true;
@ -1610,7 +1630,8 @@
width: 710rpx;
position: fixed;
bottom: 180rpx;
bottom: calc(180rpx + env(safe-area-inset-bottom)); /* 适应底部安全距离 */
bottom: calc(180rpx + env(safe-area-inset-bottom));
/* 适应底部安全距离 */
left: 20rpx;
.broadcast-details_box,
@ -1952,7 +1973,7 @@
position: fixed;
// bottom:var(--status-bar-height);
bottom: 20rpx;
bottom: calc(20rpx + env(safe-area-inset-bottom) );
bottom: calc(20rpx + env(safe-area-inset-bottom));
left: 0;
}

View File

@ -12,7 +12,8 @@
<view class="con line1" v-if="item.last && item.last.msn_type == 2">[表情]</view>
<view class="con line1" v-if="item.last && item.last.msn_type == 3">[图片]</view>
<view class="con line1" v-if="item.last && item.last.msn_type == 4">[商品]</view>
<view class="con line1" v-if="item.last && (item.last.msn_type == 5 || item.last.msn_type == 6)">[订单]</view>
<view class="con line1"
v-if="item.last && (item.last.msn_type == 5 || item.last.msn_type == 6)">[订单]</view>
</view>
<view class="right-box">
<view class="time">{{item.last && item.last.create_time.split(' ')[1] || ''}}</view>
@ -23,15 +24,18 @@
<block v-if="type == 1 && list.length>0" v-for="(item,index) in list" :key="index">
<div class="item acea-row" @click="goPage(item)">
<view class="logo">
<image :src="(item.user && item.user.avatar) ? item.user.avatar : '/static/images/f.png'" mode=""></image>
<image :src="(item.user && item.user.avatar) ? item.user.avatar : '/static/images/f.png'"
mode=""></image>
</view>
<view class="info">
<view class="name">{{item.user && item.user.nickname}}</view>
<view class="con line1" v-if="item.last && item.last.msn_type == 1">{{item.last.msn}}</view>
<view class="con line1" v-if="item.last && item.last.msn_type == 2">[表情]</view>
<view class="con line1" v-if="item.last && item.last.msn_type == 3">[图片]</view>
<view class="con line1" v-if="item.last && (item.last.msn_type == 4 || item.last.msn_type == 7)">[商品]</view>
<view class="con line1" v-if="item.last && (item.last.msn_type == 5 || item.last.msn_type == 6)">[订单]</view>
<view class="con line1"
v-if="item.last && (item.last.msn_type == 4 || item.last.msn_type == 7)">[商品]</view>
<view class="con line1"
v-if="item.last && (item.last.msn_type == 5 || item.last.msn_type == 6)">[订单]</view>
</view>
<view class="right-box">
<view class="time">{{item.last && item.last.create_time.split(' ')[1]}}</view>
@ -65,10 +69,12 @@
import {
getUserInfo
} from '@/api/user.js';
import { mapGetters } from "vuex";
import {
mapGetters
} from "vuex";
export default {
name: "CustomerList",
components:{
components: {
emptyPage,
authorize
},
@ -77,10 +83,10 @@
list: [],
productId: 0,
orderId: "",
type: 0 ,// 0 1
type: 0, // 0 1
timer: null,
page:1,
limit:9999,
page: 1,
limit: 9999,
mer_id: '',
loading: false,
clear: false,
@ -88,28 +94,28 @@
isShowAuth: false, //
};
},
computed: mapGetters(['isLogin','viewColor']),
computed: mapGetters(['isLogin', 'viewColor']),
onLoad(optios) {
this.type = optios.type||1;
this.type = optios.type || 1;
this.getindex()
},
onShow(option) {
if(this.isLogin){
if (this.isLogin) {
this.liveUpdate();
} else {
this.isAuto = true;
this.isShowAuth = true
}
},
onHide(){
if(this.timer) {
onHide() {
if (this.timer) {
clearInterval(this.timer);
this.timer = null;
}
this.clear = true;
},
onUnload() {
if(this.timer) {
if (this.timer) {
clearInterval(this.timer);
this.timer = null;
}
@ -117,30 +123,28 @@
},
methods: {
//
getindex(){
getindex() {
getUserInfo().then(res => {
if (res.data.mer_info.length == 0) {
return uni.showModal({
title: '暂未开通商户',
complete(res) {
// #ifdef APP-PLUS
uni.sendHostEvent('closeApp', (ret) => {
//
console.log('关闭应用' + JSON.stringify(ret));
});
// #endif
}
})
}
if (res.data.mer_info.length == 0) {
return uni.showModal({
title: '暂未开通商户',
complete(res) {
// #ifdef APP-PLUS
uni.sendHostEvent('closeApp', (ret) => {
//
console.log('关闭应用' + JSON.stringify(ret));
});
// #endif
}
})
}
this.mer_id = res.data.service.mer_id;
if(this.isLogin){
if (this.isLogin) {
this.getList(this.mer_id)
} else {
this.isAuto = true;
this.isShowAuth = true
}
// this.getList(this.mer_id)
// this.getList(res.data.service.mer_id, true);
});
},
onLoadFun() {
@ -154,20 +158,21 @@
},
getList(mer_id) {
this.loading = true;
if(this.type == 0){
if (this.type == 0) {
serviceList({
page:this.page,
limit:this.limit
page: this.page,
limit: this.limit
}).then(res => {
this.list = res.data.list;
if(res.status == 400){
this.getCurrBadge();
if (res.status == 400) {
clearInterval(this.timer);
this.timer = null;
return this.$util.Tips({
title: res.message
})
}
}).finally(v=>{
}).finally(v => {
this.loading = false;
return this.$util.Tips({
title: v
@ -177,20 +182,22 @@
title: err
})
});
}else{
serviceUserList(mer_id,{
page:this.page,
limit:this.limit
}).then(res =>{
} else {
serviceUserList(mer_id, {
page: this.page,
limit: this.limit
}).then(res => {
this.list = res.data.list;
if(res.status == 400){
this.getCurrBadge();
if (res.status == 400) {
clearInterval(this.timer);
this.timer = null;
return this.$util.Tips({
title: res.message
})
}
}).finally(v=>{
}).finally(v => {
this.loading = false;
clearInterval(this.timer);
this.timer = null;
@ -206,30 +213,49 @@
});
}
},
getCurrBadge() {
const sum = this.list.reduce((accumulator, current) => accumulator + Number(current.num),
0);
if (sum) {
uni.setTabBarBadge({
index: 1,
text: String(sum)
})
} else {
uni.removeTabBarBadge({
index: 1
})
}
},
//
liveUpdate(){
liveUpdate() {
let that = this;
this.clear = false;
if(that.timer) {
if (that.timer) {
clearInterval(that.timer);
that.timer = null;
}
that.timer = setInterval(function(){
if(that.clear){
that.timer = setInterval(function() {
if (that.clear) {
clearInterval(that.timer);
return ;
return;
}
//
(!that.loading) && that.getList(that.mer_id);
},5000);
}, 5000);
},
goPage(item) {
item.num = 0;
if(this.type == 0){
this.getCurrBadge();
if (this.type == 0) {
uni.navigateTo({
url: `/pages/chat/customer_list/chat?mer_id=${item.mer_id}`
})
}else{
} else {
uni.navigateTo({
url: `/pages/chat/customer_list/chat?userId=${item.user.uid}&mer_id=${item.mer_id}`
})
@ -248,7 +274,8 @@
transform: rotate(180deg);
font-size: 36rpx;
}
.popupn{
.popupn {
position: fixed;
width: 100%;
text-align: center;
@ -258,65 +285,78 @@
height: 90rpx;
line-height: 90rpx;
z-index: 100;
.title{
.title {
max-width: 560rpx;
margin: 0 auto;
position: relative;
}
.iconfont{
.iconfont {
display: inline-block;
position: relative;
top: 4rpx;
right: 0;
}
.mer_logo{
.mer_logo {
width: 34rpx;
height: 34rpx;
position: relative;
top: 6rpx;
right: 10px;
}
.mer_name{
.mer_name {
display: inline-block;
max-width: 650rpx;
}
.invoice-content{
.invoice-content {
background-color: #ffffff;
}
}
.list_count{
.list_count {
margin-top: 104rpx;
}
.item {
align-items: center;
border-bottom: 1px solid #eee;
padding: 20rpx 30rpx;
background-color: #fff;
.logo image{
.logo image {
width: 88rpx;
height: 88rpx;
border-radius: 50%;
}
.info{
.info {
width: 334rpx;
margin-left: 20rpx;
.con{
.con {
margin-top: 10rpx;
color: #999999;
font-size: 24rpx;
}
}
.right-box{
.right-box {
flex: 1;
display: flex;
flex-direction: column;
align-items: flex-end;
font-size: 20rpx;
color: #BBBBBB;
.time{
.time {
margin-bottom: 10rpx;
}
.num{
.num {
min-width: 6px;
background-color: var(--view-theme);
border-radius: 15px;

View File

@ -58,10 +58,10 @@
<image class="vip-image" src="/static/images/svip.png"></image>
</view>
</view>
<view @click="listenerActionSheet" class="fenxiang_btn">
<!-- <view @click="listenerActionSheet" class="fenxiang_btn">
<view class='iconfont icon-fenxiang'></view>
分享
</view>
</view> -->
</view>
<!-- <view v-if="svipData && !svipData.is_svip && svipData.show_svip"
class="svipCon acea-row row-between-wrapper skeleton-rect" style="margin-top: 20rpx;">
@ -237,9 +237,9 @@
</view>
<view v-else class="txt">0人关注</view>
</view>
<navigator v-if="hide_mer_status != 1"
<!-- <navigator v-if="hide_mer_status != 1"
:url="'/pages/store/home/index?id='+storeInfo.merchant.mer_id" class="link"
hover-class="none">进店</navigator>
hover-class="none">进店</navigator> -->
</view>
<view class="score-wrapper">
<view class="item">
@ -278,20 +278,22 @@
<view class='title'>产品介绍</view>
<view class='conter' v-if="description" style="min-height:50rpx;">
<!-- #ifndef APP-PLUS -->
<jyf-parser v-if="description.type == 0 && typeof description.content == 'string'" :domain='domain'
:html="description.content.replace(/<br\/>/ig, '')" ref="article"
<jyf-parser v-if="description.type == 0 && typeof description.content == 'string'"
:domain='domain' :html="description.content.replace(/<br\/>/ig, '')" ref="article"
:tag-style="tagStyle"></jyf-parser>
<!-- #endif -->
<!-- #ifdef APP-PLUS -->
<view v-if="description.type == 0 && typeof description.content == 'string'" class="description"
v-html="description.content.replace(/<br\/>/ig, '')"></view>
<view v-if="description.type == 0 && typeof description.content == 'string'"
class="description" v-html="description.content.replace(/<br\/>/ig, '')"></view>
<!-- #endif -->
<view v-else class="product_content">
<view v-if="description.content && description.content.title" class="product_content_title">
{{description.content.title}}
<view v-if="description.content && description.content.title"
class="product_content_title">
{{description.content.title}}
</view>
<block v-if="description.content && description.content.image">
<image v-for="(item,index) in description.content.image" :key="index" :src="item" mode="widthFix" style="background-color: #fff;width: 100vw;">
<image v-for="(item,index) in description.content.image" :key="index" :src="item"
mode="widthFix" style="background-color: #fff;width: 100vw;">
</image>
</block>
</view>
@ -311,7 +313,7 @@
<view style='height:120rpx;'></view>
</scroll-view>
</view>
<view class='footer acea-row row-between-wrapper'>
<!-- <view class='footer acea-row row-between-wrapper'>
<view v-if="storeInfo.merchant && storeInfo.merchant.services_type == 1" class="item skeleton-rect"
@click="call">
<view class="iconfont icon-kefu"></view>
@ -355,7 +357,7 @@
<button v-else class='buy bnts sold_out' form-type="submit" disabled>商品已售罄</button>
</form>
</view>
</view>
</view> -->
<block v-if="sharePacket.max&&sharePacket.max>0">
<shareRedPackets :sharePacket="sharePacket" @listenerActionSheet="listenerActionSheet"
@closeChange="closeChange" :showAnimate="showAnimate" @boxStatus="boxStatus"></shareRedPackets>
@ -631,7 +633,6 @@
])),
},
onLoad(options) {
// console.log(options)
this.referer = options.referer
if (options.product_type) {
this.product_type = options.product_type
@ -682,6 +683,7 @@
} else {
this.id = options.id
}
//广uid
if (options.spid) app.globalData.spid = options.spid;
// #endif
@ -1059,14 +1061,16 @@
}
that.$set(that, 'storeInfo', storeInfo);
that.$set(that, 'description', storeInfo.content);
if(typeof that.description.content == 'string'){
try{
that.description.content = JSON.parse(that.description.content);
}catch(e){
console.log(e);
}
}
if (that.description.type == 0 && typeof that.description.content == 'string') {
if (storeInfo.content && typeof that.description.content == 'string') {
try {
that.description.content = JSON.parse(that.description.content);
} catch (e) {
console.log(e);
}
}
if (that.description && that.description.type && that.description.type == 0 && typeof that
.description
.content == 'string') {
that.description.content = that.description.content.replace(
/<img/gi,
'<img style="max-width:100%;height:auto;float:left;display:block" '
@ -1121,6 +1125,7 @@
that.getCouponList();
})
}).catch(err => {
console.log(err);
//
return that.$util.Tips({
title: err
@ -2528,20 +2533,22 @@
}
}
.product_content{
background-color: #fff;
&_title{
width: 100%;
height: auto;
line-height: 50rpx;
padding: 28rpx;
word-wrap: break-word;
text-align: center;
}
image{
width: 750rpx;
// height: auto;
// height: 750rpx;
}
}
.product_content {
background-color: #fff;
&_title {
width: 100%;
height: auto;
line-height: 50rpx;
padding: 28rpx;
word-wrap: break-word;
text-align: center;
}
image {
width: 750rpx;
// height: auto;
// height: 750rpx;
}
}
</style>

View File

@ -436,7 +436,6 @@
orderStatistics,
otherOrderStatistics,
getOrderList
} from "@/api/admin";
import {
ENV
@ -876,6 +875,7 @@
//
this.$bus.$off('value-updated')
},
methods: {
//
handleToWithDraw(item, index) {
@ -1314,6 +1314,17 @@
} else {
this.isgShow = true
}
if (res.data.mer_info.news_unread) {
uni.setTabBarBadge({
index: 1,
text: String(res.data.mer_info.news_unread)
})
} else { //
uni.removeTabBarBadge({
index: 1
})
}
if (res.data.mer_info.length == 0) {
//
uni.reLaunch({
@ -1432,7 +1443,6 @@
this.countDown()
}
}
} else {
switch (item.type) {
case 1:
@ -2487,6 +2497,7 @@
.list-two_left {
width: 175rpx;
height: 175rpx;
image {
width: 100%;
height: 100%;

View File

@ -507,12 +507,12 @@
methods: {
//
handleToWithDraw(item, index) {
let url;
if(index<2) url = "/pages/users/embody/embody?mer_id=" + this.userInfoData.service.mer_id;
else url = `/pages/admin/orderList/index?merId=${this.userInfoData.service.mer_id}&types=2`
uni.navigateTo({
url: url
})
let url;
if (index < 2) url = "/pages/users/embody/embody?mer_id=" + this.userInfoData.service.mer_id;
else url = `/pages/admin/orderList/index?merId=${this.userInfoData.service.mer_id}&types=2`
uni.navigateTo({
url: url
})
},
//
initTypeLiseMenu() {
@ -864,6 +864,7 @@
},
//
getindex() {
let that = this;
const data = {
product_type: this.where1.product_type
}