This commit is contained in:
2024-09-10 17:24:29 +08:00
parent 84e0c75027
commit b656dd9434
3 changed files with 391 additions and 34 deletions

View File

@@ -59,6 +59,19 @@ const en = {
all:'All references',
factor: 'Factor',
},
paperArticleCount:{
Periodroll:'Period Roll',
article:'Articles',
articleTitle:'Article Tiltle',
articleLen:'Number Of Articles',
articleLen1:'Articles',
cite:'Cited',
relation:'Relation',
},
sidebar: {
main: 'Personal Center',
author: 'Author',

View File

@@ -30,7 +30,7 @@ const zh = {
PaperPublicationSupervise: '论文出版监督',
PaperSubmitanalysis: '论文提交分析',
ArticlePublicationanalysis: '文章发表分析',
journalArticleCount: '文章计数',
Promotionsystem: '推广管理',
Userdatabase: '用户数据库',
@@ -43,21 +43,31 @@ const zh = {
userManSys7: '黑名单',
userManSys6: '推广记录',
JournalCitationAnalysis: '期刊引文分析',
Academicresourcesupervise:'学术资源监督',
publicationsupervise:'出版监督',
papersubmit:'论文提交',
ArticlePublication:'文章发表',
JournalCitationAnalysis:'期刊引文分析',
}, JournalCitationAnalysis:{
journal:'期刊',
editor:'编辑',
cite:'引用数量',
article:'文章数量', info:'以下数据为',wos:'Wos',
all:'全部引用',
Academicresourcesupervise: '学术资源监督',
publicationsupervise: '出版监督',
papersubmit: '论文提交',
ArticlePublication: '文章发表',
JournalCitationAnalysis: '期刊引文分析',
}, JournalCitationAnalysis: {
journal: '期刊',
editor: '编辑',
cite: '引用数量',
article: '文章数量', info: '以下数据为', wos: 'Wos',
all: '全部引用',
factor: '影响因子',
},
paperArticleCount: {
Periodroll: '期卷',
article: '文章',
articleTitle: '文章标题',
articleLen: '文章数量',
articleLen1: '文章数量',
cite: '引用',
relation: '关联',
},
sidebar: {
main: '个人中心',
author: '作者',
@@ -204,12 +214,12 @@ const zh = {
role4: '青年编委',
}, journalArticleCount: {
yearTitle: '年度总投稿量',
monthTitle: '月度投稿量',
monthTitle: '月度投稿量',
dataTitle: '投稿量',
transferQuantity: '转出量',
info:'以下数据为',
loading:'加载中',
info: '以下数据为',
loading: '加载中',
},
journalArticleTable: {
title: '期刊',
@@ -223,7 +233,7 @@ const zh = {
Continue: '继续',
Cancel: '取消',
Prompt: '提示',
},
},
citeList: {
refresh: '检查更新',
search: '查询',
@@ -252,14 +262,14 @@ const zh = {
dialogQueryButton: '查询',
dialogQueryButtonInfo: '您可以单击右侧的“查询”以自动识别并快速填写所有当前字段',
dialogQueryButtonErrInfo: '暂无相关信息',
rulesDoiInfo:'请输入Doi',
rulesJournalInfo:'请输入期刊标题',
rulesDoiInfo: '请输入Doi',
rulesJournalInfo: '请输入期刊标题',
rulesAuthorInfo: '请输入作者',
rulesVolInfo: '请输入出版时间',
rulesArticleInfo:'请输入文章标题',
authorInfo:'六位或更少的作者需要列出所有作者而六位以上的作者需要在“et al”中列出其中三位作者。',
author:'作者',
publicationTime:'年份',
rulesArticleInfo: '请输入文章标题',
authorInfo: '六位或更少的作者需要列出所有作者而六位以上的作者需要在“et al”中列出其中三位作者。',
author: '作者',
publicationTime: '年份',
publicationTimeInfo: '年份;卷(期):包括页码。',
},
}

View File

@@ -1,25 +1,334 @@
<template>
<div class="container" style="padding-bottom: 50px; width: 100%; height: 100%" v-loading="loading" >
<p style="color: #333;">暂未开启敬请等待</p>
<div class="container" style="padding-bottom: 50px; width: 100%; height: 100%">
<div class="block">
<el-select
v-model="journal_id"
filterable
placeholder="Please select a Journal"
value-key="groupID"
style="width: 300px; margin-right: 10px"
@change="chan_id"
>
<el-option v-for="item in evaList" :label="item.title" :key="item.journal_id" :value="item.journal_id"></el-option>
</el-select>
<el-date-picker
@change="selectYear"
:picker-options="pickerOption"
style="width: 200px"
:clearable="false"
v-model="currentYear"
type="year"
format="yyyy"
placeholder="选择年"
>
</el-date-picker>
</div>
<div style="margin-top: 20px" v-loading="loading">
<el-table
:data="tableData"
class="msg-table"
empty-text="New Data (0)"
:tree-props="{ children: 'articles', hasChildren: 'hasChildren' }"
>
<el-table-column type="expand" width="15" align="center">
<template slot-scope="props">
<!-- {{ props.row.articles.length }} -->
<div class="articleTable">
<el-table
row-key="article_id"
style="width: calc(100% - 20px); float: right; margin-top: 15px; margin-bottom: 20px"
border
:data="props.row.articles"
class=""
empty-text="New Data (0)"
>
<!-- <el-table-column type="index" label="No." width="45" align="center"></el-table-column> -->
<el-table-column :label="`${$t('paperArticleCount.articleTitle')}`" width="" prop="title">
<template slot-scope="scope">
<span style="font-size: 700">{{ scope.$index + 1 }}. &nbsp;&nbsp;</span> {{ scope.row.title }}
</template>
</el-table-column>
<el-table-column :label="$t('paperArticleCount.cite')" prop="title" width="80">
<template slot-scope="scope">
<el-popover
ref="popover"
placement="right"
trigger="click"
width="700"
v-if="scope.row.cites && scope.row.cites > 0"
>
<ul style="padding: 10px; box-sizing: border-box; max-height: 500px; overflow-y: auto">
<li v-for="(v, i) in citeList" style="overflow: hidden; margin-bottom: 10px">
<div style="color: #7a2702; margin-right: 10px; float: left">{{ i + 1 }} .</div>
<div style="float: left">
<div style="margin-bottom: 2px">
<a
target="_blank"
:href="`https://doi.org/${v.doi}`"
style="color: #205493 !important"
>{{ v.article_name }}</a
>
</div>
<div style="color: #a2b1b6">
<span>{{ v.author }}</span>
<span style="margin-left: 5px">{{ v.journal_name }}</span>
</div>
</div>
</li>
</ul>
<div
:style="`text-align: center; color:${
scope.row.cites && scope.row.cites > 0 ? '#006699' : '#b0b0b0'
}; cursor: pointer;font-weight:${scope.row.cites && scope.row.cites > 0 ? '700' : '500'};`"
slot="reference"
@click="getCite(scope.row.article_id)"
>
{{ scope.row.cites ? scope.row.cites : 0 }}
</div>
</el-popover>
<div style="text-align: center; color: #b0b0b0; cursor: pointer" v-else>
{{ scope.row.cites ? scope.row.cites : 0 }}
</div>
</template>
</el-table-column>
<el-table-column :label="$t('paperArticleCount.relation')" prop="title" width="80">
<template slot-scope="scope">
<el-popover
ref="popover1"
placement="right"
trigger="click"
width="700"
v-if="scope.row.relations && scope.row.relations > 0"
>
<ul
style="padding: 10px; box-sizing: border-box; max-height: 500px; overflow-y: auto"
v-loading="citeLoading"
>
<li v-for="(v, i) in relationsList" style="overflow: hidden; margin-bottom: 10px">
<div style="color: #7a2702; margin-right: 10px; float: left">{{ i + 1 }} .</div>
<div style="float: left; width: calc(100% - 100px)">
<div style="margin-bottom: 2px">
<a
target="_blank"
:href="`https://doi.org/${v.doi}`"
style="color: #205493 !important"
>{{ v.title }}</a
>
</div>
<div style="color: #a2b1b6">
<span>{{ v.abbr }}</span>
<span style="margin-left: 5px">{{ v.journal_name }}</span>
</div>
</div>
</li>
</ul>
<div
:style="`text-align: center; color:${
scope.row.relations && scope.row.relations > 0 ? '#006699' : '#b0b0b0'
}; cursor: pointer;font-weight:${
scope.row.relations && scope.row.relations > 0 ? '700' : '500'
};`"
slot="reference"
@click="getArticleCountRelatedForEditor(scope.row.article_id)"
>
{{ scope.row.relations ? scope.row.relations : 0 }}
</div>
</el-popover>
<div style="text-align: center; color: #b0b0b0; cursor: pointer" v-else>
{{ scope.row.relations ? scope.row.relations : 0 }}
</div>
</template>
</el-table-column>
</el-table>
</div>
</template>
</el-table-column>
<el-table-column :label="$t('paperArticleCount.Periodroll')" width="" prop="title">
<template slot-scope="scope">
<div style="display: flex; align-items: center; justify-content: space-between">
<div>
<span style="display: inline-block; width: 140px; font-weight: 700; color: #333"
>Issue.{{ scope.$index + 1 }} No.{{ scope.row.stage_page }}</span
>
<span style="color: #006699"
>(&nbsp;{{ $t('paperArticleCount.articleLen1') }} : {{ scope.row.articles.length }}&nbsp;)</span
>
</div>
<span style="color: #b0b0b0; display: inline-block; width: 120px"> {{ scope.row.issue_date }} </span>
</div>
</template>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
export default {
data() {
return {
loading: false
citeLoading: false,
expandedRows: [],
lang: !localStorage.getItem('langs') || localStorage.getItem('langs') == 'en' ? 'en' : 'zh',
pickerOption: {
disabledDate(time) {
return time.getFullYear() < 2020 || time.getFullYear() > new Date().getFullYear();
}
},
currentYear: '',
loading: false,
journal_id: '',
citeList: [],
relationsList: [],
evaList: [],
tableData: [],
journal_data: {},
user_id: localStorage.getItem('U_id')
};
},
components: {
},
components: {},
async created() {
this.maxYear = new Date();
this.currentYear = new Date();
this.getData();
},
methods: {
toggleRow(row) {
const index = this.expandedRows.indexOf(row.journal_stage_id);
if (index === -1) {
this.expandedRows.push(row.journal_stage_id);
} else {
this.expandedRows.splice(index, 1);
}
},
async chan_id(value) {
this.loading = true;
console.log('value at line 138:', value);
// this.$echarts.init(document.getElementById('myChart')).clear();
// this.$echarts.init(document.getElementById('myChartgjhp')).clear();
this.journal_id = value;
console.log('this.evaList at line 169:', this.evaList);
this.journal_data = this.evaList.find((e) => e.journal_id == this.journal_id);
this.currentYear = new Date();
this.getInfo();
// await this.initEcharts();
// await this.initEchartsgjh();
},
// 获取数据
async getData() {
this.loading = true;
this.$api
.post('api/Super/editorJournal', {
editor_id: this.user_id
})
.then(async (res) => {
if (res.code == 0) {
this.loading = false;
this.evaList = res.data.list;
this.journal_id = res.data.list[0].journal_id;
console.log('this.evaList at line 169:', this.evaList);
this.journal_data = this.evaList.find((e) => e.journal_id == this.journal_id);
await this.getInfo();
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.loading = false;
this.$message.error(err);
});
},
selectYear() {
this.loading = true;
this.getInfo();
},
async getInfo() {
var that = this;
await this.$api
.post('api/Monitor/getPublicStagesForEditor', {
journal_id: this.journal_id,
year: this.currentYear.getFullYear()
})
.then(async (res) => {
if (res.code == 0) {
var data = res.data.list;
console.log('data at line 177:', data);
that.tableData = [...data];
console.log('this.tableData at line 177:', this.tableData);
this.$forceUpdate();
this.loading = false;
} else {
this.loading = false;
this.$message.error(res.msg);
}
})
.catch((err) => {
this.loading = false;
this.$message.error(err);
});
},
async getCite(id) {
var that = this;
this.citeList = [];
this.citeLoading = true;
await this.$api
.post('api/Monitor/getArticleCountCiteForEditor', {
article_id: id
})
.then(async (res) => {
if (res.code == 0) {
this.citeList = res.data.list;
this.citeLoading = false;
setTimeout(() => {
that.$nextTick(() => {
that.$refs.popover.updatePopper();
});
}, 100);
} else {
this.$message.error(res.msg);
this.citeLoading = false;
}
})
.catch((err) => {
this.$message.error(err);
this.citeLoading = false;
});
},
async getArticleCountRelatedForEditor(id) {
var that = this;
this.citeLoading = true;
this.relationsList = [];
await this.$api
.post('api/Monitor/getArticleCountRelatedForEditor', {
article_id: id
})
.then(async (res) => {
if (res.code == 0) {
this.relationsList = res.data.list;
this.citeLoading = false;
setTimeout(() => {
that.$nextTick(() => {
that.$refs.popover1.updatePopper();
});
}, 100);
} else {
this.$message.error(res.msg);
this.citeLoading = false;
}
})
.catch((err) => {
this.$message.error(err);
this.citeLoading = false;
});
},
handleRefresh() {},
async getEchartsData() {
await this.getCharts('year');
@@ -221,6 +530,11 @@ export default {
</script>
<style scoped>
/deep/.articleTable .el-table th {
background-color: #f0f0f0 !important;
color: #006699 !important;
padding: 3px !important;
}
.container {
padding: 20px;
box-sizing: border-box;
@@ -234,4 +548,24 @@ export default {
right: 0px;
z-index: 10;
}
.demo-table-expand {
font-size: 0;
}
.demo-table-expand label {
width: 90px;
color: #99a9bf;
}
.demo-table-expand .el-form-item {
margin-right: 0;
margin-bottom: 0;
width: 50%;
}
li {
list-style: none;
}
li a:hover {
text-decoration: underline; /* 鼠标移入时显示下划线 */
}
</style>