974 lines
23 KiB
Vue
974 lines
23 KiB
Vue
<template>
|
|
<div class="l-layout">
|
|
<v-row ref="searchFilter">
|
|
<v-col :cols="12">
|
|
<v-card class="searchFilter">
|
|
<v-row align="end" no-gutters>
|
|
<v-col :cols="3">
|
|
<!-- 설비종류 -->
|
|
<component :is="'SelectBox'" :propsValue="fabSelected" :itemList="fabList" :label="'FAB'"
|
|
@update:propsValue="fabSelected = $event" :labelCols="12" :textCols="12"
|
|
:customClass="'select-large'" />
|
|
</v-col>
|
|
<v-col :cols="3">
|
|
<!-- 설비종류 -->
|
|
<component :is="'SelectBox'" :propsValue="eqpmKindSelected" :itemList="eqpmKindList" :label="'설비종류'"
|
|
@update:propsValue="eqpmKindSelected = $event" :labelCols="12" :textCols="12" :customClass="'select-large'" />
|
|
</v-col>
|
|
<v-col :cols="3">
|
|
<!-- 설비종류 -->
|
|
<component :is="'SelectBox'" :propsValue="eqpmGrpSelected" :itemList="eqpmGrpList" :label="'설비그룹'"
|
|
@update:propsValue="eqpmGrpSelected = $event":labelCols="12" :textCols="12" :customClass="'select-large'" />
|
|
</v-col>
|
|
<v-col :cols="2">
|
|
<!-- 평가 -->
|
|
<component :is="'SelectBox'" :propsValue="selectValue06" :itemList="selectValueList06" :label="'평가'"
|
|
@update:propsValue="selectValue06 = $event" :labelCols="12" :textCols="12" :customClass="'select-large'" />
|
|
</v-col>
|
|
</v-row>
|
|
<v-row align="end" no-gutters>
|
|
<v-col :cols="3">
|
|
<component ref="EqpmSelectPop" :is="'EqpmSelectPop'" :label="'설비'" :valueNm="'eqpmNm'"
|
|
:parentPrgmId="myPrgmId" :isMulti="true" :fabSelected="fabSelected"
|
|
:eqpmGrpSelected="eqpmGrpSelected" :labelCols="12" :textCols="12" :customClass="'select-large'"/>
|
|
</v-col>
|
|
<v-col :cols="3">
|
|
<!-- 설비종류 -->
|
|
<component :is="'SelectBox'" ref="SelectBox1" :propsValue="selectValue05" :itemList="selectValueList05"
|
|
:label="'가이드명'" @update:propsValue="selectValue05 = $event" :labelCols="12" :textCols="12" :customClass="'select-large'" />
|
|
</v-col>
|
|
<v-col :cols="3">
|
|
<v-row class="search-box" align="center" no-gutters>
|
|
<v-col :cols="12">
|
|
<label for="" class="search-box-label">
|
|
대상일
|
|
</label>
|
|
</v-col>
|
|
<v-col :cols="12">
|
|
<a-range-picker size="large">
|
|
<template #suffixIcon>
|
|
<a-icon type="calendar" />
|
|
</template>
|
|
</a-range-picker>
|
|
|
|
</v-col>
|
|
</v-row>
|
|
</v-col>
|
|
<v-col :cols="3" class="text-right">
|
|
<!-- 조회버튼 -->
|
|
<a-button icon="search" type="primary" @click="search()" class="search-button" size="large">조회</a-button>
|
|
<!-- <BtnSearch @click="search" /> -->
|
|
</v-col>
|
|
</v-row>
|
|
</v-card>
|
|
</v-col>
|
|
</v-row>
|
|
<v-row ref="contents" class="mt-4">
|
|
<v-col :cols="12" style="height: 100%">
|
|
<a-card class="p-0" :style="{ border: 'none', borderRadius: '8px' }">
|
|
<div class="d-flex align-center justify-space-between pa-5">
|
|
<v-card-title class="pa-0">설비별 현황 리스트</v-card-title>
|
|
</div>
|
|
<div class="px-5" style="height:calc(100% - 76px)">
|
|
<a-table :columns="columns" :dataSource="filteredData" bordered>
|
|
<template slot="gdIdxNm" slot-scope="text, record">
|
|
<a @click="handleGdIdxNmClick(record)" style="cursor: pointer; color: #1890ff;">
|
|
{{ text }}
|
|
</a>
|
|
</template>
|
|
<template slot="ngCnt" slot-scope="text, record">
|
|
<a @click="handleNgCntClick(record)" style="cursor: pointer; color: #1890ff;">
|
|
{{ text }}
|
|
</a>
|
|
</template>
|
|
</a-table>
|
|
</div>
|
|
</a-card>
|
|
|
|
</v-col>
|
|
</v-row>
|
|
<component ref="EnrgEffcEqpmDetailPop" :is="'EnrgEffcEqpmDetailPop'" :parentPrgmId="myPrgmId" />
|
|
<component ref="EnrgEffcGdIdxDetPop" :is="'EnrgEffcGdIdxDetPop'" :parentPrgmId="myPrgmId" />
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
import mixinGlobal from '@/mixin/global.js';
|
|
import { resize } from '@/mixin/resize.js';
|
|
import { mapActions } from 'vuex';
|
|
import BtnSearch from '~/components/common/button/BtnSearch';
|
|
import SelectBox from '@/components/common/select/SelectBox';
|
|
import Utility from '~/plugins/utility';
|
|
import EqpmSelectPop from '~/components/common/modal/EqpmSelectPop';
|
|
import EnrgEffcEqpmDetailPop from '~/components/common/modal/EnrgEffcEqpmDetailPop';
|
|
import EnrgEffcGdIdxDetPop from '~/components/common/modal/EnrgEffcGdIdxDetPop';
|
|
import { DatePicker } from 'ant-design-vue';
|
|
|
|
|
|
|
|
let myTitle;
|
|
let myPrgmId;
|
|
let paramsKey;
|
|
// let params;
|
|
// let routeCheck = false;
|
|
|
|
export default {
|
|
mixins: [mixinGlobal, resize],
|
|
async asyncData(context) {
|
|
const myState = context.store.state;
|
|
myPrgmId = context.route.query.prgmId;
|
|
await context.store.commit('setActiveMenuInfo', myState.menuData[myPrgmId]);
|
|
// myTitle = await myState.activeMenuInfo.menuNm;
|
|
myTitle = '효율운전 가이드';
|
|
},
|
|
meta: {
|
|
title: () => {
|
|
return myTitle;
|
|
},
|
|
prgmId: 'PRG0084',
|
|
closable: true,
|
|
},
|
|
components: {
|
|
Utility,
|
|
// Grid,
|
|
SelectBox,
|
|
// Buttons,
|
|
BtnSearch,
|
|
'a-range-picker': DatePicker.RangePicker,
|
|
EnrgEffcEqpmDetailPop,
|
|
EqpmSelectPop,
|
|
EnrgEffcGdIdxDetPop,
|
|
},
|
|
data() {
|
|
return {
|
|
myPrgmId: 'PRG0084',
|
|
selectValue01: null,
|
|
selectValue02: null,
|
|
selectValue03: null,
|
|
selectValue04: { eqpmId: [] },
|
|
selectValue05: null,
|
|
selectValue06: null,
|
|
selectValueList01: [],
|
|
selectValueList02: [],
|
|
selectValueList03: [],
|
|
selectValueList04: [],
|
|
selectValueList05: [],
|
|
selectValueList06: [],
|
|
fabSelected: null,
|
|
eqpmGrpSelected: null,
|
|
eqpmKindSelected: null,
|
|
fabList: [],
|
|
eqpmGrpList: [],
|
|
eqpmKindList: [],
|
|
initedFlag: false,
|
|
loadGrid: false,
|
|
gridName: 'rowGrid',
|
|
popDialog: false,
|
|
eqpmFlag: false,
|
|
eqpmKindFlag: false,
|
|
eqpmGrpFlag: false,
|
|
eqpmGdIdxFlag: false,
|
|
fabFlag: false,
|
|
routeData: {},
|
|
columns: [
|
|
{ title: 'No.', dataIndex: 'No', key: 'No', align: 'center' },
|
|
{ title: 'FAB', dataIndex: 'fab', key: 'fab', align: 'center' },
|
|
{ title: '설비그룹', dataIndex: '설비그룹', key: '설비그룹' },
|
|
{ title: '설비명', dataIndex: '설비명', key: '설비명' },
|
|
{ title: '가이드명', dataIndex: '가이드명', key: 'gdIdxNm', scopedSlots: { customRender: 'gdIdxNm' } },
|
|
{ title: '주의', dataIndex: '주의', key: '주의' },
|
|
{ title: '경고', dataIndex: '경고', key: '경고' },
|
|
{ title: '가이드값', dataIndex: '가이드값', key: '가이드값' },
|
|
{ title: '평가', dataIndex: '평가', key: '평가' },
|
|
{ title: '절감가이드 방법', dataIndex: '절감가이드방법', key: '절감가이드방법' },
|
|
{ title: 'NG발생건수', dataIndex: 'NG발생건수', key: 'ngCnt', scopedSlots: { customRender: 'ngCnt' } },
|
|
],
|
|
filteredData: [
|
|
|
|
],
|
|
data: [
|
|
{
|
|
No: 1,
|
|
fab: 'FAB001',
|
|
설비그룹: '냉동기고온',
|
|
설비명: 'UT_HT_CH101',
|
|
가이드명: 'C.O.P',
|
|
주의: 3,
|
|
경고: 2,
|
|
가이드값: 7.55,
|
|
평가: 'NG',
|
|
절감가이드방법: '냉동기 C.O.P 효율운전 점검 필요',
|
|
NG발생건수: 1,
|
|
},
|
|
{
|
|
No: 2,
|
|
fab: 'FAB002',
|
|
설비그룹: '냉동기고온',
|
|
설비명: 'UT_HT_CH102',
|
|
가이드명: '전류부하율 평균 편차',
|
|
주의: 3,
|
|
경고: 5,
|
|
가이드값: -1.421,
|
|
평가: 'NG',
|
|
절감가이드방법: '냉동기 전류부하율 추가 상승 검토 필요',
|
|
NG발생건수: 5,
|
|
},
|
|
{
|
|
No: 3,
|
|
fab: 'FAB001',
|
|
설비그룹: '공조기',
|
|
설비명: 'AHU_01',
|
|
가이드명: '온도 편차',
|
|
주의: 1,
|
|
경고: 0,
|
|
가이드값: 0.5,
|
|
평가: 'OK',
|
|
절감가이드방법: '정상 운전 중',
|
|
NG발생건수: 0,
|
|
},
|
|
{
|
|
No: 4,
|
|
fab: 'FAB003',
|
|
설비그룹: '보일러',
|
|
설비명: 'BLR_01',
|
|
가이드명: '연료 효율',
|
|
주의: 2,
|
|
경고: 1,
|
|
가이드값: 85.2,
|
|
평가: '주의',
|
|
절감가이드방법: '연료 효율 점검 필요',
|
|
NG발생건수: 2,
|
|
},
|
|
{
|
|
No: 5,
|
|
fab: 'FAB002',
|
|
설비그룹: '냉동기저온',
|
|
설비명: 'LT_CH201',
|
|
가이드명: 'C.O.P',
|
|
주의: 4,
|
|
경고: 3,
|
|
가이드값: 6.8,
|
|
평가: 'NG',
|
|
절감가이드방법: '저온 냉동기 효율 개선 필요',
|
|
NG발생건수: 3,
|
|
},
|
|
{
|
|
No: 6,
|
|
fab: 'FAB001',
|
|
설비그룹: '공조기',
|
|
설비명: 'AHU_02',
|
|
가이드명: '전력 사용량',
|
|
주의: 0,
|
|
경고: 0,
|
|
가이드값: 120,
|
|
평가: 'OK',
|
|
절감가이드방법: '정상 운전 중',
|
|
NG발생건수: 0,
|
|
},
|
|
{
|
|
No: 7,
|
|
fab: 'FAB003',
|
|
설비그룹: '냉동기고온',
|
|
설비명: 'UT_HT_CH103',
|
|
가이드명: 'C.O.P',
|
|
주의: 2,
|
|
경고: 2,
|
|
가이드값: 7.1,
|
|
평가: '주의',
|
|
절감가이드방법: '냉동기 효율 점검 필요',
|
|
NG발생건수: 1,
|
|
},
|
|
{
|
|
No: 8,
|
|
fab: 'FAB002',
|
|
설비그룹: '보일러',
|
|
설비명: 'BLR_02',
|
|
가이드명: '온도 편차',
|
|
주의: 1,
|
|
경고: 1,
|
|
가이드값: 1.2,
|
|
평가: '주의',
|
|
절감가이드방법: '온도 센서 점검 필요',
|
|
NG발생건수: 1,
|
|
},
|
|
{
|
|
No: 9,
|
|
fab: 'FAB001',
|
|
설비그룹: '냉동기저온',
|
|
설비명: 'LT_CH202',
|
|
가이드명: '전류부하율 평균 편차',
|
|
주의: 3,
|
|
경고: 4,
|
|
가이드값: -2.1,
|
|
평가: 'NG',
|
|
절감가이드방법: '전류부하율 이상 감지',
|
|
NG발생건수: 4,
|
|
},
|
|
{
|
|
No: 10,
|
|
fab: 'FAB003',
|
|
설비그룹: '공조기',
|
|
설비명: 'AHU_03',
|
|
가이드명: '전력 사용량',
|
|
주의: 0,
|
|
경고: 0,
|
|
가이드값: 110,
|
|
평가: 'OK',
|
|
절감가이드방법: '정상 운전 중',
|
|
NG발생건수: 0,
|
|
},
|
|
{
|
|
No: 11,
|
|
fab: 'FAB002',
|
|
설비그룹: '냉동기고온',
|
|
설비명: 'UT_HT_CH104',
|
|
가이드명: 'C.O.P',
|
|
주의: 2,
|
|
경고: 3,
|
|
가이드값: 6.9,
|
|
평가: '주의',
|
|
절감가이드방법: '냉동기 효율 점검 필요',
|
|
NG발생건수: 2,
|
|
},
|
|
{
|
|
No: 12,
|
|
fab: 'FAB001',
|
|
설비그룹: '보일러',
|
|
설비명: 'BLR_03',
|
|
가이드명: '연료 효율',
|
|
주의: 1,
|
|
경고: 1,
|
|
가이드값: 88.5,
|
|
평가: 'OK',
|
|
절감가이드방법: '정상 운전 중',
|
|
NG발생건수: 0,
|
|
}
|
|
]
|
|
// filtered data to show in the table
|
|
|
|
};
|
|
},
|
|
computed: {
|
|
chkIsFind() {
|
|
// 조회 플래그
|
|
return this.pageData.isFind;
|
|
},
|
|
fabId() {
|
|
return this.pageData.fabId;
|
|
},
|
|
fabNm() {
|
|
return this.pageData.fabNm;
|
|
},
|
|
eqpmKindId() {
|
|
return this.pageData.eqpmKindId;
|
|
},
|
|
eqpmGrpId() {
|
|
return this.pageData.eqpmGrpId;
|
|
},
|
|
eqpmGrpNm() {
|
|
return this.pageData.eqpmGrpNm;
|
|
},
|
|
fromDt() {
|
|
return this.pageData.fromDt;
|
|
},
|
|
checkedRows() {
|
|
return this.pageData.checkedRows;
|
|
},
|
|
eqpmInfo() {
|
|
return this.pageData.eqpmInfo;
|
|
},
|
|
},
|
|
watch: {
|
|
$route(to, from) {
|
|
// routeCheck=true;
|
|
if (to.query.prgmId == myPrgmId) {
|
|
if (paramsKey != to.params.key) {
|
|
if (to.params.key == undefined) {
|
|
} else {
|
|
// params=to.params;
|
|
paramsKey = to.params.Key;
|
|
document.getElementById('refresh').click();
|
|
}
|
|
}
|
|
}
|
|
},
|
|
chkIsFind(val) {
|
|
if (val) this.search();
|
|
},
|
|
fabId(val) { },
|
|
fabNm(val) { },
|
|
eqpmKindId(val) { },
|
|
eqpmGrpId(val) { },
|
|
eqpmGrpNm(val) { },
|
|
fromDt(val) { },
|
|
async selectValue02(val) {
|
|
if (this.initedFlag) {
|
|
this.setPageData({
|
|
fabId: val,
|
|
eqpmId: [],
|
|
eqpmNm: null,
|
|
eqpmIdList: [],
|
|
// isFind:true
|
|
});
|
|
this.selectValue04 = { eqpmId: [] };
|
|
// await this.getEqpm();
|
|
// if(this.eqpmFlag){
|
|
// this.setPageData({ isFind: true });
|
|
// this.eqpmFlag=false;
|
|
// }
|
|
}
|
|
},
|
|
async selectValue01(val) {
|
|
if (this.initedFlag) {
|
|
this.setPageData({
|
|
eqpmKindId: val,
|
|
eqpmGrpId: null,
|
|
eqpmId: [],
|
|
eqpmNm: null,
|
|
eqpmIdList: [],
|
|
});
|
|
this.selectValue04 = { eqpmId: [] };
|
|
await this.getEqpmGrp();
|
|
// await this.getEqpm(this.selectValueList03);
|
|
}
|
|
},
|
|
async selectValue03(val) {
|
|
if (this.initedFlag) {
|
|
this.setPageData({
|
|
eqpmGrpId: val,
|
|
eqpmId: [],
|
|
eqpmNm: null,
|
|
eqpmIdList: [],
|
|
});
|
|
this.selectValue04 = { eqpmId: [] };
|
|
// await this.getEqpm();
|
|
// if(this.eqpmFlag){
|
|
// this.setPageData({ isFind: true });
|
|
this.eqpmGrpFlag = true;
|
|
// }
|
|
// await this.getEqpm();
|
|
await this.getGdIdx();
|
|
}
|
|
},
|
|
async selectValue06(val) {
|
|
if (this.initedFlag) {
|
|
this.setPageData({
|
|
eqpmGrpId: null,
|
|
eqpmId: [],
|
|
eqpmNm: null,
|
|
eqpmIdList: [],
|
|
isFind: true,
|
|
});
|
|
}
|
|
},
|
|
checkedRows(val) {
|
|
if (this.initedFlag) {
|
|
var temp = this.pageData.checkedRows.map(item => {
|
|
return item.eqpmId;
|
|
});
|
|
this.selectValue04 = { eqpmId: temp };
|
|
}
|
|
},
|
|
eqpmInfo(val) {
|
|
if (this.initedFlag) {
|
|
this.setPageData({ eqpmId: val.eqpmId, eqpmNm: val.eqpmNm });
|
|
}
|
|
},
|
|
|
|
// async selectValue04(val) {
|
|
// if (this.initedFlag) {
|
|
// console.log("val : ",val)
|
|
// this.setPageData({ isFind: true });
|
|
// }
|
|
// },
|
|
selectValue04: {
|
|
deep: true,
|
|
handler(newVal, oldVal) {
|
|
this.setPageData({ isFind: true });
|
|
},
|
|
},
|
|
async selectValue05(val) {
|
|
if (this.initedFlag) {
|
|
this.setPageData({ isFind: true });
|
|
}
|
|
},
|
|
},
|
|
async beforeCreate() {
|
|
myPrgmId = this.$route.query.prgmId;
|
|
await this.$store.dispatch('chkOpenTabList', {
|
|
key: 'create',
|
|
prgmId: myPrgmId,
|
|
defaultData: defaultData,
|
|
});
|
|
},
|
|
created() {
|
|
var data = this.$route.params;
|
|
// this.setPageData({
|
|
// eqpmGrpId : data.eqpmGrpId,
|
|
// eqpmGrpNm : data.eqpmGrpNm,
|
|
// fabId : data.fabId,
|
|
// fabNm : data.fabNm,
|
|
// eqpmKindId : data.eqpmKindId,
|
|
// fromDt : data.fromDt
|
|
|
|
// });
|
|
this.routeData = {
|
|
eqpmGrpId: data.eqpmGrpId,
|
|
eqpmGrpNm: data.eqpmGrpNm,
|
|
fabId: data.fabId,
|
|
fabNm: data.fabNm,
|
|
eqpmKindId: data.eqpmKindId,
|
|
fromDt: data.fromDt,
|
|
okFg: data.okFg
|
|
};
|
|
},
|
|
async mounted() {
|
|
await this.init();
|
|
this.initedFlag = true;
|
|
this.routeData = {};
|
|
|
|
this.filteredData = this.data;
|
|
|
|
},
|
|
beforeDestroy() {
|
|
// routeCheck=false;
|
|
this.chkOpenTabList({ key: 'destroy', prgmId: myPrgmId });
|
|
},
|
|
methods: {
|
|
...mapActions({
|
|
getCodeList: 'modules/search/getCodeList',
|
|
getBlocMstrList: 'modules/search/getBlocMstrList',
|
|
}),
|
|
handleNgCntClick(record) {
|
|
|
|
this.$refs['EnrgEffcEqpmDetailPop'].showDetailModal = true;
|
|
|
|
},
|
|
handleGdIdxNmClick(record) {
|
|
this.$refs['EnrgEffcGdIdxDetPop'].showDetailModal = true;
|
|
},
|
|
async init() {
|
|
await this.getFab();
|
|
await this.getEqpmKind();
|
|
await this.getEqpmGrp();
|
|
// await this.getEqpm();
|
|
await this.getGdIdx();
|
|
await this.getOkFg();
|
|
this.filteredData = this.data;
|
|
|
|
if (this.routeData.fromDt != null) {
|
|
this.setPageData({
|
|
fromDt: this.routeData.fromDt,
|
|
});
|
|
} else {
|
|
this.setFromDt();
|
|
}
|
|
await this.gridInit();
|
|
|
|
},
|
|
search() {
|
|
this.filteredData = this.data.filter(item => {
|
|
return (
|
|
|
|
(!this.fabSelected || item.fab === this.fabSelected) &&
|
|
(!this.eqpmGrpSelected || item['설비그룹'] === this.eqpmGrpSelected) &&
|
|
(!this.selectValue06 || item['평가'] === this.selectValue06) &&
|
|
(!this.selectValue05 || item['가이드명'] === this.selectValue05)
|
|
|
|
);
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
setFromDt() {
|
|
this.pageData.fromDt = Utility.setBeforetDate(
|
|
this.pageData,
|
|
this.pageData.toDt,
|
|
'YYYYMMDD',
|
|
);
|
|
// this.pageData.toDt = Utility.setAftertDate(this.pageData, this.pageData.fromDt, "YYYYMMDD");
|
|
},
|
|
async getEqpmKind() {
|
|
this.eqpmKindList = [
|
|
{ label: 'Etcher', value: 'EQK001' },
|
|
{ label: 'Deposition', value: 'EQK002' },
|
|
{ label: 'Inspection', value: 'EQK003' },
|
|
];
|
|
|
|
this.eqpmKindSelected = 'EQK001';
|
|
this.setPageData({
|
|
eqpmKindList: this.eqpmKindList,
|
|
eqpmKindId: this.eqpmKindSelected,
|
|
});
|
|
},
|
|
async getFab() {
|
|
this.fabList = [
|
|
{ label: 'FAB001', value: 'FAB001' },
|
|
{ label: 'FAB002', value: 'FAB002' },
|
|
{ label: 'FAB003', value: 'FAB003' },
|
|
];
|
|
|
|
this.setPageData({
|
|
fabIdList: this.fabList,
|
|
fabId: this.fabSelected,
|
|
});
|
|
},
|
|
async getEqpmGrp() {
|
|
//설비그룹
|
|
|
|
this.eqpmGrpList = [
|
|
{ label: '냉동기고온', value: '냉동기고온' },
|
|
{ label: '냉동기저온', value: '냉동기저온' },
|
|
{ label: '공조기', value: '공조기' },
|
|
{ label: '보일러', value: '보일러' }
|
|
];
|
|
|
|
this.setPageData({
|
|
eqpmGrpId: this.eqpmGrpSelected,
|
|
eqpmGrpIdList: this.eqpmGrpList
|
|
})
|
|
},
|
|
async getEqpm(data) { },
|
|
async getGdIdx() {
|
|
|
|
|
|
this.selectValueList05 = [
|
|
{ label: 'C.O.P', value: 'C.O.P' },
|
|
{ label: '전류부하율 평균 편차', value: '전류부하율 평균 편차' },
|
|
{ label: '온도 편차', value: '온도 편차' },
|
|
{ label: '연료 효율', value: '연료 효율' },
|
|
{ label: '전력 사용량', value: '전력 사용량' }
|
|
];
|
|
|
|
|
|
this.setPageData({
|
|
gdIdxIdList: this.selectValueList05,
|
|
gdIdxId: this.selectValue05,
|
|
});
|
|
},
|
|
async getOkFg() {
|
|
this.selectValueList06 = [
|
|
{
|
|
label: '전체',
|
|
value: null,
|
|
},
|
|
{
|
|
label: 'OK',
|
|
value: 'OK',
|
|
},
|
|
{
|
|
label: 'NG',
|
|
value: 'NG',
|
|
},
|
|
];
|
|
|
|
if (this.routeData.okFg == null || this.routeData.okFg == '') {
|
|
this.selectValue06 = this.selectValueList06[0].value;
|
|
} else if (this.routeData.okFg != null || this.routeData.okFg != '') {
|
|
this.selectValue06 = this.routeData.okFg;
|
|
}
|
|
this.setPageData({
|
|
okFg: this.selectValue06,
|
|
okFgList: this.selectValueList06,
|
|
});
|
|
},
|
|
async gridInit() {
|
|
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
|
// const gridWidth = this.$refs.gridParent.offsetWidth / 2;
|
|
|
|
const myOptions = {
|
|
columnOptions: {
|
|
resizable: true,
|
|
},
|
|
rowHeaders: ['rowNum'],
|
|
// heightResizable: true,
|
|
// rowHeight:'auto'
|
|
};
|
|
this.setGridOption({
|
|
gridKey: this.gridName,
|
|
value: Object.assign(Utility.defaultGridOption(gridHeight), myOptions),
|
|
});
|
|
|
|
const _this = this;
|
|
const myColumns = [
|
|
{
|
|
header: 'FAB',
|
|
name: 'fabNm',
|
|
align: 'left',
|
|
width: 80,
|
|
},
|
|
{
|
|
header: '설비그룹',
|
|
name: 'eqpmGrpNm',
|
|
width: 130,
|
|
},
|
|
{
|
|
header: '설비id',
|
|
name: 'eqpmId',
|
|
hidden: true,
|
|
},
|
|
{
|
|
header: '설비명',
|
|
name: 'eqpmNm',
|
|
width: 130,
|
|
},
|
|
{
|
|
header: '가이드명',
|
|
name: 'gdIdxId',
|
|
hidden: true,
|
|
// formatter({ value }) {
|
|
// let retVal = '';
|
|
// const newValue = _this.pageData.gdIdxIdList.filter(
|
|
// item => item.value == value,
|
|
// );
|
|
// if (newValue.length > 0) {
|
|
// retVal = newValue[0].text;
|
|
// }
|
|
// //빈값일때 전체방지
|
|
// if (value == '' || value == null) {
|
|
// retVal = '';
|
|
// }
|
|
// return retVal;
|
|
// },
|
|
},
|
|
{
|
|
header: '가이드명',
|
|
name: 'gdIdxNm',
|
|
width: 200,
|
|
},
|
|
{
|
|
header: '주의',
|
|
name: 'careStndVal',
|
|
align: 'right',
|
|
width: 80,
|
|
},
|
|
{
|
|
header: '경고',
|
|
name: 'warnStndVal',
|
|
align: 'right',
|
|
width: 80,
|
|
},
|
|
{
|
|
header: '가이드값',
|
|
name: 'totVal',
|
|
align: 'right',
|
|
width: 120,
|
|
},
|
|
{
|
|
header: '평가',
|
|
name: 'okFg',
|
|
align: 'center',
|
|
width: 80,
|
|
},
|
|
{
|
|
header: '절감가이드 방법',
|
|
name: 'gdMeth',
|
|
},
|
|
{
|
|
header: 'NG발생건수',
|
|
name: 'ngCnt',
|
|
align: 'right',
|
|
width: 80,
|
|
},
|
|
];
|
|
|
|
this.setGridColumn({
|
|
gridKey: this.gridName,
|
|
value: myColumns,
|
|
});
|
|
|
|
// this.loadGrid = true;
|
|
|
|
this.getRowGridData();
|
|
},
|
|
async getRowGridData() {
|
|
this.loadGrid = false;
|
|
|
|
var res = await this.postApiReturn({
|
|
apiKey: 'selectEnrgEffcEqpmDetlMntr',
|
|
resKey: 'eqpmDetlData',
|
|
sendParam: {
|
|
eqpmId: this.selectValue04.eqpmId,
|
|
eqpmGrpId: this.selectValue03,
|
|
fromDt: this.pageData.fromDt,
|
|
toDt: this.pageData.toDt,
|
|
gdIdxId: this.selectValue05,
|
|
fabId: this.selectValue02,
|
|
eqpmKindId: this.selectValue01,
|
|
okFg: this.selectValue06,
|
|
},
|
|
});
|
|
const mockData = [
|
|
{
|
|
fabNm: 'FAB-A',
|
|
eqpmGrpNm: 'Group-3',
|
|
eqpmId: 'EQPM-001',
|
|
eqpmNm: 'Equipment-1',
|
|
gdIdxId: 'GD-001',
|
|
gdIdxNm: 'Guide-1',
|
|
careStndVal: 43.88,
|
|
warnStndVal: 98.56,
|
|
totVal: 31.62,
|
|
okFg: 'OK',
|
|
gdMeth: 'Method-C',
|
|
ngCnt: 1
|
|
},
|
|
{
|
|
fabNm: 'FAB-C',
|
|
eqpmGrpNm: 'Group-3',
|
|
eqpmId: 'EQPM-002',
|
|
eqpmNm: 'Equipment-2',
|
|
gdIdxId: 'GD-002',
|
|
gdIdxNm: 'Guide-2',
|
|
careStndVal: 42.59,
|
|
warnStndVal: 82.21,
|
|
totVal: 32.61,
|
|
okFg: 'OK',
|
|
gdMeth: 'Method-A',
|
|
ngCnt: 3
|
|
},
|
|
{
|
|
fabNm: 'FAB-A',
|
|
eqpmGrpNm: 'Group-2',
|
|
eqpmId: 'EQPM-003',
|
|
eqpmNm: 'Equipment-3',
|
|
gdIdxId: 'GD-003',
|
|
gdIdxNm: 'Guide-3',
|
|
careStndVal: 36.6,
|
|
warnStndVal: 68.64,
|
|
totVal: 50.99,
|
|
okFg: 'NG',
|
|
gdMeth: 'Method-B',
|
|
ngCnt: 8
|
|
},
|
|
// ... (7 more rows like these)
|
|
]
|
|
|
|
this.setGridData({
|
|
gridKey: this.gridName,
|
|
value: mockData,
|
|
});
|
|
|
|
this.loadGrid = true;
|
|
},
|
|
columnClick(e) {
|
|
var data = this.$refs[this.gridName].gridInstance.invoke(
|
|
'getRow',
|
|
e.rowKey,
|
|
);
|
|
|
|
if (e.columnName == 'ngCnt' && e.targetType == 'cell') {
|
|
// if(e.columnName == 'ngCnt' && data.ngCnt > 0){
|
|
this.$refs['EnrgEffcEqpmDetailPop'].popCheck = true;
|
|
this.setPageData({
|
|
rowGridSelectKey: e.rowKey,
|
|
rowGridSelectData: {
|
|
...data,
|
|
fromDt: this.pageData.fromDt,
|
|
toDt: this.pageData.toDt,
|
|
},
|
|
});
|
|
}
|
|
|
|
if (e.columnName == 'gdIdxNm' && e.targetType == 'cell') {
|
|
// if(e.columnName == 'ngCnt' && data.ngCnt > 0){
|
|
this.$refs['EnrgEffcGdIdxDetPop'].popCheck = true;
|
|
this.setPageData({
|
|
rowGridSelectKey: e.rowKey,
|
|
rowGridSelectData: {
|
|
...data,
|
|
fromDt: this.pageData.fromDt,
|
|
toDt: this.pageData.toDt,
|
|
},
|
|
});
|
|
}
|
|
},
|
|
},
|
|
};
|
|
|
|
const defaultData = {
|
|
isFind: false,
|
|
fabId: '',
|
|
fabIdList: [],
|
|
fabNm: '',
|
|
eccId: '',
|
|
eqpmInfo: null,
|
|
eccIdList: [],
|
|
eqpmGrpNm: '',
|
|
eqpmGrpId: null,
|
|
eqpmGrpList: [],
|
|
eqpmId: [],
|
|
eqpmNm: null,
|
|
eqpmIdList: [],
|
|
eqpmNm: '',
|
|
eqpmKindId: '',
|
|
gdIdxId: '',
|
|
gdIdxIdList: [],
|
|
checkedRows: [],
|
|
cmCycle: 'CYC_DAY', // 주기
|
|
defaultRange: {
|
|
CYC_DAY: 30,
|
|
},
|
|
calcProc: null,
|
|
calcDesc: null,
|
|
fromDt: '',
|
|
toDt: Utility.setFormatDate(new Date(), 'YYYYMMDD'),
|
|
modalData: {},
|
|
// 선택된 그룹코드 상세 데이터
|
|
rowGridSelectKey: 0,
|
|
rowGridSelectData: null,
|
|
rowGrid: {
|
|
data: [],
|
|
column: [],
|
|
option: {},
|
|
defaultRow: {
|
|
fabNm: '',
|
|
eqpmGrpNm: '',
|
|
eqpmId: null,
|
|
gdIdxId: '',
|
|
careStndVal: '',
|
|
warnStndVal: '',
|
|
totVal: '',
|
|
okFg: '',
|
|
gdMeth: '',
|
|
ngCnt: '',
|
|
rowStat: null,
|
|
},
|
|
buttonAuth: {
|
|
add: false,
|
|
remove: false,
|
|
save: false,
|
|
excel: false,
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
|
|
.custom-search {
|
|
padding: 20px 0;
|
|
}
|
|
|
|
.ant-card-body {
|
|
padding: 0 !important;
|
|
}
|
|
|
|
.ant-table-thead > tr > th, .ant-table-tbody > tr > td {
|
|
padding: 8px;
|
|
}
|
|
|
|
.ant-modal-content .ant-modal-header {
|
|
border-bottom: none;
|
|
border-radius: 8px 8px 0 0;
|
|
}
|
|
|
|
.ant-modal-content {
|
|
border-radius: 8px;
|
|
}
|
|
</style>
|