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 () {
0 commit comments