import React from 'react'; // import RreactDom from 'react-dom'; import PropTypes, { func } from 'prop-types'; import { Layout, Menu, Icon, Avatar, Dropdown, Modal, message, /* Tag, message */ notification, Button } from 'antd'; import tim from '../utils/imInitialize' import DocumentTitle from 'react-document-title'; import { connect } from 'dva'; import { Link, Route, Redirect, Switch } from 'dva/router'; import { gup } from '../utils/utils'; /* import groupBy from "lodash/groupBy"; */ import { ContainerQuery } from 'react-container-query'; import classNames from 'classnames'; import Debounce from 'lodash-decorators/debounce'; /* import HeaderSearch from "../components/HeaderSearch"; */ import NoticeIcon from '../components/NoticeIcon'; import GlobalFooter from '../components/GlobalFooter'; import NotFound from '../routes/Exception/404'; import styles from './BasicLayout.less'; import IconS from '../components/IconS'; import Utils from '../common/bcx_utils'; import { // httpsAddress, domainConfig } from '../utils/config'; import moment from 'moment'; import { systemComVaseInfoGet, systemOauthGetUserMenus, updateSelectMessageRead, //设置所有未读消息为已读(new) queryNotices, systemPerAccountInfoGetUserAccount, getComProblemPerNum, comSalarySyncInitCheckIsInit, // 校验企业是否完成了薪酬同步初始化 } from '../services/api'; import MessageDetail from '../routes/Administrative/MessageSettings/messageDetail'; import ChangePassword from '../routes/User/ChangePassword'; import Welcome from '../routes/Enterprise/Organization/Welcome'; import IEReminder from '../routes/Enterprise/Organization/IEReminder'; // import Initialization from '../routes/Enterprise/HomePage/Initialization'; import ReceiveList from '../routes/Administrative/MessageSettings/ReceiveList'; import NotifList from '../routes/Administrative/MessageSettings/NotifList'; import $nModal from '../utils/modal/nModal'; import $modal from '../utils/modal'; import "moment/locale/zh-cn"; moment.locale('zh-cn'); const store = require('store'); // 默认头像 const defaultAvatar = require('../assets/images/avatar.png'); let slideMenuPath = []; const { Header, Sider, Content } = Layout; const { SubMenu } = Menu; // 侧边一级导航 const menugroup = { 0: ['企业首页', '企业管理'], 1: ['数据地图'], 2: ['人事管理', '内勤管理', '驻勤管理', '薪酬管理', '五险一金设置', '奖惩管理', '临保任务'], 3: ['消息', '审批', '劳务薪酬', '设备管理', '合同管理'], 4: ['活动管理', '项目管理', '备案许可申报', '申报业务','统计调查'], 5: ['课件管理', '培训管理', '在线培训', '考试管理', '保安资格证管理', '保安等级证管理', '考培负责人管理', '岗位适应性培训','等级证学员实习记录'], 6: ['企业保险', '金融钱包', '薪资发放管理','业务发票'], 7: ['大型活动'], 8: [ '地图可视化', '活动统计', '项目统计', '任务统计', '审批统计', '考勤统计', '培训统计', '保险统计' ], 9: ['仪表盘', '表单页', '列表页', '详情页', '结果', '异常', '云会议'], 10: ['企业统计', '数据统计'], 11:["防空指挥"], 12: ['保安员考培信息抽查管理','补贴发放管理'], 13: ['薪酬服务'] }; /** * iverry remark * 头部导航,以及导航对应左边的菜单栏 */ const topMenu = [ { // to: "/HomePage/Initialization", to: '/enterprise/company', text: '', items: ['企业首页', '企业通讯录', '企业管理'] }, // { // to: "/PersonnelRecruitment/ListContainer", // text: "人事", // items: ["人事管理", "内勤管理", "五险一金设置", "奖惩管理"] // }, { to: '/datamap/onekeysearch', text: '数据地图', items: ['数据地图'] }, { to: '/PersonnelRecruitment/departmentmanagement', text: '人事', items: ['人事管理', '内勤管理', '驻勤管理', '薪酬管理', '五险一金设置', '奖惩管理', '临保任务'] }, { to: '/xiaoxitongzhi/Messages', text: '行政', items: ['消息', '审批', '劳务薪酬', '设备管理', '合同管理'] }, { // to: '/taskmanager/tasklist', to: '/PoliceDeclare/DeclarationList', text: '业务', items: ['活动管理', '项目管理', '备案许可申报', '申报业务'] }, { to: '/TrainingUnitsTrainingManagement/CoursesList', text: '培训', items: ['课件管理', '培训管理', '在线培训', '考试管理', '资格证打印', '等级证管理', '考培负责人管理'] }, { to: '/insurancemanagement/enterpriseinsurance', text: '金融保险', items: ['企业保险'] }, { to: '/publicsafety/system', text: '大型活动', items: ['大型活动'] }, { to: '/data/com-statistics', text: '数据统计', items: ['企业统计'] }, { to: '/meeting/buy-setMeal', text: '会议', items: ['云会议'] }, { to: '/command/prevention-and-control', text: '防控指挥', }, { to: '/command/fuse', text: '融合调度指挥平台', }, { to: '/spotCheck/certificateMessage', text: '协会服务', items:['保安员考培信息抽查管理'] }, { to: '/salary/service', text: '薪酬服务', items: ['薪酬服务'] } // { // to: "/exception/404", // text: "统计", // items: [ // "地图可视化", // "活动统计", // "项目统计", // "任务统计", // "审批统计", // "考勤统计", // "培训统计", // "保险统计" // ] // } ]; const query = { 'screen-xs': { maxWidth: 575 }, 'screen-sm': { minWidth: 576, maxWidth: 767 }, 'screen-md': { minWidth: 768, maxWidth: 991 }, 'screen-lg': { minWidth: 992, maxWidth: 1199 }, 'screen-xl': { minWidth: 1200 } }; /** 通知头像 01开头:系统通知 02开头:任务通知 03开头:企业通知 04开头:考试通知 05开头:公安通知 06开头:平台通知 */ const noticeAwars = { '01': ( ), '02': ( ), '03': ( ), '04': ( ), '05': ( ), '06': ( ), '07': ( ) }; @connect(state => ({ companyInfo: state.global.companyInfo, imIsLogin: state.global.imIsLogin, lMenu: state.global.lMenu, tMenu: state.global.tMenu, menuInfo: state.global.menuInfo, footer: state.global.footer, client: state.client.client, im: state.im, })) class BasicLayout extends React.PureComponent { static childContextTypes = { location: PropTypes.object, breadcrumbNameMap: PropTypes.object }; constructor(props) { super(props); // 把一级 Layout 的 children 作为菜单项 this.menus = props.navData.reduce( (arr, current) => arr.concat(current.children), [] ); // const currentGroup = // refresh[this.props.location.pathname.split('/')[1]] || 0; this.state = { menuauth: [], //后台返回的菜单 openKeys: this.getDefaultCollapsedSubMenus(props), currentGroup: 0, //当前组 topMenu, record: {}, checkModal: false, changePasswordVisible: false, //修改密码Modal popupVisible: false, //消息通知弹窗是否显示 isShowIEPrompt: false, //是否IE浏览器 currentKey: '0', userMobilePhone: null,//用户登录手机号码 noticeIsInit: false, //消息弹窗是否已经弹出 commandWindow: null,//浏览器上是否新增了防控指挥的窗口,用于后续退出登录的时候,将防控指挥的窗口关闭 }; this.loginOut(); this.systemComVaseInfoGet(); if (store.get('saas') !== undefined) { // this.systemComVaseInfoGet(); this.systemOauthGetUserMenus(); // this.systemPerAccountInfoGetUserAccount1(); // this.props.dispatch({ // type: 'global/fetchNotices' // }); } // 判断url上是否带上token (防控指挥需要跳转到https页面,url上会携带token) const access_token = gup('access_token', window.location.href); if (!!access_token) { const saas = store.get('saas') || {}; store.set('saas', { ...saas, access_token }); // this.systemOauthGetUserMenus(); store.set('isShowContent', { isShowContent: true }); } } componentWillMount() { const pathName = window.location.pathname; if (/^\/bbdweb.*/.test(pathName)) { const path = window.location.pathname.replace(/^\/bbdweb(\/#\/)?/, ''); this.props.history.replace(path); } // 全局问题人员通知 const noticePerMsg = () => { const reFatch = () => { if(window.noticePerMsgTimer){ clearTimeout(window.noticePerMsgTimer); window.noticePerMsgTimer = null; } window.noticePerMsgTimer = setTimeout(() => { noticePerMsg(); }, 1000 * 60 * 5); }; // const close = () => { // const noticeWraps = document.getElementsByClassName('proble_notice'); // Reflect.apply(Array.prototype.forEach, noticeWraps, [item => { // item.style.display = 'none'; // // RreactDom.unmountComponentAtNode(item.parentNode); // // item.parentNode.removeChild(item); // store.set('isShowContent', { isShowContent: true }); // this.props.history.push('/PersonnelRecruitment/problemPersonnel'); // }]); // } if (this.props.companyInfo.isInit == "0" || this.props.companyInfo.isInit==undefined) { reFatch(); } else { getComProblemPerNum().then(res => { const num = res.data; if (!num) { reFatch(); } else { if (num == '0') { reFatch(); } else { $modal( `您企业有待处理问题人员${num}人`, ( ), [ { type: 'primary', text: '查看', onPress: () => { store.set('isShowContent', { isShowContent: true }); this.props.history.push('/PersonnelRecruitment/problemPersonnel'); reFatch(); } } ], 'warning', false, { color: 'red' } ); // close(); // notification.warning({ // className: 'proble_notice', // message: `您企业有待处理问题人员${num}人`, // description: ( //
// 请访问【人事】-【问题人员】页面尽快处理
// { // close(); // reFatch(); // }}>查看 //
// ), // duration: null, // placement: 'topRight', // icon: , // onClose: () => { // reFatch(); // } // }); } } }).catch(err => { console.log(err); reFatch(); }); } } noticePerMsg(); } componentDidMount() { this.isShowIEPrompt(); //调用判断浏览器方法 // 临时调用修复消息和名字获取失败问题 // 获取消息 this.props.dispatch({ type: 'global/changeNoticeLoading', payload: false }); this.props.dispatch({ type: "global/menuChange" }); queryNotices().then(data => { if (data !== undefined) { this.props.dispatch({ type: 'global/saveNotices', payload: data.data }); this.props.dispatch({ type: 'user/changeNotifyCount', payload: data.length }); } }); // 获取用户信息 try { systemPerAccountInfoGetUserAccount({}).then(data => { this.setState({ userMobilePhone: data.data.mobilePhone }) this.props.dispatch({ type: 'user/saveCurrentUser', payload: data.data }); }); } catch (err) { console.log(err); } } componentDidCatch() { console.log('有点小错误'); } componentWillUpdate() { this.loginOut(); } componentWillReceiveProps(props) { // const pathName = window.location.pathname; // if(pathName == '/') { // // 设置为欢迎页面 // store.set('isShowContent', { isShowContent: false }); // }else { // store.set('isShowContent', { isShowContent: true}); // } if (props.currentKey !== this.state.currentKey) { const { location: { pathname } } = props || this.props; this.setState({ currentGroup: Number(props.currentKey), currentKey: props.currentKey, openKeys: pathname.split('/').slice(1) }); } } componentWillUnmount() { this.triggerResizeEvent.cancel(); } //调用判断浏览器方法 isShowIEPrompt = () => { if (Utils.isIEBrowser()) { this.setState({ isShowIEPrompt: true }); } }; log = (key, value) => { if (typeof key == 'object') { key = JSON.stringify(key); } if (typeof key == 'object') { value = JSON.stringify(value); } }; systemComVaseInfoGet = () => { // if (systemComVaseInfoGet({}) !== undefined) { if (!!this.props.companyInfo.comName) { const topMenu1 = this.state.topMenu; topMenu1[0].text = this.props.companyInfo.comName; this.props.dispatch({ type: 'global/companyInfo', payload: this.props.companyInfo, topMenu: [...topMenu1] }); } else { systemComVaseInfoGet({}).then( response => { const topMenu1 = this.state.topMenu; topMenu1[0].text = response.data.comName; this.props.dispatch({ type: 'global/companyInfo', payload: response.data, topMenu: [...topMenu1] }); }, err => { console.log(err, 'systemComVaseInfoGet-err-获取企业详情'); } ); // } } }; //获取用户登陆菜单 systemOauthGetUserMenus = () => { if (store.get('saas') !== undefined) { let { menuInfo } = this.props; const menuauth = []; const setMenus = arr => { arr.forEach(val => { if (val.menuId && val.menuId === '50010001') { store.set('coursesListURL', { coursesListURL: val.menuUrl }); // store.set('coursesListURL', { coursesListURL: val.menuUrl.replace(' http://test.bktang.cn/', 'http://localhost:8888/') }); /******* 百课堂平台ID 百课堂-门户网站-默认路由修改 ********/ if (val.platformId === '1401') { const menus = this.state.topMenu; menus.forEach(item => { if ( item.to === '/TrainingInstitutionsCoursewareManagement/CoursewareLibraryManagement' ) { item.to = '/TrainingUnitsTrainingManagement/CoursesList'; } }); this.setState({ topMenu: menus }); } } else if (val.menuId && val.menuId === '50010002') { store.set('orderManagementURL', { orderManagementURL: val.menuUrl }); } else if (val.menuId && val.menuId === '50010003') { store.set('studentManagementURL', { studentManagementURL: val.menuUrl }); } else if (val.menuId && val.menuId === '50010004') { store.set('LearningStatisticsURL', { LearningStatisticsURL: val.menuUrl }); } else if (val.menuId && val.menuId === '80010001') { store.set('coursewareLibraryManagementURL', { coursewareLibraryManagementURL: val.menuUrl }); /******* 百课堂平台ID 百课堂-后台管理-默认路由修改 ********/ if (val.platformId === '1402') { const menus = this.state.topMenu; menus.forEach(item => { if ( item.to === '/TrainingUnitsTrainingManagement/CoursesList' ) { item.to = '/TrainingInstitutionsCoursewareManagement/CoursewareLibraryManagement'; } }); this.setState({ topMenu: menus }); } } else if (val.menuId && val.menuId === '80020001') { store.set('orderManagementOtherURL', { orderManagementOtherURL: val.menuUrl }); } else if (val.menuId && val.menuId === '80020002') { store.set('studentManagementOtherURL', { studentManagementOtherURL: val.menuUrl }); } else if (val.menuId && val.menuId === '80020003') { store.set('classManagementURL', { classManagementURL: val.menuUrl }); } else if (val.menuId && val.menuId === '80020004') { store.set('LearningStatisticsOtherURL', { LearningStatisticsOtherURL: val.menuUrl }); } else if (val.menuId && val.menuId === '80030100') { //百课堂-考试管理-题库管理 store.set('QuestionBankURL', { QuestionBankURL: val.menuUrl }); } else if (val.menuId && val.menuId === '80030200') { //百课堂-考试管理-试卷管理 store.set('TestPaperURL', { TestPaperURL: val.menuUrl }); } else if (val.menuId && val.menuId === '80030300') { //百课堂-考试管理-考试安排 store.set('ExamArrangeURL', { ExamArrangeURL: val.menuUrl }); } else if (val.menuId && val.menuId === '80030400') { //百课堂-考试管理-补考人员 store.set('RemedialStaffURL', { RemedialStaffURL: val.menuUrl }); } else if (val.menuId && val.menuId === '90010100') { //百保盾-一键搜 store.set('OneKeySearchURL', { OneKeySearchURL: val.menuUrl }); } else if (val.menuId && val.menuId === '20010400') { //百保盾-问题人员 store.set('ProblemPersonnelURL', { ProblemPersonnelURL: val.menuUrl }); } else if (val.menuId && val.menuId === '30020300') { //百保盾-枪支管理 store.set('GunControlURL', { GunControlURL: val.menuUrl }); } else if (val.menuId && val.menuId === '30020400') { //百保盾-车辆管理 store.set('VehicleManageURL', { VehicleManageURL: val.menuUrl }); } else if (val.menuId && val.menuId === '40040100') { //百保盾-申报列表 store.set('DeclarationListURL', { DeclarationListURL: val.menuUrl }); }else if (val.menuId && val.menuId === '40050100') { //百保盾-年度调查表 store.set('AnnualQuestionnaireURL', { AnnualQuestionnaireURL: val.menuUrl }); } else if (val.menuId && val.menuId === "40040300") { //公安消息通知 store.set('policeNoticeURL', { policeNoticeURL: val.menuUrl }); } else if (val.menuId && val.menuId === '100010000') { //PSS-大型活动 store.set('PublicSafetySystemURL', { PublicSafetySystemURL: val.menuUrl }); } else if (val.menuId && val.menuId === '80040100') { store.set('PrintingCertificateURL', { PrintingCertificateURL: val.menuUrl }); } // 补证管理 else if (val.menuId && val.menuId === '80040200') { store.set('SupplementaryEvidenceURL', { SupplementaryEvidenceURL: val.menuUrl }); } // 打印记录 else if (val.menuId && val.menuId === '80040300') { store.set('PrintRecordURL', { PrintRecordURL: val.menuUrl }); } // 资格证补贴批次管理 else if (val.menuId && val.menuId === '80040400') { store.set('subsidyBatchUrl', { subsidyBatchUrl: val.menuUrl }); } // 资格证比对人员名单 else if (val.menuId && val.menuId === '80040500') { store.set('comparisonPersonnelUrl', { comparisonPersonnelUrl: val.menuUrl }); } else if (val.menuId && val.menuId === '50010006') { store.set('refundManageURL', val.menuUrl); } else if (val.menuId && val.menuId === '50010005') { store.set('refundRecordURL', val.menuUrl); } else if (val.menuId && val.menuId === "50020001") { //百保盾-培训-等级证管理-人员对比 store.set('researchersComparedURL', { researchersComparedURL: val.menuUrl }); } else if (val.menuId && val.menuId === "50020002") { //百保盾-培训-等级证管理-证书管理 store.set('certificateManaURL', { certificateManaURL: val.menuUrl }); } else if (val.menuId && val.menuId === "50020006") { //百保盾-培训-等级证补贴 store.set('subsidyManagementUrl', { subsidyManagementUrl: val.menuUrl }); } else if (val.menuId && val.menuId === "50020007") { //百保盾-培训-等级证人员比对 store.set('comparison', { comparison: val.menuUrl }); } else if (val.menuId && val.menuId === "50020009") { //百保盾-培训-等级证补贴可申请人员名单 store.set('canComparison', { canComparison: val.menuUrl }); } else if (val.menuId && val.menuId === "200000000") { store.set('salaryUrl', val.menuUrl) } //驻勤管理--疫情防控 else if (val.menuId && val.menuId === '40030600') { store.set('EpidemicURL', { EpidemicURL: val.menuUrl }); } //保安资格证管理--资格证课程学习记录 else if (val.menuId && val.menuId === '80040600') { store.set('QualificationStudyRecordURL', { QualificationStudyRecordURL: val.menuUrl }); } //保安等级证管理--等级证课程学习记录 else if (val.menuId && val.menuId === '50020010') { store.set('GradeStudyRecordURL', { GradeStudyRecordURL: val.menuUrl }); } //统计调查--保安员离京登记 else if (val.menuId && val.menuId === '40050200') { store.set('RegistrationFromBeijingURL', { RegistrationFromBeijingURL: val.menuUrl }); } //统计调查--临勤临保任务登记 else if (val.menuId && val.menuId === '40050300') { store.set('TaskRegistrationURL', { TaskRegistrationURL: val.menuUrl }); } //统计调查--保安协会等级评定 else if (val.menuId && val.menuId === '40050400') { store.set('SecurityAssociationURL', { SecurityAssociationURL: val.menuUrl }); } // 忽略的菜单列表 const ignoreList = ['保险方案书']; if (ignoreList.join('').indexOf(val.menuName) === -1) { menuauth.push(val.menuName); } // menuauth.push('薪资发放管理','企业发薪账户', '在线薪资代发申请', '线下薪资发放记录'); // menuauth.push('资格证比对人员名单'); }); //临时菜单,上线前注释掉,菜单后端生成,名称需一致(所有菜单名) if (process.env.NODE_ENV == 'development' || window.location.hostname == 'saasweb.test.baibaodun.cn' ) { // const temporaryMenuArr = ['等级证补贴人员管理','等级证补贴比对人员名单','等级证补贴可申请人员名单']; // menuauth.push('保安协会等级评定'); // console.log(menuauth) } this.setState({ menuauth }); } if (menuInfo.length == 0) { systemOauthGetUserMenus({}).then( response => { setMenus(response.data || []); // 储存时间用于控制时间控件 window.sessionStorage.setItem('requestDate', moment(response.date).valueOf()); }, err => { console.log(err, 'systemOauthGetUserMenus-err-获取用户登陆菜单'); } ); }else { // 从登录页进来以后已经有菜单数据了,不用再次去请求数据 setTimeout(() => { setMenus(menuInfo || []); }, 500); } } }; //获取当前登陆用户账号信息 systemPerAccountInfoGetUserAccount1 = () => { this.props.dispatch({ type: 'user/fetchCurrent' }); }; getChildContext() { const { location, navData, getRouteData } = this.props; const routeData = getRouteData('BasicLayout'); const firstMenuData = navData.reduce( (arr, current) => arr.concat(current.children), [] ); const menuData = this.getMenuData(firstMenuData, ''); const breadcrumbNameMap = {}; routeData.concat(menuData).forEach(item => { breadcrumbNameMap[item.path] = { name: item.name, component: item.component }; }); return { location, breadcrumbNameMap }; } onCollapse = collapsed => { this.props.dispatch({ type: 'global/changeLayoutCollapsed', payload: collapsed }); }; onMenuClick = ({ key }) => { if (key === 'logout') { this.logout(); } else if (key === 'edit') { this.showChangePasswordModal(); } }; logout = () => { store.clearAll(); this.props.dispatch({ type: 'login/logout' }); //im的退出 if(this.props.im && this.props.im.isSDKReady){ tim.logout(); } //华为云视频退出,token数据清空 if (this.props.client && this.props.client._loginStatus) { this.props.client.logout(); this.props.dispatch({ type: `client/setLogin`, payload: { loginStatus: false } }); const value = { accessToken: null, huaweiUserName: null, huaweiPassWord: null, huaweiSipName: null }; this.props.dispatch({ type: `client/setMeetingToken`, payload: { meetingAcc: value } }); } //如果有防控指挥的窗口,一并关闭 if(this.state.commandWindow){ this.state.commandWindow.close() } this.props.dispatch({ type: 'global/changeShowSystemNotice', payload: false, }); // let promise = tim.logout(); // promise.then(function(imResponse) { // console.log(imResponse.data); // 登出成功 // }).catch(function(imError) { // console.warn('logout error:', imError); // }); }; cancelChangePasswordModal = () => { this.setState({ changePasswordVisible: false }); this.child.clearValue(); }; reef = ref => { this.child = ref; }; showChangePasswordModal = () => { this.setState({ changePasswordVisible: true }); }; getMenuData = (data, parentPath) => { let arr = []; data.forEach(item => { if (item.children) { arr.push({ path: `${parentPath}/${item.path}`, name: item.name }); arr = arr.concat( this.getMenuData(item.children, `${parentPath}/${item.path}`) ); } }); return arr; }; getDefaultCollapsedSubMenus(props) { const currentMenuSelectedKeys = [...this.getCurrentMenuSelectedKeys(props)]; currentMenuSelectedKeys.splice(-1, 1); if (currentMenuSelectedKeys.length === 0) { return ['dashboard']; } return currentMenuSelectedKeys; } getCurrentMenuSelectedKeys(props) { const { location: { pathname } } = props || this.props; const keys = pathname.split('/').slice(1); if (keys.length === 1 && keys[0] === '') { return [this.menus[0].key]; } return keys; } getNavMenuItems(menus, parentPath = '') { if (!menus) { return []; } let menusData = menus; if (!parentPath) { menusData = menus.filter(val => { return menugroup[this.state.currentGroup].indexOf(val.name) !== -1; }); } return menusData.map(item => { if (this.state.menuauth.indexOf(item.name) === -1) { return null; } if (!item.name) { return null; } let itemPath; if (item.path.indexOf('http') === 0) { itemPath = item.path; } else { itemPath = `${parentPath}/${item.path || ''}`.replace(/\/+/g, '/'); } if (item.children && item.children.some(child => child.name)) { return ( {item.name} ) : ( item.name ) } key={item.key || item.path} > {this.getNavMenuItems(item.children, itemPath)} ); } const icon = item.icon && ; slideMenuPath.push(itemPath); return ( {/^https?:\/\//.test(itemPath) ? ( {icon} {item.name} ) : ( {icon} {item.name} )} ); }); } getPageTitle() { const { location, getRouteData, companyInfo } = this.props; const { pathname } = location; // let title = '百保盾企业管理平台'; let title = domainConfig.getName(companyInfo.regProvince,companyInfo.regCity); getRouteData('BasicLayout').forEach(item => { // 修改网页title显示 if ( item.path === pathname && item.name ) { title = item.name + '-' + title; } }); return title; } getNoticeData() { const { notices = [] } = this.props; if (notices.length === 0) { return []; } const newNotices = notices.map(notice => { const newNotice = { ...notice }; //消息接口返回值messageType判空处理 if (notice.messageType) { if (notice.messageType.substr(0, 2) > '07') { newNotice.avatar = ( ); } else { newNotice.avatar = noticeAwars[newNotice.messageType.substr(0, 2)]; } } else { newNotice.avatar = ( ); } if (newNotice.datetime) { newNotice.datetime = moment(notice.datetime).fromNow(); } // transform id to item key if (newNotice.id) { newNotice.key = newNotice.id; } return newNotice; }); return newNotices; } loginOut = () => { if (store.get('saas') === undefined) { this.props.dispatch({ type: 'login/logout' }); } }; mainmenu = key => { //登录后是否是否展示内容,默认 欢迎页面 if ( store.get('isShowContent') && !store.get('isShowContent')['isShowContent'] ) { store.set('isShowContent', { isShowContent: true }); } slideMenuPath = []; this.setState({ currentGroup: key }); setTimeout(() => { this.setState( { openKeys: this.getDefaultCollapsedSubMenus(this.props) }, () => { this.props.history.replace(slideMenuPath[0]); // this.props.history.push(slideMenuPath[0]); } ); }, 10); }; handleOpenChange = openKeys => { const lastOpenKey = openKeys[openKeys.length - 1]; const isMainMenu = this.menus.some( item => lastOpenKey && (item.key === lastOpenKey || item.path === lastOpenKey) ); this.setState({ openKeys: isMainMenu ? [lastOpenKey] : [...openKeys] }); }; toggle = () => { const { collapsed } = this.props; this.props.dispatch({ type: 'global/changeLayoutCollapsed', payload: !collapsed }); this.triggerResizeEvent(); }; @Debounce(600) triggerResizeEvent() { // eslint-disable-line const event = document.createEvent('HTMLEvents'); event.initEvent('resize', true, false); window.dispatchEvent(event); } //原来的清空改成查看所有通知 handleSearchFor = (type) => { // this.props.history.replace('/xiaoxitongzhi/Messages'); if(type=='message'){ $nModal({ title: "我的消息", footer: null, width: 800, content: ( ) }); }else if(type == 'notify'){ $nModal({ title: "平台通知", footer: null, width: 800, content: ( ) }); } this.setState({ popupVisible: false }); //登录后是否是否展示内容,默认 欢迎页面 if (!store.get('isShowContent')['isShowContent']) { store.set('isShowContent', { isShowContent: true }); } }; //设置所有未读消息为已读(new)s handleReadAll = () => { const keyId = this.props.notices.map(val => val.id); if (this.props.notices.length <= 0) { message.success('无未标记消息'); return; } updateSelectMessageRead({ messageJson: JSON.stringify(this.props.notices) }) .then(data => { this.props.dispatch({ type: 'global/fetchNotices' }); // this.props.history.replace('/xiaoxitongzhi/Messages'); this.setState({ popupVisible: false }); //登录后是否是否展示内容,默认 欢迎页面 if (!store.get('isShowContent')['isShowContent']) { store.set('isShowContent', { isShowContent: true }); } }) .catch(err => { // console.log('设置为已读失败', err); // message.warning('设置为已读失败!' + err); }); }; handleNoticeVisibleChange = visible => { if (visible) { this.props.dispatch({ type: 'global/fetchNotices' }); this.setState({ popupVisible: true }); } else { this.setState({ popupVisible: false }); } }; render() { const { currentUser, collapsed, fetchingNotices, getRouteData } = this.props; const isShowContent = store.get('isShowContent') ? store.get('isShowContent')['isShowContent'] : ''; currentUser.avatar = currentUser.photoUrl ? currentUser.photoUrl : defaultAvatar; const menu = ( 修改密码 退出登录 ); const noticeData = this.getNoticeData(); /** * 消息通知右上角弹窗 */ if (noticeData.length > 0 && !this.state.noticeIsInit) { const hasPoliceNotice = noticeData.some(item => (item.messageType + '').indexOf('050301') != -1); if (hasPoliceNotice) { const key = new Date().getTime() + ''; this.setState({ noticeIsInit: true }, () => { notification.info({ placement: 'topRight', duration: null, key, className: 'basic_notice', message: 您有新的公安机关通知,请及时查看!, description: }); }); } } /** * 消息通知右上角弹窗end */ // Don't show popup menu when it is been collapsed const menuProps = collapsed ? {} : { openKeys: this.state.openKeys }; const __renderTopMenu = (val, index) => { // 防空指挥跳转到https地址 // if (val.to === '/command/prevention-and-control' && store.get('saas')) { if (/\/command\//.test(val.to) && store.get('saas')) { // return '' const hostName = domainConfig.https; return ( // { // // //获取并登录im // this.props.dispatch({ // type: `global/imLogin`, // payload: { // username: this.state.userMobilePhone // } // }); // }}>{val.text} { //利用此方法,让只打开一个新窗口,并记录下防控指挥的打开窗口 const commandWindow = window.open(store.get('saas') ? `${hostName}${val.to}?access_token=${store.get('saas')['access_token']}` : '', "scrollbars=yes,resizable=1,modal=false,alwaysRaised=yes"); this.setState({commandWindow}) //获取并登录im this.props.dispatch({ type: `global/imLogin`, payload: { username: this.state.userMobilePhone } }); }}>{val.text} ); } // else if (val.to == '/salary/service') { //薪酬服务 // return ( // { // store.set('isShowContent', { isShowContent: true }); // const { thirdSessionId } = store.get('saas'); // const url = store.get('salaryUrl'); // try{ // const isInitRes = await comSalarySyncInitCheckIsInit({}); // // 0:代表未完成初始化 1:已完成初始化 // if(isInitRes.data == '1') { // if (thirdSessionId && url) { // this.props.history.goBack(); // window.open(url + 'loginkey=' + thirdSessionId); // } else { // this.props.history.push(val.to + '?url=' + url); // this.mainmenu(index); // } // } // }catch(ex) { // console.log(ex); // Modal.error({ // title:'请求错误', // content:'请稍后重试', // okText: '确定' // }); // } // }} // className={ // this.state.currentGroup === index ? 'selected' : '' // } // to={val.to} // replace={val.to === this.props.location.pathname} // > // {val.text} // // ); // } else if (val.to === '/data/com-statistics') {//数据统计 return ( {val.text} ); } else { return ( { if (val.to === '/publicsafety/system') { // //获取并登录im this.props.dispatch({ type: `global/imLogin`, payload: { username: this.state.userMobilePhone } }); } this.mainmenu(index); }} className={ this.state.currentGroup === index ? 'selected' : '' } to={val.to} replace={val.to === this.props.location.pathname} > {val.text} ); } } const layout = ( {this.state.isShowIEPrompt && }
{ window.open('https://ars.baibaodun.cn'); }} />

