|  | @@ -49,6 +49,22 @@
 | 
	
		
			
				|  |  |                              />
 | 
	
		
			
				|  |  |                          </span>-->
 | 
	
		
			
				|  |  |            </el-form-item>
 | 
	
		
			
				|  |  | +          <p class="input-title">验证码</p>
 | 
	
		
			
				|  |  | +          <div class="verificationCode-box">
 | 
	
		
			
				|  |  | +              <el-form-item prop="verificationCode">
 | 
	
		
			
				|  |  | +                <el-input
 | 
	
		
			
				|  |  | +                autocomplete="off"
 | 
	
		
			
				|  |  | +                name="verificationCode"
 | 
	
		
			
				|  |  | +                ref="verificationCode"
 | 
	
		
			
				|  |  | +                tabindex="3"
 | 
	
		
			
				|  |  | +                type="text"
 | 
	
		
			
				|  |  | +                v-model="loginForm.verificationCode"
 | 
	
		
			
				|  |  | +                />
 | 
	
		
			
				|  |  | +            </el-form-item>
 | 
	
		
			
				|  |  | +            <div class="verificationCode-img">
 | 
	
		
			
				|  |  | +                <img v-if="verificationCodeimg&&verificationCodeLoading" :src="verificationCodeimg" alt="图形验证码" @click="getVerificationCodeimg"/>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  |            <p class="input-title">用户类型</p>
 | 
	
		
			
				|  |  |            <el-form-item class="el-form-item-type" prop="type">
 | 
	
		
			
				|  |  |              <el-radio label="TEACHER" v-model="loginForm.type">教师</el-radio>
 | 
	
	
		
			
				|  | @@ -82,12 +98,11 @@
 | 
	
		
			
				|  |  |  <script>
 | 
	
		
			
				|  |  |  import { validUsername, validPass } from "@/utils/validate";
 | 
	
		
			
				|  |  |  import { getStaticContent } from "@/api/api";
 | 
	
		
			
				|  |  | -import { getObjArr, saveObjArr } from "@/utils/role";
 | 
	
		
			
				|  |  | -import Cookies from "js-cookie";
 | 
	
		
			
				|  |  | +import { getObjArr } from "@/utils/role";
 | 
	
		
			
				|  |  |  import { setToken } from "@/utils/auth";
 | 
	
		
			
				|  |  |  import { removeSession } from "@/utils/role";
 | 
	
		
			
				|  |  |  import { getConfigInfor } from "@/utils/index";
 | 
	
		
			
				|  |  | -3;
 | 
	
		
			
				|  |  | +import md5 from 'js-md5'
 | 
	
		
			
				|  |  |  export default {
 | 
	
		
			
				|  |  |    name: "Login",
 | 
	
		
			
				|  |  |    data() {
 | 
	
	
		
			
				|  | @@ -105,6 +120,13 @@ export default {
 | 
	
		
			
				|  |  |          callback();
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | +    const validateVerificationCode = (rule, value, callback) => {
 | 
	
		
			
				|  |  | +      if (!value) {
 | 
	
		
			
				|  |  | +        callback(new Error("请输入验证码"));
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        callback();
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  |        options: [],
 | 
	
		
			
				|  |  |        select: "1",
 | 
	
	
		
			
				|  | @@ -115,6 +137,7 @@ export default {
 | 
	
		
			
				|  |  |          username: getObjArr("userName") || "",
 | 
	
		
			
				|  |  |          password: "",
 | 
	
		
			
				|  |  |          type: "TEACHER",
 | 
	
		
			
				|  |  | +        verificationCode:''
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |        //input 规则
 | 
	
		
			
				|  |  |        loginRules: {
 | 
	
	
		
			
				|  | @@ -124,12 +147,18 @@ export default {
 | 
	
		
			
				|  |  |          password: [
 | 
	
		
			
				|  |  |            { required: true, trigger: "blur", validator: validatePassword },
 | 
	
		
			
				|  |  |          ],
 | 
	
		
			
				|  |  | +        verificationCode: [
 | 
	
		
			
				|  |  | +          { required: true, trigger: "blur", validator: validateVerificationCode },
 | 
	
		
			
				|  |  | +        ]
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |        loading: false,
 | 
	
		
			
				|  |  |        passwordType: "password",
 | 
	
		
			
				|  |  |        redirect: undefined,
 | 
	
		
			
				|  |  |        loginCheck: "login",
 | 
	
		
			
				|  |  |        configInfor: null,
 | 
	
		
			
				|  |  | +      verificationCodeimg: '', // 图形验证码
 | 
	
		
			
				|  |  | +      verificationCodeimgID: '', // 图形验证码ID
 | 
	
		
			
				|  |  | +      verificationCodeLoading: true, // 图形验证码的flag
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    watch: {
 | 
	
	
		
			
				|  | @@ -158,13 +187,13 @@ export default {
 | 
	
		
			
				|  |  |          if (valid) {
 | 
	
		
			
				|  |  |            this.loading = true;
 | 
	
		
			
				|  |  |            let MethodName = "login_control-Login";
 | 
	
		
			
				|  |  | -          let UserCode = "";
 | 
	
		
			
				|  |  | -          let UserType = "";
 | 
	
		
			
				|  |  | -          let SessionID = "";
 | 
	
		
			
				|  |  |            let data = {
 | 
	
		
			
				|  |  |              user_type: this.loginForm.type,
 | 
	
		
			
				|  |  |              user_name: this.loginForm.username,
 | 
	
		
			
				|  |  | -            password: this.loginForm.password,
 | 
	
		
			
				|  |  | +            is_password_md5: "true",
 | 
	
		
			
				|  |  | +            password: md5(this.loginForm.password).toUpperCase(),
 | 
	
		
			
				|  |  | +            verification_code_image_text: this.loginForm.verificationCode,
 | 
	
		
			
				|  |  | +            verification_code_image_id: this.verificationCodeimgID
 | 
	
		
			
				|  |  |            };
 | 
	
		
			
				|  |  |            getStaticContent(MethodName, data)
 | 
	
		
			
				|  |  |              .then((res) => {
 | 
	
	
		
			
				|  | @@ -173,6 +202,7 @@ export default {
 | 
	
		
			
				|  |  |              })
 | 
	
		
			
				|  |  |              .catch(() => {
 | 
	
		
			
				|  |  |                this.loading = false;
 | 
	
		
			
				|  |  | +              this.getVerificationCodeimg()
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |            this.loading = false;
 | 
	
	
		
			
				|  | @@ -183,10 +213,29 @@ export default {
 | 
	
		
			
				|  |  |      async _getConfig() {
 | 
	
		
			
				|  |  |        this.configInfor = await getConfigInfor();
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +    // 图形验证码
 | 
	
		
			
				|  |  | +    getVerificationCodeimg(){
 | 
	
		
			
				|  |  | +        if(!this.verificationCodeLoading) return
 | 
	
		
			
				|  |  | +        this.verificationCodeLoading = false
 | 
	
		
			
				|  |  | +        let MethodName = "login_control-GetVerificationCodeImage";
 | 
	
		
			
				|  |  | +        let data = {};
 | 
	
		
			
				|  |  | +        getStaticContent(MethodName, data).then((res) => {
 | 
	
		
			
				|  |  | +            if(res){
 | 
	
		
			
				|  |  | +                this.verificationCodeLoading = true
 | 
	
		
			
				|  |  | +                this.verificationCodeimgID = res.image_id
 | 
	
		
			
				|  |  | +                this.verificationCodeimg = 'data:image/jpeg;base64,'+res.image_content_base64
 | 
	
		
			
				|  |  | +            }else{
 | 
	
		
			
				|  |  | +                this.verificationCodeLoading = true;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }).catch(() => {
 | 
	
		
			
				|  |  | +            this.verificationCodeLoading = true;
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    mounted() {
 | 
	
		
			
				|  |  | -    this._getConfig();
 | 
	
		
			
				|  |  |      removeSession("SysList");
 | 
	
		
			
				|  |  | +    this._getConfig();
 | 
	
		
			
				|  |  | +    this.getVerificationCodeimg()
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  </script>
 | 
	
	
		
			
				|  | @@ -437,5 +486,25 @@ $fc: rgb(24, 144, 255);
 | 
	
		
			
				|  |  |      width: 100%;
 | 
	
		
			
				|  |  |      vertical-align: bottom;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | +}   
 | 
	
		
			
				|  |  | +.verificationCode-box{
 | 
	
		
			
				|  |  | +    display: flex;
 | 
	
		
			
				|  |  | +    >div{
 | 
	
		
			
				|  |  | +        flex: 1;
 | 
	
		
			
				|  |  | +        max-width: 171px;
 | 
	
		
			
				|  |  | +        &.verificationCode-img{
 | 
	
		
			
				|  |  | +            min-width: 90px;
 | 
	
		
			
				|  |  | +            height: 34px;
 | 
	
		
			
				|  |  | +            margin-left: 5px;
 | 
	
		
			
				|  |  | +            flex: initial;
 | 
	
		
			
				|  |  | +            background: #C5C5C5;
 | 
	
		
			
				|  |  | +            border-radius: 4px;    
 | 
	
		
			
				|  |  | +            overflow: hidden;
 | 
	
		
			
				|  |  | +            >img{
 | 
	
		
			
				|  |  | +                height: 34px;
 | 
	
		
			
				|  |  | +                cursor: pointer;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  </style>
 |