9.7 同步master版本,解决冲突
This commit is contained in:
@ -7,11 +7,10 @@ import talkPng from '@/images/talk/talk.png';
|
||||
import { routerRedux } from 'dva/router';
|
||||
import { RightOutlined } from '@ant-design/icons';
|
||||
import moment from 'moment';
|
||||
import { jurySaveInfo, getSessionUserData } from '@/utils/session';
|
||||
import { jurySaveInfo, getSessionUserData, getRA } from '@/utils/session';
|
||||
import NoticeDetail from '@/pages/notice/noticeList/components/NoticeDetail'
|
||||
import ExpertEnter from '@/pages/BidEvaluation/components/ExpertEnter';
|
||||
import { isInsertIdOrPhoto } from './service';
|
||||
|
||||
@connect(({ dashboard, loading }) => ({
|
||||
...dashboard,
|
||||
downlistLoading: loading.effects['dashboard/fetchDowntlist'],
|
||||
@ -25,6 +24,7 @@ class Jury extends PureComponent {
|
||||
noticeDetail: false, // 公告弹窗
|
||||
recordData: '', // 进入评审室弹窗数据
|
||||
enterVisible: false, // 进入评审室弹窗
|
||||
|
||||
}
|
||||
componentDidMount() {
|
||||
this.props.dispatch({
|
||||
@ -97,13 +97,6 @@ class Jury extends PureComponent {
|
||||
enterVisible: false
|
||||
})
|
||||
}
|
||||
talkXy = () => {
|
||||
if (NTKF) {
|
||||
NTKF.im_openInPageChat('bl_1000_1492484340268');
|
||||
} else {
|
||||
message.warn('小优客服初始化失败,请联系系统管理员!')
|
||||
}
|
||||
}
|
||||
//判断是否有身份证号或照片
|
||||
isIdOrPhoto = () => {
|
||||
const { warning } = Modal;
|
||||
@ -120,14 +113,11 @@ class Jury extends PureComponent {
|
||||
})
|
||||
}
|
||||
render() {
|
||||
const { datevalue, detailId, noticeDetail, recordData, enterVisible } = this.state;
|
||||
const { datevalue, detailId, noticeDetail, recordData, enterVisible, } = this.state;
|
||||
const { Juryuplist, Jurydownlist, staloading, tlist } = this.props;
|
||||
return (
|
||||
<>
|
||||
{
|
||||
START_ENV == 'UAT' || START_ENV == 'DEV' || START_ENV == 'sim' ? '' :
|
||||
<a className="talk" onClick={() => this.talkXy()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a>
|
||||
}
|
||||
{/* <a className={isFlash && !isModalVisible ? "talk text-effect":"talk"} onClick={() => this.initChatUI()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a> */}
|
||||
<div className="dashboard" style={{ height: innerHeight - 70, overflow: "hidden" }}>
|
||||
<Row className="topt">
|
||||
<Col span={12}><Card title="我参与的项目数量统计" bordered={false} className="cardtreJury" style={{ marginRight: "10px" }} loading={staloading} extra={<div style={{ marginTop: "-14px" }}><DatePicker showNow={false} picker="month" style={{ marginRight: "10px" }} value={datevalue} onChange={this.onChange} allowClear={false} /><Button type="primary" onClick={() => { this.onSearch() }}>确定</Button></div>}>
|
||||
|
@ -7,14 +7,12 @@ import talkPng from '@/images/talk/talk.png';
|
||||
import { routerRedux } from 'dva/router';
|
||||
import { RightOutlined } from '@ant-design/icons';
|
||||
import moment from 'moment';
|
||||
import { auctionFollowUpAProjectManager, getSessionUserData } from '@/utils/session';
|
||||
import { auctionFollowUpAProjectManager, getSessionUserData, getRA } from '@/utils/session';
|
||||
import { getDefId } from './service';
|
||||
import { getURLInformation } from '@/utils/CommonUtils';
|
||||
import MessageDetail from '@/pages/SystemMessage/message/components/messageDetail'
|
||||
import NoticeDetail from '@/pages/notice/noticeList/components/NoticeDetail'
|
||||
import QuestDetail from '@/pages/SystemMessage/message/components/questDetail'
|
||||
import { getQuestList } from '@/pages/SystemMessage/message/service'
|
||||
|
||||
@connect(({ dashboard, loading }) => ({
|
||||
...dashboard,
|
||||
fetchtPageList: loading.effects['dashboard/fetchtPageList'],
|
||||
@ -29,7 +27,7 @@ class manager extends PureComponent {
|
||||
detailId: '1', // 公告id
|
||||
noticeDetail: false, // 公告弹窗
|
||||
questData: {},//问卷数据
|
||||
questVisible: false //问卷弹窗
|
||||
questVisible: false, //问卷弹窗
|
||||
}
|
||||
componentDidMount() {
|
||||
this.props.dispatch({
|
||||
@ -113,13 +111,6 @@ class manager extends PureComponent {
|
||||
questVisible: false
|
||||
})
|
||||
}
|
||||
talkXy = () => {
|
||||
if (NTKF) {
|
||||
NTKF.im_openInPageChat('bl_1000_1492484340268');
|
||||
} else {
|
||||
message.warn('小优客服初始化失败,请联系系统管理员!')
|
||||
}
|
||||
}
|
||||
followUpProject = async (data) => { // 项目跟进
|
||||
auctionFollowUpAProjectManager(data)
|
||||
// sessionStorage.setItem('projectData', JSON.stringify(data));
|
||||
@ -128,13 +119,10 @@ class manager extends PureComponent {
|
||||
};
|
||||
render() {
|
||||
const { projectlist, staloading, tlist, trelist, pagelist, disposalList } = this.props;
|
||||
const { datevalue, messId, messageDetail, detailId, noticeDetail, questData, questVisible } = this.state;
|
||||
const { datevalue, messId, messageDetail, detailId, noticeDetail, questData, questVisible, } = this.state;
|
||||
return (
|
||||
<>
|
||||
{
|
||||
START_ENV == 'UAT' || START_ENV == 'DEV' || START_ENV == 'sim' ? '' :
|
||||
<a className="talk" onClick={() => this.talkXy()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a>
|
||||
}
|
||||
{/* <a className={isFlash && !isModalVisible ? "talk text-effect":"talk"} onClick={() => this.initChatUI()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a> */}
|
||||
<div className="dashboard" style={{ height: innerHeight - 70, overflow: "hidden" }}>
|
||||
<Row className="topt">
|
||||
<Col span={8}><Card title="我的消息" bordered={false} className="cardtre" style={{ marginRight: "10px" }} extra={<div className="moret" onClick={() => history.push('/SystemMessage/message')}>更多<RightOutlined /></div>}>
|
||||
|
@ -285,4 +285,18 @@
|
||||
}
|
||||
.talk:hover{
|
||||
color: #fff;
|
||||
}
|
||||
//智慧客服
|
||||
.text-effect {
|
||||
animation:animate linear 1000ms infinite;
|
||||
animation-delay:0s;
|
||||
@keyframes animate {
|
||||
0% {
|
||||
opacity:0.3;
|
||||
}
|
||||
100% {
|
||||
opacity:1;
|
||||
text-shadow:0 0 80px Red,0 0 30px orange,0 0 6px DarkRed;
|
||||
}
|
||||
}
|
||||
}
|
@ -135,13 +135,6 @@ class manager extends PureComponent {
|
||||
questVisible: false
|
||||
})
|
||||
}
|
||||
talkXy = () => {
|
||||
if (NTKF) {
|
||||
NTKF.im_openInPageChat('bl_1000_1492484340268');
|
||||
} else {
|
||||
message.warn('小优客服初始化失败,请联系系统管理员!')
|
||||
}
|
||||
}
|
||||
followUpProject = async (data) => {
|
||||
// let defId = ''; //项目流程id
|
||||
// await getDefId(data.id).then((res) => {
|
||||
@ -175,16 +168,15 @@ class manager extends PureComponent {
|
||||
|
||||
render() {
|
||||
const { downlist, projectlist, staloading, tlist, trelist, idList, dateNum } = this.props;
|
||||
const { datevalue, messId, messageDetail, detailId, noticeDetail, questData, questVisible, mainDetail } = this.state;
|
||||
const { datevalue, messId, messageDetail, detailId, noticeDetail, questData, questVisible, mainDetail, } = this.state;
|
||||
return (
|
||||
<>
|
||||
{
|
||||
START_ENV == 'UAT' || START_ENV == 'DEV' || START_ENV == 'sim' ? '' :
|
||||
<a className="talk" onClick={() => this.talkXy()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a>
|
||||
}
|
||||
{/* <a className="talk" >咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a> */}
|
||||
<div className="dashboard" style={{ height: innerHeight - 70, overflow: "hidden" }}>
|
||||
<Row className="topt">
|
||||
<Col span={8}><Card title="我的消息" bordered={false} className="cardtre" style={{ marginRight: "10px" }} extra={<div className="moret" onClick={() => history.push('/SystemMessage/message')}>更多<RightOutlined /></div>}>
|
||||
<Col span={8}><Card title="我的消息" bordered={false} className="cardtre" style={{ marginRight: "10px" }} extra={<div className="moret" onClick={() => {
|
||||
history.push('/SystemMessage/message')
|
||||
}}>更多<RightOutlined /></div>}>
|
||||
{trelist != [] && trelist.map((item, index) => {
|
||||
return (
|
||||
<div onClick={() => { item.templatetype == '3' ? this.toParticipate(item.servicecode) : this.lookDetail(item.msgId) }} className="messagetre" key={item.id}>
|
||||
|
@ -7,7 +7,7 @@ import talkPng from '@/images/talk/talk.png';
|
||||
import { routerRedux } from 'dva/router';
|
||||
import { RightOutlined } from '@ant-design/icons';
|
||||
import moment from 'moment';
|
||||
import { getSessionUserData } from '@/utils/session';
|
||||
import { getSessionUserData, getRA } from '@/utils/session';
|
||||
import { getURLInformation } from '@/utils/CommonUtils';
|
||||
import NoticeDetail from '@/pages/notice/noticeList/components/NoticeDetail'
|
||||
|
||||
@ -45,22 +45,13 @@ class manager extends PureComponent {
|
||||
noticeDetail: false
|
||||
})
|
||||
}
|
||||
talkXy = () => {
|
||||
if(NTKF){
|
||||
NTKF.im_openInPageChat('bl_1000_1492484340268');
|
||||
} else {
|
||||
message.warn('小优客服初始化失败,请联系系统管理员!')
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const { tlist, trelist } = this.props;
|
||||
const { detailId, noticeDetail } = this.state;
|
||||
const { detailId, noticeDetail,} = this.state; //智慧客服state
|
||||
return (
|
||||
<>
|
||||
{
|
||||
START_ENV == 'UAT' || START_ENV == 'DEV' || START_ENV == 'sim' ? '' :
|
||||
<a className="talk" onClick={() => this.talkXy()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a>
|
||||
}
|
||||
{/* <a className={isFlash && !isModalVisible ? "talk text-effect":"talk"} onClick={() => this.initChatUI()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a> */}
|
||||
<div className="dashboard" style={{ height: innerHeight - 70, overflow: "hidden" }}>
|
||||
<Row className="topt">
|
||||
<Col span={24}><Card title="系统公告" bordered={false} className="cardtre" extra={<div className="moret" onClick={() => history.push('/notice/noticeList')}>更多<RightOutlined /></div>}>
|
||||
|
@ -7,10 +7,9 @@ import talkPng from '@/images/talk/talk.png';
|
||||
import { routerRedux } from 'dva/router';
|
||||
import { RightOutlined } from '@ant-design/icons';
|
||||
import moment from 'moment';
|
||||
import { getSessionUserData } from '@/utils/session';
|
||||
import { getSessionUserData, getRA } from '@/utils/session';
|
||||
import { getURLInformation } from '@/utils/CommonUtils';
|
||||
import NoticeDetail from '@/pages/notice/noticeList/components/NoticeDetail'
|
||||
|
||||
@connect(({ dashboard, loading }) => ({
|
||||
...dashboard,
|
||||
}))
|
||||
@ -45,22 +44,13 @@ class manager extends PureComponent {
|
||||
noticeDetail: false
|
||||
})
|
||||
}
|
||||
talkXy = () => {
|
||||
if(NTKF){
|
||||
NTKF.im_openInPageChat('bl_1000_1492484340268');
|
||||
} else {
|
||||
message.warn('小优客服初始化失败,请联系系统管理员!')
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const { tlist, trelist } = this.props;
|
||||
const { detailId, noticeDetail } = this.state;
|
||||
const { detailId, noticeDetail, } = this.state;
|
||||
return (
|
||||
<>
|
||||
{
|
||||
START_ENV == 'UAT' || START_ENV == 'DEV' || START_ENV == 'sim' ? '' :
|
||||
<a className="talk" onClick={() => this.talkXy()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a>
|
||||
}
|
||||
{/* <a className={isFlash && !isModalVisible ? "talk text-effect":"talk"} onClick={() => this.initChatUI()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a> */}
|
||||
<div className="dashboard" style={{ height: innerHeight - 70, overflow: "hidden" }}>
|
||||
<Row className="topt">
|
||||
<Col span={24}><Card title="系统公告" bordered={false} className="cardtre" extra={<div className="moret" onClick={() => history.push('/notice/noticeList')}>更多<RightOutlined /></div>}>
|
||||
|
@ -7,7 +7,7 @@ import talkPng from '@/images/talk/talk.png';
|
||||
import { routerRedux } from 'dva/router';
|
||||
import { RightOutlined } from '@ant-design/icons';
|
||||
import moment from 'moment';
|
||||
import { getSessionUserData } from '@/utils/session';
|
||||
import { getSessionUserData, getRA } from '@/utils/session';
|
||||
import { getDefId } from './service';
|
||||
import { getURLInformation } from '@/utils/CommonUtils';
|
||||
import MessageDetail from '@/pages/SystemMessage/message/components/messageDetail'
|
||||
@ -35,7 +35,8 @@ class manager extends PureComponent {
|
||||
tpid: '0', // 中止原因id
|
||||
isModalVisible: false, // 中止原因弹窗
|
||||
questData: {},//问卷数据
|
||||
questVisible: false //问卷弹窗
|
||||
questVisible: false, //问卷弹窗服
|
||||
roleIds:'',//智慧客服
|
||||
}
|
||||
componentDidMount() {
|
||||
this.props.dispatch({
|
||||
@ -140,22 +141,13 @@ class manager extends PureComponent {
|
||||
sessionStorage.setItem('projectData', JSON.stringify(projectData));
|
||||
window.open("/AuctionViewAuctions/Index");
|
||||
}
|
||||
talkXy = () => {
|
||||
if(NTKF){
|
||||
NTKF.im_openInPageChat('bl_1000_1492484340268');
|
||||
} else {
|
||||
message.warn('小优客服初始化失败,请联系系统管理员!')
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const { projectlist, staloading, tlist, trelist, shotList, Participants } = this.props;
|
||||
const { datevalue, messId, messageDetail, detailId, noticeDetail, noticeModalVis, projectId, isModalVisible, tpid, questData, questVisible } = this.state;
|
||||
const { datevalue, messId, messageDetail, detailId, noticeDetail, noticeModalVis, projectId, isModalVisible, tpid, questData, questVisible, } = this.state;
|
||||
return (
|
||||
<>
|
||||
{
|
||||
START_ENV == 'UAT' || START_ENV == 'DEV' || START_ENV == 'sim' ? '' :
|
||||
<a className="talk" onClick={() => this.talkXy()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a>
|
||||
}
|
||||
{/* <a className={isFlash && !isChatModalVisible ? "talk text-effect":"talk"} onClick={() => this.initChatUI()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a> */}
|
||||
<div className="dashboard" style={{ height: innerHeight - 70, overflow: "hidden" }}>
|
||||
<Row className="topt">
|
||||
<Col span={8}><Card title="我的消息" bordered={false} className="cardtre" style={{ marginRight: "10px" }} extra={<div className="moret" onClick={() => history.push('/SystemMessage/message')}>更多<RightOutlined /></div>}>
|
||||
|
@ -8,7 +8,7 @@ import talkPng from '@/images/talk/talk.png';
|
||||
import { routerRedux } from 'dva/router';
|
||||
import { RightOutlined } from '@ant-design/icons';
|
||||
import moment from 'moment';
|
||||
import { followUpAProjectManager, getSessionUserData } from '@/utils/session';
|
||||
import { followUpAProjectManager, getSessionUserData, getRA } from '@/utils/session';
|
||||
import { getDefId } from './service';
|
||||
import { getURLInformation } from '@/utils/CommonUtils';
|
||||
import MessageDetail from '@/pages/SystemMessage/message/components/messageDetail'
|
||||
@ -16,7 +16,6 @@ import NoticeDetail from '@/pages/notice/noticeList/components/NoticeDetail'
|
||||
import QuestDetail from '@/pages/SystemMessage/message/components/questDetail'
|
||||
import { getQuestList } from '@/pages/SystemMessage/message/service'
|
||||
import ApprovalDetail from '@/pages/SystemMessage/message/components/approvalDetail'
|
||||
|
||||
@connect(({ dashboard, loading }) => ({
|
||||
...dashboard,
|
||||
downlistLoading: loading.effects['dashboard/fetchDowntlist'],
|
||||
@ -33,6 +32,7 @@ class manager extends PureComponent {
|
||||
questData: {},//问卷数据
|
||||
questVisible: false, //问卷弹窗
|
||||
mainDetail: false, // 审批单消息弹窗
|
||||
isModalVisible: false, //智慧客服
|
||||
}
|
||||
componentDidMount() {
|
||||
this.props.dispatch({
|
||||
@ -131,22 +131,13 @@ class manager extends PureComponent {
|
||||
await followUpAProjectManager(data);
|
||||
history.push('/ProjectLayout/Manager/HomePageSectionList');
|
||||
};
|
||||
talkXy = () => {
|
||||
if (NTKF) {
|
||||
NTKF.im_openInPageChat('bl_1000_1492484340268');
|
||||
} else {
|
||||
message.warn('小优客服初始化失败,请联系系统管理员!')
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const { downlist, projectlist, staloading, tlist, trelist, idList, dateNum } = this.props;
|
||||
const { datevalue, messId, messageDetail, detailId, noticeDetail, questData, questVisible, mainDetail } = this.state;
|
||||
const { datevalue, messId, messageDetail, detailId, noticeDetail, questData, questVisible, mainDetail, } = this.state; //智慧客服state
|
||||
return (
|
||||
<>
|
||||
{
|
||||
START_ENV == 'UAT' || START_ENV == 'DEV' || START_ENV == 'sim' ? '' :
|
||||
<a className="talk" onClick={() => this.talkXy()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a>
|
||||
}
|
||||
{/* <a className={isFlash && !isModalVisible ? "talk text-effect":"talk"}onClick={() => this.initChatUI()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a> */}
|
||||
<div className="dashboard" style={{ height: innerHeight - 70, overflow: "hidden" }}>
|
||||
<Row className="topt">
|
||||
<Col span={8}><Card title="我的消息" bordered={false} className="cardtre" style={{ marginRight: "10px" }} extra={<div className="moret" onClick={() => history.push('/SystemMessage/message')}>更多<RightOutlined /></div>}>
|
||||
|
@ -8,7 +8,7 @@ import talkPng from '@/images/talk/talk.png';
|
||||
import { routerRedux } from 'dva/router';
|
||||
import { RightOutlined } from '@ant-design/icons';
|
||||
import moment from 'moment';
|
||||
import { followUpAProjectSupplier, getSessionUserData } from '@/utils/session';
|
||||
import { followUpAProjectSupplier, getSessionUserData, getRA } from '@/utils/session';
|
||||
import { getDefId } from './service';
|
||||
import { getURLInformation } from '@/utils/CommonUtils';
|
||||
import MainDetail from '@/pages/SystemMessage/message/components/pageDetail'
|
||||
@ -18,7 +18,6 @@ import IParticipateIn from '@/utils/IParticipateIn'
|
||||
import InvitationLetter from '@/utils/InvitationLetter'
|
||||
import QuestDetail from '@/pages/SystemMessage/message/components/questDetail'
|
||||
import { getQuestList } from '@/pages/SystemMessage/message/service'
|
||||
|
||||
@connect(({ dashboard, loading }) => ({
|
||||
...dashboard,
|
||||
downlistLoading: loading.effects['dashboard/fetchDowntlist'],
|
||||
@ -177,22 +176,12 @@ class supplier extends PureComponent {
|
||||
invitationDetail: true
|
||||
})
|
||||
}
|
||||
talkXy = () => {
|
||||
if (NTKF) {
|
||||
NTKF.im_openInPageChat('bl_1000_1492484340268');
|
||||
} else {
|
||||
message.warn('小优客服初始化失败,请联系系统管理员!')
|
||||
}
|
||||
}
|
||||
render() {
|
||||
const { supplieruplist, supplierleftlist, supplierrightlist, staloading, tlist, trelist, idList, dateNum } = this.props;
|
||||
const { datevalue, messId, messageDetail, mainDetail, detailId, noticeDetail, joinData, joinDetail, invitationData, invitationDetail, questData, questVisible } = this.state;
|
||||
const { datevalue, messId, messageDetail, mainDetail, detailId, noticeDetail, joinData, joinDetail, invitationData, invitationDetail, questData, questVisible,} = this.state;
|
||||
return (
|
||||
<>
|
||||
{
|
||||
START_ENV == 'UAT' || START_ENV == 'DEV' || START_ENV == 'sim' ? '' :
|
||||
<a className="talk" onClick={() => this.talkXy()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a>
|
||||
}
|
||||
{/* <a className="talk" onClick={() => this.initChatUI()}>咨询服务︵<span>8:30</span><span>|</span><span>12:30</span><span>13:00</span><span>|</span><span>17:00</span>︶<img src={talkPng} /></a> */}
|
||||
<div className="dashboard" style={{ height: innerHeight - 70, overflow: "hidden" }}>
|
||||
<Row className="topt">
|
||||
<Col span={8}><Card title="我的消息" bordered={false} className="cardtre" style={{ marginRight: "10px" }} extra={<div className="moret" onClick={() => history.push('/SystemMessage/message')}>更多<RightOutlined /></div>}>
|
||||
|
Reference in New Issue
Block a user