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
3131f4fb
Commit
3131f4fb
authored
Nov 26, 2024
by
liwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
任务运维页面
parent
df76dafd
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
320 additions
and
65 deletions
+320
-65
AbnormalDataHandleDrawer.vue
...nc/taskOperationsMaintenance/AbnormalDataHandleDrawer.vue
+23
-6
DDLDetailModal.vue
...realTimeSync/taskOperationsMaintenance/DDLDetailModal.vue
+61
-14
LookAllDataModal.vue
...alTimeSync/taskOperationsMaintenance/LookAllDataModal.vue
+2
-2
LookSQLModal.vue
...s/realTimeSync/taskOperationsMaintenance/LookSQLModal.vue
+54
-0
ResetNameModal.vue
...realTimeSync/taskOperationsMaintenance/ResetNameModal.vue
+44
-0
VersionModal.vue
...s/realTimeSync/taskOperationsMaintenance/VersionModal.vue
+72
-6
index.vue
src/views/realTimeSync/taskOperationsMaintenance/index.vue
+19
-11
maintenance.data.ts
...ealTimeSync/taskOperationsMaintenance/maintenance.data.ts
+17
-0
maintenanceData.ts
...realTimeSync/taskOperationsMaintenance/maintenanceData.ts
+5
-5
workDetail.vue
...ews/realTimeSync/taskOperationsMaintenance/workDetail.vue
+23
-21
No files found.
src/views/realTimeSync/taskOperationsMaintenance/AbnormalDataHandleDrawer.vue
View file @
3131f4fb
...
@@ -8,9 +8,9 @@
...
@@ -8,9 +8,9 @@
@
ok=
"handleSubmit"
@
ok=
"handleSubmit"
>
>
<div
style=
"display:flex;justify-content: flex-end"
>
<div
style=
"display:flex;justify-content: flex-end"
>
<a-button
type=
"primary"
style=
"margin-right: 10px;background-color: tomato"
@
click=
""
>
忽略
</a-button>
<a-button
type=
"primary"
style=
"margin-right: 10px;background-color: tomato"
@
click=
"
ignoreButton
"
>
忽略
</a-button>
<a-button
type=
"primary"
style=
"margin-right: 10px"
@
click=
""
>
保存并更新
</a-button>
<a-button
type=
"primary"
style=
"margin-right: 10px"
@
click=
"
saveAndUpdateButton
"
>
保存并更新
</a-button>
<a-button
style=
"margin-right: 10px"
@
click=
""
>
保存
</a-button>
<a-button
style=
"margin-right: 10px"
@
click=
"
saveButton
"
>
保存
</a-button>
</div>
</div>
<div
style=
"margin-left: 10px"
>
<div
style=
"margin-left: 10px"
>
<Tabs
defaultActiveKey=
"报错详情"
@
change=
"handleChangeTab"
>
<Tabs
defaultActiveKey=
"报错详情"
@
change=
"handleChangeTab"
>
...
@@ -58,8 +58,10 @@
...
@@ -58,8 +58,10 @@
</TabPane>
</TabPane>
</Tabs>
</Tabs>
</div>
</div>
<!-- 查看
完整数据
弹窗-->
<!-- 查看
版本信息
弹窗-->
<VersionModal
@
register=
"registerVersionModal"
@
success=
"handleSuccess"
/>
<VersionModal
@
register=
"registerVersionModal"
@
success=
"handleSuccess"
/>
<!-- 查看完整数据 弹窗-->
<LookAllDataModal
@
register=
"registerLookAllDataModal"
@
success=
"handleSuccess"
/>
</BasicDrawer>
</BasicDrawer>
</
template
>
</
template
>
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
...
@@ -82,7 +84,7 @@
...
@@ -82,7 +84,7 @@
const
jsonData
=
const
jsonData
=
'INSERT INTO orders (id, customer_name, product_name, quantity, order_date)
\
n'
+
'INSERT INTO orders (id, customer_name, product_name, quantity, order_date)
\
n'
+
'VALUES (1, "张三", "笔记本电脑", 2, "2024-11-23 14:46:00");
\
n'
'VALUES (1, "张三", "笔记本电脑", 2, "2024-11-23 14:46:00");
\
n'
const
[
register
Modal
,
{
openModal
:
open
Modal
}]
=
useModal
();
const
[
register
LookAllDataModal
,
{
openModal
:
openLookAllData
Modal
}]
=
useModal
();
const
[
registerVersionModal
,
{
openModal
:
openVersionModal
}]
=
useModal
();
const
[
registerVersionModal
,
{
openModal
:
openVersionModal
}]
=
useModal
();
const
emit
=
defineEmits
([
'success'
,
'register'
]);
const
emit
=
defineEmits
([
'success'
,
'register'
]);
const
{
createMessage
}
=
useMessage
();
const
{
createMessage
}
=
useMessage
();
...
@@ -142,7 +144,22 @@
...
@@ -142,7 +144,22 @@
/**查看完整数据 按钮*/
/**查看完整数据 按钮*/
function
lookAllDataButton
()
{
function
lookAllDataButton
()
{
openModal
(
true
,{})
openLookAllDataModal
(
true
,{})
}
/**忽略 按钮*/
function
ignoreButton
()
{
createMessage
.
success
(
'忽略成功!'
)
}
/**保存并更新 按钮*/
function
saveAndUpdateButton
()
{
createMessage
.
success
(
'更新成功!'
)
}
/**保存 按钮*/
function
saveButton
()
{
createMessage
.
success
(
'保存成功!'
)
}
}
/**查看版本变更信息*/
/**查看版本变更信息*/
...
...
src/views/realTimeSync/taskOperationsMaintenance/DDLDetailModal.vue
View file @
3131f4fb
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
<template
#
taskVersion=
"
{model,field}">
<template
#
taskVersion=
"
{model,field}">
<span>
<span>
&
nbsp
{{
model
.
taskVersion
}}
&
nbsp
{{
model
.
taskVersion
}}
<a-button
style=
"border-color: rgb(98, 177, 252);color: rgb(98, 177, 252)"
>
获取当前运行版本
</a-button>
<a-button
style=
"border-color: rgb(98, 177, 252);color: rgb(98, 177, 252)"
@
click=
"getCurrentVersionButton"
>
获取当前运行版本
</a-button>
</span>
</span>
</
template
>
</
template
>
</BasicForm>
</BasicForm>
...
@@ -28,9 +28,9 @@
...
@@ -28,9 +28,9 @@
/>
/>
<div
style=
"display: flex;justify-content: space-between;margin-top: 20px;margin-bottom: 10px"
>
<div
style=
"display: flex;justify-content: space-between;margin-top: 20px;margin-bottom: 10px"
>
<div
style=
"font-weight: bold"
>
DDL语句
</div>
<div
style=
"font-weight: bold"
>
DDL语句
</div>
<a-button
type=
"primary"
>
复制
</a-button>
<a-button
type=
"primary"
@
click=
"copyButton"
>
复制
</a-button>
</div>
</div>
<textarea
style=
"width: 100%;border: 1px solid #ccc;"
rows=
"4"
v-model=
"textAreaData
"
/>
<textarea
style=
"width: 100%;border: 1px solid #ccc;"
rows=
"4"
readonly
disabled
v-model=
"textAreaData1
"
/>
<div
style=
"display: flex;margin-top: 20px;margin-bottom: 10px;justify-content: space-between;align-items: center"
>
<div
style=
"display: flex;margin-top: 20px;margin-bottom: 10px;justify-content: space-between;align-items: center"
>
<div
style=
"font-weight: bold"
>
支持用户在此框对DDL语句进行编辑
</div>
<div
style=
"font-weight: bold"
>
支持用户在此框对DDL语句进行编辑
</div>
<div
style=
"display: flex;align-items: center"
>
<div
style=
"display: flex;align-items: center"
>
...
@@ -38,7 +38,7 @@
...
@@ -38,7 +38,7 @@
<a-button
type=
"primary"
@
click=
"reloadButton"
>
刷新
</a-button>
<a-button
type=
"primary"
@
click=
"reloadButton"
>
刷新
</a-button>
</div>
</div>
</div>
</div>
<textarea
style=
"width: 100%;border: 1px solid #ccc;"
rows=
"4"
v-model=
"textAreaData"
/>
<textarea
style=
"width: 100%;border: 1px solid #ccc;"
rows=
"4"
v-model=
"textAreaData
2
"
/>
</TabPane>
</TabPane>
<TabPane
tab=
"处理历史"
key=
"处理历史"
>
<TabPane
tab=
"处理历史"
key=
"处理历史"
>
<BasicTable
@
register=
"registerTable"
>
<BasicTable
@
register=
"registerTable"
>
...
@@ -52,17 +52,21 @@
...
@@ -52,17 +52,21 @@
</TabPane>
</TabPane>
</Tabs>
</Tabs>
<
template
#
footer
>
<
template
#
footer
>
<a-button>
取消
</a-button>
<a-button
@
click=
"cancelButton"
>
取消
</a-button>
<a-button
style=
"background-color: rgb(245, 128, 41);color: white"
>
忽略
</a-button>
<a-button
style=
"background-color: rgb(245, 128, 41);color: white"
@
click=
"ignoreButton"
>
忽略
</a-button>
<a-button
style=
"background-color: rgb(0, 157, 93);color: white"
>
保存
</a-button>
<a-button
style=
"background-color: rgb(0, 157, 93);color: white"
@
click=
"saveButton"
>
保存
</a-button>
<a-button
type=
"primary"
>
保存并更新
</a-button>
<a-button
type=
"primary"
@
click=
"saveAndUpdateButton"
>
保存并更新
</a-button>
</
template
>
</
template
>
<!-- 查看SQL 弹窗-->
<LookSQLModal
@
register=
"registerLookSQLModal"
@
success=
"handleSuccess"
/>
<!-- 查看日志 弹窗-->
<LookLogModal
@
register=
"registerLookLogModal"
@
success=
"handleSuccess"
/>
</BasicModal>
</BasicModal>
</template>
</template>
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
import
{
ref
,
computed
,
unref
,
reactive
}
from
'vue'
;
import
{
ref
,
computed
,
unref
,
reactive
}
from
'vue'
;
import
{
Card
,
Tabs
,
TabPane
,
Col
,
Row
,
RangePicker
,
RadioGroup
,
RadioButton
,
Select
}
from
'ant-design-vue'
;
import
{
Card
,
Tabs
,
TabPane
,
Col
,
Row
,
RangePicker
,
RadioGroup
,
RadioButton
,
Select
}
from
'ant-design-vue'
;
import
{
BasicModal
,
useModalInner
}
from
'@/components/Modal'
;
import
{
BasicModal
,
useModal
,
useModalInner
}
from
'@/components/Modal'
;
import
{
BasicForm
,
useForm
}
from
'@/components/Form'
;
import
{
BasicForm
,
useForm
}
from
'@/components/Form'
;
import
{
BasicTable
,
useTable
,
TableAction
}
from
'@/components/Table'
;
import
{
BasicTable
,
useTable
,
TableAction
}
from
'@/components/Table'
;
import
{
import
{
...
@@ -79,13 +83,17 @@
...
@@ -79,13 +83,17 @@
import
{
downloadByData
}
from
"@/utils/file/download"
;
import
{
downloadByData
}
from
"@/utils/file/download"
;
import
{
Alert
}
from
'ant-design-vue'
;
import
{
Alert
}
from
'ant-design-vue'
;
import
Icon
from
'@/components/Icon/Icon.vue'
;
import
Icon
from
'@/components/Icon/Icon.vue'
;
import
LookLogModal
from
'./LookLogModal.vue'
import
LookSQLModal
from
'./LookSQLModal.vue'
defineOptions
({
name
:
'AccountModal'
});
defineOptions
({
name
:
'AccountModal'
});
const
emit
=
defineEmits
([
'success'
,
'register'
]);
const
emit
=
defineEmits
([
'success'
,
'register'
]);
const
{
createMessage
}
=
useMessage
();
const
{
createMessage
}
=
useMessage
();
const
getTitle
=
computed
(()
=>
(
'DDL详情'
));
const
getTitle
=
computed
(()
=>
(
'DDL详情'
));
//获取接口数据并放在下拉框里(这里是打开了一个弹框)
const
textAreaData1
=
ref
(
'alter table gxx3 drop column T1'
)
const
textAreaData2
=
ref
(
''
)
const
[
registerLookSQLModal
,
{
openModal
:
openLookSQLModal
}]
=
useModal
();
const
[
registerLookLogModal
,
{
openModal
:
openLookLogModal
}]
=
useModal
();
const
[
registerForm1
]
=
useForm
({
const
[
registerForm1
]
=
useForm
({
labelWidth
:
100
,
labelWidth
:
100
,
baseColProps
:
{
lg
:
12
,
md
:
24
},
baseColProps
:
{
lg
:
12
,
md
:
24
},
...
@@ -104,7 +112,7 @@
...
@@ -104,7 +112,7 @@
span
:
23
,
span
:
23
,
},
},
});
});
const
[
registerForm3
]
=
useForm
({
const
[
registerForm3
,{
setFieldsValue
:
setFieldsValue3
}
]
=
useForm
({
labelWidth
:
100
,
labelWidth
:
100
,
baseColProps
:
{
lg
:
12
,
md
:
24
},
baseColProps
:
{
lg
:
12
,
md
:
24
},
schemas
:
DDLDetailFormSchema3
,
schemas
:
DDLDetailFormSchema3
,
...
@@ -133,6 +141,7 @@
...
@@ -133,6 +141,7 @@
showIndexColumn
:
false
,
showIndexColumn
:
false
,
bordered
:
true
,
bordered
:
true
,
});
});
//初始化弹框
//初始化弹框
const
[
registerModal
,
{
setModalProps
,
closeModal
}]
=
useModalInner
(
async
(
data
)
=>
{
const
[
registerModal
,
{
setModalProps
,
closeModal
}]
=
useModalInner
(
async
(
data
)
=>
{
setModalProps
({
confirmLoading
:
false
,
showOkBtn
:
false
,
showCancelBtn
:
false
});
setModalProps
({
confirmLoading
:
false
,
showOkBtn
:
false
,
showCancelBtn
:
false
});
...
@@ -147,11 +156,49 @@
...
@@ -147,11 +156,49 @@
/**查看SQL 按钮*/
/**查看SQL 按钮*/
function
lookSQLButton
(){
function
lookSQLButton
(){
createMessage
.
success
(
'查看SQL'
)
openLookSQLModal
(
true
,{}
)
}
}
/**查看日志 按钮*/
/**查看日志 按钮*/
function
lookLogButton
(){
function
lookLogButton
(){
createMessage
.
success
(
'查看日志'
)
openLookLogModal
(
true
,{})
}
/**复制 按钮*/
function
copyButton
(){
createMessage
.
success
(
'复制成功!'
)
}
/**获取当前运行版本 按钮*/
function
getCurrentVersionButton
(){
const
params
=
{
taskVersion
:
'V1'
}
setFieldsValue3
({
...
params
})
}
/**忽略 按钮*/
function
ignoreButton
(){
createMessage
.
success
(
'忽略成功!'
)
}
/**取消 按钮*/
function
cancelButton
(){
createMessage
.
success
(
'取消成功!'
)
}
/**保存 按钮*/
function
saveButton
(){
createMessage
.
success
(
'保存成功!'
)
}
/**保存并更新 按钮*/
function
saveAndUpdateButton
(){
createMessage
.
success
(
'更新成功!'
)
}
}
</
script
>
</
script
>
src/views/realTimeSync/taskOperationsMaintenance/LookAllDataModal.vue
View file @
3131f4fb
<
template
>
<
template
>
<BasicModal
width=
"40%"
v-bind=
"$attrs"
@
register=
"registerModal"
:title=
"getTitle"
@
ok=
"handleSubmit"
>
<BasicModal
width=
"40%"
v-bind=
"$attrs"
@
register=
"registerModal"
:title=
"getTitle"
@
ok=
"handleSubmit"
>
<textarea
style=
"width: 100%;margin-top:20px;border: 1px solid #ccc;"
rows=
"22"
v-model=
"textAreaData"
/>
<textarea
style=
"width: 100%;margin-top:20px;border: 1px solid #ccc;"
disabled
readonly
rows=
"22"
v-model=
"textAreaData"
/>
</BasicModal>
</BasicModal>
</
template
>
</
template
>
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
...
@@ -43,7 +43,7 @@
...
@@ -43,7 +43,7 @@
//初始化弹框
//初始化弹框
const
[
registerModal
,
{
setModalProps
,
closeModal
}]
=
useModalInner
(
async
(
data
)
=>
{
const
[
registerModal
,
{
setModalProps
,
closeModal
}]
=
useModalInner
(
async
(
data
)
=>
{
setModalProps
({
confirmLoading
:
false
});
setModalProps
({
confirmLoading
:
false
,
showOkBtn
:
false
});
});
});
/**确定按钮*/
/**确定按钮*/
...
...
src/views/realTimeSync/taskOperationsMaintenance/LookSQLModal.vue
0 → 100644
View file @
3131f4fb
<
template
>
<BasicModal
width=
"40%"
v-bind=
"$attrs"
@
register=
"registerModal"
:title=
"getTitle"
@
ok=
"handleSubmit"
>
<textarea
style=
"width: 100%;margin-top:20px;border: 1px solid #ccc;"
disabled
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
{
}
from
'./maintenance.data'
;
import
{
}
from
'./maintenanceData'
;
import
{
useMessage
}
from
'@/hooks/web/useMessage'
;
defineOptions
({
name
:
'AccountModal'
});
const
emit
=
defineEmits
([
'success'
,
'register'
]);
const
{
createMessage
}
=
useMessage
();
const
getTitle
=
computed
(()
=>
(
'查看SQL'
));
const
textAreaData
=
ref
(
'{
\
n'
+
' "after":{
\
n'
+
' "id":1,
\
n'
+
' "age_new":"1",
\
n'
+
' "dgd_test":"fd",
\
n'
+
' "uiui":"fd",
\
n'
+
' "dfgghj":"fd"
\
n'
+
' }
\
n'
+
' "before":{
\
n'
+
' "id":1,
\
n'
+
' "age_new":"1",
\
n'
+
' "dgd_test":"fd",
\
n'
+
' "uiui":"fd",
\
n'
+
' "dfgghj":"fd"
\
n'
+
' }
\
n'
+
' "table_name":"test_table",
\
n'
+
' "table_id":1,
\
n'
+
' "table_field":"age_new",
\
n'
+
' "table_field_type":"int",
\
n'
+
' "table_field_comment":"1",
\
n'
+
' "table_field_value":"1",
\
n'
+
' "table_field_value_new":"2",
\
n'
+
' "table_field_value_old":"1",
\
n'
+
'}'
)
//初始化弹框
const
[
registerModal
,
{
setModalProps
,
closeModal
}]
=
useModalInner
(
async
(
data
)
=>
{
setModalProps
({
confirmLoading
:
false
,
showOkBtn
:
false
});
});
/**确定按钮*/
async
function
handleSubmit
()
{
closeModal
()
}
</
script
>
src/views/realTimeSync/taskOperationsMaintenance/ResetNameModal.vue
0 → 100644
View file @
3131f4fb
<
template
>
<BasicModal
width=
"40%"
v-bind=
"$attrs"
@
register=
"registerModal"
:title=
"getTitle"
@
ok=
"handleSubmit"
>
<BasicForm
@
register=
"registerForm"
/>
</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
{
resetNameFormSchema
}
from
'./maintenance.data'
;
import
{
useMessage
}
from
'@/hooks/web/useMessage'
;
defineOptions
({
name
:
'AccountModal'
});
const
emit
=
defineEmits
([
'success'
,
'register'
]);
const
{
createMessage
}
=
useMessage
();
const
getTitle
=
computed
(()
=>
(
'重命名'
));
//获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单
const
[
registerForm
,
{
setFieldsValue
,
updateSchema
,
resetFields
,
validate
}]
=
useForm
({
labelWidth
:
100
,
baseColProps
:
{
lg
:
12
,
md
:
24
},
schemas
:
resetNameFormSchema
,
showActionButtonGroup
:
false
,
actionColOptions
:
{
span
:
23
,
},
});
//初始化弹框
const
[
registerModal
,
{
setModalProps
,
closeModal
}]
=
useModalInner
(
async
(
data
)
=>
{
resetFields
();
setModalProps
({
confirmLoading
:
false
});
setFieldsValue
({
...
data
.
record
});
});
/**提交按钮*/
function
handleSubmit
()
{
createMessage
.
success
(
'导入成功!'
)
closeModal
();
}
</
script
>
src/views/realTimeSync/taskOperationsMaintenance/VersionModal.vue
View file @
3131f4fb
...
@@ -3,23 +3,53 @@
...
@@ -3,23 +3,53 @@
<div
style=
"font-weight: bold"
>
异常数据Schema信息
</div>
<div
style=
"font-weight: bold"
>
异常数据Schema信息
</div>
<div
style=
"display:flex;width: 100%"
>
<div
style=
"display:flex;width: 100%"
>
<div>
<div>
<Icon
icon=
"majesticons:table"
:size=
"15"
:color=
"'#1091FE'"
/>
<div
style=
"display: flex;justify-content: space-between;margin-top: 10px"
>
gxx.gxx3 异常数据版本:version8
<div>
<Icon
icon=
"majesticons:table"
:size=
"15"
:color=
"'#1091FE'"
/>
gxx.gxx3
</div>
<div
style=
"margin-right: 10px"
>
异常数据版本:version8
</div>
</div>
<BasicTable
@
register=
"registerTable1"
>
<BasicTable
@
register=
"registerTable1"
>
<template
#
fieldName=
"
{ text, record }">
<template
#
fieldName=
"
{ text, record }">
<span
v-if=
"text === 'school'"
style=
"color:red;"
>
{{
text
}}
</span>
<span
v-if=
"text === 'school'"
style=
"color:red;"
>
{{
text
}}
</span>
<span
v-else
>
{{
text
}}
</span>
<span
v-else
>
{{
text
}}
</span>
</
template
>
</
template
>
<
template
#
fieldType=
"{ text, record }"
>
<
template
#
fieldType=
"{ text, record }"
>
<span
v-if=
"text === 'VARCHAR(100)'"
style=
"color:red;"
>
{{
text
}}
</span>
<span
v-if=
"
record.fieldName === 'school' &&
text === 'VARCHAR(100)'"
style=
"color:red;"
>
{{
text
}}
</span>
<span
v-else
>
{{
text
}}
</span>
<span
v-else
>
{{
text
}}
</span>
</
template
>
</
template
>
</BasicTable>
</BasicTable>
</div>
</div>
<div>
<div>
<Icon
icon=
"majesticons:table"
:size=
"15"
:color=
"'#1091FE'"
/>
<div
style=
"display: flex;justify-content: space-between;align-items: center"
>
gxx.gxx3 异常数据版本:version8
<div>
<BasicTable
@
register=
"registerTable2"
/>
<Icon
icon=
"majesticons:table"
:size=
"15"
:color=
"'#1091FE'"
/>
gxx.gxx3
</div>
<div
style=
"margin-right: 10px"
>
异常数据版本:
<Select
v-model:value=
"optionValue"
show-search
placeholder=
"请选择版本"
style=
"width: 100px;margin-left: 10px"
:options=
"options"
@
change=
"handleChange"
></Select>
</div>
</div>
<BasicTable
@
register=
"registerTable2"
>
<
template
#
fieldName=
"{ text, record }"
>
<span
v-if=
"text === '-'"
style=
"color:red;"
>
{{
text
}}
</span>
<span
v-else
>
{{
text
}}
</span>
</
template
>
<
template
#
fieldType=
"{ text, record }"
>
<span
v-if=
"text === '-'"
style=
"color:red;"
>
{{
text
}}
</span>
<span
v-else
>
{{
text
}}
</span>
</
template
>
</BasicTable>
</div>
</div>
</div>
</div>
<div
style=
"display: flex;margin-top: 20px;"
>
<div
style=
"display: flex;margin-top: 20px;"
>
...
@@ -44,11 +74,47 @@
...
@@ -44,11 +74,47 @@
import
{
useMessage
}
from
'@/hooks/web/useMessage'
;
import
{
useMessage
}
from
'@/hooks/web/useMessage'
;
import
{
BasicTable
,
useTable
,
TableAction
}
from
'@/components/Table'
;
import
{
BasicTable
,
useTable
,
TableAction
}
from
'@/components/Table'
;
import
Icon
from
'@/components/Icon/Icon.vue'
;
import
Icon
from
'@/components/Icon/Icon.vue'
;
import
{
Select
}
from
'ant-design-vue'
;
defineOptions
({
name
:
'AccountModal'
});
defineOptions
({
name
:
'AccountModal'
});
const
emit
=
defineEmits
([
'success'
,
'register'
]);
const
emit
=
defineEmits
([
'success'
,
'register'
]);
const
{
createMessage
}
=
useMessage
();
const
{
createMessage
}
=
useMessage
();
const
getTitle
=
computed
(()
=>
(
'Schema版本信息'
));
const
getTitle
=
computed
(()
=>
(
'Schema版本信息'
));
const
options
=
ref
([
{
label
:
'version1'
,
value
:
'1'
},
{
label
:
'version2'
,
value
:
'2'
},
{
label
:
'version3'
,
value
:
'3'
},
{
label
:
'version4'
,
value
:
'4'
},
{
label
:
'version5'
,
value
:
'5'
},
{
label
:
'version6'
,
value
:
'6'
},
{
label
:
'version7'
,
value
:
'7'
},
{
label
:
'version8'
,
value
:
'8'
},
])
const
optionValue
=
ref
(
'1'
)
const
textAreaData
=
ref
(
'schema版本:2024–01–18 21:04:34 version8
\
n'
+
const
textAreaData
=
ref
(
'schema版本:2024–01–18 21:04:34 version8
\
n'
+
'2024–01–03 21:04:29 (2024–01–03 21:04:30) alter table gxx3 change school1 school varchar(100)
\
n'
+
'2024–01–03 21:04:29 (2024–01–03 21:04:30) alter table gxx3 change school1 school varchar(100)
\
n'
+
'2024–01–04 19:22:51 (2024–01–04 19:22:51) alter table gxx3 add column T1 int
\
n'
+
'2024–01–04 19:22:51 (2024–01–04 19:22:51) alter table gxx3 add column T1 int
\
n'
+
...
...
src/views/realTimeSync/taskOperationsMaintenance/index.vue
View file @
3131f4fb
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
<div
class=
"card_item"
>
<div
class=
"card_item"
>
<Icon
icon=
"eos-icons:database"
:size=
"30"
:color=
"'#1091FE'"
/>
<Icon
icon=
"eos-icons:database"
:size=
"30"
:color=
"'#1091FE'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
50
</div>
<div
class=
"dataNum"
>
9
</div>
<div
class=
"dataTitle"
>
所有任务
</div>
<div
class=
"dataTitle"
>
所有任务
</div>
</div>
</div>
</div>
</div>
...
@@ -41,7 +41,7 @@
...
@@ -41,7 +41,7 @@
<div
class=
"card_item"
>
<div
class=
"card_item"
>
<Icon
icon=
"line-md:loading-twotone-loop"
:size=
"30"
:color=
"'rgb(81, 160, 248)'"
/>
<Icon
icon=
"line-md:loading-twotone-loop"
:size=
"30"
:color=
"'rgb(81, 160, 248)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
10
</div>
<div
class=
"dataNum"
>
6
</div>
<div
class=
"dataTitle"
>
进行中
</div>
<div
class=
"dataTitle"
>
进行中
</div>
</div>
</div>
</div>
</div>
...
@@ -50,7 +50,7 @@
...
@@ -50,7 +50,7 @@
<div
class=
"card_item"
>
<div
class=
"card_item"
>
<Icon
icon=
"line-md:close-circle-filled"
:size=
"30"
:color=
"'rgb(212, 115, 113)'"
/>
<Icon
icon=
"line-md:close-circle-filled"
:size=
"30"
:color=
"'rgb(212, 115, 113)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
9
</div>
<div
class=
"dataNum"
>
1
</div>
<div
class=
"dataTitle"
>
失败
</div>
<div
class=
"dataTitle"
>
失败
</div>
</div>
</div>
</div>
</div>
...
@@ -59,7 +59,7 @@
...
@@ -59,7 +59,7 @@
<div
class=
"card_item"
>
<div
class=
"card_item"
>
<Icon
icon=
"line-md:minus-circle-filled"
:size=
"30"
:color=
"'rgb(234, 150, 0)'"
/>
<Icon
icon=
"line-md:minus-circle-filled"
:size=
"30"
:color=
"'rgb(234, 150, 0)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
30
</div>
<div
class=
"dataNum"
>
1
</div>
<div
class=
"dataTitle"
>
停止
</div>
<div
class=
"dataTitle"
>
停止
</div>
</div>
</div>
</div>
</div>
...
@@ -119,6 +119,8 @@
...
@@ -119,6 +119,8 @@
</
template
>
</
template
>
</BasicTable>
</BasicTable>
</div>
</div>
<!-- 重命名 弹窗-->
<ResetNameModal
@
register=
"registerResetNameModal"
@
success=
"handleSuccess"
/>
</div>
</div>
</template>
</template>
...
@@ -138,6 +140,7 @@
...
@@ -138,6 +140,7 @@
import
{
tableData
,
TreeData
}
from
'./maintenanceData'
import
{
tableData
,
TreeData
}
from
'./maintenanceData'
import
{
BasicForm
,
useForm
}
from
'@/components/Form'
;
import
{
BasicForm
,
useForm
}
from
'@/components/Form'
;
import
{
useECharts
}
from
'@/hooks/web/useECharts'
;
import
{
useECharts
}
from
'@/hooks/web/useECharts'
;
import
ResetNameModal
from
'./ResetNameModal.vue'
defineOptions
({
name
:
'AccountManagement'
});
defineOptions
({
name
:
'AccountManagement'
});
const
chartRef
=
ref
<
HTMLDivElement
|
null
>
(
null
);
const
chartRef
=
ref
<
HTMLDivElement
|
null
>
(
null
);
...
@@ -152,10 +155,12 @@
...
@@ -152,10 +155,12 @@
setOptions
({
setOptions
({
tooltip
:
{
tooltip
:
{
trigger
:
'item'
,
trigger
:
'item'
,
formatter
:
'{b}: {c} ({d}%)'
,
},
},
legend
:
{
legend
:
{
bottom
:
'1%'
,
bottom
:
'1%'
,
left
:
'center'
,
left
:
'center'
,
show
:
false
,
},
},
series
:
[
series
:
[
{
{
...
@@ -184,10 +189,10 @@
...
@@ -184,10 +189,10 @@
show
:
false
,
show
:
false
,
},
},
data
:
[
data
:
[
{
value
:
1
},
{
value
:
1
,
name
:
'初始化'
},
{
value
:
10
},
{
value
:
6
,
name
:
'进行中'
},
{
value
:
9
},
{
value
:
1
,
name
:
'失败'
},
{
value
:
30
},
{
value
:
1
,
name
:
'停止'
},
],
],
animationType
:
'scale'
,
animationType
:
'scale'
,
animationEasing
:
'exponentialInOut'
,
animationEasing
:
'exponentialInOut'
,
...
@@ -198,6 +203,7 @@
...
@@ -198,6 +203,7 @@
],
],
});
});
}
}
const
[
registerResetNameModal
,
{
openModal
:
openResetNameModal
}]
=
useModal
();
const
[
registerTable
,
{
reload
,
getForm
,
getRowSelection
}]
=
useTable
({
const
[
registerTable
,
{
reload
,
getForm
,
getRowSelection
}]
=
useTable
({
title
:
''
,
title
:
''
,
api
:
async
(
params
)
=>
{
api
:
async
(
params
)
=>
{
...
@@ -253,7 +259,9 @@
...
@@ -253,7 +259,9 @@
/**修改 按钮*/
/**修改 按钮*/
function
resetNameButton
(
record
){
function
resetNameButton
(
record
){
openResetNameModal
(
true
,{
record
})
}
}
...
@@ -269,12 +277,12 @@
...
@@ -269,12 +277,12 @@
/**启动 按钮*/
/**启动 按钮*/
function
startButton
(
record
){
function
startButton
(
record
){
createMessage
.
success
(
'启动成功!'
)
}
}
/**暂停 按钮*/
/**暂停 按钮*/
function
stopButton
(
record
){
function
stopButton
(
record
){
createMessage
.
success
(
'暂停成功!'
)
}
}
/** 转成树 */
/** 转成树 */
...
...
src/views/realTimeSync/taskOperationsMaintenance/maintenance.data.ts
View file @
3131f4fb
...
@@ -107,6 +107,23 @@ export const selectFormSchema: FormSchema[] = [
...
@@ -107,6 +107,23 @@ export const selectFormSchema: FormSchema[] = [
},
},
},
},
];
];
/**首页-重命名表单*/
export
const
resetNameFormSchema
:
FormSchema
[]
=
[
{
field
:
'taskName'
,
label
:
'任务名称'
,
component
:
'Input'
,
rules
:
[
{
required
:
true
,
message
:
'请输入任务名称'
,
},
],
componentProps
:
{
placeholder
:
'请输入任务名称'
,
}
},
];
/**详情页-table列表*/
/**详情页-table列表*/
export
const
detailColumns
:
BasicColumn
[]
=
[
export
const
detailColumns
:
BasicColumn
[]
=
[
{
{
...
...
src/views/realTimeSync/taskOperationsMaintenance/maintenanceData.ts
View file @
3131f4fb
...
@@ -137,7 +137,7 @@ export const tableData: any[] =[
...
@@ -137,7 +137,7 @@ export const tableData: any[] =[
target
:
'MYSQL'
,
target
:
'MYSQL'
,
owner
:
'admin'
,
owner
:
'admin'
,
taskVersion
:
'1.0'
,
taskVersion
:
'1.0'
,
taskStatus
:
'
运行中
'
,
taskStatus
:
'
初始化
'
,
latency
:
'0.00s'
,
latency
:
'0.00s'
,
dataCheckDifference24h
:
'是'
,
dataCheckDifference24h
:
'是'
,
latestEventTime
:
'2024-01-01 08:10:00'
,
latestEventTime
:
'2024-01-01 08:10:00'
,
...
@@ -152,7 +152,7 @@ export const tableData: any[] =[
...
@@ -152,7 +152,7 @@ export const tableData: any[] =[
target
:
'MYSQL'
,
target
:
'MYSQL'
,
owner
:
'admin'
,
owner
:
'admin'
,
taskVersion
:
'2.0'
,
taskVersion
:
'2.0'
,
taskStatus
:
'
运行中
'
,
taskStatus
:
'
失败
'
,
latency
:
'0.00s'
,
latency
:
'0.00s'
,
dataCheckDifference24h
:
'是'
,
dataCheckDifference24h
:
'是'
,
latestEventTime
:
'2024-01-01 08:10:00'
,
latestEventTime
:
'2024-01-01 08:10:00'
,
...
@@ -167,7 +167,7 @@ export const tableData: any[] =[
...
@@ -167,7 +167,7 @@ export const tableData: any[] =[
target
:
'MYSQL'
,
target
:
'MYSQL'
,
owner
:
'admin'
,
owner
:
'admin'
,
taskVersion
:
'1.0'
,
taskVersion
:
'1.0'
,
taskStatus
:
'
运行中
'
,
taskStatus
:
'
停止
'
,
latency
:
'0.00s'
,
latency
:
'0.00s'
,
dataCheckDifference24h
:
'是'
,
dataCheckDifference24h
:
'是'
,
latestEventTime
:
'2024-01-01 08:10:00'
,
latestEventTime
:
'2024-01-01 08:10:00'
,
...
@@ -423,7 +423,7 @@ export const detailTableData3: any[] =[
...
@@ -423,7 +423,7 @@ export const detailTableData3: any[] =[
involvedTable
:
'wuqi_performance_t...'
,
involvedTable
:
'wuqi_performance_t...'
,
involvedOperation
:
'C'
,
involvedOperation
:
'C'
,
syncPoint
:
'mysql-bin.000202,6...'
,
syncPoint
:
'mysql-bin.000202,6...'
,
processingStatus
:
'
未处理
'
processingStatus
:
'
更新成功
'
},
},
]
]
/**详情页列表 数据4*/
/**详情页列表 数据4*/
...
@@ -455,7 +455,7 @@ export const detailTableData4: any[] =[
...
@@ -455,7 +455,7 @@ export const detailTableData4: any[] =[
sourceInvolvedTable
:
'gxx.gxx3'
,
sourceInvolvedTable
:
'gxx.gxx3'
,
taskVersionAtDdl
:
'V3'
,
taskVersionAtDdl
:
'V3'
,
ddlType
:
'删除字段'
,
ddlType
:
'删除字段'
,
status
:
'
未处理
'
,
status
:
'
已忽略
'
,
processingType
:
'自动'
processingType
:
'自动'
},
},
{
{
...
...
src/views/realTimeSync/taskOperationsMaintenance/workDetail.vue
View file @
3131f4fb
...
@@ -280,7 +280,7 @@
...
@@ -280,7 +280,7 @@
<div
class=
"card_item"
>
<div
class=
"card_item"
>
<Icon
icon=
"eos-icons:database"
:size=
"30"
:color=
"'rgb(76, 87, 215)'"
/>
<Icon
icon=
"eos-icons:database"
:size=
"30"
:color=
"'rgb(76, 87, 215)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
10
</div>
<div
class=
"dataNum"
>
8
</div>
<div
class=
"dataTitle"
>
所有状态
</div>
<div
class=
"dataTitle"
>
所有状态
</div>
</div>
</div>
</div>
</div>
...
@@ -289,7 +289,7 @@
...
@@ -289,7 +289,7 @@
<div
class=
"card_item"
>
<div
class=
"card_item"
>
<Icon
icon=
"ri:hourglass-fill"
:size=
"30"
:color=
"'rgb(141, 141, 141)'"
/>
<Icon
icon=
"ri:hourglass-fill"
:size=
"30"
:color=
"'rgb(141, 141, 141)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
6
</div>
<div
class=
"dataNum"
>
5
</div>
<div
class=
"dataTitle"
>
未处理
</div>
<div
class=
"dataTitle"
>
未处理
</div>
</div>
</div>
</div>
</div>
...
@@ -307,7 +307,7 @@
...
@@ -307,7 +307,7 @@
<div
class=
"card_item"
>
<div
class=
"card_item"
>
<Icon
icon=
"line-md:close-circle-filled"
:size=
"30"
:color=
"'rgb(1, 157, 93)'"
/>
<Icon
icon=
"line-md:close-circle-filled"
:size=
"30"
:color=
"'rgb(1, 157, 93)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
2
</div>
<div
class=
"dataNum"
>
1
</div>
<div
class=
"dataTitle"
>
处理成功
</div>
<div
class=
"dataTitle"
>
处理成功
</div>
</div>
</div>
</div>
</div>
...
@@ -325,7 +325,7 @@
...
@@ -325,7 +325,7 @@
<div
class=
"card_item"
>
<div
class=
"card_item"
>
<Icon
icon=
"line-md:minus-circle-filled"
:size=
"30"
:color=
"'rgb(228, 90, 93)'"
/>
<Icon
icon=
"line-md:minus-circle-filled"
:size=
"30"
:color=
"'rgb(228, 90, 93)'"
/>
<div
class=
"card_itemInfo"
>
<div
class=
"card_itemInfo"
>
<div
class=
"dataNum"
>
2
</div>
<div
class=
"dataNum"
>
1
</div>
<div
class=
"dataTitle"
>
处理失败
</div>
<div
class=
"dataTitle"
>
处理失败
</div>
</div>
</div>
</div>
</div>
...
@@ -366,7 +366,7 @@
...
@@ -366,7 +366,7 @@
},
},
{
{
label: '忽略',
label: '忽略',
onClick:
detail
Button.bind(null, record),
onClick:
ignore
Button.bind(null, record),
},
},
]"
]"
/>
/>
...
@@ -676,12 +676,12 @@
...
@@ -676,12 +676,12 @@
},
},
});
});
const
[
registerForm3
]
=
useForm
({
const
[
registerForm3
]
=
useForm
({
labelWidth
:
100
,
labelWidth
:
100
,
schemas
:
detailFormSchema3
,
schemas
:
detailFormSchema3
,
showActionButtonGroup
:
false
,
showActionButtonGroup
:
false
,
actionColOptions
:
{
actionColOptions
:
{
span
:
23
,
span
:
23
,
},
},
});
});
/** 执行统计echarts渲染*/
/** 执行统计echarts渲染*/
function
getEchartsData
()
{
function
getEchartsData
()
{
...
@@ -791,14 +791,16 @@
...
@@ -791,14 +791,16 @@
setOptions3
({
setOptions3
({
tooltip
:
{
tooltip
:
{
trigger
:
'item'
,
trigger
:
'item'
,
formatter
:
'{b}: {c} ({d}%)'
,
},
},
legend
:
{
legend
:
{
bottom
:
'1%'
,
bottom
:
'1%'
,
left
:
'center'
,
left
:
'center'
,
show
:
false
,
},
},
series
:
[
series
:
[
{
{
color
:
[
'rgb(
226, 66, 69)'
,
'rgb(245, 128, 41)'
,
'rgb(5, 158, 96)'
,
'rgb(56, 113, 212)'
,
'rgb(241, 172, 173)'
,,
'rgb(52, 110
, 212)'
,,
'rgb(101, 80, 230)'
],
color
:
[
'rgb(
141, 141, 141)'
,
'rgb(245, 134, 53)'
,
'rgb(1, 157, 93)'
,
'rgb(141, 198, 252)'
,
'rgb(228, 90, 93)'
,,
'rgb(54, 111
, 212)'
,,
'rgb(101, 80, 230)'
],
name
:
'访问来源'
,
name
:
'访问来源'
,
type
:
'pie'
,
type
:
'pie'
,
radius
:
[
'50%'
,
'70%'
],
radius
:
[
'50%'
,
'70%'
],
...
@@ -823,13 +825,13 @@
...
@@ -823,13 +825,13 @@
show
:
false
,
show
:
false
,
},
},
data
:
[
data
:
[
{
value
:
5
},
{
value
:
5
,
name
:
'未处理'
},
{
value
:
1
},
{
value
:
1
,
name
:
'已忽略'
},
{
value
:
1
},
{
value
:
1
,
name
:
'处理成功'
},
{
value
:
0
},
{
value
:
0
,
name
:
'更新中'
},
{
value
:
2
},
{
value
:
1
,
name
:
'处理失败'
},
{
value
:
0
},
{
value
:
0
,
name
:
'审批中'
},
{
value
:
0
},
{
value
:
0
,
name
:
'审批通过待处理'
},
],
],
animationType
:
'scale'
,
animationType
:
'scale'
,
animationEasing
:
'exponentialInOut'
,
animationEasing
:
'exponentialInOut'
,
...
@@ -1098,7 +1100,7 @@
...
@@ -1098,7 +1100,7 @@
series
:
[
series
:
[
{
{
color
:
[
'rgb(82, 114, 196)'
,
'rgb(148, 203, 121)'
],
color
:
[
'rgb(82, 114, 196)'
,
'rgb(148, 203, 121)'
],
name
:
'
访问来源
'
,
name
:
'
操作分布
'
,
type
:
'pie'
,
type
:
'pie'
,
radius
:
[
'50%'
,
'70%'
],
radius
:
[
'50%'
,
'70%'
],
avoidLabelOverlap
:
false
,
avoidLabelOverlap
:
false
,
...
@@ -1236,7 +1238,7 @@
...
@@ -1236,7 +1238,7 @@
series
:
[
series
:
[
{
{
color
:
[
'rgb(49, 144, 222)'
,
'rgb(84, 162, 227)'
,
'rgb(112, 177, 231)'
],
color
:
[
'rgb(49, 144, 222)'
,
'rgb(84, 162, 227)'
,
'rgb(112, 177, 231)'
],
name
:
'
访问来源
'
,
name
:
'
Topic同步数量排行
'
,
type
:
'pie'
,
type
:
'pie'
,
radius
:
[
'0%'
,
'100%'
],
radius
:
[
'0%'
,
'100%'
],
avoidLabelOverlap
:
false
,
avoidLabelOverlap
:
false
,
...
...
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