mirror of
https://github.com/xhongc/music-tag-web.git
synced 2026-04-25 11:11:27 +08:00
feature:前端页面
This commit is contained in:
1
.idea/bamboo_engine_playground.iml
generated
1
.idea/bamboo_engine_playground.iml
generated
@@ -14,6 +14,7 @@
|
||||
</component>
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/lib" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/web/node_modules" />
|
||||
</content>
|
||||
<content url="file://$MODULE_DIR$/web/node_modules" />
|
||||
|
||||
3125
.idea/dataSources/34cc04bf-c12f-4df1-b32b-daa25e19a58f.xml
generated
3125
.idea/dataSources/34cc04bf-c12f-4df1-b32b-daa25e19a58f.xml
generated
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -1,7 +1,6 @@
|
||||
from datetime import datetime
|
||||
|
||||
from django.db import models
|
||||
from django.forms import BooleanField
|
||||
from django_mysql.models import JSONField
|
||||
|
||||
from applications.flow.constants import FAIL_OFFSET_UNIT_CHOICE, NodeTemplateType
|
||||
|
||||
@@ -106,14 +106,26 @@ class ProcessViewSetsSerializer(serializers.Serializer):
|
||||
class ListProcessViewSetsSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Process
|
||||
fields = "__all__"
|
||||
# fields = "__all__"
|
||||
exclude = ("dag",)
|
||||
|
||||
|
||||
class ListProcessRunViewSetsSerializer(serializers.ModelSerializer):
|
||||
state = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = ProcessRun
|
||||
fields = "__all__"
|
||||
|
||||
def get_state(self, obj):
|
||||
runtime = BambooDjangoRuntime()
|
||||
process_info = api.get_pipeline_states(runtime, root_id=obj.root_id)
|
||||
try:
|
||||
process_state = PIPELINE_STATE_TO_FLOW_STATE.get(process_info.data[obj.root_id]["state"])
|
||||
except Exception:
|
||||
process_state = "error"
|
||||
return process_state
|
||||
|
||||
|
||||
class RetrieveProcessViewSetsSerializer(serializers.ModelSerializer):
|
||||
pipeline_tree = serializers.SerializerMethodField()
|
||||
@@ -133,7 +145,13 @@ class RetrieveProcessViewSetsSerializer(serializers.ModelSerializer):
|
||||
"to": _to
|
||||
})
|
||||
node_list = Node.objects.filter(process_id=obj.id).values()
|
||||
node_content_id = [node["content"] for node in node_list if node.get("content", 0)]
|
||||
content_map = NodeTemplate.objects.filter(id__in=node_content_id).in_bulk()
|
||||
for node in node_list:
|
||||
node_template = content_map.get(node.get("content", 0), "")
|
||||
inputs_component = ""
|
||||
if node_template:
|
||||
inputs_component = json.dumps(node_template.inputs_component)
|
||||
nodes.append({"show": node["show"],
|
||||
"top": node["top"],
|
||||
"left": node["left"],
|
||||
@@ -142,7 +160,8 @@ class RetrieveProcessViewSetsSerializer(serializers.ModelSerializer):
|
||||
"name": node["name"],
|
||||
"content": node["content"],
|
||||
"node_data": {
|
||||
"inputs": node["inputs"],
|
||||
"inputs": json.dumps(node["inputs"]),
|
||||
"inputs_component": inputs_component,
|
||||
"run_mark": 0,
|
||||
"node_name": node["name"],
|
||||
"description": node["description"],
|
||||
@@ -180,9 +199,13 @@ class RetrieveProcessRunViewSetsSerializer(serializers.ModelSerializer):
|
||||
pipeline_state = state_map.get(node["uuid"], {}).get("state", "READY")
|
||||
flow_state = PIPELINE_STATE_TO_FLOW_STATE[pipeline_state]
|
||||
outputs = ""
|
||||
if node["node_type"] not in [0, 1] and flow_state == "success":
|
||||
print(flow_state)
|
||||
if node["node_type"] not in [0, 1] and flow_state not in ["wait"]:
|
||||
output_data = api.get_execution_data_outputs(runtime, node_id=node["uuid"])
|
||||
outputs = json.dumps(output_data.data["outputs"])
|
||||
outputs = output_data.data.get("outputs", "")
|
||||
# todo先简单判断node有fail,process就为fail
|
||||
if flow_state == "fail":
|
||||
process_state = "fail"
|
||||
nodes.append({"show": node["show"],
|
||||
"top": node["top"],
|
||||
"left": node["left"],
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
from datetime import datetime
|
||||
|
||||
from django.db.models import F
|
||||
|
||||
from bamboo_engine import api
|
||||
from bamboo_engine.builder import *
|
||||
from django.http import JsonResponse
|
||||
@@ -70,6 +74,7 @@ class ProcessViewSets(mixins.ListModelMixin,
|
||||
_node["uuid"] = process_run_uuid[pipeline_id]
|
||||
node_run_bulk.append(NodeRun(process_run=process_run, **_node))
|
||||
NodeRun.objects.bulk_create(node_run_bulk, batch_size=500)
|
||||
Process.objects.filter(id=process_id).update(total_run_count=F("total_run_count") + 1)
|
||||
return Response({})
|
||||
|
||||
|
||||
@@ -91,6 +96,7 @@ class NodeTemplateViewSet(mixins.ListModelMixin,
|
||||
mixins.CreateModelMixin,
|
||||
mixins.UpdateModelMixin,
|
||||
mixins.DestroyModelMixin,
|
||||
mixins.RetrieveModelMixin,
|
||||
GenericViewSet):
|
||||
queryset = NodeTemplate.objects.order_by("-id")
|
||||
serializer_class = NodeTemplateSerializer
|
||||
|
||||
Binary file not shown.
@@ -21,11 +21,15 @@ class HttpRequestService(Service):
|
||||
res = requests.request(inputs["method"], url=inputs["url"], headers=headers, timeout=inputs["timeout"],
|
||||
**req_data).content
|
||||
print("执行了", res)
|
||||
res = json.loads(res)
|
||||
try:
|
||||
res = json.loads(res)
|
||||
except Exception:
|
||||
res = res
|
||||
data.outputs.outputs = res
|
||||
time.sleep(5)
|
||||
return True
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
data.outputs.outputs = str(e)
|
||||
return False
|
||||
|
||||
def parse_headers(self, headers):
|
||||
|
||||
Binary file not shown.
@@ -117,33 +117,28 @@
|
||||
overflowTooltip: true,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'total_job_count',
|
||||
label: '作业数量',
|
||||
overflowTooltip: false,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'type',
|
||||
id: 'run_type',
|
||||
label: '调度方式',
|
||||
overflowTooltip: false,
|
||||
sortable: true
|
||||
}, {
|
||||
id: 'category',
|
||||
label: '跑批系统',
|
||||
label: '分类',
|
||||
overflowTooltip: false,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'creator',
|
||||
label: '创建人',
|
||||
id: 'create_by',
|
||||
label: '创建者',
|
||||
overflowTooltip: false,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'edit_time',
|
||||
label: '上次修改时间',
|
||||
id: 'create_time',
|
||||
label: '创建时间',
|
||||
overflowTooltip: true,
|
||||
sortable: true
|
||||
}, {
|
||||
id: 'last_run_at',
|
||||
label: '上次执行时间',
|
||||
id: 'update_time',
|
||||
label: '更新时间',
|
||||
overflowTooltip: true,
|
||||
sortable: true
|
||||
}, {
|
||||
@@ -156,11 +151,6 @@
|
||||
label: '作业流描述',
|
||||
overflowTooltip: true,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'cross_day_dependence',
|
||||
label: '跨日依赖',
|
||||
overflowTooltip: true,
|
||||
sortable: false
|
||||
}]
|
||||
return {
|
||||
maxTableHeight: '',
|
||||
|
||||
@@ -1,165 +1,72 @@
|
||||
<template>
|
||||
<div id="jobDialog">
|
||||
<div class="form">
|
||||
<div class="form-item">
|
||||
<span>作业名</span>
|
||||
<p>{{form.name}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>所属作业流</span>
|
||||
<p :title="form.process">{{checkFormValue(form.process)}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>Agent</span>
|
||||
<p>{{form.station}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>IP</span>
|
||||
<p>{{form.ip}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>操作系统</span>
|
||||
<p>{{form.os}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>作业描述</span>
|
||||
<p :title="form.description">{{checkFormValue(form.description)}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>执行账号</span>
|
||||
<p>{{form.account}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>脚本类型</span>
|
||||
<p>{{scriptTypeList.find(item => item.key === form.script_type).label}}</p>
|
||||
</div>
|
||||
<template v-if="form.script_type === 6">
|
||||
<div class="form-item">
|
||||
<span>请求方式</span>
|
||||
<p>{{checkFormValue(form.request_type)}}</p>
|
||||
<bk-form ref="form" :label-width="144" :model="form">
|
||||
<bk-form-item label="节点名称:" :required="true" :error-display-type="'normal'" :property="'node_name'">
|
||||
<bk-input v-model="form.name" type="text" style="width: 350px;margin-right: 9px;" :disabled="disabled"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="运行标志:" :required="true" :error-display-type="'normal'" :property="'run_mark'">
|
||||
<bk-radio-group v-model="form.run_mark">
|
||||
<bk-radio :value="item.value" v-for="(item, index) in reviewList" :key="index" style="margin-right: 24px;" :disabled="disabled">
|
||||
{{ item.label }}
|
||||
</bk-radio>
|
||||
</bk-radio-group>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="描述:">
|
||||
<bk-input v-model="form.description" type="textarea" style="width: 350px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="失败重试次数:" :required="true" :error-display-type="'normal'" :property="'fail_retry_count'">
|
||||
<bk-input v-model="form.fail_retry_count" type="number" style="width: 350px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="失败重试间隔:">
|
||||
<bk-compose-form-item>
|
||||
<bk-input v-model="form.fail_offset" type="number" style="width: 139px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
<bk-select :clearable="true" style="background-color: #fff;width: 138px;margin-right: 14px;" v-model="form.fail_offset_unit" placeholder="请选择" :disabled="disabled">
|
||||
<bk-option v-for="(item, index) in timeTypeList" :key="index" :id="item.value" :name="item.label">
|
||||
</bk-option>
|
||||
</bk-select>
|
||||
<span>产生重试</span>
|
||||
</bk-compose-form-item>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="忽略失败:">
|
||||
<bk-switcher v-model="form.is_skip_fail" :disabled="disabled"></bk-switcher>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="超时告警:">
|
||||
<bk-switcher v-model="form.is_timeout_alarm" :disabled="disabled"></bk-switcher>
|
||||
</bk-form-item>
|
||||
<bk-divider style="width: 540px;position: relative;right: 20px;border-color: #dcdee5;"></bk-divider>
|
||||
<p class="title">输入参数</p>
|
||||
<bk-form-item v-for="(item,index) in form.inputs_component" :label="item.label" :key="index">
|
||||
<div v-if="item.type === 'textarea'">
|
||||
<bk-input v-model="form.inputs[item.key]" type="textarea" style="width: 350px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>URL</span>
|
||||
<p>{{checkFormValue(form.request_url)}}</p>
|
||||
<div v-else-if="item.type === 'select'">
|
||||
<bk-select :clearable="true" style="background-color: #fff;width: 130px;margin-right: 14px;" v-model="form.inputs[item.key]" placeholder="请选择" :disabled="disabled">
|
||||
<bk-option v-for="(item2, index2) in item.choices || []" :key="index2" :id="item2.value" :name="item2.label">
|
||||
</bk-option>
|
||||
</bk-select>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>请求头</span>
|
||||
<p>{{checkFormValue(form.headers)}}</p>
|
||||
<div v-else-if="item.type === 'dict_map'">
|
||||
<div v-for="(item3, index3) in form.inputs[item.key]" class="pre-commands" :key="index3" style="margin-bottom: 12px;">
|
||||
<bk-compose-form-item>
|
||||
<bk-input v-model="item3.key" type="text" style="width: 130px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
<bk-input v-model="item3.value" type="text" style="width: 130px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
</bk-compose-form-item>
|
||||
<i class="iconfont icon-changyongtubiao-chahao btn" style="margin-left: 8px;" v-if="!disabled && form.inputs[item.key].length > 1"></i>
|
||||
<i class="iconfont icon-changyongtubiao-jiahao btn" v-if="!disabled"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>请求体</span>
|
||||
<p :title="form.params">{{JSON.parse(JSON.stringify(checkFormValue(form.params)))}}</p>
|
||||
<div v-else-if="item.type === 'number'">
|
||||
<bk-input v-model="form.inputs[item.key]" type="number" style="width: 350px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
</div>
|
||||
<div v-else-if="item.type === 'text'">
|
||||
<bk-input v-model="form.inputs[item.key]" type="text" style="width: 350px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div style="color: red">ERROR:不支持的类型</div>
|
||||
</div>
|
||||
</template>
|
||||
<div class="form-item" v-if="form.script_type !== 6">
|
||||
<span>脚本内容</span>
|
||||
<p :title="form.script_content">{{form.script_content}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>超时时间</span>
|
||||
<p>{{checkFormValue(form.script_timeout)}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>退出码</span>
|
||||
<p>{{checkFormValue(form.exit_code)}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>上一次执行时间</span>
|
||||
<p>{{checkFormValue(form.last_run_at)}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>执行次数</span>
|
||||
<p>{{checkFormValue(form.total_run_count)}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>创建人</span>
|
||||
<p>{{form.creator}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>创建时间</span>
|
||||
<p>{{form.create_time}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>修改人</span>
|
||||
<p>{{checkFormValue(form.editor)}}</p>
|
||||
</div>
|
||||
<div class="form-item">
|
||||
<span>上一次修改时间</span>
|
||||
<p>{{checkFormValue(form.edit_time)}}</p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <bk-form ref="form">
|
||||
<bk-form-item label="作业名:">
|
||||
<bk-input v-model="form.name" :disabled="true"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="所属作业流:">
|
||||
<bk-input v-model="form.process" :disabled="true" :title="form.process"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="Agent:">
|
||||
<bk-input v-model="form.station" :disabled="true"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="IP:">
|
||||
<bk-input v-model="form.ip" :disabled="true"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="系统:">
|
||||
<bk-input v-model="form.os" :disabled="true"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="作业描述:">
|
||||
<bk-input v-model="form.description" :disabled="true" :title="form.description"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="执行账号:">
|
||||
<bk-input v-model="form.account" :disabled="true"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="脚本类型:">
|
||||
<bk-select v-model="form.script_type"
|
||||
placeholder="请选择" :disabled="true">
|
||||
<bk-option v-for="(item, index) in scriptTypeList" :key="index" :id="item.key"
|
||||
:name="item.label">
|
||||
</bk-option>
|
||||
</bk-select>
|
||||
</bk-form-item>
|
||||
<template v-if="form.script_type === 6">
|
||||
<bk-form-item label="请求方式">
|
||||
<bk-input :disabled="true" v-model="form.request_type"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="URL">
|
||||
<bk-input :disabled="true" v-model="form.request_url"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="请求头">
|
||||
<bk-input :disabled="true" v-model="form.headers" :title="form.headers"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="请求体">
|
||||
<bk-input :disabled="true" v-model="form.params" :type="'textarea'" :rows="4" :title="form.params"></bk-input>
|
||||
</bk-form-item>
|
||||
</template>
|
||||
<bk-form-item label="脚本内容:" v-if="form.script_type !== 6">
|
||||
<bk-input v-model="form.script_content" :disabled="true" :title="form.script_content"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="超时时间:">
|
||||
<bk-input v-model="form.script_timeout" :disabled="true"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="退出码:">
|
||||
<bk-input v-model="form.exit_code" :disabled="true"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="上一次执行时间:">
|
||||
<bk-input v-model="form.last_run_at" :disabled="true"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="执行次数:">
|
||||
<bk-input v-model="form.total_run_count" :disabled="true"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="创建人:">
|
||||
<bk-input v-model="form.creator" :disabled="true"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="创建时间:">
|
||||
<bk-input v-model="form.create_time" :disabled="true"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="修改人:">
|
||||
<bk-input v-model="form.editor" :disabled="true"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="上一次修改时间:">
|
||||
<bk-input v-model="form.edit_time" :disabled="true"></bk-input>
|
||||
</bk-form-item>
|
||||
</bk-form> -->
|
||||
<bk-divider style="width: 540px;position: relative;right: 20px;border-color: #dcdee5;"></bk-divider>
|
||||
</bk-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -176,6 +83,28 @@
|
||||
return {
|
||||
formLoading: false,
|
||||
form: {},
|
||||
disabled: true,
|
||||
timeTypeList: [{ // 执行时长告警时间类型下拉列表
|
||||
value: 'hours',
|
||||
label: '时'
|
||||
},
|
||||
{
|
||||
value: 'minutes',
|
||||
label: '分'
|
||||
|
||||
},
|
||||
{
|
||||
value: 'seconds',
|
||||
label: '秒'
|
||||
}
|
||||
],
|
||||
reviewList: [{ // 执行前人工复核单选列表
|
||||
label: '正常运行',
|
||||
value: 0
|
||||
}, {
|
||||
label: '禁止运行',
|
||||
value: 1
|
||||
}],
|
||||
scriptTypeList: [{
|
||||
key: 1,
|
||||
label: 'Shell(Linux)',
|
||||
|
||||
@@ -124,55 +124,10 @@
|
||||
overflowTooltip: true,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'process',
|
||||
label: '所属作业流',
|
||||
id: 'template_type',
|
||||
label: '模板类型',
|
||||
overflowTooltip: true,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'station',
|
||||
label: 'Agent',
|
||||
overflowTooltip: false,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'ip',
|
||||
label: 'IP',
|
||||
overflowTooltip: false,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'category',
|
||||
label: '跑批系统',
|
||||
overflowTooltip: false,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'account',
|
||||
label: '执行账号',
|
||||
overflowTooltip: false,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'script_content',
|
||||
label: '脚本',
|
||||
overflowTooltip: true,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'creator',
|
||||
label: '创建人',
|
||||
overflowTooltip: false,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'edit_time',
|
||||
label: '上一次修改时间',
|
||||
overflowTooltip: true,
|
||||
sortable: true
|
||||
}, {
|
||||
id: 'total_run_count',
|
||||
label: '执行次数',
|
||||
overflowTooltip: false,
|
||||
sortable: true
|
||||
}, {
|
||||
id: 'last_run_at',
|
||||
label: '上一次执行时间',
|
||||
overflowTooltip: true,
|
||||
sortable: true
|
||||
}, {
|
||||
id: 'description',
|
||||
label: '作业描述',
|
||||
|
||||
@@ -1,128 +1,131 @@
|
||||
<template>
|
||||
<div id="singleJob" v-bkloading="{ isLoading: formLoading, zIndex: 10 }">
|
||||
<div class="content">
|
||||
<bk-container :margin="0">
|
||||
<bk-form ref="form" :label-width="120" :rules="rules" :model="form">
|
||||
<bk-form-item label="作业名称:" :error-display-type="'normal'" :required="true" :property="'name'">
|
||||
<bk-input placeholder="作业名称" v-model="form.name" clearable></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="作业描述:" :error-display-type="'normal'" :required="true"
|
||||
:property="'description'">
|
||||
<bk-input placeholder="作业描述" v-model="form.description" clearable></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="选择跑批系统:" :error-display-type="'normal'" :required="true"
|
||||
:property="'category'">
|
||||
<bk-select :clearable="false" style="background-color: #fff;" v-model="form.category"
|
||||
placeholder="请选择" @change="handleRunIdChange">
|
||||
<bk-option v-for="(item, index) in runSysList" :key="index" :id="item.id" :name="item.name">
|
||||
</bk-option>
|
||||
</bk-select>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="选择Agent:" :error-display-type="'normal'" :required="true"
|
||||
:property="'station'">
|
||||
<bk-select :clearable="false" style="background-color: #fff;" v-model="form.station"
|
||||
placeholder="请选择" @change="handleAgentIdChange">
|
||||
<bk-option v-for="(item, index) in agentList" :key="index" :id="item.id" :name="item.name"
|
||||
v-if="agnetListShow">
|
||||
</bk-option>
|
||||
</bk-select>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="系统类型:">
|
||||
<span v-show="form.os">{{form.os}}</span>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="执行账号:" :error-display-type="'normal'" :required="true"
|
||||
:property="'data.account'">
|
||||
<bk-select :clearable="false" style="background-color: #fff;" v-model="form.data.account"
|
||||
placeholder="请选择">
|
||||
<bk-option v-for="(item, index) in accountList" :key="index" :id="item.account"
|
||||
:name="item.account" v-if="accountListShow">
|
||||
</bk-option>
|
||||
</bk-select>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="脚本类型:" :error-display-type="'normal'" :required="true"
|
||||
:property="'data.script_type'">
|
||||
<bk-select :clearable="false" style="background-color: #fff;" v-model="form.data.script_type"
|
||||
placeholder="请选择" @change="handleScriptTypeChange">
|
||||
<bk-option v-for="(item, index) in scriptTypeList" :key="index" :id="item.key"
|
||||
:name="item.label">
|
||||
</bk-option>
|
||||
</bk-select>
|
||||
</bk-form-item>
|
||||
<!-- HTTP作业 -->
|
||||
<template v-if="form.data.script_type === 6">
|
||||
<bk-form-item label="请求方式:" :error-display-type="'normal'" :required="true"
|
||||
:property="'data.request_type'">
|
||||
<bk-select :clearable="false" style="background-color: #fff;" placeholder="请选择"
|
||||
v-model="form.data.request_type">
|
||||
<bk-option v-for="(item, index) in httpReqTypeList" :key="index" :id="item.key"
|
||||
:name="item.label">
|
||||
</bk-option>
|
||||
</bk-select>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="URL:" :error-display-type="'normal'" :required="true"
|
||||
:property="'data.request_url'">
|
||||
<bk-input placeholder="URL" v-model="form.data.request_url"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="请求头:" :property="'data.headers'" :error-display-type="'normal'">
|
||||
<bk-input :placeholder="headerHolder" v-model="form.data.headers"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="请求体:" :property="'data.params'" :error-display-type="'normal'">
|
||||
<bk-input :placeholder="paramsHolder" v-model="form.data.params" :type="'textarea'" :rows="4">
|
||||
</bk-input>
|
||||
</bk-form-item>
|
||||
</template>
|
||||
<!-- java作业 -->
|
||||
<template v-if="form.data.script_type === 7">
|
||||
<bk-form-item label="jar包路径:" :error-display-type="'normal'" :required="true">
|
||||
<bk-input placeholder="jar包路径"></bk-input>
|
||||
</bk-form-item>
|
||||
</template>
|
||||
<!-- sql作业 -->
|
||||
<template v-if="form.data.script_type === 8">
|
||||
<bk-form-item label="数据库类型:" :error-display-type="'normal'" :required="true">
|
||||
<bk-select :clearable="false" style="background-color: #fff;" placeholder="请选择">
|
||||
<bk-option v-for="(item, index) in sqlTypeList" :key="index" :id="item.key"
|
||||
:name="item.label">
|
||||
</bk-option>
|
||||
</bk-select>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="数据库:" :error-display-type="'normal'" :required="true">
|
||||
<bk-input placeholder="数据库"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="主机:">
|
||||
<bk-input placeholder="主机" style="width: 360px;"></bk-input>
|
||||
<span style="margin: 0 12px 0 16px;">端口号:</span>
|
||||
<bk-input placeholder="端口号" style="width: 122px;"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-row style="margin-top: 20px;margin-bottom: 20px;">
|
||||
<bk-col :span="12">
|
||||
<bk-form-item label="数据库用户:" :error-display-type="'normal'" :required="true">
|
||||
<bk-input placeholder="数据库用户" style="width: 290px;"></bk-input>
|
||||
</bk-form-item>
|
||||
</bk-col>
|
||||
<bk-col :span="11" style="margin-left: 16px;">
|
||||
<bk-form-item label="密码:" :error-display-type="'normal'" :required="true">
|
||||
<bk-input placeholder="密码" :type="'password'" style="width: 194px;"></bk-input>
|
||||
</bk-form-item>
|
||||
</bk-col>
|
||||
</bk-row>
|
||||
</template>
|
||||
<bk-form-item label="脚本内容:" :error-display-type="'normal'" :required="true" :property="'data.script_content'" v-show="!(form.data.script_type === 6) && !(form.data.script_type === 7)">
|
||||
<bk-input :type="'textarea'" style="width: 720px;" :rows="10" ext-cls="custom-textarea" v-model="form.data.script_content">
|
||||
</bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="作业退出码:">
|
||||
<bk-input placeholder="作业退出码" v-model="form.exit_code"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="超时时间(s):" :error-display-type="'normal'" :required="true"
|
||||
:property="'data.script_timeout'">
|
||||
<bk-input placeholder="超时时间" type="number" v-model="form.data.script_timeout"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item style="font-size: 0px;" v-if="!overScreenFlag">
|
||||
<bk-button theme="primary" style="margin-right: 8px;" @click="handleConfim">确定</bk-button>
|
||||
<bk-button @click="handleCancel">取消</bk-button>
|
||||
</bk-form-item>
|
||||
</bk-form>
|
||||
<div class="wrapper">
|
||||
<bk-container :col="12" :gutter="4">
|
||||
<bk-row>
|
||||
<bk-col :span="7"><div class="content">自定义节点</div></bk-col>
|
||||
<bk-col :span="5"><div class="content">实时预览</div></bk-col>
|
||||
</bk-row>
|
||||
<bk-row>
|
||||
<bk-col :span="7"><div class="content">
|
||||
<bk-form ref="form" :label-width="144" :model="form">
|
||||
<bk-form-item label="节点名称:" :required="true" :error-display-type="'normal'" :property="'node_name'">
|
||||
<bk-input v-model="form.name" type="text" style="width: 350px;margin-right: 9px;" :disabled="disabled"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="运行标志:" :required="true" :error-display-type="'normal'" :property="'run_mark'">
|
||||
<bk-radio-group v-model="form.run_mark">
|
||||
<bk-radio :value="item.value" v-for="(item, index) in reviewList" :key="index" style="margin-right: 24px;" :disabled="disabled">
|
||||
{{ item.label }}
|
||||
</bk-radio>
|
||||
</bk-radio-group>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="描述:">
|
||||
<bk-input v-model="form.description" type="textarea" style="width: 350px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="失败重试次数:" :required="true" :error-display-type="'normal'" :property="'fail_retry_count'">
|
||||
<bk-input v-model="form.fail_retry_count" type="number" style="width: 350px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="失败重试间隔:">
|
||||
<bk-compose-form-item>
|
||||
<bk-input v-model="form.fail_offset" type="number" style="width: 139px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
<bk-select :clearable="true" style="background-color: #fff;width: 138px;margin-right: 14px;" v-model="form.fail_offset_unit" placeholder="请选择" :disabled="disabled">
|
||||
<bk-option v-for="(item, index) in timeTypeList" :key="index" :id="item.value" :name="item.label">
|
||||
</bk-option>
|
||||
</bk-select>
|
||||
<span>产生重试</span>
|
||||
</bk-compose-form-item>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="忽略失败:">
|
||||
<bk-switcher v-model="form.is_skip_fail" :disabled="disabled"></bk-switcher>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="超时告警:">
|
||||
<bk-switcher v-model="form.is_timeout_alarm" :disabled="disabled"></bk-switcher>
|
||||
</bk-form-item>
|
||||
<bk-divider
|
||||
style="width: 540px;position: relative;right: 20px;border-color: #dcdee5;"></bk-divider>
|
||||
<p class="title">输入参数</p>
|
||||
<bk-form-item label="输入参数组件">
|
||||
<editor :height="'200px'" ref="editor1" :codes="JSON.stringify(form.inputs_component)" :read-only="false" :language="'shell'"></editor>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="输入参数组件默认值">
|
||||
<editor :height="'200px'" ref="editor2" :codes="JSON.stringify(form.inputs)" :read-only="false" :language="'shell'"></editor>
|
||||
</bk-form-item>
|
||||
<bk-divider
|
||||
style="width: 540px;position: relative;right: 20px;border-color: #dcdee5;"></bk-divider>
|
||||
</bk-form>
|
||||
</div></bk-col>
|
||||
<bk-col :span="5"><div class="content">
|
||||
<bk-form ref="form" :label-width="144" :model="form" style="border: 1px solid;">
|
||||
<bk-form-item label="节点名称:" :required="true" :error-display-type="'normal'" :property="'node_name'">
|
||||
<bk-input v-model="form.name" type="text" style="width: 350px;margin-right: 9px;" :disabled="disabled"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="运行标志:" :required="true" :error-display-type="'normal'" :property="'run_mark'">
|
||||
<bk-radio-group v-model="form.run_mark">
|
||||
<bk-radio :value="item.value" v-for="(item, index) in reviewList" :key="index" style="margin-right: 24px;" :disabled="disabled">
|
||||
{{ item.label }}
|
||||
</bk-radio>
|
||||
</bk-radio-group>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="描述:">
|
||||
<bk-input v-model="form.description" type="textarea" style="width: 350px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="失败重试次数:" :required="true" :error-display-type="'normal'" :property="'fail_retry_count'">
|
||||
<bk-input v-model="form.fail_retry_count" type="number" style="width: 350px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="失败重试间隔:">
|
||||
<bk-compose-form-item>
|
||||
<bk-input v-model="form.fail_offset" type="number" style="width: 139px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
<bk-select :clearable="true" style="background-color: #fff;width: 138px;margin-right: 14px;" v-model="form.fail_offset_unit" placeholder="请选择" :disabled="disabled">
|
||||
<bk-option v-for="(item, index) in timeTypeList" :key="index" :id="item.value" :name="item.label">
|
||||
</bk-option>
|
||||
</bk-select>
|
||||
<span>产生重试</span>
|
||||
</bk-compose-form-item>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="忽略失败:">
|
||||
<bk-switcher v-model="form.is_skip_fail" :disabled="disabled"></bk-switcher>
|
||||
</bk-form-item>
|
||||
<bk-form-item label="超时告警:">
|
||||
<bk-switcher v-model="form.is_timeout_alarm" :disabled="disabled"></bk-switcher>
|
||||
</bk-form-item>
|
||||
<bk-divider
|
||||
style="width: 540px;position: relative;right: 20px;border-color: #dcdee5;"></bk-divider>
|
||||
<p class="title">输入参数</p>
|
||||
<bk-form-item v-for="(item,index) in form.inputs_component" :label="item.label" :key="index">
|
||||
<div v-if="item.type === 'textarea'">
|
||||
<bk-input v-model="form.inputs[item.key]" type="textarea" style="width: 350px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
</div>
|
||||
<div v-else-if="item.type === 'select'">
|
||||
<bk-select :clearable="true" style="background-color: #fff;width: 130px;margin-right: 14px;" v-model="form.inputs[item.key]" placeholder="请选择" :disabled="disabled">
|
||||
<bk-option v-for="(item2, index2) in item.choices || []" :key="index2" :id="item2.value" :name="item2.label">
|
||||
</bk-option>
|
||||
</bk-select>
|
||||
</div>
|
||||
<div v-else-if="item.type === 'dict_map'">
|
||||
<div v-for="(item3, index3) in form.inputs[item.key]" class="pre-commands" :key="index3" style="margin-bottom: 12px;">
|
||||
<bk-compose-form-item>
|
||||
<bk-input v-model="item3.key" type="text" style="width: 130px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
<bk-input v-model="item3.value" type="text" style="width: 130px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
</bk-compose-form-item>
|
||||
<i class="iconfont icon-changyongtubiao-chahao btn" style="margin-left: 8px;" v-if="!disabled && form.inputs[item.key].length > 1"></i>
|
||||
<i class="iconfont icon-changyongtubiao-jiahao btn" v-if="!disabled"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="item.type === 'number'">
|
||||
<bk-input v-model="form.inputs[item.key]" type="number" style="width: 350px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
</div>
|
||||
<div v-else-if="item.type === 'text'">
|
||||
<bk-input v-model="form.inputs[item.key]" type="text" style="width: 350px;margin-right: 9px;" :disabled="disabled" :min="0"></bk-input>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div style="color: red">ERROR:不支持的类型</div>
|
||||
</div>
|
||||
</bk-form-item>
|
||||
<bk-divider
|
||||
style="width: 540px;position: relative;right: 20px;border-color: #dcdee5;"></bk-divider>
|
||||
</bk-form>
|
||||
</div></bk-col>
|
||||
</bk-row>
|
||||
</bk-container>
|
||||
</div>
|
||||
<template v-if="overScreenFlag">
|
||||
@@ -140,8 +143,10 @@
|
||||
deepClone, isJson
|
||||
} from '../../common/util.js'
|
||||
import { validateURL } from '../../common/validate.js'
|
||||
import editor from '@/components/monacoEditor'
|
||||
export default {
|
||||
components: {
|
||||
editor
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -153,13 +158,36 @@
|
||||
agnetListShow: true,
|
||||
accountListShow: true,
|
||||
formLoading: false,
|
||||
disabled: false,
|
||||
timeTypeList: [{ // 执行时长告警时间类型下拉列表
|
||||
value: 'hours',
|
||||
label: '时'
|
||||
},
|
||||
{
|
||||
value: 'minutes',
|
||||
label: '分'
|
||||
|
||||
},
|
||||
{
|
||||
value: 'seconds',
|
||||
label: '秒'
|
||||
}
|
||||
],
|
||||
reviewList: [{ // 执行前人工复核单选列表
|
||||
label: '正常运行',
|
||||
value: 0
|
||||
}, {
|
||||
label: '禁止运行',
|
||||
value: 1
|
||||
}],
|
||||
scriptMap: {
|
||||
1: 'shell',
|
||||
2: 'bat',
|
||||
3: 'perl',
|
||||
4: 'python',
|
||||
5: 'powershell',
|
||||
8: 'sql'
|
||||
8: 'sql',
|
||||
9: 'json'
|
||||
},
|
||||
sqlTypeList: [{
|
||||
key: 'MySQL',
|
||||
@@ -484,12 +512,6 @@
|
||||
},
|
||||
// 非http类型的作业,以下属性不传
|
||||
deleteProp(params) {
|
||||
if (this.form.data.script_type !== 6) {
|
||||
delete params.data.request_type
|
||||
delete params.data.request_url
|
||||
delete params.data.headers
|
||||
delete params.data.params
|
||||
}
|
||||
},
|
||||
// 处理克隆作业
|
||||
handleCloneJob() {
|
||||
@@ -510,12 +532,12 @@
|
||||
},
|
||||
// 处理确定
|
||||
handleConfim() {
|
||||
if (this.form.data.script_type !== 6) {
|
||||
// 只有非http类型的节点才获取脚本内容
|
||||
this.form.data.script_content = this.$refs.editor.monacoEditor.getValue()
|
||||
} else {
|
||||
this.form.data.script_content = '' // 加个else清空脚本内容是为了防止原本非http类型的节点切换为http保存之后,原来的脚本内容还在。
|
||||
}
|
||||
// if (this.form.data.script_type !== 6) {
|
||||
// // 只有非http类型的节点才获取脚本内容
|
||||
// this.form.data.script_content = this.$refs.editor.monacoEditor.getValue()
|
||||
// } else {
|
||||
// this.form.data.script_content = '' // 加个else清空脚本内容是为了防止原本非http类型的节点切换为http保存之后,原来的脚本内容还在。
|
||||
// }
|
||||
this.$refs.form.validate().then(validator => {
|
||||
if (this.$route.query.type === 'add') {
|
||||
this.handleAddJob()
|
||||
@@ -584,8 +606,9 @@
|
||||
this.runSysList = []
|
||||
},
|
||||
// 设置默认编辑器
|
||||
setDefaultEditor(e, str) {
|
||||
this.$refs.editor.changeModel(this.scriptMap[e], str)
|
||||
setDefaultEditor(e, str1, str2) {
|
||||
this.$refs.editor1.changeModel(this.scriptMap[e], str1)
|
||||
this.$refs.editor2.changeModel(this.scriptMap[e], str2)
|
||||
},
|
||||
// 当前为修改,初始化作业
|
||||
initJobData() {
|
||||
@@ -595,13 +618,13 @@
|
||||
if (res.result) {
|
||||
this.form = res.data
|
||||
// 非http类型的节点是没有http节点属性的,上面的赋值会将其覆盖。这里将其重新获取。
|
||||
if (this.form.data.script_type !== 6) {
|
||||
this.$set(this.form.data, 'request_type', '')
|
||||
this.$set(this.form.data, 'request_url', '')
|
||||
this.$set(this.form.data, 'headers', '')
|
||||
this.$set(this.form.data, 'params', '')
|
||||
}
|
||||
this.setDefaultEditor(this.form.data.script_type, this.form.data.script_content)
|
||||
// if (this.form.data.script_type !== 6) {
|
||||
// this.$set(this.form.data, 'request_type', '')
|
||||
// this.$set(this.form.data, 'request_url', '')
|
||||
// this.$set(this.form.data, 'headers', '')
|
||||
// this.$set(this.form.data, 'params', '')
|
||||
// }
|
||||
this.setDefaultEditor(1, JSON.stringify(this.form.inputs_component), JSON.stringify(this.form.inputs))
|
||||
} else {
|
||||
this.$cwMessage(res.message, 'error')
|
||||
}
|
||||
@@ -656,4 +679,33 @@
|
||||
z-index: 999;
|
||||
}
|
||||
}
|
||||
.demo-grid {
|
||||
.wrapper {
|
||||
overflow: hidden;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 2px;
|
||||
padding: 20px 0;
|
||||
}
|
||||
.content {
|
||||
background-color: #e1ecff;
|
||||
height: 100%;
|
||||
line-height: 60px;
|
||||
border-radius: 2px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.bk-grid-row {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.bk-grid-row + .bk-grid-row {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.flex {
|
||||
.bk-grid-row + .bk-grid-row {
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -155,9 +155,9 @@
|
||||
overflowTooltip: true,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'category_name',
|
||||
label: '跑批系统',
|
||||
overflowTooltip: true,
|
||||
id: 'run_type',
|
||||
label: '调度方式',
|
||||
overflowTooltip: false,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'state',
|
||||
@@ -165,15 +165,10 @@
|
||||
overflowTooltip: false,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'total_job_count',
|
||||
label: '作业总数',
|
||||
id: 'create_time',
|
||||
label: '创建时间',
|
||||
overflowTooltip: false,
|
||||
sortable: true
|
||||
}, {
|
||||
id: 'type',
|
||||
label: '调度方式',
|
||||
overflowTooltip: false,
|
||||
sortable: false
|
||||
}, {
|
||||
id: 'total_not_execute_job_count',
|
||||
label: '未执行作业数',
|
||||
@@ -205,7 +200,7 @@
|
||||
setting: {
|
||||
size: 'small', // 表格大小
|
||||
fields: fields, // 表格所有列
|
||||
selectedFields: fields.slice(0, 1) // 表格当前显示列
|
||||
selectedFields: fields.slice(0, 4) // 表格当前显示列
|
||||
},
|
||||
opreateFlag: false,
|
||||
midSearchForm: {},
|
||||
|
||||
@@ -13,14 +13,11 @@
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
panels: [{
|
||||
name: 'jobflowview',
|
||||
label: '作业流视图'
|
||||
},
|
||||
{
|
||||
name: 'jobview',
|
||||
label: '作业视图'
|
||||
}
|
||||
panels: [
|
||||
{
|
||||
name: 'jobflowview',
|
||||
label: '作业流视图'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -46,36 +46,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<p class="title">前置命令检测</p>
|
||||
<!-- <bk-input :type="'textarea'" :rows="8" ext-cls="custom-textarea" :disabled="true" v-model="form.pre_commands"></bk-input> -->
|
||||
<editor :height="'200px'" ref="editor" :codes="form.pre_commands" :read-only="true" :language="'shell'">
|
||||
</editor>
|
||||
</div>
|
||||
<div class="box">
|
||||
<p class="title">先行作业/作业流</p>
|
||||
<bk-table :data="form.upstream_nodes" ext-cls="customTable">
|
||||
<bk-table-column prop="type" label="类型"></bk-table-column>
|
||||
<bk-table-column prop="name" label="名称"></bk-table-column>
|
||||
<bk-table-column prop="station" label="Agent"></bk-table-column>
|
||||
<bk-table-column prop="state" label="状态"></bk-table-column>
|
||||
<bk-table-column prop="eta" label="计划开始时间"></bk-table-column>
|
||||
<bk-table-column prop="start_time" label="实际开始时间"></bk-table-column>
|
||||
<bk-table-column prop="end_time" label="实际完成时间"></bk-table-column>
|
||||
</bk-table>
|
||||
</div>
|
||||
<div class="box">
|
||||
<p class="title">后续作业/作业流</p>
|
||||
<bk-table :data="form.downstream_nodes" ext-cls="customTable">
|
||||
<bk-table-column prop="type" label="类型"></bk-table-column>
|
||||
<bk-table-column prop="name" label="名称"></bk-table-column>
|
||||
<bk-table-column prop="station" label="Agent"></bk-table-column>
|
||||
<bk-table-column prop="state" label="状态"></bk-table-column>
|
||||
<bk-table-column prop="eta" label="计划开始时间"></bk-table-column>
|
||||
<bk-table-column prop="start_time" label="实际开始时间"></bk-table-column>
|
||||
<bk-table-column prop="end_time" label="实际完成时间"></bk-table-column>
|
||||
</bk-table>
|
||||
</div>
|
||||
<div class="node-drawer">
|
||||
<bk-sideslider :is-show.sync="nodeDrawer.show" :quick-close="true" :title="nodeDrawer.title"
|
||||
:width="nodeDrawer.width" ext-cls="custom-sidelider">
|
||||
@@ -94,12 +64,10 @@
|
||||
import G6 from '@antv/g6'
|
||||
import statusList from './job_flow_view_detail/statusList.vue'
|
||||
import nodeInfo from './job_flow_view_detail/nodeInfo.vue'
|
||||
import editor from '@/components/monacoEditor'
|
||||
export default {
|
||||
components: {
|
||||
statusList,
|
||||
nodeInfo,
|
||||
editor
|
||||
nodeInfo
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -596,7 +564,7 @@
|
||||
// this.nodeDrawer.show = false
|
||||
this.renderCanvas(true, first)
|
||||
const processState = res.data.pipeline_tree.process_state
|
||||
if (processState === 'success') {
|
||||
if (processState === 'success' || processState === 'fail') {
|
||||
clearInterval(this.timer)
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user