Browse Source

fix issue

pull/970/head
zhoupzh 3 years ago
parent
commit
b468e2f2c1
8 changed files with 131 additions and 93 deletions
  1. +12
    -6
      models/repo_activity_custom.go
  2. +1
    -0
      models/repo_statistic.go
  3. +4
    -2
      modules/git/repo_stats_custom.go
  4. +2
    -0
      modules/setting/setting.go
  5. +1
    -1
      options/locale/locale_zh-CN.ini
  6. +79
    -57
      routers/repo/repo_statistic.go
  7. +20
    -18
      web_src/js/components/ProAnalysis.vue
  8. +12
    -9
      web_src/js/components/UserAnalysis.vue

+ 12
- 6
models/repo_activity_custom.go View File

@@ -23,18 +23,22 @@ func GetRepoKPIStats(repo *Repository) (*git.RepoKPIStats, error) {
if repo.HasWiki() { if repo.HasWiki() {
wikiPath = repo.WikiPath() wikiPath = repo.WikiPath()
} }
return getRepoKPIStats(repo.RepoPath(), wikiPath)
repoCreated := time.Unix(int64(repo.CreatedUnix), 0)
return getRepoKPIStats(repo.RepoPath(), repoCreated, wikiPath)
} }


func getRepoKPIStats(repoPath string, wikiPath string) (*git.RepoKPIStats, error) {
func getRepoKPIStats(repoPath string, repoCreated time.Time, wikiPath string) (*git.RepoKPIStats, error) {
stats := &git.RepoKPIStats{} stats := &git.RepoKPIStats{}


contributors, err := git.GetContributors(repoPath)
contributors, err := git.GetContributorsDetail(repoPath, repoCreated)
if err != nil { if err != nil {
return nil, err return nil, err
} }
timeUntil := time.Now() timeUntil := time.Now()
fourMonthAgo := timeUntil.AddDate(0, -4, 0) fourMonthAgo := timeUntil.AddDate(0, -4, 0)
if fourMonthAgo.Before(repoCreated) {
fourMonthAgo = repoCreated
}
recentlyContributors, err := git.GetContributorsDetail(repoPath, fourMonthAgo) recentlyContributors, err := git.GetContributorsDetail(repoPath, fourMonthAgo)
newContributersDict := make(map[string]struct{}) newContributersDict := make(map[string]struct{})
if err != nil { if err != nil {
@@ -44,7 +48,7 @@ func getRepoKPIStats(repoPath string, wikiPath string) (*git.RepoKPIStats, error
if contributors != nil { if contributors != nil {
contributorDistinctDict := make(map[string]int, 0) contributorDistinctDict := make(map[string]int, 0)
keyContributorsDict := make(map[string]struct{}, 0) keyContributorsDict := make(map[string]struct{}, 0)
var commitsCount int64
for _, contributor := range contributors { for _, contributor := range contributors {
if strings.Compare(contributor.Email, "") == 0 { if strings.Compare(contributor.Email, "") == 0 {
continue continue
@@ -70,6 +74,8 @@ func getRepoKPIStats(repoPath string, wikiPath string) (*git.RepoKPIStats, error
setKeyContributerDict(contributorDistinctDict, contributor.Email, keyContributorsDict) setKeyContributerDict(contributorDistinctDict, contributor.Email, keyContributorsDict)
} }


commitsCount += int64(contributor.CommitCnt)

} }


if recentlyContributors != nil { if recentlyContributors != nil {
@@ -110,10 +116,10 @@ func getRepoKPIStats(repoPath string, wikiPath string) (*git.RepoKPIStats, error


stats.Contributors = int64(len(contributorDistinctDict)) stats.Contributors = int64(len(contributorDistinctDict))
stats.KeyContributors = int64(len(keyContributorsDict)) stats.KeyContributors = int64(len(keyContributorsDict))
stats.Commits = int64(commitsCount)
} }


err = git.SetDevelopAge(repoPath, stats)
err = git.SetDevelopAge(repoPath, stats, repoCreated)
if err != nil { if err != nil {
return nil, fmt.Errorf("FillFromGit: %v", err) return nil, fmt.Errorf("FillFromGit: %v", err)
} }


+ 1
- 0
models/repo_statistic.go View File

@@ -14,6 +14,7 @@ type RepoStatistic struct {
Name string `xorm:"INDEX" json:"name"` Name string `xorm:"INDEX" json:"name"`
OwnerName string `json:"ownerName"` OwnerName string `json:"ownerName"`
IsPrivate bool `json:"isPrivate"` IsPrivate bool `json:"isPrivate"`
IsMirror bool `json:"isMirror"`
Date string `xorm:"unique(s) NOT NULL" json:"date"` Date string `xorm:"unique(s) NOT NULL" json:"date"`
NumWatches int64 `xorm:"NOT NULL DEFAULT 0" json:"watch"` NumWatches int64 `xorm:"NOT NULL DEFAULT 0" json:"watch"`
NumWatchesAdded int64 `xorm:"NOT NULL DEFAULT 0" json:"-"` NumWatchesAdded int64 `xorm:"NOT NULL DEFAULT 0" json:"-"`


+ 4
- 2
modules/git/repo_stats_custom.go View File

@@ -18,6 +18,7 @@ type RepoKPIStats struct {
KeyContributors int64 KeyContributors int64
DevelopAge int64 DevelopAge int64
ContributorsAdded int64 ContributorsAdded int64
Commits int64
CommitsAdded int64 CommitsAdded int64
CommitLinesModified int64 CommitLinesModified int64
WikiPages int64 WikiPages int64
@@ -35,8 +36,9 @@ type UserKPITypeStats struct {
isNewContributor bool //是否是4个月内的新增贡献者 isNewContributor bool //是否是4个月内的新增贡献者
} }


func SetDevelopAge(repoPath string, stats *RepoKPIStats) error {
args := []string{"log", "--no-merges", "--branches=*", "--format=%cd", "--date=short"}
func SetDevelopAge(repoPath string, stats *RepoKPIStats, fromTime time.Time) error {
since := fromTime.Format(time.RFC3339)
args := []string{"log", "--no-merges", "--branches=*", "--format=%cd", "--date=short", fmt.Sprintf("--since='%s'", since)}
stdout, err := NewCommand(args...).RunInDirBytes(repoPath) stdout, err := NewCommand(args...).RunInDirBytes(repoPath)
if err != nil { if err != nil {
return err return err


+ 2
- 0
modules/setting/setting.go View File

@@ -547,6 +547,7 @@ var (
GrowthCommit float64 GrowthCommit float64
GrowthComments float64 GrowthComments float64
RecordBeginTime string RecordBeginTime string
IgnoreMirrorRepo bool
}{} }{}
Warn_Notify_Mails []string Warn_Notify_Mails []string
@@ -1333,6 +1334,7 @@ func SetRadarMapConfig() {
RadarMap.GrowthCommit = sec.Key("growth_commit").MustFloat64(0.2) RadarMap.GrowthCommit = sec.Key("growth_commit").MustFloat64(0.2)
RadarMap.GrowthComments = sec.Key("growth_comments").MustFloat64(0.2) RadarMap.GrowthComments = sec.Key("growth_comments").MustFloat64(0.2)
RadarMap.RecordBeginTime = sec.Key("record_beigin_time").MustString("2021-11-05") RadarMap.RecordBeginTime = sec.Key("record_beigin_time").MustString("2021-11-05")
RadarMap.IgnoreMirrorRepo = sec.Key("ignore_mirror_repo").MustBool(true)


} }




+ 1
- 1
options/locale/locale_zh-CN.ini View File

@@ -229,7 +229,7 @@ organizations=组织
images = 云脑镜像 images = 云脑镜像
search=搜索 search=搜索
code=代码 code=代码
data_analysis=数字看板
data_analysis=数字看板(内测)
repo_no_results=未找到匹配的项目。 repo_no_results=未找到匹配的项目。
dataset_no_results = 未找到匹配的数据集。 dataset_no_results = 未找到匹配的数据集。
user_no_results=未找到匹配的用户。 user_no_results=未找到匹配的用户。


+ 79
- 57
routers/repo/repo_statistic.go View File

@@ -49,9 +49,11 @@ func RepoStatisticDaily(date string) {
var minRepoRadar models.RepoStatistic var minRepoRadar models.RepoStatistic
var maxRepoRadar models.RepoStatistic var maxRepoRadar models.RepoStatistic


for i, repo := range repos {
isInitMinMaxRadar := false

for _, repo := range repos {
log.Info("start statistic: %s", getDistinctProjectName(repo)) log.Info("start statistic: %s", getDistinctProjectName(repo))
var numDevMonths, numWikiViews, numContributor, numKeyContributor, numCommitsGrowth, numCommitLinesGrowth, numContributorsGrowth int64
var numDevMonths, numWikiViews, numContributor, numKeyContributor, numCommitsGrowth, numCommitLinesGrowth, numContributorsGrowth, numCommits int64
repoGitStat, err := models.GetRepoKPIStats(repo) repoGitStat, err := models.GetRepoKPIStats(repo)
if err != nil { if err != nil {
log.Error("GetRepoKPIStats failed: %s", getDistinctProjectName(repo)) log.Error("GetRepoKPIStats failed: %s", getDistinctProjectName(repo))
@@ -63,6 +65,8 @@ func RepoStatisticDaily(date string) {
numCommitsGrowth = repoGitStat.CommitsAdded numCommitsGrowth = repoGitStat.CommitsAdded
numCommitLinesGrowth = repoGitStat.CommitLinesModified numCommitLinesGrowth = repoGitStat.CommitLinesModified
numContributorsGrowth = repoGitStat.ContributorsAdded numContributorsGrowth = repoGitStat.ContributorsAdded
numCommits = repoGitStat.Commits

} }


var issueFixedRate float32 var issueFixedRate float32
@@ -98,15 +102,15 @@ func RepoStatisticDaily(date string) {
} }


repoStat := models.RepoStatistic{ repoStat := models.RepoStatistic{
RepoID: repo.ID,
Date: date,
Name: repo.Name,
IsPrivate: repo.IsPrivate,
OwnerName: repo.OwnerName,
NumWatches: int64(repo.NumWatches),
NumStars: int64(repo.NumStars),
NumForks: int64(repo.NumForks),
RepoID: repo.ID,
Date: date,
Name: repo.Name,
IsPrivate: repo.IsPrivate,
IsMirror: repo.IsMirror,
OwnerName: repo.OwnerName,
NumWatches: int64(repo.NumWatches),
NumStars: int64(repo.NumStars),
NumForks: int64(repo.NumForks),
NumDownloads: repo.CloneCnt, NumDownloads: repo.CloneCnt,
NumComments: numComments, NumComments: numComments,
NumVisits: int64(numVisits), NumVisits: int64(numVisits),
@@ -117,7 +121,7 @@ func RepoStatisticDaily(date string) {
DatasetSize: datasetSize, DatasetSize: datasetSize,
NumModels: 0, NumModels: 0,
NumWikiViews: numWikiViews, NumWikiViews: numWikiViews,
NumCommits: repo.NumCommit,
NumCommits: numCommits,
NumIssues: int64(repo.NumIssues), NumIssues: int64(repo.NumIssues),
NumPulls: int64(repo.NumPulls), NumPulls: int64(repo.NumPulls),
IssueFixedRate: issueFixedRate, IssueFixedRate: issueFixedRate,
@@ -167,6 +171,7 @@ func RepoStatisticDaily(date string) {
tempRepoStat := models.RepoStatistic{ tempRepoStat := models.RepoStatistic{
RepoID: repoStat.RepoID, RepoID: repoStat.RepoID,
Date: repoStat.Date, Date: repoStat.Date,
IsMirror: repoStat.IsMirror,
Impact: normalization.GetImpactInitValue(repoStat.NumWatches, repoStat.NumStars, repoStat.NumForks, repoStat.NumDownloads, repoStat.NumComments, repoStat.NumVisits), Impact: normalization.GetImpactInitValue(repoStat.NumWatches, repoStat.NumStars, repoStat.NumForks, repoStat.NumDownloads, repoStat.NumComments, repoStat.NumVisits),
Completeness: normalization.GetCompleteInitValue(repoStat.NumClosedIssues, repoStat.NumVersions, repoStat.NumDevMonths, repoStat.DatasetSize, repoStat.NumModels, repoStat.NumWikiViews), Completeness: normalization.GetCompleteInitValue(repoStat.NumClosedIssues, repoStat.NumVersions, repoStat.NumDevMonths, repoStat.DatasetSize, repoStat.NumModels, repoStat.NumWikiViews),
Liveness: normalization.GetLivenessInitValue(repoStat.NumCommits, repoStat.NumIssues, repoStat.NumPulls, repoStat.NumVisits), Liveness: normalization.GetLivenessInitValue(repoStat.NumCommits, repoStat.NumIssues, repoStat.NumPulls, repoStat.NumVisits),
@@ -177,57 +182,64 @@ func RepoStatisticDaily(date string) {


reposRadar = append(reposRadar, &tempRepoStat) reposRadar = append(reposRadar, &tempRepoStat)


if i == 0 {
minRepoRadar = tempRepoStat
maxRepoRadar = tempRepoStat
} else {
if !isInitMinMaxRadar {


if tempRepoStat.Impact < minRepoRadar.Impact {
minRepoRadar.Impact = tempRepoStat.Impact
if !setting.RadarMap.IgnoreMirrorRepo || (setting.RadarMap.IgnoreMirrorRepo && !tempRepoStat.IsMirror) {
minRepoRadar = tempRepoStat
maxRepoRadar = tempRepoStat
isInitMinMaxRadar = true
} }


if tempRepoStat.Impact > maxRepoRadar.Impact {
maxRepoRadar.Impact = tempRepoStat.Impact
}
} else {
if !setting.RadarMap.IgnoreMirrorRepo || (setting.RadarMap.IgnoreMirrorRepo && !tempRepoStat.IsMirror) {
if tempRepoStat.Impact < minRepoRadar.Impact {
minRepoRadar.Impact = tempRepoStat.Impact
}


if tempRepoStat.Completeness < minRepoRadar.Completeness {
minRepoRadar.Completeness = tempRepoStat.Completeness
}
if tempRepoStat.Impact > maxRepoRadar.Impact {
maxRepoRadar.Impact = tempRepoStat.Impact
}


if tempRepoStat.Completeness > maxRepoRadar.Completeness {
maxRepoRadar.Completeness = tempRepoStat.Completeness
}
if tempRepoStat.Completeness < minRepoRadar.Completeness {
minRepoRadar.Completeness = tempRepoStat.Completeness
}


if tempRepoStat.Liveness < minRepoRadar.Completeness {
minRepoRadar.Liveness = tempRepoStat.Liveness
}
if tempRepoStat.Completeness > maxRepoRadar.Completeness {
maxRepoRadar.Completeness = tempRepoStat.Completeness
}


if tempRepoStat.Liveness > maxRepoRadar.Liveness {
maxRepoRadar.Liveness = tempRepoStat.Liveness
}
if tempRepoStat.Liveness < minRepoRadar.Completeness {
minRepoRadar.Liveness = tempRepoStat.Liveness
}


if tempRepoStat.ProjectHealth < minRepoRadar.ProjectHealth {
minRepoRadar.ProjectHealth = tempRepoStat.ProjectHealth
}
if tempRepoStat.Liveness > maxRepoRadar.Liveness {
maxRepoRadar.Liveness = tempRepoStat.Liveness
}


if tempRepoStat.ProjectHealth > maxRepoRadar.ProjectHealth {
maxRepoRadar.ProjectHealth = tempRepoStat.ProjectHealth
}
if tempRepoStat.ProjectHealth < minRepoRadar.ProjectHealth {
minRepoRadar.ProjectHealth = tempRepoStat.ProjectHealth
}


if tempRepoStat.TeamHealth < minRepoRadar.TeamHealth {
minRepoRadar.TeamHealth = tempRepoStat.TeamHealth
}
if tempRepoStat.ProjectHealth > maxRepoRadar.ProjectHealth {
maxRepoRadar.ProjectHealth = tempRepoStat.ProjectHealth
}


if tempRepoStat.TeamHealth > maxRepoRadar.TeamHealth {
maxRepoRadar.TeamHealth = tempRepoStat.TeamHealth
}
if tempRepoStat.TeamHealth < minRepoRadar.TeamHealth {
minRepoRadar.TeamHealth = tempRepoStat.TeamHealth
}


if tempRepoStat.Growth < minRepoRadar.Growth {
minRepoRadar.Growth = tempRepoStat.Growth
}
if tempRepoStat.TeamHealth > maxRepoRadar.TeamHealth {
maxRepoRadar.TeamHealth = tempRepoStat.TeamHealth
}

if tempRepoStat.Growth < minRepoRadar.Growth {
minRepoRadar.Growth = tempRepoStat.Growth
}

if tempRepoStat.Growth > maxRepoRadar.Growth {
maxRepoRadar.Growth = tempRepoStat.Growth
}


if tempRepoStat.Growth > maxRepoRadar.Growth {
maxRepoRadar.Growth = tempRepoStat.Growth
} }


} }
@@ -238,13 +250,23 @@ func RepoStatisticDaily(date string) {
//radar map //radar map
log.Info("begin statistic radar") log.Info("begin statistic radar")
for _, radarInit := range reposRadar { for _, radarInit := range reposRadar {
radarInit.Impact = normalization.Normalization(radarInit.Impact, minRepoRadar.Impact, maxRepoRadar.Impact)
radarInit.Completeness = normalization.Normalization(radarInit.Completeness, minRepoRadar.Completeness, maxRepoRadar.Completeness)
radarInit.Liveness = normalization.Normalization(radarInit.Liveness, minRepoRadar.Liveness, maxRepoRadar.Liveness)
radarInit.ProjectHealth = normalization.Normalization(radarInit.ProjectHealth, minRepoRadar.ProjectHealth, maxRepoRadar.ProjectHealth)
radarInit.TeamHealth = normalization.Normalization(radarInit.TeamHealth, minRepoRadar.TeamHealth, maxRepoRadar.TeamHealth)
radarInit.Growth = normalization.Normalization(radarInit.Growth, minRepoRadar.Growth, maxRepoRadar.Growth)
radarInit.RadarTotal = normalization.GetRadarValue(radarInit.Impact, radarInit.Completeness, radarInit.Liveness, radarInit.ProjectHealth, radarInit.TeamHealth, radarInit.Growth)
if radarInit.IsMirror && setting.RadarMap.IgnoreMirrorRepo {
radarInit.Impact = 0
radarInit.Completeness = 0
radarInit.Liveness = 0
radarInit.ProjectHealth = 0
radarInit.TeamHealth = 0
radarInit.Growth = 0
radarInit.RadarTotal = 0
} else {
radarInit.Impact = normalization.Normalization(radarInit.Impact, minRepoRadar.Impact, maxRepoRadar.Impact)
radarInit.Completeness = normalization.Normalization(radarInit.Completeness, minRepoRadar.Completeness, maxRepoRadar.Completeness)
radarInit.Liveness = normalization.Normalization(radarInit.Liveness, minRepoRadar.Liveness, maxRepoRadar.Liveness)
radarInit.ProjectHealth = normalization.Normalization(radarInit.ProjectHealth, minRepoRadar.ProjectHealth, maxRepoRadar.ProjectHealth)
radarInit.TeamHealth = normalization.Normalization(radarInit.TeamHealth, minRepoRadar.TeamHealth, maxRepoRadar.TeamHealth)
radarInit.Growth = normalization.Normalization(radarInit.Growth, minRepoRadar.Growth, maxRepoRadar.Growth)
radarInit.RadarTotal = normalization.GetRadarValue(radarInit.Impact, radarInit.Completeness, radarInit.Liveness, radarInit.ProjectHealth, radarInit.TeamHealth, radarInit.Growth)
}
models.UpdateRepoStat(radarInit) models.UpdateRepoStat(radarInit)
} }




+ 20
- 18
web_src/js/components/ProAnalysis.vue View File

@@ -53,7 +53,7 @@
:cell-style='cellStyle'> :cell-style='cellStyle'>
<el-table-column <el-table-column
label="ID" label="ID"
align="center"
align="left"
prop="repo_id" prop="repo_id"
stripe stripe
> >
@@ -61,9 +61,9 @@
<el-table-column <el-table-column
label="项目名称" label="项目名称"
width="125px" width="125px"
align="center"
align="left"
prop="name" prop="name"
style="color:#0366D6 100%;"
style="color:#0366D6;font-family: Roboto"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<a @click=goToDetailPage(scope.row.repo_id,scope.row.name,scope.row.ownerName)>{{scope.row.name}} </a> <a @click=goToDetailPage(scope.row.repo_id,scope.row.name,scope.row.ownerName)>{{scope.row.name}} </a>
@@ -197,7 +197,7 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span=18 > <el-col :span=18 >
<div class="item_l" id="charts"> <div class="item_l" id="charts">
<div style="font-size:14px;color:#409eff;margin:20px 5px;">OpenI指数:{{tableDataIDTotal.openi | rounding}}</div>
<div style="font-size:14px;color:#0366D6;margin:20px 5px;">OpenI指数:{{tableDataIDTotal.openi | rounding}}</div>
<div > <div >
<el-col :span='8' id="radar_openi" :style="{ height: '300px'}"></el-col> <el-col :span='8' id="radar_openi" :style="{ height: '300px'}"></el-col>
@@ -208,7 +208,7 @@
<el-col :span=6 > <el-col :span=6 >
<div class="item_r"> <div class="item_r">
<div style="margin:0 5px;"> <div style="margin:0 5px;">
<div style="font-size:14px;color:rgb(0,0,0);margin:10px 0px">贡献者TOP10</div>
<div style="font-size:14px;color:rgb(0,0,0);margin:10px 5px">贡献者TOP10</div>
<div> <div>
<el-table <el-table
:data="tableDataContTop10" :data="tableDataContTop10"
@@ -237,6 +237,7 @@
<el-table-column <el-table-column
prop="pr" prop="pr"
label="PR" label="PR"
width="50px"
align="center"> align="center">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@@ -825,14 +826,14 @@
type: 'radar', type: 'radar',
lineStyle:{ lineStyle:{
width:2, width:2,
color: '#409effd6',
color: '#0366D6',
normal:{ normal:{
color:'#409effd6 '
color:'#0366D6 '
} }
}, },
itemStyle : { itemStyle : {
normal : { normal : {
color:'#409effd6'
color:'#0366D6'
} }
}, },
data: [{ data: [{
@@ -914,12 +915,12 @@
lineStyle:{ lineStyle:{
width:1, width:1,
normal:{ normal:{
color:'#409effd6'
color:'#0366D6'
} }
}, },
itemStyle : { itemStyle : {
normal : { normal : {
color:'#409effd6'
color:'#0366D6'
} }
}, },
} }
@@ -1023,6 +1024,7 @@


] ]
}; };
// this.echartsSelectData.resize()
this.echartsSelectData.setOption(this.option) this.echartsSelectData.setOption(this.option)
// setTimeout(function (){ // setTimeout(function (){
// window.onresize = function () { // window.onresize = function () {
@@ -1189,10 +1191,10 @@
.btnFirst{ .btnFirst{
line-height: 1.5; line-height: 1.5;
margin: -3.5px; margin: -3.5px;
border: 1px solid #409eff;
border: 1px solid rgba(22, 132, 252, 100);
border-right: none; border-right: none;
background: #FFFF; background: #FFFF;
color: #409eff;
color: #1684FC;
width: 60px; width: 60px;
height: 30px; height: 30px;
border-radius:4px 0px 0px 4px; border-radius:4px 0px 0px 4px;
@@ -1200,20 +1202,20 @@
.btn{ .btn{
line-height: 1.5; line-height: 1.5;
margin: -3.5px; margin: -3.5px;
border: 1px solid #409eff;
border: 1px solid rgba(22, 132, 252, 100);
border-right: none; border-right: none;
background: #FFFF; background: #FFFF;
color: #409eff;
color: #1684FC;
width: 60px; width: 60px;
height: 30px; height: 30px;
} }
.btnLast{ .btnLast{
line-height: 1.5; line-height: 1.5;
margin: -3.5px; margin: -3.5px;
border: 1px solid #409eff;
border: 1px solid rgba(22, 132, 252, 100);
/* border-right: none; */ /* border-right: none; */
background: #FFFF; background: #FFFF;
color: #409eff;
color: #1684FC;
width: 60px; width: 60px;
height: 30px; height: 30px;
border-radius:0px 4px 4px 0px; border-radius:0px 4px 4px 0px;
@@ -1244,7 +1246,7 @@
} }


.colorChange { .colorChange {
background-color: #409effd6;
background-color: #1684FC;
color: #FFFF; color: #FFFF;
cursor: default; cursor: default;
} }
@@ -1272,7 +1274,7 @@
width: 100%; width: 100%;
} }
.item_content{ .item_content{
color: #409eff;
color:#0366D6;
margin-top: 10px; margin-top: 10px;
font-weight:bold; font-weight:bold;
} }


+ 12
- 9
web_src/js/components/UserAnalysis.vue View File

@@ -49,15 +49,18 @@
<el-table-column <el-table-column
label="ID" label="ID"
prop="ID" prop="ID"
align="center"
align="left"
stripe stripe
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="用户名" label="用户名"
align="center"
align="left"
prop="Name" prop="Name"
width="100px"> width="100px">
<template slot-scope="scope">
<a :href="AppSubUrl +'../../../'+ scope.row.Name">{{scope.row.Name}} </a>
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="CodeMergeCount" prop="CodeMergeCount"
@@ -475,10 +478,10 @@
.btnFirst{ .btnFirst{
line-height: 1.5; line-height: 1.5;
margin: -3.5px; margin: -3.5px;
border: 1px solid #409eff;
border: 1px solid rgba(22, 132, 252, 100);
border-right: none; border-right: none;
background: #FFFF; background: #FFFF;
color: #409eff;
color: #1684FC;
width: 60px; width: 60px;
height: 30px; height: 30px;
border-radius:4px 0px 0px 4px; border-radius:4px 0px 0px 4px;
@@ -486,20 +489,20 @@
.btn{ .btn{
line-height: 1.5; line-height: 1.5;
margin: -3.5px; margin: -3.5px;
border: 1px solid #409eff;
border: 1px solid rgba(22, 132, 252, 100);
border-right: none; border-right: none;
background: #FFFF; background: #FFFF;
color: #409eff;
color: #1684FC;
width: 60px; width: 60px;
height: 30px; height: 30px;
} }
.btnLast{ .btnLast{
line-height: 1.5; line-height: 1.5;
margin: -3.5px; margin: -3.5px;
border: 1px solid #409eff;
border: 1px solid rgba(22, 132, 252, 100);
/* border-right: none; */ /* border-right: none; */
background: #FFFF; background: #FFFF;
color: #409eff;
color: #1684FC;
width: 60px; width: 60px;
height: 30px; height: 30px;
border-radius:0px 4px 4px 0px; border-radius:0px 4px 4px 0px;
@@ -528,7 +531,7 @@
} }


.colorChange { .colorChange {
background-color: #409effd6;
background-color: #1684FC;
color: #FFFF; color: #FFFF;
cursor: default; cursor: default;
} }


Loading…
Cancel
Save