yn_img_tools_app/src/pages/login/index.vue

140 lines
3.3 KiB
Vue

<template>
<!-- 登录页面 -->
<view class="login-container">
<!-- 背景图 -->
<up-image
src="../../static/image/bg_new.png"
height="240"
width="335"
mode="scaleToFill"
style="margin-top: 30rpx"
/>
<!-- 表单 -->
<up-form
:model="opinionModel"
ref="loginModelRef"
:rules="opinionRules"
labelWidth="auto"
class="opinion-form"
>
<up-form-item prop="username">
<up-input
clearable
prefixIcon="account"
placeholder="填输入登录手机号"
v-model="opinionModel.username"
/>
</up-form-item>
<up-form-item prop="password">
<up-input
clearable
prefixIcon="lock"
placeholder="填输入密码"
v-model="opinionModel.password"
/>
</up-form-item>
<up-form-item>
<up-button type="primary" text="登录" @tap="onSubmitLogin" shape="circle" />
</up-form-item>
</up-form>
</view>
</template>
<script setup>
import { ref } from 'vue'
import { loginApi } from '@/services/login.js'
// 表单数据源
const opinionModel = ref({
userName: '',
password: '',
})
const opinionRules = ref({
username: [
{
type: 'string',
required: true,
message: '请填写登录手机号',
trigger: ['blur', 'change'],
},
// {
// pattern: /^[\u4e00-\u9fa5]{2,6}$/,
// // 正则检验前先将值转为字符串
// transform(value) {
// return String(value)
// },
// message: '请填写正确的姓名',
// },
],
password: [
{
type: 'string',
required: true,
message: '请填写登录密码',
trigger: ['blur', 'change'],
},
],
})
// 表单实例
const loginModelRef = ref(null)
// 是否提交成功
const isSuccess = ref(false)
// 提示弹框
const showModal = ref(false)
// 提交按钮
const onSubmitLogin = () => {
loginModelRef.value
.validate()
.then(async (valid) => {
if (valid) {
uni.$u.toast('登录成功')
setTimeout(() => {
// uni.switchTab({ url: '/pages/workbenches/index' })
uni.switchTab({ url: '/pages/workbenches/index' })
}, 500)
}
})
.catch(() => {
// 处理验证错误
})
}
// 继续填写
const onContinueFill = () => {
isSuccess.value = false
}
// 退出
const onExit = () => {
showModal.value = true
}
// 确认退出
const onConfirm = () => {
uni.redirectTo({ url: '/pages/index/index' })
}
</script>
<style lang="scss" scoped>
.login-container {
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
.opinion-form {
width: 90%;
margin-top: 10rpx;
}
}
::v-deep .u-form-item__body__right__message {
margin-left: 0 !important;
}
</style>