H指数修改

This commit is contained in:
2024-11-15 09:20:54 +08:00
parent ae29f8fc19
commit 7d7f516cfc
2 changed files with 680 additions and 126 deletions

View File

@@ -103,8 +103,7 @@
</div>
<div style="display: flex; margin-left: auto">
<div class="fixCard" :style="`width: ${query.state == 0 ? '51% !important' : '33% !important'};`">
<div class="fixCard" :style="`width: ${query.state == 0 ? '33% !important' : '33% !important'};`">
<b style="font-size: 16px; letter-spacing: -0.5px">Manuscript Files</b>
<p style="height: 10px"></p>
<div class="fi_new" v-if="item.file.coverLetter">
@@ -239,7 +238,7 @@
</div>
</div>
<div style="width: 1%"></div>
<div class="fixCard" style="width: 16%">
<div class="fixCard" style="width: 36%">
<b style="font-size: 16px; letter-spacing: -0.5px">AI scoring</b>
<p style="font-size: 18px; font-weight: bold; margin-bottom: 5px; color: #db890e" v-if="item.reportList.length > 0">
<font style="font-size: 14px; font-weight: normal; color: #333">Initial review score :</font>
@@ -250,7 +249,53 @@
<font style="font-size: 14px; font-weight: normal">Initial review score :</font>
{{ item.scoring }} <i class="el-icon-refresh refreshBtn" @click="refreshScore(item)"></i>
</p>
<p v-if="item.scoring != 0 && item.H != null" style="color: #999">{{ item.H.google_editor }}</p>
<div v-if="item.reportList.length > 0" style="text-align: left">
<div v-for="(v, i) in item.reportList" style="margin-top: 10px; overflow: hidden">
<div style="display: flex; align-items: center; justify-content: space-between">
<div style="display: flex; align-items: center;">
<span
style="
float: left;
margin-right: 6px;
background-color: #fff;
width: 20px;
height: 20px;
border-radius: 14px;
display: flex;
align-items: center;
justify-content: center;
"
><i class="el-icon-s-custom"></i
></span>
<span style="max-width:80%;white-space: nowrap;display: inline-block;
overflow: hidden;
text-overflow: ellipsis;">{{ v.author_account.realname }}</span>
</div>
<div style="max-width:260px;width:auto;">
<span style="margin-left: 6px" v-if="v.author_account.wos_time">
<span style="font-size: 12px; font-weight: bold">WOS</span> :
<span v-html="colorIndex1(v.author_account.wos_index)"></span>
</span>
<span style="margin-left: 6px" v-if="v.author_account.scopus_time">
<span style="font-size: 12px; font-weight: bold">Scopus</span> :
<span v-html="colorIndex1(v.author_account.scopus_index)"></span>
</span>
<span style="margin-left: 6px" v-if="v.author_account.google_time">
<span style="font-size: 12px; font-weight: bold">Google</span> :
<span v-html="colorIndex1(v.author_account.google_index)"></span>
</span>
<b @click="aiSoring(v)" class="btnCliArt" style="margin-left: 10px">
<i class="el-icon-edit"></i>
</b>
</div>
</div>
</div>
</div>
<!-- <p v-if="item.scoring != 0 && item.H != null" style="color: #999">{{ item.H.google_editor }}</p>
<p v-if="item.scoring != 0 && item.H != null && item.H.google_time != 0" style="color: #999">
{{ formatDate(item.H.google_time) }}
</p>
@@ -261,7 +306,7 @@
style="margin-top: 10px; display: block"
>
<i class="el-icon-edit"></i> Edit Hindex
</b>
</b> -->
<!-- <el-button @click="aiSoring(item)" size="mini" type="primary" icon="el-icon-edit"
v-if="item.reportList.length>0" style="margin-top: 1px;">Edit Hindex</el-button> -->
<p
@@ -700,62 +745,32 @@
</span>
</el-dialog>
<el-dialog title="H Index" :visible.sync="aiSorbox" width="650px">
<el-form ref="aiSorform" v-for="(item, index) in aiSorform.author" label-width="180px" :key="index">
<el-form-item :label="'Corresponding Author ' + (index + 1) + ' :'" v-if="aiSorform.author.length != 1">
<p>{{ item.firstname }} {{ item.lastname }}</p>
</el-form-item>
<el-form-item label="Corresponding Author :" v-if="aiSorform.author.length == 1">
<p>{{ item.firstname }} {{ item.lastname }}</p>
</el-form-item>
<el-form-item label="Email :">
<p>{{ item.email }}</p>
</el-form-item>
<el-form-item label="Title :" v-if="item.author_title != ''">
<p>{{ item.author_title }}</p>
</el-form-item>
<el-form-item label="Country :">
<p>{{ item.country }}</p>
</el-form-item>
<el-form-item label="Affiliation :" v-if="item.company != ''">
<p style="line-height: 20px; margin-top: 6px">{{ item.company }}</p>
</el-form-item>
<el-form-item label="Department :" v-if="item.department != ''">
<p style="line-height: 20px; margin-top: 6px">{{ item.department }}</p>
</el-form-item>
<el-form-item label="Google account :" v-if="item.author_account.g_author != ''">
<b class="el-icon-check" style="font-size: 20px; font-weight: bold; color: #2a9916"></b>
<a v-if="item.author_account.g_website != ''" :href="item.author_account.g_website" class="webLink"
>Personal homepage</a
>
<p style="color: #999">
(
<span v-if="item.author_account.google_editor != ''">{{ item.author_account.google_editor }}</span>
<span v-if="item.author_account.google_time != 0" style="margin-left: 10px">{{
formatDate(item.author_account.google_time)
}}</span>
)
</p>
</el-form-item>
<el-form-item label="H Index :" v-if="item.author_account.g_author == '' && item.author_account.google_time != 0">
<b style="font-size: 18px; color: #006699">{{ item.author_account.google_index }}</b>
<p style="color: #999">
(
<span v-if="item.author_account.google_editor != ''">{{ item.author_account.google_editor }}</span>
<span v-if="item.author_account.google_time != 0" style="margin-left: 10px">{{
formatDate(item.author_account.google_time)
}}</span>
)
</p>
</el-form-item>
<div v-if="item.author_account.g_author == '' && item.author_account.google_time == 0">
<el-form-item label="H Index filling method :">
<el-radio-group v-model="item.Hselct" @change="checkAddType">
<el-radio :label="1">Binding</el-radio>
<el-radio :label="2">Write</el-radio>
</el-radio-group>
<el-drawer title="H Index" :visible.sync="aiSorbox" direction="rtl" size="60%" append-to-body>
<el-form ref="aiSorform" label-width="180px" v-if="aiSorbox" class="HIndex_Box">
<div class="HIndex_userInfo">
<el-form-item label="Corresponding Author ">
<p>{{ aiSorform.firstname }} {{ aiSorform.lastname }}</p>
</el-form-item>
<el-form-item v-if="item.Hselct == 1">
<el-form-item label="Email :">
<p>{{ aiSorform.email }}</p>
</el-form-item>
<el-form-item label="Title :" v-if="aiSorform.author_title != ''">
<p>{{ aiSorform.author_title }}</p>
</el-form-item>
<el-form-item label="Country :">
<p>{{ aiSorform.country }}</p>
</el-form-item>
<el-form-item label="Affiliation :" v-if="aiSorform.company != ''">
<p style="line-height: 20px; margin-top: 6px">{{ aiSorform.company }}</p>
</el-form-item>
<el-form-item label="Department :" v-if="aiSorform.department != ''">
<p style="line-height: 20px; margin-top: 6px">{{ aiSorform.department }}</p>
</el-form-item>
</div>
<!-- <div>
<el-form-item>
<span slot="label">
<img src="../../assets/img/browser.png" alt="" style="width: 20px; vertical-align: sub; margin-right: 5px" />
<font>Google account :</font>
@@ -764,13 +779,8 @@
Binding
</el-button>
</el-form-item>
<el-form-item label="H Index :" v-if="item.Hselct == 2">
<el-input-number :min="0" v-model="item.Hindex"></el-input-number>
</el-form-item>
<el-form-item label="" v-if="item.Hselct == 2">
<el-button type="primary" @click="saveAiSor(index)">Save H Index</el-button>
</el-form-item>
<div v-if="item.Hselct == 1 && IndexForm.site == index" style="background-color: #f7fcff">
<div style="background-color: #f7fcff">
<p v-if="geogleList.length != 0" style="padding: 15px 0 20px 20px; font-weight: bold">
Please select one and press the OK button.
</p>
@@ -796,14 +806,164 @@
<el-button type="primary" @click="saveBank">OK</el-button>
</div>
</div>
</div>
<div
style="height: 1px; width: 100%; background-color: #006699; margin-bottom: 10px"
v-if="aiSorform.author.length > 1 && index < aiSorform.author.length - 1"
></div>
</div> -->
</el-form>
</el-dialog>
<div class="HIndex_Box" style="padding-bottom: 80px">
<el-tabs type="border-card" v-model="currentTabName" style="height: auto" @tab-click="changeSelectTabs">
<template v-for="(item, index) in HIndexList">
<el-tab-pane :name="item.name"
><span slot="label">
<img
v-if="item.value == '2'"
src="@/assets/img/browser.png"
alt=""
style="width: 20px; vertical-align: sub; margin-right: 5px" />
{{ item.name }} <i class="el-icon-edit-outline" style="margin-left: 10px" v-if="item.isEdit"></i
></span>
<el-form
ref="index_Form"
:model="userIndexForm"
:rules="rules"
:label-width="`${item.value == '2' ? '120' : '80'}px`"
>
<el-form-item v-if="userIndexForm.date">
<span slot="label"> Time : </span>
<span v-html="colorIndex2(userIndexForm.date)"></span>
</el-form-item>
<el-form-item>
<template v-if="userIndexForm.type != 2">
<span slot="label"> Index : </span>
<el-input v-model="userIndexForm.index" v-if="item.isEdit"></el-input>
<span v-html="colorIndex1(userIndexForm.index)" v-else></span>
</template>
<template v-else>
<span slot="label"> Index : </span>
<span v-html="colorIndex1(userIndexForm.index)" v-if="userIndexForm.index != ''"></span>
<span v-else style="color: #999">No account bound </span>
</template>
</el-form-item>
<el-form-item v-if="userIndexForm.type != 0 && userIndexForm.editor">
<span slot="label"> Editor : </span>
<span style="line-height: 32px">{{ userIndexForm.editor }}</span>
</el-form-item>
<el-form-item v-if="userIndexForm.type == 2 && userIndexForm.g_author">
<span slot="label"> Google Author : </span>
<span style="line-height: 32px">{{ userIndexForm.g_author }}</span>
</el-form-item>
<template v-if="userIndexForm.type == 1 || userIndexForm.type == 2">
<el-form-item
v-if="
(userIndexForm.website && userIndexForm.website != '') ||
(item.isEdit && userIndexForm.type == 1)
"
>
<span slot="label"> Website : </span>
<el-input v-model="userIndexForm.website" v-if="item.isEdit && userIndexForm.type == 1"></el-input>
<template v-else-if="userIndexForm.website && userIndexForm.website != ''">
<p
style="
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: calc(100%);
line-height: 32px;
"
>
<a
:href="userIndexForm.website"
target="_blank"
style="color: rgb(0, 102, 153) !important"
>{{ userIndexForm.website }}</a
>
</p>
</template>
</el-form-item>
</template>
<template v-if="userIndexForm.type == 2">
<template v-if="item.isEdit">
<el-form-item v-loading="userloading">
<span slot="label">
<font>Google account :</font>
</span>
<b
class="el-icon-check"
v-if="userMessage.g_author != ''"
style="font-size: 20px; font-weight: bold; color: #2a9916"
></b>
<a
v-if="userMessage.g_website != ''"
target="_blank"
:href="userMessage.g_website"
class="webLink"
>
Certified
</a>
<el-button
@click="handleUserIndex(3)"
type="warning"
icon="el-icon-paperclip"
size="mini"
round
style="margin: 0 0 0 5px; padding: 5px 12px"
v-if="userMessage.g_author == ''"
>Certified
</el-button>
<span style="margin: 0 0 0 5px; padding: 5px 12px; color: #999" v-if="googleSearchInfo != ''">
( {{ googleSearchInfo }} )</span
>
</el-form-item>
<p v-if="geogleList.length != 0 && bankVisible" style="margin: 20px 0 20px 0; font-weight: bold">
Please select one and press the Save button.
</p>
<div
v-for="item in geogleList"
:class="IndexForm.g_author == item.author_id ? 'gugeList gu_col' : 'gugeList'"
@click="choseGego(item)"
v-if="bankVisible"
>
<p style="font-weight: bold; letter-spacing: -0.5px">{{ item.name }}</p>
<p><font>Email :</font>{{ item.email }}</p>
<p><font>Affiliations :</font>{{ item.affiliations }}</p>
<p>
<a :href="item.link" target="_blank">{{ item.link }}</a>
</p>
<i class="kuangGeo"></i>
<b class="el-icon-check"></b>
</div>
</template>
</template>
</el-form>
</el-tab-pane>
</template>
</el-tabs>
</div>
<div
v-if="HIndexList[currentTabIndex].isEdit"
class="demo-drawer__footer"
style="
position: absolute;
bottom: 0;
background: #fff;
left: 0;
right: 0;
padding: 10px;
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04);
"
>
<el-button type="primary" @click="saveUserIndex(userIndexForm)" style="float: right">{{ $t('citeList.save') }}</el-button>
<el-button style="float: right; margin-right: 20px">{{ $t('citeList.cancel') }}</el-button>
</div>
</el-drawer>
<el-dialog title="Repetition" :visible.sync="repebox" width="550px">
<el-form ref="repetition" :model="repeform" label-width="90px">
@@ -964,10 +1124,20 @@ export default {
},
data() {
return {
rules: {},
userloading: false,
curState: null,
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
items: '',
currentTabIndex: 0,
currentTabName: '',
HIndexList: [
{ name: 'WOS', value: 0, key: 'wos' },
{ name: 'Scopus', value: 1, key: 'scopus' },
{ name: 'Google', value: 2, key: 'google' }
],
userIndexForm: {},
query: {
username: localStorage.getItem('U_name'),
journal: 0,
@@ -1008,6 +1178,7 @@ export default {
Total: 0,
geogleList: [],
IndexForm: {},
userMessage: {},
editVisible: false,
guestVisible: false,
PreAcpVisible: false,
@@ -1093,7 +1264,9 @@ export default {
state: 6,
title: this.$t('artstate.state6')
}
]
],
bankVisible: false,
googleSearchInfo: ''
};
},
created() {
@@ -1106,6 +1279,87 @@ export default {
}
},
methods: {
// 保存个人信息
saveUserIndex() {
let link_geo = '';
var data = { ...this.userIndexForm };
if (data.index == '' && data.type != 2) {
this.$message.error('Please enter the Index!');
return;
}
if (data.type == 1) {
if (data.website == '') {
this.$message.error('Please enter the Website!');
return;
}
}
if (this.userIndexForm.type == 2) {
console.log('this.IndexForm.g_author at line 1293:', this.IndexForm.g_author);
if (this.IndexForm.g_author == '' || !this.IndexForm.g_author) {
if (this.bankVisible) {
console.log('this.bankVisible at line 1294:', this.bankVisible);
this.$message.error('Please select one!');
return;
} else {
if (this.googleSearchInfo != '') {
this.$message.error(this.googleSearchInfo);
return;
} else {
this.$message.error('Please click Certified!');
return;
}
}
} else {
data = {
...data,
index: data.index == '' ? 0 : data.index,
g_author: this.IndexForm.g_author,
website: this.IndexForm.g_website
};
console.log('data at line 1302:', data);
}
link_geo = 'api/User/editUserIndex';
// link_geo = 'api/User/googleBindAuthor';
} else {
link_geo = 'api/User/editUserIndex';
}
var that = this;
this.$api
.post(link_geo, data)
.then((res) => {
if (res.code == 0) {
this.$message.success('Successfully modified personal index');
setTimeout(() => {
this.aiSorbox = false;
this.bankVisible = false;
this.googleSearchInfo = '';
that.getdate();
}, 200);
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
},
changeHindex(data) {
console.log('data at line 1151:', data);
},
colorIndex1(num, time) {
let str = '';
if (num < 10) {
str = '<b style="color:#cb160a">' + num + '</b>';
} else if (num < 15) {
str = '<b style="color:#cbb504">' + num + '</b>';
} else {
str = '<b style="color:#0cbc15">' + num + '</b>';
}
if (time == 0) {
str = '<b style="color:#aaa;">0 </b>';
}
return str;
},
//初始化期刊选项
initselect() {
this.$api
@@ -1257,32 +1511,33 @@ export default {
}
}
this.tableData[i].reportList = [];
if (this.tableData[i].reports.length == 1) {
for (let j = 0; j < this.tableData[i].reports.length; j++) {
if (
this.tableData[i].reports[j].author_account != '' &&
this.tableData[i].reports[j].author_account != null
) {
if (this.tableData[i].reports[j].author_account.google_time == 0) {
this.tableData[i].reports[j].Hindex = 0;
this.tableData[i].reportList.push(this.tableData[i].reports[j]);
}
}
}
} else if (this.tableData[i].reports.length > 1) {
for (let j = 0; j < this.tableData[i].reports.length; j++) {
if (
this.tableData[i].reports[j].author_account != '' &&
this.tableData[i].reports[j].author_account != null
) {
this.tableData[i].reports[j].Hindex = this.tableData[i].reports[j].author_account.google_index;
if (this.tableData[i].reports[j].author_account.google_time == 0) {
this.tableData[i].reportList = this.tableData[i].reports;
}
}
}
}
this.tableData[i].reportList = [...this.tableData[i].reports];
console.log('.reportList at line 1265:', this.tableData[i].reportList);
// if (this.tableData[i].reports.length == 1) {
// for (let j = 0; j < this.tableData[i].reports.length; j++) {
// if (
// this.tableData[i].reports[j].author_account != '' &&
// this.tableData[i].reports[j].author_account != null
// ) {
// if (this.tableData[i].reports[j].author_account.google_time == 0) {
// this.tableData[i].reports[j].Hindex = 0;
// this.tableData[i].reportList.push(this.tableData[i].reports[j]);
// }
// }
// }
// } else if (this.tableData[i].reports.length > 1) {
// for (let j = 0; j < this.tableData[i].reports.length; j++) {
// if (
// this.tableData[i].reports[j].author_account != '' &&
// this.tableData[i].reports[j].author_account != null
// ) {
// this.tableData[i].reports[j].Hindex = this.tableData[i].reports[j].author_account.google_index;
// if (this.tableData[i].reports[j].author_account.google_time == 0) {
// this.tableData[i].reportList = this.tableData[i].reports;
// }
// }
// }
// }
}
for (let i = 0; i < res.state_num.length; i++) {
for (let j = 0; j < this.statList.length; j++) {
@@ -1422,15 +1677,156 @@ export default {
},
// H指数弹出框
aiSoring(e) {
this.aiSorbox = true;
this.aiSorform.article_id = e.article_id;
this.aiSorform.title = e.title;
this.aiSorform.Hindex = e.scoring;
this.aiSorform.author = e.reportList;
for (var i = 0; i < this.aiSorform.author.length; i++) {
this.aiSorform.author[i].Hselct = 1;
}
console.log('e at line 1465:', e);
this.googleSearchInfo = '';
this.currentTabIndex = 0;
this.currentTabName = this.HIndexList[0].name;
this.aiSorform = { ...e };
this.IndexForm = {};
this.userMessage = { ...e.author_account };
this.HIndexList = this.HIndexList.map((v) => {
// v.isEdit = this.isEditIndex(v);
v.isEdit = this.isEditIndex(v);
return v;
});
console.log('this.HIndexList at line 1551:', this.HIndexList);
this.handleUserIndex(this.HIndexList[this.currentTabIndex].key);
this.geogleList = [];
this.aiSorbox = true;
},
isEditIndex(data) {
console.log('data at line 1543:', data);
var status;
var date = '';
switch (data.key) {
case 'wos':
date = this.userMessage.wos_time;
break;
case 'scopus':
date = this.userMessage.scopus_time;
break;
case 'google':
date = this.userMessage.google_time;
break;
}
if (date == 0) {
status = true;
} else {
var date1 = new Date(parseInt(date * 1000));
var date2 = new Date().getTime();
console.log('date2 at line 1564:', date2);
// 计算时间差(以毫秒为单位)
var timeDiff = Number(date2 - date1);
console.log('timeDiff at line 1569:', timeDiff);
// 将半年转换为毫秒
var halfYearInMilliseconds = 1000 * 60 * 60 * 24 * 182.5; // 假设一年有 365 天
// 判断时间差是否大于半年
status = timeDiff > halfYearInMilliseconds;
if (data.key == 'google' && this.userMessage.g_author == '') {
status = true;
}
}
return status;
console.log('status at line 1578:', status);
},
changeSelectTabs(e) {
console.log('e at line 1536:', e);
this.currentTabIndex = e.index;
this.currentTabName = e.name;
this.googleSearchInfo = '';
this.handleUserIndex(this.HIndexList[this.currentTabIndex].key);
},
// 个人指数修改
handleUserIndex(e) {
var type = '';
var typeName = '';
var editor = '';
var index = '';
var date = '';
var website = '';
var editor_id = '';
var g_author = '';
if (e == 3) {
this.userloading = true;
this.$api
.post('api/User/googleGetAuthor', {
user_id: this.userMessage.user_id
})
.then((res) => {
if (res.code == 0) {
this.geogleList = res.data.authors;
this.bankVisible = true;
this.userloading = false;
} else {
if (res.msg == 'no date') {
this.googleSearchInfo = 'No information has been found for this account yet.';
this.geogleList = [];
this.userloading = false;
} else {
this.$message.error(res.msg);
this.geogleList = [];
this.userloading = false;
}
}
})
.catch((err) => {
this.$message.error(err);
this.userloading = false;
});
} else {
switch (e) {
case 'wos':
type = 0;
typeName = 'WOS';
index = this.userMessage.wos_time != 0 ? this.userMessage.wos_index : '';
date = this.userMessage.wos_time;
editor = '';
break;
case 'scopus':
type = 1;
typeName = 'Scopus';
index = this.userMessage.scopus_time != 0 ? this.userMessage.scopus_index : '';
date = this.userMessage.scopus_time;
website = this.userMessage.scopus_website;
editor = this.userMessage.scopus_editor;
break;
case 'google':
type = 2;
typeName = 'Google';
index = this.userMessage.google_time != 0 ? this.userMessage.google_index : '';
date = this.userMessage.google_time;
website =this.userMessage.g_author?`https://scholar.google.com/citations?hl=en&user=${this.userMessage.g_author}`:'';
editor = this.userMessage.google_editor;
g_author = this.userMessage.g_author;
this.bankVisible = false;
this.geogleList = [];
break;
}
this.userIndexForm = {
type: type,
index: index,
date: date,
website: website,
editor_id: localStorage.getItem('U_id'),
g_author: g_author,
editor: editor,
user_id: this.userMessage.user_id,
account: this.userMessage.account,
typeName: typeName
};
console.log('this.userIndexForm at line 1641:', this.userIndexForm);
// this.userIndexForm.type = e;
this.userIndexIsEdit = true;
}
},
// 标记弹出框
testedit(e) {
@@ -1582,6 +1978,7 @@ export default {
choseGego(e) {
this.IndexForm.g_author = e.author_id;
this.IndexForm.g_website = e.link;
console.log('this.IndexForm.g_website at line 1965:', this.IndexForm);
this.$forceUpdate();
},
checkAddType(e) {
@@ -1892,6 +2289,27 @@ export default {
var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
return Y + M + D;
},
colorIndex2(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 = '';
str = '<span style="font-size:14px;"> ' + time + '</span>';
if (time == 0) {
str = '';
// str = '<span style="color:#aaa;font-size:14px;margin-left:5px;">(No time)</span>';
}
return str;
},
formatDate_(timestamp) {
var date = new Date(timestamp * 1000); //时间戳为10位需*1000时间戳为13位的话不需乘1000
var Y = date.getFullYear() + '-';
@@ -1944,6 +2362,15 @@ export default {
</script>
<style scoped>
.HIndex_Box {
padding: 20px;
padding-top: 0;
box-sizing: border-box;
}
.HIndex_userInfo {
border: 2px solid #eceef2;
border-radius: 10px;
}
.refreshBtn {
cursor: pointer;
color: #069;
@@ -2261,4 +2688,20 @@ export default {
margin-left: 10px;
letter-spacing: -0.5px;
}
.userIndexBox .s_rol {
width: 100%;
height: 300px;
}
.userIndexBox h3 {
color: rgb(0, 102, 153);
letter-spacing: 1px;
}
.userIndexBox .rol_mess {
text-align: left;
padding-top: 10px !important;
padding-bottom: 0 !important;
}
.userIndexBox .s_rol > div.rol_mess > font {
width: auto;
}
</style>

View File

@@ -309,7 +309,12 @@
<div class="s_rol">
<h3>
WOS Index
<b class="el-icon-edit pencil" @click="handleUserIndex('wos')" style="float: right"></b>
<b
class="el-icon-edit pencil"
v-if="isEditIndex('wos')"
@click="handleUserIndex('wos')"
style="float: right"
></b>
</h3>
<div class="rol_mess">
@@ -324,7 +329,12 @@
<div class="s_rol">
<h3>
Scopus Index
<b class="el-icon-edit pencil" @click="handleUserIndex('scopus')" style="float: right"></b>
<b
class="el-icon-edit pencil"
v-if="isEditIndex('scopus')"
@click="handleUserIndex('scopus')"
style="float: right"
></b>
</h3>
<div class="rol_mess">
@@ -335,19 +345,39 @@
<font>Time :</font>
<span v-html="colorIndex2(userMessage.scopus_time)"></span>
</div>
<div class="rol_mess">
<font>Website :</font>
<span v-html="userMessage.scopus_website"></span>
</div>
<div class="rol_mess">
<font>Editor :</font>
<span v-html="userMessage.scopus_editor"></span>
</div>
<div class="rol_mess">
<font>Website :</font>
<span
style="
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: calc(100% - 80px);
line-height: 17px;
"
>
<a :href="userMessage.scopus_website" target="_blank" style="color: rgb(0, 102, 153) !important">{{
userMessage.scopus_website
}}</a>
</span>
</div>
</div>
<div class="s_rol">
<h3>
Google Index
<b class="el-icon-edit pencil" @click="handleUserIndex('google')" style="float: right"></b>
<b
class="el-icon-edit pencil"
v-if="isEditIndex('google')"
@click="handleUserIndex('google')"
style="float: right"
></b>
</h3>
<div class="rol_mess">
@@ -358,15 +388,32 @@
<font>Time :</font>
<span v-html="colorIndex2(userMessage.google_time)"></span>
</div>
<div class="rol_mess">
<font>Website :</font>
<span v-html="userMessage.google_website"></span>
</div>
<div class="rol_mess">
<font>Editor :</font>
<span v-html="userMessage.google_editor"></span>
</div>
<div class="rol_mess">
<font>Google Author :</font>
<span style="line-height: 20px">{{ userMessage.g_author }}</span>
</div>
<div class="rol_mess">
<font>Website :</font>
<span
style="
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: calc(100% - 80px);
line-height: 20px;
"
>
<a :href="this.userMessage.g_author?`https://scholar.google.com/citations?hl=en&user=${this.userMessage.g_author}`:''" target="_blank" style="color: rgb(0, 102, 153) !important">{{
this.userMessage.g_author?`https://scholar.google.com/citations?hl=en&user=${this.userMessage.g_author}`:''
}}</a>
</span>
</div>
<!-- <div class="rol_mess">
<font>Google ID :</font>
<span></span>
@@ -793,7 +840,7 @@
</el-form-item>
<el-form-item>
<span slot="label"> Index : </span>
<el-input v-model="userIndexForm.index"></el-input>
<el-input v-model="userIndexForm.index" :disabled="userIndexForm.type == 2"></el-input>
</el-form-item>
<template v-if="userIndexForm.type == 1">
@@ -834,6 +881,9 @@
v-if="userMessage.g_author == ''"
>Certified
</el-button>
<span style="margin: 0 0 0 5px; padding: 5px 12px; color: #999" v-if="googleSearchInfo != ''">
( {{ googleSearchInfo }} )</span
>
</el-form-item>
<p v-if="geogleList.length != 0 && bankVisible" style="margin: 20px 0 20px 0; font-weight: bold">
@@ -1203,6 +1253,7 @@ export default {
}
],
role_author: 0,
googleSearchInfo:'',
role_editor: 0,
role_chief: 0,
role_reviewer: 0,
@@ -1657,6 +1708,47 @@ export default {
this.indexVisible = true;
}
},
isEditIndex(data) {
console.log('data at line 1543:', this.userMessage);
var status;
var date = '';
switch (data) {
case 'wos':
date = this.userMessage.wos_time;
console.log('date at line 1714:', date)
break;
case 'scopus':
date = this.userMessage.scopus_time;
break;
case 'google':
date = this.userMessage.google_time;
break;
}
console.log('date at line 1714:', date);
if (date == 0) {
status = true;
} else {
var date1 = new Date(parseInt(date * 1000));
var date2 = new Date().getTime();
console.log('date2 at line 1564:', date2);
// 计算时间差(以毫秒为单位)
var timeDiff = Number(date2 - date1);
console.log('timeDiff at line 1569:', timeDiff);
// 将半年转换为毫秒
var halfYearInMilliseconds = 1000 * 60 * 60 * 24 * 182.5; // 假设一年有 365 天
// 判断时间差是否大于半年
status = timeDiff > halfYearInMilliseconds;
if (data == 'google' && this.userMessage.g_author == '') {
status = true;
}
}
console.log('status at line 1578:', status);
return status;
},
// 个人指数修改
handleUserIndex(e) {
var type = '';
@@ -1678,8 +1770,15 @@ export default {
this.bankVisible = true;
this.userloading = false;
} else {
this.$message.error(res.msg);
this.userloading = false;
if (res.msg == 'no date') {
this.googleSearchInfo = 'No information has been found for this account yet.';
this.geogleList = [];
this.userloading = false;
} else {
this.$message.error(res.msg);
this.geogleList = [];
this.userloading = false;
}
}
})
.catch((err) => {
@@ -1771,10 +1870,22 @@ export default {
let link_geo = '';
if (this.userIndexForm.type == 2) {
if (this.userIndexForm.g_author == '') {
this.$message.error('Please select one!');
return;
if (this.bankVisible) {
console.log('this.bankVisible at line 1294:', this.bankVisible);
this.$message.error('Please select one!');
return;
} else {
if (this.googleSearchInfo != '') {
this.$message.error(this.googleSearchInfo);
return;
} else {
this.$message.error('Please click Certified!');
return;
}
}
}
link_geo = 'api/User/googleBindAuthor';
link_geo = 'api/User/editUserIndex';
// link_geo = 'api/User/googleBindAuthor';
} else {
link_geo = 'api/User/editUserIndex';
}