185 lines
4.7 KiB
Vue
185 lines
4.7 KiB
Vue
<template>
|
||
<view class="min-page bg-f7 u-font-28 color-333 u-p-t-32">
|
||
<view class="bg-fff">
|
||
<view class="default-box u-flex u-row-between border-bottom">
|
||
<text class="font-bold">优惠券名称</text>
|
||
<text>{{ couponActivity.couponJson.couponName }}</text>
|
||
</view>
|
||
<view class="default-box u-flex u-row-between border-bottom">
|
||
<text class="font-bold">发放数量</text>
|
||
<text>{{ couponActivity.giveNum }}</text>
|
||
</view>
|
||
<view class="default-box u-flex u-row-between border-bottom">
|
||
<text class="font-bold">已领取数量</text>
|
||
<text>{{ couponActivity.giveNum - couponActivity.leftNum }}</text>
|
||
</view>
|
||
<view class="default-box u-flex u-row-between border-bottom">
|
||
<text class="font-bold">剩余数量</text>
|
||
<text>{{ couponActivity.leftNum }}</text>
|
||
</view>
|
||
<view class="default-box u-flex u-row-between border-bottom">
|
||
<text class="font-bold">已使用数量</text>
|
||
<text>{{ couponActivity.useNum }}</text>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="u-flex u-row-right default-box u-p-r-32 bg-fff">
|
||
<up-select
|
||
:options="statusOptions"
|
||
@select="selectItem"
|
||
labelName="label"
|
||
>
|
||
<template #text>
|
||
<view class="select">
|
||
<text v-if="selStatus">{{ selStatus.label }}</text>
|
||
<text v-else class="color-999">请选择状态</text>
|
||
<up-icon name="arrow-down"></up-icon>
|
||
</view>
|
||
</template>
|
||
<template #icon> <view></view></template>
|
||
</up-select>
|
||
</view>
|
||
|
||
<view class="u-m-t-32 table bg-fff">
|
||
<view class="header">
|
||
<view class="user">用户</view>
|
||
<view class="gettime">领取时间</view>
|
||
<view class="usetime">使用时间</view>
|
||
<view class="status">状态</view>
|
||
<view class="operation">操作</view>
|
||
</view>
|
||
<view class="body">
|
||
<view class="item" v-for="(item,index) in 10" :key="index">
|
||
<view class="user">用户昵称(40239)</view>
|
||
<view class="gettime">2025/06/27 20:07:18)</view>
|
||
<view class="usetime">2025/01/15 08:02:38</view>
|
||
<view class="status">已使用</view>
|
||
<view class="operation status3">失效</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<up-loadmore :status="isEnd ? 'nomore' : 'loading'"></up-loadmore>
|
||
<view style="height: 40px"></view>
|
||
</view>
|
||
</template>
|
||
|
||
<script setup>
|
||
import { onReachBottom, onLoad } from "@dcloudio/uni-app";
|
||
import { reactive, ref, watch } from "vue";
|
||
import { onShow } from "@dcloudio/uni-app";
|
||
import go from "@/commons/utils/go.js";
|
||
import * as chatCouponApi from "@/http/api/market/chat";
|
||
const statusOptions = ref([
|
||
{ label: "全部", value: "" },
|
||
{ label: "未使用", value: 0 },
|
||
{ label: "已使用", value: 1 },
|
||
{ label: "已过期", value: 2 },
|
||
]);
|
||
const selStatus = ref("");
|
||
const query = reactive({
|
||
page: 1,
|
||
pageSize: 10,
|
||
status: "",
|
||
});
|
||
const options = reactive({
|
||
id: "",
|
||
});
|
||
|
||
function selectItem(item) {
|
||
selStatus.value = item;
|
||
}
|
||
|
||
watch(
|
||
() => selStatus.value,
|
||
(newVal, oldVal) => {
|
||
query.status = newVal.value;
|
||
refresh();
|
||
}
|
||
);
|
||
|
||
function refresh() {
|
||
query.page = 1;
|
||
isEnd.value = false;
|
||
getList();
|
||
}
|
||
|
||
const couponActivity = ref({});
|
||
|
||
const list = ref([]);
|
||
const isEnd = ref(false);
|
||
function getList() {
|
||
chatCouponApi.chatCouponRecord({ ...query, id: options.id }).then((res) => {
|
||
if (query.page == 1) {
|
||
list.value = res.records;
|
||
} else {
|
||
list.value.push(...res.records);
|
||
}
|
||
isEnd.value = query.page >= res.totalPage * 1;
|
||
});
|
||
}
|
||
|
||
onReachBottom(() => {
|
||
if (!isEnd.value) {
|
||
query.page++;
|
||
getList();
|
||
}
|
||
});
|
||
onLoad((opt) => {
|
||
Object.assign(options, opt);
|
||
const item = uni.getStorageSync("cach_couponActivity");
|
||
couponActivity.value = item || {};
|
||
console.log(item);
|
||
getList();
|
||
});
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.default-box {
|
||
padding: 24rpx 28rpx;
|
||
}
|
||
.select {
|
||
padding: 20rpx;
|
||
border-radius: 8rpx;
|
||
border: 2rpx solid #d9d9d9;
|
||
min-width: 322rpx;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
}
|
||
.table{
|
||
.user{
|
||
width: 142rpx;
|
||
}
|
||
.gettime{
|
||
width: 172rpx;
|
||
}
|
||
.usetime{
|
||
width: 158rpx;
|
||
}
|
||
.status{
|
||
width: 84rpx;
|
||
}
|
||
.operation{
|
||
width: 56rpx;
|
||
&.status3{
|
||
color: #FF383C;
|
||
}
|
||
}
|
||
.header{
|
||
display: flex;
|
||
justify-content: space-between;
|
||
padding: 32rpx 16rpx;
|
||
color: #666;
|
||
border-bottom: 1px solid #E5E5E5;
|
||
}
|
||
.body{
|
||
.item{
|
||
display: flex;
|
||
justify-content: space-between;
|
||
padding: 24rpx 16rpx;
|
||
border-bottom: 1px solid #E5E5E5;
|
||
}
|
||
}
|
||
}
|
||
</style>
|