Browse Source

完善履历

whj 1 year ago
parent
commit
43b42d3e59

+ 15 - 1
src/api/purchase/purchase-order.js

@@ -16,7 +16,21 @@ export function getPurchaseOrderPage (parameter) {
     }
   })
 }
-
+/**
+ * page func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function getPurchaseOrderPage2 (parameter) {
+  return axios({
+    url: '/longyanpurchaseorder/order/page?' + stringify(parameter),
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
 /**
  * add func
  * parameter: { }

+ 5 - 1
src/router/generator-platform-routers.js

@@ -413,7 +413,11 @@ const constantRouterComponents = {
   'ToolWaitCheck': () => import('@/views/tool/tool/ToolWaitCheck'),
   'ToolLog': () => import('@/views/tool/tool-log/ToolLog'),
   // 日历
-  'Calendar': () => import('@/views/calendar/Calendar')
+  'Calendar': () => import('@/views/calendar/Calendar'),
+  // 采购
+  'PurchaseOrderPage': () => import('@/views/purchase/purchase-order-page/PurchaseOrderPage'),
+  'PurchaseOrderRecord': () => import('@/views/purchase/purchase-order-record/PurchaseOrderRecord'),
+  'PurchaseOrderReport': () => import('@/views/purchase/purchase-order-report/PurchaseOrderReport')
 }
 
 // 前端未找到页面路由(固定不用改)

+ 334 - 0
src/views/purchase/purchase-order-page/PurchaseOrderPage.vue

@@ -0,0 +1,334 @@
+<template>
+  <a-card :bordered="false">
+    <div v-show="visible">
+      <div class="table-page-search-wrapper" @keyup.enter="handleEnter">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="关键字">
+                <a-input v-model.trim="queryParam.keyword" placeholder="请输入名称/类型名称"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8 || 24" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
+                <a-button style="margin-left: 8px" @click="resetSearchForm">重置</a-button>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+
+      <div class="table-operator" style="margin-bottom: 8px;">
+        <!--      <a-button v-if="$auth('purchase-purchase-orders-add')" type="primary" icon="plus" @click="$refs.baseModal.base()">新增</a-button>-->
+        <a-dropdown v-action:edit v-if="selectedRowKeys.length > 0 && $auth('purchase-purchase-orders-del')">
+          <a-menu slot="overlay">
+            <a-popconfirm title="是否要删除所选数据?" @confirm="batchDelete()">
+              <a-menu-item key="1"><a-icon type="delete" /><a>删除</a></a-menu-item>
+            </a-popconfirm>
+          </a-menu>
+          <a-button style="margin-left: 8px">
+            批量操作 <a-icon type="down" />
+          </a-button>
+        </a-dropdown>
+      </div>
+
+      <s-table
+        ref="table"
+        size="default"
+        rowKey="id"
+        :columns="columns"
+        :scroll="{x: 1, y: BaseTool.Constant.scrollY }"
+        :data="loadData"
+        :alert="options.alert"
+        :rowSelection="options.rowSelection"
+        showPagination="auto"
+      >
+        <span slot="action" slot-scope="record">
+          <template>
+          </template>
+        </span>
+      </s-table>
+    </div>
+    <!--    <purchase-dispatch-order ref="dispatchOrder" @ok="handleOk"/>-->
+  </a-card>
+</template>
+
+<script>
+import { STable, Ellipsis } from '@/components'
+import { getPurchaseOrderPage2, deletePurchaseOrders } from '@/api/purchase/purchase-order'
+
+export default {
+  name: 'PurchaseOrderList',
+  components: {
+    STable,
+    Ellipsis
+  },
+  data () {
+    return {
+      // 查询参数
+      queryParam: {
+      },
+      visible: true,
+      user: this.$store.getters.userInfo,
+      dollarExchangeRate: this.$store.getters.rmbRate,
+      // 表头
+      columns: [
+        {
+          title: '序号',
+          dataIndex: 'index',
+          checked: true,
+          width: 70,
+          customRender: (text, record, index) => {
+            return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}`
+          }
+        },
+        {
+          title: '单号',
+          dataIndex: 'billNo',
+          checked: true,
+          width: 200
+        },
+        {
+          title: '公司名称',
+          dataIndex: 'companyName',
+          checked: true,
+          width: 150
+        },
+        {
+          title: '项目名称',
+          dataIndex: 'projectName',
+          checked: true,
+          width: 150
+        },
+        {
+          title: '采购员名称',
+          dataIndex: 'purchaserName',
+          checked: true,
+          width: 150
+        },
+        {
+          title: '项目记账币种',
+          dataIndex: 'projectMoneyType',
+          checked: true,
+          width: 120,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Table.getMapText(this.moneyTypeMap, text)
+          }
+        },
+        {
+          title: '类型',
+          dataIndex: 'type',
+          checked: true,
+          width: 100,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Table.getMapText(this.typeMap, text)
+          }
+        },
+        {
+          title: '需求日期',
+          dataIndex: 'demandDate',
+          checked: true,
+          width: 150
+        },
+
+        {
+          title: '预计总金额',
+          dataIndex: 'originMoney',
+          checked: true,
+          width: 120,
+          customRender: (text, record, index) => {
+            let dollarExchangeRate = 1
+            if (record.projectMoneyType === this.DictCache.VALUE.MONEY_TYPE.RMB) {
+              dollarExchangeRate = this.dollarExchangeRate
+            }
+            return this.BaseTool.Amount.formatter(text) + this.BaseTool.Number.divForDollar(text, dollarExchangeRate, 2)
+          }
+        },
+        {
+          title: '实际总金额(按记账主币)',
+          dataIndex: 'accountMoney',
+          checked: true,
+          width: 120,
+          customRender: (text, record, index) => {
+            let dollarExchangeRate = 1
+            if (record.projectMoneyType === this.DictCache.VALUE.MONEY_TYPE.RMB) {
+              dollarExchangeRate = this.dollarExchangeRate
+            }
+            return this.BaseTool.Amount.formatter(text) + this.BaseTool.Number.divForDollar(text, dollarExchangeRate, 2)
+          }
+        },
+        {
+          title: '实际总金额(按询价主币)',
+          dataIndex: 'money',
+          checked: true,
+          width: 120,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Amount.formatter(text) + this.BaseTool.Table.getMapTextForMoneyType(this.moneyTypeMap, record.moneyType)
+          }
+        },
+        {
+          title: '总费用(按记账主币,含发运)',
+          dataIndex: 'accountTotalMoney',
+          checked: true,
+          width: 150,
+          customRender: (text, record, index) => {
+            let dollarExchangeRate = 1
+            if (record.projectMoneyType === this.DictCache.VALUE.MONEY_TYPE.RMB) {
+              dollarExchangeRate = this.dollarExchangeRate
+            }
+            return this.BaseTool.Amount.formatter(text) + this.BaseTool.Number.divForDollar(text, dollarExchangeRate, 2)
+          }
+        },
+        // {
+        //   title: '总费用(按询价主币)',
+        //   dataIndex: 'totalMoney',
+        //   checked: true,
+        //   width: 120,
+        //   customRender: (text, record, index) => {
+        //     return this.BaseTool.Amount.formatter(text) + this.BaseTool.Table.getMapTextForMoneyType(this.moneyTypeMap, record.moneyType)
+        //   }
+        // },
+        {
+          title: '数量',
+          dataIndex: 'quantity',
+          checked: true,
+          width: 90,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Amount.formatter(text)
+          }
+        },
+        {
+          title: '状态',
+          dataIndex: 'status',
+          checked: true,
+          fixed: 'right',
+          width: 100,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Table.statusCustomRenderDict(this, text, record,
+              this.DictCache.COLOR.PURCHASE_ORDER_STATUS, this.statusMap)
+          }
+        },
+        {
+          title: '备注',
+          width: 100,
+          dataIndex: 'remark'
+        },
+        {
+          title: '操作',
+          key: 'action',
+          width: '200px',
+          fixed: 'right',
+          checked: true,
+          align: 'center',
+          scopedSlots: { customRender: 'action' }
+        }
+      ],
+      // 下拉框map
+      typeMap: {},
+      statusMap: {},
+      payTypeMap: {},
+      invoiceTypeMap: {},
+      moneyTypeMap: {},
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        const user = this.$store.getters.userInfo
+        const roleCodes = user.roleCodes.join(',')
+        parameter = {
+          ...parameter,
+          ...this.queryParam,
+          projectId: roleCodes.indexOf('FGS_') > -1 ? null : user.projectId,
+          dataScope: {
+            sortBy: 'asc,desc',
+            sortName: 'status,update_time'
+          }
+        }
+        return getPurchaseOrderPage2(Object.assign(parameter, this.queryParam))
+          .then(res => {
+            return res.data
+          })
+      },
+      selectedRowKeys: [],
+      selectedRows: [],
+
+      options: {
+        alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+        rowSelection: {
+          selectedRowKeys: this.selectedRowKeys,
+          onChange: this.onSelectChange
+        }
+      },
+      optionAlertShow: false
+    }
+  },
+  created () {
+    // 下拉框map
+    this.typeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PURCHASE_APPLY_TYPE)
+    this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PURCHASE_ORDER_STATUS)
+    this.payTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PURCHASE_PAY_TYPE)
+    this.invoiceTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PURCHASE_INVOICE_TYPE)
+    this.moneyTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.MONEY_TYPE)
+    this.tableOption()
+  },
+  methods: {
+    tableOption () {
+      if (!this.optionAlertShow) {
+        this.options = {
+          alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+          rowSelection: {
+            selectedRowKeys: this.selectedRowKeys,
+            onChange: this.onSelectChange,
+            getCheckboxProps: record => ({
+              props: {
+                disabled: false,
+                name: record.id
+              }
+            })
+          }
+        }
+        this.optionAlertShow = true
+      } else {
+        this.options = {
+          alert: false,
+          rowSelection: null
+        }
+        this.optionAlertShow = false
+      }
+    },
+    handleOk () {
+      this.visible = true
+      this.$refs.table.refresh()
+    },
+    onSelectChange (selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    },
+    resetSearchForm () {
+      this.queryParam = {
+      }
+      this.$refs.table.refresh(true)
+    },
+    batchDelete (id) {
+      let ids = []
+      if (this.BaseTool.String.isBlank(id)) {
+        const length = this.selectedRows.length
+        if (length === 0) {
+          this.$message.info('请选择要删除的记录')
+          return
+        }
+        ids = this.selectedRows.map(item => item.id)
+      } else {
+        ids = [id]
+      }
+      deletePurchaseOrders(ids).then(res => {
+        this.$message.info('删除成功')
+        this.handleOk()
+        this.$refs.table.clearSelected()
+      })
+    },
+    handleEnter () {
+      this.$refs.table.refresh(true)
+    }
+  }
+}
+</script>

+ 334 - 0
src/views/purchase/purchase-order-record/PurchaseOrderRecord.vue

@@ -0,0 +1,334 @@
+<template>
+  <a-card :bordered="false">
+    <div v-show="visible">
+      <div class="table-page-search-wrapper" @keyup.enter="handleEnter">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="关键字">
+                <a-input v-model.trim="queryParam.keyword" placeholder="请输入名称/类型名称"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8 || 24" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
+                <a-button style="margin-left: 8px" @click="resetSearchForm">重置</a-button>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+
+      <div class="table-operator" style="margin-bottom: 8px;">
+        <!--      <a-button v-if="$auth('purchase-purchase-orders-add')" type="primary" icon="plus" @click="$refs.baseModal.base()">新增</a-button>-->
+        <a-dropdown v-action:edit v-if="selectedRowKeys.length > 0 && $auth('purchase-purchase-orders-del')">
+          <a-menu slot="overlay">
+            <a-popconfirm title="是否要删除所选数据?" @confirm="batchDelete()">
+              <a-menu-item key="1"><a-icon type="delete" /><a>删除</a></a-menu-item>
+            </a-popconfirm>
+          </a-menu>
+          <a-button style="margin-left: 8px">
+            批量操作 <a-icon type="down" />
+          </a-button>
+        </a-dropdown>
+      </div>
+
+      <s-table
+        ref="table"
+        size="default"
+        rowKey="id"
+        :columns="columns"
+        :scroll="{x: 1, y: BaseTool.Constant.scrollY }"
+        :data="loadData"
+        :alert="options.alert"
+        :rowSelection="options.rowSelection"
+        showPagination="auto"
+      >
+        <span slot="action" slot-scope="record">
+          <template>
+          </template>
+        </span>
+      </s-table>
+    </div>
+    <!--    <purchase-dispatch-order ref="dispatchOrder" @ok="handleOk"/>-->
+  </a-card>
+</template>
+
+<script>
+import { STable, Ellipsis } from '@/components'
+import { getPurchaseOrderPage2, deletePurchaseOrders } from '@/api/purchase/purchase-order'
+
+export default {
+  name: 'PurchaseOrderList',
+  components: {
+    STable,
+    Ellipsis
+  },
+  data () {
+    return {
+      // 查询参数
+      queryParam: {
+      },
+      visible: true,
+      user: this.$store.getters.userInfo,
+      dollarExchangeRate: this.$store.getters.rmbRate,
+      // 表头
+      columns: [
+        {
+          title: '序号',
+          dataIndex: 'index',
+          checked: true,
+          width: 70,
+          customRender: (text, record, index) => {
+            return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}`
+          }
+        },
+        {
+          title: '单号',
+          dataIndex: 'billNo',
+          checked: true,
+          width: 200
+        },
+        {
+          title: '公司名称',
+          dataIndex: 'companyName',
+          checked: true,
+          width: 150
+        },
+        {
+          title: '项目名称',
+          dataIndex: 'projectName',
+          checked: true,
+          width: 150
+        },
+        {
+          title: '采购员名称',
+          dataIndex: 'purchaserName',
+          checked: true,
+          width: 150
+        },
+        {
+          title: '项目记账币种',
+          dataIndex: 'projectMoneyType',
+          checked: true,
+          width: 120,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Table.getMapText(this.moneyTypeMap, text)
+          }
+        },
+        {
+          title: '类型',
+          dataIndex: 'type',
+          checked: true,
+          width: 100,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Table.getMapText(this.typeMap, text)
+          }
+        },
+        {
+          title: '需求日期',
+          dataIndex: 'demandDate',
+          checked: true,
+          width: 150
+        },
+
+        {
+          title: '预计总金额',
+          dataIndex: 'originMoney',
+          checked: true,
+          width: 120,
+          customRender: (text, record, index) => {
+            let dollarExchangeRate = 1
+            if (record.projectMoneyType === this.DictCache.VALUE.MONEY_TYPE.RMB) {
+              dollarExchangeRate = this.dollarExchangeRate
+            }
+            return this.BaseTool.Amount.formatter(text) + this.BaseTool.Number.divForDollar(text, dollarExchangeRate, 2)
+          }
+        },
+        {
+          title: '实际总金额(按记账主币)',
+          dataIndex: 'accountMoney',
+          checked: true,
+          width: 120,
+          customRender: (text, record, index) => {
+            let dollarExchangeRate = 1
+            if (record.projectMoneyType === this.DictCache.VALUE.MONEY_TYPE.RMB) {
+              dollarExchangeRate = this.dollarExchangeRate
+            }
+            return this.BaseTool.Amount.formatter(text) + this.BaseTool.Number.divForDollar(text, dollarExchangeRate, 2)
+          }
+        },
+        {
+          title: '实际总金额(按询价主币)',
+          dataIndex: 'money',
+          checked: true,
+          width: 120,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Amount.formatter(text) + this.BaseTool.Table.getMapTextForMoneyType(this.moneyTypeMap, record.moneyType)
+          }
+        },
+        {
+          title: '总费用(按记账主币,含发运)',
+          dataIndex: 'accountTotalMoney',
+          checked: true,
+          width: 150,
+          customRender: (text, record, index) => {
+            let dollarExchangeRate = 1
+            if (record.projectMoneyType === this.DictCache.VALUE.MONEY_TYPE.RMB) {
+              dollarExchangeRate = this.dollarExchangeRate
+            }
+            return this.BaseTool.Amount.formatter(text) + this.BaseTool.Number.divForDollar(text, dollarExchangeRate, 2)
+          }
+        },
+        // {
+        //   title: '总费用(按询价主币)',
+        //   dataIndex: 'totalMoney',
+        //   checked: true,
+        //   width: 120,
+        //   customRender: (text, record, index) => {
+        //     return this.BaseTool.Amount.formatter(text) + this.BaseTool.Table.getMapTextForMoneyType(this.moneyTypeMap, record.moneyType)
+        //   }
+        // },
+        {
+          title: '数量',
+          dataIndex: 'quantity',
+          checked: true,
+          width: 90,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Amount.formatter(text)
+          }
+        },
+        {
+          title: '状态',
+          dataIndex: 'status',
+          checked: true,
+          fixed: 'right',
+          width: 100,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Table.statusCustomRenderDict(this, text, record,
+              this.DictCache.COLOR.PURCHASE_ORDER_STATUS, this.statusMap)
+          }
+        },
+        {
+          title: '备注',
+          width: 100,
+          dataIndex: 'remark'
+        },
+        {
+          title: '操作',
+          key: 'action',
+          width: '200px',
+          fixed: 'right',
+          checked: true,
+          align: 'center',
+          scopedSlots: { customRender: 'action' }
+        }
+      ],
+      // 下拉框map
+      typeMap: {},
+      statusMap: {},
+      payTypeMap: {},
+      invoiceTypeMap: {},
+      moneyTypeMap: {},
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        const user = this.$store.getters.userInfo
+        const roleCodes = user.roleCodes.join(',')
+        parameter = {
+          ...parameter,
+          ...this.queryParam,
+          projectId: roleCodes.indexOf('FGS_') > -1 ? null : user.projectId,
+          dataScope: {
+            sortBy: 'asc,desc',
+            sortName: 'status,update_time'
+          }
+        }
+        return getPurchaseOrderPage2(Object.assign(parameter, this.queryParam))
+          .then(res => {
+            return res.data
+          })
+      },
+      selectedRowKeys: [],
+      selectedRows: [],
+
+      options: {
+        alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+        rowSelection: {
+          selectedRowKeys: this.selectedRowKeys,
+          onChange: this.onSelectChange
+        }
+      },
+      optionAlertShow: false
+    }
+  },
+  created () {
+    // 下拉框map
+    this.typeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PURCHASE_APPLY_TYPE)
+    this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PURCHASE_ORDER_STATUS)
+    this.payTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PURCHASE_PAY_TYPE)
+    this.invoiceTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PURCHASE_INVOICE_TYPE)
+    this.moneyTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.MONEY_TYPE)
+    this.tableOption()
+  },
+  methods: {
+    tableOption () {
+      if (!this.optionAlertShow) {
+        this.options = {
+          alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+          rowSelection: {
+            selectedRowKeys: this.selectedRowKeys,
+            onChange: this.onSelectChange,
+            getCheckboxProps: record => ({
+              props: {
+                disabled: false,
+                name: record.id
+              }
+            })
+          }
+        }
+        this.optionAlertShow = true
+      } else {
+        this.options = {
+          alert: false,
+          rowSelection: null
+        }
+        this.optionAlertShow = false
+      }
+    },
+    handleOk () {
+      this.visible = true
+      this.$refs.table.refresh()
+    },
+    onSelectChange (selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    },
+    resetSearchForm () {
+      this.queryParam = {
+      }
+      this.$refs.table.refresh(true)
+    },
+    batchDelete (id) {
+      let ids = []
+      if (this.BaseTool.String.isBlank(id)) {
+        const length = this.selectedRows.length
+        if (length === 0) {
+          this.$message.info('请选择要删除的记录')
+          return
+        }
+        ids = this.selectedRows.map(item => item.id)
+      } else {
+        ids = [id]
+      }
+      deletePurchaseOrders(ids).then(res => {
+        this.$message.info('删除成功')
+        this.handleOk()
+        this.$refs.table.clearSelected()
+      })
+    },
+    handleEnter () {
+      this.$refs.table.refresh(true)
+    }
+  }
+}
+</script>

+ 334 - 0
src/views/purchase/purchase-order-report/PurchaseOrderReport.vue

@@ -0,0 +1,334 @@
+<template>
+  <a-card :bordered="false">
+    <div v-show="visible">
+      <div class="table-page-search-wrapper" @keyup.enter="handleEnter">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="关键字">
+                <a-input v-model.trim="queryParam.keyword" placeholder="请输入名称/类型名称"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8 || 24" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
+                <a-button style="margin-left: 8px" @click="resetSearchForm">重置</a-button>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+
+      <div class="table-operator" style="margin-bottom: 8px;">
+        <!--      <a-button v-if="$auth('purchase-purchase-orders-add')" type="primary" icon="plus" @click="$refs.baseModal.base()">新增</a-button>-->
+        <a-dropdown v-action:edit v-if="selectedRowKeys.length > 0 && $auth('purchase-purchase-orders-del')">
+          <a-menu slot="overlay">
+            <a-popconfirm title="是否要删除所选数据?" @confirm="batchDelete()">
+              <a-menu-item key="1"><a-icon type="delete" /><a>删除</a></a-menu-item>
+            </a-popconfirm>
+          </a-menu>
+          <a-button style="margin-left: 8px">
+            批量操作 <a-icon type="down" />
+          </a-button>
+        </a-dropdown>
+      </div>
+
+      <s-table
+        ref="table"
+        size="default"
+        rowKey="id"
+        :columns="columns"
+        :scroll="{x: 1, y: BaseTool.Constant.scrollY }"
+        :data="loadData"
+        :alert="options.alert"
+        :rowSelection="options.rowSelection"
+        showPagination="auto"
+      >
+        <span slot="action" slot-scope="record">
+          <template>
+          </template>
+        </span>
+      </s-table>
+    </div>
+    <!--    <purchase-dispatch-order ref="dispatchOrder" @ok="handleOk"/>-->
+  </a-card>
+</template>
+
+<script>
+import { STable, Ellipsis } from '@/components'
+import { getPurchaseOrderPage2, deletePurchaseOrders } from '@/api/purchase/purchase-order'
+
+export default {
+  name: 'PurchaseOrderList',
+  components: {
+    STable,
+    Ellipsis
+  },
+  data () {
+    return {
+      // 查询参数
+      queryParam: {
+      },
+      visible: true,
+      user: this.$store.getters.userInfo,
+      dollarExchangeRate: this.$store.getters.rmbRate,
+      // 表头
+      columns: [
+        {
+          title: '序号',
+          dataIndex: 'index',
+          checked: true,
+          width: 70,
+          customRender: (text, record, index) => {
+            return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}`
+          }
+        },
+        {
+          title: '单号',
+          dataIndex: 'billNo',
+          checked: true,
+          width: 200
+        },
+        {
+          title: '公司名称',
+          dataIndex: 'companyName',
+          checked: true,
+          width: 150
+        },
+        {
+          title: '项目名称',
+          dataIndex: 'projectName',
+          checked: true,
+          width: 150
+        },
+        {
+          title: '采购员名称',
+          dataIndex: 'purchaserName',
+          checked: true,
+          width: 150
+        },
+        {
+          title: '项目记账币种',
+          dataIndex: 'projectMoneyType',
+          checked: true,
+          width: 120,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Table.getMapText(this.moneyTypeMap, text)
+          }
+        },
+        {
+          title: '类型',
+          dataIndex: 'type',
+          checked: true,
+          width: 100,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Table.getMapText(this.typeMap, text)
+          }
+        },
+        {
+          title: '需求日期',
+          dataIndex: 'demandDate',
+          checked: true,
+          width: 150
+        },
+
+        {
+          title: '预计总金额',
+          dataIndex: 'originMoney',
+          checked: true,
+          width: 120,
+          customRender: (text, record, index) => {
+            let dollarExchangeRate = 1
+            if (record.projectMoneyType === this.DictCache.VALUE.MONEY_TYPE.RMB) {
+              dollarExchangeRate = this.dollarExchangeRate
+            }
+            return this.BaseTool.Amount.formatter(text) + this.BaseTool.Number.divForDollar(text, dollarExchangeRate, 2)
+          }
+        },
+        {
+          title: '实际总金额(按记账主币)',
+          dataIndex: 'accountMoney',
+          checked: true,
+          width: 120,
+          customRender: (text, record, index) => {
+            let dollarExchangeRate = 1
+            if (record.projectMoneyType === this.DictCache.VALUE.MONEY_TYPE.RMB) {
+              dollarExchangeRate = this.dollarExchangeRate
+            }
+            return this.BaseTool.Amount.formatter(text) + this.BaseTool.Number.divForDollar(text, dollarExchangeRate, 2)
+          }
+        },
+        {
+          title: '实际总金额(按询价主币)',
+          dataIndex: 'money',
+          checked: true,
+          width: 120,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Amount.formatter(text) + this.BaseTool.Table.getMapTextForMoneyType(this.moneyTypeMap, record.moneyType)
+          }
+        },
+        {
+          title: '总费用(按记账主币,含发运)',
+          dataIndex: 'accountTotalMoney',
+          checked: true,
+          width: 150,
+          customRender: (text, record, index) => {
+            let dollarExchangeRate = 1
+            if (record.projectMoneyType === this.DictCache.VALUE.MONEY_TYPE.RMB) {
+              dollarExchangeRate = this.dollarExchangeRate
+            }
+            return this.BaseTool.Amount.formatter(text) + this.BaseTool.Number.divForDollar(text, dollarExchangeRate, 2)
+          }
+        },
+        // {
+        //   title: '总费用(按询价主币)',
+        //   dataIndex: 'totalMoney',
+        //   checked: true,
+        //   width: 120,
+        //   customRender: (text, record, index) => {
+        //     return this.BaseTool.Amount.formatter(text) + this.BaseTool.Table.getMapTextForMoneyType(this.moneyTypeMap, record.moneyType)
+        //   }
+        // },
+        {
+          title: '数量',
+          dataIndex: 'quantity',
+          checked: true,
+          width: 90,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Amount.formatter(text)
+          }
+        },
+        {
+          title: '状态',
+          dataIndex: 'status',
+          checked: true,
+          fixed: 'right',
+          width: 100,
+          customRender: (text, record, index) => {
+            return this.BaseTool.Table.statusCustomRenderDict(this, text, record,
+              this.DictCache.COLOR.PURCHASE_ORDER_STATUS, this.statusMap)
+          }
+        },
+        {
+          title: '备注',
+          width: 100,
+          dataIndex: 'remark'
+        },
+        {
+          title: '操作',
+          key: 'action',
+          width: '200px',
+          fixed: 'right',
+          checked: true,
+          align: 'center',
+          scopedSlots: { customRender: 'action' }
+        }
+      ],
+      // 下拉框map
+      typeMap: {},
+      statusMap: {},
+      payTypeMap: {},
+      invoiceTypeMap: {},
+      moneyTypeMap: {},
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        const user = this.$store.getters.userInfo
+        const roleCodes = user.roleCodes.join(',')
+        parameter = {
+          ...parameter,
+          ...this.queryParam,
+          projectId: roleCodes.indexOf('FGS_') > -1 ? null : user.projectId,
+          dataScope: {
+            sortBy: 'asc,desc',
+            sortName: 'status,update_time'
+          }
+        }
+        return getPurchaseOrderPage2(Object.assign(parameter, this.queryParam))
+          .then(res => {
+            return res.data
+          })
+      },
+      selectedRowKeys: [],
+      selectedRows: [],
+
+      options: {
+        alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+        rowSelection: {
+          selectedRowKeys: this.selectedRowKeys,
+          onChange: this.onSelectChange
+        }
+      },
+      optionAlertShow: false
+    }
+  },
+  created () {
+    // 下拉框map
+    this.typeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PURCHASE_APPLY_TYPE)
+    this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PURCHASE_ORDER_STATUS)
+    this.payTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PURCHASE_PAY_TYPE)
+    this.invoiceTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PURCHASE_INVOICE_TYPE)
+    this.moneyTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.MONEY_TYPE)
+    this.tableOption()
+  },
+  methods: {
+    tableOption () {
+      if (!this.optionAlertShow) {
+        this.options = {
+          alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+          rowSelection: {
+            selectedRowKeys: this.selectedRowKeys,
+            onChange: this.onSelectChange,
+            getCheckboxProps: record => ({
+              props: {
+                disabled: false,
+                name: record.id
+              }
+            })
+          }
+        }
+        this.optionAlertShow = true
+      } else {
+        this.options = {
+          alert: false,
+          rowSelection: null
+        }
+        this.optionAlertShow = false
+      }
+    },
+    handleOk () {
+      this.visible = true
+      this.$refs.table.refresh()
+    },
+    onSelectChange (selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    },
+    resetSearchForm () {
+      this.queryParam = {
+      }
+      this.$refs.table.refresh(true)
+    },
+    batchDelete (id) {
+      let ids = []
+      if (this.BaseTool.String.isBlank(id)) {
+        const length = this.selectedRows.length
+        if (length === 0) {
+          this.$message.info('请选择要删除的记录')
+          return
+        }
+        ids = this.selectedRows.map(item => item.id)
+      } else {
+        ids = [id]
+      }
+      deletePurchaseOrders(ids).then(res => {
+        this.$message.info('删除成功')
+        this.handleOk()
+        this.$refs.table.clearSelected()
+      })
+    },
+    handleEnter () {
+      this.$refs.table.refresh(true)
+    }
+  }
+}
+</script>