<!--
 * @Author: zhp
 * @Date: 2023-12-08 13:46:17
 * @LastEditTime: 2024-04-11 15:25:51
 * @LastEditors: zhp
 * @Description:
-->
<template>
  <el-drawer :visible.sync="visible" :show-close="true" :wrapper-closable="true" class="drawer" size="50%">
    <small-title slot="title" :no-padding="true" @close="handleClose">
      {{ isdetail ? '详情' : !dataForm.id ? '新增' : '编辑' }}
    </small-title>
    <div class="content">
      <!-- <div class="visual-part"> -->
      <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()"
        label-width="auto">
        <el-row :gutter="24">
          <el-col :span="8">
            <el-form-item label="供应商" prop="supplierId"
              :rules="[{ required: true, message: '供应商不能为空', trigger: 'change' }]">
              <el-select v-model="dataForm.supplierId" filterable :disabled="isdetail" placeholder="请选择供应商">
                <el-option v-for="dict in supplierList" :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="materialId"
              :rules="[{ required: true, message: '原料不能为空', trigger: 'change' }]">
              <el-select v-model="dataForm.materialId" filterable :disabled="isdetail" @change="getData"
                placeholder="请选择原料">
                <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="sampleCode"
              :rules="[{ required: true, message: '样品编号不能为空', trigger: 'blur' }]">
              <el-input v-model="dataForm.sampleCode" clearable :disabled="isdetail" placeholder="请输入样品编码" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="24">
          <el-col :span="8">
            <el-form-item label="取样人" prop="samplerId">
              <el-select v-model="dataForm.samplerId" filterable :disabled="isdetail" placeholder="请选择取样人">
                <el-option v-for="dict in workerList" :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="checkerId"
              :rules="[{ required: true, message: '检测人不能为空', trigger: 'change' }]">
              <el-select v-model="dataForm.checkerId" filterable :disabled="isdetail" placeholder="请选择检测人">
                <el-option v-for="dict in workerList" :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="checkTime"
              :rules="[{ required: true, message: '检测时间不能为空', trigger: 'change' }]">
              <el-date-picker value-format="timestamp" v-model="dataForm.checkTime" type="datetime"
                placeholder="选择检测时间">
              </el-date-picker>
            </el-form-item>
          </el-col>
        </el-row>

        <el-divider content-position="center">检测结果</el-divider>
        <el-row :gutter="24">
          <el-form-item label="外观合格" prop="appearance">
            <el-radio :disabled="isdetail" v-model="dataForm.appearance" :label="true">合格</el-radio>
            <el-radio :disabled="isdetail" v-model="dataForm.appearance" :label="false">不合格</el-radio>
          </el-form-item>
        </el-row>
        <el-row :gutter="24" v-for="(item,index) in ingredientList" :key="item.id">
          <el-col :span="4">
            <el-form-item label="成分">
              {{ item.checkName }}
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item :prop="'checkValueList.' + index + '.minCheckValue'" label="最小检测值"
              :rules="[{ required: true, message: '成分含量不能为空', trigger: 'blur' }]">
              <el-input oninput="value=value.replace(/[^\d]/g,'')" :disabled="isdetail"
                style="width: 90%;margin-right: 10px;" :max="item.maxValue" :min='item.minValue'
                v-model.number="dataForm.checkValueList[index].minCheckValue"
                @change="judgeMinValue(arguments[0],item.minValue,item.maxValue,index)"></el-input>
              <span v-if="dataForm.checkValueList[index].showIcon">
                <!-- <i class="el-icon-success"></i> -->
                <svg-icon v-if="dataForm.checkValueList[index].isMinStandard" icon-class="standards" />
                <svg-icon v-else icon-class="noStandards" />
              </span>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item :prop="'checkValueList.' + index + '.maxCheckValue'" label="最大检测值"
              :rules="[{ required: true, message: '成分含量不能为空', trigger: 'blur' }]">
              <el-input oninput="value=value.replace(/[^\d]/g,'')" :disabled="isdetail"
                style="width: 90%;margin-right: 10px;" :max="item.maxValue" :min='item.minValue'
                v-model.number="dataForm.checkValueList[index].maxCheckValue"
                @change="judgeMaxValue(arguments[0],item.minValue,item.maxValue,index)"></el-input>
              <span v-if="dataForm.checkValueList[index].showIcon">
                <!-- <i class="el-icon-success"></i> -->
                <svg-icon v-if="dataForm.checkValueList[index].isMaxStandard" icon-class="standards" />
                <svg-icon v-else icon-class="noStandards" />
              </span>
            </el-form-item>
          </el-col>
          <el-col :span="4">
            <el-form-item :prop="'checkValueList.' + index + '.minValue'" label="最小值">
              <el-input disabled style="width: 90%;margin-right: 10px;" v-model="item.minValue"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="4">
            <el-form-item :prop="'checkValueList.' + index + '.minValue'" label="最大值">
              <el-input disabled style="width: 90%;margin-right: 10px;" v-model="item.maxValue"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="24">
          <el-col :span="8">
            <el-form-item label="判断结果" prop="checkResult">
              <el-select :disabled="isdetail" v-model="dataForm.checkResult" placeholder="请选择">
                <el-option v-for="item in checkResultList" :key="item.id" :label="item.name" :value="item.id">
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="原料等级" prop="materialGrade">
              <el-select :disabled="isdetail" v-model="dataForm.materialGrade" placeholder="请选择">
                <el-option v-for="item in gradeList" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <el-form-item label="备注" prop="remark">
          <el-input @input="onInput" :disabled="isdetail" v-model="dataForm.remark" placeholder="请填写备注">
          </el-input>
        </el-form-item>
      </el-form>

      <!-- </div> -->
      <!-- <div class="attr-list" v-if="idAttrShow"> -->
      <!-- <small-title style="margin: 16px 0; padding-left: 8px" :no-padding="true">
          设备物料明细
        </small-title>

        <div v-if="!isdetail" class="action_btn">
          <template>
            <span style="display: inline-block;">
              <el-button type="text" @click="addNew()" icon="el-icon-plus">新增</el-button>
            </span>
          </template>
        </div>
        <base-table :table-props="tableProps" :page="listQuery.pageNo" :limit="listQuery.pageSize"
          :table-data="productAttrList">
          <method-btn v-if="!isdetail" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
            @clickBtn="handleClick" />
        </base-table>
        <pagination v-show="listQuery.total > 0" :total="listQuery.total" :page.sync="listQuery.pageNo"
          :limit.sync="listQuery.pageSize" :page-sizes="[5, 10, 15]" @pagination="getList" /> -->
      <!-- </div> -->
    </div>
    <div v-if="!isdetail" class="drawer-body__footer">
      <el-button style="" @click="goback()">取消</el-button>
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
    </div>
    <!-- <attr-add v-if="addOrUpdateVisible" ref="addOrUpdate" :product-id="dataForm.id" @refreshDataList="getList" /> -->
  </el-drawer>
