Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
cb23a58b
提交
cb23a58b
authored
3月 06, 2019
作者:
YunaiV
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/master'
上级
c4d5e459
22cc477b
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
464 行增加
和
513 行删除
+464
-513
admin.js
admin-web/mock/admin.js
+5
-5
dic-value.json
admin-web/mock/geographic/dic-value.json
+32
-0
adminList.js
admin-web/src/models/admin/adminList.js
+91
-0
AdminList.js
admin-web/src/pages/Admin/AdminList.js
+243
-0
AdminList.jsx
admin-web/src/pages/Admin/AdminList.jsx
+0
-307
AdminList.less
admin-web/src/pages/Admin/AdminList.less
+7
-187
ResourceList.js
admin-web/src/pages/Admin/ResourceList.js
+1
-1
RoleList.js
admin-web/src/pages/Admin/RoleList.js
+1
-1
admin.js
admin-web/src/services/admin.js
+43
-11
api.js
admin-web/src/services/api.js
+1
-1
request.qs.js
admin-web/src/utils/request.qs.js
+40
-0
没有找到文件。
admin-web/mock/admin.js
浏览文件 @
cb23a58b
/* eslint-disable */
import
adminMenu
from
'./geographic/admin-menu.json'
;
import
adminMenuAll
from
'./geographic/admin-menu-all.json'
;
import
adminUrls
from
'./geographic/admin-urls'
;
import
resourceTree
from
'./geographic/resource-tree.json'
;
import
roleQuery
from
'./geographic/role-query.json'
;
/* eslint-disable */
function
getAdminMenu
(
req
,
res
)
{
return
res
.
json
(
adminMenu
);
}
...
...
@@ -26,8 +26,8 @@ function getQueryRole(req, res) {
}
export
default
{
'GET /admin-api/admin/resource/admin_menu_tree'
:
getAdminMenuAll
,
'GET /admin-api/admin/resource/admin_url_list'
:
getAdminUrls
,
'GET /admin-api/admin/resource/tree'
:
getResourceTree
,
'GET /admin-api/admin/role/page'
:
getQueryRole
,
'GET /admin-api/admin
s
/resource/admin_menu_tree'
:
getAdminMenuAll
,
'GET /admin-api/admin
s
/resource/admin_url_list'
:
getAdminUrls
,
'GET /admin-api/admin
s
/resource/tree'
:
getResourceTree
,
'GET /admin-api/admin
s
/role/page'
:
getQueryRole
,
};
admin-web/mock/geographic/dic-value.json
0 → 100644
浏览文件 @
cb23a58b
{
"code"
:
0
,
"message"
:
""
,
"data"
:
[
{
"enumValue"
:
"gender"
,
"values"
:
[
{
"value"
:
"1"
,
"displayName"
:
"男"
},
{
"value"
:
"2"
,
"displayName"
:
"女"
}
]
},
{
"enumValue"
:
"gender"
,
"values"
:
[
{
"value"
:
"1"
,
"displayName"
:
"男"
},
{
"value"
:
"2"
,
"displayName"
:
"女"
}
]
}
]
}
admin-web/src/models/admin/adminList.js
0 → 100644
浏览文件 @
cb23a58b
import
{
message
}
from
'antd'
;
import
{
addAdmin
,
updateAdmin
,
updateAdminStatus
,
deleteAdmin
,
queryAdmin
,
}
from
'../../services/admin'
;
export
default
{
namespace
:
'adminList'
,
state
:
{
list
:
[],
count
:
0
,
pageNo
:
0
,
pageSize
:
10
,
},
effects
:
{
*
add
({
payload
},
{
call
,
put
})
{
const
{
callback
,
body
,
queryParams
}
=
payload
;
const
response
=
yield
call
(
addAdmin
,
body
);
if
(
callback
)
{
callback
(
response
);
}
yield
put
({
type
:
'query'
,
payload
:
{
...
queryParams
,
},
});
},
*
update
({
payload
},
{
call
,
put
})
{
const
{
callback
,
body
,
queryParams
}
=
payload
;
const
response
=
yield
call
(
updateAdmin
,
body
);
if
(
callback
)
{
callback
(
response
);
}
yield
put
({
type
:
'query'
,
payload
:
{
...
queryParams
,
},
});
},
*
updateStatus
({
payload
},
{
call
,
put
})
{
const
{
body
,
queryParams
}
=
payload
;
yield
call
(
updateAdminStatus
,
body
);
message
.
info
(
'更新成功!'
);
yield
put
({
type
:
'query'
,
payload
:
{
...
queryParams
,
},
});
},
*
delete
({
payload
},
{
call
,
put
})
{
const
{
queryParams
,
body
}
=
payload
;
yield
call
(
deleteAdmin
,
body
);
message
.
info
(
'删除成功!'
);
yield
put
({
type
:
'query'
,
payload
:
{
...
queryParams
,
},
});
},
*
query
({
payload
},
{
call
,
put
})
{
const
response
=
yield
call
(
queryAdmin
,
payload
);
message
.
info
(
'查询成功!'
);
const
{
count
,
admins
}
=
response
.
data
;
yield
put
({
type
:
'querySuccess'
,
payload
:
{
list
:
admins
,
count
,
},
});
},
},
reducers
:
{
querySuccess
(
state
,
{
payload
})
{
return
{
...
state
,
...
payload
,
};
},
},
};
admin-web/src/pages/Admin/AdminList.js
0 → 100644
浏览文件 @
cb23a58b
/* eslint-disable */
import
React
,
{
PureComponent
,
Fragment
}
from
'react'
;
import
{
connect
}
from
'dva'
;
import
moment
from
'moment'
;
import
{
Card
,
Form
,
Input
,
Select
,
Button
,
Modal
,
message
,
Table
,
Divider
}
from
'antd'
;
import
PageHeaderWrapper
from
'@/components/PageHeaderWrapper'
;
import
styles
from
'./AdminList.less'
;
const
FormItem
=
Form
.
Item
;
const
{
Option
}
=
Select
;
const
status
=
[
'未知'
,
'正常'
,
'禁用'
];
// 添加 form 表单
const
CreateForm
=
Form
.
create
()(
props
=>
{
const
{
modalVisible
,
form
,
handleAdd
,
handleModalVisible
,
modalType
,
initValues
}
=
props
;
const
okHandle
=
()
=>
{
form
.
validateFields
((
err
,
fieldsValue
)
=>
{
if
(
err
)
return
;
form
.
resetFields
();
handleAdd
({
fields
:
fieldsValue
,
modalType
,
initValues
,
});
});
};
const
selectStyle
=
{
width
:
200
,
};
const
title
=
modalType
===
'add'
?
'添加一个 Resource'
:
'更新一个 Resource'
;
const
okText
=
modalType
===
'add'
?
'添加'
:
'更新'
;
return
(
<
Modal
destroyOnClose
title
=
{
title
}
visible
=
{
modalVisible
}
onOk
=
{
okHandle
}
okText
=
{
okText
}
onCancel
=
{()
=>
handleModalVisible
()}
>
<
FormItem
labelCol
=
{{
span
:
5
}}
wrapperCol
=
{{
span
:
15
}}
label
=
"名称"
>
{
form
.
getFieldDecorator
(
'username'
,
{
rules
:
[{
required
:
true
,
message
:
'请输入名称!'
,
min
:
2
}],
initialValue
:
initValues
.
username
,
})(
<
Input
placeholder
=
"请输入"
/>
)}
<
/FormItem
>
<
FormItem
labelCol
=
{{
span
:
5
}}
wrapperCol
=
{{
span
:
15
}}
label
=
"昵称"
>
{
form
.
getFieldDecorator
(
'nickname'
,
{
rules
:
[{
required
:
true
,
message
:
'请输入昵称!'
,
min
:
2
}],
initialValue
:
initValues
.
nickname
,
})(
<
Input
placeholder
=
"请输入"
/>
)}
<
/FormItem
>
<
FormItem
labelCol
=
{{
span
:
5
}}
wrapperCol
=
{{
span
:
15
}}
label
=
"密码"
>
{
form
.
getFieldDecorator
(
'password'
,
{
initialValue
:
initValues
.
password
,
})(
<
Input
placeholder
=
"请输入"
type
=
"password"
/>
)}
<
/FormItem
>
<
/Modal
>
);
});
@
connect
(({
adminList
,
loading
})
=>
({
list
:
adminList
.
list
,
data
:
adminList
,
loading
:
loading
.
models
.
resourceList
,
}))
@
Form
.
create
()
class
ResourceList
extends
PureComponent
{
state
=
{
modalVisible
:
false
,
modalType
:
'add'
,
//add update
initValues
:
{},
};
componentDidMount
()
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'adminList/query'
,
payload
:
{},
});
}
handleModalVisible
=
(
flag
,
modalType
,
initValues
)
=>
{
this
.
setState
({
modalVisible
:
!!
flag
,
initValues
:
initValues
||
{},
modalType
:
modalType
||
'add'
,
});
};
handleAdd
=
({
fields
,
modalType
,
initValues
})
=>
{
const
{
dispatch
,
data
}
=
this
.
props
;
const
queryParams
=
{
pageNo
:
data
.
pageNo
,
pageSize
:
data
.
pageSize
,
};
if
(
modalType
===
'add'
)
{
dispatch
({
type
:
'adminList/add'
,
payload
:
{
body
:
{
...
fields
,
},
queryParams
,
callback
:
()
=>
{
message
.
success
(
'添加成功'
);
this
.
handleModalVisible
();
},
},
});
}
else
{
dispatch
({
type
:
'adminList/update'
,
payload
:
{
body
:
{
...
initValues
,
...
fields
,
},
queryParams
,
callback
:
()
=>
{
message
.
success
(
'更新成功'
);
this
.
handleModalVisible
();
},
},
});
}
};
handleStatus
(
row
)
{
const
{
dispatch
,
data
}
=
this
.
props
;
const
queryParams
=
{
pageNo
:
data
.
pageNo
,
pageSize
:
data
.
pageSize
,
};
const
title
=
row
.
status
===
1
?
'确认禁用'
:
'取消禁用'
;
const
updateStatus
=
row
.
status
===
1
?
2
:
1
;
Modal
.
confirm
({
title
:
`
${
title
}
?`
,
content
:
`
${
row
.
username
}
`
,
onOk
()
{
dispatch
({
type
:
'adminList/updateStatus'
,
payload
:
{
body
:
{
id
:
row
.
id
,
status
:
updateStatus
,
},
queryParams
,
},
});
},
onCancel
()
{},
});
}
render
()
{
const
{
list
}
=
this
.
props
;
const
{
modalVisible
,
modalType
,
initValues
,
defaultExpandAllRows
}
=
this
.
state
;
const
parentMethods
=
{
handleAdd
:
this
.
handleAdd
,
handleModalVisible
:
this
.
handleModalVisible
,
modalType
,
initValues
,
};
const
columns
=
[
{
title
:
'id'
,
dataIndex
:
'id'
,
render
:
text
=>
<
strong
>
{
text
}
<
/strong>
,
},
{
title
:
'用户名'
,
dataIndex
:
'username'
,
render
:
text
=>
<
a
>
{
text
}
<
/a>
,
},
{
title
:
'昵称'
,
dataIndex
:
'nickname'
,
},
{
title
:
'状态'
,
dataIndex
:
'status'
,
render
(
val
)
{
return
<
span
>
{
status
[
val
]}
<
/span>
;
},
},
{
title
:
'操作'
,
render
:
(
text
,
record
)
=>
{
const
statusText
=
record
.
status
===
1
?
'确认禁用'
:
'取消禁用'
;
return
(
<
Fragment
>
<
a
onClick
=
{()
=>
this
.
handleModalVisible
(
true
,
'update'
,
record
)}
>
更新
<
/a
>
<
Divider
type
=
"vertical"
/>
<
a
className
=
{
styles
.
tableDelete
}
onClick
=
{()
=>
this
.
handleStatus
(
record
)}
>
{
statusText
}
<
/a
>
<
Divider
type
=
"vertical"
/>
<
a
className
=
{
styles
.
tableDelete
}
onClick
=
{()
=>
this
.
handleDelete
(
record
)}
>
删除
<
/a
>
<
/Fragment
>
);
},
},
];
return
(
<
PageHeaderWrapper
title
=
"查询表格"
>
<
Card
bordered
=
{
false
}
>
<
div
className
=
{
styles
.
tableList
}
>
<
div
className
=
{
styles
.
tableListOperator
}
>
<
Button
icon
=
"plus"
type
=
"primary"
onClick
=
{()
=>
this
.
handleModalVisible
(
true
,
'add'
,
{})}
>
新建
<
/Button
>
<
/div
>
<
/div
>
<
Table
defaultExpandAllRows
=
{
defaultExpandAllRows
}
columns
=
{
columns
}
dataSource
=
{
list
}
rowKey
=
"id"
/>
<
/Card
>
<
CreateForm
{...
parentMethods
}
modalVisible
=
{
modalVisible
}
/
>
<
/PageHeaderWrapper
>
);
}
}
export
default
ResourceList
;
admin-web/src/pages/Admin/AdminList.jsx
deleted
100644 → 0
浏览文件 @
c4d5e459
import
React
,
{
PureComponent
}
from
'react'
;
import
{
findDOMNode
}
from
'react-dom'
;
import
moment
from
'moment'
;
import
{
connect
}
from
'dva'
;
import
{
List
,
Card
,
Input
,
Progress
,
Button
,
Icon
,
Dropdown
,
Menu
,
Avatar
,
Modal
,
Form
,
DatePicker
,
Select
,
}
from
'antd'
;
import
PageHeaderWrapper
from
'@/components/PageHeaderWrapper'
;
import
Result
from
'@/components/Result'
;
import
styles
from
'./AdminList.less'
;
const
FormItem
=
Form
.
Item
;
const
SelectOption
=
Select
.
Option
;
const
{
Search
,
TextArea
}
=
Input
;
@
connect
(({
list
,
loading
})
=>
({
list
,
loading
:
loading
.
models
.
list
,
}))
@
Form
.
create
()
class
AdminList
extends
PureComponent
{
state
=
{
visible
:
false
,
done
:
false
};
formLayout
=
{
labelCol
:
{
span
:
7
},
wrapperCol
:
{
span
:
13
},
};
componentDidMount
()
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'list/fetch'
,
payload
:
{
count
:
5
,
},
});
}
showModal
=
()
=>
{
this
.
setState
({
visible
:
true
,
current
:
undefined
,
});
};
showEditModal
=
item
=>
{
this
.
setState
({
visible
:
true
,
current
:
item
,
});
};
handleDone
=
()
=>
{
setTimeout
(()
=>
this
.
addBtn
.
blur
(),
0
);
this
.
setState
({
done
:
false
,
visible
:
false
,
});
};
handleCancel
=
()
=>
{
setTimeout
(()
=>
this
.
addBtn
.
blur
(),
0
);
this
.
setState
({
visible
:
false
,
});
};
handleSubmit
=
e
=>
{
e
.
preventDefault
();
const
{
dispatch
,
form
}
=
this
.
props
;
const
{
current
}
=
this
.
state
;
const
id
=
current
?
current
.
id
:
''
;
setTimeout
(()
=>
this
.
addBtn
.
blur
(),
0
);
form
.
validateFields
((
err
,
fieldsValue
)
=>
{
if
(
err
)
return
;
this
.
setState
({
done
:
true
,
});
dispatch
({
type
:
'list/submit'
,
payload
:
{
id
,
...
fieldsValue
},
});
});
};
deleteItem
=
id
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'list/submit'
,
payload
:
{
id
},
});
};
render
()
{
const
{
list
:
{
list
},
loading
,
}
=
this
.
props
;
const
{
form
:
{
getFieldDecorator
},
}
=
this
.
props
;
const
{
visible
,
done
,
current
=
{}
}
=
this
.
state
;
const
editAndDelete
=
(
key
,
currentItem
)
=>
{
if
(
key
===
'edit'
)
this
.
showEditModal
(
currentItem
);
else
if
(
key
===
'delete'
)
{
Modal
.
confirm
({
title
:
'删除任务'
,
content
:
'确定删除该任务吗?'
,
okText
:
'确认'
,
cancelText
:
'取消'
,
onOk
:
()
=>
this
.
deleteItem
(
currentItem
.
id
),
});
}
};
const
modalFooter
=
done
?
{
footer
:
null
,
onCancel
:
this
.
handleDone
}
:
{
okText
:
'保存'
,
onOk
:
this
.
handleSubmit
,
onCancel
:
this
.
handleCancel
};
const
extraContent
=
(
<
div
className=
{
styles
.
extraContent
}
>
<
Button
type=
"primary"
icon=
"plus"
onClick=
{
this
.
showModal
}
ref=
{
component
=>
{
/* eslint-disable */
this
.
addBtn
=
findDOMNode
(
component
);
/* eslint-enable */
}
}
>
添加
</
Button
>
<
Search
className=
{
styles
.
extraContentSearch
}
placeholder=
"请输入"
onSearch=
{
()
=>
({})
}
/>
</
div
>
);
const
paginationProps
=
{
showSizeChanger
:
true
,
showQuickJumper
:
true
,
pageSize
:
5
,
total
:
50
,
};
const
ListContent
=
({
data
:
{
owner
,
createdAt
,
percent
,
status
}
})
=>
(
<
div
className=
{
styles
.
listContent
}
>
<
div
className=
{
styles
.
listContentItem
}
>
<
span
>
Owner
</
span
>
<
p
>
{
owner
}
</
p
>
</
div
>
<
div
className=
{
styles
.
listContentItem
}
>
<
span
>
开始时间
</
span
>
<
p
>
{
moment
(
createdAt
).
format
(
'YYYY-MM-DD HH:mm'
)
}
</
p
>
</
div
>
<
div
className=
{
styles
.
listContentItem
}
>
<
Progress
percent=
{
percent
}
status=
{
status
}
strokeWidth=
{
6
}
style=
{
{
width
:
180
}
}
/>
</
div
>
</
div
>
);
const
MoreBtn
=
props
=>
(
<
Dropdown
overlay=
{
<
Menu
onClick=
{
({
key
})
=>
editAndDelete
(
key
,
props
.
current
)
}
>
<
Menu
.
Item
key=
"edit"
>
编辑
</
Menu
.
Item
>
<
Menu
.
Item
key=
"delete"
>
删除
</
Menu
.
Item
>
</
Menu
>
}
>
<
a
>
更多
<
Icon
type=
"down"
/>
</
a
>
</
Dropdown
>
);
const
getModalContent
=
()
=>
{
if
(
done
)
{
return
(
<
Result
type=
"success"
title=
"操作成功"
description=
"一系列的信息描述,很短同样也可以带标点。"
actions=
{
<
Button
type=
"primary"
onClick=
{
this
.
handleDone
}
>
知道了
</
Button
>
}
className=
{
styles
.
formResult
}
/>
);
}
return
(
<
Form
onSubmit=
{
this
.
handleSubmit
}
>
<
FormItem
label=
"任务名称"
{
...
this
.
formLayout
}
>
{
getFieldDecorator
(
'title'
,
{
rules
:
[{
required
:
true
,
message
:
'请输入任务名称'
}],
initialValue
:
current
.
title
,
})(<
Input
placeholder=
"请输入"
/>)
}
</
FormItem
>
<
FormItem
label=
"开始时间"
{
...
this
.
formLayout
}
>
{
getFieldDecorator
(
'createdAt'
,
{
rules
:
[{
required
:
true
,
message
:
'请选择开始时间'
}],
initialValue
:
current
.
createdAt
?
moment
(
current
.
createdAt
)
:
null
,
})(
<
DatePicker
showTime
placeholder=
"请选择"
format=
"YYYY-MM-DD HH:mm:ss"
style=
{
{
width
:
'100%'
}
}
/>
)
}
</
FormItem
>
<
FormItem
label=
"任务负责人"
{
...
this
.
formLayout
}
>
{
getFieldDecorator
(
'owner'
,
{
rules
:
[{
required
:
true
,
message
:
'请选择任务负责人'
}],
initialValue
:
current
.
owner
,
})(
<
Select
placeholder=
"请选择"
>
<
SelectOption
value=
"付晓晓"
>
付晓晓
</
SelectOption
>
<
SelectOption
value=
"周毛毛"
>
周毛毛
</
SelectOption
>
</
Select
>
)
}
</
FormItem
>
<
FormItem
{
...
this
.
formLayout
}
label=
"产品描述"
>
{
getFieldDecorator
(
'subDescription'
,
{
rules
:
[{
message
:
'请输入至少五个字符的产品描述!'
,
min
:
5
}],
initialValue
:
current
.
subDescription
,
})(<
TextArea
rows=
{
4
}
placeholder=
"请输入至少五个字符"
/>)
}
</
FormItem
>
</
Form
>
);
};
return
(
<
PageHeaderWrapper
>
<
div
className=
{
styles
.
standardList
}
>
<
Card
className=
{
styles
.
listCard
}
bordered=
{
false
}
title=
"管理员列表"
style=
{
{
marginTop
:
24
}
}
bodyStyle=
{
{
padding
:
'0 32px 40px 32px'
}
}
extra=
{
extraContent
}
>
<
List
size=
"large"
rowKey=
"id"
loading=
{
loading
}
pagination=
{
paginationProps
}
dataSource=
{
list
}
renderItem=
{
item
=>
(
<
List
.
Item
actions=
{
[
<
a
onClick=
{
e
=>
{
e
.
preventDefault
();
this
.
showEditModal
(
item
);
}
}
>
编辑
</
a
>,
<
MoreBtn
current=
{
item
}
/>,
]
}
>
<
List
.
Item
.
Meta
avatar=
{
<
Avatar
src=
{
item
.
logo
}
shape=
"square"
size=
"large"
/>
}
title=
{
<
a
href=
{
item
.
href
}
>
{
item
.
title
}
</
a
>
}
description=
{
item
.
subDescription
}
/>
<
ListContent
data=
{
item
}
/>
</
List
.
Item
>
)
}
/>
</
Card
>
</
div
>
<
Modal
title=
{
done
?
null
:
`任务${current.id ? '编辑' : '添加'}`
}
className=
{
styles
.
standardListForm
}
width=
{
640
}
bodyStyle=
{
done
?
{
padding
:
'72px 0'
}
:
{
padding
:
'28px 0 0'
}
}
destroyOnClose
visible=
{
visible
}
{
...
modalFooter
}
>
{
getModalContent
()
}
</
Modal
>
</
PageHeaderWrapper
>
);
}
}
export
default
AdminList
;
admin-web/src/pages/Admin/AdminList.less
浏览文件 @
cb23a58b
@import '~antd/lib/style/themes/default.less';
@import '~@/utils/utils.less';
.standardList {
:global {
.ant-card-head {
border-bottom: none;
.tableList {
.tableListOperator {
margin-bottom: 16px;
button {
margin-right: 8px;
}
.ant-card-head-title {
padding: 24px 0;
line-height: 32px;
}
.ant-card-extra {
padding: 24px 0;
}
.ant-list-pagination {
margin-top: 24px;
text-align: right;
}
.ant-avatar-lg {
width: 48px;
height: 48px;
line-height: 48px;
}
}
.headerInfo {
position: relative;
text-align: center;
& > span {
display: inline-block;
margin-bottom: 4px;
color: @text-color-secondary;
font-size: @font-size-base;
line-height: 22px;
}
& > p {
margin: 0;
color: @heading-color;
font-size: 24px;
line-height: 32px;
}
& > em {
position: absolute;
top: 0;
right: 0;
width: 1px;
height: 56px;
background-color: @border-color-split;
}
}
.listContent {
font-size: 0;
.listContentItem {
display: inline-block;
margin-left: 40px;
color: @text-color-secondary;
font-size: @font-size-base;
vertical-align: middle;
> span {
line-height: 20px;
}
> p {
margin-top: 4px;
margin-bottom: 0;
line-height: 22px;
}
}
}
.extraContentSearch {
width: 272px;
margin-left: 16px;
}
}
@media screen and (max-width: @screen-xs) {
.standardList {
:global {
.ant-list-item-content {
display: block;
flex: none;
width: 100%;
}
.ant-list-item-action {
margin-left: 0;
}
}
.listContent {
margin-left: 0;
& > div {
margin-left: 0;
}
}
.listCard {
:global {
.ant-card-head-title {
overflow: visible;
}
}
}
}
}
@media screen and (max-width: @screen-sm) {
.standardList {
.extraContentSearch {
width: 100%;
margin-left: 0;
}
.headerInfo {
margin-bottom: 16px;
& > em {
display: none;
}
}
}
}
@media screen and (max-width: @screen-md) {
.standardList {
.listContent {
& > div {
display: block;
}
& > div:last-child {
top: 0;
width: 100%;
}
}
}
.listCard {
:global {
.ant-radio-group {
display: block;
margin-bottom: 8px;
}
}
}
}
@media screen and (max-width: @screen-lg) and (min-width: @screen-md) {
.standardList {
.listContent {
& > div {
display: block;
}
& > div:last-child {
top: 0;
width: 100%;
}
}
}
}
@media screen and (max-width: @screen-xl) {
.standardList {
.listContent {
& > div {
margin-left: 24px;
}
& > div:last-child {
top: 0;
}
}
}
}
@media screen and (max-width: 1400px) {
.standardList {
.listContent {
text-align: right;
& > div:last-child {
top: 0;
}
}
}
}
.standardListForm {
:global {
.ant-form-item {
margin-bottom: 12px;
&:last-child {
margin-bottom: 32px;
padding-top: 4px;
}
}
}
}
.formResult {
width: 100%;
[class^='title'] {
margin-bottom: 8px;
}
.tableDelete {
color: red;
}
admin-web/src/pages/Admin/ResourceList.js
浏览文件 @
cb23a58b
...
...
@@ -104,7 +104,7 @@ class ResourceList extends PureComponent {
componentDidMount
()
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'r
ol
eList/tree'
,
type
:
'r
esourc
eList/tree'
,
payload
:
{},
});
}
...
...
admin-web/src/pages/Admin/RoleList.js
浏览文件 @
cb23a58b
...
...
@@ -6,7 +6,7 @@ import moment from 'moment';
import
{
Card
,
Form
,
Input
,
Select
,
Button
,
Modal
,
message
,
Table
,
Divider
}
from
'antd'
;
import
PageHeaderWrapper
from
'@/components/PageHeaderWrapper'
;
import
styles
from
'./R
esourc
eList.less'
;
import
styles
from
'./R
ol
eList.less'
;
const
FormItem
=
Form
.
Item
;
const
{
Option
}
=
Select
;
...
...
admin-web/src/services/admin.js
浏览文件 @
cb23a58b
import
{
stringify
}
from
'qs'
;
import
{
stringify
}
from
'
@/utils/request.
qs'
;
import
request
from
'@/utils/request'
;
// auth
export
async
function
getAdminMenus
()
{
return
request
(
'/admin-api/admin/resource/admin_menu_tree'
);
return
request
(
'/admin-api/admin
s
/resource/admin_menu_tree'
);
}
export
async
function
getAdminUrls
(
params
)
{
return
request
(
`/admin-api/admin/resource/admin_url_list?
${
stringify
(
params
)}
`
);
return
request
(
`/admin-api/admins/resource/admin_url_list?
${
stringify
(
params
)}
`
);
}
// admin
export
async
function
queryAdmin
(
params
)
{
return
request
(
`/admin-api/admins/admin/page?
${
stringify
(
params
)}
`
,
{
method
:
'GET'
,
});
}
export
async
function
addAdmin
(
params
)
{
return
request
(
`/admin-api/admins/admin/add?
${
stringify
(
params
)}
`
,
{
method
:
'POST'
,
});
}
export
async
function
updateAdmin
(
params
)
{
return
request
(
`/admin-api/admins/admin/update?
${
stringify
(
params
)}
`
,
{
method
:
'POST'
,
});
}
export
async
function
updateAdminStatus
(
params
)
{
return
request
(
`/admin-api/admins/admin/update_status?
${
stringify
(
params
)}
`
,
{
method
:
'POST'
,
});
}
export
async
function
deleteAdmin
(
params
)
{
return
request
(
`/admin-api/admins/admin/delete?
${
stringify
(
params
)}
`
,
{
method
:
'POST'
,
});
}
// resource
export
async
function
addResource
(
params
)
{
return
request
(
`/admin-api/admin/resource/add?
${
stringify
(
params
)}
`
,
{
return
request
(
`/admin-api/admin
s
/resource/add?
${
stringify
(
params
)}
`
,
{
method
:
'POST'
,
});
}
export
async
function
updateResource
(
params
)
{
return
request
(
`/admin-api/admin/resource/update?
${
stringify
(
params
)}
`
,
{
return
request
(
`/admin-api/admin
s
/resource/update?
${
stringify
(
params
)}
`
,
{
method
:
'POST'
,
});
}
export
async
function
deleteResource
(
params
)
{
return
request
(
`/admin-api/admin/resource/delete?
${
stringify
(
params
)}
`
,
{
return
request
(
`/admin-api/admin
s
/resource/delete?
${
stringify
(
params
)}
`
,
{
method
:
'POST'
,
});
}
export
async
function
resourceTree
(
params
)
{
return
request
(
`/admin-api/admin/resource/tree?
${
stringify
(
params
)}
`
,
{
return
request
(
`/admin-api/admin
s
/resource/tree?
${
stringify
(
params
)}
`
,
{
method
:
'GET'
,
});
}
...
...
@@ -40,25 +72,25 @@ export async function resourceTree(params) {
// role
export
async
function
queryRole
(
params
)
{
return
request
(
`/admin-api/admin/role/page?
${
stringify
(
params
)}
`
);
return
request
(
`/admin-api/admin
s
/role/page?
${
stringify
(
params
)}
`
);
}
export
async
function
deleteRole
(
params
)
{
return
request
(
`/admin-api/admin/role/delete?
${
stringify
(
params
)}
`
,
{
return
request
(
`/admin-api/admin
s
/role/delete?
${
stringify
(
params
)}
`
,
{
method
:
'POST'
,
body
:
{},
});
}
export
async
function
addRole
(
params
)
{
return
request
(
`/admin-api/admin/role/add?
${
stringify
(
params
)}
`
,
{
return
request
(
`/admin-api/admin
s
/role/add?
${
stringify
(
params
)}
`
,
{
method
:
'POST'
,
body
:
{},
});
}
export
async
function
updateRole
(
params
)
{
return
request
(
`/admin-api/admin/role/update?
${
stringify
(
params
)}
`
,
{
return
request
(
`/admin-api/admin
s
/role/update?
${
stringify
(
params
)}
`
,
{
method
:
'POST'
,
body
:
{},
});
...
...
admin-web/src/services/api.js
浏览文件 @
cb23a58b
import
{
stringify
}
from
'qs'
;
import
{
stringify
}
from
'
@/utils/request.
qs'
;
import
request
from
'@/utils/request'
;
export
async
function
queryProjectNotice
()
{
...
...
admin-web/src/utils/request.qs.js
0 → 100644
浏览文件 @
cb23a58b
/* eslint-disable */
import
qs
from
'qs'
;
/**
* 过滤字符串为 '' 直接不传了
*
* @param params
*/
function
filterEmptyStr
(
params
)
{
function
filterObject
(
object
)
{
const
res
=
{};
for
(
const
key
in
params
)
{
const
val
=
params
[
key
];
if
(
typeof
val
===
'string'
&&
val
)
{
res
[
key
]
=
val
;
}
else
{
res
[
key
]
=
val
;
}
}
return
res
;
}
if
(
typeof
params
===
'object'
)
{
return
filterObject
(
params
);
}
else
if
(
params
instanceof
Array
)
{
let
res
=
[];
for
(
const
object
in
params
)
{
res
.
push
(
filterObject
(
params
));
}
}
}
export
function
stringify
(
params
)
{
return
qs
.
stringify
(
filterEmptyStr
(
params
));
}
export
default
{
...
qs
,
stringify
,
};
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论