From 404d571561fb07296ca96bbd6e5cee606befc356 Mon Sep 17 00:00:00 2001 From: Kiyan Date: Tue, 9 May 2017 17:34:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E,=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/app.json | 6 +- app/images/takeout_ic_address.png | Bin 1788 -> 768 bytes app/pages/address/add.js | 126 ++++++++++++++++++++++++-- app/pages/address/add.wxml | 73 ++++++++-------- app/pages/address/list.js | 94 +++++++++++++------- app/pages/address/list.json | 3 +- app/pages/address/list.wxml | 24 ++--- app/pages/address/select.wxss | 80 ++++++++++------- app/pages/login/login.js | 13 +-- app/utils/apis.js | 141 +++++++++++++++++++++++++++++- app/utils/util.js | 3 +- 11 files changed, 429 insertions(+), 134 deletions(-) diff --git a/app/app.json b/app/app.json index e595f3a..2be788e 100644 --- a/app/app.json +++ b/app/app.json @@ -1,5 +1,8 @@ { "pages": [ + "pages/address/list", + "pages/address/add", + "pages/address/select", "pages/mine/mine", "pages/login/login", "pages/index/index", @@ -8,9 +11,6 @@ "pages/order/show", "pages/order/quasi", "pages/order/list", - "pages/address/list", - "pages/address/add", - "pages/address/select", "pages/shop/category", "pages/shop/search" ], diff --git a/app/images/takeout_ic_address.png b/app/images/takeout_ic_address.png index 5c7319f09cd7e6f19a085ff11fa1caa0e742ad95..2e2204ebc486850043fb9559a257e7041cb036d3 100644 GIT binary patch literal 768 zcmV+b1ONPqP)C9+%!AL10t|URhu80JMSzPz!RTmY=m! zWAxHnmnsMhir}Xepe4r7ShNC(M=?5HxJ!1{8y9X`cvq zbka*aH+uzvFb`g{u{*+e8E6M%Ty|juv`H(T{EazXV?i;CDD^ugB z53;^r3t~3a8HYg|Yqvc%XCJlgj@oI~I<+9rD5`fDjIh?^5u}mYF-NVQwWnH;35u#6 z2IgSPdj!du$JJ4*W^F8L(BpfR^-EfijT8+lr|RqjO%B1uU}w1ljUJ=atSfiKn@9LW zgwa7TsT}c>N{I8+4Eelk3KTzAmfyVeUV`7?o9Mv><)ya>yrK7QpCI$WBQ|t}8jj(0 zou2pO%p>c;A2#j?5W=kT53nZggm#h5FTj!%Ay$A7+P*6nM4pC+H0VtjLdJuBdfb(t zJ?ZeglCwkPv{t6S*P6o3)Wun*Eb9_H>j17azoH7Ckzi; zVS1Ds;Vo*u%W7tI_ieGp0r|q*tas5pGi!itnO(y9h1;zG>M=OL)iPI*w_t6i{|&Ih ythU}sHvO(QZe~HObLJFy&s8|0ofDY_3C(|ft`vN|y`0$q0000{~hj literal 1788 zcmaJ?X;c$u6pgZoXt1SfDN-^7l|_=tWC0QqWr=|(p%_vOsKAg65Fwc{GmuE7vWenR zsB(%xL9NxQP?jpTs8klAC|Yt9uz((m8(O=7sI`h>Cn(wbMD*d)O>{t`7SUJp zWGopLgd}M~()CD0dYD3$o~+`l>C2V^LZg5b&>{p37_})nTwoN@Cv*km+`J9afe8qa zETX?MrIdvOL8u-9cuXEc#e%qi51$F~Ag(Xu1+ZBV2V`+Th{J%`0v2BY@qpJ4os6be zCkW(X$?I6;N<>d02uuKi27`fV;4o2rA_(#Me2~Qk*=z=hVBi~d1Z-sJaMwu%F@me~ z8jR4OI>4+5$D^r)h)z0vm4X&~Bdfz-mx(MGXoN8kVzSIBO#)@I|A%U|Z_qd)N8bAV zPhniK5ko*Zf}^Q=6?t$8uI5mfAV`nE1gck{Xv$<2!;??~#gkAB2nqt+S8H@?)PQ?T zz-2OlREHC=PK8LtB04F+)M(TK35OFT;j_It5RVT*%Y6b_eDA;jj)cQyLwpI_XOb&M zRjFD;M@(|nZ@E5Ga?PEf#mLBFM6XFh)Dk_a1tu~UXr}hUol@^LS3R{C-jrOBGy|H? z^axkWaQdHSYn$;F$#M|5Pf>&dQu**edHyeu1};sAwlpu9LENd`N0m}*uA#$1uO zqF0y2tm&uyKBqIcF(ogw|L?OU%%MYddDTg|dG+4?<9)3?qhYHZlHH3#?H_tya4aj` z13MP~HrD;*N;hsgdH32_)klZ%y?39Vxhpgc-^m|&x+zZ?r8)X;TYA`SBjDO7T7)>bpRl8C^HKKKa)9K_?5T zugs-);Hi$0fn1&0k?k}xPn|udQ@QZS&GAE6P2Fdo#2z|W(qiD0>iFf!o$46D zS+w(>94@xtBJ5ASt-pRlX?6FRY?ISL)1n@mcZwISwLRsatgOBfd)@M=*Zig^_nOgu zYS)9L;mFI0jvW@ciCLD|hm8??gR`m!-+NMZmR{K%<*U}!v;Qil3GzP%{f+e6$Ag8V zn{2uR<%f77-0vR@BT+M!m`?v1k&<1C)!Xl?e5_c1tRgkKXRG%ex9Pbrqs6Cwi7K~% zH;>%wt@No~m(aSiv7k3*J<`)APYrc6ab^*4 zNzC1)x{20C(!VN!7(1R*ZX6$E`^mD0`eu##&u*|v%hAMHyAK|B=z6ezIBclo(S1&W z?B=xEQZL{^S { + that.setData({ + address + }) + }) + }, + loadData() { + var that = this + var addr_id = this.id + wx.showNavigationBarLoading() + getUserAddr({ + addr_id, + success(data) { + that.setData({ + receiver: data.receiver, + phone: data.phone, + detail: data.detail, + address: { + title: data.addr, + city: data.city_name, + district: data.district_name, + city_id: data.city_id, + district_id: data.district_id, + gps: `${data.longitude},${data.latitude}` + } + }) + wx.hideNavigationBarLoading() + }, + error() { + wx.hideNavigationBarLoading() + } + }) + }, + formSubmit(e) { + var that = this + var {loading, address} = this.data + if (loading) { + return + } + + if (!address) { + return alert('请选择收货地址') + } + + if (!this.validate.checkForm(e)) { + const error = this.validate.errorList[0] + return alert(error.msg) + } + this.setData({ + loading: true + }) + var { + receiver, phone, detail + } = e.detail.value + addUserAddr({ + receiver, phone, detail, + address, + addr_id: that.id, + success(data) { + that.setData({ + loading: false + }) + getPrevPage()[that.callback]() + wx.navigateBack() + }, + error() { + that.setData({ + loading: false + }) + } + }) + }, }) \ No newline at end of file diff --git a/app/pages/address/add.wxml b/app/pages/address/add.wxml index 5464296..fc6cec7 100644 --- a/app/pages/address/add.wxml +++ b/app/pages/address/add.wxml @@ -1,41 +1,42 @@ - - - - - 联系人 +
+ + + + 联系人 + + + + - - + + + 手机号 + + + + + + + + 收货地址 + + + {{address.title}} + + + + + 门牌号 + + + + - - - 手机号 - - - - + + - - - 收货地址 - - - 松散 - - - - - 门牌号 - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/pages/address/list.js b/app/pages/address/list.js index 751e00f..f9f696a 100644 --- a/app/pages/address/list.js +++ b/app/pages/address/list.js @@ -1,44 +1,17 @@ // pages/address/list.js +import { + getUserAddrs, deleteUserAddr +} from '../../utils/apis' +import { + confirm +} from '../../utils/util' Page({ data: { - list: [ - { - "addr_id": "170", - "user_id": "4", - "city_id": "330300", - "district_id": null, - "addr": "龙华大厦", - "detail": "", - "longitude": "120.69101", - "latitude": "28.002974", - "receiver": "test4", - "phone": "13000000005", - "create_time": "2017-02-20 10:38:11", - "delete": "0", - "district_name": "", - "city_name": "温州市" - }, - { - "addr_id": "160", - "user_id": "4", - "city_id": "330300", - "district_id": null, - "addr": "电商大厦", - "detail": "", - "longitude": "120.737561", - "latitude": "27.979617", - "receiver": "test4", - "phone": "13000000004", - "create_time": "2016-12-16 13:37:10", - "delete": "0", - "district_name": "", - "city_name": "温州市" - } - ] }, onLoad: function (options) { // 页面初始化 options为页面跳转所带来的参数 + this.loadData() }, onReady: function () { // 页面渲染完成 @@ -51,5 +24,58 @@ Page({ }, onUnload: function () { // 页面关闭 + }, + onPullDownRefresh(){ + this.loadData(function() { + wx.stopPullDownRefresh() + }) + }, + loadData(cb) { + var that = this + var {loading} = this.data + if(loading) { + return + } + this.setData({ + loading: true + }) + wx.showNavigationBarLoading() + getUserAddrs({ + success(data) { + that.setData({ + list: data, + loading: false + }) + wx.hideNavigationBarLoading() + cb && cb() + }, + error() { + that.setData({ + loading: false + }) + wx.hideNavigationBarLoading() + cb && cb() + } + }) + }, + callback() { + this.loadData() + }, + onDelete(e) { + var that = this + var {id} = e.currentTarget + var address = this.data.list[id] + confirm({ + content: `是否删除地址 ${address.addr} ${address.detail}`, + confirmText: '删除', + ok() { + deleteUserAddr({ + addr_id: address.addr_id, + success(data) { + that.loadData() + } + }) + } + }) } }) \ No newline at end of file diff --git a/app/pages/address/list.json b/app/pages/address/list.json index 0c66b5b..10007c1 100644 --- a/app/pages/address/list.json +++ b/app/pages/address/list.json @@ -1,3 +1,4 @@ { - "navigationBarTitleText": "我的地址" + "navigationBarTitleText": "我的地址", + "enablePullDownRefresh": true } \ No newline at end of file diff --git a/app/pages/address/list.wxml b/app/pages/address/list.wxml index 12db1ff..e59381f 100644 --- a/app/pages/address/list.wxml +++ b/app/pages/address/list.wxml @@ -9,18 +9,22 @@ {{item.receiver}} {{item.phone}}
- {{item.addr}} + {{item.addr}} {{item.detail}} + + + + + + + + + + - - - -
- - 新增地址 - + + 新增地址 + \ No newline at end of file diff --git a/app/pages/address/select.wxss b/app/pages/address/select.wxss index 82e6c4e..e8e926d 100644 --- a/app/pages/address/select.wxss +++ b/app/pages/address/select.wxss @@ -1,54 +1,72 @@ /* pages/address/select.wxss */ + page { - padding-bottom: 50px; + padding-bottom: 50px; } .address-select__hd { - padding: 5px 15px; - font-size: 14px; - color: #999; - border-bottom: 1rpx solid #e8e8e8; + padding: 5px 15px; + font-size: 14px; + color: #999; + border-bottom: 1rpx solid #e8e8e8; } .address__list { - background-color: #fff; + background-color: #fff; } .address__item { - position: relative; - padding: 10px 15px; - border-bottom: 1rpx solid #e8e8e8; + position: relative; + padding: 10px 15px; + border-bottom: 1rpx solid #e8e8e8; } .address__item-selected-img { - position: absolute; - top: 0; - left: 0; - width: 29px; - height: 28px; + position: absolute; + top: 0; + left: 0; + width: 29px; + height: 28px; } .address__item-edit { - position: absolute; - right: 15px; - top: 50%; - padding: 5px 10px; - transform: translateY(-50%); + position: absolute; + right: 15px; + top: 50%; + padding: 5px 10px; + transform: translateY(-50%); } .address__item-edit-img { - width: 20px; - height: 20px; + width: 20px; + height: 20px; } .address-add-btn { - position: fixed; - bottom: 0; - left: 0; - right: 0; - height: 50px; - line-height: 50px; - text-align: center; - color: #fff; - background-color: #ff5801; -} \ No newline at end of file + position: fixed; + bottom: 0; + left: 0; + right: 0; + height: 50px; + line-height: 50px; + text-align: center; + color: #fff; + background-color: #ff5801; +} + +.address-actions { + position: absolute; + right: 15px; + top: 50%; + transform: translateY(-50%); +} + +.address-actions__item { + display: inline-block; + padding: 5px 10px; +} + +.address-actions__item-img { + width: 20px; + height: 20px; +} diff --git a/app/pages/login/login.js b/app/pages/login/login.js index ffe93ce..696cefc 100644 --- a/app/pages/login/login.js +++ b/app/pages/login/login.js @@ -88,19 +88,14 @@ Page({ if(loading) { return; } - + if (!this.validate.checkForm(e)) { + const error = this.validate.errorList[0] + return alert(error.msg) + } this.setData({ loading: true }) - if (!this.validate.checkForm(e)) { - const error = this.validate.errorList[0] - that.setData({ - loading: false - }) - return alert(error.msg) - } - var {phone, code} = e.detail.value login({ phone, code, diff --git a/app/utils/apis.js b/app/utils/apis.js index 2f4491b..2c6560f 100644 --- a/app/utils/apis.js +++ b/app/utils/apis.js @@ -103,7 +103,7 @@ export function login(options) { // 退出账号 export function logout(options) { const { - phone, + phone, success, error } = options fetch({ @@ -138,3 +138,142 @@ export function getLoginInfo(options) { }) } +// 获取用户地址列表 +export function getUserAddrs(options) { + const { + success, error + } = options + + getApp().getLoginInfo(loginInfo => { + if (!loginInfo.user_info) { + return alert('用户未登录') + } + var {user_id, user_token} = loginInfo.user_info + fetch({ + url: 'index.php?m=Mall&c=User&a=getUserAddrs', + data: { + user_id, user_token + }, + success, error + }) + + }) +} +// 获取用户地址 +export function getUserAddr(options) { + const { + addr_id, + success, error + } = options + + getApp().getLoginInfo(loginInfo => { + if (!loginInfo.user_info) { + return alert('用户未登录') + } + var {user_id, user_token} = loginInfo.user_info + fetch({ + url: 'index.php?m=Mall&c=User&a=getUserAddr', + data: { + user_id, user_token, + addr_id + }, + success, error + }) + + }) +} + +// 新增用户地址 +export function addUserAddr(options) { + if(options.addr_id) { + return updateUserAddr(options) + } + const { + receiver, phone, detail, address, + success, error + } = options + getApp().getLoginInfo(loginInfo => { + if (!loginInfo.user_info) { + return alert('用户未登录') + } + var {user_id, user_token} = loginInfo.user_info + var gps = address.gps + if(!gps) { + var location = coordFormat(address.location) + gps = `${location.longitude},${location.latitude}` + } + fetch({ + url: 'index.php?m=Mall&c=User&a=addUserAddr', + data: { + user_id, user_token, + receiver, phone, detail, + gps, + addr: address.title, + city_id: address.city_id, + city_name: address.city, + district_id: address.district_id, + district_name: address.district, + }, + success, error + }) + + }) +} + +// 修改地址 +export function updateUserAddr(options) { + const { + receiver, phone, detail, address, + addr_id, + success, error + } = options + getApp().getLoginInfo(loginInfo => { + if (!loginInfo.user_info) { + return alert('用户未登录') + } + var {user_id, user_token} = loginInfo.user_info + var gps = address.gps + if(!gps) { + var location = coordFormat(address.location) + gps = `${location.longitude},${location.latitude}` + } + fetch({ + url: 'index.php?m=Mall&c=User&a=updateUserAddr', + data: { + user_id, user_token, + receiver, phone, detail, + gps, addr_id, + addr: address.title, + city_id: address.city_id, + city_name: address.city, + district_id: address.district_id, + district_name: address.district_name, + }, + success, error + }) + + }) +} + +// 删除地址 +export function deleteUserAddr(options) { + const { + addr_id, + success, error + } = options + getApp().getLoginInfo(loginInfo => { + if (!loginInfo.user_info) { + return alert('用户未登录') + } + var {user_id, user_token} = loginInfo.user_info + fetch({ + url: 'index.php?m=Mall&c=User&a=deleteUserAddr', + data: { + user_id, user_token, + addr_id + }, + success, error + }) + + }) +} \ No newline at end of file diff --git a/app/utils/util.js b/app/utils/util.js index 55d6cfe..21fa109 100644 --- a/app/utils/util.js +++ b/app/utils/util.js @@ -202,10 +202,11 @@ export function alert(content, callback) { } // 确认框 export function confirm(options) { - const { + var { content, confirmText, ok, } = options + confirmText = confirmText || '确定' wx.showModal({ content, confirmText,