<template>
	<div class="table-container">
		<vab-query-form>
			<div class="title">
				<div class="left">
					<div class="left-item">
						<div style="width: 70px;">名称：</div>
						<el-input v-model="fuzzyQuery_name" placeholder="请输入" clearable />
					</div>
					<el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
						查询
					</el-button>
				</div>
				<div class="right">
					<el-button icon="el-icon-plus" type="primary" @click="handleAdd">
						添加
					</el-button>
					<el-button icon="el-icon-delete" type="danger" @click="handleDelete">
						删除
					</el-button>
					<UploadExcel style="margin-left: 10px;" @getResult="getMyExcelData"></UploadExcel>
					<ExportExcel :exportList="exportExcel" :useType="'export'" partsName="实时数据库"></ExportExcel>
					<ExportExcel :exportList="templateExcel" :useType="'template'" partsName="实时数据库模板"></ExportExcel>
				</div>
			</div>
			<el-table header-cell-class-name="table_header_style" border ref="tableSort" v-loading="listLoading" :data="list"
				:element-loading-text="elementLoadingText" :height="height" @selection-change="setSelectRows">
				<el-table-column show-overflow-tooltip type="selection" align="center" width="40"></el-table-column>
				<el-table-column show-overflow-tooltip label="id" prop="id" align="center" sortable></el-table-column>
				<el-table-column show-overflow-tooltip label="服务名" prop="surname" align="center" sortable></el-table-column>
				<el-table-column width="120" show-overflow-tooltip label="服务名历史" prop="namehist" align="center" sortable></el-table-column>
				<el-table-column width="120" show-overflow-tooltip label="服务名配置" prop="namecmcfg" align="center" sortable>
				</el-table-column>
				<el-table-column width="120" show-overflow-tooltip label="服务名实时" prop="namerts" align="center" sortable>
				</el-table-column>
				<el-table-column show-overflow-tooltip label="点标签" prop="label" align="center" sortable></el-table-column>
				<el-table-column show-overflow-tooltip label="风场编号" prop="windpowerstationid" align="center" sortable>
				</el-table-column>
				<el-table-column show-overflow-tooltip label="端口历史" prop="porthist" align="center" sortable>
				</el-table-column>
				<el-table-column show-overflow-tooltip label="端口配置" prop="portcmcfg" align="center" sortable>
				</el-table-column>
				<el-table-column show-overflow-tooltip label="端口实时" prop="portrts" align="center" sortable>
				</el-table-column>
				<el-table-column show-overflow-tooltip label="地址历史" prop="iphist" align="center" sortable>
				</el-table-column>
				<el-table-column show-overflow-tooltip label="地址配置" prop="ipcmcfg" align="center" sortable>
				</el-table-column>
				<el-table-column show-overflow-tooltip label="地址实时" prop="iprts" align="center" sortable>
				</el-table-column>
				<el-table-column show-overflow-tooltip label="操作" width="100px" fixed="right">
					<template #default="{ row }">
						<el-button type="text" @click="handleEdit(row)">编辑</el-button>
						<el-button type="text" @click="handleDelete(row)">删除</el-button>
					</template>
				</el-table-column>
			</el-table>
			<el-pagination :background="background" :current-page="queryForm.pageNo" :layout="layout"
				:page-size="queryForm.pageSize" :total="total" @current-change="handleCurrentChange"
				@size-change="handleSizeChange"></el-pagination>
			<table-edit ref="edit" :options="options" :stationList="stationList" @save-success="fetchData"></table-edit>
		</vab-query-form>
	</div>
</template>
<script>
import UploadExcel from '@/components/UploadExcel/index'
import ExportExcel from '@/components/ExportExcel/index'
import api from '@/api/realtimeDatabaseConfiguration'
import stationApi from '@/api/station'
import TableEdit from './components/TableEdit'
export default {
	components: {
		UploadExcel,
		ExportExcel,
		TableEdit,
	},
	data() {
		return {
			fuzzyQuery_name: '',
			listLoading: true,
			list: [],
			options: [],
			exportExcel: [],
			templateExcel: [],
			elementLoadingText: '正在加载...',
			selectRows: '',
			layout: 'total, sizes, prev, pager, next, jumper',
			total: 0,
			background: true,
			exportList: [],
			queryForm: {
				pageNo: 1,
				pageSize: 20,
			},
			stationList: [],
			selectValue: ''
		};
	},
	computed: {
		height() {
			return this.$baseTableHeight() + 50
		},
	},
	created() {
		this.getStation()
		this.fetchData()
	},
	methods: {
		getMyExcelData(val) {
			val.forEach(item => {
				api.addDatabase(item).then(res => {
					if (res.code == 200) {
						this.$message({
							type: 'success',
							message: '添加成功!'
						});
						this.fetchData()
					}
				})
			})
		},
		getStation() {
			stationApi.windpowerstationList({
				id: '',
				name: '',
				companyid: '',
				pageNum: 1,
				pageSize: 1000,
			}).then(res => {
				if (res.data) {
					this.listLoading = false
					this.stationList = res.data.records
				}
			})
		},
		fetchData() {
			api.database({
				name: this.fuzzyQuery_name,
				pageNum: this.queryForm.pageNo,
				pageSize: this.queryForm.pageSize,
			}).then(res => {
				if (res.data) {
					this.listLoading = false
					this.total = res.data.total
					this.list = res.data.records
					this.templateExcel = [
						{
							id: '',
							surname: '',
							namehist: '',
							namecmcfg: '',
							namerts: '',
							label: '',
							windpowerstationid: '',
							porthist: '',
							portcmcfg: '',
							portrts: '',
							iphist: '',
							ipcmcfg: '',
							iprts: '',
						}
					]
					// 导出
					let exportExcel = []
					res.data.records.forEach(item => {
						exportExcel.push({
							id: item.id,
							surname: item.surname,
							namehist: item.namehist,
							namecmcfg: item.namecmcfg,
							namerts: item.namerts,
							label: item.label,
							windpowerstationid: item.windpowerstationid,
							porthist: item.porthist,
							portcmcfg: item.portcmcfg,
							portrts: item.portrts,
							iphist: item.iphist,
							ipcmcfg: item.ipcmcfg,
							iprts: item.iprts,
						})
					})
					this.exportExcel = exportExcel
				}
			})
		},
		handleSizeChange(val) {
			this.queryForm.pageSize = val
			this.fetchData()
		},
		handleCurrentChange(val) {
			this.queryForm.pageNo = val
			this.fetchData()
		},
		handleAdd() {
			this.$refs['edit'].showEdit()
		},
		handleEdit(row) {
			this.$refs['edit'].showEdit(row)
		},
		handleDelete(row) {
			if (row.id || this.selectRows.length > 0) {
				this.$baseConfirm('你确定要删除吗', null, async () => {
					let ids = ''
					if (this.selectRows.length > 0) {
						ids = this.selectRows.map((item) => item.id).join()
					}
					api.deleteDatabase({
						id: row.id || ids
					}).then(res => {
						if (res.data) {
							this.$baseMessage('删除成功', 'success')
							this.fetchData()
						}
					})
				})
			} else {
				this.$baseMessage('未选中任何行', 'error')
				return false
			}
		},
		setSelectRows(val) {
			this.selectRows = val
		},
	},
}
</script>
<style lang="less" scoped>
.title {
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 20px;
}

.left {
	display: flex;
	flex-direction: row;
	align-items: center;

	.left-item {
		display: flex;
		flex-direction: row;
		align-items: center;
		margin-right: 10px;
	}
}
</style>