Files
cmgd-mini-app/pages/data/list.vue
2026-01-16 04:46:57 +08:00

285 lines
7.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="page-content">
<z-paging ref="paging" :fixed="false" style="height: 88vh;" class="order-list" v-model="dataList"
@query="queryList">
<view class="order-inner" v-for="(order,index) in dataList" :key="index">
<view class="order-inner-header">
<nut-tag v-if="order.order_type == 1" plain type="primary">房间订单</nut-tag>
<nut-tag v-else="order.order_type == 2" plain type="warning">商品订单</nut-tag>
<nut-tag v-if="order.order_type == 1" custom-color="#ffc209">{{order?.rooms?.room_name}}</nut-tag>
<nut-tag plain type="danger" v-if="order?.status?.value == 1">{{order?.status?.text}}</nut-tag>
<nut-tag plain type="success"
v-else-if="order?.status?.value == 2">{{order?.status?.text}}</nut-tag>
</view>
<view class="goods-info-row" v-if="order.order_type == 1 && order?.fee_type?.value != 0">
<view class="left-text">
<view class="goods-name">
<nut-tag plain custom-color="#fa2400">{{order?.fee_type?.text}}</nut-tag>
<text style="margin-left: 10rpx;"
v-if="order?.fee_type?.value == 0 || order?.fee_type?.value == 3"></text>
<text style="margin-left: 10rpx;"
v-else-if="order?.fee_type?.value == 1 || order?.fee_type?.value == 2 ">{{order?.fee_combo_name}}</text>
</view>
</view>
<view class="price" v-if="order?.fee_type?.value == 0 || order?.fee_type?.value == 3">
¥{{order?.fee_amount}}
</view>
<view class="price" v-else-if="order?.fee_type?.value == 1 || order?.fee_type?.value == 2 ">
¥{{order?.fee_combo_price}}
</view>
<view class="goods-pay-status">
{{order?.fee_pay_status?.text}}
</view>
</view>
<view class="goods-info-row" v-if="order.over_often>0">
<view class="left-text">
<view class="goods-name">
<nut-tag plain custom-color="#fa2400">超时</nut-tag>
<text style="margin-left: 10rpx;">{{order?.over_often}}小时</text>
</view>
</view>
<view class="price">
¥{{order?.over_amount}}
</view>
<view class="goods-pay-status">
{{order?.over_pay_status?.text}}
</view>
</view>
<view class="goods-info-row" v-for="(goods,iidx) in order.goods" :key="iidx">
<view class="left-text">
<view class="goods-name">
<nut-tag plain custom-color="#fa2400">{{goods.goods_type_name}}</nut-tag>
<text style="margin-left: 10rpx;">{{goods.goods_name}}</text>
</view>
</view>
<view class="price">
¥{{goods?.goods_price}}
</view>
<view class="goods-pay-status">
{{goods?.goods_pay_status_txt}}
</view>
</view>
<view class="footer">
<view class="order-inner-price">
<view style="display: flex;">优惠
<view style="color: #fa2c19;font-size: 26rpx;">
¥{{order?.discount_amount}}
</view>
</view>
<view style="display: flex;">总计
<view style="color: #fa2c19;font-size: 26rpx;">
¥{{order?.discount_amount}}
</view>
</view>
</view>
<view v-if="order.remarks" style="padding-left:20rpx;font-size: 26rpx;">备注</view>
<view v-if="order.remarks" class="remarks">
{{order.remarks}}
</view>
<view class="order-inner-price">
<view style="color: rgba(0, 0, 0, .5);font-size: 24rpx;">订单时间:{{order.create_time}}</view>
<view style="color: rgba(0, 0, 0, .5);font-size: 24rpx;">员工:{{order?.user?.staff_name}}</view>
</view>
</view>
</view>
</z-paging>
</view>
</template>
<script setup>
import {
onMounted,
reactive,
ref
} from 'vue';
import {
onLoad,
onShow
} from '@dcloudio/uni-app';
import {
navigateTo,
} from '@/utils/helper';
import {
fetchDayOrderList,
} from '@/api/index';
const date = ref('');
onLoad((options) => {
date.value = options.date
console.log(date.value);
})
// 订单列表数据
const dataList = ref([]);
// zp
const paging = ref(null);
// 获取订单列表
const queryList = (pageNo = 1, pageSize = 10) => {
console.log(date.value);
const params = {
page: pageNo,
pageSize: 10,
date: date.value,
}
fetchDayOrderList(params).then(res => {
console.log(res);
paging.value.complete(res.list);
}).catch(res => {
paging.value.complete(false);
})
}
/**
* 页面显示生命周期钩子
* 每次页面显示时都会执行
*/
onShow(() => {
// 获取配置
// getConfig()
if (paging.value) {
// paging.value.pageNo = 1;
paging.value.refresh();
// paging.value.refreshToPage(1)
// paging.value.reload();
}
})
</script>
<style scoped lang="scss">
.page-content {
min-height: 100vh;
background-color: #f2f3f5;
}
.title-list {
display: flex;
justify-content: space-around;
align-items: center;
width: 100%;
.title-item {
display: flex;
justify-content: space-around;
align-items: center;
position: relative;
}
.tabs-active {
font-weight: bold;
color: $tabs-titles-item-active-color;
opacity: $tabs-titles-item-line-opacity;
transition: width 0.3s ease;
.item__line {
position: absolute;
bottom: -10%;
left: 50%;
overflow: hidden;
content: ' ';
border-radius: $tabs-titles-item-line-border-radius;
opacity: $tabs-titles-item-line-opacity;
transition: width 0.3s ease;
transform: translate(-50%, 0);
width: $tabs-horizontal-titles-item-active-line-width;
height: 3px;
content: ' ';
background: $tabs-horizontal-tab-line-color;
}
}
}
.order-list {
display: flex;
flex-direction: column;
width: 100%;
}
.order-inner {
display: flex;
flex-direction: column;
background: #fff;
border-radius: 15rpx;
overflow: hidden;
margin: 20rpx;
.order-inner-header {
display: flex;
align-items: center;
font-size: 24rpx;
justify-content: space-between;
line-height: 45rpx;
padding: 15rpx 20rpx;
border-bottom: 2rpx solid #f2f3f5;
}
/* 信息行布局 */
.goods-info-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20rpx;
border-bottom: 2rpx solid #f2f3f5;
/* 左侧文字样式 */
.left-text {
flex: 1;
}
.goods-name {
font-size: 26rpx;
color: #000000;
display: block;
}
/* 右侧价格样式 */
.price {
font-size: 26rpx;
margin-left: 20rpx;
align-self: center;
color: #fa2c19;
/* 垂直居中在两行文字之间 */
}
.goods-pay-status {
font-size: 26rpx;
margin-left: 20rpx;
align-self: center;
}
}
.footer {
display: flex;
flex-direction: column;
.order-inner-price {
display: flex;
justify-content: space-evenly;
padding: 20rpx;
font-size: 24rpx;
align-items: center;
}
.remarks {
padding: 20rpx;
color: rgba(0, 0, 0, .5);
font-size: 24rpx;
}
}
}
</style>