From 80a2014c36cec818464a9c7f090eadf0b4a14b8c Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 18 六月 2026 09:55:15 +0800
Subject: [PATCH] 社保方案保险类型和基数必填
---
src/views/personnelManagement/socialSecuritySet/components/formDia.vue | 36 ++++++++++++++++++++++++++++++------
1 files changed, 30 insertions(+), 6 deletions(-)
diff --git a/src/views/personnelManagement/socialSecuritySet/components/formDia.vue b/src/views/personnelManagement/socialSecuritySet/components/formDia.vue
index 985a6b1..a8cba91 100644
--- a/src/views/personnelManagement/socialSecuritySet/components/formDia.vue
+++ b/src/views/personnelManagement/socialSecuritySet/components/formDia.vue
@@ -90,7 +90,9 @@
</div>
<el-form-item :prop="'insuranceBenefits.' + index + '.insuranceType'"
label="淇濋櫓绫诲瀷锛�"
- label-width="100px">
+ label-width="100px"
+ :rules="[{ required: true, message: '璇烽�夋嫨淇濋櫓绫诲瀷', trigger: 'blur' }]"
+ >
<el-select v-model="item.insuranceType"
placeholder="璇烽�夋嫨"
clearable
@@ -103,7 +105,9 @@
</el-select>
</el-form-item>
<el-form-item label="缂磋垂鍩烘暟锛�"
- label-width="100px">
+ label-width="100px"
+ :prop="'insuranceBenefits.' + index + '.paymentBase'"
+ :rules="[{ validator: validatePaymentBase, trigger: 'blur' }]">
<div class="base-salary-wrap">
<el-input v-model="item.paymentBase"
placeholder="鏍规嵁鍩烘湰宸ヨ祫缂寸撼"
@@ -113,14 +117,16 @@
:disabled="isDetail || item.useBasicSalary"
@input="handlePaymentBaseInput(item)" />
<el-checkbox v-model="item.useBasicSalary"
- @change="handleUseBasicSalaryChange(item)"
+ @change="(val) => handleUseBasicSalaryChange(item, index)"
:disabled="isDetail">
璋冪敤鍩烘湰宸ヨ祫
</el-checkbox>
</div>
</el-form-item>
<el-form-item label="涓汉缂磋垂姣斾緥锛�"
- label-width="100px">
+ label-width="100px"
+ :prop="'insuranceBenefits.' + index + '.personalRatio'"
+ :rules="[{ required: true, message: '璇疯緭鍏ヤ釜浜虹即璐规瘮渚�', trigger: 'blur' }]">
<div class="personal-ratio-wrap">
<el-input v-model="item.personalRatio"
placeholder="璇疯緭鍏�"
@@ -259,10 +265,13 @@
form.value.insuranceBenefits.splice(index, 1);
};
- const handleUseBasicSalaryChange = item => {
+ const handleUseBasicSalaryChange = (item, index) => {
if (item.useBasicSalary) {
item.paymentBase = "";
}
+ nextTick(() => {
+ formRef.value?.validateField(`insuranceBenefits.${index}.paymentBase`);
+ });
};
const handlePaymentBaseInput = item => {
@@ -286,6 +295,21 @@
if (value < 0) {
item.personalFixed = "";
}
+ }
+ };
+
+ const validatePaymentBase = (rule, value, callback) => {
+ const match = rule.field.match(/insuranceBenefits\.(\d+)\.paymentBase/);
+ if (match) {
+ const index = parseInt(match[1], 10);
+ const item = form.value.insuranceBenefits[index];
+ if (item && !item.useBasicSalary && (!value || value === "")) {
+ callback(new Error("璇疯緭鍏ョ即璐瑰熀鏁�"));
+ } else {
+ callback();
+ }
+ } else {
+ callback();
}
};
@@ -477,4 +501,4 @@
color: #606266;
font-size: 14px;
}
-</style>
+</style>
\ No newline at end of file
--
Gitblit v1.9.3