Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
B
biz.qingxiao.com
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangxuelai
biz.qingxiao.com
Commits
a82ec764
Commit
a82ec764
authored
Apr 03, 2020
by
baixian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ERP新版youhua
parent
a048648b
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
982 additions
and
349 deletions
+982
-349
api.js
src/common/api.js
+4
-0
clockmember.js
src/models/clockmember.js
+141
-0
common.js
src/models/common.js
+90
-0
createtheme.js
src/models/createtheme.js
+1
-1
index.js
src/models/index.js
+4
-0
newthemelist.js
src/models/newthemelist.js
+3
-8
thememgt.js
src/models/thememgt.js
+23
-130
webapp.js
src/models/webapp.js
+28
-1
index.js
src/pages/classmgt/index.js
+4
-6
index.js
src/pages/clockmember/index.js
+171
-0
index.less
src/pages/clockmember/index.less
+171
-0
index.js
src/pages/newthemelist/index.js
+20
-5
index.js
src/pages/thememgt/index.js
+133
-181
index.less
src/pages/thememgt/index.less
+165
-17
router.js
src/router.js
+6
-0
clockmember.js
src/services/clockmember.js
+18
-0
No files found.
src/common/api.js
View file @
a82ec764
...
...
@@ -251,4 +251,8 @@ export default {
livesUrl
:
`
${
dakaapi
}
member/live/url`
,
livesEnd
:
`
${
dakaapi
}
member/live/end`
,
},
clockmember
:
{
list
:
`
${
dakaapi
}
member/subject_students`
,
deleteSubjectStudent
:
`
${
dakaapi
}
member/subject_student/kick_out`
,
},
};
src/models/clockmember.js
0 → 100644
View file @
a82ec764
import
{
routerRedux
}
from
'dva/router'
;
import
{
message
}
from
'antd'
;
import
{
delay
}
from
'redux-saga'
;
import
moment
from
'moment'
;
import
{
LocalStorage
,
SessionStorage
,
isExpired
,
getRandomFilename
,
}
from
'../utils/index'
;
import
errorcode
from
'../common/errorcode'
;
import
*
as
uploader
from
'../services/uploader'
;
import
*
as
memberListAjax
from
'../services/clockmember'
;
import
*
as
commonAjax
from
'../services/common'
;
export
default
{
namespace
:
'clockmember'
,
state
:
{
clockList
:
[],
clockListTotal
:
0
,
clockListParams
:
{
page
:
1
,
perPage
:
10
,
subject_type
:
1
,
subject_id
:
0
,
},
},
subscriptions
:
{
setup
({
dispatch
,
history
})
{
// eslint-disable-line
},
},
effects
:
{
*
queryList
({
payload
},
{
call
,
put
,
select
})
{
const
{
params
}
=
payload
;
const
{
sid
}
=
yield
select
(
state
=>
state
.
webapp
);
const
{
clockListParams
,
clockListTotal
}
=
yield
select
(
state
=>
state
.
clockmember
);
const
loading
=
message
.
loading
(
'数据加载中...'
,
0.5
);
const
newParams
=
Object
.
assign
(
clockListParams
,
params
,
{
school_id
:
sid
,
});
let
newTotal
=
clockListTotal
;
const
data
=
yield
call
(
memberListAjax
.
memberList
,
{
...
newParams
,
});
setTimeout
(
loading
);
if
(
data
.
code
==
200
)
{
if
(
data
.
data
.
total
!=
undefined
)
{
newTotal
=
data
.
data
.
total
;
}
yield
put
({
type
:
'updateState'
,
payload
:
{
clockList
:
data
.
data
&&
data
.
data
.
list
,
clockListTotal
:
newTotal
,
clockListParams
:
{
...
newParams
},
},
});
}
else
{
yield
put
({
type
:
'webapp/errorrequestresolve'
,
payload
:
{
data
,
},
});
}
},
*
handleTickOut
({
payload
},
{
call
,
put
,
select
})
{
const
{
record
}
=
payload
;
const
data
=
yield
call
(
memberListAjax
.
deleteSubjectStudent
,
{
id
:
record
.
id
,
});
if
(
data
.
code
==
200
)
{
yield
put
({
type
:
'queryList'
,
payload
:
{
params
:
{
page
:
1
,
perPage
:
10
,
},
},
});
}
else
{
yield
put
({
type
:
'webapp/errorrequestresolve'
,
payload
:
{
data
,
},
});
}
},
*
goBack
({
payload
},
{
call
,
put
,
select
})
{
yield
put
(
routerRedux
.
goBack
());
},
*
reset
({
payload
},
{
call
,
put
,
select
})
{
yield
put
({
type
:
'queryList'
,
payload
:
{
params
:
{
page
:
1
,
perPage
:
10
,
},
},
});
},
*
createLive
({
payload
},
{
put
,
select
})
{
yield
put
(
routerRedux
.
push
({
pathname
:
'/sjd/addLive'
,
}));
},
*
goEdit
({
payload
},
{
put
,
select
})
{
const
{
id
}
=
payload
;
yield
put
(
routerRedux
.
push
({
pathname
:
`/sjd/editLive/
${
id
}
`
,
}));
},
*
pageInit
({
payload
},
{
call
,
put
,
select
})
{
yield
put
({
type
:
'updateState'
,
payload
:
{
clockList
:
[],
clockListTotal
:
0
,
clockListParams
:
{
page
:
1
,
perPage
:
10
,
subject_type
:
1
,
subject_id
:
0
,
},
},
});
},
},
reducers
:
{
save
(
state
,
action
)
{
return
{
...
state
,
...
action
.
payload
};
},
updateState
(
state
,
action
)
{
return
{
...
state
,
...
action
.
payload
};
},
},
};
src/models/common.js
0 → 100644
View file @
a82ec764
import
{
routerRedux
}
from
'dva/router'
;
import
{
message
}
from
'antd'
;
import
{
LocalStorage
,
SessionStorage
,
isExpired
,
}
from
'../utils/index'
;
import
errorcode
from
'../common/errorcode'
;
import
*
as
courseAjax
from
'../services/course'
;
import
*
as
commonAjax
from
'../services/common'
;
export
default
{
namespace
:
'common'
,
state
:
{
previewQrcode
:
''
,
previewQrcodeShow
:
false
,
downloadTitle
:
''
,
},
subscriptions
:
{
setup
({
dispatch
,
history
})
{
// eslint-disable-line
},
},
effects
:
{
*
getCode
({
payload
},
{
call
,
put
,
select
})
{
const
{
record
}
=
payload
;
const
loading
=
message
.
loading
(
'小程序码生成中,请稍等...'
,
0
);
let
params
;
switch
(
record
.
subject_type
)
{
case
1
:
params
=
{
scene
:
`t=
${
record
.
id
}
&s=
${
record
.
school_id
}
&w=0`
,
page
:
'src/pages/themeindex/landpage'
,
width
:
430
,
};
break
;
case
2
:
params
=
{
scene
:
`t=
${
record
.
id
}
&s=
${
record
.
school_id
}
&w=0`
,
page
:
'src/pages/calendarthemeindex/landpage'
,
width
:
430
,
};
break
;
case
3
:
params
=
{
scene
:
`t=
${
record
.
id
}
&s=
${
record
.
school_id
}
&w=0`
,
page
:
'src/pages/sharemoretheme/index'
,
width
:
430
,
};
break
;
default
:
params
=
{};
break
;
}
const
data
=
yield
call
(
commonAjax
.
generateQrcode
,
params
);
setTimeout
(
loading
);
if
(
data
.
code
===
200
)
{
message
.
success
(
'小程序码生成成功'
,
1
);
yield
put
({
type
:
'updateState'
,
payload
:
{
previewQrcode
:
data
.
data
.
url
,
previewQrcodeShow
:
true
,
downloadTitle
:
record
.
title
,
},
});
}
else
{
message
.
error
(
'小程序码生成失败'
,
1
);
}
},
*
pageInit
({
payload
},
{
call
,
put
,
select
})
{
yield
put
({
type
:
'updateState'
,
payload
:
{
previewQrcode
:
''
,
previewQrcodeShow
:
false
,
downloadTitle
:
''
,
},
});
},
},
reducers
:
{
save
(
state
,
action
)
{
return
{
...
state
,
...
action
.
payload
};
},
updateState
(
state
,
action
)
{
return
{
...
state
,
...
action
.
payload
};
},
},
};
src/models/createtheme.js
View file @
a82ec764
...
...
@@ -508,7 +508,7 @@ export default {
},
});
yield
put
({
type
:
'
newthemelist
/getCode'
,
type
:
'
common
/getCode'
,
payload
:
{
record
:
{
school_id
:
data
.
data
.
school_id
,
...
...
src/models/index.js
View file @
a82ec764
...
...
@@ -59,6 +59,8 @@ import officialtheme from './officialtheme';
import
liveclass
from
'./liveclass'
;
import
createmarke
from
'./createmarke'
;
import
newthemelist
from
'./newthemelist'
;
import
clockmember
from
'./clockmember'
;
import
common
from
'./common'
;
export
default
{
loginModel
,
indexstaicModel
,
...
...
@@ -112,4 +114,6 @@ export default {
liveclass
,
createmarke
,
newthemelist
,
clockmember
,
common
,
};
src/models/newthemelist.js
View file @
a82ec764
...
...
@@ -213,15 +213,10 @@ export default {
},
});
},
*
createLive
({
payload
},
{
put
,
select
})
{
yield
put
(
routerRedux
.
push
({
pathname
:
'/sjd/addLive'
,
}));
},
*
goEdit
({
payload
},
{
put
,
select
})
{
const
{
id
}
=
payload
;
*
goClockMember
({
payload
},
{
put
,
select
})
{
const
{
record
}
=
payload
;
yield
put
(
routerRedux
.
push
({
pathname
:
`/sjd/
editLive/
${
id
}
`
,
pathname
:
`/sjd/
member/
${
record
.
subject_type
}
/
${
record
.
id
}
`
,
}));
},
*
pageInit
({
payload
},
{
call
,
put
,
select
})
{
...
...
src/models/thememgt.js
View file @
a82ec764
...
...
@@ -6,19 +6,16 @@ import * as thememgtajax from '../services/thememgt';
import
errorcode
from
'../common/errorcode'
;
import
*
as
themeAjax
from
'../services/createtheme'
;
import
*
as
commonAjax
from
'../services/common'
;
import
*
as
themeListAjax
from
'../services/newthemelist'
;
export
default
{
namespace
:
'thememgt'
,
state
:
{
classId
:
0
,
themeListSearchQuery
:
{
sort_type
:
1
,
class_id
:
0
,
type
:
''
,
page
:
1
,
perPage
:
10
,
school_id
:
0
,
start_time
:
''
,
end_time
:
''
,
subject_type
:
''
,
},
subjectType
:
''
,
...
...
@@ -35,53 +32,38 @@ export default {
effects
:
{
*
querythemelist
({
payload
},
{
call
,
put
,
select
})
{
const
{
params
}
=
payload
;
const
{
sid
}
=
yield
select
(
state
=>
state
.
webapp
);
const
{
themeListSearchQuery
,
themeTotal
}
=
yield
select
(
state
=>
state
.
thememgt
);
let
newThemeTotal
=
themeTotal
;
const
{
params
,
classId
}
=
payload
;
if
(
classId
)
{
yield
put
({
type
:
'updateState'
,
payload
:
{
classId
,
},
});
}
if
(
!
sid
)
{
return
;
}
const
newThemeListSearchQuery
=
Object
.
assign
(
themeListSearchQuery
,
params
,
{
school_id
:
sid
});
const
loadmessage
=
message
.
loading
(
'数据加载中...'
,
0
);
const
themeListData
=
yield
call
(
thememgtajax
.
themeList
,
newThemeListSearchQuery
);
setTimeout
(
loadmessage
);
if
(
themeListData
.
code
==
200
)
{
if
(
themeListData
.
data
&&
themeListData
.
data
.
total
!=
undefined
)
{
newThemeTotal
=
themeListData
.
data
.
total
;
const
loading
=
message
.
loading
(
'数据加载中...'
,
0.5
);
const
newParams
=
Object
.
assign
(
themeListSearchQuery
,
params
,
{
school_id
:
sid
,
});
let
newTotal
=
themeTotal
;
const
data
=
yield
call
(
themeListAjax
.
clockList
,
{
...
newParams
,
});
setTimeout
(
loading
);
if
(
data
.
code
==
200
)
{
if
(
data
.
data
.
total
!=
undefined
)
{
newTotal
=
data
.
data
.
total
;
}
yield
put
({
type
:
'updateState'
,
payload
:
{
sid
,
themeTotal
:
newT
hemeT
otal
,
themeList
:
(
themeListData
.
data
&&
themeListD
ata
.
data
.
list
)
||
[],
themeListSearchQuery
:
new
ThemeListSearchQuery
,
themeTotal
:
newTotal
,
themeList
:
(
data
.
data
&&
d
ata
.
data
.
list
)
||
[],
themeListSearchQuery
:
new
Params
,
},
});
}
else
{
yield
put
({
type
:
'updateState'
,
payload
:
{
logining
:
false
,
themeListSearchQuery
:
newThemeListSearchQuery
,
},
});
yield
put
({
type
:
'webapp/errorrequestresolve'
,
payload
:
{
data
:
themeListData
,
data
,
},
});
// message.error(themeListData.msg, 1);
}
},
*
goclockmgt
({
payload
},
{
call
,
put
,
select
})
{
...
...
@@ -94,52 +76,6 @@ export default {
pathname
:
`/sjd/clockmgt/
${
payload
.
subject_type
}
/
${
classId
}
/
${
payload
.
subject_id
}
`
,
}));
},
*
getCode
({
payload
},
{
call
,
put
,
select
})
{
const
{
record
}
=
payload
;
const
loading
=
message
.
loading
(
'小程序码生成中,请稍等...'
,
0
);
let
params
;
switch
(
record
.
subject_type
)
{
case
1
:
params
=
{
scene
:
`i=
${
record
.
class_id
}
&t=
${
record
.
id
}
&w=
${
record
.
school_id
}
`
,
page
:
'src/pages/themeindex/index'
,
width
:
430
,
};
break
;
case
2
:
params
=
{
scene
:
`i=
${
record
.
class_id
}
&t=
${
record
.
id
}
&w=
${
record
.
school_id
}
`
,
page
:
'src/pages/calendarthemeindex/index'
,
width
:
430
,
};
break
;
case
3
:
params
=
{
scene
:
`i=
${
record
.
class_id
}
&t=
${
record
.
id
}
`
,
page
:
'src/pages/sharemoretheme/index'
,
width
:
430
,
};
break
;
default
:
params
=
{};
break
;
}
const
data
=
yield
call
(
commonAjax
.
generateQrcode
,
params
);
setTimeout
(
loading
);
if
(
data
.
code
===
200
)
{
message
.
success
(
'小程序码生成成功'
,
1
);
yield
put
({
type
:
'updateState'
,
payload
:
{
previewQrcode
:
data
.
data
.
url
,
previewQrcodeShow
:
true
,
downloadTitle
:
record
.
title
,
},
});
}
else
{
message
.
error
(
'小程序码生成失败'
,
1
);
}
},
*
subjecttypechange
({
payload
},
{
call
,
put
,
select
})
{
const
{
subjectType
}
=
payload
;
yield
put
({
...
...
@@ -176,55 +112,16 @@ export default {
},
});
},
*
search
({
payload
},
{
call
,
put
,
select
})
{
const
{
themeListSearchQuery
,
startTime
,
endTime
,
subjectType
,
}
=
yield
select
(
state
=>
state
.
thememgt
);
themeListSearchQuery
.
start_time
=
(
startTime
&&
`
${
startTime
.
format
(
'YYYY-MM-DD'
)}
`
)
||
''
;
themeListSearchQuery
.
end_time
=
(
endTime
&&
`
${
endTime
.
format
(
'YYYY-MM-DD'
)}
`
)
||
''
;
themeListSearchQuery
.
subject_type
=
subjectType
;
yield
put
({
type
:
'updateState'
,
payload
:
{
themeListSearchQuery
:
{
...
themeListSearchQuery
},
},
});
yield
put
({
type
:
'querythemelist'
,
payload
:
{
params
:
{
page
:
1
,
},
},
});
},
*
resetsearch
({
payload
},
{
call
,
put
,
select
})
{
const
{
themeListSearchQuery
,
startTime
,
endTime
,
subjectType
,
}
=
yield
select
(
state
=>
state
.
thememgt
);
themeListSearchQuery
.
start_time
=
''
;
themeListSearchQuery
.
end_time
=
''
;
themeListSearchQuery
.
subject_type
=
''
;
yield
put
({
type
:
'updateState'
,
payload
:
{
themeListSearchQuery
:
{
...
themeListSearchQuery
},
startTime
:
''
,
endTime
:
''
,
subjectType
:
''
,
},
});
*
reset
({
payload
},
{
call
,
put
,
select
})
{
yield
put
({
type
:
'querythemelist'
,
payload
:
{
params
:
{
sort_type
:
1
,
type
:
''
,
page
:
1
,
perPage
:
10
,
subject_type
:
''
,
},
},
});
...
...
@@ -295,13 +192,9 @@ export default {
classId
:
0
,
themeListSearchQuery
:
{
sort_type
:
1
,
class_id
:
0
,
type
:
''
,
page
:
1
,
perPage
:
10
,
school_id
:
0
,
start_time
:
''
,
end_time
:
''
,
subject_type
:
''
,
},
subjectType
:
''
,
...
...
src/models/webapp.js
View file @
a82ec764
...
...
@@ -567,7 +567,7 @@ export default {
},
{
path
:
pathname
,
name
:
'
主题
管理'
,
name
:
'
打卡
管理'
,
},
],
},
...
...
@@ -1031,6 +1031,33 @@ export default {
});
}
dispatch
({
type
:
'menumatch'
,
payload
:
{
pathname
}
});
const
clockMemberActive
=
pathToRegexp
(
'/sjd/member/:type/:id'
).
exec
(
pathname
);
if
(
clockMemberActive
)
{
dispatch
({
type
:
'clockmember/queryList'
,
payload
:
{
params
:
{
subject_type
:
clockMemberActive
[
1
],
subject_id
:
clockMemberActive
[
2
],
},
},
});
dispatch
({
type
:
'updateState'
,
payload
:
{
breadcrumbList
:
[
{
path
:
'sjd/clockList'
,
name
:
'打卡列表'
,
},
{
path
:
pathname
,
name
:
'学员管理'
,
},
],
},
});
}
if
(
pathname
===
'/sjd/integralmanage'
)
{
dispatch
({
type
:
'integral/integralModelList'
,
...
...
src/pages/classmgt/index.js
View file @
a82ec764
...
...
@@ -671,12 +671,10 @@ class ClassMgtForm extends React.Component {
}
<
span
className
=
"hreflink"
onClick
=
{()
=>
this
.
goClassDetail
(
record
,
2
)}
>
学员管理
<
/span
>
<
span
className
=
{
pageStyle
.
divideline
}
>|<
/span
>
{
/* {hasBtnPower('sjd/classmgt', 'thememgt') && */
}
{
/* <BtnPermission btnId="30002"> */
}
{
/* <span className="hreflink" onClick={() => this.goThemeMgt(record)}>打卡管理</span> */
}
{
/* <span className={pageStyle.divideline}>|</span> */
}
{
/* </BtnPermission> */
}
{
/* } */
}
<
span
>
<
span
className
=
"hreflink"
onClick
=
{()
=>
this
.
goThemeMgt
(
record
)}
>
打卡管理
<
/span
>
<
span
className
=
{
pageStyle
.
divideline
}
>|<
/span
>
<
/span
>
{
hasBtnPower
(
'sjd/classmgt'
,
'callStudent'
)
&&
<
span
>
<
span
className
=
"hreflink"
onClick
=
{()
=>
this
.
goClassDetail
(
record
,
3
)}
>
点名
<
/span
>
...
...
src/pages/clockmember/index.js
0 → 100644
View file @
a82ec764
import
{
connect
}
from
'dva'
;
import
React
from
'react'
;
import
{
Icon
,
Button
,
Row
,
Col
,
Input
,
Select
,
Checkbox
,
Table
,
Modal
,
Form
,
Alert
,
Badge
,
message
,
Pagination
,
Tooltip
,
DatePicker
,
Divider
,
Avatar
,
}
from
'antd'
;
import
moment
from
'moment'
;
import
{
routerRedux
}
from
'dva/router'
;
import
pageStyle
from
'./index.less'
;
import
{
pageIn
,
hasBtnPower
,
btnPermission
,
translateType
,
imagify
}
from
'../../utils/index'
;
import
BtnPermission
from
'../../components/BtnPermission'
;
import
QrcodeShow
from
'../../components/qrcodeShow'
;
const
{
Option
}
=
Select
;
const
{
TextArea
}
=
Input
;
const
{
Search
}
=
Input
;
const
{
RangePicker
}
=
DatePicker
;
class
LiveClass
extends
React
.
Component
{
constructor
(
props
)
{
super
(
props
);
this
.
state
=
{
};
}
componentDidMount
()
{
// 挂载
pageIn
(
'学生管理'
);
}
componentWillUnmount
()
{
// 卸载
}
handleTickOut
=
(
record
)
=>
{
const
{
dispatch
}
=
this
.
props
;
Modal
.
confirm
({
title
:
'提示'
,
content
:
'该学生将从此打卡活动活动中踢出,此次打卡记录也将会清除。'
,
okText
:
'确定'
,
cancelText
:
'取消'
,
icon
:
<
Icon
type
=
"info-circle"
theme
=
"filled"
style
=
{{
color
:
'#1890ff'
,
fontSize
:
30
}}
/>
,
onOk
()
{
dispatch
({
type
:
'clockmember/handleTickOut'
,
payload
:
{
record
,
},
});
},
});
}
render
()
{
const
{
userPermission
,
clockListParams
,
clockListTotal
,
clockList
,
}
=
this
.
props
;
const
columns
=
[
{
title
:
'姓名'
,
dataIndex
:
'title'
,
key
:
'title'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
<
Avatar
style
=
{{
marginRight
:
10
}}
size
=
{
44
}
src
=
{
imagify
(
record
.
avatar
?
record
.
avatar
:
record
.
school_student
.
avatar
)}
/
>
<
span
>
{
record
.
school_student
&&
record
.
school_student
.
nickname
?
record
.
school_student
.
nickname
:
record
.
name
}
<
/span
>
<
/div
>
);
},
},
{
title
:
'加入时间'
,
dataIndex
:
'created_at'
,
key
:
'created_at'
,
},
{
title
:
'手机号'
,
dataIndex
:
'mobile'
,
key
:
'mobile'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
<
span
>
{
text
||
'-'
}
<
/span
>
<
/div
>
);
},
},
{
title
:
'操作'
,
dataIndex
:
'c'
,
key
:
'c'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
className
=
{
pageStyle
.
tableoperatebox
}
>
<
span
className
=
"hreflink"
onClick
=
{()
=>
this
.
handleTickOut
(
record
)}
>
踢出本次打卡
<
/span
>
<
/div
>
);
},
},
];
return
(
<
div
className
=
{
pageStyle
.
container
}
>
<
div
className
=
{
pageStyle
.
tablebox
}
>
<
Table
rowKey
=
"id"
dataSource
=
{
clockList
}
columns
=
{
columns
}
scroll
=
{{
x
:
'max-content'
}}
pagination
=
{
false
}
bordered
footer
=
{
null
}
/
>
<
div
className
=
{
pageStyle
.
tablefooterbox
}
>
<
span
className
=
{
pageStyle
.
tablefooterstatic
}
>
共
{
clockListTotal
}
条数据
<
/span
>
<
Pagination
showSizeChanger
showQuickJumper
onShowSizeChange
=
{
this
.
sizeChange
}
total
=
{
Number
(
clockListTotal
)}
onChange
=
{
this
.
changePagination
}
current
=
{
Number
(
clockListParams
.
page
)
||
1
}
pageSize
=
{
clockListParams
.
perPage
}
/
>
<
/div
>
<
/div
>
<
/div
>
);
}
}
LiveClass
.
propTypes
=
{
};
const
LiveClassForm
=
Form
.
create
()(
LiveClass
);
function
mapStateToProps
(
state
)
{
const
{
clockListParams
,
clockListTotal
,
clockList
,
}
=
state
.
clockmember
;
const
{
guideStep
,
guideShow
,
}
=
state
.
userguide
;
const
{
userPermission
,
schoolUserInfo
,
}
=
state
.
webapp
;
return
{
userPermission
,
guideStep
,
guideShow
,
schoolUserInfo
,
clockListParams
,
clockListTotal
,
clockList
,
};
}
export
default
connect
(
mapStateToProps
)(
LiveClassForm
);
src/pages/clockmember/index.less
0 → 100644
View file @
a82ec764
@import '../../less/variables.less';
.container {
background-color: #fff;
border-radius: 2px;
padding: 20px;
}
.headerbox{
background-color: #fff;
.headerbtn {
color: #2194FF;
font-size: 14px;
cursor: pointer;
}
padding-bottom: 18px;
}
.searchrow {
.formitem {
display: flex;
align-items: center;
.formitemlabel {
color: #000000;
font-size: 14px;
line-height: 1;
min-width: 70px;
white-space: nowrap;
}
}
}
.selectitem {
display: block;
}
.searchbtnbox {
height: 54px;
display: flex;
align-items: flex-end;
}
.resetbtn {
margin-right: 16px;
}
.tablebox {
background: #fff;
:global {
.ant-table-fixed {
border-bottom: 1px solid #E8E8E8 !important;
}
.ant-table tbody tr:nth-child(2n) {
background-color: #FBFBFB;
}
.ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 11px 10px;
}
.ant-table-bordered .ant-table-tbody tr td {
border-bottom: none;
border-right: none!important;
}
.ant-table-bordered .ant-table-thead tr th {
border-bottom: none;
border-right: none!important;
}
.ant-table-bordered .ant-table-thead tr th:last-child {
border-right: 1px solid #e8e8e8!important;
}
.ant-table-bordered .ant-table-tbody tr td:last-child {
border-right: 1px solid #e8e8e8!important;
}
.ant-table-bordered .ant-table-tbody tr:last-child {
border-bottom: 1px solid #e8e8e8!important;
}
}
}
.divideline {
color: #E9E9E9;
padding: 0 8px;
}
.alink {
color: #1890FF;
}
.classNamebox {
max-width: 250px;
word-break: break-all;
color: #1890FF;
cursor: pointer;
}
.tableoperatebox {
min-width: 160px;
line-height: 30px;
}
.endsearchcol {
margin-bottom: 18px;
}
.endclassfooter {
display: flex;
align-items: center;
justify-content: space-between;
}
.classroomitem {
margin-bottom: 5px;
.classroom {
color:rgba(0,0,0,0.85);
}
.aLink {
color: #1890FF;
padding-left: 21px;
}
}
.rightList {
display: flex;
align-items: center;
height: 32px;
.resetIcon {
width: 14px;
height: 14px;
cursor: pointer;
margin-right: 15px;
}
.expend {
font-size:13px;
font-family:PingFangSC-Regular,PingFang SC;
font-weight:400;
color:rgba(102,102,102,1);
display: inline-block;
cursor: pointer;
}
}
.tablefooterbox {
color: rgba(0,0,0,0.6);
font-size: 16px;
line-height: 50px;
display: flex;
background-color: #fff;
align-items: center;
justify-content: space-between;
padding-left: 14px;
padding-right: 14px;
margin-top: 10px;
.tablefooterstatic {
color:rgba(0,0,0,0.65);
font-size: 14px;
}
}
.shiftbox {
display: flex;
align-items: center;
border-bottom: 1px solid #e8e8e8;
.tabitem {
color: #000000;
font-size: 16px;
line-height: 1;
padding: 10px 11px 10px;
border-bottom: 3px solid transparent;
margin: 0 20px;
cursor: pointer;
&:first-child {
margin-left: 0;
}
&.active {
border-color: #1890FF;
color: #1890FF;
font-weight: 700;
}
&:hover {
border-color: #1890FF;
color: #1890FF;
font-weight: 700;
}
}
}
.formList {
margin: 10px 0;
}
src/pages/newthemelist/index.js
View file @
a82ec764
...
...
@@ -180,7 +180,7 @@ class LiveClass extends React.Component {
lookClockMgt
=
(
record
)
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'
newthemelist
/getCode'
,
type
:
'
common
/getCode'
,
payload
:
{
record
,
},
...
...
@@ -189,7 +189,7 @@ class LiveClass extends React.Component {
closeQrcodeShow
=
()
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'
newthemelist
/updateState'
,
type
:
'
common
/updateState'
,
payload
:
{
previewQrcodeShow
:
false
,
},
...
...
@@ -241,6 +241,15 @@ class LiveClass extends React.Component {
},
});
}
goClockMember
=
(
record
)
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'newthemelist/goClockMember'
,
payload
:
{
record
,
},
});
}
render
()
{
const
{
userPermission
,
...
...
@@ -331,6 +340,10 @@ class LiveClass extends React.Component {
{
record
.
status
==
1
&&
<
span
className
=
"hreflink"
onClick
=
{()
=>
this
.
savePublish
(
record
)}
>
发布
<
Divider
type
=
"vertical"
/><
/span
>
}
{
/* { */
}
{
/* record.subject_type != 3 && */
}
{
/* <span className="hreflink" onClick={() => this.goClockMember(record)}>学生管理<Divider type="vertical" /></span> */
}
{
/* } */
}
<
span
className
=
"hreflink"
onClick
=
{()
=>
this
.
lookClockMgt
(
record
)}
>
扫码查看
<
/span
>
<
Divider
type
=
"vertical"
/>
<
span
className
=
"hreflink"
onClick
=
{()
=>
this
.
goClockMgt
(
record
)}
>
点评
<
/span
>
...
...
@@ -431,14 +444,16 @@ function mapStateToProps(state) {
clockListParams
,
clockListTotal
,
clockList
,
previewQrcodeShow
,
previewQrcode
,
downloadTitle
,
}
=
state
.
newthemelist
;
const
{
guideStep
,
guideShow
,
}
=
state
.
userguide
;
const
{
previewQrcodeShow
,
previewQrcode
,
downloadTitle
,
}
=
state
.
common
;
const
{
userPermission
,
schoolUserInfo
,
...
...
src/pages/thememgt/index.js
View file @
a82ec764
This diff is collapsed.
Click to expand it.
src/pages/thememgt/index.less
View file @
a82ec764
.classmgtcontainer {
@import '../../less/variables.less';
.container {
background-color: #fff;
padding: 25px 0 29px 0;
border-radius: 2px;
padding: 20px;
}
.activeamount{
background-color: #cccccc;
color: #666666;
text-align: center;
line-height: 50px;
font-size: 20px;
.headerbox{
background-color: #fff;
.headerbtn {
color: #2194FF;
font-size: 14px;
cursor: pointer;
}
padding-bottom: 18px;
}
.searchrow {
margin-bottom: 20px;
.formitem {
display: flex;
align-items: center;
.formitemlabel {
color: #000000;
font-size: 14px;
line-height: 1;
min-width: 70px;
white-space: nowrap;
}
}
}
.selectitem {
display: block;
}
.tablecell {
text-align: center;
.searchbtnbox {
height: 54px;
display: flex;
align-items: flex-end;
}
.
searchbox
{
padding-left: 12
px;
.
resetbtn
{
margin-right: 16
px;
}
:global {
.thememgtcontainer {
.ant-form-item {
margin-bottom: 0;
.tablebox {
background: #fff;
:global {
.ant-table-fixed {
border-bottom: 1px solid #E8E8E8 !important;
}
.ant-table tbody tr:nth-child(2n) {
background-color: #FBFBFB;
}
.ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 11px 10px;
}
.ant-table-bordered .ant-table-tbody tr td {
border-bottom: none;
border-right: none!important;
}
.ant-table-bordered .ant-table-thead tr th {
border-bottom: none;
border-right: none!important;
}
.ant-table-bordered .ant-table-thead tr th:last-child {
border-right: 1px solid #e8e8e8!important;
}
.ant-table-bordered .ant-table-tbody tr td:last-child {
border-right: 1px solid #e8e8e8!important;
}
.ant-table-bordered .ant-table-tbody tr:last-child {
border-bottom: 1px solid #e8e8e8!important;
}
}
}
\ No newline at end of file
}
.divideline {
color: #E9E9E9;
padding: 0 8px;
}
.alink {
color: #1890FF;
}
.classNamebox {
max-width: 250px;
word-break: break-all;
color: #1890FF;
cursor: pointer;
}
.tableoperatebox {
min-width: 160px;
line-height: 30px;
}
.endsearchcol {
margin-bottom: 18px;
}
.endclassfooter {
display: flex;
align-items: center;
justify-content: space-between;
}
.classroomitem {
margin-bottom: 5px;
.classroom {
color:rgba(0,0,0,0.85);
}
.aLink {
color: #1890FF;
padding-left: 21px;
}
}
.rightList {
display: flex;
align-items: center;
height: 32px;
.resetIcon {
width: 14px;
height: 14px;
cursor: pointer;
margin-right: 15px;
}
.expend {
font-size:13px;
font-family:PingFangSC-Regular,PingFang SC;
font-weight:400;
color:rgba(102,102,102,1);
display: inline-block;
cursor: pointer;
}
}
.tablefooterbox {
color: rgba(0,0,0,0.6);
font-size: 16px;
line-height: 50px;
display: flex;
background-color: #fff;
align-items: center;
justify-content: space-between;
padding-left: 14px;
padding-right: 14px;
margin-top: 10px;
.tablefooterstatic {
color:rgba(0,0,0,0.65);
font-size: 14px;
}
}
.shiftbox {
display: flex;
align-items: center;
border-bottom: 1px solid #e8e8e8;
.tabitem {
color: #000000;
font-size: 16px;
line-height: 1;
padding: 10px 11px 10px;
border-bottom: 3px solid transparent;
margin: 0 20px;
cursor: pointer;
&:first-child {
margin-left: 0;
}
&.active {
border-color: #1890FF;
color: #1890FF;
font-weight: 700;
}
&:hover {
border-color: #1890FF;
color: #1890FF;
font-weight: 700;
}
}
}
.formList {
margin: 10px 0;
}
src/router.js
View file @
a82ec764
...
...
@@ -296,6 +296,11 @@ const ClockList = props => (
{
ClockList
=>
(
<
ClockList
{...
props
}
/>
)
}
<
/Bundle
>
);
const
ClockMember
=
props
=>
(
<
Bundle
load
=
{()
=>
import
(
/* webpackChunkName:"ClockMember" */
'./pages/clockmember/index'
)}
>
{
ClockMember
=>
(
<
ClockMember
{...
props
}
/>
)
}
<
/Bundle
>
);
function
RouterConfig
({
history
})
{
return
(
<
ConfigProvider
locale
=
{
zhCN
}
>
...
...
@@ -355,6 +360,7 @@ function RouterConfig({ history }) {
<
Route
path
=
"/sjd/addLive"
exact
component
=
{
AddLive
}
/
>
<
Route
path
=
"/sjd/editLive/:id"
exact
component
=
{
AddLive
}
/
>
<
Route
path
=
"/sjd/clockList"
exact
component
=
{
ClockList
}
/
>
<
Route
path
=
"/sjd/member/:type/:id"
exact
component
=
{
ClockMember
}
/
>
<
Route
component
=
{
Errorpage
}
/
>
<
/Switch
>
<
/SjdIndex
>
...
...
src/services/clockmember.js
0 → 100644
View file @
a82ec764
import
qs
from
'qs'
;
import
request
from
'../utils/request'
;
import
api
from
'../common/api'
;
export
function
memberList
(
params
)
{
const
data
=
qs
.
stringify
(
params
);
return
request
({
url
:
`
${
api
.
clockmember
.
list
}
?
${
data
}
`
,
method
:
'GET'
,
});
}
export
function
deleteSubjectStudent
(
params
)
{
const
data
=
qs
.
stringify
(
params
);
return
request
({
url
:
`
${
api
.
clockmember
.
deleteSubjectStudent
}
/
${
params
.
id
}
`
,
method
:
'POST'
,
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