diff --git a/src/assets/images/oneFile.png b/src/assets/images/oneFile.png
new file mode 100644
index 0000000..bc8b70e
Binary files /dev/null and b/src/assets/images/oneFile.png differ
diff --git a/src/assets/images/DeleteButton.svg b/src/assets/svg/DeleteButton.svg
similarity index 100%
rename from src/assets/images/DeleteButton.svg
rename to src/assets/svg/DeleteButton.svg
diff --git a/src/assets/images/EditButton.svg b/src/assets/svg/EditButton.svg
similarity index 100%
rename from src/assets/images/EditButton.svg
rename to src/assets/svg/EditButton.svg
diff --git a/src/assets/images/WebsiteBanner.svg b/src/assets/svg/WebsiteBanner.svg
similarity index 100%
rename from src/assets/images/WebsiteBanner.svg
rename to src/assets/svg/WebsiteBanner.svg
diff --git a/src/components/Home/Header.vue b/src/components/Home/Header.vue
index 3890efd..ba243c9 100644
--- a/src/components/Home/Header.vue
+++ b/src/components/Home/Header.vue
@@ -13,6 +13,7 @@
+
diff --git a/src/components/Home/LoginDialog.vue b/src/components/Home/LoginDialog.vue
index 1a0dc48..c4f1fd9 100644
--- a/src/components/Home/LoginDialog.vue
+++ b/src/components/Home/LoginDialog.vue
@@ -70,7 +70,7 @@
append-to-body
:close-on-click-modal="false">
-
+
import axios from "axios";
import Vue from "vue";
+const checkPassword = (rule, value, callback) => {
+ var s_1_1 = "`1234567890-=";
+ var s_1_2 = "qwertyuiop[]\\";
+ var s_1_3 = "asdfghjkl;'";
+ var s_1_4 = "zxcvbnm,./";
+ var s_2_1 = "`1234567890-=";
+ var s_2_2 = "QWERTYUIOP[]\\";
+ var s_2_3 = "ASDFGHJKL;'";
+ var s_2_4 = "ZXCVBNM,./";
+ var s_3_1 = "~!@#$%^&*()_+";
+ var s_3_2 = "QWERTYUIOP{}|";
+ var s_3_3 = 'ASDFGHJKL:"';
+ var s_3_4 = "ZXCVBNM<>?";
+ var boolean = true;
+
+ for (var n = 0; n < value.length - 2; n++) {
+ var char = value[n] + value[n + 1] + value[n + 2];
+ if (
+ s_1_1.indexOf(char) >= 0 ||
+ s_1_2.indexOf(char) >= 0 ||
+ s_1_3.indexOf(char) >= 0 ||
+ s_1_4.indexOf(char) >= 0 ||
+ s_2_1.indexOf(char) >= 0 ||
+ s_2_2.indexOf(char) >= 0 ||
+ s_2_3.indexOf(char) >= 0 ||
+ s_2_4.indexOf(char) >= 0 ||
+ s_3_1.indexOf(char) >= 0 ||
+ s_3_2.indexOf(char) >= 0 ||
+ s_3_3.indexOf(char) >= 0 ||
+ s_3_4.indexOf(char) >= 0
+ ) {
+ boolean = false;
+ break;
+ }
+ }
+ console.log(boolean);
+ if (boolean == true) {
+ callback();
+ }
+ callback(new Error("密码中键盘顺序字符不得超过三个,请重新输入"));
+};
export default {
name: "LoginDialog",
@@ -162,6 +203,25 @@ export default {
password: [{required: true, message: "请输入密码", trigger: "blur"}],
code: [{required: true, message: "请输入验证码", trigger: "blur"}],
},
+ registerRules: {
+ username: [
+ // required:规则,o:失去焦点触发
+ {required: true, message: "请输入用户名", trigger: "blur"},
+ ],
+ password: [{required: true, message: "请输入密码", trigger: "blur"},
+ {
+ //插入正则验证:大小写、数字、至少8位、不常用字符
+ pattern:
+ /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@#!%^*?&+-])[A-Za-z\d$@#!%^*?&+-]{8,}/,
+ message: "密码应当至少8位且含有数字、大小写字母及特殊字符",
+ },
+
+
+ //rule中插入比较复杂的验证方法
+ { validator: checkPassword, trigger: "blur" },
+ ],
+ code: [{required: true, message: "请输入验证码", trigger: "blur"}],
+ },
}
},
methods:{
diff --git a/src/components/Home/PasswordStrength.vue b/src/components/Home/PasswordStrength.vue
new file mode 100644
index 0000000..55180cf
--- /dev/null
+++ b/src/components/Home/PasswordStrength.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{content}}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Monthly/Monthly.vue b/src/components/Monthly/Monthly.vue
index 4f0dcb0..278f62a 100644
--- a/src/components/Monthly/Monthly.vue
+++ b/src/components/Monthly/Monthly.vue
@@ -265,12 +265,12 @@ export default {
.el-carousel__item:nth-child(2n) {
background-size: cover;
- background-image: url("../../assets/images/WebsiteBanner.svg");
+ background-image: url("../../assets/svg/WebsiteBanner.svg");
}
.el-carousel__item:nth-child(2n+1) {
background-size: cover;
- background-image: url("../../assets/images/WebsiteBanner.svg");
+ background-image: url("../../assets/svg/WebsiteBanner.svg");
}
.card_style{
height:390px;
diff --git a/src/components/OneFile/OneFile.vue b/src/components/OneFile/OneFile.vue
new file mode 100644
index 0000000..33f7008
--- /dev/null
+++ b/src/components/OneFile/OneFile.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+ OneFile 汇集了一个文件、运行简单、一看就懂的开源项目。 包括:游戏、编译器、服务器、工具、实用库等有趣的开源项目,而且复制代码就能跑,点击即可在线查看源码和试玩。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 「OneFile」:一个开源项目,在这里你可以找到有趣运行简单的程序。同时它也是一个编程挑战,你也可以提交一个文件接受挑战。点击加入 OneFile 编程挑战,一个文件而已就写点有趣的代码吧!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/OneFile/OneFileDetail.vue b/src/components/OneFile/OneFileDetail.vue
new file mode 100644
index 0000000..907d71e
--- /dev/null
+++ b/src/components/OneFile/OneFileDetail.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Project/ProjectList.vue b/src/components/Project/ProjectList.vue
index f89f0f5..3005539 100644
--- a/src/components/Project/ProjectList.vue
+++ b/src/components/Project/ProjectList.vue
@@ -74,7 +74,7 @@ export default {
},
// 截取文章内容的前 35 个字,并加上省略号
brief: function() {
- return this.projectLists.projectDescription.substr(0, 40) + '...';
+ return this.projectLists.projectDescription.substr(0, 33) + '...';
},
},
diff --git a/src/components/System/AdminHome.vue b/src/components/System/AdminHome.vue
index 16d3080..acdd2a3 100644
--- a/src/components/System/AdminHome.vue
+++ b/src/components/System/AdminHome.vue
@@ -19,7 +19,7 @@
- 登录时间: 2023-7-9
+ 登录时间: {{loginTime}}
@@ -47,7 +47,7 @@
>
- 678993 /个
+ {{projectTotal}} /个
总共项目数量
@@ -67,7 +67,7 @@
>
- 678993 /个
+ {{userTotal}} /个
总共用户数量
@@ -87,7 +87,7 @@
>
- 678993 /个
+ {{AdminTotal}} /个
总共管理员数量
@@ -107,7 +107,7 @@
>
- 678993 /个
+ {{ArticleTotal}} /个
总共文章数量
@@ -127,7 +127,7 @@
>
- 678993 /个
+ {{CategoryTotal}} /个
总共标签数量
@@ -147,7 +147,7 @@
>
- 678993 /个
+ {{CommentTotal}} /个
总共评论数量
@@ -157,7 +157,9 @@
@@ -165,22 +167,340 @@