提交
This commit is contained in:
@@ -19,8 +19,8 @@ const service = axios.create({
|
||||
// baseURL: 'https://submission.tmrjournals.com/', //正式 记得切换
|
||||
// baseURL: 'http://www.tougao.com/', //测试本地 记得切换
|
||||
// baseURL: 'http://192.168.110.110/tougao/public/index.php/',
|
||||
// baseURL: '/api', //本地
|
||||
baseURL: '/', //正式
|
||||
baseURL: '/api', //本地
|
||||
// baseURL: '/', //正式
|
||||
|
||||
});
|
||||
|
||||
|
||||
208
src/components/common/cv.vue
Normal file
208
src/components/common/cv.vue
Normal file
@@ -0,0 +1,208 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 个人简历弹出框 -->
|
||||
<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>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Schart from 'vue-schart';
|
||||
import bus from '../common/bus';
|
||||
export default {
|
||||
name: 'dashboard',
|
||||
data() {
|
||||
return {
|
||||
user_id: '',
|
||||
baseUrl: this.Common.baseUrl,
|
||||
mediaUrl: this.Common.mediaUrl,
|
||||
cvitaTable1: [],
|
||||
cvitaForm: {},
|
||||
fileL_pdf1: []
|
||||
};
|
||||
},
|
||||
created: function () {},
|
||||
|
||||
components: {
|
||||
Schart,
|
||||
'el-image-viewer': () => import('element-ui/packages/image/src/image-viewer')
|
||||
},
|
||||
computed: {},
|
||||
methods: {
|
||||
init() {
|
||||
this.user_id = localStorage.getItem('U_id');
|
||||
this.cvitaForm.user_id = this.user_id;
|
||||
console.log('this.user_id at line 75:', this.user_id)
|
||||
this.getCVitaData();
|
||||
},
|
||||
// 获取简历列表
|
||||
getCVitaData() {
|
||||
this.$api
|
||||
.post('api/Ucenter/getUserInfo', {
|
||||
user_id: this.user_id
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code == 0) {
|
||||
this.cvitaTable1 = res.data.cvs;
|
||||
this.$emit('cvitaTable', this.cvitaTable1);
|
||||
} else {
|
||||
this.$message.error(res.msg);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
this.$message.error(err);
|
||||
});
|
||||
},
|
||||
|
||||
// 删除简历
|
||||
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(() => {});
|
||||
},
|
||||
|
||||
// 星级弹出层
|
||||
|
||||
// 上传文件
|
||||
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>
|
||||
.el-image-viewer__wrapper {
|
||||
z-index: 5000 !important;
|
||||
padding: 50px 0;
|
||||
}
|
||||
|
||||
.el-image-viewer__wrapper .el-icon-circle-close {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.txt_pdf {
|
||||
margin: 0 0 20px 10px;
|
||||
display: inline-block;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.txt_pdf > i {
|
||||
color: #66a9f0;
|
||||
font-weight: bold;
|
||||
margin-left: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -998,7 +998,11 @@
|
||||
:value="item.journal_id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label=" " label-width="0px">
|
||||
<commonCv ref="commoncv" @cvitaTable="getCVitaData"></commonCv>
|
||||
</el-form-item> -->
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="youthVisible = false">Cancel</el-button>
|
||||
@@ -1027,12 +1031,14 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import commonCv from '../common/cv.vue';
|
||||
import Schart from 'vue-schart';
|
||||
import bus from '../common/bus';
|
||||
export default {
|
||||
name: 'dashboard',
|
||||
data() {
|
||||
return {
|
||||
applyCvitaTable: [],
|
||||
user_id: localStorage.getItem('U_id'),
|
||||
username: localStorage.getItem('U_name'),
|
||||
userrole: localStorage.getItem('U_status'),
|
||||
@@ -1343,11 +1349,15 @@ export default {
|
||||
},
|
||||
|
||||
components: {
|
||||
commonCv,
|
||||
Schart,
|
||||
'el-image-viewer': () => import('element-ui/packages/image/src/image-viewer')
|
||||
},
|
||||
computed: {},
|
||||
methods: {
|
||||
getCVitaData(data){
|
||||
this.applyCvitaTable = data;
|
||||
},
|
||||
handleDeleteMajor(v) {
|
||||
this.$confirm('Are you sure you want to delete this Field ?', 'Tip', {
|
||||
type: 'warning'
|
||||
@@ -2102,6 +2112,12 @@ export default {
|
||||
|
||||
// 青年科学家弹出框
|
||||
youthPoint() {
|
||||
// this.youthForm.journal_id = '';
|
||||
|
||||
// this.youthVisible = true;
|
||||
// this.$nextTick(()=>{
|
||||
// this.$refs.commoncv.init();
|
||||
// })
|
||||
// 判断
|
||||
this.$api
|
||||
.post('api/Ucenter/checkApply', {
|
||||
@@ -2111,7 +2127,12 @@ export default {
|
||||
.then((res) => {
|
||||
if (res.code == 0) {
|
||||
this.youthForm.journal_id = '';
|
||||
this.youthVisible = true;
|
||||
|
||||
this.youthVisible = true;
|
||||
// this.$nextTick(()=>{
|
||||
// this.$refs.commoncv.init();
|
||||
// })
|
||||
|
||||
} else {
|
||||
// 提示完善信息
|
||||
this.tipVisible = true;
|
||||
@@ -2150,7 +2171,7 @@ export default {
|
||||
this.$message.error(err);
|
||||
});
|
||||
} else {
|
||||
this.$message.error('error submit!!');
|
||||
this.$message.error('Please select a journal!');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -266,9 +266,9 @@
|
||||
<b v-if="item.indexs_show==0" style="color: #aaa;">Null</b>
|
||||
<i class="el-icon-edit" @click="HIndexEdit(item)" v-if="form.state==1" style="margin-left: 10px;color: #006699;cursor: pointer;"></i>
|
||||
</p> -->
|
||||
<p v-if="item.address"><font>Address : </font>{{ item.address }}</p>
|
||||
<p v-if="item.company"><font>Affiliation : </font>{{ item.company }}</p>
|
||||
<p v-if="item.department"><font>Department : </font>{{ item.department }}</p>
|
||||
<p v-if="item.address&&isShowAuthorInfo"><font>Address : </font>{{ item.address }}</p>
|
||||
<div v-if="item.company" style="display: flex;align-items: flex-start;"><font style="display: inline-block;width: 70px;color:#777 ;">Affiliation : </font><p v-html="getAllCompany(item.company)" style="width: calc(100% - 70px);"></p></div>
|
||||
<p v-if="item.department&&isShowAuthorInfo"><font>Department : </font>{{ item.department }}</p>
|
||||
<p v-if="item.title"><font>Title : </font>{{ item.title }}</p>
|
||||
<p v-if="item.country"><font>Country : </font>{{ item.country }}</p>
|
||||
</div>
|
||||
@@ -486,6 +486,7 @@
|
||||
<template v-for="(_, index1) in maxRepeatReviewCount()">
|
||||
<th>{{ index1 + 2 }}<sup>nd</sup> review</th>
|
||||
</template>
|
||||
<!-- <th>final state</th> -->
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -504,18 +505,7 @@
|
||||
<td @click="handleClick(iken)" style="cursor: pointer">
|
||||
<span style="display: inline-block; margin-left: 4px; margin-right: 8px">
|
||||
<font
|
||||
v-if="iken.state == 0"
|
||||
style="
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
display: block;
|
||||
border-radius: 10px;
|
||||
background-color: #ccc;
|
||||
"
|
||||
>
|
||||
</font>
|
||||
<font
|
||||
v-if="iken.state == 1 || iken.state == 3"
|
||||
v-if="iken.recommend == 1 || iken.recommend == 2"
|
||||
style="
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
@@ -526,7 +516,7 @@
|
||||
>
|
||||
</font>
|
||||
<font
|
||||
v-if="iken.state == 2"
|
||||
v-if="iken.recommend == 3|| iken.recommend == 4"
|
||||
style="
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
@@ -537,7 +527,11 @@
|
||||
>
|
||||
</font>
|
||||
</span>
|
||||
<span>{{ mystate(iken.state) }}</span>
|
||||
<span v-if="iken.recommend == 1">Minor</span>
|
||||
<span v-else-if="iken.recommend == 2">Major</span>
|
||||
<span v-else-if="iken.recommend == 3">Reject</span>
|
||||
<span v-else-if="iken.recommend == 4">Reject</span>
|
||||
|
||||
</td>
|
||||
<!-- 关键:按最大重复次数遍历,而非仅遍历当前iken.repeat -->
|
||||
<template v-for="(_1, index1) in maxRepeatReviewCount()">
|
||||
@@ -595,6 +589,44 @@
|
||||
</span>
|
||||
</td>
|
||||
</template>
|
||||
<!-- <td @click="handleClick(iken)" style="cursor: pointer">
|
||||
<span style="display: inline-block; margin-left: 4px; margin-right: 8px">
|
||||
<font
|
||||
v-if="iken.state == 0"
|
||||
style="
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
display: block;
|
||||
border-radius: 10px;
|
||||
background-color: #ccc;
|
||||
"
|
||||
>
|
||||
</font>
|
||||
<font
|
||||
v-if="iken.state == 1 || iken.state == 3"
|
||||
style="
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
display: block;
|
||||
border-radius: 10px;
|
||||
background-color: #67c23a;
|
||||
"
|
||||
>
|
||||
</font>
|
||||
<font
|
||||
v-if="iken.state == 2"
|
||||
style="
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
display: block;
|
||||
border-radius: 10px;
|
||||
background-color: #f56c6c;
|
||||
"
|
||||
>
|
||||
</font>
|
||||
</span>
|
||||
<span>{{ mystate(iken.state) }}</span>
|
||||
</td> -->
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
@@ -1048,6 +1080,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isShowAuthorInfo: false,
|
||||
activeFinalComment: [],
|
||||
isShowAI: false,
|
||||
currentArticleData: {},
|
||||
@@ -1343,6 +1376,8 @@ export default {
|
||||
};
|
||||
},
|
||||
async created() {
|
||||
|
||||
|
||||
await this.initarticle();
|
||||
await this.getAi();
|
||||
this.initFileList();
|
||||
@@ -1411,6 +1446,15 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getAllCompany(company) {
|
||||
let str = '';
|
||||
var list=company.split('/');
|
||||
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
str +=`${i+1}. `+ list[i] + '<br/>';
|
||||
}
|
||||
return str;
|
||||
},
|
||||
// 算平均分
|
||||
avegeCount(arry) {
|
||||
let str = 0;
|
||||
@@ -1870,6 +1914,22 @@ export default {
|
||||
})
|
||||
|
||||
.then((res) => {
|
||||
|
||||
const dynamicTimestamp = res.article.ctime;
|
||||
const dynamicDate = new Date(dynamicTimestamp * 1000);
|
||||
const targetDate = new Date(2025, 10, 3);
|
||||
dynamicDate.setHours(0, 0, 0, 0);
|
||||
targetDate.setHours(0, 0, 0, 0);
|
||||
// 2025-11-03 ---上线了自动解析word 识别作者功能 去掉了 address和department字段
|
||||
const isDynamicDateAfterTarget = dynamicDate > targetDate;
|
||||
if (!isDynamicDateAfterTarget) {
|
||||
// 判断日期是否小于等于 2025-11-03
|
||||
this.isShowAuthorInfo = true;
|
||||
}else{
|
||||
|
||||
this.isShowAuthorInfo = false;
|
||||
}
|
||||
|
||||
this.initMajor();
|
||||
this.form.username = res.article.account;
|
||||
this.form.title = res.article.title;
|
||||
|
||||
@@ -665,6 +665,7 @@
|
||||
<template v-for="(_, index1) in maxRepeatReviewCount(item)">
|
||||
<th>{{ index1 + 2 }}<sup>nd</sup> review</th>
|
||||
</template>
|
||||
<!-- <th>final state</th> -->
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -673,20 +674,10 @@
|
||||
<td>Reviewer {{ reviewerIndex + 1 }}</td>
|
||||
<!-- 1st review:原逻辑不变 -->
|
||||
<td>
|
||||
<span style="display: inline-block; margin-left: 4px; margin-right: 8px">
|
||||
<span style="display: inline-block; margin-left: 4px; margin-right: 8px" v-if="iken.question">
|
||||
|
||||
<font
|
||||
v-if="iken.state == 0"
|
||||
style="
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
display: block;
|
||||
border-radius: 10px;
|
||||
background-color: #ccc;
|
||||
"
|
||||
>
|
||||
</font>
|
||||
<font
|
||||
v-if="iken.state == 1 || iken.state == 3"
|
||||
v-if="iken.question.recommend == 1 || iken.question.recommend == 2"
|
||||
style="
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
@@ -697,7 +688,7 @@
|
||||
>
|
||||
</font>
|
||||
<font
|
||||
v-if="iken.state == 2"
|
||||
v-if="iken.question.recommend == 3|| iken.question.recommend == 4"
|
||||
style="
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
@@ -708,7 +699,11 @@
|
||||
>
|
||||
</font>
|
||||
</span>
|
||||
<span>{{ mystate(iken.state) }}</span>
|
||||
<span v-if="iken.question.recommend == 1">Minor</span>
|
||||
<span v-else-if="iken.question.recommend == 2">Major</span>
|
||||
<span v-else-if="iken.question.recommend == 3">Reject</span>
|
||||
<span v-else-if="iken.question.recommend == 4">Reject</span>
|
||||
|
||||
</td>
|
||||
<!-- 关键:按最大重复次数遍历,而非仅遍历当前iken.repeat -->
|
||||
<template v-for="(_1, index1) in maxRepeatReviewCount(item)">
|
||||
@@ -762,6 +757,45 @@
|
||||
</span>
|
||||
</td>
|
||||
</template>
|
||||
<!-- <td>
|
||||
<span style="display: inline-block; margin-left: 4px; margin-right: 8px">
|
||||
<font
|
||||
v-if="iken.state == 0"
|
||||
style="
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
display: block;
|
||||
border-radius: 10px;
|
||||
background-color: #ccc;
|
||||
"
|
||||
>
|
||||
</font>
|
||||
<font
|
||||
v-if="iken.state == 1 || iken.state == 3"
|
||||
style="
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
display: block;
|
||||
border-radius: 10px;
|
||||
background-color: #67c23a;
|
||||
"
|
||||
>
|
||||
</font>
|
||||
<font
|
||||
v-if="iken.state == 2"
|
||||
style="
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
display: block;
|
||||
border-radius: 10px;
|
||||
background-color: #f56c6c;
|
||||
"
|
||||
>
|
||||
</font>
|
||||
</span>
|
||||
<span>{{ mystate(iken.state) }}</span>
|
||||
</td> -->
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -2743,7 +2777,7 @@ export default {
|
||||
})
|
||||
|
||||
.then(async (res) => {
|
||||
console.log('res at line 2219:', res);
|
||||
|
||||
this.Total = res.data.total;
|
||||
this.tableData = res.data.lists;
|
||||
for (let i = 0; i < this.tableData.length; i++) {
|
||||
@@ -2751,11 +2785,10 @@ export default {
|
||||
await this.$api
|
||||
.post('api/Finalreview/getReviewRecord', { article_id: this.tableData[i].article_id })
|
||||
.then((res) => {
|
||||
console.log('res at line 2356:', res);
|
||||
|
||||
if (res.status == 1) {
|
||||
this.$set(this.tableData[i], 'reviewScore', res.data.article_review);
|
||||
console.log('.reviewScore at line 2358:', this.tableData[i].reviewScore);
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('API call failed:', error);
|
||||
|
||||
@@ -45,7 +45,6 @@
|
||||
<b v-if="scope.row.article_state == 4">Revision</b>
|
||||
<b v-if="scope.row.article_state == 5">Accept</b>
|
||||
<b v-if="scope.row.article_state == 8">Final Decision</b>
|
||||
|
||||
<b v-if="scope.row.astate == 6">Pre-accept</b>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
@@ -44,12 +44,12 @@
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="Recommendation" width="160" align="center">
|
||||
<!-- <el-table-column label="Recommendation" width="160" align="center">
|
||||
<template slot-scope="scope">
|
||||
<b v-if="scope.row.recommend == 1||scope.row.recommend == 2">Accept</b>
|
||||
<b v-if="scope.row.recommend == 3||scope.row.recommend == 4">Reject</b>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column> -->
|
||||
<el-table-column label=" " width="230">
|
||||
<template slot-scope="scope">
|
||||
<router-link
|
||||
|
||||
Reference in New Issue
Block a user