Commit 87e75906edc0d1f4ffcd5396e2fa41e737d6bbea

Authored by ww
1 parent b71a47e6

fix: 修复规则链节点无法跳转

... ... @@ -16,4 +16,6 @@ export const PageEnum = {
16 16 DEVICE_LIST: '/device/list',
17 17
18 18 SHARE_PAGE: '/share/:viewType/:id/:publicId',
  19 +
  20 + RULE_CHAIN_DETAIL: '/rule/chain/:id',
19 21 };
... ...
  1 +import { RouteLocationNormalizedLoaded } from 'vue-router';
1 2 import { RuleChainFieldsEnum, RuleChainFieldsNameEnum } from '../../../enum/formField/flow';
2 3 import { getRuleChains } from '/@/api/ruleDesigner';
3 4 import { FormSchema } from '/@/components/Form';
4 5
5   -const fetch = async (params: Recordable) => {
  6 +const fetch = async (params: Recordable, ruleChainId: string) => {
6 7 try {
7 8 const result = await getRuleChains(params);
8   - const data = result.data.map((item) => ({ label: item.name, value: item.id.id }));
  9 + const data = result.data
  10 + .map((item) => ({ label: item.name, value: item.id.id }))
  11 + .filter((item) => item.value !== ruleChainId);
9 12 return data;
10 13 } catch (err) {
11 14 console.error(err);
... ... @@ -13,24 +16,27 @@ const fetch = async (params: Recordable) => {
13 16 }
14 17 };
15 18
16   -export const formSchemas: FormSchema[] = [
17   - {
18   - field: RuleChainFieldsEnum.RULE_CHAIN_ID,
19   - label: RuleChainFieldsNameEnum.RULE_CHAIN_ID,
20   - component: 'ApiSearchSelect',
21   - componentProps: () => {
22   - return {
23   - placeholder: '请选择所属产品',
24   - showSearch: true,
25   - params: {
26   - pageSize: 50,
27   - page: 0,
28   - type: 'CORE',
29   - },
30   - api: fetch,
31   - searchApi: fetch,
32   - getPopupContainer: () => document.body,
33   - };
  19 +export const getFormSchemas = (route: RouteLocationNormalizedLoaded): FormSchema[] => {
  20 + const ruleChainId = (route.params as Record<'id', string>).id;
  21 + return [
  22 + {
  23 + field: RuleChainFieldsEnum.RULE_CHAIN_ID,
  24 + label: RuleChainFieldsNameEnum.RULE_CHAIN_ID,
  25 + component: 'ApiSearchSelect',
  26 + componentProps: () => {
  27 + return {
  28 + placeholder: '请选择所属产品',
  29 + showSearch: true,
  30 + params: {
  31 + pageSize: 50,
  32 + page: 0,
  33 + type: 'CORE',
  34 + },
  35 + api: (params: Recordable) => fetch(params, ruleChainId),
  36 + searchApi: (params: Recordable) => fetch(params, ruleChainId),
  37 + getPopupContainer: () => document.body,
  38 + };
  39 + },
34 40 },
35   - },
36   -];
  41 + ];
  42 +};
... ...
1 1 <script lang="ts" setup>
2 2 import type { CreateModalDefineExposeType } from '../../../types';
3 3 import { BasicForm, useForm } from '/@/components/Form';
4   - import { formSchemas } from './create.config';
  4 + import { getFormSchemas } from './create.config';
5 5 import { NodeData } from '../../../types/node';
  6 + import { useRoute } from 'vue-router';
6 7
7 8 defineProps<{
8 9 config: NodeData;
9 10 }>();
10 11
  12 + const ROUTE = useRoute();
  13 +
11 14 const [register, { validate, getFieldsValue, setFieldsValue, resetFields }] = useForm({
12   - schemas: formSchemas,
  15 + schemas: getFormSchemas(ROUTE),
13 16 showActionButtonGroup: false,
14 17 });
15 18
... ...
... ... @@ -2,15 +2,22 @@
2 2 import { NodeProps } from '@vue-flow/core';
3 3 import { Icon } from '/@/components/Icon';
4 4 import { Tooltip } from 'ant-design-vue';
  5 + import { useRouter } from 'vue-router';
  6 + import { NodeData } from '../../../types/node';
5 7
6   - defineProps<{
7   - nodeProps?: NodeProps;
  8 + const props = defineProps<{
  9 + nodeProps?: NodeProps<NodeData>;
8 10 }>();
9 11
  12 + const ROUTER = useRouter();
  13 +
10 14 const handleClick = () => {
11   - // event.stopPropagation();
12   - // event.preventDefault();
13   - // console.log(props);
  15 + console.log(props);
  16 + const { data } = props.nodeProps?.data || ({} as NodeData);
  17 + const { configuration } = (data || {}) as { configuration: Record<'ruleChainId', string> };
  18 + if (configuration.ruleChainId) {
  19 + ROUTER.push(`/rule/chain/${configuration.ruleChainId}`);
  20 + }
14 21 };
15 22 </script>
16 23
... ...