From d69c473fe790b66fb31537c724259bf2a750b9ae Mon Sep 17 00:00:00 2001 From: fofolee Date: Wed, 22 Jan 2025 00:52:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=87=BD=E6=95=B0=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E3=80=81=E5=AE=8C=E5=96=84=E6=B3=A8=E5=85=A5JS?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/composer/MultiParams.vue | 7 ++ .../composer/card/CommandButtons.vue | 1 + .../composer/script/ReturnEditor.vue | 92 +++++++++++++++++++ src/js/composer/cardComponents.js | 5 + src/js/composer/commands/scriptCommands.js | 15 ++- 5 files changed, 116 insertions(+), 4 deletions(-) create mode 100644 src/components/composer/script/ReturnEditor.vue diff --git a/src/components/composer/MultiParams.vue b/src/components/composer/MultiParams.vue index 79f7714..836a763 100644 --- a/src/components/composer/MultiParams.vue +++ b/src/components/composer/MultiParams.vue @@ -102,6 +102,9 @@ export default defineComponent({ this.updateModelValue(this.funcName, newArgvs); }, generateCode(funcName, argvs) { + if (this.localCommand.isExpression) { + return argvs.join(""); + } /** * 字符串模式stringfiy后,null会变成'"null"', ''变成'""' * 变量模式stringify后,null变成'null', ''保持'' @@ -140,6 +143,10 @@ export default defineComponent({ let argvs = window.lodashM.cloneDeep(this.defaultArgvs); if (!code) return argvs; + if (this.localCommand.isExpression) { + return [code]; + } + const variableFormatPaths = []; const addVariableFormatPath = (prefix, config) => { diff --git a/src/components/composer/card/CommandButtons.vue b/src/components/composer/card/CommandButtons.vue index 7c894f7..a1364b3 100644 --- a/src/components/composer/card/CommandButtons.vue +++ b/src/components/composer/card/CommandButtons.vue @@ -21,6 +21,7 @@ diff --git a/src/components/composer/script/ReturnEditor.vue b/src/components/composer/script/ReturnEditor.vue new file mode 100644 index 0000000..03fa298 --- /dev/null +++ b/src/components/composer/script/ReturnEditor.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/js/composer/cardComponents.js b/src/js/composer/cardComponents.js index d9f8933..c317c28 100644 --- a/src/js/composer/cardComponents.js +++ b/src/js/composer/cardComponents.js @@ -50,3 +50,8 @@ export const SystemCommandEditor = defineAsyncComponent(() => export const SelectListEditor = defineAsyncComponent(() => import("components/composer/ui/SelectListEditor.vue") ); + +// 编程组件 +export const ReturnEditor = defineAsyncComponent(() => + import("components/composer/script/ReturnEditor.vue") +); diff --git a/src/js/composer/commands/scriptCommands.js b/src/js/composer/commands/scriptCommands.js index f33a5f7..c468cf6 100644 --- a/src/js/composer/commands/scriptCommands.js +++ b/src/js/composer/commands/scriptCommands.js @@ -17,9 +17,11 @@ export const scriptCommands = { ], }, { - value: "(function(code){new Function(code)()})", + value: "injectJs", label: "注入JS脚本", icon: "script", + neverHasOutput: true, + isExpression: true, config: [ { label: "JS脚本", @@ -29,11 +31,10 @@ export const scriptCommands = { ], }, { - value: "quickcommand.runAppleScript", - label: "执行 AppleScript", + value: "quickcommand.runCode", + label: "执行代码", icon: "script", outputVariable: "result", - saveOutput: true, config: [ { label: "脚本", @@ -42,5 +43,11 @@ export const scriptCommands = { }, ], }, + { + value: "return", + label: "函数返回", + neverHasOutput: true, + component: "ReturnEditor", + }, ], };