【VUE项目实战】58、订单修改收货地址的功能

接上篇《57、订单管理功能介绍和基本结构搭建
上一篇我们完成了订单管理模块的介绍和基本结构的搭建,本篇我们来完成订单列表的修改收货地址功能。

一、收货地址省市联动效果

我们要实现如下效果,首先点击操作区域的修改按钮,弹出一个对话框,对话框中有“省市区/县”和“详细地址”字段:

在“省市区/县”有一个级联选择器,可以根据情况联动选择的省市区。

二、实现修改地址对话框

首选我们找到操作列的编辑按钮,为其绑定一个名为“showBox”的点击事件:

<el-table-column label="操作" width="200px">
    <template slot-scope="{}">
        <el-button size= "mini" type="primary" 
        icon="el-icon-edit" @click="showBox()"></el-button>
        <el-button size= "mini" type="success" 
        icon="el-icon-location"></el-button>
    </template>
</el-table-column>

然后在视图区域的最底部div内,编写对话框内容:

<!-- 修改地址的对话框 -->
<el-dialog :title="修改地址" :visible.sync="addressVisible" width="50%" @close="addressDialogClosed()">
    <!-- 添加参数的对话框 -->
    <span>这是一段信息</span>
    <span slot="footer" class="dialog-footer">
        <el-button @click="addressVisible = false">取 消</el-button>
        <el-button type="primary" @click="addressVisible = false">确 定</el-button>
    </span>
</el-dialog>

然后在数据区定义addressVisible显示参数,默认false不显示:

data(){
    return{
        //查询条件
        queryInfo:{
            query: '',
            pagenum: 1,
            pagesize: 10
        },
        //订单列表,默认为空
        orderlist: [],
        total: 0, //数据总数
        addressVisible: false //控制修改地址对话框显示
    }
},

然后在方法区定义“showBox”和“addressDialogClosed”函数:

//展示修改地址的对话框
showBox(){
    this.addressVisible = true;
},
//关闭修改地址对话框
addressDialogClosed(){

}

效果:

然后编写对话框详细内容,实现“省市区/县”和“详细地址”字段的表单:

<!-- 修改地址的对话框 -->
<el-dialog :title="修改地址" :visible.sync="addressVisible" width="50%">
    <el-form :model="addressForm" :rules="addressFormRules" ref="addressFormRef" label-width="100px">
        <el-form-item label="省市区/县" prop="address1">
            <el-input v-model="addressForm.address1"></el-input>
        </el-form-item>
        <el-form-item label="详细地址" prop="address2">
            <el-input v-model="addressForm.address2"></el-input>
        </el-form-item>
    </el-form>
    <span slot="footer" class="dialog-footer">
        <el-button @click="addressVisible = false">取 消</el-button>
        <el-button type="primary" @click="addressVisible = false">确 定</el-button>
    </span>
</el-dialog>

然后在数据区定义addressForm对象以及addressFormRules表单校验规则:

data(){
    return{
        //查询条件
        queryInfo:{
            query: '',
            pagenum: 1,
            pagesize: 10
        },
        //订单列表,默认为空
        orderlist: [],
        total: 0, //数据总数
        addressVisible: false, //控制修改地址对话框显示
        addressForm:{
            address1: [],
            address2: ''
        },
        addressFormRules:{
            address1:[{required: true,message:'请选择省市区/县',trigger: 'blur'}],
            address2:[{required: true,message:'请输入详细地址',trigger: 'blur'}]
        }
    }
},

其中address1是一个级联选择器选择的对象,所以是一个数组,address2是一个普通字符串。
效果:

三、省市区/县级联选择

教材中提供了一个名为“citydata.js”的js(下载地址https://download.csdn.net/download/u013517797/85998146),可以通过该js获取省市区/县的信息,我们将其赋值粘贴到“src/components/order”文件夹下,与Order.vue在同一目录:

然后在script区内,采用import引入该js文件,

import cityData from './citydata.js'

然后在数据区域定义该数据(citydata):

data(){
    return{
        //查询条件
        queryInfo:{
            query: '',
            pagenum: 1,
            pagesize: 10
        },
        //订单列表,默认为空
        orderlist: [],
        total: 0, //数据总数
        addressVisible: false, //控制修改地址对话框显示
        addressForm:{
            address1: [],
            address2: ''
        },
        addressFormRules:{
            address1:[{required: true,message:'请选择省市区/县',trigger: 'blur'}],
            address2:[{required: true,message:'请输入详细地址',trigger: 'blur'}]
        },
        citydata: cityData
    }
},

然后在对话框区域,将“省市区/县”改造为级联选择器:

<el-form :model="addressForm" :rules="addressFormRules" ref="addressFormRef" label-width="100px">
    <el-form-item label="省市区/县" prop="address1">
        <el-cascader :options="citydata" 
        v-model="addressForm.address1"></el-cascader>
    </el-form-item>
    <el-form-item label="详细地址" prop="address2">
        <el-input v-model="addressForm.address2"></el-input>
    </el-form-item>
</el-form>

然后在样式区优化级联选择器的宽度为100%:

<style scoped>
 .el-cascader{
     width: 100%;
 }
</style>

效果:

然后优化一下之前定义的关闭对话框的函数addressDialogClosed,在关闭时清空表单数据:

//关闭修改地址对话框
addressDialogClosed(){
    this.$refs.addressFormRef.resetFields();
}

具体的后台提交操作我们就不再讲解了,很简单,有兴趣的同学可以翻看API文档去实现。

至此我们的订单修改收货地址功能完成。
下一篇我们继续编写订单列表的物流信息查询功能。

参考:黑马程序员(www.itheima.com)Vue项目实战教学视频

转载请注明出处:https://blog.csdn.net/acmman/article/details/125706007

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光仔December

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值