From 0b3c4a0ffa0ff53e892e5fdacc7c4ac196393a70 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Tue, 16 Dec 2025 15:32:48 +0800
Subject: [PATCH] feat:部署微信小程序测试
---
src/pages/login/index.vue | 497 +++++++++++++++++++++++++++---------------------------
1 files changed, 250 insertions(+), 247 deletions(-)
diff --git a/src/pages/login/index.vue b/src/pages/login/index.vue
index e8db5f3..cd71dcf 100644
--- a/src/pages/login/index.vue
+++ b/src/pages/login/index.vue
@@ -1,281 +1,284 @@
<!-- 登录页 -->
<template>
- <view class="login-form-wrap">
- <image class="logo" :src="logoSvg" />
- <div class="title">掌控智飞</div>
- <div class="user-name">
- <image :src="usernameSvg" />
- <input v-model="loginForm.username" placeholder="请输入用户名" />
- </div>
- <div class="pass-word">
- <image :src="passwordSvg" />
- <input v-model="loginForm.password" type="password" placeholder="请输入密码" />
- </div>
- <div class="remember-password">
- <label>
- <checkbox-group @change="toggleRemember">
- <checkbox :checked="rememberPassword" color="#1D6FE9" style="transform:scale(0.7)" />
- </checkbox-group>
- 记住密码
- </label>
- </div>
+ <view class="login-form-wrap">
+ <image class="logo" :src="logoSvg" />
+ <div class="title">掌控智飞</div>
+ <div class="user-name">
+ <image :src="usernameSvg" />
+ <input v-model="loginForm.username" placeholder="请输入用户名" />
+ </div>
+ <div class="pass-word">
+ <image :src="passwordSvg" />
+ <input
+ v-model="loginForm.password"
+ type="password"
+ placeholder="请输入密码"
+ />
+ </div>
+ <div class="remember-password">
+ <label>
+ <checkbox-group @change="toggleRemember">
+ <checkbox
+ :checked="rememberPassword"
+ color="#1D6FE9"
+ style="transform: scale(0.7)"
+ />
+ </checkbox-group>
+ 记住密码
+ </label>
+ </div>
- <button class="login-btn" :style="[inputStyle]" @tap="submit">
- 登录
- </button>
-
- <image class="lowerRightCorner" :src="droneSvg" />
- </view>
+ <button class="login-btn" :style="[inputStyle]" @tap="submit">登录</button>
+ <image class="lowerRightCorner" :src="droneSvg" />
+ </view>
</template>
<script setup>
- import md5 from "js-md5";
- import {
- loginByUsername
- } from "@/api/user/index.js";
- import {
- useUserStore
- } from "@/store/index.js";
- import droneSvg from '@/static/images/login/droneSvg.svg'
- import usernameSvg from '@/static/images/login/username.svg'
- import passwordSvg from '@/static/images/login/password.svg'
- import logoSvg from '@/static/images/login/logo.svg'
- import {
- HOME_PATH,
- LOGIN_PATH,
- removeQueryString
- } from "@/router";
- import { onMounted } from 'vue';
+import { getAssetsImage } from "@/utils/index.js";
+import md5 from "js-md5";
+import { loginByUsername } from "@/api/user/index.js";
+import { useUserStore } from "@/store/index.js";
- const userStore = useUserStore();
- const loginForm = ref({
- username: "",
- password: "",
- });
- const rememberPassword = ref(false);
- const inputStyle = computed(() => {
- const style = {};
- if (loginForm.value.username && loginForm.value.password) {
- style.color = "#fff";
- style.backgroundColor = '#1D6FE9';
- }
- return style;
- });
- let redirect = HOME_PATH;
- function toggleRemember(e) {
- rememberPassword.value = e.detail.value.length > 0;
- }
+import { HOME_PATH, LOGIN_PATH, removeQueryString } from "@/router";
+import { onMounted } from "vue";
- async function submit() {
- if (!loginForm.value.username.trim()) {
- uni.showToast({
- title: "请输入用户名",
- icon: "none",
- duration: 2000
- });
- return;
- }
-
- if (!loginForm.value.password.trim()) {
- uni.showToast({
- title: "请输入密码",
- icon: "none",
- duration: 2000
- });
- return;
- }
- let userInfo = {
- tenantId: "000000",
- deptId: "",
- roleId: "",
- username: loginForm.value.username,
- password: loginForm.value.password,
- type: "account",
- code: "",
- key: "",
- };
+const droneSvg = getAssetsImage("/images/login/droneSvg.svg");
- if (rememberPassword.value) {
- uni.setStorageSync('rememberedUser', {
- username: loginForm.value.username,
- password: loginForm.value.password
- });
- } else {
- uni.removeStorageSync('rememberedUser');
- }
+const usernameSvg = getAssetsImage("/images/login/username.svg");
+const passwordSvg = getAssetsImage("/images/login/password.svg");
+const logoSvg = getAssetsImage("/images/login/logo.svg");
- try {
- const res = await loginByUsername(
- userInfo.tenantId,
- userInfo.deptId,
- userInfo.roleId,
- userInfo.username,
- md5(userInfo.password),
- userInfo.type,
- userInfo.key,
- userInfo.code
- );
- userStore.setUserInfo(res.data);
- uni.reLaunch({
- url: "/pages/map/index",
- });
- } catch (error) {
- const errorMsg =error.data?.error_description !=="Bad credentials" ? error.data?.error_description: "登录失败,请重试";
- uni.showToast({
- title: errorMsg,
- icon: "none",
- duration: 2000
- });
- }
- }
- // 从本地存储加载记住的密码
- onMounted(() => {
- const savedUserInfo = uni.getStorageSync('rememberedUser');
- console.log('记住密码',savedUserInfo)
- if (savedUserInfo) {
- loginForm.value.username = savedUserInfo.username;
- loginForm.value.password = savedUserInfo.password;
- rememberPassword.value = true;
- }
- });
- onLoad((options) => {
- if (options.redirect && removeQueryString(options.redirect) !== LOGIN_PATH) {
- redirect = decodeURIComponent(options.redirect);
- }
- });
+const userStore = useUserStore();
+const loginForm = ref({
+ username: "",
+ password: "",
+});
+const rememberPassword = ref(false);
+const inputStyle = computed(() => {
+ const style = {};
+ if (loginForm.value.username && loginForm.value.password) {
+ style.color = "#fff";
+ style.backgroundColor = "#1D6FE9";
+ }
+ return style;
+});
+let redirect = HOME_PATH;
+function toggleRemember(e) {
+ rememberPassword.value = e.detail.value.length > 0;
+}
+async function submit() {
+ if (!loginForm.value.username.trim()) {
+ uni.showToast({
+ title: "请输入用户名",
+ icon: "none",
+ duration: 2000,
+ });
+ return;
+ }
+
+ if (!loginForm.value.password.trim()) {
+ uni.showToast({
+ title: "请输入密码",
+ icon: "none",
+ duration: 2000,
+ });
+ return;
+ }
+ let userInfo = {
+ tenantId: "000000",
+ deptId: "",
+ roleId: "",
+ username: loginForm.value.username,
+ password: loginForm.value.password,
+ type: "account",
+ code: "",
+ key: "",
+ };
+
+ if (rememberPassword.value) {
+ uni.setStorageSync("rememberedUser", {
+ username: loginForm.value.username,
+ password: loginForm.value.password,
+ });
+ } else {
+ uni.removeStorageSync("rememberedUser");
+ }
+
+ try {
+ const res = await loginByUsername(
+ userInfo.tenantId,
+ userInfo.deptId,
+ userInfo.roleId,
+ userInfo.username,
+ md5(userInfo.password),
+ userInfo.type,
+ userInfo.key,
+ userInfo.code
+ );
+ userStore.setUserInfo(res.data);
+ uni.reLaunch({
+ url: "/pages/map/index",
+ });
+ } catch (error) {
+ const errorMsg =
+ error.data?.error_description !== "Bad credentials"
+ ? error.data?.error_description
+ : "登录失败,请重试";
+ uni.showToast({
+ title: errorMsg,
+ icon: "none",
+ duration: 2000,
+ });
+ }
+}
+// 从本地存储加载记住的密码
+onMounted(() => {
+ const savedUserInfo = uni.getStorageSync("rememberedUser");
+ console.log("记住密码", savedUserInfo);
+ if (savedUserInfo) {
+ loginForm.value.username = savedUserInfo.username;
+ loginForm.value.password = savedUserInfo.password;
+ rememberPassword.value = true;
+ }
+});
+onLoad((options) => {
+ if (options.redirect && removeQueryString(options.redirect) !== LOGIN_PATH) {
+ redirect = decodeURIComponent(options.redirect);
+ }
+});
</script>
<style lang="scss" scoped>
- .login-form-wrap {
- position: relative;
- text-align: center;
- height: 100%;
- width: 100%;
+.login-form-wrap {
+ position: relative;
+ text-align: center;
+ height: 100%;
+ width: 100%;
- .logo {
- width: 127px;
- height: 51px;
- margin: 0 auto;
- margin-top: 104px;
- margin-bottom: 16px;
- }
+ .logo {
+ width: 127px;
+ height: 51px;
+ margin: 0 auto;
+ margin-top: 104px;
+ margin-bottom: 16px;
+ }
- .lowerRightCorner {
- position: absolute;
- right: 0;
- bottom: 0;
- width: 425.61rpx;
- height: 316.46rpx;
- }
+ .lowerRightCorner {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ width: 425.61rpx;
+ height: 316.46rpx;
+ }
- .title {
- font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
- font-weight: 400;
- font-size: 84rpx;
- line-height: 82rpx;
- letter-spacing: 1px;
- text-shadow: 0px 8px 8px rgba(0, 0, 0, 0.18);
- text-align: center;
- font-style: normal;
- text-transform: none;
- color: #1452D3;
- text-align: center;
- margin-bottom: 168rpx;
- }
+ .title {
+ font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
+ font-weight: 400;
+ font-size: 84rpx;
+ line-height: 82rpx;
+ letter-spacing: 1px;
+ text-shadow: 0px 8px 8px rgba(0, 0, 0, 0.18);
+ text-align: center;
+ font-style: normal;
+ text-transform: none;
+ color: #1452d3;
+ text-align: center;
+ margin-bottom: 168rpx;
+ }
- .user-name,
- .pass-word {
- display: flex;
- //justify-content: center;
- align-items: center;
- margin-left: 62rpx;
- margin-right: 58rpx;
- height: 118rpx;
- border-bottom: 2rpx solid #E3E3E3;
+ .user-name,
+ .pass-word {
+ display: flex;
+ //justify-content: center;
+ align-items: center;
+ margin-left: 62rpx;
+ margin-right: 58rpx;
+ height: 118rpx;
+ border-bottom: 2rpx solid #e3e3e3;
- image {
- width: 40rpx;
- height: 40rpx;
- margin-right: 12rpx;
- }
+ image {
+ width: 40rpx;
+ height: 40rpx;
+ margin-right: 12rpx;
+ }
- :deep(uni-input) {
- height: 40rpx;
- line-height: 40rpx;
- width: 80%;
- margin-top: 20rpx;
- }
+ :deep(uni-input) {
+ height: 40rpx;
+ line-height: 40rpx;
+ width: 80%;
+ margin-top: 20rpx;
+ }
- :deep(.uni-input-placeholder) {
- font-size: 32rpx;
- color: #E3E3E3;
- font-weight: 500;
- }
- }
+ :deep(.uni-input-placeholder) {
+ font-size: 32rpx;
+ color: #e3e3e3;
+ font-weight: 500;
+ }
+ }
- .remember-password {
- display: flex;
- justify-content: flex-end;
- align-items: center;
- margin-left: 62rpx;
- margin-right: 58rpx;
- margin-top: 20rpx;
+ .remember-password {
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
+ margin-left: 62rpx;
+ margin-right: 58rpx;
+ margin-top: 20rpx;
- color: #666;
- font-size: 28rpx;
+ color: #666;
+ font-size: 28rpx;
- label {
- display: flex;
- align-items: center;
- }
- }
+ label {
+ display: flex;
+ align-items: center;
+ }
+ }
- input {
- @apply pb-6rpx mb-10rpx text-left;
- }
+ input {
+ @apply pb-6rpx mb-10rpx text-left;
+ }
- .tips {
- @apply mt-8rpx mb-60rpx;
- color: $u-info;
- }
+ .tips {
+ @apply mt-8rpx mb-60rpx;
+ color: $u-info;
+ }
- .login-btn {
- z-index: 1;
- @apply flex items-center justify-center py-12rpx px-0 text-30rpx border-none;
- background: #1D6FE9;
- color: white;
- width: 590rpx;
- height: 76rpx;
- border-radius: 40rpx 40rpx 40rpx 40rpx;
- margin-top: 100rpx;
+ .login-btn {
+ z-index: 1;
+ @apply flex items-center justify-center py-12rpx px-0 text-30rpx border-none;
+ background: #1d6fe9;
+ color: white;
+ width: 590rpx;
+ height: 76rpx;
+ border-radius: 40rpx 40rpx 40rpx 40rpx;
+ margin-top: 100rpx;
- &::after {
- @apply border-none;
- }
- }
+ &::after {
+ @apply border-none;
+ }
+ }
- .alternative {
- @apply flex justify-between mt-30rpx;
- color: $u-tips-color;
- }
- }
+ .alternative {
+ @apply flex justify-between mt-30rpx;
+ color: $u-tips-color;
+ }
+}
- .login-type-wrap {
- @apply flex justify-between pt-350rpx px-150rpx pb-150rpx;
+.login-type-wrap {
+ @apply flex justify-between pt-350rpx px-150rpx pb-150rpx;
- .item {
- @apply flex items-center flex-col text-28rpx;
- color: $u-content-color;
- }
- }
+ .item {
+ @apply flex items-center flex-col text-28rpx;
+ color: $u-content-color;
+ }
+}
- .hint {
- @apply px-40rpx py-20rpx text-24rpx;
- color: $u-tips-color;
+.hint {
+ @apply px-40rpx py-20rpx text-24rpx;
+ color: $u-tips-color;
- .link {
- color: $u-warning;
- }
- }
+ .link {
+ color: $u-warning;
+ }
+}
</style>
--
Gitblit v1.9.3