You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

175 lines
4.8 KiB
Vue

<template>
<view class="content">
<kevyloading v-if="loading" type="bsm-loader" color="#618af8" transparent></kevyloading>
<view class=" bg-white sticky top-0 z-50">
<wd-search @search="search({ value: params.keywords })" @clear="() => { search({ value: '' }) }"
v-model="params.keywords" hide-cancel>
<template #prefix>
<view class="search-type">
<text>门店名称</text>
</view>
</template>
</wd-search>
</view>
<div class="grid p-2">
<yList height="90vh" ref="yListRef" :apiObj="orderApi.checkLog" :params="{ ...params }">
<template #default="{ list: orderList }">
<div v-for="order of orderList" class="rounded-md overflow-hidden">
<wd-card class="rounded-md overflow-hidden" type="rectangle">
<template #title>
<view class="title">
<view>{{ order.shop?.name || '--' }}</view>
<view class="text-end">
<view @click="utils.copy(order.order_no, '核销编号复制成功')" class="title-tip" v-if="order.order_no">
核销编号: {{ order.order_no }}
<wd-icon name="file-copy" size="14px"></wd-icon>
</view>
<view @click="utils.copy(order.check_code, '核销编码复制成功')" class="title-tip" v-if="order.check_code">
核销编码: {{ order.check_code }}
<wd-icon name="file-copy" size="14px"></wd-icon>
</view>
</view>
</view>
</template>
<view v-show="!order.new_certificates.length">
--
</view>
<view v-for="i in order.new_certificates" style="" class="orderBox my-2">
<image mode="aspectFill" :src="i.goods.pic_url" :alt="order.name"
style="min-width: 60px;width: 60px;;height: 60px;border-radius: 4px; margin-right: 12px;" />
<view>
<view class="line2" style="color: rgba(0,0,0,0.85); font-size: 24rpx;">{{ i.goods.name }}</view>
<div class="num flex">
<div class="mr-4">数量:{{ i.num }}</div>
<div>金额:{{ i.original_amount }}</div>
</div>
</view>
</view>
<template #footer>
<view class="bg-gray-50 p-2 mb-2.5 flex justify-between" style="font-size: 22rpx;">
<view class="flex text-wrap">核销码:<view @click="utils.copy(order.qr_code, '核销码复制成功')">点我复制</view>
</view>
<view>核销时间:{{ order.create_time }} </view>
</view>
<view class="flex justify-between items-center">
<view>
核销平台:{{ ["自提核销", "抖音商品券", "抖音金额券",
"支付宝团购"][order.type] }}
</view>
<view>
核销方式:
<wd-tag class="py-2" :type="['success', 'primary'][order.check_origin]">{{ ["pos",
""][order.check_origin]
}}</wd-tag>
</view>
</view>
</template>
</wd-card>
</div>
</template>
</yList>
</div>
<wd-toast />
<wd-message-box></wd-message-box>
</view>
</template>
<script setup>
import { ref } from 'vue';
import utils from '@/utils/utils.js';
import orderApi from '@/api/store/order.js';
import kevyloading from "@/components/kevy-loading/kevy-loading";
import yList from "/components/yList/index.vue";
const yListRef = ref(null);
const search = ({ value } = {}) => {
yListRef.value.upData({
keywords: value,
});
};
const params = ref({
nickname: "",
mobile: "",
origin: '',
value: ''
});
/**
* @type {Ref<boolean>}
* 控制页面加载状态的 Ref
*/
const loading = ref(false);
</script>
<style lang="scss" scoped>
.search-type {
position: relative;
height: 30px;
line-height: 30px;
padding: 0 8px 0 16px;
font-size: 24rpx;
color: rgba(0, 0, 0, .45);
}
.search-type::after {
position: absolute;
content: '';
width: 1px;
right: 0;
top: 5px;
bottom: 5px;
background: rgba(0, 0, 0, 0.25);
}
.search-type {
:deep(.icon-arrow) {
display: inline-block;
font-size: 20px;
vertical-align: middle;
}
}
.orderBox,
.title {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
.orderBox {
justify-content: flex-start;
}
.title {
justify-content: space-between;
}
.title-tip {
color: rgba(0, 0, 0, 0.25);
font-size: 12px;
}
</style>