Compare commits
61 Commits
c3d01c998c
...
dev-luannv
Author | SHA1 | Date | |
---|---|---|---|
3ae3ff8167 | |||
881a5ceb2d | |||
e4074201e4 | |||
a557130c15 | |||
34d5a1eeb7 | |||
3c249aa476 | |||
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 | |||
aec9353ab2 | |||
2dd0c6a72c | |||
631637a8e1 | |||
3ff87852e5 | |||
d45d141c3c |
@ -144,7 +144,7 @@ a {
|
||||
|
||||
& .router-tab__container {
|
||||
overflow-y: auto;
|
||||
min-height: calc(100vh - 105px);
|
||||
height: calc(100vh - 105px);
|
||||
max-height: calc(100vh - 105px);
|
||||
padding: 20px;
|
||||
}
|
||||
@ -434,7 +434,7 @@ a {
|
||||
.v-application.#{$theme}-mode {
|
||||
min-width: 1000px;
|
||||
|
||||
.head-logo{
|
||||
.head-logo {
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
@ -474,7 +474,7 @@ a {
|
||||
|
||||
.header {
|
||||
background-color: map-deep-get($config, #{$theme}, "header-backgroud");
|
||||
border-color: #D3D6EA;
|
||||
border-bottom: 1px solid map-deep-get($config, #{$theme}, "v-header-border");
|
||||
}
|
||||
|
||||
.btn-header {
|
||||
@ -485,9 +485,11 @@ a {
|
||||
|
||||
.container--fluid {
|
||||
background-color: map-deep-get($config, #{$theme}, "container-fluid");
|
||||
|
||||
.menu-container {
|
||||
max-height:calc(100vh - 60px);
|
||||
height:calc(100vh - 60px);
|
||||
overflow-y: auto;
|
||||
border-right: 1px solid map-deep-get($config, #{$theme}, "v-sidebar-border") ;
|
||||
}
|
||||
}
|
||||
|
||||
@ -950,15 +952,24 @@ a {
|
||||
"v-calendar-weekday-backgroundColor"
|
||||
);
|
||||
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");
|
||||
|
||||
&: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) {
|
||||
color: map-deep-get($color, "week", "sat");
|
||||
}
|
||||
// &:nth-of-type(7) {
|
||||
// color: map-deep-get($config,
|
||||
// #{$theme},
|
||||
// "v-calendar-is-sat"
|
||||
// );
|
||||
// }
|
||||
}
|
||||
|
||||
>.vc-day {
|
||||
@ -967,22 +978,33 @@ a {
|
||||
|
||||
.day-hldyNm,
|
||||
.day-label.is-holiday {
|
||||
color: map-deep-get($color, "week", "sun");
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-calendar-is-sun"
|
||||
);
|
||||
}
|
||||
|
||||
&.weekday-1 {
|
||||
|
||||
.day-label,
|
||||
.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 {
|
||||
|
||||
.day-label,
|
||||
.day-hldyNm {
|
||||
color: map-deep-get($color, "week", "sat");
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-calendar-is-sat"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1184,11 +1206,17 @@ a {
|
||||
}
|
||||
|
||||
th.tui-sun {
|
||||
color: map-deep-get($color, "week", "sun");
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-calendar-is-sun"
|
||||
);
|
||||
}
|
||||
|
||||
th.tui-sat {
|
||||
color: map-deep-get($color, "week", "sat");
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-calendar-is-sat"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1204,11 +1232,17 @@ a {
|
||||
}
|
||||
|
||||
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 {
|
||||
color: map-deep-get($color, "week", "sat");
|
||||
color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"v-calendar-is-sat"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1322,11 +1356,12 @@ a {
|
||||
color: #46c0ff;
|
||||
}
|
||||
}
|
||||
|
||||
.v-btn {
|
||||
background-color: transparent !important;
|
||||
color: map-deep-get($config, #{$theme}, "btn-header-select-color") !important;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
[hover-tooltip] {
|
||||
|
@ -92,10 +92,13 @@
|
||||
background: map-deep-get($config, #{$theme}, "basic-button-background");
|
||||
}
|
||||
|
||||
.search-button {
|
||||
color: map-deep-get($config, #{$theme}, "search-btn-color");
|
||||
.searchFilter{
|
||||
.search-button {
|
||||
height: 40px;
|
||||
color: map-deep-get($config, #{$theme}, "search-btn-color");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.v-dialog {
|
||||
.ant-btn-icon-only {
|
||||
color: map-deep-get(
|
||||
@ -135,6 +138,15 @@
|
||||
background: map-deep-get($config, #{$theme}, "ant-btn-danger-bg") !important;
|
||||
}
|
||||
}
|
||||
|
||||
&.expand-btn {
|
||||
.v-icon {
|
||||
color: map-deep-get($config, #{$theme}, "basic-button-color");
|
||||
svg {
|
||||
fill: map-deep-get($config, #{$theme}, "basic-button-color");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -161,4 +173,13 @@
|
||||
height: 16px;
|
||||
background:none;
|
||||
}
|
||||
}
|
||||
}
|
||||
.ant-btn {
|
||||
&.expand-btn {
|
||||
.v-icon {
|
||||
span {
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -98,6 +98,26 @@
|
||||
@include theme($theme);
|
||||
|
||||
.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"
|
||||
);
|
||||
}
|
||||
|
||||
.grid-toggle-section{
|
||||
.tui-grid-rside-area{
|
||||
.tui-grid-body-area {
|
||||
height: auto !important;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tui-grid {
|
||||
&-table {
|
||||
border: 1px solid;
|
||||
@ -123,11 +143,11 @@
|
||||
}
|
||||
|
||||
&-body-container{
|
||||
border-right: 1px solid;
|
||||
border-right-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-borderColor"
|
||||
);
|
||||
border-right: 0;
|
||||
// border-right-color: map-deep-get($config,
|
||||
// #{$theme},
|
||||
// "tui-grid-cell-borderColor"
|
||||
// );
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
@ -140,24 +160,27 @@
|
||||
width: $scrollbar-width !important;
|
||||
height: $scrollbar-width !important;
|
||||
-webkit-appearance: initial;
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"scrollbar-track"
|
||||
) !important;
|
||||
// background-color: map-deep-get($config,
|
||||
// #{$theme},
|
||||
// "tui-grid-cell-borderColor"
|
||||
// ) !important;
|
||||
background-color: rgba(0, 0, 0, 0) !important;
|
||||
border-radius: 3px !important;
|
||||
}
|
||||
|
||||
& ::-webkit-scrollbar-track {
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"scrollbar-track"
|
||||
) !important;
|
||||
// background-color: map-deep-get($config,
|
||||
// #{$theme},
|
||||
// "tui-grid-cell-borderColor"
|
||||
// ) !important;
|
||||
background-color: rgba(0, 0, 0, 0) !important;
|
||||
}
|
||||
|
||||
& ::-webkit-scrollbar-thumb {
|
||||
width: 50px !important;
|
||||
height: 50px !important;
|
||||
background-color: map-deep-get($config, #{$theme}, "scrollbar-thumb");
|
||||
// background-color: rgba(0, 0, 0, 0);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
@ -184,6 +207,7 @@
|
||||
&-scrollbar-right-top {
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
border: none;
|
||||
display: none;
|
||||
// background-color: map-deep-get(
|
||||
// $config,
|
||||
// #{$theme},
|
||||
@ -210,12 +234,13 @@
|
||||
width: $scrollbar-width !important;
|
||||
height: $scrollbar-width !important;
|
||||
// display: none !important;
|
||||
border-color: map-deep-get($config, #{$theme}, "scrollbar-track");
|
||||
background-color: map-deep-get($config, #{$theme}, "scrollbar-track");
|
||||
border-color: map-deep-get($config, #{$theme}, "cardBackground");
|
||||
background-color: map-deep-get($config, #{$theme}, "cardBackground");
|
||||
// border: none !important;
|
||||
// bottom: -1px;
|
||||
// right: -2px;
|
||||
box-sizing: border-box;
|
||||
// display: none;
|
||||
}
|
||||
|
||||
&-scrollbar-frozen-border,
|
||||
@ -225,13 +250,9 @@
|
||||
border-color: transparent !important;
|
||||
}
|
||||
|
||||
// &-body-area {
|
||||
// overflow: auto !important;
|
||||
// }
|
||||
|
||||
&-body-area,
|
||||
&-container,
|
||||
&-layer-state,
|
||||
&-body-area,
|
||||
&-summary-area,
|
||||
&-cell {
|
||||
background-color: map-deep-get($config,
|
||||
@ -243,23 +264,36 @@
|
||||
"tui-grid-border-vertical-color"
|
||||
);
|
||||
|
||||
&-current-row{
|
||||
td {
|
||||
.custom-radio {
|
||||
.radio-mark{
|
||||
border-color: #1677ff;
|
||||
background-color: #fff;
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
height: 11px;
|
||||
width: 11px;
|
||||
border-radius: 50%;
|
||||
background-color: #1677ff;
|
||||
}
|
||||
// &-current-row{
|
||||
// }
|
||||
td.row-selected {
|
||||
.custom-radio {
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"ant-btn-primary-color"
|
||||
);
|
||||
.radio-mark{
|
||||
border-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"arow-line-color"
|
||||
);
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"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 +325,8 @@
|
||||
&-header-area,
|
||||
&-cell-header {
|
||||
// font-family: inherit;
|
||||
// font-style: Semi Bold;
|
||||
font-weight: 600;
|
||||
font-style: Semi Bold;
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-header-backgroundColor"
|
||||
@ -309,8 +343,13 @@
|
||||
}
|
||||
|
||||
&-header-area {
|
||||
background-color: none;
|
||||
// background-color: none;
|
||||
border: none;
|
||||
margin-right: 0 !important;
|
||||
background-color: map-deep-get($config,
|
||||
#{$theme},
|
||||
"tui-grid-cell-backgroundColor"
|
||||
);
|
||||
}
|
||||
|
||||
&-row-odd,
|
||||
|
@ -171,8 +171,8 @@
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
padding-left: 28px;
|
||||
margin: 10px;
|
||||
padding-left: 0;
|
||||
margin: 5px;
|
||||
font-size: 16px;
|
||||
}
|
||||
.custom-radio input[type="radio"] {
|
||||
@ -183,13 +183,13 @@
|
||||
/* Custom radio appearance */
|
||||
.radio-mark {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
left: -8px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
height: 18px;
|
||||
width: 18px;
|
||||
background-color: white;
|
||||
border: 2px solid #ccc;
|
||||
height: 14px;
|
||||
width: 14px;
|
||||
// background-color: white;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 50%;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
@ -263,9 +263,6 @@
|
||||
"v-input-backgroundColor"
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
&:not(.v-input--radio-group, .v-input--checkbox) {
|
||||
.v-input__slot {
|
||||
background-color: map-deep-get($config,
|
||||
@ -372,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 {
|
||||
|
@ -63,6 +63,12 @@
|
||||
line-height: 1.25 !important;
|
||||
}
|
||||
|
||||
.custom-title-7 {
|
||||
font-size: 0.875rem !important;
|
||||
font-weight: 400 !important;
|
||||
line-height: 22px !important;
|
||||
}
|
||||
|
||||
.custom-title-8 {
|
||||
font-size: 0.75rem !important;
|
||||
font-weight: 700 !important;
|
||||
@ -76,15 +82,15 @@
|
||||
|
||||
.custom-text-2 {
|
||||
opacity: 0.6;
|
||||
font-family: SpoqaHanSansNeo;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
font-stretch: normal;
|
||||
font-style: normal;
|
||||
line-height: 2.17;
|
||||
letter-spacing: normal;
|
||||
text-align: right;
|
||||
color: #fff;
|
||||
// font-weight: normal;
|
||||
// font-stretch: normal;
|
||||
// font-style: normal;
|
||||
// letter-spacing: normal;
|
||||
// text-align: right;
|
||||
// color: #fff;
|
||||
// font-family: SpoqaHanSansNeo;
|
||||
}
|
||||
|
||||
.text-color--white-0 {
|
||||
@ -113,6 +119,14 @@
|
||||
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 {
|
||||
.custom-title-4 {
|
||||
font-size: 16px !important;
|
||||
|
@ -14,11 +14,14 @@
|
||||
position: relative;
|
||||
border-radius: 6px;
|
||||
border: solid 1px;
|
||||
height: 40px;
|
||||
height: 32px;
|
||||
// border-color: #424242;
|
||||
border-color: map-deep-get($config, #{$theme}, "tui-datepicker-border-color");
|
||||
|
||||
|
||||
&.datepicker-large {
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.v-input {
|
||||
|
||||
// ----------------------
|
||||
|
@ -32,8 +32,8 @@ $color: (
|
||||
"black": ("0": #000,
|
||||
"1": #111),
|
||||
"white": ("0": #fff),
|
||||
"week": ("sun": #fb5a83,
|
||||
"sat": #2d8cf6)
|
||||
"week": ("sun": #FF4D4F,
|
||||
"sat": #597EF7)
|
||||
);
|
||||
|
||||
$config: (
|
||||
@ -96,16 +96,19 @@ $config: (
|
||||
v-input-disabled-backgroundColor:rgba(255, 255, 255, 0.08),
|
||||
v-input-disabled-color: rgba(255, 255, 255, 0.5),
|
||||
v-select-label-color: rgba(255, 255, 255, 0.85),
|
||||
v-calendar-weekday-backgroundColor: #383f5d,
|
||||
v-calendar-weekday-color: #fff,
|
||||
v-calendar-weekday-border-color: rgba(255, 255, 255, 0.1),
|
||||
v-calendar-day-color: #fff,
|
||||
v-calendar-day-in-not-month-color: rgba(255, 255, 255, 0.05),
|
||||
v-calendar-is-today-background-color: #2d4571,
|
||||
v-calendar-weekday-backgroundColor: #FFFFFF0A,
|
||||
v-calendar-weekday-color: #FFFFFFD9,
|
||||
v-calendar-weekday-border-color: #FFFFFF0F,
|
||||
v-calendar-day-color: #FFFFFFD9,
|
||||
v-calendar-day-in-not-month-color: #FFFFFF14,
|
||||
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-color: #FFFFFFD9,
|
||||
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-color: #fff,
|
||||
tui-grid-cell-insert-color: #13636c,
|
||||
@ -170,6 +173,9 @@ $config: (
|
||||
ant-btn-default-border-outlined:#424242,
|
||||
btn-header-select-bg: #1F1F1F,
|
||||
btn-header-select-color:#FFFFFFD9,
|
||||
subtitle-tab: #FFFFFFA6,
|
||||
v-header-border: #424242,
|
||||
v-sidebar-border: #303030,
|
||||
),
|
||||
light: (w-g5: $--color-gray_555,
|
||||
g5-w: $--color-white,
|
||||
@ -232,12 +238,15 @@ $config: (
|
||||
v-input-disabled-backgroundColor: rgba(0, 0, 0, 0.04),
|
||||
v-input-disabled-color: rgba(0, 0, 0, 0.25),
|
||||
v-select-label-color: rgba(0, 0, 0, 0.88),
|
||||
v-calendar-weekday-backgroundColor: #e0e0e0,
|
||||
v-calendar-weekday-color: #111,
|
||||
v-calendar-weekday-border-color: #d4d4d4,
|
||||
v-calendar-day-color: #111,
|
||||
v-calendar-day-in-not-month-color: #f8f8f8,
|
||||
v-calendar-is-today-background-color: #e3eaf3,
|
||||
v-calendar-weekday-backgroundColor: #00000005,
|
||||
v-calendar-weekday-color: #000000E0,
|
||||
v-calendar-weekday-border-color: #0000000F,
|
||||
v-calendar-day-color: #000000E0,
|
||||
v-calendar-day-in-not-month-color: #0000000A,
|
||||
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-color: rgba(0, 0, 0, 0.88),
|
||||
tui-grid-border-horziontal-color: #e0e0e0,
|
||||
@ -304,5 +313,8 @@ $config: (
|
||||
ant-btn-default-border-outlined:#D9D9D9,
|
||||
btn-header-select-color:#1F1F1F,
|
||||
btn-header-select-bg:#FFFFFF,
|
||||
subtitle-tab: #000000A6,
|
||||
v-header-border: #D9D9D9,
|
||||
v-sidebar-border: #F0F0F0,
|
||||
),
|
||||
);
|
@ -3,45 +3,28 @@
|
||||
<div class="custom-vc-calender-title text-center" v-if="headerVisible">
|
||||
<span>{{ selectedYear }}년 {{ selectedMonth }}월</span>
|
||||
</div>
|
||||
<vc-calendar
|
||||
ref="myCalendar"
|
||||
:attributes="calendarAttributes"
|
||||
class="custom-calendar"
|
||||
>
|
||||
<vc-calendar locale="ko-KR" ref="myCalendar" :attributes="calendarAttributes" class="custom-calendar">
|
||||
<!-- disable-page-swipe
|
||||
is-expanded -->
|
||||
<template v-slot:day-content="{ day, attributes }">
|
||||
<div class="plusButton" style="overflow:auto">
|
||||
<!-- <p class="plusButton mr-1" >+</p> -->
|
||||
<span
|
||||
:class="['day-label', { 'is-holiday': hldyValues(day.day) }]"
|
||||
@click="addPlan(day.year, day.month, day.day)"
|
||||
>{{ day.day }}</span
|
||||
>
|
||||
<span :class="['day-label', { 'is-holiday': hldyValues(day.day) }]"
|
||||
@click="addPlan(day.year, day.month, day.day)">{{ day.day }}</span>
|
||||
<span v-for="attr in attributes" :key="attr.key" class="day-hldyNm">
|
||||
{{ attr.customData.title }}
|
||||
</span>
|
||||
<div class="">
|
||||
<p
|
||||
v-for="attr in attributes"
|
||||
:key="attr.key"
|
||||
:class="attr.customData.planColor"
|
||||
@click="updatePlan(attr.customData.planSeq)"
|
||||
>
|
||||
<p v-for="attr in attributes" :key="attr.key" :class="attr.customData.planColor"
|
||||
@click="updatePlan(attr.customData.planSeq)">
|
||||
{{ attr.customData.planTitle }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</vc-calendar>
|
||||
<component
|
||||
ref="planPop"
|
||||
:is="'PlanPop'"
|
||||
v-show="false"
|
||||
:detailList="detailList"
|
||||
:label="planLabel"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
/>
|
||||
<component ref="planPop" :is="'PlanPop'" v-show="false" :detailList="detailList" :label="planLabel"
|
||||
:parentPrgmId="parentPrgmId" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
@ -63,6 +46,10 @@ export default {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
showTitle: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
@ -122,7 +109,7 @@ export default {
|
||||
planColor:
|
||||
// item.endDt < Utility.setFormatDate(new Date(), 'YYYY-MM-DD')
|
||||
// ? 'grey':
|
||||
item.planColor,
|
||||
item.planColor,
|
||||
},
|
||||
dates: new Date(yy, mm, dd),
|
||||
});
|
||||
@ -166,15 +153,14 @@ export default {
|
||||
this.$refs['planPop'].strtDt = '';
|
||||
this.$refs['planPop'].endDt = '';
|
||||
this.$refs['planPop'].addPlanData = {
|
||||
year : year,
|
||||
month : month,
|
||||
day : day
|
||||
year: year,
|
||||
month: month,
|
||||
day: day
|
||||
}
|
||||
// BEGIN TEST UI
|
||||
// this.$refs['planPop'].blocId = this.pageData.blocMstrList[
|
||||
// this.pageData.blocId
|
||||
// ].blocId;
|
||||
// END TEST UI
|
||||
|
||||
this.$refs['planPop'].blocId = this.pageData.blocMstrList[
|
||||
this.pageData.blocId
|
||||
].blocId;
|
||||
this.$refs['planPop'].dialog = true;
|
||||
},
|
||||
updatePlan(val) {
|
||||
@ -188,7 +174,7 @@ export default {
|
||||
this.$refs['planPop'].dialog = true;
|
||||
},
|
||||
},
|
||||
mounted() {},
|
||||
mounted() { },
|
||||
};
|
||||
const myDetail = [];
|
||||
</script>
|
||||
@ -196,36 +182,44 @@ const myDetail = [];
|
||||
<style lang="scss" scoped>
|
||||
@import '@/assets/scss/var.scss';
|
||||
@import '@/assets/scss/mixin.scss';
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 0px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.custom-vc-calender {
|
||||
&-title {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep {
|
||||
.custom-calendar.vc-container {
|
||||
width: 100%;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.vc-header,
|
||||
.vc-arrows-container {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.vc-weeks {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
padding: 0;
|
||||
> div {
|
||||
|
||||
>div {
|
||||
flex: 1 0 calc(100% / 7);
|
||||
}
|
||||
}
|
||||
|
||||
.vc-weekday {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@ -233,6 +227,7 @@ const myDetail = [];
|
||||
height: 36px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.vc-day {
|
||||
height: 10.889vh;
|
||||
min-height: auto;
|
||||
@ -241,6 +236,7 @@ const myDetail = [];
|
||||
font-size: 1rem;
|
||||
line-height: 1.235;
|
||||
}
|
||||
|
||||
.day-hldyNm {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
@ -251,25 +247,27 @@ const myDetail = [];
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
> div {
|
||||
>div {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
padding: 10px;
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.vc-day.is-not-in-month {
|
||||
* {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
}
|
||||
.plusButton:hover > span:first-child {
|
||||
|
||||
.plusButton:hover>span:first-child {
|
||||
font-weight: bolder;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.red {
|
||||
//background-color: rgba(229,62,62,var(--bg-opacity));
|
||||
background-color: #e53e3e !important;
|
||||
background-color: #FF4D4F !important;
|
||||
color: #fff;
|
||||
border-radius: 0.125rem;
|
||||
font-size: 0.75rem;
|
||||
@ -277,9 +275,9 @@ const myDetail = [];
|
||||
text-align: left;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.blue {
|
||||
//background-color: rgba(66,153,225,var(--bg-opacity));
|
||||
background-color: #4299e1 !important;
|
||||
background-color: #597EF7 !important;
|
||||
color: #fff;
|
||||
border-radius: 0.125rem;
|
||||
font-size: 0.75rem;
|
||||
@ -287,9 +285,9 @@ const myDetail = [];
|
||||
text-align: left;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.puple {
|
||||
//background-color: rgba(102,126,234,var(--bg-opacity));
|
||||
background-color: #667eea !important;
|
||||
background-color: #9254DE !important;
|
||||
color: #fff;
|
||||
border-radius: 0.125rem;
|
||||
font-size: 0.75rem;
|
||||
@ -297,9 +295,9 @@ const myDetail = [];
|
||||
text-align: left;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.green {
|
||||
//background-color: rgba(56,178,172,var(--bg-opacity));
|
||||
background-color: #38b2ac !important;
|
||||
background-color: #73D13D !important;
|
||||
color: #fff;
|
||||
border-radius: 0.125rem;
|
||||
font-size: 0.75rem;
|
||||
@ -308,9 +306,9 @@ const myDetail = [];
|
||||
margin-bottom: 0.25rem;
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.orange {
|
||||
//background-color: rgba(237,137,54,var(--bg-opacity));
|
||||
background-color: #ed8936 !important;
|
||||
background-color: #FFA940 !important;
|
||||
color: #fff;
|
||||
border-radius: 0.125rem;
|
||||
font-size: 0.75rem;
|
||||
@ -318,9 +316,9 @@ const myDetail = [];
|
||||
text-align: left;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.pink {
|
||||
//background-color: rgba(237,100,166,var(--bg-opacity));
|
||||
background-color: #ed64a6 !important;
|
||||
background-color: #F759AB !important;
|
||||
color: #fff;
|
||||
border-radius: 0.125rem;
|
||||
font-size: 0.75rem;
|
||||
@ -328,8 +326,8 @@ const myDetail = [];
|
||||
text-align: left;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.grey {
|
||||
background-color: #6d6d6d;
|
||||
color: #fff;
|
||||
border-radius: 0.125rem;
|
||||
font-size: 0.75rem;
|
||||
|
@ -9,7 +9,7 @@
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<div class="datepicker-container" >
|
||||
<div :class="['datepicker-container', customClass]" >
|
||||
<v-text-field
|
||||
id="startpicker"
|
||||
ref="startpicker"
|
||||
@ -93,7 +93,12 @@ export default {
|
||||
type:Boolean,
|
||||
require:false,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -4,12 +4,13 @@
|
||||
:data="chkGridData"
|
||||
:columns="chkGridColumns"
|
||||
:options="chkGridOptions"
|
||||
@focusChange="focusChangeEvt"
|
||||
@mousedown="onMousedown"
|
||||
@click="startEditing"
|
||||
@editingFinish="editingFinish"
|
||||
@dblclick="dblClick"
|
||||
@mouseover="mouseoverEvent"
|
||||
@mouseout="mouseoutEvent"
|
||||
@focusChange="focusChangeEvt"
|
||||
/>
|
||||
</template>
|
||||
<script>
|
||||
@ -107,16 +108,13 @@ export default {
|
||||
},
|
||||
chkGridOptions() {
|
||||
const options = {
|
||||
// bodyHeight: 'fitToContent',
|
||||
scrollX: false,
|
||||
scrollY: false,
|
||||
...this.gridData.option,
|
||||
useIcon: false,
|
||||
};
|
||||
options.treeColumnOptions = {
|
||||
useIcon: false,
|
||||
...options.treeColumnOptions,
|
||||
};
|
||||
|
||||
return options;
|
||||
},
|
||||
defaultRow() {
|
||||
@ -163,7 +161,7 @@ export default {
|
||||
},
|
||||
created() {},
|
||||
async mounted() {
|
||||
// console.log('--------------DEBUG----gridData: ', this.gridData);
|
||||
// console.log(this.dataPath);
|
||||
if (this.gridName) {
|
||||
this.gridInstance = this.$refs['tuigrid' + this.gridName];
|
||||
|
||||
@ -186,13 +184,13 @@ export default {
|
||||
}),
|
||||
// true : 현재 행 혹은 연결된 그리드가 수정중인 상태
|
||||
checkGridState() {
|
||||
var rowStatList = ['I', 'U', 'D'];
|
||||
var row = this.gridInstance.invoke('getFocusedCell');
|
||||
const rowStatList = ['I', 'U', 'D'];
|
||||
const row = this.gridInstance.invoke('getFocusedCell');
|
||||
|
||||
if (row) {
|
||||
var rowData = this.gridInstance.invoke('getRow', row.rowKey);
|
||||
const rowData = this.gridInstance.invoke('getRow', row.rowKey);
|
||||
if (rowData) {
|
||||
var rowStat = rowData['rowStat'];
|
||||
const rowStat = rowData['rowStat'];
|
||||
if (rowStatList.includes(rowStat)) {
|
||||
return true;
|
||||
}
|
||||
@ -200,8 +198,8 @@ export default {
|
||||
}
|
||||
|
||||
if (this.preventFocusChangeEventTargetGridList) {
|
||||
for (var gridInstance of this.preventFocusChangeEventTargetGridList) {
|
||||
var dataArr = gridInstance.save();
|
||||
for (let gridInstance of this.preventFocusChangeEventTargetGridList) {
|
||||
const dataArr = gridInstance.save();
|
||||
|
||||
if (dataArr.length > 0) {
|
||||
return true;
|
||||
@ -253,9 +251,11 @@ export default {
|
||||
this.gridInstance.invoke('check', rowData.rowKey, instance);
|
||||
},
|
||||
setSelectionRange(rowKey) {
|
||||
// console.log("------------------DEBUG-------setSelectionRange:", rowKey);
|
||||
const rowDatas = this.gridInstance.invoke('getData');
|
||||
rowDatas.forEach(item => {
|
||||
if (item.rowKey == rowKey) {
|
||||
// console.log("------------------DEBUG-------setSelectionRange---item:", item);
|
||||
this.gridInstance.invoke(
|
||||
'addRowClassName',
|
||||
item.rowKey,
|
||||
@ -270,7 +270,12 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
onMousedown(evt) {
|
||||
// console.log("------------------DEBUG-------onMousedown:", evt);
|
||||
this.focusChangeEvt(evt);
|
||||
},
|
||||
focusChangeEvt(e) {
|
||||
// console.log("------------------DEBUG-------focusChangeEvt:", e);
|
||||
// console.log('focusChangeEvt1...')
|
||||
if (this.preventFocusChangeEvent(e)) {
|
||||
// console.log('prevent focusChangeEvt')
|
||||
@ -291,6 +296,7 @@ export default {
|
||||
this.sendSelectedRowData(e.rowKey);
|
||||
},
|
||||
startEditing(e) {
|
||||
// console.log("------------------DEBUG-------startEditing:", e);
|
||||
// console.log('startEditing1...')
|
||||
if (this.preventFocusChangeEvent(e)) {
|
||||
// console.log('prevent startEditing')
|
||||
@ -317,6 +323,7 @@ export default {
|
||||
}
|
||||
},
|
||||
async editingFinish(e) {
|
||||
// console.log('------------------DEBUG-------editingFinish:', e);
|
||||
// console.log("Editing END E::", e);
|
||||
// editor 간 이동시 수정되는 문제 수정
|
||||
// e.rowEditingFg: grid의 한 row를 한번에 수정할 시 각각의 cell 마다 click 이벤트가 발생하지 않아 this.editorStartKey값이 제대로 입력 되지 않는 경우를 대비하여 만든 Fg
|
||||
@ -666,8 +673,6 @@ export default {
|
||||
store.dimension.offsetLeft = offsetLeft;
|
||||
},
|
||||
setHeight(_a,height){
|
||||
return; // setting auto height
|
||||
|
||||
// console.log("setHeight");
|
||||
var dimension = _a.dimension;
|
||||
var headerHeight = dimension.headerHeight, summaryHeight = dimension.summaryHeight, tableBorderWidth = dimension.tableBorderWidth;
|
||||
@ -680,6 +685,7 @@ export default {
|
||||
? this.gridInstance.invoke('getFocusedCell').rowKey
|
||||
: eventRowKey;
|
||||
var rowData = this.gridInstance.invoke('getRow', rowKey);
|
||||
// console.log('------------------DEBUG-------sendSelectedRowData:', {eventRowKey, rowKey});
|
||||
this.$emit('sendSelectedRowStatInfo', rowData);
|
||||
}
|
||||
},
|
||||
@ -705,11 +711,6 @@ export default {
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
::v-deep .tui-grid-container {
|
||||
|
||||
// .tui-grid-body-area {
|
||||
// overflow: hidden !important;
|
||||
// }
|
||||
|
||||
.tui-grid-content-area {
|
||||
.tui-grid-cell-content {
|
||||
input[type='number'] {
|
||||
|
@ -2,12 +2,14 @@
|
||||
<v-row class="search-box" align="center" no-gutters>
|
||||
<v-col v-if="label" :cols="labelCols">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon x-small color="primary" class="mr-1">mdi-record-circle</v-icon>
|
||||
<v-icon small color="primary"
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon>
|
||||
{{ label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<div class="datepicker-container">
|
||||
<div :class="['datepicker-container', customClass]" >
|
||||
<v-text-field
|
||||
id="startpicker"
|
||||
ref="startpicker"
|
||||
@ -17,14 +19,16 @@
|
||||
readonly
|
||||
outlined
|
||||
>
|
||||
<template #append>
|
||||
<v-icon size="20">$icoCalendar</v-icon>
|
||||
<template #append >
|
||||
<v-icon size="20" v-show="!isRange">$icoCalendar</v-icon>
|
||||
</template>
|
||||
<template #append-outer>
|
||||
<div ref="startpicker-container" id="startpicker-container"></div>
|
||||
</template>
|
||||
</v-text-field>
|
||||
<div v-show="isRange" class="mx-3" :style="{ lineHeight: 0 }">~</div>
|
||||
<div v-if="isRange" class="mx-3" :style="{ lineHeight: 0 }">
|
||||
<img :src="arrowIcon" alt="">
|
||||
</div>
|
||||
<v-text-field
|
||||
v-show="isRange"
|
||||
id="endpicker"
|
||||
@ -75,6 +79,10 @@ export default {
|
||||
require: false,
|
||||
default: 8,
|
||||
},
|
||||
customClass: {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -129,6 +137,12 @@ export default {
|
||||
this.defaultRange === 'no limite'
|
||||
);
|
||||
},
|
||||
arrowIcon() {
|
||||
if(this.isDarkMode){
|
||||
return require('@/assets/images/arrow_datepicker_dm.png');
|
||||
}
|
||||
return require('@/assets/images/arrow_datepicker.png');
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
myCmCycle() {
|
||||
|
@ -31,8 +31,8 @@ export default {
|
||||
this.mode = !this.mode;
|
||||
this.$vuetify.theme.isDark = this.mode;
|
||||
this.setThemeChange(this.mode);
|
||||
console.log(this.mode)
|
||||
console.log(this.$vuetify.theme.isDark)
|
||||
// console.log(this.mode)
|
||||
// console.log(this.$vuetify.theme.isDark)
|
||||
},
|
||||
},
|
||||
};
|
||||
|
@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<div class="d-flex flex-column justify-center align-center">
|
||||
<div class="d-flex flex-row justify-center align-center" style="gap: 12px">
|
||||
<!--<v-btn icon tile :ripple="false" @click="btnActionsFnc('addLeftToRight')">
|
||||
<v-icon>mdi-chevron-right</v-icon>
|
||||
</v-btn> -->
|
||||
<a-button @click="btnActionsFnc('addLeftToRight')" type="primary" ghost icon="right" >
|
||||
<a-button @click="btnActionsFnc('removeRightToLeft')" type="primary" ghost icon="up" >
|
||||
</a-button>
|
||||
|
||||
<!--<v-btn
|
||||
@ -15,7 +15,7 @@
|
||||
>
|
||||
<v-icon>mdi-chevron-left</v-icon>
|
||||
</v-btn> -->
|
||||
<a-button class="mt-2" @click="btnActionsFnc('removeRightToLeft')" type="primary" ghost icon="left">
|
||||
<a-button @click="btnActionsFnc('addLeftToRight')" type="primary" ghost icon="down">
|
||||
</a-button>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -45,7 +45,7 @@ export default {
|
||||
size: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: "middle", // small, middle, large
|
||||
default: "default", // small, middle, large
|
||||
}
|
||||
},
|
||||
data() {
|
||||
|
@ -1,5 +1,5 @@
|
||||
// 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
|
||||
? [
|
||||
[0.375, '#49AA19'], // Dark Green
|
||||
|
@ -2,7 +2,7 @@
|
||||
export default function getLineChartOption({
|
||||
xAxisData = [],
|
||||
seriesData = [],
|
||||
legendData = [],
|
||||
// legendData = [],
|
||||
isDarkMode = false,
|
||||
}) {
|
||||
|
||||
@ -15,7 +15,8 @@ export default function getLineChartOption({
|
||||
const styledSeries = seriesData.map((item, index) => {
|
||||
const color = item.color || defaultColors[index % defaultColors.length];
|
||||
return {
|
||||
...item,
|
||||
...item,
|
||||
showSymbol: true, // Show symbol at each data point
|
||||
itemStyle: {
|
||||
color,
|
||||
},
|
||||
@ -27,17 +28,17 @@ export default function getLineChartOption({
|
||||
left: '3%',
|
||||
right: '5%',
|
||||
top: '25%',
|
||||
bottom: '0%',
|
||||
containLabel: true,
|
||||
},
|
||||
|
||||
legend: {
|
||||
data: legendData,
|
||||
// data: legendData,
|
||||
icon: 'circle',
|
||||
top: '0%',
|
||||
right: '5%',
|
||||
orient: 'horizontal',
|
||||
textStyle: {
|
||||
color: isDarkMode ? '#676A7B' : '#676A7B',
|
||||
color: isDarkMode ? 'white' : '#676A7B',
|
||||
},
|
||||
},
|
||||
xAxis: {
|
||||
|
@ -125,7 +125,7 @@ export default {
|
||||
modifyValue(e) {
|
||||
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){
|
||||
val = this.item.min;
|
||||
@ -134,7 +134,7 @@ export default {
|
||||
if(this.item.max != undefined && parseFloat(val) > this.item.max){
|
||||
val = this.item.max;
|
||||
}
|
||||
console.log('val2 : ', val);
|
||||
// console.log('val2 : ', val);
|
||||
|
||||
this.textValue = val;
|
||||
// this.textValue = this.validateNumber(val);
|
||||
|
@ -152,12 +152,12 @@ export default {
|
||||
const snarData = this.searchParam.isMulti
|
||||
? this.searchParam.snarInfoList
|
||||
: this.searchParam.snarInfo;
|
||||
console.log('this.searchParam.isMulti', this.searchParam.isMulti);
|
||||
console.log(
|
||||
'this.searchParam.snarInfoList',
|
||||
this.searchParam.snarInfoList,
|
||||
);
|
||||
console.log('this.searchParam.snarInfo', this.searchParam.snarInfo);
|
||||
// console.log('this.searchParam.isMulti', this.searchParam.isMulti);
|
||||
// console.log(
|
||||
// 'this.searchParam.snarInfoList',
|
||||
// this.searchParam.snarInfoList,
|
||||
// );
|
||||
// console.log('this.searchParam.snarInfo', this.searchParam.snarInfo);
|
||||
if (Array.isArray(snarData)) {
|
||||
if (snarData.length > 0) {
|
||||
for (const item of snarData) {
|
||||
|
@ -394,7 +394,7 @@ export default {
|
||||
params: {},
|
||||
},
|
||||
});
|
||||
console.log('statusCd', statusCd);
|
||||
// console.log('statusCd', statusCd);
|
||||
if (statusCd.data.retnCd == 0) {
|
||||
const params2 = {
|
||||
simulationId: statusCd.data.dataset.simulId,
|
||||
|
@ -22,6 +22,7 @@
|
||||
<span class="custom-title-4">{{ option.modalTitle }}</span>
|
||||
<a-button icon="close" type="text" @click="dialogOpenCloseEvent(dialog)"></a-button>
|
||||
</v-card-title>
|
||||
|
||||
<div class="px-6 py-4 pt-0">
|
||||
<v-row align="center">
|
||||
<v-col :cols="5">
|
||||
@ -46,11 +47,10 @@
|
||||
v-model="searchWord" @keyup.enter="search"><template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
|
||||
</template></v-text-field>
|
||||
</v-col>
|
||||
<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()"
|
||||
class="search-button">조회</a-button>
|
||||
<!-- <v-btn :ripple="false" @click="initSearch()">
|
||||
@ -59,26 +59,32 @@
|
||||
</v-col>
|
||||
</v-row>
|
||||
</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>
|
||||
|
||||
</div>
|
||||
|
||||
<div :style="'height: calc(50vh)'">
|
||||
<!-- <div style="height: 50vh;">
|
||||
<div ref="modalGridParent" class="h100 px-6 py-4">
|
||||
<component :is="loadGrid && dialog ? 'Grid' : null" :gridName="grid_01"
|
||||
:dataPath="searchParam.pyscModalData.egrpPysclQtyPop" :parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData" @dblClick="setUpdate($event)" />
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
|
||||
<!-- <v-btn :ripple="false" @click="setUpdate($event)">확인</v-btn>
|
||||
<v-btn :ripple="false" @click="dialogOpenCloseEvent(dialog)">닫기</v-btn> -->
|
||||
<!-- <v-btn v-if="item.closeBtnFg || false" :ripple="false" @click="deleteBtnAction($event)">삭제</v-btn> -->
|
||||
<a-button :ripple="false" @click="setUpdate($event)" class="mr-2">확인</a-button>
|
||||
<a-button :ripple="false" type="primary" @click="dialogOpenCloseEvent(dialog)"
|
||||
class="mr-2">닫기</a-button>
|
||||
<a-button v-if="item.closeBtnFg || false" :ripple="false" icon="delete" type="danger" ghost danger
|
||||
@click="deleteBtnAction($event)">삭제</a-button>
|
||||
|
||||
<a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)" class="mr-2">닫기</a-button>
|
||||
<a-button v-if="item.closeBtnFg || false" :ripple="false" type="danger" ghost danger
|
||||
@click="deleteBtnAction($event)" class="mr-2">삭제</a-button>
|
||||
<a-button :ripple="false" type="primary" @click="setUpdate($event)">확인</a-button>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -150,23 +156,7 @@ export default {
|
||||
return {
|
||||
dialog: false,
|
||||
|
||||
loadGrid: true,
|
||||
dataPathPopExample: {
|
||||
"rowGrid": {
|
||||
data: [
|
||||
{
|
||||
'calcProc': 'AVG_CNT2',
|
||||
'argCnt': '2',
|
||||
'calcDesc': '두개 변수에 대한 평균'
|
||||
|
||||
}
|
||||
],
|
||||
column: [
|
||||
{ header: '계산코드', name: 'calcProc', width: 150 },
|
||||
{ header: '아규먼트갯수', name: 'argCnt', align: 'center', width: 100 },
|
||||
]
|
||||
}
|
||||
},
|
||||
loadGrid: false,
|
||||
grid_01: 'grid_01',
|
||||
myModalKey: 'egrpPysclQtyPop',
|
||||
modalDataKey: 'pyscModalData',
|
||||
@ -298,46 +288,39 @@ export default {
|
||||
},
|
||||
async setSelectValueList01() {
|
||||
// form으로 popup 사용할 때 인자로 eqpmKindId, eqpmGrpId 보내줘야한다.
|
||||
// let res = await this.postApiReturn({
|
||||
// apiKey: 'selectEqpmGrpCodeList',
|
||||
// resKey: 'eqpmGrpCodeLists',
|
||||
// sendParam: {
|
||||
// eqpmKindId:
|
||||
// this.item.eqpmKindId != undefined
|
||||
// ? this.item.eqpmKindId
|
||||
// : this.searchParam.eqpmKindId,
|
||||
// },
|
||||
// // form을 통해 popup을 사용할 경우 -> this.item.eqpmKindId 사용
|
||||
// // 부모 페이지에서 설비종류인 eqpmKindId 값을 꼭 가져와야한다.
|
||||
// });
|
||||
// if (res.length > 0) {
|
||||
// this.selectValueList01 = await res.map(obj => {
|
||||
// return {
|
||||
// text: obj.eqpmGrpNm,
|
||||
// value: obj.eqpmGrpId,
|
||||
// };
|
||||
// });
|
||||
// // form을 통해 popup을 사용할 경우 -> this.item.eqpmGrpId 사용
|
||||
// // 부모 페이지에서 설비그룹을 선택한 값이 있다면(eqpmGrpId) 그 값으로 바인딩 아닐 경우 조회한 데이터의 첫번째 값으로 선택
|
||||
// // console.log('this.item.eqpmGrpId : ', this.item.eqpmGrpId);
|
||||
// // console.log('this.searchParam.eqpmGrpId : ', this.searchParam.eqpmGrpId);
|
||||
// this.selectValue01 =
|
||||
// this.item.eqpmGrpId != undefined
|
||||
// ? this.item.eqpmGrpId
|
||||
// : this.searchParam.eqpmGrpId != undefined
|
||||
// ? this.searchParam.eqpmGrpId
|
||||
// : this.selectValueList01[0].value;
|
||||
// } else {
|
||||
// this.selectValueList01 = [];
|
||||
// this.selectValue01 = null;
|
||||
// }
|
||||
|
||||
this.selectValueList01 = [
|
||||
{ label: '냉동기고온', value: '냉동기고온' },
|
||||
{ label: '냉동기저온', value: '냉동기저온' },
|
||||
{ label: '공조기', value: '공조기' },
|
||||
{ label: '보일러', value: '보일러' }
|
||||
];
|
||||
let res = await this.postApiReturn({
|
||||
apiKey: 'selectEqpmGrpCodeList',
|
||||
resKey: 'eqpmGrpCodeLists',
|
||||
sendParam: {
|
||||
eqpmKindId:
|
||||
this.item.eqpmKindId != undefined
|
||||
? this.item.eqpmKindId
|
||||
: this.searchParam.eqpmKindId,
|
||||
},
|
||||
// form을 통해 popup을 사용할 경우 -> this.item.eqpmKindId 사용
|
||||
// 부모 페이지에서 설비종류인 eqpmKindId 값을 꼭 가져와야한다.
|
||||
});
|
||||
if (res.length > 0) {
|
||||
this.selectValueList01 = await res.map(obj => {
|
||||
return {
|
||||
text: obj.eqpmGrpNm,
|
||||
value: obj.eqpmGrpId,
|
||||
};
|
||||
});
|
||||
// form을 통해 popup을 사용할 경우 -> this.item.eqpmGrpId 사용
|
||||
// 부모 페이지에서 설비그룹을 선택한 값이 있다면(eqpmGrpId) 그 값으로 바인딩 아닐 경우 조회한 데이터의 첫번째 값으로 선택
|
||||
// console.log('this.item.eqpmGrpId : ', this.item.eqpmGrpId);
|
||||
// console.log('this.searchParam.eqpmGrpId : ', this.searchParam.eqpmGrpId);
|
||||
this.selectValue01 =
|
||||
this.item.eqpmGrpId != undefined
|
||||
? this.item.eqpmGrpId
|
||||
: this.searchParam.eqpmGrpId != undefined
|
||||
? this.searchParam.eqpmGrpId
|
||||
: this.selectValueList01[0].value;
|
||||
} else {
|
||||
this.selectValueList01 = [];
|
||||
this.selectValue01 = null;
|
||||
}
|
||||
},
|
||||
search() {
|
||||
this.getGridData();
|
||||
@ -359,7 +342,7 @@ export default {
|
||||
modalDataKey: this.modalDataKey,
|
||||
value: Object.assign(
|
||||
// Utility.defaultGridOption(this.$refs.modalGridParent.offsetHeight - 60, myOptions),
|
||||
// Utility.defaultGridOption(100, myOptions),
|
||||
Utility.defaultGridOption(400, myOptions),
|
||||
myOptions,
|
||||
),
|
||||
});
|
||||
@ -388,44 +371,44 @@ export default {
|
||||
this.loadGrid = false;
|
||||
|
||||
let res = [];
|
||||
// res = await this.postApiReturn({
|
||||
// apiKey: 'selectEgrpPysclQtyPop',
|
||||
// resKey: 'egrpPysclQtyData',
|
||||
// sendParam: {
|
||||
// searchWord: this.searchWord,
|
||||
// eqpmGrpId: this.selectValue01,
|
||||
// openMode: this.item.openMode,
|
||||
// },
|
||||
// });
|
||||
// let newRes = [];
|
||||
// let tempTagList = this.pyscPopVal.split('/*wq2a/');
|
||||
// let tagList = tempTagList.filter(item => item != '');
|
||||
// if (tagList.length > 0) {
|
||||
// newRes = res.filter(item => {
|
||||
// return !tagList.includes(item.pysclQtyId);
|
||||
// });
|
||||
// res = newRes;
|
||||
// }
|
||||
|
||||
// //이미 선택된 값들 제거(배열)
|
||||
// if (this.item.dataList) {
|
||||
// if (this.item.dataList.length > 0) {
|
||||
// newRes = res.filter(item => {
|
||||
// return !this.item.dataList.includes(item.pysclQtyId);
|
||||
// });
|
||||
// res = newRes;
|
||||
// }
|
||||
// }
|
||||
|
||||
res = [
|
||||
{
|
||||
'pysclQtyId': 'PYSCL00001',
|
||||
'pysclQtyCd': 'AMP_1A',
|
||||
'pysclQtyNm': '회로1 전류A',
|
||||
'pysclQtyTpNm': 'TAG'
|
||||
res = await this.postApiReturn({
|
||||
apiKey: 'selectEgrpPysclQtyPop',
|
||||
resKey: 'egrpPysclQtyData',
|
||||
sendParam: {
|
||||
searchWord: this.searchWord,
|
||||
eqpmGrpId: this.selectValue01,
|
||||
openMode: this.item.openMode,
|
||||
},
|
||||
});
|
||||
let newRes = [];
|
||||
let tempTagList = this.pyscPopVal.split('/*wq2a/');
|
||||
let tagList = tempTagList.filter(item => item != '');
|
||||
if (tagList.length > 0) {
|
||||
newRes = res.filter(item => {
|
||||
return !tagList.includes(item.pysclQtyId);
|
||||
});
|
||||
res = newRes;
|
||||
}
|
||||
|
||||
//이미 선택된 값들 제거(배열)
|
||||
if (this.item.dataList) {
|
||||
if (this.item.dataList.length > 0) {
|
||||
newRes = res.filter(item => {
|
||||
return !this.item.dataList.includes(item.pysclQtyId);
|
||||
});
|
||||
res = newRes;
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
// res = [
|
||||
// {
|
||||
// 'pysclQtyId' : 'PYSCL00001',
|
||||
// 'pysclQtyCd' : 'AMP_1A',
|
||||
// 'pysclQtyNm' : '회로1 전류A',
|
||||
// 'pysclQtyTpNm' : 'TAG'
|
||||
|
||||
// }
|
||||
// ]
|
||||
this.setModalGridData({
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.grid_01,
|
||||
@ -480,10 +463,10 @@ export default {
|
||||
this.dialog = flag;
|
||||
},
|
||||
async dialogOpenCloseEvent(val) {
|
||||
// await this.setSelectValueList01();
|
||||
// if (!this.myBindingData) {
|
||||
// return alert('그리드를 먼저 선택해주세요.');
|
||||
// }
|
||||
await this.setSelectValueList01();
|
||||
if (!this.myBindingData) {
|
||||
return alert('그리드를 먼저 선택해주세요.');
|
||||
}
|
||||
this.dialog = !val;
|
||||
},
|
||||
deleteBtnAction(v) {
|
||||
|
@ -2,12 +2,8 @@
|
||||
<v-row class="search-box" align="center">
|
||||
<v-col :cols="option.labelCols" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon
|
||||
v-if="item.iconShow"
|
||||
small
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
<v-icon v-if="item.iconShow" small
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']">$icoBulletPoint</v-icon>
|
||||
{{ option.labelContent }}
|
||||
</label>
|
||||
</v-col>
|
||||
@ -30,9 +26,9 @@
|
||||
<div class="pa-6 pt-0">
|
||||
<v-row align="center">
|
||||
<v-col :cols="5">
|
||||
<component :is="'SelectBox'" ref="SelectBox1" :labelCols="12" :textCols="12" :iconShow="true"
|
||||
:propsValue="selectValue01" :itemList="selectValueList01" :label="'설비그룹'"
|
||||
@update:propsValue="selectValue01 = $event" :readonly="item.openMode == undefined
|
||||
<component :is="'SelectBox'" ref="SelectBox1" :labelCols="12" :textCols="12"
|
||||
:iconShow="true" :propsValue="selectValue01" :itemList="selectValueList01"
|
||||
:label="'설비그룹'" @update:propsValue="selectValue01 = $event" :readonly="item.openMode == undefined
|
||||
? openMode
|
||||
: item.openMode == 'ALL'
|
||||
? false
|
||||
@ -47,14 +43,14 @@
|
||||
물리량명
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="9"> <v-text-field append-icon="" class="v-input__custom"
|
||||
outlined :hide-details="true" v-model="searchWord"
|
||||
@keyup.enter="search"><template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
<v-col :cols="9"> <v-text-field append-icon="" class="v-input__custom" outlined
|
||||
:hide-details="true" v-model="searchWord" @keyup.enter="search"><template
|
||||
v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
|
||||
|
||||
</template></v-text-field></v-col>
|
||||
</template></v-text-field></v-col>
|
||||
<v-spacer></v-spacer>
|
||||
<v-col cols="3" class="text-right">
|
||||
<a-button icon="search" type="primary" @click="search()"
|
||||
@ -76,9 +72,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
|
||||
<a-button :ripple="false" @click="setUpdate($event)" class="mr-2">확인</a-button>
|
||||
<a-button :ripple="false" type="primary" @click="dialogOpenCloseEvent(dialog)"
|
||||
class="mr-2">닫기</a-button>
|
||||
<a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)" class="mr-2">닫기</a-button>
|
||||
<a-button :ripple="false" type="primary" @click="setUpdate($event)">확인</a-button>
|
||||
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -274,36 +270,30 @@ export default {
|
||||
this.gridInit();
|
||||
},
|
||||
async setSelectValueList01() {
|
||||
// let res = await this.postApiReturn({
|
||||
// apiKey: 'selectEqpmGrpCodeList',
|
||||
// resKey: 'eqpmGrpCodeLists',
|
||||
// sendParam: { eqpmKindId: this.searchParam.eqpmKindId },
|
||||
// // 부모 페이지에서 설비종류인 eqpmKindId 값을 꼭 가져와야한다.
|
||||
// });
|
||||
// if (res.length > 0) {
|
||||
// this.selectValueList01 = await res.map(obj => {
|
||||
// return {
|
||||
// text: obj.eqpmGrpNm,
|
||||
// value: obj.eqpmGrpId,
|
||||
// };
|
||||
// });
|
||||
// // 부모 페이지에서 설비그룹을 선택한 값이 있다면(eqpmGrpId) 그 값으로 바인딩 아닐 경우 조회한 데이터의 첫번째 값으로 선택
|
||||
// this.selectValue01 =
|
||||
// this.searchParam.eqpmGrpId != undefined
|
||||
// ? this.searchParam.eqpmGrpId
|
||||
// : this.selectValueList01[0].value;
|
||||
// // this.selectValue01 = this.selectValueList01[0].value;
|
||||
// } else {
|
||||
// this.selectValueList01 = [];
|
||||
// this.selectValue01 = null;
|
||||
// }
|
||||
let res = await this.postApiReturn({
|
||||
apiKey: 'selectEqpmGrpCodeList',
|
||||
resKey: 'eqpmGrpCodeLists',
|
||||
sendParam: { eqpmKindId: this.searchParam.eqpmKindId },
|
||||
// 부모 페이지에서 설비종류인 eqpmKindId 값을 꼭 가져와야한다.
|
||||
});
|
||||
if (res.length > 0) {
|
||||
this.selectValueList01 = await res.map(obj => {
|
||||
return {
|
||||
text: obj.eqpmGrpNm,
|
||||
value: obj.eqpmGrpId,
|
||||
};
|
||||
});
|
||||
// 부모 페이지에서 설비그룹을 선택한 값이 있다면(eqpmGrpId) 그 값으로 바인딩 아닐 경우 조회한 데이터의 첫번째 값으로 선택
|
||||
this.selectValue01 =
|
||||
this.searchParam.eqpmGrpId != undefined
|
||||
? this.searchParam.eqpmGrpId
|
||||
: this.selectValueList01[0].value;
|
||||
// this.selectValue01 = this.selectValueList01[0].value;
|
||||
} else {
|
||||
this.selectValueList01 = [];
|
||||
this.selectValue01 = null;
|
||||
}
|
||||
|
||||
this.selectValueList01 = [
|
||||
{ label: '냉동기고온', value: '냉동기고온' },
|
||||
{ label: '냉동기저온', value: '냉동기저온' },
|
||||
{ label: '공조기', value: '공조기' },
|
||||
{ label: '보일러', value: '보일러' }
|
||||
];
|
||||
},
|
||||
search() {
|
||||
this.getGridData();
|
||||
@ -341,34 +331,26 @@ export default {
|
||||
},
|
||||
async getGridData() {
|
||||
this.loadGrid = false;
|
||||
// let res = [];
|
||||
// let res = await this.postApiReturn({
|
||||
// apiKey: 'selectEqpmBaseInfoPop',
|
||||
// resKey: 'epqmBaseInfoData',
|
||||
// sendParam: {
|
||||
// eqpmGrpId: this.selectValue01,
|
||||
// searchWord: this.searchWord,
|
||||
// // openMode : this.item.openMode == undefined ? this.openMode : this.item.openMode
|
||||
// },
|
||||
// });
|
||||
// // grid와 popup eqpmId 값 중복되는 것 제거하는 로직 - 시작
|
||||
// let newRes = [];
|
||||
// if (this.bindingGridEqpmIdList.length > 0) {
|
||||
// newRes = res.filter(item => {
|
||||
// return !this.bindingGridEqpmIdList.includes(item.eqpmId);
|
||||
// });
|
||||
// res = newRes;
|
||||
// }
|
||||
|
||||
let res = await this.postApiReturn({
|
||||
apiKey: 'selectEqpmBaseInfoPop',
|
||||
resKey: 'epqmBaseInfoData',
|
||||
sendParam: {
|
||||
eqpmGrpId: this.selectValue01,
|
||||
searchWord: this.searchWord,
|
||||
// openMode : this.item.openMode == undefined ? this.openMode : this.item.openMode
|
||||
},
|
||||
});
|
||||
// grid와 popup eqpmId 값 중복되는 것 제거하는 로직 - 시작
|
||||
let newRes = [];
|
||||
if (this.bindingGridEqpmIdList.length > 0) {
|
||||
newRes = res.filter(item => {
|
||||
return !this.bindingGridEqpmIdList.includes(item.eqpmId);
|
||||
});
|
||||
res = newRes;
|
||||
}
|
||||
// grid와 popup eqpmId 값 중복되는 것 제거하는 로직 - 끝
|
||||
|
||||
const res = [
|
||||
{
|
||||
'eqpmId': 'PYSCL00001',
|
||||
'eqpmNm': 'AMP_1A',
|
||||
|
||||
}
|
||||
]
|
||||
|
||||
this.setModalGridData({
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.gridName,
|
||||
@ -441,9 +423,9 @@ export default {
|
||||
// this.dialog = false;
|
||||
// return;
|
||||
// }
|
||||
// if (this.myBindingData.length <= 0) {
|
||||
// return alert('설비상세 리스트를 먼저 선택해주세요.');
|
||||
// }
|
||||
if (this.myBindingData.length <= 0) {
|
||||
return alert('설비상세 리스트를 먼저 선택해주세요.');
|
||||
}
|
||||
this.dialog = !val;
|
||||
},
|
||||
},
|
||||
@ -481,7 +463,7 @@ var eqpmBaseInfoPop = {
|
||||
// .v-dialog {
|
||||
// .v-card {
|
||||
// &__title {
|
||||
|
||||
|
||||
|
||||
// @if $theme ==dark {
|
||||
// background-color: #2d3355;
|
||||
|
@ -5,7 +5,7 @@
|
||||
<v-icon
|
||||
v-if="iconShow"
|
||||
small
|
||||
:class="['mr-1', required ? 'icon-orange' : 'icon-blue']"
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
>$icoBulletPoint</v-icon
|
||||
>
|
||||
{{ option.labelContent }}
|
||||
@ -36,7 +36,7 @@
|
||||
계산설명
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="10" class="mr-4 py-0" >
|
||||
<v-col :cols="11" class="pr-8 py-0" >
|
||||
<v-text-field append-icon="" class="v-input__custom" outlined
|
||||
:hide-details="true" v-model="searchWord" @keyup.enter="search"><template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
@ -45,7 +45,7 @@
|
||||
|
||||
</template></v-text-field>
|
||||
</v-col>
|
||||
<v-col cols="1" class="py-0">
|
||||
<v-col cols="1" class="py-0" style="display: flex; justify-content: flex-end;">
|
||||
<a-button icon="search" type="primary" @click="search()" class="search-button">조회</a-button>
|
||||
<!-- <v-btn :ripple="false" @click="initSearch()">
|
||||
초기화
|
||||
@ -63,10 +63,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<v-card-actions class="pa-5 d-flex align-center justify-end">
|
||||
<!-- <v-btn :ripple="false" @click="setUpdate($event)">확인</v-btn>
|
||||
<v-btn :ripple="false" @click="dialogOpenCloseEvent(dialog)">닫기</v-btn> -->
|
||||
<a-button :ripple="false" @click="setUpdate($event)" class="mr-2">확인</a-button>
|
||||
<a-button :ripple="false" type="primary" @click="dialogOpenCloseEvent(dialog)">닫기</a-button>
|
||||
<a-button :ripple="false" @click="dialogOpenCloseEvent(dialog)" class="mr-2">닫기</a-button>
|
||||
<a-button :ripple="false" type="primary" @click="setUpdate($event)" >확인</a-button>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -306,38 +304,22 @@ export default {
|
||||
},
|
||||
async getGridData() {
|
||||
this.loadGrid = false;
|
||||
// let res = await this.postApiReturn({
|
||||
// apiKey: 'selectEqpmCalcPop',
|
||||
// resKey: 'eqpmCalcPopData',
|
||||
// sendParam: {
|
||||
// calcDescLike: this.searchWord,
|
||||
// openMode: this.item.openMode != undefined ? this.item.openMode : this.openMode
|
||||
// },
|
||||
// });
|
||||
// if (this.myBindingData['calcProc'] != '' || this.myBindingData['calcProc'] != null || this.myBindingData['calcProc'] != undefined) {
|
||||
// let newRes = [];
|
||||
// newRes = res.filter(item => {
|
||||
// return item.calcProc != this.myBindingData['calcProc']
|
||||
// });
|
||||
// res = newRes;
|
||||
// }
|
||||
|
||||
const res = [
|
||||
{
|
||||
'calcProc': 'AVG_CNT2',
|
||||
'argCnt': '2',
|
||||
'calcDesc': '두개 변수에 대한 평균'
|
||||
|
||||
let res = await this.postApiReturn({
|
||||
apiKey: 'selectEqpmCalcPop',
|
||||
resKey: 'eqpmCalcPopData',
|
||||
sendParam: {
|
||||
calcDescLike: this.searchWord,
|
||||
openMode: this.item.openMode != undefined ? this.item.openMode : this.openMode
|
||||
},
|
||||
|
||||
{ 'calcProc': 'PROC001', argCnt: 2, 'calcDesc': '덧셈 연산' },
|
||||
{ 'calcProc': 'PROC002', argCnt: 1, 'calcDesc': '제곱 연산' },
|
||||
{ 'calcProc': 'PROC003', argCnt: 2, 'calcDesc': '곱셈 연산' },
|
||||
{ 'calcProc': 'PROC004', argCnt: 1, 'calcDesc': '루트 연산' },
|
||||
{ 'calcProc': 'PROC005', argCnt: 3, 'calcDesc': '최대값 계산' },
|
||||
{ 'calcProc': 'PROC006', argCnt: 3, 'calcDesc': '최소값 계산' },
|
||||
|
||||
]
|
||||
});
|
||||
if (this.myBindingData['calcProc'] != '' || this.myBindingData['calcProc'] != null || this.myBindingData['calcProc'] != undefined) {
|
||||
let newRes = [];
|
||||
newRes = res.filter(item => {
|
||||
return item.calcProc != this.myBindingData['calcProc']
|
||||
});
|
||||
res = newRes;
|
||||
}
|
||||
|
||||
this.setModalGridData({
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.grid_01,
|
||||
|
@ -286,8 +286,8 @@ export default {
|
||||
// Row selection config
|
||||
rowSelection: {
|
||||
onChange: (selectedRowKeys, selectedRows) => {
|
||||
console.log('Selected Row Keys:', selectedRowKeys);
|
||||
console.log('Selected Rows:', selectedRows);
|
||||
// console.log('Selected Row Keys:', selectedRowKeys);
|
||||
// console.log('Selected Rows:', selectedRows);
|
||||
},
|
||||
}
|
||||
};
|
||||
@ -332,7 +332,7 @@ export default {
|
||||
// this.getRowGridData();
|
||||
// },
|
||||
searchFab() {
|
||||
console.log('tttttttttttt')
|
||||
// console.log('tttttttttttt')
|
||||
// this.filteredData = this.data.filter(item => {
|
||||
// const matchGrp = this.eqpmGrpSelected ? item.group === this.eqpmGrpSelected : true;
|
||||
// const matchFab = this.localFabSelected ? item.fab === this.localFabSelected : true;
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center">
|
||||
<v-row class="search-box no-gutters" align="center">
|
||||
<v-col :cols="option.labelCols" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon v-if="item.iconShow" small
|
||||
@ -7,12 +7,13 @@
|
||||
{{ option.labelContent }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="option.textCols">
|
||||
<v-text-field readonly v-model="selectValue" append-icon="mdi-magnify"
|
||||
:class="['v-select__custom', customClass]"
|
||||
@click="dialogOpenCloseEvent(dialog)" outlined :hide-details="true"
|
||||
:required="item.required || false"></v-text-field>
|
||||
<!-- :disabled="item.disabled || false" -->
|
||||
<v-col :cols="option.textCols" class="py-0">
|
||||
<v-text-field readonly append-icon="" :class="['v-select__custom', customClass]" outlined :hide-details="true"
|
||||
v-model="selectValue" @keyup.enter="typeEnterKey" @click="dialogOpenCloseEvent(dialog)" style="padding: 0;"
|
||||
:required="item.required || false"><template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
</template></v-text-field>
|
||||
</v-col>
|
||||
|
||||
<v-dialog v-model="dialog" scrollable width="1000px">
|
||||
@ -21,10 +22,10 @@
|
||||
<span class="custom-title-4">{{ option.modalTitle }}</span>
|
||||
<v-icon @click="dialogOpenCloseEvent(dialog)">mdi-close</v-icon>
|
||||
</v-card-title>
|
||||
<v-row align="end" class="pa-5" no-gutters>
|
||||
<v-row align="end" class="px-5 pb-3" no-gutters>
|
||||
<v-col :cols="2.5" class="mr-2">
|
||||
<v-row>
|
||||
<v-col :cols="2">
|
||||
<v-col :cols="12" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<!-- <v-icon small
|
||||
:class="['mr-1', item.required ? 'icon-orange' : 'icon-blue']"
|
||||
@ -32,28 +33,28 @@
|
||||
검색
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="12">
|
||||
<v-text-field append-icon="mdi-magnify" class="v-input__custom" outlined :hide-details="true"
|
||||
v-model="searchWord" @keyup.enter="search"></v-text-field>
|
||||
<v-col :cols="11" class="py-0 pr-3">
|
||||
<v-text-field append-icon="mdi-magnify" class="v-input__custom" outlined
|
||||
:hide-details="true" v-model="searchWord" @keyup.enter="search"></v-text-field>
|
||||
</v-col>
|
||||
<a-button icon="search" :ripple="false" type="primary" @click="search()"
|
||||
class="search-button">조회</a-button>
|
||||
</v-row>
|
||||
</v-col>
|
||||
<a-button type="primary" :ripple="false" @click="search()">
|
||||
조회
|
||||
</a-button>
|
||||
</v-row>
|
||||
<!-- <div :style="'height: calc(65vh)'"> -->
|
||||
<div :style="'height: 600px'">
|
||||
<div :style="'height: 600px'" class="px-5">
|
||||
<!-- <div :style="{ height: 'calc(100% - 213px)' }"> -->
|
||||
<div ref="modalGridParent" class="h100 py-3">
|
||||
<!-- :is="loadGrid && dialog ? 'Grid' : null" -->
|
||||
<component :is="loadGrid && dialog ? 'Grid' : null" :gridName="grid_01"
|
||||
:dataPath="searchParam.modalData2.evtObjPop" :parentPrgmId="parentPrgmId" @getRowsData="getRowData"
|
||||
@dblClick="setUpdate($event)" />
|
||||
:dataPath="searchParam.modalData2.evtObjPop" :parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData" @dblClick="setUpdate($event)" />
|
||||
</div>
|
||||
</div>
|
||||
<v-card-actions class="pa-5 d-flex align-center justify-end">
|
||||
<a-button type="default" class="mr-2" :ripple="false" @click="dialogOpenCloseEvent(dialog)">닫기</a-button>
|
||||
<a-button type="default" class="mr-2" :ripple="false"
|
||||
@click="dialogOpenCloseEvent(dialog)">닫기</a-button>
|
||||
<a-button type="primary" class="mr-2" :ripple="false" @click="setUpdate('init')">초기화</a-button>
|
||||
<a-button type="primary" :ripple="false" @click="setUpdate($event)">확인</a-button>
|
||||
</v-card-actions>
|
||||
|
@ -126,7 +126,7 @@ export default {
|
||||
async chkDialog(val) {
|
||||
if (val) {
|
||||
// 열릴 때
|
||||
console.log('dsfafds');
|
||||
// console.log('dsfafds');
|
||||
await this.getData();
|
||||
// console.log("chkDialog: ", val);
|
||||
// if(this.searchParam.selecUserList.length > 0){
|
||||
|
@ -22,37 +22,29 @@
|
||||
outlined
|
||||
:hide-details="true"
|
||||
>
|
||||
<!-- Custom SVG icon -->
|
||||
<template v-slot:append>
|
||||
<!-- Custom SVG icon -->
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
<v-icon>$icoSearch</v-icon>
|
||||
</template>
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
|
||||
<v-dialog v-model="dialog" scrollable width="700px">
|
||||
<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>
|
||||
<v-btn
|
||||
icon
|
||||
tile
|
||||
:ripple="false"
|
||||
@click="dialogOpenCloseEvent(dialog)"
|
||||
>
|
||||
<v-icon>mdi-close</v-icon>
|
||||
</v-btn>
|
||||
<a-button icon="close" type="text" @click="dialogOpenCloseEvent(dialog)"></a-button>
|
||||
</v-card-title>
|
||||
<div class="pa-5">
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<v-col :cols="12">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon x-small color="primary" class="mr-1"
|
||||
>mdi-record-circle</v-icon
|
||||
>
|
||||
<!-- <v-icon x-small color="primary" class="mr-1">mdi-record-circle</v-icon> -->
|
||||
<v-icon small :class="['mr-1 icon-blue']">$icoBulletPoint</v-icon>
|
||||
검색
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="5">
|
||||
<v-col :cols="9">
|
||||
<v-text-field
|
||||
append-icon="mdi-magnify"
|
||||
class="v-input__custom"
|
||||
@ -63,21 +55,19 @@
|
||||
></v-text-field>
|
||||
</v-col>
|
||||
<v-spacer></v-spacer>
|
||||
<v-col cols="4" class="text-right">
|
||||
<v-btn :ripple="false" @click="search()">
|
||||
<v-col :cols="3" class="text-right">
|
||||
<a-button type="primary" @click="search()" icon="search">
|
||||
조회
|
||||
</v-btn>
|
||||
<v-btn :ripple="false" @click="initSearch()">
|
||||
</a-button>
|
||||
<a-button @click="initSearch()">
|
||||
초기화
|
||||
</v-btn>
|
||||
</a-button>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
<v-divider></v-divider>
|
||||
<!-- <div :style="'height: calc(65vh)'"> -->
|
||||
<div :style="'height: 429px;'">
|
||||
<!-- <div :style="{ height: 'calc(100% - 213px)' }"> -->
|
||||
<div ref="modalGridParent" class="h100 w100 py-3">
|
||||
<!-- <v-divider></v-divider> -->
|
||||
<div style="height: 429px;" class="py-3 px-5">
|
||||
<div ref="modalGridParent" class="h100 w100">
|
||||
<component
|
||||
:is="loadGrid && dialog ? 'Grid' : null"
|
||||
:gridName="grid_01"
|
||||
@ -88,11 +78,9 @@
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<v-card-actions class="pa-5 d-flex align-center justify-center">
|
||||
<v-btn :ripple="false" @click="setUpdate($event)">확인</v-btn>
|
||||
<v-btn :ripple="false" @click="dialogOpenCloseEvent(dialog)"
|
||||
>닫기</v-btn
|
||||
>
|
||||
<v-card-actions class="pa-5 d-flex align-center justify-end">
|
||||
<a-button class="mr-2" @click="dialogOpenCloseEvent(dialog)">닫기</a-button>
|
||||
<a-button type="primary" @click="setUpdate($event)">확인</a-button>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -336,7 +324,7 @@ export default {
|
||||
}))
|
||||
};
|
||||
|
||||
console.log(res);
|
||||
// console.log(res);
|
||||
|
||||
this.setModalGridData({
|
||||
modalKey: this.myModalKey,
|
||||
@ -395,7 +383,31 @@ var FtnPlcFormPop = {
|
||||
</script>
|
||||
|
||||
<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-dialog {
|
||||
overflow-y: hidden !important;
|
||||
}
|
||||
@ -418,26 +430,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>
|
||||
|
@ -294,10 +294,10 @@ export default {
|
||||
if (this.searchParam.energyCd < 0) {
|
||||
roiIdVal = null;
|
||||
} else {
|
||||
console.log(
|
||||
'this.searchParam.energyList[this.searchParam.energyCd]',
|
||||
this.searchParam.energyList[this.searchParam.energyCd],
|
||||
);
|
||||
// console.log(
|
||||
// 'this.searchParam.energyList[this.searchParam.energyCd]',
|
||||
// this.searchParam.energyList[this.searchParam.energyCd],
|
||||
// );
|
||||
roiIdVal = this.searchParam.energyList[this.searchParam.energyCd + 1]
|
||||
.cd;
|
||||
}
|
||||
|
@ -239,13 +239,13 @@ export default {
|
||||
this.selectedData.eccNm = '';
|
||||
|
||||
if (this.bindOption === null) {
|
||||
console.log('this.bindOption is null...');
|
||||
// console.log('this.bindOption is null...');
|
||||
this.setPageData({
|
||||
modalEccId: '',
|
||||
modalEccNm: '',
|
||||
});
|
||||
} else {
|
||||
console.log('this.bindOption is not null...');
|
||||
// console.log('this.bindOption is not null...');
|
||||
this.setPageData({
|
||||
[this.bindOption.eccId]: '',
|
||||
[this.bindOption.eccNm]: '',
|
||||
@ -296,12 +296,12 @@ export default {
|
||||
? localStorage.getItem(this.parentPrgmId + 'ModalEccNm')
|
||||
: '',
|
||||
});
|
||||
console.log(
|
||||
'localStorage.getItem(this.parentPrgmId + "ModalEccNm") : ',
|
||||
localStorage.getItem(this.parentPrgmId + 'ModalEccNm') != null
|
||||
? localStorage.getItem(this.parentPrgmId + 'ModalEccNm')
|
||||
: '',
|
||||
);
|
||||
// console.log(
|
||||
// 'localStorage.getItem(this.parentPrgmId + "ModalEccNm") : ',
|
||||
// localStorage.getItem(this.parentPrgmId + 'ModalEccNm') != null
|
||||
// ? localStorage.getItem(this.parentPrgmId + 'ModalEccNm')
|
||||
// : '',
|
||||
// );
|
||||
this.textFieldData =
|
||||
localStorage.getItem(this.parentPrgmId + 'ModalEccNm') != null
|
||||
? localStorage.getItem(this.parentPrgmId + 'ModalEccNm')
|
||||
|
@ -43,7 +43,10 @@
|
||||
</v-col>
|
||||
<v-col :cols="6" class="py-0 pl-2">
|
||||
<!-- <DatePicker v-model="strtDt" :parentPrgmId="parentPrgmId"/> -->
|
||||
<div class="startpicker-container2">
|
||||
<component :parentPrgmId="parentPrgmId" :is="'SelectBoxTime'" ref="SelectBox1"
|
||||
:propsValue="selectTimeValue1" :itemList="selectTimeValueList1" :minInterval="selectBoxTimeItemList.minInterval ? selectBoxTimeItemList.minInterval : 1
|
||||
" @update:propsValue="selectTimeValue1 = $event" />
|
||||
<!-- <div class="startpicker-container2">
|
||||
<v-text-field id="startpicker2" ref="startpicker2" v-model="strtDt"
|
||||
:class="'v-input__custom'" :hide-details="true" readonly outlined>
|
||||
<template #append>
|
||||
@ -53,7 +56,7 @@
|
||||
<div ref="startpicker-container2" id="startpicker-container2"></div>
|
||||
</template>
|
||||
</v-text-field>
|
||||
</div>
|
||||
</div> -->
|
||||
</v-col>
|
||||
<!-- <v-col :cols="2">
|
||||
<vue-numeric-input v-model="strtHh" :min="0" :max="23" controls-type="updown"
|
||||
@ -91,17 +94,9 @@
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="6" class="pl-2">
|
||||
<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>
|
||||
<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"
|
||||
@ -186,10 +181,11 @@
|
||||
</div>
|
||||
</template>
|
||||
<v-card-actions class="justify-end">
|
||||
<a-button :ripple="false" @click="btnAction('save')" class="mr-2">저장</a-button>
|
||||
<a-button :ripple="false" @click="btnAction('close')" class="mr-2">닫기</a-button>
|
||||
<a-button type="primary" :ripple="false" @click="btnAction('save')" class="mr-2">저장</a-button>
|
||||
<a-button v-show="popUpAction === 'update'" type="danger" ghost danger :ripple="false"
|
||||
@click="btnAction('delete')" class="mr-2">삭제</a-button>
|
||||
<a-button :ripple="false" type="primary" @click="btnAction('close')" class="mr-2">닫기</a-button>
|
||||
@click="btnAction('delete')">삭제</a-button>
|
||||
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -210,6 +206,7 @@ import DatePicker from '~/components/common/Datepicker';
|
||||
import mixinGlobal from '@/mixin/global.js';
|
||||
import Utility from '~/plugins/utility';
|
||||
import TuiDatepicker from 'tui-date-picker';
|
||||
import SelectBoxTime from "@/components/common/select/SelectBoxTime";
|
||||
|
||||
export default {
|
||||
mixins: [mixinGlobal],
|
||||
@ -237,6 +234,13 @@ export default {
|
||||
type: String,
|
||||
require: false,
|
||||
},
|
||||
selectBoxTimeItemList: {
|
||||
type: Object,
|
||||
require: false,
|
||||
default: () => {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
},
|
||||
components: {
|
||||
InputText,
|
||||
@ -250,6 +254,7 @@ export default {
|
||||
Utility,
|
||||
TuiDatepicker,
|
||||
VueNumericInput,
|
||||
SelectBoxTime,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -272,7 +277,23 @@ export default {
|
||||
planSeq: '',
|
||||
blocId: '',
|
||||
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: {
|
||||
@ -296,25 +317,29 @@ export default {
|
||||
}
|
||||
},
|
||||
strtDt(val) {
|
||||
console.log('strtDt : ', val);
|
||||
// console.log('strtDt : ', val);
|
||||
this.checkStrtAndEndDateTime('start');
|
||||
if (this.startDatepickerInstance3) {
|
||||
this.startDatepickerInstance3.setDate(new Date(this.endDt));
|
||||
}
|
||||
},
|
||||
endDt(val) {
|
||||
console.log('endDt : ', val);
|
||||
// console.log('endDt : ', val);
|
||||
this.checkStrtAndEndDateTime('end');
|
||||
if (this.startDatepickerInstance) {
|
||||
this.startDatepickerInstance.setDate(new Date(this.strtDt));
|
||||
}
|
||||
},
|
||||
strtHh(val) {
|
||||
|
||||
// const [hh, mm] = selectTimeValue1.split(':');
|
||||
// console.log(`Hours: ${hh}, Minutes: ${mm}`);
|
||||
|
||||
console.log('strtHh : ', val);
|
||||
this.checkStrtAndEndDateTime('start');
|
||||
},
|
||||
endHh(val) {
|
||||
console.log('endHh : ', val);
|
||||
// console.log('endHh : ', val);
|
||||
this.checkStrtAndEndDateTime('end');
|
||||
},
|
||||
strtMm(val) {
|
||||
@ -323,6 +348,12 @@ export default {
|
||||
endMm(val) {
|
||||
this.checkStrtAndEndDateTime('end');
|
||||
},
|
||||
selectTimeValue1(val) {
|
||||
this.setPageData({ selectTimeValue1: val });
|
||||
},
|
||||
selectTimeValue2(val) {
|
||||
this.setPageData({ selectTimeValue2: val });
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({
|
||||
@ -505,10 +536,8 @@ export default {
|
||||
let returnData = res[0];
|
||||
this.strtDt = Utility.setFormatDate(returnData.strtDt, 'YYYY-MM-DD');
|
||||
this.endDt = Utility.setFormatDate(returnData.endDt, 'YYYY-MM-DD');
|
||||
this.strtHh = returnData.strtHh;
|
||||
this.strtMm = returnData.strtMm;
|
||||
this.endHh = returnData.endHh;
|
||||
this.endMm = returnData.endMm;
|
||||
this.selectTimeValue1 = returnData.strtHh+' : '+ returnData.strtMm;
|
||||
this.selectTimeValue2 = returnData.endHh+' : '+ returnData.endMm;
|
||||
this.planTitle = returnData.planTitle;
|
||||
this.planCntn = returnData.planCntn;
|
||||
this.planColor = returnData.planColor;
|
||||
@ -525,10 +554,8 @@ export default {
|
||||
if (
|
||||
this.strtDt === '' ||
|
||||
this.endDt === '' ||
|
||||
this.strtHh === '' ||
|
||||
this.strtMm === '' ||
|
||||
this.endHh === '' ||
|
||||
this.endMm === '' ||
|
||||
this.selectTimeValue1 === '' ||
|
||||
this.selectTimeValue2 === '' ||
|
||||
this.planTitle === '' ||
|
||||
this.planCntn === '' ||
|
||||
this.planColor === ''
|
||||
@ -542,10 +569,8 @@ export default {
|
||||
if (
|
||||
this.strtDt == '' ||
|
||||
this.endDt == '' ||
|
||||
this.strtHh == '' ||
|
||||
this.strtMm == '' ||
|
||||
this.endHh == '' ||
|
||||
this.endMm == '' ||
|
||||
this.selectTimeValue1 === '' ||
|
||||
this.selectTimeValue2 === '' ||
|
||||
this.planTitle == '' ||
|
||||
this.planCntn == '' ||
|
||||
this.planColor == ''
|
||||
@ -565,13 +590,17 @@ export default {
|
||||
//console.log(this);
|
||||
},
|
||||
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 = {
|
||||
strtDt: this.strtDt,
|
||||
endDt: this.endDt,
|
||||
strtHh: this.strtHh.toString(),
|
||||
strtMm: this.strtMm.toString(),
|
||||
endHh: this.endHh.toString(),
|
||||
endMm: this.endMm.toString(),
|
||||
strtHh: strtHh.trim().toString(),
|
||||
strtMm: strtMm.trim().toString(),
|
||||
endHh: endHh.trim().toString(),
|
||||
endMm: endMm.trim().toString(),
|
||||
blocId: this.blocId,
|
||||
planTitle: this.planTitle,
|
||||
planCntn: this.planCntn,
|
||||
@ -592,13 +621,16 @@ export default {
|
||||
});
|
||||
},
|
||||
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 = {
|
||||
strtDt: this.strtDt.substr(0, 10),
|
||||
endDt: this.endDt.substr(0, 10),
|
||||
strtHh: this.strtHh.toString(),
|
||||
strtMm: this.strtMm.toString(),
|
||||
endHh: this.endHh.toString(),
|
||||
endMm: this.endMm.toString(),
|
||||
strtHh: strtHh.trim().toString(),
|
||||
strtMm: strtMm.trim().toString(),
|
||||
endHh: endHh.trim().toString(),
|
||||
endMm: endMm.trim().toString(),
|
||||
planTitle: this.planTitle,
|
||||
planCntn: this.planCntn,
|
||||
planColor: this.planColor,
|
||||
|
@ -253,7 +253,7 @@ export default {
|
||||
readObjid: this.searchParam.energyCd,
|
||||
},
|
||||
});
|
||||
console.log('getTreeData : ', res);
|
||||
// console.log('getTreeData : ', res);
|
||||
// this.treeData = res;
|
||||
// const ROOT = res[0].plcCd;
|
||||
const setTreeData = await this.setTree({
|
||||
@ -327,7 +327,7 @@ export default {
|
||||
// 공정/설비 트리 row 클릭이벤트
|
||||
async getRowData(data) {
|
||||
// console.log("getRowData 시작...");
|
||||
console.log('data', data);
|
||||
// console.log('data', data);
|
||||
this.activeRowData = data;
|
||||
// if(data.enableFg == 1){
|
||||
// this.activeRowData = data;
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<v-row class="search-box" align="center" >
|
||||
<v-row class="search-box" align="center">
|
||||
<!-- <v-col v-if="label" cols="2"> -->
|
||||
<v-col v-if="item.label" :cols="item.labelCols" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
@ -37,12 +37,11 @@
|
||||
<v-row align="center">
|
||||
<v-col v-if="label" cols="12" class="py-0">
|
||||
<label for="" class="search-box-label">
|
||||
<v-icon small
|
||||
:class="['mr-1', 'icon-blue']">$icoBulletPoint</v-icon>
|
||||
<v-icon small :class="['mr-1', 'icon-blue']">$icoBulletPoint</v-icon>
|
||||
{{ item.label }}
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? 6 : ''" class="py-0">
|
||||
<v-col :cols="label ? 8 : ''" class="py-0">
|
||||
<!-- :value="textfield" -->
|
||||
<v-text-field append-icon="" class="v-input__custom" outlined :hide-details="true"
|
||||
v-model="searchWord" @keyup.enter="typeEnterKey"><template v-slot:append>
|
||||
@ -52,13 +51,10 @@
|
||||
|
||||
</template></v-text-field>
|
||||
</v-col>
|
||||
<v-spacer></v-spacer>
|
||||
<v-col cols="3" class="text-right">
|
||||
<v-btn :ripple="false" icon tile @click="btnTreeExpand()">
|
||||
<!-- {{ treeExpand }} -->
|
||||
<v-icon size="30"
|
||||
v-text="treeExpandAll ? 'mdi-chevron-up' : 'mdi-chevron-down'"></v-icon>
|
||||
</v-btn>
|
||||
<!-- <v-spacer></v-spacer> -->
|
||||
<v-col cols="2" class="text-right">
|
||||
<a-button icon="search" type="primary" @click="search()" class="search-button">조회</a-button>
|
||||
|
||||
<!-- <v-btn color="primary" dark>펼치기</v-btn> -->
|
||||
<!-- <v-btn color="primary" dark>접기</v-btn> -->
|
||||
<!-- <v-btn :ripple="false">초기화</v-btn> -->
|
||||
@ -66,8 +62,12 @@
|
||||
<v-btn v-if="!searchParam.isMulti" :ripple="false" @click="search()">검색</v-btn> -->
|
||||
<!-- as-is 롤 봐도 초기화가 하는 기능을 모르겠음.. -->
|
||||
</v-col>
|
||||
<v-col cols="2" class="text-right"><a-button class="expand-btn" :ripple="false" @click="btnTreeExpand()">
|
||||
<v-icon small>$icoExpandAlt</v-icon>
|
||||
Expand All
|
||||
</a-button></v-col>
|
||||
</v-row>
|
||||
|
||||
|
||||
<!-- <v-btn color="primary" dark @click="btnTreeExpand()">{{
|
||||
treeExpand
|
||||
}}</v-btn> -->
|
||||
@ -78,7 +78,7 @@
|
||||
</div>
|
||||
|
||||
<v-card-text>
|
||||
<div ref="treeGridParent" style="height: 500px">
|
||||
<div ref="treeGridParent" style="height: 450px">
|
||||
<component :ref="'treeGrid' + parentPrgmId" :is="loadGrid && dialog ? 'Grid' : null"
|
||||
:gridName="gridNameTree" :dataPath="searchParam.modalData.selectReadObjListTree"
|
||||
:parentPrgmId="parentPrgmId" :bindingData="bindingData" @getRowsData="getRowData"
|
||||
@ -89,10 +89,10 @@
|
||||
:tree-data="ftnPlcListTreeData"
|
||||
/> -->
|
||||
</v-card-text>
|
||||
<v-divider></v-divider>
|
||||
|
||||
<v-card-actions class="px-6 py-4 d-flex align-center justify-end">
|
||||
<a-button :ripple="false" @click="setUpdate()" class="mr-2">확인</a-button>
|
||||
<a-button :ripple="false" type="primary" @click="dialog = false" class="mr-2">닫기</a-button>
|
||||
<a-button :ripple="false" @click="dialog = false" class="mr-2">닫기</a-button>
|
||||
<a-button :ripple="false" type="primary" @click="setUpdate($event)">확인</a-button>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
@ -155,7 +155,7 @@ export default {
|
||||
|
||||
myModalKey: 'selectReadObjListTree',
|
||||
gridNameTree: 'treeGrid',
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
|
||||
dialog: false,
|
||||
treeData: [], // 리턴받은 원본 트리 데이터
|
||||
@ -268,7 +268,7 @@ export default {
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
width: 20,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
@ -278,10 +278,10 @@ export default {
|
||||
{
|
||||
header: '검침개소명',
|
||||
name: 'readPlcNm',
|
||||
width: 370,
|
||||
width: 500,
|
||||
align: 'left',
|
||||
},
|
||||
{ header: '검침개소', name: 'name', align: 'center' },
|
||||
{ header: '검침개소', name: 'name', align: 'left', width: 200 },
|
||||
],
|
||||
});
|
||||
},
|
||||
@ -289,73 +289,34 @@ export default {
|
||||
async getTreeData() {
|
||||
this.loadGrid = false;
|
||||
|
||||
// const res = await this.postApiReturn({
|
||||
// apiKey: 'selectReadPlcBaseInfo',
|
||||
// resKey: 'readPlcBaseInfoData',
|
||||
// sendParam: {
|
||||
// blocId:
|
||||
// this.searchParam.blocMstrList.length > 0
|
||||
// ? this.searchParam.blocMstrList[this.searchParam.blocId].blocId
|
||||
// : this.searchParam.blocId, //"BL0001",
|
||||
// // readObjId: this.searchParam.readObj, // "MTT00001" // 전력 코드 고정
|
||||
// readObjId: this.searchParam.searchReadObj, // "MTT00001" // 전력 코드 고정
|
||||
const res = await this.postApiReturn({
|
||||
apiKey: 'selectReadPlcBaseInfo',
|
||||
resKey: 'readPlcBaseInfoData',
|
||||
sendParam: {
|
||||
blocId:
|
||||
this.searchParam.blocMstrList.length > 0
|
||||
? this.searchParam.blocMstrList[this.searchParam.blocId].blocId
|
||||
: this.searchParam.blocId, //"BL0001",
|
||||
// readObjId: this.searchParam.readObj, // "MTT00001" // 전력 코드 고정
|
||||
readObjId: this.searchParam.searchReadObj, // "MTT00001" // 전력 코드 고정
|
||||
|
||||
// useFg: '1',
|
||||
// readPlcNmLike: this.searchWord,
|
||||
// },
|
||||
// });
|
||||
|
||||
const treeData = [
|
||||
{
|
||||
readPlcNm: '서울 본사',
|
||||
name: '본사',
|
||||
_children: [
|
||||
{
|
||||
readPlcNm: '서울 본사 - 1층',
|
||||
name: '1층',
|
||||
},
|
||||
{
|
||||
readPlcNm: '서울 본사 - 2층',
|
||||
name: '2층',
|
||||
},
|
||||
],
|
||||
useFg: '1',
|
||||
readPlcNmLike: this.searchWord,
|
||||
},
|
||||
{
|
||||
readPlcNm: '부산 지사',
|
||||
name: '지사',
|
||||
_children: [
|
||||
{
|
||||
readPlcNm: '부산 지사 - A동',
|
||||
name: 'A동',
|
||||
_children: [
|
||||
{
|
||||
readPlcNm: '부산 지사 - A동 1층',
|
||||
name: '1층',
|
||||
},
|
||||
{
|
||||
readPlcNm: '부산 지사 - A동 2층',
|
||||
name: '2층',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
readPlcNm: '부산 지사 - B동',
|
||||
name: 'B동',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
readPlcNm: '대전 창고',
|
||||
name: '창고',
|
||||
},
|
||||
];
|
||||
});
|
||||
|
||||
|
||||
// // console.log("treeData", res)
|
||||
// console.log("treeData", res)
|
||||
let myOptionsTree = {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
treeColumnOptions: {
|
||||
name: 'readPlcNm',
|
||||
},
|
||||
header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 'auto',
|
||||
};
|
||||
if (this.searchParam.isMulti) {
|
||||
myOptionsTree['rowHeaders'] = [{ type: 'checkbox' }];
|
||||
@ -373,26 +334,26 @@ export default {
|
||||
|
||||
// this.treeData = res;
|
||||
// const ROOT = res[0].plcCd;
|
||||
// const setTreeData = await this.setTree({
|
||||
// gridKey: this.gridNameTree,
|
||||
// treeKey: 'READ_PLC_ID',
|
||||
// value: res.map(item => ({
|
||||
// ...item,
|
||||
// rowStat: null,
|
||||
// readPlcId: item.readPlcId,
|
||||
// readPlcIdNm: item.readPlcId,
|
||||
// upReadPlcId:
|
||||
// item.upReadPlcId == null || item.upReadPlcId == ''
|
||||
// ? ''
|
||||
// : item.upReadPlcId,
|
||||
// upReadPlcNm:
|
||||
// item.upReadPlcNm == null || item.upReadPlcNm == ''
|
||||
// ? ''
|
||||
// : item.upReadPlcNm,
|
||||
// blocId: item.blocId,
|
||||
// useFg: item.useFg === '1' ? true : false,
|
||||
// })),
|
||||
// });
|
||||
const setTreeData = await this.setTree({
|
||||
gridKey: this.gridNameTree,
|
||||
treeKey: 'READ_PLC_ID',
|
||||
value: res.map(item => ({
|
||||
...item,
|
||||
rowStat: null,
|
||||
readPlcId: item.readPlcId,
|
||||
readPlcIdNm: item.readPlcId,
|
||||
upReadPlcId:
|
||||
item.upReadPlcId == null || item.upReadPlcId == ''
|
||||
? ''
|
||||
: item.upReadPlcId,
|
||||
upReadPlcNm:
|
||||
item.upReadPlcNm == null || item.upReadPlcNm == ''
|
||||
? ''
|
||||
: item.upReadPlcNm,
|
||||
blocId: item.blocId,
|
||||
useFg: item.useFg === '1' ? true : false,
|
||||
})),
|
||||
});
|
||||
// this.treeData = setTreeData;
|
||||
|
||||
|
||||
@ -400,7 +361,7 @@ export default {
|
||||
modalKey: this.myModalKey,
|
||||
gridKey: this.gridNameTree,
|
||||
modalDataKey: this.modalDataKey,
|
||||
value: treeData,
|
||||
value: setTreeData.ROOT || [],
|
||||
});
|
||||
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>
|
||||
|
@ -7,12 +7,10 @@
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="label ? textCols : ''">
|
||||
<v-select v-model="selectValue" :items="searchParam[parentPrgmId].blocMstrList"
|
||||
item-text="blocNm" item-value="idx" append-icon="" class="v-select__custom" outlined :hide-details="true"
|
||||
:class="['v-select__custom', customClass]">
|
||||
<template v-slot:append>
|
||||
<v-icon>$icoChevronDown</v-icon>
|
||||
</template>
|
||||
<v-select v-model="selectValue" :items="searchParam[parentPrgmId].blocMstrList"
|
||||
item-text="blocNm" item-value="idx" append-icon="" outlined
|
||||
:hide-details="true" :class="['v-select__custom', customClass]">
|
||||
<template v-slot:append><v-icon>$icoChevronDown</v-icon></template>
|
||||
</v-select>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
@ -22,11 +22,11 @@
|
||||
outlined
|
||||
:menu-props="{ auto: true, offsetY: true }"
|
||||
:hide-details="true"
|
||||
:class="'v-select__custom select-large'"
|
||||
:class="'v-select__custom'"
|
||||
:disabled="disabled"
|
||||
:readonly="readonly"
|
||||
@click="setDatepickerHide"
|
||||
style="width: 170px; border-radius: 6px !important"
|
||||
style="min-width: 170px;"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<a-icon
|
||||
|
@ -70,7 +70,7 @@ export default {
|
||||
return this.searchParam[this.parentPrgmId][this.enrgCd];
|
||||
},
|
||||
set(value) {
|
||||
console.log('value : ', value);
|
||||
// console.log('value : ', value);
|
||||
return this.setPageData({ [this.enrgCd]: value });
|
||||
},
|
||||
},
|
||||
|
@ -270,8 +270,8 @@ export default {
|
||||
filteredData: [],
|
||||
rowSelection: {
|
||||
onChange: (selectedRowKeys, selectedRows) => {
|
||||
console.log('Selected Row Keys:', selectedRowKeys);
|
||||
console.log('Selected Rows:', selectedRows);
|
||||
// console.log('Selected Row Keys:', selectedRowKeys);
|
||||
// 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>
|
||||
<div class="pb-5 h100">
|
||||
<div class="d-flex align-center justify-space-between">
|
||||
<span class="text-h6">공통그룹코드</span>
|
||||
<span class="grid-title">공통그룹코드</span>
|
||||
<div>
|
||||
<Buttons
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@ -126,7 +126,7 @@ export default {
|
||||
{
|
||||
header: '사용여부',
|
||||
name: 'useFg',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
const newValue = _this.pageData.useFgList.filter(
|
||||
item => item.commCd == value,
|
||||
|
@ -213,7 +213,7 @@ export default {
|
||||
let dataArr = [];
|
||||
switch (action) {
|
||||
case 'add':
|
||||
console.log('add this.pageData : '); // , this.pageData);
|
||||
// console.log('add this.pageData : '); // , this.pageData);
|
||||
const defaultRow = {
|
||||
dataSetId: this.pageData.dataSetId,
|
||||
dataSetNm: this.pageData.dataSetNm,
|
||||
@ -296,7 +296,7 @@ export default {
|
||||
comId: this.selectedComId,
|
||||
dataSetId: this.selectedDataSetId,
|
||||
};
|
||||
console.log('data : ', data);
|
||||
// console.log('data : ', data);
|
||||
this.$emit('jamoviClickEvent', 'view1', data);
|
||||
},
|
||||
},
|
||||
|
@ -20,7 +20,6 @@
|
||||
:editorGrid="true"
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
@getRowsData="getRowData"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -54,22 +53,10 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
gridName: 'rowDetailGrid',
|
||||
rowKey: null,
|
||||
edtingFinishFlag: 'Y',
|
||||
dataPathMock: {
|
||||
"rowDetailGrid": {
|
||||
column: [
|
||||
{ header: '추가 정보', name: 'readObjId', align: 'left' },
|
||||
{ header: 'Data 구분', name: 'readObjNm', align: 'left' },
|
||||
{ header: '추가 정보 값', name: 'readObjKind', align: 'left' },
|
||||
],
|
||||
data: dataPathDataExample,
|
||||
defaultRow: dataPathDataExample,
|
||||
option: {}
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -444,22 +431,4 @@ export default {
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const dataPathDataExample = [
|
||||
{
|
||||
readObjId: 'OBJ001',
|
||||
readObjNm: '서울 본사',
|
||||
readObjKind: 'TYPE01',
|
||||
},
|
||||
{
|
||||
readObjId: 'OBJ002',
|
||||
readObjNm: '부산 지사',
|
||||
readObjKind: 'TYPE02',
|
||||
},
|
||||
{
|
||||
readObjId: 'OBJ003',
|
||||
readObjNm: '대전 공장',
|
||||
readObjKind: 'TYPE03',
|
||||
}
|
||||
]
|
||||
</script>
|
||||
|
@ -19,7 +19,6 @@
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
@ -60,24 +59,11 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
gridName: 'rowEccIaoGrid',
|
||||
inputList_emMapDiv: [],
|
||||
inputList_cmInOut: [],
|
||||
detailList: myDetail,
|
||||
dataPathMock: {
|
||||
"rowEccIaoGrid": {
|
||||
column: [
|
||||
{ header: '검침 대상 ID', name: 'readObjId', align: 'left' },
|
||||
{ header: '검침 대상 명', name: 'readObjNm', align: 'left' },
|
||||
{ header: '검침 대상 유형', name: 'readObjKind', align: 'left' },
|
||||
{ header: '그룹', name: 'grpCd', align: 'left' },
|
||||
],
|
||||
data: dataPathDataExample,
|
||||
defaultRow: dataPathDataExample,
|
||||
option: {}
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -516,12 +502,4 @@ const myDetail = [
|
||||
iconShow: true,
|
||||
},
|
||||
];
|
||||
const dataPathDataExample = [
|
||||
{
|
||||
readObjId: 'OBJ001',
|
||||
readObjNm: '서울 본사',
|
||||
readObjKind: 'TYPE01',
|
||||
grpCd: 'GRP01',
|
||||
},
|
||||
]
|
||||
</script>
|
||||
|
@ -1,10 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<div
|
||||
class="d-flex justify-space-between align-center"
|
||||
style="height: 80px;"
|
||||
>
|
||||
<span class="txt custom-title-4-new">설비 추가 정보</span>
|
||||
<div class="d-flex justify-space-between align-center my-5" >
|
||||
<span class="txt custom-subtitle-tab">설비 추가 정보</span>
|
||||
<Buttons
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:bindingData="gridName"
|
||||
@ -20,7 +17,6 @@
|
||||
:editorGrid="true"
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
@getRowsData="getRowData"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -52,7 +48,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
gridName: 'rowDetailGrid',
|
||||
rowKey: null,
|
||||
edtingFinishFlag: 'Y',
|
||||
@ -343,7 +339,9 @@ export default {
|
||||
value: myColumns,
|
||||
});
|
||||
|
||||
this.loadGrid = true;
|
||||
this.$nextTick(() => {
|
||||
this.loadGrid = true;
|
||||
});
|
||||
},
|
||||
async btnActions(action) {
|
||||
let dataArr = [];
|
||||
|
@ -1,12 +1,12 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="d-flex justify-space-between align-center" style="height: 80px;">
|
||||
<span class="txt custom-title-4-new">설비 상수 정보</span>
|
||||
<div class="d-flex justify-space-between align-center my-5" >
|
||||
<span class="txt custom-subtitle-tab">설비 상수 정보</span>
|
||||
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
||||
</div>
|
||||
<div ref="gridParent" style="min-height: calc(100vh - 800px);">
|
||||
<Grid :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData" :innerTabGridInfo="innerTabGridInfo" :dataPath="dataPathMock" />
|
||||
@getRowsData="getRowData" :innerTabGridInfo="innerTabGridInfo" />
|
||||
</div>
|
||||
<div style="min-height: calc(100vh - 900px);" class="mt-4">
|
||||
<component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName" :detailList="detailList"
|
||||
@ -41,7 +41,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
gridName: 'rowEqpmConstGrid',
|
||||
detailList: myEqpmConstDetail,
|
||||
|
||||
@ -232,7 +232,9 @@ export default {
|
||||
value: myColumns,
|
||||
});
|
||||
|
||||
this.loadGrid = true;
|
||||
this.$nextTick(() => {
|
||||
this.loadGrid = true;
|
||||
});
|
||||
},
|
||||
async getRowData(data, gridName) {
|
||||
if (data.rowStat === 'I') {
|
||||
@ -289,8 +291,8 @@ export default {
|
||||
|
||||
dataArr.map(item => {
|
||||
for (var key of Object.keys(item)) {
|
||||
console.log('key : ', key);
|
||||
console.log('item[key] : ', item[key]);
|
||||
// console.log('key : ', key);
|
||||
// console.log('item[key] : ', item[key]);
|
||||
if (!item[key] && requiredKeyList.includes(key)) {
|
||||
validCheck = false;
|
||||
}
|
||||
|
@ -1,28 +1,24 @@
|
||||
<template>
|
||||
<div>
|
||||
<div
|
||||
class="d-flex justify-space-between align-center"
|
||||
style="height: 80px;"
|
||||
>
|
||||
<span class="txt custom-title-4-new">설비 입출력 정보</span>
|
||||
<div class="d-flex justify-space-between align-center my-5" >
|
||||
<span class="txt custom-subtitle-tab">설비 입출력 정보</span>
|
||||
<Buttons
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:bindingData="gridName"
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
</div>
|
||||
<div ref="gridParent" style="min-height: calc(100vh - 800px);" >
|
||||
<!-- :is="loadGrid ? 'Grid' : null" -->
|
||||
<div ref="gridParent" style="height: calc(100vh - 800px);">
|
||||
<Grid
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
<div style="min-height: calc(100vh - 900px);" class="mt-4">
|
||||
<div style="min-height: calc(100vh - 900px);">
|
||||
<component
|
||||
:is="'Form'"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@ -60,28 +56,12 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
gridName: 'rowEqpmIaoGrid',
|
||||
detailList: myEqpmIaoDetail,
|
||||
|
||||
inputList_emMapDiv: [],
|
||||
inputList_cmInOut: [],
|
||||
dataPathMock: {
|
||||
'rowEqpmIaoGrid' : {
|
||||
column: [
|
||||
{ header: '대상항목', name: 'id', headerAlign: 'left' },
|
||||
{ header: '에너지원 명', name: 'lable', headerAlign: 'left' },
|
||||
{ header: '대상 유형', name: 'type', headerAlign: 'left' },
|
||||
{ header: '물리량', name: 'note', headerAlign: 'left' },
|
||||
{ header: '계산여부', name: 'field1', headerAlign: 'left' },
|
||||
{ header: '분배율', name: 'field2', headerAlign: 'left' }
|
||||
],
|
||||
data: dataPathDataExample,
|
||||
defaultRow: dataPathDataExample,
|
||||
option: {}
|
||||
}
|
||||
},
|
||||
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -128,18 +108,18 @@ export default {
|
||||
},
|
||||
watch: {
|
||||
selectedObjId(val) {
|
||||
console.log('selectedObjId : ', val);
|
||||
// console.log('selectedObjId : ', val);
|
||||
if (val === 'TAG') {
|
||||
this.detailList[2].class = 'py-2 d-none';
|
||||
this.detailList[3].class = 'py-2 d-none';
|
||||
this.detailList[4].class = 'py-2';
|
||||
this.detailList[5].class = 'py-2';
|
||||
this.detailList[2].class = 'py-3 d-none';
|
||||
this.detailList[3].class = 'py-3 pl-4 pt-1 d-none';
|
||||
this.detailList[4].class = 'py-3';
|
||||
this.detailList[5].class = 'py-3';
|
||||
} else {
|
||||
// }else if(val==="READ_PLC"){
|
||||
this.detailList[5].class = 'py-2 d-none';
|
||||
this.detailList[4].class = 'py-2 d-none';
|
||||
this.detailList[3].class = 'py-2';
|
||||
this.detailList[2].class = 'py-2';
|
||||
this.detailList[5].class = 'py-3 d-none';
|
||||
this.detailList[4].class = 'py-3 d-none';
|
||||
this.detailList[3].class = 'py-3 pl-4 pt-1';
|
||||
this.detailList[2].class = 'py-3';
|
||||
}
|
||||
},
|
||||
selectedCalcFg(val) {
|
||||
@ -172,7 +152,7 @@ export default {
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
// this.init();
|
||||
this.init();
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({
|
||||
@ -355,7 +335,7 @@ export default {
|
||||
}
|
||||
|
||||
if (dataArr.length > 0) {
|
||||
console.log('dataArr : ', dataArr);
|
||||
// console.log('dataArr : ', dataArr);
|
||||
|
||||
var requiredKeyList = this.detailList
|
||||
.filter(item => {
|
||||
@ -416,6 +396,7 @@ export default {
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
function checkDuplicate(data, targetKey) {
|
||||
var duplicateFlag = false;
|
||||
var set = new Set();
|
||||
@ -486,7 +467,7 @@ const myEqpmIaoDetail = [
|
||||
},
|
||||
{
|
||||
type: 'EvtObjPop',
|
||||
labelContent: '대상 항목 111',
|
||||
labelContent: '대상 항목',
|
||||
valueNm: 'objId',
|
||||
valueNm2: 'objNm',
|
||||
bindNm: 'objNm',
|
||||
@ -501,7 +482,7 @@ const myEqpmIaoDetail = [
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
cols: 5,
|
||||
cols: 6,
|
||||
class: 'py-3 d-none',
|
||||
valueNm: 'objNm',
|
||||
readonly: true,
|
||||
@ -614,13 +595,4 @@ const myEqpmIaoDetail = [
|
||||
iconShow: true
|
||||
},
|
||||
];
|
||||
|
||||
import { getPathDataExample } from '@/const/const'
|
||||
const dataPathDataExample = getPathDataExample({
|
||||
id: 'INCHEON.HVAC.EQP_HT_CH001.UT_CH101.CHI_AMP_1A_PV',
|
||||
lable: 'INCHEON 고온 냉동기 101호기 - 호로1',
|
||||
type: '사용', note: '-',
|
||||
field1: '1111',
|
||||
field2: '2222',
|
||||
});
|
||||
</script>
|
||||
|
@ -271,63 +271,6 @@ export default {
|
||||
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;
|
||||
},
|
||||
async btnActions(action) {
|
||||
|
@ -4,7 +4,7 @@
|
||||
class="d-flex justify-space-between align-center"
|
||||
style="height: 80px;"
|
||||
>
|
||||
<span class="txt">검침 대상 추가 정보</span>
|
||||
<span class="txt custom-subtitle-tab">검침 대상 추가 정보</span>
|
||||
<Buttons
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:bindingData="gridName"
|
||||
@ -20,8 +20,6 @@
|
||||
:editorGrid="true"
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
@getRowsData="getRowData"
|
||||
:selectedRowDataWatchFlag="true"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -55,23 +53,10 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
gridName: 'rowDetailGrid',
|
||||
rowKey: null,
|
||||
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: {
|
||||
@ -276,7 +261,7 @@ export default {
|
||||
{ header: '검침 대상 ID', name: 'readObjId', hidden: true },
|
||||
{
|
||||
header: '추가 정보',
|
||||
name: 'addInfoId',
|
||||
name: 'addInfoId',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
@ -461,25 +446,4 @@ export default {
|
||||
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>
|
||||
|
@ -1,26 +1,12 @@
|
||||
<template>
|
||||
<div>
|
||||
<div
|
||||
class="d-flex justify-space-between"
|
||||
|
||||
>
|
||||
<div class="d-flex justify-space-between">
|
||||
<v-card-title class="px-0 pt-0 custom-title-4">검침개소 추가 정보</v-card-title>
|
||||
<Buttons
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:bindingData="gridName"
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
||||
</div>
|
||||
<div ref="gridParent">
|
||||
<Grid
|
||||
:ref="gridName"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:editorGrid="true"
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
@getRowsData="getRowData"
|
||||
:dataPath="addInfoTabData"
|
||||
/>
|
||||
<div ref="gridParent" style="height: calc(100vh - 520px);">
|
||||
<Grid :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="parentPrgmId"
|
||||
:editorGrid="true" :innerTabGridInfo="innerTabGridInfo" @getRowsData="getRowData" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -53,65 +39,65 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
gridName: 'rowDetailGrid',
|
||||
rowKey: null,
|
||||
edtingFinishFlag: 'Y',
|
||||
addInfoTabData: {
|
||||
"rowDetailGrid": {
|
||||
data: [
|
||||
// addInfoTabData: {
|
||||
// "rowDetailGrid": {
|
||||
// data: [
|
||||
|
||||
|
||||
|
||||
{
|
||||
readPlcNm: '서울 본사',
|
||||
plcKind: '전기',
|
||||
useFg: '1',
|
||||
},
|
||||
// {
|
||||
// readPlcNm: '서울 본사',
|
||||
// plcKind: '전기',
|
||||
// useFg: '1',
|
||||
// },
|
||||
|
||||
|
||||
],
|
||||
column: [
|
||||
// { header: '회사 ID', name: 'comId', hidden: true },
|
||||
{
|
||||
header: '검침개소명',
|
||||
name: 'readPlcNm',
|
||||
align: 'left',
|
||||
minWidth: 400,
|
||||
},
|
||||
{
|
||||
header: '개소 종류',
|
||||
name: 'plcKind',
|
||||
minWidth: 100,
|
||||
align: 'center',
|
||||
// formatter({ value }) {
|
||||
// let retVal = '';
|
||||
// const newValue = _this.pageData.plcKindList.filter(
|
||||
// item => item.commCd == value,
|
||||
// );
|
||||
// if (newValue.length > 0) {
|
||||
// retVal = newValue[0].commCdNm;
|
||||
// }
|
||||
// return retVal;
|
||||
// },
|
||||
},
|
||||
{
|
||||
header: '사용 여부',
|
||||
name: 'useFg',
|
||||
minWidth: 100,
|
||||
align: 'center',
|
||||
// formatter({ value }) {
|
||||
// value = value === true ? '1' : '0';
|
||||
// const newValue = _this.pageData.useFgList.filter(
|
||||
// item => item.commCd == value,
|
||||
// );
|
||||
// return newValue[0].commCdNm;
|
||||
// },
|
||||
},
|
||||
]
|
||||
// ],
|
||||
// column: [
|
||||
// // { header: '회사 ID', name: 'comId', hidden: true },
|
||||
// {
|
||||
// header: '검침개소명',
|
||||
// name: 'readPlcNm',
|
||||
// align: 'left',
|
||||
// minWidth: 400,
|
||||
// },
|
||||
// {
|
||||
// header: '개소 종류',
|
||||
// name: 'plcKind',
|
||||
// minWidth: 100,
|
||||
// align: 'center',
|
||||
// // formatter({ value }) {
|
||||
// // let retVal = '';
|
||||
// // const newValue = _this.pageData.plcKindList.filter(
|
||||
// // item => item.commCd == value,
|
||||
// // );
|
||||
// // if (newValue.length > 0) {
|
||||
// // retVal = newValue[0].commCdNm;
|
||||
// // }
|
||||
// // return retVal;
|
||||
// // },
|
||||
// },
|
||||
// {
|
||||
// header: '사용 여부',
|
||||
// name: 'useFg',
|
||||
// minWidth: 100,
|
||||
// align: 'center',
|
||||
// // formatter({ value }) {
|
||||
// // value = value === true ? '1' : '0';
|
||||
// // const newValue = _this.pageData.useFgList.filter(
|
||||
// // item => item.commCd == value,
|
||||
// // );
|
||||
// // return newValue[0].commCdNm;
|
||||
// // },
|
||||
// },
|
||||
// ]
|
||||
|
||||
}
|
||||
}
|
||||
// }
|
||||
// }
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -166,9 +152,9 @@ export default {
|
||||
bodyHeight: gridHeight,
|
||||
minBodyHeight: gridHeight,
|
||||
header: {
|
||||
height: 28,
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 29,
|
||||
rowHeight: 37,
|
||||
minRowHeight: 29,
|
||||
selectionUnit: 'row',
|
||||
editingEvent: 'click',
|
||||
@ -178,128 +164,129 @@ export default {
|
||||
value: myOptions,
|
||||
});
|
||||
|
||||
// const _this = this;
|
||||
// let useFgSelectList = [];
|
||||
// this.pageData.useFgList.forEach(item => {
|
||||
// const it = { text: item.commCdNm, value: item.commCd };
|
||||
// useFgSelectList.push(it);
|
||||
// });
|
||||
// let addInfoList = [];
|
||||
// this.pageData.addInfoList.forEach(item => {
|
||||
// const it = { text: item.addInfoNm, value: item.addInfoId };
|
||||
// addInfoList.push(it);
|
||||
// });
|
||||
// let addInfoDataKindList = [];
|
||||
// this.pageData.addInfoDataKindList.forEach(item => {
|
||||
// const it = { text: item.commCdNm, value: item.commCd };
|
||||
// addInfoDataKindList.push(it);
|
||||
// });
|
||||
const _this = this;
|
||||
let useFgSelectList = [];
|
||||
this.pageData.useFgList.forEach(item => {
|
||||
const it = { text: item.commCdNm, value: item.commCd };
|
||||
useFgSelectList.push(it);
|
||||
});
|
||||
let addInfoList = [];
|
||||
this.pageData.addInfoList.forEach(item => {
|
||||
const it = { text: item.addInfoNm, value: item.addInfoId };
|
||||
addInfoList.push(it);
|
||||
});
|
||||
let addInfoDataKindList = [];
|
||||
this.pageData.addInfoDataKindList.forEach(item => {
|
||||
const it = { text: item.commCdNm, value: item.commCd };
|
||||
addInfoDataKindList.push(it);
|
||||
});
|
||||
|
||||
// const myColumns = [
|
||||
// { header: '회사 ID', name: 'comId', hidden: true },
|
||||
// { header: '검침개소 번호', name: 'readPlcId', hidden: true },
|
||||
// {
|
||||
// header: '추가 정보',
|
||||
// name: 'addInfoId',
|
||||
// align: 'left',
|
||||
// formatter({ value }) {
|
||||
// let retVal = '';
|
||||
// const newValue = addInfoList.filter(item => item.value == value);
|
||||
// if (newValue.length > 0) {
|
||||
// retVal = newValue[0].text;
|
||||
// }
|
||||
// return retVal;
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
// header: 'Data 구분',
|
||||
// name: 'addInfoDataKind',
|
||||
// align: 'center',
|
||||
// formatter({ value }) {
|
||||
// let retVal = '';
|
||||
// const newValue = addInfoDataKindList.filter(
|
||||
// item => item.value == value,
|
||||
// );
|
||||
// if (newValue.length > 0) {
|
||||
// retVal = newValue[0].text;
|
||||
// }
|
||||
// return retVal;
|
||||
// },
|
||||
// // editor: {
|
||||
// // type: "select",
|
||||
// // options: {
|
||||
// // listItems: addInfoDataKindList
|
||||
// // }
|
||||
// // }
|
||||
// },
|
||||
// {
|
||||
// header: '숫자 값',
|
||||
// name: 'addInfoNumVal',
|
||||
// align: 'right',
|
||||
// editor: 'text',
|
||||
// hidden: true,
|
||||
// },
|
||||
// {
|
||||
// header: '문자 값',
|
||||
// name: 'addInfoTxtVal',
|
||||
// align: 'left',
|
||||
// editor: 'text',
|
||||
// hidden: true,
|
||||
// },
|
||||
// {
|
||||
// header: '추가 정보 값',
|
||||
// name: 'addInfoVal',
|
||||
// align: 'center',
|
||||
// renderer: {
|
||||
// type: NewCustomRenderer,
|
||||
// },
|
||||
// editor: {
|
||||
// type: NewCustomEditor,
|
||||
// },
|
||||
// formatter(data) {
|
||||
// return data.row.addInfoDataKind;
|
||||
// },
|
||||
// },
|
||||
//{ header: "추가 정보 값", name: "addInfoVal", align: "center" , editor: "text",
|
||||
// formatter({ value, row , column}) {
|
||||
// console.log("addInfoVal row : ", row);
|
||||
// console.log("addInfoVal state : ", column);
|
||||
// if(row.addInfoDataKind === "NUM"){
|
||||
// column.align = "right";
|
||||
// }else{
|
||||
// column.align = "left";
|
||||
// }
|
||||
// return value;
|
||||
// }
|
||||
//},
|
||||
const myColumns = [
|
||||
{ header: '회사 ID', name: 'comId', hidden: true },
|
||||
{ header: '검침개소 번호', name: 'readPlcId', hidden: true },
|
||||
{
|
||||
header: '추가 정보',
|
||||
name: 'addInfoId',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = addInfoList.filter(item => item.value == value);
|
||||
if (newValue.length > 0) {
|
||||
retVal = newValue[0].text;
|
||||
}
|
||||
return retVal;
|
||||
},
|
||||
},
|
||||
{
|
||||
header: 'Data 구분',
|
||||
name: 'addInfoDataKind',
|
||||
align: 'center',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = addInfoDataKindList.filter(
|
||||
item => item.value == value,
|
||||
);
|
||||
if (newValue.length > 0) {
|
||||
retVal = newValue[0].text;
|
||||
}
|
||||
return retVal;
|
||||
},
|
||||
// editor: {
|
||||
// type: "select",
|
||||
// options: {
|
||||
// listItems: addInfoDataKindList
|
||||
// }
|
||||
// }
|
||||
},
|
||||
{
|
||||
header: '숫자 값',
|
||||
name: 'addInfoNumVal',
|
||||
align: 'right',
|
||||
editor: 'text',
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
header: '문자 값',
|
||||
name: 'addInfoTxtVal',
|
||||
align: 'left',
|
||||
editor: 'text',
|
||||
hidden: true,
|
||||
},
|
||||
{
|
||||
header: '추가 정보 값',
|
||||
name: 'addInfoVal',
|
||||
align: 'center',
|
||||
renderer: {
|
||||
type: NewCustomRenderer,
|
||||
},
|
||||
editor: {
|
||||
type: NewCustomEditor,
|
||||
},
|
||||
formatter(data) {
|
||||
return data.row.addInfoDataKind;
|
||||
},
|
||||
},
|
||||
// {
|
||||
// header: "추가 정보 값", name: "addInfoVal", align: "center", editor: "text",
|
||||
// formatter({ value, row, column }) {
|
||||
// console.log("addInfoVal row : ", row);
|
||||
// console.log("addInfoVal state : ", column);
|
||||
// if (row.addInfoDataKind === "NUM") {
|
||||
// column.align = "right";
|
||||
// } else {
|
||||
// column.align = "left";
|
||||
// }
|
||||
// return value;
|
||||
// }
|
||||
// },
|
||||
/*{
|
||||
header: "사용여부",
|
||||
name: "useFg",
|
||||
align: "center",
|
||||
formatter({ value }) {
|
||||
return value == "1" ? "사용" : "사용안함";
|
||||
},
|
||||
editor: {
|
||||
type: "select",
|
||||
options: {
|
||||
// listItems: useFgSelectList
|
||||
listItems: [
|
||||
{text:"사용", value:"1"},
|
||||
{text:"사용안함", value:"0"},
|
||||
]
|
||||
}
|
||||
}
|
||||
},*/
|
||||
// { header: '등록 사용자', name: 'regUserNo', hidden: true },
|
||||
// { header: '등록 일자', name: 'regDttm', hidden: true },
|
||||
// { header: '수정 사용자', name: 'procUserNo', hidden: true },
|
||||
// { header: '수정 일자', name: 'procDttm', hidden: true },
|
||||
// ];
|
||||
header: "사용여부",
|
||||
name: "useFg",
|
||||
align: "center",
|
||||
formatter({ value }) {
|
||||
return value == "1" ? "사용" : "사용안함";
|
||||
},
|
||||
editor: {
|
||||
type: "select",
|
||||
options: {
|
||||
// listItems: useFgSelectList
|
||||
listItems: [
|
||||
{text:"사용", value:"1"},
|
||||
{text:"사용안함", value:"0"},
|
||||
]
|
||||
}
|
||||
}
|
||||
},*/
|
||||
{ header: '등록 사용자', name: 'regUserNo', hidden: true },
|
||||
{ header: '등록 일자', name: 'regDttm', hidden: true },
|
||||
{ header: '수정 사용자', name: 'procUserNo', hidden: true },
|
||||
{ header: '수정 일자', name: 'procDttm', hidden: true },
|
||||
];
|
||||
|
||||
// this.setGridColumn({
|
||||
// gridKey: this.gridName,
|
||||
// value: myColumns,
|
||||
// });
|
||||
this.setGridColumn({
|
||||
gridKey: this.gridName,
|
||||
value: myColumns,
|
||||
});
|
||||
|
||||
this.loadGrid = true;
|
||||
},
|
||||
@ -379,7 +366,7 @@ export default {
|
||||
gridEditingFinish2(data, bindingData) {
|
||||
this.$refs[bindingData].editingFinish(data);
|
||||
},
|
||||
search() {},
|
||||
search() { },
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
@ -8,9 +8,9 @@
|
||||
|
||||
<div ref="gridParent" style="height: calc((100vh - 520px) /2);">
|
||||
<Grid :ref="gridName" :gridName="gridName" :parentPrgmId="parentPrgmId" @getRowsData="getRowData"
|
||||
:innerTabGridInfo="innerTabGridInfo" :dataPath="imgInfoTabData" />
|
||||
:innerTabGridInfo="innerTabGridInfo" />
|
||||
</div>
|
||||
<div ref="formParent">
|
||||
<div ref="formParent" style="height: calc((100vh - 400px) /2);">
|
||||
<component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName"
|
||||
:detailList="detailReadPlcImgList" @gridEditingFinish="gridEditingFinish" />
|
||||
</div>
|
||||
@ -44,26 +44,9 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
gridName: 'rowReadPlcImgGrid',
|
||||
detailReadPlcImgList: myReadPlcImgDetail,
|
||||
imgInfoTabData: {
|
||||
"rowReadPlcImgGrid": {
|
||||
data:
|
||||
[
|
||||
{ "objReadPlcId": "1001", "objReadPlcNm": "서울역", "distRt": 12 },
|
||||
{ "objReadPlcId": "1002", "objReadPlcNm": "강남역", "distRt": 8 },
|
||||
{ "objReadPlcId": "1003", "objReadPlcNm": "잠실역", "distRt": 15 },
|
||||
]
|
||||
,
|
||||
column: [
|
||||
{ header: '대상 검침개소 번호', name: 'objReadPlcId', align: 'center' },
|
||||
{ header: '대상 검침개소명', name: 'objReadPlcNm', align: 'left' },
|
||||
{ header: '분배율(1~100)', name: 'distRt', align: 'right' },
|
||||
]
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -120,10 +103,11 @@ export default {
|
||||
header: {
|
||||
height: 28,
|
||||
},
|
||||
rowHeight: 29,
|
||||
minRowHeight: 29,
|
||||
// rowHeight: 29,
|
||||
// minRowHeight: 29,
|
||||
selectionUnit: 'row',
|
||||
editingEvent: 'click',
|
||||
rowHeight: 'auto',
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
|
@ -6,12 +6,23 @@
|
||||
:btnActionsFnc="btnActions" />
|
||||
</div>
|
||||
<div ref="gridParent" style="height: calc((100vh - 520px) /2);">
|
||||
<Grid :ref="gridName" :gridName="gridName" :parentPrgmId="parentPrgmId" @getRowsData="getRowData"
|
||||
:innerTabGridInfo="innerTabGridInfo" :dataPath="tagRelTabData" />
|
||||
<Grid
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
:innerTabGridInfo="innerTabGridInfo"
|
||||
/>
|
||||
</div>
|
||||
<div ref="formParent" >
|
||||
<component :is="'Form'" :parentPrgmId="parentPrgmId" :bindingData="gridName"
|
||||
:detailList="detailReadPlcTagList" @gridEditingFinish="gridEditingFinish" />
|
||||
<div ref="formParent" style="height: calc((100vh - 400px) /2);">
|
||||
<component
|
||||
:is="'Form'"
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:bindingData="gridName"
|
||||
:detailList="detailReadPlcTagList"
|
||||
@gridEditingFinish="gridEditingFinish"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -46,78 +57,7 @@ export default {
|
||||
loadGrid: false,
|
||||
gridName: 'rowReadPlcTagRelGrid',
|
||||
detailReadPlcTagList: myReadPlcTagDetail,
|
||||
tagRelTabData: {
|
||||
"rowReadPlcTagRelGrid": {
|
||||
data:
|
||||
[
|
||||
|
||||
{
|
||||
"tagNm": "TAG_001",
|
||||
"ercId": "전기",
|
||||
"distRt": 10,
|
||||
"reprTagFg": "1",
|
||||
"useFg": "Y",
|
||||
"rmrk": "기본 설정",
|
||||
"tagId": "TAG_001"
|
||||
},
|
||||
{
|
||||
"tagNm": "TAG_002",
|
||||
"ercId": "가스",
|
||||
"distRt": 15,
|
||||
"reprTagFg": "0",
|
||||
"useFg": "Y",
|
||||
"rmrk": "",
|
||||
"tagId": "TAG_002"
|
||||
},
|
||||
{
|
||||
"tagNm": "TAG_003",
|
||||
"ercId": "수도",
|
||||
"distRt": 8,
|
||||
"reprTagFg": "0",
|
||||
"useFg": "N",
|
||||
"rmrk": "테스트용",
|
||||
"tagId": "TAG_003"
|
||||
},
|
||||
|
||||
]
|
||||
,
|
||||
column: [
|
||||
{ header: 'TAG 명', name: 'tagNm', align: 'left' },
|
||||
{
|
||||
header: '에너지원',
|
||||
name: 'ercId',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
header: '분배율(1~100)',
|
||||
name: 'distRt',
|
||||
align: 'right',
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
header: '대표 TAG 여부',
|
||||
name: 'reprTagFg',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
formatter({ value }) {
|
||||
return value == '1' ? '예' : '아니오';
|
||||
},
|
||||
},
|
||||
{
|
||||
header: '사용여부',
|
||||
name: 'useFg',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
|
||||
},
|
||||
{ header: '비고', name: 'rmrk', align: 'left', width: 100 },
|
||||
{ header: 'TAG ID', name: 'tagId', align: 'center', hidden: true },
|
||||
|
||||
]
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -170,9 +110,9 @@ export default {
|
||||
// bodyHeight: gridHeight,
|
||||
// minBodyHeight: gridHeight,
|
||||
header: {
|
||||
height: 28,
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 29,
|
||||
rowHeight: 37,
|
||||
minRowHeight: 29,
|
||||
selectionUnit: 'row',
|
||||
editingEvent: 'click',
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="d-flex justify-space-between align-end">
|
||||
<span class="tit ft-size_20 ft-weight_600">TAG 추가 정보</span>
|
||||
<span style="color:#000000A6" class="tit custom-title-4-new">TAG 추가 정보</span>
|
||||
<Buttons
|
||||
:parentPrgmId="parentPrgmId"
|
||||
:bindingData="gridName"
|
||||
@ -107,8 +107,7 @@ export default {
|
||||
header: {
|
||||
height: 38,
|
||||
},
|
||||
rowHeight: 22,
|
||||
minRowHeight: 22,
|
||||
|
||||
selectionUnit: 'row',
|
||||
editingEvent: 'click',
|
||||
};
|
||||
@ -269,7 +268,7 @@ export default {
|
||||
{
|
||||
header: 'Data 구분',
|
||||
name: 'addInfoDataKind',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = addInfoDataKindList.filter(
|
||||
|
@ -58,7 +58,7 @@ export default {
|
||||
layoutInit() {
|
||||
if (this.$refs.searchFilter) {
|
||||
const searchFilterHeight = this.$refs.searchFilter.offsetHeight;
|
||||
this.$refs.contents.style.minHeight = `calc(100% - ${searchFilterHeight + 20}px)`;
|
||||
this.$refs.contents.style.height = `calc(100% - ${searchFilterHeight + 20}px)`;
|
||||
}
|
||||
},
|
||||
//init() {}
|
||||
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<v-row ref="searchFilter">
|
||||
<common-page-title />
|
||||
<v-row ref="searchFilter" class="mt-2">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
@ -34,7 +35,7 @@
|
||||
<div class="h100 px-4" style="height:calc(100% - 70px)">
|
||||
<div ref="treeGridParent" class="w100 h100">
|
||||
<component :ref="gridName + myPrgmId" :is="loadTree ? 'Grid' : null" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData" :dataPath="dataPathExample" />
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData" />
|
||||
</div>
|
||||
</div>
|
||||
</v-card>
|
||||
@ -91,21 +92,9 @@ export default {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
gridName: 'treeGrid',
|
||||
loadTree: true,
|
||||
loadTree: false,
|
||||
detailList: myDetail,
|
||||
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: {
|
||||
@ -162,10 +151,17 @@ export default {
|
||||
gridInit() {
|
||||
const treeGridHeight = this.$refs.treeGridParent.offsetHeight - 30;
|
||||
const myOptionsTree = {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
treeColumnOptions: {
|
||||
name: 'menuNm',
|
||||
},
|
||||
scrollX: false,
|
||||
header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 37,
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
@ -178,6 +174,17 @@ export default {
|
||||
this.setGridColumn({
|
||||
gridKey: this.gridName,
|
||||
value: [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 20,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{ header: '메뉴명', name: 'menuNm' },
|
||||
{ header: 'prgmId ', name: 'prgmId', hidden: true },
|
||||
{ header: 'sysDivCd ', name: 'sysDivCd', hidden: true },
|
||||
|
@ -36,19 +36,14 @@
|
||||
<v-card-title>
|
||||
<span class="custom-title-4">역할 리스트</span>
|
||||
</v-card-title>
|
||||
<div class="px-5" style="height:calc(100% - 100px)">
|
||||
<div
|
||||
ref="gridParent"
|
||||
class="w100 h100"
|
||||
>
|
||||
<component
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:ref="gridName + myPrgmId"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
/>
|
||||
</div>
|
||||
<div ref="gridParent" class="px-5" style="height: 60vh;">
|
||||
<component
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:ref="gridName + myPrgmId"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
/>
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
@ -69,19 +64,19 @@
|
||||
:style="{ minHeight: '36px' }"
|
||||
>[미배정]메뉴리스트</span
|
||||
>
|
||||
<div class="px-0 mt-2" style="height:calc(100% - 64px)">
|
||||
<div
|
||||
<div ref="treeGridParent" class="px-0 mt-2" style="height: 60vh;">
|
||||
<!-- <div
|
||||
ref="treeGridParent"
|
||||
class="w100 h100"
|
||||
>
|
||||
<component
|
||||
:is="loadTreeGrid ? 'Grid' : null"
|
||||
:ref="gridName2 + myPrgmId"
|
||||
:gridName="gridName2"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getUnAsgnRowData"
|
||||
/>
|
||||
</div>
|
||||
</div> -->
|
||||
<component
|
||||
:is="loadTreeGrid ? 'Grid' : null"
|
||||
:ref="gridName2 + myPrgmId"
|
||||
:gridName="gridName2"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getUnAsgnRowData"
|
||||
/>
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="1">
|
||||
@ -112,20 +107,20 @@
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<div class="px-0 mt-2" style="height:calc(100% - 64px)">
|
||||
<div
|
||||
<div ref="treeGridParent2" class="px-0 mt-2" style="height: 60vh;">
|
||||
<!-- <div
|
||||
ref="treeGridParent2"
|
||||
class="w100 h100"
|
||||
>
|
||||
<component
|
||||
:is="loadTreeGrid2 ? 'Grid' : null"
|
||||
:ref="gridName3 + myPrgmId"
|
||||
:gridName="gridName3"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:editorGrid="true"
|
||||
@getRowsData="getAsgnRowData"
|
||||
/>
|
||||
</div>
|
||||
</div> -->
|
||||
<component
|
||||
:is="loadTreeGrid2 ? 'Grid' : null"
|
||||
:ref="gridName3 + myPrgmId"
|
||||
:gridName="gridName3"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:editorGrid="true"
|
||||
@getRowsData="getAsgnRowData"
|
||||
/>
|
||||
</div>
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -408,9 +403,9 @@ export default {
|
||||
align: 'center',
|
||||
width: 30,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
return `<span class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
</span>`;
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -431,9 +426,9 @@ export default {
|
||||
align: 'center',
|
||||
width: 30,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
return `<span class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
</span>`;
|
||||
}
|
||||
},
|
||||
{ header: '역할ID', name: 'roleId', hidden: true },
|
||||
@ -573,6 +568,7 @@ export default {
|
||||
});
|
||||
},
|
||||
async getRowData(data) {
|
||||
|
||||
await this.setPageData({
|
||||
rowGridSelectKey: data.rowKey,
|
||||
rowGridSelectData: {
|
||||
@ -678,6 +674,8 @@ export default {
|
||||
},
|
||||
|
||||
getUnAsgnRowData(data) {
|
||||
console.log("------------------DEBUG-------getUnAsgnRowData:", data);
|
||||
|
||||
const getRowData = data;
|
||||
this.leftSelectRowData = Object.assign({}, getRowData);
|
||||
},
|
||||
|
@ -67,7 +67,6 @@
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -132,22 +131,8 @@ export default {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
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: {
|
||||
@ -518,43 +503,4 @@ const myDetail = [
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
];
|
||||
|
||||
const dataMockExample = [
|
||||
{
|
||||
addGrpId: 'GRP001',
|
||||
addInfoId: 'INFO001',
|
||||
addInfoNm: '온도 센서',
|
||||
addInfoDataKind: 'DATA01',
|
||||
useFg: true,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP002',
|
||||
addInfoId: 'INFO002',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA02',
|
||||
useFg: false,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP003',
|
||||
addInfoId: 'INFO003',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA03',
|
||||
useFg: false,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP004',
|
||||
addInfoId: 'INFO004',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA04',
|
||||
useFg: false,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP005',
|
||||
addInfoId: 'INFO005',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA05',
|
||||
useFg: false,
|
||||
},
|
||||
];
|
||||
|
||||
</script>
|
||||
|
@ -12,6 +12,8 @@
|
||||
:parentPrgmId="myPrgmId"
|
||||
:sendParam="{ comId }"
|
||||
customClass="select-large"
|
||||
labelCols="12"
|
||||
textCols="12"
|
||||
/>
|
||||
<!-- <component
|
||||
:is="'selectCodeList'"
|
||||
@ -79,7 +81,6 @@
|
||||
@getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||
:selectedRowDataWatchFlag="true"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -126,13 +127,13 @@
|
||||
|
||||
<!-- 역할수정 -->
|
||||
<template v-else-if="item.id == 'AsgnRoleByUser'">
|
||||
<v-col :cols="3" class="h100">
|
||||
<v-col :cols="12" class="overflow-y-scroll grid-toggle-section">
|
||||
<v-card-title
|
||||
class="pa-0 custom-title-4"
|
||||
class="pa-0 custom-subtitle-tab"
|
||||
style="min-height:36px;"
|
||||
>역할리스트</v-card-title
|
||||
>
|
||||
<div style="height:calc(100% - 36px)" class="py-5">
|
||||
<div class="py-5">
|
||||
<component
|
||||
class="w100"
|
||||
:is="loadGridTab2 ? 'Grid' : null"
|
||||
@ -144,7 +145,7 @@
|
||||
/>
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="1" class="d-flex justify-center">
|
||||
<v-col :cols="12" class="d-flex justify-center">
|
||||
<ActionButtons
|
||||
:parentPrgmId="myPrgmId"
|
||||
:leftGridName="gridName2"
|
||||
@ -152,9 +153,9 @@
|
||||
:btnActionsFnc="dualGridBtnActions"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="8" class="h100">
|
||||
<v-col :cols="12" class="h100">
|
||||
<div class="d-flex align-center justify-space-between">
|
||||
<v-card-title class="pa-0 custom-title-4">
|
||||
<v-card-title class="pa-0 custom-subtitle-tab">
|
||||
사용자 역할</v-card-title
|
||||
>
|
||||
<div>
|
||||
@ -307,40 +308,10 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
async init() {
|
||||
this.gridInit();
|
||||
await this.gridInit();
|
||||
},
|
||||
|
||||
gridInitTest() {
|
||||
const rowGrid = {
|
||||
column: [
|
||||
{ header: '사용자No', name: 'userNo', align: 'center', hidden: true },
|
||||
{ header: '사용자명', name: 'userNm' },
|
||||
{ header: '사용자ID', name: 'userLoginId' },
|
||||
{ header: '사용자비밀번호', name: 'userPswd', hidden: true },
|
||||
{ header: '사업장', name: 'blocId', hidden: true },
|
||||
{ header: 'email', name: 'email', hidden: true },
|
||||
{ header: '등록자NO', name: 'regUserNo', hidden: true },
|
||||
{ header: '등록일시', name: 'regDttm', hidden: true },
|
||||
{ header: '수정자NO', name: 'procUserNo', hidden: true },
|
||||
{ header: '수정일시', name: 'procDttm', hidden: true },
|
||||
{ header: 'comId', name: 'comId', hidden: true },
|
||||
{ header: 'deptId', name: 'deptId', hidden: true },
|
||||
],
|
||||
data: dataMockExample,
|
||||
defaultRow: dataMockExample,
|
||||
option: [],
|
||||
}
|
||||
this.dataPathMock = {rowGrid};
|
||||
this.$nextTick(() => {
|
||||
this.loadGrid = true;
|
||||
});
|
||||
},
|
||||
|
||||
// 사용자 리스트 그리드 세팅
|
||||
gridInit() {
|
||||
|
||||
// this.gridInitTest(); return
|
||||
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 90;
|
||||
|
||||
const myOptions = {
|
||||
@ -923,6 +894,7 @@ const defaultData = {
|
||||
};
|
||||
|
||||
const myColumns = [
|
||||
|
||||
{ header: '사용자No', name: 'userNo', align: 'center', hidden: true },
|
||||
{ header: '사용자명', name: 'userNm' },
|
||||
{ header: '사용자ID', name: 'userLoginId' },
|
||||
@ -938,6 +910,17 @@ const myColumns = [
|
||||
];
|
||||
|
||||
const unAsgnRoleByUserColumns = [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{ header: '역할ID', name: 'roleId', align: 'center' },
|
||||
{ header: '역할명', name: 'roleNm' },
|
||||
{ header: '적용시작일', name: 'aplyStartDt', hidden: true },
|
||||
@ -947,6 +930,7 @@ const unAsgnRoleByUserColumns = [
|
||||
];
|
||||
|
||||
const asgnRoleByUserColumns = [
|
||||
|
||||
{ header: '역할ID', name: 'roleId', align: 'center' },
|
||||
{ header: '역할명', name: 'roleNm' },
|
||||
{
|
||||
@ -960,7 +944,19 @@ const asgnRoleByUserColumns = [
|
||||
{ header: 'comId', name: 'comId', hidden: true },
|
||||
];
|
||||
|
||||
const asgnMenuByUserColumns = [{ header: '메뉴명', name: 'menuNm' }];
|
||||
const asgnMenuByUserColumns = [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{ header: '메뉴명', name: 'menuNm' }];
|
||||
|
||||
const myDetail = blocCdList => {
|
||||
return [
|
||||
@ -1100,67 +1096,4 @@ function sha512(str) {
|
||||
.update(str)
|
||||
.digest('hex');
|
||||
}
|
||||
|
||||
|
||||
|
||||
const dataMockExample = [
|
||||
{
|
||||
userNo: 1,
|
||||
userNm: '홍길동',
|
||||
userLoginId: 'hong123',
|
||||
userPswd: 'password123',
|
||||
blocId: 'B001',
|
||||
email: 'hong@example.com',
|
||||
regUserNo: 100,
|
||||
regDttm: '2025-07-01 10:00:00',
|
||||
procUserNo: 101,
|
||||
procDttm: '2025-07-15 14:30:00',
|
||||
comId: 'C001',
|
||||
deptId: 'D001'
|
||||
},
|
||||
{
|
||||
userNo: 2,
|
||||
userNm: '김영희',
|
||||
userLoginId: 'kimyh',
|
||||
userPswd: 'securePass456',
|
||||
blocId: 'B002',
|
||||
email: 'kim@example.com',
|
||||
regUserNo: 102,
|
||||
regDttm: '2025-07-02 11:20:00',
|
||||
procUserNo: 103,
|
||||
procDttm: '2025-07-16 09:45:00',
|
||||
comId: 'C002',
|
||||
deptId: 'D002'
|
||||
},
|
||||
{
|
||||
userNo: 3,
|
||||
userNm: '관리자',
|
||||
userLoginId: 'user',
|
||||
userPswd: 'securePass456',
|
||||
blocId: 'B002',
|
||||
email: 'kim@example.com',
|
||||
regUserNo: 102,
|
||||
regDttm: '2025-07-02 11:20:00',
|
||||
procUserNo: 103,
|
||||
procDttm: '2025-07-16 09:45:00',
|
||||
comId: 'C002',
|
||||
deptId: 'D002'
|
||||
},
|
||||
{
|
||||
userNo: 4,
|
||||
userNm: '사용자',
|
||||
userLoginId: 'admin',
|
||||
userPswd: 'securePass456',
|
||||
blocId: 'B002',
|
||||
email: 'kim@example.com',
|
||||
regUserNo: 102,
|
||||
regDttm: '2025-07-02 11:20:00',
|
||||
procUserNo: 103,
|
||||
procDttm: '2025-07-16 09:45:00',
|
||||
comId: 'C002',
|
||||
deptId: 'D002'
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
</script>
|
||||
</script>
|
@ -11,7 +11,6 @@
|
||||
label="배치ID"
|
||||
valueNm="batchId"
|
||||
:searchOption="true"
|
||||
:iconShow="true"
|
||||
customClass="input-large"
|
||||
/>
|
||||
</v-col>
|
||||
@ -21,7 +20,6 @@
|
||||
label="배치명"
|
||||
valueNm="batchNm"
|
||||
:searchOption="true"
|
||||
:iconShow="true"
|
||||
customClass="input-large"
|
||||
/>
|
||||
</v-col>
|
||||
@ -33,7 +31,6 @@
|
||||
:dataKey="'execRsltCd'"
|
||||
:sendParam="{ commGrpCd: 'CO_BATCH_EXEC_RSLT', useFg: '1' }"
|
||||
:addAll="true"
|
||||
:iconShow="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
@ -42,13 +39,13 @@
|
||||
:is="'Datepicker'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'조회기간'"
|
||||
:customClass="'input-large'"
|
||||
customClass="datepicker-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2" class="text-right d-flex align-end justify-end ga-1" style="gap: 4px">
|
||||
<BtnSearch size="large" />
|
||||
<div class="text-right d-flex align-end justify-end pl-9" style="gap: 8px">
|
||||
<BtnSearch />
|
||||
<BtnExcelDownload :parentPrgmId="myPrgmId" :gridName="gridName" size="large" />
|
||||
</v-col>
|
||||
</div>
|
||||
</v-row>
|
||||
</v-card>
|
||||
</v-col>
|
||||
@ -63,11 +60,10 @@
|
||||
<div ref="gridParent" class="px-5 h100">
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is=" 'Grid' "
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:gridName="gridName"
|
||||
@getRowsData="getRowData"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -140,56 +136,10 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
gridName: 'rowGrid',
|
||||
// rowGridOrigin: [],
|
||||
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: {
|
||||
@ -248,14 +198,6 @@ export default {
|
||||
init() {
|
||||
// this.layoutInit();
|
||||
this.gridInit();
|
||||
|
||||
// _this.pageData = {
|
||||
// execRsltCdList: [
|
||||
// { commCd: '1', commCdNm: '성공' },
|
||||
// { commCd: '2', commCdNm: '실패' },
|
||||
// ],
|
||||
// };
|
||||
|
||||
},
|
||||
// layoutInit() {
|
||||
// const searchFilterHeight = this.$refs.searchFilter.offsetHeight;
|
||||
@ -368,13 +310,10 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
// async getRowData(data) {
|
||||
async getRowData() {
|
||||
console.log("something")
|
||||
async getRowData(data) {
|
||||
this.setPageData({
|
||||
// rowGridSelectKey: data.rowKey,
|
||||
rowGridSelectKey: 1,
|
||||
rowGridSelectData: fakeRowData,
|
||||
rowGridSelectKey: data.rowKey,
|
||||
rowGridSelectData: data,
|
||||
});
|
||||
},
|
||||
compareData(type, newDt) {
|
||||
@ -481,86 +420,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 = [
|
||||
{
|
||||
type: 'TextArea',
|
||||
valueNm: 'execLogCont',
|
||||
readonly: true,
|
||||
cols: 12,
|
||||
class: 'py-2 transparent',
|
||||
class: 'py-2',
|
||||
},
|
||||
];
|
||||
</script>
|
||||
</script>
|
@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<!-- 조회조견 -->
|
||||
<v-row ref="searchFilter">
|
||||
<common-page-title />
|
||||
<v-row ref="searchFilter" class="mt-2">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
@ -24,7 +25,7 @@
|
||||
:customClass="'select-large'"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
<v-col :cols="2.5" class="pr-4">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@ -34,7 +35,7 @@
|
||||
:customClass="'select-large'"
|
||||
/>
|
||||
</v-col>
|
||||
<BtnSearch size="large" />
|
||||
<BtnSearch size="large" class="mr-2" />
|
||||
|
||||
</v-row>
|
||||
</v-card>
|
||||
@ -57,7 +58,7 @@
|
||||
<div class="px-4">
|
||||
<div ref="gridParent" class="h100 w100">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :parentPrgmId="myPrgmId"
|
||||
:gridName="gridName" @getRowsData="getRowData" :dataPath="dataPathExample" />
|
||||
:gridName="gridName" @getRowsData="getRowData" />
|
||||
</div>
|
||||
<!-- </v-card-actions> -->
|
||||
</div>
|
||||
@ -77,7 +78,7 @@
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</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-title class="v-card__title d-flex align-center justify-space-between">
|
||||
<span class="custom-title-4">DB 프로시져 파라메터 설정</span>
|
||||
@ -91,7 +92,6 @@
|
||||
<v-col cols="12" class="text-right"> </v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
<v-divider></v-divider>
|
||||
<v-card-text style="height: 300px;">
|
||||
<div id="gridParent" class="mt-6" style="height:calc(100% - 36px);">
|
||||
<div style="height:calc(100% - 36px);">
|
||||
@ -101,7 +101,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</v-card-text>
|
||||
<v-divider></v-divider>
|
||||
<v-card-actions>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn color="primary" dark @click="setParamChangeData()">확인</v-btn>
|
||||
@ -155,76 +154,16 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
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: [],
|
||||
detailList: myDetail,
|
||||
|
||||
// 파라메터 셋팅용 변수
|
||||
dialog: false,
|
||||
gridNameParam: 'paramGrid',
|
||||
paramLoadGrid: true,
|
||||
paramLoadGrid: false,
|
||||
selectedGridNameParamRow: null,
|
||||
};
|
||||
},
|
||||
@ -292,7 +231,7 @@ export default {
|
||||
}),
|
||||
init() {
|
||||
// this.layoutInit();
|
||||
// this.gridInit();
|
||||
this.gridInit();
|
||||
this.gridParamInit();
|
||||
},
|
||||
// layoutInit() {
|
||||
@ -309,6 +248,10 @@ export default {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 37,
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
@ -384,7 +327,7 @@ export default {
|
||||
},
|
||||
async search() {
|
||||
// console.log("search");
|
||||
// await this.getRowGridData();
|
||||
await this.getRowGridData();
|
||||
await this.setPageData({
|
||||
isFind: false,
|
||||
});
|
||||
@ -629,20 +572,20 @@ export default {
|
||||
gridKey: this.gridNameParam,
|
||||
value: myOptions,
|
||||
});
|
||||
// setTimeout(() => { });
|
||||
setTimeout(() => { });
|
||||
|
||||
// let modeList = [];
|
||||
// const modeIn = { text: 'IN', value: 'IN' };
|
||||
// const modeOut = { text: 'OUT', value: 'OUT' };
|
||||
// modeList.push(modeIn);
|
||||
// modeList.push(modeOut);
|
||||
// let typeList = [];
|
||||
// const typeInt = { text: 'INT', value: 'int' };
|
||||
// const typeStr = { text: 'STRING', value: 'str' };
|
||||
// const typeFunc = { text: 'FUNCTION', value: 'function' };
|
||||
// typeList.push(typeInt);
|
||||
// typeList.push(typeStr);
|
||||
// typeList.push(typeFunc);
|
||||
let modeList = [];
|
||||
const modeIn = { text: 'IN', value: 'IN' };
|
||||
const modeOut = { text: 'OUT', value: 'OUT' };
|
||||
modeList.push(modeIn);
|
||||
modeList.push(modeOut);
|
||||
let typeList = [];
|
||||
const typeInt = { text: 'INT', value: 'int' };
|
||||
const typeStr = { text: 'STRING', value: 'str' };
|
||||
const typeFunc = { text: 'FUNCTION', value: 'function' };
|
||||
typeList.push(typeInt);
|
||||
typeList.push(typeStr);
|
||||
typeList.push(typeFunc);
|
||||
|
||||
const myColumns = [
|
||||
{ header: 'ID', name: 'id', editor: 'text' },
|
||||
@ -664,27 +607,27 @@ export default {
|
||||
header: 'Type',
|
||||
name: 'type',
|
||||
align: 'center',
|
||||
// formatter({ value }) {
|
||||
// let retVal = '';
|
||||
// switch (value) {
|
||||
// case 'int':
|
||||
// retVal = 'INT';
|
||||
// break;
|
||||
// case 'str':
|
||||
// retVal = 'STRING';
|
||||
// break;
|
||||
// case 'function':
|
||||
// retVal = 'FUNCTION';
|
||||
// break;
|
||||
// }
|
||||
// return retVal;
|
||||
// },
|
||||
// editor: {
|
||||
// type: 'select',
|
||||
// options: {
|
||||
// listItems: typeList,
|
||||
// },
|
||||
// },
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
switch (value) {
|
||||
case 'int':
|
||||
retVal = 'INT';
|
||||
break;
|
||||
case 'str':
|
||||
retVal = 'STRING';
|
||||
break;
|
||||
case 'function':
|
||||
retVal = 'FUNCTION';
|
||||
break;
|
||||
}
|
||||
return retVal;
|
||||
},
|
||||
editor: {
|
||||
type: 'select',
|
||||
options: {
|
||||
listItems: typeList,
|
||||
},
|
||||
},
|
||||
},
|
||||
{ header: '값', name: 'val', editor: 'text' },
|
||||
{ header: 'rowStat', name: 'rowStat', hidden: true },
|
||||
@ -703,86 +646,49 @@ export default {
|
||||
|
||||
// /* this.pageData.paramStrData 처리 */
|
||||
// // console.log("this.pageData.paramStrData : ", JSON.parse(this.pageData.paramStrData));
|
||||
// let rowData = {};
|
||||
// if (
|
||||
// this.pageData.paramStrData.startsWith('{') &&
|
||||
// this.pageData.paramStrData.endsWith('}')
|
||||
// ) {
|
||||
// rowData = JSON.parse(this.pageData.paramStrData);
|
||||
// }
|
||||
// var keys = Object.keys(rowData); //키를 가져옵니다. 이때, keys 는 반복가능한 객체가 됩니다.
|
||||
// for (var i = 0; i < keys.length; i++) {
|
||||
// var key = keys[i];
|
||||
// res.push(rowData[key]);
|
||||
// }
|
||||
let rowData = {};
|
||||
if (
|
||||
this.pageData.paramStrData.startsWith('{') &&
|
||||
this.pageData.paramStrData.endsWith('}')
|
||||
) {
|
||||
rowData = JSON.parse(this.pageData.paramStrData);
|
||||
}
|
||||
var keys = Object.keys(rowData); //키를 가져옵니다. 이때, keys 는 반복가능한 객체가 됩니다.
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var key = keys[i];
|
||||
res.push(rowData[key]);
|
||||
}
|
||||
|
||||
// const newRes = res.map(item => {
|
||||
// const newObj = {
|
||||
// ...item,
|
||||
// rowStat: null,
|
||||
// id: item.id || '',
|
||||
// mode: item.mode || 'in',
|
||||
// type: item.type || 'str',
|
||||
// val: item.val || '',
|
||||
// };
|
||||
// return newObj;
|
||||
// });
|
||||
const newRes = res.map(item => {
|
||||
const newObj = {
|
||||
...item,
|
||||
rowStat: null,
|
||||
id: item.id || '',
|
||||
mode: item.mode || 'in',
|
||||
type: item.type || 'str',
|
||||
val: item.val || '',
|
||||
};
|
||||
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({
|
||||
gridKey: this.gridNameParam,
|
||||
value: newRes,
|
||||
});
|
||||
// this.$nextTick(() => {
|
||||
// if (newRes.length > 0) {
|
||||
// try {
|
||||
// this.$refs[this.gridNameParam].focus({
|
||||
// //rowKey: 0,
|
||||
// rowKey: 0,
|
||||
// setScroll: true,
|
||||
// });
|
||||
// } catch (error) {
|
||||
// console.log('error[nextTick grid] : ', error);
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
this.$nextTick(() => {
|
||||
if (newRes.length > 0) {
|
||||
try {
|
||||
this.$refs[this.gridNameParam].focus({
|
||||
//rowKey: 0,
|
||||
rowKey: 0,
|
||||
setScroll: true,
|
||||
});
|
||||
} catch (error) {
|
||||
console.log('error[nextTick grid] : ', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
this.paramLoadGrid = true;
|
||||
},
|
||||
xlsDataBind(res) {
|
||||
@ -812,21 +718,21 @@ export default {
|
||||
inputClick(event, item, valueNm) {
|
||||
if (valueNm == 'refVal1') {
|
||||
this.dialog = true;
|
||||
// const rowIdxKey = this.$refs[this.gridName].gridInstance.invoke(
|
||||
// 'getFocusedCell',
|
||||
// ).rowKey;
|
||||
// const selectRowData = this.$refs[this.gridName].gridInstance.invoke(
|
||||
// 'getRow',
|
||||
// rowIdxKey,
|
||||
// );
|
||||
const rowIdxKey = this.$refs[this.gridName].gridInstance.invoke(
|
||||
'getFocusedCell',
|
||||
).rowKey;
|
||||
const selectRowData = this.$refs[this.gridName].gridInstance.invoke(
|
||||
'getRow',
|
||||
rowIdxKey,
|
||||
);
|
||||
|
||||
// if (selectRowData.batchExecTp == 'DP') {
|
||||
// // 여기에 팝업 레이어 띠우기 기능 추가
|
||||
// this.pageData.paramStrData = event.target.value;
|
||||
// this.pageData.paramChangeDataTarget = event.target;
|
||||
// this.getRowParamData();
|
||||
// this.dialog = true;
|
||||
// }
|
||||
if (selectRowData.batchExecTp == 'DP') {
|
||||
// 여기에 팝업 레이어 띠우기 기능 추가
|
||||
this.pageData.paramStrData = event.target.value;
|
||||
this.pageData.paramChangeDataTarget = event.target;
|
||||
this.getRowParamData();
|
||||
this.dialog = true;
|
||||
}
|
||||
}
|
||||
},
|
||||
setParamChangeData() {
|
||||
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<v-row ref="searchFilter">
|
||||
<common-page-title />
|
||||
<v-row ref="searchFilter" class="mt-2">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
@ -10,7 +11,7 @@
|
||||
</v-col>
|
||||
<v-col cols="3">
|
||||
<!-- <component :is="'SelectDateSolo'" :parentPrgmId="myPrgmId" /> -->
|
||||
<DatePicker :parentPrgmId="myPrgmId" :label="'조회연월'" />
|
||||
<DatePicker :parentPrgmId="myPrgmId" customClass="datepicker-large" :label="'조회연월'" />
|
||||
</v-col>
|
||||
<v-col cols="6" class="text-right">
|
||||
<BtnSearch @click="search()" size="large" />
|
||||
@ -20,28 +21,29 @@
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row ref="contents" id="CalendarMngContent" class="mt-4">
|
||||
<v-col cols="12" lg="4" class="h100 pr-2">
|
||||
<v-col cols="12" lg="4" class=" pr-2">
|
||||
<v-card class="w100">
|
||||
<v-card-title class="d-flex justify-space-between align-center">
|
||||
<span class="custom-title-4">캘린더 리스트</span>
|
||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
|
||||
</v-card-title>
|
||||
<v-card-actions class="pt-0 px-5 pb-5" :style="{ height: 'calc(100% - 72.56px)' }">
|
||||
<v-card-actions class="pt-0 px-5 pb-5" :style="{ height: 'calc(100% - 10px)' }">
|
||||
<div ref="gridParent" class="w100 h100">
|
||||
<component class="w100" :ref="gridName + myPrgmId" :is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName" :parentPrgmId="myPrgmId" :editorGrid="true"
|
||||
@getRowsData="getRowData" :dataPath="dataPathExample" />
|
||||
@getRowsData="getRowData" />
|
||||
</div>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col cols="12" lg="8" class="h100 pl-3">
|
||||
<v-col cols="12" lg="8" class=" pl-3">
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
<span class="custom-title-4">캘린더 미리보기</span>
|
||||
</v-card-title>
|
||||
<v-card-actions class="px-5 d-block" :style="{ height: 'calc(100% - 62px)' }">
|
||||
<Calendar :parentPrgmId="myPrgmId" :gridName="gridName" :headerVisible="false" />
|
||||
<v-card-actions class="px-5 d-block" >
|
||||
<Calendar :parentPrgmId="myPrgmId" :gridName="gridName" :headerVisible="false"
|
||||
:showTitle="false" />
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-col>
|
||||
@ -94,81 +96,7 @@ export default {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: true,
|
||||
dataPathExample: {
|
||||
"rowGrid": {
|
||||
data: [
|
||||
{
|
||||
"hldyFg": "평일",
|
||||
"hldyNm": ""
|
||||
},
|
||||
{
|
||||
"dt": "2025-07-23",
|
||||
"dtNm": "수요일",
|
||||
"dt": "2025-07-21",
|
||||
"dtNm": "월요일",
|
||||
"hldyFg": "평일",
|
||||
"hldyNm": ""
|
||||
},
|
||||
{
|
||||
"dt": "2025-07-22",
|
||||
"dtNm": "화요일",
|
||||
"hldyFg": "평일",
|
||||
"hldyNm": ""
|
||||
},
|
||||
{
|
||||
"dt": "2025-07-24",
|
||||
"dtNm": "목요일",
|
||||
"hldyFg": "평일",
|
||||
"hldyNm": ""
|
||||
},
|
||||
{
|
||||
"dt": "2025-07-25",
|
||||
"dtNm": "금요일",
|
||||
"hldyFg": "평일",
|
||||
"hldyNm": ""
|
||||
},
|
||||
{
|
||||
"dt": "2025-07-26",
|
||||
"dtNm": "토요일",
|
||||
"hldyFg": "주말",
|
||||
"hldyNm": ""
|
||||
},
|
||||
{
|
||||
"dt": "2025-07-27",
|
||||
"dtNm": "일요일",
|
||||
"hldyFg": "휴일",
|
||||
"hldyNm": "정기휴일"
|
||||
}
|
||||
],
|
||||
column: [
|
||||
{
|
||||
header: '일자',
|
||||
name: 'dt',
|
||||
align: 'center',
|
||||
// formatter({ value }) {
|
||||
// return value.split(' ')[0];
|
||||
// },
|
||||
},
|
||||
{
|
||||
header: '요일',
|
||||
name: 'dtNm',
|
||||
align: 'center',
|
||||
// formatter({ value }) {
|
||||
// return value + '요일';
|
||||
// },
|
||||
},
|
||||
{
|
||||
header: '구분',
|
||||
name: 'hldyFg',
|
||||
align: 'center',
|
||||
essential: true,
|
||||
},
|
||||
{ header: '휴일명', name: 'hldyNm', editor: 'text' },
|
||||
],
|
||||
|
||||
}
|
||||
},
|
||||
loadGrid: false,
|
||||
rowKey: null,
|
||||
edtingFinishFlag: 'Y',
|
||||
};
|
||||
@ -241,16 +169,19 @@ export default {
|
||||
await this.gridInit();
|
||||
},
|
||||
async search() {
|
||||
// await this.getRowGridData();
|
||||
await this.getRowGridData();
|
||||
},
|
||||
async gridInit() {
|
||||
// const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
// this.setGridOption({
|
||||
// gridKey: this.gridName,
|
||||
// value: Object.assign(Utility.defaultGridOption(gridHeight), {
|
||||
// scrollX: false,
|
||||
// }),
|
||||
// });
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
value: Object.assign(Utility.defaultGridOption(gridHeight), {
|
||||
scrollX: false, header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 37,
|
||||
}),
|
||||
});
|
||||
|
||||
// this.getRowGridData();
|
||||
},
|
||||
@ -350,86 +281,86 @@ export default {
|
||||
|
||||
this.loadGrid = false;
|
||||
|
||||
// let res = await this.postApiReturn({
|
||||
// apiKey: 'selectWorkCald',
|
||||
// resKey: 'workcaldData',
|
||||
// sendParam: {
|
||||
// blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId,
|
||||
// yymm: this.chkFromDt,
|
||||
// comId: this.comId,
|
||||
// },
|
||||
// });
|
||||
let res = await this.postApiReturn({
|
||||
apiKey: 'selectWorkCald',
|
||||
resKey: 'workcaldData',
|
||||
sendParam: {
|
||||
blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId,
|
||||
yymm: this.chkFromDt,
|
||||
comId: this.comId,
|
||||
},
|
||||
});
|
||||
|
||||
// let res2 = await this.postApiReturn({
|
||||
// apiKey: 'selectWorkCaldDetl',
|
||||
// resKey: 'workcaldDetlData',
|
||||
// sendParam: {
|
||||
// blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId,
|
||||
// yymm: this.chkFromDt,
|
||||
// comId: this.comId,
|
||||
// },
|
||||
// });
|
||||
let res2 = await this.postApiReturn({
|
||||
apiKey: 'selectWorkCaldDetl',
|
||||
resKey: 'workcaldDetlData',
|
||||
sendParam: {
|
||||
blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId,
|
||||
yymm: this.chkFromDt,
|
||||
comId: this.comId,
|
||||
},
|
||||
});
|
||||
|
||||
// for (var i = 0; i < res2.length; i++) {
|
||||
// if (
|
||||
// !(
|
||||
// res2[i].hldyNm == null ||
|
||||
// res2[i].hldyNm == '토요일' ||
|
||||
// res2[i].hldyNm == '일요일'
|
||||
// )
|
||||
// ) {
|
||||
// for (var j = i + 1; j < res2.length; j++) {
|
||||
// if (res2[i].hldyNm == res2[j].hldyNm) {
|
||||
// res2[i].hldyNm = '';
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
for (var i = 0; i < res2.length; i++) {
|
||||
if (
|
||||
!(
|
||||
res2[i].hldyNm == null ||
|
||||
res2[i].hldyNm == '토요일' ||
|
||||
res2[i].hldyNm == '일요일'
|
||||
)
|
||||
) {
|
||||
for (var j = i + 1; j < res2.length; j++) {
|
||||
if (res2[i].hldyNm == res2[j].hldyNm) {
|
||||
res2[i].hldyNm = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// res = res.map(item => {
|
||||
// const dt = this.$dayjs(item.dt.split(' ')[0]); // YYYY-MM-DD
|
||||
// const dtNm = dt.format('ddd'); // 요일
|
||||
// const newItem = {
|
||||
// ...item,
|
||||
// dtNm: dtNm,
|
||||
// hldyNm: item.hldyNm ? item.hldyNm : '',
|
||||
// rowStat: null,
|
||||
// };
|
||||
// return newItem;
|
||||
// });
|
||||
res = res.map(item => {
|
||||
const dt = this.$dayjs(item.dt.split(' ')[0]); // YYYY-MM-DD
|
||||
const dtNm = dt.format('ddd'); // 요일
|
||||
const newItem = {
|
||||
...item,
|
||||
dtNm: dtNm,
|
||||
hldyNm: item.hldyNm ? item.hldyNm : '',
|
||||
rowStat: null,
|
||||
};
|
||||
return newItem;
|
||||
});
|
||||
|
||||
// this.loadGrid = true;
|
||||
// this.setPageData({ isFind: false });
|
||||
this.loadGrid = true;
|
||||
this.setPageData({ isFind: false });
|
||||
|
||||
// this.setGridColumn({
|
||||
// gridKey: this.gridName,
|
||||
// value: myColumns,
|
||||
// });
|
||||
this.setGridColumn({
|
||||
gridKey: this.gridName,
|
||||
value: myColumns,
|
||||
});
|
||||
|
||||
// this.setGridData({
|
||||
// gridKey: this.gridName,
|
||||
// value: res,
|
||||
// });
|
||||
this.setGridData({
|
||||
gridKey: this.gridName,
|
||||
value: res,
|
||||
});
|
||||
|
||||
// this.setPageData({ planData: res2 });
|
||||
this.setPageData({ planData: res2 });
|
||||
|
||||
// // 첫번째 row 선택상태
|
||||
// this.$nextTick(() => {
|
||||
// this.$refs[this.gridName + this.myPrgmId].focus({
|
||||
// //rowKey: 0,
|
||||
// rowKey:
|
||||
// this.pageData.rowGridSelectKey == '' ||
|
||||
// this.pageData.rowGridSelectKey == null
|
||||
// ? 0
|
||||
// : this.pageData.rowGridSelectKey ==
|
||||
// this.$refs[this.gridName + this.myPrgmId].getData().length - 1
|
||||
// ? this.pageData.rowGridSelectKey
|
||||
// : 0,
|
||||
// columnName: 'dt',
|
||||
// setScroll: true,
|
||||
// });
|
||||
// this.setPageData({ isFind: false });
|
||||
// });
|
||||
// 첫번째 row 선택상태
|
||||
this.$nextTick(() => {
|
||||
this.$refs[this.gridName + this.myPrgmId].focus({
|
||||
//rowKey: 0,
|
||||
rowKey:
|
||||
this.pageData.rowGridSelectKey == '' ||
|
||||
this.pageData.rowGridSelectKey == null
|
||||
? 0
|
||||
: this.pageData.rowGridSelectKey ==
|
||||
this.$refs[this.gridName + this.myPrgmId].getData().length - 1
|
||||
? this.pageData.rowGridSelectKey
|
||||
: 0,
|
||||
columnName: 'dt',
|
||||
setScroll: true,
|
||||
});
|
||||
this.setPageData({ isFind: false });
|
||||
});
|
||||
},
|
||||
async getRowData(data, gridName) {
|
||||
this.setGridSelectData({
|
||||
@ -604,4 +535,17 @@ select.selectbox {
|
||||
border-width: 0px;
|
||||
// box-sizing: border-box;
|
||||
}
|
||||
|
||||
::v-deep {
|
||||
.custom-vc-calender {
|
||||
.vc-header {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.vc-weeks {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -1,33 +1,65 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<CommonPageTitle/>
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="4">
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'시스템구분'"
|
||||
dataKey="sysDivCd"
|
||||
:labelCols="12"
|
||||
:textCols="12"
|
||||
:sendParam="{ commGrpCd: 'CO_SYSDIV', useFg: '1' }"
|
||||
:addAll="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="4">
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'사용여부'"
|
||||
:labelCols="12"
|
||||
:textCols="12"
|
||||
:dataKey="'useFg'"
|
||||
customClass="select-large"
|
||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="4" class="text-right">
|
||||
<BtnSearch @click="search" />
|
||||
<v-col :cols="3">
|
||||
<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-row>
|
||||
<v-row align="center" no-gutters>
|
||||
<!-- <v-row align="center" no-gutters>
|
||||
<v-col :cols="4">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
@ -48,7 +80,7 @@
|
||||
:textCols="8"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-row> -->
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -85,7 +117,7 @@
|
||||
<v-card class="pb-5">
|
||||
<v-card-title>공통그룹코드 상세</v-card-title>
|
||||
<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-for="item in items"
|
||||
:key="item.id"
|
||||
@ -132,6 +164,7 @@ import Form from '~/components/common/form/Form';
|
||||
import CommCdTab from '@/components/pages/comm/CommCdTab';
|
||||
import Grid from '~/components/common/Grid';
|
||||
import Utility from '~/plugins/utility';
|
||||
import PageTitle from "~/components/common/PageTitle";
|
||||
|
||||
let myTitle;
|
||||
let myPrgmId;
|
||||
@ -158,6 +191,7 @@ export default {
|
||||
Form,
|
||||
CommCdTab,
|
||||
Grid,
|
||||
PageTitle
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -229,6 +263,9 @@ export default {
|
||||
|
||||
const myOptions = {
|
||||
scrollX: false,
|
||||
header: {
|
||||
height: 38,
|
||||
},
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
@ -241,7 +278,7 @@ export default {
|
||||
{
|
||||
header: '시스템구분',
|
||||
name: 'sysDivCd',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let commCdNm = '';
|
||||
if (sysCdList.length > 0) {
|
||||
@ -278,7 +315,7 @@ export default {
|
||||
{
|
||||
header: '사용여부',
|
||||
name: 'useFg',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
const newValue = _this.pageData.useFgList.filter(
|
||||
item => item.commCd == value,
|
||||
@ -326,7 +363,7 @@ export default {
|
||||
gridKey: this.gridName,
|
||||
value: newRes,
|
||||
});
|
||||
this.loadGrid = true;
|
||||
this.loadGrid = true;
|
||||
this.$nextTick(() => {
|
||||
if (newRes.length > 0) {
|
||||
this.$refs[this.gridName].focus({
|
||||
@ -554,7 +591,10 @@ const myDetail = [
|
||||
valueNm: 'commGrpCd',
|
||||
disabled: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pr-2',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
@ -563,7 +603,10 @@ const myDetail = [
|
||||
valueNm: 'commGrpNm',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pl-2',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
@ -572,7 +615,10 @@ const myDetail = [
|
||||
valueNm: 'sysDivCd',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pr-2 mt-3',
|
||||
list: 'sysDivCdList',
|
||||
itemText: 'commCdNm',
|
||||
itemValue: 'commCd',
|
||||
@ -584,7 +630,10 @@ const myDetail = [
|
||||
valueNm: 'useFg',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pl-2 mt-10',
|
||||
value: { '1': true, '0': false },
|
||||
required: true,
|
||||
},
|
||||
@ -594,7 +643,10 @@ const myDetail = [
|
||||
valueNm: 'rmrk',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
iconShow: true,
|
||||
class: 'py-2 pr-2 mt-3',
|
||||
},
|
||||
];
|
||||
</script>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<common-page-title />
|
||||
<CommonPageTitle />
|
||||
<!-- 리스트 페이지 시작 -->
|
||||
<div v-if="pageActionFlag == 'list'" class="h1001">
|
||||
<v-card class="" >
|
||||
@ -16,11 +16,9 @@
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="12" ref="contents" class="mt-5" style="min-height: calc(100% - 76px);">
|
||||
<div ref="gridParent" class="h100 px-50">
|
||||
<!-- <component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData" /> -->
|
||||
<div ref="gridParent" class="px-50" style="min-height: 70vh;">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData" :selectedRowDataWatchFlag="true" />
|
||||
@getRowsData="getRowData" />
|
||||
</div>
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -29,7 +27,7 @@
|
||||
</div>
|
||||
<!-- 리스트 페이지 끝 -->
|
||||
<!-- 상세보기 페이지 시작 -->
|
||||
<div v-if="pageActionFlag == 'view'" class="h1001">
|
||||
<div v-if="pageActionFlag == 'view'" >
|
||||
<v-card>
|
||||
<v-row class="pa-5">
|
||||
<v-col :cols="12" class="d-flex align-center justify-space-between ">
|
||||
@ -47,25 +45,25 @@
|
||||
<a-button @click="viewPageButtonGroupClickEvent('delete')" type="danger" ghost icon="delete">삭제</a-button>
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col :cols="12">
|
||||
<p class="custom-title-3 mb-2"> 제목 </p>
|
||||
<v-text-field v-model="viewActionData.title" class="v-input__custom" hide-details :readonly="true">
|
||||
</v-text-field>
|
||||
<v-col :cols="12" class="mt-5">
|
||||
<v-card-title class="custom-title-6 pa-0">{{ viewActionData.title }}</v-card-title>
|
||||
</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"
|
||||
: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 :cols="6">
|
||||
<p class="custom-title-3 mb-2">파일목록</p>
|
||||
<v-col :cols="6" class="mt-5">
|
||||
<v-card-title class="custom-title-7 pa-0">
|
||||
파일목록
|
||||
</v-card-title>
|
||||
<div v-for="fileData in viewActionData.fileData"
|
||||
:key="fileData.apndFileId"
|
||||
class="file-item">
|
||||
<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>
|
||||
<span class="file-item-name">{{ fileData.apndFileNm + '.' + fileData.apndFileExt }}</span>
|
||||
<span class="file-item-name ml-2">{{ fileData.apndFileNm + '.' + fileData.apndFileExt }}</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
@ -75,28 +73,24 @@
|
||||
</div>
|
||||
<!-- 상세보기 페이지 끝 -->
|
||||
<!-- 작성 페이지 시작 -->
|
||||
<div v-if="pageActionFlag == 'write'" class="h1001">
|
||||
<div v-if="pageActionFlag == 'write'" >
|
||||
<v-card>
|
||||
<div class="pa-5">
|
||||
<v-row class="pa-50">
|
||||
<v-col :cols="12" class="">
|
||||
<v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
|
||||
</v-col>
|
||||
<v-col :cols="12" class="custom-title-4-new mt-4">
|
||||
<p class="custom-title-3 mb-2">제목</p>
|
||||
<v-col :cols="12" class="mt-4">
|
||||
<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-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" />
|
||||
</v-col>
|
||||
|
||||
<v-col :cols="12" class="mt-2">
|
||||
<p class="custom-title-3 mb-2">
|
||||
파일첨부
|
||||
</p>
|
||||
</v-col>
|
||||
<v-col :cols="6">
|
||||
<v-col :cols="6" class="mt-5">
|
||||
<v-card-title class="custom-title-7 pa-0">파일첨부</v-card-title>
|
||||
<div class="" v-if="writeActionData.fileData">
|
||||
<div
|
||||
v-for="(fileData, index) in writeActionData.fileData"
|
||||
@ -132,25 +126,23 @@
|
||||
</div>
|
||||
<!-- 작성 페이지 끝 -->
|
||||
<!-- 답글 작성 페이지 시작 -->
|
||||
<div v-if="pageActionFlag == 'reply'" class="h1001">
|
||||
<div v-if="pageActionFlag == 'reply'" >
|
||||
<v-card class="pa-5">
|
||||
<v-row align="center" class="mt-0">
|
||||
<v-col :cols="12" class="">
|
||||
<v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
|
||||
</v-col>
|
||||
<v-col :cols="12">
|
||||
<p class="custom-title-3 mb-2">제목</p>
|
||||
<v-text-field v-model="replyActionData.title" class="v-input__custom" placeholder="제목" outlined
|
||||
<v-col :cols="12" class="mt-4">
|
||||
<v-card-title class="custom-title-7 pa-0">제목</v-card-title>
|
||||
<v-text-field v-model="replyActionData.title" class="v-input__custom" outlined
|
||||
hide-details>
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
<v-col :cols="12" style="height: calc(100vh - 270px);" class="mt-2">
|
||||
<editor ref="tuiReplyEditor" height="100%" initialEditType="wysiwyg" />
|
||||
</v-col>
|
||||
<v-col :cols="6" class="mt-4">
|
||||
<p class="custom-title-3 mb-2">
|
||||
파일첨부
|
||||
</p>
|
||||
<v-col :cols="6" class="mt-5">
|
||||
<v-card-title class="custom-title-7 pa-0">파일첨부</v-card-title>
|
||||
<div class="" v-if="replyActionData.fileData">
|
||||
<div
|
||||
v-for="(fileData, index) in replyActionData.fileData"
|
||||
@ -178,7 +170,7 @@
|
||||
</div>
|
||||
<!-- 답글 작성 페이지 끝 -->
|
||||
<!-- 수정 페이지 시작 -->
|
||||
<div v-if="pageActionFlag == 'update'" class="h1001">
|
||||
<div v-if="pageActionFlag == 'update'" >
|
||||
<v-card>
|
||||
<div class="pa-5">
|
||||
<v-row align="center" no-gutters>
|
||||
@ -186,16 +178,16 @@
|
||||
<v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
|
||||
</v-col>
|
||||
<v-col :cols="12" class="mt-4">
|
||||
<p class="custom-title-3 mb-2">제목</p>
|
||||
<v-text-field v-model="updateActionData.title" class="v-input__custom" placeholder="" hide-details outlined>
|
||||
<v-card-title class="custom-title-7 pa-0">제목</v-card-title>
|
||||
<v-text-field v-model="updateActionData.title" class="v-input__custom" hide-details outlined>
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
<v-col :cols="12" style="height: calc(90vh - 270px);" class="mt-4" >
|
||||
<editor ref="tuiUpdateEditor" height="100%" initialEditType="wysiwyg"
|
||||
:initialValue="updateActionData.content" />
|
||||
</v-col>
|
||||
<v-col :cols="6">
|
||||
<p class="pa-0 mb-2 custom-title-4-new-1">파일첨부</p>
|
||||
<v-col :cols="6" class="mt-5">
|
||||
<v-card-title class="custom-title-7 pa-0">파일첨부</v-card-title>
|
||||
<div class="" v-if="updateActionData.fileData">
|
||||
<div
|
||||
v-for="(fileData, index) in updateActionData.fileData"
|
||||
@ -406,7 +398,6 @@ export default {
|
||||
this.getGridData();
|
||||
},
|
||||
gridInit() {
|
||||
this.loadGrid = false;
|
||||
const gridHeight = this.$refs.contents.offsetHeight - 76;
|
||||
|
||||
const myOptions = {};
|
||||
@ -470,13 +461,6 @@ export default {
|
||||
gridKey: this.gridName,
|
||||
value: columnList,
|
||||
});
|
||||
|
||||
// // -----------------------TEST------------------
|
||||
// this.dataPathMock[this.gridName] = {
|
||||
// column: columnList,
|
||||
// data: dataPathDataExample,
|
||||
// }
|
||||
// // -----------------------END TEST--------------
|
||||
this.getGridData();
|
||||
},
|
||||
async getGridData() {
|
||||
@ -491,26 +475,15 @@ export default {
|
||||
resKey: 'postData',
|
||||
sendParam: params,
|
||||
});
|
||||
|
||||
// console.log('----------DEBUG--------res: ', res);
|
||||
const newRes = res.map(item => {
|
||||
const newObj = {
|
||||
...item,
|
||||
rowStat: null,
|
||||
dataSetId: item.dataSetId,
|
||||
dataSetNm: item.dataSetNm,
|
||||
useFg: item.useFg === '1' ? true : false, // 화면 개발 편의를 위해 boolean 타입으로 교체, 저장시 "1", "0" 으로 바꿔 보내야 함
|
||||
};
|
||||
return newObj;
|
||||
});
|
||||
|
||||
|
||||
this.setGridData({
|
||||
gridKey: this.gridName,
|
||||
value: newRes,
|
||||
value: res,
|
||||
});
|
||||
this.$nextTick(() => {
|
||||
this.loadGrid = true;
|
||||
});
|
||||
|
||||
this.setPageData({ isFind: false });
|
||||
this.loadGrid = true;
|
||||
},
|
||||
getRowData(data) {
|
||||
this.selectedRowKey = data.rowKey;
|
||||
@ -1073,4 +1046,19 @@ const dataPathDataExample = getPathDataExample({
|
||||
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>
|
||||
|
@ -16,7 +16,7 @@
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="4">
|
||||
<v-col :cols="3">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="프로그램명"
|
||||
@ -50,17 +50,16 @@
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div style="min-height: 60vh">
|
||||
<div ref="gridParent" class="px-5 h100">
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:gridName="gridName"
|
||||
@getRowsData="getRowData"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
<div ref="gridParent" style="height: 60vh">
|
||||
<!-- <div ref="gridParent" class="px-5 h100">
|
||||
</div> -->
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:gridName="gridName"
|
||||
@getRowsData="getRowData"
|
||||
/>
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
@ -262,8 +261,6 @@ export default {
|
||||
});
|
||||
|
||||
// this.getRowGridData();
|
||||
|
||||
this.loadGrid = true;
|
||||
},
|
||||
async search() {
|
||||
await this.getRowGridData();
|
||||
@ -296,7 +293,8 @@ export default {
|
||||
gridKey: this.gridName,
|
||||
value: newRes,
|
||||
});
|
||||
|
||||
this.loadGrid = true;
|
||||
|
||||
this.$nextTick(() => {
|
||||
if (newRes.length > 0) {
|
||||
this.$refs[this.gridName].focus({
|
||||
@ -316,6 +314,12 @@ export default {
|
||||
});
|
||||
},
|
||||
async getRowData(data, gridName) {
|
||||
// console.log("-----------------------DEBUG--getRowData--------------", {
|
||||
// gridKey: gridName,
|
||||
// gridSelect: true,
|
||||
// rowGridSelectKey: data.rowKey,
|
||||
// rowGridSelectData: data,
|
||||
// });
|
||||
this.setGridSelectData({
|
||||
gridKey: gridName,
|
||||
gridSelect: true,
|
||||
@ -327,6 +331,7 @@ export default {
|
||||
rowGridSelectKey: data.rowKey,
|
||||
rowGridSelectData: data,
|
||||
});
|
||||
|
||||
},
|
||||
compareData(type, newDt) {
|
||||
if (this.selectedCommCdData[type] == newDt) {
|
||||
|
@ -64,7 +64,6 @@
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -137,24 +136,10 @@ export default {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
tab: null,
|
||||
detailList: myDetail,
|
||||
initedFlag: false,
|
||||
dataPathMock : {
|
||||
'rowGrid': {
|
||||
column: [
|
||||
{ header: '추가 정보 그룹', name: 'addGrpId', align: 'left' },
|
||||
{ header: '추가 정보 ID', name: 'addInfoId', align: 'left' },
|
||||
{ header: '추가 정보 명', name: 'addInfoNm', align: 'left' },
|
||||
{ header: 'Data 형식', name: 'addInfoDataKind', align: 'center' },
|
||||
{ header: '사용여부', name: 'useFg', align: 'center' },
|
||||
],
|
||||
data: dataMockExample,
|
||||
defaultRow: dataMockExample,
|
||||
option: {},
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -642,43 +627,4 @@ const myDetail = [
|
||||
placeholder: '시스템 자동입력',
|
||||
},
|
||||
];
|
||||
|
||||
const dataMockExample = [
|
||||
{
|
||||
addGrpId: 'GRP001',
|
||||
addInfoId: 'INFO001',
|
||||
addInfoNm: '온도 센서',
|
||||
addInfoDataKind: 'DATA01',
|
||||
useFg: true,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP002',
|
||||
addInfoId: 'INFO002',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA02',
|
||||
useFg: false,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP003',
|
||||
addInfoId: 'INFO003',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA03',
|
||||
useFg: false,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP004',
|
||||
addInfoId: 'INFO004',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA04',
|
||||
useFg: false,
|
||||
},
|
||||
{
|
||||
addGrpId: 'GRP005',
|
||||
addInfoId: 'INFO005',
|
||||
addInfoNm: '압력 센서',
|
||||
addInfoDataKind: 'DATA05',
|
||||
useFg: false,
|
||||
},
|
||||
];
|
||||
|
||||
</script>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<v-row ref="searchFilter">
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter" class="mt-2">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
@ -16,8 +17,8 @@
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row ref="contents">
|
||||
<v-col :cols="5" style="height:100%">
|
||||
<v-row ref="contents" class="pt-2">
|
||||
<v-col :cols="5" style="height:100%" class="pr-2">
|
||||
<v-card class="pb-5">
|
||||
<div class="d-flex align-center justify-space-between pa-4">
|
||||
<v-card-title class="pa-0 custom-title-4">효율지표 리스트</v-card-title>
|
||||
@ -32,7 +33,7 @@
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="7" style="height:100%">
|
||||
<v-col :cols="7" style="height:100%" class="pl-2">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="custom-title-4 pa-4 pb-2">효율지표 상세
|
||||
</v-card-title>
|
||||
|
@ -3,8 +3,8 @@
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
<v-col :cols="2.5">
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@ -12,11 +12,9 @@
|
||||
dataKey="searchLocKind"
|
||||
:sendParam="{ commGrpCd: 'EM_LOC_KIND', useFg: '1' }"
|
||||
:addAll="true"
|
||||
:iconShow="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@ -24,12 +22,10 @@
|
||||
dataKey="searchEccKind"
|
||||
:sendParam="{ commGrpCd: 'EM_ECC_KIND', useFg: '1' }"
|
||||
:addAll="true"
|
||||
:iconShow="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<!-- <v-col :cols="3">
|
||||
사업장
|
||||
<v-col :cols="3">
|
||||
<!-- 사업장 -->
|
||||
<div style="visibility:hidden">
|
||||
<component
|
||||
:is="'SelectBlocMstr'"
|
||||
@ -37,8 +33,13 @@
|
||||
:parentPrgmId="myPrgmId"
|
||||
/>
|
||||
</div>
|
||||
</v-col> -->
|
||||
<v-col :cols="2.5">
|
||||
</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">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@ -46,23 +47,18 @@
|
||||
dataKey="useFg"
|
||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
||||
:addAll="true"
|
||||
:iconShow="true"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
<v-col :cols="6">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="공정명"
|
||||
valueNm="eccNm"
|
||||
:labelCols="12"
|
||||
:textCols="12"
|
||||
:labelCols="2"
|
||||
:textCols="9"
|
||||
:searchOption="true"
|
||||
:iconShow="true"
|
||||
customClass="input-large"
|
||||
/>
|
||||
</v-col>
|
||||
<BtnSearch @click="search" size="large" />
|
||||
</v-row>
|
||||
</v-card>
|
||||
</v-col>
|
||||
@ -79,17 +75,16 @@
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
</div>
|
||||
<div class="px-5" style="min-height:calc(100% - 76px)">
|
||||
<div ref="gridParent" class="w100 h100 pb-2">
|
||||
<div class="px-5" style="height:calc(100% - 76px)">
|
||||
<div ref="gridParent" class="w100 h100">
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||
:selectedRowDataWatchFlag="true"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -196,15 +191,13 @@ export default {
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: false,
|
||||
tab: null,
|
||||
selectedRowKey: null,
|
||||
// rowSelectionStatus: {},
|
||||
dataPathMock : { },
|
||||
items: [
|
||||
{ name: '공정 정보', id: 'eccBaseInfoTab', disabledFlag: false },
|
||||
{ name: '공정 추가 정보', id: 'eccAddInfoTab', disabledFlag: false },
|
||||
{ name: '공정 연결 정보', id: 'eccIaoTab', disabledFlag: false },
|
||||
],
|
||||
detailList: myDetail,
|
||||
loadGrid: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -320,23 +313,11 @@ export default {
|
||||
},
|
||||
mounted() {
|
||||
this.init();
|
||||
this.$nextTick(() => {
|
||||
// const checkbox = document.getElementById('headerCheckbox');
|
||||
// if (checkbox) {
|
||||
// checkbox.addEventListener('change', this.handleHeaderCheckboxChange);
|
||||
// }
|
||||
});
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.chkOpenTabList({ key: 'destroy', prgmId: myPrgmId });
|
||||
},
|
||||
methods: {
|
||||
handleHeaderCheckboxChange(event) {
|
||||
const checked = event.target.checked;
|
||||
this.dataPathMock.rowGrid.data.forEach(row => {
|
||||
row.selected = checked;
|
||||
});},
|
||||
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
}),
|
||||
@ -351,41 +332,7 @@ export default {
|
||||
blocId: this.userInfo.blocId,
|
||||
});
|
||||
},
|
||||
gridInitTest() {
|
||||
const rowGrid = {
|
||||
column: [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{ header: '공정 정보', name: 'eccNm', align: 'left' },
|
||||
{ header: '현재 상태', name: 'status', align: 'center' },
|
||||
{ header: '공정 유형', name: 'eccKind', align: 'left' },
|
||||
{ header: '사용 여부', name: 'useFg', align: 'center' },
|
||||
],
|
||||
data: dataMockExample,
|
||||
defaultRow: dataMockExample,
|
||||
option: {
|
||||
...gridOptions,
|
||||
},
|
||||
}
|
||||
this.dataPathMock = {rowGrid};
|
||||
this.$nextTick(() => {
|
||||
this.loadGrid = true;
|
||||
});
|
||||
},
|
||||
gridInit() {
|
||||
// Test
|
||||
this.gridInitTest(); return;
|
||||
// End test
|
||||
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
const gridWidth = this.$refs.gridParent.offsetWidth;
|
||||
|
||||
@ -404,6 +351,17 @@ export default {
|
||||
|
||||
const _this = this;
|
||||
const myColumns = [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{ header: '회사 ID', name: 'comId', hidden: true },
|
||||
{
|
||||
header: '공정 명',
|
||||
@ -598,16 +556,6 @@ export default {
|
||||
});
|
||||
},
|
||||
async getRowData(data) {
|
||||
|
||||
//Progess and fake radio
|
||||
// const rowKey = data.rowKey;
|
||||
// this.selectedRowKey = rowKey;
|
||||
// Object.keys(this.rowSelectionStatus).forEach(key => {
|
||||
// this.$set(this.rowSelectionStatus, key, false);
|
||||
// });
|
||||
// this.$set(this.rowSelectionStatus, rowKey, true);
|
||||
|
||||
|
||||
this.setEccAddInfo(data);
|
||||
this.setEccIao(data);
|
||||
this.setGridSelectData({
|
||||
@ -623,9 +571,6 @@ export default {
|
||||
rowGridSelectKey: data.rowKey,
|
||||
rowGridSelectData: Object.assign({}, data),
|
||||
});
|
||||
//fake radio need recheck
|
||||
// this.$refs[this.gridName]?.repaint?.();
|
||||
|
||||
},
|
||||
async setEccAddInfo(data) {
|
||||
this.setPageData({
|
||||
@ -1070,142 +1015,4 @@ const myDetail = [
|
||||
value: { '1': true, '0': false },
|
||||
},
|
||||
];
|
||||
|
||||
const dataMockExample = [
|
||||
{
|
||||
eccId: 'ECC000001',
|
||||
eccNm: 'EGP_HVAC_LT_CH001',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC000002',
|
||||
eccNm: 'B01',
|
||||
status: '대기',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC000005',
|
||||
eccNm: 'B01-1',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC000009',
|
||||
eccNm: 'B01-1-1',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000010',
|
||||
eccNm: 'B01-1-2',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000011',
|
||||
eccNm: 'B01-1-3',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
eccId: 'ECC000006',
|
||||
eccNm: 'B01-2',
|
||||
status: '점검중',
|
||||
eccKind: '공정',
|
||||
useFg: '0',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC0000013',
|
||||
eccNm: 'B01-2-1',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000014',
|
||||
eccNm: 'B01-1-2',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000015',
|
||||
eccNm: 'B01-1-3',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
eccId: 'ECC000007',
|
||||
eccNm: 'B01-3',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
_children: [
|
||||
{
|
||||
eccId: 'ECC000009',
|
||||
eccNm: 'B01-3-1',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000010',
|
||||
eccNm: 'B01-3-2',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
{
|
||||
eccId: 'ECC0000011',
|
||||
eccNm: 'B01-3-3',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1'
|
||||
},
|
||||
]
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
eccId: 'ECC000003',
|
||||
eccNm: 'B02',
|
||||
status: '운영중',
|
||||
eccKind: '공정',
|
||||
useFg: '1',
|
||||
},
|
||||
{
|
||||
eccId: 'ECC000004',
|
||||
eccNm: 'B03',
|
||||
status: '점검중',
|
||||
eccKind: '공정',
|
||||
useFg: '0',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
const gridOptions = {
|
||||
treeColumnOptions: {
|
||||
name: 'eccNm', // Showing tree table
|
||||
useIcon: false, // Not using icon
|
||||
indentWidth: 10,// spacing when showing children
|
||||
},
|
||||
header: {
|
||||
height: 40,
|
||||
},
|
||||
rowHeight: 35,
|
||||
showCheckbox: false,
|
||||
};
|
||||
</script>
|
||||
</script>
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<v-row ref="searchFilter">
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter" class="mt-2">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
@ -19,36 +20,35 @@
|
||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }" :addAll="true" :labelCols="12"
|
||||
:textCols="12" :customClass="'select-large'" :iconShow="true" />
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
<v-col :cols="2.5" class="pr-4">
|
||||
<InputText :parentPrgmId="myPrgmId" label="검침개소명" valueNm="readPlcNm" :labelCols="12"
|
||||
:textCols="12" :searchOption="true" :customClass="'input-large'" :iconShow="true" />
|
||||
</v-col>
|
||||
|
||||
<BtnSearch @click="search" size="large" />
|
||||
<BtnSearch @click="search" size="large" class="mr-2" />
|
||||
|
||||
</v-row>
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row ref="contents" class="mt-4">
|
||||
<v-col :cols="5" class="h100">
|
||||
<v-row ref="contents" class="mt-3">
|
||||
<v-col :cols="5" class="h100 pr-2">
|
||||
<v-card class="pb-5">
|
||||
<div class="d-flex align-center justify-space-between pa-4 pb-6">
|
||||
<v-card-title class="pa-0 custom-title-4">검침개소 정보</v-card-title>
|
||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
|
||||
:btnActionsFnc="btnActions" />
|
||||
</div>
|
||||
<div class="px-4">
|
||||
<div class="px-4" style="height:calc(100% - 76px)">
|
||||
<div ref="gridParent" class="w100 h100">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true"
|
||||
:dataPath="dataPathExample" />
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true" />
|
||||
</div>
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="7" class="h100">
|
||||
<v-col :cols="7" class="h100 pl-2">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="custom-title-4 pb-1 pa-4">검침개소 상세
|
||||
</v-card-title>
|
||||
@ -134,7 +134,7 @@ export default {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
tab: null,
|
||||
isImgTabDisabled: false,
|
||||
items: [
|
||||
@ -157,47 +157,6 @@ export default {
|
||||
],
|
||||
detailList: myDetail,
|
||||
defaultUseFg: 1,
|
||||
dataPathExample: {
|
||||
"rowGrid": {
|
||||
data: sampleData,
|
||||
column: [
|
||||
{
|
||||
header: '',
|
||||
name: '',
|
||||
align: 'center',
|
||||
width: 50,
|
||||
formatter: (props) => {
|
||||
return `<label class="custom-radio">
|
||||
<span class="radio-mark"></span>
|
||||
</label>`;
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '검침개소명',
|
||||
name: 'readPlcNm',
|
||||
align: 'left',
|
||||
minWidth: 400,
|
||||
},
|
||||
{
|
||||
header: '개소 종류',
|
||||
name: 'plcKind',
|
||||
minWidth: 100,
|
||||
align: 'center',
|
||||
|
||||
},
|
||||
{
|
||||
header: '사용 여부',
|
||||
name: 'useFg',
|
||||
minWidth: 100,
|
||||
align: 'center',
|
||||
|
||||
},
|
||||
|
||||
],
|
||||
option: myOptions,
|
||||
|
||||
}
|
||||
}
|
||||
// loadTree: false
|
||||
};
|
||||
},
|
||||
@ -312,18 +271,18 @@ export default {
|
||||
},
|
||||
async initData() {
|
||||
let ercList = [];
|
||||
// const res = await this.postApiReturn({
|
||||
// apiKey: 'selectErcInfo',
|
||||
// resKey: 'ercInfoData',
|
||||
// sendParam: {
|
||||
// blocId: this.userInfo.blocId,
|
||||
// },
|
||||
// });
|
||||
// res.forEach(item => {
|
||||
// const it = { text: item.ercNm, value: item.ercId };
|
||||
// ercList.push(it);
|
||||
// });
|
||||
// this.setPageData({ ercNmList: ercList });
|
||||
const res = await this.postApiReturn({
|
||||
apiKey: 'selectErcInfo',
|
||||
resKey: 'ercInfoData',
|
||||
sendParam: {
|
||||
blocId: this.userInfo.blocId,
|
||||
},
|
||||
});
|
||||
res.forEach(item => {
|
||||
const it = { text: item.ercNm, value: item.ercId };
|
||||
ercList.push(it);
|
||||
});
|
||||
this.setPageData({ ercNmList: ercList });
|
||||
},
|
||||
gridInit() {
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
@ -334,10 +293,12 @@ export default {
|
||||
resizable: true,
|
||||
},
|
||||
treeColumnOptions: {
|
||||
name: 'eccNm', // Showing tree table
|
||||
useIcon: false, // Not using icon
|
||||
indentWidth: 10,
|
||||
name: 'readPlcNm',
|
||||
},
|
||||
header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 37,
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
@ -346,12 +307,22 @@ export default {
|
||||
|
||||
const _this = this;
|
||||
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: '검침개소명',
|
||||
name: 'readPlcNm',
|
||||
align: 'left',
|
||||
minWidth: 400,
|
||||
minWidth: 350,
|
||||
},
|
||||
{
|
||||
header: '검침개소 ID',
|
||||
@ -955,62 +926,50 @@ const defaultData = {
|
||||
};
|
||||
|
||||
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: '미사용',
|
||||
},
|
||||
{
|
||||
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: '미사용',
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
|
||||
const myOptions = {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
treeColumnOptions: {
|
||||
name: 'readPlcNm', // Showing tree table
|
||||
useIcon: false, // Not using icon
|
||||
indentWidth: 10,
|
||||
},
|
||||
}
|
||||
|
||||
const myDetail = [
|
||||
{
|
||||
type: 'InputText',
|
||||
|
@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<CommonPageTitle/>
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -12,6 +13,7 @@
|
||||
:textCols="12"
|
||||
:labelCols="12"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:customClass="'select-large'"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
@ -22,6 +24,7 @@
|
||||
dataKey="searchErcKind"
|
||||
:sendParam="{ commGrpCd: 'EM_ERCKIND', useFg: '1' }"
|
||||
:addAll="true"
|
||||
:customClass="'select-large'"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
@ -34,13 +37,9 @@
|
||||
:addAll="true"
|
||||
:textCols="12"
|
||||
:labelCols="12"
|
||||
:customClass="'select-large'"
|
||||
/>
|
||||
</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">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
@ -49,8 +48,11 @@
|
||||
dataKey="searchChrgKind"
|
||||
:sendParam="{ commGrpCd: 'EM_ENGCHAGKIND', useFg: '1' }"
|
||||
:addAll="true"
|
||||
:customClass="'select-large'"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
@ -59,6 +61,7 @@
|
||||
dataKey="useFg"
|
||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
||||
:addAll="true"
|
||||
:customClass="'select-large'"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
@ -69,13 +72,19 @@
|
||||
:textCols="12"
|
||||
:labelCols="12"
|
||||
:searchOption="true"
|
||||
:customClass="'input-large'"
|
||||
/>
|
||||
</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-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row ref="contents" style="height: calc(100vh - 400px)">
|
||||
<v-row >
|
||||
<v-col :cols="5" class="h100">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="d-flex justify-space-between align-end">
|
||||
@ -105,7 +114,7 @@
|
||||
<v-col :cols="7" class="h100">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title>에너지원 상세</v-card-title>
|
||||
<div class="px-5" style="height:calc(100% - 70px)">
|
||||
<div class="px-5" style="min-height: auto;">
|
||||
<v-tabs v-model="tab">
|
||||
<v-tab
|
||||
v-for="item in items"
|
||||
@ -117,21 +126,21 @@
|
||||
</v-tabs>
|
||||
<v-tabs-items
|
||||
v-model="tab"
|
||||
style="height: calc(100% - 65px);"
|
||||
class="py-6"
|
||||
style="min-height: auto;"
|
||||
>
|
||||
<v-tab-item v-for="(item, idx) in items" :key="item.id">
|
||||
<v-tab-item v-for="(item, idx) in items" :key="item.id">
|
||||
<component
|
||||
v-if="item.id == 'ercInfoTab'"
|
||||
:is="'Form'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:detailList="detailList"
|
||||
@gridEditingFinish="gridEditingFinish"
|
||||
v-if="item.id == 'ercInfoTab'"
|
||||
:is="'Form'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:detailList="detailList"
|
||||
@gridEditingFinish="gridEditingFinish"
|
||||
/>
|
||||
<ErcChrgInfoTab
|
||||
v-if="item.id == 'ercChrgInfoTab'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:innerTabGridInfo="{ tab, idx }"
|
||||
v-if="item.id == 'ercChrgInfoTab'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:innerTabGridInfo="{ tab, idx }"
|
||||
/>
|
||||
</v-tab-item>
|
||||
</v-tabs-items>
|
||||
@ -323,6 +332,9 @@ export default {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
header: {
|
||||
height: 38,
|
||||
},
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
@ -332,12 +344,12 @@ export default {
|
||||
const _this = this;
|
||||
const myColumns = [
|
||||
{ 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: 'ercKind',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = _this.pageData.ercKindList.filter(
|
||||
@ -450,7 +462,7 @@ export default {
|
||||
header: '사용 여부',
|
||||
name: 'useFg',
|
||||
width: 95,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
value = value === true ? '1' : '0';
|
||||
const newValue = _this.pageData.useFgList.filter(
|
||||
@ -479,74 +491,24 @@ export default {
|
||||
this.loadGrid = true;
|
||||
},
|
||||
async getRowGridData() {
|
||||
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
|
||||
}
|
||||
]
|
||||
;
|
||||
let res = [];
|
||||
|
||||
// if (this.pageData.blocMstrList.length > 0) {
|
||||
// res = await this.postApiReturn({
|
||||
// apiKey: 'selectErcInfo',
|
||||
// resKey: 'ercInfoData',
|
||||
// sendParam: {
|
||||
// blocId: this.pageData.blocMstrList[this.pageData.blocId].blocId,
|
||||
// ercKind: this.pageData.searchErcKind,
|
||||
// readObjId: this.pageData.searchReadObj,
|
||||
// chrgKind: this.pageData.searchChrgKind,
|
||||
// useFg: this.pageData.useFg,
|
||||
// ercNmLike: this.pageData.ercNm,
|
||||
// },
|
||||
// });
|
||||
// } else {
|
||||
// this.setPageData({ isFind: false });
|
||||
// }
|
||||
if (this.pageData.blocMstrList.length > 0) {
|
||||
res = await this.postApiReturn({
|
||||
apiKey: 'selectErcInfo',
|
||||
resKey: 'ercInfoData',
|
||||
sendParam: {
|
||||
blocId: this.pageData.blocMstrList[this.pageData.blocId].blocId,
|
||||
ercKind: this.pageData.searchErcKind,
|
||||
readObjId: this.pageData.searchReadObj,
|
||||
chrgKind: this.pageData.searchChrgKind,
|
||||
useFg: this.pageData.useFg,
|
||||
ercNmLike: this.pageData.ercNm,
|
||||
},
|
||||
});
|
||||
} else {
|
||||
this.setPageData({ isFind: false });
|
||||
}
|
||||
const newRes = res.map(item => {
|
||||
const newObj = {
|
||||
...item,
|
||||
@ -798,133 +760,8 @@ const defaultData = {
|
||||
/* data 세팅 */
|
||||
// 로컬 gridName 값과 동일한 이름으로 세팅
|
||||
rowGrid: {
|
||||
data: [
|
||||
{
|
||||
"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,
|
||||
data: [],
|
||||
column: [], // myColumns,
|
||||
option: {}, // myOptions
|
||||
defaultRow: {
|
||||
comId: '',
|
||||
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div ref="mainDiv" class="l-layout">
|
||||
<v-row ref="searchFilter">
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter" class="mt-2">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
@ -29,10 +30,10 @@
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row ref="contents">
|
||||
<v-col :cols="5" class="h100">
|
||||
<v-row ref="contents" class="mt-3">
|
||||
<v-col :cols="5" class="pr-2">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="d-flex align-center justify-space-between pa-4">
|
||||
<v-card-title class="d-flex align-center justify-space-between pa-5">
|
||||
물리량 리스트
|
||||
|
||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
|
||||
@ -44,12 +45,12 @@
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true"
|
||||
:preventFocusChangeEventFlag="true"
|
||||
:preventFocusChangeEventTargetGridList="editingGridList" :dataPath="dataPathExample" />
|
||||
:preventFocusChangeEventTargetGridList="editingGridList" />
|
||||
</div>
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="7" class="h100">
|
||||
<v-col :cols="7" class="pl-2">
|
||||
<v-card class="pb-5 px-4">
|
||||
<v-card-title class="px-0">물리량 상세</v-card-title>
|
||||
<v-row no-gutters>
|
||||
@ -113,7 +114,7 @@
|
||||
<component :is="'TextArea'" :parentPrgmId="myPrgmId" ref="TextArea" :item="calcDescItem" />
|
||||
</v-col>
|
||||
</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">
|
||||
<label for="">
|
||||
<v-icon small
|
||||
@ -121,13 +122,13 @@
|
||||
계산Argument
|
||||
</label>
|
||||
</v-col>
|
||||
<v-col :cols="6" class="py-2">
|
||||
<v-col :cols="6" class="py-2 pr-4">
|
||||
<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]" />
|
||||
</v-col>
|
||||
<v-col :cols="4"> </v-col>
|
||||
<v-col :cols="12" class="py-2" align="right">
|
||||
<!-- <v-col :cols="4"> </v-col> -->
|
||||
<v-col :cols="6" class="py-2" align="right">
|
||||
<a-button type="primary" @click="btnAction('add')" class="v-btn-add-text mr-1" icon="plus">추가</a-button>
|
||||
<a-button type="danger" @click="btnAction('remove')" ghost danger icon="delete">삭제</a-button>
|
||||
</v-col>
|
||||
@ -136,7 +137,7 @@
|
||||
<v-col :cols="12" style="height:100%">
|
||||
<div ref="gridParent2" style="height:100%">
|
||||
<component :ref="gridName2" :is="loadGrid2 ? 'Grid' : null" :gridName="gridName2"
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData2" :dataPath="dataPathExample2" />
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData2" />
|
||||
</div>
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -223,115 +224,8 @@ export default {
|
||||
formatterSelectList01: [],
|
||||
formatterSelectList02: [],
|
||||
|
||||
loadGrid: true,
|
||||
dataPathExample: {
|
||||
"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,
|
||||
loadGrid: false,
|
||||
loadGrid2: false,
|
||||
detailList: myDetail,
|
||||
|
||||
readOnlyValueList: [
|
||||
@ -1001,6 +895,12 @@ export default {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 'auto',
|
||||
scrollX: true,
|
||||
scrollY: true,
|
||||
};
|
||||
|
||||
this.setGridOption({
|
||||
@ -1014,7 +914,7 @@ export default {
|
||||
header: '물리량 ID',
|
||||
name: 'pysclQtyId',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
},
|
||||
{ header: '설비그룹 ID', name: 'eqpmGrpId', hidden: true },
|
||||
{ header: 'argCnt', name: 'argCnt', hidden: true },
|
||||
@ -1066,6 +966,10 @@ export default {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 'auto',
|
||||
};
|
||||
|
||||
this.setGridOption({
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div ref="mainDiv" class="l-layout">
|
||||
<PageTitle/>
|
||||
<CommonPageTitle/>
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -359,7 +359,7 @@ const myDetail = [
|
||||
label: '설비종류 ID',
|
||||
valueNm: 'eqpmKindId',
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 pt-1',
|
||||
iconShow: true,
|
||||
required: false,
|
||||
readonly: true,
|
||||
@ -373,7 +373,7 @@ const myDetail = [
|
||||
valueNm: 'eqpmKindNm',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 pt-1',
|
||||
iconShow: true,
|
||||
required: true,
|
||||
labelCols: 12,
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div ref="mainDiv" class="l-layout">
|
||||
<PageTitle />
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -461,7 +461,7 @@ const myDetail = [
|
||||
valueNm: 'eqpmGrpId',
|
||||
disabled: true,
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4',
|
||||
class: 'py-2 pr-4 pt-1',
|
||||
required: false,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
@ -474,24 +474,23 @@ const myDetail = [
|
||||
valueNm: 'eqpmGrpNm',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2 pl-4',
|
||||
class: 'py-2 pl-4 pt-1',
|
||||
required: true,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
|
||||
{
|
||||
type: 'CheckBox',
|
||||
label: '사용 여부',
|
||||
valueNm: 'useFg',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
class: 'py-2 pr-4 pt-4',
|
||||
value: { '1': true, '0': false },
|
||||
required: true,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'SelectBox',
|
||||
|
@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -34,23 +35,23 @@
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row ref="contents">
|
||||
<v-col :cols="5" class="h100">
|
||||
<v-col :cols="5" >
|
||||
<v-card class="pb-5">
|
||||
<div class="d-flex align-center justify-space-between pa-5">
|
||||
<v-card-title class="pa-0 custom-title-4">설비 정보</v-card-title>
|
||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
|
||||
:btnActionsFnc="btnActions" />
|
||||
</div>
|
||||
<div class="px-5" style="min-height:calc(100% - 76px)">
|
||||
<div ref="gridParent" class="w100 h100">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData" @sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||
:selectedRowDataWatchFlag="true" :preventFocusChangeEventFlag="false" :dataPath="dataPathMock" />
|
||||
</div>
|
||||
<div ref="gridParent" class="px-5" style="min-height:60vh;">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData" @sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||
:selectedRowDataWatchFlag="true" :preventFocusChangeEventFlag="false" />
|
||||
<!-- <div ref="gridParent" class="w100 h100">
|
||||
</div> -->
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="7" class="h100">
|
||||
<v-col :cols="7" >
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="custom-title-4" style="min-height:76px;">설비 상세</v-card-title>
|
||||
<div class="px-5" style="min-height:calc(100% - 76px)">
|
||||
@ -287,7 +288,7 @@ export default {
|
||||
blocId: this.userInfo.blocId,
|
||||
},
|
||||
});
|
||||
console.log('res : ', res);
|
||||
// console.log('res : ', res);
|
||||
res.map(item => {
|
||||
const it = { text: item.ercNm, value: item.ercId };
|
||||
ercList.push(it);
|
||||
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div ref="mainDiv" class="l-layout">
|
||||
<v-row ref="searchFilter">
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter" class="mt-2">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
@ -37,11 +38,11 @@
|
||||
:btnActionsFnc="btnActions" />
|
||||
</div>
|
||||
<div class="h100 px-4" style="height:calc(100% - 70px)">
|
||||
<div ref="gridParent" >
|
||||
<div ref="gridParent" style="height: 30%">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData" :dataPath="dataPathExample" />
|
||||
</div>
|
||||
<div class="d-flex py-4">
|
||||
<div class="d-flex py-4 mt-4" >
|
||||
<component :is="'Form'" :parentPrgmId="myPrgmId" :detailList="detailList"
|
||||
@gridEditingFinish="gridEditingFinish" />
|
||||
</div>
|
||||
@ -112,115 +113,12 @@ export default {
|
||||
myPrgmId: myPrgmId,
|
||||
initedFlag: false,
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
detailList: myDetail,
|
||||
selectValue01: null,
|
||||
selectValueList01: [],
|
||||
selectValue02: null,
|
||||
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: {
|
||||
@ -352,60 +250,46 @@ export default {
|
||||
});
|
||||
},
|
||||
async getEqpmKind() {
|
||||
// let res = await this.postApiReturn({
|
||||
// apiKey: 'selectEqpmKindCodeList',
|
||||
// resKey: 'eqpmKindCodeLists',
|
||||
// sendParam: {},
|
||||
// });
|
||||
// if (res.length > 0) {
|
||||
// this.selectValueList01 = await res.map(item => {
|
||||
// return {
|
||||
// text: item.eqpmKindNm,
|
||||
// value: item.eqpmKindId,
|
||||
// };
|
||||
// });
|
||||
// this.selectValue01 = this.selectValueList01[0].value;
|
||||
// } else {
|
||||
// this.selectValueList01 = [];
|
||||
// this.selectValue01 = null;
|
||||
// }
|
||||
|
||||
this.selectValueList01 = [
|
||||
{ label: 'Etcher', value: 'EQK001' },
|
||||
{ label: 'Deposition', value: 'EQK002' },
|
||||
{ label: 'Inspection', value: 'EQK003' },
|
||||
];
|
||||
|
||||
this.selectValue01 = 'EQK001';
|
||||
let res = await this.postApiReturn({
|
||||
apiKey: 'selectEqpmKindCodeList',
|
||||
resKey: 'eqpmKindCodeLists',
|
||||
sendParam: {},
|
||||
});
|
||||
if (res.length > 0) {
|
||||
this.selectValueList01 = await res.map(item => {
|
||||
return {
|
||||
text: item.eqpmKindNm,
|
||||
value: item.eqpmKindId,
|
||||
};
|
||||
});
|
||||
this.selectValue01 = this.selectValueList01[0].value;
|
||||
} else {
|
||||
this.selectValueList01 = [];
|
||||
this.selectValue01 = null;
|
||||
}
|
||||
this.setPageData({
|
||||
eqpmKindList: this.selectValueList01,
|
||||
eqpmKindId: this.selectValue01,
|
||||
});
|
||||
},
|
||||
async getEqpmGrp() {
|
||||
// let res = await this.postApiReturn({
|
||||
// apiKey: 'selectEqpmGrpCodeList',
|
||||
// resKey: 'eqpmGrpCodeLists',
|
||||
// sendParam: { eqpmKindId: this.selectValue01 },
|
||||
// });
|
||||
// if (res.length > 0) {
|
||||
// this.selectValueList02 = await res.map(item => {
|
||||
// return {
|
||||
// text: item.eqpmGrpNm,
|
||||
// value: item.eqpmGrpId,
|
||||
// };
|
||||
// });
|
||||
// this.selectValue02 = this.selectValueList02[0].value;
|
||||
// } else {
|
||||
// this.selectValueList02 = [];
|
||||
// this.selectValue02 = null;
|
||||
// }
|
||||
this.selectValueList02 = [
|
||||
{ label: '냉동기고온', value: '냉동기고온' },
|
||||
{ label: '냉동기저온', value: '냉동기저온' },
|
||||
{ label: '공조기', value: '공조기' },
|
||||
{ label: '보일러', value: '보일러' }
|
||||
];
|
||||
let res = await this.postApiReturn({
|
||||
apiKey: 'selectEqpmGrpCodeList',
|
||||
resKey: 'eqpmGrpCodeLists',
|
||||
sendParam: { eqpmKindId: this.selectValue01 },
|
||||
});
|
||||
if (res.length > 0) {
|
||||
this.selectValueList02 = await res.map(item => {
|
||||
return {
|
||||
text: item.eqpmGrpNm,
|
||||
value: item.eqpmGrpId,
|
||||
};
|
||||
});
|
||||
this.selectValue02 = this.selectValueList02[0].value;
|
||||
} else {
|
||||
this.selectValueList02 = [];
|
||||
this.selectValue02 = null;
|
||||
}
|
||||
|
||||
this.setPageData({
|
||||
eqpmGrpList: this.selectValueList02,
|
||||
@ -419,6 +303,10 @@ export default {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 'auto',
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
@ -636,100 +524,48 @@ export default {
|
||||
async getRowGridData() {
|
||||
this.loadGrid = false;
|
||||
let res = [];
|
||||
const newRes = [
|
||||
{
|
||||
comId: 'COM001',
|
||||
gdIdxId: 'GD001',
|
||||
gdIdxNm: '온도 가이드',
|
||||
eqpmGrpId: 'EQ001',
|
||||
upTotMeth: 'AVG',
|
||||
sortSeq: 1,
|
||||
pysclQtyId1: 'TEMP',
|
||||
pysclQtyId2: null,
|
||||
pysclQtyId3: null,
|
||||
pysclQtyId4: null,
|
||||
ctgr1: '환경',
|
||||
ctgr2: '내부',
|
||||
careStndVal: 50,
|
||||
warnStndVal: 70,
|
||||
gdMeth: '자동',
|
||||
useFg: '1',
|
||||
alrmMsg: '온도가 기준치를 초과했습니다.',
|
||||
calcProc: 'PROC001',
|
||||
calcDesc: '평균 계산',
|
||||
calcMeth: '(A+B)/2',
|
||||
unit: 'C',
|
||||
argCnt: 2,
|
||||
rowStat: null,
|
||||
|
||||
res = await this.postApiReturn({
|
||||
apiKey: 'selectEqpmGdIdxDataList',
|
||||
resKey: 'eqpmGdIdxDataList',
|
||||
sendParam: {
|
||||
eqpmGrpId: this.selectValue02,
|
||||
gdIdxNmLike: this.pageData.gdIdxNm,
|
||||
},
|
||||
{
|
||||
comId: 'COM002',
|
||||
gdIdxId: 'GD002',
|
||||
gdIdxNm: '습도 가이드',
|
||||
eqpmGrpId: 'EQ002',
|
||||
upTotMeth: 'MAX',
|
||||
sortSeq: 2,
|
||||
pysclQtyId1: 'HUMID',
|
||||
pysclQtyId2: null,
|
||||
pysclQtyId3: null,
|
||||
pysclQtyId4: null,
|
||||
ctgr1: '환경',
|
||||
ctgr2: '외부',
|
||||
careStndVal: 30,
|
||||
warnStndVal: 60,
|
||||
gdMeth: '수동',
|
||||
useFg: '0',
|
||||
alrmMsg: '습도가 기준치를 초과했습니다.',
|
||||
calcProc: 'PROC002',
|
||||
calcDesc: '최대값 계산',
|
||||
calcMeth: 'MAX(A,B)',
|
||||
unit: '%',
|
||||
argCnt: 2,
|
||||
});
|
||||
const newRes = res.map(item => {
|
||||
const newObj = {
|
||||
...item,
|
||||
rowStat: null,
|
||||
},
|
||||
];
|
||||
|
||||
// res = await this.postApiReturn({
|
||||
// apiKey: 'selectEqpmGdIdxDataList',
|
||||
// resKey: 'eqpmGdIdxDataList',
|
||||
// sendParam: {
|
||||
// eqpmGrpId: this.selectValue02,
|
||||
// gdIdxNmLike: this.pageData.gdIdxNm,
|
||||
// },
|
||||
// });
|
||||
// const newRes = res.map(item => {
|
||||
// const newObj = {
|
||||
// ...item,
|
||||
// rowStat: null,
|
||||
// };
|
||||
// return newObj;
|
||||
// });
|
||||
};
|
||||
return newObj;
|
||||
});
|
||||
this.setGridData({
|
||||
gridKey: this.gridName,
|
||||
value: newRes,
|
||||
});
|
||||
//this.loadGrid = true;
|
||||
// this.$nextTick(() => {
|
||||
// if (newRes.length > 0) {
|
||||
// try {
|
||||
// this.$refs[this.gridName].focus({
|
||||
// //rowKey: 0,
|
||||
// rowKey:
|
||||
// this.pageData.rowGridSelectKey == '' ||
|
||||
// this.pageData.rowGridSelectKey == null
|
||||
// ? 0
|
||||
// : this.pageData.rowGridSelectKey ==
|
||||
// this.$refs[this.gridName].getData().length - 1
|
||||
// ? this.pageData.rowGridSelectKey
|
||||
// : 0,
|
||||
// columnName: 'gdIdxId',
|
||||
// setScroll: true,
|
||||
// });
|
||||
// } catch (error) { }
|
||||
// } else {
|
||||
// this.detailDataInit();
|
||||
// }
|
||||
// });
|
||||
this.$nextTick(() => {
|
||||
if (newRes.length > 0) {
|
||||
try {
|
||||
this.$refs[this.gridName].focus({
|
||||
//rowKey: 0,
|
||||
rowKey:
|
||||
this.pageData.rowGridSelectKey == '' ||
|
||||
this.pageData.rowGridSelectKey == null
|
||||
? 0
|
||||
: this.pageData.rowGridSelectKey ==
|
||||
this.$refs[this.gridName].getData().length - 1
|
||||
? this.pageData.rowGridSelectKey
|
||||
: 0,
|
||||
columnName: 'gdIdxId',
|
||||
setScroll: true,
|
||||
});
|
||||
} catch (error) { }
|
||||
} else {
|
||||
this.detailDataInit();
|
||||
}
|
||||
});
|
||||
this.loadGrid = true;
|
||||
},
|
||||
async getRowData(data) {
|
||||
@ -1462,7 +1298,7 @@ const myDetail = [
|
||||
class: 'pa-3',
|
||||
// required: true,
|
||||
openMode: 'ALL',
|
||||
disabled: false,
|
||||
disabled: true,
|
||||
eqpmKindId: '',
|
||||
eqpmGrpId: '',
|
||||
closeBtnFg: true,
|
||||
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div ref="mainDiv" class="l-layout">
|
||||
<v-row ref="searchFilter">
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter" class="mt-2">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
@ -29,7 +30,7 @@
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row ref="contents" class="mt-4">
|
||||
<v-row ref="contents" class="mt-3">
|
||||
<v-col :cols="12" style="height: 100%">
|
||||
<!-- <v-card class="py-5"> -->
|
||||
<v-card style="height: 60%">
|
||||
@ -115,8 +116,8 @@
|
||||
|
||||
</v-card>
|
||||
|
||||
<v-row style="height: 40%" class="mt-4">
|
||||
<v-col :cols="6" style="height: 100%">
|
||||
<v-row style="height: 40%" class="mt-3">
|
||||
<v-col :cols="6" style="height: 100%" class="pr-2">
|
||||
<v-card class="pb-5">
|
||||
<div class="d-flex align-center justify-space-between pa-4">
|
||||
<v-card-title class="pa-0 custom-title-4 ">설비상세 리스트</v-card-title>
|
||||
@ -126,12 +127,12 @@
|
||||
<div ref="gridParent" class="w100 h100">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
|
||||
:dataPath="dataPathExample" />
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="6" style="height: 100%">
|
||||
<v-col :cols="6" style="height: 100%" class="pl-2">
|
||||
<v-card class="pb-5">
|
||||
<div class="d-flex align-center justify-space-between pa-4">
|
||||
<v-card-title class="pa-0 custom-title-4">설비가이드 기준 정보</v-card-title>
|
||||
@ -201,7 +202,7 @@ export default {
|
||||
readonlyFg: true,
|
||||
initedFlag: false,
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
detailList: myDetail,
|
||||
selectValue01: null,
|
||||
selectValueList01: [],
|
||||
@ -209,62 +210,62 @@ export default {
|
||||
selectValueList02: [],
|
||||
selectValue03: null,
|
||||
selectValueList03: [],
|
||||
dataPathExample: {
|
||||
"rowGrid": {
|
||||
data: [
|
||||
// dataPathExample: {
|
||||
// "rowGrid": {
|
||||
// data: [
|
||||
|
||||
{
|
||||
eqpmId: 'EQ001',
|
||||
originEqpmId: 'ORIG001',
|
||||
eqpmNm: '냉각기 A',
|
||||
careStndVal: 75,
|
||||
warnStndVal: 90,
|
||||
},
|
||||
{
|
||||
eqpmId: 'EQ002',
|
||||
originEqpmId: 'ORIG002',
|
||||
eqpmNm: '펌프 B',
|
||||
careStndVal: 60,
|
||||
warnStndVal: 80,
|
||||
},
|
||||
{
|
||||
eqpmId: 'EQ003',
|
||||
originEqpmId: 'ORIG003',
|
||||
eqpmNm: '모터 C',
|
||||
careStndVal: 50,
|
||||
warnStndVal: 70,
|
||||
},
|
||||
{
|
||||
eqpmId: 'EQ004',
|
||||
originEqpmId: 'ORIG004',
|
||||
eqpmNm: '밸브 D',
|
||||
careStndVal: 65,
|
||||
warnStndVal: 85,
|
||||
},
|
||||
{
|
||||
eqpmId: 'EQ005',
|
||||
originEqpmId: 'ORIG005',
|
||||
eqpmNm: '컨트롤러 E',
|
||||
careStndVal: 55,
|
||||
warnStndVal: 75,
|
||||
},
|
||||
// {
|
||||
// eqpmId: 'EQ001',
|
||||
// originEqpmId: 'ORIG001',
|
||||
// eqpmNm: '냉각기 A',
|
||||
// careStndVal: 75,
|
||||
// warnStndVal: 90,
|
||||
// },
|
||||
// {
|
||||
// eqpmId: 'EQ002',
|
||||
// originEqpmId: 'ORIG002',
|
||||
// eqpmNm: '펌프 B',
|
||||
// careStndVal: 60,
|
||||
// warnStndVal: 80,
|
||||
// },
|
||||
// {
|
||||
// eqpmId: 'EQ003',
|
||||
// originEqpmId: 'ORIG003',
|
||||
// eqpmNm: '모터 C',
|
||||
// careStndVal: 50,
|
||||
// warnStndVal: 70,
|
||||
// },
|
||||
// {
|
||||
// eqpmId: 'EQ004',
|
||||
// originEqpmId: 'ORIG004',
|
||||
// eqpmNm: '밸브 D',
|
||||
// careStndVal: 65,
|
||||
// warnStndVal: 85,
|
||||
// },
|
||||
// {
|
||||
// eqpmId: 'EQ005',
|
||||
// originEqpmId: 'ORIG005',
|
||||
// eqpmNm: '컨트롤러 E',
|
||||
// careStndVal: 55,
|
||||
// warnStndVal: 75,
|
||||
// },
|
||||
|
||||
],
|
||||
column: [
|
||||
{ header: '설비', name: 'eqpmId', align: 'left' },
|
||||
{
|
||||
header: 'origin설비',
|
||||
name: 'originEqpmId',
|
||||
align: 'center',
|
||||
hidden: true,
|
||||
},
|
||||
{ header: '설비명', name: 'eqpmNm', align: 'left' },
|
||||
{ header: '주의기준', name: 'careStndVal', align: 'right' },
|
||||
{ header: '심각기준', name: 'warnStndVal', align: 'right' },
|
||||
]
|
||||
// ],
|
||||
// column: [
|
||||
// { header: '설비', name: 'eqpmId', align: 'left' },
|
||||
// {
|
||||
// header: 'origin설비',
|
||||
// name: 'originEqpmId',
|
||||
// align: 'center',
|
||||
// hidden: true,
|
||||
// },
|
||||
// { header: '설비명', name: 'eqpmNm', align: 'left' },
|
||||
// { header: '주의기준', name: 'careStndVal', align: 'right' },
|
||||
// { header: '심각기준', name: 'warnStndVal', align: 'right' },
|
||||
// ]
|
||||
|
||||
}
|
||||
}
|
||||
// }
|
||||
// }
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -408,6 +409,10 @@ export default {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 'auto',
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
@ -511,69 +516,69 @@ export default {
|
||||
this.loadGrid = false;
|
||||
let res = [];
|
||||
|
||||
// if (this.selectValue01 && this.selectValue02 && this.selectValue03) {
|
||||
// res = await this.postApiReturn({
|
||||
// apiKey: 'selectEqpmGdDetl',
|
||||
// resKey: 'eqpmGdDetlData',
|
||||
// sendParam: {
|
||||
// gdIdxId: this.selectValue03,
|
||||
// },
|
||||
// });
|
||||
// }
|
||||
if (this.selectValue01 && this.selectValue02 && this.selectValue03) {
|
||||
res = await this.postApiReturn({
|
||||
apiKey: 'selectEqpmGdDetl',
|
||||
resKey: 'eqpmGdDetlData',
|
||||
sendParam: {
|
||||
gdIdxId: this.selectValue03,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
// // grid에서 eqpmId를 기억해서 popup에서 중복되는 값을 제거하는데 사용하기위해 저장 - 시작
|
||||
// let eqpmIdList = res.map(item => {
|
||||
// return item.eqpmId;
|
||||
// });
|
||||
// this.setPageData({ nowGridEqpmIdList: eqpmIdList });
|
||||
// // grid에서 eqpmId를 기억해서 popup에서 중복되는 값을 제거하는데 사용하기위해 저장 - 끝
|
||||
// const newRes = res.map(item => {
|
||||
// const newObj = {
|
||||
// ...item,
|
||||
// rowStat: null,
|
||||
// };
|
||||
// return newObj;
|
||||
// });
|
||||
const newRes = [
|
||||
// grid에서 eqpmId를 기억해서 popup에서 중복되는 값을 제거하는데 사용하기위해 저장 - 시작
|
||||
let eqpmIdList = res.map(item => {
|
||||
return item.eqpmId;
|
||||
});
|
||||
this.setPageData({ nowGridEqpmIdList: eqpmIdList });
|
||||
// grid에서 eqpmId를 기억해서 popup에서 중복되는 값을 제거하는데 사용하기위해 저장 - 끝
|
||||
const newRes = res.map(item => {
|
||||
const newObj = {
|
||||
...item,
|
||||
rowStat: null,
|
||||
};
|
||||
return newObj;
|
||||
});
|
||||
// const newRes = [
|
||||
|
||||
|
||||
{
|
||||
eqpmId: 'EQ001',
|
||||
originEqpmId: 'ORIG001',
|
||||
eqpmNm: '냉각기 A',
|
||||
careStndVal: 75,
|
||||
warnStndVal: 90,
|
||||
},
|
||||
{
|
||||
eqpmId: 'EQ002',
|
||||
originEqpmId: 'ORIG002',
|
||||
eqpmNm: '펌프 B',
|
||||
careStndVal: 60,
|
||||
warnStndVal: 80,
|
||||
},
|
||||
{
|
||||
eqpmId: 'EQ003',
|
||||
originEqpmId: 'ORIG003',
|
||||
eqpmNm: '모터 C',
|
||||
careStndVal: 50,
|
||||
warnStndVal: 70,
|
||||
},
|
||||
{
|
||||
eqpmId: 'EQ004',
|
||||
originEqpmId: 'ORIG004',
|
||||
eqpmNm: '밸브 D',
|
||||
careStndVal: 65,
|
||||
warnStndVal: 85,
|
||||
},
|
||||
{
|
||||
eqpmId: 'EQ005',
|
||||
originEqpmId: 'ORIG005',
|
||||
eqpmNm: '컨트롤러 E',
|
||||
careStndVal: 55,
|
||||
warnStndVal: 75,
|
||||
},
|
||||
// {
|
||||
// eqpmId: 'EQ001',
|
||||
// originEqpmId: 'ORIG001',
|
||||
// eqpmNm: '냉각기 A',
|
||||
// careStndVal: 75,
|
||||
// warnStndVal: 90,
|
||||
// },
|
||||
// {
|
||||
// eqpmId: 'EQ002',
|
||||
// originEqpmId: 'ORIG002',
|
||||
// eqpmNm: '펌프 B',
|
||||
// careStndVal: 60,
|
||||
// warnStndVal: 80,
|
||||
// },
|
||||
// {
|
||||
// eqpmId: 'EQ003',
|
||||
// originEqpmId: 'ORIG003',
|
||||
// eqpmNm: '모터 C',
|
||||
// careStndVal: 50,
|
||||
// warnStndVal: 70,
|
||||
// },
|
||||
// {
|
||||
// eqpmId: 'EQ004',
|
||||
// originEqpmId: 'ORIG004',
|
||||
// eqpmNm: '밸브 D',
|
||||
// careStndVal: 65,
|
||||
// warnStndVal: 85,
|
||||
// },
|
||||
// {
|
||||
// eqpmId: 'EQ005',
|
||||
// originEqpmId: 'ORIG005',
|
||||
// eqpmNm: '컨트롤러 E',
|
||||
// careStndVal: 55,
|
||||
// warnStndVal: 75,
|
||||
// },
|
||||
|
||||
]
|
||||
// ]
|
||||
this.setGridData({
|
||||
gridKey: this.gridName,
|
||||
value: newRes,
|
||||
|
@ -1,63 +1,27 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<PageTitle text="측정 위치 데이터 조회" />
|
||||
<CommonPageTitle />
|
||||
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
<v-col :cols="2">
|
||||
<component
|
||||
:is="'SelectBlocMstr'"
|
||||
ref="SelectBlocMstr"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:textCols="12"
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<!-- <v-col :cols="2">
|
||||
<component
|
||||
label="검침개소"
|
||||
:is="'PastRsltDataReadPop'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
/>
|
||||
</v-col> -->
|
||||
<!-- <v-col :cols="2">
|
||||
<component
|
||||
:is="'SelectTagNmList'"
|
||||
ref="SelectTagNmList"
|
||||
:parentPrgmId="myPrgmId"
|
||||
/>
|
||||
</v-col> -->
|
||||
<v-col :cols="3">
|
||||
<!-- <component
|
||||
:is="'PastRsltDataReadTagPop'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'TAG'"
|
||||
/> -->
|
||||
<component
|
||||
:is="'EvtObjPop'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:item="evtObjPopItem"
|
||||
customClass="select-large"
|
||||
/>
|
||||
<component :is="'SelectBlocMstr'" ref="SelectBlocMstr" :parentPrgmId="myPrgmId"
|
||||
:textCols="12" customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="4">
|
||||
<component
|
||||
:is="'Datepicker'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'조회기간'"
|
||||
:textCols="12"
|
||||
/>
|
||||
<v-col :cols="3">
|
||||
<component :is="'EvtObjPop'" :parentPrgmId="myPrgmId" :item="evtObjPopItem"
|
||||
customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3" class="d-flex align-end justify-end text-right">
|
||||
<BtnExcelDownload
|
||||
class="mr-1"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:gridName="gridName"
|
||||
type="primary"
|
||||
size="large"
|
||||
/>
|
||||
<v-col :cols="3">
|
||||
<!-- 대상일 -->
|
||||
<component :is="'Datepicker'" :parentPrgmId="myPrgmId" :label="'조회기간'" :textCols="12"
|
||||
customClass="datepicker-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3" class="d-flex align-end justify-end text-right">
|
||||
<BtnExcelDownload class="mr-1" :parentPrgmId="myPrgmId" :gridName="gridName" type="primary"
|
||||
size="large" />
|
||||
<BtnSearch @click="search" size="large" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -68,12 +32,12 @@
|
||||
<v-col :cols="12" style="height: 100%" class="h100">
|
||||
<v-card class="px-5 py-5 h100">
|
||||
<div ref="gridParent" class="h100 px-5" style="height: 100%">
|
||||
<component
|
||||
ref="myGrid"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
/>
|
||||
<component ref="myGrid" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" />
|
||||
</div>
|
||||
<div class="d-flex align-center justify-space-between">
|
||||
<pagination id="pagination" :total-count="totalCount" :page-num="page" :limit="limit"
|
||||
@loadData="changeGrid" />
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
@ -97,7 +61,7 @@ import BtnExcelDownload from '~/components/common/button/BtnExcelDownload';
|
||||
import DateUtility from '~/plugins/dateUtility';
|
||||
// import Search from "~/components/common/search";
|
||||
import EvtObjPop from '~/components/common/modal/EvtObjPop';
|
||||
import PageTitle from "~/components/common/PageTitle";
|
||||
import pagination from '~/components/Pagination';
|
||||
|
||||
let myTitle;
|
||||
// const myPrgmId = "PRG0052";
|
||||
@ -130,7 +94,7 @@ export default {
|
||||
PastRsltDataReadPop,
|
||||
PastRsltDataReadTagPop,
|
||||
EvtObjPop,
|
||||
PageTitle,
|
||||
pagination,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -146,12 +110,16 @@ export default {
|
||||
valueNm2: 'tagNm',
|
||||
iconShow: true,
|
||||
disabled: false,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
class: 'py-2',
|
||||
required: false,
|
||||
formFg: false,
|
||||
},
|
||||
itemsPerPage: 10,
|
||||
itemsPerPageArray: [10, 20, 30],
|
||||
limit: 20,
|
||||
page: 1,
|
||||
totalCount: 0,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -164,9 +132,6 @@ export default {
|
||||
chkTagId() {
|
||||
return this.pageData.tagList === undefined ? null : this.pageData.tagId;
|
||||
},
|
||||
// chkTagList() {
|
||||
// return this.pageData.tagList;
|
||||
// },
|
||||
chkTagNm() {
|
||||
return this.pageData.tagData.tagNm;
|
||||
},
|
||||
@ -176,18 +141,16 @@ export default {
|
||||
},
|
||||
watch: {
|
||||
chkIsFind(val) {
|
||||
if (val) this.search();
|
||||
if (val) {
|
||||
this.page = 1;
|
||||
this.search();
|
||||
}
|
||||
},
|
||||
chkTagId(val) {
|
||||
if (this.initFlag && val != null) {
|
||||
this.search();
|
||||
}
|
||||
},
|
||||
// chkTagList() {
|
||||
// if(this.initFlag){
|
||||
// this.search();
|
||||
// }
|
||||
// },
|
||||
chkTagNm() {
|
||||
if (this.initFlag) {
|
||||
this.search();
|
||||
@ -207,7 +170,7 @@ export default {
|
||||
defaultData: defaultData,
|
||||
});
|
||||
},
|
||||
created() {},
|
||||
created() { },
|
||||
async mounted() {
|
||||
await this.setFromDt();
|
||||
await this.init();
|
||||
@ -330,6 +293,7 @@ export default {
|
||||
this.loadGrid = false;
|
||||
|
||||
let res = [];
|
||||
let res2 = [];
|
||||
let yearQuarterData = [];
|
||||
yearQuarterData = this.yearQuarterMaker([
|
||||
this.pageData.fromDt,
|
||||
@ -381,8 +345,18 @@ export default {
|
||||
apiKey: 'selectTagRawDataByQuarter',
|
||||
resKey: 'pastRsltReadData',
|
||||
sendParam: sendParams,
|
||||
limit: this.limit,
|
||||
page: this.page,
|
||||
offset: (this.page - 1) * this.limit, // MariaDB Query에서 직접 계산이 안됨
|
||||
});
|
||||
|
||||
res2 = await this.postApiReturn({
|
||||
apiKey: 'selectTagRawDataByQuarterPageTotal',
|
||||
resKey: 'pastRslPageTotal',
|
||||
sendParam: sendParams
|
||||
});
|
||||
this.totalCount = res2[0].totalcount;
|
||||
|
||||
this.setGridData({
|
||||
gridKey: this.gridName,
|
||||
value: res,
|
||||
@ -393,6 +367,9 @@ export default {
|
||||
fromDt: this.pageData.fromDt,
|
||||
toDt: this.pageData.toDt,
|
||||
yearQuarterList: yearQuarterData['yearQuarterList'],
|
||||
limit: this.limit,
|
||||
page: this.page,
|
||||
offset: (this.page - 1) * this.limit, // MariaDB Query에서 직접 계산이 안됨
|
||||
};
|
||||
sendParams['tagId'] = this.pageData.tagId;
|
||||
//
|
||||
@ -410,6 +387,14 @@ export default {
|
||||
sendParam: sendParams,
|
||||
});
|
||||
|
||||
res2 = await this.postApiReturn({
|
||||
apiKey: 'selectTagRawDataByQuarterPageTotal',
|
||||
resKey: 'pastRslPageTotal',
|
||||
sendParam: sendParams
|
||||
});
|
||||
|
||||
this.totalCount = res2[0].totalcount;
|
||||
|
||||
this.setGridData({
|
||||
gridKey: this.gridName,
|
||||
value: res,
|
||||
@ -487,6 +472,12 @@ export default {
|
||||
finalResult['yearQuarterList'] = result;
|
||||
return finalResult;
|
||||
},
|
||||
changeGrid: async function (pageNum, limit) {
|
||||
this.page = pageNum;
|
||||
this.limit = limit;
|
||||
|
||||
this.search();
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
||||
customClass="select-large"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<v-col :cols="3">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="검침대상명"
|
||||
@ -59,19 +59,16 @@
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
</div>
|
||||
<div class="h100 px-5" style="height:calc(100% - 70px)">
|
||||
<div ref="gridParent" class="w100 h100">
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||
:selectedRowDataWatchFlag="true"
|
||||
:dataPath="dataPathMock"
|
||||
/>
|
||||
</div>
|
||||
<div ref="gridParent" class="h100 px-5" style="height:calc(100% - 70px)">
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||
:selectedRowDataWatchFlag="true"
|
||||
/>
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
@ -81,7 +78,7 @@
|
||||
>검침대상 상세
|
||||
</v-card-title>
|
||||
<div class="px-5" style="height:calc(100% - 76px)">
|
||||
<v-tabs v-model="tab" >
|
||||
<v-tabs v-model="tab">
|
||||
<v-tab
|
||||
v-for="item in items"
|
||||
:key="item.id"
|
||||
@ -188,26 +185,8 @@ export default {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
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: [
|
||||
{
|
||||
name: '검침 대상 정보',
|
||||
@ -724,8 +703,8 @@ const defaultData = {
|
||||
},
|
||||
buttonAuth: {
|
||||
add: true,
|
||||
save: true,
|
||||
remove: true,
|
||||
save: true,
|
||||
excel: false,
|
||||
},
|
||||
},
|
||||
@ -873,40 +852,7 @@ const myDetail = [
|
||||
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>
|
||||
<style lang="scss">
|
||||
@import '@/assets/scss/common.scss';
|
||||
</style>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<common-page-title />
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter">
|
||||
<!-- 조회조견 -->
|
||||
<v-col :cols="12">
|
||||
@ -91,7 +91,7 @@
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
<div ref="gridParent" class="px-5 w100" style="min-height: 60vh">
|
||||
<div ref="gridParent" class="px-5 w100" style="height: 55vh;">
|
||||
<component
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:ref="gridName"
|
||||
@ -242,6 +242,10 @@ export default {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
pageOptions: {
|
||||
useClient: true,
|
||||
perPage: 13,
|
||||
},
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
|
@ -1,61 +1,43 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<CommonPageTitle/>
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="center" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<!-- 사업장 -->
|
||||
<component
|
||||
:is="'SelectBlocMstr'"
|
||||
ref="SelectBlocMstr"
|
||||
:parentPrgmId="myPrgmId"
|
||||
/>
|
||||
<component :is="'SelectBlocMstr'" ref="SelectBlocMstr" :parentPrgmId="myPrgmId"
|
||||
:textCols="12" customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'측정 Data 유형'"
|
||||
dataKey="searchReadDataType"
|
||||
:sendParam="{ commGrpCd: 'EM_READ_DATA_TYPE', useFg: '1' }"
|
||||
:addAll="true"
|
||||
/>
|
||||
<component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'측정 Data 유형'"
|
||||
dataKey="searchReadDataType" :sendParam="{ commGrpCd: 'EM_READ_DATA_TYPE', useFg: '1' }"
|
||||
:addAll="true" :textCols="12" customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'SelectReadObj'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'측정대상'"
|
||||
dataKey="searchReadObj"
|
||||
:sendParam="{ useFg: '1' }"
|
||||
:addAll="true"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col :cols="3" class="text-right">
|
||||
<BtnSearch @click="search" />
|
||||
<component :is="'SelectReadObj'" :parentPrgmId="myPrgmId" :label="'측정대상'"
|
||||
dataKey="searchReadObj" :sendParam="{ useFg: '1' }" :labelCols="12" :textCols="12"
|
||||
:addAll="true" customClass="select-large" />
|
||||
</v-col>
|
||||
|
||||
</v-row>
|
||||
<v-row align="center" no-gutters>
|
||||
<v-row align="end" no-gutters>
|
||||
<v-col :cols="3">
|
||||
<component
|
||||
:is="'selectCodeList'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:label="'사용여부'"
|
||||
dataKey="useFg"
|
||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
|
||||
:addAll="true"
|
||||
/>
|
||||
<component :is="'selectCodeList'" :parentPrgmId="myPrgmId" :label="'사용여부'" dataKey="useFg"
|
||||
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }" :addAll="true" :textCols="12"
|
||||
customClass="select-large" />
|
||||
</v-col>
|
||||
<v-col :cols="6">
|
||||
<InputText
|
||||
:parentPrgmId="myPrgmId"
|
||||
label="TAG명"
|
||||
valueNm="tagNm"
|
||||
:labelCols="2"
|
||||
:textCols="9"
|
||||
:searchOption="true"
|
||||
/>
|
||||
<v-col :cols="3">
|
||||
<InputText :parentPrgmId="myPrgmId" label="TAG ID" valueNm="tagId" :labelCols="12"
|
||||
:textCols="12" :searchOption="true" customClass="input-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3">
|
||||
<InputText :parentPrgmId="myPrgmId" label="TAG명" valueNm="tagNm" :labelCols="12"
|
||||
:textCols="12" :searchOption="true" customClass="input-large" />
|
||||
</v-col>
|
||||
<v-col :cols="3" class="d-flex align-end justify-end text-right">
|
||||
<BtnSearch @click="search" size="large" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-card>
|
||||
@ -66,63 +48,33 @@
|
||||
<v-card class="pb-5">
|
||||
<v-card-title class="d-flex justify-space-between align-end">
|
||||
<span class="tit ft-size_20 ft-weight_600">TAG 정보</span>
|
||||
<Buttons
|
||||
:parentPrgmId="myPrgmId"
|
||||
:bindingData="gridName"
|
||||
:detailList="detailList"
|
||||
:btnActionsFnc="btnActions"
|
||||
/>
|
||||
<Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :detailList="detailList"
|
||||
:btnActionsFnc="btnActions" />
|
||||
</v-card-title>
|
||||
<v-card-actions>
|
||||
<div
|
||||
ref="gridParent"
|
||||
class="w100"
|
||||
style="height: calc(100vh - 360px)"
|
||||
>
|
||||
<component
|
||||
:ref="gridName"
|
||||
:is="loadGrid ? 'Grid' : null"
|
||||
:gridName="gridName"
|
||||
:parentPrgmId="myPrgmId"
|
||||
@getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
|
||||
:selectedRowDataWatchFlag="true"
|
||||
/>
|
||||
<div ref="gridParent" class="w100" style="height: calc(100vh - 400px)">
|
||||
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
|
||||
:parentPrgmId="myPrgmId" @getRowsData="getRowData"
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true" />
|
||||
</div>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="7" class="h100">
|
||||
<v-col :cols="7" class="">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title>TAG 상세</v-card-title>
|
||||
<div class="px-5" style="height:calc(100% - 70px)">
|
||||
<v-tabs v-model="tab">
|
||||
<v-tab
|
||||
v-for="item in items"
|
||||
:key="item.id"
|
||||
:disabled="item.disabledFlag"
|
||||
>
|
||||
<v-tab v-for="item in items" :key="item.id" :disabled="item.disabledFlag">
|
||||
{{ item.name }}
|
||||
</v-tab>
|
||||
</v-tabs>
|
||||
<v-tabs-items
|
||||
v-model="tab"
|
||||
style="height: calc(100% - 65px);"
|
||||
class="py-6"
|
||||
>
|
||||
<v-tabs-items v-model="tab" style="height: calc(100% - 65px);" class="py-6">
|
||||
<v-tab-item v-for="(item, idx) in items" :key="item.id">
|
||||
<component
|
||||
v-if="item.id == 'tagBaseInfoTab'"
|
||||
:is="'Form'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:detailList="detailList"
|
||||
@gridEditingFinish="gridEditingFinish"
|
||||
/>
|
||||
<TagAddInfoTab
|
||||
v-if="item.id == 'tagAddInfoTab'"
|
||||
:parentPrgmId="myPrgmId"
|
||||
:innerTabGridInfo="{ tab, idx }"
|
||||
/>
|
||||
<component v-if="item.id == 'tagBaseInfoTab'" :is="'Form'" :parentPrgmId="myPrgmId"
|
||||
:detailList="detailList" @gridEditingFinish="gridEditingFinish" />
|
||||
<TagAddInfoTab v-if="item.id == 'tagAddInfoTab'" :parentPrgmId="myPrgmId"
|
||||
:innerTabGridInfo="{ tab, idx }" />
|
||||
</v-tab-item>
|
||||
</v-tabs-items>
|
||||
</div>
|
||||
@ -134,6 +86,7 @@
|
||||
<script>
|
||||
import { mapState, mapMutations, mapActions } from 'vuex';
|
||||
import mixinGlobal from '@/mixin/global.js';
|
||||
import { resize } from '@/mixin/resize.js';
|
||||
import BtnSearch from '~/components/common/button/BtnSearch';
|
||||
import Buttons from '~/components/common/button/Buttons';
|
||||
import SelectBlocMstr from '@/components/common/select/SelectBlocMstr';
|
||||
@ -149,7 +102,7 @@ let myTitle;
|
||||
// const myPrgmId = "PRG0051";
|
||||
let myPrgmId;
|
||||
export default {
|
||||
mixins: [mixinGlobal],
|
||||
mixins: [mixinGlobal, resize],
|
||||
async asyncData(context) {
|
||||
const myState = context.store.state;
|
||||
// context.store.commit("setActiveMenuInfo", myState.menuData[myPrgmId]);
|
||||
@ -219,15 +172,19 @@ export default {
|
||||
},
|
||||
chkBlocId() {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.search();
|
||||
},
|
||||
chkReadDataType() {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.search();
|
||||
},
|
||||
chkReadObj() {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.search();
|
||||
},
|
||||
chkUseFg() {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.search();
|
||||
},
|
||||
},
|
||||
async beforeCreate() {
|
||||
@ -297,12 +254,16 @@ export default {
|
||||
this.gridInit();
|
||||
},
|
||||
gridInit() {
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 30;
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 16;
|
||||
|
||||
const myOptions = {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
scrollX: true,
|
||||
header: {
|
||||
height: 38,
|
||||
},
|
||||
};
|
||||
this.setGridOption({
|
||||
gridKey: this.gridName,
|
||||
@ -316,21 +277,21 @@ export default {
|
||||
header: 'TAG ID',
|
||||
name: 'tagId',
|
||||
width: 'auto',
|
||||
minWidth: 280,
|
||||
minWidth: 340,
|
||||
align: 'left',
|
||||
},
|
||||
{
|
||||
header: 'TAG 명',
|
||||
name: 'tagNm',
|
||||
width: 'auto',
|
||||
minWidth: 140,
|
||||
minWidth: 220,
|
||||
align: 'left',
|
||||
},
|
||||
{
|
||||
header: '측정 값 유형',
|
||||
name: 'readDataTypeCd',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
width: 90,
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = _this.pageData.readDataTypeCdList.filter(
|
||||
@ -346,7 +307,7 @@ export default {
|
||||
header: '측정대상',
|
||||
name: 'readObjId',
|
||||
width: 100,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = _this.pageData.readObjList.filter(
|
||||
@ -363,7 +324,7 @@ export default {
|
||||
header: '단위',
|
||||
name: 'unitCd',
|
||||
width: 80,
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
const newValue = _this.pageData.unitCdList.filter(
|
||||
@ -493,6 +454,7 @@ export default {
|
||||
readObjId: this.pageData.searchReadObj,
|
||||
useFg: this.pageData.useFg,
|
||||
tagNmLike: this.pageData.tagNm,
|
||||
tagIdLike: this.pageData.tagId,
|
||||
},
|
||||
});
|
||||
} else {
|
||||
@ -751,7 +713,8 @@ export default {
|
||||
});
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.setPageData({ isFind: true });
|
||||
// this.setPageData({ isFind: true });
|
||||
this.search();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
@ -818,6 +781,7 @@ function isValidAlrmVal(obj) {
|
||||
|
||||
const defaultData = {
|
||||
/* 검색옵션 */
|
||||
tagId: '',
|
||||
tagNm: '',
|
||||
blocId: '',
|
||||
blocMstrList: [],
|
||||
@ -907,30 +871,39 @@ const myDetail = [
|
||||
label: 'TAG ID',
|
||||
valueNm: 'tagId',
|
||||
disabled: false,
|
||||
iconShow: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4',
|
||||
required: false,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
label: 'TAG 명',
|
||||
valueNm: 'tagNm',
|
||||
disabled: false,
|
||||
iconShow: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4',
|
||||
required: false,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'SelectBox',
|
||||
label: '측정 값 유형',
|
||||
valueNm: 'readDataTypeCd',
|
||||
disabled: false,
|
||||
iconShow: true,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
list: 'readDataTypeCdList',
|
||||
itemText: 'commCdNm',
|
||||
itemValue: 'commCd',
|
||||
required: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'SelectBox',
|
||||
@ -938,11 +911,14 @@ const myDetail = [
|
||||
valueNm: 'readObjId',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
list: 'readObjList',
|
||||
itemText: 'readObjNm',
|
||||
itemValue: 'readObjId',
|
||||
required: true,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -950,8 +926,11 @@ const myDetail = [
|
||||
valueNm: 'mgnf',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
required: true,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'SelectBox',
|
||||
@ -959,10 +938,13 @@ const myDetail = [
|
||||
valueNm: 'unitCd',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
list: 'unitCdList',
|
||||
itemText: 'commCdNm',
|
||||
itemValue: 'commCd',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -970,7 +952,10 @@ const myDetail = [
|
||||
valueNm: 'rangMin',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -978,7 +963,10 @@ const myDetail = [
|
||||
valueNm: 'rangMax',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -986,7 +974,10 @@ const myDetail = [
|
||||
valueNm: 'alrmHihi',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -994,7 +985,10 @@ const myDetail = [
|
||||
valueNm: 'alrmHi',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -1002,7 +996,10 @@ const myDetail = [
|
||||
valueNm: 'alrmLo',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'InputText',
|
||||
@ -1010,7 +1007,10 @@ const myDetail = [
|
||||
valueNm: 'alrmLolo',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'CheckBox',
|
||||
@ -1018,8 +1018,11 @@ const myDetail = [
|
||||
valueNm: 'totFg',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pr-4 pt-5',
|
||||
value: { '1': true, '0': false },
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'CheckBox',
|
||||
@ -1027,9 +1030,12 @@ const myDetail = [
|
||||
valueNm: 'useFg',
|
||||
disabled: false,
|
||||
cols: 6,
|
||||
class: 'py-2',
|
||||
class: 'py-2 pl-4 pt-5',
|
||||
value: { '1': true, '0': false },
|
||||
required: false,
|
||||
iconShow: true,
|
||||
labelCols: 12,
|
||||
textCols: 12,
|
||||
},
|
||||
{
|
||||
type: 'SelectBox',
|
||||
@ -1056,4 +1062,4 @@ const myDetail = [
|
||||
class: 'py-2',
|
||||
},
|
||||
];
|
||||
</script>
|
||||
</script>
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<PageTitle/>
|
||||
<CommonPageTitle/>
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -58,7 +58,7 @@
|
||||
@sendSelectedRowStatInfo="getSelectedRowStatInfo" :selectedRowDataWatchFlag="true" />
|
||||
</div>
|
||||
</v-card-actions>
|
||||
<!-- <div class="d-flex align-center justify-space-between">
|
||||
<div class="d-flex align-center justify-space-between">
|
||||
<pagination
|
||||
id="pagination"
|
||||
:total-count="totalCount"
|
||||
@ -66,10 +66,10 @@
|
||||
:limit="limit"
|
||||
@loadData="changeGrid"
|
||||
/>
|
||||
</div> -->
|
||||
</div>
|
||||
</v-card>
|
||||
</v-col>
|
||||
<v-col :cols="7" class="h100">
|
||||
<v-col :cols="7" class="">
|
||||
<v-card class="pb-5">
|
||||
<v-card-title>TAG 상세</v-card-title>
|
||||
<div class="px-5" style="height:calc(100% - 70px)">
|
||||
@ -107,7 +107,6 @@ import TagAddInfoTab from '@/components/pages/ems/TagInfo/TagAddInfoTab';
|
||||
import Grid from '~/components/common/Grid';
|
||||
import Utility from '~/plugins/utility';
|
||||
import pagination from '~/components/Pagination';
|
||||
import PageTitle from "~/components/common/PageTitle";
|
||||
|
||||
let myTitle;
|
||||
// const myPrgmId = "PRG0051";
|
||||
@ -140,13 +139,12 @@ export default {
|
||||
TagAddInfoTab,
|
||||
Grid,
|
||||
pagination,
|
||||
PageTitle
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
myPrgmId: myPrgmId,
|
||||
gridName: 'rowGrid',
|
||||
loadGrid: true,
|
||||
loadGrid: false,
|
||||
tab: null,
|
||||
items: [
|
||||
{ name: 'TAG 정보', id: 'tagBaseInfoTab', disabledFlag: false },
|
||||
@ -275,16 +273,12 @@ export default {
|
||||
this.gridInit();
|
||||
},
|
||||
gridInit() {
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 180;
|
||||
const gridHeight = this.$refs.gridParent.offsetHeight - 16;
|
||||
|
||||
const myOptions = {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
pageOptions: {
|
||||
useClient: true,
|
||||
perPage: 10,
|
||||
},
|
||||
scrollX: true,
|
||||
header: {
|
||||
height: 38,
|
||||
@ -527,16 +521,16 @@ export default {
|
||||
//rowKey: 0,
|
||||
rowKey:
|
||||
this.pageData.rowGridSelectKey == '' ||
|
||||
this.pageData.rowGridSelectKey == null
|
||||
this.pageData.rowGridSelectKey == null
|
||||
? 0
|
||||
: this.pageData.rowGridSelectKey ==
|
||||
this.$refs[this.gridName].getData().length - 1
|
||||
? this.pageData.rowGridSelectKey
|
||||
: 0,
|
||||
this.$refs[this.gridName].getData().length - 1
|
||||
? this.pageData.rowGridSelectKey
|
||||
: 0,
|
||||
columnName: 'tagId',
|
||||
setScroll: true,
|
||||
});
|
||||
} catch (error) { }
|
||||
} catch (error) {}
|
||||
// this.$refs[this.gridName].focus({
|
||||
// rowKey: 0,
|
||||
// columnName: "tagId",
|
||||
@ -773,7 +767,7 @@ export default {
|
||||
gridEditingFinish(data) {
|
||||
this.$refs[this.gridName].editingFinish(data);
|
||||
},
|
||||
changeGrid: async function (pageNum, limit) {
|
||||
changeGrid: async function(pageNum, limit) {
|
||||
this.page = pageNum;
|
||||
this.limit = limit;
|
||||
|
||||
@ -817,9 +811,9 @@ function isValidAlrmVal(obj) {
|
||||
if (Number(obj[keyList[i]]) >= Number(obj[keyList[j]])) {
|
||||
alert(
|
||||
nameList[j] +
|
||||
'값은 ' +
|
||||
nameList[i] +
|
||||
'값보다 큰 숫자를 입력해야 합니다.',
|
||||
'값은 ' +
|
||||
nameList[i] +
|
||||
'값보다 큰 숫자를 입력해야 합니다.',
|
||||
);
|
||||
return false;
|
||||
}
|
||||
@ -1112,4 +1106,4 @@ const myDetail = [
|
||||
class: 'py-2',
|
||||
},
|
||||
];
|
||||
</script>
|
||||
</script>
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<v-row ref="searchFilter">
|
||||
<common-page-title />
|
||||
<v-row ref="searchFilter" class="mt-2">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="center" no-gutters>
|
||||
@ -555,7 +556,7 @@ export default {
|
||||
header: {
|
||||
height: 37,
|
||||
},
|
||||
rowHeight: 'auto',
|
||||
rowHeight: 37,
|
||||
|
||||
|
||||
// pageOptions: {
|
||||
|
@ -195,68 +195,51 @@ export default {
|
||||
});
|
||||
},
|
||||
async getEqpmKind() {
|
||||
// let res = await this.postApiReturn({
|
||||
// apiKey: "selectEqpmKindCodeList",
|
||||
// resKey: "eqpmKindCodeLists",
|
||||
// sendParam: {},
|
||||
// });
|
||||
let res = await this.postApiReturn({
|
||||
apiKey: 'selectEqpmKindCodeList',
|
||||
resKey: 'eqpmKindCodeLists',
|
||||
sendParam: {},
|
||||
});
|
||||
|
||||
let res = [
|
||||
{
|
||||
eqpmKindId: "냉동기저온",
|
||||
eqpmKindNm: "냉동기저온",
|
||||
},
|
||||
{
|
||||
eqpmKindId: "냉동기고온",
|
||||
eqpmKindNm: "냉동기고온",
|
||||
},
|
||||
];
|
||||
|
||||
if (res.length > 0) {
|
||||
this.selectValueList01 = await res.map((item) => {
|
||||
return {
|
||||
// text: item.eqpmKindNm,
|
||||
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,
|
||||
});
|
||||
},
|
||||
if (res.length > 0) {
|
||||
this.selectValueList01 = await res.map(item => {
|
||||
return {
|
||||
text: item.eqpmKindNm,
|
||||
value: item.eqpmKindId,
|
||||
};
|
||||
});
|
||||
this.selectValue01 = this.selectValueList01[0].value;
|
||||
} else {
|
||||
this.selectValueList01 = [];
|
||||
this.selectValue01 = null;
|
||||
}
|
||||
this.setPageData({
|
||||
eqpmKindList: this.selectValueList01,
|
||||
eqpmKindId: this.selectValue01,
|
||||
});
|
||||
},
|
||||
gridInit() {},
|
||||
getRowGridData() {},
|
||||
async getData() {
|
||||
// let res = await this.postApiReturn({
|
||||
// apiKey: "selectEnrgEffcTotSumm",
|
||||
// resKey: "totSummData",
|
||||
// sendParam: {
|
||||
// fromDt: this.pageData.fromDt,
|
||||
// eqpmKindId: this.selectValue01,
|
||||
// },
|
||||
// });
|
||||
let res = ["aaa", "bbb"];
|
||||
await this.getChartData(res);
|
||||
let res = await this.postApiReturn({
|
||||
apiKey: 'selectEnrgEffcTotSumm',
|
||||
resKey: 'totSummData',
|
||||
sendParam: {
|
||||
fromDt: this.pageData.fromDt,
|
||||
eqpmKindId: this.selectValue01,
|
||||
},
|
||||
});
|
||||
|
||||
// this.selectData = res.filter((item, i) => {
|
||||
// return (
|
||||
// res.findIndex((item2, j) => {
|
||||
// return item.eqpmGrpId === item2.eqpmGrpId;
|
||||
// }) === i
|
||||
// );
|
||||
// });
|
||||
await this.getChartData(res);
|
||||
|
||||
this.selectData = [
|
||||
{ eqpmGrpId: "G001", eqpmGrpNm: "Group A", otherProp: "..." },
|
||||
{ eqpmGrpId: "G002", eqpmGrpNm: "Group B", otherProp: "..." },
|
||||
];
|
||||
},
|
||||
this.selectData = res.filter((item, i) => {
|
||||
return (
|
||||
res.findIndex((item2, j) => {
|
||||
return item.eqpmGrpId === item2.eqpmGrpId;
|
||||
}) === i
|
||||
);
|
||||
});
|
||||
},
|
||||
barClick(event, chartName) {
|
||||
var data = {};
|
||||
if (chartName == "card") {
|
||||
@ -291,52 +274,40 @@ export default {
|
||||
});
|
||||
},
|
||||
async getChartData(data) {
|
||||
var chartDataObj = {};
|
||||
this.objList = {};
|
||||
// let res = await this.postApiReturn({
|
||||
// apiKey : 'selectEnrgEffcTotSumm',
|
||||
// resKey : 'totSummData',
|
||||
// sendParam:{
|
||||
// fromDt : this.pageData.fromDt,
|
||||
// eqpmKindId : this.pageData.eqpmKindId,
|
||||
// }
|
||||
// });
|
||||
var chartDataObj = {};
|
||||
this.objList = {};
|
||||
// let res = await this.postApiReturn({
|
||||
// apiKey : 'selectEnrgEffcTotSumm',
|
||||
// resKey : 'totSummData',
|
||||
// sendParam:{
|
||||
// fromDt : this.pageData.fromDt,
|
||||
// eqpmKindId : this.pageData.eqpmKindId,
|
||||
// }
|
||||
// });
|
||||
|
||||
// data.map((item) => {
|
||||
// if (chartDataObj[item.eqpmGrpId] != null) {
|
||||
// chartDataObj[item.eqpmGrpId].push(item);
|
||||
// } else {
|
||||
// chartDataObj[item.eqpmGrpId] = [item];
|
||||
// }
|
||||
// });
|
||||
data.map(item => {
|
||||
if (chartDataObj[item.eqpmGrpId] != null) {
|
||||
chartDataObj[item.eqpmGrpId].push(item);
|
||||
} else {
|
||||
chartDataObj[item.eqpmGrpId] = [item];
|
||||
}
|
||||
});
|
||||
|
||||
chartDataObj = {
|
||||
group1: [
|
||||
{ fabNm: "Fab A", okCnt: 120, ngCnt: 30 },
|
||||
{ fabNm: "Fab B", okCnt: 150, ngCnt: 20 },
|
||||
{ fabNm: "Fab C", okCnt: 100, ngCnt: 50 },
|
||||
],
|
||||
group2: [
|
||||
{ fabNm: "Fab D", okCnt: 180, ngCnt: 10 },
|
||||
{ fabNm: "Fab E", okCnt: 160, ngCnt: 25 },
|
||||
{ fabNm: "Fab F", okCnt: 140, ngCnt: 35 },
|
||||
],
|
||||
};
|
||||
// chartDataObj.keys()[0]
|
||||
var i = 0;
|
||||
for (var x of Object.keys(chartDataObj)) {
|
||||
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),
|
||||
});
|
||||
|
||||
// chartDataObj.keys()[0]
|
||||
var i = 0;
|
||||
for (var x of Object.keys(chartDataObj)) {
|
||||
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]]);
|
||||
},
|
||||
this.setChartData(chartDataObj[x], i);
|
||||
}
|
||||
// this.setChartData(chartDataObj[Object.keys(chartDataObj)[0]]);
|
||||
},
|
||||
async setChartData(data, number) {
|
||||
this.loadChartList[number - 1] = false;
|
||||
let xAxisData = [];
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="l-layout">
|
||||
<common-page-title />
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,12 +1,12 @@
|
||||
<template>
|
||||
<div ref="mainDiv" class="l-layout">
|
||||
<common-page-title />
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
<v-row align="end" no-gutters>
|
||||
<v-col :cols="2.5">
|
||||
<DatePicker :parentPrgmId="myPrgmId" :label="'조회연도'" />
|
||||
<DatePicker :parentPrgmId="myPrgmId" :label="'조회연도'" customClass="datepicker-large"/>
|
||||
</v-col>
|
||||
<v-col :cols="2.5">
|
||||
<component :is="'SelectBox'" ref="SelectBox1" :propsValue="selectValue01" :itemList="selectValueList01"
|
||||
@ -24,9 +24,9 @@
|
||||
<BtnSearch size="large" @click="search" />
|
||||
<!-- <v-col>
|
||||
</v-col> -->
|
||||
<component ref="EnrgUsePlanModiPop" :is="'EnrgUsePlanModiPop'" :label="'test'" :parentPrgmId="myPrgmId"
|
||||
@gridEditingFinish="gridEditingFinish" />
|
||||
</v-row>
|
||||
<component ref="EnrgUsePlanModiPop" :is="'EnrgUsePlanModiPop'" :label="'test'" :parentPrgmId="myPrgmId"
|
||||
@gridEditingFinish="gridEditingFinish" />
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
@ -44,8 +44,6 @@
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
@ -106,9 +104,6 @@ export default {
|
||||
fromDt: new Date().getFullYear(),
|
||||
rowKey: null,
|
||||
edtingFinishFlag: 'Y',
|
||||
dataPathMock: {
|
||||
// "grid01": {}
|
||||
},
|
||||
// gridName: 'rowGrid',
|
||||
};
|
||||
},
|
||||
@ -166,12 +161,8 @@ export default {
|
||||
defaultData: defaultData,
|
||||
});
|
||||
},
|
||||
created() { },
|
||||
created() {},
|
||||
async mounted() {
|
||||
// -------
|
||||
// this.initTest();
|
||||
// return;
|
||||
// ========End test===========
|
||||
await this.init();
|
||||
this.initedFlag = true;
|
||||
},
|
||||
@ -184,122 +175,6 @@ export default {
|
||||
getBlocMstrList: 'modules/search/getBlocMstrList',
|
||||
getAddInfoList: 'modules/search/getAddInfoList',
|
||||
}),
|
||||
...mapMutations({
|
||||
setPageData: 'setPageData',
|
||||
}),
|
||||
initTest() {
|
||||
let _this = this;
|
||||
// _this.setPageData({ popupDialogFg: true });
|
||||
|
||||
class MockCustumButton {
|
||||
constructor(props) {
|
||||
const { grid, rowKey, columnInfo } = props;
|
||||
const value = columnInfo.renderer.options.value;
|
||||
|
||||
const elDiv = document.createElement('div');
|
||||
elDiv.innerHTML = `<span>${value}</span>`;
|
||||
$(elDiv).addClass('tui-grid-cell-content d-flex justify-space-between');
|
||||
const el = document.createElement('button');
|
||||
$(el).addClass('edit-btn blue--text');
|
||||
el.innerText = 'Edit';
|
||||
|
||||
el.addEventListener('click', function (event) {
|
||||
// console.log("------DEBUG----_this:", _this);
|
||||
// _this.setPageData({ eqpmNm: selectedGridData[0]?.eqpmNm });
|
||||
_this.setPageData({ popupDialogFg: true });
|
||||
});
|
||||
|
||||
elDiv.appendChild(el);
|
||||
this.elDiv = elDiv;
|
||||
}
|
||||
|
||||
getElement() {
|
||||
return this.elDiv;
|
||||
}
|
||||
}
|
||||
const mockData = {
|
||||
column: [
|
||||
{ header: 'No', name: 'rowNum', align: 'center', width: 40 },
|
||||
{ header: 'FAB', name: 'fab', align: 'left', width: 80 },
|
||||
{ header: '설비 그룹', name: 'eqpmGrpNm', align: 'left', minWidth: 150 },
|
||||
// {
|
||||
// header: '설비명', name: 'eqpmNm', align: 'left', minWidth: 150,
|
||||
// formatter: ({ value, row }) => {
|
||||
// return `
|
||||
// <div class="d-flex justify-space-between">
|
||||
// <span>${value}</span>
|
||||
// <button class="edit-btn blue--text" data-row='${JSON.stringify(row)}'>Edit</button
|
||||
// </div>
|
||||
// `;
|
||||
// }
|
||||
// },
|
||||
{
|
||||
header: '설비명',
|
||||
name: 'eqpmNm',
|
||||
width: 70,
|
||||
align: 'left',
|
||||
minWidth: 150,
|
||||
renderer: {
|
||||
type: MockCustumButton,
|
||||
options: {
|
||||
value: '계획수정',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
header: '구분', name: 'gubun', align: 'left', width: 80,
|
||||
formatter({ value }) {
|
||||
let retVal = '';
|
||||
if (value == '1RSLT') {
|
||||
retVal = '전년실적';
|
||||
} else if (value == '2PLAN') {
|
||||
retVal = '계획';
|
||||
} else {
|
||||
retVal = value;
|
||||
}
|
||||
return retVal;
|
||||
},
|
||||
},
|
||||
|
||||
{ header: '1월', name: 'jan', align: 'right', width: 80 },
|
||||
{ header: '2월', name: 'feb', align: 'right', width: 80 },
|
||||
{ header: '3월', name: 'mar', align: 'right', width: 80 },
|
||||
{ header: '4월', name: 'apr', align: 'right', width: 80 },
|
||||
{ header: '5월', name: 'may', align: 'right', width: 80 },
|
||||
{ header: '6월', name: 'jun', align: 'right', width: 80 },
|
||||
{ header: '7월', name: 'jul', align: 'right', width: 80 },
|
||||
{ header: '8월', name: 'aug', align: 'right', width: 80 },
|
||||
{ header: '9월', name: 'sep', align: 'right', width: 80 },
|
||||
{ header: '10월', name: 'oct', align: 'right', width: 80 },
|
||||
{ header: '11월', name: 'nov', align: 'right', width: 80 },
|
||||
{ header: '12월', name: 'dec', align: 'right', width: 80 }
|
||||
],
|
||||
data: dataPathDataExample,
|
||||
defaultRow: dataPathDataExample,
|
||||
option: {
|
||||
columnOptions: {
|
||||
resizable: true,
|
||||
},
|
||||
header: {
|
||||
height: 65,
|
||||
complexColumns: [
|
||||
{
|
||||
header: '2025 년',
|
||||
name: 'yyyyCol',
|
||||
childNames: [
|
||||
'jan', 'feb', 'mar', 'apr', 'may', 'jun',
|
||||
'jul', 'aug', 'sep', 'oct', 'nov', 'dec'
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
}
|
||||
};
|
||||
this.dataPathMock[this.gridName] = mockData;
|
||||
this.$nextTick(() => {
|
||||
this.loadGrid = true;
|
||||
});
|
||||
},
|
||||
async init() {
|
||||
await this.getFab();
|
||||
await this.getEqpmKind();
|
||||
@ -436,7 +311,7 @@ export default {
|
||||
|
||||
if (!this.disabled) {
|
||||
// click 이벤트
|
||||
el2.addEventListener('click', function (event) {
|
||||
this.el.addEventListener('click', function(event) {
|
||||
let gridData = grid.store.data.rawData;
|
||||
let rowNum = gridData[rowKey].rowNum;
|
||||
let selectedGridData = gridData.filter(item => {
|
||||
@ -600,7 +475,7 @@ export default {
|
||||
let selectedGridData = gridData.filter(item => {
|
||||
return item.rowNum == data.rowNum;
|
||||
});
|
||||
await this.$nextTick(() => { });
|
||||
await this.$nextTick(() => {});
|
||||
this.setPageData({
|
||||
rowGrid2SelectData: selectedGridData,
|
||||
});
|
||||
@ -799,8 +674,8 @@ export default {
|
||||
dataArr[i][qty] == ''
|
||||
? null
|
||||
: parseInt(dataArr[i][qty]) == 0
|
||||
? 0
|
||||
: dataArr[i][qty];
|
||||
? 0
|
||||
: dataArr[i][qty];
|
||||
dataList.push(temp);
|
||||
}
|
||||
}
|
||||
@ -942,110 +817,18 @@ const defaultData = {
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const dataPathDataExample = [
|
||||
{
|
||||
rowNum: 1,
|
||||
fab: 'B01',
|
||||
eqpmGrpNm: '방송기술운',
|
||||
eqpmNm: 'U/T_LT_CH101',
|
||||
gubun: '전력량',
|
||||
jan: 110000,
|
||||
feb: 112000,
|
||||
mar: 115000,
|
||||
apr: 117000,
|
||||
may: 120000,
|
||||
jun: 118000,
|
||||
jul: 119000,
|
||||
aug: 121000,
|
||||
sep: 122000,
|
||||
oct: 123000,
|
||||
nov: 124000,
|
||||
dec: 125000
|
||||
},
|
||||
{
|
||||
rowNum: 2,
|
||||
fab: 'B02',
|
||||
eqpmGrpNm: '방송기술운',
|
||||
eqpmNm: 'U/T_LT_CH102',
|
||||
gubun: '전력량',
|
||||
jan: 81000,
|
||||
feb: 82000,
|
||||
mar: 83000,
|
||||
apr: 84000,
|
||||
may: 85000,
|
||||
jun: 86000,
|
||||
jul: 87000,
|
||||
aug: 88000,
|
||||
sep: 89000,
|
||||
oct: 90000,
|
||||
nov: 91000,
|
||||
dec: 92000
|
||||
},
|
||||
{
|
||||
rowNum: 3, fab: 'C01', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH124', gubun: '수도량',
|
||||
jan: 106178, feb: 104740, mar: 92283, apr: 116081, may: 98945, jun: 126579,
|
||||
jul: 90690, aug: 124243, sep: 97524, oct: 84072, nov: 88160, dec: 118183
|
||||
},
|
||||
{
|
||||
rowNum: 4, fab: 'B01', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH103', gubun: '가스량',
|
||||
jan: 80442, feb: 102867, mar: 114939, apr: 106335, may: 81743, jun: 83711,
|
||||
jul: 86114, aug: 97432, sep: 84146, oct: 84775, nov: 117921, dec: 119417
|
||||
},
|
||||
{
|
||||
rowNum: 5, fab: 'B01', eqpmGrpNm: '설비운영팀', eqpmNm: 'U/T_LT_CH156', gubun: '전력량',
|
||||
jan: 90341, feb: 94072, mar: 122754, apr: 85471, may: 90813, jun: 116831,
|
||||
jul: 90856, aug: 109437, sep: 94029, oct: 96075, nov: 127067, dec: 102503
|
||||
},
|
||||
{
|
||||
rowNum: 6, fab: 'B03', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH183', gubun: '가스량',
|
||||
jan: 104163, feb: 107012, mar: 104631, apr: 83055, may: 106311, jun: 117306,
|
||||
jul: 86434, aug: 117087, sep: 118414, oct: 91499, nov: 93829, dec: 94192
|
||||
},
|
||||
{
|
||||
rowNum: 7, fab: 'C01', eqpmGrpNm: '전력관리부', eqpmNm: 'U/T_LT_CH158', gubun: '가스량',
|
||||
jan: 84821, feb: 128234, mar: 116883, apr: 116718, may: 114738, jun: 88297,
|
||||
jul: 93840, aug: 84700, sep: 98360, oct: 87021, nov: 113098, dec: 94734
|
||||
},
|
||||
{
|
||||
rowNum: 8, fab: 'B02', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH179', gubun: '가스량',
|
||||
jan: 128714, feb: 88797, mar: 124808, apr: 109283, may: 113141, jun: 82873,
|
||||
jul: 114993, aug: 129108, sep: 100885, oct: 125730, nov: 92127, dec: 122286
|
||||
},
|
||||
{
|
||||
rowNum: 9, fab: 'C01', eqpmGrpNm: '전력관리부', eqpmNm: 'U/T_LT_CH191', gubun: '전력량',
|
||||
jan: 107258, feb: 108424, mar: 113604, apr: 116648, may: 124149, jun: 129978,
|
||||
jul: 112215, aug: 129602, sep: 93551, oct: 111272, nov: 89736, dec: 128423
|
||||
},
|
||||
{
|
||||
rowNum: 10, fab: 'B02', eqpmGrpNm: '방송기술운', eqpmNm: 'U/T_LT_CH104', gubun: '전력량',
|
||||
jan: 82089, feb: 102793, mar: 96784, apr: 85238, may: 86153, jun: 123849,
|
||||
jul: 115095, aug: 129484, sep: 102109, oct: 80976, nov: 119841, dec: 106309
|
||||
},
|
||||
{
|
||||
rowNum: 11, fab: 'C02', eqpmGrpNm: '전력관리부', eqpmNm: 'U/T_LT_CH139', gubun: '전력량',
|
||||
jan: 128592, feb: 95647, mar: 85982, apr: 126824, may: 87928, jun: 128967,
|
||||
jul: 94637, aug: 107530, sep: 122533, oct: 97546, nov: 112110, dec: 126250
|
||||
},
|
||||
{
|
||||
rowNum: 12, fab: 'C01', eqpmGrpNm: '설비운영팀', eqpmNm: 'U/T_LT_CH109', gubun: '전력량',
|
||||
jan: 106530, feb: 91716, mar: 111104, apr: 102663, may: 108912, jun: 91464,
|
||||
jul: 121245, aug: 90785, sep: 120586, oct: 105718, nov: 96191, dec: 111513
|
||||
}
|
||||
];
|
||||
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
// @import '@/assets/scss/common.scss';
|
||||
@import '@/assets/scss/var.scss';
|
||||
|
||||
@each $theme in dark, light {
|
||||
.v-application.#{$theme}-mode {
|
||||
.tui-grid {
|
||||
|
||||
&-row-odd,
|
||||
&-row-even {
|
||||
&:hover>.colrowspan {
|
||||
background-color: map-deep-get($config,
|
||||
&:hover > .colrowspan {
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
'tui-grid-cell-backgroundColor'
|
||||
) !important;
|
||||
@ -1055,10 +838,10 @@ const dataPathDataExample = [
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-cell {
|
||||
&.row-selected.colrowspan {
|
||||
background-color: map-deep-get($config,
|
||||
background-color: map-deep-get(
|
||||
$config,
|
||||
#{$theme},
|
||||
'tui-grid-cell-backgroundColor'
|
||||
) !important;
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div ref="mainDiv" class="l-layout">
|
||||
<PageTitle text="냉동기" />
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -180,7 +180,7 @@ export default {
|
||||
contentData: {},
|
||||
loadChart: false,
|
||||
|
||||
testFlag: true,
|
||||
testFlag: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -270,15 +270,14 @@ export default {
|
||||
}
|
||||
},
|
||||
async getEnrgUseTotSummData() {
|
||||
// var res = await this.postApiReturn({
|
||||
// apiKey: "selectEnrgUseTotSumm",
|
||||
// resKey: "data",
|
||||
// sendParam: {
|
||||
// fromDt: this.pageData.fromDt,
|
||||
// eqpmKind: this.selectValue01,
|
||||
// },
|
||||
// });
|
||||
let res = [];
|
||||
var res = await this.postApiReturn({
|
||||
apiKey: "selectEnrgUseTotSumm",
|
||||
resKey: "data",
|
||||
sendParam: {
|
||||
fromDt: this.pageData.fromDt,
|
||||
eqpmKind: this.selectValue01,
|
||||
},
|
||||
});
|
||||
|
||||
if (this.testFlag == true) {
|
||||
res = [
|
||||
|
@ -4,7 +4,7 @@
|
||||
<v-avatar size="12" :style="{ backgroundColor: 'currentColor' }"></v-avatar>
|
||||
에너지 사용량 실적
|
||||
</h1> -->
|
||||
<PageTitle text="에너지 사용량 실적" />
|
||||
<CommonPageTitle />
|
||||
<v-row ref="searchFilter">
|
||||
<v-col :cols="12">
|
||||
<v-card class="searchFilter">
|
||||
@ -255,9 +255,8 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
async init() {
|
||||
// await this.getSelectValueList();
|
||||
|
||||
// await this.setQueryParams();
|
||||
await this.getSelectValueList();
|
||||
await this.setQueryParams();
|
||||
this.gridInit();
|
||||
await this.getGridData();
|
||||
|
||||
@ -488,131 +487,41 @@ export default {
|
||||
this.loadGrid = false;
|
||||
this.enrgUseMainIdxDesc = [];
|
||||
var apiKey = null;
|
||||
// var params = {
|
||||
// fabId: this.selectValue01,
|
||||
// eqpmKindId: this.selectValue02,
|
||||
// eqpmGrpId: this.selectValue03,
|
||||
// fromDt: this.pageData.fromDt,
|
||||
// };
|
||||
var params = {
|
||||
fabId: this.selectValue01,
|
||||
eqpmKindId: this.selectValue02,
|
||||
eqpmGrpId: this.selectValue03,
|
||||
fromDt: this.pageData.fromDt,
|
||||
};
|
||||
|
||||
// if (this.pageData.cmCycle == "CYC_DAY") {
|
||||
// params["fromDtMm"] = String(this.pageData.fromDt).substring(0, 6);
|
||||
// apiKey = "selectDailyEnrgUseMainIdx";
|
||||
// } else if (this.pageData.cmCycle == "CYC_MONTH") {
|
||||
// apiKey = "selectMonthlyEnrgUseMainIdx";
|
||||
// }
|
||||
if (this.pageData.cmCycle == "CYC_DAY") {
|
||||
params["fromDtMm"] = String(this.pageData.fromDt).substring(0, 6);
|
||||
apiKey = "selectDailyEnrgUseMainIdx";
|
||||
} else if (this.pageData.cmCycle == "CYC_MONTH") {
|
||||
apiKey = "selectMonthlyEnrgUseMainIdx";
|
||||
}
|
||||
|
||||
// var res = await this.postApiReturn({
|
||||
// apiKey: apiKey,
|
||||
// resKey: "eqpmIndMntrData",
|
||||
// sendParam: params,
|
||||
// });
|
||||
var res = await this.postApiReturn({
|
||||
apiKey: apiKey,
|
||||
resKey: "eqpmIndMntrData",
|
||||
sendParam: params,
|
||||
});
|
||||
|
||||
// this.enrgUseMainIdxDesc = await this.postApiReturn({
|
||||
// apiKey: "selectEnrgUseMainIdxDesc",
|
||||
// resKey: "eqpmIndMntrData",
|
||||
// sendParam: {
|
||||
// eqpmGrpId: this.selectValue03,
|
||||
// },
|
||||
// });
|
||||
|
||||
var newRes = [
|
||||
{
|
||||
no: 1,
|
||||
fabId: "FAB001",
|
||||
fabNm: "서울FAB",
|
||||
eqpmGrpId: "GRP01",
|
||||
eqpmGrpNm: "조립라인",
|
||||
eqpmId: "EQ001",
|
||||
eqpmNm: "설비A",
|
||||
planVal: 1000,
|
||||
usedVal: 950,
|
||||
effcRt: "95%",
|
||||
gd01: 88,
|
||||
gd02: 90,
|
||||
gd03: 85,
|
||||
gd04: 87,
|
||||
gd05: 89,
|
||||
gd06: 86,
|
||||
gd07: 90,
|
||||
gd08: 88,
|
||||
gd09: 87,
|
||||
gd10: 89,
|
||||
this.enrgUseMainIdxDesc = await this.postApiReturn({
|
||||
apiKey: "selectEnrgUseMainIdxDesc",
|
||||
resKey: "eqpmIndMntrData",
|
||||
sendParam: {
|
||||
eqpmGrpId: this.selectValue03,
|
||||
},
|
||||
{
|
||||
no: 2,
|
||||
fabId: "FAB002",
|
||||
fabNm: "부산FAB",
|
||||
eqpmGrpId: "GRP02",
|
||||
eqpmGrpNm: "검사라인",
|
||||
eqpmId: "EQ002",
|
||||
eqpmNm: "설비B",
|
||||
planVal: 1200,
|
||||
usedVal: 1100,
|
||||
effcRt: "91.7%",
|
||||
gd01: 85,
|
||||
gd02: 84,
|
||||
gd03: 86,
|
||||
gd04: 83,
|
||||
gd05: 82,
|
||||
gd06: 84,
|
||||
gd07: 85,
|
||||
gd08: 86,
|
||||
gd09: 87,
|
||||
gd10: 88,
|
||||
},
|
||||
{
|
||||
no: 3,
|
||||
fabId: "FAB003",
|
||||
fabNm: "대전FAB",
|
||||
eqpmGrpId: "GRP03",
|
||||
eqpmGrpNm: "포장라인",
|
||||
eqpmId: "EQ003",
|
||||
eqpmNm: "설비C",
|
||||
planVal: 900,
|
||||
usedVal: 870,
|
||||
effcRt: "96.7%",
|
||||
gd01: 90,
|
||||
gd02: 91,
|
||||
gd03: 89,
|
||||
gd04: 88,
|
||||
gd05: 90,
|
||||
gd06: 91,
|
||||
gd07: 92,
|
||||
gd08: 90,
|
||||
gd09: 89,
|
||||
gd10: 91,
|
||||
},
|
||||
{
|
||||
no: 4,
|
||||
fabId: "FAB004",
|
||||
fabNm: "광주FAB",
|
||||
eqpmGrpId: "GRP04",
|
||||
eqpmGrpNm: "테스트라인",
|
||||
eqpmId: "EQ004",
|
||||
eqpmNm: "설비D",
|
||||
planVal: 1100,
|
||||
usedVal: 1050,
|
||||
effcRt: "95.5%",
|
||||
gd01: 87,
|
||||
gd02: 88,
|
||||
gd03: 86,
|
||||
gd04: 85,
|
||||
gd05: 86,
|
||||
gd06: 87,
|
||||
gd07: 88,
|
||||
gd08: 89,
|
||||
gd09: 90,
|
||||
gd10: 91,
|
||||
},
|
||||
];
|
||||
});
|
||||
|
||||
// for (var i = 0; i < res.length; i++) {
|
||||
// newRes.push({
|
||||
// ...res[i],
|
||||
// no: i + 1,
|
||||
// });
|
||||
// }
|
||||
var newRes = [];
|
||||
for (var i = 0; i < res.length; i++) {
|
||||
newRes.push({
|
||||
...res[i],
|
||||
no: i + 1,
|
||||
});
|
||||
}
|
||||
|
||||
this.setGridData({
|
||||
gridKey: this.gridName,
|
||||
@ -752,141 +661,9 @@ const defaultData = {
|
||||
},
|
||||
fromDt: Utility.setFormatDate(new Date(), "YYYYMM"), // 조회 시작일
|
||||
grid01: {
|
||||
data: [
|
||||
{
|
||||
no: 1,
|
||||
fabId: "FAB001",
|
||||
fabNm: "서울FAB",
|
||||
eqpmGrpId: "GRP01",
|
||||
eqpmGrpNm: "조립라인",
|
||||
eqpmId: "EQ001",
|
||||
eqpmNm: "설비A",
|
||||
planVal: 1000,
|
||||
usedVal: 950,
|
||||
effcRt: "95%",
|
||||
gd01: 88,
|
||||
gd02: 90,
|
||||
gd03: 85,
|
||||
gd04: 87,
|
||||
gd05: 89,
|
||||
gd06: 86,
|
||||
gd07: 90,
|
||||
gd08: 88,
|
||||
gd09: 87,
|
||||
gd10: 89,
|
||||
},
|
||||
{
|
||||
no: 2,
|
||||
fabId: "FAB002",
|
||||
fabNm: "부산FAB",
|
||||
eqpmGrpId: "GRP02",
|
||||
eqpmGrpNm: "검사라인",
|
||||
eqpmId: "EQ002",
|
||||
eqpmNm: "설비B",
|
||||
planVal: 1200,
|
||||
usedVal: 1100,
|
||||
effcRt: "91.7%",
|
||||
gd01: 85,
|
||||
gd02: 84,
|
||||
gd03: 86,
|
||||
gd04: 83,
|
||||
gd05: 82,
|
||||
gd06: 84,
|
||||
gd07: 85,
|
||||
gd08: 86,
|
||||
gd09: 87,
|
||||
gd10: 88,
|
||||
},
|
||||
{
|
||||
no: 3,
|
||||
fabId: "FAB003",
|
||||
fabNm: "대전FAB",
|
||||
eqpmGrpId: "GRP03",
|
||||
eqpmGrpNm: "포장라인",
|
||||
eqpmId: "EQ003",
|
||||
eqpmNm: "설비C",
|
||||
planVal: 900,
|
||||
usedVal: 870,
|
||||
effcRt: "96.7%",
|
||||
gd01: 90,
|
||||
gd02: 91,
|
||||
gd03: 89,
|
||||
gd04: 88,
|
||||
gd05: 90,
|
||||
gd06: 91,
|
||||
gd07: 92,
|
||||
gd08: 90,
|
||||
gd09: 89,
|
||||
gd10: 91,
|
||||
},
|
||||
{
|
||||
no: 4,
|
||||
fabId: "FAB004",
|
||||
fabNm: "광주FAB",
|
||||
eqpmGrpId: "GRP04",
|
||||
eqpmGrpNm: "테스트라인",
|
||||
eqpmId: "EQ004",
|
||||
eqpmNm: "설비D",
|
||||
planVal: 1100,
|
||||
usedVal: 1050,
|
||||
effcRt: "95.5%",
|
||||
gd01: 87,
|
||||
gd02: 88,
|
||||
gd03: 86,
|
||||
gd04: 85,
|
||||
gd05: 86,
|
||||
gd06: 87,
|
||||
gd07: 88,
|
||||
gd08: 89,
|
||||
gd09: 90,
|
||||
gd10: 91,
|
||||
},
|
||||
],
|
||||
column: [
|
||||
{ header: "NO", name: "no", align: "center" },
|
||||
{ header: "fabId", name: "fabId", hidden: true },
|
||||
{ header: "FAB", name: "fabNm", align: "left" },
|
||||
{ header: "eqpmGrpId", name: "eqpmGrpId", hidden: true },
|
||||
{ header: "설비그룹", name: "eqpmGrpNm", align: "left" },
|
||||
{ header: "eqpmId", name: "eqpmId", hidden: true },
|
||||
{ header: "설비명", name: "eqpmNm", align: "left" },
|
||||
{ header: "계획량", name: "planVal", align: "right" },
|
||||
{ header: "사용량", name: "usedVal", align: "right" },
|
||||
{ header: "KPI", name: "effcRt", align: "right" },
|
||||
{ header: "지표1", name: "gd01", align: "right" },
|
||||
{ header: "지표2", name: "gd02", align: "right" },
|
||||
{ header: "지표3", name: "gd03", align: "right" },
|
||||
{ header: "지표4", name: "gd04", align: "right" },
|
||||
{ header: "지표5", name: "gd05", align: "right" },
|
||||
{ header: "지표6", name: "gd06", align: "right" },
|
||||
{ header: "지표7", name: "gd07", align: "right" },
|
||||
{ header: "지표8", name: "gd08", align: "right" },
|
||||
{ header: "지표9", name: "gd09", align: "right" },
|
||||
{ header: "지표10", name: "gd10", align: "right" },
|
||||
],
|
||||
option: {
|
||||
header: {
|
||||
height: 65,
|
||||
complexColumns: [
|
||||
{
|
||||
header: "주요지표",
|
||||
name: "complexColumn01",
|
||||
childNames: [
|
||||
"gd01",
|
||||
"gd02",
|
||||
"gd03",
|
||||
"gd04",
|
||||
"gd05",
|
||||
"gd06",
|
||||
"gd07",
|
||||
"gd08",
|
||||
"gd09",
|
||||
"gd10",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
data: [],
|
||||
column: [],
|
||||
option: {},
|
||||
},
|
||||
};
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -253,8 +253,9 @@ export class NewCustomRenderer {
|
||||
} else {
|
||||
el.type = 'text';
|
||||
|
||||
$(el).addClass('tui-grid-cell-content');
|
||||
$(el).addClass('tui-grid-cell-content w100');
|
||||
$(el).css('text-align', 'center');
|
||||
$(el).css('border', '0');
|
||||
}
|
||||
this.render(props);
|
||||
if(!this.disabled){
|
||||
@ -314,6 +315,8 @@ export class NewCustomEditor {
|
||||
this.rowKey = rowKey;
|
||||
this.columnInfo = columnInfo;
|
||||
this.grid = grid;
|
||||
const divEl = document.createElement('div');
|
||||
$(divEl).css('text-align', 'center');
|
||||
const el = document.createElement('input');
|
||||
if (
|
||||
props.grid.store.data.rawData[props.rowKey].addInfoDataKind == 'FG'
|
||||
@ -363,16 +366,20 @@ export class NewCustomEditor {
|
||||
}
|
||||
$(el).addClass('tui-grid-content-text');
|
||||
}
|
||||
|
||||
divEl.append(el);
|
||||
|
||||
// console.log('props: %o', props);
|
||||
// console.log('el: %o', el);
|
||||
this.el = el;
|
||||
this.divEl = divEl;
|
||||
|
||||
this.render(props);
|
||||
|
||||
}
|
||||
|
||||
getElement() {
|
||||
return this.el;
|
||||
return this.divEl;
|
||||
}
|
||||
|
||||
getValue() {
|
||||
@ -389,9 +396,9 @@ export class NewCustomEditor {
|
||||
}
|
||||
|
||||
mounted() {
|
||||
if (this.el.type == 'checkbox') {
|
||||
$(this.el.parentElement).css('text-align', 'center');
|
||||
}
|
||||
// if (this.el.type == 'checkbox') {
|
||||
// $(this.el.parentElement).css('text-align', 'center');
|
||||
// }
|
||||
this.el.select();
|
||||
}
|
||||
}
|
@ -10,6 +10,7 @@ import icoBulletPoint from '~/components/icons/icoBulletPoint';
|
||||
import icoChevronDown from '~/components/icons/icoChevronDown';
|
||||
import icoSearch from '~/components/icons/icoSearch';
|
||||
import icoSend from '~/components/icons/icoSend';
|
||||
import icoExpandAlt from '~/components/icons/icoExpandAlt';
|
||||
import '@mdi/font/css/materialdesignicons.css'; // Ensure you are using css-loader
|
||||
import 'material-design-icons-iconfont/dist/material-design-icons.css';
|
||||
import Vue from 'vue';
|
||||
@ -73,6 +74,9 @@ export default new Vuetify({
|
||||
icoSend: {
|
||||
component: icoSend,
|
||||
},
|
||||
icoExpandAlt: {
|
||||
component: icoExpandAlt,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
@ -669,7 +669,8 @@ const INIT_URL_STATE = {
|
||||
// prgmId : PRG0052 과거 검침 데이터 조회
|
||||
selectTagRawDataByQuarter:
|
||||
'ems/base/PastRsltDataReadCtr/selectTagRawDataByQuarter',
|
||||
|
||||
selectTagRawDataByQuarterPageTotal:
|
||||
'ems/base/PastRsltDataReadCtr/selectTagRawDataByQuarterPageTotal',
|
||||
// prgmId : PRG4107 개인화 대시보드
|
||||
selectIndvWidgetList: 'ems/base/DashboardHfemsCtr/selectIndvWidgetList',
|
||||
selectEnergyUseReadHourAddup:
|
||||
|
Reference in New Issue
Block a user