From e40a419e5533530a8103d754d751595013f5644a Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期五, 18 四月 2025 14:28:32 +0800
Subject: [PATCH] login

---
 eims-ui-mobile/src/utils/http.ts         |    2 
 eims-ui-mobile/src/pages/login/index.vue |   83 +++++++++++++++-
 eims-ui-mobile/src/pages/equ/index.vue   |    1 
 eims-ui-mobile/src/pages/home/index.vue  |  178 ++++++++++++++++++++++++++++++++---
 4 files changed, 242 insertions(+), 22 deletions(-)

diff --git a/eims-ui-mobile/src/pages/equ/index.vue b/eims-ui-mobile/src/pages/equ/index.vue
index 8981478..bda1221 100644
--- a/eims-ui-mobile/src/pages/equ/index.vue
+++ b/eims-ui-mobile/src/pages/equ/index.vue
@@ -1,6 +1,7 @@
 <route lang="json5">
 {
   layout: 'tabbar',
+  needLogin: true,
   style: {
     navigationBarTitleText: '鍏充簬',
   },
diff --git a/eims-ui-mobile/src/pages/home/index.vue b/eims-ui-mobile/src/pages/home/index.vue
index 2c10cbb..636a1e2 100644
--- a/eims-ui-mobile/src/pages/home/index.vue
+++ b/eims-ui-mobile/src/pages/home/index.vue
@@ -3,30 +3,126 @@
 {
   layout: 'tabbar',
   style: {
-    navigationStyle: 'custom',
     navigationBarTitleText: '棣栭〉',
   },
 }
 </route>
 <template>
   <view
-    class="bg-white overflow-hidden pt-2 px-4"
-    :style="{ marginTop: safeAreaInsets?.top + 'px' }"
+    class="bg-base overflow-hidden"
+    :style="{
+      marginTop: safeAreaInsets?.top + 'px',
+    }"
   >
-    <view class="mt-12">
-      <image src="/static/logo.svg" alt="" class="w-28 h-28 block mx-auto" />
-    </view>
-    <view class="text-center text-4xl main-title-color mt-4">unibest</view>
-    <view class="text-center text-2xl mt-2 mb-8">鏈�濂界敤鐨� uniapp 寮�鍙戞ā鏉�</view>
+    <view class="bg-white h-[80rpx] px-2 flex items-center justify-between">
+      <view class="flex items-center" @click="handleUserInfo">
+        <wd-icon name="user" size="40rpx" class="icon-color-base"></wd-icon>
+        <text class="ml-1 text-color-base">寮犱笁</text>
+      </view>
 
-    <view class="text-justify max-w-100 m-auto text-4 indent mb-2">{{ description }}</view>
-    <view class="text-center mt-8">
-      褰撳墠骞冲彴鏄細
-      <text class="text-green-500">{{ PLATFORM.platform }}</text>
+      <view class="flex items-center">
+        <wd-icon name="notification" size="40rpx" class="icon-color-base mr-3"></wd-icon>
+        <wd-icon name="tips" size="40rpx" class="icon-color-base mr-3"></wd-icon>
+        <wd-icon name="app" size="40rpx" class="icon-color-base"></wd-icon>
+      </view>
     </view>
