zouyanyan 3 weeks ago
commit a04e88a03b

@ -230,10 +230,10 @@
this.reconnecting = true;
// token
uni.$http.get('/api/getInfo').then((res) => {
uni.showToast({
title: '连接已断开,尝试重新连接...',
icon: 'none'
})
// uni.showToast({
// title: '...',
// icon: 'none'
// })
//
let token = uni.getStorageSync("token");
wsApi.reconnect(this.$wsUrl, token);
@ -416,10 +416,10 @@
this.$store.dispatch('friendStore/loadFriend'),
this.$store.dispatch('groupStore/loadGroup')
]).then(() => {
uni.showToast({
title: "已重新连接",
icon: 'none'
});
// uni.showToast({
// title: "",
// icon: 'none'
// });
// 线
const chatState = this.$store.state.chatStore;
this.pullPrivateOfflineMessage(chatState.privateMsgMaxId);
@ -431,6 +431,10 @@
},
loadFriendInfo(id, callback) {
let friend = this.$store.getters['friendStore/findFriend'](id)
if (!friend) {
this.$store.dispatch('friendStore/loadFriend')
friend = this.$store.getters['friendStore/findFriend'](id)
}
if (!friend) {
console.log("未知用户:", id)
friend = {

@ -67,7 +67,7 @@
<view class="voice-bg" :class="{displaynone:!voicebg}">
<view class="voice-bg-len">
<view class="voice-bg-time" :style="{width:vlength/0.6+'%'}">
{{vlength}}
{{vlength<=50?60-vlength:60-vlength+'秒后自动发送'}}
</view>
<view class="voice-del">上滑取消录音</view>
</view>
@ -340,8 +340,7 @@ export default {
this.vlength = i;
i++;
//
if (i > 60) {
clearInterval(this.timer);
if (i >= 60) {
this.touchend();
}
}, 1000)

@ -404,7 +404,7 @@
"path": "pages/book/bookshop",
"style" :
{
"navigationBarTitleText": "预约学员",
"navigationBarTitleText": "全店预约学员",
"enablePullDownRefresh": false
}
},

@ -11,15 +11,15 @@
{{item.courseName}}
</view>
<view class="hright">
{{item.startTime+'-'+item.endTime}}
{{formatTime(item.startTime)+' - '+formatTime(item.endTime)}}
</view>
</view>
<view class="oscon">
<view class="osimg imgload">
<image class="osimg" v-if="item.pic" :src="getimgRemoteFile(item.pic)" mode="aspectFill"></image>
</view>
<view class="osname">
<view class="osname" >
<view class="osimg imgload" >
<image v-if="item.pic" :src="getimgRemoteFile(item.pic)" mode="aspectFill"></image>
</view>
<view class="oscell">
<!-- <view v-if="item.claName=='团课'" class="txtbg">{{item.claName}}</view>
<view v-else class="txtbg1">{{item.claName?item.claName:'--'}}</view> -->
@ -157,6 +157,10 @@
}
},
methods: {
formatTime(timeStr) {
// timeStr "HH:MM:SS"
return timeStr.slice(0, 5); // 5 "HH:MM"
},
getimgRemoteFile(img){
if(img){
img=img.split(',')[0];
@ -321,11 +325,17 @@
flex-direction: row;
justify-content: center;
align-items: center;
.osimg{
width: 120rpx;
height: 120rpx;
border-radius: 10rpx;
}
.osimg{
margin-left: 24%;
width: 300rpx;
height: 300rpx;
margin-right: 10rpx;
>image {
width: 300rpx;
height: 300rpx;
border-radius: 10rpx;
}
}
.osrcon{
display: flex;
flex-direction: column;
@ -341,6 +351,7 @@
padding-bottom: 15rpx;
}
.oscell{
display: flex;
flex-direction: row;
align-items: center;
@ -472,11 +483,17 @@
flex-direction: row;
justify-content: center;
align-items: center;
.osimg{
width: 160rpx;
height: 260rpx;
border-radius: 10rpx;
}
.osimg{
margin-left: 24%;
width: 300rpx;
height: 300rpx;
margin-right: 10rpx;
>image {
width: 300rpx;
height: 300rpx;
border-radius: 10rpx;
}
}
.osname{
display: flex;
flex: 1;

@ -39,7 +39,7 @@
</view>
<view class="oscell">
上课时间
<text class="txt">{{ (info.claDate?info.claDate:'')+' '+ (info.startTime?info.startTime:'') + (info.endTime?'-'+info.endTime:'') }}</text>
<text class="txt">{{ (info.claDate?info.claDate:'')+' '+ (info.startTime?formatTime(info.startTime):'') + (info.endTime?'-'+formatTime(info.endTime):'') }}</text>
</view>
<view class="oscell" v-if="info.claTimeStatus">
课程状态
@ -181,6 +181,10 @@
}
},
methods: {
formatTime(timeStr) {
// timeStr "HH:MM:SS"
return timeStr.slice(0, 5); // 5 "HH:MM"
},
copydo(text){
if (!text) {
uni.showToast({

@ -44,21 +44,21 @@
<view class="srcon">
<uni-easyinput type="textarea" v-model="value" placeholder="对于本次课程是否满意?请输入评价内容!"></uni-easyinput>
</view>
<view class="fcon">
<view class="pfcon">
<view class="pftxt">课程评价</view>
<uni-rate v-model="rateValue1" @change="onChange1" />
</view>
<view class="pfcon">
<view class="pftxt">教练评价</view>
<uni-rate v-model="rateValue2" @change="onChange2" />
</view>
<view class="pfcon">
<view class="pftxt">教室评价</view>
<uni-rate v-model="rateValue3" @change="onChange3" />
</view>
</view>
<!-- -->
<!-- <view class="fcon">-->
<!-- <view class="pfcon">-->
<!-- <view class="pftxt">课程评价</view>-->
<!-- <uni-rate v-model="rateValue1" @change="onChange1" />-->
<!-- </view>-->
<!-- <view class="pfcon">-->
<!-- <view class="pftxt">教练评价</view>-->
<!-- <uni-rate v-model="rateValue2" @change="onChange2" />-->
<!-- </view>-->
<!-- <view class="pfcon">-->
<!-- <view class="pftxt">教室评价</view>-->
<!-- <uni-rate v-model="rateValue3" @change="onChange3" />-->
<!-- </view>-->
<!-- </view>-->
<view class="submitcon">
<button type="primary" class="bbtn" @click="submit('valiForm')"></button>

@ -21,6 +21,7 @@
<view v-else-if="item.bookStatus==2" class="htip">待上课</view>
<view v-else-if="item.bookStatus==4" class="wtip">已完成</view>
<view v-else-if="item.bookStatus==3" class="ctip">已取消</view>
<view v-else-if="item.bookStatus==5" class="ctip">预约失败</view>
</view>
</view>
@ -199,7 +200,7 @@
async stopdodo(item){
var param={
"bookId": item.bookId,
"bookStatus": 2
"bookStatus": 5
};
uni.showLoading({
title: '禁止预约中...'
@ -251,7 +252,7 @@
async checkdodo(item){
var param={
"bookId": item.bookId,
"bookStatus": 1
"bookStatus": 2
};
uni.showLoading({
title: '确认预约中...'

@ -21,6 +21,7 @@
<view v-else-if="item.bookStatus==2" class="htip">待上课</view>
<view v-else-if="item.bookStatus==4" class="wtip">已完成</view>
<view v-else-if="item.bookStatus==3" class="ctip">已取消</view>
<view v-else-if="item.bookStatus==5" class="ctip">预约失败</view>
</view>
</view>
@ -28,13 +29,13 @@
<view class="osname">
<view>
<text class="txt">课程{{item.courseName}}</text>
<text class="txt" style="margin-left: 30rpx;">班级{{item.claName}} </text>
<!-- <text class="txt" style="margin-left: 30rpx;">班级{{item.claName}} </text>-->
</view>
<view>
<text class="txt">教练{{item.teacherName }}</text>
<text class="txt" style="margin-left: 30rpx;">教室{{item.roomName}}</text>
</view>
<text class="txt">上课时间{{ item.claDate+' '+item.startTime+(item.endTime?'-'+item.endTime:'')}}</text>
<text class="txt">上课时间{{ item.claDate+' '+formatTime(item.startTime)+(item.endTime?'-'+formatTime(item.endTime):'')}}</text>
<view>
<text class="txt">预约人数{{item.bookAttendCnt}}</text>
<text class="txt" style="margin-left: 30rpx;">可容纳人数{{item.atClassCnt}} </text>
@ -106,6 +107,10 @@
},100);
},
methods: {
formatTime(timeStr) {
// timeStr "HH:MM:SS"
return timeStr.slice(0, 5); // 5 "HH:MM"
},
getimgRemoteFile(img){
if(img){
img=img.split(',')[0];
@ -199,7 +204,7 @@
async stopdodo(item){
var param={
"bookId": item.bookId,
"bookStatus": 2
"bookStatus": 5
};
uni.showLoading({
title: '禁止预约中...'

@ -2,7 +2,7 @@
<view class="page">
<view class="fixhead" :style="{ marginTop: geStatusBarHeight() + 'px'}">
<selShop :showName="false" :showQR="true" :shopid="shopid" :shop="shop" @changeArea="changeArea"></selShop>
<selShop :showName="true" :showQR="false" :shopid="shopid" :shop="shop" @changeArea="changeArea"></selShop>
</view>
<scroll-view class="scrolllist" scroll-x="true" scroll-with-animation :scroll-left="scrollLeft">
@ -99,7 +99,6 @@
<button type="primary" class="btn" @click="submit('valiForm')"></button>
</view>
</scroll-view>
<!-- 体质测评 -->
<scroll-view v-else-if="list[index].id==10" scroll-y style="height: 100%;width: 100%;">
<view class="tzcontent">

@ -380,7 +380,7 @@ export default {
const that = this;
if (this.isConnected) return;
uni.connectSocket({
url: 'ws://192.168.13.9:8528/im',
url: 'wss://www.sanduolantoyoga.com/yoga-imserver',
header: { Authorization: uni.getStorageSync('token') },
success: (res) => {
console.log('socket连接成功', res);

@ -111,7 +111,7 @@ export default {
}, 500)
},
methods: {
...mapActions('chatStore', ['removeChat', 'moveTop']),
...mapActions('chatStore', ['removeChat', 'moveTop','loadFriend']),
//
setBadge(count) {

@ -52,24 +52,24 @@
{{product.remarks}}
</view>
</view>
<view class="pjcon">
<view class="pjitem">
<view class="pjyg">评价{{product.pjnum}}</view>
<view class="srpj" v-if="product.pjnum>0">
查看全部评价<uni-icons type="forward" color="#b3b3b3" size="20"></uni-icons>
</view>
</view>
<view class="pjitem" v-if="product.pjnum>0">
<view class="pjr">
<image class="img" :src="product.pjrimg"></image>
<text class="ptxt">{{product.pjname}}</text>
<text class="ptxt">{{product.pjdate}}</text>
</view>
</view>
<view class="pjitem">
{{product.pjcontent}}
</view>
</view>
<!-- <view class="pjcon">-->
<!-- <view class="pjitem">-->
<!-- <view class="pjyg">评价{{product.pjnum}}</view>-->
<!-- <view class="srpj" v-if="product.pjnum>0">-->
<!-- 查看全部评价<uni-icons type="forward" color="#b3b3b3" size="20"></uni-icons>-->
<!-- </view>-->
<!-- </view>-->
<!-- <view class="pjitem" v-if="product.pjnum>0">-->
<!-- <view class="pjr">-->
<!-- <image class="img" :src="product.pjrimg"></image>-->
<!-- <text class="ptxt">{{product.pjname}}</text>-->
<!-- <text class="ptxt">{{product.pjdate}}</text>-->
<!-- </view>-->
<!-- </view>-->
<!-- <view class="pjitem">-->
<!-- {{product.pjcontent}}-->
<!-- </view>-->
<!-- </view>-->
<view>
<button type="primary" class="cbtn" @tap="gotoCourse()"></button>
</view>

@ -6,7 +6,7 @@
<view class="leftarr">
<uni-icons type="back" size="24" color="#fff" @tap="gotoBack"></uni-icons>
</view>
<selShop :showName="false" :showQR="true" :shopid="shopid" :shop="shop" @changeArea="changeArea"></selShop>
<selShop :showName="true" :showQR="false" :shopid="shopid" :shop="shop" @changeArea="changeArea"></selShop>
</view>
<view class="hcon">
<uni-search-bar @confirm="search" @input="input" :focus="false" @focus="focus" v-model="searchValue"

@ -24,16 +24,16 @@
</view>
<!-- 标签信息 -->
<view class="tips">
<view class="tip">
<image class="tip-img" src="/static/image/bz.png" mode="aspectFill"></image>
<text class="tip-txt">商家24H发货,第三方物流配送,免运费</text>
</view>
<view class="tip">
<image class="tip-img" src="/static/image/thh.png" mode="aspectFill"></image>
<text class="tip-txt">不支持7天无理由退换货</text>
</view>
</view>
<!-- <view class="tips">-->
<!-- <view class="tip">-->
<!-- <image class="tip-img" src="/static/image/bz.png" mode="aspectFill"></image>-->
<!-- <text class="tip-txt">商家24H发货,第三方物流配送,免运费</text>-->
<!-- </view>-->
<!-- <view class="tip">-->
<!-- <image class="tip-img" src="/static/image/thh.png" mode="aspectFill"></image>-->
<!-- <text class="tip-txt">不支持7天无理由退换货</text>-->
<!-- </view>-->
<!-- </view>-->
<!-- 商品信息 -->
<view class="s-list">
@ -67,24 +67,24 @@
<uni-icons type="forward" color="#b3b3b3" size="20"></uni-icons>
</view>
<view class="pjcon">
<view class="pjitem">
<view class="pjyg">评价{{product.pjnum}}</view>
<view class="srpj" v-if="product.pjnum>0">
查看全部评价<uni-icons type="forward" color="#b3b3b3" size="20"></uni-icons>
</view>
</view>
<view class="pjitem" v-if="product.pjnum>0">
<view class="pjr">
<image class="img" :src="product.pjrimg"></image>
<text class="ptxt">{{product.pjname}}</text>
<text class="ptxt">{{product.pjdate}}</text>
</view>
</view>
<view class="pjitem">
{{product.pjcontent}}
</view>
</view>
<!-- <view class="pjcon">-->
<!-- <view class="pjitem">-->
<!-- <view class="pjyg">评价{{product.pjnum}}</view>-->
<!-- <view class="srpj" v-if="product.pjnum>0">-->
<!-- 查看全部评价<uni-icons type="forward" color="#b3b3b3" size="20"></uni-icons>-->
<!-- </view>-->
<!-- </view>-->
<!-- <view class="pjitem" v-if="product.pjnum>0">-->
<!-- <view class="pjr">-->
<!-- <image class="img" :src="product.pjrimg"></image>-->
<!-- <text class="ptxt">{{product.pjname}}</text>-->
<!-- <text class="ptxt">{{product.pjdate}}</text>-->
<!-- </view>-->
<!-- </view>-->
<!-- <view class="pjitem">-->
<!-- {{product.pjcontent}}-->
<!-- </view>-->
<!-- </view>-->
<view class="ocen">
<view class="title">商品参数</view>

@ -2,7 +2,7 @@
<view class="page">
<view class="fixhead" :style="{ marginTop: geStatusBarHeight() + 'px'}">
<selShop :showName="false" :showQR="true" :shopid="shopid" :shop="shop" @changeArea="changeArea"></selShop>
<selShop :showName="true" :showQR="false" :shopid="shopid" :shop="shop" @changeArea="changeArea"></selShop>
<view @tap="gotoSearch" >
<uni-search-bar v-model="searchValue" placeholder="请输入关键字" bg-color="#FFFFFF" :readonly="true"></uni-search-bar>
</view>

@ -36,7 +36,7 @@
<view class="olist">
<view class="tip">
<text style="color:#000;font-weight: 600;">包裹{{index+1}}快递发货</text>
<text style="margin-left: 10rpx;">商家24H发货第三方物流配送 免运费</text>
<!-- <text style="margin-left: 10rpx;">商家24H发货第三方物流配送 免运费</text>-->
</view>
<view class="oscon">
<view class="osimg imgload">

@ -33,30 +33,29 @@
<scroll-view scroll-y style="height: 100%;width: 100%;">
<view class="scell" v-if="tabItem.slist.length>0">
<view v-for="(item, index) in tabItem.slist" :key="index" class="oitem">
<view class="otop">
<view class="hleft">
{{item.courseName||'-'}}
{{item.storeName||'-'}}
</view>
<view class="hright">
{{item.startTime+'-'+item.endTime}}
{{formatTime(item.startTime)+' - '+formatTime(item.endTime)}}
</view>
</view>
<view class="oscon">
<view class="osimg imgload">
<image class="osimg" v-if="item.pic" :src="getimgRemoteFile(item.pic)" mode="aspectFill"></image>
<image v-if="item.pic" :src="getimgRemoteFile(item.pic)" mode="aspectFill"></image>
</view>
<view class="osname">
<view class="oscell">
<!-- <view v-if="item.claName=='团课'" class="txtbg">{{item.claName}}</view>
<view v-else class="txtbg1">{{item.claName}}</view> -->
<view v-if="item.claName" class="txtbg1">{{item.claName}}</view>
<uni-rate :size="15" :readonly="true" :value="item.star?item.star:5" :max="5"/>
<!-- <view v-if="item.claName" class="txtbg1">{{item.claName}}</view>-->
<uni-rate :size="15" :readonly="true" :value="item.star?item.star:0" :max="5"/>
</view>
<view class="oscell" v-if="item.storeName">
<uni-icons type="paperclip" size="18" color="#00A99A"></uni-icons>
<view class="ntip">{{item.storeName}}</view>
<view class="ntip">{{item.courseName}}</view>
</view>
<view class="oscell">
<uni-icons type="calendar" size="18" color="#00A99A"></uni-icons>
@ -82,7 +81,7 @@
</view>
<view class="rcpm">
<button type="primary" class="orderbtn" @click="gotoorder(item)"></button>
<button type="primary" class="sharebtn" @click="gotoshare(item)"></button>
<!-- <button type="primary" class="sharebtn" @click="gotoshare(item)"></button>-->
</view>
</view>
@ -141,8 +140,8 @@
<view class="ctxt">{{dd.claName}}</view>
<view class="ctxt" v-if="dd.staffName">{{dd.staffName}}</view>
<view class="ctxt" v-if="dd.roomName">{{dd.roomName}}</view>
<button v-if="dd.claTimeStatus=='1'" type="primary" class="orderbtn" @click="gotoorder(dd)"></button>
<view v-else class="noorderbtn">不可预约</view>
<button v-if="dd.claTimeStatus=='1'" type="primary" class="orderbtn" style="width: 80%;" @click="gotoorder(dd)"></button>
<!-- <view v-else class="noorderbtn">不可预约</view>-->
</view>
</block>
</block>
@ -679,6 +678,10 @@
},100);
},
methods: {
formatTime(timeStr) {
// timeStr "HH:MM:SS"
return timeStr.slice(0, 5); // 5 "HH:MM"
},
closeDialog(){
this.$refs.pfDialog.close();
},
@ -1067,9 +1070,14 @@
align-items: center;
width: 100%;
.osimg{
width: 160rpx;
height: 260rpx;
border-radius: 10rpx;
width: 200rpx;
height: 200rpx;
margin-right: 10rpx;
>image {
width: 200rpx;
height: 200rpx;
border-radius: 10rpx;
}
}
.osname{
display: flex;

@ -528,16 +528,16 @@
return { intPart, decimalPart };
},
navToList(item){
if(item.type==1){
uni.navigateTo({
url: `/pages/product/detail?id=${item.id}`
})
}
else if(item.type==2){
uni.navigateTo({
url: `/pages/product/cdetail?id=${item.id}`
})
}
if(item.isCourse==1){
uni.navigateTo({
url: `/pages/product/cdetail?id=${item.id}`
})
}
else {
uni.navigateTo({
url: `/pages/product/detail?id=${item.id}`
})
}
},
gotoBack(){
//

@ -1,10 +1,10 @@
<template>
<view class="page">
<view class="swiper-bg">
<uni-search-bar @confirm="search" :focus="false" v-model="searchValue" placeholder="请输入关键字"
bg-color="#FFFFFF" @cancel="cancel" @clear="clear">
</uni-search-bar>
</view>
<!-- <view class="swiper-bg">-->
<!-- <uni-search-bar @confirm="search" :focus="false" v-model="searchValue" placeholder="请输入关键字" -->
<!-- bg-color="#FFFFFF" @cancel="cancel" @clear="clear">-->
<!-- </uni-search-bar>-->
<!-- </view>-->
<!-- 列表 -->
<view class="f-list">
<view class="guess-section" v-if="goodsList.length>0">
@ -29,34 +29,54 @@
</view>
</view>
<view class="pcon">
<view class="ptxt" style="width: 280rpx;">
课程{{item.courseName}}
</view>
<view class="ptxt">
收费模式{{ item.chargeType?retStr(item.chargeType):'其他' }}
<view class="ptxt" style="width: 350rpx;">
卡号{{item.cardNo}}
</view>
</view>
<view class="pcon">
<view class="ptxt">
次数{{item.count}}
</view>
<view class="ptxt">
收费模式{{ item.chargeType?retStr(item.chargeType):'其他' }}
</view>
</view>
<view class="pcon">
<view class="ptxt">
时间{{item.days}}
</view>
<view v-if="item.chargeType == 'count'">
<view class="ptxt" >
总次数{{item.count}}
</view>
<view class="ptxt" >
剩余次数{{item.remainingCount}}
</view>
</view>
<view v-if="item.chargeType == 'count'" >
<view class="ptxt" >
总天数{{item.days}}
</view>
<view class="ptxt" >
剩余天数{{item.remainingDays}}
</view>
</view>
<view v-if="item.chargeType == 'total_fee'">
<view class="ptxt" >
储值金额{{item.totalFee}}
</view>
<view class="ptxt" >
剩余金额{{item.remainingTotalFee}}
</view>
</view>
</view>
<view class="pcon">
<view class="ptxt" style="width: 280rpx;">
<view class="ptxt" >
收费{{item.receiptFee}}
</view>
<view class="ptxt">
储值{{item.totalFee}}
</view>
</view>
<view class="pcon">
<view class="pcon" v-if="item.expireDate">
<view class="ptxt" style="width: 300rpx;">
激活日期{{item.beginDate? item.beginDate:'未激活'}}
</view>
<view class="ptxt">
有限期限{{(item.beginDate?item.beginDate:' — ')+'至'+(item.expireDate?item.expireDate:' — ')}}
到期日期{{item.expireDate}}
</view>
</view>
</view>
@ -228,7 +248,7 @@
}
if (res1.data&&res1.data.length>0) {
this.loadStatus="noMore";
this.contentText.contentnomore="没有数据了...";
this.contentText.contentnomore="";
this.goodsList=res1.data;
this.$forceUpdate();
}

@ -59,12 +59,12 @@
<view class="title">{{servers[5].name}}</view>
</view>
<!-- 设置 -->
<view class="product-item" @click="gotoServe(0)">
<view class="image-wrapper">
<image class="imgicon" :src="servers[0].img" mode="aspectFill" lazy-load></image>
</view>
<view class="title">{{servers[0].name}}</view>
</view>
<!-- <view class="product-item" @click="gotoServe(0)">-->
<!-- <view class="image-wrapper">-->
<!-- <image class="imgicon" :src="servers[0].img" mode="aspectFill" lazy-load></image>-->
<!-- </view>-->
<!-- <view class="title">{{servers[0].name}}</view>-->
<!-- </view>-->
<!-- 收货地址 -->
<view class="product-item" @click="gotoServe(1)">
<view class="image-wrapper">
@ -290,8 +290,8 @@
},
{
key:13,
img:'../../static/image/yyjl.png',
name:'预约学员',//
img:'../../static/image/sj.png',
name:'全店预约学员',//
},
{
key:14,

Loading…
Cancel
Save