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
1be67de3
Commit
1be67de3
authored
Jul 04, 2021
by
maolipeng
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into feature/maolipeng/20210610/zuhuyouhua
parents
69cfc14a
0b6f18d9
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
443 additions
and
9 deletions
+443
-9
src/modules/teach-tool/paper-manage/OperatePaper.jsx
+166
-9
src/modules/teach-tool/paper-manage/components/BatchScore.less
+28
-0
src/modules/teach-tool/paper-manage/components/BatchScore.tsx
+249
-0
No files found.
src/modules/teach-tool/paper-manage/OperatePaper.jsx
View file @
1be67de3
This diff is collapsed.
Click to expand it.
src/modules/teach-tool/paper-manage/components/BatchScore.less
0 → 100644
View file @
1be67de3
.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 @
1be67de3
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
}
formatter=
{
(
value
:
number
|
undefined
)
=>
String
(
value
)
}
parser=
{
(
value
:
string
|
undefined
)
=>
parseInt
(
String
(
value
))
}
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
}
formatter=
{
(
value
:
number
|
undefined
)
=>
String
(
value
)
}
parser=
{
(
value
:
string
|
undefined
)
=>
parseInt
(
String
(
value
))
}
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
}
formatter=
{
(
value
:
number
|
undefined
)
=>
String
(
value
)
}
parser=
{
(
value
:
string
|
undefined
)
=>
parseInt
(
String
(
value
))
}
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
}
formatter=
{
(
value
:
number
|
undefined
)
=>
String
(
value
)
}
parser=
{
(
value
:
string
|
undefined
)
=>
parseInt
(
String
(
value
))
}
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
}
formatter=
{
(
value
:
number
|
undefined
)
=>
String
(
value
)
}
parser=
{
(
value
:
string
|
undefined
)
=>
parseInt
(
String
(
value
))
}
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
}
formatter=
{
(
value
:
number
|
undefined
)
=>
String
(
value
)
}
parser=
{
(
value
:
string
|
undefined
)
=>
parseInt
(
String
(
value
))
}
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
}
formatter=
{
(
value
:
number
|
undefined
)
=>
String
(
value
)
}
parser=
{
(
value
:
string
|
undefined
)
=>
parseInt
(
String
(
value
))
}
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
}
formatter=
{
(
value
:
number
|
undefined
)
=>
String
(
value
)
}
parser=
{
(
value
:
string
|
undefined
)
=>
parseInt
(
String
(
value
))
}
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
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