</template>

<script>
// import basicAdd from '../../core/mixins/basic-add';
import {
  getQualityHotMaterial,
  updateQualityHotMaterial,
  createQualityHotMaterial,
  getHotMaterialAllList,
  getSupplierList,
  getWorkerList,
  getMaterialCheckList,
createQualityHotMaterialDet,
updateQualityHotMaterialDet,
getQualityHotMaterialDetList
} from '@/api/base/qualityHotMaterial';
import SmallTitle from './SmallTitle';
import { DICT_TYPE, getDictDatas } from "@/utils/dict";
import { create } from 'domain';

// import { parseTime } from '../../core/mixins/code-filter';
// import attrAdd from './attr-add';
// import {DICT_TYPE, getDictDatas} from "@/utils/dict";
// import { publicFormatter } from '@/utils/dict';
const topBtnConfig = [
  {
    type: 'add',
    btnName: 'btn.add'
  }
]

export default {
	// mixins: [basicAdd],
	components: { SmallTitle },
	data() {
		return {
			// tableBtn,
			// tableProps,
			// topBtnConfig,
			addOrUpdateVisible: false,
			urlOptions: {
			  isGetCode: false,
        // codeURL: getCode,
        createURL: createQualityHotMaterial,
        updateURL: updateQualityHotMaterial,
        infoURL: getQualityHotMaterial,
      },
      gradeList:[],
      checkResultList: [{
        id: true,
        name:'合格',
      },
        {
          id: false,
          name: '不合格',
        }
      ],
			listQuery: {
				pageSize: 10,
				pageNo: 1,
				total: 0,
      },
      materialList: [],
      workerList: [],
      supplierList:[],
      equipmentList: [],
      ingredientFlag:false,
      ingredientList:[],
			dataForm: {
        id: undefined,
        materialId:null,
        supplierId: null,
        sampleCode: null,
        samplerId: null,
        checkerId: null,
        checkTime: null,
        appearance: null,
        checkResult: null,
        materialGrade: null,
        checkValueList: [],
        checkResult: '',
        materialGrade: undefined,
        remark:undefined,
			},
			productAttrList: [],
			visible: false,
			isdetail: false,
			idAttrShow: false,
			dataRule: {
        // code: [{ required: true, message: "设备物料编码不能为空", trigger: "blur" }],
        name: [{ required: true, message: "设备物料名称不能为空", trigger: "blur" }],
        equipmentId: [{ required: true, message: "设备名称不能为空", trigger: "change" }],
        checkResult: [{ required: true, message: "判定结果不能为空", trigger: "change" }],

				// : [{ required: true, message: "产品类型不能为空", trigger: "change" }],
				// processTime: [{ required: true, message: "产线生产单位用时不能为空", trigger: "blur" }]
      }
		};
	},
  mounted() {
  },
  methods: {
    onInput() {
      this.$forceUpdate();
    },
    judgeMinValue(val, minValue, maxValue, index) {
      // console.log(cal);
      if (val >= minValue && val <= maxValue) {
        console.log(val)
        this.dataForm.checkValueList[index].showIcon = true
        this.dataForm.checkValueList[index].isMinStandard = true
      } else {
        this.dataForm.checkValueList[index].showIcon = true
        this.dataForm.checkValueList[index].isMinStandard = false
      }
    },
    judgeMaxValue(val, minValue, maxValue, index) {
      if (val >= minValue && val <= maxValue) {
        console.log(val)
        this.dataForm.checkValueList[index].showIcon = true
        this.dataForm.checkValueList[index].isMaxStandard = true
      } else {
        this.dataForm.checkValueList[index].showIcon = true
        this.dataForm.checkValueList[index].isMaxStandard = false
      }
    },
    handleClose() {
      this.ingredientList = []
      console.log(222222222);
    },
    dataFormSubmit() {
      this.$refs["dataForm"].validate((valid) => {
        if (!valid) {
          return false;
        }
        // 修改的提交
        if (this.dataForm.id) {
          let obj = {
            id: this.dataForm.id,
            materialId: this.dataForm.materialId,
            supplierId: this.dataForm.supplierId,
            sampleCode: this.dataForm.sampleCode,
            samplerId: this.dataForm.samplerId,
            checkerId: this.dataForm.checkerId,
            checkTime: this.dataForm.checkTime,
            appearance: this.dataForm.appearance,
            // checkResult: this.dataForm.checkResult,
            materialGrade: this.dataForm.materialGrade,
            // checkValueList: [],
            checkResult: this.dataForm.checkResult,
            materialGrade: this.dataForm.materialGrade,
            remark: this.dataForm.remark
          }
          this.urlOptions.updateURL(obj).then(response => {
            let array = []
            this.dataForm.checkValueList.forEach(ele => {
              array.push(this.updateDet({
                mainId: this.dataForm.id,
                id:ele.id,
                checkDetId: ele.checkDetId,
                minCheckValue: ele.minCheckValue,
                maxCheckValue: ele.maxCheckValue

              }))
            })
            Promise.all(array).then(res => {
              console.log(res)
              this.visible = false;
              this.$modal.msgSuccess("修改成功");
              this.$emit("refreshDataList");
              this.ingredientList = []
            }).catch(error => {
              // 如果任何一个请求失败，将会进入这个 catch 块
              console.log(error)
            })
          });
          return;
        }
        // 添加的提交
        let obj = {
          // id: this.dataForm.id,
          materialId: this.dataForm.materialId,
          supplierId: this.dataForm.supplierId,
          sampleCode: this.dataForm.sampleCode,
          samplerId: this.dataForm.samplerId,
          checkerId: this.dataForm.checkerId,
          checkTime: this.dataForm.checkTime,
          appearance: this.dataForm.appearance,
          checkResult: this.dataForm.checkResult,
          materialGrade: this.dataForm.materialGrade,
          // checkValueList: [],
          // checkResult: this.dataForm.checkResult,
          materialGrade: this.dataForm.materialGrade,
          remark:this.dataForm.remark
        }
        this.urlOptions.createURL(obj).then(response => {
          // this.idAttrShow = true;
          let array = []
          this.dataForm.checkValueList.forEach(ele => {
            array.push(this.createDet([
              {
                mainId: response.data,
                checkDetId: ele.checkDetId,
                minCheckValue: ele.minCheckValue,
                maxCheckValue: ele.maxCheckValue

              }
            ]))
          })
          Promise.all(array).then(res => {
            this.$modal.msgSuccess("新增成功");
            this.visible = false;
            this.ingredientList= []
            this.$emit("refreshDataList");
          }).catch(error => {
            // 如果任何一个请求失败，将会进入这个 catch 块
            console.log(error)
          })

          // this.dataForm.id = res.data
        });
      });
    },
    createDet(obj) {
      return createQualityHotMaterialDet(obj).then((response) => {
        return response.data
      })
    },
    updateDet(obj) {
      return updateQualityHotMaterialDet(obj).then((response) => {
        return response.data
      })
    },
    getData(val) {
      console.log(val);
      getMaterialCheckList({
        materialId:val
      }).then((res) => {
        console.log('aaaaaaaa', res.data);
        this.ingredientList = res.data
        this.ingredientFlag = true
        this.dataForm.checkValueList = res.data.map((ele) => {
          return {
            mainId: null,
            checkDetId: ele.checkDetId,
            minCheckValue:undefined,
            maxCheckValue: undefined,
            isMinStandard: true,
            isMaxStandard: true,
            showIcon:false,
          }
        })
        // this.$set()
        console.log(this.dataForm);
      })
    },
    // clickTopBtn(val) {
    //   if (val === 'add') {
    //     this.addNew()
    //   }
    // },
		initData() {
			this.productAttrList.splice(0);
			this.listQuery.total = 0;
    },
   async getDict() {
      getHotMaterialAllList().then((res) => {
        this.materialList = res.data
      })
      getWorkerList().then((res) => {
        this.workerList = res.data
      })
      getSupplierList().then(res => {
        this.supplierList = res.data
      })
     const res = await getDictDatas(this.DICT_TYPE.MATERIAL_GRADE)
      console.log('111', res)
      this.gradeList = res
    },
		// handleClick(raw) {
		// 	if (raw.type === 'delete') {
		// 		this.$confirm(
		// 			`确定对${
    //       raw.data.materialName
    //         ? '[物料名称为' + raw.data.materialName + ']'
    //         : '[序号为' + raw.data.materialName + ']'
		// 			}进行删除操作?`,
		// 			'提示',
		// 			{
		// 				confirmButtonText: '确定',
		// 				cancelButtonText: '取消',
		// 				type: 'warning',
		// 			}
		// 		)
		// 			.then(() => {
    //         deleteProcessEquMaterialBomDet(raw.data.id).then(({ data }) => {
		// 					this.$message({
		// 						message: '操作成功',
		// 						type: 'success',
		// 						duration: 1500,
		// 						onClose: () => {
		// 							this.getList();
		// 						},
		// 					});
		// 				});
		// 			})
		// 			.catch(() => {});
		// 	} else {
		// 		this.addNew(raw.data.id);
		// 	}
		// },
		// getList() {
		// 	// 获取产品属性列表
    //   processEquMaterialBomDetPage({
		// 		...this.listQuery,
		// 		bomId: this.dataForm.id,
		// 	}).then((response) => {
		// 		this.productAttrList = response.data.list;
		// 		this.listQuery.total = response.data.total;
		// 	});
		// },
		init(id, isdetail) {
      // this.initData()
      this.getDict()
      this.ingredientList = []
			this.isdetail = isdetail || false;
			this.dataForm.id = id || undefined;
			this.visible = true;
			// if (id) {
			// 	this.idAttrShow = true
			// } else {
			// 	this.idAttrShow = false
			// }

			this.$nextTick(() => {
				this.$refs['dataForm'].resetFields();
				if (this.dataForm.id) {
          // 获取产品详情
          let valueList = []
          this.urlOptions.infoURL(id).then(response => {
            this.dataForm = response.data
            getMaterialCheckList({
              materialId: response.data.materialId,
              mainId:id,
            }).then((res) => {
              console.log(res.data);
              let arr  = res.data
              valueList = arr.map((ele) => {
                // console.log(ele)
                return {
                  checkDetId: ele.checkDetId,
                  maxValue: ele.maxValue,
                  minValue: ele.minValue
                }
              })
              console.log(valueList);
              getQualityHotMaterialDetList({
                mainId: response.data.id,
                materialId: response.data.materialId,
              }).then((result) => {
                this.ingredientList = result.data.map((ele) => {
                  return {
                    checkName: ele.checkName,
                    id: ele.id,
                    checkDetId: ele.checkDetId,
                    minCheckValue: ele.minCheckValue,
                    maxCheckValue: ele.maxCheckValue,
                    maxValue:null,
                    minValue: null
                  }
                })
                console.log(this.ingredientList);
                this.dataForm.checkValueList = result.data.map((ele) => {
                  return {
                    mainId: ele.mainId,
                    id: ele.id,
                    checkDetId: ele.checkDetId,
                    minCheckValue: ele.minCheckValue,
                    maxCheckValue: ele.maxCheckValue,
                    isMinStandard: true,
                    isMaxStandard: true,
                    showIcon: false,
                  }
                })
                this.ingredientList.forEach((ele, i) => {
                  valueList.forEach((item, index) => {
                    if (ele.checkDetId == item.checkDetId) {
                      this.ingredientList[i].minValue = item.minValue
                      this.ingredientList[i].maxValue = item.maxValue
                    }
                  })
                })
                valueList.forEach((ele, index) => {
                 this.dataForm.checkValueList.forEach((item, i) => {
                   if (ele.checkDetId == item.checkDetId && item.minCheckValue >= ele.minValue && item.minCheckValue <= ele.maxValue) {
                     console.log(1111)
                     item.showIcon = true
                     item.isMinStandard = true
                   } else {
                     item.showIcon = true
                     item.isMinStandard = false
                   }
                   if (ele.checkDetId == item.checkDetId && item.maxCheckValue >= ele.minValue && item.maxCheckValue <= ele.maxValue) {
                     console.log(1111)
                     item.showIcon = true
                     item.isMaxStandard = true
                   } else {
                     item.showIcon = true
                     item.isMaxStandard = false
                   }
                  })
                })
              })
            });
            })
					// 获取产品属性列表
					// this.getList();
				} else {
					// if (this.urlOptions.isGetCode) {
          //   this.getCode()
          // }
				}
			});
		},
		goback() {
			this.$emit('refreshDataList');
      this.visible = false
      this.ingredientList = []
			// this.initData();
		},
		goEdit() {
			this.isdetail = false;
		},
		// 新增 / 修改
		// addNew(id) {
		// 	this.addOrUpdateVisible = true;
		// 	this.$nextTick(() => {
		// 		this.$refs.addOrUpdate.init(id,this.dataForm.id);
		// 	});
		// }
	}
};
</script>
<style scoped>
.drawer >>> .el-drawer {
	border-radius: 8px 0 0 8px;
	display: flex;
	flex-direction: column;
}

.drawer >>> .el-drawer__header {
	margin: 0;
	padding: 32px 32px 24px;
	border-bottom: 1px solid #dcdfe6;
}
.drawer >>> .el-drawer__body {
	flex: 1;
	height: 1px;
	display: flex;
	flex-direction: column;
}

.drawer >>> .content {
	padding: 30px 24px;
	flex: 1;
	display: flex;
	flex-direction: column;
	/* height: 100%; */
}

.drawer >>> .visual-part {
	flex: 1 auto;
	max-height: 76vh;
	overflow: hidden;
	overflow-y: scroll;
	padding-right: 10px; /* 调整滚动条样式 */
}

.drawer >>> .el-form,
.drawer >>> .attr-list {
	padding: 0 16px;
}

.drawer-body__footer {
	display: flex;
	justify-content: flex-end;
	padding: 18px;
}
.action_btn {
  float: right;
  margin: -40px 15px;
  font-size: 14px;
}
.add {
	color: #0b58ff;
}
</style>
