wuheng 1 жил өмнө
parent
commit
c4d07b83c1

+ 5 - 2
src/api/address.js

@@ -1,10 +1,13 @@
-import { post, get } from '../utils/request'
+import { post, get, put, deleted } from '../utils/request'
 
 export const addressList = (data) => get("/p/address/list", data)
 
 
 export const addAddr = (data) => post("/p/address/addAddr", data)
 
+export const updateAddr = (data) => put("/p/address/updateAddr", data)
 
+export const listByPid = (data) => get("/p/area/listByPid", data)
 
-export const listByPid = (data) => get("/p/area/listByPid", data)
+
+export const deleteAddr = (data, bodyData) => deleted(`/p/address/deleteAddr/${data}`, bodyData)

+ 2 - 1
src/main.js

@@ -6,11 +6,12 @@ Vue.config.productionTip = false
 
 import {
   Image as VanImage, Form, Field, Search, CheckboxGroup, GoodsActionIcon,
-  Swipe, Grid, GridItem, NoticeBar, Checkbox, Col, Cell, GoodsActionButton,
+  Swipe, Grid, GridItem, NoticeBar, Checkbox, Col, Cell, GoodsActionButton, NavBar,
   Button, Tabbar, TabbarItem, SwipeItem, Tag, Row, CellGroup, GoodsAction, AddressEdit,
   TreeSelect, Card, Empty, SubmitBar, Stepper, Divider, Icon, ActionSheet, AddressList
 } from 'vant';
 
+Vue.use(NavBar);
 Vue.use(AddressEdit);
 Vue.use(AddressList);
 Vue.use(GoodsAction);

+ 3 - 1
src/utils/request.js

@@ -61,6 +61,8 @@ ajax.interceptors.response.use(response=>{
 })
 
 const post = ( url, data ) => ajax.post( url, data)
+const put = ( url, data ) => ajax.put( url, data)
 const get = ( url, data ) => ajax.get( url, {params: data} )
+const deleted = ( url, data ) => ajax.delete( url, data )
 
-export { post, get }
+export { post, get, put, deleted }

+ 68 - 28
src/views/AddressList.vue

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

+ 1 - 1
src/views/Me.vue

@@ -37,7 +37,7 @@
             <van-cell title-style="cell-title" title="分销中心" icon="cart-o" is-link />
             <van-cell title-style="cell-title" title="领券中心" icon="coupon-o" is-link />
             <van-cell title-style="cell-title" title="我的优惠券" icon="label-o" is-link />
-            <van-cell title-style="cell-title" title="收货地址" icon="location-o" is-link />
+            <van-cell title-style="cell-title" title="收货地址" icon="location-o" to="/addressList" is-link />
         </van-cell-group>
         <!-- 登出 -->
         <div style="height: 1rem;"></div>

+ 15 - 2
src/views/ShopCart.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="shop-cart">
-        <van-search placeholder="请输入搜索关键词" />
+        <van-cell :title="defaultAddr === '' ? '默认收货地址' : defaultAddr " is-link to="/addressList" />
         <div style="height: 1rem;"></div>
         <div class="cards-list">
             <van-checkbox-group v-model="basketIds" ref="checkboxGroup">
@@ -52,6 +52,7 @@
 </template>
 <script>
 import { shopCartInfo, totalPay, changeItem } from '@/api/shopcart'
+import { addressList } from '../api/address'
 import emitter from '../utils/mitt'
 export default {
     data() {
@@ -60,11 +61,23 @@ export default {
             shopCartInfo: [],
             value: 0,
             basketIds: [],
-            totalMoney: 0
+            totalMoney: 0,
+            addresslist: [],
+            defaultAddr: ""
         };
     },
     async created() {
         this.shopCartInfo = await shopCartInfo({});
+        this.addresslist  = await addressList();
+        for (const key in this.addresslist) {
+            if (Object.hasOwnProperty.call(this.addresslist, key)) {
+                if ( this.addresslist[key].commonAddr === 1 ) {
+                    const result = this.addresslist[key]
+                    this.defaultAddr = result.province + " " + result.city + " "
+                    + result.area + " " + result.addr
+                }
+            }
+        }
     },
     methods: {
         onStepperChange(items, value, callback) {