<template> <div class="orderAll"> <my-header>订单</my-header> <!-- Tab 标签栏--------------------------------------- 1. v-model="billStatus" 绑定一个值, 指定当前激活的tab栏的下标, 下标0开始 2. sticky 吸顶粘性布局 3. animated 切换动画 4. swipeable 滑动切换效果 下拉刷新 v-model 设置为 false,表示加载完成 -----------------------------------------------------------> <div class="state-tabs"> <van-tabs v-model="billStatus" @click.native="handleClick" sticky animated swipeable > <!-- 待完成 --> <van-tab title="待完成" name="wait"> <van-pull-refresh v-model="isLoading" @refresh="onRefresh"> <div class="wait wait1" v-for="item in orders" :key="item.orderId" @click="orderDetail(item.orderType, item.orderId)" > <div class="title"> <h4 v-if="item.orderType == 'caiOrder'"> 采血任务 </h4> <h4 v-if="item.orderType == 'huiOrder'"> 回输任务 </h4> <span class="waitState">{{ item.nodeName }}</span> </div> <!-- 详细内容 --------------------------> <div class="details"> <!-- 订单号 --> <div class="row clearfix"> <span class="fl">订单号</span> <em class="num fr">{{ item.billNo }}</em> </div> <!-- 订单日期 --> <div class="row clearfix"> <span class="fl">订单日期</span> <em class="startTime fr">{{ item.billDate }}</em> </div> <!-- 采血提货时间 --> <div class="row clearfix"> <span class="fl">提货时间</span> <em class="scheduledTime fr ">{{ item.pickTime }}</em> </div> <!-- 提货点 --> <div class="row clearfix"> <span class="fl">提货点</span> <em class="place fr">{{ item.pickPoint }}</em> </div> <!-- 提货地址 --> <div class="row clearfix"> <span class="fl">提货地址</span> <em class="place fr">{{ item.pickAddr }}</em> </div> <!-- 送达点 --> <div class="row clearfix"> <span class="fl">送达点</span> <em class="place fr">{{ item.deliveryPoint }}</em> </div> <!-- 送达地址 --> <div class="row clearfix"> <span class="fl">送达地址</span> <em class="place fr">{{ item.deliveryAddr }}</em> </div> <!-- 联系人 --> <div class="row clearfix person"> <span>联系人</span> <em class="who ">{{ item.pickPsn }}</em> <div class="phoneNum fr">{{ item.pickTel }}</div> </div> </div> </div> </van-pull-refresh> </van-tab> <!-- 完成 --> <van-tab title="完成" name="completed"> <van-pull-refresh v-model="isLoading" @refresh="onRefresh"> <div class="completed completed1" v-for="item in orders" :key="item.orderId" @click="orderDetail(item.orderType, item.orderId)" > <!-- 标题 --> <div class="title com"> <h4 v-if="item.orderType == 'caiOrder'"> 采血任务 </h4> <h4 v-if="item.orderType == 'huiOrder'"> 回输任务 </h4> <span class="completedState">{{ item.nodeName }}</span> </div> <!-- 细节 --> <div class="details"> <!-- 订单号 --> <div class="row clearfix"> <span class="fl">订单号</span> <em class="num fr">{{ item.billNo }}</em> </div> <!-- 订单日期 --> <div class="row clearfix"> <span class="fl">订单日期</span> <em class="startTime fr">{{ item.billDate }}</em> </div> <!-- 采血提货时间 --> <div class="row clearfix"> <span class="fl">提货时间</span> <em class="scheduledTime fr ">{{ item.pickTime }}</em> </div> <!-- 提货点 --> <div class="row clearfix"> <span class="fl">提货点</span> <em class="place fr">{{ item.pickPoint }}</em> </div> <!-- 提货地址 --> <div class="row clearfix"> <span class="fl">提货地址</span> <em class="place fr">{{ item.pickAddr }}</em> </div> <!-- 送达点 --> <div class="row clearfix"> <span class="fl">送达点</span> <em class="place fr">{{ item.deliveryPoint }}</em> </div> <!-- 送达地址 --> <div class="row clearfix"> <span class="fl">送达地址</span> <em class="place fr">{{ item.deliveryAddr }}</em> </div> <!-- 联系人 --> <div class="row clearfix person"> <span>联系人</span> <em class="who ">{{ item.pickPsn }}</em> <div class="phoneNum fr">{{ item.pickTel }}</div> </div> </div> </div> </van-pull-refresh> </van-tab> <!-- 全部任务 --> <van-tab title="全部" name="all"> <div class="all"> <van-pull-refresh v-model="isLoading" @refresh="onRefresh"> <div class="wait wait1" v-for="item in orders" :key="item.orderId" @click="orderDetail(item.orderType, item.orderId)" > <!-- 通过判断附加class 属性 --> <div class="title" :class="{ com: item.billStatus === ' 4' }" > <h4 v-if="item.orderType == 'caiOrder'"> 采血任务 </h4> <h4 v-if="item.orderType == 'huiOrder'"> 回输任务 </h4> <span :class="{ waitState: item.billStatus === '2', completedState: item.billStatus === ' 4' }" >{{ item.nodeName }}</span > </div> <div class="details"> <!-- 订单号 --> <div class="row clearfix"> <span class="fl">订单号</span> <em class="num fr">{{ item.billNo }}</em> </div> <!-- 订单日期 --> <div class="row clearfix"> <span class="fl">订单日期</span> <em class="startTime fr">{{ item.billDate }}</em> </div> <!-- 提货时间 --> <div class="row clearfix"> <span class="fl">提货时间</span> <em class="scheduledTime fr ">{{ item.pickTime }}</em> </div> <!-- 提货点 --> <div class="row clearfix"> <span class="fl">提货点</span> <em class="place fr">{{ item.pickPoint }}</em> </div> <!-- 提货地址 --> <div class="row clearfix"> <span class="fl">提货地址</span> <em class="place fr">{{ item.pickAddr }}</em> </div> <!-- 送达点 --> <div class="row clearfix"> <span class="fl">送达点</span> <em class="place fr">{{ item.deliveryPoint }}</em> </div> <!-- 送达地址 --> <div class="row clearfix"> <span class="fl">送达地址</span> <em class="place fr">{{ item.deliveryAddr }}</em> </div> <!-- 联系人 --> <div class="row clearfix person"> <span>联系人</span> <em class="who ">{{ item.pickPsn }}</em> <div class="phoneNum fr">{{ item.pickTel }}</div> </div> </div> </div> </van-pull-refresh> </div> </van-tab> </van-tabs> </div> <!-- 底部 --> <div class="footer"> <ul> <li> <div @click="$router.push('/')"> <i class="el-icon-s-home big"></i> <p>首页</p> </div> </li> <li> <div> <i class="el-icon-s-order current"></i> <p class="current">订单</p> </div> </li> <li> <div @click="$router.push('/my')"> <i class="el-icon-s-custom"></i> <p>我的</p> </div> </li> </ul> </div> </div> </template> <script> export default { data () { return { orders: [], // 默认值给一个空对象 billStatus: 'all', // 默认全部页签 count: 0, isLoading: false, resultClass: { wait: 'waitState', completed: 'completedState' } } }, created () { // 第一时间渲染列表 const { billStatus } = this.$route.params this.billStatus = billStatus if (billStatus) { this.getOrders(this.billStatus) } }, methods: { // tabs切换 handleClick () { console.log(this.billStatus) this.getOrders(this.billStatus) }, async getOrders (billStatus) { // 从本地获取用户 id 和 token const deptId = localStorage.getItem('dept_id') // 发送获取个人信息的请求时,需要携带上token令牌,需要放在请求头Authorization字段上 const res = await this.$axios.get(`/orders/${deptId}/${billStatus}`) console.log(res) const { statusCode, data } = res.data if (statusCode === 200) { this.orders = data } }, orderDetail (orderType, orderId) { this.$router.push({ name: orderType, params: { orderId: orderId } }) }, // 下拉刷新 onRefresh () { setTimeout(() => { this.$toast('刷新成功') this.isLoading = false this.getOrders(this.billStatus) }, 1000) } } } </script> <style lang="less" scoped> .orderAll { height: 100%; // 单个订单 .wait1, .completed1, .completed2 { border-radius: 7px; padding: 10px; box-shadow: 2px 2px 10px rgba(121, 118, 116, 0.4); margin: 20px 20px; } } </style>