123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- <template>
- <div class="address-management">
- <div class="printer-list">
- <div class="item" v-for="(v,i) in addressList" :key=i @click.stop="showAddress(1,v)">
- <div class="name">{{v.contact}} {{v.phone}}</div>
- <div class="shop-name">{{v.address}}</div>
- <div class="btns">
- <img @click.stop="showAddress(1,v)" src="../../../static/image/edit-icon.png" alt="">
- <img @click.stop="deleteAddress(v)" src="../../../static/image/delete-icon.png" alt="">
- </div>
- </div>
- <div class="item1" @click.stop="showAddress(0,v)">
- <img class="img" src="../../../static/image/icon-add.png" alt="">
- <div class="shop-name">添加常用地址</div>
- </div>
- </div>
- <!-- //新增编辑地址 -->
- <el-dialog :title="isEdit ? '编辑地址': '新增地址'" :visible.sync="centerDialogVisible" width="600px" center append-to-body>
- <el-form ref="form" :model="form" label-width="100px" label-position="left" size="small">
- <el-form-item label="位置" required>
- <el-input v-model="form.address" placeholder="请选择位置!" disabled>
- <img @click="showMap" slot="append" class="map" src="../../../static/image/icon_map.png" />
- </el-input>
- </el-form-item>
- <el-form-item label="门牌号">
- <el-input v-model="form.street" placeholder="请填写楼层、单元、门牌号!"></el-input>
- </el-form-item>
- <el-form-item label="联系人姓名" required>
- <el-input v-model="form.contact" placeholder="请填写联系人姓名!"></el-input>
- </el-form-item>
- <el-form-item label="联系人电话" required>
- <el-input v-model="form.phone" placeholder="请填写联系人电话!"></el-input>
- </el-form-item>
- <el-form-item label="设为默认地址">
- <el-switch v-model="form.isDefault" :active-value="1" :inactive-value="0" active-color="#FC7200" inactive-color="#999"></el-switch>
- </el-form-item>
- </el-form>
- <span slot="footer" class="dialog-footer">
- <el-button size="small" @click="cancel">取 消</el-button>
- <el-button size="small" type="primary" @click="addAddress">确 定</el-button>
- </span>
- </el-dialog>
- <!-- 通过地图选择地理位置 -->
- <order-map @getAddressDetail="getAddressDetail" ref="orderMap"></order-map>
- </div>
- </template>
- <script>
- import orderMap from "../orderComponents/orderAMap.vue";
- import {
- getAddressList,
- deleteAddress,
- addAddress,
- updateAddress,
- getAddressDetail,
- defaultAddress,
- } from "../../api/setting.js";
- export default {
- name: "addressManagement",
- data() {
- return {
- addressList: [],
- centerDialogVisible: false,
- isEdit: false,
- form: {
- id: "",
- address: "",
- cityCode: "",
- cityName: "",
- contact: "",
- districtName: "",
- isDefault: 0,
- lat: "",
- lng: "",
- phone: "",
- provinceName: "",
- street: "",
- },
- };
- },
- components: {
- orderMap,
- },
- // 监听属性 类似于data概念
- computed: {},
- // 监控data中的数据变化
- watch: {},
- // 生命周期 - 创建完成(可以访问当前this实例)
- created() {
- this.getAddressList();
- },
- mounted() {},
- // 方法集合
- methods: {
- cancel() {
- this.centerDialogVisible = false;
- this.getAddressList();
- },
- changeDefault() {
- defaultAddress({ addressId: this.form.id }).then((res) => {
- if (res.code === 200) {
- this.getAddressList();
- } else {
- this.$message({
- type: "error",
- message: res.msg,
- });
- }
- });
- },
- addAddress() {
- if (!this.form.address) {
- return this.$message({
- type: "error",
- message: "请选择地址的位置!",
- });
- }
- if (!this.form.contact.trim()) {
- return this.$message({
- type: "error",
- message: "请输入联系人姓名!",
- });
- }
- this.form.phone = this.form.phone.replace(/\s/g, "");
- if (!this.form.phone.trim()) {
- return this.$message({
- type: "error",
- message: "请输入联系人电话!",
- });
- }
- let reg2 = new RegExp(/^1[3456789]\d{9}$/);
- if (!reg2.test(this.form.phone)) {
- return this.$message({
- type: "error",
- message: "联系人电话格式不正确!",
- });
- }
- if (this.isEdit) {
- updateAddress(this.form).then((res) => {
- if (res.code === 200) {
- this.response();
- } else {
- this.$message({
- type: "success",
- message: res.msg,
- });
- }
- });
- } else {
- addAddress(this.form).then((res) => {
- if (res.code === 200) {
- this.response();
- } else {
- this.$message({
- type: "success",
- message: res.msg,
- });
- }
- });
- }
- },
- response() {
- this.$message({
- type: "success",
- message: `${this.isEdit ? "编辑" : "新增"}地址成功!`,
- });
- this.centerDialogVisible = false;
- this.getAddressList();
- },
- deleteAddress(row) {
- this.$confirm("此操作将删除该地址, 是否继续?", "提示", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- center: true,
- type: "warning",
- }).then(() => {
- deleteAddress({ addressId: row.id }).then((res) => {
- if (res.code === 200) {
- this.$message({
- type: "success",
- message: "删除成功!",
- });
- this.getAddressList();
- } else {
- this.$message({
- type: "error",
- message: res.msg,
- });
- }
- });
- });
- },
- showMap() {
- this.$refs.orderMap.chooseLocation();
- },
- getAddressDetail(v, lng, lat) {
- this.form.address = v.address;
- this.form.provinceName = v.province;
- this.form.cityName = v.city;
- this.form.cityCode = v.citycode;
- this.form.districtName = v.district;
- this.form.lng = lng;
- this.form.lat = lat;
- },
- showAddress(flag, row) {
- this.isEdit = flag;
- if (flag) {
- this.form = row;
- } else {
- this.form = {
- id: "",
- address: "",
- cityCode: "",
- cityName: "",
- contact: "",
- districtName: "",
- isDefault: 0,
- lat: "",
- lng: "",
- phone: "",
- provinceName: "",
- street: "",
- };
- }
- this.centerDialogVisible = true;
- },
- getAddressList() {
- getAddressList().then((res) => {
- if (res.code === 200) {
- this.addressList = res.data.personal;
- } else {
- this.$message({
- type: "error",
- message: res.msg,
- });
- }
- });
- },
- },
- };
- </script>
- <style lang="scss" scoped type="text/css">
- .btn {
- background: #fc7200;
- color: #fff;
- border: #fc7200;
- }
- .map {
- width: 20px;
- height: 20px;
- cursor: pointer;
- }
- .address-management {
- .printer-list {
- display: flex;
- flex-wrap: wrap;
- .item {
- position: relative;
- display: flex;
- flex-direction: column;
- width: 280px;
- height: 120px;
- background: #ffffff;
- box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
- border-radius: 8px;
- margin: 10px 20px 0 0;
- padding: 35px 20px 0;
- cursor: pointer;
- .img {
- width: 80px;
- height: 80px;
- }
- .name {
- font-size: 18px;
- font-weight: 500;
- line-height: 20px;
- color: #333333;
- }
- .shop-name {
- font-size: 14px;
- font-weight: 400;
- line-height: 20px;
- color: #999999;
- margin-top: 16px;
- }
- .btns {
- position: absolute;
- top: 10px;
- right: 0;
- img {
- width: 20px;
- height: 20px;
- margin-right: 10px;
- }
- }
- }
- .item1 {
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- background: #ffffff;
- width: 320px;
- height: 155px;
- box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
- border-radius: 8px;
- margin: 10px 20px 0 0;
- cursor: pointer;
- .shop-name {
- font-size: 14px;
- font-weight: 400;
- line-height: 20px;
- color: #999999;
- }
- }
- }
- }
- </style>
|