HolyKnightIX pirms 2 gadiem
vecāks
revīzija
51963550b2
7 mainītis faili ar 268 papildinājumiem un 29 dzēšanām
  1. +4
    -0
      config/config.js
  2. +20
    -5
      pages/Appointment/appointment.js
  3. +8
    -6
      pages/Appointment/appointment.ttml
  4. +4
    -3
      pages/Appointment/appointment.ttss
  5. +145
    -4
      pages/appointDetail/appointDetail.js
  6. +41
    -7
      pages/appointDetail/appointDetail.ttml
  7. +46
    -4
      pages/appointDetail/appointDetail.ttss

+ 4
- 0
config/config.js Parādīt failu

@@ -137,6 +137,10 @@ let config = {
* 预约确认 * 预约确认
*/ */
appointConfirm: "/api/wxCouponOrderReservation/updateStatus", appointConfirm: "/api/wxCouponOrderReservation/updateStatus",
/**
* 预约确认
*/
appointSetDate: "/api/wxCouponOrderReservation/update",
/** /**
* 获得openId * 获得openId
*/ */


+ 20
- 5
pages/Appointment/appointment.js Parādīt failu

@@ -23,7 +23,7 @@ Page({
const that = this const that = this
const data = { const data = {
pageNum: this.data.pageNum, pageNum: this.data.pageNum,
pageSize: 20,
pageSize: 200,
} }


if (startTime && endTime) { if (startTime && endTime) {
@@ -31,7 +31,7 @@ Page({
data.serchEndDate = endTime data.serchEndDate = endTime
} }


if (status) {
if (status || status === 0) {
data.status = status data.status = status
} }


@@ -44,7 +44,12 @@ Page({
res.data.list.forEach(item => { res.data.list.forEach(item => {
const appointStart = util.timestampToTime(item.startDate, 'YYYY-MM-DD hh:mm:ss') const appointStart = util.timestampToTime(item.startDate, 'YYYY-MM-DD hh:mm:ss')
const appointEnd = util.timestampToTime(item.endDate, 'hh:mm:ss') const appointEnd = util.timestampToTime(item.endDate, 'hh:mm:ss')
item.appointTime = appointStart + ' - ' + appointEnd
if (item.startDate && item.endDate) {
item.appointTime = appointStart + ' - ' + appointEnd
} else {
item.appointTime = "暂无";
}

}) })
that.setData({ that.setData({
list: res.data.list, list: res.data.list,
@@ -64,11 +69,21 @@ Page({
}, },


setType(e) { setType(e) {
const type = e.currentTarget.dataset.type * 1
const type = e.currentTarget.dataset.type

this.setData({ this.setData({
currentID: '', currentID: '',
}) })
this.getList(type)

if (type === 'X') {
this.getList(false)
} else if (type === 'Y') {
this.getList(0)
} else {
this.getList(type * 1)
}


}, },


setStartTime(e) { setStartTime(e) {


+ 8
- 6
pages/Appointment/appointment.ttml Parādīt failu

@@ -12,8 +12,9 @@
</view> </view>


<view class="{{ currentID == 1 ? 'type active' : 'type' }}"> <view class="{{ currentID == 1 ? 'type active' : 'type' }}">
<view class="item" bindtap="setType" data-type="">全部</view>
<view class="item" bindtap="setType" data-type="0">未确认</view>
<view class="item" bindtap="setType" data-type="X">全部</view>
<view class="item" bindtap="setType" data-type="Y">待确认</view>
<view class="item" bindtap="setType" data-type="-1">未预约</view>
<view class="item" bindtap="setType" data-type="5">已确认</view> <view class="item" bindtap="setType" data-type="5">已确认</view>
<view class="item" bindtap="setType" data-type="8">已完成</view> <view class="item" bindtap="setType" data-type="8">已完成</view>
</view> </view>
@@ -27,19 +28,20 @@
<view class="{{ currentID != 1 ? 'list active' : 'list' }}"> <view class="{{ currentID != 1 ? 'list active' : 'list' }}">
<view tt:if="{{ list.length > 0 }}" class="item" tt:for="{{ list }}"> <view tt:if="{{ list.length > 0 }}" class="item" tt:for="{{ list }}">
<view class="head"> <view class="head">
<view>订单编号:{{ item.couponOrderId }}</view>
<view tt:if="{{ item.status == 0 }}" class="notice noAppoint">确认</view>
<view>券码:{{ item.couponOrderId }}</view>
<view tt:if="{{ item.status == 0 }}" class="notice noAppoint">确认</view>
<view tt:if="{{ item.status == 1 }}" class="notice noAppoint">已取消</view> <view tt:if="{{ item.status == 1 }}" class="notice noAppoint">已取消</view>
<view tt:if="{{ item.status == 3 }}" class="notice refund">已退款</view> <view tt:if="{{ item.status == 3 }}" class="notice refund">已退款</view>
<view tt:if="{{ item.status == 5 }}" class="notice confirm">已确认</view> <view tt:if="{{ item.status == 5 }}" class="notice confirm">已确认</view>
<view tt:if="{{ item.status == '-1' }}" class="notice confirm">未预约</view>
<view tt:if="{{ item.status == 8 }}" class="notice complete">已完成</view> <view tt:if="{{ item.status == 8 }}" class="notice complete">已完成</view>
<view tt:if="{{ item.status == 9 }}" class="notice complete">已评价</view> <view tt:if="{{ item.status == 9 }}" class="notice complete">已评价</view>
</view> </view>
<view class="body"> <view class="body">
<view class="items">商品名称:{{ item.couponTitle }}</view> <view class="items">商品名称:{{ item.couponTitle }}</view>
<view class="items">用户手机号码:{{ item.userPhone }}</view> <view class="items">用户手机号码:{{ item.userPhone }}</view>
<view class="items">服务预约时间:</view>
<view class="items">{{ item.appointTime }}</view>
<view class="items">服务预约时间:<text tt:if="{{ item.appointTime == '暂无' }}">暂无</text></view>
<view tt:if="{{ item.appointTime != '暂无' }}" class="items">{{ item.appointTime }}</view>
</view> </view>
<view class="footer"> <view class="footer">
<button type="primary" bindtap="goDetail" data-id="{{ item.id }}">详情</button> <button type="primary" bindtap="goDetail" data-id="{{ item.id }}">详情</button>


+ 4
- 3
pages/Appointment/appointment.ttss Parādīt failu

@@ -54,13 +54,14 @@


.pickedTime { .pickedTime {
position: relative; position: relative;
bottom: 480rpx;
bottom: 590rpx;
text-align: center; text-align: center;
} }


.pickedTime .picker { .pickedTime .picker {
display: inline-block; display: inline-block;
background-color: #529ffd86; background-color: #529ffd86;
font-size: 30rpx;
padding: 10rpx; padding: 10rpx;
border-radius: 10rpx; border-radius: 10rpx;
color: #ffffff; color: #ffffff;
@@ -70,14 +71,14 @@
display: inline-block; display: inline-block;
width: 120rpx; width: 120rpx;
height: 60rpx; height: 60rpx;
line-height: 60rpx;
line-height: 50rpx;
padding: 5rpx; padding: 5rpx;
margin-left: 40rpx; margin-left: 40rpx;
} }


.list { .list {
position: relative; position: relative;
bottom: 480rpx;
bottom: 590rpx;
margin-top: 20rpx; margin-top: 20rpx;
z-index: -1; z-index: -1;
} }


+ 145
- 4
pages/appointDetail/appointDetail.js Parādīt failu

@@ -8,7 +8,15 @@ var app = getApp()
Page({ Page({
data: { data: {
id: "", id: "",
detail: null
detail: null,
isShowBtns: true,
isSetTime: false,
isSetAddress: false,
pickedDate: "请选择日期",
pickedStartTime: "请选择",
pickedEndTime: "请选择",
startTime: "",
endTime: ""
}, },


onLoad(options) { onLoad(options) {
@@ -34,9 +42,17 @@ Page({
console.log(res, 'res'); console.log(res, 'res');
const appointStart = util.timestampToTime(res.data.startDate, 'YYYY-MM-DD hh:mm:ss') const appointStart = util.timestampToTime(res.data.startDate, 'YYYY-MM-DD hh:mm:ss')
const appointEnd = util.timestampToTime(res.data.endDate, 'hh:mm:ss') const appointEnd = util.timestampToTime(res.data.endDate, 'hh:mm:ss')
res.data.appointTime = appointStart + ' - ' + appointEnd

if (res.data.startDate && res.data.endDate) {
res.data.appointTime = appointStart + ' - ' + appointEnd
} else {
res.data.appointTime = "暂无";
}
that.setData({ that.setData({
detail: res.data
detail: res.data,
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') || '请选择',
}) })
}).catch(err => { }).catch(err => {
console.log(err, 'err'); console.log(err, 'err');
@@ -47,11 +63,32 @@ Page({
tt.navigateBack(); tt.navigateBack();
}, },


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
})
},

cancel() { cancel() {
const that = this const that = this
tt.showModal({ tt.showModal({
title: "提示", title: "提示",
content: "是否与用户取得联系并取消预约?",
content: "是否与用户取得联系并取消确认?",
showCancel: true, showCancel: true,
confirmText: "确认取消", confirmText: "确认取消",
confirmColor: "#52a0fd", confirmColor: "#52a0fd",
@@ -87,6 +124,87 @@ Page({
}); });
}, },


setDate() {
const isSetTime = !this.data.isSetTime
this.setData({
isSetTime,
isSetAddress: false
})
},

confirmDate() {
const isSetTime = !this.data.isSetTime
this.setData({
isSetTime,
isSetAddress: false
})
if (!isSetTime) {
const tempData = this.data

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 = {
id: this.data.detail.id,
couponOrderId: this.data.detail.couponOrderId,
startDate: tempData.pickedDate + " " + tempData.pickedStartTime + ":00",
endDate: tempData.pickedDate + " " + tempData.pickedEndTime + ":00"
}
this.goSetDate(data)
console.log(data, 'data');
}
},

setAddress() {
const isSetAddress = !this.data.isSetAddress
this.setData({
isSetAddress,
isSetTime: false
})
},

settingAddress(e) {
const detail = this.data.detail
detail.detailedAddress = e.detail.value
this.setData({
detail
})
},

confirmAddress() {
const isSetAddress = !this.data.isSetAddress
this.setData({
isSetAddress,
isSetTime: false
})
const data = {
id: this.data.detail.id,
couponOrderId: this.data.detail.couponOrderId,
detailedAddress: this.data.detail.detailedAddress,
}
this.goSetDate(data)
},

goChange(id, status) { goChange(id, status) {
const data = { const data = {
id, id,
@@ -113,5 +231,28 @@ Page({
icon: "none" icon: "none"
}); });
}) })
},

goSetDate(data) {
const that = this
HttpBasics.post({
url: config.api.appointSetDate,
data
})
.then(res => {
console.log(res, 'res');
tt.showToast({
title: '修改成功!',
icon: "success",
duration: 2000
});
that.getDetail(that.data.id)
}).catch(err => {
console.log(err, 'err');
tt.showToast({
title: err.message,
icon: "none"
});
})
} }
}) })

+ 41
- 7
pages/appointDetail/appointDetail.ttml Parādīt failu

@@ -1,20 +1,54 @@
<!-- c:\Users\Holy-Knight-IX\Desktop\Working Space\4.TikTok-MiniPro\ttb\pages\appointDetail\appointDetail.ttml --> <!-- c:\Users\Holy-Knight-IX\Desktop\Working Space\4.TikTok-MiniPro\ttb\pages\appointDetail\appointDetail.ttml -->
<view> <view>
<view class="card"> <view class="card">
<view class="item">订单编号:{{ detail.couponOrderId }}</view>
<view class="item">券码:{{ detail.couponOrderId }}</view>
<view class="item">商品名称:{{ detail.couponTitle }}</view> <view class="item">商品名称:{{ detail.couponTitle }}</view>
<view class="item">服务预约时间:{{ detail.appointTime }}</view>
<view class="item">服务预约时间:{{ detail.appointTime }}<span
tt:if="{{ detail.status == 0 || detail.status == 5 || detail.status == '-1' }}" class="edit"
bindtap="setDate">修改</span></view>
<view class="item">服务预约地址:<text class="lineHeight">{{ detail.userAddress }}</text></view> <view class="item">服务预约地址:<text class="lineHeight">{{ detail.userAddress }}</text></view>
<view class="item">服务详细地址:<text class="lineHeight">{{ detail.detailedAddress }}</text></view>
<view class="item">服务详细地址:<text class="lineHeight">{{ detail.detailedAddress }}</text><span
tt:if="{{ detail.status == 0 || detail.status == 5 || detail.status == '-1' }}" class="edit"
bindtap="setAddress">修改</span></view>
<view class="item">用户手机号码:{{ detail.userPhone }}</view> <view class="item">用户手机号码:{{ detail.userPhone }}</view>
<view class="item">备注:{{ detail.describeStr }}</view> <view class="item">备注:{{ detail.describeStr }}</view>
</view> </view>
<view class="btns">
<button class="back" bindtap="back">返回</button>

<view tt:if="{{ isSetTime }}">
<view class="datePickerFlex">
<picker mode="date" start="{{ startTime }}" end="{{ endTime }}" disabled="{{ !isShowBtns }}"
bindchange='chooseDate'>选择服务日期:</picker>
<picker mode="date" start="{{ startTime }}" end="{{ endTime }}" disabled="{{ !isShowBtns }}"
bindchange='chooseDate' class="address">
{{ pickedDate }}</picker>
</view>

<view class="datePickerFlex">
<picker mode="time" disabled="{{ !isShowBtns }}" bindchange='chooseTime'>预计上门时间:</picker>
<picker mode="time" disabled="{{ !isShowBtns }}" bindchange='chooseStartTime' class="address">{{
pickedStartTime
}}</picker>
-
<picker mode="time" start="{{ pickedStartTime }}" disabled="{{ !isShowBtns }}" bindchange='chooseEndTime'
class="address">{{ pickedEndTime }}
</picker>
</view>
</view>

<view tt:if="{{ isSetAddress }}">
<textarea class="detailedAddress" placeholder="请输入服务详细地址" bindinput="settingAddress"
value="{{ detail.detailedAddress }}"></textarea>
</view>

<view class="{{ (isSetTime || isSetAddress) ? 'btns' : 'btns active' }}">
<block tt:if="{{ detail.status != 8 }}"> <block tt:if="{{ detail.status != 8 }}">
<button tt:if="{{ isSetTime }}" class="confirm" bindtap="confirmDate">确定预约时间</button>

<button tt:if="{{ isSetAddress }}" class="confirm" bindtap="confirmAddress">确定详细地址</button>

<button tt:if="{{ detail.status == 0 }}" class="confirm" bindtap="confirm">确认预约</button> <button tt:if="{{ detail.status == 0 }}" class="confirm" bindtap="confirm">确认预约</button>
<!-- <button tt:if="{{ detail.status == 0 }}" class="confirm" bindtap="confirm">修改预约时间</button> -->
<button tt:if="{{ detail.status == 5 }}" class="confirm" bindtap="cancel">取消预约</button>
<button tt:if="{{ detail.status == 5 }}" class="confirm" bindtap="cancel">取消确认</button>
</block> </block>
</view> </view>
</view> </view>

+ 46
- 4
pages/appointDetail/appointDetail.ttss Parādīt failu

@@ -17,13 +17,17 @@
} }


.btns { .btns {
position: fixed;
width: 95%; width: 95%;
left: 50%;
bottom: 130rpx;
transform: translateX(-50%);
padding: 0 80rpx; padding: 0 80rpx;
box-sizing: border-box; box-sizing: border-box;
margin: auto;
}

.btns.active {
position: absolute;
left: 50%;
bottom: 110rpx;
transform: translateX(-50%);
} }


.btns .back { .btns .back {
@@ -33,4 +37,42 @@
.btns .confirm { .btns .confirm {
color: #ffffff; color: #ffffff;
background-color: #52a0fd; background-color: #52a0fd;
margin-top: 40rpx;
}

.datePickerFlex {
display: flex;
justify-content: space-between;
width: 85%;
background-color: #f4f5f6;
border-radius: 20rpx;
padding: 30rpx;
margin: 35rpx auto;
}

.address {
color: #8a8a8a;
}

.edit {
display: inline-block;
width: 70rpx;
height: 40rpx;
line-height: 40rpx;
font-size: 30rpx;
color: #ffffff;
text-align: center;
background-color: #c85963;
border-radius: 10rpx;
padding: 2rpx 5rpx;
margin-left: 20rpx;
}

.detailedAddress {
width: 95%;
padding: 20rpx;
border-radius: 15rpx;
box-sizing: border-box;
border: 1px solid #00000063;
margin: 0 auto;
} }

Notiek ielāde…
Atcelt
Saglabāt