< template> < div : class = "className"  : style= "{height:height,width:width}"  / > 
< / template> < script> import  *  as echarts from 'echarts'
require ( 'echarts/ theme/ macarons')  
import  resize  from '. /mixins/ resize'
import  {  insertUserList }  from "@/api/system/user" ; const  animationDuration =  6000 export default  { mixins:  [ resize] , props:  { className:  { type:  String , default :  'chart' } , width:  { type:  String , default :  '100%' } , height:  { type:  String , default :  '300px' } } , data ( )  { return  { chart:  null , sevenDays:  [ ] , newUsers: [ ] , date: [ ] } } , mounted ( )  { this . $nextTick ( ( )  = >  { this . initChart ( ) } ) this . getSevenDays ( ) ; } , beforeDestroy ( )  { if  ( ! this . chart)  { return } this . chart. dispose ( ) this . chart =  null } , methods:  { getSevenDays ( )  { const  today =  new  Date ( ) ; const  sevenDays =  [ ] ; for  ( let i =  0 ;  i <  7 ;  i++ )  { const  date =  new  Date ( today) ; date. setDate ( today. getDate ( )  -  i) ; sevenDays. push ( date. toISOString ( ) . split ( 'T' ) [ 0 ] ) ; } this . sevenDays =  sevenDays; } , initChart ( )  { this . chart =  echarts. init ( this . $el,  'macarons') insertUserList ( ) . then ( response = >  { let insertUserList =  response. data; for  ( let i =  0 ;  i <  insertUserList. length;  i++ )  { this . newUsers. push ( insertUserList[ i] . newUsers) ; this . date. push ( insertUserList[ i] . date) ; } console. log ( "insertUserList:" + this . newUsers) ; this . chart. setOption ( { tooltip:  { trigger:  'axis' , axisPointer:  {  type:  'shadow'  } } , grid:  { top:  10 , left:  '2%' , right:  '2%' , bottom:  '3%' , containLabel:  true } , xAxis:  [ { type:  'category', data:  this . date, axisTick:  { alignWithLabel:  true } } ] , yAxis:  [ { type:  'value' , axisTick:  { show:  false , } } ] , series:  [ { color:  "#c23616" , name:  '新增用户' , type:  'bar' , stack:  'vistors', barWidth:  '60%' , data:  this . newUsers, animationDuration} ,  ] } ) } ) ; } } 
} 
< / script> < template> < div : class = "className"  : style= "{ height: height, width: width }"  / > 
< / template> < script> import  *  as echarts from 'echarts'
require ( 'echarts/ theme/ macarons')  
import  resize  from '. /mixins/ resize'
import  {  pagingUserExam,  isPassed,  listUserExam,  getUserExam,  delUserExam,  addUserExam,  updateUserExam }  from "@/api/exam/userExam" ; 
export default  { mixins:  [ resize] , props:  { className:  { type:  String , default :  'chart' } , width:  { type:  String , default :  '100%' } , height:  { type:  String , default :  '350px' } , autoResize:  { type:  Boolean , default :  true } , chartData:  { type:  Object , required:  true } } , data ( )  { return  { chart:  null , sevenDays:  [ ] , passedCount:  [ ] , failedCount:  [ ] , updateTime:  [ ] , queryParams:  { pageNum:  1 , pageSize:  100 , deptId:  undefined} , } } , watch:  { chartData:  { deep:  true , handler ( val)  { this . setOptions ( val) } } } , mounted ( )  { this . $nextTick ( ( )  = >  { this . initChart ( ) } ) this . getSevenDays ( ) ; } , beforeDestroy ( )  { if  ( ! this . chart)  { return } this . chart. dispose ( ) this . chart =  null } , methods:  { getSevenDays ( )  { const  today =  new  Date ( ) ; const  sevenDays =  [ ] ; for  ( let i =  0 ;  i <  7 ;  i++ )  { const  date =  new  Date ( today) ; date. setDate ( today. getDate ( )  -  i) ; sevenDays. push ( date. toISOString ( ) . split ( 'T' ) [ 0 ] ) ; } this . sevenDays =  sevenDays; } , initChart ( )  { this . chart =  echarts. init ( this . $el,  'macarons') this . setOptions ( this . chartData) } , setOptions ( {  }  =  { } )  { isPassed ( ) . then ( response = >  { let projectList =  response. data; for  ( let i =  0 ;  i <  projectList. length;  i++ )  { this . passedCount. push ( projectList[ i] . passedCount) ; this . failedCount. push ( projectList[ i] . failedCount) ; this . updateTime. push ( projectList[ i] . date) ; } console. log ( "updateTime" ) ; console. log ( this . updateTime) ; this . chart. setOption ( { xAxis:  { data:  this . updateTime, boundaryGap:  false , axisTick:  { show:  false } } , grid:  { left:  10 , right:  10 , bottom:  20 , top:  30 , containLabel:  true } , tooltip:  { trigger:  'axis' , axisPointer:  { type:  'cross' } , padding:  [ 5 ,  10 ] } , yAxis:  { axisTick:  { show:  false } } , legend:  { data:  [ '通过人数' ,  '不通过人数' ] } , series:  [ { name:  '通过人数' ,  itemStyle:  { normal:  { color:  '#FF005A ', lineStyle:  { color:  '#FF005A ', width:  2 } } } , smooth:  false , type:  'line' , data:  this . passedCount, animationDuration:  2800 , animationEasing:  'cubicInOut'} , { name:  '不通过人数' , smooth:  false , type:  'line' , itemStyle:  { normal:  { color:  '#3888f a', lineStyle:  { color:  '#3888f a', width:  2 } , areaStyle:  { color:  '#f3f8ff'} } } , data:  this . failedCount, animationDuration:  2800 , animationEasing:  'quadraticOut'} ] } ) } ) ; } } 
} 
< / script>