PurchaseLongIn.vue 8.21 KB
<template>
  <a-card>
    <div class="table-page-search-wrapper" style="margin-top: 20px">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
          <a-col :md="6" :sm="8">
            <a-form-item label="工作令号">
              <a-input placeholder="请输入工作令号" v-model="queryParam.workNo"></a-input>
            </a-form-item>
          </a-col>
          <a-col :md="6" :sm="8">
            <a-form-item label="物料编码">
              <a-input placeholder="请输入物料编码" v-model="queryParam.materialcode"></a-input>
            </a-form-item>
          </a-col>
          <a-col :md="6" :sm="8">
            <a-form-item label="物料名称">
              <a-input placeholder="请输入物料名称" v-model="queryParam.materialname"></a-input>
            </a-form-item>
          </a-col>
          <a-col :md="6" :sm="8">
              <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
                <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
                <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
              </span>
          </a-col>
        </a-row>
      </a-form>
    </div>
    <div class="table-operator">
        <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
            <a-button type="primary" @click="print()" icon="printer">打印</a-button>
          </span>
      <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
             <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
                       :action="importExcelUrl" @change="handleImportExcel">
              <a-button type="primary" icon="import">导入</a-button>
              </a-upload>
          </span>
      <span>
            <a-button type="primary" @click="batchEditOpen()" icon="edit" style="margin-left: 8px">批量编辑</a-button>
          </span>
    </div>
    <a-table
      ref="table"
      bordered
      size="middle"
      rowKey="id"
      :columns="columns"
      :dataSource="dataSource"
      :pagination="ipagination"
      :loading="loading"
      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
      @change="handleTableChange">

        <span slot="status" slot-scope="status">
          <a-tag :key="status" :color="solutionPurchaseColor(status)">
            {{ solutionPurchaseStatus(status) }}
          </a-tag>
        </span>

      <span slot="flag" slot-scope="flag">
        <a-tag :key="status" :color="longTermColor(flag)">
          {{ longTerm(flag) }}
        </a-tag>
      </span>
      <span slot="tradeTime" slot-scope="time">
        {{ timeFormat(time) }}
      </span>

      <span slot="action" slot-scope="text, record">
        <a @click="handleEdit(record)">编辑</a>
      </span>
    </a-table>

    <purchase-in-modal ref="modalForm" @ok="modalFormOk"></purchase-in-modal>
    <purchase-in-batch-modal ref="batchModalForm"></purchase-in-batch-modal>

  </a-card>
</template>

<script>
import { JeecgListMixin } from '../../mixins/JeecgListMixin'
import PurchaseInModal from './modules/PurchaseInModal'
import PurchaseInBatchModal from './modules/PurchaseInBatchModal'
import { ajaxGetDictItems, getPurchase } from '../../api/api'
import { filterObj } from '@/utils/util'
import { getAction } from '@/api/manage'
import moment from 'moment'

export default {
  name: 'PurchaseLongIn',
  mixins: [JeecgListMixin],
  components: {
    PurchaseInModal,
    PurchaseInBatchModal
  },
  data() {
    return {
      disableMixinCreated: true,
      loading: false,
      pagination: {
        defaultPageSize: 5,
        showTotal: total => `共 ${total} 条数据`,
        showSizeChanger: true,
        pageSizeOptions: ['5', '10', '15', '20'],
        onShowSizeChange: (current, pageSize) => this.pageSize = pageSize
      },
      columns: [
        {
          title: '项目名称',
          dataIndex: 'projectname',
          key: 'projectname'
        },
        {
          title: '工作令',
          dataIndex: 'workno',
          key: 'workno'
        },
        {
          title: '采购单号',
          dataIndex: 'code',
          key: 'code'
        }, {
          title: '物料编码',
          dataIndex: 'materialcode',
          key: 'materialcode'
        }, {
          title: '物料名称',
          dataIndex: 'materialname',
          key: 'materialname'
        }, {
          title: '物料单位',
          dataIndex: 'unit',
          key: 'unit'
        }, {
          title: '数量',
          dataIndex: 'qty',
          key: 'qty'
          // },{
          //   title: '公司',
          //   dataIndex: 'vendor',
          //   key: 'vendor'
        }, {
          title: '状态',
          dataIndex: 'status',
          key: 'status',
          align: 'center',
          scopedSlots: { customRender: 'status' }
        },  {
          title: '联系方式',
          dataIndex: 'phone',
          key: 'phone'
          // },{
          //   title: '计划开始时间',
          //   dataIndex: 'planStartTime',
          //   key: 'planStartTime'
        }, {
          title: '到货时间',
          dataIndex: 'actualEndTime',
          key: 'actualEndTime',
          scopedSlots: {
            customRender: 'tradeTime'
          }
        },{
          title: '收货时间',
          dataIndex: 'receiptTime',
          key: 'receiptTime',
          align: 'center',
          scopedSlots: {
            customRender: 'tradeTime'
          }
        },{
          title: '领料时间',
          dataIndex: 'pickingTime',
          key: 'pickingTime',
          align: 'center',
          scopedSlots: {
            customRender: 'tradeTime'
          }
        },{
          title: '耗时(天)',
          dataIndex: 'days',
          key: 'days',
        },{
          title: '备注',
          dataIndex: 'remark',
          key: 'remark'
        }
      ],
      url: {
        list: '/material/purchaseLong/list',
        importExcelUrl: '/material/purchase/importExcel'
      },
      purchasedStatusList: [],
      queryParam: []
    }
  },
  created() {
    this.getPurchaseStatus();
    this.searchQuery();
  },
  methods: {
    batchEditOpen() {
      if (this.selectedRowKeys.length <= 0) {
        this.$message.warning('请选择一条记录!')
      } else {
        this.ids = ''
        for (var a = 0; a < this.selectedRowKeys.length; a++) {
          this.ids += this.selectedRowKeys[a] + ','
        }
        this.$refs.batchModalForm.edit(this.ids)
      }
    },
    getPurchaseList(params) {
      getLongPurchase(params).then((res) => {
        if (res.success) {
          this.loading = false
          this.dataSource = res.result.records
          if (res.result.total) {
            this.ipagination.total = res.result.total
          } else {
            this.ipagination.total = 0
          }
        }
      })
    },
    getPurchaseStatus() {
      ajaxGetDictItems('purchased_status').then((res) => {
        if (res.success) {
          this.purchasedStatusList = res.result
        }
      })
    },
    solutionPurchaseStatus(value) {
      var actions = []
      Object.keys(this.purchasedStatusList).some((key) => {
        if (this.purchasedStatusList[key].value == ('' + value)) {
          actions.push(this.purchasedStatusList[key].text)
          return true
        }
      })
      return actions.join('')
    },
    solutionPurchaseColor(value) {
      var actions = ''
      Object.keys(this.purchasedStatusList).some((key) => {
        if (this.purchasedStatusList[key].value == ('' + value)) {
          actions = this.purchasedStatusList[key].color
        }
      })
      return actions
    },
    longTerm(flag) {
      if (flag == '0') {
        return '否'
      } else {
        return '是'
      }
    },
    longTermColor(flag) {
      if (flag == '0') {
        return 'volcano'
      } else {
        return 'blue'
      }
    },
    timeFormat(val) {
      return moment(val).format('YYYY-MM-DD')
    }
  },
  computed: {
    importExcelUrl: function() {
      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
    }
  }
}
</script>

<style scoped>

</style>