Files
tougao_web/src/components/page/man_report.vue
xulu 709110f7e9 1
2021-09-14 09:22:48 +08:00

779 lines
19 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div>
<!-- 期刊下拉菜单 -->
<el-dropdown class="link_jour" trigger="click" @command="handlejournal">
<span>
{{ this.cate_title }}<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu :default-active="onRoutes" router slot="dropdown">
<el-dropdown-item v-for="item in cate_jour" :command="item" :index="item.journal_id">
<i :class="item.icon"></i>{{ item.title }}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<svg t="1631094751843" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1661"
width="20" height="20" style="margin-bottom: -3px;">
<path d="M959 863.75c-0.69-16.22-12.36-29.93-28.12-29.93H833.5V544.44c0-15.7-13.8-30.73-30-30s-30 13.18-30 30v289.38h-132V660.94c0-15.7-13.8-30.73-30-30s-30 13.18-30 30v172.88h-132V582.94c0-15.7-13.8-30.73-30-30s-30 13.18-30 30v250.88H257.69v-134c0-15.69-13.8-30.72-30-30s-30 13.19-30 30v134h-70.43c-10.9 0-21.81-0.14-32.72 0h-1.4c-14.71 0-28.8 13.77-28.12 29.93s12.36 29.94 28.12 29.94h803.6c10.9 0 21.81 0.14 32.72 0h1.4c14.71 0 28.8-13.77 28.14-29.94z"
fill="#0071C3" p-id="1662"></path>
<path d="M874.91 130.26l-71.48 2.6-112.9 4.14-26.28 1c-15.66 0.57-30.74 13.39-30 30 0.71 15.76 13.2 30.61 30 30l71.49-2.6 58.48-2.13L741 242l-94.44 86.61-81.36 74.61c-5.95 5.46-12 10.86-18 16.29l-35-36-87.9-90.26-20.12-20.65c-11.4-11.7-30.94-11.23-42.43 0l-79.34 77.54L156.72 473l-29 28.32c-11.24 11-11.84 31.55 0 42.42 12.09 11.1 30.44 11.73 42.43 0l79.34-77.54 125.64-122.8 7.24-7.08 34.49 35.41L504.77 462l20.11 20.65c11.66 12 30.6 10.85 42.43 0l32.54-29.85 77.78-71.32 94.43-86.61L844.91 228v132.4c0 15.7 13.8 30.73 30 30s30-13.18 30-30V160.26c0-15.78-13.74-30.59-30-30z"
fill="#FD9A16" p-id="1663"></path>
</svg>
<router-link :to="{path:'/man_report'}">
<span class="top_dao" style="color: #006699;font-weight: bold;">Statistical Analysis -- {{this.head_line}}</span>
</router-link>
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container container_l">
<div class="handle-box">
<el-date-picker v-model="jzoon.start" type="date" placeholder="Select month" value-format="yyyy-MM-dd" @change="serch_Month"
:clearable="false"></el-date-picker>
<span style="margin: 0 20px;">to</span>
<el-date-picker v-model="jzoon.end" type="date" placeholder="Select month" value-format="yyyy-MM-dd" @change="serch_Month"
:clearable="false"></el-date-picker>
</div>
<div class="data_p" v-loading="loading" element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.8)">
<!-- 创刊时间 -->
<div>
<b>Founding time</b>
<span v-if="this.tableData!=''">{{this.tableData.ZL.CK}}</span>
</div>
<!-- 订阅期刊数 -->
<div>
<b>Number of journal subscribed</b>
<span v-if="this.tableData!=''">{{this.tableData.HG.SUBJOURNAL}}</span>
<i> 订阅量 > 1000 </i>
</div>
<!-- 订阅话题数 -->
<div>
<b>Number of topics subscribed</b>
<span v-if="this.tableData!=''">{{this.tableData.HG.SUBTOPIC}}</span>
</div>
<!-- 审稿人数量 -->
<div>
<b>Number of reviewers</b>
<span v-if="this.tableData!=''">{{this.tableData.HG.SGRSL}}</span>
<i> 审稿人数量 > 100 </i>
</div>
<!-- 录用率 -->
<div>
<b>Acceptance</b>
<el-progress v-if="this.tableData!=''" :text-inside="true" :stroke-width="24" :percentage="per_tage1" :color="cusColorMet"
class="pro_ges">></el-progress>
<i> 录用率 < 50% </i>
</div>
<!-- 查重 -->
<!-- <div>
<b>Check duplicate</b>
<div class="schart-box" style="width: 400px;">
<div id="myChart1" class="schart"></div>
</div>
</div> -->
<!-- 外审合格率 -->
<div>
<b>Qualified rate of external audit</b>
<el-progress v-if="this.tableData!=''" :text-inside="true" :stroke-width="24" :percentage="per_tage2" :color="cusColorMet"
class="pro_ges">></el-progress>
</div>
<!-- 时间 -->
<div>
<b>Processing time</b>
<div class="schart-box" style="width: 600px;">
<div id="myChart2" class="schart"></div>
</div>
</div>
<!-- 引用数 -->
<div>
<b>Cited times</b>
<span v-if="this.tableData!=''">{{this.tableData.ZL.YY}}</span>
</div>
<!-- 投稿量 -->
<div>
<b>Contribution volume</b>
<span v-if="this.tableData!=''">{{this.tableData.ZL.TGL}}</span>
</div>
<!-- 发文量 myChart3 -->
<div>
<b>Document statistics
<br><br>
<span style="color: #999;font-size: 14px;margin-right: 10px;">发文量 > 30/</span>
</b>
<!-- (年折线) -->
<div class="schart-box" style="width: 50%;">
<div id="myChart3" class="schart"></div>
</div>
</div>
<!-- 文章类型 -->
<div>
<b>Article type</b>
<div class="schart-box lei_xing" style="width: 400px;">
<div id="myChart4" class="schart"></div>
</div>
<i>综述比例 < 30% ; 论著比例> 50%</i>
</div>
<!-- 文章国际化 -->
<div>
<b>Article analysis</b>
<div class="schart-box lei_xing" style="width: 400px;">
<div id="myChart7" class="schart"></div>
</div>
</div>
<!-- 国际化 -->
<div>
<b>Authors analysis</b>
<div class="schart-box lei_xing" style="width: 400px;">
<div id="myChart5" class="schart"></div>
</div>
<i> 作者来源 > 10个国家 </i>
</div>
<!-- 编委 -->
<div>
<b>Editorial board members analysis</b>
<div class="schart-box lei_xing" style="width: 400px;">
<div id="myChart6" class="schart"></div>
</div>
<i>编委国际化 > 70%区域期刊编委国际化 > 60%</i>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
query: {
user_id: localStorage.getItem('U_id')
},
cate_title: [],
cate_jour: [],
head_line: '',
loading: false,
jzoon: {
issn: '',
start: new Date(),
end: new Date()
},
tableData: '',
per_tage1: 0,
per_tage2: 0,
myChart1: '',
myChart2: '',
myChart3: '',
Ech1_D: [],
Ech2_D: [],
Ech3_D1: [],
Ech3_D2: [],
Ech4_D: [],
Ech5_D: [],
Ech6_D: [],
Ech7_D: [],
};
},
watch: {
tableData: function(val) {
var _this = this;
_this.$nextTick(function() {
if (this.tableData != '') {
// this.drawLine1();
this.drawLine2();
this.drawLine3();
this.drawLine4();
this.drawLine5();
this.drawLine6();
this.drawLine7();
}
});
},
},
mounted() {
},
created() {
// 默认时间换成标准格式
var date = new Date();
var year = date.getFullYear();
var month = String(new Date().getMonth() + 1).padStart(2, 0)
var date = new Date().getDate().toString().padStart(2, '0')
// var toData = year + month + date;
this.jzoon.start = year + '-01-01';
this.jzoon.end = year + '-' + month + '-' + date;
this.getTable();
// this.getData();
},
methods: {
// 获取数据
getTable() {
this.$api
.post('api/Chief/getJournalsFromChief', this.query)
.then(res => {
if (res.code == 0) {
this.cate_jour = res.data.journals
this.cate_title = this.cate_jour[0].title
localStorage.setItem('journal_title', this.cate_jour[0].title);
localStorage.setItem('journal_id', this.cate_jour[0].journal_id);
this.head_line = this.cate_jour[0].title;
this.jzoon.issn = this.cate_jour[0].issn;
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
},
// 获取分析数据
getData() {
this.loading = true;
this.$api
.post('journalsuper/Publish/getAllDateForJournal', this.jzoon)
.then(res => {
if (res.code == 0) {
this.tableData = res.data;
//利用率
this.per_tage1 = parseFloat((this.tableData.HG.LYL * 100).toFixed(2));
//外审合格率
this.per_tage2 = parseFloat(((this.tableData.HG.WS.all - this.tableData.HG.WS.np) / this.tableData.HG.WS.all *
100).toFixed(2));
if (this.tableData != '') {
// this.drawLine1(); //查重
this.drawLine2(); //处理时间
this.drawLine3(); //发文量
this.drawLine4(); //文章类型
this.drawLine5(); //作者国际化
this.drawLine6(); //编委国际化
this.drawLine7(); //文章国际化
}
this.loading = false;
} else {
this.$message.error(res.msg);
this.loading = false;
}
})
.catch(err => {
this.$message.error(err);
this.loading = false;
});
},
// 期刊下拉菜单点击
handlejournal(command) {
this.cate_title = command.title;
localStorage.setItem('journal_title', command.title);
localStorage.setItem('journal_id', command.journal_id);
this.head_line = command.title;
this.jzoon.issn = command.issn;
this.tableData = '';
this.getData();
},
// 数据---月份查询
serch_Month() {
if (this.jzoon.dastar > this.jzoon.datend) {
this.jzoon.datend = this.jzoon.dastar
}
this.tableData = '';
this.getData();
},
// 录用率进度条
cusColorMet(pertage) {
if (pertage < 20) {
return '#f56c6c';
} else if (pertage < 40) {
return '#e6a23c';
} else if (pertage < 60) {
return '#6f7ad3';
} else if (pertage < 80) {
return '#409eff';
} else {
return '#67c23a';
}
},
//111查重--图表初始化
// drawLine1() {
// this.Ech1_D = [];
// let mess_txt = this.tableData.HG.CC;
// this.Ech1_D.push({
// value: mess_txt.low,
// name: '0 % ~20 %'
// }, {
// value: mess_txt.low1,
// name: '20 % ~30 %'
// }, {
// value: mess_txt.mid,
// name: '30 % ~50 %'
// }, {
// value: mess_txt.high,
// name: '50 % ~100 %'
// });
// // 基于准备好的dom初始化echarts实例
// let myChart1 = this.$echarts.init(document.getElementById('myChart1'))
// // 绘制饼状图
// myChart1.setOption({
// title: {
// subtext: parseFloat(mess_txt.low + mess_txt.low1 + mess_txt.mid + mess_txt.high) + ' articles in total',
// x: '49%',
// y: 'top',
// textAlign: 'center'
// },
// tooltip: {
// trigger: 'item',
// formatter: '{a} <br/>{b}: {c}articles ({d}%)'
// },
// legend: {
// bottom: '1%',
// // type: 'scroll',
// orient: 'vertical',
// right: 10,
// top: 40,
// },
// series: [{
// name: 'Check duplicate',
// type: 'pie',
// radius: ['40%', '70%'],
// center: ["35%", "60%"],
// avoidLabelOverlap: false,
// label: {
// show: false,
// position: 'center'
// },
// emphasis: {
// label: {
// show: true,
// fontSize: '40',
// fontWeight: 'bold'
// }
// },
// labelLine: {
// show: false
// },
// data: this.Ech1_D
// }]
// }, true);
// },
//222处理时间--图表初始化
drawLine2() {
this.Ech2_D = [];
let mess_txt = this.tableData.HG.SJ;
this.Ech2_D.push({
value: mess_txt.mq - mess_txt.j15 - mess_txt.j120 - mess_txt.t48,
name: 'Qualified'
}, {
value: mess_txt.j15,
name: 'Acceptance less than 15 days'
}, {
value: mess_txt.j120,
name: 'Received for more than 4 months'
}, {
value: mess_txt.t48,
name: 'Submitted for more than 48 days and not accepted'
});
// 基于准备好的dom初始化echarts实例
let myChart2 = this.$echarts.init(document.getElementById('myChart2'))
// 绘制饼状图
myChart2.setOption({
title: {
subtext: mess_txt.mq + ' articles in total',
x: '49%',
y: 'top',
textAlign: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{b}: {c} piece ({d}%)'
},
legend: {
bottom: '1%',
// type: 'scroll',
orient: 'vertical',
right: 10,
top: 40,
},
series: [{
name: 'Processing time',
type: 'pie',
radius: ['40%', '70%'],
center: ["25%", "60%"],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: this.Ech2_D
}]
}, true);
},
//333发文统计量--图表初始化
drawLine3() {
this.Ech3_D1 = [];
this.Ech3_D2 = [];
let mess_txt = this.tableData.ZL.FWL
for (let i in mess_txt) {
if (i != 'all') {
this.Ech3_D1.push(i)
this.Ech3_D2.push(mess_txt[i])
}
}
// 基于准备好的dom初始化echarts实例
this.myChart3 = this.$echarts.init(document.getElementById('myChart3'))
// 绘制折现图
this.myChart3.setOption({
tooltip: {
trigger: 'item'
},
xAxis: {
type: 'category',
data: this.Ech3_D1
},
yAxis: {
type: 'value'
},
series: [{
data: this.Ech3_D2,
type: 'line',
smooth: true
}],
grid: {
x: 35,
y: 20,
x2: 0,
y2: 20
},
}, true);
},
//444文章类型--图表初始化
drawLine4() {
this.Ech4_D = [];
let mess_txt = this.tableData.ZL.LX;
for (let i in mess_txt) {
this.Ech4_D.push({
name: i,
value: mess_txt[i]
});
}
// 基于准备好的dom初始化echarts实例
let myChart4 = this.$echarts.init(document.getElementById('myChart4'))
// 绘制饼状图
myChart4.setOption({
title: {
x: '49%',
y: 'top',
textAlign: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{b}: {c} piece ({d}%)'
},
legend: {
bottom: '1%',
type: 'scroll',
orient: 'vertical',
right: 10,
top: 40,
},
series: [{
name: 'Article type',
type: 'pie',
radius: ['40%', '70%'],
center: ["35%", "60%"],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: this.Ech4_D
}]
}, true);
},
//555作者国际化--图表初始化
drawLine5() {
this.Ech5_D = [];
let mess_txt = this.tableData.ZL.GJH;
for (let i in mess_txt.list) {
this.Ech5_D.push({
name: i,
value: mess_txt.list[i]
});
}
// 基于准备好的dom初始化echarts实例
let myChart5 = this.$echarts.init(document.getElementById('myChart5'))
// 绘制饼状图
myChart5.setOption({
title: {
subtext: mess_txt.countrys + ' countries in total',
x: '49%',
y: 'top',
textAlign: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{b}: {c} ({d}%)'
},
legend: {
bottom: '1%',
type: 'scroll',
orient: 'vertical',
right: 10,
top: 40,
},
series: [{
name: 'Author internationalization',
type: 'pie',
radius: ['40%', '70%'],
center: ["35%", "60%"],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: this.Ech5_D
}]
}, true);
},
//666编委国际化--图表初始化
drawLine6() {
this.Ech6_D = [];
let mess_txt = this.tableData.ZL.BW;
for (let i in mess_txt.country) {
this.Ech6_D.push({
name: i,
value: mess_txt.country[i]
});
}
// 基于准备好的dom初始化echarts实例
let myChart6 = this.$echarts.init(document.getElementById('myChart6'))
// 绘制饼状图
myChart6.setOption({
title: {
subtext: mess_txt.count + ' Editorial board member in total',
x: '49%',
y: 'top',
textAlign: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{b}: {c} ({d}%)'
},
legend: {
bottom: '1%',
type: 'scroll',
orient: 'vertical',
right: 10,
top: 40,
},
series: [{
name: 'Internationalization of editorial board',
type: 'pie',
radius: ['40%', '70%'],
center: ["35%", "60%"],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: this.Ech6_D
}]
}, true);
},
//777文章国际化--图表初始化
drawLine7() {
this.Ech7_D = [];
let mess_txt = this.tableData.ZL.GNW;
this.Ech7_D.push({
value: mess_txt.n,
name: 'domestic'
}, {
value: mess_txt.w,
name: 'abroad'
});
// 基于准备好的dom初始化echarts实例
let myChart7 = this.$echarts.init(document.getElementById('myChart7'))
// 绘制饼状图
myChart7.setOption({
tooltip: {
trigger: 'item',
formatter: '{b}: {c}piece ({d}%)'
},
legend: {
bottom: '1%',
type: 'scroll',
orient: 'vertical',
right: 10,
top: 40,
},
color: ['#FD9E06', '#768BFF'],
series: [{
name: 'Article internationalization',
type: 'pie',
radius: ['40%', '70%'],
center: ["35%", "60%"],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: this.Ech7_D
}]
}, true);
},
},
computed: {
onRoutes() {
0
return this.$route.path.replace('/', '');
}
},
};
</script>
<style>
.handle-box {
margin-bottom: 20px;
}
.data_p>div {
margin-bottom: 20px;
}
.data_p>div>span {
padding-top: 3px;
display: inline-block;
}
.data_p>div>b {
line-height: 25px;
width: 300px;
display: inline-block;
text-align: right;
margin-right: 5px;
vertical-align: top;
}
.data_p>div>i {
font-style: normal;
margin-left: 16px;
display: inline-block;
color: #999;
font-size: 14px;
}
.pro_ges {
display: inline-block;
}
.pro_ges .el-progress-bar {
display: inline-block !important;
width: 500px !important;
/* margin-right: 1px; */
}
.schart-box {
width: 50%;
display: inline-block;
}
.schart-box .schart {
width: 100%;
height: 150px;
}
.lei_xing .schart {
height: 220px;
}
</style>