Michael Wang 3 жил өмнө
parent
commit
ad42991102

+ 38 - 6
src/store.ts

@@ -1,6 +1,8 @@
 import { Store } from "@/types";
 
-const store = {
+let _inited = false;
+
+const _store = {
   globalMask: false,
   env: {
     loginName: "",
@@ -8,13 +10,43 @@ const store = {
     server: "",
     user: {},
   },
-  config: window.electron.config || {
-    server: "",
-    loginName: "",
-    password: "",
-  },
+  config: JSON.parse(JSON.stringify(window.electron.config)) || {},
 } as Store;
 
+const handler = function () {
+  return {
+    // @ts-ignore
+    set(obj, prop, value) {
+      // console.log("set", obj, prop, value);
+      // @ts-ignore
+      obj[prop] = value;
+      window.sessionStorage.setItem("store", JSON.stringify(_store));
+      return true;
+    },
+    // @ts-ignore
+    get(obj, prop) {
+      // console.log("get", obj, prop);
+      if (!_inited) {
+        Object.assign(
+          _store,
+          JSON.parse(window.sessionStorage.getItem("store") || "{}")
+        );
+        _inited = true;
+      }
+      if (
+        ["[object Object]", "[object Array]"].indexOf(
+          Object.prototype.toString.call(obj[prop])
+        ) > -1
+      ) {
+        return new Proxy(obj[prop], handler());
+      }
+      // @ts-ignore
+      return obj[prop];
+    },
+  };
+};
+const store = new Proxy(_store, handler());
+
 export { store };
 
 // @ts-ignore

+ 7 - 7
src/views/features/Login/Login.vue

@@ -43,10 +43,10 @@ import { store } from "@/store";
 import { login } from "@/api/api";
 import router from "@/router";
 
-Object.assign(
-  window.electron.env,
-  JSON.parse(window.localStorage.getItem("env") || "{}")
-);
+// Object.assign(
+//   window.electron.env,
+//   JSON.parse(window.localStorage.getItem("env") || "{}")
+// );
 
 let server = ref(null);
 const servers = store.config.servers.map((v) => {
@@ -83,9 +83,9 @@ const loginAction = () => {
   //   return;
   // }
   login()
-    .then((user) => {
-      console.log(user);
-      Object.assign(store.env.user, user);
+    .then((res) => {
+      console.log(res.data);
+      Object.assign(store.env.user, res.data.user);
       window.localStorage.setItem("env", JSON.stringify(store.env));
       // window.location.href = 'exam-list.html'
       router.push("/home");