<template>
  <ele-modal
    custom-class="ele-dialog-form long-dialog-form"
    :centered="true"
    v-if="visible"
    :visible.sync="visible"
    :title="title"
    :append-to-body="true"
    :close-on-click-modal="false"
    width="70%"
    @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="activeComp = item.key"
        >
          {{ item.name }}
        </li>
      </ul>
    </div>
  </div>
    <div v-if="activeComp == 'returnOrder'">
      <el-form ref="form" :model="form" :rules="rules" class="el-form-box" label-width="120px">
        <headerTitle title="退货信息"></headerTitle>
        <el-row>
          <el-col :span="12">
            <el-form-item
              label="供应商名称："
              prop="supplierName">
              <el-input v-model="form.supplierName" disabled></el-input>
            </el-form-item>

            <el-form-item
              label="金额："
              prop="payAmount"

            >
              <el-input v-model="form.payAmount" disabled>
                <template slot="append">元</template>
              </el-input>
            </el-form-item>
            <el-form-item
              label="总金额："
              prop="totalAmount"
            >
              <el-input v-model="form.totalAmount" disabled>
                <template slot="append">元</template>
              </el-input>
            </el-form-item>
            <el-form-item
              label="计价方式："
              prop="totalAmount"
            >
              <el-select v-model="form.pricingWay" disabled style="width: 100%">
                <el-option label="按数量计费" :value="1"></el-option>
                <el-option label="按重量计费" :value="2"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item
              label="供应商联系人："
              prop="linkName"

            >
              <el-input v-model="form.linkName" disabled></el-input>
            </el-form-item>
            <el-form-item
              label="备注："
              prop="remark">
              <el-input v-model="form.remark" type="textarea" disabled></el-input>
            </el-form-item>
            <el-form-item
              label="创建时间："
              prop="createTime">
              <el-input v-model="form.createTime"  disabled></el-input>
            </el-form-item>
            <el-form-item
              label="制单人："
              prop="makerName">
              <el-input v-model="form.makerName" disabled></el-input>
            </el-form-item>
            <el-form-item
              label="回执附件："
              prop="repliedFiles">
              <div v-if="detailData.repliedFiles && detailData.repliedFiles?.length">
                <el-link
                  v-for="link in detailData.repliedFiles"
                  :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="退货类型：">
              <el-select v-model="form.returnSourceType" disabled style="width: 100%">
                <el-option :value="3" label="销售发货单退货"></el-option>
                <el-option :value="1" label="售后退货"></el-option>
                <el-option :value="2" label="受托收货单退货"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item
              label="退货单编码："
              prop="returnNo">
              <el-input v-model="form.returnNo" disabled></el-input>
            </el-form-item>
            <el-form-item
              v-if="form.returnSourceType==2"
              label="委外发货退货单："
              prop="outsourceSendCode">
              <el-input v-model="form.outsourceSendCode" disabled></el-input>
            </el-form-item>
            <el-form-item
              v-else
              label="收货单编码："
              prop="receiveNo">
              <el-input v-model="form.receiveNo" disabled></el-input>
            </el-form-item>
            <el-form-item prop="orderNo" label="订单编码：">
              <el-input v-model="form.orderNo" disabled></el-input>
            </el-form-item>
            <el-form-item
              prop="linkPhone"
              class="form_item_label"
              label="供应商联系电话：">
              <el-input v-model="form.linkPhone" disabled></el-input>
            </el-form-item>

            <el-form-item
              label="审核状态："
              prop="reviewStatus">
              <el-select v-model="form.returnSourceType" disabled style="width: 100%">
                <el-option v-for="item in reviewStatusEnum" :value="item.value" :label="item.label"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item
              prop="receiveAddress"
              class="form_item_label"
              label="供应商收货地址："
            >
              <el-input v-model="form.receiveAddress" disabled></el-input>
            </el-form-item>
            <el-form-item
              label="附件："
              prop="returnFiles"

            >
              <div
                v-if="detailData.returnFiles && detailData.returnFiles?.length"
              >
                <el-link
                  v-for="link in detailData.returnFiles"
                  :key="link.id"
                  type="primary"
                  :underline="false"
                  @click="downloadFile(link)"
                >
                  {{ link.name }}</el-link
                >
              </div>
            </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 }">
          <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>
    <bpmDetail
      v-if="activeComp === 'bpm' && form.processInstanceId"
      :id="form.processInstanceId"
    ></bpmDetail>

    <div slot="footer" class="footer">
      <el-button @click="cancel">返回</el-button>
    </div>
  </ele-modal>
