This commit is contained in:
2025-07-01 17:09:55 +08:00
parent b6f7cf7d3b
commit 2765edb0de
4 changed files with 668 additions and 57 deletions

View File

@@ -384,8 +384,8 @@ const en = {
selectComment: 'Please select the text to add annotations to!', selectComment: 'Please select the text to add annotations to!',
selectWord: 'Please select only a single word', selectWord: 'Please select only a single word',
alreadyCommented: 'There are already annotations in the text, please select again!', alreadyCommented: 'There are already annotations in the text, please select again!',
Multicolumn:'Multicolumn', Multicolumn: 'Multicolumn',
singleRow:"single-row", singleRow: "single-row",
}, },
pendingPayment: { pendingPayment: {
title: 'Title', title: 'Title',
@@ -468,7 +468,39 @@ const en = {
11: 'WeChat article publishing in progress...', 11: 'WeChat article publishing in progress...',
fail: 'WeChat article publishing failed', fail: 'WeChat article publishing failed',
unknown: 'Unknown status' unknown: 'Unknown status'
} },
aiReview: {
Explain: 'Explain',
state0: 'Journal Scope Assessment',
state1: 'Journal Scope Explanation',
state2: 'Scientific and Innovative Assessment',
state3: 'Scientific and Innovative Explanation',
state4: 'Contradiction Assessment',
state5: 'Contradiction Explanation',
state6: 'Unreasonable Assessment',
state7: 'Unreasonable Explanation',
state8: 'Ethics Assessment',
state9: 'Ethics Explanation',
state10: 'Academic Misconduct Assessment',
state11: 'Academic Misconduct Explanation',
state12: 'Conclusion Assessment',
state13: 'Conclusion Explanation',
state14: 'Fund Number',
state15: 'Article Hotspot',
state16: 'Review Direction',
state17: 'AI Publishing Suggestion',
state18: 'Review Time',
state19: 'Reference Evaluation',
state20: 'Clinical registration number and informed consent assessment',
state191: 'Proportion of references from the past three years',
state192: 'Proportion of references from the past five years',
state193: 'Proportion of references from JCR Q1',
state194: 'Proportion of references from JCR Q2',
state21: 'Probability of article being cited',
}
} }

View File

@@ -461,6 +461,35 @@ const zh = {
fail: '公微文章发布失败', fail: '公微文章发布失败',
unknown: '状态未知' unknown: '状态未知'
}, },
aiReview: {
Explain: '解释',
state0: '期刊范围评估',
state1: '期刊范围解释',
state2: '科学性及创新性评估',
state3: '科学性及创新性解释',
state4: '矛盾评估',
state5: '矛盾解释',
state6: '不合理评估',
state7: '不合理解释',
state8: '伦理号评估',
state9: '伦理号解释',
state10: '学术不端评估',
state11: '学术不端解释',
state12: '结论的评估',
state13: '结论的解释',
state14: '基金号',
state15: '文章热点',
state16: '送审方向',
state17: 'AI发表建议',
state18: '审核时间',
state19: '参考文献评估',
state20: '临床注册号和知情同意书评估',
state191: '近三年参考文献的比例',
state192: '近五年参考文献的比例',
state193: '参考文献JCR1区比例',
state194: '参考文献JCR2区比例',
state21: '文章被引用概率',
}
} }

View File

