Compare commits
85 Commits
dd9739bf74
...
dev-dungtv
| Author | SHA1 | Date | |
|---|---|---|---|
| dcdcf772ce | |||
| 40addfe639 | |||
| 238fdb5fc5 | |||
| bfe206a2bf | |||
| a6e8e6cf86 | |||
| f9643f46a0 | |||
| 056d1a1e17 | |||
| a58062a7b7 | |||
| 44077048e6 | |||
| e32f03c9ae | |||
| 58bb7f915c | |||
| a85f9f98f6 | |||
| 791b291c30 | |||
| e6e1703942 | |||
| 719e7cee69 | |||
| 9b89a5625b | |||
| e600089f7e | |||
| adbf220770 | |||
| 51b59bf4c9 | |||
| b2e50837fd | |||
| 88b59f5f33 | |||
| a2e7e8d74e | |||
| d37f23512a | |||
| 1a23077421 | |||
| 9603353ab3 | |||
| 6077dddb74 | |||
| 2338bbf2ec | |||
| c2e2c10a8a | |||
| d790249743 | |||
| 205821fc11 | |||
| fade079b06 | |||
| 98c26a156e | |||
| b4f8e41c7e | |||
| e9bdd80f14 | |||
| eeadcd254d | |||
| b56bd12bb7 | |||
| bea1e0889b | |||
| 0f66d84b48 | |||
| 34d03b2546 | |||
| 8f83e1d60c | |||
| 1faf49056d | |||
| e9ab3faa51 | |||
| 54220aa4eb | |||
| 315aafc528 | |||
| 8963a92475 | |||
| d66a03626b | |||
| 665a178f82 | |||
| 7e2383efda | |||
| 13cedc7337 | |||
| e128375aeb | |||
| 710714116e | |||
| 33dbe93290 | |||
| 708b648080 | |||
| 2845672723 | |||
| bbaf26af86 | |||
| c3d01c998c | |||
| aec9353ab2 | |||
| 2dd0c6a72c | |||
| 631637a8e1 | |||
| 3ff87852e5 | |||
| 117e0adeb9 | |||
| 402b09440f | |||
| 71f7cf4d30 | |||
| d3984182e8 | |||
| 933d4b751f | |||
| 020432d5ac | |||
| 3f99958fe3 | |||
| 898df6743a | |||
| dd559629ab | |||
| d45d141c3c | |||
| 1453e75f9a | |||
| 7227d5d56c | |||
| 85fc9a62af | |||
| a87a8262f4 | |||
| 481434a144 | |||
| 524023b3e1 | |||
| cb2d4e2e91 | |||
| dca6673a11 | |||
| 15aa03b1c1 | |||
| bbd037dcb4 | |||
| 0ad898769d | |||
| bcf4015cae | |||
| ab702c4495 | |||
| edab77d0c6 | |||
| e2f7ab5113 |
@ -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;
|
||||||
|
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,17 @@ 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 {
|
||||||
|
height:calc(100vh - 60px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.v-icon {
|
.v-icon {
|
||||||
@ -525,8 +535,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");
|
||||||
@ -683,6 +691,43 @@ a {
|
|||||||
}
|
}
|
||||||
|
|
||||||
&>.v-treeview-node {
|
&>.v-treeview-node {
|
||||||
|
|
||||||
|
.v-treeview-node--active {
|
||||||
|
background-color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"v-treeview-node-label-active-bg"
|
||||||
|
);
|
||||||
|
border: 1px solid map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"v-treeview-node-label-active-border"
|
||||||
|
);
|
||||||
|
border-radius: 8px;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
background-color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"v-treeview-node-subroot-backgroundColor"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
&>.v-treeview-node__content {
|
||||||
|
.v-treeview-node__label {
|
||||||
|
color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"v-treeview-node-label-active-color"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-icon {
|
||||||
|
color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"v-treeview-icon-active-color"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
&>.v-treeview-node__root {
|
&>.v-treeview-node__root {
|
||||||
&:before {
|
&:before {
|
||||||
background-color: map-deep-get($config,
|
background-color: map-deep-get($config,
|
||||||
@ -728,6 +773,7 @@ a {
|
|||||||
|
|
||||||
&>.v-treeview-node__children {
|
&>.v-treeview-node__children {
|
||||||
&>.v-treeview-node {
|
&>.v-treeview-node {
|
||||||
|
|
||||||
&>.v-treeview-node__root {
|
&>.v-treeview-node__root {
|
||||||
&:before {
|
&:before {
|
||||||
background-color: map-deep-get($config,
|
background-color: map-deep-get($config,
|
||||||
@ -785,117 +831,6 @@ a {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
&>.v-treeview-node--active {
|
|
||||||
&:before {
|
|
||||||
background-color: map-deep-get($config,
|
|
||||||
#{$theme},
|
|
||||||
"v-treeview-node-subroot-backgroundColor"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
&>.v-treeview-node__content {
|
|
||||||
.v-treeview-node__label {
|
|
||||||
color: map-deep-get($config,
|
|
||||||
#{$theme},
|
|
||||||
"v-treeview-node-label-active-color"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-icon {
|
|
||||||
color: map-deep-get($config,
|
|
||||||
#{$theme},
|
|
||||||
"v-treeview-icon-active-color"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&>.v-treeview-node__children {
|
|
||||||
& .v-treeview-node {
|
|
||||||
&>.v-treeview-node__root {
|
|
||||||
&:before {
|
|
||||||
background-color: map-deep-get($config,
|
|
||||||
#{$theme},
|
|
||||||
"v-treeview-node-subroot-backgroundColor"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
&>.v-treeview-node__content {
|
|
||||||
.v-treeview-node__label {
|
|
||||||
color: map-deep-get($config,
|
|
||||||
#{$theme},
|
|
||||||
"v-treeview-node-label-color"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-icon {
|
|
||||||
color: map-deep-get($config,
|
|
||||||
#{$theme},
|
|
||||||
"v-treeview-icon-color"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:not(.v-treeview-node--active):hover {
|
|
||||||
&:before {
|
|
||||||
background-color: map-deep-get($config,
|
|
||||||
#{$theme},
|
|
||||||
"v-treeview-leaf-active-backgroundColor"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
&>.v-treeview-node__content {
|
|
||||||
.v-treeview-node__label {
|
|
||||||
color: map-deep-get($config,
|
|
||||||
#{$theme},
|
|
||||||
"v-treeview-leaf-active-color"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-icon {
|
|
||||||
color: map-deep-get($config,
|
|
||||||
#{$theme},
|
|
||||||
"v-treeview-leaf-active-color"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&>.v-treeview-node--active {
|
|
||||||
background-color: map-deep-get($config,
|
|
||||||
#{$theme},
|
|
||||||
"v-treeview-node-label-active-bg"
|
|
||||||
);
|
|
||||||
border: 1px solid map-deep-get($config,
|
|
||||||
#{$theme},
|
|
||||||
"v-treeview-node-label-active-border"
|
|
||||||
);
|
|
||||||
border-radius: 8px;
|
|
||||||
|
|
||||||
&:before {
|
|
||||||
opacity: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
&>.v-treeview-node__content {
|
|
||||||
.v-treeview-node__label {
|
|
||||||
color: map-deep-get($config,
|
|
||||||
#{$theme},
|
|
||||||
"v-treeview-node-label-active-color"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-icon {
|
|
||||||
color: map-deep-get($config,
|
|
||||||
#{$theme},
|
|
||||||
"v-treeview-node-label-active-color"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&[aria-expanded="true"] {
|
&[aria-expanded="true"] {
|
||||||
& .v-treeview-node__root>.v-treeview-node__content {
|
& .v-treeview-node__root>.v-treeview-node__content {
|
||||||
.v-treeview-node__label {
|
.v-treeview-node__label {
|
||||||
@ -943,15 +878,24 @@ a {
|
|||||||
"v-calendar-weekday-backgroundColor"
|
"v-calendar-weekday-backgroundColor"
|
||||||
);
|
);
|
||||||
border-right: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
|
border-right: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
|
||||||
|
border-bottom: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
|
||||||
|
border-top: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
|
||||||
color: map-deep-get($config, #{$theme}, "v-calendar-weekday-color");
|
color: map-deep-get($config, #{$theme}, "v-calendar-weekday-color");
|
||||||
|
|
||||||
&:nth-of-type(1) {
|
&:nth-of-type(1) {
|
||||||
color: map-deep-get($color, "week", "sun");
|
// color: map-deep-get($config,
|
||||||
|
// #{$theme},
|
||||||
|
// "v-calendar-is-sun"
|
||||||
|
// );
|
||||||
|
border-left: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
|
||||||
}
|
}
|
||||||
|
|
||||||
&:nth-of-type(7) {
|
// &:nth-of-type(7) {
|
||||||
color: map-deep-get($color, "week", "sat");
|
// color: map-deep-get($config,
|
||||||
}
|
// #{$theme},
|
||||||
|
// "v-calendar-is-sat"
|
||||||
|
// );
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
>.vc-day {
|
>.vc-day {
|
||||||
@ -960,22 +904,33 @@ a {
|
|||||||
|
|
||||||
.day-hldyNm,
|
.day-hldyNm,
|
||||||
.day-label.is-holiday {
|
.day-label.is-holiday {
|
||||||
color: map-deep-get($color, "week", "sun");
|
color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"v-calendar-is-sun"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
&.weekday-1 {
|
&.weekday-1 {
|
||||||
|
|
||||||
.day-label,
|
.day-label,
|
||||||
.day-hldyNm {
|
.day-hldyNm {
|
||||||
color: map-deep-get($color, "week", "sun");
|
color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"v-calendar-is-sun"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
border-left: 1px solid map-deep-get($config, #{$theme}, "v-calendar-weekday-border-color");
|
||||||
}
|
}
|
||||||
|
|
||||||
&.weekday-7 {
|
&.weekday-7 {
|
||||||
|
|
||||||
.day-label,
|
.day-label,
|
||||||
.day-hldyNm {
|
.day-hldyNm {
|
||||||
color: map-deep-get($color, "week", "sat");
|
color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"v-calendar-is-sat"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1177,11 +1132,17 @@ a {
|
|||||||
}
|
}
|
||||||
|
|
||||||
th.tui-sun {
|
th.tui-sun {
|
||||||
color: map-deep-get($color, "week", "sun");
|
color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"v-calendar-is-sun"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
th.tui-sat {
|
th.tui-sat {
|
||||||
color: map-deep-get($color, "week", "sat");
|
color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"v-calendar-is-sat"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1197,11 +1158,17 @@ a {
|
|||||||
}
|
}
|
||||||
|
|
||||||
td.tui-calendar-sun {
|
td.tui-calendar-sun {
|
||||||
color: map-deep-get($color, "week", "sun");
|
color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"v-calendar-is-sun"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
td.tui-calendar-sat {
|
td.tui-calendar-sat {
|
||||||
color: map-deep-get($color, "week", "sat");
|
color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"v-calendar-is-sat"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1255,19 +1222,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 +1269,25 @@ 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] {
|
||||||
|
|||||||
@ -92,10 +92,13 @@
|
|||||||
background: map-deep-get($config, #{$theme}, "basic-button-background");
|
background: map-deep-get($config, #{$theme}, "basic-button-background");
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-button {
|
.searchFilter{
|
||||||
color: map-deep-get($config, #{$theme}, "search-btn-color");
|
.search-button {
|
||||||
|
height: 40px;
|
||||||
|
color: map-deep-get($config, #{$theme}, "search-btn-color");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.v-dialog {
|
.v-dialog {
|
||||||
.ant-btn-icon-only {
|
.ant-btn-icon-only {
|
||||||
color: map-deep-get(
|
color: map-deep-get(
|
||||||
@ -107,10 +110,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 {
|
||||||
@ -125,6 +138,15 @@
|
|||||||
background: map-deep-get($config, #{$theme}, "ant-btn-danger-bg") !important;
|
background: map-deep-get($config, #{$theme}, "ant-btn-danger-bg") !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.expand-btn {
|
||||||
|
.v-icon {
|
||||||
|
color: map-deep-get($config, #{$theme}, "basic-button-color");
|
||||||
|
svg {
|
||||||
|
fill: map-deep-get($config, #{$theme}, "basic-button-color");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -151,4 +173,13 @@
|
|||||||
height: 16px;
|
height: 16px;
|
||||||
background:none;
|
background:none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.ant-btn {
|
||||||
|
&.expand-btn {
|
||||||
|
.v-icon {
|
||||||
|
span {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -98,6 +98,17 @@
|
|||||||
@include theme($theme);
|
@include theme($theme);
|
||||||
|
|
||||||
.v-application.#{$theme}-mode {
|
.v-application.#{$theme}-mode {
|
||||||
|
.grid-title {
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 24px;
|
||||||
|
letter-spacing: 0;
|
||||||
|
color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"tui-grid-title-color"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
.tui-grid {
|
.tui-grid {
|
||||||
&-table {
|
&-table {
|
||||||
border: 1px solid;
|
border: 1px solid;
|
||||||
@ -123,11 +134,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&-body-container{
|
&-body-container{
|
||||||
border-right: 1px solid;
|
border-right: 0;
|
||||||
border-right-color: map-deep-get($config,
|
// border-right-color: map-deep-get($config,
|
||||||
#{$theme},
|
// #{$theme},
|
||||||
"tui-grid-cell-borderColor"
|
// "tui-grid-cell-borderColor"
|
||||||
);
|
// );
|
||||||
width: auto !important;
|
width: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,24 +151,27 @@
|
|||||||
width: $scrollbar-width !important;
|
width: $scrollbar-width !important;
|
||||||
height: $scrollbar-width !important;
|
height: $scrollbar-width !important;
|
||||||
-webkit-appearance: initial;
|
-webkit-appearance: initial;
|
||||||
background-color: map-deep-get($config,
|
// background-color: map-deep-get($config,
|
||||||
#{$theme},
|
// #{$theme},
|
||||||
"scrollbar-track"
|
// "tui-grid-cell-borderColor"
|
||||||
) !important;
|
// ) !important;
|
||||||
|
background-color: rgba(0, 0, 0, 0) !important;
|
||||||
border-radius: 3px !important;
|
border-radius: 3px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
& ::-webkit-scrollbar-track {
|
& ::-webkit-scrollbar-track {
|
||||||
background-color: map-deep-get($config,
|
// background-color: map-deep-get($config,
|
||||||
#{$theme},
|
// #{$theme},
|
||||||
"scrollbar-track"
|
// "tui-grid-cell-borderColor"
|
||||||
) !important;
|
// ) !important;
|
||||||
|
background-color: rgba(0, 0, 0, 0) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
& ::-webkit-scrollbar-thumb {
|
& ::-webkit-scrollbar-thumb {
|
||||||
width: 50px !important;
|
width: 50px !important;
|
||||||
height: 50px !important;
|
height: 50px !important;
|
||||||
background-color: map-deep-get($config, #{$theme}, "scrollbar-thumb");
|
background-color: map-deep-get($config, #{$theme}, "scrollbar-thumb");
|
||||||
|
// background-color: rgba(0, 0, 0, 0);
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,6 +198,7 @@
|
|||||||
&-scrollbar-right-top {
|
&-scrollbar-right-top {
|
||||||
background-color: rgba(0, 0, 0, 0);
|
background-color: rgba(0, 0, 0, 0);
|
||||||
border: none;
|
border: none;
|
||||||
|
display: none;
|
||||||
// background-color: map-deep-get(
|
// background-color: map-deep-get(
|
||||||
// $config,
|
// $config,
|
||||||
// #{$theme},
|
// #{$theme},
|
||||||
@ -210,12 +225,13 @@
|
|||||||
width: $scrollbar-width !important;
|
width: $scrollbar-width !important;
|
||||||
height: $scrollbar-width !important;
|
height: $scrollbar-width !important;
|
||||||
// display: none !important;
|
// display: none !important;
|
||||||
border-color: map-deep-get($config, #{$theme}, "scrollbar-track");
|
border-color: map-deep-get($config, #{$theme}, "cardBackground");
|
||||||
background-color: map-deep-get($config, #{$theme}, "scrollbar-track");
|
background-color: map-deep-get($config, #{$theme}, "cardBackground");
|
||||||
// border: none !important;
|
// border: none !important;
|
||||||
// bottom: -1px;
|
// bottom: -1px;
|
||||||
// right: -2px;
|
// right: -2px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
// display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-scrollbar-frozen-border,
|
&-scrollbar-frozen-border,
|
||||||
@ -225,13 +241,9 @@
|
|||||||
border-color: transparent !important;
|
border-color: transparent !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
// &-body-area {
|
&-body-area,
|
||||||
// overflow: auto !important;
|
|
||||||
// }
|
|
||||||
|
|
||||||
&-container,
|
&-container,
|
||||||
&-layer-state,
|
&-layer-state,
|
||||||
&-body-area,
|
|
||||||
&-summary-area,
|
&-summary-area,
|
||||||
&-cell {
|
&-cell {
|
||||||
background-color: map-deep-get($config,
|
background-color: map-deep-get($config,
|
||||||
@ -243,23 +255,36 @@
|
|||||||
"tui-grid-border-vertical-color"
|
"tui-grid-border-vertical-color"
|
||||||
);
|
);
|
||||||
|
|
||||||
&-current-row{
|
// &-current-row{
|
||||||
td {
|
// }
|
||||||
.custom-radio {
|
td.row-selected {
|
||||||
.radio-mark{
|
.custom-radio {
|
||||||
border-color: #1677ff;
|
background-color: map-deep-get($config,
|
||||||
background-color: #fff;
|
#{$theme},
|
||||||
&::after {
|
"ant-btn-primary-color"
|
||||||
content: "";
|
);
|
||||||
position: absolute;
|
.radio-mark{
|
||||||
top: 50%;
|
border-color: map-deep-get($config,
|
||||||
left: 50%;
|
#{$theme},
|
||||||
transform: translate(-50%, -50%);
|
"arow-line-color"
|
||||||
height: 11px;
|
);
|
||||||
width: 11px;
|
background-color: map-deep-get($config,
|
||||||
border-radius: 50%;
|
#{$theme},
|
||||||
background-color: #1677ff;
|
"arow-line-btn-bg-color"
|
||||||
}
|
);
|
||||||
|
&::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
height: 8px;
|
||||||
|
width: 8px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"arow-line-color"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -291,8 +316,8 @@
|
|||||||
&-header-area,
|
&-header-area,
|
||||||
&-cell-header {
|
&-cell-header {
|
||||||
// font-family: inherit;
|
// font-family: inherit;
|
||||||
|
// font-style: Semi Bold;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-style: Semi Bold;
|
|
||||||
background-color: map-deep-get($config,
|
background-color: map-deep-get($config,
|
||||||
#{$theme},
|
#{$theme},
|
||||||
"tui-grid-header-backgroundColor"
|
"tui-grid-header-backgroundColor"
|
||||||
@ -309,8 +334,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&-header-area {
|
&-header-area {
|
||||||
background-color: none;
|
// background-color: none;
|
||||||
border: none;
|
border: none;
|
||||||
|
margin-right: 0 !important;
|
||||||
|
background-color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"tui-grid-cell-backgroundColor"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
&-row-odd,
|
&-row-odd,
|
||||||
|
|||||||
@ -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 {
|
||||||
@ -165,8 +171,8 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-left: 28px;
|
padding-left: 0;
|
||||||
margin: 10px;
|
margin: 5px;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
.custom-radio input[type="radio"] {
|
.custom-radio input[type="radio"] {
|
||||||
@ -177,13 +183,13 @@
|
|||||||
/* Custom radio appearance */
|
/* Custom radio appearance */
|
||||||
.radio-mark {
|
.radio-mark {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: -8px;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
height: 18px;
|
height: 14px;
|
||||||
width: 18px;
|
width: 14px;
|
||||||
background-color: white;
|
// background-color: white;
|
||||||
border: 2px solid #ccc;
|
border: 1px solid #ccc;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
transition: all 0.2s ease;
|
transition: all 0.2s ease;
|
||||||
}
|
}
|
||||||
@ -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{
|
||||||
@ -247,9 +263,6 @@
|
|||||||
"v-input-backgroundColor"
|
"v-input-backgroundColor"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
&:not(.v-input--radio-group, .v-input--checkbox) {
|
&:not(.v-input--radio-group, .v-input--checkbox) {
|
||||||
.v-input__slot {
|
.v-input__slot {
|
||||||
background-color: map-deep-get($config,
|
background-color: map-deep-get($config,
|
||||||
@ -356,6 +369,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.radio-mark {
|
||||||
|
background-color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"ant-btn-primary-color"
|
||||||
|
);
|
||||||
|
border-color: map-deep-get($config,
|
||||||
|
#{$theme},
|
||||||
|
"v-input-textarea-border"
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.v-radio {
|
.v-radio {
|
||||||
|
|||||||
@ -28,8 +28,8 @@
|
|||||||
|
|
||||||
.v-slide-group__content {
|
.v-slide-group__content {
|
||||||
border-bottom: 1px solid map-deep-get($config,
|
border-bottom: 1px solid map-deep-get($config,
|
||||||
#{$theme},
|
#{$theme},
|
||||||
"v-tabs-items-border-color"
|
"v-tabs-items-border-color"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,11 +68,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: map-deep-get(
|
color: map-deep-get(
|
||||||
$config,
|
$config,
|
||||||
#{$theme},
|
#{$theme},
|
||||||
"v-tabs-hover-color"
|
"v-tabs-hover-color"
|
||||||
) !important
|
) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:not(.v-tab--active){
|
&:not(.v-tab--active){
|
||||||
|
|||||||
@ -63,6 +63,12 @@
|
|||||||
line-height: 1.25 !important;
|
line-height: 1.25 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.custom-title-7 {
|
||||||
|
font-size: 0.875rem !important;
|
||||||
|
font-weight: 400 !important;
|
||||||
|
line-height: 22px !important;
|
||||||
|
}
|
||||||
|
|
||||||
.custom-title-8 {
|
.custom-title-8 {
|
||||||
font-size: 0.75rem !important;
|
font-size: 0.75rem !important;
|
||||||
font-weight: 700 !important;
|
font-weight: 700 !important;
|
||||||
@ -76,15 +82,15 @@
|
|||||||
|
|
||||||
.custom-text-2 {
|
.custom-text-2 {
|
||||||
opacity: 0.6;
|
opacity: 0.6;
|
||||||
font-family: SpoqaHanSansNeo;
|
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: normal;
|
|
||||||
font-stretch: normal;
|
|
||||||
font-style: normal;
|
|
||||||
line-height: 2.17;
|
line-height: 2.17;
|
||||||
letter-spacing: normal;
|
// font-weight: normal;
|
||||||
text-align: right;
|
// font-stretch: normal;
|
||||||
color: #fff;
|
// font-style: normal;
|
||||||
|
// letter-spacing: normal;
|
||||||
|
// text-align: right;
|
||||||
|
// color: #fff;
|
||||||
|
// font-family: SpoqaHanSansNeo;
|
||||||
}
|
}
|
||||||
|
|
||||||
.text-color--white-0 {
|
.text-color--white-0 {
|
||||||
@ -113,6 +119,14 @@
|
|||||||
color: map-deep-get($config, #{$theme}, "h1-title");
|
color: map-deep-get($config, #{$theme}, "h1-title");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.custom-subtitle-tab {
|
||||||
|
font-size: 1.25rem !important;
|
||||||
|
font-weight: 600 !important;
|
||||||
|
line-height: 1.25 !important;
|
||||||
|
color: map-deep-get($config, #{$theme}, "subtitle-tab");
|
||||||
|
}
|
||||||
|
|
||||||
.v-dialog {
|
.v-dialog {
|
||||||
.custom-title-4 {
|
.custom-title-4 {
|
||||||
font-size: 16px !important;
|
font-size: 16px !important;
|
||||||
|
|||||||
@ -14,11 +14,14 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
border: solid 1px;
|
border: solid 1px;
|
||||||
height: 40px;
|
height: 32px;
|
||||||
// border-color: #424242;
|
// border-color: #424242;
|
||||||
border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color");
|
border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color");
|
||||||
|
|
||||||
|
&.datepicker-large {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
.v-input {
|
.v-input {
|
||||||
|
|
||||||
// ----------------------
|
// ----------------------
|
||||||
|
|||||||
@ -32,8 +32,8 @@ $color: (
|
|||||||
"black": ("0": #000,
|
"black": ("0": #000,
|
||||||
"1": #111),
|
"1": #111),
|
||||||
"white": ("0": #fff),
|
"white": ("0": #fff),
|
||||||
"week": ("sun": #fb5a83,
|
"week": ("sun": #FF4D4F,
|
||||||
"sat": #2d8cf6)
|
"sat": #597EF7)
|
||||||
);
|
);
|
||||||
|
|
||||||
$config: (
|
$config: (
|
||||||
@ -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),
|
||||||
@ -96,16 +96,19 @@ $config: (
|
|||||||
v-input-disabled-backgroundColor:rgba(255, 255, 255, 0.08),
|
v-input-disabled-backgroundColor:rgba(255, 255, 255, 0.08),
|
||||||
v-input-disabled-color: rgba(255, 255, 255, 0.5),
|
v-input-disabled-color: rgba(255, 255, 255, 0.5),
|
||||||
v-select-label-color: rgba(255, 255, 255, 0.85),
|
v-select-label-color: rgba(255, 255, 255, 0.85),
|
||||||
v-calendar-weekday-backgroundColor: #383f5d,
|
v-calendar-weekday-backgroundColor: #FFFFFF0A,
|
||||||
v-calendar-weekday-color: #fff,
|
v-calendar-weekday-color: #FFFFFFD9,
|
||||||
v-calendar-weekday-border-color: rgba(255, 255, 255, 0.1),
|
v-calendar-weekday-border-color: #FFFFFF0F,
|
||||||
v-calendar-day-color: #fff,
|
v-calendar-day-color: #FFFFFFD9,
|
||||||
v-calendar-day-in-not-month-color: rgba(255, 255, 255, 0.05),
|
v-calendar-day-in-not-month-color: #FFFFFF14,
|
||||||
v-calendar-is-today-background-color: #2d4571,
|
v-calendar-is-today-background-color: #0A224F,
|
||||||
|
v-calendar-is-sat: #263EA0,
|
||||||
|
v-calendar-is-sun:#A61D24,
|
||||||
|
tui-grid-title-color: #FFFFFFD9,
|
||||||
tui-grid-header-backgroundColor: #2a2b2d,
|
tui-grid-header-backgroundColor: #2a2b2d,
|
||||||
tui-grid-header-color: #FFFFFFD9,
|
tui-grid-header-color: #FFFFFFD9,
|
||||||
tui-grid-border-horziontal-color: #212224,
|
tui-grid-border-horziontal-color: #212224,
|
||||||
tui-grid-border-vertical-color: #212224,
|
tui-grid-border-vertical-color: #FFFFFF0F,
|
||||||
tui-grid-cell-backgroundColor: #212224,
|
tui-grid-cell-backgroundColor: #212224,
|
||||||
tui-grid-cell-color: #fff,
|
tui-grid-cell-color: #fff,
|
||||||
tui-grid-cell-insert-color: #13636c,
|
tui-grid-cell-insert-color: #13636c,
|
||||||
@ -120,7 +123,7 @@ $config: (
|
|||||||
v-tabs-active-border-color: rgba(255, 255, 255, 0.7),
|
v-tabs-active-border-color: rgba(255, 255, 255, 0.7),
|
||||||
v-dialog-card-text-color: #fff,
|
v-dialog-card-text-color: #fff,
|
||||||
tui-datepicker-backgroundColor: #0d0f17,
|
tui-datepicker-backgroundColor: #0d0f17,
|
||||||
tui-datepicker-border-color: rgb(66, 66, 66),
|
tui-datepicker-border-color: rgba(255, 255, 255, 0.3),
|
||||||
tui-datepicker-selectable-hover-color: #2d3355,
|
tui-datepicker-selectable-hover-color: #2d3355,
|
||||||
tui-datepicker-selected-color: #1a4e87,
|
tui-datepicker-selected-color: #1a4e87,
|
||||||
tui-datepicker-calendar-color: #fff,
|
tui-datepicker-calendar-color: #fff,
|
||||||
@ -152,6 +155,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 +170,10 @@ $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,
|
||||||
|
subtitle-tab: #FFFFFFA6,
|
||||||
),
|
),
|
||||||
light: (w-g5: $--color-gray_555,
|
light: (w-g5: $--color-gray_555,
|
||||||
g5-w: $--color-white,
|
g5-w: $--color-white,
|
||||||
@ -204,11 +212,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,
|
||||||
@ -228,12 +236,15 @@ $config: (
|
|||||||
v-input-disabled-backgroundColor: rgba(0, 0, 0, 0.04),
|
v-input-disabled-backgroundColor: rgba(0, 0, 0, 0.04),
|
||||||
v-input-disabled-color: rgba(0, 0, 0, 0.25),
|
v-input-disabled-color: rgba(0, 0, 0, 0.25),
|
||||||
v-select-label-color: rgba(0, 0, 0, 0.88),
|
v-select-label-color: rgba(0, 0, 0, 0.88),
|
||||||
v-calendar-weekday-backgroundColor: #e0e0e0,
|
v-calendar-weekday-backgroundColor: #00000005,
|
||||||
v-calendar-weekday-color: #111,
|
v-calendar-weekday-color: #000000E0,
|
||||||
v-calendar-weekday-border-color: #d4d4d4,
|
v-calendar-weekday-border-color: #0000000F,
|
||||||
v-calendar-day-color: #111,
|
v-calendar-day-color: #000000E0,
|
||||||
v-calendar-day-in-not-month-color: #f8f8f8,
|
v-calendar-day-in-not-month-color: #0000000A,
|
||||||
v-calendar-is-today-background-color: #e3eaf3,
|
v-calendar-is-today-background-color: #E6F4FF,
|
||||||
|
v-calendar-is-sat: #597EF7,
|
||||||
|
v-calendar-is-sun:#FF4D4F,
|
||||||
|
tui-grid-title-color: #000000E0,
|
||||||
tui-grid-header-backgroundColor: #fafafa, //#e0e0e0,
|
tui-grid-header-backgroundColor: #fafafa, //#e0e0e0,
|
||||||
tui-grid-header-color: rgba(0, 0, 0, 0.88),
|
tui-grid-header-color: rgba(0, 0, 0, 0.88),
|
||||||
tui-grid-border-horziontal-color: #e0e0e0,
|
tui-grid-border-horziontal-color: #e0e0e0,
|
||||||
@ -252,7 +263,7 @@ $config: (
|
|||||||
v-tabs-hover-color: #1677FF,
|
v-tabs-hover-color: #1677FF,
|
||||||
v-dialog-card-text-color: #111,
|
v-dialog-card-text-color: #111,
|
||||||
tui-datepicker-backgroundColor: #fff,
|
tui-datepicker-backgroundColor: #fff,
|
||||||
tui-datepicker-border-color: #D9D9D9,
|
tui-datepicker-border-color: #b4b8c9,
|
||||||
tui-datepicker-selectable-hover-color: #e1e7f3,
|
tui-datepicker-selectable-hover-color: #e1e7f3,
|
||||||
tui-datepicker-selected-color: #4777d9,
|
tui-datepicker-selected-color: #4777d9,
|
||||||
tui-datepicker-calendar-color: #111,
|
tui-datepicker-calendar-color: #111,
|
||||||
@ -282,6 +293,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 +308,9 @@ $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,
|
||||||
|
subtitle-tab: #000000A6,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@ -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">-->
|
||||||
|
|||||||
@ -3,45 +3,28 @@
|
|||||||
<div class="custom-vc-calender-title text-center" v-if="headerVisible">
|
<div class="custom-vc-calender-title text-center" v-if="headerVisible">
|
||||||
<span>{{ selectedYear }}년 {{ selectedMonth }}월</span>
|
<span>{{ selectedYear }}년 {{ selectedMonth }}월</span>
|
||||||
</div>
|
</div>
|
||||||
<vc-calendar
|
<vc-calendar locale="ko-KR" ref="myCalendar" :attributes="calendarAttributes" class="custom-calendar">
|
||||||
ref="myCalendar"
|
|
||||||
:attributes="calendarAttributes"
|
|
||||||
class="custom-calendar"
|
|
||||||
>
|
|
||||||
<!-- disable-page-swipe
|
<!-- disable-page-swipe
|
||||||
is-expanded -->
|
is-expanded -->
|
||||||
<template v-slot:day-content="{ day, attributes }">
|
<template v-slot:day-content="{ day, attributes }">
|
||||||
<div class="plusButton" style="overflow:auto">
|
<div class="plusButton" style="overflow:auto">
|
||||||
<!-- <p class="plusButton mr-1" >+</p> -->
|
<!-- <p class="plusButton mr-1" >+</p> -->
|
||||||
<span
|
<span :class="['day-label', { 'is-holiday': hldyValues(day.day) }]"
|
||||||
:class="['day-label', { 'is-holiday': hldyValues(day.day) }]"
|
@click="addPlan(day.year, day.month, day.day)">{{ day.day }}</span>
|
||||||
@click="addPlan(day.year, day.month, day.day)"
|
|
||||||
>{{ day.day }}</span
|
|
||||||
>
|
|
||||||
<span v-for="attr in attributes" :key="attr.key" class="day-hldyNm">
|
<span v-for="attr in attributes" :key="attr.key" class="day-hldyNm">
|
||||||
{{ attr.customData.title }}
|
{{ attr.customData.title }}
|
||||||
</span>
|
</span>
|
||||||
<div class="">
|
<div class="">
|
||||||
<p
|
<p v-for="attr in attributes" :key="attr.key" :class="attr.customData.planColor"
|
||||||
v-for="attr in attributes"
|
@click="updatePlan(attr.customData.planSeq)">
|
||||||
:key="attr.key"
|
|
||||||
:class="attr.customData.planColor"
|
|
||||||
@click="updatePlan(attr.customData.planSeq)"
|
|
||||||
>
|
|
||||||
{{ attr.customData.planTitle }}
|
{{ attr.customData.planTitle }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</vc-calendar>
|
</vc-calendar>
|
||||||
<component
|
<component ref="planPop" :is="'PlanPop'" v-show="false" :detailList="detailList" :label="planLabel"
|
||||||
ref="planPop"
|
:parentPrgmId="parentPrgmId" />
|
||||||
:is="'PlanPop'"
|
|
||||||
v-show="false"
|
|
||||||
:detailList="detailList"
|
|
||||||
:label="planLabel"
|
|
||||||
:parentPrgmId="parentPrgmId"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
@ -63,6 +46,10 @@ export default {
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true,
|
default: true,
|
||||||
},
|
},
|
||||||
|
showTitle: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState({
|
...mapState({
|
||||||
@ -122,7 +109,7 @@ export default {
|
|||||||
planColor:
|
planColor:
|
||||||
// item.endDt < Utility.setFormatDate(new Date(), 'YYYY-MM-DD')
|
// item.endDt < Utility.setFormatDate(new Date(), 'YYYY-MM-DD')
|
||||||
// ? 'grey':
|
// ? 'grey':
|
||||||
item.planColor,
|
item.planColor,
|
||||||
},
|
},
|
||||||
dates: new Date(yy, mm, dd),
|
dates: new Date(yy, mm, dd),
|
||||||
});
|
});
|
||||||
@ -166,10 +153,11 @@ export default {
|
|||||||
this.$refs['planPop'].strtDt = '';
|
this.$refs['planPop'].strtDt = '';
|
||||||
this.$refs['planPop'].endDt = '';
|
this.$refs['planPop'].endDt = '';
|
||||||
this.$refs['planPop'].addPlanData = {
|
this.$refs['planPop'].addPlanData = {
|
||||||
year : year,
|
year: year,
|
||||||
month : month,
|
month: month,
|
||||||
day : day
|
day: day
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$refs['planPop'].blocId = this.pageData.blocMstrList[
|
this.$refs['planPop'].blocId = this.pageData.blocMstrList[
|
||||||
this.pageData.blocId
|
this.pageData.blocId
|
||||||
].blocId;
|
].blocId;
|
||||||
@ -186,7 +174,7 @@ export default {
|
|||||||
this.$refs['planPop'].dialog = true;
|
this.$refs['planPop'].dialog = true;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted() {},
|
mounted() { },
|
||||||
};
|
};
|
||||||
const myDetail = [];
|
const myDetail = [];
|
||||||
</script>
|
</script>
|
||||||
@ -194,36 +182,44 @@ const myDetail = [];
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@import '@/assets/scss/var.scss';
|
@import '@/assets/scss/var.scss';
|
||||||
@import '@/assets/scss/mixin.scss';
|
@import '@/assets/scss/mixin.scss';
|
||||||
|
|
||||||
::-webkit-scrollbar {
|
::-webkit-scrollbar {
|
||||||
width: 0px;
|
width: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar-track {
|
::-webkit-scrollbar-track {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-vc-calender {
|
.custom-vc-calender {
|
||||||
&-title {
|
&-title {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep {
|
::v-deep {
|
||||||
.custom-calendar.vc-container {
|
.custom-calendar.vc-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border: 0;
|
border: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.vc-header,
|
.vc-header,
|
||||||
.vc-arrows-container {
|
.vc-arrows-container {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.vc-weeks {
|
.vc-weeks {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
> div {
|
|
||||||
|
>div {
|
||||||
flex: 1 0 calc(100% / 7);
|
flex: 1 0 calc(100% / 7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.vc-weekday {
|
.vc-weekday {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -231,6 +227,7 @@ const myDetail = [];
|
|||||||
height: 36px;
|
height: 36px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.vc-day {
|
.vc-day {
|
||||||
height: 10.889vh;
|
height: 10.889vh;
|
||||||
min-height: auto;
|
min-height: auto;
|
||||||
@ -239,6 +236,7 @@ const myDetail = [];
|
|||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
line-height: 1.235;
|
line-height: 1.235;
|
||||||
}
|
}
|
||||||
|
|
||||||
.day-hldyNm {
|
.day-hldyNm {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
@ -249,25 +247,27 @@ const myDetail = [];
|
|||||||
font-size: 10pt;
|
font-size: 10pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
> div {
|
>div {
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
border-radius: 0 !important;
|
border-radius: 0 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.vc-day.is-not-in-month {
|
.vc-day.is-not-in-month {
|
||||||
* {
|
* {
|
||||||
opacity: 1 !important;
|
opacity: 1 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.plusButton:hover > span:first-child {
|
|
||||||
|
.plusButton:hover>span:first-child {
|
||||||
font-weight: bolder;
|
font-weight: bolder;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.red {
|
.red {
|
||||||
//background-color: rgba(229,62,62,var(--bg-opacity));
|
background-color: #FF4D4F !important;
|
||||||
background-color: #e53e3e !important;
|
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-radius: 0.125rem;
|
border-radius: 0.125rem;
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
@ -275,9 +275,9 @@ const myDetail = [];
|
|||||||
text-align: left;
|
text-align: left;
|
||||||
margin-bottom: 0.25rem;
|
margin-bottom: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blue {
|
.blue {
|
||||||
//background-color: rgba(66,153,225,var(--bg-opacity));
|
background-color: #597EF7 !important;
|
||||||
background-color: #4299e1 !important;
|
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-radius: 0.125rem;
|
border-radius: 0.125rem;
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
@ -285,9 +285,9 @@ const myDetail = [];
|
|||||||
text-align: left;
|
text-align: left;
|
||||||
margin-bottom: 0.25rem;
|
margin-bottom: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.puple {
|
.puple {
|
||||||
//background-color: rgba(102,126,234,var(--bg-opacity));
|
background-color: #9254DE !important;
|
||||||
background-color: #667eea !important;
|
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-radius: 0.125rem;
|
border-radius: 0.125rem;
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
@ -295,9 +295,9 @@ const myDetail = [];
|
|||||||
text-align: left;
|
text-align: left;
|
||||||
margin-bottom: 0.25rem;
|
margin-bottom: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.green {
|
.green {
|
||||||
//background-color: rgba(56,178,172,var(--bg-opacity));
|
background-color: #73D13D !important;
|
||||||
background-color: #38b2ac !important;
|
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-radius: 0.125rem;
|
border-radius: 0.125rem;
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
@ -306,9 +306,9 @@ const myDetail = [];
|
|||||||
margin-bottom: 0.25rem;
|
margin-bottom: 0.25rem;
|
||||||
width: 90%;
|
width: 90%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.orange {
|
.orange {
|
||||||
//background-color: rgba(237,137,54,var(--bg-opacity));
|
background-color: #FFA940 !important;
|
||||||
background-color: #ed8936 !important;
|
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-radius: 0.125rem;
|
border-radius: 0.125rem;
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
@ -316,9 +316,9 @@ const myDetail = [];
|
|||||||
text-align: left;
|
text-align: left;
|
||||||
margin-bottom: 0.25rem;
|
margin-bottom: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pink {
|
.pink {
|
||||||
//background-color: rgba(237,100,166,var(--bg-opacity));
|
background-color: #F759AB !important;
|
||||||
background-color: #ed64a6 !important;
|
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-radius: 0.125rem;
|
border-radius: 0.125rem;
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
@ -326,8 +326,8 @@ const myDetail = [];
|
|||||||
text-align: left;
|
text-align: left;
|
||||||
margin-bottom: 0.25rem;
|
margin-bottom: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.grey {
|
.grey {
|
||||||
background-color: #6d6d6d;
|
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-radius: 0.125rem;
|
border-radius: 0.125rem;
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
|
|||||||
@ -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"
|
||||||
@change="modifyValue"
|
:false-value="false"
|
||||||
>
|
:color="isDarkMode ? '#fff' : '#1890ff'"
|
||||||
</a-checkbox>
|
@change="modifyValue"
|
||||||
|
></v-checkbox>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
</label>
|
</label>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="label ? textCols : ''">
|
<v-col :cols="label ? textCols : ''">
|
||||||
<div class="datepicker-container" >
|
<div :class="['datepicker-container', customClass]" >
|
||||||
<v-text-field
|
<v-text-field
|
||||||
id="startpicker"
|
id="startpicker"
|
||||||
ref="startpicker"
|
ref="startpicker"
|
||||||
@ -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>
|
||||||
@ -96,7 +93,12 @@ export default {
|
|||||||
type:Boolean,
|
type:Boolean,
|
||||||
require:false,
|
require:false,
|
||||||
default: true
|
default: true
|
||||||
}
|
},
|
||||||
|
customClass: {
|
||||||
|
type: String,
|
||||||
|
require: false,
|
||||||
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -4,12 +4,13 @@
|
|||||||
:data="chkGridData"
|
:data="chkGridData"
|
||||||
:columns="chkGridColumns"
|
:columns="chkGridColumns"
|
||||||
:options="chkGridOptions"
|
:options="chkGridOptions"
|
||||||
@focusChange="focusChangeEvt"
|
|
||||||
@click="startEditing"
|
@click="startEditing"
|
||||||
@editingFinish="editingFinish"
|
@editingFinish="editingFinish"
|
||||||
@dblclick="dblClick"
|
@dblclick="dblClick"
|
||||||
@mouseover="mouseoverEvent"
|
@mouseover="mouseoverEvent"
|
||||||
@mouseout="mouseoutEvent"
|
@mouseout="mouseoutEvent"
|
||||||
|
@mousedown="onMousedown"
|
||||||
|
@focusChange="focusChangeEvt"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
@ -107,16 +108,13 @@ export default {
|
|||||||
},
|
},
|
||||||
chkGridOptions() {
|
chkGridOptions() {
|
||||||
const options = {
|
const options = {
|
||||||
// bodyHeight: 'fitToContent',
|
|
||||||
scrollX: false,
|
|
||||||
scrollY: false,
|
|
||||||
...this.gridData.option,
|
...this.gridData.option,
|
||||||
useIcon: false,
|
|
||||||
};
|
};
|
||||||
options.treeColumnOptions = {
|
options.treeColumnOptions = {
|
||||||
useIcon: false,
|
useIcon: false,
|
||||||
...options.treeColumnOptions,
|
...options.treeColumnOptions,
|
||||||
};
|
};
|
||||||
|
|
||||||
return options;
|
return options;
|
||||||
},
|
},
|
||||||
defaultRow() {
|
defaultRow() {
|
||||||
@ -163,7 +161,7 @@ export default {
|
|||||||
},
|
},
|
||||||
created() {},
|
created() {},
|
||||||
async mounted() {
|
async mounted() {
|
||||||
console.log('--------------DEBUG----gridData: ', this.gridData);
|
// console.log(this.dataPath);
|
||||||
if (this.gridName) {
|
if (this.gridName) {
|
||||||
this.gridInstance = this.$refs['tuigrid' + this.gridName];
|
this.gridInstance = this.$refs['tuigrid' + this.gridName];
|
||||||
|
|
||||||
@ -186,13 +184,13 @@ export default {
|
|||||||
}),
|
}),
|
||||||
// true : 현재 행 혹은 연결된 그리드가 수정중인 상태
|
// true : 현재 행 혹은 연결된 그리드가 수정중인 상태
|
||||||
checkGridState() {
|
checkGridState() {
|
||||||
var rowStatList = ['I', 'U', 'D'];
|
const rowStatList = ['I', 'U', 'D'];
|
||||||
var row = this.gridInstance.invoke('getFocusedCell');
|
const row = this.gridInstance.invoke('getFocusedCell');
|
||||||
|
|
||||||
if (row) {
|
if (row) {
|
||||||
var rowData = this.gridInstance.invoke('getRow', row.rowKey);
|
const rowData = this.gridInstance.invoke('getRow', row.rowKey);
|
||||||
if (rowData) {
|
if (rowData) {
|
||||||
var rowStat = rowData['rowStat'];
|
const rowStat = rowData['rowStat'];
|
||||||
if (rowStatList.includes(rowStat)) {
|
if (rowStatList.includes(rowStat)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -200,8 +198,8 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.preventFocusChangeEventTargetGridList) {
|
if (this.preventFocusChangeEventTargetGridList) {
|
||||||
for (var gridInstance of this.preventFocusChangeEventTargetGridList) {
|
for (let gridInstance of this.preventFocusChangeEventTargetGridList) {
|
||||||
var dataArr = gridInstance.save();
|
const dataArr = gridInstance.save();
|
||||||
|
|
||||||
if (dataArr.length > 0) {
|
if (dataArr.length > 0) {
|
||||||
return true;
|
return true;
|
||||||
@ -270,7 +268,15 @@ export default {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
onMousedown(evt) {
|
||||||
|
this.handleSelectedRow(evt);
|
||||||
|
},
|
||||||
focusChangeEvt(e) {
|
focusChangeEvt(e) {
|
||||||
|
if(e.rowKey === 0) {
|
||||||
|
this.handleSelectedRow(e);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleSelectedRow(e) {
|
||||||
// console.log('focusChangeEvt1...')
|
// console.log('focusChangeEvt1...')
|
||||||
if (this.preventFocusChangeEvent(e)) {
|
if (this.preventFocusChangeEvent(e)) {
|
||||||
// console.log('prevent focusChangeEvt')
|
// console.log('prevent focusChangeEvt')
|
||||||
@ -278,7 +284,7 @@ export default {
|
|||||||
}
|
}
|
||||||
// console.log('focusChangeEvt2...')
|
// console.log('focusChangeEvt2...')
|
||||||
// cell 선택시 row 선택 method
|
// cell 선택시 row 선택 method
|
||||||
if (e.rowKey >= 0) {
|
if (e.rowKey > -1) {
|
||||||
this.$emit(
|
this.$emit(
|
||||||
'getRowsData',
|
'getRowsData',
|
||||||
this.gridInstance.invoke('getRow', e.rowKey),
|
this.gridInstance.invoke('getRow', e.rowKey),
|
||||||
@ -703,11 +709,6 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
::v-deep .tui-grid-container {
|
::v-deep .tui-grid-container {
|
||||||
|
|
||||||
// .tui-grid-body-area {
|
|
||||||
// overflow: hidden !important;
|
|
||||||
// }
|
|
||||||
|
|
||||||
.tui-grid-content-area {
|
.tui-grid-content-area {
|
||||||
.tui-grid-cell-content {
|
.tui-grid-cell-content {
|
||||||
input[type='number'] {
|
input[type='number'] {
|
||||||
|
|||||||
@ -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>
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,9 @@
|
|||||||
<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 x-small color="primary" class="mr-1">mdi-record-circle</v-icon>
|
<v-icon small color="primary"
|
||||||
|
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||||
|
>$icoBulletPoint</v-icon>
|
||||||
{{ label }}
|
{{ label }}
|
||||||
</label>
|
</label>
|
||||||
</v-col>
|
</v-col>
|
||||||
@ -17,14 +19,16 @@
|
|||||||
readonly
|
readonly
|
||||||
outlined
|
outlined
|
||||||
>
|
>
|
||||||
<template #append>
|
<template #append >
|
||||||
<v-icon size="20">$icoCalendar</v-icon>
|
<v-icon size="20" v-show="!isRange">$icoCalendar</v-icon>
|
||||||
</template>
|
</template>
|
||||||
<template #append-outer>
|
<template #append-outer>
|
||||||
<div ref="startpicker-container" id="startpicker-container"></div>
|
<div ref="startpicker-container" id="startpicker-container"></div>
|
||||||
</template>
|
</template>
|
||||||
</v-text-field>
|
</v-text-field>
|
||||||
<div v-show="isRange" class="mx-3" :style="{ lineHeight: 0 }">~</div>
|
<div v-if="isRange" class="mx-3" :style="{ lineHeight: 0 }">
|
||||||
|
<img :src="arrowIcon" alt="">
|
||||||
|
</div>
|
||||||
<v-text-field
|
<v-text-field
|
||||||
v-show="isRange"
|
v-show="isRange"
|
||||||
id="endpicker"
|
id="endpicker"
|
||||||
@ -129,6 +133,12 @@ export default {
|
|||||||
this.defaultRange === 'no limite'
|
this.defaultRange === 'no limite'
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
arrowIcon() {
|
||||||
|
if(this.isDarkMode){
|
||||||
|
return require('@/assets/images/arrow_datepicker_dm.png');
|
||||||
|
}
|
||||||
|
return require('@/assets/images/arrow_datepicker.png');
|
||||||
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
myCmCycle() {
|
myCmCycle() {
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -45,7 +45,7 @@ export default {
|
|||||||
size: {
|
size: {
|
||||||
type: String,
|
type: String,
|
||||||
require: false,
|
require: false,
|
||||||
default: "middle", // small, middle, large
|
default: "default", // small, middle, large
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
// Gauge chart options
|
// Gauge chart options
|
||||||
export default function getGaugeChartOption({ title, value, min = 0, max = 160, unit = '%', isDarkMode = false, backgroundRadius = 97 }) {
|
export default function getGaugeChartOption({ title, min = 0, max = 160, unit = '%', isDarkMode = false, backgroundRadius = 97 }) {
|
||||||
const colorRanges = isDarkMode
|
const colorRanges = isDarkMode
|
||||||
? [
|
? [
|
||||||
[0.375, '#49AA19'], // Dark Green
|
[0.375, '#49AA19'], // Dark Green
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
export default function getLineChartOption({
|
export default function getLineChartOption({
|
||||||
xAxisData = [],
|
xAxisData = [],
|
||||||
seriesData = [],
|
seriesData = [],
|
||||||
legendData = [],
|
// legendData = [],
|
||||||
isDarkMode = false,
|
isDarkMode = false,
|
||||||
}) {
|
}) {
|
||||||
|
|
||||||
@ -15,7 +15,8 @@ export default function getLineChartOption({
|
|||||||
const styledSeries = seriesData.map((item, index) => {
|
const styledSeries = seriesData.map((item, index) => {
|
||||||
const color = item.color || defaultColors[index % defaultColors.length];
|
const color = item.color || defaultColors[index % defaultColors.length];
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
|
showSymbol: true, // Show symbol at each data point
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color,
|
color,
|
||||||
},
|
},
|
||||||
@ -27,17 +28,17 @@ export default function getLineChartOption({
|
|||||||
left: '3%',
|
left: '3%',
|
||||||
right: '5%',
|
right: '5%',
|
||||||
top: '25%',
|
top: '25%',
|
||||||
|
bottom: '0%',
|
||||||
containLabel: true,
|
containLabel: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
legend: {
|
legend: {
|
||||||
data: legendData,
|
// data: legendData,
|
||||||
icon: 'circle',
|
icon: 'circle',
|
||||||
top: '0%',
|
top: '0%',
|
||||||
right: '5%',
|
right: '5%',
|
||||||
orient: 'horizontal',
|
orient: 'horizontal',
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: isDarkMode ? '#676A7B' : '#676A7B',
|
color: isDarkMode ? 'white' : '#676A7B',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
|
|||||||
@ -125,7 +125,7 @@ export default {
|
|||||||
modifyValue(e) {
|
modifyValue(e) {
|
||||||
let val = e.target.value.replace(/[^-.0-9]/g, '');
|
let val = e.target.value.replace(/[^-.0-9]/g, '');
|
||||||
|
|
||||||
console.log('val : ', val);
|
// console.log('val : ', val);
|
||||||
|
|
||||||
if(this.item.min != undefined && parseFloat(val) < this.item.min){
|
if(this.item.min != undefined && parseFloat(val) < this.item.min){
|
||||||
val = this.item.min;
|
val = this.item.min;
|
||||||
@ -134,7 +134,7 @@ export default {
|
|||||||
if(this.item.max != undefined && parseFloat(val) > this.item.max){
|
if(this.item.max != undefined && parseFloat(val) > this.item.max){
|
||||||
val = this.item.max;
|
val = this.item.max;
|
||||||
}
|
}
|
||||||
console.log('val2 : ', val);
|
// console.log('val2 : ', val);
|
||||||
|
|
||||||
this.textValue = val;
|
this.textValue = val;
|
||||||
// this.textValue = this.validateNumber(val);
|
// this.textValue = this.validateNumber(val);
|
||||||
|
|||||||
@ -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;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -152,12 +152,12 @@ export default {
|
|||||||
const snarData = this.searchParam.isMulti
|
const snarData = this.searchParam.isMulti
|
||||||
? this.searchParam.snarInfoList
|
? this.searchParam.snarInfoList
|
||||||
: this.searchParam.snarInfo;
|
: this.searchParam.snarInfo;
|
||||||
console.log('this.searchParam.isMulti', this.searchParam.isMulti);
|
// console.log('this.searchParam.isMulti', this.searchParam.isMulti);
|
||||||
console.log(
|
// console.log(
|
||||||
'this.searchParam.snarInfoList',
|
// 'this.searchParam.snarInfoList',
|
||||||
this.searchParam.snarInfoList,
|
// this.searchParam.snarInfoList,
|
||||||
);
|
// );
|
||||||
console.log('this.searchParam.snarInfo', this.searchParam.snarInfo);
|
// console.log('this.searchParam.snarInfo', this.searchParam.snarInfo);
|
||||||
if (Array.isArray(snarData)) {
|
if (Array.isArray(snarData)) {
|
||||||
if (snarData.length > 0) {
|
if (snarData.length > 0) {
|
||||||
for (const item of snarData) {
|
for (const item of snarData) {
|
||||||
|
|||||||
@ -394,7 +394,7 @@ export default {
|
|||||||
params: {},
|
params: {},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
console.log('statusCd', statusCd);
|
// console.log('statusCd', statusCd);
|
||||||
if (statusCd.data.retnCd == 0) {
|
if (statusCd.data.retnCd == 0) {
|
||||||
const params2 = {
|
const params2 = {
|
||||||
simulationId: statusCd.data.dataset.simulId,
|
simulationId: statusCd.data.dataset.simulId,
|
||||||
|
|||||||
@ -22,6 +22,7 @@
|
|||||||
<span class="custom-title-4">{{ option.modalTitle }}</span>
|
<span class="custom-title-4">{{ option.modalTitle }}</span>
|
||||||
<a-button icon="close" type="text" @click="dialogOpenCloseEvent(dialog)"></a-button>
|
<a-button icon="close" type="text" @click="dialogOpenCloseEvent(dialog)"></a-button>
|
||||||
</v-card-title>
|
</v-card-title>
|
||||||
|
|
||||||
<div class="px-6 py-4 pt-0">
|
<div class="px-6 py-4 pt-0">
|
||||||
<v-row align="center">
|
<v-row align="center">
|
||||||
<v-col :cols="5">
|
<v-col :cols="5">
|
||||||
@ -46,11 +47,10 @@
|
|||||||
v-model="searchWord" @keyup.enter="search"><template v-slot:append>
|
v-model="searchWord" @keyup.enter="search"><template v-slot:append>
|
||||||
<!-- Custom SVG icon -->
|
<!-- Custom SVG icon -->
|
||||||
<v-icon>$icoSearch</v-icon>
|
<v-icon>$icoSearch</v-icon>
|
||||||
|
|
||||||
</template></v-text-field>
|
</template></v-text-field>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
<v-col cols="3" class="text-right">
|
<v-col :cols="3" class="text-right">
|
||||||
<a-button icon="search" type="primary" @click="search()"
|
<a-button icon="search" type="primary" @click="search()"
|
||||||
class="search-button">조회</a-button>
|
class="search-button">조회</a-button>
|
||||||
<!-- <v-btn :ripple="false" @click="initSearch()">
|
<!-- <v-btn :ripple="false" @click="initSearch()">
|
||||||
@ -59,26 +59,32 @@
|
|||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-col>
|
</v-col>
|
||||||
|
<v-col :cols="12">
|
||||||
|
<div style="height: 50vh;">
|
||||||
|
<div ref="modalGridParent" class="h100 py-4">
|
||||||
|
<component :is="loadGrid && dialog ? 'Grid' : null" :gridName="grid_01"
|
||||||
|
:dataPath="searchParam.pyscModalData.egrpPysclQtyPop" :parentPrgmId="parentPrgmId"
|
||||||
|
@getRowsData="getRowData" @dblClick="setUpdate($event)" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div :style="'height: calc(50vh)'">
|
<!-- <div style="height: 50vh;">
|
||||||
<div ref="modalGridParent" class="h100 px-6 py-4">
|
<div ref="modalGridParent" class="h100 px-6 py-4">
|
||||||
<component :is="loadGrid && dialog ? 'Grid' : null" :gridName="grid_01"
|
<component :is="loadGrid && dialog ? 'Grid' : null" :gridName="grid_01"
|
||||||
:dataPath="searchParam.pyscModalData.egrpPysclQtyPop" :parentPrgmId="parentPrgmId"
|
:dataPath="searchParam.pyscModalData.egrpPysclQtyPop" :parentPrgmId="parentPrgmId"
|
||||||
@getRowsData="getRowData" @dblClick="setUpdate($event)" />
|
@getRowsData="getRowData" @dblClick="setUpdate($event)" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
|
|
||||||
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
|
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
|
||||||
<!-- <v-btn :ripple="false" @click="setUpdate($event)">확인</v-btn>
|
|
||||||
<v-btn :ripple="false" @click="dialogOpenCloseEvent(dialog)">닫기</v-btn> -->
|
<a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)" class="mr-2">닫기</a-button>
|
||||||
<!-- <v-btn v-if="item.closeBtnFg || false" :ripple="false" @click="deleteBtnAction($event)">삭제</v-btn> -->
|
<a-button v-if="item.closeBtnFg || false" :ripple="false" type="danger" ghost danger
|
||||||
<a-button :ripple="false" @click="setUpdate($event)" class="mr-2">확인</a-button>
|
@click="deleteBtnAction($event)" class="mr-2">삭제</a-button>
|
||||||
<a-button :ripple="false" type="primary" @click="dialogOpenCloseEvent(dialog)"
|
<a-button :ripple="false" type="primary" @click="setUpdate($event)">확인</a-button>
|
||||||
class="mr-2">닫기</a-button>
|
|
||||||
<a-button v-if="item.closeBtnFg || false" :ripple="false" icon="delete" type="danger" ghost danger
|
|
||||||
@click="deleteBtnAction($event)">삭제</a-button>
|
|
||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-dialog>
|
</v-dialog>
|
||||||
@ -150,23 +156,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
dialog: false,
|
dialog: false,
|
||||||
|
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
dataPathPopExample: {
|
|
||||||
"rowGrid": {
|
|
||||||
data: [
|
|
||||||
{
|
|
||||||
'calcProc': 'AVG_CNT2',
|
|
||||||
'argCnt': '2',
|
|
||||||
'calcDesc': '두개 변수에 대한 평균'
|
|
||||||
|
|
||||||
}
|
|
||||||
],
|
|
||||||
column: [
|
|
||||||
{ header: '계산코드', name: 'calcProc', width: 150 },
|
|
||||||
{ header: '아규먼트갯수', name: 'argCnt', align: 'center', width: 100 },
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
grid_01: 'grid_01',
|
grid_01: 'grid_01',
|
||||||
myModalKey: 'egrpPysclQtyPop',
|
myModalKey: 'egrpPysclQtyPop',
|
||||||
modalDataKey: 'pyscModalData',
|
modalDataKey: 'pyscModalData',
|
||||||
@ -298,46 +288,39 @@ export default {
|
|||||||
},
|
},
|
||||||
async setSelectValueList01() {
|
async setSelectValueList01() {
|
||||||
// form으로 popup 사용할 때 인자로 eqpmKindId, eqpmGrpId 보내줘야한다.
|
// form으로 popup 사용할 때 인자로 eqpmKindId, eqpmGrpId 보내줘야한다.
|
||||||
// let res = await this.postApiReturn({
|
let res = await this.postApiReturn({
|
||||||
// apiKey: 'selectEqpmGrpCodeList',
|
apiKey: 'selectEqpmGrpCodeList',
|
||||||
// resKey: 'eqpmGrpCodeLists',
|
resKey: 'eqpmGrpCodeLists',
|
||||||
// sendParam: {
|
sendParam: {
|
||||||
// eqpmKindId:
|
eqpmKindId:
|
||||||
// this.item.eqpmKindId != undefined
|
this.item.eqpmKindId != undefined
|
||||||
// ? this.item.eqpmKindId
|
? this.item.eqpmKindId
|
||||||
// : this.searchParam.eqpmKindId,
|
: this.searchParam.eqpmKindId,
|
||||||
// },
|
},
|
||||||
// // form을 통해 popup을 사용할 경우 -> this.item.eqpmKindId 사용
|
// form을 통해 popup을 사용할 경우 -> this.item.eqpmKindId 사용
|
||||||
// // 부모 페이지에서 설비종류인 eqpmKindId 값을 꼭 가져와야한다.
|
// 부모 페이지에서 설비종류인 eqpmKindId 값을 꼭 가져와야한다.
|
||||||
// });
|
});
|
||||||
// if (res.length > 0) {
|
if (res.length > 0) {
|
||||||
// this.selectValueList01 = await res.map(obj => {
|
this.selectValueList01 = await res.map(obj => {
|
||||||
// return {
|
return {
|
||||||
// text: obj.eqpmGrpNm,
|
text: obj.eqpmGrpNm,
|
||||||
// value: obj.eqpmGrpId,
|
value: obj.eqpmGrpId,
|
||||||
// };
|
};
|
||||||
// });
|
});
|
||||||
// // form을 통해 popup을 사용할 경우 -> this.item.eqpmGrpId 사용
|
// form을 통해 popup을 사용할 경우 -> this.item.eqpmGrpId 사용
|
||||||
// // 부모 페이지에서 설비그룹을 선택한 값이 있다면(eqpmGrpId) 그 값으로 바인딩 아닐 경우 조회한 데이터의 첫번째 값으로 선택
|
// 부모 페이지에서 설비그룹을 선택한 값이 있다면(eqpmGrpId) 그 값으로 바인딩 아닐 경우 조회한 데이터의 첫번째 값으로 선택
|
||||||
// // console.log('this.item.eqpmGrpId : ', this.item.eqpmGrpId);
|
// console.log('this.item.eqpmGrpId : ', this.item.eqpmGrpId);
|
||||||
// // console.log('this.searchParam.eqpmGrpId : ', this.searchParam.eqpmGrpId);
|
// console.log('this.searchParam.eqpmGrpId : ', this.searchParam.eqpmGrpId);
|
||||||
// this.selectValue01 =
|
this.selectValue01 =
|
||||||
// this.item.eqpmGrpId != undefined
|
this.item.eqpmGrpId != undefined
|
||||||
// ? this.item.eqpmGrpId
|
? this.item.eqpmGrpId
|
||||||
// : this.searchParam.eqpmGrpId != undefined
|
: this.searchParam.eqpmGrpId != undefined
|
||||||
// ? this.searchParam.eqpmGrpId
|
? this.searchParam.eqpmGrpId
|
||||||
// : this.selectValueList01[0].value;
|
: this.selectValueList01[0].value;
|
||||||
// } else {
|
} else {
|
||||||
// this.selectValueList01 = [];
|
this.selectValueList01 = [];
|
||||||
// this.selectValue01 = null;
|
this.selectValue01 = null;
|
||||||
// }
|
}
|
||||||
|
|
||||||
this.selectValueList01 = [
|
|
||||||
{ label: '냉동기고온', value: '냉동기고온' },
|
|
||||||
{ label: '냉동기저온', value: '냉동기저온' },
|
|
||||||
{ label: '공조기', value: '공조기' },
|
|
||||||
{ label: '보일러', value: '보일러' }
|
|
||||||
];
|
|
||||||
},
|
},
|
||||||
search() {
|
search() {
|
||||||
this.getGridData();
|
this.getGridData();
|
||||||
@ -359,7 +342,7 @@ export default {
|
|||||||
modalDataKey: this.modalDataKey,
|
modalDataKey: this.modalDataKey,
|
||||||
value: Object.assign(
|
value: Object.assign(
|
||||||
// Utility.defaultGridOption(this.$refs.modalGridParent.offsetHeight - 60, myOptions),
|
// Utility.defaultGridOption(this.$refs.modalGridParent.offsetHeight - 60, myOptions),
|
||||||
// Utility.defaultGridOption(100, myOptions),
|
Utility.defaultGridOption(400, myOptions),
|
||||||
myOptions,
|
myOptions,
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
@ -388,44 +371,44 @@ export default {
|
|||||||
this.loadGrid = false;
|
this.loadGrid = false;
|
||||||
|
|
||||||
let res = [];
|
let res = [];
|
||||||
// res = await this.postApiReturn({
|
res = await this.postApiReturn({
|
||||||
// apiKey: 'selectEgrpPysclQtyPop',
|
apiKey: 'selectEgrpPysclQtyPop',
|
||||||
// resKey: 'egrpPysclQtyData',
|
resKey: 'egrpPysclQtyData',
|
||||||
// sendParam: {
|
sendParam: {
|
||||||
// searchWord: this.searchWord,
|
searchWord: this.searchWord,
|
||||||
// eqpmGrpId: this.selectValue01,
|
eqpmGrpId: this.selectValue01,
|
||||||
// openMode: this.item.openMode,
|
openMode: this.item.openMode,
|
||||||
// },
|
},
|
||||||
// });
|
});
|
||||||
// let newRes = [];
|
let newRes = [];
|
||||||
// let tempTagList = this.pyscPopVal.split('/*wq2a/');
|
let tempTagList = this.pyscPopVal.split('/*wq2a/');
|
||||||
// let tagList = tempTagList.filter(item => item != '');
|
let tagList = tempTagList.filter(item => item != '');
|
||||||
// if (tagList.length > 0) {
|
if (tagList.length > 0) {
|
||||||
// newRes = res.filter(item => {
|
newRes = res.filter(item => {
|
||||||
// return !tagList.includes(item.pysclQtyId);
|
return !tagList.includes(item.pysclQtyId);
|
||||||
// });
|
});
|
||||||
// res = newRes;
|
res = newRes;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// //이미 선택된 값들 제거(배열)
|
|
||||||
// if (this.item.dataList) {
|
|
||||||
// if (this.item.dataList.length > 0) {
|
|
||||||
// newRes = res.filter(item => {
|
|
||||||
// return !this.item.dataList.includes(item.pysclQtyId);
|
|
||||||
// });
|
|
||||||
// res = newRes;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
res = [
|
|
||||||
{
|
|
||||||
'pysclQtyId': 'PYSCL00001',
|
|
||||||
'pysclQtyCd': 'AMP_1A',
|
|
||||||
'pysclQtyNm': '회로1 전류A',
|
|
||||||
'pysclQtyTpNm': 'TAG'
|
|
||||||
|
|
||||||
|
//이미 선택된 값들 제거(배열)
|
||||||
|
if (this.item.dataList) {
|
||||||
|
if (this.item.dataList.length > 0) {
|
||||||
|
newRes = res.filter(item => {
|
||||||
|
return !this.item.dataList.includes(item.pysclQtyId);
|
||||||
|
});
|
||||||
|
res = newRes;
|
||||||
}
|
}
|
||||||
]
|
}
|
||||||
|
|
||||||
|
// res = [
|
||||||
|
// {
|
||||||
|
// 'pysclQtyId' : 'PYSCL00001',
|
||||||
|
// 'pysclQtyCd' : 'AMP_1A',
|
||||||
|
// 'pysclQtyNm' : '회로1 전류A',
|
||||||
|
// 'pysclQtyTpNm' : 'TAG'
|
||||||
|
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
this.setModalGridData({
|
this.setModalGridData({
|
||||||
modalKey: this.myModalKey,
|
modalKey: this.myModalKey,
|
||||||
gridKey: this.grid_01,
|
gridKey: this.grid_01,
|
||||||
@ -480,10 +463,10 @@ export default {
|
|||||||
this.dialog = flag;
|
this.dialog = flag;
|
||||||
},
|
},
|
||||||
async dialogOpenCloseEvent(val) {
|
async dialogOpenCloseEvent(val) {
|
||||||
// await this.setSelectValueList01();
|
await this.setSelectValueList01();
|
||||||
// if (!this.myBindingData) {
|
if (!this.myBindingData) {
|
||||||
// return alert('그리드를 먼저 선택해주세요.');
|
return alert('그리드를 먼저 선택해주세요.');
|
||||||
// }
|
}
|
||||||
this.dialog = !val;
|
this.dialog = !val;
|
||||||
},
|
},
|
||||||
deleteBtnAction(v) {
|
deleteBtnAction(v) {
|
||||||
|
|||||||
@ -62,7 +62,7 @@
|
|||||||
<v-row align="center" no-gutters>
|
<v-row align="center" no-gutters>
|
||||||
<v-col :cols="12">
|
<v-col :cols="12">
|
||||||
<label for="" class="search-box-label">
|
<label for="" class="search-box-label">
|
||||||
<v-icon small :class="['mr-1','icon-blue']">$icoBulletPoint</v-icon>
|
<v-icon small :class="['mr-1', 'icon-blue']">$icoBulletPoint</v-icon>
|
||||||
설비
|
설비
|
||||||
</label>
|
</label>
|
||||||
</v-col>
|
</v-col>
|
||||||
@ -80,7 +80,7 @@
|
|||||||
<v-row align="center" no-gutters class="mt-4">
|
<v-row align="center" no-gutters class="mt-4">
|
||||||
<v-col :cols="12">
|
<v-col :cols="12">
|
||||||
<label for="" class="search-box-label">
|
<label for="" class="search-box-label">
|
||||||
<v-icon small :class="['mr-1','icon-blue']">$icoBulletPoint</v-icon>
|
<v-icon small :class="['mr-1', 'icon-blue']">$icoBulletPoint</v-icon>
|
||||||
가이드지표
|
가이드지표
|
||||||
</label>
|
</label>
|
||||||
</v-col>
|
</v-col>
|
||||||
@ -190,7 +190,7 @@ export default {
|
|||||||
modalDataKey: 'modalData',
|
modalDataKey: 'modalData',
|
||||||
myModalKey: 'eqpmDetlPop',
|
myModalKey: 'eqpmDetlPop',
|
||||||
gridName: 'eqpmDetlGrid',
|
gridName: 'eqpmDetlGrid',
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
setGrid: false,
|
setGrid: false,
|
||||||
popCheck: false,
|
popCheck: false,
|
||||||
dialog: false,
|
dialog: false,
|
||||||
@ -217,13 +217,7 @@ export default {
|
|||||||
}),
|
}),
|
||||||
InputValue: {
|
InputValue: {
|
||||||
get() {
|
get() {
|
||||||
// return this.myBindingData;
|
return this.myBindingData;
|
||||||
return [{
|
|
||||||
"eqpmId": "EQ001",
|
|
||||||
"eqpmNm": "Etcher A12",
|
|
||||||
"gdIdxId": "GD001",
|
|
||||||
"gdIdxNm": "Etch Depth Guide",
|
|
||||||
}]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
chkDialog() {
|
chkDialog() {
|
||||||
@ -241,7 +235,7 @@ export default {
|
|||||||
},
|
},
|
||||||
async popCheck(val) {
|
async popCheck(val) {
|
||||||
if (val) {
|
if (val) {
|
||||||
// await this.getRowGridData();
|
await this.getRowGridData();
|
||||||
this.dialog = true;
|
this.dialog = true;
|
||||||
} else {
|
} else {
|
||||||
this.dialog = false;
|
this.dialog = false;
|
||||||
@ -365,57 +359,24 @@ export default {
|
|||||||
},
|
},
|
||||||
async getRowGridData() {
|
async getRowGridData() {
|
||||||
this.loadGrid = false;
|
this.loadGrid = false;
|
||||||
// var res = await this.postApiReturn({
|
var res = await this.postApiReturn({
|
||||||
// apiKey: 'selectEqpmDetailPop',
|
apiKey: 'selectEqpmDetailPop',
|
||||||
// resKey: 'eqpmDetlPopData',
|
resKey: 'eqpmDetlPopData',
|
||||||
// sendParam: {
|
sendParam: {
|
||||||
// gdIdxId : this.myBindingData.gdIdxId,
|
gdIdxId: this.myBindingData.gdIdxId,
|
||||||
// eqpmId : this.myBindingData.eqpmId,
|
eqpmId: this.myBindingData.eqpmId,
|
||||||
// fromDt : this.myBindingData.fromDt,
|
fromDt: this.myBindingData.fromDt,
|
||||||
// toDt : this.myBindingData.toDt
|
toDt: this.myBindingData.toDt
|
||||||
// },
|
|
||||||
// });
|
|
||||||
// const dayjs = require('dayjs');
|
|
||||||
// var newRes = res.map(item=>
|
|
||||||
// item = {
|
|
||||||
// ...item,
|
|
||||||
// totDttmDay : Utility.setFormatDate(item.totDttm, 'YYYY-MM-DD'),
|
|
||||||
// totDttmTime : Utility.setFormatDate(item.totDttm, 'HH') + "~" + dayjs(item.totDttm).add(1,'h').format('HH'),
|
|
||||||
// }
|
|
||||||
// );
|
|
||||||
|
|
||||||
const newRes = [
|
|
||||||
{
|
|
||||||
"totDttmDay": "2025-07-10",
|
|
||||||
"totDttmTime": "14:00~15:00",
|
|
||||||
"gdIdxNm": "Etch Depth Guide",
|
|
||||||
"careStndVal": 500,
|
|
||||||
"warnStndVal": 700,
|
|
||||||
"totVal": 720,
|
|
||||||
"alrmMsg": "Chamber pressure exceeded warning threshold. Immediate inspection required.",
|
|
||||||
"alrmKind": "경고"
|
|
||||||
},
|
},
|
||||||
{
|
});
|
||||||
"totDttmDay": "2025-07-10",
|
const dayjs = require('dayjs');
|
||||||
"totDttmTime": "09:00~10:00",
|
var newRes = res.map(item =>
|
||||||
"gdIdxNm": "Etch Depth Guide",
|
item = {
|
||||||
"careStndVal": 60,
|
...item,
|
||||||
"warnStndVal": 80,
|
totDttmDay: Utility.setFormatDate(item.totDttm, 'YYYY-MM-DD'),
|
||||||
"totVal": 75,
|
totDttmTime: Utility.setFormatDate(item.totDttm, 'HH') + "~" + dayjs(item.totDttm).add(1, 'h').format('HH'),
|
||||||
"alrmMsg": "Temperature nearing warning threshold. Monitor closely.",
|
|
||||||
"alrmKind": "주의"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"totDttmDay": "2025-07-09",
|
|
||||||
"totDttmTime": "22:00~23:00",
|
|
||||||
"gdIdxNm": "Etch Depth Guide",
|
|
||||||
"careStndVal": 300,
|
|
||||||
"warnStndVal": 400,
|
|
||||||
"totVal": 290,
|
|
||||||
"alrmMsg": "Gas flow rate below caution level. Check for leaks or blockages.",
|
|
||||||
"alrmKind": "주의"
|
|
||||||
}
|
}
|
||||||
]
|
);
|
||||||
|
|
||||||
|
|
||||||
this.setModalGridData({
|
this.setModalGridData({
|
||||||
|
|||||||
@ -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 = [];
|
||||||
|
|||||||
@ -2,12 +2,8 @@
|
|||||||
<v-row class="search-box" align="center">
|
<v-row class="search-box" align="center">
|
||||||
<v-col :cols="option.labelCols" class="py-0">
|
<v-col :cols="option.labelCols" class="py-0">
|
||||||
<label for="" class="search-box-label">
|
<label for="" class="search-box-label">
|
||||||
<v-icon
|
<v-icon v-if="item.iconShow" small
|
||||||
v-if="item.iconShow"
|
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']">$icoBulletPoint</v-icon>
|
||||||
small
|
|
||||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
|
||||||
>$icoBulletPoint</v-icon
|
|
||||||
>
|
|
||||||
{{ option.labelContent }}
|
{{ option.labelContent }}
|
||||||
</label>
|
</label>
|
||||||
</v-col>
|
</v-col>
|
||||||
@ -30,9 +26,9 @@
|
|||||||
<div class="pa-6 pt-0">
|
<div class="pa-6 pt-0">
|
||||||
<v-row align="center">
|
<v-row align="center">
|
||||||
<v-col :cols="5">
|
<v-col :cols="5">
|
||||||
<component :is="'SelectBox'" ref="SelectBox1" :labelCols="12" :textCols="12" :iconShow="true"
|
<component :is="'SelectBox'" ref="SelectBox1" :labelCols="12" :textCols="12"
|
||||||
:propsValue="selectValue01" :itemList="selectValueList01" :label="'설비그룹'"
|
:iconShow="true" :propsValue="selectValue01" :itemList="selectValueList01"
|
||||||
@update:propsValue="selectValue01 = $event" :readonly="item.openMode == undefined
|
:label="'설비그룹'" @update:propsValue="selectValue01 = $event" :readonly="item.openMode == undefined
|
||||||
? openMode
|
? openMode
|
||||||
: item.openMode == 'ALL'
|
: item.openMode == 'ALL'
|
||||||
? false
|
? false
|
||||||
@ -47,14 +43,14 @@
|
|||||||
물리량명
|
물리량명
|
||||||
</label>
|
</label>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="9"> <v-text-field append-icon="" class="v-input__custom"
|
<v-col :cols="9"> <v-text-field append-icon="" class="v-input__custom" outlined
|
||||||
outlined :hide-details="true" v-model="searchWord"
|
:hide-details="true" v-model="searchWord" @keyup.enter="search"><template
|
||||||
@keyup.enter="search"><template v-slot:append>
|
v-slot:append>
|
||||||
<!-- Custom SVG icon -->
|
<!-- Custom SVG icon -->
|
||||||
<v-icon>$icoSearch</v-icon>
|
<v-icon>$icoSearch</v-icon>
|
||||||
|
|
||||||
|
|
||||||
</template></v-text-field></v-col>
|
</template></v-text-field></v-col>
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
<v-col cols="3" class="text-right">
|
<v-col cols="3" class="text-right">
|
||||||
<a-button icon="search" type="primary" @click="search()"
|
<a-button icon="search" type="primary" @click="search()"
|
||||||
@ -76,9 +72,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
|
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
|
||||||
<a-button :ripple="false" @click="setUpdate($event)" class="mr-2">확인</a-button>
|
<a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)" class="mr-2">닫기</a-button>
|
||||||
<a-button :ripple="false" type="primary" @click="dialogOpenCloseEvent(dialog)"
|
<a-button :ripple="false" type="primary" @click="setUpdate($event)">확인</a-button>
|
||||||
class="mr-2">닫기</a-button>
|
|
||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-dialog>
|
</v-dialog>
|
||||||
@ -274,36 +270,30 @@ export default {
|
|||||||
this.gridInit();
|
this.gridInit();
|
||||||
},
|
},
|
||||||
async setSelectValueList01() {
|
async setSelectValueList01() {
|
||||||
// let res = await this.postApiReturn({
|
let res = await this.postApiReturn({
|
||||||
// apiKey: 'selectEqpmGrpCodeList',
|
apiKey: 'selectEqpmGrpCodeList',
|
||||||
// resKey: 'eqpmGrpCodeLists',
|
resKey: 'eqpmGrpCodeLists',
|
||||||
// sendParam: { eqpmKindId: this.searchParam.eqpmKindId },
|
sendParam: { eqpmKindId: this.searchParam.eqpmKindId },
|
||||||
// // 부모 페이지에서 설비종류인 eqpmKindId 값을 꼭 가져와야한다.
|
// 부모 페이지에서 설비종류인 eqpmKindId 값을 꼭 가져와야한다.
|
||||||
// });
|
});
|
||||||
// if (res.length > 0) {
|
if (res.length > 0) {
|
||||||
// this.selectValueList01 = await res.map(obj => {
|
this.selectValueList01 = await res.map(obj => {
|
||||||
// return {
|
return {
|
||||||
// text: obj.eqpmGrpNm,
|
text: obj.eqpmGrpNm,
|
||||||
// value: obj.eqpmGrpId,
|
value: obj.eqpmGrpId,
|
||||||
// };
|
};
|
||||||
// });
|
});
|
||||||
// // 부모 페이지에서 설비그룹을 선택한 값이 있다면(eqpmGrpId) 그 값으로 바인딩 아닐 경우 조회한 데이터의 첫번째 값으로 선택
|
// 부모 페이지에서 설비그룹을 선택한 값이 있다면(eqpmGrpId) 그 값으로 바인딩 아닐 경우 조회한 데이터의 첫번째 값으로 선택
|
||||||
// this.selectValue01 =
|
this.selectValue01 =
|
||||||
// this.searchParam.eqpmGrpId != undefined
|
this.searchParam.eqpmGrpId != undefined
|
||||||
// ? this.searchParam.eqpmGrpId
|
? this.searchParam.eqpmGrpId
|
||||||
// : this.selectValueList01[0].value;
|
: this.selectValueList01[0].value;
|
||||||
// // this.selectValue01 = this.selectValueList01[0].value;
|
// this.selectValue01 = this.selectValueList01[0].value;
|
||||||
// } else {
|
} else {
|
||||||
// this.selectValueList01 = [];
|
this.selectValueList01 = [];
|
||||||
// this.selectValue01 = null;
|
this.selectValue01 = null;
|
||||||
// }
|
}
|
||||||
|
|
||||||
this.selectValueList01 = [
|
|
||||||
{ label: '냉동기고온', value: '냉동기고온' },
|
|
||||||
{ label: '냉동기저온', value: '냉동기저온' },
|
|
||||||
{ label: '공조기', value: '공조기' },
|
|
||||||
{ label: '보일러', value: '보일러' }
|
|
||||||
];
|
|
||||||
},
|
},
|
||||||
search() {
|
search() {
|
||||||
this.getGridData();
|
this.getGridData();
|
||||||
@ -341,34 +331,26 @@ export default {
|
|||||||
},
|
},
|
||||||
async getGridData() {
|
async getGridData() {
|
||||||
this.loadGrid = false;
|
this.loadGrid = false;
|
||||||
// let res = [];
|
|
||||||
// let res = await this.postApiReturn({
|
let res = await this.postApiReturn({
|
||||||
// apiKey: 'selectEqpmBaseInfoPop',
|
apiKey: 'selectEqpmBaseInfoPop',
|
||||||
// resKey: 'epqmBaseInfoData',
|
resKey: 'epqmBaseInfoData',
|
||||||
// sendParam: {
|
sendParam: {
|
||||||
// eqpmGrpId: this.selectValue01,
|
eqpmGrpId: this.selectValue01,
|
||||||
// searchWord: this.searchWord,
|
searchWord: this.searchWord,
|
||||||
// // openMode : this.item.openMode == undefined ? this.openMode : this.item.openMode
|
// openMode : this.item.openMode == undefined ? this.openMode : this.item.openMode
|
||||||
// },
|
},
|
||||||
// });
|
});
|
||||||
// // grid와 popup eqpmId 값 중복되는 것 제거하는 로직 - 시작
|
// grid와 popup eqpmId 값 중복되는 것 제거하는 로직 - 시작
|
||||||
// let newRes = [];
|
let newRes = [];
|
||||||
// if (this.bindingGridEqpmIdList.length > 0) {
|
if (this.bindingGridEqpmIdList.length > 0) {
|
||||||
// newRes = res.filter(item => {
|
newRes = res.filter(item => {
|
||||||
// return !this.bindingGridEqpmIdList.includes(item.eqpmId);
|
return !this.bindingGridEqpmIdList.includes(item.eqpmId);
|
||||||
// });
|
});
|
||||||
// res = newRes;
|
res = newRes;
|
||||||
// }
|
}
|
||||||
// grid와 popup eqpmId 값 중복되는 것 제거하는 로직 - 끝
|
// grid와 popup eqpmId 값 중복되는 것 제거하는 로직 - 끝
|
||||||
|
|
||||||
const res = [
|
|
||||||
{
|
|
||||||
'eqpmId': 'PYSCL00001',
|
|
||||||
'eqpmNm': 'AMP_1A',
|
|
||||||
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
this.setModalGridData({
|
this.setModalGridData({
|
||||||
modalKey: this.myModalKey,
|
modalKey: this.myModalKey,
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
@ -441,9 +423,9 @@ export default {
|
|||||||
// this.dialog = false;
|
// this.dialog = false;
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
// if (this.myBindingData.length <= 0) {
|
if (this.myBindingData.length <= 0) {
|
||||||
// return alert('설비상세 리스트를 먼저 선택해주세요.');
|
return alert('설비상세 리스트를 먼저 선택해주세요.');
|
||||||
// }
|
}
|
||||||
this.dialog = !val;
|
this.dialog = !val;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -481,7 +463,7 @@ var eqpmBaseInfoPop = {
|
|||||||
// .v-dialog {
|
// .v-dialog {
|
||||||
// .v-card {
|
// .v-card {
|
||||||
// &__title {
|
// &__title {
|
||||||
|
|
||||||
|
|
||||||
// @if $theme ==dark {
|
// @if $theme ==dark {
|
||||||
// background-color: #2d3355;
|
// background-color: #2d3355;
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<v-icon
|
<v-icon
|
||||||
v-if="iconShow"
|
v-if="iconShow"
|
||||||
small
|
small
|
||||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||||
>$icoBulletPoint</v-icon
|
>$icoBulletPoint</v-icon
|
||||||
>
|
>
|
||||||
{{ option.labelContent }}
|
{{ option.labelContent }}
|
||||||
@ -36,7 +36,7 @@
|
|||||||
계산설명
|
계산설명
|
||||||
</label>
|
</label>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="10" class="mr-4 py-0" >
|
<v-col :cols="11" class="pr-8 py-0" >
|
||||||
<v-text-field append-icon="" class="v-input__custom" outlined
|
<v-text-field append-icon="" class="v-input__custom" outlined
|
||||||
:hide-details="true" v-model="searchWord" @keyup.enter="search"><template v-slot:append>
|
:hide-details="true" v-model="searchWord" @keyup.enter="search"><template v-slot:append>
|
||||||
<!-- Custom SVG icon -->
|
<!-- Custom SVG icon -->
|
||||||
@ -45,7 +45,7 @@
|
|||||||
|
|
||||||
</template></v-text-field>
|
</template></v-text-field>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="1" class="py-0">
|
<v-col cols="1" class="py-0" style="display: flex; justify-content: flex-end;">
|
||||||
<a-button icon="search" type="primary" @click="search()" class="search-button">조회</a-button>
|
<a-button icon="search" type="primary" @click="search()" class="search-button">조회</a-button>
|
||||||
<!-- <v-btn :ripple="false" @click="initSearch()">
|
<!-- <v-btn :ripple="false" @click="initSearch()">
|
||||||
초기화
|
초기화
|
||||||
@ -63,10 +63,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<v-card-actions class="pa-5 d-flex align-center justify-end">
|
<v-card-actions class="pa-5 d-flex align-center justify-end">
|
||||||
<!-- <v-btn :ripple="false" @click="setUpdate($event)">확인</v-btn>
|
<a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)" class="mr-2">닫기</a-button>
|
||||||
<v-btn :ripple="false" @click="dialogOpenCloseEvent(dialog)">닫기</v-btn> -->
|
<a-button :ripple="false" type="primary" @click="setUpdate($event)" >확인</a-button>
|
||||||
<a-button :ripple="false" @click="setUpdate($event)" class="mr-2">확인</a-button>
|
|
||||||
<a-button :ripple="false" type="primary" @click="dialogOpenCloseEvent(dialog)">닫기</a-button>
|
|
||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-dialog>
|
</v-dialog>
|
||||||
@ -306,38 +304,22 @@ export default {
|
|||||||
},
|
},
|
||||||
async getGridData() {
|
async getGridData() {
|
||||||
this.loadGrid = false;
|
this.loadGrid = false;
|
||||||
// let res = await this.postApiReturn({
|
let res = await this.postApiReturn({
|
||||||
// apiKey: 'selectEqpmCalcPop',
|
apiKey: 'selectEqpmCalcPop',
|
||||||
// resKey: 'eqpmCalcPopData',
|
resKey: 'eqpmCalcPopData',
|
||||||
// sendParam: {
|
sendParam: {
|
||||||
// calcDescLike: this.searchWord,
|
calcDescLike: this.searchWord,
|
||||||
// openMode: this.item.openMode != undefined ? this.item.openMode : this.openMode
|
openMode: this.item.openMode != undefined ? this.item.openMode : this.openMode
|
||||||
// },
|
|
||||||
// });
|
|
||||||
// if (this.myBindingData['calcProc'] != '' || this.myBindingData['calcProc'] != null || this.myBindingData['calcProc'] != undefined) {
|
|
||||||
// let newRes = [];
|
|
||||||
// newRes = res.filter(item => {
|
|
||||||
// return item.calcProc != this.myBindingData['calcProc']
|
|
||||||
// });
|
|
||||||
// res = newRes;
|
|
||||||
// }
|
|
||||||
|
|
||||||
const res = [
|
|
||||||
{
|
|
||||||
'calcProc': 'AVG_CNT2',
|
|
||||||
'argCnt': '2',
|
|
||||||
'calcDesc': '두개 변수에 대한 평균'
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
});
|
||||||
{ 'calcProc': 'PROC001', argCnt: 2, 'calcDesc': '덧셈 연산' },
|
if (this.myBindingData['calcProc'] != '' || this.myBindingData['calcProc'] != null || this.myBindingData['calcProc'] != undefined) {
|
||||||
{ 'calcProc': 'PROC002', argCnt: 1, 'calcDesc': '제곱 연산' },
|
let newRes = [];
|
||||||
{ 'calcProc': 'PROC003', argCnt: 2, 'calcDesc': '곱셈 연산' },
|
newRes = res.filter(item => {
|
||||||
{ 'calcProc': 'PROC004', argCnt: 1, 'calcDesc': '루트 연산' },
|
return item.calcProc != this.myBindingData['calcProc']
|
||||||
{ 'calcProc': 'PROC005', argCnt: 3, 'calcDesc': '최대값 계산' },
|
});
|
||||||
{ 'calcProc': 'PROC006', argCnt: 3, 'calcDesc': '최소값 계산' },
|
res = newRes;
|
||||||
|
}
|
||||||
]
|
|
||||||
this.setModalGridData({
|
this.setModalGridData({
|
||||||
modalKey: this.myModalKey,
|
modalKey: this.myModalKey,
|
||||||
gridKey: this.grid_01,
|
gridKey: this.grid_01,
|
||||||
|
|||||||
@ -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 {
|
} else {
|
||||||
// this.selectValueList02 = [];
|
this.selectValueList02 = [];
|
||||||
// this.selectValue02 = [];
|
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 {
|
} else {
|
||||||
// this.selectValueList01 = [];
|
this.selectValueList01 = [];
|
||||||
// this.selectValue01 = null;
|
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,
|
||||||
|
|||||||
@ -286,8 +286,8 @@ export default {
|
|||||||
// Row selection config
|
// Row selection config
|
||||||
rowSelection: {
|
rowSelection: {
|
||||||
onChange: (selectedRowKeys, selectedRows) => {
|
onChange: (selectedRowKeys, selectedRows) => {
|
||||||
console.log('Selected Row Keys:', selectedRowKeys);
|
// console.log('Selected Row Keys:', selectedRowKeys);
|
||||||
console.log('Selected Rows:', selectedRows);
|
// console.log('Selected Rows:', selectedRows);
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -332,7 +332,7 @@ export default {
|
|||||||
// this.getRowGridData();
|
// this.getRowGridData();
|
||||||
// },
|
// },
|
||||||
searchFab() {
|
searchFab() {
|
||||||
console.log('tttttttttttt')
|
// console.log('tttttttttttt')
|
||||||
// this.filteredData = this.data.filter(item => {
|
// this.filteredData = this.data.filter(item => {
|
||||||
// const matchGrp = this.eqpmGrpSelected ? item.group === this.eqpmGrpSelected : true;
|
// const matchGrp = this.eqpmGrpSelected ? item.group === this.eqpmGrpSelected : true;
|
||||||
// const matchFab = this.localFabSelected ? item.fab === this.localFabSelected : true;
|
// const matchFab = this.localFabSelected ? item.fab === this.localFabSelected : true;
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-row class="search-box" align="center">
|
<v-row class="search-box no-gutters" align="center">
|
||||||
<v-col :cols="option.labelCols" class="py-0">
|
<v-col :cols="option.labelCols" class="py-0">
|
||||||
<label for="" class="search-box-label">
|
<label for="" class="search-box-label">
|
||||||
<v-icon v-if="item.iconShow" small
|
<v-icon v-if="item.iconShow" small
|
||||||
@ -7,12 +7,13 @@
|
|||||||
{{ option.labelContent }}
|
{{ option.labelContent }}
|
||||||
</label>
|
</label>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="option.textCols">
|
<v-col :cols="option.textCols" class="py-0">
|
||||||
<v-text-field readonly v-model="selectValue" append-icon="mdi-magnify"
|
<v-text-field readonly append-icon="" :class="['v-select__custom', customClass]" outlined :hide-details="true"
|
||||||
:class="['v-select__custom', customClass]"
|
v-model="selectValue" @keyup.enter="typeEnterKey" @click="dialogOpenCloseEvent(dialog)" style="padding: 0;"
|
||||||
@click="dialogOpenCloseEvent(dialog)" outlined :hide-details="true"
|
:required="item.required || false"><template v-slot:append>
|
||||||
:required="item.required || false"></v-text-field>
|
<!-- Custom SVG icon -->
|
||||||
<!-- :disabled="item.disabled || false" -->
|
<v-icon>$icoSearch</v-icon>
|
||||||
|
</template></v-text-field>
|
||||||
</v-col>
|
</v-col>
|
||||||
|
|
||||||
<v-dialog v-model="dialog" scrollable width="1000px">
|
<v-dialog v-model="dialog" scrollable width="1000px">
|
||||||
@ -21,10 +22,10 @@
|
|||||||
<span class="custom-title-4">{{ option.modalTitle }}</span>
|
<span class="custom-title-4">{{ option.modalTitle }}</span>
|
||||||
<v-icon @click="dialogOpenCloseEvent(dialog)">mdi-close</v-icon>
|
<v-icon @click="dialogOpenCloseEvent(dialog)">mdi-close</v-icon>
|
||||||
</v-card-title>
|
</v-card-title>
|
||||||
<v-row align="end" class="pa-5" no-gutters>
|
<v-row align="end" class="px-5 pb-3" no-gutters>
|
||||||
<v-col :cols="2.5" class="mr-2">
|
<v-col :cols="2.5" class="mr-2">
|
||||||
<v-row>
|
<v-row>
|
||||||
<v-col :cols="2">
|
<v-col :cols="12" class="py-0">
|
||||||
<label for="" class="search-box-label">
|
<label for="" class="search-box-label">
|
||||||
<!-- <v-icon small
|
<!-- <v-icon small
|
||||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||||
@ -32,28 +33,28 @@
|
|||||||
검색
|
검색
|
||||||
</label>
|
</label>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="12">
|
<v-col :cols="11" class="py-0 pr-3">
|
||||||
<v-text-field append-icon="mdi-magnify" class="v-input__custom" outlined :hide-details="true"
|
<v-text-field append-icon="mdi-magnify" class="v-input__custom" outlined
|
||||||
v-model="searchWord" @keyup.enter="search"></v-text-field>
|
:hide-details="true" v-model="searchWord" @keyup.enter="search"></v-text-field>
|
||||||
</v-col>
|
</v-col>
|
||||||
|
<a-button icon="search" :ripple="false" type="primary" @click="search()"
|
||||||
|
class="search-button">조회</a-button>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-col>
|
</v-col>
|
||||||
<a-button type="primary" :ripple="false" @click="search()">
|
|
||||||
조회
|
|
||||||
</a-button>
|
|
||||||
</v-row>
|
</v-row>
|
||||||
<!-- <div :style="'height: calc(65vh)'"> -->
|
<!-- <div :style="'height: calc(65vh)'"> -->
|
||||||
<div :style="'height: 600px'">
|
<div :style="'height: 600px'" class="px-5">
|
||||||
<!-- <div :style="{ height: 'calc(100% - 213px)' }"> -->
|
<!-- <div :style="{ height: 'calc(100% - 213px)' }"> -->
|
||||||
<div ref="modalGridParent" class="h100 py-3">
|
<div ref="modalGridParent" class="h100 py-3">
|
||||||
<!-- :is="loadGrid && dialog ? 'Grid' : null" -->
|
<!-- :is="loadGrid && dialog ? 'Grid' : null" -->
|
||||||
<component :is="loadGrid && dialog ? 'Grid' : null" :gridName="grid_01"
|
<component :is="loadGrid && dialog ? 'Grid' : null" :gridName="grid_01"
|
||||||
:dataPath="searchParam.modalData2.evtObjPop" :parentPrgmId="parentPrgmId" @getRowsData="getRowData"
|
:dataPath="searchParam.modalData2.evtObjPop" :parentPrgmId="parentPrgmId"
|
||||||
@dblClick="setUpdate($event)" />
|
@getRowsData="getRowData" @dblClick="setUpdate($event)" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<v-card-actions class="pa-5 d-flex align-center justify-end">
|
<v-card-actions class="pa-5 d-flex align-center justify-end">
|
||||||
<a-button type="default" class="mr-2" :ripple="false" @click="dialogOpenCloseEvent(dialog)">닫기</a-button>
|
<a-button type="default" class="mr-2" :ripple="false"
|
||||||
|
@click="dialogOpenCloseEvent(dialog)">닫기</a-button>
|
||||||
<a-button type="primary" class="mr-2" :ripple="false" @click="setUpdate('init')">초기화</a-button>
|
<a-button type="primary" class="mr-2" :ripple="false" @click="setUpdate('init')">초기화</a-button>
|
||||||
<a-button type="primary" :ripple="false" @click="setUpdate($event)">확인</a-button>
|
<a-button type="primary" :ripple="false" @click="setUpdate($event)">확인</a-button>
|
||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
@ -124,7 +125,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 +166,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 +249,9 @@ export default {
|
|||||||
columnOptions: {
|
columnOptions: {
|
||||||
resizable: true,
|
resizable: true,
|
||||||
},
|
},
|
||||||
|
header: {
|
||||||
|
height: 38,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
this.setModalGridOption({
|
this.setModalGridOption({
|
||||||
modalKey: this.myModalKey,
|
modalKey: this.myModalKey,
|
||||||
@ -300,7 +275,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 +351,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 +363,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>
|
||||||
|
|||||||
@ -126,7 +126,7 @@ export default {
|
|||||||
async chkDialog(val) {
|
async chkDialog(val) {
|
||||||
if (val) {
|
if (val) {
|
||||||
// 열릴 때
|
// 열릴 때
|
||||||
console.log('dsfafds');
|
// console.log('dsfafds');
|
||||||
await this.getData();
|
await this.getData();
|
||||||
// console.log("chkDialog: ", val);
|
// console.log("chkDialog: ", val);
|
||||||
// if(this.searchParam.selecUserList.length > 0){
|
// if(this.searchParam.selecUserList.length > 0){
|
||||||
|
|||||||
@ -22,37 +22,29 @@
|
|||||||
outlined
|
outlined
|
||||||
:hide-details="true"
|
:hide-details="true"
|
||||||
>
|
>
|
||||||
|
<!-- Custom SVG icon -->
|
||||||
<template v-slot:append>
|
<template v-slot:append>
|
||||||
<!-- Custom SVG icon -->
|
<v-icon>$icoSearch</v-icon>
|
||||||
<v-icon>$icoSearch</v-icon>
|
|
||||||
</template>
|
</template>
|
||||||
</v-text-field>
|
</v-text-field>
|
||||||
</v-col>
|
</v-col>
|
||||||
|
|
||||||
<v-dialog v-model="dialog" scrollable width="700px">
|
<v-dialog v-model="dialog" scrollable width="700px">
|
||||||
<v-card style="height: 100%">
|
<v-card style="height: 100%">
|
||||||
<v-card-title class="pa-5 d-flex align-center justify-space-between">
|
<v-card-title class="px-6 py-4 d-flex align-center justify-space-between">
|
||||||
<span class="custom-title-4">{{ option.modalTitle }}</span>
|
<span class="custom-title-4">{{ option.modalTitle }}</span>
|
||||||
<v-btn
|
<a-button icon="close" type="text" @click="dialogOpenCloseEvent(dialog)"></a-button>
|
||||||
icon
|
|
||||||
tile
|
|
||||||
:ripple="false"
|
|
||||||
@click="dialogOpenCloseEvent(dialog)"
|
|
||||||
>
|
|
||||||
<v-icon>mdi-close</v-icon>
|
|
||||||
</v-btn>
|
|
||||||
</v-card-title>
|
</v-card-title>
|
||||||
<div class="pa-5">
|
<div class="pa-5">
|
||||||
<v-row align="center" no-gutters>
|
<v-row align="center" no-gutters>
|
||||||
<v-col :cols="3">
|
<v-col :cols="12">
|
||||||
<label for="" class="search-box-label">
|
<label for="" class="search-box-label">
|
||||||
<v-icon x-small color="primary" class="mr-1"
|
<!-- <v-icon x-small color="primary" class="mr-1">mdi-record-circle</v-icon> -->
|
||||||
>mdi-record-circle</v-icon
|
<v-icon small :class="['mr-1 icon-blue']">$icoBulletPoint</v-icon>
|
||||||
>
|
|
||||||
검색
|
검색
|
||||||
</label>
|
</label>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="5">
|
<v-col :cols="9">
|
||||||
<v-text-field
|
<v-text-field
|
||||||
append-icon="mdi-magnify"
|
append-icon="mdi-magnify"
|
||||||
class="v-input__custom"
|
class="v-input__custom"
|
||||||
@ -63,21 +55,19 @@
|
|||||||
></v-text-field>
|
></v-text-field>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
<v-col cols="4" class="text-right">
|
<v-col :cols="3" class="text-right">
|
||||||
<v-btn :ripple="false" @click="search()">
|
<a-button type="primary" @click="search()" icon="search">
|
||||||
조회
|
조회
|
||||||
</v-btn>
|
</a-button>
|
||||||
<v-btn :ripple="false" @click="initSearch()">
|
<a-button @click="initSearch()">
|
||||||
초기화
|
초기화
|
||||||
</v-btn>
|
</a-button>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</div>
|
</div>
|
||||||
<v-divider></v-divider>
|
<!-- <v-divider></v-divider> -->
|
||||||
<!-- <div :style="'height: calc(65vh)'"> -->
|
<div style="height: 429px;" class="py-3 px-5">
|
||||||
<div :style="'height: 429px;'">
|
<div ref="modalGridParent" class="h100 w100">
|
||||||
<!-- <div :style="{ height: 'calc(100% - 213px)' }"> -->
|
|
||||||
<div ref="modalGridParent" class="h100 w100 py-3">
|
|
||||||
<component
|
<component
|
||||||
:is="loadGrid && dialog ? 'Grid' : null"
|
:is="loadGrid && dialog ? 'Grid' : null"
|
||||||
:gridName="grid_01"
|
:gridName="grid_01"
|
||||||
@ -88,11 +78,9 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<v-card-actions class="pa-5 d-flex align-center justify-center">
|
<v-card-actions class="pa-5 d-flex align-center justify-end">
|
||||||
<v-btn :ripple="false" @click="setUpdate($event)">확인</v-btn>
|
<a-button class="mr-2" @click="dialogOpenCloseEvent(dialog)">닫기</a-button>
|
||||||
<v-btn :ripple="false" @click="dialogOpenCloseEvent(dialog)"
|
<a-button type="primary" @click="setUpdate($event)">확인</a-button>
|
||||||
>닫기</v-btn
|
|
||||||
>
|
|
||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-dialog>
|
</v-dialog>
|
||||||
@ -292,52 +280,41 @@ export default {
|
|||||||
modalKey: this.myModalKey,
|
modalKey: this.myModalKey,
|
||||||
gridKey: this.grid_01,
|
gridKey: this.grid_01,
|
||||||
modalDataKey: this.modalDataKey,
|
modalDataKey: this.modalDataKey,
|
||||||
value: [{ header: '위치정보', name: 'eccNm' }],
|
value: [
|
||||||
|
{
|
||||||
|
align: 'center',
|
||||||
|
width: 30,
|
||||||
|
minWidth: 60,
|
||||||
|
formatter: (props) => {
|
||||||
|
return `<span class="custom-radio"><span class="radio-mark"></span></span>`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ header: '위치정보', name: 'eccNm' }
|
||||||
|
],
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
async getGridData() {
|
async getGridData() {
|
||||||
// this.loadGrid = false;
|
this.loadGrid = false;
|
||||||
|
|
||||||
// const res = await this.postApiReturn({
|
const res = await this.postApiReturn({
|
||||||
// apiKey: 'selectEccBaseInfo',
|
apiKey: 'selectEccBaseInfo',
|
||||||
// resKey: 'eccBaseInfoData',
|
resKey: 'eccBaseInfoData',
|
||||||
// sendParam: {
|
sendParam: {
|
||||||
// blocId: this.myBindingData.blocId,
|
blocId: this.myBindingData.blocId,
|
||||||
// eqpmYn: '0',
|
eqpmYn: '0',
|
||||||
// search: this.searchWord,
|
search: this.searchWord,
|
||||||
// },
|
},
|
||||||
// });
|
});
|
||||||
|
|
||||||
// const setTreeData = await this.setTree({
|
const setTreeData = await this.setTree({
|
||||||
// gridKey: this.gridNameTree,
|
gridKey: this.gridNameTree,
|
||||||
// treeKey: 'ECC_ID',
|
treeKey: 'ECC_ID',
|
||||||
// value: res.map(item => ({
|
value: res.map(item => ({
|
||||||
// ...item,
|
|
||||||
// eccNm: item.eccNm,
|
|
||||||
// })),
|
|
||||||
// });
|
|
||||||
|
|
||||||
//mockdata eccNm
|
|
||||||
|
|
||||||
|
|
||||||
let res = [
|
|
||||||
{ ECC_ID: 'ECC001', eccNm: '서울 본사', iconShow: false, align: 'center' },
|
|
||||||
{ ECC_ID: 'ECC002', eccNm: '부산 지사', useIcon: false, align: 'center' },
|
|
||||||
{ ECC_ID: 'ECC003', eccNm: '대구 센터', useIcon: false, align: 'center' },
|
|
||||||
{ ECC_ID: 'ECC004', eccNm: '광주 사무소' , useIcon: false, align: 'center'},
|
|
||||||
{ ECC_ID: 'ECC005', eccNm: '인천 물류창고' , useIcon: false, align: 'center'},
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
const setTreeData = {
|
|
||||||
ROOT: res.map(item => ({
|
|
||||||
...item,
|
...item,
|
||||||
eccNm: item.eccNm,
|
eccNm: item.eccNm,
|
||||||
}))
|
})),
|
||||||
};
|
});
|
||||||
|
|
||||||
console.log(res);
|
|
||||||
|
|
||||||
this.setModalGridData({
|
this.setModalGridData({
|
||||||
modalKey: this.myModalKey,
|
modalKey: this.myModalKey,
|
||||||
gridKey: this.grid_01,
|
gridKey: this.grid_01,
|
||||||
@ -395,7 +372,31 @@ var FtnPlcFormPop = {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
// @each $theme in dark, light {
|
||||||
|
// @include theme($theme);
|
||||||
|
// .v-application.#{$theme}-mode {
|
||||||
|
// .v-input--is-readonly {
|
||||||
|
// border-color: map-deep-get($config,
|
||||||
|
// #{$theme},
|
||||||
|
// "v-input-readonly-border-color"
|
||||||
|
// );
|
||||||
|
// ::v-deep {
|
||||||
|
// &:not(.v-input--radio-group, .v-input--checkbox) {
|
||||||
|
// .v-input__slot {
|
||||||
|
// background-color: map-deep-get($config,
|
||||||
|
// #{$theme},
|
||||||
|
// "v-input-backgroundColor"
|
||||||
|
// ) !important;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
::v-deep {
|
::v-deep {
|
||||||
|
|
||||||
.v-dialog {
|
.v-dialog {
|
||||||
overflow-y: hidden !important;
|
overflow-y: hidden !important;
|
||||||
}
|
}
|
||||||
@ -418,26 +419,4 @@ var FtnPlcFormPop = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@each $theme in dark, light {
|
|
||||||
.v-application.#{$theme}-mode {
|
|
||||||
.v-dialog {
|
|
||||||
.v-card {
|
|
||||||
&__title {
|
|
||||||
color: map-deep-get($color, 'white', '0');
|
|
||||||
@if $theme == dark {
|
|
||||||
background-color: #2d3355;
|
|
||||||
.v-btn {
|
|
||||||
background-color: #2d3355;
|
|
||||||
}
|
|
||||||
} @else {
|
|
||||||
background-color: #3f4d7d;
|
|
||||||
.v-btn {
|
|
||||||
background-color: #3f4d7d;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -294,10 +294,10 @@ export default {
|
|||||||
if (this.searchParam.energyCd < 0) {
|
if (this.searchParam.energyCd < 0) {
|
||||||
roiIdVal = null;
|
roiIdVal = null;
|
||||||
} else {
|
} else {
|
||||||
console.log(
|
// console.log(
|
||||||
'this.searchParam.energyList[this.searchParam.energyCd]',
|
// 'this.searchParam.energyList[this.searchParam.energyCd]',
|
||||||
this.searchParam.energyList[this.searchParam.energyCd],
|
// this.searchParam.energyList[this.searchParam.energyCd],
|
||||||
);
|
// );
|
||||||
roiIdVal = this.searchParam.energyList[this.searchParam.energyCd + 1]
|
roiIdVal = this.searchParam.energyList[this.searchParam.energyCd + 1]
|
||||||
.cd;
|
.cd;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -239,13 +239,13 @@ export default {
|
|||||||
this.selectedData.eccNm = '';
|
this.selectedData.eccNm = '';
|
||||||
|
|
||||||
if (this.bindOption === null) {
|
if (this.bindOption === null) {
|
||||||
console.log('this.bindOption is null...');
|
// console.log('this.bindOption is null...');
|
||||||
this.setPageData({
|
this.setPageData({
|
||||||
modalEccId: '',
|
modalEccId: '',
|
||||||
modalEccNm: '',
|
modalEccNm: '',
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
console.log('this.bindOption is not null...');
|
// console.log('this.bindOption is not null...');
|
||||||
this.setPageData({
|
this.setPageData({
|
||||||
[this.bindOption.eccId]: '',
|
[this.bindOption.eccId]: '',
|
||||||
[this.bindOption.eccNm]: '',
|
[this.bindOption.eccNm]: '',
|
||||||
@ -296,12 +296,12 @@ export default {
|
|||||||
? localStorage.getItem(this.parentPrgmId + 'ModalEccNm')
|
? localStorage.getItem(this.parentPrgmId + 'ModalEccNm')
|
||||||
: '',
|
: '',
|
||||||
});
|
});
|
||||||
console.log(
|
// console.log(
|
||||||
'localStorage.getItem(this.parentPrgmId + "ModalEccNm") : ',
|
// 'localStorage.getItem(this.parentPrgmId + "ModalEccNm") : ',
|
||||||
localStorage.getItem(this.parentPrgmId + 'ModalEccNm') != null
|
// localStorage.getItem(this.parentPrgmId + 'ModalEccNm') != null
|
||||||
? localStorage.getItem(this.parentPrgmId + 'ModalEccNm')
|
// ? localStorage.getItem(this.parentPrgmId + 'ModalEccNm')
|
||||||
: '',
|
// : '',
|
||||||
);
|
// );
|
||||||
this.textFieldData =
|
this.textFieldData =
|
||||||
localStorage.getItem(this.parentPrgmId + 'ModalEccNm') != null
|
localStorage.getItem(this.parentPrgmId + 'ModalEccNm') != null
|
||||||
? localStorage.getItem(this.parentPrgmId + 'ModalEccNm')
|
? localStorage.getItem(this.parentPrgmId + 'ModalEccNm')
|
||||||
|
|||||||
@ -1,268 +1,191 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<!-- <v-btn :ripple="false" @click="dialog = !dialog">경고창</v-btn> -->
|
<!-- <v-btn :ripple="false" @click="dialog = !dialog">경고창</v-btn> -->
|
||||||
<v-dialog
|
<v-dialog v-model="dialog" width="800" overlay-color="#000" overlay-opacity="0.8">
|
||||||
v-model="dialog"
|
|
||||||
width="700"
|
|
||||||
overlay-color="#000"
|
|
||||||
overlay-opacity="0.8"
|
|
||||||
>
|
|
||||||
<v-card>
|
<v-card>
|
||||||
<v-toolbar
|
<v-card-title class="px-6 py-4 d-flex align-center justify-space-between">
|
||||||
|
<span class="custom-title-4">{{ label }}</span>
|
||||||
|
<a-button icon="close" type="text" @click="dialog = !dialog"></a-button>
|
||||||
|
</v-card-title>
|
||||||
|
<!-- <v-toolbar
|
||||||
:color="isDarkMode ? '#2d3355' : '#3f4d7d'"
|
:color="isDarkMode ? '#2d3355' : '#3f4d7d'"
|
||||||
class="py-4 pr-3 pl-5"
|
class="py-4 pr-3 pl-5"
|
||||||
height="auto"
|
height="auto"
|
||||||
>
|
>
|
||||||
<v-toolbar-title>{{ label }}</v-toolbar-title>
|
<v-toolbar-title>{{ label }}</v-toolbar-title>
|
||||||
<!-- <v-btn
|
</v-toolbar> -->
|
||||||
icon
|
|
||||||
tile
|
|
||||||
small
|
|
||||||
:ripple="false"
|
|
||||||
@click="dialog = !dialog"
|
|
||||||
:style="{ backgroundColor: isDarkMode ? '#2d3355' : '#3f4d7d' }"
|
|
||||||
>
|
|
||||||
<v-icon>mdi-close</v-icon>
|
|
||||||
</v-btn> -->
|
|
||||||
</v-toolbar>
|
|
||||||
<!-- <v-card-title>
|
<!-- <v-card-title>
|
||||||
일정 상세 내용
|
일정 상세 내용
|
||||||
</v-card-title> -->
|
</v-card-title> -->
|
||||||
<!-- <template v-for="(item, index) in detailList"> -->
|
<!-- <template v-for="(item, index) in detailList"> -->
|
||||||
<template>
|
<template>
|
||||||
<div style="padding : 20px">
|
<div class="pa-6 pt-0">
|
||||||
<v-col :cols="12">
|
<v-row no-gutters class="mb-4">
|
||||||
<v-row>
|
<v-col :cols="12">
|
||||||
<v-col :cols="3">
|
<label class="search-box-label">
|
||||||
<v-row class="search-box" align="center" no-gutters>
|
<v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
|
||||||
<label class="search-box-label">
|
일정 시작
|
||||||
<v-icon x-small color="#fb8200" class="mr-1"
|
</label>
|
||||||
>mdi-record-circle</v-icon
|
</v-col>
|
||||||
>
|
<v-col :cols="6" class="py-0 pr-2">
|
||||||
일정 시작
|
<!-- <DatePicker v-model="strtDt" :parentPrgmId="parentPrgmId"/> -->
|
||||||
</label>
|
<div class="startpicker-container2">
|
||||||
</v-row>
|
<v-text-field id="startpicker2" ref="startpicker2" v-model="strtDt"
|
||||||
</v-col>
|
:class="'v-input__custom'" :hide-details="true" readonly outlined>
|
||||||
<v-col :cols="4">
|
<template #append>
|
||||||
<!-- <DatePicker v-model="strtDt" :parentPrgmId="parentPrgmId"/> -->
|
<v-icon size="20">$icoCalendar</v-icon>
|
||||||
<div class="startpicker-container2">
|
</template>
|
||||||
<v-text-field
|
<template #append-outer>
|
||||||
id="startpicker2"
|
<div ref="startpicker-container2" id="startpicker-container2"></div>
|
||||||
ref="startpicker2"
|
</template>
|
||||||
v-model="strtDt"
|
</v-text-field>
|
||||||
:class="'v-input__custom'"
|
</div>
|
||||||
:hide-details="true"
|
</v-col>
|
||||||
readonly
|
<v-col :cols="6" class="py-0 pl-2">
|
||||||
outlined
|
<!-- <DatePicker v-model="strtDt" :parentPrgmId="parentPrgmId"/> -->
|
||||||
>
|
<component :parentPrgmId="parentPrgmId" :is="'SelectBoxTime'" ref="SelectBox1"
|
||||||
<template #append>
|
:propsValue="selectTimeValue1" :itemList="selectTimeValueList1" :minInterval="selectBoxTimeItemList.minInterval ? selectBoxTimeItemList.minInterval : 1
|
||||||
<v-icon size="20">$icoCalendar</v-icon>
|
" @update:propsValue="selectTimeValue1 = $event" />
|
||||||
</template>
|
<!-- <div class="startpicker-container2">
|
||||||
<template #append-outer>
|
<v-text-field id="startpicker2" ref="startpicker2" v-model="strtDt"
|
||||||
<div
|
:class="'v-input__custom'" :hide-details="true" readonly outlined>
|
||||||
ref="startpicker-container2"
|
<template #append>
|
||||||
id="startpicker-container2"
|
<v-icon size="20">$icoCalendar</v-icon>
|
||||||
></div>
|
</template>
|
||||||
</template>
|
<template #append-outer>
|
||||||
</v-text-field>
|
<div ref="startpicker-container2" id="startpicker-container2"></div>
|
||||||
|
</template>
|
||||||
|
</v-text-field>
|
||||||
|
</div> -->
|
||||||
|
</v-col>
|
||||||
|
<!-- <v-col :cols="2">
|
||||||
|
<vue-numeric-input v-model="strtHh" :min="0" :max="23" controls-type="updown"
|
||||||
|
class="v-input__slot" width="100%" align="center">
|
||||||
|
</vue-numeric-input>
|
||||||
|
</v-col>
|
||||||
|
<v-col :cols="1" style="text-align: center;">
|
||||||
|
:
|
||||||
|
</v-col>
|
||||||
|
<v-col :cols="2">
|
||||||
|
<vue-numeric-input v-model="strtMm" :min="0" :max="59" controls-type="updown"
|
||||||
|
class="v-input__slot" width="100%" align="center">
|
||||||
|
</vue-numeric-input>
|
||||||
|
</v-col> -->
|
||||||
|
</v-row>
|
||||||
|
<v-row no-gutters class="mb-4">
|
||||||
|
<v-col :cols="12">
|
||||||
|
<label class="search-box-label">
|
||||||
|
<v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
|
||||||
|
일정 종료
|
||||||
|
</label>
|
||||||
|
</v-col>
|
||||||
|
<v-col :cols="6" class="pr-2">
|
||||||
|
<!-- <DatePicker v-model="endDt" :parentPrgmId="parentPrgmId"/> -->
|
||||||
|
<div class="startpicker-container3">
|
||||||
|
<v-text-field id="startpicker3" ref="startpicker3" v-model="endDt"
|
||||||
|
:class="'v-input__custom'" :hide-details="true" readonly outlined>
|
||||||
|
<template #append>
|
||||||
|
<v-icon size="20">$icoCalendar</v-icon>
|
||||||
|
</template>
|
||||||
|
<template #append-outer>
|
||||||
|
<div ref="startpicker-container3" id="startpicker-container3"></div>
|
||||||
|
</template>
|
||||||
|
</v-text-field>
|
||||||
|
</div>
|
||||||
|
</v-col>
|
||||||
|
<v-col :cols="6" class="pl-2">
|
||||||
|
<component :parentPrgmId="parentPrgmId" :is="'SelectBoxTime'" ref="SelectBox2"
|
||||||
|
:propsValue="selectTimeValue2" :itemList="selectTimeValueList2" :minInterval="selectBoxTimeItemList.minInterval ? selectBoxTimeItemList.minInterval : 1
|
||||||
|
" @update:propsValue="selectTimeValue2 = $event" />
|
||||||
|
</v-col>
|
||||||
|
<!-- <v-col :cols="2">
|
||||||
|
<vue-numeric-input v-model="endHh" :min="0" :max="23" controls-type="updown"
|
||||||
|
class="v-input__slot" width="100%" align="center">
|
||||||
|
</vue-numeric-input>
|
||||||
|
</v-col>
|
||||||
|
<v-col :cols="1" style="text-align: center;">
|
||||||
|
:
|
||||||
|
</v-col>
|
||||||
|
<v-col :cols="2">
|
||||||
|
<vue-numeric-input v-model="endMm" :min="0" :max="59" controls-type="updown"
|
||||||
|
class="v-input__slot" width="100%" align="center">
|
||||||
|
</vue-numeric-input>
|
||||||
|
</v-col> -->
|
||||||
|
</v-row>
|
||||||
|
<v-row no-gutters class="mb-4">
|
||||||
|
<v-col :cols="12">
|
||||||
|
<label class="search-box-label">
|
||||||
|
<v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
|
||||||
|
일정 제목
|
||||||
|
</label>
|
||||||
|
</v-col>
|
||||||
|
<v-col :cols="12" class="py-0">
|
||||||
|
<v-text-field v-model="planTitle" class="v-input__custom" outlined
|
||||||
|
:hide-details="true"></v-text-field>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
<v-row no-gutters class="mb-4">
|
||||||
|
<v-col :cols="12">
|
||||||
|
<label class="search-box-label">
|
||||||
|
<v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
|
||||||
|
일정 상세 내용
|
||||||
|
</label>
|
||||||
|
</v-col>
|
||||||
|
<v-col :cols="12" class="py-0">
|
||||||
|
<v-textarea v-model="planCntn" class="v-input__custom" outlined :hide-details="true"
|
||||||
|
:maxlength="1000"></v-textarea>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
<v-row no-gutters class="mb-4">
|
||||||
|
<v-col :cols="12">
|
||||||
|
<label class="search-box-label">
|
||||||
|
<v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
|
||||||
|
표시 색상
|
||||||
|
</label>
|
||||||
|
|
||||||
|
</v-col>
|
||||||
|
<v-col :cols="6">
|
||||||
|
<div class="d-flex calendar-color" style="gap:16px">
|
||||||
|
|
||||||
|
<div id="redDiv" class="colPk redBg" @click="colorClick('red')">
|
||||||
|
<div class="inner-color"></div>
|
||||||
</div>
|
</div>
|
||||||
</v-col>
|
|
||||||
<v-col :cols="2">
|
<div id="blueDiv" class="colPk blueBg" @click="colorClick('blue')">
|
||||||
<vue-numeric-input
|
<div class="inner-color"></div>
|
||||||
v-model="strtHh"
|
|
||||||
:min="0"
|
|
||||||
:max="23"
|
|
||||||
controls-type="updown"
|
|
||||||
class="v-input__slot"
|
|
||||||
width="100%"
|
|
||||||
align="center"
|
|
||||||
>
|
|
||||||
</vue-numeric-input>
|
|
||||||
</v-col>
|
|
||||||
<v-col :cols="1" style="text-align: center;">
|
|
||||||
:
|
|
||||||
</v-col>
|
|
||||||
<v-col :cols="2">
|
|
||||||
<vue-numeric-input
|
|
||||||
v-model="strtMm"
|
|
||||||
:min="0"
|
|
||||||
:max="59"
|
|
||||||
controls-type="updown"
|
|
||||||
class="v-input__slot"
|
|
||||||
width="100%"
|
|
||||||
align="center"
|
|
||||||
>
|
|
||||||
</vue-numeric-input>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
<v-row>
|
|
||||||
<v-col :cols="3">
|
|
||||||
<v-row class="search-box" align="center" no-gutters>
|
|
||||||
<label class="search-box-label">
|
|
||||||
<v-icon x-small color="#fb8200" class="mr-1"
|
|
||||||
>mdi-record-circle</v-icon
|
|
||||||
>
|
|
||||||
일정 종료
|
|
||||||
</label>
|
|
||||||
</v-row>
|
|
||||||
</v-col>
|
|
||||||
<v-col :cols="4">
|
|
||||||
<!-- <DatePicker v-model="endDt" :parentPrgmId="parentPrgmId"/> -->
|
|
||||||
<div class="startpicker-container3">
|
|
||||||
<v-text-field
|
|
||||||
id="startpicker3"
|
|
||||||
ref="startpicker3"
|
|
||||||
v-model="endDt"
|
|
||||||
:class="'v-input__custom'"
|
|
||||||
:hide-details="true"
|
|
||||||
readonly
|
|
||||||
outlined
|
|
||||||
>
|
|
||||||
<template #append>
|
|
||||||
<v-icon size="20">$icoCalendar</v-icon>
|
|
||||||
</template>
|
|
||||||
<template #append-outer>
|
|
||||||
<div
|
|
||||||
ref="startpicker-container3"
|
|
||||||
id="startpicker-container3"
|
|
||||||
></div>
|
|
||||||
</template>
|
|
||||||
</v-text-field>
|
|
||||||
</div>
|
</div>
|
||||||
</v-col>
|
|
||||||
<v-col :cols="2">
|
|
||||||
<vue-numeric-input
|
<div id="pupleDiv" class="colPk pupleBg" @click="colorClick('puple')">
|
||||||
v-model="endHh"
|
<div class="inner-color"></div>
|
||||||
:min="0"
|
</div>
|
||||||
:max="23"
|
|
||||||
controls-type="updown"
|
|
||||||
class="v-input__slot"
|
<div id="greenDiv" class="colPk greenBg" @click="colorClick('green')">
|
||||||
width="100%"
|
<div class="inner-color"></div>
|
||||||
align="center"
|
</div>
|
||||||
>
|
|
||||||
</vue-numeric-input>
|
|
||||||
</v-col>
|
<div id="orangeDiv" class="colPk orangeBg" @click="colorClick('orange')">
|
||||||
<v-col :cols="1" style="text-align: center;">
|
<div class="inner-color"></div>
|
||||||
:
|
</div>
|
||||||
</v-col>
|
|
||||||
<v-col :cols="2">
|
|
||||||
<vue-numeric-input
|
<div id="pinkDiv" class="colPk pinkBg" @click="colorClick('pink')">
|
||||||
v-model="endMm"
|
<div class="inner-color"></div>
|
||||||
:min="0"
|
</div>
|
||||||
:max="59"
|
|
||||||
controls-type="updown"
|
</div>
|
||||||
class="v-input__slot"
|
</v-col>
|
||||||
width="100%"
|
</v-row>
|
||||||
align="center"
|
|
||||||
>
|
|
||||||
</vue-numeric-input>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
<v-row>
|
|
||||||
<v-col :cols="3">
|
|
||||||
<v-row class="search-box" align="center" no-gutters>
|
|
||||||
<label class="search-box-label">
|
|
||||||
<v-icon x-small color="#fb8200" class="mr-1"
|
|
||||||
>mdi-record-circle</v-icon
|
|
||||||
>
|
|
||||||
일정 제목
|
|
||||||
</label>
|
|
||||||
</v-row>
|
|
||||||
</v-col>
|
|
||||||
<v-col :cols="9">
|
|
||||||
<v-text-field
|
|
||||||
v-model="planTitle"
|
|
||||||
class="v-input__custom"
|
|
||||||
outlined
|
|
||||||
:hide-details="true"
|
|
||||||
></v-text-field>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
<v-row>
|
|
||||||
<v-col :cols="3">
|
|
||||||
<v-row class="search-box" align="center" no-gutters>
|
|
||||||
<label class="search-box-label">
|
|
||||||
<v-icon x-small color="#fb8200" class="mr-1"
|
|
||||||
>mdi-record-circle</v-icon
|
|
||||||
>
|
|
||||||
일정 상세 내용
|
|
||||||
</label>
|
|
||||||
</v-row>
|
|
||||||
</v-col>
|
|
||||||
<v-col :cols="9">
|
|
||||||
<v-textarea
|
|
||||||
v-model="planCntn"
|
|
||||||
class="v-input__custom"
|
|
||||||
outlined
|
|
||||||
:hide-details="true"
|
|
||||||
:maxlength="1000"
|
|
||||||
></v-textarea>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
<v-row>
|
|
||||||
<v-col :cols="3">
|
|
||||||
<v-row class="search-box" align="center" no-gutters>
|
|
||||||
<v-icon x-small color="#fb8200" class="mr-1"
|
|
||||||
>mdi-record-circle</v-icon
|
|
||||||
>
|
|
||||||
표시 색상
|
|
||||||
</v-row>
|
|
||||||
</v-col>
|
|
||||||
<v-col :cols="1">
|
|
||||||
<div
|
|
||||||
id="redDiv"
|
|
||||||
class="colPk redBg"
|
|
||||||
@click="colorClick('red')"
|
|
||||||
></div>
|
|
||||||
</v-col>
|
|
||||||
<v-col :cols="1">
|
|
||||||
<div
|
|
||||||
id="blueDiv"
|
|
||||||
class="colPk blueBg"
|
|
||||||
@click="colorClick('blue')"
|
|
||||||
></div>
|
|
||||||
</v-col>
|
|
||||||
<v-col :cols="1">
|
|
||||||
<div
|
|
||||||
id="pupleDiv"
|
|
||||||
class="colPk pupleBg"
|
|
||||||
@click="colorClick('puple')"
|
|
||||||
></div>
|
|
||||||
</v-col>
|
|
||||||
<v-col :cols="1">
|
|
||||||
<div
|
|
||||||
id="greenDiv"
|
|
||||||
class="colPk greenBg"
|
|
||||||
@click="colorClick('green')"
|
|
||||||
></div>
|
|
||||||
</v-col>
|
|
||||||
<v-col :cols="1">
|
|
||||||
<div
|
|
||||||
id="orangeDiv"
|
|
||||||
class="colPk orangeBg"
|
|
||||||
@click="colorClick('orange')"
|
|
||||||
></div>
|
|
||||||
</v-col>
|
|
||||||
<v-col :cols="1">
|
|
||||||
<div
|
|
||||||
id="pinkDiv"
|
|
||||||
class="colPk pinkBg"
|
|
||||||
@click="colorClick('pink')"
|
|
||||||
></div>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
</v-col>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<v-card-actions class="justify-end">
|
<v-card-actions class="justify-end">
|
||||||
<v-btn :ripple="false" @click="btnAction('save')">저장</v-btn>
|
<a-button :ripple="false" @click="btnAction('close')" class="mr-2">닫기</a-button>
|
||||||
<v-btn
|
<a-button type="primary" :ripple="false" @click="btnAction('save')" class="mr-2">저장</a-button>
|
||||||
v-show="popUpAction === 'update'"
|
<a-button v-show="popUpAction === 'update'" type="danger" ghost danger :ripple="false"
|
||||||
:ripple="false"
|
@click="btnAction('delete')">삭제</a-button>
|
||||||
@click="btnAction('delete')"
|
|
||||||
>삭제</v-btn
|
|
||||||
>
|
|
||||||
<v-btn :ripple="false" @click="btnAction('close')">닫기</v-btn>
|
|
||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-dialog>
|
</v-dialog>
|
||||||
@ -283,6 +206,7 @@ import DatePicker from '~/components/common/Datepicker';
|
|||||||
import mixinGlobal from '@/mixin/global.js';
|
import mixinGlobal from '@/mixin/global.js';
|
||||||
import Utility from '~/plugins/utility';
|
import Utility from '~/plugins/utility';
|
||||||
import TuiDatepicker from 'tui-date-picker';
|
import TuiDatepicker from 'tui-date-picker';
|
||||||
|
import SelectBoxTime from "@/components/common/select/SelectBoxTime";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
mixins: [mixinGlobal],
|
mixins: [mixinGlobal],
|
||||||
@ -310,6 +234,13 @@ export default {
|
|||||||
type: String,
|
type: String,
|
||||||
require: false,
|
require: false,
|
||||||
},
|
},
|
||||||
|
selectBoxTimeItemList: {
|
||||||
|
type: Object,
|
||||||
|
require: false,
|
||||||
|
default: () => {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
InputText,
|
InputText,
|
||||||
@ -323,6 +254,7 @@ export default {
|
|||||||
Utility,
|
Utility,
|
||||||
TuiDatepicker,
|
TuiDatepicker,
|
||||||
VueNumericInput,
|
VueNumericInput,
|
||||||
|
SelectBoxTime,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -335,8 +267,8 @@ export default {
|
|||||||
strtMm: 0,
|
strtMm: 0,
|
||||||
endHh: 1,
|
endHh: 1,
|
||||||
endMm: 0,
|
endMm: 0,
|
||||||
strtDt:null,
|
strtDt: null,
|
||||||
endDt:null,
|
endDt: null,
|
||||||
// strtDt: new Date().toISOString().substr(0, 10),
|
// strtDt: new Date().toISOString().substr(0, 10),
|
||||||
// endDt: new Date().toISOString().substr(0, 10),
|
// endDt: new Date().toISOString().substr(0, 10),
|
||||||
planColor: '',
|
planColor: '',
|
||||||
@ -344,8 +276,24 @@ export default {
|
|||||||
startDatepickerInstance3: null,
|
startDatepickerInstance3: null,
|
||||||
planSeq: '',
|
planSeq: '',
|
||||||
blocId: '',
|
blocId: '',
|
||||||
addPlanData:{
|
addPlanData: {
|
||||||
}
|
},
|
||||||
|
selectTimeValue1:
|
||||||
|
this.selectBoxTimeItemList.selectTimeValue1 != undefined
|
||||||
|
? this.selectBoxTimeItemList.selectTimeValue1
|
||||||
|
: null, // selectBoxTime에 필요한 prop
|
||||||
|
selectTimeValueList1:
|
||||||
|
this.selectBoxTimeItemList.selectTimeValueList1 != undefined
|
||||||
|
? this.selectBoxTimeItemList.selectTimeValueList1
|
||||||
|
: [], // selectBoxTime에 필요한 prop
|
||||||
|
selectTimeValue2:
|
||||||
|
this.selectBoxTimeItemList.selectTimeValue2 != undefined
|
||||||
|
? this.selectBoxTimeItemList.selectTimeValue2
|
||||||
|
: null, // selectBoxTime에 필요한 prop
|
||||||
|
selectTimeValueList2:
|
||||||
|
this.selectBoxTimeItemList.selectTimeValueList2 != undefined
|
||||||
|
? this.selectBoxTimeItemList.selectTimeValueList2
|
||||||
|
: [], // selectBoxTime에 필요한 prop
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -364,30 +312,34 @@ export default {
|
|||||||
if (val) {
|
if (val) {
|
||||||
this.openDialog();
|
this.openDialog();
|
||||||
|
|
||||||
this.$nextTick(() => {});
|
this.$nextTick(() => { });
|
||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
strtDt(val){
|
strtDt(val) {
|
||||||
console.log('strtDt : ', val);
|
// console.log('strtDt : ', val);
|
||||||
this.checkStrtAndEndDateTime('start');
|
this.checkStrtAndEndDateTime('start');
|
||||||
if(this.startDatepickerInstance3){
|
if (this.startDatepickerInstance3) {
|
||||||
this.startDatepickerInstance3.setDate(new Date(this.endDt));
|
this.startDatepickerInstance3.setDate(new Date(this.endDt));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
endDt(val){
|
endDt(val) {
|
||||||
console.log('endDt : ', val);
|
// console.log('endDt : ', val);
|
||||||
this.checkStrtAndEndDateTime('end');
|
this.checkStrtAndEndDateTime('end');
|
||||||
if(this.startDatepickerInstance){
|
if (this.startDatepickerInstance) {
|
||||||
this.startDatepickerInstance.setDate(new Date(this.strtDt));
|
this.startDatepickerInstance.setDate(new Date(this.strtDt));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
strtHh(val) {
|
strtHh(val) {
|
||||||
|
|
||||||
|
// const [hh, mm] = selectTimeValue1.split(':');
|
||||||
|
// console.log(`Hours: ${hh}, Minutes: ${mm}`);
|
||||||
|
|
||||||
console.log('strtHh : ', val);
|
console.log('strtHh : ', val);
|
||||||
this.checkStrtAndEndDateTime('start');
|
this.checkStrtAndEndDateTime('start');
|
||||||
},
|
},
|
||||||
endHh(val) {
|
endHh(val) {
|
||||||
console.log('endHh : ', val);
|
// console.log('endHh : ', val);
|
||||||
this.checkStrtAndEndDateTime('end');
|
this.checkStrtAndEndDateTime('end');
|
||||||
},
|
},
|
||||||
strtMm(val) {
|
strtMm(val) {
|
||||||
@ -396,6 +348,12 @@ export default {
|
|||||||
endMm(val) {
|
endMm(val) {
|
||||||
this.checkStrtAndEndDateTime('end');
|
this.checkStrtAndEndDateTime('end');
|
||||||
},
|
},
|
||||||
|
selectTimeValue1(val) {
|
||||||
|
this.setPageData({ selectTimeValue1: val });
|
||||||
|
},
|
||||||
|
selectTimeValue2(val) {
|
||||||
|
this.setPageData({ selectTimeValue2: val });
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations({
|
...mapMutations({
|
||||||
@ -405,18 +363,18 @@ export default {
|
|||||||
postUpdateApi: 'modules/list/postUpdateApi',
|
postUpdateApi: 'modules/list/postUpdateApi',
|
||||||
getDomain: 'modules/list/getDomain',
|
getDomain: 'modules/list/getDomain',
|
||||||
}),
|
}),
|
||||||
async checkStrtAndEndDateTime(startEndFlag){
|
async checkStrtAndEndDateTime(startEndFlag) {
|
||||||
var startDateTime = this.strtDt + ' ' + this.strtHh + ':' + this.strtMm;
|
var startDateTime = this.strtDt + ' ' + this.strtHh + ':' + this.strtMm;
|
||||||
var endDateTime = this.endDt + ' ' + this.endHh + ':' + this.endMm;
|
var endDateTime = this.endDt + ' ' + this.endHh + ':' + this.endMm;
|
||||||
|
|
||||||
startDateTime = new Date(startDateTime);
|
startDateTime = new Date(startDateTime);
|
||||||
endDateTime = new Date(endDateTime);
|
endDateTime = new Date(endDateTime);
|
||||||
|
|
||||||
if(startDateTime > endDateTime){
|
if (startDateTime > endDateTime) {
|
||||||
if(startEndFlag == 'start'){ // 시작 부분이 변경됨 -> 끝 부분 값을 변경
|
if (startEndFlag == 'start') { // 시작 부분이 변경됨 -> 끝 부분 값을 변경
|
||||||
this.endDt = this.convertDateToString(new Date(new Date().setDate(new Date(this.strtDt).getDate() + 1)));
|
this.endDt = this.convertDateToString(new Date(new Date().setDate(new Date(this.strtDt).getDate() + 1)));
|
||||||
this.startDatepickerInstance3.setDate(new Date(this.endDt));
|
this.startDatepickerInstance3.setDate(new Date(this.endDt));
|
||||||
}else if(startEndFlag == 'end'){ // 끝 부분이 변경됨 -> 시작 부분 값을 변경
|
} else if (startEndFlag == 'end') { // 끝 부분이 변경됨 -> 시작 부분 값을 변경
|
||||||
this.strtDt = this.convertDateToString(new Date(new Date().setDate(new Date(this.endDt).getDate() - 1)));
|
this.strtDt = this.convertDateToString(new Date(new Date().setDate(new Date(this.endDt).getDate() - 1)));
|
||||||
this.startDatepickerInstance.setDate(new Date(this.strtDt));
|
this.startDatepickerInstance.setDate(new Date(this.strtDt));
|
||||||
}
|
}
|
||||||
@ -432,17 +390,17 @@ export default {
|
|||||||
var dt1 = new Date();
|
var dt1 = new Date();
|
||||||
var dt2 = new Date();
|
var dt2 = new Date();
|
||||||
|
|
||||||
if(this.strtDt){
|
if (this.strtDt) {
|
||||||
dt1 = this.strtDt;
|
dt1 = this.strtDt;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this.endDt){
|
if (this.endDt) {
|
||||||
dt2 = this.endDt;
|
dt2 = this.endDt;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.startDatepickerInstance = new TuiDatepicker(startContainer, {
|
this.startDatepickerInstance = new TuiDatepicker(startContainer, {
|
||||||
// date: new Date(),
|
// date: new Date(),
|
||||||
date : dt1,
|
date: dt1,
|
||||||
language: 'ko',
|
language: 'ko',
|
||||||
type: 'date',
|
type: 'date',
|
||||||
input: {
|
input: {
|
||||||
@ -455,7 +413,7 @@ export default {
|
|||||||
|
|
||||||
this.startDatepickerInstance3 = new TuiDatepicker(startContainer3, {
|
this.startDatepickerInstance3 = new TuiDatepicker(startContainer3, {
|
||||||
// date: new Date(),
|
// date: new Date(),
|
||||||
date : dt2,
|
date: dt2,
|
||||||
language: 'ko',
|
language: 'ko',
|
||||||
type: 'date',
|
type: 'date',
|
||||||
input: {
|
input: {
|
||||||
@ -492,8 +450,8 @@ export default {
|
|||||||
this.endDt = this.convertDateToString(dt);
|
this.endDt = this.convertDateToString(dt);
|
||||||
this.startDatepickerInstance3.setDate(new Date(this.endDt));
|
this.startDatepickerInstance3.setDate(new Date(this.endDt));
|
||||||
},
|
},
|
||||||
convertDateToString(dt){
|
convertDateToString(dt) {
|
||||||
return dt.getFullYear() + '-' + String(dt.getMonth()+1).padStart(2, '0') + '-' + String(dt.getDate()).padStart(2, '0');
|
return dt.getFullYear() + '-' + String(dt.getMonth() + 1).padStart(2, '0') + '-' + String(dt.getDate()).padStart(2, '0');
|
||||||
},
|
},
|
||||||
convertStringToDateFormat(val) {
|
convertStringToDateFormat(val) {
|
||||||
var result = '';
|
var result = '';
|
||||||
@ -526,7 +484,7 @@ export default {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
async insertPlanData(){
|
async insertPlanData() {
|
||||||
var year = this.addPlanData.year;
|
var year = this.addPlanData.year;
|
||||||
var month = this.addPlanData.month;
|
var month = this.addPlanData.month;
|
||||||
var day = this.addPlanData.day;
|
var day = this.addPlanData.day;
|
||||||
@ -562,8 +520,8 @@ export default {
|
|||||||
// this.strtDt = Utility.setFormatDate(this.strtDt, 'YYYY-MM-DD');
|
// this.strtDt = Utility.setFormatDate(this.strtDt, 'YYYY-MM-DD');
|
||||||
// this.endDt = Utility.setFormatDate(this.endDt, 'YYYY-MM-DD');
|
// this.endDt = Utility.setFormatDate(this.endDt, 'YYYY-MM-DD');
|
||||||
|
|
||||||
this.strtDt = year + '-' + String(month).padStart(2, '0') + '-' + String(day).padStart(2, '0');
|
this.strtDt = year + '-' + String(month).padStart(2, '0') + '-' + String(day).padStart(2, '0');
|
||||||
this.endDt = year + '-' + String(month).padStart(2, '0') + '-' + String(day).padStart(2, '0');
|
this.endDt = year + '-' + String(month).padStart(2, '0') + '-' + String(day).padStart(2, '0');
|
||||||
},
|
},
|
||||||
async getPlanData() {
|
async getPlanData() {
|
||||||
let res = await this.postApiReturn({
|
let res = await this.postApiReturn({
|
||||||
@ -578,10 +536,8 @@ export default {
|
|||||||
let returnData = res[0];
|
let returnData = res[0];
|
||||||
this.strtDt = Utility.setFormatDate(returnData.strtDt, 'YYYY-MM-DD');
|
this.strtDt = Utility.setFormatDate(returnData.strtDt, 'YYYY-MM-DD');
|
||||||
this.endDt = Utility.setFormatDate(returnData.endDt, 'YYYY-MM-DD');
|
this.endDt = Utility.setFormatDate(returnData.endDt, 'YYYY-MM-DD');
|
||||||
this.strtHh = returnData.strtHh;
|
this.selectTimeValue1 = returnData.strtHh+' : '+ returnData.strtMm;
|
||||||
this.strtMm = returnData.strtMm;
|
this.selectTimeValue2 = returnData.endHh+' : '+ returnData.endMm;
|
||||||
this.endHh = returnData.endHh;
|
|
||||||
this.endMm = returnData.endMm;
|
|
||||||
this.planTitle = returnData.planTitle;
|
this.planTitle = returnData.planTitle;
|
||||||
this.planCntn = returnData.planCntn;
|
this.planCntn = returnData.planCntn;
|
||||||
this.planColor = returnData.planColor;
|
this.planColor = returnData.planColor;
|
||||||
@ -598,10 +554,8 @@ export default {
|
|||||||
if (
|
if (
|
||||||
this.strtDt === '' ||
|
this.strtDt === '' ||
|
||||||
this.endDt === '' ||
|
this.endDt === '' ||
|
||||||
this.strtHh === '' ||
|
this.selectTimeValue1 === '' ||
|
||||||
this.strtMm === '' ||
|
this.selectTimeValue2 === '' ||
|
||||||
this.endHh === '' ||
|
|
||||||
this.endMm === '' ||
|
|
||||||
this.planTitle === '' ||
|
this.planTitle === '' ||
|
||||||
this.planCntn === '' ||
|
this.planCntn === '' ||
|
||||||
this.planColor === ''
|
this.planColor === ''
|
||||||
@ -615,10 +569,8 @@ export default {
|
|||||||
if (
|
if (
|
||||||
this.strtDt == '' ||
|
this.strtDt == '' ||
|
||||||
this.endDt == '' ||
|
this.endDt == '' ||
|
||||||
this.strtHh == '' ||
|
this.selectTimeValue1 === '' ||
|
||||||
this.strtMm == '' ||
|
this.selectTimeValue2 === '' ||
|
||||||
this.endHh == '' ||
|
|
||||||
this.endMm == '' ||
|
|
||||||
this.planTitle == '' ||
|
this.planTitle == '' ||
|
||||||
this.planCntn == '' ||
|
this.planCntn == '' ||
|
||||||
this.planColor == ''
|
this.planColor == ''
|
||||||
@ -638,13 +590,17 @@ export default {
|
|||||||
//console.log(this);
|
//console.log(this);
|
||||||
},
|
},
|
||||||
async insertDetail() {
|
async insertDetail() {
|
||||||
|
|
||||||
|
const [strtHh, strtMm] = this.selectTimeValue1 ? this.selectTimeValue1.split(':') : '00:00'.split(':');
|
||||||
|
const [endHh, endMm] = this.selectTimeValue2 ? this.selectTimeValue2.split(':') : '01:00'.split(':');
|
||||||
|
|
||||||
var params = {
|
var params = {
|
||||||
strtDt: this.strtDt,
|
strtDt: this.strtDt,
|
||||||
endDt: this.endDt,
|
endDt: this.endDt,
|
||||||
strtHh: this.strtHh.toString(),
|
strtHh: strtHh.trim().toString(),
|
||||||
strtMm: this.strtMm.toString(),
|
strtMm: strtMm.trim().toString(),
|
||||||
endHh: this.endHh.toString(),
|
endHh: endHh.trim().toString(),
|
||||||
endMm: this.endMm.toString(),
|
endMm: endMm.trim().toString(),
|
||||||
blocId: this.blocId,
|
blocId: this.blocId,
|
||||||
planTitle: this.planTitle,
|
planTitle: this.planTitle,
|
||||||
planCntn: this.planCntn,
|
planCntn: this.planCntn,
|
||||||
@ -665,13 +621,16 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
async updateDetail() {
|
async updateDetail() {
|
||||||
|
const [strtHh, strtMm] = this.selectTimeValue1 ? this.selectTimeValue1.split(':') : '00:00'.split(':');
|
||||||
|
const [endHh, endMm] = this.selectTimeValue2 ? this.selectTimeValue2.split(':') : '01:00'.split(':');
|
||||||
|
|
||||||
var params = {
|
var params = {
|
||||||
strtDt: this.strtDt.substr(0, 10),
|
strtDt: this.strtDt.substr(0, 10),
|
||||||
endDt: this.endDt.substr(0, 10),
|
endDt: this.endDt.substr(0, 10),
|
||||||
strtHh: this.strtHh.toString(),
|
strtHh: strtHh.trim().toString(),
|
||||||
strtMm: this.strtMm.toString(),
|
strtMm: strtMm.trim().toString(),
|
||||||
endHh: this.endHh.toString(),
|
endHh: endHh.trim().toString(),
|
||||||
endMm: this.endMm.toString(),
|
endMm: endMm.trim().toString(),
|
||||||
planTitle: this.planTitle,
|
planTitle: this.planTitle,
|
||||||
planCntn: this.planCntn,
|
planCntn: this.planCntn,
|
||||||
planColor: this.planColor,
|
planColor: this.planColor,
|
||||||
@ -786,100 +745,116 @@ export default {
|
|||||||
.v-card__actions {
|
.v-card__actions {
|
||||||
padding-bottom: 30px !important;
|
padding-bottom: 30px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.inner-color {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
.colPk {
|
.colPk {
|
||||||
width: 25px;
|
width: 28px;
|
||||||
height: 25px;
|
height: 28px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-radius: 5px 5px;
|
border-radius: 6px 6px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
padding: 4px
|
||||||
}
|
}
|
||||||
|
|
||||||
.colPkSelect {
|
.colPkSelect {
|
||||||
border: 2px solid;
|
border: 1px solid #00000073;
|
||||||
}
|
}
|
||||||
.redBg {
|
|
||||||
|
.redBg .inner-color {
|
||||||
background-color: rgba(229, 62, 62, var(--bg-opacity));
|
background-color: rgba(229, 62, 62, var(--bg-opacity));
|
||||||
background-color: #e53e3e;
|
background-color: #FF4D4F;
|
||||||
}
|
}
|
||||||
.blueBg {
|
|
||||||
|
.blueBg .inner-color {
|
||||||
background-color: rgba(66, 153, 225, var(--bg-opacity));
|
background-color: rgba(66, 153, 225, var(--bg-opacity));
|
||||||
background-color: #4299e1;
|
background-color: #597EF7;
|
||||||
}
|
}
|
||||||
.pupleBg {
|
|
||||||
|
.pupleBg .inner-color {
|
||||||
background-color: rgba(102, 126, 234, var(--bg-opacity));
|
background-color: rgba(102, 126, 234, var(--bg-opacity));
|
||||||
background-color: #667eea;
|
background-color: #9254DE;
|
||||||
}
|
}
|
||||||
.greenBg {
|
|
||||||
|
.greenBg .inner-color {
|
||||||
background-color: rgba(56, 178, 172, var(--bg-opacity));
|
background-color: rgba(56, 178, 172, var(--bg-opacity));
|
||||||
background-color: #38b2ac;
|
background-color: #73D13D;
|
||||||
}
|
}
|
||||||
.orangeBg {
|
|
||||||
|
.orangeBg .inner-color {
|
||||||
background-color: rgba(237, 137, 54, var(--bg-opacity));
|
background-color: rgba(237, 137, 54, var(--bg-opacity));
|
||||||
background-color: #ed8936;
|
background-color: #FFA940;
|
||||||
}
|
}
|
||||||
.pinkBg {
|
|
||||||
|
.pinkBg .inner-color {
|
||||||
background-color: rgba(237, 100, 166, var(--bg-opacity));
|
background-color: rgba(237, 100, 166, var(--bg-opacity));
|
||||||
background-color: #ed64a6;
|
background-color: #F759AB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.startpicker-container2 {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
.v-input {
|
|
||||||
.v-input__append-outer {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-left: 0;
|
|
||||||
|
|
||||||
#startpicker-container2,
|
|
||||||
#endpicker-container2 {
|
|
||||||
width: 100%;
|
|
||||||
position: absolute;
|
|
||||||
top: 36px;
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.startpicker-container3 {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
.v-input {
|
|
||||||
.v-input__append-outer {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-left: 0;
|
|
||||||
|
|
||||||
#startpicker-container3,
|
|
||||||
#endpicker-container3 {
|
|
||||||
width: 100%;
|
|
||||||
position: absolute;
|
|
||||||
top: 36px;
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-input__custom {
|
.v-input__custom {
|
||||||
flex: 0 0 auto;
|
|
||||||
|
|
||||||
&.half {
|
&.half {
|
||||||
width: calc(50% - 20px);
|
width: calc(50% - 20px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep {
|
::v-deep {
|
||||||
.tui-timepicker-row {
|
.tui-timepicker-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
background-color: #edf4fc;
|
background-color: #edf4fc;
|
||||||
|
|
||||||
.tui-timepicker-column.tui-timepicker-colon {
|
.tui-timepicker-column.tui-timepicker-colon {
|
||||||
color: #000 !important;
|
color: #000 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.startpicker-container2 {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.v-input {
|
||||||
|
.v-input__append-outer {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
|
||||||
|
#startpicker-container2,
|
||||||
|
#endpicker-container2 {
|
||||||
|
width: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 36px;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.startpicker-container3 {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.v-input {
|
||||||
|
.v-input__append-outer {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
|
||||||
|
#startpicker-container3,
|
||||||
|
#endpicker-container3 {
|
||||||
|
width: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 36px;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -253,7 +253,7 @@ export default {
|
|||||||
readObjid: this.searchParam.energyCd,
|
readObjid: this.searchParam.energyCd,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
console.log('getTreeData : ', res);
|
// console.log('getTreeData : ', res);
|
||||||
// this.treeData = res;
|
// this.treeData = res;
|
||||||
// const ROOT = res[0].plcCd;
|
// const ROOT = res[0].plcCd;
|
||||||
const setTreeData = await this.setTree({
|
const setTreeData = await this.setTree({
|
||||||
@ -327,7 +327,7 @@ export default {
|
|||||||
// 공정/설비 트리 row 클릭이벤트
|
// 공정/설비 트리 row 클릭이벤트
|
||||||
async getRowData(data) {
|
async getRowData(data) {
|
||||||
// console.log("getRowData 시작...");
|
// console.log("getRowData 시작...");
|
||||||
console.log('data', data);
|
// console.log('data', data);
|
||||||
this.activeRowData = data;
|
this.activeRowData = data;
|
||||||
// if(data.enableFg == 1){
|
// if(data.enableFg == 1){
|
||||||
// this.activeRowData = data;
|
// this.activeRowData = data;
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-row class="search-box" align="center" >
|
<v-row class="search-box" align="center">
|
||||||
<!-- <v-col v-if="label" cols="2"> -->
|
<!-- <v-col v-if="label" cols="2"> -->
|
||||||
<v-col v-if="item.label" :cols="item.labelCols" class="py-0">
|
<v-col v-if="item.label" :cols="item.labelCols" class="py-0">
|
||||||
<label for="" class="search-box-label">
|
<label for="" class="search-box-label">
|
||||||
@ -37,12 +37,11 @@
|
|||||||
<v-row align="center">
|
<v-row align="center">
|
||||||
<v-col v-if="label" cols="12" class="py-0">
|
<v-col v-if="label" cols="12" class="py-0">
|
||||||
<label for="" class="search-box-label">
|
<label for="" class="search-box-label">
|
||||||
<v-icon small
|
<v-icon small :class="['mr-1', 'icon-blue']">$icoBulletPoint</v-icon>
|
||||||
:class="['mr-1', 'icon-blue']">$icoBulletPoint</v-icon>
|
|
||||||
{{ item.label }}
|
{{ item.label }}
|
||||||
</label>
|
</label>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="label ? 6 : ''" class="py-0">
|
<v-col :cols="label ? 8 : ''" class="py-0">
|
||||||
<!-- :value="textfield" -->
|
<!-- :value="textfield" -->
|
||||||
<v-text-field append-icon="" class="v-input__custom" outlined :hide-details="true"
|
<v-text-field append-icon="" class="v-input__custom" outlined :hide-details="true"
|
||||||
v-model="searchWord" @keyup.enter="typeEnterKey"><template v-slot:append>
|
v-model="searchWord" @keyup.enter="typeEnterKey"><template v-slot:append>
|
||||||
@ -52,13 +51,10 @@
|
|||||||
|
|
||||||
</template></v-text-field>
|
</template></v-text-field>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-spacer></v-spacer>
|
<!-- <v-spacer></v-spacer> -->
|
||||||
<v-col cols="3" class="text-right">
|
<v-col cols="2" class="text-right">
|
||||||
<v-btn :ripple="false" icon tile @click="btnTreeExpand()">
|
<a-button icon="search" type="primary" @click="search()" class="search-button">조회</a-button>
|
||||||
<!-- {{ treeExpand }} -->
|
|
||||||
<v-icon size="30"
|
|
||||||
v-text="treeExpandAll ? 'mdi-chevron-up' : 'mdi-chevron-down'"></v-icon>
|
|
||||||
</v-btn>
|
|
||||||
<!-- <v-btn color="primary" dark>펼치기</v-btn> -->
|
<!-- <v-btn color="primary" dark>펼치기</v-btn> -->
|
||||||
<!-- <v-btn color="primary" dark>접기</v-btn> -->
|
<!-- <v-btn color="primary" dark>접기</v-btn> -->
|
||||||
<!-- <v-btn :ripple="false">초기화</v-btn> -->
|
<!-- <v-btn :ripple="false">초기화</v-btn> -->
|
||||||
@ -66,8 +62,12 @@
|
|||||||
<v-btn v-if="!searchParam.isMulti" :ripple="false" @click="search()">검색</v-btn> -->
|
<v-btn v-if="!searchParam.isMulti" :ripple="false" @click="search()">검색</v-btn> -->
|
||||||
<!-- as-is 롤 봐도 초기화가 하는 기능을 모르겠음.. -->
|
<!-- as-is 롤 봐도 초기화가 하는 기능을 모르겠음.. -->
|
||||||
</v-col>
|
</v-col>
|
||||||
|
<v-col cols="2" class="text-right"><a-button class="expand-btn" :ripple="false" @click="btnTreeExpand()">
|
||||||
|
<v-icon small>$icoExpandAlt</v-icon>
|
||||||
|
Expand All
|
||||||
|
</a-button></v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
<!-- <v-btn color="primary" dark @click="btnTreeExpand()">{{
|
<!-- <v-btn color="primary" dark @click="btnTreeExpand()">{{
|
||||||
treeExpand
|
treeExpand
|
||||||
}}</v-btn> -->
|
}}</v-btn> -->
|
||||||
@ -78,7 +78,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
<div ref="treeGridParent" style="height: 500px">
|
<div ref="treeGridParent" style="height: 450px">
|
||||||
<component :ref="'treeGrid' + parentPrgmId" :is="loadGrid && dialog ? 'Grid' : null"
|
<component :ref="'treeGrid' + parentPrgmId" :is="loadGrid && dialog ? 'Grid' : null"
|
||||||
:gridName="gridNameTree" :dataPath="searchParam.modalData.selectReadObjListTree"
|
:gridName="gridNameTree" :dataPath="searchParam.modalData.selectReadObjListTree"
|
||||||
:parentPrgmId="parentPrgmId" :bindingData="bindingData" @getRowsData="getRowData"
|
:parentPrgmId="parentPrgmId" :bindingData="bindingData" @getRowsData="getRowData"
|
||||||
@ -89,10 +89,10 @@
|
|||||||
:tree-data="ftnPlcListTreeData"
|
:tree-data="ftnPlcListTreeData"
|
||||||
/> -->
|
/> -->
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
<v-divider></v-divider>
|
|
||||||
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
|
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
|
||||||
<a-button :ripple="false" @click="setUpdate()" class="mr-2">확인</a-button>
|
<a-button :ripple="false" @click="dialog = false" class="mr-2">닫기</a-button>
|
||||||
<a-button :ripple="false" type="primary" @click="dialog = false" class="mr-2">닫기</a-button>
|
<a-button :ripple="false" type="primary" @click="setUpdate($event)">확인</a-button>
|
||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-dialog>
|
</v-dialog>
|
||||||
@ -155,7 +155,7 @@ export default {
|
|||||||
|
|
||||||
myModalKey: 'selectReadObjListTree',
|
myModalKey: 'selectReadObjListTree',
|
||||||
gridNameTree: 'treeGrid',
|
gridNameTree: 'treeGrid',
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
|
|
||||||
dialog: false,
|
dialog: false,
|
||||||
treeData: [], // 리턴받은 원본 트리 데이터
|
treeData: [], // 리턴받은 원본 트리 데이터
|
||||||
@ -268,7 +268,7 @@ export default {
|
|||||||
header: '',
|
header: '',
|
||||||
name: '',
|
name: '',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 50,
|
width: 20,
|
||||||
formatter: (props) => {
|
formatter: (props) => {
|
||||||
return `<label class="custom-radio">
|
return `<label class="custom-radio">
|
||||||
<span class="radio-mark"></span>
|
<span class="radio-mark"></span>
|
||||||
@ -278,10 +278,10 @@ export default {
|
|||||||
{
|
{
|
||||||
header: '검침개소명',
|
header: '검침개소명',
|
||||||
name: 'readPlcNm',
|
name: 'readPlcNm',
|
||||||
width: 370,
|
width: 500,
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{ header: '검침개소', name: 'name', align: 'center' },
|
{ header: '검침개소', name: 'name', align: 'left', width: 200 },
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -289,73 +289,34 @@ export default {
|
|||||||
async getTreeData() {
|
async getTreeData() {
|
||||||
this.loadGrid = false;
|
this.loadGrid = false;
|
||||||
|
|
||||||
// const res = await this.postApiReturn({
|
const res = await this.postApiReturn({
|
||||||
// apiKey: 'selectReadPlcBaseInfo',
|
apiKey: 'selectReadPlcBaseInfo',
|
||||||
// resKey: 'readPlcBaseInfoData',
|
resKey: 'readPlcBaseInfoData',
|
||||||
// sendParam: {
|
sendParam: {
|
||||||
// blocId:
|
blocId:
|
||||||
// this.searchParam.blocMstrList.length > 0
|
this.searchParam.blocMstrList.length > 0
|
||||||
// ? this.searchParam.blocMstrList[this.searchParam.blocId].blocId
|
? this.searchParam.blocMstrList[this.searchParam.blocId].blocId
|
||||||
// : this.searchParam.blocId, //"BL0001",
|
: this.searchParam.blocId, //"BL0001",
|
||||||
// // readObjId: this.searchParam.readObj, // "MTT00001" // 전력 코드 고정
|
// readObjId: this.searchParam.readObj, // "MTT00001" // 전력 코드 고정
|
||||||
// readObjId: this.searchParam.searchReadObj, // "MTT00001" // 전력 코드 고정
|
readObjId: this.searchParam.searchReadObj, // "MTT00001" // 전력 코드 고정
|
||||||
|
|
||||||
// useFg: '1',
|
useFg: '1',
|
||||||
// readPlcNmLike: this.searchWord,
|
readPlcNmLike: this.searchWord,
|
||||||
// },
|
|
||||||
// });
|
|
||||||
|
|
||||||
const treeData = [
|
|
||||||
{
|
|
||||||
readPlcNm: '서울 본사',
|
|
||||||
name: '본사',
|
|
||||||
_children: [
|
|
||||||
{
|
|
||||||
readPlcNm: '서울 본사 - 1층',
|
|
||||||
name: '1층',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
readPlcNm: '서울 본사 - 2층',
|
|
||||||
name: '2층',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
{
|
});
|
||||||
readPlcNm: '부산 지사',
|
|
||||||
name: '지사',
|
|
||||||
_children: [
|
|
||||||
{
|
|
||||||
readPlcNm: '부산 지사 - A동',
|
|
||||||
name: 'A동',
|
|
||||||
_children: [
|
|
||||||
{
|
|
||||||
readPlcNm: '부산 지사 - A동 1층',
|
|
||||||
name: '1층',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
readPlcNm: '부산 지사 - A동 2층',
|
|
||||||
name: '2층',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
readPlcNm: '부산 지사 - B동',
|
|
||||||
name: 'B동',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
readPlcNm: '대전 창고',
|
|
||||||
name: '창고',
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
|
// console.log("treeData", res)
|
||||||
// // console.log("treeData", res)
|
|
||||||
let myOptionsTree = {
|
let myOptionsTree = {
|
||||||
|
columnOptions: {
|
||||||
|
resizable: true,
|
||||||
|
},
|
||||||
treeColumnOptions: {
|
treeColumnOptions: {
|
||||||
name: 'readPlcNm',
|
name: 'readPlcNm',
|
||||||
},
|
},
|
||||||
|
header: {
|
||||||
|
height: 37,
|
||||||
|
},
|
||||||
|
rowHeight: 'auto',
|
||||||
};
|
};
|
||||||
if (this.searchParam.isMulti) {
|
if (this.searchParam.isMulti) {
|
||||||
myOptionsTree['rowHeaders'] = [{ type: 'checkbox' }];
|
myOptionsTree['rowHeaders'] = [{ type: 'checkbox' }];
|
||||||
@ -373,26 +334,26 @@ export default {
|
|||||||
|
|
||||||
// this.treeData = res;
|
// this.treeData = res;
|
||||||
// const ROOT = res[0].plcCd;
|
// const ROOT = res[0].plcCd;
|
||||||
// const setTreeData = await this.setTree({
|
const setTreeData = await this.setTree({
|
||||||
// gridKey: this.gridNameTree,
|
gridKey: this.gridNameTree,
|
||||||
// treeKey: 'READ_PLC_ID',
|
treeKey: 'READ_PLC_ID',
|
||||||
// value: res.map(item => ({
|
value: res.map(item => ({
|
||||||
// ...item,
|
...item,
|
||||||
// rowStat: null,
|
rowStat: null,
|
||||||
// readPlcId: item.readPlcId,
|
readPlcId: item.readPlcId,
|
||||||
// readPlcIdNm: item.readPlcId,
|
readPlcIdNm: item.readPlcId,
|
||||||
// upReadPlcId:
|
upReadPlcId:
|
||||||
// item.upReadPlcId == null || item.upReadPlcId == ''
|
item.upReadPlcId == null || item.upReadPlcId == ''
|
||||||
// ? ''
|
? ''
|
||||||
// : item.upReadPlcId,
|
: item.upReadPlcId,
|
||||||
// upReadPlcNm:
|
upReadPlcNm:
|
||||||
// item.upReadPlcNm == null || item.upReadPlcNm == ''
|
item.upReadPlcNm == null || item.upReadPlcNm == ''
|
||||||
// ? ''
|
? ''
|
||||||
// : item.upReadPlcNm,
|
: item.upReadPlcNm,
|
||||||
// blocId: item.blocId,
|
blocId: item.blocId,
|
||||||
// useFg: item.useFg === '1' ? true : false,
|
useFg: item.useFg === '1' ? true : false,
|
||||||
// })),
|
})),
|
||||||
// });
|
});
|
||||||
// this.treeData = setTreeData;
|
// this.treeData = setTreeData;
|
||||||
|
|
||||||
|
|
||||||
@ -400,7 +361,7 @@ export default {
|
|||||||
modalKey: this.myModalKey,
|
modalKey: this.myModalKey,
|
||||||
gridKey: this.gridNameTree,
|
gridKey: this.gridNameTree,
|
||||||
modalDataKey: this.modalDataKey,
|
modalDataKey: this.modalDataKey,
|
||||||
value: treeData,
|
value: setTreeData.ROOT || [],
|
||||||
});
|
});
|
||||||
this.loadGrid = true;
|
this.loadGrid = true;
|
||||||
|
|
||||||
@ -540,22 +501,4 @@ const selectReadObjListTree = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@each $theme in dark, light {
|
|
||||||
.v-application.#{$theme}-mode {
|
|
||||||
.v-dialog {
|
|
||||||
.v-card {
|
|
||||||
&__title {
|
|
||||||
|
|
||||||
@if $theme ==dark {
|
|
||||||
background-color: #2d3355;
|
|
||||||
|
|
||||||
.v-btn {
|
|
||||||
background-color: #2d3355;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -2,22 +2,15 @@
|
|||||||
<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="" outlined
|
||||||
:hide-details="true" :class="['v-select__custom', customClass]">
|
:hide-details="true" :class="['v-select__custom', customClass]">
|
||||||
<template v-slot:append>
|
<template v-slot:append><v-icon>$icoChevronDown</v-icon></template>
|
||||||
<v-icon>$icoChevronDown</v-icon>
|
|
||||||
</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>
|
||||||
|
|||||||
@ -22,11 +22,11 @@
|
|||||||
outlined
|
outlined
|
||||||
:menu-props="{ auto: true, offsetY: true }"
|
:menu-props="{ auto: true, offsetY: true }"
|
||||||
:hide-details="true"
|
:hide-details="true"
|
||||||
:class="'v-select__custom select-large'"
|
:class="'v-select__custom'"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
:readonly="readonly"
|
:readonly="readonly"
|
||||||
@click="setDatepickerHide"
|
@click="setDatepickerHide"
|
||||||
style="width: 170px; border-radius: 6px !important"
|
style="min-width: 170px;"
|
||||||
>
|
>
|
||||||
<template v-slot:append>
|
<template v-slot:append>
|
||||||
<a-icon
|
<a-icon
|
||||||
|
|||||||
@ -70,7 +70,7 @@ export default {
|
|||||||
return this.searchParam[this.parentPrgmId][this.enrgCd];
|
return this.searchParam[this.parentPrgmId][this.enrgCd];
|
||||||
},
|
},
|
||||||
set(value) {
|
set(value) {
|
||||||
console.log('value : ', value);
|
// console.log('value : ', value);
|
||||||
return this.setPageData({ [this.enrgCd]: value });
|
return this.setPageData({ [this.enrgCd]: value });
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -270,8 +270,8 @@ export default {
|
|||||||
filteredData: [],
|
filteredData: [],
|
||||||
rowSelection: {
|
rowSelection: {
|
||||||
onChange: (selectedRowKeys, selectedRows) => {
|
onChange: (selectedRowKeys, selectedRows) => {
|
||||||
console.log('Selected Row Keys:', selectedRowKeys);
|
// console.log('Selected Row Keys:', selectedRowKeys);
|
||||||
console.log('Selected Rows:', selectedRows);
|
// console.log('Selected Rows:', selectedRows);
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
6
components/icons/icoExpandAlt.vue
Normal file
6
components/icons/icoExpandAlt.vue
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<template>
|
||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" class="v-icon" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M14.1248 1.71225L10.7462 2.13189C10.6283 2.14617 10.5801 2.28903 10.6623 2.37296L11.6391 3.34975L8.89799 6.09082C8.8714 6.11767 8.85649 6.15392 8.85649 6.19171C8.85649 6.2295 8.8714 6.26575 8.89799 6.2926L9.70335 7.09796C9.7587 7.15332 9.84977 7.15332 9.90513 7.09796L12.648 4.3551L13.6248 5.33189C13.6436 5.35072 13.6674 5.36387 13.6934 5.36981C13.7193 5.37576 13.7465 5.37427 13.7716 5.36551C13.7968 5.35675 13.819 5.34107 13.8356 5.32028C13.8523 5.29949 13.8628 5.27443 13.8658 5.24796L14.2837 1.87117C14.2867 1.84961 14.2846 1.82765 14.2776 1.80702C14.2707 1.78639 14.2591 1.76765 14.2437 1.75226C14.2283 1.73687 14.2096 1.72524 14.1889 1.7183C14.1683 1.71136 14.1463 1.70929 14.1248 1.71225ZM6.2962 8.89439C6.26935 8.8678 6.23309 8.85289 6.19531 8.85289C6.15752 8.85289 6.12127 8.8678 6.09442 8.89439L3.35334 11.6372L2.37656 10.6605C2.35771 10.6416 2.33394 10.6285 2.30797 10.6225C2.282 10.6166 2.25487 10.6181 2.22971 10.6268C2.20455 10.6356 2.18236 10.6513 2.16569 10.6721C2.14903 10.6929 2.13856 10.7179 2.13549 10.7444L1.71584 14.1212C1.70513 14.214 1.78192 14.2908 1.87477 14.2801L5.25335 13.8605C5.3712 13.8462 5.41942 13.7033 5.33727 13.6194L4.36049 12.6426L7.10334 9.89974C7.1587 9.84439 7.1587 9.75332 7.10334 9.69796L6.2962 8.89439Z" />
|
||||||
|
</svg>
|
||||||
|
</template>
|
||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="pb-5 h100">
|
<div class="pb-5 h100">
|
||||||
<div class="d-flex align-center justify-space-between">
|
<div class="d-flex align-center justify-space-between">
|
||||||
<span class="text-h6">공통그룹코드</span>
|
<span class="grid-title">공통그룹코드</span>
|
||||||
<div>
|
<div>
|
||||||
<Buttons
|
<Buttons
|
||||||
:parentPrgmId="parentPrgmId"
|
:parentPrgmId="parentPrgmId"
|
||||||
@ -126,7 +126,7 @@ export default {
|
|||||||
{
|
{
|
||||||
header: '사용여부',
|
header: '사용여부',
|
||||||
name: 'useFg',
|
name: 'useFg',
|
||||||
align: 'center',
|
align: 'left',
|
||||||
formatter({ value }) {
|
formatter({ value }) {
|
||||||
const newValue = _this.pageData.useFgList.filter(
|
const newValue = _this.pageData.useFgList.filter(
|
||||||
item => item.commCd == value,
|
item => item.commCd == value,
|
||||||
|
|||||||
@ -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.loadGrid = true;
|
this.$nextTick(() => {
|
||||||
|
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,
|
||||||
@ -225,7 +213,7 @@ export default {
|
|||||||
let dataArr = [];
|
let dataArr = [];
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case 'add':
|
case 'add':
|
||||||
console.log('add this.pageData : '); // , this.pageData);
|
// console.log('add this.pageData : '); // , this.pageData);
|
||||||
const defaultRow = {
|
const defaultRow = {
|
||||||
dataSetId: this.pageData.dataSetId,
|
dataSetId: this.pageData.dataSetId,
|
||||||
dataSetNm: this.pageData.dataSetNm,
|
dataSetNm: this.pageData.dataSetNm,
|
||||||
@ -308,7 +296,7 @@ export default {
|
|||||||
comId: this.selectedComId,
|
comId: this.selectedComId,
|
||||||
dataSetId: this.selectedDataSetId,
|
dataSetId: this.selectedDataSetId,
|
||||||
};
|
};
|
||||||
console.log('data : ', data);
|
// console.log('data : ', data);
|
||||||
this.$emit('jamoviClickEvent', 'view1', data);
|
this.$emit('jamoviClickEvent', 'view1', data);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -20,7 +20,6 @@
|
|||||||
:editorGrid="true"
|
:editorGrid="true"
|
||||||
:innerTabGridInfo="innerTabGridInfo"
|
:innerTabGridInfo="innerTabGridInfo"
|
||||||
@getRowsData="getRowData"
|
@getRowsData="getRowData"
|
||||||
:dataPath="dataPathMock"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -54,22 +53,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: 'readObjId', align: 'left' },
|
|
||||||
{ header: 'Data 구분', name: 'readObjNm', align: 'left' },
|
|
||||||
{ header: '추가 정보 값', name: 'readObjKind', align: 'left' },
|
|
||||||
],
|
|
||||||
data: dataPathDataExample,
|
|
||||||
defaultRow: dataPathDataExample,
|
|
||||||
option: {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -444,22 +431,4 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const dataPathDataExample = [
|
|
||||||
{
|
|
||||||
readObjId: 'OBJ001',
|
|
||||||
readObjNm: '서울 본사',
|
|
||||||
readObjKind: 'TYPE01',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
readObjId: 'OBJ002',
|
|
||||||
readObjNm: '부산 지사',
|
|
||||||
readObjKind: 'TYPE02',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
readObjId: 'OBJ003',
|
|
||||||
readObjNm: '대전 공장',
|
|
||||||
readObjKind: 'TYPE03',
|
|
||||||
}
|
|
||||||
]
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -19,7 +19,6 @@
|
|||||||
:parentPrgmId="parentPrgmId"
|
:parentPrgmId="parentPrgmId"
|
||||||
@getRowsData="getRowData"
|
@getRowsData="getRowData"
|
||||||
:innerTabGridInfo="innerTabGridInfo"
|
:innerTabGridInfo="innerTabGridInfo"
|
||||||
:dataPath="dataPathMock"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@ -60,24 +59,11 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
gridName: 'rowEccIaoGrid',
|
gridName: 'rowEccIaoGrid',
|
||||||
inputList_emMapDiv: [],
|
inputList_emMapDiv: [],
|
||||||
inputList_cmInOut: [],
|
inputList_cmInOut: [],
|
||||||
detailList: myDetail,
|
detailList: myDetail,
|
||||||
dataPathMock: {
|
|
||||||
"rowEccIaoGrid": {
|
|
||||||
column: [
|
|
||||||
{ header: '검침 대상 ID', name: 'readObjId', align: 'left' },
|
|
||||||
{ header: '검침 대상 명', name: 'readObjNm', align: 'left' },
|
|
||||||
{ header: '검침 대상 유형', name: 'readObjKind', align: 'left' },
|
|
||||||
{ header: '그룹', name: 'grpCd', align: 'left' },
|
|
||||||
],
|
|
||||||
data: dataPathDataExample,
|
|
||||||
defaultRow: dataPathDataExample,
|
|
||||||
option: {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -516,12 +502,4 @@ const myDetail = [
|
|||||||
iconShow: true,
|
iconShow: true,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
const dataPathDataExample = [
|
|
||||||
{
|
|
||||||
readObjId: 'OBJ001',
|
|
||||||
readObjNm: '서울 본사',
|
|
||||||
readObjKind: 'TYPE01',
|
|
||||||
grpCd: 'GRP01',
|
|
||||||
},
|
|
||||||
]
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<v-row>
|
<v-row class="mt-3">
|
||||||
<v-col :cols="6" class="py-2 pr-4">
|
<v-col :cols="6" class="py-2 pr-4">
|
||||||
<InputText ref="effcIdxId" :parentPrgmId="parentPrgmId" label="효율지표 ID" valueNm="effcIdxId"
|
<InputText ref="effcIdxId" :parentPrgmId="parentPrgmId" label="효율지표 ID" valueNm="effcIdxId"
|
||||||
:required="false" :readonly="true" :textCols="12" :labelCols="12" />
|
:required="false" :readonly="true" :textCols="12" :labelCols="12" />
|
||||||
@ -15,7 +15,7 @@
|
|||||||
@update:propsValue="selectValue01 = $event" />
|
@update:propsValue="selectValue01 = $event" />
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<div class="d-flex align-center justify-space-between pa-5">
|
<div class="d-flex align-center justify-space-between pt-3 py-2">
|
||||||
<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="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
||||||
<component v-show="false" ref="EgrpPysclQtyPop" :is="'EgrpPysclQtyPop'" :parentPrgmId="parentPrgmId"
|
<component v-show="false" ref="EgrpPysclQtyPop" :is="'EgrpPysclQtyPop'" :parentPrgmId="parentPrgmId"
|
||||||
@ -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,
|
||||||
|
|||||||
@ -1,10 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div
|
<div class="d-flex justify-space-between align-center my-5" >
|
||||||
class="d-flex justify-space-between align-center"
|
<span class="txt custom-subtitle-tab">설비 추가 정보</span>
|
||||||
style="height: 80px;"
|
|
||||||
>
|
|
||||||
<span class="txt custom-title-4-new">설비 추가 정보</span>
|
|
||||||
<Buttons
|
<Buttons
|
||||||
:parentPrgmId="parentPrgmId"
|
:parentPrgmId="parentPrgmId"
|
||||||
:bindingData="gridName"
|
:bindingData="gridName"
|
||||||
@ -20,7 +17,6 @@
|
|||||||
:editorGrid="true"
|
:editorGrid="true"
|
||||||
:innerTabGridInfo="innerTabGridInfo"
|
:innerTabGridInfo="innerTabGridInfo"
|
||||||
@getRowsData="getRowData"
|
@getRowsData="getRowData"
|
||||||
:dataPath="dataPathMock"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -52,7 +48,7 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
gridName: 'rowDetailGrid',
|
gridName: 'rowDetailGrid',
|
||||||
rowKey: null,
|
rowKey: null,
|
||||||
edtingFinishFlag: 'Y',
|
edtingFinishFlag: 'Y',
|
||||||
@ -343,7 +339,9 @@ export default {
|
|||||||
value: myColumns,
|
value: myColumns,
|
||||||
});
|
});
|
||||||
|
|
||||||
this.loadGrid = true;
|
this.$nextTick(() => {
|
||||||
|
this.loadGrid = true;
|
||||||
|
});
|
||||||
},
|
},
|
||||||
async btnActions(action) {
|
async btnActions(action) {
|
||||||
let dataArr = [];
|
let dataArr = [];
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div class="d-flex justify-space-between align-center" style="height: 80px;">
|
<div class="d-flex justify-space-between align-center my-5" >
|
||||||
<span class="txt custom-title-4-new">설비 상수 정보</span>
|
<span class="txt custom-subtitle-tab">설비 상수 정보</span>
|
||||||
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
||||||
</div>
|
</div>
|
||||||
<div ref="gridParent" style="min-height: calc(100vh - 800px);">
|
<div ref="gridParent" style="min-height: calc(100vh - 800px);">
|
||||||
<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 style="min-height: calc(100vh - 900px);" class="mt-4">
|
<div style="min-height: calc(100vh - 900px);" class="mt-4">
|
||||||
<component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName" :detailList="detailList"
|
<component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName" :detailList="detailList"
|
||||||
@ -41,7 +41,7 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
gridName: 'rowEqpmConstGrid',
|
gridName: 'rowEqpmConstGrid',
|
||||||
detailList: myEqpmConstDetail,
|
detailList: myEqpmConstDetail,
|
||||||
|
|
||||||
@ -96,20 +96,20 @@ export default {
|
|||||||
watch: {
|
watch: {
|
||||||
selectedEqpmKindId(val) {
|
selectedEqpmKindId(val) {
|
||||||
if (val) {
|
if (val) {
|
||||||
this.detailList[2].eqpmKindId = val;
|
this.detailList[1].eqpmKindId = val;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
selectedEqpmGrpId(val) {
|
selectedEqpmGrpId(val) {
|
||||||
// if(!val){
|
// if(!val){
|
||||||
// this.detailList[2].eqpmGrpId = '';
|
// this.detailList[1].eqpmGrpId = '';
|
||||||
// }else{
|
// }else{
|
||||||
// this.detailList[2].eqpmGrpId = val;
|
// this.detailList[1].eqpmGrpId = val;
|
||||||
// }
|
// }
|
||||||
// if(val){
|
// if(val){
|
||||||
// this.detailList[2].eqpmGrpId = val;
|
// this.detailList[1].eqpmGrpId = val;
|
||||||
// }
|
// }
|
||||||
// else if(val == null || val == ''){
|
// else if(val == null || val == ''){
|
||||||
// this.detailList[2].eqpmGrpId = '';
|
// this.detailList[1].eqpmGrpId = '';
|
||||||
// }
|
// }
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -232,14 +232,16 @@ export default {
|
|||||||
value: myColumns,
|
value: myColumns,
|
||||||
});
|
});
|
||||||
|
|
||||||
this.loadGrid = true;
|
this.$nextTick(() => {
|
||||||
|
this.loadGrid = true;
|
||||||
|
});
|
||||||
},
|
},
|
||||||
async getRowData(data, gridName) {
|
async getRowData(data, gridName) {
|
||||||
if (data.rowStat === 'I') {
|
if (data.rowStat === 'I') {
|
||||||
this.detailList[2].disabled = false;
|
this.detailList[1].disabled = false;
|
||||||
this.detailList[3].disabled = false;
|
this.detailList[3].disabled = false;
|
||||||
} else {
|
} else {
|
||||||
this.detailList[2].disabled = true;
|
this.detailList[1].disabled = true;
|
||||||
this.detailList[3].disabled = true;
|
this.detailList[3].disabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -255,12 +257,12 @@ export default {
|
|||||||
switch (action) {
|
switch (action) {
|
||||||
case 'add':
|
case 'add':
|
||||||
this.$refs[this.gridName].addRow();
|
this.$refs[this.gridName].addRow();
|
||||||
this.detailList[2].disabled = false;
|
this.detailList[1].disabled = false;
|
||||||
this.detailList[3].disabled = false;
|
this.detailList[3].disabled = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'remove':
|
case 'remove':
|
||||||
this.detailList[2].disabled = true;
|
this.detailList[1].disabled = true;
|
||||||
this.detailList[3].disabled = true;
|
this.detailList[3].disabled = true;
|
||||||
this.$refs[this.gridName].removeRow();
|
this.$refs[this.gridName].removeRow();
|
||||||
break;
|
break;
|
||||||
@ -289,8 +291,8 @@ export default {
|
|||||||
|
|
||||||
dataArr.map(item => {
|
dataArr.map(item => {
|
||||||
for (var key of Object.keys(item)) {
|
for (var key of Object.keys(item)) {
|
||||||
console.log('key : ', key);
|
// console.log('key : ', key);
|
||||||
console.log('item[key] : ', item[key]);
|
// console.log('item[key] : ', item[key]);
|
||||||
if (!item[key] && requiredKeyList.includes(key)) {
|
if (!item[key] && requiredKeyList.includes(key)) {
|
||||||
validCheck = false;
|
validCheck = false;
|
||||||
}
|
}
|
||||||
@ -356,7 +358,6 @@ const myEqpmConstDetail = [
|
|||||||
{
|
{
|
||||||
type: 'SelectBox',
|
type: 'SelectBox',
|
||||||
label: '대상 유형',
|
label: '대상 유형',
|
||||||
disabled: true,
|
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-3 pr-4',
|
class: 'py-3 pr-4',
|
||||||
list: 'emMapDivList2',
|
list: 'emMapDivList2',
|
||||||
@ -369,6 +370,7 @@ const myEqpmConstDetail = [
|
|||||||
textCols: 12,
|
textCols: 12,
|
||||||
iconShow: true,
|
iconShow: true,
|
||||||
},
|
},
|
||||||
|
// ==================
|
||||||
{
|
{
|
||||||
type: 'EgrpPysclQtyPop',
|
type: 'EgrpPysclQtyPop',
|
||||||
labelContent: '물리량',
|
labelContent: '물리량',
|
||||||
@ -380,7 +382,7 @@ const myEqpmConstDetail = [
|
|||||||
pysclQtyNm: 'pysclQtyNm',
|
pysclQtyNm: 'pysclQtyNm',
|
||||||
},
|
},
|
||||||
valueNm: 'objId',
|
valueNm: 'objId',
|
||||||
disabled: false,
|
disabled: true,
|
||||||
required: true,
|
required: true,
|
||||||
openMode: 'CONST',
|
openMode: 'CONST',
|
||||||
cols: 6,
|
cols: 6,
|
||||||
@ -411,6 +413,7 @@ const myEqpmConstDetail = [
|
|||||||
textCols: 12,
|
textCols: 12,
|
||||||
iconShow: true,
|
iconShow: true,
|
||||||
},
|
},
|
||||||
|
// ------------
|
||||||
{
|
{
|
||||||
type: 'InputText',
|
type: 'InputText',
|
||||||
label: '물리량 값',
|
label: '물리량 값',
|
||||||
|
|||||||
@ -1,25 +1,21 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div
|
<div class="d-flex justify-space-between align-center my-5" >
|
||||||
class="d-flex justify-space-between align-center"
|
<span class="txt custom-subtitle-tab">설비 입출력 정보</span>
|
||||||
style="height: 80px;"
|
|
||||||
>
|
|
||||||
<span class="txt custom-title-4-new">설비 입출력 정보</span>
|
|
||||||
<Buttons
|
<Buttons
|
||||||
:parentPrgmId="parentPrgmId"
|
:parentPrgmId="parentPrgmId"
|
||||||
:bindingData="gridName"
|
:bindingData="gridName"
|
||||||
:btnActionsFnc="btnActions"
|
:btnActionsFnc="btnActions"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div ref="gridParent" style="min-height: calc(100vh - 800px);" >
|
<div ref="gridParent" style="height: calc(100vh - 800px);">
|
||||||
<!-- :is="loadGrid ? 'Grid' : null" -->
|
|
||||||
<Grid
|
<Grid
|
||||||
:ref="gridName"
|
:ref="gridName"
|
||||||
|
:is="loadGrid ? 'Grid' : null"
|
||||||
:gridName="gridName"
|
:gridName="gridName"
|
||||||
:parentPrgmId="parentPrgmId"
|
:parentPrgmId="parentPrgmId"
|
||||||
@getRowsData="getRowData"
|
@getRowsData="getRowData"
|
||||||
:innerTabGridInfo="innerTabGridInfo"
|
:innerTabGridInfo="innerTabGridInfo"
|
||||||
:dataPath="dataPathMock"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div style="min-height: calc(100vh - 900px);" class="mt-4">
|
<div style="min-height: calc(100vh - 900px);" class="mt-4">
|
||||||
@ -60,28 +56,12 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
gridName: 'rowEqpmIaoGrid',
|
gridName: 'rowEqpmIaoGrid',
|
||||||
detailList: myEqpmIaoDetail,
|
detailList: myEqpmIaoDetail,
|
||||||
|
|
||||||
inputList_emMapDiv: [],
|
inputList_emMapDiv: [],
|
||||||
inputList_cmInOut: [],
|
inputList_cmInOut: [],
|
||||||
dataPathMock: {
|
|
||||||
'rowEqpmIaoGrid' : {
|
|
||||||
column: [
|
|
||||||
{ header: '대상항목', name: 'id', headerAlign: 'left' },
|
|
||||||
{ header: '에너지원 명', name: 'lable', headerAlign: 'left' },
|
|
||||||
{ header: '대상 유형', name: 'type', headerAlign: 'left' },
|
|
||||||
{ header: '물리량', name: 'note', headerAlign: 'left' },
|
|
||||||
{ header: '계산여부', name: 'field1', headerAlign: 'left' },
|
|
||||||
{ header: '분배율', name: 'field2', headerAlign: 'left' }
|
|
||||||
],
|
|
||||||
data: dataPathDataExample,
|
|
||||||
defaultRow: dataPathDataExample,
|
|
||||||
option: {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -128,18 +108,24 @@ export default {
|
|||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
selectedObjId(val) {
|
selectedObjId(val) {
|
||||||
console.log('selectedObjId : ', val);
|
|
||||||
if (val === 'TAG') {
|
if (val === 'TAG') {
|
||||||
this.detailList[2].class = 'py-2 d-none';
|
// this.detailList[1].class = 'py-3 pl-4 pb-0';
|
||||||
this.detailList[3].class = 'py-2 d-none';
|
this.detailList[1].class = 'py-3 d-none';
|
||||||
this.detailList[4].class = 'py-2';
|
this.detailList[2].class = 'py-3 d-none';
|
||||||
this.detailList[5].class = 'py-2';
|
this.detailList[3].class = 'py-3 pl-4 pt-1 d-none';
|
||||||
|
|
||||||
|
this.detailList[4].class = 'py-3';
|
||||||
|
this.detailList[5].class = 'py-3 pl-4';
|
||||||
|
this.detailList[6].class = 'py-3 pl-4 pt-0';
|
||||||
} else {
|
} else {
|
||||||
// }else if(val==="READ_PLC"){
|
// }else if(val==="READ_PLC"){
|
||||||
this.detailList[5].class = 'py-2 d-none';
|
this.detailList[1].class = 'py-3 pl-4';
|
||||||
this.detailList[4].class = 'py-2 d-none';
|
this.detailList[2].class = 'py-3';
|
||||||
this.detailList[3].class = 'py-2';
|
this.detailList[3].class = 'py-3 pl-4 pt-0';
|
||||||
this.detailList[2].class = 'py-2';
|
|
||||||
|
this.detailList[4].class = 'py-3 d-none';
|
||||||
|
this.detailList[5].class = 'py-3 d-none';
|
||||||
|
this.detailList[6].class = 'py-3 d-none';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
selectedCalcFg(val) {
|
selectedCalcFg(val) {
|
||||||
@ -172,7 +158,7 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
// this.init();
|
this.init();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations({
|
...mapMutations({
|
||||||
@ -302,13 +288,13 @@ export default {
|
|||||||
async getRowData(data, gridName) {
|
async getRowData(data, gridName) {
|
||||||
if (data.rowStat === 'I') {
|
if (data.rowStat === 'I') {
|
||||||
this.detailList[0].disabled = false;
|
this.detailList[0].disabled = false;
|
||||||
this.detailList[2].disabled = false;
|
this.detailList[1].disabled = false;
|
||||||
this.detailList[3].disabled = false;
|
this.detailList[3].disabled = false;
|
||||||
this.detailList[4].disabled = false;
|
this.detailList[4].disabled = false;
|
||||||
this.detailList[5].disabled = false;
|
this.detailList[5].disabled = false;
|
||||||
} else {
|
} else {
|
||||||
this.detailList[0].disabled = true;
|
this.detailList[0].disabled = true;
|
||||||
this.detailList[2].disabled = true;
|
this.detailList[1].disabled = true;
|
||||||
this.detailList[3].disabled = true;
|
this.detailList[3].disabled = true;
|
||||||
this.detailList[4].disabled = true;
|
this.detailList[4].disabled = true;
|
||||||
this.detailList[5].disabled = true;
|
this.detailList[5].disabled = true;
|
||||||
@ -326,7 +312,7 @@ export default {
|
|||||||
case 'add':
|
case 'add':
|
||||||
this.$refs[this.gridName].addRow();
|
this.$refs[this.gridName].addRow();
|
||||||
this.detailList[0].disabled = false;
|
this.detailList[0].disabled = false;
|
||||||
this.detailList[2].disabled = false;
|
this.detailList[1].disabled = false;
|
||||||
this.detailList[3].disabled = false;
|
this.detailList[3].disabled = false;
|
||||||
this.detailList[4].disabled = false;
|
this.detailList[4].disabled = false;
|
||||||
this.detailList[5].disabled = false;
|
this.detailList[5].disabled = false;
|
||||||
@ -335,7 +321,7 @@ export default {
|
|||||||
case 'remove':
|
case 'remove':
|
||||||
this.$refs[this.gridName].removeRow();
|
this.$refs[this.gridName].removeRow();
|
||||||
this.detailList[0].disabled = true;
|
this.detailList[0].disabled = true;
|
||||||
this.detailList[2].disabled = true;
|
this.detailList[1].disabled = true;
|
||||||
this.detailList[3].disabled = true;
|
this.detailList[3].disabled = true;
|
||||||
this.detailList[4].disabled = true;
|
this.detailList[4].disabled = true;
|
||||||
this.detailList[5].disabled = true;
|
this.detailList[5].disabled = true;
|
||||||
@ -355,7 +341,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (dataArr.length > 0) {
|
if (dataArr.length > 0) {
|
||||||
console.log('dataArr : ', dataArr);
|
// console.log('dataArr : ', dataArr);
|
||||||
|
|
||||||
var requiredKeyList = this.detailList
|
var requiredKeyList = this.detailList
|
||||||
.filter(item => {
|
.filter(item => {
|
||||||
@ -416,6 +402,7 @@ export default {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
function checkDuplicate(data, targetKey) {
|
function checkDuplicate(data, targetKey) {
|
||||||
var duplicateFlag = false;
|
var duplicateFlag = false;
|
||||||
var set = new Set();
|
var set = new Set();
|
||||||
@ -455,10 +442,10 @@ const myEqpmIaoDetail = [
|
|||||||
type: 'ReadPlcPop',
|
type: 'ReadPlcPop',
|
||||||
label: '대상 항목',
|
label: '대상 항목',
|
||||||
valueNm: 'objId',
|
valueNm: 'objId',
|
||||||
disabled: true,
|
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-3 pl-4',
|
class: 'py-3 pl-4 pb-0',
|
||||||
required: true,
|
required: true,
|
||||||
|
disabled: true,
|
||||||
bindNm: 'objNm',
|
bindNm: 'objNm',
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
@ -479,30 +466,39 @@ const myEqpmIaoDetail = [
|
|||||||
readonly: true,
|
readonly: true,
|
||||||
disabled: true,
|
disabled: true,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-3 pl-4 pt-1',
|
class: 'py-3 pl-4 pt-0',
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
iconShow: true
|
iconShow: true
|
||||||
},
|
},
|
||||||
|
// ============
|
||||||
{
|
{
|
||||||
type: 'EvtObjPop',
|
type: 'EvtObjPop',
|
||||||
labelContent: '대상 항목 111',
|
labelContent: '대상 항목',
|
||||||
valueNm: 'objId',
|
valueNm: 'objId',
|
||||||
valueNm2: 'objNm',
|
valueNm2: 'objNm',
|
||||||
bindNm: 'objNm',
|
bindNm: 'objNm',
|
||||||
disabled: true,
|
disabled: true,
|
||||||
required: true,
|
required: true,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-3 d-none',
|
class: 'py-3 pl-4 d-none',
|
||||||
disableContent: true,
|
disableContent: true,
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
iconShow: true
|
iconShow: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'InputText',
|
type: 'Label',
|
||||||
cols: 5,
|
cols: 6,
|
||||||
class: 'py-3 d-none',
|
class: 'py-3 d-none',
|
||||||
|
disabled: true,
|
||||||
|
textCols: 12,
|
||||||
|
labelCols: 12,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'InputText',
|
||||||
|
cols: 6,
|
||||||
|
class: 'py-3 pl-4 d-none',
|
||||||
valueNm: 'objNm',
|
valueNm: 'objNm',
|
||||||
readonly: true,
|
readonly: true,
|
||||||
disabled: true,
|
disabled: true,
|
||||||
@ -510,6 +506,7 @@ const myEqpmIaoDetail = [
|
|||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
iconShow: true
|
iconShow: true
|
||||||
},
|
},
|
||||||
|
// --------------------------------------------
|
||||||
{
|
{
|
||||||
type: 'SelectBox',
|
type: 'SelectBox',
|
||||||
label: '에너지원',
|
label: '에너지원',
|
||||||
@ -614,13 +611,4 @@ const myEqpmIaoDetail = [
|
|||||||
iconShow: true
|
iconShow: true
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
import { getPathDataExample } from '@/const/const'
|
|
||||||
const dataPathDataExample = getPathDataExample({
|
|
||||||
id: 'INCHEON.HVAC.EQP_HT_CH001.UT_CH101.CHI_AMP_1A_PV',
|
|
||||||
lable: 'INCHEON 고온 냉동기 101호기 - 호로1',
|
|
||||||
type: '사용', note: '-',
|
|
||||||
field1: '1111',
|
|
||||||
field2: '2222',
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -271,63 +271,6 @@ export default {
|
|||||||
value: myColumns,
|
value: myColumns,
|
||||||
});
|
});
|
||||||
|
|
||||||
const res = [
|
|
||||||
{
|
|
||||||
"comId": "COM001",
|
|
||||||
"ercId": "ERC001",
|
|
||||||
"objMm": "202507",
|
|
||||||
"objYm": "2025-07",
|
|
||||||
"unitPrce": 120.5,
|
|
||||||
"peakPow": 450,
|
|
||||||
"baseChrg": 30000,
|
|
||||||
"notiChrg": 32500,
|
|
||||||
"rmrk": "Standard summer rate",
|
|
||||||
"blocId": "BLOC001",
|
|
||||||
"regUserNo": "USER001",
|
|
||||||
"regDttm": "2025-07-01T09:00:00",
|
|
||||||
"procUserNo": "USER002",
|
|
||||||
"procDttm": "2025-07-15T14:30:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comId": "COM002",
|
|
||||||
"ercId": "ERC002",
|
|
||||||
"objMm": "202507",
|
|
||||||
"objYm": "2025-07",
|
|
||||||
"unitPrce": 98.75,
|
|
||||||
"peakPow": 300,
|
|
||||||
"baseChrg": 25000,
|
|
||||||
"notiChrg": 27000,
|
|
||||||
"rmrk": "Reduced rate for solar",
|
|
||||||
"blocId": "BLOC002",
|
|
||||||
"regUserNo": "USER003",
|
|
||||||
"regDttm": "2025-07-02T10:15:00",
|
|
||||||
"procUserNo": "USER004",
|
|
||||||
"procDttm": "2025-07-16T11:45:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comId": "COM003",
|
|
||||||
"ercId": "ERC003",
|
|
||||||
"objMm": "202507",
|
|
||||||
"objYm": "2025-07",
|
|
||||||
"unitPrce": 110.0,
|
|
||||||
"peakPow": 400,
|
|
||||||
"baseChrg": 28000,
|
|
||||||
"notiChrg": 29500,
|
|
||||||
"rmrk": "Geothermal adjustment",
|
|
||||||
"blocId": "BLOC003",
|
|
||||||
"regUserNo": "USER005",
|
|
||||||
"regDttm": "2025-07-03T08:45:00",
|
|
||||||
"procUserNo": "USER006",
|
|
||||||
"procDttm": "2025-07-17T13:20:00"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
this.setGridData({
|
|
||||||
gridKey: this.gridName,
|
|
||||||
value: res,
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
this.loadGrid = true;
|
this.loadGrid = true;
|
||||||
},
|
},
|
||||||
async btnActions(action) {
|
async btnActions(action) {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
class="d-flex justify-space-between align-center"
|
class="d-flex justify-space-between align-center"
|
||||||
style="height: 80px;"
|
style="height: 80px;"
|
||||||
>
|
>
|
||||||
<span class="txt">검침 대상 추가 정보</span>
|
<span class="txt custom-subtitle-tab">검침 대상 추가 정보</span>
|
||||||
<Buttons
|
<Buttons
|
||||||
:parentPrgmId="parentPrgmId"
|
:parentPrgmId="parentPrgmId"
|
||||||
:bindingData="gridName"
|
:bindingData="gridName"
|
||||||
@ -20,8 +20,6 @@
|
|||||||
:editorGrid="true"
|
:editorGrid="true"
|
||||||
:innerTabGridInfo="innerTabGridInfo"
|
:innerTabGridInfo="innerTabGridInfo"
|
||||||
@getRowsData="getRowData"
|
@getRowsData="getRowData"
|
||||||
:selectedRowDataWatchFlag="true"
|
|
||||||
:dataPath="dataPathMock"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -55,23 +53,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: '검침 대상 ID', name: 'readObjId', align: 'left' },
|
|
||||||
{ header: '검침 대상 명', name: 'readObjNm', align: 'left' },
|
|
||||||
{ header: '검침 대상 유형', name: 'readObjKind', align: 'left' },
|
|
||||||
{ header: '그룹', name: 'grpCd', align: 'left' },
|
|
||||||
],
|
|
||||||
data: dataPathDataExample,
|
|
||||||
defaultRow: dataPathDataExample,
|
|
||||||
option: {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -276,7 +261,7 @@ export default {
|
|||||||
{ header: '검침 대상 ID', name: 'readObjId', hidden: true },
|
{ header: '검침 대상 ID', name: 'readObjId', hidden: true },
|
||||||
{
|
{
|
||||||
header: '추가 정보',
|
header: '추가 정보',
|
||||||
name: 'addInfoId',
|
name: 'addInfoId',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
formatter({ value }) {
|
formatter({ value }) {
|
||||||
let retVal = '';
|
let retVal = '';
|
||||||
@ -461,25 +446,4 @@ export default {
|
|||||||
search() {},
|
search() {},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const dataPathDataExample = [
|
|
||||||
{
|
|
||||||
readObjId: 'OBJ001',
|
|
||||||
readObjNm: '서울 본사',
|
|
||||||
readObjKind: 'TYPE01',
|
|
||||||
grpCd: 'GRP01',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
readObjId: 'OBJ002',
|
|
||||||
readObjNm: '부산 지사',
|
|
||||||
readObjKind: 'TYPE02',
|
|
||||||
grpCd: 'GRP02',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
readObjId: 'OBJ003',
|
|
||||||
readObjNm: '대전 공장',
|
|
||||||
readObjKind: 'TYPE03',
|
|
||||||
grpCd: 'GRP01',
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -1,26 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div
|
<div class="d-flex justify-space-between">
|
||||||
class="d-flex justify-space-between"
|
|
||||||
|
|
||||||
>
|
|
||||||
<v-card-title class="px-0 pt-0 custom-title-4">검침개소 추가 정보</v-card-title>
|
<v-card-title class="px-0 pt-0 custom-title-4">검침개소 추가 정보</v-card-title>
|
||||||
<Buttons
|
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
||||||
:parentPrgmId="parentPrgmId"
|
|
||||||
:bindingData="gridName"
|
|
||||||
:btnActionsFnc="btnActions"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<div ref="gridParent">
|
<div ref="gridParent" style="height: calc(100vh - 520px);">
|
||||||
<Grid
|
<Grid :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="parentPrgmId"
|
||||||
:ref="gridName"
|
:editorGrid="true" :innerTabGridInfo="innerTabGridInfo" @getRowsData="getRowData" />
|
||||||
:gridName="gridName"
|
|
||||||
:parentPrgmId="parentPrgmId"
|
|
||||||
:editorGrid="true"
|
|
||||||
:innerTabGridInfo="innerTabGridInfo"
|
|
||||||
@getRowsData="getRowData"
|
|
||||||
:dataPath="addInfoTabData"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -53,65 +39,65 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
gridName: 'rowDetailGrid',
|
gridName: 'rowDetailGrid',
|
||||||
rowKey: null,
|
rowKey: null,
|
||||||
edtingFinishFlag: 'Y',
|
edtingFinishFlag: 'Y',
|
||||||
addInfoTabData: {
|
// addInfoTabData: {
|
||||||
"rowDetailGrid": {
|
// "rowDetailGrid": {
|
||||||
data: [
|
// data: [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{
|
// {
|
||||||
readPlcNm: '서울 본사',
|
// readPlcNm: '서울 본사',
|
||||||
plcKind: '전기',
|
// plcKind: '전기',
|
||||||
useFg: '1',
|
// useFg: '1',
|
||||||
},
|
// },
|
||||||
|
|
||||||
|
|
||||||
],
|
// ],
|
||||||
column: [
|
// column: [
|
||||||
// { header: '회사 ID', name: 'comId', hidden: true },
|
// // { header: '회사 ID', name: 'comId', hidden: true },
|
||||||
{
|
// {
|
||||||
header: '검침개소명',
|
// header: '검침개소명',
|
||||||
name: 'readPlcNm',
|
// name: 'readPlcNm',
|
||||||
align: 'left',
|
// align: 'left',
|
||||||
minWidth: 400,
|
// minWidth: 400,
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
header: '개소 종류',
|
// header: '개소 종류',
|
||||||
name: 'plcKind',
|
// name: 'plcKind',
|
||||||
minWidth: 100,
|
// minWidth: 100,
|
||||||
align: 'center',
|
// align: 'center',
|
||||||
// formatter({ value }) {
|
// // formatter({ value }) {
|
||||||
// let retVal = '';
|
// // let retVal = '';
|
||||||
// const newValue = _this.pageData.plcKindList.filter(
|
// // const newValue = _this.pageData.plcKindList.filter(
|
||||||
// item => item.commCd == value,
|
// // item => item.commCd == value,
|
||||||
// );
|
// // );
|
||||||
// if (newValue.length > 0) {
|
// // if (newValue.length > 0) {
|
||||||
// retVal = newValue[0].commCdNm;
|
// // retVal = newValue[0].commCdNm;
|
||||||
// }
|
// // }
|
||||||
// return retVal;
|
// // return retVal;
|
||||||
// },
|
// // },
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
header: '사용 여부',
|
// header: '사용 여부',
|
||||||
name: 'useFg',
|
// name: 'useFg',
|
||||||
minWidth: 100,
|
// minWidth: 100,
|
||||||
align: 'center',
|
// align: 'center',
|
||||||
// formatter({ value }) {
|
// // formatter({ value }) {
|
||||||
// value = value === true ? '1' : '0';
|
// // value = value === true ? '1' : '0';
|
||||||
// const newValue = _this.pageData.useFgList.filter(
|
// // const newValue = _this.pageData.useFgList.filter(
|
||||||
// item => item.commCd == value,
|
// // item => item.commCd == value,
|
||||||
// );
|
// // );
|
||||||
// return newValue[0].commCdNm;
|
// // return newValue[0].commCdNm;
|
||||||
// },
|
// // },
|
||||||
},
|
// },
|
||||||
]
|
// ]
|
||||||
|
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -166,9 +152,9 @@ export default {
|
|||||||
bodyHeight: gridHeight,
|
bodyHeight: gridHeight,
|
||||||
minBodyHeight: gridHeight,
|
minBodyHeight: gridHeight,
|
||||||
header: {
|
header: {
|
||||||
height: 28,
|
height: 37,
|
||||||
},
|
},
|
||||||
rowHeight: 29,
|
rowHeight: 37,
|
||||||
minRowHeight: 29,
|
minRowHeight: 29,
|
||||||
selectionUnit: 'row',
|
selectionUnit: 'row',
|
||||||
editingEvent: 'click',
|
editingEvent: 'click',
|
||||||
@ -178,128 +164,129 @@ export default {
|
|||||||
value: myOptions,
|
value: myOptions,
|
||||||
});
|
});
|
||||||
|
|
||||||
// const _this = this;
|
const _this = this;
|
||||||
// let useFgSelectList = [];
|
let useFgSelectList = [];
|
||||||
// this.pageData.useFgList.forEach(item => {
|
this.pageData.useFgList.forEach(item => {
|
||||||
// const it = { text: item.commCdNm, value: item.commCd };
|
const it = { text: item.commCdNm, value: item.commCd };
|
||||||
// useFgSelectList.push(it);
|
useFgSelectList.push(it);
|
||||||
// });
|
});
|
||||||
// let addInfoList = [];
|
let addInfoList = [];
|
||||||
// this.pageData.addInfoList.forEach(item => {
|
this.pageData.addInfoList.forEach(item => {
|
||||||
// const it = { text: item.addInfoNm, value: item.addInfoId };
|
const it = { text: item.addInfoNm, value: item.addInfoId };
|
||||||
// addInfoList.push(it);
|
addInfoList.push(it);
|
||||||
// });
|
});
|
||||||
// let addInfoDataKindList = [];
|
let addInfoDataKindList = [];
|
||||||
// this.pageData.addInfoDataKindList.forEach(item => {
|
this.pageData.addInfoDataKindList.forEach(item => {
|
||||||
// const it = { text: item.commCdNm, value: item.commCd };
|
const it = { text: item.commCdNm, value: item.commCd };
|
||||||
// addInfoDataKindList.push(it);
|
addInfoDataKindList.push(it);
|
||||||
// });
|
});
|
||||||
|
|
||||||
// const myColumns = [
|
const myColumns = [
|
||||||
// { header: '회사 ID', name: 'comId', hidden: true },
|
{ header: '회사 ID', name: 'comId', hidden: true },
|
||||||
// { header: '검침개소 번호', name: 'readPlcId', hidden: true },
|
{ header: '검침개소 번호', name: 'readPlcId', hidden: true },
|
||||||
// {
|
{
|
||||||
// header: '추가 정보',
|
header: '추가 정보',
|
||||||
// name: 'addInfoId',
|
name: 'addInfoId',
|
||||||
// align: 'left',
|
align: 'left',
|
||||||
// formatter({ value }) {
|
formatter({ value }) {
|
||||||
// let retVal = '';
|
let retVal = '';
|
||||||
// const newValue = addInfoList.filter(item => item.value == value);
|
const newValue = addInfoList.filter(item => item.value == value);
|
||||||
// if (newValue.length > 0) {
|
if (newValue.length > 0) {
|
||||||
// retVal = newValue[0].text;
|
retVal = newValue[0].text;
|
||||||
// }
|
}
|
||||||
// return retVal;
|
return retVal;
|
||||||
// },
|
},
|
||||||
// },
|
},
|
||||||
// {
|
{
|
||||||
// header: 'Data 구분',
|
header: 'Data 구분',
|
||||||
// name: 'addInfoDataKind',
|
name: 'addInfoDataKind',
|
||||||
// align: 'center',
|
align: 'center',
|
||||||
// formatter({ value }) {
|
formatter({ value }) {
|
||||||
// let retVal = '';
|
let retVal = '';
|
||||||
// const newValue = addInfoDataKindList.filter(
|
const newValue = addInfoDataKindList.filter(
|
||||||
// item => item.value == value,
|
item => item.value == value,
|
||||||
// );
|
);
|
||||||
// if (newValue.length > 0) {
|
if (newValue.length > 0) {
|
||||||
// retVal = newValue[0].text;
|
retVal = newValue[0].text;
|
||||||
// }
|
}
|
||||||
// return retVal;
|
return retVal;
|
||||||
// },
|
},
|
||||||
// // editor: {
|
// editor: {
|
||||||
// // type: "select",
|
// type: "select",
|
||||||
// // options: {
|
// options: {
|
||||||
// // listItems: addInfoDataKindList
|
// listItems: addInfoDataKindList
|
||||||
// // }
|
// }
|
||||||
// // }
|
// }
|
||||||
// },
|
},
|
||||||
// {
|
{
|
||||||
// header: '숫자 값',
|
header: '숫자 값',
|
||||||
// name: 'addInfoNumVal',
|
name: 'addInfoNumVal',
|
||||||
// align: 'right',
|
align: 'right',
|
||||||
// editor: 'text',
|
editor: 'text',
|
||||||
// hidden: true,
|
hidden: true,
|
||||||
// },
|
},
|
||||||
// {
|
{
|
||||||
// header: '문자 값',
|
header: '문자 값',
|
||||||
// name: 'addInfoTxtVal',
|
name: 'addInfoTxtVal',
|
||||||
// align: 'left',
|
align: 'left',
|
||||||
// editor: 'text',
|
editor: 'text',
|
||||||
// hidden: true,
|
hidden: true,
|
||||||
// },
|
},
|
||||||
// {
|
{
|
||||||
// header: '추가 정보 값',
|
header: '추가 정보 값',
|
||||||
// name: 'addInfoVal',
|
name: 'addInfoVal',
|
||||||
// align: 'center',
|
align: 'center',
|
||||||
// renderer: {
|
renderer: {
|
||||||
// type: NewCustomRenderer,
|
type: NewCustomRenderer,
|
||||||
// },
|
},
|
||||||
// editor: {
|
editor: {
|
||||||
// type: NewCustomEditor,
|
type: NewCustomEditor,
|
||||||
// },
|
},
|
||||||
// formatter(data) {
|
formatter(data) {
|
||||||
// return data.row.addInfoDataKind;
|
return data.row.addInfoDataKind;
|
||||||
// },
|
},
|
||||||
// },
|
},
|
||||||
//{ header: "추가 정보 값", name: "addInfoVal", align: "center" , editor: "text",
|
// {
|
||||||
// formatter({ value, row , column}) {
|
// header: "추가 정보 값", name: "addInfoVal", align: "center", editor: "text",
|
||||||
// console.log("addInfoVal row : ", row);
|
// formatter({ value, row, column }) {
|
||||||
// console.log("addInfoVal state : ", column);
|
// console.log("addInfoVal row : ", row);
|
||||||
// if(row.addInfoDataKind === "NUM"){
|
// console.log("addInfoVal state : ", column);
|
||||||
// column.align = "right";
|
// if (row.addInfoDataKind === "NUM") {
|
||||||
// }else{
|
// column.align = "right";
|
||||||
// column.align = "left";
|
// } else {
|
||||||
// }
|
// column.align = "left";
|
||||||
// return value;
|
// }
|
||||||
// }
|
// return value;
|
||||||
//},
|
// }
|
||||||
|
// },
|
||||||
/*{
|
/*{
|
||||||
header: "사용여부",
|
header: "사용여부",
|
||||||
name: "useFg",
|
name: "useFg",
|
||||||
align: "center",
|
align: "center",
|
||||||
formatter({ value }) {
|
formatter({ value }) {
|
||||||
return value == "1" ? "사용" : "사용안함";
|
return value == "1" ? "사용" : "사용안함";
|
||||||
},
|
},
|
||||||
editor: {
|
editor: {
|
||||||
type: "select",
|
type: "select",
|
||||||
options: {
|
options: {
|
||||||
// listItems: useFgSelectList
|
// listItems: useFgSelectList
|
||||||
listItems: [
|
listItems: [
|
||||||
{text:"사용", value:"1"},
|
{text:"사용", value:"1"},
|
||||||
{text:"사용안함", value:"0"},
|
{text:"사용안함", value:"0"},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},*/
|
},*/
|
||||||
// { 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 },
|
||||||
// ];
|
];
|
||||||
|
|
||||||
// this.setGridColumn({
|
this.setGridColumn({
|
||||||
// gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
// value: myColumns,
|
value: myColumns,
|
||||||
// });
|
});
|
||||||
|
|
||||||
this.loadGrid = true;
|
this.loadGrid = true;
|
||||||
},
|
},
|
||||||
@ -379,7 +366,7 @@ export default {
|
|||||||
gridEditingFinish2(data, bindingData) {
|
gridEditingFinish2(data, bindingData) {
|
||||||
this.$refs[bindingData].editingFinish(data);
|
this.$refs[bindingData].editingFinish(data);
|
||||||
},
|
},
|
||||||
search() {},
|
search() { },
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
<div ref="gridParent" style="height: calc((100vh - 520px) /2);">
|
<div ref="gridParent" style="height: calc((100vh - 520px) /2);">
|
||||||
<Grid :ref="gridName" :gridName="gridName" :parentPrgmId="parentPrgmId" @getRowsData="getRowData"
|
<Grid :ref="gridName" :gridName="gridName" :parentPrgmId="parentPrgmId" @getRowsData="getRowData"
|
||||||
:innerTabGridInfo="innerTabGridInfo" :dataPath="imgInfoTabData" />
|
:innerTabGridInfo="innerTabGridInfo" />
|
||||||
</div>
|
</div>
|
||||||
<div ref="formParent">
|
<div ref="formParent" style="height: calc((100vh - 400px) /2);">
|
||||||
<component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName"
|
<component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName"
|
||||||
:detailList="detailReadPlcImgList" @gridEditingFinish="gridEditingFinish" />
|
:detailList="detailReadPlcImgList" @gridEditingFinish="gridEditingFinish" />
|
||||||
</div>
|
</div>
|
||||||
@ -44,26 +44,9 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
gridName: 'rowReadPlcImgGrid',
|
gridName: 'rowReadPlcImgGrid',
|
||||||
detailReadPlcImgList: myReadPlcImgDetail,
|
detailReadPlcImgList: myReadPlcImgDetail,
|
||||||
imgInfoTabData: {
|
|
||||||
"rowReadPlcImgGrid": {
|
|
||||||
data:
|
|
||||||
[
|
|
||||||
{ "objReadPlcId": "1001", "objReadPlcNm": "서울역", "distRt": 12 },
|
|
||||||
{ "objReadPlcId": "1002", "objReadPlcNm": "강남역", "distRt": 8 },
|
|
||||||
{ "objReadPlcId": "1003", "objReadPlcNm": "잠실역", "distRt": 15 },
|
|
||||||
]
|
|
||||||
,
|
|
||||||
column: [
|
|
||||||
{ header: '대상 검침개소 번호', name: 'objReadPlcId', align: 'center' },
|
|
||||||
{ header: '대상 검침개소명', name: 'objReadPlcNm', align: 'left' },
|
|
||||||
{ header: '분배율(1~100)', name: 'distRt', align: 'right' },
|
|
||||||
]
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -120,10 +103,11 @@ export default {
|
|||||||
header: {
|
header: {
|
||||||
height: 28,
|
height: 28,
|
||||||
},
|
},
|
||||||
rowHeight: 29,
|
// rowHeight: 29,
|
||||||
minRowHeight: 29,
|
// minRowHeight: 29,
|
||||||
selectionUnit: 'row',
|
selectionUnit: 'row',
|
||||||
editingEvent: 'click',
|
editingEvent: 'click',
|
||||||
|
rowHeight: 'auto',
|
||||||
};
|
};
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
|
|||||||
@ -6,12 +6,23 @@
|
|||||||
:btnActionsFnc="btnActions" />
|
:btnActionsFnc="btnActions" />
|
||||||
</div>
|
</div>
|
||||||
<div ref="gridParent" style="height: calc((100vh - 520px) /2);">
|
<div ref="gridParent" style="height: calc((100vh - 520px) /2);">
|
||||||
<Grid :ref="gridName" :gridName="gridName" :parentPrgmId="parentPrgmId" @getRowsData="getRowData"
|
<Grid
|
||||||
:innerTabGridInfo="innerTabGridInfo" :dataPath="tagRelTabData" />
|
:ref="gridName"
|
||||||
|
:is="loadGrid ? 'Grid' : null"
|
||||||
|
:gridName="gridName"
|
||||||
|
:parentPrgmId="parentPrgmId"
|
||||||
|
@getRowsData="getRowData"
|
||||||
|
:innerTabGridInfo="innerTabGridInfo"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div ref="formParent" >
|
<div ref="formParent" style="height: calc((100vh - 400px) /2);">
|
||||||
<component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName"
|
<component
|
||||||
:detailList="detailReadPlcTagList" @gridEditingFinish="gridEditingFinish" />
|
:is="'Form'"
|
||||||
|
:parentPrgmId="parentPrgmId"
|
||||||
|
:bindingData="gridName"
|
||||||
|
:detailList="detailReadPlcTagList"
|
||||||
|
@gridEditingFinish="gridEditingFinish"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -46,78 +57,7 @@ export default {
|
|||||||
loadGrid: false,
|
loadGrid: false,
|
||||||
gridName: 'rowReadPlcTagRelGrid',
|
gridName: 'rowReadPlcTagRelGrid',
|
||||||
detailReadPlcTagList: myReadPlcTagDetail,
|
detailReadPlcTagList: myReadPlcTagDetail,
|
||||||
tagRelTabData: {
|
|
||||||
"rowReadPlcTagRelGrid": {
|
|
||||||
data:
|
|
||||||
[
|
|
||||||
|
|
||||||
{
|
|
||||||
"tagNm": "TAG_001",
|
|
||||||
"ercId": "전기",
|
|
||||||
"distRt": 10,
|
|
||||||
"reprTagFg": "1",
|
|
||||||
"useFg": "Y",
|
|
||||||
"rmrk": "기본 설정",
|
|
||||||
"tagId": "TAG_001"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tagNm": "TAG_002",
|
|
||||||
"ercId": "가스",
|
|
||||||
"distRt": 15,
|
|
||||||
"reprTagFg": "0",
|
|
||||||
"useFg": "Y",
|
|
||||||
"rmrk": "",
|
|
||||||
"tagId": "TAG_002"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tagNm": "TAG_003",
|
|
||||||
"ercId": "수도",
|
|
||||||
"distRt": 8,
|
|
||||||
"reprTagFg": "0",
|
|
||||||
"useFg": "N",
|
|
||||||
"rmrk": "테스트용",
|
|
||||||
"tagId": "TAG_003"
|
|
||||||
},
|
|
||||||
|
|
||||||
]
|
|
||||||
,
|
|
||||||
column: [
|
|
||||||
{ header: 'TAG 명', name: 'tagNm', align: 'left' },
|
|
||||||
{
|
|
||||||
header: '에너지원',
|
|
||||||
name: 'ercId',
|
|
||||||
align: 'center',
|
|
||||||
width: 100,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '분배율(1~100)',
|
|
||||||
name: 'distRt',
|
|
||||||
align: 'right',
|
|
||||||
width: 100,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '대표 TAG 여부',
|
|
||||||
name: 'reprTagFg',
|
|
||||||
align: 'center',
|
|
||||||
width: 100,
|
|
||||||
formatter({ value }) {
|
|
||||||
return value == '1' ? '예' : '아니오';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '사용여부',
|
|
||||||
name: 'useFg',
|
|
||||||
align: 'center',
|
|
||||||
width: 100,
|
|
||||||
|
|
||||||
},
|
|
||||||
{ header: '비고', name: 'rmrk', align: 'left', width: 100 },
|
|
||||||
{ header: 'TAG ID', name: 'tagId', align: 'center', hidden: true },
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -170,9 +110,9 @@ export default {
|
|||||||
// bodyHeight: gridHeight,
|
// bodyHeight: gridHeight,
|
||||||
// minBodyHeight: gridHeight,
|
// minBodyHeight: gridHeight,
|
||||||
header: {
|
header: {
|
||||||
height: 28,
|
height: 37,
|
||||||
},
|
},
|
||||||
rowHeight: 29,
|
rowHeight: 37,
|
||||||
minRowHeight: 29,
|
minRowHeight: 29,
|
||||||
selectionUnit: 'row',
|
selectionUnit: 'row',
|
||||||
editingEvent: 'click',
|
editingEvent: 'click',
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<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 style="color:#000000A6" class="tit custom-title-4-new">TAG 추가 정보</span>
|
||||||
<Buttons
|
<Buttons
|
||||||
:parentPrgmId="parentPrgmId"
|
:parentPrgmId="parentPrgmId"
|
||||||
:bindingData="gridName"
|
:bindingData="gridName"
|
||||||
@ -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>
|
||||||
@ -444,80 +413,71 @@ export default {
|
|||||||
activeTree: {
|
activeTree: {
|
||||||
deep: true,
|
deep: true,
|
||||||
handler(newVal, oldVal) {
|
handler(newVal, oldVal) {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
const nv = newVal[0];
|
const nv = newVal[0];
|
||||||
const ov = oldVal[0];
|
const ov = oldVal[0];
|
||||||
if (nv !== ov) {
|
if (nv !== ov) {
|
||||||
if (!nv) {
|
if (!nv) {
|
||||||
// 중복클릭 시 발생 상황 기존 값을 다시 넣어줌
|
// 중복클릭 시 발생 상황 기존 값을 다시 넣어줌
|
||||||
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');
|
||||||
// console.log('this.isLoading : ', this.isLoading);
|
// console.log('this.isLoading : ', this.isLoading);
|
||||||
// if(this.isLoading == true){
|
// if(this.isLoading == true){
|
||||||
// console.log('if isLoading stmt1');
|
// console.log('if isLoading stmt1');
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
console.log("this:", this.menuData[nv].url);
|
this.$router.push({
|
||||||
|
path: `${this.menuData[nv].url}?prgmId=${nv}`,
|
||||||
this.$router.push({
|
});
|
||||||
path: `/${this.menuData[nv].url}?prgmId=${nv}`,
|
// this.$router.beforeEach((to, from, next) => {
|
||||||
});
|
// if(_this.isLoading == true){
|
||||||
// this.$router.replace("/").then(() => {
|
// next(false);
|
||||||
// alert("hihi");
|
// }
|
||||||
// this.$router.push({
|
// if (!to.matched.length) {
|
||||||
// path: `${this.menuData[nv].url}?prgmId=${nv}`,
|
// next(false);
|
||||||
// });
|
// } else {
|
||||||
// });
|
// next();
|
||||||
|
// }
|
||||||
// this.$router.beforeEach((to, from, next) => {
|
// });
|
||||||
// if(_this.isLoading == true){
|
var tmp = 0;
|
||||||
// next(false);
|
for (var i = 0; i < this.myMenuList.length; i++) {
|
||||||
// }
|
if (this.myMenuList[i].menuId == menuId) {
|
||||||
// if (!to.matched.length) {
|
tmp = 1;
|
||||||
// next(false);
|
}
|
||||||
// } else {
|
}
|
||||||
// next();
|
this.bookmarkBtn = tmp;
|
||||||
// }
|
} else {
|
||||||
// });
|
// console.log('activeTree if stmt2');
|
||||||
var tmp = 0;
|
// console.log('this.isLoading : ', this.isLoading);
|
||||||
for (var i = 0; i < this.myMenuList.length; i++) {
|
// if(this.isLoading == true){
|
||||||
if (this.myMenuList[i].menuId == menuId) {
|
// console.log('if isLoading stmt2');
|
||||||
tmp = 1;
|
// return;
|
||||||
}
|
// }
|
||||||
}
|
this.$refs.routerTab.openIframe(
|
||||||
this.bookmarkBtn = tmp;
|
encodeURI(
|
||||||
} else {
|
`http://localhost:9999${this.menuData[nv].url}?prgmId=${nv}`,
|
||||||
// console.log('activeTree if stmt2');
|
),
|
||||||
// console.log('this.isLoading : ', this.isLoading);
|
this.menuData[nv].menuNm,
|
||||||
// if(this.isLoading == true){
|
);
|
||||||
// console.log('if isLoading stmt2');
|
}
|
||||||
// return;
|
this.$axios.get(`${this.menuData[nv].url}?$menuId=${menuId}`);
|
||||||
// }
|
} else alert('지정된 페이지 경로가 없습니다.');
|
||||||
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: {
|
menuData: {
|
||||||
deep: true,
|
deep: true,
|
||||||
|
|||||||
@ -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>
|
|
||||||
@ -2,7 +2,8 @@ import $cookie from 'vue-cookie';
|
|||||||
|
|
||||||
export default async function({ store, route, redirect }) {
|
export default async function({ store, route, redirect }) {
|
||||||
// const menuId = route.query.menuId;
|
// const menuId = route.query.menuId;
|
||||||
const FEMS_SESSION = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjM0NTYiLCJyb2xlIjoiYWRtaW4ifQ.sflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
|
// const FEMS_SESSION = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjM0NTYiLCJyb2xlIjoiYWRtaW4ifQ.sflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
|
||||||
|
const FEMS_SESSION = $cookie.get('FEMS_SESSION');
|
||||||
if (!FEMS_SESSION) {
|
if (!FEMS_SESSION) {
|
||||||
if (route.name !== 'login') redirect('/login');
|
if (route.name !== 'login') redirect('/login');
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -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.height = `calc(100% - ${searchFilterHeight + 20}px)`;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//init() {}
|
//init() {}
|
||||||
|
|||||||
@ -49,7 +49,7 @@ module.exports = {
|
|||||||
|
|
||||||
// Auto import components: https://go.nuxtjs.dev/config-components
|
// Auto import components: https://go.nuxtjs.dev/config-components
|
||||||
components: true,
|
components: true,
|
||||||
|
|
||||||
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
|
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
|
||||||
buildModules: [
|
buildModules: [
|
||||||
// https://go.nuxtjs.dev/vuetify
|
// https://go.nuxtjs.dev/vuetify
|
||||||
@ -57,19 +57,19 @@ module.exports = {
|
|||||||
],
|
],
|
||||||
|
|
||||||
// Modules: https://go.nuxtjs.dev/config-modules
|
// Modules: https://go.nuxtjs.dev/config-modules
|
||||||
modules: ['@nuxtjs/axios', '@nuxtjs/dayjs', '@nuxtjs/style-resources','@nuxtjs/google-fonts'],
|
modules: ['@nuxtjs/axios', '@nuxtjs/dayjs', '@nuxtjs/style-resources' ],
|
||||||
styleResources: {
|
styleResources: {
|
||||||
scss: ['./assets/scss/*.scss'],
|
scss: ['./assets/scss/*.scss'],
|
||||||
},
|
},
|
||||||
// proxy: {
|
proxy: {
|
||||||
// "/api/": {
|
"/api/": {
|
||||||
// target: "http://0.0.0.0:9999/",
|
target: "http://0.0.0.0:9999/",
|
||||||
// //target: "http://192.168.0.152:8082/",
|
//target: "http://192.168.0.152:8082/",
|
||||||
// pathRewrite: {
|
pathRewrite: {
|
||||||
// "^/api/": ""
|
"^/api/": ""
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// },
|
},
|
||||||
axios: {
|
axios: {
|
||||||
//baseURL: "http://dotest.kfems.kr:9997",
|
//baseURL: "http://dotest.kfems.kr:9997",
|
||||||
proxy: true,
|
proxy: true,
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
<v-row ref="searchFilter">
|
<common-page-title />
|
||||||
|
<v-row ref="searchFilter" class="mt-2">
|
||||||
<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>
|
||||||
@ -23,7 +24,7 @@
|
|||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
<v-row ref="contents" class="mt-4">
|
<v-row ref="contents" class="mt-4">
|
||||||
<v-col :cols="6" class="h100">
|
<v-col :cols="6" class="h100 pr-2">
|
||||||
<v-card class="pb-5">
|
<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">메뉴 리스트</v-card-title>
|
<v-card-title class="pa-0">메뉴 리스트</v-card-title>
|
||||||
@ -34,12 +35,12 @@
|
|||||||
<div class="h100 px-4" style="height:calc(100% - 70px)">
|
<div class="h100 px-4" style="height:calc(100% - 70px)">
|
||||||
<div ref="treeGridParent" class="w100 h100">
|
<div ref="treeGridParent" class="w100 h100">
|
||||||
<component :ref="gridName + myPrgmId" :is="loadTree ? 'Grid' : null" :gridName="gridName"
|
<component :ref="gridName + myPrgmId" :is="loadTree ? 'Grid' : null" :gridName="gridName"
|
||||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData" :dataPath="dataPathExample" />
|
:parentPrgmId="myPrgmId" @getRowsData="getRowData" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="6" class="h100">
|
<v-col :cols="6" class="h100 pl-3">
|
||||||
<v-card class="pb-5">
|
<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">메뉴 상세</v-card-title>
|
<v-card-title class="pa-0">메뉴 상세</v-card-title>
|
||||||
@ -91,21 +92,9 @@ export default {
|
|||||||
return {
|
return {
|
||||||
myPrgmId: myPrgmId,
|
myPrgmId: myPrgmId,
|
||||||
gridName: 'treeGrid',
|
gridName: 'treeGrid',
|
||||||
loadTree: true,
|
loadTree: false,
|
||||||
detailList: myDetail,
|
detailList: myDetail,
|
||||||
addRowFg: false,
|
addRowFg: false,
|
||||||
dataPathExample: {
|
|
||||||
"treeGrid": {
|
|
||||||
data: sampleData,
|
|
||||||
column: [
|
|
||||||
{ header: '메뉴명', name: 'menuNm' },
|
|
||||||
{ header: 'prgmId ', name: 'prgmId', hidden: true },
|
|
||||||
{ header: 'sysDivCd ', name: 'sysDivCd', hidden: true },
|
|
||||||
],
|
|
||||||
option: myOptions,
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -162,10 +151,17 @@ export default {
|
|||||||
gridInit() {
|
gridInit() {
|
||||||
const treeGridHeight = this.$refs.treeGridParent.offsetHeight - 30;
|
const treeGridHeight = this.$refs.treeGridParent.offsetHeight - 30;
|
||||||
const myOptionsTree = {
|
const myOptionsTree = {
|
||||||
|
columnOptions: {
|
||||||
|
resizable: true,
|
||||||
|
},
|
||||||
treeColumnOptions: {
|
treeColumnOptions: {
|
||||||
name: 'menuNm',
|
name: 'menuNm',
|
||||||
},
|
},
|
||||||
scrollX: false,
|
scrollX: false,
|
||||||
|
header: {
|
||||||
|
height: 37,
|
||||||
|
},
|
||||||
|
rowHeight: 37,
|
||||||
};
|
};
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
@ -178,6 +174,17 @@ export default {
|
|||||||
this.setGridColumn({
|
this.setGridColumn({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
value: [
|
value: [
|
||||||
|
{
|
||||||
|
header: '',
|
||||||
|
name: '',
|
||||||
|
align: 'center',
|
||||||
|
width: 20,
|
||||||
|
formatter: (props) => {
|
||||||
|
return `<label class="custom-radio">
|
||||||
|
<span class="radio-mark"></span>
|
||||||
|
</label>`;
|
||||||
|
}
|
||||||
|
},
|
||||||
{ header: '메뉴명', name: 'menuNm' },
|
{ header: '메뉴명', name: 'menuNm' },
|
||||||
{ header: 'prgmId ', name: 'prgmId', hidden: true },
|
{ header: 'prgmId ', name: 'prgmId', hidden: true },
|
||||||
{ header: 'sysDivCd ', name: 'sysDivCd', hidden: true },
|
{ header: 'sysDivCd ', name: 'sysDivCd', hidden: true },
|
||||||
@ -480,6 +487,7 @@ const myDetail = [
|
|||||||
list: 'sysDivCdList',
|
list: 'sysDivCdList',
|
||||||
itemText: 'commCdNm',
|
itemText: 'commCdNm',
|
||||||
itemValue: 'commCd',
|
itemValue: 'commCd',
|
||||||
|
iconShow: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'CheckBox',
|
type: 'CheckBox',
|
||||||
|
|||||||
@ -3,13 +3,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 algin="center" no-gutters>
|
<v-row algin="end" no-gutters>
|
||||||
<v-col :cols="3">
|
<v-col :cols="3">
|
||||||
<InputText
|
<InputText
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
label="역할ID"
|
label="역할ID"
|
||||||
valueNm="roleId"
|
valueNm="roleId"
|
||||||
:searchOption="true"
|
:searchOption="true"
|
||||||
|
customClass="input-large"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="3">
|
<v-col :cols="3">
|
||||||
@ -18,39 +19,35 @@
|
|||||||
label="역할명"
|
label="역할명"
|
||||||
valueNm="roleNm"
|
valueNm="roleNm"
|
||||||
:searchOption="true"
|
:searchOption="true"
|
||||||
|
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 />
|
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-row ref="contents">
|
|
||||||
<v-col cols="12" lg="2" class="h100">
|
<v-row ref="contents" >
|
||||||
|
<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>
|
||||||
</v-card-title>
|
</v-card-title>
|
||||||
<div class="px-5" style="height:calc(100% - 100px)">
|
<div ref="gridParent" class="px-5" style="height: 60vh;">
|
||||||
<div
|
<component
|
||||||
ref="gridParent"
|
:is="loadGrid ? 'Grid' : null"
|
||||||
class="w100 h100"
|
:ref="gridName + myPrgmId"
|
||||||
>
|
:gridName="gridName"
|
||||||
<component
|
:parentPrgmId="myPrgmId"
|
||||||
:is="loadGrid ? 'Grid' : null"
|
@getRowsData="getRowData"
|
||||||
:ref="gridName + myPrgmId"
|
/>
|
||||||
:gridName="gridName"
|
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
@getRowsData="getRowData"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</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>
|
||||||
@ -67,19 +64,19 @@
|
|||||||
:style="{ minHeight: '36px' }"
|
:style="{ minHeight: '36px' }"
|
||||||
>[미배정]메뉴리스트</span
|
>[미배정]메뉴리스트</span
|
||||||
>
|
>
|
||||||
<div class="px-5" style="height:calc(100% - 64px)">
|
<div ref="treeGridParent" class="px-0 mt-2" style="height: 60vh;">
|
||||||
<div
|
<!-- <div
|
||||||
ref="treeGridParent"
|
ref="treeGridParent"
|
||||||
class="w100 h100"
|
class="w100 h100"
|
||||||
>
|
>
|
||||||
<component
|
</div> -->
|
||||||
:is="loadTreeGrid ? 'Grid' : null"
|
<component
|
||||||
:ref="gridName2 + myPrgmId"
|
:is="loadTreeGrid ? 'Grid' : null"
|
||||||
:gridName="gridName2"
|
:ref="gridName2 + myPrgmId"
|
||||||
:parentPrgmId="myPrgmId"
|
:gridName="gridName2"
|
||||||
@getRowsData="getUnAsgnRowData"
|
:parentPrgmId="myPrgmId"
|
||||||
/>
|
@getRowsData="getUnAsgnRowData"
|
||||||
</div>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="1">
|
<v-col :cols="1">
|
||||||
@ -110,20 +107,20 @@
|
|||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<div class="px-5" style="height:calc(100% - 64px)">
|
<div ref="treeGridParent2" class="px-0 mt-2" style="height: 60vh;">
|
||||||
<div
|
<!-- <div
|
||||||
ref="treeGridParent2"
|
ref="treeGridParent2"
|
||||||
class="w100 h100"
|
class="w100 h100"
|
||||||
>
|
>
|
||||||
<component
|
</div> -->
|
||||||
:is="loadTreeGrid2 ? 'Grid' : null"
|
<component
|
||||||
:ref="gridName3 + myPrgmId"
|
:is="loadTreeGrid2 ? 'Grid' : null"
|
||||||
:gridName="gridName3"
|
:ref="gridName3 + myPrgmId"
|
||||||
:parentPrgmId="myPrgmId"
|
:gridName="gridName3"
|
||||||
:editorGrid="true"
|
:parentPrgmId="myPrgmId"
|
||||||
@getRowsData="getAsgnRowData"
|
:editorGrid="true"
|
||||||
/>
|
@getRowsData="getAsgnRowData"
|
||||||
</div>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
@ -400,6 +397,14 @@ export default {
|
|||||||
];
|
];
|
||||||
|
|
||||||
const myTreeColumns = [
|
const myTreeColumns = [
|
||||||
|
{
|
||||||
|
align: 'center',
|
||||||
|
width: 30,
|
||||||
|
minWidth: 60,
|
||||||
|
formatter: (props) => {
|
||||||
|
return `<span class="custom-radio"><span class="radio-mark"></span></span>`;
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
header: '메뉴명',
|
header: '메뉴명',
|
||||||
name: 'menuNm',
|
name: 'menuNm',
|
||||||
@ -412,6 +417,14 @@ export default {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
const myTreeColumns2 = [
|
const myTreeColumns2 = [
|
||||||
|
{
|
||||||
|
align: 'center',
|
||||||
|
width: 30,
|
||||||
|
minWidth: 60,
|
||||||
|
formatter: (props) => {
|
||||||
|
return `<span class="custom-radio"><span class="radio-mark"></span></span>`;
|
||||||
|
}
|
||||||
|
},
|
||||||
{ 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' },
|
||||||
@ -549,6 +562,7 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
async getRowData(data) {
|
async getRowData(data) {
|
||||||
|
|
||||||
await this.setPageData({
|
await this.setPageData({
|
||||||
rowGridSelectKey: data.rowKey,
|
rowGridSelectKey: data.rowKey,
|
||||||
rowGridSelectData: {
|
rowGridSelectData: {
|
||||||
|
|||||||
@ -67,7 +67,6 @@
|
|||||||
:gridName="gridName"
|
:gridName="gridName"
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
@getRowsData="getRowData"
|
@getRowsData="getRowData"
|
||||||
:dataPath="dataPathMock"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -132,22 +131,8 @@ export default {
|
|||||||
return {
|
return {
|
||||||
myPrgmId: myPrgmId,
|
myPrgmId: myPrgmId,
|
||||||
gridName: 'rowGrid',
|
gridName: 'rowGrid',
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
detailList: myDetail,
|
detailList: myDetail,
|
||||||
dataPathMock : {
|
|
||||||
rowGrid: {
|
|
||||||
column: [
|
|
||||||
{ header: '추가 정보 그룹', name: 'addGrpId', align: 'left' },
|
|
||||||
{ header: '추가 정보 ID', name: 'addInfoId', align: 'left' },
|
|
||||||
{ header: '추가 정보 명', name: 'addInfoNm', align: 'left' },
|
|
||||||
{ header: 'Data 형식', name: 'addInfoDataKind', align: 'center' },
|
|
||||||
{ header: '사용여부', name: 'useFg', align: 'center' },
|
|
||||||
],
|
|
||||||
data: dataMockExample,
|
|
||||||
defaultRow: dataMockExample,
|
|
||||||
option: {},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -518,43 +503,4 @@ const myDetail = [
|
|||||||
placeholder: '시스템 자동입력',
|
placeholder: '시스템 자동입력',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const dataMockExample = [
|
|
||||||
{
|
|
||||||
addGrpId: 'GRP001',
|
|
||||||
addInfoId: 'INFO001',
|
|
||||||
addInfoNm: '온도 센서',
|
|
||||||
addInfoDataKind: 'DATA01',
|
|
||||||
useFg: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
addGrpId: 'GRP002',
|
|
||||||
addInfoId: 'INFO002',
|
|
||||||
addInfoNm: '압력 센서',
|
|
||||||
addInfoDataKind: 'DATA02',
|
|
||||||
useFg: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
addGrpId: 'GRP003',
|
|
||||||
addInfoId: 'INFO003',
|
|
||||||
addInfoNm: '압력 센서',
|
|
||||||
addInfoDataKind: 'DATA03',
|
|
||||||
useFg: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
addGrpId: 'GRP004',
|
|
||||||
addInfoId: 'INFO004',
|
|
||||||
addInfoNm: '압력 센서',
|
|
||||||
addInfoDataKind: 'DATA04',
|
|
||||||
useFg: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
addGrpId: 'GRP005',
|
|
||||||
addInfoId: 'INFO005',
|
|
||||||
addInfoNm: '압력 센서',
|
|
||||||
addInfoDataKind: 'DATA05',
|
|
||||||
useFg: false,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -4,13 +4,16 @@
|
|||||||
<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"
|
||||||
|
labelCols="12"
|
||||||
|
textCols="12"
|
||||||
/>
|
/>
|
||||||
<!-- <component
|
<!-- <component
|
||||||
:is="'selectCodeList'"
|
:is="'selectCodeList'"
|
||||||
@ -35,6 +38,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 +47,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>
|
||||||
@ -124,7 +129,7 @@
|
|||||||
<template v-else-if="item.id == 'AsgnRoleByUser'">
|
<template v-else-if="item.id == 'AsgnRoleByUser'">
|
||||||
<v-col :cols="3" class="h100">
|
<v-col :cols="3" class="h100">
|
||||||
<v-card-title
|
<v-card-title
|
||||||
class="pa-0 custom-title-4"
|
class="pa-0 custom-subtitle-tab"
|
||||||
style="min-height:36px;"
|
style="min-height:36px;"
|
||||||
>역할리스트</v-card-title
|
>역할리스트</v-card-title
|
||||||
>
|
>
|
||||||
@ -150,7 +155,7 @@
|
|||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="8" class="h100">
|
<v-col :cols="8" class="h100">
|
||||||
<div class="d-flex align-center justify-space-between">
|
<div class="d-flex align-center justify-space-between">
|
||||||
<v-card-title class="pa-0 custom-title-4">
|
<v-card-title class="pa-0 custom-subtitle-tab">
|
||||||
사용자 역할</v-card-title
|
사용자 역할</v-card-title
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
@ -937,7 +942,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 +954,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 +967,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 +978,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 +989,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 +1004,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 +1015,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 +1027,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 +1039,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 +1051,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 +1071,4 @@ function sha512(str) {
|
|||||||
.update(str)
|
.update(str)
|
||||||
.digest('hex');
|
.digest('hex');
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@ -5,13 +5,13 @@
|
|||||||
<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>
|
||||||
|
<div></div>
|
||||||
<v-col :cols="2.5">
|
<v-col :cols="2.5">
|
||||||
<InputText
|
<InputText
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
label="배치ID"
|
label="배치ID"
|
||||||
valueNm="batchId"
|
valueNm="batchId"
|
||||||
:searchOption="true"
|
:searchOption="true"
|
||||||
:iconShow="true"
|
|
||||||
customClass="input-large"
|
customClass="input-large"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
@ -21,7 +21,6 @@
|
|||||||
label="배치명"
|
label="배치명"
|
||||||
valueNm="batchNm"
|
valueNm="batchNm"
|
||||||
:searchOption="true"
|
:searchOption="true"
|
||||||
:iconShow="true"
|
|
||||||
customClass="input-large"
|
customClass="input-large"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
@ -33,7 +32,6 @@
|
|||||||
:dataKey="'execRsltCd'"
|
:dataKey="'execRsltCd'"
|
||||||
:sendParam="{ commGrpCd: 'CO_BATCH_EXEC_RSLT', useFg: '1' }"
|
:sendParam="{ commGrpCd: 'CO_BATCH_EXEC_RSLT', useFg: '1' }"
|
||||||
:addAll="true"
|
:addAll="true"
|
||||||
:iconShow="true"
|
|
||||||
customClass="select-large"
|
customClass="select-large"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
@ -42,13 +40,13 @@
|
|||||||
:is="'Datepicker'"
|
:is="'Datepicker'"
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
:label="'조회기간'"
|
:label="'조회기간'"
|
||||||
:customClass="'input-large'"
|
customClass="datepicker-large"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="2" class="text-right d-flex align-end justify-end ga-1" style="gap: 4px">
|
<div class="text-right d-flex align-end justify-end pl-9" style="gap: 8px">
|
||||||
<BtnSearch size="large" />
|
<BtnSearch />
|
||||||
<BtnExcelDownload :parentPrgmId="myPrgmId" :gridName="gridName" size="large" />
|
<BtnExcelDownload :parentPrgmId="myPrgmId" :gridName="gridName" size="large" />
|
||||||
</v-col>
|
</div>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
@ -63,11 +61,10 @@
|
|||||||
<div ref="gridParent" class="px-5 h100">
|
<div ref="gridParent" class="px-5 h100">
|
||||||
<component
|
<component
|
||||||
:ref="gridName"
|
:ref="gridName"
|
||||||
:is=" 'Grid' "
|
:is="loadGrid ? 'Grid' : null"
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
:gridName="gridName"
|
:gridName="gridName"
|
||||||
@getRowsData="getRowData"
|
@getRowsData="getRowData"
|
||||||
:dataPath="dataPathMock"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -140,56 +137,10 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
myPrgmId: myPrgmId,
|
myPrgmId: myPrgmId,
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
gridName: 'rowGrid',
|
gridName: 'rowGrid',
|
||||||
// rowGridOrigin: [],
|
// rowGridOrigin: [],
|
||||||
detailList: myDetail,
|
detailList: myDetail,
|
||||||
dataPathMock : {
|
|
||||||
'rowGrid': {
|
|
||||||
column: [
|
|
||||||
{ header: 'No.', name: 'batchLogSeq', align: 'center', width: 100 },
|
|
||||||
{ header: '배치ID', name: 'batchId', align: 'center', width: 100 },
|
|
||||||
{ header: '배치명', name: 'batchNm', align: 'left', width: 150 },
|
|
||||||
{ header: '실행 일자', name: 'execDt', align: 'center', width: 80 },
|
|
||||||
{
|
|
||||||
header: '실행 결과',
|
|
||||||
name: 'execRsltCd',
|
|
||||||
align: 'center',
|
|
||||||
width: 80,
|
|
||||||
// formatter({ value }) {
|
|
||||||
// let retVal = '';
|
|
||||||
// const newValue = _this.pageData.execRsltCdList.filter(
|
|
||||||
// item => item.commCd == value,
|
|
||||||
// );
|
|
||||||
// if (newValue.length > 0) {
|
|
||||||
// retVal = newValue[0].commCdNm;
|
|
||||||
// }
|
|
||||||
// return retVal;
|
|
||||||
// },
|
|
||||||
}, // "1": 프로그램, "2": 팝업
|
|
||||||
{ header: '실행 로그', name: 'execLogCont', minWidth: 150 },
|
|
||||||
{
|
|
||||||
header: '배치 시작 일시',
|
|
||||||
name: 'batchStrtDttm',
|
|
||||||
align: 'center',
|
|
||||||
width: 160,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '배치 종료 일시',
|
|
||||||
name: 'batchEndDttm',
|
|
||||||
align: 'center',
|
|
||||||
width: 160,
|
|
||||||
},
|
|
||||||
{ header: '등록자NO', name: 'regUserNo', width: 120 },
|
|
||||||
{ header: '등록일시', name: 'regDttm', align: 'center', width: 160 },
|
|
||||||
{ header: '수정자NO', name: 'procUserNo', width: 120 },
|
|
||||||
{ header: '수정일시', name: 'procDttm', align: 'center', width: 160 },
|
|
||||||
],
|
|
||||||
data: dataMockExample,
|
|
||||||
defaultRow: dataMockExample,
|
|
||||||
option: {},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -248,14 +199,6 @@ export default {
|
|||||||
init() {
|
init() {
|
||||||
// this.layoutInit();
|
// this.layoutInit();
|
||||||
this.gridInit();
|
this.gridInit();
|
||||||
|
|
||||||
// _this.pageData = {
|
|
||||||
// execRsltCdList: [
|
|
||||||
// { commCd: '1', commCdNm: '성공' },
|
|
||||||
// { commCd: '2', commCdNm: '실패' },
|
|
||||||
// ],
|
|
||||||
// };
|
|
||||||
|
|
||||||
},
|
},
|
||||||
// layoutInit() {
|
// layoutInit() {
|
||||||
// const searchFilterHeight = this.$refs.searchFilter.offsetHeight;
|
// const searchFilterHeight = this.$refs.searchFilter.offsetHeight;
|
||||||
@ -368,13 +311,10 @@ export default {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
// async getRowData(data) {
|
async getRowData(data) {
|
||||||
async getRowData() {
|
|
||||||
console.log("something")
|
|
||||||
this.setPageData({
|
this.setPageData({
|
||||||
// rowGridSelectKey: data.rowKey,
|
rowGridSelectKey: data.rowKey,
|
||||||
rowGridSelectKey: 1,
|
rowGridSelectData: data,
|
||||||
rowGridSelectData: fakeRowData,
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
compareData(type, newDt) {
|
compareData(type, newDt) {
|
||||||
@ -481,86 +421,13 @@ const defaultData = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const dataMockExample = [
|
|
||||||
{
|
|
||||||
batchLogSeq: 1,
|
|
||||||
batchId: 'BATCH001',
|
|
||||||
batchNm: '일일 데이터 백업',
|
|
||||||
execDt: '2025-07-15',
|
|
||||||
execRsltCd: '1', // sẽ được formatter thành "성공" hoặc tương tự
|
|
||||||
execLogCont: '백업 완료. 오류 없음.',
|
|
||||||
batchStrtDttm: '2025-07-15 01:00:00',
|
|
||||||
batchEndDttm: '2025-07-15 01:30:00',
|
|
||||||
regUserNo: 'admin01',
|
|
||||||
regDttm: '2025-07-15 01:00:00',
|
|
||||||
procUserNo: 'admin02',
|
|
||||||
procDttm: '2025-07-15 01:35:00',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
batchLogSeq: 2,
|
|
||||||
batchId: 'BATCH002',
|
|
||||||
batchNm: '월간 리포트 생성',
|
|
||||||
execDt: '2025-07-01',
|
|
||||||
execRsltCd: '2',
|
|
||||||
execLogCont: '리포트 생성 중 오류 발생: 파일 접근 실패.',
|
|
||||||
batchStrtDttm: '2025-07-01 03:00:00',
|
|
||||||
batchEndDttm: '2025-07-01 03:10:00',
|
|
||||||
regUserNo: 'reportUser',
|
|
||||||
regDttm: '2025-07-01 03:00:00',
|
|
||||||
procUserNo: 'admin03',
|
|
||||||
procDttm: '2025-07-01 03:15:00',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
batchLogSeq: 3,
|
|
||||||
batchId: 'BATCH003',
|
|
||||||
batchNm: '사용자 통계 갱신',
|
|
||||||
execDt: '2025-07-14',
|
|
||||||
execRsltCd: '1',
|
|
||||||
execLogCont: '통계 갱신 완료.',
|
|
||||||
batchStrtDttm: '2025-07-14 23:00:00',
|
|
||||||
batchEndDttm: '2025-07-14 23:20:00',
|
|
||||||
regUserNo: 'statUser',
|
|
||||||
regDttm: '2025-07-14 23:00:00',
|
|
||||||
procUserNo: 'admin01',
|
|
||||||
procDttm: '2025-07-14 23:25:00',
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
const fakeRowData = {
|
|
||||||
rowKey: 1,
|
|
||||||
batchLogSeq: 1,
|
|
||||||
batchId: 'BATCH001',
|
|
||||||
batchNm: '일일 데이터 백업',
|
|
||||||
execDt: '2025-07-15',
|
|
||||||
execRsltCd: '1',
|
|
||||||
execLogCont: JSON.stringify({
|
|
||||||
session: {
|
|
||||||
userNo: 'admin01',
|
|
||||||
userNm: '관리자',
|
|
||||||
comId: 'SKCC',
|
|
||||||
locale: 'ko_KR',
|
|
||||||
},
|
|
||||||
batch: {
|
|
||||||
comId: 'SKCC',
|
|
||||||
totStdDt: '20230110',
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
batchStrtDttm: '2025-07-15 01:00:00',
|
|
||||||
batchEndDttm: '2025-07-15 01:30:00',
|
|
||||||
regUserNo: 'admin01',
|
|
||||||
regDttm: '2025-07-15 01:00:00',
|
|
||||||
procUserNo: 'admin02',
|
|
||||||
procDttm: '2025-07-15 01:35:00',
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
const myDetail = [
|
const myDetail = [
|
||||||
{
|
{
|
||||||
type: 'TextArea',
|
type: 'TextArea',
|
||||||
valueNm: 'execLogCont',
|
valueNm: 'execLogCont',
|
||||||
readonly: true,
|
readonly: true,
|
||||||
cols: 12,
|
cols: 12,
|
||||||
class: 'py-2 transparent',
|
class: 'py-2',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
</script>
|
</script>
|
||||||
@ -1,7 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
<!-- 조회조견 -->
|
<!-- 조회조견 -->
|
||||||
<v-row ref="searchFilter">
|
<common-page-title />
|
||||||
|
<v-row ref="searchFilter" class="mt-2">
|
||||||
<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>
|
||||||
@ -14,7 +15,7 @@
|
|||||||
:customClass="'input-large'" />
|
:customClass="'input-large'" />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="2.5">
|
<v-col :cols="2.5">
|
||||||
<!-- <component
|
<component
|
||||||
:is="'selectCodeList'"
|
:is="'selectCodeList'"
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
:label="'배치 실행 구분'"
|
:label="'배치 실행 구분'"
|
||||||
@ -22,28 +23,28 @@
|
|||||||
:sendParam="{ commGrpCd: 'CO_BATCH_EXEC_TP', useFg: '1' }"
|
:sendParam="{ commGrpCd: 'CO_BATCH_EXEC_TP', useFg: '1' }"
|
||||||
:addAll="true"
|
:addAll="true"
|
||||||
:customClass="'select-large'"
|
:customClass="'select-large'"
|
||||||
/> -->
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="2.5">
|
<v-col :cols="2.5" class="pr-4">
|
||||||
<!-- <component
|
<component
|
||||||
:is="'selectCodeList'"
|
:is="'selectCodeList'"
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
:label="'사용여부'"
|
:label="'사용여부'"
|
||||||
:dataKey="'searchUseFg'"
|
:dataKey="'searchUseFg'"
|
||||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
||||||
:customClass="'select-large'"
|
:customClass="'select-large'"
|
||||||
/> -->
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
<BtnSearch size="large" />
|
<BtnSearch size="large" class="mr-2" />
|
||||||
|
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
<v-row ref="contents">
|
<v-row ref="contents" class="mt-4">
|
||||||
<!-- 배치 리스트 -->
|
<!-- 배치 리스트 -->
|
||||||
<v-col :cols="6" class="h100">
|
<v-col :cols="6" class="h100 pr-2">
|
||||||
<v-card class="pb-5">
|
<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>
|
<!-- <v-card-title>
|
||||||
@ -57,14 +58,14 @@
|
|||||||
<div class="px-4">
|
<div class="px-4">
|
||||||
<div ref="gridParent" class="h100 w100">
|
<div ref="gridParent" class="h100 w100">
|
||||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :parentPrgmId="myPrgmId"
|
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :parentPrgmId="myPrgmId"
|
||||||
:gridName="gridName" @getRowsData="getRowData" :dataPath="dataPathExample" />
|
:gridName="gridName" @getRowsData="getRowData" />
|
||||||
</div>
|
</div>
|
||||||
<!-- </v-card-actions> -->
|
<!-- </v-card-actions> -->
|
||||||
</div>
|
</div>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
<!-- 배치 상세 -->
|
<!-- 배치 상세 -->
|
||||||
<v-col :cols="6" class="h100">
|
<v-col :cols="6" class="h100 pl-3">
|
||||||
<v-card class="pd-y-20 h100">
|
<v-card class="pd-y-20 h100">
|
||||||
<v-card-title class="d-flex justify-space-between align-end pa-4">
|
<v-card-title class="d-flex justify-space-between align-end pa-4">
|
||||||
<span class="tit ft-size_20 ft-weight_600">배치 상세</span>
|
<span class="tit ft-size_20 ft-weight_600">배치 상세</span>
|
||||||
@ -77,7 +78,7 @@
|
|||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-dialog ref="popModal" v-model="dialog" width="700" overlay-color="#000" overlay-opacity="0.8" scrollable>
|
<v-dialog ref="popModal" v-model="dialog" width="800" overlay-color="#000" overlay-opacity="0.8" scrollable>
|
||||||
<v-card style="height: 100%">
|
<v-card style="height: 100%">
|
||||||
<v-card-title class="v-card__title d-flex align-center justify-space-between">
|
<v-card-title class="v-card__title d-flex align-center justify-space-between">
|
||||||
<span class="custom-title-4">DB 프로시져 파라메터 설정</span>
|
<span class="custom-title-4">DB 프로시져 파라메터 설정</span>
|
||||||
@ -91,7 +92,6 @@
|
|||||||
<v-col cols="12" class="text-right"> </v-col>
|
<v-col cols="12" class="text-right"> </v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</div>
|
</div>
|
||||||
<v-divider></v-divider>
|
|
||||||
<v-card-text style="height: 300px;">
|
<v-card-text style="height: 300px;">
|
||||||
<div id="gridParent" class="mt-6" style="height:calc(100% - 36px);">
|
<div id="gridParent" class="mt-6" style="height:calc(100% - 36px);">
|
||||||
<div style="height:calc(100% - 36px);">
|
<div style="height:calc(100% - 36px);">
|
||||||
@ -101,7 +101,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
<v-divider></v-divider>
|
|
||||||
<v-card-actions>
|
<v-card-actions>
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
<v-btn color="primary" dark @click="setParamChangeData()">확인</v-btn>
|
<v-btn color="primary" dark @click="setParamChangeData()">확인</v-btn>
|
||||||
@ -155,76 +154,16 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
myPrgmId: myPrgmId,
|
myPrgmId: myPrgmId,
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
gridName: 'rowGrid',
|
gridName: 'rowGrid',
|
||||||
dataPathExample: {
|
|
||||||
"rowGrid": {
|
|
||||||
data: [
|
|
||||||
{
|
|
||||||
"batchId": "BATCH001",
|
|
||||||
"batchNm": "일일 데이터 백업",
|
|
||||||
"batchExecTp": "자동 실행",
|
|
||||||
"batchDupExecFg": "N",
|
|
||||||
"useFg": "사용"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"batchId": "BATCH002",
|
|
||||||
"batchNm": "월간 리포트 생성",
|
|
||||||
"batchExecTp": "수동 실행",
|
|
||||||
"batchDupExecFg": "Y",
|
|
||||||
"useFg": "사용"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"batchId": "BATCH003",
|
|
||||||
"batchNm": "로그 정리 작업",
|
|
||||||
"batchExecTp": "자동 실행",
|
|
||||||
"batchDupExecFg": "N",
|
|
||||||
"useFg": "미사용"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"batchId": "BATCH004",
|
|
||||||
"batchNm": "사용자 통계 수집",
|
|
||||||
"batchExecTp": "예약 실행",
|
|
||||||
"batchDupExecFg": "Y",
|
|
||||||
"useFg": "사용"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"batchId": "BATCH005",
|
|
||||||
"batchNm": "서버 상태 점검",
|
|
||||||
"batchExecTp": "수동 실행",
|
|
||||||
"batchDupExecFg": "N",
|
|
||||||
"useFg": "미사용"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
,
|
|
||||||
column: [
|
|
||||||
{ header: '배치ID', name: 'batchId', align: 'center', width: 100 },
|
|
||||||
{ header: '배치명', name: 'batchNm', minWidth: 200 },
|
|
||||||
{
|
|
||||||
header: '배치 실행 구분',
|
|
||||||
name: 'batchExecTp',
|
|
||||||
align: 'left',
|
|
||||||
minWidth: 190,
|
|
||||||
},
|
|
||||||
{ header: '배치 중복 여부', name: 'batchDupExecFg', hidden: true },
|
|
||||||
{
|
|
||||||
header: '사용여부',
|
|
||||||
name: 'useFg',
|
|
||||||
align: 'center',
|
|
||||||
width: 145,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// rowGridOrigin: [],
|
// rowGridOrigin: [],
|
||||||
detailList: myDetail,
|
detailList: myDetail,
|
||||||
|
|
||||||
// 파라메터 셋팅용 변수
|
// 파라메터 셋팅용 변수
|
||||||
dialog: false,
|
dialog: false,
|
||||||
gridNameParam: 'paramGrid',
|
gridNameParam: 'paramGrid',
|
||||||
paramLoadGrid: true,
|
paramLoadGrid: false,
|
||||||
selectedGridNameParamRow: null,
|
selectedGridNameParamRow: null,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -292,7 +231,7 @@ export default {
|
|||||||
}),
|
}),
|
||||||
init() {
|
init() {
|
||||||
// this.layoutInit();
|
// this.layoutInit();
|
||||||
// this.gridInit();
|
this.gridInit();
|
||||||
this.gridParamInit();
|
this.gridParamInit();
|
||||||
},
|
},
|
||||||
// layoutInit() {
|
// layoutInit() {
|
||||||
@ -309,6 +248,10 @@ export default {
|
|||||||
columnOptions: {
|
columnOptions: {
|
||||||
resizable: true,
|
resizable: true,
|
||||||
},
|
},
|
||||||
|
header: {
|
||||||
|
height: 37,
|
||||||
|
},
|
||||||
|
rowHeight: 37,
|
||||||
};
|
};
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
@ -384,7 +327,7 @@ export default {
|
|||||||
},
|
},
|
||||||
async search() {
|
async search() {
|
||||||
// console.log("search");
|
// console.log("search");
|
||||||
// await this.getRowGridData();
|
await this.getRowGridData();
|
||||||
await this.setPageData({
|
await this.setPageData({
|
||||||
isFind: false,
|
isFind: false,
|
||||||
});
|
});
|
||||||
@ -629,20 +572,20 @@ export default {
|
|||||||
gridKey: this.gridNameParam,
|
gridKey: this.gridNameParam,
|
||||||
value: myOptions,
|
value: myOptions,
|
||||||
});
|
});
|
||||||
// setTimeout(() => { });
|
setTimeout(() => { });
|
||||||
|
|
||||||
// let modeList = [];
|
let modeList = [];
|
||||||
// const modeIn = { text: 'IN', value: 'IN' };
|
const modeIn = { text: 'IN', value: 'IN' };
|
||||||
// const modeOut = { text: 'OUT', value: 'OUT' };
|
const modeOut = { text: 'OUT', value: 'OUT' };
|
||||||
// modeList.push(modeIn);
|
modeList.push(modeIn);
|
||||||
// modeList.push(modeOut);
|
modeList.push(modeOut);
|
||||||
// let typeList = [];
|
let typeList = [];
|
||||||
// const typeInt = { text: 'INT', value: 'int' };
|
const typeInt = { text: 'INT', value: 'int' };
|
||||||
// const typeStr = { text: 'STRING', value: 'str' };
|
const typeStr = { text: 'STRING', value: 'str' };
|
||||||
// const typeFunc = { text: 'FUNCTION', value: 'function' };
|
const typeFunc = { text: 'FUNCTION', value: 'function' };
|
||||||
// typeList.push(typeInt);
|
typeList.push(typeInt);
|
||||||
// typeList.push(typeStr);
|
typeList.push(typeStr);
|
||||||
// typeList.push(typeFunc);
|
typeList.push(typeFunc);
|
||||||
|
|
||||||
const myColumns = [
|
const myColumns = [
|
||||||
{ header: 'ID', name: 'id', editor: 'text' },
|
{ header: 'ID', name: 'id', editor: 'text' },
|
||||||
@ -664,27 +607,27 @@ export default {
|
|||||||
header: 'Type',
|
header: 'Type',
|
||||||
name: 'type',
|
name: 'type',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
// formatter({ value }) {
|
formatter({ value }) {
|
||||||
// let retVal = '';
|
let retVal = '';
|
||||||
// switch (value) {
|
switch (value) {
|
||||||
// case 'int':
|
case 'int':
|
||||||
// retVal = 'INT';
|
retVal = 'INT';
|
||||||
// break;
|
break;
|
||||||
// case 'str':
|
case 'str':
|
||||||
// retVal = 'STRING';
|
retVal = 'STRING';
|
||||||
// break;
|
break;
|
||||||
// case 'function':
|
case 'function':
|
||||||
// retVal = 'FUNCTION';
|
retVal = 'FUNCTION';
|
||||||
// break;
|
break;
|
||||||
// }
|
}
|
||||||
// return retVal;
|
return retVal;
|
||||||
// },
|
},
|
||||||
// editor: {
|
editor: {
|
||||||
// type: 'select',
|
type: 'select',
|
||||||
// options: {
|
options: {
|
||||||
// listItems: typeList,
|
listItems: typeList,
|
||||||
// },
|
},
|
||||||
// },
|
},
|
||||||
},
|
},
|
||||||
{ header: '값', name: 'val', editor: 'text' },
|
{ header: '값', name: 'val', editor: 'text' },
|
||||||
{ header: 'rowStat', name: 'rowStat', hidden: true },
|
{ header: 'rowStat', name: 'rowStat', hidden: true },
|
||||||
@ -703,86 +646,49 @@ export default {
|
|||||||
|
|
||||||
// /* this.pageData.paramStrData 처리 */
|
// /* this.pageData.paramStrData 처리 */
|
||||||
// // console.log("this.pageData.paramStrData : ", JSON.parse(this.pageData.paramStrData));
|
// // console.log("this.pageData.paramStrData : ", JSON.parse(this.pageData.paramStrData));
|
||||||
// let rowData = {};
|
let rowData = {};
|
||||||
// if (
|
if (
|
||||||
// this.pageData.paramStrData.startsWith('{') &&
|
this.pageData.paramStrData.startsWith('{') &&
|
||||||
// this.pageData.paramStrData.endsWith('}')
|
this.pageData.paramStrData.endsWith('}')
|
||||||
// ) {
|
) {
|
||||||
// rowData = JSON.parse(this.pageData.paramStrData);
|
rowData = JSON.parse(this.pageData.paramStrData);
|
||||||
// }
|
}
|
||||||
// var keys = Object.keys(rowData); //키를 가져옵니다. 이때, keys 는 반복가능한 객체가 됩니다.
|
var keys = Object.keys(rowData); //키를 가져옵니다. 이때, keys 는 반복가능한 객체가 됩니다.
|
||||||
// for (var i = 0; i < keys.length; i++) {
|
for (var i = 0; i < keys.length; i++) {
|
||||||
// var key = keys[i];
|
var key = keys[i];
|
||||||
// res.push(rowData[key]);
|
res.push(rowData[key]);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// const newRes = res.map(item => {
|
const newRes = res.map(item => {
|
||||||
// const newObj = {
|
const newObj = {
|
||||||
// ...item,
|
...item,
|
||||||
// rowStat: null,
|
rowStat: null,
|
||||||
// id: item.id || '',
|
id: item.id || '',
|
||||||
// mode: item.mode || 'in',
|
mode: item.mode || 'in',
|
||||||
// type: item.type || 'str',
|
type: item.type || 'str',
|
||||||
// val: item.val || '',
|
val: item.val || '',
|
||||||
// };
|
};
|
||||||
// return newObj;
|
return newObj;
|
||||||
// });
|
});
|
||||||
|
|
||||||
const newRes = [
|
|
||||||
{
|
|
||||||
"id": "VAR001",
|
|
||||||
"mode": "OUT",
|
|
||||||
"type": "int",
|
|
||||||
"val": "100",
|
|
||||||
"rowStat": "C"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "VAR002",
|
|
||||||
"mode": "IN",
|
|
||||||
"type": "str",
|
|
||||||
"val": "Hello World",
|
|
||||||
"rowStat": "U"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "FUNC001",
|
|
||||||
"mode": "out",
|
|
||||||
"type": "function",
|
|
||||||
"val": "calculateSum()",
|
|
||||||
"rowStat": "C"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "VAR003",
|
|
||||||
"mode": "IN",
|
|
||||||
"type": "int",
|
|
||||||
"val": "42",
|
|
||||||
"rowStat": "D"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "VAR004",
|
|
||||||
"mode": "OUT",
|
|
||||||
"type": "str",
|
|
||||||
"val": "Sample Text",
|
|
||||||
"rowStat": "C"
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
this.setGridData({
|
this.setGridData({
|
||||||
gridKey: this.gridNameParam,
|
gridKey: this.gridNameParam,
|
||||||
value: newRes,
|
value: newRes,
|
||||||
});
|
});
|
||||||
// this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
// if (newRes.length > 0) {
|
if (newRes.length > 0) {
|
||||||
// try {
|
try {
|
||||||
// this.$refs[this.gridNameParam].focus({
|
this.$refs[this.gridNameParam].focus({
|
||||||
// //rowKey: 0,
|
//rowKey: 0,
|
||||||
// rowKey: 0,
|
rowKey: 0,
|
||||||
// setScroll: true,
|
setScroll: true,
|
||||||
// });
|
});
|
||||||
// } catch (error) {
|
} catch (error) {
|
||||||
// console.log('error[nextTick grid] : ', error);
|
console.log('error[nextTick grid] : ', error);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// });
|
});
|
||||||
this.paramLoadGrid = true;
|
this.paramLoadGrid = true;
|
||||||
},
|
},
|
||||||
xlsDataBind(res) {
|
xlsDataBind(res) {
|
||||||
@ -812,21 +718,21 @@ export default {
|
|||||||
inputClick(event, item, valueNm) {
|
inputClick(event, item, valueNm) {
|
||||||
if (valueNm == 'refVal1') {
|
if (valueNm == 'refVal1') {
|
||||||
this.dialog = true;
|
this.dialog = true;
|
||||||
// const rowIdxKey = this.$refs[this.gridName].gridInstance.invoke(
|
const rowIdxKey = this.$refs[this.gridName].gridInstance.invoke(
|
||||||
// 'getFocusedCell',
|
'getFocusedCell',
|
||||||
// ).rowKey;
|
).rowKey;
|
||||||
// const selectRowData = this.$refs[this.gridName].gridInstance.invoke(
|
const selectRowData = this.$refs[this.gridName].gridInstance.invoke(
|
||||||
// 'getRow',
|
'getRow',
|
||||||
// rowIdxKey,
|
rowIdxKey,
|
||||||
// );
|
);
|
||||||
|
|
||||||
// if (selectRowData.batchExecTp == 'DP') {
|
if (selectRowData.batchExecTp == 'DP') {
|
||||||
// // 여기에 팝업 레이어 띠우기 기능 추가
|
// 여기에 팝업 레이어 띠우기 기능 추가
|
||||||
// this.pageData.paramStrData = event.target.value;
|
this.pageData.paramStrData = event.target.value;
|
||||||
// this.pageData.paramChangeDataTarget = event.target;
|
this.pageData.paramChangeDataTarget = event.target;
|
||||||
// this.getRowParamData();
|
this.getRowParamData();
|
||||||
// this.dialog = true;
|
this.dialog = true;
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setParamChangeData() {
|
setParamChangeData() {
|
||||||
|
|||||||
@ -1,67 +1,49 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
<v-row ref="searchFilter">
|
<common-page-title />
|
||||||
|
<v-row ref="searchFilter" class="mt-2">
|
||||||
<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="2">
|
<v-col cols="3">
|
||||||
<component
|
<component :is="'SelectBlocMstr'" :parentPrgmId="myPrgmId" :sendParam="{ comId }"
|
||||||
:is="'SelectBlocMstr'"
|
:labelCols="12" :textCols="12" :customClass="'select-large'" />
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
:sendParam="{ comId }"
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="3">
|
<v-col cols="3">
|
||||||
<!-- <component :is="'SelectDateSolo'" :parentPrgmId="myPrgmId" /> -->
|
<!-- <component :is="'SelectDateSolo'" :parentPrgmId="myPrgmId" /> -->
|
||||||
<DatePicker :parentPrgmId="myPrgmId" :label="'조회연월'" />
|
<DatePicker :parentPrgmId="myPrgmId" customClass="datepicker-large" :label="'조회연월'" />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="7" class="text-right">
|
<v-col cols="6" class="text-right">
|
||||||
<v-btn :ripple="false" @click="search()">조회</v-btn>
|
<BtnSearch @click="search()" size="large" />
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-row ref="contents" id="CalendarMngContent">
|
<v-row ref="contents" id="CalendarMngContent" class="mt-4">
|
||||||
<v-col cols="12" lg="4" class="h100">
|
<v-col cols="12" lg="4" class=" pr-2">
|
||||||
<v-card class="w100">
|
<v-card class="w100">
|
||||||
<v-card-title class="d-flex justify-space-between align-center">
|
<v-card-title class="d-flex justify-space-between align-center">
|
||||||
<span class="custom-title-4">캘린더 리스트</span>
|
<span class="custom-title-4">캘린더 리스트</span>
|
||||||
<Buttons
|
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
:bindingData="gridName"
|
|
||||||
:btnActionsFnc="btnActions"
|
|
||||||
/>
|
|
||||||
</v-card-title>
|
</v-card-title>
|
||||||
<v-card-actions
|
<v-card-actions class="pt-0 px-5 pb-5" :style="{ height: 'calc(100% - 10px)' }">
|
||||||
class="pt-0 px-5 pb-5"
|
|
||||||
:style="{ height: 'calc(100% - 72.56px)' }"
|
|
||||||
>
|
|
||||||
<div ref="gridParent" class="w100 h100">
|
<div ref="gridParent" class="w100 h100">
|
||||||
<component
|
<component class="w100" :ref="gridName + myPrgmId" :is="loadGrid ? 'Grid' : null"
|
||||||
class="w100"
|
:gridName="gridName" :parentPrgmId="myPrgmId" :editorGrid="true"
|
||||||
:ref="gridName + myPrgmId"
|
@getRowsData="getRowData" />
|
||||||
:is="loadGrid ? 'Grid' : null"
|
|
||||||
:gridName="gridName"
|
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
:editorGrid="true"
|
|
||||||
@getRowsData="getRowData"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12" lg="8" class="h100">
|
<v-col cols="12" lg="8" class=" pl-3">
|
||||||
<v-card>
|
<v-card>
|
||||||
<v-card-title>
|
<v-card-title>
|
||||||
<span class="custom-title-4">캘린더 미리보기</span>
|
<span class="custom-title-4">캘린더 미리보기</span>
|
||||||
</v-card-title>
|
</v-card-title>
|
||||||
<v-card-actions class="px-5" :style="{ height: 'calc(100% - 62px)' }">
|
<v-card-actions class="px-5 d-block" >
|
||||||
<Calendar
|
<Calendar :parentPrgmId="myPrgmId" :gridName="gridName" :headerVisible="false"
|
||||||
:parentPrgmId="myPrgmId"
|
:showTitle="false" />
|
||||||
:gridName="gridName"
|
|
||||||
:headerVisible="false"
|
|
||||||
/>
|
|
||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
@ -75,6 +57,7 @@ import { mapState, mapMutations, mapActions } from 'vuex';
|
|||||||
import Utility from '~/plugins/utility';
|
import Utility from '~/plugins/utility';
|
||||||
import Grid from '~/components/common/Grid';
|
import Grid from '~/components/common/Grid';
|
||||||
import Buttons from '~/components/common/button/Buttons';
|
import Buttons from '~/components/common/button/Buttons';
|
||||||
|
import BtnSearch from '~/components/common/button/BtnSearch';
|
||||||
import SelectBlocMstr from '@/components/common/select/SelectBlocMstr';
|
import SelectBlocMstr from '@/components/common/select/SelectBlocMstr';
|
||||||
// import SelectDateSolo from "@/components/common/select/SelectDateSolo";
|
// import SelectDateSolo from "@/components/common/select/SelectDateSolo";
|
||||||
import InputText from '@/components/common/input/InputText';
|
import InputText from '@/components/common/input/InputText';
|
||||||
@ -107,6 +90,7 @@ export default {
|
|||||||
InputText,
|
InputText,
|
||||||
Calendar,
|
Calendar,
|
||||||
DatePicker,
|
DatePicker,
|
||||||
|
BtnSearch
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -165,8 +149,8 @@ export default {
|
|||||||
defaultData: defaultData,
|
defaultData: defaultData,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
created() {},
|
created() { },
|
||||||
mounted() {},
|
mounted() { },
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations({
|
...mapMutations({
|
||||||
setPageData: 'setPageData',
|
setPageData: 'setPageData',
|
||||||
@ -192,7 +176,10 @@ export default {
|
|||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
value: Object.assign(Utility.defaultGridOption(gridHeight), {
|
value: Object.assign(Utility.defaultGridOption(gridHeight), {
|
||||||
scrollX: false,
|
scrollX: false, header: {
|
||||||
|
height: 37,
|
||||||
|
},
|
||||||
|
rowHeight: 37,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -229,7 +216,7 @@ export default {
|
|||||||
|
|
||||||
document
|
document
|
||||||
.querySelector('#CalendarMngContent')
|
.querySelector('#CalendarMngContent')
|
||||||
.addEventListener('click', function(event) {
|
.addEventListener('click', function (event) {
|
||||||
if (event.target.className == 'calendarOption') {
|
if (event.target.className == 'calendarOption') {
|
||||||
// el.size = 1;
|
// el.size = 1;
|
||||||
}
|
}
|
||||||
@ -363,12 +350,12 @@ export default {
|
|||||||
//rowKey: 0,
|
//rowKey: 0,
|
||||||
rowKey:
|
rowKey:
|
||||||
this.pageData.rowGridSelectKey == '' ||
|
this.pageData.rowGridSelectKey == '' ||
|
||||||
this.pageData.rowGridSelectKey == null
|
this.pageData.rowGridSelectKey == null
|
||||||
? 0
|
? 0
|
||||||
: this.pageData.rowGridSelectKey ==
|
: this.pageData.rowGridSelectKey ==
|
||||||
this.$refs[this.gridName + this.myPrgmId].getData().length - 1
|
this.$refs[this.gridName + this.myPrgmId].getData().length - 1
|
||||||
? this.pageData.rowGridSelectKey
|
? this.pageData.rowGridSelectKey
|
||||||
: 0,
|
: 0,
|
||||||
columnName: 'dt',
|
columnName: 'dt',
|
||||||
setScroll: true,
|
setScroll: true,
|
||||||
});
|
});
|
||||||
@ -488,6 +475,7 @@ const defaultData = {
|
|||||||
.selectbox:focus {
|
.selectbox:focus {
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.calendarOption {
|
.calendarOption {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
position: relative;
|
position: relative;
|
||||||
@ -501,20 +489,26 @@ select.selectbox {
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%; /* 높이 초기화 */
|
height: 100%;
|
||||||
|
/* 높이 초기화 */
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
line-height: normal; /* line-height 초기화 */
|
line-height: normal;
|
||||||
font-family: inherit; /* 폰트 상속 */
|
/* line-height 초기화 */
|
||||||
|
font-family: inherit;
|
||||||
|
/* 폰트 상속 */
|
||||||
border: 0;
|
border: 0;
|
||||||
// opacity: 0; /* 숨기기 */
|
// opacity: 0; /* 숨기기 */
|
||||||
// filter:alpha(opacity=0); /* IE8 숨기기 */
|
// filter:alpha(opacity=0); /* IE8 숨기기 */
|
||||||
// -webkit-appearance: none; /* 네이티브 외형 감추기 */
|
// -webkit-appearance: none; /* 네이티브 외형 감추기 */
|
||||||
// -moz-appearance: none;
|
// -moz-appearance: none;
|
||||||
// appearance: none;
|
// appearance: none;
|
||||||
opacity: 1; /* 숨기기 */
|
opacity: 1;
|
||||||
filter: alpha(opacity=1); /* IE8 숨기기 */
|
/* 숨기기 */
|
||||||
-webkit-appearance: auto; /* 네이티브 외형 감추기 */
|
filter: alpha(opacity=1);
|
||||||
|
/* IE8 숨기기 */
|
||||||
|
-webkit-appearance: auto;
|
||||||
|
/* 네이티브 외형 감추기 */
|
||||||
-moz-appearance: auto;
|
-moz-appearance: auto;
|
||||||
appearance: auto;
|
appearance: auto;
|
||||||
}
|
}
|
||||||
@ -541,4 +535,17 @@ select.selectbox {
|
|||||||
border-width: 0px;
|
border-width: 0px;
|
||||||
// box-sizing: border-box;
|
// box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
::v-deep {
|
||||||
|
.custom-vc-calender {
|
||||||
|
.vc-header {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vc-weeks {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,33 +1,65 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
|
<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">
|
||||||
<v-row align="center" no-gutters>
|
<v-row align="center" no-gutters>
|
||||||
<v-col :cols="4">
|
<v-col :cols="3">
|
||||||
<component
|
<component
|
||||||
:is="'selectCodeList'"
|
:is="'selectCodeList'"
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
:label="'시스템구분'"
|
:label="'시스템구분'"
|
||||||
dataKey="sysDivCd"
|
dataKey="sysDivCd"
|
||||||
|
:labelCols="12"
|
||||||
|
:textCols="12"
|
||||||
:sendParam="{ commGrpCd: 'CO_SYSDIV', useFg: '1' }"
|
:sendParam="{ commGrpCd: 'CO_SYSDIV', useFg: '1' }"
|
||||||
:addAll="true"
|
:addAll="true"
|
||||||
|
customClass="select-large"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="4">
|
<v-col :cols="3">
|
||||||
<component
|
<component
|
||||||
:is="'selectCodeList'"
|
:is="'selectCodeList'"
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
:label="'사용여부'"
|
:label="'사용여부'"
|
||||||
|
:labelCols="12"
|
||||||
|
:textCols="12"
|
||||||
:dataKey="'useFg'"
|
:dataKey="'useFg'"
|
||||||
|
customClass="select-large"
|
||||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="4" class="text-right">
|
<v-col :cols="3">
|
||||||
<BtnSearch @click="search" />
|
<InputText
|
||||||
|
:parentPrgmId="myPrgmId"
|
||||||
|
label="그룹코드"
|
||||||
|
valueNm="commGrpCd"
|
||||||
|
:searchOption="true"
|
||||||
|
:labelCols="12"
|
||||||
|
:textCols="12"
|
||||||
|
customClass="input-large"
|
||||||
|
|
||||||
|
/>
|
||||||
|
</v-col>
|
||||||
|
<v-col :cols="3">
|
||||||
|
<InputText
|
||||||
|
:parentPrgmId="myPrgmId"
|
||||||
|
label="그룹코드명"
|
||||||
|
valueNm="commGrpCdNm"
|
||||||
|
:searchOption="true"
|
||||||
|
:labelCols="12"
|
||||||
|
:textCols="12"
|
||||||
|
customClass="input-large"
|
||||||
|
|
||||||
|
/>
|
||||||
|
</v-col>
|
||||||
|
|
||||||
|
<v-col :cols="12" class="text-right">
|
||||||
|
<BtnSearch style="margin-top:20px" @click="search" size="large" />
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-row align="center" no-gutters>
|
<!-- <v-row align="center" no-gutters>
|
||||||
<v-col :cols="4">
|
<v-col :cols="4">
|
||||||
<InputText
|
<InputText
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
@ -48,7 +80,7 @@
|
|||||||
:textCols="8"
|
:textCols="8"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row> -->
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
@ -85,7 +117,7 @@
|
|||||||
<v-card class="pb-5">
|
<v-card class="pb-5">
|
||||||
<v-card-title>공통그룹코드 상세</v-card-title>
|
<v-card-title>공통그룹코드 상세</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" :hide-slider="true">
|
<v-tabs v-model="tab" >
|
||||||
<v-tab
|
<v-tab
|
||||||
v-for="item in items"
|
v-for="item in items"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@ -132,6 +164,7 @@ import Form from '~/components/common/form/Form';
|
|||||||
import CommCdTab from '@/components/pages/comm/CommCdTab';
|
import CommCdTab from '@/components/pages/comm/CommCdTab';
|
||||||
import Grid from '~/components/common/Grid';
|
import Grid from '~/components/common/Grid';
|
||||||
import Utility from '~/plugins/utility';
|
import Utility from '~/plugins/utility';
|
||||||
|
import PageTitle from "~/components/common/PageTitle";
|
||||||
|
|
||||||
let myTitle;
|
let myTitle;
|
||||||
let myPrgmId;
|
let myPrgmId;
|
||||||
@ -158,6 +191,7 @@ export default {
|
|||||||
Form,
|
Form,
|
||||||
CommCdTab,
|
CommCdTab,
|
||||||
Grid,
|
Grid,
|
||||||
|
PageTitle
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -229,6 +263,9 @@ export default {
|
|||||||
|
|
||||||
const myOptions = {
|
const myOptions = {
|
||||||
scrollX: false,
|
scrollX: false,
|
||||||
|
header: {
|
||||||
|
height: 38,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
@ -241,7 +278,7 @@ export default {
|
|||||||
{
|
{
|
||||||
header: '시스템구분',
|
header: '시스템구분',
|
||||||
name: 'sysDivCd',
|
name: 'sysDivCd',
|
||||||
align: 'center',
|
align: 'left',
|
||||||
formatter({ value }) {
|
formatter({ value }) {
|
||||||
let commCdNm = '';
|
let commCdNm = '';
|
||||||
if (sysCdList.length > 0) {
|
if (sysCdList.length > 0) {
|
||||||
@ -278,7 +315,7 @@ export default {
|
|||||||
{
|
{
|
||||||
header: '사용여부',
|
header: '사용여부',
|
||||||
name: 'useFg',
|
name: 'useFg',
|
||||||
align: 'center',
|
align: 'left',
|
||||||
formatter({ value }) {
|
formatter({ value }) {
|
||||||
const newValue = _this.pageData.useFgList.filter(
|
const newValue = _this.pageData.useFgList.filter(
|
||||||
item => item.commCd == value,
|
item => item.commCd == value,
|
||||||
@ -326,7 +363,7 @@ export default {
|
|||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
value: newRes,
|
value: newRes,
|
||||||
});
|
});
|
||||||
this.loadGrid = true;
|
this.loadGrid = true;
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
if (newRes.length > 0) {
|
if (newRes.length > 0) {
|
||||||
this.$refs[this.gridName].focus({
|
this.$refs[this.gridName].focus({
|
||||||
@ -554,7 +591,10 @@ const myDetail = [
|
|||||||
valueNm: 'commGrpCd',
|
valueNm: 'commGrpCd',
|
||||||
disabled: true,
|
disabled: true,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2',
|
labelCols: 12,
|
||||||
|
textCols: 12,
|
||||||
|
iconShow: true,
|
||||||
|
class: 'py-2 pr-2',
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -563,7 +603,10 @@ const myDetail = [
|
|||||||
valueNm: 'commGrpNm',
|
valueNm: 'commGrpNm',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2',
|
labelCols: 12,
|
||||||
|
textCols: 12,
|
||||||
|
iconShow: true,
|
||||||
|
class: 'py-2 pl-2',
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -572,7 +615,10 @@ const myDetail = [
|
|||||||
valueNm: 'sysDivCd',
|
valueNm: 'sysDivCd',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2',
|
labelCols: 12,
|
||||||
|
textCols: 12,
|
||||||
|
iconShow: true,
|
||||||
|
class: 'py-2 pr-2 mt-3',
|
||||||
list: 'sysDivCdList',
|
list: 'sysDivCdList',
|
||||||
itemText: 'commCdNm',
|
itemText: 'commCdNm',
|
||||||
itemValue: 'commCd',
|
itemValue: 'commCd',
|
||||||
@ -584,7 +630,10 @@ const myDetail = [
|
|||||||
valueNm: 'useFg',
|
valueNm: 'useFg',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2',
|
labelCols: 12,
|
||||||
|
textCols: 12,
|
||||||
|
iconShow: true,
|
||||||
|
class: 'py-2 pl-2 mt-10',
|
||||||
value: { '1': true, '0': false },
|
value: { '1': true, '0': false },
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
@ -594,7 +643,10 @@ const myDetail = [
|
|||||||
valueNm: 'rmrk',
|
valueNm: 'rmrk',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2',
|
labelCols: 12,
|
||||||
|
textCols: 12,
|
||||||
|
iconShow: true,
|
||||||
|
class: 'py-2 pr-2 mt-3',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
|
<CommonPageTitle />
|
||||||
<!-- 리스트 페이지 시작 -->
|
<!-- 리스트 페이지 시작 -->
|
||||||
<div v-if="pageActionFlag == 'list'" class="h1001">
|
<div v-if="pageActionFlag == 'list'" class="h1001">
|
||||||
<v-card class="" >
|
<v-card class="" >
|
||||||
@ -14,10 +15,10 @@
|
|||||||
<!-- <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="px-50" style="min-height: 70vh;">
|
||||||
<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" />
|
||||||
</div>
|
</div>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
@ -26,7 +27,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 리스트 페이지 끝 -->
|
<!-- 리스트 페이지 끝 -->
|
||||||
<!-- 상세보기 페이지 시작 -->
|
<!-- 상세보기 페이지 시작 -->
|
||||||
<div v-if="pageActionFlag == 'view'" class="h1001">
|
<div v-if="pageActionFlag == 'view'" >
|
||||||
<v-card>
|
<v-card>
|
||||||
<v-row class="pa-5">
|
<v-row class="pa-5">
|
||||||
<v-col :cols="12" class="d-flex align-center justify-space-between ">
|
<v-col :cols="12" class="d-flex align-center justify-space-between ">
|
||||||
@ -44,25 +45,25 @@
|
|||||||
<a-button @click="viewPageButtonGroupClickEvent('delete')" type="danger" ghost icon="delete">삭제</a-button>
|
<a-button @click="viewPageButtonGroupClickEvent('delete')" type="danger" ghost icon="delete">삭제</a-button>
|
||||||
</div>
|
</div>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="12">
|
<v-col :cols="12" class="mt-5">
|
||||||
<p class="custom-title-3 mb-2"> 제목 </p>
|
<v-card-title class="custom-title-6 pa-0">{{ viewActionData.title }}</v-card-title>
|
||||||
<v-text-field v-model="viewActionData.title" class="v-input__custom" hide-details :readonly="true">
|
|
||||||
</v-text-field>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="12" style="min-height:calc(90vh - 218px);" class="pa-5">
|
<v-col :cols="12" style="min-height: 30vh;" class="pa-0">
|
||||||
<viewer v-if="viewActionData.viewerFlag" ref="tuiViewer" height="inherit"
|
<viewer v-if="viewActionData.viewerFlag" ref="tuiViewer" height="inherit"
|
||||||
:initialValue="viewActionData.content" theme="white"
|
:initialValue="viewActionData.content" theme="white"
|
||||||
:class="isDarkMode ? 'theme--white' : 'theme--black'" />
|
:class="[isDarkMode ? 'theme--white' : 'theme--black', 'custom-view pa-3']" />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="6">
|
<v-col :cols="6" class="mt-5">
|
||||||
<p class="custom-title-3 mb-2">파일목록</p>
|
<v-card-title class="custom-title-7 pa-0">
|
||||||
|
파일목록
|
||||||
|
</v-card-title>
|
||||||
<div v-for="fileData in viewActionData.fileData"
|
<div v-for="fileData in viewActionData.fileData"
|
||||||
:key="fileData.apndFileId"
|
:key="fileData.apndFileId"
|
||||||
class="file-item">
|
class="file-item">
|
||||||
<a @click.prevent="downloadFile(fileData)">
|
<a @click.prevent="downloadFile(fileData)">
|
||||||
<div class="d-flex justify-space-between search-box-label">
|
<div class="d-flex justify-start search-box-label">
|
||||||
<v-icon>mdi-paperclip</v-icon>
|
<v-icon>mdi-paperclip</v-icon>
|
||||||
<span class="file-item-name">{{ fileData.apndFileNm + '.' + fileData.apndFileExt }}</span>
|
<span class="file-item-name ml-2">{{ fileData.apndFileNm + '.' + fileData.apndFileExt }}</span>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@ -72,28 +73,24 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 상세보기 페이지 끝 -->
|
<!-- 상세보기 페이지 끝 -->
|
||||||
<!-- 작성 페이지 시작 -->
|
<!-- 작성 페이지 시작 -->
|
||||||
<div v-if="pageActionFlag == 'write'" class="h1001">
|
<div v-if="pageActionFlag == 'write'" >
|
||||||
<v-card>
|
<v-card>
|
||||||
<div class="pa-5">
|
<div class="pa-5">
|
||||||
<v-row class="pa-50">
|
<v-row class="pa-50">
|
||||||
<v-col :cols="12" class="">
|
<v-col :cols="12" class="">
|
||||||
<v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
|
<v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="12" class="custom-title-4-new mt-4">
|
<v-col :cols="12" class="mt-4">
|
||||||
<p class="custom-title-3 mb-2">제목</p>
|
<v-card-title class="custom-title-7 pa-0">제목</v-card-title>
|
||||||
<v-text-field v-model="writeActionData.title" class="v-input__custom" hide-details outlined>
|
<v-text-field v-model="writeActionData.title" class="v-input__custom" hide-details outlined>
|
||||||
</v-text-field>
|
</v-text-field>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="12" style="min-height: calc(90vh - 270px);">
|
<v-col :cols="12" style="min-height: calc(100vh - 450px);">
|
||||||
<editor ref="tuiEditor" height="100%" initialEditType="wysiwyg" />
|
<editor ref="tuiEditor" height="100%" initialEditType="wysiwyg" />
|
||||||
</v-col>
|
</v-col>
|
||||||
|
|
||||||
<v-col :cols="12" class="mt-2">
|
<v-col :cols="6" class="mt-5">
|
||||||
<p class="custom-title-3 mb-2">
|
<v-card-title class="custom-title-7 pa-0">파일첨부</v-card-title>
|
||||||
파일첨부
|
|
||||||
</p>
|
|
||||||
</v-col>
|
|
||||||
<v-col :cols="6">
|
|
||||||
<div class="" v-if="writeActionData.fileData">
|
<div class="" v-if="writeActionData.fileData">
|
||||||
<div
|
<div
|
||||||
v-for="(fileData, index) in writeActionData.fileData"
|
v-for="(fileData, index) in writeActionData.fileData"
|
||||||
@ -129,25 +126,23 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 작성 페이지 끝 -->
|
<!-- 작성 페이지 끝 -->
|
||||||
<!-- 답글 작성 페이지 시작 -->
|
<!-- 답글 작성 페이지 시작 -->
|
||||||
<div v-if="pageActionFlag == 'reply'" class="h1001">
|
<div v-if="pageActionFlag == 'reply'" >
|
||||||
<v-card class="pa-5">
|
<v-card class="pa-5">
|
||||||
<v-row align="center" class="mt-0">
|
<v-row align="center" class="mt-0">
|
||||||
<v-col :cols="12" class="">
|
<v-col :cols="12" class="">
|
||||||
<v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
|
<v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="12">
|
<v-col :cols="12" class="mt-4">
|
||||||
<p class="custom-title-3 mb-2">제목</p>
|
<v-card-title class="custom-title-7 pa-0">제목</v-card-title>
|
||||||
<v-text-field v-model="replyActionData.title" class="v-input__custom" placeholder="제목" outlined
|
<v-text-field v-model="replyActionData.title" class="v-input__custom" outlined
|
||||||
hide-details>
|
hide-details>
|
||||||
</v-text-field>
|
</v-text-field>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="12" style="height: calc(100vh - 270px);" class="mt-2">
|
<v-col :cols="12" style="height: calc(100vh - 270px);" class="mt-2">
|
||||||
<editor ref="tuiReplyEditor" height="100%" initialEditType="wysiwyg" />
|
<editor ref="tuiReplyEditor" height="100%" initialEditType="wysiwyg" />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="6" class="mt-4">
|
<v-col :cols="6" class="mt-5">
|
||||||
<p class="custom-title-3 mb-2">
|
<v-card-title class="custom-title-7 pa-0">파일첨부</v-card-title>
|
||||||
파일첨부
|
|
||||||
</p>
|
|
||||||
<div class="" v-if="replyActionData.fileData">
|
<div class="" v-if="replyActionData.fileData">
|
||||||
<div
|
<div
|
||||||
v-for="(fileData, index) in replyActionData.fileData"
|
v-for="(fileData, index) in replyActionData.fileData"
|
||||||
@ -175,7 +170,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 답글 작성 페이지 끝 -->
|
<!-- 답글 작성 페이지 끝 -->
|
||||||
<!-- 수정 페이지 시작 -->
|
<!-- 수정 페이지 시작 -->
|
||||||
<div v-if="pageActionFlag == 'update'" class="h1001">
|
<div v-if="pageActionFlag == 'update'" >
|
||||||
<v-card>
|
<v-card>
|
||||||
<div class="pa-5">
|
<div class="pa-5">
|
||||||
<v-row align="center" no-gutters>
|
<v-row align="center" no-gutters>
|
||||||
@ -183,16 +178,16 @@
|
|||||||
<v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
|
<v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="12" class="mt-4">
|
<v-col :cols="12" class="mt-4">
|
||||||
<p class="custom-title-3 mb-2">제목</p>
|
<v-card-title class="custom-title-7 pa-0">제목</v-card-title>
|
||||||
<v-text-field v-model="updateActionData.title" class="v-input__custom" placeholder="" hide-details outlined>
|
<v-text-field v-model="updateActionData.title" class="v-input__custom" hide-details outlined>
|
||||||
</v-text-field>
|
</v-text-field>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="12" style="height: calc(90vh - 270px);" class="mt-4" >
|
<v-col :cols="12" style="height: calc(90vh - 270px);" class="mt-4" >
|
||||||
<editor ref="tuiUpdateEditor" height="100%" initialEditType="wysiwyg"
|
<editor ref="tuiUpdateEditor" height="100%" initialEditType="wysiwyg"
|
||||||
:initialValue="updateActionData.content" />
|
:initialValue="updateActionData.content" />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="6">
|
<v-col :cols="6" class="mt-5">
|
||||||
<p class="pa-0 mb-2 custom-title-4-new-1">파일첨부</p>
|
<v-card-title class="custom-title-7 pa-0">파일첨부</v-card-title>
|
||||||
<div class="" v-if="updateActionData.fileData">
|
<div class="" v-if="updateActionData.fileData">
|
||||||
<div
|
<div
|
||||||
v-for="(fileData, index) in updateActionData.fileData"
|
v-for="(fileData, index) in updateActionData.fileData"
|
||||||
@ -266,7 +261,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',
|
||||||
@ -402,7 +398,6 @@ export default {
|
|||||||
this.getGridData();
|
this.getGridData();
|
||||||
},
|
},
|
||||||
gridInit() {
|
gridInit() {
|
||||||
this.loadGrid = false;
|
|
||||||
const gridHeight = this.$refs.contents.offsetHeight - 76;
|
const gridHeight = this.$refs.contents.offsetHeight - 76;
|
||||||
|
|
||||||
const myOptions = {};
|
const myOptions = {};
|
||||||
@ -466,13 +461,6 @@ export default {
|
|||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
value: columnList,
|
value: columnList,
|
||||||
});
|
});
|
||||||
|
|
||||||
// -----------------------TEST------------------
|
|
||||||
this.dataPathMock[this.gridName] = {
|
|
||||||
column: columnList,
|
|
||||||
data: dataPathDataExample,
|
|
||||||
}
|
|
||||||
// -----------------------END TEST--------------
|
|
||||||
this.getGridData();
|
this.getGridData();
|
||||||
},
|
},
|
||||||
async getGridData() {
|
async getGridData() {
|
||||||
@ -481,23 +469,13 @@ export default {
|
|||||||
};
|
};
|
||||||
|
|
||||||
this.loadGrid = false;
|
this.loadGrid = false;
|
||||||
let res = null;
|
|
||||||
try {
|
|
||||||
res = await this.postApiReturn({
|
|
||||||
apiKey: 'selectPostList',
|
|
||||||
resKey: 'postData',
|
|
||||||
sendParam: params,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
catch (err) { }
|
|
||||||
finally {
|
|
||||||
// -----Test mock data-------------
|
|
||||||
if (null === res) {
|
|
||||||
res = dataPathDataExample;
|
|
||||||
}
|
|
||||||
// -----End test
|
|
||||||
}
|
|
||||||
|
|
||||||
|
const res = await this.postApiReturn({
|
||||||
|
apiKey: 'selectPostList',
|
||||||
|
resKey: 'postData',
|
||||||
|
sendParam: params,
|
||||||
|
});
|
||||||
|
|
||||||
this.setGridData({
|
this.setGridData({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
value: res,
|
value: res,
|
||||||
@ -1068,4 +1046,19 @@ const dataPathDataExample = getPathDataExample({
|
|||||||
color: #1677FF;
|
color: #1677FF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
::v-deep {
|
||||||
|
.v-input__slot {
|
||||||
|
padding-left: 8px;
|
||||||
|
padding-right: 8px;
|
||||||
|
}
|
||||||
|
.custom-view {
|
||||||
|
border: 1px solid;
|
||||||
|
border-radius: 6px;
|
||||||
|
height: 100%;
|
||||||
|
@each $theme in dark, light {
|
||||||
|
@include theme($theme);
|
||||||
|
border-color: map-deep-get($config, #{$theme}, "v-input-textarea-border");;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
|
<CommonPageTitle />
|
||||||
<!-- 조회조견 -->
|
<!-- 조회조견 -->
|
||||||
<v-row ref="searchFilter">
|
<v-row ref="searchFilter">
|
||||||
<v-col :cols="12">
|
<v-col :cols="12">
|
||||||
@ -16,7 +17,7 @@
|
|||||||
customClass="select-large"
|
customClass="select-large"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="4">
|
<v-col :cols="3">
|
||||||
<InputText
|
<InputText
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
label="프로그램명"
|
label="프로그램명"
|
||||||
@ -37,7 +38,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,22 +51,21 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="min-height:calc(100% - 70px)">
|
<div ref="gridParent" style="height: 60vh">
|
||||||
<div ref="gridParent" class="px-5 h100">
|
<!-- <div ref="gridParent" class="px-5 h100">
|
||||||
<component
|
</div> -->
|
||||||
:ref="gridName"
|
<component
|
||||||
:is="loadGrid ? 'Grid' : null"
|
:ref="gridName"
|
||||||
:parentPrgmId="myPrgmId"
|
:is="loadGrid ? 'Grid' : null"
|
||||||
:gridName="gridName"
|
:parentPrgmId="myPrgmId"
|
||||||
@getRowsData="getRowData"
|
:gridName="gridName"
|
||||||
:dataPath="dataPathMock"
|
@getRowsData="getRowData"
|
||||||
/>
|
/>
|
||||||
</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">
|
||||||
<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>
|
||||||
@ -262,8 +262,6 @@ export default {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// this.getRowGridData();
|
// this.getRowGridData();
|
||||||
|
|
||||||
this.loadGrid = true;
|
|
||||||
},
|
},
|
||||||
async search() {
|
async search() {
|
||||||
await this.getRowGridData();
|
await this.getRowGridData();
|
||||||
@ -296,7 +294,8 @@ export default {
|
|||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
value: newRes,
|
value: newRes,
|
||||||
});
|
});
|
||||||
|
this.loadGrid = true;
|
||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
if (newRes.length > 0) {
|
if (newRes.length > 0) {
|
||||||
this.$refs[this.gridName].focus({
|
this.$refs[this.gridName].focus({
|
||||||
@ -316,6 +315,11 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
async getRowData(data, gridName) {
|
async getRowData(data, gridName) {
|
||||||
|
// gridKey: gridName,
|
||||||
|
// gridSelect: true,
|
||||||
|
// rowGridSelectKey: data.rowKey,
|
||||||
|
// rowGridSelectData: data,
|
||||||
|
// });
|
||||||
this.setGridSelectData({
|
this.setGridSelectData({
|
||||||
gridKey: gridName,
|
gridKey: gridName,
|
||||||
gridSelect: true,
|
gridSelect: true,
|
||||||
@ -327,6 +331,7 @@ export default {
|
|||||||
rowGridSelectKey: data.rowKey,
|
rowGridSelectKey: data.rowKey,
|
||||||
rowGridSelectData: data,
|
rowGridSelectData: data,
|
||||||
});
|
});
|
||||||
|
|
||||||
},
|
},
|
||||||
compareData(type, newDt) {
|
compareData(type, newDt) {
|
||||||
if (this.selectedCommCdData[type] == newDt) {
|
if (this.selectedCommCdData[type] == newDt) {
|
||||||
|
|||||||
@ -64,7 +64,6 @@
|
|||||||
:gridName="gridName"
|
:gridName="gridName"
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
@getRowsData="getRowData"
|
@getRowsData="getRowData"
|
||||||
:dataPath="dataPathMock"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -137,24 +136,10 @@ export default {
|
|||||||
return {
|
return {
|
||||||
myPrgmId: myPrgmId,
|
myPrgmId: myPrgmId,
|
||||||
gridName: 'rowGrid',
|
gridName: 'rowGrid',
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
tab: null,
|
tab: null,
|
||||||
detailList: myDetail,
|
detailList: myDetail,
|
||||||
initedFlag: false,
|
initedFlag: false,
|
||||||
dataPathMock : {
|
|
||||||
'rowGrid': {
|
|
||||||
column: [
|
|
||||||
{ header: '추가 정보 그룹', name: 'addGrpId', align: 'left' },
|
|
||||||
{ header: '추가 정보 ID', name: 'addInfoId', align: 'left' },
|
|
||||||
{ header: '추가 정보 명', name: 'addInfoNm', align: 'left' },
|
|
||||||
{ header: 'Data 형식', name: 'addInfoDataKind', align: 'center' },
|
|
||||||
{ header: '사용여부', name: 'useFg', align: 'center' },
|
|
||||||
],
|
|
||||||
data: dataMockExample,
|
|
||||||
defaultRow: dataMockExample,
|
|
||||||
option: {},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -642,43 +627,4 @@ const myDetail = [
|
|||||||
placeholder: '시스템 자동입력',
|
placeholder: '시스템 자동입력',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const dataMockExample = [
|
|
||||||
{
|
|
||||||
addGrpId: 'GRP001',
|
|
||||||
addInfoId: 'INFO001',
|
|
||||||
addInfoNm: '온도 센서',
|
|
||||||
addInfoDataKind: 'DATA01',
|
|
||||||
useFg: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
addGrpId: 'GRP002',
|
|
||||||
addInfoId: 'INFO002',
|
|
||||||
addInfoNm: '압력 센서',
|
|
||||||
addInfoDataKind: 'DATA02',
|
|
||||||
useFg: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
addGrpId: 'GRP003',
|
|
||||||
addInfoId: 'INFO003',
|
|
||||||
addInfoNm: '압력 센서',
|
|
||||||
addInfoDataKind: 'DATA03',
|
|
||||||
useFg: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
addGrpId: 'GRP004',
|
|
||||||
addInfoId: 'INFO004',
|
|
||||||
addInfoNm: '압력 센서',
|
|
||||||
addInfoDataKind: 'DATA04',
|
|
||||||
useFg: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
addGrpId: 'GRP005',
|
|
||||||
addInfoId: 'INFO005',
|
|
||||||
addInfoNm: '압력 센서',
|
|
||||||
addInfoDataKind: 'DATA05',
|
|
||||||
useFg: false,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -1,12 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
<v-row ref="searchFilter">
|
<CommonPageTitle />
|
||||||
|
<v-row ref="searchFilter" class="mt-2">
|
||||||
<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">
|
||||||
<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">
|
||||||
@ -16,8 +17,8 @@
|
|||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-row ref="contents">
|
<v-row ref="contents" class="pt-2">
|
||||||
<v-col :cols="5" style="height:100%">
|
<v-col :cols="5" style="height:100%" class="pr-2">
|
||||||
<v-card class="pb-5">
|
<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>
|
||||||
@ -27,12 +28,12 @@
|
|||||||
<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>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="7" style="height:100%">
|
<v-col :cols="7" style="height:100%" class="pl-2">
|
||||||
<v-card class="pb-5">
|
<v-card class="pb-5">
|
||||||
<v-card-title class="custom-title-4 pa-4 pb-2">효율지표 상세
|
<v-card-title class="custom-title-4 pa-4 pb-2">효율지표 상세
|
||||||
</v-card-title>
|
</v-card-title>
|
||||||
@ -212,66 +213,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 +904,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 +1443,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,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
<v-row ref="searchFilter">
|
<CommonPageTitle />
|
||||||
|
<v-row ref="searchFilter" class="mt-2">
|
||||||
<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>
|
||||||
@ -19,36 +20,35 @@
|
|||||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }" :addAll="true" :labelCols="12"
|
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }" :addAll="true" :labelCols="12"
|
||||||
:textCols="12" :customClass="'select-large'" :iconShow="true" />
|
:textCols="12" :customClass="'select-large'" :iconShow="true" />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="2.5">
|
<v-col :cols="2.5" class="pr-4">
|
||||||
<InputText :parentPrgmId="myPrgmId" label="검침개소명" valueNm="readPlcNm" :labelCols="12"
|
<InputText :parentPrgmId="myPrgmId" label="검침개소명" valueNm="readPlcNm" :labelCols="12"
|
||||||
:textCols="12" :searchOption="true" :customClass="'input-large'" :iconShow="true" />
|
:textCols="12" :searchOption="true" :customClass="'input-large'" :iconShow="true" />
|
||||||
</v-col>
|
</v-col>
|
||||||
|
|
||||||
<BtnSearch @click="search" size="large" />
|
<BtnSearch @click="search" size="large" class="mr-2" />
|
||||||
|
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-row ref="contents" class="mt-4">
|
<v-row ref="contents" class="mt-3">
|
||||||
<v-col :cols="5" class="h100">
|
<v-col :cols="5" class="h100 pr-2">
|
||||||
<v-card class="pb-5">
|
<v-card class="pb-5">
|
||||||
<div class="d-flex align-center justify-space-between pa-4 pb-6">
|
<div class="d-flex align-center justify-space-between pa-4 pb-6">
|
||||||
<v-card-title class="pa-0 custom-title-4">검침개소 정보</v-card-title>
|
<v-card-title class="pa-0 custom-title-4">검침개소 정보</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-4">
|
<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 :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
|
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
|
||||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true"
|
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true" />
|
||||||
:dataPath="dataPathExample" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="7" class="h100">
|
<v-col :cols="7" class="h100 pl-2">
|
||||||
<v-card class="pb-5">
|
<v-card class="pb-5">
|
||||||
<v-card-title class="custom-title-4 pb-1 pa-4">검침개소 상세
|
<v-card-title class="custom-title-4 pb-1 pa-4">검침개소 상세
|
||||||
</v-card-title>
|
</v-card-title>
|
||||||
@ -134,7 +134,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
myPrgmId: myPrgmId,
|
myPrgmId: myPrgmId,
|
||||||
gridName: 'rowGrid',
|
gridName: 'rowGrid',
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
tab: null,
|
tab: null,
|
||||||
isImgTabDisabled: false,
|
isImgTabDisabled: false,
|
||||||
items: [
|
items: [
|
||||||
@ -157,47 +157,6 @@ export default {
|
|||||||
],
|
],
|
||||||
detailList: myDetail,
|
detailList: myDetail,
|
||||||
defaultUseFg: 1,
|
defaultUseFg: 1,
|
||||||
dataPathExample: {
|
|
||||||
"rowGrid": {
|
|
||||||
data: sampleData,
|
|
||||||
column: [
|
|
||||||
{
|
|
||||||
header: '',
|
|
||||||
name: '',
|
|
||||||
align: 'center',
|
|
||||||
width: 50,
|
|
||||||
formatter: (props) => {
|
|
||||||
return `<label class="custom-radio">
|
|
||||||
<span class="radio-mark"></span>
|
|
||||||
</label>`;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '검침개소명',
|
|
||||||
name: 'readPlcNm',
|
|
||||||
align: 'left',
|
|
||||||
minWidth: 400,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '개소 종류',
|
|
||||||
name: 'plcKind',
|
|
||||||
minWidth: 100,
|
|
||||||
align: 'center',
|
|
||||||
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '사용 여부',
|
|
||||||
name: 'useFg',
|
|
||||||
minWidth: 100,
|
|
||||||
align: 'center',
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
],
|
|
||||||
option: myOptions,
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// loadTree: false
|
// loadTree: false
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -312,18 +271,18 @@ export default {
|
|||||||
},
|
},
|
||||||
async initData() {
|
async initData() {
|
||||||
let ercList = [];
|
let ercList = [];
|
||||||
// const res = await this.postApiReturn({
|
const res = await this.postApiReturn({
|
||||||
// apiKey: 'selectErcInfo',
|
apiKey: 'selectErcInfo',
|
||||||
// resKey: 'ercInfoData',
|
resKey: 'ercInfoData',
|
||||||
// sendParam: {
|
sendParam: {
|
||||||
// blocId: this.userInfo.blocId,
|
blocId: this.userInfo.blocId,
|
||||||
// },
|
},
|
||||||
// });
|
});
|
||||||
// res.forEach(item => {
|
res.forEach(item => {
|
||||||
// const it = { text: item.ercNm, value: item.ercId };
|
const it = { text: item.ercNm, value: item.ercId };
|
||||||
// ercList.push(it);
|
ercList.push(it);
|
||||||
// });
|
});
|
||||||
// this.setPageData({ ercNmList: ercList });
|
this.setPageData({ ercNmList: ercList });
|
||||||
},
|
},
|
||||||
gridInit() {
|
gridInit() {
|
||||||
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||||
@ -334,10 +293,12 @@ export default {
|
|||||||
resizable: true,
|
resizable: true,
|
||||||
},
|
},
|
||||||
treeColumnOptions: {
|
treeColumnOptions: {
|
||||||
name: 'eccNm', // Showing tree table
|
name: 'readPlcNm',
|
||||||
useIcon: false, // Not using icon
|
|
||||||
indentWidth: 10,
|
|
||||||
},
|
},
|
||||||
|
header: {
|
||||||
|
height: 37,
|
||||||
|
},
|
||||||
|
rowHeight: 37,
|
||||||
};
|
};
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
@ -346,12 +307,22 @@ export default {
|
|||||||
|
|
||||||
const _this = this;
|
const _this = this;
|
||||||
const myColumns = [
|
const myColumns = [
|
||||||
|
{
|
||||||
|
header: '',
|
||||||
|
name: '',
|
||||||
|
align: 'center',
|
||||||
|
formatter: (props) => {
|
||||||
|
return `<span class="custom-radio">
|
||||||
|
<span class="radio-mark"></span>
|
||||||
|
</span>`;
|
||||||
|
}
|
||||||
|
},
|
||||||
{ header: '회사 ID', name: 'comId', hidden: true },
|
{ header: '회사 ID', name: 'comId', hidden: true },
|
||||||
{
|
{
|
||||||
header: '검침개소명',
|
header: '검침개소명',
|
||||||
name: 'readPlcNm',
|
name: 'readPlcNm',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
minWidth: 400,
|
minWidth: 350,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: '검침개소 ID',
|
header: '검침개소 ID',
|
||||||
@ -955,62 +926,50 @@ const defaultData = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const sampleData = [
|
const sampleData = [
|
||||||
{
|
{
|
||||||
readPlcNm: '서울 본사',
|
readPlcNm: '서울 본사',
|
||||||
plcKind: '본사',
|
plcKind: '본사',
|
||||||
useFg: '사용',
|
useFg: '사용',
|
||||||
_children: [
|
_children: [
|
||||||
{
|
{
|
||||||
readPlcNm: '서울 본사 - 1층',
|
readPlcNm: '서울 본사 - 1층',
|
||||||
plcKind: '층',
|
plcKind: '층',
|
||||||
useFg: '사용',
|
useFg: '사용',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
readPlcNm: '서울 본사 - 2층',
|
readPlcNm: '서울 본사 - 2층',
|
||||||
plcKind: '층',
|
plcKind: '층',
|
||||||
useFg: '미사용',
|
useFg: '미사용',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
readPlcNm: '부산 지사',
|
readPlcNm: '부산 지사',
|
||||||
plcKind: '지사',
|
plcKind: '지사',
|
||||||
useFg: '사용',
|
useFg: '사용',
|
||||||
_children: [
|
_children: [
|
||||||
{
|
{
|
||||||
readPlcNm: '부산 지사 - A동',
|
readPlcNm: '부산 지사 - A동',
|
||||||
plcKind: '건물',
|
plcKind: '건물',
|
||||||
useFg: '사용',
|
useFg: '사용',
|
||||||
_children: [
|
_children: [
|
||||||
{
|
{
|
||||||
readPlcNm: '부산 지사 - A동 1층',
|
readPlcNm: '부산 지사 - A동 1층',
|
||||||
plcKind: '층',
|
plcKind: '층',
|
||||||
useFg: '사용',
|
useFg: '사용',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
readPlcNm: '대전 창고',
|
readPlcNm: '대전 창고',
|
||||||
plcKind: '창고',
|
plcKind: '창고',
|
||||||
useFg: '미사용',
|
useFg: '미사용',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const myOptions = {
|
|
||||||
columnOptions: {
|
|
||||||
resizable: true,
|
|
||||||
},
|
|
||||||
treeColumnOptions: {
|
|
||||||
name: 'readPlcNm', // Showing tree table
|
|
||||||
useIcon: false, // Not using icon
|
|
||||||
indentWidth: 10,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
const myDetail = [
|
const myDetail = [
|
||||||
{
|
{
|
||||||
type: 'InputText',
|
type: 'InputText',
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
|
<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">
|
||||||
@ -12,6 +13,7 @@
|
|||||||
:textCols="12"
|
:textCols="12"
|
||||||
:labelCols="12"
|
:labelCols="12"
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
|
:customClass="'select-large'"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="3">
|
<v-col :cols="3">
|
||||||
@ -22,6 +24,7 @@
|
|||||||
dataKey="searchErcKind"
|
dataKey="searchErcKind"
|
||||||
:sendParam="{ commGrpCd: 'EM_ERCKIND', useFg: '1' }"
|
:sendParam="{ commGrpCd: 'EM_ERCKIND', useFg: '1' }"
|
||||||
:addAll="true"
|
:addAll="true"
|
||||||
|
:customClass="'select-large'"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="3">
|
<v-col :cols="3">
|
||||||
@ -34,13 +37,9 @@
|
|||||||
:addAll="true"
|
:addAll="true"
|
||||||
:textCols="12"
|
:textCols="12"
|
||||||
:labelCols="12"
|
:labelCols="12"
|
||||||
|
:customClass="'select-large'"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="3" class="text-right">
|
|
||||||
<BtnSearch @click="search" />
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
<v-row align="center" no-gutters>
|
|
||||||
<v-col :cols="3">
|
<v-col :cols="3">
|
||||||
<component
|
<component
|
||||||
:is="'selectCodeList'"
|
:is="'selectCodeList'"
|
||||||
@ -49,8 +48,11 @@
|
|||||||
dataKey="searchChrgKind"
|
dataKey="searchChrgKind"
|
||||||
:sendParam="{ commGrpCd: 'EM_ENGCHAGKIND', useFg: '1' }"
|
:sendParam="{ commGrpCd: 'EM_ENGCHAGKIND', useFg: '1' }"
|
||||||
:addAll="true"
|
:addAll="true"
|
||||||
|
:customClass="'select-large'"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
<v-row align="center" no-gutters>
|
||||||
<v-col :cols="3">
|
<v-col :cols="3">
|
||||||
<component
|
<component
|
||||||
:is="'selectCodeList'"
|
:is="'selectCodeList'"
|
||||||
@ -59,6 +61,7 @@
|
|||||||
dataKey="useFg"
|
dataKey="useFg"
|
||||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
||||||
:addAll="true"
|
:addAll="true"
|
||||||
|
:customClass="'select-large'"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="3">
|
<v-col :cols="3">
|
||||||
@ -69,13 +72,19 @@
|
|||||||
:textCols="12"
|
:textCols="12"
|
||||||
:labelCols="12"
|
:labelCols="12"
|
||||||
:searchOption="true"
|
:searchOption="true"
|
||||||
|
:customClass="'input-large'"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
|
<v-col :cols="3">
|
||||||
|
</v-col>
|
||||||
|
<v-col :cols="3" class="text-right">
|
||||||
|
<BtnSearch :size="'default'" @click="search" />
|
||||||
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-row ref="contents" style="height: calc(100vh - 400px)">
|
<v-row >
|
||||||
<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">
|
<v-card-title class="d-flex justify-space-between align-end">
|
||||||
@ -105,7 +114,7 @@
|
|||||||
<v-col :cols="7" class="h100">
|
<v-col :cols="7" class="h100">
|
||||||
<v-card class="pb-5">
|
<v-card class="pb-5">
|
||||||
<v-card-title>에너지원 상세</v-card-title>
|
<v-card-title>에너지원 상세</v-card-title>
|
||||||
<div class="px-5" style="height:calc(100% - 70px)">
|
<div class="px-5" style="min-height: auto;">
|
||||||
<v-tabs v-model="tab">
|
<v-tabs v-model="tab">
|
||||||
<v-tab
|
<v-tab
|
||||||
v-for="item in items"
|
v-for="item in items"
|
||||||
@ -117,21 +126,21 @@
|
|||||||
</v-tabs>
|
</v-tabs>
|
||||||
<v-tabs-items
|
<v-tabs-items
|
||||||
v-model="tab"
|
v-model="tab"
|
||||||
style="height: calc(100% - 65px);"
|
|
||||||
class="py-6"
|
class="py-6"
|
||||||
|
style="min-height: auto;"
|
||||||
>
|
>
|
||||||
<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 == 'ercInfoTab'"
|
v-if="item.id == 'ercInfoTab'"
|
||||||
:is="'Form'"
|
:is="'Form'"
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
:detailList="detailList"
|
:detailList="detailList"
|
||||||
@gridEditingFinish="gridEditingFinish"
|
@gridEditingFinish="gridEditingFinish"
|
||||||
/>
|
/>
|
||||||
<ErcChrgInfoTab
|
<ErcChrgInfoTab
|
||||||
v-if="item.id == 'ercChrgInfoTab'"
|
v-if="item.id == 'ercChrgInfoTab'"
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
:innerTabGridInfo="{ tab, idx }"
|
:innerTabGridInfo="{ tab, idx }"
|
||||||
/>
|
/>
|
||||||
</v-tab-item>
|
</v-tab-item>
|
||||||
</v-tabs-items>
|
</v-tabs-items>
|
||||||
@ -323,6 +332,9 @@ export default {
|
|||||||
columnOptions: {
|
columnOptions: {
|
||||||
resizable: true,
|
resizable: true,
|
||||||
},
|
},
|
||||||
|
header: {
|
||||||
|
height: 38,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
@ -332,12 +344,12 @@ export default {
|
|||||||
const _this = this;
|
const _this = this;
|
||||||
const myColumns = [
|
const myColumns = [
|
||||||
{ header: '회사 ID', name: 'comId', hidden: true },
|
{ header: '회사 ID', name: 'comId', hidden: true },
|
||||||
{ header: '에너지원ID', name: 'ercId', width: 120, align: 'center' },
|
{ header: '에너지원ID', name: 'ercId', width: 120, align: 'left' },
|
||||||
{ header: '에너지원명', name: 'ercNm', align: 'left' },
|
{ header: '에너지원명', name: 'ercNm', align: 'left' },
|
||||||
{
|
{
|
||||||
header: '에너지원 유형',
|
header: '에너지원 유형',
|
||||||
name: 'ercKind',
|
name: 'ercKind',
|
||||||
align: 'center',
|
align: 'left',
|
||||||
formatter({ value }) {
|
formatter({ value }) {
|
||||||
let retVal = '';
|
let retVal = '';
|
||||||
const newValue = _this.pageData.ercKindList.filter(
|
const newValue = _this.pageData.ercKindList.filter(
|
||||||
@ -450,7 +462,7 @@ export default {
|
|||||||
header: '사용 여부',
|
header: '사용 여부',
|
||||||
name: 'useFg',
|
name: 'useFg',
|
||||||
width: 95,
|
width: 95,
|
||||||
align: 'center',
|
align: 'left',
|
||||||
formatter({ value }) {
|
formatter({ value }) {
|
||||||
value = value === true ? '1' : '0';
|
value = value === true ? '1' : '0';
|
||||||
const newValue = _this.pageData.useFgList.filter(
|
const newValue = _this.pageData.useFgList.filter(
|
||||||
@ -479,74 +491,24 @@ export default {
|
|||||||
this.loadGrid = true;
|
this.loadGrid = true;
|
||||||
},
|
},
|
||||||
async getRowGridData() {
|
async getRowGridData() {
|
||||||
let res = [
|
let res = [];
|
||||||
{
|
|
||||||
"comId": "COM001",
|
|
||||||
"ercId": "ERC001",
|
|
||||||
"ercNm": "LNG 가스",
|
|
||||||
"ercKind": "GAS",
|
|
||||||
"readObjId": "READ001",
|
|
||||||
"readPlcId": "PLC001",
|
|
||||||
"chrgKind": "FIXED",
|
|
||||||
"unitPrce": 120.5,
|
|
||||||
"prceFg": "1",
|
|
||||||
"peakPow": 500,
|
|
||||||
"elecContId": "EC001",
|
|
||||||
"elecContNm": "계약A",
|
|
||||||
"blocId": "BLOC001",
|
|
||||||
"useFg": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comId": "COM002",
|
|
||||||
"ercId": "ERC002",
|
|
||||||
"ercNm": "태양광",
|
|
||||||
"ercKind": "ELEC",
|
|
||||||
"readObjId": "READ002",
|
|
||||||
"readPlcId": "PLC002",
|
|
||||||
"chrgKind": "VARIABLE",
|
|
||||||
"unitPrce": 95.0,
|
|
||||||
"prceFg": "0",
|
|
||||||
"peakPow": 300,
|
|
||||||
"elecContId": "EC002",
|
|
||||||
"elecContNm": "계약B",
|
|
||||||
"blocId": "BLOC002",
|
|
||||||
"useFg": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comId": "COM003",
|
|
||||||
"ercId": "ERC003",
|
|
||||||
"ercNm": "지열",
|
|
||||||
"ercKind": "HEAT",
|
|
||||||
"readObjId": "READ003",
|
|
||||||
"readPlcId": "PLC003",
|
|
||||||
"chrgKind": "FIXED",
|
|
||||||
"unitPrce": 110.0,
|
|
||||||
"prceFg": "1",
|
|
||||||
"peakPow": 450,
|
|
||||||
"elecContId": "EC003",
|
|
||||||
"elecContNm": "계약C",
|
|
||||||
"blocId": "BLOC003",
|
|
||||||
"useFg": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
;
|
|
||||||
|
|
||||||
// if (this.pageData.blocMstrList.length > 0) {
|
if (this.pageData.blocMstrList.length > 0) {
|
||||||
// res = await this.postApiReturn({
|
res = await this.postApiReturn({
|
||||||
// apiKey: 'selectErcInfo',
|
apiKey: 'selectErcInfo',
|
||||||
// resKey: 'ercInfoData',
|
resKey: 'ercInfoData',
|
||||||
// sendParam: {
|
sendParam: {
|
||||||
// blocId: this.pageData.blocMstrList[this.pageData.blocId].blocId,
|
blocId: this.pageData.blocMstrList[this.pageData.blocId].blocId,
|
||||||
// ercKind: this.pageData.searchErcKind,
|
ercKind: this.pageData.searchErcKind,
|
||||||
// readObjId: this.pageData.searchReadObj,
|
readObjId: this.pageData.searchReadObj,
|
||||||
// chrgKind: this.pageData.searchChrgKind,
|
chrgKind: this.pageData.searchChrgKind,
|
||||||
// useFg: this.pageData.useFg,
|
useFg: this.pageData.useFg,
|
||||||
// ercNmLike: this.pageData.ercNm,
|
ercNmLike: this.pageData.ercNm,
|
||||||
// },
|
},
|
||||||
// });
|
});
|
||||||
// } else {
|
} else {
|
||||||
// this.setPageData({ isFind: false });
|
this.setPageData({ isFind: false });
|
||||||
// }
|
}
|
||||||
const newRes = res.map(item => {
|
const newRes = res.map(item => {
|
||||||
const newObj = {
|
const newObj = {
|
||||||
...item,
|
...item,
|
||||||
@ -798,133 +760,8 @@ const defaultData = {
|
|||||||
/* data 세팅 */
|
/* data 세팅 */
|
||||||
// 로컬 gridName 값과 동일한 이름으로 세팅
|
// 로컬 gridName 값과 동일한 이름으로 세팅
|
||||||
rowGrid: {
|
rowGrid: {
|
||||||
data: [
|
data: [],
|
||||||
{
|
column: [], // myColumns,
|
||||||
"comId": "COM001",
|
|
||||||
"ercId": "ERC001",
|
|
||||||
"ercNm": "LNG 가스",
|
|
||||||
"ercKind": "GAS",
|
|
||||||
"readObjId": "READ001",
|
|
||||||
"readPlcId": "PLC001",
|
|
||||||
"chrgKind": "FIXED",
|
|
||||||
"unitPrce": 120.5,
|
|
||||||
"prceFg": "1",
|
|
||||||
"peakPow": 500,
|
|
||||||
"elecContId": "EC001",
|
|
||||||
"elecContNm": "계약A",
|
|
||||||
"blocId": "BLOC001",
|
|
||||||
"useFg": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comId": "COM002",
|
|
||||||
"ercId": "ERC002",
|
|
||||||
"ercNm": "태양광",
|
|
||||||
"ercKind": "ELEC",
|
|
||||||
"readObjId": "READ002",
|
|
||||||
"readPlcId": "PLC002",
|
|
||||||
"chrgKind": "VARIABLE",
|
|
||||||
"unitPrce": 95.0,
|
|
||||||
"prceFg": "0",
|
|
||||||
"peakPow": 300,
|
|
||||||
"elecContId": "EC002",
|
|
||||||
"elecContNm": "계약B",
|
|
||||||
"blocId": "BLOC002",
|
|
||||||
"useFg": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"comId": "COM003",
|
|
||||||
"ercId": "ERC003",
|
|
||||||
"ercNm": "지열",
|
|
||||||
"ercKind": "HEAT",
|
|
||||||
"readObjId": "READ003",
|
|
||||||
"readPlcId": "PLC003",
|
|
||||||
"chrgKind": "FIXED",
|
|
||||||
"unitPrce": 110.0,
|
|
||||||
"prceFg": "1",
|
|
||||||
"peakPow": 450,
|
|
||||||
"elecContId": "EC003",
|
|
||||||
"elecContNm": "계약C",
|
|
||||||
"blocId": "BLOC003",
|
|
||||||
"useFg": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
column: [
|
|
||||||
{ header: '회사 ID', name: 'comId', hidden: true },
|
|
||||||
{ header: '에너지원ID', name: 'ercId', width: 120, align: 'center' },
|
|
||||||
{ header: '에너지원명', name: 'ercNm', align: 'left' },
|
|
||||||
{
|
|
||||||
header: '에너지원 유형',
|
|
||||||
name: 'ercKind',
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '검침대상',
|
|
||||||
name: 'readObjId',
|
|
||||||
align: 'left',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '검침 개소 ID',
|
|
||||||
name: 'readPlcId',
|
|
||||||
width: 80,
|
|
||||||
align: 'center',
|
|
||||||
hidden: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '고지 유형',
|
|
||||||
name: 'chrgKind',
|
|
||||||
width: 80,
|
|
||||||
align: 'center',
|
|
||||||
hidden: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '기본단가',
|
|
||||||
name: 'unitPrce',
|
|
||||||
width: 100,
|
|
||||||
align: 'right',
|
|
||||||
hidden: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '단가 사용여부',
|
|
||||||
name: 'prceFg',
|
|
||||||
width: 100,
|
|
||||||
align: 'center',
|
|
||||||
hidden: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '피크 전력',
|
|
||||||
name: 'peakPow',
|
|
||||||
width: 100,
|
|
||||||
align: 'right',
|
|
||||||
hidden: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '전력 계약',
|
|
||||||
name: 'elecContId',
|
|
||||||
width: 100,
|
|
||||||
align: 'center',
|
|
||||||
hidden: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '전력 계약',
|
|
||||||
name: 'elecContNm',
|
|
||||||
width: 100,
|
|
||||||
align: 'center',
|
|
||||||
hidden: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '사업장',
|
|
||||||
name: 'blocId',
|
|
||||||
width: 100,
|
|
||||||
align: 'center',
|
|
||||||
hidden: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '사용 여부',
|
|
||||||
name: 'useFg',
|
|
||||||
width: 95,
|
|
||||||
align: 'center',
|
|
||||||
}
|
|
||||||
], // myColumns,
|
|
||||||
option: {}, // myOptions
|
option: {}, // myOptions
|
||||||
defaultRow: {
|
defaultRow: {
|
||||||
comId: '',
|
comId: '',
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div ref="mainDiv" class="l-layout">
|
<div ref="mainDiv" class="l-layout">
|
||||||
<v-row ref="searchFilter">
|
<CommonPageTitle />
|
||||||
|
<v-row ref="searchFilter" class="mt-2">
|
||||||
<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>
|
||||||
@ -29,10 +30,10 @@
|
|||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-row ref="contents">
|
<v-row ref="contents" class="mt-3">
|
||||||
<v-col :cols="5" class="h100">
|
<v-col :cols="5" class="pr-2">
|
||||||
<v-card class="pb-5">
|
<v-card class="pb-5">
|
||||||
<v-card-title class="d-flex align-center justify-space-between pa-4">
|
<v-card-title class="d-flex align-center justify-space-between pa-5">
|
||||||
물리량 리스트
|
물리량 리스트
|
||||||
|
|
||||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
|
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
|
||||||
@ -44,16 +45,16 @@
|
|||||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
|
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
|
||||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true"
|
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true"
|
||||||
:preventFocusChangeEventFlag="true"
|
:preventFocusChangeEventFlag="true"
|
||||||
:preventFocusChangeEventTargetGridList="editingGridList" :dataPath="dataPathExample" />
|
:preventFocusChangeEventTargetGridList="editingGridList" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="7" class="h100">
|
<v-col :cols="7" class="pl-2">
|
||||||
<v-card class="pb-5 px-4">
|
<v-card class="pb-5 px-4">
|
||||||
<v-card-title class="px-0">물리량 상세</v-card-title>
|
<v-card-title class="px-0">물리량 상세</v-card-title>
|
||||||
<v-row no-gutters>
|
<v-row no-gutters>
|
||||||
<v-col :cols="12" class="py-3">
|
<v-col :cols="6" class="py-3 pr-4">
|
||||||
<InputText :parentPrgmId="myPrgmId" label="물리량 ID" valueNm="pysclQtyId" :labelCols="12"
|
<InputText :parentPrgmId="myPrgmId" label="물리량 ID" valueNm="pysclQtyId" :labelCols="12"
|
||||||
:textCols="12" :required="requiredValueList[0]" :disabled="disabledValueList[0]"
|
:textCols="12" :required="requiredValueList[0]" :disabled="disabledValueList[0]"
|
||||||
:readonly="readOnlyValueList[0]" placeholder="시스템 자동입력" />
|
:readonly="readOnlyValueList[0]" placeholder="시스템 자동입력" />
|
||||||
@ -73,7 +74,7 @@
|
|||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-row no-gutters>
|
<v-row no-gutters>
|
||||||
<v-col :cols="12" class="py-3">
|
<v-col :cols="6" class="py-3 pr-4">
|
||||||
<InputText :parentPrgmId="myPrgmId" label="물리량명" valueNm="pysclQtyNm" :labelCols="12"
|
<InputText :parentPrgmId="myPrgmId" label="물리량명" valueNm="pysclQtyNm" :labelCols="12"
|
||||||
:textCols="12" :required="requiredValueList[3]" :disabled="disabledValueList[3]"
|
:textCols="12" :required="requiredValueList[3]" :disabled="disabledValueList[3]"
|
||||||
:readonly="readOnlyValueList[3]" />
|
:readonly="readOnlyValueList[3]" />
|
||||||
@ -109,11 +110,11 @@
|
|||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-row no-gutters v-show="argContentShowFlag">
|
<v-row no-gutters v-show="argContentShowFlag">
|
||||||
<v-col :cols="6" class="py-3">
|
<v-col :cols="12" class="py-3">
|
||||||
<component :is="'TextArea'" :parentPrgmId="myPrgmId" ref="TextArea" :item="calcDescItem" />
|
<component :is="'TextArea'" :parentPrgmId="myPrgmId" ref="TextArea" :item="calcDescItem" />
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-row no-gutters v-show="argContentShowFlag">
|
<v-row no-gutters v-show="argContentShowFlag" align="end" >
|
||||||
<v-col :cols="12" class="py-2">
|
<v-col :cols="12" class="py-2">
|
||||||
<label for="">
|
<label for="">
|
||||||
<v-icon small
|
<v-icon small
|
||||||
@ -121,25 +122,22 @@
|
|||||||
계산Argument
|
계산Argument
|
||||||
</label>
|
</label>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="4" class="py-2">
|
<v-col :cols="6" class="py-2 pr-4">
|
||||||
<InputText :parentPrgmId="myPrgmId" label="ARG갯수" valueNm="argCnt" :labelCols="12"
|
<InputText :parentPrgmId="myPrgmId" label="ARG갯수" valueNm="argCnt" :labelCols="12"
|
||||||
:textCols="12" :iconShow="true" :required="requiredValueList[7]"
|
:textCols="12" :iconShow="false" :required="requiredValueList[7]"
|
||||||
:disabled="disabledValueList[7]" :readonly="readOnlyValueList[7]" />
|
:disabled="disabledValueList[7]" :readonly="readOnlyValueList[7]" />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="4"> </v-col>
|
<!-- <v-col :cols="4"> </v-col> -->
|
||||||
<v-col :cols="4" class="py-2" align="right">
|
<v-col :cols="6" class="py-2" align="right">
|
||||||
<v-btn :ripple="false" @click="btnAction('add')" :disabled="disabledValueList[7]">추가</v-btn>
|
<a-button type="primary" @click="btnAction('add')" class="v-btn-add-text mr-1" icon="plus">추가</a-button>
|
||||||
<!-- <v-btn :ripple="false" @click="btnAction('edit')">수정</v-btn> -->
|
<a-button type="danger" @click="btnAction('remove')" ghost danger icon="delete">삭제</a-button>
|
||||||
<v-btn :ripple="false" @click="btnAction('remove')"
|
|
||||||
:disabled="disabledValueList[7]">삭제</v-btn>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-row style="height:calc(30% - 76px)" v-show="argContentShowFlag">
|
<v-row style="height:calc(30% - 76px)" v-show="argContentShowFlag">
|
||||||
<v-col :cols="2"> </v-col>
|
<v-col :cols="12" style="height:100%">
|
||||||
<v-col :cols="10" style="height:100%">
|
|
||||||
<div ref="gridParent2" style="height:100%">
|
<div ref="gridParent2" style="height:100%">
|
||||||
<component :ref="gridName2" :is="loadGrid2 ? 'Grid' : null" :gridName="gridName2"
|
<component :ref="gridName2" :is="loadGrid2 ? 'Grid' : null" :gridName="gridName2"
|
||||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData2" :dataPath="dataPathExample2" />
|
:parentPrgmId="myPrgmId" @getRowsData="getRowData2" />
|
||||||
</div>
|
</div>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
@ -226,115 +224,8 @@ export default {
|
|||||||
formatterSelectList01: [],
|
formatterSelectList01: [],
|
||||||
formatterSelectList02: [],
|
formatterSelectList02: [],
|
||||||
|
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
dataPathExample: {
|
loadGrid2: false,
|
||||||
"rowGrid": {
|
|
||||||
data: [
|
|
||||||
{
|
|
||||||
"pysclQtyId": "001",
|
|
||||||
"pysclQtyCd": "TEMP001",
|
|
||||||
"pysclQtyNm": "온도",
|
|
||||||
"pysclQtyTp": "실수"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pysclQtyId": "002",
|
|
||||||
"pysclQtyCd": "PRESS001",
|
|
||||||
"pysclQtyNm": "압력",
|
|
||||||
"pysclQtyTp": "실수"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pysclQtyId": "003",
|
|
||||||
"pysclQtyCd": "FLOW001",
|
|
||||||
"pysclQtyNm": "유량",
|
|
||||||
"pysclQtyTp": "정수"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pysclQtyId": "004",
|
|
||||||
"pysclQtyCd": "HUMID001",
|
|
||||||
"pysclQtyNm": "습도",
|
|
||||||
"pysclQtyTp": "실수"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pysclQtyId": "005",
|
|
||||||
"pysclQtyCd": "VOLT001",
|
|
||||||
"pysclQtyNm": "전압",
|
|
||||||
"pysclQtyTp": "실수"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
,
|
|
||||||
column: [
|
|
||||||
{
|
|
||||||
header: '물리량 ID',
|
|
||||||
name: 'pysclQtyId',
|
|
||||||
width: 100,
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{ header: '물리량코드', name: 'pysclQtyCd', minWidth: 255 },
|
|
||||||
{ header: '물리량명', name: 'pysclQtyNm', width: 150 },
|
|
||||||
{
|
|
||||||
header: '물리량타입',
|
|
||||||
name: 'pysclQtyTp',
|
|
||||||
width: 80,
|
|
||||||
},
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dataPathExample2: {
|
|
||||||
"rowGrid2": {
|
|
||||||
data:
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"argSeq": "1",
|
|
||||||
"argPysclQtyId": "001",
|
|
||||||
"eqpmGrpId": "EQPM-GRP-A",
|
|
||||||
"pysclQtyCd": "TEMP001"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"argSeq": "2",
|
|
||||||
"argPysclQtyId": "002",
|
|
||||||
"eqpmGrpId": "EQPM-GRP-B",
|
|
||||||
"pysclQtyCd": "PRESS001"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"argSeq": "3",
|
|
||||||
"argPysclQtyId": "003",
|
|
||||||
"eqpmGrpId": "EQPM-GRP-C",
|
|
||||||
"pysclQtyCd": "FLOW001"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"argSeq": "4",
|
|
||||||
"argPysclQtyId": "004",
|
|
||||||
"eqpmGrpId": "EQPM-GRP-D",
|
|
||||||
"pysclQtyCd": "HUMID001"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"argSeq": "5",
|
|
||||||
"argPysclQtyId": "005",
|
|
||||||
"eqpmGrpId": "EQPM-GRP-E",
|
|
||||||
"pysclQtyCd": "VOLT001"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
,
|
|
||||||
column: [
|
|
||||||
{ header: '순번', name: 'argSeq', editor: 'text' },
|
|
||||||
{ header: '물리량 ID', name: 'argPysclQtyId' },
|
|
||||||
{
|
|
||||||
header: '설비그룹',
|
|
||||||
name: 'eqpmGrpId',
|
|
||||||
|
|
||||||
},
|
|
||||||
{ header: '물리량 코드', name: 'pysclQtyCd' },
|
|
||||||
|
|
||||||
],
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
loadGrid2: true,
|
|
||||||
detailList: myDetail,
|
detailList: myDetail,
|
||||||
|
|
||||||
readOnlyValueList: [
|
readOnlyValueList: [
|
||||||
@ -1004,6 +895,12 @@ export default {
|
|||||||
columnOptions: {
|
columnOptions: {
|
||||||
resizable: true,
|
resizable: true,
|
||||||
},
|
},
|
||||||
|
header: {
|
||||||
|
height: 37,
|
||||||
|
},
|
||||||
|
rowHeight: 'auto',
|
||||||
|
scrollX: true,
|
||||||
|
scrollY: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
@ -1017,7 +914,7 @@ export default {
|
|||||||
header: '물리량 ID',
|
header: '물리량 ID',
|
||||||
name: 'pysclQtyId',
|
name: 'pysclQtyId',
|
||||||
width: 100,
|
width: 100,
|
||||||
align: 'center',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{ header: '설비그룹 ID', name: 'eqpmGrpId', hidden: true },
|
{ header: '설비그룹 ID', name: 'eqpmGrpId', hidden: true },
|
||||||
{ header: 'argCnt', name: 'argCnt', hidden: true },
|
{ header: 'argCnt', name: 'argCnt', hidden: true },
|
||||||
@ -1069,6 +966,10 @@ export default {
|
|||||||
columnOptions: {
|
columnOptions: {
|
||||||
resizable: true,
|
resizable: true,
|
||||||
},
|
},
|
||||||
|
header: {
|
||||||
|
height: 37,
|
||||||
|
},
|
||||||
|
rowHeight: 'auto',
|
||||||
};
|
};
|
||||||
|
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
|
|||||||
@ -1,19 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<div ref="mainDiv" class="l-layout">
|
<div ref="mainDiv" class="l-layout">
|
||||||
|
<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">
|
||||||
<v-row align="end" no-gutters>
|
<v-row align="end" no-gutters>
|
||||||
<v-col :cols="5">
|
<v-col :cols="5">
|
||||||
<InputText
|
<InputText :parentPrgmId="myPrgmId" label="설비종류명" valueNm="eqpmKindNm" :searchOption="true"
|
||||||
:parentPrgmId="myPrgmId"
|
:textCols="12" :labelCols="12" customClass="input-large" />
|
||||||
label="설비종류명"
|
|
||||||
valueNm="eqpmKindNm"
|
|
||||||
:searchOption="true"
|
|
||||||
:textCols="12"
|
|
||||||
:labelCols="12"
|
|
||||||
customClass="input-large"
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="7" class="text-right">
|
<v-col :cols="7" class="text-right">
|
||||||
<BtnSearch @click="search" size="large" />
|
<BtnSearch @click="search" size="large" />
|
||||||
@ -25,41 +19,27 @@
|
|||||||
<v-row ref="contents">
|
<v-row ref="contents">
|
||||||
<v-col :cols="5" class="h100">
|
<v-col :cols="5" class="h100">
|
||||||
<v-card class="pb-5">
|
<v-card class="pb-5">
|
||||||
<div class="d-flex align-center justify-space-between pa-5">
|
<div class="d-flex align-center justify-space-between pa-4" style="padding-bottom: 30px !important;">
|
||||||
<v-card-title class="pa-0">설비종류</v-card-title>
|
<v-card-title class="pa-0">설비종류</v-card-title>
|
||||||
<Buttons
|
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
:bindingData="gridName"
|
|
||||||
:btnActionsFnc="btnActions"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="h100 px-5" style="height:calc(100% - 70px)">
|
<div class="h100 px-5" style="height:calc(100% - 70px)">
|
||||||
<div ref="gridParent" class="w100 h100">
|
<div ref="gridParent" class="w100 h100">
|
||||||
<component
|
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||||
:ref="gridName"
|
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
|
||||||
:is="loadGrid ? 'Grid' : null"
|
:preventFocusChangeEventFlag="false" />
|
||||||
:gridName="gridName"
|
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
@getRowsData="getRowData"
|
|
||||||
:preventFocusChangeEventFlag="false"
|
|
||||||
:dataPath="dataPathMock"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="7" class="h100">
|
<v-col :cols="7" class="h100">
|
||||||
<v-card class="pb-5">
|
<v-card class="pb-5">
|
||||||
<div class="d-flex align-center justify-space-between pa-5">
|
<div class="d-flex align-center justify-space-between pa-4" style="padding-bottom: 30px !important;">
|
||||||
<v-card-title class="pa-0">설비종류 상세</v-card-title>
|
<v-card-title class="pa-0">설비종류 상세</v-card-title>
|
||||||
</div>
|
</div>
|
||||||
<div class="px-5" style="height:calc(100% - 76px)">
|
<div class="px-5" style="height:calc(100% - 76px)">
|
||||||
<component
|
<component :is="'Form'" :parentPrgmId="myPrgmId" :detailList="detailList"
|
||||||
:is="'Form'"
|
@gridEditingFinish="gridEditingFinish" />
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
:detailList="detailList"
|
|
||||||
@gridEditingFinish="gridEditingFinish"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
@ -78,6 +58,8 @@ import Form from '~/components/common/form/Form';
|
|||||||
import Grid from '~/components/common/Grid';
|
import Grid from '~/components/common/Grid';
|
||||||
import Utility from '~/plugins/utility';
|
import Utility from '~/plugins/utility';
|
||||||
import SelectBox from '@/components/common/select/SelectBox';
|
import SelectBox from '@/components/common/select/SelectBox';
|
||||||
|
import PageTitle from "~/components/common/PageTitle";
|
||||||
|
|
||||||
let myTitle;
|
let myTitle;
|
||||||
// const myPrgmId = "PRG0013";
|
// const myPrgmId = "PRG0013";
|
||||||
let myPrgmId;
|
let myPrgmId;
|
||||||
@ -108,6 +90,7 @@ export default {
|
|||||||
Grid,
|
Grid,
|
||||||
Utility,
|
Utility,
|
||||||
SelectBox,
|
SelectBox,
|
||||||
|
PageTitle,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -118,21 +101,6 @@ export default {
|
|||||||
detailList: myDetail,
|
detailList: myDetail,
|
||||||
selectValueList01: [],
|
selectValueList01: [],
|
||||||
selectValue01: null,
|
selectValue01: null,
|
||||||
dataPathMock: {
|
|
||||||
'eqpmKindGrid': {
|
|
||||||
column: [
|
|
||||||
{ header: '설비종류ID', name: 'eqpmKindId', headerAlign: 'center' },
|
|
||||||
{ header: '설비종류명', name: 'eqpmKindNm', headerAlign: 'left' },
|
|
||||||
{ header: '등록자NO', name: 'regUserNo', hidden: true},
|
|
||||||
{ header: '등록일시', name: 'regDttm', hidden: true },
|
|
||||||
{ header: '수정자NO', name: 'procUserNo', hidden: true },
|
|
||||||
{ header: '수정일시', name: 'procDttm', hidden: true}
|
|
||||||
],
|
|
||||||
data: dataPathDataExample,
|
|
||||||
defaultRow: dataPathDataExample,
|
|
||||||
option: {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -164,7 +132,7 @@ export default {
|
|||||||
defaultData: defaultData,
|
defaultData: defaultData,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
created() {},
|
created() { },
|
||||||
mounted() {
|
mounted() {
|
||||||
this.gridInit();
|
this.gridInit();
|
||||||
// this.init();
|
// this.init();
|
||||||
@ -184,6 +152,8 @@ export default {
|
|||||||
const myOptions = {
|
const myOptions = {
|
||||||
columnOptions: {
|
columnOptions: {
|
||||||
resizable: true,
|
resizable: true,
|
||||||
|
}, header: {
|
||||||
|
height: 38,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
@ -255,12 +225,12 @@ export default {
|
|||||||
//rowKey: 0,
|
//rowKey: 0,
|
||||||
rowKey:
|
rowKey:
|
||||||
this.pageData.rowGridSelectKey == '' ||
|
this.pageData.rowGridSelectKey == '' ||
|
||||||
this.pageData.rowGridSelectKey == null
|
this.pageData.rowGridSelectKey == null
|
||||||
? 0
|
? 0
|
||||||
: this.pageData.rowGridSelectKey ==
|
: this.pageData.rowGridSelectKey ==
|
||||||
this.$refs[this.gridName].getData().length - 1
|
this.$refs[this.gridName].getData().length - 1
|
||||||
? this.pageData.rowGridSelectKey
|
? this.pageData.rowGridSelectKey
|
||||||
: 0,
|
: 0,
|
||||||
setScroll: true,
|
setScroll: true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -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">
|
||||||
|
<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">
|
||||||
<v-row align="end" no-gutters>
|
<v-row align="end" no-gutters>
|
||||||
<v-col :cols="3">
|
<v-col :cols="3">
|
||||||
<component
|
<component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'사용여부'" dataKey="useFg"
|
||||||
:is="'selectCodeList'"
|
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }" :addAll="true"
|
||||||
:parentPrgmId="myPrgmId"
|
customClass="select-large" />
|
||||||
:label="'사용여부'"
|
|
||||||
dataKey="useFg"
|
|
||||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
|
||||||
:addAll="true"
|
|
||||||
customClass="select-large"
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="3">
|
<v-col :cols="3">
|
||||||
<component
|
<component :is="'SelectBox'" ref="SelectBox1" :propsValue="selectValue01"
|
||||||
:is="'SelectBox'"
|
:itemList="selectValueList01" :label="'설비종류'"
|
||||||
ref="SelectBox1"
|
@update:propsValue="selectValue01 = $event" customClass="select-large" />
|
||||||
:propsValue="selectValue01"
|
|
||||||
:itemList="selectValueList01"
|
|
||||||
:label="'설비종류'"
|
|
||||||
@update:propsValue="selectValue01 = $event"
|
|
||||||
customClass="select-large"
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="3">
|
<v-col :cols="3">
|
||||||
<InputText
|
<InputText :parentPrgmId="myPrgmId" label="설비 그룹 명" valueNm="eqpmGrpNm" :searchOption="true"
|
||||||
:parentPrgmId="myPrgmId"
|
:textCols="12" :labelCols="12" customClass="input-large" />
|
||||||
label="설비 그룹 명"
|
|
||||||
valueNm="eqpmGrpNm"
|
|
||||||
:searchOption="true"
|
|
||||||
:textCols="12"
|
|
||||||
:labelCols="12"
|
|
||||||
customClass="input-large"
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="3" class="text-right">
|
<v-col :cols="3" class="text-right">
|
||||||
<BtnSearch @click="search" size="large" />
|
<BtnSearch @click="search" size="large" />
|
||||||
@ -47,41 +29,28 @@
|
|||||||
<v-row ref="contents">
|
<v-row ref="contents">
|
||||||
<v-col :cols="5" class="h100">
|
<v-col :cols="5" class="h100">
|
||||||
<v-card class="pb-5">
|
<v-card class="pb-5">
|
||||||
<v-card-title class="d-flex justify-space-between align-end">
|
<div class="d-flex align-center justify-space-between pa-4"
|
||||||
<span class="tit ft-size_20 ft-weight_600">설비 그룹</span>
|
style="padding-bottom: 30px !important;">
|
||||||
<Buttons
|
<v-card-title class="pa-0">설비 그룹</v-card-title>
|
||||||
:parentPrgmId="myPrgmId"
|
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
||||||
:bindingData="gridName"
|
</div>
|
||||||
:btnActionsFnc="btnActions"
|
|
||||||
/>
|
|
||||||
</v-card-title>
|
|
||||||
|
|
||||||
<div class="h100 px-5" style="height:calc(100% - 70px)">
|
<div class="h100 px-5" style="height:calc(100% - 70px)">
|
||||||
<div ref="gridParent" class="w100 h100">
|
<div ref="gridParent" class="w100 h100">
|
||||||
<component
|
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||||
:ref="gridName"
|
:parentPrgmId="myPrgmId" @getRowsData="getRowData" />
|
||||||
:is="loadGrid ? 'Grid' : null"
|
|
||||||
:gridName="gridName"
|
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
@getRowsData="getRowData"
|
|
||||||
:dataPath="dataPathMock"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="7" class="h100">
|
<v-col :cols="7" class="h100">
|
||||||
<v-card class="pb-5">
|
<v-card class="pb-5">
|
||||||
<div class="d-flex align-center justify-space-between pa-5">
|
<div class="d-flex align-center justify-space-between pa-4"
|
||||||
|
style="padding-bottom: 30px !important;">
|
||||||
<v-card-title class="pa-0">설비 그룹 상세</v-card-title>
|
<v-card-title class="pa-0">설비 그룹 상세</v-card-title>
|
||||||
</div>
|
</div>
|
||||||
<div class="px-5" style="height:calc(100% - 76px)">
|
<div class="px-5" style="height:calc(100% - 76px)">
|
||||||
<component
|
<component :is="'Form'" :parentPrgmId="myPrgmId" :detailList="detailList"
|
||||||
:is="'Form'"
|
@gridEditingFinish="gridEditingFinish" />
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
:detailList="detailList"
|
|
||||||
@gridEditingFinish="gridEditingFinish"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
@ -100,6 +69,8 @@ import Form from '~/components/common/form/Form';
|
|||||||
import Grid from '~/components/common/Grid';
|
import Grid from '~/components/common/Grid';
|
||||||
import Utility from '~/plugins/utility';
|
import Utility from '~/plugins/utility';
|
||||||
import SelectBox from '@/components/common/select/SelectBox';
|
import SelectBox from '@/components/common/select/SelectBox';
|
||||||
|
import PageTitle from "~/components/common/PageTitle";
|
||||||
|
|
||||||
let myTitle;
|
let myTitle;
|
||||||
// const myPrgmId = "PRG0013";
|
// const myPrgmId = "PRG0013";
|
||||||
let myPrgmId;
|
let myPrgmId;
|
||||||
@ -130,34 +101,17 @@ export default {
|
|||||||
Grid,
|
Grid,
|
||||||
Utility,
|
Utility,
|
||||||
SelectBox,
|
SelectBox,
|
||||||
|
PageTitle,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
myPrgmId: myPrgmId,
|
myPrgmId: myPrgmId,
|
||||||
gridName: 'rowGrid',
|
gridName: 'rowGrid',
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
tab: null,
|
tab: null,
|
||||||
detailList: myDetail,
|
detailList: myDetail,
|
||||||
selectValueList01: [],
|
selectValueList01: [],
|
||||||
selectValue01: null,
|
selectValue01: null,
|
||||||
dataPathMock: {
|
|
||||||
'rowGrid': {
|
|
||||||
column: [
|
|
||||||
{ header: '회사 ID', name: 'comId', hidden: true },
|
|
||||||
{ header: '설비 그룹 ID', name: 'eqpmGrpId'},
|
|
||||||
{ header: '설비 그룹 명', name: 'eqpmGrpNm'},
|
|
||||||
{ header: '설비종류', name: 'eqpmKindId'},
|
|
||||||
{ header: '사용여부', name: 'useFg'},
|
|
||||||
{ header: '등록자NO', name: 'regUserNo', hidden: true},
|
|
||||||
{ header: '등록일시', name: 'regDttm', hidden: true },
|
|
||||||
{ header: '수정자NO', name: 'procUserNo', hidden: true },
|
|
||||||
{ header: '수정일시', name: 'procDttm', hidden: true}
|
|
||||||
],
|
|
||||||
data: dataPathDataExample,
|
|
||||||
defaultRow: dataPathDataExample,
|
|
||||||
options:{}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -203,7 +157,7 @@ export default {
|
|||||||
defaultData: defaultData,
|
defaultData: defaultData,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
created() {},
|
created() { },
|
||||||
mounted() {
|
mounted() {
|
||||||
this.setSelectValueList01();
|
this.setSelectValueList01();
|
||||||
// if (this.loadFlag) {
|
// if (this.loadFlag) {
|
||||||
@ -252,12 +206,15 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
gridInit() {
|
gridInit() {
|
||||||
const gridHeight = this.$refs.gridParent.offsetHeight - 70;
|
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||||
|
|
||||||
const myOptions = {
|
const myOptions = {
|
||||||
columnOptions: {
|
columnOptions: {
|
||||||
resizable: true,
|
resizable: true,
|
||||||
},
|
},
|
||||||
|
header: {
|
||||||
|
height: 38,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
@ -365,12 +322,12 @@ export default {
|
|||||||
//rowKey: 0,
|
//rowKey: 0,
|
||||||
rowKey:
|
rowKey:
|
||||||
this.pageData.rowGridSelectKey == '' ||
|
this.pageData.rowGridSelectKey == '' ||
|
||||||
this.pageData.rowGridSelectKey == null
|
this.pageData.rowGridSelectKey == null
|
||||||
? 0
|
? 0
|
||||||
: this.pageData.rowGridSelectKey ==
|
: this.pageData.rowGridSelectKey ==
|
||||||
this.$refs[this.gridName].getData().length - 1
|
this.$refs[this.gridName].getData().length - 1
|
||||||
? this.pageData.rowGridSelectKey
|
? this.pageData.rowGridSelectKey
|
||||||
: 0,
|
: 0,
|
||||||
setScroll: true,
|
setScroll: true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -512,7 +469,7 @@ const myDetail = [
|
|||||||
placeholder: '시스템 자동입력',
|
placeholder: '시스템 자동입력',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'InputTextReg',
|
type: 'InputText',
|
||||||
label: '설비 그룹 명',
|
label: '설비 그룹 명',
|
||||||
valueNm: 'eqpmGrpNm',
|
valueNm: 'eqpmGrpNm',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
@ -523,18 +480,17 @@ const myDetail = [
|
|||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
type: 'CheckBox',
|
type: 'CheckBox',
|
||||||
label: '사용 여부',
|
label: '사용 여부',
|
||||||
valueNm: 'useFg',
|
valueNm: 'useFg',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2 pr-4 pt-5',
|
class: 'py-2 pr-4 pt-4',
|
||||||
value: { '1': true, '0': false },
|
value: { '1': true, '0': false },
|
||||||
required: true,
|
required: true,
|
||||||
iconShow: true,
|
iconShow: true,
|
||||||
labelCols: 12,
|
|
||||||
textCols: 12,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'SelectBox',
|
type: 'SelectBox',
|
||||||
@ -600,18 +556,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>
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
|
<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">
|
||||||
@ -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">설비 정보</v-card-title>
|
<v-card-title class="pa-0 custom-title-4">설비 정보</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"
|
||||||
@getRowsData="getRowData" @sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
:selectedRowDataWatchFlag="true" :preventFocusChangeEventFlag="false" />
|
||||||
:selectedRowDataWatchFlag="true" :preventFocusChangeEventFlag="false" :dataPath="dataPathMock" />
|
<!-- <div ref="gridParent" class="w100 h100">
|
||||||
</div>
|
</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;">설비 상세</v-card-title>
|
<v-card-title class="custom-title-4" style="min-height:76px;">설비 상세</v-card-title>
|
||||||
<div class="px-5" style="min-height:calc(100% - 76px)">
|
<div class="px-5" style="min-height:calc(100% - 76px)">
|
||||||
@ -287,7 +288,7 @@ export default {
|
|||||||
blocId: this.userInfo.blocId,
|
blocId: this.userInfo.blocId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
console.log('res : ', res);
|
// console.log('res : ', res);
|
||||||
res.map(item => {
|
res.map(item => {
|
||||||
const it = { text: item.ercNm, value: item.ercId };
|
const it = { text: item.ercNm, value: item.ercId };
|
||||||
ercList.push(it);
|
ercList.push(it);
|
||||||
@ -968,7 +969,7 @@ const myDetail = [
|
|||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
iconShow: true,
|
iconShow: true,
|
||||||
class: 'py-3 pr-4',
|
class: 'py-3 pr-4 pb-2',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'CheckBox',
|
type: 'CheckBox',
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div ref="mainDiv" class="l-layout">
|
<div ref="mainDiv" class="l-layout">
|
||||||
<v-row ref="searchFilter">
|
<CommonPageTitle />
|
||||||
|
<v-row ref="searchFilter" class="mt-2">
|
||||||
<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>
|
||||||
@ -37,11 +38,11 @@
|
|||||||
:btnActionsFnc="btnActions" />
|
:btnActionsFnc="btnActions" />
|
||||||
</div>
|
</div>
|
||||||
<div class="h100 px-4" style="height:calc(100% - 70px)">
|
<div class="h100 px-4" style="height:calc(100% - 70px)">
|
||||||
<div ref="gridParent" >
|
<div ref="gridParent" style="height: 30%">
|
||||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData" :dataPath="dataPathExample" />
|
:parentPrgmId="myPrgmId" @getRowsData="getRowData" :dataPath="dataPathExample" />
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex py-4">
|
<div class="d-flex py-4 mt-4" >
|
||||||
<component :is="'Form'" :parentPrgmId="myPrgmId" :detailList="detailList"
|
<component :is="'Form'" :parentPrgmId="myPrgmId" :detailList="detailList"
|
||||||
@gridEditingFinish="gridEditingFinish" />
|
@gridEditingFinish="gridEditingFinish" />
|
||||||
</div>
|
</div>
|
||||||
@ -112,115 +113,12 @@ export default {
|
|||||||
myPrgmId: myPrgmId,
|
myPrgmId: myPrgmId,
|
||||||
initedFlag: false,
|
initedFlag: false,
|
||||||
gridName: 'rowGrid',
|
gridName: 'rowGrid',
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
detailList: myDetail,
|
detailList: myDetail,
|
||||||
selectValue01: null,
|
selectValue01: null,
|
||||||
selectValueList01: [],
|
selectValueList01: [],
|
||||||
selectValue02: null,
|
selectValue02: null,
|
||||||
selectValueList02: [],
|
selectValueList02: [],
|
||||||
// pyscPopupValueChkList: 'pyscPopupValueChkList',
|
|
||||||
// pyscListChk: {
|
|
||||||
// pysclQtyId1 : null,
|
|
||||||
// pysclQtyId2 : null,
|
|
||||||
// pysclQtyId3 : null,
|
|
||||||
// pysclQtyId4 : null
|
|
||||||
// }
|
|
||||||
dataPathExample: {
|
|
||||||
"rowGrid": {
|
|
||||||
data: [
|
|
||||||
|
|
||||||
{
|
|
||||||
gdIdxId: 'GD001',
|
|
||||||
gdIdxNm: '온도 가이드',
|
|
||||||
eqpmGrpId: 'EQ001',
|
|
||||||
upTotMeth: 'AVG',
|
|
||||||
careStndVal: 50,
|
|
||||||
warnStndVal: 70,
|
|
||||||
alrmMsg: '온도가 기준치를 초과했습니다.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
gdIdxId: 'GD002',
|
|
||||||
gdIdxNm: '습도 가이드',
|
|
||||||
eqpmGrpId: 'EQ002',
|
|
||||||
upTotMeth: 'MAX',
|
|
||||||
careStndVal: 30,
|
|
||||||
warnStndVal: 60,
|
|
||||||
alrmMsg: '습도가 기준치를 초과했습니다.',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
gdIdxId: 'GD003',
|
|
||||||
gdIdxNm: '압력 가이드',
|
|
||||||
eqpmGrpId: 'EQ003',
|
|
||||||
upTotMeth: 'SUM',
|
|
||||||
careStndVal: 100,
|
|
||||||
warnStndVal: 150,
|
|
||||||
alrmMsg: '압력이 기준치를 초과했습니다.',
|
|
||||||
}
|
|
||||||
|
|
||||||
],
|
|
||||||
column: [
|
|
||||||
{
|
|
||||||
header: '가이드',
|
|
||||||
name: 'gdIdxId',
|
|
||||||
width: 100,
|
|
||||||
align: 'center',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '가이드명',
|
|
||||||
name: 'gdIdxNm',
|
|
||||||
width: 210,
|
|
||||||
align: 'left',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '설비그룹ID',
|
|
||||||
name: 'eqpmGrpId',
|
|
||||||
width: 100,
|
|
||||||
align: 'center',
|
|
||||||
// formatter({ value }) {
|
|
||||||
// let retVal = '';
|
|
||||||
// const newValue = _this.pageData.eqpmGrpList.filter(item => item.value == value);
|
|
||||||
// if (newValue.length > 0) {
|
|
||||||
// retVal = newValue[0].text;
|
|
||||||
// }
|
|
||||||
// return retVal;
|
|
||||||
// },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '상위집계방법',
|
|
||||||
name: 'upTotMeth',
|
|
||||||
width: 100,
|
|
||||||
align: 'center',
|
|
||||||
// formatter({ value }) {
|
|
||||||
// let retVal = '';
|
|
||||||
// const newValue = _this.pageData.upTotMethList.filter(item => item.commCd == value);
|
|
||||||
// if (newValue.length > 0) {
|
|
||||||
// retVal = newValue[0].commCdNm;
|
|
||||||
// }
|
|
||||||
// return retVal;
|
|
||||||
// },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '주의기준',
|
|
||||||
name: 'careStndVal',
|
|
||||||
width: 100,
|
|
||||||
align: 'right',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '경고기준',
|
|
||||||
name: 'warnStndVal',
|
|
||||||
width: 100,
|
|
||||||
align: 'right',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
header: '알람메세지',
|
|
||||||
name: 'alrmMsg',
|
|
||||||
minWidth: 860,
|
|
||||||
align: 'left',
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -352,60 +250,46 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
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.selectValue01 = this.selectValueList01[0].value;
|
this.selectValue01 = this.selectValueList01[0].value;
|
||||||
// } else {
|
} else {
|
||||||
// this.selectValueList01 = [];
|
this.selectValueList01 = [];
|
||||||
// this.selectValue01 = null;
|
this.selectValue01 = null;
|
||||||
// }
|
}
|
||||||
|
|
||||||
this.selectValueList01 = [
|
|
||||||
{ label: 'Etcher', value: 'EQK001' },
|
|
||||||
{ label: 'Deposition', value: 'EQK002' },
|
|
||||||
{ label: 'Inspection', value: 'EQK003' },
|
|
||||||
];
|
|
||||||
|
|
||||||
this.selectValue01 = 'EQK001';
|
|
||||||
this.setPageData({
|
this.setPageData({
|
||||||
eqpmKindList: this.selectValueList01,
|
eqpmKindList: this.selectValueList01,
|
||||||
eqpmKindId: this.selectValue01,
|
eqpmKindId: this.selectValue01,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
async getEqpmGrp() {
|
async getEqpmGrp() {
|
||||||
// let res = await this.postApiReturn({
|
let res = await this.postApiReturn({
|
||||||
// apiKey: 'selectEqpmGrpCodeList',
|
apiKey: 'selectEqpmGrpCodeList',
|
||||||
// resKey: 'eqpmGrpCodeLists',
|
resKey: 'eqpmGrpCodeLists',
|
||||||
// sendParam: { eqpmKindId: this.selectValue01 },
|
sendParam: { eqpmKindId: this.selectValue01 },
|
||||||
// });
|
});
|
||||||
// if (res.length > 0) {
|
if (res.length > 0) {
|
||||||
// this.selectValueList02 = await res.map(item => {
|
this.selectValueList02 = await res.map(item => {
|
||||||
// return {
|
return {
|
||||||
// text: item.eqpmGrpNm,
|
text: item.eqpmGrpNm,
|
||||||
// value: item.eqpmGrpId,
|
value: item.eqpmGrpId,
|
||||||
// };
|
};
|
||||||
// });
|
});
|
||||||
// this.selectValue02 = this.selectValueList02[0].value;
|
this.selectValue02 = this.selectValueList02[0].value;
|
||||||
// } else {
|
} else {
|
||||||
// this.selectValueList02 = [];
|
this.selectValueList02 = [];
|
||||||
// this.selectValue02 = null;
|
this.selectValue02 = null;
|
||||||
// }
|
}
|
||||||
this.selectValueList02 = [
|
|
||||||
{ label: '냉동기고온', value: '냉동기고온' },
|
|
||||||
{ label: '냉동기저온', value: '냉동기저온' },
|
|
||||||
{ label: '공조기', value: '공조기' },
|
|
||||||
{ label: '보일러', value: '보일러' }
|
|
||||||
];
|
|
||||||
|
|
||||||
this.setPageData({
|
this.setPageData({
|
||||||
eqpmGrpList: this.selectValueList02,
|
eqpmGrpList: this.selectValueList02,
|
||||||
@ -419,6 +303,10 @@ export default {
|
|||||||
columnOptions: {
|
columnOptions: {
|
||||||
resizable: true,
|
resizable: true,
|
||||||
},
|
},
|
||||||
|
header: {
|
||||||
|
height: 37,
|
||||||
|
},
|
||||||
|
rowHeight: 'auto',
|
||||||
};
|
};
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
@ -636,100 +524,48 @@ export default {
|
|||||||
async getRowGridData() {
|
async getRowGridData() {
|
||||||
this.loadGrid = false;
|
this.loadGrid = false;
|
||||||
let res = [];
|
let res = [];
|
||||||
const newRes = [
|
|
||||||
{
|
res = await this.postApiReturn({
|
||||||
comId: 'COM001',
|
apiKey: 'selectEqpmGdIdxDataList',
|
||||||
gdIdxId: 'GD001',
|
resKey: 'eqpmGdIdxDataList',
|
||||||
gdIdxNm: '온도 가이드',
|
sendParam: {
|
||||||
eqpmGrpId: 'EQ001',
|
eqpmGrpId: this.selectValue02,
|
||||||
upTotMeth: 'AVG',
|
gdIdxNmLike: this.pageData.gdIdxNm,
|
||||||
sortSeq: 1,
|
|
||||||
pysclQtyId1: 'TEMP',
|
|
||||||
pysclQtyId2: null,
|
|
||||||
pysclQtyId3: null,
|
|
||||||
pysclQtyId4: null,
|
|
||||||
ctgr1: '환경',
|
|
||||||
ctgr2: '내부',
|
|
||||||
careStndVal: 50,
|
|
||||||
warnStndVal: 70,
|
|
||||||
gdMeth: '자동',
|
|
||||||
useFg: '1',
|
|
||||||
alrmMsg: '온도가 기준치를 초과했습니다.',
|
|
||||||
calcProc: 'PROC001',
|
|
||||||
calcDesc: '평균 계산',
|
|
||||||
calcMeth: '(A+B)/2',
|
|
||||||
unit: 'C',
|
|
||||||
argCnt: 2,
|
|
||||||
rowStat: null,
|
|
||||||
},
|
},
|
||||||
{
|
});
|
||||||
comId: 'COM002',
|
const newRes = res.map(item => {
|
||||||
gdIdxId: 'GD002',
|
const newObj = {
|
||||||
gdIdxNm: '습도 가이드',
|
...item,
|
||||||
eqpmGrpId: 'EQ002',
|
|
||||||
upTotMeth: 'MAX',
|
|
||||||
sortSeq: 2,
|
|
||||||
pysclQtyId1: 'HUMID',
|
|
||||||
pysclQtyId2: null,
|
|
||||||
pysclQtyId3: null,
|
|
||||||
pysclQtyId4: null,
|
|
||||||
ctgr1: '환경',
|
|
||||||
ctgr2: '외부',
|
|
||||||
careStndVal: 30,
|
|
||||||
warnStndVal: 60,
|
|
||||||
gdMeth: '수동',
|
|
||||||
useFg: '0',
|
|
||||||
alrmMsg: '습도가 기준치를 초과했습니다.',
|
|
||||||
calcProc: 'PROC002',
|
|
||||||
calcDesc: '최대값 계산',
|
|
||||||
calcMeth: 'MAX(A,B)',
|
|
||||||
unit: '%',
|
|
||||||
argCnt: 2,
|
|
||||||
rowStat: null,
|
rowStat: null,
|
||||||
},
|
};
|
||||||
];
|
return newObj;
|
||||||
|
});
|
||||||
// res = await this.postApiReturn({
|
|
||||||
// apiKey: 'selectEqpmGdIdxDataList',
|
|
||||||
// resKey: 'eqpmGdIdxDataList',
|
|
||||||
// sendParam: {
|
|
||||||
// eqpmGrpId: this.selectValue02,
|
|
||||||
// gdIdxNmLike: this.pageData.gdIdxNm,
|
|
||||||
// },
|
|
||||||
// });
|
|
||||||
// const newRes = res.map(item => {
|
|
||||||
// const newObj = {
|
|
||||||
// ...item,
|
|
||||||
// rowStat: null,
|
|
||||||
// };
|
|
||||||
// return newObj;
|
|
||||||
// });
|
|
||||||
this.setGridData({
|
this.setGridData({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
value: newRes,
|
value: newRes,
|
||||||
});
|
});
|
||||||
//this.loadGrid = true;
|
//this.loadGrid = true;
|
||||||
// this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
// if (newRes.length > 0) {
|
if (newRes.length > 0) {
|
||||||
// try {
|
try {
|
||||||
// this.$refs[this.gridName].focus({
|
this.$refs[this.gridName].focus({
|
||||||
// //rowKey: 0,
|
//rowKey: 0,
|
||||||
// rowKey:
|
rowKey:
|
||||||
// this.pageData.rowGridSelectKey == '' ||
|
this.pageData.rowGridSelectKey == '' ||
|
||||||
// this.pageData.rowGridSelectKey == null
|
this.pageData.rowGridSelectKey == null
|
||||||
// ? 0
|
? 0
|
||||||
// : this.pageData.rowGridSelectKey ==
|
: this.pageData.rowGridSelectKey ==
|
||||||
// this.$refs[this.gridName].getData().length - 1
|
this.$refs[this.gridName].getData().length - 1
|
||||||
// ? this.pageData.rowGridSelectKey
|
? this.pageData.rowGridSelectKey
|
||||||
// : 0,
|
: 0,
|
||||||
// columnName: 'gdIdxId',
|
columnName: 'gdIdxId',
|
||||||
// setScroll: true,
|
setScroll: true,
|
||||||
// });
|
});
|
||||||
// } catch (error) { }
|
} catch (error) { }
|
||||||
// } else {
|
} else {
|
||||||
// this.detailDataInit();
|
this.detailDataInit();
|
||||||
// }
|
}
|
||||||
// });
|
});
|
||||||
this.loadGrid = true;
|
this.loadGrid = true;
|
||||||
},
|
},
|
||||||
async getRowData(data) {
|
async getRowData(data) {
|
||||||
@ -1462,7 +1298,7 @@ const myDetail = [
|
|||||||
class: 'pa-3',
|
class: 'pa-3',
|
||||||
// required: true,
|
// required: true,
|
||||||
openMode: 'ALL',
|
openMode: 'ALL',
|
||||||
disabled: false,
|
disabled: true,
|
||||||
eqpmKindId: '',
|
eqpmKindId: '',
|
||||||
eqpmGrpId: '',
|
eqpmGrpId: '',
|
||||||
closeBtnFg: true,
|
closeBtnFg: true,
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div ref="mainDiv" class="l-layout">
|
<div ref="mainDiv" class="l-layout">
|
||||||
<v-row ref="searchFilter">
|
<CommonPageTitle />
|
||||||
|
<v-row ref="searchFilter" class="mt-2">
|
||||||
<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>
|
||||||
@ -29,7 +30,7 @@
|
|||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
<v-row ref="contents" class="mt-4">
|
<v-row ref="contents" class="mt-3">
|
||||||
<v-col :cols="12" style="height: 100%">
|
<v-col :cols="12" style="height: 100%">
|
||||||
<!-- <v-card class="py-5"> -->
|
<!-- <v-card class="py-5"> -->
|
||||||
<v-card style="height: 60%">
|
<v-card style="height: 60%">
|
||||||
@ -115,8 +116,8 @@
|
|||||||
|
|
||||||
</v-card>
|
</v-card>
|
||||||
|
|
||||||
<v-row style="height: 40%" class="mt-4">
|
<v-row style="height: 40%" class="mt-3">
|
||||||
<v-col :cols="6" style="height: 100%">
|
<v-col :cols="6" style="height: 100%" class="pr-2">
|
||||||
<v-card class="pb-5">
|
<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>
|
||||||
@ -126,12 +127,12 @@
|
|||||||
<div ref="gridParent" class="w100 h100">
|
<div ref="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"
|
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
|
||||||
:dataPath="dataPathExample" />
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="6" style="height: 100%">
|
<v-col :cols="6" style="height: 100%" class="pl-2">
|
||||||
<v-card class="pb-5">
|
<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>
|
||||||
@ -201,7 +202,7 @@ export default {
|
|||||||
readonlyFg: true,
|
readonlyFg: true,
|
||||||
initedFlag: false,
|
initedFlag: false,
|
||||||
gridName: 'rowGrid',
|
gridName: 'rowGrid',
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
detailList: myDetail,
|
detailList: myDetail,
|
||||||
selectValue01: null,
|
selectValue01: null,
|
||||||
selectValueList01: [],
|
selectValueList01: [],
|
||||||
@ -209,62 +210,62 @@ export default {
|
|||||||
selectValueList02: [],
|
selectValueList02: [],
|
||||||
selectValue03: null,
|
selectValue03: null,
|
||||||
selectValueList03: [],
|
selectValueList03: [],
|
||||||
dataPathExample: {
|
// dataPathExample: {
|
||||||
"rowGrid": {
|
// "rowGrid": {
|
||||||
data: [
|
// data: [
|
||||||
|
|
||||||
{
|
// {
|
||||||
eqpmId: 'EQ001',
|
// eqpmId: 'EQ001',
|
||||||
originEqpmId: 'ORIG001',
|
// originEqpmId: 'ORIG001',
|
||||||
eqpmNm: '냉각기 A',
|
// eqpmNm: '냉각기 A',
|
||||||
careStndVal: 75,
|
// careStndVal: 75,
|
||||||
warnStndVal: 90,
|
// warnStndVal: 90,
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
eqpmId: 'EQ002',
|
// eqpmId: 'EQ002',
|
||||||
originEqpmId: 'ORIG002',
|
// originEqpmId: 'ORIG002',
|
||||||
eqpmNm: '펌프 B',
|
// eqpmNm: '펌프 B',
|
||||||
careStndVal: 60,
|
// careStndVal: 60,
|
||||||
warnStndVal: 80,
|
// warnStndVal: 80,
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
eqpmId: 'EQ003',
|
// eqpmId: 'EQ003',
|
||||||
originEqpmId: 'ORIG003',
|
// originEqpmId: 'ORIG003',
|
||||||
eqpmNm: '모터 C',
|
// eqpmNm: '모터 C',
|
||||||
careStndVal: 50,
|
// careStndVal: 50,
|
||||||
warnStndVal: 70,
|
// warnStndVal: 70,
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
eqpmId: 'EQ004',
|
// eqpmId: 'EQ004',
|
||||||
originEqpmId: 'ORIG004',
|
// originEqpmId: 'ORIG004',
|
||||||
eqpmNm: '밸브 D',
|
// eqpmNm: '밸브 D',
|
||||||
careStndVal: 65,
|
// careStndVal: 65,
|
||||||
warnStndVal: 85,
|
// warnStndVal: 85,
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
eqpmId: 'EQ005',
|
// eqpmId: 'EQ005',
|
||||||
originEqpmId: 'ORIG005',
|
// originEqpmId: 'ORIG005',
|
||||||
eqpmNm: '컨트롤러 E',
|
// eqpmNm: '컨트롤러 E',
|
||||||
careStndVal: 55,
|
// careStndVal: 55,
|
||||||
warnStndVal: 75,
|
// warnStndVal: 75,
|
||||||
},
|
// },
|
||||||
|
|
||||||
],
|
// ],
|
||||||
column: [
|
// column: [
|
||||||
{ header: '설비', name: 'eqpmId', align: 'left' },
|
// { header: '설비', name: 'eqpmId', align: 'left' },
|
||||||
{
|
// {
|
||||||
header: 'origin설비',
|
// header: 'origin설비',
|
||||||
name: 'originEqpmId',
|
// name: 'originEqpmId',
|
||||||
align: 'center',
|
// align: 'center',
|
||||||
hidden: true,
|
// hidden: true,
|
||||||
},
|
// },
|
||||||
{ header: '설비명', name: 'eqpmNm', align: 'left' },
|
// { header: '설비명', name: 'eqpmNm', align: 'left' },
|
||||||
{ header: '주의기준', name: 'careStndVal', align: 'right' },
|
// { header: '주의기준', name: 'careStndVal', align: 'right' },
|
||||||
{ header: '심각기준', name: 'warnStndVal', align: 'right' },
|
// { header: '심각기준', name: 'warnStndVal', align: 'right' },
|
||||||
]
|
// ]
|
||||||
|
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -408,6 +409,10 @@ export default {
|
|||||||
columnOptions: {
|
columnOptions: {
|
||||||
resizable: true,
|
resizable: true,
|
||||||
},
|
},
|
||||||
|
header: {
|
||||||
|
height: 37,
|
||||||
|
},
|
||||||
|
rowHeight: 'auto',
|
||||||
};
|
};
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
@ -511,69 +516,69 @@ export default {
|
|||||||
this.loadGrid = false;
|
this.loadGrid = false;
|
||||||
let res = [];
|
let res = [];
|
||||||
|
|
||||||
// if (this.selectValue01 && this.selectValue02 && this.selectValue03) {
|
if (this.selectValue01 && this.selectValue02 && this.selectValue03) {
|
||||||
// res = await this.postApiReturn({
|
res = await this.postApiReturn({
|
||||||
// apiKey: 'selectEqpmGdDetl',
|
apiKey: 'selectEqpmGdDetl',
|
||||||
// resKey: 'eqpmGdDetlData',
|
resKey: 'eqpmGdDetlData',
|
||||||
// sendParam: {
|
sendParam: {
|
||||||
// gdIdxId: this.selectValue03,
|
gdIdxId: this.selectValue03,
|
||||||
// },
|
},
|
||||||
// });
|
});
|
||||||
// }
|
}
|
||||||
|
|
||||||
// // grid에서 eqpmId를 기억해서 popup에서 중복되는 값을 제거하는데 사용하기위해 저장 - 시작
|
// grid에서 eqpmId를 기억해서 popup에서 중복되는 값을 제거하는데 사용하기위해 저장 - 시작
|
||||||
// let eqpmIdList = res.map(item => {
|
let eqpmIdList = res.map(item => {
|
||||||
// return item.eqpmId;
|
return item.eqpmId;
|
||||||
// });
|
});
|
||||||
// this.setPageData({ nowGridEqpmIdList: eqpmIdList });
|
this.setPageData({ nowGridEqpmIdList: eqpmIdList });
|
||||||
// // grid에서 eqpmId를 기억해서 popup에서 중복되는 값을 제거하는데 사용하기위해 저장 - 끝
|
// grid에서 eqpmId를 기억해서 popup에서 중복되는 값을 제거하는데 사용하기위해 저장 - 끝
|
||||||
// const newRes = res.map(item => {
|
const newRes = res.map(item => {
|
||||||
// const newObj = {
|
const newObj = {
|
||||||
// ...item,
|
...item,
|
||||||
// rowStat: null,
|
rowStat: null,
|
||||||
// };
|
};
|
||||||
// return newObj;
|
return newObj;
|
||||||
// });
|
});
|
||||||
const newRes = [
|
// const newRes = [
|
||||||
|
|
||||||
|
|
||||||
{
|
// {
|
||||||
eqpmId: 'EQ001',
|
// eqpmId: 'EQ001',
|
||||||
originEqpmId: 'ORIG001',
|
// originEqpmId: 'ORIG001',
|
||||||
eqpmNm: '냉각기 A',
|
// eqpmNm: '냉각기 A',
|
||||||
careStndVal: 75,
|
// careStndVal: 75,
|
||||||
warnStndVal: 90,
|
// warnStndVal: 90,
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
eqpmId: 'EQ002',
|
// eqpmId: 'EQ002',
|
||||||
originEqpmId: 'ORIG002',
|
// originEqpmId: 'ORIG002',
|
||||||
eqpmNm: '펌프 B',
|
// eqpmNm: '펌프 B',
|
||||||
careStndVal: 60,
|
// careStndVal: 60,
|
||||||
warnStndVal: 80,
|
// warnStndVal: 80,
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
eqpmId: 'EQ003',
|
// eqpmId: 'EQ003',
|
||||||
originEqpmId: 'ORIG003',
|
// originEqpmId: 'ORIG003',
|
||||||
eqpmNm: '모터 C',
|
// eqpmNm: '모터 C',
|
||||||
careStndVal: 50,
|
// careStndVal: 50,
|
||||||
warnStndVal: 70,
|
// warnStndVal: 70,
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
eqpmId: 'EQ004',
|
// eqpmId: 'EQ004',
|
||||||
originEqpmId: 'ORIG004',
|
// originEqpmId: 'ORIG004',
|
||||||
eqpmNm: '밸브 D',
|
// eqpmNm: '밸브 D',
|
||||||
careStndVal: 65,
|
// careStndVal: 65,
|
||||||
warnStndVal: 85,
|
// warnStndVal: 85,
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
eqpmId: 'EQ005',
|
// eqpmId: 'EQ005',
|
||||||
originEqpmId: 'ORIG005',
|
// originEqpmId: 'ORIG005',
|
||||||
eqpmNm: '컨트롤러 E',
|
// eqpmNm: '컨트롤러 E',
|
||||||
careStndVal: 55,
|
// careStndVal: 55,
|
||||||
warnStndVal: 75,
|
// warnStndVal: 75,
|
||||||
},
|
// },
|
||||||
|
|
||||||
]
|
// ]
|
||||||
this.setGridData({
|
this.setGridData({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
value: newRes,
|
value: newRes,
|
||||||
|
|||||||
@ -1,63 +1,26 @@
|
|||||||
<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">
|
||||||
<v-row align="end" no-gutters>
|
<v-row align="end" no-gutters>
|
||||||
<v-col :cols="2">
|
|
||||||
<component
|
|
||||||
:is="'SelectBlocMstr'"
|
|
||||||
ref="SelectBlocMstr"
|
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
:textCols="12"
|
|
||||||
customClass="select-large"
|
|
||||||
/>
|
|
||||||
</v-col>
|
|
||||||
<!-- <v-col :cols="2">
|
|
||||||
<component
|
|
||||||
label="검침개소"
|
|
||||||
:is="'PastRsltDataReadPop'"
|
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
/>
|
|
||||||
</v-col> -->
|
|
||||||
<!-- <v-col :cols="2">
|
|
||||||
<component
|
|
||||||
:is="'SelectTagNmList'"
|
|
||||||
ref="SelectTagNmList"
|
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
/>
|
|
||||||
</v-col> -->
|
|
||||||
<v-col :cols="3">
|
<v-col :cols="3">
|
||||||
<!-- <component
|
<component :is="'SelectBlocMstr'" ref="SelectBlocMstr" :parentPrgmId="myPrgmId"
|
||||||
:is="'PastRsltDataReadTagPop'"
|
:textCols="12" customClass="select-large" />
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
:label="'TAG'"
|
|
||||||
/> -->
|
|
||||||
<component
|
|
||||||
:is="'EvtObjPop'"
|
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
:item="evtObjPopItem"
|
|
||||||
customClass="select-large"
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="4">
|
<v-col :cols="3">
|
||||||
<component
|
<component :is="'EvtObjPop'" :parentPrgmId="myPrgmId" :item="evtObjPopItem"
|
||||||
:is="'Datepicker'"
|
customClass="select-large" />
|
||||||
:parentPrgmId="myPrgmId"
|
|
||||||
:label="'조회기간'"
|
|
||||||
:textCols="12"
|
|
||||||
/>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="3" class="d-flex align-end justify-end text-right">
|
<v-col :cols="3">
|
||||||
<BtnExcelDownload
|
<!-- 대상일 -->
|
||||||
class="mr-1"
|
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'조회기간'" :textCols="12" />
|
||||||
:parentPrgmId="myPrgmId"
|
</v-col>
|
||||||
:gridName="gridName"
|
<v-col :cols="3" class="d-flex align-end justify-end text-right">
|
||||||
type="primary"
|
<BtnExcelDownload class="mr-1" :parentPrgmId="myPrgmId" :gridName="gridName" type="primary"
|
||||||
size="large"
|
size="large" />
|
||||||
/>
|
|
||||||
<BtnSearch @click="search" size="large" />
|
<BtnSearch @click="search" size="large" />
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
@ -68,15 +31,13 @@
|
|||||||
<v-col :cols="12" style="height: 100%" class="h100">
|
<v-col :cols="12" style="height: 100%" class="h100">
|
||||||
<v-card class="px-5 py-5 h100">
|
<v-card class="px-5 py-5 h100">
|
||||||
<div ref="gridParent" class="h100 px-5" style="height: 100%">
|
<div ref="gridParent" class="h100 px-5" style="height: 100%">
|
||||||
<component
|
<component ref="myGrid" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||||
ref="myGrid"
|
:parentPrgmId="myPrgmId" />
|
||||||
:is="loadGrid ? 'Grid' : null"
|
</div>
|
||||||
:gridName="gridName"
|
<div class="d-flex align-center justify-space-between">
|
||||||
:parentPrgmId="myPrgmId"
|
<pagination id="pagination" :total-count="totalCount" :page-num="page" :limit="limit"
|
||||||
:dataPath="dataPathMock"
|
@loadData="changeGrid" />
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
@ -99,7 +60,7 @@ import BtnExcelDownload from '~/components/common/button/BtnExcelDownload';
|
|||||||
import DateUtility from '~/plugins/dateUtility';
|
import DateUtility from '~/plugins/dateUtility';
|
||||||
// import Search from "~/components/common/search";
|
// import Search from "~/components/common/search";
|
||||||
import EvtObjPop from '~/components/common/modal/EvtObjPop';
|
import EvtObjPop from '~/components/common/modal/EvtObjPop';
|
||||||
import PageTitle from "~/components/common/PageTitle";
|
import pagination from '~/components/Pagination';
|
||||||
|
|
||||||
let myTitle;
|
let myTitle;
|
||||||
// const myPrgmId = "PRG0052";
|
// const myPrgmId = "PRG0052";
|
||||||
@ -132,7 +93,7 @@ export default {
|
|||||||
PastRsltDataReadPop,
|
PastRsltDataReadPop,
|
||||||
PastRsltDataReadTagPop,
|
PastRsltDataReadTagPop,
|
||||||
EvtObjPop,
|
EvtObjPop,
|
||||||
PageTitle,
|
pagination,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -148,59 +109,16 @@ export default {
|
|||||||
valueNm2: 'tagNm',
|
valueNm2: 'tagNm',
|
||||||
iconShow: true,
|
iconShow: true,
|
||||||
disabled: false,
|
disabled: false,
|
||||||
labelCols: 12,
|
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
class: 'py-2',
|
class: 'py-2',
|
||||||
required: false,
|
required: false,
|
||||||
formFg: false,
|
formFg: false,
|
||||||
},
|
},
|
||||||
dataPathMock: {
|
itemsPerPage: 10,
|
||||||
"rowGrid": {
|
itemsPerPageArray: [10, 20, 30],
|
||||||
column: [
|
limit: 20,
|
||||||
{
|
page: 1,
|
||||||
header: 'TAG ID',
|
totalCount: 0,
|
||||||
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: {
|
||||||
@ -213,9 +131,6 @@ export default {
|
|||||||
chkTagId() {
|
chkTagId() {
|
||||||
return this.pageData.tagList === undefined ? null : this.pageData.tagId;
|
return this.pageData.tagList === undefined ? null : this.pageData.tagId;
|
||||||
},
|
},
|
||||||
// chkTagList() {
|
|
||||||
// return this.pageData.tagList;
|
|
||||||
// },
|
|
||||||
chkTagNm() {
|
chkTagNm() {
|
||||||
return this.pageData.tagData.tagNm;
|
return this.pageData.tagData.tagNm;
|
||||||
},
|
},
|
||||||
@ -225,18 +140,16 @@ export default {
|
|||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
chkIsFind(val) {
|
chkIsFind(val) {
|
||||||
if (val) this.search();
|
if (val) {
|
||||||
|
this.page = 1;
|
||||||
|
this.search();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
chkTagId(val) {
|
chkTagId(val) {
|
||||||
if (this.initFlag && val != null) {
|
if (this.initFlag && val != null) {
|
||||||
this.search();
|
this.search();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// chkTagList() {
|
|
||||||
// if(this.initFlag){
|
|
||||||
// this.search();
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
chkTagNm() {
|
chkTagNm() {
|
||||||
if (this.initFlag) {
|
if (this.initFlag) {
|
||||||
this.search();
|
this.search();
|
||||||
@ -256,7 +169,7 @@ export default {
|
|||||||
defaultData: defaultData,
|
defaultData: defaultData,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
created() {},
|
created() { },
|
||||||
async mounted() {
|
async mounted() {
|
||||||
await this.setFromDt();
|
await this.setFromDt();
|
||||||
await this.init();
|
await this.init();
|
||||||
@ -316,13 +229,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',
|
||||||
@ -377,6 +292,7 @@ export default {
|
|||||||
this.loadGrid = false;
|
this.loadGrid = false;
|
||||||
|
|
||||||
let res = [];
|
let res = [];
|
||||||
|
let res2 = [];
|
||||||
let yearQuarterData = [];
|
let yearQuarterData = [];
|
||||||
yearQuarterData = this.yearQuarterMaker([
|
yearQuarterData = this.yearQuarterMaker([
|
||||||
this.pageData.fromDt,
|
this.pageData.fromDt,
|
||||||
@ -428,8 +344,18 @@ export default {
|
|||||||
apiKey: 'selectTagRawDataByQuarter',
|
apiKey: 'selectTagRawDataByQuarter',
|
||||||
resKey: 'pastRsltReadData',
|
resKey: 'pastRsltReadData',
|
||||||
sendParam: sendParams,
|
sendParam: sendParams,
|
||||||
|
limit: this.limit,
|
||||||
|
page: this.page,
|
||||||
|
offset: (this.page - 1) * this.limit, // MariaDB Query에서 직접 계산이 안됨
|
||||||
});
|
});
|
||||||
|
|
||||||
|
res2 = await this.postApiReturn({
|
||||||
|
apiKey: 'selectTagRawDataByQuarterPageTotal',
|
||||||
|
resKey: 'pastRslPageTotal',
|
||||||
|
sendParam: sendParams
|
||||||
|
});
|
||||||
|
this.totalCount = res2[0].totalcount;
|
||||||
|
|
||||||
this.setGridData({
|
this.setGridData({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
value: res,
|
value: res,
|
||||||
@ -440,6 +366,9 @@ export default {
|
|||||||
fromDt: this.pageData.fromDt,
|
fromDt: this.pageData.fromDt,
|
||||||
toDt: this.pageData.toDt,
|
toDt: this.pageData.toDt,
|
||||||
yearQuarterList: yearQuarterData['yearQuarterList'],
|
yearQuarterList: yearQuarterData['yearQuarterList'],
|
||||||
|
limit: this.limit,
|
||||||
|
page: this.page,
|
||||||
|
offset: (this.page - 1) * this.limit, // MariaDB Query에서 직접 계산이 안됨
|
||||||
};
|
};
|
||||||
sendParams['tagId'] = this.pageData.tagId;
|
sendParams['tagId'] = this.pageData.tagId;
|
||||||
//
|
//
|
||||||
@ -457,6 +386,13 @@ export default {
|
|||||||
sendParam: sendParams,
|
sendParam: sendParams,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
res2 = await this.postApiReturn({
|
||||||
|
apiKey: 'selectTagRawDataByQuarterPageTotal',
|
||||||
|
resKey: 'pastRslPageTotal',
|
||||||
|
sendParam: sendParams
|
||||||
|
});
|
||||||
|
this.totalCount = res2[0].totalcount;
|
||||||
|
|
||||||
this.setGridData({
|
this.setGridData({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
value: res,
|
value: res,
|
||||||
@ -534,6 +470,12 @@ export default {
|
|||||||
finalResult['yearQuarterList'] = result;
|
finalResult['yearQuarterList'] = result;
|
||||||
return finalResult;
|
return finalResult;
|
||||||
},
|
},
|
||||||
|
changeGrid: async function (pageNum, limit) {
|
||||||
|
this.page = pageNum;
|
||||||
|
this.limit = limit;
|
||||||
|
|
||||||
|
this.search();
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -569,13 +511,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>
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
customClass="select-large"
|
customClass="select-large"
|
||||||
/>
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="3">
|
<v-col :cols="3">
|
||||||
<InputText
|
<InputText
|
||||||
:parentPrgmId="myPrgmId"
|
:parentPrgmId="myPrgmId"
|
||||||
label="검침대상명"
|
label="검침대상명"
|
||||||
@ -59,19 +59,16 @@
|
|||||||
:btnActionsFnc="btnActions"
|
:btnActionsFnc="btnActions"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="h100 px-5" style="height:calc(100% - 70px)">
|
<div ref="gridParent" class="h100 px-5" style="height:calc(100% - 70px)">
|
||||||
<div ref="gridParent" class="w100 h100">
|
<component
|
||||||
<component
|
:ref="gridName"
|
||||||
:ref="gridName"
|
:is="loadGrid ? 'Grid' : null"
|
||||||
:is="loadGrid ? 'Grid' : null"
|
:gridName="gridName"
|
||||||
:gridName="gridName"
|
:parentPrgmId="myPrgmId"
|
||||||
:parentPrgmId="myPrgmId"
|
@getRowsData="getRowData"
|
||||||
@getRowsData="getRowData"
|
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
:selectedRowDataWatchFlag="true"
|
||||||
:selectedRowDataWatchFlag="true"
|
/>
|
||||||
:dataPath="dataPathMock"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
@ -81,7 +78,7 @@
|
|||||||
>검침대상 상세
|
>검침대상 상세
|
||||||
</v-card-title>
|
</v-card-title>
|
||||||
<div class="px-5" style="height:calc(100% - 76px)">
|
<div class="px-5" style="height:calc(100% - 76px)">
|
||||||
<v-tabs v-model="tab" >
|
<v-tabs v-model="tab">
|
||||||
<v-tab
|
<v-tab
|
||||||
v-for="item in items"
|
v-for="item in items"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@ -188,26 +185,8 @@ export default {
|
|||||||
return {
|
return {
|
||||||
myPrgmId: myPrgmId,
|
myPrgmId: myPrgmId,
|
||||||
gridName: 'rowGrid',
|
gridName: 'rowGrid',
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
tab: null,
|
tab: null,
|
||||||
dataPathMock: {
|
|
||||||
"rowGrid": {
|
|
||||||
column: [
|
|
||||||
{ header: '검침 대상 ID', name: 'readObjId', align: 'left' },
|
|
||||||
{ header: '검침 대상 명', name: 'readObjNm', align: 'left' },
|
|
||||||
{ header: '검침 대상 유형', name: 'readObjKind', align: 'left' },
|
|
||||||
{ header: '그룹', name: 'grpCd', align: 'left' },
|
|
||||||
{ header: 'TJ 환산계수', name: 'tjCvrtCoef', align: 'right' },
|
|
||||||
{ header: 'TOE 환산계수', name: 'toeCvrtCoef', align: 'right' },
|
|
||||||
{ header: 'CO2 환산계수', name: 'co2CvrtCoef', align: 'right' },
|
|
||||||
{ header: '단위', name: 'unitCd', align: 'left' },
|
|
||||||
{ header: '사용 여부', name: 'useFg', align: 'center' },
|
|
||||||
],
|
|
||||||
data: dataPathDataExample,
|
|
||||||
defaultRow: dataPathDataExample,
|
|
||||||
option: {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
name: '검침 대상 정보',
|
name: '검침 대상 정보',
|
||||||
@ -724,8 +703,8 @@ const defaultData = {
|
|||||||
},
|
},
|
||||||
buttonAuth: {
|
buttonAuth: {
|
||||||
add: true,
|
add: true,
|
||||||
save: true,
|
|
||||||
remove: true,
|
remove: true,
|
||||||
|
save: true,
|
||||||
excel: false,
|
excel: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -873,40 +852,7 @@ const myDetail = [
|
|||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
const dataPathDataExample = [
|
|
||||||
{
|
|
||||||
readObjId: 'OBJ001',
|
|
||||||
readObjNm: '서울 본사',
|
|
||||||
readObjKind: 'TYPE01',
|
|
||||||
grpCd: 'GRP01',
|
|
||||||
tjCvrtCoef: 1.25,
|
|
||||||
toeCvrtCoef: 0.85,
|
|
||||||
co2CvrtCoef: 2.1,
|
|
||||||
unitCd: 'kWh',
|
|
||||||
useFg: '1',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
readObjId: 'OBJ002',
|
|
||||||
readObjNm: '부산 지사',
|
|
||||||
readObjKind: 'TYPE02',
|
|
||||||
grpCd: 'GRP02',
|
|
||||||
tjCvrtCoef: 1.10,
|
|
||||||
toeCvrtCoef: 0.90,
|
|
||||||
co2CvrtCoef: 1.8,
|
|
||||||
unitCd: 'MJ',
|
|
||||||
useFg: '0',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
readObjId: 'OBJ003',
|
|
||||||
readObjNm: '대전 공장',
|
|
||||||
readObjKind: 'TYPE03',
|
|
||||||
grpCd: 'GRP01',
|
|
||||||
tjCvrtCoef: 1.30,
|
|
||||||
toeCvrtCoef: 0.95,
|
|
||||||
co2CvrtCoef: 2.3,
|
|
||||||
unitCd: 'GJ',
|
|
||||||
useFg: '1',
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
@import '@/assets/scss/common.scss';
|
||||||
|
</style>
|
||||||
|
|||||||
@ -1,11 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
<!-- <h2 class="title">
|
<CommonPageTitle />
|
||||||
<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,20 +86,18 @@
|
|||||||
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="height: 55vh;">
|
||||||
<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>
|
||||||
@ -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: [
|
||||||
@ -251,6 +242,10 @@ export default {
|
|||||||
columnOptions: {
|
columnOptions: {
|
||||||
resizable: true,
|
resizable: true,
|
||||||
},
|
},
|
||||||
|
pageOptions: {
|
||||||
|
useClient: true,
|
||||||
|
perPage: 13,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
@ -260,7 +255,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();
|
||||||
@ -290,6 +284,9 @@ export default {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
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">
|
||||||
|
<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">
|
||||||
<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,32 +48,17 @@
|
|||||||
<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">
|
||||||
<pagination
|
<pagination
|
||||||
id="pagination"
|
id="pagination"
|
||||||
:total-count="totalCount"
|
:total-count="totalCount"
|
||||||
@ -121,7 +66,7 @@
|
|||||||
:limit="limit"
|
:limit="limit"
|
||||||
@loadData="changeGrid"
|
@loadData="changeGrid"
|
||||||
/>
|
/>
|
||||||
</div> -->
|
</div>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col :cols="7" class="h100">
|
<v-col :cols="7" class="h100">
|
||||||
@ -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>
|
||||||
@ -166,7 +95,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import { mapState, mapMutations, mapActions } from 'vuex';
|
import { mapState, mapMutations, mapActions } from 'vuex';
|
||||||
import mixinGlobal from '@/mixin/global.js';
|
import mixinGlobal from '@/mixin/global.js';
|
||||||
import { resize } from '@/mixin/resize.js';
|
import { resize } from '@/mixin/resize.js';
|
||||||
import BtnSearch from '~/components/common/button/BtnSearch';
|
import BtnSearch from '~/components/common/button/BtnSearch';
|
||||||
import Buttons from '~/components/common/button/Buttons';
|
import Buttons from '~/components/common/button/Buttons';
|
||||||
import SelectBlocMstr from '@/components/common/select/SelectBlocMstr';
|
import SelectBlocMstr from '@/components/common/select/SelectBlocMstr';
|
||||||
@ -183,7 +112,7 @@ let myTitle;
|
|||||||
// const myPrgmId = "PRG0051";
|
// const myPrgmId = "PRG0051";
|
||||||
let myPrgmId;
|
let myPrgmId;
|
||||||
export default {
|
export default {
|
||||||
mixins: [mixinGlobal,resize],
|
mixins: [mixinGlobal, resize],
|
||||||
async asyncData(context) {
|
async asyncData(context) {
|
||||||
const myState = context.store.state;
|
const myState = context.store.state;
|
||||||
// context.store.commit("setActiveMenuInfo", myState.menuData[myPrgmId]);
|
// context.store.commit("setActiveMenuInfo", myState.menuData[myPrgmId]);
|
||||||
@ -215,7 +144,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
myPrgmId: myPrgmId,
|
myPrgmId: myPrgmId,
|
||||||
gridName: 'rowGrid',
|
gridName: 'rowGrid',
|
||||||
loadGrid: true,
|
loadGrid: false,
|
||||||
tab: null,
|
tab: null,
|
||||||
items: [
|
items: [
|
||||||
{ name: 'TAG 정보', id: 'tagBaseInfoTab', disabledFlag: false },
|
{ name: 'TAG 정보', id: 'tagBaseInfoTab', disabledFlag: false },
|
||||||
@ -223,123 +152,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: {
|
||||||
@ -462,6 +279,10 @@ export default {
|
|||||||
columnOptions: {
|
columnOptions: {
|
||||||
resizable: true,
|
resizable: true,
|
||||||
},
|
},
|
||||||
|
scrollX: true,
|
||||||
|
header: {
|
||||||
|
height: 38,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
this.setGridOption({
|
this.setGridOption({
|
||||||
gridKey: this.gridName,
|
gridKey: this.gridName,
|
||||||
@ -1094,7 +915,7 @@ const myDetail = [
|
|||||||
label: 'TAG ID',
|
label: 'TAG ID',
|
||||||
valueNm: 'tagId',
|
valueNm: 'tagId',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
iconShow:true,
|
iconShow: true,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2 pr-4',
|
class: 'py-2 pr-4',
|
||||||
required: false,
|
required: false,
|
||||||
@ -1106,7 +927,7 @@ const myDetail = [
|
|||||||
label: 'TAG 명',
|
label: 'TAG 명',
|
||||||
valueNm: 'tagNm',
|
valueNm: 'tagNm',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
iconShow:true,
|
iconShow: true,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2 pl-4',
|
class: 'py-2 pl-4',
|
||||||
required: false,
|
required: false,
|
||||||
@ -1118,7 +939,7 @@ const myDetail = [
|
|||||||
label: '측정 값 유형',
|
label: '측정 값 유형',
|
||||||
valueNm: 'readDataTypeCd',
|
valueNm: 'readDataTypeCd',
|
||||||
disabled: false,
|
disabled: false,
|
||||||
iconShow:true,
|
iconShow: true,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2 pr-4 pt-5',
|
class: 'py-2 pr-4 pt-5',
|
||||||
list: 'readDataTypeCdList',
|
list: 'readDataTypeCdList',
|
||||||
@ -1139,7 +960,7 @@ const myDetail = [
|
|||||||
itemText: 'readObjNm',
|
itemText: 'readObjNm',
|
||||||
itemValue: 'readObjId',
|
itemValue: 'readObjId',
|
||||||
required: true,
|
required: true,
|
||||||
iconShow:true,
|
iconShow: true,
|
||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
},
|
},
|
||||||
@ -1151,7 +972,7 @@ const myDetail = [
|
|||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2 pr-4 pt-5',
|
class: 'py-2 pr-4 pt-5',
|
||||||
required: true,
|
required: true,
|
||||||
iconShow:true,
|
iconShow: true,
|
||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
},
|
},
|
||||||
@ -1165,7 +986,7 @@ const myDetail = [
|
|||||||
list: 'unitCdList',
|
list: 'unitCdList',
|
||||||
itemText: 'commCdNm',
|
itemText: 'commCdNm',
|
||||||
itemValue: 'commCd',
|
itemValue: 'commCd',
|
||||||
iconShow:true,
|
iconShow: true,
|
||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
},
|
},
|
||||||
@ -1176,7 +997,7 @@ const myDetail = [
|
|||||||
disabled: false,
|
disabled: false,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2 pr-4 pt-5',
|
class: 'py-2 pr-4 pt-5',
|
||||||
iconShow:true,
|
iconShow: true,
|
||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
},
|
},
|
||||||
@ -1187,7 +1008,7 @@ const myDetail = [
|
|||||||
disabled: false,
|
disabled: false,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2 pl-4 pt-5',
|
class: 'py-2 pl-4 pt-5',
|
||||||
iconShow:true,
|
iconShow: true,
|
||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
},
|
},
|
||||||
@ -1198,7 +1019,7 @@ const myDetail = [
|
|||||||
disabled: false,
|
disabled: false,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2 pr-4 pt-5',
|
class: 'py-2 pr-4 pt-5',
|
||||||
iconShow:true,
|
iconShow: true,
|
||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
},
|
},
|
||||||
@ -1209,7 +1030,7 @@ const myDetail = [
|
|||||||
disabled: false,
|
disabled: false,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2 pl-4 pt-5',
|
class: 'py-2 pl-4 pt-5',
|
||||||
iconShow:true,
|
iconShow: true,
|
||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
},
|
},
|
||||||
@ -1220,7 +1041,7 @@ const myDetail = [
|
|||||||
disabled: false,
|
disabled: false,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2 pr-4 pt-5',
|
class: 'py-2 pr-4 pt-5',
|
||||||
iconShow:true,
|
iconShow: true,
|
||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
},
|
},
|
||||||
@ -1231,7 +1052,7 @@ const myDetail = [
|
|||||||
disabled: false,
|
disabled: false,
|
||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2 pl-4 pt-5',
|
class: 'py-2 pl-4 pt-5',
|
||||||
iconShow:true,
|
iconShow: true,
|
||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
},
|
},
|
||||||
@ -1243,7 +1064,7 @@ const myDetail = [
|
|||||||
cols: 6,
|
cols: 6,
|
||||||
class: 'py-2 pr-4 pt-5',
|
class: 'py-2 pr-4 pt-5',
|
||||||
value: { '1': true, '0': false },
|
value: { '1': true, '0': false },
|
||||||
iconShow:true,
|
iconShow: true,
|
||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
},
|
},
|
||||||
@ -1256,7 +1077,7 @@ const myDetail = [
|
|||||||
class: 'py-2 pl-4 pt-5',
|
class: 'py-2 pl-4 pt-5',
|
||||||
value: { '1': true, '0': false },
|
value: { '1': true, '0': false },
|
||||||
required: false,
|
required: false,
|
||||||
iconShow:true,
|
iconShow: true,
|
||||||
labelCols: 12,
|
labelCols: 12,
|
||||||
textCols: 12,
|
textCols: 12,
|
||||||
},
|
},
|
||||||
@ -1285,25 +1106,4 @@ const myDetail = [
|
|||||||
class: 'py-2',
|
class: 'py-2',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
</script>
|
||||||
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>
|
|
||||||
|
|
||||||
@ -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"
|
||||||
@getRowsData="getRowData" @sendSelectedRowStatInfo="getSelectedRowStatInfo" :dataPath="dataPathMock"
|
:selectedRowDataWatchFlag="true" />
|
||||||
:selectedRowDataWatchFlag="true" />
|
<!-- <div ref="gridParent" class="w100 h100">
|
||||||
</div>
|
</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>
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
<v-row ref="searchFilter">
|
<common-page-title />
|
||||||
|
<v-row ref="searchFilter" class="mt-2">
|
||||||
<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>
|
||||||
@ -66,9 +67,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 +147,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 +239,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 +361,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 +378,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 +489,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 +553,10 @@ export default {
|
|||||||
resizable: true,
|
resizable: true,
|
||||||
},
|
},
|
||||||
rowHeaders: ['rowNum'],
|
rowHeaders: ['rowNum'],
|
||||||
|
header: {
|
||||||
|
height: 37,
|
||||||
|
},
|
||||||
|
rowHeight: 37,
|
||||||
|
|
||||||
|
|
||||||
// pageOptions: {
|
// pageOptions: {
|
||||||
@ -1130,27 +700,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,
|
||||||
// },
|
},
|
||||||
// });
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -195,68 +195,51 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
async getEqpmKind() {
|
async getEqpmKind() {
|
||||||
// let res = await this.postApiReturn({
|
let res = await this.postApiReturn({
|
||||||
// apiKey: "selectEqpmKindCodeList",
|
apiKey: 'selectEqpmKindCodeList',
|
||||||
// resKey: "eqpmKindCodeLists",
|
resKey: 'eqpmKindCodeLists',
|
||||||
// sendParam: {},
|
sendParam: {},
|
||||||
// });
|
});
|
||||||
|
|
||||||
let res = [
|
if (res.length > 0) {
|
||||||
{
|
this.selectValueList01 = await res.map(item => {
|
||||||
eqpmKindId: "냉동기저온",
|
return {
|
||||||
eqpmKindNm: "냉동기저온",
|
text: item.eqpmKindNm,
|
||||||
},
|
value: item.eqpmKindId,
|
||||||
{
|
};
|
||||||
eqpmKindId: "냉동기고온",
|
});
|
||||||
eqpmKindNm: "냉동기고온",
|
this.selectValue01 = this.selectValueList01[0].value;
|
||||||
},
|
} else {
|
||||||
];
|
this.selectValueList01 = [];
|
||||||
|
this.selectValue01 = null;
|
||||||
if (res.length > 0) {
|
}
|
||||||
this.selectValueList01 = await res.map((item) => {
|
this.setPageData({
|
||||||
return {
|
eqpmKindList: this.selectValueList01,
|
||||||
// text: item.eqpmKindNm,
|
eqpmKindId: this.selectValue01,
|
||||||
label: item.eqpmKindNm,
|
});
|
||||||
value: item.eqpmKindId,
|
},
|
||||||
};
|
|
||||||
});
|
|
||||||
this.selectValue01 = this.selectValueList01[0].value;
|
|
||||||
} else {
|
|
||||||
this.selectValueList01 = [];
|
|
||||||
this.selectValue01 = null;
|
|
||||||
}
|
|
||||||
this.setPageData({
|
|
||||||
eqpmKindList: this.selectValueList01,
|
|
||||||
eqpmKindId: this.selectValue01,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
gridInit() {},
|
gridInit() {},
|
||||||
getRowGridData() {},
|
getRowGridData() {},
|
||||||
async getData() {
|
async getData() {
|
||||||
// let res = await this.postApiReturn({
|
let res = await this.postApiReturn({
|
||||||
// apiKey: "selectEnrgEffcTotSumm",
|
apiKey: 'selectEnrgEffcTotSumm',
|
||||||
// resKey: "totSummData",
|
resKey: 'totSummData',
|
||||||
// sendParam: {
|
sendParam: {
|
||||||
// fromDt: this.pageData.fromDt,
|
fromDt: this.pageData.fromDt,
|
||||||
// eqpmKindId: this.selectValue01,
|
eqpmKindId: this.selectValue01,
|
||||||
// },
|
},
|
||||||
// });
|
});
|
||||||
let res = ["aaa", "bbb"];
|
|
||||||
await this.getChartData(res);
|
|
||||||
|
|
||||||
// this.selectData = res.filter((item, i) => {
|
await this.getChartData(res);
|
||||||
// return (
|
|
||||||
// res.findIndex((item2, j) => {
|
|
||||||
// return item.eqpmGrpId === item2.eqpmGrpId;
|
|
||||||
// }) === i
|
|
||||||
// );
|
|
||||||
// });
|
|
||||||
|
|
||||||
this.selectData = [
|
this.selectData = res.filter((item, i) => {
|
||||||
{ eqpmGrpId: "G001", eqpmGrpNm: "Group A", otherProp: "..." },
|
return (
|
||||||
{ eqpmGrpId: "G002", eqpmGrpNm: "Group B", otherProp: "..." },
|
res.findIndex((item2, j) => {
|
||||||
];
|
return item.eqpmGrpId === item2.eqpmGrpId;
|
||||||
},
|
}) === i
|
||||||
|
);
|
||||||
|
});
|
||||||
|
},
|
||||||
barClick(event, chartName) {
|
barClick(event, chartName) {
|
||||||
var data = {};
|
var data = {};
|
||||||
if (chartName == "card") {
|
if (chartName == "card") {
|
||||||
@ -291,52 +274,40 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
async getChartData(data) {
|
async getChartData(data) {
|
||||||
var chartDataObj = {};
|
var chartDataObj = {};
|
||||||
this.objList = {};
|
this.objList = {};
|
||||||
// let res = await this.postApiReturn({
|
// let res = await this.postApiReturn({
|
||||||
// apiKey : 'selectEnrgEffcTotSumm',
|
// apiKey : 'selectEnrgEffcTotSumm',
|
||||||
// resKey : 'totSummData',
|
// resKey : 'totSummData',
|
||||||
// sendParam:{
|
// sendParam:{
|
||||||
// fromDt : this.pageData.fromDt,
|
// fromDt : this.pageData.fromDt,
|
||||||
// eqpmKindId : this.pageData.eqpmKindId,
|
// eqpmKindId : this.pageData.eqpmKindId,
|
||||||
// }
|
// }
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// data.map((item) => {
|
data.map(item => {
|
||||||
// if (chartDataObj[item.eqpmGrpId] != null) {
|
if (chartDataObj[item.eqpmGrpId] != null) {
|
||||||
// chartDataObj[item.eqpmGrpId].push(item);
|
chartDataObj[item.eqpmGrpId].push(item);
|
||||||
// } else {
|
} else {
|
||||||
// chartDataObj[item.eqpmGrpId] = [item];
|
chartDataObj[item.eqpmGrpId] = [item];
|
||||||
// }
|
}
|
||||||
// });
|
});
|
||||||
|
|
||||||
chartDataObj = {
|
// chartDataObj.keys()[0]
|
||||||
group1: [
|
var i = 0;
|
||||||
{ fabNm: "Fab A", okCnt: 120, ngCnt: 30 },
|
for (var x of Object.keys(chartDataObj)) {
|
||||||
{ fabNm: "Fab B", okCnt: 150, ngCnt: 20 },
|
this.loadChartList.push(false);
|
||||||
{ fabNm: "Fab C", okCnt: 100, ngCnt: 50 },
|
i++;
|
||||||
],
|
this.objList['chart_0' + i] = chartDataObj[x];
|
||||||
group2: [
|
this.chartNameList.push('chart_0' + i);
|
||||||
{ fabNm: "Fab D", okCnt: 180, ngCnt: 10 },
|
this.setPageData({
|
||||||
{ fabNm: "Fab E", okCnt: 160, ngCnt: 25 },
|
[this.chartNameList[i - 1]]: Utility.defaultChartOption(true),
|
||||||
{ fabNm: "Fab F", okCnt: 140, ngCnt: 35 },
|
});
|
||||||
],
|
|
||||||
};
|
|
||||||
|
|
||||||
// chartDataObj.keys()[0]
|
this.setChartData(chartDataObj[x], i);
|
||||||
var i = 0;
|
}
|
||||||
for (var x of Object.keys(chartDataObj)) {
|
// this.setChartData(chartDataObj[Object.keys(chartDataObj)[0]]);
|
||||||
this.loadChartList.push(false);
|
},
|
||||||
i++;
|
|
||||||
this.objList["chart_0" + i] = chartDataObj[x];
|
|
||||||
this.chartNameList.push("chart_0" + i);
|
|
||||||
this.setPageData({
|
|
||||||
[this.chartNameList[i - 1]]: Utility.defaultChartOption(true),
|
|
||||||
});
|
|
||||||
this.setChartData(chartDataObj[x], i);
|
|
||||||
}
|
|
||||||
// this.setChartData(chartDataObj[Object.keys(chartDataObj)[0]]);
|
|
||||||
},
|
|
||||||
async setChartData(data, number) {
|
async setChartData(data, number) {
|
||||||
this.loadChartList[number - 1] = false;
|
this.loadChartList[number - 1] = false;
|
||||||
let xAxisData = [];
|
let xAxisData = [];
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="l-layout">
|
<div class="l-layout">
|
||||||
|
<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">
|
||||||
@ -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";
|
||||||
@ -244,7 +245,6 @@ export default {
|
|||||||
|
|
||||||
|
|
||||||
this.setChartOption({ chartKey: this.chartName, value: chartOption });
|
this.setChartOption({ chartKey: this.chartName, value: chartOption });
|
||||||
// console.log("----DEBUG chart-options-------", { chartOption });
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.loadChart = true;
|
this.loadChart = true;
|
||||||
});
|
});
|
||||||
|
|||||||
@ -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,9 +264,6 @@ export default {
|
|||||||
},
|
},
|
||||||
created() { },
|
created() { },
|
||||||
async mounted() {
|
async mounted() {
|
||||||
console.log('----DEBUG---');
|
|
||||||
await this.initTest();
|
|
||||||
// End Debug Test---
|
|
||||||
await this.init();
|
await this.init();
|
||||||
this.initedFlag = true;
|
this.initedFlag = true;
|
||||||
},
|
},
|
||||||
@ -289,7 +284,7 @@ export default {
|
|||||||
}),
|
}),
|
||||||
async initTest() {
|
async initTest() {
|
||||||
// debug test
|
// debug test
|
||||||
console.log('----DEBUG init pages----');
|
// console.log('----DEBUG init pages----');
|
||||||
const seriesName1 = ['B01. 냉동기전력량', ' B01.COP'];
|
const seriesName1 = ['B01. 냉동기전력량', ' B01.COP'];
|
||||||
const seriesName2 = [
|
const seriesName2 = [
|
||||||
'UT_HT_CH101:냉동기전혁당', 'UT_HT_CH102:냉동기전력량', 'UT_HT_CH201:냉동기전력당',
|
'UT_HT_CH101:냉동기전혁당', 'UT_HT_CH102:냉동기전력량', 'UT_HT_CH201:냉동기전력당',
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user