yxk-20260610-把把脉

需要所办领导审批时,增加必填校验
This commit is contained in:
ye1023
2026-06-10 20:04:34 +08:00
parent f6600e85ec
commit e19cd8a629
@@ -134,7 +134,7 @@
<j-switch v-model:value="formData.isNeedAppro" ></j-switch> <j-switch v-model:value="formData.isNeedAppro" ></j-switch>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col v-if="showSupDeptLeader" :span="12">
<a-form-item label="所办领导" v-bind="validateInfos.supDeptleaderid" id="BgTakepulseForm-supDeptleaderid" name="supDeptleaderid"> <a-form-item label="所办领导" v-bind="validateInfos.supDeptleaderid" id="BgTakepulseForm-supDeptleaderid" name="supDeptleaderid">
<j-select-user v-model:value="formData.supDeptleaderid" allow-clear /> <j-select-user v-model:value="formData.supDeptleaderid" allow-clear />
</a-form-item> </a-form-item>
@@ -151,7 +151,7 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, ref, reactive, computed, toRaw, onMounted } from 'vue'; import { defineComponent, ref, reactive, computed, toRaw, onMounted, watch } from 'vue';
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
import { queryDataById, saveOrUpdate } from '../BgTakepulse.api'; import { queryDataById, saveOrUpdate } from '../BgTakepulse.api';
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue'; import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
@@ -215,10 +215,22 @@
delFlag: '', delFlag: '',
}); });
const showSupDeptLeader = computed(() => formData.isNeedAppro === '1');
//表单验证 //表单验证
const validatorRules = reactive({ const validatorRules = reactive({
supDeptleaderid: [
{
validator: async (_rule, value) => {
if (showSupDeptLeader.value && !value) {
return Promise.reject('请选择所办领导');
}
return Promise.resolve();
},
},
],
}); });
const {resetFields, validate, validateInfos} = useForm(formData, validatorRules, {immediate: false}); const {resetFields, validate, validateInfos, clearValidate} = useForm(formData, validatorRules, {immediate: false});
const dbData = {}; const dbData = {};
const formItemLayout = { const formItemLayout = {
labelCol: {xs: {span: 24}, sm: {span: 5}}, labelCol: {xs: {span: 24}, sm: {span: 5}},
@@ -237,6 +249,16 @@
return props.formDisabled; return props.formDisabled;
}); });
// 不需要所办领导审批时,隐藏字段不能保留历史选择或校验错误。
function clearSupDeptLeaderIfNotNeeded() {
if (!showSupDeptLeader.value) {
formData.supDeptleaderid = '';
clearValidate(['supDeptleaderid']);
}
}
watch(() => formData.isNeedAppro, clearSupDeptLeaderIfNotNeeded);
onMounted(()=>{ onMounted(()=>{
initFormData(); initFormData();
}); });
@@ -250,6 +272,7 @@
Object.keys(row).map(k => { Object.keys(row).map(k => {
formData[k] = row[k]; formData[k] = row[k];
}); });
clearSupDeptLeaderIfNotNeeded();
} }
} }
// 是否显示提交按钮 // 是否显示提交按钮
@@ -282,6 +305,7 @@
}) })
//赋值 //赋值
Object.assign(formData,tmpData); Object.assign(formData,tmpData);
clearSupDeptLeaderIfNotNeeded();
} }
async function getFormData() { async function getFormData() {
@@ -302,6 +326,9 @@
function normalizeMainFormData(data) { function normalizeMainFormData(data) {
if (data) { if (data) {
if (data.isNeedAppro !== '1') {
data.supDeptleaderid = '';
}
Object.keys(data).forEach((key) => { Object.keys(data).forEach((key) => {
if (Array.isArray(data[key])) { if (Array.isArray(data[key])) {
data[key] = data[key].join(','); data[key] = data[key].join(',');
@@ -326,6 +353,7 @@
Object.keys(values).map(k=>{ Object.keys(values).map(k=>{
formData[k] = values[k]; formData[k] = values[k];
}); });
clearSupDeptLeaderIfNotNeeded();
} }
} }
@@ -348,6 +376,7 @@
handleFormChange, handleFormChange,
formItemLayout, formItemLayout,
disabled, disabled,
showSupDeptLeader,
showFlowSubmitButton, showFlowSubmitButton,
getFormData, getFormData,
submitForm, submitForm,