<template>
	<div class="div_main">
		<div>
			<div class="div_search">
				<el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'80px'">
					<div>
						<el-form-item label="所属组织" prop="gridId">
							<el-cascader
								class="customer_cascader"
								ref="myCascader"
								filterable
								v-model="formData.orgId"
								:options="orgOptions"
								:props="orgOptionProps"
								:show-all-levels="false"
								@change="handleChangeAgency"
							></el-cascader>
						</el-form-item>
						<el-form-item label="上报时间" prop="startTime">
							<el-date-picker
								v-model="formData.startDate"
								:picker-options="startPickerOptions"
								class="item_width_2"
								size="small"
								type="date"
								value-format="yyyy-MM-dd HH:mm:ss"
								value="yyyy-MM-dd"
								placeholder="开始时间"
							></el-date-picker>
							<span class="data-tag">至</span>
							<el-date-picker
								v-model="formData.endDate"
								:picker-options="endPickerOptions"
								class="item_width_2 data-tag"
								size="small"
								type="date"
								value-format="yyyy-MM-dd HH:mm:ss"
								value="yyyy-MM-dd"
								placeholder="结束时间"
							></el-date-picker>
						</el-form-item>
						<el-button class="btnSearch" size="small" @click="handleSearch">查询</el-button>
					</div>
				</el-form>
			</div>
			<div class="div_table">
				<el-row :gutter="20">
					<el-col :span="12">
						<div class="div_table_title">房屋用途统计</div>
						<div :style="'height:' + TableHeight + 'px;margin-top:20px'">
							<screen-echarts-frame
								@handelClickMyPei="handelClickMyPei"
								:style="{ width: '100%', height: '100%' }"
								@myChartMethod="pieInitOk"
								ref="pieChart"
							></screen-echarts-frame>
						</div>
					</el-col>
					<el-col :span="12">
						<div class="div_table_title">房屋状态统计</div>
						<div :style="'height:' + TableHeight + 'px;margin-top:20px'">
							<screen-echarts-frame2
								@handelClickMyPei2="handelClickMyPei"
								:style="{ width: '100%', height: '100%' }"
								@myChartMethod2="pieInitOk"
								ref="pieChart2"
							></screen-echarts-frame2>
						</div>
					</el-col>
					<el-col :span="24">
						<el-table
							:data="tableData"
							border
							v-loading="tableLoading"
							:header-cell-style="{ background: '#2195FE', color: '#FFFFFF' }"
							class="table"
							style="width: 100%"
							:height="maxTableHeight"
						>
							<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
							<el-table-column prop="streetName" label="镇街" align="center" :show-overflow-tooltip="true" />
							<el-table-column prop="districtName" label="区县" align="center" :show-overflow-tooltip="true"></el-table-column>
							<el-table-column prop="agencyName" align="center" label="社区" :show-overflow-tooltip="true"></el-table-column>
							<el-table-column prop="agencyName" align="center" label="网格" :show-overflow-tooltip="true"></el-table-column>
							<el-table-column prop="agencyName" align="center" label="房屋名称" :show-overflow-tooltip="true"></el-table-column>
							<el-table-column prop="agencyName" align="center" label="房屋用途" :show-overflow-tooltip="true"></el-table-column>
							<el-table-column prop="agencyName" align="center" label="房屋状态" :show-overflow-tooltip="true"></el-table-column>
							<el-table-column prop="count" align="center" width="110" label="操作" :show-overflow-tooltip="true"></el-table-column>
						</el-table>

						<el-pagination
							@size-change="handleSizeChange"
							@current-change="handleCurrentChange"
							:current-page.sync="pageNo"
							:page-sizes="[10, 20, 50, 100, 200]"
							:page-size="parseInt(pageSize)"
							layout="sizes, prev, pager, next, total"
							:total="total"
						></el-pagination>
					</el-col>
				</el-row>
			</div>
		</div>
	</div>
</template>

<script>
import screenEchartsFrame from './chart';
import screenEchartsFrame2 from './chart';
import { requestPost } from '@/js/dai/request';
import nextTick from 'dai-js/tools/nextTick';
import { mapGetters } from 'vuex';

import axios from 'axios';

