1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <script setup lang="ts">
- import { reactive, ref } from 'vue'
- import type { FormInstance, FormRules } from 'element-plus'
- import { User, View, Lock } from '@element-plus/icons-vue'
- const ruleFormRef = ref<FormInstance>()
- const ruleForm = reactive({
- username: '',
- password: ''
- })
- const validatePass = (rule: any, value: any, callback: any) => {
- if (value === '') {
- callback(new Error('请输入密码'))
- } else {
- callback()
- }
- }
- const rules = reactive<FormRules>({
- username: [{ required: true, message: '请输入用户账号', trigger: 'blur' }],
- password: [{ required: true, validator: validatePass, trigger: 'blur' }],
- })
- const submitForm = (formEl: FormInstance | undefined) => {
- if (!formEl) return
- formEl.validate((valid) => {
- if (valid) {
- console.log(ruleForm);
- } else {
- console.log('error submit!')
- return false
- }
- })
- }
- let passType = ref('password')
- const changeType = ()=>{
- passType.value = passType.value === 'password'?'text':'password'
- }
- </script>
- <template>
- <div class="login">
- <div class="content">
- <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules">
- <el-form-item label="账号:" prop="username">
- <el-input v-model="ruleForm.username" type="text" :prefix-icon="User" />
- </el-form-item>
- <el-form-item label="密码:" prop="password">
- <el-input v-model="ruleForm.password" :type="passType" :prefix-icon="Lock" autocomplete="off">
- <template #suffix>
- <span class="view">
- <el-icon class="el-input__icon" @click="changeType">
- <View />
- </el-icon>
- </span>
- </template>
- </el-input>
- </el-form-item>
- <el-form-item>
- <el-button class="submit" type="primary" @click="submitForm(ruleFormRef)">登录</el-button>
- </el-form-item>
- </el-form>
- </div>
- </div>
- </template>
- <style scoped lang="scss">
- @import './login.scss'
- </style>
|