<template>
	<el-row :gutter="20">
		<!--用户数据-->
		<el-col :span="24" :xs="24">
			<el-row :gutter="10" class="mb8 fr">
				<el-col :span="1.5">
					<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport">导入</el-button>
				</el-col>
				<el-col :span="1.5">
					<el-button
						type="warning"
						plain
						icon="el-icon-download"
						size="mini"
						:loading="exportLoading"
						@click="importTemplate"
						>导出模板</el-button
					>
				</el-col>
			</el-row>

			<el-table v-loading="loading" :data="userList">
				<el-table-column label="序号" align="center" prop="id" width="80" />
				<el-table-column label="型号名称" align="center" prop="productName" />
				<el-table-column label="月份" align="center" prop="month" />
				<el-table-column label="交付数量（件）" align="center" prop="actualDeliveryQuantity" />
				<el-table-column label="目标交付数量（件）" align="center" prop="targetDeliveryQuantity" />
				<el-table-column label="完成率" align="center" prop="completionRate" />
				<el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
					<template slot-scope="scope">
						<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>
					</template>
				</el-table-column>
			</el-table>

			<pagination
				v-show="total > 0"
				:total="total"
				:autoScroll="false"
				:page.sync="queryParams.pageNum"
				:limit.sync="queryParams.pageSize"
				@pagination="getList"
			/>
		</el-col>
		<!-- 用户导入对话框 -->
		<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
			<el-upload
				ref="upload"
				:limit="1"
				accept=".xlsx, .xls"
				:headers="upload.headers"
				:action="upload.url"
				:disabled="upload.isUploading"
				:on-progress="handleFileUploadProgress"
				:on-success="handleFileSuccess"
				:auto-upload="false"
				drag
			>
				<i class="el-icon-upload"></i>
				<div class="el-upload__text">将文件拖到此处，或<em>点击上传</em></div>
				<div class="el-upload__tip" slot="tip">
					<span>仅允许导入xls、xlsx格式文件。</span>
				</div>
			</el-upload>
			<div slot="footer" class="dialog-footer">
				<el-button type="primary" @click="submitFileForm">确 定</el-button>
				<el-button @click="upload.open = false">取 消</el-button>
			</div>
		</el-dialog>
	</el-row>
</template>
<script>
import { rightTwoList, rightTwoImportTemplate, rightTwoDel } from './index'
import { getToken } from '@/utils/auth'
export default {
	data() {
		return {
			// 遮罩层
			loading: true,
			// 导出遮罩层
			exportLoading: false,
			// 查询参数
			queryParams: {
				pageNum: 1,
				pageSize: this.page_size,
			},
			// 用户信息
			userList: [],
			// 总条数
			total: 0,
			// 用户导入参数
			upload: {
				// 是否显示弹出层（用户导入）
				open: false,
				// 弹出层标题（用户导入）
				title: '',
				// 是否禁用上传
				isUploading: false,
				// 是否更新已经存在的用户数据
				updateSupport: 0,
				// 设置上传的请求头部
				headers: { Authorization: 'Bearer ' + getToken() },
				// 上传的地址
				url: process.env.VUE_APP_BASE_API + '/hx/productCompletion/importData',
			},
		}
	},
	methods: {
		/** 查询用户列表 */
		getList() {
			this.loading = true
			rightTwoList(this.queryParams).then(res => {
				this.userList = res.rows
				this.total = res.total
				this.loading = false
			})
		},
		/** 删除按钮操作 */
		handleDelete(row) {
			this.$modal
				.confirm('是否确认删除编号为"' + row.id + '"的数据项？')
				.then(function () {
					return rightTwoDel({ id: row.id })
				})
				.then(() => {
					this.getList()
					this.$modal.msgSuccess('删除成功')
				})
				.catch(() => {})
		},
		/** 导出按钮操作 */
		handleExport() {
			const queryParams = this.queryParams
			this.$modal
				.confirm('是否确认导出所有数据项？')
				.then(() => {
					this.exportLoading = true
					return exportUser(queryParams)
				})
				.then(response => {
					this.$download.name(response.msg)
					this.exportLoading = false
				})
				.catch(() => {})
		},
		/** 导入按钮操作 */
		handleImport() {
			this.upload.title = '数据导入'
			this.upload.open = true
		},
		/** 下载模板操作 */
		importTemplate() {
			rightTwoImportTemplate().then(response => {
				this.$download.name(response.msg)
			})
		},
		// 文件上传中处理
		handleFileUploadProgress(event, file, fileList) {
			this.upload.isUploading = true
		},
		// 文件上传成功处理
		handleFileSuccess(response, file, fileList) {
			this.upload.open = false
			this.upload.isUploading = false
			this.$refs.upload.clearFiles()
			this.$alert(response.msg, '导入结果', { dangerouslyUseHTMLString: true })
			this.getList()
		},
		// 提交上传文件
		submitFileForm() {
			this.$refs.upload.submit()
		},
	},
	created() {
		this.getList()
	},
}
</script>
