登录页添加验证码  
 
 
引入验证码页面组件:ValidCode.vue < template> < div class = "ValidCodeContent"  style= "" > < divclass = "ValidCode disabled-select" : style= "`width:${width}; height:${height}`" @click= "refreshCode" > < spanv- for = "(item, index) in codeList" : key= "index" : style= "getStyle(item)" > { {  item. code } } < / span> < / div> < div class = "kbq"  @click= "refreshCode" > 看不清< / div> < / div> 
< / template> < script> 
export  default  { name :  'validCode' , props :  { width :  { type :  String, default :  '100px' , } , height :  { type :  String, default :  '40px' , } , length :  { type :  Number, default :  4 , } , } , data ( )  { return  { codeList :  [ ] , } } , mounted ( )  { this . createdCode ( ) } , methods :  { refreshCode ( )  { this . createdCode ( ) } , createdCode ( )  { let  len =  this . length, codeList =  [ ] , chars =  'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789' , charsLen =  chars. lengthfor  ( let  i =  0 ;  i <  len;  i++ )  { let  rgb =  [ Math. round ( Math. random ( )  *  220 ) , Math. round ( Math. random ( )  *  240 ) , Math. round ( Math. random ( )  *  200 ) , ] codeList. push ( { code :  chars. charAt ( Math. floor ( Math. random ( )  *  charsLen) ) , color :  ` rgb( ${ rgb} ) ` , fontSize :  ` 1 ${ [ Math. floor ( Math. random ( )  *  1  +  9 ) ] } px ` , padding :  ` ${ [ Math. floor ( Math. random ( )  *  2  +  4 ) ] } px ` , transform :  ` rotate( ${ Math. floor ( Math. random ( )  *  90 )  -  Math. floor ( Math. random ( )  *  90 ) } deg) ` , } ) } this . codeList =  codeListthis . $emit ( 'update:value' ,  codeList. map ( ( item )  =>  item. code) . join ( '' ) ) } , getStyle ( data )  { return  ` color:  ${ data. color} ; font-size:  ${ data. fontSize} ; padding:  ${ data. padding} ; transform:  ${ data. transform} ; ` } , } , 
} 
< / script> < style scoped> 
. ValidCodeContent { display :  flex; flex- direction:  row; justify- content:  center; margin- left:  20px; 
} 
. ValidCode { display :  flex; justify- content:  center; align- items:  center; cursor :  pointer; background :  #eaeaea; 
} . ValidCode >  span { display :  inline- block; 
} . kbq { width :  60px; height :  40px; line- height:  40px; color :  #ed7610; margin- left:  10px; cursor :  pointer; font- size:  16px; font- family:  simhei; 
} 
< / style> 
登录页 login.vue < template> < div id= "loginPage"  class = "subpage applogin"  : style= "getStyle()" > < el- form ref= "LoginData"  : model= "loginData"  label- width= "0px"  style= "padding-top: 35px;width:90%;margin-left: auto;margin-right: auto;"  class = "loginForm" > < el- form- item> < el- input : input- style= "{ height: '40px !important', lineHeight: '50px',color:'#333' }"  type= "text"  v- model= "loginData.userName" autocomplete= "off"  placeholder= "请输入用户名"  class = "username"   / > < / el- form- item> < el- form- item> < el- input : input- style= "{ height: '40px !important', lineHeight: '50px',color:'#333' }"  class = "password"  type= "password" v- model= "loginData.password"  autocomplete= "off"  placeholder= "请输入密码"  show- password  / > < / el- form- item> < el- form- item prop= "validCode"  style= "display: flex" > < div style= "display: flex" > < div class = "loginBodyItem validCode" > < div> < / div> < el- input : input- style= "{ height: '40px !important', lineHeight: '50px',color:'#333' }"  type= "text"  v- model= "inputValidCode" autocomplete= "off"  placeholder= "请输入验证码"  class = "valid"   / > < / div> < ValidCode class = "validCode"  v- model: value= "validCode" > < / ValidCode> < / div> < / el- form- item> < el- form- item> < el- button style= "background:#0147eb !important;"  color= "#0147eb"  @click= "login"  dark= "true"  v- preventReClick> 登& nbsp; & nbsp; 录< / el- button> < / el- form- item> < / el- form> < / div> 
< / template> 
< script> import  ValidCode from  './ValidCode.vue' ; 
export  default  { data :  function ( )  { return  { validCode :  '' , inputValidCode :  '' , loginData :  { "userName" :  "" , "password" :  "" } , } } , methods : { login :  async  function ( )  { let  data =  JSON . parse ( JSON . stringify ( this . loginData) ) ; if  ( ! data. userName)  { this . $message ( { type :  "warning" , message :  "请输入用户名" } ) ; return ; } if  ( ! data. password)  { this . $message ( { type :  "warning" , message :  "请输入密码" } ) ; return ; } if  ( this . inputValidCode. toLocaleLowerCase ( )  ==  '' )  { this . $message ( { type :  "warning" , message :  "请输入验证码" } ) ; return }  else  { if  (  this . inputValidCode. toLocaleLowerCase ( )  !==   this . validCode. toLocaleLowerCase ( )  )  { this . $message ( { type :  "warning" , message :  "验证码输入有误" } ) ; return }  else  { } } let  res =  await  FrameWork. SendGet ( url,  formData) ; ... . } } , components :  { ValidCode} } 
< / script> 
< style scoped= "scoped" > / deep / . validCode { float :  left; margin- top:  10px; } 
< / style>