From 14f8ebe30ac49fa29c44fc789a3a58657aed2abd Mon Sep 17 00:00:00 2001
From: LHD_HY <2872546851@qq.com>
Date: Wed, 26 Nov 2025 17:56:45 +0800
Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/router/index.js | 14 +++
.../finance/components/FinanceForm.vue | 4 +-
.../components/child/FinanceReportUpload.vue | 12 +--
.../components/child/FinancialStatement.vue | 81 +++++++++++++----
.../components/child/CompletionAndBidInfo.vue | 7 +-
.../components/child/ContractInfo.vue | 8 +-
.../components/child/ContractInfoDetail.vue | 2 +-
.../components/QualificationForm.vue | 87 ++++++++++++-------
.../child/QualificationFormChild.vue | 36 ++++----
.../enterpriseLibrary/qualification/index.vue | 57 ++++++------
.../components/RejectionItemForm.vue | 2 +-
.../enterpriseLibrary/rejectionItem/index.vue | 3 +-
.../components/AnalysisLabelItem.vue | 1 -
.../components/child/ProjectFile.vue | 7 +-
14 files changed, 209 insertions(+), 112 deletions(-)
diff --git a/src/router/index.js b/src/router/index.js
index 0a045ec..84ccdfa 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -653,6 +653,20 @@ export const dynamicRoutes = [
}
]
},
+ {
+ path: '/analysisRule',
+ component: Layout,
+ hidden: true,
+ permissions: ['analysis:rule:list'],
+ children: [
+ {
+ path: 'index',
+ component: () => import('@/views/template/templateInfo/components/AnalysisRule'),
+ name: 'AnalysisRule',
+ meta: { title: '解析规则', activeMenu: '/template', noCache: true }
+ }
+ ]
+ },
]
// 防止连续点击多次路由报错
diff --git a/src/views/enterpriseLibrary/finance/components/FinanceForm.vue b/src/views/enterpriseLibrary/finance/components/FinanceForm.vue
index 81fed37..1a10838 100644
--- a/src/views/enterpriseLibrary/finance/components/FinanceForm.vue
+++ b/src/views/enterpriseLibrary/finance/components/FinanceForm.vue
@@ -133,7 +133,6 @@ export default {
formData.files.push(...statementFiles) // 加入统一文件列表
}
- console.log('123',formData.files)
// 处理财务报表的删除文件列表
if (financialStatementData.delFileList && financialStatementData.delFileList.length) {
@@ -141,10 +140,9 @@ export default {
}
if (this.type === 'add') {
- console.log('asdad',formData)
await addFinance(formData)
} else {
- console.log('年份编辑',formData)
+ console.log('编辑内容',formData)
await updateFinance(formData)
}
diff --git a/src/views/enterpriseLibrary/finance/components/child/FinanceReportUpload.vue b/src/views/enterpriseLibrary/finance/components/child/FinanceReportUpload.vue
index ad8386a..81b2a19 100644
--- a/src/views/enterpriseLibrary/finance/components/child/FinanceReportUpload.vue
+++ b/src/views/enterpriseLibrary/finance/components/child/FinanceReportUpload.vue
@@ -40,7 +40,7 @@
placeholder="文件上传后自动提取"
class="form-control"
show-word-limit
- maxlength="32"
+ maxlength="64"
>
@@ -86,7 +86,8 @@ export default {
},
rules: {
fileList: [
- { required: true, message: '请上传财务报告附件', trigger: 'change' }
+ { required: true, message: '请上传财务报告附件', trigger: 'change' },
+ { type: 'string', max: 64, message: '长度不能超过64个字符', trigger: 'blur' },
],
fileName: [
{ required: true, message: '文件名需等待文件上传后自动提取', trigger: 'blur' }
@@ -116,13 +117,8 @@ export default {
methods: {
handleUploadFail() {
-
-
- // 将文件名和报告年份置空
this.formData.fileName = '';
this.formData.reportYear = '';
-
-
},
handleDocxContent(text) {
@@ -176,7 +172,7 @@ export default {
setFormData(data) {
- // 财务报告文件:不手动生成uid
+ // 财务报告文件
const financeFiles = Array.isArray(data.fileList)
? data.fileList.filter(file => file && file.businessType === 'finance_report')
.map(file => ({
diff --git a/src/views/enterpriseLibrary/finance/components/child/FinancialStatement.vue b/src/views/enterpriseLibrary/finance/components/child/FinancialStatement.vue
index 3bfd2d2..f9e107d 100644
--- a/src/views/enterpriseLibrary/finance/components/child/FinancialStatement.vue
+++ b/src/views/enterpriseLibrary/finance/components/child/FinancialStatement.vue
@@ -40,6 +40,7 @@
class="form-control auto-input"
show-word-limit
maxlength="16"
+ @input="handleNumberInput('operatingIncome', 2)"
>
@@ -51,6 +52,7 @@
class="form-control auto-input"
show-word-limit
maxlength="16"
+ @input="handleNumberInput('currentAssets', 2)"
>
@@ -62,6 +64,7 @@
class="form-control auto-input"
show-word-limit
maxlength="16"
+ @input="handleNumberInput('currentLiabilities', 2)"
>
@@ -76,6 +79,7 @@
class="form-control auto-input"
show-word-limit
maxlength="16"
+ @input="handleNumberInput('currentRatio', 2)"
>
@@ -87,8 +91,7 @@
class="form-control auto-input"
show-word-limit
maxlength="16"
- :precision="2"
- @change="handleNumberInput('netProfit')"
+ @input="handleNumberInput('netProfit', 2)"
>
@@ -100,6 +103,7 @@
class="form-control auto-input"
show-word-limit
maxlength="16"
+ @input="handleNumberInput('shareholdersEquity', 2)"
>
@@ -114,6 +118,7 @@
class="form-control auto-input"
show-word-limit
maxlength="16"
+ @input="handleNumberInput('returnOnNetAssets', 2)"
>
@@ -125,6 +130,8 @@
class="form-control auto-input"
show-word-limit
maxlength="16"
+ @input="handleNumberInput('totalLiabilities', 2)"
+
>
@@ -134,10 +141,9 @@
v-model="formData.totalAssets"
placeholder="自动提取"
class="form-control auto-input"
- :precision="2"
- @change="handleNumberInput('totalAssets')"
show-word-limit
maxlength="16"
+ @input="handleNumberInput('totalAssets', 2)"
>
@@ -152,6 +158,8 @@
class="form-control auto-input"
show-word-limit
maxlength="16"
+ @input="handleNumberInput('assetLiabilityRatio', 2)"
+
>
@@ -204,37 +212,47 @@ export default {
{ required: true, message: '请上传财务报表附件', trigger: 'change' }
],
operatingIncome: [
- { required: true, message: '营业收入为必填项', trigger: 'change' }
+ { required: true, message: '营业收入为必填项', trigger: 'change' },
+ { type: 'string', max: 16, message: '长度不能超过16个字符', trigger: 'blur' },
],
netProfit: [
- { required: true, message: '净利润为必填项', trigger: 'change' }
+ { required: true, message: '净利润为必填项', trigger: 'change' },
+ { type: 'string', max: 16, message: '长度不能超过16个字符', trigger: 'blur' },
],
returnOnNetAssets: [
{ required: true, message: '净资产收益率为必填项', trigger: 'change' },
- { pattern: /^\d+(\.\d+)?%?$/, message: '请输入有效的净资产收益率(如1或1%)', trigger: 'blur' }
+ { pattern: /^\d+(\.\d+)?%?$/, message: '请输入有效的净资产收益率(如1或1%)', trigger: 'blur' },
+ { type: 'string', max: 16, message: '长度不能超过16个字符', trigger: 'blur' },
],
currentAssets: [
- { required: true, message: '流动资产为必填项', trigger: 'blur' }
+ { required: true, message: '流动资产为必填项', trigger: 'blur' },
+ { type: 'string', max: 16, message: '长度不能超过16个字符', trigger: 'blur' },
],
currentLiabilities: [
- { required: true, message: '流动负债为必填项', trigger: 'blur' }
+ { required: true, message: '流动负债为必填项', trigger: 'blur' },
+ { type: 'string', max: 16, message: '长度不能超过16个字符', trigger: 'blur' },
],
currentRatio: [
{ required: true, message: '流动比率为必填项', trigger: 'blur' },
- { pattern: /^\d+(\.\d+)?%?$/, message: '请输入有效的流动比率(如1或1%)', trigger: 'blur' }
+ { pattern: /^\d+(\.\d+)?%?$/, message: '请输入有效的流动比率(如1或1%)', trigger: 'blur' },
+ { type: 'string', max: 16, message: '长度不能超过16个字符', trigger: 'blur' },
],
shareholdersEquity: [
- { required: true, message: '股东权益为必填项', trigger: 'blur' }
+ { required: true, message: '股东权益为必填项', trigger: 'blur' },
+ { type: 'string', max: 16, message: '长度不能超过16个字符', trigger: 'blur' },
],
totalLiabilities: [
- { required: true, message: '负债总额为必填项', trigger: 'blur' }
+ { required: true, message: '负债总额为必填项', trigger: 'blur' },
+ { type: 'string', max: 16, message: '长度不能超过16个字符', trigger: 'blur' },
],
totalAssets: [
- { required: true, message: '资产总额为必填项', trigger: 'blur' }
+ { required: true, message: '资产总额为必填项', trigger: 'blur' },
+ { type: 'string', max: 16, message: '长度不能超过16个字符', trigger: 'blur' },
],
assetLiabilityRatio: [
{ required: true, message: '资产负债率为必填项', trigger: 'blur' },
- { pattern: /^\d+(\.\d+)?%?$/, message: '请输入有效的资产负债率(如1或1%)', trigger: 'blur' }
+ { pattern: /^\d+(\.\d+)?%?$/, message: '请输入有效的资产负债率(如1或1%)', trigger: 'blur' },
+ { type: 'string', max: 16, message: '长度不能超过16个字符', trigger: 'blur' },
]
},
isReplacingFile: false // 新增:标记是否正在替换文件
@@ -517,10 +535,39 @@ export default {
* 处理数字输入框的change事件,确保格式正确
* @param {string} fieldName - 表单字段名
*/
- handleNumberInput(fieldName) {
- this.formData[fieldName] = this.formatToTwoDecimalPlaces(this.formData[fieldName]);
- }
+ handleNumberInput(fieldName, decimalPlaces) {
+ let value = this.formData[fieldName];
+ if (value === null || value === undefined) {
+ value = '';
+ }
+
+ // 1. 转为字符串并清除所有非数字和非小数点的字符
+ // 对于允许输入百分比的字段,可以加上 %,如 /[^\d.%]/g
+ value = value.toString().replace(/[^\d.]/g, '');
+
+ // 2. 只保留第一个小数点
+ const parts = value.split('.');
+ if (parts.length > 2) {
+ value = parts[0] + '.' + parts.slice(1).join('');
+ }
+
+ // 3. 限制小数点后的位数
+ if (decimalPlaces > 0 && parts.length === 2) {
+ value = parts[0] + '.' + parts[1].substring(0, decimalPlaces);
+ } else if (decimalPlaces === 0) {
+ // 如果不允许小数,则取整数部分
+ value = parts[0];
+ }
+
+ // 4. 严格控制总长度不超过 maxlength (16)
+ if (value.length > 16) {
+ value = value.substring(0, 16);
+ }
+
+ // 5. 将处理后的值赋回给 v-model
+ this.formData[fieldName] = value;
+ },
}
}
diff --git a/src/views/enterpriseLibrary/performance/components/child/CompletionAndBidInfo.vue b/src/views/enterpriseLibrary/performance/components/child/CompletionAndBidInfo.vue
index 96c1272..8a9d8ff 100644
--- a/src/views/enterpriseLibrary/performance/components/child/CompletionAndBidInfo.vue
+++ b/src/views/enterpriseLibrary/performance/components/child/CompletionAndBidInfo.vue
@@ -81,6 +81,7 @@
diff --git a/src/views/enterpriseLibrary/rejectionItem/components/RejectionItemForm.vue b/src/views/enterpriseLibrary/rejectionItem/components/RejectionItemForm.vue
index 0e4418d..9075f26 100644
--- a/src/views/enterpriseLibrary/rejectionItem/components/RejectionItemForm.vue
+++ b/src/views/enterpriseLibrary/rejectionItem/components/RejectionItemForm.vue
@@ -157,7 +157,7 @@ export default {
}
}).catch(error => {
this.loading.close()
- this.$modal.msgError('操作失败:' + error)
+ this.$modal.msgError('废标项已存在')
})
}
})
diff --git a/src/views/enterpriseLibrary/rejectionItem/index.vue b/src/views/enterpriseLibrary/rejectionItem/index.vue
index 3080b4d..3e76c18 100644
--- a/src/views/enterpriseLibrary/rejectionItem/index.vue
+++ b/src/views/enterpriseLibrary/rejectionItem/index.vue
@@ -309,8 +309,9 @@ export default {