<template>
  <div class="ele-body">
    <el-form ref="form" :model="form" label-width="130px">
      <headerTitle title="基本信息"></headerTitle>
      <el-row :gutter="24">
        <el-col :span="8">
          <el-form-item
            label="委外发货单编码："
            prop="code"
          >
            {{ form.code }}
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item
            label="采购订单编码："
            prop="orderNo"
          >
            {{ form.orderNo }}
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item
            label="外协单位："
            prop="contactName"
          >
            {{ form.supplierName }}
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="24">
        <el-col :span="8">
          <el-form-item
            label="外协单位联系人："
            prop="linkName"
          >
            {{ form.linkName }}
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item
            label="外协单位电话："
            prop="linkPhone"
          >
            {{ form.linkPhone }}
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item
            label="发货日期："
            prop="sendDate"
          >
            {{ form.sendDate }}
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="24">
        <el-col :span="8">
          <el-form-item
            label="发货单号："
            prop="sendNoteNo"
          >
            {{ form.sendNoteNo }}
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item
            label="订单类型："
            prop="sourceTypeName"
          >
            {{ form.sourceTypeName }}
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item
            label="车辆号："
            prop="carNo"
          >
            {{ form.carNo }}
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item prop="files" label="附件：">
            <fileMain v-model="form.files" type="view"></fileMain>
            <!--            <div v-if="form.files && form.files?.length">-->
            <!--              <el-link-->
            <!--                v-for="link in form.files"-->
            <!--                :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-col>
      </el-row>
    </el-form>

    <headerTitle title="物品清单"></headerTitle>
    <ele-pro-table
      ref="table"
      :needPage="false"
      :columns="competAnalysisListcolumns"
      :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.technicalDrawings" type="view"></fileMain>
      </template>
    </ele-pro-table>
  </div>
</template>

<script>
  import { getFile } from '@/api/system/file';
  import { getPurchaseOutSourceSendDetailAPI } from '@/api/bpm/components/purchasingManage/outSourceSend';
  // import fileMain from '@/components/addDoc/index.vue';
  import { mapActions } from 'vuex';
  import dictMixins from '@/mixins/dictMixins';
  import {lbjtList } from '@/enum/dict.js';
  import { levelList } from '@/enum/dict.js';

  export default {
    // components: { fileMain },
    mixins: [dictMixins],
    props: {
      businessId: {
        default: ''
      }
    },
    data() {
      return {
        detailId: '',
        form: {},
        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: 150,
            prop: 'taskName',
            label: '工序',
            slot: 'taskName',
            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 ? '按重量计费':'';

            }
          },
          {
            minWidth: 120,
            prop: 'goodsLevel',
            label: '物品级别',
            formatter: (_row, _column, cellValue) => {
              return levelList.find((item) => item.value == _row.goodsLevel)
                ?.label;
            },
            align: 'center'
          },
          {
            width: 160,
            prop: 'singlePrice',
            label: '单价',
            slot: 'singlePrice',
            align: 'center'
          },
          
          {
            width: 120,
            prop: 'taxRate',
            label: '税率',
            formatter: (_row, _column, cellValue) => {
              return _row.taxRate
                ? _row.taxRate+'%'
                : '';
            },
            align: 'center',
          },
          {
            width: 150,
            prop: 'notaxSinglePrice',
            label: '不含税单价',
            align: 'center',
          },
          {
            width: 100,
            prop: 'discountSinglePrice',
            label: '折让单价',
            slot: 'discountSinglePrice',
            align: 'center'
          },

          {
            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'
          },
          {
            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('产地');
      this.requestDict('生产类型');
      
      this.getDetailData(this.businessId);
    },
    methods: {
      ...mapActions('dict', ['requestDict']),
      downloadFile(file) {
        getFile({ objectName: file.storePath }, file.name);
      },
      async getDetailData(id) {
        this.loading = true;
        const data = await getPurchaseOutSourceSendDetailAPI(id);
        this.loading = false;
        if (data) {
          this.form = data;
          this.detailData = data;
        }
      },
      getTableValue() {
        return Promise.resolve(this.form);
      }
    }
  };
</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>
