可视化编排新增代码片段功能

This commit is contained in:
fofolee 2025-02-21 08:51:42 +08:00
parent e6afc60f49
commit a6c4016831
2 changed files with 35 additions and 4 deletions

View File

@ -11,11 +11,11 @@
<q-select
:model-value="argvs.language"
@update:modelValue="updateArgvs('language', $event)"
:options="Object.keys(programs).slice(2, -1)"
:options="programOptions"
label="编程语言"
filled
dense
class="col-6"
class="col"
>
<template v-slot:append>
<q-avatar size="sm" square>
@ -39,6 +39,7 @@
class="col-3"
filled
dense
v-if="!isCodeSnippet"
:model-value="argvs.scriptCode"
@update:modelValue="updateArgvs('scriptCode', $event)"
label="脚本文件编码"
@ -50,6 +51,7 @@
class="col-3"
filled
dense
v-if="!isCodeSnippet"
:model-value="argvs.outputCode"
@update:modelValue="updateArgvs('outputCode', $event)"
label="命令行输出编码"
@ -59,7 +61,7 @@
/>
</div>
<div class="row q-col-gutter-sm">
<div class="row q-col-gutter-sm" v-if="!isCodeSnippet">
<div class="col-6">
<ArrayEditor
topLabel="脚本参数"
@ -176,10 +178,23 @@ export default defineComponent({
this.defaultArgvs
);
},
isCodeSnippet() {
return this.modelValue.value === "createCodeSnippet";
},
programOptions() {
const startIndex = this.isCodeSnippet ? 1 : 2;
return Object.keys(programs).slice(startIndex, -1);
},
},
methods: {
parseCodeToArgvs(code) {
if (!code) return this.defaultArgvs;
if (this.isCodeSnippet) {
const result = parseFunction(code);
return {
code: quickcomposer.coding.base64Decode(result.argvs?.[0]),
};
}
try {
const variableFormatPaths = ["arg1.args[*]"];
const result = parseFunction(code, { variableFormatPaths });
@ -196,6 +211,11 @@ export default defineComponent({
}
},
generateCode(argvs = this.argvs) {
if (this.isCodeSnippet) {
return `quickcomposer.coding.base64Decode("${quickcomposer.coding.base64Encode(
argvs.code
)}")`;
}
const options = {
language: argvs.language,
};

View File

@ -23,7 +23,7 @@ export const scriptCommands = {
value: "quickcommand.runCode",
label: "运行脚本",
component: "ScriptEditor",
desc: "运行各种编程语言的代码",
description: "运行各种编程语言的代码,需要预安装对应的执行环境",
asyncMode: "await",
outputs: {
label: "运行结果",
@ -31,6 +31,17 @@ export const scriptCommands = {
typeName: "字符串",
},
},
{
value: "createCodeSnippet",
label: "新建代码片段",
component: "ScriptEditor",
description: "单纯将代码片段赋值到变量中,不会执行",
outputs: {
label: "代码片段",
suggestName: "codeSnippet",
typeName: "字符串",
},
},
{
value: "return",
label: "函数返回",