Browse Source

Merge pull request '修改前端代码,用户分析后端实现分页 查询 下载' (#879) from wangjr_pro into V20211115

Reviewed-on: https://git.openi.org.cn/OpenI/aiforge/pulls/879
Reviewed-by: zhoupzh <zhoupzh@pcl.ac.cn>
pull/888/head
zhoupzh 3 years ago
parent
commit
d0774b71c7
3 changed files with 178 additions and 94 deletions
  1. +12
    -8
      web_src/js/components/DataAnalysis.vue
  2. +67
    -25
      web_src/js/components/ProAnalysis.vue
  3. +99
    -61
      web_src/js/components/UserAnalysis.vue

+ 12
- 8
web_src/js/components/DataAnalysis.vue View File

@@ -20,7 +20,7 @@
项目分析
</span>
</el-tab-pane>
<el-tab-pane name="third" >
<el-tab-pane name="third" id='third'>
<span slot='label'>
<el-image style="width: 13px; height: 13px" src="/img/name.png">
</el-image>
@@ -69,18 +69,22 @@
if(tab.name=="third"){
// document.getElementById('usr').style.display="block"
// document.getElementById("pro").style.display='none'
this.$refs.UserAnalysis.getUserList("all_usr",7)

this.reload()
this.isSecond = false
this.isThird = true
this.$refs.UserAnalysis.resetPage()
this.$refs.UserAnalysis.getUpdateTime()
this.$refs.UserAnalysis.getUserList("all_usr",7)

}

},
},
reload () {
this.isRouterAlive = false
this.$nextTick(() => (this.isRouterAlive = true))
}
reload () {
this.isRouterAlive = false
this.$nextTick(() => (this.isRouterAlive = true))
}

},
}


+ 67
- 25
web_src/js/components/ProAnalysis.vue View File

@@ -153,7 +153,7 @@
</div>
<div id ="pro_detail" style="display:none;width: 100%;">
<div style="margin-top: 10px;">
<b class="pro_item">{{this.ownerName}}/{{this.pro_name}}</b> <span class="update_time">数据更新时间:</span><span style="font-size: 12px;">{{tableDataIDTotal.lastUpdatedTime}}/{{tableDataIDTotal.recordBeginTime}}</span>
<b class="pro_item">{{this.ownerName}}&nbsp/&nbsp{{this.pro_name}}</b> <span class="update_time">数据更新时间:</span><span style="font-size: 12px;">{{tableDataIDTotal.lastUpdatedTime}}&nbsp/&nbsp从{{tableDataIDTotal.recordBeginTime}}开始</span>
</div>
<div style="margin-top: 10px;">
项目描述:{{tableDataIDTotal.description | discriptionFun}}
@@ -402,6 +402,9 @@
var nowMonth = now.getMonth(); // 当前月
var nowYear = now.getFullYear(); // 当前年
var today = this.saveFormatDate(nowYear,nowMonth+1,nowDay);
var tmp = new Date(now.setTime(now.getTime()-24*60*60*1000));
var yesterday = this.saveFormatDate(tmp.getFullYear(),tmp.getMonth()+1,tmp.getDate());
var yesterday_tmp = this.formatDate(tmp.getFullYear(),tmp.getMonth()+1,tmp.getDate())

