Compare commits
17 Commits
dev-dungtv
...
b2e50837fd
Author | SHA1 | Date | |
---|---|---|---|
b2e50837fd | |||
88b59f5f33 | |||
d37f23512a | |||
6077dddb74 | |||
2338bbf2ec | |||
c2e2c10a8a | |||
d790249743 | |||
205821fc11 | |||
fade079b06 | |||
98c26a156e | |||
b4f8e41c7e | |||
e9bdd80f14 | |||
eeadcd254d | |||
b56bd12bb7 | |||
bea1e0889b | |||
0f66d84b48 | |||
34d03b2546 |
@ -14,10 +14,13 @@
|
||||
position: relative;
|
||||
border-radius: 6px;
|
||||
border: solid 1px;
|
||||
height: 40px;
|
||||
height: 32px;
|
||||
// border-color: #424242;
|
||||
border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color");
|
||||
|
||||
&.datepicker-large {
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.v-input {
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<div class="datepicker-container" >
|
||||
<div :class="['datepicker-container', customClass]" >
|
||||
<v-text-field
|
||||
id="startpicker"
|
||||
ref="startpicker"
|
||||
@ -93,7 +93,12 @@ export default {
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -4,13 +4,14 @@
|
||||
:data="chkGridData"
|
||||
:columns="chkGridColumns"
|
||||
:options="chkGridOptions"
|
||||
@focusChange="focusChangeEvt"
|
||||
@mousedown="focusChangeEvt"
|
||||
@click="startEditing"
|
||||
@editingFinish="editingFinish"
|
||||
@dblclick="dblClick"
|
||||
@mouseover="mouseoverEvent"
|
||||
@mouseout="mouseoutEvent"
|
||||
/>
|
||||
<!-- @focusChange="focusChangeEvt" -->
|
||||
</template>
|
||||
<script>
|
||||
import { mapState, mapMutations } from 'vuex';
|
||||
@ -107,16 +108,13 @@ export default {
|
||||
},
|
||||
chkGridOptions() {
|
||||
const options = {
|
||||
// bodyHeight: 'fitToContent',
|
||||
scrollX: false,
|
||||
scrollY: false,
|
||||
...this.gridData.option,
|
||||
useIcon: false,
|
||||
};
|
||||
options.treeColumnOptions = {
|
||||
useIcon: false,
|
||||
...options.treeColumnOptions,
|
||||
};
|
||||
|
||||
return options;
|
||||
},
|
||||
defaultRow() {
|
||||
@ -163,7 +161,7 @@ export default {
|
||||
},
|
||||
created() {},
|
||||
async mounted() {
|
||||
// console.log('--------------DEBUG----gridData: ', this.gridData);
|
||||
// console.log(this.dataPath);
|
||||
if (this.gridName) {
|
||||
this.gridInstance = this.$refs['tuigrid' + this.gridName];
|
||||
|
||||
@ -271,6 +269,7 @@ export default {
|
||||
});
|
||||
},
|
||||
focusChangeEvt(e) {
|
||||
// console.log("------------------DEBUG-------focusChangeEvt:", e);
|
||||
// console.log('focusChangeEvt1...')
|
||||
if (this.preventFocusChangeEvent(e)) {
|
||||
// console.log('prevent focusChangeEvt')
|
||||
@ -291,6 +290,7 @@ export default {
|
||||
this.sendSelectedRowData(e.rowKey);
|
||||
},
|
||||
startEditing(e) {
|
||||
// console.log("------------DEBUG-----startEditing----", e);
|
||||
// console.log('startEditing1...')
|
||||
if (this.preventFocusChangeEvent(e)) {
|
||||
// console.log('prevent startEditing')
|
||||
@ -666,8 +666,6 @@ export default {
|
||||
store.dimension.offsetLeft = offsetLeft;
|
||||
},
|
||||
setHeight(_a,height){
|
||||
return; // setting auto height
|
||||
|
||||
// console.log("setHeight");
|
||||
var dimension = _a.dimension;
|
||||
var headerHeight = dimension.headerHeight, summaryHeight = dimension.summaryHeight, tableBorderWidth = dimension.tableBorderWidth;
|
||||
@ -705,11 +703,6 @@ export default {
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
::v-deep .tui-grid-container {
|
||||
|
||||
// .tui-grid-body-area {
|
||||
// overflow: hidden !important;
|
||||
// }
|
||||
|
||||
.tui-grid-content-area {
|
||||
.tui-grid-cell-content {
|
||||
input[type='number'] {
|
||||
|
@ -2,7 +2,9 @@
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon x-small color="primary" class="mr-1">mdi-record-circle</v-icon>
|
||||
<v-icon small color="primary"
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
@ -18,13 +20,15 @@
|
||||
outlined
|
||||
>
|
||||
<template #append >
|
||||
<v-icon size="20">$icoCalendar</v-icon>
|
||||
<v-icon size="20" v-show="!isRange">$icoCalendar</v-icon>
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div ref="startpicker-container" id="startpicker-container"></div>
|
||||
</template>
|
||||
</v-text-field>
|
||||
<div v-show="isRange" class="mx-3" :style="{ lineHeight: 0 }">~</div>
|
||||
<div v-if="isRange" class="mx-3" :style="{ lineHeight: 0 }">
|
||||
<img :src="arrowIcon" alt="">
|
||||
</div>
|
||||
<v-text-field
|
||||
v-show="isRange"
|
||||
id="endpicker"
|
||||
@ -129,6 +133,12 @@ export default {
|
||||
this.defaultRange === 'no limite'
|
||||
);
|
||||
},
|
||||
arrowIcon() {
|
||||
if(this.isDarkMode){
|
||||
return require('@/assets/images/arrow_datepicker_dm.png');
|
||||
}
|
||||
return require('@/assets/images/arrow_datepicker.png');
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
myCmCycle() {
|
||||
|
@ -16,6 +16,7 @@ export default function getLineChartOption({
|
||||
const color = item.color || defaultColors[index % defaultColors.length];
|
||||
return {
|
||||
...item,
|
||||
showSymbol: true, // Show symbol at each data point
|
||||
itemStyle: {
|
||||
color,
|
||||
},
|
||||
@ -27,9 +28,9 @@ export default function getLineChartOption({
|
||||
left: '3%',
|
||||
right: '5%',
|
||||
top: '25%',
|
||||
bottom: '0%',
|
||||
containLabel: true,
|
||||
},
|
||||
|
||||
legend: {
|
||||
// data: legendData,
|
||||
icon: 'circle',
|
||||
@ -37,7 +38,7 @@ export default function getLineChartOption({
|
||||
right: '5%',
|
||||
orient: 'horizontal',
|
||||
textStyle: {
|
||||
color: isDarkMode ? '#676A7B' : '#676A7B',
|
||||
color: isDarkMode ? 'white' : '#676A7B',
|
||||
},
|
||||
},
|
||||
xAxis: {
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center">
|
||||
<v-row class="search-box no-gutters" align="center">
|
||||
<v-col :cols="option.labelCols" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="item.iconShow" small
|
||||
@ -8,13 +8,11 @@
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="option.textCols" class="py-0">
|
||||
<v-text-field readonly append-icon="" class="v-input__custom" outlined :hide-details="true"
|
||||
v-model="searchWord" @keyup.enter="typeEnterKey" @click="dialogOpenCloseEvent(dialog)"
|
||||
<v-text-field readonly append-icon="" :class="['v-select__custom', customClass]" outlined :hide-details="true"
|
||||
v-model="selectValue" @keyup.enter="typeEnterKey" @click="dialogOpenCloseEvent(dialog)" style="padding: 0;"
|
||||
:required="item.required || false"><template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
|
||||
|
||||
</template></v-text-field>
|
||||
</v-col>
|
||||
|
||||
@ -43,8 +41,6 @@
|
||||
class="search-button">조회</a-button>
|
||||
</v-row>
|
||||
</v-col>
|
||||
|
||||
|
||||
</v-row>
|
||||
<!-- <div :style="'height: calc(65vh)'"> -->
|
||||
<div :style="'height: 600px'" class="px-5">
|
||||
|
@ -20,7 +20,6 @@
|
||||
:editorGrid="true"
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
@getRowsData="getRowData"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -54,22 +53,10 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
gridName: 'rowDetailGrid',
|
||||
rowKey: null,
|
||||
edtingFinishFlag: 'Y',
|
||||
dataPathMock: {
|
||||
"rowDetailGrid": {
|
||||
column: [
|
||||
{ header: '추가 정보', name: 'readObjId', align: 'left' },
|
||||
{ header: 'Data 구분', name: 'readObjNm', align: 'left' },
|
||||
{ header: '추가 정보 값', name: 'readObjKind', align: 'left' },
|
||||
],
|
||||
data: dataPathDataExample,
|
||||
defaultRow: dataPathDataExample,
|
||||
option: {}
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -444,22 +431,4 @@ export default {
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const dataPathDataExample = [
|
||||
{
|
||||
readObjId: 'OBJ001',
|
||||
readObjNm: '서울 본사',
|
||||
readObjKind: 'TYPE01',
|
||||
},
|
||||
{
|
||||
readObjId: 'OBJ002',
|
||||
readObjNm: '부산 지사',
|
||||
readObjKind: 'TYPE02',
|
||||
},
|
||||
{
|
||||
readObjId: 'OBJ003',
|
||||
readObjNm: '대전 공장',
|
||||
readObjKind: 'TYPE03',
|
||||
}
|
||||
]
|
||||
</script>
|
||||
|
@ -19,7 +19,6 @@
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
@ -60,24 +59,11 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
gridName: 'rowEccIaoGrid',
|
||||
inputList_emMapDiv: [],
|
||||
inputList_cmInOut: [],
|
||||
detailList: myDetail,
|
||||
dataPathMock: {
|
||||
"rowEccIaoGrid": {
|
||||
column: [
|
||||
{ header: '검침 대상 ID', name: 'readObjId', align: 'left' },
|
||||
{ header: '검침 대상 명', name: 'readObjNm', align: 'left' },
|
||||
{ header: '검침 대상 유형', name: 'readObjKind', align: 'left' },
|
||||
{ header: '그룹', name: 'grpCd', align: 'left' },
|
||||
],
|
||||
data: dataPathDataExample,
|
||||
defaultRow: dataPathDataExample,
|
||||
option: {}
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -516,12 +502,4 @@ const myDetail = [
|
||||
iconShow: true,
|
||||
},
|
||||
];
|
||||
const dataPathDataExample = [
|
||||
{
|
||||
readObjId: 'OBJ001',
|
||||
readObjNm: '서울 본사',
|
||||
readObjKind: 'TYPE01',
|
||||
grpCd: 'GRP01',
|
||||
},
|
||||
]
|
||||
</script>
|
||||
|
@ -4,24 +4,24 @@
|
||||
class="d-flex justify-space-between align-center"
|
||||
style="height: 80px;"
|
||||
>
|
||||
<span class="txt custom-title-4-new">설비 입출력 정보</span>
|
||||
<span class="txt">설비 입출력 정보</span>
|
||||
<Buttons
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:bindingData="gridName"
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
</div>
|
||||
<div ref="gridParent" style="min-height: calc(100vh - 800px);" >
|
||||
<!-- :is="loadGrid ? 'Grid' : null" -->
|
||||
<div ref="gridParent" style="height: calc(100vh - 800px);">
|
||||
<Grid
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
/>
|
||||
</div>
|
||||
<div style="min-height: calc(100vh - 900px);" class="mt-4">
|
||||
<div style="min-height: calc(100vh - 900px);">
|
||||
<component
|
||||
:is="'Form'"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@ -65,22 +65,6 @@ export default {
|
||||
|
||||
inputList_emMapDiv: [],
|
||||
inputList_cmInOut: [],
|
||||
dataPathMock: {
|
||||
'rowEqpmIaoGrid' : {
|
||||
column: [
|
||||
{ header: '대상항목', name: 'id', headerAlign: 'left' },
|
||||
{ header: '에너지원 명', name: 'lable', headerAlign: 'left' },
|
||||
{ header: '대상 유형', name: 'type', headerAlign: 'left' },
|
||||
{ header: '물리량', name: 'note', headerAlign: 'left' },
|
||||
{ header: '계산여부', name: 'field1', headerAlign: 'left' },
|
||||
{ header: '분배율', name: 'field2', headerAlign: 'left' }
|
||||
],
|
||||
data: dataPathDataExample,
|
||||
defaultRow: dataPathDataExample,
|
||||
option: {}
|
||||
}
|
||||
},
|
||||
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -129,16 +113,16 @@ export default {
|
||||
selectedObjId(val) {
|
||||
console.log('selectedObjId : ', val);
|
||||
if (val === 'TAG') {
|
||||
this.detailList[2].class = 'py-2 d-none';
|
||||
this.detailList[3].class = 'py-2 d-none';
|
||||
this.detailList[4].class = 'py-2';
|
||||
this.detailList[5].class = 'py-2';
|
||||
this.detailList[2].class = 'py-3 d-none';
|
||||
this.detailList[3].class = 'py-3 pl-4 pt-1 d-none';
|
||||
this.detailList[4].class = 'py-3';
|
||||
this.detailList[5].class = 'py-3';
|
||||
} else {
|
||||
// }else if(val==="READ_PLC"){
|
||||
this.detailList[5].class = 'py-2 d-none';
|
||||
this.detailList[4].class = 'py-2 d-none';
|
||||
this.detailList[3].class = 'py-2';
|
||||
this.detailList[2].class = 'py-2';
|
||||
this.detailList[5].class = 'py-3 d-none';
|
||||
this.detailList[4].class = 'py-3 d-none';
|
||||
this.detailList[3].class = 'py-3 pl-4 pt-1';
|
||||
this.detailList[2].class = 'py-3';
|
||||
}
|
||||
},
|
||||
selectedCalcFg(val) {
|
||||
@ -171,7 +155,7 @@ export default {
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
// this.init();
|
||||
this.init();
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({
|
||||
@ -296,9 +280,7 @@ export default {
|
||||
value: myColumns,
|
||||
});
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.loadGrid = true;
|
||||
});
|
||||
},
|
||||
async getRowData(data, gridName) {
|
||||
if (data.rowStat === 'I') {
|
||||
@ -417,6 +399,7 @@ export default {
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
function checkDuplicate(data, targetKey) {
|
||||
var duplicateFlag = false;
|
||||
var set = new Set();
|
||||
@ -487,7 +470,7 @@ const myEqpmIaoDetail = [
|
||||
},
|
||||
{
|
||||
type: 'EvtObjPop',
|
||||
labelContent: '대상 항목 111',
|
||||
labelContent: '대상 항목',
|
||||
valueNm: 'objId',
|
||||
valueNm2: 'objNm',
|
||||
bindNm: 'objNm',
|
||||
@ -502,7 +485,7 @@ const myEqpmIaoDetail = [
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
cols: 5,
|
||||
cols: 6,
|
||||
class: 'py-3 d-none',
|
||||
valueNm: 'objNm',
|
||||
readonly: true,
|
||||
@ -615,13 +598,4 @@ const myEqpmIaoDetail = [
|
||||
iconShow: true
|
||||
},
|
||||
];
|
||||
|
||||
import { getPathDataExample } from '@/const/const'
|
||||
const dataPathDataExample = getPathDataExample({
|
||||
id: 'INCHEON.HVAC.EQP_HT_CH001.UT_CH101.CHI_AMP_1A_PV',
|
||||
lable: 'INCHEON 고온 냉동기 101호기 - 호로1',
|
||||
type: '사용', note: '-',
|
||||
field1: '1111',
|
||||
field2: '2222',
|
||||
});
|
||||
</script>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="d-flex justify-space-between align-end">
|
||||
<span class="tit ft-size_20 ft-weight_600">TAG 추가 정보</span>
|
||||
<span style="color:#000000A6" class="tit custom-title-4-new">TAG 추가 정보</span>
|
||||
<Buttons
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:bindingData="gridName"
|
||||
|
@ -12,6 +12,8 @@
|
||||
:parentPrgmId="myPrgmId"
|
||||
:sendParam="{ comId }"
|
||||
customClass="select-large"
|
||||
labelCols="12"
|
||||
textCols="12"
|
||||
/>
|
||||
<!-- <component
|
||||
:is="'selectCodeList'"
|
||||
@ -79,7 +81,6 @@
|
||||
@getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||
:selectedRowDataWatchFlag="true"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -128,7 +129,7 @@
|
||||
<template v-else-if="item.id == 'AsgnRoleByUser'">
|
||||
<v-col :cols="3" class="h100">
|
||||
<v-card-title
|
||||
class="pa-0 custom-title-4"
|
||||
class="pa-0 custom-subtitle-tab"
|
||||
style="min-height:36px;"
|
||||
>역할리스트</v-card-title
|
||||
>
|
||||
@ -154,7 +155,7 @@
|
||||
</v-col>
|
||||
<v-col :cols="8" class="h100">
|
||||
<div class="d-flex align-center justify-space-between">
|
||||
<v-card-title class="pa-0 custom-title-4">
|
||||
<v-card-title class="pa-0 custom-subtitle-tab">
|
||||
사용자 역할</v-card-title
|
||||
>
|
||||
<div>
|
||||
@ -307,40 +308,10 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
async init() {
|
||||
this.gridInit();
|
||||
await this.gridInit();
|
||||
},
|
||||
|
||||
gridInitTest() {
|
||||
const rowGrid = {
|
||||
column: [
|
||||
{ header: '사용자No', name: 'userNo', align: 'center', hidden: true },
|
||||
{ header: '사용자명', name: 'userNm' },
|
||||
{ header: '사용자ID', name: 'userLoginId' },
|
||||
{ header: '사용자비밀번호', name: 'userPswd', hidden: true },
|
||||
{ header: '사업장', name: 'blocId', hidden: true },
|
||||
{ header: 'email', name: 'email', hidden: true },
|
||||
{ header: '등록자NO', name: 'regUserNo', hidden: true },
|
||||
{ header: '등록일시', name: 'regDttm', hidden: true },
|
||||
{ header: '수정자NO', name: 'procUserNo', hidden: true },
|
||||
{ header: '수정일시', name: 'procDttm', hidden: true },
|
||||
{ header: 'comId', name: 'comId', hidden: true },
|
||||
{ header: 'deptId', name: 'deptId', hidden: true },
|
||||
],
|
||||
data: dataMockExample,
|
||||
defaultRow: dataMockExample,
|
||||
option: [],
|
||||
}
|
||||
this.dataPathMock = {rowGrid};
|
||||
this.$nextTick(() => {
|
||||
this.loadGrid = true;
|
||||
});
|
||||
},
|
||||
|
||||
// 사용자 리스트 그리드 세팅
|
||||
gridInit() {
|
||||
|
||||
// this.gridInitTest(); return
|
||||
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 90;
|
||||
|
||||
const myOptions = {
|
||||
@ -1100,67 +1071,4 @@ function sha512(str) {
|
||||
.update(str)
|
||||
.digest('hex');
|
||||
}
|
||||
|
||||
|
||||
|
||||
const dataMockExample = [
|
||||
{
|
||||
userNo: 1,
|
||||
userNm: '홍길동',
|
||||
userLoginId: 'hong123',
|
||||
userPswd: 'password123',
|
||||
blocId: 'B001',
|
||||
email: 'hong@example.com',
|
||||
regUserNo: 100,
|
||||
regDttm: '2025-07-01 10:00:00',
|
||||
procUserNo: 101,
|
||||
procDttm: '2025-07-15 14:30:00',
|
||||
comId: 'C001',
|
||||
deptId: 'D001'
|
||||
},
|
||||
{
|
||||
userNo: 2,
|
||||
userNm: '김영희',
|
||||
userLoginId: 'kimyh',
|
||||
userPswd: 'securePass456',
|
||||
blocId: 'B002',
|
||||
email: 'kim@example.com',
|
||||
regUserNo: 102,
|
||||
regDttm: '2025-07-02 11:20:00',
|
||||
procUserNo: 103,
|
||||
procDttm: '2025-07-16 09:45:00',
|
||||
comId: 'C002',
|
||||
deptId: 'D002'
|
||||
},
|
||||
{
|
||||
userNo: 3,
|
||||
userNm: '관리자',
|
||||
userLoginId: 'user',
|
||||
userPswd: 'securePass456',
|
||||
blocId: 'B002',
|
||||
email: 'kim@example.com',
|
||||
regUserNo: 102,
|
||||
regDttm: '2025-07-02 11:20:00',
|
||||
procUserNo: 103,
|
||||
procDttm: '2025-07-16 09:45:00',
|
||||
comId: 'C002',
|
||||
deptId: 'D002'
|
||||
},
|
||||
{
|
||||
userNo: 4,
|
||||
userNm: '사용자',
|
||||
userLoginId: 'admin',
|
||||
userPswd: 'securePass456',
|
||||
blocId: 'B002',
|
||||
email: 'kim@example.com',
|
||||
regUserNo: 102,
|
||||
regDttm: '2025-07-02 11:20:00',
|
||||
procUserNo: 103,
|
||||
procDttm: '2025-07-16 09:45:00',
|
||||
comId: 'C002',
|
||||
deptId: 'D002'
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
</script>
|
@ -4,24 +4,27 @@
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="2">
|
||||
<v-row align="end" no-gutters>
|
||||
<div></div>
|
||||
<v-col :cols="2.5">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="배치ID"
|
||||
valueNm="batchId"
|
||||
:searchOption="true"
|
||||
customClass="input-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
<v-col :cols="2.5">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="배치명"
|
||||
valueNm="batchNm"
|
||||
:searchOption="true"
|
||||
customClass="input-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
<v-col :cols="2.5">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@ -29,20 +32,20 @@
|
||||
:dataKey="'execRsltCd'"
|
||||
:sendParam="{ commGrpCd: 'CO_BATCH_EXEC_RSLT', useFg: '1' }"
|
||||
:addAll="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2">
|
||||
<v-col :cols="2.5">
|
||||
<component
|
||||
:is="'Datepicker'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'조회기간'"
|
||||
/>
|
||||
</v-col>
|
||||
<v-spacer></v-spacer>
|
||||
<v-col :cols="4" class="text-right">
|
||||
<div class="text-right d-flex align-end justify-end pl-9" style="gap: 8px">
|
||||
<BtnSearch />
|
||||
<BtnExcelDownload :parentPrgmId="myPrgmId" :gridName="gridName" />
|
||||
</v-col>
|
||||
<BtnExcelDownload :parentPrgmId="myPrgmId" :gridName="gridName" size="large" />
|
||||
</div>
|
||||
</v-row>
|
||||
</v-card>
|
||||
</v-col>
|
||||
@ -57,10 +60,11 @@
|
||||
<div ref="gridParent" class="px-5 h100">
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:is=" 'Grid' "
|
||||
:parentPrgmId="myPrgmId"
|
||||
:gridName="gridName"
|
||||
@getRowsData="getRowData"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -10,7 +10,7 @@
|
||||
</v-col>
|
||||
<v-col cols="3">
|
||||
<!-- <component :is="'SelectDateSolo'" :parentPrgmId="myPrgmId" /> -->
|
||||
<DatePicker :parentPrgmId="myPrgmId" :label="'조회연월'" />
|
||||
<DatePicker :parentPrgmId="myPrgmId" customClass="datepicker-large" :label="'조회연월'" />
|
||||
</v-col>
|
||||
<v-col cols="6" class="text-right">
|
||||
<BtnSearch @click="search()" size="large" />
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<PageTitle text="공통코드" />
|
||||
<CommonPageTitle/>
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -56,7 +56,7 @@
|
||||
</v-col>
|
||||
|
||||
<v-col :cols="12" class="text-right">
|
||||
<BtnSearch style="margin-top:20px" @click="search" />
|
||||
<BtnSearch style="margin-top:20px" @click="search" size="large" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
<!-- <v-row align="center" no-gutters>
|
||||
|
@ -16,7 +16,7 @@
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="4">
|
||||
<v-col :cols="3">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="프로그램명"
|
||||
@ -50,18 +50,17 @@
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div style="min-height: 60vh">
|
||||
<div ref="gridParent" class="px-5 h100">
|
||||
<div ref="gridParent" style="height: 100vh">
|
||||
<!-- <div ref="gridParent" class="px-5 h100">
|
||||
</div> -->
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:gridName="gridName"
|
||||
@getRowsData="getRowData"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<!-- 프로그램 상세 -->
|
||||
@ -262,8 +261,6 @@ export default {
|
||||
});
|
||||
|
||||
// this.getRowGridData();
|
||||
|
||||
this.loadGrid = true;
|
||||
},
|
||||
async search() {
|
||||
await this.getRowGridData();
|
||||
@ -296,6 +293,7 @@ export default {
|
||||
gridKey: this.gridName,
|
||||
value: newRes,
|
||||
});
|
||||
this.loadGrid = true;
|
||||
|
||||
this.$nextTick(() => {
|
||||
if (newRes.length > 0) {
|
||||
@ -316,6 +314,12 @@ export default {
|
||||
});
|
||||
},
|
||||
async getRowData(data, gridName) {
|
||||
// console.log("-----------------------DEBUG--getRowData--------------", {
|
||||
// gridKey: gridName,
|
||||
// gridSelect: true,
|
||||
// rowGridSelectKey: data.rowKey,
|
||||
// rowGridSelectData: data,
|
||||
// });
|
||||
this.setGridSelectData({
|
||||
gridKey: gridName,
|
||||
gridSelect: true,
|
||||
@ -327,6 +331,7 @@ export default {
|
||||
rowGridSelectKey: data.rowKey,
|
||||
rowGridSelectData: data,
|
||||
});
|
||||
|
||||
},
|
||||
compareData(type, newDt) {
|
||||
if (this.selectedCommCdData[type] == newDt) {
|
||||
|
@ -64,7 +64,6 @@
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -137,24 +136,10 @@ export default {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
tab: null,
|
||||
detailList: myDetail,
|
||||
initedFlag: false,
|
||||
dataPathMock : {
|
||||
'rowGrid': {
|
||||
column: [
|
||||
{ header: '추가 정보 그룹', name: 'addGrpId', align: 'left' },
|
||||
{ header: '추가 정보 ID', name: 'addInfoId', align: 'left' },
|
||||
{ header: '추가 정보 명', name: 'addInfoNm', align: 'left' },
|
||||
{ header: 'Data 형식', name: 'addInfoDataKind', align: 'center' },
|
||||
{ header: '사용여부', name: 'useFg', align: 'center' },
|
||||
],
|
||||
data: dataMockExample,
|
||||
defaultRow: dataMockExample,
|
||||
option: {},
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -642,43 +627,7 @@ const myDetail = [
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
];
|
||||
|
||||
const dataMockExample = [
|
||||
{
|
||||
addGrpId: 'GRP001',
|
||||
addInfoId: 'INFO001',
|
||||
addInfoNm: '온도 센서',
|
||||
addInfoDataKind: 'DATA01',
|
||||
useFg: true,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP002',
|
||||
addInfoId: 'INFO002',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA02',
|
||||
useFg: false,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP003',
|
||||
addInfoId: 'INFO003',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA03',
|
||||
useFg: false,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP004',
|
||||
addInfoId: 'INFO004',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA04',
|
||||
useFg: false,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP005',
|
||||
addInfoId: 'INFO005',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA05',
|
||||
useFg: false,
|
||||
},
|
||||
];
|
||||
|
||||
</script>
|
||||
<style lang="scss">
|
||||
@import '@/assets/scss/common.scss';
|
||||
</style>
|
||||
|
@ -1,7 +1,6 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<!-- <h1 class="h1-title">대시보드</h1> -->
|
||||
<PageTitle text="대시보드" />
|
||||
<CommonPageTitle/>
|
||||
<!-- <CheckBox
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="사용여부"
|
||||
@ -600,7 +599,7 @@ export default {
|
||||
this.getEnrgUsage();
|
||||
},
|
||||
isDarkMode(newVal) {
|
||||
// let chartOption = this.getGuageChartOption2(this.chart_01);
|
||||
// Update color of dark mode or light mode into each charts
|
||||
let chartOption = getGaugeChartOption({
|
||||
title: this.chart_01,
|
||||
isDarkMode: this.isDarkMode,
|
||||
@ -610,7 +609,6 @@ export default {
|
||||
]?.series?.[0]?.data?.[0]?.value;
|
||||
this.$store.state.pageData[myPrgmId][this.chart_01] = chartOption;
|
||||
|
||||
// let chartOption3 = this.getGuageChartOption2(this.chart_03);
|
||||
let chartOption3 = getGaugeChartOption({
|
||||
title: this.chart_03,
|
||||
isDarkMode: this.isDarkMode,
|
||||
@ -620,12 +618,24 @@ export default {
|
||||
]?.series?.[0]?.data?.[0]?.value;
|
||||
this.$store.state.pageData[myPrgmId][this.chart_03] = chartOption3;
|
||||
|
||||
let mockres = this.$store.state.pageData[myPrgmId][this.chart_04];
|
||||
this.setChart04Data(mockres);
|
||||
|
||||
this.setChart02Data("test");
|
||||
let chart04Dat = this.$store.state.pageData[myPrgmId]['chart04Data'];
|
||||
this.setChart04Data(chart04Dat);
|
||||
|
||||
let chartOption2 = getLineChartOption({
|
||||
xAxisData: this.$store.state.pageData[myPrgmId][this.chart_02].xAxisData,
|
||||
seriesData: this.$store.state.pageData[myPrgmId][this.chart_02].seriesData,
|
||||
isDarkMode: this.isDarkMode,
|
||||
});
|
||||
this.$store.state.pageData[myPrgmId][this.chart_02] = chartOption2
|
||||
|
||||
let chartOption5 = getLineChartOption({
|
||||
xAxisData: this.$store.state.pageData[myPrgmId][this.chart_05].xAxisData,
|
||||
seriesData: this.$store.state.pageData[myPrgmId][this.chart_05].seriesData,
|
||||
isDarkMode: this.isDarkMode,
|
||||
});
|
||||
this.$store.state.pageData[myPrgmId][this.chart_05] = chartOption5
|
||||
|
||||
this.setChart05Data("test");
|
||||
},
|
||||
// beforeDestroy() {
|
||||
// this.cancelAutoUpdate();
|
||||
@ -1169,6 +1179,7 @@ export default {
|
||||
chartKey: "compareEqpmTGdChart",
|
||||
value: chartOption,
|
||||
});
|
||||
this.$store.state.pageData[myPrgmId][this.chart_05] = chartOption
|
||||
},
|
||||
async setChart04Data(data) {
|
||||
if (this.$store.state.pageData[this.myPrgmId].todayNgTopTen != undefined) {
|
||||
@ -1268,6 +1279,7 @@ export default {
|
||||
},
|
||||
series: seriesData,
|
||||
};
|
||||
|
||||
await this.$nextTick(() => {});
|
||||
this.setChartOption({ chartKey: "todayNgTopTen", value: chartOption });
|
||||
},
|
||||
@ -1401,6 +1413,7 @@ export default {
|
||||
chartKey: "compareEqpmTotChart",
|
||||
value: chartOption,
|
||||
});
|
||||
this.$store.state.pageData[myPrgmId][this.chart_02] = chartOption
|
||||
},
|
||||
getGuageChartOption(chartName) {
|
||||
const gaugeColors = [
|
||||
@ -1710,7 +1723,7 @@ export default {
|
||||
let chartData = this.pageData.chart04Data;
|
||||
// let chartData = this.$store.state.pageData[myPrgmId][this.chart_04]['series'][0]['data']
|
||||
let selectedChartData = chartData.filter((item) => {
|
||||
return item.eqpmId == event["data"]["groupId"];
|
||||
return item.eqpmId == event["data"]["name"];
|
||||
});
|
||||
var data = {
|
||||
cmCycle: "CYC_DAY",
|
||||
|
@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<CommonPageTitle/>
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -83,7 +84,7 @@
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row ref="contents" style="height: calc(100vh - 400px)">
|
||||
<v-row >
|
||||
<v-col :cols="5" class="h100">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="d-flex justify-space-between align-end">
|
||||
@ -113,7 +114,7 @@
|
||||
<v-col :cols="7" class="h100">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title>에너지원 상세</v-card-title>
|
||||
<div class="px-5" style="height:calc(100% - 70px)">
|
||||
<div class="px-5" style="min-height: auto;">
|
||||
<v-tabs v-model="tab">
|
||||
<v-tab
|
||||
v-for="item in items"
|
||||
@ -125,8 +126,8 @@
|
||||
</v-tabs>
|
||||
<v-tabs-items
|
||||
v-model="tab"
|
||||
style="height: calc(100% - 65px);"
|
||||
class="py-6"
|
||||
style="min-height: auto;"
|
||||
>
|
||||
<v-tab-item v-for="(item, idx) in items" :key="item.id">
|
||||
<component
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div ref="mainDiv" class="l-layout">
|
||||
<PageTitle/>
|
||||
<CommonPageTitle/>
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div ref="mainDiv" class="l-layout">
|
||||
<PageTitle />
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -480,18 +480,17 @@ const myDetail = [
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
|
||||
{
|
||||
type: 'CheckBox',
|
||||
label: '사용 여부',
|
||||
valueNm: 'useFg',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
class: 'py-2 pr-4 pt-4',
|
||||
value: { '1': true, '0': false },
|
||||
required: true,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'SelectBox',
|
||||
|
@ -1,63 +1,26 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<PageTitle text="측정 위치 데이터 조회" />
|
||||
<CommonPageTitle />
|
||||
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
<v-col :cols="2">
|
||||
<component
|
||||
:is="'SelectBlocMstr'"
|
||||
ref="SelectBlocMstr"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:textCols="12"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<!-- <v-col :cols="2">
|
||||
<component
|
||||
label="검침개소"
|
||||
:is="'PastRsltDataReadPop'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
/>
|
||||
</v-col> -->
|
||||
<!-- <v-col :cols="2">
|
||||
<component
|
||||
:is="'SelectTagNmList'"
|
||||
ref="SelectTagNmList"
|
||||
:parentPrgmId="myPrgmId"
|
||||
/>
|
||||
</v-col> -->
|
||||
<v-col :cols="3">
|
||||
<!-- <component
|
||||
:is="'PastRsltDataReadTagPop'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'TAG'"
|
||||
/> -->
|
||||
<component
|
||||
:is="'EvtObjPop'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:item="evtObjPopItem"
|
||||
customClass="select-large"
|
||||
/>
|
||||
<component :is="'SelectBlocMstr'" ref="SelectBlocMstr" :parentPrgmId="myPrgmId"
|
||||
:textCols="12" customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="4">
|
||||
<component
|
||||
:is="'Datepicker'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'조회기간'"
|
||||
:textCols="12"
|
||||
/>
|
||||
<v-col :cols="3">
|
||||
<component :is="'EvtObjPop'" :parentPrgmId="myPrgmId" :item="evtObjPopItem"
|
||||
customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<!-- 대상일 -->
|
||||
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'조회기간'" :textCols="12" />
|
||||
</v-col>
|
||||
<v-col :cols="3" class="d-flex align-end justify-end text-right">
|
||||
<BtnExcelDownload
|
||||
class="mr-1"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:gridName="gridName"
|
||||
type="primary"
|
||||
size="large"
|
||||
/>
|
||||
<BtnExcelDownload class="mr-1" :parentPrgmId="myPrgmId" :gridName="gridName" type="primary"
|
||||
size="large" />
|
||||
<BtnSearch @click="search" size="large" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -68,12 +31,12 @@
|
||||
<v-col :cols="12" style="height: 100%" class="h100">
|
||||
<v-card class="px-5 py-5 h100">
|
||||
<div ref="gridParent" class="h100 px-5" style="height: 100%">
|
||||
<component
|
||||
ref="myGrid"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
/>
|
||||
<component ref="myGrid" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" />
|
||||
</div>
|
||||
<div class="d-flex align-center justify-space-between">
|
||||
<pagination id="pagination" :total-count="totalCount" :page-num="page" :limit="limit"
|
||||
@loadData="changeGrid" />
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
@ -97,7 +60,7 @@ import BtnExcelDownload from '~/components/common/button/BtnExcelDownload';
|
||||
import DateUtility from '~/plugins/dateUtility';
|
||||
// import Search from "~/components/common/search";
|
||||
import EvtObjPop from '~/components/common/modal/EvtObjPop';
|
||||
import PageTitle from "~/components/common/PageTitle";
|
||||
import pagination from '~/components/Pagination';
|
||||
|
||||
let myTitle;
|
||||
// const myPrgmId = "PRG0052";
|
||||
@ -130,7 +93,7 @@ export default {
|
||||
PastRsltDataReadPop,
|
||||
PastRsltDataReadTagPop,
|
||||
EvtObjPop,
|
||||
PageTitle,
|
||||
pagination,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -146,12 +109,16 @@ export default {
|
||||
valueNm2: 'tagNm',
|
||||
iconShow: true,
|
||||
disabled: false,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2',
|
||||
required: false,
|
||||
formFg: false,
|
||||
},
|
||||
itemsPerPage: 10,
|
||||
itemsPerPageArray: [10, 20, 30],
|
||||
limit: 20,
|
||||
page: 1,
|
||||
totalCount: 0,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -164,9 +131,6 @@ export default {
|
||||
chkTagId() {
|
||||
return this.pageData.tagList === undefined ? null : this.pageData.tagId;
|
||||
},
|
||||
// chkTagList() {
|
||||
// return this.pageData.tagList;
|
||||
// },
|
||||
chkTagNm() {
|
||||
return this.pageData.tagData.tagNm;
|
||||
},
|
||||
@ -176,18 +140,16 @@ export default {
|
||||
},
|
||||
watch: {
|
||||
chkIsFind(val) {
|
||||
if (val) this.search();
|
||||
if (val) {
|
||||
this.page = 1;
|
||||
this.search();
|
||||
}
|
||||
},
|
||||
chkTagId(val) {
|
||||
if (this.initFlag && val != null) {
|
||||
this.search();
|
||||
}
|
||||
},
|
||||
// chkTagList() {
|
||||
// if(this.initFlag){
|
||||
// this.search();
|
||||
// }
|
||||
// },
|
||||
chkTagNm() {
|
||||
if (this.initFlag) {
|
||||
this.search();
|
||||
@ -330,6 +292,7 @@ export default {
|
||||
this.loadGrid = false;
|
||||
|
||||
let res = [];
|
||||
let res2 = [];
|
||||
let yearQuarterData = [];
|
||||
yearQuarterData = this.yearQuarterMaker([
|
||||
this.pageData.fromDt,
|
||||
@ -381,8 +344,18 @@ export default {
|
||||
apiKey: 'selectTagRawDataByQuarter',
|
||||
resKey: 'pastRsltReadData',
|
||||
sendParam: sendParams,
|
||||
limit: this.limit,
|
||||
page: this.page,
|
||||
offset: (this.page - 1) * this.limit, // MariaDB Query에서 직접 계산이 안됨
|
||||
});
|
||||
|
||||
res2 = await this.postApiReturn({
|
||||
apiKey: 'selectTagRawDataByQuarterPageTotal',
|
||||
resKey: 'pastRslPageTotal',
|
||||
sendParam: sendParams
|
||||
});
|
||||
this.totalCount = res2[0].totalcount;
|
||||
|
||||
this.setGridData({
|
||||
gridKey: this.gridName,
|
||||
value: res,
|
||||
@ -393,6 +366,9 @@ export default {
|
||||
fromDt: this.pageData.fromDt,
|
||||
toDt: this.pageData.toDt,
|
||||
yearQuarterList: yearQuarterData['yearQuarterList'],
|
||||
limit: this.limit,
|
||||
page: this.page,
|
||||
offset: (this.page - 1) * this.limit, // MariaDB Query에서 직접 계산이 안됨
|
||||
};
|
||||
sendParams['tagId'] = this.pageData.tagId;
|
||||
//
|
||||
@ -410,6 +386,13 @@ export default {
|
||||
sendParam: sendParams,
|
||||
});
|
||||
|
||||
res2 = await this.postApiReturn({
|
||||
apiKey: 'selectTagRawDataByQuarterPageTotal',
|
||||
resKey: 'pastRslPageTotal',
|
||||
sendParam: sendParams
|
||||
});
|
||||
this.totalCount = res2[0].totalcount;
|
||||
|
||||
this.setGridData({
|
||||
gridKey: this.gridName,
|
||||
value: res,
|
||||
@ -487,6 +470,12 @@ export default {
|
||||
finalResult['yearQuarterList'] = result;
|
||||
return finalResult;
|
||||
},
|
||||
changeGrid: async function (pageNum, limit) {
|
||||
this.page = pageNum;
|
||||
this.limit = limit;
|
||||
|
||||
this.search();
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<PageTitle/>
|
||||
<CommonPageTitle/>
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -58,7 +58,7 @@
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true" />
|
||||
</div>
|
||||
</v-card-actions>
|
||||
<!-- <div class="d-flex align-center justify-space-between">
|
||||
<div class="d-flex align-center justify-space-between">
|
||||
<pagination
|
||||
id="pagination"
|
||||
:total-count="totalCount"
|
||||
@ -66,7 +66,7 @@
|
||||
:limit="limit"
|
||||
@loadData="changeGrid"
|
||||
/>
|
||||
</div> -->
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="7" class="h100">
|
||||
@ -107,7 +107,6 @@ import TagAddInfoTab from '@/components/pages/ems/TagInfo/TagAddInfoTab';
|
||||
import Grid from '~/components/common/Grid';
|
||||
import Utility from '~/plugins/utility';
|
||||
import pagination from '~/components/Pagination';
|
||||
import PageTitle from "~/components/common/PageTitle";
|
||||
|
||||
let myTitle;
|
||||
// const myPrgmId = "PRG0051";
|
||||
@ -140,13 +139,12 @@ export default {
|
||||
TagAddInfoTab,
|
||||
Grid,
|
||||
pagination,
|
||||
PageTitle
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
tab: null,
|
||||
items: [
|
||||
{ name: 'TAG 정보', id: 'tagBaseInfoTab', disabledFlag: false },
|
||||
@ -275,16 +273,12 @@ export default {
|
||||
this.gridInit();
|
||||
},
|
||||
gridInit() {
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 180;
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 16;
|
||||
|
||||
const myOptions = {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
pageOptions: {
|
||||
useClient: true,
|
||||
perPage: 10,
|
||||
},
|
||||
scrollX: true,
|
||||
header: {
|
||||
height: 38,
|
||||
|
@ -1,7 +1,6 @@
|
||||
<template>
|
||||
<div ref="mainDiv" class="l-layout">
|
||||
<PageTitle text="에너지 사용량 이력" />
|
||||
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -76,6 +75,7 @@
|
||||
:parentPrgmId="myPrgmId"
|
||||
:isRangeOption="false"
|
||||
:textCols="12"
|
||||
:customClass="'datepicker-large'"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="6" class="text-right">
|
||||
@ -270,7 +270,6 @@ export default {
|
||||
DatePicker,
|
||||
Grid,
|
||||
Chart,
|
||||
PageTitle,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -363,10 +362,9 @@ export default {
|
||||
setChartOption: "setChartOption",
|
||||
}),
|
||||
async init() {
|
||||
await this.search();
|
||||
|
||||
await this.getSelectValueList();
|
||||
await this.setQueryParams();
|
||||
await this.search();
|
||||
|
||||
this.initedFlag = true;
|
||||
},
|
||||
@ -522,11 +520,6 @@ export default {
|
||||
await this.setContentData01();
|
||||
await this.setContentData02();
|
||||
await this.setContentData03();
|
||||
await this.setContentData04();
|
||||
|
||||
// await this.setContentData01();
|
||||
// await this.setContentData02();
|
||||
// await this.setContentData03();
|
||||
// await this.setContentData04();
|
||||
},
|
||||
async setContentData01() {
|
||||
@ -540,47 +533,16 @@ export default {
|
||||
apiKey = "selectMonthlyEnrgUseMainGuideIdx";
|
||||
}
|
||||
|
||||
// res = await this.postApiReturn({
|
||||
// apiKey: apiKey,
|
||||
// resKey: "enrgUseEqpmDetlMntrData",
|
||||
// sendParam: {
|
||||
// eqpmGrpId: this.selectValue03,
|
||||
// eqpmId: this.selectValue04,
|
||||
// fromDt: this.fromDt,
|
||||
// },
|
||||
// });
|
||||
|
||||
res = [
|
||||
{
|
||||
gdIdxId: "A01",
|
||||
gdIdxNm: "Temperature",
|
||||
dataNum: 0,
|
||||
totVal: 23.5,
|
||||
timestamp: "2025-07-15T10:00:00Z",
|
||||
res = await this.postApiReturn({
|
||||
apiKey: apiKey,
|
||||
resKey: 'enrgUseEqpmDetlMntrData',
|
||||
sendParam: {
|
||||
eqpmGrpId: this.selectValue03,
|
||||
eqpmId: this.selectValue04,
|
||||
fromDt: this.fromDt,
|
||||
},
|
||||
{
|
||||
gdIdxId: "C03",
|
||||
gdIdxNm: "Power Usage",
|
||||
dataNum: 1,
|
||||
totVal: 24.1,
|
||||
timestamp: "2025-07-15T11:00:00Z",
|
||||
},
|
||||
{
|
||||
gdIdxId: "B02",
|
||||
gdIdxNm: "Humidity",
|
||||
dataNum: 0,
|
||||
totVal: 60,
|
||||
timestamp: "2025-07-15T10:00:00Z",
|
||||
},
|
||||
{
|
||||
gdIdxId: "B03",
|
||||
gdIdxNm: "Test",
|
||||
dataNum: 0,
|
||||
totVal: 50,
|
||||
timestamp: "2025-07-19T10:00:00Z",
|
||||
},
|
||||
];
|
||||
|
||||
});
|
||||
console.log('res 01:',res)
|
||||
this.contentData01 = await this.makeContentData01(res);
|
||||
console.log("content", this.contentData01);
|
||||
await this.setChartGroup01(this.contentData01);
|
||||
@ -615,42 +577,16 @@ export default {
|
||||
|
||||
this.loadGrid01 = false;
|
||||
|
||||
// res = await this.postApiReturn({
|
||||
// apiKey: "selectEnrgUseGuideAlarmInfo",
|
||||
// resKey: "enrgUseEqpmDetlMntrData",
|
||||
// sendParam: {
|
||||
// cmCycle: this.pageData.cmCycle,
|
||||
// eqpmId: this.selectValue04,
|
||||
// fromDt: this.fromDt,
|
||||
// alrmKind: ["WARN", "CARE"],
|
||||
// },
|
||||
// });
|
||||
res = [
|
||||
{
|
||||
gdIdxId: "PQ001",
|
||||
totDttm: "TEMP",
|
||||
totDt: "Temperature",
|
||||
totTm: "Analog",
|
||||
gdIdxNm: "PQ001",
|
||||
totVal: "TEMP",
|
||||
caseStndVal: "Temperature",
|
||||
warnStndVal: "Analog",
|
||||
alrmKind: "PQ001",
|
||||
alrmMsg: "TEMP",
|
||||
res = await this.postApiReturn({
|
||||
apiKey: 'selectEnrgUseGuideAlarmInfo',
|
||||
resKey: 'enrgUseEqpmDetlMntrData',
|
||||
sendParam: {
|
||||
cmCycle: this.pageData.cmCycle,
|
||||
eqpmId: this.selectValue04,
|
||||
fromDt: this.fromDt,
|
||||
alrmKind: ['WARN', 'CARE'],
|
||||
},
|
||||
{
|
||||
gdIdxId: "PQ001",
|
||||
totDttm: "TEMP",
|
||||
totDt: "Temperature",
|
||||
totTm: "Analog",
|
||||
gdIdxNm: "PQ001",
|
||||
totVal: "TEMP",
|
||||
caseStndVal: "Temperature",
|
||||
warnStndVal: "Analog",
|
||||
alrmKind: "PQ001",
|
||||
alrmMsg: "TEMP",
|
||||
},
|
||||
];
|
||||
});
|
||||
|
||||
for (var i = 0; i < res.length; i++) {
|
||||
newRes.push({
|
||||
@ -697,33 +633,13 @@ export default {
|
||||
|
||||
this.loadGrid02 = false;
|
||||
|
||||
// res = await this.postApiReturn({
|
||||
// apiKey: "selectEnrgUseEqpmDescInfo",
|
||||
// resKey: "enrgUseEqpmDetlMntrData",
|
||||
// sendParam: {
|
||||
// eqpmGrpId: this.selectValue03,
|
||||
// },
|
||||
// });
|
||||
res = [
|
||||
{
|
||||
pysclQtyId: "PQ001",
|
||||
pysclQtyCd: "TEMP",
|
||||
pysclQtyNm: "Temperature",
|
||||
pysclQtyTp: "Analog",
|
||||
res = await this.postApiReturn({
|
||||
apiKey: 'selectEnrgUseEqpmDescInfo',
|
||||
resKey: 'enrgUseEqpmDetlMntrData',
|
||||
sendParam: {
|
||||
eqpmGrpId: this.selectValue03,
|
||||
},
|
||||
{
|
||||
pysclQtyId: "PQ002",
|
||||
pysclQtyCd: "PRESS",
|
||||
pysclQtyNm: "Pressure",
|
||||
pysclQtyTp: "Analog",
|
||||
},
|
||||
{
|
||||
pysclQtyId: "PQ003",
|
||||
pysclQtyCd: "FLOW",
|
||||
pysclQtyNm: "Flow Rate",
|
||||
pysclQtyTp: "Digital",
|
||||
},
|
||||
];
|
||||
});
|
||||
|
||||
for (var i = 0; i < res.length; i++) {
|
||||
newRes.push({
|
||||
@ -748,11 +664,11 @@ export default {
|
||||
this.loadGrid02 = true;
|
||||
|
||||
await this.$nextTick();
|
||||
// this.$refs[this.gridName02].focus({
|
||||
// rowKey: 0,
|
||||
// columnName: "no",
|
||||
// setScroll: true,
|
||||
// });
|
||||
this.$refs[this.gridName02].focus({
|
||||
rowKey: 0,
|
||||
columnName: 'no',
|
||||
setScroll: true,
|
||||
});
|
||||
},
|
||||
async setContentData04(selectedData) {
|
||||
var res = null;
|
||||
@ -764,31 +680,23 @@ export default {
|
||||
this.loadTrendChart = false;
|
||||
|
||||
xAxisData = this.makeTrendChartXaxisData();
|
||||
console.log("x axis :", xAxisData);
|
||||
|
||||
if (this.pageData.cmCycle == "CYC_MONTH") {
|
||||
sliderHandleSize = ((24 / xAxisData.length) * 100 * 24) / 25;
|
||||
}
|
||||
|
||||
// res = await this.postApiReturn({
|
||||
// apiKey: "selectEnrgUseHourlyTrendInfo",
|
||||
// resKey: "enrgUseEqpmDetlMntrData",
|
||||
// sendParam: {
|
||||
// pysclQtyId: selectedData.pysclQtyId,
|
||||
// eqpmId: this.selectValue04,
|
||||
// fromDt: this.fromDt,
|
||||
// cmCycle: this.pageData.cmCycle,
|
||||
// },
|
||||
// });
|
||||
res = await this.postApiReturn({
|
||||
apiKey: 'selectEnrgUseHourlyTrendInfo',
|
||||
resKey: 'enrgUseEqpmDetlMntrData',
|
||||
sendParam: {
|
||||
pysclQtyId: selectedData.pysclQtyId,
|
||||
eqpmId: this.selectValue04,
|
||||
fromDt: this.fromDt,
|
||||
cmCycle: this.pageData.cmCycle,
|
||||
},
|
||||
});
|
||||
|
||||
res = [
|
||||
{ monthCnt: 0, totVal: 120 },
|
||||
{ monthCnt: 1, totVal: 150 },
|
||||
{ monthCnt: 2, totVal: 180 },
|
||||
{ monthCnt: 3, totVal: 200 },
|
||||
];
|
||||
|
||||
seriesData = new Array(xAxisData.length).fill(300);
|
||||
seriesData = new Array(xAxisData.length).fill(NaN);
|
||||
|
||||
for (var i = 0; i < res.length; i++) {
|
||||
if (this.pageData.cmCycle == "CYC_MONTH") {
|
||||
@ -798,8 +706,6 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
var seriesData2 = new Array(xAxisData.length).fill(100);
|
||||
|
||||
var chartOption = {
|
||||
grid: {
|
||||
top: "3%",
|
||||
@ -845,14 +751,14 @@ export default {
|
||||
color: "#D32029",
|
||||
},
|
||||
},
|
||||
{
|
||||
type: "line",
|
||||
data: seriesData2,
|
||||
symbol: "none",
|
||||
itemStyle: {
|
||||
color: "#FAAD14",
|
||||
},
|
||||
},
|
||||
// {
|
||||
// type: "line",
|
||||
// data: seriesData2,
|
||||
// symbol: "none",
|
||||
// itemStyle: {
|
||||
// color: "#FAAD14",
|
||||
// },
|
||||
// },
|
||||
],
|
||||
dataZoom: [
|
||||
{
|
||||
@ -898,40 +804,13 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
// var idxData = await this.postApiReturn({
|
||||
// apiKey: "selectEnrgUseMainIdxDesc",
|
||||
// resKey: "eqpmIndMntrData",
|
||||
// sendParam: {
|
||||
// eqpmGrpId: this.selectValue03,
|
||||
// },
|
||||
// });
|
||||
|
||||
var idxData = [
|
||||
{
|
||||
gdIdxId: "A01",
|
||||
gdIdxNm: "Temperature",
|
||||
unit: "°C",
|
||||
description: "Average temperature reading",
|
||||
var idxData = await this.postApiReturn({
|
||||
apiKey: 'selectEnrgUseMainIdxDesc',
|
||||
resKey: 'eqpmIndMntrData',
|
||||
sendParam: {
|
||||
eqpmGrpId: this.selectValue03,
|
||||
},
|
||||
{
|
||||
gdIdxId: "B02",
|
||||
gdIdxNm: "Humidity",
|
||||
unit: "%",
|
||||
description: "Relative humidity level",
|
||||
},
|
||||
{
|
||||
gdIdxId: "C03",
|
||||
gdIdxNm: "Power Usage",
|
||||
unit: "kWh",
|
||||
description: "Total power consumption",
|
||||
},
|
||||
{
|
||||
gdIdxId: "B03",
|
||||
gdIdxNm: "Test",
|
||||
unit: "%",
|
||||
description: "Relative humidity level test",
|
||||
},
|
||||
];
|
||||
});
|
||||
|
||||
for (var i = 0; i < idxData.length; i++) {
|
||||
if (!result.hasOwnProperty(idxData[i]["gdIdxId"])) {
|
||||
@ -956,11 +835,10 @@ export default {
|
||||
var dataKeyList = Object.keys(data);
|
||||
var currentChartData = null;
|
||||
var chartKey = null;
|
||||
|
||||
for (var i = 0; i < dataKeyList.length; i++) {
|
||||
currentChartData = data[dataKeyList[i]];
|
||||
console.log("curr:", currentChartData);
|
||||
|
||||
chartKey = "chartGroup01_" + currentChartData["gdIdxId"];
|
||||
chartKey = 'chartGroup01_' + currentChartData['gdIdxId'];
|
||||
|
||||
this.setPageData({
|
||||
[chartKey]: this.getGroup01ChartOption(),
|
||||
@ -975,10 +853,9 @@ export default {
|
||||
var seriesData = null;
|
||||
|
||||
xAxisData = this.makeChartGroup01XaxisData();
|
||||
console.log("text xaxis", xAxisData);
|
||||
|
||||
for (var i = 0; i < dataKeyList.length; i++) {
|
||||
seriesData = new Array(xAxisData.length).fill(10);
|
||||
seriesData = new Array(xAxisData.length).fill(NaN);
|
||||
|
||||
currentChartData = data[dataKeyList[i]];
|
||||
chartKey = "chartGroup01_" + currentChartData["gdIdxId"];
|
||||
@ -1006,8 +883,6 @@ export default {
|
||||
color: "#D32029",
|
||||
};
|
||||
|
||||
chartOption["series"][0]["symbol"] = "none";
|
||||
console.log("chartOption: ", chartOption);
|
||||
return chartOption;
|
||||
},
|
||||
makeChartGroup01XaxisData() {
|
||||
@ -1097,76 +972,14 @@ const defaultData = {
|
||||
fromDt: Utility.setFormatDate(new Date(), "YYYYMM"), // 조회 시작일
|
||||
|
||||
grid01: {
|
||||
data: [
|
||||
{
|
||||
gdIdxId: "PQ001",
|
||||
totDttm: "TEMP",
|
||||
totDt: "Temperature",
|
||||
totTm: "Analog",
|
||||
gdIdxNm: "PQ001",
|
||||
totVal: "TEMP",
|
||||
caseStndVal: "Temperature",
|
||||
warnStndVal: "Analog",
|
||||
alrmKind: "PQ001",
|
||||
alrmMsg: "TEMP",
|
||||
},
|
||||
{
|
||||
gdIdxId: "PQ001",
|
||||
totDttm: "TEMP",
|
||||
totDt: "Temperature",
|
||||
totTm: "Analog",
|
||||
gdIdxNm: "PQ001",
|
||||
totVal: "TEMP",
|
||||
caseStndVal: "Temperature",
|
||||
warnStndVal: "Analog",
|
||||
alrmKind: "PQ001",
|
||||
alrmMsg: "TEMP",
|
||||
},
|
||||
],
|
||||
column: [
|
||||
{ header: "NO", name: "no", width: 40, align: "right" },
|
||||
{ header: "gdIdxId", name: "gdIdxId", hidden: true, align: "left" },
|
||||
{ header: "totDttm", name: "totDttm", hidden: true, align: "left" },
|
||||
{ header: "발생일", name: "totDt", width: 150, align: "left" },
|
||||
{ header: "발생시간대", name: "totTm", width: 100, align: "left" },
|
||||
{ header: "가이드지표명", name: "gdIdxNm", width: 200, align: "left" },
|
||||
{ header: "가이드값", name: "totVal", hidden: true, align: "left" },
|
||||
{ header: "주의값", name: "caseStndVal", hidden: true, align: "left" },
|
||||
{ header: "경고값", name: "warnStndVal", hidden: true, align: "left" },
|
||||
{ header: "알람종류", name: "alrmKind", hidden: true, align: "left" },
|
||||
{ header: "알람내용", name: "alrmMsg", align: "left" },
|
||||
],
|
||||
data: [],
|
||||
column: [],
|
||||
option: {},
|
||||
},
|
||||
|
||||
grid02: {
|
||||
data: [
|
||||
{
|
||||
pysclQtyId: "PQ001",
|
||||
pysclQtyCd: "TEMP",
|
||||
pysclQtyNm: "Temperature",
|
||||
pysclQtyTp: "Analog",
|
||||
},
|
||||
{
|
||||
pysclQtyId: "PQ002",
|
||||
pysclQtyCd: "PRESS",
|
||||
pysclQtyNm: "Pressure",
|
||||
pysclQtyTp: "Analog",
|
||||
},
|
||||
{
|
||||
pysclQtyId: "PQ003",
|
||||
pysclQtyCd: "FLOW",
|
||||
pysclQtyNm: "Flow Rate",
|
||||
pysclQtyTp: "Digital",
|
||||
},
|
||||
],
|
||||
column: [
|
||||
{ header: "NO", name: "no", align: "right", width: 40 },
|
||||
{ header: "물리량ID", name: "pysclQtyId", width: 100, align: "left" },
|
||||
{ header: "물리량코드", name: "pysclQtyCd", align: "left" },
|
||||
{ header: "물리량명", name: "pysclQtyNm", width: 190, align: "left" },
|
||||
{ header: "물리량타입", name: "pysclQtyTp", width: 100, align: "left" },
|
||||
],
|
||||
data: [],
|
||||
column: [],
|
||||
option: {},
|
||||
},
|
||||
|
||||
|
@ -8,9 +8,16 @@
|
||||
<v-col :cols="2.5">
|
||||
<DatePicker :parentPrgmId="myPrgmId" :label="'조회연도'" />
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
<component :is="'SelectBox'" ref="SelectBox1" :propsValue="selectValue01" :itemList="selectValueList01"
|
||||
:label="'FAB'" @update:propsValue="selectValue01 = $event" :iconShow="false" customClass="select-large" />
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'SelectBox'"
|
||||
ref="SelectBox1"
|
||||
:propsValue="selectValue01"
|
||||
:itemList="selectValueList01"
|
||||
:label="'FAB'"
|
||||
@update:propsValue="selectValue01 = $event"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
<component :is="'SelectBox'" ref="SelectBox2" :propsValue="selectValue02" :itemList="selectValueList02"
|
||||
@ -44,12 +51,10 @@
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { mapState, mapActions, mapMutations } from 'vuex';
|
||||
import { mapState, mapActions } from 'vuex';
|
||||
import mixinGlobal from '@/mixin/global.js';
|
||||
import { resize } from '@/mixin/resize.js';
|
||||
import SelectBox from '@/components/common/select/SelectBox';
|
||||
@ -106,9 +111,6 @@ export default {
|
||||
fromDt: new Date().getFullYear(),
|
||||
rowKey: null,
|
||||
edtingFinishFlag: 'Y',
|
||||
dataPathMock: {
|
||||
// "grid01": {}
|
||||
},
|
||||
// gridName: 'rowGrid',
|
||||
};
|
||||
},
|
||||
@ -168,10 +170,6 @@ export default {
|
||||
},
|
||||
created() {},
|
||||
async mounted() {
|
||||
// -------
|
||||
// this.initTest();
|
||||
// return;
|
||||
// ========End test===========
|
||||
await this.init();
|
||||
this.initedFlag = true;
|
||||
},
|
||||
@ -184,122 +182,6 @@ export default {
|
||||
getBlocMstrList: 'modules/search/getBlocMstrList',
|
||||
getAddInfoList: 'modules/search/getAddInfoList',
|
||||
}),
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
}),
|
||||
initTest() {
|
||||
let _this = this;
|
||||
// _this.setPageData({ popupDialogFg: true });
|
||||
|
||||
class MockCustumButton {
|
||||
constructor(props) {
|
||||
const { grid, rowKey, columnInfo } = props;
|
||||
const value = columnInfo.renderer.options.value;
|
||||
|
||||
const elDiv = document.createElement('div');
|
||||
elDiv.innerHTML = `<span>${value}</span>`;
|
||||
$(elDiv).addClass('tui-grid-cell-content d-flex justify-space-between');
|
||||
const el = document.createElement('button');
|
||||
$(el).addClass('edit-btn blue--text');
|
||||
el.innerText = 'Edit';
|
||||
|
||||
el.addEventListener('click', function (event) {
|
||||
// console.log("------DEBUG----_this:", _this);
|
||||
// _this.setPageData({ eqpmNm: selectedGridData[0]?.eqpmNm });
|
||||
_this.setPageData({ popupDialogFg: true });
|
||||
});
|
||||
|
||||
elDiv.appendChild(el);
|
||||
this.elDiv = elDiv;
|
||||
}
|
||||
|
||||
getElement() {
|
||||
return this.elDiv;
|
||||
}
|
||||
}
|
||||
const mockData = {
|
||||
column: [
|
||||
{ header: 'No', name: 'rowNum', align: 'center', width: 40 },
|
||||
{ header: 'FAB', name: 'fab', align: 'left', width: 80 },
|
||||
{ header: '설비 그룹', name: 'eqpmGrpNm', align: 'left', minWidth: 150 },
|
||||
// {
|
||||
// header: '설비명', name: 'eqpmNm', align: 'left', minWidth: 150,
|
||||
// formatter: ({ value, row }) => {
|
||||
// return `
|
||||
// <div class="d-flex justify-space-between">
|
||||
// <span>${value}</span>
|
||||
// <button class="edit-btn blue--text" data-row='${JSON.stringify(row)}'>Edit</button
|
||||
// </div>
|
||||
// `;
|
||||
// }
|
||||
// },
|
||||
{
|
||||
header: '설비명',
|
||||
name: 'eqpmNm',
|
||||
width: 70,
|
||||
align: 'left',
|
||||
minWidth: 150,
|
||||
renderer: {
|
||||
type: MockCustumButton,
|
||||
options: {
|
||||
value: '계획수정',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
header: '구분', name: 'gubun', align: 'left', width: 80,
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
if (value == '1RSLT') {
|
||||
retVal = '전년실적';
|
||||
} else if (value == '2PLAN') {
|
||||
retVal = '계획';
|
||||
} else {
|
||||
retVal = value;
|
||||
}
|
||||
return retVal;
|
||||
},
|
||||
},
|
||||
|
||||
{ header: '1월', name: 'jan', align: 'right', width: 80 },
|
||||
{ header: '2월', name: 'feb', align: 'right', width: 80 },
|
||||
{ header: '3월', name: 'mar', align: 'right', width: 80 },
|
||||
{ header: '4월', name: 'apr', align: 'right', width: 80 },
|
||||
{ header: '5월', name: 'may', align: 'right', width: 80 },
|
||||
{ header: '6월', name: 'jun', align: 'right', width: 80 },
|
||||
{ header: '7월', name: 'jul', align: 'right', width: 80 },
|
||||
{ header: '8월', name: 'aug', align: 'right', width: 80 },
|
||||
{ header: '9월', name: 'sep', align: 'right', width: 80 },
|
||||
{ header: '10월', name: 'oct', align: 'right', width: 80 },
|
||||
{ header: '11월', name: 'nov', align: 'right', width: 80 },
|
||||
{ header: '12월', name: 'dec', align: 'right', width: 80 }
|
||||
],
|
||||
data: dataPathDataExample,
|
||||
defaultRow: dataPathDataExample,
|
||||
option: {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
header: {
|
||||
height: 65,
|
||||
complexColumns: [
|
||||
{
|
||||
header: '2025 년',
|
||||
name: 'yyyyCol',
|
||||
childNames: [
|
||||
'jan', 'feb', 'mar', 'apr', 'may', 'jun',
|
||||
'jul', 'aug', 'sep', 'oct', 'nov', 'dec'
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
}
|
||||
};
|
||||
this.dataPathMock[this.gridName] = mockData;
|
||||
this.$nextTick(() => {
|
||||
this.loadGrid = true;
|
||||
});
|
||||
},
|
||||
async init() {
|
||||
await this.getFab();
|
||||
await this.getEqpmKind();
|
||||
@ -418,25 +300,53 @@ export default {
|
||||
|
||||
class CustumButton {
|
||||
constructor(props) {
|
||||
// v-btn v-btn--is-elevated v-btn--has-bg theme--dark v-size--default
|
||||
const el = document.createElement('button');
|
||||
const { grid, rowKey, columnInfo } = props;
|
||||
|
||||
const gridData = grid.store.data.rawData;
|
||||
const value = gridData[rowKey][columnInfo.name];
|
||||
$(el).addClass('tui-grid-cell-content');
|
||||
// $(el).css('text-align', 'center');
|
||||
el.classList.add('v-btn');
|
||||
// el.style.width = '80%';
|
||||
// el.style.height = '80%';
|
||||
// el.style.boxShadow = '0px 0px 0px 2px #cbced6';
|
||||
// el.style.background = 'linear-gradient(to bottom, #242940 5%, #476e9e 100%)';
|
||||
// el.style.backgroundColor = '#144985';
|
||||
el.style.borderRadius = '7px';
|
||||
el.style.border = '1px solid #4e6096';
|
||||
// el.style.display = 'inline-block';
|
||||
// el.style.cursor = 'pointer';
|
||||
el.style.color = '#ffffff';
|
||||
// el.style.fontFamily = 'Arial';
|
||||
el.style.padding = '6% 3%';
|
||||
|
||||
// el.style.textDecoration = 'none';
|
||||
// el.style.textShadow = '0px 1px 0px #283966';
|
||||
|
||||
el.innerText = columnInfo.renderer.options.value;
|
||||
this.el = el;
|
||||
this.disabled = columnInfo.renderer.options.disabled || false;
|
||||
const elDiv = document.createElement('div');
|
||||
elDiv.innerHTML = `<span>${value}</span>`;
|
||||
$(elDiv).addClass('tui-grid-cell-content d-flex justify-space-between');
|
||||
const el2 = document.createElement('button');
|
||||
$(el2).addClass('edit-btn blue--text');
|
||||
el2.innerText = 'Edit';
|
||||
elDiv.appendChild(el2);
|
||||
|
||||
this.el = elDiv;
|
||||
|
||||
if (!this.disabled) {
|
||||
// hover 기능 구현
|
||||
this.el.addEventListener('mouseover', function(event) {
|
||||
// console.log('darkModeFg', _this.darkModeFg);
|
||||
// console.log('event',event.fromElement);
|
||||
// console.log('event',document.defaultView.getComputedStyle(el).getPropertyValue('background-color'));
|
||||
// rgb(85, 130, 220) // light
|
||||
// el.style.backgroundColor = '#26578F'; // rgb(20, 73, 133) // dark
|
||||
// let btnColor = _this.darkModeFg? {mouseOver: '#26578F', mouseOut: '#144985'} : {mouseOver: 'rgb(85, 130, 220)', mouseOut: 'rgb(71, 119, 217)'};
|
||||
// el.style.backgroundColor = btnColor['mouseOver'];
|
||||
});
|
||||
this.el.addEventListener('mouseout', function(event) {
|
||||
// rgb(71, 119, 217) // light
|
||||
// el.style.backgroundColor = '#144985'; // dark
|
||||
// console.log('event',event.fromElement);
|
||||
// let btnColor = _this.darkModeFg? {mouseOver: '#26578F', mouseOut: '#144985'} : {mouseOver: 'rgb(85, 130, 220)', mouseOut: 'rgb(71, 119, 217)'};
|
||||
// el.style.backgroundColor = btnColor['mouseOut'];
|
||||
});
|
||||
// click 이벤트
|
||||
el2.addEventListener('click', function (event) {
|
||||
this.el.addEventListener('click', function(event) {
|
||||
let gridData = grid.store.data.rawData;
|
||||
let rowNum = gridData[rowKey].rowNum;
|
||||
let selectedGridData = gridData.filter(item => {
|
||||
@ -942,110 +852,18 @@ const defaultData = {
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const dataPathDataExample = [
|
||||
{
|
||||
rowNum: 1,
|
||||
fab: 'B01',
|
||||
eqpmGrpNm: '방송기술운',
|
||||
eqpmNm: 'U/T_LT_CH101',
|
||||
gubun: '전력량',
|
||||
jan: 110000,
|
||||
feb: 112000,
|
||||
mar: 115000,
|
||||
apr: 117000,
|
||||
may: 120000,
|
||||
jun: 118000,
|
||||
jul: 119000,
|
||||
aug: 121000,
|
||||
sep: 122000,
|
||||
oct: 123000,
|
||||
nov: 124000,
|
||||
dec: 125000
|
||||
},
|
||||
{
|
||||
rowNum: 2,
|
||||
fab: 'B02',
|
||||
eqpmGrpNm: '방송기술운',
|
||||
eqpmNm: 'U/T_LT_CH102',
|
||||
gubun: '전력량',
|
||||
jan: 81000,
|
||||
feb: 82000,
|
||||
mar: 83000,
|
||||
apr: 84000,
|
||||
may: 85000,
|
||||
jun: 86000,
|
||||
jul: 87000,
|
||||
aug: 88000,
|
||||
sep: 89000,
|
||||
oct: 90000,
|
||||
nov: 91000,
|
||||
dec: 92000
|
||||
},
|
||||
{
|
||||
rowNum: 3, fab: 'C01', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH124', gubun: '수도량',
|
||||
jan: 106178, feb: 104740, mar: 92283, apr: 116081, may: 98945, jun: 126579,
|
||||
jul: 90690, aug: 124243, sep: 97524, oct: 84072, nov: 88160, dec: 118183
|
||||
},
|
||||
{
|
||||
rowNum: 4, fab: 'B01', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH103', gubun: '가스량',
|
||||
jan: 80442, feb: 102867, mar: 114939, apr: 106335, may: 81743, jun: 83711,
|
||||
jul: 86114, aug: 97432, sep: 84146, oct: 84775, nov: 117921, dec: 119417
|
||||
},
|
||||
{
|
||||
rowNum: 5, fab: 'B01', eqpmGrpNm: '설비운영팀', eqpmNm: 'U/T_LT_CH156', gubun: '전력량',
|
||||
jan: 90341, feb: 94072, mar: 122754, apr: 85471, may: 90813, jun: 116831,
|
||||
jul: 90856, aug: 109437, sep: 94029, oct: 96075, nov: 127067, dec: 102503
|
||||
},
|
||||
{
|
||||
rowNum: 6, fab: 'B03', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH183', gubun: '가스량',
|
||||
jan: 104163, feb: 107012, mar: 104631, apr: 83055, may: 106311, jun: 117306,
|
||||
jul: 86434, aug: 117087, sep: 118414, oct: 91499, nov: 93829, dec: 94192
|
||||
},
|
||||
{
|
||||
rowNum: 7, fab: 'C01', eqpmGrpNm: '전력관리부', eqpmNm: 'U/T_LT_CH158', gubun: '가스량',
|
||||
jan: 84821, feb: 128234, mar: 116883, apr: 116718, may: 114738, jun: 88297,
|
||||
jul: 93840, aug: 84700, sep: 98360, oct: 87021, nov: 113098, dec: 94734
|
||||
},
|
||||
{
|
||||
rowNum: 8, fab: 'B02', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH179', gubun: '가스량',
|
||||
jan: 128714, feb: 88797, mar: 124808, apr: 109283, may: 113141, jun: 82873,
|
||||
jul: 114993, aug: 129108, sep: 100885, oct: 125730, nov: 92127, dec: 122286
|
||||
},
|
||||
{
|
||||
rowNum: 9, fab: 'C01', eqpmGrpNm: '전력관리부', eqpmNm: 'U/T_LT_CH191', gubun: '전력량',
|
||||
jan: 107258, feb: 108424, mar: 113604, apr: 116648, may: 124149, jun: 129978,
|
||||
jul: 112215, aug: 129602, sep: 93551, oct: 111272, nov: 89736, dec: 128423
|
||||
},
|
||||
{
|
||||
rowNum: 10, fab: 'B02', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH104', gubun: '전력량',
|
||||
jan: 82089, feb: 102793, mar: 96784, apr: 85238, may: 86153, jun: 123849,
|
||||
jul: 115095, aug: 129484, sep: 102109, oct: 80976, nov: 119841, dec: 106309
|
||||
},
|
||||
{
|
||||
rowNum: 11, fab: 'C02', eqpmGrpNm: '전력관리부', eqpmNm: 'U/T_LT_CH139', gubun: '전력량',
|
||||
jan: 128592, feb: 95647, mar: 85982, apr: 126824, may: 87928, jun: 128967,
|
||||
jul: 94637, aug: 107530, sep: 122533, oct: 97546, nov: 112110, dec: 126250
|
||||
},
|
||||
{
|
||||
rowNum: 12, fab: 'C01', eqpmGrpNm: '설비운영팀', eqpmNm: 'U/T_LT_CH109', gubun: '전력량',
|
||||
jan: 106530, feb: 91716, mar: 111104, apr: 102663, may: 108912, jun: 91464,
|
||||
jul: 121245, aug: 90785, sep: 120586, oct: 105718, nov: 96191, dec: 111513
|
||||
}
|
||||
];
|
||||
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
<style lang="scss">
|
||||
// @import '@/assets/scss/common.scss';
|
||||
@import '@/assets/scss/var.scss';
|
||||
|
||||
@each $theme in dark, light {
|
||||
.v-application.#{$theme}-mode {
|
||||
.tui-grid {
|
||||
|
||||
&-row-odd,
|
||||
&-row-even {
|
||||
&:hover > .colrowspan {
|
||||
background-color: map-deep-get($config,
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
'tui-grid-cell-backgroundColor'
|
||||
) !important;
|
||||
@ -1055,10 +873,10 @@ const dataPathDataExample = [
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-cell {
|
||||
&.row-selected.colrowspan {
|
||||
background-color: map-deep-get($config,
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
'tui-grid-cell-backgroundColor'
|
||||
) !important;
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div ref="mainDiv" class="l-layout">
|
||||
<PageTitle text="냉동기" />
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -180,7 +180,7 @@ export default {
|
||||
contentData: {},
|
||||
loadChart: false,
|
||||
|
||||
testFlag: true,
|
||||
testFlag: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -270,15 +270,14 @@ export default {
|
||||
}
|
||||
},
|
||||
async getEnrgUseTotSummData() {
|
||||
// var res = await this.postApiReturn({
|
||||
// apiKey: "selectEnrgUseTotSumm",
|
||||
// resKey: "data",
|
||||
// sendParam: {
|
||||
// fromDt: this.pageData.fromDt,
|
||||
// eqpmKind: this.selectValue01,
|
||||
// },
|
||||
// });
|
||||
let res = [];
|
||||
var res = await this.postApiReturn({
|
||||
apiKey: "selectEnrgUseTotSumm",
|
||||
resKey: "data",
|
||||
sendParam: {
|
||||
fromDt: this.pageData.fromDt,
|
||||
eqpmKind: this.selectValue01,
|
||||
},
|
||||
});
|
||||
|
||||
if (this.testFlag == true) {
|
||||
res = [
|
||||
|
@ -4,7 +4,7 @@
|
||||
<v-avatar size="12" :style="{ backgroundColor: 'currentColor' }"></v-avatar>
|
||||
에너지 사용량 실적
|
||||
</h1> -->
|
||||
<PageTitle text="에너지 사용량 실적" />
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -255,9 +255,8 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
async init() {
|
||||
// await this.getSelectValueList();
|
||||
|
||||
// await this.setQueryParams();
|
||||
await this.getSelectValueList();
|
||||
await this.setQueryParams();
|
||||
this.gridInit();
|
||||
await this.getGridData();
|
||||
|
||||
@ -488,131 +487,41 @@ export default {
|
||||
this.loadGrid = false;
|
||||
this.enrgUseMainIdxDesc = [];
|
||||
var apiKey = null;
|
||||
// var params = {
|
||||
// fabId: this.selectValue01,
|
||||
// eqpmKindId: this.selectValue02,
|
||||
// eqpmGrpId: this.selectValue03,
|
||||
// fromDt: this.pageData.fromDt,
|
||||
// };
|
||||
var params = {
|
||||
fabId: this.selectValue01,
|
||||
eqpmKindId: this.selectValue02,
|
||||
eqpmGrpId: this.selectValue03,
|
||||
fromDt: this.pageData.fromDt,
|
||||
};
|
||||
|
||||
// if (this.pageData.cmCycle == "CYC_DAY") {
|
||||
// params["fromDtMm"] = String(this.pageData.fromDt).substring(0, 6);
|
||||
// apiKey = "selectDailyEnrgUseMainIdx";
|
||||
// } else if (this.pageData.cmCycle == "CYC_MONTH") {
|
||||
// apiKey = "selectMonthlyEnrgUseMainIdx";
|
||||
// }
|
||||
if (this.pageData.cmCycle == "CYC_DAY") {
|
||||
params["fromDtMm"] = String(this.pageData.fromDt).substring(0, 6);
|
||||
apiKey = "selectDailyEnrgUseMainIdx";
|
||||
} else if (this.pageData.cmCycle == "CYC_MONTH") {
|
||||
apiKey = "selectMonthlyEnrgUseMainIdx";
|
||||
}
|
||||
|
||||
// var res = await this.postApiReturn({
|
||||
// apiKey: apiKey,
|
||||
// resKey: "eqpmIndMntrData",
|
||||
// sendParam: params,
|
||||
// });
|
||||
var res = await this.postApiReturn({
|
||||
apiKey: apiKey,
|
||||
resKey: "eqpmIndMntrData",
|
||||
sendParam: params,
|
||||
});
|
||||
|
||||
// this.enrgUseMainIdxDesc = await this.postApiReturn({
|
||||
// apiKey: "selectEnrgUseMainIdxDesc",
|
||||
// resKey: "eqpmIndMntrData",
|
||||
// sendParam: {
|
||||
// eqpmGrpId: this.selectValue03,
|
||||
// },
|
||||
// });
|
||||
|
||||
var newRes = [
|
||||
{
|
||||
no: 1,
|
||||
fabId: "FAB001",
|
||||
fabNm: "서울FAB",
|
||||
eqpmGrpId: "GRP01",
|
||||
eqpmGrpNm: "조립라인",
|
||||
eqpmId: "EQ001",
|
||||
eqpmNm: "설비A",
|
||||
planVal: 1000,
|
||||
usedVal: 950,
|
||||
effcRt: "95%",
|
||||
gd01: 88,
|
||||
gd02: 90,
|
||||
gd03: 85,
|
||||
gd04: 87,
|
||||
gd05: 89,
|
||||
gd06: 86,
|
||||
gd07: 90,
|
||||
gd08: 88,
|
||||
gd09: 87,
|
||||
gd10: 89,
|
||||
this.enrgUseMainIdxDesc = await this.postApiReturn({
|
||||
apiKey: "selectEnrgUseMainIdxDesc",
|
||||
resKey: "eqpmIndMntrData",
|
||||
sendParam: {
|
||||
eqpmGrpId: this.selectValue03,
|
||||
},
|
||||
{
|
||||
no: 2,
|
||||
fabId: "FAB002",
|
||||
fabNm: "부산FAB",
|
||||
eqpmGrpId: "GRP02",
|
||||
eqpmGrpNm: "검사라인",
|
||||
eqpmId: "EQ002",
|
||||
eqpmNm: "설비B",
|
||||
planVal: 1200,
|
||||
usedVal: 1100,
|
||||
effcRt: "91.7%",
|
||||
gd01: 85,
|
||||
gd02: 84,
|
||||
gd03: 86,
|
||||
gd04: 83,
|
||||
gd05: 82,
|
||||
gd06: 84,
|
||||
gd07: 85,
|
||||
gd08: 86,
|
||||
gd09: 87,
|
||||
gd10: 88,
|
||||
},
|
||||
{
|
||||
no: 3,
|
||||
fabId: "FAB003",
|
||||
fabNm: "대전FAB",
|
||||
eqpmGrpId: "GRP03",
|
||||
eqpmGrpNm: "포장라인",
|
||||
eqpmId: "EQ003",
|
||||
eqpmNm: "설비C",
|
||||
planVal: 900,
|
||||
usedVal: 870,
|
||||
effcRt: "96.7%",
|
||||
gd01: 90,
|
||||
gd02: 91,
|
||||
gd03: 89,
|
||||
gd04: 88,
|
||||
gd05: 90,
|
||||
gd06: 91,
|
||||
gd07: 92,
|
||||
gd08: 90,
|
||||
gd09: 89,
|
||||
gd10: 91,
|
||||
},
|
||||
{
|
||||
no: 4,
|
||||
fabId: "FAB004",
|
||||
fabNm: "광주FAB",
|
||||
eqpmGrpId: "GRP04",
|
||||
eqpmGrpNm: "테스트라인",
|
||||
eqpmId: "EQ004",
|
||||
eqpmNm: "설비D",
|
||||
planVal: 1100,
|
||||
usedVal: 1050,
|
||||
effcRt: "95.5%",
|
||||
gd01: 87,
|
||||
gd02: 88,
|
||||
gd03: 86,
|
||||
gd04: 85,
|
||||
gd05: 86,
|
||||
gd06: 87,
|
||||
gd07: 88,
|
||||
gd08: 89,
|
||||
gd09: 90,
|
||||
gd10: 91,
|
||||
},
|
||||
];
|
||||
});
|
||||
|
||||
// for (var i = 0; i < res.length; i++) {
|
||||
// newRes.push({
|
||||
// ...res[i],
|
||||
// no: i + 1,
|
||||
// });
|
||||
// }
|
||||
var newRes = [];
|
||||
for (var i = 0; i < res.length; i++) {
|
||||
newRes.push({
|
||||
...res[i],
|
||||
no: i + 1,
|
||||
});
|
||||
}
|
||||
|
||||
this.setGridData({
|
||||
gridKey: this.gridName,
|
||||
@ -752,141 +661,9 @@ const defaultData = {
|
||||
},
|
||||
fromDt: Utility.setFormatDate(new Date(), "YYYYMM"), // 조회 시작일
|
||||
grid01: {
|
||||
data: [
|
||||
{
|
||||
no: 1,
|
||||
fabId: "FAB001",
|
||||
fabNm: "서울FAB",
|
||||
eqpmGrpId: "GRP01",
|
||||
eqpmGrpNm: "조립라인",
|
||||
eqpmId: "EQ001",
|
||||
eqpmNm: "설비A",
|
||||
planVal: 1000,
|
||||
usedVal: 950,
|
||||
effcRt: "95%",
|
||||
gd01: 88,
|
||||
gd02: 90,
|
||||
gd03: 85,
|
||||
gd04: 87,
|
||||
gd05: 89,
|
||||
gd06: 86,
|
||||
gd07: 90,
|
||||
gd08: 88,
|
||||
gd09: 87,
|
||||
gd10: 89,
|
||||
},
|
||||
{
|
||||
no: 2,
|
||||
fabId: "FAB002",
|
||||
fabNm: "부산FAB",
|
||||
eqpmGrpId: "GRP02",
|
||||
eqpmGrpNm: "검사라인",
|
||||
eqpmId: "EQ002",
|
||||
eqpmNm: "설비B",
|
||||
planVal: 1200,
|
||||
usedVal: 1100,
|
||||
effcRt: "91.7%",
|
||||
gd01: 85,
|
||||
gd02: 84,
|
||||
gd03: 86,
|
||||
gd04: 83,
|
||||
gd05: 82,
|
||||
gd06: 84,
|
||||
gd07: 85,
|
||||
gd08: 86,
|
||||
gd09: 87,
|
||||
gd10: 88,
|
||||
},
|
||||
{
|
||||
no: 3,
|
||||
fabId: "FAB003",
|
||||
fabNm: "대전FAB",
|
||||
eqpmGrpId: "GRP03",
|
||||
eqpmGrpNm: "포장라인",
|
||||
eqpmId: "EQ003",
|
||||
eqpmNm: "설비C",
|
||||
planVal: 900,
|
||||
usedVal: 870,
|
||||
effcRt: "96.7%",
|
||||
gd01: 90,
|
||||
gd02: 91,
|
||||
gd03: 89,
|
||||
gd04: 88,
|
||||
gd05: 90,
|
||||
gd06: 91,
|
||||
gd07: 92,
|
||||
gd08: 90,
|
||||
gd09: 89,
|
||||
gd10: 91,
|
||||
},
|
||||
{
|
||||
no: 4,
|
||||
fabId: "FAB004",
|
||||
fabNm: "광주FAB",
|
||||
eqpmGrpId: "GRP04",
|
||||
eqpmGrpNm: "테스트라인",
|
||||
eqpmId: "EQ004",
|
||||
eqpmNm: "설비D",
|
||||
planVal: 1100,
|
||||
usedVal: 1050,
|
||||
effcRt: "95.5%",
|
||||
gd01: 87,
|
||||
gd02: 88,
|
||||
gd03: 86,
|
||||
gd04: 85,
|
||||
gd05: 86,
|
||||
gd06: 87,
|
||||
gd07: 88,
|
||||
gd08: 89,
|
||||
gd09: 90,
|
||||
gd10: 91,
|
||||
},
|
||||
],
|
||||
column: [
|
||||
{ header: "NO", name: "no", align: "center" },
|
||||
{ header: "fabId", name: "fabId", hidden: true },
|
||||
{ header: "FAB", name: "fabNm", align: "left" },
|
||||
{ header: "eqpmGrpId", name: "eqpmGrpId", hidden: true },
|
||||
{ header: "설비그룹", name: "eqpmGrpNm", align: "left" },
|
||||
{ header: "eqpmId", name: "eqpmId", hidden: true },
|
||||
{ header: "설비명", name: "eqpmNm", align: "left" },
|
||||
{ header: "계획량", name: "planVal", align: "right" },
|
||||
{ header: "사용량", name: "usedVal", align: "right" },
|
||||
{ header: "KPI", name: "effcRt", align: "right" },
|
||||
{ header: "지표1", name: "gd01", align: "right" },
|
||||
{ header: "지표2", name: "gd02", align: "right" },
|
||||
{ header: "지표3", name: "gd03", align: "right" },
|
||||
{ header: "지표4", name: "gd04", align: "right" },
|
||||
{ header: "지표5", name: "gd05", align: "right" },
|
||||
{ header: "지표6", name: "gd06", align: "right" },
|
||||
{ header: "지표7", name: "gd07", align: "right" },
|
||||
{ header: "지표8", name: "gd08", align: "right" },
|
||||
{ header: "지표9", name: "gd09", align: "right" },
|
||||
{ header: "지표10", name: "gd10", align: "right" },
|
||||
],
|
||||
option: {
|
||||
header: {
|
||||
height: 65,
|
||||
complexColumns: [
|
||||
{
|
||||
header: "주요지표",
|
||||
name: "complexColumn01",
|
||||
childNames: [
|
||||
"gd01",
|
||||
"gd02",
|
||||
"gd03",
|
||||
"gd04",
|
||||
"gd05",
|
||||
"gd06",
|
||||
"gd07",
|
||||
"gd08",
|
||||
"gd09",
|
||||
"gd10",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
data: [],
|
||||
column: [],
|
||||
option: {},
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -669,7 +669,8 @@ const INIT_URL_STATE = {
|
||||
// prgmId : PRG0052 과거 검침 데이터 조회
|
||||
selectTagRawDataByQuarter:
|
||||
'ems/base/PastRsltDataReadCtr/selectTagRawDataByQuarter',
|
||||
|
||||
selectTagRawDataByQuarterPageTotal:
|
||||
'ems/base/PastRsltDataReadCtr/selectTagRawDataByQuarterPageTotal',
|
||||
// prgmId : PRG4107 개인화 대시보드
|
||||
selectIndvWidgetList: 'ems/base/DashboardHfemsCtr/selectIndvWidgetList',
|
||||
selectEnergyUseReadHourAddup:
|
||||
|
Reference in New Issue
Block a user