<template>
	<div style="height:100%;">
		<div class="searchForm-header">
			<el-row>
				<el-form :model="query" label-width="100px" inline="">
					<el-row>
						<el-form-item label="库房名称" style="margin-left: -15px">
							<el-select v-model="query.wareName"  size="small" clearable style="width:120px;margin-left: -8px" @change="changeWare">
								<el-option v-for="item in optionsWare" :key="item.id" :label="item.name" :value="item.name">
								</el-option>
							</el-select>
						</el-form-item>
						<el-form-item label="垛位名称" style="margin-left: -35px">
							<el-input v-model="query.stackName" size="small" style="width:120px;margin-left: -8px"></el-input>
						</el-form-item>
						<el-form-item label="物料名称" style="margin-left: -35px">
							<el-input v-model="query.materialName" size="small" style="width:120px;margin-left: -8px">
								<el-button slot="append" icon="el-icon-search" @click="showMaterial"></el-button>
							</el-input>
						</el-form-item>
						<el-form-item label="钢种" style="margin-left: -35px">
							<el-input v-model="query.standard" size="small" style="width:120px;margin-left: -8px">
								<el-button slot="append" icon="el-icon-search" @click="showMaterial"></el-button>
							</el-input>
						</el-form-item>
						<el-form-item label="客户名称" style="margin-left: -35px">
							<el-input v-model="query.customerName" size="small" style="width:170px;margin-left: -8px">
								<el-button slot="append" icon="el-icon-search" @click="showCustomer"></el-button>
							</el-input>
						</el-form-item>
					</el-row>
					<el-row>
						<el-form-item label="规格型号" style="margin-left: -15px;margin-top: -15px">
							<el-input v-model="query.model" size="small" style="width:120px;margin-left: -8px">
							</el-input>
						</el-form-item>
						<el-form-item label="钢板号" style="margin-left: -35px;margin-top: -15px"> 
							<el-input v-model="query.plateNo" size="small" style="width:120px;margin-left: -8px">
							</el-input>
						</el-form-item>
						<el-form-item label="转移时间" style="margin-left: -35px;margin-top: -15px">
								<el-date-picker v-model="query.RecordDate" size="small" style="width:330px;margin-left: -8px" type="datetimerange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
							    </el-date-picker>
						</el-form-item>
						<el-form-item label=" " style="margin-top: -15px">
							<el-button @click="handleSearch" type="primary"  size="small" >查询</el-button>
							<el-button   type="success" @click="handleExport" style="margin-left: 2px" size="small">导出记录</el-button>
						</el-form-item>
					</el-row>
				</el-form>
			</el-row>
			<total-block ref="totalBlock" style="margin-top: -25px;margin-left: -35px" v-bind:childParam="childParam" v-bind:childUrl = 'childUrl'></total-block>
		</div>
		<div class="tabledata-grid">
			<el-table  v-loading="loading"  :data="tableData" height="100%" stripe border style="width: 97%;;font-size: 13px;margin-top: -50px;" :header-cell-style="{'text-align':'center'}">
				<el-table-column prop="id" label="编号" min-width="10%" v-if="false">
				</el-table-column>
				<el-table-column prop="wareName" label="仓库名称" width="100px" show-overflow-tooltip header-align="center">
				</el-table-column>
				<el-table-column prop="stackName" label="垛位" width="60px" show-overflow-tooltip header-align="center" align="center">
				</el-table-column>
				<el-table-column prop="layer" label="层号" show-overflow-tooltip width="60px" header-align="center" align="center">
				</el-table-column>
				<el-table-column prop="materialName" label="品名" show-overflow-tooltip width="60px" header-align="center" align="center">
				</el-table-column>
				<el-table-column prop="model" label="规格型号" show-overflow-tooltip width="180px" align="center">
				</el-table-column>
				<el-table-column prop="standard" label="钢种" show-overflow-tooltip width="80px" align="center">
				</el-table-column>
				<el-table-column prop="count" label="数量" width="80px" show-overflow-tooltip align="right">
				</el-table-column>
				<el-table-column prop="weight" label="重量" width="80px" show-overflow-tooltip align="right">
				</el-table-column>
				<el-table-column prop="plateNo" label="钢板号" width="200px" show-overflow-tooltip align="center">
				</el-table-column>
				<el-table-column prop="fkCustomerNameOld" label="原货权单位" show-overflow-tooltip width="300px">
				</el-table-column>
				<el-table-column prop="customerNameOld" label="原客户名称" show-overflow-tooltip width="300px">
				</el-table-column>
				<el-table-column prop="fkCustomerNameNew" label="新货权单位" show-overflow-tooltip width="300px">
				</el-table-column>
				<el-table-column prop="customerNameNew" label="新客户名称" show-overflow-tooltip width="300px">
				</el-table-column>
				<el-table-column prop="receiveAddressOld" label="原收货地址" width="300" show-overflow-tooltip align="left">
				</el-table-column>
				<el-table-column prop="receiveAddressNew" label="新收货地址" width="300" show-overflow-tooltip align="left">
				</el-table-column>
				<el-table-column prop="addTime" label="操作时间" width="200px" show-overflow-tooltip align="left">
				</el-table-column>
				<el-table-column prop="addUser.userDesc" label="操作人" width="100px" show-overflow-tooltip align="left">
				</el-table-column>
				<el-table-column prop="wgtDcnMtcCd" label="计量方式" width="100" show-overflow-tooltip header-align="center">
				</el-table-column>
				<el-table-column prop="edgeTy" label="切边类型" width="100" show-overflow-tooltip header-align="center">
				</el-table-column>
				<el-table-column prop="productionPlace" label="产地" width="250" show-overflow-tooltip header-align="center">
				</el-table-column>
				<el-table-column prop="remark" label="备注" width="100px" show-overflow-tooltip align="left">
				</el-table-column>
			</el-table>
			<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
			 :page-sizes="pageSizes" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="totalRows">
			</el-pagination>
		</div>

		<popup-material ref="PopupMaterial" @receviceFromChild="receviceFromMaterial"></popup-material>
		<popup-customer ref="PopupCustomer" @receviceFromChild="receviceFromCustomer"></popup-customer>
	</div>
</template>

<script>
	import axios from '@/axios'
	import PopupStack from '@/components/PopupStack.vue'
	import PopupMaterial from '@/components/PopupMaterial.vue'
	import PopupCustomer from '@/components/PopupCustomer.vue'
	import TotalBlock    from '@/components/TotalBlock.vue'
	import Export2Excel from '../../excel/Export2Excel.js'
	import {
		mapState
	} from 'vuex'
	export default {
		computed: {
			...mapState({
				serverName: state => state.app.serverName
			})
		},
		components: {
			PopupStack,
			PopupMaterial,
			PopupCustomer,
			TotalBlock
		},
		data() {
			return {
				query: {
					wareName: '',
					stackName: '',
					model: '',
					materialName: '',
					standard: '',
					customerName: '',
					plateNo: '',
					RecordDate:[],
				},

				tableData: [],
				optionsWare: [],
				dialogVisible: false,
				labelPosition: 'right',

				//分页参数
				currentPage: 1,
				totalRows: 0,
				pageSizes: [50, 100, 200,500],
				pageSize: 50,
				childParam:{
					wareName: '',
					stackName: '',
					model: '',
					materialName: '',
					standard: '',
					customerName: '',
					plateNo: '',
					RecordDate:[],
				},
				childUrl:'WareChangeRecord/queryTotal.do',
				loading: false,

			};
		},
		//页面加载完成渲染
		mounted() {
			this.getWare()
			this.getTableData()
		},
		methods: {
			typeFormatter: function(row, column) {
				switch (row.recordType) {

					case "0":
						return "入库取消";
						break;
					default:
						return "入库";
						break;
				}
			},
			showMaterial() {
				this.$refs.PopupMaterial.show()
			},
			receviceFromMaterial(material) {
				//console.log("receviceFromStack")
				this.query.materialName = material.name
				this.query.standard = material.standard
			},

			showCustomer() {
				this.$refs.PopupCustomer.show()
			},
			receviceFromCustomer(customer) {
				//console.log("receviceFromStack")
				this.query.customerName = customer.name

			},
			handleSizeChange(val) {
				console.log(`每页 ${val} 条`);
				this.pageSize = val
				this.getTableData()
			},
			// 修改当前页事件
			handleCurrentChange(val) {
				console.log(`当前页: ${val}`);
				this.currentPage = val
				this.getTableData()
			},
			handleSearch() {
				this.currentPage = 1
				this.getTableData()
			},
			getWare() {
				var url = 'MaintWare/queryByUserId.do'
				var param = {}
				axios.get(url, param).then(response => {
					console.log(response)
					this.optionsWare = response.data.data
					if (response.data.data.length == 1) {
						this.wareName = response.data.data[0].name
						//	this.getStack()
					}
				});
			},
			getTableData() {
				var url = 'WareChangeRecord/query.do'
				if(this.query.RecordDate == null){
					this.query.RecordDate = [false,false];
				}
				this.loading = true
				var param = {
					page: this.currentPage,
					rows: this.pageSize,
					wareName: this.query.wareName,
					stackName: this.query.stackName,
					model: this.query.model,
					materialName: this.query.materialName,
					standard: this.query.standard,
					customerName: this.query.customerName,
					plateNo: this.query.plateNo,
					pFromDate:(!this.query.RecordDate[0]) ? "1970-01-01 00:00:00" : this.query.RecordDate[0].Format("yyyy-MM-dd HH:mm:ss"),		//date类型
					pToDate  :(!this.query.RecordDate[1]) ? new Date().Format("yyyy-MM-dd HH:mm:ss") :this.query.RecordDate[1].Format("yyyy-MM-dd HH:mm:ss"), 
				}
				this.childParam = param;
				axios.get(url, param).then(response => {
					if (response.data.code == 0) {
						this.tableData = response.data.data.list;
						this.totalRows = response.data.data.total;
						this.$refs.totalBlock.getTotalData();
					} else {
						this.$message({
							type: 'error',
							message: '操作失败；' + response.data.msg,
						});
					}
					this.loading = false;
				});
			},
			changeWare(){

			},
			handleExport() {
				var imptData = [];
				

				var url = 'WareChangeRecord/query.do'
				if(this.query.RecordDate == null){
					this.query.RecordDate = [false,false];
				}
				var param = {
					page: -1,
					rows: -1,
					wareName: this.query.wareName,
					stackName: this.query.stackName,
					model: this.query.model,
					materialName: this.query.materialName,
					standard: this.query.standard,
					customerName: this.query.customerName,
					plateNo: this.query.plateNo,
					pFromDate:(!this.query.RecordDate[0]) ? "1970-01-01 00:00:00" : this.query.RecordDate[0].Format("yyyy-MM-dd HH:mm:ss"),		//date类型
					pToDate  :(!this.query.RecordDate[1]) ? new Date().Format("yyyy-MM-dd HH:mm:ss") :this.query.RecordDate[1].Format("yyyy-MM-dd HH:mm:ss"), 
				}
				// alert(JSON.stringify(param))

				axios.get(url, param).then(response => {
					// alert(JSON.stringify(response))
					if (response.data.code == 0) {
						var imptData = response.data.data;
						if (imptData.length == 0) {
							this.$alert('无法导出，选择时间段无记录', '提示', {
								confirmButtonText: '确定',
								callback: action => {}
							});
						} else {

							this.exportExcel(imptData)
						}
					} else {
						this.$message({
							type: 'error',
							message: '操作失败；' + response.data.msg,
						});
					}

				});
				
			},
			exportExcel(imptData) {
				 console.log(imptData)
				const header = ["仓库名称",
								"垛位",
								"层号",
								"品名",
								"规格型号",
								"钢种",
								"数量",
								"重量",
								"钢板号",
								"原货权单位",
								"原客户名称",
								"新货权单位",
								"新客户名称",
								"原收货地址",
								"新收货地址",
								"操作时间",
								"操作人",
								"计量方式",
								"切边类型",
								"产地",
								"备注"

				] // 导出的表头名
				const filterVal = [
						"wareName",
						"stackName",
						"layer",
						"materialName",
						"model",
						"standard",
						"count",
						"weight",
						"plateNo",
						"fkCustomerNameOld",
						"customerNameOld",
						"fkCustomerNameNew",
						"customerNameNew",
						"receiveAddressOld",
						"receiveAddressNew",
						"addTime",
						"addUserUserDesc",
						"wgtDcnMtcCd",
						"edgeTy",
						"productionPlace",
						"remark"
				]

				for(var i=0;i<imptData.length;i++){
					imptData[i]["addUserUserDesc"] = imptData[i].addUser.userDesc;
				}
				const list = imptData
				const data = this.formatJson(filterVal, list)

				const filename = '货权转移记录' + (new Date()).toLocaleDateString();
				Export2Excel.export_json_to_excel({
					header,
					data,
					filename
				})
			},
			formatJson(filterVal, jsonData) {
				return jsonData.map(v => filterVal.map(j => {
					return v[j]
				}))
			},
		},
	}
</script>

<style>
.searchForm-header{
		/*background-color: red;*/
		height: auto;
		/*;*/
		margin-left: 10px;
	}
	.tabledata-grid{
		/*margin-left: 100px;*/
		font-size: 20px;
		height: calc(100% - 170px);
		margin-left: 15px;
		/*background-color: #000;*/
	}
</style>
