思考题 多次点击
This commit is contained in:
31
App.vue
31
App.vue
@@ -1,13 +1,9 @@
|
|||||||
<script>
|
<script>
|
||||||
import {
|
import { iap } from "@/utils/myIapCheck.js";
|
||||||
iap
|
|
||||||
} from "@/utils/myIapCheck.js";
|
|
||||||
import store from "@/store/index.js";
|
import store from "@/store/index.js";
|
||||||
import socket from "@/config/socket";
|
import socket from "@/config/socket";
|
||||||
// #ifdef H5
|
// #ifdef H5
|
||||||
import {
|
import { h5Login } from "@/config/html5Utils";
|
||||||
h5Login
|
|
||||||
} from "@/config/html5Utils";
|
|
||||||
// #endif
|
// #endif
|
||||||
// // #ifdef APP-PLUS
|
// // #ifdef APP-PLUS
|
||||||
// import APPUpdate from '@/uni_modules/zhouWei-APPUpdate/js_sdk/appUpdate';
|
// import APPUpdate from '@/uni_modules/zhouWei-APPUpdate/js_sdk/appUpdate';
|
||||||
@@ -24,9 +20,11 @@
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
onLaunch: function (e) {
|
onLaunch: function (e) {
|
||||||
|
setTimeout(updata(), 1600);
|
||||||
|
|
||||||
// 检测自动更新
|
// 检测自动更新
|
||||||
// #ifdef APP-PLUS
|
// #ifdef APP-PLUS
|
||||||
// updata();
|
|
||||||
// #endif
|
// #endif
|
||||||
|
|
||||||
uni.getSystemInfo({
|
uni.getSystemInfo({
|
||||||
@@ -59,7 +57,7 @@
|
|||||||
socket.init();
|
socket.init();
|
||||||
}
|
}
|
||||||
// 检测是否有未关闭苹果内购订单
|
// 检测是否有未关闭苹果内购订单
|
||||||
iap.getChannels()
|
iap.getChannels();
|
||||||
// #endif
|
// #endif
|
||||||
},
|
},
|
||||||
onShow: function (e) {
|
onShow: function (e) {
|
||||||
@@ -130,8 +128,6 @@
|
|||||||
|
|
||||||
@import "uview-ui/index.scss";
|
@import "uview-ui/index.scss";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@import "./style/input.scss";
|
@import "./style/input.scss";
|
||||||
@import "./style/table.scss";
|
@import "./style/table.scss";
|
||||||
|
|
||||||
@@ -140,8 +136,6 @@
|
|||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* #ifdef H5 */
|
/* #ifdef H5 */
|
||||||
//修复H5底部导航挡住内容bug
|
//修复H5底部导航挡住内容bug
|
||||||
uni-app {
|
uni-app {
|
||||||
@@ -151,7 +145,6 @@
|
|||||||
.commonPage,
|
.commonPage,
|
||||||
.commonPageBox {
|
.commonPageBox {
|
||||||
height: calc(100vh - 50px);
|
height: calc(100vh - 50px);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*每个页面公共css */
|
/*每个页面公共css */
|
||||||
@@ -159,11 +152,15 @@
|
|||||||
font-family: "iconfont";
|
font-family: "iconfont";
|
||||||
/* project id 1997429 */
|
/* project id 1997429 */
|
||||||
src: url("https://at.alicdn.com/t/font_1997429_8xzvctxta3u.eot");
|
src: url("https://at.alicdn.com/t/font_1997429_8xzvctxta3u.eot");
|
||||||
src: url("https://at.alicdn.com/t/font_1997429_8xzvctxta3u.eot?#iefix") format("embedded-opentype"),
|
src: url("https://at.alicdn.com/t/font_1997429_8xzvctxta3u.eot?#iefix")
|
||||||
url("https://at.alicdn.com/t/font_1997429_8xzvctxta3u.woff2") format("woff2"),
|
format("embedded-opentype"),
|
||||||
|
url("https://at.alicdn.com/t/font_1997429_8xzvctxta3u.woff2")
|
||||||
|
format("woff2"),
|
||||||
url("https://at.alicdn.com/t/font_1997429_8xzvctxta3u.woff") format("woff"),
|
url("https://at.alicdn.com/t/font_1997429_8xzvctxta3u.woff") format("woff"),
|
||||||
url("https://at.alicdn.com/t/font_1997429_8xzvctxta3u.ttf") format("truetype"),
|
url("https://at.alicdn.com/t/font_1997429_8xzvctxta3u.ttf")
|
||||||
url("https://at.alicdn.com/t/font_1997429_8xzvctxta3u.svg#iconfont") format("svg");
|
format("truetype"),
|
||||||
|
url("https://at.alicdn.com/t/font_1997429_8xzvctxta3u.svg#iconfont")
|
||||||
|
format("svg");
|
||||||
}
|
}
|
||||||
|
|
||||||
.iconfont {
|
.iconfont {
|
||||||
|
|||||||
@@ -10,8 +10,8 @@
|
|||||||
"sizes": "分辨率,192x192",
|
"sizes": "分辨率,192x192",
|
||||||
"src": "图片路径"
|
"src": "图片路径"
|
||||||
}],
|
}],
|
||||||
"versionName": "1.0.36",
|
"versionName": "1.0.39",
|
||||||
"versionCode": 1036,
|
"versionCode": 1039,
|
||||||
"app-plus": {
|
"app-plus": {
|
||||||
"nvueCompiler": "weex",
|
"nvueCompiler": "weex",
|
||||||
"compatible": {
|
"compatible": {
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="container commonPageBox commonDetailPage" style="background-color: #f6f7fb">
|
<view
|
||||||
|
class="container commonPageBox commonDetailPage"
|
||||||
|
style="background-color: #f6f7fb"
|
||||||
|
>
|
||||||
<!-- 公共组件-每个页面必须引入 -->
|
<!-- 公共组件-每个页面必须引入 -->
|
||||||
<public-module></public-module>
|
<public-module></public-module>
|
||||||
<z-nav-bar title="订单详情" bgColor="#258feb" fontColor="#fff"> </z-nav-bar>
|
<z-nav-bar title="订单详情" bgColor="#258feb" fontColor="#fff"> </z-nav-bar>
|
||||||
@@ -226,7 +229,11 @@
|
|||||||
<span style="color: #666; margin-right: 10rpx; float: left"
|
<span style="color: #666; margin-right: 10rpx; float: left"
|
||||||
>商品总价 :
|
>商品总价 :
|
||||||
</span>
|
</span>
|
||||||
<span>¥</span>{{ orderContet.orderMoney }}
|
|
||||||
|
<span v-if="orderContet.orderType == 'point'"
|
||||||
|
>¥ {{ orderContet.bookBuyConfigEntity.realMoney }}</span
|
||||||
|
>
|
||||||
|
<span v-else>¥ {{ orderContet.orderMoney }}</span>
|
||||||
</view>
|
</view>
|
||||||
<view class="orderReal" v-if="orderContet.orderType == 'order'">
|
<view class="orderReal" v-if="orderContet.orderType == 'order'">
|
||||||
<span style="color: #666; margin-right: 10rpx; float: left"
|
<span style="color: #666; margin-right: 10rpx; float: left"
|
||||||
@@ -234,7 +241,10 @@
|
|||||||
</span>
|
</span>
|
||||||
<span>¥</span>{{ orderContet.shippingMoney }}
|
<span>¥</span>{{ orderContet.shippingMoney }}
|
||||||
</view>
|
</view>
|
||||||
<view class="orderReal" v-if="orderContet.couponId && orderContet.couponId != null">
|
<view
|
||||||
|
class="orderReal"
|
||||||
|
v-if="orderContet.couponId && orderContet.couponId != null"
|
||||||
|
>
|
||||||
<span style="color: #666; margin-right: 10rpx; float: left"
|
<span style="color: #666; margin-right: 10rpx; float: left"
|
||||||
>优惠券 :
|
>优惠券 :
|
||||||
</span>
|
</span>
|
||||||
@@ -260,6 +270,9 @@
|
|||||||
<span style="color: #666; margin-right: 10rpx; float: left"
|
<span style="color: #666; margin-right: 10rpx; float: left"
|
||||||
>实付款 :
|
>实付款 :
|
||||||
</span>
|
</span>
|
||||||
|
<b v-if="orderContet.orderType == 'point'" style="color: #dd3c0c"
|
||||||
|
>¥ {{ orderContet.bookBuyConfigEntity.realMoney }}</b
|
||||||
|
>
|
||||||
<b style="color: #dd3c0c"
|
<b style="color: #dd3c0c"
|
||||||
><span>¥</span>{{ orderContet.realMoney }}</b
|
><span>¥</span>{{ orderContet.realMoney }}</b
|
||||||
>
|
>
|
||||||
@@ -309,10 +322,13 @@
|
|||||||
<span style="color: #666;margin-right: 10rpx;float: left;">发货时间 : </span>
|
<span style="color: #666;margin-right: 10rpx;float: left;">发货时间 : </span>
|
||||||
<text style="font-size: 24rpx;color: #666;">{{orderContet.shippingTime}}</text>
|
<text style="font-size: 24rpx;color: #666;">{{orderContet.shippingTime}}</text>
|
||||||
</view> -->
|
</view> -->
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
<view class="" style="text-align: center; width: 100%;">
|
<view class="" style="text-align: center; width: 100%">
|
||||||
<text @click="gotoWorkOrder" style="color: cadetblue; font-size: 26rpx;">订单有问题?去申诉</text>
|
<text
|
||||||
|
@click="gotoWorkOrder"
|
||||||
|
style="color: cadetblue; font-size: 26rpx"
|
||||||
|
>订单有问题?去申诉</text
|
||||||
|
>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -331,8 +347,10 @@
|
|||||||
>
|
>
|
||||||
<text class="price"
|
<text class="price"
|
||||||
>合计:
|
>合计:
|
||||||
|
<text class="total" v-if="orderContet.orderType == 'point'">
|
||||||
<text class="total">¥{{ orderContet.realMoney }}</text>
|
¥ {{ orderContet.bookBuyConfigEntity.realMoney }}
|
||||||
|
</text>
|
||||||
|
<text class="total" v-else>¥{{ orderContet.realMoney }}</text>
|
||||||
</text>
|
</text>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
@@ -481,6 +499,68 @@ import { mapState } from "vuex";
|
|||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
A: {
|
||||||
|
orderId: 15316,
|
||||||
|
orderSn: "20241209141541253186600376645070",
|
||||||
|
userId: 13487,
|
||||||
|
userName: null,
|
||||||
|
statusNum: null,
|
||||||
|
shippingUser: null,
|
||||||
|
userPhone: "18834844847",
|
||||||
|
province: null,
|
||||||
|
city: null,
|
||||||
|
district: null,
|
||||||
|
address: null,
|
||||||
|
come: 2,
|
||||||
|
paymentMethod: "3",
|
||||||
|
orderMoney: 39,
|
||||||
|
districtMoney: 0,
|
||||||
|
realMoney: 39,
|
||||||
|
shippingMoney: null,
|
||||||
|
shippingCompName: null,
|
||||||
|
shippingSn: null,
|
||||||
|
jfDeduction: 0,
|
||||||
|
createTime: "2024-12-09 14:15:41",
|
||||||
|
shippingTime: null,
|
||||||
|
orderStatus: "0",
|
||||||
|
successTime: null,
|
||||||
|
couponId: null,
|
||||||
|
couponName: null,
|
||||||
|
delFlag: 0,
|
||||||
|
products: null,
|
||||||
|
productList: null,
|
||||||
|
buyType: null,
|
||||||
|
orderType: "point",
|
||||||
|
expNo: null,
|
||||||
|
isSend: null,
|
||||||
|
vipBuyConfigId: 0,
|
||||||
|
addressId: null,
|
||||||
|
remark: null,
|
||||||
|
orderCode: null,
|
||||||
|
paymentDate: null,
|
||||||
|
productId: "21",
|
||||||
|
recordId: null,
|
||||||
|
timestamp: null,
|
||||||
|
user: null,
|
||||||
|
expressList: null,
|
||||||
|
addressModified: 0,
|
||||||
|
consigneeVo: null,
|
||||||
|
appName: null,
|
||||||
|
bookBuyConfigEntity: {
|
||||||
|
priceTypeId: 21,
|
||||||
|
type: "point",
|
||||||
|
qudao: "IOS",
|
||||||
|
realMoney: "45",
|
||||||
|
money: "39",
|
||||||
|
givejf: "0",
|
||||||
|
month: null,
|
||||||
|
description: "",
|
||||||
|
effective: 0,
|
||||||
|
startTime: null,
|
||||||
|
endTime: null,
|
||||||
|
},
|
||||||
|
vipBuyConfigEntity: null,
|
||||||
|
},
|
||||||
iconList: [
|
iconList: [
|
||||||
{
|
{
|
||||||
text: "联系客服",
|
text: "联系客服",
|
||||||
@@ -564,8 +644,8 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
gotoWorkOrder() {
|
gotoWorkOrder() {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url:`/pages/user/workOrder?name=order`
|
url: `/pages/user/workOrder?name=order`,
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
async goBuyJie(data) {
|
async goBuyJie(data) {
|
||||||
console.log("index at line 532:", data);
|
console.log("index at line 532:", data);
|
||||||
@@ -917,7 +997,7 @@ export default {
|
|||||||
url: "common/coupon/getCouponHistoryInfo",
|
url: "common/coupon/getCouponHistoryInfo",
|
||||||
method: "POST", // POST、GET、PUT、DELETE,具体说明查看官方文档
|
method: "POST", // POST、GET、PUT、DELETE,具体说明查看官方文档
|
||||||
data: {
|
data: {
|
||||||
id
|
id,
|
||||||
},
|
},
|
||||||
header: {
|
header: {
|
||||||
//默认 无 说明:请求头
|
//默认 无 说明:请求头
|
||||||
@@ -926,12 +1006,13 @@ export default {
|
|||||||
})
|
})
|
||||||
.then(async (res) => {
|
.then(async (res) => {
|
||||||
if (res.code != 0) return this.$commonJS.showToast(res.errMsg);
|
if (res.code != 0) return this.$commonJS.showToast(res.errMsg);
|
||||||
this.orderContet.couponAmount = res.couponHistory.couponEntity.couponAmount
|
this.orderContet.couponAmount =
|
||||||
|
res.couponHistory.couponEntity.couponAmount;
|
||||||
}).catch(e => {
|
})
|
||||||
|
.catch((e) => {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
this.$commonJS.showToast(e.errMsg);
|
this.$commonJS.showToast(e.errMsg);
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
// 获取订单详情
|
// 获取订单详情
|
||||||
async getOrderList() {
|
async getOrderList() {
|
||||||
@@ -957,7 +1038,7 @@ export default {
|
|||||||
this.consigneeShow = true;
|
this.consigneeShow = true;
|
||||||
// 存在优惠券信息,就查询优惠券集体金额
|
// 存在优惠券信息,就查询优惠券集体金额
|
||||||
if (this.orderContet.couponId && this.orderContet.couponId != null) {
|
if (this.orderContet.couponId && this.orderContet.couponId != null) {
|
||||||
await this.getCouponDetail(this.orderContet.couponId)
|
await this.getCouponDetail(this.orderContet.couponId);
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
this.orderContet.orderStatus == 2 &&
|
this.orderContet.orderStatus == 2 &&
|
||||||
@@ -980,7 +1061,10 @@ export default {
|
|||||||
color: "#fff",
|
color: "#fff",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (this.orderContet.orderStatus == 0 && this.orderContet.paymentMethod != 3) {
|
if (
|
||||||
|
this.orderContet.orderStatus == 0 &&
|
||||||
|
this.orderContet.paymentMethod != 3
|
||||||
|
) {
|
||||||
this.customButton.push({
|
this.customButton.push({
|
||||||
width: "160rpx",
|
width: "160rpx",
|
||||||
text: "继续付款",
|
text: "继续付款",
|
||||||
@@ -1128,10 +1212,10 @@ export default {
|
|||||||
// 苹果充值
|
// 苹果充值
|
||||||
console.log("苹果二次支付");
|
console.log("苹果二次支付");
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
content:'apple内购订单不支持继续支付,请重新发起支付申请并完成支付',
|
content: "apple内购订单不支持继续支付,请重新发起支付申请并完成支付",
|
||||||
confirmText:'好的',
|
confirmText: "好的",
|
||||||
showCancel:false
|
showCancel: false,
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -1140,7 +1224,7 @@ export default {
|
|||||||
console.log("data at line 1277:订单详情参数", data);
|
console.log("data at line 1277:订单详情参数", data);
|
||||||
if (data.delFlag == -1) {
|
if (data.delFlag == -1) {
|
||||||
this.$commonJS.showToast("商品已下架");
|
this.$commonJS.showToast("商品已下架");
|
||||||
}else if(data.goodsType == '05'){
|
} else if (data.goodsType == "05") {
|
||||||
if (data.courseIds && data.courseIds.length > 0) {
|
if (data.courseIds && data.courseIds.length > 0) {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: `/pages/course/courseDetail?id=${data.courseIds[0].courseId}`,
|
url: `/pages/course/courseDetail?id=${data.courseIds[0].courseId}`,
|
||||||
@@ -1148,10 +1232,9 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: "课程数据出错",
|
title: "课程数据出错",
|
||||||
icon: "none"
|
icon: "none",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
// url: '../bookShop/commodityDetail?id=' + item.id
|
// url: '../bookShop/commodityDetail?id=' + item.id
|
||||||
|
|||||||
@@ -219,12 +219,18 @@
|
|||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
">
|
">
|
||||||
<text style="font-size: 20rpx">¥</text>
|
<text style="font-size: 20rpx">¥</text>
|
||||||
|
<text v-if="slotProps.row.orderType == 'point'">
|
||||||
|
{{ slotProps.row.bookBuyConfigEntity.realMoney }}
|
||||||
|
</text>
|
||||||
|
<text v-else>
|
||||||
{{
|
{{
|
||||||
slotProps.row.realMoney ||
|
slotProps.row.realMoney ||
|
||||||
slotProps.row.realMoney == 0
|
slotProps.row.realMoney == 0
|
||||||
? slotProps.row.realMoney
|
? slotProps.row.realMoney
|
||||||
: ""
|
: ""
|
||||||
}}
|
}}
|
||||||
|
</text>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -281,7 +281,7 @@
|
|||||||
},
|
},
|
||||||
// 存储本地播放时间
|
// 存储本地播放时间
|
||||||
recordTime(data) {
|
recordTime(data) {
|
||||||
console.log('recordTime', data.time);
|
// console.log('recordTime', data.time);
|
||||||
this.currentTime = data.time;
|
this.currentTime = data.time;
|
||||||
|
|
||||||
var list = [];
|
var list = [];
|
||||||
|
|||||||
@@ -150,7 +150,11 @@
|
|||||||
</u-upload>
|
</u-upload>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="btn_box"><button @click="onSubmit">提 交</button></view>
|
|
||||||
|
<view class="btn_box">
|
||||||
|
<button @click="onSubmit" v-if="isClick">提 交</button>
|
||||||
|
<button v-else style="opacity: 0.6;">提 交</button>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</u-popup>
|
</u-popup>
|
||||||
@@ -187,6 +191,7 @@
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
isClick:true,
|
||||||
classList:[], // 进行中的小班
|
classList:[], // 进行中的小班
|
||||||
isInClass:false, // 是否加入了班级
|
isInClass:false, // 是否加入了班级
|
||||||
showEditBlank: false,
|
showEditBlank: false,
|
||||||
@@ -349,6 +354,7 @@
|
|||||||
uni.stopPullDownRefresh();
|
uni.stopPullDownRefresh();
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
|
this.isClick=true;
|
||||||
// #endif
|
// #endif
|
||||||
this.getClassList()
|
this.getClassList()
|
||||||
},
|
},
|
||||||
@@ -383,6 +389,7 @@
|
|||||||
}
|
}
|
||||||
// 赋值给编辑器
|
// 赋值给编辑器
|
||||||
this.onEditorReady()
|
this.onEditorReady()
|
||||||
|
this.isClick=true
|
||||||
this.showEditBlank = true
|
this.showEditBlank = true
|
||||||
},
|
},
|
||||||
gotoClass(item){
|
gotoClass(item){
|
||||||
@@ -499,7 +506,9 @@
|
|||||||
}
|
}
|
||||||
this.answerForm.display = e.detail.value
|
this.answerForm.display = e.detail.value
|
||||||
},
|
},
|
||||||
async onSubmit() {
|
async onSubmit() { if(!this.isClick){
|
||||||
|
return false
|
||||||
|
}
|
||||||
debounce(async () => {
|
debounce(async () => {
|
||||||
let data = await this.getHtml();
|
let data = await this.getHtml();
|
||||||
var _data = data.html.replace(/<.*?>/g, "")
|
var _data = data.html.replace(/<.*?>/g, "")
|
||||||
@@ -535,6 +544,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
console.log('提交的data', data1);
|
console.log('提交的data', data1);
|
||||||
|
this.isClick=false;
|
||||||
$http.request({
|
$http.request({
|
||||||
url: _url,
|
url: _url,
|
||||||
method: "POST",
|
method: "POST",
|
||||||
@@ -550,6 +560,7 @@
|
|||||||
})
|
})
|
||||||
this.fileList1 = []
|
this.fileList1 = []
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
this.isClick=true;
|
||||||
this.getMyQuestAnswer(this.curriculumData.id)
|
this.getMyQuestAnswer(this.curriculumData.id)
|
||||||
this.closePup()
|
this.closePup()
|
||||||
// this.pPage = 0
|
// this.pPage = 0
|
||||||
@@ -558,6 +569,7 @@
|
|||||||
// this.getZuoyeList()
|
// this.getZuoyeList()
|
||||||
}, 200)
|
}, 200)
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
|
this.isClick=true;
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '操作失败',
|
title: '操作失败',
|
||||||
icon: 'error'
|
icon: 'error'
|
||||||
|
|||||||
Reference in New Issue
Block a user