From b0d3e9aa33bb0dc58ee2af5162819f237857c793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=8B=E4=BA=8E=E5=88=9D=E8=A7=81?= <752204717@qq.com> Date: Mon, 24 Nov 2025 09:18:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/langs/en.js | 24 +- src/components/common/langs/zh.js | 16 +- src/components/page/Complete_profile.vue | 169 +++--- src/components/page/PreIngestedEditor.vue | 497 ++++++++++-------- src/components/page/articleList.vue | 64 ++- .../pendingPayment/OrderConfirmation.vue | 36 +- 6 files changed, 467 insertions(+), 339 deletions(-) diff --git a/src/components/common/langs/en.js b/src/components/common/langs/en.js index f75818b..122b7c1 100644 --- a/src/components/common/langs/en.js +++ b/src/components/common/langs/en.js @@ -403,23 +403,27 @@ const en = { pendingPayment: { title: 'Title', journal: 'Journal', - Paymentamount: 'Payment Amount', - Paymentstatus: 'Payment Status', + Paymentamount: 'Payment amount', + subtotal: 'Subtotal', payment: 'Online Payment', payDetail: 'Payment Details', - total: 'Total price', - youhui: 'Discount', - discountprice: 'Discount price', + total: 'Original price', + youhui: 'Final price', + discountprice: 'Final price after discount', youhuiremark: 'Discount description', - submitOrder: 'Submit Order', - state0: 'Obligation', - state1: 'Payment successful', + submitOrder: 'Make a payment', + state0: 'Pending payment', + state1: 'Payment successfully', state2: 'Cancelled', - paymentmethod: 'Payment Method', - Disbursements: 'Disbursements', + paymentmethod: 'Payment method', + Disbursements: 'Payment amount', Confirmorderinformation: 'Confirm order information', orderDetail: 'Order information', + pendingpayment: 'Pending payment', + Paymentsuccessfully: 'Payment successfully', + Paymentstatus: 'Payment status', + time: 'Payment time', }, PreAccept: { successInfo: 'Congratulations! Your manuscript has entered into Pre-accept status. Now please check and complete the necessary information of your manuscript for final publication.', diff --git a/src/components/common/langs/zh.js b/src/components/common/langs/zh.js index 54f018b..0e8d20e 100644 --- a/src/components/common/langs/zh.js +++ b/src/components/common/langs/zh.js @@ -399,18 +399,22 @@ const zh = { subtotal: '小计', payment: '在线缴费', payDetail: '付款详情', - total: '总价', - youhui: '优惠', - discountprice: '折扣价格', - youhuiremark: '优惠说明', - submitOrder: '提交订单', + total: '原价', + youhui: '折扣价', + discountprice: '折扣价', + youhuiremark: '折扣说明', + submitOrder: '付款', state0: '待付款', state1: '已缴费', state2: '已取消', paymentmethod: '付款方式', - Disbursements: '已付款', + Disbursements: '支付金额', Confirmorderinformation: '确认订单信息', orderDetail: '订单信息', + pendingpayment: '待付款', + Paymentsuccessfully: '已付款', + Paymentstatus: '缴费状态', + time: '缴费时间', }, PreAccept: { successInfo: 'Congratulations! Your manuscript has entered into Pre-accept status. Now please check and complete the necessary information of your manuscript for final publication.', diff --git a/src/components/page/Complete_profile.vue b/src/components/page/Complete_profile.vue index f315132..cfe13b9 100644 --- a/src/components/page/Complete_profile.vue +++ b/src/components/page/Complete_profile.vue @@ -8,15 +8,15 @@ color: #67c23a; display: flex; align-items: center; - justify-content: space-between; + /* justify-content: space-between; */ " > Dear {{ user_name }} , Congratulations! You manuscript has been pre-accepted for publication in {{ journalInfo.title }}. Please review and complete the necessary information of your manuscript. Kindly note that an article processing charge is - required for final publication.. Please review and complete the necessary information of your manuscript. + {{ isFree ? '' : 'Kindly note that an article processing charge is required for final publication.' }}

@@ -60,49 +60,74 @@

{{ this.$t('PreAccept.step1') }}

-
-

- How to apply for a discount? Please see - our discount policy here: - https://www.tmrjournals.com/tmr/free-application/. -

- - - - - - - - - - - - - - - - - -

- Click here +

+
+ - to go to the payment page. -

+ +
+ The article processing charges for your manuscript have been waived. +
+
+

+ How to apply for a discount? + Please see our discount policy here: + https://www.tmrjournals.com/tmr/free-application/. +

+ + + + + + + + + + + + +

+ Click here + to access the payment page. +

+
+
@@ -125,9 +150,10 @@

{{ this.$t('PreAccept.step3') }} - Complete - Pending - + + Complete + Pending

A total of @@ -147,7 +173,7 @@

Any questions/Help

-

If you experience any problems, please contact us by {{ journalInfo.email }}

+

Should you encounter any issues, please feel free to contact us at {{ journalInfo.email }}

@@ -159,6 +185,7 @@ import OrderConfirmation from '../page/components/pendingPayment/OrderConfirmati export default { data() { return { + isFree: false, tableData: [], articleInfo: {}, journalInfo: {}, @@ -201,13 +228,13 @@ export default { this.getInfoStatu(); this.hideAlert(); this.getDetail(); - this.getPreacceptPayment(); + // this.getPreacceptPayment(); }, activated() { this.getInfoStatu(); this.hideAlert(); this.getDetail(); - this.getPreacceptPayment(); + // this.getPreacceptPayment(); }, components: { OrderConfirmation @@ -220,8 +247,7 @@ export default { this.$router.push({ path: '/OrderConfirmation', query: { - id: this.$route.query.id, - + id: this.$route.query.id } }); }, @@ -231,27 +257,47 @@ export default { article_id: this.$route.query.id }) .then((res) => { - if (res.code == 0) { this.tableData = [{ ...res.data }]; } }); }, getDetail() { + const loading = this.$loading({ + lock: true, + text: 'Loading...', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.7)' + }); this.$api .post(this.urlList.detail, { article_id: this.$route.query.id }) .then((res) => { - + loading.close(); if (res.code == 0) { this.articleInfo = res.data.article_detail; this.journalInfo = res.data.journal_detail; + this.tableData = [ + { + original_price: this.journalInfo.fee ? this.journalInfo.fee : 0, + fee: this.journalInfo.fee ? this.articleInfo.fee : 0, + is_buy: this.articleInfo.is_buy + } + ]; + if (this.tableData[0].is_buy == 1 && Number(this.tableData[0].fee) == 0) { + this.isFree = true; + } else { + this.isFree = false; + } if (this.articleInfo.is_buy == 1 || (this.articleInfo.is_buy == 0 && this.journalInfo.fee == '0.00')) { this.active = 1; } } + }) + .catch((err) => { + loading.close(); }); }, handleClickStep(e) { @@ -270,10 +316,15 @@ export default { }, // 跳转到图表编辑页面 goGenerateCharts(id) { - window.open(this.$router.resolve({ path: '/GenerateCharts', - query: { - id: id - } }).href, '_blank'); + window.open( + this.$router.resolve({ + path: '/GenerateCharts', + query: { + id: id + } + }).href, + '_blank' + ); // this.$router.push({ // path: 'GenerateCharts', // query: { diff --git a/src/components/page/PreIngestedEditor.vue b/src/components/page/PreIngestedEditor.vue index dade636..b7b53cc 100644 --- a/src/components/page/PreIngestedEditor.vue +++ b/src/components/page/PreIngestedEditor.vue @@ -1,48 +1,26 @@ @@ -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; */ +}