zenglf
2023-09-18 92ff846fb659c62037a32b1d8c15eae9df9d9b54
src/views/spare/modules/sparePartReceive/SpareSelectList.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,293 @@
<template>
  <!--支持全屏缩放-->
  <a-modal :visible='visible' :title='title' switchFullscreen @ok='handleSubmit' @cancel='close' style='top:50px'
           cancelText='关闭' :width='1800'>
    <a-card :bordered='false'>
      <div class='table-page-search-wrapper'>
        <a-form layout='inline' @keyup.enter.native='searchQuery'>
          <a-row :gutter='24'>
            <a-col :md='6' :sm='4'>
              <a-form-item label='备件编码'>
                <a-input placeholder='请输入备件编码' v-model='queryParam.num'/>
              </a-form-item>
            </a-col>
            <a-col :md='6' :sm='4'>
              <a-form-item label='备件名称'>
                <a-input placeholder='请输入备件名称' v-model='queryParam.name'/>
              </a-form-item>
            </a-col>
            <a-col :md='3'>
              <span style='float: left;overflow: hidden;' class='table-page-search-submitButtons'>
                <a-button type='primary' @click='searchQuery' icon='search'>查询</a-button>
                <a-button @click='searchReset' icon='reload' style='margin-left: 10px'>重置</a-button>
              </span>
            </a-col>
          </a-row>
        </a-form>
      </div>
      <a-row :gutter='24'>
        <a-col :md='24' :sm='12'>
          <a-table ref='table'
                   :scroll='{ x: true }'
                   size='middle' rowKey='id'
                   bordered
                   :columns='columns'
                   :dataSource='dataSource'
                   :pagination='ipagination'
                   :rowSelection='rowSelection'
                   :loading='loading'
                   @change='handleTableChange'>
          </a-table>
        </a-col>
      </a-row>
    </a-card>
  </a-modal>
</template>
<script>
import { filterObj } from '@/utils/util'
import { getAction } from '@api/manage'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
export default {
  name: 'SpareSelectList',
  mixins: [JeecgListMixin],
  components: {},
  data() {
    return {
      queryParam: {},
      labelCol: {
        xs: { span: 24 },
        sm: { span: 5 }
      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 16 }
      },
      columns: [
        {
          title: '备件编码',
          align: 'center',
          dataIndex: 'spareNum',
          ellipsis: true
        },
        {
          title: '备件名称',
          align: 'center',
          dataIndex: 'spareName',
          ellipsis: true
        },
        {
          title: '型号',
          align: 'center',
          dataIndex: 'model',
        },
        {
          title: '规格',
          align: 'center',
          dataIndex: 'specification',
          ellipsis: true
        },
        {
          title: '批次号',
          align: 'center',
          dataIndex: 'batchNum',
        },
        {
          title: '制造商',
          align: 'center',
          dataIndex: 'constructorName',
        },
        {
          title: '出厂日期',
          align: 'center',
          dataIndex: 'manufactureDate',
        },
        { title: '有效期',
          align: 'center',
          dataIndex: 'validityPeriod',
        },
        { title: '单位',
          align: 'center',
          dataIndex: 'mainUnitId_dictText',
        },
        /* { title: '辅单位',
          align: 'center',
          dataIndex: 'auxiliaryUnitId_dictText',
          width: 150
        }, */
        { title: '数量',
          align: 'center',
          dataIndex: 'mainQuantity',
        },
      /*   { title: '辅数量',
          align: 'center',
          dataIndex: 'auxiliaryQuantity',
          width: 150
        }, */
       /*  {
          title: '换算比例',
          align: 'center',
          dataIndex: 'conversionRatio',
          width: 150
        } */
      ],
      selectedRowKeys: [],
      oldSelectRows: [],
      scrollTrigger: {},
      dataSource: [],
      selectSource: [],
      selectionRows: [],
      title: '选择备件',
      ipagination: {
        current: 1,
        pageSize: 10,
        pageSizeOptions: ['5', '10', '30', '50', '100'],
        showTotal: (total, range) => {
          return range[0] + '-' + range[1] + ' å…±' + total + '条'
        },
        showQuickJumper: true,
        showSizeChanger: true,
        total: 0
      },
      isorter: {
        column: 'num',
        order: 'desc'
      },
      visible: false,
      loading: false,
      url: {
        list: '/spare/sparePartScrap/getSpareList'
      },
    }
  },
  computed: {
    rowSelection() {
      return {
        type: 'checkbox',
        onChange: (selectedRowKeys, selectedRows) => {
          this.selectedRowKeys = selectedRowKeys
          this.onSelectChange(selectedRows)
        },
        getCheckboxProps: record => ({
          props: {
            disabled: record.distable
          }
        }),
        selectedRowKeys: this.selectedRowKeys
      }
    }
  },
  methods: {
    async loadData(arg) {
      if (arg === 1) {
        this.ipagination.current = 1
      }
      this.loading = true
      let params = this.getQueryParams()//查询条件
      await getAction(this.url.list, params).then((res) => {
        if (res.success) {
          for (let i = 0; i < res.result.records.length; i++) {
            if (this.oldSelectRows.indexOf(res.result.records[i].id) > -1) {
              res.result.records[i].distable = true
            } else {
              res.result.records[i].distable = false
            }
          }
          this.dataSource = res.result.records
          this.ipagination.total = res.result.total
        }
        if (res.code === 510) {
          this.$message.warning(res.message)
        }
        this.loading = false
      })
    },
    showModals(oldSelectRows) {
      console.log(oldSelectRows)
      this.oldSelectRows = oldSelectRows
      this.visible = true
      this.loadData(1)
    },
    getQueryParams() {
      let param = Object.assign({}, this.queryParam, this.isorter)
      param.field = this.getQueryField()
      param.pageNo = this.ipagination.current
      param.pageSize = this.ipagination.pageSize
      return filterObj(param)
    },
    //查询条件处理
    getQueryField() {
      let str = 'id,'
      for (let a = 0; a < this.columns.length; a++) {
        str += ',' + this.columns[a].dataIndex
      }
      return str
    },
    searchReset(num) {
      this.queryParam = []
      if (num !== 0) {
        this.loadData(1)
      }
      this.selectborrowIds = []
    },
    close() {
      this.searchReset(0)
      this.selectedRowKeys = []
      this.visible = false
    },
    handleTableChange(pagination, filters, sorter) {
      //TODO ç­›é€‰
      if (Object.keys(sorter).length > 0) {
        this.isorter.column = sorter.field
        this.isorter.order = 'ascend' === sorter.order ? 'asc' : 'desc'
      }
      this.ipagination = pagination
      this.loadData()
    },
    handleSubmit() {
      this.$bus.$emit('selectionRows', this.selectionRows)
      this.searchReset(0)
      this.close()
    },
    onSelectChange(selectionRows) {
      this.selectionRows = selectionRows
    },
    searchQuery() {
      this.loadData(1)
    },
  }
}
</script>
<style scoped>
.ant-table-tbody .ant-table-row td {
  padding-top: 10px;
  padding-bottom: 10px;
}
#components-layout-demo-custom-trigger .trigger {
  font-size: 18px;
  line-height: 64px;
  padding: 0 24px;
  cursor: pointer;
  transition: color 0.3s;
}
</style>