"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 }
});
}} />
)
})
}
}
>
} onClick={() => { setPrjDropdownVis(!prjDropdownVis) }}>
>
),
}}
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);