export default {
	components: { screenEchartsFrame, screenEchartsFrame2 },
	data() {
		let endDisabledDate = time => {
			//这个关键属性我们一定要写在data的里面并且return的外面，这是动态改变区间的关键
			let nowData = Date.now();
			if (this.formData.startTime) {
				let startTime = new Date(this.formData.startTime);
				return time.getTime() > nowData || time.getTime() < startTime || time.getTime() === startTime;
			} else {
				return time.getTime() > nowData;
			}
		};
		let startDisabledDate = time => {
			//这个关键属性我们一定要写在data的里面并且return的外面，这是动态改变区间的关键
			let nowData = Date.now();
			return time.getTime() > nowData;
		};
		return {
			tableLoading: false,
			user: {},
			gridList: [], //所属网格list--场所区域
			tableData: [],
			formData: {},
			pageNo: 1,
			pageSize: window.localStorage.getItem('pageSize') || 20,
			total: 1,
			endPickerOptions: {
				//时间
				disabledDate: endDisabledDate
			},
			startPickerOptions: {
				//时间
				disabledDate: startDisabledDate
			},
			agencyId: '', //组织
			agencyIdArray: [], //组织
			orgOptions: [], //组织
			orgOptionProps: {
				//组织
				multiple: false,
				value: 'agencyId',
				label: 'agencyName',
				children: 'subAgencyList',
				checkStrictly: true
			},
			TableHeight: ''
		};
	},
	computed: {
		maxTableHeight() {
			this.TableHeight = this.$store.state.inIframe ? this.clientHeight - 460 + this.iframeHeigh : this.clientHeight - 460;
			return this.TableHeight;
		},
		...mapGetters(['clientHeight', 'iframeHeight'])
	},
	watch: {
		'formData.endTime': function(val) {
			if (val && val != '') {
				let arrayTemp = val.split(' ');
				this.formData.endTime = arrayTemp[0] + ' 23:59:59';
			}
		}
	},
	mounted() {
		console.log(this.$store.state);
		this.user = this.$store.state.user;
		this.agencyId = this.user.agencyId;
		this.getOrgTreeList();
		this.getTableData();
		this.getPie();
	},
	methods: {
		handleSearch(val) {
			console.log(this.formData);
			this.pageNo = 1;
			this.getTableData();
		},
		async getTableData() {
			this.tableLoading = true;
			// const url = '/gov/org/staffLoginLog/community-count';
			const url = 'http://yapi.elinkservice.cn/mock/356/gov/org/staffLoginLog/community-count';

			const { pageSize, pageNo, formData } = this;
			const { data, code, msg } = await requestPost(url, {
				pageSize,
				pageNo,
				...formData
			});

			this.tableLoading = false;
			if (code === 0) {
				this.total = data.total || 0;
				this.tableData = data.list
					? data.list.map(item => {
							return item;
					  })
					: [];
			} else {
				this.$message.error(msg);
			}
		},
		handleSizeChange(val) {
			this.pageSize = val;
			window.localStorage.setItem('pageSize', val);
			this.getTableData();
		},
		handleCurrentChange(val) {
			this.pageNo = val;
			this.getTableData();
		},
		async getsubData() {
			this.$refs.pieChart.showLoading();
			let url = '/gov/org/staffLoginLog/sub-count';
			let param = {
				orgId: this.formData.orgId,
				level: this.formData.level,
				startDate: this.formData.startDate,
				endDate: this.formData.endDate
			};
			const { data, code, msg } = await requestPost(url, param);
			this.$refs.pieChart.hideLoading();

			if (code === 0) {
				this.pieData = data.list;
				console.log('this.pieData ', this.pieData);
				this.getPie();
			} else {
				this.$message.error(msg);
			}
		},
		pieInitOk() {
			this.pieInitState = true;
		},
		getPie() {
			if (this.pieInitState) {
				this.setPieData();
			} else {
				setTimeout(() => {
					this.getPie();
				}, 500);
			}
		},
		setPieData() {
			// let data = [...this.pieData];
			// console.log('data', data);
			let chartData = {
				name: ['1', '2', '3', '4'],
				data: [
					{ value: 23, id: '22', level: 'ddd', name: 'name' },
					{ value: 23, id: '22', level: 'ddd', name: 'name' },
					{ value: 23, id: '22', level: 'ddd', name: 'name' },
					{ value: 23, id: '22', level: 'ddd', name: 'name' }
				]
			};
			// chartData.name = data.map(item => item.agencyName);
			// chartData.data = data.map(item => {
			// 	return { value: item.count, id: item.agencyId, level: item.agencyLevel, name: item.agencyName };
			// });
			console.log('chartData', chartData);
			this.iniPieChart(chartData);
		},
		// 获取饼状图
		async iniPieChart(chartData) {
			this.$refs.pieChart.clear();
			// 获取pieChart配置
			this.pieOption = {
				legend: {
					itemHeight: 14,
					itemWidth: 14,
					icon: 'rect',
					orient: 'vertical',
					top: 'center',
					right: '5%',
					textStyle: {
						align: 'left',
						color: '#',
						verticalAlign: 'middle',
						rich: {
							name: {
								width: 80,
								fontSize: 16
							},
							value: { width: 20, align: 'right', fontFamily: 'Medium', fontSize: 16 },
							rate: { width: 10, align: 'right', fontSize: 16 }
						}
					},
					// data: datas,
					formatter: name => {
						// if (datas.length) {
						// 	const item = datas.filter(item => item.name === name)[0];
						// 	return `{name|${name}}{value| ${item.value}} {rate| 宗}`;
						// }
					}
				},
				color: ['#3C94FE', '#A17AFA', '#A19FFF', '#22C1C3', '#6FC364', '#FEB349', '#FE6252'],
				title: {
					text: '12345',
					subtext: '房屋总数(分)',
					x: 'center',
					y: 'center',
					textStyle: {
						fontSize: 26,
						color: '#333333',
						fontWeight: 'bold'
					},
					subtextStyle: {
						fontSize: 14,
						color: '#333333'
					}
				},

				tooltip: {
					trigger: 'item'
				},
				legend: {
					top: '5%',
					left: 'center'
				},
				series: [
					{
						radius: ['60%', '90%'],
						center: ['50%', '50%'],
						type: 'pie',
						label: {
							normal: {
								show: false
							},
							emphasis: {
								show: false
							}
						},
						labelLine: {
							normal: {
								show: false
							},
							emphasis: {
								show: false
							}
						},
						animation: false,
						tooltip: {
							show: false
						},
						itemStyle: {
							normal: {
								color: '#F7F7F7'
							}
						},
						data: [1]
					},
					{
						type: 'pie',
						radius: ['70%', '80%'],
						avoidLabelOverlap: false,
						label: {
							show: false,
							position: 'center'
						},

						data: [
							{ value: 1048, name: 'Search Engine' },
							{ value: 735, name: 'Direct' },
							{ value: 580, name: 'Email' },
							{ value: 484, name: 'Union Ads' },
							{ value: 300, name: 'Video Ads' }
						]
					}
				]
			};
			this.$refs.pieChart.setOption(this.pieOption);
		},
		handelClickMyPei(param) {
			if (param.data.level != 'community') {
				if (param.data.level == 'district') {
					this.orgType = 'street';
				}
				if (param.data.level == 'street') {
					this.orgType = 'community';
				}

				this.orgId = param.data.id;
				this.orgName = param.data.name;
				this.pageNo = 1;
				this.showNext();
				this.dialogVisible = true;
			}
		},
		async handleExport() {
			const url = '/gov/project/icEvent/export';
			const { pageSize, pageNo, formData } = this;
			axios({
				url: window.SITE_CONFIG['apiURL'] + url,
				method: 'post',
				data: {
					pageSize,
					pageNo,
					...formData
				},
				responseType: 'blob'
			})
				.then(res => {
					let fileName = window.decodeURI(res.headers['content-disposition'].split(';')[1].split('=')[1]);
					console.log('filename', fileName);
					let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' });
					var url = window.URL.createObjectURL(blob);
					var aLink = document.createElement('a');
					aLink.style.display = 'none';
					aLink.href = url;
					aLink.setAttribute('download', fileName);
					document.body.appendChild(aLink);
					aLink.click();
					document.body.removeChild(aLink); //下载完成移除元素
					window.URL.revokeObjectURL(url); //释放掉blob对象
				})
				.catch(err => {
					console.log('获取导出情失败', err);
					return this.$message.error('网络错误');
				});
		},
		getOrgTreeList() {
			const { user } = this.$store.state;
			this.$http
				.post('gov/org/customeragency/agencylist', {})
				.then(({ data: res }) => {
					if (res.code !== 0) {
						return this.$message.error(res.msg);
					} else {
						console.log('获取组织树成功', res.data);
						this.orgOptions = [];
						this.orgOptions.push(res.data);
					}
				})
				.catch(() => {
					return this.$message.error('网络错误');
				});
		},
		handleChangeAgency(val) {
			let obj = this.$refs['myCascader'].getCheckedNodes()[0].data;
			console.log(obj);
			this.formData.orgId = obj.agencyId;
			this.formData.level = obj.level;
		},
		deepTree(arr, child) {
			if (Array.isArray(arr) && arr.length > 0) {
				return arr.map(item => {
					// if (child === 'subAgencyList') item.value = item.orgType + '-' + item.orgId
					return {
						...item,
						[child]: (item[child] && item[child].length > 0 && this.deepTree(item[child], child)) || null
					};
				});
			}
		}
	}
};
</script>

