|
|
|
@ -4,7 +4,6 @@ import {
|
|
|
|
|
DatePicker,
|
|
|
|
|
Select,
|
|
|
|
|
Button,
|
|
|
|
|
Checkbox,
|
|
|
|
|
Row,
|
|
|
|
|
Col,
|
|
|
|
|
Dropdown,
|
|
|
|
@ -21,21 +20,13 @@ export class TopBar extends React.Component {
|
|
|
|
|
constructor(props) {
|
|
|
|
|
super(props);
|
|
|
|
|
this.state = {
|
|
|
|
|
fclasslist: [],
|
|
|
|
|
companylist: [], //下拉框跟节点
|
|
|
|
|
deptartmentTreeData: [], //部门异步树
|
|
|
|
|
treeExpandedKeys: [],
|
|
|
|
|
companyData: [],
|
|
|
|
|
departmentData: [],
|
|
|
|
|
companyTreeData: [],
|
|
|
|
|
deptartmentTreeData: [],
|
|
|
|
|
levelOptions: [], //层级数据,hrm中层级字段
|
|
|
|
|
requestData: {
|
|
|
|
|
date: moment(new Date()).format('YYYY-MM-DD'),
|
|
|
|
|
fclass: '0',
|
|
|
|
|
root: '0',
|
|
|
|
|
level: '3',
|
|
|
|
|
fisvitual: '0',
|
|
|
|
|
company: undefined,
|
|
|
|
|
department: undefined,
|
|
|
|
|
date: moment(new Date()).format('YYYY-MM-DD'), //日期
|
|
|
|
|
department: [],
|
|
|
|
|
level: '2', //显示层级
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
@ -44,69 +35,54 @@ export class TopBar extends React.Component {
|
|
|
|
|
let requestData = { ...this.state.requestData, ...payload };
|
|
|
|
|
this.setState({ requestData });
|
|
|
|
|
}
|
|
|
|
|
//日期可选择未来
|
|
|
|
|
// disabledDate (current) {
|
|
|
|
|
// // return current && current >moment().subtract(1, "days");
|
|
|
|
|
// return current && current > moment().endOf("day");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
handleExportMenuClick(e) {
|
|
|
|
|
this.props.onExport(e.key == '1' ? 'png' : 'pdf');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
handleExportButtonClick() {
|
|
|
|
|
this.props.onExport('png');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 分部
|
|
|
|
|
* @param {*} parentId
|
|
|
|
|
* 部门树数据
|
|
|
|
|
* @param {} parentId
|
|
|
|
|
* @returns
|
|
|
|
|
*/
|
|
|
|
|
getCompanyTreeNode = (parentId) => {
|
|
|
|
|
let api =
|
|
|
|
|
'/api/bs/hrmorganization/jclorgchart/getCompanyTree?company=' + parentId;
|
|
|
|
|
fetch(api)
|
|
|
|
|
.then((res) => res.json())
|
|
|
|
|
.then((data) => {
|
|
|
|
|
if (data.code == 200) {
|
|
|
|
|
let arr = [...this.state.companyTreeData, ...data.data];
|
|
|
|
|
this.setState({
|
|
|
|
|
companyTreeData: arr,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
getDepartmentTreeNode = (parentId) => {
|
|
|
|
|
// let api =
|
|
|
|
|
// '/api/bs/hrmorganization/jclorgchart/getDepartmentTree?department=' +
|
|
|
|
|
// parentId;
|
|
|
|
|
// fetch(api)
|
|
|
|
|
// .then((res) => res.json())
|
|
|
|
|
// .then((data) => {
|
|
|
|
|
// if (data.code == 200) {
|
|
|
|
|
// let arr = [...this.state.deptartmentTreeData, ...data.data];
|
|
|
|
|
// this.setState({
|
|
|
|
|
// deptartmentTreeData: arr,
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
let treeData = [];
|
|
|
|
|
if (parentId === null) {
|
|
|
|
|
treeData = [
|
|
|
|
|
{ id: 1, pId: 0, value: '1', title: 'Expand to load' },
|
|
|
|
|
{ id: 2, pId: 0, value: '2', title: 'Expand to load' },
|
|
|
|
|
{ id: 3, pId: 0, value: '3', title: 'Tree Node', isLeaf: true },
|
|
|
|
|
];
|
|
|
|
|
} else {
|
|
|
|
|
treeData = [
|
|
|
|
|
{ id: 6, pId: 1, value: '3', title: 'Tree Node', isLeaf: true },
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let arr = [...this.state.deptartmentTreeData, ...treeData];
|
|
|
|
|
this.setState({
|
|
|
|
|
deptartmentTreeData: arr,
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 部门
|
|
|
|
|
* 部门树异步加载
|
|
|
|
|
* @param {} parentId
|
|
|
|
|
* @returns
|
|
|
|
|
*/
|
|
|
|
|
getDepartmentTreeNode = (parentId) => {
|
|
|
|
|
let api =
|
|
|
|
|
'/api/bs/hrmorganization/jclorgchart/getDepartmentTree?department=' +
|
|
|
|
|
parentId;
|
|
|
|
|
fetch(api)
|
|
|
|
|
.then((res) => res.json())
|
|
|
|
|
.then((data) => {
|
|
|
|
|
if (data.code == 200) {
|
|
|
|
|
let arr = [...this.state.deptartmentTreeData, ...data.data];
|
|
|
|
|
this.setState({
|
|
|
|
|
deptartmentTreeData: arr,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
onCompanyLoadData = (treeNode) =>
|
|
|
|
|
new Promise((resolve) => {
|
|
|
|
|
const { id } = treeNode.props;
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
this.getCompanyTreeNode(id);
|
|
|
|
|
resolve();
|
|
|
|
|
}, 300);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
onDepartmentLoadData = (treeNode) =>
|
|
|
|
|
new Promise((resolve) => {
|
|
|
|
|
const { id } = treeNode.props;
|
|
|
|
@ -116,55 +92,12 @@ export class TopBar extends React.Component {
|
|
|
|
|
}, 300);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
onCompanyChange = (value, label, extra) => {
|
|
|
|
|
let company = value.length > 0 ? this.paramsUtil(value) : undefined;
|
|
|
|
|
let requestData = {
|
|
|
|
|
...this.state.requestData,
|
|
|
|
|
company: company,
|
|
|
|
|
department: undefined,
|
|
|
|
|
};
|
|
|
|
|
this.setState({
|
|
|
|
|
companyData: value,
|
|
|
|
|
requestData,
|
|
|
|
|
departmentData: [],
|
|
|
|
|
deptartmentTreeData: [],
|
|
|
|
|
treeExpandedKeys: [],
|
|
|
|
|
});
|
|
|
|
|
this.getDepartmentTreeList(company);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
onDepartmentChange = (value) => {
|
|
|
|
|
let department = value.length > 0 ? this.paramsUtil(value) : undefined;
|
|
|
|
|
let requestData = { ...this.state.requestData, department: department };
|
|
|
|
|
this.setState({ departmentData: value, requestData });
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
getCompanyTreeList = () => {
|
|
|
|
|
let api = '/api/bs/hrmorganization/jclorgchart/getCompanyTree';
|
|
|
|
|
fetch(api)
|
|
|
|
|
.then((res) => res.json())
|
|
|
|
|
.then((data) => {
|
|
|
|
|
if (data.code == 200) {
|
|
|
|
|
this.setState({
|
|
|
|
|
companyTreeData: data.data,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
getDepartmentTreeList = (company) => {
|
|
|
|
|
let api = `/api/bs/hrmorganization/jclorgchart/getDepartmentTree?company=${company}`;
|
|
|
|
|
fetch(api)
|
|
|
|
|
.then((res) => res.json())
|
|
|
|
|
.then((data) => {
|
|
|
|
|
if (data.code == 200) {
|
|
|
|
|
this.setState({
|
|
|
|
|
deptartmentTreeData: data.data,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
paramsUtil = (param) => {
|
|
|
|
|
let arr = param.map(function (obj, index) {
|
|
|
|
|
return obj.value;
|
|
|
|
@ -179,17 +112,32 @@ export class TopBar extends React.Component {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
componentDidMount() {
|
|
|
|
|
fetch(this.props.url)
|
|
|
|
|
.then((res) => res.json())
|
|
|
|
|
.then((data) => {
|
|
|
|
|
this.setState({
|
|
|
|
|
fclasslist: data.fclasslist,
|
|
|
|
|
companylist: data.companylist,
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
this.getCompanyTreeList();
|
|
|
|
|
// fetch(this.props.url)
|
|
|
|
|
// .then((res) => res.json())
|
|
|
|
|
// .then((data) => {
|
|
|
|
|
// this.setState({
|
|
|
|
|
// levelOptions: data.levelOptions
|
|
|
|
|
// });
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
const options = [
|
|
|
|
|
{ value: '1', label: '一级' },
|
|
|
|
|
{ value: '2', label: '二级' },
|
|
|
|
|
{ value: '3', label: '三级' },
|
|
|
|
|
];
|
|
|
|
|
const treeData = [
|
|
|
|
|
{ id: 1, pId: 0, value: '1', title: 'Expand to load' },
|
|
|
|
|
{ id: 2, pId: 0, value: '2', title: 'Expand to load' },
|
|
|
|
|
{ id: 3, pId: 0, value: '3', title: 'Tree Node', isLeaf: true },
|
|
|
|
|
];
|
|
|
|
|
this.setState({
|
|
|
|
|
levelOptions: options,
|
|
|
|
|
});
|
|
|
|
|
this.getDepartmentTreeNode(null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 导出多选 */
|
|
|
|
|
menu = (
|
|
|
|
|
<Menu
|
|
|
|
|
onClick={this.handleExportMenuClick.bind(this)}
|
|
|
|
@ -207,16 +155,14 @@ export class TopBar extends React.Component {
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
render() {
|
|
|
|
|
const { companyTreeData, deptartmentTreeData, treeExpandedKeys } =
|
|
|
|
|
this.state;
|
|
|
|
|
|
|
|
|
|
const { deptartmentTreeData, treeExpandedKeys } = this.state;
|
|
|
|
|
return (
|
|
|
|
|
<div className={style.topbarWrapper}>
|
|
|
|
|
<Row>
|
|
|
|
|
<Col span={6}>
|
|
|
|
|
数据日期:
|
|
|
|
|
日期追溯:
|
|
|
|
|
<DatePicker
|
|
|
|
|
placeholder="请选择日期"
|
|
|
|
|
placeholder="日期选择"
|
|
|
|
|
style={{ width: 130 }}
|
|
|
|
|
locale={locale}
|
|
|
|
|
allowClear={false}
|
|
|
|
@ -234,40 +180,6 @@ export class TopBar extends React.Component {
|
|
|
|
|
}
|
|
|
|
|
/>
|
|
|
|
|
</Col>
|
|
|
|
|
|
|
|
|
|
<Col span={6}>
|
|
|
|
|
维度:
|
|
|
|
|
<Select
|
|
|
|
|
defaultValue="0"
|
|
|
|
|
style={{ width: 120 }}
|
|
|
|
|
value={this.state.requestData.fclass}
|
|
|
|
|
onChange={(value) => this.handleFormChange({ fclass: value })}
|
|
|
|
|
>
|
|
|
|
|
{this.state.fclasslist.map((item) => (
|
|
|
|
|
<Option value={item.id}>{item.companyname}</Option>
|
|
|
|
|
))}
|
|
|
|
|
</Select>
|
|
|
|
|
</Col>
|
|
|
|
|
|
|
|
|
|
<Col span={6}>
|
|
|
|
|
分部:
|
|
|
|
|
<TreeSelect
|
|
|
|
|
showSearch
|
|
|
|
|
allowClear
|
|
|
|
|
treeDataSimpleMode
|
|
|
|
|
treeCheckable
|
|
|
|
|
treeCheckStrictly
|
|
|
|
|
showCheckedStrategy={TreeSelect.SHOW_ALL}
|
|
|
|
|
style={{ width: '80%' }}
|
|
|
|
|
value={this.state.companyData}
|
|
|
|
|
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
|
|
|
|
|
placeholder="请选择分部节点"
|
|
|
|
|
onChange={this.onCompanyChange}
|
|
|
|
|
loadData={this.onCompanyLoadData}
|
|
|
|
|
treeData={companyTreeData}
|
|
|
|
|
/>
|
|
|
|
|
</Col>
|
|
|
|
|
|
|
|
|
|
<Col span={6}>
|
|
|
|
|
部门:
|
|
|
|
|
<TreeSelect
|
|
|
|
@ -279,42 +191,23 @@ export class TopBar extends React.Component {
|
|
|
|
|
treeExpandedKeys={treeExpandedKeys}
|
|
|
|
|
treeCheckStrictly
|
|
|
|
|
style={{ width: '80%' }}
|
|
|
|
|
value={this.state.departmentData}
|
|
|
|
|
value={this.state.requestData.department}
|
|
|
|
|
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
|
|
|
|
|
placeholder="请选择部门节点"
|
|
|
|
|
placeholder="部门选择"
|
|
|
|
|
onChange={this.onDepartmentChange}
|
|
|
|
|
loadData={this.onDepartmentLoadData}
|
|
|
|
|
treeData={deptartmentTreeData}
|
|
|
|
|
onTreeExpand={this.onTreeExpand}
|
|
|
|
|
/>
|
|
|
|
|
</Col>
|
|
|
|
|
</Row>
|
|
|
|
|
<Row style={{ marginTop: '15px' }}>
|
|
|
|
|
<Col span={6}>
|
|
|
|
|
显示层级:
|
|
|
|
|
<Select
|
|
|
|
|
defaultValue="3"
|
|
|
|
|
style={{ width: 120 }}
|
|
|
|
|
style={{ width: 130 }}
|
|
|
|
|
value={this.state.requestData.level}
|
|
|
|
|
onChange={(value) => this.handleFormChange({ level: value })}
|
|
|
|
|
>
|
|
|
|
|
<Option value="1">一级</Option>
|
|
|
|
|
<Option value="2">二级</Option>
|
|
|
|
|
<Option value="3">三级</Option>
|
|
|
|
|
</Select>
|
|
|
|
|
</Col>
|
|
|
|
|
|
|
|
|
|
<Col span={6}>
|
|
|
|
|
<Checkbox
|
|
|
|
|
style={{ marginTop: '5px' }}
|
|
|
|
|
onChange={(e) =>
|
|
|
|
|
this.handleFormChange({
|
|
|
|
|
fisvitual: e.target.checked ? '1' : '0',
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
>
|
|
|
|
|
显示虚拟组织
|
|
|
|
|
</Checkbox>
|
|
|
|
|
options={this.state.levelOptions}
|
|
|
|
|
/>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={6}>
|
|
|
|
|
<Button
|
|
|
|
|