<template>
	<div class="app-container">
		<el-row type="flex" justify="space-between" style="margin-bottom: 20px">
			<div class="grid-content bg-purple">
				<div class="grid-content bg-purple" style="margin-left: 30px;">
					<el-input placeholder="请输入查询内容" v-model="search" style="width: 80%;">
						<i slot="prefix" class="el-input__icon el-icon-search"></i>
					</el-input>
				</div>
			</div>
				<div class="grid-content bg-purple">
					<el-dropdown @command="handleCommand">
						<div class="pulldown">
							<span class="el-dropdown-link" v-if="!status">
								本地
							</span>
							<span class="el-dropdown-link" v-if="status">
								{{status}}
							</span>
							<i class="el-icon-arrow-down el-icon--right"></i>
						</div>
						<el-dropdown-menu slot="dropdown">
							<el-dropdown-item command="本地">本地</el-dropdown-item>
							<!-- <el-dropdown-item command="业务管理员">业务管理员</el-dropdown-item> -->
						</el-dropdown-menu>
					</el-dropdown>
				</div>
				<div class="grid-content bg-purple">
					<div class="block">
						<el-date-picker v-model="value2" type="daterange" align="right" unlink-panels
							range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
							:picker-options="pickerOptions">
						</el-date-picker>
					</div>
				</div>
				<div class="grid-content bg-purple" style="display: flex;justify-content: flex-end;">
					<el-button type="primary">下载</el-button>
					<el-button type="danger" @click="moreDelete">删除</el-button>
				</div>
		</el-row>
		<el-table v-loading="listLoading" :data="srcList" element-loading-text="Loading" border fit highlight-current-row @select="handleSelectionChange" @select-all="handleAll">
			<el-table-column align="center" label="" width="55" type="selection" >
				
			</el-table-column>
			<el-table-column label="文件名称" align="center" prop='fileName'>
				
			</el-table-column>
			<el-table-column label="存储对象" align="center" prop="storeType">
				
			</el-table-column>
			<el-table-column label="文件大小"  align="center" prop="fileSize">
				
			</el-table-column>
			<el-table-column align="center"  label="时间" prop="backupTime">
				
			</el-table-column>
			<el-table-column label="备注" align="center" prop="remark">
				
			</el-table-column>
			<el-table-column align="center" prop="created_at" label="操作" width="250">
				<template slot-scope="scope">
					<el-tag type="success" style="cursor: pointer;margin-right: 15px;" @click="recover(scope.row.fileName)">恢复</el-tag>
					<el-tag type="warning" style="margin-right: 15px;cursor: pointer;" @click="download(scope.row.fileName)">下载</el-tag>
					<el-tag type="danger" style="cursor: pointer;" @click="deleted(scope.row.fileName)">删除</el-tag>
				</template>
			</el-table-column>
		</el-table>
		<div class="pagesip">
			<el-button type="primary" size="small"
				style="background-color:#D8AB5A ;border-color:#D8AB5A ; margin: 0 20px;" @click="jumpFirstPage">首页
			</el-button>
			<el-pagination background @current-change="handleCurrentChange" layout="prev, pager, next"
				:total="list.length" :page-size="11" prev-text="上一页" next-text="下一页" :hide-on-single-page="false"
				ref="pagination">
			</el-pagination>
			<el-button type="primary" size="small"
				style="background-color:#D8AB5A ;border-color:#D8AB5A ;margin: 0 20px;" @click="jumpLastPage">尾页
			</el-button>
		</div>
	</div>
</template>

<script>
	import {
		getList
	} from '@/api/table'

	export default {
		filters: {
			statusFilter(status) {
				const statusMap = {
					published: 'success',
					draft: 'gray',
					deleted: 'danger'
				}
				return statusMap[status]
			}
		},
		data() {
			return {
				srcList: [],
				list: [],
				temporaryList: [],
				listLoading: false,
				status: '',
				hpstatus: '',
				removeList:[],
				currentPage: 1,
				pagesize: 11,
				search: '',
				checked: false,
				pickerOptions: {
					shortcuts: [{
						text: '最近一周',
						onClick(picker) {
							const end = new Date();
							const start = new Date();
							start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
							picker.$emit('pick', [start, end]);
						}
					}, {
						text: '最近一个月',
						onClick(picker) {
							const end = new Date();
							const start = new Date();
							start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
							picker.$emit('pick', [start, end]);
						}
					}, {
						text: '最近三个月',
						onClick(picker) {
							const end = new Date();
							const start = new Date();
							start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
							picker.$emit('pick', [start, end]);
						}
					}]
				},
				value1: '',
				value2: ''
			}
		},
		created() {
			// this.fetchData()
		},
		mounted() {
			this.$request({
				url:"/api/Database/backups",
				method:'post',
				data:{
					pageIndex:1,
					pageSize:100
				}
			}).then((res)=>{
				this.list=res.data.result
				this.getPageData();
			})
		},
		methods: {
			handleCommand(command) {
				this.status = command

			},
			handlehpCommand(command) {
				this.hpstatus = command

			},
			jumpFirstPage() {
				this.$refs.pagination.handleCurrentChange(1);
				this.$emit('handleCurrentChange', 1);
			},
			jumpLastPage() {
				let font = this.$refs.pagination
				let cpage = Math.ceil(font.total / font.pageSize);
				font.handleCurrentChange(cpage);
			},
			getPageData() {
				let start = (this.currentPage - 1) * this.pagesize;
				let end = start + this.pagesize;
				this.srcList = this.list.slice(start, end);
				this.temporaryList = this.srcList;
			},
			handleCurrentChange(val) {
				this.currentPage = val;
				this.getPageData();
			},
			handleSelectionChange(data) {
				this.multipleSelection = data;
				console.log(this.multipleSelection);
			},
			handleAll(data) {
				this.multipleSelection = data
				console.log(this.multipleSelection)
			},
			download(fileName){
				window.open('https://ht.9026.com/api/Database/export?fileName='+fileName)
				// this.$request({
				// 	url:'/api/Database/export',
				// 	method:'post',
				// 	data:{
				// 		fileName:fileName
				// 	}
				// }).then((res)=>{
				// 	console.log(res)
				// })
			},
			recover(fileName){
				this.$request({
					url:'/api/Database/restore',
					method:'post',
					headers: { 
					      'Content-Type': 'application/json'
					   },
					data:{
						fileName:fileName
					}
				}).then((res)=>{
					console.log(res)
					if(res.code==200){
						this.$message({
							type:'success',
							message:'恢复成功'
						})
					}else{
						this.$message({
							type:'danger',
							message:'恢复失败'
						})
					}
				})
			},
			deleted(fileName){
				this.$request({
					url:'/api/Database/delete',
					method:'post',
					data:{
						fileNameList:[fileName]
					}
				}).then((res)=>{
					if(res.code==200){
						this.$message({
							type:'success',
							message:'删除成功!'
						})
					}else{
						this.$message({
							type:'danger',
							message:'删除失败!'
						})
					}
				})
			},
			moreDelete(){
			 let fileNameList=Array.from(this.multipleSelection,({fileName})=>fileName)
			 this.$request({
				 url:'/api/Database/delete',
				 method:'post',
				 data:{
					 fileNameList:fileNameList
				 }
			 }).then((res)=>{
				 if(res.code==200){
				 	this.$message({
				 		type:'success',
				 		message:'删除成功!'
				 	})
				 }else{
				 	this.$message({
				 		type:'danger',
				 		message:'删除失败!'
				 	})
				 }
			 })
			}
		}
	}
</script>
<style lang="scss">
	.app-container {
		position: relative;
	}

	.pulldown {
		width: 185px;
		height: 40px;
		border: 1px solid #E8E8E8;
		border-radius: 10px;
		display: flex;
		justify-content: center;
		align-items: center;
		justify-content: space-between;
		padding: 0 20px;
		color: #999999;
	}

	.pagesip {
		width: 100%;
		margin: 20px auto;
		display: flex;
		// align-items: center;
		justify-content: flex-end;
	}

	.el-pagination.is-background .el-pager li:not(.disabled).active {
		background-color: #D8AB5A;
	}

	.el-col {
		margin-bottom: 20px;
	}
</style>
