diff --git a/src/components/drawer/index.jsx b/src/components/drawer/index.jsx index 9ef1c57..0cac1cc 100644 --- a/src/components/drawer/index.jsx +++ b/src/components/drawer/index.jsx @@ -36,6 +36,7 @@ export default class DrawerComponents extends React.Component { showJob: true, isModalOpen: false, jobResponsibility: '', + personId: '', }; } @@ -47,6 +48,7 @@ export default class DrawerComponents extends React.Component { this.setState({ jobResponsibility: node.jobResponsibility, isModalOpen: true, + personId: node.id, }); } }; @@ -356,6 +358,7 @@ export default class DrawerComponents extends React.Component { showJob, jobResponsibility, isModalOpen, + personId, } = this.state; let arr = []; if (detailType == 'chart') { @@ -453,6 +456,17 @@ export default class DrawerComponents extends React.Component { > 关闭 , + , ]} >

{jobResponsibility}

diff --git a/src/components/topBar/index.jsx b/src/components/topBar/index.jsx index bc46d83..9697367 100644 --- a/src/components/topBar/index.jsx +++ b/src/components/topBar/index.jsx @@ -21,9 +21,16 @@ const { TextArea } = Input; import moment from 'moment'; import 'moment/locale/zh-cn'; import locale from 'antd/lib/date-picker/locale/zh_CN'; -import { HomeOutlined } from '@ant-design/icons'; +import { HomeOutlined, FolderOpenOutlined } from '@ant-design/icons'; moment.locale('zh-cn'); +const defaultLevelOpt = [ + { value: '1', label: '全部' }, + { value: '2', label: '一级' }, + { value: '3', label: '二级' }, + { value: '4', label: '三级' }, +]; + export class TopBar extends React.Component { constructor(props) { super(props); @@ -32,9 +39,11 @@ export class TopBar extends React.Component { rootTreeData: [], //根节点异步树 treeLoadedKeys: [], treeExpandedKeys: [], + deptTreeData: [], requestData: { fclass: '0', root: undefined, + department: undefined, level: '2', fisvitual: '0', hidedept: '0', @@ -42,6 +51,7 @@ export class TopBar extends React.Component { open: false, confirmLoading: false, description: '', + levelOpt: defaultLevelOpt, }; } @@ -142,8 +152,58 @@ export class TopBar extends React.Component { }); onRootChange = (value) => { - let requestData = { ...this.state.requestData, root: value }; - this.setState({ requestData }); + const { fclass } = this.state.requestData; + if (fclass != '0') { + //顺胜项目二开 增加部门节点树 + this.getDeptTreeData( + `/api/bs/hrmorganization/orgchart/getDepartmentTree?fclass=${fclass}&subcompany=${value}`, + ); + } + this.handleFormChange({ department: undefined, root: value }); + }; + + /** + * 部门节点树 + */ + getDeptTreeData = (url) => { + fetch(url) + .then((res) => res.json()) + .then((data) => { + if (data.api_status) { + let arr = [...data.departmentTree]; + arr.map((item, index) => { + item.icon = ; + }); + this.setState({ + deptTreeData: arr, + }); + } + }); + }; + + onDeptChange = (value, label, extra) => { + var opt = this.buildLevelOpt(0); + var level = '1'; + if (value != undefined) { + level = extra.triggerNode.props.level; + opt = this.buildLevelOpt(level); + } + this.handleFormChange({ + department: value, + level: level === '1' ? level : `${level + 1}`, + }); + this.setState({ levelOpt: opt }); + }; + + /** + * 虚拟维度部门层级构建 + */ + buildLevelOpt = (level) => { + let opt = [{ value: '1', label: '全部' }]; + for (let index = 1; index <= level; index++) { + opt.push({ value: `${index + 1}`, label: `${index}级` }); + } + return opt; }; onTreeExpand = (expandedKeys) => { @@ -188,7 +248,16 @@ export class TopBar extends React.Component { render() { const { disabled, type } = this.props; - const { rootTreeData, open, confirmLoading, treeExpandedKeys } = this.state; + const { + rootTreeData, + open, + confirmLoading, + treeExpandedKeys, + requestData, + deptTreeData, + levelOpt, + } = this.state; + const { fclass, department } = requestData; return (
@@ -198,18 +267,22 @@ export class TopBar extends React.Component { this.handleFormChange({ level: value })} > - - - - + {levelOpt.map((item) => ( + + ))} @@ -300,7 +373,25 @@ export class TopBar extends React.Component { /> - + {fclass != '0' ? ( + + 部门节点: + + + ) : ( + '' + )} + - diff --git a/src/pages/company.jsx b/src/pages/company.jsx index 4bd7528..3a928a9 100644 --- a/src/pages/company.jsx +++ b/src/pages/company.jsx @@ -27,7 +27,6 @@ export default function companyPage() { const [sliderProgress, setSliderProgress] = useState(50); let addNodeChildFunc = null; - let topBarSearchRequest = null; const [hasRight, setHasRight] = useState(''); const [timelineId, setTimelineId] = useState(0); const infoRef = useRef(); @@ -72,17 +71,10 @@ export default function companyPage() { } let idsStr = idsList.join(','); - let api = ''; - if (topBarSearchRequest) { - let request = { ...topBarSearchRequest, ids: idsStr }; - api = - '/api/bs/hrmorganization/orgchart/asyncCompanyData' + - qs.stringify(request, { addQueryPrefix: true }); - } else { - api = - '/api/bs/hrmorganization/orgchart/asyncCompanyData?fclass=0&fisvitual=0&id=0&root=0&ids=' + - idsStr; - } + let request = { ...topbar.state.requestData, ids: idsStr }; + let api = + '/api/bs/hrmorganization/orgchart/asyncCompanyData' + + qs.stringify(request, { addQueryPrefix: true }); fetch(api) .then((res) => res.json()) .then((data) => { @@ -159,8 +151,8 @@ export default function companyPage() { let fclass = topbar.state.requestData.fclass; let statisticsStyle = fclass == 0 ? 'block' : 'none'; if (d.data.ftype == 0) { - return `
-
+ return `
+