Skip to content

Commit 8e15187

Browse files
committed
2 parents d26e329 + fc13cdd commit 8e15187

File tree

7 files changed

+108
-26
lines changed

7 files changed

+108
-26
lines changed

src/assets/css/basic.css

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,26 +63,36 @@ h3::before {
6363
content: "# ";
6464
}
6565

66-
.markdown-container h1 {
66+
.markdown-container h1,
67+
.cm-header-1 {
6768
font-size: 30px;
6869
}
6970

70-
.markdown-container h2 {
71+
.markdown-container h2,
72+
.cm-header-2 {
7173
font-size: 23px;
7274
}
7375

74-
.markdown-container h3 {
76+
.markdown-container h3,
77+
.cm-header-3 {
7578
font-size: 18px;
7679
}
7780

78-
.markdown-container h4 {
81+
.markdown-container h4,
82+
.cm-header-4 {
7983
font-size: 17px;
8084
}
8185

82-
.markdown-container h5 {
86+
.markdown-container h5,
87+
.cm-header-5 {
8388
font-size: 14px;
8489
}
8590

91+
.cm-header,
92+
.cm-strong {
93+
font-weight: 400 !important;
94+
}
95+
8696
body {
8797
color: #606266;
8898
}

src/components/problem/edit.vue

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,9 @@ export default {
2626
methods: {
2727
loadproblem() {
2828
this.$axios
29-
.get(apiurl('/problem/content'), {
30-
params: {
31-
pid: this.$route.params.id
32-
}
33-
})
29+
.get(apiurl('/problem/' + String(this.$route.params.id)))
3430
.then(res => {
35-
let data = res.data;
31+
let data = res.data.res;
3632
this.title = data.title;
3733
this.mdContent = data.description;
3834
})

src/components/problem/submit.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,10 @@ export default {
118118
}
119119
this.buttonLoading = false;
120120
});
121-
}
121+
},
122+
},
123+
mounted() {
124+
this.lang_num = String(this.$store.state.user.userlang);
122125
}
123126
};
124127
</script>

src/components/user/content.vue

Lines changed: 68 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,51 @@
44
<el-card shadow="never">
55
<el-avatar shape="square" icon="el-icon-user-solid" :size="400"></el-avatar>
66
</el-card>
7+
<el-card class="item">
8+
<div slot="header" class="clearfix"><i class="el-icon-setting" /> Tool Bar</div>
9+
<el-button v-if="ismine" type="primary">Edit</el-button>
10+
<el-button @click="$router.go(-1);">Back</el-button>
11+
</el-card>
712
</div>
813
<div id="info">
9-
<el-card shadow="never">
10-
<div slot="header" class="clearfix"><i class="el-icon-user" /> User Name</div>
11-
{{username}}
12-
</el-card>
14+
<el-row :gutter="20">
15+
<el-col :span="18">
16+
<el-card shadow="never">
17+
<div slot="header" class="clearfix"><i class="el-icon-user" /> User Name</div>
18+
{{username}}
19+
</el-card>
20+
</el-col>
21+
<el-col :span="6">
22+
<el-card shadow="never">
23+
<div slot="header" class="clearfix"><i class="el-icon-warning-outline" /> User ID</div>
24+
{{userid}}
25+
</el-card>
26+
</el-col>
27+
</el-row>
1328
<el-card shadow="never" class="item">
1429
<div slot="header" class="clearfix"><i class="el-icon-message" /> Email</div>
1530
{{email}}
1631
</el-card>
17-
<el-card shadow="never" class="item">
18-
<div slot="header" class="clearfix"><i class="el-icon-check" /> Sloved</div>
19-
{{solved}} Problems
20-
</el-card>
32+
<el-row :gutter="20">
33+
<el-col :span="8">
34+
<el-card shadow="never" class="item">
35+
<div slot="header" class="clearfix"><i class="el-icon-check" /> Sloved</div>
36+
{{solved}} Problems
37+
</el-card>
38+
</el-col>
39+
<el-col :span="8">
40+
<el-card shadow="never" class="item">
41+
<div slot="header" class="clearfix"><i class="el-icon-upload2" /> Submited</div>
42+
{{submit}} Problems
43+
</el-card>
44+
</el-col>
45+
<el-col :span="8">
46+
<el-card shadow="never" class="item">
47+
<div slot="header" class="clearfix"><i class="el-icon-finished" /> AC Rate</div>
48+
<el-progress :text-inside="true" :stroke-width="24" :percentage="rate" status="success" :color="ACRateColorMode"></el-progress>
49+
</el-card>
50+
</el-col>
51+
</el-row>
2152
<el-card shadow="never" class="item">
2253
<div slot="header" class="clearfix"><i class="el-icon-chat-line-square" /> Introduction</div>
2354
<MarkdownContainer v-if="introduction" :content="introduction"/>
@@ -34,9 +65,14 @@ export default {
3465
name: 'UserHomepage',
3566
data() {
3667
return {
37-
username: '',
38-
email: '',
39-
introduction: null
68+
username: '-',
69+
userid: '-',
70+
email: '-',
71+
introduction: null,
72+
solved: '-',
73+
submit: '-',
74+
rate: '-',
75+
ismine: false
4076
};
4177
},
4278
methods: {
@@ -46,9 +82,20 @@ export default {
4682
.then(res => {
4783
let data = res.data.res;
4884
this.username = data.username;
85+
this.userid = data.id;
4986
this.email = data.email;
5087
this.introduction = data.introduction;
5188
this.solved = data.solved;
89+
this.submit = data.submit_time;
90+
if (this.solved == 0) {
91+
this.rate = 100;
92+
} else {
93+
this.rate = (this.solved * 100.0) / this.submit;
94+
this.rate = this.rate.toFixed(2);
95+
}
96+
if (this.userid == String(this.$store.state.user.userid)) {
97+
this.ismine = true;
98+
}
5299
})
53100
.catch(err => {
54101
if(err.request.status === 404) {
@@ -57,6 +104,16 @@ export default {
57104
this.$SegmentMessage.error(this, 'Unkown error');
58105
}
59106
});
107+
},
108+
ACRateColorMode(percentage) {
109+
if (percentage < 20) {
110+
return '#F56C6C';
111+
} else if (percentage < 30) {
112+
return '#E6A23C';
113+
} else if (percentage < 50) {
114+
return '#67C23A';
115+
}
116+
return '#409EFF';
60117
}
61118
},
62119
mounted() {

src/components/user/login.vue

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@ export default {
6565
password: this.ldata.password
6666
})
6767
.then(res => {
68+
this.$axios
69+
.get(apiurl('/account/' + res.data.res.id))
70+
.then(detail => {
71+
this.$store.commit('userLang', {
72+
lang: detail.data.res.lang
73+
});
74+
});
6875
this.$store.commit('userLogin', {
6976
username: this.ldata.username,
7077
userid: res.data.res.id

src/components/user/register.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,18 +73,19 @@ export default {
7373
rules: {
7474
username: [
7575
{ required: true, message: 'Input your username', trigger: 'blur' },
76-
{ max: 10, message: 'No more than 10 characters', trigger: 'blur' },
76+
{ max: 150, message: 'No more than 150 characters', trigger: 'blur' },
7777
{ validator: validateUsername, trigger: 'blur'}
7878
],
7979
password: [
8080
{ required: true, message: 'Input your password', trigger: 'blur' },
81-
{ min: 6, message: 'Password must be more than 6 characters', trigger: 'blur' }
81+
{ min: 6, message: 'No less than 6 characters', trigger: 'blur' }
8282
],
8383
passwdrepeat: [
8484
{ required: true, message: 'Repeat your password', trigger: 'blur' },
8585
{ validator: validatePasswd, trigger: 'blur' },
8686
],
8787
email: [
88+
{ required: true, message: 'Input your email', trigger: 'blur' },
8889
{ validator: validateEmail, trigger: 'blur'}
8990
]
9091
},

src/store/user.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const userstore = {
33
authenticated: localStorage.getItem('user-authenticated') || false,
44
username: localStorage.getItem('user-username') || null,
55
userid: localStorage.getItem('user-userid') || null,
6+
userlang: localStorage.getItem('user-userlang') || null,
67
showlogin: false,
78
showregister: false,
89
showlogout: false
@@ -12,16 +13,23 @@ const userstore = {
1213
state.authenticated = true;
1314
state.userid = data.userid;
1415
state.username = data.username;
15-
16+
1617
localStorage.setItem('user-authenticated', true);
1718
localStorage.setItem('user-username', data.username);
1819
localStorage.setItem('user-userid', data.userid);
1920
},
21+
userLang(state, data) {
22+
state.userlang = data.lang;
23+
24+
localStorage.setItem('user-userlang', data.lang);
25+
},
2026
userLogout(state) {
2127
state.authenticated = false;
2228
state.userid = null;
2329
state.username = null;
30+
state.userlang = null;
2431

32+
localStorage.removeItem('user-userlang');
2533
localStorage.removeItem('user-authenticated');
2634
localStorage.removeItem('user-userid');
2735
localStorage.removeItem('user-username');

0 commit comments

Comments
 (0)