<template> <view class="content"> <view class="container"> <headers :titles="titles" :type="titles" @chiledEvent="clickChild()"> <u-icon name="arrow-left" color="#fff" size="22"> </u-icon> </headers> <!-- <view class="my-header"> <view class="my-icons" @click="gobock()"> <slot></slot> </view> <view class="my-text">{{titles}}</view> </view> --> <view class="tablist"> <view class="tabbox" v-for="(item,index) in tablist" :key="index" @click="getindex(index)"> <view class="">{{item}}</view> <view class="gang" v-if="tabindex == index"></view> </view> </view> <view class="box_" v-for="item,index in orderList" :key="index"> <view class="b-bx"> <!-- <view class="title_">京博加油站</view> --> <view class="zt-size" v-if="item.orderStatus == 'paid'">已支付</view> <view class="zt-size" v-if="item.orderStatus == 'refund'">已退款</view> <view class="zt-size" v-if="item.orderStatus == 'unpaid'">未支付</view> </view> <view class="centne"> <view class="right-centne"> <view class="h_"> <text class="hao_">订单号:</text> <text>{{item.orderNo}}</text> </view> <view class="h_"><text class="hao_">消费类型:</text>{{item.content}}</view> <template v-if="item.content == '储值卡充值'"> </template> <template v-else> <view class="h_"><text class="hao_">油号:</text>{{item.oilName}}</view> <view class="h_"><text class="hao_">升数:</text>{{item.shengshu}}L</view> </template> <view class="h_"><text class="hao_">下单时间:</text>{{item.payTime}}</view> <view class="b-bx" v-if="!item.content == '储值卡充值'"> <view class=""> <text class="hao_">应付:</text>¥{{item.goodsMoney}}</view> <view class=""><text class="hao_">优惠:</text>¥{{item.discountAmount?item.discountAmount:0}} </view> </view> </view> </view> <view class="end-box"> 实付:¥{{item.payMoney}} <u-button v-if="item.orderStatus == 'paid'" style="width: 60px;float: right; margin-left: 5px; height: 21px ;" type="primary" @click="openRef(item)" text="退款"></u-button> </view> </view> <view style="width: 100%; height: 20px; "></view> <!-- customStyle="width: 300px;" --> <!-- customStyle="full-screen-popup" --> <u-popup :show="showPop" mode="right" @close="closePop" @open="openPop"> <view class="wrap_test" style="margin-top: 100px;"> <view class="time-bs"> <view class="time-box" @click="showStartTime = true">{{form.startTime?form.startTime:'开始日期'}} </view> <view class="">-</view> <view class="time-box" @click="showEndTime = true">{{form.endTime?form.endTime:'结束日期'}}</view> </view> <view class="time-bs2"> <view class="time-box2" @click="showType = true">{{payType?payType:'选择交易类型'}} </view> </view> <!-- <u--input class="time-bs2" placeholder="选择交易类型" border="surround" v-model="form.type" @click="showType = true" disabled></u--input> --> <view style="display: flex;justify-content: space-between;"> <u-button style="width: 100px;" type="primary" text="确定" @click="clickBu"></u-button> <u-button style="width: 100px;" type="warning" text="取消" @click="clickBu2"></u-button> </view> </view> </u-popup> <u-modal :show="showModal" showCancelButton content='是否确认退款' @confirm="ref()" @cancel="showModal = false"></u-modal> <u-datetime-picker :show="showStartTime" v-model="startTimeValue" mode="datetime" @confirm="clickStart" @close="showStartTime = false" @cancel="showStartTime = false"></u-datetime-picker> <u-datetime-picker :show="showEndTime" v-model="endTimeValue" mode="datetime" @confirm="clickEnd" @close="showEndTime = false" @cancel="showEndTime = false"></u-datetime-picker> <u-picker :show="showType" :columns="columns" keyName="label" @confirm="clickType" @cancel="showType = false"></u-picker> </view> </view> </template> <script> import config from '@/config' import request from "../../utils/request"; import headers from '../../components/header/headers.vue' export default { data() { return { orderData: {}, titles: "订单列表", tabindex: 0, showPop: false, showModal: false, tablist: [ "全部", "已完成", "已退款", "支付失败", ], orderList: [], baseUrl: config.baseUrl, form: { page: 1, pageSize: 1000, status: '', startTime: '', endTime: '', payType: '' }, showType: false, payType: '', columns: [ [{ label: '无', id: '0' }, { label: '支付宝', id: 'ALIPAY' }, { label: '微信', id: 'WECHAT' }, { label: '现金', id: 'CASH' } ] ], startTime: "", endTime: "", startTimeValue: "", endTimeValue: "", showStartTime: false, showEndTime: false, } }, onShow() { // this.actList = ["1", "1", "1", "1", "1", ] // this.status = "nomore" 底部刷新结束 this.getPageListByPos(); }, onPullDownRefresh() { console.log("刷新"); uni.stopPullDownRefresh() }, onReachBottom() { // this.show = true setTimeout(() => { console.log("加载执行"); }, 2000) }, components: { headers }, methods: { getindex(index) { this.orderList = [] this.tabindex = index if (index == 0) { this.form.status = '' } else if (index == 1) { this.form.status = 'paid' } else if (index == 2) { this.form.status = 'refund' } else if (index == 3) { this.form.status = 'unpaid' } this.getPageListByPos() }, openRef(data) { this.showModal = true this.orderData = {} this.orderData = data }, ref() { let form = { orderNo: this.orderData.orderNo, storeId: this.orderData.storeId, refundRemark: "pos机退款", type: "canRefund", isOilVouchers: true, isGoods: true, isOil: true, isOilCard: true, // 是否推掉油卡 isOilFuel: true, //是否推掉储值卡 refundAmt: this.orderData.oilPayAmount } request({ url: 'business/allOrderInfo/refund', method: 'post', data: form }).then((res) => { if (res.code == 200) { uni.showToast({ title: "退款成功", icon: "none" }) } else { uni.showToast({ title: res.data, icon: "none" }) } this.showModal = false this.getPageListByPos(); }) }, goback() { uni.navigateBack() }, gobock() { uni.navigateBack() }, getPageListByPos() { if (this.form.startTime && this.form.endTime) { this.form.params = { beginTime: this.form.startTime, endTime: this.form.endTime } } request({ url: 'business/allOrderInfo/getPageListByPos', method: 'get', params: this.form }).then((res) => { if (res.code == 200) { this.orderList = res.data.records; } else { uni.showToast({ title: res.data, icon: "none" }) } }) }, clickChild() { this.showPop = true }, clickBu() { this.showPop = false this.getPageListByPos() }, clickBu2() { this.showPop = false this.form = { page: 1, pageSize: 1000, status: '', startTime: '', endTime: '', payType: '' }, this.getPageListByPos() }, closePop() {}, openPop() {}, clickType(e) { this.showType = false let data = e.value[0] if (data.id == 0) { this.payType = '' this.form.payType = '' } else { this.payType = data.label this.form.payType = data.id } console.log(data) }, // changeType(e) { // console.log(e) // this.showType = false // }, clickStartTime(e) { this.showStartTime = true console.log(123, e) // const date = new Date(timestamp); }, clickEndTime(e) { this.showEndTime = true }, clickStart(e) { this.showStartTime = false this.form.startTime = this.formatDateToYYMMDDHHMM(new Date(e.value)); this.getIndexData(); }, clickEnd(e) { this.showEndTime = false this.form.endTime = this.formatDateToYYMMDDHHMM(new Date(e.value)); this.getIndexData(); }, formatDateToYYMMDDHHMM(date) { const year = String(date.getFullYear()); // 获取两位数的年份 const month = String(date.getMonth() + 1).padStart(2, '0'); // 获取月份,并确保是两位数 const day = String(date.getDate()).padStart(2, '0'); // 获取日期,并确保是两位数 const hours = String(date.getHours()).padStart(2, '0'); // 获取小时,并确保是两位数 const minutes = String(date.getMinutes()).padStart(2, '0'); // 获取分钟,并确保是两位数 // return `${year}/${month}/${day} ${hours}:${minutes}`; return `${year}/${month}/${day}`; } } } </script> <style scoped lang="scss"> .content { background: #f8f8f8; // background: linear-gradient(180deg, #B2D2FC 0%, #B2D2FC 14%, rgba(255, 255, 255, 0.84) 24%, rgba(255, 255, 255, 0.84) 100%); height: 100vh; } .container { width: 100%; background: #f8f8f8; box-sizing: border-box; padding-top: 88px; } .img-box { image { width: 100%; height: 100%; } } .tablist { width: 100%; display: flex; align-items: center; justify-content: space-between; } .tabbox { width: 25%; height: 40px; text-align: center; box-sizing: border-box; padding-top: 15px; } .gang { width: 36px; height: 2px; background: #0864E9; margin: 5px auto; } .box_ { width: 95%; border-radius: 8px; background: #fff; box-sizing: border-box; padding: 15px; margin: 15px auto; } .b-bx { width: 100%; display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; } .title_ { font-weight: bold; font-size: 16px; color: #333333; } .zt-size { font-weight: bold; font-size: 16px; color: #FD504E; } .centne { display: flex; } .touxiang { width: 60px; height: 60px; border-radius: 50%; background: #D9D9D9; margin-right: 15px; } .right-centne { width: 100%; font-size: 14px; } .h_ { width: 100%; margin-bottom: 5px; } .end-box { width: 100%; text-align: right; font-weight: bold; font-size: 16px; color: #0864E9; } .time { font-weight: 500; font-size: 14px; color: #333333; margin: 0px auto; margin-top: 15px; } .time-bs { width: 100%; box-sizing: border-box; background: #FFFFFF; padding: 15px; display: flex; align-items: center; justify-content: space-around; } .time-bs2 { width: 100%; box-sizing: border-box; background: #FFFFFF; padding: 30px; // display: flex; align-items: center; justify-content: space-around; } .time-box { border: 1px solid #0864E9; box-sizing: border-box; padding: 5px 15px; border-radius: 8px; font-size: 14px; color: #333; display: flex; align-items: center; justify-content: center; } .time-box2 { border: 1px solid #0864E9; box-sizing: border-box; padding: 5px 15px; border-radius: 8px; font-size: 14px; color: #333; display: flex; align-items: center; justify-content: center; } .hao_ { width: 30%; font-weight: bold; margin-right: 5px; } .my-header { width: 100%; height: 88px; // background: linear-gradient(180deg, #B2D2FC 0%, rgba(255, 255, 255, 0.84) 100%); display: flex; align-items: center; justify-content: space-between; color: #fff; box-sizing: border-box; padding: 0px 15px; padding-top: 40px; z-index: 99999; background: #0864e9; position: fixed; top: 0px; .my-icons { width: 50px; height: 50px; } .my-text { font-weight: bold; } } .wrap_test { width: 100vw; height: 100vh; } .full-screen-popup { width: 100%; height: 100%; top: 0; left: 0; margin: 0; padding: 0; box-sizing: border-box; } </style>