|
@@ -772,11 +772,32 @@ export class FeedbackErrorDataModal extends Component {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ changeData(field, value) {
|
|
|
+ let { data, empty } = this.state;
|
|
|
+ data = data || {};
|
|
|
+ empty = empty || {};
|
|
|
+ data[field] = value;
|
|
|
+ if (value) empty[field] = !value;
|
|
|
+ this.setState({ data, empty });
|
|
|
+ }
|
|
|
+
|
|
|
+ changeDataIndex(field, index, value) {
|
|
|
+ let { data, empty } = this.state;
|
|
|
+ data = data || {};
|
|
|
+ empty = empty || {};
|
|
|
+ data[field][index] = value;
|
|
|
+ if (value) empty[`${field}[${index}]`] = !value;
|
|
|
+ this.setState({ data, empty });
|
|
|
+ }
|
|
|
+
|
|
|
onConfirm() {
|
|
|
const { onConfirm } = this.props;
|
|
|
const { data } = this.state;
|
|
|
- if (!data.content || !data.originContent) return;
|
|
|
- My.addFeedbackErrorData(data.dataId, data.title, data.position.join(','), data.originContent, data.content).then(
|
|
|
+ if (!data.position[0] || !data.position[1] || !data.position[2] || !data.content || !data.originContent) {
|
|
|
+ this.setState({ empty: { 'position[0]': !data.position[0], 'position[1]': !data.position[1], 'position[2]': !data.position[2], content: !data.content, originContent: !data.originContent } });
|
|
|
+ return Promise.reject();
|
|
|
+ }
|
|
|
+ return My.addFeedbackErrorData(data.dataId, data.title, data.position.join(','), data.originContent, data.content).then(
|
|
|
() => {
|
|
|
this.setState({ data: { position: ['', '', ''], content: '', originContent: '' } });
|
|
|
if (onConfirm) onConfirm();
|
|
@@ -792,7 +813,7 @@ export class FeedbackErrorDataModal extends Component {
|
|
|
|
|
|
render() {
|
|
|
const { show } = this.props;
|
|
|
- const { data } = this.state;
|
|
|
+ const { data, empty = {} } = this.state;
|
|
|
return (
|
|
|
<Modal
|
|
|
show={show}
|
|
@@ -808,9 +829,9 @@ export class FeedbackErrorDataModal extends Component {
|
|
|
value={data.position[0]}
|
|
|
className="t-c b-c-1 m-r-5"
|
|
|
style={{ width: 56 }}
|
|
|
+ empty={empty['position[0]']}
|
|
|
onChange={e => {
|
|
|
- data.position[0] = e.target.value;
|
|
|
- this.setState({ data });
|
|
|
+ this.changeDataIndex('position', 0, e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
<span className="require">页</span>
|
|
@@ -818,9 +839,9 @@ export class FeedbackErrorDataModal extends Component {
|
|
|
value={data.position[1]}
|
|
|
className="t-c b-c-1 m-r-5"
|
|
|
style={{ width: 56 }}
|
|
|
+ empty={empty['position[1]']}
|
|
|
onChange={e => {
|
|
|
- data.position[1] = e.target.value;
|
|
|
- this.setState({ data });
|
|
|
+ this.changeDataIndex('position', 1, e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
<span className="require">行</span> , 题号
|
|
@@ -828,9 +849,9 @@ export class FeedbackErrorDataModal extends Component {
|
|
|
value={data.position[2]}
|
|
|
className="t-c b-c-1"
|
|
|
style={{ width: 56 }}
|
|
|
+ empty={empty['position[2]']}
|
|
|
onChange={e => {
|
|
|
- data.position[2] = e.target.value;
|
|
|
- this.setState({ data });
|
|
|
+ this.changeDataIndex('position', 2, e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
</div>
|
|
@@ -840,9 +861,9 @@ export class FeedbackErrorDataModal extends Component {
|
|
|
className="b-c-1 w-10 p-10"
|
|
|
rows={10}
|
|
|
placeholder={'可简单描述您发现的问题'}
|
|
|
+ empty={empty.originContent}
|
|
|
onChange={e => {
|
|
|
- data.originContent = e.target.value;
|
|
|
- this.setState({ data });
|
|
|
+ this.changeData('originContent', e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
<div className="t-2 t-s-16">应该更改为:</div>
|
|
@@ -851,9 +872,9 @@ export class FeedbackErrorDataModal extends Component {
|
|
|
className="b-c-1 w-10 p-10"
|
|
|
rows={10}
|
|
|
placeholder={'提供您认为正确的内容即可'}
|
|
|
+ empty={empty.content}
|
|
|
onChange={e => {
|
|
|
- data.content = e.target.value;
|
|
|
- this.setState({ data });
|
|
|
+ this.changeData('content', e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
<div className="b-b m-t-2" />
|
|
@@ -874,11 +895,23 @@ export class AskCourseModal extends Component {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ changeData(field, value) {
|
|
|
+ let { data, empty } = this.state;
|
|
|
+ data = data || {};
|
|
|
+ empty = empty || {};
|
|
|
+ data[field] = value;
|
|
|
+ if (value) empty[field] = !value;
|
|
|
+ this.setState({ data, empty });
|
|
|
+ }
|
|
|
+
|
|
|
onConfirm() {
|
|
|
const { course, courseNo, onConfirm } = this.props;
|
|
|
const { data } = this.state;
|
|
|
- if (!data.position || !data.originContent || !data.content) return;
|
|
|
- My.addCourseAsk(course.id, courseNo.id, data.position.join(','), data.originContent, data.content).then(() => {
|
|
|
+ if (!data.content || !data.originContent) {
|
|
|
+ this.setState({ empty: { content: !data.content, originContent: !data.originContent } });
|
|
|
+ return Promise.reject();
|
|
|
+ }
|
|
|
+ return My.addCourseAsk(course.id, courseNo.id, data.position.join(','), data.originContent, data.content).then(() => {
|
|
|
this.setState({ data: { position: [], content: '', originContent: '' } });
|
|
|
if (onConfirm) onConfirm();
|
|
|
});
|
|
@@ -892,7 +925,7 @@ export class AskCourseModal extends Component {
|
|
|
|
|
|
render() {
|
|
|
const { show, selectList, courseNo, getContainer } = this.props;
|
|
|
- const { data } = this.state;
|
|
|
+ const { data, empty = {} } = this.state;
|
|
|
return (
|
|
|
<Modal
|
|
|
show={show}
|
|
@@ -911,8 +944,7 @@ export class AskCourseModal extends Component {
|
|
|
theme="white"
|
|
|
list={selectList}
|
|
|
onChange={item => {
|
|
|
- data.position = item.key;
|
|
|
- this.setState({ data });
|
|
|
+ this.changeData('position', item.key);
|
|
|
}}
|
|
|
/>
|
|
|
进行提问.
|
|
@@ -923,9 +955,9 @@ export class AskCourseModal extends Component {
|
|
|
className="b-c-1 w-10 p-10"
|
|
|
rows={4}
|
|
|
placeholder={'请简单描述,以便老师准确定位。'}
|
|
|
+ empty={empty.originContent}
|
|
|
onChange={e => {
|
|
|
- data.originContent = e.target.value;
|
|
|
- this.setState({ data });
|
|
|
+ this.changeData('originContent', e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
<div className="t-2 t-s-16">您的问题是:</div>
|
|
@@ -935,8 +967,7 @@ export class AskCourseModal extends Component {
|
|
|
rows={4}
|
|
|
placeholder={'老师会在n小时内回答你的问题。'}
|
|
|
onChange={e => {
|
|
|
- data.content = e.target.value;
|
|
|
- this.setState({ data });
|
|
|
+ this.changeData('content', e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
<div className="b-b m-t-2" />
|
|
@@ -957,11 +988,23 @@ export class CourseNoteModal extends Component {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ changeData(field, value) {
|
|
|
+ let { data, empty } = this.state;
|
|
|
+ data = data || {};
|
|
|
+ empty = empty || {};
|
|
|
+ data[field] = value;
|
|
|
+ if (value) empty[field] = !value;
|
|
|
+ this.setState({ data, empty });
|
|
|
+ }
|
|
|
+
|
|
|
onConfirm() {
|
|
|
const { course, onConfirm } = this.props;
|
|
|
const { data } = this.state;
|
|
|
- if (!data.content) return;
|
|
|
- My.updateCourseNote(course.id, data.courseNoId, data.content).then(() => {
|
|
|
+ if (!data.content || !data.originContent) {
|
|
|
+ this.setState({ empty: { content: !data.content } });
|
|
|
+ return Promise.reject();
|
|
|
+ }
|
|
|
+ return My.updateCourseNote(course.id, data.courseNoId, data.content).then(() => {
|
|
|
this.setState({ data: { content: '' } });
|
|
|
if (onConfirm) onConfirm();
|
|
|
});
|
|
@@ -975,7 +1018,7 @@ export class CourseNoteModal extends Component {
|
|
|
|
|
|
render() {
|
|
|
const { show, course = {}, courseNos = [], noteMap = {}, getContainer } = this.props;
|
|
|
- const { data } = this.state;
|
|
|
+ const { data, empty = {} } = this.state;
|
|
|
return (
|
|
|
<Modal
|
|
|
show={show}
|
|
@@ -1011,9 +1054,9 @@ export class CourseNoteModal extends Component {
|
|
|
className="b-c-1 w-10 p-10"
|
|
|
rows={10}
|
|
|
placeholder={'写下笔记,方便以后复习。'}
|
|
|
+ empty={empty.content}
|
|
|
onChange={e => {
|
|
|
- data.content = e.target.value;
|
|
|
- this.setState({ data });
|
|
|
+ this.changeData('content', e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
<div className="b-b m-t-2" />
|
|
@@ -1048,12 +1091,27 @@ export class TextbookFeedbackModal extends Component {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ changeData(field, value) {
|
|
|
+ let { data, empty } = this.state;
|
|
|
+ data = data || {};
|
|
|
+ empty = empty || {};
|
|
|
+ data[field] = value;
|
|
|
+ if (value) empty[field] = !value;
|
|
|
+ this.setState({ data, empty });
|
|
|
+ }
|
|
|
+
|
|
|
onConfirm() {
|
|
|
const { onConfirm } = this.props;
|
|
|
const { data } = this.state;
|
|
|
- if (!data.content) return;
|
|
|
- if (data.target !== 'new' && !data.no) return;
|
|
|
- My.addTextbookFeedback(data.textbookSubject, data.target, data.no, data.content)
|
|
|
+ if (data.target !== 'new' && (!data.no || !data.content)) {
|
|
|
+ this.setState({ empty: { content: !data.content, no: !data.no } });
|
|
|
+ return Promise.reject();
|
|
|
+ }
|
|
|
+ if (!data.content) {
|
|
|
+ this.setState({ empty: { content: !data.content } });
|
|
|
+ return Promise.reject();
|
|
|
+ }
|
|
|
+ return My.addTextbookFeedback(data.textbookSubject, data.target, data.no, data.content)
|
|
|
.then(() => {
|
|
|
this.setState({ data: { content: '' } });
|
|
|
if (onConfirm) onConfirm();
|
|
@@ -1071,7 +1129,7 @@ export class TextbookFeedbackModal extends Component {
|
|
|
|
|
|
render() {
|
|
|
const { show } = this.props;
|
|
|
- const { data, targetList, textbookSubject } = this.state;
|
|
|
+ const { data, targetList, textbookSubject, empty = {} } = this.state;
|
|
|
return (
|
|
|
<Modal show={show} title="反馈" width={630} onConfirm={() => this.onConfirm()} onCancel={() => this.onCancel()}>
|
|
|
<div className="t-2 t-s-16 m-b-1">
|
|
@@ -1102,9 +1160,9 @@ export class TextbookFeedbackModal extends Component {
|
|
|
value={data.no}
|
|
|
style={{ width: 80 }}
|
|
|
className="m-l-1 b-c-1 t-c"
|
|
|
+ empty={empty.no}
|
|
|
onChange={e => {
|
|
|
- data.no = e.target.value;
|
|
|
- this.setState({ data });
|
|
|
+ this.changeData('no', e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
</span>
|
|
@@ -1115,9 +1173,9 @@ export class TextbookFeedbackModal extends Component {
|
|
|
className="b-c-1 w-10 p-10"
|
|
|
rows={10}
|
|
|
placeholder={TextbookFeedbackTargetMap[data.target]}
|
|
|
+ empty={empty.content}
|
|
|
onChange={e => {
|
|
|
- data.content = e.target.value;
|
|
|
- this.setState({ data });
|
|
|
+ this.changeData('content', e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
<div className="b-b m-t-2" />
|
|
@@ -1138,11 +1196,23 @@ export class FaqModal extends Component {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ changeData(field, value) {
|
|
|
+ let { data, empty } = this.state;
|
|
|
+ data = data || {};
|
|
|
+ empty = empty || {};
|
|
|
+ data[field] = value;
|
|
|
+ if (value) empty[field] = !value;
|
|
|
+ this.setState({ data, empty });
|
|
|
+ }
|
|
|
+
|
|
|
onConfirm() {
|
|
|
const { onConfirm } = this.props;
|
|
|
const { data } = this.state;
|
|
|
- if (!data.content) return;
|
|
|
- My.addFaq(data.channel, data.position, data.content).then(() => {
|
|
|
+ if (!data.content) {
|
|
|
+ this.setState({ empty: { content: !data.content } });
|
|
|
+ return Promise.reject();
|
|
|
+ }
|
|
|
+ return My.addFaq(data.channel, data.position, data.content).then(() => {
|
|
|
this.setState({ data: { content: '' } });
|
|
|
if (onConfirm) onConfirm();
|
|
|
});
|
|
@@ -1156,7 +1226,7 @@ export class FaqModal extends Component {
|
|
|
|
|
|
render() {
|
|
|
const { show } = this.props;
|
|
|
- const { data } = this.state;
|
|
|
+ const { data, empty = {} } = this.state;
|
|
|
return (
|
|
|
<Modal show={show} title="咨询" onConfirm={() => this.onConfirm()} onCancel={() => this.onCancel()}>
|
|
|
<textarea
|
|
@@ -1164,9 +1234,9 @@ export class FaqModal extends Component {
|
|
|
value={data.content}
|
|
|
rows={6}
|
|
|
placeholder="请输入您的问题!"
|
|
|
+ empty={empty.content}
|
|
|
onChange={e => {
|
|
|
- data.content = e.target.value;
|
|
|
- this.setState({ data });
|
|
|
+ this.changeData('content', e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
<div className="b-b m-t-2" />
|
|
@@ -1187,11 +1257,23 @@ export class CommentModal extends Component {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ changeData(field, value) {
|
|
|
+ let { data, empty } = this.state;
|
|
|
+ data = data || {};
|
|
|
+ empty = empty || {};
|
|
|
+ data[field] = value;
|
|
|
+ if (value) empty[field] = !value;
|
|
|
+ this.setState({ data, empty });
|
|
|
+ }
|
|
|
+
|
|
|
onConfirm() {
|
|
|
const { onConfirm } = this.props;
|
|
|
const { data } = this.state;
|
|
|
- if (!data.content) return;
|
|
|
- My.addComment(data.channel, data.position, data.content).then(() => {
|
|
|
+ if (!data.content) {
|
|
|
+ this.setState({ empty: { content: !data.content } });
|
|
|
+ return Promise.reject();
|
|
|
+ }
|
|
|
+ return My.addComment(data.channel, data.position, data.content).then(() => {
|
|
|
this.setState({ data: { content: '' } });
|
|
|
if (onConfirm) onConfirm();
|
|
|
});
|
|
@@ -1205,7 +1287,7 @@ export class CommentModal extends Component {
|
|
|
|
|
|
render() {
|
|
|
const { show } = this.props;
|
|
|
- const { data } = this.state;
|
|
|
+ const { data, empty = {} } = this.state;
|
|
|
return (
|
|
|
<Modal show={show} title="评价" onConfirm={() => this.onConfirm()} onCancel={() => this.onCancel()}>
|
|
|
<textarea
|
|
@@ -1213,9 +1295,9 @@ export class CommentModal extends Component {
|
|
|
className="b-c-1 w-10 p-10"
|
|
|
rows={6}
|
|
|
placeholder="您的看法对我们来说很重要!"
|
|
|
+ empty={empty.content}
|
|
|
onChange={e => {
|
|
|
- data.content = e.target.value;
|
|
|
- this.setState({ data });
|
|
|
+ this.changeData('content', e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
<div className="b-b m-t-2" />
|
|
@@ -1250,11 +1332,23 @@ export class SuppleModal extends Component {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ changeData(field, value) {
|
|
|
+ let { data, empty } = this.state;
|
|
|
+ data = data || {};
|
|
|
+ empty = empty || {};
|
|
|
+ data[field] = value;
|
|
|
+ if (value) empty[field] = !value;
|
|
|
+ this.setState({ data, empty });
|
|
|
+ }
|
|
|
+
|
|
|
onConfirm() {
|
|
|
const { onConfirm } = this.props;
|
|
|
const { data } = this.state;
|
|
|
- if (!data.content) return;
|
|
|
- My.addRoomFeedback(data.roomId, data.content).then(() => {
|
|
|
+ if (!data.content) {
|
|
|
+ this.setState({ empty: { content: !data.content } });
|
|
|
+ return Promise.reject();
|
|
|
+ }
|
|
|
+ return My.addRoomFeedback(data.roomId, data.content).then(() => {
|
|
|
this.setState({ data: { content: '' } });
|
|
|
if (onConfirm) onConfirm();
|
|
|
});
|
|
@@ -1268,7 +1362,7 @@ export class SuppleModal extends Component {
|
|
|
|
|
|
render() {
|
|
|
const { show, info = {} } = this.props;
|
|
|
- const { data } = this.state;
|
|
|
+ const { data, empty = {} } = this.state;
|
|
|
return (
|
|
|
<Modal show={show} title="考场信息" onConfirm={() => this.onConfirm()} onCancel={() => this.onCancel()}>
|
|
|
<div className="t-2 t-s-16">考场位置: {info.isOverseas ? '海外' : '中国'}{info.area ? ` ${info.area}` : ''} {info.title}</div>
|
|
@@ -1276,10 +1370,10 @@ export class SuppleModal extends Component {
|
|
|
<textarea
|
|
|
value={data.content}
|
|
|
className="b-c-1 w-10 p-10"
|
|
|
+ empty={empty.content}
|
|
|
rows={6}
|
|
|
onChange={e => {
|
|
|
- data.content = e.target.value;
|
|
|
- this.setState({ data });
|
|
|
+ this.changeData('content', e.target.value);
|
|
|
}}
|
|
|
/>
|
|
|
<div className="b-b m-t-2" />
|