|
@@ -91,17 +91,17 @@ export default class extends Component {
|
|
|
const show = !!answer;
|
|
|
answer = answer || {};
|
|
|
userAnswer = userAnswer || {};
|
|
|
- Object.keys(userAnswer).forEach((key) => {
|
|
|
+ Object.keys(userAnswer).forEach(key => {
|
|
|
if (key === 'options') return;
|
|
|
const u = userAnswer[key];
|
|
|
const a = answer[key] && answer[key].length > 0 ? answer[key][0] : [];
|
|
|
const map = {};
|
|
|
- a.forEach((row) => {
|
|
|
+ a.forEach(row => {
|
|
|
if (!uuidMap[row.uuid]) uuidMap[row.uuid] = [];
|
|
|
uuidMap[row.uuid].push('true');
|
|
|
map[row.uuid] = row;
|
|
|
});
|
|
|
- u.forEach((row) => {
|
|
|
+ u.forEach(row => {
|
|
|
if (!uuidMap[row.uuid]) uuidMap[row.uuid] = [];
|
|
|
uuidMap[row.uuid].push('user');
|
|
|
if (show && !map[row.uuid]) uuidMap[row.uuid].push('false');
|
|
@@ -116,32 +116,44 @@ export default class extends Component {
|
|
|
render() {
|
|
|
const { flow, paper, userQuestion, singleTime } = this.props;
|
|
|
return (
|
|
|
- <div id='paper-process-sentence'>
|
|
|
+ <div id="paper-process-sentence">
|
|
|
<div className="layout">
|
|
|
<div className="layout-header">
|
|
|
<div className="left">
|
|
|
<div className="title">{paper.title}</div>
|
|
|
</div>
|
|
|
<div className="right">
|
|
|
- <div className="text"><Assets name='timecost_icon' />Time cost {formatSecond(userQuestion.userTime || singleTime)}</div>
|
|
|
+ <div className="text">
|
|
|
+ <Assets name="timecost_icon" />
|
|
|
+ Time cost {formatSecond(userQuestion.userTime || singleTime)}
|
|
|
+ </div>
|
|
|
<Icon name="star" active={userQuestion.collect} onClick={() => flow.toggleCollect()} />
|
|
|
</div>
|
|
|
</div>
|
|
|
{this.renderBody()}
|
|
|
<div className="layout-footer">
|
|
|
<div className="left">
|
|
|
- <Icon name={this.props.isFullscreenEnabled ? 'sceen-restore' : 'sceen-full'} onClick={() => flow.toggleFullscreen()} />
|
|
|
+ <Icon
|
|
|
+ name={this.props.isFullscreenEnabled ? 'sceen-restore' : 'sceen-full'}
|
|
|
+ onClick={() => flow.toggleFullscreen()}
|
|
|
+ />
|
|
|
</div>
|
|
|
<div className="center">
|
|
|
<div className="p">
|
|
|
<Progress theme="theme" progress={formatPercent(userQuestion.no, paper.questionNumber)} />
|
|
|
</div>
|
|
|
- <div className="t">{userQuestion.no}/{paper.questionNumber}</div>
|
|
|
+ <div className="t">
|
|
|
+ {userQuestion.no}/{paper.questionNumber}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div className="right">
|
|
|
- <Button size="lager" radius onClick={() => {
|
|
|
- this.next();
|
|
|
- }}>
|
|
|
+ <Button
|
|
|
+ size="lager"
|
|
|
+ radius
|
|
|
+ onClick={() => {
|
|
|
+ this.next();
|
|
|
+ }}
|
|
|
+ >
|
|
|
Next <Assets name="next_icon" />
|
|
|
</Button>
|
|
|
</div>
|
|
@@ -167,10 +179,17 @@ export default class extends Component {
|
|
|
const { focusKey, answer = {}, stem } = this.state;
|
|
|
return (
|
|
|
<div className="layout-body">
|
|
|
- <div className="title"><Icon name="question" />请分别找出句子中的主语,谓语和宾语,并做出逻辑关系判断。</div>
|
|
|
- <div className="desc" dangerouslySetInnerHTML={{ __html: stem }} onClick={(e) => {
|
|
|
- this.addTarget(e.target);
|
|
|
- }} />
|
|
|
+ <div className="title">
|
|
|
+ <Icon name="question" />
|
|
|
+ 请分别找出句子中的主语,谓语和宾语,并做出逻辑关系判断。
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ className="desc"
|
|
|
+ dangerouslySetInnerHTML={{ __html: stem }}
|
|
|
+ onClick={e => {
|
|
|
+ this.addTarget(e.target);
|
|
|
+ }}
|
|
|
+ />
|
|
|
<div className="label">主语</div>
|
|
|
<div className="input">
|
|
|
<HardInput
|
|
@@ -179,7 +198,7 @@ export default class extends Component {
|
|
|
onClick={() => {
|
|
|
this.setState({ focusKey: 'subject' });
|
|
|
}}
|
|
|
- onDelete={(item) => {
|
|
|
+ onDelete={item => {
|
|
|
this.removeTarget('subject', item);
|
|
|
}}
|
|
|
/>
|
|
@@ -192,7 +211,7 @@ export default class extends Component {
|
|
|
onClick={() => {
|
|
|
this.setState({ focusKey: 'predicate' });
|
|
|
}}
|
|
|
- onDelete={(item) => {
|
|
|
+ onDelete={item => {
|
|
|
this.removeTarget('predicate', item);
|
|
|
}}
|
|
|
/>
|
|
@@ -205,17 +224,21 @@ export default class extends Component {
|
|
|
onClick={() => {
|
|
|
this.setState({ focusKey: 'object' });
|
|
|
}}
|
|
|
- onDelete={(item) => {
|
|
|
+ onDelete={item => {
|
|
|
this.removeTarget('object', item);
|
|
|
}}
|
|
|
/>
|
|
|
</div>
|
|
|
<div className="select">
|
|
|
<div className="select-title">本句存在以下哪种逻辑关系?(可多选)</div>
|
|
|
- <AnswerCheckbox list={SentenceOption} selected={answer.options} onChange={(values) => {
|
|
|
- answer.options = values;
|
|
|
- this.setState({ answer });
|
|
|
- }} />
|
|
|
+ <AnswerCheckbox
|
|
|
+ list={SentenceOption}
|
|
|
+ selected={answer.options}
|
|
|
+ onChange={values => {
|
|
|
+ answer.options = values;
|
|
|
+ this.setState({ answer });
|
|
|
+ }}
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
);
|
|
@@ -225,49 +248,43 @@ export default class extends Component {
|
|
|
const { analysisTab, question, userQuestion, stem } = this.state;
|
|
|
const { userAnswer = {} } = userQuestion;
|
|
|
const { answer } = question;
|
|
|
- return <div className="layout-body">
|
|
|
- <div className="title"><Icon name="question" />请分别找出句子中的主语,谓语和宾语,并做出逻辑关系判断。</div>
|
|
|
- <div className="desc" dangerouslySetInnerHTML={{ __html: stem }} />
|
|
|
- <div className="label">主语</div>
|
|
|
- <div className="input">
|
|
|
- <HardInput
|
|
|
- show
|
|
|
- list={userAnswer.subject || []}
|
|
|
- answer={answer.subject}
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div className="label">谓语</div>
|
|
|
- <div className="input">
|
|
|
- <HardInput
|
|
|
- show
|
|
|
- list={userAnswer.predicate || []}
|
|
|
- answer={answer.predicate}
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div className="label">宾语</div>
|
|
|
- <div className="input">
|
|
|
- <HardInput
|
|
|
- show
|
|
|
- list={userAnswer.object || []}
|
|
|
- answer={answer.object}
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div className="select">
|
|
|
- <div className="select-title">本句存在以下哪种逻辑关系?(可多选)</div>
|
|
|
- <AnswerCheckbox show list={SentenceOption} selected={userAnswer.options} answer={answer.options} />
|
|
|
- </div>
|
|
|
- <div className="analysis">
|
|
|
- <Tabs
|
|
|
- type="division"
|
|
|
- active={analysisTab}
|
|
|
- tabs={[{ key: 'qx', name: '解析详情' }, { key: 'chinese', name: '中文语意' }]}
|
|
|
- onChange={(key) => {
|
|
|
- this.setState({ analysisTab: key });
|
|
|
- }}
|
|
|
- />
|
|
|
- {this.renderText()}
|
|
|
+ return (
|
|
|
+ <div className="layout-body">
|
|
|
+ <div className="title">
|
|
|
+ <Icon name="question" />
|
|
|
+ 请分别找出句子中的主语,谓语和宾语,并做出逻辑关系判断。
|
|
|
+ </div>
|
|
|
+ <div className="desc" dangerouslySetInnerHTML={{ __html: stem }} />
|
|
|
+ <div className="label">主语</div>
|
|
|
+ <div className="input">
|
|
|
+ <HardInput show list={userAnswer.subject || []} answer={answer.subject} />
|
|
|
+ </div>
|
|
|
+ <div className="label">谓语</div>
|
|
|
+ <div className="input">
|
|
|
+ <HardInput show list={userAnswer.predicate || []} answer={answer.predicate} />
|
|
|
+ </div>
|
|
|
+ <div className="label">宾语</div>
|
|
|
+ <div className="input">
|
|
|
+ <HardInput show list={userAnswer.object || []} answer={answer.object} />
|
|
|
+ </div>
|
|
|
+ <div className="select">
|
|
|
+ <div className="select-title">本句存在以下哪种逻辑关系?(可多选)</div>
|
|
|
+ <AnswerCheckbox show list={SentenceOption} selected={userAnswer.options} answer={answer.options} />
|
|
|
+ </div>
|
|
|
+ <div className="analysis">
|
|
|
+ <Tabs
|
|
|
+ type="division"
|
|
|
+ active={analysisTab}
|
|
|
+ space={3}
|
|
|
+ tabs={[{ key: 'qx', name: '解析详情' }, { key: 'chinese', name: '中文语意' }]}
|
|
|
+ onChange={key => {
|
|
|
+ this.setState({ analysisTab: key });
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ {this.renderText()}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>;
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
renderText() {
|
|
@@ -275,7 +292,9 @@ export default class extends Component {
|
|
|
let content;
|
|
|
switch (analysisTab) {
|
|
|
case 'chinese':
|
|
|
- content = <div className="detail-block text-block" dangerouslySetInnerHTML={{ __html: questionNo.chineseContent }} />;
|
|
|
+ content = (
|
|
|
+ <div className="detail-block text-block" dangerouslySetInnerHTML={{ __html: questionNo.chineseContent }} />
|
|
|
+ );
|
|
|
break;
|
|
|
case 'qx':
|
|
|
content = <div className="detail-block text-block" dangerouslySetInnerHTML={{ __html: question.qxContent }} />;
|