gaoluyang
2025-03-07 7951495e980a9e7db31e7dd127c1c4c9266bde34
添加费用统计页面
已添加2个文件
137 ■■■■■ 文件已修改
src/api/business/insOrderRates.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/costStatistics/index.vue 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/business/insOrderRates.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
// è´¹ç”¨ç»Ÿè®¡é¡µé¢ç›¸å…³æŽ¥å£
import request from '@/utils/request'
// æŸ¥è¯¢è®¢å•列表
export function selectRatesPage(query) {
  return request({
    url: '/insOrderRates/selectRatesPage',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢è®¢å•费用详情
export function selectRatesDetail(query) {
  return request({
    url: '/insOrderRates/selectRatesDetail',
    method: 'get',
    params: query
  })
}
src/views/business/costStatistics/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,118 @@
<template>
  <div class="capacity-scope">
    <div class="search">
      <div>
        <el-form :model="entity" ref="entity" size="small" :inline="true">
          <el-form-item label="样品名称" prop="sample">
            <el-input size="small" placeholder="请输入" clearable v-model="entity.sample"
                      @keyup.enter.native="refreshTable()"></el-input>
          </el-form-item>
          <el-form-item label="委托单位" prop="company">
            <el-select @focus="getCompanyOptions" @change="refreshTable()" clearable
                       size="small" v-model="entity.company" style="width: 100%">
              <el-option v-for="item in companyOptions" :key="item.value"
                         :label="item.label" :value="item.label">
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" icon="el-icon-search" size="mini" @click="refreshTable">查 è¯¢</el-button>
            <el-button icon="el-icon-refresh" size="mini" @click="refresh">重 ç½®</el-button>
          </el-form-item>
        </el-form>
      </div>
    </div>
    <div>
      <lims-table :tableData="tableData" :column="column"
                  :height="'calc(100vh - 250px)'" @pagination="pagination"
                  :page="page" :tableLoading="tableLoading"></lims-table>
    </div>
  </div>
</template>
<script>
import limsTable from "@/components/Table/lims-table.vue";
import {selectRatesPage} from "@/api/business/insOrderRates";
import {selectCustomPageList} from "@/api/system/customer";
export default {
  components: {limsTable},
  data() {
    return {
      entity: {
        sample: null,
        company: null,
      },
      tableData: [],
      tableLoading: false,
      column: [
        { label: '下单时间', prop: 'createTime', width: 150 },
        { label: '委托编号', prop: 'entrustCode', width: 160 },
        { label: '样品名称', prop: 'sample', width: 160 },
        { label: '样品数量', prop: 'sampleNum' },
        { label: '委托单位', prop: 'company' },
        { label: '委托人', prop: 'prepareUser' },
        { label: '生产单位', prop: 'production' },
        { label: '工程名称', prop: 'engineering' },
        { label: '工时', prop: 'cost' }
      ],
      page: {
        total: 0,
        size: 10,
        current: 1
      },
      companyOptions: []
    }
  },
  mounted() {
    this.refreshTable()
    this.getCompanyOptions()
  },
  methods :{
    refreshTable() {
      this.tableLoading = true
      selectRatesPage({ ...this.page, ...this.entity }).then(res => {
        this.tableLoading = false
        this.tableData = res.data.records
        this.page.total = res.data.total
      }).catch(err => {
        this.tableLoading = false
      })
    },
    // é‡ç½®
    refresh() {
      this.resetForm('entity')
      this.refreshTable()
    },
    // æŸ¥è¯¢å§”托单位下拉框数据
    getCompanyOptions () {
      selectCustomPageList({
        current: -1,
        size: -1
      }).then(res => {
        const list = res.data.records
        this.companyOptions = []
        list.map((item) => {
          const obj = Object.assign({
            value: item.id,
            label: item.company,
          })
          this.companyOptions.push(obj)
        })
      }).catch(err => { });
    },
    // åˆ†é¡µåˆ‡æ¢
    pagination(page) {
      this.page.size = page.limit
      this.refreshTable()
    },
  }
}
</script>
<style scoped>
.search {
  height: 46px;
  display: flex;
  justify-content: space-between;
}
</style>