Ver código fonte

fix: 修改远程升级新增

100011797 3 anos atrás
pai
commit
3689b5bdb4

+ 24 - 1
src/pages/device/Firmware/Save/index.tsx

@@ -13,6 +13,7 @@ import { useRef } from 'react';
 import type { ProductItem } from '@/pages/device/Product/typings';
 import { onlyMessage } from '@/utils/util';
 import RemoveData from './RemoveData';
+import _ from 'lodash';
 
 interface Props {
   data?: FirmwareItem;
@@ -41,6 +42,25 @@ const Save = (props: Props) => {
         const value = (field as Field).value;
         fileInfo.current = value;
       });
+      onFieldValueChange('productId', (field, form1) => {
+        if (field.modified) {
+          form1.setFieldState('versionOrder', (state) => {
+            state.value = undefined;
+          });
+        }
+      });
+      onFieldValueChange('versionOrder', async (field, f1) => {
+        const value = (field as Field).value;
+        const productId = (field.query('.productId').take() as Field).value;
+        if (field.modified && productId && value) {
+          const resp = await service.validateVersion(productId, value);
+          if (resp.status === 200) {
+            f1.setFieldState('versionOrder', (state) => {
+              state.selfErrors = resp.result ? ['版本序号已存在'] : undefined;
+            });
+          }
+        }
+      });
     },
   });
 
@@ -50,7 +70,10 @@ const Save = (props: Props) => {
     field.loading = true;
     services(field).then(
       action.bound!((list: any) => {
-        field.dataSource = list.result.map((item: any) => ({ label: item.name, value: item.id }));
+        const _data = list.result.filter((it: any) => {
+          return _.map(it?.features || [], 'id').includes('supportFirmware');
+        });
+        field.dataSource = _data.map((item: any) => ({ label: item.name, value: item.id }));
         products.current = list.result;
         field.loading = false;
       }),

+ 5 - 0
src/pages/device/Firmware/service.ts

@@ -63,6 +63,11 @@ class Service extends BaseService<FirmwareItem> {
 
   queryDevice = () =>
     request(`/${SystemConst.API_BASE}/device/instance/_query/no-paging?paging=false`);
+
+  validateVersion = (productId: string, versionOrder: number) =>
+    request(`/${SystemConst.API_BASE}/firmware/${productId}/${versionOrder}/exists`, {
+      method: 'GET',
+    });
 }
 
 export default Service;