From f1bcbcb10006807787247219df78e0408742604b Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期五, 22 八月 2025 10:59:09 +0800 Subject: [PATCH] 1.采购台账开发联调 --- src/pages/login.vue | 263 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 263 insertions(+), 0 deletions(-) diff --git a/src/pages/login.vue b/src/pages/login.vue new file mode 100644 index 0000000..d970266 --- /dev/null +++ b/src/pages/login.vue @@ -0,0 +1,263 @@ +<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" + 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/modal' +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'; +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 => { + // 妫�鏌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 => { + modal.msgError('鑾峰彇鍏徃鍒楄〃澶辫触:', error) + factoryList.value = [] + }) + }else { + factoryList.value = [] + } +} + +async function handleLogin() { + if (loginForm.value.username === "") { + modal.msgError("璇疯緭鍏ユ偍鐨勮处鍙�") + } else if (loginForm.value.password === "") { + modal.msgError("璇疯緭鍏ユ偍鐨勫瘑鐮�") + } else if (loginForm.value.factoryId === "") { + modal.msgError("璇烽�夋嫨鍏徃") + } else { + modal.loading("鐧诲綍涓紝璇疯�愬績绛夊緟...") + 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