加载中…

快递/收货地址管理

# 前言 本教程是基于 “apifm-wxapi” 模块,教你快速实现小程序开发,所以你可能需要先了解以下知识点: [《创建 HelloWorld 项目》](https://www.yuque.com/apifm/doc/hezlrm) [《使用 “apifm-wxapi” 快速开发小程序》](https://www.yuque.com/apifm/doc/mdldsd) [《免费注册开通后台,获得专属域名》](https://www.yuque.com/apifm/doc/qr6l4m) 本案例中,部分功能,需要用户登录后才能操作,也就是说需要 token 授权,请先了解: [《微信小程序登录获取openid及三方token》](https://www.yuque.com/apifm/doc/kaygbw) # 功能介绍 商城类小程序开发必备模块,可让用户填写并管理自己的多个收货地址,方便在下单的时候直接选择某个地址作为订单的配送地址 # 启用模块 登录 “第一步” 注册的后台,左侧菜单 --> 工厂设置 --> 模块管理 找到并启用下述模块: 收货地址管理 开后该模块后,你将可以在后台管理用户的收货地址: ![](https://dcdn.it120.cc/yuque/0/2019/png/572726/1572849327247-cd6b87c0-93d3-4420-9d97-df4ed132230c.png) # apifm-wxapi 方法说明 ### 获取所有的收货地址 ```javascript WXAPI.queryAddress(token) ``` ### 添加收货地址 ```javascript WXAPI.addAddress(Object object) ``` > 你也可以结合小程序自带的读取收货地址接口,实现快速添加收货地址功能 > ### 更新收货地址 ```javascript WXAPI.updateAddress(Object object) ``` ### 获取默认的地址 ```javascript WXAPI.defaultAddress(token) ``` ### 读取地址详细 ```javascript WXAPI.addressDetail(token, id) ``` ### 删除收货地址 ```javascript WXAPI.deleteAddress(token, id) ``` # 小程序开发 ## 效果截图 ![](https://dcdn.it120.cc/yuque/0/2019/png/572726/1572849327249-306ed52c-bb13-41a6-ac21-591e63d51d3c.png) ![](https://dcdn.it120.cc/yuque/0/2019/png/572726/1572849327257-41296d31-94a1-4797-a0d8-d7bb60293f42.png) ## 小程序代码 ### 收货地址管理 ```javascript {{ item.linkMan }} {{ item.mobile }} {{ item.provinceStr }}{{ item.cityStr }}{{ item.areaStr }}{{ item.address }} ``` ```javascript const WXAPI = require('apifm-wxapi') Page({ data: { addressList: undefined }, onLoad: function (options) { }, onShow: function () { const loginToken = wx.getStorageSync('loginToken') if (!loginToken) { wx.showToast({ title: '请先登录', icon: 'none' }) this.goRegist() return } WXAPI.queryAddress(loginToken.token).then(res => { console.log(res) if(res.code == 0){ this.setData({ addressList: res.data }) } }) }, goRegist() { wx.navigateTo({ url: '/pages/auth/index' }) }, addAddress() { wx.navigateTo({ url: '/pages/shipping-address/add' }) }, addressDetail(e){ const id = e.currentTarget.dataset.id const loginToken = wx.getStorageSync('loginToken') WXAPI.addressDetail(loginToken.token, id).then(res => { console.log(res) if (res.code == 0) { wx.showToast({ title: '查看控制台', icon: 'success' }) } else { wx.showToast({ title: res.msg, icon: 'none' }) } }) }, deleteAddress(e){ const id = e.currentTarget.dataset.id const loginToken = wx.getStorageSync('loginToken') WXAPI.deleteAddress(loginToken.token, id).then(res => { if (res.code == 0) { wx.showToast({ title: '删除成功', icon: 'success' }) this.onShow() } else { wx.showToast({ title: res.msg, icon: 'none' }) } }) }, defaultAddress(){ const loginToken = wx.getStorageSync('loginToken') WXAPI.defaultAddress(loginToken.token).then(res => { console.log(res) if (res.code == 0) { wx.showToast({ title: '查看控制台', icon: 'success' }) } else { wx.showToast({ title: res.msg, icon: 'none' }) } }) }, updateAddress(e){ const id = e.currentTarget.dataset.id wx.showToast({ title: '交给你啦~', icon: 'none' }) }, }) ``` ### 添加收货地址 ```javascript
选择 省份 {{provinces[pIndex].name}} 城市 {{cities[cIndex].name}} 区县 {{areas[aIndex].name}} 联系人 详细地址 手机号码 邮编
``` ```javascript const WXAPI = require('apifm-wxapi') Page({ data: { provinces: undefined,// 省份数据数组 pIndex: 0,//选择的省下标 cities: undefined,// 城市数据数组 cIndex: 0,//选择的市下标 areas: undefined,// 区县数数组 aIndex: 0,//选择的区下标 btnName: '添加收货地址', }, onLoad: function (options) { WXAPI.province().then(res => { if (res.code == 0) { this.setData({ provinces: res.data, }) } }) }, provinceChange(e) { const index = e.detail.value this.setData({ pIndex: index }) const pid = this.data.provinces[index].id WXAPI.nextRegion(pid).then(res => { console.log(res) if (res.code == 0) { this.setData({ cities: res.data }) } }) }, cityChange(e) { const index = e.detail.value this.setData({ cIndex: index }) const pid = this.data.cities[index].id WXAPI.nextRegion(pid).then(res => { console.log(res) if (res.code == 0) { this.setData({ areas: res.data }) } }) }, areaChange(e) { const index = e.detail.value this.setData({ aIndex: index }) const pid = this.data.areas[index].id WXAPI.nextRegion(pid).then(res => { console.log(res) if (res.code == 0) { this.setData({ streets: res.data }) } }) }, goRegist() { wx.navigateTo({ url: '/pages/auth/index' }) }, bindSave(e) { const loginToken = wx.getStorageSync('loginToken') if (!loginToken) { wx.showToast({ title: '请先登录', icon: 'none' }) this.goRegist() return } if (!this.data.cities) { wx.showToast({ title: '请选择城市', icon: 'none' }) return } WXAPI.addAddress({ token: loginToken.token, provinceId: this.data.provinces[this.data.pIndex].id, cityId: this.data.cities[this.data.cIndex].id, districtId: this.data.areas ? this.data.areas[this.data.aIndex].id : '', linkMan: e.detail.value.linkMan, address: e.detail.value.address, mobile: e.detail.value.mobile, code: e.detail.value.code, }).then(res => { console.log(res) if (res.code == 0) { wx.showToast({ title: '添加成功', icon: 'success' }) wx.navigateBack() } else { wx.showToast({ title: res.msg, icon: 'none' }) } }) }, }) ``` **关于更加详细的参数使用,以及更加高级的进阶使用方法,可以参考api接口文档说明:** [《api接口文档》](https://api.it120.cc/doc.html) _关于  apifm-wxapi 更多的使用方法:_ [《apifm-wxapi使用说明》](https://github.com/gooking/apifm-wxapi/blob/master/instructions.md) _本案例Demo代码下载:_ [《apifm-wxapi使用Demo程序》](https://github.com/gooking/apifm-wxapi-demo) 期待你的进步! 感谢!