From b25997a7d6503f6ecb0a4d60a0f418fd73f17518 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 22 五月 2026 09:34:30 +0800
Subject: [PATCH] Merge branch 'dev_NEW_pro' into dev_帮太

---
 src/pages/login.vue       |   60 +++++++++++++-
 src/api/login.js          |   71 +++++++++--------
 src/store/modules/user.ts |   85 ++++++++++++---------
 3 files changed, 138 insertions(+), 78 deletions(-)

diff --git a/src/api/login.js b/src/api/login.js
index 29a149d..561b98c 100644
--- a/src/api/login.js
+++ b/src/api/login.js
@@ -1,81 +1,82 @@
-import request from '@/utils/request'
+import request from "@/utils/request";
 
 // 鐧诲綍鏂规硶
-export function loginCheckFactory(username, password) {
+export function loginCheckFactory(username, password, factoryId) {
   const data = {
     username,
     password,
-  }
+    factoryId,
+  };
   return request({
-    url: '/loginCheckFactory',
+    url: "/loginCheckFactory",
     headers: {
-      isToken: false
+      isToken: false,
+      repeatSubmit: false,
     },
-    method: 'post',
-    data: data
-  })
+    method: "post",
+    data: data,
+  });
 }
 
 // 鑾峰彇鐢ㄦ埛璇︾粏淇℃伅
 export function getInfo() {
   return request({
-    url: '/getInfo',
-    method: 'get'
-  })
+    url: "/getInfo",
+    method: "get",
+  });
 }
 
 // 閫�鍑烘柟娉�
 export function logout() {
   return request({
-    url: '/logout',
-    method: 'post'
-  })
+    url: "/logout",
+    method: "post",
+  });
 }
 
 // 鑾峰彇鍏徃鍒楄〃
 export function userLoginFacotryList(params) {
   return request({
-    url: '/userLoginFacotryList',
-    method: 'get',
-    params: params
-  })
+    url: "/userLoginFacotryList",
+    method: "get",
+    params: params,
+  });
 }
 
 // 鑾峰彇鏈繃鏈熷叕鍛婃暟閲�
 export function noticesList(params) {
   return request({
-    url: '/collaborativeApproval/notice/page',
-    method: 'get',
-    params: params
-  })
+    url: "/collaborativeApproval/notice/page",
+    method: "get",
+    params: params,
+  });
 }
 
 // 鍙戦�佸鎴风鎺ㄩ�佹爣璇嗗埌鏈嶅姟鍣�
 export function updateClientId(data) {
   return request({
-    url: '/system/client/addOrUpdateClientId',
-    method: 'post',
-    data: data
-  })
+    url: "/system/client/addOrUpdateClientId",
+    method: "post",
+    data: data,
+  });
 }
-
 
 // 鏌ヨ鍏憡鍒楄〃
 export function listNotice(query) {
   return request({
-    url: '/system/notice/list',
-    method: 'get',
-    params: query
-  })
+    url: "/system/notice/list",
+    method: "get",
+    params: query,
+  });
 }
 
 // 鑾峰彇鏈娑堟伅鏁伴噺
 export function getNoticeCount(consigneeId) {
   return request({
-    url: '/system/notice/getCount',
-    method: 'get',
-    params: { consigneeId }
-  })
+    url: "/system/notice/getCount",
+    method: "get",
+    params: { consigneeId },
+  });
 }
 
 // 鏍囪娑堟伅涓哄凡璇�
diff --git a/src/pages/login.vue b/src/pages/login.vue
index ee49113..2d96046 100644
--- a/src/pages/login.vue
+++ b/src/pages/login.vue
@@ -22,6 +22,21 @@
                   clearable
                   type="password"></up-input>
       </view>
+      <!-- <view class="input-item flex align-center"
+            v-if="factoryList.length > 0">
+        <up-input prefixIcon="home"
+                  placeholder="璇烽�夋嫨宸ュ巶"
+                  border="bottom"
+                  readonly
+                  @click="showFactorySelect = true"
+                  v-model="selectedFactoryName"
+                  clearable></up-input>
+        <up-action-sheet :show="showFactorySelect"
+                         :actions="factoryList"
+                         title="璇烽�夋嫨宸ュ巶"
+                         @close="showFactorySelect = false"
+                         @select="handleFactorySelect"></up-action-sheet>
+      </view> -->
       <view>
         <button @click="handleLogin"
                 class="login-btn cu-btn block bg-blue lg round">鐧诲綍</button>
@@ -70,9 +85,17 @@
   const loginForm = ref({
     userName: "",
     password: "",
-    currentFatoryName: "",
+    factoryId: "",
   });
   const factoryList = ref([]); // 鍏徃鍒楄〃
+  const showFactorySelect = ref(false);
+  const selectedFactoryName = ref("");
+
+  const handleFactorySelect = e => {
+    loginForm.value.factoryId = e.id;
+    selectedFactoryName.value = e.name;
+    showFactorySelect.value = false;
+  };
 
   // 淇濆瓨瀵嗙爜鍒版湰鍦板瓨鍌�
   function savePassword() {
@@ -127,17 +150,28 @@
               id: item.deptId,
               name: item.deptName,
             }));
+            // 濡傛灉鍙湁涓�涓伐鍘傦紝榛樿閫変腑
+            if (factoryList.value.length === 1) {
+              loginForm.value.factoryId = factoryList.value[0].id;
+              selectedFactoryName.value = factoryList.value[0].name;
+            }
           } else {
             // 濡傛灉res.data涓嶆槸鏁扮粍锛岃缃负绌烘暟缁�
             factoryList.value = [];
+            loginForm.value.factoryId = "";
+            selectedFactoryName.value = "";
           }
         })
         .catch(error => {
           showToast("鑾峰彇鍏徃鍒楄〃澶辫触:", error);
           factoryList.value = [];
+          loginForm.value.factoryId = "";
+          selectedFactoryName.value = "";
         });
     } else {
       factoryList.value = [];
+      loginForm.value.factoryId = "";
+      selectedFactoryName.value = "";
     }
   }
 
