Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
B
bigDataSystem
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张伯涛
bigDataSystem
Commits
7306134b
Commit
7306134b
authored
Nov 26, 2024
by
liwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
任务流运维页面
parent
a3617092
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
1164 additions
and
1 deletion
+1164
-1
workDetail.vue
...ews/realTimeSync/taskOperationsMaintenance/workDetail.vue
+1
-1
LookLogModal.vue
...views/taskScheduling/taskFlowMaintenance/LookLogModal.vue
+29
-0
index.vue
src/views/taskScheduling/taskFlowMaintenance/index.vue
+711
-0
taskFlowMaintenance.data.ts
...cheduling/taskFlowMaintenance/taskFlowMaintenance.data.ts
+214
-0
taskFlowMaintenanceData.ts
...Scheduling/taskFlowMaintenance/taskFlowMaintenanceData.ts
+209
-0
No files found.
src/views/realTimeSync/taskOperationsMaintenance/workDetail.vue
View file @
7306134b
...
...
@@ -26,7 +26,7 @@
<RangePicker
v-model:value=
"value1"
/>
</div>
<div
style=
"margin-right: 10px"
>
<RadioGroup
v-model:value=
"selectRadio"
>
<RadioGroup
v-model:value=
"selectRadio"
button-style=
"solid"
>
<RadioButton
value=
"1"
>
展示所有批次
</RadioButton>
<RadioButton
value=
"2"
>
过滤有差异批次
</RadioButton>
</RadioGroup>
...
...
src/views/taskScheduling/taskFlowMaintenance/LookLogModal.vue
0 → 100644
View file @
7306134b
<
template
>
<BasicModal
width=
"40%"
v-bind=
"$attrs"
@
register=
"registerModal"
:title=
"getTitle"
@
ok=
"handleSubmit"
>
<textarea
style=
"width: 100%;margin-top:20px;background-color: rgb(89, 96, 116);color: white"
readonly
rows=
"22"
v-model=
"textAreaData"
/>
</BasicModal>
</
template
>
<
script
lang=
"ts"
setup
>
import
{
ref
,
computed
,
unref
,
reactive
}
from
'vue'
;
import
{
BasicModal
,
useModalInner
}
from
'@/components/Modal'
;
import
{
BasicForm
,
useForm
}
from
'@/components/Form'
;
import
{
useMessage
}
from
'@/hooks/web/useMessage'
;
defineOptions
({
name
:
'AccountModal'
});
const
emit
=
defineEmits
([
'success'
,
'register'
]);
const
{
createMessage
}
=
useMessage
();
const
getTitle
=
computed
(()
=>
(
'查看日志'
));
const
textAreaData
=
ref
(
'
\
n'
+
' 源端发生DDL事件,DDL处理策略为自动变更,自动启动源端'
)
//初始化弹框
const
[
registerModal
,
{
setModalProps
,
closeModal
}]
=
useModalInner
(
async
(
data
)
=>
{
setModalProps
({
confirmLoading
:
false
,
showOkBtn
:
false
,
cancelText
:
'关闭'
});
});
/**确定按钮*/
async
function
handleSubmit
()
{
closeModal
()
}
</
script
>
src/views/taskScheduling/taskFlowMaintenance/index.vue
0 → 100644
View file @
7306134b
<
template
>
<div
style=
"width: 100%;height: 100%;background-color: white"
>
<div
style=
"width: 100%;height:35%"
>
<div
class=
"TopClass1"
>
<div
class=
"eventCenterTitle"
>
所有任务流
</div>
<div
class=
"selectCss"
>
<BasicForm
@
register=
"registerForm1"
/>
</div>
</div>
<div
class=
"TopClass2"
>
<div
class=
"selectCss"
>
<BasicForm
@
register=
"registerForm2"
/>
</div>
</div>
<Tabs
style=
"margin-left: 30px"
defaultActiveKey=
"任务流统计信息"
@
change=
"handleChangeTab"
>
<TabPane
tab=
"任务流统计信息"
key=
"任务流统计信息"
>
<div
class=
"homePage_module"
>
<Row
:gutter=
"16"
class=
"homePage_left"
>
<Col
:span=
"24"
style=
"display: flex;justify-content: center"
>
<div
class=
"card_content1"
>
<Col
:span=
"4"
>
<div
class=
"card_item"
>
<div
class=
"card_itemInfo"
>
<div
ref=
"chartRef1"
style=
"width:100%;height: 100%"
></div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(1)"
:class=
"
{ 'listItemClass': selectedItem === 1 }">
<div
class=
"card_item"
>
<Icon
icon=
"eos-icons:database"
:size=
"30"
:color=
"'#1091FE'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
9
</div>
<div
class=
"dataTitle"
>
执行记录
</div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(2)"
:class=
"
{ 'listItemClass': selectedItem === 2 }">
<div
class=
"card_item"
>
<Icon
icon=
"ri:hourglass-fill"
:size=
"30"
:color=
"'rgb(108, 99, 178)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
1
</div>
<div
class=
"dataTitle"
>
等待
</div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(3)"
:class=
"
{ 'listItemClass': selectedItem === 3 }">
<div
class=
"card_item"
>
<Icon
icon=
"line-md:loading-twotone-loop"
:size=
"30"
:color=
"'rgb(26, 139, 236)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
1
</div>
<div
class=
"dataTitle"
>
进行中
</div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(4)"
:class=
"
{ 'listItemClass': selectedItem === 4 }">
<div
class=
"card_item"
>
<Icon
icon=
"line-md:close-circle-filled"
:size=
"30"
:color=
"'rgb(54, 189, 143)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
5
</div>
<div
class=
"dataTitle"
>
成功
</div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(5)"
:class=
"
{ 'listItemClass': selectedItem === 5 }">
<div
class=
"card_item"
>
<Icon
icon=
"line-md:minus-circle-filled"
:size=
"30"
:color=
"'rgb(234, 150, 0)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
0
</div>
<div
class=
"dataTitle"
>
成功(置成功)
</div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(6)"
:class=
"
{ 'listItemClass': selectedItem === 6 }">
<div
class=
"card_item"
>
<Icon
icon=
"line-md:minus-circle-filled"
:size=
"30"
:color=
"'rgb(234, 150, 0)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
1
</div>
<div
class=
"dataTitle"
>
失败
</div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(7)"
:class=
"
{ 'listItemClass': selectedItem === 7 }">
<div
class=
"card_item"
>
<Icon
icon=
"line-md:minus-circle-filled"
:size=
"30"
:color=
"'rgb(234, 150, 0)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
1
</div>
<div
class=
"dataTitle"
>
阻塞
</div>
</div>
</div>
</Col>
</div>
</Col>
</Row>
</div>
</TabPane>
<TabPane
tab=
"任务统计信息"
key=
"任务统计信息"
>
<div
class=
"homePage_module"
>
<Row
:gutter=
"16"
class=
"homePage_left"
>
<Col
:span=
"24"
style=
"display: flex;justify-content: center"
>
<div
class=
"card_content2"
>
<Col
:span=
"4"
>
<div
class=
"card_item"
>
<div
class=
"card_itemInfo"
>
<div
ref=
"chartRef2"
style=
"width:100%;height: 100%"
></div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(1)"
:class=
"
{ 'listItemClass': selectedItem === 1 }">
<div
class=
"card_item"
>
<Icon
icon=
"eos-icons:database"
:size=
"30"
:color=
"'#1091FE'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
9
</div>
<div
class=
"dataTitle"
>
执行记录
</div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(2)"
:class=
"
{ 'listItemClass': selectedItem === 2 }">
<div
class=
"card_item"
>
<Icon
icon=
"ri:hourglass-fill"
:size=
"30"
:color=
"'rgb(147, 140, 206)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
2
</div>
<div
class=
"dataTitle"
>
等待
</div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(3)"
:class=
"
{ 'listItemClass': selectedItem === 3 }">
<div
class=
"card_item"
>
<Icon
icon=
"line-md:loading-twotone-loop"
:size=
"30"
:color=
"'rgb(81, 160, 248)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
1
</div>
<div
class=
"dataTitle"
>
进行中
</div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(4)"
:class=
"
{ 'listItemClass': selectedItem === 4 }">
<div
class=
"card_item"
>
<Icon
icon=
"line-md:close-circle-filled"
:size=
"30"
:color=
"'rgb(54, 189, 143)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
1
</div>
<div
class=
"dataTitle"
>
成功
</div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(5)"
:class=
"
{ 'listItemClass': selectedItem === 5 }">
<div
class=
"card_item"
>
<Icon
icon=
"line-md:minus-circle-filled"
:size=
"30"
:color=
"'rgb(210, 93, 95)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
2
</div>
<div
class=
"dataTitle"
>
失败
</div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(6)"
:class=
"
{ 'listItemClass': selectedItem === 6 }">
<div
class=
"card_item"
>
<Icon
icon=
"line-md:minus-circle-filled"
:size=
"30"
:color=
"'rgb(225, 178, 79)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
0
</div>
<div
class=
"dataTitle"
>
已取消
</div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(7)"
:class=
"
{ 'listItemClass': selectedItem === 7 }">
<div
class=
"card_item"
>
<Icon
icon=
"line-md:minus-circle-filled"
:size=
"30"
:color=
"'rgb(137, 137, 137)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
01
</div>
<div
class=
"dataTitle"
>
跳过
</div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(8)"
:class=
"
{ 'listItemClass': selectedItem === 8 }">
<div
class=
"card_item"
>
<Icon
icon=
"line-md:minus-circle-filled"
:size=
"30"
:color=
"'rgb(238, 129, 43)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
0
</div>
<div
class=
"dataTitle"
>
阻塞
</div>
</div>
</div>
</Col>
<Col
:span=
"4"
@
click=
"clickButton(9)"
:class=
"
{ 'listItemClass': selectedItem === 9 }">
<div
class=
"card_item"
>
<Icon
icon=
"line-md:minus-circle-filled"
:size=
"30"
:color=
"'rgb(85, 190, 50)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
0
</div>
<div
class=
"dataTitle"
>
过滤
</div>
</div>
</div>
</Col>
</div>
</Col>
</Row>
</div>
</TabPane>
</Tabs>
</div>
<div
style=
"width: 100%;height:65%;display: flex;margin-top: 10px"
>
<div
style=
"width: 25%;"
>
<BasicTree
toolbar
search
title=
" "
:checkable=
"true"
:treeData=
"treeData2"
v-model:checkedKeys=
"myCheckedKeys"
@
select=
"handleSelect"
:beforeRightClick=
"getRightMenuList"
:actionList=
"actionList"
>
<template
#
title=
"
{ title, key, desc,icons,color }">
<div
style=
"display: flex"
>
<div
style=
"display: flex;align-items: center;"
>
<Icon
:icon=
"icons"
:style=
"
{color:color}">
</Icon>
</div>
<div
style=
"margin-left: 10px"
>
<span
style=
"font-weight: bold"
>
{{
title
}}
</span><br>
<span>
{{
desc
}}
</span>
</div>
</div>
</
template
>
</BasicTree>
</div>
<div
style=
"width: 75%;"
>
<div
style=
"display: flex;justify-content: space-between; align-items: center;margin-bottom: 10px;"
>
<div
style=
"margin-top: 10px;display: flex;margin-left: 10px;align-items: center"
>
<div>
<Icon
icon=
"material-symbols:sync"
:size=
"25"
:color=
"'rgb(121, 74, 235)'"
/>
</div>
<div>
<div
style=
"font-weight: bold;font-size: 20px;"
>
orsadas-ter
</div>
<div>
/共享工作区/gxx/DDL验证
</div>
</div>
</div>
<div
style=
"margin-top: 10px;"
>
<a-button
style=
"margin-right: 10px;border: none"
@
click=
"reloadButton"
><Icon
icon=
"mynaui:refresh"
/></a-button>
<a-button
style=
"margin-right: 10px;border: none"
@
click=
"reloadButton"
><Icon
icon=
"ant-design:caret-right-filled"
/></a-button>
<a-button
style=
"margin-right: 10px;border: none"
@
click=
"reloadButton"
><Icon
icon=
"line-md:edit"
/></a-button>
</div>
</div>
<BasicForm
@
register=
"registerForm3"
/>
<Divider/>
<BasicTable
@
register=
"registerTable"
>
<
template
#
toolbar
>
<a-button
type=
"primary"
:disabled=
"getRowSelection().selectedRowKeys
<
=
0
"
@
click=
"handleDeleteIds"
>
置成功
</a-button>
<a-button
type=
"primary"
:disabled=
"getRowSelection().selectedRowKeys
<
=
0
"
@
click=
"handleCreateFile"
>
重跑
</a-button>
<a-button
type=
"primary"
:disabled=
"getRowSelection().selectedRowKeys
<
=
0
"
@
click=
"handleCreateModel"
>
错误恢复
</a-button>
<a-button
type=
"primary"
:disabled=
"getRowSelection().selectedRowKeys
<
=
0
"
@
click=
"handleCreateModel"
>
取消执行
</a-button>
</
template
>
<
template
#
bodyCell=
"{ column, record }"
>
<template
v-if=
"column.key === 'action'"
>
<TableAction
:actions=
"[
{
label: '跳转任务运维',
onClick: toTaskMaintenanceButton.bind(null, record),
},
{
label: '查看日志',
onClick: lookLogButton.bind(null, record),
ifShow: record.eventType === '系统异常',
},
]"
/>
</
template
>
</template>
</BasicTable>
</div>
</div>
<!-- 查看日志 弹窗-->
<LookLogModal
@
register=
"registerLookLogModal"
@
success=
"handleSuccess"
/>
</div>
</template>
<
script
lang=
"ts"
setup
>
import
{
Card
,
Tabs
,
TabPane
,
Col
,
Row
,
RangePicker
,
RadioGroup
,
RadioButton
,
Tag
,
List
}
from
'ant-design-vue'
;
import
Icon
from
'@/components/Icon/Icon.vue'
;
import
{
reactive
,
unref
,
onDeactivated
,
onMounted
,
ref
,
watch
,
Ref
,
h
}
from
'vue'
;
import
{
BasicTable
,
useTable
,
TableAction
}
from
'@/components/Table'
;
import
{
PageWrapper
}
from
'@/components/Page'
;
import
{
useMessage
}
from
'@/hooks/web/useMessage'
;
import
{
useModal
}
from
'@/components/Modal'
;
import
{
useGo
}
from
'@/hooks/web/usePage'
;
import
{
useRoute
}
from
'vue-router'
;
import
{
router
}
from
'@/router'
;
import
{
columns
,
topFormSchema2
,
topFormSchema1
,
mainFormSchema3
}
from
'./taskFlowMaintenance.data'
;
import
{
tableData
,
TreeData
,
treeData2
}
from
'./taskFlowMaintenanceData'
import
{
BasicForm
,
useForm
}
from
'@/components/Form'
;
import
{
useECharts
}
from
'@/hooks/web/useECharts'
;
import
LookLogModal
from
'./LookLogModal.vue'
import
{
EllipsisOutlined
}
from
"@ant-design/icons-vue"
;
import
{
EventDataNode
}
from
"ant-design-vue/es/vc-tree/interface"
;
import
{
BasicTree
,
ContextMenuItem
,
TreeActionType
,
TreeItem
}
from
'@/components/Tree'
;
import
{
Divider
}
from
'ant-design-vue'
;
defineOptions
({
name
:
'AccountManagement'
});
const
chartRef1
=
ref
<
HTMLDivElement
|
null
>
(
null
);
const
{
setOptions
:
setOptions1
}
=
useECharts
(
chartRef1
as
Ref
<
HTMLDivElement
>
);
const
chartRef2
=
ref
<
HTMLDivElement
|
null
>
(
null
);
const
{
setOptions
:
setOptions2
}
=
useECharts
(
chartRef2
as
Ref
<
HTMLDivElement
>
);
const
{
createMessage
,
createConfirm
}
=
useMessage
();
const
route
=
useRoute
();
const
go
=
useGo
();
const
searchInfo
=
ref
(
''
);
const
treeData
=
ref
([])
//分页相关
const
pagination
=
{
showTotal
:
(
total
:
number
)
=>
`共
${
total
}
条`
,
total
:
8
,
show
:
true
,
pageSize
:
8
,
};
/** 执行统计echarts渲染*/
function
getEchartsData1
()
{
setOptions1
({
tooltip
:
{
trigger
:
'item'
,
formatter
:
'{b}: {c} ({d}%)'
,
},
legend
:
{
bottom
:
'1%'
,
left
:
'center'
,
show
:
false
,
},
series
:
[
{
color
:
[
'rgb(236, 103, 102)'
,
'rgb(82, 114, 196)'
,
'rgb(250, 199, 94)'
,
'rgb(148, 203, 121)'
],
name
:
'事件中心'
,
type
:
'pie'
,
radius
:
[
'50%'
,
'70%'
],
avoidLabelOverlap
:
false
,
itemStyle
:
{
borderRadius
:
0
,
borderColor
:
'#fff'
,
borderWidth
:
2
,
},
label
:
{
show
:
false
,
position
:
'center'
,
},
emphasis
:
{
label
:
{
show
:
true
,
fontSize
:
'12'
,
fontWeight
:
'bold'
,
},
},
labelLine
:
{
show
:
false
,
},
data
:
[
{
value
:
1
,
name
:
'系统异常'
},
{
value
:
1
,
name
:
'数据异常'
},
{
value
:
6
,
name
:
'状态切换'
},
{
value
:
1
,
name
:
'策略告警'
},
],
animationType
:
'scale'
,
animationEasing
:
'exponentialInOut'
,
animationDelay
:
function
()
{
return
Math
.
random
()
*
100
;
},
},
],
});
}
/** 执行统计echarts渲染*/
function
getEchartsData2
()
{
setOptions2
({
tooltip
:
{
trigger
:
'item'
,
formatter
:
'{b}: {c} ({d}%)'
,
},
legend
:
{
bottom
:
'1%'
,
left
:
'center'
,
show
:
false
,
},
series
:
[
{
color
:
[
'rgb(236, 103, 102)'
,
'rgb(82, 114, 196)'
,
'rgb(250, 199, 94)'
,
'rgb(148, 203, 121)'
],
name
:
'事件中心'
,
type
:
'pie'
,
radius
:
[
'50%'
,
'70%'
],
avoidLabelOverlap
:
false
,
itemStyle
:
{
borderRadius
:
0
,
borderColor
:
'#fff'
,
borderWidth
:
2
,
},
label
:
{
show
:
false
,
position
:
'center'
,
},
emphasis
:
{
label
:
{
show
:
true
,
fontSize
:
'12'
,
fontWeight
:
'bold'
,
},
},
labelLine
:
{
show
:
false
,
},
data
:
[
{
value
:
1
,
name
:
'系统异常'
},
{
value
:
1
,
name
:
'数据异常'
},
{
value
:
6
,
name
:
'状态切换'
},
{
value
:
1
,
name
:
'策略告警'
},
],
animationType
:
'scale'
,
animationEasing
:
'exponentialInOut'
,
animationDelay
:
function
()
{
return
Math
.
random
()
*
100
;
},
},
],
});
}
const
[
registerLookLogModal
,
{
openModal
:
openLookLogModal
}]
=
useModal
();
const
[
registerTable
,
{
reload
,
getForm
,
getRowSelection
}]
=
useTable
({
title
:
'执行记录'
,
api
:
async
(
params
)
=>
{
const
response
=
{
pageNu
:
"1"
,
pageSize
:
"10"
,
pages
:
"1"
,
total
:
tableData
.
length
,
code
:
''
,
message
:
''
,
data
:
[],
};
return
{
...
response
,
data
:
tableData
};
},
columns
,
rowKey
:
'id'
,
rowSelection
:
true
,
useSearchForm
:
false
,
showTableSetting
:
false
,
showIndexColumn
:
false
,
bordered
:
true
,
actionColumn
:
{
width
:
150
,
title
:
'操作'
,
dataIndex
:
'action'
,
},
});
const
[
registerForm1
,
{
updateSchema
:
updateSchema1
}]
=
useForm
({
labelWidth
:
100
,
schemas
:
topFormSchema1
,
showActionButtonGroup
:
false
,
actionColOptions
:
{
span
:
23
,
},
});
const
[
registerForm2
,
{
updateSchema
:
updateSchema2
}]
=
useForm
({
labelWidth
:
100
,
schemas
:
topFormSchema2
,
showActionButtonGroup
:
false
,
actionColOptions
:
{
span
:
23
,
},
});
const
[
registerForm3
,
{
setFieldsValue
,
updateSchema
,
resetFields
,
validate
}]
=
useForm
({
labelWidth
:
80
,
baseColProps
:
{
lg
:
12
,
md
:
24
},
schemas
:
mainFormSchema3
,
showActionButtonGroup
:
false
,
actionColOptions
:
{
span
:
23
,
},
});
/**跳转任务运维 按钮*/
function
toTaskMaintenanceButton
(
record
){
router
.
push
({
path
:
'/realTimeSync/taskOperationsMaintenance/index'
,
query
:
{}
});
}
/**查看日志 按钮*/
function
lookLogButton
(
record
){
openLookLogModal
(
true
,{})
}
/**标签切换*/
function
handleChangeTab
(
key
:
string
)
{
getEchartsData1
()
getEchartsData2
()
}
/** 转成树 */
function
handleTree
(
data
,
id
,
parentId
,
children
,
rootId
)
{
id
=
id
||
'id'
parentId
=
parentId
||
'parentId'
children
=
children
||
'children'
rootId
=
rootId
||
Math
.
min
.
apply
(
Math
,
data
.
map
(
item
=>
{
return
item
[
parentId
]
}))
||
0
// 对源数据深度克隆
const
cloneData
=
JSON
.
parse
(
JSON
.
stringify
(
data
))
// 循环所有项
const
treeData
=
cloneData
.
filter
(
father
=>
{
const
branchArr
=
cloneData
.
filter
(
child
=>
{
// 返回每一项的子级数组
return
father
[
id
]
===
child
[
parentId
]
})
branchArr
.
length
>
0
?
father
.
children
=
branchArr
:
''
// 返回第一层
return
father
[
parentId
]
===
rootId
})
return
treeData
!==
''
?
treeData
:
data
}
// 树的操作列表
const
actionList
=
[
{
//全部操作按钮
render
:
(
node
)
=>
{
return
h
(
EllipsisOutlined
,
{
class
:
'ml-2'
,
onClick
:
()
=>
{
getRightMenuList
(
node
)
},
});
},
},
];
function
getRightMenuList
(
node
:
EventDataNode
):
Promise
<
ContextMenuItem
[]
>
{
const
menu
=
[
{
label
:
'手动执行'
,
handler
:
()
=>
{
handleOpen
(
node
)
},
},
{
label
:
'重跑'
,
handler
:
()
=>
{
handleOpen
(
node
)
},
},
{
label
:
'错误恢复'
,
handler
:
()
=>
{
handleOpen
(
node
)
},
},
{
label
:
'取消执行'
,
handler
:
()
=>
{
handleOpen
(
node
)
},
},
{
label
:
'置成功'
,
handler
:
()
=>
{
handleOpen
(
node
)
},
},
];
return
new
Promise
((
resolve
)
=>
{
resolve
(
menu
);
});
}
function
handleOpen
(
node
){
}
onMounted
(()
=>
{
getEchartsData1
()
const
treeData
=
handleTree
(
TreeData
,
'businessId'
,
undefined
,
undefined
,
undefined
)
updateSchema1
([
{
field
:
'tree'
,
componentProps
:
{
treeData
:
treeData
},
},
]);
});
</
script
>
<
style
lang=
"less"
scoped
>
.selectCss{
margin-left: 30px;
::v-deep(.ant-select){
width:200px!important;
}
}
.homePage_module {
margin-top: 20px;
::v-deep(.ant-card-body) {
display: flex;
justify-content: center;
height: 180px;
}
.homePage_left {
.card_content1 {
width: 70%;
display: flex;
justify-content: center;
align-items: center;
.card_item {
padding-left: 20px;
display: flex;
align-items: center;
width: 100px;
height: 80px;
border-radius: 10px;
.card_itemInfo {
padding-left: 7px;
.dataNum {
font-size: 20px;
line-height: 26px;
font-weight: bold;
}
.dataTitle {
font-size: 12px;
line-height: 12px;
}
}
}
}
.card_content2 {
width: 50%;
display: flex;
justify-content: center;
align-items: center;
.card_item {
padding-left: 20px;
display: flex;
align-items: center;
width: 100px;
height: 80px;
border-radius: 10px;
.card_itemInfo {
padding-left: 7px;
.dataNum {
font-size: 20px;
line-height: 26px;
font-weight: bold;
}
.dataTitle {
font-size: 12px;
line-height: 12px;
}
}
}
}
}
}
.listItemClass{
background-color: rgb(230, 243, 255);
}
.icon {
font-size: 20px !important;
}
.listClass{
::v-deep(.ant-list-item){
padding: 5px 24px 5px 10px!important;
}
::v-deep(.ant-list-item-meta-title){
margin-bottom: -5px!important;
}
}
.titleClass{
height: 40px;
background-color: rgb(233, 236, 247);
font-weight: bold;
font-size: 13px;
display: flex;
align-items: center
}
.inputSearchClass{
width: 200px;
height:40px;
margin-left: 10px;
display: flex;
align-items: center
}
.TopClass1{
display: flex;
height: 30px;
margin-left: 30px;
margin-top: 10px;
.eventCenterTitle{
display: flex;
align-items: center;
font-weight: bold;
font-size: 20px
}
}
.TopClass2{
display: flex;
height: 30px;
margin-top: 10px;
.eventCenterTitle{
display: flex;
align-items: center;
font-weight: bold;
font-size: 20px
}
}
::v-deep(.ant-divider){
margin:0px 0px!important;
background-color: rgb(221, 225, 240)!important;
}
</
style
>
src/views/taskScheduling/taskFlowMaintenance/taskFlowMaintenance.data.ts
0 → 100644
View file @
7306134b
import
{
getAllRoleList
}
from
'@/api/system/role/role'
;
import
{
BasicColumn
,
FormSchema
}
from
'@/components/Table'
;
import
{
h
}
from
"vue"
;
import
{
Input
,
Select
,
Tag
}
from
"ant-design-vue"
;
import
{
Switch
}
from
'ant-design-vue'
;
import
{
useMessage
}
from
"@/hooks/web/useMessage"
;
import
{
changeFlagApi
}
from
"@/api/system/user/user"
;
import
{
DescItem
}
from
"@/components/Description"
;
import
{
uploadApi
}
from
"@/api/sys/upload"
;
// 引入开关组件
type
CheckedType
=
boolean
|
string
|
number
;
/**首页-table列表*/
export
const
columns
:
BasicColumn
[]
=
[
{
title
:
'调度时间'
,
dataIndex
:
'schedulingTime'
,
width
:
120
},
{
title
:
'执行时间'
,
dataIndex
:
'executionTime'
,
width
:
120
},
{
title
:
'执行时长'
,
dataIndex
:
'executionDuration'
,
width
:
120
},
{
title
:
'运行状态'
,
dataIndex
:
'runningStatus'
,
width
:
120
},
{
title
:
'执行条件'
,
dataIndex
:
'executionCondition'
,
width
:
120
},
{
title
:
'执行模式'
,
dataIndex
:
'executionMode'
,
width
:
120
},
{
title
:
'执行版本'
,
dataIndex
:
'executionVersion'
,
width
:
120
},
{
title
:
'执行信息'
,
dataIndex
:
'executionInfo'
,
width
:
120
},
{
title
:
'执行ID'
,
dataIndex
:
'executionId'
,
width
:
120
}
];
/**首页-搜索表单*/
export
const
searchFormSchema
:
FormSchema
[]
=
[
{
field
:
'taskName'
,
label
:
''
,
component
:
'Input'
,
rules
:
[
{
required
:
true
,
message
:
'请输入关键字搜索'
,
},
],
componentProps
:
{
placeholder
:
'请输入关键字搜索'
,
}
},
];
/**首页-表单1*/
export
const
topFormSchema1
:
FormSchema
[]
=
[
{
field
:
'tree'
,
label
:
''
,
component
:
'TreeSelect'
,
colProps
:
{
span
:
10
},
componentProps
:
{
maxTagCount
:
1
,
//最大tag数量
showArrow
:
true
,
//箭头
treeCheckable
:
true
,
fieldNames
:
{
label
:
'treeName'
,
value
:
'businessId'
,
},
getPopupContainer
:
()
=>
document
.
body
,
},
},
];
/**首页-表单2*/
export
const
topFormSchema2
:
FormSchema
[]
=
[
{
field
:
'agreement'
,
component
:
'RadioButtonGroup'
,
label
:
''
,
defaultValue
:
'1'
,
componentProps
:
{
options
:
[
{
label
:
'调度时间'
,
value
:
'1'
,
},
{
label
:
'执行时间'
,
value
:
'2'
,
},
],
},
},
{
field
:
'[startDate, endDate]'
,
label
:
' '
,
labelWidth
:
20
,
component
:
'RangePicker'
,
componentProps
:
{
format
:
'YYYY-MM-DD'
,
placeholder
:
[
'开始日期'
,
'结束日期'
],
},
},
{
field
:
'eventType'
,
label
:
'调度类型'
,
component
:
'Select'
,
componentProps
:
{
placeholder
:
'类型'
,
options
:
[
{
label
:
'全部'
,
value
:
'全部'
,
},
],
},
},
{
field
:
'eventType'
,
label
:
'发布状态'
,
component
:
'Select'
,
componentProps
:
{
placeholder
:
'类型'
,
options
:
[
{
label
:
'全部'
,
value
:
'全部'
,
},
],
},
},
];
/**首页-表单3*/
export
const
mainFormSchema3
:
FormSchema
[]
=
[
{
field
:
'schedulingCycle'
,
label
:
'调度周期'
,
component
:
'Input'
,
defaultValue
:
'0 0 0 ? * * *'
,
labelWidth
:
120
,
componentProps
:
{
style
:
{
border
:
'none'
,
},
readonly
:
true
,
placeholder
:
'请输入调度周期'
,
},
colProps
:
{
lg
:
5
,
md
:
24
},
},
{
field
:
'publishState'
,
label
:
'发布状态'
,
component
:
'Input'
,
defaultValue
:
'已发布'
,
componentProps
:
{
style
:
{
border
:
'none'
,
},
readonly
:
true
,
placeholder
:
'请输入发布状态'
,
},
colProps
:
{
lg
:
5
,
md
:
24
},
},
{
field
:
'approvalState'
,
label
:
'审批状态'
,
component
:
'Input'
,
defaultValue
:
'-'
,
componentProps
:
{
style
:
{
border
:
'none'
,
},
readonly
:
true
,
placeholder
:
'请输入审批状态'
,
},
colProps
:
{
lg
:
5
,
md
:
24
},
},
{
field
:
'uuid'
,
label
:
'任务流UUID'
,
component
:
'Input'
,
defaultValue
:
'4467f504c263466db3b752dc97d51d42'
,
componentProps
:
{
style
:
{
border
:
'none'
,
},
readonly
:
true
,
placeholder
:
'请输入任务流UUID'
,
},
colProps
:
{
lg
:
8
,
md
:
24
},
},
];
src/views/taskScheduling/taskFlowMaintenance/taskFlowMaintenanceData.ts
0 → 100644
View file @
7306134b
import
{
getAllRoleList
}
from
'@/api/system/role/role'
;
import
{
BasicColumn
,
FormSchema
}
from
'@/components/Table'
;
import
{
h
}
from
"vue"
;
import
{
Tag
}
from
"ant-design-vue"
;
import
{
Switch
}
from
'ant-design-vue'
;
import
{
useMessage
}
from
"@/hooks/web/useMessage"
;
import
{
changeFlagApi
}
from
"@/api/system/user/user"
;
import
{
relatedQualityColumns
}
from
"@/views/dataStandards/basicStandards/basicStandards.data"
;
import
{
GrowCardItem
}
from
"@/views/dashboard/analysis/data"
;
// 引入开关组件
type
CheckedType
=
boolean
|
string
|
number
;
/**主页面树/列表 数据*/
export
const
TreeData
:
any
[]
=
[
{
businessId
:
100
,
treeName
:
'全选'
,
anotherName
:
'全选'
,
parentId
:
0
,
},
{
businessId
:
201
,
treeName
:
'共享工作区'
,
anotherName
:
'共享工作区'
,
parentId
:
100
,
},
{
businessId
:
202
,
treeName
:
'商城工作区'
,
anotherName
:
'商城工作区'
,
parentId
:
100
,
},
{
businessId
:
203
,
treeName
:
'admin个人工作区'
,
anotherName
:
'admin个人工作区'
,
parentId
:
100
,
},
];
/**主页面列表 数据*/
export
const
tableData
:
any
[]
=
[
{
id
:
1
,
schedulingTime
:
'2023-06-28 20:29:48'
,
executionTime
:
'2023-06-28 20:30:48'
,
executionDuration
:
'28s 636ms'
,
runningStatus
:
'失败'
,
executionCondition
:
'-'
,
executionMode
:
'系统调度'
,
executionVersion
:
'V5'
,
executionInfo
:
'-'
,
executionId
:
'49027'
},
{
id
:
2
,
schedulingTime
:
'2023-06-28 20:29:48'
,
executionTime
:
'2023-06-28 20:30:48'
,
executionDuration
:
'28s 636ms'
,
runningStatus
:
'失败'
,
executionCondition
:
'-'
,
executionMode
:
'系统调度'
,
executionVersion
:
'V5'
,
executionInfo
:
'-'
,
executionId
:
'49027'
},
{
id
:
3
,
schedulingTime
:
'2023-06-28 20:29:48'
,
executionTime
:
'2023-06-28 20:30:48'
,
executionDuration
:
'28s 636ms'
,
runningStatus
:
'失败'
,
executionCondition
:
'-'
,
executionMode
:
'系统调度'
,
executionVersion
:
'V5'
,
executionInfo
:
'-'
,
executionId
:
'49027'
},
{
id
:
4
,
schedulingTime
:
'2023-06-28 20:29:48'
,
executionTime
:
'2023-06-28 20:30:48'
,
executionDuration
:
'28s 636ms'
,
runningStatus
:
'失败'
,
executionCondition
:
'-'
,
executionMode
:
'系统调度'
,
executionVersion
:
'V5'
,
executionInfo
:
'-'
,
executionId
:
'49027'
},
{
id
:
5
,
schedulingTime
:
'2023-06-28 20:29:48'
,
executionTime
:
'2023-06-28 20:30:48'
,
executionDuration
:
'28s 636ms'
,
runningStatus
:
'失败'
,
executionCondition
:
'-'
,
executionMode
:
'系统调度'
,
executionVersion
:
'V5'
,
executionInfo
:
'-'
,
executionId
:
'49027'
},
{
id
:
6
,
schedulingTime
:
'2023-06-28 20:29:48'
,
executionTime
:
'2023-06-28 20:30:48'
,
executionDuration
:
'28s 636ms'
,
runningStatus
:
'失败'
,
executionCondition
:
'-'
,
executionMode
:
'系统调度'
,
executionVersion
:
'V5'
,
executionInfo
:
'-'
,
executionId
:
'49027'
},
{
id
:
7
,
schedulingTime
:
'2023-06-28 20:29:48'
,
executionTime
:
'2023-06-28 20:30:48'
,
executionDuration
:
'28s 636ms'
,
runningStatus
:
'失败'
,
executionCondition
:
'-'
,
executionMode
:
'系统调度'
,
executionVersion
:
'V5'
,
executionInfo
:
'-'
,
executionId
:
'49027'
},
{
id
:
8
,
schedulingTime
:
'2023-06-28 20:29:48'
,
executionTime
:
'2023-06-28 20:30:48'
,
executionDuration
:
'28s 636ms'
,
runningStatus
:
'失败'
,
executionCondition
:
'-'
,
executionMode
:
'系统调度'
,
executionVersion
:
'V5'
,
executionInfo
:
'-'
,
executionId
:
'49027'
},
{
id
:
9
,
schedulingTime
:
'2023-06-28 20:29:48'
,
executionTime
:
'2023-06-28 20:30:48'
,
executionDuration
:
'28s 636ms'
,
runningStatus
:
'失败'
,
executionCondition
:
'-'
,
executionMode
:
'系统调度'
,
executionVersion
:
'V5'
,
executionInfo
:
'-'
,
executionId
:
'49027'
},
]
/**主页面 左侧List*/
export
const
treeData2
:
any
[]
=
[
{
key
:
2
,
desc
:
'gxx/jira/test'
,
title
:
'test'
,
icons
:
'pepicons-pop:rewind-time'
,
color
:
'rgb(138, 101, 235)'
,
},
{
key
:
3
,
desc
:
'gxx/jira/90017-4'
,
title
:
'90017-4'
,
icons
:
'pepicons-pop:rewind-time'
,
color
:
'rgb(138, 101, 235)'
,
},
{
key
:
4
,
desc
:
'gxx/jira/字段映射'
,
title
:
'字段映射'
,
icons
:
'pepicons-pop:rewind-time'
,
color
:
'rgb(138, 101, 235)'
,
},
{
key
:
5
,
desc
:
'gxx/jira/wuqi_test'
,
title
:
'wuqi_test'
,
icons
:
'pepicons-pop:rewind-time'
,
color
:
'rgb(138, 101, 235)'
,
},
{
key
:
6
,
desc
:
'gxx/jira/目标端规则顺序生效问题'
,
title
:
'目标端规则顺序生效问题'
,
icons
:
'pepicons-pop:rewind-time'
,
color
:
'rgb(138, 101, 235)'
,
},
{
key
:
7
,
desc
:
'gxx/jira/oracle-argo-吞如-单表-test'
,
title
:
'oracle-argo-吞如-单表-test'
,
icons
:
'pepicons-pop:rewind-time'
,
color
:
'rgb(138, 101, 235)'
,
},
{
key
:
8
,
desc
:
'admin-个人工作区/xuekai/多个映射规则配置'
,
title
:
'多个映射规则配置'
,
icons
:
'pepicons-pop:rewind-time'
,
color
:
'rgb(138, 101, 235)'
,
},
{
key
:
9
,
desc
:
'gxx/jira/oracle-mysql'
,
title
:
'oracle-mysql'
,
icons
:
'pepicons-pop:rewind-time'
,
color
:
'rgb(138, 101, 235)'
,
},
]
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment