Merge branch 'dev-scheduling' of http://42.192.7.176:3000/suojin/jonhon-mes-web into dev-scheduling

dev-scheduling
zhangdi 1 month ago
commit 423474b977
  1. 10
      src/api/performanceManagement/performanceDisclosure.js
  2. 12
      src/views/energyManagement/components/electricityQuota.vue
  3. 2
      src/views/energyManagement/components/electricityTarget.vue
  4. 11
      src/views/energyManagement/components/waterQuota.vue
  5. 7
      src/views/energyManagement/components/waterTarget.vue
  6. 2
      src/views/energyManagement/electricityManagement.vue
  7. 2
      src/views/energyManagement/energyMonitoring.vue
  8. 1
      src/views/energyManagement/peakFlatValley.vue
  9. 2
      src/views/energyManagement/waterManagement.vue
  10. 406
      src/views/personnelEfficiencyManagement/performanceManagement/performanceDisclosure.vue

@ -0,0 +1,10 @@
// 绩效公示相关接口
import request from '@/axios';
// 1. 绩效公示分页查询
export function pageBsEfficiencyTaskReport(params) {
return request({
url: '/blade-desk/bsEfficiencyTaskReport/page',
method: 'get',
params
})
}

@ -48,6 +48,7 @@ export default {
data:[], data:[],
isShowImport:false, isShowImport:false,
selectionList: [], selectionList: [],
query:{},
option: { option: {
height: "auto", height: "auto",
calcHeight: 32, calcHeight: 32,
@ -78,12 +79,12 @@ export default {
filterBtn: true, filterBtn: true,
searchShowBtn: false, searchShowBtn: false,
columnSort: true, columnSort: true,
excelBtn: true,
columnSort: true, columnSort: true,
index: false, index: false,
showOverflowTooltip: true, showOverflowTooltip: true,
searchLabelPosition: "left", searchLabelPosition: "left",
searchLabelPosition: "left", searchLabelPosition: "left",
searchLabelWidth: "auto",
searchGutter: 24, searchGutter: 24,
searchSpan: 6, searchSpan: 6,
menuAlign: "center", menuAlign: "center",
@ -160,6 +161,7 @@ export default {
prop: "date", prop: "date",
type:'date', type:'date',
search: true, search: true,
searchRange: true,
sortable: true, sortable: true,
filter: true, filter: true,
span: 24, span: 24,
@ -324,11 +326,17 @@ export default {
}, },
onLoad() { onLoad() {
this.loading = true; this.loading = true;
let param = {
...this.query,
startDate:this.query.date && this.query.date.length != 0 && this.query.date[0],
endDate:this.query.date && this.query.date.length != 0 && this.query.date[1]
}
if(param.date) delete param.date
pageList({ pageList({
current:this.page.currentPage, current:this.page.currentPage,
size:this.page.pageSize, size:this.page.pageSize,
type:2, type:2,
...this.query ...param
}).then(res =>{ }).then(res =>{
this.data = res.data.data.records; this.data = res.data.data.records;
this.page.total = res.data.data.total; this.page.total = res.data.data.total;

@ -79,12 +79,12 @@ export default {
filterBtn: true, filterBtn: true,
searchShowBtn: false, searchShowBtn: false,
columnSort: true, columnSort: true,
excelBtn: true,
columnSort: true, columnSort: true,
index: false, index: false,
showOverflowTooltip: true, showOverflowTooltip: true,
searchLabelPosition: "left", searchLabelPosition: "left",
searchLabelPosition: "left", searchLabelPosition: "left",
searchLabelWidth: "auto",
searchGutter: 24, searchGutter: 24,
searchSpan: 6, searchSpan: 6,
menuAlign: "center", menuAlign: "center",

@ -63,12 +63,12 @@ export default {
filterBtn: true, filterBtn: true,
searchShowBtn: false, searchShowBtn: false,
columnSort: true, columnSort: true,
excelBtn: true,
columnSort: true, columnSort: true,
index: false, index: false,
showOverflowTooltip: true, showOverflowTooltip: true,
searchLabelPosition: "left", searchLabelPosition: "left",
searchLabelPosition: "left", searchLabelPosition: "left",
searchLabelWidth: "auto",
searchGutter: 24, searchGutter: 24,
searchSpan: 6, searchSpan: 6,
menuAlign: "center", menuAlign: "center",
@ -152,6 +152,7 @@ export default {
filter: true, filter: true,
span: 24, span: 24,
type: 'date', type: 'date',
searchRange: true,
format: "YYYY-MM-DD", format: "YYYY-MM-DD",
valueFormat: "YYYY-MM-DD", valueFormat: "YYYY-MM-DD",
rules: [ rules: [
@ -370,11 +371,17 @@ export default {
}, },
onLoad() { onLoad() {
this.loading = true; this.loading = true;
let param = {
...this.query,
startDate:this.query.date && this.query.date.length != 0 && this.query.date[0],
endDate:this.query.date && this.query.date.length != 0 && this.query.date[1]
}
if(param.date) delete param.date
pageList({ pageList({
type: 1, type: 1,
current:this.page.currentPage, current:this.page.currentPage,
size:this.page.pageSize, size:this.page.pageSize,
...this.query ...param
}).then(res => { }).then(res => {
this.data = res.data.data.records; this.data = res.data.data.records;
this.page.total = res.data.data.total; this.page.total = res.data.data.total;

@ -85,12 +85,12 @@ export default {
filterBtn: true, filterBtn: true,
searchShowBtn: false, searchShowBtn: false,
columnSort: true, columnSort: true,
excelBtn: true,
columnSort: true, columnSort: true,
index: false, index: false,
showOverflowTooltip: true, showOverflowTooltip: true,
searchLabelPosition: "left", searchLabelPosition: "left",
searchLabelPosition: "left", searchLabelPosition: "left",
searchLabelWidth: "auto",
searchGutter: 24, searchGutter: 24,
searchSpan: 6, searchSpan: 6,
menuAlign: "center", menuAlign: "center",
@ -209,8 +209,11 @@ export default {
}, },
closeDialog(){ closeDialog(val){
this.isShowImport = false this.isShowImport = false
if(val){
this.onLoad()
}
}, },
handleImport() { handleImport() {
this.isShowImport = true this.isShowImport = true

@ -183,7 +183,7 @@ export default {
delBtnIcon: ' ', delBtnIcon: ' ',
addBtn: false, addBtn: false,
labelWidth: 120, labelWidth: 120,
// searchLabelWidth: 120, searchLabelWidth: "auto",
menu: true, menu: true,
menuWidth: 100, menuWidth: 100,
dialogWidth: 600, dialogWidth: 600,

@ -102,7 +102,7 @@ export default {
index: false, index: false,
showOverflowTooltip: true, showOverflowTooltip: true,
searchLabelPosition: "left", searchLabelPosition: "left",
searchLabelPosition: "left", searchLabelWidth: "auto",
searchGutter: 24, searchGutter: 24,
searchSpan: 6, searchSpan: 6,
menuAlign: "center", menuAlign: "center",

@ -71,6 +71,7 @@ export default {
index: false, index: false,
showOverflowTooltip: true, showOverflowTooltip: true,
searchLabelPosition: "left", searchLabelPosition: "left",
searchLabelWidth:"auto",
searchGutter: 24, searchGutter: 24,
searchSpan: 6, searchSpan: 6,
menuAlign: "center", menuAlign: "center",

@ -47,7 +47,7 @@ export default {
delBtnIcon: " ", delBtnIcon: " ",
addBtn: false, addBtn: false,
labelWidth: 120, labelWidth: 120,
// searchLabelWidth: 80, searchLabelWidth: "auto",
menu: false, menu: false,
menuWidth: 200, menuWidth: 200,
dialogWidth: 600, dialogWidth: 600,

@ -8,21 +8,16 @@
v-model="form" v-model="form"
v-model:page="page" v-model:page="page"
ref="crud" ref="crud"
@row-update="rowUpdate"
@row-save="rowSave"
@search-change="searchChange" @search-change="searchChange"
@search-reset="searchReset" @search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange" @current-change="currentChange"
@size-change="sizeChange" @size-change="sizeChange"
@refresh-change="refreshChange" @refresh-change="refreshChange"
@on-load="onLoad" @on-load="onLoad"
@cell-click="cellClick" @cell-click="cellClick"
> >
<!-- <template #menu="scope">
<el-button type="text" @click="viewRow(scope.row)">详情</el-button>
</template> -->
</avue-crud> </avue-crud>
<!-- 绩效详情弹窗 -->
<el-dialog title="公示详情" v-model="showExcel" append-to-body width="85%"> <el-dialog title="公示详情" v-model="showExcel" append-to-body width="85%">
<div> <div>
月份 月份
@ -33,143 +28,65 @@
:disabled-date="pickerOptions" :disabled-date="pickerOptions"
> >
</el-date-picker> </el-date-picker>
<el-button type="primary" style="margin-left: 10px" @click="queryPerformance">查询</el-button> <el-button type="primary" style="margin-left: 10px" @click="queryPerformance">
查询
</el-button>
</div> </div>
<el-table :data="tableData" style="margin-top: 10px"> <el-table :data="detailList" style="margin-top: 10px" border>
<el-table-column <el-table-column align="center" label="KPI得分" prop="KPI" width="75" />
align="center" <el-table-column align="center" label="量化得分" prop="lh" width="80" />
label="KPI得分" <el-table-column align="center" label="订单准时完成率" prop="orderTime" width="130" />
prop="KPI" <el-table-column align="center" label="重点零件完成率" prop="keyPoint" width="130" />
width="75" <el-table-column align="center" label="后工序审理单分数" prop="after" width="140" />
></el-table-column> <el-table-column align="center" label="出厂不合格率DPP" prop="unqualified" width="140" />
<el-table-column <el-table-column align="center" label="成本费用率" prop="costMoney" width="95" />
align="center" <el-table-column align="center" label="通报" prop="notice" />
label="量化得分" <el-table-column align="center" label="请假扣分" prop="leave" width="80" />
prop="lh" <el-table-column align="center" label="考勤扣分" prop="check" width="80" />
width="80" <el-table-column align="center" label="投稿加分项" prop="add" width="100" />
></el-table-column> <el-table-column align="center" label="群策群力" prop="all" width="80" />
<el-table-column <el-table-column align="center" label="优秀员工加分" prop="excellence" width="120" />
align="center" <el-table-column align="center" label="成本" prop="cost" width="55" />
label="订单准时完成率" <el-table-column align="center" label="总分" prop="total" width="55" />
prop="orderTime"
width="130"
></el-table-column>
<el-table-column
align="center"
label="重点零件完成率"
prop="keyPoint"
width="130"
></el-table-column>
<el-table-column
align="center"
label="后工序审理单分数"
prop="after"
width="140"
></el-table-column>
<el-table-column
align="center"
label="出厂不合格率DPP"
prop="unqualified"
width="140"
></el-table-column>
<el-table-column
align="center"
label="成本费用率"
prop="costMoney"
width="95"
></el-table-column>
<el-table-column align="center" label="通报" prop="notice"></el-table-column>
<el-table-column
align="center"
label="请假扣分"
prop="leave"
width="80"
></el-table-column>
<el-table-column
align="center"
label="考勤扣分"
prop="check"
width="80"
></el-table-column>
<el-table-column align="center" label="投稿加分项" prop="add" width="100"></el-table-column>
<el-table-column
align="center"
label="群策群力"
prop="all"
width="80"
></el-table-column>
<el-table-column
align="center"
label="优秀员工加分"
prop="excellence"
width="120"
></el-table-column>
<el-table-column
align="center"
label="成本"
prop="cost"
width="55"
></el-table-column>
<el-table-column
align="center"
label="总分"
prop="total"
width="55"
></el-table-column>
</el-table> </el-table>
</el-dialog> </el-dialog>
</basic-container> </basic-container>
</template> </template>
<script> <script>
import { pageBsEfficiencyTaskReport } from '@/api/performanceManagement/performanceDisclosure';
export default { export default {
name: 'PerformanceDisclosure',
data() { data() {
return { return {
//
showExcel: false, showExcel: false,
monthValue: "2025-09", monthValue: '',
pickerOptions: (time) => { //
const year = new Date().getFullYear() detailList: [],
return time.getFullYear() !== year; // //
},
tableData: [
{
KPI: 70,
lh: 26,
orderTime: 0,
keyPoint: "",
after: "",
unqualified: "",
costMoney: "",
notice: 0,
all: 0,
leave: 0,
check: 0,
add: 0,
excellence: 2,
cost: 0,
total: 98,
},
],
monthArr: [
{ label: "一月", value: 1 },
{ label: "一月", value: 1 },
{ label: "一月", value: 1 },
{ label: "一月", value: 1 },
],
loading: false, loading: false,
data: [], data: [],
form: {}, form: {},
query: {},
//
page: { page: {
pageSize: 10, pageSize: 10,
currentPage: 1, currentPage: 1,
total: 0, total: 0,
}, },
//
pickerOptions: time => {
const year = new Date().getFullYear();
return time.getFullYear() !== year;
},
//
option: { option: {
height: "auto", height: 'auto',
align: "center", align: 'center',
calcHeight: 32, calcHeight: 32,
rowKey: "id", rowKey: 'id',
rowParentKey: "parentId", rowParentKey: 'parentId',
tip: false, tip: false,
simplePage: true, simplePage: true,
searchShow: true, searchShow: true,
@ -184,12 +101,12 @@ export default {
delBtn: false, delBtn: false,
addBtn: false, addBtn: false,
editBtn: false, editBtn: false,
editBtnText: "修改", editBtnText: '修改',
addBtnIcon: " ", addBtnIcon: ' ',
viewBtnIcon: " ", viewBtnIcon: ' ',
delBtnIcon: " ", delBtnIcon: ' ',
editBtnIcon: " ", editBtnIcon: ' ',
viewBtnText: "详情", viewBtnText: '详情',
// labelWidth: 120, // labelWidth: 120,
searchLabelWidth: 40, searchLabelWidth: 40,
menu: false, menu: false,
@ -204,120 +121,119 @@ export default {
excelBtn: true, excelBtn: true,
columnSort: true, columnSort: true,
showOverflowTooltip: true, showOverflowTooltip: true,
searchLabelPosition: "left", searchLabelPosition: 'left',
searchLabelPosition: "left",
searchGutter: 24, searchGutter: 24,
searchSpan: 6, searchSpan: 6,
menuAlign: "left", menuAlign: 'left',
gridBtn: false, gridBtn: false,
searchMenuPosition: "right", searchMenuPosition: 'right',
column: [ column: [
{ {
label: "工号", label: '工号',
prop: "userCode", prop: 'employeeCode',
search: true, search: true,
sortable: true, sortable: true,
overHidden: true, overHidden: true,
}, },
{ {
label: "姓名", label: '姓名',
prop: "userName", prop: 'employeeName',
search: true, search: true,
sortable: true, sortable: true,
overHidden: true, overHidden: true,
width: 120, width: 120,
}, },
{ {
label: "一月", label: '一月',
prop: "january", prop: 'm01Score',
search: false, search: false,
sortable: true, sortable: true,
overHidden: true, overHidden: true,
click: true, click: true,
}, },
{ {
label: "二月", label: '二月',
prop: "february", prop: 'm02Score',
search: false, search: false,
sortable: true, sortable: true,
overHidden: true, overHidden: true,
click: true, click: true,
}, },
{ {
label: "三月", label: '三月',
prop: "march", prop: 'm03Score',
search: false, search: false,
sortable: true, sortable: true,
overHidden: true, overHidden: true,
click: true, click: true,
}, },
{ {
label: "四月", label: '四月',
prop: "april", prop: 'm04Score',
search: false, search: false,
sortable: true, sortable: true,
overHidden: true, overHidden: true,
click: true, click: true,
}, },
{ {
label: "五月", label: '五月',
prop: "may", prop: 'm05Score',
search: false, search: false,
sortable: true, sortable: true,
overHidden: true, overHidden: true,
click: true, click: true,
}, },
{ {
label: "六月", label: '六月',
prop: "june", prop: 'm06Score',
search: false, search: false,
sortable: true, sortable: true,
overHidden: true, overHidden: true,
click: true, click: true,
}, },
{ {
label: "七月", label: '七月',
prop: "july", prop: 'm07Score',
search: false, search: false,
sortable: true, sortable: true,
overHidden: true, overHidden: true,
click: true, click: true,
}, },
{ {
label: "八月", label: '八月',
prop: "august", prop: 'm08Score',
search: false, search: false,
sortable: true, sortable: true,
overHidden: true, overHidden: true,
click: true, click: true,
}, },
{ {
label: "九月", label: '九月',
prop: "september", prop: 'm09Score',
search: false, search: false,
sortable: true, sortable: true,
overHidden: true, overHidden: true,
click: true, click: true,
}, },
{ {
label: "十月", label: '十月',
prop: "october", prop: 'm10Score',
search: false, search: false,
sortable: true, sortable: true,
overHidden: true, overHidden: true,
click: true, click: true,
}, },
{ {
label: "十一月", label: '十一月',
prop: "november", prop: 'm11Score',
search: false, search: false,
sortable: true, sortable: true,
overHidden: true, overHidden: true,
click: true, click: true,
}, },
{ {
label: "十二月", label: '十二月',
prop: "december", prop: 'm12Score',
search: false, search: false,
sortable: true, sortable: true,
overHidden: true, overHidden: true,
@ -328,138 +244,96 @@ export default {
}; };
}, },
mounted() { mounted() {
this.viewOpen(); // this.onLoad();
}, },
methods: { methods: {
cellClick(row, column, cell, event) { // -
const monthProps = [ cellClick(row, column) {
"january", "february", "march", "april", "may", "june",
"july", "august", "september", "october", "november", "december"
];
if (monthProps.includes(column.property)) {
const monthMap = { const monthMap = {
"january": "01", m01Score: '01',
"february": "02", m02Score: '02',
"march": "03", m03Score: '03',
"april": "04", m04Score: '04',
"may": "05", m05Score: '05',
"june": "06", m06Score: '06',
"july": "07", m07Score: '07',
"august": "08", m08Score: '08',
"september": "09", m09Score: '09',
"october": "10", m10Score: '10',
"november": "11", m11Score: '11',
"december": "12" m12Score: '12',
}; };
const month = monthMap[column.prop];
if (!month) return;
const currentYear = new Date().getFullYear(); //
this.monthValue = `${currentYear}-${monthMap[column.property]}`; this.monthValue = `${row.year}-${month}`;
this.showExcel = true; this.showExcel = true;
//
this.queryPerformance();
},
//
async queryPerformance() {
if (!this.monthValue) {
this.$message.warning('请选择月份');
return;
}
this.loading = true;
try {
//
// const res = await getPerformanceDetail({ month: this.monthValue });
// this.detailList = res.data || [];
// /
this.detailList = [];
} finally {
this.loading = false;
} }
}, },
viewRow(row) { // //
this.showExcel = true;
},
queryPerformance() {
const month = this.monthValue.split("-")[1];
//
// const baseScore = 70 + parseInt(month) * 2;
// this.tableData = [{
// KPI: baseScore,
// lh: 20 + parseInt(month),
// orderTime: Math.floor(Math.random() * 10),
// keyPoint: Math.floor(Math.random() * 10),
// after: Math.floor(Math.random() * 10),
// unqualified: (Math.random() * 5).toFixed(2),
// costMoney: (Math.random() * 10).toFixed(2),
// notice: Math.floor(Math.random() * 5),
// all: Math.floor(Math.random() * 5),
// leave: Math.floor(Math.random() * 5),
// check: Math.floor(Math.random() * 5),
// add: Math.floor(Math.random() * 10),
// excellence: Math.floor(Math.random() * 5),
// cost: Math.floor(Math.random() * 5),
// total: baseScore + 20 + parseInt(month),
// }];
},
currentChange(currentPage) { currentChange(currentPage) {
this.page.currentPage = currentPage; this.page.currentPage = currentPage;
this.onLoad();
}, },
sizeChange(pageSize) { sizeChange(pageSize) {
this.page.pageSize = pageSize; this.page.pageSize = pageSize;
this.onLoad();
}, },
refreshChange() { refreshChange() {
this.page.currentPage = 1;
this.onLoad(this.page, this.query); this.onLoad(this.page, this.query);
}, },
searchReset() { searchReset() {
this.query = {}; this.query = {};
this.treeDeptId = ""; this.page.currentPage = 1;
this.onLoad(this.page); this.onLoad(this.page, this.query);
}, },
searchChange(params, done) { searchChange(params, done) {
this.query = params; this.query = params;
this.page.currentPage = 1; this.page.currentPage = 1;
this.onLoad(this.page, params); this.onLoad(this.page, this.query);
done(); done();
}, },
selectionChange(list) { //
this.selectionList = list; async onLoad() {
}, this.loading = true;
selectionClear() { try {
this.selectionList = []; const params = {
this.$refs.crud.toggleSelection(); pageNum: this.page.currentPage,
}, pageSize: this.page.pageSize,
onLoad() { ...this.query,
this.data = [ };
{ const res = await pageBsEfficiencyTaskReport(params);
id: 1, if (res.code === 200) {
userCode: "001", this.data = res.data.records || [];
userName: "张三(2026-03)", this.page.total = res.data.total || 0;
january: 98, }
february: 97.5, } catch (error) {
march: 96, this.$message.error('加载失败');
april: 98, } finally {
may: 96, this.loading = false;
june: 95.5, }
july: 97,
august: 98.5,
september: 95,
},
{
id: 2,
userCode: "002",
userName: "李四",
january: 98,
february: 96.5,
march: 97,
april: 96,
may: 98,
june: 97.5,
july: 95,
august: 96.5,
september: 98,
},
{
id: 3,
userCode: "003",
userName: "王五",
january: 96,
february: 98.5,
march: 97,
april: 95,
may: 97,
june: 98.5,
july: 96,
august: 96.5,
september: 97,
},
];
this.page.total = this.data.length;
}, },
}, },
}; };
</script> </script>
<style></style>

Loading…
Cancel
Save