From 7951495e980a9e7db31e7dd127c1c4c9266bde34 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 07 三月 2025 14:23:15 +0800
Subject: [PATCH] 添加费用统计页面

---
 src/views/business/costStatistics/index.vue |  118 +++++++++++++++++++++++++++++++++++++++
 src/api/business/insOrderRates.js           |   19 ++++++
 2 files changed, 137 insertions(+), 0 deletions(-)

diff --git a/src/api/business/insOrderRates.js b/src/api/business/insOrderRates.js
new file mode 100644
index 0000000..abe50f5
--- /dev/null
+++ b/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
+  })
+}
diff --git a/src/views/business/costStatistics/index.vue b/src/views/business/costStatistics/index.vue
new file mode 100644
index 0000000..6243ee8
--- /dev/null
+++ b/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>

--
Gitblit v1.9.3