调试接口

This commit is contained in:
Mr.jiang 2024-06-24 11:29:11 +08:00
parent 6019afb30e
commit 0d5dc4dded
39 changed files with 11306 additions and 846 deletions

View File

@ -2,9 +2,13 @@
// const ROOTPATH1 = "http://120.46.52.165/sqx_fast";
// const ROOTPATH3 = "wss://120.46.52.165/wss/websocket/";
const ROOTPATH3 = "wss://192.168.2.222:8187/wss/websocket/";
const ROOTPATH = "http://192.168.2.222:8187/sqx_fast";
const ROOTPATH1 = "http://192.168.2.222:8187/sqx_fast";
const ROOTPATH3 = "wss://192.168.2.222:8187/wss/websocket/";
// const ROOTPATH = "http://192.168.2.13:8187/sqx_fast";
// const ROOTPATH1 = "http://192.168.2.13:8187/sqx_fast";
// const ROOTPATH3 = "wss://192.168.2.13:8187/wss/websocket/";
// const ROOTPATH = "http://192.168.1.169:8187/sqx_fast";
// const ROOTPATH1 = "http://192.168.1.169:8187/sqx_fast";
@ -35,6 +39,7 @@ const TX_MAP_KEY = 'VIWBZ-5OM3F-CV7JZ-NLKJY-AXSYV-TMFM6';
//const TX_MAP_KEY = '55UBZ-STNK4-DSNUM-F4A75-Q7BC5-FRBMS';
//ws基础连接地址
// const WS_BASE_PATH = 'ws://192.168.2.13:8187/sqx_fast/';
const WS_BASE_PATH = 'ws://192.168.2.222:8187/sqx_fast/';
// const WS_BASE_PATH = 'ws://120.46.52.165/sqx_fast/';
// const WS_BASE_PATH = 'wss://admin.sjajk.com/sqx_fast/';//生产需替换

View File

@ -21,12 +21,14 @@ module.exports = {
// return 'https://admin.sjajk.com'//生产需替换
// return 'http://120.46.52.165'
return 'http://192.168.2.222:8187'
// return 'http://192.168.2.13:8187'
},
//全局域名 部分html中需要单独替换 需要修改config中的网络请求域名
publicYuMingApp() {
// return 'https://wx.sjajk.com'//生产需替换
// return 'http://120.46.52.165'
return 'http://192.168.2.222:8187'
// return 'http://192.168.2.13:8187'
},
logout() {
this.remove("token");

View File

@ -0,0 +1,202 @@
<template>
<view style="width: 100%;" class="refresh-body" @touchmove.stop.prevent>
<scroll-view scroll-y @scroll="scroll" @touchstart="touchstart" @scrolltolower="loadMore" @touchmove="touchmove" @touchend="touchend" class="refresh-scroll">
<view class="content">
<!-- 内容 -->
<slot name="content"></slot>
<!-- 上拉加载 -->
<view class="t-loading-box" v-if="loadingType!=3&&openLoadMore" @click="loadMore">
<view class="t-line"></view>
<view class="t-loading-text">
<view class="loading" v-if="loadingType==2"></view>
<text>{{loadingText[loadingType]}}</text>
</view>
<view class="t-line"></view>
</view>
</view>
</scroll-view>
</view>
</template>
<script>
export default {
name:'t-refresh',
props:{
//
height: {
type: String,
default: '100vh'
},
//padding tabs
tPadding: {
type: Number,
},
//
openLoadMore:{
type: Boolean,
default: true
},
// 0 1 2 3
loadingType: {
type : Number,
default: 0
},
//
loadingText : {
type : Array,
default :()=>{
return ["上拉或点击加载更多","已加载全部数据",'加载中','']
}
},
},
data() {
return {
icon_class:'',
top:-90,
touchstart_num:0, //
touchmove_num:0, //
move_number:0, //
rotate_number:0,
timer:null,
is_refresh:false, //
move_timer:null,
};
},
methods: {
scroll(e){
e.detail.scrollTop>20?this.is_refresh=true:this.is_refresh=false
},
//
loadMore(e) {
if(this.openLoadMore){
this.$emit("loadMore")
}
},
//
touchstart(e){
this.touchstart_num=e.touches[0].clientY
},
//
touchmove(e){
if(!this.is_refresh&&e.touches.length<=1&&this.openRefresh){
this.move_number=e.touches[0].clientY-this.touchstart_num
this.rotate_number=this.move_number*2
if(this.move_number<120){
this.top=(this.move_number)/1-90
}else if(120<=this.move_number&&this.move_number<=170){
this.top=(this.move_number)/4
}else{
this.top=(this.move_number)/60+40
}
clearTimeout(this.timer)
this.timer = setTimeout(()=>{
this.touchmove_num=e.touches[0].clientY
},500)
}
},
//
touchend(e){
if(this.is_refresh||e.touches.length>=1||!this.openRefresh){return}
if(this.move_number>170){
this.icon_class='refresh-icon-active'
this.top+=Number(this.tPadding)/2
this.is_refresh=true
this.$emit('refresh')
this.move_timer=setInterval(()=>{
this.rotate_number+=8
},10)
}else{
this.move_timer=setInterval(()=>{
this.top-=8
if(this.top<=-90){
clearInterval(this.move_timer)
}
},10)
}
},
//
endRefresh(){
this.top=-90
this.icon_class=''
this.move_number=this.rotate_number=0
this.is_refresh=false
clearInterval(this.move_timer)
},
}
};
</script>
<style lang="scss" >
.refresh-body{
box-sizing: border-box;
height: auto !important;
padding-top: 0px !important;
.refresh-scroll{
position: relative;
height: 100%;
}
.refresh-icon{
width: 80upx;
height: 80upx;
text-align: center;
line-height: 80upx;
border-radius: 50%;
background: #FFFFFF;
box-shadow: 0px 0px 10rpx 0px rgba(0, 0, 0, 0.2);
position: absolute;
left: 50%;
color: #00aa7f;
z-index: 9999999999;
display: flex;
align-items: center;
justify-content: center;
.iconfont{
font-size: 36upx;
}
image{
width: 36upx;
}
}
.refresh-icon-active{
position: fixed;
}
.content{
height: 100%;
}
.t-loading-box{
display: flex;
align-items: center;
justify-content: center;
flex-direction: row;
line-height:80upx;
font-size: 26upx;
width: 100%;
padding-bottom:20upx;
color: #888888;
.t-loading-text{
padding: 0 10upx;
display: flex;
align-items: center;
flex-direction: row;
}
.loading {
width:25upx;
height:25upx;
border:2.5upx solid #888888;
border-bottom:#ffffff 2.5upx solid;
border-radius:50%;
margin-right: 15upx;
animation:grace-rotate360 1200ms infinite linear;
}
.t-line{
margin: 0px;
border-bottom: 1px solid rgb(212, 212, 212);
width: 20px;
transform: scaleY(0.5);
border-top-color: rgb(212, 212, 212);
border-right-color: rgb(212, 212, 212);
border-left-color: rgb(212, 212, 212);
}
}
@keyframes grace-rotate360{0%{transform:rotate(0deg);} 50%{transform:rotate(180deg);} 100%{transform:rotate(360deg);}}
}
</style>

View File

@ -1,6 +1,6 @@
{
"name" : "盛安到家",
"appid" : "H56D02895",
"appid" : "__UNI__0A81F4F",
"description" : "",
"versionName" : "1.0.1",
"versionCode" : 101,
@ -184,8 +184,9 @@
"key" : "2acf1b8c3d1aaf0070472dec19018d96",
"securityJsCode" : "2b07c8496878c327a8ae7a19de33e2a7",
// "serviceHost" : "http://wx.sjajk.com/_AMapService"//
// "serviceHost" : "http://120.46.52.165/_AMapService"
"serviceHost" : "http://192.168.2.222:8187/_AMapService"
// "serviceHost" : "http://120.46.52.165/_AMapService"
"serviceHost" : "http://192.168.2.222:8187/_AMapService"
// "serviceHost" : "http://192.168.2.13:8187/_AMapService"
}
}
},

View File

