|
@@ -0,0 +1,133 @@
|
|
|
+<template>
|
|
|
+ <!-- 测点表单 -->
|
|
|
+ <BasicForm
|
|
|
+ :model="site"
|
|
|
+ :schemas="schemas"
|
|
|
+ :label-col="{ span: 8 }"
|
|
|
+ :wrapper-col="{ span: 16 }"
|
|
|
+ label-align="right"
|
|
|
+ :showActionButtonGroup="false"
|
|
|
+ >
|
|
|
+ <template #create-btn="{ model }">
|
|
|
+ <Button type="primary" :rounded="true" @click="createSite(model)">新建测点</Button>
|
|
|
+ </template>
|
|
|
+ <template #copy-btn="{ model }">
|
|
|
+ <Button type="primary" :rounded="true" @click="copySite(model)">复制测点</Button>
|
|
|
+ </template>
|
|
|
+ <template #edit-btn="{ model }">
|
|
|
+ <Button type="primary" :rounded="true" @click="editSite(model)">编辑测点</Button>
|
|
|
+ </template>
|
|
|
+ </BasicForm>
|
|
|
+</template>
|
|
|
+<script setup lang="ts">
|
|
|
+ import { MonitorSite, MonitorSiteOperationParams } from '@/api/sys/model/monitorModel';
|
|
|
+ import { defineProps } from 'vue';
|
|
|
+ import { BasicForm, FormSchema } from '@/components/Form/index';
|
|
|
+ import { Button } from 'ant-design-vue';
|
|
|
+
|
|
|
+ // props & emits
|
|
|
+ defineProps<{
|
|
|
+ site?: MonitorSite;
|
|
|
+ }>();
|
|
|
+ const emit = defineEmits<{
|
|
|
+ submit: [value: MonitorSiteOperationParams];
|
|
|
+ }>();
|
|
|
+
|
|
|
+ // 生成输入类表单项的帮助函数
|
|
|
+ function generateInputSchema({
|
|
|
+ field,
|
|
|
+ label,
|
|
|
+ span = 5,
|
|
|
+ placeholder,
|
|
|
+ required = false,
|
|
|
+ }: {
|
|
|
+ field: string;
|
|
|
+ label: string;
|
|
|
+ span?: number;
|
|
|
+ placeholder?: string;
|
|
|
+ required?: boolean;
|
|
|
+ }): FormSchema {
|
|
|
+ return {
|
|
|
+ component: 'Input',
|
|
|
+ field,
|
|
|
+ label,
|
|
|
+ rules: [{ required }],
|
|
|
+ colProps: {
|
|
|
+ span,
|
|
|
+ },
|
|
|
+ componentProps: {
|
|
|
+ placehoder: placeholder || `请输入${label}`,
|
|
|
+ },
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ // 生成按钮类表单项的帮助函数,具体的按钮写在BasicForm对应色的slot下
|
|
|
+ function generateButtonSchema({ slot }: { slot: string }): FormSchema {
|
|
|
+ return {
|
|
|
+ field: slot,
|
|
|
+ slot,
|
|
|
+ component: 'Render',
|
|
|
+ colProps: {
|
|
|
+ span: 1,
|
|
|
+ },
|
|
|
+ componentProps: {
|
|
|
+ size: 'small',
|
|
|
+ },
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ // 表单配置项
|
|
|
+ const schemas: FormSchema[] = [
|
|
|
+ generateButtonSchema({ slot: 'create-btn' }),
|
|
|
+ generateInputSchema({ field: 'id', label: '测点编号', required: true }),
|
|
|
+ generateInputSchema({ field: 'sensorType', label: '测点类型', required: true }),
|
|
|
+ generateInputSchema({ field: 'sensorStatus', label: '测点使用状态', required: true }),
|
|
|
+ generateInputSchema({ field: 'pos', label: '所属位置', required: true }),
|
|
|
+ generateInputSchema({ field: 'x', label: 'X', required: true, span: 3 }),
|
|
|
+ generateButtonSchema({ slot: 'copy-btn' }),
|
|
|
+ generateInputSchema({ field: 'srouce', label: '系统来源', required: true }),
|
|
|
+ generateInputSchema({ field: 'data_type', label: '数据类型', required: true }),
|
|
|
+ generateInputSchema({ field: 'nuit', label: '单位', required: true }),
|
|
|
+ generateInputSchema({ field: 'distance', label: '巷道距离' }),
|
|
|
+ generateInputSchema({ field: 'y', label: 'Y', required: true, span: 3 }),
|
|
|
+ generateButtonSchema({ slot: 'edit-btn' }),
|
|
|
+ generateInputSchema({ field: 'max_messure', label: '高量程' }),
|
|
|
+ generateInputSchema({ field: 'min_messure', label: '低量程' }),
|
|
|
+ generateInputSchema({ field: 'warn_limit', label: '报警上限', required: true }),
|
|
|
+ generateInputSchema({ field: 'warn_deadline', label: '报警下限', required: true }),
|
|
|
+ generateInputSchema({ field: 'z', label: 'Z', span: 3 }),
|
|
|
+ ];
|
|
|
+
|
|
|
+ // 点击按钮后处理提交逻辑的方法
|
|
|
+ function createSite(model: MonitorSiteOperationParams) {
|
|
|
+ emit('submit', {
|
|
|
+ clickType: 'newPoin', // 点击类型 新建测点
|
|
|
+ sensorType: model.sensorType, // 水 0502、瓦斯0001、顶板1401等 多级菜单
|
|
|
+ sensorStatus: model.sensorStatus, // 状态
|
|
|
+ id: model.id, // 测点ID
|
|
|
+ from: 'tank',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ function copySite(model: MonitorSiteOperationParams) {
|
|
|
+ emit('submit', {
|
|
|
+ clickType: 'copyPoint', // 点击类型 新建测点
|
|
|
+ sensorType: model.sensorType, // 水 0502、瓦斯0001、顶板1401等 多级菜单
|
|
|
+ sensorStatus: model.sensorStatus, // 状态
|
|
|
+ id: model.id, // 测点ID
|
|
|
+ from: 'tank',
|
|
|
+ });
|
|
|
+ }
|
|
|
+ function editSite(model: MonitorSiteOperationParams) {
|
|
|
+ emit('submit', {
|
|
|
+ clickType: 'modifyPoint', // 点击类型 新建测点
|
|
|
+ sensorType: model.sensorType, // 水 0502、瓦斯0001、顶板1401等 多级菜单
|
|
|
+ sensorStatus: model.sensorStatus, // 状态
|
|
|
+ id: model.id, // 测点ID
|
|
|
+ from: 'tank',
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ defineExpose({
|
|
|
+ schemas,
|
|
|
+ });
|
|
|
+</script>
|