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
99f950f4
Commit
99f950f4
authored
Mar 28, 2020
by
baixian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
作业日历打卡完成
parent
6cbcb2c2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
770 additions
and
296 deletions
+770
-296
menuconfig.js
src/common/menuconfig.js
+1
-1
clockmgt.js
src/models/clockmgt.js
+2
-2
createmarke.js
src/models/createmarke.js
+6
-1
createtheme.js
src/models/createtheme.js
+34
-12
newthemelist.js
src/models/newthemelist.js
+102
-20
permissionsetting.js
src/models/permissionsetting.js
+0
-5
webapp.js
src/models/webapp.js
+19
-38
index.js
src/pages/classmgt/index.js
+6
-6
index.js
src/pages/index/index.js
+9
-21
index.js
src/pages/newtheme/calendarclock/index.js
+17
-2
index.less
src/pages/newtheme/calendarclock/index.less
+13
-0
ChooseClass.js
src/pages/newtheme/components/ChooseClass.js
+2
-1
ChooseClass.less
src/pages/newtheme/components/ChooseClass.less
+8
-1
MarkeEditor.js
src/pages/newtheme/components/MarkeEditor.js
+1
-0
StoreResult.js
src/pages/newtheme/customsclock/StoreResult.js
+3
-3
Unclock.js
src/pages/newtheme/customsclock/Unclock.js
+420
-121
Unclock.less
src/pages/newtheme/customsclock/Unclock.less
+38
-1
detail.js
src/pages/newtheme/customsclock/detail.js
+1
-1
index.js
src/pages/newtheme/jobclock/index.js
+16
-4
index.less
src/pages/newtheme/jobclock/index.less
+13
-0
index.js
src/pages/newthemelist/index.js
+57
-54
router.js
src/router.js
+1
-1
clockmgt.js
src/services/clockmgt.js
+1
-1
No files found.
src/common/menuconfig.js
View file @
99f950f4
...
...
@@ -54,7 +54,7 @@ export default {
activeurl
:
`
${
__IMGCDN__
}
menu/classactive.png`
,
notactiveurl
:
`
${
__IMGCDN__
}
menu/class.png?v=2`
,
path
:
'/sjd/classmgt'
,
relativePath
:
[
'/sjd/classmgt'
,
'/sjd/classdetail/:classid'
,
'/sjd/newtheme/jobclock/:id'
,
'/sjd/newtheme/calendarclock/:id'
,
'/sjd/newtheme/jobclock/:id/:isCopy'
,
'/sjd/newtheme/calendarclock/:id/:isCopy'
,
'/sjd/thememgt/:classid'
,
'/sjd/clockmgt/:themetype/:
classid/:
themeid'
,
'/sjd/classdetail/studentinfo/:id'
,
'/sjd/customsDetail/:id'
,
'/sjd/addCustomsContent/:id'
,
'/sjd/editCustoms/:id'
,
'/sjd/editCustomsContent/:id'
],
relativePath
:
[
'/sjd/classmgt'
,
'/sjd/classdetail/:classid'
,
'/sjd/newtheme/jobclock/:id'
,
'/sjd/newtheme/calendarclock/:id'
,
'/sjd/newtheme/jobclock/:id/:isCopy'
,
'/sjd/newtheme/calendarclock/:id/:isCopy'
,
'/sjd/thememgt/:classid'
,
'/sjd/clockmgt/:themetype/:themeid'
,
'/sjd/classdetail/studentinfo/:id'
,
'/sjd/customsDetail/:id'
,
'/sjd/addCustomsContent/:id'
,
'/sjd/editCustoms/:id'
,
'/sjd/editCustomsContent/:id'
],
},
{
id
:
'4'
,
...
...
src/models/clockmgt.js
View file @
99f950f4
...
...
@@ -266,9 +266,9 @@ export default {
});
},
*
getsubjectReviewTemplate
({
payload
},
{
call
,
put
,
select
})
{
const
{
class
Id
}
=
yield
select
(
state
=>
state
.
clockmgt
);
const
{
theme
Id
}
=
yield
select
(
state
=>
state
.
clockmgt
);
const
tempData
=
yield
call
(
clockmgtajax
.
getsubjectReviewTemplate
,
{
class_id
:
class
Id
,
subject_id
:
theme
Id
,
});
if
(
tempData
.
code
==
200
)
{
yield
put
({
...
...
src/models/createmarke.js
View file @
99f950f4
...
...
@@ -196,6 +196,11 @@ export default {
id
:
item
.
id
,
});
if
(
data
.
code
==
200
)
{
// eslint-disable-next-line no-nested-ternary
const
_content
=
data
.
data
.
content
?
JSON
.
parse
(
data
.
data
.
content
)
:
[];
// eslint-disable-next-line no-nested-ternary
data
.
data
.
content
=
_content
&&
_content
[
0
]
?
(
_content
[
0
].
content
||
_content
[
0
].
title
?
_content
:
[{
title
:
''
,
content
:
_content
}])
:
[{
title
:
''
,
content
:
[{
type
:
'text'
,
value
:
''
}]
}];
console
.
log
(
_content
,
'data.content'
);
yield
put
({
type
:
'updateState'
,
payload
:
{
...
...
@@ -207,7 +212,7 @@ export default {
mobile
:
data
.
data
.
mobile
,
img
:
data
.
data
.
img
,
cover
:
data
.
data
.
cover
,
content
:
JSON
.
parse
(
data
.
data
.
content
)
,
content
:
data
.
data
.
content
,
},
addMarkeVisible
:
true
,
},
...
...
src/models/createtheme.js
View file @
99f950f4
...
...
@@ -450,7 +450,7 @@ export default {
// eslint-disable-next-line prefer-spread
rest_dates
:
rest_dates
&&
rest_dates
.
length
>
0
?
new_rest_dates
.
join
(
','
)
:
''
,
content_id
:
themeAdInfo
.
id
,
class_ids
:
classes
.
join
(
','
)
,
class_ids
:
(
newParams
.
join_rule_type
==
2
||
newParams
.
join_rule_type
==
4
)
?
classes
.
join
(
','
)
:
''
,
join_secret
,
}));
yield
put
({
...
...
@@ -540,7 +540,7 @@ export default {
}
if
((
newParams
.
id
!=
undefined
)
&&
newParams
.
id
!==
0
)
{
// yield delay(500);
//
yield put(routerRedux.goBack());
yield
put
(
routerRedux
.
goBack
());
// yield put({
// type: 'thememgt/getCode',
// payload: {
...
...
@@ -554,9 +554,14 @@ export default {
// });
}
else
{
yield
delay
(
500
);
// yield put(routerRedux.push({
// pathname: `/sjd/thememgt/${class_id}`,
// }));
yield
put
(
routerRedux
.
push
({
pathname
:
'/sjd/clockList'
,
}));
yield
put
({
type
:
'updateState'
,
payload
:
{
},
});
// yield put({
// type: 'thememgt/getCode',
// payload: {
...
...
@@ -584,6 +589,7 @@ export default {
const
emigratedDate
=
yield
call
(
themeAjax
.
findEmigrated
,
{
id
:
store_id
,
school_id
:
sid
,
extra
:
'land_content,class,subject_teacher'
,
});
if
(
emigratedDate
.
code
==
200
)
{
yield
put
({
...
...
@@ -617,6 +623,12 @@ export default {
},
radioname
:
emigratedDate
.
data
.
sign_up_content
?
JSON
.
parse
(
emigratedDate
.
data
.
sign_up_content
).
radioname
:
''
,
radioList
:
emigratedDate
.
data
.
sign_up_content
?
JSON
.
parse
(
emigratedDate
.
data
.
sign_up_content
).
radioList
:
[],
themeAdInfo
:
{
id
:
(
emigratedDate
.
data
.
land_content
&&
emigratedDate
.
data
.
land_content
.
id
)
||
0
,
title
:
(
emigratedDate
.
data
.
land_content
&&
emigratedDate
.
data
.
land_content
.
title
)
||
''
,
},
chooseClasses
:
emigratedDate
.
data
.
classes
.
map
(
ele
=>
({
title
:
ele
.
title
,
id
:
ele
.
id
})),
classes
:
emigratedDate
.
data
.
classes
.
map
(
ele
=>
(
ele
.
id
)),
},
});
}
else
{
...
...
@@ -1524,6 +1536,8 @@ export default {
radioList
,
radioname
,
customsParams
,
themeAdInfo
,
classes
,
}
=
yield
select
(
state
=>
state
.
createtheme
);
const
{
title
,
...
...
@@ -1531,15 +1545,21 @@ export default {
push_time
,
class_id
,
unlock_rule_type
,
password
,
join_rule_type
,
max_clock_count
,
subject_count
,
unlock_limit
,
callBack
,
sign_up_status
,
j
ump_type
,
j
oin_secret
,
}
=
payload
;
if
(
themeAdInfo
.
id
==
0
)
{
message
.
error
(
'请选择营销页!'
,
1
);
return
;
}
if
(
customsParams
.
join_rule_type
==
4
&&
classes
.
length
==
0
)
{
message
.
error
(
'请选择班级!'
,
1
);
return
;
}
if
(
sign_up_status
==
1
)
{
if
(
radioList
.
length
>
0
)
{
let
flag
=
false
;
...
...
@@ -1585,20 +1605,22 @@ export default {
});
const
postFunction
=
(
newParams
.
id
!=
undefined
)
&&
newParams
.
id
!==
0
?
themeAjax
.
editEmigrated
:
themeAjax
.
addEmigrated
;
const
data
=
yield
call
(
postFunction
,
Object
.
assign
(
newParams
,
{
school_id
:
sid
,
title
,
push_status
,
push_time
,
class_id
,
unlock_rule_type
,
password
,
join_rule_type
,
max_clock_count
,
subject_count
,
unlock_limit
,
sign_up_status
,
introduce
:
newParams
.
introduce
?
JSON
.
stringify
(
newParams
.
introduce
)
:
''
,
sign_up_content
:
newParams
.
sign_up_content
?
JSON
.
stringify
(
newParams
.
sign_up_content
)
:
''
,
jump_type
,
content_id
:
themeAdInfo
.
id
,
class_ids
:
(
newParams
.
join_rule_type
==
2
||
newParams
.
join_rule_type
==
4
)
?
classes
.
join
(
','
)
:
''
,
join_secret
,
status
:
1
,
}));
yield
put
({
type
:
'updateState'
,
...
...
@@ -1968,7 +1990,7 @@ export default {
*
goThemeList
({
payload
},
{
call
,
put
,
select
})
{
const
{
themeListId
}
=
yield
select
(
state
=>
state
.
createtheme
);
yield
put
(
routerRedux
.
push
({
pathname
:
`/sjd/thememgt/
${
themeListId
}
`
,
pathname
:
'/sjd/clockList'
,
}));
yield
put
({
type
:
'updateState'
,
...
...
src/models/newthemelist.js
View file @
99f950f4
...
...
@@ -11,7 +11,9 @@ import {
}
from
'../utils/index'
;
import
errorcode
from
'../common/errorcode'
;
import
*
as
uploader
from
'../services/uploader'
;
import
*
as
themeAjax
from
'../services/newthemelist'
;
import
*
as
themeListAjax
from
'../services/newthemelist'
;
import
*
as
themeAjax
from
'../services/createtheme'
;
import
*
as
commonAjax
from
'../services/common'
;
export
default
{
namespace
:
'newthemelist'
,
state
:
{
...
...
@@ -48,7 +50,7 @@ export default {
school_id
:
sid
,
});
let
newTotal
=
clockListTotal
;
const
data
=
yield
call
(
themeAjax
.
clockList
,
{
const
data
=
yield
call
(
theme
List
Ajax
.
clockList
,
{
...
newParams
,
});
setTimeout
(
loading
);
...
...
@@ -73,27 +75,20 @@ export default {
});
}
},
*
queryDetail
({
payload
},
{
call
,
put
,
select
})
{
const
{
id
}
=
payload
;
const
data
=
yield
call
(
themeAjax
.
liveDetail
,
{
id
,
*
savePublish
({
payload
},
{
call
,
put
,
select
})
{
const
{
record
}
=
payload
;
const
{
sid
}
=
yield
select
(
state
=>
state
.
webapp
);
const
data
=
yield
call
(
themeAjax
.
saveRelease
,
{
status
:
2
,
school_id
:
sid
,
id
:
record
.
id
,
});
if
(
data
.
code
==
200
)
{
if
(
data
.
code
===
200
)
{
message
.
success
(
'发布成功'
,
0.5
);
yield
put
({
type
:
'
updateState
'
,
type
:
'
queryList
'
,
payload
:
{
addLiveObj
:
{
title
:
data
.
data
.
title
,
remark
:
data
.
data
.
remark
,
secret
:
data
.
data
.
secret
,
cover
:
data
.
data
.
cover
,
live_start_time
:
data
.
data
.
live_start_time
,
need_replay
:
data
.
data
.
need_replay
,
pay_switch
:
data
.
data
.
pay_switch
,
status
:
data
.
data
.
status
,
content
:
JSON
.
parse
(
data
.
data
.
content
),
id
:
data
.
data
.
id
,
live_status
:
data
.
data
.
live_status
,
params
:
{
},
},
});
...
...
@@ -106,6 +101,93 @@ export default {
});
}
},
*
deleteTheme
({
payload
},
{
call
,
put
,
select
})
{
const
{
id
,
record
}
=
payload
;
const
{
sid
}
=
yield
select
(
state
=>
state
.
webapp
);
const
{
clockListParams
,
clockList
}
=
yield
select
(
state
=>
state
.
newthemelist
);
const
postFunction
=
record
.
subject_type
==
3
?
themeAjax
.
deleteSubject
:
themeAjax
.
deleteTheme
;
const
goodsdelete
=
yield
call
(
postFunction
,
{
id
,
school_id
:
sid
,
});
if
(
goodsdelete
.
code
==
200
)
{
yield
put
({
type
:
'webapp/updateState'
,
});
yield
put
({
type
:
'queryList'
,
payload
:
{
params
:
{
page
:
clockList
.
length
==
1
&&
clockListParams
.
page
>
1
?
clockListParams
.
page
-
1
:
clockListParams
.
page
,
},
},
});
message
.
success
(
'删除成功'
,
1
);
}
else
{
yield
put
({
type
:
'webapp/errorrequestresolve'
,
payload
:
{
data
:
goodsdelete
,
},
});
}
},
*
goclockmgt
({
payload
},
{
call
,
put
,
select
})
{
const
{
classId
}
=
yield
select
(
state
=>
state
.
newthemelist
);
if
(
!
payload
.
subject_id
)
{
message
.
error
(
'数据异常'
,
1
);
return
;
}
yield
put
(
routerRedux
.
push
({
pathname
:
`/sjd/clockmgt/
${
payload
.
subject_type
}
/
${
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
);
}
},
*
goBack
({
payload
},
{
call
,
put
,
select
})
{
yield
put
(
routerRedux
.
goBack
());
},
...
...
src/models/permissionsetting.js
View file @
99f950f4
...
...
@@ -105,11 +105,6 @@ export default {
name
:
'添加班级'
,
fid
:
300
,
ffid
:
3
,
},
{
key
:
30002
,
name
:
'主题管理(发布作业,点评作业)'
,
fid
:
300
,
ffid
:
3
,
},
{
key
:
30003
,
name
:
'微信推送设置'
,
...
...
src/models/webapp.js
View file @
99f950f4
...
...
@@ -612,12 +612,6 @@ export default {
id
:
jobClockActive
[
1
],
},
});
dispatch
({
type
:
'createtheme/queryLandingList'
,
payload
:
{
params
:
{},
},
});
dispatch
({
type
:
'updateState'
,
payload
:
{
...
...
@@ -652,12 +646,6 @@ export default {
isCopy
:
jobClockCopyActive
[
2
],
},
});
dispatch
({
type
:
'createtheme/queryLandingList'
,
payload
:
{
params
:
{},
},
});
dispatch
({
type
:
'createtheme/queryClassList'
,
payload
:
{
...
...
@@ -694,12 +682,6 @@ export default {
payload
:
{
},
});
dispatch
({
type
:
'createtheme/queryLandingList'
,
payload
:
{
params
:
{},
},
});
dispatch
({
type
:
'updateState'
,
payload
:
{
...
...
@@ -722,12 +704,6 @@ export default {
payload
:
{
},
});
dispatch
({
type
:
'createtheme/queryLandingList'
,
payload
:
{
params
:
{},
},
});
dispatch
({
type
:
'createtheme/createThemeModalFind'
,
payload
:
{
...
...
@@ -778,12 +754,6 @@ export default {
payload
:
{
},
});
dispatch
({
type
:
'createtheme/queryLandingList'
,
payload
:
{
params
:
{},
},
});
dispatch
({
type
:
'createtheme/createThemeModalFind'
,
payload
:
{
...
...
@@ -823,7 +793,7 @@ export default {
},
});
}
const
clockmgtactive
=
pathToRegexp
(
'/sjd/clockmgt/:themetype/:
classid/:
themeid'
).
exec
(
pathname
);
const
clockmgtactive
=
pathToRegexp
(
'/sjd/clockmgt/:themetype/:themeid'
).
exec
(
pathname
);
if
(
clockmgtactive
)
{
dispatch
({
type
:
'updateState'
,
...
...
@@ -848,10 +818,9 @@ export default {
type
:
'clockmgt/enterclockmgt'
,
payload
:
{
themetype
:
clockmgtactive
[
1
],
classId
:
clockmgtactive
[
2
],
themeId
:
clockmgtactive
[
3
],
themeId
:
clockmgtactive
[
2
],
params
:
{
class_id
:
clockmgtactive
[
1
],
subject_id
:
clockmgtactive
[
2
],
},
},
});
...
...
@@ -863,12 +832,12 @@ export default {
},
});
dispatch
({
type
:
'createtheme/query
ClassList
'
,
type
:
'createtheme/query
Info
'
,
payload
:
{
},
});
dispatch
({
type
:
'
headquarters/headquarterModelDetail
'
,
type
:
'
createtheme/queryClassList
'
,
payload
:
{
},
});
...
...
@@ -877,7 +846,7 @@ export default {
payload
:
{
breadcrumbList
:
[{
path
:
pathname
,
name
:
'
发布主题
'
,
name
:
'
新建闯关打卡
'
,
}],
},
});
...
...
@@ -1012,6 +981,11 @@ export default {
payload
:
{
},
});
dispatch
({
type
:
'createtheme/queryInfo'
,
payload
:
{
},
});
dispatch
({
type
:
'createtheme/createThemeModalfindEmigrated'
,
payload
:
{
...
...
@@ -1481,6 +1455,9 @@ export default {
});
}
if
(
pathname
===
'/sjd/clockList'
)
{
dispatch
({
type
:
'newthemelist/pageInit'
,
});
dispatch
({
type
:
'newthemelist/queryinfo'
,
});
...
...
@@ -1675,7 +1652,7 @@ export default {
yield
put
({
type
:
'thememgt/pageInit'
,
});
}
else
if
(
pathToRegexp
(
'/sjd/clockmgt/:themetype/:
classid/:
themeid'
).
exec
(
locationPathname
))
{
}
else
if
(
pathToRegexp
(
'/sjd/clockmgt/:themetype/:themeid'
).
exec
(
locationPathname
))
{
yield
put
({
type
:
'clockmgt/pageInit'
,
});
...
...
@@ -1747,6 +1724,10 @@ export default {
yield
put
({
type
:
'createtheme/pageInit'
,
});
}
else
if
(
pathToRegexp
(
'/sjd/clockList'
).
exec
(
locationPathname
))
{
yield
put
({
type
:
'newthemelist/pageInit'
,
});
}
// yield put({
// type: 'joinschooladd/pageInit',
...
...
src/pages/classmgt/index.js
View file @
99f950f4
...
...
@@ -671,12 +671,12 @@ 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
>
}
{
/* {hasBtnPower('sjd/classmgt', 'thememgt') && */
}
{
/* <BtnPermission btnId="30002"> */
}
{
/* <span className="hreflink" onClick={() => this.goThemeMgt(record)}>打卡管理</span> */
}
{
/* <span className={pageStyle.divideline}>|</span> */
}
{
/* </BtnPermission> */
}
{
/* } */
}
{
hasBtnPower
(
'sjd/classmgt'
,
'callStudent'
)
&&
<
span
>
<
span
className
=
"hreflink"
onClick
=
{()
=>
this
.
goClassDetail
(
record
,
3
)}
>
点名
<
/span
>
...
...
src/pages/index/index.js
View file @
99f950f4
...
...
@@ -111,10 +111,6 @@ class StaticCenter extends React.Component {
}
createTheme
=
()
=>
{
const
{
dispatch
,
userPermission
}
=
this
.
props
;
if
(
!
btnPermission
(
userPermission
,
30002
))
{
message
.
warn
(
'暂无权限,请联系管理员开通【主题管理权限】'
,
1
);
return
;
}
dispatch
({
type
:
'createtheme/goTheme'
,
payload
:
{
...
...
@@ -124,10 +120,6 @@ class StaticCenter extends React.Component {
}
createCalendarTheme
=
()
=>
{
const
{
dispatch
,
userPermission
}
=
this
.
props
;
if
(
!
btnPermission
(
userPermission
,
30002
))
{
message
.
warn
(
'暂无权限,请联系管理员开通【主题管理权限】'
,
1
);
return
;
}
dispatch
({
type
:
'createtheme/goTheme'
,
payload
:
{
...
...
@@ -137,10 +129,6 @@ class StaticCenter extends React.Component {
}
createUnlockTheme
=
()
=>
{
const
{
dispatch
,
userPermission
}
=
this
.
props
;
if
(
!
btnPermission
(
userPermission
,
30002
))
{
message
.
warn
(
'暂无权限,请联系管理员开通【主题管理权限】'
,
1
);
return
;
}
dispatch
(
routerRedux
.
push
(
'/sjd/addCustoms'
));
}
disabledDate
=
(
current
)
=>
{
...
...
@@ -1169,8 +1157,16 @@ class StaticCenter extends React.Component {
<
/Col
>
<
/Row
>
<
Row
gutter
=
{
24
}
>
{
btnPermission
(
userPermission
,
2
)
&&
<
Col
xs
=
{{
span
:
8
,
offset
:
0
}}
sm
=
{{
span
:
8
,
offset
:
0
}}
md
=
{{
span
:
8
,
offset
:
0
}}
lg
=
{{
span
:
4
,
offset
:
0
}}
xl
=
{{
span
:
4
,
offset
:
0
}}
xxl
=
{{
span
:
4
,
offset
:
0
}}
>
<
div
className
=
{
pageStyle
.
fasterItem
}
onClick
=
{
this
.
goClockList
}
>
<
div
className
=
{
pageStyle
.
fasterLeft
}
>
<
img
className
=
{
pageStyle
.
fasterImg
}
src
=
{
`
${
__IMGCDN__
}
index/index_icon11.png?v=1`
}
alt
=
""
/>
<
/div
>
<
span
>
打卡列表
<
/span
>
<
/div
>
<
/Col
>
{
btnPermission
(
userPermission
,
2
)
&&
<
Col
xs
=
{{
span
:
8
,
offset
:
0
}}
sm
=
{{
span
:
8
,
offset
:
0
}}
md
=
{{
span
:
8
,
offset
:
0
}}
lg
=
{{
span
:
4
,
offset
:
1
}}
xl
=
{{
span
:
4
,
offset
:
1
}}
xxl
=
{{
span
:
4
,
offset
:
1
}}
>
<
div
className
=
{
pageStyle
.
fasterItem
}
onClick
=
{
this
.
goDeadlineStudent
}
>
<
div
className
=
{
pageStyle
.
fasterLeft
}
>
{
...
...
@@ -1183,14 +1179,6 @@ class StaticCenter extends React.Component {
<
/div
>
<
/Col
>
}
<
Col
xs
=
{{
span
:
8
,
offset
:
0
}}
sm
=
{{
span
:
8
,
offset
:
0
}}
md
=
{{
span
:
8
,
offset
:
0
}}
lg
=
{{
span
:
4
,
offset
:
1
}}
xl
=
{{
span
:
4
,
offset
:
1
}}
xxl
=
{{
span
:
4
,
offset
:
1
}}
>
<
div
className
=
{
pageStyle
.
fasterItem
}
onClick
=
{
this
.
goClockList
}
>
<
div
className
=
{
pageStyle
.
fasterLeft
}
>
<
img
className
=
{
pageStyle
.
fasterImg
}
src
=
{
`
${
__IMGCDN__
}
index/index_icon11.png?v=1`
}
alt
=
""
/>
<
/div
>
<
span
>
打卡列表
<
/span
>
<
/div
>
<
/Col
>
<
/Row
>
<
/div
>
}
...
...
src/pages/newtheme/calendarclock/index.js
View file @
99f950f4
...
...
@@ -422,6 +422,9 @@ class CalendarClockForm extends React.Component {
classes
,
chooseClasses
,
addMarkeVisible
,
collapsed
,
screenIsBig
,
schoolUserInfo
,
}
=
this
.
props
;
let
new_rest_dates
=
[];
new_rest_dates
=
[...
new
Set
(
new_rest_dates
.
concat
(...
rest_dates
))];
...
...
@@ -697,6 +700,7 @@ class CalendarClockForm extends React.Component {
chooseClasses
=
{
chooseClasses
}
choose
=
{
this
.
handleChooseClass
}
saveClasses
=
{
this
.
saveClasses
}
schoolUserInfo
=
{
schoolUserInfo
}
/
>
:
null
}
...
...
@@ -867,11 +871,17 @@ class CalendarClockForm extends React.Component {
<
AddMarkeModal
visible
=
{
addMarkeVisible
}
/
>
<
FormItem
{...
submitFormLayout
}
style
=
{{
marginTop
:
32
}}
>
<
div
className
=
{
pageStyle
.
footerBox
}
style
=
{{
left
:
screenIsBig
?
(
!
collapsed
?
'193px'
:
'102px'
)
:
0
,
// eslint-disable-line
width
:
screenIsBig
?
(
`calc(100% -
${
!
collapsed
?
'214px'
:
'122px'
}
)`
)
:
'100%'
,
// eslint-disable-line
}}
>
<
Button
type
=
"primary"
htmlType
=
"submit"
loading
=
{
themeAddLoading
}
>
发布主题
<
/Button
>
<
/
FormItem
>
<
/
div
>
<
/Form
>
<
/div
>
);
...
...
@@ -908,6 +918,7 @@ function mapStateToProps(state) {
const
{
addMarkeVisible
,
}
=
state
.
createmarke
;
const
{
collapsed
,
screenIsBig
,
schoolUserInfo
}
=
state
.
webapp
;
return
{
themeAddLoading
,
classList
,
...
...
@@ -930,6 +941,10 @@ function mapStateToProps(state) {
clockClassParams
,
classes
,
chooseClasses
,
collapsed
,
screenIsBig
,
schoolUserInfo
,
addMarkeVisible
,
};
}
export
default
connect
(
mapStateToProps
)(
CalendarClock
);
...
...
src/pages/newtheme/calendarclock/index.less
View file @
99f950f4
...
...
@@ -2,6 +2,7 @@
background-color: #fff;
padding: 20px;
position: relative;
padding-bottom: 80px;
}
.title {
font-size:16px;
...
...
@@ -345,3 +346,15 @@
}
}
}
.footerBox {
position: fixed;
bottom: 0;
background-color: #fff;
padding: 20px 20px 14px 20px;
width: 100%;
box-shadow:1px -6px 6px 0px rgba(0, 0, 0, 0.04);
transition: 0.2s left;
transition: 0.1s width;
z-index: 20;
text-align: center;
}
src/pages/newtheme/components/ChooseClass.js
View file @
99f950f4
...
...
@@ -61,6 +61,7 @@ class ChooseClassModal extends React.Component {
clockClassParams
,
classes
,
chooseClasses
,
schoolUserInfo
,
}
=
this
.
props
;
return
(
<
Modal
...
...
@@ -99,7 +100,7 @@ class ChooseClassModal extends React.Component {
{
ele
.
school_teachers
.
map
((
ll
,
i
)
=>
{
return
(
<
span
className
=
{
pageStyle
.
teacherName
}
>
{
ll
.
nickname
}
<
/span
>
<
span
className
=
{
ll
.
id
==
schoolUserInfo
.
id
?
pageStyle
.
teacherNameActive
:
pageStyle
.
teacherName
}
>
{
ll
.
nickname
}
<
/span
>
);
})
}
...
...
src/pages/newtheme/components/ChooseClass.less
View file @
99f950f4
...
...
@@ -9,6 +9,7 @@
max-height: 400px;
min-height: 350px;
overflow-y: scroll;
padding-right: 10px;
.classItem {
margin-bottom: 20px;
.classTitle {
...
...
@@ -51,8 +52,14 @@
content: '、';
}
}
.teacherName
:nth-child(1)
{
.teacherName
Active
{
color: #FEA915;
font-size: 12px;
}
.teacherNameActive:not(:last-child) {
&:after{
content: '、';
}
}
}
.check {
...
...
src/pages/newtheme/components/MarkeEditor.js
View file @
99f950f4
...
...
@@ -62,6 +62,7 @@ class ThemeEditor extends React.Component {
<
div
className
=
{
pageStyle
.
editorwrap
}
>
{
commentParams
.
content
&&
commentParams
.
content
.
length
>
0
&&
commentParams
.
content
.
map
((
ele
,
sort
)
=>
{
console
.
log
(
ele
.
content
,
'ele'
);
return
(
<
div
className
=
{
pageStyle
.
plateWrap
}
>
{
/* <div className={pageStyle.plateDelete} onClick={() => editorDeletePlate(sort)}><Icon type="close-circle" theme="filled" /></div> */
}
...
...
src/pages/newtheme/customsclock/StoreResult.js
View file @
99f950f4
...
...
@@ -50,12 +50,12 @@ class SuccessStoreForm extends React.Component {
<
div
className
=
{
pageStyle
.
container
}
>
<
div
className
=
{
pageStyle
.
head
}
>
<
Icon
type
=
"check-circle"
theme
=
"filled"
style
=
{{
color
:
'#52c41a'
,
fontSize
:
50
}}
/
>
<
p
className
=
{
pageStyle
.
successInfo
}
>
闯关
活动
成功创建
<
/p
>
<
p
className
=
{
pageStyle
.
successInfo
}
>
闯关
打卡
成功创建
<
/p
>
<
img
className
=
{
pageStyle
.
img
}
src
=
{
imagify
(
storeImg
)}
alt
=
""
/>
{
storeImg
&&
<
p
>
活动
创建成功,打开微信扫一扫,查看活动或转发给学员
<
/p>
}
{
storeImg
&&
<
p
>
打卡
创建成功,打开微信扫一扫,查看活动或转发给学员
<
/p>
}
<
/div
>
<
div
style
=
{{
textAlign
:
'center'
}}
>
<
Button
type
=
"primary"
onClick
=
{
this
.
goThemeList
}
>
返回
主题
列表
<
/Button
>
<
Button
type
=
"primary"
onClick
=
{
this
.
goThemeList
}
>
返回
打卡
列表
<
/Button
>
<
/div
>
<
/div
>
);
...
...
src/pages/newtheme/customsclock/Unclock.js
View file @
99f950f4
This diff is collapsed.
Click to expand it.
src/pages/newtheme/customsclock/Unclock.less
View file @
99f950f4
...
...
@@ -250,4 +250,41 @@
font-weight:400;
color:rgba(173,173,173,1);
line-height:18px;
}
\ No newline at end of file
}
.radioList {
width: 300px;
.radioItem {
border-bottom: 1px solid #e8e8e8;
.radioName {
font-size: 12px;
color: #000;
line-height: 20px;
}
.radioTop {
display: flex;
align-items: center;
cursor: pointer;
.radioText {
display: flex;
align-items: center;
font-size:13px;
font-family:PingFangSC-Regular,PingFang SC;
font-weight:400;
color:rgba(34,34,34,1);
width: 300px;
&>span {
font-size:13px;
font-family:PingFangSC-Regular,PingFang SC;
font-weight:400;
color:#999999;
}
}
.radioRight {
.check {
width: 19px;
height: 19px;
}
}
}
}
}
src/pages/newtheme/customsclock/detail.js
View file @
99f950f4
...
...
@@ -304,7 +304,7 @@ class SuccessStoreForm extends React.Component {
<
div
className
=
{
pageStyle
.
container
}
>
<
div
className
=
{
pageStyle
.
head
}
>
<
div
className
=
{
pageStyle
.
top
}
>
<
img
className
=
{
pageStyle
.
banner
}
src
=
{
imagify
(
emigratedObj
.
bann
er
)}
alt
=
""
/>
<
img
className
=
{
pageStyle
.
banner
}
src
=
{
imagify
(
emigratedObj
.
land_content
&&
emigratedObj
.
land_content
.
cov
er
)}
alt
=
""
/>
<
div
>
<
div
className
=
{
pageStyle
.
activityTitle
}
>
{
emigratedObj
.
title
}
<
/div
>
<
div
className
=
{
pageStyle
.
activityNum
}
>
已创建关卡数
/
关卡总数:
{
subjectList
.
length
}
/ {emigratedObj.subject_count}</
div
>
...
...
src/pages/newtheme/jobclock/index.js
View file @
99f950f4
...
...
@@ -372,9 +372,10 @@ class JobClockForm extends React.Component {
clockClassParams
,
classes
,
chooseClasses
,
collapsed
,
screenIsBig
,
schoolUserInfo
,
}
=
this
.
props
;
console
.
log
(
classes
,
'classes'
);
console
.
log
(
chooseClasses
,
'chooseClasses'
);
const
formItemModalLineLayout
=
{
labelCol
:
{
xs
:
{
span
:
2
},
...
...
@@ -599,6 +600,7 @@ class JobClockForm extends React.Component {
chooseClasses
=
{
chooseClasses
}
choose
=
{
this
.
handleChooseClass
}
saveClasses
=
{
this
.
saveClasses
}
schoolUserInfo
=
{
schoolUserInfo
}
/
>
:
null
}
...
...
@@ -750,11 +752,17 @@ class JobClockForm extends React.Component {
<
AddMarkeModal
visible
=
{
addMarkeVisible
}
/
>
<
FormItem
{...
submitFormLayout
}
style
=
{{
marginTop
:
32
}}
>
<
div
className
=
{
pageStyle
.
footerBox
}
style
=
{{
left
:
screenIsBig
?
(
!
collapsed
?
'193px'
:
'102px'
)
:
0
,
// eslint-disable-line
width
:
screenIsBig
?
(
`calc(100% -
${
!
collapsed
?
'214px'
:
'122px'
}
)`
)
:
'100%'
,
// eslint-disable-line
}}
>
<
Button
type
=
"primary"
htmlType
=
"submit"
loading
=
{
themeAddLoading
}
>
发布打卡
<
/Button
>
<
/
FormItem
>
<
/
div
>
<
/Form
>
<
/div
>
);
...
...
@@ -786,6 +794,7 @@ function mapStateToProps(state) {
const
{
addMarkeVisible
,
}
=
state
.
createmarke
;
const
{
collapsed
,
screenIsBig
,
schoolUserInfo
}
=
state
.
webapp
;
return
{
themeAddLoading
,
classList
,
...
...
@@ -804,6 +813,9 @@ function mapStateToProps(state) {
clockClassParams
,
classes
,
chooseClasses
,
schoolUserInfo
,
collapsed
,
screenIsBig
,
};
}
export
default
connect
(
mapStateToProps
)(
JobClock
);
...
...
src/pages/newtheme/jobclock/index.less
View file @
99f950f4
...
...
@@ -2,6 +2,7 @@
background-color: #fff;
padding: 20px;
position: relative;
padding-bottom: 80px;
}
.title {
font-size:16px;
...
...
@@ -122,3 +123,15 @@
}
}
}
.footerBox {
position: fixed;
bottom: 0;
background-color: #fff;
padding: 20px 20px 14px 20px;
width: 100%;
box-shadow:1px -6px 6px 0px rgba(0, 0, 0, 0.04);
transition: 0.2s left;
transition: 0.1s width;
z-index: 20;
text-align: center;
}
src/pages/newthemelist/index.js
View file @
99f950f4
...
...
@@ -92,47 +92,44 @@ class LiveClass extends React.Component {
type
:
'newthemelist/reset'
,
});
}
goClockMgt
=
(
record
)
=>
{
const
{
dispatch
}
=
this
.
props
;
if
(
record
.
status
==
1
)
{
message
.
warning
(
'该活动还暂未发布噢,请先发布'
,
0.5
);
return
;
judgeTimeStatuc
=
(
endTime
,
startTime
)
=>
{
const
endStamp
=
Date
.
parse
(
endTime
.
replace
(
/
\-
/g
,
'/'
));
const
startStamp
=
Date
.
parse
(
startTime
.
replace
(
/
\-
/g
,
'/'
));
const
nowStamp
=
(
new
Date
()).
getTime
();
let
status
=
''
;
if
(
startStamp
<=
nowStamp
)
{
status
=
'notstart'
;
}
dispatch
(
{
type
:
'newthemelist/goclockmgt'
,
payload
:
{
subject_id
:
record
.
id
,
subject_type
:
record
.
subject_type
,
},
})
;
if
(
endStamp
<
nowStamp
)
{
status
=
'end'
;
}
if
(
endStamp
>
nowStamp
&&
startStamp
<
nowStamp
)
{
status
=
'doing'
;
}
return
status
;
}
subjectTypeChange
=
(
subjectT
ype
)
=>
{
tabShift
=
(
t
ype
)
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'
thememgt/subjecttypechange
'
,
type
:
'
newthemelist/queryList
'
,
payload
:
{
subjectType
,
params
:
{
subject_type
:
type
,
},
},
});
}
search
=
()
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'thememgt/search'
,
});
}
resetsearch
=
()
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'thememgt/resetsearch'
,
});
}
editTheme
=
(
record
)
=>
{
goClockMgt
=
(
record
)
=>
{
const
{
dispatch
}
=
this
.
props
;
if
(
record
.
status
==
1
)
{
message
.
warning
(
'该活动还暂未发布噢,请先发布'
,
0.5
);
return
;
}
dispatch
({
type
:
'
createtheme/editGoTheme
'
,
type
:
'
newthemelist/goclockmgt
'
,
payload
:
{
record
,
subject_id
:
record
.
id
,
subject_type
:
record
.
subject_type
,
},
});
}
...
...
@@ -161,7 +158,7 @@ class LiveClass extends React.Component {
icon
:
<
Icon
type
=
"close-circle"
style
=
{{
color
:
'red'
}}
/>
,
onOk
()
{
dispatch
({
type
:
'
thememg
t/deleteTheme'
,
type
:
'
newthemelis
t/deleteTheme'
,
payload
:
{
record
,
id
:
record
.
id
,
...
...
@@ -181,7 +178,7 @@ class LiveClass extends React.Component {
lookClockMgt
=
(
record
)
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'
thememg
t/getCode'
,
type
:
'
newthemelis
t/getCode'
,
payload
:
{
record
,
},
...
...
@@ -190,7 +187,7 @@ class LiveClass extends React.Component {
closeQrcodeShow
=
()
=>
{
const
{
dispatch
}
=
this
.
props
;
dispatch
({
type
:
'
thememg
t/updateState'
,
type
:
'
newthemelis
t/updateState'
,
payload
:
{
previewQrcodeShow
:
false
,
},
...
...
@@ -203,36 +200,42 @@ class LiveClass extends React.Component {
return
;
}
dispatch
({
type
:
'
thememg
t/savePublish'
,
type
:
'
newthemelis
t/savePublish'
,
payload
:
{
record
,
},
});
}
judgeTimeStatuc
=
(
endTime
,
startTime
)
=>
{
const
endStamp
=
Date
.
parse
(
endTime
.
replace
(
/
\-
/g
,
'/'
));
const
startStamp
=
Date
.
parse
(
startTime
.
replace
(
/
\-
/g
,
'/'
));
const
nowStamp
=
(
new
Date
()).
getTime
();
let
status
=
''
;
if
(
startStamp
<=
nowStamp
)
{
status
=
'notstart'
;
}
if
(
endStamp
<
nowStamp
)
{
status
=
'end'
;
}
if
(
endStamp
>
nowStamp
&&
startStamp
<
nowStamp
)
{
status
=
'doing'
;
createClock
=
()
=>
{
const
{
dispatch
,
clockListParams
}
=
this
.
props
;
if
(
clockListParams
.
subject_type
==
1
)
{
dispatch
({
type
:
'createtheme/goTheme'
,
payload
:
{
index
:
1
,
},
});
}
else
if
(
clockListParams
.
subject_type
==
2
)
{
dispatch
({
type
:
'createtheme/goTheme'
,
payload
:
{
index
:
2
,
},
});
}
else
{
dispatch
(
routerRedux
.
push
(
'/sjd/addCustoms'
));
}
return
status
;
}
tabShift
=
(
type
)
=>
{
editTheme
=
(
record
)
=>
{
const
{
dispatch
}
=
this
.
props
;
// if (record.subject_type == 3) {
// message.warning('功能即将开放,敬请期待', 1);
// return;
// }
dispatch
({
type
:
'
newthemelist/queryList
'
,
type
:
'
createtheme/editGoTheme
'
,
payload
:
{
params
:
{
subject_type
:
type
,
},
record
,
},
});
}
...
...
@@ -356,7 +359,7 @@ class LiveClass extends React.Component {
className
=
{
pageStyle
.
formList
}
>
<
Col
xs
=
{{
span
:
8
}}
sm
=
{{
span
:
8
}}
md
=
{{
span
:
4
}}
lg
=
{{
span
:
4
}}
xl
=
{{
span
:
4
}}
>
<
Button
size
=
"small"
style
=
{{
marginRight
:
20
}}
type
=
"primary"
onClick
=
{
this
.
create
Live
}
>
新建打卡
<
/Button
>
<
Button
size
=
"small"
style
=
{{
marginRight
:
20
}}
type
=
"primary"
onClick
=
{
this
.
create
Clock
}
>
新建打卡
<
/Button
>
<
/Col
>
<
Col
xs
=
{{
span
:
16
}}
sm
=
{{
span
:
16
}}
md
=
{{
span
:
20
}}
lg
=
{{
span
:
20
}}
xl
=
{{
span
:
20
}}
>
<
Row
...
...
src/router.js
View file @
99f950f4
...
...
@@ -316,7 +316,7 @@ function RouterConfig({ history }) {
<
Route
path
=
"/sjd/classmgt"
exact
component
=
{
ClassMgt
}
/
>
<
Route
path
=
"/sjd/classdetail/:classid"
exact
component
=
{
ClassDetail
}
/
>
<
Route
path
=
"/sjd/thememgt/:classid"
exact
component
=
{
ThemeMgt
}
/
>
<
Route
path
=
"/sjd/clockmgt/:themetype/:
classid/:
themeid"
exact
component
=
{
ClockMgt
}
/
>
<
Route
path
=
"/sjd/clockmgt/:themetype/:themeid"
exact
component
=
{
ClockMgt
}
/
>
<
Route
path
=
"/sjd/student"
exact
component
=
{
Student
}
/
>
<
Route
path
=
"/sjd/studentinfo/:id"
exact
component
=
{
Studentinfo
}
/
>
<
Route
path
=
"/sjd/classdetail/studentinfo/:id"
exact
component
=
{
Studentinfo
}
/
>
...
...
src/services/clockmgt.js
View file @
99f950f4
...
...
@@ -72,7 +72,7 @@ export function destoryShortWords(params) {
}
export
function
getsubjectReviewTemplate
(
params
)
{
return
request
({
url
:
`
${
api
.
clockmgt
.
subjectReviewTemplate
}
?
class_id=
${
params
.
class
_id
}
`
,
url
:
`
${
api
.
clockmgt
.
subjectReviewTemplate
}
?
subject_id=
${
params
.
subject
_id
}
`
,
method
:
'GET'
,
});
}
...
...
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