|
|
@@ -1,4 +1,6 @@
|
|
|
-import { Col, Form, Row, Select } from 'antd';
|
|
|
+import { Col, Row, Select } from 'antd';
|
|
|
+import { useEffect, useState } from 'react';
|
|
|
+import TypeModel from './TypeModel';
|
|
|
// import { useEffect, useState } from "react";
|
|
|
|
|
|
interface Props {
|
|
|
@@ -9,80 +11,92 @@ interface Props {
|
|
|
propertiesChange?: (value?: string) => void;
|
|
|
}
|
|
|
|
|
|
+// const item = {
|
|
|
+// a1: {
|
|
|
+// "value": 10,
|
|
|
+// "source": "fixed",
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
export default (props: Props) => {
|
|
|
- // const [propertiesKey, setPropertiesKey] = useState<string | undefined>(undefined);
|
|
|
- // const [propertiesValue, setPropertiesValue] = useState(undefined);
|
|
|
- // const [propertiesType, setPropertiesType] = useState('');
|
|
|
+ const [propertiesId, setPropertiesId] = useState<string | undefined>(undefined);
|
|
|
+ const [propertiesValue, setPropertiesValue] = useState(undefined);
|
|
|
+ const [propertiesType, setPropertiesType] = useState('');
|
|
|
+ const [source, setSource] = useState<string>('');
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ console.log(props.value);
|
|
|
+ if (props.value) {
|
|
|
+ if (props.properties && props.properties.length) {
|
|
|
+ if (0 in props.value) {
|
|
|
+ setPropertiesValue(props.value[0]);
|
|
|
+ } else if ('undefined' in props.value) {
|
|
|
+ // setPropertiesKey(undefined);
|
|
|
+ setPropertiesValue(undefined);
|
|
|
+ } else {
|
|
|
+ Object.keys(props.value).forEach((key: string) => {
|
|
|
+ // setPropertiesKey(key);
|
|
|
+ setPropertiesValue(props.value[key].value);
|
|
|
+ const propertiesItem = props.properties.find((item: any) => item.id === key);
|
|
|
+ if (propertiesItem) {
|
|
|
+ setPropertiesType(propertiesItem.valueType.type);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // setPropertiesKey(undefined);
|
|
|
+ setPropertiesValue(undefined);
|
|
|
+ }
|
|
|
+ }, [props.value, props.properties]);
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ // console.log(propertiesValue)
|
|
|
+ if (props.onChange && propertiesValue) {
|
|
|
+ const obj = {
|
|
|
+ [propertiesId || 0]: {
|
|
|
+ value: propertiesValue,
|
|
|
+ source: source,
|
|
|
+ },
|
|
|
+ };
|
|
|
+ props.onChange(obj);
|
|
|
+ }
|
|
|
+ }, [propertiesValue, source]);
|
|
|
|
|
|
- // useEffect(() => {
|
|
|
- // console.log(props.value);
|
|
|
- // if (props.value) {
|
|
|
- // if (props.properties && props.properties.length) {
|
|
|
- // if (0 in props.value) {
|
|
|
- // setPropertiesValue(props.value[0]);
|
|
|
- // } else if ('undefined' in props.value) {
|
|
|
- // setPropertiesKey(undefined);
|
|
|
- // setPropertiesValue(undefined);
|
|
|
- // } else {
|
|
|
- // Object.keys(props.value).forEach((key: string) => {
|
|
|
- // setPropertiesKey(key);
|
|
|
- // setPropertiesValue(props.value[key].value);
|
|
|
- // const propertiesItem = props.properties.find((item: any) => item.id === key);
|
|
|
- // if (propertiesItem) {
|
|
|
- // setPropertiesType(propertiesItem.valueType.type);
|
|
|
- // }
|
|
|
- // });
|
|
|
- // }
|
|
|
- // }
|
|
|
- // } else {
|
|
|
- // setPropertiesKey(undefined);
|
|
|
- // setPropertiesValue(undefined);
|
|
|
- // }
|
|
|
- // }, [props.value, props.properties]);
|
|
|
return (
|
|
|
<Row gutter={24}>
|
|
|
- <Col span={24}>
|
|
|
- <Form.Item
|
|
|
- name={['device', 'message', 'properties']}
|
|
|
- label="设置属性"
|
|
|
- rules={[{ required: true, message: '请选择属性' }]}
|
|
|
- >
|
|
|
- <Select
|
|
|
- id={props.id}
|
|
|
- value={props.value ? props.value[0] : undefined}
|
|
|
- options={props.properties.filter((item) => {
|
|
|
- if (item.expands && item.expands.type) {
|
|
|
- return item.expands.type.includes('write');
|
|
|
- }
|
|
|
- return false;
|
|
|
- })}
|
|
|
- fieldNames={{ label: 'name', value: 'id' }}
|
|
|
- style={{ width: '100%' }}
|
|
|
- placeholder={'请选择属性'}
|
|
|
- ></Select>
|
|
|
- </Form.Item>
|
|
|
- </Col>
|
|
|
<Col span={12}>
|
|
|
- <Form.Item
|
|
|
- name={['device', 'message', 'properties']}
|
|
|
- label="设置属性"
|
|
|
- rules={[{ required: true, message: '请选择属性' }]}
|
|
|
- >
|
|
|
- <Select
|
|
|
- id={props.id}
|
|
|
- value={props.value ? props.value[0] : undefined}
|
|
|
- options={props.properties.filter((item) => {
|
|
|
- if (item.expands && item.expands.type) {
|
|
|
- return item.expands.type.includes('write');
|
|
|
- }
|
|
|
- return false;
|
|
|
- })}
|
|
|
- fieldNames={{ label: 'name', value: 'id' }}
|
|
|
- style={{ width: '100%' }}
|
|
|
- placeholder={'请选择属性'}
|
|
|
- ></Select>
|
|
|
- </Form.Item>
|
|
|
+ <Select
|
|
|
+ id={props.id}
|
|
|
+ value={props.value ? props.value[0] : undefined}
|
|
|
+ options={props.properties.filter((item) => {
|
|
|
+ if (item.expands && item.expands.type) {
|
|
|
+ return item.expands.type.includes('write');
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ })}
|
|
|
+ fieldNames={{ label: 'name', value: 'id' }}
|
|
|
+ style={{ width: '100%' }}
|
|
|
+ placeholder={'请选择属性'}
|
|
|
+ onChange={(e, option) => {
|
|
|
+ setPropertiesId(e);
|
|
|
+ setPropertiesType(option.valueType.type);
|
|
|
+ console.log(option);
|
|
|
+ }}
|
|
|
+ ></Select>
|
|
|
</Col>
|
|
|
+ {propertiesId && (
|
|
|
+ <Col span={12}>
|
|
|
+ <TypeModel
|
|
|
+ value={propertiesValue}
|
|
|
+ type={propertiesType}
|
|
|
+ onChange={(value, sources) => {
|
|
|
+ setPropertiesValue(value);
|
|
|
+ setSource(sources);
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </Col>
|
|
|
+ )}
|
|
|
</Row>
|
|
|
);
|
|
|
};
|