Compare commits
3 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
1ed4a03a52 | |
|
|
41904be591 | |
|
|
4a630310f5 |
|
|
@ -7,7 +7,7 @@
|
||||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
*/
|
*/
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Timeline, Drawer, Popconfirm, message } from 'antd';
|
import { Timeline, Drawer, Popconfirm, message, Input } from 'antd';
|
||||||
import styles from './index.less';
|
import styles from './index.less';
|
||||||
import leftTreeShow from './img/leftTree-show.png';
|
import leftTreeShow from './img/leftTree-show.png';
|
||||||
import leftHide from './img/leftTree-hide.png';
|
import leftHide from './img/leftTree-hide.png';
|
||||||
|
|
@ -20,6 +20,8 @@ export default class TimeLine extends React.Component {
|
||||||
this.state = {
|
this.state = {
|
||||||
timelineList: [],
|
timelineList: [],
|
||||||
open: true,
|
open: true,
|
||||||
|
timeName: '',
|
||||||
|
fclass: 0,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -53,10 +55,16 @@ export default class TimeLine extends React.Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
this.searchTimeLines(this.props.url);
|
this.searchTimeLines();
|
||||||
}
|
}
|
||||||
|
|
||||||
searchTimeLines(url) {
|
searchTimeLines(fclass = 0) {
|
||||||
|
const { timeName } = this.state;
|
||||||
|
this.setState({ fclass: fclass });
|
||||||
|
if (fclass != 0) {
|
||||||
|
this.setState({ timeName: '' });
|
||||||
|
}
|
||||||
|
let url = `/api/bs/hrmorganization/orgchart/timeLines?fclass=${fclass}&timeName=${timeName}`;
|
||||||
fetch(url)
|
fetch(url)
|
||||||
.then((res) => res.json())
|
.then((res) => res.json())
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
|
|
@ -72,6 +80,13 @@ export default class TimeLine extends React.Component {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
handleEnterPress = (e) => {
|
||||||
|
if (e.key === 'Enter') {
|
||||||
|
// 当按下回车键时触发搜索操作
|
||||||
|
this.searchTimeLines(this.state.fclass);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { labelData } = this.props;
|
const { labelData } = this.props;
|
||||||
|
|
||||||
|
|
@ -103,6 +118,12 @@ export default class TimeLine extends React.Component {
|
||||||
onClick={this.setOpen}
|
onClick={this.setOpen}
|
||||||
></div>
|
></div>
|
||||||
<div className={styles.lineWrapper} style={showStyle}>
|
<div className={styles.lineWrapper} style={showStyle}>
|
||||||
|
<Input
|
||||||
|
placeholder="关键字搜索"
|
||||||
|
value={this.state.timeName}
|
||||||
|
onChange={(e) => this.setState({ timeName: e.target.value })}
|
||||||
|
onKeyDown={this.handleEnterPress} // 监听回车键事件
|
||||||
|
/>
|
||||||
<Timeline>
|
<Timeline>
|
||||||
{this.state.timelineList.map((item) => {
|
{this.state.timelineList.map((item) => {
|
||||||
return (
|
return (
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,11 @@
|
||||||
padding-top: 20px;
|
padding-top: 20px;
|
||||||
padding-bottom: 20px;
|
padding-bottom: 20px;
|
||||||
padding-left: 20px;
|
padding-left: 20px;
|
||||||
|
padding-right: 5px;
|
||||||
|
|
||||||
|
input {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
.timeline {
|
.timeline {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,15 @@ export default class ToolBar extends React.Component {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// componentDidMount() {
|
||||||
|
// // 浏览器强制要求全屏 API 必须由用户手势触发,所以你的 onFullscreen 必须绑定到按钮的 onClick 事件上,而不能在 componentDidMount 或 useEffect 里自动调用。
|
||||||
|
// setTimeout(() => {
|
||||||
|
// debugger;
|
||||||
|
// const fullscreenBtn = document.querySelector(`.${styles.toolBarItem}[src*="fullscreen"]`);
|
||||||
|
// if (fullscreenBtn) fullscreenBtn.click();
|
||||||
|
// }, 1000);
|
||||||
|
// }
|
||||||
|
|
||||||
handleMouseDown(e) {
|
handleMouseDown(e) {
|
||||||
this.clientY = e.clientY;
|
this.clientY = e.clientY;
|
||||||
this.originalY = e.clientY;
|
this.originalY = e.clientY;
|
||||||
|
|
|
||||||
|
|
@ -225,11 +225,11 @@ export class TopBar extends React.Component {
|
||||||
return (
|
return (
|
||||||
<div className={style.topbarWrapper}>
|
<div className={style.topbarWrapper}>
|
||||||
<Row>
|
<Row>
|
||||||
<Col span={6}>
|
<Col span={8}>
|
||||||
{getLabel(547293, labelData)}:
|
{getLabel(547293, labelData)}:
|
||||||
<Select
|
<Select
|
||||||
defaultValue="0"
|
defaultValue="0"
|
||||||
style={{ width: 140 }}
|
style={{ width: 240 }}
|
||||||
value={this.state.requestData.fclass}
|
value={this.state.requestData.fclass}
|
||||||
onChange={(value) => {
|
onChange={(value) => {
|
||||||
const requestData = {
|
const requestData = {
|
||||||
|
|
@ -274,9 +274,26 @@ export class TopBar extends React.Component {
|
||||||
treeIcon
|
treeIcon
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={5}>
|
|
||||||
|
<Col span={8}>
|
||||||
|
{getLabel(547299, labelData)}:
|
||||||
|
<Select
|
||||||
|
defaultValue="3"
|
||||||
|
style={{ width: 140 }}
|
||||||
|
value={this.state.requestData.level}
|
||||||
|
onChange={(value) => this.handleFormChange({ level: value })}
|
||||||
|
>
|
||||||
|
<Option value="1">{getLabel(547301, labelData)}</Option>
|
||||||
|
<Option value="2">{getLabel(547463, labelData)}</Option>
|
||||||
|
<Option value="3">{getLabel(547464, labelData)}</Option>
|
||||||
|
<Option value="4">{getLabel(547465, labelData)}</Option>
|
||||||
|
</Select>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
<Row style={{ marginTop: '15px' }}>
|
||||||
|
<Col span={8}>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
style={{ marginTop: '5px', marginLeft: 100 }}
|
style={{ marginTop: '5px' }}
|
||||||
checked={this.state.requestData.hidedept == '1'}
|
checked={this.state.requestData.hidedept == '1'}
|
||||||
onChange={(e) =>
|
onChange={(e) =>
|
||||||
this.handleFormChange({
|
this.handleFormChange({
|
||||||
|
|
@ -296,23 +313,8 @@ export class TopBar extends React.Component {
|
||||||
/>
|
/>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={5}>
|
|
||||||
{getLabel(547299, labelData)}:
|
<Col span={8}>
|
||||||
<Select
|
|
||||||
defaultValue="3"
|
|
||||||
style={{ width: 140 }}
|
|
||||||
value={this.state.requestData.level}
|
|
||||||
onChange={(value) => this.handleFormChange({ level: value })}
|
|
||||||
>
|
|
||||||
<Option value="1">{getLabel(547301, labelData)}</Option>
|
|
||||||
<Option value="2">{getLabel(547463, labelData)}</Option>
|
|
||||||
<Option value="3">{getLabel(547464, labelData)}</Option>
|
|
||||||
<Option value="4">{getLabel(547465, labelData)}</Option>
|
|
||||||
</Select>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
<Row style={{ marginTop: '15px' }}>
|
|
||||||
<Col span={6}>
|
|
||||||
<Checkbox
|
<Checkbox
|
||||||
style={{ marginTop: '5px' }}
|
style={{ marginTop: '5px' }}
|
||||||
checked={this.state.requestData.fisvitual == '1'}
|
checked={this.state.requestData.fisvitual == '1'}
|
||||||
|
|
@ -335,39 +337,39 @@ export class TopBar extends React.Component {
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</Col>
|
</Col>
|
||||||
|
|
||||||
<Col span={10}>
|
<Col span={8}>
|
||||||
{this.state.requestData.fclass == '0' && (
|
{/* {this.state.requestData.fclass == '0' && (
|
||||||
<span>
|
<span>
|
||||||
<Button
|
<Button
|
||||||
type="primary"
|
type="primary"
|
||||||
style={{ marginRight: '10px' }}
|
style={{ marginRight: '10px' }}
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
this.setState({ open: true });
|
this.setState({ open: true });
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{getLabel(547305, labelData)}
|
{getLabel(547305, labelData)}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
type="primary"
|
type="primary"
|
||||||
style={{ marginRight: '10px' }}
|
style={{ marginRight: '10px' }}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
window.open('#/dragtree', 'blank');
|
window.open('#/dragtree', 'blank');
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{getLabel(547310, labelData)}
|
{getLabel(547310, labelData)}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
type="primary"
|
type="primary"
|
||||||
style={{ marginRight: '10px' }}
|
style={{ marginRight: '10px' }}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
window.open('#/statistics', 'blank');
|
window.open('#/statistics', 'blank');
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{getLabel(547313, labelData)}
|
{getLabel(547313, labelData)}
|
||||||
</Button>
|
</Button>
|
||||||
</span>
|
</span>
|
||||||
)}
|
)} */}
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
type="primary"
|
type="primary"
|
||||||
|
|
|
||||||
|
|
@ -109,11 +109,11 @@ export default function companyPage() {
|
||||||
d3.json('/api/bs/hrmorganization/orgchart/i18n').then((res) => {
|
d3.json('/api/bs/hrmorganization/orgchart/i18n').then((res) => {
|
||||||
setLabelData(res.data);
|
setLabelData(res.data);
|
||||||
setLabelCompleted(true);
|
setLabelCompleted(true);
|
||||||
notification.open({
|
// notification.open({
|
||||||
message: `${getLabel(547283, res.data)}`,
|
// message: `${getLabel(547283, res.data)}`,
|
||||||
description: `${getLabel(547292, res.data)}`,
|
// description: `${getLabel(547292, res.data)}`,
|
||||||
icon: <SmileOutlined style={{ color: '#108ee9' }} />,
|
// icon: <SmileOutlined style={{ color: '#108ee9' }} />,
|
||||||
});
|
// });
|
||||||
});
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
|
@ -166,7 +166,7 @@ export default function companyPage() {
|
||||||
let statisticsStyle = fclass == 0 ? 'block' : 'none';
|
let statisticsStyle = fclass == 0 ? 'block' : 'none';
|
||||||
if (d.data.ftype == 0) {
|
if (d.data.ftype == 0) {
|
||||||
return `<div style="text-align: center;">
|
return `<div style="text-align: center;">
|
||||||
<div style="display: inline-block; margin-left: 5px;">
|
<div style="display: inline-block;margin-top: 10px; width: 230px;">
|
||||||
<div style="
|
<div style="
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
|
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
|
||||||
|
|
@ -192,7 +192,6 @@ export default function companyPage() {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="display: ${statisticsStyle}">
|
<div style="display: ${statisticsStyle}">
|
||||||
<span style="color:red">${d.data.staffNum}</span> /
|
|
||||||
<span style="color:green">${d.data.onJobNum}</span>
|
<span style="color:green">${d.data.onJobNum}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -214,7 +213,6 @@ export default function companyPage() {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="display: ${statisticsStyle}">
|
<div style="display: ${statisticsStyle}">
|
||||||
<span style="color:red">${d.data.staffNum}</span> /
|
|
||||||
<span style="color:green">${d.data.onJobNum}</span>
|
<span style="color:green">${d.data.onJobNum}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -421,9 +419,7 @@ export default function companyPage() {
|
||||||
*/
|
*/
|
||||||
const handleChange = (requestData) => {
|
const handleChange = (requestData) => {
|
||||||
setTimelineId(0);
|
setTimelineId(0);
|
||||||
timeLine.searchTimeLines(
|
timeLine.searchTimeLines(requestData.fclass);
|
||||||
`/api/bs/hrmorganization/orgchart/timeLines?fclass=${requestData.fclass}`,
|
|
||||||
);
|
|
||||||
requestData = { ...requestData, id: 0 };
|
requestData = { ...requestData, id: 0 };
|
||||||
handleSearch(requestData, false);
|
handleSearch(requestData, false);
|
||||||
};
|
};
|
||||||
|
|
@ -490,14 +486,13 @@ export default function companyPage() {
|
||||||
onZoomIn={(progressBtn) => handleZoomIn(progressBtn)}
|
onZoomIn={(progressBtn) => handleZoomIn(progressBtn)}
|
||||||
onZoomBehavior={(value) => handleZoomBehavior(value)}
|
onZoomBehavior={(value) => handleZoomBehavior(value)}
|
||||||
/>
|
/>
|
||||||
<TimeLine
|
{/* <TimeLine
|
||||||
ref={(r) => (timeLine = r)}
|
ref={(r) => (timeLine = r)}
|
||||||
onClick={(timeline) => {
|
onClick={(timeline) => {
|
||||||
timeLineSearch(timeline);
|
timeLineSearch(timeline);
|
||||||
}}
|
}}
|
||||||
url={'/api/bs/hrmorganization/orgchart/timeLines?fclass=0'}
|
|
||||||
labelData={labelData}
|
labelData={labelData}
|
||||||
/>
|
/> */}
|
||||||
<Spin size="large" spinning={spinning}>
|
<Spin size="large" spinning={spinning}>
|
||||||
<OrgChartComponent
|
<OrgChartComponent
|
||||||
setChart={(chart) => (orgChart = chart)}
|
setChart={(chart) => (orgChart = chart)}
|
||||||
|
|
|
||||||
|
|
@ -129,9 +129,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.tooltip .tooltitle {
|
.tooltip .tooltitle {
|
||||||
overflow: hidden;
|
// overflow: hidden;
|
||||||
white-space: nowrap;
|
// white-space: nowrap;
|
||||||
text-overflow: ellipsis;
|
// text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tooltip .tooltiptext {
|
.tooltip .tooltiptext {
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,7 @@ export default function userPage() {
|
||||||
// 获取数据
|
// 获取数据
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
document.cookie =
|
document.cookie =
|
||||||
'ecology_JSessionid=aaaLiDqzA0rZHgPBdxGez; JSESSIONID=aaaLiDqzA0rZHgPBdxGez; Systemlanguid=7; languageidweaver=7; loginuuids=1; loginidweaver=sysadmin; __randcode__=7b9b3b9b-a780-4d6a-b8d5-22d0f8aaf11a';
|
'ecology_JSessionid=aaaPFXzAh9afa9ho8YPAz; JSESSIONID=aaaPFXzAh9afa9ho8YPAz; Systemlanguid=7; languageidweaver=7; loginuuids=1; loginidweaver=sysadmin;';
|
||||||
d3.json(
|
d3.json(
|
||||||
'/api/bs/hrmorganization/orgchart/userData?fclass=0&fisvitual=0&root=0&level=3&id=0',
|
'/api/bs/hrmorganization/orgchart/userData?fclass=0&fisvitual=0&root=0&level=3&id=0',
|
||||||
).then((data) => {
|
).then((data) => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue