Selaa lähdekoodia

feat(merge): merge sc

fix: 冲突
Lind 3 vuotta sitten
vanhempi
commit
d33da25903

+ 20 - 2
src/pages/device/components/Metadata/Base/index.tsx

@@ -51,6 +51,21 @@ const BaseMetadata = observer((props: Props) => {
     }
   };
 
+  const limitsMap = new Map<string, any>();
+  limitsMap.set('events-add', 'eventNotInsertable');
+  limitsMap.set('events-updata', 'eventNotModifiable');
+  limitsMap.set('properties-add', 'propertyNotInsertable');
+  limitsMap.set('properties-updata', 'propertyNotModifiable');
+
+  const operateLimits = (action: 'add' | 'updata', types: MetadataType) => {
+    return (
+      target === 'device' &&
+      (typeMap.get('device')?.features || []).find(
+        (item: { id: string; name: string }) => item.id === limitsMap.get(`${types}-${action}`),
+      )
+    );
+  };
+
   const actions: ProColumns<MetadataItem>[] = [
     {
       title: '操作',
@@ -58,8 +73,10 @@ const BaseMetadata = observer((props: Props) => {
       align: 'center',
       width: 200,
       render: (_: unknown, record: MetadataItem) => [
-        <a
+        <Button
           key="editable"
+          type="link"
+          disabled={operateLimits('updata', type)}
           onClick={() => {
             MetadataModel.edit = true;
             MetadataModel.item = record;
@@ -70,7 +87,7 @@ const BaseMetadata = observer((props: Props) => {
           <Tooltip title="编辑">
             <EditOutlined />
           </Tooltip>
-        </a>,
+        </Button>,
         <a key="delete">
           <Popconfirm
             title="确认删除?"
@@ -161,6 +178,7 @@ const BaseMetadata = observer((props: Props) => {
               MetadataModel.type = type;
               MetadataModel.action = 'add';
             }}
+            disabled={operateLimits('add', type)}
             key="button"
             icon={<PlusOutlined />}
             type="primary"

+ 19 - 19
src/pages/device/components/Metadata/Import/index.tsx

@@ -1,14 +1,14 @@
-import {message, Modal} from 'antd';
-import {createSchemaField} from '@formily/react';
-import type {Field} from '@formily/core';
-import {createForm} from '@formily/core';
-import {Form, FormItem, Input, Select, Space} from '@formily/antd';
-import type {ISchema} from '@formily/json-schema';
+import { message, Modal } from 'antd';
+import { createSchemaField } from '@formily/react';
+import type { Field } from '@formily/core';
+import { createForm } from '@formily/core';
+import { Form, FormItem, Input, Select, Space } from '@formily/antd';
+import type { ISchema } from '@formily/json-schema';
 import FMonacoEditor from '@/components/FMonacoEditor';
 import FUpload from '@/components/Upload';
-import {service} from '@/pages/device/Product';
-import {useParams} from 'umi';
-import {Store} from 'jetlinks-store';
+import { service } from '@/pages/device/Product';
+import { useParams } from 'umi';
+import { Store } from 'jetlinks-store';
 import SystemConst from '@/utils/const';
 
 interface Props {
@@ -36,7 +36,7 @@ const Import = (props: Props) => {
   const loadData = () => async (field: Field) => {
     field.loading = true;
     const product = (await service.queryNoPagingPost({
-      terms: [{column: 'id$not', value: param.id}],
+      terms: [{ column: 'id$not', value: param.id }],
     })) as any;
     field.dataSource = product.result.map((item: any) => ({
       label: item.name,
@@ -54,8 +54,8 @@ const Import = (props: Props) => {
         'x-decorator': 'FormItem',
         'x-component': 'Select',
         enum: [
-          {label: '拷贝产品', value: 'copy'},
-          {label: '导入物模型', value: 'import'},
+          { label: '拷贝产品', value: 'copy' },
+          { label: '导入物模型', value: 'import' },
         ],
       },
       copy: {
@@ -181,14 +181,14 @@ const Import = (props: Props) => {
     if (data.metadata === 'alink') {
       service.convertMetadata('to', 'alink', data.import).subscribe({
         next: async (meta) => {
-          await service.modify(param.id, {metadata: JSON.stringify(meta)});
+          await service.modify(param.id, { metadata: JSON.stringify(meta) });
         },
         error: () => {
           message.error('发生错误!');
         },
       });
     } else {
-      await service.modify(param.id, {metadata: data[data.type]});
+      await service.modify(param.id, { metadata: data[data.type] });
     }
     Store.set(SystemConst.GET_METADATA, true);
     message.success('导入成功');
@@ -203,11 +203,11 @@ const Import = (props: Props) => {
       onCancel={() => props.close()}
       onOk={handleImport}
     >
-      <div style={{background: 'rgb(236, 237, 238)'}}>
-        <p style={{padding: 10}}>
-          <span style={{color: '#f5222d'}}>注</span>
+      <div style={{ background: 'rgb(236, 237, 238)' }}>
+        <p style={{ padding: 10 }}>
+          <span style={{ color: '#f5222d' }}>注</span>
           :导入的物模型会覆盖原来的属性、功能、事件、标签,请谨慎操作。
-          <br/>
+          <br />
           物模型格式请参考文档:
           <a
             rel="noopener noreferrer"
@@ -219,7 +219,7 @@ const Import = (props: Props) => {
         </p>
       </div>
       <Form form={form} layout="vertical">
-        <SchemaField scope={{loadData}} schema={schema}/>
+        <SchemaField scope={{ loadData }} schema={schema} />
       </Form>
     </Modal>
   );