Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sample-form-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
sample-form-platform
Commits
53c04ff5
Commit
53c04ff5
authored
May 14, 2023
by
“yiyousong”
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:新增系统设置板块
parent
bffdb561
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1366 additions
and
3 deletions
+1366
-3
sample-form-manager-ui/admin/src/api/system.js
sample-form-manager-ui/admin/src/api/system.js
+94
-0
sample-form-manager-ui/admin/src/pages/layouts/Layouts.vue
sample-form-manager-ui/admin/src/pages/layouts/Layouts.vue
+1
-1
sample-form-manager-ui/admin/src/pages/layouts/components/Header.vue
...-manager-ui/admin/src/pages/layouts/components/Header.vue
+6
-1
sample-form-manager-ui/admin/src/pages/system/System.vue
sample-form-manager-ui/admin/src/pages/system/System.vue
+44
-0
sample-form-manager-ui/admin/src/pages/system/parameter/Parameter.vue
...manager-ui/admin/src/pages/system/parameter/Parameter.vue
+265
-0
sample-form-manager-ui/admin/src/pages/system/parameter/modal/AddParameter.vue
...i/admin/src/pages/system/parameter/modal/AddParameter.vue
+198
-0
sample-form-manager-ui/admin/src/pages/system/systemlogs/SystemLogs.vue
...nager-ui/admin/src/pages/system/systemlogs/SystemLogs.vue
+175
-0
sample-form-manager-ui/admin/src/pages/system/task/TaskSet.vue
...e-form-manager-ui/admin/src/pages/system/task/TaskSet.vue
+286
-0
sample-form-manager-ui/admin/src/pages/system/task/modal/AddTask.vue
...-manager-ui/admin/src/pages/system/task/modal/AddTask.vue
+255
-0
sample-form-manager-ui/admin/src/router/index.js
sample-form-manager-ui/admin/src/router/index.js
+42
-1
No files found.
sample-form-manager-ui/admin/src/api/system.js
0 → 100644
View file @
53c04ff5
// 系统api
import
request
from
"
@/utils/request
"
;
/**
* 系统参数
*/
// 获取系统参数列表
export
const
getParamList
=
(
data
)
=>
{
return
request
({
url
:
`/sampleform/param/list`
,
method
:
"
post
"
,
data
,
});
};
// 查看系统参数
export
const
getParamInfo
=
(
params
)
=>
{
return
request
({
url
:
`/sampleform/param/info`
,
method
:
"
get
"
,
params
,
});
};
// 保存编辑系统参数
export
const
saveParam
=
(
data
)
=>
{
return
request
({
url
:
`/sampleform/param/save`
,
method
:
"
post
"
,
data
,
});
};
// 删除系统参数
export
const
delParam
=
(
params
)
=>
{
return
request
({
url
:
`/sampleform/param/delete`
,
method
:
"
get
"
,
params
,
});
};
/**
* 任务信息
*/
// 获取任务信息列表
export
const
getTaskList
=
(
data
)
=>
{
return
request
({
url
:
`/sampleform/task/list`
,
method
:
"
post
"
,
data
,
});
};
// 查看任务信息
export
const
getTaskInfo
=
(
params
)
=>
{
return
request
({
url
:
`/sampleform/task/info`
,
method
:
"
get
"
,
params
,
});
};
// 保存编辑任务信息
export
const
saveTask
=
(
data
)
=>
{
return
request
({
url
:
`/sampleform/task/save`
,
method
:
"
post
"
,
data
,
});
};
// 删除任务信息
export
const
delTask
=
(
params
)
=>
{
return
request
({
url
:
`/sampleform/task/delete`
,
method
:
"
get
"
,
params
,
});
};
/**
* 操作日志
*/
// 获取操作日志
export
const
getlogsList
=
(
data
)
=>
{
return
request
({
url
:
`/sampleform/oper/log/list`
,
method
:
"
post
"
,
data
,
});
};
// 查看操作日志
export
const
getlog
=
(
params
)
=>
{
return
request
({
url
:
`/sampleform/oper/log/info`
,
method
:
"
get
"
,
params
,
});
};
sample-form-manager-ui/admin/src/pages/layouts/Layouts.vue
View file @
53c04ff5
...
@@ -88,7 +88,7 @@ export default {
...
@@ -88,7 +88,7 @@ export default {
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
.layouts {
.layouts {
width: 100%;
width: 100%;
min-width: 1
50
0px;
min-width: 1
62
0px;
height: 100%;
height: 100%;
padding-bottom: 10px;
padding-bottom: 10px;
// .crumbs {
// .crumbs {
...
...
sample-form-manager-ui/admin/src/pages/layouts/components/Header.vue
View file @
53c04ff5
...
@@ -50,7 +50,12 @@ export default {
...
@@ -50,7 +50,12 @@ export default {
},
},
computed
:
{
computed
:
{
activeMenu
()
{
activeMenu
()
{
return
this
.
$route
.
path
;
const
route
=
this
.
$route
;
const
{
meta
,
path
}
=
route
;
if
(
meta
.
activeMenu
)
{
return
meta
.
activeMenu
;
}
return
path
;
},
},
meuns
()
{
meuns
()
{
return
this
.
$store
.
state
.
menus
;
return
this
.
$store
.
state
.
menus
;
...
...
sample-form-manager-ui/admin/src/pages/system/System.vue
0 → 100644
View file @
53c04ff5
<
template
>
<div
class=
"system flex flexc"
>
<el-tabs
:value=
"activeKey"
@
tab-click=
"changeRouter"
>
<el-tab-pane
label=
"系统参数"
name=
"/system/parameter"
></el-tab-pane>
<el-tab-pane
label=
"任务信息"
name=
"/system/task"
></el-tab-pane>
<el-tab-pane
label=
"操作日志"
name=
"/system/systemlogs"
></el-tab-pane>
</el-tabs>
<div
class=
"system-out-box flex1"
>
<router-view></router-view>
</div>
</div>
</
template
>
<
script
>
export
default
{
computed
:
{
activeKey
()
{
return
this
.
$route
.
path
;
},
},
methods
:
{
changeRouter
(
e
)
{
this
.
$router
.
push
(
e
.
name
);
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
:deep(.el-tabs__nav-scroll) {
padding-left: 15px;
}
.system {
width: 100%;
height: 100%;
.system-out-box {
padding: 0px 15px 15px 15px;
overflow-y: auto;
}
/deep/.ant-tabs-nav-container {
border-bottom: 1px solid #f0f0f0 !important;
}
}
</
style
>
\ No newline at end of file
sample-form-manager-ui/admin/src/pages/system/parameter/Parameter.vue
0 → 100644
View file @
53c04ff5
<
template
>
<div
class=
"parameter"
>
<TableHeader>
<div
slot=
"left"
>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleAdd"
>
新增参数
</el-button
>
<el-button
size=
"small"
type=
"danger"
@
click=
"handleDelAll"
>
批量移除
</el-button
>
</div>
<div
slot=
"right"
class=
"flex"
>
<el-input
size=
"small"
v-model=
"searchVal"
style=
"width: 200px"
class=
"ml10 mr10"
placeholder=
"请输入参数名称搜索"
@
keyup.native.enter=
"handleSearch"
></el-input>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜索
</el-button
>
<el-button
size=
"small"
@
click=
"handleReset"
>
重置
</el-button>
</div>
</TableHeader>
<!-- 表格 -->
<div
class=
"table-content"
>
<el-table
ref=
"multipleTable"
size=
"small"
v-loading=
"loading"
:data=
"tableData"
border
tooltip-effect=
"dark"
style=
"width: 100%"
max-height=
"676px"
:row-key=
"(row) => row.id"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
reserve-selection
type=
"selection"
width=
"55"
align=
"center"
>
</el-table-column>
<el-table-column
type=
"index"
label=
"序号"
width=
"55"
align=
"center"
:index=
"(index) => (current - 1) * size + index + 1"
>
</el-table-column>
<el-table-column
label=
"参数名称"
align=
"center"
prop=
"name"
>
</el-table-column>
<el-table-column
label=
"一级组织"
align=
"center"
prop=
"firstOrganize"
>
</el-table-column>
<el-table-column
label=
"二级组织"
align=
"center"
prop=
"secondOrganize"
>
</el-table-column>
<el-table-column
label=
"参数键"
align=
"center"
prop=
"paramKey"
>
</el-table-column>
<el-table-column
label=
"参数值"
align=
"center"
prop=
"paramValue"
>
</el-table-column>
<el-table-column
label=
"参数有效状态"
align=
"center"
prop=
"validStatus"
>
<template
slot-scope=
"scope"
>
<el-tag
size=
"small"
v-if=
"scope.row.validStatus == 1"
type=
"success"
>
有效
</el-tag
>
<el-tag
size=
"small"
v-else
type=
"info"
>
禁用
</el-tag>
</
template
>
</el-table-column>
<el-table-column
label=
"备注"
align=
"center"
prop=
"remark"
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
width=
"100"
>
<
template
slot-scope=
"scope"
>
<div
class=
"flex jca"
>
<span
class=
"primary pointer"
@
click=
"handleEdit(scope.row)"
>
编辑
</span
>
<span
class=
"delete pointer"
@
click=
"handleDel(scope.row.id)"
>
删除
</span
>
</div>
</
template
>
</el-table-column>
</el-table>
</div>
<div
class=
"pagination"
v-if=
"total"
>
<el-pagination
background
layout=
"total,sizes,prev,pager,next,jumper"
:pager-count=
"5"
:total=
"total"
:current-page=
"current"
:page-size=
"size"
:page-sizes=
"pageSizes"
@
current-change=
"changePagination"
@
size-change=
"changeSize"
>
</el-pagination>
</div>
<!-- 新增参数 -->
<AddParameter
ref=
"AddParameter"
:addVisible.sync=
"addVisible"
:title=
"title"
:dict=
"dict"
@
addSuccess=
"getParamList"
></AddParameter>
</div>
</template>
<
script
>
import
TableHeader
from
"
@/components/TableHeader.vue
"
;
import
AddParameter
from
"
./modal/AddParameter.vue
"
;
import
{
getParamList
,
delParam
}
from
"
@/api/system
"
;
export
default
{
components
:
{
TableHeader
,
AddParameter
,
},
data
()
{
return
{
searchVal
:
""
,
tableData
:
[],
current
:
1
,
size
:
10
,
total
:
10
,
pageSizes
:
[
10
,
20
,
30
,
40
,
50
,
100
,
200
],
loading
:
false
,
selectKeys
:
[],
addVisible
:
false
,
title
:
"
新增参数
"
,
dict
:
{},
// 字典
};
},
created
()
{
this
.
getParamList
();
},
computed
:
{},
methods
:
{
// 系统事项列表
async
getParamList
()
{
this
.
loading
=
true
;
let
res
=
await
getParamList
({
page
:
this
.
current
,
size
:
this
.
size
,
name
:
`%
${
this
.
searchVal
}
%`
,
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
this
.
dict
=
dict
;
if
(
!
data
.
length
&&
this
.
current
>
1
)
{
this
.
current
-=
1
;
this
.
getParamList
();
}
this
.
tableData
=
data
;
this
.
total
=
total
;
this
.
$refs
.
multipleTable
.
bodyWrapper
.
scrollTop
=
0
;
}
this
.
loading
=
false
;
},
// 批量移除
handleDelAll
()
{
if
(
!
this
.
selectKeys
.
length
)
{
this
.
$message
.
warning
(
"
请先勾选数据
"
);
return
;
}
let
ids
=
this
.
selectKeys
.
map
((
v
)
=>
v
.
id
).
join
(
"
,
"
);
this
.
handleDel
(
ids
);
},
// 搜索
handleSearch
()
{
this
.
current
=
1
;
this
.
$refs
.
multipleTable
.
clearSelection
();
this
.
getParamList
();
},
// 重置
handleReset
()
{
this
.
searchVal
=
""
;
this
.
current
=
1
;
this
.
$refs
.
multipleTable
.
clearSelection
();
this
.
getParamList
();
},
// 选中
handleSelectionChange
(
select
)
{
this
.
selectKeys
=
select
;
},
// 翻页
changePagination
(
cur
)
{
this
.
current
=
cur
;
this
.
getParamList
();
},
// 改变没有显示数量
changeSize
(
size
)
{
this
.
size
=
size
;
this
.
getParamList
();
},
// 新增
handleAdd
()
{
this
.
title
=
"
新增参数
"
;
this
.
$refs
.
AddParameter
.
onAdd
();
this
.
addVisible
=
true
;
},
// 编辑
handleEdit
(
row
)
{
this
.
title
=
"
编辑参数
"
;
this
.
$refs
.
AddParameter
.
onEdit
(
row
);
this
.
addVisible
=
true
;
},
// 移除
handleDel
(
id
)
{
this
.
$confirm
(
"
此操作将删除所选数据,是否继续?
"
,
"
系统提示
"
,
{
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
cancelButtonClass
:
"
btn-custom-cancel
"
,
type
:
"
warning
"
,
})
.
then
(
async
()
=>
{
let
res
=
await
delParam
({
id
});
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
getParamList
();
this
.
$refs
.
multipleTable
.
clearSelection
();
this
.
selectKeys
=
[];
}
})
.
catch
(()
=>
{
console
.
log
(
"
取消成功!
"
);
});
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.parameter {
width: 100%;
min-height: 100%;
.short {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.full-name {
color: rgb(172, 170, 170);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
:deep(.el-card) {
height: auto;
}
// .table-content {
// height: 550px;
// }
}
</
style
>
\ No newline at end of file
sample-form-manager-ui/admin/src/pages/system/parameter/modal/AddParameter.vue
0 → 100644
View file @
53c04ff5
<
template
>
<div>
<el-dialog
:title=
"title"
:destroy-on-close=
"true"
:visible.sync=
"Visible"
width=
"30%"
@
close=
"handleClose"
:close-on-click-modal=
"false"
top=
"10vh"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"100px"
>
<el-form-item
label=
"参数名称"
prop=
"name"
>
<el-input
size=
"small"
v-model=
"form.name"
placeholder=
"请输入参数名称"
></el-input>
</el-form-item>
<el-form-item
label=
"一级组织"
prop=
"firstOrganize"
>
<el-input
size=
"small"
v-model=
"form.firstOrganize"
placeholder=
"请输入一级组织"
></el-input>
</el-form-item>
<el-form-item
label=
"二级组织"
prop=
"secondOrganize"
>
<el-input
size=
"small"
v-model=
"form.secondOrganize"
placeholder=
"请输入二级组织"
></el-input>
</el-form-item>
<el-form-item
label=
"参数键"
prop=
"paramKey"
>
<el-input
size=
"small"
v-model=
"form.paramKey"
placeholder=
"请输入参数键"
></el-input>
</el-form-item>
<el-form-item
label=
"参数值"
prop=
"paramValue"
>
<el-input
size=
"small"
v-model=
"form.paramValue"
placeholder=
"请输入参数值"
></el-input>
</el-form-item>
<el-form-item
label=
"参数修改状态"
prop=
"modStatus"
>
<el-select
v-model=
"form.modStatus"
placeholder=
"请选择参数有效状态"
>
<el-option
v-for=
"(v, key) in dict.modStatus"
:key=
"key"
:label=
"v"
:value=
"Number(key)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"展现类型"
prop=
"displayType"
>
<el-select
v-model=
"form.displayType"
placeholder=
"请选择展现类型"
>
<el-option
v-for=
"(v, key) in dict.displayType"
:key=
"key"
:label=
"v"
:value=
"Number(key)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"参数有效状态"
prop=
"validStatus"
>
<el-radio-group
v-model=
"form.validStatus"
>
<el-radio
v-for=
"(v, key) in dict.validStatus"
:key=
"key"
:label=
"Number(key)"
>
{{
v
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"remark"
>
<el-input
resize=
"none"
:autosize=
"
{ minRows: 3, maxRows: 3 }"
type="textarea"
placeholder="请输入备注"
v-model="form.remark"
>
</el-input>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
@
click=
"handleRest"
>
重 置
</el-button>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleOk"
>
确 定
</el-button
>
</span>
</el-dialog>
</div>
</
template
>
<
script
>
import
{
saveParam
}
from
"
@/api/system
"
;
export
default
{
props
:
{
title
:
{
type
:
String
,
required
:
true
,
default
:
""
,
},
addVisible
:
{
type
:
Boolean
,
required
:
true
,
default
:
false
,
},
dict
:
{
type
:
Object
,
required
:
true
,
default
:
()
=>
{
return
{};
},
},
},
data
()
{
return
{
form
:
{
name
:
""
,
// 参数名称
firstOrganize
:
""
,
// 一级组织
secondOrganize
:
""
,
// 二级组织
paramKey
:
""
,
// 参数键
paramValue
:
""
,
// 参数值
modStatus
:
""
,
// 参数修改状态
displayType
:
""
,
// 展现类型
validStatus
:
1
,
// 参数有效状态
remark
:
""
,
// 备注
},
rules
:
{
name
:
[{
required
:
true
,
message
:
"
请输入参数名称
"
,
trigger
:
"
blur
"
}],
paramKey
:
[
{
required
:
true
,
message
:
"
请输入参数键
"
,
trigger
:
"
blur
"
},
],
paramValue
:
[
{
required
:
true
,
message
:
"
请输入参数值
"
,
trigger
:
"
blur
"
},
],
},
};
},
computed
:
{
Visible
:
{
get
()
{
return
this
.
addVisible
;
},
set
(
val
)
{
this
.
$emit
(
"
update:addVisible
"
,
val
);
},
},
},
methods
:
{
// 确定
handleOk
()
{
this
.
$refs
.
form
.
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
let
res
=
await
saveParam
(
this
.
form
);
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
addSuccess
"
);
this
.
handleClose
();
}
}
});
},
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
},
// 编辑
onEdit
(
row
)
{
this
.
form
=
{
...
row
};
},
// 重置
handleRest
()
{
this
.
$refs
.
form
.
resetFields
();
},
// 关闭
handleClose
()
{
this
.
$refs
.
form
.
resetFields
();
this
.
Visible
=
false
;
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
/deep/.el-select {
width: 100%;
}
</
style
>
\ No newline at end of file
sample-form-manager-ui/admin/src/pages/system/systemlogs/SystemLogs.vue
0 → 100644
View file @
53c04ff5
<
template
>
<div
class=
"system"
>
<TableHeader>
<div
slot=
"right"
class=
"flex"
>
<el-input
size=
"small"
v-model=
"searchVal"
style=
"width: 200px"
class=
"ml10 mr10"
placeholder=
"请输入请求地址搜索"
@
keyup.native.enter=
"handleSearch"
></el-input>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜索
</el-button
>
<el-button
size=
"small"
@
click=
"handleReset"
>
重置
</el-button>
</div>
</TableHeader>
<!-- 表格 -->
<div
class=
"table-content"
>
<el-table
ref=
"multipleTable"
size=
"small"
v-loading=
"loading"
:data=
"tableData"
border
tooltip-effect=
"dark"
style=
"width: 100%"
max-height=
"676px"
:row-key=
"(row) => row.id"
>
<el-table-column
type=
"index"
label=
"序号"
width=
"55"
align=
"center"
:index=
"(index) => (current - 1) * size + index + 1"
>
</el-table-column>
<el-table-column
label=
"用户名称"
align=
"center"
prop=
"userName"
>
</el-table-column>
<el-table-column
label=
"登录名称"
align=
"center"
prop=
"loginName"
>
</el-table-column>
<el-table-column
label=
"请求地址"
align=
"center"
prop=
"requestUrl"
>
</el-table-column>
<el-table-column
label=
"操作内容"
align=
"center"
prop=
"content"
>
</el-table-column>
<el-table-column
label=
"操作IP地址"
align=
"center"
prop=
"ip"
>
</el-table-column>
<el-table-column
label=
"操作类型"
align=
"center"
prop=
"operType"
>
<template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.operType == 0"
>
新增
</span>
<span
v-else-if=
"scope.row.operType == 1"
>
修改
</span>
<span
v-else-if=
"scope.row.operType == 2"
>
删除
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"操作时间"
align=
"center"
prop=
"logDate"
>
</el-table-column>
</el-table>
</div>
<div
class=
"pagination"
v-if=
"total"
>
<el-pagination
background
layout=
"total,sizes,prev,pager,next,jumper"
:pager-count=
"5"
:total=
"total"
:current-page=
"current"
:page-size=
"size"
:page-sizes=
"pageSizes"
@
current-change=
"changePagination"
@
size-change=
"changeSize"
>
</el-pagination>
</div>
</div>
</template>
<
script
>
import
TableHeader
from
"
@/components/TableHeader.vue
"
;
import
{
getlogsList
}
from
"
@/api/system
"
;
export
default
{
components
:
{
TableHeader
,
},
data
()
{
return
{
searchVal
:
""
,
tableData
:
[],
current
:
1
,
size
:
10
,
total
:
10
,
pageSizes
:
[
10
,
20
,
30
,
40
,
50
,
100
,
200
],
loading
:
false
,
selectKeys
:
[],
dict
:
{},
// 字典
};
},
created
()
{
this
.
getlogsList
();
},
computed
:
{},
methods
:
{
// 系统事项列表
async
getlogsList
()
{
this
.
loading
=
true
;
let
res
=
await
getlogsList
({
page
:
this
.
current
,
size
:
this
.
size
,
name
:
`%
${
this
.
searchVal
}
%`
,
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
this
.
dict
=
dict
;
if
(
!
data
.
length
&&
this
.
current
>
1
)
{
this
.
current
-=
1
;
this
.
getlogsList
();
}
this
.
tableData
=
data
;
this
.
total
=
total
;
this
.
$refs
.
multipleTable
.
bodyWrapper
.
scrollTop
=
0
;
}
this
.
loading
=
false
;
},
// 搜索
handleSearch
()
{
this
.
current
=
1
;
this
.
$refs
.
multipleTable
.
clearSelection
();
this
.
getlogsList
();
},
// 重置
handleReset
()
{
this
.
searchVal
=
""
;
this
.
current
=
1
;
this
.
$refs
.
multipleTable
.
clearSelection
();
this
.
getlogsList
();
},
// 翻页
changePagination
(
cur
)
{
this
.
current
=
cur
;
this
.
getlogsList
();
},
// 改变没有显示数量
changeSize
(
size
)
{
this
.
size
=
size
;
this
.
getlogsList
();
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.system {
width: 100%;
min-height: 100%;
.short {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.full-name {
color: rgb(172, 170, 170);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
:deep(.el-card) {
height: auto;
}
// .table-content {
// height: 550px;
// }
}
</
style
>
\ No newline at end of file
sample-form-manager-ui/admin/src/pages/system/task/TaskSet.vue
0 → 100644
View file @
53c04ff5
<
template
>
<div
class=
"task-set"
>
<TableHeader>
<div
slot=
"left"
>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleAdd"
>
新增任务
</el-button
>
<el-button
size=
"small"
type=
"danger"
@
click=
"handleDelAll"
>
批量移除
</el-button
>
</div>
<div
slot=
"right"
class=
"flex"
>
<el-input
size=
"small"
v-model=
"searchVal"
style=
"width: 200px"
class=
"ml10 mr10"
placeholder=
"请输入参数名称搜索"
@
keyup.native.enter=
"handleSearch"
></el-input>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜索
</el-button
>
<el-button
size=
"small"
@
click=
"handleReset"
>
重置
</el-button>
</div>
</TableHeader>
<!-- 表格 -->
<div
class=
"table-content"
>
<el-table
ref=
"multipleTable"
size=
"small"
v-loading=
"loading"
:data=
"tableData"
border
tooltip-effect=
"dark"
style=
"width: 100%"
max-height=
"676px"
:row-key=
"(row) => row.id"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
reserve-selection
type=
"selection"
width=
"55"
align=
"center"
>
</el-table-column>
<el-table-column
type=
"index"
label=
"序号"
width=
"55"
align=
"center"
:index=
"(index) => (current - 1) * size + index + 1"
>
</el-table-column>
<el-table-column
label=
"任务名称"
align=
"center"
prop=
"name"
>
</el-table-column>
<el-table-column
label=
"执行主机"
align=
"center"
prop=
"excuteHost"
>
</el-table-column>
<el-table-column
label=
"执行关键字"
align=
"center"
prop=
"taskKey"
>
</el-table-column>
<el-table-column
label=
"执行策略"
align=
"center"
prop=
"excuteStrategy"
>
<template
slot-scope=
"scope"
>
<el-tag
type=
"info"
>
{{
filterItems
(
scope
.
row
.
excuteStrategy
,
dict
.
excuteStrategy
)
}}
</el-tag>
</
template
>
</el-table-column>
<el-table-column
label=
"最后执行主机"
align=
"center"
prop=
"lastExcuteHost"
>
</el-table-column>
<el-table-column
label=
"最后执行时间"
align=
"center"
prop=
"lastExcuteTime"
>
</el-table-column>
<el-table-column
label=
"任务状态"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"scope"
>
<!--
<el-tag
v-if=
"scope.row.status == 1"
type=
"success"
>
执行中
</el-tag>
-->
<el-tag
size=
"small"
type=
"info"
>
{{
filterItems
(
scope
.
row
.
status
,
dict
.
status
)
}}
</el-tag>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
width=
"100"
>
<
template
slot-scope=
"scope"
>
<div
class=
"flex jca"
>
<span
class=
"primary pointer"
@
click=
"handleEdit(scope.row)"
>
编辑
</span
>
<span
class=
"delete pointer"
@
click=
"handleDel(scope.row.id)"
>
删除
</span
>
</div>
</
template
>
</el-table-column>
</el-table>
</div>
<div
class=
"pagination"
v-if=
"total"
>
<el-pagination
background
layout=
"total,sizes,prev,pager,next,jumper"
:pager-count=
"5"
:total=
"total"
:current-page=
"current"
:page-size=
"size"
:page-sizes=
"pageSizes"
@
current-change=
"changePagination"
@
size-change=
"changeSize"
>
</el-pagination>
</div>
<!-- 新增参数 -->
<AddTask
ref=
"AddTask"
:addVisible.sync=
"addVisible"
:title=
"title"
:dict=
"dict"
@
addSuccess=
"getTaskList"
></AddTask>
</div>
</template>
<
script
>
import
TableHeader
from
"
@/components/TableHeader.vue
"
;
import
AddTask
from
"
./modal/AddTask.vue
"
;
import
{
getTaskList
,
delTask
}
from
"
@/api/system
"
;
export
default
{
components
:
{
TableHeader
,
AddTask
,
},
data
()
{
return
{
searchVal
:
""
,
tableData
:
[],
current
:
1
,
size
:
10
,
total
:
10
,
pageSizes
:
[
10
,
20
,
30
,
40
,
50
,
100
,
200
],
loading
:
false
,
selectKeys
:
[],
addVisible
:
false
,
title
:
"
新增参数
"
,
dict
:
{},
// 字典
};
},
created
()
{
this
.
getTaskList
();
},
computed
:
{},
methods
:
{
// 系统事项列表
async
getTaskList
()
{
this
.
loading
=
true
;
let
res
=
await
getTaskList
({
page
:
this
.
current
,
size
:
this
.
size
,
name
:
`%
${
this
.
searchVal
}
%`
,
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
this
.
dict
=
dict
;
if
(
!
data
.
length
&&
this
.
current
>
1
)
{
this
.
current
-=
1
;
this
.
getTaskList
();
}
this
.
tableData
=
data
;
this
.
total
=
total
;
this
.
$refs
.
multipleTable
.
bodyWrapper
.
scrollTop
=
0
;
console
.
log
(
dict
);
}
this
.
loading
=
false
;
},
// 批量移除
handleDelAll
()
{
if
(
!
this
.
selectKeys
.
length
)
{
this
.
$message
.
warning
(
"
请先勾选数据
"
);
return
;
}
let
ids
=
this
.
selectKeys
.
map
((
v
)
=>
v
.
id
).
join
(
"
,
"
);
this
.
handleDel
(
ids
);
},
// 搜索
handleSearch
()
{
this
.
current
=
1
;
this
.
$refs
.
multipleTable
.
clearSelection
();
this
.
getTaskList
();
},
// 重置
handleReset
()
{
this
.
searchVal
=
""
;
this
.
current
=
1
;
this
.
$refs
.
multipleTable
.
clearSelection
();
this
.
getTaskList
();
},
// 选中
handleSelectionChange
(
select
)
{
this
.
selectKeys
=
select
;
},
// 翻页
changePagination
(
cur
)
{
this
.
current
=
cur
;
this
.
getTaskList
();
},
// 改变没有显示数量
changeSize
(
size
)
{
this
.
size
=
size
;
this
.
getTaskList
();
},
// 新增
handleAdd
()
{
this
.
title
=
"
新增任务
"
;
this
.
$refs
.
AddTask
.
onAdd
();
this
.
addVisible
=
true
;
},
// 编辑
handleEdit
(
row
)
{
this
.
title
=
"
编辑任务
"
;
this
.
$refs
.
AddTask
.
onEdit
(
row
);
this
.
addVisible
=
true
;
},
// 移除
handleDel
(
id
)
{
this
.
$confirm
(
"
此操作将删除所选数据,是否继续?
"
,
"
系统提示
"
,
{
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
cancelButtonClass
:
"
btn-custom-cancel
"
,
type
:
"
warning
"
,
})
.
then
(
async
()
=>
{
let
res
=
await
delTask
({
id
});
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
getTaskList
();
this
.
$refs
.
multipleTable
.
clearSelection
();
this
.
selectKeys
=
[];
}
})
.
catch
(()
=>
{
console
.
log
(
"
取消成功!
"
);
});
},
// 过滤表格数据
filterItems
(
key
,
dict
=
{})
{
let
val
=
""
;
Object
.
keys
(
dict
).
forEach
((
keys
)
=>
{
if
(
key
==
keys
)
{
val
=
dict
[
keys
];
}
});
return
val
;
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.task-set {
width: 100%;
min-height: 100%;
.short {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.full-name {
color: rgb(172, 170, 170);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
:deep(.el-card) {
height: auto;
}
// .table-content {
// height: 550px;
// }
}
</
style
>
\ No newline at end of file
sample-form-manager-ui/admin/src/pages/system/task/modal/AddTask.vue
0 → 100644
View file @
53c04ff5
<
template
>
<div>
<el-dialog
:title=
"title"
:destroy-on-close=
"true"
:visible.sync=
"Visible"
width=
"30%"
@
close=
"handleClose"
:close-on-click-modal=
"false"
top=
"10vh"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"100px"
>
<el-form-item
label=
"任务名称"
prop=
"name"
>
<el-input
size=
"small"
v-model=
"form.name"
placeholder=
"请输入任务名称"
></el-input>
</el-form-item>
<el-form-item
label=
"关键字"
prop=
"taskKey"
>
<el-input
size=
"small"
v-model=
"form.taskKey"
placeholder=
"请输入关键字"
></el-input>
</el-form-item>
<el-form-item
label=
"执行服务"
prop=
"excuteService"
>
<el-input
size=
"small"
v-model=
"form.excuteService"
placeholder=
"请输入执行服务"
></el-input>
</el-form-item>
<el-form-item
label=
"执行策略"
prop=
"excuteStrategy"
>
<el-select
v-model=
"form.excuteStrategy"
placeholder=
"请选择执行策略"
@
change=
"changeExcuteStrategy"
>
<el-option
v-for=
"(v, key) in dict.excuteStrategy"
:key=
"key"
:label=
"v"
:value=
"Number(key)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"执行日期"
v-if=
"form.excuteStrategy != 4"
prop=
"excuteDate"
>
<el-input
disabled
v-if=
"form.excuteStrategy == 1"
size=
"small"
value=
"每日"
placeholder=
"请输入参数值"
></el-input>
<el-select
placeholder=
"请选择执行日期"
v-model.number=
"form.excuteDate"
v-else-if=
"form.excuteStrategy == 2"
>
<el-option
v-for=
"(v, key) in weeks"
:key=
"key"
:value=
"Number(key)"
:label=
"v"
>
</el-option>
</el-select>
<el-select
placeholder=
"请选择执行日期"
v-else-if=
"form.excuteStrategy == 3"
v-model=
"form.excuteDate"
>
<el-option
v-for=
"(v, key) in days"
:key=
"key"
:value=
"Number(key)"
:label=
"v"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"执行间隔时间"
v-else
prop=
"excuteDate"
>
<el-input
placeholder=
"执行间隔时间"
v-model.number=
"form.excuteDate"
>
<template
slot=
"suffix"
>
秒
</
template
>
</el-input>
</el-form-item>
<el-form-item
label=
"执行时间"
prop=
"excuteTime"
>
<el-time-picker
format=
"HH:mm"
value-format=
"HH:mm"
v-model=
"form.excuteTime"
placeholder=
"请选择时间"
>
</el-time-picker>
</el-form-item>
<el-form-item
label=
"执行主机"
prop=
"excuteHost"
>
<el-input
size=
"small"
v-model=
"form.excuteHost"
placeholder=
"请输入执行主机"
></el-input>
</el-form-item>
<el-form-item
label=
"执行参数"
prop=
"excuteParam"
>
<el-input
size=
"small"
v-model=
"form.excuteParam"
placeholder=
"请输入执行参数"
></el-input>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"remark"
>
<el-input
resize=
"none"
:autosize=
"{ minRows: 3, maxRows: 3 }"
type=
"textarea"
placeholder=
"请输入备注"
v-model=
"form.remark"
></el-input>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
@
click=
"handleRest"
>
重 置
</el-button>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleOk"
>
确 定
</el-button
>
</span>
</el-dialog>
</div>
</template>
<
script
>
import
{
saveTask
}
from
"
@/api/system
"
;
export
default
{
props
:
{
title
:
{
type
:
String
,
required
:
true
,
default
:
""
,
},
addVisible
:
{
type
:
Boolean
,
required
:
true
,
default
:
false
,
},
dict
:
{
type
:
Object
,
required
:
true
,
default
:
()
=>
{
return
{};
},
},
},
data
()
{
return
{
days
:
{},
// 号数
weeks
:
{},
// 周
form
:
{
name
:
""
,
// 任务名称
taskKey
:
""
,
// 关键字
excuteService
:
""
,
// 执行服务
excuteStrategy
:
1
,
// 执行策略
excuteDate
:
0
,
// 执行日期
excuteTime
:
""
,
// 执行时间
excuteHost
:
""
,
// 执行主机
excuteParam
:
""
,
// 执行参数
remark
:
""
,
// 备注
},
rules
:
{
name
:
[{
required
:
true
,
message
:
"
请输入参数名称
"
,
trigger
:
"
blur
"
}],
paramKey
:
[
{
required
:
true
,
message
:
"
请输入参数键
"
,
trigger
:
"
blur
"
},
],
paramValue
:
[
{
required
:
true
,
message
:
"
请输入参数值
"
,
trigger
:
"
blur
"
},
],
},
};
},
computed
:
{
Visible
:
{
get
()
{
return
this
.
addVisible
;
},
set
(
val
)
{
this
.
$emit
(
"
update:addVisible
"
,
val
);
},
},
},
created
()
{
for
(
let
i
=
1
;
i
<=
31
;
i
++
)
{
this
.
days
[
i
]
=
i
+
"
号
"
;
}
let
numArr
=
[
"
一
"
,
"
二
"
,
"
三
"
,
"
四
"
,
"
五
"
,
"
六
"
,
"
日
"
];
for
(
let
i
=
1
;
i
<=
7
;
i
++
)
{
this
.
weeks
[
i
]
=
"
星期
"
+
numArr
[
i
-
1
];
}
},
methods
:
{
// 确定
handleOk
()
{
this
.
$refs
.
form
.
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
let
res
=
await
saveTask
(
this
.
form
);
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
addSuccess
"
);
this
.
handleClose
();
}
}
});
},
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
},
// 编辑
onEdit
(
row
)
{
this
.
form
=
{
...
row
};
},
// 重置
handleRest
()
{
this
.
$refs
.
form
.
resetFields
();
},
// 关闭
handleClose
()
{
this
.
$refs
.
form
.
resetFields
();
this
.
Visible
=
false
;
},
// 切换策略
changeExcuteStrategy
(
val
)
{
if
(
val
==
1
)
{
this
.
form
.
excuteDate
=
0
;
}
else
{
this
.
form
.
excuteDate
=
""
;
}
if
(
val
==
4
)
{
this
.
form
.
excuteTime
=
""
;
}
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
/deep/.el-select {
width: 100%;
}
</
style
>
\ No newline at end of file
sample-form-manager-ui/admin/src/router/index.js
View file @
53c04ff5
...
@@ -137,12 +137,53 @@ const dynamicRouter = [
...
@@ -137,12 +137,53 @@ const dynamicRouter = [
},
},
],
],
},
},
{
path
:
"
/system
"
,
component
:
Layouts
,
meta
:
{
icon
:
"
el-icon-data-board
"
,
title
:
"
系统设置
"
,
},
children
:
[
{
path
:
""
,
component
:
()
=>
import
(
"
@/pages/system/System.vue
"
),
redirect
:
"
/system/parameter
"
,
children
:
[
{
path
:
"
/system/parameter
"
,
component
:
()
=>
import
(
"
@/pages/system/parameter/Parameter.vue
"
),
meta
:
{
activeMenu
:
"
/system
"
,
hidden
:
true
,
},
},
{
path
:
"
/system/task
"
,
component
:
()
=>
import
(
"
@/pages/system/task/TaskSet.vue
"
),
meta
:
{
activeMenu
:
"
/system
"
,
hidden
:
true
,
},
},
{
path
:
"
/system/systemlogs
"
,
component
:
()
=>
import
(
"
@/pages/system/systemlogs/SystemLogs.vue
"
),
meta
:
{
activeMenu
:
"
/system
"
,
hidden
:
true
,
},
},
],
},
],
},
];
];
// 过滤菜单
// 过滤菜单
function
menusFilter
(
arr
)
{
function
menusFilter
(
arr
)
{
let
router
=
arr
.
filter
((
v
)
=>
{
let
router
=
arr
.
filter
((
v
)
=>
{
if
(
v
.
meta
&&
v
.
meta
.
title
)
{
if
(
v
.
meta
&&
!
v
.
meta
.
hidden
)
{
if
(
v
.
children
)
{
if
(
v
.
children
)
{
v
.
children
=
menusFilter
(
v
.
children
);
v
.
children
=
menusFilter
(
v
.
children
);
}
}
...
...
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