Commit 3742f3caa6d8a2e11add7bd14795598c6bc9c287

Authored by ww
1 parent 7b53f85e

perf: data board component info modal add validate

... ... @@ -111,7 +111,6 @@
111 111 initChart();
112 112 props.add && props.add(props.value.id, update);
113 113 if (props.random) timeout = setInterval(handleRandomValue, 2000) as unknown as number;
114   - console.log(unref(chartRef));
115 114 });
116 115
117 116 onUnmounted(() => {
... ...
... ... @@ -26,10 +26,6 @@
26 26
27 27 const { createMessage } = useMessage();
28 28
29   - // const componentRecord = reactive<DataBoardLayoutInfo>({
30   - // ...props.record,
31   - // } as unknown as DataBoardLayoutInfo);
32   -
33 29 const dataSource = ref<DataSourceEl[]>([
34 30 { id: buildUUID(), componentInfo: props.defaultConfig || {} } as unknown as DataSourceEl,
35 31 ]);
... ... @@ -49,6 +45,11 @@
49 45 }
50 46 };
51 47
  48 + const validate = async () => {
  49 + await basicMethod.validate();
  50 + await validateDataSourceField();
  51 + };
  52 +
52 53 const getAllDataSourceFieldValue = () => {
53 54 const _dataSource = getDataSourceField();
54 55 const basicInfo = basicMethod.getFieldsValue();
... ... @@ -58,6 +59,16 @@
58 59 };
59 60 };
60 61
  62 + const validateDataSourceField = async () => {
  63 + const hasExistEl = Object.keys(dataSourceEl).filter((key) => dataSourceEl[key]);
  64 + const _dataSource: boolean[] = [];
  65 + for (const id of hasExistEl) {
  66 + const flag = (await (dataSourceEl[id] as FormActionType).validate()) as boolean;
  67 + _dataSource.push(flag);
  68 + }
  69 + return _dataSource;
  70 + };
  71 +
61 72 const getDataSourceField = () => {
62 73 const hasExistEl = Object.keys(dataSourceEl).filter((key) => dataSourceEl[key]);
63 74 const _dataSource: DataSource[] = [];
... ... @@ -90,6 +101,7 @@
90 101 });
91 102 await nextTick();
92 103 (dataSourceEl[copyRecordId] as FormActionType).setFieldsValue(value);
  104 + (dataSourceEl[copyRecordId] as FormActionType).clearValidate();
93 105 };
94 106
95 107 const [registerVisualOptionModal, { openModal }] = useModal();
... ... @@ -128,6 +140,7 @@
128 140
129 141 const echoDataSource = () => {
130 142 basicMethod.setFieldsValue(props.record.record);
  143 + basicMethod.clearValidate();
131 144 dataSource.value = [];
132 145 dataSource.value = props.record.record.dataSource.map((item) => {
133 146 const id = buildUUID();
... ... @@ -139,6 +152,7 @@
139 152
140 153 nextTick(() => {
141 154 (dataSourceEl[id] as FormActionType).setFieldsValue(item);
  155 + (dataSourceEl[id] as FormActionType).clearValidate();
142 156 });
143 157 return {
144 158 id,
... ... @@ -165,6 +179,7 @@
165 179
166 180 defineExpose({
167 181 getAllDataSourceFieldValue,
  182 + validate,
168 183 });
169 184 </script>
170 185
... ...
... ... @@ -44,6 +44,7 @@
44 44
45 45 const basicConfigurationEl = ref<{
46 46 getAllDataSourceFieldValue: Fn<any, Recordable>;
  47 + validate: Fn;
47 48 }>();
48 49
49 50 const resetForm = () => {
... ... @@ -53,8 +54,9 @@
53 54 componentDefaultConfig.value = {};
54 55 };
55 56
56   - const handleSubmit = () => {
57   - const { getAllDataSourceFieldValue } = unref(basicConfigurationEl)!;
  57 + const handleSubmit = async () => {
  58 + const { getAllDataSourceFieldValue, validate } = unref(basicConfigurationEl)!;
  59 + await validate();
58 60 const value = getAllDataSourceFieldValue();
59 61 unref(isEdit) ? handleUpdateComponent(value) : handleAddComponent(value);
60 62 resetForm();
... ...
... ... @@ -32,6 +32,7 @@ export const basicSchema: FormSchema[] = [
32 32 field: BasicConfigField.NAME,
33 33 label: '组件名称',
34 34 component: 'Input',
  35 + rules: [{ required: true, message: '组件名称为必填项' }],
35 36 componentProps: {
36 37 placeholder: '请输入组件名称',
37 38 },
... ... @@ -40,6 +41,7 @@ export const basicSchema: FormSchema[] = [
40 41 field: BasicConfigField.REMARK,
41 42 label: '组件备注',
42 43 component: 'InputTextArea',
  44 + // rules: [{ required: true, message: '组件备注为必填项' }],
43 45 componentProps: {
44 46 placeholder: '请输入组件备注',
45 47 },
... ... @@ -64,6 +66,7 @@ export const dataSourceSchema: FormSchema[] = [
64 66 component: 'ApiTreeSelect',
65 67 label: '组织',
66 68 colProps: { span: 8 },
  69 + rules: [{ required: true, message: '组织为必填项' }],
67 70 componentProps({ formActionType }) {
68 71 const { setFieldsValue } = formActionType;
69 72 return {
... ... @@ -90,6 +93,7 @@ export const dataSourceSchema: FormSchema[] = [
90 93 component: 'ApiSelect',
91 94 label: '设备',
92 95 colProps: { span: 8 },
  96 + rules: [{ required: true, message: '设备名称为必填项' }],
93 97 componentProps({ formModel, formActionType }) {
94 98 const { setFieldsValue } = formActionType;
95 99 const organizationId = formModel[DataSourceField.ORIGINATION_ID];
... ... @@ -126,6 +130,7 @@ export const dataSourceSchema: FormSchema[] = [
126 130 label: '网关子设备',
127 131 component: 'ApiSelect',
128 132 colProps: { span: 8 },
  133 + rules: [{ required: true, message: '网关子设备为必填项' }],
129 134 ifShow({ model }) {
130 135 return model[DataSourceField.IS_GATEWAY_DEVICE];
131 136 },
... ... @@ -168,6 +173,7 @@ export const dataSourceSchema: FormSchema[] = [
168 173 component: 'ApiSelect',
169 174 label: '属性',
170 175 colProps: { span: 8 },
  176 + rules: [{ required: true, message: '属性为必填项' }],
171 177 componentProps({ formModel }) {
172 178 const organizationId = formModel[DataSourceField.ORIGINATION_ID];
173 179 const isGatewayDevice = formModel[DataSourceField.IS_GATEWAY_DEVICE];
... ...