-    <view class="text-center mt-4">
-      妯℃澘鍒嗘敮鏄細
-      <text class="text-green-500">tabbar</text>
+
+    <view class="bg-white py-2 px-2">
+      <wd-img class="w-full h-[260rpx]" src="/static/images/pic4.jpeg" />
+    </view>
+    <view class="bg-noti flex flex-row">
+      <wd-notice-bar
+        text="杩欐槸涓�鏉℃秷鎭彁绀轰俊鎭紝杩欐槸涓�鏉℃秷鎭彁绀轰俊鎭紝杩欐槸涓�鏉℃秷鎭彁绀轰俊鎭�"
+        prefix="clock"
+        type="info"
+        :scrollable="false"
+        custom-class="flex-1  overflow-hidden"
+      />
+      <wd-button type="text" class="w-[120rpx]">鏌ョ湅</wd-button>
+    </view>
+
+    <view class="bg-white">
+      <wd-card type="rectangle">
+        <template #title>
+          <view class="flex items-center menu-title-box">
+            <view class="menu-indicator"></view>
+            <view class="ml-1 text-xs">鏁版嵁鎬昏</view>
+          </view>
+        </template>
+        <view class="flex flex-row justify-around">
+          <view class="flex flex-col justify-center">
+            <text class="text-lg text-center">0</text>
+            <text class="text-color-gray">璁惧鎬绘暟</text>
+          </view>
+          <view class="flex flex-col justify-center">
+            <text class="text-lg text-center">0</text>
+            <text class="text-color-gray">鏁呴殰璁惧鏁�</text>
+          </view>
+          <view class="flex flex-col justify-center">
+            <text class="text-lg text-center">0</text>
+            <text class="text-color-gray">鏈慨澶嶆晠闅�</text>
+          </view>
+        </view>
+      </wd-card>
+    </view>
+
+    <view class="bg-white mt-2">
+      <wd-card type="rectangle">
+        <template #title>
+          <view class="flex items-center menu-title-box">
+            <view class="menu-indicator"></view>
+            <view class="ml-1 text-xs">鏁版嵁鎬昏</view>
+          </view>
+        </template>
+        <wd-grid :column="4">
+          <wd-grid-item use-slot class="flex justify-center items-center">
+            <image class="slot-img text-center" src="/static/menu/menu2.png" />
+            <text>12</text>
+          </wd-grid-item>
+          <wd-grid-item use-slot class="flex justify-center items-center">
+            <image class="slot-img text-center" src="/static/menu/menu2.png" />
+            <text>12</text>
+          </wd-grid-item>
+          <wd-grid-item use-slot class="flex justify-center items-center">
+            <image class="slot-img text-center" src="/static/menu/menu2.png" />
+            <text>12</text>
+          </wd-grid-item>
+          <wd-grid-item use-slot is-dot class="flex justify-center items-center">
+            <image class="slot-img text-center" src="/static/menu/menu2.png" />
+            <text>12</text>
+          </wd-grid-item>
+          <wd-grid-item use-slot class="flex justify-center items-center">
+            <image class="slot-img text-center" src="/static/menu/menu2.png" />
+            <text>12</text>
+          </wd-grid-item>
+          <wd-grid-item use-slot class="flex justify-center items-center">
+            <image class="slot-img text-center" src="/static/menu/menu2.png" />
+            <text>12</text>
+          </wd-grid-item>
+        </wd-grid>
+      </wd-card>
+    </view>
+
+    <view class="bg-white mt-2">
+      <wd-card type="rectangle">
+        <template #title>
+          <view class="flex items-center menu-title-box">
+            <view class="menu-indicator"></view>
+            <view class="ml-1 text-xs">鏁版嵁鎬昏</view>
+          </view>
+        </template>
+        <wd-grid :column="4">
+          <wd-grid-item
+            use-slot
+            class="flex justify-center items-center"
+            v-for="(item, index) in menuList"
+            :key="item.id"
+          >
+            <image class="slot-img text-center" :src="item.url" />
+            <text>{{ item.name }}</text>
+          </wd-grid-item>
+        </wd-grid>
+      </wd-card>
     </view>
   </view>
 </template>
@@ -50,10 +146,62 @@
   console.log(author)
   console.log(TestEnum.A)
 })
+
+const menuList = reactive([
+  {
+    id: 1,
+    name: '娴嬭瘯',
+    url: '/static/menu/menu1.png',
+  },
+  {
+    id: 2,
+    name: '娴嬭瘯',
+    url: '/static/menu/menu1.png',
+  },
+])
+
+function handleUserInfo() {
+  console.error('12121')
+}
+
+
 </script>
 
 <style lang="scss" scoped>
 .main-title-color {
   color: $uni-color-primary;
 }
