/**
 * 事务页面。 根据事务接口。达到增删发起事务流程
 * 2019年10月23日 09:48:13
 * 钟是志
 *
 * */

import React, { useContext } from 'react';
import * as service from '../publicApiService';
import AuditPage from './AuditPage';
import * as destructionFunc from '../destruction';
import { Link } from 'dva/router';
import { CreateC } from '../../ExportComponent/ActiveMenuComponent';

class Index extends React.Component {
	static defaultProps = {
		hasBatchAudit: false, //  是否有批量审核按钮 默认关掉 如果有需要再在外面包一层 2020年5月6日 18:44:11 钟是志
		batchAuditButtonName: '批量审核', // 如果需要批量审核 则直接用 BatchAudit.js 文件
	};

	constructor(props) {
		super(props);
		let pathname = this.props.location.pathname;
		this.state = {
			columns: [],
			dataList: [],
			headerInfo: [],
			workId: this.props.workId || '',
			searchCondition: [],
			pathname,
			dataBaseId: this.props.dataBaseId || '',
			addCondition: [],
			addFields: [], // 新增时填写的字段。
			tableInfo: {}, // 表格配置属性
			allConfigSetInfo: {}, // 返回的数据
		};
		window.callbackSubmitInfoZhiYong = undefined;
	}

	getFormDetail = (workId) => {
		const { dataBaseId } = this.state;
		service.getFormDetail(workId).then((response) => {
			if (typeof response.unifiedServicePatternModel === 'undefined') {
				return false;
			}
			destructionFunc.destructionGetDetail(response).then((x) => {
				const { addFields, tableInfo, allConfigSetInfo, searchCondition } = x;
				this.setState(
					{
						addFields,
						tableInfo,
						searchCondition,
						allConfigSetInfo,
					},
					() => {
						this.giveDetailColumns();
					},
				);
			});
		});
	};

	giveDetailColumns = () => {
		const { columns, workId, dataBaseId, addFields, tableInfo } = this.state;
		const { showPrint, routerConfig } = this.props;
		const process_status = columns.find((x) => {
			return x.name === 'process_status';
		});
		if (process_status && process_status.dataIndex) {
			process_status.render = (text, record) => {
				return record.statusName || record[process_status.dataIndex];
			};
		}
		columns.push({
			dataIndex: 'operationDiy',
			title: '操作',
			fixed: 'right',
			render: (text, record) => {
				return (
					<Link
						to={{
							pathname: './Detail',
							state: {
								workId,
								dataBaseId,
								record,
								addFields,
								tableInfo,
								showPrint: showPrint || routerConfig.showPrint === '1',
							},
						}}>
            {text || '详情'}
					</Link>
				);
			},
		});
		this.setState({
			columns,
		});
	};

	getColumn = () => {
		const { workId } = this.state;
		service.getColumns(workId).then((response) => {
			if (!response || !Array.isArray(response)) {
				response = [];
			}
			// console.log('columns', response);
			for (let item of response) {
				if (item.dataIndex === 'taskName' && !item.width) {
					item.width = 200;
				}
				if (item.dataIndex === 'createTime' && !item.width) {
					item.width = 200;
				}
			}
			response = response.filter((x) => {
				return x.title !== '流程进度';
			});
			if (response && response.length) {
				this.setState(
					{
						columns: response, // 表头
					},
					() => {
						this.getFormDetail(workId);
					},
				);
			}
		});
	};

	componentDidMount() {
		const { pathname } = this.state;
		const { workId } = this.state;
		if (workId) {
			this.getColumn();
		} else {
			service.getId(pathname).then((x) => {
				this.setState(
					{
						workId: x.workId,
						dataBaseId: x.dataBaseId,
					},
					() => {
						this.getColumn();
					},
				);
			});
		}
	}

	render() {
		const {
			workId,
			dataBaseId,
			columns,
			searchCondition,
			addFields,
			allConfigSetInfo,
			tableInfo,
		} = this.state;
		const {
			hasBatchAudit,
			batchAuditButtonName,
			showPrint,
			noNeedForm,
			tab2Buttons = [],
		} = this.props;
		if (!workId) {
			return null;
		}
		return (
			<AuditPage
				hasBatchAudit={hasBatchAudit}
				workId={workId}
				dataBaseId={dataBaseId}
				columns={columns}
				addFields={addFields}
				tableInfo={tableInfo}
				allConfigSetInfo={allConfigSetInfo}
				searchCondition={searchCondition}
				batchAuditButtonName={batchAuditButtonName}
				showPrint={showPrint}
				noNeedForm={noNeedForm}
				tab2Buttons={tab2Buttons}
			/>
		);
	}
}

export default function Pr(props) {
	const { routerConfig } = useContext(CreateC);
	return <Index {...props} routerConfig={routerConfig} />;
}
