|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
|
<!-- 测点操作表单 -->
|
|
|
<BasicForm
|
|
|
- :model="mergedFormModel"
|
|
|
+ :model="site"
|
|
|
:schemas="schemas"
|
|
|
:label-col="{ span: 9 }"
|
|
|
:wrapper-col="{ span: 15 }"
|
|
@@ -36,12 +36,8 @@
|
|
|
</BasicForm>
|
|
|
</template>
|
|
|
<script setup lang="ts">
|
|
|
- import {
|
|
|
- MonitorSiteTreeNode,
|
|
|
- MonitorSiteOperationParams,
|
|
|
- SaveMonitorSiteParams,
|
|
|
- } from '@/api/sys/model/monitorModel';
|
|
|
- import { computed, defineProps, ref } from 'vue';
|
|
|
+ import { MonitorSiteTreeNode, MonitorSiteOperationParams } from '@/api/sys/model/monitorModel';
|
|
|
+ import { defineProps, ref } from 'vue';
|
|
|
import { BasicForm, FormSchema, useForm } from '@/components/Form/index';
|
|
|
import { Button } from 'ant-design-vue';
|
|
|
import { SensorDict, SystemSourceDict } from '../const';
|
|
@@ -49,7 +45,7 @@
|
|
|
// props & emits
|
|
|
const props = defineProps<{ site: Partial<MonitorSiteTreeNode> }>();
|
|
|
const emit = defineEmits<{
|
|
|
- save: [value: SaveMonitorSiteParams];
|
|
|
+ save: [value: Required<MonitorSiteTreeNode>];
|
|
|
operation: [value: MonitorSiteOperationParams];
|
|
|
}>();
|
|
|
|
|
@@ -135,7 +131,12 @@
|
|
|
const schemas: FormSchema[] = [
|
|
|
generateButtonSchema({ slot: 'create-btn' }),
|
|
|
generateInputSchema({ field: 'id', label: '测点编号', required: true }),
|
|
|
- generateSelectSchema({ field: 'sensorType', label: '测点类型', dict: SensorDict }),
|
|
|
+ generateSelectSchema({
|
|
|
+ field: 'sensorType',
|
|
|
+ label: '测点类型',
|
|
|
+ dict: SensorDict,
|
|
|
+ required: false,
|
|
|
+ }),
|
|
|
generateInputSchema({ field: 'sensorStatus', label: '测点使用状态' }),
|
|
|
generateInputSchema({ field: 'label', label: '所属位置', required: true }),
|
|
|
generateInputSchema({ field: 'x', label: 'X', required: true, span: 3 }),
|
|
@@ -156,21 +157,13 @@
|
|
|
|
|
|
// 表单是否可以编辑
|
|
|
const editable = ref(false);
|
|
|
- // 表单数据,用于在交互中动态的更改表单
|
|
|
- const formModel = ref<Partial<MonitorSiteTreeNode>>({});
|
|
|
- const mergedFormModel = computed(() => {
|
|
|
- return {
|
|
|
- ...props.site,
|
|
|
- ...formModel.value,
|
|
|
- };
|
|
|
- });
|
|
|
|
|
|
// 后续操作表单必要的函数
|
|
|
- const [register, { validate }] = useForm();
|
|
|
+ const [register, { validate, setFieldsValue }] = useForm();
|
|
|
|
|
|
// 新建测点,设置表单的数据、状态
|
|
|
function createSite() {
|
|
|
- formModel.value = { id: '' };
|
|
|
+ setFieldsValue({ id: '' });
|
|
|
editable.value = true;
|
|
|
}
|
|
|
|
|
@@ -182,14 +175,14 @@
|
|
|
// 保存测点,提交表单
|
|
|
function save() {
|
|
|
validate().then((v) => {
|
|
|
- editable.value = false;
|
|
|
- emit('save', { ...mergedFormModel.value, ...v } as SaveMonitorSiteParams);
|
|
|
+ cancel();
|
|
|
+ emit('save', { ...props.site, ...v } as Required<MonitorSiteTreeNode>);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
// 取消编辑,表单回到默认状态
|
|
|
function cancel() {
|
|
|
- formModel.value = {};
|
|
|
+ setFieldsValue(props.site);
|
|
|
editable.value = false;
|
|
|
}
|
|
|
|