Commit 6ad91962d462d3400ab7336c77d432a0c92c9958

Authored by ww
1 parent 02fc83cf

fix: 修复JavaScriptFilterTest组件无法进行测试

1   -import { DeviceInfoItemType, DeviceTypeItem, PageParams } from './model';
  1 +import { DeviceInfoItemType, DeviceTypeItem, PageParams, ScriptTestParams } from './model';
2 2 import { TBPaginationResult } from '/#/axios';
3 3 import { defHttp } from '/@/utils/http/axios';
4 4
... ... @@ -6,6 +6,7 @@ enum Api {
6 6 GET_DEVICE_INFOS = '/tenant/deviceInfos',
7 7 GET_DEVICE_TYPE = '/device/types',
8 8 TENANT_QUEUE = '/tenant/queues',
  9 + TEST_SCRIPT = '/ruleChain/testScript',
9 10 }
10 11
11 12 enum Entity {
... ... @@ -142,3 +143,13 @@ export const getEntityEdge = (params: PageParams) => {
142 143 }
143 144 );
144 145 };
  146 +
  147 +export const testScript = (data: ScriptTestParams) => {
  148 + return defHttp.post<Record<'error' | 'output', string>>(
  149 + {
  150 + url: Api.TEST_SCRIPT,
  151 + data,
  152 + },
  153 + { joinPrefix: false }
  154 + );
  155 +};
... ...
... ... @@ -52,3 +52,12 @@ export interface PageParams {
52 52 sortProperty?: string;
53 53 sortOrder?: string;
54 54 }
  55 +
  56 +export interface ScriptTestParams {
  57 + argNames?: string[];
  58 + metadata?: Recordable;
  59 + msg?: string;
  60 + msgType?: string;
  61 + script?: string;
  62 + scriptType?: string;
  63 +}
... ...
... ... @@ -77,13 +77,33 @@
77 77 return { msg, msgType, metadata: toRaw(unref(metadata)), javascriptFunction };
78 78 };
79 79
  80 + function executeTestScript() {
  81 + try {
  82 + const { javaScriptEditorProps } = props;
  83 + const { paramsName } = javaScriptEditorProps;
  84 + const fn = new Function(...(paramsName || [])!, unref(scriptContent));
  85 + const value = getValue();
  86 + const executeParams = paramsName!.map((key) => value[key]);
  87 +
  88 + return fn(...executeParams);
  89 + } catch (error) {
  90 + return error;
  91 + }
  92 + }
  93 +
80 94 const handleTestScript = async () => {
81 95 const flag = await handleValidate();
  96 +
82 97 flag && emit('test', getValue());
  98 +
  99 + const result = executeTestScript();
  100 +
  101 + outputContent.value = result;
83 102 };
84 103
85 104 const handleSave = async () => {
86 105 const flag = await handleValidate();
  106 +
87 107 flag && emit('save', getValue());
88 108 };
89 109
... ...