Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
smart_gov_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
赵啸非
smart_gov_platform
Commits
ff540a6d
Commit
ff540a6d
authored
Jun 11, 2024
by
“yiyousong”
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 添加用户管理,角色管理,资源管理,维度管理
parent
1dbdbcb7
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
3794 additions
and
13 deletions
+3794
-13
base-manager-ui/admin/src/pages/basicset/system/System.vue
base-manager-ui/admin/src/pages/basicset/system/System.vue
+25
-1
base-manager-ui/admin/src/pages/basicset/system/dimension/Dimension.vue
...i/admin/src/pages/basicset/system/dimension/Dimension.vue
+236
-0
base-manager-ui/admin/src/pages/basicset/system/dimension/modal/AddDimension.vue
...rc/pages/basicset/system/dimension/modal/AddDimension.vue
+155
-0
base-manager-ui/admin/src/pages/basicset/system/parameter/Parameter.vue
...i/admin/src/pages/basicset/system/parameter/Parameter.vue
+27
-9
base-manager-ui/admin/src/pages/basicset/system/parameter/modal/AddParameter.vue
...rc/pages/basicset/system/parameter/modal/AddParameter.vue
+3
-1
base-manager-ui/admin/src/pages/basicset/system/resourceManage/Resource.vue
...min/src/pages/basicset/system/resourceManage/Resource.vue
+268
-0
base-manager-ui/admin/src/pages/basicset/system/resourceManage/modal/AddResurce.vue
...pages/basicset/system/resourceManage/modal/AddResurce.vue
+233
-0
base-manager-ui/admin/src/pages/basicset/system/role/Role.vue
...-manager-ui/admin/src/pages/basicset/system/role/Role.vue
+232
-0
base-manager-ui/admin/src/pages/basicset/system/role/modal/AddResDim.vue
.../admin/src/pages/basicset/system/role/modal/AddResDim.vue
+273
-0
base-manager-ui/admin/src/pages/basicset/system/role/modal/AddRole.vue
...ui/admin/src/pages/basicset/system/role/modal/AddRole.vue
+120
-0
base-manager-ui/admin/src/pages/basicset/system/role/modal/ApportionRes.vue
...min/src/pages/basicset/system/role/modal/ApportionRes.vue
+197
-0
base-manager-ui/admin/src/pages/basicset/system/role/modal/ResDimList.vue
...admin/src/pages/basicset/system/role/modal/ResDimList.vue
+270
-0
base-manager-ui/admin/src/pages/basicset/system/user/User.vue
...-manager-ui/admin/src/pages/basicset/system/user/User.vue
+236
-0
base-manager-ui/admin/src/pages/basicset/system/user/modal/AddUserRole.vue
...dmin/src/pages/basicset/system/user/modal/AddUserRole.vue
+131
-0
base-manager-ui/admin/src/pages/basicset/system1/System.vue
base-manager-ui/admin/src/pages/basicset/system1/System.vue
+56
-0
base-manager-ui/admin/src/pages/basicset/system1/parameter/Parameter.vue
.../admin/src/pages/basicset/system1/parameter/Parameter.vue
+295
-0
base-manager-ui/admin/src/pages/basicset/system1/parameter/modal/AddParameter.vue
...c/pages/basicset/system1/parameter/modal/AddParameter.vue
+196
-0
base-manager-ui/admin/src/pages/basicset/system1/systemlogs/SystemLogs.vue
...dmin/src/pages/basicset/system1/systemlogs/SystemLogs.vue
+150
-0
base-manager-ui/admin/src/pages/basicset/system1/task/TaskSet.vue
...ager-ui/admin/src/pages/basicset/system1/task/TaskSet.vue
+283
-0
base-manager-ui/admin/src/pages/basicset/system1/task/modal/AddTask.vue
...i/admin/src/pages/basicset/system1/task/modal/AddTask.vue
+234
-0
base-manager-ui/admin/src/router/config.js
base-manager-ui/admin/src/router/config.js
+27
-1
base-manager-ui/admin/src/services/basicsetApi.js
base-manager-ui/admin/src/services/basicsetApi.js
+38
-1
base-manager-ui/admin/src/services/system.js
base-manager-ui/admin/src/services/system.js
+109
-0
No files found.
base-manager-ui/admin/src/pages/basicset/system/System.vue
View file @
ff540a6d
<
template
>
<div
class=
"system flex flexc"
>
<a-tabs
:activeKey=
"activeKey"
@
change=
"changeRouter"
>
<a-tab-pane
key=
"/system/user"
>
<span
slot=
"tab"
>
<a-icon
type=
"user"
/>
用户管理
</span>
</a-tab-pane>
<a-tab-pane
key=
"/system/role"
>
<span
slot=
"tab"
>
<a-icon
type=
"idcard"
/>
角色管理
</span>
</a-tab-pane>
<a-tab-pane
key=
"/system/resource"
>
<span
slot=
"tab"
>
<a-icon
type=
"cloud-sync"
/>
资源管理
</span>
</a-tab-pane>
<a-tab-pane
key=
"/system/dimension"
>
<span
slot=
"tab"
>
<a-icon
type=
"deployment-unit"
/>
维度管理
</span>
</a-tab-pane>
<a-tab-pane
key=
"/system/parameter"
>
<span
slot=
"tab"
>
<a-icon
type=
"container"
/>
...
...
@@ -53,4 +77,4 @@ export default {
border-bottom: 1px solid #f0f0f0 !important;
}
}
</
style
>
\ No newline at end of file
</
style
>
base-manager-ui/admin/src/pages/basicset/system/dimension/Dimension.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div
class=
"dimension-container"
>
<div
class=
"control flex aic jcb mb15 pdr6"
>
<div>
<a-button
type=
"primary"
style=
"margin-right: 10px"
@
click=
"handleAdd"
>
新增
</a-button
>
<a-button
type=
"danger"
@
click=
"handleDelAll"
>
批量删除
</a-button>
</div>
<div
class=
"search-box"
>
<a-input-search
placeholder=
"请输入维度名搜索"
enter-button=
"搜索"
v-model=
"searchValue"
allowClear
@
search=
"onSearch"
/>
</div>
</div>
<!-- 表格 -->
<div
class=
"table-content"
>
<a-table
:row-selection=
"
{
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
:loading="loading"
bordered
:scroll="{ y: 590 }"
:columns="columns"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: current,
total: total,
pageSize: size,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
onChange: handleChange,
onShowSizeChange: showSizeChange,
}"
:data-source="tableData"
:rowKey="(record) => record.id"
>
<!-- 序号 -->
<span
slot=
"num"
slot-scope=
"text, record, index"
>
{{
(
current
-
1
)
*
size
+
index
+
1
}}
</span>
<!-- 操作 -->
<template
slot=
"action"
slot-scope=
"text"
>
<a-space
size=
"middle"
>
<span
href=
"javascript:;"
class=
"primary pointer"
@
click=
"handleEdit(text)"
>
编辑
</span
>
<span
href=
"javascript:;"
class=
"delete pointer"
@
click=
"handleDel(text.id)"
>
删除
</span
>
</a-space>
</
template
>
</a-table>
</div>
<!-- 新增 -->
<AddDimension
ref=
"AddDimension"
:addVisible.sync=
"addVisible"
:title=
"title"
:dict=
"dict"
@
addSuccess=
"getDimensionList"
></AddDimension>
</div>
</template>
<
script
>
import
{
getDimensionList
,
delDimension
}
from
"
@/services/system
"
;
import
{
pageSizeOptions
}
from
"
@/config/pageConfig.js
"
;
import
AddDimension
from
"
./modal/AddDimension
"
;
export
default
{
components
:
{
AddDimension
},
data
()
{
const
columns
=
[
{
title
:
"
序号
"
,
dataIndex
:
"
num
"
,
width
:
"
65px
"
,
scopedSlots
:
{
customRender
:
"
num
"
,
},
},
{
title
:
"
名称
"
,
dataIndex
:
"
dimensionName
"
,
},
{
title
:
"
编码
"
,
dataIndex
:
"
dimensionCode
"
,
},
{
title
:
"
类型
"
,
dataIndex
:
"
dimensionType
"
,
customRender
:
(
text
)
=>
{
return
this
.
dict
.
dimensionType
[
text
];
},
},
{
title
:
"
维度值
"
,
dataIndex
:
"
dimensionValue
"
,
},
{
title
:
"
创建时间
"
,
dataIndex
:
"
createTime
"
,
customRender
:
(
text
)
=>
{
return
this
.
$moment
(
text
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
},
},
{
title
:
"
操作
"
,
width
:
"
120px
"
,
scopedSlots
:
{
customRender
:
"
action
"
},
},
];
return
{
columns
,
loading
:
false
,
current
:
1
,
size
:
10
,
total
:
0
,
pageSizeOptions
,
searchValue
:
""
,
// 搜索
tableData
:
[],
selectedRowKeys
:
[],
dict
:
{},
// 字典
addVisible
:
false
,
title
:
"
新增
"
,
};
},
created
()
{
this
.
getDimensionList
();
},
methods
:
{
// 获取列表
async
getDimensionList
()
{
this
.
loading
=
true
;
let
res
=
await
getDimensionList
({
page
:
this
.
current
,
size
:
this
.
size
,
dimensionName
:
this
.
searchValue
,
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
this
.
tableData
=
data
;
this
.
total
=
total
;
this
.
dict
=
dict
;
}
},
// 新增
handleAdd
()
{
this
.
title
=
"
新增
"
;
this
.
$refs
.
AddDimension
.
onAdd
();
this
.
addVisible
=
true
;
},
// 搜索
onSearch
()
{
this
.
current
=
1
;
},
// 分页
handleChange
(
num
)
{
this
.
current
=
num
;
},
// 改变每页显示数量
showSizeChange
(
current
,
size
)
{
this
.
current
=
current
;
this
.
size
=
size
;
},
// 选择
onSelectChange
(
keys
)
{
this
.
selectedRowKeys
=
keys
;
},
// 批量删除
handleDelAll
()
{
if
(
!
this
.
selectedRowKeys
.
length
)
{
this
.
$message
.
warn
(
"
请先勾选数据
"
);
return
;
}
let
ids
=
this
.
selectedRowKeys
.
join
(
"
,
"
);
this
.
handleDel
(
ids
);
},
// 编辑
handleEdit
(
row
)
{
this
.
title
=
"
编辑
"
;
this
.
$refs
.
AddDimension
.
onEdit
(
row
);
this
.
addVisible
=
true
;
},
// 删除
handleDel
(
id
)
{
let
_this
=
this
;
this
.
$confirm
({
title
:
"
系统提示
"
,
content
:
"
删除不可恢复,确定要删除吗?
"
,
okText
:
"
确定
"
,
okType
:
"
danger
"
,
cancelText
:
"
取消
"
,
centered
:
true
,
icon
:
"
exclamation-circle
"
,
maskClosable
:
true
,
async
onOk
()
{
let
res
=
await
delDimension
({
id
});
if
(
res
.
data
.
code
==
1
)
{
_this
.
$message
.
success
(
res
.
data
.
msg
);
_this
.
getDimensionList
();
}
console
.
log
(
id
);
},
onCancel
()
{
console
.
log
(
"
Cancel
"
);
},
});
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.dimension-container {
width: 100%;
height: 100%;
}
</
style
>
base-manager-ui/admin/src/pages/basicset/system/dimension/modal/AddDimension.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div>
<a-modal
:title=
"title"
:visible=
"Visible"
@
cancel=
"handleCancel"
:maskClosable=
"false"
>
<a-button
slot=
"footer"
@
click=
"handleReset"
>
重置
</a-button>
<a-button
slot=
"footer"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
>
确定
</a-button
>
<a-form-model
:model=
"form"
ref=
"form"
:rules=
"rules"
:label-col=
"
{ span: 5 }"
:wrapper-col="{ span: 19 }"
>
<a-form-model-item
label=
"名称"
prop=
"dimensionName"
>
<a-input
v-model=
"form.dimensionName"
placeholder=
"请输入维度名称"
></a-input>
</a-form-model-item>
<a-form-model-item
label=
"编号"
prop=
"dimensionCode"
>
<a-input
v-model=
"form.dimensionCode"
placeholder=
"请输入维度编号"
></a-input>
</a-form-model-item>
<a-form-model-item
label=
"类型"
prop=
"dimensionType"
>
<a-select
v-model=
"form.dimensionType"
placeholder=
"请选择维度类型"
>
<a-select-option
v-for=
"(v, key) in dict.dimensionType"
:key=
"key"
:value=
"Number(key)"
>
{{
v
}}
</a-select-option
>
</a-select>
</a-form-model-item>
<a-form-model-item
label=
"维度值"
prop=
"dimensionValue"
>
<a-input
v-model=
"form.dimensionValue"
placeholder=
"请输入维度值"
></a-input>
</a-form-model-item>
</a-form-model>
</a-modal>
</div>
</
template
>
<
script
>
import
{
saveDimension
}
from
"
@/services/system
"
;
export
default
{
components
:
{},
props
:
{
addVisible
:
{
required
:
true
,
type
:
Boolean
,
default
:
false
,
},
title
:
{
required
:
true
,
type
:
String
,
default
:
""
,
},
dict
:
{
required
:
true
,
type
:
Object
,
default
:
()
=>
{},
},
},
data
()
{
return
{
loading
:
false
,
form
:
{
dimensionName
:
""
,
// 维度名称
dimensionCode
:
""
,
// 维度编码
dimensionValue
:
""
,
// 维度值
dimensionType
:
undefined
,
// 维度类型
},
rules
:
{
dimensionName
:
[
{
required
:
true
,
message
:
"
请输入维度名称
"
,
trigger
:
"
blur
"
},
],
dimensionCode
:
[
{
required
:
true
,
message
:
"
请输入维度编码
"
,
trigger
:
"
blur
"
},
],
dimensionValue
:
[
{
required
:
true
,
message
:
"
请输入维度值
"
,
trigger
:
"
blur
"
},
],
dimensionType
:
[
{
required
:
true
,
message
:
"
请选择维度类型
"
,
trigger
:
"
change
"
},
],
},
};
},
computed
:
{
Visible
:
{
get
()
{
return
this
.
addVisible
;
},
set
(
val
)
{
this
.
$emit
(
"
update:addVisible
"
,
val
);
},
},
},
created
()
{},
methods
:
{
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
},
// 编辑
onEdit
(
row
)
{
this
.
$nextTick
(()
=>
{
this
.
form
=
{
...
row
};
});
},
// 保存
handleOk
()
{
this
.
$refs
.
form
.
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
this
.
loading
=
true
;
let
res
=
await
saveDimension
(
this
.
form
);
let
{
code
,
msg
}
=
res
.
data
;
this
.
loading
=
false
;
if
(
code
==
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
addSuccess
"
);
this
.
handleCancel
();
}
}
});
},
// 重置
handleReset
()
{
this
.
$refs
.
form
.
resetFields
();
},
// 关闭
handleCancel
()
{
this
.
$refs
.
form
.
resetFields
();
this
.
Visible
=
false
;
},
},
};
</
script
>
<
style
lang=
"less"
scoped
></
style
>
base-manager-ui/admin/src/pages/basicset/system/parameter/Parameter.vue
View file @
ff540a6d
...
...
@@ -8,13 +8,20 @@
<a-button
type=
"danger"
@
click=
"handleDelAll"
>
批量删除
</a-button>
</div>
<div
class=
"search-box"
>
<a-input-search
placeholder=
"请输入参数名搜索"
enter-button=
"搜索"
v-model=
"searchValue"
allowClear
@
search=
"onSearch"
/>
<a-space>
<a-input
placeholder=
"请输入参数名搜索"
v-model=
"searchForm.name"
allowClear
/>
<a-input
placeholder=
"请输入二级组织搜索"
v-model=
"searchForm.secondOrganize"
allowClear
/>
<a-button
type=
"primary"
@
click=
"onSearch"
>
搜索
</a-button>
<a-button
@
click=
"resetSearch"
>
重置
</a-button>
</a-space>
</div>
</div>
<!-- 表格 -->
...
...
@@ -176,6 +183,10 @@ export default {
total
:
0
,
pageSizeOptions
,
searchValue
:
""
,
// 搜索
searchForm
:
{
name
:
""
,
secondOrganize
:
""
,
},
tableData
:
[],
selectedRowKeys
:
[],
dict
:
{},
// 字典
...
...
@@ -193,7 +204,8 @@ export default {
let
res
=
await
getSystemParameterList
({
page
:
this
.
current
,
size
:
this
.
size
,
name
:
`%
${
this
.
searchValue
}
%`
,
name
:
`%
${
this
.
searchForm
.
name
}
%`
,
secondOrganize
:
`%
${
this
.
searchForm
.
secondOrganize
}
%`
,
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
...
...
@@ -217,6 +229,12 @@ export default {
this
.
current
=
1
;
this
.
getSystemParameterList
();
},
// 重置搜索
resetSearch
()
{
this
.
current
=
1
;
Object
.
assign
(
this
.
searchForm
,
this
.
$options
.
data
().
searchForm
);
this
.
getSystemParameterList
();
},
// 分页
handleChange
(
num
)
{
this
.
current
=
num
;
...
...
@@ -292,4 +310,4 @@ export default {
width: 100%;
height: 100%;
}
</
style
>
\ No newline at end of file
</
style
>
base-manager-ui/admin/src/pages/basicset/system/parameter/modal/AddParameter.vue
View file @
ff540a6d
...
...
@@ -183,9 +183,11 @@ export default {
// 文件上传
handleUpload
({
file
})
{
if
(
file
.
status
===
"
done
"
)
{
let
{
code
,
url
}
=
file
.
response
;
let
{
code
,
url
,
msg
}
=
file
.
response
;
if
(
code
==
1
)
{
this
.
form
.
paramValue
=
url
;
}
else
{
this
.
$message
.
error
(
msg
);
}
}
},
...
...
base-manager-ui/admin/src/pages/basicset/system/resourceManage/Resource.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div
class=
"resource-container"
>
<div
class=
"control flex aic jcb mb15 pdr6"
>
<a-space>
<a-button
type=
"primary"
@
click=
"handleAdd"
>
新增
</a-button>
<a-button
v-permission=
"[1]"
type=
"primary"
class=
"addclass"
@
click=
"refSresource"
>
刷新资源
</a-button
>
<a-button
type=
"danger"
@
click=
"handleDelAll"
>
批量删除
</a-button>
</a-space>
<div
class=
"search-box"
>
<a-input-search
placeholder=
"请输入资源名搜索"
enter-button=
"搜索"
v-model=
"searchValue"
allowClear
@
search=
"onSearch"
/>
</div>
</div>
<!-- 表格 -->
<div
class=
"table-content"
>
<a-table
:row-selection=
"
{
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
:loading="loading"
bordered
:scroll="{ y: 590 }"
:columns="columns"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: current,
total: total,
pageSize: size,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
onChange: handleChange,
onShowSizeChange: showSizeChange,
}"
:data-source="tableData"
:rowKey="(record) => record.id"
>
<!-- 序号 -->
<span
slot=
"num"
slot-scope=
"text, record, index"
>
{{
(
current
-
1
)
*
size
+
index
+
1
}}
</span>
<!-- 操作 -->
<template
slot=
"action"
slot-scope=
"text"
>
<a-space
size=
"middle"
>
<span
href=
"javascript:;"
class=
"primary pointer"
@
click=
"handleEdit(text)"
>
编辑
</span
>
<span
href=
"javascript:;"
class=
"delete pointer"
@
click=
"handleDel(text.id)"
>
删除
</span
>
</a-space>
</
template
>
</a-table>
</div>
<!-- 新增、编辑 -->
<AddResurce
ref=
"AddResurce"
:title=
"title"
:visible.sync=
"addVisible"
:dict=
"dict"
@
add=
"getResourceList"
></AddResurce>
</div>
</template>
<
script
>
import
{
getResourceList
,
refreshResource
,
delResource
,
}
from
"
@/services/system
"
;
import
{
pageSizeOptions
}
from
"
@/config/pageConfig.js
"
;
import
AddResurce
from
"
./modal/AddResurce.vue
"
;
export
default
{
components
:
{
AddResurce
},
data
()
{
const
columns
=
[
{
title
:
"
序号
"
,
dataIndex
:
"
num
"
,
width
:
"
65px
"
,
scopedSlots
:
{
customRender
:
"
num
"
,
},
},
{
title
:
"
名称
"
,
width
:
400
,
dataIndex
:
"
name
"
,
},
{
title
:
"
资源
"
,
dataIndex
:
"
url
"
,
customRender
:
(
text
)
=>
{
if
(
text
)
{
return
text
.
split
(
"
,
"
).
map
((
v
)
=>
{
return
(
<
a
-
tag
style
=
"
margin-bottom:4px
"
color
=
"
blue
"
>
{
v
}
<
/a-tag
>
);
});
}
},
},
{
title
:
"
认证类型
"
,
width
:
200
,
dataIndex
:
"
authType
"
,
customRender
:
(
text
)
=>
{
return
this
.
dict
.
authType
[
text
];
},
},
{
title
:
"
操作
"
,
width
:
"
120px
"
,
scopedSlots
:
{
customRender
:
"
action
"
},
},
];
return
{
columns
,
loading
:
false
,
current
:
1
,
size
:
10
,
total
:
0
,
pageSizeOptions
,
searchValue
:
""
,
// 搜索
tableData
:
[],
selectedRowKeys
:
[],
dict
:
{},
// 字典
addVisible
:
false
,
title
:
"
新增
"
,
};
},
created
()
{
this
.
getResourceList
();
},
methods
:
{
// 获取资源列表
async
getResourceList
()
{
this
.
loading
=
true
;
let
res
=
await
getResourceList
({
page
:
this
.
current
,
size
:
this
.
size
,
name
:
`%
${
this
.
searchValue
}
%`
,
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
this
.
tableData
=
data
;
this
.
total
=
total
;
this
.
dict
=
dict
;
}
},
// 新增
handleAdd
()
{
this
.
title
=
"
新增
"
;
this
.
$refs
.
AddResurce
.
onAdd
();
this
.
addVisible
=
true
;
},
// 搜索
onSearch
()
{
this
.
current
=
1
;
this
.
getResourceList
();
},
// 分页
handleChange
(
num
)
{
this
.
current
=
num
;
this
.
getResourceList
();
},
// 改变每页显示数量
showSizeChange
(
current
,
size
)
{
this
.
current
=
current
;
this
.
size
=
size
;
this
.
getResourceList
();
},
// 选择
onSelectChange
(
keys
)
{
this
.
selectedRowKeys
=
keys
;
},
// 批量删除
handleDelAll
()
{
if
(
!
this
.
selectedRowKeys
.
length
)
{
this
.
$message
.
warn
(
"
请先勾选数据
"
);
return
;
}
let
ids
=
this
.
selectedRowKeys
.
join
(
"
,
"
);
this
.
handleDel
(
ids
);
},
// 编辑
handleEdit
(
row
)
{
this
.
title
=
"
编辑
"
;
this
.
$refs
.
AddResurce
.
onEdit
(
row
);
this
.
addVisible
=
true
;
},
// 删除
handleDel
(
id
)
{
let
_this
=
this
;
this
.
$confirm
({
title
:
"
系统提示
"
,
content
:
"
删除不可恢复,确定要删除吗?
"
,
okText
:
"
确定
"
,
okType
:
"
danger
"
,
cancelText
:
"
取消
"
,
centered
:
true
,
icon
:
"
exclamation-circle
"
,
maskClosable
:
true
,
async
onOk
()
{
let
res
=
await
delResource
({
id
});
if
(
res
.
data
.
code
==
1
)
{
let
{
msg
}
=
res
.
data
;
_this
.
$message
.
success
(
msg
);
_this
.
getResourceList
();
}
},
onCancel
()
{
console
.
log
(
"
Cancel
"
);
},
});
},
// 刷新资源
async
refSresource
()
{
let
_this
=
this
;
this
.
$confirm
({
title
:
"
系统提示
"
,
content
:
"
确定要刷新资源吗?
"
,
okText
:
"
是
"
,
cancelText
:
"
否
"
,
centered
:
true
,
async
onOk
()
{
let
res
=
await
refreshResource
();
if
(
res
.
data
.
code
==
1
)
{
_this
.
$message
.
success
(
res
.
data
.
msg
);
_this
.
getResourceList
();
}
},
});
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.resource-container {
width: 100%;
height: 100%;
}
</
style
>
base-manager-ui/admin/src/pages/basicset/system/resourceManage/modal/AddResurce.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div
class=
"add-resurce"
>
<a-modal
:title=
"title"
:centered=
"true"
:visible=
"Visible"
@
cancel=
"handleCancel"
width=
"30%"
:maskClosable=
"false"
>
<a-form-model
:label-col=
"
{
span: 5,
}"
:wrapper-col="{
span: 19,
}"
ref="form"
:model="form"
:rules="rules"
>
<a-form-model-item
label=
"资源名称"
prop=
"name"
>
<a-input
placeholder=
"请输入资源名称"
allowClear
v-model=
"form.name"
/>
</a-form-model-item>
<a-form-model-item
label=
"权限类型"
prop=
"authType"
>
<a-select
v-model=
"form.authType"
placeholder=
"请选择权限类型"
>
<a-select-option
v-for=
"(v, key) in dict.authType"
:key=
"key"
:value=
"Number(key)"
>
{{
v
}}
</a-select-option
>
</a-select>
</a-form-model-item>
<a-form-model-item
class=
"url-params-box"
label=
"链接地址"
>
<a-form-model-item
class=
"url-params"
v-for=
"(v, i) in form.urls"
:key=
"i"
:prop=
"`urls.$
{i}.value`"
:rules="[
{ required: true, validator: validatorUrl, trigger: 'blur' },
]"
>
<a-input
class=
"mr10"
v-model=
"v.value"
placeholder=
"请输入链接地址"
/>
<a-space>
<a-button
type=
"primary"
@
click=
"changeParams(i, 'add')"
><a-icon
type=
"plus"
/></a-button>
<a-button
type=
"danger"
v-if=
"i > 0"
@
click=
"changeParams(i, 'remove')"
><a-icon
type=
"minus"
/></a-button>
</a-space>
</a-form-model-item>
</a-form-model-item>
</a-form-model>
<template
slot=
"footer"
>
<a-button
@
click=
"resetForm"
>
重置
</a-button>
<a-button
type=
"primary"
class=
"addclass"
:loading=
"loading"
@
click=
"subForm"
>
确定
</a-button
>
</
template
>
</a-modal>
</div>
</template>
<
script
>
import
{
saveResource
}
from
"
@/services/system
"
;
export
default
{
props
:
{
title
:
{
required
:
true
,
type
:
String
,
default
:
"
新增资源
"
,
},
visible
:
{
required
:
true
,
type
:
Boolean
,
default
:
false
,
},
dict
:
{
required
:
true
,
type
:
Object
,
default
:
()
=>
{},
},
},
data
()
{
return
{
loading
:
false
,
form
:
{
name
:
""
,
authType
:
undefined
,
url
:
""
,
urls
:
[
{
value
:
""
,
},
],
},
rules
:
{
name
:
[{
required
:
true
,
message
:
"
请输入资源名称
"
,
trigger
:
"
blur
"
}],
authType
:
[
{
required
:
true
,
message
:
"
请输选择权限类型
"
,
trigger
:
"
change
"
},
],
},
};
},
computed
:
{
Visible
:
{
get
()
{
return
this
.
visible
;
},
set
(
val
)
{
this
.
$emit
(
"
update:visible
"
,
val
);
},
},
},
methods
:
{
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
},
onEdit
(
row
)
{
setTimeout
(()
=>
{
this
.
form
=
{
...
row
};
let
arr
=
[];
if
(
this
.
form
.
url
)
{
arr
=
this
.
form
.
url
.
split
(
"
,
"
).
map
((
v
)
=>
{
return
{
value
:
v
,
};
});
}
this
.
$set
(
this
.
form
,
"
urls
"
,
arr
);
},
10
);
},
subForm
()
{
this
.
$refs
.
form
.
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
this
.
loading
=
true
;
let
res
=
await
saveResource
({
...
this
.
form
,
url
:
this
.
form
.
urls
.
map
((
v
)
=>
v
.
value
).
join
(
"
,
"
),
});
let
{
code
,
msg
}
=
res
.
data
;
this
.
loading
=
false
;
if
(
code
==
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
add
"
);
this
.
handleCancel
();
}
}
});
},
// 判断是否存在链接
isRepeat
(
val
)
{
return
this
.
form
.
urls
.
filter
((
v
)
=>
v
.
value
==
val
).
length
>
1
;
},
// 校验链接地址
validatorUrl
(
rule
,
value
,
callback
)
{
if
(
!
value
)
{
callback
(
new
Error
(
"
请输入链接
"
));
}
else
if
(
this
.
isRepeat
(
value
))
{
callback
(
new
Error
(
"
重复的链接地址
"
));
}
else
{
callback
();
}
},
changeParams
(
index
,
type
)
{
if
(
type
==
"
add
"
)
{
let
obj
=
{
value
:
""
,
};
if
(
this
.
form
.
urls
.
some
((
v
)
=>
!
v
.
value
))
{
this
.
$message
.
warning
(
"
请先完成前面地址的填写
"
);
return
;
}
this
.
form
.
urls
.
splice
(
index
+
1
,
0
,
obj
);
}
else
{
this
.
form
.
urls
.
splice
(
index
,
1
);
}
// this.$forceUpdate();
},
resetForm
()
{
// 重置还原表单信息内容
this
.
$refs
.
form
.
resetFields
();
this
.
$set
(
this
.
form
,
"
urls
"
,
[{
value
:
""
}]);
},
handleCancel
()
{
this
.
resetForm
();
this
.
Visible
=
false
;
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
/deep/.ant-modal-body {
max-height: 600px;
overflow-y: auto;
}
/deep/.url-params-box {
display: block !important;
.ant-form-item-children {
display: block;
}
}
/deep/.url-params {
.ant-form-item-children {
display: flex;
align-items: center;
}
}
</
style
>
base-manager-ui/admin/src/pages/basicset/system/role/Role.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div
class=
"role-container"
>
<div
class=
"control flex aic jcb mb15 pdr6"
>
<div>
<a-button
type=
"primary"
style=
"margin-right: 10px"
@
click=
"handleAdd"
>
新增
</a-button
>
<a-button
type=
"danger"
@
click=
"handleDelAll"
>
批量删除
</a-button>
</div>
<div
class=
"search-box"
>
<a-input-search
placeholder=
"请输入角色名搜索"
enter-button=
"搜索"
v-model=
"searchValue"
allowClear
@
search=
"onSearch"
/>
</div>
</div>
<!-- 表格 -->
<div
class=
"table-content"
>
<a-table
:row-selection=
"
{
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
:loading="loading"
bordered
:scroll="{ y: 590 }"
:columns="columns"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: current,
total: total,
pageSize: size,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
onChange: handleChange,
onShowSizeChange: showSizeChange,
}"
:data-source="tableData"
:rowKey="(record) => record.id"
>
<!-- 序号 -->
<span
slot=
"num"
slot-scope=
"text, record, index"
>
{{
(
current
-
1
)
*
size
+
index
+
1
}}
</span>
<!-- 操作 -->
<template
slot=
"action"
slot-scope=
"text"
>
<a-space
size=
"middle"
>
<span
class=
"primary pointer"
@
click=
"apportion(text)"
>
分配资源
</span
>
<span
class=
"primary pointer"
@
click=
"handleResDim(text)"
>
资源规则
</span
>
<span
class=
"primary pointer"
@
click=
"handleEdit(text)"
>
编辑
</span>
<span
class=
"delete pointer"
@
click=
"handleDel(text.id)"
>
删除
</span>
</a-space>
</
template
>
</a-table>
</div>
<!-- 新增 -->
<AddRole
ref=
"AddRole"
:title=
"title"
:addVisible.sync=
"addVisible"
@
addSuccess=
"getRoleList"
></AddRole>
<!-- 分配资源 -->
<ApportionRes
ref=
"ApportionRes"
:visible.sync=
"resVisible"
></ApportionRes>
<!-- 资源规则 -->
<ResDimList
ref=
"ResDimList"
:visible.sync=
"resDimListVisible"
></ResDimList>
</div>
</template>
<
script
>
import
{
getRoleList
,
delRole
}
from
"
@/services/system
"
;
import
{
pageSizeOptions
}
from
"
@/config/pageConfig.js
"
;
import
AddRole
from
"
./modal/AddRole.vue
"
;
import
ApportionRes
from
"
./modal/ApportionRes.vue
"
;
import
ResDimList
from
"
./modal/ResDimList.vue
"
;
export
default
{
components
:
{
AddRole
,
ApportionRes
,
ResDimList
},
data
()
{
const
columns
=
[
{
title
:
"
序号
"
,
dataIndex
:
"
num
"
,
width
:
"
65px
"
,
scopedSlots
:
{
customRender
:
"
num
"
,
},
},
{
title
:
"
角色名称
"
,
dataIndex
:
"
name
"
,
},
{
title
:
"
备注
"
,
dataIndex
:
"
remark
"
,
},
{
title
:
"
操作
"
,
width
:
"
20%
"
,
scopedSlots
:
{
customRender
:
"
action
"
},
},
];
return
{
columns
,
loading
:
false
,
current
:
1
,
size
:
10
,
total
:
0
,
pageSizeOptions
,
searchValue
:
""
,
// 搜索
tableData
:
[],
selectedRowKeys
:
[],
dict
:
{},
// 字典
addVisible
:
false
,
resVisible
:
false
,
resDimListVisible
:
false
,
title
:
"
新增角色
"
,
};
},
created
()
{
this
.
getRoleList
();
},
methods
:
{
// 获取角色列表
async
getRoleList
()
{
this
.
loading
=
true
;
let
res
=
await
getRoleList
({
current
:
this
.
current
,
size
:
this
.
size
,
name
:
this
.
searchValue
,
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
}
=
res
.
data
.
data
;
this
.
tableData
=
data
;
this
.
total
=
total
;
}
},
// 新增
handleAdd
()
{
this
.
title
=
"
新增角色
"
;
this
.
$refs
.
AddRole
.
onAdd
();
this
.
addVisible
=
true
;
},
// 搜索
onSearch
()
{
this
.
current
=
1
;
this
.
getRoleList
();
},
// 分页
handleChange
(
num
)
{
this
.
current
=
num
;
this
.
getRoleList
();
},
// 改变每页显示数量
showSizeChange
(
current
,
size
)
{
this
.
current
=
current
;
this
.
size
=
size
;
this
.
getRoleList
();
},
// 选择
onSelectChange
(
keys
)
{
this
.
selectedRowKeys
=
keys
;
},
// 批量删除
handleDelAll
()
{
if
(
!
this
.
selectedRowKeys
.
length
)
{
this
.
$message
.
warn
(
"
请先勾选数据
"
);
return
;
}
let
ids
=
this
.
selectedRowKeys
.
join
(
"
,
"
);
this
.
handleDel
(
ids
);
},
// 编辑
handleEdit
(
row
)
{
this
.
title
=
"
编辑角色
"
;
this
.
$refs
.
AddRole
.
onEdit
(
row
);
this
.
addVisible
=
true
;
},
// 删除
handleDel
(
id
)
{
let
_this
=
this
;
this
.
$confirm
({
title
:
"
系统提示
"
,
content
:
"
删除不可恢复,确定要删除吗?
"
,
okText
:
"
确定
"
,
okType
:
"
danger
"
,
cancelText
:
"
取消
"
,
centered
:
true
,
icon
:
"
exclamation-circle
"
,
maskClosable
:
true
,
async
onOk
()
{
let
res
=
await
delRole
({
id
});
if
(
res
.
data
.
code
==
1
)
{
_this
.
$message
.
success
(
res
.
data
.
msg
);
_this
.
getRoleList
();
}
},
onCancel
()
{
console
.
log
(
"
Cancel
"
);
},
});
},
// 分配资源
apportion
(
row
)
{
this
.
$refs
.
ApportionRes
.
onAdd
(
row
.
id
);
this
.
resVisible
=
true
;
},
// 资源维度
handleResDim
(
row
)
{
this
.
$refs
.
ResDimList
.
getRoleInfo
(
row
);
this
.
resDimListVisible
=
true
;
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.role-container {
width: 100%;
height: 100%;
}
</
style
>
base-manager-ui/admin/src/pages/basicset/system/role/modal/AddResDim.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div>
<a-modal
:title=
"title"
:visible=
"Visible"
@
cancel=
"handleCancel"
:maskClosable=
"false"
:zIndex=
"1001"
>
<a-form-model
:model=
"form"
ref=
"form"
:rules=
"rules"
:label-col=
"
{ span: 5 }"
:wrapper-col="{ span: 19 }"
>
<a-form-model-item
label=
"所属资源"
prop=
"resourceId"
>
<a-cascader
:options=
"resourceList"
v-model=
"resource"
placeholder=
"请选择资源"
@
change=
"changeRes"
/>
</a-form-model-item>
<a-form-model-item
label=
"所属维度"
prop=
"ruleCode"
>
<a-select
allowClear
v-model=
"form.ruleCode"
@
change=
"changeDim"
placeholder=
"请选择所属维度"
>
<a-select-option
v-for=
"v in dimensionList"
:key=
"v.id"
:value=
"v.dimensionCode"
:dataset-row=
"v"
>
{{
v
.
dimensionName
}}
</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item
label=
"规则条件"
prop=
"ruleCondition"
>
<a-select
allowClear
v-model=
"form.ruleCondition"
placeholder=
"请选择规则条件"
>
<a-select-option
v-for=
"(v, key) in dict.ruleCondition"
:key=
"key"
:value=
"key"
>
{{
v
}}
</a-select-option>
</a-select>
</a-form-model-item>
</a-form-model>
<a-button
slot=
"footer"
@
click=
"handleReset"
>
重置
</a-button>
<a-button
slot=
"footer"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
>
确定
</a-button
>
</a-modal>
</div>
</
template
>
<
script
>
import
{
getDimensionList
,
getResourceList
,
saveDimRes
,
}
from
"
@/services/system
"
;
export
default
{
components
:
{},
props
:
{
addVisible
:
{
required
:
true
,
type
:
Boolean
,
default
:
false
,
},
title
:
{
required
:
true
,
type
:
String
,
default
:
""
,
},
dict
:
{
required
:
true
,
type
:
Object
,
default
:
()
=>
{},
},
},
data
()
{
return
{
loading
:
false
,
resource
:
[],
dimensionList
:
[],
// 维度列表
resourceList
:
[],
// 资源列表
form
:
{
roleId
:
""
,
// 角色id
resourceId
:
""
,
// 资源id
ruleCode
:
undefined
,
// 维度编码
ruleName
:
""
,
// 维度名称
ruleCondition
:
undefined
,
// 规则条件
ruleValue
:
""
,
// 维度值
ruleType
:
""
,
// 维度类型
roleName
:
""
,
// 角色名称
resourceName
:
""
,
// 资源名称
},
rules
:
{
resourceId
:
[
{
required
:
true
,
message
:
"
请选择资源
"
,
trigger
:
"
change
"
},
],
ruleCode
:
[
{
required
:
true
,
message
:
"
请选择维度
"
,
trigger
:
"
change
"
},
],
ruleCondition
:
[
{
required
:
true
,
message
:
"
请选择规则条件
"
,
trigger
:
"
change
"
},
],
},
};
},
computed
:
{
Visible
:
{
get
()
{
return
this
.
addVisible
;
},
set
(
val
)
{
this
.
$emit
(
"
update:addVisible
"
,
val
);
},
},
},
created
()
{
this
.
getDimensionList
();
this
.
getResourceList
();
},
methods
:
{
// 获取维度列表
async
getDimensionList
()
{
let
res
=
await
getDimensionList
({
page
:
1
,
size
:
-
1
,
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
}
=
res
.
data
.
data
;
this
.
dimensionList
=
data
;
}
},
// 获取资源列表
async
getResourceList
()
{
let
res
=
await
getResourceList
({
page
:
1
,
size
:
-
1
,
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
}
=
res
.
data
.
data
;
this
.
resourceList
=
this
.
groupByAuth
(
data
);
}
},
// 资源分组
groupByAuth
(
list
)
{
let
group
=
{};
let
groupList
=
[];
list
.
forEach
((
item
)
=>
{
let
name
=
item
.
name
.
split
(
"
-
"
)[
0
];
if
(
!
group
[
name
])
{
group
[
name
]
=
{
indeterminate
:
false
,
checkAll
:
false
,
list
:
[],
};
}
group
[
name
].
list
.
push
(
item
);
});
groupList
=
Object
.
keys
(
group
).
map
((
key
)
=>
{
return
{
label
:
key
,
value
:
key
,
children
:
group
[
key
].
list
.
map
((
v
)
=>
{
return
{
label
:
v
.
name
,
value
:
v
.
id
,
};
}),
};
});
return
groupList
;
},
// 选择资源
changeRes
(
val
,
selectedOptions
)
{
if
(
selectedOptions
.
length
)
{
this
.
form
.
resourceId
=
selectedOptions
[
1
].
value
;
this
.
form
.
resourceName
=
selectedOptions
[
1
].
label
;
}
else
{
this
.
form
.
resourceId
=
""
;
this
.
form
.
resourceName
=
""
;
}
},
// 选择维度
changeDim
(
val
,
e
)
{
if
(
val
&&
e
)
{
let
{
dimensionName
,
dimensionType
,
dimensionValue
}
=
e
.
data
.
attrs
[
"
dataset-row
"
];
this
.
form
.
ruleName
=
dimensionName
;
this
.
form
.
ruleType
=
dimensionType
;
this
.
form
.
ruleValue
=
dimensionValue
;
}
else
{
this
.
form
.
ruleName
=
""
;
this
.
form
.
ruleType
=
""
;
this
.
form
.
ruleValue
=
""
;
}
},
// 新增
onAdd
(
roleInfo
)
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
this
.
form
.
roleId
=
roleInfo
.
id
;
this
.
form
.
roleName
=
roleInfo
.
name
;
},
// 编辑
onEdit
(
row
)
{
this
.
$nextTick
(()
=>
{
this
.
form
=
{
...
row
};
let
resName
=
this
.
form
.
resourceName
.
split
(
"
-
"
)[
0
];
this
.
resource
=
[
resName
,
this
.
form
.
resourceId
];
});
},
// 保存
handleOk
()
{
this
.
$refs
.
form
.
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
this
.
loading
=
true
;
let
res
=
await
saveDimRes
(
this
.
form
);
let
{
code
,
msg
}
=
res
.
data
;
this
.
loading
=
false
;
if
(
code
==
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
addSuccess
"
);
this
.
handleCancel
();
}
}
});
},
// 重置
handleReset
()
{
this
.
$refs
.
form
.
resetFields
();
this
.
form
.
ruleName
=
""
;
this
.
form
.
ruleType
=
""
;
this
.
form
.
ruleValue
=
""
;
this
.
form
.
resourceId
=
""
;
this
.
form
.
resourceName
=
""
;
this
.
resource
=
[];
},
// 关闭
handleCancel
()
{
this
.
handleReset
();
this
.
Visible
=
false
;
},
},
};
</
script
>
<
style
lang=
"less"
scoped
></
style
>
base-manager-ui/admin/src/pages/basicset/system/role/modal/AddRole.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div>
<a-modal
:title=
"title"
:visible=
"Visible"
@
cancel=
"handleCancel"
:maskClosable=
"false"
>
<a-button
slot=
"footer"
@
click=
"handleReset"
>
重置
</a-button>
<a-button
slot=
"footer"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
>
确定
</a-button
>
<a-form-model
:model=
"form"
ref=
"form"
:rules=
"rules"
:label-col=
"
{ span: 5 }"
:wrapper-col="{ span: 19 }"
>
<a-form-model-item
label=
"名称"
prop=
"name"
>
<a-input
v-model=
"form.name"
placeholder=
"请输入角色名称"
></a-input>
</a-form-model-item>
<a-form-model-item
label=
"备注"
prop=
"remark"
>
<a-textarea
v-model=
"form.remark"
placeholder=
"请输入备注"
></a-textarea>
</a-form-model-item>
</a-form-model>
</a-modal>
</div>
</
template
>
<
script
>
import
{
saveRole
}
from
"
@/services/system
"
;
export
default
{
components
:
{},
props
:
{
addVisible
:
{
required
:
true
,
type
:
Boolean
,
default
:
false
,
},
title
:
{
required
:
true
,
type
:
String
,
default
:
""
,
},
},
data
()
{
return
{
loading
:
false
,
form
:
{
name
:
""
,
remark
:
""
,
roleType
:
2
,
},
rules
:
{
name
:
[{
required
:
true
,
message
:
"
请输入角色名称
"
,
trigger
:
"
blur
"
}],
},
};
},
computed
:
{
Visible
:
{
get
()
{
return
this
.
addVisible
;
},
set
(
val
)
{
this
.
$emit
(
"
update:addVisible
"
,
val
);
},
},
},
created
()
{},
methods
:
{
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
},
// 编辑
onEdit
(
row
)
{
this
.
$nextTick
(()
=>
{
this
.
form
=
{
...
row
};
});
},
// 保存
handleOk
()
{
this
.
$refs
.
form
.
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
this
.
loading
=
true
;
let
res
=
await
saveRole
(
this
.
form
);
let
{
code
,
msg
}
=
res
.
data
;
this
.
loading
=
false
;
if
(
code
==
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
addSuccess
"
);
this
.
handleCancel
();
}
}
});
},
// 重置
handleReset
()
{
this
.
$refs
.
form
.
resetFields
();
},
// 关闭
handleCancel
()
{
this
.
$refs
.
form
.
resetFields
();
this
.
Visible
=
false
;
},
},
};
</
script
>
<
style
lang=
"less"
scoped
></
style
>
base-manager-ui/admin/src/pages/basicset/system/role/modal/ApportionRes.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div
class=
"apportion-res"
>
<a-modal
title=
"分配资源"
:centered=
"true"
:visible=
"Visible"
@
cancel=
"handleCancel"
width=
"40%"
:maskClosable=
"false"
>
<div
class=
"mb10"
v-for=
"(v, key) in resourceList"
:key=
"key"
>
<div
class=
"mb10"
:style=
"
{ borderBottom: '1px solid #E9E9E9' }">
<span
class=
"title"
>
{{
key
}}
</span>
<a-checkbox
:indeterminate=
"v.indeterminate"
:checked=
"v.checkAll"
@
change=
"onCheckAllChange($event, v)"
>
全选
</a-checkbox>
</div>
<a-checkbox-group
style=
"width:100%"
:value=
"form.resourceIdList"
@
change=
"onChange($event, v)"
>
<a-row>
<a-col
:span=
"12"
v-for=
"item in v.list"
:key=
"item.id"
>
<a-checkbox
:value=
"item.id"
>
{{
item
.
name
}}
</a-checkbox>
</a-col>
</a-row>
</a-checkbox-group>
</div>
<template
slot=
"footer"
>
<a-button
@
click=
"resetForm"
>
重置
</a-button>
<a-button
type=
"primary"
class=
"addclass"
@
click=
"subForm"
>
确定
</a-button
>
</
template
>
</a-modal>
</div>
</template>
<
script
>
import
{
getRoleResourceList
,
getResourceList
,
saveRoleResource
,
}
from
"
@/services/system
"
;
export
default
{
props
:
{
visible
:
{
required
:
true
,
type
:
Boolean
,
default
:
false
,
},
},
data
()
{
return
{
form
:
{
resourceIdList
:
[],
roleId
:
""
,
},
rules
:
{},
resourceList
:
{},
// 资源列表
userResourceList
:
[],
// 用户资源列表
};
},
computed
:
{
Visible
:
{
get
()
{
return
this
.
visible
;
},
set
(
val
)
{
this
.
$emit
(
"
update:visible
"
,
val
);
},
},
},
methods
:
{
// 获取资源列表
async
getResourceList
()
{
let
res
=
await
getResourceList
({
page
:
1
,
size
:
-
1
,
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
}
=
res
.
data
.
data
;
this
.
resourceList
=
this
.
groupByAuth
(
data
);
}
},
// 获取角色资源权限列表
async
getRoleResourceList
(
roleId
)
{
let
res
=
await
getRoleResourceList
({
size
:
-
1
,
page
:
1
,
roleId
,
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
}
=
res
.
data
.
data
;
let
arr
=
data
.
filter
((
v
)
=>
v
.
resourceId
);
this
.
form
.
resourceIdList
=
arr
.
map
((
v
)
=>
v
.
resourceId
);
}
},
// 权限分组
groupByAuth
(
list
)
{
let
group
=
{};
list
.
forEach
((
item
)
=>
{
let
name
=
item
.
name
.
split
(
"
-
"
)[
0
];
if
(
!
group
[
name
])
{
group
[
name
]
=
{
indeterminate
:
false
,
checkAll
:
false
,
list
:
[],
};
}
group
[
name
].
list
.
push
(
item
);
});
return
group
;
},
// 控制全选
onCheckAllChange
(
e
,
row
)
{
let
rowIds
=
row
.
list
.
map
((
v
)
=>
v
.
id
);
let
checked
=
e
.
target
.
checked
;
row
.
indeterminate
=
false
;
row
.
checkAll
=
checked
;
if
(
checked
)
{
this
.
form
.
resourceIdList
=
[
...
new
Set
([...
this
.
form
.
resourceIdList
,
...
rowIds
]),
];
}
else
{
this
.
form
.
resourceIdList
=
this
.
form
.
resourceIdList
.
filter
((
v
)
=>
{
return
!
rowIds
.
includes
(
v
);
});
}
},
// 控制单选
onChange
(
checkedList
,
row
)
{
let
rowIds
=
row
.
list
.
map
((
v
)
=>
v
.
id
);
this
.
form
.
resourceIdList
=
this
.
form
.
resourceIdList
.
filter
((
v
)
=>
{
return
!
rowIds
.
includes
(
v
);
});
this
.
form
.
resourceIdList
=
[
...
new
Set
([...
this
.
form
.
resourceIdList
,
...
checkedList
]),
];
row
.
indeterminate
=
!!
checkedList
.
length
&&
checkedList
.
length
<
rowIds
.
length
;
row
.
checkAll
=
checkedList
.
length
===
rowIds
.
length
;
},
onAdd
(
roleId
)
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
roleId
=
roleId
;
this
.
getResourceList
();
this
.
getRoleResourceList
(
roleId
);
},
async
subForm
()
{
let
res
=
await
saveRoleResource
(
this
.
form
);
if
(
res
.
data
.
code
==
1
)
{
this
.
$message
.
success
(
"
添加成功
"
);
this
.
handleCancel
();
}
},
resetForm
()
{
this
.
form
.
resourceIdList
=
[];
Object
.
keys
(
this
.
resourceList
).
forEach
((
key
)
=>
{
this
.
resourceList
[
key
].
checkAll
=
false
;
this
.
resourceList
[
key
].
indeterminate
=
false
;
});
// 重置还原表单信息内容
// this.$refs.form.resetFields();
},
handleCancel
()
{
this
.
resetForm
();
this
.
Visible
=
false
;
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
/deep/.ant-modal-body {
max-height: 700px;
overflow-y: auto;
}
.title {
margin-right: 1em;
font-size: 18px;
font-weight: bold;
}
</
style
>
base-manager-ui/admin/src/pages/basicset/system/role/modal/ResDimList.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div>
<a-drawer
title=
"资源规则"
:visible=
"Visible"
@
close=
"onClose"
:maskClosable=
"false"
:destroyOnClose=
"true"
width=
"50%"
>
<div
class=
"mb10"
>
角色名称:
<span
class=
"primary"
>
{{
roleInfo
.
name
}}
</span>
</div>
<div
class=
"search-box flex aic jcb mb20"
>
<div>
<a-space>
<a-button
type=
"primary"
@
click=
"handleAdd"
>
新增
</a-button>
<a-button
type=
"danger"
@
click=
"handleDelAll"
>
批量删除
</a-button>
</a-space>
</div>
<a-input-search
style=
"width: 300px"
placeholder=
"请输入维度名称搜索"
enter-button=
"搜索"
v-model=
"searchVal"
allowClear
@
search=
"onSearch"
/>
</div>
<!-- 表格 -->
<div
class=
"table-content"
>
<a-table
:row-selection=
"
{
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
size="small"
:loading="loading"
bordered
:scroll="{ y: 460 }"
:columns="columns"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: current,
total: total,
pageSize: size,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
onChange: handleChange,
onShowSizeChange: showSizeChange,
}"
:data-source="tableData"
:rowKey="(record) => record.id"
>
<!-- 序号 -->
<span
slot=
"num"
slot-scope=
"text, record, index"
>
{{
(
current
-
1
)
*
size
+
index
+
1
}}
</span>
<!-- 操作 -->
<template
slot=
"action"
slot-scope=
"text"
>
<a-space>
<a
href=
"javascript:;"
class=
"edit"
@
click=
"handleEdit(text)"
>
编辑
</a
>
<a
href=
"javascript:;"
class=
"delete"
@
click=
"handleDel(text.id)"
>
删除
</a
>
</a-space>
</
template
>
</a-table>
</div>
<AddResDim
ref=
"AddResDim"
:addVisible.sync=
"addVisible"
:title=
"title"
:dict=
"dict"
@
addSuccess=
"getDimResList"
></AddResDim>
</a-drawer>
</div>
</template>
<
script
>
import
{
pageSizeOptions
}
from
"
@/config/pageConfig.js
"
;
import
{
getDimResList
,
delDimRes
}
from
"
@/services/system
"
;
import
AddResDim
from
"
./AddResDim.vue
"
;
export
default
{
props
:
{
visible
:
{
type
:
Boolean
,
require
:
true
,
default
:
false
,
},
},
components
:
{
AddResDim
},
data
()
{
const
columns
=
[
{
title
:
"
序号
"
,
dataIndex
:
"
num
"
,
width
:
"
65px
"
,
scopedSlots
:
{
customRender
:
"
num
"
,
},
},
{
title
:
"
维度名称
"
,
dataIndex
:
"
ruleName
"
,
},
{
title
:
"
维度编码
"
,
dataIndex
:
"
ruleCode
"
,
},
{
title
:
"
维度类型
"
,
dataIndex
:
"
ruleType
"
,
},
{
title
:
"
维度值
"
,
dataIndex
:
"
ruleValue
"
,
},
{
title
:
"
所属资源
"
,
dataIndex
:
"
resourceName
"
,
},
{
title
:
"
规则条件
"
,
dataIndex
:
"
ruleCondition
"
,
customRender
:
(
text
)
=>
{
return
this
.
dict
.
ruleCondition
[
text
];
},
},
{
title
:
"
创建时间
"
,
dataIndex
:
"
createTime
"
,
customRender
:
(
text
)
=>
{
return
this
.
$moment
(
text
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
},
},
{
title
:
"
操作
"
,
width
:
"
100px
"
,
scopedSlots
:
{
customRender
:
"
action
"
},
},
];
return
{
columns
,
roleInfo
:
{},
// 模块信息
loading
:
false
,
total
:
0
,
size
:
10
,
current
:
1
,
pageSizeOptions
,
selectedRowKeys
:
[],
tableData
:
[],
addVisible
:
false
,
title
:
"
新增
"
,
searchVal
:
""
,
dict
:
{},
// 字典
};
},
computed
:
{
Visible
:
{
get
()
{
return
this
.
visible
;
},
set
(
val
)
{
this
.
$emit
(
"
update:visible
"
,
val
);
},
},
},
methods
:
{
// 获取模块信息
getRoleInfo
(
roleInfo
)
{
this
.
roleInfo
=
roleInfo
;
this
.
getDimResList
();
},
// 获取列表
async
getDimResList
()
{
this
.
loading
=
true
;
let
res
=
await
getDimResList
({
current
:
this
.
current
,
size
:
this
.
size
,
roleId
:
this
.
roleInfo
.
id
,
ruleName
:
`%
${
this
.
searchVal
}
%`
,
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
this
.
total
=
total
;
this
.
tableData
=
data
;
this
.
dict
=
dict
;
}
},
handleAdd
()
{
this
.
title
=
"
新增
"
;
this
.
addVisible
=
true
;
this
.
$refs
.
AddResDim
.
onAdd
(
this
.
roleInfo
);
},
handleDelAll
()
{
if
(
!
this
.
selectedRowKeys
.
length
)
{
this
.
$message
.
warning
(
"
请先勾选数据
"
);
return
;
}
let
ids
=
this
.
selectedRowKeys
.
join
(
"
,
"
);
this
.
handleDel
(
ids
);
},
// 关闭抽屉
onClose
()
{
this
.
searchVal
=
""
;
this
.
selectedRowKeys
=
[];
this
.
Visible
=
false
;
},
// 搜索
onSearch
()
{
this
.
current
=
1
;
this
.
getDimResList
();
},
// 编辑
handleEdit
(
row
)
{
this
.
title
=
"
编辑
"
;
this
.
addVisible
=
true
;
this
.
$refs
.
AddResDim
.
onEdit
(
row
);
},
// 翻页
handleChange
(
cur
)
{
this
.
current
=
cur
;
this
.
getDimResList
();
},
// 改变每页显示数量
showSizeChange
(
current
,
size
)
{
this
.
current
=
current
;
this
.
size
=
size
;
this
.
getDimResList
();
},
// 删除
handleDel
(
id
)
{
let
_this
=
this
;
this
.
$confirm
({
title
:
"
系统提示
"
,
content
:
"
删除不可恢复,确定要删除吗?
"
,
okText
:
"
确定
"
,
okType
:
"
danger
"
,
cancelText
:
"
取消
"
,
centered
:
true
,
icon
:
"
exclamation-circle
"
,
maskClosable
:
true
,
async
onOk
()
{
let
res
=
await
delDimRes
({
id
});
if
(
res
.
data
.
code
==
1
)
{
_this
.
$message
.
success
(
res
.
data
.
msg
);
_this
.
getDimResList
();
}
},
});
},
// 选中
onSelectChange
(
keys
)
{
this
.
selectedRowKeys
=
keys
;
},
},
};
</
script
>
<
style
lang=
"less"
scoped
></
style
>
base-manager-ui/admin/src/pages/basicset/system/user/User.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div
class=
"user-container"
>
<div
class=
"control flex aic jcb mb15 pdr6"
>
<div>
<!--
<a-button
type=
"primary"
style=
"margin-right: 10px"
@
click=
"handleAdd"
>
新增
</a-button
>
<a-button
type=
"danger"
@
click=
"handleDelAll"
>
批量删除
</a-button>
-->
</div>
<div
class=
"search-box"
>
<a-space>
<a-input
placeholder=
"请输入登录名搜索"
v-model=
"searchForm.loginName"
allowClear
/>
<a-input
placeholder=
"请输入用户姓名搜索"
v-model=
"searchForm.realName"
allowClear
/>
<a-button
type=
"primary"
@
click=
"onSearch"
>
搜索
</a-button>
<a-button
@
click=
"resetSearch"
>
重置
</a-button>
</a-space>
</div>
</div>
<!-- 表格 -->
<div
class=
"table-content"
>
<a-table
:loading=
"loading"
bordered
:scroll=
"
{ y: 590 }"
:columns="columns"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: current,
total: total,
pageSize: size,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
onChange: handleChange,
onShowSizeChange: showSizeChange,
}"
:data-source="tableData"
:rowKey="(record) => record.id"
>
<!-- 序号 -->
<span
slot=
"num"
slot-scope=
"text, record, index"
>
{{
(
current
-
1
)
*
size
+
index
+
1
}}
</span>
<!-- 操作 -->
<template
slot=
"action"
slot-scope=
"text"
>
<a-space
size=
"middle"
>
<span
class=
"primary pointer"
@
click=
"changeRole(text)"
>
分配角色
</span
>
</a-space>
</
template
>
</a-table>
</div>
<!-- 分配角色 -->
<AddUserRole
ref=
"AddUserRole"
:addVisible.sync=
"addVisible"
:roleList=
"roleList"
@
addSuccess=
"getUserList"
></AddUserRole>
</div>
</template>
<
script
>
import
{
getUserList
,
getRoleList
}
from
"
@/services/system
"
;
import
{
pageSizeOptions
}
from
"
@/config/pageConfig.js
"
;
import
AddUserRole
from
"
./modal/AddUserRole.vue
"
;
import
{
mapState
}
from
"
vuex
"
;
export
default
{
components
:
{
AddUserRole
},
data
()
{
const
columns
=
[
{
title
:
"
序号
"
,
dataIndex
:
"
num
"
,
width
:
"
65px
"
,
scopedSlots
:
{
customRender
:
"
num
"
,
},
},
{
title
:
"
登录名
"
,
dataIndex
:
"
loginName
"
,
},
{
title
:
"
用户姓名
"
,
dataIndex
:
"
realName
"
,
},
{
title
:
"
所属角色
"
,
dataIndex
:
"
roleIds
"
,
customRender
:
(
text
)
=>
{
if
(
text
&&
this
.
roleList
.
length
)
{
let
obj
=
{};
this
.
roleList
.
forEach
((
v
)
=>
{
obj
[
v
.
id
]
=
v
.
name
;
});
let
roleIds
=
text
.
split
(
"
,
"
);
return
roleIds
.
map
((
v
)
=>
{
return
<
a
-
tag
>
{
obj
[
v
]}
<
/a-tag>
;
});
}
},
},
{
title
:
"
状态
"
,
dataIndex
:
"
status
"
,
customRender
:
(
text
)
=>
{
return
<
a
-
tag
>
{
this
.
dict
.
status
[
text
]}
<
/a-tag>
;
},
},
{
title
:
"
操作
"
,
width
:
"
120px
"
,
scopedSlots
:
{
customRender
:
"
action
"
},
},
];
return
{
columns
,
loading
:
false
,
current
:
1
,
size
:
10
,
total
:
0
,
pageSizeOptions
,
searchForm
:
{
loginName
:
""
,
realName
:
""
,
},
tableData
:
[],
roleList
:
[],
// 角色列表
selectedRowKeys
:
[],
dict
:
{},
// 字典
addVisible
:
false
,
title
:
"
新增
"
,
loginNames
:
[
"
admin
"
,
"
administrator1
"
,
"
Administrator
"
],
};
},
computed
:
{
...
mapState
(
"
site
"
,
[
"
userInfo
"
]),
},
created
()
{
this
.
getRoleList
();
this
.
getUserList
();
},
methods
:
{
// 获取角色列表
async
getRoleList
()
{
let
res
=
await
getRoleList
({
page
:
1
,
size
:
-
1
,
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
}
=
res
.
data
.
data
;
this
.
roleList
=
data
;
}
},
// 获取用户列表
async
getUserList
()
{
this
.
loading
=
true
;
let
res
=
await
getUserList
({
page
:
this
.
current
,
size
:
this
.
size
,
...
this
.
searchForm
,
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
let
{
name
}
=
this
.
userInfo
;
if
(
this
.
loginNames
.
includes
(
name
))
{
this
.
tableData
=
data
;
this
.
total
=
total
;
}
else
{
this
.
tableData
=
data
.
filter
((
v
)
=>
{
return
!
this
.
loginNames
.
includes
(
v
.
loginName
);
});
this
.
total
=
total
-
this
.
loginNames
.
length
;
}
this
.
dict
=
dict
;
}
},
// 新增
handleAdd
()
{
this
.
title
=
"
新增
"
;
this
.
$refs
.
AddParameter
.
onAdd
();
this
.
addVisible
=
true
;
},
// 搜索
onSearch
()
{
this
.
current
=
1
;
this
.
getUserList
();
},
resetSearch
()
{
this
.
current
=
1
;
Object
.
assign
(
this
.
searchForm
,
this
.
$options
.
data
().
searchForm
);
this
.
getUserList
();
},
// 分页
handleChange
(
num
)
{
this
.
current
=
num
;
this
.
getUserList
();
},
// 改变每页显示数量
showSizeChange
(
current
,
size
)
{
this
.
current
=
current
;
this
.
size
=
size
;
this
.
getUserList
();
},
// 分配角色
changeRole
(
row
)
{
this
.
$refs
.
AddUserRole
.
onEdit
(
row
);
this
.
addVisible
=
true
;
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.user-container {
width: 100%;
height: 100%;
}
</
style
>
base-manager-ui/admin/src/pages/basicset/system/user/modal/AddUserRole.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div>
<a-modal
title=
"分配角色"
:visible=
"Visible"
@
cancel=
"handleCancel"
:maskClosable=
"false"
>
<a-button
slot=
"footer"
@
click=
"handleReset"
>
重置
</a-button>
<a-button
slot=
"footer"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
>
确定
</a-button
>
<a-form-model
:model=
"form"
ref=
"form"
:rules=
"rules"
:label-col=
"
{ span: 5 }"
:wrapper-col="{ span: 19 }"
>
<a-form-model-item
label=
"选择角色"
prop=
"roleIds"
>
<a-select
mode=
"multiple"
v-model=
"form.roleIds"
placeholder=
"请选择角色"
>
<a-select-option
v-for=
"v in roleList"
:key=
"v.id"
:value=
"v.id"
>
{{
v
.
name
}}
</a-select-option>
</a-select>
</a-form-model-item>
</a-form-model>
</a-modal>
</div>
</
template
>
<
script
>
import
{
saveUser
}
from
"
@/services/system
"
;
export
default
{
components
:
{},
props
:
{
addVisible
:
{
required
:
true
,
type
:
Boolean
,
default
:
false
,
},
roleList
:
{
required
:
true
,
type
:
Array
,
default
:
()
=>
[],
},
},
data
()
{
return
{
loading
:
false
,
form
:
{
roleIds
:
[],
},
rules
:
{
roleIds
:
[{
required
:
true
,
message
:
"
请选择角色
"
,
trigger
:
"
change
"
}],
},
};
},
computed
:
{
Visible
:
{
get
()
{
return
this
.
addVisible
;
},
set
(
val
)
{
this
.
$emit
(
"
update:addVisible
"
,
val
);
},
},
},
created
()
{},
methods
:
{
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
},
// 编辑
onEdit
(
row
)
{
this
.
$nextTick
(()
=>
{
this
.
form
=
{
...
row
};
if
(
this
.
form
.
roleIds
)
{
this
.
form
.
roleIds
=
this
.
form
.
roleIds
.
split
(
"
,
"
).
map
(
Number
);
}
else
{
this
.
form
.
roleIds
=
[];
}
});
},
// 保存
handleOk
()
{
this
.
$refs
.
form
.
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
this
.
loading
=
true
;
let
{
id
,
roleIds
,
lastLoginAddress
,
mobile
}
=
this
.
form
;
let
res
=
await
saveUser
({
id
,
lastLoginAddress
,
mobile
,
roleIds
:
roleIds
.
join
(
"
,
"
),
});
this
.
loading
=
false
;
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
==
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
addSuccess
"
);
this
.
handleCancel
();
}
}
});
},
// 重置
handleReset
()
{
this
.
$refs
.
form
.
resetFields
();
},
// 关闭
handleCancel
()
{
this
.
$refs
.
form
.
resetFields
();
this
.
Visible
=
false
;
},
},
};
</
script
>
<
style
lang=
"less"
scoped
></
style
>
base-manager-ui/admin/src/pages/basicset/system1/System.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div
class=
"system flex flexc"
>
<a-tabs
:activeKey=
"activeKey"
@
change=
"changeRouter"
>
<a-tab-pane
key=
"/system/parameter"
>
<span
slot=
"tab"
>
<a-icon
type=
"container"
/>
系统参数
</span>
</a-tab-pane>
<a-tab-pane
key=
"/system/task"
>
<span
slot=
"tab"
>
<a-icon
type=
"compass"
/>
任务信息
</span>
</a-tab-pane>
<a-tab-pane
key=
"/system/systemlogs"
>
<span
slot=
"tab"
>
<a-icon
type=
"cloud-server"
/>
操作日志
</span>
</a-tab-pane>
</a-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
(
path
)
{
this
.
$router
.
push
(
path
);
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.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
base-manager-ui/admin/src/pages/basicset/system1/parameter/Parameter.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div
class=
"parameter"
>
<div
class=
"control flex aic jcb mb15 pdr6"
>
<div>
<a-button
type=
"primary"
style=
"margin-right: 10px"
@
click=
"handleAdd"
>
新增
</a-button
>
<a-button
type=
"danger"
@
click=
"handleDelAll"
>
批量删除
</a-button>
</div>
<div
class=
"search-box"
>
<a-input-search
placeholder=
"请输入参数名搜索"
enter-button=
"搜索"
v-model=
"searchValue"
allowClear
@
search=
"onSearch"
/>
</div>
</div>
<!-- 表格 -->
<div
class=
"table-content"
>
<a-table
:row-selection=
"
{
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
:loading="loading"
bordered
:scroll="{ y: 590 }"
:columns="columns"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: current,
total: total,
pageSize: size,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
onChange: handleChange,
onShowSizeChange: showSizeChange,
}"
:data-source="tableData"
:rowKey="(record) => record.id"
>
<!-- 序号 -->
<span
slot=
"num"
slot-scope=
"text, record, index"
>
{{
(
current
-
1
)
*
size
+
index
+
1
}}
</span>
<!-- 有效状态 -->
<template
slot=
"validStatus"
slot-scope=
"text"
>
<a-tag>
{{
filterItems
(
text
.
validStatus
,
dict
.
validStatus
)
}}
</a-tag>
</
template
>
<!-- 修改状态 -->
<
template
slot=
"modStatus"
slot-scope=
"text"
>
<a-tag>
{{
filterItems
(
text
.
modStatus
,
dict
.
modStatus
)
}}
</a-tag>
</
template
>
<!-- 展现类型 -->
<
template
slot=
"displayType"
slot-scope=
"text"
>
<!--
{{
text
.
displayType
||
"
--
"
}}
-->
<a-tag>
{{
filterItems
(
text
.
displayType
,
dict
.
displayType
)
}}
</a-tag>
</
template
>
<!-- 操作 -->
<
template
slot=
"action"
slot-scope=
"text"
>
<a-space
size=
"middle"
>
<span
href=
"javascript:;"
class=
"primary pointer"
@
click=
"handleEdit(text)"
>
编辑
</span
>
<span
href=
"javascript:;"
class=
"delete pointer"
@
click=
"handleDel(text.id)"
>
删除
</span
>
</a-space>
</
template
>
</a-table>
</div>
<!-- 新增 -->
<AddParameter
ref=
"AddParameter"
:addVisible.sync=
"addVisible"
:title=
"title"
:dict=
"dict"
@
addSuccess=
"getSystemParameterList"
></AddParameter>
</div>
</template>
<
script
>
import
{
getSystemParameterList
,
delSystemParameter
}
from
"
@/services/system
"
;
import
{
pageSizeOptions
}
from
"
@/config/pageConfig.js
"
;
import
AddParameter
from
"
./modal/AddParameter.vue
"
;
export
default
{
components
:
{
AddParameter
,
},
data
()
{
const
columns
=
[
{
title
:
"
序号
"
,
dataIndex
:
"
num
"
,
width
:
"
65px
"
,
scopedSlots
:
{
customRender
:
"
num
"
,
},
},
{
title
:
"
参数名称
"
,
dataIndex
:
"
name
"
,
},
{
title
:
"
一级组织
"
,
// dataIndex: "firstOrganize",
customRender
:
(
text
)
=>
{
return
text
.
firstOrganize
||
"
--
"
;
},
},
{
title
:
"
二级组织
"
,
// dataIndex: "secondOrganize",
customRender
:
(
text
)
=>
{
return
text
.
secondOrganize
||
"
--
"
;
},
},
{
title
:
"
参数键
"
,
dataIndex
:
"
paramKey
"
,
},
{
title
:
"
参数值
"
,
dataIndex
:
"
paramValue
"
,
},
{
title
:
"
有效状态
"
,
// dataIndex: "validStatus",
scopedSlots
:
{
customRender
:
"
validStatus
"
,
},
// customRender: (text) => {
// return this.filterItems(text.validStatus, this.dict.validStatus);
// },
},
{
title
:
"
修改状态
"
,
scopedSlots
:
{
customRender
:
"
modStatus
"
,
},
},
{
title
:
"
展现类型
"
,
scopedSlots
:
{
customRender
:
"
displayType
"
,
},
},
{
title
:
"
备注
"
,
// dataIndex: "remark",
customRender
:
(
text
)
=>
{
return
text
.
remark
||
"
--
"
;
},
},
{
title
:
"
操作
"
,
width
:
"
120px
"
,
scopedSlots
:
{
customRender
:
"
action
"
},
},
];
return
{
columns
,
loading
:
false
,
current
:
1
,
size
:
10
,
total
:
0
,
pageSizeOptions
,
searchValue
:
""
,
// 搜索
tableData
:
[],
selectedRowKeys
:
[],
dict
:
{},
// 字典
addVisible
:
false
,
title
:
"
新增
"
,
};
},
created
()
{
this
.
getSystemParameterList
();
},
methods
:
{
// 获取参数列表
async
getSystemParameterList
()
{
this
.
loading
=
true
;
let
res
=
await
getSystemParameterList
({
page
:
this
.
current
,
size
:
this
.
size
,
name
:
`%
${
this
.
searchValue
}
%`
,
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
let
{
total
,
data
,
dict
}
=
res
.
data
.
data
;
this
.
dict
=
dict
;
if
(
!
data
.
length
&&
this
.
current
>
1
)
{
this
.
current
-=
1
;
}
this
.
total
=
total
;
this
.
tableData
=
data
;
}
},
// 新增
handleAdd
()
{
this
.
title
=
"
新增
"
;
this
.
$refs
.
AddParameter
.
onAdd
();
this
.
addVisible
=
true
;
},
// 搜索
onSearch
()
{
this
.
current
=
1
;
this
.
getSystemParameterList
();
},
// 分页
handleChange
(
num
)
{
this
.
current
=
num
;
this
.
getSystemParameterList
();
},
// 改变每页显示数量
showSizeChange
(
current
,
size
)
{
this
.
current
=
current
;
this
.
size
=
size
;
this
.
getSystemParameterList
();
},
// 选择
onSelectChange
(
keys
)
{
this
.
selectedRowKeys
=
keys
;
},
// 批量删除
handleDelAll
()
{
if
(
!
this
.
selectedRowKeys
.
length
)
{
this
.
$message
.
warn
(
"
请先勾选数据
"
);
return
;
}
let
ids
=
this
.
selectedRowKeys
.
join
(
"
,
"
);
this
.
handleDel
(
ids
);
},
// 编辑
handleEdit
(
row
)
{
this
.
title
=
"
编辑
"
;
this
.
$refs
.
AddParameter
.
onEdit
(
row
);
this
.
addVisible
=
true
;
},
// 删除
handleDel
(
id
)
{
let
_this
=
this
;
this
.
$confirm
({
title
:
"
系统提示
"
,
content
:
"
删除不可恢复,确定要删除吗?
"
,
okText
:
"
确定
"
,
okType
:
"
danger
"
,
cancelText
:
"
取消
"
,
centered
:
true
,
icon
:
"
exclamation-circle
"
,
maskClosable
:
true
,
async
onOk
()
{
let
res
=
await
delSystemParameter
({
id
});
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
==
1
)
{
_this
.
$message
.
success
(
msg
);
_this
.
selectedRowKeys
=
[];
_this
.
getSystemParameterList
();
}
},
onCancel
()
{
console
.
log
(
"
Cancel
"
);
},
});
},
// 过滤表格数据
filterItems
(
key
,
dict
=
{})
{
let
val
=
""
;
Object
.
keys
(
dict
).
forEach
((
keys
)
=>
{
if
(
key
==
keys
)
{
val
=
dict
[
keys
];
}
});
return
val
;
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.parameter {
width: 100%;
height: 100%;
}
</
style
>
\ No newline at end of file
base-manager-ui/admin/src/pages/basicset/system1/parameter/modal/AddParameter.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div>
<a-modal
:title=
"title"
:visible=
"Visible"
@
cancel=
"handleCancel"
:maskClosable=
"false"
>
<template
slot=
"footer"
>
<a-space>
<a-button
@
click=
"handleReset"
>
重置
</a-button>
<a-upload
name=
"file"
:show-upload-list=
"false"
:action=
"api + 'base/file/commonupload'"
@
change=
"handleUpload"
>
<a-button
type=
"primary"
>
文件上传
</a-button>
</a-upload>
<a-button
type=
"primary"
@
click=
"handleOk"
>
确定
</a-button>
</a-space>
</
template
>
<a-form-model
:model=
"form"
ref=
"form"
:rules=
"rules"
:label-col=
"{ span: 5 }"
:wrapper-col=
"{ span: 19 }"
>
<a-form-model-item
label=
"参数名称"
prop=
"name"
>
<a-input
v-model=
"form.name"
placeholder=
"请输入参数名称"
/>
</a-form-model-item>
<a-form-model-item
label=
"一级组织"
prop=
"firstOrganize"
>
<a-input
v-model=
"form.firstOrganize"
placeholder=
"请输入一级组织"
/>
</a-form-model-item>
<a-form-model-item
label=
"二级组织"
prop=
"secondOrganize"
>
<a-input
v-model=
"form.secondOrganize"
placeholder=
"请输入二级组织"
/>
</a-form-model-item>
<a-form-model-item
label=
"参数键"
prop=
"paramKey"
>
<a-input
v-model=
"form.paramKey"
placeholder=
"请输入参数键"
/>
</a-form-model-item>
<a-form-model-item
label=
"参数值"
prop=
"paramValue"
>
<a-input
v-model=
"form.paramValue"
placeholder=
"请输入参数值"
/>
</a-form-model-item>
<a-form-model-item
label=
"参数修改状态"
prop=
"modStatus"
>
<a-select
v-model=
"form.modStatus"
placeholder=
"请选择参数修改状态"
>
<a-select-option
v-for=
"(v, key) in dict.modStatus"
:key=
"key"
:value=
"Number(key)"
>
{{ v }}
</a-select-option
>
</a-select>
</a-form-model-item>
<a-form-model-item
label=
"展现类型"
prop=
"displayType"
>
<!-- <a-input v-model="form.displayType" placeholder="请输入排序" /> -->
<a-select
v-model=
"form.displayType"
placeholder=
"请选择展现类型"
>
<a-select-option
v-for=
"(v, key) in dict.displayType"
:key=
"key"
:value=
"Number(key)"
>
{{ v }}
</a-select-option
>
</a-select>
</a-form-model-item>
<a-form-model-item
label=
"参数有效状态"
prop=
"validStatus"
>
<a-radio-group
v-model=
"form.validStatus"
>
<a-radio
v-for=
"(v, key) in dict.validStatus"
:value=
"Number(key)"
:key=
"key"
>
{{ v }}
</a-radio
>
</a-radio-group>
</a-form-model-item>
<a-form-model-item
label=
"备注"
prop=
"remark"
>
<a-textarea
:autoSize=
"{ minRows: 4, maxRows: 4 }"
v-model=
"form.remark"
placeholder=
"请输入备注"
allow-clear
/>
</a-form-model-item>
</a-form-model>
</a-modal>
</div>
</template>
<
script
>
import
{
saveSystemParameter
}
from
"
@/services/system
"
;
export
default
{
components
:
{},
props
:
{
addVisible
:
{
required
:
true
,
type
:
Boolean
,
default
:
false
,
},
title
:
{
required
:
true
,
type
:
String
,
default
:
""
,
},
dict
:
{
required
:
true
,
type
:
Object
,
default
:
()
=>
{
return
{};
},
},
},
data
()
{
return
{
api
:
process
.
env
.
VUE_APP_API_BASE_URL
+
"
/
"
,
form
:
{
name
:
""
,
// 参数名称
firstOrganize
:
""
,
// 一级组织
secondOrganize
:
""
,
// 二级组织
paramKey
:
""
,
// 参数键
paramValue
:
""
,
// 参数值
modStatus
:
undefined
,
// 参数修改状态
displayType
:
undefined
,
// 展现类型
validStatus
:
""
,
// 参数有效状态
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
:
{
// 关闭弹窗
handleCancel
()
{
this
.
$refs
.
form
.
resetFields
();
this
.
Visible
=
false
;
},
// 重置
handleReset
()
{
this
.
$refs
.
form
.
resetFields
();
},
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
},
// 编辑
onEdit
(
row
)
{
this
.
$nextTick
(()
=>
{
this
.
form
=
{
...
row
};
});
},
// 保存
handleOk
()
{
this
.
$refs
.
form
.
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
let
res
=
await
saveSystemParameter
(
this
.
form
);
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
==
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
addSuccess
"
);
this
.
handleCancel
();
}
}
});
},
// 文件上传
handleUpload
({
file
})
{
if
(
file
.
status
===
"
done
"
)
{
let
{
code
,
url
}
=
file
.
response
;
if
(
code
==
1
)
{
this
.
form
.
paramValue
=
url
;
}
}
},
},
};
</
script
>
<
style
lang=
"less"
scoped
></
style
>
base-manager-ui/admin/src/pages/basicset/system1/systemlogs/SystemLogs.vue
0 → 100644
View file @
ff540a6d
<
template
>
<!-- 系统日志 -->
<div
class=
"system-logs"
>
<div
class=
"control pdr6"
>
<div
class=
"search-box"
>
<a-input-search
placeholder=
"请输入请求地址搜索"
enter-button=
"搜索"
v-model=
"searchValue"
allowClear
@
search=
"onSearch"
/>
</div>
</div>
<!-- 表格 -->
<div
class=
"table-content"
>
<a-table
:loading=
"loading"
bordered
:scroll=
"
{ y: 590 }"
:columns="columns"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: current,
total: total,
pageSize: size,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
onChange: handleChange,
onShowSizeChange: showSizeChange,
}"
:data-source="tableData"
:rowKey="(record) => record.id"
>
<!-- 序号 -->
<span
slot=
"num"
slot-scope=
"text, record, index"
>
{{
(
current
-
1
)
*
size
+
index
+
1
}}
</span>
<!-- 操作时间 -->
<template
slot=
"logDate"
slot-scope=
"text"
>
{{
text
.
logDate
|
dateFormat
}}
</
template
>
</a-table>
</div>
</div>
</template>
<
script
>
import
{
getSystemLogsList
}
from
"
@/services/system
"
;
import
{
pageSizeOptions
}
from
"
@/config/pageConfig.js
"
;
const
columns
=
[
{
title
:
"
序号
"
,
dataIndex
:
"
num
"
,
width
:
"
65px
"
,
scopedSlots
:
{
customRender
:
"
num
"
,
},
},
{
title
:
"
用户名称
"
,
dataIndex
:
"
userName
"
,
},
{
title
:
"
登录名称
"
,
dataIndex
:
"
loginName
"
,
},
{
title
:
"
请求地址
"
,
dataIndex
:
"
requestUrl
"
,
},
{
title
:
"
操作内容
"
,
dataIndex
:
"
content
"
,
},
{
title
:
"
操作IP地址
"
,
dataIndex
:
"
ip
"
,
},
{
title
:
"
操作时间
"
,
scopedSlots
:
{
customRender
:
"
logDate
"
,
},
},
];
export
default
{
data
()
{
return
{
columns
,
loading
:
false
,
current
:
1
,
size
:
10
,
total
:
0
,
pageSizeOptions
,
searchValue
:
""
,
// 搜索
tableData
:
[],
};
},
created
()
{
this
.
getSystemLogsList
();
},
methods
:
{
// 获取日志列表
async
getSystemLogsList
()
{
this
.
loading
=
true
;
let
res
=
await
getSystemLogsList
({
page
:
this
.
current
,
size
:
this
.
size
,
requestUrl
:
this
.
searchValue
,
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
}
=
res
.
data
.
data
;
this
.
tableData
=
data
;
this
.
total
=
total
;
}
},
// 搜索
onSearch
()
{
this
.
current
=
1
;
this
.
getSystemLogsList
();
},
// 分页
handleChange
(
num
)
{
this
.
current
=
num
;
this
.
getSystemLogsList
();
},
// 改变每页显示数量
showSizeChange
(
current
,
size
)
{
this
.
current
=
current
;
this
.
size
=
size
;
this
.
getSystemLogsList
();
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.system-logs {
width: 100%;
height: 100%;
.control {
display: flex;
justify-content: flex-end;
margin-bottom: 15px;
}
}
</
style
>
\ No newline at end of file
base-manager-ui/admin/src/pages/basicset/system1/task/TaskSet.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div
class=
"task-set"
>
<div
class=
"control flex aic jcb mb15 pdr6"
>
<div>
<a-button
type=
"primary"
style=
"margin-right: 10px"
@
click=
"handleAdd"
>
新增
</a-button
>
<a-button
type=
"danger"
@
click=
"handleDelAll"
>
批量删除
</a-button>
</div>
<div
class=
"search-box"
>
<a-input-search
placeholder=
"请输入任务名搜索"
enter-button=
"搜索"
v-model=
"searchValue"
allowClear
@
search=
"onSearch"
/>
</div>
</div>
<!-- 表格 -->
<div
class=
"table-content"
>
<a-table
:row-selection=
"
{
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
:loading="loading"
bordered
:scroll="{ y: 590 }"
:columns="columns"
:pagination="{
showTotal: (total) => `共 ${total} 条`,
current: current,
total: total,
pageSize: size,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
onChange: handleChange,
onShowSizeChange: showSizeChange,
}"
:data-source="tableData"
:rowKey="(record) => record.id"
>
<!-- 序号 -->
<span
slot=
"num"
slot-scope=
"text, record, index"
>
{{
(
current
-
1
)
*
size
+
index
+
1
}}
</span>
<!-- 执行策略 -->
<template
slot=
"excuteStrategy"
slot-scope=
"text"
>
<a-tag
>
{{
filterItems
(
text
.
excuteStrategy
,
dict
.
excuteStrategy
)
}}
</a-tag>
</
template
>
<!-- 最后执行时间 -->
<
template
slot=
"lastExcuteTime"
slot-scope=
"text"
>
{{
text
.
lastExcuteTime
|
dateFormat
}}
</
template
>
<!-- 任务状态 -->
<
template
slot=
"status"
slot-scope=
"text"
>
<a-tag>
{{
filterItems
(
text
.
status
,
dict
.
status
)
}}
</a-tag>
</
template
>
<!-- 操作 -->
<
template
slot=
"action"
slot-scope=
"text"
>
<a-space
size=
"middle"
>
<span
href=
"javascript:;"
class=
"primary pointer"
@
click=
"handleEdit(text)"
>
编辑
</span
>
<span
href=
"javascript:;"
class=
"delete pointer"
@
click=
"handleDel(text.id)"
>
删除
</span
>
</a-space>
</
template
>
</a-table>
</div>
<!-- 新增 -->
<AddTask
ref=
"AddTask"
:addVisible.sync=
"addVisible"
:title=
"title"
:dict=
"dict"
@
addSuccess=
"getSystemTaskList"
></AddTask>
</div>
</template>
<
script
>
import
{
getSystemTaskList
,
delSystemTask
}
from
"
@/services/system
"
;
import
{
pageSizeOptions
}
from
"
@/config/pageConfig.js
"
;
import
AddTask
from
"
./modal/AddTask.vue
"
;
export
default
{
components
:
{
AddTask
,
},
data
()
{
const
columns
=
[
{
title
:
"
序号
"
,
dataIndex
:
"
num
"
,
width
:
"
65px
"
,
scopedSlots
:
{
customRender
:
"
num
"
,
},
},
{
title
:
"
任务名称
"
,
dataIndex
:
"
name
"
,
},
{
title
:
"
执行主机
"
,
customRender
:
(
text
)
=>
{
return
text
.
excuteHost
||
"
--
"
;
},
},
{
title
:
"
执行关键字
"
,
customRender
:
(
text
)
=>
{
return
text
.
taskKey
||
"
--
"
;
},
},
{
title
:
"
执行策略
"
,
scopedSlots
:
{
customRender
:
"
excuteStrategy
"
,
},
},
{
title
:
"
最后执行主机
"
,
customRender
:
(
text
)
=>
{
return
text
.
lastExcuteHost
||
"
--
"
;
},
},
{
title
:
"
最后执行时间
"
,
scopedSlots
:
{
customRender
:
"
lastExcuteTime
"
,
},
},
{
title
:
"
任务状态
"
,
scopedSlots
:
{
customRender
:
"
status
"
,
},
},
{
title
:
"
操作
"
,
width
:
"
120px
"
,
scopedSlots
:
{
customRender
:
"
action
"
},
},
];
return
{
columns
,
loading
:
false
,
current
:
1
,
size
:
10
,
total
:
0
,
pageSizeOptions
,
searchValue
:
""
,
// 搜索
tableData
:
[],
selectedRowKeys
:
[],
dict
:
{},
// 字典
addVisible
:
false
,
title
:
"
新增
"
,
};
},
created
()
{
this
.
getSystemTaskList
();
},
methods
:
{
// 获取参数列表
async
getSystemTaskList
()
{
this
.
loading
=
true
;
let
res
=
await
getSystemTaskList
({
page
:
this
.
current
,
size
:
this
.
size
,
name
:
`%
${
this
.
searchValue
}
%`
,
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
let
{
total
,
data
,
dict
}
=
res
.
data
.
data
;
this
.
dict
=
dict
;
if
(
!
data
.
length
&&
this
.
current
>
1
)
{
this
.
current
-=
1
;
this
.
getSystemTaskList
();
}
this
.
total
=
total
;
this
.
tableData
=
data
;
}
},
// 新增
handleAdd
()
{
this
.
title
=
"
新增
"
;
this
.
$refs
.
AddTask
.
onAdd
();
this
.
addVisible
=
true
;
},
// 搜索
onSearch
()
{
this
.
current
=
1
;
this
.
getSystemTaskList
();
},
// 分页
handleChange
(
num
)
{
this
.
current
=
num
;
this
.
getSystemTaskList
();
},
// 改变每页显示数量
showSizeChange
(
current
,
size
)
{
this
.
current
=
current
;
this
.
size
=
size
;
this
.
getSystemTaskList
();
},
// 选择
onSelectChange
(
keys
)
{
this
.
selectedRowKeys
=
keys
;
},
// 批量删除
handleDelAll
()
{
if
(
!
this
.
selectedRowKeys
.
length
)
{
this
.
$message
.
warn
(
"
请先勾选数据
"
);
return
;
}
let
ids
=
this
.
selectedRowKeys
.
join
(
"
,
"
);
this
.
handleDel
(
ids
);
},
// 编辑
handleEdit
(
row
)
{
console
.
log
(
row
);
this
.
title
=
"
编辑
"
;
this
.
$refs
.
AddTask
.
onEdit
(
row
);
this
.
addVisible
=
true
;
},
// 删除
handleDel
(
id
)
{
let
_this
=
this
;
this
.
$confirm
({
title
:
"
系统提示
"
,
content
:
"
删除不可恢复,确定要删除吗?
"
,
okText
:
"
确定
"
,
okType
:
"
danger
"
,
cancelText
:
"
取消
"
,
centered
:
true
,
icon
:
"
exclamation-circle
"
,
maskClosable
:
true
,
async
onOk
()
{
let
res
=
await
delSystemTask
({
id
});
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
==
1
)
{
_this
.
$message
.
success
(
msg
);
_this
.
selectedRowKeys
=
[];
_this
.
getSystemTaskList
();
}
},
onCancel
()
{
console
.
log
(
"
Cancel
"
);
},
});
},
// 过滤表格数据
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%;
height: 100%;
}
</
style
>
\ No newline at end of file
base-manager-ui/admin/src/pages/basicset/system1/task/modal/AddTask.vue
0 → 100644
View file @
ff540a6d
<
template
>
<div>
<a-modal
:title=
"title"
:visible=
"Visible"
@
cancel=
"handleCancel"
:maskClosable=
"false"
>
<a-button
slot=
"footer"
@
click=
"handleReset"
>
重置
</a-button>
<a-button
slot=
"footer"
type=
"primary"
@
click=
"handleOk"
>
确定
</a-button>
<a-form-model
:model=
"form"
ref=
"form"
:rules=
"rules"
:label-col=
"
{ span: 5 }"
:wrapper-col="{ span: 19 }"
>
<a-form-model-item
label=
"任务名称"
prop=
"name"
>
<a-input
v-model=
"form.name"
placeholder=
"请输入参数名称"
/>
</a-form-model-item>
<a-form-model-item
label=
"关键字"
prop=
"taskKey"
>
<a-input
v-model=
"form.taskKey"
placeholder=
"请输入关键字"
/>
</a-form-model-item>
<a-form-model-item
label=
"执行服务"
prop=
"excuteService"
>
<a-input
v-model=
"form.excuteService"
placeholder=
"请输入执行服务"
/>
</a-form-model-item>
<a-form-model-item
label=
"执行策略"
prop=
"excuteStrategy"
>
<a-select
v-model=
"form.excuteStrategy"
@
change=
"changeExcuteStrategy"
placeholder=
"请选择执行策略"
>
<a-select-option
v-for=
"(v, key) in dict.excuteStrategy"
:key=
"key"
:value=
"Number(key)"
>
{{
v
}}
</a-select-option
>
</a-select>
</a-form-model-item>
<a-form-model-item
label=
"执行日期"
v-if=
"form.excuteStrategy != 4"
prop=
"excuteDate"
>
<a-input
v-if=
"form.excuteStrategy == 1"
disabled
value=
"每天"
placeholder=
"请输入执行日期"
/>
<a-select
placeholder=
"请选择执行日期"
v-model.number=
"form.excuteDate"
v-else-if=
"form.excuteStrategy == 2"
>
<a-select-option
v-for=
"(v, key) in weeks"
:key=
"key"
:value=
"Number(key)"
>
{{
v
}}
</a-select-option>
</a-select>
<a-select
placeholder=
"请选择执行日期"
v-else-if=
"form.excuteStrategy == 3"
v-model=
"form.excuteDate"
>
<a-select-option
v-for=
"(v, key) in days"
:key=
"key"
:value=
"Number(key)"
>
{{
v
}}
</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item
label=
"执行间隔时间"
prop=
"excuteDate"
v-else
>
<a-input
placeholder=
"执行间隔时间"
v-model.number=
"form.excuteDate"
suffix=
"秒"
/>
</a-form-model-item>
<a-form-model-item
label=
"执行时间"
v-if=
"form.excuteStrategy != 4"
prop=
"excuteTime"
>
<a-time-picker
valueFormat=
"HH:mm"
format=
"HH:mm"
v-model=
"form.excuteTime"
/>
</a-form-model-item>
<a-form-model-item
label=
"执行主机"
prop=
"excuteHost"
>
<a-input
v-model=
"form.excuteHost"
placeholder=
"请输入执行主机"
/>
</a-form-model-item>
<a-form-model-item
label=
"执行参数"
prop=
"excuteParam"
>
<a-input
v-model=
"form.excuteParam"
placeholder=
"请输入执行参数"
/>
</a-form-model-item>
<a-form-model-item
label=
"备注"
prop=
"remark"
>
<a-textarea
:autoSize=
"
{ minRows: 4, maxRows: 4 }"
v-model="form.remark"
placeholder="请输入备注"
allow-clear
/>
</a-form-model-item>
</a-form-model>
</a-modal>
</div>
</
template
>
<
script
>
import
{
saveSystemTask
}
from
"
@/services/system
"
;
export
default
{
components
:
{},
props
:
{
addVisible
:
{
required
:
true
,
type
:
Boolean
,
default
:
false
,
},
title
:
{
required
:
true
,
type
:
String
,
default
:
""
,
},
dict
:
{
required
:
true
,
type
:
Object
,
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
"
}],
taskKey
:
[{
required
:
true
,
message
:
"
请输入关键字
"
,
trigger
:
"
blur
"
}],
excuteService
:
[
{
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
:
{
// 切换执行策略
changeExcuteStrategy
(
val
)
{
if
(
val
==
1
)
{
this
.
form
.
excuteDate
=
0
;
}
else
{
this
.
form
.
excuteDate
=
undefined
;
}
if
(
val
==
4
)
{
this
.
form
.
excuteTime
=
""
;
}
},
// 关闭弹窗
handleCancel
()
{
this
.
$refs
.
form
.
resetFields
();
this
.
Visible
=
false
;
},
// 重置
handleReset
()
{
this
.
$refs
.
form
.
resetFields
();
},
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
},
// 编辑
onEdit
(
row
)
{
this
.
$nextTick
(()
=>
{
this
.
form
=
{
...
row
};
});
},
// 保存
handleOk
()
{
this
.
$refs
.
form
.
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
let
res
=
await
saveSystemTask
(
this
.
form
);
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
==
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
addSuccess
"
);
this
.
handleCancel
();
}
}
});
},
},
};
</
script
>
<
style
lang=
"less"
scoped
></
style
>
base-manager-ui/admin/src/router/config.js
View file @
ff540a6d
...
...
@@ -306,8 +306,34 @@ const options = {
meta
:
{
icon
:
"
global
"
,
},
redirect
:
"
system/
paramet
er
"
,
redirect
:
"
system/
us
er
"
,
children
:
[
{
path
:
"
user
"
,
name
:
"
用户管理
"
,
component
:
()
=>
import
(
"
@/pages/basicset/system/user/User
"
),
meta
:
{
invisible
:
true
},
},
{
path
:
"
role
"
,
name
:
"
角色管理
"
,
component
:
()
=>
import
(
"
@/pages/basicset/system/role/Role
"
),
meta
:
{
invisible
:
true
},
},
{
path
:
"
resource
"
,
name
:
"
资源管理
"
,
component
:
()
=>
import
(
"
@/pages/basicset/system/resourceManage/Resource
"
),
meta
:
{
invisible
:
true
},
},
{
path
:
"
dimension
"
,
name
:
"
维度管理
"
,
component
:
()
=>
import
(
"
@/pages/basicset/system/dimension/Dimension
"
),
meta
:
{
invisible
:
true
},
},
{
path
:
"
parameter
"
,
name
:
"
系统参数
"
,
...
...
base-manager-ui/admin/src/services/basicsetApi.js
View file @
ff540a6d
...
...
@@ -50,7 +50,6 @@ module.exports = {
edit
:
`
${
BASE_URL
}
/base/site/matter/edit`
,
info
:
`
${
BASE_URL
}
/base/site/matter/info`
,
save
:
`
${
BASE_URL
}
/base/site/matter/save`
,
batchSave
:
`
${
BASE_URL
}
/base/site/matter/batchSave`
,
delete
:
`
${
BASE_URL
}
/base/site/matter/delete`
,
},
// 业务
...
...
@@ -350,6 +349,44 @@ module.exports = {
save
:
`
${
BASE_URL
}
/base/task/save`
,
delete
:
`
${
BASE_URL
}
/base/task/delete`
,
},
// 维度
dimension
:
{
list
:
`
${
BASE_URL
}
/base/dimension/list`
,
info
:
`
${
BASE_URL
}
/base/dimension/info`
,
save
:
`
${
BASE_URL
}
/base/dimension/save`
,
delete
:
`
${
BASE_URL
}
/base/dimension/delete`
,
},
// 角色资源维度
dimensionResource
:
{
list
:
`
${
BASE_URL
}
/base/dimension/resource/rule/list`
,
info
:
`
${
BASE_URL
}
/base/dimension/resource/rule/info`
,
save
:
`
${
BASE_URL
}
/base/dimension/resource/rule/save`
,
delete
:
`
${
BASE_URL
}
/base/dimension/resource/rule/delete`
,
},
// 用户
user
:
{
list
:
`
${
BASE_URL
}
/base/user/list`
,
info
:
`
${
BASE_URL
}
/base/user/info`
,
save
:
`
${
BASE_URL
}
/base/user/save`
,
delete
:
`
${
BASE_URL
}
/base/user/delete`
,
},
// 角色
role
:
{
list
:
`
${
BASE_URL
}
/base/role/list`
,
info
:
`
${
BASE_URL
}
/base/role/info`
,
save
:
`
${
BASE_URL
}
/base/role/save`
,
delete
:
`
${
BASE_URL
}
/base/role/delete`
,
authList
:
`
${
BASE_URL
}
/base/role/auth/list`
,
distributionSource
:
`
${
BASE_URL
}
/base/role/auth/distributionSource`
,
},
// 资源
resource
:
{
list
:
`
${
BASE_URL
}
/base/resource/list`
,
info
:
`
${
BASE_URL
}
/base/resource/info`
,
save
:
`
${
BASE_URL
}
/base/resource/save`
,
delete
:
`
${
BASE_URL
}
/base/resource/delete`
,
refreshUrl
:
`
${
BASE_URL
}
/base/resource/refreshUrl`
,
},
},
// 站点大厅
hall
:
{
...
...
base-manager-ui/admin/src/services/system.js
View file @
ff540a6d
...
...
@@ -46,3 +46,112 @@ export async function saveSystemTask(data) {
export
async
function
delSystemTask
(
data
)
{
return
request
(
system
.
task
.
delete
,
METHOD
.
GET
,
data
);
}
/*
* 用户管理
*/
// 获取用户列表
export
async
function
getUserList
(
data
)
{
return
request
(
system
.
user
.
list
,
METHOD
.
POST
,
data
);
}
// 获取用户信息
export
async
function
getUserInfo
(
data
)
{
return
request
(
system
.
user
.
info
,
METHOD
.
GET
,
data
);
}
// 保存用户信息
export
async
function
saveUser
(
data
)
{
return
request
(
system
.
user
.
save
,
METHOD
.
POST
,
data
);
}
// 删除用户信息
export
async
function
delUser
(
data
)
{
return
request
(
system
.
user
.
delete
,
METHOD
.
GET
,
data
);
}
/*
* 角色管理
*/
// 获取角色列表
export
async
function
getRoleList
(
data
)
{
return
request
(
system
.
role
.
list
,
METHOD
.
POST
,
data
);
}
// 获取角色信息
export
async
function
getRoleInfo
(
data
)
{
return
request
(
system
.
role
.
info
,
METHOD
.
GET
,
data
);
}
// 保存角色信息
export
async
function
saveRole
(
data
)
{
return
request
(
system
.
role
.
save
,
METHOD
.
POST
,
data
);
}
// 删除角色信息
export
async
function
delRole
(
data
)
{
return
request
(
system
.
role
.
delete
,
METHOD
.
GET
,
data
);
}
// 获取角色资源列表
export
async
function
getRoleResourceList
(
data
)
{
return
request
(
system
.
role
.
authList
,
METHOD
.
POST
,
data
);
}
// 保存角色资源信息
export
async
function
saveRoleResource
(
data
)
{
return
request
(
system
.
role
.
distributionSource
,
METHOD
.
POST
,
data
);
}
/*
* 资源管理
*/
// 获取资源列表
export
async
function
getResourceList
(
data
)
{
return
request
(
system
.
resource
.
list
,
METHOD
.
POST
,
data
);
}
// 获取资源信息
export
async
function
getResourceInfo
(
data
)
{
return
request
(
system
.
resource
.
info
,
METHOD
.
GET
,
data
);
}
// 保存资源信息
export
async
function
saveResource
(
data
)
{
return
request
(
system
.
resource
.
save
,
METHOD
.
POST
,
data
);
}
// 删除资源信息
export
async
function
delResource
(
data
)
{
return
request
(
system
.
resource
.
delete
,
METHOD
.
GET
,
data
);
}
// 刷新资源
export
async
function
refreshResource
(
data
)
{
return
request
(
system
.
resource
.
refreshUrl
,
METHOD
.
POST
,
data
);
}
/*
* 维度管理
*/
// 获取维度列表
export
async
function
getDimensionList
(
data
)
{
return
request
(
system
.
dimension
.
list
,
METHOD
.
POST
,
data
);
}
// 获取维度信息
export
async
function
getDimensionInfo
(
data
)
{
return
request
(
system
.
dimension
.
info
,
METHOD
.
GET
,
data
);
}
// 保存维度信息
export
async
function
saveDimension
(
data
)
{
return
request
(
system
.
dimension
.
save
,
METHOD
.
POST
,
data
);
}
// 删除维度信息
export
async
function
delDimension
(
data
)
{
return
request
(
system
.
dimension
.
delete
,
METHOD
.
GET
,
data
);
}
// 获取角色资源维度列表
export
async
function
getDimResList
(
data
)
{
return
request
(
system
.
dimensionResource
.
list
,
METHOD
.
POST
,
data
);
}
// 获取角色资源维度信息
export
async
function
getDimResInfo
(
data
)
{
return
request
(
system
.
dimensionResource
.
info
,
METHOD
.
GET
,
data
);
}
// 保存角色资源维度信息
export
async
function
saveDimRes
(
data
)
{
return
request
(
system
.
dimensionResource
.
save
,
METHOD
.
POST
,
data
);
}
// 删除角色资源维度信息
export
async
function
delDimRes
(
data
)
{
return
request
(
system
.
dimensionResource
.
delete
,
METHOD
.
GET
,
data
);
}
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