<template>
  <div>
    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
      <headerTitle title="订单信息"> </headerTitle>
      <el-row>
        <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="requireDeptName">
            {{ form.sourceTypeName }}
          </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="项目名称：" prop="projectName">
            {{ form.projectName }}
          </el-form-item>
        </el-col>
        <el-col :span="8" v-if="form.relationType == 4">
          <el-form-item label="合同名称：" prop="contractName">
            {{ form.contractName }}
          </el-form-item>
        </el-col>
        <el-col :span="8" v-if="form.relationType == 2">
          <el-form-item label="采购计划名称：" prop="relationName">
            {{ form.relationName }}
          </el-form-item>
        </el-col>
        <el-col :span="8" v-if="form.relationType == 1">
          <el-form-item label="采购需求单：" prop="relationName">
            {{ form.relationName }}
          </el-form-item>
        </el-col>
        <el-col :span="8" v-if="form.relationType == 3">
          <el-form-item label="采购核价单：" prop="relationName">
            {{ form.relationName }}
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="需求部门：" prop="requireDeptName">
            {{ form.requireDeptName }}
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="需求人：" prop="requireUserName">
            {{ form.requireUserName }}
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="采购部门：" prop="purchaseDeptName">
            {{ form.purchaseDeptName }}
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="采购员：" prop="purchaseUserName">
            {{ form.purchaseUserName }}
          </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="交易方式：" prop="transactionMode">
              {{ transactionMethodsOp.find(item => item.value == form.transactionMode)?.label }}
            </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="收货模式：" prop="deliveryMode">
              {{ shippingModePurchaseOp.find(item => item.value == form.deliveryMode)?.label }}
            </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="结算方式：" prop="settlementModeName">
            {{ detailData.settlementModeName }}
          </el-form-item>
        </el-col>

        <el-col :span="8" v-if="form.settlementMode == 1">
          <el-form-item label="结算日期范围：" prop="settlementDate">
              {{ form.settlementDate }}
            </el-form-item>
        </el-col>

        <el-col :span="8" v-if="form.settlementMode == 2">
          <el-form-item label="结算月份范围：" prop="settlementDate">
              {{ form.settlementDate }}
            </el-form-item>
        </el-col>

        <el-col :span="8" v-if="form.settlementMode == 2">
          <el-form-item label="收款日期：" prop="receiptDate">
              每月{{ form.receiptDate }}日
            </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item
              label="期数："
              prop="issueNumber"
            >
              {{ form.issueNumber }}期
            </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="优惠总金额：" prop="payAmount">
            {{ form.payAmount }}元
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="订单总金额：" prop="totalAmount">
            {{ form.totalAmount }}元
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item prop="orderFiles" label="附件：">
            <fileMain v-model="form.orderFiles" type="view"></fileMain>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item prop="remark" label="备注：">
            {{ form.remark }}
          </el-form-item>
        </el-col>
      </el-row>
      <headerTitle title="基本信息"></headerTitle>
      <el-row>
        <el-col :span="12">
          <el-form-item label="采购方名称：" prop="partaName">
            {{ form.partaName }}
          </el-form-item>
          <el-form-item
            label="采购方统一社会信用代码"
            prop="partaUnifiedSocialCreditCode"
            label-width="170px"
          >
            {{ form.partaUnifiedSocialCreditCode }}
          </el-form-item>
          <el-form-item label="采购方联系人：" prop="partaLinkName">
            {{ form.partaLinkName }}
          </el-form-item>
          <el-form-item label="采购方电话：" prop="partaTel">
            {{ form.partaTel }}
          </el-form-item>
          <el-form-item label="采购方传真：" prop="partaFax">
            {{ form.partaFax }}
          </el-form-item>
          <el-form-item label="	采购方Email：" prop="partaEmail">
            {{ form.partaEmail }}
          </el-form-item>
          <el-form-item label="采购方地址：" prop="partaAddress">
            {{ form.partaAddress }}
          </el-form-item>
        </el-col>

        <el-col :span="12">
          <el-form-item label="供应商名称：" prop="partbName">
            {{ form.partbName }}
          </el-form-item>
          <el-form-item
            label="供应商统一社会信用代码"
            prop="partbUnifiedSocialCreditCode"
            label-width="180px"
          >
            {{ form.partbUnifiedSocialCreditCode }}
          </el-form-item>
          <el-form-item label="供应商联系人：" prop="partbLinkName">
            {{ form.partbLinkName }}
          </el-form-item>
          <el-form-item
            prop="partbTel"
            label="供应商联系电话："
            label-width="140px"
          >
            {{ form.partbTel }}
          </el-form-item>
          <el-form-item prop="partbFax" label="供应商传真：">
            {{ form.partbFax }}
          </el-form-item>

          <el-form-item label="供应商Email：" prop="partbEmail">
            {{ form.partbEmail }}
          </el-form-item>

          <el-form-item label="供应商地址：" prop="partbAddress">
            {{ form.partbAddress }}
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
    <el-tabs v-model="activeName" style="margin-top: 15px" type="border-card">
      <el-tab-pane label="物品清单" name="1">
        <ele-pro-table
          ref="table"
          :needPage="false"
          :columns="competAnalysisListcolumns"
          :datasource="detailData.productList"
          row-key="id"
          tool-class="ele-toolbar-form"
          @columns-change="handleColumnChange"
          :cache-key="cacheKeyUrl"
        >
          <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>
      </el-tab-pane>
      <el-tab-pane
        label="带料清单"
        name="2"
        v-if="orderSourceType.includes(form.sourceType)"
      >
        <ele-pro-table
          ref="table"
          :needPage="false"
          :columns="competAnalysisListcolumns1"
          :toolkit="[]"
          :datasource="detailData.rawList"
          row-key="id"
        >
          <template v-slot:technicalDrawings="{ row }">
            <fileMain v-model="row.technicalDrawings" type="view"></fileMain>
          </template>
        </ele-pro-table>
      </el-tab-pane>
      <el-tab-pane
        label="产出清单"
        name="3"
        v-if="orderSourceType.includes(form.sourceType)"
      >
        <ele-pro-table
          ref="table"
          :needPage="false"
          :columns="competAnalysisListcolumns1"
          :toolkit="[]"
          :datasource="detailData.outputList"
          row-key="id"
        >
          <template v-slot:technicalDrawings="{ row }">
            <fileMain v-model="row.technicalDrawings" type="view"></fileMain>
          </template>
        </ele-pro-table>
      </el-tab-pane>
    </el-tabs>

    <headerTitle
        title="付款计划"
        style="margin-top: 30px"
      ></headerTitle>
      <PaymentCollectionPlan
        ref="paymentCollectionPlanRef"
        menu="sale"
        type="view"
      ></PaymentCollectionPlan>
  </div>
</template>

<script>
  import { getpurchaseorderDetail } from '@/api/bpm/components/purchasingManage/purchaseOrder';

  import { getFile } from '@/api/system/file';
  import dictMixins from '@/mixins/dictMixins';
  // import fileMain from '@/components/addDoc/index.vue';
  import { orderSourceType, outsourceSceneList } from '@/enum/dict';
  import { lbjtList } from '@/enum/dict.js';
  import { levelList, pricingWayList, quoteTypeOp } from '@/enum/dict.js';
  import tableColumnsMixin from '@/mixins/tableColumnsMixin.js';
  import { shippingModePurchaseOp, transactionMethodsOp } from '@/enum/dict.js';
  import PaymentCollectionPlan from '@/BIZComponents/paymentCollectionPlan/Index.vue'
  export default {
    mixins: [dictMixins, tableColumnsMixin],
    components: { PaymentCollectionPlan },
    props: {
      businessId: {
        default: ''
      }
    },
    data() {
      return {
        quoteTypeOp,
        cacheKeyUrl: 'purchase-order-bizcomponent-InventoryTableDetails',
        shippingModePurchaseOp, 
        transactionMethodsOp,
        orderSourceType,
        outsourceSceneList,
        visible: false,
        detailId: '',
        title: '详情',
        row: {},
        activeName: '1',
        form: {
          orderFiles: [{ name: '222' }]
        },
        rules: {},
        detailData: {},
        receiptPaymentListcolumns: [
          {
            width: 45,
            type: 'index',
            columnKey: 'index',
            align: 'center',
            fixed: 'left'
          },
          {
            width: 200,
            prop: 'moneyName',
            label: '款项名称',
            slot: 'moneyName'
          },
          {
            width: 100,
            prop: 'price',
            label: '金额',
            slot: 'price',
            formatter: (_row, _column, cellValue) => {
              return _row.price + '元';
            }
          },
          {
            width: 100,
            prop: 'ratio',
            label: '比例',
            slot: 'ratio',
            formatter: (_row, _column, cellValue) => {
              return _row.ratio + '%';
            }
          },
          {
            width: 160,
            prop: 'deadLine',
            label: '截止日期',
            slot: 'deadLine'
          },
          {
            prop: 'remark',
            label: '	说明',
            slot: 'remark'
          }
        ],
        competAnalysisListcolumns: [
          {
            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: 140,
            prop: 'pricingWay',
            label: '计价方式',
            align: 'center',
            fixed: 'left',
            formatter: (row, column) => {
              return pricingWayList.find((item) => item.id == row.pricingWay)
                ?.name;
            }
          },
          {
            width: 120,
            prop: 'modelType',
            label: '型号',
            slot: 'modelType',
            align: 'center'
          },
          {
            width: 120,
            prop: 'supplierMark',
            label: '供应商代号',
            slot: 'supplierMark',
            align: 'center'
          },
          {
            width: 120,
            prop: 'specification',
            label: '规格',
            slot: 'specification',
            align: 'center'
          },
          {
            minWidth: 200,
            prop: 'taskName',
            label: '工序',
            slot: 'taskName',
            align: 'center'
          },
          {
            width: 150,
            prop: 'purchaseCount',
            label: '数量',
            align: 'center',
            formatter: (row, column) => {
              if (row.purchaseCount) {
                return row.purchaseCount + ' ' + (row.purchaseUnit || '');
              }
            }
          },
          // {
          //   width: 150,
          //   prop: 'purchaseUnit',
          //   label: '单位',
          //   align: 'center'
          // },
          // {
          //   minWidth: 180,
          //   prop: 'packingSpecification',
          //   align: 'center',
          //   label: '包装规格',
          //   showOverflowTooltip: true
          // },
          {
            width: 120,
            prop: 'totalCount',
            label: '计量数量',
            formatter: (row, column) => {
              if (row.totalCount) {
                return row.totalCount + ' ' + (row.measuringUnit || '');
              }
            },
            align: 'center'
          },
          // {
          //   width: 120,
          //   prop: 'measuringUnit',
          //   label: '计量单位',
          //   slot: 'measuringUnit',
          //   align: 'center'
          // },
          {
            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: 120,
            prop: 'singleWeight',
            label: '单重',
            formatter: (row, column) => {
              if (row.singleWeight) {
                return row.singleWeight + ' ' + (row.weightUnit || '');
              }
            },
            align: 'center'
          },
          {
            width: 120,
            prop: 'totalWeight',
            label: '总重',
            formatter: (row, column) => {
              if (row.totalWeight) {
                return row.totalWeight + ' ' + (row.weightUnit || '');
              }
            },
            align: 'center'
          },
          {
            width: 180,
            prop: 'increaseTotalWeight',
            label: '增重重量',
            align: 'center',
            formatter: (row, column) => {
              if (row.increaseTotalWeight) {
                return row.increaseTotalWeight + ' ' + (row.weightUnit || '');
              }
            }
          },
          // {
          //   width: 120,
          //   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: 150,
            prop: 'quoteWay',
            label: '报价方式',
            align: 'center',
            formatter: (_row, _column, cellValue) => {
              return this.quoteTypeOp.find((item) => item.value == _row.quoteWay)
                ?.label || '';
            }
          },
          {
            width: 150,
            prop: 'discountRatio',
            label: '折让比例',
            align: 'center',
            isNone: !this.isDiscount,
            formatter: (_row, _column, cellValue) => {
              return _row.discountRatio
                ? Number(_row.discountRatio).toFixed(2) + '%'
                : '';
            }
          },
          {
            width: 160,
            prop: 'discountSinglePrice',
            label: '折后单价',
            slot: 'discountSinglePrice',
            align: 'center'
          },
          {
            width: 120,
            prop: 'totalPrice',
            label: '合计',
            slot: 'totalPrice',
            formatter: (_row, _column, cellValue) => {
              return _row.totalPrice + '元';
            },
            align: 'center'
          },
          {
            width: 120,
            prop: 'discountTotalPrice',
            label: '折后合计',
            slot: 'discountTotalPrice',
            formatter: (_row, _column, cellValue) => {
              return _row.discountTotalPrice + '元';
            },
            align: 'center'
          },
          {
            width: 110,
            prop: 'batchNo',
            label: '批次号',
            slot: 'batchNo',
            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(',')
                : '';
            }
          },
          {
            minWidth: 120,
            prop: 'modelKey',
            label: '机型',
            showOverflowTooltip: true,
            align: 'center'
          },
          {
            minWidth: 120,
            prop: 'colorKey',
            showOverflowTooltip: true,
            label: '颜色',
            align: 'center'
          },
          {
            width: 160,
            prop: 'deliveryDeadline',
            label: '交期截止日期',
            slot: 'deliveryDeadline',
            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'
          },
          {
            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',
            formatter: (_row, _column, cellValue) => {
              return (
                (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName
              );
            },
            align: 'center'
          },
          {
            width: 220,
            prop: 'remark',
            label: '备注',
            slot: 'remark',
            align: 'center'
          }
        ],
        competAnalysisListcolumns1: [
          {
            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: 'supplierMark',
            label: '供应商代号',
            slot: 'supplierMark',
            align: 'center'
          },
          {
            width: 120,
            prop: 'specification',
            label: '规格',
            slot: 'specification',
            align: 'center'
          },
          {
            minWidth: 200,
            prop: 'taskName',
            label: '工序',
            slot: 'taskName',
            align: 'center'
          },

          {
            width: 120,
            prop: 'totalCount',
            label: '数量',
            slot: 'totalCount',
            formatter: (row, column) => {
              if (row.totalCount) {
                return row.totalCount + ' ' + (row.measuringUnit || '');
              }
            },
            align: 'center'
          },

          {
            width: 120,
            prop: 'singleWeight',
            label: '单重',
            formatter: (row, column) => {
              if (row.singleWeight) {
                return row.singleWeight + ' ' + (row.weightUnit || '');
              }
            },
            align: 'center'
          },
          {
            width: 120,
            prop: 'totalWeight',
            label: '总重',
            formatter: (row, column) => {
              if (row.totalWeight) {
                return row.totalWeight + ' ' + (row.weightUnit || '');
              }
            },
            align: 'center'
          },
          // {
          //   width: 120,
          //   prop: 'weightUnit',
          //   label: '重量单位',
          //   slot: 'weightUnit',
          //   align: 'center'
          // },

          {
            width: 110,
            prop: 'batchNo',
            label: '批次号',
            slot: 'batchNo',
            align: 'center'
          },
          {
            width: 120,
            prop: 'deliveryDays',
            label: '交期(天)',
            slot: 'deliveryDays'
          },
          {
            width: 160,
            prop: 'deliveryDeadline',
            label: '交期截止日期',
            slot: 'deliveryDeadline',
            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'
          },
          {
            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',
            formatter: (_row, _column, cellValue) => {
              return (
                (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName
              );
            },
            align: 'center'
          },
          {
            width: 220,
            prop: 'remark',
            label: '备注',
            slot: 'remark',
            align: 'center'
          }
        ]
      };
    },
    created() {
      this.requestDict('产地');
      this.requestDict('生产类型');

      this.getDetailData(this.businessId);
    },
    methods: {
      downloadFile(file) {
        getFile({ objectName: file.storePath }, file.name);
      },
      async getDetailData(id) {
        this.loading = true;
        const data = await getpurchaseorderDetail(id);
        this.loading = false;
        if (data) {
          data.settlementDate = data.startSettlementDate ? [data.startSettlementDate, data.endSettlementDate] : [];
          this.form = data;
          this.detailData = data;
          this.$refs.paymentCollectionPlanRef && this.$refs.paymentCollectionPlanRef.putTableValue(data);
        }
      }
    }
  };
</script>

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

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

  .switch_left ul .active {
    border-top: 4px solid var(--color-primary);
    color: var(--color-primary-5);
  }

  .switch {
    padding-bottom: 20px;
  }

  :deep .divider .content {
    justify-content: flex-start;
  }
</style>
