<template> <div class="app-container"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="98px"> <el-form-item label="工单日期:" prop="timeArray"> <el-date-picker v-model="queryParams.timeArray" format="yyyy-MM-dd" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" clearable @keyup.enter.native="handleQuery" > </el-date-picker> </el-form-item> <el-form-item label="产线名称" prop="sapName"> <el-input v-model="queryParams.sapName" placeholder="请输入产线名称" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="工作中心"> <el-select v-model="queryParams.workCenter" filterable placeholder="请选择工作中心" clearable> <el-option v-for="item in options" :key="item.factoryCode" :label="item.factoryName" :value="item.factoryCode" @keyup.enter.native="handleQuery" > </el-option> </el-select> </el-form-item> <el-form-item label="物料号" prop="productCode"> <el-input v-model="queryParams.productCode" placeholder="请输入物料号" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> </el-form-item> </el-form> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['mes:dailyReportNew:export']" >导出</el-button> </el-col> <el-col :span="1.5"> <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExportBP" v-hasPermi="['mes:dailyReportNew:exportBP']" >白坯参考导出</el-button> </el-col> <el-col :span="20"> <div style="color:firebrick;font-size: small; text-align: center;">产量=规格*实际产量,订单完成率=实际产量/计划产量,标准工时=产量*规格/产线标准效率,产线效率=标准工时/实际工时, 总工时=实际用人*实际工时,<br/>标准人均效率=实际产量/标准用人/标准工时,实际人均效率=实际产量/总工时,人均效率达成率=实际人均效率/标准人均效率</div> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> <el-table v-loading="loading" :data="prepareList" height="500" :summary-method="getSummaries" :header-cell-style="{'text-align':'center'}" :cell-style="{'text-align':'center'}" > <el-table-column prop="factoryCode" label="工厂" width="90"/> <el-table-column prop="workshopCode" label="车间编码" width="90"/> <!--<el-table-column prop="workshopName" label="车间名称" width="90"/>--> <el-table-column prop="productDate" label="日期" width="100"/> <el-table-column prop="sapCode" label="产线编码" width="90"/> <!--<el-table-column prop="sapName" label="产线名称" width="160"/>--> <el-table-column prop="equipmentName" label="组别" width="90"/> <el-table-column prop="prodType" label="品类" width="80"/> <el-table-column prop="teamLeaderName" label="组长" width="100" :formatter="teamLeaderFormate"/> <el-table-column prop="workorderCode" label="工单号" width="150"/> <el-table-column prop="productCode" label="产品编码" width="120" :formatter="productCodeFormate"/> <el-table-column prop="productName" label="产品名称" width="200"/> <el-table-column prop="spec" label="规格" width="100"/> <el-table-column prop="unit" label="单位(件)" width="80"/> <el-table-column prop="quantitySplit" label="计划产量(件)" width="80"/> <el-table-column prop="quantityFeedback" label="实际产量(件)" width="80"/> <el-table-column prop="quantityAct" label="产量(PC)" width="80"/> <el-table-column prop="completeRate" label="订单完成率(%)" width="80"/> <el-table-column prop="efficiency" label="产线标准效率(PC/H)" width="100"/> <el-table-column prop="manStandard" label="标准用人" width="80"/> <el-table-column prop="useMan" label="实际用人" width="80"/> <el-table-column prop="workTimeStandard" label="标准工时" width="80"></el-table-column> <el-table-column prop="workTime" label="实际工时" width="80"> </el-table-column> <el-table-column prop="productivity" label="产线效率(%)" width="80"> </el-table-column> <el-table-column prop="totalWorkTime" label="总工时" width="80"> </el-table-column> <el-table-column prop="manAvgStandard" label="标准人均效率" width="100"> </el-table-column> <el-table-column prop="manAvgActual" label="实际人均效率" width="100"> </el-table-column> <el-table-column prop="manAvgDo" label="人均效率达成率" width="120"> </el-table-column> <el-table-column prop="reason" label="影响效率原因" width="120" :show-overflow-tooltip="true"> </el-table-column> </el-table> <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> </div> </template> <script> import { getDailyReportNew,getWorkcenterList} from "@/api/mes/reportWork"; import moment from 'moment'; export default { name: "DailyReportNew", data() { return { // 遮罩层 loading: true, // 选中数组 ids: [], // 非单个禁用 single: true, // 非多个禁用 multiple: true, // 显示搜索条件 showSearch: true, // 总条数 total: 0, // 备料单表格数据 prepareList: [], // 弹出层标题 title: "", // 是否显示弹出层 open: false, // 查询参数 queryParams: { timeArray: [], productDateStart: null, productDateEnd: null, sapName: null, pageNum: 1, pageSize: 10, workCenter: null, factoryCode: null }, // 表单参数 form: {}, // 表单校验 rules: {}, options: null }; }, created() { this.getDate(); this.getWorkcenterList(); }, methods: { indexMethod(index){ return index+1 ; }, /**获取默认查询时间段**/ getDate() { let start = this.Fungetdate(0); let end = this.Fungetdate(1); this.queryParams.timeArray.push(start, end); this.getList(); }, Fungetdate(num) { var dd = new Date(); dd.setDate(dd.getDate() + num); var y = dd.getFullYear(); var m = dd.getMonth() + 1; //获取当前月份的日期 var d = dd.getDate(); return y + "-" + m + "-" + d; }, /** 查询备料单列表 */ getList() { this.loading = true; if(this.queryParams.timeArray.length>0){ this.queryParams.productDateStart = moment(this.queryParams.timeArray[0]).format('YYYY-MM-DD'); this.queryParams.productDateEnd = moment(this.queryParams.timeArray[1]).format('YYYY-MM-DD'); } getDailyReportNew(this.queryParams).then(response => { this.prepareList = response.rows; this.total = response.total; this.loading = false; }); }, getWorkcenterList(){ getWorkcenterList().then(data => { this.options = data; }); this.queryParams.workCenter = this.options[0].factoryCode; }, // 取消按钮 cancel() { this.open = false; this.reset(); }, // 表单重置 reset() { this.form = { }; this.resetForm("form"); }, productCodeFormate(row, column, cellValue){ if(cellValue != null){ return cellValue.slice(7,18); //返回值 } }, teamLeaderFormate(row, column, cellValue){ if(cellValue != null){ return cellValue.split("-")[0]; //返回值 } }, /** 搜索按钮操作 */ handleQuery() { this.queryParams.pageNum = 1; this.getList(); }, /** 重置按钮操作 */ resetQuery() { this.resetForm("queryForm"); this.handleQuery(); }, /** 导出按钮操作 */ handleExport() { this.download('mes/reportWork/getDailyReportNewExport', { ...this.queryParams }, `dailyReport_${new Date().getTime()}.xlsx`) }, handleExportBP() { this.download('mes/reportWork/getDailyReportNewBPExport', { ...this.queryParams }, `dailyReport_BP_${new Date().getTime()}.xlsx`) }, getSummaries(param) { const { columns, data } = param; const sums = []; columns.forEach((column, index) => { if (index === 0) { sums[index] = '小计'; return; } const values = data.map(item => Number(item[column.property])); if (!values.every(value => isNaN(value))) { sums[index] = values.reduce((prev, curr) => { const value = Number(curr); if (!isNaN(value)) { return prev + curr; } else { return prev; } }, 0); sums[index] += ''; if(index<6){ sums[index] = ''; } } else { sums[index] = '';//N/A } }); return sums; } } }; </script>