@ -1,5 +1,5 @@
<template>
<view>
<view class="content">
<!-- #ifdef MP-WEIXIN -->
<view class="part1">
<view class="mobile">
@ -27,6 +27,7 @@
</view>
<view class="btn" @click="bindhelp">确定</view>
</view>
<!-- #endif -->
<!-- <view style="margin-top: 20upx;background-color: #FFFFFF;height: max-content;padding: 20upx 20upx 20upx 35upx;">
<input type="text" placeholder="收货人" style="height: 80upx;color: #000000;font-size: 30upx;" v-model="consignee" />
<input type="number" placeholder="手机号码" maxlength="11" style="height: 80upx;margin-top: 20upx;color: #000000;font-size: 30upx;"
@ -35,8 +36,6 @@
<pickerAddress style="padding-bottom: 20upx;color: #000000;font-size: 30upx;height: 30upx;" @change="change">{{provinces}}</pickerAddress>
<input type="text" v-model="detail" placeholder="详情地址:如道路,门牌号,小区,楼栋号,单元室等" style="height: 80upx;margin-top: 30upx;color: #000000;font-size: 30upx;" />
</view> -->
<!-- #endif -->
<!-- #ifndef MP-WEIXIN -->
<view class="part1">
<view class="part1-top">
@ -141,16 +140,15 @@
},
shengcheng(longitude, latitude) {
this.$Request.getT('/app/Login/selectCity?lat=' + latitude + '&lng=' + longitude).then(res => {
// console.log(res)
console.log(res)
if (res.code === 0) {
this.cityaddress = res.data.province + res.data.city + res.data.district
// console.log(this.address)
console.log(this.cityaddress)
this.province = res.data.province
this.city = res.data.city
this.district = res.data.district
}
});
},
getAddressList(id) {
uni.showLoading({
@ -267,6 +265,14 @@
</script>
<style scoped>
/deep/uni-page-refresh{
display: none !important;
}
.content{
width: 100%;
height: 100vh;
background: #f7f7f7;
}
.part1-bottom{
width: 100%;
padding:10px;

View File

@ -81,14 +81,16 @@
},
methods: {
goBackByAddress(addressId) {
console.log(addressId)
// console.log("addressId",addressId)
this.$queue.setData('EditAddress', addressId);
console.log(this.isfa)
if (this.isfa == 0) {
console.log('1111111')
}
if (this.isfa == 1) {
uni.navigateBack()
}else if (this.isfa ==1 ) {
this.updateaddress()
}else if (this.isfa == 2) {
uni.reLaunch({
url:'/my/order/payModify'
})
} else if (this.isfa == 3) {
this.updateaddress()
}

View File

@ -239,6 +239,7 @@
border-radius: 21rpx;
background-size: 100%;
margin: 20px auto;
justify-content: space-between;
}
.you-nav{
background: #FFFFFF;

View File

@ -1,16 +1,8 @@
<template>
<view class="content">
<!-- <view class="bg" style="font-size: 32upx;height: 150rpx;padding: 26rpx 29rpx 0 29rpx;">
<view v-if="order.status ==1" style="color: #ffffff;">待付款...</view>
<view v-if="order.status ==2" style="color: #ffffff;">待服务</view>
<view v-if="order.status ==5" style="color: #ffffff;">已完成</view>
<view v-if="order.status ==6" style="color: #ffffff;">服务中</view>
<view v-if="order.status ==7" style="color: #ffffff;">理疗师出发</view>
<view v-if="order.status ==8" style="color: #ffffff;">理疗师到达</view>
<view v-if="order.status ==3" style="color: #ffffff;">待评价</view>
<view v-if="order.status ==4" style="color: #ffffff;">已取消</view>
<view v-if="order.overTimeOrders == 1" style="color: red;font-size:26rpx">(订单已超时)</view>
</view> -->
<view v-if="order.overTimeOrders == 1" class="dingshi" style="font-size: 32upx;height: 150rpx;padding: 26rpx 29rpx 0 29rpx;">
<view style="color: red;font-size:26rpx">(订单已超时)</view>
</view>
<view class="padding-bottom u-skeleton">
<view class="bgImg u-skeleton-fillet" v-if="order.ordersMassageList && order.ordersMassageList.length > 0"
style="padding: 0 29rpx;">
@ -22,11 +14,22 @@
style="width: 100%;height: 100%;border-radius: 19upx;"></image>
</view>
<view class="u-flex-1 margin-left-sm">
<view class="flex" style="font-weight: 600;">
<view class="margin-right-xs text-df u-skeleton-fillet"
style="margin-top: -2px;display: inline-block;width: 400rpx; overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">
<view class="flex head-title-right">
<view class="margin-right-xs text-df u-skeleton-fillet head-title">
{{order.ordersMassageList[0].massageType.title}}
</view>
<view class="zhuangtai">
<view v-if="order.status ==1">待付款...</view>
<view v-if="order.status ==2">待服务</view>
<view v-if="order.status ==5">已完成</view>
<view v-if="order.status ==6">服务中</view>
<view v-if="order.status ==7">理疗师出发</view>
<view v-if="order.status ==8">理疗师到达</view>
<view v-if="order.status ==3">待评价</view>
<view v-if="order.status ==4">已取消</view>
<view v-if="order.status ==9">待确认</view>
<view v-if="order.status ==10">待补单</view>
</view>
</view>
<view class="flex align-center">
<view>
@ -176,7 +179,7 @@
</view>
</view>
</view>
<view class="pay-ding feiuong">
<!-- <view class="pay-ding feiuong">
<view class="fei-title">费用明细</view>
<view class="fei-view">
<view class="fei-view-list">
@ -185,7 +188,7 @@
</view>
<view class="fei-view-list">
<span>出行费用</span>
<span>20</span>
<span>{{order.taxiMoney}}</span>
</view>
<view class="fei-view-list">
<span>优惠券</span>
@ -196,7 +199,7 @@
<span style="color: #FF3939;font-size: 29rpx;">286</span>
</view>
</view>
</view>
</view> -->
</view>
@ -239,30 +242,87 @@
</view>
</view> -->
<view class="flex tabber padding-top-sm padding-bottom-sm align-center">
<view v-if="order.status !=6" class="flex tabber padding-top-sm padding-bottom-sm align-center">
<u-button @click="cancelOrder(order)" shape="circle" :custom-style="customStyle" :hair-line="false"
v-if="(order.status == 1 || order.status == 2 || order.status == 7 || order.status == 8) && yhqxSel != '否'">取消订单
</u-button>
<u-button @click="openpay()" shape="circle" :custom-style="customStyle2" :hair-line="false"
<u-button @click="openpay(order)" shape="circle" :custom-style="customStyle2" :hair-line="false"
v-if="order.status == 1"
style="background: linear-gradient(to right, #223845, #00a85b);border: 0;">立即支付
class="dingshi">立即支付
</u-button>
<!-- <u-button @click="cancel(order)" class="margin-right" shape="circle" :custom-style="customStyle2"
:hair-line="false" v-if="order.status == 6">订单完成
</u-button> -->
<u-button v-if="order.status == 2 || order.status == 5|| order.status == 3" :custom-style="customStyle2"
<u-button v-if="order.status == 5|| order.status == 3" :custom-style="customStyle2"
shape="circle" :plain="true"
@click="goNav('/my/order/complain?ordersId='+ordersId + '&byUserId=' + order.artificer.userId + '&byuserName=' + order.artificer.artificerName)"
style="background: linear-gradient(to right, #223845, #00a85b);">
class="dingshi">
去投诉
</u-button>
<u-button v-if="order.status == 9&&order.refusalContent!=''&&order.refusalContent!=null" :custom-style="customStyle2"
shape="circle" :plain="true"
@click="toggleQ('center',order)"
class="dingshi">
拒单确认
</u-button>
<u-button v-if="order.status == 10" :custom-style="customStyle2"
shape="circle" :plain="true"
@click="goNav('/my/order/payModifyDzhifu?ordersId='+order.ordersId,order)"
class="dingshi">
立即预约
</u-button>
<u-button v-if="order.status != 4&&order.status != 1&&order.status != 10&&order.status != 3&&order.status == 9&&order.status != 5" :custom-style="customStyle2"
shape="circle" :plain="true"
@click="goNav('/my/order/payModifyDzhifu?ordersId='+ordersId,order)"
class="dingshi">
修改订单
</u-button>
<u-button v-if="order.status == 3" :custom-style="customStyle2" shape="circle" :plain="true"
@click="goNav('/my/order/feedback?artificerId='+order.artificerId+ '&ordersId='+order.ordersMassageList[0].ordersId)"
style="background: linear-gradient(to right, #223845, #00a85b);">
class="dingshi">
去评价
</u-button>
<u-button :custom-style="customStyle2" shape="circle" :plain="true" @click="goChat"
style="border: 0;background: linear-gradient(to right, #223845, #00a85b);">联系客服</u-button>
class="dingshi">联系客服</u-button>
</view>
<view v-else class="flex tabber padding-top-sm padding-bottom-sm align-center" :style="{'height':btnShow?'100px':'60px'}">
<view class="showBtn-mian">
<view class="showBtn">
<view class="gengduo" @click.stop="gengBtn">更多</view>
<u-button shape="circle" :plain="true" @click="goChat"
class="btns">联系客服</u-button>
<u-button
shape="circle" :plain="true"
@click="toggle('center',order)"
class="btns">
提前结束
</u-button>
<u-button
shape="circle" :plain="true"
@click="goNav('/my/order/complain?ordersId='+ordersId + '&byUserId=' + order.artificer.userId + '&byuserName=' + order.artificer.artificerName)"
class="btns">
修改订单
</u-button>
</view>
<view class="showBtn-view" v-show="btnShow">
<u-button
shape="circle" :plain="true"
@click="goNav('/my/order/complain?ordersId='+ordersId + '&byUserId=' + order.artificer.userId + '&byuserName=' + order.artificer.artificerName)"
class="btns">
充值
</u-button>
<u-button
shape="circle" :plain="true"
@click="goNav('/my/order/complain?ordersId='+ordersId + '&byUserId=' + order.artificer.userId + '&byuserName=' + order.artificer.artificerName)"
class="btns">
加钟
</u-button>
<u-button
shape="circle" :plain="true"
@click="goNav('/my/order/complain?ordersId='+ordersId + '&byUserId=' + order.artificer.userId + '&byuserName=' + order.artificer.artificerName)"
class="btns">
改价
</u-button>
</view>
</view>
</view>
</view>
<u-skeleton :loading="loading" :animation="true" bgColor="#FFF"></u-skeleton>
@ -313,12 +373,63 @@
<view class="pay_btn" @click="pay()">确认支付</view>
</view>
</u-popup>
<!-- 提前结束 -->
<view>
<!-- 提前结束 -->
<uni-popup ref="popup" background-color="#fff">
<view class="popup-content">
<view class="popup-head">
<span>请输入提前结束的原因</span>
<span @click="closePopup(type)">x</span>
</view>
<view class="popup-mian">
<textarea placeholder="请输入提前结束服务原因" @input="textareaInp" class="popup-mian-textarea" name="" id="" cols="30" rows="10"></textarea>
<view class="popup-mian-btn">
<span @click="closePopup(type)">
取消
</span>
<span @click="tiqian('center')">
确定
</span>
</view>
</view>
</view>
</uni-popup>
</view>
<!-- 确认拒绝 -->
<view>
<!-- 确认拒绝 -->
<uni-popup ref="popupQ" background-color="#fff">
<view class="popup-content">
<view class="popup-head">
<span>确认拒单</span>
<span @click="closePopupQ(type)">x</span>
</view>
<view class="popup-mian">
<view class="popup-mian-textarea">
{{qurenJd.refusalContent}}
</view>
<view class="popup-mian-btn">
<span @click="TuiPopup(type,'1')">
同意
</span>
<span @click="TuiPopup(type,'3')">
全额退款
</span>
</view>
</view>
</view>
</uni-popup>
</view>
</view>
</template>
<script>
//
// #ifdef APP-PLUS
import permision from "@/components/permission.js";
// #endif
export default {
data() {
return {
@ -368,7 +479,12 @@
openLists: [],
openWay: 1,
closeable: true,
yhqxSel: '否'
yhqxSel: '否',
btnShow:false,
tiqianData:'',
type:'center',
earlyFinishReason:'',
qurenJd:[]
}
},
onLoad(e) {
@ -426,6 +542,125 @@
// #endif
},
methods: {
getOrder() {
let data = {
ordersId: this.ordersId
}
this.$Request.get('/app/artificer/selectOrdersDetails', data).then(res => {
if (res.code == 0) {
this.loading = false
uni.hideLoading()
this.order = res.data
let aliphone = this.$queue.getData('aliphone');
if (aliphone === '是' && this.order.artificer) {
this.ysPhone(this.order.phone, this.order.artificer.phone);
}
}
})
},
closePopupQ(type){//
this.type = type
this.$refs.popupQ.close(type);
},
toggleQ(type,item) {//
this.qurenJd=item;
this.type = type
// open uni-popup type
this.$refs.popupQ.open(type)
},
TuiPopup(typeTxte,type){// 退.
this.type = typeTxte
let data = {
ordersId: this.qurenJd.ordersId,
isAuto: '0',
type: type
}
this.$Request.post('/app/artificer/cancelSupplementOrders', data).then(res => {
if (res.code == 0) {
uni.showToast({
title:'操作完成!'
})
this.$refs.popupQ.close(typeTxte);
}else{
uni.showToast({
icon:'error',
title:'操作失败!'
})
}
}).catch(() => {
//,
});
},
closePopup(type){//
this.type = type
this.$refs.popup.close(type);
},
textareaInp(e){//
this.earlyFinishReason=e.detail.value;
console.log("earlyFinishReason",this.earlyFinishReason)
},
tiqian(type){//
var that=this;
that.type = type;
uni.getLocation({
type: 'wgs84',
success: function (resa) {
var longitude=resa.longitude;
var latitude=resa.latitude;
console.log('当前位置的经度:' + resa.longitude);
console.log('当前位置的纬度:' + resa.latitude);
let data = {
ordersId: that.tiqianData.ordersId,
accomplishLongitude:longitude,
accomplishLatitude:latitude,
earlyFinishReason: that.earlyFinishReason,
}
that.$Request.post('/app/artificer/accomplishOrders', data).then(res => {
if (res.code == 0) {
uni.showToast({
title:'操作完成!'
})
that.$refs.popup.close(type);
}else{
console.log('shibai' + longitude);
console.log('shibai' + latitude);
uni.showToast({
icon:'error',
title:'操作失败!'
})
}
}).catch(() => {
//,
});
},
fail: function(e) {
// #ifdef H5
uni.showToast({
title:'获取地址失败!'
})
// #endif
// #ifdef APP-PLUS
that.checkPermission();
// #endif
}
});
},
toggle(type,item) {//
this.tiqianData=item;
this.type = type;
// open uni-popup type
this.$refs.popup.open(type);
},
gengBtn(){
this.btnShow=!this.btnShow
},
goChat() {
let kefu = this.$queue.getData('kefu'); // 1 2
let kefuPhone = this.$queue.getData('kefuPhone');
@ -787,27 +1022,13 @@
}
});
},
goNav(e) {
goNav(e,item) {
this.$queue.setData('daibudan',item);
uni.navigateTo({
url: e
})
},
getOrder() {
let data = {
ordersId: this.ordersId
}
this.$Request.get('/app/artificer/selectOrdersDetails', data).then(res => {
if (res.code == 0) {
this.loading = false
uni.hideLoading()
this.order = res.data
let aliphone = this.$queue.getData('aliphone');
if (aliphone === '是' && this.order.artificer) {
this.ysPhone(this.order.phone, this.order.artificer.phone);
}
}
})
},
delOrder(e) {
let that = this
uni.showModal({
@ -844,8 +1065,11 @@
}
});
},
openpay() {
this.showpay = true
openpay(item) {
uni.navigateTo({
url:'/my/order/payModifyDzhifu?ordersId='+item.ordersId
})
// this.showpay = true
},
//
pay() {
@ -1173,6 +1397,131 @@
</script>
<style lang="scss" scoped>
.popup-mian-btn span:nth-child(1){
background: linear-gradient(90deg, #FE912E, #FF9970);
}
.popup-mian-btn span:nth-child(2){
background: linear-gradient(90deg, #019C88, #28BA92, #35C495);
}
.popup-mian-btn span{
width: 247rpx;
height: 77rpx;
line-height: 77rpx;
text-align: center;
font-weight: 400;
font-size: 32rpx;
color: #FFFEFE;
border-radius: 39rpx;
}
.popup-mian-btn{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
margin-top: 10px;
}
.popup-mian-textarea{
width: 525.69rpx;
height: 211.81rpx;
}
.popup-mian{
width: 88%;
display: flex;
flex-direction: column;
margin: 5px auto 0px auto;
}
.popup-head span:nth-child(2){
width: 50rpx;
height: 50rpx;
line-height: 19px;
text-align: center;
font-size: 24px;
color: #15AB8D;
border-radius: 50%;
border: 3px solid #15AB8D;
}
.popup-head span:nth-child(1){
font-weight: bold;
font-size: 32rpx;
color: #333333;
}
.popup-head{
width: 100%;
height: 99.38rpx;
background-color: rgba(21, 171, 141, 0.09);
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 0 15px;
}
.popup-content{
width: 613rpx;
height: 479rpx;
background: #FFFFFF;
border-radius: 56rpx;
display: flex;
flex-direction: column;
}
/deep/.btns{
background: #019C88 !important;
color: #fff !important;
}
/deep/.u-size-default{
margin: 5px 0px 0px 0px;
}
.showBtn-mian{
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
flex-wrap: wrap;
justify-content: flex-end;
}
.gengduo{
font-weight: 400;
font-size: 25rpx;
color: #7D7D7D;
}
.showBtn-view{
width: 100%;
justify-content: flex-end;
display: flex;
flex-direction: row;
align-items: center;
}
.showBtn,.hideBtn{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
flex-wrap: wrap;
justify-content: space-between;
}
.dingshi{
background: linear-gradient(90deg, #019C88, #28BA92, #35C495);
}
.zhuangtai{
color: #029D88;
}
.head-title-right{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
font-weight: bold;
}
.head-title{
margin-top: -2px;display: inline-block;
width: 300rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.fei-view-list span,.fei-view-list-z span{
font-weight: bold;
font-size: 25rpx;

View File

@ -1,27 +1,27 @@
<template>
<view class="content">
<view class="padding-bottom u-skeleton">
<view class="bgImg u-skeleton-fillet" v-if="order.ordersMassageList && order.ordersMassageList.length > 0"
style="padding: 0 29rpx;">
<view class="padding margin-top-sm header-view">
<view class="bgImg u-skeleton-fillet" style="padding: 0 29rpx;">
<view class="padding margin-top-sm header-view" @click="getAddressList()">
<view v-if="!detailaddress">请选择地址</view>
<view class="margin-right-xs">
<view class="flex justify-between margin-top-lg">
<view class="header-view-text">联系人</view>
<view class="header-view-data">
<text>{{order.serveTime}}</text>
<text>{{name}}</text>
</view>
</view>
<view class="flex justify-between margin-top-lg">
<view class="header-view-text">手机号码</view>
<view class="header-view-data" @click="bindphone(order.phone)">
{{order.phone}}
<view class="header-view-data">
{{mobile}}
</view>
</view>
<view class="flex justify-between margin-top-lg">
<view class="header-view-text">详细地址</view>
<view class="flex adders-view" @tap="bindGps(order.latitude,order.longitude,order.address)">
<view class="flex adders-view">
<span>
{{order.address}}
{{province}}/{{city}}/{{district}}/{{detailaddress}}
</span>
<image src="../../static/shezhi-jiantou.png" mode=""></image>
</view>
@ -42,24 +42,46 @@
服务时间
</view>
<view class="fuwu-time-view" @change="changeLog">
<uni-datetime-picker v-model="single">{{single==''?order.serveTime:single}}</uni-datetime-picker>
<uni-datetime-picker :hide-second='true' v-model="single" type="datetime">{{single==''?order.serveTime:single}}</uni-datetime-picker>
<!-- <span>{{order.serveTime}}</span> -->
<image style="margin-left: 5px;" class="fuwu-img" src="../../static/images/my/jiantou.png" mode=""></image>
</view>
</view>
<view class="liliao">
<view class="liliao-top">
<view class="liliao" @click="liliaoshi">
<view class="liliao-top" style="width: 30%;">
<span>理疗师</span>
<span>资深</span>
<span v-if="jishiName">{{jishiName.technicianTypeName}}</span>
</view>
<view class="liliao-bottom">
<span>王丽娜</span>
<span v-if="jishiName">{{jishiName.artificerName}}</span>
<span v-else>选择不同技师价格可能不一样哦~</span>
<image class="fuwu-img" src="../../static/images/my/jiantou.png" mode=""></image>
</view>
</view>
</view>
<view class="head-top">
<checkbox-group @change="checkboxChange">
<view class="youhui-weiyong youhui-list" v-for="(itemY,indexY) in couponData" :key="itemY.id">
<view class="youhui-view-left">
<view class="youhui-view-left-yuan">
<span class="youhui-view-left-num">{{itemY.money}}</span>
<span class="youhui-view-left-text"></span>
</view>
<view class="youhui-view-left-bottom">
{{itemY.minMoney}}元可用
</view>
</view>
<view class="youhui-view-right">
<view class="youhui-view-right-top">
<view class="youhui-view-right-title">{{itemY.couponName}}</view>
<view class="youhui-view-right-time">{{itemY.endDate}}</view>
</view>
<label class="tui-radio">
<checkbox activeBackgroundColor="#096f4b" color="#096f4b" :value="itemY.id.toString()" :checked="checkbox"/>
</label>
</view>
</view>
</checkbox-group>
<!-- <view class="head-top">
<view class="head-top-view">
<image class="head-top-view-img" src="../../static/yuyue.png" mode=""></image>
<view class="head-top-view-right">
@ -90,12 +112,12 @@
<span>合计</span>
<span>{{order.sumMoney}}</span>
</view>
</view>
</view> -->
<view class="margin-top-xl pay-ding">
<view class="d-title">备注</view>
<view class="list-pay">
<view class="textarea-pay-list">
<textarea class="textarea-pay" placeholder="请输入备注" name="" maxlength="100"></textarea>
<textarea @input="textareaChange" class="textarea-pay" v-model="textareaData" placeholder="请输入备注" name="" maxlength="100"></textarea>
</view>
</view>
@ -124,15 +146,10 @@
<view class="tabber padding-top-sm padding-bottom-sm pay-zhifu">
<span class="daizhifu">待支付:268</span>
<u-button class="u-button-pay" @click="openpay()" shape="circle" :custom-style="customStyle2" :hair-line="false">
立即支付
</u-button>
</view>
<view class="pay_btn" style="margin-top: 30px;" @click="openpay()">立即预约</view>
</view>
<u-skeleton :loading="loading" :animation="true" bgColor="#FFF"></u-skeleton>
<!-- <u-skeleton :loading="loading" :animation="true" bgColor="#FFF"></u-skeleton> -->
<u-popup v-model="showorder" mode="bottom" :closeable="closeable">
<scroll-view scroll-y="true" style="width: 750rpx;height: 500rpx;">
<view class="list_item" v-for="(item,index) in orderList" :key="index">
@ -176,7 +193,13 @@
</view>
</view>
</view>
<view class="pay_btn" @click="pay()">确认支付</view>
<view class="tabber padding-top-sm padding-bottom-sm pay-zhifu" style="background: #fff !important;">
<span class="daizhifu">待支付:{{tpayMoney}}</span>
<u-button class="u-button-pay" @click="pay()" shape="circle" :custom-style="customStyle2" :hair-line="false">
立即支付
</u-button>
</view>
</view>
</u-popup>
@ -188,7 +211,7 @@
export default {
data() {
return {
single: '',
single:'2024-06-19',
radio1:'',
sex: [{
text: '我已同意《盛安健康服务协议》',
@ -240,14 +263,32 @@
openLists: [],
openWay: 1,
closeable: true,
yhqxSel: '否'
yhqxSel: '否',
address:[],
detailaddress:'',
name:'',
mobile:'',
cityaddress:'',
isDefault:'',
userId:'',
latitude:'',
longitude:'',
province:'',
city:'',
district:'',
addressId:'',
isTrues: true,
jishiName:'',
checkbox:false,
couponData:[],
couponId:'',
textareaData:'',
ordersId:'',
userPackageDetailId:'',
}
},
onLoad(e) {
uni.showLoading({
title: '加载中......',
})
this.jishiName=this.$queue.getData('getJishi');
// setTimeout(() => {
// // this.loading = false;
// }, 2000)
@ -257,14 +298,18 @@
title: '订单详情'
})
}
this.ordersId = e.ordersId
this.ordersId = this.$queue.getData('ordersId');
this.userPackageDetailId = this.$queue.getData('userPackageDetailId');
this.youhui()
// this.getOrder()
},
onShow() {
this.yhqxSel = this.$queue.getData("yhqxSel");
this.getOrder()
if (uni.getStorageSync('token')) {
this.getIsVip()
this.addressId = this.$queue.getData('EditAddress');
if (this.addressId) {
this.getAddressList(this.addressId);
} else {
this.addressMy()
}
// #ifndef MP-WEIXIN
@ -298,7 +343,134 @@
// #endif
},
methods: {
openpay() {//
if(this.single=='2024-06-19'){
uni.showToast({
title:'请选择服务时间!'
})
}else if(this.jishiName==''){
uni.showToast({
title:'请选择理疗师!'
})
}else if(this.radio1!='0'){
uni.showToast({
title:'请同意服务保障!'
})
}else{
this.showpay = true;
this.goOrder()
}
},
textareaChange(e){//
this.textareaData=e.detail.value
console.log("adsadas0",this.textareaData)
},
checkboxChange(e){
this.couponId=e.detail.value.join(",")
},
youhui(){//
let that = this
let data = {
status: 0,
page: 1,
limit: 10
}
that.$Request.get("/app/coupon/selectCouponUserList", data).then(res => {
if (res.code == 0) {
that.couponData=res.data.list
} else {
that.$queue.showToast(res.msg)
}
});
},
liliaoshi(){
// this.$queue.setData('taocanDd', '2');
uni.setStorage({
key: 'taocanDd',
data: '支付',
success: function () {
uni.switchTab({
url: '/pages/therapist/therapist'
})
}
});
},
getChuXing() {//
this.$Request.getT('/app/artificer/selectTaxiMoney?artificerId=' + this.artificerId + '&latitude=' + this
.latitude + '&longitude=' + this.longitude).then(res => {
if (res.code == 0) {
this.cheFei = res.data.taxiMoney ? res.data.taxiMoney : 0;
// this.price = parseInt(this.price)+parseInt(this.cheFei).toFixed(2)
this.distances = res.data.distances
this.tripNum = res.data.tripNum
this.xuMoney = res.data.xuMoney
this.tripPrice = res.data.tripPrice
this.cxSel = true;
} else {
this.cxSel = false;
uni.showToast({
title: '当前城市暂未开通,请切换城市',
duration: 2000,
icon: 'none'
});
}
});
},
addressMy() {
this.$Request.getT('/app/address/selectAddressById').then(res => {
console.log(res)
if (res.code == 0) {
this.name = res.data.name;
this.mobile = res.data.phone;
this.cityaddress = res.data.province + res.data.city + res.data.district;
this.detailaddress = res.data.detailsAddress;
this.isDefault = res.data.isDefault;
this.userId = res.data.userId;
this.latitude = res.data.latitude;
this.longitude = res.data.longitude;
this.province = res.data.province
this.city = res.data.city
this.district = res.data.district
this.addressId = res.data.addressId
// this.getChuXing();
// this.$queue.setData('EditAddress', res.data.addressId);
}
});
},
//
getAddressList(addressId) {
if (addressId) {
this.$Request.getT('/app/address/selectAddressByAddressId?addressId=' + this.addressId).then(res => {
console.log(res)
if (res.code == 0) {
this.name = res.data.name;
this.mobile = res.data.phone;
this.cityaddress = res.data.province + res.data.city + res.data.district;
this.detailaddress = res.data.detailsAddress;
this.isDefault = res.data.isDefault;
this.userId = res.data.userId;
this.latitude = res.data.latitude;
this.longitude = res.data.longitude;
this.province = res.data.province
this.city = res.data.city
this.district = res.data.district
// this.getChuXing();
}
// uni.hideLoading();
});
} else {
uni.navigateTo({
url: '../address/address?id=' + 2
})
}
},
changeLog(e){//
console.log("11111",e)
this.single=e;
},
goChat() {
@ -377,32 +549,38 @@
}
});
},
goOrder(item) {
goOrder() {//orderId
let that = this
let payMoney = that.isVip ? item.memberPrice : item.price;
let data = {
parentId: that.order.ordersId,
artificerId: that.order.artificerId,
ordersMassageList: [{
massageId: item.massageTypeId,
num: 1,
}],
price: payMoney,
couponId: '',
payMoney: payMoney,
userId: uni.getStorageSync('userId'),
address:that.province+that.city+that.district+that.detailaddress,
artificerId:that.jishiName.artificerId,
userPackageDetailId:that.userPackageDetailId,
phone:that.mobile,
userName:that.name,
tripWay:that.jishiName.tripWay,
city:that.city,
couponId: that.couponId,
userId: uni.getStorageSync('userId'),
longitude:that.longitude,
latitude:that.latitude,
serveTime:that.single,
remarks:that.textareaData,
ordersMassageList:[
{massageId: that.userPackageDetailId? that.userPackageDetailId:that.ordersId,num: 1},
]
}
that.$Request.postJson("/app/artificer/insertOrders", data).then(res => {
that.showorder = false
if (res.code == 0) {
that.tordersId = res.data.ordersId;
that.tpayMoney = payMoney;
that.ordersId = res.data.ordersId;
that.tpayMoney = res.data.payMoney;
that.showpay = true;
that.paySel = 1;
} else {
that.$queue.showToast(res.msg)
}
});
},
payJZ() {
@ -416,7 +594,7 @@
that.$queue.showLoading('支付中...')
// console.log('');
that.$Request.post("/app/artificer/payOrders", {
ordersId: that.tordersId,
ordersId: that.ordersId,
}).then(ret => {
uni.hideLoading();
if (ret.code == 0) {
@ -424,7 +602,7 @@
title: '支付成功',
icon: 'none'
})
that.getOrder()
// that.getOrder()
} else {
uni.showToast({
@ -434,7 +612,7 @@
}
});
} else if (re.cancel) {
that.getOrder()
// that.getOrder()
}
}
})
@ -461,7 +639,7 @@
title: '支付成功',
icon: 'none'
})
that.getOrder()
// that.getOrder()
// this.$queue.showToast('');
// uni.switchTab({
@ -474,7 +652,7 @@
title: '支付失败',
icon: 'nones'
});
that.getOrder()
// that.getOrder()
}
});
}
@ -719,9 +897,7 @@
}
});
},
openpay() {
this.showpay = true
},
//
pay() {
let that = this
@ -730,23 +906,24 @@
this.payJZ();
return;
}
console.log("ordersId000000000",this.ordersId)
if (that.openWay == 1) { //
uni.showModal({
title: '付款提示',
content: '确认支付' + that.order.payMoney + '元吗?',
content: '确认支付' + that.tpayMoney + '元吗?',
success: function(re) {
if (re.confirm) {
that.$queue.showLoading('支付中...')
console.log('用户点击确定');
that.$Request.post("/app/artificer/payOrders", {
ordersId: that.order.ordersId,
ordersId: that.ordersId,
}).then(res => {
uni.hideLoading();
if (res.code == 0) {
uni.showToast({
title: '支付成功'
})
that.getOrder()
// that.getOrder()
} else {
uni.showToast({
title: res.msg,
@ -785,7 +962,7 @@
title: '支付成功',
icon: 'none'
})
that.getOrder()
// that.getOrder()
// this.$queue.showToast('');
// uni.switchTab({
@ -798,7 +975,7 @@
title: '支付失败',
icon: 'nones'
});
that.getOrder()
// that.getOrder()
}
});
}
@ -930,7 +1107,7 @@
title: '支付成功',
icon: 'none'
})
that.getOrder()
// that.getOrder()
} else {
uni.hideLoading();
}
@ -959,7 +1136,7 @@
title: '支付成功',
icon: 'none'
})
that.getOrder()
// that.getOrder()
},
fail: function(err) {
uni.hideLoading();
@ -990,7 +1167,7 @@
that.$Request.post('/app/artificer/deleteOrders', data).then(res => {
uni.hideLoading();
if (res.code == 0) {
that.getOrder()
// that.getOrder()
} else {
that.$queue.showToast(res.msg);
}
@ -1048,6 +1225,108 @@
</script>
<style lang="scss" scoped>
/deep/uni-checkbox .uni-checkbox-input{
width: 26px;
height: 26px;
border-radius: 50%;
}
.youhui-img{
width: 111.81rpx;
height: 111.81rpx;
}
.youhui-view-right-btn{
width: 158rpx;
height: 64rpx;
background: linear-gradient(-90deg, #019C88, #2DC48E);
border-radius: 32rpx;
text-align: center;
line-height: 64rpx;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
text-shadow: 0rpx 2rpx 4rpx rgba(0,119,104,0.44);
margin-left: 10px;
}
.youhui-view-right-time{
font-weight: 400;
font-size: 22rpx;
color: #999999;
}
.youhui-view-right-title{
width: 110px;
font-weight: 400;
font-size: 32rpx;
color: #333333;
}
.youhui-view-right-top{
display: flex;
flex-direction: column;
align-items: center;
}
.youhui-view-right{
width: 502.08rpx;
height: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-around;
}
.youhui-view-left-bottom{
font-weight: 400;
font-size: 22rpx;
color: #FFFFFF;
}
.youhui-view-left-yuan{
display: flex;
flex-direction: row;
align-items: baseline;
color: #FFFFFF;
}
.youhui-view-left-num{
font-weight: bold;
font-size: 89rpx;
}
.youhui-view-left-text{
font-weight: bold;
font-size:24.31rpx;
}
.youhui-view-left{
width: 199rpx;
height: 242rpx;
display: flex;
flex-direction:column;
align-items: center;
justify-content: center;
}
.youhui-yiyong{
background-image: url('../../static/youhuijuan/coupons7.png');
}
.youhui-weiyong{
background-image: url('../../static/youhuijuan/coupons1.png');
}
.youhui-list{
width: 95%;
display: flex;
flex-direction: row;
height: 242rpx;
border-radius: 21rpx;
background-size: 100%;
margin: 20px auto;
justify-content: space-between;
}
.dingwei-image{
margin-right: 20rpx;
width: 66rpx;
height: 66rpx;
padding: 10rpx 0;
border-radius: 50%;
background: linear-gradient(90deg, #019C88, #28BA92, #35C495);
text-align: center;
line-height: 66rpx;
}
/deep/.skeleton-fade{
display: none;
}
/deep/.u-button-pay{
width: 381rpx;
height: 68rpx;
@ -1354,8 +1633,7 @@
}
.content{
padding-bottom: 140rpx;
padding-top: 20px;
padding-top: 1px;
width: 100%;
background-color: #f7f7f7;
}
@ -1375,7 +1653,7 @@
}
.bg {
background: linear-gradient(to right, #223845, #00a85b);
background: #fff;
}
.list_item {
@ -1517,9 +1795,9 @@
.popup_pay {
width: 100%;
height: 210px;
position: relative;
padding-bottom: 45rpx;
/* height: 160px; */
/* #ifndef MP-WEIXIN */
/* height: 130px; */
/* #endif */

1816
my/order/payModifyDzhifu.vue Normal file

File diff suppressed because it is too large Load Diff

View File

@ -23,21 +23,21 @@
<view class="money-miao">只能用于平台消费支付充值后不可退款</view>
</view>
<view class="padding-lr padding-bottom">
<view class="yu-e">
余额充值
<view class="chongzhi">
<span class="yu-e">余额充值</span>
<span @click="toggle('center')">为TA充值</span>
</view>
<view class="flex justify-between flex-wrap" v-if="wallet.length > 0">
<view v-for="(item,index) in wallet" :key='index' class="padding-sm radius"
style="color: #555;background-color: #f7f7f7;width: 48%; margin-top: 20rpx;"
@click="active(item)" :class="{active:item.isSelect}">
<view v-if="item.coupon && item.coupon.money" class="coupon">
¥{{item.price}}
<view class="coupon" style="display: flex;justify-content:space-between;align-items: center;">
<span>¥{{item.price}}</span>
<span>¥{{item.sumMoney}}</span>
</view>
<view v-else style="height: 100%;display: flex;align-items: center;font-size: 34rpx;font-weight: bold;">
¥{{item.price}}
</view>
<view v-if="item.coupon && item.coupon.money" class="coupon-bottom" style="color: #029D88 !important;">
赠送 <span style="color: #D33232;">{{item.giveNum}}{{item.coupon.money}}</span>元优惠券
<view class="coupon-bottom" style="color: #029D88 !important;">
赠送 <span style="color: #D33232;">{{item.remarks}}</span>
<!-- 赠送 <span style="color: #D33232;">{{item.giveNum}}{{item.coupon.money}}</span>元优惠券 -->
</view>
</view>
</view>
@ -84,11 +84,15 @@
<image src="../../static/img/you.png" style="width: 16rpx;height: 28rpx;"></image>
</view>
</view> -->
<!-- <view class="flex justify-around margin-top " v-if="jsczSel != '否'">
<view @click="goNav('/pages/therapist/therapistList?index=2')">为TA充值</view>
<view @click="goNav('/pages/therapist/therapistList?index=3')">我的理疗师</view>
</view> -->
<view
style="position: fixed;bottom: 0rpx;left: 0;right: 0;background: #FFFFFF;height: 110rpx;line-height: 110rpx;z-index: 999;">
<view class="btn" @click="pay"
style="background: linear-gradient(to right, #223845, #00a85b);color: #FFFFFF;margin: 16rpx 30upx;position: fixed;bottom: 0upx;width: 90%;border-radius: 50rpx;height: 78rpx;line-height: 78rpx;font-size: 32rpx;">
style="background: linear-gradient(to right, #00a85b, #00a85b);color: #FFFFFF;margin: 16rpx 30upx;position: fixed;bottom: 0upx;width: 90%;border-radius: 50rpx;height: 78rpx;line-height: 78rpx;font-size: 32rpx;">
确定充值</view>
</view>
</view>
@ -206,11 +210,109 @@
<view class="btn" @click="cashMoney">立即提现</view>
</view>
</view>
<!-- <view class="flex justify-around margin-top " v-if="jsczSel != '否'">
<view @click="goNav('/pages/therapist/therapistList?index=2')">为TA充值</view>
<view @click="goNav('/pages/therapist/therapistList?index=3')">我的理疗师</view>
</view> -->
<view>
<!-- 普通弹窗 -->
<uni-popup ref="popup" background-color="#fff" @change="change">
<view class="popup-content">
<view class="popup-head">
<span>改价单</span>
<span @click="closePopup(type)">x</span>
</view>
<view class="popup-mian">
<!-- <view class="popup-mian-textarea">
<view class="popup-mian-view">
<span>原服务项目价格:</span>
<span>198</span>
</view>
<view class="popup-mian-view">
<span>现服务项目价格:</span>
<span>298</span>
</view>
<view class="popup-mian-view">
<span>改价需支付差价:</span>
<span>100</span>
</view>
</view> -->
<view class="chong">
<view class="chong-list">
<view class="chong-list-left">
<radio value="" class="chong-list-radio"/>
<image src="../../static/jinggao.png" mode=""></image>
</view>
<view class="chong-list-right">
<view class="chong-title">
<span>王丽楠</span>
<image src="../../static/xinren.png" mode=""></image>
</view>
<view class="chong-bottom">
<view class="chong-bottom-ding">
<image src="../../static/orderDetail/dingwei.png" mode=""></image>
<span>0.8km</span>
</view>
<view class="chong-bottom-cheng">
<image class="therapist-bottom-img" src="../../static/dituzhaoren5.png">
<span>春城有约</span>
</view>
</view>
</view>
</view>
<view class="chong-list">
<view class="chong-list-left">
<radio value="" class="chong-list-radio"/>
<image src="../../static/jinggao.png" mode=""></image>
</view>
<view class="chong-list-right">
<view class="chong-title">
<span>王丽楠</span>
<image src="../../static/xinren.png" mode=""></image>
</view>
<view class="chong-bottom">
<view class="chong-bottom-ding">
<image src="../../static/orderDetail/dingwei.png" mode=""></image>
<span>0.8km</span>
</view>
<view class="chong-bottom-cheng">
<image class="therapist-bottom-img" src="../../static/dituzhaoren5.png">
<span>春城有约</span>
</view>
</view>
</view>
</view>
<view class="chong-list">
<view class="chong-list-left">
<radio value="" class="chong-list-radio"/>
<image src="../../static/jinggao.png" mode=""></image>
</view>
<view class="chong-list-right">
<view class="chong-title">
<span>王丽楠</span>
<image src="../../static/xinren.png" mode=""></image>
</view>
<view class="chong-bottom">
<view class="chong-bottom-ding">
<image src="../../static/orderDetail/dingwei.png" mode=""></image>
<span>0.8km</span>
</view>
<view class="chong-bottom-cheng">
<image class="therapist-bottom-img" src="../../static/dituzhaoren5.png">
<span>春城有约</span>
</view>
</view>
</view>
</view>
</view>
<view class="popup-mian-btn">
<span @click="closePopup(type)">
取消
</span>
<span>
确定
</span>
</view>
</view>
</view>
</uni-popup>
</view>
</view>
</template>
@ -219,6 +321,7 @@
export default {
data() {
return {
type:'center',
jsczSel: '否',
tgCheck: '否',
isAgency: 0,
@ -270,7 +373,8 @@
placeholder: '',
renzheng: 0,
sp: 0,
txMsg: ''
txMsg: '',
nameTxt:''
}
},
onLoad(d) {
@ -280,12 +384,14 @@
} else {
this.tabIndex = 0;
}
this.wxTxSel = this.$queue.getData('wxTxSel');
this.ylTxSel = this.$queue.getData('ylTxSel');
this.jsczSel = this.$queue.getData('jsczSel');
this.txMsg = this.$queue.getData('txMsg');
this.avatar = uni.getStorageSync('avatar')
this.renzheng = uni.getStorageSync("renzheng")
this.nameTxt=d.text
this.getMoneyList();
// #ifndef MP-WEIXIN
this.openLists = [{
@ -326,9 +432,6 @@
if (res.code == 0) {
this.wallet = [];
res.data.forEach((d, index) => {
// if(!d.coupon){
// return;
// }
if (index == 0) {
d.isSelect = true;
this.thisSelect = d;
@ -340,6 +443,19 @@
}
});
},
change(e) {
console.log('当前模式:' + e.type + ',状态:' + e.show);
},
closePopup(type){//
this.type = type
this.$refs.popup.close(type);
},
toggle(type) {//
this.type = type
// open uni-popup type
this.$refs.popup.open(type)
},
//退
TuiPrice() {
let that = this
@ -781,6 +897,206 @@
</script>
<style scoped>
.chong-list:last-child{
border: 0px !important;
}
.chong-bottom-cheng image{
width: 22.22rpx;
height: 22.22rpx;
margin-right: 5px;
}
.chong-bottom-cheng span{
font-weight: 500;
font-size: 23rpx;
color: #222222;
}
.chong-bottom-ding image{
width: 18.75rpx;
height: 21.53rpx;
margin-right: 5px;
}
.chong-bottom-ding span{
font-weight: bold;
font-size: 25rpx;
color: #848485;
}
.chong-bottom-ding,.chong-bottom-cheng{
display: flex;
flex-direction: row;
align-items: center;
}
.chong-bottom{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
margin-top: 10px;
}
.chong-title image{
width: 50rpx;
height: 22.22rpx;
}
.chong-title span{
font-weight: 400;
font-size: 29rpx;
color: #333333;
margin-right: 5px;
}
.chong-title{
display: flex;
flex-direction: row;
align-items: center;
}
.chong-list-right{
width: 75%;
display: flex;
flex-direction: column;
}
.chong-list-left image{
width: 76rpx;
height: 76rpx;
}
/deep/uni-radio .uni-radio-input{
width: 29.86rpx;
height: 29.86rpx;
margin: -3px 0px 0px -20px;
background-color: rgba(4, 159, 137, 1) !important;
border-color: rgba(4, 159, 137, 1) !important;
}
.chong-list-radio{
margin-right: 5px;
width: 29.86rpx;
height: 29.86rpx;
}
.chong-list-left{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.chong-list{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 10px 0px;
border-bottom: 1px solid #DCDCDC;
}
.chong{
width: 100%;
display: flex;
flex-direction: column;
}
.img-span{
display: flex;
justify-content: center;
align-items: center;
width: 40px;
height: 16px;
line-height: 16px;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-top-left-radius: 15rpx;
border-bottom-right-radius: 15rpx;
font-weight: bold;
font-size: 18rpx;
color: #FFFFFF;
position: absolute;
bottom: 0;
right: 0;
margin: 0 6px 6px 0px;
}
.popup-mian-view span:nth-child(1){
color: #666666;
}
.popup-mian-view span:nth-child(2){
color: #333;
font-weight: bold;
}
.popup-mian-view span{
font-size: 29rpx;
}
.popup-mian-view{
width: 100%;
height: 35px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #DCDCDC;
}
.popup-mian-textarea{
width: 100%;
display: flex;
flex-direction: column;
}
.popup-mian-btn span:nth-child(1){
background: linear-gradient(90deg, #FE912E, #FF9970);
}
.popup-mian-btn span:nth-child(2){
background: linear-gradient(90deg, #019C88, #28BA92, #35C495);
}
.popup-mian-btn span{
width: 247rpx;
height: 77rpx;
line-height: 77rpx;
text-align: center;
font-weight: 400;
font-size: 32rpx;
color: #FFFEFE;
border-radius: 39rpx;
}
.popup-mian-btn{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
margin-top: 10px;
}
.popup-mian{
width: 88%;
display: flex;
flex-direction: column;
margin: 5px auto 0px auto;
}
.popup-head span:nth-child(2){
width: 50rpx;
height: 50rpx;
line-height: 19px;
text-align: center;
font-size: 24px;
color: #15AB8D;
border-radius: 50%;
border: 3px solid #15AB8D;
}
.popup-head span:nth-child(1){
font-weight: bold;
font-size: 32rpx;
color: #333333;
}
.popup-head{
width: 100%;
height: 99.38rpx;
background-color: rgba(21, 171, 141, 0.09);
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 0 15px;
}
.popup-content{
width: 613rpx;
padding-bottom: 10px;
background: #FFFFFF;
border-radius: 56rpx;
display: flex;
flex-direction: column;
}
.coupon-bottom{
font-weight: 400;
font-size: 28rpx;
@ -795,6 +1111,22 @@
width: 95%;
margin: 0 auto;
}
.chongzhi span:nth-child(2){
color: #00a85b;
background-color: #fff;
padding: 2px 5px;
font-weight: bold;
font-size: 35rpx;
border:1px solid #00a85b;
border-radius: 30px;
}
.chongzhi{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.yu-e{
font-weight: bold;
font-size: 35rpx;

View File

@ -7,26 +7,30 @@
<view style="margin-bottom: 8upx">{{item.content}}</view>
<view style="margin-bottom: 8upx"> 创建时间{{item.createTime}}</view>
<view style="margin-bottom: 8upx;text-align: right;">
<text v-if="item.type == 1" class="text-olive" style="font-size: 32upx;font-weight: 600"><text class="text-olive">+</text>{{item.money}}</text>
<text v-if="item.type == 2" class="text-olive" style="font-size: 32upx;font-weight: 600"><text class="text-olive">+</text>{{item.money}}</text>
<text v-if="item.type == 2" class="text-red" style="font-size: 32upx;font-weight: 600"><text class="text-red">-</text>{{item.money}}</text>
</view>
</view>
</view> -->
<view class="content-list">
<view class="content-list" v-for="(item, index) in list" :key="index">
<view class="list-top">
<span>支付订单</span>
<span class="shijiH">-48</span>
<view class="list-top-view">
<span class="list-top-view-title">{{item.title}}</span>
<span class="img-span">{{item.blFlag=='1'?'余额':'现金'}}</span>
</view>
<text v-if="item.type == 1" class="text-olive" style="font-size: 32upx;font-weight: 600"><text class="text-olive">+</text>{{item.money}}</text>
<text v-if="item.type == 2" class="text-red" style="font-size: 32upx;font-weight: 600"><text class="text-red">-</text>{{item.money}}</text>
</view>
<view class="list-bottom">
<view class="list-bottom-ding">
订单号:2023120611401234567已经下单成功
{{item.content}}
</view>
<view class="list-bottom-time">
2024-01-01 10:00:00
创建时间{{item.createTime}}
</view>
</view>
</view>
<!-- <empty v-if="list.length == 0" content="暂无明细" ></empty> -->
<empty v-if="list.length == 0" content="暂无明细" ></empty>
</view>
</view>
</template>
@ -93,6 +97,26 @@
</script>
<style lang="less">
.img-span{
display: block;
padding: 1px 5px;
font-weight: 400;
font-size: 8px;
color: #FFFFFF;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-radius: 10px 0px 10px 0px;
margin-left: 5px;
}
.list-top-view-title{
color: #13141A;
font-weight: bold;
font-size: 35rpx;
}
.list-top-view{
display: flex;
flex-direction: row;
align-items: center;
}
.list-bottom-time{
font-weight: 400;
font-size: 25rpx;
@ -109,13 +133,7 @@
display: flex;
flex-direction: column;
}
.list-top span{
font-weight: bold;
font-size: 35rpx;
}
.list-top span:nth-child(1){
color: #13141A;
}
.shijiH{
color: #FF8400;
}
@ -146,11 +164,13 @@
display: flex;
flex-direction: column;
margin: 0 auto;
padding-bottom: 30px;
}
.content {
width: 100%;
height: 100vh;
// height: 100vh;
background: #f7f7f7;
// overflow: scroll;
}
.tui-tab-item-title {

View File

@ -9,7 +9,7 @@
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "盛安到家",
"enablePullDownRefresh": true,
"enablePullDownRefresh": false,
"navigationStyle": "custom",
"app-plus": {
"titleNView": false
@ -21,7 +21,7 @@
// #ifndef H5
{
"path": "pages/index/index",
"enablePullDownRefresh": true,
"enablePullDownRefresh": false,
"style": {
"navigationBarTitleText": "盛安到家",
"navigationStyle": "custom",
@ -163,6 +163,109 @@
}
},
// #endif
{
//
"path": "pages/my/orderDetailsList",
"style": {
"navigationBarTitleText": "订单详情列表",
"navigationBarBackgroundColor": "#096f4b",
"navigationBarTextStyle": "white",
"navigationStyle": "custom"
}
},
{
"path": "pages/my/historyMy",
"style": {
"navigationBarTitleText": "浏览历史",
"navigationBarBackgroundColor": "#096f4b",
"navigationBarTextStyle": "white",
"navigationStyle": "custom"
}
},
{
"path": "pages/my/myCiLiaoDetail",
"style": {
"navigationBarTitleText": "我的次卡疗程详情",
"navigationBarBackgroundColor": "#096f4b",
"navigationBarTextStyle": "white",
"navigationStyle": "custom"
}
},
{
"path": "pages/my/indextaociliaoList",
"style": {
"navigationBarTitleText": "首页套餐次卡疗程",
"navigationBarBackgroundColor": "#096f4b",
"navigationBarTextStyle": "white",
"navigationStyle": "custom"
}
},
{
"path": "pages/my/fuwuliaocheng",
"style": {
"navigationBarTitleText": "服务疗程",
"navigationBarBackgroundColor": "#096f4b",
"navigationBarTextStyle": "white",
"navigationStyle": "custom"
}
},
{
"path": "pages/my/fuwuGengduo",
"style": {
"navigationBarTitleText": "更多优惠",
"navigationBarBackgroundColor": "#096f4b",
"navigationBarTextStyle": "white",
"navigationStyle": "custom",
"enablePullDownRefresh": true
}
},
{
"path": "pages/my/fuwuDateil",
"style": {
"navigationBarTitleText": "服务项目详情",
"navigationBarBackgroundColor": "#096f4b",
"navigationBarTextStyle": "white",
"navigationStyle": "custom",
"enablePullDownRefresh": true
}
},
{
"path": "pages/my/fuwuxiangm",
"style": {
"navigationBarTitleText": "服务项目",
"navigationBarBackgroundColor": "#096f4b",
"navigationBarTextStyle": "white",
"navigationStyle": "custom",
"enablePullDownRefresh": true
}
},
{
"path": "pages/my/fuwuliaochengDetail",
"style": {
"navigationBarTitleText": "服务疗程详情",
"navigationBarBackgroundColor": "#096f4b",
"navigationBarTextStyle": "white",
"navigationStyle": "custom"
}
},
{
"path": "pages/my/cika",
"style": {
"navigationBarTitleText": "项目次卡",
"navigationBarBackgroundColor": "#096f4b",
"navigationBarTextStyle": "white",
"navigationStyle": "custom"
}
},
{
"path": "pages/my/cikarDrtail",
"style": {
"navigationBarTitleText": "项目次卡详情",
"navigationBarBackgroundColor": "#096f4b",
"navigationBarTextStyle": "white",
"navigationStyle": "custom"
}
},
{
"path": "pages/my/servicePackage",
"style": {
@ -354,7 +457,10 @@
"path": "pages/therapist/therapist",
"style": {
"navigationBarTitleText": "理疗师",
"enablePullDownRefresh": true
"enablePullDownRefresh": true,
"app-plus": {
"titleNView": false
}
}
},
// #endif
@ -363,7 +469,7 @@
"style": {
"navigationBarTitleText": "选择理疗师",
"navigationStyle": "custom",
"enablePullDownRefresh": true
"enablePullDownRefresh": false
}
}, {
"path": "pages/therapist/orderDetail",
@ -396,12 +502,19 @@
}
}
}, {
"path": "order/payModifyDzhifu",
"style": {
"navigationBarTitleText": "订单详情",
"enablePullDownRefresh": false
}
},
{
"path": "help/helpDetail",
"style": {
"navigationBarTitleText": "帮助详情",
"enablePullDownRefresh": false
}
}, {
},{
"path": "hongbao/youhuijuan",
"style": {
"navigationBarTitleText": "优惠券",

View File

@ -34,8 +34,8 @@
</view>
<view class="index-nav-bottom width">
<image src="../../static/index-nav-6.png" mode="widthFix"></image>
<image src="../../static/index-nav-7.png" mode="widthFix"></image>
<image src="../../static/index-nav-6.png" mode="widthFix" @click="chaoji"></image>
<image src="../../static/index-nav-7.png" mode="widthFix" @click="xinren"></image>
</view>
</view>
<view class="title-star">
@ -55,7 +55,7 @@
</view>
</view>
<view class="index-project width">
<view class="index-project-content" @click="goNav('/pages/my/servicePackage')">
<view class="index-project-content" @click="goNav('/pages/my/indextaociliaoList?type='+104+'&name='+'index')">
<image src="../../static/index-fenglei1.png" mode="widthFix"></image>
<span>盛安套餐</span>
</view>
@ -71,7 +71,7 @@
<image src="../../static/index-fenglei4.png" mode="widthFix"></image>
<span>会员中心</span>
</view>
<view class="index-project-content" @click="goNav('/my/wallet/index')">
<view class="index-project-content" @click="chaoji">
<image src="../../static/index-fenglei10.png" mode="widthFix"></image>
<span>充值赠送</span>
</view>
@ -79,9 +79,9 @@
<image src="../../static/index-fenglei5.png" mode="widthFix"></image>
<span>超值拼团</span>
</view>
<view class="index-project-content" @click="goNav('/pages/my/servicePackage')">
<view class="index-project-content" @click="goNav('/pages/my/indextaociliaoList?type='+106+'&name='+'index')">
<image src="../../static/index-fenglei6.png" mode="widthFix"></image>
<span>超值套餐</span>
<span>服务疗程</span>
</view>
<view class="index-project-content" @click="goNav()">
<image src="../../static/index-fenglei7.png" mode="widthFix"></image>
@ -99,7 +99,7 @@
<view class="index-guanggao width">
<image class="index-guanggao-pintuan" src="../../static/pintuan.png" mode="widthFix"></image>
<view class="index-guanggao-right">
<image class="index-guanggao-right-cika" @click="goNav('/pages/my/onceCardPackage')" src="../../static/cika.png" mode="widthFix"></image>
<image class="index-guanggao-right-cika" @click="goNav('/pages/my/indextaociliaoList?type='+105+'&name='+'index')" src="../../static/cika.png" mode="widthFix"></image>
<image class="index-guanggao-right-yuyue" src="../../static/yuyue.png" mode="widthFix"></image>
</view>
</view>
@ -119,24 +119,23 @@
<view class="index-fujin-view">
<image class="index-fujin-view-img" :src="item.artificerImg" mode=""></image>
<view class="index-fujin-view-text">
<image src="../../static/orderDetail/dingwei.png" mode=""></image>
<image src="../../static/orderDetail/dingwei.png" mode="w"></image>
<span>1.2km</span>
</view>
</view>
<view class="index-fujin-jie">
<view class="index-fujin-jie-view">
<span class="index-fujin-jie-name">{{item.artificerName}}</span>
<span class="index-fujin-jie-id">{{item.classifyName}}</span>
<span class="index-fujin-jie-id">{{item.content}}</span>
</view>
</view>
</view>
</view>
<view class="index-taocan width">
<view class="index-taocan-view">
<view class="index-taocan-view-nav" v-for="item in felNav" :key="item.id" @click="chengFel(item)">
<view class="index-taocan-view-nav-s" @click="tuijian(item)">
<view class="index-taocan-view-nav-s">
<span class="index-taocan-view-nav-text" :class="[currentTabFl==item.id?'activeL':'activeH']">{{item.name}}</span>
<span class="index-taocan-view-nav-jie" :class="[currentTabFl==item.id?'activeXL':'activeXH']">{{item.content}}</span>
</view>
@ -144,13 +143,14 @@
</view>
</view>
<view class="index-card">
<view class="index-card-view">
<view class="index-card-view" v-for="(item,index) in tjData" :key="index" @click="goDatail(item)">
<view class="index-card-view-title">
<view class="index-card-view-title-left">古法十二经络</view>
<image class="index-card-image" :src="item.packageImg" mode=""></image>
<!-- <view class="index-card-view-title-left">{{item.title}}</view> -->
<view class="index-card-view-title-right">助眠解压</view>
</view>
<view class="index-card-mian">
<view class="index-card-mian-title marginTop">古法十二经络SPA</view>
<view class="index-card-mian-title marginTop">{{item.title}}</view>
<view class="index-card-mian-biao marginTop">
<view class="index-card-mian-biao-left">
助眠减压
@ -159,38 +159,13 @@
缓解疲劳
</view>
</view>
<view class="index-card-mian-time marginTop">
<view class="index-card-mian-time marginTop" v-if="item.duration">
<image src="../../static/rumen-time.png" mode="widthFix"></image>
<span>100分钟</span>
<span>{{item.duration}}分钟</span>
</view>
<view class="index-card-mian-money marginTop">
<span class="index-card-mian-money-zhen">388</span>
<span class="index-card-mian-money-jia">500</span>
</view>
</view>
</view>
<view class="index-card-view">
<view class="index-card-view-title">
<view class="index-card-view-title-left">古法十二经络</view>
<view class="index-card-view-title-right">助眠解压</view>
</view>
<view class="index-card-mian">
<view class="index-card-mian-title marginTop">古法十二经络SPA</view>
<view class="index-card-mian-biao marginTop">
<view class="index-card-mian-biao-left">
助眠减压
</view>
<view class="index-card-mian-biao-right">
缓解疲劳
</view>
</view>
<view class="index-card-mian-time marginTop">
<image src="../../static/rumen-time.png" mode="widthFix"></image>
<span>100分钟</span>
</view>
<view class="index-card-mian-money marginTop">
<span class="index-card-mian-money-zhen">388</span>
<span class="index-card-mian-money-jia">500</span>
<span class="index-card-mian-money-zhen">{{item.price}}</span>
<span class="index-card-mian-money-jia">{{item.oldPrice}}</span>
</view>
</view>
</view>
@ -280,6 +255,7 @@
city: '请选择城市',
XCXIsSelect: '否',
currentTabFl: 1,
tjData:[],
felNav:[{
id:1,
content: '大家常买',
@ -340,35 +316,8 @@
starTechnician:[],//
nearbyTechnician:[],//
classifyId: '',
//
goodsList: [
{
id: 1,
name: '大甜梨',
descr: '又大又甜又脆巨好吃',
icon: '../../static/index-nav-6.png'
},{
id: 2,
name: '猕猴桃',
descr: '口感甜酸、可口',
icon: '../../static/index-nav-7.png'
},{
id: 3,
name: '樱桃',
descr: '又大又甜水还多',
icon: '../../static/index-nav-6.png'
},{
id: 4,
name: '牛油果',
descr: '果肉柔软、细腻',
icon: '../../static/index-nav-7.png'
},{
id: 5,
name: '提子',
descr: '又大又甜水还多',
icon: '../../static/index-nav-6.png'
},
]
page:1,
limit:10,
}
},
onLoad() {
@ -401,6 +350,7 @@
})
that.getBannerList()
that.getHomeArtificerList()
that.remen()
},
onShow() {
let that = this
@ -431,13 +381,25 @@
// that.myId = uni.getStorageSync('userId')
},
methods: {
tuijian(item){//
if(item.id==4){
uni.navigateTo({
url:'/pages/my/serviceItems'
})
}
chaoji(){//
uni.navigateTo({
url:'/my/wallet/index'
})
},
xinren(){//
var that=this;
that.$Request.get('/app/coupon/insertNewUserCoupon').then(res => {
if (res.code == 0) {
uni.showToast({
title:res.msg
})
}else{
uni.showToast({
icon:'error',
title:res.msg
})
}
})
},
goNav(e){
if(e!=undefined){
@ -450,6 +412,39 @@
})
}
},
// chooseItem(item){
// },
chooseItem(e) {//item
console.log('授权', uni.getStorageSync('sendMsg'))
if (uni.getStorageSync('sendMsg')) {
console.log('授权+1')
wx.requestSubscribeMessage({
tmplIds: this.arr,
success(re) {
console.log(JSON.stringify(re), 111111111111)
var datas = JSON.stringify(re);
if (datas.indexOf("accept") != -1) {
console.log(re)
}
},
fail: (res) => {
console.log(res)
}
})
}
if (this.token) {
uni.navigateTo({
url: '/pages/therapist/orderDetail?artificerId=' + e.artificerId + "&classifyId=" + this
.tabIndex
});
} else {
uni.navigateTo({
url: '/pages/public/login'
});
}
},
goOrder(e) {
console.log('授权', uni.getStorageSync('sendMsg'))
@ -471,8 +466,7 @@
}
if (this.token) {
uni.navigateTo({
url: '/pages/therapist/orderDetail?artificerId=' + e.artificerId + "&classifyId=" + this
.tabIndex
url: '/pages/therapist/orderDetail?artificerId=' + e.artificerId + "&classifyId=" + this.tabIndex
});
} else {
uni.navigateTo({
@ -572,8 +566,59 @@
}
});
},
goDatail(item){//
if(this.currentTabFl=='1'){
uni.navigateTo({
url:'/pages/my/fuwuDateil?id='+item.massageTypeId+'&limit='+this.limit+'&page='+this.page
})
}else if(this.currentTabFl=='2'){
uni.navigateTo({
url:'/pages/my/serviceOderDrtail?id='+item.id+'&limit='+this.limit+'&page='+this.page+'&name='+'index'+'&isCanCoupon='+item.isCanCoupon
})
}
},
chengFel(item){//
this.currentTabFl=item.id
this.currentTabFl=item.id;
if(this.currentTabFl=='1'){
this.remen()
}else if(this.currentTabFl=='2'){
this.tjtaocan()
}else if(this.currentTabFl=='3'){
uni.navigateTo({
url:'/pages/my/fuwuxiangm'
})
}else{
uni.navigateTo({
url:'/pages/my/fuwuGengduo'
})
}
},
tjtaocan(){//
this.$Request.get("/app/massage/package/findPage", {
type:'104',
page:'1',
limit:'2'
}).then(res => {
if (res.code == 0) {
if (res.data) {
this.tjData = res.data.list
}
}
});
},
remen(){//
this.$Request.get("/app/artificer/selectMassageTypePage", {
by: '3',
status:'1',
page:'1',
limit:'2'
}).then(res => {
if (res.code == 0) {
if (res.data) {
this.tjData = res.data.list
}
}
});
},
swichMenu(id) {//
this.currentTab = id
@ -593,17 +638,24 @@
this.swichMenu(index)
},
//item
chooseItem(item){
this.goOrder(item);
console.log("推荐明星",item)
// item
},
}
}
</script>
<style scoped>
.index-card-image{
width: 100%;
height: 100%;
}
.index-card-view-title{
position: relative;
width: 100%;
height: 337.5rpx;
display: flex;
flex-direction: row;
border-radius: 30px;
}
/deep/.u-select{
width: 100%;
height: 100%;
@ -618,7 +670,7 @@
}
/deep/.u-content,/deep/.u-search{
flex: none;
width: 557.08rpx;
width: 230px;
border-radius: 32rpx !important;
height: 64rpx !important;
}
@ -808,6 +860,7 @@
font-weight: bold;
font-size: 31rpx;
color: #333333;
text-align: center;
}
.marginTop{
margin-bottom: 10px;
@ -830,7 +883,7 @@
font-size: 21rpx;
color: #fff;
position: absolute;
margin-left: 85px;
/* margin-left: 85px; */
}
.index-card-view-title-left{
width: 95px;
@ -843,15 +896,7 @@
border-top-left-radius: 30px;
background-color: rgba(176, 176, 176, 0.48);
}
.index-card-view-title{
position: relative;
width: 100%;
height: 337.5rpx;
background: url(../../static/yuyue.png) 100% no-repeat;
display: flex;
flex-direction: row;
border-radius: 30px;
}
.index-card-mian-time,.index-card-mian-money{
display: flex;
flex-direction: row;
@ -884,6 +929,14 @@
display: flex;
flex-direction: column;
}
.tuijian-view{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
margin-top: 15px;
}
.index-card{
width: 100%;
display: flex;
@ -927,7 +980,7 @@
justify-content: space-between;
}
.index-taocan{
margin: 54px auto 23px auto;
margin: 15px auto 0px auto;
display: flex;
flex-direction: column;
}
@ -935,6 +988,16 @@
font-weight: 400;
font-size: 25rpx;
color: #999999;
text-align: center;
display: table;
width: 100px;
line-height: 15px;
white-space: pre-wrap;
margin-top: 10px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
}
.index-fujin-jie-name{
margin-bottom: 5px;
@ -946,14 +1009,13 @@
width: 100%;
height: 290px;
background: linear-gradient(0deg, #CFFAEC, #F4FFFB);
margin: 20px 0;
}
.index-fujin-jie-view{
width: 222.22rpx;
display: flex;
flex-direction: column;
align-items: center;
margin-top: 15px;
margin-top: 10px;
}
.index-fujin-jie{
width: 100%;

View File

@ -130,22 +130,14 @@
备注
</view>
<view style="color: #999999;font-size: 22rpx;">
<!-- <input v-model="beizhu" type="textarea" placeholder="请输入备注" maxlength="300" v-if="isTrues" />
<input v-model="beizhu" type="textarea" placeholder="请输入备注" maxlength="300" :disabled="true"
v-else /> -->
<u-input v-model="beizhu" type="textarea" placeholder="请输入备注" :clearable="false"
maxlength="300" :custom-style="boxStyle" height="200" />
</view>
</view>
</view>
</view>
<!-- <view class="footer" style="font-size: 26upx;" @tap="isShowAgree">
<view style="font-size: 26upx;display: flex;align-items: center;" class="cuIcon"
:class="showAgree?'cuIcon-radiobox':'cuIcon-round'">
<text>我已阅读并同意</text>
<navigator url="/my/setting/about?id=391&name=下单协议" open-type="navigate">下单协议</navigator>
</view>
</view> -->
<view class="text-white flex justify-between cu-bar foot bg padding-lr" style="color: #096f4b;"
v-if="cxSel">
<view style="color: #333;">
@ -220,61 +212,11 @@
<view class="btn" @tap="goFaBu(item)">立即使用</view>
</view>
</view>
<!-- <view style="width: 100%;text-align: center;" v-for='(item,index) in CouponIssueList' :key='index'>
<view
style="background: #fcf3e8;width: 100%;height: 130rpx;border-radius: 10rpx;margin-top: 20rpx;">
<view style="display: flex;color: #1a1a1a;width: 100%;">
<view
style="line-height: 130rpx;margin-left: 0rpx;font-size: 40rpx;color: #1a1a1a;font-weight: 600;width: 150rpx;">
<text style="font-size: 20upx;"></text>{{item.money}}
</view>
<view style="margin-left: 20rpx;width: 50%;text-align: left;">
<view style="margin-top: 25rpx;">
{{item.couponName}}</view>
<view style="margin-top: 10rpx;font-size: 26rpx;">{{item.minMoney}}{{item.money}}</view>
</view>
<view
style="height: 105rpx;width: 2rpx;background: #1a1a1a;margin-left: 20rpx;margin-top: 15rpx;">
</view>
<view
style="color: #1a1a1a;line-height: 130rpx;height: 130rpx;width: 145rpx;font-weight: 600;"
@tap='goFaBu(item)'>立即使用</view>
</view>
</view>
</view> -->
</scroll-view>
</view>
</u-popup>
<!-- <u-popup v-model="showpay" mode="bottom" :closeable="closeable" style="position: fixed;bottom: 0;"> -->
<!-- <view style="width: 100%;height: 100vh;background: rgba(0,0,0,0.8);z-index: 991;position: absolute;top: 0;left: 0;" v-if="showpay" @touchmove.stop.prevent="moveHandle">
<view class="popup_pay" >
<view style="background-color: #fff;">
<view style="width: 90%;margin: 0 auto;text-align: end;margin-top: 15px;" @tap.stop='close()'>
<u-icon name="close-circle" size="40" color="#CCCCCC"></u-icon>
</view>
<view style="padding: 0 20upx;margin-bottom: 20rpx;">
<view
style="display: flex;height: 100upx;align-items: center;padding: 20upx 0;justify-content: center;"
v-for="(item,index) in openLists" :key='index'>
<image :src="item.image" style="width: 55upx;height: 55upx;border-radius: 50upx;">
</image>
<view style="font-size: 30upx;margin-left: 20upx;width: 70%;">
{{item.text}}
</view>
<radio-group name="openWay" style="margin-left: 45upx;" @tap.stop='selectWay(item)'>
<label class="tui-radio">
<radio color="#096f4b" :checked="openWay === item.id ? true : false" />
</label>
</radio-group>
</view>
</view>
</view>
<view class="pay_btn" @click="pay()">确认支付</view>
</view>
</view> -->
<!-- </u-popup> -->
<!-- <u-picker v-model="addshow" mode="region" @confirm="addData"></u-picker> -->
</view>
<u-skeleton :loading="loading" :animation="true" elColor='#FFFFFF' bgColor='#FFFFFF'></u-skeleton>
</view>
@ -379,7 +321,7 @@
this.tripWay = option.tripWay;
}
this.isVIP = uni.getStorageSync('isVIP')
this.getDet()
// this.getDet()
this.getordertherapist()
this.XCXIsSelect = this.$queue.getData("XCXIsSelect");
var date = new Date();

414
pages/my/cika.vue Normal file
View File

@ -0,0 +1,414 @@
<!-- 自定义下拉刷新与上拉加载演示(vue) -->
<template>
<view class="content">
<z-paging ref="paging" v-model="dataList" @query="queryList">
<!-- 需要固定在顶部不滚动的view放在slot="top"的view中如果需要跟着滚动则不要设置slot="top" -->
<!-- 注意此处的z-tabs为独立的组件可替换为第三方的tabs若需要使用z-tabs请在插件市场搜索z-tabs并引入否则会报插件找不到的错误 -->
<template #top>
<view class="service-head-top">
<view class="service-head-top-left">
<image @click="backImg" src="../../static/fanhui.png" mode="widthFix"></image>
<span>项目次卡</span>
</view>
<view>
<uni-search-bar @service="serviceTrue" @confirm="search" :cancelext="'取消'" v-model="searchValue" @input="input"
@clear="clear">
</uni-search-bar>
<view class="search-btn" @click="searchBtn">
搜索
</view>
</view>
</view>
<!-- <view class="fenlei">
<z-tabs class="z-tabs-fenlei" :list="tabList" @change="tabChange" @changeClick="changeClick"/>
</view> -->
</template>
<!-- 自定义下拉刷新view(如果use-custom-refresher为true且不设置下面的slot="refresher"此时不用获取refresherStatus会自动使用z-paging自带的下拉刷新view) -->
<!-- 注意注意注意字节跳动小程序中自定义下拉刷新不支持slot-scope将导致custom-refresher无法显示 -->
<!-- 如果是字节跳动小程序请参照sticky-demo.vue中的写法此处使用slot-scope是为了减少data中无关变量声明降低依赖 -->
<template #refresher="{refresherStatus}">
<!-- 此处的custom-refresh为demo中自定义的组件非z-paging的内置组件请在实际项目中自行创建这里插入什么view下拉刷新就显示什么view -->
<custom-refresher :status="refresherStatus" />
</template>
<!-- 自定义没有更多数据view -->
<template #loadingMoreNoMore>
<!-- 此处的custom-nomore为demo中自定义的组件非z-paging的内置组件请在实际项目中自行创建这里插入什么view没有更多数据就显示什么view -->
<custom-nomore />
</template>
<!-- 如果希望其他view跟着页面滚动可以放在z-paging标签内 -->
<view class="item" v-for="(item,index) in dataList" :key="index" @click="itemClick(item)">
<!-- <view class="item-title">{{item.title}}</view>
<view class="item-detail">{{item.detail}}</view> -->
<!-- <view class="item-line"></view> -->
<view class="item-img">
<image :src="item.packageImg" mode=""></image>
<span class="img-span">{{item.status=='1'?'未用完':item.status=='2'?'退款':'已用完'}}</span>
</view>
<view class="item-view">
<view class="item-view-title">
{{item.title}}
</view>
<view class="item-view-xiangmu">
<span class="xiaoer item-view-biao">{{item.classifyName}}</span>
<span>已售{{item.sales}}w+ | 好评{{item.esteemRate}}%</span>
</view>
<view class="item-view-jianjie">
{{item.content}}
</view>
<view class="item-view-bottom">
<view class="item-view-bottom-qian">
<span></span>
<span>{{item.price}}</span>
<span>/元套</span>
<span>{{item.oldPrice}}</span>
</view>
<view class="item-view-bottom-btn">
查看
</view>
</view>
</view>
</view>
</z-paging>
</view>
</template>
<script>
export default {
data() {
return {
myId: '',
// v-model
dataList: [],
tabList: [],
typeData:'105',
tabIndex: 0,
searchValue:'',
serviceTrue:true,
page:1,
limit:10,
titleNmae:''
}
},
onLoad(){
this.myId = uni.getStorageSync('userId')
this.getData()
},
methods: {
input(res) {//
this.searchValue=res;
console.log('----input:', res)
},
searchBtn(){//
if(this.searchValue!=""){
this.getData()
}
},
getData(){
let data = {
userId: this.myId,
type: this.typeData,
page: this.page,
limit: this.limit,
title:this.searchValue,
}
this.$Request.get('/app/user/package/findMyPackageList', data).then(res => {
if (res.code == 0) {
this.dataList=res.data.records;
}
})
},
tabChange(index) {
this.tabIndex = index;
//tabreloadqueryList
//reloadtruereloadfalse
this.$refs.paging.reload(true);
},
queryList(pageNo, pageSize) {
// console.log(pageNo,pageSize,this.tabIndex)
//
// pageNopageSize
//
const params = {
userId: this.myId,
page: pageNo,
limit: pageSize,
type: this.typeData,
title:''
}
this.$Request.get('/app/user/package/findMyPackageList',params).then(res => {
// z-paging
this.$refs.paging.complete(res.data.records);
}).catch(res => {
// this.$refs.paging.complete(false);
// catchz-paging
// uni.$emit('z-paging-error-emit');
this.$refs.paging.complete(false);
})
},
backImg(){//
uni.reLaunch({
url:'/pages/my/index'
})
},
clear(res) {
this.getData()
},
itemClick(item) {
uni.navigateTo({
url:'/pages/my/cikarDrtail?id='+item.id+'&limit='+this.limit+'&page='+this.page+'&name='+'my'
})
}
}
}
</script>
<style scoped>
.item-view-bottom-btn{
text-align: center;
width: 131rpx;
height: 50rpx;
line-height: 50rpx;
background: linear-gradient(90deg, #019C88, #0FA78B, #35C495);
border-radius: 10rpx;
font-weight: bold;
font-size: 24rpx;
color: #FFFFFF;
}
.item-view-bottom-qian span:nth-child(4){
font-weight: bold;
font-size: 31rpx;
color: #848484;
text-decoration-line: line-through;
margin-left: 5px;
}
.item-view-bottom-qian span:nth-child(1){
font-weight: 400;
font-size: 25rpx;
color: #F95900;
}
.item-view-bottom-qian span:nth-child(2){
font-weight: bold;
font-size: 36.81rpx;
color: #F95900;
}
.item-view-bottom-qian span:nth-child(3){
font-weight: 400;
font-size: 25rpx;
color: #F95900;
}
.item-view-bottom{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.item-view-jianjie{
font-weight: 400;
font-size: 22rpx;
color: #848484;
margin:5px 0px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 显示的行数,可以根据需要修改 */
overflow: hidden;
text-overflow: ellipsis;
}
.item-view-biao{
padding: 1px 2px;
border-radius: 6rpx;
}
.tuina{
background-color:#d1f2df;
color: #17984d;
}
.xiaoer{
background-color:#f1f8d7;
color: #58b314;
}
.taishi{
background-color:#e5d5c6;
color: #805d39;
}
.kangfu{
background-color:#fcf3da;
color: #ff8600;
}
.item-view-xiangmu span:nth-child(2){
font-weight: normal;
color: #666666;
margin-left: 5px;
}
.item-view-xiangmu{
width: 100%;
display: flex;
flex-direction: row;
font-weight: 400;
font-size: 21rpx;
margin-top: 5px;
}
.item-view-title{
font-weight: bold;
font-size: 33rpx;
color: #333333;
}
.item-view{
width: 55%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
}
.item-img{
width: 285rpx;
height: 120px;
border-radius: 14rpx;
position: relative;
}
.img-span{
padding: 2px 5px;
font-weight: 400;
font-size: 8px;
color: #FFFFFF;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-radius: 7px 0px 7px 0px;
position: absolute;
bottom: 0px;
right: 0;
margin-bottom: 5px;
margin-right: 5px;
}
.item-img image{
width: 100%;
height: 100%;
}
.item {
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
height: 140px;
background: #FFFFFF;
border-radius: 21rpx;
margin-top:20px;
align-items: center;
padding: 0px 5px;
}
.item-detail {
padding: 5rpx 15rpx;
border-radius: 10rpx;
font-size: 28rpx;
color: white;
background-color: #007AFF;
}
.item-line {
position: absolute;
bottom: 0rpx;
left: 0rpx;
height: 1px;
width: 100%;
background-color: #eeeeee;
}
/deep/.zp-paging-container{
background-color: #f7f7f7;
width:100%;
}
/deep/.zp-paging-container-content{
width: 95%;
margin: 0 auto;
}
.fenlei{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.index-fenl-title{
width: 81rpx;
text-align: center;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
font-weight: bold;
font-size: 34rpx;
color:#019C88;
}
.index-fenl-title-bottom{
position: absolute;
bottom: 0;
margin-bottom: 0px;
width: 81rpx;
height: 14rpx;
border-radius: 7rpx;
background: linear-gradient(-48deg,rgba(1, 156, 136, 0.35),rgba(45, 196, 142, 0.35));
}
/deep/.uni-searchbar__cancel{
display: none;
}
.search-btn{
text-align: center;
line-height: 31px;
color: #fff;
position: absolute;
right: 0;
top: 0;
margin-top:9.4px;
margin-right: 11px;
height: 32px !important;
}
/deep/.uni-searchbar__box-icon-search,.search-btn{
width: 101rpx;
height: 60rpx;
background: #18A689;
border-radius: 31rpx;
}
/deep/.uni-searchbar__box{
height: 31px;
border-radius: 15px !important;
background-color: #fff !important;
border: 2px solid #E5E5E5;
padding: 0px;
display: flex;
flex-direction: row;
flex-flow: row-reverse;
position: relative;
}
/deep/.uni-searchbar{
width: 240px;
border-radius: 31rpx;
}
.service-head-top-left image{
width: 25px;
height: 30rpx;
margin-right: 10px;
}
.service-head-top-left span{
font-weight: bold;
font-size: 44rpx;
color: #171717;
}
.service-head-top-left{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.service-head-top{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
</style>

1269
pages/my/cikarDrtail.vue Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +1,21 @@
<template>
<view class="content">
<view class="header">
<view class="header-top">
<image src="../../static/servicePackage/member_ba.png" mode=""></image>
<view class="header-top" :style="backgroundStyle">
<image src="../../static/servicePackage/member_ba.png" mode="widthFix" v-if="!isVIP"></image>
<image src="../../static/activate2.png" mode="widthFix" v-if="isVIP"></image>
</view>
<view class="header-bottom">
<view class="header-bottom-top">
<view class="header-bottom-title">
<view class="header-bottom-title-text">
<span>全身经络SPA </span>
<span class="header-bottom-title-liao">疗程</span>
<span>{{getList.title}}</span>
<span class="header-bottom-title-liao">
套餐
</span>
</view>
<view class="header-bottom-title-num">
<span>3856</span>
<span>{{getList.sales}}</span>
<span> 人选择</span>
</view>
@ -21,15 +24,15 @@
<view class="header-bottom-money">
<view class="header-bottom-money-zhen">
<span></span>
<span>365</span>
<span>{{getList.price}}</span>
<span>/元套</span>
</view>
<view class="header-bottom-money-jia">
430
{{getList.oldPrice}}
</view>
</view>
</view>
<view class="header-bottom-title-bottom">
<view class="header-bottom-title-bottom" v-if="dataList.titleNmae=='服务疗程'">
<image src="../../static/my-cika.png" mode=""></image>
<span>30天一疗程每隔三天一次</span>
</view>
@ -64,10 +67,10 @@
<span class="detail-foot-mian-top-text">不限性别</span>
</view>
<view class="detail-foot-mian-top-bottom">
<span class="detail-foot-mian-top-title">性别限制: </span>
<span class="detail-foot-mian-top-title">适应人群: </span>
<span class="detail-foot-mian-top-text">
1.孕期生理期禁做调理
2.血小板减少有出血倾适用人群向等血液病患者禁做调理3急性损伤引起的骨折不明原因的肿痛和急性软2.血小板减少有出血倾适用人群向等血液病患者禁做调理3急性损伤引起的骨折不明原因的肿痛和急性软2.血小板减少有出血倾适用人群向等血液病患者禁做调理3急性损伤引起的骨折不明原因的肿痛和急性软2.血小板减少有出血倾适用人群向等血液病患者禁做调理3急性损伤引起的骨折不明原因的肿痛和急性软2.血小板减少有出血倾适用人群向等血液病患者禁做调理3急性损伤引起的骨折不明原因的肿痛和急性软2.血小板减少有出血倾适用人群向等血液病患者禁做调理3急性损伤引起的骨折不明原因的肿痛和急性软2.血小板减少有出血倾适用人群向等血液病患者禁做调理3急性损伤引起的骨折不明原因的肿痛和急性软</span>
{{getList.applyPeople}}
</span>
</view>
</view>
</view>
@ -77,7 +80,7 @@
<span class="detail-foot-nav-bor"></span>
</view>
<view class="detail-foot-mian">
<image src="../../static/img/user.png" mode=""></image>
<image class="detail-foot-mian-img" :src="getList.contentImg" mode="widthFix"></image>
<view class="detail-foot-mian-txet">
<span>SCIENTIFIC WAIST</span>
<span>科学护腰不上脊椎</span>
@ -85,7 +88,7 @@
</view>
</view>
</view>
<view class="detail-btn">
<view class="detail-btn" v-if="dataList.name=='my'" @click="goumai(getList)">
立即购买
</view>
</view>
@ -94,10 +97,75 @@
export default{
data(){
return{
dataList:[],
getList:[],
isVIP:false,
// URLAPI
backgroundImageUrl: '',
nameText:''
}
},
computed: {
backgroundStyle() {
return {
backgroundImage: `url(${this.backgroundImageUrl})`,
backgroundSize: 'cover', //
};
}
},
onLoad(e) {
var that=this;
that.dataList=e;
that.isVIP=this.$queue.getData('isVIP');
if(that.dataList.name=='index'){
that.getIndexData()
}else{
that.getData();
}
},
methods:{
goumai(item){//
this.$queue.setData('getJishi','')
this.$queue.setData('ordersId',this.dataList.massageTypeId);
this.$queue.setData('userPackageDetailId',this.dataList.id);
this.$queue.setData('daibudan','');
uni.navigateTo({
url:'/my/order/payModify?ordersId='+this.dataList.massageTypeId
})
},
getIndexData(){//
var that=this;
let data = {
id: that.dataList.id,
limit: that.dataList.limit,
mainId: that.dataList.mainId,
massageTypeId:that.dataList.massageTypeId,
page:that.dataList.page,
}
that.$Request.get('/app/massage/packageDetail/getAppPackageDetail',data).then(res => {
if (res.code == 0) {
that.getList=res.data;
that.backgroundImageUrl=that.getList.massageImg
}
})
},
getData(){
var that=this;
let data = {
id: that.dataList.id,
limit: that.dataList.limit,
mainId: that.dataList.mainId,
massageTypeId:that.dataList.massageTypeId,
page:that.dataList.page,
}
that.$Request.get('/app/user/package/detail/getMyPackageDetail', data).then(res => {
if (res.code == 0) {
that.getList=res.data;
that.backgroundImageUrl=that.getList.massageImg
}
})
},
}
}
</script>
@ -153,9 +221,9 @@
align-items: center;
margin-top: 20px;
}
.detail-foot-mian image{
.detail-foot-mian-img{
width: 100%;
height: 369.44rpx;
height:auto;
}
.detail-foot-mian-top-bottom{
margin-top: 10px;
@ -219,6 +287,7 @@
display: flex;
flex-direction: column;
position: relative;
margin-bottom: 10px;
}
.detail-foot{
width: 100%;

514
pages/my/fuwuDateil.vue Normal file
View File

@ -0,0 +1,514 @@
<template>
<view class="content">
<view class="header">
<view class="header-top" :style="backgroundStyle">
<image src="../../static/servicePackage/member_ba.png" mode="widthFix" v-if="!isVIP"></image>
<image src="../../static/activate2.png" mode="widthFix" v-if="isVIP"></image>
</view>
<view class="header-bottom">
<view class="header-bottom-top">
<view class="header-bottom-title">
<view class="header-bottom-title-text">
<span>{{getList.title}}</span>
<span class="header-bottom-title-liao">
{{getList.classifyName}}
</span>
</view>
<view class="header-bottom-title-num">
<span>{{getList.sales}}</span>
<span> 人选择</span>
</view>
</view>
<view class="header-bottom-money-view">
<view class="header-bottom-money">
<view class="header-bottom-money-zhen">
<span></span>
<span>{{getList.price}}</span>
<span>/元套</span>
</view>
<view class="header-bottom-money-jia">
{{getList.oldPrice}}
</view>
</view>
</view>
<view class="header-bottom-title-bottom" v-if="dataList.titleNmae=='服务疗程'">
<image src="../../static/my-cika.png" mode=""></image>
<span>30天一疗程每隔三天一次</span>
</view>
</view>
<view class="header-bottom-foot">
<view class="header-bottom-foot-title">服务保障</view>
<view class="header-bottom-foot-cont">
<view class="header-bottom-foot-view">
<image class="header-bottom-foot-view-img1" src="../../static/servicePackage/idCard.png" mode=""></image>
<span>未服务全额退款</span>
</view>
<view class="header-bottom-foot-view" style="margin: 0px 7px;">
<image class="header-bottom-foot-view-img2" src="../../static/servicePackage/money.png" mode=""></image>
<span>不满意重做</span>
</view>
<view class="header-bottom-foot-view">
<image class="header-bottom-foot-view-img3" src="../../static/servicePackage/shuangyue.png" mode=""></image>
<span>最快30分钟上门</span>
</view>
</view>
</view>
</view>
</view>
<view class="detail-foot">
<view class="detail-foot-nav">
<span class="detail-foot-nav-text">适用说明</span>
<span class="detail-foot-nav-bor"></span>
</view>
<view class="detail-foot-mian">
<view class="detail-foot-mian-top">
<span class="detail-foot-mian-top-title">性别限制: </span>
<span class="detail-foot-mian-top-text">不限性别</span>
</view>
<view class="detail-foot-mian-top-bottom">
<span class="detail-foot-mian-top-title">适应人群: </span>
<span class="detail-foot-mian-top-text">
{{getList.applyPeople}}
</span>
</view>
</view>
</view>
<view class="detail-foot">
<view class="detail-foot-nav">
<span class="detail-foot-nav-text">项目详情</span>
<span class="detail-foot-nav-bor"></span>
</view>
<view class="detail-foot-mian">
<image class="detail-foot-mian-img" v-for="(item,index) in contentImg" :key="index" :src="item" mode="widthFix"></image>
<view class="detail-foot-mian-txet">
<span>SCIENTIFIC WAIST</span>
<span>科学护腰不上脊椎</span>
<span>让您的腰不在盲目呵护!避免二次伤害!</span>
</view>
</view>
</view>
<view class="detail-btn" v-if="getList.status=='1'" @click="goumai(getList)">
立即购买
</view>
</view>
</template>
<script>
export default{
data(){
return{
dataList:[],
getList:[],
isVIP:false,
// URLAPI
backgroundImageUrl: '',
myId:'',
contentImg:[]
}
},
computed: {
backgroundStyle() {
return {
backgroundImage: `url(${this.backgroundImageUrl})`,
backgroundSize: 'cover', //
};
}
},
onLoad(e) {
var that=this;
that.dataList=e;
that.isVIP=this.$queue.getData('isVIP');
that.myId = uni.getStorageSync('userId');
that.getData()
},
methods:{
goumai(item){//
this.$queue.setData('getJishi','')
this.$queue.setData('userPackageDetailId','');
this.$queue.setData('ordersId',this.dataList.id);
this.$queue.setData('daibudan','');
uni.navigateTo({
url:'/my/order/payModify?ordersId='+this.dataList.id
})
},
getData(){
var that=this;
let data = {
userId: that.myId,
limit: that.dataList.limit,
mainId: that.dataList.mainId,
massageTypeId:that.dataList.id,
page:that.dataList.page,
}
that.$Request.get('/app/artificer/selectMassageTypeById', data).then(res => {
if (res.code == 0) {
that.getList=res.data;
that.contentImg=res.data.contentImg.split(",");
that.backgroundImageUrl=that.getList.massageImg;
}
})
},
}
}
</script>
<style scoped>
.header-bottom-title-liao{
display: inline-block;
padding: 0 7px;
height: 16px;
line-height: 16px;
text-align: center;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-radius: 7px;
margin-left: 5px;
font-weight: bold;
font-size: 8px;
border-top-left-radius: 20px;
border-bottom-right-radius: 20px;
color: #fff;
}
.detail-btn{
width:95%;
height: 92rpx;
line-height: 92rpx;
background: linear-gradient(90deg, #019C88, #28BA92, #35C495);
border-radius: 46rpx;
margin: 0 auto;
text-align: center;
font-weight: 400;
font-size: 42rpx;
color: #FFFFFF;
}
.detail-foot-mian-txet span:nth-child(1){
color: #777777;
font-size: 12px;
font-weight: bold;
margin-bottom: 5px;
}
.detail-foot-mian-txet span:nth-child(2){
color: #333;
font-size: 15px;
font-weight: bold;
margin-bottom:3px;
}
.detail-foot-mian-txet span:nth-child(3){
color: #777777;
font-size: 14px;
font-weight: bold;
}
.detail-foot-mian-txet{
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
margin-top: 20px;
}
.detail-foot-mian-img{
width: 100%;
height:auto;
}
.detail-foot-mian-top-bottom{
margin-top: 10px;
}
.detail-foot-mian-top-title{
color: #333333;
}
.detail-foot-mian-top-text{
color: #777777;
width:83%;
}
.detail-foot-mian-top,.detail-foot-mian-top-bottom{
width: 100%;
display: flex;
flex-direction: row;
font-weight: bold;
font-size: 22rpx;
}
.header-bottom-title-bottom span{
font-weight: bold;
font-size: 22rpx;
color: #20AB95;
}
.header-bottom-title-bottom image{
width: 34.03rpx;
height: 30.56rpx;
margin-right: 3px;
}
.header-bottom-title-bottom{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
margin: 5px 0px;
}
.shouc image{
width: 34.03rpx;
height: 32.64rpx;
}
.shouc{
display: flex;
align-items: center;
justify-content: center;
}
.detail-foot-nav-bor{
width: 64px;
height: 11rpx;
border-radius: 6rpx;
position: absolute;
bottom: 0;
background: linear-gradient(90deg,rgba(234, 248, 245,0.7),rgba(132, 211, 196,0.7));
}
.detail-foot-nav-text{
font-weight: bold;
font-size: 32rpx;
color: #000000;
}
.detail-foot-nav{
width: 90%;
display: flex;
flex-direction: column;
position: relative;
margin-bottom: 10px;
}
.detail-foot{
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
padding: 15px 0px;
}
.tese span:nth-child(1){
font-weight: bold;
font-size: 22rpx;
color: #333333;
}
.tese span:nth-child(2){
font-weight: 400;
font-size: 22rpx;
color: #8D9194;
}
.tese{
width: 100%;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 显示的行数,可以根据需要修改 */
overflow: hidden;
text-overflow: ellipsis;
}
.detail-foot-list-top span:nth-child(1){
font-weight: bold;
font-size: 31rpx;
color: #3F3F3F;
}
.detail-foot-list-top span:nth-child(2){
width: 76rpx;
height: 33rpx;
line-height: 33rpx;
text-align: center;
border-radius: 16rpx;
border: 1px solid #7D7D7D;
font-weight: 400;
font-size: 20rpx;
color: #777777;
margin: 0px 25px 0px 5px;
}
.detail-foot-list-top span:nth-child(3){
font-weight: 400;
font-size: 22rpx;
color: #777777;
}
.detail-foot-mian{
width: 95%;
display: flex;
flex-direction: column;
margin: 0 auto;
background-color: #fff;
border-radius: 21rpx;
padding: 15px;
}
.jianjie{
font-weight: 400;
font-size: 22rpx;
color: #8D9194;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 显示的行数,可以根据需要修改 */
overflow: hidden;
text-overflow: ellipsis;
}
.header-bottom-mian{
margin: 10px 0px;
}
.header-bottom-mian-title{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
margin-bottom: 6px;
}
.header-bottom-mian-title span{
font-weight: 400;
font-size: 26rpx;
color: #20AB95;
margin-left: 5px;
}
.header-bottom-mian-title image{
width: 30.56rpx;
height: 29.86rpx;
}
.header-bottom-foot-view-img1{
width: 22.92rpx;
height: 17.36rpx;
}
.header-bottom-foot-view-img2{
width: 16.67rpx;
height: 16.67rpx;
}
.header-bottom-foot-view-img3{
width: 15.97rpx;
height: 18.06rpx;
}
.header-bottom-foot-view image{
margin-right: 3px;
}
.header-bottom-foot-view{
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
padding: 0 5px;
height: 22px;
line-height: 22px;
background-color: rgba(8, 162, 138, 0.1);
border-radius: 8px;
font-weight: 400;
font-size: 8px;
color: #029D88;
}
.header-bottom-foot-title{
width:100%;
height: 22px;
line-height: 22px;
text-align: left;
font-weight: 600;
font-size: 23rpx;
color: #08A28A;
margin-top: 5px;
}
.header-bottom-foot-cont{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.header-bottom-foot{
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
}
.header-bottom-money-jia{
font-weight: bold;
font-size: 28rpx;
color: #848484;
line-height: 37rpx;
text-decoration-line: line-through;
margin-left: 5px;
}
.header-bottom-money-zhen span{
color: #F95900;
}
.header-bottom-money-zhen span:nth-child(1){
font-size: 25rpx;
}
.header-bottom-money-zhen span:nth-child(2){
font-size:36.81rpx;
font-weight: bold;
}
.header-bottom-money-zhen span:nth-child(3){
font-size: 25rpx;
}
.header-bottom-money-zhen{
display: flex;
flex-direction: row;
align-items: baseline;
}
.header-bottom-money-view{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
margin-top:5px;
}
.header-bottom-money{
width: 100%;
display: flex;
flex-direction: row;
align-items: flex-end;
}
.header-bottom-title-num span{
font-weight: bold;
font-size: 25rpx;
}
.header-bottom-title-num span:nth-child(1){
color: #08A28A;
}
.header-bottom-title-num span:nth-child(2){
color: #848485;
margin-left: 5px;
}
.header-bottom-title-text{
font-weight: bold;
font-size: 35rpx;
color: #13141A;
}
.header-bottom-title{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.header-bottom-top{
width: 100%;
display: flex;
flex-direction: column;
}
.header-bottom{
width: 100%;
background-color: #fff;
padding: 15px;
display: flex;
flex-direction: column;
}
.header-top image{
width: 706.25rpx;
height: 105.07rpx;
}
.header-top{
width: 100%;
height: 745.83rpx;
background-image: url('../../static/servicePackage/display.png');
background-size: 100%;
background-repeat: no-repeat;
display: flex;
align-items: flex-end;
justify-content: center;
}
.header{
width: 100%;
display: flex;
flex-direction: column;
}
.content{
width: 100%;
height: auto;
background-color: #f7f7f7;
}
</style>

420
pages/my/fuwuGengduo.vue Normal file
View File

@ -0,0 +1,420 @@
<!-- 自定义下拉刷新与上拉加载演示(vue) -->
<template>
<view class="content-view">
<view class="service-head-top">
<view class="service-head-top-left">
<image @click="backImg" src="../../static/fanhui.png" mode="widthFix"></image>
<span>更多推荐</span>
</view>
<view>
<uni-search-bar @service="serviceTrue" @confirm="search" :cancelext="'取消'" v-model="searchValue" @input="input"
@clear="clear">
</uni-search-bar>
<view class="search-btn" @click="searchBtn">
搜索
</view>
</view>
</view>
<!-- <view class="fenlei">
<z-tabs class="z-tabs-fenlei" :list="tabList" @change="tabChange" @changeClick="changeClick"/>
</view> -->
<t-refresh ref="refresh" v-if="dataList.length>0" @refresh="refresh" @loadMore="loadMore" :loadingType="loadingType" :tPadding="0">
<template slot="content">
<view class="item" v-for="(item,index) in dataList" :key="index" @click="itemClick(item)">
<view class="item-img">
<image :src="item.packageImg" mode=""></image>
</view>
<view class="item-view">
<view class="item-view-title">
{{item.title}}
</view>
<!-- <view class="item-view-xiangmu">
<span class="xiaoer item-view-biao">{{item.classifyName}}</span>
<span>已售{{item.sales}}w+ | 好评{{item.esteemRate}}%</span>
</view> -->
<view class="item-view-jianjie">
{{item.content}}
</view>
<view class="item-view-bottom">
<view class="item-view-bottom-qian">
<span></span>
<span>{{item.price}}</span>
<span>/元套</span>
<span>{{item.oldPrice}}</span>
</view>
<view class="item-view-bottom-btn">
查看
</view>
</view>
</view>
</view>
</template>
</t-refresh>
<empty v-if="dataList.length==0"></empty>
</view>
</template>
<script>
import empty from '@/components/empty.vue'
import tRefresh from "@/components/t-refresh/t-refresh.vue"
export default {
components:{tRefresh,empty},
data() {
return {
loadingType:0,
myId: '',
// v-model
dataList: [],
tabList: [],
typeData:'105',
tabIndex: 0,
searchValue:'',
serviceTrue:true,
page:1,
limit:10,
titleNmae:'',
classifyId:''
}
},
onLoad(){
this.myId = uni.getStorageSync('userId')
this.getData()
},
onPullDownRefresh: function() {
this.page = 1;
this.getData()
},
methods: {
//
loadMore: async function() {
//loadingType: 0. 1. 2.
if(this.loadingType==0){
this.loadingType=2
//
setTimeout(()=>{
this.page++;
this.loadingType=0;
this.getData()
},1000)
}
},
input(res) {//
this.searchValue=res;
console.log('----input:', res)
},
searchBtn(){//
if(this.searchValue!=""){
this.getData()
}
},
getData(){
this.$Request.get("/app/massage/package/findPackageAndMassagePage",{
city:'',
page:this.page,
limit:this.limit,
title:this.searchValue
}).then(res => {
if (res.code == 0) {
if (res.data) {
if (this.page == 1) this.dataList = []; //
this.dataList = [...this.dataList, ...res.data.list]; //
uni.stopPullDownRefresh()
}
}
});
},
changeClick(index,item){
this.classifyId=item.id
this.searchValue=''
this.getData()
},
backImg(){//
uni.reLaunch({
url:'/pages/index/index'
})
},
clear(res) {
this.getData()
},
itemClick(item) {
if(item.type=='104'){
uni.navigateTo({
url:'/pages/my/serviceOderDrtail?id='+item.id+'&limit='+this.limit+'&page='+this.page+'&name='+'index'+'&isCanCoupon='+item.isCanCoupon
})
}else if(item.type=='105'){
uni.navigateTo({
url:'/pages/my/cikarDrtail?id='+item.id+'&limit='+this.limit+'&page='+this.page+'&name='+'index'+'&isCanCoupon='+item.isCanCoupon
})
}else if(item.type=='106'){
uni.navigateTo({
url:'/pages/my/fuwuliaochengDetail?id='+item.id+'&limit='+this.limit+'&page='+this.page+'&name='+'index'+'&isCanCoupon='+item.isCanCoupon
})
}else{
uni.navigateTo({
url:'/pages/my/fuwuDateil?id='+item.id+'&limit='+this.limit+'&page='+this.page+'&name='+'index'+'&isCanCoupon='+item.isCanCoupon
})
}
}
}
}
</script>
<style scoped>
/deep/.refresh-body{
height: 100% !important;
background-color: #f7f7f7;
margin-top: 35px;
}
.content-view{
width: 100%;
height: 100vh;
overflow: auto;
}
.item-view-bottom-btn{
text-align: center;
width: 131rpx;
height: 50rpx;
line-height: 50rpx;
background: linear-gradient(90deg, #019C88, #0FA78B, #35C495);
border-radius: 10rpx;
font-weight: bold;
font-size: 24rpx;
color: #FFFFFF;
}
.item-view-bottom-qian span:nth-child(4){
font-weight: bold;
font-size: 31rpx;
color: #848484;
text-decoration-line: line-through;
margin-left: 5px;
}
.item-view-bottom-qian span:nth-child(1){
font-weight: 400;
font-size: 25rpx;
color: #F95900;
}
.item-view-bottom-qian span:nth-child(2){
font-weight: bold;
font-size: 36.81rpx;
color: #F95900;
}
.item-view-bottom-qian span:nth-child(3){
font-weight: 400;
font-size: 25rpx;
color: #F95900;
}
.item-view-bottom{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.item-view-jianjie{
font-weight: 400;
font-size: 22rpx;
color: #848484;
margin:5px 0px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 显示的行数,可以根据需要修改 */
overflow: hidden;
text-overflow: ellipsis;
}
.item-view-biao{
padding: 1px 2px;
border-radius: 6rpx;
}
.tuina{
background-color:#d1f2df;
color: #17984d;
}
.xiaoer{
background-color:#f1f8d7;
color: #58b314;
}
.taishi{
background-color:#e5d5c6;
color: #805d39;
}
.kangfu{
background-color:#fcf3da;
color: #ff8600;
}
.item-view-xiangmu span:nth-child(2){
font-weight: normal;
color: #666666;
margin-left: 5px;
}
.item-view-xiangmu{
width: 100%;
display: flex;
flex-direction: row;
font-weight: 400;
font-size: 21rpx;
margin-top: 5px;
}
.item-view-title{
font-weight: bold;
font-size: 33rpx;
color: #333333;
}
.item-view{
width: 55%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
}
.item-img{
width: 285rpx;
height: 120px;
border-radius: 14rpx;
position: relative;
}
.img-span{
padding: 2px 5px;
font-weight: 400;
font-size: 8px;
color: #FFFFFF;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-radius: 7px 0px 7px 0px;
position: absolute;
bottom: 0px;
right: 0;
margin-bottom: 5px;
margin-right: 5px;
}
.item-img image{
width: 100%;
height: 100%;
}
.item {
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
height: 140px;
background: #FFFFFF;
border-radius: 21rpx;
margin-top:20px;
align-items: center;
padding: 0px 5px;
}
.item-detail {
padding: 5rpx 15rpx;
border-radius: 10rpx;
font-size: 28rpx;
color: white;
background-color: #007AFF;
}
.item-line {
position: absolute;
bottom: 0rpx;
left: 0rpx;
height: 1px;
width: 100%;
background-color: #eeeeee;
}
/deep/.zp-paging-container{
background-color: #f7f7f7;
width:100%;
}
/deep/.zp-paging-container-content{
width: 95%;
margin: 0 auto;
}
.fenlei{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.index-fenl-title{
width: 81rpx;
text-align: center;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
font-weight: bold;
font-size: 34rpx;
color:#019C88;
}
.index-fenl-title-bottom{
position: absolute;
bottom: 0;
margin-bottom: 0px;
width: 81rpx;
height: 14rpx;
border-radius: 7rpx;
background: linear-gradient(-48deg,rgba(1, 156, 136, 0.35),rgba(45, 196, 142, 0.35));
}
/deep/.uni-searchbar__cancel{
display: none;
}
.search-btn{
text-align: center;
line-height: 31px;
color: #fff;
position: absolute;
right: 0;
top: 0;
margin-top:9.4px;
margin-right: 11px;
height: 32px !important;
}
/deep/.uni-searchbar__box-icon-search,.search-btn{
width: 101rpx;
height: 60rpx;
background: #18A689;
border-radius: 31rpx;
}
/deep/.uni-searchbar__box{
height: 31px;
border-radius: 15px !important;
background-color: #fff !important;
border: 2px solid #E5E5E5;
padding: 0px;
display: flex;
flex-direction: row;
flex-flow: row-reverse;
position: relative;
}
/deep/.uni-searchbar{
width: 240px;
border-radius: 31rpx;
}
.service-head-top-left image{
width: 25px;
height: 30rpx;
margin-right: 10px;
}
.service-head-top-left span{
font-weight: bold;
font-size: 44rpx;
color: #171717;
}
.service-head-top-left{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.service-head-top{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
position: fixed;
background-color: #fff;
}
</style>

414
pages/my/fuwuliaocheng.vue Normal file
View File

@ -0,0 +1,414 @@
<!-- 自定义下拉刷新与上拉加载演示(vue) -->
<template>
<view class="content">
<z-paging ref="paging" v-model="dataList" @query="queryList">
<!-- 需要固定在顶部不滚动的view放在slot="top"的view中如果需要跟着滚动则不要设置slot="top" -->
<!-- 注意此处的z-tabs为独立的组件可替换为第三方的tabs若需要使用z-tabs请在插件市场搜索z-tabs并引入否则会报插件找不到的错误 -->
<template #top>
<view class="service-head-top">
<view class="service-head-top-left">
<image @click="backImg" src="../../static/fanhui.png" mode="widthFix"></image>
<span>服务疗程</span>
</view>
<view>
<uni-search-bar @service="serviceTrue" @confirm="search" :cancelext="'取消'" v-model="searchValue" @input="input"
@clear="clear">
</uni-search-bar>
<view class="search-btn" @click="searchBtn">
搜索
</view>
</view>
</view>
<!-- <view class="fenlei">
<z-tabs class="z-tabs-fenlei" :list="tabList" @change="tabChange" @changeClick="changeClick"/>
</view> -->
</template>
<!-- 自定义下拉刷新view(如果use-custom-refresher为true且不设置下面的slot="refresher"此时不用获取refresherStatus会自动使用z-paging自带的下拉刷新view) -->
<!-- 注意注意注意字节跳动小程序中自定义下拉刷新不支持slot-scope将导致custom-refresher无法显示 -->
<!-- 如果是字节跳动小程序请参照sticky-demo.vue中的写法此处使用slot-scope是为了减少data中无关变量声明降低依赖 -->
<template #refresher="{refresherStatus}">
<!-- 此处的custom-refresh为demo中自定义的组件非z-paging的内置组件请在实际项目中自行创建这里插入什么view下拉刷新就显示什么view -->
<custom-refresher :status="refresherStatus" />
</template>
<!-- 自定义没有更多数据view -->
<template #loadingMoreNoMore>
<!-- 此处的custom-nomore为demo中自定义的组件非z-paging的内置组件请在实际项目中自行创建这里插入什么view没有更多数据就显示什么view -->
<custom-nomore />
</template>
<!-- 如果希望其他view跟着页面滚动可以放在z-paging标签内 -->
<view class="item" v-for="(item,index) in dataList" :key="index" @click="itemClick(item)">
<!-- <view class="item-title">{{item.title}}</view>
<view class="item-detail">{{item.detail}}</view> -->
<!-- <view class="item-line"></view> -->
<view class="item-img">
<image :src="item.packageImg" mode=""></image>
<span class="img-span">{{item.status=='1'?'未用完':item.status=='2'?'退款':'已用完'}}</span>
</view>
<view class="item-view">
<view class="item-view-title">
{{item.title}}
</view>
<view class="item-view-xiangmu">
<span class="xiaoer item-view-biao">{{item.classifyName}}</span>
<span>已售{{item.sales}}w+ | 好评{{item.esteemRate}}%</span>
</view>
<view class="item-view-jianjie">
{{item.content}}
</view>
<view class="item-view-bottom">
<view class="item-view-bottom-qian">
<span></span>
<span>{{item.price}}</span>
<span>/元套</span>
<span>{{item.oldPrice}}</span>
</view>
<view class="item-view-bottom-btn">
查看
</view>
</view>
</view>
</view>
</z-paging>
</view>
</template>
<script>
export default {
data() {
return {
myId: '',
// v-model
dataList: [],
tabList: [],
typeData:'106',
tabIndex: 0,
searchValue:'',
serviceTrue:true,
page:1,
limit:10,
titleNmae:''
}
},
onLoad(){
this.myId = uni.getStorageSync('userId')
this.getData()
},
methods: {
input(res) {//
this.searchValue=res;
console.log('----input:', res)
},
searchBtn(){//
if(this.searchValue!=""){
this.getData()
}
},
getData(){
let data = {
userId: this.myId,
type: this.typeData,
page: this.page,
limit: this.limit,
title:this.searchValue,
}
this.$Request.get('/app/user/package/findMyPackageList', data).then(res => {
if (res.code == 0) {
this.dataList=res.data.records;
}
})
},
tabChange(index) {
this.tabIndex = index;
//tabreloadqueryList
//reloadtruereloadfalse
this.$refs.paging.reload(true);
},
queryList(pageNo, pageSize) {
// console.log(pageNo,pageSize,this.tabIndex)
//
// pageNopageSize
//
const params = {
userId: this.myId,
page: pageNo,
limit: pageSize,
type: this.typeData,
title:''
}
this.$Request.get('/app/user/package/findMyPackageList',params).then(res => {
// z-paging
this.$refs.paging.complete(res.data.records);
}).catch(res => {
// this.$refs.paging.complete(false);
// catchz-paging
// uni.$emit('z-paging-error-emit');
this.$refs.paging.complete(false);
})
},
backImg(){//
uni.reLaunch({
url:'/pages/my/index'
})
},
clear(res) {
this.getData()
},
itemClick(item) {
uni.navigateTo({
url:'/pages/my/fuwuliaochengDetail?id='+item.id+'&name='+'my'
})
}
}
}
</script>
<style scoped>
.item-view-bottom-btn{
text-align: center;
width: 131rpx;
height: 50rpx;
line-height: 50rpx;
background: linear-gradient(90deg, #019C88, #0FA78B, #35C495);
border-radius: 10rpx;
font-weight: bold;
font-size: 24rpx;
color: #FFFFFF;
}
.item-view-bottom-qian span:nth-child(4){
font-weight: bold;
font-size: 31rpx;
color: #848484;
text-decoration-line: line-through;
margin-left: 5px;
}
.item-view-bottom-qian span:nth-child(1){
font-weight: 400;
font-size: 25rpx;
color: #F95900;
}
.item-view-bottom-qian span:nth-child(2){
font-weight: bold;
font-size: 36.81rpx;
color: #F95900;
}
.item-view-bottom-qian span:nth-child(3){
font-weight: 400;
font-size: 25rpx;
color: #F95900;
}
.item-view-bottom{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.item-view-jianjie{
font-weight: 400;
font-size: 22rpx;
color: #848484;
margin:5px 0px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 显示的行数,可以根据需要修改 */
overflow: hidden;
text-overflow: ellipsis;
}
.item-view-biao{
padding: 1px 2px;
border-radius: 6rpx;
}
.tuina{
background-color:#d1f2df;
color: #17984d;
}
.xiaoer{
background-color:#f1f8d7;
color: #58b314;
}
.taishi{
background-color:#e5d5c6;
color: #805d39;
}
.kangfu{
background-color:#fcf3da;
color: #ff8600;
}
.item-view-xiangmu span:nth-child(2){
font-weight: normal;
color: #666666;
margin-left: 5px;
}
.item-view-xiangmu{
width: 100%;
display: flex;
flex-direction: row;
font-weight: 400;
font-size: 21rpx;
margin-top: 5px;
}
.item-view-title{
font-weight: bold;
font-size: 33rpx;
color: #333333;
}
.item-view{
width: 55%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
}
.item-img{
width: 285rpx;
height: 120px;
border-radius: 14rpx;
position: relative;
}
.img-span{
padding: 2px 5px;
font-weight: 400;
font-size: 8px;
color: #FFFFFF;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-radius: 7px 0px 7px 0px;
position: absolute;
bottom: 0px;
right: 0;
margin-bottom: 5px;
margin-right: 5px;
}
.item-img image{
width: 100%;
height: 100%;
}
.item {
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
height: 140px;
background: #FFFFFF;
border-radius: 21rpx;
margin-top:20px;
align-items: center;
padding: 0px 5px;
}
.item-detail {
padding: 5rpx 15rpx;
border-radius: 10rpx;
font-size: 28rpx;
color: white;
background-color: #007AFF;
}
.item-line {
position: absolute;
bottom: 0rpx;
left: 0rpx;
height: 1px;
width: 100%;
background-color: #eeeeee;
}
/deep/.zp-paging-container{
background-color: #f7f7f7;
width:100%;
}
/deep/.zp-paging-container-content{
width: 95%;
margin: 0 auto;
}
.fenlei{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.index-fenl-title{
width: 81rpx;
text-align: center;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
font-weight: bold;
font-size: 34rpx;
color:#019C88;
}
.index-fenl-title-bottom{
position: absolute;
bottom: 0;
margin-bottom: 0px;
width: 81rpx;
height: 14rpx;
border-radius: 7rpx;
background: linear-gradient(-48deg,rgba(1, 156, 136, 0.35),rgba(45, 196, 142, 0.35));
}
/deep/.uni-searchbar__cancel{
display: none;
}
.search-btn{
text-align: center;
line-height: 31px;
color: #fff;
position: absolute;
right: 0;
top: 0;
margin-top:9.4px;
margin-right: 11px;
height: 32px !important;
}
/deep/.uni-searchbar__box-icon-search,.search-btn{
width: 101rpx;
height: 60rpx;
background: #18A689;
border-radius: 31rpx;
}
/deep/.uni-searchbar__box{
height: 31px;
border-radius: 15px !important;
background-color: #fff !important;
border: 2px solid #E5E5E5;
padding: 0px;
display: flex;
flex-direction: row;
flex-flow: row-reverse;
position: relative;
}
/deep/.uni-searchbar{
width: 240px;
border-radius: 31rpx;
}
.service-head-top-left image{
width: 25px;
height: 30rpx;
margin-right: 10px;
}
.service-head-top-left span{
font-weight: bold;
font-size: 44rpx;
color: #171717;
}
.service-head-top-left{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.service-head-top{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
</style>

File diff suppressed because it is too large Load Diff

420
pages/my/fuwuxiangm.vue Normal file
View File

@ -0,0 +1,420 @@
<!-- 自定义下拉刷新与上拉加载演示(vue) -->
<template>
<view class="content-view">
<view class="service-head-top">
<view class="service-head-top-left">
<image @click="backImg" src="../../static/fanhui.png" mode="widthFix"></image>
<span>服务项目</span>
</view>
<view>
<uni-search-bar @service="serviceTrue" @confirm="search" :cancelext="'取消'" v-model="searchValue" @input="input"
@clear="clear">
</uni-search-bar>
<view class="search-btn" @click="searchBtn">
搜索
</view>
</view>
</view>
<view class="fenlei">
<z-tabs class="z-tabs-fenlei" :list="tabList" @change="tabChange" @changeClick="changeClick"/>
</view>
<t-refresh ref="refresh" v-if="dataList.length>0" @refresh="refresh" @loadMore="loadMore" :loadingType="loadingType" :tPadding="0">
<template slot="content">
<view class="item" v-for="(item,index) in dataList" :key="index" @click="itemClick(item)">
<view class="item-img">
<image :src="item.massageImg" mode=""></image>
</view>
<view class="item-view">
<view class="item-view-title">
{{item.title}}
</view>
<view class="item-view-xiangmu">
<span class="xiaoer item-view-biao">{{item.classifyName}}</span>
<span>已售{{item.sales}}w+ | 好评{{item.esteemRate}}%</span>
</view>
<view class="item-view-jianjie">
{{item.jianjie}}
</view>
<view class="item-view-bottom">
<view class="item-view-bottom-qian">
<span></span>
<span>{{item.price}}</span>
<span>/元套</span>
<span>{{item.oldPrice}}</span>
</view>
<view class="item-view-bottom-btn">
查看
</view>
</view>
</view>
</view>
</template>
</t-refresh>
<empty v-if="dataList.length==0"></empty>
</view>
</template>
<script>
import empty from '@/components/empty.vue'
import tRefresh from "@/components/t-refresh/t-refresh.vue"
export default {
components:{tRefresh,empty},
data() {
return {
loadingType:0,
myId: '',
// v-model
dataList: [],
tabList: [],
typeData:'105',
tabIndex: 0,
searchValue:'',
serviceTrue:true,
page:1,
limit:10,
titleNmae:'',
classifyId:''
}
},
onLoad(){
this.myId = uni.getStorageSync('userId')
this.tabNav()
},
onPullDownRefresh: function() {
this.page = 1;
this.getData()
},
methods: {
//
loadMore: async function() {
//loadingType: 0. 1. 2.
if(this.loadingType==0){
this.loadingType=2
//
setTimeout(()=>{
this.page++;
this.loadingType=0;
this.getData()
},1000)
}
},
tabNav(){
let data = {
type: "服务类型",
}
this.$Request.get('/app/dict/list', data).then(res => {
if (res.code == 0) {
this.tabList=res.data;
this.classifyId=res.data[0].id;
this.getData()
}
})
},
input(res) {//
this.searchValue=res;
console.log('----input:', res)
},
searchBtn(){//
if(this.searchValue!=""){
this.getData()
}
},
getData(){
this.$Request.get("/app/artificer/selectMassageTypePage", {
by: '3',
status:'1',
classifyId:this.classifyId,
page:this.page,
limit:this.limit,
title:this.searchValue
}).then(res => {
if (res.code == 0) {
if (res.data) {
if (this.page == 1) this.dataList = []; //
this.dataList = [...this.dataList, ...res.data.list]; //
uni.stopPullDownRefresh()
}
}
});
},
changeClick(index,item){
this.classifyId=item.id
this.searchValue=''
this.getData()
},
backImg(){//
uni.reLaunch({
url:'/pages/index/index'
})
},
clear(res) {
this.getData()
},
itemClick(item) {
uni.navigateTo({
url:'/pages/my/fuwuDateil?id='+item.massageTypeId+'&limit='+this.limit+'&page='+this.page+'&name='+'index'+'&isCanCoupon='+item.isCanCoupon
})
}
}
}
</script>
<style scoped>
/deep/.refresh-body .content{
background-color: #f7f7f7;
}
/deep/.refresh-body{
height: 100% !important;
border-top: 2px solid #f7f7f7;
}
.content-view{
width: 100%;
height: 100vh;
overflow: auto;
background-color: #f7f7f7;
}
.item-view-bottom-btn{
text-align: center;
width: 131rpx;
height: 50rpx;
line-height: 50rpx;
background: linear-gradient(90deg, #019C88, #0FA78B, #35C495);
border-radius: 10rpx;
font-weight: bold;
font-size: 24rpx;
color: #FFFFFF;
}
.item-view-bottom-qian span:nth-child(4){
font-weight: bold;
font-size: 31rpx;
color: #848484;
text-decoration-line: line-through;
margin-left: 5px;
}
.item-view-bottom-qian span:nth-child(1){
font-weight: 400;
font-size: 25rpx;
color: #F95900;
}
.item-view-bottom-qian span:nth-child(2){
font-weight: bold;
font-size: 36.81rpx;
color: #F95900;
}
.item-view-bottom-qian span:nth-child(3){
font-weight: 400;
font-size: 25rpx;
color: #F95900;
}
.item-view-bottom{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.item-view-jianjie{
font-weight: 400;
font-size: 22rpx;
color: #848484;
margin:5px 0px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 显示的行数,可以根据需要修改 */
overflow: hidden;
text-overflow: ellipsis;
}
.item-view-biao{
padding: 1px 2px;
border-radius: 6rpx;
}
.tuina{
background-color:#d1f2df;
color: #17984d;
}
.xiaoer{
background-color:#f1f8d7;
color: #58b314;
}
.taishi{
background-color:#e5d5c6;
color: #805d39;
}
.kangfu{
background-color:#fcf3da;
color: #ff8600;
}
.item-view-xiangmu span:nth-child(2){
font-weight: normal;
color: #666666;
margin-left: 5px;
}
.item-view-xiangmu{
width: 100%;
display: flex;
flex-direction: row;
font-weight: 400;
font-size: 21rpx;
margin-top: 5px;
}
.item-view-title{
font-weight: bold;
font-size: 33rpx;
color: #333333;
}
.item-view{
width: 55%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
}
.item-img{
width: 285rpx;
height: 120px;
border-radius: 14rpx;
position: relative;
}
.img-span{
padding: 2px 5px;
font-weight: 400;
font-size: 8px;
color: #FFFFFF;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-radius: 7px 0px 7px 0px;
position: absolute;
bottom: 0px;
right: 0;
margin-bottom: 5px;
margin-right: 5px;
}
.item-img image{
width: 100%;
height: 100%;
}
.item {
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
height: 140px;
background: #FFFFFF;
border-radius: 21rpx;
margin-top:20px;
align-items: center;
padding: 0px 5px;
}
.item-detail {
padding: 5rpx 15rpx;
border-radius: 10rpx;
font-size: 28rpx;
color: white;
background-color: #007AFF;
}
.item-line {
position: absolute;
bottom: 0rpx;
left: 0rpx;
height: 1px;
width: 100%;
background-color: #eeeeee;
}
/deep/.zp-paging-container{
background-color: #f7f7f7;
width:100%;
}
/deep/.zp-paging-container-content{
width: 95%;
margin: 0 auto;
}
.fenlei{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.index-fenl-title{
width: 81rpx;
text-align: center;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
font-weight: bold;
font-size: 34rpx;
color:#019C88;
}
.index-fenl-title-bottom{
position: absolute;
bottom: 0;
margin-bottom: 0px;
width: 81rpx;
height: 14rpx;
border-radius: 7rpx;
background: linear-gradient(-48deg,rgba(1, 156, 136, 0.35),rgba(45, 196, 142, 0.35));
}
/deep/.uni-searchbar__cancel{
display: none;
}
.search-btn{
text-align: center;
line-height: 31px;
color: #fff;
position: absolute;
right: 0;
top: 0;
margin-top:9.4px;
margin-right: 11px;
height: 32px !important;
}
/deep/.uni-searchbar__box-icon-search,.search-btn{
width: 101rpx;
height: 60rpx;
background: #18A689;
border-radius: 31rpx;
}
/deep/.uni-searchbar__box{
height: 31px;
border-radius: 15px !important;
background-color: #fff !important;
border: 2px solid #E5E5E5;
padding: 0px;
display: flex;
flex-direction: row;
flex-flow: row-reverse;
position: relative;
}
/deep/.uni-searchbar{
width: 240px;
border-radius: 31rpx;
}
.service-head-top-left image{
width: 25px;
height: 30rpx;
margin-right: 10px;
}
.service-head-top-left span{
font-weight: bold;
font-size: 44rpx;
color: #171717;
}
.service-head-top-left{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.service-head-top{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
background-color: #fff;
}
</style>

444
pages/my/historyMy.vue Normal file
View File

@ -0,0 +1,444 @@
<!-- 自定义下拉刷新与上拉加载演示(vue) -->
<template>
<view class="content-view">
<view class="service-head-top">
<view class="service-head-top-left">
<image @click="backImg" src="../../static/fanhui.png" mode="widthFix"></image>
<span>浏览历史</span>
</view>
<!-- <view>
<uni-search-bar @service="serviceTrue" @confirm="search" :cancelext="'取消'" v-model="searchValue" @input="input"
@clear="clear">
</uni-search-bar>
<view class="search-btn" @click="searchBtn">
搜索
</view>
</view> -->
</view>
<t-refresh ref="refresh" v-if="dataList.length>0" @refresh="refresh" @loadMore="loadMore" :loadingType="loadingType" :tPadding="0">
<template slot="content">
<view class="item" v-for="(item,index) in dataList" :key="index" @click="itemClick(item)">
<view class="item-img">
<image :src="item.massageImg" mode=""></image>
</view>
<view class="item-view">
<view class="item-view-title">
<span class="item-view-title-text">{{item.title}}</span>
<span class="header-bottom-title-liao">
{{item.typeName}}
</span>
</view>
<!-- <view class="item-view-xiangmu">
<span class="xiaoer item-view-biao">{{item.classifyName}}</span>
<span>已售{{item.sales}}w+ | 好评{{item.esteemRate}}%</span>
</view> -->
<view class="item-view-jianjie">
{{item.content}}
</view>
<view class="item-view-bottom">
<view class="item-view-bottom-qian">
<span></span>
<span>{{item.price}}</span>
<span>/元套</span>
<span>{{item.oldPrice}}</span>
</view>
<view class="item-view-bottom-btn">
查看
</view>
</view>
</view>
</view>
</template>
</t-refresh>
<empty v-if="dataList.length==0"></empty>
</view>
</template>
<script>
import empty from '@/components/empty.vue'
import tRefresh from "@/components/t-refresh/t-refresh.vue"
export default {
components:{tRefresh,empty},
data() {
return {
loadingType:0,
myId: '',
// v-model
dataList: [],
tabList: [],
typeData:'105',
tabIndex: 0,
searchValue:'',
serviceTrue:true,
page:1,
limit:10,
titleNmae:'',
classifyId:''
}
},
onLoad(){
this.myId = uni.getStorageSync('userId');
this.getData();
},
onPullDownRefresh: function() {
this.page = 1;
this.getData();
},
methods: {
//
loadMore: async function() {
//loadingType: 0. 1. 2.
if(this.loadingType==0){
this.loadingType=2
//
setTimeout(()=>{
this.page++;
this.loadingType=0;
this.getData()
},1000)
}
},
input(res) {//
this.searchValue=res;
},
searchBtn(){//
if(this.searchValue!=""){
this.getData()
}
},
getData(){
this.$Request.get("/app/collect/massage/findPage", {
userId: this.myId,
classify:'2',
page:this.page,
limit:this.limit,
title:this.searchValue
}).then(res => {
if (res.code == 0) {
if (res.data) {
if (this.page == 1) this.dataList = []; //
this.dataList = [...this.dataList, ...res.data.records]; //
uni.stopPullDownRefresh()
}
}
});
},
backImg(){//
uni.reLaunch({
url:'/pages/my/index'
})
},
clear(res) {
this.getData()
},
itemClick(item) {
if(item.typeName=='项目'){
uni.navigateTo({
url:'/pages/my/fuwuDateil?id='+item.projectId+'&limit='+this.limit+'&page='+this.page+'&name='+'index'
})
}else if(item.typeName=='套餐'){
uni.navigateTo({
url:'/pages/my/serviceOderDrtail?id='+item.projectId+'&limit='+10+'&page='+1+'&name='+'index'
})
}else if(item.typeName=='次卡'){
uni.navigateTo({
url:'/pages/my/cikarDrtail?id='+item.projectId+'&limit='+this.limit+'&page='+this.page+'&name='+'index'
})
}else if(item.typeName=='疗程'){
uni.navigateTo({
url:'/pages/my/fuwuliaochengDetail?id='+item.projectId+'&limit='+this.limit+'&page='+this.page+'&name='+'index'
})
}
}
}
}
</script>
<style scoped>
.header-bottom-title-liao{
display: inline-block;
padding: 0 7px;
height: 16px;
line-height: 16px;
text-align: center;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-radius: 7px;
margin-left: 5px;
font-weight: bold;
font-size: 8px;
border-top-left-radius: 20px;
border-bottom-right-radius: 20px;
color: #fff;
}
/deep/.refresh-body .content{
background-color: #f7f7f7;
}
/deep/.refresh-body{
height: 100% !important;
border-top: 2px solid #f7f7f7;
}
.content-view{
width: 100%;
height: 100vh;
overflow: auto;
background-color: #f7f7f7;
}
.item-view-bottom-btn{
text-align: center;
width: 131rpx;
height: 50rpx;
line-height: 50rpx;
background: linear-gradient(90deg, #019C88, #0FA78B, #35C495);
border-radius: 10rpx;
font-weight: bold;
font-size: 24rpx;
color: #FFFFFF;
}
.item-view-bottom-qian span:nth-child(4){
font-weight: bold;
font-size: 31rpx;
color: #848484;
text-decoration-line: line-through;
margin-left: 5px;
}
.item-view-bottom-qian span:nth-child(1){
font-weight: 400;
font-size: 25rpx;
color: #F95900;
}
.item-view-bottom-qian span:nth-child(2){
font-weight: bold;
font-size: 36.81rpx;
color: #F95900;
}
.item-view-bottom-qian span:nth-child(3){
font-weight: 400;
font-size: 25rpx;
color: #F95900;
}
.item-view-bottom{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.item-view-jianjie{
font-weight: 400;
font-size: 22rpx;
color: #848484;
margin:5px 0px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 显示的行数,可以根据需要修改 */
overflow: hidden;
text-overflow: ellipsis;
}
.item-view-biao{
padding: 1px 2px;
border-radius: 6rpx;
}
.tuina{
background-color:#d1f2df;
color: #17984d;
}
.xiaoer{
background-color:#f1f8d7;
color: #58b314;
}
.taishi{
background-color:#e5d5c6;
color: #805d39;
}
.kangfu{
background-color:#fcf3da;
color: #ff8600;
}
.item-view-xiangmu span:nth-child(2){
font-weight: normal;
color: #666666;
margin-left: 5px;
}
.item-view-xiangmu{
width: 100%;
display: flex;
flex-direction: row;
font-weight: 400;
font-size: 21rpx;
margin-top: 5px;
}
.item-view-title-text{
display: inline-block;
width: 100px;
font-weight: bold;
font-size: 33rpx;
color: #333333;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.item-view-title{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.item-view{
width: 55%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
}
.item-img{
width: 285rpx;
height: 120px;
border-radius: 14rpx;
position: relative;
}
.img-span{
padding: 2px 5px;
font-weight: 400;
font-size: 8px;
color: #FFFFFF;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-radius: 7px 0px 7px 0px;
position: absolute;
bottom: 0px;
right: 0;
margin-bottom: 5px;
margin-right: 5px;
}
.item-img image{
width: 100%;
height: 100%;
}
.item {
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
height: 140px;
background: #FFFFFF;
border-radius: 21rpx;
margin-top:20px;
align-items: center;
padding: 0px 5px;
}
.item-detail {
padding: 5rpx 15rpx;
border-radius: 10rpx;
font-size: 28rpx;
color: white;
background-color: #007AFF;
}
.item-line {
position: absolute;
bottom: 0rpx;
left: 0rpx;
height: 1px;
width: 100%;
background-color: #eeeeee;
}
/deep/.zp-paging-container{
background-color: #f7f7f7;
width:100%;
}
/deep/.zp-paging-container-content{
width: 95%;
margin: 0 auto;
}
.fenlei{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.index-fenl-title{
width: 81rpx;
text-align: center;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
font-weight: bold;
font-size: 34rpx;
color:#019C88;
}
.index-fenl-title-bottom{
position: absolute;
bottom: 0;
margin-bottom: 0px;
width: 81rpx;
height: 14rpx;
border-radius: 7rpx;
background: linear-gradient(-48deg,rgba(1, 156, 136, 0.35),rgba(45, 196, 142, 0.35));
}
/deep/.uni-searchbar__cancel{
display: none;
}
.search-btn{
text-align: center;
line-height: 31px;
color: #fff;
position: absolute;
right: 0;
top: 0;
margin-top:9.4px;
margin-right: 11px;
height: 32px !important;
}
/deep/.uni-searchbar__box-icon-search,.search-btn{
width: 101rpx;
height: 60rpx;
background: #18A689;
border-radius: 31rpx;
}
/deep/.uni-searchbar__box{
height: 31px;
border-radius: 15px !important;
background-color: #fff !important;
border: 2px solid #E5E5E5;
padding: 0px;
display: flex;
flex-direction: row;
flex-flow: row-reverse;
position: relative;
}
/deep/.uni-searchbar{
width: 240px;
border-radius: 31rpx;
}
.service-head-top-left image{
width: 25px;
height: 30rpx;
margin-right: 10px;
}
.service-head-top-left span{
font-weight: bold;
font-size: 44rpx;
color: #171717;
}
.service-head-top-left{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.service-head-top{
width: 100%;
height: 51px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
background-color: #fff;
}
</style>

View File

@ -41,10 +41,11 @@
</view>
</view>
</view>
<!-- <view class="my-head-bottom back-width" @click="kaitong">
<image src="../../static/my-kaitonghuiyuan.png" mode="widthFix"></image>
</view> -->
<view class="padding-lr margin-lr" style="background-color: #35C495;border-radius: 18rpx;margin-top: 30rpx;"
<view class="my-head-bottom back-width" @click="goNav('/my/vip/index')">
<image src="../../static/my-kaitonghuiyuan.png" mode="widthFix" v-if="!isVip"></image>
<image src="../../static/activate3.png" mode="widthFix" v-if="isVip"></image>
</view>
<!-- <view class="padding-lr margin-lr" style="background-color: #35C495;border-radius: 18rpx;margin-top: 30rpx;"
v-if="XCXIsSelect != '否' && hyCheck != '否'">
<view class="flex justify-between align-center" style="height: 140rpx;">
<view class="flex justify-between align-center" style="">
@ -65,7 +66,7 @@
style="justify-content: space-between;color: #fff;">会员特权
</view>
</view>
</view>
</view> -->
</view>
<view class="my-serve width">
<view class="my-serve-title">我的服务</view>
@ -127,7 +128,7 @@
{urlImg:'../../static/my-gong-5.png',text:'地址管理',link:'/my/address/address'},
{urlImg:'../../static/my-gong-6.png',text:'帮助中心',link:'/my/help/feedbackIndex'},
{urlImg:'../../static/my-gong-7.png',text:'设置中心',link:'/my/setting/index'},
{urlImg:'../../static/my-gong-8.png',text:'浏览历史',link:'/my/gird/browse'},
{urlImg:'../../static/my-gong-8.png',text:'浏览历史',link:'/pages/my/historyMy'},
{urlImg:'../../static/my-gong-9.png',text:'我的团队',link:'/pages/my/myteam'},
]
}
@ -457,26 +458,28 @@
})
},
meServe(item){
uni.navigateTo({
url:'/pages/my/servicePackage?name='+item
})
// if(item==""){
// }else if(item==""){
// uni.navigateTo({
// url:'/pages/my/onceCardPackage?name='+''
// })
// }else if(item==""){
// uni.navigateTo({
// url:'/pages/my/curePackage?name='+''
// })
// }
if(item=="服务套餐"){
uni.navigateTo({
url:'/pages/my/servicePackage'
})
}else if(item=="项目次卡"){
uni.navigateTo({
url:'/pages/my/cika'
})
}else if(item=="服务疗程"){
uni.navigateTo({
url:'/pages/my/fuwuliaocheng'
})
}
},
}
}
</script>
<style scoped>
.my-use-list-text{
font-weight: bold;
font-size: 30rpx;

View File

@ -0,0 +1,413 @@
<!-- 自定义下拉刷新与上拉加载演示(vue) -->
<template>
<view class="content-view">
<view class="service-head-top">
<view class="service-head-top-left">
<image @click="backImg" src="../../static/fanhui.png" mode="widthFix"></image>
<span>{{typeData=='104'?'服务套餐':typeData=='105'?'次卡':'服务疗程'}}</span>
</view>
<view>
<uni-search-bar @service="serviceTrue" @confirm="search" :cancelext="'取消'" v-model="searchValue" @input="input"
@clear="clear">
</uni-search-bar>
<view class="search-btn" @click="searchBtn">
搜索
</view>
</view>
</view>
<t-refresh ref="refresh" v-if="dataList.length>0" @refresh="refresh" @loadMore="loadMore" :loadingType="loadingType" :tPadding="0">
<template slot="content">
<view class="item" v-for="(item,index) in dataList" :key="index" @click="itemClick(item)">
<view class="item-img">
<image :src="item.packageImg" mode=""></image>
</view>
<view class="item-view">
<view class="item-view-title">
{{item.title}}
</view>
<view class="item-view-xiangmu">
<span class="xiaoer item-view-biao">{{item.classifyName}}</span>
<span>已售{{item.sales}}w+ | 好评{{item.esteemRate}}%</span>
</view>
<view class="item-view-jianjie">
{{item.jianjie}}
</view>
<view class="item-view-bottom">
<view class="item-view-bottom-qian">
<span></span>
<span>{{item.price}}</span>
<span>/元套</span>
<span>{{item.oldPrice}}</span>
</view>
<view class="item-view-bottom-btn">
查看
</view>
</view>
</view>
</view>
</template>
</t-refresh>
<empty v-if="dataList.length==0"></empty>
</view>
</template>
<script>
import empty from '@/components/empty.vue'
import tRefresh from "@/components/t-refresh/t-refresh.vue"
export default {
components:{tRefresh,empty},
data() {
return {
loadingType:0,
myId: '',
// v-model
dataList: [],
typeData:'104',
tabIndex: 0,
searchValue:'',
serviceTrue:true,
page:1,
limit:10,
titleNmae:'',
classifyId:'',
getName:''
}
},
onLoad(e){
this.typeData=e.type
this.getName=e.name;
this.myId = uni.getStorageSync('userId')
this.getData()
},
onPullDownRefresh: function() {
this.page = 1;
this.getData()
},
methods: {
//
loadMore: async function() {
//loadingType: 0. 1. 2.
if(this.loadingType==0){
this.loadingType=2
//
setTimeout(()=>{
this.page++;
this.loadingType=0;
this.getData()
},1000)
}
},
input(res) {//
this.searchValue=res;
console.log('----input:', res)
},
searchBtn(){//
if(this.searchValue!=""){
this.getData()
}
},
getData(){
var that=this;
that.$Request.get("/app/massage/package/findPage", {
type:that.typeData,
page:that.page,
limit:that.limit
}).then(res => {
if (res.code == 0) {
if (res.data) {
if (this.page == 1) this.dataList = []; //
this.dataList = [...this.dataList, ...res.data.list]; //
uni.stopPullDownRefresh()
}
}
});
},
backImg(){//
uni.reLaunch({
url:'/pages/index/index'
})
},
clear(res) {
this.getData()
},
itemClick(item) {
if(this.typeData=='104'){
uni.navigateTo({
url:'/pages/my/serviceOderDrtail?id='+item.id+'&limit='+this.limit+'&page='+this.page+'&name='+this.getName+'&isCanCoupon='+item.isCanCoupon
})
}else if(this.typeData=='105'){
uni.navigateTo({
url:'/pages/my/cikarDrtail?id='+item.id+'&limit='+this.limit+'&page='+this.page+'&name='+this.getName+'&isCanCoupon='+item.isCanCoupon
})
}else if(this.typeData=='106'){
uni.navigateTo({
url:'/pages/my/fuwuliaochengDetail?id='+item.id+'&limit='+this.limit+'&page='+this.page+'&name='+this.getName+'&isCanCoupon='+item.isCanCoupon
})
}
}
}
}
</script>
<style scoped>
/deep/.refresh-body .content{
background-color: #f7f7f7;
}
/deep/.refresh-body{
height: 100% !important;
border-top: 2px solid #f7f7f7;
}
.content-view{
width: 100%;
height: 100vh;
overflow: auto;
background-color: #f7f7f7;
}
.item-view-bottom-btn{
text-align: center;
width: 131rpx;
height: 50rpx;
line-height: 50rpx;
background: linear-gradient(90deg, #019C88, #0FA78B, #35C495);
border-radius: 10rpx;
font-weight: bold;
font-size: 24rpx;
color: #FFFFFF;
}
.item-view-bottom-qian span:nth-child(4){
font-weight: bold;
font-size: 31rpx;
color: #848484;
text-decoration-line: line-through;
margin-left: 5px;
}
.item-view-bottom-qian span:nth-child(1){
font-weight: 400;
font-size: 25rpx;
color: #F95900;
}
.item-view-bottom-qian span:nth-child(2){
font-weight: bold;
font-size: 36.81rpx;
color: #F95900;
}
.item-view-bottom-qian span:nth-child(3){
font-weight: 400;
font-size: 25rpx;
color: #F95900;
}
.item-view-bottom{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.item-view-jianjie{
font-weight: 400;
font-size: 22rpx;
color: #848484;
margin:5px 0px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 显示的行数,可以根据需要修改 */
overflow: hidden;
text-overflow: ellipsis;
}
.item-view-biao{
padding: 1px 2px;
border-radius: 6rpx;
}
.tuina{
background-color:#d1f2df;
color: #17984d;
}
.xiaoer{
background-color:#f1f8d7;
color: #58b314;
}
.taishi{
background-color:#e5d5c6;
color: #805d39;
}
.kangfu{
background-color:#fcf3da;
color: #ff8600;
}
.item-view-xiangmu span:nth-child(2){
font-weight: normal;
color: #666666;
margin-left: 5px;
}
.item-view-xiangmu{
width: 100%;
display: flex;
flex-direction: row;
font-weight: 400;
font-size: 21rpx;
margin-top: 5px;
}
.item-view-title{
font-weight: bold;
font-size: 33rpx;
color: #333333;
}
.item-view{
width: 55%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
}
.item-img{
width: 285rpx;
height: 120px;
border-radius: 14rpx;
position: relative;
}
.img-span{
padding: 2px 5px;
font-weight: 400;
font-size: 8px;
color: #FFFFFF;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-radius: 7px 0px 7px 0px;
position: absolute;
bottom: 0px;
right: 0;
margin-bottom: 5px;
margin-right: 5px;
}
.item-img image{
width: 100%;
height: 100%;
}
.item {
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
height: 140px;
background: #FFFFFF;
border-radius: 21rpx;
margin-top:20px;
align-items: center;
padding: 0px 5px;
}
.item-detail {
padding: 5rpx 15rpx;
border-radius: 10rpx;
font-size: 28rpx;
color: white;
background-color: #007AFF;
}
.item-line {
position: absolute;
bottom: 0rpx;
left: 0rpx;
height: 1px;
width: 100%;
background-color: #eeeeee;
}
/deep/.zp-paging-container{
background-color: #f7f7f7;
width:100%;
}
/deep/.zp-paging-container-content{
width: 95%;
margin: 0 auto;
}
.fenlei{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.index-fenl-title{
width: 81rpx;
text-align: center;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
font-weight: bold;
font-size: 34rpx;
color:#019C88;
}
.index-fenl-title-bottom{
position: absolute;
bottom: 0;
margin-bottom: 0px;
width: 81rpx;
height: 14rpx;
border-radius: 7rpx;
background: linear-gradient(-48deg,rgba(1, 156, 136, 0.35),rgba(45, 196, 142, 0.35));
}
/deep/.uni-searchbar__cancel{
display: none;
}
.search-btn{
text-align: center;
line-height: 31px;
color: #fff;
position: absolute;
right: 0;
top: 0;
margin-top:9.4px;
margin-right: 11px;
height: 32px !important;
}
/deep/.uni-searchbar__box-icon-search,.search-btn{
width: 101rpx;
height: 60rpx;
background: #18A689;
border-radius: 31rpx;
}
/deep/.uni-searchbar__box{
height: 31px;
border-radius: 15px !important;
background-color: #fff !important;
border: 2px solid #E5E5E5;
padding: 0px;
display: flex;
flex-direction: row;
flex-flow: row-reverse;
position: relative;
}
/deep/.uni-searchbar{
width: 240px;
border-radius: 31rpx;
}
.service-head-top-left image{
width: 25px;
height: 30rpx;
margin-right: 10px;
}
.service-head-top-left span{
font-weight: bold;
font-size: 44rpx;
color: #171717;
}
.service-head-top-left{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.service-head-top{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
background-color: #fff;
}
</style>

626
pages/my/myCiLiaoDetail.vue Normal file
View File

@ -0,0 +1,626 @@
<template>
<view class="content">
<view class="header">
<view class="header-top" :style="backgroundStyle">
<image src="../../static/servicePackage/member_ba.png" mode="widthFix" v-if="!isVIP"></image>
<image src="../../static/activate2.png" mode="widthFix" v-if="isVIP"></image>
</view>
<view class="header-bottom">
<view class="header-bottom-top">
<view class="header-bottom-title">
<view class="header-bottom-title-text">
<span>{{getList.title}}</span>
<span class="header-bottom-title-liao">
{{dataList.name}}
</span>
</view>
<view class="header-bottom-title-num">
<span>{{getList.sales}}</span>
<span> 人选择</span>
</view>
</view>
<view class="header-bottom-money-view">
<view class="header-bottom-money">
<view class="header-bottom-money-zhen">
<span></span>
<span>{{getList.price}}</span>
<span>/元套</span>
</view>
<view class="header-bottom-money-jia">
{{getList.oldPrice}}
</view>
</view>
</view>
</view>
<view class="header-bottom-foot">
<view class="header-bottom-foot-title">服务保障</view>
<view class="header-bottom-foot-cont">
<view class="header-bottom-foot-view">
<image class="header-bottom-foot-view-img1" src="../../static/servicePackage/idCard.png" mode=""></image>
<span>未服务全额退款</span>
</view>
<view class="header-bottom-foot-view" style="margin: 0px 7px;">
<image class="header-bottom-foot-view-img2" src="../../static/servicePackage/money.png" mode=""></image>
<span>不满意重做</span>
</view>
<view class="header-bottom-foot-view">
<image class="header-bottom-foot-view-img3" src="../../static/servicePackage/shuangyue.png" mode=""></image>
<span>最快30分钟上门</span>
</view>
</view>
</view>
</view>
</view>
<view class="detail-foot">
<view class="detail-foot-nav">
<span class="detail-foot-nav-text">适用说明</span>
<span class="detail-foot-nav-bor"></span>
</view>
<view class="detail-foot-mian" style="background-color: #fff;width: 95%;">
<view class="detail-foot-mian-top">
<span class="detail-foot-mian-top-title">性别限制: </span>
<span class="detail-foot-mian-top-text">不限性别</span>
</view>
<view class="detail-foot-mian-top-bottom">
<span class="detail-foot-mian-top-title">适应人群: </span>
<span class="detail-foot-mian-top-text">
{{getList.applyPeople}}
</span>
</view>
</view>
</view>
<view class="detail-foot">
<view class="detail-foot-nav">
<span class="detail-foot-nav-text">项目详情</span>
<span class="detail-foot-nav-bor"></span>
</view>
<view class="detail-foot-mian">
<image class="detail-foot-mian-img" :src="getList.contentImg" mode="widthFix"></image>
<view class="detail-foot-mian-txet">
<span>SCIENTIFIC WAIST</span>
<span>科学护腰不上脊椎</span>
<span>让您的腰不在盲目呵护!避免二次伤害!</span>
</view>
</view>
</view>
<view class="detail-btn" @click="goumai(getList)">
立即购买
</view>
</view>
</template>
<script>
export default{
data(){
return{
detailData:[],
dataList:[],
getList:[],
isVIP:false,
// URLAPI
backgroundImageUrl: '',
page:1,
limit:10,
}
},
computed: {
backgroundStyle() {
return {
backgroundImage: `url(${this.backgroundImageUrl})`,
backgroundSize: 'cover', //
};
}
},
onLoad(e) {
var that=this;
that.dataList=e;
that.isVIP=this.$queue.getData('isVIP');
that.getData()
},
methods:{
goumai(item){//
this.$queue.setData('getJishi','')
this.$queue.setData('ordersId','');
this.$queue.setData('ordersId',item.massageTypeId);
this.$queue.setData('userPackageDetailId',item.id);
this.$queue.setData('daibudan','');
uni.navigateTo({
url:'/my/order/payModify?ordersId='+item.massageTypeId
})
},
getData(){//
var that=this;
let data = {
massageTypeId:that.dataList.id,
mainId: that.dataList.mainId,
page: that.page,
limit: that.limit,
}
that.$Request.get('/app/user/package/detail/getMyPackageDetail', data).then(res => {
if (res.code == 0) {
that.getList=res.data;
that.backgroundImageUrl=that.getList.packageImg
}
})
},
}
}
</script>
<style scoped>
.dingdan-btn{
text-align: center;
width: 62px;
height: 24px;
line-height: 24px;
border-radius: 4px;
font-weight: bold;
font-size: 11px;
}
.dingdan-btn-l{
background: linear-gradient(90deg, #019C88, #0FA78B, #35C495);
color: #FFFFFF;
}
.dingdan-btn-h{
background: #666;
color: #FFFFFF;
}
.tese span:nth-child(1){
font-weight: bold;
font-size: 22rpx;
color: #333333;
}
.tese span:nth-child(2){
font-weight: 400;
font-size: 22rpx;
color: #8D9194;
}
.tese{
width: 100%;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 显示的行数,可以根据需要修改 */
overflow: hidden;
text-overflow: ellipsis;
}
.detail-foot-nav-bor{
width: 64px;
height: 11rpx;
border-radius: 6rpx;
position: absolute;
bottom: 0;
background: linear-gradient(90deg,rgba(234, 248, 245,0.7),rgba(132, 211, 196,0.7));
}
.detail-foot-nav-text{
font-weight: bold;
font-size: 32rpx;
color: #000000;
}
.detail-foot-nav{
width: 90%;
display: flex;
flex-direction: column;
position: relative;
}
.detail-foot-title{
width: 115px;
height: 32px;
background-image: url(../../static/servicePackage/horn.png);
background-repeat: no-repeat;
background-size: 100% 100%;
font-weight: 400;
font-size: 12px;
color: #FFFFFF;
text-align: right;
line-height: 32px;
padding-right: 15px;
position: absolute;
right: 0;
top: 0;
}
.detail-foot-list-top{
width: 95%;
display: flex;
flex-direction: row;
align-items: center;
margin-bottom: 25px;
}
.detail-foot-list{
width: 95%;
border-radius: 21rpx;
position: relative;
display: flex;
flex-direction: column;
background-color: #fff;
padding: 10px;
margin-bottom: 10px;
}
.detail-foot{
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
padding: 15px 0px;
}
.detail-foot-list-top span:nth-child(1){
font-weight: bold;
font-size: 31rpx;
color: #3F3F3F;
}
.detail-foot-list-top span:nth-child(2){
width: 76rpx;
height: 33rpx;
line-height: 33rpx;
text-align: center;
border-radius: 16rpx;
border: 1px solid #7D7D7D;
font-weight: 400;
font-size: 20rpx;
color: #777777;
margin: 0px 25px 0px 5px;
}
.detail-foot-list-top span:nth-child(3){
font-weight: 400;
font-size: 22rpx;
color: #777777;
}
.detail-foot-mian{
width: 100%;
display: flex;
flex-direction: column;
margin: 0 auto;
border-radius: 21rpx;
padding: 15px;
}
.header-bottom-title-liao{
display: inline-block;
padding: 0 7px;
height: 16px;
line-height: 16px;
text-align: center;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-radius: 7px;
margin-left: 5px;
font-weight: bold;
font-size: 8px;
border-top-left-radius: 20px;
border-bottom-right-radius: 20px;
color: #fff;
}
.detail-btn{
width:95%;
height: 92rpx;
line-height: 92rpx;
background: linear-gradient(90deg, #019C88, #28BA92, #35C495);
border-radius: 46rpx;
margin: 0 auto;
text-align: center;
font-weight: 400;
font-size: 42rpx;
color: #FFFFFF;
}
.detail-foot-mian-txet span:nth-child(1){
color: #777777;
font-size: 12px;
font-weight: bold;
margin-bottom: 5px;
}
.detail-foot-mian-txet span:nth-child(2){
color: #333;
font-size: 15px;
font-weight: bold;
margin-bottom:3px;
}
.detail-foot-mian-txet span:nth-child(3){
color: #777777;
font-size: 14px;
font-weight: bold;
}
.detail-foot-mian-txet{
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
margin-top: 20px;
}
.detail-foot-mian-img{
width: 100%;
height:auto;
}
.detail-foot-mian-top-bottom{
margin-top: 10px;
}
.detail-foot-mian-top-title{
color: #333333;
}
.detail-foot-mian-top-text{
color: #777777;
width:83%;
}
.detail-foot-mian-top,.detail-foot-mian-top-bottom{
width: 100%;
display: flex;
flex-direction: row;
font-weight: bold;
font-size: 22rpx;
}
.header-bottom-title-bottom span{
font-weight: bold;
font-size: 22rpx;
color: #20AB95;
}
.header-bottom-title-bottom image{
width: 34.03rpx;
height: 30.56rpx;
margin-right: 3px;
}
.header-bottom-title-bottom{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
margin: 5px 0px;
}
.shouc image{
width: 34.03rpx;
height: 32.64rpx;
}
.shouc{
display: flex;
align-items: center;
justify-content: center;
}
.detail-foot-nav-bor{
width: 64px;
height: 11rpx;
border-radius: 6rpx;
position: absolute;
bottom: 0;
background: linear-gradient(90deg,rgba(234, 248, 245,0.7),rgba(132, 211, 196,0.7));
}
.detail-foot-nav-text{
font-weight: bold;
font-size: 32rpx;
color: #000000;
}
.detail-foot-nav{
width: 90%;
display: flex;
flex-direction: column;
position: relative;
margin-bottom: 10px;
}
.detail-foot{
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
padding: 15px 0px;
}
.tese span:nth-child(1){
font-weight: bold;
font-size: 22rpx;
color: #333333;
}
.tese span:nth-child(2){
font-weight: 400;
font-size: 22rpx;
color: #8D9194;
}
.tese{
width: 100%;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 显示的行数,可以根据需要修改 */
overflow: hidden;
text-overflow: ellipsis;
}
.detail-foot-list-top span:nth-child(1){
font-weight: bold;
font-size: 31rpx;
color: #3F3F3F;
}
.detail-foot-list-top span:nth-child(2){
width: 76rpx;
height: 33rpx;
line-height: 33rpx;
text-align: center;
border-radius: 16rpx;
border: 1px solid #7D7D7D;
font-weight: 400;
font-size: 20rpx;
color: #777777;
margin: 0px 25px 0px 5px;
}
.detail-foot-list-top span:nth-child(3){
font-weight: 400;
font-size: 22rpx;
color: #777777;
}
.jianjie{
font-weight: 400;
font-size: 22rpx;
color: #8D9194;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 显示的行数,可以根据需要修改 */
overflow: hidden;
text-overflow: ellipsis;
}
.header-bottom-mian{
margin: 10px 0px;
}
.header-bottom-mian-title{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
margin-bottom: 6px;
}
.header-bottom-mian-title span{
font-weight: 400;
font-size: 26rpx;
color: #20AB95;
margin-left: 5px;
}
.header-bottom-mian-title image{
width: 30.56rpx;
height: 29.86rpx;
}
.header-bottom-foot-view-img1{
width: 22.92rpx;
height: 17.36rpx;
}
.header-bottom-foot-view-img2{
width: 16.67rpx;
height: 16.67rpx;
}
.header-bottom-foot-view-img3{
width: 15.97rpx;
height: 18.06rpx;
}
.header-bottom-foot-view image{
margin-right: 3px;
}
.header-bottom-foot-view{
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
padding: 0 5px;
height: 22px;
line-height: 22px;
background-color: rgba(8, 162, 138, 0.1);
border-radius: 8px;
font-weight: 400;
font-size: 8px;
color: #029D88;
}
.header-bottom-foot-title{
width:100%;
height: 22px;
line-height: 22px;
text-align: left;
font-weight: 600;
font-size: 23rpx;
color: #08A28A;
margin-top: 5px;
}
.header-bottom-foot-cont{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.header-bottom-foot{
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
}
.header-bottom-money-jia{
font-weight: bold;
font-size: 28rpx;
color: #848484;
line-height: 37rpx;
margin-left: 5px;
}
.header-bottom-money-zhen span{
color: #F95900;
}
.header-bottom-money-zhen span:nth-child(1){
font-size: 25rpx;
}
.header-bottom-money-zhen span:nth-child(2){
font-size:36.81rpx;
font-weight: bold;
}
.header-bottom-money-zhen span:nth-child(3){
font-size: 25rpx;
}
.header-bottom-money-zhen{
display: flex;
flex-direction: row;
align-items: baseline;
}
.header-bottom-money-view{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
margin-top:5px;
}
.header-bottom-money{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.header-bottom-title-num span{
font-weight: bold;
font-size: 25rpx;
}
.header-bottom-title-num span:nth-child(1){
color: #08A28A;
}
.header-bottom-title-num span:nth-child(2){
color: #848485;
margin-left: 5px;
}
.header-bottom-title-text{
font-weight: bold;
font-size: 35rpx;
color: #13141A;
}
.header-bottom-title{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.header-bottom-top{
width: 100%;
display: flex;
flex-direction: column;
}
.header-bottom{
width: 100%;
background-color: #fff;
padding: 15px;
display: flex;
flex-direction: column;
}
.header-top image{
width: 706.25rpx;
height: 105.07rpx;
}
.header-top{
width: 100%;
height: 745.83rpx;
background-image: url('../../static/servicePackage/display.png');
background-size: 100%;
background-repeat: no-repeat;
display: flex;
align-items: flex-end;
justify-content: center;
}
.header{
width: 100%;
display: flex;
flex-direction: column;
}
.content{
width: 100%;
height: auto;
background-color: #f7f7f7;
}
</style>

View File

@ -0,0 +1,448 @@
<!-- 自定义下拉刷新与上拉加载演示(vue) -->
<template>
<view class="content-view">
<view class="service-head-top">
<view class="service-head-top-left">
<image @click="backImg" src="../../static/fanhui.png" mode="widthFix"></image>
<span>{{previousPage.name}}</span>
</view>
<view>
<uni-search-bar @service="serviceTrue" @confirm="search" :cancelext="'取消'" v-model="searchValue" @input="input"
@clear="clear">
</uni-search-bar>
<view class="search-btn" @click="searchBtn">
搜索
</view>
</view>
</view>
<t-refresh ref="refresh" v-if="dataList.length>0" @refresh="refresh" @loadMore="loadMore" :loadingType="loadingType" :tPadding="0">
<template slot="content">
<view class="item" v-for="(item,index) in dataList" :key="index" @click="itemClick(item)">
<view class="item-img">
<image :src="item.massageImg" mode=""></image>
</view>
<view class="item-view">
<view class="item-view-title">
<span class="item-view-title-text">{{item.title}}</span>
<span class="header-bottom-title-liao">
{{item.typeName}}
</span>
</view>
<!-- <view class="item-view-xiangmu">
<span class="xiaoer item-view-biao">{{item.classifyName}}</span>
<span>已售{{item.sales}}w+ | 好评{{item.esteemRate}}%</span>
</view> -->
<view class="item-view-jianjie">
{{item.content}}
</view>
<view class="item-view-bottom">
<view class="item-view-bottom-qian">
<span></span>
<span>{{item.price}}</span>
<span>/元套</span>
<span>{{item.oldPrice}}</span>
</view>
<view class="item-view-bottom-btn">
查看
</view>
</view>
</view>
</view>
</template>
</t-refresh>
<empty v-if="dataList.length==0"></empty>
</view>
</template>
<script>
import empty from '@/components/empty.vue'
import tRefresh from "@/components/t-refresh/t-refresh.vue"
export default {
components:{tRefresh,empty},
data() {
return {
loadingType:0,
myId: '',
// v-model
dataList: [],
tabList: [],
typeData:'105',
tabIndex: 0,
searchValue:'',
serviceTrue:true,
page:1,
limit:10,
titleNmae:'',
classifyId:'',
previousPage:{}
}
},
onLoad(e){
var that=this;
that.previousPage=e;
that.isVIP=this.$queue.getData('isVIP');
that.myId = uni.getStorageSync('userId');
that.getData()
},
onPullDownRefresh: function() {
this.page = 1;
this.getData();
},
methods: {
//
loadMore: async function() {
//loadingType: 0. 1. 2.
if(this.loadingType==0){
this.loadingType=2
//
setTimeout(()=>{
this.page++;
this.loadingType=0;
this.getData()
},1000)
}
},
input(res) {//
this.searchValue=res;
},
searchBtn(){//
if(this.searchValue!=""){
this.getData()
}
},
getData(){
this.$Request.get("/app/collect/massage/findPage", {
userId: this.myId,
classify:'2',
page:this.page,
limit:this.limit,
title:this.searchValue
}).then(res => {
if (res.code == 0) {
if (res.data) {
if (this.page == 1) this.dataList = []; //
this.dataList = [...this.dataList, ...res.data.records]; //
uni.stopPullDownRefresh()
}
}
});
},
backImg(){//
uni.reLaunch({
url:'/pages/my/index'
})
},
clear(res) {
this.getData()
},
itemClick(item) {
if(item.typeName=='项目'){
uni.navigateTo({
url:'/pages/my/fuwuDateil?id='+item.projectId+'&limit='+this.limit+'&page='+this.page+'&name='+'index'
})
}else if(item.typeName=='套餐'){
uni.navigateTo({
url:'/pages/my/serviceOderDrtail?id='+item.projectId+'&limit='+10+'&page='+1+'&name='+'index'
})
}else if(item.typeName=='次卡'){
uni.navigateTo({
url:'/pages/my/cikarDrtail?id='+item.projectId+'&limit='+this.limit+'&page='+this.page+'&name='+'index'
})
}else if(item.typeName=='疗程'){
uni.navigateTo({
url:'/pages/my/fuwuliaochengDetail?id='+item.projectId+'&limit='+this.limit+'&page='+this.page+'&name='+'index'
})
}
}
}
}
</script>
<style scoped>
.header-bottom-title-liao{
display: inline-block;
padding: 0 7px;
height: 16px;
line-height: 16px;
text-align: center;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-radius: 7px;
margin-left: 5px;
font-weight: bold;
font-size: 8px;
border-top-left-radius: 20px;
border-bottom-right-radius: 20px;
color: #fff;
}
/deep/.refresh-body .content{
background-color: #f7f7f7;
}
/deep/.refresh-body{
height: 100% !important;
border-top: 2px solid #f7f7f7;
}
.content-view{
width: 100%;
height: 100vh;
overflow: auto;
background-color: #f7f7f7;
}
.item-view-bottom-btn{
text-align: center;
width: 131rpx;
height: 50rpx;
line-height: 50rpx;
background: linear-gradient(90deg, #019C88, #0FA78B, #35C495);
border-radius: 10rpx;
font-weight: bold;
font-size: 24rpx;
color: #FFFFFF;
}
.item-view-bottom-qian span:nth-child(4){
font-weight: bold;
font-size: 31rpx;
color: #848484;
text-decoration-line: line-through;
margin-left: 5px;
}
.item-view-bottom-qian span:nth-child(1){
font-weight: 400;
font-size: 25rpx;
color: #F95900;
}
.item-view-bottom-qian span:nth-child(2){
font-weight: bold;
font-size: 36.81rpx;
color: #F95900;
}
.item-view-bottom-qian span:nth-child(3){
font-weight: 400;
font-size: 25rpx;
color: #F95900;
}
.item-view-bottom{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.item-view-jianjie{
font-weight: 400;
font-size: 22rpx;
color: #848484;
margin:5px 0px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 显示的行数,可以根据需要修改 */
overflow: hidden;
text-overflow: ellipsis;
}
.item-view-biao{
padding: 1px 2px;
border-radius: 6rpx;
}
.tuina{
background-color:#d1f2df;
color: #17984d;
}
.xiaoer{
background-color:#f1f8d7;
color: #58b314;
}
.taishi{
background-color:#e5d5c6;
color: #805d39;
}
.kangfu{
background-color:#fcf3da;
color: #ff8600;
}
.item-view-xiangmu span:nth-child(2){
font-weight: normal;
color: #666666;
margin-left: 5px;
}
.item-view-xiangmu{
width: 100%;
display: flex;
flex-direction: row;
font-weight: 400;
font-size: 21rpx;
margin-top: 5px;
}
.item-view-title-text{
display: inline-block;
width: 100px;
font-weight: bold;
font-size: 33rpx;
color: #333333;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.item-view-title{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.item-view{
width: 55%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
}
.item-img{
width: 285rpx;
height: 120px;
border-radius: 14rpx;
position: relative;
}
.img-span{
padding: 2px 5px;
font-weight: 400;
font-size: 8px;
color: #FFFFFF;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-radius: 7px 0px 7px 0px;
position: absolute;
bottom: 0px;
right: 0;
margin-bottom: 5px;
margin-right: 5px;
}
.item-img image{
width: 100%;
height: 100%;
}
.item {
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
height: 140px;
background: #FFFFFF;
border-radius: 21rpx;
margin-top:20px;
align-items: center;
padding: 0px 5px;
}
.item-detail {
padding: 5rpx 15rpx;
border-radius: 10rpx;
font-size: 28rpx;
color: white;
background-color: #007AFF;
}
.item-line {
position: absolute;
bottom: 0rpx;
left: 0rpx;
height: 1px;
width: 100%;
background-color: #eeeeee;
}
/deep/.zp-paging-container{
background-color: #f7f7f7;
width:100%;
}
/deep/.zp-paging-container-content{
width: 95%;
margin: 0 auto;
}
.fenlei{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.index-fenl-title{
width: 81rpx;
text-align: center;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
font-weight: bold;
font-size: 34rpx;
color:#019C88;
}
.index-fenl-title-bottom{
position: absolute;
bottom: 0;
margin-bottom: 0px;
width: 81rpx;
height: 14rpx;
border-radius: 7rpx;
background: linear-gradient(-48deg,rgba(1, 156, 136, 0.35),rgba(45, 196, 142, 0.35));
}
/deep/.uni-searchbar__cancel{
display: none;
}
.search-btn{
text-align: center;
line-height: 31px;
color: #fff;
position: absolute;
right: 0;
top: 0;
margin-top:9.4px;
margin-right: 11px;
height: 32px !important;
}
/deep/.uni-searchbar__box-icon-search,.search-btn{
width: 101rpx;
height: 60rpx;
background: #18A689;
border-radius: 31rpx;
}
/deep/.uni-searchbar__box{
height: 31px;
border-radius: 15px !important;
background-color: #fff !important;
border: 2px solid #E5E5E5;
padding: 0px;
display: flex;
flex-direction: row;
flex-flow: row-reverse;
position: relative;
}
/deep/.uni-searchbar{
width: 240px;
border-radius: 31rpx;
}
.service-head-top-left image{
width: 25px;
height: 30rpx;
margin-right: 10px;
}
.service-head-top-left span{
font-weight: bold;
font-size: 44rpx;
color: #171717;
}
.service-head-top-left{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.service-head-top{
width: 100%;
height: 51px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
background-color: #fff;
}
</style>

View File

@ -2,7 +2,8 @@
<view class="content">
<view class="header">
<view class="header-top" :style="backgroundStyle">
<image v-if="isVIP==false" src="../../static/servicePackage/member_ba.png" mode=""></image>
<image src="../../static/servicePackage/member_ba.png" mode="widthFix" v-if="!isVip"></image>
<image src="../../static/activate2.png" mode="widthFix" v-if="isVip"></image>
</view>
<view class="header-bottom">
<view class="header-bottom-top">
@ -11,7 +12,7 @@
{{mainData.title}}
</view>
<view class="header-bottom-title-num">
<span>{{mainData.sales}} </span>
<span>{{mainData.sales}}</span>
<span> 人选择</span>
</view>
</view>
@ -78,29 +79,87 @@
</view>
<view class="tese">
<span>项目特色: </span>
<span>{{item.content}}</span>
<span>{{item.jianjie}}</span>
</view>
<view class="detail-foot-title">
服务项目{{index+1}}
</view>
</view>
</view>
</view>
<checkbox-group @change="checkboxChange" v-if="serviData.name=='index' && serviData.isCanCoupon=='1'">
<view class="youhui-weiyong youhui-list" v-for="(itemY,indexY) in couponData" :key="itemY.id">
<view class="youhui-view-left">
<view class="youhui-view-left-yuan">
<span class="youhui-view-left-num">{{itemY.money}}</span>
<span class="youhui-view-left-text"></span>
</view>
<view class="youhui-view-left-bottom">
{{itemY.minMoney}}元可用
</view>
</view>
<view class="youhui-view-right">
<view class="youhui-view-right-top">
<view class="youhui-view-right-title">{{itemY.couponName}}</view>
<view class="youhui-view-right-time">{{itemY.endDate}}</view>
</view>
<label class="tui-radio">
<checkbox activeBackgroundColor="#096f4b" color="#096f4b" :value="itemY.id.toString()" :checked="checkbox"/>
</label>
</view>
</view>
</checkbox-group>
<view class="detail-btn" v-if="serviData.name=='index'" @click="openpay">
立即预约
</view>
<!-- 支付方式 -->
<u-popup v-model="showpay" mode="bottom" :closeable="closeable">
<view class="popup_pay">
<view style="background-color: #fff;">
<view style="padding: 0 20upx;margin-top: 60rpx;margin-bottom: 20rpx;display: flex;flex-direction: column;justify-content: center;">
<view
style="width:92%;display: flex;height: 100upx;align-items: center;padding: 20upx 0;justify-content: center;"
v-for="(item,index) in openLists" :key='item.id'>
<image :src="item.image" style="width: 55upx;height: 55upx;border-radius: 50upx;">
</image>
<view style="font-size: 30upx;margin-left: 20upx;width: 70%;">
{{item.text}}
</view>
<radio-group name="openWay" style="margin-left: 45upx;" @tap='selectWay(item)'>
<label class="tui-radio">
<radio color="#096f4b" :checked="openWay === item.id ? true : false" />
</label>
</radio-group>
</view>
</view>
</view>
<view class="pay_btn" @click="pay()">确认支付</view>
</view>
</u-popup>
</view>
</template>
<script>
export default{
data(){
return{
checkbox:false,
couponData:[],
couponId:'',
tordersId: '',
tpayMoney: '',
paySel: 0,
openWay: 1,
openLists: [],
closeable: true,
showpay: false,
serviData:[],
isVIP:false,
isVip:false,
mainData:[],
detailData:[],
// URLAPI
backgroundImageUrl: ''
backgroundImageUrl: '',
nameText:'',
zong:''
}
},
computed: {
@ -113,36 +172,606 @@
},
onLoad(e){
var that=this;
that.serviData=e
that.serviData=e;
that.getData();
this.isVIP=this.$queue.getData('isVIP');
that.youhui()
that.isVip=this.$queue.getData('isVIP');
},
onShow() {
// #ifndef MP-WEIXIN
this.openLists = [{
image: '../../static/images/icon_weixin.png',
text: '微信支付',
id: 2
}, {
image: '../../static/images/zhifubao.png',
text: '支付宝支付',
id: 3
}, {
image: '../../static/images/lingqian.png',
text: '零钱支付',
id: 1
}],
this.openWay = 2;
// #endif
// #ifdef MP-WEIXIN
this.openLists = [{
image: '../../static/images/icon_weixin.png',
text: '微信支付',
id: 2
}, {
image: '../../static/images/lingqian.png',
text: '零钱支付',
id: 1
}],
this.openWay = 2;
// #endif
},
methods:{
checkboxChange(e){
this.couponId=e.detail.value.join(",")
},
youhui(){//
let that = this
let data = {
status: 0,
page: 1,
limit: 10
}
that.$Request.get("/app/coupon/selectCouponUserList", data).then(res => {
if (res.code == 0) {
that.couponData=res.data.list
} else {
that.$queue.showToast(res.msg)
}
});
},
goOrder() {//orderId
let that = this
console.log('asdasd',that.couponId)
// let payMoney =item.price;
// let payMoney = that.isVip ? item.memberPrice : item.price;
let data = {
userId: uni.getStorageSync('userId'),
couponId: that.couponId,
oldSumMoney: that.mainData.oldPrice*that.detailData.length,
sumMoney: that.mainData.price*that.detailData.length,
ordersPackageList:[
{packageId: that.mainData.id,num: that.detailData.length},
]
}
that.$Request.postJson("/app/user/package/order/insertOrders", data).then(res => {
that.showorder = false
if (res.code == 0) {
that.tordersId = res.data.ordersId;
that.tpayMoney = res.data.payMoney;
that.showpay = true;
that.paySel = 1;
} else {
that.$queue.showToast(res.msg)
}
});
},
openpay() {
this.goOrder()
this.showpay = true
},
//
selectWay: function(item) {
this.openWay = item.id;
},
payJZ() {
let that = this;
if (that.openWay == 1) { //
uni.showModal({
title: '付款提示',
content: '确认支付' + that.tpayMoney + '元吗?',
success: function(re) {
if (re.confirm) {
that.$queue.showLoading('支付中...')
// console.log('');
that.$Request.post("/app/user/package/order/payOrder", {
ordersId: that.tordersId,
}).then(ret => {
uni.hideLoading();
if (ret.code == 0) {
uni.showToast({
title: '支付成功',
icon: 'none'
})
that.getData()
} else {
uni.showToast({
title: ret.msg,
icon: 'none'
})
}
});
} else if (re.cancel) {
}
}
})
} else if (that.openWay == 2) { //
// #ifdef MP-WEIXIN
let data = {
ordersId: that.tordersId,
type: 3
}
that.$Request.post('/app/wxPay/payOrder', data).then(ret => {
console.log(ret)
if (ret.code == 0) {
uni.hideLoading();
uni.requestPayment({
provider: 'wxpay',
timeStamp: ret.data.timestamp,
nonceStr: ret.data.noncestr,
package: ret.data.package,
signType: ret.data.signType,
paySign: ret.data.sign,
success: function(ret) {
console.log(ret)
uni.showToast({
title: '支付成功',
icon: 'none'
})
that.getData()
// this.$queue.showToast('');
// uni.switchTab({
// url: '/pages/my/index'
// })
},
fail: function(err) {
// this.$queue.showToast('');
uni.showToast({
title: '支付失败',
icon: 'nones'
});
}
});
}
});
// #endif
// #ifdef H5
let ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('micromessenger') != -1) {
let data = {
ordersId: that.tordersId,
type: 2
}
that.$Request.post('/app/wxPay/payOrder', data).then(rea => {
that.showpay = false
if (rea.code == 0) {
that.callPay(rea.data);
that.getData()
} else {
uni.showToast({
title: rea.msg,
icon: 'none'
})
}
});
} else {
let data = {
ordersId: that.tordersId,
type: 4
}
that.$Request.post('/app/wxPay/payOrder', data).then(rea => {
that.showpay = false
if (rea.code == 0) {
const urlArr = window.location.href;
const hostUrl = urlArr.split("/");
const callBack = hostUrl[0] + "//" + hostUrl[2] + "/";
const url = '&redirect_url=' + callBack + 'my/order/pay';
window.location = rea.data.mweb_url + url
that.getData()
} else {
uni.showToast({
title: rea.msg,
icon: 'none'
})
}
});
}
// #endif
// #ifdef APP
let data = {
ordersId: that.order.ordersId,
type: 1
}
that.$Request.post('/app/wxPay/payOrder', data).then(rea => {
console.log(rea)
that.showpay = false
if (rea.code == 0) {
that.isCheckPay(rea.code, 'wxpay', JSON.stringify(rea.data));
}
});
// #endif
} else if (that.openWay == 3) { //
// #ifdef H5
let data = {
ordersId: that.tordersId,
type: 2
}
that.$Request.post('/app/aliPay/payOrder', data).then(
rea => {
that.showpay = false
const div = document.createElement('div')
div.innerHTML = rea.data //form
document.body.appendChild(div)
document.forms[0].submit()
that.getData()
});
// #endif
// #ifdef APP-PLUS
let data = {
ordersId: that.tordersId,
type: 1
}
that.$Request.post('/app/aliPay/payOrder', data).then(
rea => {
that.showpay = false
that.setPayment('alipay', rea.data);
that.getData()
});
// #endif
}
},
//
pay() {
let that = this
this.showpay = false
if (this.paySel != 0) {
this.payJZ();
return;
}
if (that.openWay == 1) { //
uni.showModal({
title: '付款提示',
content: '确认支付' + that.order.payMoney + '元吗?',
success: function(re) {
if (re.confirm) {
that.$queue.showLoading('支付中...')
console.log('用户点击确定');
that.$Request.post("/app/user/package/order/payOrder", {
ordersId: that.order.ordersId,
}).then(res => {
uni.hideLoading();
if (res.code == 0) {
uni.showToast({
title: '支付成功'
})
that.getData()
} else {
uni.showToast({
title: res.msg,
icon: 'none'
})
}
});
} else if (re.cancel) {
uni.hideLoading();
console.log('用户点击取消');
}
}
})
} else if (that.openWay == 2) { //
that.$queue.showLoading('支付中...')
// #ifdef MP-WEIXIN
let data = {
ordersId: that.order.ordersId,
type: 3
}
that.$Request.post('/app/wxPay/payOrder', data).then(ret => {
console.log(ret)
if (ret.code == 0) {
uni.hideLoading();
uni.requestPayment({
provider: 'wxpay',
timeStamp: ret.data.timestamp,
nonceStr: ret.data.noncestr,
package: ret.data.package,
signType: ret.data.signType,
paySign: ret.data.sign,
success: function(ret) {
console.log(ret)
uni.showToast({
title: '支付成功',
icon: 'none'
})
that.getData()
// this.$queue.showToast('');
// uni.switchTab({
// url: '/pages/my/index'
// })
},
fail: function(err) {
// this.$queue.showToast('');
uni.showToast({
title: '支付失败',
icon: 'nones'
});
}
});
}
});
// #endif
// #ifdef H5
let ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('micromessenger') != -1) {
let data = {
ordersId: that.order.ordersId,
type: 2
}
that.$Request.post('/app/wxPay/payOrder', data).then(rea => {
that.showpay = false
if (rea.code == 0) {
that.callPay(rea.data);
that.getData()
} else {
uni.showToast({
title: rea.msg,
icon: 'none'
})
}
});
} else {
let data = {
ordersId: that.order.ordersId,
type: 4
}
// debugger;
that.$Request.post('/app/wxPay/payOrder', data).then(rea => {
// const urlArr = window.location.href;
// const hostUrl = urlArr.split("/");
// const callBack = hostUrl[0] + "//" + hostUrl[2] + "/";
// const url = '&redirect_url=' + callBack + 'my/order/pay';
// window.location = rea.mweb_url + url
that.showpay = false
if (rea.code == 0) {
const urlArr = window.location.href;
const hostUrl = urlArr.split("/");
const callBack = hostUrl[0] + "//" + hostUrl[2] + "/";
const url = '&redirect_url=' + callBack + 'my/order/pay';
window.location = rea.data.mweb_url + url
that.getData()
} else {
uni.showToast({
title: rea.msg,
icon: 'none'
})
}
});
}
// #endif
// #ifdef APP
let data = {
ordersId: that.order.ordersId,
type: 1
}
that.$Request.post('/app/wxPay/payOrder', data).then(rea => {
console.log(rea)
that.showpay = false
if (rea.code == 0) {
that.getData()
that.isCheckPay(rea.code, 'wxpay', JSON.stringify(rea.data));
}
});
// #endif
} else if (that.openWay == 3) { //
that.$queue.showLoading('支付中...')
// #ifdef H5
let data = {
ordersId: that.order.ordersId,
type: 2
}
that.$Request.post('/app/aliPay/payOrder', data).then(
rea => {
const div = document.createElement('div')
div.innerHTML = rea.data //form
document.body.appendChild(div)
document.forms[0].submit()
that.getData()
});
// #endif
// #ifdef APP-PLUS
let data = {
ordersId: that.order.ordersId,
type: 1
}
that.$Request.post('/app/aliPay/payOrder', data).then(
rea => {
that.setPayment('alipay', rea.data);
that.getData()
});
// #endif
}
},
detail(item){
console.log("111111",item)
uni.navigateTo({
url:'/pages/my/cureOderDrtail'
url:'/pages/my/cureOderDrtail?mainId='+item.mainId+'&id='+item.id+
'&massageTypeId='+item.massageTypeId+
'&page='+1+
'&limit='+10+
'&name='+this.nameText
})
},
getData(){
var that=this;
let data = {
mainId: that.serviData.id,
page: that.serviData.page,
limit: that.serviData.limit,
if(that.serviData.name!='index'){
let data = {
mainId: that.serviData.id,
page: that.serviData.page,
limit: that.serviData.limit,
}
that.$Request.get('/app/user/package/detail/findMyPackageDetailList',data).then(res => {
if (res.code == 0) {
that.mainData=res.data.mainData;
that.detailData=res.data.detailData;
that.backgroundImageUrl=that.mainData.packageImg;
that.nameText="my"
}
that.$Request.get('/app/user/package/detail/findMyPackageDetailList',data).then(res => {
if (res.code == 0) {
that.mainData=res.data.mainData;
that.detailData=res.data.detailData;
that.backgroundImageUrl=that.mainData.packageImg
}
})
})
}else{//
let data = {
mainId: that.serviData.id,
page: that.serviData.page,
limit: that.serviData.limit,
}
that.$Request.get('/app/massage/packageDetail/findAppPage',data).then(res => {
if (res.code == 0) {
that.mainData=res.mainData;
that.detailData=res.detailData.list;
that.backgroundImageUrl=that.mainData.packageImg;
that.nameText="index"
}
})
}
},
}
}
</script>
<style scoped>
/deep/uni-checkbox .uni-checkbox-input{
width: 26px;
height: 26px;
border-radius: 50%;
}
.youhui-img{
width: 111.81rpx;
height: 111.81rpx;
}
.youhui-view-right-btn{
width: 158rpx;
height: 64rpx;
background: linear-gradient(-90deg, #019C88, #2DC48E);
border-radius: 32rpx;
text-align: center;
line-height: 64rpx;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
text-shadow: 0rpx 2rpx 4rpx rgba(0,119,104,0.44);
margin-left: 10px;
}
.youhui-view-right-time{
font-weight: 400;
font-size: 22rpx;
color: #999999;
}
.youhui-view-right-title{
width: 105px;
font-weight: 400;
font-size: 32rpx;
color: #333333;
}
.youhui-view-right-top{
display: flex;
flex-direction: column;
align-items: center;
}
.youhui-view-right{
width: 502.08rpx;
height: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-around;
}
.youhui-view-left-bottom{
font-weight: 400;
font-size: 22rpx;
color: #FFFFFF;
}
.youhui-view-left-yuan{
display: flex;
flex-direction: row;
align-items: baseline;
color: #FFFFFF;
}
.youhui-view-left-num{
font-weight: bold;
font-size: 89rpx;
}
.youhui-view-left-text{
font-weight: bold;
font-size:24.31rpx;
}
.youhui-view-left{
width: 199rpx;
height: 242rpx;
display: flex;
flex-direction:column;
align-items: center;
justify-content: center;
}
.youhui-yiyong{
background-image: url('../../static/youhuijuan/coupons7.png');
}
.youhui-weiyong{
background-image: url('../../static/youhuijuan/coupons1.png');
}
.youhui-list{
width: 95%;
display: flex;
flex-direction: row;
height: 242rpx;
border-radius: 21rpx;
background-size: 100%;
margin: 20px auto;
justify-content: space-between;
}
.popup_pay {
width: 100%;
position: relative;
padding-bottom: 45rpx;
/* height: 400px; */
/* height: 160px; */
/* #ifndef MP-WEIXIN */
/* height: 130px; */
/* #endif */
}
.pay_btn {
width: 90%;
margin: 0 auto;
text-align: center;
background: linear-gradient(90deg, #019C88, #28BA92, #35C495);
height: 80rpx;
border-radius: 60rpx;
color: #ffffff;
line-height: 80rpx;
}
.detail-btn{
width:95%;
height: 92rpx;
line-height: 92rpx;
background: linear-gradient(90deg, #019C88, #28BA92, #35C495);
border-radius: 46rpx;
margin: 0 auto;
text-align: center;
font-weight: 400;
font-size: 42rpx;
color: #FFFFFF;
}
.header-top image{
width: 706.25rpx;
height: 105.07rpx;

View File

@ -8,7 +8,7 @@
<view class="service-head-top">
<view class="service-head-top-left">
<image @click="backImg" src="../../static/fanhui.png" mode="widthFix"></image>
<span>{{titleNmae}}</span>
<span>服务套餐</span>
</view>
<view>
<uni-search-bar @service="serviceTrue" @confirm="search" :cancelext="'取消'" v-model="searchValue" @input="input"
@ -45,7 +45,7 @@
<!-- <view class="item-line"></view> -->
<view class="item-img">
<image :src="item.packageImg" mode=""></image>
<span class="img-span">{{item.type}}</span>
<span class="img-span">{{item.status=='1'?'未用完':item.status=='2'?'退款':'已用完'}}</span>
</view>
<view class="item-view">
<view class="item-view-title">
@ -65,116 +65,14 @@
<span>/元套</span>
<span>{{item.oldPrice}}</span>
</view>
<view class="item-view-bottom-btn" @click.stop="toggle('center')">
<view class="item-view-bottom-btn">
查看
</view>
</view>
</view>
</view>
</z-paging>
<view>
<!-- 普通弹窗 -->
<uni-popup ref="popup" background-color="#fff" @change="change">
<view class="popup-content">
<view class="popup-head">
<span>改价单</span>
<span @click="closePopup(type)">x</span>
</view>
<view class="popup-mian">
<!-- <view class="popup-mian-textarea">
<view class="popup-mian-view">
<span>原服务项目价格:</span>
<span>198</span>
</view>
<view class="popup-mian-view">
<span>现服务项目价格:</span>
<span>298</span>
</view>
<view class="popup-mian-view">
<span>改价需支付差价:</span>
<span>100</span>
</view>
</view> -->
<view class="chong">
<view class="chong-list">
<view class="chong-list-left">
<radio value="" class="chong-list-radio"/>
<image src="../../static/jinggao.png" mode=""></image>
</view>
<view class="chong-list-right">
<view class="chong-title">
<span>王丽楠</span>
<image src="../../static/xinren.png" mode=""></image>
</view>
<view class="chong-bottom">
<view class="chong-bottom-ding">
<image src="../../static/orderDetail/dingwei.png" mode=""></image>
<span>0.8km</span>
</view>
<view class="chong-bottom-cheng">
<image class="therapist-bottom-img" src="../../static/dituzhaoren5.png">
<span>春城有约</span>
</view>
</view>
</view>
</view>
<view class="chong-list">
<view class="chong-list-left">
<radio value="" class="chong-list-radio"/>
<image src="../../static/jinggao.png" mode=""></image>
</view>
<view class="chong-list-right">
<view class="chong-title">
<span>王丽楠</span>
<image src="../../static/xinren.png" mode=""></image>
</view>
<view class="chong-bottom">
<view class="chong-bottom-ding">
<image src="../../static/orderDetail/dingwei.png" mode=""></image>
<span>0.8km</span>
</view>
<view class="chong-bottom-cheng">
<image class="therapist-bottom-img" src="../../static/dituzhaoren5.png">
<span>春城有约</span>
</view>
</view>
</view>
</view>
<view class="chong-list">
<view class="chong-list-left">
<radio value="" class="chong-list-radio"/>
<image src="../../static/jinggao.png" mode=""></image>
</view>
<view class="chong-list-right">
<view class="chong-title">
<span>王丽楠</span>
<image src="../../static/xinren.png" mode=""></image>
</view>
<view class="chong-bottom">
<view class="chong-bottom-ding">
<image src="../../static/orderDetail/dingwei.png" mode=""></image>
<span>0.8km</span>
</view>
<view class="chong-bottom-cheng">
<image class="therapist-bottom-img" src="../../static/dituzhaoren5.png">
<span>春城有约</span>
</view>
</view>
</view>
</view>
</view>
<view class="popup-mian-btn">
<span @click="closePopup(type)">
取消
</span>
<span>
确定
</span>
</view>
</view>
</view>
</uni-popup>
</view>
</view>
</template>
@ -183,7 +81,6 @@
data() {
return {
myId: '',
type:'center',
// v-model
dataList: [],
tabList: [],
@ -196,22 +93,13 @@
titleNmae:''
}
},
onLoad(e){
this.titleNmae=e.name
if(this.titleNmae=="服务套餐"){
this.typeData='104';
}else if(this.titleNmae=="项目次卡"){
this.typeData='105';
}else if(this.titleNmae=="服务疗程"){
this.typeData='106';
}
onLoad(){
this.myId = uni.getStorageSync('userId')
this.getData()
},
methods: {
input(res) {//
this.searchValue=res;
console.log('----input:', res)
},
searchBtn(){//
if(this.searchValue!=""){
@ -260,18 +148,7 @@
this.$refs.paging.complete(false);
})
},
change(e) {
console.log('当前模式:' + e.type + ',状态:' + e.show);
},
closePopup(type){//
this.type = type
this.$refs.popup.close(type);
},
toggle(type) {//
this.type = type
// open uni-popup type
this.$refs.popup.open(type)
},
backImg(){//
uni.reLaunch({
url:'/pages/my/index'
@ -282,211 +159,27 @@
},
itemClick(item) {
uni.navigateTo({
url:'/pages/my/serviceOderDrtail?id='+item.id+'&limit='+this.limit+'&page='+this.page
url:'/pages/my/serviceOderDrtail?id='+item.id+'&limit='+this.limit+'&page='+this.page+'&name='+'my'
})
}
}
}
</script>
<style scoped>
.chong-list:last-child{
border: 0px !important;
}
.chong-bottom-cheng image{
width: 22.22rpx;
height: 22.22rpx;
margin-right: 5px;
}
.chong-bottom-cheng span{
font-weight: 500;
font-size: 23rpx;
color: #222222;
}
.chong-bottom-ding image{
width: 18.75rpx;
height: 21.53rpx;
margin-right: 5px;
}
.chong-bottom-ding span{
font-weight: bold;
font-size: 25rpx;
color: #848485;
}
.chong-bottom-ding,.chong-bottom-cheng{
display: flex;
flex-direction: row;
align-items: center;
}
.chong-bottom{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
margin-top: 10px;
}
.chong-title image{
width: 50rpx;
height: 22.22rpx;
}
.chong-title span{
font-weight: 400;
font-size: 29rpx;
color: #333333;
margin-right: 5px;
}
.chong-title{
display: flex;
flex-direction: row;
align-items: center;
}
.chong-list-right{
width: 75%;
display: flex;
flex-direction: column;
}
.chong-list-left image{
width: 76rpx;
height: 76rpx;
}
/deep/uni-radio .uni-radio-input{
width: 29.86rpx;
height: 29.86rpx;
margin: -3px 0px 0px -5px;
background-color: rgba(4, 159, 137, 1) !important;
border-color: rgba(4, 159, 137, 1) !important;
}
.chong-list-radio{
margin-right: 5px;
width: 29.86rpx;
height: 29.86rpx;
}
.chong-list-left{
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.chong-list{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 10px 0px;
border-bottom: 1px solid #DCDCDC;
}
.chong{
width: 100%;
display: flex;
flex-direction: column;
}
.img-span{
display: flex;
justify-content: center;
align-items: center;
width: 40px;
height: 16px;
line-height: 16px;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-top-left-radius: 15rpx;
border-bottom-right-radius: 15rpx;
font-weight: bold;
font-size: 18rpx;
color: #FFFFFF;
position: absolute;
bottom: 0;
right: 0;
margin: 0 6px 6px 0px;
}
.popup-mian-view span:nth-child(1){
color: #666666;
}
.popup-mian-view span:nth-child(2){
color: #333;
font-weight: bold;
}
.popup-mian-view span{
font-size: 29rpx;
}
.popup-mian-view{
width: 100%;
height: 35px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #DCDCDC;
}
.popup-mian-textarea{
width: 100%;
display: flex;
flex-direction: column;
}
.popup-mian-btn span:nth-child(1){
background: linear-gradient(90deg, #FE912E, #FF9970);
}
.popup-mian-btn span:nth-child(2){
background: linear-gradient(90deg, #019C88, #28BA92, #35C495);
}
.popup-mian-btn span{
width: 247rpx;
height: 77rpx;
line-height: 77rpx;
text-align: center;
padding: 2px 5px;
font-weight: 400;
font-size: 32rpx;
color: #FFFEFE;
border-radius: 39rpx;
}
.popup-mian-btn{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
margin-top: 10px;
}
.popup-mian{
width: 88%;
display: flex;
flex-direction: column;
margin: 5px auto 0px auto;
}
.popup-head span:nth-child(2){
width: 50rpx;
height: 50rpx;
line-height: 19px;
text-align: center;
font-size: 24px;
color: #15AB8D;
border-radius: 50%;
border: 3px solid #15AB8D;
}
.popup-head span:nth-child(1){
font-weight: bold;
font-size: 32rpx;
color: #333333;
}
.popup-head{
width: 100%;
height: 99.38rpx;
background-color: rgba(21, 171, 141, 0.09);
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 0 15px;
}
.popup-content{
width: 613rpx;
padding-bottom: 10px;
background: #FFFFFF;
border-radius: 56rpx;
display: flex;
flex-direction: column;
font-size: 8px;
color: #FFFFFF;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-radius: 7px 0px 7px 0px;
position: absolute;
bottom: 0px;
right: 0;
margin-bottom: 5px;
margin-right: 5px;
}
.item-view-bottom-btn{
text-align: center;
@ -662,7 +355,7 @@
}
.search-btn{
text-align: center;
line-height: 60rpx;
line-height: 31px;
color: #fff;
position: absolute;
right: 0;

View File

@ -22,12 +22,13 @@
<view class="text-green" v-if="item.status ==1"><span>202312061140172215</span><span>待付款</span></view>
<view class="text-green" v-if="item.status ==2"><span>202312061140172215</span><span>待服务</span></view>
<view class="text-green" v-if="item.status ==3"><span>202312061140172215</span><span>待评价</span></view>
<view class="text-green" v-if="item.status ==9"><span>202312061140172215</span><span>待补单</span></view>
<view class="text-green" v-if="item.status ==4" style="color: #333333;">已取消</view>
<view class="text-green" v-if="item.status ==5"><span>202312061140172215</span><span>已完成</span></view>
<view class="text-green" v-if="item.status ==6"><span>202312061140172215</span><span>服务中</span></view>
<view class="text-green" v-if="item.status ==7"><span>202312061140172215</span><span>技师出发</span></view>
<view class="text-green" v-if="item.status ==8"><span>202312061140172215</span><span>技师到达</span></view>
<view class="text-green" v-if="item.status ==4" style="color: #333333;">已取消</view>
<view class="text-green" v-if="item.status ==9"><span>202312061140172215</span><span>待确认</span></view>
<view class="text-green" v-if="item.status ==10"><span>202312061140172215</span><span>待补单</span></view>
<!-- <view class="u-tips-color">{{item.createTime}}</view> -->
</view>
<view class="margin-top-sm" style="width: 100%;height: 1rpx;background: #f7f7f7;"></view>
@ -56,53 +57,107 @@
</view>
<view class="flex u-p-t-20 justify-between align-center" style="justify-content: flex-end;">
<view class="flex text-right">
<u-button
v-if="(item.status == 1 || item.status == 2 || item.status == 7 || item.status == 8) && yhqxSel != '否'"
:custom-style="customStyle" shape="circle" :plain="true"
class="btnsH"
@click="cancelOrder(item)">取消订单</u-button>
<u-button v-if="item.status != 4" :custom-style="customStyle1" shape="circle" :plain="true"
@click="goNav('/my/order/pay?ordersId='+item.ordersId)" class="btnsH">联系客服</u-button>
<u-button v-if="item.status != 4" :custom-style="customStyle1" shape="circle" :plain="true"
@click="goNav('/my/order/payModify?ordersId='+item.ordersId)" class="btnsH">修改订单</u-button>
<u-button v-if="item.status == 1" :custom-style="customStyle1" shape="circle" :plain="true"
@click="goNav('/my/order/pay?ordersId='+item.ordersId)" class="btns">去支付</u-button>
<u-button v-if="item.status == 2" :custom-style="customStyle1" shape="circle" :plain="true"
@click="goNav('/my/order/pay?ordersId='+item.ordersId)" class="btns">查看详情</u-button>
<!-- <u-button v-if="item.status == 6" :custom-style="customStyle" shape="circle" :plain="true"
@click="cancel(item)">订单完成</u-button> -->
<u-button v-if="item.status == 5" :custom-style="customStyle" shape="circle" class="btns" :plain="true" @click="goNav('/my/order/complain?id='+item.ordersId)" >
去投诉
</u-button>
<u-button v-if="item.status == 3" :custom-style="customStyle1" class="btns" shape="circle" :plain="true"
@click="toggle('center')">
提前结束
</u-button>
<u-button v-if="item.status == 3" :custom-style="customStyle1" class="btns" shape="circle" :plain="true"
@click="goNav('/my/order/feedback?artificerId='+item.artificerId+ '&ordersId='+item.ordersId)">
去评价
</u-button>
<!-- <u-button v-if="item.status == 4" :custom-style="customStyle" shape="circle" :plain="true"
@click="delOrder(item)">删除订单</u-button> -->
<view class="flex text-right" style="flex-direction: column;width: 100%;">
<view class="showBtn" :style="{'justify-content':item.status != 6?'flex-end':'space-between'}">
<view class="gengduo" @click.stop="gengBtn(index)" v-show="item.status ==6">更多</view>
<view class="showBtn-view">
<u-button v-if="item.status == 10" :custom-style="customStyle1" shape="circle" :plain="true"
@click="goNav('/my/order/payModifyDzhifu?ordersId='+item.ordersId,item)" class="btns">
立即预约
</u-button>
<u-button v-if="item.status == 3" :custom-style="customStyle1" class="btns" shape="circle" :plain="true"
@click="goNav('/my/order/feedback?artificerId='+item.artificerId+ '&ordersId='+item.ordersId)">
待评价
</u-button>
<u-button v-if="item.status == 9&&item.refusalContent" :custom-style="customStyle1" shape="circle" :plain="true"
@click="toggleQ('center',item)" class="btns">
拒单确认
</u-button>
<u-button v-if="item.status == 1" :custom-style="customStyle1" shape="circle" :plain="true"
@click="goNav('/my/order/payModifyDzhifu?ordersId='+item.ordersId,item)" class="btns">
去支付
</u-button>
<u-button
v-if="(item.status == 1 || item.status == 2 || item.status == 7 || item.status == 8) && yhqxSel != '否'"
:custom-style="customStyle" shape="circle" :plain="true"
class="btns"
@click="cancelOrder(item)">
取消订单
</u-button>
<u-button v-if="item.status != 4&&item.status != 1&&item.status != 10&&item.status != 3&&item.status != 9&&item.status != 5" :custom-style="customStyle1" shape="circle" :plain="true"
@click="goNav('/my/order/payModify?ordersId='+item.ordersId,item)" class="btns">
修改订单
</u-button>
<u-button v-if="item.status == 6" :custom-style="customStyle1" class="btns" shape="circle" :plain="true"
@click="cancel(item)">
充值
</u-button>
<u-button v-if="item.status == 6" :custom-style="customStyle1" class="btns" shape="circle" :plain="true"
@click="cancel(item)">
加钟
</u-button>
<u-button :custom-style="customStyle1" shape="circle" :plain="true"
@click="goNav('/my/order/pay?ordersId='+item.ordersId)" class="btnsH">
联系客服
</u-button>
<u-button v-if="item.status == 5" :custom-style="customStyle1" shape="circle" class="btns" :plain="true" @click="goNav('/my/order/complain?id='+item.ordersId)" >
去投诉
</u-button>
</view>
</view>
<view class="hideBtn" v-show="btnShow==index" style="justify-content: end;">
<u-button v-if="item.status == 6" :custom-style="customStyle1" class="btns" shape="circle" :plain="true"
@click="cancel(item)">
改价
</u-button>
<u-button v-if="item.status == 6" :custom-style="customStyle1" class="btns" shape="circle" :plain="true"
@click="toggle('center',item)">
提前结束
</u-button>
</view>
</view>
</view>
</view>
<view>
<!-- 普通弹窗 -->
<uni-popup ref="popup" background-color="#fff" @change="change">
<!-- 确认拒绝 -->
<uni-popup ref="popupQ" background-color="#fff">
<view class="popup-content">
<view class="popup-head">
<span>确认拒单</span>
<span @click="closePopupQ(type)">x</span>
</view>
<view class="popup-mian">
<view class="popup-mian-textarea">
{{qurenJd.refusalContent}}
</view>
<view class="popup-mian-btn">
<span @click="TuiPopup(type,'1')">
同意
</span>
<span @click="TuiPopup(type,'3')">
全额退款
</span>
</view>
</view>
</view>
</uni-popup>
</view>
<view>
<!-- 提前结束 -->
<uni-popup ref="popup" background-color="#fff">
<view class="popup-content">
<view class="popup-head">
<span>请输入提前结束的原因</span>
<span @click="closePopup(type)">x</span>
</view>
<view class="popup-mian">
<textarea placeholder="请输入提前结束服务原因" class="popup-mian-textarea" name="" id="" cols="30" rows="10"></textarea>
<textarea placeholder="请输入提前结束服务原因" @input="textareaInp" class="popup-mian-textarea" name="" id="" cols="30" rows="10"></textarea>
<view class="popup-mian-btn">
<span @click="closePopup(type)">
取消
</span>
<span>
<span @click="tiqian('center')">
确定
</span>
</view>
@ -119,7 +174,10 @@
import mescrollBody from "@/components/mescroll-uni/components/mescroll-body/mescroll-body.vue";
import meTabs from "@/components/mescroll-uni/me-tabs/me-tabs.vue";
import empty from '@/components/empty.vue'
//
// #ifdef APP-PLUS
import permision from "@/components/permission.js";
// #endif
export default {
mixins: [MescrollMixin], // 使mixin
components: {
@ -129,6 +187,9 @@
},
data() {
return {
tiqianData:[],
qurenJd:[],
btnShow:'',
type:'center',
goods: [], //
game: [],
@ -151,7 +212,7 @@
name: '待补单',
Aurl:'../../static/order_icon/order_icon4-4.png',
Surl:'../../static/order_icon/order_icon4.png',
status: '9'
status: '10'
},{
name: '技师出发',
Aurl:'../../static/order_icon/order_icon10-10.png',
@ -208,7 +269,9 @@
margin: "0 0 0 20rpx",
fontSize: '26rpx'
},
yhqxSel: '否'
yhqxSel: '否',
latitude: '43.86487',
longitude: '',
// customStyle: {
// color: '#1789FD',
// backgroundColor: '#1E1F31',
@ -217,11 +280,13 @@
// height: '54rpx',
// margin: "0 0 0 20rpx"
// }
earlyFinishReason:''
}
},
onLoad() {
this.userId = uni.getStorageSync('userId')
this.nickName = uni.getStorageSync('nickName')
this.nickName = uni.getStorageSync('nickName');
},
onShow() {
this.yhqxSel = this.$queue.getData("yhqxSel");
@ -244,17 +309,144 @@
}
},
methods: {
change(e) {
console.log('当前模式:' + e.type + ',状态:' + e.show);
goNav(url,item) {
this.$queue.setData('daibudan',item);
uni.navigateTo({
url:url
})
},
gengBtn(index){//
this.btnShow=index
},
closePopupQ(type){//
this.type = type
this.$refs.popupQ.close(type);
},
toggleQ(type,item) {//
this.qurenJd=item;
this.type = type
// open uni-popup type
this.$refs.popupQ.open(type)
},
TuiPopup(typeTxte,type){// 退.
this.type = typeTxte
let data = {
ordersId: this.qurenJd.ordersId,
isAuto: '0',
type: type
}
this.$Request.post('/app/artificer/cancelSupplementOrders', data).then(res => {
if (res.code == 0) {
uni.showToast({
title:'操作完成!'
})
this.$refs.popupQ.close(typeTxte);
}else{
uni.showToast({
icon:'error',
title:'操作失败!'
})
}
}).catch(() => {
//,
});
},
closePopup(type){//
this.type = type
this.$refs.popup.close(type);
},
toggle(type) {//
this.type = type
textareaInp(e){//
this.earlyFinishReason=e.detail.value;
console.log("earlyFinishReason",this.earlyFinishReason)
},
tiqian(type){//
var that=this;
that.type = type;
uni.getLocation({
type: 'wgs84',
success: function (resa) {
var longitude=resa.longitude;
var latitude=resa.latitude;
console.log('当前位置的经度:' + resa.longitude);
console.log('当前位置的纬度:' + resa.latitude);
let data = {
ordersId: that.tiqianData.ordersId,
accomplishLongitude:longitude,
accomplishLatitude:latitude,
earlyFinishReason: that.earlyFinishReason,
}
that.$Request.post('/app/artificer/accomplishOrders', data).then(res => {
if (res.code == 0) {
uni.showToast({
title:'操作完成!'
})
that.$refs.popup.close(type);
}else{
console.log('shibai' + longitude);
console.log('shibai' + latitude);
uni.showToast({
icon:'error',
title:'操作失败!'
})
}
}).catch(() => {
//,
});
},
fail: function(e) {
// #ifdef H5
uni.showToast({
title:'获取地址失败!'
})
// #endif
// #ifdef APP-PLUS
that.checkPermission();
// #endif
}
});
},
toggle(type,item) {//
this.tiqianData=item;
this.type = type;
// open uni-popup type
this.$refs.popup.open(type)
this.$refs.popup.open(type);
},
async checkPermission() {
let status = permision.isIOS ? await permision.requestIOS('location') : await permision.requestAndroid(
'android.permission.ACCESS_FINE_LOCATION');
if (status === null || status === 1) {
status = 1;
} else if (status === 2) {
uni.showModal({
content: "系统定位已关闭",
confirmText: "确定",
showCancel: false,
success: function(res) {}
})
} else if (status.code) {
uni.showModal({
content: status.message
})
} else {
uni.showModal({
title: '定位服务已关闭',
content: "您需要打开定位权限,否则我们将无法获得到您附近的项目服务,导致我们无法为您提供服务,请到>设置>隐私>定位服务>中开启【盛安到家】定位权限",
confirmText: "设置",
success: function(res) {
if (res.confirm) {
permision.gotoAppSetting();
}
}
})
}
return status;
},
//
getOrderList() {
@ -302,7 +494,6 @@
uni.showLoading({
title: '加载中...'
})
console.log("asdasd",index)
this.tabIndex = index
// this.goods = []; // ,
this.page = 1
@ -407,16 +598,13 @@
}
});
},
goNav(url) {
uni.navigateTo({
url
})
}
},
onReachBottom: function() {
this.page = this.page + 1;
this.getOrderList();
if (this.totalCount == this.orderList.length) {
console.log("asd",this.totalCount)
if (this.totalCount==undefined&&this.orderList!='') {
uni.showToast({
title: '已经到底了~',
icon: 'none'
@ -434,6 +622,32 @@
</script>
<style lang="scss" scoped>
/deep/.u-size-default{
margin-top: 5px !important;
}
.gengduo{
font-weight: 400;
font-size: 25rpx;
color: #7D7D7D;
}
.showBtn-view{
display: flex;
flex-direction: row;
align-items: center;
}
.showBtn{
justify-content: space-between;
}
.showBtn,.hideBtn{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
flex-wrap: wrap;
justify-content: space-between;
}
.popup-mian-btn span:nth-child(1){
background: linear-gradient(90deg, #FE912E, #FF9970);
}

View File

@ -52,7 +52,7 @@
</view>
</view>
<view class="oder-mian-qing">请TA上线</view>
<view class="oder-mian-qing" @click="shangxian">请TA上线</view>
<view class="oder-mian-guan" :class="[isFollow?'activeG':'activeQ']" @click="guanzhu(order)">
+ 关注
</view>
@ -343,6 +343,24 @@
});
},
methods: {
shangxian(){//TA线
var data={
userId: this.myId,
artificerId: this.artificerId
}
this.$Request.post("/app/message/insertUpMessage", data).then(res => {
if (res.code == 0) {
uni.showToast({
title: '提醒成功!'
})
}else{
uni.showToast({
icon:'error',
title: '提醒成功失败!'
})
}
});
},
dianMoney(e){//
this.money=e;
},

View File

@ -1,7 +1,7 @@
<template>
<view class="content">
<view class="content-head">
<view class="padding-top-sm flex align-center">
<view class="padding-top-sm flex align-center" style="padding-bottom: 9px;">
<view v-if="XCXIsSelect != ''" class="flex align-center justify-between margin-right-sm"
@tap="showCityList" style="line-height: 68rpx;">
<image src="../../static/liliao-1.png" class="dingwei-img"></image>
@ -14,15 +14,6 @@
<selectSwitchDitu @change="switch1Change" />
</view>
</view>
<!-- <view class="tabview1" v-if="XCXIsSelect != '否'">
<view class="tabview" v-if="tablist && tablist.length > 1">
<view v-for="(item, index) in tablist" :key="index" @tap="tanChange(index, item)"
:class="tabIndex == item.id ? 'tabItem_sel' : 'tabItem'">
<view>{{ item.value }}</view>
</view>
</view>
</view> -->
</view>
<view class="liebiao" v-show="current === 0">
<view v-if="orderList.length" class="flex text-center flex-wrap list-view">
@ -36,10 +27,10 @@
src="https://admin.sjajk.com/file/uploadPath/2023/02/16/9ae1b7e9fa931b5fc24cd8edecc10d9f.png"
style="width: 30rpx;height: 36rpx;position: absolute;z-index: 99;top: 40rpx;left: 110rpx;">
</image>
<!-- <image class="touxiang" src="../../static/cika.png" mode=""></image> -->
<view class="zpmore_view_left" v-if="item.isNewer==1" @click.stop="saveImgss(item.isNewer, 0)">
<!-- <view class="zpmore_view_left" v-if="item.technicianType==1" @click.stop="saveImgss(item.technicianType, 0)">
<image src="../../static/dituzhaoren1.png" mode=""></image>
</view>
</view> -->
<span class="img-span">{{item.technicianType=='3'?'新手':item.technicianType=='4'?'专家':'资深'}}</span>
</view>
<view class="list-right">
<view class="flex align-center" style="justify-content: start;">
@ -56,13 +47,10 @@
}}</view>
</view>
</view>
<view class="list-right-top-bottom">
{{item.technicianTypeName}}
</view>
</view>
<!-- <view class="kyy_view">可服务</view> -->
<!-- <view class="kfw_view">可预约</view>
<view class="byy_view">休息中</view> -->
</view>
<view class="item-view-jianjie">
{{item.technicianTypeName}}
</view>
<view class="therapist-mian">
<view class="therapist-mian-top">
@ -248,10 +236,10 @@
import commonConfig from 'common/config.js';
import * as webMap from 'utils/webMap.js';
import permision from "@/components/permission.js";
//
// #ifdef APP-PLUS
import permision from "@/components/permission.js";
// import permision from "@/components/permission.js";
// #endif
export default {
components: {
@ -354,18 +342,17 @@
massageTypeId: null,
currentMarkerIndex: -1,
showPopup: false,
dataIndex:''
}
},
onLoad(e) {
console.log(e.massageTypeId)
let that = this
that.massageTypeId = e.massageTypeId
//that.massageTypeId = e.massageTypeId;
// that.getLocation();//
// that.getLocation(true);//
that.getTypeList();
uni.getLocation({
type: 'wgs84',
geocode: true, //true
@ -423,6 +410,12 @@
that.city = uni.getStorageSync('city') ? uni.getStorageSync('city') : '请选择城市'
that.getTpCount();
that.getTpMy();
uni.getStorage({
key: 'taocanDd',
success: (res) => {
that.dataIndex = res.data;
}
});
that.token = uni.getStorageSync('token')
// if (uni.getStorageSync('token')) {
if (that.latitude && that.longitude) {
@ -468,6 +461,53 @@
//this.closeSocket();
},
methods: {
//
goOrder(e) {
if(this.dataIndex!='支付'&&this.dataIndex!='待支付'){
console.log('授权', uni.getStorageSync('sendMsg'))
if (uni.getStorageSync('sendMsg')) {
console.log('授权+1')
wx.requestSubscribeMessage({
tmplIds: this.arr,
success(re) {
console.log(JSON.stringify(re), 111111111111)
var datas = JSON.stringify(re);
if (datas.indexOf("accept") != -1) {
console.log(re)
}
},
fail: (res) => {
console.log(res)
}
})
}
if (this.token) {
uni.navigateTo({
url: '/pages/therapist/orderDetail?artificerId=' + e.artificerId + "&classifyId=" + this
.tabIndex
});
} else {
uni.navigateTo({
url: '/pages/public/login'
});
}
}else{
if(this.dataIndex=='待支付'){
this.$queue.setData('getJishi',e);
uni.reLaunch({
url:'/my/order/payModifyDzhifu'
})
}else{
this.$queue.setData('getJishi',e);
uni.reLaunch({
url:'/my/order/payModify'
})
}
}
},
switch1Change: function (e) {//
var num= Number(e)
if(e==false){
@ -882,7 +922,6 @@
},
//
goNav(url) {
console.log(url, '1111112333')
if (uni.getStorageSync('sendMsg')) {
console.log('授权+1')
wx.requestSubscribeMessage({
@ -936,37 +975,7 @@
url: '/pages/index/search/index?index=' + index
});
},
//
goOrder(e) {
console.log('授权', uni.getStorageSync('sendMsg'))
if (uni.getStorageSync('sendMsg')) {
console.log('授权+1')
wx.requestSubscribeMessage({
tmplIds: this.arr,
success(re) {
console.log(JSON.stringify(re), 111111111111)
var datas = JSON.stringify(re);
if (datas.indexOf("accept") != -1) {
console.log(re)
}
},
fail: (res) => {
console.log(res)
}
})
}
if (this.token) {
uni.navigateTo({
url: '/pages/therapist/orderDetail?artificerId=' + e.artificerId + "&classifyId=" + this
.tabIndex
});
} else {
uni.navigateTo({
url: '/pages/public/login'
});
}
},
//
getLocation(isHighAccuracy = false) {
console.log('获取地理位置,精度:', isHighAccuracy);
@ -1241,6 +1250,18 @@
</script>
<style lang="scss" scoped>
.item-view-jianjie{
font-weight: 400;
font-size: 22rpx;
color: #848484;
margin:5px 0px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2; /* 显示的行数,可以根据需要修改 */
overflow: hidden;
text-overflow: ellipsis;
text-align: left;
}
.dituList{
width: 85%;
height: 173px;
@ -1250,7 +1271,7 @@
}
.liebiao{
height: 100vh;
margin-top: 52px;
margin-top: 55px;
display: flex;
flex-direction: column;
}
@ -1259,10 +1280,11 @@
top: 0rpx;
z-index: 999;
width: 100%;
background-image: url('../../static/topimg.png');
// background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), #f7f7f7), url('../../static/background-img.png');
// background-position: center center;
// background-repeat: no-repeat;
// background-size: cover;
background-size: cover;
// overflow: auto;
}
.therapist-bottom-dingwei-text{
@ -1420,21 +1442,34 @@
width: 68.75rpx;
height: 29.86rpx;
}
.zpmore_view_left image{
.img-span{
padding: 1px 5px;
font-weight: 400;
font-size: 8px;
color: #FFFFFF;
background: linear-gradient(-90deg, #FF6F48, #FF9E69);
border-radius: 7px 0px 7px 0px;
position: absolute;
bottom: 0px;
right: 0px;
margin: 0px 5px -16px 0px;
width: 68.75rpx;
height: 29.86rpx;
right: 0;
margin-bottom: 5px;
margin-right: 5px;
}
// .zpmore_view_left image{
// position: absolute;
// bottom: 0px;
// right: 0px;
// margin: 0px 5px -16px 0px;
// width: 68.75rpx;
// height: 29.86rpx;
// }
.touxiang{
width: 202.08rpx;
height: 306.94rpx;
}
.touxiang-left-content{
width: 202.08rpx;
height: 306.94rpx;
height: auto;
border-radius: 10rpx;
position: relative;
}

BIN
static/activate2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
static/activate3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
static/topimg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -5,7 +5,7 @@
@click="chooseItem(item)">
<image :src="item.artificerImg" :style="'width:'+imgWidth+'px;'+'height:'+225+'px;'" mode=""></image>
<view class="item-name">{{item.artificerName}}</view>
<view class="item-descr">{{item.classifyName}}</view>
<view class="item-descr">{{item.content}}</view>
</view>
</scroll-view>
</view>
@ -96,15 +96,15 @@
.item-descr {
text-align: center;
display: table;
width: 100%;
width: 100px;
font-size: 24rpx;
line-height: 24rpx;
line-height: 15px;
white-space: pre-wrap;
color: #999999;
margin-top: 10px;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
-webkit-line-clamp: 2;
overflow: hidden;
}
</style>

View File

@ -264,16 +264,20 @@ export default {
this.$emit('blur', event);
},
onConfirm(e) {
console.log("onConfirm")
this.$emit('confirm', e.detail.value);
},
onClear(event) {
console.log("onClear")
this.$emit('input', '');
},
rightIconClick() {
console.log("rightIconClick")
this.$emit('right-icon-click');
this.$emit('click');
},
fieldClick() {
console.log("fieldClick")
this.$emit('click');
}
}

View File

@ -104,6 +104,7 @@ class Request {
// baseUrl: 'https://admin.sjajk.com/', // 请求的根域名//生产需替换
// baseUrl: 'http://120.46.52.165/', // 请求的根域名
baseUrl: 'http://192.168.2.222:8187/',
// baseUrl: 'http://192.168.2.27:8187/',
// 默认的请求头
header: {},
method: 'POST',