Compare commits
20 Commits
dev-dungtv
...
c3d01c998c
Author | SHA1 | Date | |
---|---|---|---|
c3d01c998c | |||
117e0adeb9 | |||
402b09440f | |||
71f7cf4d30 | |||
d3984182e8 | |||
933d4b751f | |||
020432d5ac | |||
3f99958fe3 | |||
898df6743a | |||
dd559629ab | |||
1453e75f9a | |||
7227d5d56c | |||
85fc9a62af | |||
a87a8262f4 | |||
481434a144 | |||
524023b3e1 | |||
cb2d4e2e91 | |||
dca6673a11 | |||
15aa03b1c1 | |||
0ad898769d |
@ -12,8 +12,7 @@
|
|||||||
|
|
||||||
html,
|
html,
|
||||||
body {
|
body {
|
||||||
overflow: auto;
|
// overflow: auto;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@ -119,7 +118,7 @@ a {
|
|||||||
.v-main,
|
.v-main,
|
||||||
.v-main__wrap,
|
.v-main__wrap,
|
||||||
.container {
|
.container {
|
||||||
height: 100%;
|
// height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.v-main__wrap>.container {
|
.v-main__wrap>.container {
|
||||||
@ -144,7 +143,9 @@ a {
|
|||||||
}
|
}
|
||||||
|
|
||||||
& .router-tab__container {
|
& .router-tab__container {
|
||||||
min-height: calc(100% - 72px);
|
overflow-y: auto;
|
||||||
|
min-height: calc(100vh - 105px);
|
||||||
|
max-height: calc(100vh - 105px);
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -433,6 +434,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,12 +479,16 @@ 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");
|
||||||
}
|
}
|
||||||
|
|
||||||
.container--fluid {
|
.container--fluid {
|
||||||
background-color: map-deep-get($config, #{$theme}, "container-fluid");
|
background-color: map-deep-get($config, #{$theme}, "container-fluid");
|
||||||
|
.menu-container {
|
||||||
|
max-height:calc(100vh - 60px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.v-icon {
|
.v-icon {
|
||||||
@ -525,8 +534,6 @@ a {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.router-tab {
|
.router-tab {
|
||||||
.router-tab__header {
|
.router-tab__header {
|
||||||
background-color: map-deep-get($config, #{$theme}, "router-header");
|
background-color: map-deep-get($config, #{$theme}, "router-header");
|
||||||
@ -1255,19 +1262,11 @@ a {
|
|||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.v-list-item__content {
|
|
||||||
background-color: currentColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-list-item__title {
|
.v-list-item__title {
|
||||||
color: map-deep-get($config,
|
color: map-deep-get($config,
|
||||||
#{$theme},
|
#{$theme},
|
||||||
"tui-datepicker-calendar-color"
|
"tui-datepicker-calendar-color"
|
||||||
);
|
);
|
||||||
|
|
||||||
@if $theme ==light {
|
|
||||||
color: #fff !important;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1310,18 +1309,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] {
|
||||||
|
@ -107,10 +107,20 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.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");
|
||||||
color:map-deep-get($config, #{$theme}, "ant-btn-primary-color");
|
color:map-deep-get($config, #{$theme}, "ant-btn-primary-color");
|
||||||
|
&.ant-btn-background-ghost{
|
||||||
|
color:map-deep-get($config, #{$theme}, "ant-btn-primary-bg");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.ant-btn-default {
|
&.ant-btn-default {
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
.v-select__custom {
|
.v-select__custom {
|
||||||
|
padding: 0.125rem;
|
||||||
|
|
||||||
&.v-text-field.v-text-field--solo:not(.v-text-field--solo-flat)>.v-input__control>.v-input__slot {
|
&.v-text-field.v-text-field--solo:not(.v-text-field--solo-flat)>.v-input__control>.v-input__slot {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
@ -42,6 +44,10 @@
|
|||||||
legend {
|
legend {
|
||||||
width: 0;
|
width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.v-select-list {
|
||||||
|
padding: 0 1rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.v-input__custom {
|
.v-input__custom {
|
||||||
@ -221,6 +227,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{
|
||||||
|
@ -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,
|
||||||
),
|
),
|
||||||
);
|
);
|
@ -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">-->
|
||||||
|
@ -351,25 +351,25 @@ export default {
|
|||||||
tmpChrtOp.color = light_Col;
|
tmpChrtOp.color = light_Col;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log('ops11:',tmpChrtOp)
|
// console.log('ops11:',tmpChrtOp)
|
||||||
return tmpChrtOp;
|
return tmpChrtOp;
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
console.log('wd data:',this.widgetData)
|
// console.log('wd data:',this.widgetData)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onClick(event, instance, ECharts) {
|
onClick(event, instance, ECharts) {
|
||||||
console.log('onClick : ', event);
|
// console.log('onClick : ', event);
|
||||||
this.$emit('click', event);
|
this.$emit('click', event);
|
||||||
},
|
},
|
||||||
onDblClick(event, instance, ECharts) {
|
onDblClick(event, instance, ECharts) {
|
||||||
console.log('onDblClick : ', event);
|
// console.log('onDblClick : ', event);
|
||||||
this.$emit('dblclick', event);
|
this.$emit('dblclick', event);
|
||||||
},
|
},
|
||||||
onRightClick(event, instance, ECharts) {
|
onRightClick(event, instance, ECharts) {
|
||||||
console.log('onRightClick : ', event);
|
// console.log('onRightClick : ', event);
|
||||||
this.$emit('rclick', event);
|
this.$emit('rclick', event);
|
||||||
},
|
},
|
||||||
onLegendSelect(params) {
|
onLegendSelect(params) {
|
||||||
|
@ -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>
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
<img :src="arrowIcon" alt="">
|
<img :src="arrowIcon" alt="">
|
||||||
</div>
|
</div>
|
||||||
<v-text-field
|
<v-text-field
|
||||||
v-if="isRange"
|
v-show="isRange"
|
||||||
id="endpicker"
|
id="endpicker"
|
||||||
ref="endpicker"
|
ref="endpicker"
|
||||||
v-model="toDtValue"
|
v-model="toDtValue"
|
||||||
@ -47,9 +47,6 @@
|
|||||||
</template>
|
</template>
|
||||||
</v-text-field>
|
</v-text-field>
|
||||||
</div>
|
</div>
|
||||||
<!-- test -->
|
|
||||||
<!-- <a-button @click="onOpenDatepicker()">Open</a-button> -->
|
|
||||||
<!-- end test -->
|
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</template>
|
</template>
|
||||||
|
@ -163,7 +163,7 @@ export default {
|
|||||||
},
|
},
|
||||||
created() {},
|
created() {},
|
||||||
async mounted() {
|
async mounted() {
|
||||||
console.log('--------------DEBUG----gridData: ', this.gridData);
|
// console.log('--------------DEBUG----gridData: ', this.gridData);
|
||||||
if (this.gridName) {
|
if (this.gridName) {
|
||||||
this.gridInstance = this.$refs['tuigrid' + this.gridName];
|
this.gridInstance = this.$refs['tuigrid' + this.gridName];
|
||||||
|
|
||||||
@ -666,6 +666,8 @@ export default {
|
|||||||
store.dimension.offsetLeft = offsetLeft;
|
store.dimension.offsetLeft = offsetLeft;
|
||||||
},
|
},
|
||||||
setHeight(_a,height){
|
setHeight(_a,height){
|
||||||
|
return; // setting auto height
|
||||||
|
|
||||||
// console.log("setHeight");
|
// console.log("setHeight");
|
||||||
var dimension = _a.dimension;
|
var dimension = _a.dimension;
|
||||||
var headerHeight = dimension.headerHeight, summaryHeight = dimension.summaryHeight, tableBorderWidth = dimension.tableBorderWidth;
|
var headerHeight = dimension.headerHeight, summaryHeight = dimension.summaryHeight, tableBorderWidth = dimension.tableBorderWidth;
|
||||||
|
@ -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>
|
||||||
|
|
||||||
|
@ -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';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,7 @@
|
|||||||
<!--<v-btn icon tile :ripple="false" @click="btnActionsFnc('addLeftToRight')">
|
<!--<v-btn icon tile :ripple="false" @click="btnActionsFnc('addLeftToRight')">
|
||||||
<v-icon>mdi-chevron-right</v-icon>
|
<v-icon>mdi-chevron-right</v-icon>
|
||||||
</v-btn> -->
|
</v-btn> -->
|
||||||
<a-button type="default" @click="btnActionsFnc('addLeftToRight')">
|
<a-button @click="btnActionsFnc('addLeftToRight')" type="primary" ghost icon="right" >
|
||||||
<RightOutlines/>
|
|
||||||
</a-button>
|
</a-button>
|
||||||
|
|
||||||
<!--<v-btn
|
<!--<v-btn
|
||||||
@ -16,8 +15,7 @@
|
|||||||
>
|
>
|
||||||
<v-icon>mdi-chevron-left</v-icon>
|
<v-icon>mdi-chevron-left</v-icon>
|
||||||
</v-btn> -->
|
</v-btn> -->
|
||||||
<a-button class="mt-2" type="default" @click="btnActionsFnc('removeRightToLeft')">
|
<a-button class="mt-2" @click="btnActionsFnc('removeRightToLeft')" type="primary" ghost icon="left">
|
||||||
<LeftOutlines/>
|
|
||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -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({
|
||||||
|
@ -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({
|
||||||
|
@ -318,7 +318,7 @@ export default {
|
|||||||
// }
|
// }
|
||||||
},
|
},
|
||||||
mounted(){
|
mounted(){
|
||||||
this.initTest(); return;
|
// this.initTest(); return;
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations({
|
...mapMutations({
|
||||||
@ -478,10 +478,6 @@ export default {
|
|||||||
// })
|
// })
|
||||||
},
|
},
|
||||||
async setChart(){
|
async setChart(){
|
||||||
// test
|
|
||||||
this.initTestChart(); return;
|
|
||||||
// end test
|
|
||||||
|
|
||||||
this.loadChart = false;
|
this.loadChart = false;
|
||||||
let xAxisData = [];
|
let xAxisData = [];
|
||||||
let seriesData = [];
|
let seriesData = [];
|
||||||
|
@ -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,
|
||||||
|
@ -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>
|
||||||
|
@ -2,22 +2,17 @@
|
|||||||
<v-row class="search-box" align="center" no-gutters>
|
<v-row class="search-box" align="center" no-gutters>
|
||||||
<v-col v-if="label" :cols="labelCols">
|
<v-col v-if="label" :cols="labelCols">
|
||||||
<label for="" class="search-box-label">
|
<label for="" class="search-box-label">
|
||||||
<v-icon
|
<v-icon v-if="iconShow" small :class="['mr-1', required ? 'icon-orange' : 'icon-blue']">$icoBulletPoint</v-icon>
|
||||||
v-if="iconShow"
|
|
||||||
small
|
|
||||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
|
||||||
>$icoBulletPoint</v-icon
|
|
||||||
>
|
|
||||||
{{ label }}
|
{{ label }}
|
||||||
</label>
|
</label>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="label ? textCols : ''">
|
<v-col :cols="label ? textCols : ''">
|
||||||
<v-select v-model="selectValue" :items="searchParam[parentPrgmId].blocMstrList" label="사업장을 선택하세요"
|
<v-select v-model="selectValue" :items="searchParam[parentPrgmId].blocMstrList"
|
||||||
item-text="blocNm" item-value="idx" append-icon="" class="v-select__custom" outlined
|
item-text="blocNm" item-value="idx" append-icon="" class="v-select__custom" outlined :hide-details="true"
|
||||||
:hide-details="true" :class="['v-select__custom', customClass]">
|
:class="['v-select__custom', customClass]">
|
||||||
<template v-slot:append>
|
<template v-slot:append>
|
||||||
<v-icon>$icoChevronDown</v-icon>
|
<v-icon>$icoChevronDown</v-icon>
|
||||||
</template>
|
</template>
|
||||||
</v-select>
|
</v-select>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
@ -20,10 +20,10 @@
|
|||||||
outlined
|
outlined
|
||||||
:multiple="multiple"
|
:multiple="multiple"
|
||||||
:hide-details="true"
|
:hide-details="true"
|
||||||
append-icon=""
|
|
||||||
:class="['v-select__custom', customClass]"
|
:class="['v-select__custom', customClass]"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
:readonly="readonly"
|
:readonly="readonly"
|
||||||
|
append-icon=""
|
||||||
><template v-slot:append>
|
><template v-slot:append>
|
||||||
<v-icon>$icoChevronDown</v-icon>
|
<v-icon>$icoChevronDown</v-icon>
|
||||||
</template></v-select>
|
</template></v-select>
|
||||||
|
@ -85,6 +85,11 @@ export default {
|
|||||||
type: String,
|
type: String,
|
||||||
require: false,
|
require: false,
|
||||||
},
|
},
|
||||||
|
required: {
|
||||||
|
type: Boolean,
|
||||||
|
require: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -11,9 +11,11 @@
|
|||||||
<v-col :cols="label ? textCols : ''">
|
<v-col :cols="label ? textCols : ''">
|
||||||
<v-select v-model="selectValue" :items="searchParam[parentPrgmId][dataKey + 'List']" item-text="commCdNm"
|
<v-select v-model="selectValue" :items="searchParam[parentPrgmId][dataKey + 'List']" item-text="commCdNm"
|
||||||
item-value="commCd" outlined :hide-details="true" append-icon=""
|
item-value="commCd" outlined :hide-details="true" append-icon=""
|
||||||
:class="['v-select__custom', customClass]"><template v-slot:append>
|
:class="['v-select__custom', customClass]">
|
||||||
|
<template v-slot:append>
|
||||||
<v-icon>$icoChevronDown</v-icon>
|
<v-icon>$icoChevronDown</v-icon>
|
||||||
</template></v-select>
|
</template>
|
||||||
|
</v-select>
|
||||||
<!-- @change="updateBlocCode($event)" -->
|
<!-- @change="updateBlocCode($event)" -->
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :detailList="detailDataSetTagList"
|
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :detailList="detailDataSetTagList"
|
||||||
:btnActionsFnc="btnActions" />
|
:btnActionsFnc="btnActions" />
|
||||||
</div>
|
</div>
|
||||||
<div ref="gridParent">
|
<div ref="gridParent" style="min-height: 30vh;">
|
||||||
<Grid :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="parentPrgmId"
|
<Grid :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="parentPrgmId"
|
||||||
@getRowsData="getRowData" :innerTabGridInfo="innerTabGridInfo" :dataPath="dataPathMock" />
|
@getRowsData="getRowData" :innerTabGridInfo="innerTabGridInfo" />
|
||||||
</div>
|
</div>
|
||||||
<div ref="formParent" class="mt-4">
|
<div ref="formParent" class="mt-4">
|
||||||
<component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName" :detailList="detailDataSetTagList"
|
<component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName" :detailList="detailDataSetTagList"
|
||||||
@ -66,7 +66,7 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
gridName: 'rowDataSetTagRelGrid',
|
gridName: 'rowDataSetTagRelGrid',
|
||||||
detailDataSetTagList: myDataSetTagDetail,
|
detailDataSetTagList: myDataSetTagDetail,
|
||||||
dataPathMock: {
|
dataPathMock: {
|
||||||
@ -128,8 +128,6 @@ export default {
|
|||||||
const gridHeight = this.$refs['gridParent'].offsetHeight - 36;
|
const gridHeight = this.$refs['gridParent'].offsetHeight - 36;
|
||||||
|
|
||||||
const myOptions = {
|
const myOptions = {
|
||||||
// bodyHeight: gridHeight,
|
|
||||||
// minBodyHeight: gridHeight,
|
|
||||||
header: {
|
header: {
|
||||||
height: 28,
|
height: 28,
|
||||||
},
|
},
|
||||||
@ -137,14 +135,9 @@ export default {
|
|||||||
minRowHeight: 29,
|
minRowHeight: 29,
|
||||||
selectionUnit: 'row',
|
selectionUnit: 'row',
|
||||||
editingEvent: 'click',
|
editingEvent: 'click',
|
||||||
// columnOptions: {
|
|
||||||
// resizable: true,
|
|
||||||
// minWidth: 100
|
|
||||||
// }
|
|
||||||
};
|
};
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
// value: myOptions
|
|
||||||
value: Object.assign(Utility.defaultGridOption(gridHeight), myOptions),
|
value: Object.assign(Utility.defaultGridOption(gridHeight), myOptions),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -204,16 +197,11 @@ export default {
|
|||||||
value: myColumns,
|
value: myColumns,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
this.loadGrid = true;
|
this.loadGrid = true;
|
||||||
|
})
|
||||||
},
|
},
|
||||||
async getRowData(data, gridName) {
|
async getRowData(data, gridName) {
|
||||||
// if (data.rowStat === 'I') {
|
|
||||||
// this.detailDataSetTagList[0].disabled = false;
|
|
||||||
// this.detailDataSetTagList[1].disabled = false;
|
|
||||||
// } else {
|
|
||||||
// this.detailDataSetTagList[0].disabled = true;
|
|
||||||
// this.detailDataSetTagList[1].disabled = true;
|
|
||||||
// }
|
|
||||||
this.setGridSelectData({
|
this.setGridSelectData({
|
||||||
gridKey: gridName,
|
gridKey: gridName,
|
||||||
gridSelect: true,
|
gridSelect: true,
|
||||||
|
@ -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,
|
||||||
|
@ -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>
|
||||||
|
@ -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',
|
||||||
@ -110,13 +112,6 @@
|
|||||||
}" />
|
}" />
|
||||||
<!-- <router-view :key="$route.fullPath"/> -->
|
<!-- <router-view :key="$route.fullPath"/> -->
|
||||||
</div>
|
</div>
|
||||||
<!--
|
|
||||||
v-model="treeValue"
|
|
||||||
return-object
|
|
||||||
@input="treeModel"
|
|
||||||
@update:active="clkTab"
|
|
||||||
|
|
||||||
-->
|
|
||||||
<AdminMenu :miniVariant="miniVariant" :userNm="this.userInfo.userNm" :comId="this.userInfo.comId" v-if="false" />
|
<AdminMenu :miniVariant="miniVariant" :userNm="this.userInfo.userNm" :comId="this.userInfo.comId" v-if="false" />
|
||||||
|
|
||||||
<component ref="changePswdPop" :is="'ChangePswdPop'" v-show="false" :comId="this.userInfo.comId" />
|
<component ref="changePswdPop" :is="'ChangePswdPop'" v-show="false" :comId="this.userInfo.comId" />
|
||||||
@ -146,14 +141,6 @@
|
|||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
</v-treeview>
|
</v-treeview>
|
||||||
<!-- <template #append>
|
|
||||||
<p
|
|
||||||
class="text-caption"
|
|
||||||
:style="{ letterSpacing: '-0.2px !important' }"
|
|
||||||
>
|
|
||||||
© 2022. SK C&C all rights reserved.
|
|
||||||
</p>
|
|
||||||
</template> -->
|
|
||||||
</v-navigation-drawer>
|
</v-navigation-drawer>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -164,7 +151,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 +161,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 +187,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
|
||||||
@ -325,19 +307,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</v-main>
|
</v-main>
|
||||||
<!-- <v-footer
|
|
||||||
:absolute="!fixed"
|
|
||||||
app
|
|
||||||
:class="
|
|
||||||
drawer
|
|
||||||
? miniVariant
|
|
||||||
? 'drawerFooter miniFooter'
|
|
||||||
: 'drawerFooter'
|
|
||||||
: 'full-size'
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<span>© 2022. SK C&C all rights reserved.</span>
|
|
||||||
</v-footer> -->
|
|
||||||
</fullscreen>
|
</fullscreen>
|
||||||
</v-app>
|
</v-app>
|
||||||
</template>
|
</template>
|
||||||
@ -453,17 +422,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 +439,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 +467,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('지정된 페이지 경로가 없습니다.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1,809 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-app :class="`${isDarkMode ? 'dark-mode' : 'light-mode'}`">
|
|
||||||
<!-- <v-app :class="'light-mode'"> -->
|
|
||||||
<fullscreen :fullscreen.sync="fullscreen">
|
|
||||||
<v-navigation-drawer
|
|
||||||
ref="navigationdrawer"
|
|
||||||
:value="drawer"
|
|
||||||
:mini-variant="miniVariant"
|
|
||||||
:clipped="clipped"
|
|
||||||
:absolute="true"
|
|
||||||
mini-variant-width="60"
|
|
||||||
fixed
|
|
||||||
app
|
|
||||||
>
|
|
||||||
<div class="d-flex align-center justify-space-between py-4 px-3">
|
|
||||||
<router-link class="home" :to="myHome.root">
|
|
||||||
<div class="lnb-logo">
|
|
||||||
<img v-if="isDarkMode" src="@/assets/images/logo_dm.png" />
|
|
||||||
<img v-else src="@/assets/images/logo_lm.png" />
|
|
||||||
</div>
|
|
||||||
<!-- <div class="lnb-logo">FEMS</div>-->
|
|
||||||
</router-link>
|
|
||||||
<v-app-bar-nav-icon
|
|
||||||
ref="appbarnavicon"
|
|
||||||
id="appbarnavicon"
|
|
||||||
@click.stop="miniVariant = !miniVariant"
|
|
||||||
@click="updateTreeview"
|
|
||||||
:style="{
|
|
||||||
backgroundColor: 'transparent',
|
|
||||||
color: isDarkMode ? '#fff' : '#111',
|
|
||||||
}"
|
|
||||||
/>
|
|
||||||
<!-- <router-view :key="$route.fullPath"/> -->
|
|
||||||
</div>
|
|
||||||
<!--
|
|
||||||
v-model="treeValue"
|
|
||||||
return-object
|
|
||||||
@input="treeModel"
|
|
||||||
@update:active="clkTab"
|
|
||||||
|
|
||||||
-->
|
|
||||||
<AdminMenu
|
|
||||||
:miniVariant="miniVariant"
|
|
||||||
:userNm="this.userInfo.userNm"
|
|
||||||
:comId="this.userInfo.comId"
|
|
||||||
/>
|
|
||||||
<component
|
|
||||||
ref="changePswdPop"
|
|
||||||
:is="'ChangePswdPop'"
|
|
||||||
v-show="false"
|
|
||||||
:comId="this.userInfo.comId"
|
|
||||||
/>
|
|
||||||
<v-treeview
|
|
||||||
ref="treeview"
|
|
||||||
:active.sync="activeTree"
|
|
||||||
active-class="v-treeview-node--active"
|
|
||||||
:items="treevieItems"
|
|
||||||
activatable
|
|
||||||
hoverable
|
|
||||||
color="#3896ff"
|
|
||||||
open-on-click
|
|
||||||
@update:open="openNode"
|
|
||||||
>
|
|
||||||
<template slot="label" slot-scope="{ item }">
|
|
||||||
<button
|
|
||||||
:class="{ 'justify-center': miniVariant }"
|
|
||||||
@mouseover="doMouseOver"
|
|
||||||
>
|
|
||||||
<v-icon
|
|
||||||
v-if="item.lvl === 1 && menuIconKeys.includes(item.menuId)"
|
|
||||||
v-text="menuIconById[item.menuId]"
|
|
||||||
:class="{ 'mr-2': !miniVariant }"
|
|
||||||
size="20"
|
|
||||||
></v-icon>
|
|
||||||
<v-icon
|
|
||||||
v-else-if="
|
|
||||||
item.lvl === 1 && !menuIconKeys.includes(item.menuId)
|
|
||||||
"
|
|
||||||
:class="{ 'mr-2': !miniVariant }"
|
|
||||||
size="20"
|
|
||||||
>mdi-package-variant-closed</v-icon
|
|
||||||
>
|
|
||||||
<v-icon
|
|
||||||
v-else-if="item.lvl === 2"
|
|
||||||
:class="{ 'mr-2': !miniVariant }"
|
|
||||||
size="10"
|
|
||||||
>
|
|
||||||
mdi-checkbox-blank
|
|
||||||
</v-icon>
|
|
||||||
<v-icon
|
|
||||||
v-else-if="
|
|
||||||
item.lvl >= 3 && item.childeVo.length === 0 && item.url
|
|
||||||
"
|
|
||||||
:class="miniVariant === false ? 'mr-2' : ''"
|
|
||||||
size="9"
|
|
||||||
>
|
|
||||||
$depth3rdBulletDark
|
|
||||||
</v-icon>
|
|
||||||
<span v-if="item.url"
|
|
||||||
>{{ item.menuNm }}
|
|
||||||
<!-- <span v-if="item.bookmark" class="material-icons" style="font-size: 17px; vertical-align: middle;" @click="addBookMark(item.menuId, item.url, item.bookmark)">star</span>
|
|
||||||
<span v-else-if="!item.bookmark" class="material-icons" style="font-size: 17px; vertical-align: middle;" @click="addBookMark(item.menuId, item.url, item.bookmark)">star_border</span> -->
|
|
||||||
</span>
|
|
||||||
<span v-else-if="!item.url">{{ item.menuNm }}</span>
|
|
||||||
<v-icon
|
|
||||||
v-if="item.lvl >= 1 && item.childeVo.length > 0 && !item.url"
|
|
||||||
>
|
|
||||||
mdi-chevron-down
|
|
||||||
</v-icon>
|
|
||||||
</button>
|
|
||||||
</template>
|
|
||||||
</v-treeview>
|
|
||||||
<!-- <template #append>
|
|
||||||
<p
|
|
||||||
class="text-caption"
|
|
||||||
:style="{ letterSpacing: '-0.2px !important' }"
|
|
||||||
>
|
|
||||||
© 2022. SK C&C all rights reserved.
|
|
||||||
</p>
|
|
||||||
</template> -->
|
|
||||||
</v-navigation-drawer>
|
|
||||||
<v-main>
|
|
||||||
<v-container fluid>
|
|
||||||
<router-tab
|
|
||||||
ref="routerTab"
|
|
||||||
:tabs="treevieItems"
|
|
||||||
:keep-last-tab="false"
|
|
||||||
:contextmenu="false"
|
|
||||||
>
|
|
||||||
<template slot-scope="{ title, closable, to }">
|
|
||||||
<span>{{ title }}</span>
|
|
||||||
<v-icon
|
|
||||||
size="18"
|
|
||||||
class="ml-2"
|
|
||||||
v-if="closable"
|
|
||||||
@click.stop="onCloseTab(to)"
|
|
||||||
>mdi-close-circle</v-icon
|
|
||||||
>
|
|
||||||
</template>
|
|
||||||
<template #end>
|
|
||||||
<!--<ThemeSwitch />-->
|
|
||||||
<v-menu offset-y>
|
|
||||||
<template v-slot:activator="{ on, attrs }">
|
|
||||||
<v-btn
|
|
||||||
:ripple="false"
|
|
||||||
tile
|
|
||||||
class="btn-close"
|
|
||||||
v-bind="attrs"
|
|
||||||
v-on="on"
|
|
||||||
>
|
|
||||||
<span class="body-2">닫기</span>
|
|
||||||
<v-icon size="20">mdi-chevron-down</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
</template>
|
|
||||||
<v-list
|
|
||||||
class="py-2 btn-close-menu-list"
|
|
||||||
:style="{
|
|
||||||
backgroundColor: isDarkMode ? '#144985' : '#3f4d7d',
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
<v-list-item class="px-2">
|
|
||||||
<v-list-item-title @click="delAllTabsData()" class="body-2"
|
|
||||||
>전체 닫기</v-list-item-title
|
|
||||||
>
|
|
||||||
</v-list-item>
|
|
||||||
<v-list-item class="px-2">
|
|
||||||
<v-list-item-title
|
|
||||||
@click="deleteSblingsTab()"
|
|
||||||
class="body-2"
|
|
||||||
>나머지 닫기</v-list-item-title
|
|
||||||
>
|
|
||||||
</v-list-item>
|
|
||||||
</v-list>
|
|
||||||
</v-menu>
|
|
||||||
<v-menu offset-y>
|
|
||||||
<template v-slot:activator="{ on, attrs }">
|
|
||||||
<v-btn
|
|
||||||
:ripple="false"
|
|
||||||
tile
|
|
||||||
class="btn-close"
|
|
||||||
v-bind="attrs"
|
|
||||||
v-on="on"
|
|
||||||
style="width:100px;"
|
|
||||||
>
|
|
||||||
<span class="body-2">즐겨찾기</span>
|
|
||||||
<v-icon size="20">mdi-chevron-down</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
</template>
|
|
||||||
<v-list
|
|
||||||
v-if="myMenuList.length > 0"
|
|
||||||
class="py-2 btn-close-menu-list"
|
|
||||||
:style="{
|
|
||||||
backgroundColor: isDarkMode ? '#144985' : '#3f4d7d',
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
<v-list-item
|
|
||||||
v-for="item in myMenuList"
|
|
||||||
:key="item.menuId"
|
|
||||||
class="px-2"
|
|
||||||
style="cursor:pointer;"
|
|
||||||
>
|
|
||||||
<v-list-item-title
|
|
||||||
@click="moveToMyMenu(item.url, item.menuId, item.prgmId)"
|
|
||||||
class="body-2"
|
|
||||||
>{{ item.menuNm }}</v-list-item-title
|
|
||||||
>
|
|
||||||
</v-list-item>
|
|
||||||
</v-list>
|
|
||||||
</v-menu>
|
|
||||||
<v-btn
|
|
||||||
icon
|
|
||||||
tile
|
|
||||||
:ripple="false"
|
|
||||||
@click="removeBookMark()"
|
|
||||||
v-if="bookmarkBtn == 1"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="material-icons"
|
|
||||||
style="font-size: 17px; vertical-align: middle;"
|
|
||||||
>star</span
|
|
||||||
>
|
|
||||||
</v-btn>
|
|
||||||
<v-btn
|
|
||||||
icon
|
|
||||||
tile
|
|
||||||
:ripple="false"
|
|
||||||
@click="addBookMark()"
|
|
||||||
v-if="bookmarkBtn == 0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="material-icons"
|
|
||||||
style="font-size: 17px; vertical-align: middle;"
|
|
||||||
>star_border</span
|
|
||||||
>
|
|
||||||
</v-btn>
|
|
||||||
<v-btn
|
|
||||||
id="refresh"
|
|
||||||
icon
|
|
||||||
tile
|
|
||||||
:ripple="false"
|
|
||||||
@click="refreshTab()"
|
|
||||||
>
|
|
||||||
<v-icon>mdi-refresh</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
<v-btn icon tile :ripple="false" @click="setDrawer()">
|
|
||||||
<v-icon>mdi-crop-free</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
<!-- <v-btn icon tile :ripple="false" @click="toggle()">
|
|
||||||
<v-icon v-if="!fullscreen">mdi-arrow-expand-all</v-icon>
|
|
||||||
<v-icon v-else>mdi-arrow-collapse-all</v-icon>
|
|
||||||
</v-btn> -->
|
|
||||||
</template>
|
|
||||||
</router-tab>
|
|
||||||
</v-container>
|
|
||||||
<div v-if="loadingStackCnt > 0" class="loading-container">
|
|
||||||
<div class="loading">
|
|
||||||
<Fade-loader />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</v-main>
|
|
||||||
<!-- <v-footer
|
|
||||||
:absolute="!fixed"
|
|
||||||
app
|
|
||||||
:class="
|
|
||||||
drawer
|
|
||||||
? miniVariant
|
|
||||||
? 'drawerFooter miniFooter'
|
|
||||||
: 'drawerFooter'
|
|
||||||
: 'full-size'
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<span>© 2022. SK C&C all rights reserved.</span>
|
|
||||||
</v-footer> -->
|
|
||||||
</fullscreen>
|
|
||||||
</v-app>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { mapState, mapActions, mapMutations } from 'vuex'; // , mapActions
|
|
||||||
import ThemeSwitch from '@/components/common/ThemeSwitch';
|
|
||||||
import AdminMenu from '@/components/common/AdminMenu';
|
|
||||||
import FadeLoader from 'vue-spinner/src/FadeLoader.vue';
|
|
||||||
import ChangePswdPop from '~/components/common/modal/ChangePswdPop';
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
ThemeSwitch,
|
|
||||||
AdminMenu,
|
|
||||||
FadeLoader,
|
|
||||||
ChangePswdPop,
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
fullscreen: false,
|
|
||||||
activeTree: [],
|
|
||||||
clipped: false,
|
|
||||||
fixed: false,
|
|
||||||
miniVariant: false,
|
|
||||||
// activeTabIdx: "",
|
|
||||||
routerTabInstance: null,
|
|
||||||
// programIdObj: null,
|
|
||||||
myPrgmId: null,
|
|
||||||
treeValue: [],
|
|
||||||
menuIconById: {
|
|
||||||
// MNU0003: 'mdi-chart-line',
|
|
||||||
// MNU0004: 'mdi-alarm-light',
|
|
||||||
// MNU0005: 'mdi-pencil-box-outline',
|
|
||||||
// MNU0006: 'mdi-cog-outline',
|
|
||||||
MNU0002: 'mdi-monitor',
|
|
||||||
MNU0091: 'mdi-chart-box',
|
|
||||||
MNU0102: 'mdi-human-male-board-poll',
|
|
||||||
MNU0103: 'mdi-file-chart-outline',
|
|
||||||
MNU0104: 'mdi-chart-sankey-variant',
|
|
||||||
MNU0106: 'mdi-database-edit-outline',
|
|
||||||
MNU0105: 'mdi-chart-bell-curve',
|
|
||||||
MNU0006: 'mdi-bulletin-board',
|
|
||||||
MNU0007: 'mdi-cog',
|
|
||||||
menu2: 'mdi-monitor',
|
|
||||||
menu3: 'mdi-chart-box',
|
|
||||||
menu4: 'mdi-human-male-board-poll',
|
|
||||||
menu5: 'mdi-file-chart-outline',
|
|
||||||
menu6: 'mdi-chart-sankey-variant',
|
|
||||||
menu7: 'mdi-database-edit-outline',
|
|
||||||
menu8: 'mdi-bulletin-board',
|
|
||||||
},
|
|
||||||
isLoading: false,
|
|
||||||
loadingStackCnt: 0,
|
|
||||||
bookmarkBtn: 0,
|
|
||||||
myMenuList: [],
|
|
||||||
prgmIdList: [],
|
|
||||||
initPageData: {},
|
|
||||||
obj: {},
|
|
||||||
newObj: {},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
...mapState({
|
|
||||||
myHome: 'myHome',
|
|
||||||
myHomeTabItems: 'myHomeTabItems',
|
|
||||||
indexRoot: 'indexRoot',
|
|
||||||
treevieItems: 'treevieItems',
|
|
||||||
menuData: 'menuData',
|
|
||||||
menuLink: state => state.modules.menu,
|
|
||||||
activeMenuId: state => state.activeMenuInfo.menuId,
|
|
||||||
isDarkMode: 'isDarkMode',
|
|
||||||
drawer: state => state.drawer,
|
|
||||||
userInfo: state => state.userInfo,
|
|
||||||
pageData: 'pageData',
|
|
||||||
}),
|
|
||||||
activeTabs() {
|
|
||||||
if (this.routerTabInstance) {
|
|
||||||
return this.routerTabInstance.activeTab;
|
|
||||||
} else {
|
|
||||||
return this.myHome.root;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
menuIconKeys() {
|
|
||||||
return Object.keys(this.menuIconById);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
activeTabs: {
|
|
||||||
// 탭 클릭시 좌측 treeview 싱크 맞추가
|
|
||||||
deep: true,
|
|
||||||
handler(value) {
|
|
||||||
if (value) {
|
|
||||||
const prgmId = value.prgmId;
|
|
||||||
let thisPrgmId = this.$route.query.prgmId;
|
|
||||||
var tmp = 0;
|
|
||||||
for (var i = 0; i < this.myMenuList.length; i++) {
|
|
||||||
if (this.myMenuList[i].prgmId == thisPrgmId) {
|
|
||||||
tmp = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.bookmarkBtn = tmp;
|
|
||||||
//if (thisPrgmId && this.myPrgmId && this.myPrgmId != thisPrgmId) {
|
|
||||||
this.myPrgmId = prgmId;
|
|
||||||
this.activeTree.pop(); // 기존 황성화 트리 값 삭제
|
|
||||||
this.activeTree.push(thisPrgmId); // 인덱스가 아닐 경우 새로 넣어줌
|
|
||||||
// this.$set(this.activeTree, 0, prgmId); // treeview activetree 새로 셋팅 <= 위 pop() 과 push() 로 대체
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
activeTree: {
|
|
||||||
deep: true,
|
|
||||||
handler(newVal, oldVal) {
|
|
||||||
var _this = this;
|
|
||||||
const nv = newVal[0];
|
|
||||||
const ov = oldVal[0];
|
|
||||||
if (nv !== ov) {
|
|
||||||
if (!nv) {
|
|
||||||
// 중복클릭 시 발생 상황 기존 값을 다시 넣어줌
|
|
||||||
this.activeTree.push(ov);
|
|
||||||
} else {
|
|
||||||
this.myPrgmId = nv;
|
|
||||||
if (this.menuData[nv].url) {
|
|
||||||
const menuUrl = this.menuData[nv].url;
|
|
||||||
const menuId = this.menuData[nv].menuId;
|
|
||||||
|
|
||||||
const isCommMenu = menuUrl.indexOf('comm/');
|
|
||||||
const isEmsMenu = menuUrl.indexOf('ems/');
|
|
||||||
const isCmmsMenu = menuUrl.indexOf('cmms/');
|
|
||||||
|
|
||||||
// console.log('activeTree...');
|
|
||||||
|
|
||||||
if (isCommMenu > -1 || isEmsMenu > -1 || isCmmsMenu > -1) {
|
|
||||||
// console.log('activeTree if stmt1');
|
|
||||||
// console.log('this.isLoading : ', this.isLoading);
|
|
||||||
// if(this.isLoading == true){
|
|
||||||
// console.log('if isLoading stmt1');
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
this.$router.push({
|
|
||||||
path: `${this.menuData[nv].url}?prgmId=${nv}`,
|
|
||||||
});
|
|
||||||
// this.$router.beforeEach((to, from, next) => {
|
|
||||||
// if(_this.isLoading == true){
|
|
||||||
// next(false);
|
|
||||||
// }
|
|
||||||
// if (!to.matched.length) {
|
|
||||||
// next(false);
|
|
||||||
// } else {
|
|
||||||
// next();
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
var tmp = 0;
|
|
||||||
for (var i = 0; i < this.myMenuList.length; i++) {
|
|
||||||
if (this.myMenuList[i].menuId == menuId) {
|
|
||||||
tmp = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.bookmarkBtn = tmp;
|
|
||||||
} else {
|
|
||||||
// console.log('activeTree if stmt2');
|
|
||||||
// console.log('this.isLoading : ', this.isLoading);
|
|
||||||
// if(this.isLoading == true){
|
|
||||||
// console.log('if isLoading stmt2');
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
this.$refs.routerTab.openIframe(
|
|
||||||
encodeURI(
|
|
||||||
`http://localhost:9999${this.menuData[nv].url}?prgmId=${nv}`,
|
|
||||||
),
|
|
||||||
this.menuData[nv].menuNm,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
this.$axios.get(`${this.menuData[nv].url}?$menuId=${menuId}`);
|
|
||||||
} else alert('지정된 페이지 경로가 없습니다.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
menuData: {
|
|
||||||
deep: true,
|
|
||||||
handler(newVal, oldVal) {},
|
|
||||||
},
|
|
||||||
pageData: {
|
|
||||||
deep: true,
|
|
||||||
handler(newVal, oldVal) {
|
|
||||||
localStorage.setItem('pageData', JSON.stringify(this.pageData));
|
|
||||||
//console.log("localPageData", this.pageData);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
// menuLink: {
|
|
||||||
// deep: true,
|
|
||||||
// handler() {
|
|
||||||
// let prgmIdList = Object.keys(this.menuData);
|
|
||||||
// let initPageData = {};
|
|
||||||
// prgmIdList.forEach(item => {
|
|
||||||
// let newObj = {
|
|
||||||
// [item] : {}
|
|
||||||
// };
|
|
||||||
// initPageData = Object.assign(initPageData, newObj)
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
created() {},
|
|
||||||
beforeUnmount() {
|
|
||||||
//window.removeEventListener('beforeunload', this.unLoadEvent);
|
|
||||||
},
|
|
||||||
async mounted() {
|
|
||||||
//window.addEventListener('beforeunload', this.unLoadEvent);
|
|
||||||
const _this = this;
|
|
||||||
await this.getMenu({});
|
|
||||||
await this.initPageDataFunc();
|
|
||||||
await this.selectMyMenuFunc();
|
|
||||||
|
|
||||||
this.routerTabInstance = this.$refs.routerTab;
|
|
||||||
if (this.$route.fullPath == '/') {
|
|
||||||
this.routerTabInstance.reset();
|
|
||||||
this.$router.replace(this.myHome.root);
|
|
||||||
} else if (this.$route.fullPath != this.myHome.root) {
|
|
||||||
this.$refs.routerTab.items.unshift(this.myHomeTabItems);
|
|
||||||
} else {
|
|
||||||
this.refreshTab();
|
|
||||||
}
|
|
||||||
|
|
||||||
// this.$router.beforeEach((to, from, next) => {
|
|
||||||
// _this.isLoading = true;
|
|
||||||
// // console.log('$router.beforeEach...');
|
|
||||||
// // console.log('_this.isLoading[beforeEach] : ', _this.isLoading);
|
|
||||||
// // console.log('_this.loadingStackCnt : ', _this.loadingStackCnt);
|
|
||||||
// if(_this.loadingStackCnt > 0 && _this.isLoading){
|
|
||||||
// next(false);
|
|
||||||
// // return;
|
|
||||||
// }else if (!to.matched.length){
|
|
||||||
// next(false);
|
|
||||||
// }else{
|
|
||||||
// next();
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
|
|
||||||
// this.$router.afterEach((to, from, failure) => {
|
|
||||||
// });
|
|
||||||
|
|
||||||
// 요청 인터셉터
|
|
||||||
this.$axios.interceptors.request.use(
|
|
||||||
function(config) {
|
|
||||||
//alert(1)
|
|
||||||
_this.isLoading = true;
|
|
||||||
if(config.url.search('Page')<0){
|
|
||||||
// _this.loadingStackCnt++;
|
|
||||||
}
|
|
||||||
return config;
|
|
||||||
},
|
|
||||||
function(error) {
|
|
||||||
// 에라 나면 로딩 끄기
|
|
||||||
//alert(2)
|
|
||||||
_this.isLoading = false;
|
|
||||||
// if(error.url.search('Page')<0){
|
|
||||||
// _this.loadingStackCnt--;
|
|
||||||
// }
|
|
||||||
return Promise.reject(error);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
// 응답 인터셉터
|
|
||||||
this.$axios.interceptors.response.use(
|
|
||||||
function(response) {
|
|
||||||
_this.isLoading = false;
|
|
||||||
if(response.config.url.search('Page')<0){
|
|
||||||
_this.loadingStackCnt--;
|
|
||||||
}
|
|
||||||
//alert(3)
|
|
||||||
return response;
|
|
||||||
},
|
|
||||||
function(error) {
|
|
||||||
// 응답 에러 시에도 로딩 끄기
|
|
||||||
//alert(4 )
|
|
||||||
_this.isLoading = false;
|
|
||||||
// if(error.url.search('Page')<0){
|
|
||||||
// _this.loadingStackCnt--;
|
|
||||||
// }
|
|
||||||
return Promise.reject(error);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
...mapMutations({
|
|
||||||
setDrawer: 'setDrawer', // 사이드메뉴 접고 펼치기
|
|
||||||
setPageDataInit: 'setPageDataInit',
|
|
||||||
}),
|
|
||||||
...mapActions({
|
|
||||||
getMenu: 'modules/menu/getMenu', // 트리메뉴 가져오기
|
|
||||||
chkOpenTabList: 'chkOpenTabList', // 트리메뉴 클릭 시 해당 pprgmId push
|
|
||||||
postUpdateApi: 'modules/list/postUpdateApi',
|
|
||||||
postApiReturn: 'modules/list/postApiReturn',
|
|
||||||
}),
|
|
||||||
// // tabActive(id) {},
|
|
||||||
// clkTab(itemArr) {
|
|
||||||
// console.log(itemArr[0]);
|
|
||||||
// if (!itemArr[0].to) return;
|
|
||||||
// this.$router.push({
|
|
||||||
// path: itemArr[0].to
|
|
||||||
// });
|
|
||||||
// },
|
|
||||||
toggle() {
|
|
||||||
this.fullscreen = !this.fullscreen;
|
|
||||||
},
|
|
||||||
refreshTab() {
|
|
||||||
// console.log("현재 탭 새로고침");
|
|
||||||
//this.routerTabInstance.refresh();
|
|
||||||
this.$nuxt.refresh();
|
|
||||||
this.routerTabInstance.refresh();
|
|
||||||
},
|
|
||||||
delAllTabsData() {
|
|
||||||
// console.log("탭 전체 닫기");
|
|
||||||
// for (let i = this.routerTabInstance.items.length - 1; i > -1; --i) {
|
|
||||||
// const diffTo = this.routerTabInstance.items[i].to;
|
|
||||||
|
|
||||||
// if (diffTo != this.myHome.root) {
|
|
||||||
// this.routerTabInstance.items.splice(i, 1);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//if(this.$router.currentRoute.fullPath != this.myHome.root){
|
|
||||||
if (this.routerTabInstance.items.length > 0) {
|
|
||||||
this.routerTabInstance.reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$router.replace(this.myHome.root);
|
|
||||||
//}
|
|
||||||
},
|
|
||||||
deleteSblingsTab() {
|
|
||||||
// console.log("탭 나머지 닫기");
|
|
||||||
// for (let i = this.routerTabInstance.items.length - 1; i > -1; --i) {
|
|
||||||
// const activeTo = this.routerTabInstance.activeTab.to;
|
|
||||||
// const diffTo = this.routerTabInstance.items[i].to;
|
|
||||||
|
|
||||||
// if (activeTo != diffTo && diffTo != this.myHome.root) {
|
|
||||||
// this.routerTabInstance.items.splice(i, 1);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
if (this.routerTabInstance.items.length > 1) {
|
|
||||||
for (let i = this.routerTabInstance.items.length - 1; i > -1; --i) {
|
|
||||||
const activeTo = this.routerTabInstance.activeTab.to;
|
|
||||||
const diffTo = this.routerTabInstance.items[i].to;
|
|
||||||
|
|
||||||
if (activeTo != diffTo && diffTo != this.myHome.root) {
|
|
||||||
this.routerTabInstance.close(diffTo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
tabScrollMove(dir) {
|
|
||||||
const scrollTab = this.routerTabInstance.$refs.scroll;
|
|
||||||
const scrollWidth =
|
|
||||||
scrollTab.scrollData.scrollWidth - scrollTab.scrollData.clientWidth;
|
|
||||||
const scrollLeft = scrollTab.scrollData.scrollLeft;
|
|
||||||
|
|
||||||
const xAxis = this.calcScroll(scrollLeft, scrollWidth, dir);
|
|
||||||
scrollTab.scrollTo(xAxis, 0);
|
|
||||||
},
|
|
||||||
updateTreeview() {
|
|
||||||
if (this.miniVariant) {
|
|
||||||
// sidebar 접혀져 있을 때
|
|
||||||
this.$refs.treeview.updateAll();
|
|
||||||
} else {
|
|
||||||
// sidebar 펼쳐져 있을 때
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 열려있는 노드의 key 값 리턴(선택된 값이 아님)
|
|
||||||
openNode(node) {
|
|
||||||
//console.log('onOpen');
|
|
||||||
if (this.miniVariant) {
|
|
||||||
// sidebar 접혀져 있을 때
|
|
||||||
if (event.currentTarget.id !== this.$refs.appbarnavicon.$refs.link.id) {
|
|
||||||
this.$refs.appbarnavicon.click(event);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// sidebar 펼쳐져 있을 때
|
|
||||||
}
|
|
||||||
},
|
|
||||||
doMouseOver: function(event) {
|
|
||||||
//console.log(event);
|
|
||||||
},
|
|
||||||
calcScroll(sl, sw, dir) {
|
|
||||||
const deScrW = 60;
|
|
||||||
let returnSl = 0;
|
|
||||||
switch (dir) {
|
|
||||||
case 'prev':
|
|
||||||
returnSl = sl - deScrW <= 0 ? 0 : sl - deScrW;
|
|
||||||
break;
|
|
||||||
case 'next':
|
|
||||||
returnSl = sl + deScrW >= sw ? sw : sl + deScrW;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return returnSl;
|
|
||||||
},
|
|
||||||
initPageDataFunc() {
|
|
||||||
const _this = this;
|
|
||||||
this.prgmIdList = Object.keys(this.menuData);
|
|
||||||
this.initPageData = {};
|
|
||||||
this.prgmIdList.forEach(item => {
|
|
||||||
_this.obj = {};
|
|
||||||
if (_this.pageData[item]) {
|
|
||||||
_this.obj = _this.pageData[item];
|
|
||||||
}
|
|
||||||
_this.newObj = {};
|
|
||||||
_this.newObj = {
|
|
||||||
[item]: _this.obj,
|
|
||||||
};
|
|
||||||
_this.initPageData = Object.assign(
|
|
||||||
{},
|
|
||||||
_this.initPageData,
|
|
||||||
_this.newObj,
|
|
||||||
);
|
|
||||||
});
|
|
||||||
localStorage.setItem('pageData', JSON.stringify(this.initPageData));
|
|
||||||
this.setPageDataInit(this.initPageData);
|
|
||||||
},
|
|
||||||
onCloseTab(to) {
|
|
||||||
const findIndex = this.$tabs.items.findIndex(v => v.to === to);
|
|
||||||
const { to: next } = this.$tabs.items[findIndex - 1];
|
|
||||||
this.$tabs.close(to, null);
|
|
||||||
if (this.$router.currentRoute.fullPath != next) {
|
|
||||||
this.$router.replace(next);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async addBookMark() {
|
|
||||||
var params = {
|
|
||||||
menuId: this.activeMenuId,
|
|
||||||
};
|
|
||||||
await this.postUpdateApi({
|
|
||||||
apiKey: 'saveBookmark',
|
|
||||||
sendParam: {
|
|
||||||
datas: {
|
|
||||||
bookmarkDt: [params],
|
|
||||||
},
|
|
||||||
params: {},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const res = await this.postApiReturn({
|
|
||||||
apiKey: 'selectMyMenu',
|
|
||||||
resKey: 'menuData',
|
|
||||||
sendParam: {},
|
|
||||||
});
|
|
||||||
|
|
||||||
this.myMenuList = res;
|
|
||||||
this.bookmarkBtn = 1;
|
|
||||||
},
|
|
||||||
async removeBookMark() {
|
|
||||||
var params = {
|
|
||||||
menuId: this.activeMenuId,
|
|
||||||
};
|
|
||||||
await this.postUpdateApi({
|
|
||||||
apiKey: 'deleteBookmark',
|
|
||||||
sendParam: {
|
|
||||||
datas: {
|
|
||||||
bookmarkDt: [params],
|
|
||||||
},
|
|
||||||
params: {},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const res = await this.postApiReturn({
|
|
||||||
apiKey: 'selectMyMenu',
|
|
||||||
resKey: 'menuData',
|
|
||||||
sendParam: {},
|
|
||||||
});
|
|
||||||
this.myMenuList = res;
|
|
||||||
this.bookmarkBtn = 0;
|
|
||||||
},
|
|
||||||
moveToMyMenu(url, menuId, prgmId) {
|
|
||||||
// console.log('moveToMyMenu...');
|
|
||||||
// if(this.isLoading == true){
|
|
||||||
// console.log('if isLoading stmt3');
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
this.$router.push({
|
|
||||||
path: url + '?prgmId=' + prgmId,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
async selectMyMenuFunc() {
|
|
||||||
const headers = {
|
|
||||||
headers: {
|
|
||||||
'X-Fems-MenuId': 'MNU0001',
|
|
||||||
},
|
|
||||||
};
|
|
||||||
const params = { params: {} };
|
|
||||||
const res = await this.$axios.post(
|
|
||||||
'/comm/base/MenuMngCtr/selectMyMenu',
|
|
||||||
params,
|
|
||||||
headers,
|
|
||||||
);
|
|
||||||
|
|
||||||
this.myMenuList = res.data.dataset.menuData;
|
|
||||||
},
|
|
||||||
// unLoadEvent: function (event) {
|
|
||||||
// //if (this.isLeaveSite) return;
|
|
||||||
// //this.delAllTabsData();
|
|
||||||
// this.$router.push({
|
|
||||||
// path: this.myHome.root
|
|
||||||
// });
|
|
||||||
// console.log("event", event)
|
|
||||||
// event.preventDefault();
|
|
||||||
// event.returnValue = '';
|
|
||||||
|
|
||||||
// },
|
|
||||||
// treeModel(obj) {
|
|
||||||
// console.log(">>> treeModel::obj = ", obj);
|
|
||||||
// this.treeValue[0] = obj;
|
|
||||||
// this.$refs.treeview.updateAll();
|
|
||||||
// // console.log(this.$refs.treeview);
|
|
||||||
// // this.$refs.treeview.activeCache = obj.id;
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.loading {
|
|
||||||
z-index: 99;
|
|
||||||
position: fixed;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
background-color: rgba(0, 0, 0, 0.4);
|
|
||||||
//box-shadow: rgba(68, 67, 67, 0.9) 0 0 0 9999px;
|
|
||||||
}
|
|
||||||
.v-spinner {
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,928 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-app :class="`${isDarkMode ? 'dark-mode' : 'light-mode'}`">
|
|
||||||
<!-- <v-app :class="'light-mode'"> -->
|
|
||||||
<fullscreen :fullscreen.sync="fullscreen">
|
|
||||||
<v-navigation-drawer
|
|
||||||
ref="navigationdrawer"
|
|
||||||
:value="drawer"
|
|
||||||
:mini-variant="miniVariant"
|
|
||||||
:clipped="clipped"
|
|
||||||
:absolute="true"
|
|
||||||
mini-variant-width="60"
|
|
||||||
fixed
|
|
||||||
app
|
|
||||||
>
|
|
||||||
<div class="d-flex align-center justify-space-between py-4 px-3">
|
|
||||||
<router-link class="home" :to="myHome.root">
|
|
||||||
<div class="lnb-logo">
|
|
||||||
<img v-if="isDarkMode" src="@/assets/images/logo_dm.png" />
|
|
||||||
<img v-else src="@/assets/images/logo_lm.png" />
|
|
||||||
</div>
|
|
||||||
<!-- <div class="lnb-logo">FEMS</div>-->
|
|
||||||
</router-link>
|
|
||||||
<v-app-bar-nav-icon
|
|
||||||
ref="appbarnavicon"
|
|
||||||
id="appbarnavicon"
|
|
||||||
@click.stop="miniVariant = !miniVariant"
|
|
||||||
@click="updateTreeview"
|
|
||||||
:style="{
|
|
||||||
backgroundColor: 'transparent',
|
|
||||||
color: isDarkMode ? '#fff' : '#111',
|
|
||||||
}"
|
|
||||||
/>
|
|
||||||
<!-- <router-view :key="$route.fullPath"/> -->
|
|
||||||
</div>
|
|
||||||
<!--
|
|
||||||
v-model="treeValue"
|
|
||||||
return-object
|
|
||||||
@input="treeModel"
|
|
||||||
@update:active="clkTab"
|
|
||||||
|
|
||||||
-->
|
|
||||||
<AdminMenu
|
|
||||||
:miniVariant="miniVariant"
|
|
||||||
:userNm="this.userInfo.userNm"
|
|
||||||
:comId="this.userInfo.comId"
|
|
||||||
/>
|
|
||||||
<component
|
|
||||||
ref="changePswdPop"
|
|
||||||
:is="'ChangePswdPop'"
|
|
||||||
v-show="false"
|
|
||||||
:comId="this.userInfo.comId"
|
|
||||||
/>
|
|
||||||
<v-treeview
|
|
||||||
ref="treeview"
|
|
||||||
:active.sync="activeTree"
|
|
||||||
active-class="v-treeview-node--active"
|
|
||||||
:items="treevieItems"
|
|
||||||
activatable
|
|
||||||
hoverable
|
|
||||||
color="#3896ff"
|
|
||||||
open-on-click
|
|
||||||
@update:open="openNode"
|
|
||||||
>
|
|
||||||
<template slot="label" slot-scope="{ item }">
|
|
||||||
<button :class="{ 'justify-center': miniVariant }" @mouseover="doMouseOver">
|
|
||||||
<v-icon
|
|
||||||
v-if="item.lvl === 1 && menuIconKeys.includes(item.menuId)"
|
|
||||||
v-text="menuIconById[item.menuId]"
|
|
||||||
:class="{ 'mr-2': !miniVariant }"
|
|
||||||
size="20"
|
|
||||||
></v-icon>
|
|
||||||
<v-icon
|
|
||||||
v-else-if="item.lvl === 1 && !menuIconKeys.includes(item.menuId)"
|
|
||||||
:class="{ 'mr-2': !miniVariant }"
|
|
||||||
size="20"
|
|
||||||
>mdi-package-variant-closed</v-icon
|
|
||||||
>
|
|
||||||
<v-icon
|
|
||||||
v-else-if="item.lvl === 2"
|
|
||||||
:class="{ 'mr-2': !miniVariant }"
|
|
||||||
size="10"
|
|
||||||
>
|
|
||||||
mdi-checkbox-blank
|
|
||||||
</v-icon>
|
|
||||||
<v-icon
|
|
||||||
v-else-if="item.lvl >= 3 && item.childeVo.length === 0 && item.url"
|
|
||||||
:class="miniVariant === false ? 'mr-2' : ''"
|
|
||||||
size="9"
|
|
||||||
>
|
|
||||||
$depth3rdBulletDark
|
|
||||||
</v-icon>
|
|
||||||
<span v-if="item.url"
|
|
||||||
>{{ item.menuNm }}
|
|
||||||
<!-- <span v-if="item.bookmark" class="material-icons" style="font-size: 17px; vertical-align: middle;" @click="addBookMark(item.menuId, item.url, item.bookmark)">star</span>
|
|
||||||
<span v-else-if="!item.bookmark" class="material-icons" style="font-size: 17px; vertical-align: middle;" @click="addBookMark(item.menuId, item.url, item.bookmark)">star_border</span> -->
|
|
||||||
</span>
|
|
||||||
<span v-else-if="!item.url">{{ item.menuNm }}</span>
|
|
||||||
<v-icon v-if="item.lvl >= 1 && item.childeVo.length > 0 && !item.url">
|
|
||||||
mdi-chevron-down
|
|
||||||
</v-icon>
|
|
||||||
</button>
|
|
||||||
</template>
|
|
||||||
</v-treeview>
|
|
||||||
<!-- <template #append>
|
|
||||||
<p
|
|
||||||
class="text-caption"
|
|
||||||
:style="{ letterSpacing: '-0.2px !important' }"
|
|
||||||
>
|
|
||||||
© 2022. SK C&C all rights reserved.
|
|
||||||
</p>
|
|
||||||
</template> -->
|
|
||||||
</v-navigation-drawer>
|
|
||||||
<v-main>
|
|
||||||
<v-container fluid>
|
|
||||||
<router-tab
|
|
||||||
ref="routerTab"
|
|
||||||
:tabs="treevieItems"
|
|
||||||
:keep-last-tab="false"
|
|
||||||
:contextmenu="false"
|
|
||||||
>
|
|
||||||
<template slot-scope="{ title, closable, to }">
|
|
||||||
<span>{{ title }}</span>
|
|
||||||
<v-icon size="18" class="ml-2" v-if="closable" @click.stop="onCloseTab(to)"
|
|
||||||
>mdi-close-circle</v-icon
|
|
||||||
>
|
|
||||||
</template>
|
|
||||||
<template #end>
|
|
||||||
<ThemeSwitch style="margin-right: 20px" />
|
|
||||||
<v-menu offset-y>
|
|
||||||
<template v-slot:activator="{ on, attrs }">
|
|
||||||
<!-- <v-btn :ripple="false" tile class="btn-close" v-bind="attrs" v-on="on">
|
|
||||||
<span class="body-2">닫기</span>
|
|
||||||
<v-icon size="20">mdi-chevron-down</v-icon>
|
|
||||||
</v-btn> -->
|
|
||||||
<a-button style="width: 80px; height: 36px" class="btn-close">
|
|
||||||
<span class="body-2">닫기</span>
|
|
||||||
<v-icon size="20">mdi-chevron-down</v-icon></a-button
|
|
||||||
>
|
|
||||||
</template>
|
|
||||||
<v-list
|
|
||||||
class="py-2 btn-close-menu-list"
|
|
||||||
:style="{
|
|
||||||
backgroundColor: isDarkMode ? '#144985' : '#3f4d7d',
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
<v-list-item class="px-2">
|
|
||||||
<v-list-item-title @click="delAllTabsData()" class="body-2"
|
|
||||||
>전체 닫기</v-list-item-title
|
|
||||||
>
|
|
||||||
</v-list-item>
|
|
||||||
<v-list-item class="px-2">
|
|
||||||
<v-list-item-title @click="deleteSblingsTab()" class="body-2"
|
|
||||||
>나머지 닫기</v-list-item-title
|
|
||||||
>
|
|
||||||
</v-list-item>
|
|
||||||
</v-list>
|
|
||||||
</v-menu>
|
|
||||||
<v-menu offset-y>
|
|
||||||
<template v-slot:activator="{ on, attrs }">
|
|
||||||
<!-- <v-btn
|
|
||||||
:ripple="false"
|
|
||||||
tile
|
|
||||||
class="btn-close"
|
|
||||||
v-bind="attrs"
|
|
||||||
v-on="on"
|
|
||||||
style="width: 100px"
|
|
||||||
>
|
|
||||||
<span class="body-2">즐겨찾기</span>
|
|
||||||
<v-icon size="20">mdi-chevron-down</v-icon>
|
|
||||||
</v-btn> -->
|
|
||||||
<a-button style="width: 100px; height: 36px" class="btn-close">
|
|
||||||
<span class="body-2">즐겨찾기</span>
|
|
||||||
<v-icon size="20">mdi-chevron-down</v-icon></a-button
|
|
||||||
>
|
|
||||||
</template>
|
|
||||||
<v-list
|
|
||||||
v-if="myMenuList.length > 0"
|
|
||||||
class="py-2 btn-close-menu-list"
|
|
||||||
:style="{
|
|
||||||
backgroundColor: isDarkMode ? '#144985' : '#3f4d7d',
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
<v-list-item
|
|
||||||
v-for="item in myMenuList"
|
|
||||||
:key="item.menuId"
|
|
||||||
class="px-2"
|
|
||||||
style="cursor: pointer"
|
|
||||||
>
|
|
||||||
<v-list-item-title
|
|
||||||
@click="moveToMyMenu(item.url, item.menuId, item.prgmId)"
|
|
||||||
class="body-2"
|
|
||||||
>{{ item.menuNm }}</v-list-item-title
|
|
||||||
>
|
|
||||||
</v-list-item>
|
|
||||||
</v-list>
|
|
||||||
</v-menu>
|
|
||||||
<!-- <v-btn
|
|
||||||
icon
|
|
||||||
tile
|
|
||||||
:ripple="false"
|
|
||||||
@click="removeBookMark()"
|
|
||||||
v-if="bookmarkBtn == 1"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="material-icons"
|
|
||||||
style="font-size: 17px; vertical-align: middle"
|
|
||||||
>star</span
|
|
||||||
>
|
|
||||||
</v-btn> -->
|
|
||||||
|
|
||||||
<a-button
|
|
||||||
id="refresh"
|
|
||||||
:style="{
|
|
||||||
padding: '0',
|
|
||||||
width: '36px',
|
|
||||||
height: '36px',
|
|
||||||
display: 'flex',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'center',
|
|
||||||
borderRadius: '4px', // square corners
|
|
||||||
}"
|
|
||||||
type="text"
|
|
||||||
@click="removeBookMark"
|
|
||||||
v-if="bookmarkBtn == 1"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="material-icons"
|
|
||||||
style="font-size: 17px; vertical-align: middle"
|
|
||||||
>star</span
|
|
||||||
>
|
|
||||||
</a-button>
|
|
||||||
|
|
||||||
<!-- <v-btn
|
|
||||||
icon
|
|
||||||
tile
|
|
||||||
:ripple="false"
|
|
||||||
@click="addBookMark()"
|
|
||||||
v-if="bookmarkBtn == 0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="material-icons"
|
|
||||||
style="font-size: 17px; vertical-align: middle"
|
|
||||||
>star_border</span
|
|
||||||
>
|
|
||||||
</v-btn> -->
|
|
||||||
|
|
||||||
<a-button
|
|
||||||
id="refresh"
|
|
||||||
:style="{
|
|
||||||
padding: '0',
|
|
||||||
width: '36px',
|
|
||||||
height: '36px',
|
|
||||||
display: 'flex',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'center',
|
|
||||||
borderRadius: '4px', // square corners
|
|
||||||
}"
|
|
||||||
type="text"
|
|
||||||
@click="addBookMark"
|
|
||||||
v-if="bookmarkBtn == 0"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="material-icons"
|
|
||||||
style="font-size: 17px; vertical-align: middle"
|
|
||||||
>star_border</span
|
|
||||||
>
|
|
||||||
</a-button>
|
|
||||||
|
|
||||||
<v-btn
|
|
||||||
style="
|
|
||||||
background-color: white;
|
|
||||||
color: #fff;
|
|
||||||
border: 0.2px solid rgb(217, 217, 217);
|
|
||||||
"
|
|
||||||
id="refresh"
|
|
||||||
icon
|
|
||||||
tile
|
|
||||||
:ripple="false"
|
|
||||||
@click="refreshTab()"
|
|
||||||
>
|
|
||||||
<v-icon style="color: rgba(0, 0, 0, 0.54)">mdi-refresh</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
|
|
||||||
<!-- <a-button
|
|
||||||
id="refresh"
|
|
||||||
:style="{
|
|
||||||
padding: '0',
|
|
||||||
width: '36px',
|
|
||||||
height: '36px',
|
|
||||||
display: 'flex',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'center',
|
|
||||||
borderRadius: '4px', // square corners
|
|
||||||
}"
|
|
||||||
type="text"
|
|
||||||
@click="refreshTab"
|
|
||||||
>
|
|
||||||
<v-icon >mdi-refresh</v-icon>
|
|
||||||
</a-button> -->
|
|
||||||
|
|
||||||
<!-- <a-button id="refresh" type="text" @click="setDrawer" class="icon-button">
|
|
||||||
<i class="mdi mdi-crop-free" style="font-size: 20px"></i>
|
|
||||||
</a-button>
|
|
||||||
|
|
||||||
<a-button type="text" @click="setDrawer" class="icon-button">
|
|
||||||
<i class="mdi mdi-crop-free" style="font-size: 20px"></i>
|
|
||||||
</a-button> -->
|
|
||||||
|
|
||||||
<!-- <a-button
|
|
||||||
:style="{
|
|
||||||
padding: '0',
|
|
||||||
width: '36px',
|
|
||||||
height: '36px',
|
|
||||||
display: 'flex',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'center',
|
|
||||||
borderRadius: '4px', // square corners
|
|
||||||
}"
|
|
||||||
type="text"
|
|
||||||
@click="toggle"
|
|
||||||
>
|
|
||||||
<v-icon v-if="!fullscreen">mdi-arrow-expand-all</v-icon>
|
|
||||||
<v-icon v-else>mdi-arrow-collapse-all</v-icon>
|
|
||||||
</a-button> -->
|
|
||||||
|
|
||||||
<v-btn
|
|
||||||
style="
|
|
||||||
background-color: white;
|
|
||||||
color: #fff;
|
|
||||||
border: 0.2px solid rgb(217, 217, 217);
|
|
||||||
"
|
|
||||||
icon
|
|
||||||
tile
|
|
||||||
:ripple="false"
|
|
||||||
@click="toggle()"
|
|
||||||
>
|
|
||||||
<v-icon style="color: rgba(0, 0, 0, 0.54)" v-if="!fullscreen"
|
|
||||||
>mdi-arrow-expand-all</v-icon
|
|
||||||
>
|
|
||||||
<v-icon style="color: rgba(0, 0, 0, 0.54)" v-else
|
|
||||||
>mdi-arrow-collapse-all</v-icon
|
|
||||||
>
|
|
||||||
</v-btn>
|
|
||||||
</template>
|
|
||||||
</router-tab>
|
|
||||||
</v-container>
|
|
||||||
<div v-if="loadingStackCnt > 0" class="loading-container">
|
|
||||||
<div class="loading">
|
|
||||||
<Fade-loader />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</v-main>
|
|
||||||
<!-- <v-footer
|
|
||||||
:absolute="!fixed"
|
|
||||||
app
|
|
||||||
:class="
|
|
||||||
drawer
|
|
||||||
? miniVariant
|
|
||||||
? 'drawerFooter miniFooter'
|
|
||||||
: 'drawerFooter'
|
|
||||||
: 'full-size'
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<span>© 2022. SK C&C all rights reserved.</span>
|
|
||||||
</v-footer> -->
|
|
||||||
</fullscreen>
|
|
||||||
</v-app>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { mapState, mapActions, mapMutations } from "vuex"; // , mapActions
|
|
||||||
import ThemeSwitch from "@/components/common/ThemeSwitch";
|
|
||||||
import AdminMenu from "@/components/common/AdminMenu";
|
|
||||||
import FadeLoader from "vue-spinner/src/FadeLoader.vue";
|
|
||||||
import ChangePswdPop from "~/components/common/modal/ChangePswdPop";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
ThemeSwitch,
|
|
||||||
AdminMenu,
|
|
||||||
FadeLoader,
|
|
||||||
ChangePswdPop,
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
fullscreen: false,
|
|
||||||
activeTree: [],
|
|
||||||
clipped: false,
|
|
||||||
fixed: false,
|
|
||||||
miniVariant: false,
|
|
||||||
// activeTabIdx: "",
|
|
||||||
routerTabInstance: null,
|
|
||||||
// programIdObj: null,
|
|
||||||
myPrgmId: null,
|
|
||||||
treeValue: [],
|
|
||||||
menuIconById: {
|
|
||||||
// MNU0003: 'mdi-chart-line',
|
|
||||||
// MNU0004: 'mdi-alarm-light',
|
|
||||||
// MNU0005: 'mdi-pencil-box-outline',
|
|
||||||
// MNU0006: 'mdi-cog-outline',
|
|
||||||
MNU0002: "mdi-monitor",
|
|
||||||
MNU0091: "mdi-chart-box",
|
|
||||||
MNU0102: "mdi-human-male-board-poll",
|
|
||||||
MNU0103: "mdi-file-chart-outline",
|
|
||||||
MNU0104: "mdi-chart-sankey-variant",
|
|
||||||
MNU0106: "mdi-database-edit-outline",
|
|
||||||
MNU0105: "mdi-chart-bell-curve",
|
|
||||||
MNU0006: "mdi-bulletin-board",
|
|
||||||
MNU0007: "mdi-cog",
|
|
||||||
},
|
|
||||||
isLoading: false,
|
|
||||||
loadingStackCnt: 0,
|
|
||||||
bookmarkBtn: 0,
|
|
||||||
myMenuList: [],
|
|
||||||
prgmIdList: [],
|
|
||||||
initPageData: {},
|
|
||||||
obj: {},
|
|
||||||
newObj: {},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
...mapState({
|
|
||||||
myHome: "myHome",
|
|
||||||
myHomeTabItems: "myHomeTabItems",
|
|
||||||
indexRoot: "indexRoot",
|
|
||||||
treevieItems: "treevieItems",
|
|
||||||
menuData: "menuData",
|
|
||||||
menuLink: (state) => state.modules.menu,
|
|
||||||
activeMenuId: (state) => state.activeMenuInfo.menuId,
|
|
||||||
isDarkMode: "isDarkMode",
|
|
||||||
drawer: (state) => state.drawer,
|
|
||||||
userInfo: (state) => state.userInfo,
|
|
||||||
pageData: "pageData",
|
|
||||||
}),
|
|
||||||
activeTabs() {
|
|
||||||
if (this.routerTabInstance) {
|
|
||||||
return this.routerTabInstance.activeTab;
|
|
||||||
} else {
|
|
||||||
return this.myHome.root;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
menuIconKeys() {
|
|
||||||
return Object.keys(this.menuIconById);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
activeTabs: {
|
|
||||||
// 탭 클릭시 좌측 treeview 싱크 맞추가
|
|
||||||
deep: true,
|
|
||||||
handler(value) {
|
|
||||||
if (value) {
|
|
||||||
const prgmId = value.prgmId;
|
|
||||||
let thisPrgmId = this.$route.query.prgmId;
|
|
||||||
var tmp = 0;
|
|
||||||
for (var i = 0; i < this.myMenuList.length; i++) {
|
|
||||||
if (this.myMenuList[i].prgmId == thisPrgmId) {
|
|
||||||
tmp = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.bookmarkBtn = tmp;
|
|
||||||
//if (thisPrgmId && this.myPrgmId && this.myPrgmId != thisPrgmId) {
|
|
||||||
this.myPrgmId = prgmId;
|
|
||||||
this.activeTree.pop(); // 기존 황성화 트리 값 삭제
|
|
||||||
this.activeTree.push(thisPrgmId); // 인덱스가 아닐 경우 새로 넣어줌
|
|
||||||
// this.$set(this.activeTree, 0, prgmId); // treeview activetree 새로 셋팅 <= 위 pop() 과 push() 로 대체
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
activeTree: {
|
|
||||||
deep: true,
|
|
||||||
handler(newVal, oldVal) {
|
|
||||||
var _this = this;
|
|
||||||
const nv = newVal[0];
|
|
||||||
const ov = oldVal[0];
|
|
||||||
if (nv !== ov) {
|
|
||||||
if (!nv) {
|
|
||||||
// 중복클릭 시 발생 상황 기존 값을 다시 넣어줌
|
|
||||||
this.activeTree.push(ov);
|
|
||||||
} else {
|
|
||||||
this.myPrgmId = nv;
|
|
||||||
console.log("menu:", this.menuData);
|
|
||||||
if (this.menuData[nv].url) {
|
|
||||||
const menuUrl = this.menuData[nv].url;
|
|
||||||
const menuId = this.menuData[nv].menuId;
|
|
||||||
|
|
||||||
const isCommMenu = menuUrl.indexOf("comm/");
|
|
||||||
const isEmsMenu = menuUrl.indexOf("ems/");
|
|
||||||
const isCmmsMenu = menuUrl.indexOf("cmms/");
|
|
||||||
|
|
||||||
// console.log('activeTree...');
|
|
||||||
console.log(isEmsMenu);
|
|
||||||
|
|
||||||
if (isCommMenu > -1 || isEmsMenu > -1 || isCmmsMenu > -1) {
|
|
||||||
// console.log('activeTree if stmt1');
|
|
||||||
// console.log('this.isLoading : ', this.isLoading);
|
|
||||||
// if(this.isLoading == true){
|
|
||||||
// console.log('if isLoading stmt1');
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// this.$router.push({
|
|
||||||
// path: `${this.menuData[nv].url}?prgmId=${nv}`,
|
|
||||||
// });
|
|
||||||
|
|
||||||
this.$router.replace("/").then(() => {
|
|
||||||
this.$router.push({
|
|
||||||
path: `${this.menuData[nv].url}?prgmId=${nv}`,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// this.$router.beforeEach((to, from, next) => {
|
|
||||||
// if(_this.isLoading == true){
|
|
||||||
// next(false);
|
|
||||||
// }
|
|
||||||
// if (!to.matched.length) {
|
|
||||||
// next(false);
|
|
||||||
// } else {
|
|
||||||
// next();
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
var tmp = 0;
|
|
||||||
for (var i = 0; i < this.myMenuList.length; i++) {
|
|
||||||
if (this.myMenuList[i].menuId == menuId) {
|
|
||||||
tmp = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.bookmarkBtn = tmp;
|
|
||||||
} else {
|
|
||||||
// console.log('activeTree if stmt2');
|
|
||||||
// console.log('this.isLoading : ', this.isLoading);
|
|
||||||
// if(this.isLoading == true){
|
|
||||||
// console.log('if isLoading stmt2');
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
this.$refs.routerTab.openIframe(
|
|
||||||
encodeURI(`http://localhost:9999${this.menuData[nv].url}?prgmId=${nv}`),
|
|
||||||
this.menuData[nv].menuNm
|
|
||||||
);
|
|
||||||
}
|
|
||||||
this.$axios.get(`${this.menuData[nv].url}?$menuId=${menuId}`);
|
|
||||||
} else alert("지정된 페이지 경로가 없습니다.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
menuData: {
|
|
||||||
deep: true,
|
|
||||||
handler(newVal, oldVal) {},
|
|
||||||
},
|
|
||||||
pageData: {
|
|
||||||
deep: true,
|
|
||||||
handler(newVal, oldVal) {
|
|
||||||
localStorage.setItem("pageData", JSON.stringify(this.pageData));
|
|
||||||
//console.log("localPageData", this.pageData);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
// menuLink: {
|
|
||||||
// deep: true,
|
|
||||||
// handler() {
|
|
||||||
// let prgmIdList = Object.keys(this.menuData);
|
|
||||||
// let initPageData = {};
|
|
||||||
// prgmIdList.forEach(item => {
|
|
||||||
// let newObj = {
|
|
||||||
// [item] : {}
|
|
||||||
// };
|
|
||||||
// initPageData = Object.assign(initPageData, newObj)
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.$vuetify.theme.isDark = false;
|
|
||||||
this.setThemeChange(false);
|
|
||||||
},
|
|
||||||
beforeUnmount() {
|
|
||||||
//window.removeEventListener('beforeunload', this.unLoadEvent);
|
|
||||||
},
|
|
||||||
async mounted() {
|
|
||||||
//window.addEventListener('beforeunload', this.unLoadEvent);
|
|
||||||
const _this = this;
|
|
||||||
await this.getMenu({});
|
|
||||||
await this.initPageDataFunc();
|
|
||||||
await this.selectMyMenuFunc();
|
|
||||||
|
|
||||||
this.routerTabInstance = this.$refs.routerTab;
|
|
||||||
if (this.$route.fullPath == "/") {
|
|
||||||
this.routerTabInstance.reset();
|
|
||||||
this.$router.replace(this.myHome.root);
|
|
||||||
} else if (this.$route.fullPath != this.myHome.root) {
|
|
||||||
this.$refs.routerTab.items.unshift(this.myHomeTabItems);
|
|
||||||
} else {
|
|
||||||
this.refreshTab();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$router.beforeEach((to, from, next) => {
|
|
||||||
_this.isLoading = true;
|
|
||||||
// console.log('$router.beforeEach...');
|
|
||||||
// console.log('state : ', _this.$store.state)
|
|
||||||
// console.log('activeActionCnt : ', _this.$store.state.activeActionCnt)
|
|
||||||
// console.log('_this.isLoading[beforeEach] : ', _this.isLoading);
|
|
||||||
// console.log('_this.loadingStackCnt : ', _this.loadingStackCnt);
|
|
||||||
// if(_this.loadingStackCnt > 0 && _this.isLoading && _this.$store.state.activeActionCnt > 0){
|
|
||||||
if (_this.loadingStackCnt > 0 && _this.isLoading) {
|
|
||||||
next(false);
|
|
||||||
// return;
|
|
||||||
} else if (!to.matched.length) {
|
|
||||||
next(false);
|
|
||||||
} else {
|
|
||||||
next();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.$router.afterEach((to, from, failure) => {});
|
|
||||||
|
|
||||||
// 요청 인터셉터
|
|
||||||
this.$axios.interceptors.request.use(
|
|
||||||
function (config) {
|
|
||||||
//alert(1)
|
|
||||||
_this.isLoading = true;
|
|
||||||
if (config.url.search("Page") < 0) {
|
|
||||||
_this.loadingStackCnt++;
|
|
||||||
}
|
|
||||||
return config;
|
|
||||||
},
|
|
||||||
function (error) {
|
|
||||||
// 에라 나면 로딩 끄기
|
|
||||||
//alert(2)
|
|
||||||
_this.isLoading = false;
|
|
||||||
// if(error.url.search('Page')<0){
|
|
||||||
// _this.loadingStackCnt--;
|
|
||||||
// }
|
|
||||||
return Promise.reject(error);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// 응답 인터셉터
|
|
||||||
this.$axios.interceptors.response.use(
|
|
||||||
function (response) {
|
|
||||||
_this.isLoading = false;
|
|
||||||
if (response.config.url.search("Page") < 0) {
|
|
||||||
_this.loadingStackCnt--;
|
|
||||||
}
|
|
||||||
//alert(3)
|
|
||||||
return response;
|
|
||||||
},
|
|
||||||
function (error) {
|
|
||||||
// 응답 에러 시에도 로딩 끄기
|
|
||||||
//alert(4 )
|
|
||||||
_this.isLoading = false;
|
|
||||||
// if(error.url.search('Page')<0){
|
|
||||||
// _this.loadingStackCnt--;
|
|
||||||
// }
|
|
||||||
return Promise.reject(error);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
...mapMutations({
|
|
||||||
setDrawer: "setDrawer", // 사이드메뉴 접고 펼치기
|
|
||||||
setPageDataInit: "setPageDataInit",
|
|
||||||
setThemeChange: "setThemeChange",
|
|
||||||
}),
|
|
||||||
...mapActions({
|
|
||||||
getMenu: "modules/menu/getMenu", // 트리메뉴 가져오기
|
|
||||||
chkOpenTabList: "chkOpenTabList", // 트리메뉴 클릭 시 해당 pprgmId push
|
|
||||||
postUpdateApi: "modules/list/postUpdateApi",
|
|
||||||
postApiReturn: "modules/list/postApiReturn",
|
|
||||||
}),
|
|
||||||
// // tabActive(id) {},
|
|
||||||
// clkTab(itemArr) {
|
|
||||||
// console.log(itemArr[0]);
|
|
||||||
// if (!itemArr[0].to) return;
|
|
||||||
// this.$router.push({
|
|
||||||
// path: itemArr[0].to
|
|
||||||
// });
|
|
||||||
// },
|
|
||||||
toggle() {
|
|
||||||
this.fullscreen = !this.fullscreen;
|
|
||||||
},
|
|
||||||
refreshTab() {
|
|
||||||
// console.log("현재 탭 새로고침");
|
|
||||||
//this.routerTabInstance.refresh();
|
|
||||||
this.$nuxt.refresh();
|
|
||||||
this.routerTabInstance.refresh();
|
|
||||||
},
|
|
||||||
delAllTabsData() {
|
|
||||||
// console.log("탭 전체 닫기");
|
|
||||||
// for (let i = this.routerTabInstance.items.length - 1; i > -1; --i) {
|
|
||||||
// const diffTo = this.routerTabInstance.items[i].to;
|
|
||||||
|
|
||||||
// if (diffTo != this.myHome.root) {
|
|
||||||
// this.routerTabInstance.items.splice(i, 1);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//if(this.$router.currentRoute.fullPath != this.myHome.root){
|
|
||||||
if (this.routerTabInstance.items.length > 0) {
|
|
||||||
this.routerTabInstance.reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$router.replace(this.myHome.root);
|
|
||||||
//}
|
|
||||||
},
|
|
||||||
deleteSblingsTab() {
|
|
||||||
// console.log("탭 나머지 닫기");
|
|
||||||
// for (let i = this.routerTabInstance.items.length - 1; i > -1; --i) {
|
|
||||||
// const activeTo = this.routerTabInstance.activeTab.to;
|
|
||||||
// const diffTo = this.routerTabInstance.items[i].to;
|
|
||||||
|
|
||||||
// if (activeTo != diffTo && diffTo != this.myHome.root) {
|
|
||||||
// this.routerTabInstance.items.splice(i, 1);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
if (this.routerTabInstance.items.length > 1) {
|
|
||||||
for (let i = this.routerTabInstance.items.length - 1; i > -1; --i) {
|
|
||||||
const activeTo = this.routerTabInstance.activeTab.to;
|
|
||||||
const diffTo = this.routerTabInstance.items[i].to;
|
|
||||||
|
|
||||||
if (activeTo != diffTo && diffTo != this.myHome.root) {
|
|
||||||
this.routerTabInstance.close(diffTo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
tabScrollMove(dir) {
|
|
||||||
const scrollTab = this.routerTabInstance.$refs.scroll;
|
|
||||||
const scrollWidth =
|
|
||||||
scrollTab.scrollData.scrollWidth - scrollTab.scrollData.clientWidth;
|
|
||||||
const scrollLeft = scrollTab.scrollData.scrollLeft;
|
|
||||||
|
|
||||||
const xAxis = this.calcScroll(scrollLeft, scrollWidth, dir);
|
|
||||||
scrollTab.scrollTo(xAxis, 0);
|
|
||||||
},
|
|
||||||
updateTreeview() {
|
|
||||||
if (this.miniVariant) {
|
|
||||||
// sidebar 접혀져 있을 때
|
|
||||||
this.$refs.treeview.updateAll();
|
|
||||||
} else {
|
|
||||||
// sidebar 펼쳐져 있을 때
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 열려있는 노드의 key 값 리턴(선택된 값이 아님)
|
|
||||||
openNode(node) {
|
|
||||||
//console.log('onOpen');
|
|
||||||
if (this.miniVariant) {
|
|
||||||
// sidebar 접혀져 있을 때
|
|
||||||
if (event.currentTarget.id !== this.$refs.appbarnavicon.$refs.link.id) {
|
|
||||||
this.$refs.appbarnavicon.click(event);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// sidebar 펼쳐져 있을 때
|
|
||||||
}
|
|
||||||
},
|
|
||||||
doMouseOver: function (event) {
|
|
||||||
//console.log(event);
|
|
||||||
},
|
|
||||||
calcScroll(sl, sw, dir) {
|
|
||||||
const deScrW = 60;
|
|
||||||
let returnSl = 0;
|
|
||||||
switch (dir) {
|
|
||||||
case "prev":
|
|
||||||
returnSl = sl - deScrW <= 0 ? 0 : sl - deScrW;
|
|
||||||
break;
|
|
||||||
case "next":
|
|
||||||
returnSl = sl + deScrW >= sw ? sw : sl + deScrW;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return returnSl;
|
|
||||||
},
|
|
||||||
initPageDataFunc() {
|
|
||||||
const _this = this;
|
|
||||||
this.prgmIdList = Object.keys(this.menuData);
|
|
||||||
this.initPageData = {};
|
|
||||||
this.prgmIdList.forEach((item) => {
|
|
||||||
_this.obj = {};
|
|
||||||
if (_this.pageData[item]) {
|
|
||||||
_this.obj = _this.pageData[item];
|
|
||||||
}
|
|
||||||
_this.newObj = {};
|
|
||||||
_this.newObj = {
|
|
||||||
[item]: _this.obj,
|
|
||||||
};
|
|
||||||
_this.initPageData = Object.assign({}, _this.initPageData, _this.newObj);
|
|
||||||
});
|
|
||||||
localStorage.setItem("pageData", JSON.stringify(this.initPageData));
|
|
||||||
this.setPageDataInit(this.initPageData);
|
|
||||||
},
|
|
||||||
onCloseTab(to) {
|
|
||||||
const findIndex = this.$tabs.items.findIndex((v) => v.to === to);
|
|
||||||
const { to: next } = this.$tabs.items[findIndex - 1];
|
|
||||||
this.$tabs.close(to, null);
|
|
||||||
if (this.$router.currentRoute.fullPath != next) {
|
|
||||||
this.$router.replace(next);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async addBookMark() {
|
|
||||||
var params = {
|
|
||||||
menuId: this.activeMenuId,
|
|
||||||
};
|
|
||||||
await this.postUpdateApi({
|
|
||||||
apiKey: "saveBookmark",
|
|
||||||
sendParam: {
|
|
||||||
datas: {
|
|
||||||
bookmarkDt: [params],
|
|
||||||
},
|
|
||||||
params: {},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const res = await this.postApiReturn({
|
|
||||||
apiKey: "selectMyMenu",
|
|
||||||
resKey: "menuData",
|
|
||||||
sendParam: {},
|
|
||||||
});
|
|
||||||
|
|
||||||
// const res = [
|
|
||||||
// {
|
|
||||||
// comId: "abc",
|
|
||||||
// upMenuId: "abc",
|
|
||||||
// menuId: "dashboard",
|
|
||||||
// menuNm: "abc",
|
|
||||||
// url: "DashboardPage",
|
|
||||||
// authCd: "yes",
|
|
||||||
// lvl: 9999,
|
|
||||||
// prgmId: "PRG0001",
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// comId: "abc",
|
|
||||||
// upMenuId: "dashboard",
|
|
||||||
// menuId: "test",
|
|
||||||
// menuNm: "test",
|
|
||||||
// url: "DashboardPage",
|
|
||||||
// authCd: "yes",
|
|
||||||
// lvl: 666,
|
|
||||||
// prgmId: "PRG0002",
|
|
||||||
// },
|
|
||||||
// ];
|
|
||||||
|
|
||||||
this.myMenuList = res;
|
|
||||||
this.bookmarkBtn = 1;
|
|
||||||
},
|
|
||||||
async removeBookMark() {
|
|
||||||
var params = {
|
|
||||||
menuId: this.activeMenuId,
|
|
||||||
};
|
|
||||||
await this.postUpdateApi({
|
|
||||||
apiKey: "deleteBookmark",
|
|
||||||
sendParam: {
|
|
||||||
datas: {
|
|
||||||
bookmarkDt: [params],
|
|
||||||
},
|
|
||||||
params: {},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const res = await this.postApiReturn({
|
|
||||||
apiKey: "selectMyMenu",
|
|
||||||
resKey: "menuData",
|
|
||||||
sendParam: {},
|
|
||||||
});
|
|
||||||
this.myMenuList = res;
|
|
||||||
this.bookmarkBtn = 0;
|
|
||||||
},
|
|
||||||
moveToMyMenu(url, menuId, prgmId) {
|
|
||||||
// console.log('moveToMyMenu...');
|
|
||||||
// if(this.isLoading == true){
|
|
||||||
// console.log('if isLoading stmt3');
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
alert("move to", url);
|
|
||||||
this.$router.push({
|
|
||||||
path: url + "?prgmId=" + prgmId,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
async selectMyMenuFunc() {
|
|
||||||
const headers = {
|
|
||||||
headers: {
|
|
||||||
"X-Fems-MenuId": "MNU0001",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
const params = { params: {} };
|
|
||||||
const res = await this.$axios.post(
|
|
||||||
"/comm/base/MenuMngCtr/selectMyMenu",
|
|
||||||
params,
|
|
||||||
headers
|
|
||||||
);
|
|
||||||
|
|
||||||
this.myMenuList = res.data.dataset.menuData;
|
|
||||||
},
|
|
||||||
// unLoadEvent: function (event) {
|
|
||||||
// //if (this.isLeaveSite) return;
|
|
||||||
// //this.delAllTabsData();
|
|
||||||
// this.$router.push({
|
|
||||||
// path: this.myHome.root
|
|
||||||
// });
|
|
||||||
// console.log("event", event)
|
|
||||||
// event.preventDefault();
|
|
||||||
// event.returnValue = '';
|
|
||||||
|
|
||||||
// },
|
|
||||||
// treeModel(obj) {
|
|
||||||
// console.log(">>> treeModel::obj = ", obj);
|
|
||||||
// this.treeValue[0] = obj;
|
|
||||||
// this.$refs.treeview.updateAll();
|
|
||||||
// // console.log(this.$refs.treeview);
|
|
||||||
// // this.$refs.treeview.activeCache = obj.id;
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.loading {
|
|
||||||
z-index: 99;
|
|
||||||
position: fixed;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
background-color: rgba(0, 0, 0, 0.4);
|
|
||||||
//box-shadow: rgba(68, 67, 67, 0.9) 0 0 0 9999px;
|
|
||||||
}
|
|
||||||
.v-spinner {
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -58,7 +58,7 @@ export default {
|
|||||||
layoutInit() {
|
layoutInit() {
|
||||||
if (this.$refs.searchFilter) {
|
if (this.$refs.searchFilter) {
|
||||||
const searchFilterHeight = this.$refs.searchFilter.offsetHeight;
|
const searchFilterHeight = this.$refs.searchFilter.offsetHeight;
|
||||||
this.$refs.contents.style.height = `calc(100% - ${searchFilterHeight}px)`;
|
this.$refs.contents.style.minHeight = `calc(100% - ${searchFilterHeight + 20}px)`;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//init() {}
|
//init() {}
|
||||||
|
@ -22,8 +22,7 @@
|
|||||||
customClass="input-large"
|
customClass="input-large"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="6" class="text-right">
|
<v-col class="text-right d-flex justify-end align-end mr-3">
|
||||||
<!-- <v-btn @click="test = !test">WWW</v-btn> -->
|
|
||||||
<BtnSearch size="large" />
|
<BtnSearch size="large" />
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
@ -31,8 +30,8 @@
|
|||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
<v-row ref="contents" style="height: 100vh;">
|
<v-row ref="contents" >
|
||||||
<v-col cols="12" lg="2" class="h100">
|
<v-col cols="12" lg="2" >
|
||||||
<v-card>
|
<v-card>
|
||||||
<v-card-title>
|
<v-card-title>
|
||||||
<span class="custom-title-4">역할 리스트</span>
|
<span class="custom-title-4">역할 리스트</span>
|
||||||
@ -53,7 +52,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12" lg="10" class="h100">
|
<v-col cols="12" lg="10" >
|
||||||
<v-card>
|
<v-card>
|
||||||
<v-card-title>
|
<v-card-title>
|
||||||
<span class="custom-title-4">역할 메뉴별 권한</span>
|
<span class="custom-title-4">역할 메뉴별 권한</span>
|
||||||
@ -70,7 +69,7 @@
|
|||||||
:style="{ minHeight: '36px' }"
|
:style="{ minHeight: '36px' }"
|
||||||
>[미배정]메뉴리스트</span
|
>[미배정]메뉴리스트</span
|
||||||
>
|
>
|
||||||
<div class="px-5" style="height:calc(100% - 64px)">
|
<div class="px-0 mt-2" style="height:calc(100% - 64px)">
|
||||||
<div
|
<div
|
||||||
ref="treeGridParent"
|
ref="treeGridParent"
|
||||||
class="w100 h100"
|
class="w100 h100"
|
||||||
@ -113,7 +112,7 @@
|
|||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<div class="px-5" style="height:calc(100% - 64px)">
|
<div class="px-0 mt-2" style="height:calc(100% - 64px)">
|
||||||
<div
|
<div
|
||||||
ref="treeGridParent2"
|
ref="treeGridParent2"
|
||||||
class="w100 h100"
|
class="w100 h100"
|
||||||
@ -403,6 +402,17 @@ export default {
|
|||||||
];
|
];
|
||||||
|
|
||||||
const myTreeColumns = [
|
const myTreeColumns = [
|
||||||
|
{
|
||||||
|
header: '',
|
||||||
|
name: '',
|
||||||
|
align: 'center',
|
||||||
|
width: 30,
|
||||||
|
formatter: (props) => {
|
||||||
|
return `<label class="custom-radio">
|
||||||
|
<span class="radio-mark"></span>
|
||||||
|
</label>`;
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
header: '메뉴명',
|
header: '메뉴명',
|
||||||
name: 'menuNm',
|
name: 'menuNm',
|
||||||
@ -415,6 +425,17 @@ export default {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
const myTreeColumns2 = [
|
const myTreeColumns2 = [
|
||||||
|
{
|
||||||
|
header: '',
|
||||||
|
name: '',
|
||||||
|
align: 'center',
|
||||||
|
width: 30,
|
||||||
|
formatter: (props) => {
|
||||||
|
return `<label class="custom-radio">
|
||||||
|
<span class="radio-mark"></span>
|
||||||
|
</label>`;
|
||||||
|
}
|
||||||
|
},
|
||||||
{ header: '역할ID', name: 'roleId', hidden: true },
|
{ header: '역할ID', name: 'roleId', hidden: true },
|
||||||
{ header: '메뉴ID', name: 'menuId', hidden: true },
|
{ header: '메뉴ID', name: 'menuId', hidden: true },
|
||||||
{ header: '메뉴명', name: 'menuNm', minWidth: '235' },
|
{ header: '메뉴명', name: 'menuNm', minWidth: '235' },
|
||||||
|
@ -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>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
|
<common-page-title />
|
||||||
<!-- 리스트 페이지 시작 -->
|
<!-- 리스트 페이지 시작 -->
|
||||||
<div v-if="pageActionFlag == 'list'" class="h1001">
|
<div v-if="pageActionFlag == 'list'" class="h1001">
|
||||||
<v-card class="" >
|
<v-card class="" >
|
||||||
@ -14,10 +15,12 @@
|
|||||||
<!-- <v-btn @click="listPageButtonGroupClickEvent('delete')" :ripple="false">삭제</v-btn> -->
|
<!-- <v-btn @click="listPageButtonGroupClickEvent('delete')" :ripple="false">삭제</v-btn> -->
|
||||||
</div>
|
</div>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="12" ref="contents" class="mt-5">
|
<v-col :cols="12" ref="contents" class="mt-5" style="min-height: calc(100% - 76px);">
|
||||||
<div ref="gridParent" class="h100 px-50">
|
<div ref="gridParent" class="h100 px-50">
|
||||||
<component :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
|
<!-- <component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
|
||||||
ref="noticeMngGrid" @getRowsData="getRowData" :dataPath="dataPathMock" />
|
@getRowsData="getRowData" /> -->
|
||||||
|
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
|
||||||
|
@getRowsData="getRowData" :selectedRowDataWatchFlag="true" />
|
||||||
</div>
|
</div>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
@ -266,7 +269,8 @@ export default {
|
|||||||
myPrgmId: myPrgmId,
|
myPrgmId: myPrgmId,
|
||||||
//comId: "SEMPIO",
|
//comId: "SEMPIO",
|
||||||
//comId: this.userInfo.comId,
|
//comId: this.userInfo.comId,
|
||||||
comId: this.$store.state.userInfo.comId,
|
// comId: this.$store.state.userInfo.comId,
|
||||||
|
|
||||||
bordNo: null,
|
bordNo: null,
|
||||||
pageActionFlag: 'list',
|
pageActionFlag: 'list',
|
||||||
gridName: 'noticeMngGrid',
|
gridName: 'noticeMngGrid',
|
||||||
@ -467,12 +471,12 @@ export default {
|
|||||||
value: columnList,
|
value: columnList,
|
||||||
});
|
});
|
||||||
|
|
||||||
// -----------------------TEST------------------
|
// // -----------------------TEST------------------
|
||||||
this.dataPathMock[this.gridName] = {
|
// this.dataPathMock[this.gridName] = {
|
||||||
column: columnList,
|
// column: columnList,
|
||||||
data: dataPathDataExample,
|
// data: dataPathDataExample,
|
||||||
}
|
// }
|
||||||
// -----------------------END TEST--------------
|
// // -----------------------END TEST--------------
|
||||||
this.getGridData();
|
this.getGridData();
|
||||||
},
|
},
|
||||||
async getGridData() {
|
async getGridData() {
|
||||||
@ -481,31 +485,32 @@ export default {
|
|||||||
};
|
};
|
||||||
|
|
||||||
this.loadGrid = false;
|
this.loadGrid = false;
|
||||||
let res = null;
|
|
||||||
try {
|
const res = await this.postApiReturn({
|
||||||
res = await this.postApiReturn({
|
|
||||||
apiKey: 'selectPostList',
|
apiKey: 'selectPostList',
|
||||||
resKey: 'postData',
|
resKey: 'postData',
|
||||||
sendParam: params,
|
sendParam: params,
|
||||||
});
|
});
|
||||||
}
|
|
||||||
catch (err) { }
|
// console.log('----------DEBUG--------res: ', res);
|
||||||
finally {
|
const newRes = res.map(item => {
|
||||||
// -----Test mock data-------------
|
const newObj = {
|
||||||
if (null === res) {
|
...item,
|
||||||
res = dataPathDataExample;
|
rowStat: null,
|
||||||
}
|
dataSetId: item.dataSetId,
|
||||||
// -----End test
|
dataSetNm: item.dataSetNm,
|
||||||
}
|
useFg: item.useFg === '1' ? true : false, // 화면 개발 편의를 위해 boolean 타입으로 교체, 저장시 "1", "0" 으로 바꿔 보내야 함
|
||||||
|
};
|
||||||
|
return newObj;
|
||||||
|
});
|
||||||
|
|
||||||
this.setGridData({
|
this.setGridData({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
value: res,
|
value: newRes,
|
||||||
});
|
|
||||||
this.$nextTick(() => {
|
|
||||||
this.loadGrid = true;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.setPageData({ isFind: false });
|
this.setPageData({ isFind: false });
|
||||||
|
this.loadGrid = true;
|
||||||
},
|
},
|
||||||
getRowData(data) {
|
getRowData(data) {
|
||||||
this.selectedRowKey = data.rowKey;
|
this.selectedRowKey = data.rowKey;
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
<v-row ref="contents">
|
<v-row ref="contents">
|
||||||
<!-- 프로그램 리스트 -->
|
<!-- 프로그램 리스트 -->
|
||||||
<v-col :cols="5" class="h100">
|
<v-col :cols="5" >
|
||||||
<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-5">
|
||||||
<v-card-title class="pa-0">프로그램 리스트</v-card-title>
|
<v-card-title class="pa-0">프로그램 리스트</v-card-title>
|
||||||
@ -50,7 +50,7 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="min-height:calc(100% - 70px)">
|
<div style="min-height: 60vh">
|
||||||
<div ref="gridParent" class="px-5 h100">
|
<div ref="gridParent" class="px-5 h100">
|
||||||
<component
|
<component
|
||||||
:ref="gridName"
|
:ref="gridName"
|
||||||
@ -65,7 +65,7 @@
|
|||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
<!-- 프로그램 상세 -->
|
<!-- 프로그램 상세 -->
|
||||||
<v-col :cols="7" class="h100">
|
<v-col :cols="7" >
|
||||||
<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-5">
|
||||||
<v-card-title class="pa-0">프로그램 상세</v-card-title>
|
<v-card-title class="pa-0">프로그램 상세</v-card-title>
|
||||||
|
@ -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>
|
@ -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: {
|
||||||
@ -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>
|
@ -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: {
|
||||||
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -1,11 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
<!-- <h2 class="title">
|
<common-page-title />
|
||||||
<v-icon small color="primary" class="mr-1">mdi-circle</v-icon>
|
|
||||||
계량 데이터 마감 관리
|
|
||||||
</h2> -->
|
|
||||||
<PageTitle text="계량 데이터 마감 관리" />
|
|
||||||
|
|
||||||
<v-row ref="searchFilter">
|
<v-row ref="searchFilter">
|
||||||
<!-- 조회조견 -->
|
<!-- 조회조견 -->
|
||||||
<v-col :cols="12">
|
<v-col :cols="12">
|
||||||
@ -75,8 +70,8 @@
|
|||||||
</v-row>
|
</v-row>
|
||||||
<v-row ref="contents">
|
<v-row ref="contents">
|
||||||
<!-- 일일검침정보 목록-->
|
<!-- 일일검침정보 목록-->
|
||||||
<v-col :cols="12" class="h100">
|
<v-col :cols="12">
|
||||||
<v-card class="pb-5">
|
<v-card class="pb-5 w100">
|
||||||
<div class="d-flex align-center justify-space-between pa-5">
|
<div class="d-flex align-center justify-space-between pa-5">
|
||||||
<v-card-title class="custom-title-4 pa-0">일일검침정보</v-card-title>
|
<v-card-title class="custom-title-4 pa-0">일일검침정보</v-card-title>
|
||||||
<div class="d-flex align-center">
|
<div class="d-flex align-center">
|
||||||
@ -91,21 +86,19 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
:ripple="false"
|
:ripple="false"
|
||||||
@click="saveReadResultCloseMng('N')"
|
@click="saveReadResultCloseMng('N')"
|
||||||
>일마감</a-button
|
|
||||||
>
|
>
|
||||||
|
일마감
|
||||||
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="px-5" style="min-height: calc(100% - 76px)">
|
<div ref="gridParent" class="px-5 w100" style="min-height: 60vh">
|
||||||
<div ref="gridParent" class="h100 w100">
|
|
||||||
<component
|
<component
|
||||||
:is="loadGrid ? 'Grid' : null"
|
:is="loadGrid ? 'Grid' : null"
|
||||||
:ref="gridName"
|
:ref="gridName"
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
:gridName="gridName"
|
:gridName="gridName"
|
||||||
:dataPath="dataPathMock"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
@ -123,7 +116,6 @@ import selectCodeList from "@/components/common/select/selectCodeList";
|
|||||||
import SelectMttList from "@/components/common/select/SelectMttList";
|
import SelectMttList from "@/components/common/select/SelectMttList";
|
||||||
import Datepicker from "~/components/common/Datepicker";
|
import Datepicker from "~/components/common/Datepicker";
|
||||||
import BtnExcelDownload from "~/components/common/button/BtnExcelDownload";
|
import BtnExcelDownload from "~/components/common/button/BtnExcelDownload";
|
||||||
import PageTitle from "~/components/common/PageTitle";
|
|
||||||
|
|
||||||
let myTitle;
|
let myTitle;
|
||||||
// const myPrgmId = "PRG0018";
|
// const myPrgmId = "PRG0018";
|
||||||
@ -151,13 +143,12 @@ export default {
|
|||||||
Datepicker,
|
Datepicker,
|
||||||
Search,
|
Search,
|
||||||
Grid,
|
Grid,
|
||||||
PageTitle,
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
myPrgmId: myPrgmId,
|
myPrgmId: myPrgmId,
|
||||||
gridName: "rowGrid",
|
gridName: "rowGrid",
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
dataPathMock: {
|
dataPathMock: {
|
||||||
rowGrid: {
|
rowGrid: {
|
||||||
column: [
|
column: [
|
||||||
@ -260,7 +251,6 @@ export default {
|
|||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
value: myColumns,
|
value: myColumns,
|
||||||
});
|
});
|
||||||
this.loadGrid = true;
|
|
||||||
},
|
},
|
||||||
async search() {
|
async search() {
|
||||||
await this.getRowGridData();
|
await this.getRowGridData();
|
||||||
@ -288,8 +278,12 @@ export default {
|
|||||||
mgnf: item.mgnf || 0,
|
mgnf: item.mgnf || 0,
|
||||||
})),
|
})),
|
||||||
});
|
});
|
||||||
|
// console.log('--------------DEBUG-----res-------', res);
|
||||||
}
|
}
|
||||||
this.setPageData({ isFind: false });
|
this.setPageData({ isFind: false });
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.loadGrid = true;
|
||||||
|
})
|
||||||
},
|
},
|
||||||
//전월 or 일 마감--------------------------------------------------------------------------------------------
|
//전월 or 일 마감--------------------------------------------------------------------------------------------
|
||||||
async saveReadResultCloseMng(mnthYn) {
|
async saveReadResultCloseMng(mnthYn) {
|
||||||
|
@ -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,6 +107,7 @@ 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";
|
||||||
@ -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,
|
||||||
@ -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>
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
|
<CommonPageTitle />
|
||||||
<!-- Dataset 페이지 시작 -->
|
<!-- Dataset 페이지 시작 -->
|
||||||
<div v-if="pageActionFlag == 'list'" class="h100">
|
<div v-if="pageActionFlag == 'list'" class="h100">
|
||||||
<v-row ref="searchFilter">
|
<v-row ref="searchFilter">
|
||||||
@ -34,23 +35,23 @@
|
|||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-row ref="contents">
|
<v-row ref="contents">
|
||||||
<v-col :cols="5" class="h100">
|
<v-col :cols="5" >
|
||||||
<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-5">
|
||||||
<v-card-title class="pa-0 custom-title-4">Data Set 리스트</v-card-title>
|
<v-card-title class="pa-0 custom-title-4">Data Set 리스트</v-card-title>
|
||||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
|
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
|
||||||
:btnActionsFnc="btnActions" />
|
:btnActionsFnc="btnActions" />
|
||||||
</div>
|
</div>
|
||||||
<div class="px-5" style="min-height:calc(100% - 76px)">
|
<div ref="gridParent" class="px-5" style="min-height: 60vh">
|
||||||
<div ref="gridParent" class="w100 h100">
|
|
||||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
|
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
|
||||||
@getRowsData="getRowData" @sendSelectedRowStatInfo="getSelectedRowStatInfo" :dataPath="dataPathMock"
|
@getRowsData="getRowData" @sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||||
:selectedRowDataWatchFlag="true" />
|
:selectedRowDataWatchFlag="true" />
|
||||||
</div>
|
<!-- <div ref="gridParent" class="w100 h100">
|
||||||
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="7" class="h100">
|
<v-col :cols="7" >
|
||||||
<v-card class="pb-5">
|
<v-card class="pb-5">
|
||||||
<v-card-title class="custom-title-4" style="min-height:76px;">Data Set 상세
|
<v-card-title class="custom-title-4" style="min-height:76px;">Data Set 상세
|
||||||
</v-card-title>
|
</v-card-title>
|
||||||
|
@ -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,
|
||||||
// },
|
},
|
||||||
// });
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
|
<common-page-title />
|
||||||
<v-row ref="searchFilter">
|
<v-row ref="searchFilter">
|
||||||
<v-col :cols="12">
|
<v-col :cols="12">
|
||||||
<v-card class="searchFilter">
|
<v-card class="searchFilter">
|
||||||
@ -158,8 +159,8 @@ export default {
|
|||||||
},
|
},
|
||||||
async created() { },
|
async created() { },
|
||||||
async mounted() {
|
async mounted() {
|
||||||
this.initTest();
|
// this.initTest();
|
||||||
return;
|
// return;
|
||||||
|
|
||||||
this.init();
|
this.init();
|
||||||
// document.querySelector('.icon_arrow').style.width = document.querySelector('.iconArrowCols').clientWidth-20 + "px";
|
// document.querySelector('.icon_arrow').style.width = document.querySelector('.iconArrowCols').clientWidth-20 + "px";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
<PageTitle text="효율성 지표 보고서" />
|
<CommonPageTitle />
|
||||||
<v-row ref="searchFilter">
|
<v-row ref="searchFilter">
|
||||||
<v-col :cols="12">
|
<v-col :cols="12">
|
||||||
<v-card class="searchFilter">
|
<v-card class="searchFilter">
|
||||||
@ -98,7 +98,6 @@ import Chart from '~/components/common/Chart';
|
|||||||
import EqpmSelectPop from '~/components/common/modal/EqpmSelectPop';
|
import EqpmSelectPop from '~/components/common/modal/EqpmSelectPop';
|
||||||
import DateUtility from '~/plugins/dateUtility';
|
import DateUtility from '~/plugins/dateUtility';
|
||||||
import XLSX from 'xlsx';
|
import XLSX from 'xlsx';
|
||||||
import PageTitle from "~/components/common/PageTitle";
|
|
||||||
|
|
||||||
let myTitle;
|
let myTitle;
|
||||||
let myPrgmId;
|
let myPrgmId;
|
||||||
@ -130,7 +129,6 @@ export default {
|
|||||||
EqpmSelectPop,
|
EqpmSelectPop,
|
||||||
DateUtility,
|
DateUtility,
|
||||||
XLSX,
|
XLSX,
|
||||||
PageTitle,
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -266,8 +264,8 @@ export default {
|
|||||||
},
|
},
|
||||||
created() { },
|
created() { },
|
||||||
async mounted() {
|
async mounted() {
|
||||||
console.log('----DEBUG---');
|
// console.log('----DEBUG---');
|
||||||
await this.initTest();
|
// await this.initTest();
|
||||||
// End Debug Test---
|
// End Debug Test---
|
||||||
await this.init();
|
await this.init();
|
||||||
this.initedFlag = true;
|
this.initedFlag = true;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div ref="mainDiv" class="l-layout">
|
<div ref="mainDiv" class="l-layout">
|
||||||
|
<common-page-title />
|
||||||
<v-row ref="searchFilter">
|
<v-row ref="searchFilter">
|
||||||
<v-col :cols="12">
|
<v-col :cols="12">
|
||||||
<v-card class="searchFilter">
|
<v-card class="searchFilter">
|
||||||
@ -9,20 +10,20 @@
|
|||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="2.5">
|
<v-col :cols="2.5">
|
||||||
<component :is="'SelectBox'" ref="SelectBox1" :propsValue="selectValue01" :itemList="selectValueList01"
|
<component :is="'SelectBox'" ref="SelectBox1" :propsValue="selectValue01" :itemList="selectValueList01"
|
||||||
:label="'FAB'" @update:propsValue="selectValue01 = $event" :iconShow="false" />
|
:label="'FAB'" @update:propsValue="selectValue01 = $event" :iconShow="false" customClass="select-large" />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="2.5">
|
<v-col :cols="2.5">
|
||||||
<component :is="'SelectBox'" ref="SelectBox2" :propsValue="selectValue02" :itemList="selectValueList02"
|
<component :is="'SelectBox'" ref="SelectBox2" :propsValue="selectValue02" :itemList="selectValueList02"
|
||||||
:label="'설비종류'" @update:propsValue="selectValue02 = $event" :iconShow="false" />
|
:label="'설비종류'" @update:propsValue="selectValue02 = $event" :iconShow="false" customClass="select-large"/>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="2.5">
|
<v-col :cols="2.5">
|
||||||
<component :is="'SelectBox'" ref="SelectBox3" :propsValue="selectValue03" :itemList="selectValueList03"
|
<component :is="'SelectBox'" ref="SelectBox3" :propsValue="selectValue03" :itemList="selectValueList03"
|
||||||
:label="'설비그룹'" @update:propsValue="selectValue03 = $event" :iconShow="false" />
|
:label="'설비그룹'" @update:propsValue="selectValue03 = $event" :iconShow="false" customClass="select-large" />
|
||||||
</v-col>
|
</v-col>
|
||||||
|
|
||||||
<BtnSearch @click="search" />
|
<BtnSearch size="large" @click="search" />
|
||||||
<v-col>
|
<!-- <v-col>
|
||||||
</v-col>
|
</v-col> -->
|
||||||
<component ref="EnrgUsePlanModiPop" :is="'EnrgUsePlanModiPop'" :label="'test'" :parentPrgmId="myPrgmId"
|
<component ref="EnrgUsePlanModiPop" :is="'EnrgUsePlanModiPop'" :label="'test'" :parentPrgmId="myPrgmId"
|
||||||
@gridEditingFinish="gridEditingFinish" />
|
@gridEditingFinish="gridEditingFinish" />
|
||||||
</v-row>
|
</v-row>
|
||||||
@ -30,18 +31,15 @@
|
|||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-row ref="contents">
|
<v-row ref="contents">
|
||||||
<v-col :cols="12" style="height: 100%">
|
<v-col :cols="12" >
|
||||||
<v-card class="pb-5 h100">
|
<v-card class="pb-5">
|
||||||
<div class="d-flex align-center justify-space-between pa-4">
|
<div class="d-flex align-center justify-space-between pa-4">
|
||||||
<v-card-title class="pa-0 custom-title-4">설비별 에너지 계획 리스트</v-card-title>
|
<v-card-title class="pa-0 custom-title-4">설비별 에너지 계획 리스트</v-card-title>
|
||||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
||||||
</div>
|
</div>
|
||||||
<div class="h100 px-5" style="height:calc(100% - 70px)">
|
<div ref="gridParent" class="px-5" style="min-height: 60vh;">
|
||||||
<div ref="gridParent" class="w100 h100">
|
|
||||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
|
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
|
||||||
:editorGrid="true" @getRowsData="getRowData" :dataPath="dataPathMock" />
|
:editorGrid="true" @getRowsData="getRowData" />
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
@ -171,8 +169,8 @@ export default {
|
|||||||
created() { },
|
created() { },
|
||||||
async mounted() {
|
async mounted() {
|
||||||
// -------
|
// -------
|
||||||
this.initTest();
|
// this.initTest();
|
||||||
return;
|
// return;
|
||||||
// ========End test===========
|
// ========End test===========
|
||||||
await this.init();
|
await this.init();
|
||||||
this.initedFlag = true;
|
this.initedFlag = true;
|
||||||
@ -420,53 +418,25 @@ export default {
|
|||||||
|
|
||||||
class CustumButton {
|
class CustumButton {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
// v-btn v-btn--is-elevated v-btn--has-bg theme--dark v-size--default
|
|
||||||
const el = document.createElement('button');
|
|
||||||
const { grid, rowKey, columnInfo } = props;
|
const { grid, rowKey, columnInfo } = props;
|
||||||
|
|
||||||
$(el).addClass('tui-grid-cell-content');
|
const gridData = grid.store.data.rawData;
|
||||||
// $(el).css('text-align', 'center');
|
const value = gridData[rowKey][columnInfo.name];
|
||||||
el.classList.add('v-btn');
|
|
||||||
// el.style.width = '80%';
|
|
||||||
// el.style.height = '80%';
|
|
||||||
// el.style.boxShadow = '0px 0px 0px 2px #cbced6';
|
|
||||||
// el.style.background = 'linear-gradient(to bottom, #242940 5%, #476e9e 100%)';
|
|
||||||
// el.style.backgroundColor = '#144985';
|
|
||||||
el.style.borderRadius = '7px';
|
|
||||||
el.style.border = '1px solid #4e6096';
|
|
||||||
// el.style.display = 'inline-block';
|
|
||||||
// el.style.cursor = 'pointer';
|
|
||||||
el.style.color = '#ffffff';
|
|
||||||
// el.style.fontFamily = 'Arial';
|
|
||||||
el.style.padding = '6% 3%';
|
|
||||||
|
|
||||||
// el.style.textDecoration = 'none';
|
|
||||||
// el.style.textShadow = '0px 1px 0px #283966';
|
|
||||||
|
|
||||||
el.innerText = columnInfo.renderer.options.value;
|
|
||||||
this.el = el;
|
|
||||||
this.disabled = columnInfo.renderer.options.disabled || false;
|
this.disabled = columnInfo.renderer.options.disabled || false;
|
||||||
|
const elDiv = document.createElement('div');
|
||||||
|
elDiv.innerHTML = `<span>${value}</span>`;
|
||||||
|
$(elDiv).addClass('tui-grid-cell-content d-flex justify-space-between');
|
||||||
|
const el2 = document.createElement('button');
|
||||||
|
$(el2).addClass('edit-btn blue--text');
|
||||||
|
el2.innerText = 'Edit';
|
||||||
|
elDiv.appendChild(el2);
|
||||||
|
|
||||||
|
this.el = elDiv;
|
||||||
|
|
||||||
if (!this.disabled) {
|
if (!this.disabled) {
|
||||||
// hover 기능 구현
|
|
||||||
this.el.addEventListener('mouseover', function (event) {
|
|
||||||
// console.log('darkModeFg', _this.darkModeFg);
|
|
||||||
// console.log('event',event.fromElement);
|
|
||||||
// console.log('event',document.defaultView.getComputedStyle(el).getPropertyValue('background-color'));
|
|
||||||
// rgb(85, 130, 220) // light
|
|
||||||
// el.style.backgroundColor = '#26578F'; // rgb(20, 73, 133) // dark
|
|
||||||
// let btnColor = _this.darkModeFg? {mouseOver: '#26578F', mouseOut: '#144985'} : {mouseOver: 'rgb(85, 130, 220)', mouseOut: 'rgb(71, 119, 217)'};
|
|
||||||
// el.style.backgroundColor = btnColor['mouseOver'];
|
|
||||||
});
|
|
||||||
this.el.addEventListener('mouseout', function (event) {
|
|
||||||
// rgb(71, 119, 217) // light
|
|
||||||
// el.style.backgroundColor = '#144985'; // dark
|
|
||||||
// console.log('event',event.fromElement);
|
|
||||||
// let btnColor = _this.darkModeFg? {mouseOver: '#26578F', mouseOut: '#144985'} : {mouseOver: 'rgb(85, 130, 220)', mouseOut: 'rgb(71, 119, 217)'};
|
|
||||||
// el.style.backgroundColor = btnColor['mouseOut'];
|
|
||||||
});
|
|
||||||
// click 이벤트
|
// click 이벤트
|
||||||
this.el.addEventListener('click', function (event) {
|
el2.addEventListener('click', function (event) {
|
||||||
let gridData = grid.store.data.rawData;
|
let gridData = grid.store.data.rawData;
|
||||||
let rowNum = gridData[rowKey].rowNum;
|
let rowNum = gridData[rowKey].rowNum;
|
||||||
let selectedGridData = gridData.filter(item => {
|
let selectedGridData = gridData.filter(item => {
|
||||||
@ -537,18 +507,25 @@ export default {
|
|||||||
minWidth: 200,
|
minWidth: 200,
|
||||||
align: 'left',
|
align: 'left',
|
||||||
// hidden: true,
|
// hidden: true,
|
||||||
formatter: ({ value, row }) => {
|
// formatter: ({ value, row }) => {
|
||||||
return `
|
// return `
|
||||||
<span>${value}</span>
|
// <span>${value}</span>
|
||||||
<button class="edit-btn" data-row='${JSON.stringify(row)}'>Edit</button>
|
// <button class="edit-btn" data-row='${JSON.stringify(row)}'>Edit</button>
|
||||||
`;
|
// `;
|
||||||
}
|
// }
|
||||||
|
renderer: {
|
||||||
|
type: CustumButton,
|
||||||
|
options: {
|
||||||
|
value: '계획수정',
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: '',
|
header: '',
|
||||||
name: 'btnCol',
|
name: 'btnCol',
|
||||||
width: 70,
|
width: 70,
|
||||||
align: 'center',
|
align: 'center',
|
||||||
|
hidden: true,
|
||||||
renderer: {
|
renderer: {
|
||||||
type: CustumButton,
|
type: CustumButton,
|
||||||
options: {
|
options: {
|
||||||
|
@ -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;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,5 +52,4 @@ use([
|
|||||||
// ToolboxComponent, // 그래프 이미지 save
|
// ToolboxComponent, // 그래프 이미지 save
|
||||||
]);
|
]);
|
||||||
|
|
||||||
console.log('echart plugin', echarts)
|
|
||||||
Vue.component('VChart', VChart);
|
Vue.component('VChart', VChart);
|
||||||
|
@ -197,8 +197,8 @@ export const mutations = {
|
|||||||
|
|
||||||
// 페이지 그리드 데이터 set
|
// 페이지 그리드 데이터 set
|
||||||
setGridData: (state, payload) => {
|
setGridData: (state, payload) => {
|
||||||
console.log('check:', state.pageData)
|
// console.log('check:', state.pageData)
|
||||||
console.log('payload:', payload)
|
// console.log('payload:', payload)
|
||||||
// state.pageData['PRG0001']['dashBoard_grid_01'] = {
|
// state.pageData['PRG0001']['dashBoard_grid_01'] = {
|
||||||
// ...state.pageData['PRG0001']['dashBoard_grid_01'],
|
// ...state.pageData['PRG0001']['dashBoard_grid_01'],
|
||||||
// data: payload.value,
|
// data: payload.value,
|
||||||
|
@ -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',
|
||||||
@ -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 });
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user