优化订单优惠券详情显示问题
This commit is contained in:
@@ -17,17 +17,17 @@
|
||||
</view> -->
|
||||
<view class="status-wrap">
|
||||
<view class="item" :class="{ active: querForm.statusActiveIndex == 0 }" @click="tabChange(0)">
|
||||
<text class="t">商品兑换券 {{returnSelNumber(0)}}</text>
|
||||
<text class="t">商品兑换券 {{ returnSelNumber(0) }}</text>
|
||||
</view>
|
||||
<view class="item" :class="{ active: querForm.statusActiveIndex == 1 }" @click="tabChange(1)">
|
||||
<text class="t">折扣优惠券{{returnSelNumber(1)}}</text>
|
||||
<text class="t">折扣优惠券{{ returnSelNumber(1) }}</text>
|
||||
</view>
|
||||
|
||||
<view class="icon-wrap"
|
||||
:style="{ width: `${100 / statusList.length}%`, left: `${(100 / statusList.length) * querForm.statusActiveIndex}%` }">
|
||||
<image class="active-icon"
|
||||
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAMCAYAAAB4MH11AAACKUlEQVR4AaRTS2sTURT+MpkxUzNtRpuYpBsrqbgQH6BYRHGllloQN+5cuNeV6MKfoj9BwYUgIsXHRqE+SluliFLbBqmENJNMMpMm87qecw1NglJse+HMPeee833nce8oIgpFq7wsGt/fCb9eFrtdfmNd1L+9Jc4Vog6E4jcqqM0/R+3zNOwv09jtshdfSx7mDJwKqAMfIvAAEaFVWkLgWjvOEbVdtNa+Epf4wxmFUNTkfqiDGUkqogDu8icKiKS9nQ9jnR8fqM5AwuJJE/G9JhRF05E8dAqIKeDlrsyiWVxg9f+Fum+uzsFZmtnEGIVxKHsGIFn1bAF6ZlQ6I28D9uIrmYSrkodbfETgw6GubZo9Yzk0kR4Fc7IuE8QUFebJKSTSB/kM4UYd1scnKL18QInm4Vk/6W6qiNoOwpZDuoX2elFWXHrzELW5Z+RzJVbPHca+09doIKq0ZQLW+C44iWbm2ZQSNMqozj5F5f1jWCSVGd4fwerstYUXCOplGcsfxponJqHS7Nlm2UyAWAza0AFkzt1A6uhFqEYaoHsR9BLCpg2vukZVr5IU4dV+yU7oRikkTrHDMI9PIHPhJrhQ9Kxugs6hkkhi8Mh5DI9flyCep6ImOt7uxnF6dgypYxMy1hg7S0/yH3FdSL+mpbIw6CVwVSNX7yM/eQfZS7eQu3wb+St3MTJ1D2nq1iicgZbK9YN7rL866PH1qfGBIWj0v/Do4rrR59vK+A0AAP//GfTndQAAAAZJREFUAwCu+SjIaSGpLwAAAABJRU5ErkJggg==">
|
||||
</image>
|
||||
<view class="icon-wrap" :style="{ width: `${100 / statusList.length}%`, left: `${(100 / statusList.length) * querForm.statusActiveIndex}%` }">
|
||||
<image
|
||||
class="active-icon"
|
||||
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAMCAYAAAB4MH11AAACKUlEQVR4AaRTS2sTURT+MpkxUzNtRpuYpBsrqbgQH6BYRHGllloQN+5cuNeV6MKfoj9BwYUgIsXHRqE+SluliFLbBqmENJNMMpMm87qecw1NglJse+HMPeee833nce8oIgpFq7wsGt/fCb9eFrtdfmNd1L+9Jc4Vog6E4jcqqM0/R+3zNOwv09jtshdfSx7mDJwKqAMfIvAAEaFVWkLgWjvOEbVdtNa+Epf4wxmFUNTkfqiDGUkqogDu8icKiKS9nQ9jnR8fqM5AwuJJE/G9JhRF05E8dAqIKeDlrsyiWVxg9f+Fum+uzsFZmtnEGIVxKHsGIFn1bAF6ZlQ6I28D9uIrmYSrkodbfETgw6GubZo9Yzk0kR4Fc7IuE8QUFebJKSTSB/kM4UYd1scnKL18QInm4Vk/6W6qiNoOwpZDuoX2elFWXHrzELW5Z+RzJVbPHca+09doIKq0ZQLW+C44iWbm2ZQSNMqozj5F5f1jWCSVGd4fwerstYUXCOplGcsfxponJqHS7Nlm2UyAWAza0AFkzt1A6uhFqEYaoHsR9BLCpg2vukZVr5IU4dV+yU7oRikkTrHDMI9PIHPhJrhQ9Kxugs6hkkhi8Mh5DI9flyCep6ImOt7uxnF6dgypYxMy1hg7S0/yH3FdSL+mpbIw6CVwVSNX7yM/eQfZS7eQu3wb+St3MTJ1D2nq1iicgZbK9YN7rL866PH1qfGBIWj0v/Do4rrR59vK+A0AAP//GfTndQAAAAZJREFUAwCu+SjIaSGpLwAAAABJRU5ErkJggg=="
|
||||
></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -37,7 +37,7 @@
|
||||
</view>
|
||||
<view class="title-wrap">
|
||||
<text class="t">可用红包</text>
|
||||
<text class="n">{{list.canUseCoupons.length}}张</text>
|
||||
<text class="n">{{ list.canUseCoupons.length }}张</text>
|
||||
</view>
|
||||
<view class="item" v-for="item in list.canUseCoupons" :key="item.id" @click="changeSelCoupon(item)">
|
||||
<view class="top">
|
||||
@@ -49,8 +49,7 @@
|
||||
<text class="t">{{ item.name }}</text>
|
||||
</view>
|
||||
<view class="view time">
|
||||
<text class="t">{{ dayjs(item.effectStartTime).format('YYYY.M.D') }} -
|
||||
{{ dayjs(item.effectEndTime).format('YYYY.M.D') }}</text>
|
||||
<text class="t">{{ dayjs(item.effectStartTime).format('YYYY.M.D') }} - {{ dayjs(item.effectEndTime).format('YYYY.M.D') }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn">
|
||||
@@ -58,12 +57,10 @@
|
||||
<up-icon name="checkmark-circle-fill" size="24" color="#FF3232"></up-icon>
|
||||
</view>
|
||||
<view class="round" v-else></view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<view class="btm">
|
||||
<view class="left">1、可适用门店:{{ item.useShops }}
|
||||
2、可适用商品:{{ item.foods }}3、可使用类型:{{ convertValuesToLabels(item.useType) }}</view>
|
||||
<view class="left">1、可适用门店:{{ item.useShops }} 2、可适用商品:{{ item.foods }}3、可使用类型:{{ convertValuesToLabels(item.useType) }}</view>
|
||||
<view class="right" @click.stop="showDetailHandle(item)">
|
||||
<text class="t">查看详情</text>
|
||||
</view>
|
||||
@@ -71,7 +68,7 @@
|
||||
</view>
|
||||
<view class="title-wrap">
|
||||
<text class="t">不可用红包</text>
|
||||
<text class="n">{{list.noCanUseCoupons.length}}张</text>
|
||||
<text class="n">{{ list.noCanUseCoupons.length }}张</text>
|
||||
</view>
|
||||
<view class="item disabled" v-for="item in list.noCanUseCoupons" :key="item.id">
|
||||
<view class="top">
|
||||
@@ -83,8 +80,7 @@
|
||||
<text class="t">{{ item.name }}</text>
|
||||
</view>
|
||||
<view class="view time">
|
||||
<text class="t">{{ dayjs(item.effectStartTime).format('YYYY.M.D') }} -
|
||||
{{ dayjs(item.effectEndTime).format('YYYY.M.D') }}</text>
|
||||
<text class="t">{{ dayjs(item.effectStartTime).format('YYYY.M.D') }} - {{ dayjs(item.effectEndTime).format('YYYY.M.D') }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn">
|
||||
@@ -98,7 +94,7 @@
|
||||
</view> -->
|
||||
<view class="error">
|
||||
<text class="t t1">不可用原因:</text>
|
||||
<text class="t t2">{{returnNoUseRestrictions(item) }}</text>
|
||||
<text class="t t2">{{ returnNoUseRestrictions(item) }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -125,9 +121,7 @@
|
||||
</view>
|
||||
<scroll-view class="popup-list" direction="vertical">
|
||||
<view class="ul">
|
||||
<view class="li" v-for="(item, index) in selectListItemDetails" :key="index">
|
||||
{{ index + 1 }}、{{ item }}
|
||||
</view>
|
||||
<view class="li" v-for="(item, index) in selectListItemDetails" :key="index">{{ index + 1 }}、{{ item }}</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
@@ -136,59 +130,38 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import dayjs from 'dayjs';
|
||||
import {
|
||||
ref,
|
||||
reactive,
|
||||
onMounted,
|
||||
computed,
|
||||
watch
|
||||
} from 'vue';
|
||||
import {
|
||||
onLoad,
|
||||
onReady,
|
||||
onShow,
|
||||
onPageScroll,
|
||||
onReachBottom,
|
||||
onBackPress
|
||||
} from '@dcloudio/uni-app';
|
||||
import {
|
||||
APIcouponfindByUserId,
|
||||
APIfindCoupon,
|
||||
getCouponShops
|
||||
} from '@/common/api/member.js';
|
||||
import {
|
||||
findCoupon
|
||||
} from '@/common/api/market/coupon.js';
|
||||
import couponIcon from '@/pages/user/components/coupon-icon.vue';
|
||||
import * as UTILS from '@/utils/goods-utils.js'
|
||||
import {
|
||||
useCartsStore
|
||||
} from '@/stores/carts.js';
|
||||
const cartStore = useCartsStore()
|
||||
import dayjs from 'dayjs';
|
||||
import { ref, reactive, onMounted, computed, watch } from 'vue';
|
||||
import { onLoad, onReady, onShow, onPageScroll, onReachBottom, onBackPress } from '@dcloudio/uni-app';
|
||||
import { APIcouponfindByUserId, APIfindCoupon, getCouponShops } from '@/common/api/member.js';
|
||||
import { findCoupon } from '@/common/api/market/coupon.js';
|
||||
import couponIcon from '@/pages/user/components/coupon-icon.vue';
|
||||
import * as UTILS from '@/utils/goods-utils.js';
|
||||
import { useCartsStore } from '@/stores/carts.js';
|
||||
const cartStore = useCartsStore();
|
||||
|
||||
|
||||
//返回不可用原因
|
||||
function returnNoUseRestrictions(item) {
|
||||
//返回不可用原因
|
||||
function returnNoUseRestrictions(item) {
|
||||
if (item.noUseRestrictions) {
|
||||
return item.noUseRestrictions
|
||||
return item.noUseRestrictions;
|
||||
}
|
||||
if (item.canuseResult) {
|
||||
return item.canuseResult.reason
|
||||
}
|
||||
return ''
|
||||
return item.canuseResult.reason;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
const show = ref(false);
|
||||
const show = ref(false);
|
||||
|
||||
const querForm = ref({
|
||||
const querForm = ref({
|
||||
searchValue: '',
|
||||
shopId: '',
|
||||
shopName: '',
|
||||
statusActiveIndex: 0
|
||||
});
|
||||
});
|
||||
|
||||
const statusList = ref([{
|
||||
const statusList = ref([
|
||||
{
|
||||
value: 0,
|
||||
label: '商品兑换券',
|
||||
bg: '#333333',
|
||||
@@ -200,31 +173,48 @@
|
||||
bg: '#F8F8F8',
|
||||
color: '#999999'
|
||||
}
|
||||
]);
|
||||
const list = reactive({
|
||||
]);
|
||||
const list = reactive({
|
||||
page: 1,
|
||||
size: 10,
|
||||
status: 'nomore',
|
||||
data: [],
|
||||
noCanUseCoupons: [],
|
||||
canUseCoupons: []
|
||||
});
|
||||
});
|
||||
|
||||
const showDetail = ref(false);
|
||||
const selectListItem = ref('');
|
||||
const selectListItemDetails = ref([]);
|
||||
|
||||
|
||||
const showDetail = ref(false);
|
||||
const selectListItem = ref('');
|
||||
const selectListItemDetails = ref([]);
|
||||
|
||||
function showDetailHandle(item) {
|
||||
function showDetailHandle(item) {
|
||||
showDetail.value = true;
|
||||
|
||||
// 1. 定义每个规则的独立描述(仅“其他优惠券”需判断item.type)
|
||||
const ruleList = [];
|
||||
|
||||
// 规则1:限时折扣同享(始终显示)
|
||||
const discountRule = item.discountShare ? '与限时折扣同享' : '不与限时折扣同享';
|
||||
ruleList.push(discountRule);
|
||||
|
||||
// 规则2:会员价/会员折扣同享(始终显示)
|
||||
const vipRule = item.vipPriceShare ? '与会员价/会员折扣同享' : '不与会员价/会员折扣同享';
|
||||
ruleList.push(vipRule);
|
||||
|
||||
// 规则3:其他优惠券同享(仅item.type=2时显示)
|
||||
if (item.type === 2) {
|
||||
const otherCouponRule = item.otherCouponShare ? '与其他优惠券同享' : '不与其他优惠券同享';
|
||||
ruleList.push(otherCouponRule);
|
||||
}
|
||||
const shareRuleText = `${ruleList.join('、')}`;
|
||||
|
||||
selectListItemDetails.value = [
|
||||
`可适用门店:${item.useShops}`,
|
||||
`可适用商品:${item.foods}`,
|
||||
`可使用类型:${convertValuesToLabels(item.useType)}`,
|
||||
`可用时间段:${item.useTimeType == 'all' ? '全段时间可用' : `${item.useStartTime} - ${item.useEndTime}`}`,
|
||||
`限量规则:每人限领${item.getLimit == -10086 ? `无限张` : `${item.getLimit}张`},每日最多可使用${item.useLimit == -10086 ? `无限张` : `${item.useLimit}张`}`,
|
||||
`同享规则:${item.vipPriceShare ? '与限时折扣同享、与会员价同享' : '不与限时折扣同享、与会员价同享'}`,
|
||||
`同享规则:${shareRuleText}`,
|
||||
`其它说明:${item.ruleDetails || '无'}`
|
||||
];
|
||||
|
||||
@@ -235,104 +225,103 @@
|
||||
if (item.type == 3) {
|
||||
selectListItemDetails.value.unshift(`最高抵扣${item.maxDiscountAmount}元`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function returnSelNumber(index) {
|
||||
function returnSelNumber(index) {
|
||||
if (index) {
|
||||
if (couponSel.value.id) {
|
||||
return '(1)'
|
||||
return '(1)';
|
||||
} else {
|
||||
return '(0)'
|
||||
return '(0)';
|
||||
}
|
||||
} else {
|
||||
if (goodsCouponSel.value.id) {
|
||||
return '(1)'
|
||||
return '(1)';
|
||||
} else {
|
||||
return '(0)'
|
||||
return '(0)';
|
||||
}
|
||||
}
|
||||
}
|
||||
// 搜索
|
||||
function searchHandle() {
|
||||
}
|
||||
// 搜索
|
||||
function searchHandle() {
|
||||
list.page = 1;
|
||||
list.status = 'nomore';
|
||||
getCouponList();
|
||||
}
|
||||
}
|
||||
|
||||
// 切换类型
|
||||
function tabChange(index) {
|
||||
// 切换类型
|
||||
function tabChange(index) {
|
||||
querForm.value.statusActiveIndex = index;
|
||||
list.page = 1;
|
||||
list.status = 'nomore';
|
||||
getCouponList();
|
||||
}
|
||||
}
|
||||
|
||||
function changeSelCoupon(item) {
|
||||
function changeSelCoupon(item) {
|
||||
if (querForm.value.statusActiveIndex) {
|
||||
if (couponSel.value.id == item.id) {
|
||||
couponSel.value = {
|
||||
id: ''
|
||||
}
|
||||
};
|
||||
} else {
|
||||
couponSel.value = item
|
||||
couponSel.value = item;
|
||||
}
|
||||
} else {
|
||||
if (goodsCouponSel.value.id == item.id) {
|
||||
goodsCouponSel.value = {
|
||||
id: ''
|
||||
}
|
||||
};
|
||||
} else {
|
||||
goodsCouponSel.value = item
|
||||
}
|
||||
goodsCouponSel.value = item;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const couponSel = ref({
|
||||
const couponSel = ref({
|
||||
id: ''
|
||||
})
|
||||
const goodsCouponSel = ref({
|
||||
});
|
||||
const goodsCouponSel = ref({
|
||||
id: ''
|
||||
})
|
||||
const quansSelArr = computed(() => {
|
||||
});
|
||||
const quansSelArr = computed(() => {
|
||||
return [couponSel.value, goodsCouponSel.value].filter((v) => v.id);
|
||||
})
|
||||
});
|
||||
|
||||
function isActive(item) {
|
||||
function isActive(item) {
|
||||
if (querForm.value.statusActiveIndex) {
|
||||
return couponSel.value.id == item.id
|
||||
return couponSel.value.id == item.id;
|
||||
} else {
|
||||
return goodsCouponSel.value.id == item.id
|
||||
}
|
||||
return goodsCouponSel.value.id == item.id;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取优惠券列表
|
||||
async function getCouponList() {
|
||||
// 获取优惠券列表
|
||||
async function getCouponList() {
|
||||
try {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask: true
|
||||
});
|
||||
const res = await findCoupon({
|
||||
shopUserId: uni.cache.get('shopUserInfo').id,
|
||||
shopUserId: uni.cache.get('shopUserInfo').id
|
||||
});
|
||||
|
||||
let canUseGoodsCoupon = [];
|
||||
let canUseDiscountCoupon = [];
|
||||
|
||||
let canUseGoodsCoupon = []
|
||||
let canUseDiscountCoupon = []
|
||||
|
||||
let noUseGoodsCoupon = []
|
||||
let noUseDiscountCoupon = []
|
||||
const user = uni.cache.get('shopUserInfo')
|
||||
let shopInfo = uni.cache.get('shopInfo') || {}
|
||||
let noUseGoodsCoupon = [];
|
||||
let noUseDiscountCoupon = [];
|
||||
const user = uni.cache.get('shopUserInfo');
|
||||
let shopInfo = uni.cache.get('shopInfo') || {};
|
||||
if (!shopInfo.isMemberPrice) {
|
||||
shopInfo = {}
|
||||
shopInfo = {};
|
||||
}
|
||||
const goodsOrderPrice = uni.getStorageSync('goodsOrderPrice') || 0
|
||||
const dinnerType = cartStore.dinnerType
|
||||
const goodsOrderPrice = uni.getStorageSync('goodsOrderPrice') || 0;
|
||||
const dinnerType = cartStore.dinnerType;
|
||||
const canDikouGoodsArr = UTILS.returnCanDikouGoods(cartStore.allGoods, [], user);
|
||||
const shopId = uni.cache.get('shopId')
|
||||
const shopId = uni.cache.get('shopId');
|
||||
for (let i = 0; i < res.length; i++) {
|
||||
const coupon = res[i]
|
||||
const coupon = res[i];
|
||||
const canuseResult = UTILS.returnCouponCanUse({
|
||||
canDikouGoodsArr,
|
||||
coupon,
|
||||
@@ -340,101 +329,81 @@
|
||||
user,
|
||||
selCoupon: quansSelArr.value,
|
||||
shopInfo
|
||||
})
|
||||
const {
|
||||
canUse,
|
||||
reason
|
||||
} = canuseResult
|
||||
});
|
||||
const { canUse, reason } = canuseResult;
|
||||
if (coupon.type == 2) {
|
||||
if (canUse || goodsCouponSel.value.id == coupon.id) {
|
||||
canUseGoodsCoupon.push(coupon)
|
||||
canUseGoodsCoupon.push(coupon);
|
||||
} else {
|
||||
noUseGoodsCoupon.push({
|
||||
...coupon,
|
||||
canuseResult
|
||||
})
|
||||
});
|
||||
}
|
||||
} else {
|
||||
if (canUse || couponSel.value.id == coupon.id) {
|
||||
canUseDiscountCoupon.push(coupon)
|
||||
canUseDiscountCoupon.push(coupon);
|
||||
} else {
|
||||
noUseDiscountCoupon.push({
|
||||
...coupon,
|
||||
canuseResult
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
//商品券
|
||||
canUseGoodsCoupon = canUseGoodsCoupon.map(v => {
|
||||
const discount = UTILS.returnCouponDiscount(
|
||||
canDikouGoodsArr,
|
||||
v,
|
||||
user,
|
||||
goodsOrderPrice,
|
||||
quansSelArr.value,
|
||||
shopInfo
|
||||
);
|
||||
canUseGoodsCoupon = canUseGoodsCoupon.map((v) => {
|
||||
const discount = UTILS.returnCouponDiscount(canDikouGoodsArr, v, user, goodsOrderPrice, quansSelArr.value, shopInfo);
|
||||
return {
|
||||
...v,
|
||||
discount,
|
||||
discountAmount: discount ? discount.discountPrice : v.discountAmount,
|
||||
discountAmount: discount ? discount.discountPrice : v.discountAmount
|
||||
};
|
||||
})
|
||||
});
|
||||
//非商品券
|
||||
canUseDiscountCoupon = canUseDiscountCoupon.map(v => {
|
||||
const discount = UTILS.returnCouponDiscount(
|
||||
canDikouGoodsArr,
|
||||
v,
|
||||
user,
|
||||
goodsOrderPrice,
|
||||
quansSelArr.value,
|
||||
shopInfo
|
||||
|
||||
);
|
||||
canUseDiscountCoupon = canUseDiscountCoupon.map((v) => {
|
||||
const discount = UTILS.returnCouponDiscount(canDikouGoodsArr, v, user, goodsOrderPrice, quansSelArr.value, shopInfo);
|
||||
return {
|
||||
...v,
|
||||
discount,
|
||||
discountAmount: discount ? discount.discountPrice : v.discountAmount,
|
||||
}
|
||||
})
|
||||
discountAmount: discount ? discount.discountPrice : v.discountAmount
|
||||
};
|
||||
});
|
||||
|
||||
if (querForm.value.statusActiveIndex == 0) {
|
||||
list.noCanUseCoupons = noUseGoodsCoupon
|
||||
list.canUseCoupons = canUseGoodsCoupon
|
||||
list.noCanUseCoupons = noUseGoodsCoupon;
|
||||
list.canUseCoupons = canUseGoodsCoupon;
|
||||
} else {
|
||||
list.noCanUseCoupons = noUseDiscountCoupon
|
||||
list.canUseCoupons = canUseDiscountCoupon
|
||||
list.noCanUseCoupons = noUseDiscountCoupon;
|
||||
list.canUseCoupons = canUseDiscountCoupon;
|
||||
}
|
||||
|
||||
console.log('canUseGoodsCoupon', canUseGoodsCoupon);
|
||||
console.log('noUseGoodsCoupon', noUseGoodsCoupon);
|
||||
console.log('canUseDiscountCoupon', canUseDiscountCoupon);
|
||||
console.log('noUseDiscountCoupon', noUseDiscountCoupon);
|
||||
|
||||
|
||||
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
uni.hideLoading();
|
||||
}
|
||||
}
|
||||
|
||||
// 店铺列表滚动到底部了
|
||||
function scrollBottom() {
|
||||
// 店铺列表滚动到底部了
|
||||
function scrollBottom() {
|
||||
console.log('店铺列表滚动到底部了');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* 将value数组字符串转换为对应的label拼接字符串
|
||||
* @param {Array} options - 包含value和label的选项数组,格式如[{value: 'xxx', label: 'xxx'}, ...]
|
||||
* @param {string} valueStr - 包含value的数组字符串,格式如'["dine","pickup"]'
|
||||
* @param {string} separator - 标签拼接分隔符,默认值为'、'
|
||||
* @returns {string} 拼接后的label字符串,如"堂食、自取"
|
||||
*/
|
||||
function convertValuesToLabels(valueStr, options, separator = '、') {
|
||||
function convertValuesToLabels(valueStr, options, separator = '、') {
|
||||
try {
|
||||
options = [{
|
||||
options = [
|
||||
{
|
||||
value: 'dine',
|
||||
label: '堂食'
|
||||
},
|
||||
@@ -482,102 +451,91 @@
|
||||
console.error('转换失败:', error.message);
|
||||
return ''; // 出错时返回空字符串
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 选择店铺
|
||||
function selectShopHandle(item) {
|
||||
// 选择店铺
|
||||
function selectShopHandle(item) {
|
||||
querForm.value.shopId = item.shopId;
|
||||
querForm.value.shopName = item.shopName;
|
||||
list.page = 1;
|
||||
show.value = false;
|
||||
getCouponList();
|
||||
}
|
||||
// 获取当前店铺会员信息
|
||||
const shopList = ref([]);
|
||||
async function getCouponShopsAjax() {
|
||||
}
|
||||
// 获取当前店铺会员信息
|
||||
const shopList = ref([]);
|
||||
async function getCouponShopsAjax() {
|
||||
try {
|
||||
const res = await getCouponShops();
|
||||
shopList.value = res;
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onShow(() => {
|
||||
const couponArr = cartStore.backendCoupons.filter(v => v.type != 2)
|
||||
const goodsCouponArr = cartStore.backendCoupons.filter(v => v.type == 2)
|
||||
onShow(() => {
|
||||
const couponArr = cartStore.backendCoupons.filter((v) => v.type != 2);
|
||||
const goodsCouponArr = cartStore.backendCoupons.filter((v) => v.type == 2);
|
||||
if (couponArr.length) {
|
||||
couponSel.value = couponArr[0]
|
||||
couponSel.value = couponArr[0];
|
||||
}
|
||||
if (goodsCouponArr.length) {
|
||||
goodsCouponSel.value = goodsCouponArr[0]
|
||||
goodsCouponSel.value = goodsCouponArr[0];
|
||||
}
|
||||
getCouponList();
|
||||
});
|
||||
});
|
||||
|
||||
onLoad(() => {
|
||||
onLoad(() => {
|
||||
getCouponShopsAjax();
|
||||
});
|
||||
watch(() => quansSelArr.value, (newval) => {
|
||||
const user = uni.cache.get('shopUserInfo')
|
||||
let shopInfo = uni.cache.get('shopInfo') || {}
|
||||
});
|
||||
watch(
|
||||
() => quansSelArr.value,
|
||||
(newval) => {
|
||||
const user = uni.cache.get('shopUserInfo');
|
||||
let shopInfo = uni.cache.get('shopInfo') || {};
|
||||
if (!shopInfo.isMemberPrice) {
|
||||
shopInfo = {}
|
||||
shopInfo = {};
|
||||
}
|
||||
const goodsOrderPrice = uni.getStorageSync('goodsOrderPrice') || 0
|
||||
const dinnerType = cartStore.dinnerType
|
||||
const goodsOrderPrice = uni.getStorageSync('goodsOrderPrice') || 0;
|
||||
const dinnerType = cartStore.dinnerType;
|
||||
const canDikouGoodsArr = UTILS.returnCanDikouGoods(cartStore.allGoods, [], user);
|
||||
const shopId = uni.cache.get('shopId')
|
||||
let goodsCoupon = newval.filter(v => v.type == 2)
|
||||
let otherCoupon = newval.filter(v => v.type != 2)
|
||||
goodsCoupon = goodsCoupon.map(v => {
|
||||
const discount = UTILS.returnCouponDiscount(
|
||||
canDikouGoodsArr,
|
||||
v,
|
||||
user,
|
||||
goodsOrderPrice,
|
||||
[],
|
||||
shopInfo
|
||||
|
||||
);
|
||||
const shopId = uni.cache.get('shopId');
|
||||
let goodsCoupon = newval.filter((v) => v.type == 2);
|
||||
let otherCoupon = newval.filter((v) => v.type != 2);
|
||||
goodsCoupon = goodsCoupon.map((v) => {
|
||||
const discount = UTILS.returnCouponDiscount(canDikouGoodsArr, v, user, goodsOrderPrice, [], shopInfo);
|
||||
return {
|
||||
...v,
|
||||
discount,
|
||||
discountAmount: discount ? discount.discountPrice : v.discountAmount,
|
||||
}
|
||||
})
|
||||
otherCoupon = otherCoupon.map(v => {
|
||||
const discount = UTILS.returnCouponDiscount(
|
||||
canDikouGoodsArr,
|
||||
v,
|
||||
user,
|
||||
goodsOrderPrice,
|
||||
goodsCoupon,
|
||||
shopInfo
|
||||
);
|
||||
discountAmount: discount ? discount.discountPrice : v.discountAmount
|
||||
};
|
||||
});
|
||||
otherCoupon = otherCoupon.map((v) => {
|
||||
const discount = UTILS.returnCouponDiscount(canDikouGoodsArr, v, user, goodsOrderPrice, goodsCoupon, shopInfo);
|
||||
return {
|
||||
...v,
|
||||
discount,
|
||||
discountAmount: discount ? discount.discountPrice : v.discountAmount,
|
||||
}
|
||||
})
|
||||
uni.$emit('selCoupon', [...goodsCoupon, ...otherCoupon])
|
||||
}, {
|
||||
discountAmount: discount ? discount.discountPrice : v.discountAmount
|
||||
};
|
||||
});
|
||||
uni.$emit('selCoupon', [...goodsCoupon, ...otherCoupon]);
|
||||
},
|
||||
{
|
||||
deep: true
|
||||
})
|
||||
}
|
||||
);
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page {
|
||||
page {
|
||||
background-color: #f7f7f7;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style scoped lang="scss">
|
||||
.container {
|
||||
.container {
|
||||
padding: 136upx 28upx 28upx;
|
||||
}
|
||||
}
|
||||
|
||||
.header-wrap {
|
||||
.header-wrap {
|
||||
width: 100%;
|
||||
background-color: #fff;
|
||||
position: fixed;
|
||||
@@ -673,9 +631,9 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.list-wrap {
|
||||
.list-wrap {
|
||||
padding-top: 28upx;
|
||||
|
||||
.tips {
|
||||
@@ -846,9 +804,9 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.shoplist-popup {
|
||||
.shoplist-popup {
|
||||
padding: 0 28upx 28upx;
|
||||
|
||||
.title {
|
||||
@@ -941,5 +899,5 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user