|
@@ -1,15 +1,19 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- <van-address-list v-show="type === 'list'" v-model="chosenAddressId" :list="list" :disabled-list="disabledList" disabled-text="以下地址超出配送范围"
|
|
|
- default-tag-text="默认" @add="onAdd" @edit="onEdit" />
|
|
|
|
|
|
- <van-address-edit v-show="type === 'edit'" :area-list="areaList" show-postal show-delete show-set-default show-search-result
|
|
|
- :search-result="searchResult" :area-columns-placeholder="['请选择', '请选择', '请选择']" @save="onSave"
|
|
|
- @delete="onDelete" @change-detail="onChangeDetail" />
|
|
|
+ <van-nav-bar v-if="type === 'list'" title="添加列表" left-text="返回" left-arrow @click-left="$router.push('/me')" />
|
|
|
+ <van-address-list v-if="type === 'list'" v-model="chosenAddressId" :list="list" :disabled-list="disabledList"
|
|
|
+ disabled-text="以下地址超出配送范围" default-tag-text="默认" @add="onAdd" @edit="onEdit" />
|
|
|
+
|
|
|
+ <van-nav-bar v-if="type === 'edit'" title="添加地址" left-text="返回" left-arrow @click-left="onClickLeft" />
|
|
|
+ <van-address-edit v-show="type === 'edit'" show-delete :address-info="addressInfo" :area-list="areaList"
|
|
|
+ show-set-default @delete="onDelete" :area-columns-placeholder="['请选择', '请选择', '请选择']"
|
|
|
+ @save="onSave"></van-address-edit>
|
|
|
+
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
-import { addressList, addAddr, listByPid } from '../api/address'
|
|
|
+import { addressList, addAddr, listByPid, updateAddr, deleteAddr } from '../api/address'
|
|
|
import { areaList } from '@vant/area-data';
|
|
|
export default {
|
|
|
data() {
|
|
@@ -19,14 +23,15 @@ export default {
|
|
|
type: 'list',
|
|
|
disabledList: [],
|
|
|
areaList: areaList,
|
|
|
- searchResult:[]
|
|
|
+ searchResult: [],
|
|
|
+ addressInfo: {}
|
|
|
}
|
|
|
},
|
|
|
async created() {
|
|
|
this.init()
|
|
|
},
|
|
|
methods: {
|
|
|
- async init(){
|
|
|
+ async init() {
|
|
|
const list = await addressList()
|
|
|
list.map(result => {
|
|
|
result.tel = result.mobile
|
|
@@ -38,43 +43,68 @@ export default {
|
|
|
})
|
|
|
this.list = list
|
|
|
},
|
|
|
- onDelete(){
|
|
|
+ onClickLeft() {
|
|
|
this.init()
|
|
|
this.type = 'list'
|
|
|
},
|
|
|
+ onDelete(data){
|
|
|
+ deleteAddr(data.id).then(()=>{
|
|
|
+ this.onClickLeft()
|
|
|
+ })
|
|
|
+ },
|
|
|
onAdd() {
|
|
|
this.type = 'edit'
|
|
|
},
|
|
|
- onEdit() {
|
|
|
- },
|
|
|
- onChangeDetail(val){
|
|
|
+ onEdit(data) {
|
|
|
+ this.addressInfo = {
|
|
|
+ id: data.addrId,
|
|
|
+ tel: data.mobile,
|
|
|
+ province: data.province,
|
|
|
+ city: data.city,
|
|
|
+ county: data.area,
|
|
|
+ name: data.receiver,
|
|
|
+ addressDetail: data.addr,
|
|
|
+ areaCode: "",
|
|
|
+ isDefault: data.commonAddr === 1 ? true : false
|
|
|
+ }
|
|
|
+ this.onAdd()
|
|
|
},
|
|
|
- async onSave(data){
|
|
|
-
|
|
|
- const province = await listByPid({pid:0})
|
|
|
- province.map(async (result)=>{
|
|
|
- if ( data.province === result.areaName ) {
|
|
|
+ async onSave(data) {
|
|
|
+ const province = await listByPid({ pid: 0 })
|
|
|
+ province.map(async (result) => {
|
|
|
+ if (data.province === result.areaName) {
|
|
|
data.provinceId = result.areaId
|
|
|
- const city = await listByPid({pid: result.areaId})
|
|
|
- city.map(async (result)=>{
|
|
|
- if ( data.city === result.areaName ) {
|
|
|
+ const city = await listByPid({ pid: result.areaId })
|
|
|
+ city.map(async (result) => {
|
|
|
+ if (data.city === result.areaName) {
|
|
|
data.cityId = result.areaId
|
|
|
- const city = await listByPid({pid: result.areaId})
|
|
|
- city.map(async (result)=>{
|
|
|
- if ( data.county === result.areaName ) {
|
|
|
+ const city = await listByPid({ pid: result.areaId })
|
|
|
+ city.map(async (result) => {
|
|
|
+ if (data.county === result.areaName) {
|
|
|
data.countyId = result.areaId
|
|
|
- addAddr({
|
|
|
+ const postData = {
|
|
|
receiver: data.name,
|
|
|
addr: data.addressDetail,
|
|
|
- postCode: data.postalCode,
|
|
|
mobile: data.tel,
|
|
|
province: data.province,
|
|
|
- provinceId:data.provinceId,
|
|
|
+ provinceId: data.provinceId,
|
|
|
city: data.city,
|
|
|
cityId: data.cityId,
|
|
|
area: data.county,
|
|
|
areaId: data.countyId,
|
|
|
- })
|
|
|
+ commonAddr: data.isDefault ? 1 : 0
|
|
|
+ }
|
|
|
+ if (data.id) {
|
|
|
+ postData.addrId = data.id
|
|
|
+ updateAddr(postData).then(()=>{
|
|
|
+ this.onClickLeft()
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ addAddr(postData).then(()=>{
|
|
|
+ this.onClickLeft()
|
|
|
+ })
|
|
|
+ }
|
|
|
+ this.addressInfo = {}
|
|
|
}
|
|
|
})
|
|
|
}
|
|
@@ -85,4 +115,14 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
-<style lang="less"></style>
|
|
|
+<style scoped lang="less">
|
|
|
+/deep/ .van-nav-bar__text {
|
|
|
+ color: #ee0a24;
|
|
|
+ font-weight: 600;
|
|
|
+}
|
|
|
+
|
|
|
+/deep/ .van-icon-arrow-left {
|
|
|
+ color: #ee0a24;
|
|
|
+ font-weight: 600;
|
|
|
+}
|
|
|
+</style>
|