|
@@ -17,9 +17,11 @@ import AnswerList from '../../../../components/AnswerList';
|
|
|
import AnswerButton from '../../../../components/AnswerButton';
|
|
|
import AnswerTable from '../../../../components/AnswerTable';
|
|
|
import OtherAnswer from '../../../../components/OtherAnswer';
|
|
|
+import { QuestionNoteModal } from '../../../../components/OtherModal';
|
|
|
import { AskTarget } from '../../../../../Constant';
|
|
|
import { Question } from '../../../../stores/question';
|
|
|
import { My } from '../../../../stores/my';
|
|
|
+import { User } from '../../../../stores/user';
|
|
|
import Sentence from '../../process/sentence';
|
|
|
|
|
|
export default class extends Component {
|
|
@@ -51,11 +53,25 @@ export default class extends Component {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ changeData(type, field, value) {
|
|
|
+ let { data, empty } = this.state;
|
|
|
+ data = data || {};
|
|
|
+ empty = empty || {};
|
|
|
+ data[type] = data[type] || {};
|
|
|
+ data[type][field] = value;
|
|
|
+ empty[type] = empty[type] || {};
|
|
|
+ if (value) empty[type][field] = !value;
|
|
|
+ this.setState({ data, empty });
|
|
|
+ }
|
|
|
+
|
|
|
submitAsk() {
|
|
|
const { userQuestion, questionNo = {} } = this.props;
|
|
|
const { ask = {} } = this.state;
|
|
|
- if (!ask.originContent || !ask.content || !ask.target) return;
|
|
|
- My.addQuestionAsk(userQuestion.id, ask.target, questionNo.id, ask.originContent, ask.content).then(() => {
|
|
|
+ if (!ask.originContent || !ask.content || !ask.target) {
|
|
|
+ this.setState({ empty: { ask: { originContent: !ask.originContent, content: !ask.content, target: !ask.target } } });
|
|
|
+ return Promise.reject();
|
|
|
+ }
|
|
|
+ return My.addQuestionAsk(userQuestion.id, ask.target, questionNo.id, ask.originContent, ask.content).then(() => {
|
|
|
this.setState({ askModal: false, askOkModal: true, ask: {} });
|
|
|
}).catch(err => {
|
|
|
this.setState({ askError: err.message, ask: {} });
|
|
@@ -65,8 +81,11 @@ export default class extends Component {
|
|
|
submitFeedbackError() {
|
|
|
const { questionNo = {} } = this.props;
|
|
|
const { feedback = {} } = this.state;
|
|
|
- if (!feedback.originContent || !feedback.content || !feedback.target) return;
|
|
|
- My.addFeedbackErrorQuestion(
|
|
|
+ if (!feedback.originContent || !feedback.content || !feedback.target) {
|
|
|
+ this.setState({ empty: { feedback: { originContent: !feedback.originContent, content: !feedback.content, target: !feedback.target } } });
|
|
|
+ return Promise.reject();
|
|
|
+ }
|
|
|
+ return My.addFeedbackErrorQuestion(
|
|
|
questionNo.id,
|
|
|
questionNo.title,
|
|
|
feedback.target,
|
|
@@ -314,7 +333,7 @@ export default class extends Component {
|
|
|
}
|
|
|
|
|
|
renderBase() {
|
|
|
- const { questionStatus, userQuestion = {}, paper = {}, detail } = this.props;
|
|
|
+ const { questionStatus, userQuestion = {}, questionNo = {}, paper = {}, detail } = this.props;
|
|
|
const { showIds } = this.state;
|
|
|
return (
|
|
|
<div
|
|
@@ -337,7 +356,7 @@ export default class extends Component {
|
|
|
</Tooltip>
|
|
|
</div>
|
|
|
<div className="center">
|
|
|
- <AnswerButton className="item" onClick={() => this.setState({ noteModal: true })}>
|
|
|
+ <AnswerButton className="item" onClick={() => User.needLogin().then(() => this.setState({ noteModal: true }))}>
|
|
|
笔记
|
|
|
</AnswerButton>
|
|
|
{questionStatus >= 0 && (
|
|
@@ -345,7 +364,9 @@ export default class extends Component {
|
|
|
className="item"
|
|
|
onClick={() => {
|
|
|
if (questionStatus > 0) {
|
|
|
- this.setState({ askModal: true, ask: { target: AskTarget[0].value } });
|
|
|
+ User.needLogin().then(() => {
|
|
|
+ this.setState({ askModal: true, ask: { target: AskTarget[0].value } });
|
|
|
+ });
|
|
|
} else {
|
|
|
this.setState({ askFailModal: true });
|
|
|
}
|
|
@@ -354,7 +375,7 @@ export default class extends Component {
|
|
|
提问
|
|
|
</AnswerButton>
|
|
|
)}
|
|
|
- <AnswerButton className="item" onClick={() => this.setState({ feedbackModal: true, feedback: { position: AskTarget[0].value } })}>
|
|
|
+ <AnswerButton className="item" onClick={() => User.needLogin().then(() => this.setState({ feedbackModal: true, feedback: { position: AskTarget[0].value } }))}>
|
|
|
纠错
|
|
|
</AnswerButton>
|
|
|
</div>
|
|
@@ -372,7 +393,8 @@ export default class extends Component {
|
|
|
{this.state.askFailModal && this.renderAskFail()}
|
|
|
{this.state.feedbackModal && this.renderFeedbackError()}
|
|
|
{this.state.feedbackOkModal && this.renderFeedbackErrorOk()}
|
|
|
- {this.state.noteModal && this.renderNote()}
|
|
|
+ {/* {this.state.noteModal && this.renderNote()} */}
|
|
|
+ <QuestionNoteModal show={this.state.noteModal} defaultData={this.state.note} questionNo={questionNo} onConfirm={() => this.setState({ noteModal: false })} onCancel={() => this.setState({ noteModal: false })} />
|
|
|
</div>
|
|
|
);
|
|
|
}
|
|
@@ -623,7 +645,8 @@ export default class extends Component {
|
|
|
}
|
|
|
|
|
|
renderAsk() {
|
|
|
- const { ask = {} } = this.state;
|
|
|
+ const { ask = {}, empty = {} } = this.state;
|
|
|
+ const emptyAsk = empty.ask || {};
|
|
|
return (
|
|
|
<div className="modal ask">
|
|
|
<div className="mask" />
|
|
@@ -639,8 +662,7 @@ export default class extends Component {
|
|
|
value={ask.target}
|
|
|
list={AskTarget}
|
|
|
onChange={item => {
|
|
|
- ask.target = item.value;
|
|
|
- this.setState({ ask });
|
|
|
+ this.changeData('ask', 'target', item.value);
|
|
|
}}
|
|
|
/>
|
|
|
进行提问
|
|
@@ -650,9 +672,9 @@ export default class extends Component {
|
|
|
className="textarea"
|
|
|
value={ask.originContent}
|
|
|
placeholder="请复制粘贴有疑问的内容。"
|
|
|
+ empty={emptyAsk.originContent}
|
|
|
onChange={e => {
|
|
|
- ask.originContent = e.target.value;
|
|
|
- this.setState({ ask });
|
|
|
+ this.changeData('ask', 'originContent', e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
<div className="label">针对以上内容的问题是:</div>
|
|
@@ -660,9 +682,9 @@ export default class extends Component {
|
|
|
className="textarea"
|
|
|
value={ask.content}
|
|
|
placeholder="提问频率高的问题会被优先回答哦。"
|
|
|
+ empty={emptyAsk.content}
|
|
|
onChange={e => {
|
|
|
- ask.content = e.target.value;
|
|
|
- this.setState({ ask });
|
|
|
+ this.changeData('ask', 'content', e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
</div>
|
|
@@ -751,7 +773,8 @@ export default class extends Component {
|
|
|
}
|
|
|
|
|
|
renderFeedbackError() {
|
|
|
- const { feedback = {} } = this.state;
|
|
|
+ const { feedback = {}, empty } = this.state;
|
|
|
+ const emptyFeedback = empty.feedback || {};
|
|
|
return (
|
|
|
<div className="modal error">
|
|
|
<div className="mask" />
|
|
@@ -767,8 +790,7 @@ export default class extends Component {
|
|
|
value={feedback.target}
|
|
|
list={AskTarget}
|
|
|
onChange={item => {
|
|
|
- feedback.target = item.value;
|
|
|
- this.setState({ feedback });
|
|
|
+ this.changeData('feedback', 'target', item.value);
|
|
|
}}
|
|
|
/>
|
|
|
进行提问
|
|
@@ -778,9 +800,9 @@ export default class extends Component {
|
|
|
className="textarea"
|
|
|
value={feedback.originContent}
|
|
|
placeholder="你可以适当扩大复制范围以使我们准确定位,感谢。"
|
|
|
+ empty={emptyFeedback.originContent}
|
|
|
onChange={(e) => {
|
|
|
- feedback.originContent = e.target.value;
|
|
|
- this.setState({ feedback });
|
|
|
+ this.changeData('feedback', 'originContent', e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
<div className="label">应该改为:</div>
|
|
@@ -788,9 +810,9 @@ export default class extends Component {
|
|
|
className="textarea"
|
|
|
value={feedback.content}
|
|
|
placeholder="只需提供正确内容即可"
|
|
|
+ empty={emptyFeedback.content}
|
|
|
onChange={(e) => {
|
|
|
- feedback.content = e.target.value;
|
|
|
- this.setState({ feedback });
|
|
|
+ this.changeData('feedback', 'content', e.target.value);
|
|
|
}} />
|
|
|
</div>
|
|
|
<div className="bottom">
|