declare interface ProjectStateType {
	projectData?: Array<ProjectType>
	developData?: Array<ProjectType>
	searchQuery: {
		pageIndex: number,
		pageSize: number,
		searchParams: {
			experimentName: string,
			experimentType: null | number,
			assessLevel:  null | number,
		}
	},
	total: 0,
	experimentTypeList: Type []
	riskLevelList: Type []
	allRoomList: RoomType []
	tagBg: Array<string>
}

declare interface ProjectType {
	id?: number | null,
	liabilityUserId?: number | null,
	experimentCode: string,
	experimentName: string,
}


declare interface Type {
	id: number,
	name: string,
}
declare interface eType {
	typeId: number,
	typeName: string,
}

declare interface ProjectDialogType {
	title: string,
	disabled: boolean,
	projectDialogVisible: boolean,
	projectForm: {
		id: null | number,
		experimentName: string,
		experimentType: null | number | any,
		typeList: Array<eType>,
		liabilityUserId: null | number,
		safeLiabilityUser: string
		liabilityUserPhone: string,
		safeLiabilityUserPhone: string,
		sisStatus?: null | number,
		safeInformationSystem?: string,
		dep: string,
		experimentStep: string,
		experimentMethod: string,
		process: string,
		keyProcess: string,
		measure: string,
		timeout: null | number,
		timeoutManager: string,
		closed: null | number,
		unclosedManager: string,
		explosionProof: string,
		fireProof: string,
		poisonProof: string,
		safeManagerMethod: string,
		emergencyList: Array<emergencyListType>,
		partitionCondition: null | number,
		note: string,
		startTime?: string,
		createExperimentTime: string
		persons: SelectPersonType [],
		siteList: SelectRoomType [],
		deviceList: SelectEquipmentType [],
		stuffList: SelectMaterialType [],
		hazardousWasteList: SelectDangerType []
	},
	projectFormRules: {

	},
	allPersonList: Array<AllPersonListType>
	systemPersonList: Array<AllPersonListType>
	allRoomList: Array<RoomType>
	experimentTypeList: eType []
}

declare interface SelectDangerType {
	disabled: boolean
	wasteList: Array<WasteType>
	classifyList: Array<Type>
	wasteStorageList: Array<Type>
}

declare interface WasteType {
	classify: null | number,
	wasteStorage: null | number,
	handAmount: null | number,
}


declare interface SelectPersonType {
	disabled: boolean
	personList: Array<AllPersonListType>
	allPersonList: Array<AllPersonListType>
}

declare interface AllPersonListType {
	id?: null | number,
	personId?: null | number,
	personName: null,
	personAge: null,
	personGender:'',
	personMajor:'',
	depName:'',
	phone:'',
	aptitude:'',
	training:''
}

declare interface NewPersonListType {
	depId: number | null
	depName: string
	id: number
	idSerial: string
	idType: number | null
	name: string
	phone: string
	realName: string
}

declare interface SelectEquipmentType {
	disabled: boolean
	equipmentList: Array<AllEquipmentListType>,
	allEquipmentList: Array<AllEquipmentListType>,
	equipmentTypeList: Array<any>,
	specialDeviceList: Array<Type>
}

declare interface AllEquipmentListType {
	id?: null | number,
	deviceId?: null | number,
	deviceUseCount: null | number,
	deviceCode: string,
	deviceName: string,
	devicePower: string,
	specialDevice: string,
	deviceUnit?: null | number,
	safeProtect?: null | number
}


declare interface SelectMaterialType {
	disabled: boolean
	materialList: Array<AllMaterialListType>,
	allMaterialList: Array<AllMaterialListType>,
	stuffTypeList: Array<stuffType>
	stuffStorageList: Array<stuffType>
	stuffUnitList: Array<stuffType>
}

declare interface SelectEmergencyType {
	disabled: boolean
	emergencyList: Array<emergencyListType>
}

declare interface emergencyListType {
	emergencyPlanName: string,
	emergencyDrillStatus: string,
	emergencyDrill: string,
	emergencyPlan: string
}

declare interface SelectRoomType {
	disabled: boolean
	roomList: Array<roomListType>,
	allRoomList: Array<allRoomListType>,
	specialDeviceList: Array<stuffType>
	memberList: Array<any>
	typeList: Array<any>
	stuffStorageList: Array<stuffType>
	stuffUnitList: Array<stuffType>
}

declare interface roomListType {
	siteId: null | number,
	siteName: string,
	floor: string,
	room: string,
	fireFacilities: null | number,
	partitionStatus: null | number,
	siteType: string,
}

declare interface allRoomListType {
	id: null | number,
	siteName: string,
	floor: string,
	room: string,
	fireFacilities: null | number,
	partitionStatus: null | number,
	siteType: string,
}

declare interface stuffType {
	id: null | number,
	name: string
}

declare interface AllMaterialListType {
	id?: null | number,
	stuffId?: null | number,
	stuffUseCount: null | number,
	stuffName: string,
	stuffCode:string,
	stuffType: string,
	stuffStorage: string,
	stuffUnit: string
}

declare interface ApplyStartDialogType {
	title: string,
	applyStartDialogVisible: boolean,
	applyStartForm: {
		id: number | null,
		sisStatus: number | null,
		safeInformationSystem: string,
		startTime: string,
	},
	applyStartFormRules: {

	},
}
