瀏覽代碼

feat: 新增登录页面和登录客户端方法调用

cuiyalong 10 月之前
父節點
當前提交
101111b70f
共有 6 個文件被更改,包括 123 次插入1 次删除
  1. 2 1
      frontend/package.json
  2. 57 0
      frontend/src/store/index.js
  3. 46 0
      frontend/src/views/Login.vue
  4. 2 0
      frontend/wailsjs/go/main/App.d.ts
  5. 4 0
      frontend/wailsjs/go/main/App.js
  6. 12 0
      server.go

+ 2 - 1
frontend/package.json

@@ -11,7 +11,8 @@
   "dependencies": {
     "element-plus": "^2.8.2",
     "vue": "^3.2.37",
-    "vue-router": "^4.4.3"
+    "vue-router": "^4.4.3",
+    "vuex": "^4.0.2"
   },
   "devDependencies": {
     "@vitejs/plugin-vue": "^3.0.3",

+ 57 - 0
frontend/src/store/index.js

@@ -0,0 +1,57 @@
+// src/store/index.js
+import { createStore } from 'vuex';
+import { House, Setting, Help } from '@element-plus/icons-vue';
+// import { login } from '../api/modules/home'
+import { Login } from "../../wailsjs/go/main/App"
+
+const iconComponents = {
+  house: House,
+  setting: Setting,
+  help: Help,
+};
+
+export default createStore({
+    state: {
+        isAuthenticated: false,
+        userInfo:{},
+        menuConfig: {
+            admin: [
+                { title: '首页', icon:iconComponents.house, path: '/' },
+                { title: '设置', icon:iconComponents.setting, path: '/setting' },
+                { title: '帮助', icon:iconComponents.help, path: '/help' },
+                // 更多管理员菜单项
+            ],
+            user: [
+                { title: '首页', icon:iconComponents.house, path: '/' },
+                { title: '帮助', icon:iconComponents.help, path: '/help' },
+                // 更多普通用户菜单项
+            ],
+        },
+    },
+    mutations: {
+        SET_AUTHENTICATED(state, payload) {
+            state.isAuthenticated = payload;
+        },
+        SET_USER_INFO(state, payload) {
+            state.userInfo = payload;
+        },
+    },
+    actions: {
+        async login({ commit }, credentials) {
+            // login(credentials)
+            const r = await Login(credentials.username, credentials.password)
+            console.log(r)
+
+            // console.log("登录信息:",credentials)
+            commit('SET_USER_INFO', credentials);
+            commit('SET_AUTHENTICATED', true);
+        },
+        logout({ commit }) {
+            commit('SET_AUTHENTICATED', false);
+        },
+    },
+    getters: {
+        // 定义一个 Getter 来获取当前登录用户的信息
+        getCurrentUser: (state) => state.userInfo,
+    }
+});

+ 46 - 0
frontend/src/views/Login.vue

@@ -0,0 +1,46 @@
+<template>
+    <el-card>
+        <Navigator pageTitle="用户登录" />
+        <div class="space"></div>
+        <el-row>
+            <el-col :span="6"></el-col>
+            <el-col :span="9">
+                <el-form :model="form" label-width="auto" style="max-width: 300px">
+                    <el-form-item label="用户名">
+                        <el-input v-model="form.username" placeholder="请输入用户名" />
+                    </el-form-item>
+                    <el-form-item label="密码">
+                        <el-input type="password" v-model="form.password" placeholder="请输入密码"></el-input>
+                    </el-form-item>
+                    <el-form-item style="text-align: center;">
+                        <el-button text>
+                            <el-icon><UserFilled /></el-icon>忘记密码
+                        </el-button>
+                        <el-button type="primary" @click="doLogin">
+                            <el-icon><Lock /></el-icon> 登录
+                        </el-button>
+                    </el-form-item>
+                </el-form>
+            </el-col>
+            <el-col :span="9"></el-col>
+        </el-row>
+    </el-card>
+</template>
+<script setup>
+import { ref } from 'vue';
+import Navigator from '../components/Navigator.vue'
+import { useStore } from 'vuex';
+import { useRouter } from 'vue-router';
+
+const store = useStore();
+const router = useRouter();
+
+const form = ref({})
+//
+const doLogin = async () => {
+    //TODO 这里需要调用后台方法实现登录
+    const r = await store.dispatch('login', {...form.value});
+    console.log(r)
+    // router.push({ name: 'Home' });
+}
+</script>

+ 2 - 0
frontend/wailsjs/go/main/App.d.ts

@@ -18,6 +18,8 @@ export function ImportSpiderConfigByExcelFile(arg1:string):Promise<string>;
 
 export function LoadSpiderConfigAll(arg1:number,arg2:number):Promise<Array<main.SpiderConfig>>;
 
+export function Login(arg1:string,arg2:string):Promise<{[key: string]: any}>;
+
 export function PutLoginState(arg1:boolean):Promise<string>;
 
 export function SaveOrUpdateSpiderConfig(arg1:main.SpiderConfig):Promise<string>;

+ 4 - 0
frontend/wailsjs/go/main/App.js

@@ -34,6 +34,10 @@ export function LoadSpiderConfigAll(arg1, arg2) {
   return window['go']['main']['App']['LoadSpiderConfigAll'](arg1, arg2);
 }
 
+export function Login(arg1, arg2) {
+  return window['go']['main']['App']['Login'](arg1, arg2);
+}
+
 export function PutLoginState(arg1) {
   return window['go']['main']['App']['PutLoginState'](arg1);
 }

+ 12 - 0
server.go

@@ -0,0 +1,12 @@
+package main
+
+import (
+	"fmt"
+	"time"
+)
+// CountYestodayArts
+func (a *App) Login(username,password string) map[string]interface{}{
+	fmt.Println(username,password)
+	time.Sleep(2*time.Second)
+	return map[string]interface{}{"error": 1}
+}