123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- <template>
- <!-- z-paging插件:具体使用文档请看https://z-paging.zxlee.cn/ -->
- <z-paging auto-show-back-to-top back-to-top-bottom="300rpx"
- :paging-style="{ paddingBottom: 'constant(safe-area-inset-bottom)', paddingBottom: 'env(safe-area-inset-bottom)' }"
- ref="paging" v-model="dataList" @query="queryList">
- <template #top>
- <view class="c-bg-f">
- <u-tabs :activeStyle="{ color: '#3c9cff' }" :list="statusList" @click="statusClick"></u-tabs>
- </view>
- </template>
- <view class="o-plr-24 o-ptb-24">
- <view v-for="(item, index) in dataList" :key="item.id"
- class="l-boxShadow o-mb-20 c-bg-f o-plr-24 o-ptb-12 c-radius-10">
- <view class="l-flex-between o-ptb-20">
- <view class="c-color-8 l-flex-RC">
- <text>取餐号:</text>
- <u-tooltip color="#888888" overlay :text="mealCode(item.id)" direction="bottom"></u-tooltip>
- </view>
- </view>
- <view class="l-flex-between o-ptb-20">
- <view class="c-color-8 l-flex-RC">
- <text>订单号:</text>
- <u-tooltip color="#888888" overlay :text="item.sn" direction="bottom"></u-tooltip>
- </view>
- <u-tag @click="setClipboardData(item.sn)" text="复制" size="mini"></u-tag>
- <text class="c-color-8">{{ statusName(item.status) }}</text>
- </view>
- <u-line></u-line>
- <view @click="toDetail(item)" v-for="item1 in item.goodsNumsPrice">
- <view class="l-flex-RC o-mb-20">
- <view class="l-flex-1">
- <view :style="{'width': GETT_miniProduct.includes(item.imgId) ? '200rpx' : '250rpx', 'height': GETT_miniProduct.includes(item.imgId) ? '200rpx' : '250rpx'}">
- <!-- 后台约定好A00,但是这个商品编号有可能会获取不到,获取不到会是A00 -->
- <u--image v-if="item1.imgId !== 'A00'"
- :width="GETT_miniProduct.includes(item1.imgId) ? '250rpx' : '200rpx'"
- :height="GETT_miniProduct.includes(item1.imgId) ? '250rpx' : '200rpx'" mode="aspectFit"
- :lazy-load="true" :fade="true" duration="450" :src="item1.imgUrl">
- <view slot="error" style="font-size: 24rpx;">加载失败</view>
- </u--image>
- </view>
- </view>
- <view style="margin-left: 12rpx" class="l-flex-3">
- <view class="c-color-8 u-line-2">{{ item1.goodsName }}</view>
- <view class="l-flex-RC o-mt-30">
- <text class="c-color-8">X{{ item1.nums }}</text>
- <text class="c-color-MR o-ml-30">¥{{ item1.price }}</text>
- </view>
- </view>
- </view>
- </view>
- <u-line></u-line>
- <view class="l-flex-between o-ptb-20">
- <text
- class="c-text-12 c-color-8">{{ new Date(item.payDate).getTime() | date('yyyy-mm-dd hh:MM:ss') }}</text>
- <view class="l-flex-RC">
- <text class="c-text-12 c-color-8">共{{ item.goodsNums }}件商品</text>
- <view class="l-flex-RC o-ml-30">
- <text class="c-text-12 c-color-8">实付</text>
- <text class="c-text-16 c-color-MR">¥{{ item.price }}</text>
- </view>
- </view>
- </view>
- </view>
- </view>
- </z-paging>
- </template>
- <script>
- // 导入接口
- import {
- API_getOrderlist
- } from '@/common/api.js';
- // 引入辅助函数
- import {
- mapGetters
- } from 'vuex';
- // 引入商品数据
- import goodsList from '@/static/images/home/goods.js';
- export default {
- data() {
- return {
- // z-paging插件的主数据,用作列表渲染
- dataList: [],
- // 标签数组,元素为对象,如[{name: '推荐'}]
- statusList: [{
- name: '已完成'
- },
- {
- name: '已退款'
- }
- ],
- // 当前选中标签的索引
- current: 0
- };
- },
- computed: {
- // 使用辅助函数
- ...mapGetters(['GETT_loginInfos', 'GETT_miniProduct']),
- // 状态名称
- statusName: () => {
- return status => {
- switch (status) {
- case 1:
- return '已完成';
- break;
- case 3:
- return '已退款';
- break;
- default:
- return '暂无';
- break;
- }
- };
- },
- mealCode: () => {
- return id => {
- return id.substring(id.length - 6, id.length);
- };
- }
- },
- methods: {
- // 点击去详情页
- toDetail(row) {
- this.$M_Go(`/otherPages/mine/orderRecord/detail?row=${encodeURIComponent(JSON.stringify(row))}`);
- },
- // z-paging插件分页的方法
- queryList(pageNo, pageSize) {
- let param = {
- wxId: this.GETT_loginInfos.id,
- status: this.current === 0 ? 1 : 3,
- size: pageSize,
- current: pageNo
- };
- // 发起获取商品类表请求
- API_getOrderlist(param).then(res => {
- const {
- records
- } = res || [];
- if (records.length > 0) {
- records.forEach(item => {
- // 将不同品种的商品分隔出来
- let noteList = item.note.split(',');
- // 商品名称、数量、价格组成
- item.goodsNumsPrice = [];
- // 商品总数量
- item.goodsNums = 0;
- if (noteList.length > 0) {
- noteList.forEach((item1, index) => {
- // 处理数组中有null,undefined,''的情况
- if (item1) {
- item.goodsNumsPrice[index] = {};
- // 将商品名称和商品数量、商品价格分隔出俩
- let goodsNumsPrice = item1.split('-');
- // 组合商品编码
- item.goodsNumsPrice[index]['imgId'] = goodsNumsPrice[0];
- // 组合商品名称
- item.goodsNumsPrice[index]['goodsName'] = goodsNumsPrice[
- 1];
- let numsPrice = goodsNumsPrice[2].split(':');
- // 组合价格
- item.goodsNumsPrice[index]['nums'] = numsPrice[0];
- // 组合数量
- item.goodsNumsPrice[index]['price'] = numsPrice[1];
- // 商品总数量
- item.goodsNums = this.$M_Big(item.goodsNums).add(numsPrice[
- 0]);
- }
- });
- }
- });
- // 从商品列表中找到对应的商品路径(因为商品图片是存到前台的,要根据后台的标识找到路径)
- goodsList.forEach(item => {
- records.forEach(item1 => {
- // 给前台数据赋值接口数组
- if (item1.goodsNumsPrice.length > 0) {
- item1.goodsNumsPrice.forEach(item2 => {
- if (item2.imgId === item.imgId) {
- // 商品图片
- item2.imgUrl = item.imgUrl;
- }
- });
- }
- });
- });
- }
- this.$refs.paging.complete(records);
- });
- },
- // 点击订单状态标签
- statusClick(e) {
- this.current = e.index;
- this.$refs.paging.reload();
- },
- // 复制文本到粘贴板
- setClipboardData(sn) {
- // #ifndef H5
- uni.setClipboardData({
- // 优先使用copyText字段,如果没有,则默认使用text字段当做复制的内容
- data: sn,
- success: () => {
- this.showToast && uni.$u.toast('复制成功')
- },
- fail: () => {
- this.showToast && uni.$u.toast('复制失败')
- },
- complete: () => {}
- })
- // #endif
- }
- }
- };
- </script>
- <style lang="scss"></style>
|