作者库

This commit is contained in:
2024-09-14 09:14:31 +08:00
parent bc5f3d7456
commit e1807241b5
5 changed files with 1250 additions and 500 deletions

View File

@@ -65,7 +65,7 @@ const en = {
InvestorProducer:'Investor Producer',
author:'Author',
status:'Status',
Published:'Published',
Published:'Published',journal:'Journal',
},
paperArticleCount:{
Periodroll:'Period Roll',
@@ -79,7 +79,13 @@ const en = {
},
partyListCorr:{
Realname:'Realname',
Email:'Email',
unregistered:'unregistered',
OtherInformation:'Other Information',
articlelist: 'Article List',journal:'Journal',
},
sidebar: {
main: 'Personal Center',
author: 'Author',

View File

@@ -67,13 +67,19 @@ const zh = {
cite: '引用',
relation: '关联',
}, partyListCorr: {
Realname: '姓名',
Email: '邮箱',
unregistered:'unregistered',
OtherInformation:'其他信息',
articlelist: '文章列表',journal: '期刊',
},
partyRole: {
identity: '身份',
InvestorProducer: '投稿者',
author: '作者',
status: '状态',
Published:'已发表',
Published: '已发表',journal:'Journal',
},
sidebar: {
main: '个人中心',

View File

@@ -0,0 +1,555 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-user"></i> Author Database
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container">
<div class="handle-box">
<el-select v-model="query.journal_id" placeholder="Please select a journal"
@change="query.pageIndex = 1;getData()">
<el-option v-for="item in jourList" :label="item.title" :key="item.journal_id"
:value="item.journal_id"></el-option>
</el-select>
<el-select v-model="query.year" placeholder="Please select a year"
@change="query.pageIndex = 1;getData()" style="margin: 0 0 0 15px;width: 100px;">
<el-option v-for="item in yearList" :label="item.title" :key="item.year" :value="item.year">
</el-option>
</el-select>
<el-input v-model="query.keywords" placeholder="Account / Realname / Email"
style="width: 240px;margin: 0 15px;">
</el-input>
<el-button type="primary" icon="el-icon-search" @click="query.pageIndex = 1;getData()">Search
</el-button>
<p style="height: 20px;"></p>
<span style="font-size: 14px;color: #606266;margin: 0 10px 0 0;">Research direction :</span>
<el-select v-model="query.major_a" placeholder="Please select major" @change="majorChange(1)"
style="width: 240px;margin: 0 10px 0 0;">
<el-option :key="0" label="All major" :value="0"></el-option>
<el-option v-for="item in majors_a" :key="item.major_id" :label="item.major_title"
:value="item.major_id"></el-option>
</el-select>
<el-select v-model="query.major_b" placeholder="Please select major" v-if="majors_b!=''"
@change="majorChange(2)" style="width: 240px;margin:0 10px 0 0;">
<el-option :key="0" label="None" :value="0"></el-option>
<el-option v-for="item in majors_b" :key="item.major_id" :label="item.major_title"
:value="item.major_id"></el-option>
</el-select>
<el-select v-model="query.major_c" placeholder="Please select major" v-if="majors_c!=''"
@change="majorChange(3)" style="width: 240px;margin:0 10px 0 0;">
<el-option :key="0" label="None" :value="0"></el-option>
<el-option v-for="item in majors_c" :key="item.major_id" :label="item.major_title"
:value="item.major_id"></el-option>
</el-select>
</div>
<el-table :data="tableData" border class="table" ref="multipleTable" header-cell-class-name="table-header"
empty-text="Messages (0)">
<el-table-column label="Base Information" width="250px">
<template slot-scope="scope">
<p class="tab_tie_col">
<span>Realname: </span><b style="font-size: 15px;">{{scope.row.realname}}</b>
</p>
<p class="tab_tie_col">
<span>Email: </span>{{scope.row.email}}
</p>
<p class="tab_tie_col">
<span>Title: </span>{{scope.row.technical}}
</p>
<p class="tab_tie_col">
<span>H-WOS: </span>
<font v-html="colorIndex(scope.row.wos_index,scope.row.wos_time)"></font>
</p>
<p class="tab_tie_col">
<span>H-Google: </span>
<font v-html="colorIndex(scope.row.google_index,scope.row.google_time)"></font>
</p>
<p class="tab_tie_col" v-if="scope.row.starList_mark!=0">
<span>Grade: </span>
<font style="display: inline-block;">
<img src="../../assets/img/star-all.png" v-for="item in scope.row.starList"
v-if="scope.row.starList_mark<=8&&item.star==1" class="starSty">
<img src="../../assets/img/star-traf.png" v-for="item in scope.row.starList"
v-if="scope.row.starList_mark<=8&&item.star==0" class="starSty">
<img src="../../assets/img/star-none.png" v-for="item in scope.row.starList"
v-if="scope.row.starList_mark<=8&&item.star==2" class="starSty">
<img src="../../assets/img/star-all.png" v-if="scope.row.starList_mark>8"
class="starSty">
<b style="font-size: 15px;color: #b77614;" v-if="scope.row.starList_mark>8">×
{{scope.row.starList_mark}}</b>
</font>
</p>
</template>
</el-table-column>
<el-table-column label="Other Information">
<template slot-scope="scope">
<p class="tab_tie_col" v-if="scope.row.field!=''&&scope.row.field!=null">
<span>Field: </span>{{scope.row.field}}
</p>
<p class="tab_tie_col" v-if="scope.row.major_str!=''&&scope.row.major_str!=null">
<span>Major: </span>{{scope.row.major_str}}
</p>
<p class="tab_tie_col" v-if="scope.row.company!=''&&scope.row.company!=null">
<span>Affiliation: </span>{{scope.row.company}}
</p>
</template>
</el-table-column>
<el-table-column label="Article List" width="280" :key="Math.random()">
<template slot-scope="scope">
<!-- <div class="iss_vol">
<el-popover placement="top-start" width="300" trigger="hover">
<p class="tipck">
<b>{{scope.row.realname}}</b>
</p>
<p class="tipck" style="margin: 5px 0pt;">
<b style="letter-spacing: -0.5px;color: #006699;">25 March 2023, Volume 5 Issue
1</b>
</p>
<p class="tipck" style="margin: 10px 0;word-wrap: break-word;word-break: normal;">
{{scope.row.field}}
</p>
<span slot="reference">
25 March 2023, Volume 5 Issue 1
</span>
</el-popover>
</div> -->
<div class="iss_vol" v-for="(item,index) in scope.row.art_detail"
v-if="index<scope.row.art_detail_num" @click="openActicle(item)">
<b style="margin-right: 2px;">{{item.journal_abbr}}</b>: {{item.doi}}
<font v-if="item.doi==''">Link</font>
</div>
<p class="moreShrink" v-if="scope.row.art_detail.length>5&&scope.row.art_detail_num==5"
@click="moreShrink(scope,1)">
<i class="el-icon-bottom"></i>
More
</p>
<p class="moreShrink" v-if="scope.row.art_detail.length>5&&scope.row.art_detail_num!=5"
@click="moreShrink(scope,0)">
<i class="el-icon-top"></i>
More
</p>
</template>
</el-table-column>
<el-table-column label="Remarks" width="180">
<template slot-scope="scope">
{{scope.row.remark}}
<b @click="BoxRemark(scope.row)" style="margin-left:10px;cursor: pointer;color:#006699;"
class="el-icon-edit"></b>
</template>
</el-table-column>
<el-table-column label="" width="105" align="center">
<template slot-scope="scope">
<el-button type="primary" plain icon="el-icon-edit" @click="handleDtail(scope.row)">
Detail
</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background layout="total, prev, pager, next" :current-page="query.pageIndex"
:page-size="query.pageSize" :total="link_Total" @current-change="handlePageChange"></el-pagination>
</div>
</div>
<!-- 标记弹出框 -->
<el-dialog title="Remarks" :visible.sync="remarkBox" width="550px">
<el-form ref="remark" :model="remarkMes" label-width="95px">
<el-form-item label="Reviewer :">
<p style="line-height: 20px;margin-top: 6px;">{{remarkMes.realname}}</p>
</el-form-item>
<el-form-item label="Email :">
<p style="line-height: 20px;margin-top: 6px;">{{remarkMes.email}}</p>
</el-form-item>
<el-form-item label="Content :">
<el-input type="textarea" rows="5" v-model="remarkMes.remark"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="remarkBox = false">Cancel</el-button>
<el-button type="primary" @click="saveRemark">Save</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
query: {
journal_id: '',
year: 0,
keywords: '',
pageIndex: 1,
pageSize: 15,
major: 0,
major_a: 0,
major_b: '',
major_c: '',
},
edit_id: localStorage.getItem('U_id'),
tableData: [],
link_Total: 0,
jourList: [],
yearList: [{
title: 'All years',
year: 0
}],
majors_a: [],
majors_b: [],
majors_c: [],
remarkMes: {
remark: ''
},
remarkBox: false,
};
},
created() {
this.getJournal();
this.initMajor()
},
methods: {
// 获取期刊列表数据
getJournal() {
this.$api
.post('api/Chief/getJournalsByEditor', {
'user_id': this.edit_id
})
.then(res => {
if (res.code == 0) {
this.jourList = res.data.journals;
this.query.journal_id = this.jourList[0].journal_id
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
for (var i = 2015; i <= new Date().getFullYear(); i++) {
this.yearList.push({
title: i,
year: i
})
}
},
getData() {
const loading = this.$loading({
lock: true,
text: 'Loading...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
this.$api
.post('api/User/getAuthorUserList', this.query)
.then(res => {
if (res.code == 0) {
this.tableData = res.data.list;
for (var i = 0; i < this.tableData.length; i++) {
this.getScoreData(i, this.tableData[i].score)
if (this.tableData[i].art_detail.length > 5) {
this.tableData[i].art_detail_num = 5
} else {
this.tableData[i].art_detail_num = this.tableData[i].art_detail.length
}
}
this.link_Total = res.data.count || 0;
loading.close()
} else {
this.$message.error(res.msg);
loading.close()
}
})
.catch(err => {
this.$message.error(err);
loading.close()
});
},
// 文章跳转
openActicle(e) {
window.open(e.link, '_blank');
},
// 文章展开收缩
moreShrink(e, m) {
if (m == 1) {
this.tableData[e.$index].art_detail_num = this.tableData[e.$index].art_detail.length
} else if (m == 0) {
this.tableData[e.$index].art_detail_num = 5
}
console.log(this.tableData[e.$index])
console.log(this.tableData[e.$index].art_detail_num)
this.$forceUpdate()
},
// 评分
getScoreData(i, e) {
this.tableData[i].starList = []
this.tableData[i].starList_mark = 0
if (e < 0.5 && e > 0) {
this.tableData[i].starList.push({
star: 2
})
this.tableData[i].starList_mark = 1
} else {
let zheng = Math.floor(e)
let xiao = Number(e) - Math.floor(e)
if (xiao >= 0.5) {
xiao = 0.5
} else {
xiao = 0
}
for (var j = 0; j < zheng; j++) {
this.tableData[i].starList.push({
star: 1
})
}
if (xiao == 0.5) {
this.tableData[i].starList.push({
star: 0
})
}
this.tableData[i].starList_mark = Number(zheng) + Number(xiao)
}
},
// 分页导航
handlePageChange(val) {
this.$set(this.query, 'pageIndex', val);
this.getData();
},
// 详情
handleDtail(e) {
let routerJump = this.$router.resolve({
path: '/partyRole',
query: {
id: e.user_id
}
});
window.open(routerJump.href, '_blank');
},
// 标记弹出框
BoxRemark(e) {
this.remarkBox = true;
this.remarkMes.realname = e.realname;
this.remarkMes.user_id = e.user_id;
this.remarkMes.email = e.email;
this.remarkMes.remark = e.remark;
},
// 修改标记
saveRemark() {
this.$api
.post('api/User/editRemarkForUser', this.remarkMes)
.then(res => {
if (res.code == 0) {
this.$message.success('Success');
this.remarkBox = false;
this.getData();
} else {
this.$message.error(res.msg);
}
});
},
// 领域
initMajor() {
this.$api
.post('api/Ucenter/getMajor', {
major_id: 1
}).then((res) => {
this.majors_a = res.data.major.children;
});
},
// 搜索选择领域
majorChange(e) {
if (e == 1) {
this.$api
.post('api/Ucenter/getMajor', {
major_id: this.query.major_a
}).then((res) => {
this.majors_b = res.data.major.children;
this.majors_c = []
this.query.major_b = ''
this.query.major_c = ''
this.majorChange_panduan()
});
} else if (e == 2 && this.query.major_b != 0) {
this.$api
.post('api/Ucenter/getMajor', {
major_id: this.query.major_b
}).then((res) => {
this.majors_c = res.data.major.children;
this.query.major_c = ''
this.majorChange_panduan()
});
} else {
this.majorChange_panduan()
}
},
majorChange_panduan() {
if (this.query.major_c != '' || this.query.major_c != 0) {
this.query.major = this.query.major_c
} else if (this.query.major_b != '' || this.query.major_b != 0) {
this.query.major = this.query.major_b
} else {
this.query.major = this.query.major_a
}
this.query.pageIndex = 1
this.getData();
},
// 指数颜色
colorIndex(num, time) {
if (time != 0) {
let date = new Date(parseInt(time * 1000));
let Y = date.getFullYear() + '-';
let M = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) + '-' : date.getMonth() + 1 + '-';
let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
let H = date.getHours() < 10 ? '0' + date.getHours() + ':' : date.getHours() + ':';
let U = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
time = Y + M + D;
}
let str = '';
if (num < 10) {
str = '<b style="color:#cb160a">' + num +
'</b><span style="color:#aaa;font-size:14px;margin-left:10px;">(' + time +
')</span>'
} else if (num < 15) {
str = '<b style="color:#cbb504">' + num +
'</b><span style="color:#aaa;font-size:14px;margin-left:10px;">(' + time +
')</span>'
} else {
str = '<b style="color:#0cbc15">' + num +
'</b><span style="color:#aaa;font-size:14px;margin-left:10px;">(' + time +
')</span>'
}
if (time == 0) {
str =
'<b style="color:#aaa;">0</b><span style="color:#aaa;font-size:14px;margin-left:10px;">(No time)</span>'
}
return str;
},
// 时间格式
formatDate(timestamp) {
var date = new Date(timestamp * 1000); //时间戳为10位需*1000时间戳为13位的话不需乘1000
var Y = date.getFullYear() + '-';
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
var h = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
var m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
return Y + M + D;
},
}
};
</script>
<style scoped>
.handle-box {
margin-bottom: 20px;
}
.table {
width: 100%;
font-size: 14px;
}
.table-td-thumb {
display: block;
margin: auto;
width: 40px;
height: 40px;
}
.el-table .warning-row {
background: #f3ca7f;
}
.el-table .success-row {
background: #bcfc9a;
}
.el-table .normol-row {
background: #d8f1c7;
}
.el-table .red-row {
background: #f05555;
}
.tab_tie_col {
margin-bottom: 5px;
color: #333;
word-wrap: break-word;
word-break: normal;
}
.tab_tie_col>span {
color: #888;
margin: 0 5px 0 0;
font-size: 13px;
}
.starSty {
width: 18px;
margin-right: 4px;
vertical-align: text-top;
}
.starSty:nth-last-child(1) {
margin-right: 0;
}
.txt_pdf {
margin: 0 0 20px 10px;
display: inline-block;
color: #333;
}
.txt_pdf>i {
color: #66a9f0;
font-weight: bold;
margin-left: 10px;
}
.iss_vol {
/* color: #006699; */
margin: 5px 0;
}
.iss_vol:hover {
cursor: pointer;
text-decoration: underline;
}
.moreShrink {
text-align: right;
color: #006699;
font-weight: bold;
}
.moreShrink:hover {
cursor: pointer;
text-decoration: underline;
}
</style>

View File

@@ -2,60 +2,138 @@
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-user"></i> Author Database
</el-breadcrumb-item>
<el-breadcrumb-item> <i class="el-icon-user"></i> Author Database </el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container">
<div class="handle-box">
<el-select v-model="query.journal_id" placeholder="Please select a journal"
@change="query.pageIndex = 1;getData()">
<el-option v-for="item in jourList" :label="item.title" :key="item.journal_id"
:value="item.journal_id"></el-option>
</el-select>
<el-select v-model="query.year" placeholder="Please select a year"
@change="query.pageIndex = 1;getData()" style="margin: 0 0 0 15px;width: 100px;">
<el-option v-for="item in yearList" :label="item.title" :key="item.year" :value="item.year">
</el-option>
</el-select>
<el-input v-model="query.keywords" placeholder="Account / Realname / Email"
style="width: 240px;margin: 0 15px;">
</el-input>
<el-button type="primary" icon="el-icon-search" @click="query.pageIndex = 1;getData()">Search
<!-- <el-select
v-model="query.journal_id"
placeholder="Please select a journal"
@change="
query.pageIndex = 1;
getData();
"
>
<el-option v-for="item in jourList" :label="item.title" :key="item.journal_id" :value="item.journal_id"></el-option>
</el-select> -->
<el-input v-model="query.keywords" placeholder="Email" style="width: 240px; margin: 0 15px 0 0"> </el-input>
<el-button
type="primary"
icon="el-icon-search"
@click="
query.page = 1;
getData();
"
>Search
</el-button>
<p style="height: 20px;"></p>
<span style="font-size: 14px;color: #606266;margin: 0 10px 0 0;">Research direction :</span>
<el-select v-model="query.major_a" placeholder="Please select major" @change="majorChange(1)"
style="width: 240px;margin: 0 10px 0 0;">
<el-option :key="0" label="All major" :value="0"></el-option>
<el-option v-for="item in majors_a" :key="item.major_id" :label="item.major_title"
:value="item.major_id"></el-option>
</el-select>
<el-select v-model="query.major_b" placeholder="Please select major" v-if="majors_b!=''"
@change="majorChange(2)" style="width: 240px;margin:0 10px 0 0;">
<el-option :key="0" label="None" :value="0"></el-option>
<el-option v-for="item in majors_b" :key="item.major_id" :label="item.major_title"
:value="item.major_id"></el-option>
</el-select>
<el-select v-model="query.major_c" placeholder="Please select major" v-if="majors_c!=''"
@change="majorChange(3)" style="width: 240px;margin:0 10px 0 0;">
<el-option :key="0" label="None" :value="0"></el-option>
<el-option v-for="item in majors_c" :key="item.major_id" :label="item.major_title"
:value="item.major_id"></el-option>
</el-select>
</div>
<el-table :data="tableData" border class="table" ref="multipleTable" header-cell-class-name="table-header"
empty-text="Messages (0)">
<el-table-column label="Base Information" width="250px">
<el-table :data="tableData" class="table" ref="multipleTable" header-cell-class-name="table-header" empty-text="Messages (0)">
<el-table-column :label="$t('partyListCorr.Realname')" width="300px">
<template slot-scope="scope">
<p class="tab_tie_col">
<span>Realname: </span><b style="font-size: 15px;">{{scope.row.realname}}</b>
{{ $t('partyListCorr.Realname') }}: {{ scope.row.firstname }}&nbsp;{{ scope.row.lastname }}
<span
v-if="!scope.row.user"
style="
margin-left: 5px;
border-radius: 4px;
color: #fff;
background-color: #909399;
border-color: #909399;
padding: 2px 4px;
"
>未注册</span
>
</p>
<p class="tab_tie_col">
<span>Email: </span>{{scope.row.email}}
{{ $t('partyListCorr.Email') }}: <span style="color: #409eff">{{ scope.row.email }}</span>
</p>
<div
v-if="
(scope.row.field != '' && scope.row.field != null) ||
(scope.row.major_str != '' && scope.row.major_str != null) ||
(scope.row.company != '' && scope.row.company != null) ||
scope.row.user
"
>
<p class="tab_tie_col" v-if="scope.row.field != '' && scope.row.field != null">
<span>Field: </span>{{ scope.row.field }}
</p>
<p class="tab_tie_col" v-if="scope.row.major_str != '' && scope.row.major_str != null">
<span>Major: </span>{{ scope.row.major_str }}
</p>
<p class="tab_tie_col" v-if="scope.row.company != '' && scope.row.company != null">
<span>Affiliation: </span>{{ scope.row.company }}
</p>
<div v-if="scope.row.user">
<p class="tab_tie_col">
<span>H-WOS: </span>
<font v-html="colorIndex(scope.row.user.wos_index, scope.row.user.wos_time)"></font>
</p>
<p class="tab_tie_col">
<span>H-Google: </span>
<font v-html="colorIndex(scope.row.user.google_index, scope.row.user.google_time)"></font>
</p>
</div>
</div>
<!-- <el-popover
ref="popover"
placement="right"
trigger="hover"
width="auto"
v-if="
(scope.row.field != '' && scope.row.field != null) ||
(scope.row.major_str != '' && scope.row.major_str != null) ||
(scope.row.company != '' && scope.row.company != null) ||
scope.row.user
"
>
<p class="tab_tie_col" v-if="scope.row.field != '' && scope.row.field != null">
<span>Field: </span>{{ scope.row.field }}
</p>
<p class="tab_tie_col" v-if="scope.row.major_str != '' && scope.row.major_str != null">
<span>Major: </span>{{ scope.row.major_str }}
</p>
<p class="tab_tie_col" v-if="scope.row.company != '' && scope.row.company != null">
<span>Affiliation: </span>{{ scope.row.company }}
</p>
<div v-if="scope.row.user">
<p class="tab_tie_col">
<span>H-WOS: </span>
<font v-html="colorIndex(scope.row.user.wos_index, scope.row.user.wos_time)"></font>
</p>
<p class="tab_tie_col">
<span>H-Google: </span>
<font v-html="colorIndex(scope.row.user.google_index, scope.row.user.google_time)"></font>
</p>
</div>
<p
style="
color: #006699;
width: auto !important;
display: inline-block;
color: #713615;
font-weight: 700;
font-size: 12px;
border: 1px solid #b15522;
padding: 0px 4px;
box-sizing: border-box;
border-radius: 4px;
"
slot="reference"
>
{{ $t('partyListCorr.OtherInformation') }}
</p>
</el-popover> -->
<!-- <p class="tab_tie_col">
<span>Title: </span>{{scope.row.technical}}
</p>
<p class="tab_tie_col">
@@ -80,76 +158,117 @@
<b style="font-size: 15px;color: #b77614;" v-if="scope.row.starList_mark>8">×
{{scope.row.starList_mark}}</b>
</font>
</p>
</p> -->
</template>
</el-table-column>
<el-table-column label="Other Information">
<el-table-column :label="$t('partyListCorr.articlelist')" min-width="500" :key="Math.random()">
<template slot-scope="scope">
<p class="tab_tie_col" v-if="scope.row.field!=''&&scope.row.field!=null">
<span>Field: </span>{{scope.row.field}}
</p>
<p class="tab_tie_col" v-if="scope.row.major_str!=''&&scope.row.major_str!=null">
<span>Major: </span>{{scope.row.major_str}}
</p>
<p class="tab_tie_col" v-if="scope.row.company!=''&&scope.row.company!=null">
<span>Affiliation: </span>{{scope.row.company}}
</p>
</template>
</el-table-column>
<el-table-column label="Article List" width="280" :key="Math.random()">
<template slot-scope="scope">
<!-- <div class="iss_vol">
<el-popover placement="top-start" width="300" trigger="hover">
<p class="tipck">
<b>{{scope.row.realname}}</b>
</p>
<p class="tipck" style="margin: 5px 0pt;">
<b style="letter-spacing: -0.5px;color: #006699;">25 March 2023, Volume 5 Issue
1</b>
</p>
<p class="tipck" style="margin: 10px 0;word-wrap: break-word;word-break: normal;">
{{scope.row.field}}
</p>
<span slot="reference">
25 March 2023, Volume 5 Issue 1
<div
v-for="(item, index) in scope.row.articles"
style="overflow: hidden"
v-if="index <= 4"
:style="`${
index != 0 ? 'border-top: 1px solid #409EFF ;padding:5px 0 !important;' : 'padding:5px 0 !important'
}`"
>
<span style="font-size: 700">{{ index + 1 }}. &nbsp;&nbsp;</span>
<span style="font-size: 14px; font-weight: 700">{{ item.journal_jabbr }} :</span>
<span v-if="item.link" style="text-decoration: underline">
<a
target="_blank"
:href="item.link"
style="
padding: 2px 4px;
border-radius: 2px;
margin-left: 10px;
font-size: 12px;
color: #909399;
background: #f4f4f5;
border-color: #d3d4d6;
float: right;
"
>{{ item.title
}}<span
style=""
v-if="
item.state == 0 ||
item.state == 1 ||
item.state == 2 ||
item.state == 3 ||
item.state == 4 ||
item.state == 5 ||
item.state == 6
"
>
<!-- {{ scope.row.link ?$t('partyRole.Published') : '' }} -->
{{ $t(`artstate.state${item.state}`) }}
</span></a
>
</span>
</el-popover>
</div> -->
<div class="iss_vol" v-for="(item,index) in scope.row.art_detail"
v-if="index<scope.row.art_detail_num" @click="openActicle(item)">
<b style="margin-right: 2px;">{{item.journal_abbr}}</b>: {{item.doi}}
<font v-if="item.doi==''">Link</font>
<span v-else style="color: rgb(113 112 112)">
{{ item.title
}}<span
style="
padding: 2px 4px;
border-radius: 2px;
margin-left: 10px;
font-size: 12px;
color: #909399;
background: #f4f4f5;
border-color: #d3d4d6;
float: right;
"
v-if="
item.state == 0 ||
item.state == 1 ||
item.state == 2 ||
item.state == 3 ||
item.state == 4 ||
item.state == 5 ||
item.state == 6
"
>
<!-- {{ scope.row.link ?$t('partyRole.Published') : '' }} -->
{{ $t(`artstate.state${item.state}`) }}
</span>
</span>
<!-- <b style="margin-right: 2px">{{ item.journal_abbr }}</b
>: {{ item.doi }}
<font v-if="item.doi == ''">Link</font> -->
</div>
<p class="moreShrink" v-if="scope.row.art_detail.length>5&&scope.row.art_detail_num==5"
@click="moreShrink(scope,1)">
<i class="el-icon-bottom"></i>
More
</p>
<p class="moreShrink" v-if="scope.row.art_detail.length>5&&scope.row.art_detail_num!=5"
@click="moreShrink(scope,0)">
<i class="el-icon-top"></i>
<p class="moreShrink" v-if="scope.row.articles.length > 5" @click="moreShrink(scope.row.articles)">
<i class="el-icon-right"></i>
More
</p>
</template>
</el-table-column>
<el-table-column label="Remarks" width="180">
<template slot-scope="scope">
{{ scope.row.remark }}
<b @click="BoxRemark(scope.row)" style="margin-left:10px;cursor: pointer;color:#006699;"
class="el-icon-edit"></b>
<b
@click="BoxRemark(scope.row)"
style="margin-left: 10px; cursor: pointer; color: #006699"
class="el-icon-edit"
></b>
</template>
</el-table-column>
<el-table-column label="" width="105" align="center">
<template slot-scope="scope">
<el-button type="primary" plain icon="el-icon-edit" @click="handleDtail(scope.row)">
Detail
</el-button>
<el-button v-if="scope.row.user" type="primary" plain icon="el-icon-edit" @click="handleDtail(scope.row)"> Detail </el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background layout="total, prev, pager, next" :current-page="query.pageIndex"
:page-size="query.pageSize" :total="link_Total" @current-change="handlePageChange"></el-pagination>
<el-pagination
background
layout="total, prev, pager, next"
:current-page="query.page"
:page-size="query.limit"
:total="link_Total"
@current-change="handlePageChange"
></el-pagination>
</div>
</div>
@@ -157,10 +276,10 @@
<el-dialog title="Remarks" :visible.sync="remarkBox" width="550px">
<el-form ref="remark" :model="remarkMes" label-width="95px">
<el-form-item label="Reviewer :">
<p style="line-height: 20px;margin-top: 6px;">{{remarkMes.realname}}</p>
<p style="line-height: 20px; margin-top: 6px">{{ remarkMes.realname }}</p>
</el-form-item>
<el-form-item label="Email :">
<p style="line-height: 20px;margin-top: 6px;">{{remarkMes.email}}</p>
<p style="line-height: 20px; margin-top: 6px">{{ remarkMes.email }}</p>
</el-form-item>
<el-form-item label="Content :">
<el-input type="textarea" rows="5" v-model="remarkMes.remark"></el-input>
@@ -171,7 +290,50 @@
<el-button type="primary" @click="saveRemark">Save</el-button>
</span>
</el-dialog>
<el-drawer :title="$t('partyListCorr.articlelist')" :visible.sync="drawer" size="50%">
<div style="padding: 0 20px; box-sizing: border-box">
<el-table height="90vh" row-key="article_id" style="" :data="articlesList" 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>
<span v-if="scope.row.link" style="text-decoration: underline">
<a target="_blank" :href="scope.row.link" style="color: #006699 !important">{{ scope.row.title }}</a>
</span>
<span v-else style="color: rgb(113 112 112)">
{{ scope.row.title }}
</span>
</template>
</el-table-column>
<el-table-column :label="$t('partyListCorr.journal')" prop="title" width="140">
<template slot-scope="scope">
<div style="color: ">{{ scope.row.journal_jabbr }}</div>
</template>
</el-table-column>
<el-table-column :label="$t('partyRole.status')" prop="title" width="80">
<template slot-scope="scope">
<div
style=""
v-if="
scope.row.state == 0 ||
scope.row.state == 1 ||
scope.row.state == 2 ||
scope.row.state == 3 ||
scope.row.state == 4 ||
scope.row.state == 5 ||
scope.row.state == 6
"
>
<!-- {{ scope.row.link ?$t('partyRole.Published') : '' }} -->
{{ $t(`artstate.state${scope.row.state}`) }}
</div>
</template>
</el-table-column>
</el-table>
</div>
</el-drawer>
</div>
</template>
@@ -179,57 +341,61 @@
export default {
data() {
return {
drawer: false,
articlesList: [],
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
query: {
journal_id: '',
year: 0,
// journal_id: '',
// year: 0,
keywords: '',
pageIndex: 1,
pageSize: 15,
major: 0,
major_a: 0,
major_b: '',
major_c: '',
page: 1,
limit: 15
// major: 0,
// major_a: 0,
// major_b: '',
// major_c: '',
},
edit_id: localStorage.getItem('U_id'),
tableData: [],
link_Total: 0,
jourList: [],
yearList: [{
yearList: [
{
title: 'All years',
year: 0
}],
}
],
majors_a: [],
majors_b: [],
majors_c: [],
remarkMes: {
remark: ''
},
remarkBox: false,
remarkBox: false
};
},
created() {
this.getJournal();
this.initMajor()
this.initMajor();
},
methods: {
// 获取期刊列表数据
getJournal() {
this.$api
.post('api/Chief/getJournalsByEditor', {
'user_id': this.edit_id
user_id: this.edit_id
})
.then(res => {
.then((res) => {
if (res.code == 0) {
this.jourList = res.data.journals;
this.query.journal_id = this.jourList[0].journal_id
this.query.journal_id = this.jourList[0].journal_id;
this.getData();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
.catch((err) => {
this.$message.error(err);
});
@@ -237,7 +403,7 @@
this.yearList.push({
title: i,
year: i
})
});
}
},
@@ -249,28 +415,28 @@
background: 'rgba(0, 0, 0, 0.7)'
});
this.$api
.post('api/User/getAuthorUserList', this.query)
.then(res => {
.post('api/User/authorDatabase', this.query)
.then((res) => {
if (res.code == 0) {
this.tableData = res.data.list;
for (var i = 0; i < this.tableData.length; i++) {
this.getScoreData(i, this.tableData[i].score)
if (this.tableData[i].art_detail.length > 5) {
this.tableData[i].art_detail_num = 5
// this.getScoreData(i, this.tableData[i].score)
if (this.tableData[i].articles && this.tableData[i].articles.length > 5) {
this.tableData[i].art_detail_num = 5;
} else {
this.tableData[i].art_detail_num = this.tableData[i].art_detail.length
this.tableData[i].art_detail_num = this.tableData[i].articles ? this.tableData[i].articles.length : 0;
}
}
this.link_Total = res.data.count || 0;
loading.close()
loading.close();
} else {
this.$message.error(res.msg);
loading.close()
loading.close();
}
})
.catch(err => {
.catch((err) => {
this.$message.error(err);
loading.close()
loading.close();
});
},
@@ -281,52 +447,53 @@
// 文章展开收缩
moreShrink(e, m) {
if (m == 1) {
this.tableData[e.$index].art_detail_num = this.tableData[e.$index].art_detail.length
} else if (m == 0) {
this.tableData[e.$index].art_detail_num = 5
}
console.log(this.tableData[e.$index])
console.log(this.tableData[e.$index].art_detail_num)
this.$forceUpdate()
this.articlesList = e;
this.drawer = true;
// if (m == 1) {
// this.tableData[e.$index].art_detail_num = this.tableData[e.$index].articles.length;
// } else if (m == 0) {
// this.tableData[e.$index].art_detail_num = 5;
// }
// console.log(this.tableData[e.$index]);
// console.log(this.tableData[e.$index].art_detail_num);
this.$forceUpdate();
},
// 评分
getScoreData(i, e) {
this.tableData[i].starList = []
this.tableData[i].starList_mark = 0
this.tableData[i].starList = [];
this.tableData[i].starList_mark = 0;
if (e < 0.5 && e > 0) {
this.tableData[i].starList.push({
star: 2
})
this.tableData[i].starList_mark = 1
});
this.tableData[i].starList_mark = 1;
} else {
let zheng = Math.floor(e)
let xiao = Number(e) - Math.floor(e)
let zheng = Math.floor(e);
let xiao = Number(e) - Math.floor(e);
if (xiao >= 0.5) {
xiao = 0.5
xiao = 0.5;
} else {
xiao = 0
xiao = 0;
}
for (var j = 0; j < zheng; j++) {
this.tableData[i].starList.push({
star: 1
})
});
}
if (xiao == 0.5) {
this.tableData[i].starList.push({
star: 0
})
});
}
this.tableData[i].starList_mark = Number(zheng) + Number(xiao)
this.tableData[i].starList_mark = Number(zheng) + Number(xiao);
}
},
// 分页导航
handlePageChange(val) {
this.$set(this.query, 'pageIndex', val);
this.$set(this.query, 'page', val);
this.getData();
},
@@ -335,7 +502,7 @@
let routerJump = this.$router.resolve({
path: '/partyRole',
query: {
id: e.user_id
id: e.user.user_id
}
});
window.open(routerJump.href, '_blank');
@@ -352,9 +519,7 @@
// 修改标记
saveRemark() {
this.$api
.post('api/User/editRemarkForUser', this.remarkMes)
.then(res => {
this.$api.post('api/User/editRemarkForUser', this.remarkMes).then((res) => {
if (res.code == 0) {
this.$message.success('Success');
this.remarkBox = false;
@@ -370,7 +535,8 @@
this.$api
.post('api/Ucenter/getMajor', {
major_id: 1
}).then((res) => {
})
.then((res) => {
this.majors_a = res.data.major.children;
});
},
@@ -381,36 +547,38 @@
this.$api
.post('api/Ucenter/getMajor', {
major_id: this.query.major_a
}).then((res) => {
})
.then((res) => {
this.majors_b = res.data.major.children;
this.majors_c = []
this.query.major_b = ''
this.query.major_c = ''
this.majorChange_panduan()
this.majors_c = [];
this.query.major_b = '';
this.query.major_c = '';
this.majorChange_panduan();
});
} else if (e == 2 && this.query.major_b != 0) {
this.$api
.post('api/Ucenter/getMajor', {
major_id: this.query.major_b
}).then((res) => {
})
.then((res) => {
this.majors_c = res.data.major.children;
this.query.major_c = ''
this.majorChange_panduan()
this.query.major_c = '';
this.majorChange_panduan();
});
} else {
this.majorChange_panduan()
this.majorChange_panduan();
}
},
majorChange_panduan() {
if (this.query.major_c != '' || this.query.major_c != 0) {
this.query.major = this.query.major_c
} else if (this.query.major_b != '' || this.query.major_b != 0) {
this.query.major = this.query.major_b
} else {
this.query.major = this.query.major_a
}
this.query.pageIndex = 1
// if (this.query.major_c != '' || this.query.major_c != 0) {
// this.query.major = this.query.major_c
// } else if (this.query.major_b != '' || this.query.major_b != 0) {
// this.query.major = this.query.major_b
// } else {
// this.query.major = this.query.major_a
// }
this.query.page = 1;
this.getData();
},
@@ -427,21 +595,29 @@
}
let str = '';
if (num < 10) {
str = '<b style="color:#cb160a">' + num +
'</b><span style="color:#aaa;font-size:14px;margin-left:10px;">(' + time +
')</span>'
str =
'<b style="color:#cb160a">' +
num +
'</b><span style="color:#aaa;font-size:14px;margin-left:10px;">(' +
time +
')</span>';
} else if (num < 15) {
str = '<b style="color:#cbb504">' + num +
'</b><span style="color:#aaa;font-size:14px;margin-left:10px;">(' + time +
')</span>'
str =
'<b style="color:#cbb504">' +
num +
'</b><span style="color:#aaa;font-size:14px;margin-left:10px;">(' +
time +
')</span>';
} else {
str = '<b style="color:#0cbc15">' + num +
'</b><span style="color:#aaa;font-size:14px;margin-left:10px;">(' + time +
')</span>'
str =
'<b style="color:#0cbc15">' +
num +
'</b><span style="color:#aaa;font-size:14px;margin-left:10px;">(' +
time +
')</span>';
}
if (time == 0) {
str =
'<b style="color:#aaa;">0</b><span style="color:#aaa;font-size:14px;margin-left:10px;">(No time)</span>'
str = '<b style="color:#aaa;">0</b><span style="color:#aaa;font-size:14px;margin-left:10px;">(No time)</span>';
}
return str;
},
@@ -456,7 +632,7 @@
var m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
return Y + M + D;
},
}
}
};
</script>
@@ -517,7 +693,6 @@
margin-right: 0;
}
.txt_pdf {
margin: 0 0 20px 10px;
display: inline-block;
@@ -533,8 +708,6 @@
.iss_vol {
/* color: #006699; */
margin: 5px 0;
}
.iss_vol:hover {
@@ -543,7 +716,7 @@
}
.moreShrink {
text-align: right;
text-align: left;
color: #006699;
font-weight: bold;
}

View File

@@ -337,6 +337,16 @@
</div>
</template>
</el-table-column>
<el-table-column :label="$t('partyRole.journal')" prop="title" width="100">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" :content="scope.row.journal_title
" placement="top-start">
<div>
{{ scope.row.abbr }}
</div>
</el-tooltip>
</template>
</el-table-column>
<el-table-column :label="$t('partyRole.status')" prop="title" width="80">
<template slot-scope="scope">
<div