let lastMonthDate = new Date(); // 上月日期
lastMonthDate.setDate(1);
@@ -413,16 +416,22 @@
var saveFileName = ''
if (typeof this.paramsID.type=="undefined" || this.paramsID.type=="null" || this.paramsID.type==""){
startDate= this.saveFormatDate(this.create_time_pro[0].getFullYear(),this.create_time_pro[0].getMonth() + 1,this.create_time_pro[0].getDate());
// startDate= this.saveFormatDate(this.create_time_pro[0].getFullYear(),this.create_time_pro[0].getMonth() + 1,this.create_time_pro[0].getDate());
endDate = this.saveFormatDate(this.create_time_pro[1].getFullYear(),this.create_time_pro[1].getMonth() + 1,this.create_time_pro[1].getDate());
var tmp = this.formatDate(this.create_time_pro[0].getFullYear(),this.create_time_pro[0].getMonth() + 1,this.create_time_pro[0].getDate())
startDate = this.comparedate(tmp,this.recordBeginTime)

console.log("comparedate:"+startDate)
saveFileName = this.pro_name+"_"+startDate+'_'+endDate
}else{
switch(this.paramsID.type){
case "yesterday":{
var now = new Date();
var tmp = new Date(now.setTime(now.getTime()-24*60*60*1000));
startDate = this.saveFormatDate(tmp.getFullYear(),tmp.getMonth()+1,tmp.getDate());
endDate = today
startDate = this.comparedate(yesterday_tmp,this.recordBeginTime)
endDate = startDate
saveFileName = this.pro_name+"_"+startDate+'_'+ endDate
break
}
@@ -430,43 +439,54 @@
var now = new Date(); // 当前日期
var nowDayOfWeek = now.getDay(); // 今天本周的第几天
var day = nowDayOfWeek || 7;
startDate = this.saveFormatDate(now.getFullYear(), nowMonth+1, nowDay + 1 - day);
endDate = today
startDate = this.formatDate(now.getFullYear(), nowMonth+1, nowDay + 1 - day);
startDate = this.comparedate(startDate,this.recordBeginTime)

endDate = yesterday
saveFileName = this.pro_name+"_"+startDate+'_'+ endDate
break
}
case "current_month":{
startDate = this.saveFormatDate(nowYear,nowMonth+1,1);
endDate = today
startDate = this.formatDate(nowYear,nowMonth+1,1);
startDate = this.comparedate(startDate,this.recordBeginTime)

endDate = yesterday
saveFileName = this.pro_name+"_"+startDate+'_'+ endDate
break
}
case "last_month":{
startDate=this.saveFormatDate(nowYear, lastMonth+1, 1);
endDate=this.saveFormatDate(nowYear, lastMonth+1, this.saveFormatDate(nowYear,lastMonth));
endDate = today
startDate=this.formatDate(nowYear, lastMonth+1, 1);
startDate = this.comparedate(startDate,this.recordBeginTime)

endDate=this.saveFormatDate(nowYear, lastMonth+1, this.saveFormatDate(nowYear,lastMonth));
saveFileName = this.pro_name+"_"+startDate+'_'+ endDate
break

}
case "monthly":{
var temp=new Date(now - 1000 * 60 * 60 * 24 * 30)
startDate = this.saveFormatDate(temp.getFullYear(),temp.getMonth()+1,temp.getDate());
endDate = today
startDate = this.formatDate(temp.getFullYear(),temp.getMonth()+1,temp.getDate());
startDate = this.comparedate(startDate,this.recordBeginTime)

endDate = yesterday
saveFileName = this.pro_name+"_"+startDate+'_'+ endDate
break
}
case "current_year":{
startDate = this.saveFormatDate(now.getFullYear(), 1, 1);
endDate = today
startDate = this.formatDate(now.getFullYear(), 1, 1);
startDate = this.comparedate(startDate,this.recordBeginTime)

endDate = yesterday
saveFileName = this.pro_name+"_"+startDate+'_'+ endDate
break
}
case "all":{
console.log("e:"+today)
startDate = 'all'
endDate = today
saveFileName = this.pro_name+'_all'
endDate = yesterday
saveFileName = this.pro_name+'_所有'
break
}
}
@@ -958,7 +978,21 @@
this.echartsSelectData.setOption(this.option);
// });

}
},
comparedate(date1,date2){
console.log("date1:"+date1)
console.log("date1:"+date2)
var oDate1 = new Date(date1);
var oDate2 = new Date(date2);
if(oDate1.getTime() < oDate2.getTime()){
var data = date2.split('-')
return data[0]+''+data[1]+''+data[2]
} else {
var data = date1.split('-')
return data[0]+''+data[1]+''+data[2]
}
},

},
filters:{

@@ -966,7 +1000,7 @@
return Number(value).toFixed(2)
},
changeType(value){
if(value=='false'){
if(value==false){
return "否"
}else{
return "是"
@@ -1072,13 +1106,21 @@
.btn:active{
background-color:#409effd6 ;
} */
/deep/ .el-date-picker {
width: 200px;
}
/* /deep/ .el-date-picker {
width: 250px;
} */
/deep/ .el-table tbody tr:hover>td {
background-color:#D3D3D3!important;
opacity:1
}
/deep/ .el-table {
font-size: 12px;
}
/deep/ .el-range-separator{
width: 20% !important;
}

.colorChange {
background-color: #409effd6;
color: #FFFF;


+ 99
- 61
web_src/js/components/UserAnalysis.vue View File

@@ -5,18 +5,18 @@
</div>
<div style="margin-top: 20px;">
<span class="sta_iterm">统计周期:</span>
<button type="button" class='btn' id ="yesterday_usr" v-bind:class="{colorChange:1==dynamic}" @click="getUserList('yesterday_usr',1)">昨天</button>
<button type="button" class='btn' id = "current_week_usr" v-bind:class="{colorChange:2==dynamic}" @click="getUserList('current_week_usr',2)">本周</button>
<button type="button" class='btn' id = "current_month_usr" v-bind:class="{colorChange:3==dynamic}" @click="getUserList('current_month_usr',3)">本月</button>
<button type="button" class='btn' id = "last_month_usr" v-bind:class="{colorChange:4==dynamic}" @click="getUserList('last_month_usr',4)">上月</button>
<button type="button" class='btn' id = "monthly_usr" v-bind:class="{colorChange:5==dynamic}" @click="getUserList('monthly_usr',5)">近30天</button>
<button type="button" class='btn' id = "current_year_usr" v-bind:class="{colorChange:6==dynamic}" @click="getUserList('current_year_usr',6)">今年</button>
<button type="button" class='btn' id = "all_usr" v-bind:class="{colorChange:7==dynamic}" @click="getUserList('all_usr',7)">所有</button>
<button type="button" class='btn' id ="yesterday_usr" v-bind:class="{colorChange:1==dynamic}" @click="resetPage(),getUserList('yesterday_usr',1)">昨天</button>
<button type="button" class='btn' id = "current_week_usr" v-bind:class="{colorChange:2==dynamic}" @click="resetPage(),getUserList('current_week_usr',2)">本周</button>
<button type="button" class='btn' id = "current_month_usr" v-bind:class="{colorChange:3==dynamic}" @click="resetPage(),getUserList('current_month_usr',3)">本月</button>
<button type="button" class='btn' id = "last_month_usr" v-bind:class="{colorChange:4==dynamic}" @click="resetPage(),getUserList('last_month_usr',4)">上月</button>
<button type="button" class='btn' id = "monthly_usr" v-bind:class="{colorChange:5==dynamic}" @click="resetPage(),getUserList('monthly_usr',5)">近30天</button>
<button type="button" class='btn' id = "current_year_usr" v-bind:class="{colorChange:6==dynamic}" @click="resetPage(),getUserList('current_year_usr',6)">今年</button>
<button type="button" class='btn' id = "all_usr" v-bind:class="{colorChange:7==dynamic}" @click="resetPage(),getUserList('all_usr',7)">所有</button>
<span style="margin-left: 20px;">
<el-date-picker
v-model="value_time"
prefix-icon="el-icon-time"
@change="getUserList('',0)"
@change="resetPage(),getUserList('',0)"
type="daterange"
size='small'
unlink-panels
@@ -28,17 +28,17 @@
<span style="float:right; margin-right: 20px;" >
<a style="display:inline-block;margin-left: 20px; " id = 'download'>
<i class="el-icon-download"></i>
<span ><a @click="exportData()">下载报告</a> </span>
<span ><a :href= "'../tool/query_user_static_page/?startDate='+this.params.startDate+'&endDate='+this.params.endDate+'&IsReturnFile=true'+'&userName='+this.params.userName" >下载报告</a> </span>
</a>
<span style="display:inline-block;margin-left: 20px; ">
<el-input size="small" placeholder="输入用户名搜索" v-model="search" class="input-with-select" @keyup.enter.native="searchName() "><i slot="suffix" class="el-input__icon el-icon-search"></i>
<el-input size="small" placeholder="输入用户名搜索" v-model="search" class="input-with-select" @keyup.enter.native="searchName() "><i slot="suffix" class="el-input__icon el-icon-search" @click="searchName() "></i>
</el-input>
</span>
</span>
</div>
<div style="margin-top: 30px;">
<el-table
:data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"
:data="tableData"
style="width: 100%"
:header-cell-style="tableHeaderStyle"
:cell-style='cellStyle'>
@@ -123,18 +123,18 @@
label="用户注册时间"
width="120px"
align="center">
<!-- <template slot-scope="scope">
<template slot-scope="scope">
{{scope.row.RegistDate | transformTimestamp}}
</template> -->
</template>
</el-table-column>
<el-table-column
prop="CountDate"
label="系统统计时间"
width="120px"
align="center">
<!-- <template slot-scope="scope">
<template slot-scope="scope">
{{scope.row.CountDate | transformTimestamp}}
</template> -->
</template>
</el-table-column>
</el-table>
</div>
@@ -142,10 +142,10 @@
<el-pagination
background
@current-change="handleCurrentChange"
:current-page="currentPage"
:current-page="page"
:page-size="pageSize"
layout="prev, pager, next"
:total="tableData.length">
:total="totalNum">
</el-pagination>
</div>
@@ -161,17 +161,17 @@
type_val:'',
recordBeginTime:'',
lastUpdatedTime:'',
currentPage:1,
page:1,
pageSize:10,
params:{startDate:'',endDate:''},
params:{startDate:'',endDate:'',page:1,pageSize:10,userName:''},
tableData: [],
totalNum:0,
pickerOptions: {
},
value_time: '',
search:'',
data:'',
columns: [{title: 'ID',key: 'ID'},{title: '用户名',key: 'Name'},{title: 'PR数',key: 'CodeMergeCount'},{title: 'cimmit数',key:'CommitCount'},{title: '提出任务数',key: 'IssueCount'},{title: '评论数',key: 'CommentCount'},{title: '关注项目数',key: 'FocusRepoCount'},{title: '点赞项目数',key: 'StarRepoCount'},{title: '登录次数',key: 'LoginCount'},{title:'关注者数',key:'WatchedCount'},{title:'commit代码行数',key:'CommitCodeSize'},{title:'已解决任务数',key:'SolveIssueCount'},{title:'百科页面贡献次数',key:'EncyclopediasCount'},{title:'创建项目',key:'CreateRepoCount'},{title:'用户注册时间',key:'RegistDate'},{title:'系统统计时间',key:'CountDate'}],
columns: [{title: 'ID',key: 'ID'},{title: '用户名',key: 'Name'},{title: 'PR数',key: 'CodeMergeCount'},{title: 'commit数',key:'CommitCount'},{title: '提出任务数',key: 'IssueCount'},{title: '评论数',key: 'CommentCount'},{title: '关注项目数',key: 'FocusRepoCount'},{title: '点赞项目数',key: 'StarRepoCount'},{title: '登录次数',key: 'LoginCount'},{title:'关注者数',key:'WatchedCount'},{title:'commit代码行数',key:'CommitCodeSize'},{title:'已解决任务数',key:'SolveIssueCount'},{title:'百科页面贡献次数',key:'EncyclopediasCount'},{title:'创建项目',key:'CreateRepoCount'},{title:'用户注册时间',key:'RegistDate'},{title:'系统统计时间',key:'CountDate'}],
blob:'',
fileName:'',
dynamic:7,
@@ -200,8 +200,15 @@
return saveFileName

},
handleCurrentChange(currentPage){
this.currentPage = currentPage;
handleCurrentChange(val){
this.params.page = val
this.page = val
this.getUserList(this.type_val,this.dynamic)

},
resetPage(){
this.page=1
this.params.page = 1
},
formatDate(myyear,mymonth,myweekday) {
// var myyear = this.date.getFullYear();
@@ -224,7 +231,14 @@
let days = (monthEndDate - monthStartDate)/(1000 * 60 * 60 * 24);
return days;
},

getUpdateTime(){
this.$axios.get('../api/v1/projectboard/project',{
params:this.params_pro
}).then((res)=>{
this.recordBeginTime=res.data.recordBeginTime
this.lastUpdatedTime=res.data.lastUpdatedTime
})
},
getUserList(type_val,index){
this.type_val = type_val
this.dynamic = index;
@@ -295,50 +309,63 @@
}
case "all_usr":{
console.log("e:"+today)
this.params.startDate = this.recordBeginTime//this.formatDate(2000, 1, 1); //
this.params.startDate = 'all'//this.formatDate(2000, 1, 1); //this.recordBeginTime//
this.params.endDate = today
this.value_time=[]
break
}
}
};
this.$axios.get('../tool/query_user_static',{
this.$axios.get('../tool/query_user_static_page',{
params:this.params
}).then((res)=>{
this.currentPage = 1
this.tableData = res.data
console.log(" this.tableData:", this.tableData.length)
for(var i=0;i<this.tableData.length;i++){
this.tableData[i].RegistDate = this.transformTimestamp(this.tableData[i].RegistDate)
this.tableData[i].CountDate = this.transformTimestamp(this.tableData[i].CountDate)
console.log(" this.tableData:", this.tableData[i].RegistDate)
}
})
this.$axios.get('../api/v1/projectboard/project',{
params:this.params_pro
}).then((res)=>{
this.recordBeginTime=res.data.recordBeginTime
this.lastUpdatedTime=res.data.lastUpdatedTime
this.tableData = res.data.data
// console.log("res.data:"+res.data.data)
this.totalNum = res.data.count
console.log("res.count:"+res.data.count)
})

// this.$axios.get('../tool/query_user_static',{
// params:this.params
// }).then((res)=>{
// this.currentPage = 1
// this.tableData = res.data
// console.log(" this.tableData:", this.tableData.length)
// for(var i=0;i<this.tableData.length;i++){
// this.tableData[i].RegistDate = this.transformTimestamp(this.tableData[i].RegistDate)
// this.tableData[i].CountDate = this.transformTimestamp(this.tableData[i].CountDate)
// console.log(" this.tableData:", this.tableData[i].RegistDate)
// }
// })




},
searchName(){
// this.params.q = this.search
// this.params.page = 1
// this.getUserList("all_usr")
var search = this.search;
this.getUserList("all_usr",7)
this.tableData = this.tableData.filter(data => !search || data.Name.toLowerCase().includes(search.toLowerCase()))
// var search = this.search;
// this.getUserList("all_usr",7)
// this.tableData = this.tableData.filter(data => !search || data.Name.toLowerCase().includes(search.toLowerCase()))

},
goToDetailPage(pro_id,pro_name){
sessionStorage.setItem("pro_id",pro_id);
sessionStorage.setItem("pro_name",pro_name);
document.getElementById("pro_main").style.display="none";
document.getElementById("pro_detail").style.display="block";
this.params.userName = this.search
this.params.page = 1
this.page=1
this.getUserList(this.type_val, this.dynamic)

},
// goToDetailPage(pro_id,pro_name){
// sessionStorage.setItem("pro_id",pro_id);
// sessionStorage.setItem("pro_name",pro_name);
// document.getElementById("pro_main").style.display="none";
// document.getElementById("pro_detail").style.display="block";

// },
tableHeaderStyle({row,column,rowIndex,columnIndex}){
if(rowIndex===0){
@@ -351,6 +378,11 @@
return 'background:#f5f5f6;color:#606266'
}
},

},
filters:{

transformTimestamp(timestamp){
console.log("timestamp",timestamp)
let a = new Date(timestamp*1000);
@@ -365,9 +397,6 @@
console.log('dateString', dateString); // > dateString 2021-07-06 14:23
return dateString;
},
},
filters:{

// transformTimestamp(timestamp){
// var dateString= new Date(timestamp);
@@ -377,8 +406,8 @@
},
mounted() {
document.getElementById("all_usr").style.outline="none"
document.getElementById("all_usr").focus()
// document.getElementById("all_usr").style.outline="none"
// document.getElementById("all_usr").focus()
this.getUserList("all_usr",7)
},
created() {
@@ -386,9 +415,15 @@
},
watch:{
search(val){
// if(!val){
// this.getUserList("all_usr",7)
// }
if(!val){
this.getUserList("all_usr",7)
}
this.params.userName = this.search
this.params.page = 1
this.page=1
this.getUserList(this.type_val, this.dynamic)
}
}
},
}
@@ -426,16 +461,19 @@
.btn:active{
background-color:#409effd6 ;
} */
/deep/ .el-date-picker {
width: 200px;
}
/* /deep/ .el-date-picker {
width: 220px;
} */
/deep/ .el-table {
font-size: 12px;
}
/deep/ .el-table tbody tr:hover>td {
background-color:#D3D3D3!important;
opacity:1
}
}
/deep/ .el-range-separator{
width: 20% !important;
}

.colorChange {
background-color: #409effd6;


Loading…
Cancel
Save