Переглянути джерело

feat: 优化组织管理批量编辑

xieyonghong 3 роки тому
батько
коміт
818bfad27c

+ 13 - 2
src/pages/rule-engine/Scene/Save/components/Buttons/ParamsDropdown.tsx

@@ -6,6 +6,7 @@ import MTimePicker from '../ParamsSelect/components/MTimePicker';
 import moment from 'moment';
 import ParamsSelect from '../ParamsSelect';
 import './index.less';
+import { isEqual } from 'lodash';
 
 export interface ParamsDropdownProps {
   value?: any;
@@ -193,7 +194,7 @@ export default (props: ParamsDropdownProps) => {
   const findLabel = (value: string, data: any[], titleName?: string): boolean => {
     let isLabel = false;
     return data.some((item) => {
-      if (item.key === value) {
+      if (isEqual(item.key, value)) {
         let titleKey = 'title';
         if (titleName) {
           titleKey = titleName;
@@ -269,10 +270,20 @@ export default (props: ParamsDropdownProps) => {
       if ('name' in props) {
         _value = props.value?.value[props.name!];
       }
-      findLabel(_value, props.BuiltInOptions || []);
+      findLabel(_value, props.BuiltInOptions || [], '');
     }
   }, [props.BuiltInOptions]);
 
+  useEffect(() => {
+    if (props.metricsOptions) {
+      let _value = props.value?.value;
+      if ('name' in props) {
+        _value = props.value?.value[props.name!];
+      }
+      findLabel(_value, props.metricsOptions || [], 'name');
+    }
+  }, [props.metricsOptions]);
+
   let _itemList = [];
 
   if ('BuiltInOptions' in props) {

+ 1 - 0
src/pages/rule-engine/Scene/Save/terms/paramsItem.tsx

@@ -157,6 +157,7 @@ const ParamsItem = observer((props: ParamsItemProps) => {
               ...mItem,
               label: mItem.name,
               value: mItem.value,
+              key: mItem.value,
             }));
             setMetricsOptions(_metrics);
           } else {

+ 6 - 0
src/pages/system/Department/Assets/service.ts

@@ -118,6 +118,12 @@ class Service<T> extends BaseService<T> {
 
   getBindingAssets = (type: string, data: any[]) =>
     request(`${this.uri}/bindings/${type}`, { method: 'POST', data });
+
+  updateAll = (assetType: string, targetType: string, targetId: string, data: any) =>
+    request(`${this.uri}/permission/${assetType}/${targetType}/${targetId}/_batch`, {
+      method: 'PUT',
+      data,
+    });
 }
 
 export default Service;

+ 12 - 15
src/pages/system/Department/Assets/updateModal.tsx

@@ -24,22 +24,18 @@ export default (props: UpdateModalProps) => {
     if (data) {
       setLoading(true);
       if (Array.isArray(props.id)) {
-        const _data = (props.id as string[]).map((item) => ({
-          targetType: 'org',
-          targetId: props.targetId,
-          assetType: props.type,
-          assetIdList: [item],
-          permission: data.permissions,
-        }));
-        service.bind('product', _data).subscribe({
-          next: () => onlyMessage('操作成功'),
-          error: () => onlyMessage('操作失败', 'error'),
-          complete: () => {
-            setLoading(false);
-            props.onCancel();
-            props.onReload();
+        const resp = await service.updateAll(props.type, 'org', props.targetId, [
+          {
+            assetIdList: props.id,
+            permission: data.permissions,
           },
-        });
+        ]);
+        setLoading(false);
+        if (resp.status === 200) {
+          props.onCancel();
+          props.onReload();
+          onlyMessage('操作成功', 'success');
+        }
       } else {
         const res = await server.updatePermission(
           props.type,
@@ -51,6 +47,7 @@ export default (props: UpdateModalProps) => {
         if (res.status === 200 && props.onReload) {
           props.onCancel();
           props.onReload();
+          onlyMessage('操作成功', 'success');
         }
       }
     }