审稿人CV
This commit is contained in:
@@ -315,7 +315,7 @@
|
||||
<div class="list-center go-flex-center go-transition" style="width: 100%">
|
||||
<div class="title">
|
||||
<span>Add Table </span>
|
||||
<!-- <span @click.stop="handlePaperclip"><i class="el-icon-paperclip"></i></span> -->
|
||||
<span @click.stop="handlePaperclip"><i class="el-icon-paperclip"></i></span>
|
||||
</div>
|
||||
|
||||
<div
|
||||
|
||||
@@ -30,9 +30,10 @@
|
||||
<el-option label="D" key="D" value="D"></el-option>
|
||||
<el-option label="Not rated" key="1" value="1"></el-option>
|
||||
</el-select> -->
|
||||
<el-input clearable v-model="query.keyword" placeholder="Account / Realname / Email" style="width: 240px; margin: 0 15px"> </el-input>
|
||||
<el-input clearable v-model="query.keyword" placeholder="Account / Realname / Email" style="width: 240px; margin: 0 15px">
|
||||
</el-input>
|
||||
<el-cascader
|
||||
clearable
|
||||
clearable
|
||||
:ref="`cascader1`"
|
||||
@change="handleChange"
|
||||
v-model="selectField"
|
||||
@@ -66,8 +67,29 @@
|
||||
</p>
|
||||
<p class="tab_tie_col">
|
||||
<span>Title: </span>{{ scope.row.technical }}
|
||||
<span style="margin-left: 30px">CV: </span>
|
||||
<b class="el-icon-check" style="color: #0fa31d; font-weight: bold" v-if="scope.row.cvs.length > 0"> </b>
|
||||
<span style="margin-left: 25px">CV: </span>
|
||||
<span v-if="scope.row.cvs.length > 0" v-for="(item, index) in [scope.row.cvs[scope.row.cvs.length - 1]]">
|
||||
<!-- <span style="margin-left: 20px; color: #888; font-size: 13px">
|
||||
<i class="el-icon-paperclip"></i>
|
||||
{{ formatDate(item.ctime) }}
|
||||
</span> -->
|
||||
<el-tooltip :content="formatDate(item.ctime)" placement="top">
|
||||
<a
|
||||
:href="mediaUrl + 'reviewer/' + item.cv"
|
||||
target="_blank"
|
||||
class="txt_pdf"
|
||||
style="margin: 0; display: inline-block"
|
||||
><img
|
||||
src="@/assets/img/icon_0.png"
|
||||
alt=""
|
||||
class="icon_img"
|
||||
style="vertical-align: middle; width: 16px; height: 16px"
|
||||
/>
|
||||
<i class="el-icon-download" style="font-size: 12px;margin-left: 4px;"></i>
|
||||
</a>
|
||||
</el-tooltip>
|
||||
</span>
|
||||
<!-- <b class="el-icon-check" style="color: #0fa31d; font-weight: bold" v-if="scope.row.cvs.length > 0"> </b> -->
|
||||
<b class="el-icon-close" style="color: #ff0000; font-weight: bold" v-if="scope.row.cvs.length == 0"> </b>
|
||||
</p>
|
||||
<p class="tab_tie_col"><span>Email: </span>{{ scope.row.email }}</p>
|
||||
@@ -117,13 +139,11 @@
|
||||
</font>
|
||||
</p>
|
||||
<p class="tab_tie_col">
|
||||
<span style="color: #0b71ff;">Reviewed manuscripts {{ ReviewTime }}: </span>
|
||||
<font style="display: inline-block;color: #0b71ff;font-weight: bold;" v-if="scope.row.review_num_two_year">
|
||||
{{ scope.row.review_num_two_year }}
|
||||
</font>
|
||||
<font style="display: inline-block;color: #aaa;font-weight: bold;" v-else >
|
||||
0
|
||||
<span style="color: #0b71ff">Reviewed manuscripts {{ ReviewTime }}: </span>
|
||||
<font style="display: inline-block; color: #0b71ff; font-weight: bold" v-if="scope.row.review_num_two_year">
|
||||
{{ scope.row.review_num_two_year }}
|
||||
</font>
|
||||
<font style="display: inline-block; color: #aaa; font-weight: bold" v-else> 0 </font>
|
||||
</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -188,13 +208,17 @@
|
||||
</el-table-column> -->
|
||||
<el-table-column label="Research areas" width="300">
|
||||
<template slot-scope="scope">
|
||||
<div @click="BoxMajor(scope.row,majorData[scope.row.user_id])" v-if="scope.row.user_id" style="display: flex; align-items: center; justify-content: space-between; cursor: pointer;">
|
||||
<div
|
||||
@click="BoxMajor(scope.row, majorData[scope.row.user_id])"
|
||||
v-if="scope.row.user_id"
|
||||
style="display: flex; align-items: center; justify-content: space-between; cursor: pointer"
|
||||
>
|
||||
<!-- 使用 user_id 来获取用户的 majorData -->
|
||||
<div>
|
||||
<div v-if="majorData[scope.row.user_id]" class="majorDataBox">
|
||||
<p v-for="(v, i) in majorData[scope.row.user_id]" style="border-top: 1px solid #b3d8ff;">
|
||||
<span style="font-weight:bold">{{ i + 1 }}.</span>
|
||||
{{ v.major_title.replace("Medicine >", "").trim() }}
|
||||
<p v-for="(v, i) in majorData[scope.row.user_id]" style="border-top: 1px solid #b3d8ff">
|
||||
<span style="font-weight: bold">{{ i + 1 }}.</span>
|
||||
{{ v.major_title.replace('Medicine >', '').trim() }}
|
||||
</p>
|
||||
</div>
|
||||
<div v-else>
|
||||
@@ -203,11 +227,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<b
|
||||
|
||||
style="margin-left: 10px; color: #006699"
|
||||
class="el-icon-edit"
|
||||
></b>
|
||||
<b style="margin-left: 10px; color: #006699" class="el-icon-edit"></b>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -414,9 +434,10 @@
|
||||
<el-dialog title="Remarks" :visible.sync="remarkBox" width="800px">
|
||||
<el-form ref="remark" :model="remarkMes" label-width="95px">
|
||||
<el-form-item label="Reviewer :">
|
||||
<p style="line-height: 20px; margin-top: 6px;">
|
||||
<span style="color:#333;font-weight:bold;">{{ remarkMes.realname }}</span>
|
||||
( {{ remarkMes.email }} )</p>
|
||||
<p style="line-height: 20px; margin-top: 6px">
|
||||
<span style="color: #333; font-weight: bold">{{ remarkMes.realname }}</span>
|
||||
( {{ remarkMes.email }} )
|
||||
</p>
|
||||
</el-form-item>
|
||||
<el-form-item label="Content :">
|
||||
<el-input type="textarea" rows="20" v-model="remarkMes.remark"></el-input>
|
||||
@@ -430,16 +451,16 @@
|
||||
<el-dialog title="Edit Research areas" :visible.sync="majorBox" width="800px">
|
||||
<el-form ref="remark" :model="majorMes" label-width="120px">
|
||||
<el-form-item label="Reviewer :">
|
||||
<p style="line-height: 20px; margin-top: 6px;">
|
||||
<span style="color:#333;font-weight:bold;">{{ majorMes.realname }}</span>
|
||||
( {{ majorMes.email }} )</p>
|
||||
<p style="line-height: 20px; margin-top: 6px">
|
||||
<span style="color: #333; font-weight: bold">{{ majorMes.realname }}</span>
|
||||
( {{ majorMes.email }} )
|
||||
</p>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="Email :">
|
||||
<p style="line-height: 20px; margin-top: 6px">{{ majorMes.email }}</p>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="Research areas :">
|
||||
<common-major-list :list="majorValueList" @load="(e) => (this.majorValueList = e)"></common-major-list>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
@@ -472,18 +493,17 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
const currentYear = new Date().getFullYear();
|
||||
var ReviewTime= `(${currentYear - 2}–${currentYear})`;
|
||||
var ReviewTime = `(${currentYear - 2}–${currentYear})`;
|
||||
import commonReviewer from '../page/components/reviewerList/add.vue';
|
||||
export default {
|
||||
components: {
|
||||
commonReviewer
|
||||
},
|
||||
|
||||
|
||||
data() {
|
||||
return {
|
||||
ReviewTime:ReviewTime,
|
||||
ReviewTime: ReviewTime,
|
||||
majorValueList: [],
|
||||
majorData: [],
|
||||
selectField: [],
|
||||
@@ -542,9 +562,7 @@ export default {
|
||||
remarkMes: {
|
||||
remark: ''
|
||||
},
|
||||
majorMes: {
|
||||
|
||||
},
|
||||
majorMes: {},
|
||||
remarkBox: false,
|
||||
majorBox: false,
|
||||
gradeMes: {
|
||||
@@ -733,9 +751,8 @@ export default {
|
||||
},
|
||||
|
||||
async getContent() {
|
||||
|
||||
console.log('this.selectField at line 720:', this.selectField)
|
||||
if(this.selectField.length > 0) {
|
||||
console.log('this.selectField at line 720:', this.selectField);
|
||||
if (this.selectField.length > 0) {
|
||||
this.query.user_field = this.selectField[this.selectField.length - 1];
|
||||
} else {
|
||||
this.query.user_field = '';
|
||||
@@ -756,7 +773,7 @@ export default {
|
||||
background: 'rgba(0, 0, 0, 0.7)'
|
||||
});
|
||||
await this.$api
|
||||
.post('api/Reviewer/getReviewerListByJournal',this.query)
|
||||
.post('api/Reviewer/getReviewerListByJournal', this.query)
|
||||
.then(async (res) => {
|
||||
if (res.code == 0) {
|
||||
this.tableData = res.data;
|
||||
@@ -775,13 +792,10 @@ export default {
|
||||
// });
|
||||
|
||||
this.$forceUpdate();
|
||||
|
||||
} else {
|
||||
this.$message.error(res.msg);
|
||||
loading.close();
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
.catch((err) => {
|
||||
this.$message.error(err);
|
||||
@@ -1177,27 +1191,25 @@ export default {
|
||||
this.remarkMes.email = e.email;
|
||||
this.remarkMes.remark = e.remark;
|
||||
},
|
||||
BoxMajor(e,data) {
|
||||
BoxMajor(e, data) {
|
||||
this.majorBox = true;
|
||||
this.majorMes.realname = e.realname;
|
||||
this.majorMes.user_id = e.user_id;
|
||||
this.majorMes.email = e.email;
|
||||
this.majorValueList = [...data].map((item) => ({
|
||||
selectedValue: Array.isArray(item.shu)
|
||||
? item.shu
|
||||
: typeof item.shu === 'string'
|
||||
? item.shu.split(',').map(Number)
|
||||
: [item.shu]
|
||||
}));
|
||||
|
||||
selectedValue: Array.isArray(item.shu)
|
||||
? item.shu
|
||||
: typeof item.shu === 'string'
|
||||
? item.shu.split(',').map(Number)
|
||||
: [item.shu]
|
||||
}));
|
||||
},
|
||||
async fetchMajorData(userId) {
|
||||
|
||||
// if (!this.majorData[userId]) {
|
||||
// 判断是否已经加载过该用户的数据
|
||||
const data = await this.getMajorData(userId); // 获取数据
|
||||
|
||||
this.$set(this.majorData, userId, data); // 使用 Vue.set 确保数据是响应式的
|
||||
// 判断是否已经加载过该用户的数据
|
||||
const data = await this.getMajorData(userId); // 获取数据
|
||||
|
||||
this.$set(this.majorData, userId, data); // 使用 Vue.set 确保数据是响应式的
|
||||
// }
|
||||
},
|
||||
// 修改标记
|
||||
@@ -1226,18 +1238,20 @@ export default {
|
||||
});
|
||||
},
|
||||
saveMajor() {
|
||||
this.$api.post('api/Reviewer/updateUserField', {
|
||||
user_id:this.majorMes.user_id,
|
||||
user_field:this.majorValueList.map((item) => item.selectedValue[item.selectedValue.length - 1]).toString(',')
|
||||
}).then((res) => {
|
||||
if (res.status == 1) {
|
||||
this.$message.success('Success');
|
||||
this.majorBox = false;
|
||||
this.fetchMajorData(this.majorMes.user_id);
|
||||
} else {
|
||||
this.$message.error(res.msg);
|
||||
}
|
||||
});
|
||||
this.$api
|
||||
.post('api/Reviewer/updateUserField', {
|
||||
user_id: this.majorMes.user_id,
|
||||
user_field: this.majorValueList.map((item) => item.selectedValue[item.selectedValue.length - 1]).toString(',')
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.status == 1) {
|
||||
this.$message.success('Success');
|
||||
this.majorBox = false;
|
||||
this.fetchMajorData(this.majorMes.user_id);
|
||||
} else {
|
||||
this.$message.error(res.msg);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 领域
|
||||
@@ -1351,8 +1365,6 @@ export default {
|
||||
},
|
||||
// 指数颜色
|
||||
colorIndex(num, time) {
|
||||
|
||||
|
||||
// if (time != 0) {
|
||||
// let date = new Date(parseInt(time * 1000));
|
||||
// let Y = date.getFullYear() + '-';
|
||||
@@ -1381,9 +1393,9 @@ export default {
|
||||
// ')</span>';
|
||||
str = '<b style="color:#cbb504">' + num + '</b>';
|
||||
} else {
|
||||
if(num==null){
|
||||
num=0
|
||||
}
|
||||
if (num == null) {
|
||||
num = 0;
|
||||
}
|
||||
// str =
|
||||
// '<b style="color:#0cbc15">' +
|
||||
// num +
|
||||
@@ -1392,7 +1404,7 @@ export default {
|
||||
// ')</span>';
|
||||
str = '<b style="color:#0cbc15">' + num + '</b>';
|
||||
}
|
||||
if (time == 0||time==null) {
|
||||
if (time == 0 || time == null) {
|
||||
// str = '<b style="color:#aaa;">0</b><span style="color:#aaa;font-size:14px;margin-left:10px;">(No time)</span>';
|
||||
str = '<b style="color:#aaa;">0</b>';
|
||||
}
|
||||
@@ -1549,8 +1561,7 @@ export default {
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
}
|
||||
.majorDataBox p:nth-child(1){
|
||||
.majorDataBox p:nth-child(1) {
|
||||
border-top: none !important;
|
||||
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user