|
|
|
@ -1,23 +1,27 @@
|
|
|
|
|
import React, { FC } from "react";
|
|
|
|
|
import { Tabs } from "antd";
|
|
|
|
|
import { Column, Funnel, Pie } from "@ant-design/plots";
|
|
|
|
|
import { Avatar, List, Tabs } from "antd";
|
|
|
|
|
import { Column, Funnel, Pie, DualAxes } from "@ant-design/plots";
|
|
|
|
|
import {
|
|
|
|
|
degreeData,
|
|
|
|
|
flowingConfig,
|
|
|
|
|
flowingTrendconfig,
|
|
|
|
|
genderData,
|
|
|
|
|
humanAnalysisconfig,
|
|
|
|
|
humanEfficiencyRankingData,
|
|
|
|
|
institutionConfig,
|
|
|
|
|
internData,
|
|
|
|
|
linesData,
|
|
|
|
|
multiplData,
|
|
|
|
|
multipleConfig, newSaleEfficiencyRankingData,
|
|
|
|
|
personChangeConfig,
|
|
|
|
|
personChangeData,
|
|
|
|
|
rankingConfig,
|
|
|
|
|
rankingData, saleEfficiencyRankingData,
|
|
|
|
|
seniorityConfig,
|
|
|
|
|
seniorityData,
|
|
|
|
|
multiplData,
|
|
|
|
|
multipleConfig,
|
|
|
|
|
trainingData,
|
|
|
|
|
rankingData,
|
|
|
|
|
rankingConfig
|
|
|
|
|
trainingData,totalLaborCostConfig,
|
|
|
|
|
laborCostsPerCapitaConfig,
|
|
|
|
|
perCapitaIncomeConfig, fixedIncomePerData, floatingIncomePerData
|
|
|
|
|
} from "./constants";
|
|
|
|
|
import styles from "./index.less";
|
|
|
|
|
|
|
|
|
@ -37,24 +41,23 @@ const index: FC<Props> = (props) => {
|
|
|
|
|
<Pie {...flowingConfig} />
|
|
|
|
|
</div>
|
|
|
|
|
<div style={{ paddingTop: 0 }}>
|
|
|
|
|
<Tabs defaultActiveKey="1">
|
|
|
|
|
<Tabs.TabPane tab="司龄占比" key="1">
|
|
|
|
|
<Pie {...seniorityConfig} data={seniorityData}/>
|
|
|
|
|
{/*<Tabs defaultActiveKey="1">*/}
|
|
|
|
|
{/* <Tabs.TabPane tab="司龄占比" key="1">*/}
|
|
|
|
|
{/* <Pie {...seniorityConfig} data={seniorityData}/>*/}
|
|
|
|
|
{/* </Tabs.TabPane>*/}
|
|
|
|
|
{/* <Tabs.TabPane tab="性别占比" key="2">*/}
|
|
|
|
|
{/* <Pie {...seniorityConfig} data={genderData}/>*/}
|
|
|
|
|
{/* </Tabs.TabPane>*/}
|
|
|
|
|
{/* <Tabs.TabPane tab="学历分布" key="3">*/}
|
|
|
|
|
{/* <Pie {...seniorityConfig} data={degreeData}/>*/}
|
|
|
|
|
{/* </Tabs.TabPane>*/}
|
|
|
|
|
{/* <Tabs.TabPane tab="条线占比" key="4">*/}
|
|
|
|
|
{/* <Pie {...seniorityConfig} data={linesData}/>*/}
|
|
|
|
|
{/* </Tabs.TabPane>*/}
|
|
|
|
|
{/* <Tabs.TabPane tab="实习生占比" key="5">*/}
|
|
|
|
|
{/* <Pie {...seniorityConfig} data={internData}/>*/}
|
|
|
|
|
{/* </Tabs.TabPane>*/}
|
|
|
|
|
{/*</Tabs>*/}
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
<Tabs.TabPane tab="性别占比" key="2">
|
|
|
|
|
<Pie {...seniorityConfig} data={genderData}/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
<Tabs.TabPane tab="学历分布" key="3">
|
|
|
|
|
<Pie {...seniorityConfig} data={degreeData}/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
<Tabs.TabPane tab="条线占比" key="4">
|
|
|
|
|
<Pie {...seniorityConfig} data={linesData}/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
<Tabs.TabPane tab="实习生占比" key="5">
|
|
|
|
|
<Pie {...seniorityConfig} data={internData}/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
</Tabs>
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<div className={styles.title}>人员流动情况趋势图</div>
|
|
|
|
@ -66,7 +69,204 @@ const index: FC<Props> = (props) => {
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{/*人才利润报表*/}
|
|
|
|
|
<div className={styles.profitTableBox}></div>
|
|
|
|
|
<div className={styles.profitTableBox}>
|
|
|
|
|
<div>
|
|
|
|
|
<div className={styles.title}>人效分析</div>
|
|
|
|
|
<Column {...humanAnalysisconfig} />
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<div className={styles.title}>人效分析排名</div>
|
|
|
|
|
<Tabs defaultActiveKey="1">
|
|
|
|
|
<Tabs.TabPane tab="有效金额排名" key="1">
|
|
|
|
|
<List
|
|
|
|
|
itemLayout="horizontal"
|
|
|
|
|
dataSource={humanEfficiencyRankingData}
|
|
|
|
|
renderItem={item => (
|
|
|
|
|
<List.Item actions={[<a key="list-loadmore-more">more</a>]}>
|
|
|
|
|
<List.Item.Meta
|
|
|
|
|
avatar={<Avatar src="https://joeschmoe.io/api/v1/random"/>}
|
|
|
|
|
title={<a href="https://ant.design">{item.title}</a>}
|
|
|
|
|
description={item.description}
|
|
|
|
|
/>
|
|
|
|
|
<div>{item.rank}</div>
|
|
|
|
|
</List.Item>
|
|
|
|
|
)}
|
|
|
|
|
/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
<Tabs.TabPane tab="合同数量排名" key="2">
|
|
|
|
|
<List
|
|
|
|
|
itemLayout="horizontal"
|
|
|
|
|
dataSource={saleEfficiencyRankingData}
|
|
|
|
|
renderItem={item => (
|
|
|
|
|
<List.Item actions={[<a key="list-loadmore-more">more</a>]}>
|
|
|
|
|
<List.Item.Meta
|
|
|
|
|
avatar={<Avatar src="https://joeschmoe.io/api/v1/random"/>}
|
|
|
|
|
title={<a href="https://ant.design">{item.title}</a>}
|
|
|
|
|
description={item.description}
|
|
|
|
|
/>
|
|
|
|
|
<div>{item.rank}</div>
|
|
|
|
|
</List.Item>
|
|
|
|
|
)}
|
|
|
|
|
/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
<Tabs.TabPane tab="有效合同排名" key="3">
|
|
|
|
|
<List
|
|
|
|
|
itemLayout="horizontal"
|
|
|
|
|
dataSource={newSaleEfficiencyRankingData}
|
|
|
|
|
renderItem={item => (
|
|
|
|
|
<List.Item actions={[<a key="list-loadmore-more">more</a>]}>
|
|
|
|
|
<List.Item.Meta
|
|
|
|
|
avatar={<Avatar src="https://joeschmoe.io/api/v1/random"/>}
|
|
|
|
|
title={<a href="https://ant.design">{item.title}</a>}
|
|
|
|
|
description={item.description}
|
|
|
|
|
/>
|
|
|
|
|
<div>{item.rank}</div>
|
|
|
|
|
</List.Item>
|
|
|
|
|
)}
|
|
|
|
|
/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
</Tabs>
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<div className={styles.title}>团队效能排名</div>
|
|
|
|
|
<Tabs defaultActiveKey="1">
|
|
|
|
|
<Tabs.TabPane tab="指标<400万" key="1">
|
|
|
|
|
<List
|
|
|
|
|
itemLayout="horizontal"
|
|
|
|
|
dataSource={humanEfficiencyRankingData}
|
|
|
|
|
renderItem={item => (
|
|
|
|
|
<List.Item actions={[<a key="list-loadmore-more">more</a>]}>
|
|
|
|
|
<List.Item.Meta
|
|
|
|
|
avatar={<Avatar src="https://joeschmoe.io/api/v1/random"/>}
|
|
|
|
|
title={<a href="https://ant.design">{item.title}</a>}
|
|
|
|
|
description={item.description}
|
|
|
|
|
/>
|
|
|
|
|
<div>{item.rank}</div>
|
|
|
|
|
</List.Item>
|
|
|
|
|
)}
|
|
|
|
|
/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
<Tabs.TabPane tab="400万≤指标<600万" key="2">
|
|
|
|
|
<List
|
|
|
|
|
itemLayout="horizontal"
|
|
|
|
|
dataSource={humanEfficiencyRankingData}
|
|
|
|
|
renderItem={item => (
|
|
|
|
|
<List.Item actions={[<a key="list-loadmore-more">more</a>]}>
|
|
|
|
|
<List.Item.Meta
|
|
|
|
|
avatar={<Avatar src="https://joeschmoe.io/api/v1/random"/>}
|
|
|
|
|
title={<a href="https://ant.design">{item.title}</a>}
|
|
|
|
|
description={item.description}
|
|
|
|
|
/>
|
|
|
|
|
<div>{item.rank}</div>
|
|
|
|
|
</List.Item>
|
|
|
|
|
)}
|
|
|
|
|
/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
<Tabs.TabPane tab="600万≤指标<800万" key="3">
|
|
|
|
|
<List
|
|
|
|
|
itemLayout="horizontal"
|
|
|
|
|
dataSource={humanEfficiencyRankingData}
|
|
|
|
|
renderItem={item => (
|
|
|
|
|
<List.Item actions={[<a key="list-loadmore-more">more</a>]}>
|
|
|
|
|
<List.Item.Meta
|
|
|
|
|
avatar={<Avatar src="https://joeschmoe.io/api/v1/random"/>}
|
|
|
|
|
title={<a href="https://ant.design">{item.title}</a>}
|
|
|
|
|
description={item.description}
|
|
|
|
|
/>
|
|
|
|
|
<div>{item.rank}</div>
|
|
|
|
|
</List.Item>
|
|
|
|
|
)}
|
|
|
|
|
/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
<Tabs.TabPane tab="800万≤指标<1200万" key="4">
|
|
|
|
|
<List
|
|
|
|
|
itemLayout="horizontal"
|
|
|
|
|
dataSource={humanEfficiencyRankingData}
|
|
|
|
|
renderItem={item => (
|
|
|
|
|
<List.Item actions={[<a key="list-loadmore-more">more</a>]}>
|
|
|
|
|
<List.Item.Meta
|
|
|
|
|
avatar={<Avatar src="https://joeschmoe.io/api/v1/random"/>}
|
|
|
|
|
title={<a href="https://ant.design">{item.title}</a>}
|
|
|
|
|
description={item.description}
|
|
|
|
|
/>
|
|
|
|
|
<div>{item.rank}</div>
|
|
|
|
|
</List.Item>
|
|
|
|
|
)}
|
|
|
|
|
/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
<Tabs.TabPane tab="1200万≤指标<1600万" key="5">
|
|
|
|
|
<List
|
|
|
|
|
itemLayout="horizontal"
|
|
|
|
|
dataSource={humanEfficiencyRankingData}
|
|
|
|
|
renderItem={item => (
|
|
|
|
|
<List.Item actions={[<a key="list-loadmore-more">more</a>]}>
|
|
|
|
|
<List.Item.Meta
|
|
|
|
|
avatar={<Avatar src="https://joeschmoe.io/api/v1/random"/>}
|
|
|
|
|
title={<a href="https://ant.design">{item.title}</a>}
|
|
|
|
|
description={item.description}
|
|
|
|
|
/>
|
|
|
|
|
<div>{item.rank}</div>
|
|
|
|
|
</List.Item>
|
|
|
|
|
)}
|
|
|
|
|
/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
<Tabs.TabPane tab="1600万≤指标<3000万" key="6">
|
|
|
|
|
<List
|
|
|
|
|
itemLayout="horizontal"
|
|
|
|
|
dataSource={humanEfficiencyRankingData}
|
|
|
|
|
renderItem={item => (
|
|
|
|
|
<List.Item actions={[<a key="list-loadmore-more">more</a>]}>
|
|
|
|
|
<List.Item.Meta
|
|
|
|
|
avatar={<Avatar src="https://joeschmoe.io/api/v1/random"/>}
|
|
|
|
|
title={<a href="https://ant.design">{item.title}</a>}
|
|
|
|
|
description={item.description}
|
|
|
|
|
/>
|
|
|
|
|
<div>{item.rank}</div>
|
|
|
|
|
</List.Item>
|
|
|
|
|
)}
|
|
|
|
|
/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
<Tabs.TabPane tab="指标>=3000万" key="7">
|
|
|
|
|
<List
|
|
|
|
|
itemLayout="horizontal"
|
|
|
|
|
dataSource={humanEfficiencyRankingData}
|
|
|
|
|
renderItem={item => (
|
|
|
|
|
<List.Item actions={[<a key="list-loadmore-more">more</a>]}>
|
|
|
|
|
<List.Item.Meta
|
|
|
|
|
avatar={<Avatar src="https://joeschmoe.io/api/v1/random"/>}
|
|
|
|
|
title={<a href="https://ant.design">{item.title}</a>}
|
|
|
|
|
description={item.description}
|
|
|
|
|
/>
|
|
|
|
|
<div>{item.rank}</div>
|
|
|
|
|
</List.Item>
|
|
|
|
|
)}
|
|
|
|
|
/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
</Tabs>
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<div className={styles.title}>人均收入</div>
|
|
|
|
|
<Tabs defaultActiveKey="1">
|
|
|
|
|
<Tabs.TabPane tab="人均固定收入" key="1">
|
|
|
|
|
<Pie {...perCapitaIncomeConfig} data={fixedIncomePerData}/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
<Tabs.TabPane tab="人均浮动收入" key="2">
|
|
|
|
|
<Pie {...perCapitaIncomeConfig} data={floatingIncomePerData}/>
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
</Tabs>
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<div className={styles.title}>人工成本</div>
|
|
|
|
|
<Tabs defaultActiveKey="1">
|
|
|
|
|
<Tabs.TabPane tab="人工总成本" key="1">
|
|
|
|
|
<DualAxes {...totalLaborCostConfig} />
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
<Tabs.TabPane tab="人均人工成本" key="2">
|
|
|
|
|
<DualAxes {...laborCostsPerCapitaConfig} />
|
|
|
|
|
</Tabs.TabPane>
|
|
|
|
|
</Tabs>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{/*人员流量表*/}
|
|
|
|
|
<div className={styles.flowRateTableBox}>
|
|
|
|
|
<div>
|
|
|
|
|