2025-04-14 14:29:21 +08:00
|
|
|
<template>
|
|
|
|
<view class="content">
|
|
|
|
<view
|
|
|
|
style="margin-top: 50rpx; display: flex; align-items: center; padding-right: 50rpx"
|
|
|
|
>
|
|
|
|
<view style="margin-right: 50rpx">账号</view>
|
|
|
|
<u-input v-model="phone" border placeholder="账号"></u-input>
|
|
|
|
</view>
|
|
|
|
<view
|
|
|
|
style="margin-top: 50rpx; display: flex; align-items: center; padding-right: 50rpx"
|
|
|
|
>
|
|
|
|
<view style="margin-right: 50rpx">账号</view>
|
|
|
|
<u-input v-model="pwd" border placeholder="密码"></u-input>
|
|
|
|
</view>
|
|
|
|
<u-button type="primary" @click="loginFn" style="margin-top: 50rpx">登陆</u-button>
|
|
|
|
<u-button type="primary" @click="login1Fn" style="margin-top: 50rpx"
|
2025-04-15 10:07:11 +08:00
|
|
|
>登陆13800451500管理员</u-button
|
2025-04-14 14:29:21 +08:00
|
|
|
>
|
|
|
|
<u-button type="primary" @click="login2Fn" style="margin-top: 50rpx"
|
2025-04-15 10:07:11 +08:00
|
|
|
>登陆18174010562清洁工</u-button
|
2025-04-14 14:29:21 +08:00
|
|
|
>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
|
|
import bcrypt from "bcryptjs";
|
|
|
|
import { loginApi } from "@/api/apiList";
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
phone: "13800451500",
|
|
|
|
pwd: "123456",
|
|
|
|
};
|
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
// console.log("%c%s", "color:red", "mounted--");
|
|
|
|
uni.hideLoading(); // 关闭 Loading
|
|
|
|
},
|
|
|
|
onLoad() {},
|
|
|
|
methods: {
|
|
|
|
login1Fn() {
|
|
|
|
this.phone = "13800451500";
|
|
|
|
this.pwd = "123456";
|
2025-04-15 10:07:11 +08:00
|
|
|
|
|
|
|
const normalTabBar = [
|
|
|
|
{
|
|
|
|
pagePath: "/pages/index/planList",
|
|
|
|
iconPath: "/static/tab/list.png",
|
|
|
|
selectedIconPath: "/static/tab/list_cur.png",
|
|
|
|
text: "计划",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
pagePath: "/pages/index/index",
|
|
|
|
iconPath: "/static/tab/home.png",
|
|
|
|
selectedIconPath: "/static/tab/home_cur.png",
|
|
|
|
text: "首页",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
pagePath: "/pages/user/index",
|
|
|
|
iconPath: "/static/tab/my.png",
|
|
|
|
selectedIconPath: "/static/tab/my_cur.png",
|
|
|
|
text: "设置",
|
|
|
|
},
|
|
|
|
];
|
|
|
|
this.$u.vuex("vuex_tabbar", normalTabBar);
|
|
|
|
this.loginFn(false);
|
2025-04-14 14:29:21 +08:00
|
|
|
},
|
|
|
|
login2Fn() {
|
|
|
|
this.phone = "18174010562";
|
|
|
|
this.pwd = "123456";
|
2025-04-15 10:07:11 +08:00
|
|
|
|
|
|
|
const adminTabBar = [
|
|
|
|
{
|
|
|
|
pagePath: "/pages/adminHome/index",
|
|
|
|
iconPath: "/static/tab/list.png",
|
|
|
|
selectedIconPath: "/static/tab/list_cur.png",
|
|
|
|
text: "首页",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
pagePath: "/pages/adminNfc/index",
|
|
|
|
iconPath: "/static/tab/list.png",
|
|
|
|
selectedIconPath: "/static/tab/list_cur.png",
|
|
|
|
text: "nfc写入",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
pagePath: "/pages/adminMy/index",
|
|
|
|
iconPath: "/static/tab/list.png",
|
|
|
|
selectedIconPath: "/static/tab/list_cur.png",
|
|
|
|
text: "我的",
|
|
|
|
},
|
|
|
|
];
|
|
|
|
this.$u.vuex("vuex_tabbar", adminTabBar);
|
|
|
|
this.loginFn(true);
|
2025-04-14 14:29:21 +08:00
|
|
|
},
|
2025-04-15 10:07:11 +08:00
|
|
|
// 路径格式化方法
|
|
|
|
normalizePath(path) {
|
|
|
|
return path.startsWith("/") ? path : `/${path}`;
|
|
|
|
},
|
|
|
|
|
|
|
|
async loginFn(type) {
|
2025-04-14 14:29:21 +08:00
|
|
|
let salt = bcrypt.genSaltSync(12);
|
|
|
|
let req = {
|
|
|
|
phone: this.phone,
|
|
|
|
password: bcrypt.hashSync(this.pwd, salt),
|
|
|
|
};
|
|
|
|
const res = await loginApi(req);
|
|
|
|
if (!res.succeed) {
|
|
|
|
uni.showToast({
|
|
|
|
title: res.error || "登录失败",
|
|
|
|
icon: "none",
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
let token = res.data;
|
|
|
|
uni.setStorageSync("token", "Bearer " + token);
|
2025-04-15 10:07:11 +08:00
|
|
|
let userRole = "admin";
|
|
|
|
if (type) {
|
|
|
|
uni.switchTab({
|
|
|
|
url: `/pages/index/planList`,
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
uni.switchTab({
|
|
|
|
url: `/pages/adminHome/index`,
|
|
|
|
});
|
|
|
|
}
|
2025-04-14 14:29:21 +08:00
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.content {
|
|
|
|
height: 100vh; // 确保容器有明确高度
|
|
|
|
// background-color: skyblue;
|
|
|
|
overflow: hidden;
|
|
|
|
padding-bottom: 100rpx;
|
|
|
|
}
|
|
|
|
</style>
|