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