Compare commits

...

25 Commits

Author SHA1 Message Date
dev
710714116e Remove inline style 2025-07-29 11:30:05 +09:00
dev
2845672723 Update 16, 22 2025-07-29 10:51:49 +09:00
dev
2dd0c6a72c Merge pull request 'dev-trungvq7-2207' (#10) from dev-trungvq7-2207 into dev
Reviewed-on: #10
2025-07-28 14:39:36 +09:00
dev
631637a8e1 Merge branch 'dev' of http://218.237.212.51:30003/gitadmin/sk_fems_ui into dev-trungvq7-2207 2025-07-28 14:31:49 +09:00
dev
3ff87852e5 Update 2507 2025-07-28 14:31:41 +09:00
dev
117e0adeb9 Merge pull request 'dev-dungtv-0725' (#9) from dev-dungtv-0725 into dev
Reviewed-on: #9
2025-07-28 10:59:55 +09:00
402b09440f fix code comment 2025-07-28 08:59:17 +07:00
71f7cf4d30 Merge branch 'dev' of http://218.237.212.51:30003/gitadmin/sk_fems_ui into dev-dungtv-0725 2025-07-28 08:45:04 +07:00
d3984182e8 update screen 8, 10 2025-07-28 08:44:51 +07:00
dev
933d4b751f Merge pull request 'dev-luannv27-2407' (#7) from dev-luannv27-2407 into dev
Reviewed-on: #7
2025-07-28 10:35:21 +09:00
020432d5ac update code 2025-07-25 19:05:38 +09:00
3f99958fe3 update slected header 2025-07-25 19:03:41 +09:00
dev
898df6743a Merge pull request 'dev-manhph1-screen18-19-21-28' (#5) from dev-manhph1-screen18-19-21-28 into dev
Reviewed-on: #5
2025-07-25 18:50:19 +09:00
dd559629ab dev-manhph1-screen18-19-21-28 2025-07-25 18:11:31 +09:00
dev
d45d141c3c Update 2507 2025-07-25 17:59:38 +09:00
dev
1453e75f9a Merge pull request 'Update to original menu' (#4) from dev-nghiantt-menu into dev
Reviewed-on: #4
2025-07-25 16:04:04 +09:00
7227d5d56c Update to original menu 2025-07-25 12:36:03 +09:00
85fc9a62af update theme header 2025-07-25 12:30:27 +09:00
dev
a87a8262f4 Merge pull request 'Update screen 7, 25' (#3) from dev-trungvq7-2207 into dev
Reviewed-on: #3
2025-07-25 12:15:44 +09:00
dev
481434a144 Update 2025-07-25 12:09:27 +09:00
dev
524023b3e1 update screen 7, 25 2025-07-25 11:57:02 +09:00
dev
cb2d4e2e91 Merge branch 'dev' of http://218.237.212.51:30003/gitadmin/sk_fems_ui into dev-trungvq7-2207 2025-07-24 16:54:54 +09:00
dev
dca6673a11 commit 2407 2025-07-24 16:54:47 +09:00
dev
15aa03b1c1 Merge pull request 'impoaver sceen 2-notice management page' (#2) from dev-dungtv-screen2 into dev
Reviewed-on: #2
2025-07-24 16:49:45 +09:00
0ad898769d update32.1vs32.2 2025-07-24 11:41:23 +09:00
44 changed files with 1654 additions and 3231 deletions

View File

@ -433,6 +433,10 @@ a {
.v-application.#{$theme}-mode {
min-width: 1000px;
.head-logo{
gap: 8px;
}
.v-navigation-drawer {
background: map-deep-get($config, #{$theme}, "menu-bg-color");
}
@ -474,7 +478,7 @@ a {
.btn-header {
background-color: map-deep-get($config, #{$theme}, "v-btn-header-background");
border: map-deep-get($config, #{$theme}, "v-btn-header-border");
border:1px solid map-deep-get($config, #{$theme}, "v-btn-header-border");
color: map-deep-get($config, #{$theme}, "v-btn-header-text");
}
@ -1255,19 +1259,11 @@ a {
opacity: 0;
}
.v-list-item__content {
background-color: currentColor;
}
.v-list-item__title {
color: map-deep-get($config,
#{$theme},
"tui-datepicker-calendar-color"
);
@if $theme ==light {
color: #fff !important;
}
}
}
}
@ -1310,18 +1306,24 @@ a {
.btn-close-menu-list {
min-width: 100px;
border-color: transparent;
background-color: map-deep-get($config, #{$theme}, "btn-header-select-bg") !important;
.v-list-item {
min-height: 30px;
}
.v-list-item__title {
color: #fff;
color: map-deep-get($config, #{$theme}, "btn-header-select-color");
&:hover {
color: #46c0ff;
}
}
.v-btn {
background-color: transparent !important;
color: map-deep-get($config, #{$theme}, "btn-header-select-color") !important;
}
}
[hover-tooltip] {

View File

@ -107,6 +107,13 @@
}
.ant-btn {
&.ant-btn-outlined {
color:map-deep-get($config, #{$theme}, "ant-btn-default-color");
border:1px solid map-deep-get($config, #{$theme}, "ant-btn-default-border-outlined");
background-color: transparent;
}
&.ant-btn-primary {
background: map-deep-get($config, #{$theme}, "ant-btn-primary-bg");
border-color:map-deep-get($config, #{$theme}, "ant-btn-primary-bg");
@ -125,6 +132,15 @@
background: map-deep-get($config, #{$theme}, "ant-btn-danger-bg") !important;
}
}
&.expand-btn {
.v-icon {
color: map-deep-get($config, #{$theme}, "basic-button-color");
svg {
fill: map-deep-get($config, #{$theme}, "basic-button-color");
}
}
}
}
}
}
@ -151,4 +167,13 @@
height: 16px;
background:none;
}
}
}
.ant-btn {
&.expand-btn {
.v-icon {
span {
margin-right: 8px;
}
}
}
}

View File

@ -1,4 +1,6 @@
.v-select__custom {
padding: 0.125rem;
&.v-text-field.v-text-field--solo:not(.v-text-field--solo-flat)>.v-input__control>.v-input__slot {
box-shadow: none;
}
@ -42,6 +44,10 @@
legend {
width: 0;
}
.v-select-list {
padding: 0 1rem;
}
}
.v-input__custom {
@ -221,6 +227,16 @@
.v-application.#{$theme}-mode {
.v-input-popup__custom {
.v-input__slot {
padding-left: 12px;
padding-right: 12px;
border: 1px solid map-deep-get($config,
#{$theme},
"v-input-popup-password-border"
);
}
}
.v-textarea {
.v-input__slot{

View File

@ -72,11 +72,11 @@ $config: (
v-btn-backgroundColor: #144985,
v-box: #212224,
v-banner-border-color: rgba(255, 255, 255, 0.1),
v-treeview-node-root-backgroundColor: #18579e,
v-treeview-node-root-label-color: #fff,
v-treeview-node-root-label-active-color: #fff,
v-treeview-node-root-icon-color: #fff,
v-treeview-node-root-icon-active-color: #fff,
v-treeview-node-root-backgroundColor: #212224,
v-treeview-node-root-label-color: #FFFFFFD9,
v-treeview-node-root-label-active-color: #FFFFFFD9,
v-treeview-node-root-icon-color: #FFFFFFD9,
v-treeview-node-root-icon-active-color: #FFFFFFD9,
// v-treeview-node-subroot-backgroundColor: #FFFFFF0A,
v-treeview-node-subroot-backgroundColor: transparent,
v-treeview-node-label-color: rgba(255, 255, 255, 0.6),
@ -152,6 +152,7 @@ $config: (
search-btn-background: #1668DC,
v-btn-color-default: #FFFFFFD9,
v-btn-bg-default: #FFFFFF2E,
v-input-popup-password-border: #424242,
v-input-textarea-border: #424242,
v-input-textarea-bg: #212224,
v-input-textarea-color: #FFFFFFD9,
@ -166,6 +167,9 @@ $config: (
ant-btn-default-border:#FFFFFF2E,
ant-btn-default-bg:#FFFFFF2E,
ant-btn-default-color:#FFFFFFD9,
ant-btn-default-border-outlined:#424242,
btn-header-select-bg: #1F1F1F,
btn-header-select-color:#FFFFFFD9,
),
light: (w-g5: $--color-gray_555,
g5-w: $--color-white,
@ -204,11 +208,11 @@ $config: (
// v-btn-backgroundColor: #fff,
v-box: #FFFFFF,
v-banner-border-color: #ddd,
v-treeview-node-root-backgroundColor: #4777d9,
v-treeview-node-root-label-color: #111,
v-treeview-node-root-label-active-color: #fff,
v-treeview-node-root-icon-color: #555,
v-treeview-node-root-icon-active-color: #fff,
v-treeview-node-root-backgroundColor: #FFFFFF,
v-treeview-node-root-label-color: #000000E0,
v-treeview-node-root-label-active-color: #000000E0,
v-treeview-node-root-icon-color: #000000E0,
v-treeview-node-root-icon-active-color: #000000E0,
// v-treeview-node-subroot-backgroundColor: #00000005,
v-treeview-node-subroot-backgroundColor: transparent,
v-treeview-node-label-color: #555,
@ -282,6 +286,7 @@ $config: (
search-btn-background: #1677FF,
v-btn-bg-default: #00000026,
v-btn-color-default: #000000E0,
v-input-popup-password-border: #D9D9D9,
v-input-textarea-border: #D9D9D9,
v-input-textarea-bg: #FFFFFF,
v-input-textarea-color: #000000E0,
@ -296,5 +301,8 @@ $config: (
ant-btn-default-border:#00000026,
ant-btn-default-bg:#00000026,
ant-btn-default-color:#000000E0,
ant-btn-default-border-outlined:#D9D9D9,
btn-header-select-color:#1F1F1F,
btn-header-select-bg:#FFFFFF,
),
);

View File

@ -27,7 +27,7 @@
/> -->
</template>
<v-list class="pa-2">
<v-list class="pa-2 btn-close-menu-list" >
<!-- <v-list-item class="mb-1">-->
<!-- <div class="d-flex align-center">-->
<!-- <v-avatar class="mr-1" size="20">-->

View File

@ -13,14 +13,15 @@
</v-col>
<v-col :cols="label ? textCols : ''">
<a-checkbox
v-model:checked="chkValue"
:disabled="disabledFlag"
:readonly="readonly || false"
:required="required || false"
@change="modifyValue"
>
</a-checkbox>
<v-checkbox
v-model="chkValue"
:disabled="disabledFlag"
:readonly="readonly || false"
:required="required || false"
:false-value="false"
:color="isDarkMode ? '#fff' : '#1890ff'"
@change="modifyValue"
></v-checkbox>
</v-col>
</v-row>
</template>

View File

@ -1,19 +1,26 @@
<template>
<h1 class="h1-title">
<v-avatar size="12" :style="{ backgroundColor: 'currentColor' }"></v-avatar>
{{ text }}
{{ text ? text : menuNm}}
</h1>
</template>
<script>
import { mapState } from 'vuex';
export default {
name: "PageTitle",
props: {
text: {
type: String,
required: true,
required: false,
},
},
computed: {
...mapState({
menuNm: state => state.activeMenuInfo.menuNm,
}),
}
};
</script>

View File

@ -1,9 +1,11 @@
<template>
<v-switch
class="theme-switch"
v-model="mode"
@change="themeChange"
></v-switch>
<a-button
class="btn-header"
:color="mode ? 'dark' : 'light'"
@click="themeChange"
icon="bulb"
>
</a-button>
</template>
<script>
import { mapState, mapMutations } from 'vuex';
@ -26,8 +28,11 @@ export default {
setThemeChange: 'setThemeChange',
}),
themeChange() {
this.mode = !this.mode;
this.$vuetify.theme.isDark = this.mode;
this.setThemeChange(this.mode);
console.log(this.mode)
console.log(this.$vuetify.theme.isDark)
},
},
};
@ -69,12 +74,14 @@ export default {
background-color: #f2f2f2;
top: 2px;
left: 0;
background-image: url(../../assets/images/icon/ico-theme-light.png);
// background-image: url(../../assets/images/icon/ico-theme-light.png);
content: "light";
background-size: 18px 18px;
background-position: center center;
background-repeat: no-repeat;
}
}
&.v-input--is-label-active {
::v-deep {
.v-input--switch__track {
@ -82,7 +89,8 @@ export default {
}
.v-input--switch__thumb {
// transform: translate(38px, 0);
background-image: url(../../assets/images/icon/ico-theme-dark.png);
// background-image: url(../../assets/images/icon/ico-theme-dark.png);
content: 'dark';
}
}
}

View File

@ -4,7 +4,7 @@
v-if="item.label"
:cols="item.cols == 12 ? 2 : 4"
:style="item.padding ? 'padding-left:10px' : ''"
class="mb-2"
class="py-0"
>
<label for="" class="search-box-label">
<v-icon

View File

@ -1,6 +1,6 @@
<template>
<v-row class="search-box" align="center" no-gutters>
<v-col v-if="item.label" :cols="item.cols == 12 ? 2 : 4">
<v-col v-if="item.label" :cols="item.labelCols !== undefined ? item.labelCols : item.cols == 12 ? 2 : 4">
<label for="" class="search-box-label">
<v-icon
x-small
@ -28,10 +28,14 @@
></v-text-field>
</template>
<template v-else>
<v-btn :ripple="false" @click="dialog = !dialog">
<!-- <v-icon>mdi-content-save</v-icon> -->
<!-- <v-icon>mdi-content-save</v-icon> -->
<!-- <v-btn :ripple="false" @click="dialog = !dialog">
<span>비밀번호 {{ isPassword }}</span>
</v-btn>
</v-btn> -->
<a-button :ripple="false" @click="dialog = !dialog" class="ant-btn-outlined">
<!-- <v-icon>mdi-content-save</v-icon> -->
비밀번호 {{ isPassword }}
</a-button>
</template>
</v-col>
@ -48,7 +52,7 @@
</label>
<v-text-field
v-model.trim="firstPswd"
class="v-input__custom"
class="v-input-popup__custom"
type="password"
:readonly="!isFocused"
@focus="isFocused = true"
@ -61,7 +65,7 @@
</label>
<v-text-field
v-model.trim="secondPswd"
class="v-input__custom"
class="v-input-popup__custom"
type="password"
:readonly="!isFocused"
@focus="isFocused = true"
@ -72,8 +76,15 @@
<v-divider></v-divider>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="primary" dark @click="setUpdate()">확인</v-btn>
<v-btn color="primary" dark @click="close()">닫기</v-btn>
<!-- <v-btn color="primary" dark @click="setUpdate()">확인</v-btn> -->
<div>
<a-button @click="close()" class="btn-default">삭제</a-button>
<a-button type="primary" @click="setUpdate()" class="v-btn-add-text">
확인
</a-button>
</div>
<!-- <v-btn color="primary" dark @click="close()">닫기</v-btn> -->
</v-card-actions>
</v-card>
</v-dialog>
@ -135,8 +146,10 @@ export default {
} else {
return '';
}
console.log(value)
},
set(value) {
console.log(value)
return value;
},
},

View File

@ -71,14 +71,12 @@
</div>
</div>
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
<!-- <v-btn :ripple="false" @click="setUpdate($event)">확인</v-btn>
<v-btn :ripple="false" @click="dialogOpenCloseEvent(dialog)">닫기</v-btn> -->
<!-- <v-btn v-if="item.closeBtnFg || false" :ripple="false" @click="deleteBtnAction($event)">삭제</v-btn> -->
<a-button :ripple="false" @click="setUpdate($event)" class="mr-2">확인</a-button>
<a-button :ripple="false" type="primary" @click="dialogOpenCloseEvent(dialog)"
<a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)"
class="mr-2">닫기</a-button>
<a-button v-if="item.closeBtnFg || false" :ripple="false" icon="delete" type="danger" ghost danger
@click="deleteBtnAction($event)">삭제</a-button>
<a-button v-if="item.closeBtnFg || false" :ripple="false" type="danger" ghost danger
@click="deleteBtnAction($event)" class="mr-2">삭제</a-button>
<a-button :ripple="false" type="primary" @click="setUpdate($event)" >확인</a-button>
</v-card-actions>
</v-card>
</v-dialog>
@ -298,46 +296,46 @@ export default {
},
async setSelectValueList01() {
// form으로 popup 사용할 때 인자로 eqpmKindId, eqpmGrpId 보내줘야한다.
// let res = await this.postApiReturn({
// apiKey: 'selectEqpmGrpCodeList',
// resKey: 'eqpmGrpCodeLists',
// sendParam: {
// eqpmKindId:
// this.item.eqpmKindId != undefined
// ? this.item.eqpmKindId
// : this.searchParam.eqpmKindId,
// },
// // form을 통해 popup을 사용할 경우 -> this.item.eqpmKindId 사용
// // 부모 페이지에서 설비종류인 eqpmKindId 값을 꼭 가져와야한다.
// });
// if (res.length > 0) {
// this.selectValueList01 = await res.map(obj => {
// return {
// text: obj.eqpmGrpNm,
// value: obj.eqpmGrpId,
// };
// });
// // form을 통해 popup을 사용할 경우 -> this.item.eqpmGrpId 사용
// // 부모 페이지에서 설비그룹을 선택한 값이 있다면(eqpmGrpId) 그 값으로 바인딩 아닐 경우 조회한 데이터의 첫번째 값으로 선택
// // console.log('this.item.eqpmGrpId : ', this.item.eqpmGrpId);
// // console.log('this.searchParam.eqpmGrpId : ', this.searchParam.eqpmGrpId);
// this.selectValue01 =
// this.item.eqpmGrpId != undefined
// ? this.item.eqpmGrpId
// : this.searchParam.eqpmGrpId != undefined
// ? this.searchParam.eqpmGrpId
// : this.selectValueList01[0].value;
// } else {
// this.selectValueList01 = [];
// this.selectValue01 = null;
// }
let res = await this.postApiReturn({
apiKey: 'selectEqpmGrpCodeList',
resKey: 'eqpmGrpCodeLists',
sendParam: {
eqpmKindId:
this.item.eqpmKindId != undefined
? this.item.eqpmKindId
: this.searchParam.eqpmKindId,
},
// form을 통해 popup을 사용할 경우 -> this.item.eqpmKindId 사용
// 부모 페이지에서 설비종류인 eqpmKindId 값을 꼭 가져와야한다.
});
if (res.length > 0) {
this.selectValueList01 = await res.map(obj => {
return {
text: obj.eqpmGrpNm,
value: obj.eqpmGrpId,
};
});
// form을 통해 popup을 사용할 경우 -> this.item.eqpmGrpId 사용
// 부모 페이지에서 설비그룹을 선택한 값이 있다면(eqpmGrpId) 그 값으로 바인딩 아닐 경우 조회한 데이터의 첫번째 값으로 선택
// console.log('this.item.eqpmGrpId : ', this.item.eqpmGrpId);
// console.log('this.searchParam.eqpmGrpId : ', this.searchParam.eqpmGrpId);
this.selectValue01 =
this.item.eqpmGrpId != undefined
? this.item.eqpmGrpId
: this.searchParam.eqpmGrpId != undefined
? this.searchParam.eqpmGrpId
: this.selectValueList01[0].value;
} else {
this.selectValueList01 = [];
this.selectValue01 = null;
}
this.selectValueList01 = [
{ label: '냉동기고온', value: '냉동기고온' },
{ label: '냉동기저온', value: '냉동기저온' },
{ label: '공조기', value: '공조기' },
{ label: '보일러', value: '보일러' }
];
// this.selectValueList01 = [
// { label: '냉동기고온', value: '냉동기고온' },
// { label: '냉동기저온', value: '냉동기저온' },
// { label: '공조기', value: '공조기' },
// { label: '보일러', value: '보일러' }
// ];
},
search() {
this.getGridData();
@ -388,44 +386,35 @@ export default {
this.loadGrid = false;
let res = [];
// res = await this.postApiReturn({
// apiKey: 'selectEgrpPysclQtyPop',
// resKey: 'egrpPysclQtyData',
// sendParam: {
// searchWord: this.searchWord,
// eqpmGrpId: this.selectValue01,
// openMode: this.item.openMode,
// },
// });
// let newRes = [];
// let tempTagList = this.pyscPopVal.split('/*wq2a/');
// let tagList = tempTagList.filter(item => item != '');
// if (tagList.length > 0) {
// newRes = res.filter(item => {
// return !tagList.includes(item.pysclQtyId);
// });
// res = newRes;
// }
// //이미 선택된 값들 제거(배열)
// if (this.item.dataList) {
// if (this.item.dataList.length > 0) {
// newRes = res.filter(item => {
// return !this.item.dataList.includes(item.pysclQtyId);
// });
// res = newRes;
// }
// }
res = [
{
'pysclQtyId': 'PYSCL00001',
'pysclQtyCd': 'AMP_1A',
'pysclQtyNm': '회로1 전류A',
'pysclQtyTpNm': 'TAG'
res = await this.postApiReturn({
apiKey: 'selectEgrpPysclQtyPop',
resKey: 'egrpPysclQtyData',
sendParam: {
searchWord: this.searchWord,
eqpmGrpId: this.selectValue01,
openMode: this.item.openMode,
},
});
let newRes = [];
let tempTagList = this.pyscPopVal.split('/*wq2a/');
let tagList = tempTagList.filter(item => item != '');
if (tagList.length > 0) {
newRes = res.filter(item => {
return !tagList.includes(item.pysclQtyId);
});
res = newRes;
}
//이미 선택된 값들 제거(배열)
if (this.item.dataList) {
if (this.item.dataList.length > 0) {
newRes = res.filter(item => {
return !this.item.dataList.includes(item.pysclQtyId);
});
res = newRes;
}
]
}
this.setModalGridData({
modalKey: this.myModalKey,
gridKey: this.grid_01,

View File

@ -62,7 +62,7 @@
<v-row align="center" no-gutters>
<v-col :cols="12">
<label for="" class="search-box-label">
<v-icon small :class="['mr-1','icon-blue']">$icoBulletPoint</v-icon>
<v-icon small :class="['mr-1', 'icon-blue']">$icoBulletPoint</v-icon>
설비
</label>
</v-col>
@ -80,7 +80,7 @@
<v-row align="center" no-gutters class="mt-4">
<v-col :cols="12">
<label for="" class="search-box-label">
<v-icon small :class="['mr-1','icon-blue']">$icoBulletPoint</v-icon>
<v-icon small :class="['mr-1', 'icon-blue']">$icoBulletPoint</v-icon>
가이드지표
</label>
</v-col>
@ -190,7 +190,7 @@ export default {
modalDataKey: 'modalData',
myModalKey: 'eqpmDetlPop',
gridName: 'eqpmDetlGrid',
loadGrid: true,
loadGrid: false,
setGrid: false,
popCheck: false,
dialog: false,
@ -217,13 +217,7 @@ export default {
}),
InputValue: {
get() {
// return this.myBindingData;
return [{
"eqpmId": "EQ001",
"eqpmNm": "Etcher A12",
"gdIdxId": "GD001",
"gdIdxNm": "Etch Depth Guide",
}]
return this.myBindingData;
}
},
chkDialog() {
@ -241,7 +235,7 @@ export default {
},
async popCheck(val) {
if (val) {
// await this.getRowGridData();
await this.getRowGridData();
this.dialog = true;
} else {
this.dialog = false;
@ -365,57 +359,24 @@ export default {
},
async getRowGridData() {
this.loadGrid = false;
// var res = await this.postApiReturn({
// apiKey: 'selectEqpmDetailPop',
// resKey: 'eqpmDetlPopData',
// sendParam: {
// gdIdxId : this.myBindingData.gdIdxId,
// eqpmId : this.myBindingData.eqpmId,
// fromDt : this.myBindingData.fromDt,
// toDt : this.myBindingData.toDt
// },
// });
// const dayjs = require('dayjs');
// var newRes = res.map(item=>
// item = {
// ...item,
// totDttmDay : Utility.setFormatDate(item.totDttm, 'YYYY-MM-DD'),
// totDttmTime : Utility.setFormatDate(item.totDttm, 'HH') + "~" + dayjs(item.totDttm).add(1,'h').format('HH'),
// }
// );
const newRes = [
{
"totDttmDay": "2025-07-10",
"totDttmTime": "14:00~15:00",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 500,
"warnStndVal": 700,
"totVal": 720,
"alrmMsg": "Chamber pressure exceeded warning threshold. Immediate inspection required.",
"alrmKind": "경고"
var res = await this.postApiReturn({
apiKey: 'selectEqpmDetailPop',
resKey: 'eqpmDetlPopData',
sendParam: {
gdIdxId: this.myBindingData.gdIdxId,
eqpmId: this.myBindingData.eqpmId,
fromDt: this.myBindingData.fromDt,
toDt: this.myBindingData.toDt
},
{
"totDttmDay": "2025-07-10",
"totDttmTime": "09:00~10:00",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 60,
"warnStndVal": 80,
"totVal": 75,
"alrmMsg": "Temperature nearing warning threshold. Monitor closely.",
"alrmKind": "주의"
},
{
"totDttmDay": "2025-07-09",
"totDttmTime": "22:00~23:00",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 300,
"warnStndVal": 400,
"totVal": 290,
"alrmMsg": "Gas flow rate below caution level. Check for leaks or blockages.",
"alrmKind": "주의"
});
const dayjs = require('dayjs');
var newRes = res.map(item =>
item = {
...item,
totDttmDay: Utility.setFormatDate(item.totDttm, 'YYYY-MM-DD'),
totDttmTime: Utility.setFormatDate(item.totDttm, 'HH') + "~" + dayjs(item.totDttm).add(1, 'h').format('HH'),
}
]
);
this.setModalGridData({

View File

@ -234,13 +234,7 @@ export default {
}),
InputValue: {
get() {
return [{
"eqpmId": "EQ001",
"eqpmNm": "Etcher A12",
"gdIdxId": "GD001",
"gdIdxNm": "Etch Depth Guide",
}]
// return this.myBindingData;
return this.myBindingData;
}
},
chkDialog() {
@ -258,7 +252,7 @@ export default {
},
async popCheck(val) {
if (val) {
// await this.getData();
await this.getData();
this.dialog = true;
} else {
this.dialog = false;
@ -288,13 +282,13 @@ export default {
}),
init() {
// this.gridInit();
this.gridInit();
},
closePop() {
this.popCheck = false;
},
search() {
// this.getData();
this.getData();
},
async getData() {
var res = await this.postApiReturn({

View File

@ -2,12 +2,8 @@
<v-row class="search-box" align="center">
<v-col :cols="option.labelCols" class="py-0">
<label for="" class="search-box-label">
<v-icon
v-if="item.iconShow"
small
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
>$icoBulletPoint</v-icon
>
<v-icon v-if="item.iconShow" small
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']">$icoBulletPoint</v-icon>
{{ option.labelContent }}
</label>
</v-col>
@ -30,9 +26,9 @@
<div class="pa-6 pt-0">
<v-row align="center">
<v-col :cols="5">
<component :is="'SelectBox'" ref="SelectBox1" :labelCols="12" :textCols="12" :iconShow="true"
:propsValue="selectValue01" :itemList="selectValueList01" :label="'설비그룹'"
@update:propsValue="selectValue01 = $event" :readonly="item.openMode == undefined
<component :is="'SelectBox'" ref="SelectBox1" :labelCols="12" :textCols="12"
:iconShow="true" :propsValue="selectValue01" :itemList="selectValueList01"
:label="'설비그룹'" @update:propsValue="selectValue01 = $event" :readonly="item.openMode == undefined
? openMode
: item.openMode == 'ALL'
? false
@ -47,14 +43,14 @@
물리량명
</label>
</v-col>
<v-col :cols="9"> <v-text-field append-icon="" class="v-input__custom"
outlined :hide-details="true" v-model="searchWord"
@keyup.enter="search"><template v-slot:append>
<!-- Custom SVG icon -->
<v-icon>$icoSearch</v-icon>
<v-col :cols="9"> <v-text-field append-icon="" class="v-input__custom" outlined
:hide-details="true" v-model="searchWord" @keyup.enter="search"><template
v-slot:append>
<!-- Custom SVG icon -->
<v-icon>$icoSearch</v-icon>
</template></v-text-field></v-col>
</template></v-text-field></v-col>
<v-spacer></v-spacer>
<v-col cols="3" class="text-right">
<a-button icon="search" type="primary" @click="search()"
@ -76,9 +72,9 @@
</div>
</div>
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
<a-button :ripple="false" @click="setUpdate($event)" class="mr-2">확인</a-button>
<a-button :ripple="false" type="primary" @click="dialogOpenCloseEvent(dialog)"
class="mr-2">닫기</a-button>
<a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)" class="mr-2">닫기</a-button>
<a-button :ripple="false" type="primary" @click="setUpdate($event)">확인</a-button>
</v-card-actions>
</v-card>
</v-dialog>
@ -274,36 +270,30 @@ export default {
this.gridInit();
},
async setSelectValueList01() {
// let res = await this.postApiReturn({
// apiKey: 'selectEqpmGrpCodeList',
// resKey: 'eqpmGrpCodeLists',
// sendParam: { eqpmKindId: this.searchParam.eqpmKindId },
// // 부모 페이지에서 설비종류인 eqpmKindId 값을 꼭 가져와야한다.
// });
// if (res.length > 0) {
// this.selectValueList01 = await res.map(obj => {
// return {
// text: obj.eqpmGrpNm,
// value: obj.eqpmGrpId,
// };
// });
// // 부모 페이지에서 설비그룹을 선택한 값이 있다면(eqpmGrpId) 그 값으로 바인딩 아닐 경우 조회한 데이터의 첫번째 값으로 선택
// this.selectValue01 =
// this.searchParam.eqpmGrpId != undefined
// ? this.searchParam.eqpmGrpId
// : this.selectValueList01[0].value;
// // this.selectValue01 = this.selectValueList01[0].value;
// } else {
// this.selectValueList01 = [];
// this.selectValue01 = null;
// }
let res = await this.postApiReturn({
apiKey: 'selectEqpmGrpCodeList',
resKey: 'eqpmGrpCodeLists',
sendParam: { eqpmKindId: this.searchParam.eqpmKindId },
// 부모 페이지에서 설비종류인 eqpmKindId 값을 꼭 가져와야한다.
});
if (res.length > 0) {
this.selectValueList01 = await res.map(obj => {
return {
text: obj.eqpmGrpNm,
value: obj.eqpmGrpId,
};
});
// 부모 페이지에서 설비그룹을 선택한 값이 있다면(eqpmGrpId) 그 값으로 바인딩 아닐 경우 조회한 데이터의 첫번째 값으로 선택
this.selectValue01 =
this.searchParam.eqpmGrpId != undefined
? this.searchParam.eqpmGrpId
: this.selectValueList01[0].value;
// this.selectValue01 = this.selectValueList01[0].value;
} else {
this.selectValueList01 = [];
this.selectValue01 = null;
}
this.selectValueList01 = [
{ label: '냉동기고온', value: '냉동기고온' },
{ label: '냉동기저온', value: '냉동기저온' },
{ label: '공조기', value: '공조기' },
{ label: '보일러', value: '보일러' }
];
},
search() {
this.getGridData();
@ -341,34 +331,26 @@ export default {
},
async getGridData() {
this.loadGrid = false;
// let res = [];
// let res = await this.postApiReturn({
// apiKey: 'selectEqpmBaseInfoPop',
// resKey: 'epqmBaseInfoData',
// sendParam: {
// eqpmGrpId: this.selectValue01,
// searchWord: this.searchWord,
// // openMode : this.item.openMode == undefined ? this.openMode : this.item.openMode
// },
// });
// // grid와 popup eqpmId 값 중복되는 것 제거하는 로직 - 시작
// let newRes = [];
// if (this.bindingGridEqpmIdList.length > 0) {
// newRes = res.filter(item => {
// return !this.bindingGridEqpmIdList.includes(item.eqpmId);
// });
// res = newRes;
// }
let res = await this.postApiReturn({
apiKey: 'selectEqpmBaseInfoPop',
resKey: 'epqmBaseInfoData',
sendParam: {
eqpmGrpId: this.selectValue01,
searchWord: this.searchWord,
// openMode : this.item.openMode == undefined ? this.openMode : this.item.openMode
},
});
// grid와 popup eqpmId 값 중복되는 것 제거하는 로직 - 시작
let newRes = [];
if (this.bindingGridEqpmIdList.length > 0) {
newRes = res.filter(item => {
return !this.bindingGridEqpmIdList.includes(item.eqpmId);
});
res = newRes;
}
// grid와 popup eqpmId 값 중복되는 것 제거하는 로직 - 끝
const res = [
{
'eqpmId': 'PYSCL00001',
'eqpmNm': 'AMP_1A',
}
]
this.setModalGridData({
modalKey: this.myModalKey,
gridKey: this.gridName,
@ -441,9 +423,9 @@ export default {
// this.dialog = false;
// return;
// }
// if (this.myBindingData.length <= 0) {
// return alert('설비상세 리스트를 먼저 선택해주세요.');
// }
if (this.myBindingData.length <= 0) {
return alert('설비상세 리스트를 먼저 선택해주세요.');
}
this.dialog = !val;
},
},
@ -481,7 +463,7 @@ var eqpmBaseInfoPop = {
// .v-dialog {
// .v-card {
// &__title {
// @if $theme ==dark {
// background-color: #2d3355;

View File

@ -36,7 +36,7 @@
계산설명
</label>
</v-col>
<v-col :cols="10" class="mr-4 py-0" >
<v-col :cols="11" class="pr-8 py-0" >
<v-text-field append-icon="" class="v-input__custom" outlined
:hide-details="true" v-model="searchWord" @keyup.enter="search"><template v-slot:append>
<!-- Custom SVG icon -->
@ -45,7 +45,7 @@
</template></v-text-field>
</v-col>
<v-col cols="1" class="py-0">
<v-col cols="1" class="py-0" style="display: flex; justify-content: flex-end;">
<a-button icon="search" type="primary" @click="search()" class="search-button">조회</a-button>
<!-- <v-btn :ripple="false" @click="initSearch()">
초기화
@ -63,10 +63,8 @@
</div>
</div>
<v-card-actions class="pa-5 d-flex align-center justify-end">
<!-- <v-btn :ripple="false" @click="setUpdate($event)">확인</v-btn>
<v-btn :ripple="false" @click="dialogOpenCloseEvent(dialog)">닫기</v-btn> -->
<a-button :ripple="false" @click="setUpdate($event)" class="mr-2">확인</a-button>
<a-button :ripple="false" type="primary" @click="dialogOpenCloseEvent(dialog)">닫기</a-button>
<a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)" class="mr-2">닫기</a-button>
<a-button :ripple="false" type="primary" @click="setUpdate($event)" >확인</a-button>
</v-card-actions>
</v-card>
</v-dialog>
@ -306,38 +304,22 @@ export default {
},
async getGridData() {
this.loadGrid = false;
// let res = await this.postApiReturn({
// apiKey: 'selectEqpmCalcPop',
// resKey: 'eqpmCalcPopData',
// sendParam: {
// calcDescLike: this.searchWord,
// openMode: this.item.openMode != undefined ? this.item.openMode : this.openMode
// },
// });
// if (this.myBindingData['calcProc'] != '' || this.myBindingData['calcProc'] != null || this.myBindingData['calcProc'] != undefined) {
// let newRes = [];
// newRes = res.filter(item => {
// return item.calcProc != this.myBindingData['calcProc']
// });
// res = newRes;
// }
const res = [
{
'calcProc': 'AVG_CNT2',
'argCnt': '2',
'calcDesc': '두개 변수에 대한 평균'
let res = await this.postApiReturn({
apiKey: 'selectEqpmCalcPop',
resKey: 'eqpmCalcPopData',
sendParam: {
calcDescLike: this.searchWord,
openMode: this.item.openMode != undefined ? this.item.openMode : this.openMode
},
{ 'calcProc': 'PROC001', argCnt: 2, 'calcDesc': '덧셈 연산' },
{ 'calcProc': 'PROC002', argCnt: 1, 'calcDesc': '제곱 연산' },
{ 'calcProc': 'PROC003', argCnt: 2, 'calcDesc': '곱셈 연산' },
{ 'calcProc': 'PROC004', argCnt: 1, 'calcDesc': '루트 연산' },
{ 'calcProc': 'PROC005', argCnt: 3, 'calcDesc': '최대값 계산' },
{ 'calcProc': 'PROC006', argCnt: 3, 'calcDesc': '최소값 계산' },
]
});
if (this.myBindingData['calcProc'] != '' || this.myBindingData['calcProc'] != null || this.myBindingData['calcProc'] != undefined) {
let newRes = [];
newRes = res.filter(item => {
return item.calcProc != this.myBindingData['calcProc']
});
res = newRes;
}
this.setModalGridData({
modalKey: this.myModalKey,
gridKey: this.grid_01,

View File

@ -323,58 +323,58 @@ export default {
this.getRowGridData();
},
async getFab() {
// let res = await this.postApiReturn({
// apiKey: 'selectFabCodeList',
// resKey: 'fabCodeLists',
// sendParam: {},
// });
// if (res.length > 0) {
// this.selectValueList02 = await res.map(item => {
// return {
// text: item.eccNm,
// value: item.eccId,
// };
// });
// this.selectValueList02.unshift({
// text:"전체",
// value:null
// });
// // if(this.pageData.eccId != null && this.pageData.eccId != ''){
// // this.selectValue02 = this.pageData.eccId;
// // }else if(this.pageData.eccId == null || this.pageData.eccId == ''){
// this.selectValue02.push(this.selectValueList02[0].value);
// // }
// } else {
// this.selectValueList02 = [];
// this.selectValue02 = [];
// }
let res = await this.postApiReturn({
apiKey: 'selectFabCodeList',
resKey: 'fabCodeLists',
sendParam: {},
});
if (res.length > 0) {
this.selectValueList02 = await res.map(item => {
return {
text: item.eccNm,
value: item.eccId,
};
});
this.selectValueList02.unshift({
text: "전체",
value: null
});
// if(this.pageData.eccId != null && this.pageData.eccId != ''){
// this.selectValue02 = this.pageData.eccId;
// }else if(this.pageData.eccId == null || this.pageData.eccId == ''){
this.selectValue02.push(this.selectValueList02[0].value);
// }
} else {
this.selectValueList02 = [];
this.selectValue02 = [];
}
},
async getEqpmGrp() {
// let res = await this.postApiReturn({
// apiKey: 'selectEqpmGrpCodeList',
// resKey: 'eqpmGrpCodeLists',
// sendParam: { },
// });
// if (res.length > 0) {
// this.selectValueList01 = await res.map(item => {
// return {
// text: item.eqpmGrpNm,
// value: item.eqpmGrpId,
// };
// });
// this.selectValueList01.unshift({
// text:"전체",
// value:null
// });
// // if(this.pageData.eqpmGrpId != null && this.pageData.eqpmGrpId != ''){
// // this.selectValue02 = this.pageData.eqpmGrpId;
// // }else if(this.pageData.eqpmGrpId == null || this.pageData.eqpmGrpId == ''){
// this.selectValue01 = this.selectValueList01[0].value;
// // }
// } else {
// this.selectValueList01 = [];
// this.selectValue01 = null;
// }
let res = await this.postApiReturn({
apiKey: 'selectEqpmGrpCodeList',
resKey: 'eqpmGrpCodeLists',
sendParam: {},
});
if (res.length > 0) {
this.selectValueList01 = await res.map(item => {
return {
text: item.eqpmGrpNm,
value: item.eqpmGrpId,
};
});
this.selectValueList01.unshift({
text: "전체",
value: null
});
// if(this.pageData.eqpmGrpId != null && this.pageData.eqpmGrpId != ''){
// this.selectValue02 = this.pageData.eqpmGrpId;
// }else if(this.pageData.eqpmGrpId == null || this.pageData.eqpmGrpId == ''){
this.selectValue01 = this.selectValueList01[0].value;
// }
} else {
this.selectValueList01 = [];
this.selectValue01 = null;
}
},
gridInit() {
// console.log("modalGridParent : ",this.$refs)
@ -459,16 +459,16 @@ export default {
},
async getRowGridData() {
this.loadGrid = false;
// var res = await this.postApiReturn({
// apiKey: 'selectEqpmPop',
// resKey: 'eqpmPopData',
// sendParam: {
// fabId:this.selectValue02,
// eqpmGrpId:this.selectValue01,
// searchWord:this.searchWord,
// eqpmKindId:this.myBindingData.eqpmKindId,
// },
// });
var res = await this.postApiReturn({
apiKey: 'selectEqpmPop',
resKey: 'eqpmPopData',
sendParam: {
fabId: this.selectValue02,
eqpmGrpId: this.selectValue01,
searchWord: this.searchWord,
eqpmKindId: this.myBindingData.eqpmKindId,
},
});
// const dayjs = require('dayjs');
// var newRes = res.map(item=>
// item = {
@ -477,33 +477,33 @@ export default {
// totDttmTime : Utility.setFormatDate(item.totDttm, 'HH') + "~" + dayjs(item.totDttm).add(1,'h').format('HH')
// }
// );
const res =
[
{
"fabId": "FAB001",
"fabNm": "Gumi FAB",
"eqpmId": "EQ001",
"eqpmNm": "Etcher A12",
"eccId": "ECC001",
"eccNm": "Etch Control Center"
},
{
"fabId": "FAB002",
"fabNm": "Pyeongtaek FAB",
"eqpmId": "EQ002",
"eqpmNm": "Deposition B34",
"eccId": "ECC002",
"eccNm": "Deposition Control Center"
},
{
"fabId": "FAB003",
"fabNm": "Hwaseong FAB",
"eqpmId": "EQ003",
"eqpmNm": "CMP C56",
"eccId": "ECC003",
"eccNm": "CMP Control Center"
}
];
// const res =
// [
// {
// "fabId": "FAB001",
// "fabNm": "Gumi FAB",
// "eqpmId": "EQ001",
// "eqpmNm": "Etcher A12",
// "eccId": "ECC001",
// "eccNm": "Etch Control Center"
// },
// {
// "fabId": "FAB002",
// "fabNm": "Pyeongtaek FAB",
// "eqpmId": "EQ002",
// "eqpmNm": "Deposition B34",
// "eccId": "ECC002",
// "eccNm": "Deposition Control Center"
// },
// {
// "fabId": "FAB003",
// "fabNm": "Hwaseong FAB",
// "eqpmId": "EQ003",
// "eqpmNm": "CMP C56",
// "eccId": "ECC003",
// "eccNm": "CMP Control Center"
// }
// ];
this.setModalGridData({
modalKey: this.myModalKey,
gridKey: this.gridName,

View File

@ -7,12 +7,15 @@
{{ option.labelContent }}
</label>
</v-col>
<v-col :cols="option.textCols">
<v-text-field readonly v-model="selectValue" append-icon="mdi-magnify"
:class="['v-select__custom', customClass]"
@click="dialogOpenCloseEvent(dialog)" outlined :hide-details="true"
:required="item.required || false"></v-text-field>
<!-- :disabled="item.disabled || false" -->
<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)"
:required="item.required || false"><template v-slot:append>
<!-- Custom SVG icon -->
<v-icon>$icoSearch</v-icon>
</template></v-text-field>
</v-col>
<v-dialog v-model="dialog" scrollable width="1000px">
@ -21,10 +24,10 @@
<span class="custom-title-4">{{ option.modalTitle }}</span>
<v-icon @click="dialogOpenCloseEvent(dialog)">mdi-close</v-icon>
</v-card-title>
<v-row align="end" class="pa-5" no-gutters>
<v-row align="end" class="px-5 pb-3" no-gutters>
<v-col :cols="2.5" class="mr-2">
<v-row>
<v-col :cols="2">
<v-col :cols="12" class="py-0">
<label for="" class="search-box-label">
<!-- <v-icon small
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
@ -32,28 +35,30 @@
검색
</label>
</v-col>
<v-col :cols="12">
<v-text-field append-icon="mdi-magnify" class="v-input__custom" outlined :hide-details="true"
v-model="searchWord" @keyup.enter="search"></v-text-field>
<v-col :cols="11" class="py-0 pr-3">
<v-text-field append-icon="mdi-magnify" class="v-input__custom" outlined
:hide-details="true" v-model="searchWord" @keyup.enter="search"></v-text-field>
</v-col>
<a-button icon="search" :ripple="false" type="primary" @click="search()"
class="search-button">조회</a-button>
</v-row>
</v-col>
<a-button type="primary" :ripple="false" @click="search()">
조회
</a-button>
</v-row>
<!-- <div :style="'height: calc(65vh)'"> -->
<div :style="'height: 600px'">
<div :style="'height: 600px'" class="px-5">
<!-- <div :style="{ height: 'calc(100% - 213px)' }"> -->
<div ref="modalGridParent" class="h100 py-3">
<!-- :is="loadGrid && dialog ? 'Grid' : null" -->
<component :is="loadGrid && dialog ? 'Grid' : null" :gridName="grid_01"
:dataPath="searchParam.modalData2.evtObjPop" :parentPrgmId="parentPrgmId" @getRowsData="getRowData"
@dblClick="setUpdate($event)" />
:dataPath="searchParam.modalData2.evtObjPop" :parentPrgmId="parentPrgmId"
@getRowsData="getRowData" @dblClick="setUpdate($event)" />
</div>
</div>
<v-card-actions class="pa-5 d-flex align-center justify-end">
<a-button type="default" class="mr-2" :ripple="false" @click="dialogOpenCloseEvent(dialog)">닫기</a-button>
<a-button type="default" class="mr-2" :ripple="false"
@click="dialogOpenCloseEvent(dialog)">닫기</a-button>
<a-button type="primary" class="mr-2" :ripple="false" @click="setUpdate('init')">초기화</a-button>
<a-button type="primary" :ripple="false" @click="setUpdate($event)">확인</a-button>
</v-card-actions>
@ -124,7 +129,7 @@ export default {
return {
dialog: false,
loadGrid: true,
loadGrid: false,
grid_01: 'grid_01',
myModalKey: 'evtObjPop',
modalDataKey: 'modalData2',
@ -165,35 +170,6 @@ export default {
computed: {
...mapState({
searchParam(state) {
const myOptions = {
columnOptions: {
resizable: true,
},
treeColumnOptions: {
name: 'readPlcNm', // Showing tree table
useIcon: false, // Not using icon
indentWidth: 10,
},
};
const dataPathMock = {
'grid_01': {
column: [
{ header: '검침개소명', name: 'readPlcNm', align: 'left', minWidth: 400, },
{ header: '검침개소', name: 'plcKind', minWidth: 100, align: 'center', },
// {
// header: '사용 여부', name: 'useFg', minWidth: 100, align: 'center',
// },
],
data: sampleData,
option: myOptions
}
};
return {
modalData2: {
evtObjPop: dataPathMock
}
}
// end test
return state.pageData[this.parentPrgmId];
},
myBindingData(state) {
@ -277,6 +253,9 @@ export default {
columnOptions: {
resizable: true,
},
header: {
height: 38,
},
};
this.setModalGridOption({
modalKey: this.myModalKey,
@ -300,7 +279,7 @@ export default {
});
},
async getGridData() {
// this.loadGrid = false;
this.loadGrid = false;
const res = await this.postApiReturn({
apiKey: 'selectTagBaseInfo',
@ -376,7 +355,6 @@ export default {
// this.dialog = false;
// return;
// }
console.log("this.dialog: ", this.dialog);
this.dialog = !val;
},
},
@ -389,50 +367,6 @@ var evtObjPop = {
option: {},
},
};
const sampleData = [
{
readPlcNm: '서울 본사',
plcKind: '본사',
useFg: '사용',
_children: [
{
readPlcNm: '서울 본사 - 1층',
plcKind: '층',
useFg: '사용',
},
{
readPlcNm: '서울 본사 - 2층',
plcKind: '층',
useFg: '미사용',
},
],
},
{
readPlcNm: '부산 지사',
plcKind: '지사',
useFg: '사용',
_children: [
{
readPlcNm: '부산 지사 - A동',
plcKind: '건물',
useFg: '사용',
_children: [
{
readPlcNm: '부산 지사 - A동 1층',
plcKind: '층',
useFg: '사용',
},
],
},
],
},
{
readPlcNm: '대전 창고',
plcKind: '창고',
useFg: '미사용',
},
];
</script>
<style lang="scss" scoped>

View File

@ -1,5 +1,5 @@
<template>
<v-row class="search-box" align="center" >
<v-row class="search-box" align="center">
<!-- <v-col v-if="label" cols="2"> -->
<v-col v-if="item.label" :cols="item.labelCols" class="py-0">
<label for="" class="search-box-label">
@ -37,12 +37,11 @@
<v-row align="center">
<v-col v-if="label" cols="12" class="py-0">
<label for="" class="search-box-label">
<v-icon small
:class="['mr-1', 'icon-blue']">$icoBulletPoint</v-icon>
<v-icon small :class="['mr-1', 'icon-blue']">$icoBulletPoint</v-icon>
{{ item.label }}
</label>
</v-col>
<v-col :cols="label ? 6 : ''" class="py-0">
<v-col :cols="label ? 8 : ''" class="py-0">
<!-- :value="textfield" -->
<v-text-field append-icon="" class="v-input__custom" outlined :hide-details="true"
v-model="searchWord" @keyup.enter="typeEnterKey"><template v-slot:append>
@ -52,13 +51,10 @@
</template></v-text-field>
</v-col>
<v-spacer></v-spacer>
<v-col cols="3" class="text-right">
<v-btn :ripple="false" icon tile @click="btnTreeExpand()">
<!-- {{ treeExpand }} -->
<v-icon size="30"
v-text="treeExpandAll ? 'mdi-chevron-up' : 'mdi-chevron-down'"></v-icon>
</v-btn>
<!-- <v-spacer></v-spacer> -->
<v-col cols="2" class="text-right">
<a-button icon="search" type="primary" @click="search()" class="search-button">조회</a-button>
<!-- <v-btn color="primary" dark>펼치기</v-btn> -->
<!-- <v-btn color="primary" dark>접기</v-btn> -->
<!-- <v-btn :ripple="false">초기화</v-btn> -->
@ -66,6 +62,10 @@
<v-btn v-if="!searchParam.isMulti" :ripple="false" @click="search()">검색</v-btn> -->
<!-- as-is 봐도 초기화가 하는 기능을 모르겠음.. -->
</v-col>
<v-col cols="2" class="text-right"><a-button class="expand-btn" :ripple="false" @click="btnTreeExpand()">
<v-icon small>$icoExpandAlt</v-icon>
Expand All
</a-button></v-col>
</v-row>
<!-- <v-btn color="primary" dark @click="btnTreeExpand()">{{
@ -78,7 +78,7 @@
</div>
<v-card-text>
<div ref="treeGridParent" style="height: 500px">
<div ref="treeGridParent" style="height: 450px">
<component :ref="'treeGrid' + parentPrgmId" :is="loadGrid && dialog ? 'Grid' : null"
:gridName="gridNameTree" :dataPath="searchParam.modalData.selectReadObjListTree"
:parentPrgmId="parentPrgmId" :bindingData="bindingData" @getRowsData="getRowData"
@ -89,10 +89,10 @@
:tree-data="ftnPlcListTreeData"
/> -->
</v-card-text>
<v-divider></v-divider>
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
<a-button :ripple="false" @click="setUpdate()" class="mr-2">확인</a-button>
<a-button :ripple="false" type="primary" @click="dialog = false" class="mr-2">닫기</a-button>
<a-button :ripple="false" @click="dialog = false" class="mr-2">닫기</a-button>
<a-button :ripple="false" type="primary" @click="setUpdate($event)">확인</a-button>
</v-card-actions>
</v-card>
</v-dialog>
@ -155,7 +155,7 @@ export default {
myModalKey: 'selectReadObjListTree',
gridNameTree: 'treeGrid',
loadGrid: true,
loadGrid: false,
dialog: false,
treeData: [], // 리턴받은 원본 트리 데이터
@ -278,7 +278,7 @@ export default {
{
header: '검침개소명',
name: 'readPlcNm',
width: 370,
width: 300,
align: 'left',
},
{ header: '검침개소', name: 'name', align: 'center' },
@ -289,73 +289,31 @@ export default {
async getTreeData() {
this.loadGrid = false;
// const res = await this.postApiReturn({
// apiKey: 'selectReadPlcBaseInfo',
// resKey: 'readPlcBaseInfoData',
// sendParam: {
// blocId:
// this.searchParam.blocMstrList.length > 0
// ? this.searchParam.blocMstrList[this.searchParam.blocId].blocId
// : this.searchParam.blocId, //"BL0001",
// // readObjId: this.searchParam.readObj, // "MTT00001" // 전력 코드 고정
// readObjId: this.searchParam.searchReadObj, // "MTT00001" // 전력 코드 고정
const res = await this.postApiReturn({
apiKey: 'selectReadPlcBaseInfo',
resKey: 'readPlcBaseInfoData',
sendParam: {
blocId:
this.searchParam.blocMstrList.length > 0
? this.searchParam.blocMstrList[this.searchParam.blocId].blocId
: this.searchParam.blocId, //"BL0001",
// readObjId: this.searchParam.readObj, // "MTT00001" // 전력 코드 고정
readObjId: this.searchParam.searchReadObj, // "MTT00001" // 전력 코드 고정
// useFg: '1',
// readPlcNmLike: this.searchWord,
// },
// });
const treeData = [
{
readPlcNm: '서울 본사',
name: '본사',
_children: [
{
readPlcNm: '서울 본사 - 1층',
name: '1층',
},
{
readPlcNm: '서울 본사 - 2층',
name: '2층',
},
],
useFg: '1',
readPlcNmLike: this.searchWord,
},
{
readPlcNm: '부산 지사',
name: '지사',
_children: [
{
readPlcNm: '부산 지사 - A동',
name: 'A동',
_children: [
{
readPlcNm: '부산 지사 - A동 1층',
name: '1층',
},
{
readPlcNm: '부산 지사 - A동 2층',
name: '2층',
},
],
},
{
readPlcNm: '부산 지사 - B동',
name: 'B동',
},
],
},
{
readPlcNm: '대전 창고',
name: '창고',
},
];
});
// // console.log("treeData", res)
// console.log("treeData", res)
let myOptionsTree = {
treeColumnOptions: {
name: 'readPlcNm',
},
header: {
height: 37,
},
rowHeight: 'auto',
};
if (this.searchParam.isMulti) {
myOptionsTree['rowHeaders'] = [{ type: 'checkbox' }];
@ -373,26 +331,26 @@ export default {
// this.treeData = res;
// const ROOT = res[0].plcCd;
// const setTreeData = await this.setTree({
// gridKey: this.gridNameTree,
// treeKey: 'READ_PLC_ID',
// value: res.map(item => ({
// ...item,
// rowStat: null,
// readPlcId: item.readPlcId,
// readPlcIdNm: item.readPlcId,
// upReadPlcId:
// item.upReadPlcId == null || item.upReadPlcId == ''
// ? ''
// : item.upReadPlcId,
// upReadPlcNm:
// item.upReadPlcNm == null || item.upReadPlcNm == ''
// ? ''
// : item.upReadPlcNm,
// blocId: item.blocId,
// useFg: item.useFg === '1' ? true : false,
// })),
// });
const setTreeData = await this.setTree({
gridKey: this.gridNameTree,
treeKey: 'READ_PLC_ID',
value: res.map(item => ({
...item,
rowStat: null,
readPlcId: item.readPlcId,
readPlcIdNm: item.readPlcId,
upReadPlcId:
item.upReadPlcId == null || item.upReadPlcId == ''
? ''
: item.upReadPlcId,
upReadPlcNm:
item.upReadPlcNm == null || item.upReadPlcNm == ''
? ''
: item.upReadPlcNm,
blocId: item.blocId,
useFg: item.useFg === '1' ? true : false,
})),
});
// this.treeData = setTreeData;
@ -400,7 +358,7 @@ export default {
modalKey: this.myModalKey,
gridKey: this.gridNameTree,
modalDataKey: this.modalDataKey,
value: treeData,
value: setTreeData.ROOT || [],
});
this.loadGrid = true;
@ -540,22 +498,4 @@ const selectReadObjListTree = {
}
}
@each $theme in dark, light {
.v-application.#{$theme}-mode {
.v-dialog {
.v-card {
&__title {
@if $theme ==dark {
background-color: #2d3355;
.v-btn {
background-color: #2d3355;
}
}
}
}
}
}
}
</style>

View File

@ -12,12 +12,10 @@
</label>
</v-col>
<v-col :cols="label ? textCols : ''">
<v-select v-model="selectValue" :items="searchParam[parentPrgmId].blocMstrList" label="사업장을 선택하세요"
item-text="blocNm" item-value="idx" append-icon="" class="v-select__custom" outlined
<v-select v-model="selectValue" :items="searchParam[parentPrgmId].blocMstrList"
item-text="blocNm" item-value="idx" append-icon="" outlined
:hide-details="true" :class="['v-select__custom', customClass]">
<template v-slot:append>
    <v-icon>$icoChevronDown</v-icon>
  </template>
<template v-slot:append><v-icon>$icoChevronDown</v-icon></template>
</v-select>
</v-col>
</v-row>

View File

@ -20,10 +20,10 @@
outlined
:multiple="multiple"
:hide-details="true"
append-icon=""
:class="['v-select__custom', customClass]"
:disabled="disabled"
:readonly="readonly"
append-icon=""
><template v-slot:append>
<v-icon>$icoChevronDown</v-icon>
</template></v-select>

View File

@ -0,0 +1,6 @@
<template>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" class="v-icon" xmlns="http://www.w3.org/2000/svg">
<path
d="M14.1248 1.71225L10.7462 2.13189C10.6283 2.14617 10.5801 2.28903 10.6623 2.37296L11.6391 3.34975L8.89799 6.09082C8.8714 6.11767 8.85649 6.15392 8.85649 6.19171C8.85649 6.2295 8.8714 6.26575 8.89799 6.2926L9.70335 7.09796C9.7587 7.15332 9.84977 7.15332 9.90513 7.09796L12.648 4.3551L13.6248 5.33189C13.6436 5.35072 13.6674 5.36387 13.6934 5.36981C13.7193 5.37576 13.7465 5.37427 13.7716 5.36551C13.7968 5.35675 13.819 5.34107 13.8356 5.32028C13.8523 5.29949 13.8628 5.27443 13.8658 5.24796L14.2837 1.87117C14.2867 1.84961 14.2846 1.82765 14.2776 1.80702C14.2707 1.78639 14.2591 1.76765 14.2437 1.75226C14.2283 1.73687 14.2096 1.72524 14.1889 1.7183C14.1683 1.71136 14.1463 1.70929 14.1248 1.71225ZM6.2962 8.89439C6.26935 8.8678 6.23309 8.85289 6.19531 8.85289C6.15752 8.85289 6.12127 8.8678 6.09442 8.89439L3.35334 11.6372L2.37656 10.6605C2.35771 10.6416 2.33394 10.6285 2.30797 10.6225C2.282 10.6166 2.25487 10.6181 2.22971 10.6268C2.20455 10.6356 2.18236 10.6513 2.16569 10.6721C2.14903 10.6929 2.13856 10.7179 2.13549 10.7444L1.71584 14.1212C1.70513 14.214 1.78192 14.2908 1.87477 14.2801L5.25335 13.8605C5.3712 13.8462 5.41942 13.7033 5.33727 13.6194L4.36049 12.6426L7.10334 9.89974C7.1587 9.84439 7.1587 9.75332 7.10334 9.69796L6.2962 8.89439Z" />
</svg>
</template>

View File

@ -7,7 +7,7 @@
</div>
<div ref="gridParent">
<Grid :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="parentPrgmId"
@getRowsData="getRowData" :innerTabGridInfo="innerTabGridInfo" :dataPath="dataPathMock" />
@getRowsData="getRowData" :innerTabGridInfo="innerTabGridInfo" />
</div>
<div ref="formParent" class="mt-4">
<component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName" :detailList="detailDataSetTagList"

View File

@ -27,7 +27,7 @@
<div ref="gridParent" style="height: calc(35vh);">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="parentPrgmId" @getRowsData="getRowData" :innerTabGridInfo="innerTabGridInfo"
:dataPath="sampleDataPath" />
/>
</div>
</div>
</div>
@ -67,58 +67,57 @@ export default {
},
data() {
return {
loadGrid: true,
loadGrid: false,
gridName: 'effcInfoGrid',
sampleDataPath: {
"effcInfoGrid": {
data:
[
{
"eqpmKindId": "펌프",
"eqpmGrpId": "냉각수 시스템",
"totMethNm": "평균값"
},
{
"eqpmKindId": "모터",
"eqpmGrpId": "공기압 시스템",
"totMethNm": "최대값"
},
{
"eqpmKindId": "밸브",
"eqpmGrpId": "스팀 공급",
"totMethNm": "합계"
},
{
"eqpmKindId": "센서",
"eqpmGrpId": "온도 제어",
"totMethNm": "최소값"
},
{
"eqpmKindId": "컴프레서",
"eqpmGrpId": "에어 시스템",
"totMethNm": "중앙값"
}
]
// "effcInfoGrid": {
// data:
// [
// {
// "eqpmKindId": "펌프",
// "eqpmGrpId": "냉각수 시스템",
// "totMethNm": "평균값"
// },
// {
// "eqpmKindId": "모터",
// "eqpmGrpId": "공기압 시스템",
// "totMethNm": "최대값"
// },
// {
// "eqpmKindId": "밸브",
// "eqpmGrpId": "스팀 공급",
// "totMethNm": "합계"
// },
// {
// "eqpmKindId": "센서",
// "eqpmGrpId": "온도 제어",
// "totMethNm": "최소값"
// },
// {
// "eqpmKindId": "컴프레서",
// "eqpmGrpId": "에어 시스템",
// "totMethNm": "중앙값"
// }
// ]
,
column: [
// ,
// column: [
{
header: '대상설비종류',
name: 'eqpmKindId',
// {
// header: '대상설비종류',
// name: 'eqpmKindId',
},
{
header: '대상설비그룹',
name: 'eqpmGrpId',
},
// },
// {
// header: '대상설비그룹',
// name: 'eqpmGrpId',
// },
{ header: '집계방법', name: 'totMethNm', align: 'center' },
// { header: '집계방법', name: 'totMethNm', align: 'center' },
]
// ]
}
},
// }
// },
itemList: [],
tagTpList: [],
// detailList: myDetail,

View File

@ -1,26 +1,12 @@
<template>
<div>
<div
class="d-flex justify-space-between"
>
<div class="d-flex justify-space-between">
<v-card-title class="px-0 pt-0 custom-title-4">검침개소 추가 정보</v-card-title>
<Buttons
:parentPrgmId="parentPrgmId"
:bindingData="gridName"
:btnActionsFnc="btnActions"
/>
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
</div>
<div ref="gridParent">
<Grid
:ref="gridName"
:gridName="gridName"
:parentPrgmId="parentPrgmId"
:editorGrid="true"
:innerTabGridInfo="innerTabGridInfo"
@getRowsData="getRowData"
:dataPath="addInfoTabData"
/>
<div ref="gridParent" style="height: calc(100vh - 520px);">
<Grid :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="parentPrgmId"
:editorGrid="true" :innerTabGridInfo="innerTabGridInfo" @getRowsData="getRowData" />
</div>
</div>
</template>
@ -53,65 +39,65 @@ export default {
},
data() {
return {
loadGrid: true,
loadGrid: false,
gridName: 'rowDetailGrid',
rowKey: null,
edtingFinishFlag: 'Y',
addInfoTabData: {
"rowDetailGrid": {
data: [
// addInfoTabData: {
// "rowDetailGrid": {
// data: [
{
readPlcNm: '서울 본사',
plcKind: '전기',
useFg: '1',
},
// {
// readPlcNm: '서울 본사',
// plcKind: '전기',
// useFg: '1',
// },
],
column: [
// { header: '회사 ID', name: 'comId', hidden: true },
{
header: '검침개소명',
name: 'readPlcNm',
align: 'left',
minWidth: 400,
},
{
header: '개소 종류',
name: 'plcKind',
minWidth: 100,
align: 'center',
// formatter({ value }) {
// let retVal = '';
// const newValue = _this.pageData.plcKindList.filter(
// item => item.commCd == value,
// );
// if (newValue.length > 0) {
// retVal = newValue[0].commCdNm;
// }
// return retVal;
// },
},
{
header: '사용 여부',
name: 'useFg',
minWidth: 100,
align: 'center',
// formatter({ value }) {
// value = value === true ? '1' : '0';
// const newValue = _this.pageData.useFgList.filter(
// item => item.commCd == value,
// );
// return newValue[0].commCdNm;
// },
},
]
// ],
// column: [
// // { header: '회사 ID', name: 'comId', hidden: true },
// {
// header: '검침개소명',
// name: 'readPlcNm',
// align: 'left',
// minWidth: 400,
// },
// {
// header: '개소 종류',
// name: 'plcKind',
// minWidth: 100,
// align: 'center',
// // formatter({ value }) {
// // let retVal = '';
// // const newValue = _this.pageData.plcKindList.filter(
// // item => item.commCd == value,
// // );
// // if (newValue.length > 0) {
// // retVal = newValue[0].commCdNm;
// // }
// // return retVal;
// // },
// },
// {
// header: '사용 여부',
// name: 'useFg',
// minWidth: 100,
// align: 'center',
// // formatter({ value }) {
// // value = value === true ? '1' : '0';
// // const newValue = _this.pageData.useFgList.filter(
// // item => item.commCd == value,
// // );
// // return newValue[0].commCdNm;
// // },
// },
// ]
}
}
// }
// }
};
},
computed: {
@ -166,9 +152,9 @@ export default {
bodyHeight: gridHeight,
minBodyHeight: gridHeight,
header: {
height: 28,
height: 37,
},
rowHeight: 29,
rowHeight: 37,
minRowHeight: 29,
selectionUnit: 'row',
editingEvent: 'click',
@ -178,128 +164,129 @@ export default {
value: myOptions,
});
// const _this = this;
// let useFgSelectList = [];
// this.pageData.useFgList.forEach(item => {
// const it = { text: item.commCdNm, value: item.commCd };
// useFgSelectList.push(it);
// });
// let addInfoList = [];
// this.pageData.addInfoList.forEach(item => {
// const it = { text: item.addInfoNm, value: item.addInfoId };
// addInfoList.push(it);
// });
// let addInfoDataKindList = [];
// this.pageData.addInfoDataKindList.forEach(item => {
// const it = { text: item.commCdNm, value: item.commCd };
// addInfoDataKindList.push(it);
// });
const _this = this;
let useFgSelectList = [];
this.pageData.useFgList.forEach(item => {
const it = { text: item.commCdNm, value: item.commCd };
useFgSelectList.push(it);
});
let addInfoList = [];
this.pageData.addInfoList.forEach(item => {
const it = { text: item.addInfoNm, value: item.addInfoId };
addInfoList.push(it);
});
let addInfoDataKindList = [];
this.pageData.addInfoDataKindList.forEach(item => {
const it = { text: item.commCdNm, value: item.commCd };
addInfoDataKindList.push(it);
});
// const myColumns = [
// { header: '회사 ID', name: 'comId', hidden: true },
// { header: '검침개소 번호', name: 'readPlcId', hidden: true },
// {
// header: '추가 정보',
// name: 'addInfoId',
// align: 'left',
// formatter({ value }) {
// let retVal = '';
// const newValue = addInfoList.filter(item => item.value == value);
// if (newValue.length > 0) {
// retVal = newValue[0].text;
// }
// return retVal;
// },
// },
// {
// header: 'Data 구분',
// name: 'addInfoDataKind',
// align: 'center',
// formatter({ value }) {
// let retVal = '';
// const newValue = addInfoDataKindList.filter(
// item => item.value == value,
// );
// if (newValue.length > 0) {
// retVal = newValue[0].text;
// }
// return retVal;
// },
// // editor: {
// // type: "select",
// // options: {
// // listItems: addInfoDataKindList
// // }
// // }
// },
// {
// header: '숫자 값',
// name: 'addInfoNumVal',
// align: 'right',
// editor: 'text',
// hidden: true,
// },
// {
// header: '문자 값',
// name: 'addInfoTxtVal',
// align: 'left',
// editor: 'text',
// hidden: true,
// },
// {
// header: '추가 정보 값',
// name: 'addInfoVal',
// align: 'center',
// renderer: {
// type: NewCustomRenderer,
// },
// editor: {
// type: NewCustomEditor,
// },
// formatter(data) {
// return data.row.addInfoDataKind;
// },
// },
//{ header: "추가 정보 값", name: "addInfoVal", align: "center" , editor: "text",
// formatter({ value, row , column}) {
// console.log("addInfoVal row : ", row);
// console.log("addInfoVal state : ", column);
// if(row.addInfoDataKind === "NUM"){
// column.align = "right";
// }else{
// column.align = "left";
// }
// return value;
// }
//},
const myColumns = [
{ header: '회사 ID', name: 'comId', hidden: true },
{ header: '검침개소 번호', name: 'readPlcId', hidden: true },
{
header: '추가 정보',
name: 'addInfoId',
align: 'left',
formatter({ value }) {
let retVal = '';
const newValue = addInfoList.filter(item => item.value == value);
if (newValue.length > 0) {
retVal = newValue[0].text;
}
return retVal;
},
},
{
header: 'Data 구분',
name: 'addInfoDataKind',
align: 'center',
formatter({ value }) {
let retVal = '';
const newValue = addInfoDataKindList.filter(
item => item.value == value,
);
if (newValue.length > 0) {
retVal = newValue[0].text;
}
return retVal;
},
// editor: {
// type: "select",
// options: {
// listItems: addInfoDataKindList
// }
// }
},
{
header: '숫자 값',
name: 'addInfoNumVal',
align: 'right',
editor: 'text',
hidden: true,
},
{
header: '문자 값',
name: 'addInfoTxtVal',
align: 'left',
editor: 'text',
hidden: true,
},
{
header: '추가 정보 값',
name: 'addInfoVal',
align: 'center',
renderer: {
type: NewCustomRenderer,
},
editor: {
type: NewCustomEditor,
},
formatter(data) {
return data.row.addInfoDataKind;
},
},
// {
// header: "추가 정보 값", name: "addInfoVal", align: "center", editor: "text",
// formatter({ value, row, column }) {
// console.log("addInfoVal row : ", row);
// console.log("addInfoVal state : ", column);
// if (row.addInfoDataKind === "NUM") {
// column.align = "right";
// } else {
// column.align = "left";
// }
// return value;
// }
// },
/*{
header: "사용여부",
name: "useFg",
align: "center",
formatter({ value }) {
return value == "1" ? "사용" : "사용안함";
},
editor: {
type: "select",
options: {
// listItems: useFgSelectList
listItems: [
{text:"사용", value:"1"},
{text:"사용안함", value:"0"},
]
}
}
},*/
// { header: '등록 사용자', name: 'regUserNo', hidden: true },
// { header: '등록 일자', name: 'regDttm', hidden: true },
// { header: '수정 사용자', name: 'procUserNo', hidden: true },
// { header: '수정 일자', name: 'procDttm', hidden: true },
// ];
header: "사용여부",
name: "useFg",
align: "center",
formatter({ value }) {
return value == "1" ? "사용" : "사용안함";
},
editor: {
type: "select",
options: {
// listItems: useFgSelectList
listItems: [
{text:"사용", value:"1"},
{text:"사용안함", value:"0"},
]
}
}
},*/
{ header: '등록 사용자', name: 'regUserNo', hidden: true },
{ header: '등록 일자', name: 'regDttm', hidden: true },
{ header: '수정 사용자', name: 'procUserNo', hidden: true },
{ header: '수정 일자', name: 'procDttm', hidden: true },
];
// this.setGridColumn({
// gridKey: this.gridName,
// value: myColumns,
// });
this.setGridColumn({
gridKey: this.gridName,
value: myColumns,
});
this.loadGrid = true;
},
@ -379,7 +366,7 @@ export default {
gridEditingFinish2(data, bindingData) {
this.$refs[bindingData].editingFinish(data);
},
search() {},
search() { },
},
};
</script>

View File

@ -8,9 +8,9 @@
<div ref="gridParent" style="height: calc((100vh - 520px) /2);">
<Grid :ref="gridName" :gridName="gridName" :parentPrgmId="parentPrgmId" @getRowsData="getRowData"
:innerTabGridInfo="innerTabGridInfo" :dataPath="imgInfoTabData" />
:innerTabGridInfo="innerTabGridInfo" />
</div>
<div ref="formParent">
<div ref="formParent" style="height: calc((100vh - 400px) /2);">
<component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName"
:detailList="detailReadPlcImgList" @gridEditingFinish="gridEditingFinish" />
</div>
@ -44,26 +44,9 @@ export default {
},
data() {
return {
loadGrid: true,
loadGrid: false,
gridName: 'rowReadPlcImgGrid',
detailReadPlcImgList: myReadPlcImgDetail,
imgInfoTabData: {
"rowReadPlcImgGrid": {
data:
[
{ "objReadPlcId": "1001", "objReadPlcNm": "서울역", "distRt": 12 },
{ "objReadPlcId": "1002", "objReadPlcNm": "강남역", "distRt": 8 },
{ "objReadPlcId": "1003", "objReadPlcNm": "잠실역", "distRt": 15 },
]
,
column: [
{ header: '대상 검침개소 번호', name: 'objReadPlcId', align: 'center' },
{ header: '대상 검침개소명', name: 'objReadPlcNm', align: 'left' },
{ header: '분배율(1~100)', name: 'distRt', align: 'right' },
]
}
}
};
},
computed: {
@ -120,10 +103,11 @@ export default {
header: {
height: 28,
},
rowHeight: 29,
minRowHeight: 29,
// rowHeight: 29,
// minRowHeight: 29,
selectionUnit: 'row',
editingEvent: 'click',
rowHeight: 'auto',
};
this.setGridOption({
gridKey: this.gridName,

View File

@ -7,9 +7,9 @@
</div>
<div ref="gridParent" style="height: calc((100vh - 520px) /2);">
<Grid :ref="gridName" :gridName="gridName" :parentPrgmId="parentPrgmId" @getRowsData="getRowData"
:innerTabGridInfo="innerTabGridInfo" :dataPath="tagRelTabData" />
:innerTabGridInfo="innerTabGridInfo" />
</div>
<div ref="formParent" >
<div class="mt-3" ref="formParent" style="height: calc((100vh - 400px) /2);">
<component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName"
:detailList="detailReadPlcTagList" @gridEditingFinish="gridEditingFinish" />
</div>
@ -46,78 +46,7 @@ export default {
loadGrid: false,
gridName: 'rowReadPlcTagRelGrid',
detailReadPlcTagList: myReadPlcTagDetail,
tagRelTabData: {
"rowReadPlcTagRelGrid": {
data:
[
{
"tagNm": "TAG_001",
"ercId": "전기",
"distRt": 10,
"reprTagFg": "1",
"useFg": "Y",
"rmrk": "기본 설정",
"tagId": "TAG_001"
},
{
"tagNm": "TAG_002",
"ercId": "가스",
"distRt": 15,
"reprTagFg": "0",
"useFg": "Y",
"rmrk": "",
"tagId": "TAG_002"
},
{
"tagNm": "TAG_003",
"ercId": "수도",
"distRt": 8,
"reprTagFg": "0",
"useFg": "N",
"rmrk": "테스트용",
"tagId": "TAG_003"
},
]
,
column: [
{ header: 'TAG 명', name: 'tagNm', align: 'left' },
{
header: '에너지원',
name: 'ercId',
align: 'center',
width: 100,
},
{
header: '분배율(1~100)',
name: 'distRt',
align: 'right',
width: 100,
},
{
header: '대표 TAG 여부',
name: 'reprTagFg',
align: 'center',
width: 100,
formatter({ value }) {
return value == '1' ? '예' : '아니오';
},
},
{
header: '사용여부',
name: 'useFg',
align: 'center',
width: 100,
},
{ header: '비고', name: 'rmrk', align: 'left', width: 100 },
{ header: 'TAG ID', name: 'tagId', align: 'center', hidden: true },
]
}
}
};
},
computed: {

View File

@ -22,7 +22,6 @@
:editorGrid="true"
:innerTabGridInfo="innerTabGridInfo"
@getRowsData="getRowData"
:dataPath="dataPathMock"
/>
</div>
</v-card-actions>
@ -51,22 +50,10 @@ export default {
},
data() {
return {
loadGrid: true,
loadGrid: false,
gridName: 'rowDetailGrid',
rowKey: null,
edtingFinishFlag: 'Y',
dataPathMock: {
"rowDetailGrid": {
column: [
{header: '추가 정보',name: 'addInfoId'},
{header: 'Data 구분',name: 'addInfoDataKind',align: 'center'},
{header: '추가 정보 값',name: 'addInfoVal',align: 'center', renderer: {type: NewCustomRenderer},editor: {type: NewCustomEditor},formatter(data) {return data.row.addInfoDataKind;},}
],
data: dataPathDataExample,
option: {
}
}
},
};
},
computed: {
@ -444,37 +431,4 @@ export default {
search() {},
},
};
const dataPathDataExample =
[
{
addInfoId:"경보 여부",
addInfoDataKind:"FG",
addInfoVal:"1"
},
{
addInfoId:"예상 피크전력 여부",
addInfoDataKind:"FG",
addInfoVal:"0"
},
{
addInfoId:"피크전력 여부",
addInfoDataKind:"FG",
addInfoVal:"1"
},
{
addInfoId:"TAG 채널",
addInfoDataKind:"숫자",
addInfoVal:"채널"
},
{
addInfoId:"PLC IP",
addInfoDataKind:"문자",
addInfoVal:"채널"
},
{
addInfoId:"PLC 포트",
addInfoDataKind:"숫자",
addInfoVal:"채널"
},
]
</script>

View File

@ -4,7 +4,7 @@
<fullscreen :fullscreen.sync="fullscreen">
<div class="header">
<v-row class="mx-0">
<div class="head-logo pl-4">
<div class="head-logo pl-4 d-flex gap-3">
<router-link class="home" :to="myHome.root">
<div class="lnb-logo">
<img v-if="isDarkMode" src="@/assets/images/logo_dm.png" />
@ -13,9 +13,11 @@
</div>
<!-- <div class="lnb-logo">FEMS</div>-->
</router-link>
<div class="align-center d-flex">
<ThemeSwitch style="margin-right: 20px" />
</div>
</div>
<v-col col="1" class="d-flex justify-end py-4 px-6 flex-row" style="gap: 8px;">
<ThemeSwitch style="margin-right: 20px" />
<v-menu offset-y>
<template v-slot:activator="{ on, attrs }">
<a-button :ripple="false" tile class="btn-header" v-bind="attrs" v-on="on">
@ -26,9 +28,7 @@
<span class="body-2">닫기</span>
<v-icon size="20">mdi-chevron-down</v-icon></a-button> -->
</template>
<v-list class="py-2 btn-close-menu-list" :style="{
backgroundColor: isDarkMode ? '#144985' : '#3f4d7d',
}">
<v-list class="py-2 btn-close-menu-list">
<v-list-item class="px-2">
<v-list-item-title @click="delAllTabsData()" class="body-2">전체 닫기</v-list-item-title>
</v-list-item>
@ -54,9 +54,7 @@
<span class="body-2">즐겨찾기</span>
<v-icon size="20">mdi-chevron-down</v-icon></a-button> -->
</template>
<v-list v-if="myMenuList.length > 0" class="py-2 btn-close-menu-list" :style="{
backgroundColor: isDarkMode ? '#144985' : '#3f4d7d',
}">
<v-list v-if="myMenuList.length > 0" class="py-2 btn-close-menu-list">
<v-list-item v-for="item in myMenuList" :key="item.menuId" class="px-2" style="cursor: pointer">
<v-list-item-title @click="moveToMyMenu(item.url, item.menuId, item.prgmId)" class="body-2">{{
item.menuNm
@ -67,7 +65,9 @@
<a-button id="refresh" class="btn-header" @click="removeBookMark" v-if="bookmarkBtn == 1">
<span class="material-icons" style="font-size: 17px">star</span>
</a-button>
<a-button id="refresh" class="btn-header" @click="addBookMark" v-if="bookmarkBtn == 0">
<a-button id="refresh" class="btn-header" :style="{
display: 'flex',
alignItems: 'center'}" @click="addBookMark" v-if="bookmarkBtn == 0">
<span class="material-icons" style="font-size: 17px">star_border</span>
</a-button>
<a-button
@ -102,7 +102,9 @@
<img v-else src="@/assets/images/logo_lm.png" />
</div>
<!-- <div class="lnb-logo">FEMS</div>-->
</router-link>
<ThemeSwitch style="margin-right: 20px" />
<v-app-bar-nav-icon ref="appbarnavicon" id="appbarnavicon" @click.stop="miniVariant = !miniVariant"
@click="updateTreeview" :style="{
backgroundColor: 'transparent',
@ -164,7 +166,6 @@
<v-icon size="20" class="ml-2" v-if="closable" @click.stop="onCloseTab(to)">mdi-close</v-icon>
</template>
<template #end v-if="false">
<ThemeSwitch style="margin-right: 20px" />
<v-menu offset-y>
<template v-slot:activator="{ on, attrs }">
<!-- <v-btn :ripple="false" tile class="btn-close" v-bind="attrs" v-on="on">
@ -175,9 +176,7 @@
<span class="body-2">닫기</span>
<v-icon size="20">mdi-chevron-down</v-icon></a-button>
</template>
<v-list class="py-2 btn-close-menu-list" :style="{
backgroundColor: isDarkMode ? '#144985' : '#3f4d7d',
}">
<v-list class="py-2 btn-close-menu-list" >
<v-list-item class="px-2">
<v-list-item-title @click="delAllTabsData()" class="body-2">전체 닫기</v-list-item-title>
</v-list-item>
@ -203,9 +202,7 @@
<span class="body-2">즐겨찾기</span>
<v-icon size="20">mdi-chevron-down</v-icon></a-button>
</template>
<v-list v-if="myMenuList.length > 0" class="py-2 btn-close-menu-list" :style="{
backgroundColor: isDarkMode ? '#144985' : '#3f4d7d',
}">
<v-list v-if="myMenuList.length > 0" class="py-2 btn-close-menu-list" >
<v-list-item v-for="item in myMenuList" :key="item.menuId" class="px-2" style="cursor: pointer">
<v-list-item-title @click="moveToMyMenu(item.url, item.menuId, item.prgmId)" class="body-2">{{
item.menuNm
@ -444,80 +441,71 @@ export default {
activeTree: {
deep: true,
handler(newVal, oldVal) {
var _this = this;
const nv = newVal[0];
const ov = oldVal[0];
if (nv !== ov) {
if (!nv) {
// 중복클릭 시 발생 상황 기존 값을 다시 넣어줌
this.activeTree.push(ov);
} else {
this.myPrgmId = nv;
console.log("menu:", this.menuData);
if (this.menuData[nv].url) {
const menuUrl = this.menuData[nv].url;
const menuId = this.menuData[nv].menuId;
var _this = this;
const nv = newVal[0];
const ov = oldVal[0];
if (nv !== ov) {
if (!nv) {
// 중복클릭 시 발생 상황 기존 값을 다시 넣어줌
this.activeTree.push(ov);
} else {
this.myPrgmId = nv;
if (this.menuData[nv].url) {
const menuUrl = this.menuData[nv].url;
const menuId = this.menuData[nv].menuId;
const isCommMenu = menuUrl.indexOf("comm/");
const isEmsMenu = menuUrl.indexOf("ems/");
const isCmmsMenu = menuUrl.indexOf("cmms/");
const isCommMenu = menuUrl.indexOf('comm/');
const isEmsMenu = menuUrl.indexOf('ems/');
const isCmmsMenu = menuUrl.indexOf('cmms/');
// console.log('activeTree...');
console.log(isEmsMenu);
// console.log('activeTree...');
if (isCommMenu > -1 || isEmsMenu > -1 || isCmmsMenu > -1) {
// console.log('activeTree if stmt1');
// console.log('this.isLoading : ', this.isLoading);
// if(this.isLoading == true){
// console.log('if isLoading stmt1');
// return;
// }
console.log("this:", this.menuData[nv].url);
this.$router.push({
path: `/${this.menuData[nv].url}?prgmId=${nv}`,
});
// this.$router.replace("/").then(() => {
// alert("hihi");
// this.$router.push({
// path: `${this.menuData[nv].url}?prgmId=${nv}`,
// });
// });
// this.$router.beforeEach((to, from, next) => {
// if(_this.isLoading == true){
// next(false);
// }
// if (!to.matched.length) {
// next(false);
// } else {
// next();
// }
// });
var tmp = 0;
for (var i = 0; i < this.myMenuList.length; i++) {
if (this.myMenuList[i].menuId == menuId) {
tmp = 1;
}
}
this.bookmarkBtn = tmp;
} else {
// console.log('activeTree if stmt2');
// console.log('this.isLoading : ', this.isLoading);
// if(this.isLoading == true){
// console.log('if isLoading stmt2');
// return;
// }
this.$refs.routerTab.openIframe(
encodeURI(`http://localhost:9999${this.menuData[nv].url}?prgmId=${nv}`),
this.menuData[nv].menuNm
);
}
this.$axios.get(`${this.menuData[nv].url}?$menuId=${menuId}`);
} else alert("지정된 페이지 경로가 없습니다.");
}
}
},
if (isCommMenu > -1 || isEmsMenu > -1 || isCmmsMenu > -1) {
// console.log('activeTree if stmt1');
// console.log('this.isLoading : ', this.isLoading);
// if(this.isLoading == true){
// console.log('if isLoading stmt1');
// return;
// }
this.$router.push({
path: `${this.menuData[nv].url}?prgmId=${nv}`,
});
// this.$router.beforeEach((to, from, next) => {
// if(_this.isLoading == true){
// next(false);
// }
// if (!to.matched.length) {
// next(false);
// } else {
// next();
// }
// });
var tmp = 0;
for (var i = 0; i < this.myMenuList.length; i++) {
if (this.myMenuList[i].menuId == menuId) {
tmp = 1;
}
}
this.bookmarkBtn = tmp;
} else {
// console.log('activeTree if stmt2');
// console.log('this.isLoading : ', this.isLoading);
// if(this.isLoading == true){
// console.log('if isLoading stmt2');
// return;
// }
this.$refs.routerTab.openIframe(
encodeURI(
`http://localhost:9999${this.menuData[nv].url}?prgmId=${nv}`,
),
this.menuData[nv].menuNm,
);
}
this.$axios.get(`${this.menuData[nv].url}?$menuId=${menuId}`);
} else alert('지정된 페이지 경로가 없습니다.');
}
}
},
},
menuData: {
deep: true,

View File

@ -4,13 +4,14 @@
<v-row ref="searchFilter">
<v-col :cols="12">
<v-card class="searchFilter">
<v-row align="center" no-gutters>
<v-row align="end" no-gutters>
<v-col :cols="3">
<!-- 사업장 -->
<component
:is="'SelectBlocMstr'"
:parentPrgmId="myPrgmId"
:sendParam="{ comId }"
customClass="select-large"
/>
<!-- <component
:is="'selectCodeList'"
@ -35,6 +36,7 @@
label="로그인ID"
valueNm="userLoginId"
:searchOption="true"
customClass="input-large"
/>
</v-col>
<v-col :cols="3">
@ -43,10 +45,11 @@
label="사용자명"
valueNm="userNm"
:searchOption="true"
customClass="input-large"
/>
</v-col>
<v-col :cols="3" class="text-right">
<BtnSearch />
<BtnSearch size="large"/>
</v-col>
</v-row>
</v-card>
@ -76,6 +79,7 @@
@getRowsData="getRowData"
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
:selectedRowDataWatchFlag="true"
:dataPath="dataPathMock"
/>
</div>
</div>
@ -303,10 +307,40 @@ export default {
},
methods: {
async init() {
await this.gridInit();
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 = {
@ -937,7 +971,10 @@ const myDetail = blocCdList => {
elseDisabled: 'I', // 선택적 disabled => rowStat 상태가 해당 값이 아닐경우 true
readonly: true,
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
required: false,
placeholder: '시스템 자동입력',
},
@ -946,7 +983,10 @@ const myDetail = blocCdList => {
label: '사용자ID',
valueNm: 'userLoginId',
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
required: true,
},
{
@ -956,7 +996,10 @@ const myDetail = blocCdList => {
valueNm: 'userPswd',
// disabled: true,
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
required: true,
},
{
@ -964,7 +1007,10 @@ const myDetail = blocCdList => {
label: '사용자명',
valueNm: 'userNm',
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
required: true,
},
{
@ -972,7 +1018,10 @@ const myDetail = blocCdList => {
label: '사업장',
valueNm: 'blocId',
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
list: blocCdList.map(item => ({
text: item.blocNm,
value: item.blocId,
@ -984,7 +1033,10 @@ const myDetail = blocCdList => {
label: 'email',
valueNm: 'email',
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
},
{
type: 'InputText',
@ -992,7 +1044,10 @@ const myDetail = blocCdList => {
valueNm: 'regUserNo',
disabled: true,
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
placeholder: '시스템 자동입력',
},
{
@ -1001,7 +1056,10 @@ const myDetail = blocCdList => {
valueNm: 'regDttm',
disabled: true,
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
placeholder: '시스템 자동입력',
},
{
@ -1010,7 +1068,10 @@ const myDetail = blocCdList => {
valueNm: 'procUserNo',
disabled: true,
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
placeholder: '시스템 자동입력',
},
{
@ -1019,7 +1080,10 @@ const myDetail = blocCdList => {
valueNm: 'procDttm',
disabled: true,
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
placeholder: '시스템 자동입력',
},
];
@ -1036,4 +1100,67 @@ 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>

View File

@ -1,12 +1,13 @@
<template>
<div class="l-layout">
<v-row ref="searchFilter">
<common-page-title />
<v-row ref="searchFilter" class="mt-2">
<v-col :cols="12">
<v-card class="searchFilter">
<v-row align="end" no-gutters>
<v-col :cols="3">
<InputText :labelCols="12" :textCols="12" :parentPrgmId="myPrgmId" label="지표명"
valueNm="searchEffcIdxNm" :searchOption="true" :customClass="'input-large fixed-width'"
valueNm="searchEffcIdxNm" :searchOption="true" :customClass="'input-large surface-name'"
:iconShow="true" />
</v-col>
<v-col :cols="9" class="text-right">
@ -16,8 +17,8 @@
</v-card>
</v-col>
</v-row>
<v-row ref="contents">
<v-col :cols="5" style="height:100%">
<v-row ref="contents" class="pt-2">
<v-col :cols="5" style="height:100%" class="pr-2">
<v-card class="pb-5">
<div class="d-flex align-center justify-space-between pa-4">
<v-card-title class="pa-0 custom-title-4">효율지표 리스트</v-card-title>
@ -27,12 +28,12 @@
<div ref="gridParent" id="gridParent" class="w100 h100">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="myPrgmId" @getRowsData="getRowData" :preventFocusChangeEventFlag="false"
:dataPath="dataPathExample" />
/>
</div>
</div>
</v-card>
</v-col>
<v-col :cols="7" style="height:100%">
<v-col :cols="7" style="height:100%" class="pl-2">
<v-card class="pb-5">
<v-card-title class="custom-title-4 pa-4 pb-2">효율지표 상세
</v-card-title>
@ -212,66 +213,65 @@ export default {
disabledFlag: false,
},
],
loadGrid: true,
dataPathExample: {
"effcIdxGrid": {
data: [
{
"effcIdxId": "E001",
"effcIdxNm": "에너지 소비 효율",
"effcKind": "환경"
},
{
"effcIdxId": "E002",
"effcIdxNm": "작업 시간 대비 생산량",
"effcKind": "생산성"
},
{
"effcIdxId": "E003",
"effcIdxNm": "장비 가동률",
"effcKind": "운영"
},
{
"effcIdxId": "E004",
"effcIdxNm": "불량률",
"effcKind": "품질"
},
{
"effcIdxId": "E005",
"effcIdxNm": "재고 회전율",
"effcKind": "물류"
}
]
,
column: [
{
header: '효율지표 ID',
name: 'effcIdxId',
align: 'center',
// hidden:true
},
{
header: '효율지표명',
name: 'effcIdxNm',
align: 'left',
minWidth: 150,
// hidden:true
},
loadGrid: false,
// "effcIdxGrid": {
// data: [
// {
// "effcIdxId": "E001",
// "effcIdxNm": "에너지 소비 효율",
// "effcKind": "환경"
// },
// {
// "effcIdxId": "E002",
// "effcIdxNm": "작업 시간 대비 생산량",
// "effcKind": "생산성"
// },
// {
// "effcIdxId": "E003",
// "effcIdxNm": "장비 가동률",
// "effcKind": "운영"
// },
// {
// "effcIdxId": "E004",
// "effcIdxNm": "불량률",
// "effcKind": "품질"
// },
// {
// "effcIdxId": "E005",
// "effcIdxNm": "재고 회전율",
// "effcKind": "물류"
// }
// ]
// ,
// column: [
// {
// header: '효율지표 ID',
// name: 'effcIdxId',
// align: 'center',
// // hidden:true
// },
// {
// header: '효율지표명',
// name: 'effcIdxNm',
// align: 'left',
// minWidth: 150,
// // hidden:true
// },
{
header: '효율지표종류',
name: 'effcKind',
align: 'left',
// hidden: true,
},
// { header: '등록 사용자', name: 'regUserNo', hidden: true },
// { header: '등록 일자', name: 'regDttm', hidden: true },
// { header: '수정 사용자', name: 'procUserNo', hidden: true },
// { header: '수정 일자', name: 'procDttm', hidden: true },
],
// {
// header: '효율지표종류',
// name: 'effcKind',
// align: 'left',
// // hidden: true,
// },
// // { header: '등록 사용자', name: 'regUserNo', hidden: true },
// // { header: '등록 일자', name: 'regDttm', hidden: true },
// // { header: '수정 사용자', name: 'procUserNo', hidden: true },
// // { header: '수정 일자', name: 'procDttm', hidden: true },
// ],
}
},
// }
// },
initFlag: false,
selectValueList01: [],
selectValueList02: [],
@ -904,6 +904,10 @@ export default {
columnOptions: {
resizable: true,
},
header: {
height: 37,
},
rowHeight: 'auto',
};
this.setGridOption({
gridKey: this.gridName,
@ -1439,6 +1443,6 @@ const defaultData = {
</script>
<style lang="scss" scoped>
.v-input__custom.surface-name fieldset {
width: 345px;
max-width: 345px;
}
</style>

View File

@ -1,6 +1,7 @@
<template>
<div class="l-layout">
<v-row ref="searchFilter">
<common-page-title />
<v-row ref="searchFilter" class="mt-2">
<v-col :cols="12">
<v-card class="searchFilter">
<v-row align="end" no-gutters>
@ -19,7 +20,7 @@
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }" :addAll="true" :labelCols="12"
:textCols="12" :customClass="'select-large'" :iconShow="true" />
</v-col>
<v-col :cols="2.5">
<v-col :cols="2.5" class="pr-4">
<InputText :parentPrgmId="myPrgmId" label="검침개소명" valueNm="readPlcNm" :labelCols="12"
:textCols="12" :searchOption="true" :customClass="'input-large'" :iconShow="true" />
</v-col>
@ -30,25 +31,25 @@
</v-card>
</v-col>
</v-row>
<v-row ref="contents" class="mt-4">
<v-col :cols="5" class="h100">
<v-row ref="contents" class="mt-3">
<v-col :cols="5" class="h100 pr-2">
<v-card class="pb-5">
<div class="d-flex align-center justify-space-between pa-4 pb-6">
<v-card-title class="pa-0 custom-title-4">검침개소 정보</v-card-title>
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
:btnActionsFnc="btnActions" />
</div>
<div class="px-4">
<div class="px-4" style="height:calc(100% - 76px)">
<div ref="gridParent" class="w100 h100">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true"
:dataPath="dataPathExample" />
/>
</div>
</div>
</v-card>
</v-col>
<v-col :cols="7" class="h100">
<v-col :cols="7" class="h100 pl-2">
<v-card class="pb-5">
<v-card-title class="custom-title-4 pb-1 pa-4">검침개소 상세
</v-card-title>
@ -134,7 +135,7 @@ export default {
return {
myPrgmId: myPrgmId,
gridName: 'rowGrid',
loadGrid: true,
loadGrid: false,
tab: null,
isImgTabDisabled: false,
items: [
@ -157,47 +158,6 @@ export default {
],
detailList: myDetail,
defaultUseFg: 1,
dataPathExample: {
"rowGrid": {
data: sampleData,
column: [
{
header: '',
name: '',
align: 'center',
width: 50,
formatter: (props) => {
return `<label class="custom-radio">
<span class="radio-mark"></span>
</label>`;
}
},
{
header: '검침개소명',
name: 'readPlcNm',
align: 'left',
minWidth: 400,
},
{
header: '개소 종류',
name: 'plcKind',
minWidth: 100,
align: 'center',
},
{
header: '사용 여부',
name: 'useFg',
minWidth: 100,
align: 'center',
},
],
option: myOptions,
}
}
// loadTree: false
};
},
@ -312,18 +272,18 @@ export default {
},
async initData() {
let ercList = [];
// const res = await this.postApiReturn({
// apiKey: 'selectErcInfo',
// resKey: 'ercInfoData',
// sendParam: {
// blocId: this.userInfo.blocId,
// },
// });
// res.forEach(item => {
// const it = { text: item.ercNm, value: item.ercId };
// ercList.push(it);
// });
// this.setPageData({ ercNmList: ercList });
const res = await this.postApiReturn({
apiKey: 'selectErcInfo',
resKey: 'ercInfoData',
sendParam: {
blocId: this.userInfo.blocId,
},
});
res.forEach(item => {
const it = { text: item.ercNm, value: item.ercId };
ercList.push(it);
});
this.setPageData({ ercNmList: ercList });
},
gridInit() {
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
@ -334,10 +294,12 @@ export default {
resizable: true,
},
treeColumnOptions: {
name: 'eccNm',       // Showing tree table
useIcon: false,      // Not using icon
indentWidth: 10,
name: 'readPlcNm',
},
header: {
height: 37,
},
rowHeight: 37,
};
this.setGridOption({
gridKey: this.gridName,
@ -508,12 +470,12 @@ export default {
this.$refs[this.gridName].focus({
rowKey:
this.pageData.rowGridSelectKey == '' ||
this.pageData.rowGridSelectKey == null
this.pageData.rowGridSelectKey == null
? 0
: this.pageData.rowGridSelectKey ==
this.$refs[this.gridName].getData().length - 1
? this.pageData.rowGridSelectKey
: 0,
this.$refs[this.gridName].getData().length - 1
? this.pageData.rowGridSelectKey
: 0,
columnName: 'readPlcNm',
setScroll: true,
});
@ -531,7 +493,7 @@ export default {
if (this.tab == 2) {
this.tab = 0;
}
this.isImgTabDisabled = true;
this.isImgTabDisabled = false;
} else {
this.isImgTabDisabled = false;
}
@ -999,18 +961,6 @@ const sampleData = [
];
const myOptions = {
columnOptions: {
resizable: true,
},
treeColumnOptions: {
name: 'readPlcNm',       // Showing tree table
useIcon: false,      // Not using icon
indentWidth: 10,
},
}
const myDetail = [
{
type: 'InputText',

View File

@ -1,6 +1,7 @@
<template>
<div ref="mainDiv" class="l-layout">
<v-row ref="searchFilter">
<common-page-title />
<v-row ref="searchFilter" class="mt-2">
<v-col :cols="12">
<v-card class="searchFilter">
<v-row align="end" no-gutters>
@ -29,10 +30,10 @@
</v-card>
</v-col>
</v-row>
<v-row ref="contents">
<v-col :cols="5" class="h100">
<v-row ref="contents" class="mt-3">
<v-col :cols="5" class="h100 pr-2">
<v-card class="pb-5">
<v-card-title class="d-flex align-center justify-space-between pa-4">
<v-card-title class="d-flex align-center justify-space-between pa-5">
물리량 리스트
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
@ -44,12 +45,12 @@
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true"
:preventFocusChangeEventFlag="true"
:preventFocusChangeEventTargetGridList="editingGridList" :dataPath="dataPathExample" />
:preventFocusChangeEventTargetGridList="editingGridList" />
</div>
</div>
</v-card>
</v-col>
<v-col :cols="7" class="h100">
<v-col :cols="7" class="h100 pl-2">
<v-card class="pb-5 px-4">
<v-card-title class="px-0">물리량 상세</v-card-title>
<v-row no-gutters>
@ -136,7 +137,7 @@
<v-col :cols="12" style="height:100%">
<div ref="gridParent2" style="height:100%">
<component :ref="gridName2" :is="loadGrid2 ? 'Grid' : null" :gridName="gridName2"
:parentPrgmId="myPrgmId" @getRowsData="getRowData2" :dataPath="dataPathExample2" />
:parentPrgmId="myPrgmId" @getRowsData="getRowData2" />
</div>
</v-col>
</v-row>
@ -223,7 +224,7 @@ export default {
formatterSelectList01: [],
formatterSelectList02: [],
loadGrid: true,
loadGrid: false,
dataPathExample: {
"rowGrid": {
data: [
@ -279,59 +280,7 @@ export default {
}
},
dataPathExample2: {
"rowGrid2": {
data:
[
{
"argSeq": "1",
"argPysclQtyId": "001",
"eqpmGrpId": "EQPM-GRP-A",
"pysclQtyCd": "TEMP001"
},
{
"argSeq": "2",
"argPysclQtyId": "002",
"eqpmGrpId": "EQPM-GRP-B",
"pysclQtyCd": "PRESS001"
},
{
"argSeq": "3",
"argPysclQtyId": "003",
"eqpmGrpId": "EQPM-GRP-C",
"pysclQtyCd": "FLOW001"
},
{
"argSeq": "4",
"argPysclQtyId": "004",
"eqpmGrpId": "EQPM-GRP-D",
"pysclQtyCd": "HUMID001"
},
{
"argSeq": "5",
"argPysclQtyId": "005",
"eqpmGrpId": "EQPM-GRP-E",
"pysclQtyCd": "VOLT001"
}
]
,
column: [
{ header: '순번', name: 'argSeq', editor: 'text' },
{ header: '물리량 ID', name: 'argPysclQtyId' },
{
header: '설비그룹',
name: 'eqpmGrpId',
},
{ header: '물리량 코드', name: 'pysclQtyCd' },
],
}
},
loadGrid2: true,
loadGrid2: false,
detailList: myDetail,
readOnlyValueList: [
@ -1001,6 +950,10 @@ export default {
columnOptions: {
resizable: true,
},
header: {
height: 37,
},
rowHeight: 'auto',
};
this.setGridOption({
@ -1066,6 +1019,10 @@ export default {
columnOptions: {
resizable: true,
},
header: {
height: 37,
},
rowHeight: 'auto',
};
this.setGridOption({

View File

@ -1,19 +1,13 @@
<template>
<div ref="mainDiv" class="l-layout">
<PageTitle/>
<v-row ref="searchFilter">
<v-col :cols="12">
<v-card class="searchFilter">
<v-row align="end" no-gutters>
<v-col :cols="5">
<InputText
:parentPrgmId="myPrgmId"
label="설비종류명"
valueNm="eqpmKindNm"
:searchOption="true"
:textCols="12"
:labelCols="12"
customClass="input-large"
/>
<InputText :parentPrgmId="myPrgmId" label="설비종류명" valueNm="eqpmKindNm" :searchOption="true"
:textCols="12" :labelCols="12" customClass="input-large" />
</v-col>
<v-col :cols="7" class="text-right">
<BtnSearch @click="search" size="large" />
@ -25,41 +19,27 @@
<v-row ref="contents">
<v-col :cols="5" class="h100">
<v-card class="pb-5">
<div class="d-flex align-center justify-space-between pa-5">
<div class="d-flex align-center justify-space-between pa-4" style="padding-bottom: 30px !important;">
<v-card-title class="pa-0">설비종류</v-card-title>
<Buttons
:parentPrgmId="myPrgmId"
:bindingData="gridName"
:btnActionsFnc="btnActions"
/>
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
</div>
<div class="h100 px-5" style="height:calc(100% - 70px)">
<div ref="gridParent" class="w100 h100">
<component
:ref="gridName"
:is="loadGrid ? 'Grid' : null"
:gridName="gridName"
:parentPrgmId="myPrgmId"
@getRowsData="getRowData"
:preventFocusChangeEventFlag="false"
:dataPath="dataPathMock"
/>
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
:preventFocusChangeEventFlag="false" />
</div>
</div>
</v-card>
</v-col>
<v-col :cols="7" class="h100">
<v-card class="pb-5">
<div class="d-flex align-center justify-space-between pa-5">
<div class="d-flex align-center justify-space-between pa-4" style="padding-bottom: 30px !important;">
<v-card-title class="pa-0">설비종류 상세</v-card-title>
</div>
<div class="px-5" style="height:calc(100% - 76px)">
<component
:is="'Form'"
:parentPrgmId="myPrgmId"
:detailList="detailList"
@gridEditingFinish="gridEditingFinish"
/>
<component :is="'Form'" :parentPrgmId="myPrgmId" :detailList="detailList"
@gridEditingFinish="gridEditingFinish" />
</div>
</v-card>
</v-col>
@ -78,6 +58,8 @@ import Form from '~/components/common/form/Form';
import Grid from '~/components/common/Grid';
import Utility from '~/plugins/utility';
import SelectBox from '@/components/common/select/SelectBox';
import PageTitle from "~/components/common/PageTitle";
let myTitle;
// const myPrgmId = "PRG0013";
let myPrgmId;
@ -108,6 +90,7 @@ export default {
Grid,
Utility,
SelectBox,
PageTitle,
},
data() {
return {
@ -118,21 +101,6 @@ export default {
detailList: myDetail,
selectValueList01: [],
selectValue01: null,
dataPathMock: {
'eqpmKindGrid': {
column: [
{ header: '설비종류ID', name: 'eqpmKindId', headerAlign: 'center' },
{ header: '설비종류명', name: 'eqpmKindNm', headerAlign: 'left' },
{ header: '등록자NO', name: 'regUserNo', hidden: true},
{ header: '등록일시', name: 'regDttm', hidden: true },
{ header: '수정자NO', name: 'procUserNo', hidden: true },
{ header: '수정일시', name: 'procDttm', hidden: true}
],
data: dataPathDataExample,
defaultRow: dataPathDataExample,
option: {}
}
},
};
},
computed: {
@ -164,7 +132,7 @@ export default {
defaultData: defaultData,
});
},
created() {},
created() { },
mounted() {
this.gridInit();
// this.init();
@ -184,6 +152,8 @@ export default {
const myOptions = {
columnOptions: {
resizable: true,
}, header: {
height: 38,
},
};
this.setGridOption({
@ -255,12 +225,12 @@ export default {
//rowKey: 0,
rowKey:
this.pageData.rowGridSelectKey == '' ||
this.pageData.rowGridSelectKey == null
this.pageData.rowGridSelectKey == null
? 0
: this.pageData.rowGridSelectKey ==
this.$refs[this.gridName].getData().length - 1
? this.pageData.rowGridSelectKey
: 0,
this.$refs[this.gridName].getData().length - 1
? this.pageData.rowGridSelectKey
: 0,
setScroll: true,
});
}
@ -398,7 +368,7 @@ const myDetail = [
textCols: 12,
},
{
type: 'InputTextReg',
type: 'InputText',
label: '설비종류명',
valueNm: 'eqpmKindNm',
disabled: false,
@ -458,14 +428,4 @@ const myDetail = [
textCols: 12,
},
];
import { getPathDataExample } from '@/const/const'
const dataPathDataExample = getPathDataExample({
eqpmKindId: 'EKIND0005',
eqpmKindNm: 'VCB',
regUserNo: '사용',
regDttm: 'EQP_HVAC_LT_CH001',
procUserNo: '사용',
procDttm: 'EQP_HVAC_LT_CH001',
});
</script>

View File

@ -1,41 +1,23 @@
<template>
<div ref="mainDiv" class="l-layout">
<PageTitle />
<v-row ref="searchFilter">
<v-col :cols="12">
<v-card class="searchFilter">
<v-row align="end" no-gutters>
<v-col :cols="3">
<component
:is="'selectCodeList'"
:parentPrgmId="myPrgmId"
:label="'사용여부'"
dataKey="useFg"
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
:addAll="true"
customClass="select-large"
/>
<component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'사용여부'" dataKey="useFg"
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }" :addAll="true"
customClass="select-large" />
</v-col>
<v-col :cols="3">
<component
:is="'SelectBox'"
ref="SelectBox1"
:propsValue="selectValue01"
:itemList="selectValueList01"
:label="'설비종류'"
@update:propsValue="selectValue01 = $event"
customClass="select-large"
/>
<component :is="'SelectBox'" ref="SelectBox1" :propsValue="selectValue01"
:itemList="selectValueList01" :label="'설비종류'"
@update:propsValue="selectValue01 = $event" customClass="select-large" />
</v-col>
<v-col :cols="3">
<InputText
:parentPrgmId="myPrgmId"
label="설비 그룹 명"
valueNm="eqpmGrpNm"
:searchOption="true"
:textCols="12"
:labelCols="12"
customClass="input-large"
/>
<InputText :parentPrgmId="myPrgmId" label="설비 그룹 명" valueNm="eqpmGrpNm" :searchOption="true"
:textCols="12" :labelCols="12" customClass="input-large" />
</v-col>
<v-col :cols="3" class="text-right">
<BtnSearch @click="search" size="large" />
@ -47,41 +29,28 @@
<v-row ref="contents">
<v-col :cols="5" class="h100">
<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">설비 그룹</span>
<Buttons
:parentPrgmId="myPrgmId"
:bindingData="gridName"
:btnActionsFnc="btnActions"
/>
</v-card-title>
<div class="d-flex align-center justify-space-between pa-4"
style="padding-bottom: 30px !important;">
<v-card-title class="pa-0">설비 그룹</v-card-title>
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
</div>
<div class="h100 px-5" style="height:calc(100% - 70px)">
<div ref="gridParent" class="w100 h100">
<component
:ref="gridName"
:is="loadGrid ? 'Grid' : null"
:gridName="gridName"
:parentPrgmId="myPrgmId"
@getRowsData="getRowData"
:dataPath="dataPathMock"
/>
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="myPrgmId" @getRowsData="getRowData" />
</div>
</div>
</v-card>
</v-col>
<v-col :cols="7" class="h100">
<v-card class="pb-5">
<div class="d-flex align-center justify-space-between pa-5">
<div class="d-flex align-center justify-space-between pa-4"
style="padding-bottom: 30px !important;">
<v-card-title class="pa-0">설비 그룹 상세</v-card-title>
</div>
<div class="px-5" style="height:calc(100% - 76px)">
<component
:is="'Form'"
:parentPrgmId="myPrgmId"
:detailList="detailList"
@gridEditingFinish="gridEditingFinish"
/>
<component :is="'Form'" :parentPrgmId="myPrgmId" :detailList="detailList"
@gridEditingFinish="gridEditingFinish" />
</div>
</v-card>
</v-col>
@ -100,6 +69,8 @@ import Form from '~/components/common/form/Form';
import Grid from '~/components/common/Grid';
import Utility from '~/plugins/utility';
import SelectBox from '@/components/common/select/SelectBox';
import PageTitle from "~/components/common/PageTitle";
let myTitle;
// const myPrgmId = "PRG0013";
let myPrgmId;
@ -130,34 +101,17 @@ export default {
Grid,
Utility,
SelectBox,
PageTitle,
},
data() {
return {
myPrgmId: myPrgmId,
gridName: 'rowGrid',
loadGrid: true,
loadGrid: false,
tab: null,
detailList: myDetail,
selectValueList01: [],
selectValue01: null,
dataPathMock: {
'rowGrid': {
column: [
{ header: '회사 ID', name: 'comId', hidden: true },
{ header: '설비 그룹 ID', name: 'eqpmGrpId'},
{ header: '설비 그룹 명', name: 'eqpmGrpNm'},
{ header: '설비종류', name: 'eqpmKindId'},
{ header: '사용여부', name: 'useFg'},
{ header: '등록자NO', name: 'regUserNo', hidden: true},
{ header: '등록일시', name: 'regDttm', hidden: true },
{ header: '수정자NO', name: 'procUserNo', hidden: true },
{ header: '수정일시', name: 'procDttm', hidden: true}
],
data: dataPathDataExample,
defaultRow: dataPathDataExample,
options:{}
}
},
};
},
computed: {
@ -203,7 +157,7 @@ export default {
defaultData: defaultData,
});
},
created() {},
created() { },
mounted() {
this.setSelectValueList01();
// if (this.loadFlag) {
@ -252,12 +206,15 @@ export default {
}
},
gridInit() {
const gridHeight = this.$refs.gridParent.offsetHeight - 70;
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
const myOptions = {
columnOptions: {
resizable: true,
},
header: {
height: 38,
},
};
this.setGridOption({
gridKey: this.gridName,
@ -365,12 +322,12 @@ export default {
//rowKey: 0,
rowKey:
this.pageData.rowGridSelectKey == '' ||
this.pageData.rowGridSelectKey == null
this.pageData.rowGridSelectKey == null
? 0
: this.pageData.rowGridSelectKey ==
this.$refs[this.gridName].getData().length - 1
? this.pageData.rowGridSelectKey
: 0,
this.$refs[this.gridName].getData().length - 1
? this.pageData.rowGridSelectKey
: 0,
setScroll: true,
});
}
@ -512,7 +469,7 @@ const myDetail = [
placeholder: '시스템 자동입력',
},
{
type: 'InputTextReg',
type: 'InputText',
label: '설비 그룹 명',
valueNm: 'eqpmGrpNm',
disabled: false,
@ -600,18 +557,4 @@ const myDetail = [
textCols: 12,
},
];
import { getPathDataExample } from '@/const/const'
const dataPathDataExample = getPathDataExample({
comId: 'EKIND0005',
eqpmGrpId: 'EQG000010',
eqpmGrpNm:'냉수파이프고온',
eqpmKindId:'냉동파이프',
useFg:'1',
regUserNo: '사용',
regDttm: 'EQP_HVAC_LT_CH001',
procUserNo: '사용',
procDttm: 'EQP_HVAC_LT_CH001',
});
</script>

View File

@ -1,6 +1,7 @@
<template>
<div ref="mainDiv" class="l-layout">
<v-row ref="searchFilter">
<common-page-title />
<v-row ref="searchFilter" class="mt-2">
<v-col :cols="12">
<v-card class="searchFilter">
<v-row align="end" no-gutters>
@ -37,11 +38,11 @@
:btnActionsFnc="btnActions" />
</div>
<div class="h100 px-4" style="height:calc(100% - 70px)">
<div ref="gridParent" >
<div ref="gridParent" style="height: 30%">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="myPrgmId" @getRowsData="getRowData" :dataPath="dataPathExample" />
</div>
<div class="d-flex py-4">
<div class="d-flex py-4 mt-4" >
<component :is="'Form'" :parentPrgmId="myPrgmId" :detailList="detailList"
@gridEditingFinish="gridEditingFinish" />
</div>
@ -112,7 +113,7 @@ export default {
myPrgmId: myPrgmId,
initedFlag: false,
gridName: 'rowGrid',
loadGrid: true,
loadGrid: false,
detailList: myDetail,
selectValue01: null,
selectValueList01: [],
@ -125,102 +126,102 @@ export default {
// pysclQtyId3 : null,
// pysclQtyId4 : null
// }
dataPathExample: {
"rowGrid": {
data: [
// dataPathExample: {
// "rowGrid": {
// data: [
{
gdIdxId: 'GD001',
gdIdxNm: '온도 가이드',
eqpmGrpId: 'EQ001',
upTotMeth: 'AVG',
careStndVal: 50,
warnStndVal: 70,
alrmMsg: '온도가 기준치를 초과했습니다.',
},
{
gdIdxId: 'GD002',
gdIdxNm: '습도 가이드',
eqpmGrpId: 'EQ002',
upTotMeth: 'MAX',
careStndVal: 30,
warnStndVal: 60,
alrmMsg: '습도가 기준치를 초과했습니다.',
},
{
gdIdxId: 'GD003',
gdIdxNm: '압력 가이드',
eqpmGrpId: 'EQ003',
upTotMeth: 'SUM',
careStndVal: 100,
warnStndVal: 150,
alrmMsg: '압력이 기준치를 초과했습니다.',
}
// {
// gdIdxId: 'GD001',
// gdIdxNm: '온도 가이드',
// eqpmGrpId: 'EQ001',
// upTotMeth: 'AVG',
// careStndVal: 50,
// warnStndVal: 70,
// alrmMsg: '온도가 기준치를 초과했습니다.',
// },
// {
// gdIdxId: 'GD002',
// gdIdxNm: '습도 가이드',
// eqpmGrpId: 'EQ002',
// upTotMeth: 'MAX',
// careStndVal: 30,
// warnStndVal: 60,
// alrmMsg: '습도가 기준치를 초과했습니다.',
// },
// {
// gdIdxId: 'GD003',
// gdIdxNm: '압력 가이드',
// eqpmGrpId: 'EQ003',
// upTotMeth: 'SUM',
// careStndVal: 100,
// warnStndVal: 150,
// alrmMsg: '압력이 기준치를 초과했습니다.',
// }
],
column: [
{
header: '가이드',
name: 'gdIdxId',
width: 100,
align: 'center',
},
{
header: '가이드명',
name: 'gdIdxNm',
width: 210,
align: 'left',
},
{
header: '설비그룹ID',
name: 'eqpmGrpId',
width: 100,
align: 'center',
// formatter({ value }) {
// let retVal = '';
// const newValue = _this.pageData.eqpmGrpList.filter(item => item.value == value);
// if (newValue.length > 0) {
// retVal = newValue[0].text;
// }
// return retVal;
// },
},
{
header: '상위집계방법',
name: 'upTotMeth',
width: 100,
align: 'center',
// formatter({ value }) {
// let retVal = '';
// const newValue = _this.pageData.upTotMethList.filter(item => item.commCd == value);
// if (newValue.length > 0) {
// retVal = newValue[0].commCdNm;
// }
// return retVal;
// },
},
{
header: '주의기준',
name: 'careStndVal',
width: 100,
align: 'right',
},
{
header: '경고기준',
name: 'warnStndVal',
width: 100,
align: 'right',
},
{
header: '알람메세지',
name: 'alrmMsg',
minWidth: 860,
align: 'left',
}
]
// ],
// column: [
// {
// header: '가이드',
// name: 'gdIdxId',
// width: 100,
// align: 'center',
// },
// {
// header: '가이드명',
// name: 'gdIdxNm',
// width: 210,
// align: 'left',
// },
// {
// header: '설비그룹ID',
// name: 'eqpmGrpId',
// width: 100,
// align: 'center',
// // formatter({ value }) {
// // let retVal = '';
// // const newValue = _this.pageData.eqpmGrpList.filter(item => item.value == value);
// // if (newValue.length > 0) {
// // retVal = newValue[0].text;
// // }
// // return retVal;
// // },
// },
// {
// header: '상위집계방법',
// name: 'upTotMeth',
// width: 100,
// align: 'center',
// // formatter({ value }) {
// // let retVal = '';
// // const newValue = _this.pageData.upTotMethList.filter(item => item.commCd == value);
// // if (newValue.length > 0) {
// // retVal = newValue[0].commCdNm;
// // }
// // return retVal;
// // },
// },
// {
// header: '주의기준',
// name: 'careStndVal',
// width: 100,
// align: 'right',
// },
// {
// header: '경고기준',
// name: 'warnStndVal',
// width: 100,
// align: 'right',
// },
// {
// header: '알람메세지',
// name: 'alrmMsg',
// minWidth: 860,
// align: 'left',
// }
// ]
}
}
// }
// }
};
},
computed: {
@ -352,60 +353,46 @@ export default {
});
},
async getEqpmKind() {
// let res = await this.postApiReturn({
// apiKey: 'selectEqpmKindCodeList',
// resKey: 'eqpmKindCodeLists',
// sendParam: {},
// });
// if (res.length > 0) {
// this.selectValueList01 = await res.map(item => {
// return {
// text: item.eqpmKindNm,
// value: item.eqpmKindId,
// };
// });
// this.selectValue01 = this.selectValueList01[0].value;
// } else {
// this.selectValueList01 = [];
// this.selectValue01 = null;
// }
this.selectValueList01 = [
{ label: 'Etcher', value: 'EQK001' },
{ label: 'Deposition', value: 'EQK002' },
{ label: 'Inspection', value: 'EQK003' },
];
this.selectValue01 = 'EQK001';
let res = await this.postApiReturn({
apiKey: 'selectEqpmKindCodeList',
resKey: 'eqpmKindCodeLists',
sendParam: {},
});
if (res.length > 0) {
this.selectValueList01 = await res.map(item => {
return {
text: item.eqpmKindNm,
value: item.eqpmKindId,
};
});
this.selectValue01 = this.selectValueList01[0].value;
} else {
this.selectValueList01 = [];
this.selectValue01 = null;
}
this.setPageData({
eqpmKindList: this.selectValueList01,
eqpmKindId: this.selectValue01,
});
},
async getEqpmGrp() {
// let res = await this.postApiReturn({
// apiKey: 'selectEqpmGrpCodeList',
// resKey: 'eqpmGrpCodeLists',
// sendParam: { eqpmKindId: this.selectValue01 },
// });
// if (res.length > 0) {
// this.selectValueList02 = await res.map(item => {
// return {
// text: item.eqpmGrpNm,
// value: item.eqpmGrpId,
// };
// });
// this.selectValue02 = this.selectValueList02[0].value;
// } else {
// this.selectValueList02 = [];
// this.selectValue02 = null;
// }
this.selectValueList02 = [
{ label: '냉동기고온', value: '냉동기고온' },
{ label: '냉동기저온', value: '냉동기저온' },
{ label: '공조기', value: '공조기' },
{ label: '보일러', value: '보일러' }
];
let res = await this.postApiReturn({
apiKey: 'selectEqpmGrpCodeList',
resKey: 'eqpmGrpCodeLists',
sendParam: { eqpmKindId: this.selectValue01 },
});
if (res.length > 0) {
this.selectValueList02 = await res.map(item => {
return {
text: item.eqpmGrpNm,
value: item.eqpmGrpId,
};
});
this.selectValue02 = this.selectValueList02[0].value;
} else {
this.selectValueList02 = [];
this.selectValue02 = null;
}
this.setPageData({
eqpmGrpList: this.selectValueList02,
@ -419,6 +406,10 @@ export default {
columnOptions: {
resizable: true,
},
header: {
height: 37,
},
rowHeight: 'auto',
};
this.setGridOption({
gridKey: this.gridName,
@ -636,100 +627,100 @@ export default {
async getRowGridData() {
this.loadGrid = false;
let res = [];
const newRes = [
{
comId: 'COM001',
gdIdxId: 'GD001',
gdIdxNm: '온도 가이드',
eqpmGrpId: 'EQ001',
upTotMeth: 'AVG',
sortSeq: 1,
pysclQtyId1: 'TEMP',
pysclQtyId2: null,
pysclQtyId3: null,
pysclQtyId4: null,
ctgr1: '환경',
ctgr2: '내부',
careStndVal: 50,
warnStndVal: 70,
gdMeth: '자동',
useFg: '1',
alrmMsg: '온도가 기준치를 초과했습니다.',
calcProc: 'PROC001',
calcDesc: '평균 계산',
calcMeth: '(A+B)/2',
unit: 'C',
argCnt: 2,
rowStat: null,
},
{
comId: 'COM002',
gdIdxId: 'GD002',
gdIdxNm: '습도 가이드',
eqpmGrpId: 'EQ002',
upTotMeth: 'MAX',
sortSeq: 2,
pysclQtyId1: 'HUMID',
pysclQtyId2: null,
pysclQtyId3: null,
pysclQtyId4: null,
ctgr1: '환경',
ctgr2: '외부',
careStndVal: 30,
warnStndVal: 60,
gdMeth: '수동',
useFg: '0',
alrmMsg: '습도가 기준치를 초과했습니다.',
calcProc: 'PROC002',
calcDesc: '최대값 계산',
calcMeth: 'MAX(A,B)',
unit: '%',
argCnt: 2,
rowStat: null,
},
];
// res = await this.postApiReturn({
// apiKey: 'selectEqpmGdIdxDataList',
// resKey: 'eqpmGdIdxDataList',
// sendParam: {
// eqpmGrpId: this.selectValue02,
// gdIdxNmLike: this.pageData.gdIdxNm,
// },
// });
// const newRes = res.map(item => {
// const newObj = {
// ...item,
// const newRes = [
// {
// comId: 'COM001',
// gdIdxId: 'GD001',
// gdIdxNm: '온도 가이드',
// eqpmGrpId: 'EQ001',
// upTotMeth: 'AVG',
// sortSeq: 1,
// pysclQtyId1: 'TEMP',
// pysclQtyId2: null,
// pysclQtyId3: null,
// pysclQtyId4: null,
// ctgr1: '환경',
// ctgr2: '내부',
// careStndVal: 50,
// warnStndVal: 70,
// gdMeth: '자동',
// useFg: '1',
// alrmMsg: '온도가 기준치를 초과했습니다.',
// calcProc: 'PROC001',
// calcDesc: '평균 계산',
// calcMeth: '(A+B)/2',
// unit: 'C',
// argCnt: 2,
// rowStat: null,
// };
// return newObj;
// });
// },
// {
// comId: 'COM002',
// gdIdxId: 'GD002',
// gdIdxNm: '습도 가이드',
// eqpmGrpId: 'EQ002',
// upTotMeth: 'MAX',
// sortSeq: 2,
// pysclQtyId1: 'HUMID',
// pysclQtyId2: null,
// pysclQtyId3: null,
// pysclQtyId4: null,
// ctgr1: '환경',
// ctgr2: '외부',
// careStndVal: 30,
// warnStndVal: 60,
// gdMeth: '수동',
// useFg: '0',
// alrmMsg: '습도가 기준치를 초과했습니다.',
// calcProc: 'PROC002',
// calcDesc: '최대값 계산',
// calcMeth: 'MAX(A,B)',
// unit: '%',
// argCnt: 2,
// rowStat: null,
// },
// ];
res = await this.postApiReturn({
apiKey: 'selectEqpmGdIdxDataList',
resKey: 'eqpmGdIdxDataList',
sendParam: {
eqpmGrpId: this.selectValue02,
gdIdxNmLike: this.pageData.gdIdxNm,
},
});
const newRes = res.map(item => {
const newObj = {
...item,
rowStat: null,
};
return newObj;
});
this.setGridData({
gridKey: this.gridName,
value: newRes,
});
//this.loadGrid = true;
// this.$nextTick(() => {
// if (newRes.length > 0) {
// try {
// this.$refs[this.gridName].focus({
// //rowKey: 0,
// rowKey:
// this.pageData.rowGridSelectKey == '' ||
// this.pageData.rowGridSelectKey == null
// ? 0
// : this.pageData.rowGridSelectKey ==
// this.$refs[this.gridName].getData().length - 1
// ? this.pageData.rowGridSelectKey
// : 0,
// columnName: 'gdIdxId',
// setScroll: true,
// });
// } catch (error) { }
// } else {
// this.detailDataInit();
// }
// });
this.$nextTick(() => {
if (newRes.length > 0) {
try {
this.$refs[this.gridName].focus({
//rowKey: 0,
rowKey:
this.pageData.rowGridSelectKey == '' ||
this.pageData.rowGridSelectKey == null
? 0
: this.pageData.rowGridSelectKey ==
this.$refs[this.gridName].getData().length - 1
? this.pageData.rowGridSelectKey
: 0,
columnName: 'gdIdxId',
setScroll: true,
});
} catch (error) { }
} else {
this.detailDataInit();
}
});
this.loadGrid = true;
},
async getRowData(data) {

View File

@ -1,6 +1,7 @@
<template>
<div ref="mainDiv" class="l-layout">
<v-row ref="searchFilter">
<common-page-title />
<v-row ref="searchFilter" class="mt-2">
<v-col :cols="12">
<v-card class="searchFilter">
<v-row align="end" no-gutters>
@ -29,7 +30,7 @@
</v-card>
</v-col>
</v-row>
<v-row ref="contents" class="mt-4">
<v-row ref="contents" class="mt-3">
<v-col :cols="12" style="height: 100%">
<!-- <v-card class="py-5"> -->
<v-card style="height: 60%">
@ -115,8 +116,8 @@
</v-card>
<v-row style="height: 40%" class="mt-4">
<v-col :cols="6" style="height: 100%">
<v-row style="height: 40%" class="mt-3">
<v-col :cols="6" style="height: 100%" class="pr-2">
<v-card class="pb-5">
<div class="d-flex align-center justify-space-between pa-4">
<v-card-title class="pa-0 custom-title-4 ">설비상세 리스트</v-card-title>
@ -126,12 +127,12 @@
<div ref="gridParent" class="w100 h100">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
:dataPath="dataPathExample" />
/>
</div>
</div>
</v-card>
</v-col>
<v-col :cols="6" style="height: 100%">
<v-col :cols="6" style="height: 100%" class="pl-2">
<v-card class="pb-5">
<div class="d-flex align-center justify-space-between pa-4">
<v-card-title class="pa-0 custom-title-4">설비가이드 기준 정보</v-card-title>
@ -201,7 +202,7 @@ export default {
readonlyFg: true,
initedFlag: false,
gridName: 'rowGrid',
loadGrid: true,
loadGrid: false,
detailList: myDetail,
selectValue01: null,
selectValueList01: [],
@ -209,62 +210,62 @@ export default {
selectValueList02: [],
selectValue03: null,
selectValueList03: [],
dataPathExample: {
"rowGrid": {
data: [
// dataPathExample: {
// "rowGrid": {
// data: [
{
eqpmId: 'EQ001',
originEqpmId: 'ORIG001',
eqpmNm: '냉각기 A',
careStndVal: 75,
warnStndVal: 90,
},
{
eqpmId: 'EQ002',
originEqpmId: 'ORIG002',
eqpmNm: '펌프 B',
careStndVal: 60,
warnStndVal: 80,
},
{
eqpmId: 'EQ003',
originEqpmId: 'ORIG003',
eqpmNm: '모터 C',
careStndVal: 50,
warnStndVal: 70,
},
{
eqpmId: 'EQ004',
originEqpmId: 'ORIG004',
eqpmNm: '밸브 D',
careStndVal: 65,
warnStndVal: 85,
},
{
eqpmId: 'EQ005',
originEqpmId: 'ORIG005',
eqpmNm: '컨트롤러 E',
careStndVal: 55,
warnStndVal: 75,
},
// {
// eqpmId: 'EQ001',
// originEqpmId: 'ORIG001',
// eqpmNm: '냉각기 A',
// careStndVal: 75,
// warnStndVal: 90,
// },
// {
// eqpmId: 'EQ002',
// originEqpmId: 'ORIG002',
// eqpmNm: '펌프 B',
// careStndVal: 60,
// warnStndVal: 80,
// },
// {
// eqpmId: 'EQ003',
// originEqpmId: 'ORIG003',
// eqpmNm: '모터 C',
// careStndVal: 50,
// warnStndVal: 70,
// },
// {
// eqpmId: 'EQ004',
// originEqpmId: 'ORIG004',
// eqpmNm: '밸브 D',
// careStndVal: 65,
// warnStndVal: 85,
// },
// {
// eqpmId: 'EQ005',
// originEqpmId: 'ORIG005',
// eqpmNm: '컨트롤러 E',
// careStndVal: 55,
// warnStndVal: 75,
// },
],
column: [
{ header: '설비', name: 'eqpmId', align: 'left' },
{
header: 'origin설비',
name: 'originEqpmId',
align: 'center',
hidden: true,
},
{ header: '설비명', name: 'eqpmNm', align: 'left' },
{ header: '주의기준', name: 'careStndVal', align: 'right' },
{ header: '심각기준', name: 'warnStndVal', align: 'right' },
]
// ],
// column: [
// { header: '설비', name: 'eqpmId', align: 'left' },
// {
// header: 'origin설비',
// name: 'originEqpmId',
// align: 'center',
// hidden: true,
// },
// { header: '설비명', name: 'eqpmNm', align: 'left' },
// { header: '주의기준', name: 'careStndVal', align: 'right' },
// { header: '심각기준', name: 'warnStndVal', align: 'right' },
// ]
}
}
// }
// }
};
},
computed: {
@ -408,6 +409,10 @@ export default {
columnOptions: {
resizable: true,
},
header: {
height: 37,
},
rowHeight: 'auto',
};
this.setGridOption({
gridKey: this.gridName,
@ -511,69 +516,69 @@ export default {
this.loadGrid = false;
let res = [];
// if (this.selectValue01 && this.selectValue02 && this.selectValue03) {
// res = await this.postApiReturn({
// apiKey: 'selectEqpmGdDetl',
// resKey: 'eqpmGdDetlData',
// sendParam: {
// gdIdxId: this.selectValue03,
// },
// });
// }
if (this.selectValue01 && this.selectValue02 && this.selectValue03) {
res = await this.postApiReturn({
apiKey: 'selectEqpmGdDetl',
resKey: 'eqpmGdDetlData',
sendParam: {
gdIdxId: this.selectValue03,
},
});
}
// // grid에서 eqpmId를 기억해서 popup에서 중복되는 값을 제거하는데 사용하기위해 저장 - 시작
// let eqpmIdList = res.map(item => {
// return item.eqpmId;
// });
// this.setPageData({ nowGridEqpmIdList: eqpmIdList });
// // grid에서 eqpmId를 기억해서 popup에서 중복되는 값을 제거하는데 사용하기위해 저장 - 끝
// const newRes = res.map(item => {
// const newObj = {
// ...item,
// rowStat: null,
// };
// return newObj;
// });
const newRes = [
// grid에서 eqpmId를 기억해서 popup에서 중복되는 값을 제거하는데 사용하기위해 저장 - 시작
let eqpmIdList = res.map(item => {
return item.eqpmId;
});
this.setPageData({ nowGridEqpmIdList: eqpmIdList });
// grid에서 eqpmId를 기억해서 popup에서 중복되는 값을 제거하는데 사용하기위해 저장 - 끝
const newRes = res.map(item => {
const newObj = {
...item,
rowStat: null,
};
return newObj;
});
// const newRes = [
{
eqpmId: 'EQ001',
originEqpmId: 'ORIG001',
eqpmNm: '냉각기 A',
careStndVal: 75,
warnStndVal: 90,
},
{
eqpmId: 'EQ002',
originEqpmId: 'ORIG002',
eqpmNm: '펌프 B',
careStndVal: 60,
warnStndVal: 80,
},
{
eqpmId: 'EQ003',
originEqpmId: 'ORIG003',
eqpmNm: '모터 C',
careStndVal: 50,
warnStndVal: 70,
},
{
eqpmId: 'EQ004',
originEqpmId: 'ORIG004',
eqpmNm: '밸브 D',
careStndVal: 65,
warnStndVal: 85,
},
{
eqpmId: 'EQ005',
originEqpmId: 'ORIG005',
eqpmNm: '컨트롤러 E',
careStndVal: 55,
warnStndVal: 75,
},
// {
// eqpmId: 'EQ001',
// originEqpmId: 'ORIG001',
// eqpmNm: '냉각기 A',
// careStndVal: 75,
// warnStndVal: 90,
// },
// {
// eqpmId: 'EQ002',
// originEqpmId: 'ORIG002',
// eqpmNm: '펌프 B',
// careStndVal: 60,
// warnStndVal: 80,
// },
// {
// eqpmId: 'EQ003',
// originEqpmId: 'ORIG003',
// eqpmNm: '모터 C',
// careStndVal: 50,
// warnStndVal: 70,
// },
// {
// eqpmId: 'EQ004',
// originEqpmId: 'ORIG004',
// eqpmNm: '밸브 D',
// careStndVal: 65,
// warnStndVal: 85,
// },
// {
// eqpmId: 'EQ005',
// originEqpmId: 'ORIG005',
// eqpmNm: '컨트롤러 E',
// careStndVal: 55,
// warnStndVal: 75,
// },
]
// ]
this.setGridData({
gridKey: this.gridName,
value: newRes,

View File

@ -73,10 +73,8 @@
:is="loadGrid ? 'Grid' : null"
:gridName="gridName"
:parentPrgmId="myPrgmId"
:dataPath="dataPathMock"
/>
</div>
</v-card>
</v-col>
</v-row>
@ -154,53 +152,6 @@ export default {
required: false,
formFg: false,
},
dataPathMock: {
"rowGrid": {
column: [
{
header: 'TAG ID',
name: 'tagId',
minWidth: 500,
},
{
header: 'TAG명',
name: 'tagNm',
},
{
header: '대상일시',
name: 'readDttm',
align:"center",
width: 200,
},
{
header: '값',
name: 'readVal',
width: 100,
align:"center"
},
{
header: '취득일시',
name: 'regDttm',
width: 200,
align:"center"
},
{
header: '적재일시',
name: 'procDttm',
width: 200,
align:"center"
},
],
data: dataPathDataExample,
defaultRow: dataPathDataExample,
option: {
pageOptions: {
useClient: true,
perPage: 10,
},
}
}
},
};
},
computed: {
@ -316,13 +267,15 @@ export default {
columnOptions: {
resizable: true,
},
header: {
height: 38,
},
};
this.setGridOption({
gridKey: this.gridName,
value: Object.assign(Utility.defaultGridOption(gridHeight), myOptions),
});
let myColumns = [
{
header: 'TAG ID',
@ -569,13 +522,4 @@ const defaultData = {
},
},
};
import { getPathDataExample } from '@/const/const'
const dataPathDataExample = getPathDataExample({
"tagId": "ICHEON.ELEC.EQID101.VCB_111A_ACC_WH_PV",
"tagNm": "ICHEON VCB_111A 적산 전력",
"readDttm": "2023-01-10 00:00:00",
"readVal": "581.27",
"regDttm": "2023-01-09 15:03:08",
"procDttm": "2023-01-10 00:03:09",
});
</script>

View File

@ -1,80 +1,40 @@
<template>
<div class="l-layout">
<PageTitle/>
<v-row ref="searchFilter">
<v-col :cols="12">
<v-card class="searchFilter">
<v-row align="center" no-gutters>
<v-col :cols="3">
<!-- 사업장 -->
<component
:is="'SelectBlocMstr'"
ref="SelectBlocMstr"
:parentPrgmId="myPrgmId"
:textCols="12"
customClass="select-large"
/>
<component :is="'SelectBlocMstr'" ref="SelectBlocMstr" :parentPrgmId="myPrgmId"
:textCols="12" customClass="select-large" />
</v-col>
<v-col :cols="3">
<component
:is="'selectCodeList'"
:parentPrgmId="myPrgmId"
:label="'측정 Data 유형'"
dataKey="searchReadDataType"
:sendParam="{ commGrpCd: 'EM_READ_DATA_TYPE', useFg: '1' }"
:addAll="true"
:textCols="12"
customClass="select-large"
/>
<component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'측정 Data 유형'"
dataKey="searchReadDataType" :sendParam="{ commGrpCd: 'EM_READ_DATA_TYPE', useFg: '1' }"
:addAll="true" :textCols="12" customClass="select-large" />
</v-col>
<v-col :cols="3">
<component
:is="'SelectReadObj'"
:parentPrgmId="myPrgmId"
:label="'측정대상'"
dataKey="searchReadObj"
:sendParam="{ useFg: '1' }"
:labelCols="12"
:textCols="12"
:addAll="true"
customClass="select-large"
/>
<component :is="'SelectReadObj'" :parentPrgmId="myPrgmId" :label="'측정대상'"
dataKey="searchReadObj" :sendParam="{ useFg: '1' }" :labelCols="12" :textCols="12"
:addAll="true" customClass="select-large" />
</v-col>
</v-row>
<v-row align="end" no-gutters>
<v-col :cols="3">
<component
:is="'selectCodeList'"
:parentPrgmId="myPrgmId"
:label="'사용여부'"
dataKey="useFg"
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
:addAll="true"
:textCols="12"
customClass="select-large"
/>
<component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'사용여부'" dataKey="useFg"
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }" :addAll="true" :textCols="12"
customClass="select-large" />
</v-col>
<v-col :cols="3">
<InputText
:parentPrgmId="myPrgmId"
label="TAG ID"
valueNm="tagId"
:labelCols="12"
:textCols="12"
:searchOption="true"
customClass="input-large"
/>
<InputText :parentPrgmId="myPrgmId" label="TAG ID" valueNm="tagId" :labelCols="12"
:textCols="12" :searchOption="true" customClass="input-large" />
</v-col>
<v-col :cols="3">
<InputText
:parentPrgmId="myPrgmId"
label="TAG명"
valueNm="tagNm"
:labelCols="12"
:textCols="12"
:searchOption="true"
customClass="input-large"
/>
<InputText :parentPrgmId="myPrgmId" label="TAG명" valueNm="tagNm" :labelCols="12"
:textCols="12" :searchOption="true" customClass="input-large" />
</v-col>
<v-col :cols="3" class="d-flex align-end justify-end text-right">
<BtnSearch @click="search" size="large" />
@ -88,29 +48,14 @@
<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>
<Buttons
:parentPrgmId="myPrgmId"
:bindingData="gridName"
:detailList="detailList"
:btnActionsFnc="btnActions"
/>
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
:btnActionsFnc="btnActions" />
</v-card-title>
<v-card-actions>
<div
ref="gridParent"
class="w100"
style="height: calc(100vh - 400px)"
>
<component
:ref="gridName"
:is="loadGrid ? 'Grid' : null"
:gridName="gridName"
:parentPrgmId="myPrgmId"
@getRowsData="getRowData"
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
:selectedRowDataWatchFlag="true"
:dataPath="dataPathMock"
/>
<div ref="gridParent" class="w100" style="height: calc(100vh - 400px)">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true" />
</div>
</v-card-actions>
<!-- <div class="d-flex align-center justify-space-between">
@ -129,32 +74,16 @@
<v-card-title>TAG 상세</v-card-title>
<div class="px-5" style="height:calc(100% - 70px)">
<v-tabs v-model="tab">
<v-tab
v-for="item in items"
:key="item.id"
:disabled="item.disabledFlag"
>
<v-tab v-for="item in items" :key="item.id" :disabled="item.disabledFlag">
{{ item.name }}
</v-tab>
</v-tabs>
<v-tabs-items
v-model="tab"
style="height: calc(100% - 65px);"
class="py-6"
>
<v-tabs-items v-model="tab" style="height: calc(100% - 65px);" class="py-6">
<v-tab-item v-for="(item, idx) in items" :key="item.id">
<component
v-if="item.id == 'tagBaseInfoTab'"
:is="'Form'"
:parentPrgmId="myPrgmId"
:detailList="detailList"
@gridEditingFinish="gridEditingFinish"
/>
<TagAddInfoTab
v-if="item.id == 'tagAddInfoTab'"
:parentPrgmId="myPrgmId"
:innerTabGridInfo="{ tab, idx }"
/>
<component v-if="item.id == 'tagBaseInfoTab'" :is="'Form'" :parentPrgmId="myPrgmId"
:detailList="detailList" @gridEditingFinish="gridEditingFinish" />
<TagAddInfoTab v-if="item.id == 'tagAddInfoTab'" :parentPrgmId="myPrgmId"
:innerTabGridInfo="{ tab, idx }" />
</v-tab-item>
</v-tabs-items>
</div>
@ -166,7 +95,7 @@
<script>
import { mapState, mapMutations, mapActions } from 'vuex';
import mixinGlobal from '@/mixin/global.js';
import { resize } from '@/mixin/resize.js';
import { resize } from '@/mixin/resize.js';
import BtnSearch from '~/components/common/button/BtnSearch';
import Buttons from '~/components/common/button/Buttons';
import SelectBlocMstr from '@/components/common/select/SelectBlocMstr';
@ -178,12 +107,13 @@ 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";
let myPrgmId;
export default {
mixins: [mixinGlobal,resize],
mixins: [mixinGlobal, resize],
async asyncData(context) {
const myState = context.store.state;
// context.store.commit("setActiveMenuInfo", myState.menuData[myPrgmId]);
@ -210,6 +140,7 @@ export default {
TagAddInfoTab,
Grid,
pagination,
PageTitle
},
data() {
return {
@ -223,123 +154,11 @@ export default {
],
detailList: myDetail,
alrmFg: null,
dataPathMock: {
"rowGrid": {
column: [
{ header: '회사 ID', name: 'comId', hidden: true },
{
header: 'TAG ID',
name: 'tagId',
width: 'auto',
minWidth: 340,
align: 'left',
},
{
header: 'TAG 명',
name: 'tagNm',
width: 'auto',
minWidth: 220,
align: 'left',
},
{
header: '측정 값 유형',
name: 'readDataTypeCd',
width: 90,
align: 'left',
},
{
header: '측정대상',
name: 'readObjId',
width: 100,
align: 'left',
},
{ header: '배율', name: 'mgnf', width: 80, align: 'right' },
{
header: '단위',
name: 'unitCd',
width: 80,
align: 'left',
},
{
header: '최소값',
name: 'rangMin',
width: 100,
align: 'right',
hidden: true,
},
{
header: '최대값',
name: 'rangMax',
width: 100,
align: 'right',
hidden: true,
},
{
header: '경고 상상',
name: 'alrmHihi',
width: 100,
align: 'right',
hidden: true,
},
{
header: '경고 상',
name: 'alrmHi',
width: 100,
align: 'right',
hidden: true,
},
{
header: '경고 하',
name: 'alrmLo',
width: 100,
align: 'right',
hidden: true,
},
{
header: '경고 하하',
name: 'alrmLolo',
width: 100,
align: 'right',
hidden: true,
},
{
header: '사업장',
name: 'blocId',
width: 100,
align: 'center',
hidden: true,
},
{
header: '집계 여부',
name: 'totFg',
width: 80,
align: 'center',
hidden: true,
},
{
header: '사용 여부',
name: 'useFg',
width: 80,
align: 'center',
hidden: true,
},
],
data: dataPathDataExample,
defaultRow: dataPathDataExample,
option: {
pageOptions: {
useClient: true,
perPage: 10,
},
scrollX: true
}
}
},
// itemsPerPage: 10,
// itemsPerPageArray: [10, 20, 30],
// limit: 20,
// page: 1,
// totalCount: 0,
itemsPerPage: 10,
itemsPerPageArray: [10, 20, 30],
limit: 20,
page: 1,
totalCount: 0,
};
},
computed: {
@ -456,12 +275,20 @@ export default {
this.gridInit();
},
gridInit() {
const gridHeight = this.$refs.gridParent.offsetHeight - 16;
const gridHeight = this.$refs.gridParent.offsetHeight - 180;
const myOptions = {
columnOptions: {
resizable: true,
},
pageOptions: {
useClient: true,
perPage: 10,
},
scrollX: true,
header: {
height: 38,
},
};
this.setGridOption({
gridKey: this.gridName,
@ -700,16 +527,16 @@ export default {
//rowKey: 0,
rowKey:
this.pageData.rowGridSelectKey == '' ||
this.pageData.rowGridSelectKey == null
this.pageData.rowGridSelectKey == null
? 0
: this.pageData.rowGridSelectKey ==
this.$refs[this.gridName].getData().length - 1
? this.pageData.rowGridSelectKey
: 0,
this.$refs[this.gridName].getData().length - 1
? this.pageData.rowGridSelectKey
: 0,
columnName: 'tagId',
setScroll: true,
});
} catch (error) {}
} catch (error) { }
// this.$refs[this.gridName].focus({
// rowKey: 0,
// columnName: "tagId",
@ -946,7 +773,7 @@ export default {
gridEditingFinish(data) {
this.$refs[this.gridName].editingFinish(data);
},
changeGrid: async function(pageNum, limit) {
changeGrid: async function (pageNum, limit) {
this.page = pageNum;
this.limit = limit;
@ -990,9 +817,9 @@ function isValidAlrmVal(obj) {
if (Number(obj[keyList[i]]) >= Number(obj[keyList[j]])) {
alert(
nameList[j] +
'값은 ' +
nameList[i] +
'값보다 큰 숫자를 입력해야 합니다.',
'값은 ' +
nameList[i] +
'값보다 큰 숫자를 입력해야 합니다.',
);
return false;
}
@ -1094,7 +921,7 @@ const myDetail = [
label: 'TAG ID',
valueNm: 'tagId',
disabled: false,
iconShow:true,
iconShow: true,
cols: 6,
class: 'py-2 pr-4',
required: false,
@ -1106,7 +933,7 @@ const myDetail = [
label: 'TAG 명',
valueNm: 'tagNm',
disabled: false,
iconShow:true,
iconShow: true,
cols: 6,
class: 'py-2 pl-4',
required: false,
@ -1118,7 +945,7 @@ const myDetail = [
label: '측정 값 유형',
valueNm: 'readDataTypeCd',
disabled: false,
iconShow:true,
iconShow: true,
cols: 6,
class: 'py-2 pr-4 pt-5',
list: 'readDataTypeCdList',
@ -1139,7 +966,7 @@ const myDetail = [
itemText: 'readObjNm',
itemValue: 'readObjId',
required: true,
iconShow:true,
iconShow: true,
labelCols: 12,
textCols: 12,
},
@ -1151,7 +978,7 @@ const myDetail = [
cols: 6,
class: 'py-2 pr-4 pt-5',
required: true,
iconShow:true,
iconShow: true,
labelCols: 12,
textCols: 12,
},
@ -1165,7 +992,7 @@ const myDetail = [
list: 'unitCdList',
itemText: 'commCdNm',
itemValue: 'commCd',
iconShow:true,
iconShow: true,
labelCols: 12,
textCols: 12,
},
@ -1176,7 +1003,7 @@ const myDetail = [
disabled: false,
cols: 6,
class: 'py-2 pr-4 pt-5',
iconShow:true,
iconShow: true,
labelCols: 12,
textCols: 12,
},
@ -1187,7 +1014,7 @@ const myDetail = [
disabled: false,
cols: 6,
class: 'py-2 pl-4 pt-5',
iconShow:true,
iconShow: true,
labelCols: 12,
textCols: 12,
},
@ -1198,7 +1025,7 @@ const myDetail = [
disabled: false,
cols: 6,
class: 'py-2 pr-4 pt-5',
iconShow:true,
iconShow: true,
labelCols: 12,
textCols: 12,
},
@ -1209,7 +1036,7 @@ const myDetail = [
disabled: false,
cols: 6,
class: 'py-2 pl-4 pt-5',
iconShow:true,
iconShow: true,
labelCols: 12,
textCols: 12,
},
@ -1220,7 +1047,7 @@ const myDetail = [
disabled: false,
cols: 6,
class: 'py-2 pr-4 pt-5',
iconShow:true,
iconShow: true,
labelCols: 12,
textCols: 12,
},
@ -1231,7 +1058,7 @@ const myDetail = [
disabled: false,
cols: 6,
class: 'py-2 pl-4 pt-5',
iconShow:true,
iconShow: true,
labelCols: 12,
textCols: 12,
},
@ -1243,7 +1070,7 @@ const myDetail = [
cols: 6,
class: 'py-2 pr-4 pt-5',
value: { '1': true, '0': false },
iconShow:true,
iconShow: true,
labelCols: 12,
textCols: 12,
},
@ -1256,7 +1083,7 @@ const myDetail = [
class: 'py-2 pl-4 pt-5',
value: { '1': true, '0': false },
required: false,
iconShow:true,
iconShow: true,
labelCols: 12,
textCols: 12,
},
@ -1285,25 +1112,4 @@ const myDetail = [
class: 'py-2',
},
];
import { getPathDataExample } from '@/const/const'
const dataPathDataExample = getPathDataExample({
"comId": "",
"tagId": "INCHEON.ELEC.EQID.VCB_111A_ACCWH_PV",
"tagNm": "ICHEON VCB_111A - 적산 전력",
"readDataTypeCd": "적산",
"readObjId": "적산",
"mgnf": "적산",
"unitCd":"적산",
"rangMin":"1",
"rangMax":"10",
"alrmHihi":"1",
"alrmHi":"10",
"alrmLo":"1",
"alrmLolo":"10",
"blocId":"1",
"totFg":"1",
"useFg":"1",
});
</script>

View File

@ -44,7 +44,7 @@
<div class="px-5" style="min-height:calc(100% - 76px)">
<div ref="gridParent" class="w100 h100">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
@getRowsData="getRowData" @sendSelectedRowStatInfo="getSelectedRowStatInfo" :dataPath="dataPathMock"
@getRowsData="getRowData" @sendSelectedRowStatInfo="getSelectedRowStatInfo"
:selectedRowDataWatchFlag="true" />
</div>
</div>

View File

@ -66,9 +66,14 @@
</div>
<div class="px-4" style="height:calc(100% - 76px)">
<div ref="gridParent" class="w100 h100">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="myPrgmId" :columnClickEventFlag="true" @columnClick="columnClick"
:dataPath="dataPathExample" />
<component
:ref="gridName"
:is="loadGrid ? 'Grid' : null"
:gridName="gridName"
:parentPrgmId="myPrgmId"
:columnClickEventFlag="true"
@columnClick="columnClick"
/>
</div>
</div>
</v-card>
@ -141,442 +146,8 @@ export default {
selectValueList05: [],
selectValueList06: [],
initedFlag: false,
loadGrid: true,
loadGrid: false,
gridName: 'rowGrid',
dataPathExample: {
"rowGrid": {
data: [
{
"no": 1,
"fabNm": "B02",
"eqpmGrpNm": "ETCH Group",
"eqpmId": "EQ028",
"eqpmNm": "DEP D78",
"gdIdxId": "GD004",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 34,
"warnStndVal": 56,
"totVal": 30,
"okFg": "주의",
"gdMeth": "Adjust pad pressure",
"ngCnt": 0
},
{
"no": 2,
"fabNm": "C01",
"eqpmGrpNm": "DEP Group",
"eqpmId": "EQ003",
"eqpmNm": "PHOTO P34",
"gdIdxId": "GD028",
"gdIdxNm": "Exposure Time Guide",
"careStndVal": 40,
"warnStndVal": 53,
"totVal": 48,
"okFg": "주의",
"gdMeth": "Tune RF power",
"ngCnt": 7
},
{
"no": 3,
"fabNm": "C01",
"eqpmGrpNm": "CMP Group",
"eqpmId": "EQ012",
"eqpmNm": "CMP C56",
"gdIdxId": "GD016",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 31,
"warnStndVal": 34,
"totVal": 44,
"okFg": "양호",
"gdMeth": "Change exposure time",
"ngCnt": 6
},
{
"no": 4,
"fabNm": "D01",
"eqpmGrpNm": "ETCH Group",
"eqpmId": "EQ016",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD004",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 33,
"warnStndVal": 40,
"totVal": 56,
"okFg": "주의",
"gdMeth": "Modify gas flow",
"ngCnt": 2
},
{
"no": 5,
"fabNm": "C01",
"eqpmGrpNm": "DEP Group",
"eqpmId": "EQ004",
"eqpmNm": "CMP C56",
"gdIdxId": "GD008",
"gdIdxNm": "Deposition Rate Guide",
"careStndVal": 33,
"warnStndVal": 44,
"totVal": 20,
"okFg": "주의",
"gdMeth": "Adjust pad pressure",
"ngCnt": 7
},
{
"no": 6,
"fabNm": "B01",
"eqpmGrpNm": "DEP Group",
"eqpmId": "EQ019",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD014",
"gdIdxNm": "Polish Rate Guide",
"careStndVal": 34,
"warnStndVal": 38,
"totVal": 46,
"okFg": "양호",
"gdMeth": "Modify gas flow",
"ngCnt": 1
},
{
"no": 7,
"fabNm": "D01",
"eqpmGrpNm": "ETCH Group",
"eqpmId": "EQ024",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD008",
"gdIdxNm": "Exposure Time Guide",
"careStndVal": 37,
"warnStndVal": 51,
"totVal": 24,
"okFg": "경고",
"gdMeth": "Modify gas flow",
"ngCnt": 10
},
{
"no": 8,
"fabNm": "D01",
"eqpmGrpNm": "DEP Group",
"eqpmId": "EQ014",
"eqpmNm": "DEP D78",
"gdIdxId": "GD023",
"gdIdxNm": "Deposition Rate Guide",
"careStndVal": 22,
"warnStndVal": 49,
"totVal": 43,
"okFg": "주의",
"gdMeth": "Change exposure time",
"ngCnt": 6
},
{
"no": 9,
"fabNm": "C01",
"eqpmGrpNm": "DEP Group",
"eqpmId": "EQ001",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD022",
"gdIdxNm": "Polish Rate Guide",
"careStndVal": 20,
"warnStndVal": 24,
"totVal": 51,
"okFg": "경고",
"gdMeth": "Modify gas flow",
"ngCnt": 9
},
{
"no": 10,
"fabNm": "D01",
"eqpmGrpNm": "CMP Group",
"eqpmId": "EQ027",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD002",
"gdIdxNm": "Deposition Rate Guide",
"careStndVal": 27,
"warnStndVal": 46,
"totVal": 60,
"okFg": "양호",
"gdMeth": "Modify gas flow",
"ngCnt": 4
},
{
"no": 11,
"fabNm": "C01",
"eqpmGrpNm": "PHOTO Group",
"eqpmId": "EQ004",
"eqpmNm": "CMP C56",
"gdIdxId": "GD025",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 30,
"warnStndVal": 58,
"totVal": 28,
"okFg": "경고",
"gdMeth": "Modify gas flow",
"ngCnt": 3
},
{
"no": 12,
"fabNm": "D01",
"eqpmGrpNm": "ETCH Group",
"eqpmId": "EQ022",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD024",
"gdIdxNm": "Polish Rate Guide",
"careStndVal": 27,
"warnStndVal": 42,
"totVal": 62,
"okFg": "양호",
"gdMeth": "Adjust pad pressure",
"ngCnt": 0
},
{
"no": 13,
"fabNm": "C01",
"eqpmGrpNm": "ETCH Group",
"eqpmId": "EQ018",
"eqpmNm": "PHOTO P34",
"gdIdxId": "GD013",
"gdIdxNm": "Exposure Time Guide",
"careStndVal": 32,
"warnStndVal": 35,
"totVal": 62,
"okFg": "양호",
"gdMeth": "Change exposure time",
"ngCnt": 5
},
{
"no": 14,
"fabNm": "D01",
"eqpmGrpNm": "CMP Group",
"eqpmId": "EQ017",
"eqpmNm": "DEP D78",
"gdIdxId": "GD005",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 36,
"warnStndVal": 47,
"totVal": 39,
"okFg": "경고",
"gdMeth": "Tune RF power",
"ngCnt": 10
},
{
"no": 15,
"fabNm": "D01",
"eqpmGrpNm": "DEP Group",
"eqpmId": "EQ025",
"eqpmNm": "DEP D78",
"gdIdxId": "GD028",
"gdIdxNm": "Deposition Rate Guide",
"careStndVal": 36,
"warnStndVal": 59,
"totVal": 63,
"okFg": "양호",
"gdMeth": "Adjust pad pressure",
"ngCnt": 1
},
{
"no": 16,
"fabNm": "B02",
"eqpmGrpNm": "PHOTO Group",
"eqpmId": "EQ026",
"eqpmNm": "PHOTO P34",
"gdIdxId": "GD008",
"gdIdxNm": "Exposure Time Guide",
"careStndVal": 24,
"warnStndVal": 59,
"totVal": 20,
"okFg": "양호",
"gdMeth": "Change exposure time",
"ngCnt": 1
},
{
"no": 17,
"fabNm": "B01",
"eqpmGrpNm": "DEP Group",
"eqpmId": "EQ023",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD021",
"gdIdxNm": "Polish Rate Guide",
"careStndVal": 26,
"warnStndVal": 51,
"totVal": 31,
"okFg": "주의",
"gdMeth": "Modify gas flow",
"ngCnt": 2
},
{
"no": 18,
"fabNm": "B02",
"eqpmGrpNm": "PHOTO Group",
"eqpmId": "EQ012",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD023",
"gdIdxNm": "Polish Rate Guide",
"careStndVal": 34,
"warnStndVal": 45,
"totVal": 64,
"okFg": "경고",
"gdMeth": "Change exposure time",
"ngCnt": 1
},
{
"no": 19,
"fabNm": "B01",
"eqpmGrpNm": "PHOTO Group",
"eqpmId": "EQ018",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD002",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 30,
"warnStndVal": 31,
"totVal": 51,
"okFg": "주의",
"gdMeth": "Tune RF power",
"ngCnt": 2
},
{
"no": 20,
"fabNm": "C01",
"eqpmGrpNm": "CMP Group",
"eqpmId": "EQ018",
"eqpmNm": "CMP C56",
"gdIdxId": "GD021",
"gdIdxNm": "Exposure Time Guide",
"careStndVal": 30,
"warnStndVal": 51,
"totVal": 45,
"okFg": "양호",
"gdMeth": "Change exposure time",
"ngCnt": 7
},
{
"no": 21,
"fabNm": "B01",
"eqpmGrpNm": "CMP Group",
"eqpmId": "EQ021",
"eqpmNm": "CMP C56",
"gdIdxId": "GD001",
"gdIdxNm": "Deposition Rate Guide",
"careStndVal": 23,
"warnStndVal": 42,
"totVal": 40,
"okFg": "주의",
"gdMeth": "Tune RF power",
"ngCnt": 5
}
]
,
column: [
{
header: 'No.',
name: 'no',
align: 'right',
width: 30,
},
{
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: 100,
},
],
option: {
// pageOptions: {
// useClient: true,
// perPage: 10,
// },
// scrollX: false,
scrollY: true
}
// pageOptions: {
// useClient: true,
// perPage: 10,
// },
// scrollX: false,
// scrollY: false
},
// pageOptions: {
// useClient: true,
// perPage: 10,
// },
// scrollX: true,
// scrollY: false
},
popDialog: false,
eqpmFlag: false,
eqpmKindFlag: false,
@ -667,7 +238,7 @@ export default {
});
this.selectValue04 = { eqpmId: [] };
await this.getEqpmGrp();
// await this.getEqpm(this.selectValueList03);
await this.getEqpm(this.selectValueList03);
}
},
async selectValue03(val) {
@ -789,7 +360,7 @@ export default {
} else {
this.setFromDt();
}
// await this.gridInit();
await this.gridInit();
},
async search() {
await this.getRowGridData();
@ -806,75 +377,69 @@ export default {
// this.pageData.toDt = Utility.setAftertDate(this.pageData, this.pageData.fromDt, "YYYYMMDD");
},
async getEqpmKind() {
// let res = await this.postApiReturn({
// apiKey: 'selectEqpmKindCodeList',
// resKey: 'eqpmKindCodeLists',
// sendParam: {},
// });
// if (res.length > 0) {
// this.selectValueList01 = await res.map(item => {
// return {
// text: item.eqpmKindNm,
// value: item.eqpmKindId,
// };
// });
// this.selectValueList01.unshift({
// text: '전체',
// value: null,
// });
// if (
// this.routeData.eqpmKindId == null ||
// this.routeData.eqpmKindId == ''
// ) {
// this.selectValue01 = this.selectValueList01[0].value;
// } else if (
// this.routeData.eqpmKindId != null ||
// this.routeData.eqpmKindId != ''
// ) {
// this.selectValue01 = this.routeData.eqpmKindId;
// }
// } else {
// this.selectValueList01 = [];
// this.selectValue01 = null;
// }
let res = await this.postApiReturn({
apiKey: 'selectEqpmKindCodeList',
resKey: 'eqpmKindCodeLists',
sendParam: {},
});
if (res.length > 0) {
this.selectValueList01 = await res.map(item => {
return {
text: item.eqpmKindNm,
value: item.eqpmKindId,
};
});
this.selectValueList01.unshift({
text: '전체',
value: null,
});
if (
this.routeData.eqpmKindId == null ||
this.routeData.eqpmKindId == ''
) {
this.selectValue01 = this.selectValueList01[0].value;
} else if (
this.routeData.eqpmKindId != null ||
this.routeData.eqpmKindId != ''
) {
this.selectValue01 = this.routeData.eqpmKindId;
}
} else {
this.selectValueList01 = [];
this.selectValue01 = null;
}
this.setPageData({
eqpmKindList: this.selectValueList01,
eqpmKindId: this.selectValue01,
});
},
async getFab() {
// let res = await this.postApiReturn({
// apiKey: 'selectFabCodeList',
// resKey: 'fabCodeLists',
// sendParam: {},
// });
this.selectValueList02 = [
{ text: '온도 센서', value: 'ECC001' },
{ text: '압력 센서', value: 'ECC002' },
{ text: '유량 센서', value: 'ECC003' },
{ text: '습도 센서', value: 'ECC004' },
{ text: '전압 센서', value: 'ECC005' }
];
// if (res.length > 0) {
// // this.selectValueList02 = await res.map(item => {
// // return {
// // text: item.eccNm,
// // value: item.eccId,
// // };
// // });
// this.selectValueList02.unshift({
// text: '전체',
// value: null,
// });
// if (this.routeData.fabId != null && this.routeData.fabId != '') {
// this.selectValue02 = this.routeData.fabId;
// } else if (this.routeData.fabId == null || this.routeData.fabId == '') {
// this.selectValue02 = this.selectValueList02[0].value;
// }
// } else {
// this.selectValueList02 = [];
// this.selectValue02 = null;
// }
let res = await this.postApiReturn({
apiKey: 'selectFabCodeList',
resKey: 'fabCodeLists',
sendParam: {},
});
if (res.length > 0) {
this.selectValueList02 = await res.map(item => {
return {
text: item.eccNm,
value: item.eccId,
};
});
this.selectValueList02.unshift({
text: '전체',
value: null,
});
if (this.routeData.fabId != null && this.routeData.fabId != '') {
this.selectValue02 = this.routeData.fabId;
} else if (this.routeData.fabId == null || this.routeData.fabId == '') {
this.selectValue02 = this.selectValueList02[0].value;
}
} else {
this.selectValueList02 = [];
this.selectValue02 = null;
}
this.setPageData({
fabIdList: this.selectValueList02,
fabId: this.selectValue02,
@ -923,30 +488,30 @@ export default {
},
async getEqpm(data) { },
async getGdIdx() {
// let res = await this.postApiReturn({
// apiKey: 'selectEqpmGdIdxCodeList',
// resKey: 'eqpmGdIdxCodeLists',
// sendParam: {
// eqpmGrpId: this.selectValue03,
// },
// });
let res = await this.postApiReturn({
apiKey: 'selectEqpmGdIdxCodeList',
resKey: 'eqpmGdIdxCodeLists',
sendParam: {
eqpmGrpId: this.selectValue03,
},
});
// if (res.length > 0) {
// this.selectValueList05 = await res.map(item => {
// return {
// text: item.gdIdxNm,
// value: item.gdIdxId,
// };
// });
// this.selectValueList05.unshift({
// text: '전체',
// value: null,
// });
// this.selectValue05 = this.selectValueList05[0].value;
// } else {
// this.selectValueList05 = [];
// this.selectValue05 = null;
// }
if (res.length > 0) {
this.selectValueList05 = await res.map(item => {
return {
text: item.gdIdxNm,
value: item.gdIdxId,
};
});
this.selectValueList05.unshift({
text: '전체',
value: null,
});
this.selectValue05 = this.selectValueList05[0].value;
} else {
this.selectValueList05 = [];
this.selectValue05 = null;
}
this.setPageData({
gdIdxIdList: this.selectValueList05,
@ -987,6 +552,10 @@ export default {
resizable: true,
},
rowHeaders: ['rowNum'],
header: {
height: 37,
},
rowHeight: 'auto',
// pageOptions: {
@ -1130,27 +699,27 @@ export default {
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,
// },
// });
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,
// },
// });
this.setPageData({
rowGridSelectKey: e.rowKey,
rowGridSelectData: {
...data,
fromDt: this.pageData.fromDt,
toDt: this.pageData.toDt,
},
});
}
},
},

View File

@ -266,8 +266,8 @@ export default {
},
created() { },
async mounted() {
console.log('----DEBUG---');
await this.initTest();
// console.log('----DEBUG---');
// await this.initTest();
// End Debug Test---
await this.init();
this.initedFlag = true;

View File

@ -275,11 +275,11 @@ export default {
}
}
.v-btn {
@if $theme == dark {
background-color: #18579e;
} @else {
background-color: #3f4d7d;
}
// @if $theme == dark {
// background-color: #18579e;
// } @else {
// background-color: #3f4d7d;
// }
}
}
}

View File

@ -10,6 +10,7 @@ import icoBulletPoint from '~/components/icons/icoBulletPoint';
import icoChevronDown from '~/components/icons/icoChevronDown';
import icoSearch from '~/components/icons/icoSearch';
import icoSend from '~/components/icons/icoSend';
import icoExpandAlt from '~/components/icons/icoExpandAlt';
import '@mdi/font/css/materialdesignicons.css'; // Ensure you are using css-loader
import 'material-design-icons-iconfont/dist/material-design-icons.css';
import Vue from 'vue';
@ -73,6 +74,9 @@ export default new Vuetify({
icoSend: {
component: icoSend,
},
icoExpandAlt: {
component: icoExpandAlt,
},
},
},
});

View File

@ -48,555 +48,10 @@ export const actions = {
// params
// );
// console.log(res);
// const list = res.data.dataset.menuList;
const list = [
{
comId: 'd12',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'dashboardfirst', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'menu', // UP_MENU_ID (상위메뉴ID)
menuNm: '모니터링',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
},
{
comId: 'd34',
sysDivCd: 'abc', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0001', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '1. Dashboard',// MENU_NM (메뉴명)
sortSeq: 888, // SORT_SEQ (정렬순서)
useFg: 'abc',// USE_FG (사용여부)
rmrk: 'abc',
url: 'ems/base/DashboardPage',
lvl: 1
},
{
comId: 'd100',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'menu2', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '에너지 사용량',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
lvl: 1
},
{
comId: 'd44',
sysDivCd: 'enrguplan', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0002', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '2. Establish energy consumption plans',// MENU_NM (메뉴명)
sortSeq: 888, // SORT_SEQ (정렬순서)
useFg: 'enrguplan',// USE_FG (사용여부)
rmrk: 'enrguplan',
url: 'ems/effc/EnrgUsePlanPage',
lvl: 1
},
{
comId: 'd35',
sysDivCd: 'energyusage', //시스템구분
menuId: 'children2', // MENU_ID (메뉴ID)
prgmId: 'PRG0080', // PRGM_ID (프로그램ID)
upMenuId: 'menu2', // UP_MENU_ID (상위메뉴ID)
menuNm: '3. Energy usage',// MENU_NM (메뉴명)
sortSeq: 5555, // SORT_SEQ (정렬순서)
useFg: 'energyusage',// USE_FG (사용여부)
rmrk: 'energyusage',
url: 'ems/effc/EnrgUseTotSummPage',
lvl: 1
},
{
comId: 'd60',
sysDivCd: 'energyperformance', //시스템구분
menuId: 'children2', // MENU_ID (메뉴ID)
prgmId: 'PRG0081', // PRGM_ID (프로그램ID)
upMenuId: 'menu2', // UP_MENU_ID (상위메뉴ID)
menuNm: '4. 에너지 사용량 실적',// MENU_NM (메뉴명)
sortSeq: 5555, // SORT_SEQ (정렬순서)
useFg: 'energyperformance',// USE_FG (사용여부)
rmrk: 'energyperformance',
url: 'ems/effc/EqpmIndMntrPage',
lvl: 1
},
{
comId: 'd69',
sysDivCd: 'MNU0104', //시스템구분
menuId: 'MNU0091', // MENU_ID (메뉴ID)
prgmId: 'PRG0082', // PRGM_ID (프로그램ID)
upMenuId: 'menu2', // UP_MENU_ID (상위메뉴ID)
menuNm: '5. Energy Use Equipment',// MENU_NM (메뉴명)
sortSeq: 5562, // SORT_SEQ (정렬순서)
useFg: 'enrgUseEqpm',// USE_FG (사용여부)
rmrk: 'enrgUseEqpm',
url: 'ems/effc/EnrgUseEqpmDetlMntrPage',
lvl: 1
},
{
comId: 'd351',
sysDivCd: 'energy effc', //시스템구분
menuId: 'MNU0116', // MENU_ID (메뉴ID)
prgmId: 'PRG0083', // PRGM_ID (프로그램ID)
upMenuId: 'menu2', // UP_MENU_ID (상위메뉴ID)
menuNm: '6. Today efficiency status',// MENU_NM (메뉴명)
sortSeq: 5554, // SORT_SEQ (정렬순서)
useFg: 'energy effc',// USE_FG (사용여부)
rmrk: 'energy effc',
url: 'ems/effc/EnrgEffcTotSummPage',
lvl: 1
},
{
comId: 'd48',
sysDivCd: 'energyeffc', //시스템구분
menuId: 'MNU0106', // MENU_ID (메뉴ID)
prgmId: 'PRG0084', // PRGM_ID (프로그램ID)
upMenuId: 'menu2', // UP_MENU_ID (상위메뉴ID)
menuNm: '7. Energy Efficiency Equipment',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'energyeffc',// USE_FG (사용여부)
rmrk: 'energyeffc',
url: 'ems/effc/EnrgEffcEqpmDetlMntrPage',
lvl: 1
},
{
comId: 'd336',
sysDivCd: 'engrepmng', //시스템구분
menuId: 'MNU0106', // MENU_ID (메뉴ID)
prgmId: 'PRG0908', // PRGM_ID (프로그램ID)
upMenuId: 'menu2', // UP_MENU_ID (상위메뉴ID)
menuNm: '8. 효율성 지표 보고서',// MENU_NM (메뉴명)
sortSeq: 5558, // SORT_SEQ (정렬순서)
useFg: 'engrepmng',// USE_FG (사용여부)
rmrk: 'engrepmng',
url: 'ems/effc/EnrgReptMngPage',
lvl: 1
},
{
comId: 'd100',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'menu3', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '에너지 효율운전',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
lvl: 1
},
{
comId: 'd337',
sysDivCd: 'datasetmng', //시스템구분
menuId: 'MNU0104', // MENU_ID (메뉴ID)
prgmId: 'PRG0909', // PRGM_ID (프로그램ID)
upMenuId: 'menu3', // UP_MENU_ID (상위메뉴ID)
menuNm: '9. 전기에너지 MAP',// MENU_NM (메뉴명)
sortSeq: 5556, // SORT_SEQ (정렬순서)
useFg: 'datasetmng',// USE_FG (사용여부)
rmrk: 'datasetmng',
url: 'ems/effc/EnrgMapPage',
lvl: 1
},
{
comId: 'd36',
sysDivCd: 'datasetmng', //시스템구분
menuId: 'MNU0104', // MENU_ID (메뉴ID)
prgmId: 'PRG0910', // PRGM_ID (프로그램ID)
upMenuId: 'menu3', // UP_MENU_ID (상위메뉴ID)
menuNm: '10. Dataset management',// MENU_NM (메뉴명)
sortSeq: 5557, // SORT_SEQ (정렬순서)
useFg: 'datasetmng',// USE_FG (사용여부)
rmrk: 'datasetmng',
url: 'ems/effc/DataSetMngPage',
lvl: 1
},
{
comId: 'd49',
sysDivCd: 'tagTrend', //시스템구분
menuId: 'MNU0104', // MENU_ID (메뉴ID)
prgmId: 'PRG0036', // PRGM_ID (프로그램ID)
upMenuId: 'menu3', // UP_MENU_ID (상위메뉴ID)
menuNm: '11. Tag Trend',// MENU_NM (메뉴명)
sortSeq: 5562, // SORT_SEQ (정렬순서)
useFg: 'tagTrend',// USE_FG (사용여부)
rmrk: 'tagTrend',
url: 'ems/effc/TagTrndPage',
lvl: 1
},
{
comId: 'd49',
sysDivCd: 'noticemng', //시스템구분
menuId: 'MNU0105', // MENU_ID (메뉴ID)
prgmId: 'PRG0037', // PRGM_ID (프로그램ID)
upMenuId: 'menu3', // UP_MENU_ID (상위메뉴ID)
menuNm: '12. Notices Management',// MENU_NM (메뉴명)
sortSeq: 5562, // SORT_SEQ (정렬순서)
useFg: 'noticemng',// USE_FG (사용여부)
rmrk: 'noticemng',
url: 'comm/base/NoticeMngPage',
lvl: 1
},
{
comId: 'd49',
sysDivCd: 'caalendarmng', //시스템구분
menuId: 'MNU0007', // MENU_ID (메뉴ID)
prgmId: 'PRG0033', // PRGM_ID (프로그램ID)
upMenuId: 'menu3', // UP_MENU_ID (상위메뉴ID)
menuNm: '13. Calendar Manager',// MENU_NM (메뉴명)
sortSeq: 5562, // SORT_SEQ (정렬순서)
useFg: 'caalendarmng',// USE_FG (사용여부)
rmrk: 'caalendarmng',
url: 'comm/base/CalendarMngPage',
lvl: 1
},
{
comId: 'd57',
sysDivCd: 'energyResource', //시스템구분
menuId: 'MNU0104', // MENU_ID (메뉴ID)
prgmId: 'PRG0039', // PRGM_ID (프로그램ID)
upMenuId: 'menu3', // UP_MENU_ID (상위메뉴ID)
menuNm: '14. Energy Resource',// MENU_NM (메뉴명)
sortSeq: 5567, // SORT_SEQ (정렬순서)
useFg: 'energyResource',// USE_FG (사용여부)
rmrk: 'energyResource',
url: 'ems/base/EnrgResourceCenterMngPage',
lvl: 1
},
{
comId: 'd38',
sysDivCd: 'readobj', //시스템구분
menuId: 'readobj', // MENU_ID (메뉴ID)
prgmId: 'PRG0007', // PRGM_ID (프로그램ID)
upMenuId: 'menu3', // UP_MENU_ID (상위메뉴ID)
menuNm: '15. Read Object Management',// MENU_NM (메뉴명)
sortSeq: 5558, // SORT_SEQ (정렬순서)
useFg: 'readobj',// USE_FG (사용여부)
rmrk: 'readobj',
url: 'ems/base/ReadObjectMngPage',
lvl: 1
},
{
comId: 'd100',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'menu4', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '에너지 보고서',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
lvl: 1
},
{
comId: 'd48',
sysDivCd: 'energyread', //시스템구분
menuId: 'MNU0007', // MENU_ID (메뉴ID)
prgmId: 'PRG0011', // PRGM_ID (프로그램ID)
upMenuId: 'menu4', // UP_MENU_ID (상위메뉴ID)
menuNm: '16. Meter Reading',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'energyread',// USE_FG (사용여부)
rmrk: 'energyread',
url: 'ems/base/EnrgReadPlaceMngPage',
lvl: 1
},
{
comId: 'd39',
sysDivCd: 'energycost', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0008', // PRGM_ID (프로그램ID)
upMenuId: 'menu4', // UP_MENU_ID (상위메뉴ID)
menuNm: '17. Process',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'energycost',// USE_FG (사용여부)
rmrk: 'energycost',
url: 'ems/base/EnrgCostCenterMngPage',
lvl: 1
},
{
comId: 'd39',
sysDivCd: 'equipmenttype', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0013', // PRGM_ID (프로그램ID)
upMenuId: 'menu4', // UP_MENU_ID (상위메뉴ID)
menuNm: '18. Type of Equipment',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'equipmenttype',// USE_FG (사용여부)
rmrk: 'equipmenttype',
url: 'ems/base/EqpmKindPage',
lvl: 1
},
{
comId: 'd39',
sysDivCd: 'equipmentgroup', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0014', // PRGM_ID (프로그램ID)
upMenuId: 'menu4', // UP_MENU_ID (상위메뉴ID)
menuNm: '19. Facility Group',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'equipmentgroup',// USE_FG (사용여부)
rmrk: 'equipmentgroup',
url: 'ems/base/EquipmentGroupMngPage',
lvl: 1
},
{
comId: 'd46',
sysDivCd: 'equipmentmaster', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0920', // PRGM_ID (프로그램ID)
upMenuId: 'menu4', // UP_MENU_ID (상위메뉴ID)
menuNm: '20. Equipment Master Management',// MENU_NM (메뉴명)
sortSeq: 5557, // SORT_SEQ (정렬순서)
useFg: 'equipmentmaster',// USE_FG (사용여부)
rmrk: 'equipmentmaster',
url: 'ems/base/EquipmentMasterMngPage',
lvl: 1
},
{
comId: 'd46',
sysDivCd: 'tags', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0921', // PRGM_ID (프로그램ID)
upMenuId: 'menu4', // UP_MENU_ID (상위메뉴ID)
menuNm: '21. Tags',// MENU_NM (메뉴명)
sortSeq: 5557, // SORT_SEQ (정렬순서)
useFg: 'tags',// USE_FG (사용여부)
rmrk: 'tags',
url: 'ems/base/TagMngPage_Pagination',
lvl: 1
},
{
comId: 'd48',
sysDivCd: 'pysclqty', //시스템구분
menuId: 'MNU0007', // MENU_ID (메뉴ID)
prgmId: 'PRG0075', // PRGM_ID (프로그램ID)
upMenuId: 'menu4', // UP_MENU_ID (상위메뉴ID)
menuNm: '22. Physical quantity information',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'pysclqty',// USE_FG (사용여부)
rmrk: 'pysclqty',
url: 'ems/base/EqpmGrpPysclQtyMngPage',
lvl: 1
},
{
comId: 'd100',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'menu5', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '에너지 FLOW',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
lvl: 1
},
{
comId: 'd48',
sysDivCd: 'gdidxmng', //시스템구분
menuId: 'MNU0007', // MENU_ID (메뉴ID)
prgmId: 'PRG0076', // PRGM_ID (프로그램ID)
upMenuId: 'menu5', // UP_MENU_ID (상위메뉴ID)
menuNm: '23. Guided Indicators',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'gdidxmng',// USE_FG (사용여부)
rmrk: 'gdidxmng',
url: 'ems/base/GdIdxMngPage',
lvl: 1
},
{
comId: 'd48',
sysDivCd: 'gdstndmng', //시스템구분
menuId: 'MNU0007', // MENU_ID (메뉴ID)
prgmId: 'PRG0077', // PRGM_ID (프로그램ID)
upMenuId: 'menu5', // UP_MENU_ID (상위메뉴ID)
menuNm: '24. Guidelines',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'gdigdstndmngdxmng',// USE_FG (사용여부)
rmrk: 'gdstndmng',
url: 'ems/base/GdStndMngPage',
lvl: 1
},
{
comId: 'd48',
sysDivCd: 'effcidxmng', //시스템구분
menuId: 'MNU0007', // MENU_ID (메뉴ID)
prgmId: 'PRG0012', // PRGM_ID (프로그램ID)
upMenuId: 'menu5', // UP_MENU_ID (상위메뉴ID)
menuNm: '25. Efficiency Indicators',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'effcidxmng',// USE_FG (사용여부)
rmrk: 'effcidxmng',
url: 'ems/base/EffcIdxMngPage',
lvl: 1
},
{
comId: 'd100',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'menu6', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '데이터 분석',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
lvl: 1
},
{
comId: 'd40',
sysDivCd: 'MNU0006', //시스템구분
menuId: 'addInfoMg', // MENU_ID (메뉴ID)
prgmId: 'PRG0009', // PRGM_ID (프로그램ID)
upMenuId: 'menu6', // UP_MENU_ID (상위메뉴ID)
menuNm: '26. Management of Additional Information',// MENU_NM (메뉴명)
sortSeq: 5560, // SORT_SEQ (정렬순서)
useFg: 'addInfoMg',// USE_FG (사용여부)
rmrk: 'addInfoMg',
url: 'ems/base/AddInfoMngPage',
lvl: 1
},
{
comId: 'd47',
sysDivCd: 'readresultclosemng', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0927', // PRGM_ID (프로그램ID)
upMenuId: 'menu6', // UP_MENU_ID (상위메뉴ID)
menuNm: '27. 계량 데이터 마감 관리',// MENU_NM (메뉴명)
sortSeq: 5657, // SORT_SEQ (정렬순서)
useFg: 'readresultclosemng',// USE_FG (사용여부)
rmrk: 'readresultclosemng',
url: 'ems/base/ReadResultCloseMngPage',
lvl: 1
},
{
comId: 'd47',
sysDivCd: 'pastrsltdataread', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0928', // PRGM_ID (프로그램ID)
upMenuId: 'menu6', // UP_MENU_ID (상위메뉴ID)
menuNm: '28. Metering location Data Inquiry',// MENU_NM (메뉴명)
sortSeq: 5657, // SORT_SEQ (정렬순서)
useFg: 'pastrsltdataread',// USE_FG (사용여부)
rmrk: 'pastrsltdataread',
url: 'ems/base/PastRsltDataReadPage',
lvl: 1
},
{
comId: 'd47',
sysDivCd: 'menumng', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0064', // PRGM_ID (프로그램ID)
upMenuId: 'menu6', // UP_MENU_ID (상위메뉴ID)
menuNm: '30. Menu Management',// MENU_NM (메뉴명)
sortSeq: 5657, // SORT_SEQ (정렬순서)
useFg: 'menumng',// USE_FG (사용여부)
rmrk: 'menumng',
url: 'comm/auth/MenuMngPage',
lvl: 1
},
{
comId: 'd41',
sysDivCd: 'roleMg', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG00030', // PRGM_ID (프로그램ID)
upMenuId: 'menu6', // UP_MENU_ID (상위메뉴ID)
menuNm: '31. Role',// MENU_NM (메뉴명)
sortSeq: 5560, // SORT_SEQ (정렬순서)
useFg: 'roleMg',// USE_FG (사용여부)
rmrk: 'roleMg',
url: 'comm/auth/RoleMngPage',
lvl: 1
},
{
comId: 'd47',
sysDivCd: 'prgmmng', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0119', // PRGM_ID (프로그램ID)
upMenuId: 'menu6', // UP_MENU_ID (상위메뉴ID)
menuNm: '34. 프로그램',// MENU_NM (메뉴명)
sortSeq: 5657, // SORT_SEQ (정렬순서)
useFg: 'prgmmng',// USE_FG (사용여부)
rmrk: 'prgmmng',
url: 'comm/base/PrgmMngPage',
lvl: 1
},
{
comId: 'd100',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'menu7', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '데이터 조회',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
lvl: 1
},
{
comId: 'd47',
sysDivCd: 'batchmng', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0019', // PRGM_ID (프로그램ID)
upMenuId: 'menu7', // UP_MENU_ID (상위메뉴ID)
menuNm: '35. Batch Management',// MENU_NM (메뉴명)
sortSeq: 5657, // SORT_SEQ (정렬순서)
useFg: 'batchmng',// USE_FG (사용여부)
rmrk: 'batchmng',
url: 'comm/base/BatchMngPage',
lvl: 1
},
{
comId: 'd100',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'menu8', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '데이터 조회',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
lvl: 1,
icon: "mdi-chevron-down",
},
{
comId: 'd42',
sysDivCd: 'MNU0006', //시스템구분
menuId: 'batchLg', // MENU_ID (메뉴ID)
prgmId: 'PRG00010', // PRGM_ID (프로그램ID)
upMenuId: 'menu8', // UP_MENU_ID (상위메뉴ID)
menuNm: '36. Batch log',// MENU_NM (메뉴명)
sortSeq: 5561, // SORT_SEQ (정렬순서)
useFg: 'batchLg',// USE_FG (사용여부)
rmrk: 'batchLg',
url: 'comm/base/BatchLogMngPage',
lvl: 1,
},
// {
// comId: 'd37',
// sysDivCd: 'energyeffc', //시스템구분
// menuId: 'energyeffc', // MENU_ID (메뉴ID)
// prgmId: 'PRG0006', // PRGM_ID (프로그램ID)
// upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
// menuNm: 'Energy Efficiency Equipment',// MENU_NM (메뉴명)
// sortSeq: 5557, // SORT_SEQ (정렬순서)
// useFg: 'energyeffc',// USE_FG (사용여부)
// rmrk: 'energyeffc',
// url: 'ems/effc/EnrgEffcEqpmDetlMntrPage'
// },
]
const list = res.data.dataset.menuList;
let myMenu = [];
if (list.length > 0) {
myMenu = list
// .filter(ele => {
// return ele.useFg === "1";
@ -606,13 +61,14 @@ export const actions = {
id: item.prgmId || i,
upMenuId: item.upMenuId || item.menuNm,
// title: item.menuNm
icon: 'mdi-chevron-down', // 아이콘은,. 값을 받아오지 않는 이상 별도로 상수화해서 prgmId 값을 키로 꺼내써야 할듯,
// icon: '', // 아이콘은,. 값을 받아오지 않는 이상 별도로 상수화해서 prgmId 값을 키로 꺼내써야 할듯,
to: state[item.prgmId],
// to: '' // 경로는,. 값을 받아오지 않는 이상 아이콘과 마찬가지로 짝지어 상수화 하거나 sysDivCd, prgmId 값 등을 이용해 조합해서 route를 구성해야 할듯,
}));
// console.log("myMenu::", myMenu);
}
dispatch('setMenuTree', myMenu);
commit(
'setMenuItems',
@ -647,7 +103,7 @@ export const actions = {
);
Object.getOwnPropertyNames(tmpLsit)
.reverse()
.forEach(function (val, idx, array) {
.forEach(function(val, idx, array) {
array.map(obj => {
tmpLsit[obj].filter(v => {
if (val === v.menuId) {
@ -662,7 +118,7 @@ export const actions = {
});
});
}
console.log('menu test:', tmpLsit["0"]);
commit('setTreevieItems', tmpLsit.menu['0'], { root: true });
// console.log(tmpLsit["0"]);
commit('setTreevieItems', tmpLsit['0'], { root: true });
},
};