开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情
之前总结过两篇微信小程序项目的简单功能,本来是没什么功能可总结的了,但是该微信小程序项目在客户体验之后,要求添加了新功能,因此继续总结下。
1. 修改下单的座位信息(主要的功能点是处理数据)
这里的功能点先简单说明下:用户选择好座位下单成功之后,后面可能会需要修改座位,日期等信息。因此在订单页面点击“改签”按钮,跳转到修改页面,点击页面上每个座位信息,可以跳转去重新选座,选好之后回到该页面,选好的座位就会替换之前的座位信息。
a. 在修改页面,根据跳转页面传递的参数订单id去请求订单数据,然后展示到页面。点击每个座位时(因为需要跳转到主页修改座位,使用wx.switchTab跳转,不能携带参数,所以使用wx.setStorageSync把需要的数据存储起来),存储订单数据,当前座位id,然后跳转去选座。
b. 在主页选好座位之后,点击“确认修改”按钮,就会回到修改页面,同时把需要展示座位相关的信息当作参数传递到该页面。在修改页面根据参数座位id请求到后台返回的座位信息,再根据存储起来的订单数据中的座位id和点击修改座位id对比,在相同的情况下,使用新的座位数据替换订单数据中的点击修改的座位信息,再改变data中的订单数据变量。
if (options.id && options.isChangeInfo && isBuy) {
let detailItemId = wx.getStorageSync('detailItemId')
let orderData = wx.getStorageSync('orderData');
$api.orderConfirm({
scheduled_time_type: data.scheduled_time_type,
seat_id: data.seat_id
})
.then(res => {
this.setData({
seatLists: res.data.seat_list,
})
orderData.detail.forEach(item => {
let list = item.detail.map(it => {
let newList = this.data.seatLists[0]
if (it.id === detailItemId) {
newList['id'] = data.seat_id
newList['before_id'] = detailItemId
}
return it.id === detailItemId ? newList : it;
});
item.detail = list
})
this.setData({
orderData,
})
})
.catch(err => {
if (err.code == 202) {
wx.showToast({
icon: 'none',
title: err.msg
})
}
})
}
注:感觉代码逻辑还是挺混乱的,一开始写的时候,完全没有头绪,不知道怎么处理从后台得到的数据,并整合需要的新数据,变成页面上最终展示的数据
2. 导航功能
导航按钮绑定点击事件,使用wx.getLocationAPI获取当前的地理位置、速度(需要在微信公众号平台「开发」-「开发管理」-「接口设置」中开通该接口权限),再在成功回调函数中使用wx.openLocationAPI调起微信内置地图查看位置,实现导航
//导航
toMap() {
const lat = this.data.latitude;
const lon = this.data.longitude;
const address = '地址';
wx.getLocation({
type: 'gcj02', //返回可以用于wx.openLocation的经纬度
success() {
wx.openLocation({
type: 'gcj02',
latitude: lat,
longitude: lon,
name: address,
scale: 28
})
},
fail: e => {
console.log(e);
// 判断用户是否拒绝了授权
···
}
})
},