feat(devops): 重构流水线任务构建器界面布局并添加参数配置功能

- 将界面改为左右两列布局,左侧显示节点演示和选项预览,右侧显示参数设置
- 添加 CutePage 组件包装各个功能区域
- 重构按钮组配置,区分链接和执行服务两种类型的执行动作配置
- 添加节点参数表格配置功能
- 更新请求URL模板,使用管道实例节点ID作为参数
- 添加默认参数列表配置示例
This commit is contained in:
2026-03-07 10:24:46 +08:00
parent 29e6b93689
commit c03ddc36a9
@@ -1,5 +1,7 @@
<template> <template>
<div> <el-row>
<el-col :span="12">
<CutePage>
<el-divider content-position="left">节点演示</el-divider> <el-divider content-position="left">节点演示</el-divider>
<div style="padding-left: 15px"> <div style="padding-left: 15px">
<pipe-task <pipe-task
@@ -51,6 +53,8 @@
:duration-millis="1767237071" :duration-millis="1767237071"
/> />
</div> </div>
</CutePage>
<CutePage>
<el-divider content-position="left">节点选项(预览)</el-divider> <el-divider content-position="left">节点选项(预览)</el-divider>
<el-form ref="form" :model="parameters" label-width="160px"> <el-form ref="form" :model="parameters" label-width="160px">
<el-form-item <el-form-item
@@ -68,6 +72,10 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
</CutePage>
</el-col>
<el-col :span="12">
<CutePage>
<el-divider content-position="left">节点参数设置</el-divider> <el-divider content-position="left">节点参数设置</el-divider>
<el-form label-width="140px"> <el-form label-width="140px">
<el-form-item label="节点名称"> <el-form-item label="节点名称">
@@ -116,23 +124,27 @@
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="blank" label="是否新开窗口" width="100"> <el-table-column label="执行动作">
<template v-slot="scope"> <template v-slot="scope">
<el-switch v-model="scope.row.blank" :disabled="scope.row.type === 'execute'" /> <el-table v-if="scope.row.type === 'link'" :data="buttonList">
<el-table-column prop="blank" label="是否新开窗口" width="100">
<template v-slot="innerScope">
<el-switch v-model="innerScope.row.blank" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="linkUrl" label="打开链接"> <el-table-column prop="linkUrl" label="打开链接">
<template v-slot="scope"> <template v-slot="innerScope">
<el-input v-model="scope.row.linkUrl" :disabled="scope.row.type === 'execute'" /> <el-input v-model="innerScope.row.linkUrl" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="method" label="请求类型" width="100"> </el-table>
<template v-slot="scope"> <el-table v-if="scope.row.type === 'execute'" :data="buttonList">
<el-table-column prop="method" label="请求类型" width="120">
<template v-slot="innerScope">
<el-select <el-select
v-model="scope.row.method" v-model="innerScope.row.method"
placeholder="请选择请求类型" placeholder="请选择请求类型"
clearable clearable
:disabled="scope.row.type === 'link'"
> >
<el-option label="Get" value="get" /> <el-option label="Get" value="get" />
<el-option label="Post" value="post" /> <el-option label="Post" value="post" />
@@ -140,23 +152,46 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="requestUrl" label="请求地址"> <el-table-column prop="requestUrl" label="请求地址">
<template v-slot="scope"> <template v-slot="innerScope">
<el-input v-model="scope.row.requestUrl" :disabled="scope.row.type === 'link'" /> <el-input v-model="innerScope.row.requestUrl" />
</template>
</el-table-column>
</el-table>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
<el-form-item label="节点参数">
<el-table :data="parameterList">
<el-table-column prop="name" label="参数名称">
<template v-slot="scope">
<el-input v-model="scope.row.name" />
</template>
</el-table-column>
<el-table-column prop="code" label="参数编码">
<template v-slot="scope">
<el-input v-model="scope.row.code" />
</template>
</el-table-column>
<el-table-column prop="dataSource" label="参数可选项">
<template v-slot="scope" />
</el-table-column>
</el-table>
</el-form-item>
</el-form> </el-form>
</div> </CutePage>
</el-col>
</el-row>
</template> </template>
<script> <script>
import PipeTask from '@/views/components/devops/pipeline/PipeTask.vue' import PipeTask from '@/views/components/devops/pipeline/PipeTask.vue'
import CutePage from '@/views/components/dev/CutePage.vue'
export default { export default {
name: 'PipeTaskBuilder', name: 'PipeTaskBuilder',
components: { PipeTask }, components: { CutePage, PipeTask },
data() { data() {
return { return {
name: '环境准备', name: '环境准备',
@@ -168,7 +203,7 @@ export default {
{ {
condition: 'running', condition: 'running',
method: 'get', method: 'get',
requestUrl: 'api/devops/ci/doCheck?id=60012', requestUrl: `api/devops/ci/doCheck?id=#pipelineInstanceNodeId`,
text: '确认合并', text: '确认合并',
type: 'execute' type: 'execute'
} }
@@ -183,7 +218,18 @@ export default {
{ label: 'jdk21', value: 'jdk21' } { label: 'jdk21', value: 'jdk21' }
] ]
} }
},
parameterList: [
{
name: 'Jdk版本',
code: 'jdkVersion',
dataSource: [
{ label: 'jdk8', value: 'jdk8' },
{ label: 'jdk11', value: 'jdk11' },
{ label: 'jdk21', value: 'jdk21' }
]
} }
]
} }
}, },
computed: {}, computed: {},