Files
cashier_app/pageMarket/discountActivity/index.vue
2025-10-17 11:25:21 +08:00

239 lines
5.3 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="box min-page">
<view class="top">
<my-button type="primary" height="72" @click="toAdd"
>添加满减活动</my-button
>
</view>
<view class="list u-font-28">
<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">
<text> ID:{{ item.id }} </text>
<text class="u-m-l-24"> 优先级:{{ item.sort }} </text>
</view>
<view class="tag" :class="[returnTagClass(item)]">{{ returnStatus(item) }}</view>
</view>
<view class="coor-333 font-bold u-m-t-16"
>活动日期{{ returnActivityDate(item) }}</view
>
<view class="u-font-24 color-666 u-m-t-16 u-flex u-row-between">
<text class="no-wrap"> {{ returnActivityWeek(item) }}</text>
<text class="no-wrap"> {{ returnCanUseTime(item) }}</text>
</view>
<view class="u-m-t-26">
<u-line></u-line>
</view>
<view class="color-333 u-m-t-24">
<view>活动内容</view>
<view>{{ returnActivityContent(item) }}</view>
</view>
<view class="u-flex u-row-right u-m-t-26" style="gap: 16rpx">
<button class="my-btn edit-btn" @click="toEdit(item)">编辑</button>
<button
class="my-btn delete-btn"
@click="deleteDiscountActivity(item)"
>
删除
</button>
</view>
</view>
<view class="u-p-30">
<up-loadmore :status="isEnd ? 'nomore' : 'loading'"></up-loadmore>
</view>
</view>
</view>
</template>
<script setup>
import {
onLoad,
onReady,
onShow,
onPageScroll,
onReachBottom,
onBackPress,
} from "@dcloudio/uni-app";
import { ref, onMounted } from "vue";
import * as discountActivityApi from "@/http/api/market/discountActivity.js";
import dayjs from "dayjs";
const list = ref([]);
const pageNum = ref(1);
const isEnd = ref(false);
async function getList() {
const res = await discountActivityApi.getList({
pageNum: pageNum.value,
pageSize: 10,
});
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);
}
}
function returnActivityDate(item) {
return `${item.validStartTime.split(" ")[0]}${
item.validEndTime.split(" ")[0]
}`;
}
function returnActivityWeek(item) {
if (!item.useDays.length) {
return "每天都不可用";
}
return "每" + item.useDays.replaceAll(",", "、");
}
function returnCanUseTime(item) {
if (item.useTimeType != "all") {
return `${item.useStartTime}${item.useEndTime}`;
} else {
return "全天可用";
}
}
function returnActivityContent(item) {
return item.thresholds
.map((cur) => {
return `${cur.fullAmount}${cur.discountAmount}`;
}, "")
.join("、");
}
function toAdd() {
clearDiscountActivity();
uni.navigateTo({
url: "/pageMarket/discountActivity/add",
});
}
function clearDiscountActivity() {
uni.removeStorageSync("discountActivity");
}
function toEdit(item) {
uni.setStorageSync("discountActivity", { ...item });
uni.navigateTo({
url: "/pageMarket/discountActivity/add?id=" + item.id,
});
}
function deleteDiscountActivity(item) {
uni.showModal({
title: "确认删除",
content: `是否确认删除?`,
success: async (res) => {
console.log(res);
if (res.confirm) {
const res = await discountActivityApi.del(item.id);
uni.showToast({
title: "删除成功",
icon: "none",
duration: 2000,
success: function () {
getList();
},
});
}
},
});
}
function returnStatus(item) {
if (item.status == 1) {
//未开始
return "未开始";
}
if (item.status == 2) {
//进行中
return "进行中";
}
if (item.status == 3) {
//已结束
return "已结束";
}
}
function returnTagClass(item) {
if (item.status == 1) {
//未开始
return "tag-priority";
}
if (item.status == 2) {
//进行中
return "tag-green";
}
if (item.status == 3) {
//已结束
return "tag-end";
}
}
onReachBottom(() => {
if (!isEnd.value) {
pageNum.value++;
getList();
}
});
onShow(() => {
pageNum.value = 1;
getList();
});
</script>
<style lang="scss" scoped>
.box {
padding: 0 30rpx;
background: #f7f7f7;
}
.top {
margin-top: 18rpx;
}
.list {
.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;
}
&.tag-priority {
background-color: #fff2e6;
color: #ff9900;
}
&.tag-gray {
background-color: #f7f7f7;
color: #999;
}
&.tag-green {
background-color: #edfff0;
color: #5bbc6d;
}
&.tag-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>