You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
2.9 KiB
Vue

<template>
<view class="content min-h-dvh flex items-center justify-center px-4">
<wd-form class="mb-36" ref="form" :model="model">
<wd-cell-group border>
<wd-input label="用户名" label-width="100px" prop="username" clearable v-model="model.username" placeholder="请输入用户名"
:rules="[{ required: true, message: '请填写用户名' }]" />
<wd-input label="密码" label-width="100px" prop="password" show-password clearable v-model="model.password"
placeholder="请输入密码" :rules="[{ required: true, message: '请填写密码' }]" />
</wd-cell-group>
<view class="footer mt-4">
<wd-button :loading="loading" type="primary" size="medium" @click="handleSubmit" block>登录</wd-button>
</view>
</wd-form>
</view>
</template>
<script setup>
import { ref } from 'vue'
import user from '@/api/modules/user.js'
import utils from '@/utils/utils.js'
import md5 from 'js-md5';
uni.clearStorage(); // 预防本地数据错误
const model = ref({
username: "",
password: "",
})
const loading = ref(false)
const form = ref(null)
// if (token) {
// const user_info = uni.getStorageSync("user_info");
// if (user_info.type == 1) {
// utils.toUrl("/store/index/index")
// }
// } else {
// utils.toUrl("/pages/login/index")
// }
function handleSubmit() {
loading.value = true
form.value
.validate()
.then(({ valid, errors }) => {
if (valid) {
user.login({
...model.value,
password: md5(model.value.password)
}).then(res => {
if (res.code == 0) {
uni.setStorageSync("token", res.data.access_token);
uni.setStorageSync("user_info", res.data.user_info);
uni.showToast({
icon: "none",
title: "登录成功",
});
if (res.data.user_info.type == 1) {
utils.toUrl("/store/index/index", "redirectTo")
uni.setStorageSync("store_info", res.data.user_info);
} else if (res.data.user_info.type == 3) {
uni.setStorageSync("mall_token", res.data.access_token);
uni.setStorageSync("mall_info", res.data.user_info);
utils.toUrl("/mall/index/index", "redirectTo")
} else {
uni.showToast({
title: '登录平台开发中 ···',
icon: 'none'
})
}
loading.value = false
} else {
uni.showToast({
title: res.message,
icon: 'none'
})
loading.value = false
}
loading.value = false
})
} else {
loading.value = false
}
})
.catch((error) => {
console.log(error, 'error')
loading.value = false
})
}
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.text-area {
display: flex;
justify-content: center;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
</style>