</template>

<script>
  import { getReturnSaleOrderrecordDetail } from '@/api/purchasingManage/returnGoods';
  import { getByCode } from '@/api/system/dictionary-data';
  import { getFile } from '@/api/system/file';
  import dictMixins from '@/mixins/dictMixins';

  import { reviewStatusEnum } from '@/enum/dict';
  import { copyObj } from '@/utils/util';
  import bpmDetail from "@/views/bpm/processInstance/detail.vue";

  export default {
    components: {bpmDetail},
    mixins: [dictMixins],
    data() {
      return {
        activeComp:'returnOrder',
        tabOptions: [
          { key: 'returnOrder', name: '退货单详情' },
          { key: 'bpm', name: '流程详情' },
        ],
        codeData: [],
        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: 120,
            prop: 'receiveTotalCount',
            label: '收货数量',
            slot: 'receiveTotalCount',
            align: "center"
          },
          {
            width: 120,
            prop: 'totalCount',
            label: '退货数量',
            slot: 'totalCount',
            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",
          },
          {
            width: 200,
            prop: 'receiveTotalWeight',
            label: '收货总重',
            slot: 'receiveTotalWeight',
            align: "center"
          },
          {
            width: 100,
            prop: 'increaseTotalWeight',
            label: '增重重量',
            slot: 'increaseTotalWeight',
            align: "center"
          },
          {
            width: 160,
            prop: 'singlePrice',
            label: '单价',
            slot: 'singlePrice',
            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: 200,
            prop: 'returnReason',
            label: '退货原因',
            slot: 'returnReason',
            align: "center"
          },
          // {
          //   width: 140,
          //   prop: 'returnType',
          //   label: '退货类型',
          //   slot: 'returnType'
          // },

          // {
          //   width: 80,
          //   prop: 'deliveryDays',
          //   label: '交期(天)',
          //   slot: 'deliveryDays'
          // },
          // {
          //   width: 200,
          //   prop: 'guaranteePeriod',
          //   label: '质保期',
          //   slot: 'guaranteePeriod'
          // },

          // {
          //   width: 130,
          //   prop: 'technicalAnswerName',
          //   label: '技术答疑人',
          //   slot: 'technicalAnswerName'
          // },
          // {
          //   width: 220,
          //   prop: 'technicalParams',
          //   label: '技术参数',
          //   slot: 'technicalParams'
          // },
          // {
          //   width: 240,
          //   prop: 'technicalDrawings',
          //   label: '技术图纸',
          //   slot: 'technicalDrawings'
          // },
          {
            width: 220,
            prop: 'remark',
            label: '备注',
            slot: 'remark',
            align: "center"
          }
        ]
      };
    },
    created() {},
    methods: {
      async getcode(code) {
        const res = await getByCode(code);
        this.codeData = res.data;
      },
      async open(row) {
        this.form = row;
        this.visible = true;
        this.getDetailData(row.id);
        this.detailId = row.id;
      },

      cancel() {
        this.$nextTick(() => {
          // 关闭后，销毁所有的表单数据
          (this.form = copyObj(this.formDef)),
            (this.otherForm = copyObj(this.otherFormDef)),
            (this.tableBankData = []);
          this.tableLinkData = [];
          this.visible = false;
          this.activeComp = 'returnOrder';
        });
      },
      downloadFile(file) {
        getFile({ objectName: file.storePath }, file.name);
      },
      async getDetailData(id) {
        this.loading = true;
        await this.getcode('sale_return_type');
        const data = await getReturnSaleOrderrecordDetail(id);
        this.loading = false;
        if (data) {
          let productList = data.productList;
          productList.forEach((r) => {
            let foundObject = this.codeData.find(
              (obj) => obj[r.returnType] != undefined
            );
            if (foundObject) {
              r.returnTypeName = foundObject[r.returnType];
            }
          });
          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>
