<template>
	<div class="show-box">
		<!-- 单选 -->
		<other-msg
			:printMsg1="printMsg1"
			:printMsg2="printMsg2"
			:printMsg3="printMsg3"
			@changeChoose="changeChoose" />
		<!-- 搜索工作栏 -->
		<search-bar
			:formConfigs="formConfig"
			ref="searchBarForm"
			@headBtnClick="buttonClick" />
		<!-- 列表 -->
		<base-table
			:page="queryParams.pageNo"
			:limit="queryParams.pageSize"
			:table-props="tableProps"
			:table-data="list"
			@emitFun="inputChange">
			<method-btn
				v-if="tableBtn.length"
				slot="handleBtn"
				:width="260"
				label="操作"
				:method-list="tableBtn"
				@clickBtn="handleClick" />
		</base-table>
		<pagination
			:page.sync="queryParams.pageNo"
			:limit.sync="queryParams.pageSize"
			:total="total"
			@pagination="getList" />
		<!-- 预览 -->
		<print-preview ref="preView" />
	</div>
</template>
<script>
import { parseTime } from '@/utils/ruoyi';
import inputArea from './InputArea.vue';
const tableProps = [
	{
		prop: 'packagingCode',
		label: '成品周转编号',
		minWidth: 160,
		showOverflowtooltip: true,
	},
	{
		prop: 'lineId',
		label: '产线',
		showOverflowtooltip: true,
	},
	{
		prop: 'specifications',
		label: '规格',
		showOverflowtooltip: true,
	},
	{
		prop: 'check',
		label: '判定',
		showOverflowtooltip: true,
	},
	{
		prop: 'workStation',
		label: '工位号',
		showOverflowtooltip: true,
	},
	{
		prop: 'num',
		label: '片数',
		subcomponent: inputArea,
		minWidth: 120,
	},
	{
		prop: 'remark',
		label: '备注1',
		showOverflowtooltip: true,
	},
	{
		prop: 'printStatus',
		label: '打印状态',
		filter: (val) => (val == 1 ? '未打印' : '已打印'),
	},
	{
		prop: 'createTime',
		label: '时间',
		filter: parseTime,
		minWidth: 160,
		showOverflowtooltip: true,
	},
	{
		prop: 'groupClass',
		label: '班次',
		showOverflowtooltip: true,
	},
];
import OtherMsg from './OtherMsg';
import { getPackingPage, updatePacking } from '@/api/base/packingInfo';
import { getCorePLList } from '@/api/base/coreProductionLine';
import printPreview from './preview';
import printTemplate from '../print-template';
export default {
	name: 'UnPrint',
	components: { OtherMsg, printPreview },
	data() {
		return {
			printMsg1: {
				customerId: '',
				sealWorker: '',
				packWorker: '',
				processCard: '',
				pallet: '',
				remark: '',
			},
			printMsg2: {
				customerId: '',
				sealWorker: '',
				packWorker: '',
				processCard: '',
				pallet: '',
				remark: '',
			},
			printMsg3: {
				customerId: '',
				sealWorker: '',
				packWorker: '',
				processCard: '',
				pallet: '',
				remark: '',
			},
			chooseMsg: 1, //单选
			formConfig: [
				{
					type: 'select',
					label: '产线',
					selectOptions: [],
					param: 'lineId',
					filterable: true,
				},
				{
					type: 'datePicker',
					label: '时间段',
					dateType: 'daterange',
					format: 'yyyy-MM-dd HH:mm:ss',
					valueFormat: 'yyyy-MM-dd HH:mm:ss',
					rangeSeparator: '-',
					startPlaceholder: '开始时间',
					endPlaceholder: '结束时间',
					param: 'timeVal',
					defaultSelect: [],
					width: 350,
				},
				{
					type: 'button',
					btnName: '查询',
					name: 'search',
					color: 'primary',
				},
			],
			// 查询参数
			queryParams: {
				pageNo: 1,
				pageSize: 20,
				printStatus: '1',
				lineId: '',
				createTime: [],
			},
			total: 0,
			tableProps,
			list: [],
			tableBtn: [
				this.$auth.hasPermiAnd([
					'base:order:query',
					'base:order-con-group-order:create',
				])
					? {
							type: 'view',
							btnName: '预览',
					  }
					: undefined,
				this.$auth.hasPermi('base:order-group:update')
					? {
							type: 'print',
							btnName: '打印',
					  }
					: undefined,
				this.$auth.hasPermi('base:order-group:update')
					? {
							type: 'printed',
							btnName: '已打印',
					  }
					: undefined,
				this.$auth.hasPermiAnd([
					'base:order-group:update',
					'base:core-product:query',
					'base:core-customer:query',
				])
					? {
							type: 'edit',
							btnName: '编辑',
							showParam: {
								type: '&',
								data: [
									{
										type: 'unequal',
										name: 'isEdit',
										value: true,
									},
								],
							},
					  }
					: undefined,
				this.$auth.hasPermiAnd([
					'base:order-group:update',
					'base:core-product:query',
					'base:core-customer:query',
				])
					? {
							type: 'save',
							btnName: '保存',
							showParam: {
								type: '&',
								data: [
									{
										type: 'equal',
										name: 'isEdit',
										value: true,
									},
								],
							},
					  }
					: undefined,
				this.$auth.hasPermi('base:order-group:query')
					? {
							type: 'delete',
							btnName: '删除',
					  }
					: undefined,
			].filter((v) => v),
			printData: {},
		};
	},
	mounted() {
		this.getLineList();
		console.log(printTemplate);
		console.log('================printTemplate');
	},
	methods: {
		getLineList() {
			getCorePLList().then((res) => {
				this.formConfig[0].selectOptions = res.data;
			});
		},
		getList() {
			getPackingPage({ ...this.queryParams }).then((res) => {
				this.list = res.data.records || [];
				this.total = res.data.total;
			});
		},
		// 单选
		changeChoose(val) {
			this.chooseMsg = val;
		},
		buttonClick(val) {
			this.queryParams.lineId = val.lineId;
			this.queryParams.createTime = val.timeVal;
			this.getList();
		},
		handleClick(val) {
			console.log(val);
			switch (val.type) {
				case 'edit':
					this.editNum(val.data);
					break;
				case 'save':
					this.saveNum(val.data);
					break;
				case 'view':
					this.preView();
					break;
				case 'print':
					this.printTemp();
					break;
				default:
			}
		},
		// 编辑
		editNum(val) {
			let obj = this.list[val._pageIndex - 1];
			obj.isEdit = true;
			this.$set(this.list, val._pageIndex - 1, obj);
		},
		// 保存
		saveNum(val) {
			// 调用修改接口
			updatePacking({ id: val.id, num: val.num }).then(() => {
				this.getList();
			});
		},
		// 输入框改变num
		inputChange(val) {
			this.list[val._pageIndex - 1][val.prop] = val[val.prop];
		},
		// 预览
		preView() {
			var hiprintTemplate = new hiprint.PrintTemplate({
				template: printTemplate,
			});
			this.$refs.preView.show(hiprintTemplate);
		},
		// 打印
		printTemp() {
			console.log('11');
			var printData = {};
			let hiprintTemplate = this.$print(
				undefined,
				printTemplate,
				printData,
				{},
				{
					styleHandler: () => {
						let css =
							'<link href="http://hiprint.io/Content/hiprint/css/print-lock.css" media="print" rel="stylesheet">';
						return css;
					},
				}
			);
			console.log(hiprintTemplate);
		},
	},
};
</script>