Files
tougao_web/src/components/page/editmbereditor.vue
徐哼唧L 5ed3073b6e 0
2022-12-09 16:18:12 +08:00

519 lines
15 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>
<div class="crumbs">
<el-breadcrumb separator="/">
<el-breadcrumb-item>
<i class="el-icon-connection"></i> Editorial board list
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="container">
<!-- <div class="handle-box">
<el-button type="primary" icon="el-icon-circle-plus-outline" @click="addEditor">add</el-button>
</div> -->
<div class="handle-box" :rules="rules">
<el-select v-model="query.journal_id" placeholder="Please select a journal" @change="chan_id">
<el-option v-for="item in df_jour" :label="item.title" :key="item.journal_id"
:value="item.journal_id"></el-option>
</el-select>
</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 prop="account" label="username" align="center"></el-table-column>
<el-table-column prop="realname" label="realname" align="center"></el-table-column>
<el-table-column prop="phone" label="phone" align="center"></el-table-column>
<el-table-column prop="email" label="email" align="center"></el-table-column>
<el-table-column prop="" label="WOS H index" width="120px" align="center">
<template slot-scope="scope">
<p v-if="scope.row.indexs_show!=0" style="display: inline-block;width: 90px;">
<b :style="{color:scope.row.indexs_color}">{{scope.row.indexs[0].h_index}}</b>
({{now_year}})
<i class="el-icon-edit" @click="HIndexEdit(scope.row)"
style="margin-left: 10px;color: #006699;cursor: pointer;"></i>
</p>
<p v-if="scope.row.indexs_show==0" style="color: #aaa;display: inline-block;width: 90px;">
Null
<i class="el-icon-edit" @click="HIndexEdit(scope.row)"
style="margin-left: 10px;color: #006699;cursor: pointer;"></i>
</p>
<!-- <el-button size="mini" type="text" @click="HIndexList(scope.row)">More ></el-button> -->
</template>
</el-table-column>
<el-table-column label="" width="110" align="center">
<template slot-scope="scope">
<el-button size="mini" type="danger" plain icon="el-icon-delete"
@click="handleDelete(scope.$index, scope.row)">Delete</el-button>
</template>
</el-table-column>
</el-table>
</div>
<!-- 添加弹出框 -->
<el-dialog title="Add Editorial board member" :visible.sync="addVisible" width="40%">
<el-form ref="add_Form" :model="addForm" :rules="rules" label-width="150px">
<el-form-item label="account" prop="account">
<el-input v-model="addForm.account" @blur='saerNa_U()'></el-input>
</el-form-item>
<el-form-item label="email" prop="email">
<el-input v-model="addForm.email" @blur='saerEm_U()'></el-input>
</el-form-item>
<el-form-item label="journal" prop="journal_id">
<el-select v-model="addForm.journal_id" filterable placeholder="Please select a responsible Journal"
value-key="groupID" style="width: 300px;">
<el-option v-for="item in df_jour" :label="item.title" :key="item.journal_id"
:value="item.journal_id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="realname" prop="realname">
<el-input v-model="addForm.realname"></el-input>
</el-form-item>
<el-form-item label="password" prop="password">
<el-input v-model="addForm.password" type="password"></el-input>
</el-form-item>
<el-form-item label="Confirm password" prop="repassword">
<el-input v-model="addForm.repassword" type="password"></el-input>
</el-form-item>
<el-form-item label="phone" prop="phone">
<el-input v-model="addForm.phone"></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(addForm)" :disabled="this.btn_alert">OK</el-button>
</span>
</el-dialog>
<!-- 已有信息弹出框 -->
<el-dialog title="Add Editorial board member" :visible.sync="oldVisible" width="40%">
<el-form ref="old_Form" :model="oldForm" :rules="rules" label-width="100px">
<el-form-item label="account">
{{oldForm.account}}
</el-form-item>
<el-form-item label="email">
{{oldForm.email}}
</el-form-item>
<el-form-item label="journal" prop="journal_id">
<el-select v-model="oldForm.journal_id" filterable placeholder="Please select a responsible Journal"
value-key="groupID" style="width: 300px;">
<el-option v-for="item in df_jour" :label="item.title" :key="item.journal_id"
:value="item.journal_id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="realname">
{{oldForm.realname}}
</el-form-item>
<el-form-item label="phone">
{{oldForm.phone}}
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="oldVisible = false">Cancel</el-button>
<el-button type="primary" @click="saveOld(oldForm)">OK</el-button>
</span>
</el-dialog>
<!-- H指数列表弹出框 -->
<el-dialog title="Edit H Index" :visible.sync="HListVisible" width="400px">
<div style="margin: 0 0 20px 10px;font-weight: bold;">{{HIxForm.realname}}</div>
<div class="HIList HIListTit">
<p>Year</p>
<p>WOS H index</p>
</div>
<div v-for="item in HIxData" class="HIList">
<p>{{item.year}}</p>
<p>{{item.h_index}}</p>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="HListVisible=false">OK</el-button>
</span>
</el-dialog>
<!-- H指数修改弹出框 -->
<el-dialog title="Edit H Index" :visible.sync="HEditVisible" width="400px">
<div style="margin: 0 0 20px 10px;font-weight: bold;">{{HIxForm.realname}}</div>
<el-form ref="old_Form" :model="HIxForm" :rules="rules" label-width="150px">
<el-form-item>
<span slot="label">
WOS H index ({{this.now_year}})
</span>
<el-input v-model="HIxForm.index"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="saveHIx(HIxForm)">OK</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
edit_id: localStorage.getItem('U_id'),
now_year: 0,
tableData: [],
df_jour: [],
addVisible: false,
oldVisible: false,
HListVisible: false,
HEditVisible: false,
addForm: {},
oldForm: {},
HIxForm: {
index: ''
},
HIxData: [],
aid: -1,
id: -1,
btn_alert: false,
query: {
journal_id: 0,
},
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"
}],
journal_id: [{
required: true,
message: 'Please select a responsible Journal',
trigger: 'blur'
}],
password: [{
required: true,
message: 'Please input password',
trigger: 'blur'
}],
repassword: [{
required: true,
message: 'Please input confirm password',
trigger: 'blur'
}]
}
};
},
created() {
this.getjour();
// this.getdate();
},
methods: {
// 获取编委和负责期刊列表数据
getdate() {
this.$api
.post('api/Chief/getJournalBoard', this.query)
.then(res => {
this.tableData = res.data.boards;
for (var i = 0; i < this.tableData.length; i++) {
if (this.tableData[i].indexs.length != 0) {
if (this.tableData[i].indexs[0].year == this.now_year) {
this.tableData[i].indexs_show = this.tableData[i].indexs[0].h_index
if (this.tableData[i].indexs_show < 10) {
this.tableData[i].indexs_color = "#cb160a"
} else if (this.tableData[i].indexs_show < 15) {
this.tableData[i].indexs_color = "#cbb504"
} else {
this.tableData[i].indexs_color = "#0cbc15"
}
} else {
this.tableData[i].indexs_show = 0
}
} else {
this.tableData[i].indexs_show = 0
}
}
})
.catch(err => {
this.$message.error(err);
});
},
getjour() {
this.now_year = new Date().getFullYear()
this.$api
.post('api/Chief/getJournalsByEditor', {
'user_id': this.edit_id
})
.then(res => {
if (res.code == 0) {
this.df_jour = res.data.journals;
this.query.journal_id = this.df_jour[0].journal_id
this.$api
.post('api/Chief/getJournalBoard', this.query)
.then(res => {
this.tableData = res.data.boards;
for (var i = 0; i < this.tableData.length; i++) {
if (this.tableData[i].indexs.length != 0) {
if (this.tableData[i].indexs[0].year == this.now_year) {
this.tableData[i].indexs_show = this.tableData[i].indexs[0].h_index
if (this.tableData[i].indexs_show < 10) {
this.tableData[i].indexs_color = "#cb160a"
} else if (this.tableData[i].indexs_show < 15) {
this.tableData[i].indexs_color = "#cbb504"
} else {
this.tableData[i].indexs_color = "#0cbc15"
}
} else {
this.tableData[i].indexs_show = 0
}
} else {
this.tableData[i].indexs_show = 0
}
}
})
.catch(err => {
this.$message.error(err);
});
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
},
// 下拉分类搜索
chan_id(event) {
this.getdate();
},
// 添加操作
addEditor(index, row) {
this.aid = index;
this.addVisible = true;
},
// 查找与他相同的账号
saerNa_U() {
if (this.addForm.account != undefined) {
this.$api
.post('api/Chief/checkEmailForUser', {
'email': this.addForm.account
})
.then(res => {
if (res.code == 0) {
if (res.data.user_info != null) {
this.$confirm(
'this account already exists. Do you want to operate under this account',
'Tips', {
type: 'warning'
})
.then(() => {
this.addVisible = false;
this.$refs.add_Form.resetFields();
// this.id = index;
this.oldVisible = true;
this.oldForm = res.data.user_info;
})
.catch(() => {});
this.btn_alert = true
} else {
this.btn_alert = false
}
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
},
// 查找与他相同的邮箱
saerEm_U() {
if (this.addForm.email != undefined) {
this.$api
.post('api/Chief/checkEmailForUser', {
'email': this.addForm.email
})
.then(res => {
if (res.code == 0) {
if (res.data.user_info != null) {
this.$confirm(
'this account already exists. Do you want to operate under this account',
'Tips', {
type: 'warning'
})
.then(() => {
this.addVisible = false;
this.$refs.add_Form.resetFields();
// this.id = index;
this.oldVisible = true;
this.oldForm = res.data.user_info;
})
.catch(() => {});
this.btn_alert = true
} else {
this.btn_alert = false
}
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
}
},
// 保存添加
saveAdd(addForm) {
if (addForm.password == addForm.repassword) {
this.$refs.add_Form.validate((valid) => {
if (valid) {
this.$api
.post('api/Chief/addJournalBoard', this.addForm)
.then(res => {
if (res.code == 0) {
this.addVisible = false;
this.$refs.add_Form.resetFields();
this.$message.success(`Added successfully`);
this.getdate();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
return false;
}
});
} else {
this.$message.error("The two passwords are inconsistent");
}
},
// 保存old添加
saveOld(oldForm) {
this.$refs.old_Form.validate((valid) => {
if (valid) {
this.$api
.post('api/Chief/addJournalBoardHas', this.oldForm)
.then(res => {
if (res.code == 0) {
this.oldVisible = false;
this.$refs.old_Form.resetFields();
this.$message.success(`Added successfully`);
this.getdate();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
} else {
return false;
}
});
},
// H指数列表
HIndexList(row) {
this.HListVisible = true
this.HIxForm.realname = row.realname
this.HIxData = row.indexs
},
// H指数修改
HIndexEdit(row) {
this.HEditVisible = true
this.HIxForm.user_id = row.user_id
this.HIxForm.realname = row.realname
this.HIxForm.year = this.now_year
if (row.indexs_show != 0) {
this.HIxForm.index = row.indexs_show
} else {
this.HIxForm.index = ''
}
},
// 保存index
saveHIx() {
this.$api
.post('api/Board/editIndex', this.HIxForm)
.then(res => {
if (res.code == 0) {
this.$message.success('Edit H Index succeeded');
this.HEditVisible = false
this.getdate();
} else {
this.$message.error(res.msg);
}
})
.catch(err => {
this.$message.error(err);
});
},
// 删除操作
handleDelete(index, row) {
// 二次确认删除
this.$confirm('Are you sure you want to delete', 'Tips', {
type: 'warning'
})
.then(() => {
this.$api
.post('api/Chief/delJournalBoard', 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(() => {});
}
}
};
</script>
<style scoped>
.handle-box {
margin-bottom: 20px;
}
.table {
width: 100%;
font-size: 14px;
}
.red {
color: #ff0000;
}
.HIList {
margin: 0 0 10px 10px;
}
.HIList>p {
display: inline-block;
width: 120px;
}
.HIListTit>p {
font-weight: bold;
}
</style>