"use strict"; import React, { useEffect, useState } from 'react' import { connect, createStore } from "react-redux"; import Immutable from 'immutable'; import { pepProject } from '../../actions/global'; import { SplitButtonGroup, Dropdown, Button, Nav, Avatar, Input, Tooltip, Tabs, TabPane, Space, Popconfirm, Modal } from '@douyinfe/semi-ui'; import { IconTreeTriangleDown, IconSearch, IconEdit, IconDelete } from '@douyinfe/semi-icons'; import CustomProjGroupModal from './components/customProjGroupModal' import PerfectScrollbar from "perfect-scrollbar"; import "./index.less"; import layout from '../../containers/layout'; let newScrollbar; const Header = (props) => { const { dispatch, history, user, actions, socket, headerItems, tochange, projectGroup } = props; const { install, projectGroup: projectGroupAC, layout,problem } = actions const [pomsList, setPomsList] = useState([]) const [pomsName, setPomsName] = useState('全局') const [pepProjectId, setPepProjectId] = useState() const [keyword, setKeyword] = useState('') const [Scrollbar, setScrollbar] = useState(false) const [prjDropdownVis, setPrjDropdownVis] = useState(false) const [prjDropDownTabKey, setPrjDropDownTabKey] = useState('项目') const [customProjGroupModalVis, setCustomProjGroupModalVis] = useState(false) const [customProjGroupDelPopVis, setCustomProjGroupDelPopVis] = useState(false) const [customProjGroupEditData, setCustomProjGroupEditData] = useState(null) const [count, setCount] = useState(0)//待办工单数量 // console.log('actions1',actions) let userRole = user?.pomsUserInfo?.role let modalRole = [] if (userRole) { let modal = [] userRole?.map(v => { if (v == 'data_analyst') ['analysis', 'data', 'workOrder', 'means'].map(u => modal.push(u)) if (v == 'after_sale') ['problem', 'facility', 'workOrder', 'means'].map(u => modal.push(u)) if (v == 'resource_manage') ['facility', 'workOrder', 'means'].map(u => modal.push(u)) if (v == 'customer_service') ['service', 'workOrder', 'means'].map(u => modal.push(u)) if (v == 'firmware_upgrade') modal.push('device') }) modal.push('control') modal = [...new Set(modal)] // console.log('headerItems',headerItems) modalRole = headerItems?.filter(v => modal.includes(v.itemKey)) if (userRole?.includes('SuperAdmin') || userRole?.includes('admin')) modalRole = headerItems } const getProjGroup = () => { dispatch(projectGroupAC.getProjectGroup()) } useEffect(() => { if (JSON.parse(sessionStorage.getItem('pomsUser'))?.token) { dispatch(install.getProjectPoms({ global: 1 })).then((res) => { //获取已绑定项目 if (res.success) { let data = res.payload.data?.rows?.filter(v => v.pepProjectIsDelete !== 1)?.map(v => ({ pepProjectId: v.id, pepProjectName: v.pepProjectName || v.name })) setPomsList(data) } }) getProjGroup() dispatch(layout.getWorkOrders()).then((res) => { if (res.success) { setCount(res.payload.data?.count) } }) dispatch(problem.getAlarmDataGroup()) } }, []) useEffect(() => { const domProject = document.getElementById("overall"); if (domProject) { newScrollbar = new PerfectScrollbar("#overall", { suppressScrollX: true, }); if (domProject && newScrollbar) { newScrollbar.update(); } } }, [Scrollbar]) useEffect(() => { dispatch(pepProject(pepProjectId)) }, [pepProjectId]) const semiPortalZindex = () => { const semiPortal = document.getElementsByClassName('semi-portal') for (let sp of semiPortal) { if (sp.style.zIndex == 1060) { sp.style.zIndex = 990 break } } } return ( <>
{ setPomsName('全局') setPepProjectId('') setPrjDropdownVis(false) }}>全局} itemKey="全局"> { // setPepProjectId('') }}>自定义分组} itemKey="自定义分组">
} onChange={(v) => setKeyword(v)} showClear onClick={(e) => e.stopPropagation()}>
{ projectGroup.filter(u => u.name?.includes(keyword))?.map(v => { return ( { e.stopPropagation() setPomsName(v.name) setPepProjectId(v.pomsProjectIds.join(',')) setPrjDropdownVis(false) }} > { v.name?.length > 10 ? {v.name}
}> {v.name?.substr(0, 10)}... : {v.name} } { e.stopPropagation() semiPortalZindex() setCustomProjGroupEditData(v) setCustomProjGroupModalVis(true) }} /> { e.stopPropagation() semiPortalZindex() setCustomProjGroupDelPopVis(v.id) Modal.warning({ title: '确定删除该自定义分组?', content: '此修改将不可逆', onCancel: () => { setCustomProjGroupDelPopVis(null) }, onOk: () => { dispatch(projectGroupAC.delProjectGroup(v.id)).then((res) => { if (res.success) { setCustomProjGroupDelPopVis(null) getProjGroup() } }) }, style: { zIndex: 1090 } }); }} /> ) }) }
} > ), }} footer={ <> {modalRole.length > 0 ? modalRole.map((item, index) => { // console.log('item1',modalRole.find(k=>k.text==='工单')) if (item.hasOwnProperty('items')) { return ( {item.hasOwnProperty('items') && item.items.map((ite, idx) => ( { tochange(ite); }} /> ))} ) } else { return (
{ tochange(item) }} />
) } }) : ""} {user?.name?.substr(0, 1)}
} >
{user?.name?.substr(0, 1)}
{user.name}
v.name + '、')} style={{ width: 60, overflow: 'hidden', whiteSpace: 'nowrap', textOverflow: 'ellipsis', color: '#969799', fontSize: 12 }}>{user?.department?.map(v => v.name + '、')}
{ history.push(`/userCenter`); }}>
用户中心
安全认证
{ dispatch(actions.auth.logout(user)); if (socket) { socket.disconnect(); } history.push(`/signin`); }}> 退出 {/* */}
{/* collapseButton collapseText */}
} /> { { setCustomProjGroupModalVis(false) setCustomProjGroupEditData(null) if (refresh) { getProjGroup() } }} /> } ); }; function mapStateToProps (state) { const { global, auth, webSocket, projectGroup } = state; return { actions: global.actions, user: auth.user, socket: webSocket.socket, projectGroup: projectGroup.data || [] }; } export default connect(mapStateToProps)(Header);