import React from 'react';
import './index.less';
import { Icon } from 'antd';
import Page from '@src/containers/Page';
import Assets from '@src/components/Assets';
import { asyncSMessage } from '@src/services/AsyncTools';
import { formatDate, getMap } from '@src/services/Tools';
import UserLayout from '../../../layouts/User';
import UserAction from '../../../components/UserAction';
import menu from '../index';
import Tabs from '../../../components/Tabs';
import More from '../../../components/More';
import Button from '../../../components/Button';
import Switch from '../../../components/Switch';
import TotalSort from '../../../components/TotalSort';
import Modal from '../../../components/Modal';
import UserTable from '../../../components/UserTable';
import UserPagination from '../../../components/UserPagination';
import { My } from '../../../stores/my';
import { User } from '../../../stores/user';
import { Order } from '../../../stores/order';
import { Textbook } from '../../../stores/textbook';
import { DataType, ServiceKey, RecordSource } from '../../../../Constant';
import { Main } from '../../../stores/main';
import { Question } from '../../../stores/question';
import Select from '../../../components/Select';
const ServiceKeyMap = getMap(ServiceKey, 'value', 'label');
const RecordSourceMap = getMap(RecordSource, 'value', 'label');
const dataHistoryColumns = [
{ title: '更新时间', key: 'time', width: 120 },
{ title: '位置', key: 'position', width: 120 },
{ title: '原内容', key: 'originContent', width: 120 },
{ title: '更改为', key: 'content', width: 120 },
{ title: '更新至', key: 'version', width: 90 },
];
const textbookHistoryColumns = [
{ title: '更新时间', key: 'createTime', width: 120 },
{ title: '版本', key: 'version', width: 120 },
{ title: '更新内容', key: 'content', width: 330 },
];
const openColumns = [
{ title: '商品名称', key: 'title', width: 240 },
{ title: '获取方式', key: 'source', width: 240 },
{ title: '开通期限', key: 'endTime', width: 240 },
{ title: '操作', key: 'handler', width: 90 },
];
export default class extends Page {
initState() {
return {
tab: 'data',
sortMap: {},
filterMap: {},
};
}
initData() {
const data = Object.assign(this.state, this.state.search);
if (data.order) {
data.sortMap = { [data.order]: data.direction };
}
data.filterMap = this.state.search;
this.setState(data);
const { tab } = this.state;
switch (tab) {
case 'textbook':
this.refreshTextbook();
break;
case 'examination':
this.refreshExamination();
break;
case 'vip':
this.refreshVip();
break;
case 'cal':
break;
case 'data':
default:
this.refreshData();
break;
}
}
refreshTextbook() {
Main.getService('textbook').then(result => {
this.setState({ service: result });
});
Textbook.getInfo().then(result => {
const { latest } = result;
result.day = parseInt((new Date().getTime() - new Date(result.latest.startDate).getTime()) / 86400000, 10);
result.expireDay =
result.expireTime && parseInt((new Date().getTime() - new Date(result.expireTime).getTime()) / 86400000, 10);
const list = [];
list.push({ subject: 'quant', number: latest.quantNumber, time: latest.quantTime, version: latest.quantVersion });
list.push({ subject: 'rc', number: latest.rcNumber, time: latest.rcTime, version: latest.rcVersion });
list.push({ subject: 'ir', number: latest.irNumber, time: latest.irTime, version: latest.irVersion });
this.setState({ data: result, list });
});
}
textbookHistory({ page, size, subject }) {
Textbook.listHistory({ subject }).then(result => {
this.setState({
updateList: result.map(row => {
row.version = row[`${subject}Version`];
row.content = row[`${subject}Content`];
row.createTime = formatDate(row.createTime, 'YYYY-MM-DD\nHH:mm:ss');
return row;
}),
// 不显示分页
updateTotal: 0,
maxHeight: 730,
updatePage: page,
updateData: { page, size, subject, columns: textbookHistoryColumns, type: 'textbook' },
});
});
}
refreshExamination() {
Main.getService('qx_cat').then(result => {
this.setState({ service: result });
});
Question.getExaminationInfo(result => {
result.expireDay =
result.expireTime && parseInt((new Date().getTime() - new Date(result.expireTime).getTime()) / 86400000, 10);
this.setState({ data: result });
});
}
refreshVip() {
Main.getService('vip').then(result => {
this.setState({ service: result });
});
}
recordList({ page, size, service, isUse, isExpire }) {
Order.listRecord({ page, size, productType: 'service', service, isUse, isExpire }).then(result => {
this.setState({
updateList: result.map(row => {
row.title = ServiceKeyMap[service];
row.source = RecordSourceMap[row.source];
row.handler = (
{
this.open(row.id);
}}
>
立即开通
);
row.endTime = `${formatDate(row.endTime, 'YYYY-MM-DD')} 前`;
return row;
}),
updateTotal: result.length,
updatePage: page,
updateData: { page, size, service, isUse, columns: isUse ? [] : openColumns, type: 'record' },
});
});
}
refreshData() {
const dataTypeSelect = DataType.map(row => {
row.title = row.label;
row.key = row.value;
return row;
});
dataTypeSelect.unshift({
title: '全部',
key: '',
});
this.setState({ dataTypeSelect });
Main.dataStruct().then(result => {
const structs = result
.filter(row => row.level === 1)
.map(row => {
row.title = `${row.titleZh}${row.titleEn}`;
row.key = `${row.id}`;
return row;
});
structs.unshift({
title: '全部',
key: '',
});
this.setState({
structs,
});
});
My.listData(Object.assign({}, this.state.search)).then(result => {
result = {
list: [
{
title: '123123',
latestTime: '',
id: 1,
number: 10,
version: '1231',
},
],
};
this.setState({
list: result.list.map(row => {
row.time = formatDate(row.time, 'YYYY-MM-DD HH:mm:ss');
return row;
}),
total: result.total,
page: this.state.search.page,
});
});
}
dataHistory({ dataId, page, size }) {
My.listDataHistory({ page, size: 10000, dataId }).then(result => {
result.list = result.list.map(row => {
row.time = formatDate(row.time, 'YYYY-MM-DD\nHH:mm:ss');
return row;
});
this.setState({
// 不显示分页
updateTotal: 0,
maxHeight: 730,
updateList: result.list,
updatePage: page,
updateData: { page, size, dataId, columns: dataHistoryColumns, type: 'data' },
});
});
}
onFilter(value) {
this.search(value);
}
onSort(value) {
const { sortMap } = this.state;
const keys = Object.keys(value);
const index = keys.length > 1 && sortMap[keys[0]] ? 1 : 0;
this.search({ order: keys.length ? keys[index] : null, direction: keys.length ? value[keys[index]] : null });
}
onTabChange(tab) {
const data = { tab };
this.refreshQuery(data);
}
submitComment() {
const { comment } = this.state;
My.addComment(comment.channel, comment.position, comment.content).then(() => {
this.setState({ showComment: false, showFinish: true, comment: {} });
});
}
submitFeedbackError() {
const { feedbackError } = this.state;
My.addFeedbackErrorData(
feedbackError.dataId,
feedbackError.title,
feedbackError.position,
feedbackError.originContent,
feedbackError.content,
).then(() => {
this.setState({ showFinish: true, showFeedbackError: false, feedbackError: {} });
});
}
submitFeedback() {
const { feedback } = this.state;
My.addTextbookFeedback('', feedback.target, feedback.content).then(() => {
this.setState({ showFinish: true, showFeedback: false, feedbackError: {} });
});
}
subscribe(value) {
My.subscribeData(value)
.then(() => {
const { info } = this.props.user;
info.dataEmailSubscribe = value;
User.infoHandle(info);
})
.catch(err => {
asyncSMessage(err.message, 'warn');
});
}
open(recordId) {
Order.useRecord(recordId).then(() => {
asyncSMessage('开通成功');
this.refresh();
});
}
renderView() {
const { config } = this.props;
return