<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="120px">
      <div class="title"> 发货单信息</div>

      <el-row>
        <el-col :span="8">
          <el-form-item
            label="客户名称："
            prop="contactName"
            style="margin-bottom: 5px"
          >
            {{ form.contactName }}
          </el-form-item>
          <el-form-item
            label="客户联系人："
            prop="linkName"
            style="margin-bottom: 5px"
          >
            {{ form.linkName }}
          </el-form-item>
          <el-form-item
            label="客户电话："
            prop="linkPhone"
            style="margin-bottom: 5px"
          >
            {{ form.linkPhone }}
          </el-form-item>

          <el-form-item
            label="客户地址："
            prop="partaAddress"
            style="margin-bottom: 5px"
          >
            {{ form.receiveAddress }}
          </el-form-item>
          <el-form-item
            label="打印编码："
            prop="printNo"
            style="margin-bottom: 5px"
          >
            {{ form.printNo }}
          </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item
            label="车牌号："
            prop="carNo"
            style="margin-bottom: 5px"
          >
            {{ form.carNo }}
          </el-form-item>
          <el-form-item
            label="发货单据编码："
            prop="docNo"
            style="margin-bottom: 5px"
          >
            {{ form.docNo }}
          </el-form-item>
          <el-form-item
            label="制单人："
            prop="makerName"
            style="margin-bottom: 5px"
          >
            {{ form.makerName }}
          </el-form-item>
          <el-form-item prop="orderNo" label="订单编码：">
            {{ form.orderNo }}
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item prop="replied" label="是否回执：">
            {{ form.replied == 1 ? '是' : '否' }}
          </el-form-item>

          <el-form-item
            label="审核状态："
            prop="reviewStatus"
            style="margin-bottom: 5px"
          >
            {{ reviewStatusEnum[form.reviewStatus]?.label }}
          </el-form-item>
          <el-form-item
            label="发货附件："
            prop="sendFiles"
            style="margin-bottom: 5px"
          >
            <fileMain v-model="detailData.sendFiles" type="view"></fileMain>
          </el-form-item>
          <el-form-item
            label="回执附件："
            prop="sendFiles"
            style="margin-bottom: 5px"
          >
            <fileMain v-model="detailData.repliedFiles" type="view"></fileMain>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>

    <headerTitle title="物品清单"></headerTitle>
    <ele-pro-table
      ref="table"
      :needPage="false"
      :columns="columns"
      @columns-change="handleColumnChange"
      :cache-key="cacheKeyUrl"
      :datasource="detailData.productList"
      row-key="id"
    >
      <template v-slot:stockLedger="scope">
        <el-popover placement="right" width="60%" trigger="hover">
          <ele-pro-table
            :ref="'childrenTable' + scope.$index"
            row-key="id"
            max-height="300px"
            :needPage="false"
            :columns="childrenColumns"
            :toolkit="[]"
            :datasource="scope.row.sendProductDetail"
            class="time-form"
          >
          </ele-pro-table>
          <el-button type="text" slot="reference">明细</el-button>
        </el-popover>
      </template>
      <template v-slot:industryArtFiles="{ row, $index }">
        <el-form-item
          style="margin-bottom: 20px"
          :prop="'datasource.' + $index + '.industryArtFiles'"
        >
          <fileMain v-model="row.industryArtFiles" type="view"></fileMain>
        </el-form-item>
      </template>
      <template v-slot:otherFiles="{ row, $index }">
        <el-form-item
          style="margin-bottom: 20px"
          :prop="'datasource.' + $index + '.otherFiles'"
        >
          <fileMain v-model="row.otherFiles" type="view"></fileMain>
        </el-form-item>
      </template>
      <template v-slot:technicalDrawings="{ row }">
        <fileMain v-model="row.technicalDrawings" type="view"></fileMain>
      </template>
    </ele-pro-table>
    <div class="title"> 出库单信息</div>
    <keep-alive>
      <add
        ref="add"
        :form="form"
        :sourceBizNo="form.docNo"
        :bizType="3"
        :saleProductList="form.productList"
        type="销售发货出库"
        v-if="!isView && taskDefinitionKey == 'storemanApprove'"
      ></add>
    </keep-alive>
    <detailDialog
      type="sourceBizNo"
      :businessId="form.returnNo"
      ref="outgoingDetai"
      v-if="isView"
    ></detailDialog>
  </div>
</template>

