From 8fc1138d2f2115121fd15b679ca1a20fc2ba838a Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 02 四月 2026 13:37:40 +0800
Subject: [PATCH] 绩效管理:工时汇总对接MES数据&人员考勤调整
---
src/views/performance/manHour/workTimeStatistics.vue | 183 +++++++++++++++++++++++----------------------
1 files changed, 94 insertions(+), 89 deletions(-)
diff --git a/src/views/performance/manHour/workTimeStatistics.vue b/src/views/performance/manHour/workTimeStatistics.vue
index 4425caf..2bd920d 100644
--- a/src/views/performance/manHour/workTimeStatistics.vue
+++ b/src/views/performance/manHour/workTimeStatistics.vue
@@ -1,73 +1,96 @@
<template>
- <div>
+ <div class="capacity-scope">
<div>
<div class="search">
- <div class="search_thing">
- <div class="search_label">鏃ユ湡锛�</div>
- <div class="search_input" style="display: flex; align-items: center">
- <el-date-picker
- v-model="queryParams.month"
- :clearable="false"
- format="yyyy-MM"
- placeholder="閫夋嫨鏈�"
- size="small"
- style="width: 100%"
- type="month"
- value-format="yyyy-MM"
- @change="refreshTable()"
- >
- </el-date-picker>
- </div>
- </div>
- <div class="search_thing">
- <div class="search_label">鍛樺伐锛�</div>
- <el-input
- v-model="queryParams.name"
- clearable
- placeholder="璇疯緭鍏�"
- size="small"
- @keyup.enter.native="refreshTable()"
- ></el-input>
- </div>
- <div class="search_thing" style="padding-left: 30px">
- <el-button size="small" @click="refresh()">閲� 缃�</el-button>
- <el-button size="small" type="primary" @click="refreshTable()"
- >鏌� 璇�</el-button
- >
+ <div>
+ <el-form :model="queryParams" ref="queryParams" size="small" :inline="true">
+ <el-form-item label="鏃ユ湡" prop="month">
+ <el-date-picker
+ v-model="queryParams.month"
+ :clearable="false"
+ format="yyyy-MM"
+ placeholder="閫夋嫨鏈�"
+ size="small"
+ style="width: 100%"
+ type="month"
+ value-format="yyyy-MM"
+ @change="refreshTable()"
+ >
+ </el-date-picker>
+ </el-form-item>
+ <el-form-item label="鍛樺伐" prop="name">
+ <el-input
+ v-model="queryParams.name"
+ clearable
+ placeholder="璇疯緭鍏�"
+ size="small"
+ @keyup.enter.native="refreshTable()"
+ ></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" size="mini" @click="refreshTable">鏌ヨ</el-button>
+ <el-button size="mini" @click="refresh">閲嶇疆</el-button>
+ <el-button :loading="downloadLoading" type="success" size="mini" @click="exportWorkHoursTotal">瀵煎嚭</el-button>
+ </el-form-item>
+ </el-form>
</div>
</div>
- <div class="table">
- <TableCard :showForm="false" :showTitle="false">
- <template v-slot:table>
- <limsTable
- :column="tableColumn"
- :table-data="tableData"
- :table-loading="tableLoading"
- :page="page"
- style="padding: 0 15px"
- >
- </limsTable>
- </template>
- </TableCard>
- </div>
+<!-- <limsTable-->
+<!-- :column="tableColumn"-->
+<!-- :table-data="tableData"-->
+<!-- :table-loading="tableLoading"-->
+<!-- :page="page"-->
+<!-- :height="'calc(100vh - 290px)'"-->
+<!-- @pagination="pagination"-->
+<!-- >-->
+<!-- </limsTable>-->
+ <el-table
+ :data="tableData"
+ v-loading="tableLoading"
+ :height="'calc(100vh - 290px)'"
+ :cell-style="{ textAlign: 'center' }"
+ :header-cell-style="{ background: '#f8f8f9', color: '#515a6e', textAlign: 'center' }"
+ border
+ >
+ <el-table-column type="index" label="搴忓彿"></el-table-column>
+ <el-table-column prop="userName" label="濮撳悕" min-width="120"></el-table-column>
+ <el-table-column prop="month" label="鏈堜唤" min-width="120"></el-table-column>
+ <el-table-column label="LIMS">
+ <el-table-column prop="yieldHour" label="浜ч噺宸ユ椂" min-width="120"></el-table-column>
+ <el-table-column prop="subsidiaryHour" label="杈呭姪宸ユ椂" min-width="120"></el-table-column>
+ <el-table-column prop="totalHour" label="鎬诲伐鏃�" min-width="120"></el-table-column>
+ </el-table-column>
+ <el-table-column label="鑰愪笣鍩烳ES">
+ <el-table-column prop="operationPerformanceByNS" label="宸ュ簭缁╂晥" min-width="120"></el-table-column>
+ <el-table-column prop="productPerformanceByNS" label="鎴愬搧缁╂晥" min-width="120"></el-table-column>
+ <el-table-column prop="onsiteInspWageByNS" label="宸℃缁╂晥" min-width="120"></el-table-column>
+ <el-table-column prop="handymanWageByNS" label="鏉傚伐宸ヨ祫" min-width="120"></el-table-column>
+ </el-table-column>
+ <el-table-column label="绉戞妧鍩烳ES">
+ <el-table-column prop="operationPerformanceByKJ" label="宸ュ簭缁╂晥" min-width="120"></el-table-column>
+ <el-table-column prop="productPerformanceByKJ" label="鎴愬搧缁╂晥" min-width="120"></el-table-column>
+ <el-table-column prop="onsiteInspWageByKJ" label="宸℃缁╂晥" min-width="120"></el-table-column>
+ <el-table-column prop="handymanWageByKJ" label="鏉傚伐宸ヨ祫" min-width="120"></el-table-column>
+ </el-table-column>
+ </el-table>
+
</div>
</div>
</template>
<script>
-import { getYearAndMonthAndDays } from "@/utils/date";
-import TableCard from "@/components/TableCard/index.vue";
+import {transformExcel} from '@/utils/file'
+import { getYearAndMonthAndDays, getWorkMonth } from "@/utils/date";
import limsTable from "@/components/Table/lims-table.vue";
-import { selectAuxiliaryAllByMonth } from "@/api/performance/manHour";
+import { selectAuxiliaryAllByMonth,exportWorkHoursTotal } from "@/api/performance/manHour";
export default {
components: {
- limsTable,
- TableCard,
+ limsTable
},
data() {
return {
queryParams: {
- month: getYearAndMonthAndDays().slice(0, 7),
+ month: getWorkMonth().format('YYYY-MM'),
name: "",
departLims: "",
},
@@ -102,21 +125,33 @@
tableLoading: false,
page: {
total: 0,
- size: 10,
+ size: 20,
current: 0,
},
+ downloadLoading: false,
};
},
mounted() {
this.refreshTable();
},
methods: {
+ exportWorkHoursTotal(){
+ this.downloadLoading = true
+ exportWorkHoursTotal(this.queryParams).then(res=>{
+ transformExcel(res, "涓ぉ鑰愪笣璐ㄩ噺閮ㄥ伐鏃舵眹鎬�.xlsx")
+ this.$message.success("瀵煎嚭鎴愬姛")
+ this.$nextTick(()=>{
+ this.downloadLoading = false
+ })
+ }).catch((error)=>{
+ console.error(error)
+ })
+ },
refreshTable() {
this.tableLoading = true;
selectAuxiliaryAllByMonth(this.queryParams)
.then((res) => {
this.tableLoading = false;
- if (res.code === 201) return;
this.tableData = res.data;
})
.catch(() => {
@@ -125,19 +160,16 @@
},
refresh() {
this.queryParams = {
- month: getYearAndMonthAndDays().slice(0, 7),
+ month: getWorkMonth().format('YYYY-MM'),
name: "",
departLims: "",
};
this.refreshTable();
},
// 鍒嗛〉
- handleCurrent(page) {
- this.pagination.curent = page;
- this.refreshTable();
- },
- handleSizeChange(size) {
- this.pagination.pageSize = size;
+ pagination({ page, limit }) {
+ this.page.current = page;
+ this.page.size = limit;
this.refreshTable();
},
},
@@ -145,32 +177,5 @@
</script>
<style scoped>
-.work-time-statistics {
- height: 100%;
-}
-.search {
- background-color: #fff;
- height: 80px;
- display: flex;
- align-items: center;
-}
-.search_thing {
- width: 270px;
- display: flex;
- align-items: center;
-}
-
-.search_label {
- width: 60px;
- font-size: 14px;
- text-align: right;
-}
-
-.search_input {
- width: calc(100% - 60px);
-}
-.table {
- height: calc(100% - 60px - 80px - 10px - 40px - 25px);
-}
</style>
--
Gitblit v1.9.3