diff --git a/src/App.vue b/src/App.vue
index 7c3b360..3cdcc64 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,45 +1,47 @@
-
-
-
-
+
+
+
+
diff --git a/src/axios/api.js b/src/axios/api.js
index 257a092..978cab4 100644
--- a/src/axios/api.js
+++ b/src/axios/api.js
@@ -5,7 +5,7 @@ var CryptoJS = require("crypto-js");
// 更新本地 传参 data => cid pwd
export function syncLocal(data) {
- var sign = CryptoJS.MD5(JSON.stringify(data).replace(/\"/g,"'")).toString().toUpperCase();
+ var sign = CryptoJS.MD5(JSON.stringify(data).replace(/\"/g, "'")).toString().toUpperCase();
data.sign = sign
let params = new URLSearchParams();
params.append('data', JSON.stringify(data));
@@ -16,7 +16,7 @@ export function syncLocal(data) {
export function syncCloud(data) {
let data_cache = Object.assign({}, data)
delete data_cache.content
- var sign = CryptoJS.MD5(JSON.stringify(data_cache).replace(/\"/g,"'")).toString().toUpperCase();
+ var sign = CryptoJS.MD5(JSON.stringify(data_cache).replace(/\"/g, "'")).toString().toUpperCase();
data.sign = sign
let params = new URLSearchParams();
params.append('data', JSON.stringify(data));
diff --git a/src/axios/fetch.js b/src/axios/fetch.js
index 007bc98..9ffce35 100644
--- a/src/axios/fetch.js
+++ b/src/axios/fetch.js
@@ -10,7 +10,7 @@ export const api = axios.create({
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
- 'Access-Control-Allow-Origin': '*'
+ 'Access-Control-Allow-Origin': '*'
},
timeout: 10 * 1000
})
diff --git a/src/main.js b/src/main.js
index 28a38eb..6b95e75 100644
--- a/src/main.js
+++ b/src/main.js
@@ -3,7 +3,7 @@ import App from './App.vue'
import './registerServiceWorker'
import router from './router'
import store from './store'
-import { setHtmlFontSize } from './utils/px2rem.js'
+import { setHtmlFontSize } from './utils/px2rem.js'
// icon-loader
import Icon from 'vue-svg-icon/Icon.vue'
Vue.component('icon', Icon);
@@ -25,7 +25,7 @@ Vue.use(VueClipboard);
// 手势控件
var VueTouch = require('vue-touch')
-Vue.use(VueTouch, {name: 'v-touch'})
+Vue.use(VueTouch, { name: 'v-touch' })
// vconsole
import Vconsole from 'vconsole';
diff --git a/src/registerServiceWorker.js b/src/registerServiceWorker.js
index b79acf1..51b9b9f 100644
--- a/src/registerServiceWorker.js
+++ b/src/registerServiceWorker.js
@@ -4,29 +4,29 @@ import { register } from 'register-service-worker'
if (process.env.NODE_ENV === 'production') {
register(`${process.env.BASE_URL}service-worker.js`, {
- ready () {
+ ready() {
console.log(
'App is being served from cache by a service worker.\n' +
'For more details, visit https://goo.gl/AFskqB'
)
},
- registered () {
+ registered() {
console.log('Service worker has been registered.')
},
- cached () {
+ cached() {
console.log('Content has been cached for offline use.')
},
- updatefound () {
+ updatefound() {
console.log('New content is downloading.')
},
- updated () {
+ updated() {
console.log('New content is available; please refresh.')
window.location.reload(true)
},
- offline () {
+ offline() {
console.log('No internet connection found. App is running in offline mode.')
},
- error (error) {
+ error(error) {
console.error('Error during service worker registration:', error)
}
})
diff --git a/src/utils/aes.js b/src/utils/aes.js
index 03e766e..4b0b570 100644
--- a/src/utils/aes.js
+++ b/src/utils/aes.js
@@ -4,37 +4,37 @@ import CRC32 from 'crc-32'
// aes加密
export function encrypt(code, json_row) {
// 循环冗余校验
- let aesKey = CRC32.str(code)
+ let aesKey = CRC32.str(code)
// 取八位
- aesKey = aesKey.toString().slice(0,8)
+ aesKey = aesKey.toString().slice(0, 8)
// 字符串化
- let json_str = JSON.stringify(json_row)
+ let json_str = JSON.stringify(json_row)
// 加密
- return CryptoJS.AES.encrypt(json_str, CryptoJS.enc.Utf8.parse(aesKey), {
- mode: CryptoJS.mode.ECB,
- padding: CryptoJS.pad.Pkcs7
- }).toString();
+ return CryptoJS.AES.encrypt(json_str, CryptoJS.enc.Utf8.parse(aesKey), {
+ mode: CryptoJS.mode.ECB,
+ padding: CryptoJS.pad.Pkcs7
+ }).toString();
}
// aes解密
export function decrypt(code, encrypt_str) {
// 循环冗余校验
- let aesKey = CRC32.str(code)
+ let aesKey = CRC32.str(code)
// 取八位
- aesKey = aesKey.toString().slice(0,8)
+ aesKey = aesKey.toString().slice(0, 8)
// 解密
- return CryptoJS.AES.decrypt(encrypt_str, CryptoJS.enc.Utf8.parse(aesKey), {
- mode: CryptoJS.mode.ECB,
- padding: CryptoJS.pad.Pkcs7
- }).toString(CryptoJS.enc.Utf8);
+ return CryptoJS.AES.decrypt(encrypt_str, CryptoJS.enc.Utf8.parse(aesKey), {
+ mode: CryptoJS.mode.ECB,
+ padding: CryptoJS.pad.Pkcs7
+ }).toString(CryptoJS.enc.Utf8);
}
// aes加密用户密码
export function encryptMainCode(code) {
let default_key = 'e08b44a351a3'
return CryptoJS.AES.encrypt(code, CryptoJS.enc.Utf8.parse(default_key), {
- mode: CryptoJS.mode.ECB,
- padding: CryptoJS.pad.Pkcs7
+ mode: CryptoJS.mode.ECB,
+ padding: CryptoJS.pad.Pkcs7
}).toString();
}
@@ -42,7 +42,7 @@ export function encryptMainCode(code) {
export function decryptMainCode(row_code) {
let default_key = 'e08b44a351a3'
return CryptoJS.AES.decrypt(row_code, CryptoJS.enc.Utf8.parse(default_key), {
- mode: CryptoJS.mode.ECB,
- padding: CryptoJS.pad.Pkcs7
+ mode: CryptoJS.mode.ECB,
+ padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8);
}
\ No newline at end of file
diff --git a/src/utils/language.js b/src/utils/language.js
index 1872c99..0820587 100644
--- a/src/utils/language.js
+++ b/src/utils/language.js
@@ -43,9 +43,10 @@ export function lang() {
settings: {
CHS: {
title: '设置',
- subheader: ['重置', '选项'],
+ subheader: ['重置', '选项', '导入 / 导出'],
reset_list: ['账户', '密码本', '应用', '主密码'],
- option_list: ['语言', '黑暗模式', '密码超时时间'],
+ option_list: ['语言', '黑暗模式', '密码超时时间'],
+ import_export_list: ['导入密码本', '导出密码本'],
expired_time: '无限',
dialog: {
title: '输入新的主密码',
@@ -53,12 +54,24 @@ export function lang() {
confirm: '完成',
cancel: '取消'
},
+ copy: {
+ successful: '恭喜!已成功导出至剪切板',
+ failed: '抱歉,导出失败。夸克等浏览器导出成功也会报错,请试着粘贴看看'
+ },
+ import_dialog: {
+ title: '输入导入内容',
+ placeholder: '不要乱输入东西不然会坏掉',
+ confirm: '导入',
+ cancel: '取消'
+ },
snakebar_msg: {
reset_account: '恭喜! 账户重置完成',
reset_codebook: '恭喜! 密码本重置完成',
reset_settings: '恭喜! 个性化设置成功',
reset_pwd_failed: '密码不能为空',
- reset_pwd_successful: '恭喜! 新的密码已经应用'
+ reset_pwd_successful: '恭喜! 新的密码已经应用',
+ reset_row_data_failed: '密码本内容不能为空',
+ reset_row_data_successful: '恭喜! 新的密码本已经应用',
},
reset_dialog: {
title: '警告',
@@ -69,22 +82,35 @@ export function lang() {
},
EN: {
title: 'Settings',
- subheader: ['Reset', 'Option'],
+ subheader: ['Reset', 'Option', 'Import / Export'],
reset_list: ['Account', 'Codebook', 'Application', 'Main Password'],
option_list: ['Language', 'Dark Mode', 'Expired Time'],
- expired_time: 'Infinite',
+ expired_time: 'Infinite',
+ import_export_list: ['Import Codebook', 'Export Codebook'],
dialog: {
title: 'Enter new password',
placeholder: 'Enter here...',
confirm: 'Done',
cancel: 'Cancel'
},
+ copy: {
+ successful: 'congratulations! Successfully exported to the clipboard',
+ failed: 'Failed to export, but failed in some cases. Try to paste'
+ },
+ import_dialog: {
+ title: 'Enter new codebook content',
+ placeholder: 'Enter here...',
+ confirm: 'Done',
+ cancel: 'Cancel'
+ },
snakebar_msg: {
reset_account: 'Congratulations! Reset account completed',
reset_codebook: 'Congratulations! Reset codebook completed',
reset_settings: 'Congratulations! Reset settings completed',
reset_pwd_failed: 'Password can not be none',
- reset_pwd_successful: 'Congratulations! New password set up successfully'
+ reset_pwd_successful: 'Congratulations! New password set up successfully',
+ reset_row_data_failed: 'Codebook Content can not be none',
+ reset_row_data_successful: 'Congratulations! New Codebook Content set up successfully'
},
reset_dialog: {
title: 'Warning',
@@ -135,11 +161,11 @@ export function lang() {
generator: {
title: '生成密码',
subheader: ['结果', '设置'],
- length_setter:{
+ length_setter: {
label: '密码长度',
- options:['6 位', '12 位', '18 位', '24 位', '32 位']
+ options: ['6 位', '12 位', '18 位', '24 位', '32 位']
},
- settings:['包含大写', '包含小写', '包含数字', '包含符号'],
+ settings: ['包含大写', '包含小写', '包含数字', '包含符号'],
actions: ['生成', '复制', '关闭'],
code_res_empty: '未生成',
copy_successful: '(复制成功)',
@@ -154,12 +180,12 @@ export function lang() {
generator: {
title: 'Generate Password',
subheader: ['Results (click to copy)', 'Settings'],
- length_setter:{
+ length_setter: {
label: 'Password Length',
- options:['6 Digit', '12 Digit', '18 Digit', '24 Digit', '32 Digit']
+ options: ['6 Digit', '12 Digit', '18 Digit', '24 Digit', '32 Digit']
},
- settings:['Contain Uppercase', 'Contain Lowercase', 'Contain Number', 'Contain Symbol'],
- actions: ['Generate', 'Copy','Close'],
+ settings: ['Contain Uppercase', 'Contain Lowercase', 'Contain Number', 'Contain Symbol'],
+ actions: ['Generate', 'Copy', 'Close'],
code_res_empty: 'Not generated',
copy_successful: '(Copy successful)',
copy_failed: '(Failed to copy)',
@@ -175,7 +201,7 @@ export function lang() {
submit: '登录'
},
account: {
- label: ['云端信息最后修改时间','云端信息最后修改设备名', '同步本地密码本至云端', '同步云端密码本至本地'],
+ label: ['云端信息最后修改时间', '云端信息最后修改设备名', '同步本地密码本至云端', '同步云端密码本至本地'],
logout: '退出登录'
},
cid_errmsg: ['教务账号不能为空'],
@@ -197,7 +223,7 @@ export function lang() {
submit: 'Login'
},
account: {
- label: ['Cloud last modified time','Cloud last modified drivce', 'Sync local codebook to cloud', 'Sync cloud codebook to local'],
+ label: ['Cloud last modified time', 'Cloud last modified drivce', 'Sync local codebook to cloud', 'Sync cloud codebook to local'],
logout: 'Logout'
},
cid_errmsg: ['Mail addr can not be none.'],
@@ -214,9 +240,9 @@ export function lang() {
},
unlock: {
CHS: {
- title: ['创建主密码','解锁'],
+ title: ['创建主密码', '解锁'],
subheader: ['创建主密码', '解锁Canary Codebook'],
- pwd_label: ['主密码','解锁密码'],
+ pwd_label: ['主密码', '解锁密码'],
repeat_pwd: '再次输入主密码',
drivce_label: '请输入本设备名(多端同步用)',
enter: '提交',
@@ -232,9 +258,9 @@ export function lang() {
drivce_error: '设备名不能为空'
},
EN: {
- title: ['Create Password','Unlock'],
+ title: ['Create Password', 'Unlock'],
subheader: ['Create New Password', 'Unlock Canary Codebook'],
- pwd_label: ['New Password','Unlock Password'],
+ pwd_label: ['New Password', 'Unlock Password'],
repeat_pwd: 'Repeat Password',
drivce_label: 'pleace enter drivce name',
enter: 'Enter',
@@ -251,28 +277,28 @@ export function lang() {
}
},
generator: {
- CHS:{
+ CHS: {
title: '生成密码',
subheader: ['结果(点击复制)', '设置'],
- length_setter:{
+ length_setter: {
label: '密码长度',
- options:['6 位', '12 位', '18 位', '24 位', '32 位']
+ options: ['6 位', '12 位', '18 位', '24 位', '32 位']
},
- settings:['包含大写', '包含小写', '包含数字', '包含符号'],
+ settings: ['包含大写', '包含小写', '包含数字', '包含符号'],
submit: '生成',
generate_successful: '生成成功',
copy_successful: '复制成功',
copy_failed: '抱歉,复制失败。夸克等浏览器复制成功也会报错,请试着粘贴看看',
code_res_empty: '未生成'
},
- EN:{
+ EN: {
title: 'Generate Password',
subheader: ['Results (click to copy)', 'Settings'],
- length_setter:{
+ length_setter: {
label: 'Password Length',
- options:['6 Digit', '12 Digit', '18 Digit', '24 Digit', '32 Digit']
+ options: ['6 Digit', '12 Digit', '18 Digit', '24 Digit', '32 Digit']
},
- settings:['Contain Uppercase', 'Contain Lowercase', 'Contain Number', 'Contain Symbol'],
+ settings: ['Contain Uppercase', 'Contain Lowercase', 'Contain Number', 'Contain Symbol'],
submit: 'Generate',
generate_successful: 'Generated successfully',
copy_successful: 'Copy successful',
@@ -281,12 +307,20 @@ export function lang() {
}
},
update_log: {
- CHS:{
+ CHS: {
title: '更新日志',
timeline: [
+ {
+ label: '新增导入导出功能',
+ tag: '功能更新',
+ content: [
+ '为方便老用户转移数据或者自行备份数据,新增导入导出功能',
+ '2020-09-02'
+ ]
+ },
{
label: '修复密码本为空的情况下解锁页面变为创建主密码',
- tag:'bug修复',
+ tag: 'bug修复',
content: [
'密码本为空的情况下,解锁的页面会变成创建主密码,会进行不必要的输入,已修复',
'2020-09-02'
@@ -294,7 +328,7 @@ export function lang() {
},
{
label: '长理专版密码本改造完成',
- tag:'功能更新',
+ tag: '功能更新',
content: [
'获取了操作长理网盘的接口文档,为了用户信息安全性,将用户加密完的密码存放至网盘canary/codebook.txt',
'2020-09-01'
@@ -302,7 +336,7 @@ export function lang() {
},
{
label: '修复搜索后关闭搜索框密码本内容消失',
- tag:'bug修复',
+ tag: 'bug修复',
content: [
'进行搜索后关闭搜索框由于执行顺序问题,空缓存覆盖掉了要显示的信息导致密码本“视觉上”的消失,已修复',
'2020-03-24'
@@ -310,7 +344,7 @@ export function lang() {
},
{
label: '切换页面之后保存主页状态',
- tag:'bug修复',
+ tag: 'bug修复',
content: [
'正常情况下不保存主页状态进行页面跳转的时候会导致每次回到主页都是默认回顶的状态,已修复',
'2020-03-15'
@@ -318,7 +352,7 @@ export function lang() {
},
{
label: '设置中的重置功能优化',
- tag:'功能更新',
+ tag: '功能更新',
content: [
'所有重置操作之前会进行弹窗提醒,防止误操作',
'2020-03-08'
@@ -326,7 +360,7 @@ export function lang() {
},
{
label: '设置中的重置主密码功能启用',
- tag:'功能更新',
+ tag: '功能更新',
content: [
'设置中的重置主密码功能启用,重置后即可使用新密码解锁密码本,另改进了解锁页的密码错误判断逻辑',
'2020-03-08'
@@ -334,7 +368,7 @@ export function lang() {
},
{
label: '新建密码记录生成的密码支持复制',
- tag:'功能更新',
+ tag: '功能更新',
content: [
'在新建密码页生成密码支持一键复制',
'2020-03-07'
@@ -342,7 +376,7 @@ export function lang() {
},
{
label: '修复云端最后修改时间不更新的问题',
- tag:'bug修复',
+ tag: 'bug修复',
content: [
'之前同步密码本至本地后云端最后修改时间不会同时更新,现已修复',
'2020-03-06'
@@ -350,7 +384,7 @@ export function lang() {
},
{
label: '新增页面返回手势',
- tag:'功能更新',
+ tag: '功能更新',
content: [
'所有子页面支持右滑返回上一页面',
'2020-03-06'
@@ -358,7 +392,7 @@ export function lang() {
},
{
label: '新建密码记录时支持生成密码',
- tag:'功能更新',
+ tag: '功能更新',
content: [
'新建密码记录页的的密码输入框右侧支持打开生成密码页',
'2020-03-05'
@@ -366,7 +400,7 @@ export function lang() {
},
{
label: '修复黑暗模式下主页分割线显示问题',
- tag:'bug修复',
+ tag: 'bug修复',
content: [
'之前黑暗模式下主页密码分割线过亮,造成强烈的视觉撕裂感,现已修复',
'2020-03-04'
@@ -374,7 +408,7 @@ export function lang() {
},
{
label: '新增控制台vConsole',
- tag:'功能更新',
+ tag: '功能更新',
content: [
'主页呼出菜单栏点击头像十次即可唤出或隐藏控制台',
'2020-03-04'
@@ -382,7 +416,7 @@ export function lang() {
},
{
label: '扩大一键回顶点击面积',
- tag:'功能更新',
+ tag: '功能更新',
content: [
'一键回顶点击范围从标题文字延展到整个导航栏非功能区',
'2020-03-03'
@@ -390,7 +424,7 @@ export function lang() {
},
{
label: '新增更新日志页',
- tag:'功能更新',
+ tag: '功能更新',
content: [
'主页呼出菜单栏即可发现功能入口',
'2020-03-03'
@@ -398,7 +432,7 @@ export function lang() {
},
{
label: '新增一键回顶',
- tag:'功能更新',
+ tag: '功能更新',
content: [
'在主页点击导航栏页面标题即可一键回顶',
'2020-03-02'
@@ -406,7 +440,7 @@ export function lang() {
},
{
label: '新增密码生成页',
- tag:'功能更新',
+ tag: '功能更新',
content: [
'主页呼出菜单栏即可发现功能入口',
'2020-02-29'
@@ -414,7 +448,7 @@ export function lang() {
},
{
label: '新增呼出菜单手势',
- tag:'功能更新',
+ tag: '功能更新',
content: [
'在主页非导航栏任意处右滑即可呼出菜单栏',
'2020-02-26'
@@ -422,12 +456,20 @@ export function lang() {
}
]
},
- EN:{
+ EN: {
title: 'Update Log',
timeline: [
+ {
+ label: 'New import and export function',
+ tag: 'Feature update',
+ content: [
+ 'In order to facilitate old users to transfer data or backup data by themselves, new import and export function is added',
+ '2020-09-02'
+ ]
+ },
{
label: 'Fix that the unlock page becomes create master password when the password book is empty',
- tag:'Bug fix',
+ tag: 'Bug fix',
content: [
'When the password book is empty, the unlocked page will become the creation of the master password, and unnecessary input will be made, which is fixed',
'2020-09-02'
@@ -435,7 +477,7 @@ export function lang() {
},
{
label: 'Changli special edition codebook transformation completed',
- tag:'Feature update',
+ tag: 'Feature update',
content: [
'Obtained the interface document for operating the Changli network disk, and stored the encrypted password of the user in the network disk for the security of user information canary/codebook.txt',
'2020-09-01'
@@ -443,7 +485,7 @@ export function lang() {
},
{
label: 'Fixed search box password content disappeared after searching',
- tag:'Bug fix',
+ tag: 'Bug fix',
content: [
'Close the search box after searching. Due to the execution order problem, the empty cache has overwritten the information to be displayed, causing the codebook to "visually" disappear. It has been fixed.',
'2020-03-24'
@@ -451,7 +493,7 @@ export function lang() {
},
{
label: 'Save homepage status after switching pages',
- tag:'Bug fix',
+ tag: 'Bug fix',
content: [
'Normally, when you do n’t save the homepage state, the page jump will result in the default backing state every time you return to the homepage.',
'2020-03-15'
@@ -459,7 +501,7 @@ export function lang() {
},
{
label: 'Optimization of reset function in settings',
- tag:'Feature update',
+ tag: 'Feature update',
content: [
'Pop-up window reminder before all reset operations to prevent misoperation',
'2020-03-08'
@@ -467,7 +509,7 @@ export function lang() {
},
{
label: 'The reset master password function is enabled in the settings',
- tag:'Feature update',
+ tag: 'Feature update',
content: [
'The reset master password function is enabled in the settings. After resetting, you can use the new password to unlock the password book, and improve the password error judgment logic on the unlock page',
'2020-03-08'
@@ -475,7 +517,7 @@ export function lang() {
},
{
label: 'Generated passwords support replication',
- tag:'Feature update',
+ tag: 'Feature update',
content: [
'Generate a password on the new password page',
'2020-03-07'
@@ -483,7 +525,7 @@ export function lang() {
},
{
label: 'Fix the problem that the last modification time of the cloud is not updated',
- tag:'Bug fix',
+ tag: 'Bug fix',
content: [
'The last modified time in the cloud will not be updated at the same time after syncing the password book to the local, it is now fixed',
'2020-03-06'
@@ -491,7 +533,7 @@ export function lang() {
},
{
label: 'Add page back gesture',
- tag:'Feature update',
+ tag: 'Feature update',
content: [
'All subpages support swiping right to return to the previous page',
'2020-03-06'
@@ -499,7 +541,7 @@ export function lang() {
},
{
label: 'Support password generation when creating new password records',
- tag:'Feature update',
+ tag: 'Feature update',
content: [
'The right side of the password input box of the new password record page supports opening a generate password page',
'2020-03-05'
@@ -507,7 +549,7 @@ export function lang() {
},
{
label: 'Fixed display of homepage split line in dark mode',
- tag:'Bug fix',
+ tag: 'Bug fix',
content: [
'The homepage password dividing line was too bright in the dark mode, causing a strong visual tearing.',
'2020-03-04'
@@ -515,7 +557,7 @@ export function lang() {
},
{
label: 'Add vConsole',
- tag:'Feature update',
+ tag: 'Feature update',
content: [
'Home callout menu bar Click the avatar ten times to call up or hide the console',
'2020-03-04'
@@ -523,7 +565,7 @@ export function lang() {
},
{
label: 'Expand one click back to top click area',
- tag:'Feature update',
+ tag: 'Feature update',
content: [
'The one-click back to top click extends from the title text to the non-functional area of the entire navigation bar',
'2020-03-03'
@@ -531,7 +573,7 @@ export function lang() {
},
{
label: 'New update log page',
- tag:'Feature update',
+ tag: 'Feature update',
content: [
'Call out the menu bar on the homepage to find the function entry',
'2020-03-03'
@@ -539,7 +581,7 @@ export function lang() {
},
{
label: 'Added one-click back to top',
- tag:'Feature update',
+ tag: 'Feature update',
content: [
'Click the navigation page title on the homepage to return to the top with one click',
'2020-03-02'
@@ -547,7 +589,7 @@ export function lang() {
},
{
label: 'New password generation page',
- tag:'Feature update',
+ tag: 'Feature update',
content: [
'Call out the menu bar on the homepage to find the function entry',
'2020-02-29'
@@ -555,7 +597,7 @@ export function lang() {
},
{
label: 'Added callout menu gesture',
- tag:'Feature update',
+ tag: 'Feature update',
content: [
'Swipe right anywhere on the homepage other than the navigation bar to bring up the menu bar。',
'2020-02-26'
@@ -570,10 +612,10 @@ export function lang() {
/**
* 引入
import { lang } from '@/utils/language.js'
-
+
* data 里边加入lang
data -> lang
-
+
* create() 初始化语言系统,防止报错
this.lang = lang().home.CHS
console.log('临时语言系统加载完成')
diff --git a/src/views/Account/Account.vue b/src/views/Account/Account.vue
index 3e66541..d754254 100644
--- a/src/views/Account/Account.vue
+++ b/src/views/Account/Account.vue
@@ -1,431 +1,505 @@
-
-
-
-
- arrow_back
-
{{ lang.title }}
-
-
+
+
+
+
+
+ arrow_back
+
+
{{ lang.title }}
+
+
-
-
-
-
-
-
-
-
- {{ cid_errmsg }}
-
+
+
+
+
+
+
+
+
+ {{ cid_errmsg }}
+
-
-
-
- {{ lang.login.password_errmsg }}
-
-
- {{ lang.login.submit }}
-
-
-
+
+
+
+ {{ lang.login.password_errmsg }}
+
+
+ {{ lang.login.submit }}
+
+
+
+
+
-
-
-
- {{ user_infos.cid }} | {{ user_infos.user_name }}
-
+
+
+
+ {{ user_infos.cid }} | {{ user_infos.user_name }}
+
-
+
-
- {{ lang.account.label[0] }}
- {{ update_time }}
-
+
+ {{ lang.account.label[0] }}
+ {{ update_time }}
+
-
- {{ lang.account.label[1] }}
- {{ user_infos.cloud_drivce }}
-
+
+ {{ lang.account.label[1] }}
+ {{ user_infos.cloud_drivce }}
+
-
- {{ lang.account.label[2] }}
- cloud_upload
-
-
+
+ {{ lang.account.label[2] }}
+
+ cloud_upload
+
+
+
-
- {{ lang.account.label[3] }}
- cloud_download
-
-
+
+ {{ lang.account.label[3] }}
+
+ cloud_download
+
+
+
- {{ lang.account.logout }}
-
-
-
- {{ snakebar_msg }}
-
-
-
-
-
+ {{ lang.account.logout }}
+
+
+
+ {{ snakebar_msg }}
+
+
+
+
+
diff --git a/src/views/Add/Add.vue b/src/views/Add/Add.vue
index 53d9779..291ea6f 100644
--- a/src/views/Add/Add.vue
+++ b/src/views/Add/Add.vue
@@ -115,7 +115,7 @@ import {
encrypt,
decrypt,
encryptMainCode,
- decryptMainCode
+ decryptMainCode,
} from "@/utils/aes.js";
import { lang } from "@/utils/language.js";
import { setHtmlFontSize } from "@/utils/px2rem.js";
@@ -148,11 +148,11 @@ export default {
// 密码长度
code_length: 12,
// 密码复制状态
- copy_state: ""
+ copy_state: "",
};
},
computed: {
- ...mapState(["row_data", "row_pwd", "settings"])
+ ...mapState(["row_data", "row_pwd", "settings"]),
},
methods: {
...mapActions(["setRowData", "setRowPwd"]),
@@ -260,7 +260,7 @@ export default {
user_name: this.user_name,
password: this.password,
node: this.node,
- web_address: this.web_address
+ web_address: this.web_address,
};
// 解密主密码
let main_code_decrpt = decryptMainCode(this.row_pwd.main_code);
@@ -292,7 +292,7 @@ export default {
user_name: this.user_name,
password: this.password,
node: this.node,
- web_address: this.web_address
+ web_address: this.web_address,
};
// 解密主密码
let main_code_decrpt = decryptMainCode(this.row_pwd.main_code);
@@ -363,7 +363,7 @@ export default {
setTimeout(() => {
this.copy_state = "";
}, 2000);
- }
+ },
},
created() {
this.lang = lang().add.CHS;
@@ -381,12 +381,12 @@ export default {
},
watch: {
// 如果 `clientHeight` 发生改变,这个函数就会运行
- clientHeight: function() {
+ clientHeight: function () {
this.changeFixed(this.clientHeight);
- }
+ },
},
beforeDestroy() {},
- components: {}
+ components: {},
};
diff --git a/src/views/Detail/Detail.vue b/src/views/Detail/Detail.vue
index b7ad22e..217aae2 100644
--- a/src/views/Detail/Detail.vue
+++ b/src/views/Detail/Detail.vue
@@ -1,313 +1,359 @@
-
-
-
-
- arrow_back
-
{{ content.title }}
-
-
- edit
- delete
-
-
+
+
+
+
+
+ arrow_back
+
+
{{ content.title }}
+
+
+
+ edit
+
+
+ delete
+
+
+
-
-
-
-
-
-
-
-
{{ content.user_name }}
-
-
-
-
-
-
-
-
-
{{ show_password ? content.password : doitPassword }}
-
remove_red_eye
-
-
-
-
-
-
-
-
-
{{ content.web_address ? content.web_address : lang.empty_placeholder }}
-
open_in_new
-
-
-
-
-
-
{{ content.node ? content.node : lang.empty_placeholder }}
-
-
-
-
-
- {{ snakebar_msg }}
-
-
-
-
-
+
+
+
+
+
+
+
+
{{ content.user_name }}
+
+
+
+
+
+
+
+
+
{{ show_password ? content.password : doitPassword }}
+
+ remove_red_eye
+
+
+
+
+
+
+
+
+
+
{{ content.web_address ? content.web_address : lang.empty_placeholder }}
+
+ open_in_new
+
+
+
+
+
+
+
{{ content.node ? content.node : lang.empty_placeholder }}
+
+
+
+
+
+ {{ snakebar_msg }}
+
+
+
+
+
diff --git a/src/views/Feedback/Feedback.vue b/src/views/Feedback/Feedback.vue
index 5098259..7282327 100644
--- a/src/views/Feedback/Feedback.vue
+++ b/src/views/Feedback/Feedback.vue
@@ -86,7 +86,7 @@
@@ -178,7 +181,7 @@ export default {
}
}
.code-card {
- padding: .3rem 0;
+ padding: 0.3rem 0;
border-bottom: 1px #eee solid;
}
}
diff --git a/src/views/Generator/Generator.vue b/src/views/Generator/Generator.vue
index 9d0dcf4..e5751d9 100644
--- a/src/views/Generator/Generator.vue
+++ b/src/views/Generator/Generator.vue
@@ -1,227 +1,252 @@
-
-
-
-
- arrow_back
-
{{ lang.title }}
-
-
+
+
+
+
+
+ arrow_back
+
+
{{ lang.title }}
+
+
-
-
-
-
-
- {{ lang.subheader[0] }}
-
- {{ code_res ? code_res : lang.code_res_empty }}
-
-
- {{ lang.subheader[1] }}
-
-
-
-
-
- {{ lang.length_setter.options[0] }}
- {{ lang.length_setter.options[1] }}
- {{ lang.length_setter.options[2] }}
- {{ lang.length_setter.options[3] }}
- {{ lang.length_setter.options[4] }}
-
-
-
-
-
- {{ lang.settings[0] }}
-
-
-
-
- {{ lang.settings[1] }}
-
-
-
-
- {{ lang.settings[2] }}
-
-
-
-
- {{ lang.settings[3] }}
-
-
- {{ lang.submit }}
-
-
- {{ snakebar_msg }}
-
-
-
-
-
+
+
+
+
+
+ {{ lang.subheader[0] }}
+
+ {{ code_res ? code_res : lang.code_res_empty }}
+
+
+ {{ lang.subheader[1] }}
+
+
+
+
+
+ {{ lang.length_setter.options[0] }}
+ {{ lang.length_setter.options[1] }}
+ {{ lang.length_setter.options[2] }}
+ {{ lang.length_setter.options[3] }}
+ {{ lang.length_setter.options[4] }}
+
+
+
+
+
+ {{ lang.settings[0] }}
+
+
+
+
+ {{ lang.settings[1] }}
+
+
+
+
+ {{ lang.settings[2] }}
+
+
+
+
+ {{ lang.settings[3] }}
+
+
+ {{ lang.submit }}
+
+
+ {{ snakebar_msg }}
+
+
+
+
+
diff --git a/src/views/Home/Home.vue b/src/views/Home/Home.vue
index 665af4e..30fed49 100644
--- a/src/views/Home/Home.vue
+++ b/src/views/Home/Home.vue
@@ -1,43 +1,54 @@
-
-
-
-
- menu
- {{ lang.title }}
-
-
-
-
-
-
-
-
+
+
+
+
+
+ menu
+
+ {{ lang.title }}
+
+
+
+
+
+
+
+
-
-
-
face
-
Canary Codebook
-
{{ user_infos.user_name }}
-
+
+
+
face
+
Canary Codebook
+
{{ user_infos.user_name }}
+
-
-
- person
- {{ lang.drawer[0] }}
-
+
+
+ person
+ {{ lang.drawer[0] }}
+
-
+ -->
-
- settings
- {{ lang.drawer[1] }}
-
+
+ settings
+ {{ lang.drawer[1] }}
+
-
- extension
- {{ lang.drawer[2] }}
-
+
+ extension
+ {{ lang.drawer[2] }}
+
-
- event_note
- {{ lang.drawer[3] }}
-
+
+ event_note
+ {{ lang.drawer[3] }}
+
-
- question_answer
- {{ lang.drawer[7] }}
-
+
+ question_answer
+ {{ lang.drawer[7] }}
+
-
- reply
- {{ lang.drawer[4] }}
-
+
+ reply
+ {{ lang.drawer[4] }}
+
-
- file_download
- {{ lang.drawer[5] }}
-
+
+ file_download
+ {{ lang.drawer[5] }}
+
-
- beenhere
- {{ lang.drawer[6] }}
-
-
-
+
+ beenhere
+ {{ lang.drawer[6] }}
+
+
+
-
-
-
-
- {{ lang.empty_state.button }}
-
+
+
+
+
+ {{ lang.empty_state.button }}
+
-
-
{{ code.title }}
-
{{ code.user_name }}
-
-
-
+
+
{{ code.title }}
+
{{ code.user_name }}
+
+
+
-
- add
-
+
+
+ add
+
+
-
- {{ snakebar_msg }}
-
-
-
-
-
+
+ {{ snakebar_msg }}
+
+
+
+
+
diff --git a/src/views/Settings/Settings.vue b/src/views/Settings/Settings.vue
index dfe3d33..a325fc2 100644
--- a/src/views/Settings/Settings.vue
+++ b/src/views/Settings/Settings.vue
@@ -1,422 +1,516 @@
-
-
-
-
- arrow_back
-
{{ lang.title }}
-
-
+
+
+
+
+
+ arrow_back
+
+
{{ lang.title }}
+
+
-
-
-
-
- {{ lang.subheader[0] }}
-
- person
- {{ lang.reset_list[0] }}
-
-
+
+
+
+
+ {{ lang.subheader[0] }}
+
+ person
+ {{ lang.reset_list[0] }}
+
+
-
- format_align_left
- {{ lang.reset_list[1] }}
-
-
+
+ format_align_left
+ {{ lang.reset_list[1] }}
+
+
-
- layers
- {{ lang.reset_list[2] }}
-
-
+
+ layers
+ {{ lang.reset_list[2] }}
+
+
-
- vpn_key
- {{ lang.reset_list[3] }}
-
+
+ vpn_key
+ {{ lang.reset_list[3] }}
+
-
+
- {{ lang.subheader[1] }}
-
- format_color_text
- {{ lang.option_list[0] }}
-
-
-
- brightness_6
- {{ lang.option_list[1] }}
-
-
+ {{ lang.subheader[1] }}
+
+ format_color_text
+ {{ lang.option_list[0] }}
+
+
+
+ brightness_6
+ {{ lang.option_list[1] }}
+
+
-
- update
-
-
-
- 5 min
- 10 min
- 15 min
- {{ lang.expired_time }}
-
-
-
-
+
+ update
+
+
+
+ 5 min
+ 10 min
+ 15 min
+ {{ lang.expired_time }}
+
+
+
-
-
-
+
-
- {{ snakebar_msg }}
-
-
-
-
-
+ {{ lang.subheader[2] }}
+
+
+ call_merge
+ {{ lang.import_export_list[0] }}
+
+
+
+ call_split
+ {{ lang.import_export_list[1] }}
+
+
+
+
+
+
+
+
+
+
+ {{ snakebar_msg }}
+
+
+
+
+
+ -->
-
+
-
{{ is_create ? lang.subheader[0] : lang.subheader[1] }}
+ {{ is_create ? lang.subheader[0] : lang.subheader[1] }}
-
-
-
- {{ err_msg }}
-
+
+
+
+ {{ err_msg }}
+
-
-
-
- {{ err_msg }}
-
+
+
+
+ {{ err_msg }}
+
-
-
-
- {{ drivce_err_msg }}
-
+
+
+
+ {{ drivce_err_msg }}
+
- {{ lang.enter }}
+ {{ lang.enter }}
- 此密码本为长理专版,未开启同步密码将加密后存放本地,开启同步密码将加密后存放在您的长理网盘中,请放心使用 点我加入用户群
+
+ 此密码本为长理专版,未开启同步密码将加密后存放本地,开启同步密码将加密后存放在您的长理网盘中,请放心使用
+ 点我加入用户群
+
-
+
-
- {{ snakebar_msg }}
-
-
+
+ {{ snakebar_msg }}
+
+
diff --git a/src/views/UpdateLog/UpdateLog.vue b/src/views/UpdateLog/UpdateLog.vue
index 71a930c..3e5aae7 100644
--- a/src/views/UpdateLog/UpdateLog.vue
+++ b/src/views/UpdateLog/UpdateLog.vue
@@ -1,149 +1,167 @@
-
-
-
-
- arrow_back
-
{{ lang.title }}
-
-
+
+
+
+
+
+ arrow_back
+
+
{{ lang.title }}
+
+
-
-
-
-
-
- {{ content }}
-
-
-
-
-
-
+
+
+
+
+
+ {{ content }}
+
+
+
+
+
+
diff --git a/src/views/test.js b/src/views/test.js
index 9a4e0f2..a738c14 100644
--- a/src/views/test.js
+++ b/src/views/test.js
@@ -1,31 +1,31 @@
this.show_list = [{
- open_count: 1,
- title: 'QQ',
- user_name: '1144131090',
- password: 'test',
- node: '测试用'
- },
- {
- open_count: 2,
- title: '微信',
- user_name: '15143211127',
- password: 'test',
- node: '测试用'
- },
- {
- open_count: 3,
- title: 'WIFI',
- user_name: 'admin',
- password: 'test',
- node: '测试用'
- },
- {
- open_count: 4,
- title: 'WeGame',
- user_name: '1144131090',
- password: 'test',
- node: '测试用'
- }
+ open_count: 1,
+ title: 'QQ',
+ user_name: '1144131090',
+ password: 'test',
+ node: '测试用'
+},
+{
+ open_count: 2,
+ title: '微信',
+ user_name: '15143211127',
+ password: 'test',
+ node: '测试用'
+},
+{
+ open_count: 3,
+ title: 'WIFI',
+ user_name: 'admin',
+ password: 'test',
+ node: '测试用'
+},
+{
+ open_count: 4,
+ title: 'WeGame',
+ user_name: '1144131090',
+ password: 'test',
+ node: '测试用'
+}
];
function test() {
@@ -44,4 +44,4 @@ let test_encode = encrypt('10aeff', '这是一段测试文本');
console.log('加密后', test_encode)
let test_decode = decrypt('10aefs', test_encode)
console.log('解密后', test_decode)
-console.log('类型', typeof(test_decode)) // 密码错误就是空字符串
+console.log('类型', typeof (test_decode)) // 密码错误就是空字符串