index.vue 4.38 KB
<!--
 * @Author: gjn
 * @Date: 2023-11-10 10:29:39
 * @Description:批量签审_检验入库响应
-->
<template>
  <div class="warehouseInTest">
    <dee-as-com
      ref="search"
      :lay-config="{ typeName: 'JobResponseInStorage', layKey: 'batchSign_jobResExp_search'}"
      :basic-data="defaultData"
      @searchEvent="searchEvent"
    />
    <!-- tab页签 -->
    <el-tabs v-model="active" type="border-card" class="detailTabs" @tab-click="tabClick">
      <el-tab-pane :label="'器材验收单(' + totals.MaterialTotal + ')'" name="Material">
        <dee-as-com
          ref="MaterialTable"
          class="list-table"
          :basic-data=" {...basicData,tableType:'Material'}"
          :lay-config="{ typeName: 'JobResponseInStorage', layKey: 'batchSign_jobResponseInTest'}"
          @requestSuccess="onRequestSuccess($event,'Material')"
          @selectionChange="selectionChange($event,'Material')"
        />
      </el-tab-pane>
      <el-tab-pane :label="'机载系统设备验收单(' + totals.AirEquipmentTotal + ')'" name="AirEquipment">
        <dee-as-com
          ref="AirEquipmentTable"
          class="list-table"
          :lay-config="{ typeName: 'JobResponseInStorage', layKey: 'airborne_batchSign_jobResponseInTest'}"
          :basic-data=" {...basicData,tableType:'AirEquipment'}"
          @requestSuccess="onRequestSuccess($event,'AirEquipment')"
          @selectionChange="selectionChange($event,'AirEquipment')"
        />
      </el-tab-pane>
      <el-tab-pane :label="'外包产品验收单(' + totals.OutSourceTotal + ')'" name="OutSource">
        <dee-as-com
          ref="OutSourceTable"
          class="list-table"
          :lay-config="{ typeName: 'JobResponseInStorage', layKey: 'outsource_batchSign_jobResponseInTest'}"
          :basic-data="{...basicData,tableType:'OutSource'}"
          @requestSuccess="onRequestSuccess($event,'OutSource')"
          @selectionChange="selectionChange($event,'OutSource')"
        />
      </el-tab-pane>
    </el-tabs>
  </div>
</template>

<script>
export default {
  name: 'WarehouseExamine',
  components: {},
  props: {
    selectData: {
      type: Object,
      default: () => {}
    }
  },
  data() {
    const _that = this
    return {
      active: 'Material',
      defaultData: {},
      totals: {
        MaterialTotal: 0,
        AirEquipmentTotal: 0,
        OutSourceTotal: 0
      },
      billTypeList: [],
      searchItems: [],
      tabNames: [
        'Material',
        'AirEquipment',
        'OutSource'
      ],
      selectionRows: {},
      basicData: { selectData: _that.selectData, selectionRows: [] }
    }
  },
  computed: {
  },
  watch: {
    selectData: {
      immediate: true,
      deep: true,
      handler(val) {
        if (val && val.taskKey) {
          this.$nextTick(() => {
            this.getTableData()
          })
        }
      }
    }
  },
  created() {
  },
  mounted() {
    this.$bus.$on('refreshBackItem', () => {
      this.$nextTick(() => {
        if (this.$refs[this.active + 'Table']) {
          (this.$refs[this.active + 'Table'].$refs.asCom.selfDrawerShow = false)
          this.$refs[this.active + 'Table'].$refs.asCom.getData(this.searchItems)
        }
      })
    })
  },
  // 组件方法
  methods: {
    onRequestSuccess(res, tabName) {
      this.$set(this.totals, tabName + 'Total', res.items.totalElements)
    },
    searchEvent(val) {
      this.searchItems = val.items
      this.getTableData()
    },
    getTableData() {
      this.tabNames.forEach(item => {
        const el = this.$refs[item + 'Table']
        if (el && el.$refs.asCom) {
          el.$refs.asCom.getData(this.searchItems)
        }
      })
    },
    selectionChange(val, tabName) {
      this.$set(this.basicData, 'selectionRows', val)
    },
    tabClick() {
      this.$set(this.basicData, 'selectionRows', [])
    }
  }
}
</script>

<style  lang='scss'>
.warehouseInTest{
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  padding:0 4px;
  .detailTabs {
    height: calc(100% - 40px);
    border: 0;
    .dee-table-header{
      padding: 0px 10px;
      .dee-tools{
       margin: 4px 0;
     }
    }
  }
  .el-tabs--border-card > .el-tabs__content {
    padding: 0px;
    height: calc(100% - 70px);
    .el-tab-pane{
      height: 100%;
    }
  }
  .el-tabs--border-card > .el-tabs__header {
    .el-tabs__nav-wrap {
      margin: 0px;
    }
    .el-tabs__item.is-active {
      color: #409eff;
    }
  }
}
</style>