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 import { TBPaginationResult } from '/#/axios'; 2 import { TBPaginationResult } from '/#/axios';
3 import { defHttp } from '/@/utils/http/axios'; 3 import { defHttp } from '/@/utils/http/axios';
4 4
@@ -6,6 +6,7 @@ enum Api { @@ -6,6 +6,7 @@ enum Api {
6 GET_DEVICE_INFOS = '/tenant/deviceInfos', 6 GET_DEVICE_INFOS = '/tenant/deviceInfos',
7 GET_DEVICE_TYPE = '/device/types', 7 GET_DEVICE_TYPE = '/device/types',
8 TENANT_QUEUE = '/tenant/queues', 8 TENANT_QUEUE = '/tenant/queues',
  9 + TEST_SCRIPT = '/ruleChain/testScript',
9 } 10 }
10 11
11 enum Entity { 12 enum Entity {
@@ -142,3 +143,13 @@ export const getEntityEdge = (params: PageParams) => { @@ -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,3 +52,12 @@ export interface PageParams {
52 sortProperty?: string; 52 sortProperty?: string;
53 sortOrder?: string; 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,13 +77,33 @@
77 return { msg, msgType, metadata: toRaw(unref(metadata)), javascriptFunction }; 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 const handleTestScript = async () => { 94 const handleTestScript = async () => {
81 const flag = await handleValidate(); 95 const flag = await handleValidate();
  96 +
82 flag && emit('test', getValue()); 97 flag && emit('test', getValue());
  98 +
  99 + const result = executeTestScript();
  100 +
  101 + outputContent.value = result;
83 }; 102 };
84 103
85 const handleSave = async () => { 104 const handleSave = async () => {
86 const flag = await handleValidate(); 105 const flag = await handleValidate();
  106 +
87 flag && emit('save', getValue()); 107 flag && emit('save', getValue());
88 }; 108 };
89 109