<template>
  <ele-modal
    custom-class="ele-dialog-form long-dialog-form"
    :centered="true"
    :visible.sync="detailDialogFlag"
    :title="title"
    :append-to-body="true"
    :close-on-click-modal="false"
    width="70%"
    :maxable="true"
    :resizable="true"
    @close="cancel"
  >
    <div class="switch">
      <div class="switch_left">
        <ul>
          <li
            v-for="item in tabOptions"
            :key="item.key"
            :class="{ active: activeComp == item.key }"
            @click="handleTag(item.key)"
          >
            {{ item.name }}
          </li>
        </ul>
      </div>
    </div>
    <div v-if="activeComp === 'main'">
      <el-form
        ref="form"
        :model="form"
        :rules="rules"
        class="el-form-box"
        label-width="120px"
      >
        <headerTitle title="发货信息"></headerTitle>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item
              label="委外发货单编码："
              prop="code"
              class="form_item_label"
            >
              <el-input v-model="form.code" disabled></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="采购订单编码：" prop="orderNo">
              <el-input v-model="form.orderNo" disabled></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="外协单位：" prop="contactName">
              <el-input v-model="form.supplierName" disabled></el-input>
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item
              label="外协单位联系人："
              prop="linkName"
              class="form_item_label"
            >
              <el-input v-model="form.linkName" disabled></el-input>
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="外协单位电话：" prop="linkPhone">
              <el-input v-model="form.linkPhone" disabled></el-input>
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="发货日期：" prop="sendDate">
              <el-input v-model="form.sendDate" disabled></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="发货单号：" prop="sendNoteNo">
              <el-input v-model="form.sendNoteNo" disabled></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="订单类型：" prop="sourceTypeName">
              <el-input v-model="form.sourceTypeName" disabled></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="车辆号：" prop="carNo">
              <el-input v-model="form.carNo" disabled></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item prop="files" label="附件：">
              <fileMain v-model="form.files" type="view"></fileMain>
            </el-form-item>
          </el-col>
          <el-col :span="12"> </el-col>
        </el-row>
      </el-form>

      <headerTitle title="物品清单"></headerTitle>
      <ele-pro-table
        ref="table"
        :needPage="false"
        :columns="competAnalysisListcolumns"
        @columns-change="handleColumnChange"
        :cache-key="cacheKeyUrl"
        :datasource="detailData.productList"
        row-key="id"
      >
        <template v-slot:technicalDrawings="{ row }">
          <fileMain v-model="row.technicalDrawings" type="view"></fileMain>
        </template>
      </ele-pro-table>
    </div>

    <bpmDetail
      v-if="activeComp === 'bpm' && form.processInstanceId"
      :id="form.processInstanceId"
    ></bpmDetail>
    <out-bound-details
      v-if="activeComp === 'store' && form.reviewStatus == 2"
      ref="innerBoundDetailsRef"
    ></out-bound-details>
    <div slot="footer" class="footer">
      <el-button @click="cancel">返回</el-button>
    </div>
  </ele-modal>
</template>