@@ -146,6 +180,8 @@
       showToast("璇疯緭鍏ユ偍鐨勮处鍙�");
     } else if (loginForm.value.password === "") {
       showToast("璇疯緭鍏ユ偍鐨勫瘑鐮�");
+    } else if (factoryList.value.length > 0 && loginForm.value.factoryId === "") {
+      showToast("璇烽�夋嫨宸ュ巶");
     } else {
       showToast("鐧诲綍涓紝璇疯�愬績绛夊緟...");
       pwdLogin();
@@ -254,7 +290,10 @@
       const accountInfo = uni.getAccountInfoSync();
       if (accountInfo?.miniProgram?.version) {
         versionName.value = accountInfo.miniProgram.version;
-        console.log("[login-version] 褰撳墠鐜=MP-WEIXIN锛岀増鏈�=", versionName.value);
+        console.log(
+          "[login-version] 褰撳墠鐜=MP-WEIXIN锛岀増鏈�=",
+          versionName.value
+        );
       }
     } catch (e) {
       // 鑾峰彇澶辫触鏃朵娇鐢ㄩ粯璁ゅ��
@@ -270,18 +309,27 @@
         // @ts-ignore
         const appid = plus.runtime.appid;
         // @ts-ignore
-        plus.runtime.getProperty(appid, (info) => {
+        plus.runtime.getProperty(appid, info => {
           const v = info?.version || info?.versionName || "";
           if (v) {
             versionName.value = String(v);
-            console.log("[login-version] 褰撳墠鐜=APP-PLUS锛岀増鏈�=", versionName.value);
+            console.log(
+              "[login-version] 褰撳墠鐜=APP-PLUS锛岀増鏈�=",
+              versionName.value
+            );
           } else {
-            console.log("[login-version] APP-PLUS 鑾峰彇鍒扮殑鐗堟湰瀛楁涓虹┖锛屼娇鐢ㄩ粯璁ゅ��:", versionName.value);
+            console.log(
+              "[login-version] APP-PLUS 鑾峰彇鍒扮殑鐗堟湰瀛楁涓虹┖锛屼娇鐢ㄩ粯璁ゅ��:",
+              versionName.value
+            );
           }
           console.log("[login-version] 鏈�缁堢増鏈彿:", versionName.value);
         });
       } else {
-        console.log("[login-version] APP-PLUS 鐜涓嬬己灏� getProperty锛屼娇鐢ㄩ粯璁ゅ��:", versionName.value);
+        console.log(
+          "[login-version] APP-PLUS 鐜涓嬬己灏� getProperty锛屼娇鐢ㄩ粯璁ゅ��:",
+          versionName.value
+        );
         console.log("[login-version] 鏈�缁堢増鏈彿:", versionName.value);
       }
       // #endif
diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts
index 140e0a3..07b0f1c 100644
--- a/src/store/modules/user.ts
+++ b/src/store/modules/user.ts
@@ -1,9 +1,9 @@
-import {logout, getInfo, loginCheckFactory} from "@/api/login";
+import { logout, getInfo, loginCheckFactory } from "@/api/login";
 import { getRouters as getRoutersApi } from "@/api/menu";
 import { getToken, setToken, removeToken } from "@/utils/auth";
 import defAva from "@/static/images/profile.jpg";
 import { defineStore } from "pinia";
-import config from '@/config.js'
+import config from "@/config.js";
 
 export interface LoginForm {
   userName: string;
@@ -28,43 +28,54 @@
   actions: {
     // 閮ㄩ棬鐧诲綍
     loginCheckFactory(userInfo: any) {
-      const userName = userInfo.userName
-      const password = userInfo.password
+      const userName = userInfo.userName.trim();
+      const password = userInfo.password;
+      const factoryId = userInfo.factoryId;
       return new Promise((resolve, reject) => {
-        loginCheckFactory(userName, password).then((res: any) => {
-          setToken(res.token)
-          this.token = res.token
-          resolve(null)
-        }).catch((error: any) => {
-          reject(error)
-        })
-      })
+        loginCheckFactory(userName, password, factoryId)
+          .then((res: any) => {
+            const token = res.token || res.data?.token;
+            if (token) {
+              setToken(token);
+              this.token = token;
+              resolve(null);
+            } else {
+              reject("鏈幏鍙栧埌鐧诲綍浠ょ墝");
+            }
+          })
+          .catch((error: any) => {
+            reject(error);
+          });
+      });
     },
     // 鑾峰彇鐢ㄦ埛淇℃伅
     getInfo() {
       return new Promise((resolve, reject) => {
         getInfo()
           .then((res: any) => {
-            const user = res.user
-            let avatar = user.avatar || ""
-            avatar = config.baseUrl + '/profile/' + avatar
-            if (res.roles && res.roles.length > 0) { // 楠岃瘉杩斿洖鐨剅oles鏄惁鏄竴涓潪绌烘暟缁�
-              this.roles = res.roles
-              this.permissions = res.permissions
+            // 鍏煎 res.data 缁撴瀯
+            const data = res.data || res;
+            const user = data.user || {};
+            let avatar = user.avatar || "";
+            avatar = config.baseUrl + "/profile/" + avatar;
+            if (data.roles && data.roles.length > 0) {
+              // 楠岃瘉杩斿洖鐨剅oles鏄惁鏄竴涓潪绌烘暟缁�
+              this.roles = data.roles;
+              this.permissions = data.permissions;
             } else {
-              this.roles = ['ROLE_DEFAULT']
+              this.roles = ["ROLE_DEFAULT"];
             }
-            this.id = user.userId
-            this.name = user.userName
-            this.avatar = avatar
-            this.currentFactoryName = user.currentFactoryName
-            this.nickName = user.nickName
-            this.roleName = user.roles[0].roleName
-            this.currentDeptId = user.tenantId
-            this.currentLoginTime = this.getCurrentTime()
-            resolve(res);
+            this.id = user.userId || "";
+            this.name = user.userName || "";
+            this.avatar = avatar;
+            this.currentFactoryName = user.currentFactoryName || "";
+            this.nickName = user.nickName || "";
+            this.roleName = Array.isArray(user.roles) && user.roles.length > 0 ? user.roles[0].roleName || "" : "";
+            this.currentDeptId = user.tenantId || "";
+            this.currentLoginTime = this.getCurrentTime();
+            resolve(data);
           })
-          .catch((error) => {
+          .catch(error => {
             reject(error);
           });
       });
@@ -83,19 +94,19 @@
             removeToken();
             resolve(null);
           })
-          .catch((error) => {
+          .catch(error => {
             reject(error);
           });
       });
     },
     getCurrentTime() {
       const now = new Date();
-      const year = now.getFullYear();       // 鑾峰彇骞翠唤
-      const month = String(now.getMonth() + 1).padStart(2, '0');  // 鏈堜唤浠�0寮�濮嬶紝瑕�+1锛屽苟琛ラ浂
-      const day = String(now.getDate()).padStart(2, '0');         // 鏃ユ湡琛ラ浂
-      const hours = String(now.getHours()).padStart(2, '0');      // 灏忔椂琛ラ浂
-      const minutes = String(now.getMinutes()).padStart(2, '0');  // 鍒嗛挓琛ラ浂
-      const seconds = String(now.getSeconds()).padStart(2, '0');  // 绉掓暟琛ラ浂
+      const year = now.getFullYear(); // 鑾峰彇骞翠唤
+      const month = String(now.getMonth() + 1).padStart(2, "0"); // 鏈堜唤浠�0寮�濮嬶紝瑕�+1锛屽苟琛ラ浂
+      const day = String(now.getDate()).padStart(2, "0"); // 鏃ユ湡琛ラ浂
+      const hours = String(now.getHours()).padStart(2, "0"); // 灏忔椂琛ラ浂
+      const minutes = String(now.getMinutes()).padStart(2, "0"); // 鍒嗛挓琛ラ浂
+      const seconds = String(now.getSeconds()).padStart(2, "0"); // 绉掓暟琛ラ浂
       return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
     },
     // 鑾峰彇璺敱鏉冮檺
@@ -107,7 +118,7 @@
             this.routers = res.data || [];
             resolve(res);
           })
-          .catch((error) => {
+          .catch(error => {
             reject(error);
           });
       });

--
Gitblit v1.9.3