@@ -160,6 +160,22 @@ var config = { | |||||
* 订单退款状态 | * 订单退款状态 | ||||
*/ | */ | ||||
getRefundStatus: "/order/getRefundStatus", | getRefundStatus: "/order/getRefundStatus", | ||||
/** | |||||
* 查询预约状态 | |||||
*/ | |||||
getUserReservation: "/wxCouponOrderReservation/getUserReservation", | |||||
/** | |||||
* 保存/更改预约信息 | |||||
*/ | |||||
saveOrderReservation: "/wxCouponOrderReservation/saveOrUpdate", | |||||
/** | |||||
* 查询预约详情 | |||||
*/ | |||||
getOrderReservationDetail: "/wxCouponOrderReservation/detail", | |||||
/** | |||||
* 取消预约 | |||||
*/ | |||||
cancelReservation: "/wxCouponOrderReservation/cancelReservation", | |||||
/** | /** | ||||
* 获取im客服id | * 获取im客服id | ||||
*/ | */ | ||||
@@ -1,9 +1,244 @@ | |||||
// c:\Users\Holy-Knight-IX\Desktop\Working Space\4.TikTok-MiniPro\ttc\package2\pages\appointment\appointment.js | // c:\Users\Holy-Knight-IX\Desktop\Working Space\4.TikTok-MiniPro\ttc\package2\pages\appointment\appointment.js | ||||
let config = require("../../../config/config.js"); | |||||
let util = require("../../../utils/util"); | |||||
let Http = require("../../../utils/HttpBasics"); | |||||
let app = getApp(); | |||||
const imgurl = require("../../../utils/imgurl"); | |||||
Page({ | Page({ | ||||
data: { | data: { | ||||
appointmentText: "确认预约", | |||||
id: "", | |||||
orderId: "", | |||||
startTime: "", | |||||
endTime: "", | |||||
mallTenantId: "", | |||||
pickedAddress: "请选择地址", | |||||
pickedDate: "请选择日期", | |||||
pickedStartTime: "请选择", | |||||
pickedEndTime: "请选择", | |||||
describeStr: "", | |||||
status: "" | |||||
}, | |||||
onLoad(options) { | |||||
console.log(options, 'options'); | |||||
this.setData({ | |||||
id: options.id || '', | |||||
orderId: options.orderId || '', | |||||
startTime: options.startTime || '', | |||||
endTime: options.endTime || '' | |||||
}) | |||||
const mallTenantId = tt.getStorageSync('mallTenantId'); | |||||
if (mallTenantId) { | |||||
this.setData({ | |||||
mallTenantId | |||||
}) | |||||
} | |||||
if (this.data.id) { | |||||
this.getDetail(this.data.id) | |||||
} | |||||
}, | |||||
chooseAddress() { | |||||
let that = this; | |||||
tt.chooseLocation({ | |||||
success: function (res) { | |||||
that.setData({ | |||||
pickedAddress: res.address, | |||||
}) | |||||
}, | |||||
fail: function (error) { | |||||
console.log(error) | |||||
}, | |||||
complete: function (data) {} | |||||
}) | |||||
}, | |||||
chooseDate(e) { | |||||
console.log(e.detail.value, 'e'); | |||||
this.setData({ | |||||
pickedDate: e.detail.value | |||||
}) | |||||
}, | |||||
chooseStartTime(e) { | |||||
console.log(e.detail.value, 'e'); | |||||
this.setData({ | |||||
pickedStartTime: e.detail.value | |||||
}) | |||||
}, | |||||
chooseEndTime(e) { | |||||
console.log(e.detail.value, 'e'); | |||||
this.setData({ | |||||
pickedEndTime: e.detail.value | |||||
}) | |||||
}, | |||||
describing(e) { | |||||
this.setData({ | |||||
describeStr: e.detail.value | |||||
}) | |||||
}, | |||||
confirm() { | |||||
const tempData = this.data | |||||
if (tempData.pickedAddress == '请选择地址') { | |||||
tt.showToast({ | |||||
title: '请选择地址!', | |||||
icon: 'fail' | |||||
}); | |||||
return | |||||
} | |||||
if (tempData.pickedDate == '请选择日期') { | |||||
tt.showToast({ | |||||
title: '请请选择日期!', | |||||
icon: 'fail' | |||||
}); | |||||
return | |||||
} | |||||
if (tempData.pickedStartTime == '请选择') { | |||||
tt.showToast({ | |||||
title: '请起始时间!', | |||||
icon: 'fail' | |||||
}); | |||||
return | |||||
} | |||||
if (tempData.pickedEndTime == '请选择') { | |||||
tt.showToast({ | |||||
title: '请结束时间!', | |||||
icon: 'fail' | |||||
}); | |||||
return | |||||
} | |||||
const data = { | |||||
couponOrderId: tempData.orderId, | |||||
userAddress: tempData.pickedAddress, | |||||
startDate: tempData.pickedDate + " " + tempData.pickedStartTime + ":00", | |||||
endDate: tempData.pickedDate + " " + tempData.pickedEndTime + ":00", | |||||
describeStr: tempData.describeStr, | |||||
mallTenantId: tempData.mallTenantId || '' | |||||
} | |||||
if (this.data.id) { | |||||
data.id = this.data.id | |||||
} | |||||
if (this.data.status == 1) { | |||||
data.status = 0 | |||||
} | |||||
console.log(data, 'data'); | |||||
this.saveOrderReservation(data) | |||||
}, | |||||
cancel() { | |||||
tt.showModal({ | |||||
title: "取消预约", | |||||
content: "确定要取消预约吗?", | |||||
showCancel: true, | |||||
success: (res) => { | |||||
if (res.confirm) { | |||||
this.cancelReservation(this.data.id) | |||||
} | |||||
if (res.cancel) { | |||||
return | |||||
} | |||||
}, | |||||
fail: (res) => { | |||||
}, | |||||
}); | |||||
}, | |||||
cancelReservation(id) { | |||||
const that = this | |||||
Http.post({ | |||||
url: config.api.cancelReservation, | |||||
data: { | |||||
id, | |||||
mallTenantId: this.data.mallTenantId || '' | |||||
} | |||||
}).then(res => { | |||||
console.log(res, 'cancelReservation'); | |||||
tt.showToast({ | |||||
title: '取消成功!', | |||||
icon: 'success', | |||||
duration: 2000, | |||||
success: (res) => { | |||||
setTimeout(() => { | |||||
tt.navigateBack(); | |||||
}, 1500); | |||||
}, | |||||
fail: (res) => { | |||||
}, | |||||
}); | |||||
}).catch(err => { | |||||
console.log(err, 'cancelReservation'); | |||||
tt.showToast({ | |||||
title: err.message, | |||||
icon: 'none' | |||||
}); | |||||
}) | |||||
}, | |||||
saveOrderReservation(data) { | |||||
Http.post({ | |||||
url: config.api.saveOrderReservation, | |||||
data | |||||
}).then(res => { | |||||
console.log(res, 'saveOrderReservation'); | |||||
tt.showToast({ | |||||
title: '预约成功!', | |||||
icon: 'success', | |||||
duration: 2000, | |||||
success: (res) => { | |||||
setTimeout(() => { | |||||
tt.navigateBack(); | |||||
}, 1500); | |||||
}, | |||||
fail: (res) => { | |||||
}, | |||||
}); | |||||
}).catch(err => { | |||||
console.log(err, 'saveOrderReservation'); | |||||
tt.showToast({ | |||||
title: err.message, | |||||
icon: 'none' | |||||
}); | |||||
}) | |||||
}, | }, | ||||
onLoad: function (options) { | |||||
getDetail(id) { | |||||
const that = this | |||||
Http.get({ | |||||
url: config.api.getOrderReservationDetail, | |||||
data: { | |||||
id, | |||||
mallTenantId: this.data.mallTenantId || '' | |||||
} | |||||
}).then(res => { | |||||
console.log(res, 'getOrderReservationDetail'); | |||||
that.setData({ | |||||
pickedAddress: res.data.userAddress || '请选择地址', | |||||
pickedDate: util.timestampToTime(res.data.startDate, 'YYYY-MM-DD'), | |||||
pickedStartTime: util.timestampToTime(res.data.startDate, 'hh:mm'), | |||||
pickedEndTime: util.timestampToTime(res.data.endDate, 'hh:mm'), | |||||
describeStr: res.data.describeStr, | |||||
status: res.data.status, | |||||
appointmentText: res.data.status == 1 ? "重新预约" : "修改预约" | |||||
}) | |||||
}).catch(err => { | |||||
console.log(err, 'getOrderReservationDetail'); | |||||
}) | |||||
} | } | ||||
}) | }) |
@@ -1,3 +1,6 @@ | |||||
{ | { | ||||
"navigationBarTitleText": "订单预约", | |||||
"navigationBarBackgroundColor": "#fff", | |||||
"navigationBarTextStyle": "black", | |||||
"usingComponents": {} | "usingComponents": {} | ||||
} | } |
@@ -1,2 +1,36 @@ | |||||
<!-- c:\Users\Holy-Knight-IX\Desktop\Working Space\4.TikTok-MiniPro\ttc\package2\pages\appointment\appointment.ttml --> | <!-- c:\Users\Holy-Knight-IX\Desktop\Working Space\4.TikTok-MiniPro\ttc\package2\pages\appointment\appointment.ttml --> | ||||
<text>c:\Users\Holy-Knight-IX\Desktop\Working Space\4.TikTok-MiniPro\ttc\package2\pages\appointment\appointment.ttml</text> | |||||
<view class="continer"> | |||||
<view tt:if="{{ pickedAddress != '请选择地址' }}" class="addressPicker" bindtap="chooseAddress"> | |||||
<text>选择服务地点:</text> | |||||
<text> | |||||
<text class="address">{{ pickedAddress }}</text> | |||||
</text> | |||||
</view> | |||||
<view tt:if="{{ pickedAddress == '请选择地址' }}" class="addressPickerFlex" bindtap="chooseAddress"> | |||||
<text>选择服务地点:</text> | |||||
<text> | |||||
<text class="address">{{ pickedAddress }}</text> | |||||
</text> | |||||
</view> | |||||
<view class="datePickerFlex"> | |||||
<picker mode="date" start="{{ startTime }}" end="{{ endTime }}" bindchange='chooseDate'>选择服务日期:</picker> | |||||
<picker mode="date" start="{{ startTime }}" end="{{ endTime }}" bindchange='chooseDate' class="address"> | |||||
{{ pickedDate }}</picker> | |||||
</view> | |||||
<view class="datePickerFlex"> | |||||
<picker mode="time" bindchange='chooseTime'>预计上门时间:</picker> | |||||
<picker mode="time" bindchange='chooseStartTime' class="address">{{ pickedStartTime }}</picker> | |||||
- | |||||
<picker mode="time" start="{{ pickedStartTime }}" bindchange='chooseEndTime' class="address">{{ pickedEndTime }} | |||||
</picker> | |||||
</view> | |||||
<view class="textarea"> | |||||
<textarea class="describe" placeholder="备注:说点什么吧" bindinput="describing" value="{{ describeStr }}"></textarea> | |||||
</view> | |||||
<button class="confirm" type="primary" bindtap="confirm">{{ appointmentText }}</button> | |||||
<button tt:if="{{ id && status != 1 }}" type="primary" bindtap="cancel">取消预约</button> | |||||
</view> |
@@ -1 +1,65 @@ | |||||
/* c:\Users\Holy-Knight-IX\Desktop\Working Space\4.TikTok-MiniPro\ttc\package2\pages\appointment\appointment.ttss */ | |||||
/* c:\Users\Holy-Knight-IX\Desktop\Working Space\4.TikTok-MiniPro\ttc\package2\pages\appointment\appointment.ttss */ | |||||
page { | |||||
font-size: 30rpx; | |||||
box-sizing: border-box !important; | |||||
} | |||||
.continer { | |||||
width: 90%; | |||||
height: 100%; | |||||
margin: auto; | |||||
} | |||||
.addressPicker { | |||||
background-color: #fff; | |||||
border-radius: 20rpx; | |||||
padding: 30rpx; | |||||
margin: 35rpx auto; | |||||
} | |||||
.address { | |||||
color: #8a8a8a; | |||||
} | |||||
.addressPickerFlex { | |||||
display: flex; | |||||
justify-content: space-between; | |||||
background-color: #fff; | |||||
border-radius: 20rpx; | |||||
padding: 30rpx; | |||||
margin: 35rpx auto; | |||||
} | |||||
.datePicker { | |||||
background-color: #fff; | |||||
border-radius: 20rpx; | |||||
padding: 30rpx; | |||||
margin: 35rpx auto; | |||||
} | |||||
.datePickerFlex { | |||||
display: flex; | |||||
justify-content: space-between; | |||||
background-color: #fff; | |||||
border-radius: 20rpx; | |||||
padding: 30rpx; | |||||
margin: 35rpx auto; | |||||
} | |||||
.textarea { | |||||
margin: 35rpx auto; | |||||
overflow: hidden; | |||||
border-radius: 20rpx; | |||||
} | |||||
.describe { | |||||
width: 100%; | |||||
background-color: #fff; | |||||
padding: 25rpx; | |||||
} | |||||
.confirm { | |||||
background-color: #3c89ff; | |||||
margin-bottom: 20rpx; | |||||
} |
@@ -306,7 +306,7 @@ Page({ | |||||
let param = { | let param = { | ||||
id: this.data.cardData.couponOrderId, | id: this.data.cardData.couponOrderId, | ||||
cUserId: this.data.cardData.cuserId, | cUserId: this.data.cardData.cuserId, | ||||
updateDate: util.formatTime(Number(that.data.cardData.updateDate), "yyyy-MM-dd hh:mm:ss") | |||||
updateDate: util.timestampToTime(Number(that.data.cardData.updateDate), "YYYY-MM-DD hh:mm:ss") | |||||
} | } | ||||
Http.get({ | Http.get({ | ||||
url: config.api.queryCardStatus, | url: config.api.queryCardStatus, | ||||
@@ -327,7 +327,7 @@ Page({ | |||||
let param = { | let param = { | ||||
id: this.data.cardData.couponOrderId, | id: this.data.cardData.couponOrderId, | ||||
cUserId: this.data.cardData.cuserId, | cUserId: this.data.cardData.cuserId, | ||||
updateDate: util.formatTime(Number(this.data.cardData.updateDate), "yyyy-MM-dd hh:mm:ss") | |||||
updateDate: util.timestampToTime(Number(this.data.cardData.updateDate), "YYYY-MM-DD hh:mm:ss") | |||||
} | } | ||||
this.setData({ | this.setData({ | ||||
@@ -788,7 +788,7 @@ Page({ | |||||
clearInterval(that.data.setInterval) | clearInterval(that.data.setInterval) | ||||
} | } | ||||
if (res.data.actStatus == 0) { | if (res.data.actStatus == 0) { | ||||
var beginTime = util.formatTime(res.data.beginTime, "yyyy-MM-dd hh:mm:ss"); | |||||
var beginTime = util.timestampToTime(res.data.beginTime, "YYYY-MM-DD hh:mm:ss"); | |||||
if (util.timechuo(beginTime).indexOf('-') == 0) { | if (util.timechuo(beginTime).indexOf('-') == 0) { | ||||
that.setData({ | that.setData({ | ||||
beginTime: "活动已结束", | beginTime: "活动已结束", | ||||
@@ -799,7 +799,7 @@ Page({ | |||||
}); | }); | ||||
} | } | ||||
} else { | } else { | ||||
var endTime = util.formatTime(res.data.endTime, "yyyy-MM-dd hh:mm:ss"); | |||||
var endTime = util.timestampToTime(res.data.endTime, "YYYY-MM-DD hh:mm:ss"); | |||||
if (util.timechuo(endTime).indexOf('-') == 0) { | if (util.timechuo(endTime).indexOf('-') == 0) { | ||||
that.setData({ | that.setData({ | ||||
endtime: "活动已结束", | endtime: "活动已结束", | ||||
@@ -818,8 +818,8 @@ Page({ | |||||
if (res.data.type == 10) { | if (res.data.type == 10) { | ||||
that.setData({ | that.setData({ | ||||
salePriceStr: res.data.salePriceStr, | salePriceStr: res.data.salePriceStr, | ||||
pickEndDate: util.formatTime(res.data.pickEndDate, "yyyy-MM-dd"), | |||||
pickStartDate: util.formatTime(res.data.pickStartDate, "yyyy-MM-dd"), | |||||
pickEndDate: util.timestampToTime(res.data.pickEndDate, "YYYY-MM-DD"), | |||||
pickStartDate: util.timestampToTime(res.data.pickStartDate, "YYYY-MM-DD"), | |||||
priceStr: res.data.priceStr, | priceStr: res.data.priceStr, | ||||
tailPriceStr: res.data.tailPriceStr, | tailPriceStr: res.data.tailPriceStr, | ||||
origPriceStr: res.data.origPriceStr | origPriceStr: res.data.origPriceStr | ||||
@@ -827,12 +827,12 @@ Page({ | |||||
} | } | ||||
if (res.data.validType == 1) { | if (res.data.validType == 1) { | ||||
that.setData({ | that.setData({ | ||||
soldStartTime: util.formatTime(res.data.soldStartTime, "yyyy-MM-dd") || null, | |||||
soldEndTime: util.formatTime(res.data.soldEndTime, "yyyy-MM-dd") || null, | |||||
validStartDate: util.formatTime(res.data.validStartDate, "yyyy-MM-dd"), | |||||
validEndDate: util.formatTime(res.data.validEndDate, "yyyy-MM-dd"), | |||||
pickStartDate: util.formatTime(res.data.pickStartDate, "yyyy-MM-dd"), | |||||
pickEndDate: util.formatTime(res.data.pickEndDate, "yyyy-MM-dd"), | |||||
soldStartTime: util.timestampToTime(res.data.soldStartTime, "YYYY-MM-DD") || null, | |||||
soldEndTime: util.timestampToTime(res.data.soldEndTime, "YYYY-MM-DD") || null, | |||||
validStartDate: util.timestampToTime(res.data.validStartDate, "YYYY-MM-DD"), | |||||
validEndDate: util.timestampToTime(res.data.validEndDate, "YYYY-MM-DD"), | |||||
pickStartDate: util.timestampToTime(res.data.pickStartDate, "YYYY-MM-DD"), | |||||
pickEndDate: util.timestampToTime(res.data.pickEndDate, "YYYY-MM-DD"), | |||||
}); | }); | ||||
} else { | } else { | ||||
if (res.data.validDays) { | if (res.data.validDays) { | ||||
@@ -138,6 +138,8 @@ | |||||
<shop tt:if="{{mallList.length>0}}" mallList="{{mallList}}"></shop> | <shop tt:if="{{mallList.length>0}}" mallList="{{mallList}}"></shop> | ||||
<image tt:if="{{data.type == 69}}" class="alerting" mode='widthFix' src="../../../assets/images/appointment.png"> | |||||
</image> | |||||
<view class='notes'> | <view class='notes'> | ||||
<view class="notesH">购买须知</view> | <view class="notesH">购买须知</view> | ||||
<view class="timeText">使用期</view> | <view class="timeText">使用期</view> | ||||
@@ -377,6 +377,10 @@ button::after { | |||||
padding-bottom: 30rpx; | padding-bottom: 30rpx; | ||||
} | } | ||||
.alerting { | |||||
width: 100%; | |||||
} | |||||
.nodesD { | .nodesD { | ||||
height: 87rpx; | height: 87rpx; | ||||
line-height: 87rpx; | line-height: 87rpx; | ||||
@@ -60,7 +60,12 @@ Page({ | |||||
IMorderId: "", | IMorderId: "", | ||||
outOrderId: "", | outOrderId: "", | ||||
outRefundOrderId: "", | outRefundOrderId: "", | ||||
canIUseRefund: false | |||||
canIUseRefund: false, | |||||
isAppointment: false, | |||||
appointStart: "", | |||||
appointEnd: "", | |||||
appointmentId: "", | |||||
appointmentStatus: "" | |||||
}, | }, | ||||
imCallback(e) { | imCallback(e) { | ||||
@@ -175,6 +180,48 @@ Page({ | |||||
}) | }) | ||||
}, | }, | ||||
goAppointment(e) { | |||||
const that = this | |||||
const orderId = e.currentTarget.dataset.id | |||||
const id = this.data.appointmentId | |||||
const startTime = that.data.order.validStartDate | |||||
const endTime = that.data.order.validEndDate | |||||
console.log(startTime, endTime); | |||||
tt.navigateTo({ | |||||
url: `/package2/pages/appointment/appointment?id=${id}&orderId=${orderId}&startTime=${startTime}&endTime=${endTime}`, | |||||
}); | |||||
}, | |||||
getUserReservation(couponOrderId) { | |||||
const that = this | |||||
Http.get({ | |||||
url: config.api.getUserReservation, | |||||
data: { | |||||
couponOrderId, | |||||
mallTenantId: this.data.mallTenantId || '' | |||||
} | |||||
}).then(res => { | |||||
console.log(res, 'getUserReservation'); | |||||
if (res.data) { | |||||
const appointStart = util.timestampToTime(res.data.startDate, 'YYYY-MM-DD hh:mm:ss') | |||||
const appointEnd = util.timestampToTime(res.data.endDate, 'hh:mm:ss') | |||||
const appointmentId = res.data.id | |||||
const appointmentStatus = res.data.status | |||||
that.setData({ | |||||
appointStart, | |||||
appointEnd, | |||||
appointmentId, | |||||
appointmentStatus, | |||||
isAppointment: true | |||||
}) | |||||
} | |||||
}).catch(err => { | |||||
console.log(err, 'getUserReservation'); | |||||
}) | |||||
}, | |||||
getOrderStatus(orderId) { | getOrderStatus(orderId) { | ||||
const that = this | const that = this | ||||
Http.get({ | Http.get({ | ||||
@@ -222,13 +269,6 @@ Page({ | |||||
}) | }) | ||||
}, | }, | ||||
goAppointment(e) { | |||||
const id = e.currentTarget.dataset.id | |||||
tt.navigateTo({ | |||||
url: `/package2/pages/appointment/appointment?id=${id}`, | |||||
}); | |||||
}, | |||||
getIm() { //获取im客服id | getIm() { //获取im客服id | ||||
const that = this | const that = this | ||||
Http.get({ | Http.get({ | ||||
@@ -259,8 +299,10 @@ Page({ | |||||
const couponChannelId = res.data.orders[0].couponChannelId | const couponChannelId = res.data.orders[0].couponChannelId | ||||
const orderID = res.data.orders[0].id | const orderID = res.data.orders[0].id | ||||
const cOrderID = res.data.orders[0].couponOrderId | |||||
that.getOrderStatus(orderID) | that.getOrderStatus(orderID) | ||||
that.getUserReservation(cOrderID) | |||||
that.getIm() | that.getIm() | ||||
const extParam = res.data.extParam || null | const extParam = res.data.extParam || null | ||||
if (extParam) { | if (extParam) { | ||||
@@ -394,16 +436,16 @@ Page({ | |||||
tenantId: res.data.tenantId | tenantId: res.data.tenantId | ||||
}) | }) | ||||
} | } | ||||
var createDate = util.formatTime(res.data.orders[0].createDate, "yyyy-MM-dd"); | |||||
var createDate = util.timestampToTime(res.data.orders[0].createDate, "YYYY-MM-DD"); | |||||
let tempData = res.data.orders[0] | let tempData = res.data.orders[0] | ||||
tempData.deliveryInfo = tempData.deliveryInfo ? JSON.parse(tempData.deliveryInfo) : "" | tempData.deliveryInfo = tempData.deliveryInfo ? JSON.parse(tempData.deliveryInfo) : "" | ||||
tempData.itemGroup = tempData.itemGroup ? JSON.parse(tempData.itemGroup) : "" | tempData.itemGroup = tempData.itemGroup ? JSON.parse(tempData.itemGroup) : "" | ||||
tempData.soldStartTime = util.formatTime(tempData.soldStartTime, "yyyy-MM-dd") || null, | |||||
tempData.soldEndTime = util.formatTime(tempData.soldEndTime, "yyyy-MM-dd") || null, | |||||
tempData.soldStartTime = util.timestampToTime(tempData.soldStartTime, "YYYY-MM-DD") || null, | |||||
tempData.soldEndTime = util.timestampToTime(tempData.soldEndTime, "YYYY-MM-DD") || null, | |||||
tempData.validStartDate = util.formatTime(tempData.validStartDate, "yyyy-MM-dd") | |||||
tempData.validEndDate = util.formatTime(tempData.validEndDate, "yyyy-MM-dd") | |||||
tempData.validStartDate = util.timestampToTime(tempData.validStartDate, "YYYY-MM-DD") | |||||
tempData.validEndDate = util.timestampToTime(tempData.validEndDate, "YYYY-MM-DD") | |||||
tempData.couponOrderIdS = tempData.couponOrderId ? tempData.couponOrderId.slice(0, 4) + `******` + tempData.couponOrderId.slice(14) : '' | tempData.couponOrderIdS = tempData.couponOrderId ? tempData.couponOrderId.slice(0, 4) + `******` + tempData.couponOrderId.slice(14) : '' | ||||
@@ -116,14 +116,18 @@ | |||||
--> | --> | ||||
<!-- bindtap="powerDrawer" --> | <!-- bindtap="powerDrawer" --> | ||||
<view tt:if="{{order.type != 69}}" class='dhCode' data-id="{{order.id}}" bindtap="goAppointment"> | |||||
<view tt:if="{{order.type == 69 && order.couponOrderStatus == 0}}" class='dhCode' data-id="{{order.couponOrderId}}" | |||||
bindtap="goAppointment"> | |||||
<view style="width:86%;clear: both;"> | <view style="width:86%;clear: both;"> | ||||
<text class="fl">预约时间:</text> | <text class="fl">预约时间:</text> | ||||
<text class="fr" style="color: #d4a971;">点击预约</text> | |||||
</view> | |||||
<view> | |||||
<!-- <image class="spcode" src="{{spcodeUrl}}" mode='widthFix'></image> | |||||
<image class="rArrow" src="{{chevronUrl}}" mode='widthFix'></image> --> | |||||
<text tt:if="{{ !isAppointment }}" class="fr" style="color: #d4a971;">点击预约</text> | |||||
<text tt:if="{{ isAppointment && appointmentStatus == 0 }}" class="fr" | |||||
style="color: #d4a971;">{{appointStart}}-{{appointEnd}}</text> | |||||
<text | |||||
tt:if="{{ isAppointment && ( appointmentStatus == 1 || appointmentStatus == 2 || appointmentStatus == 3 ) }}" | |||||
class="fr" style="color: #d4a971;">预约已取消 | |||||
</text> | |||||
</view> | </view> | ||||
</view> | </view> | ||||
@@ -210,6 +214,8 @@ | |||||
</view> | </view> | ||||
</view> | </view> | ||||
<image tt:if="{{order.type == 69}}" class="alerting" mode='widthFix' src="../../../assets/images/appointment.png"> | |||||
</image> | |||||
<view class='notes'> | <view class='notes'> | ||||
<view class="notesH"> | <view class="notesH"> | ||||
@@ -19,6 +19,17 @@ page { | |||||
z-index: 99999; | z-index: 99999; | ||||
} | } | ||||
.alerting { | |||||
width: 100%; | |||||
} | |||||
.cancelAppoint { | |||||
color: #ffffff; | |||||
background-color: #ff0000; | |||||
border-radius: 5rpx; | |||||
padding: 5rpx 3rpx; | |||||
} | |||||
.serviceBox2 { | .serviceBox2 { | ||||
width: 50rpx; | width: 50rpx; | ||||
height: 50rpx; | height: 50rpx; | ||||
@@ -56,8 +56,20 @@ | |||||
"scene": "011007", | "scene": "011007", | ||||
"launchFrom": "scan", | "launchFrom": "scan", | ||||
"location": "audit" | "location": "audit" | ||||
}, | |||||
{ | |||||
"id": 1686207127735, | |||||
"name": "预约功能调试", | |||||
"pathName": "package2/pages/appointment/appointment", | |||||
"query": "id=826355515227168768&startTime=2023-05-29&endTime=2023-06-28", | |||||
"scene": "990001", | |||||
"launchFrom": "scan", | |||||
"location": "qr_code" | |||||
} | } | ||||
] | ] | ||||
} | } | ||||
}, | |||||
"setting": { | |||||
"mockLogin": false | |||||
} | } | ||||
} | } |
@@ -8,10 +8,11 @@ function convertUTCTimeToLocalTime(UTCDateString) { | |||||
if (!UTCDateString) { | if (!UTCDateString) { | ||||
return '-'; | return '-'; | ||||
} | } | ||||
function formatFunc(str) { //格式化显示 | |||||
function formatFunc(str) { //格式化显示 | |||||
return str > 9 ? str : '0' + str | return str > 9 ? str : '0' + str | ||||
} | } | ||||
var date2 = new Date(UTCDateString); //这步是关键 | |||||
var date2 = new Date(UTCDateString); //这步是关键 | |||||
var year = date2.getFullYear(); | var year = date2.getFullYear(); | ||||
var mon = formatFunc(date2.getMonth() + 1); | var mon = formatFunc(date2.getMonth() + 1); | ||||
var day = formatFunc(date2.getDate()); | var day = formatFunc(date2.getDate()); | ||||
@@ -20,7 +21,7 @@ function convertUTCTimeToLocalTime(UTCDateString) { | |||||
hour = hour >= 24 ? hour - 24 : hour; | hour = hour >= 24 ? hour - 24 : hour; | ||||
hour = formatFunc(hour); | hour = formatFunc(hour); | ||||
var min = formatFunc(date2.getMinutes()); | var min = formatFunc(date2.getMinutes()); | ||||
var dateStr = ' ' + hour + ':' + min ; | |||||
var dateStr = ' ' + hour + ':' + min; | |||||
return dateStr; | return dateStr; | ||||
} | } | ||||
@@ -29,15 +30,15 @@ function convertUTCTimeToLocalTime(UTCDateString) { | |||||
// return new Date(+new Date(dateee) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, ''); | // return new Date(+new Date(dateee) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, ''); | ||||
// } | // } | ||||
function moodsText(Num){//人气值处理 Num人气值 返回字符串 处理到万位 | |||||
function moodsText(Num) { //人气值处理 Num人气值 返回字符串 处理到万位 | |||||
let sing = "" | let sing = "" | ||||
if(Num>10000){ | |||||
sing = (Num/10000).toFixed(2)+"w" | |||||
}else{ | |||||
sing =Num | |||||
} | |||||
return sing | |||||
if (Num > 10000) { | |||||
sing = (Num / 10000).toFixed(2) + "w" | |||||
} else { | |||||
sing = Num | |||||
} | |||||
return sing | |||||
} | } | ||||
const formatTime = (date, fmt) => { | const formatTime = (date, fmt) => { | ||||
@@ -69,9 +70,9 @@ const formatTime = (date, fmt) => { | |||||
if (new RegExp("(" + k + ")").test(fmt)) | if (new RegExp("(" + k + ")").test(fmt)) | ||||
fmt = fmt.replace( | fmt = fmt.replace( | ||||
RegExp.$1, | RegExp.$1, | ||||
RegExp.$1.length == 1 | |||||
? o[k] | |||||
: ("00" + o[k]).substr(("" + o[k]).length) | |||||
RegExp.$1.length == 1 ? | |||||
o[k] : | |||||
("00" + o[k]).substr(("" + o[k]).length) | |||||
); | ); | ||||
return fmt; | return fmt; | ||||
} catch (error) { | } catch (error) { | ||||
@@ -104,6 +105,7 @@ function qrc(id, code, width, height) { | |||||
height: convert_length(height) | height: convert_length(height) | ||||
}); | }); | ||||
} | } | ||||
function fmtDate(obj) { | function fmtDate(obj) { | ||||
if (typeof obj === 'string' && obj.length === 13) { | if (typeof obj === 'string' && obj.length === 13) { | ||||
obj = Number(obj); | obj = Number(obj); | ||||
@@ -121,6 +123,57 @@ function fmtDate(obj) { | |||||
); | ); | ||||
} | } | ||||
/** | |||||
* @description 根据时间戳获取时间 | |||||
* @param {*} timestamp 必传,number类型,时间戳数据(10位及以下,10位至13位);若不传,则返回:“无时间戳” | |||||
* @param {*} format 选传,string类型,提供以下时间格式:YYYY-MM-DD hh:mm:ss、YYYY/MM/DD hh:mm:ss、YYYY.MM.DD hh:mm:ss、YYYY MM DD hh:mm:ss、YYYY年MM月DD日 hh:mm:ss、YYYY-MM-DD、YYYY/MM/DD、YYYY.MM.DD、YYYY MM DD、YYYY年MM月DD日、hh:mm:ss、hh:mm;若不传,则默认为:YYYY-MM-DD | |||||
* @returns 根据要求的时间格式 | |||||
* @version V 1.0, Created by YWQ, 2022.10.20 | |||||
*/ | |||||
function timestampToTime(timestamp, format) { | |||||
//时间戳为10位需*1000,时间戳为13位不需乘1000 | |||||
const length = timestamp ? timestamp.length : '' | |||||
if (length <= 10) { | |||||
var date = new Date(timestamp * 1000) | |||||
} else { | |||||
var date = new Date(timestamp) | |||||
} | |||||
let Y = String(date.getFullYear()) | |||||
let M = String(date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) | |||||
let D = String(date.getDate() + 1 < 10 ? '0' + (date.getDate()) : date.getDate()) | |||||
let h = String(date.getHours() + 1 < 10 ? '0' + (date.getHours()) : date.getHours()) | |||||
let m = String(date.getMinutes() + 1 < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) | |||||
let s = String(date.getSeconds() + 1 < 10 ? '0' + (date.getSeconds()) : date.getSeconds()) | |||||
// return Y + M + D + h + m + s | |||||
if (format == "YYYY-MM-DD hh:mm:ss") { | |||||
return Y + "-" + M + "-" + D + " " + h + ":" + m + ":" + s | |||||
} else if (format == "YYYY/MM/DD hh:mm:ss") { | |||||
return Y + "/" + M + "/" + D + " " + h + ":" + m + ":" + s | |||||
} else if (format == "YYYY.MM.DD hh:mm:ss") { | |||||
return Y + "." + M + "." + D + " " + h + ":" + m + ":" + s | |||||
} else if (format == "YYYY MM DD hh:mm:ss") { | |||||
return Y + " " + M + " " + D + " " + h + ":" + m + ":" + s | |||||
} else if (format == "YYYY年MM月DD日 hh:mm:ss") { | |||||
return Y + "年" + M + "月" + D + "日" + " " + h + ":" + m + ":" + s | |||||
} else if (format == "YYYY-MM-DD") { | |||||
return Y + "-" + M + "-" + D | |||||
} else if (format == "YYYY/MM/DD") { | |||||
return Y + "/" + M + "/" + D | |||||
} else if (format == "YYYY.MM.DD") { | |||||
return Y + "." + M + "." + D | |||||
} else if (format == "YYYY MM DD") { | |||||
return Y + " " + M + " " + D | |||||
} else if (format == "YYYY年MM月DD日") { | |||||
return Y + "年" + M + "月" + D + "日" | |||||
} else if (format == "hh:mm:ss") { | |||||
return h + ":" + m + ":" + s | |||||
} else if (format == "hh:mm") { | |||||
return h + ":" + m | |||||
} else { | |||||
return Y + "-" + M + "-" + D | |||||
} | |||||
} | |||||
//计算下单的时间与现在的时间的 | //计算下单的时间与现在的时间的 | ||||
function timechuo(startTime) { | function timechuo(startTime) { | ||||
var s1 = new Date(startTime.replace(/-/g, "/")); | var s1 = new Date(startTime.replace(/-/g, "/")); | ||||
@@ -137,20 +190,20 @@ function timechuo(startTime) { | |||||
var minute = Math.floor(runTime / 60); | var minute = Math.floor(runTime / 60); | ||||
var runTime = runTime % 60; | var runTime = runTime % 60; | ||||
var second = runTime; | var second = runTime; | ||||
if (day && !year && !month){ | |||||
if (day && !year && !month) { | |||||
return (day + '天' + hour + "小时" + minute + "分钟") | return (day + '天' + hour + "小时" + minute + "分钟") | ||||
} else if (month && !year){ | |||||
return ((month*30+day) +'天' + hour + "小时" + minute + "分钟") | |||||
} else if (month && !year) { | |||||
return ((month * 30 + day) + '天' + hour + "小时" + minute + "分钟") | |||||
} else if (year) { | } else if (year) { | ||||
return ((year*365 + month*30+ day) + '天' + hour + "小时" + minute + "分钟") | |||||
}else{ | |||||
return ((year * 365 + month * 30 + day) + '天' + hour + "小时" + minute + "分钟") | |||||
} else { | |||||
return (hour + "小时" + minute + "分钟") | return (hour + "小时" + minute + "分钟") | ||||
} | } | ||||
} | } | ||||
//计算时间差 | //计算时间差 | ||||
function timecha(endTime,startTime) { | |||||
function timecha(endTime, startTime) { | |||||
var s1 = new Date(endTime.replace(/-/g, "/")); | var s1 = new Date(endTime.replace(/-/g, "/")); | ||||
var s2 = new Date(startTime.replace(/-/g, "/")); | var s2 = new Date(startTime.replace(/-/g, "/")); | ||||
var runTime = parseInt((s1.getTime() - s2.getTime()) / 1000); | var runTime = parseInt((s1.getTime() - s2.getTime()) / 1000); | ||||
@@ -165,8 +218,9 @@ function timecha(endTime,startTime) { | |||||
var minute = Math.floor(runTime / 60); | var minute = Math.floor(runTime / 60); | ||||
var runTime = runTime % 60; | var runTime = runTime % 60; | ||||
var second = runTime; | var second = runTime; | ||||
return (month+"月"+day+"天"+hour+"小时"+minute+"分钟") | |||||
return (month + "月" + day + "天" + hour + "小时" + minute + "分钟") | |||||
} | } | ||||
function isJSON(str) { | function isJSON(str) { | ||||
if (typeof str == 'string') { | if (typeof str == 'string') { | ||||
console.log("string") | console.log("string") | ||||
@@ -202,6 +256,7 @@ module.exports = { | |||||
fmtDate: fmtDate, | fmtDate: fmtDate, | ||||
timechuo: timechuo, | timechuo: timechuo, | ||||
timecha: timecha, | timecha: timecha, | ||||
moodsText:moodsText, | |||||
convertUTCTimeToLocalTime: convertUTCTimeToLocalTime | |||||
}; | |||||
moodsText: moodsText, | |||||
convertUTCTimeToLocalTime: convertUTCTimeToLocalTime, | |||||
timestampToTime: timestampToTime | |||||
}; |