Merge branch 'release_20230407' into 'master'

【生产】4.7版本同步到Master

See merge request eshop/fe_service_ebtp_frontend!205
This commit is contained in:
jl-zhoujl2
2023-04-10 00:52:47 +00:00
19 changed files with 662 additions and 35 deletions

View File

@ -345,8 +345,6 @@ const BiddingRoom = (props) => {
JuryList.splice(5, 1)
}
}
//弹出供应商关联风险信息
await showRiskModal(false)
//代理&项目经理
if (role == "ebtp-agency-project-manager" || role == "ebtp-purchase") {//代理和采购经理
setList(managerList);
@ -357,6 +355,7 @@ const BiddingRoom = (props) => {
} else { //其他未分配的角色
setList(managerList);
}
return await showRiskModal(false) //弹出供应商关联风险信息
}
return (

View File

@ -3,10 +3,10 @@ import { history } from 'umi';
import ProTable from '@ant-design/pro-table';
import React, { useEffect, useState } from "react";
import { getInteriorManagerProjectList } from '../service'
import { auctionFollowUpAProjectManager, getDicData } from '@/utils/session';
import { auctionFollowUpAProjectManager, getDicData, getSessionUserData } from '@/utils/session';
import { getUrlParam, getUrlRelativePath, isEmpty, proTableValueEnum } from '@/utils/CommonUtils';
import { btnAuthority } from '@/utils/authority';
import { createHiddenForm } from '@/utils/CustomerService' //智慧客服
const AuctionMyLookingForInnerShot: React.FC<{}> = () => {
const [form] = Form.useForm();
@ -19,6 +19,80 @@ const AuctionMyLookingForInnerShot: React.FC<{}> = () => {
const projectName = getUrlParam("projectName");
//url分页信息
const current = getUrlParam("current");
const saveTmpForm = (record: any) => {//智慧客服-创建临时表单
let roleAuthority: any | null = sessionStorage.getItem('roleAuthority');
let data = getSessionUserData();
console.log(record)
const inputList = [
{
label: null,
paraName: 'origin',
isEncode: false,
paraVal: 'eBid',
},
{
label: null,
paraName: 'organizationId',
isEncode: false,
paraVal: data.organizationId,
},
{
label: '处置实施项目',
paraName: 'projectName',
isEncode: true,
paraVal: record.projectName,
},
{
label: '处置编号 ',
paraName: 'disposalNum',
isEncode: true,
paraVal: record.disposalNum,
},
{
label: null,
paraName: 'tenderAgencyId',
isEncode: false,
paraVal: 'EMPTY',
},
{
label: null,
paraName: 'tenderAgencyName',
isEncode: true,
paraVal: '招投标客服',
},
{
label: '处置实施部门',
paraName: 'disposalDepartmentName',
isEncode: true,
paraVal: record.disposalDepartmentName,
},
{
label: '处置经理',
paraName: 'disposalManagerName',
isEncode: true,
paraVal: record.disposalManagerName
},
{
label: null,
paraName: 'roleAuthority',
isEncode: false,
paraVal: JSON.parse(roleAuthority)[0],
},
{
label: null,
paraName: 'module',
isEncode: false,
paraVal: '2',
},
{
label: null,
paraName: 'custType',
isEncode: false,
paraVal: '1',
},
]
createHiddenForm(inputList, window.location.pathname)
}
const columns: any = [
{
title: '序号',
@ -88,11 +162,15 @@ const AuctionMyLookingForInnerShot: React.FC<{}> = () => {
valueType: 'option',
width: 100,
render: (_: any, record: any) => {
return <Button hidden={btnAuthority(['ebtp-auction-manager'])} type='link' danger onClick={() => saveProject({
return <Button hidden={btnAuthority(['ebtp-auction-manager'])} type='link' danger onClick={() => {
//创建临时表单-智慧客服
saveTmpForm(record)
saveProject({
"id": record?.id,
"projectName": record?.projectName,
"bidMethodDict": 'auction',
})}></Button>
})
}}></Button>
}
}
];

View File

@ -79,6 +79,7 @@ const finance: React.FC<{}> = () => {
title: '我要咨询',
dataIndex: 'consult',
width: '5%',
search: false,
render: (text: any, record: any) => (
<span onClick={()=>{initChatUI(record)}}><img style={{width:20,height:20, cursor:'pointer'}} src={kefu} alt="" /></span>
),

View File

@ -51,6 +51,7 @@ const InvoiceSupplier: React.FC<{}> = () => {
{
title: '我要咨询',
dataIndex: 'consult',
search: false,
width: '5%',
render: (text: any, record: any) => (
<span onClick={()=>{initChatUI(record)}}><img style={{width:20,height:20, cursor:'pointer'}} src={kefu} alt="" /></span>
@ -127,13 +128,13 @@ const InvoiceSupplier: React.FC<{}> = () => {
label:null,
paraName:'tenderAgencyId',
isEncode:false,
paraVal:'EMPTY',
paraVal:record.agencyId,
},
{
label:null,
paraName:'tenderAgencyName',
isEncode:true,
paraVal:'招投标客服',
paraVal:record.agencyName,
},
{
label:null,
@ -145,13 +146,19 @@ const InvoiceSupplier: React.FC<{}> = () => {
label:null,
paraName:'module',
isEncode:false,
paraVal:'10',
},
{
label:null,
paraName:'custType',
isEncode:false,
paraVal:'2',
},
{
label:null,
paraName:'custType',
paraName:'orderId',
isEncode:false,
paraVal:'2',
paraVal:record.orderId,
},
{
label:'项目名称',

View File

@ -3,7 +3,7 @@ import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Modal } f
import { history } from 'umi';
import { connect } from 'dva';
import './index.less';
// import talkPng from '@/images/talk/talk.png';
import talkPng from '@/images/talk/talk.png';
import { routerRedux } from 'dva/router';
import { RightOutlined } from '@ant-design/icons';
import moment from 'moment';

View File

@ -1,9 +1,9 @@
import React, { PureComponent } from 'react';
import { history } from 'umi';
import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Empty, message } from 'antd';
import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Empty, message,Popconfirm } from 'antd';
import { connect } from 'dva';
import './index.less';
// import talkPng from '@/images/talk/talk.png';
import talkPng from '@/images/talk/talk.png';
import { routerRedux } from 'dva/router';
import { RightOutlined } from '@ant-design/icons';
import moment from 'moment';
@ -13,6 +13,7 @@ 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 {submitHiddenForm, createHiddenForm} from '@/utils/CustomerService' //智慧客服
@connect(({ dashboard, loading }) => ({
...dashboard,
fetchtPageList: loading.effects['dashboard/fetchtPageList'],
@ -117,12 +118,74 @@ class manager extends PureComponent {
// sessionStorage.setItem('defId', JSON.stringify('auction'));
history.push('/ProjectLayout/Auction/AuctionInfoManage')
};
//触发客服
initChatUI = ()=>{
let roleAuthority = sessionStorage.getItem('roleAuthority');
let data = getSessionUserData();
const inputList = [
{
label:null,
paraName:'origin',
isEncode:false,
paraVal:'eBid',
},
{
label:null,
paraName:'organizationId',
isEncode:false,
paraVal: data.organizationId,
},
{
label:null,
paraName:'tenderAgencyId',
isEncode:false,
paraVal:'EMPTY',
},
{
label:null,
paraName:'tenderAgencyName',
isEncode:true,
paraVal:'招标采购中心客服',
},
{
label:null,
paraName:'roleAuthority',
isEncode:false,
paraVal:JSON.parse(roleAuthority)[0],
},
{
label:null,
paraName:'module',
isEncode:false,
paraVal:'2',
},
{
label:null,
paraName:'custType',
isEncode:false,
paraVal:'1',
},
]
createHiddenForm(inputList, window.location.pathname)
submitHiddenForm()
}
render() {
const { projectlist, staloading, tlist, trelist, pagelist, disposalList } = this.props;
const { datevalue, messId, messageDetail, detailId, noticeDetail, questData, questVisible, } = this.state;
return (
<>
{/* <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> */}
<Popconfirm
title={()=>{
return <><p>系统操作咨询仅可以解决您在平台的操作问题如想了解发票保证金及项目相关问题请点击具体项目的咨询窗口进行咨询</p>
<p>是否还要继续咨询系统操作问题</p></>
}}
onConfirm={()=>this.initChatUI()}
okText="是"
cancelText="否"
>
<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>
</Popconfirm>
{/* <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>}>

View File

@ -266,7 +266,7 @@
right: 0;
bottom: 100px;
width: 38px;
height: 300px;
height: 320px;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
padding: 10px 6px 0;

View File

@ -1,14 +1,14 @@
import React, { PureComponent } from 'react';
import { history } from 'umi';
import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Empty, message, Modal } from 'antd';
import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Empty, message, Modal,Popconfirm, Space } from 'antd';
// import PageHeaderWrapper from '@/components/PageHeaderWrapper';
import { connect } from 'dva';
import './index.less';
// import talkPng from '@/images/talk/talk.png';
import talkPng from '@/images/talk/talk.png';
import { routerRedux } from 'dva/router';
import { RightOutlined } from '@ant-design/icons';
import moment from 'moment';
import { followUpAProjectManager } from '@/utils/session';
import { followUpAProjectManager, getSessionUserData } from '@/utils/session';
import { getDefId, isInsertIdOrPhoto } from './service';
import { getURLInformation } from '@/utils/CommonUtils';
import MessageDetail from '@/pages/SystemMessage/message/components/messageDetail'
@ -16,6 +16,8 @@ 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'
import { submitHiddenForm, createHiddenForm } from '@/utils/CustomerService' //智慧客服
import kefu from '@/assets/img/kefu.png' //智慧客服
@connect(({ dashboard, loading }) => ({
...dashboard,
downlistLoading: loading.effects['dashboard/fetchDowntlist'],
@ -32,6 +34,7 @@ class manager extends PureComponent {
questData: {},//问卷数据
questVisible: false,//问卷弹窗
mainDetail: false, // 审批单消息弹窗
kefuTip: false, // 客服弹窗
// NTKF_PARAM: {
// siteid: "bl_1000", //企业ID,为固定值
// settingid: "bl_1000_1492484340268", //接待组ID为固定值必填
@ -150,6 +153,57 @@ class manager extends PureComponent {
await followUpAProjectManager(data);
history.push('/ProjectLayout/Manager/HomePageSectionList');
};
//触发客服
initChatUI = () => {
let roleAuthority = sessionStorage.getItem('roleAuthority');
let data = getSessionUserData();
const inputList = [
{
label: null,
paraName: 'origin',
isEncode: false,
paraVal: 'eBid',
},
{
label: null,
paraName: 'organizationId',
isEncode: false,
paraVal: data.organizationId,
},
{
label: null,
paraName: 'tenderAgencyId',
isEncode: false,
paraVal: 'EMPTY',
},
{
label: null,
paraName: 'tenderAgencyName',
isEncode: true,
paraVal: '招标采购中心客服',
},
{
label: null,
paraName: 'roleAuthority',
isEncode: false,
paraVal: JSON.parse(roleAuthority)[0],
},
{
label: null,
paraName: 'module',
isEncode: false,
paraVal: '2',
},
{
label: null,
paraName: 'custType',
isEncode: false,
paraVal: '1',
},
]
createHiddenForm(inputList, window.location.pathname)
submitHiddenForm()
}
//判断是否有身份证号或照片
isIdOrPhoto = () => {
const { warning } = Modal;
@ -171,7 +225,22 @@ class manager extends PureComponent {
const { datevalue, messId, messageDetail, detailId, noticeDetail, questData, questVisible, mainDetail, } = this.state;
return (
<>
{/* <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> */}
{/* <Popconfirm
title={()=>{
return <><p>您好,系统操作咨询仅可以解决您在平台的操作问题,如想了解发票、保证金及项目相关问题请点击具体项目的咨询窗口进行咨询。</p>
<p>是否还要继续咨询系统操作问题?</p></>
}}
onConfirm={()=>this.initChatUI()}
okText="是"
cancelText="否"
>
<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>
</Popconfirm> */}
<a className="talk" onClick={() => {
this.setState({
kefuTip: true
})
}}>系统操作咨询<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={() => {
@ -299,6 +368,41 @@ class manager extends PureComponent {
{
idList.length > 0 ? <ApprovalDetail approvalId={idList[0]} dateNum={dateNum} trelist={idList} onCancel={() => { this.closeModel(), this.props.dispatch({ type: "dashboard/fetchtClarify", payload: { authorizestate: '0', templatetype: '4', size: 6 } }) }} modalVisible={mainDetail} /> : null
}
{
this.state.kefuTip ? <div style={{ border:'1px solid grey', borderRadius: '10px', backgroundColor:'white',position:'absolute', width:'600px', left:'50%', top:'50%',transform:'translate(-50%,-50%)'}}>
<div style={{padding:'10px',borderRadius: '6px 6px 0px 0px',backgroundColor:'rgb(179,0,0)', color:'white'}}>
温馨提示
</div>
<div style={{padding:'10px'}}>
<p>您好系统操作咨询仅可以解决您在<span style={{color:'rgb(179,0,0)', fontWeight:'bolder'}}>平台的操作使用问题</span></p>
<p>如您需要咨询项目相关问题发票保证金等请点击项目右侧<img style={{width:20,height:20,}} src={kefu} alt="" />进行咨询</p>
<p>请问您是否咨询系统操作问题</p>
</div>
<div style={{
//width:'200px',
position:'relative',
left:'50%',
transform:'translateX(-50%)',
display: 'inline-block',
margin: '8px 4px',
padding: '4px'
}}>
<Space
align='center'
>
<Button type='primary' onClick={() => {this.initChatUI();this.setState({
kefuTip: false
})}}></Button>
<Button onClick={() => this.setState({
kefuTip: false
})}>
</Button>
</Space>
</div>
</div>:null
}
</>
)
}

View File

@ -3,7 +3,7 @@ import { history } from 'umi';
import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Empty, message } from 'antd';
import { connect } from 'dva';
import './index.less';
// import talkPng from '@/images/talk/talk.png';
import talkPng from '@/images/talk/talk.png';
import { routerRedux } from 'dva/router';
import { RightOutlined } from '@ant-design/icons';
import moment from 'moment';

View File

@ -3,7 +3,7 @@ import { history } from 'umi';
import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Empty, message } from 'antd';
import { connect } from 'dva';
import './index.less';
// import talkPng from '@/images/talk/talk.png';
import talkPng from '@/images/talk/talk.png';
import { routerRedux } from 'dva/router';
import { RightOutlined } from '@ant-design/icons';
import moment from 'moment';

View File

@ -1,9 +1,9 @@
import React, { PureComponent } from 'react';
import { history } from 'umi';
import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Empty, message } from 'antd';
import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Empty, message, Popconfirm, Space } from 'antd';
import { connect } from 'dva';
import './index.less';
// import talkPng from '@/images/talk/talk.png';
import talkPng from '@/images/talk/talk.png';
import { routerRedux } from 'dva/router';
import { RightOutlined } from '@ant-design/icons';
import moment from 'moment';
@ -16,7 +16,8 @@ import NoticeModal from '@/pages/Auction/NoticeModal/noticeModal'
import StopReason from '@/pages/Auction/NoticeModal/stopReason'
import QuestDetail from '@/pages/SystemMessage/message/components/questDetail'
import { getQuestList } from '@/pages/SystemMessage/message/service'
import { submitHiddenForm, createHiddenForm } from '@/utils/CustomerService' //智慧客服
import kefu from '@/assets/img/kefu.png' //智慧客服
@connect(({ dashboard, loading }) => ({
...dashboard,
fetchtShotList: loading.effects['dashboard/fetchtShotList'],
@ -37,6 +38,7 @@ class manager extends PureComponent {
questData: {},//问卷数据
questVisible: false, //问卷弹窗服
roleIds: '',//智慧客服
kefuTip: false, // 客服弹窗
}
componentDidMount() {
this.props.dispatch({
@ -141,13 +143,79 @@ class manager extends PureComponent {
sessionStorage.setItem('projectData', JSON.stringify(projectData));
window.open("/AuctionViewAuctions/Index");
}
//触发客服
initChatUI = () => {
let roleAuthority = sessionStorage.getItem('roleAuthority');
let data = getSessionUserData();
const inputList = [
{
label: null,
paraName: 'origin',
isEncode: false,
paraVal: 'eBid',
},
{
label: null,
paraName: 'organizationId',
isEncode: false,
paraVal: data.organizationId,
},
{
label: null,
paraName: 'tenderAgencyId',
isEncode: false,
paraVal: 'EMPTY',
},
{
label: null,
paraName: 'tenderAgencyName',
isEncode: true,
paraVal: '招标采购中心客服',
},
{
label: null,
paraName: 'roleAuthority',
isEncode: false,
paraVal: JSON.parse(roleAuthority)[0],
},
{
label: null,
paraName: 'module',
isEncode: false,
paraVal: '2',
},
{
label: null,
paraName: 'custType',
isEncode: false,
paraVal: '1',
},
]
createHiddenForm(inputList, window.location.pathname)
submitHiddenForm()
}
render() {
const { projectlist, staloading, tlist, trelist, shotList, Participants } = this.props;
const { datevalue, messId, messageDetail, detailId, noticeDetail, noticeModalVis, projectId, isModalVisible, tpid, questData, questVisible, } = this.state;
return (
<>
{/* <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> */}
{/* <Popconfirm
title={()=>{
return <><p>您好,系统操作咨询仅可以解决您在平台的操作问题,如想了解发票、保证金及项目相关问题请点击具体项目的咨询窗口进行咨询。</p>
<p>是否还要继续咨询系统操作问题?</p></>
}}
onConfirm={()=>this.initChatUI()}
okText="是"
cancelText="否"
>
<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>
</Popconfirm> */}
<a className="talk" onClick={() => {
this.setState({
kefuTip: true
})
}}>系统操作咨询<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>}>
@ -234,6 +302,41 @@ class manager extends PureComponent {
{messageDetail ? <MessageDetail messId={messId} onCancel={() => { this.closeModel(), this.props.dispatch({ type: "dashboard/fetchtlistre", payload: { pageNo: 1, pageSize: 7 } }) }} modalVisible={messageDetail} /> : null}
{questVisible ? <QuestDetail questData={questData} onCancel={() => { this.closeParticipate(), this.props.dispatch({ type: "dashboard/fetchtlistre", payload: { pageNo: 1, pageSize: 7 } }) }} modalVisible={questVisible} /> : null}
{noticeDetail && <NoticeDetail detailId={detailId} onCancel={() => { this.noticeModel() }} modalVisible={noticeDetail} />}
{
this.state.kefuTip ? <div style={{ border:'1px solid grey', borderRadius: '10px', backgroundColor:'white',position:'absolute', width:'600px', left:'50%', top:'50%',transform:'translate(-50%,-50%)'}}>
<div style={{padding:'10px',borderRadius: '6px 6px 0px 0px',backgroundColor:'rgb(179,0,0)', color:'white'}}>
温馨提示
</div>
<div style={{padding:'10px'}}>
<p>您好系统操作咨询仅可以解决您在<span style={{color:'rgb(179,0,0)', fontWeight:'bolder'}}>平台的操作使用问题</span></p>
<p>如您需要咨询项目相关问题发票保证金等请点击项目右侧<img style={{width:20,height:20,}} src={kefu} alt="" />进行咨询</p>
<p>请问您是否咨询系统操作问题</p>
</div>
<div style={{
//width:'200px',
position:'relative',
left:'50%',
transform:'translateX(-50%)',
display: 'inline-block',
margin: '8px 4px',
padding: '4px'
}}>
<Space
align='center'
>
<Button type='primary' onClick={() => {this.initChatUI();this.setState({
kefuTip: false
})}}></Button>
<Button onClick={() => this.setState({
kefuTip: false
})}>
</Button>
</Space>
</div>
</div>:null
}
<NoticeModal projectId={projectId} state={'3'} vis={noticeModalVis} close={() => { this.noticeModel() }} />
<StopReason tpid={tpid} modalVisible={isModalVisible} onCancel={() => { this.noticeModel() }} />
</>

View File

@ -1,14 +1,14 @@
import React, { PureComponent } from 'react';
import { history } from 'umi';
import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Empty, message } from 'antd';
import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic, Spin, Empty, message,Popconfirm, Space } from 'antd';
// import PageHeaderWrapper from '@/components/PageHeaderWrapper';
import { connect } from 'dva';
import './index.less';
// import talkPng from '@/images/talk/talk.png';
import talkPng from '@/images/talk/talk.png';
import { routerRedux } from 'dva/router';
import { RightOutlined } from '@ant-design/icons';
import moment from 'moment';
import { followUpAProjectManager, getRA } from '@/utils/session';
import { followUpAProjectManager, getRA, getSessionUserData } from '@/utils/session';
import { getDefId } from './service';
import { getURLInformation } from '@/utils/CommonUtils';
import MessageDetail from '@/pages/SystemMessage/message/components/messageDetail'
@ -16,6 +16,8 @@ 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'
import {submitHiddenForm, createHiddenForm} from '@/utils/CustomerService' //智慧客服
import kefu from '@/assets/img/kefu.png' //智慧客服
@connect(({ dashboard, loading }) => ({
...dashboard,
downlistLoading: loading.effects['dashboard/fetchDowntlist'],
@ -33,6 +35,7 @@ class manager extends PureComponent {
questVisible: false, //问卷弹窗
mainDetail: false, // 审批单消息弹窗
isModalVisible: false, //智慧客服
kefuTip: false, // 客服弹窗
}
componentDidMount() {
this.props.dispatch({
@ -131,13 +134,78 @@ class manager extends PureComponent {
await followUpAProjectManager(data);
history.push('/ProjectLayout/Manager/HomePageSectionList');
};
//触发客服
initChatUI = ()=>{
let roleAuthority = sessionStorage.getItem('roleAuthority');
let data = getSessionUserData();
const inputList = [
{
label:null,
paraName:'origin',
isEncode:false,
paraVal:'eBid',
},
{
label:null,
paraName:'organizationId',
isEncode:false,
paraVal: data.organizationId,
},
{
label:null,
paraName:'tenderAgencyId',
isEncode:false,
paraVal:'EMPTY',
},
{
label:null,
paraName:'tenderAgencyName',
isEncode:true,
paraVal:'招标采购中心客服',
},
{
label:null,
paraName:'roleAuthority',
isEncode:false,
paraVal:JSON.parse(roleAuthority)[0],
},
{
label:null,
paraName:'module',
isEncode:false,
paraVal:'2',
},
{
label:null,
paraName:'custType',
isEncode:false,
paraVal:'1',
},
]
createHiddenForm(inputList, window.location.pathname)
submitHiddenForm()
}
render() {
const { downlist, projectlist, staloading, tlist, trelist, idList, dateNum } = this.props;
const { datevalue, messId, messageDetail, detailId, noticeDetail, questData, questVisible, mainDetail, } = this.state; //智慧客服state
return (
<>
{/* <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> */}
{/* <Popconfirm
title={()=>{
return <><p>您好,系统操作咨询仅可以解决您在平台的操作问题,如想了解发票、保证金及项目相关问题请点击具体项目的咨询窗口进行咨询。</p>
<p>是否还要继续咨询系统操作问题?</p></>
}}
onConfirm={()=>this.initChatUI()}
okText="是"
cancelText="否"
>
<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>
</Popconfirm> */}
<a className="talk" onClick={() => {
this.setState({
kefuTip: true
})
}}>系统操作咨询<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>}>
@ -259,6 +327,41 @@ class manager extends PureComponent {
{
idList.length > 0 ? <ApprovalDetail approvalId={idList[0]} dateNum={dateNum} trelist={idList} onCancel={() => { this.closeModel(), this.props.dispatch({ type: "dashboard/fetchtClarify", payload: { authorizestate: '0', templatetype: '4', size: 6 } }) }} modalVisible={mainDetail} /> : null
}
{
this.state.kefuTip ? <div style={{ border:'1px solid grey', borderRadius: '10px', backgroundColor:'white',position:'absolute', width:'600px', left:'50%', top:'50%',transform:'translate(-50%,-50%)'}}>
<div style={{padding:'10px',borderRadius: '6px 6px 0px 0px',backgroundColor:'rgb(179,0,0)', color:'white'}}>
温馨提示
</div>
<div style={{padding:'10px'}}>
<p>您好系统操作咨询仅可以解决您在<span style={{color:'rgb(179,0,0)', fontWeight:'bolder'}}>平台的操作使用问题</span></p>
<p>如您需要咨询项目相关问题发票保证金等请点击项目右侧<img style={{width:20,height:20,}} src={kefu} alt="" />进行咨询</p>
<p>请问您是否咨询系统操作问题</p>
</div>
<div style={{
//width:'200px',
position:'relative',
left:'50%',
transform:'translateX(-50%)',
display: 'inline-block',
margin: '8px 4px',
padding: '4px'
}}>
<Space
align='center'
>
<Button type='primary' onClick={() => {this.initChatUI();this.setState({
kefuTip: false
})}}></Button>
<Button onClick={() => this.setState({
kefuTip: false
})}>
</Button>
</Space>
</div>
</div>:null
}
</>
)
}

View File

@ -1,14 +1,14 @@
import React, { PureComponent } from 'react';
import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic } from 'antd';
import { Row, Col, Tooltip, Card, List, DatePicker, Button, Statistic,Popconfirm, Space } from 'antd';
import { history } from 'umi';
// import PageHeaderWrapper from '@/components/PageHeaderWrapper';
import { connect } from 'dva';
import './index.less';
// import talkPng from '@/images/talk/talk.png';
import talkPng from '@/images/talk/talk.png';
import { routerRedux } from 'dva/router';
import { RightOutlined } from '@ant-design/icons';
import moment from 'moment';
import { followUpAProjectSupplier, getRA } 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,6 +18,8 @@ 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'
import {submitHiddenForm, createHiddenForm} from '@/utils/CustomerService' //智慧客服
import kefu from '@/assets/img/kefu.png' //智慧客服
@connect(({ dashboard, loading }) => ({
...dashboard,
downlistLoading: loading.effects['dashboard/fetchDowntlist'],
@ -38,6 +40,7 @@ class supplier extends PureComponent {
questData: {},//问卷数据
questVisible: false, //问卷弹窗
datestring: moment().format('YYYY-MM'),//我参与的项目日期
kefuTip: false, // 客服弹窗
}
componentDidMount() {
const paramst = {
@ -176,12 +179,78 @@ class supplier extends PureComponent {
invitationDetail: true
})
}
//触发客服
initChatUI = ()=>{
let roleAuthority = sessionStorage.getItem('roleAuthority');
let data = getSessionUserData();
const inputList = [
{
label:null,
paraName:'origin',
isEncode:false,
paraVal:'eBid',
},
{
label:null,
paraName:'organizationId',
isEncode:false,
paraVal: data.organizationId,
},
{
label:null,
paraName:'tenderAgencyId',
isEncode:false,
paraVal:'EMPTY',
},
{
label:null,
paraName:'tenderAgencyName',
isEncode:true,
paraVal:'招标采购中心客服',
},
{
label:null,
paraName:'roleAuthority',
isEncode:false,
paraVal:JSON.parse(roleAuthority)[0],
},
{
label:null,
paraName:'module',
isEncode:false,
paraVal:'2',
},
{
label:null,
paraName:'custType',
isEncode:false,
paraVal:'1',
},
]
createHiddenForm(inputList, window.location.pathname)
submitHiddenForm()
}
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;
return (
<>
{/* <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> */}
{/* <Popconfirm
title={()=>{
return <><p>您好,系统操作咨询仅可以解决您在平台的操作问题,如想了解发票、保证金及项目相关问题请点击具体项目的咨询窗口进行咨询。</p>
<p>是否还要继续咨询系统操作问题?</p></>
}}
onConfirm={()=>this.initChatUI()}
okText="是"
cancelText="否"
>
<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>
</Popconfirm> */}
<a className="talk" onClick={() => {
this.setState({
kefuTip: true
})
}}>系统操作咨询<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>}>
@ -292,6 +361,41 @@ class supplier extends PureComponent {
{noticeDetail && <NoticeDetail detailId={detailId} onCancel={() => { this.noticeModel() }} modalVisible={noticeDetail} />}
{joinData == '' ? null : <IParticipateIn projectData={joinData} setVisible={() => { this.noticeModel() }} visible={joinDetail} />}
{invitationData == '' ? null : <InvitationLetter projectData={invitationData} setVisible={() => { this.noticeModel() }} visible={invitationDetail} />}
{
this.state.kefuTip ? <div style={{ border:'1px solid grey', borderRadius: '10px', backgroundColor:'white',position:'absolute', width:'600px', left:'50%', top:'50%',transform:'translate(-50%,-50%)'}}>
<div style={{padding:'10px',borderRadius: '6px 6px 0px 0px',backgroundColor:'rgb(179,0,0)', color:'white'}}>
温馨提示
</div>
<div style={{padding:'10px'}}>
<p>您好系统操作咨询仅可以解决您在<span style={{color:'rgb(179,0,0)', fontWeight:'bolder'}}>平台的操作使用问题</span></p>
<p>如您需要咨询项目相关问题发票保证金等请点击项目右侧<img style={{width:20,height:20,}} src={kefu} alt="" />进行咨询</p>
<p>请问您是否咨询系统操作问题</p>
</div>
<div style={{
//width:'200px',
position:'relative',
left:'50%',
transform:'translateX(-50%)',
display: 'inline-block',
margin: '8px 4px',
padding: '4px'
}}>
<Space
align='center'
>
<Button type='primary' onClick={() => {this.initChatUI();this.setState({
kefuTip: false
})}}></Button>
<Button onClick={() => this.setState({
kefuTip: false
})}>
</Button>
</Space>
</div>
</div>:null
}
</>
)
}

View File

@ -293,6 +293,12 @@ const ProjectDocumentation: React.FC = () => {
isEncode: false,
paraVal: data.organizationId,
},
{
label: null,
paraName: 'appManagerTel',
isEncode: false,
paraVal: record.appManagerTel,
},
{
label: '项目名称',
paraName: 'projectName',
@ -353,6 +359,12 @@ const ProjectDocumentation: React.FC = () => {
isEncode: false,
paraVal: JSON.parse(roleAuthority)[0],
},
{
label: null,
paraName: 'province',
isEncode: false,
paraVal: record.province,
},
{
label: null,
paraName: 'module',

View File

@ -51,6 +51,7 @@ const PurchasingManagerEnquiries: React.FC = () => {
{
title: '我要咨询',
dataIndex: 'consult',
search: false,
render: (text: any, record: any) => (
<span onClick={() => { saveTmpForm(record); initChatUI() }}><img style={{ width: 20, height: 20, cursor: 'pointer' }} src={kefu} alt="" /></span>
),
@ -122,6 +123,12 @@ const PurchasingManagerEnquiries: React.FC = () => {
isEncode: false,
paraVal: data.organizationId,
},
{
label: null,
paraName: 'appManagerTel',
isEncode: false,
paraVal: record.appManagerTel,
},
{
label: '项目名称',
paraName: 'projectName',
@ -182,6 +189,12 @@ const PurchasingManagerEnquiries: React.FC = () => {
isEncode: false,
paraVal: JSON.parse(roleAuthority)[0],
},
{
label: null,
paraName: 'province',
isEncode: false,
paraVal: record.province,
},
{
label: null,
paraName: 'module',

View File

@ -126,6 +126,7 @@ const Index: React.FC<{}> = () => {
{
title: '我要咨询',
dataIndex: 'consult',
search: false,
render: (text: any, record: any) => (
<span onClick={() => { saveTmpForm(record); initChatUI() }}><img style={{ width: 20, height: 20, cursor: 'pointer' }} src={kefu} alt="" /></span>
),
@ -415,12 +416,24 @@ const Index: React.FC<{}> = () => {
isEncode: false,
paraVal: 'eBid',
},
{
label: null,
paraName: 'appManagerTel',
isEncode: false,
paraVal: record.appManagerTel,
},
{
label: null,
paraName: 'organizationId',
isEncode: false,
paraVal: data.organizationId,
},
{
label: null,
paraName: 'province',
isEncode: false,
paraVal: record.province,
},
{
label: '项目名称',
paraName: 'projectName',

View File

@ -104,6 +104,18 @@ const LookingForBusinessOpportunitiesList: React.FC = () => {
isEncode: false,
paraVal: data.organizationId,
},
{
label: null,
paraName: 'appManagerTel',
isEncode: false,
paraVal: record.appManagerTel,
},
{
label: null,
paraName: 'province',
isEncode: false,
paraVal: record.province,
},
{
label: '项目名称',
paraName: 'projectName',
@ -202,6 +214,7 @@ const LookingForBusinessOpportunitiesList: React.FC = () => {
},
{
title: '我要咨询',
search: false,
dataIndex: 'consult',
render: (text: any, record: any) => (
<span onClick={() => { initChatUI(record) }}><img style={{ width: 20, height: 20, cursor: 'pointer' }} src={kefu} alt="" /></span>

View File

@ -124,6 +124,18 @@ const LookingForBusinessOpportunitiesList: React.FC<{}> = () => {
isEncode: false,
paraVal: data.organizationId,
},
{
label: null,
paraName: 'appManagerTel',
isEncode: false,
paraVal: record.appManagerTel,
},
{
label: null,
paraName: 'province',
isEncode: false,
paraVal: record.province,
},
{
label: '项目名称',
paraName: 'projectName',
@ -251,6 +263,7 @@ const LookingForBusinessOpportunitiesList: React.FC<{}> = () => {
{
title: '我要咨询',
dataIndex: 'consult',
search:false,
render: (text: any, record: any) => (
<span onClick={() => { initChatUI(record) }}><img style={{ width: 20, height: 20, cursor: 'pointer' }} src={kefu} alt="" /></span>
),

View File

@ -1,6 +1,5 @@
/*客服系统专用*/
//跨系统post传参
export const bizServiceCustomService = REACT_APP_CUSTOMERSERVICE_USERCENTER + '&client_id=' + REACT_APP_CUSTOMERSERVICE_CLIENT_ID + '&redirect_uri=' + REACT_APP_CUSTOMERSERVICE_REDIRECT + '/redirect?page=home&mall3_token=';//智慧客服
//export const bizServiceCustomService = REACT_APP_CUSTOMERSERVICE_USERCENTER + '&client_id=S00hFPxc&redirect_uri=http://localhost:3000/redirect?page=home&mall3_token=';//智慧客服
export function windowOpenChatUI(inputList:any,pathname:string) {
@ -24,6 +23,7 @@
input.id = 'tempInput_CustomerService'
input.name= 'sceneUrl'
input.value= pathname
input.type="hidden"
tempForm.appendChild(input)
document.body.appendChild(tempForm);
if(tempForm){
@ -54,6 +54,7 @@
input.id = 'tempInput_CustomerService'
input.name= 'sceneUrl'
input.value= pathname
input.type="hidden"
tempForm.appendChild(input)
document.body.appendChild(tempForm);
}