总监编委

This commit is contained in:
@fawn-nine
2023-08-29 17:58:23 +08:00
parent fb4cd39a76
commit aac786f0b7
8 changed files with 1245 additions and 57 deletions

View File

@@ -432,6 +432,23 @@
title: this.$t('sidebar.party3')
}]
},
{ // 编委系统
icon: 'el-icon-s-custom',
index: '8',
title: this.$t('sidebar.editorialBoard'),
subs: [{
index: 'editorialBoard',
title: this.$t('sidebar.editorialBoard1')
},
// {
// index: 'partyList',
// title: this.$t('sidebar.party2')
// }, {
// index: 'partyDelete',
// title: this.$t('sidebar.party3')
// }
]
},
// ,{
// icon: 'el-icon-data-analysis',
// index: 'citationanalysis',

View File

@@ -120,6 +120,8 @@ const en = {
mailbox3: 'Mailbox template',
tools: 'Assistant tools',
ReArticles: 'Rejected Manuscripts', // 被拒稿件
editorialBoard:'Editor Border',
editorialBoard1:'List'
},
home: {
authortop: 'Author guide',

View File

@@ -119,6 +119,8 @@ const zh = {
mailbox3: '模板管理',
tools: '辅助工具',
ReArticles: '被拒稿件', // 被拒稿件
editorialBoard:'编委管理',
editorialBoard1:'编委列表'
},
home: {
authortop: '用户指南',

View File

@@ -347,7 +347,7 @@
</div>
</div>
</div>
<!-- 提交 submit -->
<div class="bag_color" v-if="show_step==4">
<div>
<h3>
@@ -1654,6 +1654,7 @@
// 点击tab变化
StepCode(e) {
console.log(e)
if (this.move_step > e) {
if (this.move_step == 2) {
this.onStaging(2)

View File

@@ -14,14 +14,14 @@
<el-option v-for="item in df_jour" :label="item.title" :key="item.journal_id"
:value="item.journal_id"></el-option>
</el-select>
<el-select v-model="query.board_group_id" placeholder="Please select a group" @change="getDate"
<!-- <el-select v-model="query.board_group_id" placeholder="Please select a group" @change="getDate"
style="margin-left: 10px;">
<el-option v-for="item in df_group" :label="item.group_name" :key="item.board_group_id"
:value="item.board_group_id">
{{item.group_name}}
<span v-if="item.person_num!=undefined" style="color: #bbb;">({{item.person_num}})</span>
</el-option>
</el-select>
</el-select> -->
<el-button type="warning" icon="el-icon-circle-plus-outline" @click="addGroup"
style="margin-left: 10px;">
Group management</el-button>
@@ -33,34 +33,34 @@
header-cell-class-name="table-header" empty-text="New messages (0)">
<el-table-column prop="name" label="Realname"></el-table-column>
<el-table-column prop="email" label="Email"></el-table-column>
<el-table-column prop="hindex" label="H-WOS" width="110px" align="center"></el-table-column>
<!-- <el-table-column prop="hindex" label="H-WOS" width="110px" align="center"></el-table-column> -->
<el-table-column prop="ghindex" label="H-Google" width="110px" align="center"></el-table-column>
<el-table-column label="Grade" width="110px" align="center"></el-table-column>
<!-- <el-table-column label="Grade" width="110px" align="center"></el-table-column> -->
<!-- <el-table-column label="Remarks" width="180"></el-table-column> -->
<el-table-column label="" width="190" align="center"></el-table-column>
<el-table-column label="" width="300" align="center"></el-table-column>
</el-table>
<p class="shen_fen" style="margin-top: 0;" v-if="tableData_A.length!=0">Editor-in-Chief</p>
<el-table :data="tableData_A" border stripe class="table" ref="multipleTable"
header-cell-class-name="table-header" empty-text="New messages (0)" :show-header="false"
v-if="tableData_A.length!=0">
<el-table-column prop="name" label="Realname">
<el-table-column prop="Realname" label="Realname">
<template slot-scope="scope">
<p @click="perSonnel(scope.row.tuser_id)" class="perSonGo">{{scope.row.name}}</p>
<p @click="perSonnel(scope.row.user_id)" class="perSonGo">{{scope.row.realname}}</p>
</template>
</el-table-column>
<el-table-column prop="email" label="Email"></el-table-column>
<el-table-column prop="hindex" label="H-WOS" width="110px" align="center">
<!-- <el-table-column prop="hindex" label="H-WOS" width="110px" align="center">
<template slot-scope="scope">
<p v-html="colorIndex(scope.row.wos_index,scope.row.wos_time)"></p>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column prop="ghindex" label="H-Google" width="110px" align="center">
<template slot-scope="scope">
<p v-html="colorIndex(scope.row.google_index,scope.row.google_time)"></p>
</template>
</el-table-column>
<el-table-column label="Grade" width="110px" align="center">
<!-- <el-table-column label="Grade" width="110px" align="center">
<template slot-scope="scope">
<p style="display: inline-block;" v-if="scope.row.starList_mark!=0">
<img src="../../assets/img/star-all.png" v-for="item in scope.row.starList"
@@ -74,7 +74,7 @@
{{scope.row.starList_mark}}</b>
</p>
</template>
</el-table-column>
</el-table-column> -->
<!-- <el-table-column label="Remarks" width="180">
<template slot-scope="scope">
{{scope.row.remark}}
@@ -82,11 +82,13 @@
class="el-icon-edit"></b>
</template>
</el-table-column> -->
<el-table-column label="" width="190" align="center">
<el-table-column label="" width="300" align="center">
<template slot-scope="scope">
<el-button size="mini" type="primary" plain icon="el-icon-edit"
@click="handleEdit(scope.$index, scope.row)">Edit</el-button>
<el-button size="mini" type="danger" plain icon="el-icon-delete"
@click="perSonnel(scope.row.user_id)">User Edit</el-button>
<el-button size="mini" type="primary" plain icon="el-icon-edit"
@click="bhandleEdit(scope.$index, scope.row)">Board Edit</el-button>
<el-button size="mini" type="danger" plain icon="el-icon-delete" style="margin-top: 10px;"
@click="handleDelete(scope.$index, scope.row)">Delete</el-button>
</template>
</el-table-column>
@@ -95,23 +97,23 @@
<el-table :data="tableData_B" border stripe class="table" ref="multipleTable"
header-cell-class-name="table-header" empty-text="New messages (0)" :show-header="false"
v-if="tableData_B.length!=0">
<el-table-column prop="name" label="Realname">
<el-table-column prop="Realname" label="Realname">
<template slot-scope="scope">
<p @click="perSonnel(scope.row.tuser_id)" class="perSonGo">{{scope.row.name}}</p>
<p @click="perSonnel(scope.row.user_id)" class="perSonGo">{{scope.row.realname}}</p>
</template>
</el-table-column>
<el-table-column prop="email" label="Email"></el-table-column>
<el-table-column prop="hindex" label="H-WOS" width="110px" align="center">
<!-- <el-table-column prop="hindex" label="H-WOS" width="110px" align="center">
<template slot-scope="scope">
<p v-html="colorIndex(scope.row.wos_index,scope.row.wos_time)"></p>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column prop="ghindex" label="H-Google" width="110px" align="center">
<template slot-scope="scope">
<p v-html="colorIndex(scope.row.google_index,scope.row.google_time)"></p>
</template>
</el-table-column>
<el-table-column label="Grade" width="110px" align="center">
<!-- <el-table-column label="Grade" width="110px" align="center">
<template slot-scope="scope">
<p style="display: inline-block;" v-if="scope.row.starList_mark!=0">
<img src="../../assets/img/star-all.png" v-for="item in scope.row.starList"
@@ -125,7 +127,7 @@
{{scope.row.starList_mark}}</b>
</p>
</template>
</el-table-column>
</el-table-column> -->
<!-- <el-table-column label="Remarks" width="180">
<template slot-scope="scope">
{{scope.row.remark}}
@@ -133,11 +135,13 @@
class="el-icon-edit"></b>
</template>
</el-table-column> -->
<el-table-column label="" width="190" align="center">
<el-table-column label="" width="300" align="center">
<template slot-scope="scope">
<el-button size="mini" type="primary" plain icon="el-icon-edit"
@click="handleEdit(scope.$index, scope.row)">Edit</el-button>
<el-button size="mini" type="danger" plain icon="el-icon-delete"
@click="perSonnel(scope.row.user_id)">User Edit</el-button>
<el-button size="mini" type="primary" plain icon="el-icon-edit"
@click="bhandleEdit(scope.$index, scope.row)">Board Edit</el-button>
<el-button size="mini" type="danger" plain icon="el-icon-delete" style="margin-top: 10px;"
@click="handleDelete(scope.$index, scope.row)">Delete</el-button>
</template>
</el-table-column>
@@ -147,23 +151,23 @@
<p class="shen_number">{{key}}</p>
<el-table :data="item" border stripe class="table" ref="multipleTable" :show-header="false"
header-cell-class-name="table-header" empty-text="New messages (0)" style="margin-bottom: 20px;">
<el-table-column prop="name" label="Realname">
<el-table-column prop="Realname" label="Realname">
<template slot-scope="scope">
<p @click="perSonnel(scope.row.tuser_id)" class="perSonGo">{{scope.row.name}}</p>
<p @click="perSonnel(scope.row.user_id)" class="perSonGo">{{scope.row.realname}}</p>
</template>
</el-table-column>
<el-table-column prop="email" label="Email"></el-table-column>
<el-table-column prop="hindex" label="H-WOS" width="110px" align="center">
<!-- <el-table-column prop="hindex" label="H-WOS" width="110px" align="center">
<template slot-scope="scope">
<p v-html="colorIndex(scope.row.wos_index,scope.row.wos_time)"></p>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column prop="ghindex" label="H-Google" width="110px" align="center">
<template slot-scope="scope">
<p v-html="colorIndex(scope.row.google_index,scope.row.google_time)"></p>
</template>
</el-table-column>
<el-table-column label="Grade" width="110px" align="center">
<!-- <el-table-column label="Grade" width="110px" align="center">
<template slot-scope="scope">
<p style="display: inline-block;" v-if="scope.row.starList_mark!=0">
<img src="../../assets/img/star-all.png" v-for="item in scope.row.starList"
@@ -178,7 +182,7 @@
{{scope.row.starList_mark}}</b>
</p>
</template>
</el-table-column>
</el-table-column> -->
<!-- <el-table-column label="Remarks" width="180">
<template slot-scope="scope">
{{scope.row.remark}}
@@ -186,11 +190,13 @@
class="el-icon-edit"></b>
</template>
</el-table-column> -->
<el-table-column label="" width="190" align="center">
<el-table-column label="" width="300" align="center">
<template slot-scope="scope">
<el-button size="mini" type="primary" plain icon="el-icon-edit"
@click="handleEdit(scope.$index, scope.row)">Edit</el-button>
<el-button size="mini" type="danger" plain icon="el-icon-delete"
@click="perSonnel(scope.row.user_id)">User Edit</el-button>
<el-button size="mini" type="primary" plain icon="el-icon-edit"
@click="bhandleEdit(scope.$index, scope.row)">Board Edit</el-button>
<el-button size="mini" type="danger" plain icon="el-icon-delete" style="margin-top: 10px;"
@click="handleDelete(scope.$index, scope.row)">Delete</el-button>
</template>
</el-table-column>
@@ -217,15 +223,16 @@
<el-form-item label="Email :" prop="email">
{{addForm.email}}
</el-form-item>
<el-form-item label="Account :" prop="account">
<!-- <el-form-item label="Account :" prop="account">
{{addForm.account}}
</el-form-item>
</el-form-item> -->
<el-form-item label="Realname :" prop="name">
<el-input v-model="addForm.name" style="width: 300px;"></el-input>
{{addForm.name}}
<!-- <el-input v-model="addForm.name" style="width: 300px;"></el-input> -->
</el-form-item>
<el-form-item label="Picture :" prop="board_icon">
<!-- <el-form-item label="Picture :" prop="board_icon">
<span slot="label">
<!-- <i style="color: #F56C6C;">*</i> -->
<i style="color: #F56C6C;">*</i>
Picture
</span>
<el-upload class="avatar-uploader" :action="baseUrl+'api/Board/up_boardIcon_file'"
@@ -234,7 +241,7 @@
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
</el-form-item> -->
<el-form-item label="Journal :" prop="journal_id">
<el-select v-model="addForm.journal_id" placeholder="Please select a journal" @change="getJourAdd()"
style="width: 300px;">
@@ -256,29 +263,32 @@
:value="item.board_group_id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Homepage :" prop="website">
<!-- <el-form-item label="Homepage :" prop="website">
<el-input v-model="addForm.website"></el-input>
</el-form-item>
<el-form-item label="Academic degree :" prop="dr">
<el-input v-model="addForm.dr"></el-input>
</el-form-item>
<el-form-item label="Technical :" prop="title">
</el-form-item> -->
<!-- <el-form-item label="Technical :" prop="title">
<el-select v-model="addForm.title" placeholder="Please select a technical" style="width: 300px;">
<el-option v-for="item in title_options" :key="item.value" :label="item.value"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Affiliation :" prop="address">
</el-form-item> -->
<!-- <el-form-item label="Affiliation :" prop="address">
<el-input v-model="addForm.address"></el-input>
</el-form-item>
<el-form-item label="Country :" prop="country">
</el-form-item> -->
<!-- <el-form-item label="Country :" prop="country">
<el-select v-model="addForm.country" filterable placeholder="Please select a country"
value-key="groupID" style="width: 300px;">
<el-option v-for="item in add_country" :label="item.en_name" :key="item.en_name"
:value="item.en_name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Field :" prop="field">
</el-form-item> -->
<!-- <el-form-item label="Field :" prop="field">
<el-input v-model="addForm.field" type="textarea" rows="5"></el-input>
</el-form-item> -->
<el-form-item label="Research areas :" prop="field">
<el-input v-model="addForm.field" type="textarea" rows="5"></el-input>
</el-form-item>
</el-form>
@@ -385,7 +395,32 @@
<el-button type="primary" @click="saveRemark">Save</el-button>
</span>
</el-dialog>
<!-- 编委弹窗 -->
<el-dialog title="Edit Board" :visible.sync="BoardEditorFormVisible" width="800px">
<el-form ref="BoardEditorForm" :model="BoardEditorForm" label-width="130px" :rules="BoardEditorFormRule">
<el-form-item label="Type :">
<el-radio-group v-model="BoardEditorForm.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 :" v-if="BoardEditorForm.type == 2">
<el-select v-model="BoardEditorForm.board_group_id" placeholder="Please select a group"
style="width: 300px;">
<el-option v-for="item in edit_group" :label="item.group_name" :key="item.board_group_id"
:value="item.board_group_id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Research Areas :" prop="research_areas">
<el-input type="textarea" rows="5" v-model="BoardEditorForm.research_areas"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="BoardEditorFormVisible = false">Cancel</el-button>
<el-button type="primary" @click="saveBoard">Save</el-button>
</span>
</el-dialog>
</div>
</template>
@@ -408,6 +443,13 @@
add_country: [],
addVisible: false,
editVisible: false,
BoardEditorForm:{
btj_id:null,
type:0,
board_group_id:null,
research_areas:''
},
BoardEditorFormVisible:false,
addForm: {
email: '',
board_icon:'',
@@ -631,6 +673,13 @@
message: 'Please select a country',
trigger: 'blur'
}],
},
BoardEditorFormRule:{
research_areas: [{
required: true,
message: 'Please input research areas',
trigger: 'blur'
}],
}
};
},
@@ -762,6 +811,28 @@
this.getgroup()
},
// 编辑编委
saveBoard(){
this.$refs.BoardEditorForm.validate((valid) => {
if (valid) {
this.$api
.post('/api/Board/editBoard', this.BoardEditorForm)
.then(res => {
if (res.code == 0) {
this.getDate()
this.$refs.BoardEditorForm.resetFields()
this.BoardEditorFormVisible = false
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}else{
return false;
}})
},
// 评分
getScoreDataA(i, e) {
@@ -900,7 +971,17 @@
});
},
// 编辑编委操作
bhandleEdit(index, row) {
this.$nextTick(() => {
// console.log(row,'row')
this.BoardEditorForm.btj_id = row.btj_id
this.BoardEditorForm.type = row.type
this.BoardEditorForm.board_group_id = row.board_group_id
this.BoardEditorForm.research_areas = row.research_areas
this.BoardEditorFormVisible = true
})
},
// 查找账号
saerNa_U() {
if (this.addForm.email != '') {
@@ -936,12 +1017,18 @@
saveAdd() {
this.$refs.add_Form.validate((valid) => {
if (valid) {
if (this.addForm.board_icon == '' || this.addForm.board_icon == undefined) {
this.$message.error('Please upload the picture!');
return
}
// if (this.addForm.board_icon == '' || this.addForm.board_icon == undefined) {
// this.$message.error('Please upload the picture!');
// return
// }
this.$api
.post('api/Board/addBoard', this.addForm)
.post('api/Board/addBoard', {
'user_id': this.addForm.user_id,
'journal_id': this.addForm.journal_id,
'board_group_id': this.addForm.board_group_id,
'type': this.addForm.type,
'research_areas': this.addForm.field
})
.then(res => {
if (res.code == 0) {
this.addVisible = false;

View File

@@ -0,0 +1,71 @@
<template>
<div>
<el-table :data="tableData" border stripe class="table" ref="multipleTable" header-cell-class-name="table-header"
empty-text="New messages (0)">
<el-table-column type="index" label="No." width="55" align="center"></el-table-column>
<el-table-column label="journals" prop="jabbr" align="center"></el-table-column>
<el-table-column label="number" prop="boards_count" align="center"></el-table-column>
<!-- <el-table-column label="平均H指数" prop="H" align="center"></el-table-column>
<el-table-column label="国际化" prop="H" align="center"></el-table-column>
<el-table-column label="不活跃系数" prop="H" align="center"></el-table-column> -->
<el-table-column width="160" label="Doi" align="center">
<template slot-scope="scope">
<router-link :to="{path:'/Board-List',query:{id:scope.row.journal_id}}">
<el-button type="primary" plain >Detail</el-button></router-link>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data(){
return{
query: {
username: localStorage.getItem('U_name'),
// journal: localStorage.getItem('ms_journal_alias') ? parseInt(localStorage.getItem('ms_journal_alias')) : 0,
journal: 0,
name: '',
state: 0,
pageIndex: 1,
pageSize: 10
},
tableData:[],
Total:0,
}
},
created(){
this.getdata();
},
methods:{
// 获取文章列表数据
getdata() {
this.$api
.post('api/Monitor/getJournalBoards')
.then(res => {
if(res.code == 0){
console.log(res,'res')
//this.Total = res.total;
// var arr = []
// arr = res.data.journals.map( (item) => {
// var num = 0
// num = item.boards.main.length
// item.pnum = num
// return item
// })
this.tableData = res.data.journals;
// console.log(this.tableData,'this.tableData')
}
})
.catch(err => {
console.log(err);
});
},
}
}
</script>
<style>
</style>

View File

@@ -0,0 +1,992 @@
<template>
<div>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-user"></i> Editorial Board List
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container">
<el-table :data="tableData_0" border stripe class="table nullTable" ref="multipleTable"
header-cell-class-name="table-header" empty-text="New messages (0)">
<el-table-column prop="realname" label="name"></el-table-column>
<el-table-column prop="technical" label="Professional Title" width="150px" align="center"></el-table-column>
<el-table-column prop="field" label="field" align="center"></el-table-column>
<el-table-column label="ghindex" width="110px" align="center"></el-table-column>
<!-- <el-table-column label="" width="110px" align="center"></el-table-column>
<el-table-column label="活跃度" width="110px" align="center"></el-table-column> -->
<!-- <el-table-column label="Remarks" width="180"></el-table-column> -->
<el-table-column label="" width="150px" align="center"></el-table-column>
</el-table>
<p class="shen_fen" style="margin-top: 0;" v-if="tableData_A.length!=0">Editor-in-Chief</p>
<el-table :data="tableData_A" border stripe class="table" ref="multipleTable"
header-cell-class-name="table-header" empty-text="New messages (0)" :show-header="false"
v-if="tableData_A.length!=0">
<el-table-column prop="realname" label="name">
<template slot-scope="scope">
<p @click="perSonnel(scope.row.user_id)" class="perSonGo">{{scope.row.realname}}</p>
</template>
</el-table-column>
<el-table-column prop="technical" label="technical" width="150px" align="center">
<!-- <template slot-scope="scope">
<p v-html="colorIndex(scope.row.wos_index,scope.row.wos_time)"></p>
</template> -->
</el-table-column>
<el-table-column prop="field" label="field" align="center">
<!-- <template slot-scope="scope">
<p v-html="colorIndex(scope.row.google_index,scope.row.google_time)"></p>
</template> -->
</el-table-column>
<el-table-column prop="ghindex" label="H-Google" width="110px" align="center">
<template slot-scope="scope">
<p v-html="colorIndex(scope.row.google_index,scope.row.google_time)"></p>
</template>
</el-table-column>
<el-table-column label="" width="150px" align="center">
<template slot-scope="scope">
<el-button size="mini" type="primary" plain icon="el-icon-edit"
@click="perSonnel(scope.row.user_id)">User Edit</el-button>
<!-- <el-button size="mini" type="primary" plain icon="el-icon-edit"
@click="bhandleEdit(scope.$index, scope.row)">Board Edit</el-button> -->
<!-- <el-button size="mini" type="danger" plain icon="el-icon-delete" style="margin-top: 10px;"
@click="handleDelete(scope.$index, scope.row)">Delete</el-button> -->
</template>
</el-table-column>
</el-table>
<p class="shen_fen" v-if="tableData_B.length!=0">Vice Editor-in-Chief</p>
<el-table :data="tableData_B" border stripe class="table" ref="multipleTable"
header-cell-class-name="table-header" empty-text="New messages (0)" :show-header="false"
v-if="tableData_B.length!=0">
<el-table-column prop="realname" label="name">
<template slot-scope="scope">
<p @click="perSonnel(scope.row.user_id)" class="perSonGo">{{scope.row.realname}}</p>
</template>
</el-table-column>
<el-table-column prop="technical" label="technical" width="150px" align="center">
<!-- <template slot-scope="scope">
<p v-html="colorIndex(scope.row.wos_index,scope.row.wos_time)"></p>
</template> -->
</el-table-column>
<el-table-column prop="field" label="field" align="center">
<!-- <template slot-scope="scope">
<p v-html="colorIndex(scope.row.google_index,scope.row.google_time)"></p>
</template> -->
</el-table-column>
<el-table-column prop="ghindex" label="H-Google" width="110px" align="center">
<template slot-scope="scope">
<p v-html="colorIndex(scope.row.google_index,scope.row.google_time)"></p>
</template>
</el-table-column>
<el-table-column label="" width="150" align="center">
<template slot-scope="scope">
<el-button size="mini" type="primary" plain icon="el-icon-edit"
@click="perSonnel(scope.row.user_id)">User Edit</el-button>
<!-- <el-button size="mini" type="primary" plain icon="el-icon-edit"
@click="bhandleEdit(scope.$index, scope.row)">Board Edit</el-button> -->
<!-- <el-button size="mini" type="danger" plain icon="el-icon-delete" style="margin-top: 10px;"
@click="handleDelete(scope.$index, scope.row)">Delete</el-button> -->
</template>
</el-table-column>
</el-table>
<p class="shen_fen" v-if="tableData_C.length!=0">Editorial Board Members</p>
<div v-for="(item,key) in tableData_C" v-if="tableData_C.length!=0">
<p class="shen_number">{{key}}</p>
<el-table :data="item" border stripe class="table" ref="multipleTable" :show-header="false"
header-cell-class-name="table-header" empty-text="New messages (0)" style="margin-bottom: 20px;">
<el-table-column prop="realname" label="name">
<template slot-scope="scope">
<p @click="perSonnel(scope.row.user_id)" class="perSonGo">{{scope.row.realname}}</p>
</template>
</el-table-column>
<el-table-column prop="technical" label="technical" width="150px" align="center">
<!-- <template slot-scope="scope">
<p v-html="colorIndex(scope.row.wos_index,scope.row.wos_time)"></p>
</template> -->
</el-table-column>
<el-table-column prop="field" label="field" align="center">
<!-- <template slot-scope="scope">
<p v-html="colorIndex(scope.row.google_index,scope.row.google_time)"></p>
</template> -->
</el-table-column>
<el-table-column prop="ghindex" label="H-Google" width="110px" align="center">
<template slot-scope="scope">
<p v-html="colorIndex(scope.row.google_index,scope.row.google_time)"></p>
</template>
</el-table-column>
<el-table-column label="" width="150px" align="center">
<template slot-scope="scope">
<el-button size="mini" type="primary" plain icon="el-icon-edit"
@click="perSonnel(scope.row.user_id)">User Edit</el-button>
<!-- <el-button size="mini" type="primary" plain icon="el-icon-edit"
@click="bhandleEdit(scope.$index, scope.row)">Board Edit</el-button> -->
<!-- <el-button size="mini" type="danger" plain icon="el-icon-delete" style="margin-top: 10px;"
@click="handleDelete(scope.$index, scope.row)">Delete</el-button> -->
</template>
</el-table-column>
</el-table>
</div>
</div>
<!-- 添加弹出框 -->
<el-dialog title="Add Editorial board" :visible.sync="addVisible" width="750px" :close-on-click-modal="false"
@close='addVisCancle'>
<el-form ref="add_Form" :model="addForm" :rules="rules" label-width="150px" v-if="!dis_able">
<el-form-item label="Email :" prop="email" v-if="!dis_able">
<el-input v-model="addForm.email" style="width: 300px;"></el-input>
<el-button type="warning" @click="saerNa_U()" style="margin-left: 15px;" icon="el-icon-paperclip">
Check</el-button>
<p style="color: #888;margin-top: 10px;">
Note: The new editorial board must be a registered user. Click
<a class="zhu_ce" @click="Goto_res()">register</a>.
</p>
</el-form-item>
</el-form>
<el-form ref="add_Form" :model="addForm" :rules="rules" label-width="150px" v-if="dis_able">
<el-form-item label="Email :" prop="email">
{{addForm.email}}
</el-form-item>
<el-form-item label="Account :" prop="account">
{{addForm.account}}
</el-form-item>
<el-form-item label="Realname :" prop="name">
<el-input v-model="addForm.name" style="width: 300px;"></el-input>
</el-form-item>
<el-form-item label="Picture :" prop="board_icon">
<span slot="label">
<!-- <i style="color: #F56C6C;">*</i> -->
Picture
</span>
<el-upload class="avatar-uploader" :action="baseUrl+'api/Board/up_boardIcon_file'"
:show-file-list="false" name="boardIcon" :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>
<el-form-item label="Journal :" prop="journal_id">
<el-select v-model="addForm.journal_id" placeholder="Please select a journal" @change="getJourAdd()"
style="width: 300px;">
<el-option v-for="item in add_jour" :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="addForm.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="addForm.type==2">
<el-select v-model="addForm.board_group_id" placeholder="Please select a group"
style="width: 300px;">
<el-option v-for="item in add_group" :label="item.group_name" :key="item.board_group_id"
:value="item.board_group_id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Homepage :" prop="website">
<el-input v-model="addForm.website"></el-input>
</el-form-item>
<el-form-item label="Academic degree :" prop="dr">
<el-input v-model="addForm.dr"></el-input>
</el-form-item>
<el-form-item label="Technical :" prop="title">
<el-select v-model="addForm.title" placeholder="Please select a technical" style="width: 300px;">
<el-option v-for="item in title_options" :key="item.value" :label="item.value"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Affiliation :" prop="address">
<el-input v-model="addForm.address"></el-input>
</el-form-item>
<el-form-item label="Country :" prop="country">
<el-select v-model="addForm.country" filterable placeholder="Please select a country"
value-key="groupID" style="width: 300px;">
<el-option v-for="item in add_country" :label="item.en_name" :key="item.en_name"
:value="item.en_name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Field :" prop="field">
<el-input v-model="addForm.field" type="textarea" rows="5"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addVisible = false">Cancel</el-button>
<!-- 这这这 -->
<el-button type="primary" @click="saveAdd()" v-if="dis_able">OK</el-button>
</span>
</el-dialog>
<!-- 编辑弹出框 -->
<el-dialog title="Edit Editorial board" :visible.sync="editVisible" width="750px">
<el-form ref="edit_Form" :model="editForm" :rules="rules" label-width="150px">
<el-form-item label="Email :">
{{editForm.email}}
</el-form-item>
<el-form-item label="Realname :" prop="name">
<el-input v-model="editForm.name" style="width: 300px;"></el-input>
</el-form-item>
<el-form-item label="Picture :">
<span slot="label">
<i style="color: #F56C6C;">*</i>
Picture
</span>
<el-upload class="avatar-uploader" :action="baseUrl+'api/Board/up_boardIcon_file'"
:show-file-list="false" name="boardIcon" :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>
<el-form-item label="Journal :">
{{query.journal_title}}
<!-- <el-select v-model="editForm.journal_id" placeholder="Please select a journal"
@change="getJourEdit(editForm.journal_id)" style="width: 300px;">
<el-option v-for="item in add_jour" :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="editForm.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="editForm.type==2">
<el-select v-model="editForm.board_group_id" placeholder="Please select a group"
style="width: 300px;">
<el-option v-for="item in edit_group" :label="item.group_name" :key="item.board_group_id"
:value="item.board_group_id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Homepage :" prop="website">
<el-input v-model="editForm.website"></el-input>
</el-form-item>
<el-form-item label="Academic degree :" prop="dr">
<el-input v-model="editForm.dr"></el-input>
</el-form-item>
<el-form-item label="Technical :" prop="title">
<el-select v-model="editForm.title" placeholder="Please select a technical" style="width: 300px;">
<el-option v-for="item in title_options" :key="item.value" :label="item.value"
:value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Affiliation :" prop="address">
<el-input v-model="editForm.address"></el-input>
</el-form-item>
<el-form-item label="Country :" prop="country">
<el-select v-model="editForm.country" filterable placeholder="Please select a country"
value-key="groupID" style="width: 300px;">
<el-option v-for="item in add_country" :label="item.en_name" :key="item.en_name"
:value="item.en_name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Field :" prop="field">
<el-input v-model="editForm.field" type="textarea" autosize></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editVisible = false">Cancel</el-button>
<el-button type="primary" @click="saveEdit()">OK</el-button>
</span>
</el-dialog>
<!-- 标记弹出框 -->
<el-dialog title="Remarks" :visible.sync="remarkBox" width="550px">
<el-form ref="remark" :model="remarkMes" label-width="130px">
<el-form-item label="Editorial board :">
<p style="line-height: 20px;margin-top: 6px;">{{remarkMes.realname}}</p>
</el-form-item>
<el-form-item label="Email :">
<p style="line-height: 20px;margin-top: 6px;">{{remarkMes.email}}</p>
</el-form-item>
<el-form-item label="Content :">
<el-input type="textarea" rows="5" v-model="remarkMes.remark"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="remarkBox = false">Cancel</el-button>
<el-button type="primary" @click="saveRemark">Save</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
baseUrl: this.Common.baseUrl,
edit_id: localStorage.getItem('U_id'),
now_year: 0,
tableData_0: [],
tableData_A: [],
tableData_B: [],
tableData_C: [],
df_jour: [],
df_group: [],
add_jour: [],
add_group: [],
add_country: [],
addVisible: false,
editVisible: false,
addForm: {
email: '',
board_icon:'',
board_group_id: -1
},
editForm: {
journal_id: 0
},
edit_group: [],
dis_able: false,
remarkMes: {
remark: ''
},
remarkBox: false,
query: {
journal_id: 0,
journal_title: '',
},
imageUrl: '',
imageUrl_: '',
imageUrl_Mark: 0,
title_options: [{
value: 'Instructor'
},
{
value: 'Assistant Professor'
},
{
value: 'Senior Assistant Professor'
},
{
value: 'Associate Professor'
},
{
value: 'Senior Associate professor'
},
{
value: 'Professor'
},
{
value: 'Researcher'
},
{
value: 'Associate Researcher'
},
{
value: 'Assistant Researcher'
},
{
value: 'RN'
},
{
value: 'Research Fellow'
},
{
value: 'Associate Research Scientist'
},
{
value: 'Research Scientist'
},
{
value: 'Senior Research Fellow'
},
{
value: 'Senior Lecturer'
},
{
value: 'Physician'
},
{
value: 'Attending Physician'
},
{
value: 'Associate Chief Physician'
},
{
value: 'Chief Physician'
},
{
value: 'Senior Research Scientist'
},
{
value: 'Honorary Senior Research Fellow'
},
{
value: 'Director'
},
{
value: 'Executive Director'
},
{
value: 'Sr. Bioinformatics Scientist'
},
{
value: 'Psychotherapist'
},
{
value: 'Postdoctoral Researcher'
},
{
value: 'Managing Editor'
},
{
value: 'Scientific Editor'
},
{
value: 'Production Editor'
},
{
value: 'Assistant Editor'
},
{
value: 'Engineer'
},
{
value: 'Lecturer'
},
{
value: 'Investigator'
},
{
value: 'Senior Investigator'
},
{
value: '教授'
},
{
value: '副教授'
},
{
value: '讲师'
},
{
value: '主任医师'
},
{
value: '副主任医师'
},
{
value: '主治医师'
},
{
value: '主任中医师'
},
{
value: '副主任中医师'
}
],
rules: {
account: [{
required: true,
message: 'Please input account',
trigger: 'blur'
}],
email: [{
required: true,
message: 'Please input 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"
}],
name: [{
required: true,
message: 'Please input realname',
trigger: 'blur'
}],
journal_id: [{
required: true,
message: 'Please select a journal',
trigger: 'blur'
}],
board_group_id: [{
required: true,
message: 'Please select a group',
trigger: 'blur'
}],
website: [{
required: true,
message: 'Please input website',
trigger: 'blur'
}],
type: [{
required: true,
message: 'Please input type',
trigger: 'blur'
}],
dr: [{
required: true,
message: 'Please input academic degree',
trigger: 'blur'
}],
title: [{
required: true,
message: 'Please input technical',
trigger: 'blur'
}],
field: [{
required: true,
message: 'Please input field ',
trigger: 'blur'
}],
board_icon: [{
required: true,
message: 'Please select a icon',
trigger: 'blur'
}],
address: [{
required: true,
message: 'Please input affiliation',
trigger: 'blur'
}],
country: [{
required: true,
message: 'Please select a country',
trigger: 'blur'
}],
}
};
},
created() {
this.getDate();
},
methods: {
// 获取编委和负责期刊列表数据
getDate() {
const loading = this.$loading({
lock: true,
text: 'Loading...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
this.$api
.post('api/Monitor/getboards', {'journal_id': this.$route.query.id})
.then(res => {
if (res.code == 0) {
if (res.data.boards.main != undefined) {
this.tableData_A = res.data.boards.main;
// for (var i = 0; i < this.tableData_A.length; i++) {
// this.getScoreDataA(i, this.tableData_A[i].score)
// }
} else {
this.tableData_A = []
}
if (res.data.boards.remain != undefined) {
this.tableData_B = res.data.boards.remain;
// for (var i = 0; i < this.tableData_B.length; i++) {
// this.getScoreDataB(i, this.tableData_B[i].score)
// }
} else {
this.tableData_B = []
}
if (res.data.boards.member != undefined) {
this.tableData_C = res.data.boards.member;
// for (var i = 0; i < this.tableData_C.length; i++) {
// this.getScoreDataC(i, this.tableData_C[i].score)
// }
} else {
this.tableData_C = []
}
//this.tableData_A = res.data.boards.member
loading.close();
} else {
this.$message.error(res.msg);
loading.close();
}
})
.catch(err => {
this.$message.error(err);
loading.close();
});
},
// 分组管理
addGroup() {
this.$router.push('/editorGroup');
},
// 用户跳转
perSonnel(e) {
let routerJump = this.$router.resolve({
path: '/partyRole',
query: {
id: e
}
});
window.open(routerJump.href, '_blank');
},
// 添加操作
addEditor(index, row) {
this.addForm.journal_id = this.add_jour[0].journal_id
this.getJourAdd()
this.addVisible = true;
},
// 保存添加
saveAdd() {
this.$refs.add_Form.validate((valid) => {
if (valid) {
if (this.addForm.board_icon == '' || this.addForm.board_icon == undefined) {
this.$message.error('Please upload the picture!');
return
}
this.$api
.post('api/Board/addBoard', this.addForm)
.then(res => {
if (res.code == 0) {
this.addVisible = false;
this.$refs.add_Form.resetFields();
this.$message.success(`Added successfully`);
this.dis_able = false
this.getDate();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
return false;
}
});
},
// 添加关闭
addVisCancle() {
this.$refs['add_Form'].resetFields();
this.addForm.email = ''
this.dis_able = false
},
// 编辑操作
handleEdit(index, row) {
this.editForm = Object.assign({}, row);
console.log(this.editForm,'this.editForm')
this.imageUrl_ = this.baseUrl + 'journalpublic/' + this.editForm.board_icon
this.imageUrl_Mark = 0
this.editVisible = true
// this.getJourEdit(this.query.journal_id)
},
// 编辑编委操作
bhandleEdit(index, row) {
console.log(row,'row')
},
// 改变期刊
getJourEdit(e) {
this.$api
.post('api/Board/getBoardGroupList', {
journal_id: e
})
.then(res => {
if (res.code == 0) {
this.edit_group = res.data.groups;
this.edit_group.unshift({
'board_group_id': 0,
'group_name': 'No Group'
})
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
},
// 保存编辑
saveEdit() {
this.$refs.edit_Form.validate((valid) => {
if (valid) {
this.$api
.post('api/Board/editBoard', this.editForm)
.then(res => {
if (res.code == 0) {
this.editVisible = false;
this.$refs.edit_Form.resetFields();
this.$message.success(`Edit successfully`);
this.getDate();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
if (this.imageUrl_Mark == 1) {
this.$api
.post('api/Board/editIcon', this.editForm)
.then(res => {
if (res.code == 0) {
this.imageUrl_Mark = 0
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
} else {
return false;
}
});
},
// 删除操作
handleDelete(index, row) {
// 二次确认删除
this.$confirm('Are you sure you want to delete?', 'Tips', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/Board/delBoard', row)
.then(res => {
if (res.code == 0) {
this.$message.success('Delete succeeded');
this.getDate();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
})
.catch(() => {});
},
// 点击注册
Goto_res() {
this.$router.push('/register');
},
// 标记弹出框
BoxRemark(e) {
this.remarkBox = true;
this.remarkMes.realname = e.name;
this.remarkMes.user_id = e.tuser_id;
this.remarkMes.email = e.email;
this.remarkMes.remark = e.remark;
},
// 修改标记
saveRemark() {
this.$api.post('api/User/editRemarkForUser', this.remarkMes)
.then(res => {
if (res.code == 0) {
this.$message.success('Success');
this.remarkBox = false;
this.getDate();
} else {
this.$message.error(res.msg);
}
});
},
// 指数颜色
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;"><br/>(' + time +
')</span>'
} else if (num < 15) {
str = '<b style="color:#cbb504">' + num +
'</b><span style="color:#aaa;font-size:14px;margin-left:5px;"><br/>(' + time +
')</span>'
} else {
str = '<b style="color:#0cbc15">' + num +
'</b><span style="color:#aaa;font-size:14px;margin-left:5px;"><br/>(' + time +
')</span>'
}
if (time == 0) {
str =
'<b style="color:#aaa;">0</b><br/><span style="color:#aaa;font-size:14px;margin-left:5px;">(No time)</span>'
}
return str;
},
//上传图片-添加
handleAvatarSuccess(res, file) {
if (res.code == 0) {
this.addForm.board_icon = res.upurl;
} 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;
},
//上传图片-编辑
handleAvatarSuccess_(res, file) {
if (res.code == 0) {
this.editForm.board_icon = res.upurl;
// this.imageUrl_ = this.baseUrl + 'boardIcon/' + res.upurl;
this.imageUrl_Mark = 1
} 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;
},
}
};
</script>
<style scoped>
.handle-box {
margin-bottom: 20px;
}
.table {
width: 100%;
font-size: 14px;
}
.red {
color: #ff0000;
}
.zhu_ce {
text-decoration: underline;
color: #006699;
font-weight: bold;
cursor: pointer;
}
.biaoTou {
background-color: #006699;
font-size: 14px;
min-width: 800px;
}
.nullTable {
margin-bottom: 20px;
}
.shen_fen {
margin: 30px 0 20px 0;
font-weight: bold;
letter-spacing: -0.5px;
}
.shen_number {
margin-bottom: 15px;
margin-left: 5px;
}
.perSonGo:hover {
text-decoration: underline;
color: #006699;
cursor: pointer;
}
.starSty {
width: 18px;
margin-right: 4px;
vertical-align: text-top;
}
.starSty:nth-last-child(1) {
margin-right: 0;
}
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
width: 140px;
height: 140px;
}
.avatar-uploader_small {
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;
}
.avatar-uploader_small .el-upload {
width: 80px;
height: 80px;
}
.avatar-uploader_small .avatar-uploader-icon {
line-height: 80px;
margin-left: -30px;
}
.avatar {
width: 140px;
height: 140px;
display: block;
}
</style>

View File

@@ -926,6 +926,22 @@ export default new Router({
title: 'Re-review'
}
},
{
name:'Editorial-Board',
path: '/editorialBoard', // 编委管理
component: () => import('../components/page/editorialBoard'),
meta: {
title: 'editorialBoard'
}
},
{
name:'editorial-Board-List',
path: '/Board-List', // 单刊编委列表
component: () => import('../components/page/editorialBoardList'),
meta: {
title: 'editorialBoardList'
}
},
{
path: '/404',
component: () => import( /* webpackChunkName: "404" */