Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xiaomai-cloud-class-web
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xiaomai-cloud-class
xiaomai-cloud-class-web
Commits
7f03904c
Commit
7f03904c
authored
Aug 10, 2021
by
guomingpang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
style:style update1
parent
b19e7da0
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
486 additions
and
14 deletions
+486
-14
src/modules/college-manage/CollegeInfoPage.jsx
+1
-1
src/modules/college-manage/UserManagePage.less
+3
-0
src/modules/college-manage/UserManagePage.tsx
+15
-3
src/modules/college-manage/WechatUserAudit/WechatUserAudit.jsx
+60
-0
src/modules/college-manage/WechatUserAudit/WechatUserAudit.less
+4
-0
src/modules/college-manage/WechatUserAudit/WechatUserAuditFilter.jsx
+111
-0
src/modules/college-manage/WechatUserAudit/WechatUserAuditFilter.less
+46
-0
src/modules/college-manage/WechatUserAudit/WechatUserAuditList.jsx
+135
-0
src/modules/college-manage/WechatUserAudit/WechatUserAuditList.less
+68
-0
src/modules/college-manage/WechatUserAudit/WechatUserAuditOpt.jsx
+19
-0
src/modules/root/CreateCollege.jsx
+10
-4
src/modules/root/CreateCollege.less
+11
-3
src/modules/teach-tool/examination-manager/AddExam.tsx
+3
-3
No files found.
src/modules/college-manage/CollegeInfoPage.jsx
View file @
7f03904c
...
...
@@ -44,8 +44,8 @@ class CollegeInfoPage extends React.Component {
});
});
};
onChangeFiledValue
=
(
filed
,
value
)
=>
{
console
.
log
(
filed
,
value
)
this
.
setState
({
[
filed
]:
value
,
});
...
...
src/modules/college-manage/UserManagePage.less
View file @
7f03904c
...
...
@@ -3,6 +3,9 @@
display: flex;
justify-content: space-between;
align-items: center;
.wechat-audit:hover{
cursor: pointer;
}
.icon-font-weixin{
color: #5DD333;
margin-right:4px ;
...
...
src/modules/college-manage/UserManagePage.tsx
View file @
7f03904c
...
...
@@ -8,13 +8,14 @@
*/
import
React
,
{
useEffect
,
useState
}
from
"react"
;
import
{
withRouter
}
from
"react-router-dom"
;
import
{
Route
,
withRouter
}
from
'react-router-dom'
;
import
_
from
"underscore"
;
import
{
PageControl
}
from
"@/components"
;
import
{
Input
,
DatePicker
,
Select
,
Button
,
message
}
from
"antd"
;
import
StoreService
from
"@/domains/store-domain/storeService"
;
import
User
from
"@/common/js/user"
;
import
ChooseMembersModal
from
"./modal/ChooseMembersModal"
;
import
WechatUserAudit
from
'./WechatUserAudit/WechatUserAudit'
import
LimitTip
from
"./LimitTip"
import
{
XMTable
}
from
'@/components'
;
...
...
@@ -30,7 +31,8 @@ declare var window: any;
function
UserManagePage
()
{
function
UserManagePage
(
props
:
any
)
{
const
{
match
}
=
props
;
const
[
userList
,
setUserList
]
=
useState
([]);
const
[
model
,
setModel
]
=
useState
<
React
.
ReactNode
>
(
null
);
const
[
query
,
setQuery
]
=
useState
({
...
...
@@ -139,7 +141,11 @@ function UserManagePage() {
<
div
className=
" page user-manage-page"
>
<
div
className=
"content-header"
>
<
div
>
学员管理
</
div
>
<
div
><
span
className=
'icon iconfont icon-font-weixin'
>

</
span
><
span
className=
'content-header-right'
>
学员审核列表
</
span
></
div
>
<
div
className=
'wechat-audit'
onClick=
{
()
=>
{
window
.
RCHistory
.
push
({
pathname
:
`${match.url}/wechat-user-audit`
,
});
}
}
><
span
className=
'icon iconfont icon-font-weixin'
>

</
span
><
span
className=
'content-header-right'
>
学员审核列表
</
span
></
div
>
</
div
>
<
div
className=
"box"
>
<
div
className=
"box-header"
>
...
...
@@ -246,6 +252,12 @@ function UserManagePage() {
</
div
>
</
div
>
{
model
}
<
Route
path=
{
`${match.url}/wechat-user-audit`
}
render=
{
()
=>
{
return
<
WechatUserAudit
/>;
}
}
/>
</
div
>
);
}
...
...
src/modules/college-manage/WechatUserAudit/WechatUserAudit.jsx
0 → 100644
View file @
7f03904c
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
Breadcrumbs
from
'@/components/Breadcrumbs'
;
import
WechatUserAuditFilter
from
'./WechatUserAuditFilter'
;
import
WechatUserAuditOpt
from
'./WechatUserAuditOpt'
import
WechatUserAuditList
from
'./WechatUserAuditList'
;
import
PlanService
from
'@/domains/plan-domain/planService'
;
import
User
from
'@/common/js/user'
;
import
'./WechatUserAudit.less'
;
const
WechatUserAudit
=
function
()
{
const
[
listData
,
setListData
]
=
useState
([]);
const
[
totalCount
,
setTotalCount
]
=
useState
(
0
);
const
[
query
,
setQuery
]
=
useState
({
current
:
1
,
size
:
10
,
type
:
'b'
});
useEffect
(()
=>
{
//列表获取
function
handleFetchPlanList
(
_query
)
{
const
params
=
{
...
query
,
...
_query
,
storeUserId
:
User
.
getStoreUserId
(),
};
PlanService
.
getTrainingPlanPage
(
params
).
then
((
res
)
=>
{
const
{
result
:
{
records
=
[],
total
},
}
=
res
;
setListData
(
records
);
setTotalCount
(
total
);
});
}
handleFetchPlanList
();
},
[
query
]);
//搜索条件改变
function
queryChange
(
_query
)
{
const
params
=
{
...
query
,
...
_query
,
};
setQuery
(
params
);
}
return
(
<
div
className=
'page wechat-user-audit'
>
<
Breadcrumbs
navList=
'学员审核列表'
/>
<
div
className=
'box'
>
<
WechatUserAuditFilter
onChange=
{
queryChange
}
/>
<
WechatUserAuditOpt
onChange
=
{
queryChange
}
defaultType=
{
query
.
type
}
/>
<
WechatUserAuditList
listData=
{
listData
}
query=
{
query
}
totalCount=
{
totalCount
}
onChange=
{
queryChange
}
/>
</
div
>
</
div
>
);
};
export
default
WechatUserAudit
;
src/modules/college-manage/WechatUserAudit/WechatUserAudit.less
0 → 100644
View file @
7f03904c
.wechat-user-audit{
}
\ No newline at end of file
src/modules/college-manage/WechatUserAudit/WechatUserAuditFilter.jsx
0 → 100644
View file @
7f03904c
/*
* @Author: 庞国铭
* @Description: 学员审核列表 筛选
*/
import
React
,
{
useState
}
from
'react'
;
import
{
Row
,
Input
,
Tooltip
}
from
'antd'
;
import
RangePicker
from
'@/modules/common/DateRangePicker'
;
import
moment
from
'moment'
;
import
'./WechatUserAuditFilter.less'
;
const
{
Search
}
=
Input
;
const
defaultQuery
=
{
userName
:
null
,
startTime
:
null
,
endTime
:
null
,
};
const
WechatUserAuditFilter
=
function
(
props
)
{
const
{
onChange
=
()
=>
{}
}
=
props
;
const
[
query
,
setQuery
]
=
useState
(
defaultQuery
);
// 改变搜索条件
function
handleChangeQuery
(
field
,
value
)
{
let
_query
=
{
...
query
,
[
field
]:
value
,
current
:
1
,
};
onChange
(
_query
);
}
//日期选择
function
handleChangeDates
(
dates
)
{
let
_query
=
{
...
query
,
current
:
1
,
};
if
(
_
.
isEmpty
(
dates
))
{
delete
_query
.
startTime
;
delete
_query
.
endTime
;
}
else
{
_query
.
startTime
=
dates
[
0
]?.
startOf
(
'day'
).
valueOf
();
_query
.
endTime
=
dates
[
1
]?.
endOf
(
'day'
).
valueOf
();
}
setQuery
(
_query
);
onChange
(
_query
);
}
//重置
function
handleReset
()
{
setQuery
({
...
defaultQuery
,
current
:
1
,
});
onChange
(
query
);
}
return
(
<
div
className=
'wechat-user-audit-filter'
>
<
Row
type=
'flex'
justify=
'space-between'
align=
'top'
>
<
div
className=
'search-condition'
>
<
div
className=
'search-condition__item'
>
<
span
className=
'search-name'
>
直播名称:
</
span
>
<
Search
value=
{
query
.
courseName
}
placeholder=
'搜索直播名称'
onChange=
{
(
e
)
=>
{
handleChangeQuery
(
'courseName'
,
e
.
target
.
value
);
}
}
onSearch=
{
()
=>
{
onChange
(
query
.
current
);
}
}
style=
{
{
width
:
'calc(100% - 81px)'
}
}
className=
'search-input'
enterButton=
{
<
span
className=
'icon iconfont'
>

</
span
>
}
/>
</
div
>
<
div
className=
'search-condition__item'
>
<
span
className=
'search-date'
>
上课日期:
</
span
>
<
RangePicker
id=
'course_date_picker'
allowClear=
{
false
}
value=
{
query
.
startTime
?
[
moment
(
query
.
startTime
),
moment
(
query
.
endTime
)]
:
null
}
format=
{
'YYYY-MM-DD'
}
onChange=
{
(
dates
)
=>
{
handleChangeDates
(
dates
);
}
}
style=
{
{
width
:
'calc(100% - 81px)'
}
}
/>
</
div
>
</
div
>
<
div
className=
'reset-fold-area'
>
<
Tooltip
title=
'清空筛选'
>
<
span
className=
'resetBtn iconfont icon'
onClick=
{
handleReset
}
>

</
span
>
</
Tooltip
>
</
div
>
</
Row
>
</
div
>
);
};
export
default
WechatUserAuditFilter
;
src/modules/college-manage/WechatUserAudit/WechatUserAuditFilter.less
0 → 100644
View file @
7f03904c
.wechat-user-audit-filter{
position: relative;
.ant-input-search-button{
border-left:none;
}
.search-condition {
width: calc(100% - 80px);
display: flex;
align-items: center;
flex-wrap: wrap;
&__item {
width: 30%;
margin-right: 3%;
margin-bottom: 12px;
.search-name{
width: 81px;
vertical-align: middle;
display:inline-block;
height:32px;
line-height:32px;
}
}
}
.reset-fold-area {
position: absolute;
right: 12px;
}
.resetBtn {
color: #999999;
font-size: 18px;
margin-right: 8px;
}
.fold-btn {
font-size: 14px;
color: #666666;
line-height: 20px;
.fold-icon {
font-size: 12px;
margin-left:4px;
}
}
}
.data-icon {
cursor: pointer;
}
src/modules/college-manage/WechatUserAudit/WechatUserAuditList.jsx
0 → 100644
View file @
7f03904c
import
React
from
'react'
;
import
{
PageControl
,
XMTable
}
from
'@/components'
;
// import User from '@/common/js/user';
import
'./WechatUserAuditList.less'
function
WechatUserAuditList
(
props
)
{
const
{
listData
,
totalCount
,
query
,
onChange
=
()
=>
{}}
=
props
function
parseColumns
()
{
const
columns
=
[
{
title
:
'微信名称'
,
key
:
'planName'
,
dataIndex
:
'planName'
,
width
:
'14%'
,
fixed
:
'left'
,
render
:
(
val
,
record
)
=>
{
return
(
<
div
className=
'wechat-user-audit-name'
>
{
val
}
</
div
>
)
},
},
{
title
:
'真实姓名'
,
key
:
'createName'
,
dataIndex
:
'createName'
,
width
:
'10%'
,
render
:
(
val
)
=>
{
return
<
div
className=
'create-name'
>
{
val
}
</
div
>;
},
},
{
title
:
'申请时间'
,
width
:
'12.5%'
,
key
:
'created'
,
dataIndex
:
'created'
,
render
:
(
val
)
=>
{
return
<
span
style=
{
{
whiteSpace
:
'nowrap'
}
}
>
{
window
.
formatDate
(
'YYYY-MM-DD H:i'
,
val
)
}
</
span
>;
},
},
{
title
:
'审批状态'
,
width
:
'10%'
,
key
:
'updated'
,
dataIndex
:
'updated'
,
render
:
(
val
)
=>
{
return
<
span
style=
{
{
whiteSpace
:
'nowrap'
}
}
>
{
window
.
formatDate
(
'YYYY-MM-DD H:i'
,
val
)
}
</
span
>;
},
},
{
title
:
'审核人'
,
width
:
'10%'
,
key
:
'cultureCustomerNum'
,
dataIndex
:
'cultureCustomerNum'
,
render
:
(
val
)
=>
{
return
<
div
className=
'join-number'
>
{
val
}
</
div
>;
},
},
{
title
:
'操作'
,
key
:
'operate'
,
dataIndex
:
'operate'
,
fixed
:
'right'
,
width
:
'14.5%'
,
render
:
(
val
,
record
)
=>
{
return
(
<
div
className=
'operate'
>
<
div
className=
'operate__item'
onClick=
{
()
=>
toLearningDataPage
(
record
)
}
>
通过
</
div
>
<
span
className=
'operate__item split'
>
|
</
span
>
<
div
className=
'operate__item'
onClick=
{
()
=>
toLearningDataPage
(
record
)
}
>
拒绝
</
div
>
</
div
>
);
},
},
];
return
columns
;
}
function
toLearningDataPage
(
record
){
console
.
log
(
record
)
}
function
onShowSizeChange
(
current
,
size
)
{
if
(
current
===
size
)
{
return
;
}
let
_query
=
query
;
_query
.
size
=
size
;
onChange
(
_query
);
}
return
(
<
div
className=
'wechat-user-audit-list'
>
<
XMTable
rowKey=
{
(
record
)
=>
record
.
id
}
showSorterTooltip=
{
false
}
dataSource=
{
listData
}
columns=
{
parseColumns
()
}
pagination=
{
false
}
bordered
size=
'middle'
scroll=
{
{
x
:
1400
}
}
className=
'wechat-user-audit-list-table'
renderEmpty=
{
{
description
:
<
span
style=
{
{
display
:
'block'
,
paddingBottom
:
24
}
}
>
暂无数据
</
span
>,
}
}
/>
<
div
className=
'box-footer'
>
<
PageControl
current=
{
query
.
current
-
1
}
pageSize=
{
query
.
size
}
total=
{
totalCount
}
toPage=
{
(
page
)
=>
{
const
_query
=
{
...
query
,
current
:
page
+
1
};
onChange
(
_query
);
}
}
onShowSizeChange=
{
onShowSizeChange
}
/>
</
div
>
</
div
>
);
}
export
default
WechatUserAuditList
src/modules/college-manage/WechatUserAudit/WechatUserAuditList.less
0 → 100644
View file @
7f03904c
.wechat-user-audit-list {
margin-top: 12px;
.course-number {
margin-right: 45px;
}
.wechat-user-audit-list-table {
thead.ant-table-thead {
tr {
th {
padding: 10px 12px;
}
}
}
tbody {
tr {
td.ant-table-cell {
padding: 16px 12px;
color: #333;
}
&:nth-child(even) {
background: transparent;
td {
background: #fff;
}
}
&:nth-child(odd) {
background: #fafafa;
td {
background: #fafafa;
}
}
&:hover {
td {
background: #f3f6fa;
}
}
}
}
}
.operate-text {
color: #2966ff;
cursor: pointer;
}
.operate {
display: flex;
&__item {
color: #2966ff;
cursor: pointer;
&.split {
margin: 0 8px;
color: #bfbfbf;
}
}
}
.join-number {
text-align: right;
margin-right: 12px;
}
.more-operate {
line-height: 20px;
}
}
\ No newline at end of file
src/modules/college-manage/WechatUserAudit/WechatUserAuditOpt.jsx
0 → 100644
View file @
7f03904c
import
React
from
'react'
;
import
{
Row
,
Radio
}
from
'antd'
;
const
WechatUserAuditOpt
=
function
(
props
)
{
const
{
onChange
=
()
=>
{},
defaultType
=
'a'
}
=
props
;
return
(
<
div
className=
'wechat-user-audit-filter'
>
<
Row
type=
'flex'
justify=
'end'
align=
'top'
>
<
Radio
.
Group
onChange=
{
(
e
)
=>
onChange
({
type
:
e
.
target
.
value
})
}
defaultValue=
{
defaultType
}
>
<
Radio
.
Button
value=
'a'
>
全部
</
Radio
.
Button
>
<
Radio
.
Button
value=
'b'
>
待审核
</
Radio
.
Button
>
<
Radio
.
Button
value=
'c'
>
已通过
</
Radio
.
Button
>
<
Radio
.
Button
value=
'd'
>
已拒绝
</
Radio
.
Button
>
</
Radio
.
Group
>
</
Row
>
</
div
>
);
};
export
default
WechatUserAuditOpt
;
src/modules/root/CreateCollege.jsx
View file @
7f03904c
...
...
@@ -6,6 +6,7 @@ import BaseService from "@/domains/basic-domain/baseService";
import
User
from
"@/common/js/user"
;
import
Breadcrumbs
from
"@/components/Breadcrumbs"
;
import
ImgClipModal
from
'@/components/ImgClipModal'
import
{
debounce
}
from
'underscore'
import
'./CreateCollege.less'
;
export
default
class
CreateCollege
extends
React
.
Component
{
...
...
@@ -93,6 +94,12 @@ export default class CreateCollege extends React.Component {
}
}
onChangeFiledValue
=
(
filed
,
value
)
=>
{
this
.
setState
({
[
filed
]:
value
,
});
};
render
()
{
const
{
...
...
@@ -150,13 +157,12 @@ export default class CreateCollege extends React.Component {
}
}
></
Input
>
</
Form
.
Item
>
<
Form
.
Item
label=
'学员审核'
name=
'auditSwitch'
rules=
{
[{
required
:
true
}]
}
>
<
Form
.
Item
label=
{
<
div
className=
'label-box'
>
学员审核
<
span
className=
'icon iconfont icon-tip'
>

</
span
></
div
>
}
name=
'auditSwitch'
rules=
{
[{
required
:
true
}]
}
>
<
div
className=
'switch-box'
>
<
Switch
checked=
{
auditSwitch
}
onChange=
{
(
e
)
=>
this
.
onChangeFiledValue
(
'auditSwitch'
,
e
)
}
/>
<
Switch
checked=
{
auditSwitch
}
size=
'small'
onChange=
{
(
e
)
=>
this
.
onChangeFiledValue
(
'auditSwitch'
,
e
)
}
/>
<
Choose
>
<
When
condition=
{
auditSwitch
}
>
<
div
className=
'switch-desc'
>
已开启,成为学院学员需要审核
</
div
>
<
div
className=
'switch-prew-link'
>
功能预览
</
div
>
</
When
>
<
Otherwise
>
<
div
className=
'switch-desc'
>
已关闭,成为学院学员不需要审核
</
div
>
...
...
@@ -168,7 +174,7 @@ export default class CreateCollege extends React.Component {
<
Button
className=
"button"
type=
"primary"
onClick=
{
_
.
debounce
(()
=>
this
.
submit
(),
3000
,
{
onClick=
{
debounce
(()
=>
this
.
submit
(),
3000
,
{
leading
:
true
,
trailing
:
false
})
}
...
...
src/modules/root/CreateCollege.less
View file @
7f03904c
...
...
@@ -5,7 +5,7 @@
.create-box {
padding-top: 108px;
margin: 0 auto;
width:
40
0px;
width:
38
0px;
.image-box {
position: relative;
display: block;
...
...
@@ -45,6 +45,14 @@
}
}
}
.label-box{
display: flex;
align-content: center;
.icon{
color:#BFBFBF;
margin: 0 2px;
}
}
.switch-box{
display: flex;
align-items: center;
...
...
@@ -65,10 +73,10 @@
margin-bottom: 24px;
}
.input {
width: 3
5
0px;
width: 3
8
0px;
}
.button {
width: 3
5
0px;
width: 3
8
0px;
margin-top: 36px;
height: 32px !important;
}
...
...
src/modules/teach-tool/examination-manager/AddExam.tsx
View file @
7f03904c
import
React
,
{
useState
,
useRef
,
useEffect
,
useContext
}
from
'react'
import
React
,
{
useState
,
useRef
,
useEffect
}
from
'react'
import
Breadcrumbs
from
"@/components/Breadcrumbs"
;
import
{
Form
,
Alert
,
Input
,
Button
,
InputNumber
,
DatePicker
,
Switch
,
Radio
,
message
,
Modal
,
Tooltip
}
from
'antd'
;
import
{
Route
,
withRouter
}
from
'react-router-dom'
;
import
{
Form
,
Input
,
Button
,
InputNumber
,
DatePicker
,
Switch
,
Radio
,
message
,
Modal
,
Tooltip
}
from
'antd'
;
import
{
withRouter
}
from
'react-router-dom'
;
import
User
from
"@/common/js/user"
;
import
moment
from
'moment'
import
Service
from
"@/common/js/service"
;
...
...
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