Commit d2352ab7 authored by 程新智's avatar 程新智 👽

优化

parent df77d25a
......@@ -272,10 +272,11 @@ export default {
display: flex;
align-items: center;
justify-content: space-between;
overflow: hidden;
overflow-x: scroll;
.shop__item2 {
width: 25%;
width: 24%;
margin-right: 1%;
.item2__img {
margin-bottom: 20rpx;
text-align: center;
......
......@@ -17,7 +17,7 @@
<span v-if="addressInfo.defaultFlag">默认</span>
</div>
</div>
<div class="address__right" >
<div class="address__right">
<image src="@/static/index/right.png" />
</div>
<u-gap bgColor="transparent" height="15"></u-gap>
......@@ -28,8 +28,8 @@
<u-gap bgColor="transparent" height="15"></u-gap>
<div class="content__code">
<div class="code__img">
<image :src="freeCode.mainImgUrl" class="code__img"></image>
</div>
<image :src="freeCode.mainImgUrl" class="code__img"></image>
</div>
<div class="code__money">
<div class="money__title">
<text>{{freeCode.title}}</text>
......@@ -66,7 +66,7 @@
<text class="num__two">¥{{vo.originalPrice/100}}</text>
</div>
</div>
<u-number-box>
<view slot="minus" class="minus" @click="minusMall(vo)">
<u-icon name="minus" size="12"></u-icon>
......@@ -78,12 +78,12 @@
<u-icon name="plus" color="#FFFFFF" size="12"></u-icon>
</view>
</u-number-box>
<!-- <u-number-box v-model="mallSelectMap[vo.id]" :min="0" @change="selectMall">
<!-- <u-number-box v-model="mallSelectMap[vo.id]" :min="0" @change="selectMall">
</u-number-box> -->
<!-- <div class="list__add" @click="add">
<image src="@/static/index/get-car-code2.png" />
</div> -->
</div>
......@@ -113,7 +113,7 @@
export default {
data() {
return {
nums:0,
nums: 0,
show: false,
addressShow: false,
content: "地址不能为空",
......@@ -139,24 +139,24 @@ export default {
img: require('@/static/index/get-car-code1.png')
}
],
//收货地址列表
addressList: [],
//选择收货地址id
addressId: '',
//选择的收货地址
addressInfo: {},
//免费挪车码
freeCode: {},
//普通商品列表
mallList: [],
value: 0,
//
selectMallList: [],
//收货地址列表
addressList: [],
//选择收货地址id
addressId: '',
//选择的收货地址
addressInfo: {},
//免费挪车码
freeCode: {},
//普通商品列表
mallList: [],
value: 0,
//
selectMallList: [],
//选择商品的数量
countNum: 0,
countNum: 1,
//商品变更为零或者1
quantityChange: false,
countMoney: 0,
countMoney: 0,
mallMoney: 0,
mallSelectMap: {},
carNo: '',
......@@ -164,78 +164,87 @@ export default {
},
methods: {
pay() {
if(!this.addressId) {
uni.showToast({
title:'请添加一个收货地址',
icon:'none',
})
if (!this.addressId) {
uni.showToast({
title: '请添加一个收货地址',
icon: 'none',
})
} else {
let list = [{
id: this.freeCode.id,
nums: 1,
}]
let idMap = this.mallSelectMap
for(let id in idMap){
if(idMap[id] > 0){
let commodity = { id: id, nums: idMap[id] }
list.push(commodity)
let list = [{
id: this.freeCode.id,
nums: 1,
}]
let idMap = this.mallSelectMap
for (let id in idMap) {
if (idMap[id] > 0) {
let commodity = {
id: id,
nums: idMap[id]
}
list.push(commodity)
}
}
}
this.createOrder = {
addressId: this.addressId,
commodityList: list,
}
let that = this
let opts = { url: '/app/mall/create/order', method: 'post' };
this.http.httpTokenRequest(opts, this.createOrder).then(res => {
if (res.data.code == 200) {
let orderIds = res.data.data
if(orderIds && orderIds.length > 0) {
that.orderSubmit = {
appId: 6,
ids: orderIds,
channelCode: 'wx_lite',
}
let opts = { url: '/app/pay/order/submit/more', method: 'post' }
this.http.httpTokenRequest(opts, that.orderSubmit).then(res => {
if (res.data.code == 200) {
let paymentData = res.data.data.invokeResponse;
uni.requestPayment({
provider: 'wxpay', // 服务提提供商
timeStamp: paymentData.timeStamp,
nonceStr: paymentData.nonceStr,
package: paymentData.packageValue,
signType: paymentData.signType,
paySign: paymentData.paySign,
success: function (res) {
uni.navigateTo({
url: '/pagesC/pages/shop/payOk'
})
},
fail: function (err) {
//console.log('支付失败',err);
},
});
this.createOrder = {
addressId: this.addressId,
commodityList: list,
}
let that = this
let opts = {
url: '/app/mall/create/order',
method: 'post'
};
this.http.httpTokenRequest(opts, this.createOrder).then(res => {
if (res.data.code == 200) {
let orderIds = res.data.data
if (orderIds && orderIds.length > 0) {
that.orderSubmit = {
appId: 6,
ids: orderIds,
channelCode: 'wx_lite',
}
let opts = {
url: '/app/pay/order/submit/more',
method: 'post'
}
this.http.httpTokenRequest(opts, that.orderSubmit).then(res => {
if (res.data.code == 200) {
let paymentData = res.data.data.invokeResponse;
uni.requestPayment({
provider: 'wxpay', // 服务提提供商
timeStamp: paymentData.timeStamp,
nonceStr: paymentData.nonceStr,
package: paymentData.packageValue,
signType: paymentData.signType,
paySign: paymentData.paySign,
success: function (res) {
uni.navigateTo({
url: '/pagesC/pages/shop/payOk'
})
},
fail: function (err) {
//console.log('支付失败',err);
},
});
} else {
}
})
} else {
uni.navigateTo({
url: '/pagesC/pages/shop/payOk'
})
}
})
} else {
uni.navigateTo({
url: '/pagesC/pages/shop/payOk'
})
}
} else {
uni.showToast({
title: res.data.msg,
icon:'none',
})
}
})
} else {
uni.showToast({
title: res.data.msg,
icon: 'none',
})
}
})
}
},
add(){
add() {
this.nums++
},
addAddress() {
......@@ -243,94 +252,105 @@ export default {
url: '/pagesD/pages/personal/addAddress'
});
},
getAddressList(){
let opts = { url: '/app/user/address/list', method: 'get' };
this.http.httpTokenRequest(opts, {}).then(res => {
if (res.data.code == 200) {
this.addressList = res.data.data
if(this.addressList !== undefined && this.addressList != null && this.addressList.length > 0){
let defaultFlagExist = false
this.addressList.forEach(element => {
if(this.addressId){
if(element.id == this.addressId){
this.addressInfo = element
this.addressShow = true
defaultFlagExist = true
}
}else if(element.defaultFlag){
this.addressInfo = element
this.addressId = element.id
this.addressShow = true
defaultFlagExist = true
}
});
if(!defaultFlagExist){
this.addressInfo = this.addressList[0]
this.addressShow = true
}
}
}
})
},
goAddress(){
uni.navigateTo({
url: '/pagesD/pages/personal/myAddress?pay=1'
})
},
getMoveCode(){
let opts = { url: '/app/mall/free/code', method: 'get' };
this.http.httpTokenRequest(opts, {}).then(res => {
if (res.data.code == 200) {
this.freeCode = res.data.data
}
})
},
getMallList(){
let opts = { url: '/app/mall/add/purchase', method: 'get' };
this.http.httpTokenRequest(opts, {}).then(res => {
if (res.data.code == 200) {
this.mallList = res.data.data
this.mallList.forEach(element=>{
getAddressList() {
let opts = {
url: '/app/user/address/list',
method: 'get'
};
this.http.httpTokenRequest(opts, {}).then(res => {
if (res.data.code == 200) {
this.addressList = res.data.data
if (this.addressList !== undefined && this.addressList != null && this.addressList.length > 0) {
let defaultFlagExist = false
this.addressList.forEach(element => {
if (this.addressId) {
if (element.id == this.addressId) {
this.addressInfo = element
this.addressShow = true
defaultFlagExist = true
}
} else if (element.defaultFlag) {
this.addressInfo = element
this.addressId = element.id
this.addressShow = true
defaultFlagExist = true
}
});
if (!defaultFlagExist) {
this.addressInfo = this.addressList[0]
this.addressShow = true
}
}
}
})
},
goAddress() {
uni.navigateTo({
url: '/pagesD/pages/personal/myAddress?pay=1'
})
},
getMoveCode() {
let opts = {
url: '/app/mall/free/code',
method: 'get'
};
this.http.httpTokenRequest(opts, {}).then(res => {
if (res.data.code == 200) {
this.freeCode = res.data.data
}
})
},
getMallList() {
let opts = {
url: '/app/mall/add/purchase',
method: 'get'
};
this.http.httpTokenRequest(opts, {}).then(res => {
if (res.data.code == 200) {
this.mallList = res.data.data
this.mallList.forEach(element => {
element.selectNum = 0
})
}
})
},
selectMoney(value){
}
})
},
selectMoney(value) {
this.mallMoney = value
},
selectMall(num){
selectMall(num) {
//当添加数量且数量为1就加总共商品数量
this.quantityChange = (num.value == 0 || num.value == 1)
},
plusMall(vo){
if(!this.mallSelectMap[vo.id] || this.mallSelectMap[vo.id] == 0){
this.countNum = this.countNum + 1
},
plusMall(vo) {
this.countNum = this.countNum + 1
if (!this.mallSelectMap[vo.id] || this.mallSelectMap[vo.id] == 0) {
this.mallSelectMap[vo.id] = 1
}else{
} else {
this.mallSelectMap[vo.id] += 1
}
this.countMoney += vo.currentPrice
//console.log(this.mallSelectMap)
},
minusMall(vo){
if(this.mallSelectMap[vo.id] && this.mallSelectMap[vo.id] > 0){
if(this.mallSelectMap[vo.id] == 1){
this.countNum -= 1
}
minusMall(vo) {
if (this.countNum == 0) {
return
}
this.countNum = this.countNum - 1
if (this.mallSelectMap[vo.id] && this.mallSelectMap[vo.id] > 0) {
if (this.mallSelectMap[vo.id] == 1) {}
this.mallSelectMap[vo.id] -= 1
this.countMoney -= vo.currentPrice
}
},
},
onShow() {
this.getAddressList()
this.getMoveCode()
this.getMallList()
},
onShow() {
this.getAddressList()
this.getMoveCode()
this.getMallList()
},
onLoad(option) {
this.carNo = option.carNo
this.carNo = option.carNo
},
};
</script>
......@@ -340,9 +360,11 @@ export default {
/deep/ .u-modal__content__text {
text-align: center !important;
}
/deep/ .u-input__content__field-wrapper__field {
/deep/ .u-input__content__field-wrapper__field {
text-align: right !important;
}
.price__bottom {
width: 100%;
height: 156rpx;
......@@ -420,7 +442,8 @@ export default {
padding: 30rpx 40rpx;
.address__left {
width: 600rpx;
width: 600rpx;
.right__title {
font-size: 32rpx;
font-family: PingFang SC;
......@@ -441,19 +464,20 @@ export default {
color: #666666;
padding: 0 14rpx;
}
span:nth-of-type(2) {
font-size: 28rpx;
font-family: DIN;
font-weight: 500;
color: #666666;
}
span:nth-of-type(3) {
font-size: 24rpx;
font-family: PingFang SC;
font-weight: bold;
color: #F88D28;
margin-left: 20rpx;
margin-left: 20rpx;
padding: 2rpx 4rpx;
border: 1rpx solid #F88D28;
}
......@@ -599,7 +623,8 @@ export default {
.list__money {
margin: 0 20rpx;
margin-left: 100rpx;
width: 400rpx;
width: 400rpx;
.money__title {
font-size: 32rpx;
font-family: PingFang SC;
......@@ -654,33 +679,34 @@ export default {
}
}
}
.minus {
width: 22px;
height: 22px;
border-width: 1px;
border-color: #E6E6E6;
border-top-left-radius: 100px;
border-top-right-radius: 100px;
border-bottom-left-radius: 100px;
border-bottom-right-radius: 100px;
@include flex;
justify-content: center;
align-items: center;
}
.input {
padding: 0 10px;
}
.plus {
width: 22px;
height: 22px;
background-color: #FF0000;
border-radius: 50%;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
justify-content: center;
align-items: center;
}
.minus {
width: 22px;
height: 22px;
border-width: 1px;
border-color: #E6E6E6;
border-top-left-radius: 100px;
border-top-right-radius: 100px;
border-bottom-left-radius: 100px;
border-bottom-right-radius: 100px;
@include flex;
justify-content: center;
align-items: center;
}
.input {
padding: 0 10px;
}
.plus {
width: 22px;
height: 22px;
background-color: #FF0000;
border-radius: 50%;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
justify-content: center;
align-items: center;
}
</style>
......@@ -73,17 +73,17 @@
import CarNumber from "@/common/codecook-carnumber/codecook-carnumber.vue";
export default {
components: {
CarNumber,
CarNumber,
},
data() {
return {
model1: {
carInfo: {
carNo: '',
brand: '',
carModel: '',
mileage: '',
},
carInfo: {
carNo: '',
brand: '',
carModel: '',
mileage: '',
},
},
rules: {
"carInfo.brand": {
......@@ -98,17 +98,23 @@ export default {
message: "请填写车型",
trigger: ["blur", "change"],
},
"carInfo.carNo": [{
min: 7,
max: 8,
message: '车牌长度在7-8个字符之间'
},
{
type: "string",
required: true,
message: "请填写车牌号",
"carInfo.mileage": {
type: "number",
required: false,
message: "请填写正确的里程数",
trigger: ["blur", "change"],
},
},
"carInfo.carNo": [{
min: 7,
max: 8,
message: '车牌长度在7-8个字符之间'
},
{
type: "string",
required: true,
message: "请填写车牌号",
trigger: ["blur", "change"],
},
]
},
carId: '',
......@@ -152,13 +158,13 @@ export default {
method: 'get'
};
that.http.httpTokenRequest(opts, {}).then(res => {
if (res.data.code == 200) {
that.$nextTick(() => {
that.model1.carInfo = res.data.data;
that.model1.carInfo.carNo = res.data.data.carNo;
that.$set(that.model1.carInfo, 'carNo', res.data.data.carNo);
})
}
if (res.data.code == 200) {
that.$nextTick(() => {
that.model1.carInfo = res.data.data;
that.model1.carInfo.carNo = res.data.data.carNo;
that.$set(that.model1.carInfo, 'carNo', res.data.data.carNo);
})
}
})
}
......@@ -180,11 +186,10 @@ export default {
this.$refs.form1.setRules(this.rules)
},
onShow() {
this.$nextTick(() => {
this.getCarInfo()
this.getMoveCode()
})
this.$nextTick(() => {
this.getCarInfo()
this.getMoveCode()
})
},
onLoad(e) {
......
......@@ -71,6 +71,12 @@ export default {
message: "请填写车型",
trigger: ["blur", "change"],
},
"carInfo.mileage": {
type: "number",
required: false,
message: "请填写正确的里程数",
trigger: ["blur", "change"],
},
"carInfo.carNo": [{
min: 7,
max: 8,
......
......@@ -50,7 +50,7 @@ export default {
carNumber: "",
model1: {
addressInfo: {
address : ''
address: ''
},
value: false,
},
......@@ -61,134 +61,150 @@ export default {
message: "收货人不能为空",
trigger: ["blur", "change"],
},
"addressInfo.telNumber": {
type: "string",
required: true,
message: "手机号不能为空",
trigger: ["blur", "change"],
},
"addressInfo.address": {
type: "string",
required: true,
message: "收货地址不能为空",
trigger: ["blur", "change"],
},
"addressInfo.detailInfo": {
type: "string",
required: true,
message: "门牌号不能为空",
trigger: ["blur", "change"],
},
"addressInfo.telNumber": [{
type: "string",
required: true,
message: "手机号不能为空",
trigger: ["blur", "change"],
},
{
// 自定义验证函数,见上说明
validator: (rule, value, callback) => {
// 上面有说,返回true表示校验通过,返回false表示不通过
// uni.$u.test.mobile()就是返回true或者false的
return uni.$u.test.mobile(value);
},
message: '手机格式错误,请输入11位手机号',
// 触发器可以同时用blur和change
trigger: ['change', 'blur'],
}
],
"addressInfo.address": {
type: "string",
required: true,
message: "收货地址不能为空",
trigger: ["blur", "change"],
},
"addressInfo.detailInfo": {
type: "string",
required: true,
message: "门牌号不能为空",
trigger: ["blur", "change"],
},
},
};
},
methods: {
goBack() {
uni.navigateBack({
delta: 1
})
},
addAddress(){
this.$refs.form1.validate().then(res => {
this.model1.addressInfo.defaultFlag = false
if(this.model1.value){
this.model1.addressInfo.defaultFlag = true
}
let opts = { url: '/app/user/address', method: 'post' };
this.http.httpTokenRequest(opts, this.model1.addressInfo).then(res => {
if (res.data.code == 200) {
//添加成功
uni.$u.toast('新增成功')
this.goBack()
}
})
}).catch(errors => {
uni.$u.toast('请正确填写信息')
})
},
goBack() {
uni.navigateBack({
delta: 1
})
},
addAddress() {
this.$refs.form1.validate().then(res => {
this.model1.addressInfo.defaultFlag = false
if (this.model1.value) {
this.model1.addressInfo.defaultFlag = true
}
let opts = {
url: '/app/user/address',
method: 'post'
};
this.http.httpTokenRequest(opts, this.model1.addressInfo).then(res => {
if (res.data.code == 200) {
//添加成功
uni.$u.toast('新增成功')
this.goBack()
}
})
}).catch(errors => {
uni.$u.toast('请正确填写信息')
})
},
// 用户授权
getAuthorize() {
const _this = this
uni.authorize({
scope: 'scope.userLocation', // 获取地理信息必填的参数,其它参数见文档
success(res) {
_this.getLocation()
},
// 授权失败
fail(err) {
uni.showModal({
title: '温馨提示',
content: '无法获取当前位置,请手动开启授权',
success: function (res) {
if (res.confirm) {
//console.log('用户点击确定')
uni.openSetting({
success(res) {
if (res.authSetting['scope.userLocation']) {
//console.log('打开授权设置定位')
_this.getLocation()
}
},
const _this = this
uni.authorize({
scope: 'scope.userLocation', // 获取地理信息必填的参数,其它参数见文档
success(res) {
_this.getLocation()
},
// 授权失败
fail(err) {
uni.showModal({
title: '温馨提示',
content: '无法获取当前位置,请手动开启授权',
success: function (res) {
if (res.confirm) {
//console.log('用户点击确定')
uni.openSetting({
success(res) {
if (res.authSetting['scope.userLocation']) {
//console.log('打开授权设置定位')
_this.getLocation()
}
},
})
} else if (res.cancel) {
//console.log('用户点击取消')
}
},
})
} else if (res.cancel) {
//console.log('用户点击取消')
}
},
})
},
})
})
},
// 获取用户的地理位置,
getLocation() {
const _this = this
uni.getLocation({
type: 'wgs84',
altitude: true,
success(res) {
//小程序只能获取到位置经纬度,需要借助高德地图的逆解析地址,显示出中文具体城市名字
_this.loadCity(res.longitude, res.latitude)
},
fail() {
//console.log('拒绝获取地理位置')
}
})
const _this = this
uni.getLocation({
type: 'wgs84',
altitude: true,
success(res) {
//小程序只能获取到位置经纬度,需要借助高德地图的逆解析地址,显示出中文具体城市名字
_this.loadCity(res.longitude, res.latitude)
},
fail() {
//console.log('拒绝获取地理位置')
}
})
},
// 经纬度转具体城市
// 1)需要用到高德地图的逆地理编码
// 2)需要当前地理位置的经纬度
// 3)小程序的key值
loadCity(longitude, latitude) {
const that = this
uni.request({
header: {
'Content-Type': 'application/text',
},
//注意:这里的key值需要高德地图的 web服务生成的key 只有web服务才有逆地理编码
url: 'https://restapi.amap.com/v3/geocode/regeo?output=JSON&location=' +
longitude +
',' +
latitude +
'&key=1bba2ab2de600f8b5fafe167e09cd2af&radius=1000&extensions=all',
success(res) {
//console.log(res);
if (res.statusCode === 200) {
if (res.data.status === '1') {
let addressInfo = res.data
//详细地址
let detailInfo = addressInfo.regeocode.formatted_address
that.model1.addressInfo.address = detailInfo
}
} else {
//console.log('获取信息失败,请重试!')
}
},
})
const that = this
uni.request({
header: {
'Content-Type': 'application/text',
},
//注意:这里的key值需要高德地图的 web服务生成的key 只有web服务才有逆地理编码
url: 'https://restapi.amap.com/v3/geocode/regeo?output=JSON&location=' +
longitude +
',' +
latitude +
'&key=1bba2ab2de600f8b5fafe167e09cd2af&radius=1000&extensions=all',
success(res) {
//console.log(res);
if (res.statusCode === 200) {
if (res.data.status === '1') {
let addressInfo = res.data
//详细地址
let detailInfo = addressInfo.regeocode.formatted_address
that.model1.addressInfo.address = detailInfo
}
} else {
//console.log('获取信息失败,请重试!')
}
},
})
},
},
onReady() {
// 如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则
this.$refs.form1.setRules(this.rules)
},
onReady() {
// 如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则
this.$refs.form1.setRules(this.rules)
},
};
</script>
......
......@@ -4,45 +4,45 @@
-->
<template>
<view class="appCotent">
<div class="editAddress">
<u-gap bgColor="transparent" height="20"></u-gap>
<div class="editAddress">
<u-gap bgColor="transparent" height="20"></u-gap>
<div class="car_info">
<u--form labelPosition="left" :model="model1" :rules="rules" ref="form1" labelWidth="100">
<u-form-item label="收货人:" prop="addressInfo.userName" borderBottom ref="item1">
<u--input v-model="model1.addressInfo.userName" placeholder="请填写收货人姓名" border="none"></u--input>
</u-form-item>
<u-form-item label="手机号码:" prop="addressInfo.telNumber" borderBottom ref="item1">
<u--input v-model="model1.addressInfo.telNumber" placeholder="请填写收货人手机号码" border="none"></u--input>
</u-form-item>
<u-form-item label="收货地址:" prop="addressInfo.address" borderBottom ref="item1">
<u--input v-model="model1.addressInfo.address" placeholder="点击选择收货地址" border="none"></u--input>
<span @click.stop="getAuthorize">
<span class="app__gps">
<image src="@/static/my/gps.png" >
</span>
<span class="app__right">
<image src="@/static/my/my6.png" >
</span>
</span>
</u-form-item>
<u-form-item label="楼号门牌:" prop="addressInfo.detailInfo" borderBottom ref="item1">
<u--input v-model="model1.addressInfo.detailInfo" placeholder="例如 2栋3单元101室" border="none"></u--input>
</u-form-item>
<u-form-item label="设置默认地址:" prop="addressInfo.defaultFlag" ref="item1">
<u-switch class="del__address" v-model="model1.addressInfo.defaultFlag" activeColor="#5ac725"></u-switch>
</u-form-item>
<div class="car_info">
<u--form labelPosition="left" :model="model1" :rules="rules" ref="form1" labelWidth="100">
<u-form-item label="收货人:" prop="addressInfo.userName" borderBottom ref="item1">
<u--input v-model="model1.addressInfo.userName" placeholder="请填写收货人姓名" border="none"></u--input>
</u-form-item>
<u-form-item label="手机号码:" prop="addressInfo.telNumber" borderBottom ref="item1">
<u--input v-model="model1.addressInfo.telNumber" placeholder="请填写收货人手机号码" border="none"></u--input>
</u-form-item>
<u-form-item label="收货地址:" prop="addressInfo.address" borderBottom ref="item1">
<u--input v-model="model1.addressInfo.address" placeholder="点击选择收货地址" border="none"></u--input>
<span @click.stop="getAuthorize">
<span class="app__gps">
<image src="@/static/my/gps.png">
</span>
<span class="app__right">
<image src="@/static/my/my6.png">
</span>
</span>
</u-form-item>
<u-form-item label="楼号门牌:" prop="addressInfo.detailInfo" borderBottom ref="item1">
<u--input v-model="model1.addressInfo.detailInfo" placeholder="例如 2栋3单元101室" border="none"></u--input>
</u-form-item>
<u-form-item label="设置默认地址:" prop="addressInfo.defaultFlag" ref="item1">
<u-switch class="del__address" v-model="model1.addressInfo.defaultFlag" activeColor="#5ac725"></u-switch>
</u-form-item>
</u--form>
</u--form>
</div>
<div class="add__tips">为保证您的商品准确送达,请填写正确的地址!</div>
<div class="love__btn" @click="editAddress">
保存地址
</div>
<div class="view__btn view__back" @click="del">
删除该地址
</div>
</div>
<div class="add__tips">为保证您的商品准确送达,请填写正确的地址!</div>
<div class="love__btn" @click="editAddress">
保存地址
</div>
<div class="view__btn view__back" @click="del">
删除该地址
</div>
</div>
</view>
</template>
......@@ -62,188 +62,213 @@ export default {
message: "收货人不能为空",
trigger: ["blur", "change"],
},
"addressInfo.telNumber": {
type: "string",
required: true,
message: "手机号不能为空",
trigger: ["blur", "change"],
},
"addressInfo.address": {
type: "string",
required: true,
message: "收货地址不能为空",
trigger: ["blur", "change"],
},
"addressInfo.detailInfo": {
type: "string",
required: true,
message: "门牌号不能为空",
trigger: ["blur", "change"],
},
"addressInfo.telNumber": [{
type: "string",
required: true,
message: "手机号不能为空",
trigger: ["blur", "change"],
},
{
// 自定义验证函数,见上说明
validator: (rule, value, callback) => {
// 上面有说,返回true表示校验通过,返回false表示不通过
// uni.$u.test.mobile()就是返回true或者false的
return uni.$u.test.mobile(value);
},
message: '手机格式错误,请输入11位手机号',
// 触发器可以同时用blur和change
trigger: ['change', 'blur'],
}
],
"addressInfo.address": {
type: "string",
required: true,
message: "收货地址不能为空",
trigger: ["blur", "change"],
},
"addressInfo.detailInfo": {
type: "string",
required: true,
message: "门牌号不能为空",
trigger: ["blur", "change"],
},
},
//收货地址id
id: '',
//收货地址id
id: '',
};
},
methods: {
goBack() {
uni.navigateBack({
delta: 1
})
},
del(){
goBack() {
uni.navigateBack({
delta: 1
})
},
del() {
uni.showModal({
title: '提示',
content: '确定删除该地址吗?',
success: (res) => {
if (res.confirm) {
//提示删除成功
let opts = { url: '/app/user/address/' + this.id, method: 'delete' };
this.http.httpTokenRequest(opts, {}).then(res => {
if (res.data.code == 200) {
uni.showToast({
title: '删除成功',
icon: 'success',
duration: 2000
});
this.goBack()
}
})
let opts = {
url: '/app/user/address/' + this.id,
method: 'delete'
};
this.http.httpTokenRequest(opts, {}).then(res => {
if (res.data.code == 200) {
uni.showToast({
title: '删除成功',
icon: 'success',
duration: 2000
});
this.goBack()
}
})
} else if (res.cancel) {
//console.log('用户点击取消');
}
}
});
},
getAddress(){
let opts = { url: '/app/user/address/info/' + this.id, method: 'get' };
this.http.httpTokenRequest(opts, {}).then(res => {
if (res.data.code == 200) {
this.model1.addressInfo = res.data.data
}
})
},
editAddress(){
this.$refs.form1.validate().then(res => {
let opts = { url: '/app/user/address', method: 'put' };
this.http.httpTokenRequest(opts, this.model1.addressInfo).then(res => {
if (res.data.code == 200) {
//添加成功
uni.$u.toast('修改成功')
this.goBack()
}
})
}).catch(errors => {
uni.$u.toast('请正确填写信息')
})
},
getAddress() {
let opts = {
url: '/app/user/address/info/' + this.id,
method: 'get'
};
this.http.httpTokenRequest(opts, {}).then(res => {
if (res.data.code == 200) {
this.model1.addressInfo = res.data.data
}
})
},
editAddress() {
this.$refs.form1.validate().then(res => {
let opts = {
url: '/app/user/address',
method: 'put'
};
this.http.httpTokenRequest(opts, this.model1.addressInfo).then(res => {
if (res.data.code == 200) {
//添加成功
uni.$u.toast('修改成功')
this.goBack()
}
})
}).catch(errors => {
uni.$u.toast('请正确填写信息')
})
},
// 用户授权
getAuthorize() {
const _this = this
uni.authorize({
scope: 'scope.userLocation', // 获取地理信息必填的参数,其它参数见文档
success(res) {
_this.getLocation()
},
// 授权失败
fail(err) {
uni.showModal({
title: '温馨提示',
content: '无法获取当前位置,请手动开启授权',
success: function (res) {
if (res.confirm) {
//console.log('用户点击确定')
uni.openSetting({
success(res) {
if (res.authSetting['scope.userLocation']) {
//console.log('打开授权设置定位')
_this.getLocation()
}
},
const _this = this
uni.authorize({
scope: 'scope.userLocation', // 获取地理信息必填的参数,其它参数见文档
success(res) {
_this.getLocation()
},
// 授权失败
fail(err) {
uni.showModal({
title: '温馨提示',
content: '无法获取当前位置,请手动开启授权',
success: function (res) {
if (res.confirm) {
//console.log('用户点击确定')
uni.openSetting({
success(res) {
if (res.authSetting['scope.userLocation']) {
//console.log('打开授权设置定位')
_this.getLocation()
}
},
})
} else if (res.cancel) {
//console.log('用户点击取消')
}
},
})
} else if (res.cancel) {
//console.log('用户点击取消')
}
},
})
},
})
})
},
// 获取用户的地理位置,
getLocation() {
const _this = this
uni.getLocation({
type: 'wgs84',
altitude: true,
success(res) {
//小程序只能获取到位置经纬度,需要借助高德地图的逆解析地址,显示出中文具体城市名字
_this.loadCity(res.longitude, res.latitude)
},
fail() {
//console.log('拒绝获取地理位置')
}
})
const _this = this
uni.getLocation({
type: 'wgs84',
altitude: true,
success(res) {
//小程序只能获取到位置经纬度,需要借助高德地图的逆解析地址,显示出中文具体城市名字
_this.loadCity(res.longitude, res.latitude)
},
fail() {
//console.log('拒绝获取地理位置')
}
})
},
// 经纬度转具体城市
// 1)需要用到高德地图的逆地理编码
// 2)需要当前地理位置的经纬度
// 3)小程序的key值
loadCity(longitude, latitude) {
const that = this
uni.request({
header: {
'Content-Type': 'application/text',
},
//注意:这里的key值需要高德地图的 web服务生成的key 只有web服务才有逆地理编码
url: 'https://restapi.amap.com/v3/geocode/regeo?output=JSON&location=' +
longitude +
',' +
latitude +
'&key=1bba2ab2de600f8b5fafe167e09cd2af&radius=1000&extensions=all',
success(res) {
//console.log(res);
if (res.statusCode === 200) {
if (res.data.status === '1') {
let addressInfo = res.data
//详细地址
let detailInfo = addressInfo.regeocode.formatted_address
that.model1.addressInfo.address = detailInfo
}
} else {
//console.log('获取信息失败,请重试!')
}
},
})
const that = this
uni.request({
header: {
'Content-Type': 'application/text',
},
//注意:这里的key值需要高德地图的 web服务生成的key 只有web服务才有逆地理编码
url: 'https://restapi.amap.com/v3/geocode/regeo?output=JSON&location=' +
longitude +
',' +
latitude +
'&key=1bba2ab2de600f8b5fafe167e09cd2af&radius=1000&extensions=all',
success(res) {
//console.log(res);
if (res.statusCode === 200) {
if (res.data.status === '1') {
let addressInfo = res.data
//详细地址
let detailInfo = addressInfo.regeocode.formatted_address
that.model1.addressInfo.address = detailInfo
}
} else {
//console.log('获取信息失败,请重试!')
}
},
})
},
},
onLoad(option) {
this.id = option.id
},
onShow(){
this.getAddress()
},
onLoad(option) {
this.id = option.id
},
onShow() {
this.getAddress()
},
};
</script>
<style lang="scss" scoped>
.editAddress {
.app__gps{
.app__gps {
display: inline-block;
image{
image {
width: 34rpx;
height: 36rpx;
}
}
.app__right{
.app__right {
display: inline-block;
padding-left: 20rpx;
padding-bottom: 10rpx;
image{
image {
width: 11rpx;
height: 18rpx;
}
}
.love__btn {
height: 76rpx;
background: url('@/static/move-car/love-car4.png') no-repeat;
......@@ -258,6 +283,7 @@ export default {
margin: 0 auto;
margin-top: 40rpx;
margin-bottom: 30rpx;
image {
width: 30rpx;
height: 30rpx;
......
No preview for this file type
......@@ -32,7 +32,7 @@ const store = new Vuex.Store({
{
pagePath: '/pagesC/pages/releaseBtn/releaseBtn',
iconPath: '',
selectedIconPath: '/static/tarbar/index31.png'
selectedIconPath: ''
},
{
pagePath: '/pagesC/pages/shop/index',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment