Compare commits

...

14 Commits

Author SHA1 Message Date
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
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
26 changed files with 795 additions and 2098 deletions

View File

@ -433,6 +433,10 @@ a {
.v-application.#{$theme}-mode { .v-application.#{$theme}-mode {
min-width: 1000px; min-width: 1000px;
.head-logo{
gap: 8px;
}
.v-navigation-drawer { .v-navigation-drawer {
background: map-deep-get($config, #{$theme}, "menu-bg-color"); background: map-deep-get($config, #{$theme}, "menu-bg-color");
} }
@ -474,7 +478,7 @@ a {
.btn-header { .btn-header {
background-color: map-deep-get($config, #{$theme}, "v-btn-header-background"); 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"); color: map-deep-get($config, #{$theme}, "v-btn-header-text");
} }
@ -1310,18 +1314,24 @@ a {
.btn-close-menu-list { .btn-close-menu-list {
min-width: 100px; min-width: 100px;
border-color: transparent; border-color: transparent;
background-color: map-deep-get($config, #{$theme}, "btn-header-select-bg") !important;
.v-list-item { .v-list-item {
min-height: 30px; min-height: 30px;
} }
.v-list-item__title { .v-list-item__title {
color: #fff; color: map-deep-get($config, #{$theme}, "btn-header-select-color");
&:hover { &:hover {
color: #46c0ff; color: #46c0ff;
} }
} }
.v-btn {
background-color: transparent !important;
color: map-deep-get($config, #{$theme}, "btn-header-select-color") !important;
}
} }
[hover-tooltip] { [hover-tooltip] {

View File

@ -107,6 +107,13 @@
} }
.ant-btn { .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 { &.ant-btn-primary {
background: map-deep-get($config, #{$theme}, "ant-btn-primary-bg"); background: map-deep-get($config, #{$theme}, "ant-btn-primary-bg");
border-color:map-deep-get($config, #{$theme}, "ant-btn-primary-bg"); border-color:map-deep-get($config, #{$theme}, "ant-btn-primary-bg");

View File

@ -221,6 +221,16 @@
.v-application.#{$theme}-mode { .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-textarea {
.v-input__slot{ .v-input__slot{

View File

@ -72,11 +72,11 @@ $config: (
v-btn-backgroundColor: #144985, v-btn-backgroundColor: #144985,
v-box: #212224, v-box: #212224,
v-banner-border-color: rgba(255, 255, 255, 0.1), v-banner-border-color: rgba(255, 255, 255, 0.1),
v-treeview-node-root-backgroundColor: #18579e, v-treeview-node-root-backgroundColor: #212224,
v-treeview-node-root-label-color: #fff, v-treeview-node-root-label-color: #FFFFFFD9,
v-treeview-node-root-label-active-color: #fff, v-treeview-node-root-label-active-color: #FFFFFFD9,
v-treeview-node-root-icon-color: #fff, v-treeview-node-root-icon-color: #FFFFFFD9,
v-treeview-node-root-icon-active-color: #fff, v-treeview-node-root-icon-active-color: #FFFFFFD9,
// v-treeview-node-subroot-backgroundColor: #FFFFFF0A, // v-treeview-node-subroot-backgroundColor: #FFFFFF0A,
v-treeview-node-subroot-backgroundColor: transparent, v-treeview-node-subroot-backgroundColor: transparent,
v-treeview-node-label-color: rgba(255, 255, 255, 0.6), v-treeview-node-label-color: rgba(255, 255, 255, 0.6),
@ -152,6 +152,7 @@ $config: (
search-btn-background: #1668DC, search-btn-background: #1668DC,
v-btn-color-default: #FFFFFFD9, v-btn-color-default: #FFFFFFD9,
v-btn-bg-default: #FFFFFF2E, v-btn-bg-default: #FFFFFF2E,
v-input-popup-password-border: #424242,
v-input-textarea-border: #424242, v-input-textarea-border: #424242,
v-input-textarea-bg: #212224, v-input-textarea-bg: #212224,
v-input-textarea-color: #FFFFFFD9, v-input-textarea-color: #FFFFFFD9,
@ -166,6 +167,9 @@ $config: (
ant-btn-default-border:#FFFFFF2E, ant-btn-default-border:#FFFFFF2E,
ant-btn-default-bg:#FFFFFF2E, ant-btn-default-bg:#FFFFFF2E,
ant-btn-default-color:#FFFFFFD9, 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, light: (w-g5: $--color-gray_555,
g5-w: $--color-white, g5-w: $--color-white,
@ -204,11 +208,11 @@ $config: (
// v-btn-backgroundColor: #fff, // v-btn-backgroundColor: #fff,
v-box: #FFFFFF, v-box: #FFFFFF,
v-banner-border-color: #ddd, v-banner-border-color: #ddd,
v-treeview-node-root-backgroundColor: #4777d9, v-treeview-node-root-backgroundColor: #FFFFFF,
v-treeview-node-root-label-color: #111, v-treeview-node-root-label-color: #000000E0,
v-treeview-node-root-label-active-color: #fff, v-treeview-node-root-label-active-color: #000000E0,
v-treeview-node-root-icon-color: #555, v-treeview-node-root-icon-color: #000000E0,
v-treeview-node-root-icon-active-color: #fff, v-treeview-node-root-icon-active-color: #000000E0,
// v-treeview-node-subroot-backgroundColor: #00000005, // v-treeview-node-subroot-backgroundColor: #00000005,
v-treeview-node-subroot-backgroundColor: transparent, v-treeview-node-subroot-backgroundColor: transparent,
v-treeview-node-label-color: #555, v-treeview-node-label-color: #555,
@ -282,6 +286,7 @@ $config: (
search-btn-background: #1677FF, search-btn-background: #1677FF,
v-btn-bg-default: #00000026, v-btn-bg-default: #00000026,
v-btn-color-default: #000000E0, v-btn-color-default: #000000E0,
v-input-popup-password-border: #D9D9D9,
v-input-textarea-border: #D9D9D9, v-input-textarea-border: #D9D9D9,
v-input-textarea-bg: #FFFFFF, v-input-textarea-bg: #FFFFFF,
v-input-textarea-color: #000000E0, v-input-textarea-color: #000000E0,
@ -296,5 +301,8 @@ $config: (
ant-btn-default-border:#00000026, ant-btn-default-border:#00000026,
ant-btn-default-bg:#00000026, ant-btn-default-bg:#00000026,
ant-btn-default-color:#000000E0, 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> </template>
<v-list class="pa-2"> <v-list class="pa-2 btn-close-menu-list" >
<!-- <v-list-item class="mb-1">--> <!-- <v-list-item class="mb-1">-->
<!-- <div class="d-flex align-center">--> <!-- <div class="d-flex align-center">-->
<!-- <v-avatar class="mr-1" size="20">--> <!-- <v-avatar class="mr-1" size="20">-->

View File

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

View File

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

View File

@ -1,9 +1,11 @@
<template> <template>
<v-switch <a-button
class="theme-switch" class="btn-header"
v-model="mode" :color="mode ? 'dark' : 'light'"
@change="themeChange" @click="themeChange"
></v-switch> icon="bulb"
>
</a-button>
</template> </template>
<script> <script>
import { mapState, mapMutations } from 'vuex'; import { mapState, mapMutations } from 'vuex';
@ -26,8 +28,11 @@ export default {
setThemeChange: 'setThemeChange', setThemeChange: 'setThemeChange',
}), }),
themeChange() { themeChange() {
this.mode = !this.mode;
this.$vuetify.theme.isDark = this.mode; this.$vuetify.theme.isDark = this.mode;
this.setThemeChange(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; background-color: #f2f2f2;
top: 2px; top: 2px;
left: 0; 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-size: 18px 18px;
background-position: center center; background-position: center center;
background-repeat: no-repeat; background-repeat: no-repeat;
} }
} }
&.v-input--is-label-active { &.v-input--is-label-active {
::v-deep { ::v-deep {
.v-input--switch__track { .v-input--switch__track {
@ -82,7 +89,8 @@ export default {
} }
.v-input--switch__thumb { .v-input--switch__thumb {
// transform: translate(38px, 0); // 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" v-if="item.label"
:cols="item.cols == 12 ? 2 : 4" :cols="item.cols == 12 ? 2 : 4"
:style="item.padding ? 'padding-left:10px' : ''" :style="item.padding ? 'padding-left:10px' : ''"
class="mb-2" class="py-0"
> >
<label for="" class="search-box-label"> <label for="" class="search-box-label">
<v-icon <v-icon

View File

@ -1,6 +1,6 @@
<template> <template>
<v-row class="search-box" align="center" no-gutters> <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"> <label for="" class="search-box-label">
<v-icon <v-icon
x-small x-small
@ -28,10 +28,14 @@
></v-text-field> ></v-text-field>
</template> </template>
<template v-else> <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> <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> </template>
</v-col> </v-col>
@ -48,7 +52,7 @@
</label> </label>
<v-text-field <v-text-field
v-model.trim="firstPswd" v-model.trim="firstPswd"
class="v-input__custom" class="v-input-popup__custom"
type="password" type="password"
:readonly="!isFocused" :readonly="!isFocused"
@focus="isFocused = true" @focus="isFocused = true"
@ -61,7 +65,7 @@
</label> </label>
<v-text-field <v-text-field
v-model.trim="secondPswd" v-model.trim="secondPswd"
class="v-input__custom" class="v-input-popup__custom"
type="password" type="password"
:readonly="!isFocused" :readonly="!isFocused"
@focus="isFocused = true" @focus="isFocused = true"
@ -72,8 +76,15 @@
<v-divider></v-divider> <v-divider></v-divider>
<v-card-actions> <v-card-actions>
<v-spacer></v-spacer> <v-spacer></v-spacer>
<v-btn color="primary" dark @click="setUpdate()">확인</v-btn> <!-- <v-btn color="primary" dark @click="setUpdate()">확인</v-btn> -->
<v-btn color="primary" dark @click="close()">닫기</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-actions>
</v-card> </v-card>
</v-dialog> </v-dialog>
@ -135,8 +146,10 @@ export default {
} else { } else {
return ''; return '';
} }
console.log(value)
}, },
set(value) { set(value) {
console.log(value)
return value; return value;
}, },
}, },

View File

@ -62,7 +62,7 @@
<v-row align="center" no-gutters> <v-row align="center" no-gutters>
<v-col :cols="12"> <v-col :cols="12">
<label for="" class="search-box-label"> <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> </label>
</v-col> </v-col>
@ -80,7 +80,7 @@
<v-row align="center" no-gutters class="mt-4"> <v-row align="center" no-gutters class="mt-4">
<v-col :cols="12"> <v-col :cols="12">
<label for="" class="search-box-label"> <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> </label>
</v-col> </v-col>
@ -190,7 +190,7 @@ export default {
modalDataKey: 'modalData', modalDataKey: 'modalData',
myModalKey: 'eqpmDetlPop', myModalKey: 'eqpmDetlPop',
gridName: 'eqpmDetlGrid', gridName: 'eqpmDetlGrid',
loadGrid: true, loadGrid: false,
setGrid: false, setGrid: false,
popCheck: false, popCheck: false,
dialog: false, dialog: false,
@ -217,13 +217,7 @@ export default {
}), }),
InputValue: { InputValue: {
get() { get() {
// return this.myBindingData; return this.myBindingData;
return [{
"eqpmId": "EQ001",
"eqpmNm": "Etcher A12",
"gdIdxId": "GD001",
"gdIdxNm": "Etch Depth Guide",
}]
} }
}, },
chkDialog() { chkDialog() {
@ -241,7 +235,7 @@ export default {
}, },
async popCheck(val) { async popCheck(val) {
if (val) { if (val) {
// await this.getRowGridData(); await this.getRowGridData();
this.dialog = true; this.dialog = true;
} else { } else {
this.dialog = false; this.dialog = false;
@ -365,57 +359,24 @@ export default {
}, },
async getRowGridData() { async getRowGridData() {
this.loadGrid = false; this.loadGrid = false;
// var res = await this.postApiReturn({ var res = await this.postApiReturn({
// apiKey: 'selectEqpmDetailPop', apiKey: 'selectEqpmDetailPop',
// resKey: 'eqpmDetlPopData', resKey: 'eqpmDetlPopData',
// sendParam: { sendParam: {
// gdIdxId : this.myBindingData.gdIdxId, gdIdxId: this.myBindingData.gdIdxId,
// eqpmId : this.myBindingData.eqpmId, eqpmId: this.myBindingData.eqpmId,
// fromDt : this.myBindingData.fromDt, fromDt: this.myBindingData.fromDt,
// toDt : this.myBindingData.toDt 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": "경고"
}, },
{ });
"totDttmDay": "2025-07-10", const dayjs = require('dayjs');
"totDttmTime": "09:00~10:00", var newRes = res.map(item =>
"gdIdxNm": "Etch Depth Guide", item = {
"careStndVal": 60, ...item,
"warnStndVal": 80, totDttmDay: Utility.setFormatDate(item.totDttm, 'YYYY-MM-DD'),
"totVal": 75, totDttmTime: Utility.setFormatDate(item.totDttm, 'HH') + "~" + dayjs(item.totDttm).add(1, 'h').format('HH'),
"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": "주의"
} }
] );
this.setModalGridData({ this.setModalGridData({

View File

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

View File

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

View File

@ -124,7 +124,7 @@ export default {
return { return {
dialog: false, dialog: false,
loadGrid: true, loadGrid: false,
grid_01: 'grid_01', grid_01: 'grid_01',
myModalKey: 'evtObjPop', myModalKey: 'evtObjPop',
modalDataKey: 'modalData2', modalDataKey: 'modalData2',
@ -165,35 +165,6 @@ export default {
computed: { computed: {
...mapState({ ...mapState({
searchParam(state) { 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]; return state.pageData[this.parentPrgmId];
}, },
myBindingData(state) { myBindingData(state) {
@ -277,6 +248,9 @@ export default {
columnOptions: { columnOptions: {
resizable: true, resizable: true,
}, },
header: {
height: 38,
},
}; };
this.setModalGridOption({ this.setModalGridOption({
modalKey: this.myModalKey, modalKey: this.myModalKey,
@ -300,7 +274,7 @@ export default {
}); });
}, },
async getGridData() { async getGridData() {
// this.loadGrid = false; this.loadGrid = false;
const res = await this.postApiReturn({ const res = await this.postApiReturn({
apiKey: 'selectTagBaseInfo', apiKey: 'selectTagBaseInfo',
@ -376,7 +350,6 @@ export default {
// this.dialog = false; // this.dialog = false;
// return; // return;
// } // }
console.log("this.dialog: ", this.dialog);
this.dialog = !val; this.dialog = !val;
}, },
}, },
@ -389,50 +362,6 @@ var evtObjPop = {
option: {}, 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> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

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

View File

@ -22,7 +22,6 @@
:editorGrid="true" :editorGrid="true"
:innerTabGridInfo="innerTabGridInfo" :innerTabGridInfo="innerTabGridInfo"
@getRowsData="getRowData" @getRowsData="getRowData"
:dataPath="dataPathMock"
/> />
</div> </div>
</v-card-actions> </v-card-actions>
@ -51,22 +50,10 @@ export default {
}, },
data() { data() {
return { return {
loadGrid: true, loadGrid: false,
gridName: 'rowDetailGrid', gridName: 'rowDetailGrid',
rowKey: null, rowKey: null,
edtingFinishFlag: 'Y', 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: { computed: {
@ -444,37 +431,4 @@ export default {
search() {}, 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> </script>

View File

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

View File

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

View File

@ -6,7 +6,7 @@
<v-row align="end" no-gutters> <v-row align="end" no-gutters>
<v-col :cols="3"> <v-col :cols="3">
<InputText :labelCols="12" :textCols="12" :parentPrgmId="myPrgmId" label="지표명" <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" /> :iconShow="true" />
</v-col> </v-col>
<v-col :cols="9" class="text-right"> <v-col :cols="9" class="text-right">
@ -27,7 +27,7 @@
<div ref="gridParent" id="gridParent" class="w100 h100"> <div ref="gridParent" id="gridParent" class="w100 h100">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" <component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="myPrgmId" @getRowsData="getRowData" :preventFocusChangeEventFlag="false" :parentPrgmId="myPrgmId" @getRowsData="getRowData" :preventFocusChangeEventFlag="false"
:dataPath="dataPathExample" /> />
</div> </div>
</div> </div>
</v-card> </v-card>
@ -212,66 +212,65 @@ export default {
disabledFlag: false, disabledFlag: false,
}, },
], ],
loadGrid: true, loadGrid: false,
dataPathExample: { // "effcIdxGrid": {
"effcIdxGrid": { // data: [
data: [ // {
{ // "effcIdxId": "E001",
"effcIdxId": "E001", // "effcIdxNm": "에너지 소비 효율",
"effcIdxNm": "에너지 소비 효율", // "effcKind": "환경"
"effcKind": "환경" // },
}, // {
{ // "effcIdxId": "E002",
"effcIdxId": "E002", // "effcIdxNm": "작업 시간 대비 생산량",
"effcIdxNm": "작업 시간 대비 생산량", // "effcKind": "생산성"
"effcKind": "생산성" // },
}, // {
{ // "effcIdxId": "E003",
"effcIdxId": "E003", // "effcIdxNm": "장비 가동률",
"effcIdxNm": "장비 가동률", // "effcKind": "운영"
"effcKind": "운영" // },
}, // {
{ // "effcIdxId": "E004",
"effcIdxId": "E004", // "effcIdxNm": "불량률",
"effcIdxNm": "불량률", // "effcKind": "품질"
"effcKind": "품질" // },
}, // {
{ // "effcIdxId": "E005",
"effcIdxId": "E005", // "effcIdxNm": "재고 회전율",
"effcIdxNm": "재고 회전율", // "effcKind": "물류"
"effcKind": "물류" // }
} // ]
] // ,
, // column: [
column: [ // {
{ // header: '효율지표 ID',
header: '효율지표 ID', // name: 'effcIdxId',
name: 'effcIdxId', // align: 'center',
align: 'center', // // hidden:true
// hidden:true // },
}, // {
{ // header: '효율지표명',
header: '효율지표명', // name: 'effcIdxNm',
name: 'effcIdxNm', // align: 'left',
align: 'left', // minWidth: 150,
minWidth: 150, // // hidden:true
// hidden:true // },
},
{ // {
header: '효율지표종류', // header: '효율지표종류',
name: 'effcKind', // name: 'effcKind',
align: 'left', // align: 'left',
// hidden: true, // // hidden: true,
}, // },
// { header: '등록 사용자', name: 'regUserNo', hidden: true }, // // { header: '등록 사용자', name: 'regUserNo', hidden: true },
// { header: '등록 일자', name: 'regDttm', hidden: true }, // // { header: '등록 일자', name: 'regDttm', hidden: true },
// { header: '수정 사용자', name: 'procUserNo', hidden: true }, // // { header: '수정 사용자', name: 'procUserNo', hidden: true },
// { header: '수정 일자', name: 'procDttm', hidden: true }, // // { header: '수정 일자', name: 'procDttm', hidden: true },
], // ],
} // }
}, // },
initFlag: false, initFlag: false,
selectValueList01: [], selectValueList01: [],
selectValueList02: [], selectValueList02: [],
@ -904,6 +903,10 @@ export default {
columnOptions: { columnOptions: {
resizable: true, resizable: true,
}, },
header: {
height: 37,
},
rowHeight: 'auto',
}; };
this.setGridOption({ this.setGridOption({
gridKey: this.gridName, gridKey: this.gridName,
@ -1439,6 +1442,6 @@ const defaultData = {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.v-input__custom.surface-name fieldset { .v-input__custom.surface-name fieldset {
width: 345px; max-width: 345px;
} }
</style> </style>

View File

@ -1,19 +1,13 @@
<template> <template>
<div ref="mainDiv" class="l-layout"> <div ref="mainDiv" class="l-layout">
<PageTitle/>
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row align="end" no-gutters> <v-row align="end" no-gutters>
<v-col :cols="5"> <v-col :cols="5">
<InputText <InputText :parentPrgmId="myPrgmId" label="설비종류명" valueNm="eqpmKindNm" :searchOption="true"
:parentPrgmId="myPrgmId" :textCols="12" :labelCols="12" customClass="input-large" />
label="설비종류명"
valueNm="eqpmKindNm"
:searchOption="true"
:textCols="12"
:labelCols="12"
customClass="input-large"
/>
</v-col> </v-col>
<v-col :cols="7" class="text-right"> <v-col :cols="7" class="text-right">
<BtnSearch @click="search" size="large" /> <BtnSearch @click="search" size="large" />
@ -25,41 +19,27 @@
<v-row ref="contents"> <v-row ref="contents">
<v-col :cols="5" class="h100"> <v-col :cols="5" class="h100">
<v-card class="pb-5"> <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> <v-card-title class="pa-0">설비종류</v-card-title>
<Buttons <Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
:parentPrgmId="myPrgmId"
:bindingData="gridName"
:btnActionsFnc="btnActions"
/>
</div> </div>
<div class="h100 px-5" style="height:calc(100% - 70px)"> <div class="h100 px-5" style="height:calc(100% - 70px)">
<div ref="gridParent" class="w100 h100"> <div ref="gridParent" class="w100 h100">
<component <component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:ref="gridName" :parentPrgmId="myPrgmId" @getRowsData="getRowData"
:is="loadGrid ? 'Grid' : null" :preventFocusChangeEventFlag="false" />
:gridName="gridName"
:parentPrgmId="myPrgmId"
@getRowsData="getRowData"
:preventFocusChangeEventFlag="false"
:dataPath="dataPathMock"
/>
</div> </div>
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
<v-col :cols="7" class="h100"> <v-col :cols="7" class="h100">
<v-card class="pb-5"> <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> <v-card-title class="pa-0">설비종류 상세</v-card-title>
</div> </div>
<div class="px-5" style="height:calc(100% - 76px)"> <div class="px-5" style="height:calc(100% - 76px)">
<component <component :is="'Form'" :parentPrgmId="myPrgmId" :detailList="detailList"
:is="'Form'" @gridEditingFinish="gridEditingFinish" />
:parentPrgmId="myPrgmId"
:detailList="detailList"
@gridEditingFinish="gridEditingFinish"
/>
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
@ -78,6 +58,8 @@ import Form from '~/components/common/form/Form';
import Grid from '~/components/common/Grid'; import Grid from '~/components/common/Grid';
import Utility from '~/plugins/utility'; import Utility from '~/plugins/utility';
import SelectBox from '@/components/common/select/SelectBox'; import SelectBox from '@/components/common/select/SelectBox';
import PageTitle from "~/components/common/PageTitle";
let myTitle; let myTitle;
// const myPrgmId = "PRG0013"; // const myPrgmId = "PRG0013";
let myPrgmId; let myPrgmId;
@ -108,6 +90,7 @@ export default {
Grid, Grid,
Utility, Utility,
SelectBox, SelectBox,
PageTitle,
}, },
data() { data() {
return { return {
@ -118,21 +101,6 @@ export default {
detailList: myDetail, detailList: myDetail,
selectValueList01: [], selectValueList01: [],
selectValue01: null, 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: { computed: {
@ -164,7 +132,7 @@ export default {
defaultData: defaultData, defaultData: defaultData,
}); });
}, },
created() {}, created() { },
mounted() { mounted() {
this.gridInit(); this.gridInit();
// this.init(); // this.init();
@ -184,6 +152,8 @@ export default {
const myOptions = { const myOptions = {
columnOptions: { columnOptions: {
resizable: true, resizable: true,
}, header: {
height: 38,
}, },
}; };
this.setGridOption({ this.setGridOption({
@ -398,7 +368,7 @@ const myDetail = [
textCols: 12, textCols: 12,
}, },
{ {
type: 'InputTextReg', type: 'InputText',
label: '설비종류명', label: '설비종류명',
valueNm: 'eqpmKindNm', valueNm: 'eqpmKindNm',
disabled: false, disabled: false,
@ -458,14 +428,4 @@ const myDetail = [
textCols: 12, 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> </script>

View File

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

View File

@ -73,10 +73,8 @@
:is="loadGrid ? 'Grid' : null" :is="loadGrid ? 'Grid' : null"
:gridName="gridName" :gridName="gridName"
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
:dataPath="dataPathMock"
/> />
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
</v-row> </v-row>
@ -154,53 +152,6 @@ export default {
required: false, required: false,
formFg: 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: { computed: {
@ -316,13 +267,15 @@ export default {
columnOptions: { columnOptions: {
resizable: true, resizable: true,
}, },
header: {
height: 38,
},
}; };
this.setGridOption({ this.setGridOption({
gridKey: this.gridName, gridKey: this.gridName,
value: Object.assign(Utility.defaultGridOption(gridHeight), myOptions), value: Object.assign(Utility.defaultGridOption(gridHeight), myOptions),
}); });
let myColumns = [ let myColumns = [
{ {
header: 'TAG ID', 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> </script>

View File

@ -1,80 +1,40 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<PageTitle/>
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row align="center" no-gutters> <v-row align="center" no-gutters>
<v-col :cols="3"> <v-col :cols="3">
<!-- 사업장 --> <!-- 사업장 -->
<component <component :is="'SelectBlocMstr'" ref="SelectBlocMstr" :parentPrgmId="myPrgmId"
:is="'SelectBlocMstr'" :textCols="12" customClass="select-large" />
ref="SelectBlocMstr"
:parentPrgmId="myPrgmId"
:textCols="12"
customClass="select-large"
/>
</v-col> </v-col>
<v-col :cols="3"> <v-col :cols="3">
<component <component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'측정 Data 유형'"
:is="'selectCodeList'" dataKey="searchReadDataType" :sendParam="{ commGrpCd: 'EM_READ_DATA_TYPE', useFg: '1' }"
:parentPrgmId="myPrgmId" :addAll="true" :textCols="12" customClass="select-large" />
:label="'측정 Data 유형'"
dataKey="searchReadDataType"
:sendParam="{ commGrpCd: 'EM_READ_DATA_TYPE', useFg: '1' }"
:addAll="true"
:textCols="12"
customClass="select-large"
/>
</v-col> </v-col>
<v-col :cols="3"> <v-col :cols="3">
<component <component :is="'SelectReadObj'" :parentPrgmId="myPrgmId" :label="'측정대상'"
:is="'SelectReadObj'" dataKey="searchReadObj" :sendParam="{ useFg: '1' }" :labelCols="12" :textCols="12"
:parentPrgmId="myPrgmId" :addAll="true" customClass="select-large" />
:label="'측정대상'"
dataKey="searchReadObj"
:sendParam="{ useFg: '1' }"
:labelCols="12"
:textCols="12"
:addAll="true"
customClass="select-large"
/>
</v-col> </v-col>
</v-row> </v-row>
<v-row align="end" no-gutters> <v-row align="end" no-gutters>
<v-col :cols="3"> <v-col :cols="3">
<component <component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'사용여부'" dataKey="useFg"
:is="'selectCodeList'" :sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }" :addAll="true" :textCols="12"
:parentPrgmId="myPrgmId" customClass="select-large" />
:label="'사용여부'"
dataKey="useFg"
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
:addAll="true"
:textCols="12"
customClass="select-large"
/>
</v-col> </v-col>
<v-col :cols="3"> <v-col :cols="3">
<InputText <InputText :parentPrgmId="myPrgmId" label="TAG ID" valueNm="tagId" :labelCols="12"
:parentPrgmId="myPrgmId" :textCols="12" :searchOption="true" customClass="input-large" />
label="TAG ID"
valueNm="tagId"
:labelCols="12"
:textCols="12"
:searchOption="true"
customClass="input-large"
/>
</v-col> </v-col>
<v-col :cols="3"> <v-col :cols="3">
<InputText <InputText :parentPrgmId="myPrgmId" label="TAG명" valueNm="tagNm" :labelCols="12"
:parentPrgmId="myPrgmId" :textCols="12" :searchOption="true" customClass="input-large" />
label="TAG명"
valueNm="tagNm"
:labelCols="12"
:textCols="12"
:searchOption="true"
customClass="input-large"
/>
</v-col> </v-col>
<v-col :cols="3" class="d-flex align-end justify-end text-right"> <v-col :cols="3" class="d-flex align-end justify-end text-right">
<BtnSearch @click="search" size="large" /> <BtnSearch @click="search" size="large" />
@ -88,29 +48,14 @@
<v-card class="pb-5"> <v-card class="pb-5">
<v-card-title class="d-flex justify-space-between align-end"> <v-card-title class="d-flex justify-space-between align-end">
<span class="tit ft-size_20 ft-weight_600">TAG 정보</span> <span class="tit ft-size_20 ft-weight_600">TAG 정보</span>
<Buttons <Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
:parentPrgmId="myPrgmId" :btnActionsFnc="btnActions" />
:bindingData="gridName"
:detailList="detailList"
:btnActionsFnc="btnActions"
/>
</v-card-title> </v-card-title>
<v-card-actions> <v-card-actions>
<div <div ref="gridParent" class="w100" style="height: calc(100vh - 400px)">
ref="gridParent" <component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
class="w100" :parentPrgmId="myPrgmId" @getRowsData="getRowData"
style="height: calc(100vh - 400px)" @sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true" />
>
<component
:ref="gridName"
:is="loadGrid ? 'Grid' : null"
:gridName="gridName"
:parentPrgmId="myPrgmId"
@getRowsData="getRowData"
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
:selectedRowDataWatchFlag="true"
:dataPath="dataPathMock"
/>
</div> </div>
</v-card-actions> </v-card-actions>
<!-- <div class="d-flex align-center justify-space-between"> <!-- <div class="d-flex align-center justify-space-between">
@ -129,32 +74,16 @@
<v-card-title>TAG 상세</v-card-title> <v-card-title>TAG 상세</v-card-title>
<div class="px-5" style="height:calc(100% - 70px)"> <div class="px-5" style="height:calc(100% - 70px)">
<v-tabs v-model="tab"> <v-tabs v-model="tab">
<v-tab <v-tab v-for="item in items" :key="item.id" :disabled="item.disabledFlag">
v-for="item in items"
:key="item.id"
:disabled="item.disabledFlag"
>
{{ item.name }} {{ item.name }}
</v-tab> </v-tab>
</v-tabs> </v-tabs>
<v-tabs-items <v-tabs-items v-model="tab" style="height: calc(100% - 65px);" class="py-6">
v-model="tab"
style="height: calc(100% - 65px);"
class="py-6"
>
<v-tab-item v-for="(item, idx) in items" :key="item.id"> <v-tab-item v-for="(item, idx) in items" :key="item.id">
<component <component v-if="item.id == 'tagBaseInfoTab'" :is="'Form'" :parentPrgmId="myPrgmId"
v-if="item.id == 'tagBaseInfoTab'" :detailList="detailList" @gridEditingFinish="gridEditingFinish" />
:is="'Form'" <TagAddInfoTab v-if="item.id == 'tagAddInfoTab'" :parentPrgmId="myPrgmId"
:parentPrgmId="myPrgmId" :innerTabGridInfo="{ tab, idx }" />
:detailList="detailList"
@gridEditingFinish="gridEditingFinish"
/>
<TagAddInfoTab
v-if="item.id == 'tagAddInfoTab'"
:parentPrgmId="myPrgmId"
:innerTabGridInfo="{ tab, idx }"
/>
</v-tab-item> </v-tab-item>
</v-tabs-items> </v-tabs-items>
</div> </div>
@ -178,12 +107,13 @@ import TagAddInfoTab from '@/components/pages/ems/TagInfo/TagAddInfoTab';
import Grid from '~/components/common/Grid'; import Grid from '~/components/common/Grid';
import Utility from '~/plugins/utility'; import Utility from '~/plugins/utility';
import pagination from '~/components/Pagination'; import pagination from '~/components/Pagination';
import PageTitle from "~/components/common/PageTitle";
let myTitle; let myTitle;
// const myPrgmId = "PRG0051"; // const myPrgmId = "PRG0051";
let myPrgmId; let myPrgmId;
export default { export default {
mixins: [mixinGlobal,resize], mixins: [mixinGlobal, resize],
async asyncData(context) { async asyncData(context) {
const myState = context.store.state; const myState = context.store.state;
// context.store.commit("setActiveMenuInfo", myState.menuData[myPrgmId]); // context.store.commit("setActiveMenuInfo", myState.menuData[myPrgmId]);
@ -210,6 +140,7 @@ export default {
TagAddInfoTab, TagAddInfoTab,
Grid, Grid,
pagination, pagination,
PageTitle
}, },
data() { data() {
return { return {
@ -223,123 +154,11 @@ export default {
], ],
detailList: myDetail, detailList: myDetail,
alrmFg: null, alrmFg: null,
dataPathMock: { itemsPerPage: 10,
"rowGrid": { itemsPerPageArray: [10, 20, 30],
column: [ limit: 20,
{ header: '회사 ID', name: 'comId', hidden: true }, page: 1,
{ totalCount: 0,
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,
}; };
}, },
computed: { computed: {
@ -456,12 +275,20 @@ export default {
this.gridInit(); this.gridInit();
}, },
gridInit() { gridInit() {
const gridHeight = this.$refs.gridParent.offsetHeight - 16; const gridHeight = this.$refs.gridParent.offsetHeight - 180;
const myOptions = { const myOptions = {
columnOptions: { columnOptions: {
resizable: true, resizable: true,
}, },
pageOptions: {
useClient: true,
perPage: 10,
},
scrollX: true,
header: {
height: 38,
},
}; };
this.setGridOption({ this.setGridOption({
gridKey: this.gridName, gridKey: this.gridName,
@ -709,7 +536,7 @@ export default {
columnName: 'tagId', columnName: 'tagId',
setScroll: true, setScroll: true,
}); });
} catch (error) {} } catch (error) { }
// this.$refs[this.gridName].focus({ // this.$refs[this.gridName].focus({
// rowKey: 0, // rowKey: 0,
// columnName: "tagId", // columnName: "tagId",
@ -946,7 +773,7 @@ export default {
gridEditingFinish(data) { gridEditingFinish(data) {
this.$refs[this.gridName].editingFinish(data); this.$refs[this.gridName].editingFinish(data);
}, },
changeGrid: async function(pageNum, limit) { changeGrid: async function (pageNum, limit) {
this.page = pageNum; this.page = pageNum;
this.limit = limit; this.limit = limit;
@ -1094,7 +921,7 @@ const myDetail = [
label: 'TAG ID', label: 'TAG ID',
valueNm: 'tagId', valueNm: 'tagId',
disabled: false, disabled: false,
iconShow:true, iconShow: true,
cols: 6, cols: 6,
class: 'py-2 pr-4', class: 'py-2 pr-4',
required: false, required: false,
@ -1106,7 +933,7 @@ const myDetail = [
label: 'TAG 명', label: 'TAG 명',
valueNm: 'tagNm', valueNm: 'tagNm',
disabled: false, disabled: false,
iconShow:true, iconShow: true,
cols: 6, cols: 6,
class: 'py-2 pl-4', class: 'py-2 pl-4',
required: false, required: false,
@ -1118,7 +945,7 @@ const myDetail = [
label: '측정 값 유형', label: '측정 값 유형',
valueNm: 'readDataTypeCd', valueNm: 'readDataTypeCd',
disabled: false, disabled: false,
iconShow:true, iconShow: true,
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-5', class: 'py-2 pr-4 pt-5',
list: 'readDataTypeCdList', list: 'readDataTypeCdList',
@ -1139,7 +966,7 @@ const myDetail = [
itemText: 'readObjNm', itemText: 'readObjNm',
itemValue: 'readObjId', itemValue: 'readObjId',
required: true, required: true,
iconShow:true, iconShow: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
}, },
@ -1151,7 +978,7 @@ const myDetail = [
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-5', class: 'py-2 pr-4 pt-5',
required: true, required: true,
iconShow:true, iconShow: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
}, },
@ -1165,7 +992,7 @@ const myDetail = [
list: 'unitCdList', list: 'unitCdList',
itemText: 'commCdNm', itemText: 'commCdNm',
itemValue: 'commCd', itemValue: 'commCd',
iconShow:true, iconShow: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
}, },
@ -1176,7 +1003,7 @@ const myDetail = [
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-5', class: 'py-2 pr-4 pt-5',
iconShow:true, iconShow: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
}, },
@ -1187,7 +1014,7 @@ const myDetail = [
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pl-4 pt-5', class: 'py-2 pl-4 pt-5',
iconShow:true, iconShow: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
}, },
@ -1198,7 +1025,7 @@ const myDetail = [
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-5', class: 'py-2 pr-4 pt-5',
iconShow:true, iconShow: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
}, },
@ -1209,7 +1036,7 @@ const myDetail = [
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pl-4 pt-5', class: 'py-2 pl-4 pt-5',
iconShow:true, iconShow: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
}, },
@ -1220,7 +1047,7 @@ const myDetail = [
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-5', class: 'py-2 pr-4 pt-5',
iconShow:true, iconShow: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
}, },
@ -1231,7 +1058,7 @@ const myDetail = [
disabled: false, disabled: false,
cols: 6, cols: 6,
class: 'py-2 pl-4 pt-5', class: 'py-2 pl-4 pt-5',
iconShow:true, iconShow: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
}, },
@ -1243,7 +1070,7 @@ const myDetail = [
cols: 6, cols: 6,
class: 'py-2 pr-4 pt-5', class: 'py-2 pr-4 pt-5',
value: { '1': true, '0': false }, value: { '1': true, '0': false },
iconShow:true, iconShow: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
}, },
@ -1256,7 +1083,7 @@ const myDetail = [
class: 'py-2 pl-4 pt-5', class: 'py-2 pl-4 pt-5',
value: { '1': true, '0': false }, value: { '1': true, '0': false },
required: false, required: false,
iconShow:true, iconShow: true,
labelCols: 12, labelCols: 12,
textCols: 12, textCols: 12,
}, },
@ -1285,25 +1112,4 @@ const myDetail = [
class: 'py-2', 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> </script>

View File

@ -66,9 +66,14 @@
</div> </div>
<div class="px-4" style="height:calc(100% - 76px)"> <div class="px-4" style="height:calc(100% - 76px)">
<div ref="gridParent" class="w100 h100"> <div ref="gridParent" class="w100 h100">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" <component
:parentPrgmId="myPrgmId" :columnClickEventFlag="true" @columnClick="columnClick" :ref="gridName"
:dataPath="dataPathExample" /> :is="loadGrid ? 'Grid' : null"
:gridName="gridName"
:parentPrgmId="myPrgmId"
:columnClickEventFlag="true"
@columnClick="columnClick"
/>
</div> </div>
</div> </div>
</v-card> </v-card>
@ -141,442 +146,8 @@ export default {
selectValueList05: [], selectValueList05: [],
selectValueList06: [], selectValueList06: [],
initedFlag: false, initedFlag: false,
loadGrid: true, loadGrid: false,
gridName: 'rowGrid', 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, popDialog: false,
eqpmFlag: false, eqpmFlag: false,
eqpmKindFlag: false, eqpmKindFlag: false,
@ -667,7 +238,7 @@ export default {
}); });
this.selectValue04 = { eqpmId: [] }; this.selectValue04 = { eqpmId: [] };
await this.getEqpmGrp(); await this.getEqpmGrp();
// await this.getEqpm(this.selectValueList03); await this.getEqpm(this.selectValueList03);
} }
}, },
async selectValue03(val) { async selectValue03(val) {
@ -789,7 +360,7 @@ export default {
} else { } else {
this.setFromDt(); this.setFromDt();
} }
// await this.gridInit(); await this.gridInit();
}, },
async search() { async search() {
await this.getRowGridData(); await this.getRowGridData();
@ -806,75 +377,69 @@ export default {
// this.pageData.toDt = Utility.setAftertDate(this.pageData, this.pageData.fromDt, "YYYYMMDD"); // this.pageData.toDt = Utility.setAftertDate(this.pageData, this.pageData.fromDt, "YYYYMMDD");
}, },
async getEqpmKind() { async getEqpmKind() {
// let res = await this.postApiReturn({ let res = await this.postApiReturn({
// apiKey: 'selectEqpmKindCodeList', apiKey: 'selectEqpmKindCodeList',
// resKey: 'eqpmKindCodeLists', resKey: 'eqpmKindCodeLists',
// sendParam: {}, sendParam: {},
// }); });
// if (res.length > 0) { if (res.length > 0) {
// this.selectValueList01 = await res.map(item => { this.selectValueList01 = await res.map(item => {
// return { return {
// text: item.eqpmKindNm, text: item.eqpmKindNm,
// value: item.eqpmKindId, value: item.eqpmKindId,
// }; };
// }); });
// this.selectValueList01.unshift({ this.selectValueList01.unshift({
// text: '전체', text: '전체',
// value: null, value: null,
// }); });
// if ( if (
// this.routeData.eqpmKindId == null || this.routeData.eqpmKindId == null ||
// this.routeData.eqpmKindId == '' this.routeData.eqpmKindId == ''
// ) { ) {
// this.selectValue01 = this.selectValueList01[0].value; this.selectValue01 = this.selectValueList01[0].value;
// } else if ( } else if (
// this.routeData.eqpmKindId != null || this.routeData.eqpmKindId != null ||
// this.routeData.eqpmKindId != '' this.routeData.eqpmKindId != ''
// ) { ) {
// this.selectValue01 = this.routeData.eqpmKindId; this.selectValue01 = this.routeData.eqpmKindId;
// } }
// } else { } else {
// this.selectValueList01 = []; this.selectValueList01 = [];
// this.selectValue01 = null; this.selectValue01 = null;
// } }
this.setPageData({ this.setPageData({
eqpmKindList: this.selectValueList01, eqpmKindList: this.selectValueList01,
eqpmKindId: this.selectValue01, eqpmKindId: this.selectValue01,
}); });
}, },
async getFab() { async getFab() {
// let res = await this.postApiReturn({ let res = await this.postApiReturn({
// apiKey: 'selectFabCodeList', apiKey: 'selectFabCodeList',
// resKey: 'fabCodeLists', resKey: 'fabCodeLists',
// sendParam: {}, sendParam: {},
// }); });
this.selectValueList02 = [
{ text: '온도 센서', value: 'ECC001' }, if (res.length > 0) {
{ text: '압력 센서', value: 'ECC002' }, this.selectValueList02 = await res.map(item => {
{ text: '유량 센서', value: 'ECC003' }, return {
{ text: '습도 센서', value: 'ECC004' }, text: item.eccNm,
{ text: '전압 센서', value: 'ECC005' } value: item.eccId,
]; };
// if (res.length > 0) { });
// // this.selectValueList02 = await res.map(item => { this.selectValueList02.unshift({
// // return { text: '전체',
// // text: item.eccNm, value: null,
// // value: item.eccId, });
// // }; if (this.routeData.fabId != null && this.routeData.fabId != '') {
// // }); this.selectValue02 = this.routeData.fabId;
// this.selectValueList02.unshift({ } else if (this.routeData.fabId == null || this.routeData.fabId == '') {
// text: '전체', this.selectValue02 = this.selectValueList02[0].value;
// value: null, }
// }); } else {
// if (this.routeData.fabId != null && this.routeData.fabId != '') { this.selectValueList02 = [];
// this.selectValue02 = this.routeData.fabId; this.selectValue02 = null;
// } else if (this.routeData.fabId == null || this.routeData.fabId == '') { }
// this.selectValue02 = this.selectValueList02[0].value;
// }
// } else {
// this.selectValueList02 = [];
// this.selectValue02 = null;
// }
this.setPageData({ this.setPageData({
fabIdList: this.selectValueList02, fabIdList: this.selectValueList02,
fabId: this.selectValue02, fabId: this.selectValue02,
@ -923,30 +488,30 @@ export default {
}, },
async getEqpm(data) { }, async getEqpm(data) { },
async getGdIdx() { async getGdIdx() {
// let res = await this.postApiReturn({ let res = await this.postApiReturn({
// apiKey: 'selectEqpmGdIdxCodeList', apiKey: 'selectEqpmGdIdxCodeList',
// resKey: 'eqpmGdIdxCodeLists', resKey: 'eqpmGdIdxCodeLists',
// sendParam: { sendParam: {
// eqpmGrpId: this.selectValue03, eqpmGrpId: this.selectValue03,
// }, },
// }); });
// if (res.length > 0) { if (res.length > 0) {
// this.selectValueList05 = await res.map(item => { this.selectValueList05 = await res.map(item => {
// return { return {
// text: item.gdIdxNm, text: item.gdIdxNm,
// value: item.gdIdxId, value: item.gdIdxId,
// }; };
// }); });
// this.selectValueList05.unshift({ this.selectValueList05.unshift({
// text: '전체', text: '전체',
// value: null, value: null,
// }); });
// this.selectValue05 = this.selectValueList05[0].value; this.selectValue05 = this.selectValueList05[0].value;
// } else { } else {
// this.selectValueList05 = []; this.selectValueList05 = [];
// this.selectValue05 = null; this.selectValue05 = null;
// } }
this.setPageData({ this.setPageData({
gdIdxIdList: this.selectValueList05, gdIdxIdList: this.selectValueList05,
@ -987,6 +552,10 @@ export default {
resizable: true, resizable: true,
}, },
rowHeaders: ['rowNum'], rowHeaders: ['rowNum'],
header: {
height: 37,
},
rowHeight: 'auto',
// pageOptions: { // pageOptions: {
@ -1130,27 +699,27 @@ export default {
if (e.columnName == 'ngCnt' && e.targetType == 'cell') { if (e.columnName == 'ngCnt' && e.targetType == 'cell') {
// if(e.columnName == 'ngCnt' && data.ngCnt > 0){ // if(e.columnName == 'ngCnt' && data.ngCnt > 0){
this.$refs['EnrgEffcEqpmDetailPop'].popCheck = true; this.$refs['EnrgEffcEqpmDetailPop'].popCheck = true;
// this.setPageData({ this.setPageData({
// rowGridSelectKey: e.rowKey, rowGridSelectKey: e.rowKey,
// rowGridSelectData: { rowGridSelectData: {
// ...data, ...data,
// fromDt: this.pageData.fromDt, fromDt: this.pageData.fromDt,
// toDt: this.pageData.toDt, toDt: this.pageData.toDt,
// }, },
// }); });
} }
if (e.columnName == 'gdIdxNm' && e.targetType == 'cell') { if (e.columnName == 'gdIdxNm' && e.targetType == 'cell') {
// if(e.columnName == 'ngCnt' && data.ngCnt > 0){ // if(e.columnName == 'ngCnt' && data.ngCnt > 0){
this.$refs['EnrgEffcGdIdxDetPop'].popCheck = true; this.$refs['EnrgEffcGdIdxDetPop'].popCheck = true;
// this.setPageData({ this.setPageData({
// rowGridSelectKey: e.rowKey, rowGridSelectKey: e.rowKey,
// rowGridSelectData: { rowGridSelectData: {
// ...data, ...data,
// fromDt: this.pageData.fromDt, fromDt: this.pageData.fromDt,
// toDt: this.pageData.toDt, toDt: this.pageData.toDt,
// }, },
// }); });
} }
}, },
}, },

View File

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

View File

@ -48,555 +48,10 @@ export const actions = {
// params // params
// ); // );
// console.log(res); // console.log(res);
// const list = res.data.dataset.menuList; 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'
// },
]
let myMenu = []; let myMenu = [];
if (list.length > 0) { if (list.length > 0) {
myMenu = list myMenu = list
// .filter(ele => { // .filter(ele => {
// return ele.useFg === "1"; // return ele.useFg === "1";
@ -606,13 +61,14 @@ export const actions = {
id: item.prgmId || i, id: item.prgmId || i,
upMenuId: item.upMenuId || item.menuNm, upMenuId: item.upMenuId || item.menuNm,
// title: item.menuNm // title: item.menuNm
icon: 'mdi-chevron-down', // 아이콘은,. 값을 받아오지 않는 이상 별도로 상수화해서 prgmId 값을 키로 꺼내써야 할듯, // icon: '', // 아이콘은,. 값을 받아오지 않는 이상 별도로 상수화해서 prgmId 값을 키로 꺼내써야 할듯,
to: state[item.prgmId], to: state[item.prgmId],
// to: '' // 경로는,. 값을 받아오지 않는 이상 아이콘과 마찬가지로 짝지어 상수화 하거나 sysDivCd, prgmId 값 등을 이용해 조합해서 route를 구성해야 할듯, // to: '' // 경로는,. 값을 받아오지 않는 이상 아이콘과 마찬가지로 짝지어 상수화 하거나 sysDivCd, prgmId 값 등을 이용해 조합해서 route를 구성해야 할듯,
})); }));
// console.log("myMenu::", myMenu); // console.log("myMenu::", myMenu);
} }
dispatch('setMenuTree', myMenu); dispatch('setMenuTree', myMenu);
commit( commit(
'setMenuItems', 'setMenuItems',
@ -647,7 +103,7 @@ export const actions = {
); );
Object.getOwnPropertyNames(tmpLsit) Object.getOwnPropertyNames(tmpLsit)
.reverse() .reverse()
.forEach(function (val, idx, array) { .forEach(function(val, idx, array) {
array.map(obj => { array.map(obj => {
tmpLsit[obj].filter(v => { tmpLsit[obj].filter(v => {
if (val === v.menuId) { if (val === v.menuId) {
@ -662,7 +118,7 @@ export const actions = {
}); });
}); });
} }
console.log('menu test:', tmpLsit["0"]); // console.log(tmpLsit["0"]);
commit('setTreevieItems', tmpLsit.menu['0'], { root: true }); commit('setTreevieItems', tmpLsit['0'], { root: true });
}, },
}; };