This commit is contained in:
xulu
2021-09-25 16:15:06 +08:00
parent ae37533b0e
commit ec5e69418b
31 changed files with 4045 additions and 787 deletions

View File

@@ -0,0 +1,667 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-data-analysis"></i> Citation Analysis Report
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container" v-loading="loading" element-loading-text="Loading..." element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.8)">
<div class="handle-box">
<el-select v-model="query.journal_id" filterable placeholder="Please select a Journal" value-key="groupID" style="width: 300px;"
@change="chan_id">
<el-option v-for="item in df_jour" :label="item.title" :key="item.journal_id" :value="item.journal_id"></el-option>
</el-select>
</div>
<!-- 国家内外(饼状图) -->
<div class="schart-box">
<div id="myChart1" class="schart" style="width: 500px;margin: 0 auto;"></div>
</div>
<!-- 领域学科(柱状图) -->
<div class="schart-box">
<div id="myChart2" class="schart" style="height: 400px;"></div>
</div>
<!-- 关键词(柱状图) -->
<div class="schart-box">
<div id="myChart3" class="schart" style="height: 400px;"></div>
</div>
<!-- 关键词(折线图) -->
<div class="schart-box">
<div id="myChart4" class="schart" style=""></div>
</div>
<!-- 文章类型(饼状图) -->
<div class="schart-box">
<div id="myChart5" class="schart" style="width: 800px;margin: 0 auto;"></div>
</div>
<!-- 阅读量下载量(表格) -->
<h4 class="ta_tit">阅读量下载统计</h4>
<el-table :data="tab_le6" border class="table" ref="multipleTable" header-cell-class-name="table-header">
<el-table-column prop="title" label="期刊" width="420px"></el-table-column>
<el-table-column prop="read_num" label="阅读量"></el-table-column>
<el-table-column prop="cite_num" label="引用数"></el-table-column>
</el-table>
<!-- 标题吸引力程度(表格) -->
<h4 class="ta_tit">标题吸引力程度统计</h4>
<el-table :data="tab_le7_1" border class="table" ref="multipleTable" header-cell-class-name="table-header">
<el-table-column prop="title" label="期刊" width="420px"></el-table-column>
<el-table-column prop="cite_num" label="字数"></el-table-column>
</el-table>
<el-table :data="tab_le7_2" border class="table" ref="multipleTable" header-cell-class-name="table-header">
<el-table-column prop="title" label="期刊" width="420px"></el-table-column>
<el-table-column prop="cite_num" label="字符"></el-table-column>
</el-table>
<!-- 摘要吸引力程度(表格) -->
<h4 class="ta_tit">摘要吸引力程度统计</h4>
<el-table :data="tab_le8_1" border class="table" ref="multipleTable" header-cell-class-name="table-header">
<el-table-column prop="title" label="期刊" width="420px"></el-table-column>
<el-table-column prop="cite_num" label="字数"></el-table-column>
</el-table>
<el-table :data="tab_le8_2" border class="table" ref="multipleTable" header-cell-class-name="table-header">
<el-table-column prop="title" label="期刊" width="420px"></el-table-column>
<el-table-column prop="cite_num" label="字符"></el-table-column>
</el-table>
</div>
</div>
</template>
<script>
export default {
data() {
return {
user_id: localStorage.getItem('U_id'),
user_cap: localStorage.getItem('U_role'),
loading: false,
df_jour: [],
tableData: [],
query: {
journal_id: ''
},
myChart1: '',
Ech_1: [{
value: 0,
name: '国内'
},
{
value: 0,
name: '国外'
}
],
Ech_2: [],
Ech_3: [],
Ech_4_1: [],
Ech_4_2: [],
Ech_5: [],
tab_le6: [],
tab_le7_1: [],
tab_le7_2: [],
tab_le8_1: [],
tab_le8_2: []
};
},
watch: {
// df_jour: function(val) {
// var _this = this;
// _this.$nextTick(function() {
// this.drawLine1();
// this.drawLine2();
// this.drawLine3();
// this.drawLine4();
// this.drawLine5();
// });
// },
},
mounted() {
// this.drawLine();
},
created() {
this.getTable();
},
computed: {
opened() {
return this.df_jour.map((i) => {
return i.journal_id;
});
}
},
methods: {
// 获取数据
getTable() {
if (this.user_cap.includes('chief')) {
this.$api
.post('api/Chief/getJournalsFromChief', {
'user_id': this.user_id
})
.then(res => {
if (res.code == 0) {
this.df_jour = res.data.journals;
this.query.journal_id = this.df_jour[0].journal_id
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
this.$api
.post('api/Chief/getJournalsByEditor', {
'user_id': this.user_id
})
.then(res => {
if (res.code == 0) {
this.df_jour = res.data.journals;
this.query.journal_id = this.df_jour[0].journal_id
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
},
// 下拉分类搜索
chan_id(event) {
this.$echarts.init(document.getElementById('myChart1')).clear()
this.$echarts.init(document.getElementById('myChart2')).clear()
this.$echarts.init(document.getElementById('myChart3')).clear()
this.$echarts.init(document.getElementById('myChart4')).clear()
this.$echarts.init(document.getElementById('myChart5')).clear()
this.getData();
},
getData() {
this.loading = true;
this.$api
.post('journalsuper/Publish/getCiteDate', this.query)
.then(res => {
if (res.code == 0) {
this.tableData = res.data;
this.drawLine1();
this.drawLine2();
this.drawLine3();
this.drawLine4();
this.drawLine5();
this.dataTable6();
this.dataTable7();
this.dataTable8();
this.loading = false;
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
},
//图表初始化
drawLine1() {
this.Ech_1 = [{
value: 0,
name: '国内'
},
{
value: 0,
name: '国外'
}
];
let data_num = this.tableData.country
this.Ech_1[0].value = data_num.n
this.Ech_1[1].value = data_num.w
// 基于准备好的dom初始化echarts实例
this.myChart1 = this.$echarts.init(document.getElementById('myChart1'))
// 绘制折现图
this.myChart1.setOption({
title: {
text: '国内外统计',
x: '49%',
y: 'top',
textAlign: 'center'
},
tooltip: {
trigger: 'item'
},
legend: {
bottom: '1%',
// type: 'scroll',
orient: 'vertical',
right: 10,
top: 20,
},
color: ['#FD9E06', '#768BFF'],
series: [{
name: '来源',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: this.Ech_1
}]
}, true);
},
drawLine2() {
this.Ech_2 = [];
let data_num = this.tableData.topic
for (let i in data_num) {
this.Ech_2.push([i, data_num[i]])
}
// 基于准备好的dom初始化echarts实例
this.myChart2 = this.$echarts.init(document.getElementById('myChart2'))
// 绘制折现图
this.myChart2.setOption({
title: {
text: '领域统计',
x: '49%',
y: 'top',
textAlign: 'center'
},
grid: {
bottom: '30%',
},
dataset: [{
dimensions: ['name', 'value'],
source: this.Ech_2
}, {
transform: {
type: 'sort',
config: {
dimension: 'value',
order: 'desc'
}
}
}],
tooltip: {
trigger: 'axis',
formatter: function(params) {
return params[0].value[0] + "<br>" + params[0].value[1];
},
textStyle: {
align: 'left'
},
},
xAxis: {
type: 'category',
axisLabel: {
interval: 0,
rotate: 30
},
},
yAxis: {},
series: {
type: 'bar',
itemStyle: {
normal: {
color: function(params) {
var colorList = ['#5470c6',
'#91cc75',
'#fac858',
'#ee6666',
'#73c0de',
'#3ba272',
'#fc8452',
'#9a60b4',
'#ea7ccc',
'#45C2E0',
'#C1EBDD',
'#FFC851',
'#768BFF',
'#12ED93',
'#1869A0',
'#FF9393',
'#4B7CF3',
'#dd3ee5',
'#fe8104',
'#01C2F9',
'#F4CB29',
'#FD9E06',
'#4962FC',
'#d223e7',
'#f376e0',
'#3F77FE',
'#02CBF9',
'#18D070',
'#01C2F9', '#5470c6',
'#91cc75',
'#fac858',
'#ee6666',
'#73c0de',
'#3ba272',
'#fc8452',
'#9a60b4',
'#ea7ccc',
'#45C2E0',
'#C1EBDD',
'#FFC851'
];
return colorList[params.dataIndex]
}
}
},
encode: {
x: 'name',
y: 'value'
},
datasetIndex: 1
}
}, true);
},
drawLine3() {
this.Ech_3 = [];
let data_num = this.tableData.gjz
for (let i in data_num) {
if (data_num[i] < 6) {
delete(data_num[i]);
if (i == 0) {
i = 0
} else {
i = i - 1
}
}
}
for (let i in data_num) {
this.Ech_3.push([i, data_num[i]])
}
// 基于准备好的dom初始化echarts实例
this.myChart3 = this.$echarts.init(document.getElementById('myChart3'))
// 绘制折现图
this.myChart3.setOption({
title: {
text: '关键字统计',
x: '49%',
y: 'top',
textAlign: 'center'
},
grid: {
bottom: '30%',
},
dataset: [{
dimensions: ['name', 'value'],
source: this.Ech_3
}, {
transform: {
type: 'sort',
config: {
dimension: 'value',
order: 'desc'
}
}
}],
tooltip: {
trigger: 'axis',
formatter: function(params) {
return params[0].value[0] + "<br>" + params[0].value[1];
},
textStyle: {
align: 'left'
},
},
xAxis: {
type: 'category',
axisLabel: {
interval: 0,
rotate: 30
},
},
yAxis: {},
series: {
type: 'bar',
itemStyle: {
normal: {
color: function(params) {
var colorList = ['#5470c6',
'#91cc75',
'#fac858',
'#ee6666',
'#73c0de',
'#3ba272',
'#fc8452',
'#9a60b4',
'#ea7ccc',
'#45C2E0',
'#C1EBDD',
'#FFC851',
'#768BFF',
'#12ED93',
'#1869A0',
'#FF9393',
'#4B7CF3',
'#dd3ee5',
'#fe8104',
'#01C2F9',
'#F4CB29',
'#FD9E06',
'#4962FC',
'#d223e7',
'#f376e0',
'#3F77FE',
'#02CBF9',
'#18D070',
'#01C2F9', '#5470c6',
'#91cc75',
'#fac858',
'#ee6666',
'#73c0de',
'#3ba272',
'#fc8452',
'#9a60b4',
'#ea7ccc',
'#45C2E0',
'#C1EBDD',
'#FFC851'
];
return colorList[params.dataIndex]
}
}
},
encode: {
x: 'name',
y: 'value'
},
datasetIndex: 1
}
}, true);
},
drawLine4() {
this.Ech_4_1 = [];
this.Ech_4_2 = [];
let data_num = this.tableData.time
for (let i in data_num) {
this.Ech_4_1.push(i)
this.Ech_4_2.push(data_num[i])
}
// 基于准备好的dom初始化echarts实例
this.myChart4 = this.$echarts.init(document.getElementById('myChart4'))
// 绘制折现图
this.myChart4.setOption({
title: {
text: '时间统计',
x: '49%',
y: 'top',
textAlign: 'center'
},
tooltip: {
trigger: 'axis',
formatter: function(params) {
return params[0].axisValueLabel + "<br>" + params[0].data;
},
textStyle: {
align: 'left'
},
},
xAxis: {
type: 'category',
data: this.Ech_4_1
},
yAxis: {
type: 'value'
},
series: [{
data: this.Ech_4_2,
type: 'line',
itemStyle: {
normal: {
color: "#edae21", //折线点的颜色
lineStyle: {
color: "#fac858" //折线的颜色
}
}
},
}]
}, true);
},
drawLine5() {
this.Ech_5 = [];
let data_num = this.tableData.type
for (let i in data_num) {
this.Ech_5.push({
name: i,
value: data_num[i]
})
}
// 基于准备好的dom初始化echarts实例
this.myChart5 = this.$echarts.init(document.getElementById('myChart5'))
// 绘制折现图
this.myChart5.setOption({
title: {
text: '文章类型统计',
x: '49%',
y: 'top',
textAlign: 'center'
},
tooltip: {
trigger: 'item'
},
legend: {
bottom: '1%',
// type: 'scroll',
orient: 'vertical',
right: 10,
top: 20,
},
color: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de',
'#3ba272', '#fc8452', '#9a60b4', '#ea7ccc', '#45C2E0',
'#C1EBDD', '#FFC851', '#768BFF', '#12ED93',
'#1869A0', '#FF9393', '#4B7CF3', '#dd3ee5', '#fe8104',
'#01C2F9', '#F4CB29', '#FD9E06', '#4962FC', '#d223e7',
'#f376e0', '#3F77FE', '#02CBF9', '#18D070', '#01C2F9'
],
series: [{
name: '来源',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: this.Ech_5
}]
}, true);
},
dataTable6() {
this.tab_le6 = this.tableData.read
},
dataTable7() {
this.tab_le7_1 = this.tableData.zs_title
this.tab_le7_2 = this.tableData.zf_title
},
dataTable8() {
this.tab_le8_1 = this.tableData.zs_abstract
this.tab_le8_2 = this.tableData.zf_abstract
}
}
};
</script>
<style scoped>
.handle-box {
margin-bottom: 20px;
}
.table {
width: 100%;
font-size: 14px;
margin-bottom: 30px;
}
.ta_tit {
text-align: center;
margin: 50px 0 20px 0;
}
.schart-box {
width: 100%;
margin-bottom: 50px;
/* display: inline-block; */
}
.schart-box .schart {
width: 100%;
height: 300px;
}
</style>