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
0
Merge Requests
0
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
ce7a5a1e
Commit
ce7a5a1e
authored
Jul 02, 2021
by
guomingpang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'rc' of
ssh://xmgit.ixm5.cn:10022/xiaomai-cloud-class/xiaomai-cloud-class-web
into rc
parents
c0fcec6e
1cf7cde7
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
329 additions
and
51 deletions
+329
-51
src/core/page.less
+2
-0
src/modules/course-manage/modal/ShareLiveModal.jsx
+52
-46
src/modules/home/HomeTip.tsx
+2
-1
src/modules/root/App.tsx
+2
-0
src/modules/root/CollegeManagePage.jsx
+1
-1
src/modules/root/Menu.less
+4
-2
src/modules/root/Menu.tsx
+1
-1
src/modules/teach-tool/paper-manage/OperatePaper.jsx
+0
-0
src/modules/teach-tool/paper-manage/OperatePaper.less
+2
-0
src/modules/teach-tool/paper-manage/components/BatchScore.less
+28
-0
src/modules/teach-tool/paper-manage/components/BatchScore.tsx
+233
-0
src/store/context.ts
+2
-0
No files found.
src/core/page.less
View file @
ce7a5a1e
...
...
@@ -12,6 +12,7 @@
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
min-height: 100%;
overflow: hidden;
.page {
position: fixed;
top: 60px;
...
...
@@ -21,6 +22,7 @@
z-index: 102;
overflow: auto;
margin: 0 16px;
.box {
&:first-child {
margin-bottom: 8px;
...
...
src/modules/course-manage/modal/ShareLiveModal.jsx
View file @
ce7a5a1e
...
...
@@ -6,67 +6,67 @@
* @Description: 大班直播分享弹窗
*/
import
React
from
'react'
import
{
Modal
,
Button
,
message
}
from
'antd'
import
domtoimage
from
'dom-to-image'
import
React
from
'react'
;
import
{
Modal
,
Button
,
message
}
from
'antd'
;
import
domtoimage
from
'dom-to-image'
;
import
qrcode
from
'@/libs/qrcode/qrcode.js'
import
User
from
'@/common/js/user'
import
$
from
'jquery'
import
_
from
'underscore'
import
CourseService
from
'@/domains/course-domain/CourseService'
import
qrcode
from
'@/libs/qrcode/qrcode.js'
;
import
User
from
'@/common/js/user'
;
import
$
from
'jquery'
;
import
_
from
'underscore'
;
import
CourseService
from
'@/domains/course-domain/CourseService'
;
import
'./ShareLiveModal.less'
import
'./ShareLiveModal.less'
;
class
ShareLiveModal
extends
React
.
Component
{
constructor
(
props
)
{
super
(
props
)
super
(
props
)
;
this
.
state
=
{
shareUrl
:
'https://xiaomai5.com/liveShare?courseId=12'
,
}
}
;
}
componentDidMount
()
{
// 获取短链接
this
.
handleConvertShortUrl
()
this
.
handleConvertShortUrl
()
;
}
handleConvertShortUrl
=
()
=>
{
const
{
longUrl
}
=
this
.
props
.
data
const
{
longUrl
}
=
this
.
props
.
data
;
// 发请求
CourseService
.
getQrcode
({
urls
:
[
longUrl
],
}).
then
((
res
)
=>
{
const
{
result
=
[]
}
=
res
const
{
result
=
[]
}
=
res
;
this
.
setState
(
{
shareUrl
:
result
[
0
].
shortUrl
,
},
()
=>
{
const
qrcodeWrapDom
=
document
.
querySelector
(
'#qrcodeWrap'
)
const
qrcodeWrapDom
=
document
.
querySelector
(
'#qrcodeWrap'
)
;
const
qrcodeNode
=
new
qrcode
({
text
:
this
.
state
.
shareUrl
,
size
:
98
,
})
qrcodeWrapDom
.
appendChild
(
qrcodeNode
)
})
;
qrcodeWrapDom
.
appendChild
(
qrcodeNode
)
;
const
qrcodeWrapDomDownload
=
document
.
querySelector
(
'#qrcodeWrap-dowload'
)
const
qrcodeWrapDomDownload
=
document
.
querySelector
(
'#qrcodeWrap-dowload'
)
;
const
qrcodeNodeDownLoad
=
new
qrcode
({
text
:
this
.
state
.
shareUrl
,
size
:
196
,
})
qrcodeWrapDomDownload
.
appendChild
(
qrcodeNodeDownLoad
)
}
)
})
});
qrcodeWrapDomDownload
.
appendChild
(
qrcodeNodeDownLoad
);
}
);
});
};
componentWillUnmount
()
{
// 页面销毁之前清空定时器
clearTimeout
(
this
.
timer
)
clearTimeout
(
this
.
timer
)
;
}
// 下载海报
...
...
@@ -79,31 +79,31 @@ class ShareLiveModal extends React.Component {
()
=>
{
this
.
setState
({
time
:
new
Date
().
valueOf
()
},
()
=>
{
setTimeout
(()
=>
{
let
node
=
document
.
getElementById
(
'poster-dowload'
)
let
node
=
document
.
getElementById
(
'poster-dowload'
)
;
domtoimage
.
toPng
(
node
).
then
((
imgData
)
=>
{
console
.
log
(
imgData
)
const
download
=
document
.
createElement
(
'a'
)
const
{
courseName
}
=
this
.
props
.
data
$
(
download
).
attr
(
'href'
,
imgData
).
attr
(
'download'
,
`
${
courseName
}
.png`
).
get
(
0
).
click
()
})
},
1000
)
})
}
)
console
.
log
(
imgData
);
const
download
=
document
.
createElement
(
'a'
);
const
{
courseName
}
=
this
.
props
.
data
;
$
(
download
).
attr
(
'href'
,
imgData
).
attr
(
'download'
,
`
${
courseName
}
.png`
).
get
(
0
).
click
();
});
},
1000
);
});
}
);
};
// 复制分享链接
handleCopy
=
()
=>
{
const
textContent
=
document
.
getElementById
(
'shareUrl'
).
innerText
const
textContent
=
document
.
getElementById
(
'shareUrl'
).
innerText
;
window
.
copyText
(
textContent
)
message
.
success
(
'复制成功!'
)
}
window
.
copyText
(
textContent
)
;
message
.
success
(
'复制成功!'
)
;
}
;
render
()
{
const
{
courseDivision
,
data
,
type
,
title
}
=
this
.
props
const
{
courseName
,
scheduleVideoUrl
,
courseMediaVOS
,
coverUrl
}
=
data
const
{
shareUrl
,
showImg
,
time
}
=
this
.
state
const
{
courseDivision
,
data
,
type
,
title
}
=
this
.
props
;
const
{
courseName
,
scheduleVideoUrl
,
courseMediaVOS
,
coverUrl
}
=
data
;
const
{
shareUrl
,
showImg
,
time
}
=
this
.
state
;
// 判断是否是默认图, 默认图不需要在URL后面增加字符串
let
coverImgSrc
=
''
;
switch
(
type
)
{
...
...
@@ -111,15 +111,21 @@ class ShareLiveModal extends React.Component {
if
(
courseMediaVOS
&&
courseMediaVOS
.
length
>
0
)
{
data
.
courseMediaVOS
.
map
((
item
,
index
)
=>
{
if
(
item
.
contentType
===
'COVER'
)
{
coverImgSrc
=
item
.
mediaUrl
coverImgSrc
=
item
.
mediaUrl
;
}
else
{
coverImgSrc
=
'https://image.xiaomaiketang.com/xm/Yip2YtFDwH.png'
;
}
})
})
;
}
else
{
coverImgSrc
=
'https://image.xiaomaiketang.com/xm/Yip2YtFDwH.png'
;
}
break
;
case
'videoClass'
:
// 视频课
coverImgSrc
=
coverUrl
||
(
courseDivision
===
'internal'
?
`
${
scheduleVideoUrl
}
?x-oss-process=video/snapshot,t_0,m_fast&anystring=anystring`
:
'https://image.xiaomaiketang.com/xm/mt3ZQRxGKB.png'
)
coverImgSrc
=
coverUrl
||
(
courseDivision
===
'internal'
?
`
${
scheduleVideoUrl
}
?x-oss-process=video/snapshot,t_0,m_fast&anystring=anystring`
:
'https://image.xiaomaiketang.com/xm/mt3ZQRxGKB.png'
);
break
;
case
'graphicsClass'
:
// 图文课
coverImgSrc
=
coverUrl
||
'https://image.xiaomaiketang.com/xm/wFnpZtp2yB.png'
;
...
...
@@ -214,8 +220,8 @@ class ShareLiveModal extends React.Component {
</
div
>
</
div
>
</
Modal
>
)
)
;
}
}
export
default
ShareLiveModal
export
default
ShareLiveModal
;
src/modules/home/HomeTip.tsx
View file @
ce7a5a1e
...
...
@@ -3,6 +3,7 @@ import "./HomeTip.less"
import
{
VersionContext
}
from
"@/store/context"
;
import
ContactWidget
from
'@/components/ContactWidget'
;
import
{
Carousel
}
from
"antd"
;
import
moment
from
"moment"
;
export
default
function
HomeTip
()
{
...
...
@@ -43,7 +44,7 @@ export default function HomeTip() {
{
tipType
===
2
&&
(
<
div
className=
"content"
>
<
span
className=
"icon iconfont"
style=
{
{
color
:
"#FF4F4F"
,
marginRight
:
"8px"
}
}
>

</
span
>
版本到期提醒:当前企业购买的小麦企学院服务已于
{
expirationTime
}
到期,到期后仍可访问,但功能不可使用,建议尽快续费购买哦~
<
span
className=
"icon iconfont"
style=
{
{
color
:
"#FF4F4F"
,
marginRight
:
"8px"
}
}
>

</
span
>
版本到期提醒:当前企业购买的小麦企学院服务已于
{
moment
(
versionInfo
?.
validEndTimeST
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
}
到期,到期后仍可访问,但功能不可使用,建议尽快续费购买哦~
<
ContactWidget
placement=
"bottom"
trigger=
"hover"
><
div
className=
"renew-btn"
>
立即续费
</
div
></
ContactWidget
>
</
div
>
)
...
...
src/modules/root/App.tsx
View file @
ce7a5a1e
...
...
@@ -74,6 +74,8 @@ const App: React.FC = (props: any) => {
surplusDayTime
:
version
.
surplusDayTime
,
validEndTime
:
moment
(
version
.
validEndTime
).
format
(
'YYYY-MM-DD'
),
validStartTime
:
moment
(
version
.
validStartTime
).
format
(
'YYYY-MM-DD'
),
validEndTimeST
:
version
.
validEndTime
,
validStartTimeST
:
version
.
validStartTime
,
whetherReachUserNum
:
version
.
whetherReachUserNum
,
};
setVersionInfo
(
versioninfo
)
...
...
src/modules/root/CollegeManagePage.jsx
View file @
ce7a5a1e
...
...
@@ -85,7 +85,7 @@ function ExpirationPopover(props) {
<
div
className=
"title"
>
{
props
.
surplusDayTime
===
0
?
"服务已到期"
:
"服务到期提醒"
}
</
div
>
{
showType
===
3
?
(
<
div
className=
"tip-text"
>
当前企业购买的小麦企学院服务已于
<
span
style=
{
{
color
:
"#FF4F4F"
}
}
>
{
moment
(
props
.
endTime
).
format
(
"YYYY-MM-DD"
)
}
</
span
>
到期,到期后仍可访问,但功能不可使用,建议尽快续费购买哦~
</
div
>
<
div
className=
"tip-text"
>
当前企业购买的小麦企学院服务已于
<
span
style=
{
{
color
:
"#FF4F4F"
}
}
>
{
moment
(
props
.
endTime
).
format
(
"YYYY-MM-DD
HH:mm:ss
"
)
}
</
span
>
到期,到期后仍可访问,但功能不可使用,建议尽快续费购买哦~
</
div
>
)
:
(
<
div
className=
"tip-text"
>
当前企业购买的小麦企学院服务
<
span
style=
{
{
color
:
"#FF4F4F"
}
}
>
仅剩
{
props
.
surplusDayTime
}
天
</
span
>
(于
<
span
>
{
moment
(
props
.
endTime
).
format
(
"YYYY-MM-DD"
)
}
</
span
>
到期),为了不影响使用,建议尽快续费购买哦~
</
div
>
)
...
...
src/modules/root/Menu.less
View file @
ce7a5a1e
...
...
@@ -157,11 +157,13 @@
// }
.version-info {
position: absolute;
height:
7
4px;
height:
8
4px;
bottom: 0;
width: 100%;
cursor: pointer;
z-index: -1;
z-index: 10;
padding-top: 10px;
background-color: white;
.row-1 {
width: fit-content;
font-size: 14px;
...
...
src/modules/root/Menu.tsx
View file @
ce7a5a1e
...
...
@@ -64,7 +64,7 @@ function VersionPanel(props: any) {
<
div
className=
'widget'
style=
{
{
marginBottom
:
'16px'
,
width
:
'212px'
}
}
>
<
div
className=
'lable'
>
有效起止日期
</
div
>
<
div
className=
'lable-text'
>
{
versionInfo
?.
validStartTime
}
~
{
versionInfo
?.
validEndTime
}
{
versionInfo
?.
validStartTime
ST
===
versionInfo
?.
validEndTimeST
?
"-"
:
`${versionInfo?.validStartTime}~${versionInfo?.validEndTime}`
}
</
div
>
</
div
>
<
div
className=
'widget'
style=
{
{
marginRight
:
'26px'
,
marginBottom
:
'8px'
,
width
:
'70px'
}
}
>
...
...
src/modules/teach-tool/paper-manage/OperatePaper.jsx
View file @
ce7a5a1e
This diff is collapsed.
Click to expand it.
src/modules/teach-tool/paper-manage/OperatePaper.less
View file @
ce7a5a1e
...
...
@@ -7,6 +7,8 @@
.table-style {
border: 1px solid #f0f0f0 !important;
margin-bottom: 70px;
max-height: calc(~'100vh - 465px');
overflow: scroll;
}
.ant-tabs {
color: #666666;
...
...
src/modules/teach-tool/paper-manage/components/BatchScore.less
0 → 100644
View file @
ce7a5a1e
.batchscore {
.content {
.item {
display: flex;
width: 612px;
height: 48px;
background: #F7F8F9;
font-size: 14px;
line-height: 48px;
font-weight: 400;
color: #333333;
padding-left: 16px;
.type {
width: 112px;
}
.score {
margin-left: 8px;
margin-right: 29px;
width: 258px;
}
}
.item:not(:last-of-type) {
margin-bottom: 8px;
}
}
}
\ No newline at end of file
src/modules/teach-tool/paper-manage/components/BatchScore.tsx
0 → 100644
View file @
ce7a5a1e
import
React
,
{
useEffect
,
useState
}
from
"react"
;
import
{
Modal
,
Button
,
InputNumber
,
message
}
from
'antd'
;
import
"./BatchScore.less"
import
_
from
"underscore"
;
interface
Rule
{
typeKey
:
"GAP_FILLING"
|
"INDEFINITE_CHOICE"
|
"JUDGE"
|
"MULTI_CHOICE"
|
"SINGLE_CHOICE"
,
score
:
number
,
portionScore
:
number
,
totalQuestion
:
number
,
}
interface
BatchScoreProps
{
visible
:
boolean
,
rules
:
Rule
[],
onOK
:
(
rules
:
Rule
[])
=>
void
,
onCancel
:
()
=>
void
,
}
export
default
function
BatchScore
(
props
:
BatchScoreProps
)
{
const
[
rules
,
setRules
]
=
useState
<
Rule
[]
>
(
_
.
sortBy
(
props
.
rules
,
"typeKey"
))
const
[
singleCount
,
setSingleCount
]
=
useState
<
number
[]
>
([
0
])
const
[
multiCount
,
setMultiCount
]
=
useState
<
number
[]
>
([
0
])
const
[
judgeCount
,
setJudgeCount
]
=
useState
<
number
[]
>
([
0
])
const
[
gapCount
,
setgapCount
]
=
useState
<
number
[]
>
([
0
])
const
[
indefiniteCount
,
setIndefiniteCount
]
=
useState
<
number
[]
>
([
0
])
useEffect
(()
=>
{
_
.
map
(
props
.
rules
,(
item
)
=>
{
//更新分数统计
switch
(
item
.
typeKey
)
{
case
"SINGLE_CHOICE"
:
setSingleCount
([
item
.
totalQuestion
,
item
.
totalQuestion
*
item
.
score
])
break
;
case
"MULTI_CHOICE"
:
setMultiCount
([
item
.
totalQuestion
,
item
.
totalQuestion
*
item
.
score
])
break
;
case
"JUDGE"
:
setJudgeCount
([
item
.
totalQuestion
,
item
.
totalQuestion
*
item
.
score
])
break
;
case
"GAP_FILLING"
:
setgapCount
([
item
.
totalQuestion
,
item
.
totalQuestion
*
item
.
score
])
break
;
case
"INDEFINITE_CHOICE"
:
setIndefiniteCount
([
item
.
totalQuestion
,
item
.
totalQuestion
*
item
.
score
])
break
;
default
:
break
;
}
})
},[
props
.
rules
,
rules
])
if
(
!
props
.
visible
)
{
return
(
""
)
}
function
onOk
()
{
for
(
let
i
=
0
;
i
<
rules
.
length
;
++
i
)
{
if
(
rules
[
i
].
score
<=
0
||
rules
[
i
].
score
>
100
)
{
message
.
error
(
"分值设置错误"
)
return
;
}
}
props
.
onOK
(
rules
)
}
function
onCancel
()
{
props
.
onCancel
()
}
const
inputNumberStyle
=
{
width
:
"57px"
,
margin
:
"0 8px"
}
return
(
<
Modal
className=
"batchscore"
title=
"批量设置分数"
onCancel=
{
onCancel
}
onOk=
{
onOk
}
visible=
{
props
.
visible
}
maskClosable=
{
false
}
width=
{
660
}
>
<
div
className=
"content"
>
<
div
className=
"item"
>
<
span
className=
"type"
>
【单选题】
</
span
>
<
span
className=
"score"
>
每题
<
InputNumber
min=
{
1
}
max=
{
100
}
value=
{
rules
[
4
].
score
}
defaultValue=
{
rules
[
4
].
score
}
style=
{
inputNumberStyle
}
onChange=
{
(
v
)
=>
{
v
=
Math
.
round
(
v
)
let
_rules
=
[...
rules
]
rules
[
4
].
score
=
v
setRules
(
_rules
)
}
}
/>
分
</
span
>
<
span
className=
"total"
>
共
<
span
style=
{
{
color
:
"#2966FF"
}
}
>
{
singleCount
[
0
]
}
</
span
>
题,合计
<
span
style=
{
{
color
:
"#2966FF"
}
}
>
{
singleCount
[
1
]
}
</
span
>
分
</
span
>
</
div
>
<
div
className=
"item"
>
<
span
className=
"type"
>
【多选题】
</
span
>
<
span
className=
"score"
>
每题
<
InputNumber
min=
{
1
}
max=
{
100
}
defaultValue=
{
rules
[
3
].
score
}
value=
{
rules
[
3
].
score
}
style=
{
inputNumberStyle
}
onChange=
{
(
v
)
=>
{
v
=
Math
.
round
(
v
)
if
(
v
<=
rules
[
3
].
portionScore
)
{
return
}
let
_r
=
[...
rules
]
_r
[
3
].
score
=
v
setRules
(
_r
)
}
}
/>
分,漏选得
<
InputNumber
min=
{
0
}
max=
{
rules
[
3
].
score
<=
0
?
0
:
rules
[
3
].
score
-
1
}
defaultValue=
{
rules
[
3
].
portionScore
}
value=
{
rules
[
3
].
portionScore
}
style=
{
inputNumberStyle
}
onChange=
{
(
v
)
=>
{
v
=
Math
.
round
(
v
)
let
_r
=
[...
rules
]
_r
[
3
].
portionScore
=
v
setRules
(
_r
)
}
}
/>
分
</
span
>
<
span
className=
"total"
>
共
<
span
style=
{
{
color
:
"#2966FF"
}
}
>
{
multiCount
[
0
]
}
</
span
>
题,合计
<
span
style=
{
{
color
:
"#2966FF"
}
}
>
{
multiCount
[
1
]
}
</
span
>
分
</
span
>
</
div
>
<
div
className=
"item"
>
<
span
className=
"type"
>
【不定项选择题】
</
span
>
<
span
className=
"score"
>
每题
<
InputNumber
min=
{
1
}
max=
{
100
}
defaultValue=
{
rules
[
1
].
score
}
value=
{
rules
[
1
].
score
}
style=
{
inputNumberStyle
}
onChange=
{
(
v
)
=>
{
v
=
Math
.
round
(
v
)
if
(
v
<=
rules
[
1
].
portionScore
)
{
return
}
let
_r
=
[...
rules
]
_r
[
1
].
score
=
v
setRules
(
_r
)
}
}
/>
分,漏选得
<
InputNumber
min=
{
0
}
max=
{
rules
[
1
].
score
<=
0
?
0
:
rules
[
1
].
score
-
1
}
defaultValue=
{
rules
[
1
].
portionScore
}
value=
{
rules
[
1
].
portionScore
}
style=
{
inputNumberStyle
}
onChange=
{
(
v
)
=>
{
v
=
Math
.
round
(
v
)
let
_r
=
[...
rules
]
_r
[
1
].
portionScore
=
v
setRules
(
_r
)
}
}
/>
分
</
span
>
<
span
className=
"total"
>
共
<
span
style=
{
{
color
:
"#2966FF"
}
}
>
{
indefiniteCount
[
0
]
}
</
span
>
题,合计
<
span
style=
{
{
color
:
"#2966FF"
}
}
>
{
indefiniteCount
[
1
]
}
</
span
>
分
</
span
>
</
div
>
<
div
className=
"item"
>
<
span
className=
"type"
>
【判断题】
</
span
>
<
span
className=
"score"
>
每题
<
InputNumber
min=
{
1
}
max=
{
100
}
defaultValue=
{
rules
[
2
].
score
}
value=
{
rules
[
2
].
score
}
style=
{
inputNumberStyle
}
onChange=
{
(
v
)
=>
{
v
=
Math
.
round
(
v
)
let
_r
=
[...
rules
]
_r
[
2
].
score
=
v
setRules
(
_r
)
}
}
/>
分
</
span
>
<
span
className=
"total"
>
共
<
span
style=
{
{
color
:
"#2966FF"
}
}
>
{
judgeCount
[
0
]
}
</
span
>
题,合计
<
span
style=
{
{
color
:
"#2966FF"
}
}
>
{
judgeCount
[
1
]
}
</
span
>
分
</
span
>
</
div
>
<
div
className=
"item"
>
<
span
className=
"type"
>
【填空题】
</
span
>
<
span
className=
"score"
>
每题
<
InputNumber
min=
{
1
}
max=
{
100
}
defaultValue=
{
rules
[
0
].
score
}
value=
{
rules
[
0
].
score
}
style=
{
inputNumberStyle
}
onChange=
{
(
v
)
=>
{
v
=
Math
.
round
(
v
)
if
(
v
<=
rules
[
0
].
portionScore
)
{
return
}
let
_r
=
[...
rules
]
_r
[
0
].
score
=
v
setRules
(
_r
)
}
}
/>
分,半对得
<
InputNumber
min=
{
0
}
max=
{
rules
[
0
].
score
<=
0
?
0
:
rules
[
0
].
score
-
1
}
defaultValue=
{
rules
[
0
].
portionScore
}
value=
{
rules
[
0
].
portionScore
}
style=
{
inputNumberStyle
}
onChange=
{
(
v
)
=>
{
v
=
Math
.
round
(
v
)
let
_r
=
[...
rules
]
_r
[
0
].
portionScore
=
v
setRules
(
_r
)
}
}
/>
分
</
span
>
<
span
className=
"total"
>
共
<
span
style=
{
{
color
:
"#2966FF"
}
}
>
{
gapCount
[
0
]
}
</
span
>
题,合计
<
span
style=
{
{
color
:
"#2966FF"
}
}
>
{
gapCount
[
1
]
}
</
span
>
分
</
span
>
</
div
>
</
div
>
</
Modal
>
)
}
\ No newline at end of file
src/store/context.ts
View file @
ce7a5a1e
...
...
@@ -16,6 +16,8 @@ export interface VersionInfo {
userNum
:
number
;
//限制人数
validEndTime
:
string
;
validStartTime
:
string
;
validEndTimeST
:
number
;
validStartTimeST
:
number
;
whetherReachUserNum
:
boolean
;
}
...
...
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