supplierPurchase.vue 7.37 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.materialCode"></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">
            <a-form-item label="联系电话">
              <a-input placeholder="请输入联系电话" v-model="queryParam.phone"></a-input>
            </a-form-item>
          </a-col>
        </a-row>
      </a-form>
    </div>

    <div class="table-operator">
      <a-row :gutter="24">
        <a-col :md="6" :sm="8">
          <a-button type="primary" @click="query" icon="search">查询</a-button>
          <a-button type="primary" @click="searchReset" eicon="reload" style="margin-left: 8px">重置</a-button>
          <a-button type="primary"  icon="printer" @click="print()" style="margin-left: 8px">打印</a-button>
        </a-col>
      </a-row>
    </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>
    <purchase-in-print-modal ref="purchaseInPrintModal"></purchase-in-print-modal>

  </a-card>

</template>

<script>

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

export default {
  name: 'supplierPurchase',
  mixins: [JeecgListMixin],
  components: {
    PurchaseInPrintModal
  },
  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
        }
      })
    },
    query(){
      let params = {
        "code": this.queryParam.code,
        "supplier": this.queryParam.supplier,
        "phone":this.queryParam.phone,
        "materialCode":this.queryParam.materialCode,
      }
      getPurchase(params).then((res) => {
        if (res.success) {
          this.dataSource = res.result.records;
        }
      })
    },
    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')
    },
    print() {
      if (this.selectedRowKeys.length <= 0) {
        this.$message.warning('请选择一条记录!')
        return "";
      }
      this.$refs.purchaseInPrintModal.open(this.selectedRowKeys)
    },
  }
}
</script>

<style scoped>

</style>