This commit is contained in:
2025-11-24 09:18:02 +08:00
parent 0e20c3344b
commit b0d3e9aa33
6 changed files with 467 additions and 339 deletions

View File

@@ -1,48 +1,26 @@
<template>
<div>
<div class="tab_post">
<div style="margin-bottom: 10px">
<p
v-if="feeStatus == 0"
style="
color: #f56c6c;
background: #fef0f0;
border-color: #fbc4c4;
font-size: 14px;
padding: 10px;
box-sizing: border-box;
margin: 0;
"
>
<i class="el-icon-warning" style="color: #f56c6c; margin-right: 10px"></i>Manuscript unpaid
</p>
<p
v-if="feeStatus == 1"
style="
color: #67c23a;
margin: 0;
background: #f0f9eb;
border-color: #c2e7b0;
color: #67c23a;
font-weight: bold;
font-size: 12px;
padding: 10px;
box-sizing: border-box;
"
>
<i class="el-icon-warning" style="color: #67c23a; margin-right: 10px"></i>Paid already
</p>
</div>
<div style="margin-bottom: 10px"></div>
<div v-for="(item, index) in tabsList" @click="jumpTab(index, item)" :class="tabName == item.refName ? 'P_style' : ''">
<h5>
<span>{{ index + 1 }}</span>
{{ item.name }}
</h5>
<p v-if="index != 1">{{ item.rongCont }}</p>
<p v-else>
<p v-if="index == 0">
<span style="color: #f56c6c; font-weight: 700" v-if="feeStatus == 0">
<i class="el-icon-warning" style="margin-right: 10px"></i>Manuscript unpaid
</span>
<span v-else-if="feeStatus == 1" style="font-weight: 700">
<i class="el-icon-warning" style="color: #67c23a; margin-right: 10px"></i>Paid already
</span>
<span v-else-if="feeStatus == 2" style="font-weight: 700">
<i class="el-icon-warning" style="color: #67c23a; margin-right: 10px"></i>No payment required
</span>
</p>
<p v-if="index == 1">{{ item.rongCont }}</p>
<p v-if="index == 2">
<el-button type="primary" plain @click="htmlContet()" style="width: auto; font-weight: bold; margin-top: 10px">
<i class="el-icon-document-copy" style="font-weight: bold; font-size: 14px"></i>
Text Proofread
@@ -57,12 +35,12 @@
Push To Accept
</el-button>
</div>
<div style="margin: 20px 0 0 0">
<!-- <div style="margin: 20px 0 0 0">
<el-button type="text" @click="pushToProduce(detailMes)" style="font-size: 13px">
<i class="el-icon-finished"></i>
Begin to Production
</el-button>
</div>
</div> -->
<!-- 作者联系 -->
<div class="contactAuthor">
<h4>Contact author</h4>
@@ -96,8 +74,72 @@
<!-- 参考文献 -->
<div :ref="tabsList[0].refName" class="scroll-item">
<div class="bor_style_onli">
<div class="bor_style_onli" style="height: auto;max-height: 700px;">
<h4>{{ tabsList[0].name }}</h4>
<div style="" class="payment_info_box">
<div class="payment_info" style="width: 100%"
><el-table :data="tableData" style="width: 100%" align="center">
<el-table-column prop="fee" :label="$t('pendingPayment.total')" width="150px">
<template slot-scope="scope"> {{ scope.row.original_price }} USD </template>
</el-table-column>
<el-table-column :label="$t('pendingPayment.discountprice')" width="200px">
<template slot-scope="scope"> {{ scope.row.fee }} USD <span style="cursor: pointer;color:#006699;margin-left: 10px;" v-if="feeStatus == 0" @click="handleEditFee"><i class="el-icon-edit"></i> Edit</span></template>
</el-table-column>
<!-- <el-table-column prop="name" :label="$t('pendingPayment.Paymentamount')">
<template slot-scope="scope">
</template>
</el-table-column> -->
<el-table-column :label="$t('pendingPayment.youhuiremark')">
<template slot-scope="scope">
<p > <span class="remark">{{ article_pay_info.fee_remark }}</span>
</p>
</template>
</el-table-column>
<el-table-column prop="" :label="$t('pendingPayment.Paymentstatus')">
<template slot-scope="scope">
<span v-if="feeStatus == 0" style="color: #f56c6c"
><b>Manuscript unpaid</b></span
>
<span v-if="feeStatus == 1" style="color: #67c23a"
><b>Paid already</b></span
>
<span v-if="feeStatus == 2" style="color: #67c23a"
><b>No payment required</b></span
>
</template>
</el-table-column>
<el-table-column prop="" :label="$t('pendingPayment.Paymentamount')" v-if="feeStatus == 1">
<template slot-scope="scope">
<p v-if="article_pay_info.paystation_fee"> <span class="price">{{ formatAmount(Number(article_pay_info.paystation_fee / 100)) }}</span>
{{ article_pay_info.paystation_currency }}</p>
</template>
</el-table-column>
<el-table-column prop="" :label="$t('pendingPayment.time')" v-if="feeStatus == 1">
<template slot-scope="scope">
<p><span style="color: #888">{{ article_pay_info.paystation_time ? article_pay_info.paystation_time : 'unknown' }}</span>
</p>
</template>
</el-table-column>
</el-table>
</div
>
</div>
</div>
</div>
<div :ref="tabsList[1].refName" class="scroll-item">
<div class="bor_style_onli">
<h4>{{ tabsList[1].name }}</h4>
<div class="liter_ture" v-if="0 == 2">
<div class="chanSelLef">
<!-- 1 -->
@@ -390,6 +432,24 @@
<timetalk :talkMsgs="talkMsgs" :msgform="msgform" @talksave="talksave"></timetalk>
</div>
</el-dialog>
<el-dialog :title="`Edit`" :visible.sync="finalFeeVisible" width="600px" :close-on-click-modal="false">
<el-form ref="finalFee" :rules="rules" :model="finalFeeData" label-width="180px">
<el-form-item :label="$t('pendingPayment.discountprice')" prop="fee" clearable>
<!-- <commonRemarkList :list="remark.contentList" @load="(e) => (this.remark.contentList = e)"></commonRemarkList> -->
<el-input v-model="finalFeeData.fee"> <span slot="suffix" >USD</span></el-input>
</el-form-item>
<el-form-item :label="$t('pendingPayment.youhuiremark')" prop="fee_remark">
<!-- <commonRemarkList :list="remark.contentList" @load="(e) => (this.remark.contentList = e)"></commonRemarkList> -->
<el-input type="textarea" rows="5" v-model="finalFeeData.fee_remark"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="finalFeeVisible = false">Cancel</el-button>
<el-button type="primary" @click="saveFinalFee">Save</el-button>
</span>
</el-dialog>
</div>
</template>
@@ -405,9 +465,16 @@ export default {
props: ['type'],
data() {
return {
finalFeeData:{
},
article_pay_info: {},
feeStatus: null,
isShowCommit: false,
tableData: [],
talkMsgs: [],
finalFeeVisible: false,
FeeVisible: false,
communVisible: false,
msgform: {
username: localStorage.getItem('U_name'),
@@ -444,8 +511,13 @@ export default {
// rongCont: 'Please upload the article file.'
// },
{
name: 'Reference Conversion',
name: 'Article Processing Charge',
refName: 'setOneRef',
rongCont: ''
},
{
name: 'Reference Conversion',
refName: 'setTwoRef',
rongCont: 'Revise, check and complete the references of the manuscript.'
},
// {
@@ -455,7 +527,7 @@ export default {
// },
{
name: 'Text Proofread',
refName: 'setTwoRef',
refName: 'setThreeRef',
rongCont: 'HTML layout.'
}
// {
@@ -681,166 +753,22 @@ export default {
deAuthorYul: {},
deMesYul: {},
rules: {
title: [
{
required: true,
message: 'Please enter title',
trigger: 'blur'
}
],
npp: [
{
required: true,
message: 'Please enter page',
trigger: 'blur'
}
],
journal_stage_id: [
{
required: true,
message: 'Please select stage',
trigger: 'blur'
}
],
type: [
{
required: true,
message: 'Please select type',
trigger: 'blur'
}
],
icon: [
{
required: true,
message: 'Please select picture',
trigger: 'blur'
}
],
abbr: [
{
required: true,
message: 'Please enter abbr',
trigger: 'blur'
}
],
tradition_tag: [
{
required: true,
message: 'Please enter tradition tag',
trigger: 'blur'
}
],
tradition: [
{
required: true,
message: 'Please enter tradition',
trigger: 'blur'
}
],
pubDate: [
{
required: true,
message: 'Please select pubDate',
trigger: 'blur'
}
],
doi: [
{
required: true,
message: 'Please enter doi',
trigger: 'blur'
}
],
abstract: [
{
required: true,
message: 'Please enter abstract',
trigger: 'blur'
}
],
keywords: [
{
required: true,
message: 'Please enter keywords',
trigger: 'blur'
}
],
fund: [
{
required: true,
message: 'Please enter Fund',
trigger: 'blur'
}
],
acknowledgment: [
{
required: true,
message: 'Please enter acknowledgment',
trigger: 'blur'
}
],
abbreviation: [
{
required: true,
message: 'Please enter abbreviation',
trigger: 'blur'
}
],
author_contribution: [
{
required: true,
message: 'Please enter author contribution',
trigger: 'blur'
}
],
pub_date: [
{
required: true,
message: 'Please enter date',
trigger: 'blur'
}
],
first_name: [
{
required: true,
message: 'Please enter author name',
trigger: 'blur'
}
],
last_name: [
{
required: true,
message: 'Please enter author name',
trigger: 'blur'
}
],
email: [
{
required: true,
message: 'Please enter contact author email',
trigger: 'blur'
}
],
author_country: [
{
required: true,
message: 'Please select a country',
trigger: 'blur'
}
],
organ_name: [
{
required: true,
message: 'Please enter mechanism',
trigger: 'blur'
}
]
fee: [{
required: true,
message: 'Please enter the final price after discount',
trigger: 'blur'
}],
fee_remark: [{
required: true,
message: 'Please enter the discount description',
trigger: 'blur'
}],
}
};
},
created() {
this.opMedical = this.$commonJS.opMedicalList();
this.getDetail();
this.getPreacceptPayment();
this.getHight();
window.addEventListener('resize', this.getHight);
// this.getData();
@@ -851,9 +779,64 @@ export default {
// this.getWorldPdf();
},
activated() {
this.getDetail();
this.getPreacceptPayment();
},
methods: {
saveFinalFee(){
this.$refs.finalFee.validate((valid) => {
if (valid) {
const integerRegex = /^-?\d+$/;
if (!integerRegex.test(this.finalFeeData.fee)) {
this.$message.error('Please enter a valid integer for the final price after discount');
return false;
}
const load = this.$loading({
lock: true,
text: 'Loading...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
this.$api
.post('api/Order/changePrice', {
article_id: this.$route.query.id,
editor_id: localStorage.getItem('U_id'),
fee: Number(this.finalFeeData.fee).toFixed(2),
fee_remark: this.finalFeeData.fee_remark,
})
.then((res) => { load.close()
if(res.code==0){
this.finalFeeVisible=false
this.getPreacceptPayment()
}else{
this.$message.error(res.msg)
}
})
.catch((err) => {
load.close()
console.log(err);
});
}else{
return false
}
})
},
handleEditFee(){
this.finalFeeVisible = true;
this.finalFeeData={
fee:this.article_pay_info.fee?Number(this.article_pay_info.fee).toFixed(0):0,
fee_remark:this.article_pay_info.fee_remark
}
},
formatAmount(amount) {
return amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
},
talksave(val) {
this.msgform.ad_content = '';
this.getTalkList();
@@ -917,7 +900,7 @@ export default {
loading.close();
});
},
getDetail() {
getPreacceptPayment() {
this.isShowCommit = false;
this.$api
.post('api/Preaccept/getPreacceptPayment', {
@@ -926,6 +909,28 @@ export default {
.then((res) => {
console.log('res at line 191:', res);
if (res.code == 0) {
this.article_pay_info = {
fee: res.data.article.fee,
is_buy: res.data.article.is_buy,
original_price: res.data.journal.fee,
fee_remark: res.data.article.fee_remark,
order: res.data.order,
paystation_fee: res.data.order&&res.data.order.paystation ? res.data.order.paystation.amount : '',
paystation_time: res.data.order&&res.data.order.paystation ? res.data.order.paystation.request_time : '',
paystation_currency: res.data.order&&res.data.order.paystation ? res.data.order.paystation.currency : ''
};
if (this.article_pay_info.is_buy == 1) {
if (this.article_pay_info.fee == 0) {
this.feeStatus = 2;
}else{
this.feeStatus = 1;
}
} else {
this.feeStatus = 0;
}
this.tableData=[{...this.article_pay_info}]
this.feeStatus = res.data.state;
this.isShowCommit = res.data.state == 1 ? true : false;
console.log(this.isShowCommit);
@@ -2126,17 +2131,17 @@ export default {
.catch(() => {});
},
pushToProduce(detailMes) {
if (!this.isShowCommit) {
this.$message.error('The manuscript has not been paid, please contact the author promptly for payment');
return false;
}
// if (!this.isShowCommit) {
// this.$message.error('The manuscript has not been paid, please contact the author promptly for payment');
// return false;
// }
this.$confirm(`Please confirm if you would like to push this article to the production stage?`, 'Prompt', {
confirmButtonText: 'Yes',
cancelButtonText: 'Cancle',
type: 'warning'
})
.then(() => {
// this.$confirm(`Please confirm if you would like to push this article to the production stage?`, 'Prompt', {
// confirmButtonText: 'Yes',
// cancelButtonText: 'Cancle',
// type: 'warning'
// })
// .then(() => {
const load = this.$loading({
lock: true,
text: 'Loading...',
@@ -2150,13 +2155,13 @@ export default {
.then((res) => {
if (res.code == 0) {
load.close();
this.$message.success('successed!');
setTimeout(() => {
localStorage.setItem('U_point', 2);
this.$router.push({
path: 'articleListEditor'
});
}, 1000);
// this.$message.success('successed!');
// setTimeout(() => {
// localStorage.setItem('U_point', 2);
// this.$router.push({
// path: 'articleListEditor'
// });
// }, 1000);
} else {
load.close();
this.$message.error(res.msg);
@@ -2166,8 +2171,8 @@ export default {
load.close();
this.$message.error(err);
});
})
.catch(() => {});
// })
// .catch(() => {});
},
// 点击开始上线显示
pushOnline(detailMes) {
@@ -2348,6 +2353,60 @@ export default {
.scroll-item {
margin: 0 30px 50px 276px;
}
.payment_info_box {
margin-bottom: 10px;
}
.payment_info_box li {
list-style: none;
margin-top: 2px;
}
.payment_info {
color: #333;
font-size: 14px;
}
.payment_info .label {
color: #333;
}
.payment_info .price {
font-weight: 700;
}
.payment_info .remark {
/* color: #888; */
}
.payment_info .price {
color: #ff5000;
/* color: #888; */
}
.unpaid {
color: #f56c6c;
background: #fef0f0;
border-color: #fbc4c4;
font-size: 14px;
padding: 10px;
box-sizing: border-box;
margin: 0;
}
.paid {
color: #67c23a;
margin: 0;
background: #f0f9eb;
border-color: #c2e7b0;
color: #67c23a;
font-weight: bold;
font-size: 12px;
padding: 10px;
box-sizing: border-box;
}
::v-deep .box-card .el-table th {
background-color: #f0f0f0 !important;
/* border-top: 1px solid #b0b0b0 !important; */
color: #333 !important;
}
::v-deep .box-card .el-table td.el-table__cell,
::v-deep .box-card .el-table th.el-table__cell.is-leaf {
/* border-bottom: 1px solid #b0b0b0 !important; */
}
</style>
<style>
.talkDialog {
@@ -2381,7 +2440,7 @@ export default {
background-color: #fafafa;
position: absolute;
left: 25px;
top: 60px;
top: 40px;
/* width: 220px; */
z-index: 50;
}