<script>
  import { getFile } from '@/api/system/file';
  import dictMixins from '@/mixins/dictMixins';
  import { reviewStatusEnum, lbjtList } from '@/enum/dict';
  import { getPurchaseOutSourceSendDetailAPI } from '@/api/purchasingManage/outSourceSend';
  import bpmDetail from '@/views/bpm/processInstance/detail.vue';
  import fileUpload from '@/components/upload/fileUpload.vue';
  // import fileMain from '@/components/addDoc/index.vue';
  import outBoundDetails from '@/BIZComponents/outdetails.vue';
  import tabMixins from '@/mixins/tableColumnsMixin';

  export default {
    mixins: [dictMixins,tabMixins],
    components: {
      // fileMain,
      fileUpload,
      bpmDetail,
      outBoundDetails
    },
    props: {
      detailDialogFlag: Boolean
    },

    data() {
      return {
        cacheKeyUrl:'eos-purchaseOrder-outSourceSend-inventoryTableDetail',
        activeComp: 'main',
        tabOptions: [
          { key: 'main', name: '发货单详情' },
          { key: 'bpm', name: '流程详情' },
          { key: 'store', name: '出库单详情' }
        ],
        fullscreen: false,
        reviewStatusEnum,
        detailId: '',
        title: '详情',
        row: {},
        activeName: 'base',
        form: {
          orderFiles: [{ name: '222' }]
        },
        rules: {},
        detailData: {},

        competAnalysisListcolumns: [
          {
            width: 45,
            type: 'index',
            columnKey: 'index',
            align: 'center',
            fixed: 'left'
          },
          {
            minWidth: 140,
            prop: 'productName',
            label: '名称',
            slot: 'productName',
            align: 'center'
          },
          {
            minWidth: 120,
            prop: 'productCode',
            label: '编码',
            slot: 'productCode',
            align: 'center'
          },
          {
            minWidth: 100,
            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: 120,
            prop: 'imgCode',
            align: 'center',
            label: '图号/件号',
            showOverflowTooltip: true
          },
          {
            width: 120,
            prop: 'produceType',
            align: 'center',
            label: '属性类型',
            showOverflowTooltip: true,
            formatter: (row, column) => {
              if (row.produceType) {
                return row.produceType
                  .map((item) => {
                    return lbjtList[item];
                  })
                  .toString();
              }
            }
          },
          {
            width: 120,
            prop: 'packingSpecification',
            align: 'center',
            label: '包装规格',
            showOverflowTooltip: true
          },
          {
            width: 200,
            prop: 'supplierMark',
            label: '客户代号',
            slot: 'supplierMark',
            align: 'center'
          },
          {
            width: 200,
            prop: 'warehouseName',
            label: '仓库名称',
            slot: 'warehouseName',
            align: 'center'
          },

          {
            width: 120,
            prop: 'totalCount',
            label: '发货数量',
            slot: 'totalCount',
            align: 'center'
          },
          {
            minWidth: 120,
            prop: 'taskName',
            label: '工序',
            slot: 'taskName',
            align: 'center'
          },
          {
            width: 110,
            prop: 'batchNo',
            label: '批次号',
            slot: 'batchNo',
            align: 'center'
          },
          {
            width: 120,
            prop: 'measuringUnit',
            label: '计量单位',
            slot: 'measuringUnit',
            align: 'center'
          },
          {
            width: 120,
            prop: 'singleWeight',
            label: '单重',
            slot: 'singleWeight',
            align: 'center'
          },
          {
            width: 100,
            prop: 'sendTotalWeight',
            label: '发货总重',
            slot: 'sendTotalWeight',
            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: 120,
            prop: 'taxRate',
            label: '税率',
            formatter: (_row, _column, cellValue) => {
              return _row.taxRate ? _row.taxRate + '%' : '';
            },
            align: 'center'
          },
          {
            width: 160,
            prop: 'singlePrice',
            label: '单价',
            slot: 'singlePrice',
            align: 'center'
          },
          {
            width: 150,
            prop: 'notaxSinglePrice',
            label: '不含税单价',
            align: 'center'
          },
          {
            width: 100,
            prop: 'discountSinglePrice',
            label: '折让单价',
            slot: 'discountSinglePrice',
            align: 'center',
            formatter: (_row, _column, cellValue) => {
              return _row.discountSinglePrice
                ? Number(_row.discountSinglePrice).toFixed(2)
                : '';
            }
          },

          {
            width: 120,
            prop: 'totalPrice',
            label: '合计',
            slot: 'totalPrice',
            formatter: (_row, _column, cellValue) => {
              return _row.totalPrice + '元';
            },
            align: 'center'
          },
          {
            width: 100,
            prop: 'discountTotalPrice',
            label: '折让合计',
            slot: 'discountTotalPrice',
            align: 'center',
            formatter: (_row, _column, cellValue) => {
              return _row.discountTotalPrice
                ? Number(_row.discountTotalPrice).toFixed(2)
                : '';
            }
          },
          {
            prop: 'provenance',
            label: '产地',
            slot: 'provenance',
            align: 'center',
            minWidth: 200,
            showOverflowTooltip: true,
            formatter: (row, column) => {
              return row.provenance && row.provenance.length
                ? row.provenance
                    .map((item) => this.getDictValue('产地', item))
                    .join(',')
                : '';
            }
          },
          // {
          //   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: 120,
          //   prop: 'guaranteePeriodUnitCode',
          //   label: '',
          //   slot: 'guaranteePeriodUnitCode'
          // },
          {
            width: 120,
            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'
          }
        ]
      };
    },
    created() {
      this.requestDict('产地');
    },
    methods: {
      async open(row) {
        this.form = row;
        this.getDetailData(row.id);
        this.detailId = row.id;
      },
      //关闭弹窗
      cancel() {
        this.$emit('update:detailDialogFlag', false);
      },
      downloadFile(file) {
        getFile({ objectName: file.storePath }, file.name);
      },
      handleTag(val) {
        this.activeComp = val;
        if (val == 'store') {
          this.$nextTick(() => {
            this.$refs.innerBoundDetailsRef._getInfo(this.form.code);
          });
        }
      },
      async getDetailData(id) {
        this.loading = true;
        const data = await getPurchaseOutSourceSendDetailAPI(id);
        this.loading = false;
        if (data) {
          this.form = data;
          this.detailData = data;
        }
      }
    }
  };
</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>
