Compare commits
1 Commits
dee424a813
...
caolc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8753577bdf |
@@ -1,4 +1,4 @@
|
|||||||
ENV = 'development'
|
ENV = 'development'
|
||||||
|
|
||||||
VUE_APP_BASE_API = '/api'
|
VUE_APP_BASE_API = '/api'
|
||||||
VUE_APP_ENV = 'development'
|
VUE_APP_ENV = 'production'
|
||||||
|
|||||||
@@ -11,11 +11,7 @@
|
|||||||
<div class="generalDetails_card_container">
|
<div class="generalDetails_card_container">
|
||||||
<div v-for="(item, index) in dataPage" :key="index">
|
<div v-for="(item, index) in dataPage" :key="index">
|
||||||
<el-card class="generalDetails_card">
|
<el-card class="generalDetails_card">
|
||||||
<div
|
<div @click="isShow(item)" class="generalDetails_card_header" slot="header">
|
||||||
@click="isShow(item)"
|
|
||||||
class="generalDetails_card_header"
|
|
||||||
slot="header"
|
|
||||||
>
|
|
||||||
<div>
|
<div>
|
||||||
<span class="generalDetails-card-header-icon">
|
<span class="generalDetails-card-header-icon">
|
||||||
<svg-icon style="color: #118dde" :icon-class="item.iconClass" />
|
<svg-icon style="color: #118dde" :icon-class="item.iconClass" />
|
||||||
@@ -25,30 +21,18 @@
|
|||||||
}}</span>
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="fold">
|
<div class="fold">
|
||||||
<i
|
<i :style="{
|
||||||
:style="{
|
transform: `rotate(${item.isFold ? 0 : 180}deg)`,
|
||||||
transform: `rotate(${item.isFold ? 0 : 180}deg)`,
|
}" class="el-icon-arrow-down generalDetails_card_arrow_down"></i>
|
||||||
}"
|
|
||||||
class="el-icon-arrow-down generalDetails_card_arrow_down"
|
|
||||||
></i>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div :style="{ maxHeight: item.isFold ? '100vh' : '0px' }" class="my-cell">
|
||||||
:style="{ maxHeight: item.isFold ? '100vh' : '0px' }"
|
<template v-if="item.listData.length && item.listData[0].field !== 'table'">
|
||||||
class="my-cell"
|
|
||||||
>
|
|
||||||
<template
|
|
||||||
v-if="item.listData.length && item.listData[0].field !== 'table'"
|
|
||||||
>
|
|
||||||
<div v-for="(i, x) in item.listData" :key="x" class="cell-item">
|
<div v-for="(i, x) in item.listData" :key="x" class="cell-item">
|
||||||
<span :title="i.remark" class="color-999 test-tst">
|
<span :title="i.remark" class="color-999 test-tst">
|
||||||
{{ i.label }}
|
{{ i.label }}
|
||||||
<i v-if="i.remark" class="header-icon el-icon-info"></i>
|
<i v-if="i.remark" class="header-icon el-icon-info"></i>
|
||||||
<i
|
<i @click="isCopy($event)" v-if="i.isCopy" class="el-icon-document-copy"></i>
|
||||||
@click="isCopy($event)"
|
|
||||||
v-if="i.isCopy"
|
|
||||||
class="el-icon-document-copy"
|
|
||||||
></i>
|
|
||||||
</span>
|
</span>
|
||||||
<br />
|
<br />
|
||||||
<slot class="inner-data" :name="`${i.field}`">
|
<slot class="inner-data" :name="`${i.field}`">
|
||||||
@@ -126,7 +110,7 @@ export default {
|
|||||||
let value =
|
let value =
|
||||||
(typeof carItem.value == "function" &&
|
(typeof carItem.value == "function" &&
|
||||||
carItem.value(shineData)) ||
|
carItem.value(shineData)) ||
|
||||||
shineData[carItem.value] == 0
|
shineData[carItem.value] == 0
|
||||||
? 0
|
? 0
|
||||||
: shineData[carItem.value] || carItem.fieldDefault || "";
|
: shineData[carItem.value] || carItem.fieldDefault || "";
|
||||||
return {
|
return {
|
||||||
@@ -172,6 +156,7 @@ export default {
|
|||||||
.title_bottom {
|
.title_bottom {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fold {
|
.fold {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
|
|||||||
@@ -227,10 +227,13 @@ export default {
|
|||||||
this.billListMeth()
|
this.billListMeth()
|
||||||
// this.$set(this.billData.list,this.billData.index,this.billAddData)
|
// this.$set(this.billData.list,this.billData.index,this.billAddData)
|
||||||
this.$message.success(res.msg)
|
this.$message.success(res.msg)
|
||||||
this.dialogDelivery = false
|
this.dialogDelivery = false;
|
||||||
|
console.log('更新前',this.billData)
|
||||||
|
this.$emit('billOfLading', this.billData, 2);
|
||||||
|
this.$forceUpdate()
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.$emit('billOfLading', this.billData, 2)
|
|
||||||
},
|
},
|
||||||
billSubmit(e, index) {
|
billSubmit(e, index) {
|
||||||
if (e.deliveryStatus == 'PLATENUM_SUCCESS') {
|
if (e.deliveryStatus == 'PLATENUM_SUCCESS') {
|
||||||
@@ -275,39 +278,41 @@ export default {
|
|||||||
this.dialogBillAdd = true
|
this.dialogBillAdd = true
|
||||||
},
|
},
|
||||||
//创建修改提货单
|
//创建修改提货单
|
||||||
billAddSave(e, item) {
|
async billAddSave(e, item) {
|
||||||
if (!e) {
|
if (!e) {
|
||||||
this.$refs["form"].validate((valid) => {
|
this.$refs["form"].validate( async (valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.billAddData.orderId = this.controlWindows.addInfo.id
|
this.billAddData.orderId = this.controlWindows.addInfo.id
|
||||||
this.billAddData.productMeasurement = this.controlWindows.addInfo.productMeasurement
|
this.billAddData.productMeasurement = this.controlWindows.addInfo.productMeasurement
|
||||||
order.billSave(this.billAddData).then(res => {
|
await order.billSave(this.billAddData).then(res => {
|
||||||
if (res.code == 20000) {
|
if (res.code == 20000) {
|
||||||
this.billAddData.deliveryStatus = 'SUBMITED'
|
this.billAddData.deliveryStatus = 'SUBMITED'
|
||||||
this.billData.list.push(this.billAddData)
|
this.billData.list.push(this.billAddData)
|
||||||
this.billListMeth()
|
this.billListMeth()
|
||||||
this.$message.success(res.msg)
|
this.$message.success(res.msg)
|
||||||
this.dialogBillAdd = false;
|
this.dialogBillAdd = false;
|
||||||
|
this.$emit('billOfLading', this.billData.orderInfo, 2)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
this.$confirm(`确定${e==1?'修改':'锁定'}提货单?`, '提示', { type: 'error' }).then(() => {
|
this.$confirm(`确定${e == 1 ? '修改' : '锁定'}提货单?`, '提示', { type: 'error' }).then( async () => {
|
||||||
// this.billAddData = item ? JSON.parse(JSON.stringify(item)) : {};
|
// this.billAddData = item ? JSON.parse(JSON.stringify(item)) : {};
|
||||||
this.billAddData.deliveryStatus = e == 2 ? 'PLATENUM_LOCKED' : '';
|
this.billAddData.deliveryStatus = e == 2 ? 'PLATENUM_LOCKED' : '';
|
||||||
console.log(this.billAddData,'this.billAddData')
|
console.log(this.billAddData, 'this.billAddData')
|
||||||
order.update(this.billAddData).then(res => {
|
await order.update(this.billAddData).then(res => {
|
||||||
if (res.code == 20000) {
|
if (res.code == 20000) {
|
||||||
this.billListMeth()
|
this.billListMeth()
|
||||||
this.$message.success(res.msg)
|
this.$message.success(res.msg)
|
||||||
this.dialogBillAdd = false;
|
this.dialogBillAdd = false;
|
||||||
|
this.$emit('billOfLading', this.billData.orderInfo, 2)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
};
|
||||||
this.$emit('billOfLading', this.billData.orderInfo, 2)
|
console.log('代码底部');
|
||||||
|
|
||||||
},
|
},
|
||||||
//更新提货单数据
|
//更新提货单数据
|
||||||
billListMeth() {
|
billListMeth() {
|
||||||
|
|||||||
@@ -363,6 +363,7 @@ export default {
|
|||||||
}
|
}
|
||||||
if(!selectIndex||selectIndex==2){
|
if(!selectIndex||selectIndex==2){
|
||||||
await order.findByOrderId(row.id).then((res) => {
|
await order.findByOrderId(row.id).then((res) => {
|
||||||
|
console.log('更新',res)
|
||||||
this.billData.orderInfo = Object.assign(res.data,{id:row.id})
|
this.billData.orderInfo = Object.assign(res.data,{id:row.id})
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,14 +10,7 @@
|
|||||||
<div class="create" v-if="controlWindows.create">
|
<div class="create" v-if="controlWindows.create">
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
||||||
<el-form-item label="客户名称" prop="customerId">
|
<el-form-item label="客户名称" prop="customerId">
|
||||||
<el-select
|
<el-select v-model="form.customerId" reserve-keyword remote :remote-method="customData" filterable placeholder="请选择客户">
|
||||||
v-model="form.customerId"
|
|
||||||
reserve-keyword
|
|
||||||
remote
|
|
||||||
:remote-method="customData"
|
|
||||||
filterable
|
|
||||||
placeholder="请选择客户"
|
|
||||||
>
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="(item, index) in customList"
|
v-for="(item, index) in customList"
|
||||||
:key="index"
|
:key="index"
|
||||||
@@ -39,26 +32,17 @@
|
|||||||
<autocomplete :params="form" :config="configAutocomplete" />
|
<autocomplete :params="form" :config="configAutocomplete" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="产品类型" prop="productType">
|
<el-form-item label="产品类型" prop="productType">
|
||||||
<el-select
|
<el-select v-model="form.productType" @change="productChange" placeholder="请选择产品类型">
|
||||||
v-model="form.productType"
|
|
||||||
@change="productChange"
|
|
||||||
placeholder="请选择产品类型"
|
|
||||||
>
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="(item, index) in productTypeList"
|
v-for="(item, index) in productTypeList"
|
||||||
:key="index"
|
:key="index"
|
||||||
:label="item"
|
:label="item.label"
|
||||||
:value="item"
|
:value="item.value"
|
||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="产品名称" prop="productId">
|
<el-form-item label="产品名称" prop="productId">
|
||||||
<el-select
|
<el-select :disabled="rowCreate" v-model="form.productId" @change="productDataList" placeholder="请选择产品类型">
|
||||||
:disabled="rowCreate"
|
|
||||||
v-model="form.productId"
|
|
||||||
@change="productDataList"
|
|
||||||
placeholder="请选择产品类型"
|
|
||||||
>
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="(item, index) in productNameList"
|
v-for="(item, index) in productNameList"
|
||||||
:key="index"
|
:key="index"
|
||||||
@@ -90,7 +74,11 @@
|
|||||||
吨
|
吨
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="订单金额">
|
<el-form-item label="订单金额">
|
||||||
<el-input maxlength="50" v-model="form.preAmount" disabled></el-input>
|
<el-input
|
||||||
|
maxlength="50"
|
||||||
|
v-model="form.preAmount"
|
||||||
|
disabled
|
||||||
|
></el-input>
|
||||||
元
|
元
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -115,27 +103,21 @@ export default {
|
|||||||
controlWindows: Object,
|
controlWindows: Object,
|
||||||
// refineryTypeEnum: Array,
|
// refineryTypeEnum: Array,
|
||||||
},
|
},
|
||||||
watch: {
|
watch:{
|
||||||
"form.salePrice": {
|
"form.salePrice": {
|
||||||
handler(n, o) {
|
handler(n, o) {
|
||||||
if (n) {
|
if(n){
|
||||||
this.form.preAmount = (
|
this.form.preAmount = (this.form.salePrice*(this.form.preQuantity?this.form.preQuantity:0)).toFixed(2)
|
||||||
this.form.salePrice *
|
|
||||||
(this.form.preQuantity ? this.form.preQuantity : 0)
|
|
||||||
).toFixed(2);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"form.preQuantity": {
|
"form.preQuantity": {
|
||||||
handler(n, o) {
|
handler(n, o) {
|
||||||
if (n) {
|
if(n){
|
||||||
this.form.preAmount = (
|
this.form.preAmount = (this.form.preQuantity*(this.form.salePrice?this.form.salePrice:0)).toFixed(2)
|
||||||
this.form.preQuantity *
|
|
||||||
(this.form.salePrice ? this.form.salePrice : 0)
|
|
||||||
).toFixed(2);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
let validatorRefineryId = (rule, value, callback) => {
|
let validatorRefineryId = (rule, value, callback) => {
|
||||||
@@ -143,18 +125,18 @@ export default {
|
|||||||
else callback("请选择炼厂");
|
else callback("请选择炼厂");
|
||||||
};
|
};
|
||||||
return {
|
return {
|
||||||
rowCreate: false,
|
rowCreate:false,
|
||||||
customList: [],
|
customList:[],
|
||||||
form: {
|
form: {
|
||||||
preAmount: 0,
|
preAmount:0
|
||||||
},
|
},
|
||||||
productNameList: [],
|
productNameList:[],
|
||||||
refineryList: [],
|
refineryList: [],
|
||||||
productRowData: {},
|
productRowData:{},
|
||||||
configAutocomplete: {
|
configAutocomplete: {
|
||||||
serveTarget: serve.findByEntity,
|
serveTarget: serve.findByEntity,
|
||||||
autocompleteKey: {
|
autocompleteKey: {
|
||||||
key: "refineryName",
|
key:"refineryName"
|
||||||
},
|
},
|
||||||
labelKey: "refineryName",
|
labelKey: "refineryName",
|
||||||
valueKey: "id",
|
valueKey: "id",
|
||||||
@@ -163,7 +145,24 @@ export default {
|
|||||||
echoId: "",
|
echoId: "",
|
||||||
echoName: "",
|
echoName: "",
|
||||||
},
|
},
|
||||||
productTypeList: ["0#柴", "-10#柴", "92#汽", "95#汽"],
|
productTypeList: [
|
||||||
|
{
|
||||||
|
label: "0#柴",
|
||||||
|
value: "0#",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "-10#柴",
|
||||||
|
value: "-10#",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "92#汽",
|
||||||
|
value: "92#",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "95#汽",
|
||||||
|
value: "95#",
|
||||||
|
},
|
||||||
|
],
|
||||||
rules: {
|
rules: {
|
||||||
customerId: [
|
customerId: [
|
||||||
{ required: true, message: "请输入客户名称", trigger: "blur" },
|
{ required: true, message: "请输入客户名称", trigger: "blur" },
|
||||||
@@ -184,74 +183,77 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
productDataList(e) {
|
productDataList(e){
|
||||||
this.productRowData = this.productNameList.filter((item) => item.id == e);
|
this.productRowData = this.productNameList.filter(
|
||||||
this.form.salePrice = this.productRowData[0].salePrice2company;
|
(item) => item.id == e
|
||||||
this.form.floorPrice = this.productRowData[0].floorPrice;
|
);
|
||||||
this.form.productMeasurement = this.productRowData[0].measurement;
|
this.form.salePrice = this.productRowData[0].salePrice2company
|
||||||
|
this.form.floorPrice = this.productRowData[0].floorPrice
|
||||||
|
this.form.productMeasurement = this.productRowData[0].measurement
|
||||||
},
|
},
|
||||||
productChange() {
|
productChange(){
|
||||||
this.productData();
|
this.productData()
|
||||||
},
|
},
|
||||||
//搜索炼厂
|
//搜索炼厂
|
||||||
refineryData(value) {
|
refineryData(value){
|
||||||
if (value) {
|
if (value) {
|
||||||
serve.findByEntity({ refineryName: value }).then((res) => {
|
serve.findByEntity({refineryName:value}).then((res) => {
|
||||||
this.refineryList = res.data;
|
this.refineryList = res.data;
|
||||||
});
|
});
|
||||||
this.productData();
|
this.productData()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//搜索产品
|
//搜索产品
|
||||||
productData() {
|
productData(){
|
||||||
let data = {
|
let data = {
|
||||||
refineryId: this.form.refineryId,
|
refineryId:this.form.refineryId,
|
||||||
productType: this.form.productType,
|
productType:this.form.productType,
|
||||||
enableMark: "ENABLE",
|
enableMark:'ENABLE'
|
||||||
};
|
}
|
||||||
serve.getRefineryProductList(data).then((res) => {
|
serve.getRefineryProductList(data).then((res) => {
|
||||||
if (res.data.length > 0) {
|
if(res.data.length>0){
|
||||||
this.productNameList = res.data;
|
this.productNameList = res.data;
|
||||||
} else {
|
}else{
|
||||||
this.productNameList = [];
|
this.productNameList = []
|
||||||
this.form.productId = "";
|
this.form.productId = ''
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
console.log(this.productRowData, "aaaaaaaaaa");
|
console.log(this.productRowData,'aaaaaaaaaa')
|
||||||
},
|
},
|
||||||
//搜索客户
|
//搜索客户
|
||||||
customData(value) {
|
customData(value){
|
||||||
if (value) {
|
if (value) {
|
||||||
serve.getRefineryCompanyList({ name: value }).then((res) => {
|
serve.getRefineryCompanyList({name:value}).then((res) => {
|
||||||
this.customList = res.data;
|
this.customList = res.data;
|
||||||
this.form.customerId = this.$store.state.user.companyId;
|
this.form.customerId = this.$store.state.user.companyId
|
||||||
console.log(this.form.customerId, "ssssaaaaaaaaaaaaaaa");
|
console.log(this.form.customerId,'ssssaaaaaaaaaaaaaaa')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
openDrawer() {
|
openDrawer() {
|
||||||
this.form = {};
|
this.form = {}
|
||||||
let { id } = this.controlWindows.addInfo;
|
let { id } = this.controlWindows.addInfo;
|
||||||
if (id) {
|
if (id) {
|
||||||
//回显
|
//回显
|
||||||
this.form = JSON.parse(JSON.stringify(this.controlWindows.addInfo));
|
this.form = JSON.parse(JSON.stringify(this.controlWindows.addInfo));
|
||||||
this.configAutocomplete.echoId = id;
|
this.configAutocomplete.echoId = id;
|
||||||
this.configAutocomplete.echoName = this.form.refineryName;
|
this.configAutocomplete.echoName = this.form.refineryName;
|
||||||
this.form.salePrice = this.form.salePrice2company;
|
this.form.salePrice = this.form.salePrice2company
|
||||||
this.form.productId = this.form.id;
|
this.form.productId = this.form.id
|
||||||
delete this.form.id;
|
delete this.form.id
|
||||||
this.rowCreate = true;
|
this.rowCreate = true
|
||||||
this.productChange();
|
this.productChange()
|
||||||
this.customData(this.$store.state.user.userCompanyName);
|
this.customData(this.$store.state.user.userCompanyName)
|
||||||
|
|
||||||
console.log("this.form", this.$store.state.user, this.form);
|
console.log("this.form", this.$store.state.user,this.form);
|
||||||
} else {
|
}else{
|
||||||
this.rowCreate = false;
|
this.rowCreate = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
submit() {
|
submit() {
|
||||||
this.$refs["form"].validate((valid) => {
|
this.$refs["form"].validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
|
|
||||||
this.judgeInterface(this.form).then((res) => {
|
this.judgeInterface(this.form).then((res) => {
|
||||||
if (res.code === 20000) {
|
if (res.code === 20000) {
|
||||||
this.$message.success(res.msg);
|
this.$message.success(res.msg);
|
||||||
|
|||||||
@@ -28,8 +28,8 @@
|
|||||||
<el-option
|
<el-option
|
||||||
v-for="(item, index) in productTypeList"
|
v-for="(item, index) in productTypeList"
|
||||||
:key="index"
|
:key="index"
|
||||||
:label="item"
|
:label="item.label"
|
||||||
:value="item"
|
:value="item.value"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -164,7 +164,24 @@ export default {
|
|||||||
detail: false,
|
detail: false,
|
||||||
create: false,
|
create: false,
|
||||||
},
|
},
|
||||||
productTypeList: ["0#柴", "-10#柴", "92#汽", "95#汽"],
|
productTypeList: [
|
||||||
|
{
|
||||||
|
label: "0#柴",
|
||||||
|
value: "0#",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "-10#柴",
|
||||||
|
value: "-10#",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "92#汽",
|
||||||
|
value: "92#",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "95#汽",
|
||||||
|
value: "95#",
|
||||||
|
},
|
||||||
|
],
|
||||||
configAutocomplete: {
|
configAutocomplete: {
|
||||||
serveTarget: serve.findByEntity,
|
serveTarget: serve.findByEntity,
|
||||||
autocompleteKey: "refineryName",
|
autocompleteKey: "refineryName",
|
||||||
@@ -221,8 +238,8 @@ export default {
|
|||||||
},
|
},
|
||||||
//table list
|
//table list
|
||||||
getByPage() {
|
getByPage() {
|
||||||
this.parameter.params["enableMark"] = "ENABLE";
|
let data = Object.assign(this.parameter,{enableMark: 'ENABLE'});
|
||||||
serve.getByPage(this.parameter).then((res) => {
|
serve.getByPage(data).then((res) => {
|
||||||
this.tableData = res.data.list;
|
this.tableData = res.data.list;
|
||||||
this.parameter.total = res.data.totalCount;
|
this.parameter.total = res.data.totalCount;
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user