Files
tougao_web/src/components/page/Dashboard_.vue
2025-02-18 11:52:24 +08:00

2857 lines
111 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div>
<el-row :gutter="30" style="min-width: 1000px; padding: 20px 0; margin: 0 auto">
<el-col :span="7">
<div class="consumer">
<div class="portrait" @click="unplIcon">
<img src="../../assets/img/userImg.jpg" style="cursor: pointer" v-if="pictureUrl == ''" />
<img :src="pictureUrl" style="cursor: pointer" 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>
<p style="font-size: 22px; font-weight: bold; margin: 10px 0 0 0">
{{ coreTable.account }}
</p>
<div style="margin: 8px 0 5px 0" v-if="starList_mark != 0">
<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>
</div>
<div v-else>
<img src="../../assets/img/star-grey.png" class="starSty" />
</div>
<el-button type="primary" plain @click="openCoreHand()" size="mini" style="margin-top: 5px">
<i class="el-icon-setting"></i>
Profile settings
</el-button>
</div>
</el-col>
<el-col :span="8">
<!-- 个人信息 -->
<div class="exponent">
<div>
<div class="expTit">Real name :</div>
<div class="expInde">
{{ coreTable.realname }}
</div>
</div>
<div v-if="coreTable.localname != ''">
<div class="expTit">Localname :</div>
<div class="expInde">
{{ coreTable.localname }}
</div>
</div>
<div>
<div class="expTit">Email :</div>
<div class="expInde">
{{ coreTable.email }}
</div>
</div>
<div v-if="coreTable.phone != ''">
<div class="expTit">Phone :</div>
<div class="expInde">
{{ coreTable.phone }}
</div>
</div>
<div>
<div class="expTit">ORCID :</div>
<div class="expInde">
<img
src="../../assets/img/orcid.png"
@click="skip_link()"
v-if="coreTable.orcid != ''"
style="width: 20px; cursor: pointer"
/>
<img
src="../../assets/img/orcno.png"
@click="skip_check()"
v-if="coreTable.orcid == ''"
style="width: 20px; cursor: pointer"
/>
</div>
</div>
<div v-if="this.coreTable.google_index != 0">
<div class="expTit">H Index :</div>
<div class="expInde">
<b style="font-size: 20px; color: #006699">{{ this.coreTable.google_index }}</b>
</div>
</div>
<div>
<div class="expTit">Google Scholar profile page :</div>
<div class="expInde">
<b
class="el-icon-check"
v-if="this.coreTable.g_author != ''"
style="font-size: 16px; font-weight: bold; color: #2a9916; margin-right: 5px"
></b>
<a
class="webLink"
style="font-size: 14px; color: #2a9916"
v-if="this.coreTable.g_author != ''"
target="_blank"
:href="'https://scholar.google.it/citations?user=' + this.coreTable.g_author"
>Certified</a
>
<el-button
type="warning"
@click="H_Index"
icon="el-icon-paperclip"
plain
size="mini"
v-if="this.coreTable.g_author == ''"
>Certified</el-button
>
</div>
</div>
<div v-if="this.coreTable.code != ''">
<div class="expTit">
Invitation code
<!-- <el-popover placement="top-start" width="300" trigger="hover"
content="If you invite users to submit, please fill in your invitation code.">
<span slot="reference">
<i class="el-icon-info" style="color: #ef8429;font-size: 18px;cursor: pointer;"></i>
</span>
</el-popover> -->
:
</div>
<div class="expInde" style="display: flex">
<p style="font-weight: bold; color: #006699; margin-right: 10px">{{ this.coreTable.code }}</p>
<!-- <p style="margin: 0 0 0 10px;">(56)</p> -->
<el-button
type="primary"
@click="codeCopy"
icon="el-icon-copy-document"
size="mini"
plain
style="padding: 4px 8px"
>Copy</el-button
>
</div>
</div>
</div>
</el-col>
<el-col :span="9">
<!-- 个人信息 -->
<div class="exponent">
<div v-if="coreTable.technical != ''">
<div class="expTit">Academic title :</div>
<div class="expInde">
{{ coreTable.technical }}
</div>
</div>
<div v-if="coreTable.country != ''">
<div class="expTit">Country :</div>
<div class="expInde">
{{ coreTable.country }}
</div>
</div>
<div v-if="coreTable.website != ''">
<div class="expTit">Website :</div>
<div class="expInde" style="margin-top: 0">
<el-link :href="coreTable.website" target="_blank" type="primary">Personal academic introduction</el-link>
</div>
</div>
<div v-if="coreTable.company != ''">
<div class="expTit">Affiliation :</div>
<div class="expInde">
{{ coreTable.company }}
</div>
</div>
<div v-if="coreTable.field != ''">
<div class="expTit">Field :</div>
<el-popover placement="top-start" width="300" trigger="hover" :content="coreTable.field">
<div class="expInde oveTxtLine" slot="reference">
{{ coreTable.field }}
</div>
</el-popover>
</div>
<div>
<div class="expTit">Resume :</div>
<div class="expInde">
<img
src="../../assets/img/icon_0.png"
alt=""
class="icon_img"
v-if="cvitaTable.length > 0 && cvitaTable != undefined"
/>
<span
style="margin-left: 10px; color: #888; font-size: 13px; vertical-align: text-bottom"
v-if="cvitaTable.length > 0 && cvitaTable != undefined"
>
<i class="el-icon-paperclip"></i>
{{ formatDate(cvitaTable[cvitaTable.length - 1].ctime) }}
</span>
<el-button
type="success"
@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>
</div>
</div>
<!-- <div v-if="starList_mark!=0">
<div class="expTit">
Comment on stars :
</div>
<div class="expInde">
<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-all.png" v-if="starList_mark>8" class="starSty">
<b style="font-size: 15px;color: #b77614;" v-if="starList_mark>8">× {{starList_mark}}</b>
<el-button type="success" @click="openStar()" size="mini"
style="vertical-align: text-bottom;padding: 4px 8px;margin-left: 10px;">
<i class="el-icon-document"></i>
Record
</el-button>
</div>
</div> -->
</div>
</el-col>
<el-col :span="24">
<el-row :gutter="40" style="display: flex">
<el-col :span="6"
></el-col>
<el-col :span="18"
>
<div style="box-sizing: border-box">
<div class="chunking" style="height: auto">
<!-- <el-divider></el-divider> -->
<h2 class="infor_title">Research areas </h2>
<div class="chunkPiece" style="height: auto;padding-top:20px;">
<common-major :userId="coreTable.user_id" @load="getPersonData()" style="position:absolute;top:10px;right:10px;"></common-major>
<div style="margin: 12px 20px 30px 20px; line-height: 24px; font-size: 14px; position: relative">
<div>
<!-- 统计数据 -->
<div class="join_link">
<!-- 如果你想投稿 请点击 -->
<p style="" v-for="(v, i) in majorsList">
<span style="color: #006699; font-weight: bold;margin-right:10px;" >Field {{ i + 1 }}:</span
>{{ v.str }}<i class="el-icon-delete-solid" style="color:#F56C6C !important;margin-left:10px;" @click="handleDeleteMajor(v)"></i>
</p>
<!-- 查看已投稿件列表 -->
</div>
</div>
</div>
</div>
</div>
</div>
</el-col></el-row
>
</el-col>
<el-col :span="24" v-if="!this.usercap.includes('editor')">
<el-row :gutter="40" style="display: flex">
<el-col :span="15">
<!-- 作者信息 -->
<div class="chunking" style="margin-top: 55px">
<!-- <el-divider></el-divider> -->
<h2 class="infor_title">Author</h2>
<div class="chunkPiece">
<div style="margin: 12px 20px 30px 20px; line-height: 24px; font-size: 14px">
<div v-if="this.usercap.includes('author')">
<!-- 统计数据 -->
<div class="numeric" v-if="authorTable.manuscriptNum != undefined">
<!-- <div class="numerItem">
<b @click="JumpPage(1)">0</b>
<p>Obtain<br />certificate</p>
</div> -->
<div class="numerItem">
<b @click="JumpPage(2)">{{ authorTable.manuscriptNum }}</b>
<p>Submitted manuscripts</p>
</div>
<div class="numerItem">
<b @click="JumpPage(3)">{{ authorTable.accept }}</b>
<p>Published articles</p>
</div>
<div class="numerItem">
<b>{{ authorTable.tj }}</b>
<p>Recommended manuscripts</p>
</div>
<div class="numerItem">
<b @click="JumpPage(6)" v-if="reviewTable.successReview">{{ reviewTable.successReview }}</b>
<b @click="JumpPage(6)" v-else>0</b>
<p>Reviewed manuscripts</p>
</div>
<div class="numerItem">
<b @click="JumpPage(4)">{{ authorTable.index }}</b>
<p>Articles of interest</p>
</div>
</div>
<div class="join_link" v-if="!this.usercap.includes('editor')">
<!-- 如果你想投稿 请点击 -->
<p v-if="this.usercap.includes('author')" style="white-space: nowrap">
Click here to <img src="../../assets/img/icon_9.png" alt="" class="icon_img" />
<el-link href="/articleAdd"><b>submit a new manuscript.</b></el-link>
</p>
<!-- 查看已投稿件列表 -->
<p style="white-space: nowrap">
Click here to <img src="../../assets/img/icon_9.png" alt="" class="icon_img" />
<el-link href="/articleList"><b>view the list of your submitted manuscripts.</b> </el-link>
</p>
<!-- 点击增加引用文章 -->
<p style="white-space: nowrap">
Click here to <img src="../../assets/img/icon_9.png" alt="" class="icon_img" />
<el-link>
<b @click="apointVisible = true">add valuable references.</b>
</el-link>
</p>
</div>
</div>
</div>
</div>
</div>
</el-col>
<el-col :span="9">
<!-- 审稿人信息 -->
<div class="chunking" style="margin-top: 55px">
<!-- <el-divider></el-divider> -->
<h2 class="infor_title">Reviewer</h2>
<!-- 加入审稿人 -->
<!-- <el-button type="primary" @click="reviewPoint(1)" v-if="this.usercap.includes('reviewer')"
size="mini" class="infor_edit">
<i class="el-icon-edit"></i>
Edit Reviewer Information
</el-button> -->
<el-button type="warning" @click="reviewPoint(2)" size="mini" class="infor_edit">
<i class="el-icon-plus"></i>
Apply to join the reviewer team
</el-button>
<div class="chunkPiece" :style="{ height: this.usercap.includes('reviewer') ? '85%' : '12%' }">
<div style="margin: 20px 20px 30px 30px; line-height: 24px; font-size: 14px">
<div v-if="this.usercap.includes('reviewer')">
<p style="margin: 5px 0 10px 0; line-height: 26px">
You are already the reviewer of the Journal of
<b v-for="(item, index) in review_journal" style="margin-left: 3px">
{{ item.title }} <span v-if="index != review_journal.length - 1">,</span>
</b>
.
</p>
<p>
You have reviewed
<b class="depresBtn" @click="JumpPage(6)" style="margin-left: 5px">{{
reviewTable.successReview
}}</b>
manuscripts.
</p>
<div class="join_link" v-if="!this.usercap.includes('editor')" style="margin-top: 10px">
<!-- 如果你是审稿人 -->
<p style="white-space: nowrap">
Click to <img src="../../assets/img/icon_9.png" alt="" class="icon_img" />
<el-link href="/peerewer"><b>review the manuscript. </b> </el-link>
</p>
<!-- 查看审稿记录 -->
<p style="white-space: nowrap">
Click to <img src="../../assets/img/icon_9.png" alt="" class="icon_img" />
<el-link href="/perhistory"><b>view your review records. </b></el-link>
</p>
<!-- 如果您想下载审稿证书 -->
<p style="white-space: nowrap">
Click to <img src="../../assets/img/icon_9.png" alt="" class="icon_img" />
<el-link href="/perhistory"><b>view and download review certificates.</b> </el-link>
</p>
</div>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
<div style="height: 60px" v-if="!this.usercap.includes('author') && !this.usercap.includes('reviewer')"></div>
<el-row :gutter="40" style="display: flex">
<el-col :span="12">
<!-- 编委信息 -->
<div class="chunking" style="margin-top: 45px">
<h2 class="infor_title">Editorial Board Member</h2>
<el-button type="warning" size="mini" class="infor_edit" @click="boardPoint(2)">
<i class="el-icon-plus"></i>
Apply to join Editorial Board Member
</el-button>
<div class="chunkPiece" :style="{ height: this.usercap.includes(',board') ? '85%' : '28%' }">
<div style="margin: 20px 0 30px 55px; line-height: 24px; font-size: 14px">
<div v-if="this.usercap.includes(',board')">
<div style="line-height: 30px">
You are already the Editorial Board Member of the Journal of
<p v-for="(item, index) in board_journal">
<b>{{ item.title }}</b>
<!-- <a @click="cerFicte(item)" class="certBtn">
<i class="el-icon-trophy"></i>
Certificate
</a> -->
</p>
</div>
</div>
</div>
</div>
</div>
</el-col>
<el-col :span="12">
<!-- 青年科学家信息 -->
<div class="chunking" style="margin-top: 45px">
<h2 class="infor_title">Young Scientist</h2>
<el-button
type="warning"
size="mini"
class="infor_edit"
@click="youthPoint(2)"
v-if="!this.usercap.includes('youth')"
>
<i class="el-icon-plus"></i>
Apply to join Young Scientist
</el-button>
<div class="chunkPiece" :style="{ height: this.usercap.includes('yboard') ? '85%' : '28%' }">
<div style="margin: 20px 0 30px 55px; line-height: 24px; font-size: 14px">
<div v-if="this.usercap.includes('yboard')">
<div style="line-height: 30px">
You are already the Young Scientist of the Journal of
<div 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>
<p v-if="item.arrowMark == 1">
<span v-for="ihxd in item.sd" style="display: block">
{{ 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">
Submitted articles :
<b style="color: #006699; font-size: 16px; margin: 0 0 0 5px">{{
item.article_num
}}</b>
</font>
<font style="display: block">
Reviewed articles :
<b style="color: #006699; font-size: 16px; margin: 0 0 0 5px">{{
item.reviewer_num
}}</b>
</font>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
<div style="height: 30px" v-if="!this.usercap.includes(',board') || !this.usercap.includes('yboard')"></div>
</el-col>
<el-col :span="24" v-if="this.usercap.includes('editor')" style="margin-top: 40px">
<div style="border: 2px solid #00669926; padding: 20px; border-radius: 10px; background-color: #fff">
<div style="border-bottom: 2px solid #00669926; padding: 0 0 20px 0; margin: 0 0 20px 0">
<el-badge :value="this.usermsgList.length" :hidden="this.usermsgList.length > 0 ? false : true" class="item">
<span>{{ $t('home.usermsg') }}</span>
</el-badge>
<el-button type="warning" @click="oneRead()" size="mini" style="float: right">
<i class="el-icon-document-checked"></i>
Read all messages
</el-button>
</div>
<el-table :data="usermsgList" border class="msg-table" empty-text="New messages (0)">
<el-table-column label="Date" width="150">
<template slot-scope="scope">
<el-button type="text">{{ formatDate(scope.row.ctime) }}</el-button>
</template>
</el-table-column>
<el-table-column label="Message" prop="content"></el-table-column>
<el-table-column label="" width="80" align="center">
<template slot-scope="scope">
<el-button type="text" @click="showNewMsg(scope.row)">To See</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-col>
<el-col :span="24">
<el-row :gutter="30" style="margin-top: 10px">
<div
v-if="this.usercap.includes('editor')"
style="display: flex; margin: 40px 20px 20px 20px; border-bottom: 2px solid #00669926"
>
<h4 style="float: left; width: 50%; padding: 0 0 20px 0">User guide</h4>
<h4 style="float: left; width: 50%; padding: 0 0 20px 100px">Contact us</h4>
</div>
<div style="display: flex">
<!-- 引导指向 -->
<div class="new_scard" style="width: 49.5%" v-show="userrole == 'reviewer' || userrole == 1">
<div class="top-content">
<span>
<p>Thank you for choosing the TMR Publishing Group online manuscript submission and tracking system.</p>
<p>Prior to submission, we kindly request that you review our instructions for authors.</p>
<p>
To submit your manuscript, please
<el-link type="primary" href="/articleAdd"> click here</el-link>.
</p>
<el-divider></el-divider>
<p>
If you encounter any issues, please don't hesitate to reach out to us at publisher@tmrjournals.com.
</p>
</span>
</div>
</div>
<p style="background-color: #00669926; width: 2px; margin: 0 30px"></p>
<div class="new_scard" style="width: 49.5%" v-if="this.usercap.includes('editor')">
<!-- 意见反馈,联系我们 -->
<p>2/77 Prince regent drive</p>
<p style="margin: 5px 0">Half moon bay, Auckland 2012</p>
<p>New Zealand</p>
<p style="margin: 5px 0">
<b style="color: #666; font-size: 14px; cursor: text">Telephone number :</b> +64 02108293806
</p>
<p><b style="color: #666; font-size: 14px; cursor: text">Email :</b> publisher@tmrjournals.com</p>
</div>
</div>
</el-row>
<el-row :gutter="30" style="margin-top: 15px">
<div
v-if="!this.usercap.includes('editor')"
style="display: flex; margin: 0 20px 20px 20px; border-bottom: 2px solid #00669926"
>
<h4 style="width: 715px; padding: 0 0 20px 0">Feedback and Suggestions</h4>
<h4 style="width: 13%"></h4>
<h4 style="width: 292px; padding: 0 0 20px 1px">Contact us</h4>
</div>
<div style="display: flex">
<div class="new_scard" v-if="!this.usercap.includes('editor')">
<el-form ref="probleform" :model="proForm" :rules="rules" label-width="170px">
<div style="display: flex">
<div>
<el-form-item label="Problem classification :" prop="problem_id">
<el-select v-model="proForm.problem_id" filterable placeholder="Please select">
<el-option
v-for="item in dysfuncte"
:key="item.problem_id"
:label="item.problem_title"
:value="item.problem_id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="Problem description :" prop="suggest_desc">
<el-input v-model="proForm.suggest_desc" type="textarea" :rows="3" style="width: 250px">
</el-input>
</el-form-item>
</div>
<div>
<el-form-item label="Screenshots :" label-width="130px">
<el-upload
class="avatar-uploader"
:action="baseUrl + 'api/Suggest/upImg'"
:show-file-list="false"
name="img"
:on-success="handleAvatarSuccess"
:on-error="handleAvatarError"
:before-upload="beforeAvatarUpload"
>
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
</div>
</div>
<div style="text-align: center; margin-left: 100px">
<el-button type="primary" @click="onSubmit">Submit</el-button>
</div>
</el-form>
</div>
<div style="width: 13%">
<p style="background-color: #00669926; width: 2px; height: 100%; margin: 0 auto"></p>
</div>
<div class="new_scard" v-if="!this.usercap.includes('editor')">
<!-- <p>
New Zealand
<img src="../../assets/img/New_Z.png"
style="width: 45px;margin: 0 0 0 15px;vertical-align: middle;">
</p> -->
<p style="margin: 10px 0; white-space: nowrap">
<b style="color: #666; font-size: 14px; cursor: text">Telephone number :</b> +64 02108293806
</p>
<p style="white-space: nowrap">
<b style="color: #666; font-size: 14px; cursor: text">Email:</b>
publisher@tmrjournals.com
</p>
</div>
</div>
</el-row>
</el-col>
</el-row>
<!-- 修改密码弹出框 -->
<el-dialog title="Change Password" :visible.sync="pwdVisible" width="500px">
<el-form :model="pwdForm" :rules="rules" ref="pwd_form" label-width="150px">
<el-form-item label="Old password :" prop="password">
<el-input type="password" placeholder="Please enter..." v-model="pwdForm.password"></el-input>
</el-form-item>
<el-form-item label="New password :" prop="new_password">
<el-input type="password" placeholder="Please enter..." v-model="pwdForm.new_password"> </el-input>
</el-form-item>
<el-form-item label="Confirm password :" prop="re_password">
<el-input type="password" placeholder="Please enter..." v-model="pwdForm.re_password"> </el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="pwdVisible = false">Cancel</el-button>
<el-button type="primary" @click="save_pwd(pwdForm)">OK</el-button>
</span>
</el-dialog>
<!-- 获得证书出框 -->
<el-dialog title="Obtain certificate" :visible.sync="obertVisible" width="800px">
<div>
<el-tabs v-model="activeObert">
<el-tab-pane label="Reviewer" name="first">
<div class="diploma">
<h2>2008</h2>
<div>
<!-- <el-image ref="preview" style="width: 94%;height: 140px;"
src="https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg"
:preview-src-list="srcPicList" @click="largePic()">
</el-image> -->
<p>Traditional Medicine Research</p>
</div>
<div>
<img src="../../assets/img/userImg_.jpg" alt="" @click="largePic()" />
<p>Traditional Medicine Research</p>
</div>
<div>
<img src="../../assets/img/userImg_.jpg" alt="" @click="largePic()" />
<p>Traditional Medicine Research</p>
</div>
<div>
<img src="../../assets/img/userImg_.jpg" alt="" />
<p>Traditional Medicine Research</p>
</div>
</div>
</el-tab-pane>
<el-tab-pane label="Editorial Board Member" name="second">配置管理</el-tab-pane>
<el-tab-pane label="Young Scientist" name="third">角色管理</el-tab-pane>
</el-tabs>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="obertVisible = false">OK</el-button>
</span>
</el-dialog>
<el-image-viewer v-if="imgViewerVisible" :on-close="closeImgViewer" :url-list="srcPicList" />
<!-- 绑定谷歌账号弹出框 -->
<el-dialog title="Bind Google account" :visible.sync="bindVisible" width="550px">
<p style="padding: 0 0 20px 5px; font-weight: bold">Please select one and press the OK button.</p>
<div
v-for="item in geogleList"
:class="bindForm.g_author == item.author_id ? 'gugeList gu_col' : 'gugeList'"
@click="choseGego(item)"
>
<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>
<span slot="footer" class="dialog-footer">
<el-button @click="bindVisible = false">Cancel</el-button>
<el-button type="primary" @click="save_bind(bindForm)">OK</el-button>
</span>
</el-dialog>
<!-- 个人简历弹出框 -->
<el-dialog title="" :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;
tipVisible = false;
"
>Close</el-button
>
</span>
</el-dialog>
<!-- 星级弹出框 -->
<el-dialog title="Rating probability" :visible.sync="starVisible" :close-on-click-modal="false" width="700px">
<el-button type="warning" @click="explainVisible = true" style="float: right; margin: -10px 15px 20px 0">
<i class="el-icon-document"></i>
Detailed instructions
</el-button>
<br clear="both" />
<div v-for="(item, index) in starTable" class="ratList">
<div style="margin: 0 0 5px 0">{{ item.title }}</div>
<div>
<span style="font-size: 14px; color: #999">Time :</span>
{{ item.time }}
</div>
<div class="ratNum">+ {{ item.num }}</div>
</div>
<div class="pagination">
<el-pagination
background
layout="total, prev, pager, next"
:current-page="starQuery.pageIndex"
:page-size="starQuery.pageSize"
:total="starTotal"
@current-change="handleStarChange"
>
</el-pagination>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="starVisible = false">Cancel</el-button>
</span>
</el-dialog>
<!-- 细则弹出框 -->
<el-dialog title="Detailed instructions" :visible.sync="explainVisible" :close-on-click-modal="false" width="450px">
<p>123456</p>
<span slot="footer" class="dialog-footer">
<el-button @click="explainVisible = false">Cancel</el-button>
</span>
</el-dialog>
<!-- 引用弹出框 -->
<el-dialog title="Citing records" :visible.sync="apointVisible" width="475px">
<el-form :model="apoinForm" :rules="rules" ref="apoint_Form" label-width="125px">
<el-form-item label="Journal :" prop="journal_id">
<el-select v-model="apoinForm.journal_id" placeholder="Please select a journal" style="width: 290px">
<el-option
v-for="item in pointJour_list"
:label="item.title"
:key="item.journal_id"
:value="item.journal_id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="My paper doi :" prop="local_doi">
<el-input type="text" placeholder="Please enter..." v-model="apoinForm.local_doi" style="width: 290px"></el-input>
</el-form-item>
<el-form-item label="Cited form :" prop="pub_doi">
<span>10.53388/</span>
<el-input
type="text"
placeholder="Please enter..."
v-model="apoinForm.pub_doi"
style="width: 215px; margin-left: 10px"
></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="apointVisible = false">Cancel</el-button>
<el-button type="primary" @click="onSubmit_apoin(apoinForm)">Save</el-button>
</span>
</el-dialog>
<!-- 个人信息弹出框 -->
<el-dialog title="Change Essential Information" :visible.sync="coreVisible" width="780px">
<el-form :model="coreForm" :rules="rules" ref="core_Form" label-width="140px">
<el-form-item label="Account :" prop="account">
<span>{{ coreForm.account }}</span>
</el-form-item>
<el-form-item label="Email :">
<span>{{ coreForm.email }}</span>
</el-form-item>
<!-- <el-form-item label="Change Password :">
<el-button type="success" @click="psw_word" plain>Change Password</el-button>
</el-form-item> -->
<el-form-item label="Real name :" prop="realname">
<el-input type="text" placeholder="Please enter..." v-model="coreForm.realname" style="width: 320px"></el-input>
</el-form-item>
<!-- <el-form-item label="Localname :" prop="localname">
<el-input type="text" placeholder="Please enter..." v-model="coreForm.localname"
style="width: 320px;"></el-input>
</el-form-item> -->
<el-form-item label="Phone :">
<!-- <el-input type="text" placeholder="Please enter..." v-model="coreForm.reviewer_id" style="width: 80px;margin-right: 10px;"></el-input> -->
<el-input type="text" placeholder="Please enter..." v-model="coreForm.phone" style="width: 320px"> </el-input>
</el-form-item>
<!-- <el-form-item label="Gender :" prop="gender">
<el-radio-group v-model="coreTable.gender">
<el-radio :label="1">Male</el-radio>
<el-radio :label="2">Female</el-radio>
</el-radio-group>
</el-form-item>-->
<el-form-item label="Academic title :" prop="technical">
<el-select
v-model="coreForm.technical"
filterable
placeholder="Please select a title"
value-key="groupID"
style="width: 320px"
>
<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="Country :" prop="country">
<el-select
v-model="coreForm.country"
filterable
placeholder="Please select a country"
value-key="groupID"
style="width: 320px"
>
<el-option
v-for="item in df_country"
:label="item.en_name + ' (' + item.zh_name + ')'"
:key="item.en_name"
:value="item.en_name"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="Website :" prop="website">
<el-input type="text" placeholder="eg:http://..." v-model="coreForm.website" style="width: 320px"> </el-input>
</el-form-item>
<!-- <el-form-item prop="major_a">
<span slot="label">
<i style="color: #F56C6C;margin-right: 4px;">*</i>
Research areas
</span>
<common-major v-if="coreVisible"></common-major>
<el-select v-model="coreForm.major_a" placeholder="Please select major" @change="majorChange(1)"
style="width: 180px">
<el-option v-for="item in majors_a" :key="item.major_id"
:label="item.major_title+' ('+item.nickname+')'" :value="item.major_id"></el-option>
</el-select>
<el-select v-model="coreForm.major_b" placeholder="Please select major" v-if="majors_b!=''"
@change="majorChange(2)" style="margin:0 15px;width: 180px">
<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+' ('+item.nickname+')'" :value="item.major_id"></el-option>
</el-select>
<el-select v-model="coreForm.major_c" placeholder="Please select major" v-if="majors_c!=''"
style="width: 180px" @change="majorChange(3)">
<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+' ('+item.nickname+')'" :value="item.major_id"></el-option>
</el-select>
</el-form-item> -->
<el-form-item label="Field :" prop="field">
<el-input v-model="coreForm.field" type="textarea" style="width: 570px" autosize></el-input>
</el-form-item>
<el-form-item label="Introduction :">
<el-input v-model="coreForm.introduction" type="textarea" style="width: 570px" autosize> </el-input>
</el-form-item>
<el-form-item label="Affiliation :" prop="company">
<el-input v-model="coreForm.company" style="width: 570px"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="coreVisible = false">Cancel</el-button>
<el-button type="primary" @click="onSubmit_core(coreForm)">Save</el-button>
</span>
</el-dialog>
<!-- 申请审稿人出框 -->
<el-dialog title="Apply Reviewer team" :visible.sync="reviewVisible" width="450px">
<el-form :model="reviewForm" :rules="rules" ref="review_Form" label-width="90px">
<el-form-item label="Journal :" prop="journal_id">
<el-select v-model="reviewForm.journal_id" placeholder="Please select a journal" style="width: 300px">
<el-option
v-for="item in jourReview_list"
:label="item.title"
:key="item.journal_id"
:value="item.journal_id"
></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="reviewVisible = false">Cancel</el-button>
<el-button type="primary" @click="onSubmit_review(reviewForm)">OK</el-button>
</span>
</el-dialog>
<!-- 申请编委弹出框 -->
<el-dialog title="Apply Editorial board member" :visible.sync="boardVisible" width="450px">
<el-form :model="boardForm" :rules="rules" ref="board_Form" label-width="90px">
<el-form-item label="Journal :" prop="journal_id">
<el-select v-model="boardForm.journal_id" placeholder="Please select a journal" style="width: 300px">
<el-option
v-for="item in jourBord_list"
:label="item.title"
:key="item.journal_id"
:value="item.journal_id"
></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="boardVisible = false">Cancel</el-button>
<el-button type="primary" @click="onSubmit_board(boardForm)">OK</el-button>
</span>
</el-dialog>
<!-- 申请青年科学家弹出框 -->
<el-dialog title="Apply Young Scientist" :visible.sync="youthVisible" width="450px">
<el-form :model="youthForm" :rules="rules" ref="youth_Form" label-width="100px">
<el-form-item label="Journal :" prop="journal_id">
<el-select v-model="youthForm.journal_id" placeholder="Please select a journal" style="width: 300px">
<el-option
v-for="item in jourYoth_list"
:label="item.title"
:key="item.journal_id"
:value="item.journal_id"
></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="youthVisible = false">Cancel</el-button>
<el-button type="primary" @click="onSubmit_youth(youthForm)">OK</el-button>
</span>
</el-dialog>
<!-- 申请补全信息弹出框 -->
<el-dialog title="Tip" :visible.sync="tipVisible" width="550px">
<p style="font-size: 15px; line-height: 24px; word-wrap: break-word; word-break: normal">{{ tipTable.message }}</p>
<span slot="footer" class="dialog-footer">
<el-button @click="tipVisible = false">Cancel</el-button>
<el-button type="primary" @click="openCoreHand()">Supplementary Information</el-button>
<el-button type="primary" @click="openCVita()">Supplementary CV.</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>
import Schart from 'vue-schart';
import bus from '../common/bus';
export default {
name: 'dashboard',
data() {
return {
user_id: localStorage.getItem('U_id'),
username: localStorage.getItem('U_name'),
userrole: localStorage.getItem('U_status'),
usercap: localStorage.getItem('U_role'),
baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl,
activeObert: 'first',
userdata: '',
proForm: {
user_id: localStorage.getItem('U_id'),
suggest_url: ''
},
imageUrl: '',
dysfuncte: [],
pictureUrl: '',
coreTable: {},
authorTable: {},
reviewTable: {},
obertTable: {},
cvitaTable: [],
starTable: [
{
title: 'You are already the reviewer of the Journal',
time: '2012-05-56',
num: '20'
},
{
title: 'You are already the reviewer of the Journal',
time: '2012-05-56',
num: '20'
},
{
title: 'You are already the reviewer of the Journal',
time: '2012-05-56',
num: '20'
}
],
reviewVisible: false,
coreVisible: false,
bindVisible: false,
boardVisible: false,
youthVisible: false,
obertVisible: false,
imgViewerVisible: false,
cvitaVisible: false,
starVisible: false,
apointVisible: false,
explainVisible: false,
cerVisible: false,
IMG_Url: '',
coreForm: {},
bindForm: {
g_author: '',
g_website: ''
},
reviewForm: {
journal_id: ''
},
boardForm: {
journal_id: ''
},
youthForm: {
journal_id: ''
},
cvitaForm: {},
apoinForm: {
journal_id: ''
},
tipTable: {},
tipVisible: false,
srcPicList: [],
majors_a: [],
majors_b: [],
majors_c: [],
pwdForm: {
account: localStorage.getItem('U_name'),
password: '',
new_password: '',
re_password: ''
},
geogleList: [],
review_journal: [],
board_journal: [],
youth_journal: [],
df_country: [],
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'
}
],
fileL_pdf1: [],
majorsList: [],
pwdVisible: false,
usermsgList: [],
jourReview_list: [],
jourBord_list: [],
jourYoth_list: [],
pointJour_list: [],
starList: [],
starList_mark: 0,
starQuery: {
pageIndex: 1,
pageSize: 10
},
starTotal: 0,
rules: {
journal_id: [
{
required: true,
message: 'Please select a journal',
trigger: 'blur'
}
],
problem_id: [
{
required: true,
message: 'Please select the question type',
trigger: 'blur'
}
],
suggest_desc: [
{
required: true,
message: 'Please enter a description of the problem',
trigger: 'blur'
}
],
email: [
{
required: true,
message: 'Please enter email',
trigger: 'blur'
},
{
validator: function (rule, value, callback) {
if (/^[-.-_A-Za-z0-9]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(value) == false) {
callback(new Error('Please enter the correct email format'));
} else {
callback();
}
},
trigger: 'blur'
}
],
phone: [
{
required: true,
message: 'Please enter phone',
trigger: 'blur'
},
{
validator: function (rule, value, callback) {
if (/^1[34578]\d{9}$/.test(value) == false) {
callback(new Error('Please enter the correct phone format'));
} else {
callback();
}
},
trigger: 'blur'
}
],
password: [
{
required: true,
message: 'Please enter old password',
trigger: 'blur'
}
],
new_password: [
{
required: true,
message: 'Please enter new password ',
trigger: 'blur'
}
],
re_password: [
{
required: true,
message: 'Please enter the new password again',
trigger: 'blur'
}
],
gender: [
{
required: true,
message: 'Please select gender',
trigger: 'blur'
}
],
// major_a: [{
// required: true,
// message: 'Please select major',
// trigger: 'blur'
// }],
technical: [
{
required: true,
message: 'Please select title',
trigger: 'blur'
}
],
country: [
{
required: true,
message: 'Please select country',
trigger: 'blur'
}
],
field: [
{
required: true,
message: 'Please input field',
trigger: 'blur'
}
],
company: [
{
required: true,
message: 'Please input affiliation',
trigger: 'blur'
}
],
realname: [
{
required: true,
message: 'Please input real name',
trigger: 'blur'
}
],
pub_doi: [
{
required: true,
message: 'Please input DOI',
trigger: 'blur'
}
],
local_doi: [
{
required: true,
message: 'Please input DOI',
trigger: 'blur'
}
]
}
};
},
created: function () {
this.getFeedback();
this.getPersonData();
this.getCVitaData();
this.initUserMsg();
this.getPointData();
this.getReviewList();
this.getYouthList();
this.getBoardList();
},
components: {
Schart,
'el-image-viewer': () => import('element-ui/packages/image/src/image-viewer')
},
computed: {},
methods: {
handleDeleteMajor(v) {
this.$confirm('Are you sure you want to delete this Field ?', 'Tip', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/User/delUserMajor', {
mtu_id: v.mtu_id
})
.then((res) => {
if (res.code == 0) {
this.getPersonData();
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
})
.catch(() => {});
},
// 新消息
initUserMsg() {
this.$api
.post('api/User/getUserMsg', {
account: this.username
})
.then((res) => {
this.usermsgList = res;
});
},
// 一键已读
oneRead() {
// 二次确认删除
this.$confirm('Are you sure you want to read all messages?', 'Tip', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/Article/allEditorMsgReaded', {
editor_id: this.user_id
})
.then((res) => {
if (res.code == 0) {
this.initUserMsg();
this.$message.success('Successfully read all messages!');
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
})
.catch(() => {});
},
// 跳转
showNewMsg(row) {
this.$api
.post('api/User/changeMsgState', {
id: row.user_msg_id
})
.then((res) => {
this.initUserMsg();
this.$router.push(row.url);
});
},
// 意见反馈
getFeedback() {
this.$api
.post('api/Suggest/getProblem', this.proForm)
.then((res) => {
if (res.code == 0) {
this.dysfuncte = res.data;
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
},
onSubmit() {
this.$refs.probleform.validate((valid) => {
if (valid) {
this.$api
.post('api/Suggest/addSuggest', this.proForm)
.then((res) => {
if (res.code == 0) {
this.$refs.probleform.resetFields();
this.$message.success('Comments submitted successfully!');
this.$router.push('/comOpinionSuccess');
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
} else {
this.$message.error('Failed to submit. Please ensure the integrity of the information!');
return false;
}
});
},
// orcid
skip_link() {
window.open('https://orcid.org/' + this.coreTable.orcid);
},
skip_check() {
window.open(
'https://orcid.org/oauth/authorize?client_id=APP-PKF0BGRP6DWM6FUB&response_type=code&scope=/authenticate&redirect_uri=https://submission.tmrjournals.com/orcidBind'
);
},
// 上传头像
unplIcon() {
this.$refs['upIconIMg'].$refs['upload-inner'].handleClick();
},
//上传图片
handleAvatarSuccess(res, file) {
if (res.code == 0) {
this.proForm.suggest_url = res.data.icon;
} else {
this.$message.error(res.msg);
}
this.imageUrl = URL.createObjectURL(file.raw);
},
handleAvatarError(res, file) {
// this.$message.error(res);
},
beforeAvatarUpload(file) {
const isLt2M = file.size / 1024 / 1024 < 1;
if (!isLt2M) {
this.$message.error('The picture size cannot exceed 1M!');
}
return isLt2M;
},
// 重新生成H指数
getHindex() {
this.$api
.post('api/User/googleGetIndex', {
user_id: this.coreTable.user_id
})
.then((res) => {
if (res.code == 0) {
this.coreTable.hindex = 1;
} else {
this.coreTable.hindex = 'no';
}
})
.catch((err) => {
this.$message.error(err);
});
},
// 获取简历列表
getCVitaData() {
this.$api
.post('api/Ucenter/getUserInfo', {
user_id: this.user_id
})
.then((res) => {
if (res.code == 0) {
this.cvitaTable = res.data.cvs;
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
},
// 简历弹出层
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.getCVitaData();
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
})
.catch(() => {});
},
// 星级弹出层
openStar() {
this.starVisible = true;
},
getStarData() {},
// 获取引用列表
getPointData() {
this.$api
.post('api/Journal/getAllJournal')
.then((res) => {
if (res.code == 0) {
this.pointJour_list = res.data.journals;
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
},
// 保存引用星级
onSubmit_apoin() {
this.$refs.apoint_Form.validate((valid) => {
if (valid) {
this.apoinForm.pub_doi = '10.53388/' + this.apoinForm.pub_doi;
this.$api
.post('api/User/addIndexApply', this.apoinForm)
.then((res) => {
if (res.code == 0) {
this.apointVisible = false;
this.$message.success('Submitted successfully!');
this.getPersonData();
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
} else {
this.$message.error('Failed to submit. Please ensure the integrity of the information!');
return false;
}
});
},
// 保存分页导航
handleStarChange(val) {
this.$set(this.starQuery, 'pageIndex', val);
this.getStarData();
},
// 获取个人信息,数据列表
getPersonData() {
const loading = this.$loading({
lock: true,
text: 'Loading...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
this.$api
.post('api/Ucenter/getUserInfo', {
user_id: this.user_id
})
.then((res) => {
if (res.code == 0) {
this.coreTable = res.data.baseInfo;
this.majorsList=res.data.baseInfo.majors;
this.cvitaForm.user_id = res.data.baseInfo.user_id;
this.reviewForm.user_id = res.data.baseInfo.user_id;
this.boardForm.user_id = res.data.baseInfo.user_id;
this.youthForm.user_id = res.data.baseInfo.user_id;
this.apoinForm.user_id = res.data.baseInfo.user_id;
if (res.data.baseInfo.icon != '') {
this.pictureUrl = this.mediaUrl + 'usericon/' + res.data.baseInfo.icon;
} else {
this.pictureUrl = '';
}
if (res.data.asAuthor) {
this.authorTable = res.data.asAuthor;
}
if (res.data.asReviewer) {
this.review_journal = res.data.asReviewer.journal;
this.reviewTable = res.data.asReviewer;
if (!this.usercap.includes('reviewer')) {
localStorage.setItem('U_role', this.usercap + ',reviewer');
}
}
if (res.data.asBoard) {
this.board_journal = res.data.asBoard;
if (!this.usercap.includes(',board')) {
localStorage.setItem('U_role', this.usercap + ',board');
}
}
if (res.data.Yboard) {
this.youth_journal = res.data.Yboard;
for (let i = 0; i < this.youth_journal.length; i++) {
if (i == 0) {
this.youth_journal[i].arrowMark = 1;
} else {
this.youth_journal[i].arrowMark = 0;
}
}
if (!this.usercap.includes('yboard')) {
localStorage.setItem('U_role', this.usercap + ',yboard');
}
}
this.getScoreData();
loading.close();
} else {
loading.close();
this.$message.error(res.msg);
}
})
.catch((err) => {
loading.close();
this.$message.error(err);
});
this.$api
.post('api/Reviewer/getCountrys')
.then((res) => {
this.df_country = res.countrys;
})
.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);
}
},
// 证书弹出层
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();
},
// 统计图跳转
JumpPage(e) {
if (e == 1) {
// this.obertVisible = true
} else if (e == 2) {
this.$router.push({
path: 'articleList'
});
} else if (e == 3) {
this.$router.push({
path: 'articleList'
});
} else if (e == 4) {
// this.$router.push({
// path: 'perhistory'
// });
} else if (e == 6) {
this.$router.push({
path: 'peerewer'
});
}
},
// 大图预览
largePic() {
this.srcPicList = [];
this.srcPicList.push('https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg');
// this.$refs.preview.clickHandler()
this.imgViewerVisible = true;
const m = (e) => {
e.preventDefault();
};
document.body.style.overflow = 'hidden';
document.addEventListener('touchmove', m, false); // 禁止页面滑动
},
closeImgViewer() {
this.imgViewerVisible = false;
const m = (e) => {
e.preventDefault();
};
document.body.style.overflow = 'auto';
document.removeEventListener('touchmove', m, true);
},
// 点击修改密码
psw_word() {
this.pwdVisible = true;
},
// 点击提交密码
save_pwd(pwdForm) {
this.$refs.pwd_form.validate((valid) => {
if (valid) {
if (pwdForm.new_password == pwdForm.re_password) {
this.$api
.post('master/Admin/changepasswd', this.pwdForm)
.then((res) => {
if (res.code == 0) {
this.$message.success('Password modified successfully!');
this.pwdVisible = false;
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
} else {
this.$message.error('The two new password entries are inconsistent!');
}
} else {
this.$message.error('error submit!!');
return false;
}
});
},
// 点击绑定谷歌账号
H_Index() {
const loading = this.$loading({
lock: true,
text: 'Loading...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
this.$api
.post('api/User/googleGetAuthor', {
user_id: this.coreTable.user_id
})
.then((res) => {
if (res.code == 0) {
this.geogleList = res.data.authors;
this.bindVisible = true;
this.$forceUpdate();
loading.close();
} else {
this.$message.error('No corresponding data!');
loading.close();
}
})
.catch((err) => {
this.$message.error(err);
loading.close();
});
},
// 选择谷歌账号
choseGego(e) {
this.bindForm.g_author = e.author_id;
this.bindForm.g_website = e.link;
this.bindForm.user_id = this.coreTable.user_id;
this.$forceUpdate();
},
// 保存谷歌账号
save_bind() {
if (this.bindForm.g_author == '') {
this.$message.error('Please select one!');
return;
}
this.$api
.post('api/User/googleBindAuthor', this.bindForm)
.then((res) => {
if (res.code == 0) {
this.getHindex();
this.bindVisible = false;
this.$message.success('Successfully modified personal index');
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
},
// 复制邀请码
codeCopy() {
var input = document.createElement('input'); // 创建input对象
input.value = this.coreTable.code; // 设置复制内容
document.body.appendChild(input); // 添加临时实例
input.select(); // 选择实例内容
document.execCommand('Copy'); // 执行复制
document.body.removeChild(input); // 删除临时实例
this.$message.success('Invitation code copied successfully!');
},
// 个人信息弹出框
openCoreHand() {
this.coreForm = JSON.parse(JSON.stringify(this.coreTable));
this.fileL_pdf1 = [];
if (this.coreForm.qualifications != '') {
this.fileL_pdf1 = [{}];
this.fileL_pdf1[0].name = 'reviewerCV';
this.fileL_pdf1[0].url = this.mediaUrl + 'reviewer/' + this.coreForm.qualifications;
}
this.coreForm.majorList = [];
if (this.coreTable.majorshu != '' && this.coreTable.majorshu != undefined) {
if (typeof this.coreTable.majorshu == 'number') {
this.coreForm.majorList.push(this.coreTable.majorshu);
} else {
this.coreForm.majorList = this.coreTable.majorshu.split(',');
}
}
this.$nextTick(() => {
this.jiLInaoan();
this.coreVisible = true;
});
},
// 点击提交个人基本信息
onSubmit_core(coreForm) {
this.$refs.core_Form.validate((valid) => {
if (valid) {
this.$api
.post('api/Ucenter/updateUserInfo', this.coreForm)
.then((res) => {
if (res.code == 0) {
this.$message.success('Personal information modified successfully!');
this.coreVisible = false;
this.tipVisible = false;
this.getPersonData();
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
} else {
this.$message.error('error submit!!');
return false;
}
});
},
// 审稿人可申请的期刊
getReviewList() {
this.$api
.post('api/Journal/getJournalOutReviewer', {
username: this.username
})
.then((res) => {
if (res.code == 0) {
this.jourReview_list = res.data.journals;
}
})
.catch((err) => {
console.log(err);
});
},
// 审稿人弹出框
reviewPoint(e) {
if (e == 2) {
this.$api
.post('api/Ucenter/checkApply', {
user_id: this.user_id,
type: 1
})
.then((res) => {
if (res.code == 0) {
this.reviewForm.journal_id = '';
this.reviewVisible = true;
} else {
// 提示完善信息
this.tipVisible = true;
this.tipTable.message = res.msg;
}
})
.catch((err) => {
console.log(err);
});
} else {
this.reviewVisible = true;
}
},
// 点击提交审稿人信息
onSubmit_review(reviewForm) {
this.$refs.review_Form.validate((valid) => {
if (valid) {
this.$api
.post('api/Ucenter/applyReviewer', this.reviewForm)
.then((res) => {
if (res.code == 0) {
this.reviewVisible = false;
this.$confirm(
'Your Reviewer application has been approved. The editor will be in touch with you soon.',
'',
{
showCancelButton: false,
type: 'success'
}
)
.then(() => {})
.catch(() => {});
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
} else {
this.$message.error('error submit!!');
return false;
}
});
},
// 编委可申请的期刊
getBoardList() {
this.$api
.post('api/Ucenter/getCanApplyJournal', {
user_id: this.user_id
})
.then((res) => {
if (res.code == 0) {
this.jourBord_list = res.data.journals;
}
})
.catch((err) => {
console.log(err);
});
},
// 编委弹出框
boardPoint() {
// 判断
this.$api
.post('api/Ucenter/checkApply', {
user_id: this.user_id,
type: 3
})
.then((res) => {
if (res.code == 0) {
this.boardForm.journal_id = '';
this.boardVisible = true;
} else {
// 提示完善信息
this.tipVisible = true;
this.tipTable.message = res.msg;
}
})
.catch((err) => {
console.log(err);
});
},
// 点击提交编委信息
onSubmit_board(boardForm) {
this.$refs.board_Form.validate((valid) => {
if (valid) {
this.$api
.post('api/Ucenter/applyBoard', this.boardForm)
.then((res) => {
if (res.code == 0) {
this.boardVisible = false;
this.$confirm(
'Your Editorial Board application has been approved. The editor will be in touch with you soon.',
'',
{
showCancelButton: false,
type: 'success'
}
)
.then(() => {})
.catch(() => {});
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
} else {
this.$message.error('error submit!!');
return false;
}
});
},
// 青年科学家可申请的期刊
getYouthList() {
this.$api
.post('api/Ucenter/getCanApplyYjournal', {
user_id: this.user_id
})
.then((res) => {
if (res.code == 0) {
this.jourYoth_list = res.data.journals;
}
})
.catch((err) => {
console.log(err);
});
},
// 青年科学家弹出框
youthPoint() {
// 判断
this.$api
.post('api/Ucenter/checkApply', {
user_id: this.user_id,
type: 2
})
.then((res) => {
if (res.code == 0) {
this.youthForm.journal_id = '';
this.youthVisible = true;
} else {
// 提示完善信息
this.tipVisible = true;
this.tipTable.message = res.msg;
}
})
.catch((err) => {
console.log(err);
});
},
// 点击提交青年科学家信息
onSubmit_youth(youthForm) {
this.$refs.youth_Form.validate((valid) => {
if (valid) {
this.$api
.post('api/Ucenter/applyYboard', this.youthForm)
.then((res) => {
if (res.code == 0) {
this.youthVisible = false;
this.$confirm(
'Your Young Scientist application has been approved. The editor will be in touch with you soon.',
'',
{
showCancelButton: false,
type: 'success'
}
)
.then(() => {})
.catch(() => {});
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
} else {
this.$message.error('error submit!!');
return false;
}
});
},
// 初始化级联
jiLInaoan() {
this.$api
.post('api/Ucenter/getMajor', {
major_id: 1
})
.then((res) => {
this.majors_a = res.data.major.children;
if (this.coreForm.majorList[0] != undefined) {
this.coreForm.major_a = Number(this.coreForm.majorList[0]);
this.$api
.post('api/Ucenter/getMajor', {
major_id: this.coreForm.major_a
})
.then((res) => {
this.majors_b = res.data.major.children;
this.majors_c = [];
this.coreForm.major_b = '';
this.coreForm.major_c = '';
this.majorChange_panduan();
if (this.coreForm.majorList[1] != undefined) {
this.coreForm.major_b = Number(this.coreForm.majorList[1]);
this.$api
.post('api/Ucenter/getMajor', {
major_id: this.coreForm.major_b
})
.then((ref) => {
if (ref.data.major.children.length != 0) {
this.majors_c = ref.data.major.children;
this.majorChange_panduan();
if (this.coreForm.majorList[2] != undefined) {
this.coreForm.major_c = Number(this.coreForm.majorList[2]);
this.majorChange_panduan();
}
}
});
}
});
}
});
},
// 下拉级联添加
initMajor() {
this.$api
.post('api/Ucenter/getMajor', {
major_id: 1
})
.then((res) => {
this.majors_a = res.data.major.children;
});
},
majorChange(e) {
this.$forceUpdate();
if (e == 1) {
this.$api
.post('api/Ucenter/getMajor', {
major_id: this.coreForm.major_a
})
.then((res) => {
this.majors_b = res.data.major.children;
this.majors_c = [];
this.coreForm.major_b = '';
this.coreForm.major_c = '';
this.majorChange_panduan();
});
} else if (e == 2 && this.coreForm.major_b != 0) {
this.$api
.post('api/Ucenter/getMajor', {
major_id: this.coreForm.major_b
})
.then((res) => {
this.majors_c = res.data.major.children;
this.coreForm.major_c = '';
this.majorChange_panduan();
});
} else {
this.majorChange_panduan();
}
},
majorChange_panduan() {
if (this.coreForm.major_c != '' || this.coreForm.major_c != 0) {
this.coreForm.major = this.coreForm.major_c;
} else if (this.coreForm.major_b != '' || this.coreForm.major_b != 0) {
this.coreForm.major = this.coreForm.major_b;
} else {
this.coreForm.major = this.coreForm.major_a;
}
},
//上传图片
handleAvatarSuccess2(res, file) {
if (res.code == 0) {
this.coreForm.icon = res.upurl;
this.coreForm.user_id = this.coreTable.user_id;
this.$api
.post('api/Ucenter/updateIncon', this.coreForm)
.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.getCVitaData();
} 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');
},
// 时间格式
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;
}
}
};
</script>
<style scoped>
.msg-table {
text-align: center;
}
.add-button {
display: block;
margin: 50px auto;
}
.top-content {
padding: 2px;
}
.top-content span {
/* font-family: Arial, Helvetica, sans-serif; */
display: block;
padding: 2px;
font-size: 14px;
line-height: 1.5;
}
.grid-jue1,
.grid-jue2,
.grid-jue3,
.grid-jue4 {
margin: 10px 10px 20px 10px;
padding: 20px 20px 26px 20px;
color: #fff;
border-radius: 5px;
}
.grid-jue1 p,
.grid-jue2 p,
.grid-jue3 p,
.grid-jue4 p {
margin-left: 50px;
margin-top: -30px;
}
.grid-jue1:hover,
.grid-jue2:hover,
.grid-jue3:hover,
.grid-jue4:hover {
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 30%);
}
.grid-jue1 {
background-image: linear-gradient(to right, #1c66c0, #118bb3);
}
.grid-jue2 {
background-image: linear-gradient(to right, #e26a2d, #f5953c);
}
.grid-jue3 {
background-image: linear-gradient(to right, #4640c4, #7959e1);
}
.grid-jue4 {
background-image: linear-gradient(to right, #cc3646, #e84651);
}
.join_bth {
margin: 15px 0 25px 0;
color: #fff;
text-align: center;
border-radius: 4px;
width: 100%;
max-width: 340px;
height: 50px;
line-height: 50px;
background-color: #006699;
font-size: 20px;
}
.join_bth div {
color: #fff;
text-align: center;
border-radius: 4px;
width: 100%;
height: 50px;
line-height: 50px;
background-color: #006699;
font-size: 20px;
}
.join_bth div:hover {
cursor: pointer;
text-decoration: underline;
}
.join_link {
height: 100%;
}
.join_link p {
margin-bottom: 6px;
}
.join_link b {
/* color: #fff;
text-align: center;
border-radius: 4px;
width: 240px;
height: 42px;
line-height: 42px;
background-color: #006699;
font-size: 15px; */
margin-right: 5px;
display: inline-block;
cursor: pointer;
color: #006699;
font-weight: normal;
}
.join_link b:hover {
color: #006699;
/* text-decoration: underline; */
}
.join_link .icon_img {
width: 15px;
height: 15px;
margin-right: 5px;
margin-left: 5px;
vertical-align: middle;
color: #006699;
}
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
width: 100px;
height: 100px;
}
.avatar-uploader_small {
height: 100px;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 120px;
height: 120px;
line-height: 120px;
text-align: center;
}
.avatar-uploader_small .el-upload {
width: 80px;
height: 80px;
}
.avatar-uploader_small .avatar-uploader-icon {
line-height: 80px;
margin-left: -30px;
}
.avatar {
width: 120px;
height: 120px;
display: block;
}
.consumer {
text-align: center;
color: #40485b;
}
.consumer .portrait {
width: 135px;
height: 135px;
border-radius: 110px;
border: 4px solid #eee;
margin: 0 auto;
cursor: pointer;
position: relative;
}
.consumer .portrait .ptmark {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
background-color: #00000033;
color: #fff;
border-radius: 110px;
font-size: 20px;
line-height: 140px;
display: none;
}
.consumer .portrait:hover .ptmark {
display: block;
}
.consumer .portrait img {
width: 135px;
height: 135px;
border-radius: 110px;
}
.consumer > p {
}
.starSty {
width: 18px;
margin-right: 4px;
vertical-align: text-top;
}
.starSty:nth-last-child(1) {
margin-right: 0;
}
.numeric {
margin-bottom: 23px;
display: flex;
}
.numeric .numerItem {
width: 50%;
font-size: 16px;
text-align: center;
}
.numeric .numerItem > b {
color: #066999;
font-size: 20px;
margin-bottom: 15px;
display: block;
}
.numeric .numerItem > b:hover {
text-decoration: underline;
cursor: pointer;
}
.numeric .numerItem > p {
font-size: 14px;
color: #40485b;
line-height: 22px;
}
.exponent {
margin: 20px 0 25px 0;
}
.exponent > div {
line-height: 25px;
margin-bottom: 5px;
overflow: auto;
}
.exponent .expTit {
float: left;
margin-right: 10px;
color: #606266;
font-size: 14px;
line-height: 32px;
}
.exponent .expInde {
float: left;
margin-top: 5px;
}
.exponent .oveTxtLine {
width: 80%;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
cursor: pointer;
}
.exponent .expInde .webLink {
color: #006699;
}
.exponent .expInde .webLink:hover {
text-decoration: underline;
}
.chunking {
position: relative;
height: 80%;
}
.chunking .infor_title {
position: absolute;
background-color: #fff;
border: 2px solid rgba(0, 102, 153, 0.15);
padding: 8px 15px;
font-size: 15px;
letter-spacing: -0.5px;
border-radius: 5px;
top: -16px;
left: 50px;
}
.chunking .infor_edit {
position: absolute;
top: 20px;
right: 20px;
}
.chunking .chunkPiece {
background-color: #fff;
border: 2px solid rgba(0, 102, 153, 0.15);
border-radius: 10px;
padding-top: 40px;
height: 85%;
}
.chunking .chunkPiece .chunkItem {
overflow: auto;
font-size: 14px;
line-height: 32px;
margin-bottom: 18px;
}
.chunking .chunkPiece .depresBtn {
cursor: pointer;
color: #006699;
font-size: 20px;
margin-right: 5px;
}
.chunking .chunkPiece .depresBtn:hover {
text-decoration: underline;
}
.chunking .chunkPiece .certBtn {
margin: 0 0 0 20px;
color: #006699;
}
.chunking .chunkPiece .certBtn:hover {
cursor: pointer;
text-decoration: underline;
}
.chunking .chunkPiece .arrowBtn {
color: #006699;
cursor: pointer;
font-weight: bold;
margin: 0 0 0 10px;
}
.gugeList {
font-size: 14px;
border: 2px dashed #eee;
cursor: pointer;
margin: 0 5px 20px 5px;
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;
}
.diploma {
overflow: auto;
}
.diploma > div {
float: left;
width: 33%;
text-align: center;
margin-top: 20px;
}
.diploma > div img {
width: 94%;
height: 140px;
}
.diploma > div p {
margin-top: 10px;
text-align: center;
}
.el-image-viewer__wrapper {
z-index: 5000 !important;
padding: 50px 0;
}
.el-image-viewer__wrapper .el-icon-circle-close {
color: #fff !important;
}
.new_scard {
padding: 0 20px;
height: 100%;
}
.txt_pdf {
margin: 0 0 20px 10px;
display: inline-block;
color: #333;
}
.txt_pdf > i {
color: #66a9f0;
font-weight: bold;
margin-left: 10px;
}
.ratList {
margin: 0 0 15px 0;
border-bottom: 1px solid #eee;
padding: 0 0 10px 10px;
position: relative;
}
.ratList .ratNum {
position: absolute;
right: 15px;
top: 3px;
font-size: 20px;
font-weight: bold;
color: #006699;
}
/* .avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
width: 140px;
height: 140px;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 140px;
height: 140px;
line-height: 140px;
text-align: center;
} */
</style>