tijiao
This commit is contained in:
BIN
src/assets/img/ai.png
Normal file
BIN
src/assets/img/ai.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 99 KiB |
@@ -414,8 +414,15 @@ Information:'Fill in information',
|
|||||||
},
|
},
|
||||||
Formula:{
|
Formula:{
|
||||||
FormulaTemplate:'Formula Template'
|
FormulaTemplate:'Formula Template'
|
||||||
|
},
|
||||||
|
AI: {
|
||||||
|
AISummaryAnalysis: 'AI analysis',
|
||||||
|
AIKeywords: 'Keywords',
|
||||||
|
AIAbstract: 'Abstract',
|
||||||
|
AIAbstractInfo: 'Analysis Result',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -407,7 +407,13 @@ const zh = {
|
|||||||
},
|
},
|
||||||
Formula:{
|
Formula:{
|
||||||
FormulaTemplate:'公式模版'
|
FormulaTemplate:'公式模版'
|
||||||
}
|
},
|
||||||
|
AI:{
|
||||||
|
AISummaryAnalysis:'AI分析',
|
||||||
|
AIKeywords:'关键词',
|
||||||
|
AIAbstract:'摘要',
|
||||||
|
AIAbstractInfo:'分析结果',
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1462,12 +1462,17 @@ export default {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
this.$refs.articleform.validate((valid) => {
|
this.$refs.articleform.validate((valid) => {
|
||||||
|
if (this.isAbstractTooShort(this.form.abstrart)) {
|
||||||
|
this.$message.error('The abstract should not be less than 200 Chinese characters or English words!');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
//验证文档
|
//验证文档
|
||||||
if (this.form.manuscirpt == '') {
|
if (this.form.manuscirpt == '') {
|
||||||
this.$message.error('Manuscirpt is required');
|
this.$message.error('Manuscirpt is required');
|
||||||
// console.log('file up error');
|
// console.log('file up error');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//验证作者
|
//验证作者
|
||||||
let authorlist = this.form.authorList;
|
let authorlist = this.form.authorList;
|
||||||
let Firsta = 0;
|
let Firsta = 0;
|
||||||
@@ -1508,9 +1513,11 @@ export default {
|
|||||||
this.$message.error('First author and corresponding author must be exist');
|
this.$message.error('First author and corresponding author must be exist');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
console.log('this.form.major at line 1512:', this.form.major);
|
||||||
//验证文章领域
|
//验证文章领域
|
||||||
|
this.form.major = this.majorValueList.map((item) => item.selectedValue[item.selectedValue.length - 1]).toString(',');
|
||||||
if (this.form.major == '') {
|
if (this.form.major == '') {
|
||||||
this.$message.error('Major is required');
|
this.$message.error('Please select the Research areas');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//验证选择转投但没选期刊项的情况
|
//验证选择转投但没选期刊项的情况
|
||||||
@@ -1613,7 +1620,17 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
Submission_of_manuscripts() {
|
Submission_of_manuscripts() {
|
||||||
// 提交稿件
|
// 提交稿件AI检索
|
||||||
|
this.$api
|
||||||
|
// api/Article/addArticle
|
||||||
|
.post('api/Aireview/review', {
|
||||||
|
article_id: this.form.article_id,
|
||||||
|
abstrart: this.form.abstrart,
|
||||||
|
keywords: this.form.keyWords,
|
||||||
|
api_model: 'gpt-4o'
|
||||||
|
})
|
||||||
|
.then((res) => {});
|
||||||
|
|
||||||
this.$api
|
this.$api
|
||||||
// api/Article/addArticle
|
// api/Article/addArticle
|
||||||
.post('api/Article/addArticlePart4', this.form)
|
.post('api/Article/addArticlePart4', this.form)
|
||||||
|
|||||||
@@ -5,7 +5,12 @@
|
|||||||
<el-breadcrumb-item> <i class="el-icon-lx-calendar"></i> Manuscript detail </el-breadcrumb-item>
|
<el-breadcrumb-item> <i class="el-icon-lx-calendar"></i> Manuscript detail </el-breadcrumb-item>
|
||||||
</el-breadcrumb>
|
</el-breadcrumb>
|
||||||
</div>
|
</div>
|
||||||
<div class="container_state" v-loading="loading" style="margin: 20px 0 0 0">
|
<div class="container_state" v-loading="loading" style="margin: 10px 0 0 0">
|
||||||
|
<div style="margin-bottom: 10px; margin-top: 0px;overflow: hidden;" v-if="AIcontent!=''">
|
||||||
|
<img src="@/assets/img/ai.png" style="width: 30px; height: 30px; margin-right: 4px;float: left;margin-top: 10px;" />
|
||||||
|
|
||||||
|
<p class="beautiful-gradient"style="float: right;width: calc(100% - 40px);font-size: 13px;line-height: 16px;color: #1d45f2;" >{{ AIcontent }}</p>
|
||||||
|
</div>
|
||||||
<el-row :gutter="30">
|
<el-row :gutter="30">
|
||||||
<el-col :span="16">
|
<el-col :span="16">
|
||||||
<div class="art_state_">
|
<div class="art_state_">
|
||||||
@@ -127,18 +132,14 @@
|
|||||||
</p>
|
</p>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
</el-collapse>
|
</el-collapse>
|
||||||
<el-collapse class="auth_colla auth_collna_ew" style="margin-top: -15px;">
|
<el-collapse class="auth_colla auth_collna_ew" style="margin-top: -15px">
|
||||||
<el-collapse-item title="Research areas" name="1">
|
<el-collapse-item title="Research areas" name="1">
|
||||||
|
<div style="position: relative; height: 30px">
|
||||||
|
|
||||||
|
|
||||||
<div style="position: relative;height: 30px;">
|
|
||||||
<common-major
|
<common-major
|
||||||
:articleId="editform.articleId"
|
:articleId="editform.articleId"
|
||||||
@load="initMajor()"
|
@load="initMajor()"
|
||||||
style="position: absolute; top: 10px; right: 10px"
|
style="position: absolute; top: 10px; right: 10px"
|
||||||
></common-major>
|
></common-major>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="margin: 12px 20px 30px 0px; line-height: 24px; font-size: 14px; position: relative">
|
<div style="margin: 12px 20px 30px 0px; line-height: 24px; font-size: 14px; position: relative">
|
||||||
@@ -552,6 +553,7 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
AIcontent:'',
|
||||||
previewData: {},
|
previewData: {},
|
||||||
baseUrl: this.Common.baseUrl,
|
baseUrl: this.Common.baseUrl,
|
||||||
mediaUrl: this.Common.mediaUrl,
|
mediaUrl: this.Common.mediaUrl,
|
||||||
@@ -672,6 +674,7 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
created: function () {
|
created: function () {
|
||||||
|
this.getAi();
|
||||||
this.initarticle();
|
this.initarticle();
|
||||||
|
|
||||||
this.initFileList();
|
this.initFileList();
|
||||||
@@ -807,6 +810,18 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
async getAi(){
|
||||||
|
var that = this;
|
||||||
|
await this.$api
|
||||||
|
.post('api/Aireview/get', {
|
||||||
|
article_id: this.$route.query.id
|
||||||
|
})
|
||||||
|
.then(async (res) => {
|
||||||
|
console.log('res at line 819:', res)
|
||||||
|
this.AIcontent = res.data.content?res.data.content:'';
|
||||||
|
|
||||||
|
});
|
||||||
|
},
|
||||||
async getWordimgList() {
|
async getWordimgList() {
|
||||||
var that = this;
|
var that = this;
|
||||||
await this.$api
|
await this.$api
|
||||||
@@ -1473,4 +1488,21 @@ export default {
|
|||||||
::v-deep .el-drawer__wrapper .WACContainer {
|
::v-deep .el-drawer__wrapper .WACContainer {
|
||||||
z-index: 10000 !important;
|
z-index: 10000 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.beautiful-gradient {
|
||||||
|
background: linear-gradient(135deg, #f0f9fe, #dce6ff, #d7e9fd);
|
||||||
|
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.01);
|
||||||
|
border-radius: 16px;
|
||||||
|
padding: 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: #333;
|
||||||
|
font-family: "Segoe UI", sans-serif;
|
||||||
|
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.beautiful-gradient:hover {
|
||||||
|
transform: translateY(-4px);
|
||||||
|
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -52,7 +52,19 @@
|
|||||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch" style="margin: 0 0 10px 0">Search </el-button>
|
<el-button type="primary" icon="el-icon-search" @click="handleSearch" style="margin: 0 0 10px 0">Search </el-button>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="!PreAcpVisible">
|
<div v-if="!PreAcpVisible">
|
||||||
<div v-for="(item, ikgn) in tableData" class="mangu_list">
|
<div v-for="(item, ikgn) in tableData" class="mangu_list" style="position: relative">
|
||||||
|
<img
|
||||||
|
v-if="item.ai_review != '' && item.ai_review"
|
||||||
|
src="@/assets/img/ai.png"
|
||||||
|
@click="openAI(item)"
|
||||||
|
style="cursor: pointer; width: 30px; height: 30px; position: absolute; right: 6px; top: 6px"
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
v-else
|
||||||
|
src="@/assets/img/ai.png"
|
||||||
|
@click="creatAI(item,ikgn)"
|
||||||
|
style="opacity: 0.5; cursor: pointer; width: 30px; height: 30px; position: absolute; right: 6px; top: 6px"
|
||||||
|
/>
|
||||||
<div>
|
<div>
|
||||||
<font style="color: #666b7a">ID : </font>
|
<font style="color: #666b7a">ID : </font>
|
||||||
<span
|
<span
|
||||||
@@ -253,7 +265,7 @@
|
|||||||
<div v-if="item.reportList.length > 0" style="text-align: left">
|
<div v-if="item.reportList.length > 0" style="text-align: left">
|
||||||
<div v-for="(v, i) in item.reportList" style="margin-top: 10px; overflow: hidden">
|
<div v-for="(v, i) in item.reportList" style="margin-top: 10px; overflow: hidden">
|
||||||
<div style="display: flex; align-items: center; justify-content: space-between">
|
<div style="display: flex; align-items: center; justify-content: space-between">
|
||||||
<div style="display: flex; align-items: center;">
|
<div style="display: flex; align-items: center">
|
||||||
<span
|
<span
|
||||||
style="
|
style="
|
||||||
float: left;
|
float: left;
|
||||||
@@ -268,14 +280,20 @@
|
|||||||
"
|
"
|
||||||
><i class="el-icon-s-custom"></i
|
><i class="el-icon-s-custom"></i
|
||||||
></span>
|
></span>
|
||||||
<span style="max-width:80%;white-space: nowrap;display: inline-block;
|
<span
|
||||||
|
style="
|
||||||
|
max-width: 80%;
|
||||||
|
white-space: nowrap;
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;">{{ v.author_account.realname }}</span>
|
text-overflow: ellipsis;
|
||||||
|
"
|
||||||
|
>{{ v.author_account.realname }}</span
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="max-width:260px;width:auto;">
|
<div style="max-width: 260px; width: auto">
|
||||||
<span style="margin-left: 6px" v-if="v.author_account.wos_time">
|
<span style="margin-left: 6px" v-if="v.author_account.wos_time">
|
||||||
<span style="font-size: 12px; font-weight: bold">WOS</span> :
|
<span style="font-size: 12px; font-weight: bold">WOS</span> :
|
||||||
<span v-html="colorIndex1(v.author_account.wos_index)"></span>
|
<span v-html="colorIndex1(v.author_account.wos_index)"></span>
|
||||||
@@ -1112,6 +1130,34 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog :title="$t('AI.AISummaryAnalysis')" :visible.sync="isShowAI" width="50%" class="AIDialog">
|
||||||
|
<div class="AISummaryAnalysis">
|
||||||
|
<el-collapse class="auth_colla auth_collna_ew" style="margin-bottom: 0">
|
||||||
|
<el-collapse-item name="1">
|
||||||
|
<template slot="title">
|
||||||
|
Abstract
|
||||||
|
<font v-if="currentArticleData.keywords" style="margin-left: 3px">, Keywords</font>
|
||||||
|
</template>
|
||||||
|
<p>
|
||||||
|
<font>Abstract :</font><b>{{ currentArticleData.abstrart }}</b>
|
||||||
|
</p>
|
||||||
|
<p v-if="currentArticleData.keywords">
|
||||||
|
<font>Keywords :</font><b>{{ currentArticleData.keywords }}</b>
|
||||||
|
</p>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
|
||||||
|
<p style="line-height: 20px">
|
||||||
|
<span>{{ $t('AI.AIAbstractInfo') }} :</span>
|
||||||
|
{{ currentArticleData.ai_review }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<!-- <el-button @click="isShowAI = false">取 消</el-button> -->
|
||||||
|
<el-button type="primary" @click="isShowAI = false">Close</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -1124,6 +1170,8 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
isShowAI: false,
|
||||||
|
currentArticleData: {},
|
||||||
rules: {},
|
rules: {},
|
||||||
userloading: false,
|
userloading: false,
|
||||||
curState: null,
|
curState: null,
|
||||||
@@ -1279,6 +1327,37 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
openAI(data) {
|
||||||
|
this.isShowAI = true;
|
||||||
|
this.currentArticleData = { ...data };
|
||||||
|
console.log('this.currentArticleData at line 1312:', this.currentArticleData);
|
||||||
|
|
||||||
|
},
|
||||||
|
creatAI(data,i){
|
||||||
|
const loading = this.$loading({
|
||||||
|
lock: true,
|
||||||
|
text: 'Loading...',
|
||||||
|
spinner: 'el-icon-loading',
|
||||||
|
background: 'rgba(0, 0, 0, 0.7)'
|
||||||
|
});
|
||||||
|
console.log('data at line 1336:', data)
|
||||||
|
this.$api
|
||||||
|
// api/Article/addArticle
|
||||||
|
.post('api/Aireview/review', {
|
||||||
|
article_id: data.article_id,
|
||||||
|
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
if(res.data.content){
|
||||||
|
this.tableData[i].ai_review=res.data.content
|
||||||
|
loading.close()
|
||||||
|
this.openAI({...data,ai_review:res.data.content});
|
||||||
|
}
|
||||||
|
}).catch((err) => {
|
||||||
|
loading.close()
|
||||||
|
this.$message.error('AI analysis failed')
|
||||||
|
})
|
||||||
|
},
|
||||||
// 保存个人信息
|
// 保存个人信息
|
||||||
saveUserIndex() {
|
saveUserIndex() {
|
||||||
let link_geo = '';
|
let link_geo = '';
|
||||||
@@ -1802,7 +1881,9 @@ export default {
|
|||||||
typeName = 'Google';
|
typeName = 'Google';
|
||||||
index = this.userMessage.google_time != 0 ? this.userMessage.google_index : '';
|
index = this.userMessage.google_time != 0 ? this.userMessage.google_index : '';
|
||||||
date = this.userMessage.google_time;
|
date = this.userMessage.google_time;
|
||||||
website =this.userMessage.g_author?`https://scholar.google.com/citations?hl=en&user=${this.userMessage.g_author}`:'';
|
website = this.userMessage.g_author
|
||||||
|
? `https://scholar.google.com/citations?hl=en&user=${this.userMessage.g_author}`
|
||||||
|
: '';
|
||||||
editor = this.userMessage.google_editor;
|
editor = this.userMessage.google_editor;
|
||||||
g_author = this.userMessage.g_author;
|
g_author = this.userMessage.g_author;
|
||||||
this.bankVisible = false;
|
this.bankVisible = false;
|
||||||
@@ -2704,4 +2785,42 @@ export default {
|
|||||||
.userIndexBox .s_rol > div.rol_mess > font {
|
.userIndexBox .s_rol > div.rol_mess > font {
|
||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
|
.AISummaryAnalysis p {
|
||||||
|
margin-top: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
padding-left: 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.AISummaryAnalysis p span {
|
||||||
|
display: inline-block;
|
||||||
|
width: auto;
|
||||||
|
color: #6157fd;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
::v-deep .AIDialog .el-dialog__body {
|
||||||
|
padding: 20px !important;
|
||||||
|
}
|
||||||
|
::v-deep .AIDialog .el-dialog__body .auth_collna_ew .el-collapse-item__arrow {
|
||||||
|
padding-left: 0px !important;
|
||||||
|
}
|
||||||
|
::v-deep .AIDialog .el-dialog__body .auth_collna_ew .el-collapse-item__header {
|
||||||
|
padding-left: 30px !important;
|
||||||
|
}
|
||||||
|
::v-deep .AIDialog .el-dialog {
|
||||||
|
/* background: linear-gradient(135deg, #f0f9fe, #dce6ff, #d7e9fd) !important;
|
||||||
|
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.01) !important;
|
||||||
|
border-radius: 16px !important;
|
||||||
|
padding: 10px !important;
|
||||||
|
box-sizing: border-box !important;
|
||||||
|
color: #333 !important;
|
||||||
|
font-family: "Segoe UI", sans-serif !important;
|
||||||
|
transition: transform 0.3s ease, box-shadow 0.3s ease !important; */
|
||||||
|
}
|
||||||
|
.beautiful-gradient {
|
||||||
|
}
|
||||||
|
|
||||||
|
.beautiful-gradient:hover {
|
||||||
|
transform: translateY(-4px);
|
||||||
|
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -58,7 +58,8 @@ export default {
|
|||||||
watch: {
|
watch: {
|
||||||
list: {
|
list: {
|
||||||
handler(e) {
|
handler(e) {
|
||||||
this.fields=[...this.list]
|
|
||||||
|
this.fields=this.list.length>0?[...this.list]:[{}]
|
||||||
},
|
},
|
||||||
immediate: true
|
immediate: true
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user