<template>
  <avue-crud
    :option="option"
    :table-loading="loading"
    :data="data"
    v-model="form"
    v-model:page="page"
    ref="crud"
    @row-del="rowDel"
    @search-change="searchChange"
    @search-reset="searchReset"
    @selection-change="selectionChange"
    @current-change="currentChange"
    @size-change="sizeChange"
    @refresh-change="refreshChange"
    @on-load="onLoad"
  >
    <template #menu-left>
      <el-button type="primary" @click="maintenanceClick">维护 </el-button>
      <el-button type="primary" @click="proofreadClick">校对 </el-button>
    </template>
    <template #menu-right> </template>
    <template #menu="scope"> </template>
    <template #produceStatus="scope">
      <el-tag v-if="scope.row.produceStatus == 1">未维护</el-tag>
      <el-tag v-else type="success">待校对</el-tag>
    </template>
    <template #jhzsReality-header="{ column }">
      <span style="color: red;margin-right:5px;">*</span>{{column.label}}
    </template>
    <template #jhzsReality="{ row }">
      <el-input :class="maintenanceArr.length > 0 
        && maintenanceArr.find(item => item.id == row.id) 
        && (maintenanceArr.find(item => item.id == row.id).jhzsReality === null || maintenanceArr.find(item => item.id == row.id).jhzsReality === '') && 'error'" v-model="row.jhzsReality"></el-input>
    </template>
    <template #zdljReality-header="{ column }">
      <span style="color: red;margin-right:5px;">*</span>{{column.label}}
    </template>
    <template #zdljReality="{ row }">
      <el-input :class="maintenanceArr.length > 0 
        && maintenanceArr.find(item => item.id == row.id) 
        && (maintenanceArr.find(item => item.id == row.id).zdljReality === null || maintenanceArr.find(item => item.id == row.id).zdljReality === '') && 'error'" v-model="row.zdljReality"></el-input>
    </template>
    <template #qqxReality-header="{ column }">
      <span style="color: red;margin-right:5px;">*</span>{{column.label}}
    </template>
    <template #qqxReality="{ row }">
      <el-input :class="maintenanceArr.length > 0 
        && maintenanceArr.find(item => item.id == row.id) 
        && (maintenanceArr.find(item => item.id == row.id).qqxReality === null || maintenanceArr.find(item => item.id == row.id).qqxReality === '') && 'error'" v-model="row.qqxReality"></el-input>
    </template>
    <template #produceTsReality-header="{ column }">
      <span  style="color: red;margin-right:5px;">*</span>{{column.label}}
    </template>
    <template #produceTsReality="{ row }">
      <el-input  :class="maintenanceArr.length > 0 
        && maintenanceArr.find(item => item.id == row.id) 
        && (maintenanceArr.find(item => item.id == row.id).produceTsReality === null || maintenanceArr.find(item => item.id == row.id).produceTsReality === '') && 'error'" v-model="row.produceTsReality"></el-input>
    </template>
    <template #growAbility-header="{ column }">
      <span style="color: red;margin-right:5px;">*</span>{{column.label}}
    </template>
    <template #growAbility="{ row }">
      <el-input :class="maintenanceArr.length > 0 
        && maintenanceArr.find(item => item.id == row.id) 
        && (maintenanceArr.find(item => item.id == row.id).growAbility === null || maintenanceArr.find(item => item.id == row.id).growAbility === '') && 'error'" v-model="row.growAbility"></el-input>
    </template>
  </avue-crud>
