<template>
  <ele-modal
    custom-class="ele-dialog-form long-dialog-form"
    :centered="true"
    v-if="visible"
    :visible.sync="visible"
    :title="title"
    :close-on-click-modal="false"
    width="60%"
    @close="cancel"
    :fullscreen="fullscreen"
    :modal="isModal"
  >
  <template slot="title">
     <modalTitle :title="title" @setFullscreen="fullscreen=!fullscreen"></modalTitle>
    </template>
    <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-show="activeComp == 'main'">
      <el-form ref="form" :model="form" class="el-form-box" label-width="120px">
        <headerTitle title="基本信息">
          <!-- <el-button
                  size="small"
                  type="primary"
                  icon="el-icon-s-grid"
                  class="ele-btn-icon"
                  @click="exportTable"
                >
                 导出
                </el-button> -->
        </headerTitle>
        <el-row>
          <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="requirementName">
              <el-input v-model="form.requirementName" disabled></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="需求部门：" prop="requireDeptName">
              <el-input v-model="form.requireDeptName" disabled></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="需求人：" prop="requireUserName">
              <el-input v-model="form.requireUserName" disabled></el-input>
            </el-form-item>
          </el-col>

          <el-col v-if="form.sourceType==1" :span="12">
            <el-form-item label="销售合同">
              <el-input v-model="form.saleContractName" disabled></el-input>
            </el-form-item>
          </el-col>
          <el-col v-if="form.sourceType==1" :span="12">
            <el-form-item label="销售订单">
              <el-input v-model="form.saleOrderNo" disabled></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item prop="remark" label="是否接受拆单">
              <el-select v-model="form.acceptUnpack" placeholder="请选择" disabled style="width: 100%">
                <el-option label="接受" :value="1"></el-option>
                <el-option label="不接受" :value="0"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="完成日期：" prop="finishDate">
              <el-input v-model="form.finishDate" disabled></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="用途：" prop="useTo">
              <el-input type="textarea" v-model="form.useTo" disabled></el-input>
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item prop="remark" label="备注：">
              <el-input type="textarea" v-model="form.remark" disabled></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item prop="askFile" label="附件：">
              <fileMain v-model="form.fileId" type="view"></fileMain>
              <!-- <el-link
                v-if="form.files && form.files !== ''"
                type="primary"
                :underline="false"
                @click="downloadFile(form.files)"
              >
                {{ form.files.name }}
              </el-link
              > -->
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>

      <headerTitle title="需求清单"></headerTitle>
      <ele-pro-table
        ref="table"
        :needPage="false"
        :columns="columns"
        :toolkit="[]"
        :max-height="500"
        :datasource="detailData.detailList"
        row-key="id"
      >
        <template v-slot:expectReceiveDate="scope">
          <div v-if="scope.row.arrivalWay == 1">
            {{ scope.row.expectReceiveDate }}
          </div>
          <div v-if="scope.row.arrivalWay == 2">
            <el-link
              type="primary"
              :underline="false"
              @click.native="handleMethod(scope.row)"
            >
              查看分批时间
            </el-link>
          </div>
        </template>

        <template v-slot:technicalDrawings="{ row }">
          <fileMain v-model="row.technicalDrawings" type="view" ></fileMain>
<!--          <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>
        <template v-slot:files="{ row }">
          <fileMain v-model="row.files" type="view" ></fileMain>
<!--          <div v-if="row.files && row.files?.length">-->
<!--            <el-link-->
<!--              v-for="link in row.files"-->
<!--              :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>
    <timeDialog ref="timeDialogRef" :view="true"></timeDialog>

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

<script>
import {getDetail} from '@/api/purchasingManage/purchaseNeedManage';
import {getFile} from '@/api/system/file';
import dictMixins from '@/mixins/dictMixins';
import {copyObj} from '@/utils/util';
import bpmDetail from '@/views/bpm/processInstance/detail.vue';
import timeDialog from '@/components/timeDialog/index.vue';
import fileMain from '@/components/addDoc/index';
import modalTitle from '@/BIZComponents/modalTitle.vue';

export default {
  mixins: [dictMixins],
  props: {
    isModal: {
      default: true
    }
  },
  components: {
    bpmDetail, timeDialog,fileMain,modalTitle
  },
  data() {
    return {
      fullscreen:false,
      activeComp: 'main',
      tabOptions: [
        {key: 'main', name: '需求详情'},
        {key: 'bpm', name: '流程详情'}
      ],
      visible: false,
      title: '详情',
      row: {},
      form: {},
      detailData: {},
      columns: [
        {
          width: 45,
          type: 'index',
          columnKey: 'index',
          align: 'center',
          fixed: 'left'
        },
        {
          width: 150,
          prop: 'productCategoryName',
          label: '分类',
          slot: 'productCategoryName',
          align: 'center',
        },
        {
          width: 140,
          prop: 'productCode',
          label: '编码',
          slot: 'productCode',
          align: 'center',
        },
        {
          width: 240,
          prop: 'productName',
          label: '名称',
          slot: 'productName',
          align: 'center',
        },
        {
          width: 150,
          prop: 'productBrand',
          label: '牌号',
          slot: 'productBrand',
          align: 'center',
        },
        {
          width: 80,
          prop: 'totalCount',
          label: '数量',
          slot: 'totalCount',
          align: 'center',
        },
        {
          width: 100,
          prop: 'measuringUnit',
          label: '单位',
          slot: 'measuringUnit',
          align: 'center',
        },
        {
          width: 130,
          prop: 'modelType',
          label: '型号',
          slot: 'modelType',
          align: 'center',
        },
        {
          width: 120,
          prop: 'specification',
          label: '规格',
          slot: 'specification',
          align: 'center',
        },
        {
          width: 130,
          prop: 'brand',
          label: '品牌',
          slot: 'brand',
          align: 'center',
        },
        {
          width: 150,
          prop: 'arrivalWay',
          label: '	到货方式',
          formatter: (row, column, cellValue) => {
            return cellValue == 1 ? '一次性到货' : '分批到货';
          },
          align: 'center',
        },
        {
          width: 170,
          prop: 'expectReceiveDate',
          label: '到货日期',
          slot: 'expectReceiveDate',
          align: 'center',
        },
        {
          width: 160,
          prop: 'technicalDrawings',
          label: '图纸附件',
          slot: 'technicalDrawings',
          align: 'center',
        },
        {
          width: 140,
          prop: 'files',
          label: '附件',
          slot: 'files',
          align: 'center',
        },
        {
          width: 220,
          prop: 'remark',
          label: '备注',
          slot: 'remark',
          align: 'center',
        }
      ]
    };
  },
  methods: {
    async open(row) {
      this.visible = true;
      this.getDetailData(row.requirementId || row.id);
    },
    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);
    },
    handleMethod(row) {
      this.$refs.timeDialogRef.open(row);
    },
    async getDetailData(id) {
      this.loading = true;
      const data = await getDetail(id);
      this.loading = false;
      if (data) {
        this.form = data;
        if (this.form.fileId) {
            this.form.fileId = JSON.parse(this.form.fileId);
          }
        this.detailData = data;
        if (data.files && data.files.length > 0) {
          this.form.files = data.files[0];
        } else {
          this.form.files = null;
        }
      }
    }
  }
};
</script>

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

.headbox {
  display: flex;
  justify-content: space-between;
  align-items: center;

  .amount {
    font-size: 14px;
    font-weight: bold;
  }
}
</style>
