sadjv3_jishi/my/order/revenueDetails - 副本.vue

1885 lines
50 KiB
Vue
Raw Normal View History

2024-06-26 16:58:53 +08:00
<template>
<view class="content">
<view class="header"></view>
<view class="mian">
<view class="mian-top">
<view class="countDown" style="text-align: center;" v-if="order.status == 6">
<u-count-down :timestamp="endOfServiceTimer" separator-color="#20C675" color="#20C675"
font-size="74" separator-size="74" @change="onCountdownChange"></u-count-down>
</view>
<view class="mian-top-head">
<image v-if="order && order.ordersMassageList"
:src="(order.ordersMassageList[0].massageType || {}).massageImg"
class="mian-top-head-img"></image>
<view class="mian-top-head-right">
<view class="mian-title" v-if="order && order.ordersMassageList">
<view class="mian-title-view">{{(order.ordersMassageList[0].massageType || {}).title}}</view>
<view class="nav-btn" v-if="order.status ==1">待付款</view>
<view class="nav-btn" v-if="order.status ==2">待服务</view>
<view class="nav-btn" v-if="order.status ==5">待评价</view>
<view class="nav-btn" v-if="order.status ==3">已完成</view>
<view class="nav-btn" v-if="order.status ==6">服务中</view>
<view class="nav-btn" v-if="order.status ==7">已出发</view>
<view class="nav-btn" v-if="order.status ==8">已到达</view>
<view class="nav-btn" v-if="order.status ==4">已取消</view>
</view>
<view class="mian-time" v-if="order && order.ordersMassageList">
服务时长 {{(order.ordersMassageList[0].massageType || {}).duration}}分钟
x{{order.ordersMassageList[0].num}}
</view>
<view class="mian-money">
<view class="mian-money-title">项目价格</view>
<view class="mian-money-num">
<span class="fuhao"></span>
<span class="number">{{order.payMoney}}</span>
</view>
</view>
</view>
</view>
<view class="mian-top-foot" @tap="bindGps(order.latitude,order.longitude,order.address)">
<view class="mian-top-foot-view">
<view class="mian-top-foot-view-title">客户信息: </view>
<view class="mian-top-foot-view-img">
<span @tap.stop="copyAddress()" v-if="order.status !=1 && order.status !=5 && order.status !=3 && order.status !=4">
{{order.userName}}
{{order.phone ? order.phone.substring(0,3) + '****' + order.phone.substring(7,11) : ''}}
<u-icon name="file-text"></u-icon>
</span>
<span v-else>
{{order.userName}}
{{order.phone ? order.phone.substring(0,3) + '****' + order.phone.substring(7,11) : ''}}
</span>
<image src="../../static/index/dianhua.png" mode=""></image>
</view>
</view>
<view class="mian-top-foot-view" style="margin-top: 5px;">
<view class="mian-top-foot-view-title">服务地址: </view>
<view class="mian-top-foot-view-text" style="width: 70%;">
{{order.address}}
</view>
</view>
</view>
</view>
<view class="diandan-num"@tap="copy(order.ordersNo)">
订单编号: {{order.ordersNo}}<u-icon name="file-text"></u-icon>
</view>
<view class="mina-title">
<span class="mina-title-text">项目明细</span>
<span class="mina-title-bor"></span>
</view>
<view class="mian-view">
<view class="mian-view-list">
<span class="mian-view-list-title">服务项目</span>
<span class="mian-view-list-text" v-if="order && order.ordersMassageList">
{{(order.ordersMassageList[0].massageType || {}).title}}
</span>
</view>
<view class="mian-view-list">
<span class="mian-view-list-title">下单时间</span>
<span class="mian-view-list-text">{{order.createTime}}</span>
</view>
<view class="mian-view-list">
<span class="mian-view-list-title">预约时间</span>
<span class="mian-view-list-text">{{order.serveTime}}</span>
</view>
</view>
<view class="mian-view">
<view class="mian-view-list">
<span class="mian-view-list-title">优惠券金额</span>
<span class="mian-view-list-text">-{{order.couponMoney}}</span>
</view>
<view class="mian-view-list">
<span class="mian-view-list-title">项目金额</span>
<span class="mian-view-list-text"> {{order.massageMoney}}</span>
</view>
<!-- <view class="mian-view-list">
<span class="mian-view-list-title">提成比例</span>
<span class="mian-view-list-text">70.00%</span>
</view> -->
</view>
<view class="mian-view">
<view class="mian-view-list">
<span class="mian-view-list-title">是否加钟</span>
<span class="mian-view-list-text">{{order.addNum!=''?'是':'否'}}</span>
</view>
<view class="mian-view-list">
<span class="mian-view-list-title">加钟项目</span>
<span class="mian-view-list-text">{{order.jzName!=''?order.jzName:'无'}}</span>
</view>
<view class="mian-view-list">
<span class="mian-view-list-title">加钟数量</span>
<span class="mian-view-list-text">{{order.addNum}}</span>
</view>
<view class="mian-view-list">
<span class="mian-view-list-title">加钟金额</span>
<span class="mian-view-list-text">{{order.addMoney}}</span>
</view>
</view>
<view class="mian-view">
<view class="mian-view-list">
<span class="mian-view-list-title">是否改价</span>
<span class="mian-view-list-text">{{order.isSupplement!=''?'是':'否'}}</span>
</view>
<view class="mian-view-list">
<span class="mian-view-list-title">改价项目</span>
<span class="mian-view-list-text">{{order.gjName!=''?order.gjName:'无'}}</span>
</view>
<view class="mian-view-list">
<span class="mian-view-list-title">改价金额</span>
<span class="mian-view-list-text">{{order.gjPrice}}</span>
</view>
<view class="mian-view-list">
<span class="mian-view-list-title">支付差价</span>
<span class="mian-view-list-text">{{order.gjcePrice}}</span>
</view>
</view>
<view class="mian-content" style="margin-bottom: 10px;">
<view class="mian-content-list">
<span class="mian-content-list-title">是否提前结束</span>
<span class="mian-content-list-text">{{order.earlyFinishReason!=''?'是':'否'}}</span>
</view>
<view class="mian-content-textarea">
<span class="mian-content-list-title" style="margin: 10px 0px;">提前结束原因</span>
<textarea class="textarea-mian" v-model="order.earlyFinishReason" placeholder="请输入备注...." maxlength="100" name="" id=""></textarea>
</view>
<!-- <view class="yingde">
<view class="yingde-title">应得收益</view>
<view class="yingde-money">
<span class="fuhao-hei"></span>
<span class="num-hei">489</span>
</view>
</view> -->
</view>
<view class="mina-title">
<span class="mina-title-text">扣费明细</span>
<span class="mina-title-bor"></span>
</view>
<view class="mian-content" style="margin-bottom: 10px;">
<view class="mian-content-list">
<span class="mian-content-list-title">渠道扣费</span>
<span class="mian-content-list-text">-{{order.channelDeduction}}</span>
</view>
<view class="mian-content-list">
<span class="mian-content-list-title">储值扣费</span>
<span class="mian-content-list-text">-{{order.valueStorageDeduction}}</span>
</view>
<view class="mian-content-list">
<span class="mian-content-list-title">管理费扣费</span>
<span class="mian-content-list-text">-{{order.pingMoney}}</span>
</view>
<!-- <view class="mian-content-list">
<span class="mian-content-list-title">服务费扣费</span>
<span class="mian-content-list-text">4.54</span>
</view> -->
<view class="yingde" style="background: #FFF1DE;">
<view class="yingde-title">合计扣费</view>
<view class="yingde-money">
<span class="fuhao-hei"></span>
<span class="num-hei">-{{order.channelDeduction+order.valueStorageDeduction+order.pingMoney}}</span>
</view>
</view>
</view>
<view class="mina-title">
<span class="mina-title-text">车费明细</span>
<span class="mina-title-bor"></span>
</view>
<view class="mian-content" style="margin-bottom: 10px;">
<view class="mian-content-list" v-if="order.tripWay">
<view class="mian-content-list-title">出行方式</view>
<view v-if="order.tripWay == 1" class="mian-content-list-text">公交</view>
<view v-if="order.tripWay == 2" class="mian-content-list-text">出租</view>
<view v-if="order.tripWay == 3" class="mian-content-list-text">免费</view>
</view>
<view class="mian-content-list">
<span class="mian-content-list-title">全程距离</span>
<span class="mian-content-list-text">{{order.km}}km</span>
</view>
<view class="mian-content-list">
<span class="mian-content-list-title">车费收益</span>
<span class="mian-content-list-text"> {{order.taxiMoney}}</span>
</view>
<!-- <view class="mian-content-list">
<span class="mian-content-list-title">提现手续费</span>
<span class="mian-content-list-text">-{{order.pingTaxiMoney}}</span>
</view> -->
<view class="yingde" style="background: #EBEBEB;">
<view class="yingde-title">车费收益</view>
<view class="yingde-money">
<span class="fuhao-hei"></span>
<span class="num-hei">{{order.taxiMoney}}</span>
</view>
</view>
</view>
<view class="yiji">
<view class="yuji-title">预计收益</view>
<view class="yingde-money">
<span class="fuhao-heis"></span>
<span class="num-heis">{{order.sumArtificerMoney}}</span>
</view>
</view>
<view class="bg padding radius margin-top" v-if="order.status!='8'&&order.startImg">
<view class="" style="font-size: 30rpx;color: #000000;font-weight: bold;margin-bottom: 20rpx;">服务前照片
</view>
<view class="flex flex-wrap justify-between">
<view class="flex margin-bottom-sm"
style="width: 48%;height: 200rpx;margin-right: 5rpx;position: relative;"
v-for="(image,index) in order.startImg" :key="index"
@click="saveImg( order.startImg,index)">
<image :src="image" style="width: 100%;height: 100%;border-radius: 10upx;"
mode="aspectFill">
</image>
</view>
</view>
</view>
<view class="bg padding radius margin-top" v-if="order.status==8 && startImgSel != '否'">
<view class="" style="font-size: 30rpx;color: #000000;font-weight: bold;margin-bottom: 20rpx;">服务前照片1
</view>
<view class="flex flex-wrap">
<view v-if="startImgs.length">
<view class="flex margin-right-sm flex-wrap">
<view class="flex"
style="width: 200rpx;height: 200rpx;margin-right: 5rpx;position: relative;"
v-for="(image,index) in startImgs" :key="index">
<image :src="pictureEcho[0]" style="width: 100%;height: 100%;"></image>
<view style="z-index: 0;position: absolute;top: -15rpx;right: -15rpx;"
@click="removeImg(index,1)">
<u-icon name="close-circle-fill" color="#2979ff" size="50rpx"></u-icon>
</view>
</view>
</view>
</view>
<view class="flex align-center justify-center padding-tb "
style="background: #f5f5f5;width: 200rpx;height: 200rpx;">
<view class="text-center" @click="addImage(1)">
<image src="../static/photo.png" style="width:60upx;height: 50upx;"></image>
<view class="text-sm">上传照片</view>
</view>
</view>
</view>
</view>
<view class="footers">
<view @click="cxOrder(order)" class="footers-btn footers-true" v-if="order.status == 2">
现在出发
</view>
<view @click="cxOrder(order)" class="footers-btn footers-bor" v-if="order.status == 7">
我已到达
</view>
<view @click="fuwuOrder(order)" class="footers-btn footers-true"v-if="order.status == 8">
开始服务
</view>
<view @click="toggle('bottom',order)" class="footers-btn footers-bor" v-if="order.status == 6">
服务完成
</view>
<view class="footers-btn footers-true" v-if="order.status == 9">
确认接单
</view>
<view class="footers-btn footers-bor" v-if="order.status == 9">
拒单申请
</view>
<view class="footers-btn footers-bor" @click="goChat">联系客服</view>
<!-- <view class="dian" @click="toggle('bottom',order)" v-if="order.status == 6">...</view> -->
</view>
</view>
<u-skeleton :loading="loading" :animation="true" bgColor="#FFF"></u-skeleton>
<!-- #ifndef H5 -->
<image src="../../static/images/index/jinji.png" class="bj_view" @tap="goBaoJing"></image>
<!-- #endif -->
<!-- 支付方式 -->
<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;">
<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='selectWay(item)'>
<label class="tui-radio">
<radio color="#1777FF" :checked="openWay === item.id ? true : false" />
</label>
</radio-group>
</view>
</view>
</view>
<view class="pay_btn" @click="pay()">确认支付</view>
</view>
</u-popup>
<view>
<!-- 普通弹窗 -->
<uni-popup ref="popup" type="bottom" background-color="#fff">
<view class="popup-content">
<view class="popup-head">
<span></span>
<span @click="closePopup(type)">x</span>
</view>
<view class="popup-mian">
<view class="popup-view">
<view class="fuwu">
<view class="popup-title">服务承诺</view>
<view class="fuwu-check">
<uni-data-checkbox @change="change" selectedColor="#049F89" class="fuwu-checkbox" multiple v-model="checkbox1" :localdata="hobby"></uni-data-checkbox>
</view>
</view>
<view class="guke">
<view class="popup-title">顾客评价</view>
<view class="guke-list">
<view class="guke-btn huiBtn"
:class="{ lanBtn: selected.includes(item) }"
@click="gukeBtn(item)"
v-for="(item,index) in fuwuBtn"
:key="index">
{{item.title}}
</view>
</view>
</view>
<view class="beizhu">
<view class="popup-title">特殊情况备注</view>
<textarea @input="textareaData" class="beizhu-textarea" placeholder="本次服务中出现的特殊情况,请在此输入" name="" id="" cols="30" rows="10"></textarea>
</view>
</view>
<view class="popup-mian-btn">
<span @click="closePopup(type)">
取消
</span>
<span @click="cancel(order)">
确定
</span>
</view>
</view>
</view>
</uni-popup>
</view>
</view>
</template>
<script>
import * as websocketUtils from 'utils/websocketUtils.js';
import {getXZX,post,} from "@/common/httpRequest.js";
export default {
// components: {
// CountDown,
// },
data(){
return{
//老 订单详情
goods: {},
startImgs: [],
startImg: '',
endImgs: [],
endImg: '',
latitude: '',
longitude: '',
loading: true,
customStyle: {
// backgroundColor: '#e5e5e5',
// color: '#FFFFFF',
// #ifdef MP-WEIXIN
width: "330upx",
// #endif
// #ifndef MP-WEIXIN
width: '111px',
// #endif
margin: '0 20upx',
},
customStyle2: {
backgroundColor: '#096f4b',
color: '#FFFFFF',
// #ifdef MP-WEIXIN
width: "330upx",
// #endif
// #ifndef MP-WEIXIN
width: '111px',
// #endif
margin: '0 20upx',
},
id: '',
order: {
user: {},
game: {}
},
isTrue: 0,
sumMoney: 0,
phone: '',
isVip: false,
birthDate: '',
age: '',
showpay: false,
openLists: [],
openWay: 1,
closeable: true,
startImgSel: '否',
pictureEcho: [],
formatEndTime: "",
endOfServiceTimer: null,
formatTimeStamp: null,
innerAudioContext: null,
orderIdSend: null,
homeMaterialPackageList: [],
currentPage: null,
pageSize: null,
//新订单详情
selected:[],
selectedString:'',
gukeData:[
{text:'颈椎问题'},
{text:'肩周炎'},
{text:'肩周炎'},
{text:'肩周炎'},
{text:'颈椎问题'},
{text:'肩周炎'},
{text:'肩周炎'},
{text:'肩周炎'},
],
headImg: [],
type:'bottom',
checkbox1: [0],
hobby: [{
text: '服务承诺1',
value: '0'
}, {
text: '服务承诺2',
value: '1'
}, {
text: '服务承诺3',
value: '2'
}],
fuwuBtn:[],
textareaTxt:''
}
},
watch: {
formatTimeStamp(newValue, oldValue) {
console.log(newValue);
},
},
onLoad(e) {
setInterval(() => {
this.getOrder();
}, 120000)
this.startImgSel = this.$queue.getData('startImgSel');
uni.showLoading({
title: '加载中......'
})
let that = this;
uni.getLocation({
type: 'wgs84',
success: function(res) {
console.log('当前位置的经度:' + res.longitude);
console.log('当前位置的纬度:' + res.latitude);
that.$queue.setData('longitude', res.longitude);
that.$queue.setData('latitude', res.latitude);
that.latitude = res.latitude
that.longitude = res.longitude
}
});
// setTimeout(() => {
// // this.loading = false;
// }, 2000)
this.isTrue = e.isTrue
if (this.isTrue) {
uni.setNavigationBarTitle({
title: '订单详情'
})
}
this.ordersId = e.ordersId
this.orderIdSend = e.ordersId;
// this.getOrder()
},
onShow() {
let that = this;
this.getOrder()
this.token = uni.getStorageSync('token')
if (uni.getStorageSync('token')) {
this.getIsVip()
}
// #ifdef APP
this.openLists = [{
image: '../../static/images/icon_weixin.png',
text: '微信',
id: 2
}, {
image: '../../static/images/lingqian.png',
text: '零钱支付',
id: 1
}, {
image: '../../static/images/zhifubao.png',
text: '支付宝支付',
id: 3
}],
this.openWay = 1;
// #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 = 1;
// #endif
// #ifdef H5
this.openLists = [{
image: '../../static/images/lingqian.png',
text: '零钱支付',
id: 1
}, {
image: '../../static/images/zhifubao.png',
text: '支付宝支付',
id: 3
}],
this.openWay = 1;
// #endif
},
onPullDownRefresh() {
this.getOrder();
},
destroyed() {
if (this.innerAudioContext) {
try {
this.innerAudioContext.pause();
this.innerAudioContext.destroy();
this.innerAudioContext = null;
} catch (e) {
}
}
},
methods:{
gukeBtn(item){
var index = this.selected.indexOf(item);
if (index === -1) {
this.selected.push(item);
} else {
this.selected.splice(index, 1);
}
var data=[];
for(var i=0;i<this.selected.length;i++){
data.push(this.selected[i].title)
}
this.selectedString=data.join(",")
},
textareaData(e){
this.textareaTxt=e.detail.value
},
change(e) {
for(var i=0;i<this.checkbox1.length;i++){
this.checkbox1[i]=this.hobby[i].text
}
},
toggle(type,order) {// 弹出框
this.type = type
// open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
this.$refs.popup.open(type);
this.$Request.getT('/app/artificer/getPingjiaTagList').then(res => {
if (res.code == 0) {
this.fuwuBtn=res.data;
} else {
this.$queue.showToast(res.msg);
}
});
},
fuwuOrder(e) {//开始服务
let startImg = '';
if (this.startImgSel === '是') {
if (this.startImgs.length == 0) {
this.$queue.showToast('请上传开始服务图片!');
return;
} else {
startImg = this.startImgs.toString();
}
}
let that = this
uni.showModal({
title: '提示',
content: '确认开始服务吗?',
success: function(res) {
if (res.confirm) {
let data = {
ordersId: e.ordersId,
startLongitude: that.longitude,
startLatitude: that.latitude,
startImg: startImg,
}
that.$queue.showLoading('提交中...')
that.$Request.post('/app/artificer/startOrders', data).then(res => {
uni.hideLoading();
if (res.code == 0) {
that.getOrder()
websocketUtils.uploadAudioStart(); //开启音频录制
} else {
that.$queue.showToast(res.msg);
}
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
// 完成订单
cancel(e) {
let that = this
let artificerId = uni.getStorageSync("artificerId");
let jumpRootStatus = false;
uni.showModal({
title: '提示',
content: '如果服务未完成点击完成订单会遭到平台违规处理,请确认服务是否完毕?',
success: async function(res) {
if (res.confirm) {
let data = {
ordersId: e.ordersId,
accomplishLongitude: that.longitude,
accomplishLatitude: that.latitude,
jsFwcn:that.checkbox1,
jsPjtag:that.selectedString,
jsTsbz:that.textareaTxt
}
that.$queue.showLoading('提交中...')
let resA = await post('/app/artificer/accomplishOrders', data);
uni.hideLoading();
try {
if (resA.code == 0) {
websocketUtils.uploadAudioEnd(); //关闭音频上传
} else {
that.$queue.showToast(resA.msg);
}
} catch (e) {
//TODO handle the exception
}
// let resB = await getXZX("/app/material/selectMaterialArtificer?artificerId=" +
// artificerId + "&page=" +
// (this
// .currentPage ? this
// .currentPage : '') + "&limit=" + (this.pageSize ? this.pageSize : ''));
// console.log(resB);
// if (resB && resB.data && resB.code == 0) {
// that.homeMaterialPackageList = resB?.data;
// }
// let materialPackageCountFlag = that.homeMaterialPackageList.some((item) => item
// .residue <= item
// .materialMinimum);
// if (materialPackageCountFlag) {
// jumpRootStatus = false;
// let resC = await post('/app/artificer/offline', );
// if (resC && resC.code == 0) {
// that.$queue.showToast("当前剩余物料包数量不足,已强制离线");
// } else {
// that.$queue.showToast(resC.msg);
// }
// }
// setTimeout(() => {
// uni.navigateBack();
// }, 1600)
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
//老订单 方法
onCountdownChange(e) {
console.log(e, "23123ool");
if (e == 183) {
if (this.innerAudioContext) {
try {
this.innerAudioContext.pause();
this.innerAudioContext.destroy();
this.innerAudioContext = null;
} catch (e) {
}
}
this.innerAudioContext = uni.createInnerAudioContext();
this.innerAudioContext.autoplay = true;
this.innerAudioContext.src = "../../static/endServerTimer.mp3";
this.innerAudioContext.onPlay(() => {
console.log('开始播放');
});
this.innerAudioContext.onError((res) => {
console.log(res.errMsg);
console.log(res.errCode);
});
}
},
// 触发uni倒计时组件服务时间3分钟时播放提示音
timeFormat(param) {
return param < 10 ? '0' + param : param;
},
goBaoJing() {
uni.navigateTo({
url: '/pages/index/jinji'
});
},
goChat() {
let kefu = this.$queue.getData('kefu'); // 用户端联系方式 1 手机号 2企业微信
let kefuPhone = this.$queue.getData('kefuPhone');
if (uni.getStorageSync('token')) {
if (kefu == 1) {
uni.makePhoneCall({
phoneNumber: kefuPhone //仅为示例
});
} else {
// #ifdef MP-WEIXIN
let that = this
try {
wx.openCustomerServiceChat({
extInfo: {
url: that.$queue.getData('kefuUrl')
},
corpId: that.$queue.getData('kefuAppId'),
success(res) {},
fail(res) {
console.error(res)
}
})
} catch (error) {
console.error("catchcatch" + error)
uni.showToast({
title: '请更新至微信最新版本'
});
}
// #endif
// #ifndef MP-WEIXIN
let url = this.$queue.getData('kefuUrl');
if (url.indexOf('/pages/') !== -1 || url.indexOf('/my/') !== -1) {
uni.navigateTo({
url
});
} else {
//#ifndef H5
uni.navigateTo({
url: '/pages/index/webView?url=' + url
});
//#endif
//#ifdef H5
window.location.href = url;
//#endif
}
// #endif
}
} else {
uni.showModal({
title: '提示',
content: '您还未登录,请先登录',
success: function(res) {
if (res.confirm) {
console.log('用户点击确定');
uni.navigateTo({
url: '/pages/public/login'
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
})
}
},
copy(num) {
uni.setClipboardData({
data: num,
success: r => {
this.$queue.showToast('复制成功');
}
});
},
//支付选择
selectWay: function(item) {
this.openWay = item.id;
},
//换算年龄
getAge(e) {
console.log('出生日期:' + e)
this.birthDate = e
//创建系统日期
var today = new Date();
//把出生日期转换成日期
this.birthDate = new Date(this.birthDate);
//分别获取到年份后相减
this.age = today.getFullYear() - this.birthDate.getFullYear();
// console.log(this.age+'当前年龄')
},
// 修改订单地址
undateAdd(order) {
if (order.state == 0) {
uni.navigateTo({
url: '../address/address?order=' + order.ordersId + '&id=' + 3
})
}
},
copyAddress() {
uni.setClipboardData({
data: this.order.userName + '\n' + this.order.phone + '\n' + this.order.address,
success: r => {
this.$queue.showToast('复制成功');
}
});
},
// 一键导航
bindGps(latitude, longitude, name, detailsadd) {
console.log(latitude, longitude, name, detailsadd)
uni.openLocation({
latitude: latitude - 0, //要去的纬度-地址
longitude: longitude - 0, //要去的经度-地址
name: name, //地址名称
address: detailsadd, //详细地址名称
success: function() {
console.log('导航成功');
},
fail: function(error) {
console.log(error)
}
});
},
// 拨打电话
bindphone(phone) {
let that = this
uni.showModal({
title: '提示',
content: '是否拨打电话',
success: function(res) {
if (res.confirm) {
console.log('用户点击确定', phone);
uni.makePhoneCall({
phoneNumber: phone //仅为示例
});
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
goNav(e) {
uni.navigateTo({
url: e
})
},
ysPhone(phoneA, phoneB) {
this.$Request.getT('/app/user/insertVirtualPhone?phoneA=' + phoneA + '&phoneB=' + phoneB).then(res => {
if (res.code == 0) {
this.order.phone = res.data;
}
});
},
getOrder() {
let data = {
ordersId: this.ordersId
}
this.$Request.get('/app/artificer/selectOrdersDetails', data).then(res => {
if (res.code == 0) {
this.goods = [];
this.loading = false
uni.hideLoading()
this.order = res.data
this.formatEndTime = res.data.endTime;
if (this.order.artificerTaxiMoney && this.order.sumArtificerMoney) {
this.sumMoney = parseFloat(parseFloat(this.order.sumArtificerMoney) - parseFloat(this
.order.artificerTaxiMoney)).toFixed(2);
} else {
this.sumMoney = this.order.sumArtificerMoney;
}
if (this.order.startImg) {
this.order.startImg = this.order.startImg.split(',')
}
if (this.order.endServiceImg) {
this.order.endServiceImg = this.order.endServiceImg.split(',')
}
let aliphone = this.$queue.getData('aliphone');
if (aliphone === '是' && this.order.artificer) {
this.ysPhone(this.order.phone, this.order.artificer.phone);
}
if (res.data.status == 6 && res.data.endTime) {
let afterTimeStamp = new Date(res.data.endTime).getTime() / 1000;
let currentTimeStamp = new Date().getTime() / 1000;
let formatTimeStamp = Math.floor(afterTimeStamp - currentTimeStamp);
console.log("eeee",currentTimeStamp);
this.endOfServiceTimer = formatTimeStamp;
}
this.goods = res.data;
// if (this.$refs.countDownEl) this.$refs.countDownEl.update();
uni.stopPullDownRefresh();
}
})
},
delOrder(e) {
let that = this
uni.showModal({
title: '提示',
content: '确定删除订单吗?',
success: function(res) {
if (res.confirm) {
let data = {
ordersId: e.ordersId,
}
that.$queue.showLoading('删除中...')
that.$Request.post('/app/artificer/removeOrders', data).then(res => {
uni.hideLoading();
if (res.code == 0) {
uni.showToast({
name: "删除成功"
})
uni.navigateBack()
} else {
that.$queue.showToast(res.msg);
}
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
getIsVip() {
this.$Request.get("/app/UserVip/isUserVip").then(res => {
if (res.code == 0) {
this.isVip = res.data
uni.setStorageSync('isVIP', res.data)
}
});
},
openpay() {
this.showpay = true
},
// 支付订单
pay() {
let that = this
if (that.openWay == 1) { //零钱支付
uni.showModal({
title: '付款提示',
content: '确认支付' + that.order.payMoney + '元吗?',
success: function(re) {
if (re.confirm) {
console.log('用户点击确定');
that.$queue.showLoading('支付中...')
that.$Request.post("/app/artificer/payOrders", {
ordersId: that.order.ordersId,
}).then(res => {
uni.hideLoading();
if (res.code == 0) {
uni.showToast({
title: '支付成功'
})
that.getOrder()
} else {
uni.showToast({
title: res.msg,
icon: 'none'
})
}
});
} else if (re.cancel) {
console.log('用户点击取消');
}
}
})
} else if (that.openWay == 2) { //微信支付
// #ifdef MP-WEIXIN
let data = {
orderId: that.order.ordersId,
// type: 3
}
that.$Request.post('/app/wxPay/wxPayMpOrder', data).then(ret => {
console.log(ret)
if (ret.code == 0) {
this.showpay = false
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.getOrder()
// this.$queue.showToast('支付成功');
// uni.switchTab({
// url: '/pages/my/index'
// })
},
fail: function(err) {
// this.$queue.showToast('支付失败');
uni.showToast({
title: '支付失败',
icon: 'nones'
});
that.getOrder()
}
});
}
});
// #endif
// #ifdef H5
let data = {
orderId: that.order.ordersId,
// type: 2
}
that.$Request.post('/app/wxPay/wxPayJsApiOrder', data).then(rea => {
that.showpay = false
that.callPay(rea);
});
// #endif
// #ifdef APP
let data = {
orderId: that.order.ordersId,
// type: 1
}
that.$Request.post('/app/wxPay/payAppOrder', 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.order.ordersId,
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()
});
// #endif
// #ifdef APP-PLUS
let data = {
ordersId: that.order.ordersId,
type: 1
}
that.$Request.post('/app/aliPay/payOrder', data).then(
rea => {
that.showpay = false
that.setPayment('alipay', rea.data);
});
// #endif
}
},
callPay: function(response) {
if (typeof WeixinJSBridge === "undefined") {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady(response), false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady(response));
document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady(response));
}
} else {
this.onBridgeReady(response);
}
},
onBridgeReady: function(response) {
let that = this;
if (!response.package) {
return;
}
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": response.appid, //公众号名称,由商户传入
"timeStamp": response.timestamp, //时间戳自1970年以来的秒数
"nonceStr": response.noncestr, //随机串
"package": response.package,
"signType": response.signType, //微信签名方式:
"paySign": response.sign //微信签名
},
function(res) {
if (res.err_msg === "get_brand_wcpay_request:ok") {
// 使用以上方式判断前端返回,微信团队郑重提示:
//res.err_msg将在用户支付成功后返回ok但并不保证它绝对可靠。
uni.hideLoading();
uni.showToast({
title: '支付成功',
icon: 'none'
})
that.getOrder()
} else {
uni.hideLoading();
}
WeixinJSBridge.log(response.err_msg);
}
);
},
isCheckPay(code, name, order) {
if (code == 0) {
this.setPayment(name, order);
} else {
uni.hideLoading();
uni.showToast({
title: '支付信息有误'
});
}
},
setPayment(name, order) {
let that = this
uni.requestPayment({
provider: name,
orderInfo: order, //微信、支付宝订单数据
success: function(res) {
uni.hideLoading();
uni.showToast({
title: '支付成功',
icon: 'none'
})
that.getOrder()
},
fail: function(err) {
uni.hideLoading();
},
complete() {
uni.hideLoading();
}
});
},
cxOrder(e) {
let contentName = '确认已经出发了吗?';
if (e.status == 7) {
contentName = '确认到达服务地点准备开始服务了吗?';
}
let that = this
uni.showModal({
title: '提示',
content: contentName,
success: function(res) {
if (res.confirm) {
let data = {
ordersId: e.ordersId
}
that.$queue.showLoading('提交中...')
that.$Request.post('/app/artificer/artificerStartOrEndTime', data).then(res => {
uni.hideLoading();
if (res.code == 0) {
that.getOrder()
} else {
that.$queue.showToast(res.msg);
}
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
// 取消订单
cancelOrder(e) {
let that = this
uni.showModal({
title: '提示',
content: '确认取消订单吗?取消订单将会被扣除信用分!',
success: function(res) {
if (res.confirm) {
let data = {
ordersId: e.ordersId
}
that.$queue.showLoading('提交中...')
that.$Request.post('/app/artificer/deleteOrders', data).then(res => {
uni.hideLoading();
if (res.code == 0) {
that.getOrder()
} else {
that.$queue.showToast(res.msg);
}
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
// 查看图片
saveImg(imgs, index) {
if (this.LBSelect) {
if (index == this.LBIndex - 1) {
return;
}
}
// console.log(imgs)
let that = this;
let imgArr = imgs
// imgArr.push(imgs);
// //预览图片
uni.previewImage({
urls: imgArr,
current: imgArr[index],
});
},
removeImg(index, state) {
if (state == 1) {
this.startImgs.splice(index, 1)
} else if (state == 2) {
this.endImgs.splice(index, 1)
}
},
// 图片上传
addImage(e) {
console.log(11)
let that = this;
uni.chooseImage({
count: 6,
sourceType: ['camera'],
success: res => {
// 用于拍照后回显
let urlName = "";
if (e == 1) {
urlName = websocketUtils.getBaseUrl() + '/alioss/uploadWatermark';
}
console.log(urlName);
if (res && res.tempFilePaths.length > 0) that.pictureEcho.push(res.tempFilePaths[0]);
for (let i = 0; i < res.tempFilePaths.length; i++) {
that.$queue.showLoading("上传中...");
uni.uploadFile({ // 上传接口
// url: websocketUtils.uploadFileUrl(), //真实的接口地址
url: urlName, //真实的接口地址
filePath: res.tempFilePaths[i],
name: 'file',
success: (uploadFileRes) => {
if (e == 1) {
console.log(JSON.parse(uploadFileRes.data).data)
that.startImgs.push(JSON.parse(uploadFileRes.data).data)
} else if (e == 2) {
that.endImgs.push(JSON.parse(uploadFileRes.data).data)
}
uni.hideLoading();
},
fail(err) {
console.log(err);
}
});
}
}
})
},
// 获取APP端当前物料包剩余数量及最小消耗数量判断如果剩余数量少于最小消耗数量时
getHomeMaterialPackageList() {
let artificerId = uni.getStorageSync("artificerId");
let that = this;
getXZX("/app/material/selectMaterialArtificer?artificerId=" + artificerId + "&page=" +
(this
.currentPage ? this
.currentPage : '') + "&limit=" + (this.pageSize ? this.pageSize : '')).then(async (res) => {
if (res && res.data && res.code === 0) {
that.homeMaterialPackageList = res?.data;
}
})
},
goMsg() {
let data = {
userId: uni.getStorageSync('userId'),
focusedUserId: this.order.user.userId
}
this.$Request.postJson('/app/chat/insertChatConversation ', data).then(res => {
if (res.code == 0) {
let id = this.order.user.userId == res.data.userId ? res.data.focusedUserId : this.order
.user.userId
uni.navigateTo({
url: '/pages/msg/im?chatConversationId=' + res.data.chatConversationId +
'&byUserId=' + id
})
}
})
},
//新订单 方法
closePopup(type){// 关闭弹出框
this.type = type
this.$refs.popup.close(type);
},
}
}
</script>
<style scoped>
.bj_view {
width: 100rpx;
height: 100rpx;
border-radius: 100rpx;
position: fixed;
right: 30rpx;
bottom: 180rpx;
}
.beizhu-textarea{
width: 100%;
height: 199rpx;
background-color: rgba(226, 226, 226, 0.3);
border-radius: 14rpx;
padding: 10px;
}
.guke-list{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
flex-wrap: wrap;
box-sizing: border-box;
justify-content: space-between;
}
.huiBtn{
background: #E2E2E2;
color: #333333;
}
.lanBtn{
background-color: #049F89;
color: #fff;
}
.guke-btn{
width: 23%;
height: 55rpx;
margin-left: 5px;
text-align: center;
line-height: 55rpx;
font-weight: bold;
font-size: 25rpx;
border-radius: 14rpx;
margin-bottom: 10px;
}
/deep/.uni-data-checklist .checklist-group .checklist-box .checkbox__inner .checkbox__inner-icon{
top: 0px;
left: 5px;
height: 13px;
width: 8px;
}
/deep/.uni-data-checklist
.checklist-group
.checklist-box
.checklist-content
.checklist-text{
font-size: 28rpx;
}
/deep/.uni-data-checklist .checklist-group .checklist-box .checkbox__inner{
width: 44.44rpx;
height: 44.44rpx;
border-radius: 50%;
}
/deep/.uni-data-checklist{
display: flex;
flex-direction: column;
}
/deep/.uni-data-checklist /deep/.checklist-group{
flex-direction: column;
}
.popup-title{
font-weight: bold;
font-size: 29rpx;
color: #333333;
margin-bottom: 10px;
}
.fuwu,.guke,.beizhu{
width: 100%;
display: flex;
margin-top: 20px;
flex-direction: column;
}
.popup-view{
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: 100%;
height: 510px;
background: #FFFFFF;
border-top-left-radius: 56rpx;
border-top-right-radius: 56rpx;
display: flex;
flex-direction: column;
}
.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;
}
.dian{
width: 33px;
height: 33px;
line-height: 16px;
border-radius: 50%;
border: 3px solid #029D88;
display: flex;
justify-content: center;
font-size: 24px;
font-weight: bold;
color: #029D88;
}
.footers-bor{
border: 3px solid #029D88;
background-color: #fff;
color: #029D88;
}
.footers-true{
background: #029D88;
color: #fff;
}
.footers-btn{
width: 204rpx;
height: 69rpx;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
border-radius: 35rpx;
font-weight: 400;
font-size: 29rpx;
}
.footers{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
margin-top: 30px;
}
.margin-top-view{
width: 189rpx;
height: 189rpx;
background: #EBEBEB;
border-radius: 21rpx;
}
.item_view {
margin-top: 30rpx;
}
.item_view input {
margin-top: 20rpx;
height: 40rpx;
font-size: 24rpx;
font-family: PingFang SC Regular, PingFang SC Regular-Regular;
font-weight: 400;
color: #333333;
}
.xian {
width: 100%;
border-bottom: 1rpx solid #f7f7f7;
margin-top: 10rpx;
}
.item_title {
font-weight: 400;
font-size: 22rpx;
color: #666666;
font-family: PingFang SC Heavy, PingFang SC Heavy-Heavy;
}
.fuhao-heis{
color: #fff;
font-size:25rpx;
}
.num-heis{
color: #fff;
font-size:34.72rpx;
font-weight: bold;
}
.yingde-money{
display: flex;
flex-direction: row;
align-items: center;
}
.yuji-title{
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
}
.yiji{
width: 100%;
height: 72rpx;
background: linear-gradient(-90deg, #2EC5AC, #08A28A);
border-radius: 21rpx;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 0 5px;
height: 72rpx;
margin-top: 10px;
}
.fuhao-hei{
font-size: 25rpx;
color: #333333;
}
.num-hei{
font-size:31.25rpx;
color: #333333;
}
.yingde-money{
display: flex;
flex-direction: row;
align-items: center;
}
.yingde-title{
font-size: 25rpx;
color: #333333;
}
.yingde{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 0 5px;
height: 73rpx;
background: #DCF4EF;
border-bottom-left-radius: 24rpx;
border-bottom-right-radius: 24rpx;
}
.mian-content-textarea{
width: 100%;
display: flex;
flex-direction: column;
height: 105px;
border-bottom: 1px solid #e5e5e5;
padding: 0px 5px;
margin-bottom: 10px;
}
.mian-content-list-title{
font-size: 22rpx;
color: #333333;
}
.mian-content-list-title{
font-size: 22rpx;
color: #555555;
}
.mian-content{
width: 100%;
display: flex;
flex-direction: column;
background: #fff;
border-radius: 24rpx;
padding: 10px;
margin-top: 20px;
}
.mian-content-list{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
height: 40px;
border-bottom: 1px solid #e5e5e5;
padding: 0px 5px;
}
.textarea-mian{
width: 100%;
height: 126rpx;
background: #F3F3F3;
border-radius: 14rpx;
padding: 5px;
}
.mian-view-list-text{
font-size: 22rpx;
color: #333333;
}
.mian-content-list-title{
font-size: 22rpx;
color: #555555;
}
.mian-view-list-title{
font-size: 22rpx;
color: #555555;
}
.mian-view-list:last-child{
border: 0px !important;
}
.mian-view-list{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
height: 40px;
border-bottom: 1px solid #e5e5e5;
padding: 0px 5px;
}
.mian-view{
width: 100%;
display: flex;
flex-direction: column;
background: #fff;
border-radius: 24rpx;
padding: 10px;
margin-top: 20px;
}
.mina-title-bor{
width: 111rpx;
height: 16rpx;
background: linear-gradient(90deg, rgba(255, 255, 255, 0.4), rgba(32, 169, 143, 0.4));
border-radius: 8rpx;
position: absolute;
bottom: 0px;
margin-bottom: -2px;
}
.mina-title-text{
font-weight: bold;
font-size: 28rpx;
color: #333333;
}
.mina-title{
width: 100%;
text-align: center;
display: flex;
flex-direction: column;
position: relative;
align-items: center;
justify-content: center;
}
.mian-view{
width: 100%;
padding: 10px;
display: flex;
flex-direction: column;
}
.diandan-num{
width: 100%;
height: 74rpx;
line-height: 74rpx;
font-size: 25rpx;
color: #666666;
padding-left: 10px;
background: #FFFFFF;
border-radius: 24rpx;
margin: 15px 0px 20px 0px;
}
.mian-top-foot-view-img span,.mian-top-foot-view-text{
font-size: 25rpx;
color: #666666;
}
.mian-top-foot-view-img image{
width: 26.39rpx;
height: 25.69rpx;
margin-left: 5px;
}
.mian-top-foot-view-img{
display: flex;
flex-direction: row;
align-items: center;
}
.mian-top-foot-view-title{
font-size: 25rpx;
color: #666666;
}
.mian-top-foot-view{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.mian-top-foot{
width: 100%;
display: flex;
flex-direction: column;
}
.number{
color: #FF6000;
font-size:35.42rpx;
font-weight: bold;
}
.fuhao{
color: #FF6000;
font-size:28.47rpx;
font-weight: bold;
}
.mian-money-num{
display: flex;
flex-direction: row;
align-items: center;
}
.mian-money-title{
font-size: 25rpx;
color: #666666;
}
.mian-money{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
}
.mian-time{
font-size: 25rpx;
color: #666666;
}
.mian-title-view{
font-weight: bold;
font-size: 31rpx;
color: #333333;
}
.mian-title{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.mian-top-head-right{
width: 75%;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.mian-top-head-img{
width: 145rpx;
height: 146rpx;
border-radius: 14rpx;
}
.mian-top-head{
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
border-bottom: 1px solid #E5E5E5;
padding-bottom: 15px;
margin-bottom: 7px;
}
.mian-top{
width: 100%;
/* height: 331rpx; */
padding: 10px;
background: #FFFFFF;
border-radius: 24rpx;
}
.mian{
width: 95%;
display: flex;
flex-direction: column;
position: absolute;
top: 0;
margin-top: 20px;
overflow: scroll;
background: #f7f7f7;
padding-bottom:30px;
border-radius: 24rpx;
}
.header{
width: 100%;
height: 228rpx;
background: linear-gradient(-36deg, #11957C, #20A98F, #019C88, #029D88);
}
.nav-btn{
font-size: 25rpx;
color: #019C88;
line-height: 63rpx;
}
.nav-title{
font-weight: bold;
font-size: 38rpx;
color: #17181C;
}
.nav-tab image{
width: 15.42rpx;
height: 27.64rpx;
}
.nav-tab{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding:10px;
}
.content{
width: 100%;
height: 100vh;
background-color: #f7f7f7;
position: relative;
display: flex;
flex-direction: column;
align-items: center;
padding-bottom: 30px;
overflow: scroll;
}
</style>