{this.state.topMenu.map((val, index) => { if (index === 0) { return ( {store.get('isHasEnterpriseMenu') !== undefined ? ( { this.mainmenu(index); }} to={val.to} replace={val.to === this.props.location.pathname} title={ this.props.companyInfo.comName || this.state.topMenu[0].text } > {this.props.companyInfo.comName || this.state.topMenu[0].text} ) : ( {this.props.companyInfo.comName || this.state.topMenu[0].text} )} ); } else { return ''; } })}

{this.state.topMenu.map((val, index) => { if (this.state.menuauth.indexOf(val.text) === -1) { return null; } if (index === 0) { return ''; } return ( __renderTopMenu(val, index) ); })}
{/* { console.log("input", value); // eslint-disable-line }} onPressEnter={value => { console.log("enter", value); // eslint-disable-line }} /> */} {domainConfig.getName(this.props.companyInfo.regProvince,this.props.companyInfo.regCity)} { const { messageType } = item; if ((messageType + '').indexOf('050301') != -1) { this.props.history.push('/PoliceDeclare/police-notice'); } else { // this.setState({ record, checkModal: true }); this.setState({ record: item, checkModal: true }); } }} searchFor={this.handleSearchFor} readAll={this.handleReadAll} onPopupVisibleChange={this.handleNoticeVisibleChange} loading={fetchingNotices} popupAlign={{ offset: [20, -16] }} popupVisible={this.state.popupVisible} > {/* */} {/* {currentUser.name ? ( */} {currentUser.name} 帮助 {/* ) : ( )} */}
{/* {(store.get("isShowContent")["isShowContent"] || this.props.companyInfo.isInit === '0') ? */} {isShowContent || this.props.companyInfo.isInit === '0' ? ( {/* 传入前端配置的路由 */} {this.getNavMenuItems(this.menus)} {getRouteData('BasicLayout').map(item => ( ))} {(() => { function RedirectComponent(props) { // 默认重定向到欢饮页面 store.set('isShowContent', { isShowContent: false }); return ( ); } // 如果有组织架构菜单 if (this.state.menuauth.indexOf('10020100')) { if (this.props.companyInfo.isInit === '0') { return ( ); } if (this.props.companyInfo.isInit === '1') { return ( ); } if (!( this.props.companyInfo.isInit === '0' || this.props.companyInfo.isInit === '1' )) { return (); } } else { return ( ); } })()} {/* {this.props.companyInfo.isInit === '0' && ( )} {this.props.companyInfo.isInit === '1' && ( )} {!( this.props.companyInfo.isInit === '0' || this.props.companyInfo.isInit === '1' ) && ( )} */} { this.props.footer && // {/* Copyright */} // 平台运营与技术支持   // {' '} // {new Date().getFullYear()} // 百川信(北京)信息服务有限公司 //
此平台由百川信(北京)信息服务有限公司开发与运营,产生的问题最终解释权归百川信所有
} /> }
) : ( { this.props.companyInfo.isInit = '1'; // this.setState({ // isShowContent:'true' // },()=>{ store.set('isShowContent', { isShowContent: true }); // }); this.props.history.push(`/PoliceDeclare/DeclarationList`); }} /> {/* {this.props.companyInfo.isInit === '0' && } {this.props.companyInfo.isInit === '1' && } {!( this.props.companyInfo.isInit === '0' || this.props.companyInfo.isInit === '1' ) && } */} )} { this.setState({ checkModal: false }); }} /> { this.cancelChangePasswordModal(); }} footer={null} >
); return ( {params =>
{layout}
}
); } } export default connect(state => ({ currentUser: state.user.currentUser, collapsed: state.global.collapsed, fetchingNotices: state.global.fetchingNotices, notices: state.global.notices, companyInfo: state.global.companyInfo, currentKey: state.global.currentKey }))(BasicLayout);