supplierPurchase.vue 6.34 KB
<template>
  <a-card :bordered="false">

    <!-- 查询区域 -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline" @keyup.enter.native="searchQuery">
        <a-row :gutter="24">
          <a-input v-model="queryParam.bomId" v-show="false"></a-input>
          <a-col :md="6" :sm="8">
            <a-form-item label="采购单号">
              <a-input placeholder="请输入采购单号" v-model="queryParam.code"></a-input>
            </a-form-item>
          </a-col>
          <a-col :md="6" :sm="8">
            <a-form-item label="供应商">
              <a-input placeholder="请输入供应商" v-model="queryParam.supplier"></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="query" icon="search">查询</a-button>
                <a-button type="primary" @click="searchReset" eicon="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>
    </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="flag" :color="longTermColor(flag)">{{ longTerm(flag) }}</a-tag>
      </span>

      <span slot="tradeTime" slot-scope="time">{{ timeFormat(time) }}</span>
    </a-table>
  </a-card>
</template>

<script>

import { JeecgListMixin } from '../../mixins/JeecgListMixin'
import { ajaxGetDictItems, getPurchase, mergePurchase } from '../../api/api'
import moment from 'moment'

export default {
  name: 'supplierPurchase',
  mixins: [JeecgListMixin],
  data() {
    return {
      loading: false,
      pagination: {
        defaultPageSize: 5,
        showTotal: total => `共 ${total} 条数据`,
        showSizeChanger: true,
        pageSizeOptions: ['5', '10', '15', '20'],
        onShowSizeChange: (current, pageSize) => this.pageSize = pageSize
      },
      columns: [
        {
          title: '采购单号',
          dataIndex: 'code',
          key: 'code',
          align: 'center'
        }, {
          title: '物料编码',
          dataIndex: 'materialCode',
          key: 'materialCode',
          align: 'center'
        }, {
          title: '物料名称',
          dataIndex: 'materialName',
          key: 'materialName',
          align: 'center'
        }, {
          title: '物料单位',
          dataIndex: 'unit',
          key: 'unit',
          align: 'center'
        }, {
          title: '数量',
          dataIndex: 'qty',
          key: 'qty',
          align: 'center'
        },{
          title: '工作令号',
          dataIndex: 'workNo',
          key: 'workNo',
          align: 'center'
        }, {
          title: '状态',
          dataIndex: 'status',
          key: 'status',
          align: 'center',
          scopedSlots: { customRender: 'status' }
        }, {
          title: '供应商',
          dataIndex: 'supplier',
          key: 'supplier',
          align: 'center'
        }, {
          title: '联系人',
          dataIndex: 'contact',
          key: 'contact',
          align: 'center'
        }, {
          title: '联系方式',
          dataIndex: 'phone',
          key: 'phone',
          align: 'center'
          // },{
          //   title: '计划开始时间',
          //   dataIndex: 'planStartTime',
          //   key: 'planStartTime'
        }, {
          title: '计划完成时间',
          dataIndex: 'planEndTime',
          key: 'planEndTime',
          align: 'center',
          scopedSlots: {
            customRender: 'tradeTime'
          }
          // },{
          //   title: '实际开始时间',
          //   dataIndex: 'actualStartTime',
          //   key: 'actualStartTime'
        }, {
          title: '实际完成时间',
          dataIndex: 'actualEndTime',
          key: 'actualEndTime',
          align: 'center',
          scopedSlots: {
            customRender: 'tradeTime'
          }
        }, {
          title: '是否为长周期件',
          dataIndex: 'flag',
          key: 'flag',
          align: 'center',
          scopedSlots: { customRender: 'flag' }
        }, {
          title: '备注',
          dataIndex: 'remark',
          key: 'remark'
        }
      ],
      url: {
        list: '/material/purchase/list',
        importExcelUrl: '/material/purchase/importExcel'
      },
      purchasedStatusList: [],
      queryParam: []
    }
  },
  created() {
    this.getPurchaseStatus()
  },
  methods: {
    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')
    }
  }
}
</script>

<style scoped>

</style>