From 5c7ed94dc94071893167d583d237ae85d509f094 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 13 十月 2025 13:53:11 +0800
Subject: [PATCH] 打包修改
---
src/pages/login.vue | 273 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 273 insertions(+), 0 deletions(-)
diff --git a/src/pages/login.vue b/src/pages/login.vue
new file mode 100644
index 0000000..860fd09
--- /dev/null
+++ b/src/pages/login.vue
@@ -0,0 +1,273 @@
+<template>
+ <view class="normal-login-container">
+ <view class="logo-content">
+ <text>璐﹀彿瀵嗙爜鐧诲綍</text>
+ </view>
+ <view class="login-form-content">
+ <view class="input-item flex align-center">
+ <up-input prefixIcon="account" placeholder="璇疯緭鍏ヨ处鍙�" border="bottom"
+ @blur="getUserLoginFacotryList"
+ maxlength="30" v-model="loginForm.userName" clearable></up-input>
+ </view>
+ <view class="input-item flex align-center">
+ <up-input prefixIcon="lock" placeholder="璇疯緭鍏ュ瘑鐮�" border="bottom" maxlength="20" v-model="loginForm.password" clearable type="password"></up-input>
+ </view>
+ <view class="input-item flex align-center select-container">
+ <up-icon name="tags" size="18"></up-icon>
+ <up-picker-data
+ v-model="loginForm.factoryId"
+ title="璇烽�夋嫨鍏徃"
+ :options="factoryList"
+ valueKey="id"
+ style="width: 100%;"
+ labelKey="name">
+ </up-picker-data>
+ </view>
+ <view>
+ <button @click="handleLogin" class="login-btn cu-btn block bg-blue lg round">鐧诲綍</button>
+ </view>
+ </view>
+ <!-- 璁颁綇瀵嗙爜閫夐」 -->
+ <view class="remember-password">
+ <up-checkbox
+ :customStyle="{marginBottom: '8px'}"
+ label="璁颁綇瀵嗙爜"
+ name="agree"
+ usedAlone
+ v-model:checked="rememberPassword"
+ >
+ </up-checkbox>
+ </view>
+ </view>
+</template>
+
+<script setup>
+import {modal} from "@/plugins";
+
+const showToast = (message) => {
+ uni.showToast({
+ title: message,
+ icon: 'none'
+ })
+}
+import { userLoginFacotryList} from '@/api/login'
+import { ref, onMounted } from "vue";
+import useUserStore from '@/store/modules/user'
+import { getWxCode } from '@/utils/geek';
+import { wxLogin } from '@/api/oauth';
+import { setToken } from '@/utils/auth';
+import View from "@/pages/procurementManagement/procurementLedger/view.vue";
+const userStore = useUserStore()
+const useWxLogin = ref(false); // 鏄惁浣跨敤寰俊鐧诲綍
+const rememberPassword = ref(false); // 璁颁綇瀵嗙爜
+const loginForm = ref({
+ userName: "",
+ password: "",
+ factoryId: "",
+ currentFatoryName: "",
+});
+const factoryList = ref([]) // 鍏徃鍒楄〃
+
+// 淇濆瓨瀵嗙爜鍒版湰鍦板瓨鍌�
+function savePassword() {
+ if (rememberPassword.value) {
+ uni.setStorageSync('remembered_username', loginForm.value.userName);
+ uni.setStorageSync('remembered_password', loginForm.value.password);
+ uni.setStorageSync('remember_password', true);
+ } else {
+ uni.removeStorageSync('remembered_username');
+ uni.removeStorageSync('remembered_password');
+ uni.setStorageSync('remember_password', false);
+ }
+}
+
+// 浠庢湰鍦板瓨鍌ㄥ姞杞藉瘑鐮�
+function loadPassword() {
+ const remembered = uni.getStorageSync('remember_password');
+ if (remembered) {
+ rememberPassword.value = true;
+ const savedUsername = uni.getStorageSync('remembered_username');
+ const savedPassword = uni.getStorageSync('remembered_password');
+ if (savedUsername) {
+ loginForm.value.userName = savedUsername;
+ }
+ if (savedPassword) {
+ loginForm.value.password = savedPassword;
+ }
+ }
+}
+
+if (useWxLogin.value) {
+ getWxCode().then(res => {
+ console.log(res);
+ wxLogin('miniapp',res).then(res => {
+ if(res.token != null){
+ setToken(res.token);
+ loginSuccess()
+ }
+ });
+ })
+}
+
+function getUserLoginFacotryList() {
+ if(loginForm.value.userName){
+ userLoginFacotryList({userName:loginForm.value.userName}).then(res => {
+ console.log('res',res)
+ // 妫�鏌es.data鏄惁涓烘暟缁�
+ if (res.data && Array.isArray(res.data)) {
+ // 閲嶆柊缁勮鏁版嵁鏍煎紡锛歞eptId鍙樻垚id锛宒eptName鍙樻垚name
+ factoryList.value = res.data.map(item => ({
+ id: item.deptId,
+ name: item.deptName
+ }))
+ } else {
+ // 濡傛灉res.data涓嶆槸鏁扮粍锛岃缃负绌烘暟缁�
+ factoryList.value = []
+ }
+ }).catch(error => {
+ showToast('鑾峰彇鍏徃鍒楄〃澶辫触:', error)
+ factoryList.value = []
+ })
+ }else {
+ factoryList.value = []
+ }
+}
+
+async function handleLogin() {
+ if (loginForm.value.userName === "") {
+ showToast("璇疯緭鍏ユ偍鐨勮处鍙�")
+ } else if (loginForm.value.password === "") {
+ showToast("璇疯緭鍏ユ偍鐨勫瘑鐮�")
+ } else if (loginForm.value.factoryId === "") {
+ showToast("璇烽�夋嫨鍏徃")
+ } else {
+ showToast("鐧诲綍涓紝璇疯�愬績绛夊緟...")
+ pwdLogin()
+ }
+};
+// 瀵嗙爜鐧诲綍
+async function pwdLogin() {
+ userStore.loginCheckFactory(loginForm.value).then(() => {
+ modal.closeLoading()
+ // 鐧诲綍鎴愬姛鍚庝繚瀛樺瘑鐮�
+ savePassword();
+ loginSuccess()
+ }).catch(() => {
+ modal.closeLoading()
+ })
+};
+
+function loginSuccess(result) {
+ // 璁剧疆鐢ㄦ埛淇℃伅
+ userStore.getInfo().then(res => {
+ uni.switchTab({
+ url: '/pages/index'
+ });
+ })
+}
+// 椤甸潰鍔犺浇鏃舵鏌ユ槸鍚︽湁淇濆瓨鐨勫瘑鐮�
+onMounted(() => {
+ loadPassword();
+ getUserLoginFacotryList()
+});
+</script>
+
+<style lang="scss">
+page {
+ background-color: #ffffff;
+}
+
+.normal-login-container {
+ width: 100%;
+ height: 100vh;
+
+ .logo-content {
+ width: 90%;
+ font-weight: 400;
+ font-size: 30px;
+ color: #333333;
+ margin: 80px 0 0 30px;
+
+ image {
+ border-radius: 4px;
+ }
+
+ .title {
+ margin-left: 10px;
+ }
+ }
+ .u-checkbox {
+ margin-left: 34px;
+ }
+
+ .login-form-content {
+ text-align: center;
+ margin: 58px auto;
+ padding: 0 30px;
+
+ .input-item {
+ margin: 30px auto;
+ height: 45px;
+
+ .icon {
+ font-size: 38rpx;
+ margin-left: 10px;
+ color: #999;
+ }
+
+ .input {
+ width: 100%;
+ font-size: 14px;
+ line-height: 20px;
+ text-align: left;
+ padding-left: 15px;
+ }
+ }
+ .select-container {
+ flex: 1;
+ border-bottom: 1px solid #e5e5e5;
+ padding: 6px 9px;
+
+ :deep(.up-select) {
+ border: none;
+ background: transparent;
+
+ .up-select__label {
+ font-size: 14px;
+ color: #333;
+ }
+
+ .up-select__value {
+ font-size: 14px;
+ color: #333;
+ }
+ }
+ }
+
+ .login-btn {
+ margin-top: 60px;
+ height: 50px;
+ background: linear-gradient( 140deg, #00BAFF 0%, #006CFB 100%);
+ box-shadow: 0px 4px 10px 0px rgba(3,88,185,0.2);
+ border-radius: 40px 40px 40px 40px;
+ }
+
+ .xieyi {
+ color: #333;
+ margin-top: 20px;
+ }
+
+ .login-code {
+ height: 38px;
+ float: right;
+
+ .login-code-img {
+ height: 38px;
+ position: absolute;
+ margin-left: 10px;
+ width: 200rpx;
+ }
+ }
+ }
+}
+</style>
--
Gitblit v1.9.3