11 changed files with 504 additions and 235 deletions
			
			
		| @ -0,0 +1,155 @@ | |||||
|  | <template> | ||||
|  |   <div class="aui-wrapper aui-page__login"> | ||||
|  |     <div class="aui-content__wrapper">WorkWorkWorkWorkWork</div> | ||||
|  |     <div class="aui-content__wrapper"> | ||||
|  |       <main class="aui-content"> | ||||
|  |         <div class="login-header"> | ||||
|  |           <h2 class="login-brand">{{ $t('brand.lg') }}</h2> | ||||
|  |         </div> | ||||
|  |         <div class="login-body"> | ||||
|  |           <h3 class="login-title">{{ $t('login.title') }}</h3> | ||||
|  |           <el-form :model="dataForm" | ||||
|  |                    :rules="dataRule" | ||||
|  |                    ref="dataForm" | ||||
|  |                    @keyup.enter.native="dataFormSubmitHandle()" | ||||
|  |                    status-icon> | ||||
|  |             <el-form-item> | ||||
|  |               <el-select v-model="$i18n.locale" | ||||
|  |                          class="w-percent-100"> | ||||
|  |                 <el-option v-for="(val, key) in i18nMessages" | ||||
|  |                            :key="key" | ||||
|  |                            :label="val._lang" | ||||
|  |                            :value="key"></el-option> | ||||
|  |               </el-select> | ||||
|  |             </el-form-item> | ||||
|  |             <el-form-item prop="phone"> | ||||
|  |               <el-input v-model="dataForm.phone" | ||||
|  |                         placeholder="手机号"> | ||||
|  |                 <span slot="prefix" | ||||
|  |                       class="el-input__icon"> | ||||
|  |                   <svg class="icon-svg" | ||||
|  |                        aria-hidden="true"> | ||||
|  |                     <use xlink:href="#icon-user"></use> | ||||
|  |                   </svg> | ||||
|  |                 </span> | ||||
|  |               </el-input> | ||||
|  |             </el-form-item> | ||||
|  |             <el-form-item prop="password"> | ||||
|  |               <el-input v-model="dataForm.password" | ||||
|  |                         type="password" | ||||
|  |                         :placeholder="$t('login.password')"> | ||||
|  |                 <span slot="prefix" | ||||
|  |                       class="el-input__icon"> | ||||
|  |                   <svg class="icon-svg" | ||||
|  |                        aria-hidden="true"> | ||||
|  |                     <use xlink:href="#icon-lock"></use> | ||||
|  |                   </svg> | ||||
|  |                 </span> | ||||
|  |               </el-input> | ||||
|  |             </el-form-item> | ||||
|  |             <el-form-item prop="captcha"> | ||||
|  |               <el-row :gutter="20"> | ||||
|  |                 <el-col :span="14"> | ||||
|  |                   <el-input v-model="dataForm.captcha" | ||||
|  |                             :placeholder="$t('login.captcha')"> | ||||
|  |                     <span slot="prefix" | ||||
|  |                           class="el-input__icon"> | ||||
|  |                       <svg class="icon-svg" | ||||
|  |                            aria-hidden="true"> | ||||
|  |                         <use xlink:href="#icon-safetycertificate"></use> | ||||
|  |                       </svg> | ||||
|  |                     </span> | ||||
|  |                   </el-input> | ||||
|  |                 </el-col> | ||||
|  |                 <el-col :span="10" | ||||
|  |                         class="login-captcha"> | ||||
|  |                   <img :src="captchaPath" | ||||
|  |                        @click="getCaptcha()"> | ||||
|  |                 </el-col> | ||||
|  |               </el-row> | ||||
|  |             </el-form-item> | ||||
|  |             <el-form-item> | ||||
|  |               <el-button type="primary" | ||||
|  |                          @click="dataFormSubmitHandle()" | ||||
|  |                          class="w-percent-100">{{ $t('login.title') }}</el-button> | ||||
|  |             </el-form-item> | ||||
|  |           </el-form> | ||||
|  |         </div> | ||||
|  |         <div class="login-footer"> | ||||
|  |           <p> | ||||
|  |             <a href="https://demo.cloud.renren.io/renren-cloud" | ||||
|  |                target="_blank">{{ $t('login.demo') }}</a> | ||||
|  |           </p> | ||||
|  |           <!-- 2020 © renren.io --> | ||||
|  |           <p><a href="https://www.renren.io/" | ||||
|  |                target="_blank">{{ $t('login.copyright') }}</a></p> | ||||
|  |         </div> | ||||
|  |       </main> | ||||
|  |     </div> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script> | ||||
|  | import Cookies from 'js-cookie' | ||||
|  | import debounce from 'lodash/debounce' | ||||
|  | import { messages } from '@/i18n' | ||||
|  | import { getUUID } from '@/utils' | ||||
|  | export default { | ||||
|  |   data () { | ||||
|  |     return { | ||||
|  |       i18nMessages: messages, | ||||
|  |       captchaPath: '', | ||||
|  |       dataForm: { | ||||
|  |         app: 'oper', | ||||
|  |         client: 'web', | ||||
|  |         username: '', | ||||
|  |         phone: '', | ||||
|  |         password: '', | ||||
|  |         uuid: '', | ||||
|  |         captcha: '' | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   computed: { | ||||
|  |     dataRule () { | ||||
|  |       return { | ||||
|  |         phone: [ | ||||
|  |           { required: true, message: this.$t('validate.required'), trigger: 'blur' } | ||||
|  |         ], | ||||
|  |         password: [ | ||||
|  |           { required: true, message: this.$t('validate.required'), trigger: 'blur' } | ||||
|  |         ], | ||||
|  |         captcha: [ | ||||
|  |           { required: true, message: this.$t('validate.required'), trigger: 'blur' } | ||||
|  |         ] | ||||
|  |       } | ||||
|  |     } | ||||
|  |   }, | ||||
|  |   created () { | ||||
|  |     this.getCaptcha() | ||||
|  |   }, | ||||
|  |   methods: { | ||||
|  |     // 获取验证码 | ||||
|  |     getCaptcha () { | ||||
|  |       this.dataForm.uuid = getUUID() | ||||
|  |       this.captchaPath = `${window.SITE_CONFIG['apiURL']}/auth/login/captcha?uuid=${this.dataForm.uuid}` | ||||
|  |     }, | ||||
|  |     // 表单提交 | ||||
|  |     dataFormSubmitHandle: debounce(function() { | ||||
|  |       this.$refs['dataForm'].validate((valid) => { | ||||
|  |         if (!valid) { | ||||
|  |           return false | ||||
|  |         } | ||||
|  |         this.$http.post('/auth/login/operweb/loginbypassword', this.dataForm).then(({ data: res }) => { | ||||
|  |           if (res.code !== 0) { | ||||
|  |             this.getCaptcha() | ||||
|  |             return this.$message.error(res.msg) | ||||
|  |           } | ||||
|  |           Cookies.set('token', res.data.token) | ||||
|  |           this.$router.replace({ name: 'home' }) | ||||
|  |         }).catch(() => { }) | ||||
|  |       }) | ||||
|  |     }, 1000, { 'leading': true, 'trailing': false }) | ||||
|  |   } | ||||
|  | } | ||||
|  | </script> | ||||
					Loading…
					
					
				
		Reference in new issue