fix(form-create): ms-form-create组件必填字段错误校验问题修复
This commit is contained in:
parent
3aaf50154b
commit
c52abd0423
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<FormCreate
|
<FormCreate
|
||||||
v-model:api="innerApi"
|
v-model:api="formApi"
|
||||||
:rule="formRules"
|
:rule="formRules"
|
||||||
:option="props.option || options"
|
:option="props.option || options"
|
||||||
@mounted="handleMounted"
|
@mounted="handleMounted"
|
||||||
|
@ -13,8 +13,6 @@
|
||||||
/**
|
/**
|
||||||
* @description 用于原生字段form-create
|
* @description 用于原生字段form-create
|
||||||
*/
|
*/
|
||||||
import { ref, watch, watchEffect } from 'vue';
|
|
||||||
|
|
||||||
import MsTagsInput from '@/components/pure/ms-tags-input/index.vue';
|
import MsTagsInput from '@/components/pure/ms-tags-input/index.vue';
|
||||||
import JiraKey from './comp/jiraKey.vue';
|
import JiraKey from './comp/jiraKey.vue';
|
||||||
import PassWord from './formcreate-password.vue';
|
import PassWord from './formcreate-password.vue';
|
||||||
|
@ -29,52 +27,27 @@
|
||||||
const FormCreate = formCreate.$form();
|
const FormCreate = formCreate.$form();
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
rule?: FormRule; // 表单的规则
|
|
||||||
option: any; // 全局配置项
|
option: any; // 全局配置项
|
||||||
api?: Api; // 收集表单的值
|
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const innerApi = ref<any>();
|
const emits = defineEmits<{
|
||||||
|
(e: 'mounted'): void;
|
||||||
|
(e: 'reload'): void;
|
||||||
|
(e: 'change', filed: string): void;
|
||||||
|
}>();
|
||||||
|
|
||||||
const emits = defineEmits(['update:api', 'update:rule', 'mounted', 'reload', 'change']);
|
const formApi = defineModel<Api>('api', {
|
||||||
|
default: undefined,
|
||||||
const formApi = computed({
|
|
||||||
get() {
|
|
||||||
return props.api;
|
|
||||||
},
|
|
||||||
set(val) {
|
|
||||||
emits('update:api', val);
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
watch(
|
const formRules = defineModel<FormRule | undefined>('rule', {
|
||||||
() => formApi.value,
|
default: {},
|
||||||
(val) => {
|
|
||||||
emits('update:api', val);
|
|
||||||
},
|
|
||||||
{ deep: true }
|
|
||||||
);
|
|
||||||
|
|
||||||
const formRules = ref<FormRule | undefined>([]);
|
|
||||||
watchEffect(() => {
|
|
||||||
formRules.value = props.rule;
|
|
||||||
formApi.value = props.api || innerApi.value;
|
|
||||||
});
|
});
|
||||||
watch(
|
|
||||||
() => props.rule,
|
|
||||||
(val) => {
|
|
||||||
formRules.value = val;
|
|
||||||
formApi.value?.refresh();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => formRules.value,
|
() => formRules.value,
|
||||||
(val) => {
|
() => {
|
||||||
emits('update:rule', val);
|
formApi.value?.refresh();
|
||||||
},
|
|
||||||
{
|
|
||||||
deep: true,
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -86,10 +59,9 @@
|
||||||
emits('reload');
|
emits('reload');
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleChange(value: any) {
|
function handleChange(filed: string) {
|
||||||
formApi.value?.validateField(value);
|
formApi.value?.validateField(filed);
|
||||||
emits('update:api', formApi.value);
|
emits('change', filed);
|
||||||
emits('change', value, formApi.value);
|
|
||||||
}
|
}
|
||||||
const options = {
|
const options = {
|
||||||
resetBtn: false, // 不展示默认配置的重置和提交
|
resetBtn: false, // 不展示默认配置的重置和提交
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
v-model:api="fApi"
|
v-model:api="fApi"
|
||||||
v-model:form-item="platformItem"
|
v-model:form-item="platformItem"
|
||||||
:form-rule="platformRules"
|
:form-rule="platformRules"
|
||||||
@change="changeHandler"
|
|
||||||
@mounted="handleMounted"
|
@mounted="handleMounted"
|
||||||
/>
|
/>
|
||||||
<!-- 同步机制 -->
|
<!-- 同步机制 -->
|
||||||
|
@ -292,10 +291,6 @@
|
||||||
|
|
||||||
fApi.value?.setValue({ ...tempObj });
|
fApi.value?.setValue({ ...tempObj });
|
||||||
}
|
}
|
||||||
function changeHandler(a: any, b: FormRuleItem) {
|
|
||||||
fApi.value.validateField(b.field);
|
|
||||||
fApi.value.refreshValidate();
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleMounted() {
|
function handleMounted() {
|
||||||
setValue();
|
setValue();
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
v-model:api="fApi"
|
v-model:api="fApi"
|
||||||
v-model:form-item="platformItem"
|
v-model:form-item="platformItem"
|
||||||
:form-rule="platformRules"
|
:form-rule="platformRules"
|
||||||
@change="changeHandler"
|
|
||||||
@mounted="handleMounted"
|
@mounted="handleMounted"
|
||||||
/>
|
/>
|
||||||
</a-form>
|
</a-form>
|
||||||
|
@ -220,11 +219,6 @@
|
||||||
fApi.value?.setValue({ ...tempObj });
|
fApi.value?.setValue({ ...tempObj });
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeHandler(a: string, formValue: Record<string, any>) {
|
|
||||||
fApi.value.validateField(formValue.field);
|
|
||||||
fApi.value.refreshValidate();
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleMounted() {
|
function handleMounted() {
|
||||||
setValue();
|
setValue();
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from 'vue';
|
|
||||||
|
|
||||||
import AddTemplate from '@/views/setting/organization/template/components/addTemplate.vue';
|
import AddTemplate from '@/views/setting/organization/template/components/addTemplate.vue';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -132,7 +132,6 @@
|
||||||
v-model:rule="formItem.formRules"
|
v-model:rule="formItem.formRules"
|
||||||
:option="configOptions"
|
:option="configOptions"
|
||||||
@click="activeHandler(index)"
|
@click="activeHandler(index)"
|
||||||
@change="(value, formApi) => changeHandler(value, formApi)"
|
|
||||||
/>
|
/>
|
||||||
<a-form
|
<a-form
|
||||||
v-if="templateForm.enableThirdPart && route.query.type === 'BUG'"
|
v-if="templateForm.enableThirdPart && route.query.type === 'BUG'"
|
||||||
|
@ -374,10 +373,6 @@
|
||||||
isError.value = false;
|
isError.value = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeHandler(value: string, api: any) {
|
|
||||||
api?.validateField(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 保存回调
|
// 保存回调
|
||||||
async function save() {
|
async function save() {
|
||||||
try {
|
try {
|
||||||
|
@ -408,6 +403,7 @@
|
||||||
setIsSave(true);
|
setIsSave(true);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
console.log(error);
|
console.log(error);
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
|
@ -463,6 +459,7 @@
|
||||||
scene: route.query.type,
|
scene: route.query.type,
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
console.log(error);
|
console.log(error);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -495,7 +492,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
const selectFiled = ref<DefinedFieldItem[]>([]);
|
const selectFiled = ref<DefinedFieldItem[]>([]);
|
||||||
const selectedIds = ref<string[]>();
|
|
||||||
|
|
||||||
// 编辑更新已选择字段
|
// 编辑更新已选择字段
|
||||||
const isEditField = ref<boolean>(false);
|
const isEditField = ref<boolean>(false);
|
||||||
|
@ -634,6 +630,7 @@
|
||||||
selectData.value = getSelectData(customFields);
|
selectData.value = getSelectData(customFields);
|
||||||
systemFieldData.value = systemFields;
|
systemFieldData.value = systemFields;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
console.log(error);
|
console.log(error);
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
|
|
|
@ -127,7 +127,6 @@
|
||||||
width: 428px;
|
width: 428px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.arco-picker-disabled) {
|
:deep(.arco-picker-disabled) {
|
||||||
border-color: var(--color-text-n8);
|
border-color: var(--color-text-n8);
|
||||||
background: var(--color-text-n8);
|
background: var(--color-text-n8);
|
||||||
|
@ -136,11 +135,9 @@
|
||||||
background: var(--color-text-n8);
|
background: var(--color-text-n8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.arco-form-item-layout-vertical > .arco-form-item-label-col) {
|
:deep(.arco-form-item-layout-vertical > .arco-form-item-label-col) {
|
||||||
overflow-wrap: break-word;
|
overflow-wrap: break-word;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.arco-form-item-content) {
|
:deep(.arco-form-item-content) {
|
||||||
overflow-wrap: anywhere;
|
overflow-wrap: anywhere;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue