|
@@ -3,25 +3,25 @@
|
|
|
<n-form ref="formRef" label-placement="left" :label-width="80" :model="formModel" :rules="rules">
|
|
|
<n-grid :cols="48" :x-gap="18">
|
|
|
<n-form-item-grid-item :span="25" label="字段名称" path="fieldName">
|
|
|
- <n-input v-model:value="formModel.fieldName" />
|
|
|
+ <n-input v-model:value="formModel.field_name" />
|
|
|
</n-form-item-grid-item>
|
|
|
<n-form-item-grid-item :span="25" label="SQL名称" path="columnName">
|
|
|
- <n-input v-model:value="formModel.columnName" />
|
|
|
+ <n-input v-model:value="formModel.column_name" />
|
|
|
</n-form-item-grid-item>
|
|
|
<n-form-item-grid-item :span="25" label="字段类型" path="fieldType">
|
|
|
- <n-select v-model:value="formModel.fieldType" :options="fieldTypeOptions" />
|
|
|
+ <n-select v-model:value="formModel.field_type" :options="fieldTypeOptions" />
|
|
|
</n-form-item-grid-item>
|
|
|
<n-form-item-grid-item :span="25" label="组件类型" path="componentsType">
|
|
|
- <n-select v-model:value="formModel.componentsType" :options="componentsTypeOptions" />
|
|
|
+ <n-select v-model:value="formModel.components_type" :options="componentsTypeOptions" />
|
|
|
</n-form-item-grid-item>
|
|
|
<n-form-item-grid-item :span="25" label="字段长度" path="filedLen">
|
|
|
- <n-input-number v-model:value="formModel.filedLen" clearable />
|
|
|
+ <n-input-number v-model:value="formModel.field_len" clearable />
|
|
|
</n-form-item-grid-item>
|
|
|
<n-form-item-grid-item :span="25" label="最小值" path="minValue">
|
|
|
- <n-input-number v-model:value="formModel.minValue" clearable />
|
|
|
+ <n-input-number v-model:value="formModel.min_value" clearable />
|
|
|
</n-form-item-grid-item>
|
|
|
<n-form-item-grid-item :span="25" label="最大值" path="maxValue">
|
|
|
- <n-input-number v-model:value="formModel.maxValue" clearable />
|
|
|
+ <n-input-number v-model:value="formModel.max_value" clearable />
|
|
|
</n-form-item-grid-item>
|
|
|
<n-form-item-grid-item :span="25" label="字段描述" path="description">
|
|
|
<n-input v-model:value="formModel.description" />
|
|
@@ -40,6 +40,7 @@ import { ref, computed, reactive, watch } from 'vue';
|
|
|
import type { FormInst, FormItemRule } from 'naive-ui';
|
|
|
import { componentsTypeOptions, fieldTypeOptions } from '@/constants';
|
|
|
import { createRequiredFormRule } from '@/utils';
|
|
|
+import { fetchFieldAdd, fetchFieldEdit } from '@/service/api/event';
|
|
|
|
|
|
export interface Props {
|
|
|
/** 弹窗可见性 */
|
|
@@ -80,44 +81,54 @@ const modalVisible = computed({
|
|
|
const closeModal = () => {
|
|
|
modalVisible.value = false;
|
|
|
};
|
|
|
+const titles: Record<ModalType, string> = {
|
|
|
+ add: '添加字段',
|
|
|
+ edit: '编辑字段'
|
|
|
+};
|
|
|
|
|
|
const title = computed(() => {
|
|
|
- const titles: Record<ModalType, string> = {
|
|
|
- add: '添加用户',
|
|
|
- edit: '编辑用户'
|
|
|
- };
|
|
|
return titles[props.type];
|
|
|
});
|
|
|
|
|
|
const formRef = ref<HTMLElement & FormInst>();
|
|
|
|
|
|
type FormModel = Pick<
|
|
|
- BackgroundField.Field,
|
|
|
- 'fieldName' | 'columnName' | 'componentsType' | 'fieldType' | 'filedLen' | 'minValue' | 'maxValue' | 'description'
|
|
|
+ ApiBackground.Field,
|
|
|
+ | 'field_name'
|
|
|
+ | 'column_name'
|
|
|
+ | 'components_type'
|
|
|
+ | 'field_type'
|
|
|
+ | 'field_len'
|
|
|
+ | 'min_value'
|
|
|
+ | 'max_value'
|
|
|
+ | 'description'
|
|
|
+ | 'id'
|
|
|
>;
|
|
|
|
|
|
const formModel = reactive<FormModel>(createDefaultFormModel());
|
|
|
|
|
|
const rules: Record<keyof FormModel, FormItemRule | FormItemRule[]> = {
|
|
|
- fieldName: createRequiredFormRule('请输入字段名'),
|
|
|
- columnName: createRequiredFormRule('请输入sql名称'),
|
|
|
- componentsType: createRequiredFormRule('请选择组件类型'),
|
|
|
- fieldType: createRequiredFormRule('请选择字段类型'),
|
|
|
- filedLen: createRequiredFormRule('请输入字段的长度'),
|
|
|
- minValue: createRequiredFormRule('请输入字段最小值'),
|
|
|
- maxValue: createRequiredFormRule('请输入字段最大值'),
|
|
|
- description: createRequiredFormRule('请输入字段描述')
|
|
|
+ field_name: createRequiredFormRule('请输入字段名'),
|
|
|
+ column_name: createRequiredFormRule('请输入sql名称'),
|
|
|
+ components_type: createRequiredFormRule('请选择组件类型'),
|
|
|
+ field_type: createRequiredFormRule('请选择字段类型'),
|
|
|
+ field_len: createRequiredFormRule('请输入字段的长度'),
|
|
|
+ min_value: createRequiredFormRule('请输入字段最小值'),
|
|
|
+ max_value: createRequiredFormRule('请输入字段最大值'),
|
|
|
+ description: createRequiredFormRule('请输入字段描述'),
|
|
|
+ id: createRequiredFormRule()
|
|
|
};
|
|
|
|
|
|
function createDefaultFormModel(): FormModel {
|
|
|
return {
|
|
|
- fieldName: '',
|
|
|
- columnName: '',
|
|
|
- componentsType: null,
|
|
|
- fieldType: null,
|
|
|
- filedLen: 0,
|
|
|
- minValue: 0,
|
|
|
- maxValue: 0,
|
|
|
+ id: 0,
|
|
|
+ field_name: '',
|
|
|
+ column_name: '',
|
|
|
+ components_type: null,
|
|
|
+ field_type: null,
|
|
|
+ field_len: 0,
|
|
|
+ min_value: 0,
|
|
|
+ max_value: 0,
|
|
|
description: ''
|
|
|
};
|
|
|
}
|
|
@@ -143,9 +154,26 @@ function handleUpdateFormModelByModalType() {
|
|
|
}
|
|
|
|
|
|
async function handleSubmit() {
|
|
|
- await formRef.value?.validate();
|
|
|
- console.log('===========formRef=====>', formRef);
|
|
|
- window.$message?.success('新增成功!');
|
|
|
+ formRef.value?.validate();
|
|
|
+ const params: Array<ApiBackground.Field> = [formModel];
|
|
|
+
|
|
|
+ if (props.type === 'add') {
|
|
|
+ const data = fetchFieldAdd(params);
|
|
|
+ data.then(res => {
|
|
|
+ if (res.data) {
|
|
|
+ window.$message?.success(`${titles[props.type]}成功!`);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ if (props.type === 'edit') {
|
|
|
+ const data = fetchFieldEdit(formModel);
|
|
|
+ data.then(res => {
|
|
|
+ if (res.data) {
|
|
|
+ window.$message?.success(`${titles[props.type]}成功!`);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
closeModal();
|
|
|
}
|
|
|
|