新增, 修改地址

This commit is contained in:
Kiyan 2017-05-09 17:34:21 +08:00
parent 6c2f94b236
commit 404d571561
11 changed files with 429 additions and 134 deletions

View File

@ -1,5 +1,8 @@
{ {
"pages": [ "pages": [
"pages/address/list",
"pages/address/add",
"pages/address/select",
"pages/mine/mine", "pages/mine/mine",
"pages/login/login", "pages/login/login",
"pages/index/index", "pages/index/index",
@ -8,9 +11,6 @@
"pages/order/show", "pages/order/show",
"pages/order/quasi", "pages/order/quasi",
"pages/order/list", "pages/order/list",
"pages/address/list",
"pages/address/add",
"pages/address/select",
"pages/shop/category", "pages/shop/category",
"pages/shop/search" "pages/shop/search"
], ],

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 768 B

View File

@ -1,8 +1,25 @@
// pages/address/add.js // pages/address/add.js
import WxValidate from '../../utils/WxValidate'
import {
addUserAddr, getUserAddr
} from '../../utils/apis'
import {
alert, getCurrentAddress,
getPrevPage
} from '../../utils/util'
Page({ Page({
data:{}, data: {
},
onLoad: function (options) { onLoad: function (options) {
// 页面初始化 options为页面跳转所带来的参数 // 页面初始化 options为页面跳转所带来的参数
this.id = options.id || 194
this.callback = options.callback
this.initValidate()
if (this.id) {
this.loadData()
} else {
this.initAddress()
}
}, },
onReady: function () { onReady: function () {
// 页面渲染完成 // 页面渲染完成
@ -15,5 +32,98 @@ Page({
}, },
onUnload: function () { onUnload: function () {
// 页面关闭 // 页面关闭
},
initValidate() {
this.validate = new WxValidate({
receiver: {
required: true,
},
phone: {
required: true,
tel: true,
},
}, {
receiver: {
required: '请输入您的姓名'
},
phone: {
required: '请输入手机号',
tel: '请输入有效手机号码'
},
})
},
initAddress() {
var that = this
getCurrentAddress(address => {
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
})
}
})
},
})

View File

@ -1,12 +1,12 @@
<!--pages/address/add.wxml--> <!--pages/address/add.wxml-->
<form catchsubmit="formSubmit">
<view class="weui-cells"> <view class="weui-cells">
<view class="weui-cell weui-cell_input"> <view class="weui-cell weui-cell_input">
<view class="weui-cell__hd"> <view class="weui-cell__hd">
<view class="weui-label">联系人</view> <view class="weui-label">联系人</view>
</view> </view>
<view class="weui-cell__bd"> <view class="weui-cell__bd">
<input class="weui-input" placeholder="您的姓名" /> <input value="{{receiver}}" name="receiver" class="weui-input" placeholder="您的姓名" />
</view> </view>
</view> </view>
<view class="weui-cell weui-cell_input"> <view class="weui-cell weui-cell_input">
@ -14,7 +14,7 @@
<view class="weui-label">手机号</view> <view class="weui-label">手机号</view>
</view> </view>
<view class="weui-cell__bd"> <view class="weui-cell__bd">
<input class="weui-input" placeholder="配送人员联系您的电话" /> <input value="{{phone}}" name="phone" type="digit" maxlength="11" class="weui-input" placeholder="配送人员联系您的电话" />
</view> </view>
</view> </view>
<view class="weui-cell weui-cell_access"> <view class="weui-cell weui-cell_access">
@ -22,7 +22,7 @@
<view class="weui-label">收货地址</view> <view class="weui-label">收货地址</view>
</view> </view>
<view class="weui-cell__bd weui-cell__ft_in-access"> <view class="weui-cell__bd weui-cell__ft_in-access">
松散 {{address.title}}
</view> </view>
</view> </view>
<view class="weui-cell weui-cell_input"> <view class="weui-cell weui-cell_input">
@ -30,12 +30,13 @@
<view class="weui-label">门牌号</view> <view class="weui-label">门牌号</view>
</view> </view>
<view class="weui-cell__bd"> <view class="weui-cell__bd">
<input class="weui-input" placeholder="请输入门牌号等详细信息" /> <input name="detail" value="{{detail}}" class="weui-input" placeholder="请输入门牌号等详细信息" />
</view> </view>
</view> </view>
</view> </view>
<view class="button-sp-area"> <view class="button-sp-area">
<button class="weui-btn" type="primary"> <button class="weui-btn" type="primary" loading="{{loading}}" formType="submit">
保存 保存
</button> </button>
</view> </view>
</form>

View File

@ -1,44 +1,17 @@
// pages/address/list.js // pages/address/list.js
import {
getUserAddrs, deleteUserAddr
} from '../../utils/apis'
import {
confirm
} from '../../utils/util'
Page({ Page({
data: { 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) { onLoad: function (options) {
// 页面初始化 options为页面跳转所带来的参数 // 页面初始化 options为页面跳转所带来的参数
this.loadData()
}, },
onReady: function () { onReady: function () {
// 页面渲染完成 // 页面渲染完成
@ -51,5 +24,58 @@ Page({
}, },
onUnload: function () { 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()
}
})
}
})
} }
}) })

View File

@ -1,3 +1,4 @@
{ {
"navigationBarTitleText": "我的地址" "navigationBarTitleText": "我的地址",
"enablePullDownRefresh": true
} }

View File

@ -9,18 +9,22 @@
{{item.receiver}} {{item.phone}} {{item.receiver}} {{item.phone}}
</view> </view>
<view class="grey-color"> <view class="grey-color">
{{item.addr}} {{item.addr}} {{item.detail}}
</view> </view>
<navigator url="/pages/address/add?id={{item.addr_id}}" class="address__item-edit"> <view class="address-actions">
<image <navigator url="/pages/address/add?id={{item.addr_id}}&callback=callback" class="address-actions__item">
class="address__item-edit-img" <image class="address-actions__item-img" src="/images/address_edit_white.png">
src="/images/address_edit_white.png">
</image> </image>
</navigator> </navigator>
<view id="{{index}}" bindtap="onDelete" class="address-actions__item">
<image class="address-actions__item-img" src="/images/delete@2x.png">
</image>
</view>
</view>
</view> </view>
</view> </view>
</view> </view>
<navigator class="address-add-btn" url="/pages/address/add"> <navigator class="address-add-btn" url="/pages/address/add?callback=callback">
新增地址 新增地址
</navigator> </navigator>

View File

@ -1,4 +1,5 @@
/* pages/address/select.wxss */ /* pages/address/select.wxss */
page { page {
padding-bottom: 50px; padding-bottom: 50px;
} }
@ -52,3 +53,20 @@ page {
color: #fff; color: #fff;
background-color: #ff5801; 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;
}

View File

@ -88,19 +88,14 @@ Page({
if(loading) { if(loading) {
return; return;
} }
if (!this.validate.checkForm(e)) {
const error = this.validate.errorList[0]
return alert(error.msg)
}
this.setData({ this.setData({
loading: true 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 var {phone, code} = e.detail.value
login({ login({
phone, code, phone, code,

View File

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

View File

@ -202,10 +202,11 @@ export function alert(content, callback) {
} }
// 确认框 // 确认框
export function confirm(options) { export function confirm(options) {
const { var {
content, confirmText, content, confirmText,
ok, ok,
} = options } = options
confirmText = confirmText || '确定'
wx.showModal({ wx.showModal({
content, content,
confirmText, confirmText,