2715 lines
114 KiB
Vue
2715 lines
114 KiB
Vue
<template>
|
||
<div>
|
||
<div class="crumbs">
|
||
<el-breadcrumb separator="/">
|
||
<el-breadcrumb-item>
|
||
<i class="el-icon-coordinate"></i>
|
||
<router-link :to="{ path: '/partyList' }">
|
||
<span class="top_dao"> User List</span>
|
||
</router-link>
|
||
>> User Role
|
||
</el-breadcrumb-item>
|
||
</el-breadcrumb>
|
||
</div>
|
||
<div
|
||
class="container"
|
||
v-loading="loading"
|
||
element-loading-text="Loading..."
|
||
style="min-width: 800px"
|
||
element-loading-spinner="el-icon-loading"
|
||
element-loading-background="rgba(0, 0, 0, 0.8)"
|
||
>
|
||
<el-tabs tab-position="top" style="margin: 30px 20px 0 20px">
|
||
<el-tab-pane label="User information">
|
||
<div class="s_rol" style="margin-top: 10px">
|
||
<h3>
|
||
Basic information
|
||
<el-button @click="handleMessage" type="primary" icon="el-icon-edit" size="mini" round>
|
||
Edit message
|
||
</el-button>
|
||
</h3>
|
||
<div class="rol_mess">
|
||
<font style="margin-top: 35px; vertical-align: top">Picture :</font>
|
||
<div class="portrait" @click="unplIcon">
|
||
<img src="../../assets/img/userImg.jpg" class="portrait" v-if="pictureUrl == ''" />
|
||
<img :src="pictureUrl" class="portrait" v-if="pictureUrl != ''" />
|
||
<el-upload
|
||
class="avatar-uploader"
|
||
ref="upIconIMg"
|
||
:action="baseUrl + 'api/Ucenter/up_userIcon_file'"
|
||
:show-file-list="false"
|
||
name="icon"
|
||
:on-success="handleAvatarSuccess2"
|
||
:on-error="handleAvatarError2"
|
||
:before-upload="beforeAvatarUpload2"
|
||
style="display: none"
|
||
>
|
||
<img v-if="pictureUrl" :src="pictureUrl" class="avatar" accept=".png,.jpg" />
|
||
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
|
||
</el-upload>
|
||
<div class="ptmark">Upload avatar</div>
|
||
</div>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Account :</font>
|
||
<p class="rm_huid">{{ userMessage.account }}</p>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Email :</font>
|
||
<p class="rm_huid">{{ userMessage.email }}</p>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>English name :</font>
|
||
<p class="rm_huid">{{ userMessage.realname }}</p>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Local language name :</font>
|
||
<p class="rm_huid">{{ userMessage.localname }}</p>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Phone :</font>
|
||
<p class="rm_huid">{{ userMessage.phone }}</p>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Country :</font>
|
||
<p class="rm_huid">{{ userMessage.country }}</p>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Website :</font>
|
||
<p class="rm_huid">
|
||
<el-link v-if="userMessage.website != ''" :href="userMessage.website" target="_blank" type="primary"
|
||
>Personal academic introduction</el-link
|
||
>
|
||
</p>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Title :</font>
|
||
<p class="rm_huid">{{ userMessage.technical }}</p>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Major :</font>
|
||
<p class="rm_huid">{{ userMessage.majorStr }}</p>
|
||
</div>
|
||
<div class="rol_mess" v-if="userMessage.company != '' && userMessage.company != undefined">
|
||
<font>Company :</font>
|
||
<p class="rm_huid">{{ userMessage.company }}</p>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Field :</font>
|
||
<p class="rm_huid">{{ userMessage.field }}</p>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Introduction :</font>
|
||
<p class="rm_huid">{{ userMessage.introduction }}</p>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Grade :</font>
|
||
<p style="display: inline-block">
|
||
<img
|
||
src="../../assets/img/star-all.png"
|
||
v-for="item in starList"
|
||
v-if="starList_mark <= 8 && item.star == 1"
|
||
class="starSty"
|
||
/>
|
||
<img
|
||
src="../../assets/img/star-traf.png"
|
||
v-for="item in starList"
|
||
v-if="starList_mark <= 8 && item.star == 0"
|
||
class="starSty"
|
||
/>
|
||
<img
|
||
src="../../assets/img/star-none.png"
|
||
v-for="item in starList"
|
||
v-if="starList_mark <= 8 && item.star == 2"
|
||
class="starSty"
|
||
/>
|
||
<img src="../../assets/img/star-all.png" v-if="starList_mark > 8" class="starSty" />
|
||
<b style="font-size: 15px; color: #b77614" v-if="starList_mark > 8">× {{ starList_mark }}</b>
|
||
</p>
|
||
</div>
|
||
<div class="rol_mess" style="overflow: hidden">
|
||
<font>CV : </font>
|
||
<!-- <p style="margin: 0 0 25px 28px; font-size: 18px">CV. List</p> -->
|
||
<!-- <p style="color: #aaa; margin: 0 0 30px 28px" v-if="cvitaTable.length == 0">No data</p> -->
|
||
|
||
<div style="width: calc(100% - 175px); float: right">
|
||
<p v-if="cvitaTable && cvitaTable.length > 0" style="margin: 0 0 25px 0">
|
||
If you want to update your resume, please upload it.
|
||
</p>
|
||
<el-form :model="cvitaForm" :rules="rules" ref="cvita_Form" label-width="0px">
|
||
<el-form-item label="">
|
||
<el-upload
|
||
style="float: left"
|
||
class="upload-demo"
|
||
:action="baseUrl + 'api/Ucenter/up_cv_file'"
|
||
:on-success="handleFileSuccess1"
|
||
name="reviewerCV"
|
||
type="reviewerCV"
|
||
:on-error="handleFileError"
|
||
:on-preview="handlePreview"
|
||
:on-remove="handleRemove"
|
||
:before-remove="beforeRemove"
|
||
:on-change="handleChange1"
|
||
accept=".pdf"
|
||
:on-exceed="handleExceed"
|
||
ref="uploadRef1"
|
||
>
|
||
<el-button type="text" style="font-weight: bolder">
|
||
<b class="el-icon-lx-top" style="font-weight: bolder"></b>upload
|
||
</el-button>
|
||
</el-upload>
|
||
<span
|
||
style="
|
||
margin-left: 20px;
|
||
display: inline-block;
|
||
font-size: 12px;
|
||
color: #aaa;
|
||
margin-top: -20px;
|
||
"
|
||
>
|
||
Only pdf files can be uploaded(.pdf)
|
||
</span>
|
||
</el-form-item>
|
||
</el-form>
|
||
|
||
<p
|
||
style="width: 100%; background-color: #d7d7d7; height: 1px; margin: -10px auto 10px auto"
|
||
v-if="cvitaTable && cvitaTable.length > 0"
|
||
></p>
|
||
<div v-for="(item, index) in cvitaTable">
|
||
{{ index + 1 }}.
|
||
<img
|
||
src="../../assets/img/icon_0.png"
|
||
alt=""
|
||
class="icon_img"
|
||
style="vertical-align: middle; margin-left: 10px"
|
||
/>
|
||
<span style="margin-left: 20px; color: #888; font-size: 13px">
|
||
<i class="el-icon-paperclip"></i>
|
||
{{ formatDate(item.ctime) }}
|
||
</span>
|
||
<a :href="mediaUrl + 'reviewer/' + item.cv" target="_blank" class="txt_pdf">
|
||
<i class="el-icon-download"></i>
|
||
</a>
|
||
<i
|
||
class="el-icon-delete"
|
||
@click="deletCVita(item)"
|
||
style="color: #f12424; cursor: pointer; font-weight: bold; margin: 0 0 0 15px"
|
||
></i>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- <p class="rm_huid">
|
||
<img src="../../assets/img/icon_0.png" alt="" class="icon_img"
|
||
v-if="cvitaTable.length>0&&cvitaTable!=undefined">
|
||
<span v-if="cvitaTable.length>0&&cvitaTable!=undefined"
|
||
style="margin-left: 10px;color: #888;font-size: 13px;vertical-align: text-bottom;">
|
||
<i class="el-icon-paperclip"></i>
|
||
{{formatDate(cvitaTable[cvitaTable.length-1].ctime)}}
|
||
</span>
|
||
<el-button type="primary" @click="openCVita()" size="mini"
|
||
style="vertical-align: text-bottom;padding: 4px 8px;margin-left: 10px;">
|
||
<i class="el-icon-document"></i>
|
||
Update / View
|
||
</el-button>
|
||
</p> -->
|
||
</div>
|
||
</div>
|
||
<!-- <div class="s_rol">
|
||
<h3>Index</h3>
|
||
<div class="rol_mess">
|
||
<font>Grade :</font>
|
||
<p style="display: inline-block">
|
||
<img
|
||
src="../../assets/img/star-all.png"
|
||
v-for="item in starList"
|
||
v-if="starList_mark <= 8 && item.star == 1"
|
||
class="starSty"
|
||
/>
|
||
<img
|
||
src="../../assets/img/star-traf.png"
|
||
v-for="item in starList"
|
||
v-if="starList_mark <= 8 && item.star == 0"
|
||
class="starSty"
|
||
/>
|
||
<img
|
||
src="../../assets/img/star-none.png"
|
||
v-for="item in starList"
|
||
v-if="starList_mark <= 8 && item.star == 2"
|
||
class="starSty"
|
||
/>
|
||
<img src="../../assets/img/star-all.png" v-if="starList_mark > 8" class="starSty" />
|
||
<b style="font-size: 15px; color: #b77614" v-if="starList_mark > 8">× {{ starList_mark }}</b>
|
||
</p>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>WOS Index :</font>
|
||
<span v-html="colorIndex(userMessage.wos_index, userMessage.wos_time)"></span>
|
||
<b class="el-icon-edit pencil" @click="handleIndex(1)"></b>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Google Index :</font>
|
||
<span v-html="colorIndex(userMessage.google_index, userMessage.google_time)"></span>
|
||
<b class="el-icon-edit pencil" @click="handleIndex(2)" v-if="userMessage.g_author == ''"></b>
|
||
<b class="el-icon-refresh-right pencil" @click="freshIndex" v-if="userMessage.g_author != ''"></b>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<img src="../../assets/img/browser.png" alt="" style="width: 20px; vertical-align: sub; margin-right: 5px" />
|
||
<font style="width: 125px">Google account :</font>
|
||
<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_author != ''"
|
||
target="_blank"
|
||
:href="'https://scholar.google.it/citations?user=' + userMessage.g_author"
|
||
class="webLink"
|
||
>
|
||
Certified
|
||
</a>
|
||
<el-button
|
||
@click="handleIndex(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>
|
||
</div>
|
||
<p v-if="geogleList.length != 0 && bankVisible" style="margin: 30px 0 20px 0; font-weight: bold">
|
||
Please select one and press the OK 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>
|
||
<div style="text-align: right" v-if="geogleList.length != 0 && bankVisible">
|
||
<el-button @click="bankVisible = false">Cancel</el-button>
|
||
<el-button type="primary" @click="saveIndex(IndexForm)">OK</el-button>
|
||
</div>
|
||
<p v-if="geogleList.length == 0 && bankVisible" style="text-align: center; color: #999">No corresponding data</p>
|
||
</div> -->
|
||
|
||
<div style="display: flex; align-items: center; justify-content: space-between" class="userIndexBox">
|
||
<div class="s_rol">
|
||
<h3>
|
||
WOS Index
|
||
<b
|
||
class="el-icon-edit pencil"
|
||
v-if="isEditIndex('wos')"
|
||
@click="handleUserIndex('wos')"
|
||
style="float: right"
|
||
></b>
|
||
</h3>
|
||
|
||
<div class="rol_mess">
|
||
<font>Index :</font>
|
||
<span v-html="colorIndex1(userMessage.wos_index)"></span>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Time :</font>
|
||
<span v-html="colorIndex2(userMessage.wos_time)"></span>
|
||
</div>
|
||
</div>
|
||
<div class="s_rol">
|
||
<h3>
|
||
Scopus Index
|
||
<b
|
||
class="el-icon-edit pencil"
|
||
v-if="isEditIndex('scopus')"
|
||
@click="handleUserIndex('scopus')"
|
||
style="float: right"
|
||
></b>
|
||
</h3>
|
||
|
||
<div class="rol_mess">
|
||
<font>Index :</font>
|
||
<span v-html="colorIndex1(userMessage.scopus_index)"></span>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Time :</font>
|
||
<span v-html="colorIndex2(userMessage.scopus_time)"></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"
|
||
v-if="isEditIndex('google')"
|
||
@click="handleUserIndex('google')"
|
||
style="float: right"
|
||
></b>
|
||
</h3>
|
||
|
||
<div class="rol_mess">
|
||
<font>Index :</font>
|
||
<span v-html="colorIndex1(userMessage.google_index)"></span>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Time :</font>
|
||
<span v-html="colorIndex2(userMessage.google_time)"></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>
|
||
</div>
|
||
<div class="rol_mess">
|
||
<font>Google Author :</font>
|
||
<span></span>
|
||
</div> -->
|
||
</div>
|
||
</div>
|
||
|
||
<!-- <div style="text-align: right" v-if="geogleList.length != 0 && bankVisible">
|
||
<el-button @click="bankVisible = false">Cancel</el-button>
|
||
<el-button type="primary" @click="saveIndex(IndexForm)">OK</el-button>
|
||
</div> -->
|
||
<p v-if="geogleList.length == 0 && bankVisible" style="text-align: center; color: #999">No corresponding data</p>
|
||
</el-tab-pane>
|
||
<el-tab-pane label="User role">
|
||
<p style="text-align: right; margin: 0 0 20px 0">
|
||
<el-button @click="handleAddGuest" type="primary" icon="el-icon-plus" size="mini" round>Add User Role</el-button>
|
||
</p>
|
||
|
||
<div class="s_rol" v-if="this.role_author == 1">
|
||
<h3 style="color: #006699">Author</h3>
|
||
<div class="rol_art" style="padding: 0" v-if="authorArticlesList.length > 0">
|
||
<div class="articleTable">
|
||
<el-table
|
||
row-key="article_id"
|
||
style="width: calc(100%); margin-top: 15px; margin-bottom: 20px"
|
||
:data="authorArticlesList"
|
||
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 }}. </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="WOS" prop="title" width="100">
|
||
<template slot-scope="scope">
|
||
<el-popover ref="popover" placement="right" trigger="click" width="700">
|
||
<ul
|
||
style="
|
||
padding: 0 0px;
|
||
box-sizing: border-box;
|
||
max-height: 500px;
|
||
overflow-y: auto;
|
||
white-space: normal;
|
||
"
|
||
v-loading="wosLoading"
|
||
>
|
||
<li v-for="(v, i) in authorList" style="overflow: hidden; margin-bottom: 5px">
|
||
<div style="color: #7a2702; margin-right: 10px; float: left">{{ i + 1 }} .</div>
|
||
<div style="float: left; width: calc(100% - 100px)">
|
||
<p class="tab_tie_col">
|
||
{{ v.firstname }} {{ v.lastname }}
|
||
|
||
<span
|
||
>( {{ $t('partyListCorr.Email') }}:
|
||
<span style="color: #409eff">{{ v.email }}</span
|
||
>)</span
|
||
>
|
||
</p>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
|
||
<span
|
||
slot="reference"
|
||
@click="getWosList(scope.row.article_id)"
|
||
style="
|
||
color: #006699;
|
||
background: #ecf5ff;
|
||
border: 1px solid #b3d8ff;
|
||
padding: 4px;
|
||
border-radius: 4px;
|
||
margin-top: 10px;
|
||
"
|
||
>
|
||
<span style="font-size: 10px; font-weight: bold">WOS</span>
|
||
</span>
|
||
</el-popover>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column :label="$t('partyRole.identity')" prop="title" width="200">
|
||
<template slot-scope="scope">
|
||
<div style="color: ">
|
||
<span
|
||
v-for="(v, i) in scope.row.role"
|
||
style="
|
||
padding: 4px;
|
||
border-radius: 2px;
|
||
margin-right: 10px;
|
||
color: #409eff !important;
|
||
background: #ecf5ff !important;
|
||
border-color: #b3d8ff !important;
|
||
"
|
||
>
|
||
{{
|
||
v == 'user'
|
||
? $t('partyRole.InvestorProducer')
|
||
: v == 'author'
|
||
? $t('partyRole.author')
|
||
: ''
|
||
}}
|
||
</span>
|
||
</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
|
||
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-column label="" prop="title" width="100">
|
||
<template slot-scope="scope">
|
||
<el-popover ref="popover" placement="right" trigger="click" width="700">
|
||
<ul
|
||
style="
|
||
padding: 0 0px;
|
||
box-sizing: border-box;
|
||
max-height: 500px;
|
||
overflow-y: auto;
|
||
white-space: normal;
|
||
"
|
||
v-loading="citeLoading"
|
||
>
|
||
<li v-for="(v, i) in authorList" style="overflow: hidden; margin-bottom: 5px">
|
||
<div style="color: #7a2702; margin-right: 10px; float: left">{{ i + 1 }} .</div>
|
||
<div style="float: left; width: calc(100% - 100px)">
|
||
<p class="tab_tie_col">
|
||
{{ v.firstname }} {{ v.lastname }}
|
||
|
||
<span
|
||
>( {{ $t('partyListCorr.Email') }}:
|
||
<span style="color: #409eff">{{ v.email }}</span
|
||
>)</span
|
||
>
|
||
</p>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
|
||
<span
|
||
slot="reference"
|
||
@click="getAuthorList(scope.row.article_id)"
|
||
style="
|
||
color: #006699;
|
||
background: #ecf5ff;
|
||
border: 1px solid #b3d8ff;
|
||
padding: 4px;
|
||
border-radius: 4px;
|
||
margin-top: 10px;
|
||
"
|
||
><i class="el-icon-user-solid" style="margin-right: 5px; color: #006699"></i
|
||
>{{ $t('partyListCorr.Authors') }}</span
|
||
>
|
||
</el-popover>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</div>
|
||
<!-- <p v-if="authorTable.manuscriptNum != undefined">
|
||
<b class="colNUmber">{{ authorTable.manuscriptNum }}</b>
|
||
articles submitted.
|
||
</p>
|
||
<p v-if="authorTable.accept != undefined">
|
||
<b class="colNUmber">{{ authorTable.accept }}</b>
|
||
articles accepted.
|
||
</p>
|
||
<p v-if="authorTable.index != undefined">
|
||
<b class="colNUmber">{{ authorTable.index }}</b>
|
||
records citing.
|
||
</p> -->
|
||
</div>
|
||
</div>
|
||
<div class="s_rol" v-if="this.role_editor == 1">
|
||
<h3 style="color: #006699">Editor</h3>
|
||
<div class="rol_art"></div>
|
||
</div>
|
||
<div class="s_rol" v-if="this.role_chief == 1">
|
||
<h3 style="color: #006699">Editor-in-Chief</h3>
|
||
<div class="rol_art"></div>
|
||
</div>
|
||
<div class="s_rol" v-if="this.role_reviewer == 1">
|
||
<h3 style="color: #006699">Reviewer</h3>
|
||
<div class="rol_art">
|
||
<p class="roLrevi" v-for="index in review_journal">
|
||
<b>{{ index.title }}</b>
|
||
</p>
|
||
<p>
|
||
<b class="colNUmber">{{ reviewTable.successReview }}</b>
|
||
manuscripts reviewed.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="s_rol" v-if="this.role_board == 1">
|
||
<h3 style="color: #006699">Editorial Board Member</h3>
|
||
<div class="rol_art">
|
||
<p v-for="(item, index) in board_journal">
|
||
<b>{{ item.title }}</b>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="s_rol" v-if="this.role_yboard == 1">
|
||
<h3 style="color: #006699">Young Scientist</h3>
|
||
<div class="rol_art">
|
||
<p v-for="(item, index) in youth_journal">
|
||
<b>{{ item.title }}</b>
|
||
<i class="el-icon-arrow-up arrowBtn" v-if="item.arrowMark == 0" @click="arrowBtnChange(index, 1)"></i>
|
||
<i class="el-icon-arrow-down arrowBtn" v-if="item.arrowMark == 1" @click="arrowBtnChange(index, 0)"></i>
|
||
<font v-if="item.arrowMark == 1">
|
||
<span style="display: block; margin-top: 15px"></span>
|
||
<span v-for="ihxd in item.sd" style="display: block; margin-top: 5px">
|
||
{{ formatYear(ihxd.start_date) }}
|
||
<span style="margin: 0 3px">-</span>
|
||
{{ formatYear(ihxd.end_date) }}
|
||
<a @click="cerFicte(ihxd.icon)" class="certBtn">
|
||
<i class="el-icon-trophy"></i>
|
||
Certificate
|
||
</a>
|
||
</span>
|
||
<font style="display: block; margin: 10px 0 5px 0">
|
||
Submitted articles :
|
||
<b style="color: #006699; font-size: 16px; margin: 0 0 0 5px">{{ item.article_num }}</b>
|
||
</font>
|
||
<font style="display: block; margin: 0 0 25px 0">
|
||
Reviewed articles :
|
||
<b style="color: #006699; font-size: 16px; margin: 0 0 0 5px">{{ item.reviewer_num }}</b>
|
||
</font>
|
||
</font>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="s_rol" v-if="this.role_special == 1">
|
||
<h3 style="color: #006699">Guest Editor</h3>
|
||
<div class="rol_art">
|
||
<font v-for="item in userMessage.specials">
|
||
{{ item.journal_title }}
|
||
<font style="margin: 0 10px">>></font>
|
||
{{ item.title }}
|
||
</font>
|
||
</div>
|
||
</div>
|
||
</el-tab-pane>
|
||
</el-tabs>
|
||
</div>
|
||
|
||
<!-- 编辑信息弹出框 -->
|
||
<el-dialog title="Edit personal message" :visible.sync="messageVisible" width="700px">
|
||
<el-form ref="mes_Form" :model="MessForm" :rules="rules" label-width="170px">
|
||
<el-form-item label="Account :" prop="account">
|
||
{{ MessForm.account }}
|
||
</el-form-item>
|
||
<el-form-item label="Email :" prop="email">
|
||
{{ MessForm.email }}
|
||
</el-form-item>
|
||
<el-form-item label="English name :" prop="realname">
|
||
<el-input v-model="MessForm.realname"></el-input>
|
||
<br />
|
||
<p class="zhujie_name">
|
||
(Will be used for certificate, website, etc. in TMR Publishing Group Products.<br />
|
||
Check
|
||
<a href="https://www.tmrjournals.cn/afoor_text.html?&footer_id=50" target="_blank">Privacy Policy</a>)
|
||
</p>
|
||
</el-form-item>
|
||
<el-form-item label="Local language name :" prop="localname">
|
||
<el-input v-model="MessForm.localname"></el-input>
|
||
<br />
|
||
<p class="zhujie_name">
|
||
(Just be used for view for users themselves and editors. <br />
|
||
Check
|
||
<a href="https://www.tmrjournals.cn/afoor_text.html?&footer_id=50" target="_blank">Privacy Policy</a>)
|
||
</p>
|
||
</el-form-item>
|
||
<el-form-item label="Country :" prop="country">
|
||
<el-select v-model="MessForm.country" filterable placeholder="Please select" value-key="groupID" style="width: 200px">
|
||
<el-option v-for="item in df_country" :key="item.en_name" :label="item.en_name" :value="item.en_name"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="Website :" prop="website">
|
||
<el-input v-model="MessForm.website" placeholder="eg:http://..."></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="Title :" prop="technical">
|
||
<el-select v-model="MessForm.technical" filterable placeholder="Please select" value-key="groupID" style="width: 200px">
|
||
<el-option v-for="item in df_technical" :key="item.label" :label="item.label" :value="item.label"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="Major :" prop="majors_a">
|
||
<el-select
|
||
v-model="MessForm.major_a"
|
||
placeholder="Please select"
|
||
@change="majorChange(1)"
|
||
style="width: 150px; margin: 0 10px 0 0"
|
||
>
|
||
<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="MessForm.major_b"
|
||
placeholder="Please select"
|
||
v-if="majors_b != ''"
|
||
@change="majorChange(2)"
|
||
style="width: 150px; 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="MessForm.major_c"
|
||
placeholder="Please select"
|
||
v-if="majors_c != ''"
|
||
@change="majorChange(3)"
|
||
style="width: 150px"
|
||
>
|
||
<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>
|
||
</el-form-item>
|
||
<el-form-item label="Company :" prop="company">
|
||
<el-input v-model="MessForm.company" placeholder="Please enter"></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="Field :" prop="field">
|
||
<el-input v-model="MessForm.field" placeholder="Please enter" type="textarea" autosize> </el-input>
|
||
</el-form-item>
|
||
<el-form-item label="Introduction :">
|
||
<el-input v-model="MessForm.introduction" placeholder="Please enter" type="textarea" autosize> </el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button @click="messageVisible = false">Cancel</el-button>
|
||
<el-button type="primary" @click="saveMessage(MessForm)">OK</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
|
||
<!-- H指数弹出框 -->
|
||
<el-dialog title="Edit personal index" :visible.sync="indexVisible" width="600px">
|
||
<el-form ref="index_Form" :model="IndexForm" :rules="rules" label-width="170px">
|
||
<el-form-item label="Account :" prop="account">
|
||
{{ IndexForm.account }}
|
||
</el-form-item>
|
||
<el-form-item v-if="IndexForm.number == 1">
|
||
<span slot="label"> WOS H index ({{ this.now_year }}) : </span>
|
||
<el-input v-model="IndexForm.wos_index"></el-input>
|
||
</el-form-item>
|
||
<el-form-item v-if="IndexForm.number == 2">
|
||
<span slot="label"> Google H index ({{ this.now_year }}) : </span>
|
||
<el-input v-model="IndexForm.google_index"></el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button @click="indexVisible = false">Cancel</el-button>
|
||
<el-button type="primary" @click="saveIndex(IndexForm)">OK</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
<!-- user指数弹出框 -->
|
||
<el-dialog :title="`Edit personal index ( ${userIndexForm.typeName} )`" :visible.sync="userIndexVisible" min-width="600px">
|
||
<el-form
|
||
ref="index_Form"
|
||
:model="userIndexForm"
|
||
:rules="rules"
|
||
label-width="170px"
|
||
v-loading="userloading"
|
||
element-loading-text="拼命加载中"
|
||
element-loading-spinner="el-icon-loading"
|
||
element-loading-background="rgba(255, 255, 255, 0.8)"
|
||
>
|
||
<el-form-item label="Account :" prop="account">
|
||
{{ userIndexForm.account }}
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<span slot="label"> Time : </span>
|
||
<span v-html="colorIndex2(userIndexForm.date)"></span>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<span slot="label"> Index : </span>
|
||
<el-input v-model="userIndexForm.index" :disabled="userIndexForm.type == 2"></el-input>
|
||
</el-form-item>
|
||
|
||
<template v-if="userIndexForm.type == 1">
|
||
<el-form-item>
|
||
<span slot="label"> Website : </span>
|
||
<el-input v-model="userIndexForm.website"></el-input>
|
||
</el-form-item>
|
||
|
||
<template v-if="userIndexForm.type == 2"> </template>
|
||
</template>
|
||
|
||
<template v-if="userIndexForm.type == 2">
|
||
<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>
|
||
</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_author != ''"
|
||
target="_blank"
|
||
:href="'https://scholar.google.it/citations?user=' + userMessage.g_author"
|
||
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 OK button.
|
||
</p>
|
||
<div
|
||
v-for="item in geogleList"
|
||
:class="userIndexForm.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>
|
||
</el-form>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button @click="userIndexVisible = false">Cancel</el-button>
|
||
<el-button type="primary" @click="saveUserIndex(userIndexForm)">OK</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
|
||
<!-- 添加身份 -->
|
||
<el-dialog title="Add User Role" :visible.sync="guestVisible" width="700px">
|
||
<el-form ref="applyTab" :model="addRoleForm" :rules="rules" label-width="130px">
|
||
<el-form-item label="Realname :">
|
||
{{ addRoleForm.realname }}
|
||
</el-form-item>
|
||
<el-form-item label="Email :">
|
||
{{ addRoleForm.email }}
|
||
</el-form-item>
|
||
<el-form-item label="User Role :" prop="role_type">
|
||
<el-select v-model="addRoleForm.role_type" @change="chan_role(addRoleForm.role_type)">
|
||
<el-option v-for="item in df_role" :label="item.title" :key="item.type" :value="item.type"> </el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<!-- 审稿人 -->
|
||
<div v-if="addRoleForm.role_type == 'reviewer'">
|
||
<el-form-item label="Journal :" prop="journal_id">
|
||
<el-select
|
||
v-model="addRoleForm.journal_id"
|
||
placeholder="Please select a journal"
|
||
@change="changeShow()"
|
||
style="width: 300px"
|
||
>
|
||
<el-option
|
||
v-for="item in df_jour_reviewer"
|
||
:label="item.title"
|
||
:key="item.journal_id"
|
||
:value="item.journal_id"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</div>
|
||
<!-- 编委 -->
|
||
<div v-if="addRoleForm.role_type == 'board'">
|
||
<el-form-item label="Journal :" prop="journal_id">
|
||
<el-select
|
||
v-model="addRoleForm.journal_id"
|
||
placeholder="Please select a journal"
|
||
@change="
|
||
changeJourboard();
|
||
changeShow();
|
||
"
|
||
style="width: 300px"
|
||
>
|
||
<el-option
|
||
v-for="item in df_jour_board"
|
||
:label="item.title"
|
||
:key="item.journal_id"
|
||
:value="item.journal_id"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="Identity :" prop="type">
|
||
<el-radio-group v-model="addRoleForm.type">
|
||
<el-radio :label="0">Editor-in-Chief</el-radio>
|
||
<el-radio :label="1">Vice Editor-in-Chief</el-radio>
|
||
<el-radio :label="2">Editorial Board Members</el-radio>
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
<el-form-item label="Group :" prop="board_group_id" v-if="addRoleForm.type == 2">
|
||
<el-select
|
||
v-model="addRoleForm.board_group_id"
|
||
placeholder="Please select a group"
|
||
@change="changeShow()"
|
||
style="width: 300px"
|
||
>
|
||
<el-option
|
||
v-for="item in df_group_board"
|
||
:label="item.group_name"
|
||
:key="item.board_group_id"
|
||
:value="item.board_group_id"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</div>
|
||
<!-- 青年科学家 -->
|
||
<div v-if="addRoleForm.role_type == 'yboard'">
|
||
<el-form-item label="Journal :" prop="journal_id">
|
||
<el-select
|
||
v-model="addRoleForm.journal_id"
|
||
placeholder="Please select a journal"
|
||
@change="
|
||
changeJourYboard(addRoleForm.journal_id);
|
||
changeShow();
|
||
"
|
||
style="width: 270px"
|
||
>
|
||
<el-option
|
||
v-for="item in df_jour_yboard"
|
||
:label="item.title"
|
||
:key="item.journal_id"
|
||
:value="item.journal_id"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="Term of office :" prop="year">
|
||
<el-select v-model="addRoleForm.year" placeholder="Please select a year">
|
||
<el-option v-for="item in list_year" :label="item.title" :key="item.id" :value="item.id"> </el-option>
|
||
</el-select>
|
||
<span v-if="addRoleForm.yboardMark == 1" style="margin-left: 15px; color: #888">(Journal Renewal)</span>
|
||
</el-form-item>
|
||
</div>
|
||
<!-- 客座 -->
|
||
<div v-if="addRoleForm.role_type == 'special'">
|
||
<el-form-item label="Journal :" prop="issn_id">
|
||
<el-select v-model="addRoleForm.issn_id" @change="chan_jour">
|
||
<el-option v-for="item in df_jour_special" :label="item.title" :key="item.issn" :value="item.issn"> </el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="Guest Journal :" prop="special_id">
|
||
<el-select v-model="addRoleForm.special_id" style="width: 360px">
|
||
<el-option
|
||
v-for="item in df_guest"
|
||
:label="item.title"
|
||
:key="item.journal_special_id"
|
||
:value="item.journal_special_id"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</div>
|
||
</el-form>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button @click="guestVisible = false">Cancel</el-button>
|
||
<el-button type="primary" @click="saveApply">Save</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
|
||
<!-- 个人简历弹出框 -->
|
||
<el-dialog title="CV. List" :visible.sync="cvitaVisible" width="500px">
|
||
<p style="margin: 0 0 25px 28px; font-size: 18px">CV. List</p>
|
||
<p style="color: #aaa; margin: 0 0 30px 28px" v-if="cvitaTable.length == 0">No data</p>
|
||
<div v-for="(item, index) in cvitaTable" style="margin: 0 0 0 30px">
|
||
{{ index + 1 }}.
|
||
<img src="../../assets/img/icon_0.png" alt="" class="icon_img" style="vertical-align: middle; margin-left: 10px" />
|
||
<span style="margin-left: 20px; color: #888; font-size: 13px">
|
||
<i class="el-icon-paperclip"></i>
|
||
{{ formatDate(item.ctime) }}
|
||
</span>
|
||
<a :href="mediaUrl + 'reviewer/' + item.cv" target="_blank" class="txt_pdf">
|
||
<i class="el-icon-download"></i>
|
||
</a>
|
||
<i
|
||
class="el-icon-delete"
|
||
@click="deletCVita(item)"
|
||
style="color: #f12424; cursor: pointer; font-weight: bold; margin: 0 0 0 15px"
|
||
></i>
|
||
</div>
|
||
<p style="width: 90%; background-color: #d7d7d7; height: 1px; margin: 10px auto 30px auto"></p>
|
||
<p style="margin: 0 0 25px 28px">If you want to update your resume, please upload it.</p>
|
||
<el-form :model="cvitaForm" :rules="rules" ref="cvita_Form" label-width="70px">
|
||
<el-form-item label="CV. :">
|
||
<el-upload
|
||
class="upload-demo"
|
||
:action="baseUrl + 'api/Ucenter/up_cv_file'"
|
||
:on-success="handleFileSuccess1"
|
||
name="reviewerCV"
|
||
type="reviewerCV"
|
||
:on-error="handleFileError"
|
||
:on-preview="handlePreview"
|
||
:on-remove="handleRemove"
|
||
:before-remove="beforeRemove"
|
||
:on-change="handleChange1"
|
||
accept=".pdf"
|
||
:on-exceed="handleExceed"
|
||
ref="uploadRef1"
|
||
>
|
||
<el-button type="text" style="font-weight: bolder">
|
||
<b class="el-icon-lx-top" style="font-weight: bolder"></b>upload
|
||
</el-button>
|
||
</el-upload>
|
||
<span style="font-size: 12px; color: #aaa"> Only pdf files can be uploaded(.pdf) </span>
|
||
</el-form-item>
|
||
</el-form>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button @click="cvitaVisible = false">Close</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
|
||
<!-- 证书弹出框 -->
|
||
<el-dialog :visible.sync="cerVisible" width="850px">
|
||
<p style="text-align: right; margin-bottom: 20px">
|
||
<el-button type="primary" @click="down_pic" icon="el-icon-download">Download</el-button>
|
||
</p>
|
||
<el-image class="table-td-thumb rev_digol" :src="this.IMG_Url"></el-image>
|
||
</el-dialog>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
export default {
|
||
data() {
|
||
return {
|
||
citeLoading: false,
|
||
wosLoading: false,
|
||
authorList: [],
|
||
editorList: [],
|
||
loading: false,
|
||
userloading: false,
|
||
authorArticlesList: [],
|
||
userrole: localStorage.getItem('U_status'),
|
||
baseUrl: this.Common.baseUrl,
|
||
mediaUrl: this.Common.mediaUrl,
|
||
role_id: this.$route.query.id,
|
||
MessForm: {},
|
||
coreTable: {},
|
||
IndexForm: {
|
||
wos_index: '',
|
||
google_index: ''
|
||
},
|
||
userIndexForm: {},
|
||
geogleList: [],
|
||
reviewTable: {},
|
||
authorTable: {},
|
||
cvitaTable: [],
|
||
review_journal: [],
|
||
board_journal: [],
|
||
youth_journal: [],
|
||
starList: [],
|
||
starList_mark: 0,
|
||
cerVisible: false,
|
||
cvitaForm: {},
|
||
IMG_Url: '',
|
||
pictureUrl: '',
|
||
messageVisible: false,
|
||
indexVisible: false,
|
||
userIndexVisible: false,
|
||
bankVisible: false,
|
||
cvitaVisible: false,
|
||
fileL_pdf1: [],
|
||
now_year: 0,
|
||
majors_a: [],
|
||
majors_b: [],
|
||
majors_c: [],
|
||
df_jour_reviewer: [],
|
||
df_jour_board: [],
|
||
df_jour_yboard: [],
|
||
df_jour_special: [],
|
||
df_group_board: [],
|
||
df_guest: [],
|
||
df_country: [],
|
||
df_role: [
|
||
// {
|
||
// title: 'Author',
|
||
// type: 'author',
|
||
// }, {
|
||
// title: 'Editor',
|
||
// type: 'editor',
|
||
// }, {
|
||
// title: 'Editor-in-Chief',
|
||
// type: 'chief',
|
||
// },
|
||
// {
|
||
// title: 'Reviewer',
|
||
// type: 'reviewer',
|
||
// }, {
|
||
// title: 'Editorial Board',
|
||
// type: 'board',
|
||
// },
|
||
{
|
||
title: 'Young Scientist',
|
||
type: 'yboard'
|
||
},
|
||
{
|
||
title: 'Guest Editor',
|
||
type: 'special'
|
||
}
|
||
],
|
||
df_technical: [
|
||
{
|
||
label: 'Professor'
|
||
},
|
||
{
|
||
label: 'Associate Professor'
|
||
},
|
||
{
|
||
label: 'Assistant Professor'
|
||
},
|
||
// {
|
||
// label: 'Ph.D.',
|
||
// },
|
||
{
|
||
label: 'Researcher'
|
||
},
|
||
{
|
||
label: 'Associate research fellow'
|
||
},
|
||
{
|
||
label: 'Assistant research fellow'
|
||
},
|
||
{
|
||
label: 'Engineer'
|
||
},
|
||
{
|
||
label: 'Senior engineer'
|
||
},
|
||
{
|
||
label: 'Associate Researcher'
|
||
},
|
||
{
|
||
label: 'Lecturer'
|
||
},
|
||
{
|
||
label: 'Associate Chief Physician'
|
||
},
|
||
{
|
||
label: 'Assistant Researcher'
|
||
},
|
||
{
|
||
label: 'Physician'
|
||
},
|
||
{
|
||
label: 'Chief Physician'
|
||
},
|
||
{
|
||
label: 'Senior Lecturer'
|
||
},
|
||
{
|
||
label: 'Research Fellow'
|
||
},
|
||
{
|
||
label: 'Senior Investigator'
|
||
}
|
||
// {
|
||
// label: 'Others',
|
||
// }
|
||
],
|
||
list_year: [
|
||
{
|
||
title: '1 Year',
|
||
id: 1
|
||
},
|
||
{
|
||
title: '2 Years',
|
||
id: 2
|
||
},
|
||
{
|
||
title: '3 Years',
|
||
id: 3
|
||
}
|
||
],
|
||
role_author: 0,
|
||
googleSearchInfo:'',
|
||
role_editor: 0,
|
||
role_chief: 0,
|
||
role_reviewer: 0,
|
||
role_board: 0,
|
||
role_yboard: 0,
|
||
role_special: 0,
|
||
userMessage: {},
|
||
addRoleForm: {
|
||
user_id: this.$route.query.id,
|
||
role_type: '',
|
||
issn_id: '',
|
||
special_id: '',
|
||
yboardMark: 0
|
||
},
|
||
guestVisible: false,
|
||
rules: {
|
||
role_type: [
|
||
{
|
||
required: true,
|
||
message: 'Please select a role',
|
||
trigger: 'blur'
|
||
}
|
||
],
|
||
board_group_id: [
|
||
{
|
||
required: true,
|
||
message: 'Please select a group',
|
||
trigger: 'blur'
|
||
}
|
||
],
|
||
type: [
|
||
{
|
||
required: true,
|
||
message: 'Please input type',
|
||
trigger: 'blur'
|
||
}
|
||
],
|
||
issn_id: [
|
||
{
|
||
required: true,
|
||
message: 'Please select a journal',
|
||
trigger: 'blur'
|
||
}
|
||
],
|
||
special_id: [
|
||
{
|
||
required: true,
|
||
message: 'Please select a guest',
|
||
trigger: 'blur'
|
||
}
|
||
],
|
||
realname: [
|
||
{
|
||
required: true,
|
||
message: 'Please input realname',
|
||
trigger: 'blur'
|
||
}
|
||
],
|
||
journal_id: [
|
||
{
|
||
required: true,
|
||
message: 'Please select journal',
|
||
trigger: 'blur'
|
||
}
|
||
],
|
||
year: [
|
||
{
|
||
required: true,
|
||
message: 'Please select year',
|
||
trigger: 'blur'
|
||
}
|
||
],
|
||
country: [
|
||
{
|
||
required: true,
|
||
message: 'Please select country',
|
||
trigger: 'blur'
|
||
}
|
||
],
|
||
majors_a: [
|
||
{
|
||
required: true,
|
||
message: 'Please select major',
|
||
trigger: 'blur'
|
||
}
|
||
],
|
||
technical: [
|
||
{
|
||
required: true,
|
||
message: 'Please select title',
|
||
trigger: 'blur'
|
||
}
|
||
],
|
||
field: [
|
||
{
|
||
required: true,
|
||
message: 'Please input field',
|
||
trigger: 'blur'
|
||
}
|
||
]
|
||
}
|
||
};
|
||
},
|
||
mounted() {},
|
||
created() {
|
||
this.getSelectData();
|
||
this.getDate();
|
||
this.getAllEditor();
|
||
},
|
||
methods: {
|
||
async getWosList(id) {
|
||
var that = this;
|
||
this.authorList = [];
|
||
this.wosLoading = true;
|
||
await this.$api
|
||
.post('api/User/getAuthorForArticle', {
|
||
article_id: id
|
||
})
|
||
.then(async (res) => {
|
||
if (res.code == 0) {
|
||
this.authorList = res.data.list;
|
||
this.wosLoading = false;
|
||
setTimeout(() => {
|
||
that.$nextTick(() => {
|
||
that.$refs.popover.updatePopper();
|
||
});
|
||
}, 100);
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
this.wosLoading = false;
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
this.wosLoading = false;
|
||
});
|
||
},
|
||
async getAuthorList(id) {
|
||
var that = this;
|
||
this.authorList = [];
|
||
this.citeLoading = true;
|
||
await this.$api
|
||
.post('api/User/getAuthorForArticle', {
|
||
article_id: id
|
||
})
|
||
.then(async (res) => {
|
||
if (res.code == 0) {
|
||
this.authorList = 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 getAllEditor(id) {
|
||
var that = this;
|
||
this.editorList = [];
|
||
await this.$api
|
||
.post('api/User/getAllEditor', {})
|
||
.then(async (res) => {
|
||
if (res.code == 0) {
|
||
this.editorList = res.data.editors;
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
},
|
||
// 获取下拉列表
|
||
getSelectData() {
|
||
this.$api
|
||
.post('api/Admin/getCountrys')
|
||
.then((res) => {
|
||
this.df_country = res;
|
||
})
|
||
.catch((err) => {
|
||
console.log(err);
|
||
});
|
||
},
|
||
|
||
// 获取数据
|
||
getDate() {
|
||
this.loading = true;
|
||
this.now_year = new Date().getFullYear();
|
||
this.$api
|
||
.post('api/User/getUserDetail', {
|
||
user_id: this.role_id
|
||
})
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.userMessage = res.data.user;
|
||
this.role_author = 0;
|
||
this.role_editor = 0;
|
||
this.role_chief = 0;
|
||
this.role_reviewer = 0;
|
||
this.role_board = 0;
|
||
this.role_yboard = 0;
|
||
this.role_special = 0;
|
||
let shenfen = this.userMessage.roles;
|
||
for (let i = 0; i < shenfen.length; i++) {
|
||
if (shenfen[i] == 'author') {
|
||
this.role_author = 1;
|
||
} else if (shenfen[i] == 'editor') {
|
||
this.role_editor = 1;
|
||
} else if (shenfen[i] == 'chief') {
|
||
this.role_chief = 1;
|
||
} else if (shenfen[i] == 'reviewer') {
|
||
this.role_reviewer = 1;
|
||
} else if (shenfen[i] == 'board') {
|
||
this.role_board = 1;
|
||
} else if (shenfen[i] == 'yboard') {
|
||
this.role_yboard = 1;
|
||
} else if (shenfen[i] == 'special') {
|
||
this.role_special = 1;
|
||
}
|
||
}
|
||
this.addRoleForm.email = res.data.user.email;
|
||
this.addRoleForm.realname = res.data.user.realname;
|
||
this.getINfodata();
|
||
this.loading = false;
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
},
|
||
|
||
// 获取补充数据
|
||
getINfodata() {
|
||
this.$api
|
||
.post('api/Ucenter/getUserInfo', {
|
||
user_id: this.role_id
|
||
})
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
if (res.data.baseInfo.icon != '') {
|
||
this.pictureUrl = this.mediaUrl + 'usericon/' + res.data.baseInfo.icon;
|
||
} else {
|
||
this.pictureUrl = '';
|
||
}
|
||
this.userMessage.technical = res.data.baseInfo.technical;
|
||
this.userMessage.country = res.data.baseInfo.country;
|
||
this.userMessage.field = res.data.baseInfo.field;
|
||
this.userMessage.introduction = res.data.baseInfo.introduction;
|
||
this.userMessage.majorshu = res.data.baseInfo.majorshu;
|
||
this.userMessage.majorStr = res.data.baseInfo.majorStr;
|
||
this.cvitaForm.user_id = res.data.baseInfo.user_id;
|
||
this.userMessage.website = res.data.baseInfo.website;
|
||
|
||
this.coreTable = res.data.baseInfo;
|
||
this.cvitaTable = res.data.cvs;
|
||
|
||
if (res.data.Author) {
|
||
this.authorArticlesList = res.data.Author.articles ? res.data.Author.articles : [];
|
||
}
|
||
if (res.data.asAuthor) {
|
||
this.authorTable = res.data.asAuthor;
|
||
}
|
||
if (res.data.asReviewer) {
|
||
this.reviewTable = res.data.asReviewer;
|
||
this.review_journal = res.data.asReviewer.journal;
|
||
this.userMessage.reviewer_id = res.data.asReviewer.reviewer_id;
|
||
}
|
||
if (res.data.asBoard) {
|
||
this.board_journal = res.data.asBoard;
|
||
}
|
||
if (res.data.Yboard) {
|
||
this.youth_journal = res.data.Yboard;
|
||
for (let i = 0; i < this.youth_journal.length; i++) {
|
||
this.youth_journal[i].arrowMark = 1;
|
||
}
|
||
}
|
||
this.getScoreData();
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
},
|
||
|
||
// 评分
|
||
getScoreData() {
|
||
this.starList = [];
|
||
if (this.coreTable.score < 0.5 && this.coreTable.score > 0) {
|
||
this.starList.push({
|
||
star: 2
|
||
});
|
||
this.starList_mark = 1;
|
||
} else {
|
||
let zheng = Math.floor(this.coreTable.score);
|
||
let xiao = Number(this.coreTable.score) - Math.floor(this.coreTable.score);
|
||
if (xiao >= 0.5) {
|
||
xiao = 0.5;
|
||
} else {
|
||
xiao = 0;
|
||
}
|
||
for (var i = 0; i < zheng; i++) {
|
||
this.starList.push({
|
||
star: 1
|
||
});
|
||
}
|
||
if (xiao == 0.5) {
|
||
this.starList.push({
|
||
star: 0
|
||
});
|
||
}
|
||
this.starList_mark = Number(zheng) + Number(xiao);
|
||
}
|
||
},
|
||
|
||
// 简历弹出层
|
||
openCVita() {
|
||
this.cvitaVisible = true;
|
||
this.cvitaForm.cv = '';
|
||
},
|
||
|
||
// 删除简历
|
||
deletCVita(e) {
|
||
// 二次确认删除
|
||
this.$confirm('Are you sure you want to delete the CV.?', 'Tip', {
|
||
type: 'warning'
|
||
})
|
||
.then(() => {
|
||
this.$api
|
||
.post('api/Ucenter/delUserCv', e)
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.$message.success('Delete successful!');
|
||
this.getDate();
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
})
|
||
.catch(() => {});
|
||
},
|
||
|
||
// 个人信息修改
|
||
handleMessage() {
|
||
// this.$router.push({
|
||
// path: 'partyRoleEdit',
|
||
// query: {
|
||
// id: this.userMessage.user_id
|
||
// }
|
||
// });
|
||
|
||
this.MessForm = JSON.parse(JSON.stringify(this.userMessage));
|
||
this.MessForm.major = 1;
|
||
this.MessForm.major_a = '';
|
||
this.MessForm.major_b = '';
|
||
this.MessForm.major_c = '';
|
||
this.MessForm.majorList = [];
|
||
|
||
if (this.MessForm.majorshu != 0) {
|
||
if (typeof this.MessForm.majorshu == 'number') {
|
||
this.MessForm.majorList.push(this.MessForm.majorshu);
|
||
} else {
|
||
this.MessForm.majorList = this.MessForm.majorshu.split(',');
|
||
}
|
||
}
|
||
|
||
this.$nextTick(() => {
|
||
this.jiLInaoan();
|
||
this.messageVisible = true;
|
||
});
|
||
},
|
||
|
||
// 保存个人信息
|
||
saveMessage() {
|
||
if (this.$validateString(this.MessForm.realname)) {
|
||
console.log('Input string is valid.');
|
||
} else {
|
||
console.log('Input string is invalid.');
|
||
this.$message.error(this.$t('info.realname'));
|
||
return false;
|
||
}
|
||
|
||
this.$api
|
||
.post('api/Ucenter/updateUserInfo', this.MessForm)
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.$message.success('Successfully modified personal information');
|
||
this.messageVisible = false;
|
||
this.getDate();
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
},
|
||
|
||
// 刷新H指数
|
||
freshIndex() {
|
||
this.$api
|
||
.post('api/User/googleGetIndex', this.userMessage)
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.getDate();
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
},
|
||
|
||
// 个人指数修改
|
||
handleIndex(e) {
|
||
this.IndexForm = JSON.parse(JSON.stringify(this.userMessage));
|
||
this.IndexForm.number = e;
|
||
if (e == 3) {
|
||
this.loading = true;
|
||
this.$api
|
||
.post('api/User/googleGetAuthor', this.IndexForm)
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.geogleList = res.data.authors;
|
||
this.bankVisible = true;
|
||
this.loading = false;
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
this.loading = false;
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
this.loading = false;
|
||
});
|
||
} else {
|
||
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 = '';
|
||
var typeName = '';
|
||
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_index;
|
||
date = this.userMessage.wos_time;
|
||
|
||
break;
|
||
case 'scopus':
|
||
type = 1;
|
||
typeName = 'Scopus';
|
||
index = this.userMessage.scopus_index;
|
||
date = this.userMessage.scopus_time;
|
||
website = this.userMessage.scopus_website;
|
||
|
||
break;
|
||
case 'google':
|
||
type = 2;
|
||
typeName = 'Google';
|
||
index = this.userMessage.google_index;
|
||
date = this.userMessage.google_time;
|
||
|
||
website = this.userMessage.g_website;
|
||
|
||
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,
|
||
|
||
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.userIndexVisible = true;
|
||
}
|
||
},
|
||
|
||
// 保存个人信息
|
||
saveIndex() {
|
||
let link_geo = '';
|
||
if (this.IndexForm.number == 3) {
|
||
if (this.IndexForm.g_author == '') {
|
||
this.$message.error('Please select one!');
|
||
return;
|
||
}
|
||
link_geo = 'api/User/googleBindAuthor';
|
||
} else {
|
||
link_geo = 'api/User/editUserMsg';
|
||
}
|
||
this.$api
|
||
.post(link_geo, this.IndexForm)
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.$message.success('Successfully modified personal index');
|
||
this.indexVisible = false;
|
||
this.bankVisible = false;
|
||
this.getDate();
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
},
|
||
// 保存个人信息
|
||
saveUserIndex() {
|
||
let link_geo = '';
|
||
if (this.userIndexForm.type == 2) {
|
||
if (this.userIndexForm.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;
|
||
}
|
||
}
|
||
}
|
||
link_geo = 'api/User/editUserIndex';
|
||
// link_geo = 'api/User/googleBindAuthor';
|
||
} else {
|
||
link_geo = 'api/User/editUserIndex';
|
||
}
|
||
this.$api
|
||
.post(link_geo, this.userIndexForm)
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.$message.success('Successfully modified personal index');
|
||
this.userIndexVisible = false;
|
||
this.bankVisible = false;
|
||
this.getDate();
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
},
|
||
|
||
// 选择填写方式
|
||
checkAddType(e) {
|
||
if (e == 1) {
|
||
this.geogleList = [];
|
||
}
|
||
this.$forceUpdate();
|
||
},
|
||
|
||
// 选择谷歌账号
|
||
choseGego(e) {
|
||
this.userIndexForm.g_author = e.author_id;
|
||
this.userIndexForm.website = e.link;
|
||
},
|
||
|
||
// 指数颜色
|
||
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:5px;"> (' +
|
||
time +
|
||
')</span>';
|
||
} else if (num < 15) {
|
||
str =
|
||
'<b style="color:#cbb504">' +
|
||
num +
|
||
'</b><span style="color:#aaa;font-size:14px;margin-left:5px;"> (' +
|
||
time +
|
||
')</span>';
|
||
} else {
|
||
str =
|
||
'<b style="color:#0cbc15">' +
|
||
num +
|
||
'</b><span style="color:#aaa;font-size:14px;margin-left:5px;"> (' +
|
||
time +
|
||
')</span>';
|
||
}
|
||
if (time == 0) {
|
||
str = '<b style="color:#aaa;">0 </b><span style="color:#aaa;font-size:14px;margin-left:5px;">(No time)</span>';
|
||
}
|
||
return str;
|
||
},
|
||
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;
|
||
},
|
||
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="color:#aaa;font-size:14px;margin-left:5px;"> ' + time + '</span>';
|
||
|
||
if (time == 0) {
|
||
str = '<span style="color:#aaa;font-size:14px;margin-left:5px;">(No time)</span>';
|
||
}
|
||
return str;
|
||
},
|
||
|
||
// 下拉身份
|
||
chan_role(e) {
|
||
this.addRoleForm.journal_id = '';
|
||
this.addRoleForm.yboardMark = 0;
|
||
if (e == 'reviewer') {
|
||
// 申请审稿人期刊列表
|
||
if (this.role_reviewer == 1) {
|
||
this.$api
|
||
.post('api/Journal/getJournalsForReviewerInEditor', {
|
||
editor_id: localStorage.getItem('U_id'),
|
||
reviewer_id: this.userMessage.reviewer_id
|
||
})
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.df_jour_reviewer = res.data.journals;
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
} else {
|
||
this.$api
|
||
.post('api/Chief/getJournalsByEditor', {
|
||
user_id: localStorage.getItem('U_id')
|
||
})
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.df_jour_reviewer = res.data.journals;
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
}
|
||
} else if (e == 'board') {
|
||
// 申请编委期刊列表
|
||
this.$api
|
||
.post('api/Chief/getJournalsByEditor', {
|
||
user_id: localStorage.getItem('U_id')
|
||
})
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.df_jour_board = res.data.journals;
|
||
this.addRoleForm.journal_id = this.df_jour_board[0].journal_id;
|
||
this.changeJourboard();
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
} else if (e == 'yboard') {
|
||
// 申请青年科学家期刊列表
|
||
this.$api
|
||
.post('api/Chief/getJournalsByEditor', {
|
||
user_id: localStorage.getItem('U_id')
|
||
})
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.df_jour_yboard = res.data.journals;
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
} else if (e == 'special') {
|
||
// 申请客座期刊列表
|
||
this.$api
|
||
.post('api/Chief/getJournalsByEditor', {
|
||
user_id: localStorage.getItem('U_id')
|
||
})
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.df_jour_special = res.data.journals;
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
}
|
||
},
|
||
|
||
// 改变编委分组
|
||
changeJourboard() {
|
||
this.$api
|
||
.post('api/Board/getBoardGroupList', {
|
||
journal_id: this.addRoleForm.journal_id
|
||
})
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.df_group_board = res.data.groups;
|
||
this.df_group_board.unshift({
|
||
board_group_id: 0,
|
||
group_name: 'No Group'
|
||
});
|
||
this.addRoleForm.board_group_id = 0;
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
},
|
||
|
||
// 更改青年科学家期刊
|
||
changeJourYboard(e) {
|
||
this.addRoleForm.yboardMark = 0;
|
||
for (let i = 0; i < this.youth_journal.length; i++) {
|
||
if (e == this.youth_journal[i].journal_id) {
|
||
this.addRoleForm.yboardMark = 1;
|
||
}
|
||
}
|
||
},
|
||
|
||
// 下拉期刊客座
|
||
chan_jour() {
|
||
this.addRoleForm.special_id = '';
|
||
this.$api
|
||
.post('api/Special/getSpecialByIssn', {
|
||
journal_issn: this.addRoleForm.issn_id
|
||
})
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.df_guest = res.data.specials;
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
},
|
||
|
||
// 客座弹出框
|
||
handleAddGuest() {
|
||
this.guestVisible = true;
|
||
},
|
||
|
||
// 添加身份
|
||
saveApply() {
|
||
let urlApply = '';
|
||
// 审稿人身份
|
||
if (this.addRoleForm.role_type == 'reviewer') {
|
||
urlApply = 'api/Reviewer/addReviewerBee';
|
||
}
|
||
|
||
// 编委身份
|
||
if (this.addRoleForm.role_type == 'board') {
|
||
urlApply = 'api/Board/addBoard';
|
||
}
|
||
|
||
// 青年科学家身份
|
||
if (this.addRoleForm.role_type == 'yboard') {
|
||
urlApply = 'api/User/addYboard';
|
||
}
|
||
|
||
// 客座身份
|
||
if (this.addRoleForm.role_type == 'special') {
|
||
if (this.addRoleForm.yboardMark == 1) {
|
||
urlApply = 'api/User/addYboardContinue'; //续约
|
||
} else {
|
||
urlApply = 'api/User/addUserRole';
|
||
}
|
||
}
|
||
|
||
// console.log(this.addRoleForm)
|
||
// return
|
||
|
||
this.$refs.applyTab.validate((valid) => {
|
||
if (valid) {
|
||
this.$api
|
||
.post(urlApply, this.addRoleForm)
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.guestVisible = false;
|
||
this.getDate();
|
||
this.$refs.guestTab.resetFields();
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
} else {
|
||
this.$message.error('error submit!!');
|
||
return false;
|
||
}
|
||
});
|
||
},
|
||
|
||
// 修改选择领域
|
||
jiLInaoan() {
|
||
this.majors_a = [];
|
||
this.majors_b = [];
|
||
this.majors_c = [];
|
||
this.$api
|
||
.post('api/Ucenter/getMajor', {
|
||
major_id: 1
|
||
})
|
||
.then((res) => {
|
||
this.majors_a = res.data.major.children;
|
||
if (this.MessForm.majorList[0] != undefined) {
|
||
this.MessForm.major_a = Number(this.MessForm.majorList[0]);
|
||
this.$api
|
||
.post('api/Ucenter/getMajor', {
|
||
major_id: this.MessForm.major_a
|
||
})
|
||
.then((res) => {
|
||
this.majors_b = res.data.major.children;
|
||
this.majors_c = [];
|
||
this.MessForm.major_b = '';
|
||
this.MessForm.major_c = '';
|
||
this.majorChange_panduan();
|
||
if (this.MessForm.majorList[1] != undefined) {
|
||
this.MessForm.major_b = Number(this.MessForm.majorList[1]);
|
||
this.$api
|
||
.post('api/Ucenter/getMajor', {
|
||
major_id: this.MessForm.major_b
|
||
})
|
||
.then((ref) => {
|
||
if (ref.data.major.children.length != 0) {
|
||
this.majors_c = ref.data.major.children;
|
||
this.majorChange_panduan();
|
||
if (this.MessForm.majorList[2] != undefined) {
|
||
this.MessForm.major_c = Number(this.MessForm.majorList[2]);
|
||
this.majorChange_panduan();
|
||
}
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
});
|
||
},
|
||
|
||
majorChange(e) {
|
||
if (e == 1) {
|
||
this.$api
|
||
.post('api/Ucenter/getMajor', {
|
||
major_id: this.MessForm.major_a
|
||
})
|
||
.then((res) => {
|
||
this.majors_b = res.data.major.children;
|
||
this.majors_c = [];
|
||
this.MessForm.major_b = '';
|
||
this.MessForm.major_c = '';
|
||
this.majorChange_panduan();
|
||
});
|
||
} else if (e == 2 && this.MessForm.major_b != 0) {
|
||
this.$api
|
||
.post('api/Ucenter/getMajor', {
|
||
major_id: this.MessForm.major_b
|
||
})
|
||
.then((res) => {
|
||
this.majors_c = res.data.major.children;
|
||
this.MessForm.major_c = '';
|
||
this.majorChange_panduan();
|
||
});
|
||
} else {
|
||
this.majorChange_panduan();
|
||
}
|
||
},
|
||
|
||
majorChange_panduan() {
|
||
if (this.MessForm.major_c != '' || this.MessForm.major_c != 0) {
|
||
this.MessForm.major = this.MessForm.major_c;
|
||
} else if (this.MessForm.major_b != '' || this.MessForm.major_b != 0) {
|
||
this.MessForm.major = this.MessForm.major_b;
|
||
} else {
|
||
this.MessForm.major = this.MessForm.major_a;
|
||
}
|
||
},
|
||
|
||
// 证书弹出层
|
||
cerFicte(e) {
|
||
this.IMG_Url = this.Common.mediaUrl + 'cert/' + e;
|
||
this.cerVisible = true;
|
||
},
|
||
|
||
// 证书折叠
|
||
arrowBtnChange(index, e) {
|
||
this.youth_journal[index].arrowMark = e;
|
||
this.$forceUpdate();
|
||
},
|
||
|
||
// 证书下载
|
||
down_pic() {
|
||
const a_b = document.createElement('a');
|
||
a_b.href = this.IMG_Url;
|
||
a_b.download = 'certificate.png';
|
||
a_b.click();
|
||
},
|
||
|
||
// 时间格式
|
||
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;
|
||
},
|
||
|
||
formatYear(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;
|
||
return Y + M;
|
||
},
|
||
|
||
// 上传头像
|
||
unplIcon() {
|
||
this.$refs['upIconIMg'].$refs['upload-inner'].handleClick();
|
||
},
|
||
|
||
//上传头像
|
||
handleAvatarSuccess2(res, file) {
|
||
if (res.code == 0) {
|
||
this.$api
|
||
.post('api/Ucenter/updateIncon', {
|
||
user_id: this.role_id,
|
||
icon: res.upurl
|
||
})
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.$message.success('Successfully uploaded the avatar!');
|
||
this.pictureUrl = URL.createObjectURL(file.raw);
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
},
|
||
handleAvatarError2(res, file) {
|
||
// this.$message.error(res);
|
||
},
|
||
beforeAvatarUpload2(file) {
|
||
const isLt2M = file.size / 1024 / 1024 < 1;
|
||
if (!isLt2M) {
|
||
this.$message.error('Picture size cannot exceed 1M!');
|
||
}
|
||
return isLt2M;
|
||
},
|
||
|
||
// 上传文件
|
||
handleChange1(file, fileList) {
|
||
if (fileList.length > 0) {
|
||
this.fileL_pdf1 = [fileList[fileList.length - 1]];
|
||
}
|
||
},
|
||
handleFileSuccess1(res, file) {
|
||
this.$refs.uploadRef1.clearFiles();
|
||
if (res.code == 0) {
|
||
this.cvitaForm.cv = res.upurl;
|
||
this.$api
|
||
.post('api/Ucenter/addUserCv', this.cvitaForm)
|
||
.then((res) => {
|
||
if (res.code == 0) {
|
||
this.$message.success('Upload succeeded!');
|
||
this.getDate();
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
this.$message.error(err);
|
||
});
|
||
} else {
|
||
this.$message.error(res.msg);
|
||
}
|
||
},
|
||
beforeRemove(file, fileList) {
|
||
return this.$confirm(`Remove ${file.name}?`);
|
||
},
|
||
handleFileError(res, file) {},
|
||
|
||
handleRemove(file, fileList) {},
|
||
handlePreview(file) {
|
||
window.open(file.url);
|
||
},
|
||
handleExceed(files, fileList) {
|
||
this.$message.warning('The current limit is 1 file. Please delete the current file first!');
|
||
},
|
||
|
||
changeShow() {
|
||
this.$forceUpdate();
|
||
}
|
||
},
|
||
computed: {},
|
||
watch: {}
|
||
};
|
||
</script>
|
||
|
||
<style scoped>
|
||
.container {
|
||
padding: 0;
|
||
background: #fafafa;
|
||
}
|
||
|
||
.top_dao:hover {
|
||
text-decoration: underline;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.portrait {
|
||
width: 83px;
|
||
height: 83px;
|
||
border-radius: 110px;
|
||
border: 1.5px solid #eee;
|
||
cursor: pointer;
|
||
position: relative;
|
||
display: inline-block;
|
||
}
|
||
|
||
.portrait > img {
|
||
width: 80px;
|
||
height: 80px;
|
||
border-radius: 110px;
|
||
}
|
||
|
||
.portrait .ptmark {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
bottom: 0;
|
||
right: 0;
|
||
background-color: #00000033;
|
||
color: #fff;
|
||
border-radius: 110px;
|
||
font-size: 16px;
|
||
line-height: 22px;
|
||
display: none;
|
||
padding: 22px 0 0 0;
|
||
text-align: center;
|
||
}
|
||
|
||
.portrait:hover .ptmark {
|
||
display: block;
|
||
}
|
||
|
||
.s_rol {
|
||
margin: 0 0 20px 0;
|
||
/* border: 2px solid rgba(0, 102, 153, 0.15); */
|
||
padding: 20px 20px 20px 20px;
|
||
border-radius: 10px;
|
||
background-color: rgb(255, 255, 255);
|
||
}
|
||
|
||
.s_rol:nth-child(2n) {
|
||
/* background-color: #f7fcff; */
|
||
}
|
||
|
||
.s_rol > h3 {
|
||
margin: 0 0 10px 0;
|
||
letter-spacing: -0.5px;
|
||
font-size: 16px;
|
||
border-bottom: 2px solid rgba(0, 102, 153, 0.15);
|
||
padding: 0px 0px 15px 6px;
|
||
}
|
||
|
||
.s_rol > h3 > button {
|
||
margin: 0 0 0 25px;
|
||
padding: 5px 12px;
|
||
}
|
||
|
||
.s_rol > h3 > button:hover {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.s_rol > div.rol_mess {
|
||
/* margin-bottom: 10px; */
|
||
|
||
font-size: 15px;
|
||
}
|
||
|
||
.s_rol > div.rol_mess:nth-child(2n) {
|
||
padding: 14px 10px 14px 10px;
|
||
}
|
||
|
||
.s_rol > div.rol_mess:nth-child(2n + 1) {
|
||
padding: 10px 10px 10px 10px;
|
||
background-color: #f9fdff;
|
||
}
|
||
|
||
.s_rol > div.rol_mess > font {
|
||
color: #666;
|
||
margin-right: 15px;
|
||
display: inline-block;
|
||
width: 150px;
|
||
text-align: right;
|
||
vertical-align: top;
|
||
margin-top: 2px;
|
||
}
|
||
|
||
.s_rol > div.rol_mess > .pencil {
|
||
color: #006699;
|
||
margin-left: 15px;
|
||
font-weight: bold;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.s_rol > div.rol_mess > .rm_huid {
|
||
display: inline-block;
|
||
width: 75%;
|
||
line-height: 22px;
|
||
}
|
||
|
||
.s_rol > div.rol_art {
|
||
padding: 1px 10px 10px 10px;
|
||
}
|
||
|
||
.s_rol > div.rol_art > b {
|
||
display: block;
|
||
font-size: 16px;
|
||
color: #006699;
|
||
letter-spacing: -0.5px;
|
||
margin-bottom: 20px;
|
||
}
|
||
|
||
.s_rol > div.rol_art > font {
|
||
display: block;
|
||
margin: 15px 0 0 0;
|
||
font-size: 14px;
|
||
font-weight: bold;
|
||
color: #333;
|
||
}
|
||
|
||
.s_rol > div.rol_art > font:nth-child(2) {
|
||
margin-top: 25px;
|
||
}
|
||
|
||
.s_rol > div.rol_art > span {
|
||
display: block;
|
||
color: #666;
|
||
font-size: 16px;
|
||
margin: 15px 0 0 10px;
|
||
}
|
||
|
||
.s_rol > div.rol_art > p {
|
||
font-size: 14px;
|
||
margin-top: 15px;
|
||
color: #333;
|
||
}
|
||
|
||
.rol_art .colNUmber {
|
||
color: #069;
|
||
font-size: 20px;
|
||
margin-right: 5px;
|
||
}
|
||
|
||
.rol_art .certBtn {
|
||
margin: 0 0 0 20px;
|
||
color: #006699;
|
||
}
|
||
|
||
.rol_art .certBtn:hover {
|
||
cursor: pointer;
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.rol_art .arrowBtn {
|
||
color: #006699;
|
||
cursor: pointer;
|
||
font-weight: bold;
|
||
margin: 0 0 0 10px;
|
||
}
|
||
|
||
.webLink {
|
||
color: #2a9916;
|
||
margin-left: 10px;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.webLink:hover {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.gugeList {
|
||
font-size: 14px;
|
||
border: 2px dashed #eee;
|
||
cursor: pointer;
|
||
margin-bottom: 20px;
|
||
padding: 10px 30px 10px 15px;
|
||
position: relative;
|
||
}
|
||
|
||
.gugeList:hover {
|
||
background-color: #fdfdfd;
|
||
}
|
||
|
||
.gugeList > p {
|
||
margin-bottom: 5px;
|
||
line-height: 20px;
|
||
}
|
||
|
||
.gugeList > p > font {
|
||
margin-right: 5px;
|
||
color: #999;
|
||
}
|
||
|
||
.gugeList > p > a {
|
||
color: #006699;
|
||
}
|
||
|
||
.gugeList > p > a:hover {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.gugeList > b {
|
||
display: none;
|
||
}
|
||
|
||
.gugeList > .kuangGeo {
|
||
display: block;
|
||
position: absolute;
|
||
width: 15px;
|
||
height: 15px;
|
||
border: 2px solid #eee;
|
||
top: 10px;
|
||
right: 10px;
|
||
}
|
||
|
||
.gugeList.gu_col {
|
||
border: 2px solid #006699;
|
||
background-color: #ebf4f9;
|
||
position: relative;
|
||
}
|
||
|
||
.gugeList.gu_col > b {
|
||
display: block;
|
||
position: absolute;
|
||
top: 5px;
|
||
right: 5px;
|
||
color: #069;
|
||
font-weight: 700;
|
||
font-size: 25px;
|
||
}
|
||
|
||
.zhujie_name {
|
||
font-size: 12px;
|
||
line-height: 20px;
|
||
margin-top: 6px;
|
||
color: #999;
|
||
}
|
||
|
||
.zhujie_name a {
|
||
color: #006699;
|
||
font-weight: bold;
|
||
letter-spacing: -0.5px;
|
||
}
|
||
|
||
.zhujie_name a:hover {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.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;
|
||
}
|
||
/deep/.articleTable .el-table th {
|
||
background-color: #f0f0f0 !important;
|
||
color: #006699 !important;
|
||
padding: 3px !important;
|
||
}
|
||
|
||
.userIndexBox .s_rol {
|
||
width: 29%;
|
||
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>
|