Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
J
jd-vx-app
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
jd-vx-app
Commits
d2352ab7
Commit
d2352ab7
authored
Apr 27, 2022
by
程新智
👽
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化
parent
df77d25a
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
584 additions
and
504 deletions
+584
-504
shop.vue
pages/shop.vue
+4
-3
getCarCode.vue
pagesA/pages/index/getCarCode.vue
+218
-192
getPrice.vue
pagesA/pages/index/getPrice.vue
+34
-29
editCar.vue
pagesB/pages/move-car/editCar.vue
+6
-0
addAddress.vue
pagesD/pages/personal/addAddress.vue
+126
-110
editAddress.vue
pagesD/pages/personal/editAddress.vue
+195
-169
.DS_Store
static/.DS_Store
+0
-0
index.js
store/index.js
+1
-1
No files found.
pages/shop.vue
View file @
d2352ab7
...
...
@@ -272,10 +272,11 @@ export default {
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
overflow
:
hidden
;
overflow-x
:
scroll
;
.shop__item2
{
width
:
2
5
%
;
width
:
2
4
%
;
margin-right
:
1%
;
.item2__img
{
margin-bottom
:
20rpx
;
text-align
:
center
;
...
...
pagesA/pages/index/getCarCode.vue
View file @
d2352ab7
...
...
@@ -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
>
pagesA/pages/index/getPrice.vue
View file @
d2352ab7
...
...
@@ -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
)
{
...
...
pagesB/pages/move-car/editCar.vue
View file @
d2352ab7
...
...
@@ -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
,
...
...
pagesD/pages/personal/addAddress.vue
View file @
d2352ab7
...
...
@@ -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
>
...
...
pagesD/pages/personal/editAddress.vue
View file @
d2352ab7
...
...
@@ -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
;
...
...
static/.DS_Store
View file @
d2352ab7
No preview for this file type
store/index.js
View file @
d2352ab7
...
...
@@ -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'
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment