<!--
 * @Author: zwq
 * @Date: 2021-11-18 14:16:25
 * @LastEditors: zwq
 * @LastEditTime: 2024-10-14 09:26:53
 * @Description:
-->
<template>
	<el-form
		:model="dataForm"
		:rules="dataRule"
		ref="dataForm"
		@keyup.enter.native="dataFormSubmit()"
		label-width="80px"
		label-position="top">
		<el-row :gutter="20">
			<el-col :span="8">
				<el-form-item label="物料名称" prop="materialId">
					<el-select
						v-model="dataForm.materialId"
						placeholder="请选择物料"
						clearable
						filterable
						@change="setCode"
						style="width: 100%">
						<el-option
							v-for="dict in materialList"
							:key="dict.id"
							:label="dict.name"
							:value="dict.id" />
					</el-select>
				</el-form-item>
			</el-col>
			<el-col :span="8">
				<el-form-item label="物料编码" prop="materialCode">
					<el-input
						v-model="dataForm.materialCode"
						clearable
						disabled
						placeholder="请输入物料编码" />
				</el-form-item>
			</el-col>
			<el-col :span="8">
				<el-form-item label="物料批次" prop="materialDateId">
					<el-select
						v-model="dataForm.materialDateId"
						clearable
						filterable
						placeholder="请选择物料批次"
						style="width: 100%">
						<el-option
							v-for="dict in materialDateList"
							:key="dict.id"
							:label="dict.code"
							:value="dict.id" />
					</el-select>
				</el-form-item>
			</el-col>
		</el-row>
		<el-row :gutter="20">
			<el-col :span="8">
				<el-form-item label="使用设备" prop="equipmentId">
					<el-select
						v-model="dataForm.equipmentId"
						clearable
						filterable
						placeholder="请选择使用设备"
						style="width: 100%">
						<el-option
							v-for="dict in eqList"
							:key="dict.id"
							:label="dict.name"
							:value="dict.id" />
					</el-select>
				</el-form-item>
			</el-col>
			<el-col :span="8">
				<el-form-item label="使用时间" prop="useTime">
					<el-date-picker
						v-model="dataForm.useTime"
						type="datetime"
						format="yyyy-MM-dd HH:mm:ss"
						value-format="timestamp"
						placeholder="选择日期时间" />
				</el-form-item>
			</el-col>
			<el-col :span="8">
				<el-form-item label="操作员" prop="userNames">
					<el-select
						v-model="dataForm.userNames"
						clearable
						filterable
						multiple
						placeholder="请选择操作员"
						style="width: 100%">
						<el-option
							v-for="dict in workersList"
							:key="dict.id"
							:label="dict.nickname"
							:value="dict.nickname" />
					</el-select>
				</el-form-item>
			</el-col>
		</el-row>
		<el-row :gutter="20">
			<el-col :span="8">
				<el-form-item label="使用数量" prop="num">
					<el-input-number
						v-model="dataForm.num"
						clearable
						controls-position="right"
						placeholder="请输入使用数量"
						style="width: 100%" />
				</el-form-item>
			</el-col>
			<el-col :span="8">
				<el-form-item label="数据来源" prop="source">
					<el-select
						v-model="dataForm.source"
						clearable
						placeholder="请选择数据来源">
						<el-option
							v-for="dict in this.dataSourceList"
							:key="dict.id"
							:label="dict.name"
							:value="dict.id" />
					</el-select>
				</el-form-item>
			</el-col>
			<el-col :span="8">
				<el-form-item label="备注" prop="remark">
					<el-input
						v-model="dataForm.remark"
						clearable
						placeholder="请输入备注" />
				</el-form-item>
			</el-col>
		</el-row>
	</el-form>
</template>

<script>
import basicAdd from '@/mixins/basic-add';
import {
	createMaterialLog,
	updateMaterialLog,
	getMaterialLog,
	getEqListAll,
} from '@/api/base/materialUseLog';
import { getMaterialTree,getMaterialList } from '@/api/base/material';
import { getMaterDateList } from '@/api/base/materialDate';
import { listSimpleUsers } from '@/api/system/user';

