|
|
|
@ -9,6 +9,7 @@ import {
|
|
|
|
|
Axis,
|
|
|
|
|
Tooltip,
|
|
|
|
|
} from "bizcharts";
|
|
|
|
|
import LoadingSpin from "../../../../common/LoadingSpin";
|
|
|
|
|
const { Option } = Select;
|
|
|
|
|
|
|
|
|
|
class Signinstatistics extends Component {
|
|
|
|
@ -17,10 +18,14 @@ class Signinstatistics extends Component {
|
|
|
|
|
this.state={
|
|
|
|
|
datas:null,
|
|
|
|
|
newlist:[],
|
|
|
|
|
course_groups:[{id:"全部",name:"全部"}]
|
|
|
|
|
course_groups:[{id:"全部",name:"全部"}],
|
|
|
|
|
spal:false,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
getdata=(group_id)=>{
|
|
|
|
|
this.setState({
|
|
|
|
|
spal:true
|
|
|
|
|
})
|
|
|
|
|
const coursesId=this.props.match.params.coursesId;
|
|
|
|
|
let url=`/weapps/courses/${coursesId}/attendances.json`
|
|
|
|
|
axios.get(url,{params:{
|
|
|
|
@ -60,7 +65,15 @@ class Signinstatistics extends Component {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
this.setState({
|
|
|
|
|
spal:false
|
|
|
|
|
})
|
|
|
|
|
}).catch((error) => {
|
|
|
|
|
this.setState({
|
|
|
|
|
spal:false
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
componentDidMount() {
|
|
|
|
@ -84,7 +97,7 @@ class Signinstatistics extends Component {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
render() {
|
|
|
|
|
let {datas,newlist,course_groups}=this.state;
|
|
|
|
|
let {datas,newlist,course_groups,spal}=this.state;
|
|
|
|
|
|
|
|
|
|
const cols = {
|
|
|
|
|
month: {
|
|
|
|
@ -95,11 +108,22 @@ class Signinstatistics extends Component {
|
|
|
|
|
|
|
|
|
|
return(
|
|
|
|
|
<React.Fragment >
|
|
|
|
|
<div>
|
|
|
|
|
{
|
|
|
|
|
spal===true?
|
|
|
|
|
<div style={{
|
|
|
|
|
minHeight:"500px",
|
|
|
|
|
}}>
|
|
|
|
|
<LoadingSpin></LoadingSpin>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<Row type="flex" justify="space-between" className={"mt20"}>
|
|
|
|
|
<style>
|
|
|
|
|
{
|
|
|
|
|
`
|
|
|
|
|
:
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
|
|
<Row type="flex" justify="space-between" className={"mt20"}>
|
|
|
|
|
<style>
|
|
|
|
|
{
|
|
|
|
|
`
|
|
|
|
|
.lishiqiandao{
|
|
|
|
|
background-image: url(${getImageUrl(`images/qiandao/lishi.png`)});
|
|
|
|
|
}
|
|
|
|
@ -113,108 +137,112 @@ class Signinstatistics extends Component {
|
|
|
|
|
background-image: url(${getImageUrl(`images/qiandao/qingjia.png`)});
|
|
|
|
|
}
|
|
|
|
|
`
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
<Col span={6}>
|
|
|
|
|
<Card style={{ width: 209 }} className={"gutterrowbox lishiqiandao"}>
|
|
|
|
|
<div className={"gutterrowboxcontent ml5"}>{datas&&datas.all_history_count}</div>
|
|
|
|
|
</Card>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={6}>
|
|
|
|
|
<Card style={{ width: 209 }} className={"ml8 gutterrowbox daokeqiandao"}>
|
|
|
|
|
<div className={"gutterrowboxcontent ml5"}>{datas?(datas&&datas.avg_normal_rate*100).toFixed(0)+"%":""}</div>
|
|
|
|
|
</Card>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={6}>
|
|
|
|
|
<Card style={{ width: 209 }} className={"ml14 gutterrowbox kuangkeqiandao"}>
|
|
|
|
|
<div className={"gutterrowboxcontent ml5"}>{datas?(datas&&datas.avg_absence_rate*100).toFixed(0)+"%":""}</div>
|
|
|
|
|
</Card>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={6} >
|
|
|
|
|
<Card style={{ width: 209 }} className={"ml20 gutterrowbox qingjiaqiandao"}>
|
|
|
|
|
<div className={"gutterrowboxcontent ml5"}>{datas?(datas&&datas.avg_leave_rate*100).toFixed(0)+"%":""}</div>
|
|
|
|
|
</Card>
|
|
|
|
|
</Col>
|
|
|
|
|
</Row>
|
|
|
|
|
|
|
|
|
|
<div className={"SigninstatisticsChart mt20"}>
|
|
|
|
|
<div className={"pd30"}>
|
|
|
|
|
<Row>
|
|
|
|
|
<Col span={14}>
|
|
|
|
|
<Row type="flex" justify="start">
|
|
|
|
|
<Col span={5}>
|
|
|
|
|
<Row>
|
|
|
|
|
<Col span={12} className={"mindaoke mr5"}></Col>
|
|
|
|
|
<Col>到课率</Col>
|
|
|
|
|
</Row>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={5}>
|
|
|
|
|
<Row>
|
|
|
|
|
<Col span={12} className={"minkuangke mr5"}></Col>
|
|
|
|
|
<Col>旷课率</Col>
|
|
|
|
|
</Row>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={5}>
|
|
|
|
|
<Row>
|
|
|
|
|
<Col span={12} className={"minqingjia mr5"}></Col>
|
|
|
|
|
<Col>请假率</Col>
|
|
|
|
|
</Row>
|
|
|
|
|
</Col>
|
|
|
|
|
</Row>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={10}><Row type="flex" justify="end">
|
|
|
|
|
<Col span={8} className={"Signinstatisticsfont"}>显示最近十次签到</Col>
|
|
|
|
|
<Col span={10}>
|
|
|
|
|
<Select defaultValue={"全部"} onChange={(e)=>this.handleChange(e)} style={{width:"130px"}}>
|
|
|
|
|
{course_groups&&course_groups.map((item,key)=>{
|
|
|
|
|
return(
|
|
|
|
|
<Option value={item.id} title={item.name} >{item.name}</Option>
|
|
|
|
|
)
|
|
|
|
|
})}
|
|
|
|
|
</Select>
|
|
|
|
|
</Col>
|
|
|
|
|
</Row></Col>
|
|
|
|
|
</Row>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className={"padding03000"}>
|
|
|
|
|
<Chart height={400} data={newlist} scale={cols} forceFit>
|
|
|
|
|
{/*<Legend />*/}
|
|
|
|
|
<Axis name="month" />
|
|
|
|
|
<Axis
|
|
|
|
|
name="temperature"
|
|
|
|
|
label={{
|
|
|
|
|
formatter: val => `${val}%`
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
<Tooltip
|
|
|
|
|
crosshairs={{
|
|
|
|
|
type: "y"
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
<Geom
|
|
|
|
|
type="line"
|
|
|
|
|
position="month*temperature"
|
|
|
|
|
size={2}
|
|
|
|
|
// color={"city"}
|
|
|
|
|
shape={"smooth"}
|
|
|
|
|
color={["city", ["#26C7C9", "#FF835C","#EDBA6F"]]}
|
|
|
|
|
/>
|
|
|
|
|
<Geom
|
|
|
|
|
type="point"
|
|
|
|
|
position="month*temperature"
|
|
|
|
|
size={4}
|
|
|
|
|
shape={"circle"}
|
|
|
|
|
color={["city", ["#26C7C9", "#FF835C","#EDBA6F"]]}
|
|
|
|
|
style={{
|
|
|
|
|
stroke: "#fff",
|
|
|
|
|
lineWidth: 1
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
</Chart>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
<Col span={6}>
|
|
|
|
|
<Card style={{ width: 209 }} className={"gutterrowbox lishiqiandao"}>
|
|
|
|
|
<div className={"gutterrowboxcontent ml5"}>{datas&&datas.all_history_count}</div>
|
|
|
|
|
</Card>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={6}>
|
|
|
|
|
<Card style={{ width: 209 }} className={"ml8 gutterrowbox daokeqiandao"}>
|
|
|
|
|
<div className={"gutterrowboxcontent ml5"}>{datas?(datas&&datas.avg_normal_rate*100).toFixed(0)+"%":""}</div>
|
|
|
|
|
</Card>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={6}>
|
|
|
|
|
<Card style={{ width: 209 }} className={"ml14 gutterrowbox kuangkeqiandao"}>
|
|
|
|
|
<div className={"gutterrowboxcontent ml5"}>{datas?(datas&&datas.avg_absence_rate*100).toFixed(0)+"%":""}</div>
|
|
|
|
|
</Card>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={6} >
|
|
|
|
|
<Card style={{ width: 209 }} className={"ml20 gutterrowbox qingjiaqiandao"}>
|
|
|
|
|
<div className={"gutterrowboxcontent ml5"}>{datas?(datas&&datas.avg_leave_rate*100).toFixed(0)+"%":""}</div>
|
|
|
|
|
</Card>
|
|
|
|
|
</Col>
|
|
|
|
|
</Row>
|
|
|
|
|
|
|
|
|
|
<div className={"SigninstatisticsChart mt20"}>
|
|
|
|
|
<div className={"pd30"}>
|
|
|
|
|
<Row>
|
|
|
|
|
<Col span={14}>
|
|
|
|
|
<Row type="flex" justify="start">
|
|
|
|
|
<Col span={5}>
|
|
|
|
|
<Row>
|
|
|
|
|
<Col span={12} className={"mindaoke mr5"}></Col>
|
|
|
|
|
<Col>到课率</Col>
|
|
|
|
|
</Row>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={5}>
|
|
|
|
|
<Row>
|
|
|
|
|
<Col span={12} className={"minkuangke mr5"}></Col>
|
|
|
|
|
<Col>旷课率</Col>
|
|
|
|
|
</Row>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={5}>
|
|
|
|
|
<Row>
|
|
|
|
|
<Col span={12} className={"minqingjia mr5"}></Col>
|
|
|
|
|
<Col>请假率</Col>
|
|
|
|
|
</Row>
|
|
|
|
|
</Col>
|
|
|
|
|
</Row>
|
|
|
|
|
</Col>
|
|
|
|
|
<Col span={10}><Row type="flex" justify="end">
|
|
|
|
|
<Col span={8} className={"Signinstatisticsfont"}>显示最近十次签到</Col>
|
|
|
|
|
<Col span={10}>
|
|
|
|
|
<Select defaultValue={"全部"} onChange={(e)=>this.handleChange(e)} style={{width:"130px"}}>
|
|
|
|
|
{course_groups&&course_groups.map((item,key)=>{
|
|
|
|
|
return(
|
|
|
|
|
<Option value={item.id} title={item.name} >{item.name}</Option>
|
|
|
|
|
)
|
|
|
|
|
})}
|
|
|
|
|
</Select>
|
|
|
|
|
</Col>
|
|
|
|
|
</Row></Col>
|
|
|
|
|
</Row>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className={"padding03000"}>
|
|
|
|
|
<Chart height={400} data={newlist} scale={cols} forceFit>
|
|
|
|
|
{/*<Legend />*/}
|
|
|
|
|
<Axis name="month" />
|
|
|
|
|
<Axis
|
|
|
|
|
name="temperature"
|
|
|
|
|
label={{
|
|
|
|
|
formatter: val => `${val}%`
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
<Tooltip
|
|
|
|
|
crosshairs={{
|
|
|
|
|
type: "y"
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
<Geom
|
|
|
|
|
type="line"
|
|
|
|
|
position="month*temperature"
|
|
|
|
|
size={2}
|
|
|
|
|
// color={"city"}
|
|
|
|
|
shape={"smooth"}
|
|
|
|
|
color={["city", ["#26C7C9", "#FF835C","#EDBA6F"]]}
|
|
|
|
|
/>
|
|
|
|
|
<Geom
|
|
|
|
|
type="point"
|
|
|
|
|
position="month*temperature"
|
|
|
|
|
size={4}
|
|
|
|
|
shape={"circle"}
|
|
|
|
|
color={["city", ["#26C7C9", "#FF835C","#EDBA6F"]]}
|
|
|
|
|
style={{
|
|
|
|
|
stroke: "#fff",
|
|
|
|
|
lineWidth: 1
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
</Chart>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</React.Fragment>
|
|
|
|
|
|
|
|
|
|
)
|
|
|
|
@ -227,4 +255,4 @@ class Signinstatistics extends Component {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export default Signinstatistics;
|
|
|
|
|
export default Signinstatistics;
|
|
|
|
|