Merge branch 'gyq' of https://newgitea.sxczgkj.cn/czg_team/cashier_wx into ymf
This commit is contained in:
@@ -23,11 +23,11 @@
|
||||
<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>
|
||||
@@ -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>
|
||||
@@ -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">
|
||||
@@ -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>
|
||||
@@ -137,46 +131,24 @@
|
||||
|
||||
<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 { 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 * as UTILS from '@/utils/goods-utils.js';
|
||||
import { useCartsStore } from '@/stores/carts.js';
|
||||
const cartStore = useCartsStore();
|
||||
|
||||
//返回不可用原因
|
||||
function returnNoUseRestrictions(item) {
|
||||
if (item.noUseRestrictions) {
|
||||
return item.noUseRestrictions
|
||||
return item.noUseRestrictions;
|
||||
}
|
||||
if (item.canuseResult) {
|
||||
return item.canuseResult.reason
|
||||
return item.canuseResult.reason;
|
||||
}
|
||||
return ''
|
||||
return '';
|
||||
}
|
||||
|
||||
const show = ref(false);
|
||||
@@ -188,7 +160,8 @@
|
||||
statusActiveIndex: 0
|
||||
});
|
||||
|
||||
const statusList = ref([{
|
||||
const statusList = ref([
|
||||
{
|
||||
value: 0,
|
||||
label: '商品兑换券',
|
||||
bg: '#333333',
|
||||
@@ -210,21 +183,38 @@
|
||||
canUseCoupons: []
|
||||
});
|
||||
|
||||
|
||||
|
||||
const showDetail = ref(false);
|
||||
const selectListItem = ref('');
|
||||
const selectListItemDetails = ref([]);
|
||||
|
||||
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 || '无'}`
|
||||
];
|
||||
|
||||
@@ -240,15 +230,15 @@
|
||||
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)';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -272,36 +262,36 @@
|
||||
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({
|
||||
id: ''
|
||||
})
|
||||
});
|
||||
const goodsCouponSel = ref({
|
||||
id: ''
|
||||
})
|
||||
});
|
||||
const quansSelArr = computed(() => {
|
||||
return [couponSel.value, goodsCouponSel.value].filter((v) => v.id);
|
||||
})
|
||||
});
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -313,26 +303,25 @@
|
||||
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,80 +329,59 @@
|
||||
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);
|
||||
}
|
||||
@@ -434,7 +402,8 @@
|
||||
*/
|
||||
function convertValuesToLabels(valueStr, options, separator = '、') {
|
||||
try {
|
||||
options = [{
|
||||
options = [
|
||||
{
|
||||
value: 'dine',
|
||||
label: '堂食'
|
||||
},
|
||||
@@ -504,13 +473,13 @@
|
||||
}
|
||||
|
||||
onShow(() => {
|
||||
const couponArr = cartStore.backendCoupons.filter(v => v.type != 2)
|
||||
const goodsCouponArr = cartStore.backendCoupons.filter(v => v.type == 2)
|
||||
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();
|
||||
});
|
||||
@@ -518,53 +487,42 @@
|
||||
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>
|
||||
|
||||
Reference in New Issue
Block a user