+
+.bg-noti {
+  background: #f4f9ff;
+}
+
+:deep(.wd-card) {
+  margin-bottom: 0;
+}
+
+:deep(.wd-card__footer) {
+  padding: 0 !important;
+}
+
+:deep(.wd-card__footer)::after {
+  height: 0 !important;
+}
+
+.menu-title-box {
+  height: 30rpx;
+}
+
+.menu-indicator {
+  width: 6rpx;
+  height: 24rpx;
+  border-radius: 10rpx;
+  background-color: $uni-color-primary;
+}
+
+.slot-img {
+  width: 72rpx;
+  height: 72rpx;
+  border-radius: 8rpx;
+}
 </style>
diff --git a/eims-ui-mobile/src/pages/login/index.vue b/eims-ui-mobile/src/pages/login/index.vue
index 17c5a1d..f26a05d 100644
--- a/eims-ui-mobile/src/pages/login/index.vue
+++ b/eims-ui-mobile/src/pages/login/index.vue
@@ -2,19 +2,90 @@
 {
   layout: 'default',
   style: {
-    navigationStyle: 'custom',
     navigationBarTitleText: '鐧诲綍',
   },
 }
 </route>
+
+<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="100px"
+        prop="username"
+        clearable
+        v-model="model.username"
+        placeholder="璇疯緭鍏ョ敤鎴峰悕"
+        :rules="[{ required: true, message: '璇峰~鍐欑敤鎴峰悕' }]"
+      />
+      <wd-input
+        label="瀵嗙爜"
+        label-width="100px"
+        prop="password"
+        show-password
+        clearable
+        v-model="model.password"
+        placeholder="璇疯緭鍏ュ瘑鐮�"
+        :rules="[{ required: true, message: '璇峰~鍐欏瘑鐮�' }]"
+      />
+    </wd-cell-group>
+    <view class="footer mt-6">
+      <wd-button type="primary" size="large" @click="handleSubmit" block>鎻愪氦</wd-button>
+    </view>
+  </wd-form>
+</template>
+
 <script setup lang="ts">
+import { currRoute } from '@/utils'
+import { useUserStore, useAccessStore } from '@/store'
+import { useToast } from 'wot-design-uni'
+import { login } from '@/service/login'
+const userStore = useUserStore()
+const accessStore = useAccessStore()
+const { success: showSuccess } = useToast()
+
+const model = reactive<{
+  username: string
+  password: string
+}>({
+  username: 'admin',
+  password: 'admin123',
+})
+
+const form = ref()
+function handleSubmit() {
+  form.value
+    .validate()
+    .then(({ valid, errors }) => {
+      if (valid) {
+        toLogin()
+      }
+    })
+    .catch((error) => {
+      console.log(error, 'error')
+    })
+}
+const toLogin = async () => {
+  const res = await login(model)
+  console.error(res)
+  accessStore.setAccessInfo(res as any)
+  console.error(accessStore.accessInfo.access_token)
+  // userStore.setUserInfo({ nickname: '鑿查附', avatar: '', token: 'abcdef' })
+  const { query } = currRoute()
+  console.error(query.redirect)
+  uni.switchTab({ url: query.redirect })
+}
+
+
+
+
 
 </script>
 
-<template>
-
-</template>
-
 <style scoped lang="scss">
-
+.footer {
+  padding: 12px;
+}
 </style>
diff --git a/eims-ui-mobile/src/utils/http.ts b/eims-ui-mobile/src/utils/http.ts
index 246cc7e..f98f884 100644
--- a/eims-ui-mobile/src/utils/http.ts
+++ b/eims-ui-mobile/src/utils/http.ts
@@ -15,7 +15,7 @@
         if (res.statusCode >= 200 && res.statusCode < 300) {
           // 2.1 鎻愬彇鏍稿績鏁版嵁 res.data
           if ((res.data as IResData<T>).code === 200) {
-            resolve((res.data as IResData<T>).data as IResData<T>)
+            resolve(((res.data as IResData<T>).data || res.data) as IResData<T>)
           } else {
             uni.showToast({
               icon: 'none',

--
Gitblit v1.9.3