import React from 'react';
import { Link } from 'react-router-dom';
import './index.less';
import Page from '@src/containers/Page';
import { timeRange, getMap, formatDate } from '@src/services/Tools';
import UserLayout from '../../../layouts/User';
import Button from '../../../components/Button';
import UserTable from '../../../components/UserTable';
import UserAction from '../../../components/UserAction';
import UserPagination from '../../../components/UserPagination';
import Switch from '../../../components/Switch';
import menu, { refreshQuestionType, refreshStruct } from '../index';
import Tabs from '../../../components/Tabs';
import { TimeRange, AskTarget, QuestionType } from '../../../../Constant';
import { My } from '../../../stores/my';
import { OpenText } from '../../../components/Open';
const AskTargetMap = getMap(AskTarget, 'value', 'label');
const QuestionTypeMap = getMap(QuestionType, 'value', 'label');
const columns = [
{
key: 'questionType',
width: 140,
render(text, row) {
return (
{QuestionTypeMap[text]}
);
},
},
{
key: 'title',
width: 100,
render(text, row) {
return (
{text}
);
},
},
{
key: 'content',
width: 540,
render(text, row) {
return (
{text}
);
},
},
];
export default class extends Page {
constructor(props) {
props.size = 10;
super(props);
}
initState() {
return {
filterMap: {},
sortMap: {},
list: [],
selectList: [],
tab: 'exercise',
timerange: 'today',
};
}
initData() {
const data = Object.assign(this.state, this.state.search);
data.filterMap = this.state.search;
if (data.order) {
data.sortMap = { [data.order]: data.direction };
}
if (data.timerange) {
data.filterMap.timerange = data.timerange;
}
const [startTime, endTime] = timeRange(data.timerange);
refreshQuestionType(this, data.subject, data.questionType, {
all: true,
needSentence: false,
allSubject: true,
}).then(({ questionTypes }) => {
return refreshStruct(this, questionTypes, data.tab, data.one, data.two, {
all: true,
needPreview: false,
needTextbook: true,
}).then(({ structIds, latest, year }) => {
My.listQuestionAsk(
Object.assign(
{ module: data.tab, questionTypes, structIds, latest, year, startTime, endTime },
this.state.search,
{
order: Object.keys(data.sortMap)
.map(key => {
return `${key} ${data.sortMap[key]}`;
})
.join(','),
},
),
).then(result => {
result.list = result.list.map(row => {
row.group = true;
row.questionType = row.question.questionType;
row.title = row.questionNo.title;
row.content = row.question.description;
return row;
});
this.setState({ list: result.list, total: result.total, page: data.page });
});
});
});
}
onTabChange(tab) {
const data = { tab };
this.refreshQuery(data);
}
onFilter(value) {
this.search(value, false);
this.initData();
}
onSearch(value) {
this.search({ page: 1, keyword: value }, false);
this.initData();
}
onSort(value) {
const keys = Object.keys(value);
// this.search({ order: keys.length ? keys.join('|') : null, direction: keys.length ? Object.values(value).join('|') : null });
const { sortMap } = this.state;
const index = keys.length > 1 && sortMap[keys[0]] ? 1 : 0;
this.search({ order: keys.length && value[keys[index]] ? keys[index] : null, direction: keys.length ? value[keys[index]] : null }, false);
this.initData();
}
onChangePage(page) {
this.search({ page }, false);
this.initData();
}
onAction() { }
onSelect(selectList) {
this.setState({ selectList });
}
delAsk(id) {
My.delQuestionAsk(id).then(() => {
this.refresh();
});
}
renderView() {
const { config } = this.props;
return ;
}
renderTable() {
const {
tab,
questionSubjectSelect,
questionSubjectMap = {},
oneSelect,
twoSelectMap = {},
filterMap = {},
sortMap = {},
list = [],
} = this.state;
const { total, page } = this.state;
return (
this.onTabChange(key)}
/>
this.onFilter(value)}
onSearch={value => this.onSearch(value)}
/>
只看已回答{' '}
{
filterMap.answerStatus = Number(filterMap.answerStatus) ? null : 1;
this.onFilter(filterMap);
}}
/>
}
onSort={value => this.onSort(value)}
/>
{list.map(item => {
return (
提问区域:
{AskTargetMap[item.target]}
{item.answerStatus === 0 && (
)}
提问
{formatDate(item.createTime, 'YYYY-MM-DD HH:mm:ss')}
{item.answerStatus > 0 && (
回答
{formatDate(item.answerTime, 'YYYY-MM-DD HH:mm:ss')}
)}
{item.answerStatus > 0 && (
)}
);
})}
{total > 0 && list.length > 0 && (
this.onChangePage(p)}
/>
)}
);
}
}