From 89a5fedfe041ebacb2d81ecae1023b206cd3f353 Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期四, 24 四月 2025 09:10:37 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/main' --- eims-ui-mobile/src/pages/login/index.vue | 144 ++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 139 insertions(+), 5 deletions(-) diff --git a/eims-ui-mobile/src/pages/login/index.vue b/eims-ui-mobile/src/pages/login/index.vue index 17c5a1d..bc68841 100644 --- a/eims-ui-mobile/src/pages/login/index.vue +++ b/eims-ui-mobile/src/pages/login/index.vue @@ -2,19 +2,153 @@ { layout: 'default', style: { - navigationStyle: 'custom', navigationBarTitleText: '鐧诲綍', }, } </route> -<script setup lang="ts"> - -</script> <template> + <wd-img class="w-full h-[260rpx]" src="/static/images/pic2.jpg" /> + <wd-form ref="form" :model="model" class="mt-2"> + <wd-cell-group border> + <wd-input + label="鐢ㄦ埛鍚�" + label-width="200rpx" + prop="username" + clearable + v-model="model.username" + placeholder="璇疯緭鍏ョ敤鎴峰悕" + :rules="[{ required: true, message: '璇峰~鍐欑敤鎴峰悕' }]" + /> + <wd-input + label="瀵嗙爜" + label-width="200rpx" + prop="password" + show-password + clearable + v-model="model.password" + placeholder="璇疯緭鍏ュ瘑鐮�" + :rules="[{ required: true, message: '璇峰~鍐欏瘑鐮�' }]" + /> + </wd-cell-group> + <view class="footer"> + <view> + <wd-checkbox v-model="rember" @change="handleChange"> + <text class="rember-text">璁颁綇瀵嗙爜</text> + </wd-checkbox> + </view> + <wd-button class="mt-6" type="primary" size="large" @click="handleSubmit" block> + 鎻愪氦 + </wd-button> + <view class="copyright-info"> + <text> + 涓婃捣鍏板疂浼犳劅绉戞妧鑲′唤鏈夐檺鍏徃 + </text> + + </view> + </view> + </wd-form> </template> -<style scoped lang="scss"> +<script setup lang="ts"> +import { currRoute } from '@/utils' +import { useUserStore, useAccessStore, useSystemConfigStore } from '@/store' +import { useToast } from 'wot-design-uni' +import { login, getUserInfo } from '@/service/login' +import type { UserInfo } from '@/service/login.d' +import { TestEnum } from '@/typings' +const userStore = useUserStore() +const accessStore = useAccessStore() +const configStore = useSystemConfigStore() +const { success: showSuccess } = useToast() +const model = reactive<{ + username: string + password: string +}>({ + username: '', + password: '', +}) +const rember = ref<boolean>(false) + +function handleChange({ value }) { + console.log(value) +} + +const form = ref() +function handleSubmit() { + form.value + .validate() + .then(({ valid, errors }) => { + if (valid) { + toLogin() + } + }) + .catch((error) => { + console.log(error, 'error') + }) +} + +onLoad(() => { + const { remberPassword, username, password } = configStore.systemConfigInfo + if (remberPassword) { + rember.value = true + model.username = username + model.password = password + } +}) + +const toLogin = async () => { + // 璁颁綇瀵嗙爜 + if (rember.value) { + configStore.setConfigInfo({ ...model, ...{ remberPassword: true } }) + } + + const res = await login(model) + accessStore.setAccessInfo(res as any) + const backUserInfo: any = await getUserInfo() + /** + * 鐧诲綍瓒呮椂鐨勬儏鍐� + */ + if (!backUserInfo) { + throw new Error('鑾峰彇鐢ㄦ埛淇℃伅澶辫触.') + } + const { permissions = [], roles = [], user } = backUserInfo + /** + * 浠庡悗鍙皍ser -> vben user杞崲 + */ + const userInfo: UserInfo = { + avatar: user.avatar ?? '', + permissions, + realName: user.nickName, + roles, + userId: user.userId, + deptId: user.deptId, + username: user.userName, + } + userStore.setUserInfo(userInfo) + const { query } = currRoute() + uni.switchTab({ url: query.redirect }) +} +</script> + +<style scoped lang="scss"> +.footer { + padding: 24rpx; +} +.rember-text { + font-size: 24rpx; + color: $uni-text-color-grey; +} + +.copyright-info { + position: absolute; + bottom: 20rpx; + width: 100%; + display: flex; + justify-content: center; + color: $uni-text-color-disable; + font-size: 24rpx; +} </style> -- Gitblit v1.9.3