export default {
	mixins: [basicAdd],
	data() {
		return {
			urlOptions: {
				createURL: createMaterialLog,
				updateURL: updateMaterialLog,
				infoURL: getMaterialLog,
			},
			dataForm: {
				id: undefined,
				materialId: undefined,
				materialCode: undefined,
				materialDateId: undefined,
				equipmentId: undefined,
				userName: undefined,
				userNames: [],
				useTime: new Date().getTime(),
				address: undefined,
				num: 0,
				source: undefined,
				remark: undefined,
			},
			dataSourceList: [
				{
					id: 1,
					name: '手动',
				},
				{
					id: 2,
					name: 'PDA',
				},
			],
			materialList: [],
			materialDateList: [],
			eqList: [],
			workersList: [],
			dataRule: {
				materialId: [
					{ required: true, message: '物料不能为空', trigger: 'blur' },
				],
				useTime: [
					{ required: true, message: '使用时间不能为空', trigger: 'blur' },
				],
				userNames: [
					{ required: true, message: '操作员不能为空', trigger: 'blur' },
				],
				num: [{ required: true, message: '使用数量不能为空', trigger: 'blur' }],
			},
		};
	},
	mounted() {
		this.getDictData();
	},
	methods: {
		async getDictData() {
			const materRes = await getMaterialTree(); //
      let typeId = materRes.data.find(item=>item.product === 0).id
      const listQuery= {
        typeId:typeId
      }
			const materData = await getMaterialList(listQuery);
			this.materialList = [];
			this.materialList = materData.data;
			const dateRes = await getMaterDateList();
			this.materialDateList = dateRes.data;
			const eqRes = await getEqListAll();
			this.eqList = eqRes.data;
			const workerRes = await listSimpleUsers();
			this.workersList = workerRes.data;
		},
		// 表单提交
		dataFormSubmit() {
			this.dataForm.userName = this.dataForm.userNames.join(',');
			this.$refs['dataForm'].validate((valid) => {
				if (!valid) {
					return false;
				}
				// 修改的提交
				if (this.dataForm.id) {
					this.urlOptions.updateURL(this.dataForm).then((response) => {
						this.$modal.msgSuccess('修改成功');
						this.visible = false;
						this.$emit('refreshDataList');
					});
					return;
				}
				// 添加的提交
				this.urlOptions.createURL(this.dataForm).then((response) => {
					this.$modal.msgSuccess('新增成功');
					this.visible = false;
					this.$emit('refreshDataList');
				});
			});
		},
		init(id) {
			this.dataForm.id = id || undefined;
			this.visible = true;

			this.$nextTick(() => {
				this.$refs['dataForm'].resetFields();
				if (this.dataForm.id) {
					this.urlOptions.infoURL(id).then((response) => {
						this.dataForm.id = response.data.id;
						this.dataForm.materialCode = response.data.materialCode;
						this.dataForm.materialId = response.data.materialId;
						this.dataForm.materialDateId = response.data.materialDateId;
						this.dataForm.equipmentId = response.data.equipmentId;
						this.dataForm.useTime = response.data.useTime;
						// this.dataForm.userName = response.data.userName
						this.dataForm.num = response.data.num;
						this.dataForm.source = response.data.source;
						this.dataForm.remark = response.data.remark;
						this.dataForm.userNames = response.data.userName.split(',');
					});
				} else {
				}
			});
		},
		setCode() {
			const tempMaterial = this.materialList.filter((item) => {
				return item.id === this.dataForm.materialId;
			});
			this.dataForm.materialCode = tempMaterial[0].code;
			getMaterDateList({ materialId: this.dataForm.materialId }).then((res) => {
				this.materialDateList = res.data;
			});
		},
	},
};
</script>