fix: iot && IconifyIcon

This commit is contained in:
xingyu4j
2025-10-13 10:41:08 +08:00
parent 4b69721a90
commit a4561b3dd8
22 changed files with 218 additions and 188 deletions

View File

@@ -12,9 +12,13 @@ import { getDictOptions } from '@vben/hooks';
import { $t } from '@vben/locales';
import { cloneDeep } from '@vben/utils';
import { message } from 'ant-design-vue';
import { Button, Form, Input, message, Radio } from 'ant-design-vue';
import { createThingModel, updateThingModel } from '#/api/iot/thingmodel';
import {
createThingModel,
getThingModel,
updateThingModel,
} from '#/api/iot/thingmodel';
import {
IOT_PROVIDE_KEY,
IoTDataSpecsDataTypeEnum,
@@ -37,7 +41,7 @@ const dialogTitle = ref(''); // 弹窗的标题
const formLoading = ref(false); // 表单的加载中1修改时的数据加载2提交的按钮禁用
const formType = ref(''); // 表单的类型create - 新增update - 修改
const formData = ref<ThingModelData>({
type: IoTThingModelTypeEnum.PROPERTY,
type: IoTThingModelTypeEnum.PROPERTY.toString(),
dataType: IoTDataSpecsDataTypeEnum.INT,
property: {
dataType: IoTDataSpecsDataTypeEnum.INT,
@@ -47,7 +51,7 @@ const formData = ref<ThingModelData>({
},
service: {},
event: {},
} as ThingModelData);
});
const formRef = ref(); // 表单 Ref
@@ -176,68 +180,64 @@ function resetForm() {
</script>
<template>
<Dialog v-model="dialogVisible" :title="dialogTitle">
<a-form
<Modal v-model="dialogVisible" :title="dialogTitle">
<Form
ref="formRef"
:loading="formLoading"
:model="formData"
:rules="ThingModelFormRules"
:label-col="{ span: 6 }"
:wrapper-col="{ span: 18 }"
>
<a-form-item label="功能类型" name="type">
<a-radio-group v-model:value="formData.type">
<a-radio-button
v-for="dict in getDictOptions(
<Form.Item label="功能类型" name="type">
<Radio.Group v-model:value="formData.type">
<Radio.Button
v-for="(dict, index) in getDictOptions(
DICT_TYPE.IOT_THING_MODEL_TYPE,
'number',
)"
:key="dict.value"
:key="index"
:value="dict.value"
>
{{ dict.label }}
</a-radio-button>
</a-radio-group>
</a-form-item>
<a-form-item label="功能名称" name="name">
<a-input v-model:value="formData.name" placeholder="请输入功能名称" />
</a-form-item>
<a-form-item label="标识符" name="identifier">
<a-input
v-model:value="formData.identifier"
placeholder="请输入标识符"
/>
</a-form-item>
</Radio.Button>
</Radio.Group>
</Form.Item>
<Form.Item label="功能名称" name="name">
<Input v-model:value="formData.name" placeholder="请输入功能名称" />
</Form.Item>
<Form.Item label="标识符" name="identifier">
<Input v-model:value="formData.identifier" placeholder="请输入标识符" />
</Form.Item>
<!-- 属性配置 -->
<ThingModelProperty
v-if="formData.type === IoTThingModelTypeEnum.PROPERTY"
v-if="formData.type === IoTThingModelTypeEnum.PROPERTY.toString()"
v-model="formData.property"
/>
<!-- 服务配置 -->
<ThingModelService
v-if="formData.type === IoTThingModelTypeEnum.SERVICE"
v-if="formData.type === IoTThingModelTypeEnum.SERVICE.toString()"
v-model="formData.service"
/>
<!-- 事件配置 -->
<ThingModelEvent
v-if="formData.type === IoTThingModelTypeEnum.EVENT"
v-if="formData.type === IoTThingModelTypeEnum.EVENT.toString()"
v-model="formData.event"
/>
<a-form-item label="描述" name="description">
<a-textarea
v-model:value="formData.description"
<Form.Item label="描述" name="desc">
<Input.TextArea
v-model:value="formData.desc"
:maxlength="200"
:rows="3"
placeholder="请输入属性描述"
/>
</a-form-item>
</a-form>
</Form.Item>
</Form>
<template #footer>
<a-button :disabled="formLoading" type="primary" @click="submitForm">
<Button :disabled="formLoading" type="primary" @click="submitForm">
确 定
</a-button>
<a-button @click="dialogVisible = false"> </a-button>
</Button>
<Button @click="dialogVisible = false"> </Button>
</template>
</Dialog>
</Modal>
</template>