From 15792ad8baea4ab886dbfc58009847f26de45df8 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期五, 02 八月 2024 17:55:19 +0800 Subject: [PATCH] 1、利用viewport完成PC端页面响应式布局,其他端还未适配 2、基本完成语言大模型页面布局及部分功能 3、实现对于侧边栏图标在首页与其他页面时不同的展示风格 4、使用压缩后的背景图与首页gif(效果不好,跳转路由后仍会出现短暂背景图片未加载出情况) 5、修改项目浏览器页签图标 --- src/views/user/LoginAccount.vue | 152 +++++++++++++++++++++++++++++--------------------- 1 files changed, 87 insertions(+), 65 deletions(-) diff --git a/src/views/user/LoginAccount.vue b/src/views/user/LoginAccount.vue index 1ff9a73..432e6be 100644 --- a/src/views/user/LoginAccount.vue +++ b/src/views/user/LoginAccount.vue @@ -1,32 +1,34 @@ <template> - <div> - <a-form-model ref="form" :model="model" :rules="validatorRules"> - <a-form-model-item required prop="username"> - <a-input v-model="model.username" size="large" placeholder="璇疯緭鍏ュ笎鎴峰悕 / admin"> - <a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }"/> - </a-input> - </a-form-model-item> - <a-form-model-item required prop="password"> - <a-input v-model="model.password" size="large" type="password" autocomplete="false" placeholder="璇疯緭鍏ュ瘑鐮� / 123456"> - <a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }"/> - </a-input> - </a-form-model-item> + <a-form-model ref="form" :model="model" :rules="validatorRules"> + <a-form-model-item required prop="username"> + <div class="login-input"> + <img src="../../assets/icons/account.png" style=""> + <a-input v-model="model.username" size="large" placeholder="鐢ㄦ埛鍚�" ref="inputRef" @focus="inputFocus" autocomplete="off"/> + </div> + </a-form-model-item> + <a-form-model-item required prop="password"> + <div class="login-input"> + <img src="../../assets/icons/password.png"> + <a-input v-model="model.password" size="large" type="password" autocomplete="off" + placeholder="瀵嗙爜"/> + </div> + </a-form-model-item> - <a-row :gutter="0"> - <a-col :span="16"> - <a-form-model-item required prop="inputCode"> - <a-input v-model="model.inputCode" size="large" type="text" placeholder="璇疯緭鍏ラ獙璇佺爜"> - <a-icon slot="prefix" type="smile" :style="{ color: 'rgba(0,0,0,.25)' }"/> - </a-input> - </a-form-model-item> - </a-col> - <a-col :span="8" style="text-align: right"> - <img v-if="requestCodeSuccess" style="margin-top: 2px;" :src="randCodeImage" @click="handleChangeCheckCode"/> - <img v-else style="margin-top: 2px;" src="../../assets/checkcode.png" @click="handleChangeCheckCode"/> - </a-col> - </a-row> - </a-form-model> - </div> + <a-row :gutter="0" class="code-row-container"> + <a-col :span="16"> + <a-form-model-item required prop="inputCode"> + <div class="login-input"> + <img src="../../assets/icons/inputCode.png"> + <a-input v-model="model.inputCode" size="large" type="text" placeholder="璇疯緭鍏ラ獙璇佺爜"/> + </div> + </a-form-model-item> + </a-col> + <a-col :span="8" class="code-col-container"> + <img v-if="requestCodeSuccess" :src="randCodeImage" @click="handleChangeCheckCode"/> + <img v-else src="../../assets/checkcode.png" @click="handleChangeCheckCode"/> + </a-col> + </a-row> + </a-form-model> </template> <script> @@ -36,18 +38,18 @@ export default { name: 'LoginAccount', - data(){ + data() { return { requestCodeSuccess: false, randCodeImage: '', currdatetime: '', loginType: 0, - model:{ + model: { username: 'admin', password: '123456', inputCode: '' }, - validatorRules:{ + validatorRules: { username: [ { required: true, message: '璇疯緭鍏ョ敤鎴峰悕!' }, { validator: this.handleUsernameOrEmail } @@ -63,29 +65,29 @@ } }, created() { - this.handleChangeCheckCode(); + this.handleChangeCheckCode() }, - methods:{ + methods: { ...mapActions(['Login']), /**鍒锋柊楠岃瘉鐮�*/ - handleChangeCheckCode(){ - this.currdatetime = new Date().getTime(); + handleChangeCheckCode() { + this.currdatetime = new Date().getTime() this.model.inputCode = '' - getAction(`/sys/randomImage/${this.currdatetime}`).then(res=>{ - if(res.success){ + getAction(`/sys/randomImage/${this.currdatetime}`).then(res => { + if (res.success) { this.randCodeImage = res.result - this.requestCodeSuccess=true - }else{ + this.requestCodeSuccess = true + } else { this.$message.error(res.message) - this.requestCodeSuccess=false + this.requestCodeSuccess = false } - }).catch(()=>{ - this.requestCodeSuccess=false + }).catch(() => { + this.requestCodeSuccess = false }) }, // 鍒ゆ柇鐧诲綍绫诲瀷 - handleUsernameOrEmail (rule, value, callback) { - const regex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/; + handleUsernameOrEmail(rule, value, callback) { + const regex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/ if (regex.test(value)) { this.loginType = 0 } else { @@ -98,63 +100,83 @@ * @param arr * @param callback */ - validateFields(arr, callback){ + validateFields(arr, callback) { let promiseArray = [] - for(let item of arr){ + for (let item of arr) { let p = new Promise((resolve, reject) => { - this.$refs['form'].validateField(item, (err)=>{ - if(!err){ - resolve(); - }else{ - reject(err); + this.$refs['form'].validateField(item, (err) => { + if (!err) { + resolve() + } else { + reject(err) } }) - }); + }) promiseArray.push(p) } - Promise.all(promiseArray).then(()=>{ + Promise.all(promiseArray).then(() => { callback() - }).catch(err=>{ + }).catch(err => { callback(err) }) }, - acceptUsername(username){ + acceptUsername(username) { this.model['username'] = username }, //璐﹀彿瀵嗙爜鐧诲綍 - handleLogin(rememberMe){ - this.validateFields([ 'username', 'password', 'inputCode' ], (err)=>{ - if(!err){ + handleLogin(rememberMe) { + this.validateFields(['username', 'password', 'inputCode'], (err) => { + if (!err) { let loginParams = { username: this.model.username, password: this.model.password, captcha: this.model.inputCode, checkKey: this.currdatetime, - remember_me: rememberMe, + remember_me: rememberMe } - console.log("鐧诲綍鍙傛暟", loginParams) + console.log('鐧诲綍鍙傛暟', loginParams) this.Login(loginParams).then((res) => { this.$emit('success', res.result) }).catch((err) => { //update-begin-author: taoyan date:20220425 for: 鐧诲綍椤甸潰锛屽綋杈撳叆楠岃瘉鐮侀敊璇椂锛岄獙璇佺爜鍥剧墖瑕佸埛鏂颁竴涓嬶紝鑰屼笉鏄繚鎸佹棫鐨勯獙璇佺爜鍥剧墖涓嶅彉 #41 - if(err && err.code===412){ - this.handleChangeCheckCode(); + if (err && err.code === 412) { + this.handleChangeCheckCode() } //update-end-author: taoyan date:20220425 for: 鐧诲綍椤甸潰锛屽綋杈撳叆楠岃瘉鐮侀敊璇椂锛岄獙璇佺爜鍥剧墖瑕佸埛鏂颁竴涓嬶紝鑰屼笉鏄繚鎸佹棫鐨勯獙璇佺爜鍥剧墖涓嶅彉 #41 this.$emit('fail', err) - }); - }else{ + }) + } else { this.$emit('validateFail') } }) - } + }, + inputFocus() { + console.log('瑙﹀彂focus', this.$refs.inputRef.$el.style) + this.$refs.inputRef.$el.style = 'background-color:#f00' + } } } </script> -<style scoped> +<style scoped lang="less"> + .code-row-container { + /*height: 40px;*/ + .code-col-container { + height: 55px; + display: flex; + justify-content: right; + align-items: center; + padding-left: 15px; + + img { + height: 45px; + width: 100%; + border-radius: 15px; + } + } + } </style> \ No newline at end of file -- Gitblit v1.9.3