<style lang="scss" scoped>
@import '@/assets/scss/buttonstyle.scss';
@import '@/assets/scss/modules/management/list-main.scss';
@import '@/assets/scss/modules/shequzhili/event-info.scss';
.btnSearch {
	width: 100px;
	height: 36px;
	background: #2195fe;
	box-shadow: 0px 2px 6px 0px rgba(28, 107, 253, 0.31);
	border-radius: 6px;
	color: #fff;
}
.div_search {
	.item_width_2 {
		width: 200px;
	}
}
// /这里是不一样的,居左，从下对齐
.census_searchcensus2 {
	text-align: center;
	margin: 0 auto;
	display: flex;

	justify-content: space-between;
	align-items: flex-end;
	margin-bottom: 20px;
	margin-top: 20px;
	.census_searchcensus_box {
		align-items: flex-end;
		display: flex;
		img {
			width: 64px;
			height: 64px;
			margin-right: 20px;
		}
		h2 {
			font-size: 28px;
			color: #333333;

			text-align: left;
			line-height: 40px;
			margin: 0px;
		}
		h3 {
			font-size: 14px;
			color: #333333;

			text-align: left;

			margin: 0px;
			font-weight: normal;
		}
	}
}
.div_table_title {
	margin-top: 20px;
	line-height: 30px;
	font-size: 20px;

	font-weight: bold;
	color: #333333;
}
.diy-button--output {
	width: 100px;
	height: 38px;
	background: #feb349;
	box-shadow: 0px 2px 6px 0px rgba(198, 122, 16, 0.31);
	border-radius: 6px;
	color: #fff;
}
</style>
