From 2d658dd619f009db02da64f4f49dd55c004b7add Mon Sep 17 00:00:00 2001
From: Chengliang <1546584672@qq.com>
Date: Mon, 8 Apr 2024 18:19:58 +0800
Subject: [PATCH] =?UTF-8?q?=E5=B1=82=E7=BA=A7=E6=A0=B9=E6=8D=AE=E9=83=A8?=
=?UTF-8?q?=E9=97=A8=E8=8A=82=E7=82=B9=E6=A0=91=E5=8A=A8=E6=80=81=E6=8C=87?=
=?UTF-8?q?=E5=AE=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/drawer/index.jsx | 14 ++++
src/components/topBar/index.jsx | 124 ++++++++++++++++++++++++++------
src/pages/company.jsx | 21 ++----
3 files changed, 123 insertions(+), 36 deletions(-)
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 {