<template>
  <div>
    <div class="switch">
      <div class="switch_left">
        <ul>
          <li
            v-for="item in tabOptions"
            :key="item.key"
            :class="{ active: activeComp == item.key }"
            @click="changeActive(item)"
          >
            {{ item.name }}
          </li>
        </ul>
      </div>
    </div>
    <div v-show="activeComp == 'main'">
      <el-form ref="form" :model="form" :rules="rules" label-width="130px">
        <headerTitle title="收货信息"></headerTitle>
        <el-row>
          <el-col :span="12">
            <el-form-item
              label="供应商名称："
              prop="supplierName"
              style="margin-bottom: 16px"
            >
              {{ form.supplierName }}
            </el-form-item>
            <el-form-item
              label="供应商联系人："
              prop="linkName"
              style="margin-bottom: 16px"
            >
              {{ form.linkName }}
            </el-form-item>
            <el-form-item
              label="供应商电话："
              prop="linkPhone"
              style="margin-bottom: 16px"
            >
              {{ form.linkPhone }}
            </el-form-item>

            <!-- <el-form-item
            label="客户地址："
            prop="partaAddress"
            style="margin-bottom: 16px"
          >
            {{ form.receiveAddress }}
          </el-form-item> -->
            <el-form-item
              label="车牌号："
              prop="carNo"
              style="margin-bottom: 16px"
            >
              {{ form.carNo }}
            </el-form-item>
            <el-form-item prop="receiveDate" label="收货日期：">
              {{ form.receiveDate }}
            </el-form-item>
            <el-form-item
              label="附件："
              prop="receiveFiles"
              style="margin-bottom: 16px"
            >
              <fileMain v-model="form.receiveFiles" type="view"></fileMain>
              <!--              <div v-if="detailData.sendFiles && detailData.sendFiles?.length">-->
              <!--                <el-link-->
              <!--                  v-for="link in detailData.sendFiles"-->
              <!--                  :key="link.id"-->
              <!--                  type="primary"-->
              <!--                  :underline="false"-->
              <!--                  @click="downloadFile(link)"-->
              <!--                >-->
              <!--                  {{ link.name }}</el-link-->
              <!--                >-->
              <!--              </div>-->
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <!--            <el-form-item-->
            <!--              label="采购单类型："-->
            <!--              prop="receiveTypeName"-->
            <!--              style="margin-bottom: 16px"-->
            <!--            >-->
            <!--              {{ form.receiveTypeName }}-->
            <!--            </el-form-item>-->

            <el-form-item
              label="收货单编码："
              prop="receiveNo"
              style="margin-bottom: 16px"
            >
              {{ form.receiveNo }}
            </el-form-item>
            <el-form-item prop="orderNo" label="订单编码：">
              {{ form.orderNo }}
            </el-form-item>
            <el-form-item prop="outsourceSendCode" label="委外发货单编码：">
              {{ form.outsourceSendCode }}
            </el-form-item>
            <el-form-item prop="pricingWay" label="计价方式：">
              {{ form.pricingWay == 1 ? '按数量计费' : '按重量计费' }}
            </el-form-item>

            <el-form-item
              label="制单人："
              prop="makerName"
              style="margin-bottom: 16px"
            >
              {{ form.makerName }}
            </el-form-item>
            <el-form-item
              label="审核状态："
              prop="reviewStatus"
              style="margin-bottom: 16px"
            >
              {{ reviewStatusEnum[form.reviewStatus]?.label }}
            </el-form-item>
            <!-- <el-form-item prop="replied" label="是否回执：">
            {{ form.replied == 1 ? '是' : '否' }}
          </el-form-item> -->
          </el-col>
        </el-row>
      </el-form>

      <headerTitle title="产品清单"></headerTitle>
      <ele-pro-table
        ref="table"
        :needPage="false"
        :columns="columns"
        :toolkit="[]"
        :datasource="detailData.productList"
        row-key="id"
      >
        <!-- <template v-slot:toolbar>
        <div class="headbox">
        <span class="amount">总计：{{detailData.totalAmount}}元</span>
        <span class="amount">应付金额：{{detailData.payAmount}}元</span>
      </div>
      </template> -->
        <template v-slot:technicalDrawings="{ row }">
          <fileMain v-model="row.receiveFiles" type="view"></fileMain>
          <!--          <div v-if="row.technicalDrawings && row.technicalDrawings?.length">-->
          <!--            <el-link-->
          <!--              v-for="link in row.technicalDrawings"-->
          <!--              :key="link.id"-->
          <!--              type="primary"-->
          <!--              :underline="false"-->
          <!--              @click="downloadFile(link)"-->
          <!--            >-->
          <!--              {{ link.name }}</el-link-->
          <!--            >-->
          <!--          </div>-->
        </template>
      </ele-pro-table>
    </div>
    <!-- <detailDialog
      v-if="activeComp == 'inoutBoundView'"
      :businessId="form.receiveNo"
      type="sourceBizNo"
      ref="detailDialog"
      :taskDefinitionKey="taskDefinitionKey"
    ></detailDialog> -->
    <!-- <procurementWarehousing
      v-if="activeComp == 'inoutBoundEdit'"
      :businessId="form.receiveNo"
      type="sourceBizNo"
      :infoData="form"
      ref="procurementWarehousing"
      :taskDefinitionKey="taskDefinitionKey"
    >
    </procurementWarehousing> -->
    <!-- <keep-alive>
    <add
      ref="add"
      v-if="activeComp == 'inoutBound'"
      :inboundType="form.sourceType"
      type="sourceBizNo"
      @success="success"
    ></add>
    </keep-alive> -->
    <keep-alive>
      <add
        ref="add"
        v-if="activeComp == 'inoutBound'"
        :form="form"
        :sourceBizNo="form.receiveNo"
        :saleProductList="form.productList"
        :bizType="2"
        :detailProductList="detailData.productList"
      ></add>
    </keep-alive>
    <detailDialog
      :bizType="2"
      v-if="activeComp == 'inoutBoundView'"
      :businessId="form.receiveNo"
      :isUpload="isUpload"
      ref="detailDialog"
    ></detailDialog>
    <procurementWarehousing
      v-if="activeComp == 'inoutBoundEdit'"
      :businessId="form.receiveNo"
      :qualityInspectionItems="qualityInspectionItems"
      ref="procurementWarehousing"
    >
    </procurementWarehousing>
  </div>
