齐采药WEB端项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

450 lines
13 KiB

<template>
<!-- 地址管理 -->
<div class="address-wrapper address">
<div class="user-com-title">收货地址</div>
<el-form
style="width: 60%"
label-position="left"
label-width="120px"
:model="addressForm"
:rules="rules"
ref="addressForm"
>
<el-form-item label="收货人" prop="name">
<el-input v-model="addressForm.name" placeholder="请填写收货人"></el-input>
</el-form-item>
<el-form-item label="手机号码" prop="mobile">
<el-input v-model="addressForm.mobile" placeholder="请输入手机号码"></el-input>
</el-form-item>
<el-form-item label="所在地区" prop="district_id">
<el-select
style="width: 30%;margin-right: 16px"
v-model="addressForm.province_id"
placeholder="省/直辖市"
@change="change($event, 1)"
>
<el-option
v-for="item in provinceList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
<el-select
style="width: 30%;margin-right: 16px"
v-model="addressForm.city_id"
@change="change($event, 2)"
placeholder="市/区"
>
<el-option v-for="item in cityList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
<el-select
style="width: 30%;"
v-model="addressForm.district_id"
placeholder="区/县"
@change="change($event, 3)"
>
<el-option
v-for="item in districtList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="详细地址" prop="address">
<el-input v-model="addressForm.address" placeholder="请填写详细地址,如小区、楼号、门牌号。"></el-input>
</el-form-item>
<el-form-item>
<div slot="label" style="margin-top: 40px">
<el-checkbox v-model="addressForm.is_default">设为默认收货地址</el-checkbox>
</div>
<div style="display: flex; justify-content: flex-end; margin-top: 40px">
<el-button type="primary" @click="clicksave('addressForm')" size="small">保 存</el-button>
</div>
</el-form-item>
</el-form>
<div>
<el-table
:data="tableData"
border
style="width: 100%"
:header-cell-style="{background: '#FAFAFA'}"
>
<el-table-column prop="name" label="收货人" align="center"></el-table-column>
<el-table-column prop="mobile" label="电话" align="center"></el-table-column>
<el-table-column prop="full_address" label="所在地区" show-overflow-tooltip align="center"></el-table-column>
<el-table-column prop="address" label="详情地址" show-overflow-tooltip align="center"></el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<div class="cz">
<span @click="edit(scope.row)">编辑</span>
<span @click="bingDelete(scope.row)">删除</span>
<span v-if="(scope.row.is_default)" style="color:#000">默认</span>
<span @click="bindDefault(scope.row)" v-if="!(scope.row.is_default)">设为默认</span>
</div>
</template>
</el-table-column>
</el-table>
</div>
<el-dialog
title="修改地址"
:visible.sync="isEdit"
width="40%"
v-if="isEdit"
:show-close="false"
:close-on-click-modal="false"
:close-on-press-escape="false"
>
<el-form
style="width: 100%"
label-position="left"
label-width="120px"
:model="editForm"
:rules="rules"
ref="editForm"
>
<el-form-item label="收货人" prop="name">
<el-input v-model="editForm.name" placeholder="请填写收货人"></el-input>
</el-form-item>
<el-form-item label="手机号码">
<el-input v-model="editForm.mobile" placeholder="请输入手机号码" prop="mobile"></el-input>
</el-form-item>
<el-form-item label="所在地区" prop="district_id">
<el-select
style="width: 30%;margin-right: 19px"
v-model="editForm.province_id"
placeholder="省/直辖市"
@change="change($event, 1)"
>
<el-option
v-for="item in provinceList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
<el-select
style="width: 30%;margin-right: 19px"
v-model="editForm.city_id"
@change="change($event, 2)"
placeholder="市/区"
>
<el-option v-for="item in cityList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
<el-select
style="width: 30%;"
v-model="editForm.district_id"
placeholder="区/县"
@change="change($event, 3)"
>
<el-option
v-for="item in districtList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="详细地址" prop="address">
<el-input v-model="editForm.address" placeholder="请填写详细地址,如小区、楼号、门牌号。"></el-input>
</el-form-item>
<el-form-item>
<div style="display: flex; justify-content: flex-end; margin-bottom: 40px">
<el-button @click="isEdit=false" size="small">取 消</el-button>
<el-button type="primary" @click="clicksave('editForm')" size="small"> </el-button>
</div>
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<script>
import validator from "@/mixins/validator";
import areaList from "@/mixins/areaList";
export default {
name: "addressList",
auth: "guest",
mixins: [areaList, validator],
data() {
return {
userInfo: JSON.parse(localStorage.getItem("userInfo")),
addressForm: {
name: "",
mobile: "",
province_id: "", //省份id
city_id: "", //城市id
district_id: "", //区县id
province: "",
city: "",
district: "",
community_id: 0,
address: "",
is_default: 0,
full_address: "",
telephone: "", //手机
community_id: 0, //社区id
longitude: "", //经度
latitude: "" //纬度
},
editForm: {},
isEdit: false,
tableData: []
};
},
async asyncData({ app }) {
let [provinceList] = await Promise.all([
// 省市区
app.$axios.post("/address/lists")
]);
return {
provinceList: provinceList.data
};
},
fetch({ store }) {
store.commit("isHeader", true);
store.commit("isFooter", true);
},
head() {
return {
title: "收货地址-" + this.$store.state.titleCon
};
},
created() {},
mounted() {
this.getList();
},
methods: {
getList() {
let obj = {
member_id: this.userInfo.member_id
};
this.$axios
.post(`/memberaddress/page`, obj)
.then(res => {
console.log(res.data.list);
this.tableData = res.data.list;
})
.catch(err => {
this.$message.error("err");
});
},
// 获取市区
change(pid, i) {
// 省名
if (i == 1) {
this.provinceList.forEach(item => {
if (pid == item.id) {
this.addressForm.province = item.name;
this.editForm.province = item.name;
}
});
}
// 市名
else if (i == 2) {
this.cityList.forEach(item => {
if (pid == item.id) {
this.addressForm.city = item.name;
this.editForm.city = item.name;
}
});
}
// 区名
else if (i == 3) {
this.districtList.forEach(item => {
if (pid == item.id) {
this.addressForm.district = item.name;
this.editForm.district = item.name;
}
});
}
this.$axios
.post("/address/lists", {
pid
})
.then(res => {
if (i == 1) {
this.cityList = res.data;
this.addressForm.city_id = "";
this.addressForm.district_id = "";
}
if (i == 2) {
this.districtList = res.data;
this.addressForm.district_id = "";
}
})
.catch(err => {
this.$message.error(err);
});
},
//
clicksave(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
// 新增
if (!this.isEdit) {
let obj = { ...this.addressForm };
obj.full_address =
obj.province + "-" + obj.city + "-" + obj.district;
this.$axios
.post("/memberaddress/add", obj)
.then(res => {
this.$message.success(res.message);
this.addressForm = {
name: "",
mobile: "",
province_id: "", //省份id
city_id: "", //城市id
district_id: "", //区县id
province: "",
city: "",
district: "",
community_id: 0,
address: "",
is_default: 0,
full_address: "",
telephone: "", //手机
community_id: 0, //社区id
longitude: "", //经度
latitude: "" //纬度
};
this.getList();
})
.catch(err => {
this.$message.error(err);
});
this.isEdit = false;
}
// 修改
else {
let obj = { ...this.editForm };
obj.full_address =
obj.province + "-" + obj.city + "-" + obj.district;
this.$axios
.post("/memberaddress/edit", obj)
.then(res => {
this.$message.success(res.message);
this.editForm = {};
this.getList();
})
.catch(err => {
this.$message.error(err);
});
console.log(`修改`);
this.isEdit = false;
}
}
});
},
// 设为默认
bindDefault(item) {
this.$axios
.post("/memberaddress/setdefault", {
id: item.id
})
.then(res => {
this.$message.success("设置成功");
this.getList();
})
.catch(err => {
this.$message.error(err);
});
},
// 删除
bingDelete(item, index) {
this.$confirm("确定删除该地址吗", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(res => {
this.$axios
.post("/memberaddress/delete", {
id: item.id
})
.then(data => {
this.getList();
this.$message.success("删除成功");
});
});
},
// 编辑
edit(item) {
console.log(item);
this.editForm = item;
this.isEdit = true;
this.getAreaData(item.province_id, 1);
this.getAreaData(item.city_id, 2);
}
}
};
</script>
<style lang="scss" scoped>
::v-deep {
.el-input__inner {
height: 32px;
line-height: 32px;
}
.el-form-item__content {
line-height: 32px;
}
.el-form-item__label {
line-height: 32px;
}
.el-form-item {
margin-bottom: 20px;
}
.el-form-item__label {
font-size: 13px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
}
.el-button--primary {
background-color: var(--themeColor);
border-color: var(--themeColor);
}
}
.cz {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: var(--themeColor);
cursor: pointer;
}
.address {
padding: 0 30px;
.user-com-title {
margin-bottom: 20px;
}
.code {
width: 100px;
height: 32px;
line-height: 32px;
text-align: center;
border-radius: 4px;
border: 1px solid var(--themeColor);
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: var(--themeColor);
margin-left: 10px;
cursor: pointer;
}
}
</style>