198 lines
6.9 KiB
Vue
198 lines
6.9 KiB
Vue
|
<template>
|
|||
|
<div class="address-list">
|
|||
|
<div class="address-header lg">收货地址</div>
|
|||
|
<div class="address-content" v-show="!isDataNull">
|
|||
|
<el-table :data="addressList" style="width: 100%">
|
|||
|
<el-table-column prop="contact" label="收货人" width="200" />
|
|||
|
<el-table-column prop="telephone" label="手机号码" width="150" />
|
|||
|
<el-table-column prop="addressDetail" label="收货地区" />
|
|||
|
<el-table-column fixed="right" label="操作" max-width="216">
|
|||
|
<template slot-scope="scope">
|
|||
|
<div class="flex">
|
|||
|
<div class="flex m-r-20" style="margin-left: 36px;cursor: pointer;" @click="setDefault(scope.row)">
|
|||
|
<div :class="{'default-border': scope.row.is_default == 0}"
|
|||
|
style="width: 16px;height: 16px;margin-right: 8px;"
|
|||
|
v-if="scope.row.is_default == 0" />
|
|||
|
<img :class="{'default-border': scope.row.is_default == 0}"
|
|||
|
style="width: 16px;height: 16px;margin-right: 8px;" v-else
|
|||
|
src="~/static/images/logistics_success.png" />
|
|||
|
<div class="nr" :class="{'primary': scope.row.is_default == 1}">
|
|||
|
{{scope.row.is_default == 1 ? '设为默认' : '设为默认'}}</div>
|
|||
|
<!-- <el-radio v-model="scope.row.is_default" >{{scope.row.is_default == 1 ? '默认' : '设为默认'}}</el-radio> logistics_success -->
|
|||
|
</div>
|
|||
|
<div style="margin-right: 24px;">
|
|||
|
<el-button @click="modifyRow(scope.row)" type="text" class="nr" size="small">修改
|
|||
|
</el-button>
|
|||
|
</div>
|
|||
|
<el-popconfirm confirm-button-text='确定' cancel-button-text='取消' icon="el-icon-info"
|
|||
|
icon-color="red" title="确定要删除地址吗?" @confirm="deleteAddress(scope.row)">
|
|||
|
<el-button type="text" slot="reference" size="small" class="nr">删除</el-button>
|
|||
|
</el-popconfirm>
|
|||
|
</div>
|
|||
|
</template>
|
|||
|
</el-table-column>
|
|||
|
</el-table>
|
|||
|
<div class="add-address-btn flex row-end">
|
|||
|
<el-button type="primary" style="width: 106px" @click="showAddressPop">添加地址</el-button>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="column-center data-null" v-show="isDataNull">
|
|||
|
<img style="width: 150px;height: 150px" src="@/static/images/address_null.png" />
|
|||
|
<div class="muted xs m-t-8">暂无地址记录~</div>
|
|||
|
<div class="m-t-30">
|
|||
|
<el-button type="primary" style="width: 106px" @click="showAddressPop">添加地址</el-button>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<address-add v-model="addressPop" :aid="editId == -1 ? '' : editId" @success="getAddressList" />
|
|||
|
</div>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
export default {
|
|||
|
head() {
|
|||
|
return {
|
|||
|
title: this.$store.getters.headTitle,
|
|||
|
link: [
|
|||
|
{
|
|||
|
rel: "icon",
|
|||
|
type: "image/x-icon",
|
|||
|
href: this.$store.getters.favicon,
|
|||
|
},
|
|||
|
],
|
|||
|
};
|
|||
|
},
|
|||
|
layout: "user",
|
|||
|
async asyncData({ $get, $post }) {
|
|||
|
let addressList = [];
|
|||
|
let isDataNull = true;
|
|||
|
let res = await $get("user_address/lists");
|
|||
|
if (res.code == 1) {
|
|||
|
addressList = res.data;
|
|||
|
addressList.forEach((item) => {
|
|||
|
item.addressDetail =
|
|||
|
item.province +
|
|||
|
" " +
|
|||
|
item.city +
|
|||
|
" " +
|
|||
|
item.district +
|
|||
|
" " +
|
|||
|
item.address;
|
|||
|
});
|
|||
|
if (addressList.length <= 0) {
|
|||
|
isDataNull = true;
|
|||
|
} else {
|
|||
|
isDataNull = false;
|
|||
|
}
|
|||
|
}
|
|||
|
return {
|
|||
|
addressList,
|
|||
|
isDataNull,
|
|||
|
};
|
|||
|
},
|
|||
|
data() {
|
|||
|
return {
|
|||
|
addressPop: false,
|
|||
|
editId: -1,
|
|||
|
isDataNull: false
|
|||
|
};
|
|||
|
},
|
|||
|
mounted() {},
|
|||
|
methods: {
|
|||
|
modifyRow(e) {
|
|||
|
this.editId = e.id;
|
|||
|
this.addressPop = true;
|
|||
|
},
|
|||
|
|
|||
|
// 设置默认地址
|
|||
|
async setDefault(e) {
|
|||
|
let res = await this.$post("user_address/setdefault", { id: e.id });
|
|||
|
if (res.code == 1) {
|
|||
|
await this.getAddressList();
|
|||
|
this.$message({
|
|||
|
message: "设置成功",
|
|||
|
type: "success",
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
// 获取地址列表
|
|||
|
async getAddressList() {
|
|||
|
let res = await this.$get("user_address/lists");
|
|||
|
if (res.code == 1) {
|
|||
|
this.addressList = res.data;
|
|||
|
this.addressList.forEach((item) => {
|
|||
|
item.addressDetail =
|
|||
|
item.province +
|
|||
|
" " +
|
|||
|
item.city +
|
|||
|
" " +
|
|||
|
item.district +
|
|||
|
" " +
|
|||
|
item.address;
|
|||
|
});
|
|||
|
if (this.addressList.length <= 0) {
|
|||
|
this.isDataNull = true;
|
|||
|
} else {
|
|||
|
this.isDataNull = false;
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
// 删除地址
|
|||
|
async deleteAddress(e) {
|
|||
|
let res = await this.$post("user_address/del", { id: e.id });
|
|||
|
if (res.code == 1) {
|
|||
|
await this.getAddressList();
|
|||
|
this.$message({
|
|||
|
message: "删除成功",
|
|||
|
type: "success",
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
// 显示添加地址
|
|||
|
showAddressPop() {
|
|||
|
this.addressPop = true;
|
|||
|
this.editId = -1;
|
|||
|
},
|
|||
|
},
|
|||
|
};
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss" scoped>
|
|||
|
.address-list {
|
|||
|
width: 980px;
|
|||
|
padding: 10px;
|
|||
|
.address-header {
|
|||
|
padding: 10px 5px;
|
|||
|
border-bottom: 1px solid #e5e5e5;
|
|||
|
}
|
|||
|
.address-content {
|
|||
|
margin-top: 15px;
|
|||
|
.default-border {
|
|||
|
border: 1px solid #e5e5e5;
|
|||
|
border-radius: 60px;
|
|||
|
}
|
|||
|
::v-deep .el-table {
|
|||
|
color: #222;
|
|||
|
}
|
|||
|
::v-deep .el-table .el-button--text {
|
|||
|
color: #222;
|
|||
|
font-weight: 400;
|
|||
|
}
|
|||
|
::v-deep .el-table th {
|
|||
|
background-color: #f2f2f2;
|
|||
|
}
|
|||
|
::v-deep .el-table thead {
|
|||
|
color: #555555;
|
|||
|
}
|
|||
|
.add-address-btn {
|
|||
|
margin-top: 18px;
|
|||
|
}
|
|||
|
}
|
|||
|
.data-null {
|
|||
|
text-align: center;
|
|||
|
padding-top: 150px;
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|