diff --git a/src/pages/MainPage/ProjectManager/manager.js b/src/pages/MainPage/ProjectManager/manager.js index 59aee38..73f80e5 100644 --- a/src/pages/MainPage/ProjectManager/manager.js +++ b/src/pages/MainPage/ProjectManager/manager.js @@ -15,6 +15,7 @@ import MessageDetail from '@/pages/SystemMessage/message/components/messageDetai 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'], @@ -29,7 +30,8 @@ class manager extends PureComponent { detailId: '1', // 公告id noticeDetail: false, // 公告弹窗 questData: {},//问卷数据 - questVisible: false //问卷弹窗 + questVisible: false,//问卷弹窗 + mainDetail: false, // 审批单消息弹窗 // NTKF_PARAM: { // siteid: "bl_1000", //企业ID,,为固定值 // settingid: "bl_1000_1492484340268", //接待组ID,为固定值,必填 @@ -56,6 +58,10 @@ class manager extends PureComponent { type: "dashboard/fetchtlistre", payload: { pageNo: 1, pageSize: 7 } }) + this.props.dispatch({ + type: "dashboard/fetchtClarify", + payload: { authorizestate: '0', templatetype: '4', size: 6 } + }) NTKF_PARAM = { siteid: "bl_1000",                    //企业ID,,为固定值 settingid: "bl_1000_1492484340268",           //接待组ID,为固定值,必填 @@ -65,6 +71,7 @@ class manager extends PureComponent { userlevel: "1",                       //网站自定义会员级别,1-N,可根据选择判断,取值显示到小能客户端 erpparam: "abc"                          //erpparam为erp功能的扩展字段,可选,购买erp功能后用于erp功能集成 } + this.approvalDetail() } onChange = (date, dateString) => { this.setState({ @@ -91,7 +98,8 @@ class manager extends PureComponent { } closeModel = () => { // 关闭消息弹窗 this.setState({ - messageDetail: false + messageDetail: false, + mainDetail: false, }) } lookInfo = (id) => { // 公告查看 @@ -105,17 +113,22 @@ class manager extends PureComponent { noticeDetail: false }) } + approvalDetail = () => { // 审批单消息查看详情 + this.setState({ + mainDetail: true + }) + } toParticipate = async (servicecode) => {//问卷调查弹窗 const { questId } = JSON.parse(servicecode); await getQuestList({ id: questId }).then(res => { - if (res?.code == 200 && res?.success) { - this.setState({ - questData: res?.data, - questVisible: true, - }) - } + if (res?.code == 200 && res?.success) { + this.setState({ + questData: res?.data, + questVisible: true, + }) + } }) - } + } closeParticipate = () => { // 关闭问卷调查弹窗 this.setState({ questVisible: false @@ -144,13 +157,13 @@ class manager extends PureComponent { history.push('/ProjectLayout/Manager/HomePageSectionList'); }; render() { - const { downlist, projectlist, staloading, tlist, trelist } = this.props; - const { datevalue, messId, messageDetail, detailId, noticeDetail, questData, questVisible } = this.state; + const { downlist, projectlist, staloading, tlist, trelist, idList, dateNum } = this.props; + const { datevalue, messId, messageDetail, detailId, noticeDetail, questData, questVisible, mainDetail } = this.state; return ( <> { - START_ENV == 'UAT' || START_ENV == 'DEV' || START_ENV == 'sim' ? '' : - this.talkXy()}>咨询服务︵8:30|12:3013:00|17:00 + START_ENV == 'UAT' || START_ENV == 'DEV' || START_ENV == 'sim' ? '' : + this.talkXy()}>咨询服务︵8:30|12:3013:00|17:00 }
@@ -271,9 +284,12 @@ class manager extends PureComponent { />
- {messageDetail ? { this.closeModel(), this.props.dispatch({type: "dashboard/fetchtlistre", payload: { pageNo: 1, pageSize: 7 }}) }} modalVisible={messageDetail} /> : null} - {questVisible ? { this.closeParticipate(), this.props.dispatch({type: "dashboard/fetchtlistre", payload: { pageNo: 1, pageSize: 7 }}) }} modalVisible={questVisible} /> : null} + {messageDetail ? { this.closeModel(), this.props.dispatch({ type: "dashboard/fetchtlistre", payload: { pageNo: 1, pageSize: 7 } }) }} modalVisible={messageDetail} /> : null} + {questVisible ? { this.closeParticipate(), this.props.dispatch({ type: "dashboard/fetchtlistre", payload: { pageNo: 1, pageSize: 7 } }) }} modalVisible={questVisible} /> : null} {noticeDetail && { this.noticeModel() }} modalVisible={noticeDetail} />} + { + idList.length > 0 ? { this.closeModel(), this.props.dispatch({ type: "dashboard/fetchtClarify", payload: { authorizestate: '0', templatetype: '4', size: 6 } }) }} modalVisible={mainDetail} /> : null + } ) } diff --git a/src/pages/MainPage/ProjectManager/purchaseManager.js b/src/pages/MainPage/ProjectManager/purchaseManager.js index 61177a3..1ffb5e3 100644 --- a/src/pages/MainPage/ProjectManager/purchaseManager.js +++ b/src/pages/MainPage/ProjectManager/purchaseManager.js @@ -15,6 +15,7 @@ import MessageDetail from '@/pages/SystemMessage/message/components/messageDetai 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, @@ -30,7 +31,8 @@ class manager extends PureComponent { detailId: '1', // 公告id noticeDetail: false, // 公告弹窗 questData: {},//问卷数据 - questVisible: false //问卷弹窗 + questVisible: false, //问卷弹窗 + mainDetail: false, // 审批单消息弹窗 } componentDidMount() { this.props.dispatch({ @@ -49,6 +51,10 @@ class manager extends PureComponent { type: "dashboard/fetchtlistre", payload: { pageNo: 1, pageSize: 7 } }) + this.props.dispatch({ + type: "dashboard/fetchtClarify", + payload: { authorizestate: '0', templatetype: '4', size: 6 } + }) NTKF_PARAM = { siteid: "bl_1000",                    //企业ID,,为固定值 settingid: "bl_1000_1492484340268",           //接待组ID,为固定值,必填 @@ -58,6 +64,7 @@ class manager extends PureComponent { userlevel: "1",                       //网站自定义会员级别,1-N,可根据选择判断,取值显示到小能客户端 erpparam: "abc"                          //erpparam为erp功能的扩展字段,可选,购买erp功能后用于erp功能集成 } + this.approvalDetail() } onChange = (date, dateString) => { this.setState({ @@ -84,7 +91,8 @@ class manager extends PureComponent { } closeModel = () => { // 关闭消息弹窗 this.setState({ - messageDetail: false + messageDetail: false, + mainDetail: false, }) } lookInfo = (id) => { // 公告查看 @@ -98,17 +106,22 @@ class manager extends PureComponent { noticeDetail: false }) } + approvalDetail = () => { // 审批单消息查看详情 + this.setState({ + mainDetail: true + }) + } toParticipate = async (servicecode) => {//问卷调查弹窗 const { questId } = JSON.parse(servicecode); await getQuestList({ id: questId }).then(res => { - if (res?.code == 200 && res?.success) { - this.setState({ - questData: res?.data, - questVisible: true, - }) - } + if (res?.code == 200 && res?.success) { + this.setState({ + questData: res?.data, + questVisible: true, + }) + } }) - } + } closeParticipate = () => { // 关闭问卷调查弹窗 this.setState({ questVisible: false @@ -119,20 +132,20 @@ class manager extends PureComponent { history.push('/ProjectLayout/Manager/HomePageSectionList'); }; talkXy = () => { - if(NTKF){ + if (NTKF) { NTKF.im_openInPageChat('bl_1000_1492484340268'); } else { message.warn('小优客服初始化失败,请联系系统管理员!') } } render() { - const { downlist, projectlist, staloading, tlist, trelist } = this.props; - const { datevalue, messId, messageDetail, detailId, noticeDetail, questData, questVisible } = this.state; + const { downlist, projectlist, staloading, tlist, trelist, idList, dateNum } = this.props; + const { datevalue, messId, messageDetail, detailId, noticeDetail, questData, questVisible, mainDetail } = this.state; return ( <> { START_ENV == 'UAT' || START_ENV == 'DEV' || START_ENV == 'sim' ? '' : - this.talkXy()}>咨询服务︵8:30|12:3013:00|17:00 + this.talkXy()}>咨询服务︵8:30|12:3013:00|17:00 }
@@ -249,9 +262,12 @@ class manager extends PureComponent { />
- {messageDetail ? { this.closeModel(), this.props.dispatch({type: "dashboard/fetchtlistre", payload: { pageNo: 1, pageSize: 7 }}) }} modalVisible={messageDetail} /> : null } - {questVisible ? { this.closeParticipate(), this.props.dispatch({type: "dashboard/fetchtlistre", payload: { pageNo: 1, pageSize: 7 }}) }} modalVisible={questVisible} /> : null} + {messageDetail ? { this.closeModel(), this.props.dispatch({ type: "dashboard/fetchtlistre", payload: { pageNo: 1, pageSize: 7 } }) }} modalVisible={messageDetail} /> : null} + {questVisible ? { this.closeParticipate(), this.props.dispatch({ type: "dashboard/fetchtlistre", payload: { pageNo: 1, pageSize: 7 } }) }} modalVisible={questVisible} /> : null} {noticeDetail && { this.noticeModel() }} modalVisible={noticeDetail} />} + { + idList.length > 0 ? { this.closeModel(), this.props.dispatch({ type: "dashboard/fetchtClarify", payload: { authorizestate: '0', templatetype: '4', size: 6 } }) }} modalVisible={mainDetail} /> : null + } ) } diff --git a/src/pages/SystemMessage/message/components/approvalDetail.tsx b/src/pages/SystemMessage/message/components/approvalDetail.tsx new file mode 100644 index 0000000..5856cc8 --- /dev/null +++ b/src/pages/SystemMessage/message/components/approvalDetail.tsx @@ -0,0 +1,179 @@ +import { Button, Form, Input, Modal } from "antd" +import React, { useEffect, useState } from "react" +import { describeSiteMsgDetail, getProjectById, selectMsgRead } from '../service' +import '@/assets/ld_style.less' +import { history } from 'umi'; +import { followUpAProjectManager, getDefId } from '@/utils/session'; + +const { TextArea } = Input; + +interface ApprovalDetailProps { + modalVisible: boolean; + approvalId: string; + dateNum: Number; + trelist: any[]; + onCancel: () => void; +} + +const layout = { + labelCol: { span: 6 }, + wrapperCol: { span: 15 }, +}; + +const ApprovalDetail: React.FC = (props) => { + const { modalVisible, approvalId, onCancel, trelist, dateNum } = props; + const [form] = Form.useForm(); + const [detailId, setDetailId] = useState(approvalId); // 详情id + const [lastVisible, setLastVisible] = useState(trelist?.indexOf(approvalId) == 0 ? true : false); // 上一条禁用 + const [nextVisible, setNextVisible] = useState(trelist?.indexOf(approvalId) == trelist?.length - 1 ? true : false); // 下一条禁用 + const [knowVisible, setKnowVisible] = useState(false); // 知道了禁用 + const [projectId, setProjectId] = useState(); // 项目id + const [roomType, setRoomType] = useState(); // 判断资审候审 + const [disFollowUp, setDisFollowUp] = useState(false) //跟进按钮隐藏 + + useEffect(() => { + Int(approvalId); + setDetailId(approvalId) + }, [approvalId]); + const Int = (detailId: any) => { + describeSiteMsgDetail(detailId).then(res => { + // if(res.code == 200){ + if (res?.servicecode) { + let detailMess = JSON.parse(res.servicecode) + setProjectId(detailMess.tpId) + setRoomType(detailMess.roomType) + } else { + // message.error('项目数据错误,无法获取流程,请联系管理员!') + setDisFollowUp(true) + } + res.authorizestate == '0' ? setKnowVisible(false) : setKnowVisible(true) + form.setFieldsValue({ + "title": res.title, + "createtime": res.createtime, + "content": res.content + }); + // } + }); + }; + + const next = () => { // 下一条 + setLastVisible(false) + let current = trelist.indexOf(detailId) + if (current < trelist.length - 2 && current != trelist.length - 2) { + setDetailId(trelist[current + 1]) + Int(trelist[current + 1]) + } else if (current == trelist.length - 2) { + setDetailId(trelist[current + 1]) + Int(trelist[current + 1]) + setNextVisible(true) + } else { + setNextVisible(true) + } + } + + const last = () => { // 上一条 + setNextVisible(false) + let current: any = trelist.indexOf(detailId) + if (current > 0 && current != 1) { + setDetailId(trelist[current - 1]) + Int(trelist[current - 1]) + } else if (current == 1) { + setDetailId(trelist[current - 1]) + Int(trelist[current - 1]) + setLastVisible(true) + } else { + setLastVisible(true) + } + } + + const getRead = () => { // 知道了 + selectMsgRead(detailId).then(res => { + setKnowVisible(true) + }); + } + + const getFollow = async () => { // 跟进 + await getProjectById(projectId).then(async response => { + if (response?.code == 200 && response?.success == true) { + const resData = response?.data + await followUpAProjectManager(resData); + const defId = getDefId(); + if (roomType == '1' && (defId == 'bid_prequalification' || defId == 'comparison_one_prequalification')) { //公开招标资格预审,公开比选一阶段资格预审 + history.push('/ProjectLayout/ZYuShen/senior/Notice?roomType=1') + } else if (roomType == '2' && (defId == 'bid_prequalification' || defId == 'comparison_one_prequalification')) { //公开招标资格预审后审阶段,公开比选一阶段资格预审后审阶段 + history.push('/ProjectLayout/biddingAnnouncement/BiddingInvitationList?roomType=2') + } else if ( + defId == 'bid_qualification' || + defId == 'comparison_one' || + defId == 'comparison_multi' || + defId == 'recruit' || + defId == 'negotiation_competitive_public' + ) { //公开招标后审,公开比选一阶段后审,公开比选多阶段,招募单轮,竞争性谈判发公告 + history.push('/ProjectLayout/biddingAnnouncement/BiddingAnnouncementList') + } else if ( + defId == 'bid_invitation' || + defId == 'negotiation_competitive_invite' || + defId == 'negotiation_single' + ) { //邀请招标,竞争性谈判发邀请函,单一来源 + history.push('/ProjectLayout/biddingAnnouncement/BiddingInvitationList') + } else if ( + defId == 'recruit_multi' + ) { //多轮招募 + history.push('/ProjectLayout/ZZhaoMu/Bid/BiddingAnnouncement/BiddingAnnouncementList') + } + } + }) + } + + return ( + <> + onCancel()} + width={800} + centered + footer={[ + , + , + ]} + > +

您有 {dateNum} 条公告审批结束消息,当前只显示 6 条最新的公告审批结束提示,请到 history.push('/SystemMessage/message')}> 这里 查看全部提示信息

+
+ + + + + +