</template>
<script>
import {getList,maintenanceData,checkData} from "@/api/outsourcingManagement/performanceCalculate"
export default {
  data() {
    return {
      selectionList: [],
      loading:false,
      query:{},
      option: {
        height: "auto",
        calcHeight: 32,
        tip: false,
        // size: "medium",
        simplePage: true,
        searchShow: true,
        searchMenuSpan: 6,
        searchIcon: true,
        searchIndex: 3,
        tree: false,
        border: true,
        index: true,
        selection: false,
        viewBtn: false,
        delBtn: false,
        addBtn: false,
        editBtn: false,
        editBtnText: "修改",
        viewBtnIcon: " ",
        delBtnIcon: " ",
        editBtnIcon: " ",
        viewBtnText: "详情",
        labelWidth: 120,
        menuWidth: 180,
        dialogWidth: 640,
        dialogClickModal: false,
        searchEnter: true,
        excelBtn: false,
        filterBtn: true,
        searchShowBtn: false,
        columnSort: true,
        excelBtn: true,
        columnSort: true,
        showOverflowTooltip: true,
        menu: false,
        searchLabelPosition: "left",
        searchLabelPosition: "left",
        searchGutter: 24,
        searchSpan: 6,
        menuAlign: "left",
        gridBtn: false,
        searchMenuPosition: "right",
        addBtnIcon: " ",
        viewBtnIcon: " ",
        delBtnIcon: " ",
        editBtnIcon: " ",
        align: "center",
        column: [
          {
            label: "工艺能力",
            prop: "caName",
            sortable: true,
            filter: true,
            span: 24,
            search: false,
            width: 130,
          },
          {
            label: "厂家代码",
            prop: "oemCode",
            // bind: "bsOemCustomer.ocCode",
            search: false,
            sortable: true,
            filter: true,
            span: 24,
          },
          {
            label: "厂家名称",
            prop: "oemName",
            // bind: "bsOemCustomer.ocName",
            search: false,
            sortable: true,
            filter: true,
            span: 24,
          },
          {
            label: "计划准时完成",
            children: [
              {
                label: "目标值(%)",
                prop: "jhzsTarget",
                search: false,
                sortable: true,
                filter: true,
                span: 24,
              },
              {
                label: "实际值(%)",
                prop: "jhzsReality",
                search: false,
                sortable: true,
                filter: true,
                span: 24,
                // cell: true,
                // rules: [{ required: true, message: "请输入姓名", trigger: "blur" }],
              },
            ],
          },
          {
            label: "重点零件完成率",
            children: [
              {
                label: "目标值(%)",
                prop: "zdljTarget",
                search: false,
                sortable: true,
                filter: true,
                span: 24,
              },
              {
                label: "实际值(%)",
                prop: "zdljReality",
                search: false,
                sortable: true,
                filter: true,
                span: 24,
                // cell: true,
                // rules: [{ required: true, message: "请输入姓名", trigger: "blur" }],
              },
            ],
          },
          {
            label: "清欠项",
            children: [
              {
                label: "目标值",
                prop: "qqxTarget",
                search: false,
                sortable: true,
                filter: true,
                span: 24,
              },
              {
                label: "实际值",
                prop: "qqxReality",
                search: false,
                sortable: true,
                filter: true,
                span: 24,
                // cell: true,
                // rules: [{ required: true, message: "请输入姓名", trigger: "blur" }],
              },
            ],
          },
          {
            label: "客户投诉(扣分项)",
            children: [
              {
                label: "目标值",
                prop: "produceTsTarget",
                search: false,
                sortable: true,
                filter: true,
                span: 24,
              },
              {
                label: "实际值",
                prop: "produceTsReality",
                search: false,
                sortable: true,
                filter: true,
                span: 24,
                // cell: true,
                // rules: [{ required: true, message: "请输入姓名", trigger: "blur" }],
              },
            ],
          },
          {
            label: "发展能力",
            children: [
              {
                label: "加分",
                prop: "growAbility",
                search: false,
                sortable: true,
                filter: true,
                span: 24,
                // cell: true,
                // rules: [{ required: true, message: "请输入姓名", trigger: "blur" }],
              },
            ],
          },
          {
            label: "状态",
            prop: "produceStatus",
            search: false,
            sortable: true,
            filter: true,
            span: 24,
          },
        ],
      },
      maintenanceArr:[],
      otherData:[],
      form: {},
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 0,
      },
    };
  },
  methods: {
    calcData(a,b){
      // 需要比较的字段
      const fieldsToCheck = ['jhzsReality','zdljReality','qqxReality', 'produceTsReality', 'growAbility'];

      const c = b.filter((itemB, index) => {
        // 策略 A: 如果两个数组顺序严格一致，直接使用索引匹配 (最快)
        const itemA = a[index]; 
        
        // 策略 B: 如果顺序可能不一致，需要通过 id 查找 (更稳健，但如果有重复 ID 会匹配到第一个)
        // const itemA = a.find(item => item.id === itemB.id);

        if (!itemA) return false; // a 中找不到对应的项，视情况决定是否保留，这里暂不保留

        // 检查指定字段是否有任何一个不相等
        const isDifferent = fieldsToCheck.some(key => {
          return itemA[key] !== itemB[key];
        });

        return isDifferent;
      });
      return c
    },
    maintenanceClick() {
      this.maintenanceArr = this.calcData(this.otherData,this.data)
      
      let jhzhError = this.maintenanceArr.find(item =>  item.jhzsReality === null)
      let zdljError = this.maintenanceArr.find(item => item.zdljReality === null)
      let qqxError = this.maintenanceArr.find(item =>  item.qqxReality === null)
      let produceError = this.maintenanceArr.find(item =>  item.produceTsReality === null)
      let growError = this.maintenanceArr.find(item =>  item.growAbility === null)
      
      if(jhzhError || zdljError || qqxError || produceError || growError){
        this.$message.error('请填写表格中红框数据')
        return
      }
      maintenanceData({type:"produce",oemMeritsEntities:this.maintenanceArr}).then(res =>{
        if(res.data.code === 200){
          this.$message.success('维护成功')
          this.onLoad()
        }
      })
      
    },
    proofreadClick() {
      let checkArr = this.data.filter(item => item.produceStatus == 2)
      checkData({
        oemMeritsEntities:checkArr,
        type:'produce'
      }).then(res =>{
        if(res.data.code === 200){
          this.$message.success('校对成功')
          this.onLoad()
        }
      })
      //   const dataList = this.$refs.myTable.getTableData().tableData;
      //   this.$ajax
      //     .post('oemMerits/proofread', {
      //       dataList,
      //       status: 3,
      //       type: 'produce'
      //     })
      //     .then((res) => {
      //       if (res.code === 0) {
      //         this.$message.success('校对成功');
      //         this.queryTable();
      //       }
      //     });
    },
    handleDelete() {
      if (this.selectionList.length === 0) {
        this.$message.warning("请选择至少一条数据");
        return;
      }
      this.$confirm("确定将选择数据删除?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      }).then(() => {});
    },
    // 多选
    selectionChange(list) {
      this.selectionList = list;
    },
    onLoad() {
      this.loading = true;
      getList({
        current:this.page.currentPage,
        size:this.page.pageSize,
        produceStatusList:"1,2",
        statusList:"1,2",
        ...this.query,
      }).then((res) => {
        this.data = res.data.data.records
        this.otherData = JSON.parse(JSON.stringify(res.data.data.records));
        this.page.total = res.data.data.total;
        this.loading = false;
      })
        
      // this.data = [
      //   {
      //     $cellEdit: true,
      //     bsOemCustomer: {
      //       abbreviation: "L076",
      //       address: "aaa",
      //       codeAndName: "L076/L076",
      //       contactMan: "aaa",
      //       contactPhone: "aaa",
      //       craftAbility:
      //         "镀银、挂镀银、喷砂、涂色标、铜合金化学镀镍、电镀镍、DL零件包装",
      //       curStatus: 0,
      //       curStatusText: "正常供货",
      //       email: "aaa",
      //       keyValue: 21,
      //       limitType: 0,
      //       ocCode: "L076",
      //       ocId: 21,
      //       ocName: "L076",
      //       oemPassword: null,
      //       partCodeYesOrNo: false,
      //       qualification: 10,
      //       qualificationTitle: null,
      //       region: "陕西省",
      //       updateTime: "2023-04-14 18:33:49",
      //     },
      //     createMan: {
      //       userId: 541,
      //       userName: "崔殿龙",
      //     },
      //     createTime: "2023-11-10 18:06:40",
      //     keyValue: 1,
      //     oaaId: 1,
      //     plate: "222",
      //   },
      //   {
      //     $cellEdit: true,
      //     bsOemCustomer: {
      //       abbreviation: "L120",
      //       address: "aaa",
      //       codeAndName: "L120/L120",
      //       contactMan: "aaa",
      //       contactPhone: "aaa",
      //       craftAbility: "不锈钢涂福斯润滑剂、DL零件包装、",
      //       curStatus: 0,
      //       curStatusText: "正常供货",
      //       email: "aaa",
      //       keyValue: 2,
      //       limitType: 0,
      //       ocCode: "L120",
      //       ocId: 2,
      //       ocName: "L120",
      //       oemPassword: null,
      //       partCodeYesOrNo: false,
      //       qualification: 0,
      //       qualificationTitle: "民品&普军",
      //       region: "江苏省",
      //       updateTime: "2023-04-14 18:33:49",
      //     },
      //     createMan: {
      //       userId: 541,
      //       userName: "崔殿龙",
      //     },
      //     createTime: "2023-11-10 18:06:40",
      //     keyValue: 4,
      //     oaaId: 4,
      //     plate: "222",
      //   },
      //   {
      //     $cellEdit: true,
      //     bsOemCustomer: {
      //       abbreviation: "L070",
      //       address: "aaa",
      //       codeAndName: "L070/L070",
      //       contactMan: "aaa",
      //       contactPhone: "aaa",
      //       craftAbility: "滚镀金或振镀金、局部镀厚金、闪镀金、镀铂金、局部退火",
      //       curStatus: 0,
      //       curStatusText: "正常供货",
      //       email: "aaa",
      //       keyValue: 5,
      //       limitType: 0,
      //       ocCode: "L070",
      //       ocId: 5,
      //       ocName: "L070",
      //       oemPassword: null,
      //       partCodeYesOrNo: false,
      //       qualification: 10,
      //       qualificationTitle: null,
      //       region: "江苏省",
      //       updateTime: "2023-04-14 18:33:49",
      //     },
      //     createMan: {
      //       userId: 541,
      //       userName: "崔殿龙",
      //     },
      //     createTime: "2023-12-06 17:24:48",
      //     keyValue: 21,
      //     oaaId: 21,
      //     plate: "222",
      //   },
      // ];
      // this.page.total = this.data.length;
      // this.loading = false;
      // setTimeout(() => {
      //   this.selectionClear();
      // }, 500);
    },
  },
};
</script>
<style lang="scss" scoped>
.error {
  ::v-deep .el-input__wrapper {
  //   background: red;
  // border:none
    border:1px solid #ff0000 !important;
  }
}
</style>