@@ -6,14 +6,45 @@
</el-breadcrumb> </el-breadcrumb>
</div> </div>
<div class="container_state" v-loading="loading" style="margin: 10px 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!=''"> <div style="margin-bottom: 10px; margin-top: 0px; overflow: hidden">
<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>
<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_">
<div style="position: relative" v-if="currentArticleData.ai_review==''">
<img
src="@/assets/img/ai.png"
class="beautiful-gradient"
style="
opacity: 0.5;
width: 30px;
height: 30px;
margin-right: 4px;
position: absolute;
left: -18px;
top: -18px;
cursor: pointer;
"
@click="creatAI()"
/>
</div>
<div style="position: relative" v-else>
<img
src="@/assets/img/ai.png"
class="beautiful-gradient"
style="
width: 30px;
height: 30px;
margin-right: 4px;
position: absolute;
left: -18px;
top: -18px;
cursor: pointer;
"
@click="openAI()"
/>
</div>
<div class="art_state_message"> <div class="art_state_message">
<div class="art_state_message_id" style="padding-left: 15px"> <div class="art_state_message_id" style="padding-left: 15px">
<font <font
@@ -136,7 +167,7 @@
<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
v-if="form.state==0" v-if="form.state == 0"
:articleId="editform.articleId" :articleId="editform.articleId"
@load="initMajor()" @load="initMajor()"
style="position: absolute; top: 10px; right: 10px" style="position: absolute; top: 10px; right: 10px"
@@ -153,7 +184,8 @@
<span style="color: #006699; font-weight: bold; margin-right: 10px" <span style="color: #006699; font-weight: bold; margin-right: 10px"
>Field {{ i + 1 }}:</span >Field {{ i + 1 }}:</span
>{{ v.str >{{ v.str
}}<i v-if="form.state==0" }}<i
v-if="form.state == 0"
class="el-icon-delete-solid" class="el-icon-delete-solid"
style="color: #f56c6c !important; margin-left: 10px" style="color: #f56c6c !important; margin-left: 10px"
@click="handleDeleteMajor(v)" @click="handleDeleteMajor(v)"
@@ -166,7 +198,7 @@
</el-collapse-item> </el-collapse-item>
</el-collapse> </el-collapse>
</div> </div>
<div class="art_file_"> <div class="art_file_">
<el-row :gutter="24"> <el-row :gutter="24">
<el-col :span="12" v-if="coverLetterFileList"> <el-col :span="12" v-if="coverLetterFileList">
@@ -543,6 +575,81 @@
frameborder="0" frameborder="0"
></iframe> ></iframe>
</el-drawer> </el-drawer>
<el-dialog :title="$t('AI.AISummaryAnalysis')" :visible.sync="isShowAI" width="1100px" class="AIDialog">
<div class="AISummaryAnalysis">
<el-collapse class="auth_colla auth_collna_ew" style="margin-bottom: 10px; margin-top: -20px">
<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>
<div style="line-height: 20px" v-if="isShowAI">
<p class="beautiful-gradient1">
<span class="title" style="font-size: 18px; font-weight: 700">{{ $t('aiReview.state17') }}</span>
<span style="margin-top: 8px; display: block">{{ currentArticleData.ai_review['overall_evaluation'] }}</span>
</p>
<p style="overflow: hidden; margin-bottom: 8px">
<span style="float: right; color: #3830b9; margin-right: 8px"
>{{ this.$t('aiReview.state18') }} : {{ currentArticleData.ai_review['create_time'] }}</span
>
</p>
<p class="titleBox">
<span class="title" style="color: #fff; font-size: 16px">{{ $t('AI.AIAbstractInfo') }}</span>
</p>
<!-- {{ currentArticleData.ai_review }} -->
<el-form label-width="240">
<el-form-item label="``" v-for="(v, i) in aiReview">
<span slot="label" class="title" :style="v.color ? `color:${v.color}` : ''">
{{ `${i + 1}. ${v.topic} : ` }}
</span>
<div style="">
<div
style="color: #333; width: calc(100% - 180px); margin-left: 180px"
v-if="v.parameter && v.parameter.length > 0"
>
<div label="``" v-for="(item, index) in v.parameter">
<span class="title" style="" :style="item.color ? `color:${item.color}` : ''">
{{ `(${index + 1}) ${item.topic} : ` }}
</span>
<div style="">
<div style="color: #333">
{{ currentArticleData.ai_review[item.value] }}
<span v-if="item.explanationValue">
{{ currentArticleData.ai_review[item.explanationValue] }}
</span>
</div>
</div>
</div>
</div>
<div style="color: #333" v-else>{{ currentArticleData.ai_review[v.value] }}</div>
<div style="color: #888; line-height: 22px" v-if="v.explanationValue">
<span>{{ $t('aiReview.Explain') }} : </span> {{ currentArticleData.ai_review[v.explanationValue] }}
</div>
</div>
</el-form-item>
</el-form>
</div>
</div>
<span slot="footer" class="dialog-footer">
<!-- <el-button @click="isShowAI = false"> </el-button> -->
<el-button type="" @click="isShowAI = false">Close</el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
@@ -554,8 +661,10 @@ export default {
}, },
data() { data() {
return { return {
researchAreas:['1'], isShowAI: false,
AIcontent:'', currentArticleData: {},
researchAreas: ['1'],
AIcontent: '',
previewData: {}, previewData: {},
baseUrl: this.Common.baseUrl, baseUrl: this.Common.baseUrl,
mediaUrl: this.Common.mediaUrl, mediaUrl: this.Common.mediaUrl,
@@ -626,7 +735,7 @@ export default {
{ {
state: 6, state: 6,
title: this.$t('artstate.state6') title: this.$t('artstate.state6')
}, }
// { // {
// state: 5, // state: 5,
// title: this.$t('artstate.state5') // title: this.$t('artstate.state5')
@@ -672,19 +781,136 @@ export default {
}, },
Resubmitrules: { Resubmitrules: {
journalId: [{ required: true, message: 'Please select the name of the journal to be forwarded to' }] journalId: [{ required: true, message: 'Please select the name of the journal to be forwarded to' }]
} },
aiReview: [
{
topic: this.$t('aiReview.state0'),
value: 'journal_scope_assessment',
explanationValue: 'journal_scope_explanation'
},
{
topic: this.$t('aiReview.state2'),
value: 'attribute_assessment',
explanationValue: 'attribute_explanation'
},
{
topic: this.$t('aiReview.state4'),
value: 'contradiction_assessment',
explanationValue: 'contradiction_explanation'
},
{
topic: this.$t('aiReview.state6'),
value: 'unreasonable_assessment',
explanationValue: 'unreasonable_explanation'
},
{
topic: this.$t('aiReview.state8'),
value: 'ethics_assessment',
explanationValue: '',
parameter: [
{
topic: this.$t('aiReview.state8'),
value: 'ethics_assessment',
explanationValue: 'ethics_explanation'
},
{
topic: this.$t('aiReview.state20'),
value: 'registration_assessment',
explanationValue: ''
}
]
},
{
topic: this.$t('aiReview.state10'),
value: 'academic_assessment',
explanationValue: 'academic_explanation'
},
{
topic: this.$t('aiReview.state12'),
value: 'conclusion_assessment',
explanationValue: 'conclusion_explanation'
},
{
topic: this.$t('aiReview.state14'),
value: 'fund_number',
explanationValue: ''
},
{
topic: this.$t('aiReview.state15'),
value: 'hotspot',
explanationValue: ''
},
{
topic: this.$t('aiReview.state16'),
value: 'submit_direction',
explanationValue: ''
},
// {
// topic: this.$t('aiReview.state17'),
// value: 'overall_evaluation',
// explanationValue: ''
// },
{
topic: this.$t('aiReview.state19'),
value: 'create_time',
explanationValue: '',
color: 'rgb(0, 112, 192)',
parameter: [
{
topic: this.$t('aiReview.state191'),
value: 'references_past_three',
explanationValue: '',
color: 'rgb(0, 112, 192)'
},
{
topic: this.$t('aiReview.state192'),
value: 'references_past_five',
explanationValue: '',
color: 'rgb(0, 112, 192)'
},
{
topic: this.$t('aiReview.state193'),
value: 'references_ratio_JCR1',
explanationValue: '',
color: 'rgb(0, 112, 192)'
},
{
topic: this.$t('aiReview.state194'),
value: 'references_ratio_JCR2',
explanationValue: '',
color: 'rgb(0, 112, 192)'
}
]
},
{
topic: this.$t('aiReview.state21'),
value: 'cite_rate',
explanationValue: ''
}
// {
// topic: this.$t('aiReview.state18'),
// value: 'create_time',
// explanationValue: ''
// }
]
}; };
}, },
created: function () { async created() {
this.getAi(); await this.initarticle();
this.initarticle(); await this.getAi();
this.initFileList(); this.initFileList();
this.getWordimgList(); this.getWordimgList();
this.getWordTablesList(); this.getWordTablesList();
}, },
computed: { computed: {
// coverLetterUrl: function() { // coverLetterUrl: function() {
// return this.baseUrl + this.form.coverLetter; // return this.baseUrl + this.form.coverLetter;
// }, // },
@@ -742,16 +968,59 @@ export default {
} }
}, },
methods: { methods: {
async getAi(){
var that = this;
await this.$api
.post('api/Aireview/get', { async creatAI() {
article_id: this.$route.query.id const loading = this.$loading({
lock: true,
text: 'loading...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
await this.$api
// api/Article/addArticle
.post('api/Aireview/review', {
article_id: this.editform.articleId
}) })
.then(async (res) => { .then(async(res) => {
console.log('res at line 819:', res) if (res.status==1) {
this.AIcontent = res.data.content?res.data.content:'';
loading.close();
await this.getAi()
await this.openAI();
}
})
.catch((err) => {
loading.close();
this.$message.error('Please click to view again in 1 minute in AI analysis');
});
},
openAI(data) {
this.isShowAI = true;
},
async getAi() {
await this.$api
// api/Article/addArticle
.post('api/Aireview/get', {
article_id: this.editform.articleId
// article_id: 6332
})
.then((res) => {
this.currentArticleData = {
abstrart: this.form.abstrart,
keywords: this.form.keywords,
ai_review: ''
};
if (res.data != null) {
this.currentArticleData.ai_review = res.data;
}
console.log('this.currentArticleData at line 1312:', this.currentArticleData);
})
.catch((err) => {
// this.$message.error('AI analysis failed');
}); });
}, },
async getWordimgList() { async getWordimgList() {
@@ -1422,19 +1691,51 @@ export default {
} }
.beautiful-gradient { .beautiful-gradient {
background: linear-gradient(135deg, #f0f9fe, #dce6ff, #d7e9fd); /* background: linear-gradient(135deg, #f0f9fe, #dce6ff, #d7e9fd); */
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.01); box-shadow: 0 8px 20px rgba(0, 0, 0, 0.01);
border-radius: 16px; /* border-radius: 16px;
padding: 10px; padding: 10px;
box-sizing: border-box; box-sizing: border-box;
color: #333; color: #333;
font-family: "Segoe UI", sans-serif; font-family: "Segoe UI", sans-serif; */
transition: transform 0.3s ease, box-shadow 0.3s ease; transition: transform 0.3s ease, box-shadow 0.3s ease;
border-radius: 30px;
} }
.beautiful-gradient:hover { .beautiful-gradient:hover {
transform: translateY(-4px); transform: translateY(-4px);
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15); box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15);
}
.AISummaryAnalysis .titleBox {
display: flex;
align-items: center;
justify-content: center;
background-color: #6157fd;
padding: 4px;
border-radius: 4px;
margin-bottom: 20px;
}
.AISummaryAnalysis div .title {
display: inline-block;
width: auto;
color: #6157fd;
/* font-weight: bold; */
}
::v-deep .AISummaryAnalysis .auth_collna_ew .el-collapse-item__header {
padding-left: 30px;
}
::v-deep .AISummaryAnalysis .el-form-item--mini.el-form-item,
.el-form-item--small.el-form-item {
margin-bottom: 10px;
}.beautiful-gradient1 {
background: linear-gradient(135deg, #f0f9fe, #dce6ff, #d7e9fd);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.01);
border-radius: 10px;
padding: 10px 20px 10px 20px !important;
box-sizing: border-box;
color: #333;
font-family: 'Segoe UI', sans-serif;
transition: transform 0.3s ease, box-shadow 0.3s ease;
border-radius: 30px;
} }
</style> </style>

View File

@@ -107,15 +107,17 @@
</p> </p>
<div class="mangu_list" style="position: relative"> <div class="mangu_list" style="position: relative">
<img <img
class="beautiful-gradient"
v-if="item.ai_review != '' && item.ai_review" v-if="item.ai_review != '' && item.ai_review"
src="@/assets/img/ai.png" src="@/assets/img/ai.png"
@click="openAI(item)" @click="openAI(item)"
style="cursor: pointer; width: 30px; height: 30px; position: absolute; right: 6px; top: 6px" style="cursor: pointer; width: 30px; height: 30px; position: absolute; right: 6px; top: 6px"
/> />
<img <img
class="beautiful-gradient"
v-else v-else
src="@/assets/img/ai.png" src="@/assets/img/ai.png"
@click="creatAI(item, ikgn)" @click="getAi(item, ikgn)"
style="opacity: 0.5; cursor: pointer; width: 30px; height: 30px; position: absolute; right: 6px; top: 6px" style="opacity: 0.5; cursor: pointer; width: 30px; height: 30px; position: absolute; right: 6px; top: 6px"
/> />
<div> <div>
@@ -408,7 +410,7 @@
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
" "
>{{ v.author_account&&v.author_account.realname?v.author_account.realname:'' }}</span >{{ v.author_account && v.author_account.realname ? v.author_account.realname : '' }}</span
> >
</div> </div>
@@ -1348,9 +1350,9 @@
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :title="$t('AI.AISummaryAnalysis')" :visible.sync="isShowAI" width="50%" class="AIDialog"> <el-dialog :title="$t('AI.AISummaryAnalysis')" :visible.sync="isShowAI" width="1100px" class="AIDialog">
<div class="AISummaryAnalysis"> <div class="AISummaryAnalysis">
<el-collapse class="auth_colla auth_collna_ew" style="margin-bottom: 0"> <el-collapse class="auth_colla auth_collna_ew" style="margin-bottom: 10px; margin-top: -20px">
<el-collapse-item name="1"> <el-collapse-item name="1">
<template slot="title"> <template slot="title">
Abstract Abstract
@@ -1365,14 +1367,61 @@
</el-collapse-item> </el-collapse-item>
</el-collapse> </el-collapse>
<p style="line-height: 20px"> <div style="line-height: 20px" v-if="isShowAI">
<span>{{ $t('AI.AIAbstractInfo') }} :</span> <p class="beautiful-gradient1">
{{ currentArticleData.ai_review }} <span class="title" style="font-size: 18px; font-weight: 700">{{ $t('aiReview.state17') }}</span>
</p>
<span style="margin-top: 8px; display: block">{{ currentArticleData.ai_review['overall_evaluation'] }}</span>
</p>
<p style="overflow: hidden; margin-bottom: 8px">
<span style="float: right; color: #3830b9; margin-right: 8px"
>{{ this.$t('aiReview.state18') }} : {{ currentArticleData.ai_review['create_time'] }}</span
>
</p>
<p class="titleBox">
<span class="title" style="color: #fff; font-size: 16px">{{ $t('AI.AIAbstractInfo') }}</span>
</p>
<!-- {{ currentArticleData.ai_review }} -->
<el-form label-width="240">
<el-form-item label="``" v-for="(v, i) in aiReview">
<span slot="label" class="title" :style="v.color ? `color:${v.color}` : ''">
{{ `${i + 1}. ${v.topic} : ` }}
</span>
<div style="">
<div
style="color: #333; width: calc(100% - 180px); margin-left: 180px"
v-if="v.parameter && v.parameter.length > 0"
>
<div label="``" v-for="(item, index) in v.parameter">
<span class="title" style="" :style="item.color ? `color:${item.color}` : ''">
{{ `(${index + 1}) ${item.topic} : ` }}
</span>
<div style="">
<div style="color: #333">
{{ currentArticleData.ai_review[item.value] }}
<span v-if="item.explanationValue">
{{ currentArticleData.ai_review[item.explanationValue] }}
</span>
</div>
</div>
</div>
</div>
<div style="color: #333" v-else>{{ currentArticleData.ai_review[v.value] }}</div>
<div style="color: #888; line-height: 22px" v-if="v.explanationValue">
<span>{{ $t('aiReview.Explain') }} : </span> {{ currentArticleData.ai_review[v.explanationValue] }}
</div>
</div>
</el-form-item>
</el-form>
</div>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<!-- <el-button @click="isShowAI = false">取 消</el-button> --> <!-- <el-button @click="isShowAI = false">取 消</el-button> -->
<el-button type="primary" @click="isShowAI = false">Close</el-button> <el-button type="" @click="isShowAI = false">Close</el-button>
</span> </span>
</el-dialog> </el-dialog>
<el-dialog <el-dialog
@@ -1568,6 +1617,135 @@ export default {
title: this.$t('artstate.state6') title: this.$t('artstate.state6')
} }
], ],
aiReview: [
//1
{
topic: this.$t('aiReview.state0'),
value: 'journal_scope_assessment',
explanationValue: 'journal_scope_explanation'
},
//3
{
topic: this.$t('aiReview.state4'),
value: 'contradiction_assessment',
explanationValue: 'contradiction_explanation'
},
//4
{
topic: this.$t('aiReview.state6'),
value: 'unreasonable_assessment',
explanationValue: 'unreasonable_explanation'
},
//6
{
topic: this.$t('aiReview.state10'),
value: 'academic_assessment',
explanationValue: 'academic_explanation'
},
//8
{
topic: this.$t('aiReview.state14'),
value: 'fund_number',
explanationValue: ''
},
//9
{
topic: this.$t('aiReview.state15'),
value: 'hotspot',
explanationValue: ''
},
//10
{
topic: this.$t('aiReview.state16'),
value: 'submit_direction',
explanationValue: ''
},
//11
// {
// topic: this.$t('aiReview.state17'),
// value: 'overall_evaluation',
// explanationValue: ''
// },
//2
{
topic: this.$t('aiReview.state2'),
value: 'attribute_assessment',
explanationValue: 'attribute_explanation'
},
//5
{
topic: this.$t('aiReview.state8'),
value: 'ethics_assessment',
explanationValue: '',
parameter: [
{
topic: this.$t('aiReview.state8'),
value: 'ethics_assessment',
explanationValue: 'ethics_explanation'
},
{
topic: this.$t('aiReview.state20'),
value: 'registration_assessment',
explanationValue: ''
}
]
},
//7
{
topic: this.$t('aiReview.state12'),
value: 'conclusion_assessment',
explanationValue: 'conclusion_explanation'
},
//12
{
topic: this.$t('aiReview.state19'),
value: 'create_time',
explanationValue: '',
color: 'rgb(0, 112, 192)',
parameter: [
{
topic: this.$t('aiReview.state191'),
value: 'references_past_three',
explanationValue: '',
color: 'rgb(0, 112, 192)'
},
{
topic: this.$t('aiReview.state192'),
value: 'references_past_five',
explanationValue: '',
color: 'rgb(0, 112, 192)'
},
{
topic: this.$t('aiReview.state193'),
value: 'references_ratio_JCR1',
explanationValue: '',
color: 'rgb(0, 112, 192)'
},
{
topic: this.$t('aiReview.state194'),
value: 'references_ratio_JCR2',
explanationValue: '',
color: 'rgb(0, 112, 192)'
}
]
},
//13
{
topic: this.$t('aiReview.state21'),
value: 'cite_rate',
explanationValue: ''
}
// {
// topic: this.$t('aiReview.state18'),
// value: 'create_time',
// explanationValue: ''
// }
],
bankVisible: false, bankVisible: false,
majorData: {}, majorData: {},
googleSearchInfo: '' googleSearchInfo: ''
@@ -1652,32 +1830,70 @@ export default {
}, },
openAI(data) { openAI(data) {
this.isShowAI = true; this.isShowAI = true;
this.currentArticleData = { ...data }; this.$api
console.log('this.currentArticleData at line 1312:', this.currentArticleData); // api/Article/addArticle
.post('api/Aireview/get', {
article_id: data.article_id
// article_id: 6332
})
.then((res) => {
this.currentArticleData = { ...data, ai_review: res.data };
})
.catch((err) => {
loading.close();
this.$message.error('AI analysis failed');
});
}, },
creatAI(data, i) { async getAi(data, i) {
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: 'Loading...', text: 'loading...',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)' background: 'rgba(0, 0, 0, 0.7)'
}); });
console.log('data at line 1336:', data); await this.$api
.post('api/Aireview/get', {
article_id: data.article_id
})
.then((res) => {
this.currentArticleData = {
...data,
ai_review: ''
};
if (res.data != null) {
this.tableData[i].ai_review = { ...res.data };
this.currentArticleData.ai_review = res.data;
loading.close();
this.isShowAI = true;
} else {
this.creatAI(data, i, loading);
}
console.log('this.currentArticleData at line 1312:', this.currentArticleData);
})
.catch((err) => {
loading.close();
// this.$message.error('AI analysis failed');
});
},
creatAI(data, i, loading) {
loading.text = 'In AI analysis, please be patient and wait...';
this.$api this.$api
// api/Article/addArticle // api/Article/addArticle
.post('api/Aireview/review', { .post('api/Aireview/review', {
article_id: data.article_id article_id: data.article_id
}) })
.then((res) => { .then((res) => {
if (res.data.content) { if (res.status == 1) {
this.tableData[i].ai_review = res.data.content; this.tableData[i].ai_review = { ...res.data };
loading.close(); loading.close();
this.openAI({ ...data, ai_review: res.data.content }); this.openAI({ ...data, ai_review: { ...res.data } });
} }
}) })
.catch((err) => { .catch((err) => {
loading.close(); loading.close();
this.$message.error('AI analysis failed'); this.$message.error('Please click to view again in 1 minute in AI analysis');
}); });
}, },
// 保存个人信息 // 保存个人信息
@@ -3069,11 +3285,20 @@ export default {
padding-left: 10px; padding-left: 10px;
box-sizing: border-box; box-sizing: border-box;
} }
.AISummaryAnalysis p span { .AISummaryAnalysis .titleBox {
display: flex;
align-items: center;
justify-content: center;
background-color: #6157fd;
padding: 4px;
border-radius: 4px;
margin-bottom: 20px;
}
.AISummaryAnalysis div .title {
display: inline-block; display: inline-block;
width: auto; width: auto;
color: #6157fd; color: #6157fd;
font-weight: bold; /* font-weight: bold; */
} }
::v-deep .AIDialog .el-dialog__body { ::v-deep .AIDialog .el-dialog__body {
padding: 20px !important; padding: 20px !important;
@@ -3095,6 +3320,15 @@ export default {
transition: transform 0.3s ease, box-shadow 0.3s ease !important; */ transition: transform 0.3s ease, box-shadow 0.3s ease !important; */
} }
.beautiful-gradient { .beautiful-gradient {
/* background: linear-gradient(135deg, #f0f9fe, #dce6ff, #d7e9fd); */
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.01);
border-radius: 30px;
/* 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 { .beautiful-gradient:hover {
@@ -3135,4 +3369,19 @@ export default {
.mangu_list div.fi_new div > div:nth-child(1) { .mangu_list div.fi_new div > div:nth-child(1) {
margin-top: 0px; margin-top: 0px;
} }
::v-deep .AISummaryAnalysis .el-form-item--mini.el-form-item,
.el-form-item--small.el-form-item {
margin-bottom: 10px;
}
.beautiful-gradient1 {
background: linear-gradient(135deg, #f0f9fe, #dce6ff, #d7e9fd);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.01);
border-radius: 10px;
padding: 10px 20px 10px 20px !important;
box-sizing: border-box;
color: #333;
font-family: 'Segoe UI', sans-serif;
transition: transform 0.3s ease, box-shadow 0.3s ease;
border-radius: 30px;
}
</style> </style>