<script>
  import { getFile } from '@/api/system/file';
  import dictMixins from '@/mixins/dictMixins';
  import {
    getSendSaleOrderrecordDetail,
    getByIdOnlyReplace
  } from '@/api/bpm/components/saleManage/saleorder';
  import { reviewStatusEnum } from '@/enum/dict';
  import { copyObj } from '@/utils/util';
  import add from '@/views/bpm/outgoingManagement/outbound.vue';
  // import fileMain from '@/components/addDoc/index.vue';
  import { lbjtList } from '@/enum/dict.js';
  import detailDialog from '@/views/bpm/outgoingManagement/details.vue';
  import tabMixins from '@/mixins/tableColumnsMixin';
  import { levelList } from '@/enum/dict.js';

  export default {
    mixins: [dictMixins, tabMixins],
    components: {
      // fileMain,
      add,
      detailDialog
    },
    data() {
      return {
        cacheKeyUrl: 'wt-saleManage-invoice-inventoryTableDetail',
        activeComp: 'main',
        tabOptions: [{ key: 'main', name: '发货单详情' }],
        reviewStatusEnum,
        visible: false,
        detailId: '',
        title: '详情',
        row: {},
        activeName: 'base',
        form: {
          orderFiles: []
        },
        rules: {},
        detailData: {},
        childrenColumns: [
          {
            width: 45,
            type: 'index',
            columnKey: 'index',
            align: 'center',
            fixed: 'left'
          },
          {
            minWidth: 100,
            prop: 'code',
            label: '编码',
            align: 'center'
          },
          {
            minWidth: 140,
            prop: 'barcodes',
            label: '发货条码',
            align: 'center'
          },
          {
            minWidth: 100,
            prop: 'engrave',
            label: '刻码',
            align: 'center'
          }
        ],
        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: 'batchNo',
            label: '批次号',
            slot: 'batchNo',
            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'
          },
          {
            minWidth: 160,
            prop: 'productionCodes',
            label: '生产编号',
            align: 'center'
          },
          {
            width: 120,
            prop: 'imgCode',
            align: 'center',
            label: '图号/件号',
            showOverflowTooltip: true
          },
          {
            width: 120,
            prop: 'produceType',
            align: 'center',
            label: '属性类型',
            formatter: (row, column) => {
              if (row.produceType) {
                return row.produceType
                  .map((item) => {
                    return lbjtList[item];
                  })
                  .toString();
              }
            },
            showOverflowTooltip: true
          },
          {
            minWidth: 120,
            prop: 'goodsLevel',
            label: '物品级别',
            formatter: (_row, _column, cellValue) => {
              return levelList.find(item=>item.value==_row.goodsLevel)?.label
            },
            align: 'center'
          },
          {
            width: 120,
            prop: 'customerMark',
            label: '客户代号',
            slot: 'customerMark',
            align: 'center'
          },
          {
            width: 200,
            prop: 'warehouseName',
            label: '仓库名称',
            slot: 'warehouseName',

            align: 'center'
          },
          // {
          //   width: 100,
          //   prop: 'warehouseNum',
          //   label: '库存',
          //   align: 'center',
          //   slot: 'warehouseNum',

          //   headerSlot: 'headerWarehouseNum'
          // },

          // {
          //   width: 100,
          //   prop: 'stockLedger',
          //   label: '发货明细',
          //   slot: 'stockLedger',
          //   align: 'center'
          // },
          {
            width: 120,
            prop: 'totalCount',
            label: '发货数量',
            slot: 'totalCount',
            headerSlot: 'headerTotalCount',
            align: 'center'
          },
          {
            width: 120,
            prop: 'orderTotalCount',
            label: '订单数量',
            slot: 'orderTotalCount',
            align: 'center'
          },

          {
            width: 80,
            prop: 'measuringUnit',
            label: '计量单位',
            slot: 'measuringUnit',
            align: 'center'
          },

          {
            width: 120,
            prop: 'blockCount',
            label: '发货块数',
            slot: 'blockCount',
            align: 'center',
            show: this.clientEnvironmentId == '4'
          },
          {
            width: 120,
            prop: 'singleWeight',
            label: '单重',
            slot: 'singleWeight',
            align: 'center'
          },
          {
            width: 200,
            prop: 'receiveTotalWeight',
            label: '收货总重',
            slot: 'receiveTotalWeight',
            align: 'center',
            headerSlot: 'headerTotalCount'
          },
          {
            width: 100,
            prop: 'sendTotalWeight',
            label: '发货总重',
            slot: 'sendTotalWeight',
            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: 160,
          //   prop: 'taxRate',
          //   label: '税率',
          //   formatter: (_row, _column, cellValue) => {
          //     return _row.taxRate ? _row.taxRate + '%' : '';
          //   },
          //   align: 'center'
          // },
          // {
          //   width: 160,
          //   prop: 'notaxSinglePrice',
          //   label: '不含税单价',
          //   align: 'center'
          // },
          // {
          //   width: 160,
          //   prop: 'discountSinglePrice',
          //   label: '折后单价',
          //   slot: 'discountSinglePrice',
          //   align: 'center'
          // },
          // {
          //   width: 120,
          //   prop: 'totalPrice',
          //   label: '合计',
          //   slot: 'totalPrice',
          //   align: 'center'
          // },
          // {
          //   width: 120,
          //   prop: 'discountTotalPrice',
          //   label: '折后合计',
          //   slot: 'discountTotalPrice',
          //   align: 'center'
          // },
          {
            width: 120,
            prop: 'deliveryDays',
            label: '交期(天)',
            slot: 'deliveryDays',
            align: 'center'
          },
          {
            width: 200,
            prop: 'guaranteePeriod',
            label: '有效期',
            slot: 'guaranteePeriod',
            formatter: (_row, _column, cellValue) => {
              return (
                (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName
              );
            },
            align: 'center'
          },
          // {
          //   width: 160,
          //   prop: 'guaranteePeriodDeadline',
          //   label: '质保截止日期',
          //   slot: 'guaranteePeriodDeadline',
          //   align: 'center'
          // },
          {
            prop: 'provenance',
            label: '产地',
            slot: 'provenance',
            align: 'center',
            // show:this.contractBookType==2,
            minWidth: 200,
            showOverflowTooltip: true,
            formatter: (row, column) => {
              return row.provenance && row.provenance.length
                ? row.provenance
                    .map((item) => this.getDictValue('产地', item))
                    .join(',')
                : '';
            }
          },
          {
            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'
          }
        ]
      };
    },
    props: {
      businessId: {
        default: ''
      },
      taskDefinitionKey: {},
      isView: ''
    },
    async created() {
      await this.getDetailData(this.businessId);
      this.requestDict('产地');
      this.requestDict('生产类型');
      if (this.taskDefinitionKey == 'storemanApprove') {
        this.tabOptions.push({ key: 'outBound', name: '出库单' });
        this.activeComp = 'outBound';
        this.$emit('activeCompChange', 'outBound');
        // this.$nextTick(() => {
        //   this.$refs.add.eomSuccess(this.form);
        // });
      }
    },
    methods: {
      changeActive(item) {
        this.activeComp = item.key;
        this.$emit('activeCompChange', item.key);
        // if (
        //   this.taskDefinitionKey == 'storemanApprove' &&
        //   item.key == 'outBound'
        // ) {
        //   this.$nextTick(() => {
        //     this.$refs.add.eomSuccess(this.form);
        //   });
        // }
      },
      save(data) {
        this.$refs.add.handleNewSave(data);
      },
      success() {
        this.$emit('handleClose');
      },
      cancel() {
        this.$nextTick(() => {
          // 关闭后，销毁所有的表单数据
          (this.form = copyObj(this.formDef)),
            (this.otherForm = copyObj(this.otherFormDef)),
            (this.tableBankData = []);
          this.tableLinkData = [];
          this.visible = false;
        });
      },
      downloadFile(file) {
        getFile({ objectName: file.storePath }, file.name);
      },
      async getTableValue() {
        return {
          form: this.form,
          returnStorageData:
            this.$refs.add && (await this.$refs.add.getReturnStorage())
        };
      },
      async getDetailData(id) {
        this.loading = true;
        const data = await getByIdOnlyReplace(id);
        this.loading = false;
        if (data) {
          data.categoryLevelTopId = data.topCategoryIds;
          this.form = data;
          this.detailData = data;
          this.$nextTick(() => {
            this.$refs.add?.initFormData();
            this.$refs.outgoingDetai?._getInfo(data.docNo);
          });
        }
      }
    }
  };
</script>

<style scoped lang="scss">
  .title {
    font-size: 22px;
    font-weight: 800;
    margin-top: 15px;
  }
  .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>
