Files
cashier_app/pageMarket/consumeCashback/index.vue

211 lines
4.8 KiB
Vue

<template>
<view class="min-page">
<up-sticky>
<view class="bg-fff top">
<my-tabs v-model="active" :list="tabs" textKey="label"></my-tabs>
<view class="u-flex u-m-t-40" v-if="active == 1">
<view class="u-flex color-333" @click="showShopSelActionSheetFun">
<text class="u-line-1" style="max-width: 300rpx">{{ selShop.shopName || '全部门店' }}</text>
<up-icon name="arrow-down-fill" size="12" color="#333"></up-icon>
</view>
<view class="u-flex-1 u-p-l-16">
<up-search bgColor="#F9F9F9" height="60rpx" :showAction="false" placeholder="搜索订单号" @search="search" @clear="search" v-model="searchText"></up-search>
</view>
</view>
</view>
</up-sticky>
<configVue v-if="active == 0" @get="getConfigData"></configVue>
<view class="list u-font-28" v-if="active == 1">
<view class="u-m-t-32 item" v-for="item in list" :key="item.id">
<view class="u-flex u-row-between">
<view class="color-999 u-font-24">
<view>关联订单:{{ item.orderNo }}</view>
<view class="u-m-t-14">
<text class="color-333 font-bold u-m-r-20">{{ item.shopName }}</text>
<text class="color-666 u-font-24">{{ item.createTime }}</text>
</view>
</view>
<text class="color-999 u-font-24">ID:{{ item.id }}</text>
</view>
<view class="u-m-t-22">
<u-line></u-line>
</view>
<view class="color-333 u-flex u-row-between u-font-28" style="margin-top: 52rpx">
<view>
<view class="color-666">{{ item.nickName }}</view>
<view class="color-333 u-m-t-24 u-line-1">{{ item.phone }}</view>
</view>
<view class="u-flex u-text-center">
<view>
<view class="color-666">返现金额</view>
<view class="color-333 u-m-t-24">{{ item.cashbackAmount || 0 }}</view>
</view>
<view style="margin-left: 54rpx">
<view class="color-666">支付金额</view>
<view class="color-333 u-m-t-24">{{ item.amount || 0 }}</view>
</view>
</view>
</view>
<view style="height: 32rpx"></view>
</view>
<view class="u-p-30">
<up-loadmore :status="isEnd ? 'nomore' : 'loading'"></up-loadmore>
</view>
</view>
<!-- 选择门店 -->
<shopSelActionSheetVue @choose="chooseShop" v-model="showShopSelActionSheet" title="选择门店"></shopSelActionSheetVue>
<my-marketing-mask name="消费返现" v-if="isMarketShow(configInfo)"></my-marketing-mask>
</view>
</template>
<script setup>
import { onLoad, onReady, onShow, onPageScroll, onReachBottom, onBackPress } from '@dcloudio/uni-app';
import { isMainShop, isMarketShow } from '@/store/account.js';
import { ref, onMounted, watch } from 'vue';
import * as consumeCashbackApi from '@/http/api/market/consumeCashback.js';
import configVue from './components/config.vue';
import shopSelActionSheetVue from '@/pageMarket/components/shop-sel-action-sheet.vue';
const tabs = [
{
label: '基本设置',
value: 'basic'
},
{
label: '返现明细',
value: 'recoders'
}
];
const configInfo = ref({});
function getConfigData(e) {
configInfo.value = e;
}
const list = ref([]);
const pageNum = ref(1);
const isEnd = ref(false);
const selShop = ref({
shopId: '',
shopName: ''
});
const searchText = ref('');
function search() {
pageNum.value = 1;
getList();
}
function chooseShop(e) {
selShop.value = e;
}
watch(
() => selShop.value.shopId,
(newval) => {
pageNum.value = 1;
getList();
}
);
async function getList() {
const res = await consumeCashbackApi.getList({
pageNum: pageNum.value,
pageSize: 10,
shopId: selShop.value.shopId,
key: searchText.value
});
if (res) {
if (pageNum.value == 1) {
list.value = res.records || [];
} else {
list.value = [...list.value, ...(res.records || [])];
}
isEnd.value = pageNum.value >= res.totalPage * 1 ? true : false;
console.log(isEnd.value);
}
}
// 显示选择门店弹窗
const showShopSelActionSheet = ref(false);
function showShopSelActionSheetFun() {
showShopSelActionSheet.value = true;
}
const active = ref(0);
watch(
() => active.value,
(newval) => {
console.log(newval);
pageNum.value = 1;
getList();
}
);
onReachBottom(() => {
if (!isEnd.value) {
pageNum.value++;
getList();
}
});
onShow(() => {
pageNum.value = 1;
getList();
});
</script>
<style lang="scss" scoped>
.min-page {
background: #f7f7f7;
}
.box {
}
.top {
padding: 32rpx 24rpx;
}
.list {
padding: 0 30rpx;
.item {
padding: 32rpx 24rpx;
border-radius: 14rpx;
background-color: #fff;
overflow: hidden;
}
}
.tag {
border-radius: 12rpx;
padding: 8rpx 22rpx;
font-size: 28rpx;
&.success {
background-color: #edfff0;
color: #5bbc6d;
}
&.end {
background-color: #f7f7f7;
color: #999;
}
}
.my-btn {
font-size: 28rpx;
line-height: 36rpx;
padding: 8rpx 32rpx;
border-radius: 12rpx;
margin: 0;
}
.edit-btn {
background: #e6f0ff;
color: $my-main-color;
}
.delete-btn {
background: #ffe7e6;
color: #ff1c1c;
}
</style>