/**
 * 钟是志
 * 2020年5月13日 17:38:51
 * 一站式应用 学工角色授权
 * */

import pageSetting from './pageSetting';
import pageSearch from './pageSearch';
import pageButton from './pageButton';
import PageHeaderWrapper from '@/components/PageHeaderWrapper';
import { Row, Col } from 'antd';
import React from 'react';
import List from '@/highOrderComponent/List';
import AppTypeTree from './AppTypeTree';
import { getAppTypeList } from '@/webPublic/Services';
import { getInfo } from '@/highOrderComponent/Service';

const Index = (WrappedComponent) =>
	class extends WrappedComponent {
		constructor(props) {
			super(props);
			this.state = {
				search: {
					selectKey: '',
				},
				formValues: {
					applyType: 'role',
					sysCode: 'xg',
				},
				typeList: [],
			};
		}

		changeFormValues = (formValues) => {
			this.setState({
				formValues,
			});
		};

		changeSearch = (search) => {
			this.setState(
				{
					search,
				},
				() => {
					if (search && search.selectKey) {
						this.instanceComponent.getPage();
					}
				},
			);
		};

		componentDidMount() {
			const { formValues } = this.state;
			getAppTypeList().then((treeListData) => {
				if (!treeListData) {
					return false;
				}
				const data = treeListData
					.filter((y) => {
						return y.appNum > 0;
					})
					.map((x) => {
						return {
							key: x.id,
							name: x.name + `(${x.appNum})`,
						};
					});
				this.setState(
					{
						typeList: data,
					},
					() => {
						this.setState({
							formValues: {
								...formValues,
								groupId: this.state.typeList[0].key,
							},
						});
					},
				);
			});
			return true;
		}

		render() {
			const { search, typeList, formValues } = this.state;
			if (!typeList.length || !formValues.groupId) {
				return null;
			}
			const pageS = pageSearch({
				typeList,
				selectKey: search.selectKey,
				changeFormValues: this.changeFormValues,
			});
			const pageB = pageButton({
				selectKey: search.selectKey,
				formValues,
			});
			return (
				<PageHeaderWrapper title="">
					<Row>
						<Col xl={5} xxl={4}>
							<AppTypeTree
								changeSearch={this.changeSearch}
								selectKey={search.selectKey}
								year={search.year}
								groupId={formValues.groupId}
							/>
						</Col>
						{search.selectKey ? (
							<Col xl={19} xxl={20}>
								<WrappedComponent
									listConfig={pageSetting.listConfig}
									pageButton={pageB}
									ref={(instanceComponent) => (this.instanceComponent = instanceComponent)}
									pageSearch={pageS}
								/>
							</Col>
						) : null}
					</Row>
				</PageHeaderWrapper>
			);
		}
	};

export default Index(List); // 高阶组件
