Ver Fonte

feat: PleaseFillIn

liming há 1 dia atrás
pai
commit
4555239b97

+ 1 - 0
package.json

@@ -35,6 +35,7 @@
     "axios": "^1.10.0",
     "clipboard": "^2.0.11",
     "cordova-plugin-fingerprint-aio": "^6.0.0",
+    "crypto-js": "^4.2.0",
     "dayjs": "^1.11.13",
     "less": "^4.3.0",
     "less-loader": "^12.3.0",

+ 2 - 3
src/i18n/zhHk/form.js

@@ -1,14 +1,13 @@
 export default {
   Submit: "提交",
   ConfirmCreation: "確定創建",
-  
+
   WalletName: "錢包名稱",
   WalletPassword: "錢包密碼",
   ConfirmPassword: "確認密碼",
   CreateWallet: "創建錢包",
   PromptMessage: "提示信息",
-InconsistentPasswords: "兩次密碼不一致",
-
+  InconsistentPasswords: "兩次密碼不一致",
 
   PleaseFillIn: "請填寫",
 };

+ 0 - 1
src/layout/app/index.vue

@@ -57,7 +57,6 @@ const tabbarOptions = [
 
 onBeforeMount(async () => {
   const height = await getNotchHeight();
- 
   if (route.meta.navbar) {
     mainStyle.value.marginTop = `0 px`;
   } else {

+ 32 - 0
src/utils/crypto.js

@@ -0,0 +1,32 @@
+import CryptoJS from 'crypto-js'
+
+
+const KEY = 'wkwwkwwkwwkwwkwA'
+
+/**
+ * * 加密
+ * @param data { string }
+ * @returns { string } 加密后的数据
+ */
+export const cryptoEncode = (data) => {
+  const key = CryptoJS.enc.Utf8.parse(KEY);
+  const iv = CryptoJS.lib.WordArray.random(16); // 随机生成16字节的IV
+  const encrypted = CryptoJS.AES.encrypt(data, key, {
+    mode: CryptoJS.mode.CBC,
+    padding: CryptoJS.pad.Pkcs7,
+    iv: iv,
+  });
+  // 将IV与加密后的数据拼接并以特定格式返回,以便在Java中分离IV和加密后的数据
+  return iv.toString(CryptoJS.enc.Base64) + encrypted.toString();
+};
+
+export const cryptoDecode = (data) => {
+  const key = CryptoJS.enc.Utf8.parse(KEY);
+  const iv = CryptoJS.lib.WordArray.create(CryptoJS.enc.Utf8.parse(KEY).words.slice(0, 4)); // 前四个字节作为IV
+  const bytes = CryptoJS.AES.decrypt(data, key, {
+      iv: iv,
+      mode: CryptoJS.mode.ECB,
+      padding: CryptoJS.pad.Pkcs7
+  });
+  return bytes.toString(CryptoJS.enc.Utf8);
+}

+ 20 - 5
src/views/login/createWallet/index.vue

@@ -5,7 +5,7 @@
         v-model="form.username"
         name="username"
         :label="$t('form.WalletName')"
-        :placeholder="$t('form.WalletName')"
+        :placeholder="$t('form.PleaseFillIn') + $t('form.WalletName')"
         :rules="[
           {
             required: true,
@@ -18,7 +18,7 @@
         type="password"
         name="password"
         :label="$t('form.WalletPassword')"
-        :placeholder="$t('form.WalletPassword')"
+        :placeholder="$t('form.PleaseFillIn') + $t('form.WalletPassword')"
         :rules="[
           {
             required: true,
@@ -32,7 +32,7 @@
         type="password"
         name="confirmPassword"
         :label="$t('form.ConfirmPassword')"
-        :placeholder="$t('form.ConfirmPassword')"
+        :placeholder="$t('form.PleaseFillIn') + $t('form.ConfirmPassword')"
         :rules="[
           {
             required: true,
@@ -45,7 +45,7 @@
         v-model="form.promptMessage"
         name="promptMessage"
         :label="$t('form.PromptMessage')"
-        :placeholder="$t('form.PromptMessage')"
+        :placeholder="$t('form.PleaseFillIn') + $t('form.PromptMessage')"
         :rules="[
           {
             required: true,
@@ -63,6 +63,12 @@
 </template>
 
 <script setup>
+import _ from "lodash";
+import { useSystemStore } from "@/stores/modules/systemStore"
+import { cryptoEncode } from "@/utils/crypto.js"
+
+const router = useRouter();
+const systemStore = useSystemStore();
 const form = ref({});
 
 
@@ -71,8 +77,17 @@ const onSubmit = ()=>{
     $msg({ type: 'warning', message: $t("form.InconsistentPasswords") })
     return 
   }
+  let data = _.cloneDeep(form.value)
+  data.password = cryptoEncode(data.password)
+  systemStore.setStateValue({
+    key: "user_login_information",
+    value: data,
+    localStorage: true,
+  });
 
-  
+  router.push({
+    name: "main",
+  });
 }
 
 </script>