</template>

<script>
  import { getFile } from '@/api/system/file';
  import dictMixins from '@/mixins/dictMixins';
  import { reviewStatusEnum } from '@/enum/dict';
  import { getReceiveSaleOrderrecordDetail } from '@/api/bpm/components/purchasingManage/purchaseorderreceive';
  // import detailDialog from '@/views/bpm/handleTask/components/inoutBound/detailDialog.vue';
  import detailDialog from '@/views/bpm/stockManagement/details.vue';
  // import procurementWarehousing from '@/views/bpm/handleTask/components/purchaseOrder/invoice/procurementWarehousing';
  import procurementWarehousing from '@/views/bpm/stockManagement/quality.vue';

  // import add from './procurementStorage.vue';
  import add from '@/views/bpm/stockManagement/storage.vue';
  // import { getOutInBySourceBizNoOrError } from '@/api/classifyManage';
  import storageApi from '@/api/warehouseManagement';
  import fileMain from '@/components/addDoc/index.vue';

  export default {
    props: {
      businessId: {
        default: ''
      },
      taskId: {
        default: ''
      },
      taskDefinitionKey: {
        default: ''
      }
    },
    components: {
      fileMain,
      detailDialog,
      procurementWarehousing,
      add
    },
    mixins: [dictMixins],
    data() {
      return {
        qualityInspectionItems: [
          'materielDesignation',
          'clientCode',
          'engrave',
          'weight',
          'result'
        ],
        isUpload: false,
        activeComp: 'main',
        tabOptions: [{ key: 'main', name: '收货单详情' }],
        reviewStatusEnum,
        visible: false,
        detailId: '',
        title: '详情',
        row: {},
        activeName: 'base',
        form: {
          orderFiles: [{ name: '222' }]
        },
        rules: {},
        detailData: {},
        columns: [
          {
            width: 45,
            type: 'index',
            columnKey: 'index',
            align: 'center',
            fixed: 'left'
          },
          {
            width: 200,
            prop: 'productName',
            label: '名称',
            slot: 'productName',
            align: 'center'
          },
          {
            width: 120,
            prop: 'productCode',
            label: '编码',
            slot: 'productCode',
            align: 'center'
          },
          {
            width: 200,
            prop: 'productCategoryName',
            label: '类型',
            slot: 'productCategoryName',
            align: 'center'
          },
          {
            width: 160,
            prop: 'productBrand',
            label: '牌号',
            slot: 'productBrand',
            align: 'center'
          },
          {
            width: 120,
            prop: 'modelType',
            label: '型号',
            slot: 'modelType',
            align: 'center'
          },
          {
            width: 120,
            prop: 'specification',
            label: '规格',
            slot: 'specification',
            align: 'center'
          },
          {
            width: 200,
            prop: 'warehouseName',
            label: '仓库名称',
            slot: 'warehouseName',
            align: 'center'
          },
          {
            width: 80,
            prop: 'totalCount',
            label: '进货数量',
            slot: 'totalCount',
            align: 'center'
          },
          {
            width: 120,
            prop: 'orderTotalCount',
            label: '总数量',
            slot: 'orderTotalCount',
            align: 'center'
          },
          {
            width: 80,
            prop: 'measuringUnit',
            label: '计量单位',
            slot: 'measuringUnit',
            align: 'center'
          },
          {
            width: 120,
            prop: 'singleWeight',
            label: '单重',
            slot: 'singleWeight',
            align: 'center'
          },
          {
            width: 200,
            prop: 'sendTotalWeight',
            label: '发货总重',
            slot: 'sendTotalWeight',
            align: 'center',
            headerSlot: 'headerTotalCount'
          },
          {
            width: 100,
            prop: 'receiveTotalWeight',
            label: '收货总重',
            slot: 'receiveTotalWeight',
            align: 'center'
          },
          {
            width: 100,
            prop: 'increaseTotalWeight',
            label: '增重重量',
            slot: 'increaseTotalWeight',
            align: 'center'
          },
          {
            width: 100,
            prop: 'weightUnit',
            label: '重量单位',
            slot: 'weightUnit',
            align: 'center'
          },
          {
            width: 160,
            prop: 'pricingWay',
            label: '计价方式',
            slot: 'pricingWay',
            align: 'center',
            formatter: (row, column) => {
              return row.pricingWay == 1 ? '数量' : row.pricingWay == 2 ? '重量':'';
            }
          },
          {
            width: 160,
            prop: 'singlePrice',
            label: '单价',
            slot: 'singlePrice',
            align: 'center'
          },
          {
            width: 120,
            prop: 'taxRate',
            label: '税率',
            slot: 'taxRate',
            align: 'center',
          },
          {
            width: 160,
            prop: 'discountSinglePrice',
            label: '折后单价',
            slot: 'discountSinglePrice',
            align: 'center'
          },
          {
            width: 120,
            prop: 'totalPrice',
            label: '合计',
            slot: 'totalPrice',
            align: 'center'
          },
          {
            width: 160,
            prop: 'discountTotalPrice',
            label: '折后合计',
            slot: 'discountTotalPrice',
            align: 'center'
          },

          {
            width: 80,
            prop: 'deliveryDays',
            label: '交期(天)',
            slot: 'deliveryDays',
            align: 'center'
          },
          {
            width: 160,
            prop: 'deliveryDeadline',
            label: '交期截止日期',
            slot: 'deliveryDeadline',
            align: 'center'
          },
          {
            width: 200,
            prop: 'guaranteePeriod',
            label: '质保期',
            slot: 'guaranteePeriod',
            align: 'center'
          },
          {
            width: 160,
            prop: 'guaranteePeriodDeadline',
            label: '质保截止日期',
            slot: 'guaranteePeriodDeadline',
            align: 'center'
          },
          {
            width: 130,
            prop: 'technicalAnswerName',
            label: '技术答疑人',
            slot: 'technicalAnswerName',
            align: 'center'
          },
          {
            width: 220,
            prop: 'technicalParams',
            label: '技术参数',
            slot: 'technicalParams',
            align: 'center'
          },
          {
            width: 240,
            prop: 'technicalDrawings',
            label: '技术图纸',
            slot: 'technicalDrawings',
            align: 'center'
          },
          {
            width: 220,
            prop: 'remark',
            label: '备注',
            slot: 'remark',
            align: 'center'
          }
        ]
      };
    },
    async created() {
      await this.getDetailData(this.businessId);
      // getOutInBySourceBizNoOrError(this.form.receiveNo)
      storageApi
        .getInfoBySourceBizNo(this.form.receiveNo)
        .then((res) => {
          console.log('-----------!_-------!_');
          console.log(res);
          if (JSON.stringify(res) == '{}') {
            // 未查询到相关信息(未入库)
            if (this.taskDefinitionKey == 'storeManagerApprove') {
              this.tabOptions.push({ key: 'inoutBound', name: '入库单' });
              this.activeComp = 'inoutBound';
              this.$emit('activeCompChange', 'inoutBound');
              // this.$nextTick(() => {
              //   this.$refs.add.pickerSuccess(this.form);
              // });
            }
          } else {
            if (this.taskDefinitionKey == 'qualityInspection') {
              this.tabOptions.push({
                key: 'inoutBoundEdit',
                name: '入库单详情(已入库)'
              });
              this.activeComp = 'inoutBoundEdit';
            } else if (this.taskDefinitionKey == 'qualityInspectionFeedback') {
              this.tabOptions.push({
                key: 'inoutBoundView',
                name: '入库单详情'
              });
              this.isUpload = true;
              this.activeComp = 'inoutBoundView';
            } else {
              this.tabOptions.push({
                key: 'inoutBoundView',
                name: '入库单详情'
              });
              this.isUpload = false;
              this.activeComp = 'inoutBoundView';
            }
            // if (
            //   ![
            //     'starter',
            //     'deptLeaderApprove',
            //     'storeManagerApprove',
            //     'qualityInspection'
            //   ].includes(this.taskDefinitionKey)
            // ) {
            //   this.tabOptions.push({
            //     key: 'inoutBoundView',
            //     name: '入库单详情'
            //   });
            //   this.isUpload = true;
            //   this.activeComp = 'inoutBoundView';
            // } else {
            //   this.tabOptions.push({
            //     key: 'inoutBoundEdit',
            //     name: '入库单详情(已入库)'
            //   });
            //   this.activeComp = 'inoutBoundEdit';
            // }
          }
        })
        .catch(() => {
          this.$message.error('获取入库单详情失败');
        });
    },

    methods: {
      changeActive(item) {
        console.log(item, '切换！！！！！！！！！！！！！！！！！！！！');
        this.activeComp = item.key;
        this.$emit('activeCompChange', item.key);
        // if (
        //   this.taskDefinitionKey == 'storeManagerApprove' &&
        //   item.key == 'inoutBound'
        // ) {
        //   this.$nextTick(() => {
        //     this.$refs.add.pickerSuccess(this.form);
        //   });
        // }
      },
      save(data) {
        this.$refs.add.handleSave(data);
      },
      success() {
        // console.log(this.$parent,'this.$parent')
        // this.$parent.handleClose()

        this.$emit('handleClose');
      },
      downloadFile(file) {
        getFile({ objectName: file.storePath }, file.name);
      },
      // 判断质检状态是否全部已检
      allListChecked() {
        return (
          this.$refs.procurementWarehousing &&
          this.$refs.procurementWarehousing.getStatus()
        );
      },
      async getTableValue() {
        return {
          form: this.form,
          // packingList: this.$refs.procurementWarehousing &&
          //   (await this.$refs.procurementWarehousing.getTableValue()),
          returnStorageData:
            this.$refs.add && (await this.$refs.add.getReturnStorage()),
          isAllChecked:
            this.$refs.procurementWarehousing &&
            (await this.$refs.procurementWarehousing.getStatus()),

          qualityInspector:
            (this.$refs.detailDialog &&
              this.$refs.detailDialog.getQualityFile()) ||
            {}
          // qualityInspector:
          //   (this.$refs.detailDialog &&
          //     this.$refs.detailDialog.getQualityFile()) ||
          //   {}
        };
      },
      async getDetailData(id) {
        this.loading = true;
        const data = await getReceiveSaleOrderrecordDetail(id);
        this.loading = false;
        if (data) {
          this.form = data;
          this.detailData = data;
          console.log(
            this.detailData,
            'this.detailDatathis.detailDatathis.detailDatathis.detailData'
          );
        }
      }
    }
  };
</script>

<style scoped lang="scss">
  .ele-dialog-form {
    .el-form-item {
      margin-bottom: 10px;
    }
  }

  .headbox {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    .amount {
      font-size: 14px;
      font-weight: bold;
      margin-right: 20px;
    }
  }
</style>
